From 40cca52032a8b72f374075fdcccc7f7c5fd2162f Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Tue, 18 Nov 2014 23:36:29 +0100 Subject: [PATCH 01/30] Initial Qt port. Doesn't compile. Has a few classes ported. --- qt/docs/N4021.pdf | Bin 0 -> 575098 bytes qt/drawing.pro | 2 + qt/include/drawing.h | 1107 ++++++++++++++++++++++ qt/src/device.cpp | 37 + qt/src/drawing.pro | 29 + qt/src/drawing_exception.cpp | 22 + qt/src/font_face.cpp | 29 + qt/src/font_options.cpp | 49 + qt/src/font_options_builder.cpp | 59 ++ qt/src/image_surface.cpp | 92 ++ qt/src/linear_pattern_builder.cpp | 119 +++ qt/src/matrix.cpp | 111 +++ qt/src/path.cpp | 46 + qt/src/path_builder.cpp | 701 ++++++++++++++ qt/src/pattern.cpp | 39 + qt/src/point.cpp | 100 ++ qt/src/radial_pattern_builder.cpp | 133 +++ qt/src/raster_source_pattern_builder.cpp | 161 ++++ qt/src/rgba_color.cpp | 158 +++ qt/src/scaled_font.cpp | 77 ++ qt/src/solid_color_pattern_builder.cpp | 119 +++ qt/src/surface.cpp | 554 +++++++++++ qt/src/surface_pattern_builder.cpp | 79 ++ qt/src/toy_font_face.cpp | 35 + qt/src/xcairoenumhelpers.h | 740 +++++++++++++++ qt/src/xdrawing.h | 28 + qt/src/xdrawinghelpers.h | 25 + 27 files changed, 4651 insertions(+) create mode 100755 qt/docs/N4021.pdf create mode 100755 qt/drawing.pro create mode 100755 qt/include/drawing.h create mode 100755 qt/src/device.cpp create mode 100755 qt/src/drawing.pro create mode 100755 qt/src/drawing_exception.cpp create mode 100755 qt/src/font_face.cpp create mode 100755 qt/src/font_options.cpp create mode 100755 qt/src/font_options_builder.cpp create mode 100755 qt/src/image_surface.cpp create mode 100755 qt/src/linear_pattern_builder.cpp create mode 100755 qt/src/matrix.cpp create mode 100755 qt/src/path.cpp create mode 100755 qt/src/path_builder.cpp create mode 100755 qt/src/pattern.cpp create mode 100755 qt/src/point.cpp create mode 100755 qt/src/radial_pattern_builder.cpp create mode 100755 qt/src/raster_source_pattern_builder.cpp create mode 100755 qt/src/rgba_color.cpp create mode 100755 qt/src/scaled_font.cpp create mode 100755 qt/src/solid_color_pattern_builder.cpp create mode 100755 qt/src/surface.cpp create mode 100755 qt/src/surface_pattern_builder.cpp create mode 100755 qt/src/toy_font_face.cpp create mode 100755 qt/src/xcairoenumhelpers.h create mode 100755 qt/src/xdrawing.h create mode 100755 qt/src/xdrawinghelpers.h diff --git a/qt/docs/N4021.pdf b/qt/docs/N4021.pdf new file mode 100755 index 0000000000000000000000000000000000000000..c7975581ec3507f773e88bf399e820b3303847d0 GIT binary patch literal 575098 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

*Vi87RG5<j6g!ECU_5 zm&Y~iIQ8`@r|}j)BTx-Zz35#InjKKW3JpZ{b77s!HkT!#Kk=Pte?1Pp->hhpxQSH<*osUNe+pKdsvc@PF}+ikFMYG~BPk_S$Y{C&89i8H)gtY3RFknx0fr5Iav)+>>a zc=kiTIoJ;_#c%cp06I%@o!}}J9lWjqp&UpuTVj9mPi>~b$ur*6t^-wfAHJf=Ux_el za|e6iQz>FwHxHz9{EyI4PQ$TfpY_}*ix||35}uiDPZj`yb(wEfWGa1{?M`jKN(6=BSkhPR zb78|-UrO>Er>A-@XN8WIRFGmFtGZ!#i476PoWzH1S#r077D zbY@}9@+=5l_trEioEM~+B_KQONk-DTW6~aR1o|?ZLt(}H>3S_q%1DpiPVSEZfCgsV zY0Dzvsvs41kS=g*(b>S|oVFiOHh-*iqTDJJin~%Vjy8C5M}))Fs^TIp>CaCf6GgD4 z>4;699LV`A6Ic95Q4-%(rcl=c1sDp#+G#nEEhFhGm|XrQ+e|5+x|hR10mr>LqzZ0m zidjKOsUeGAN|iBol^%}LLu!~*N+M-J{N}6hRsbAZh-uwqSqxN7E}*$gpeS+`fOYtUEeh?a$76AseeAZHb4^IER-Q`c!f+NLIx1rJ zI5B}gG@tIh8}u<1YAd}O6gy8Xkhxc&D{ATj-wAx^L%MxBooAG~Hs~73tlas&D@UH^ zlD{6sT+E~#ik!a3h)wbF&}D;j=hjG$1tq({0hN$lxmpXD0RqRy<8ac{kuwhQK@k;4 zK2Cig+bLA7q)snqV?pnREFeM@iG-XVl{=Y`<^w*mna`2ih?^1F`e?cM1IEZRA!23X z)bpU)F@HDWxrAk0bUsH=$?8~3)f*Ue79+k+z_7{+(a$rO*vNp@M5op2jAqWNBLaKU zpZ-e}t_1O`PC(GK7Sd&~o8qt4Aajn{xHH)I*xW24vkCQ_cB>qkg0$O!^aD4{)mC#M zV>J#5JXcK+>oswohoB3ky{iDtHRzt6p!fSI#*#8@wLB-szH{CoICPUl0tDVCWO_H0 z7J_hfCo;YR!QBo1)=oy3DjH-OjP~#nRU8t>-}26Am5ERu6YfdWVl1FWKn6C!S&9>x z>WFgBgUUtX;MvAaPkhP2f}w!DA9v#si@(6-V7hDh3NVAvM2n~J#WN;{5U?Q<10(;O zgg%G%%?+doP1+_jrn3ledf#22f!4-S^iSF70`KBQrTQoZPf&&#U#CNFVU`@&ZSGIZ z!1$G2@TxQTNmdhgs4b1;cKd-tqkt?pplBJ7BvrIJu?LXTfm#Iyav!9- zM;}1DJ`Ue$`uuYV$bCwZ_T13;#b0Kh!_azV+>SxQ#R+p7p1s(7?aBgWLT@EA#urLQ zhkO)F>nT{5+PW4<1gi-=s(?q5A zJ!CAR@mE55)flIU5MH6HAPHs&xPKA00+$rJ`6^KwWWwBKlR3L`XA5gbv&&i_g3IC- zVtZI}8$_zt^>ur?BU0I^ZX}Lw(cA7!Xwr3mPbDBhQQqod_~zeCtwkTn-+kn%B^jR#=h#1UR!h>nx6l@q%h8Yt2m4r%r zdcE`;9|4gDs&^*%u@x439-~g&`1jL(kd90?7Gpvuza+PR)!vl!IbMZ$%2OUH-M-)N zmDiHOTQ$pARu9y|odXiV;|pw=f>Tyfd~{f0g%c@E>`&OIOPq1(l$PsfS%1&AgO$fC zO=(l#yeerhVkK5VMF)r2+wj5D8srNWHdoVH>bo+;);vN1;WXOjt3HVA@>iJDM=}On z8-lL!Pk+SkA1JiJU%t&He>BfMmQ_F`=QW9QA(|aP&SMU|jeU60 z;1Mm0(uSc8KvQ2i5#V)Eqz9RJJu5%v6K&>W3=Obm0muJvzH-&JLc0}=&_C0kpWrB< z{Zp~ID34Of+>RT=N|`zcuBbjAC+FnV#^eH9H7;ETJifkJ+`H1>gf<-tzb=Y*KGhfg zY%O8)hB5J5BJH6GU6X0CHsadFsp>YM@u_xPew>a#*V;uyQHK<9SE_rOZXHJ=p!{Mf zTP#%ut^{b@{2h|2{S2Y`wX~!F_ssh8Kue_1GGF9qrol8{R|n{rLcZ;9FfQ5PdfpL~ zNX2>_l`Z7XeXN?-98k>I9?P@NmlQ_kljGinkD91^$%v_D@#8?ss`c$EV_Dhq>yhL9 z5lssMs)=iFl=s>xQ!)Dh^Y1}?E7`$*P0nFXTXvRhHeNl=&F9E&iwj&sa7V2cN)+)! zQ(WFQG99cCtP$?X`eR181?)S?HSN`NI?}Ub%iRb|Sq|bcfa8LX!?f|+%n8^*UM->2+H~2*fN8^+Sq8JOK zY^kWiaQbwW71-t6j&L7B^+=-+3xh=PP0U;m^ZF7w$9|~Ef#MVQYVoRtDL;S|R@l^J z*ufhD-I#!8ETRKSt_LF7HA2l+Mv>R8Yq;CK^GDxTkrV7*P@efhc6O>Ndm%p0epp#T zj4XA9^W__qRhMPplnp@LuehXj0mz(TD&hmI{#WBI=_V1XA^3WJ_nf+Zg;xL~R`Yi7nJzD_6J5B?KFvl-uy3==sd;R6pwN^(VNgn>%4wFd{JvV+7 zUTB+zT0NIHO7qvfi%Ot$Ps*C*$6Qd6`P@MiSbR9-+>4>G^ErMBhx}yht5j8|RmT7= zaoPhu7VviHl2<}>M^}GqK zncq43VI#0a+62LgB@`P7Bjx=)M!5cKkWeay}zVN;wT^fuz4E$PHd&5>@ zQWAeJ=81PPFG7ykPBpovDB5nG;8AEB8LrN@$EIESCm6&IsY6Mw4bp~`ESPQpr!q)p z^7U$Mh?TmyOChB(urM4Kg-fbF7#K7n)BqL!)Ft9@w0eZzq`P@=n5+k$1Ka{Nbwx&h zID!pMV9Qg)$eUqp5#zHnu}o0B5!YgT{Xh@Mg<&Fa6`Sts8a9@aMXh~ExNC37%0VIg z8J`UQMGPCeROUA6Q*D;6uHFXo>rn7cBGugB@1HRlK(6uN*}@$H#%Q|=dh#Z}5W;)v zj+LGps^3!`u%!j`sGIe_O*S-Tlz4u5pv`6uxi793Q38t+Qbr^;>oPQsAP2cvAZE2m zII$ES<%bIv`tsvLg<~{^96kIdVz|-M-#K;~gtwfjYAZkYDvRwpr{tn5$}8n6@{I_7 zd6OgLg)+`RQxd6yDjQyB85P2Y(8p+Ns&WjOk7-fN)R${jYF2wxoxtz5h);NnI9|1* z{mH5WKivkb9fdzP6QF$i<&gPnQIAG_R0I1bNuW;SxKuIg#@6uxkfo*cK2yfPZ+ee9 z4KV>Xv!j)GN#bi5qQMrGajd{jR>EATN%N*$YLy(b=y-gcDCduWCA(pk*#Y>-2noT* zqNdO;tIu^b^$2Jc3-6JE0?ag-cXBejJ<}8_SIIb|yQqt>qCz#;r&#Y9L+#V)5`%<4_=6k2sASlA)gFGiHUSS5$nx!{+8mwHtQiT{YwPlfOB!8y93CHhLhDHEY^y zsDwB)z9cV@OSg4%_*mpnvl`j+QIaCQb{BS`So}{{O<1Js2%YnG@>e>VnqJ*CBB&HF zp&RRSzj03U)01d-R4SIRr&`4!pjz-ZtZa_y7Y9mw>NzkMzGJgDD- zChf3`gm#5NJ!Zy>=G`FZAsnd*`|>H(-IM;>z3FdD zE_;ZaMj0F6;nDQrAD1gRKQ3}U0Qu{&+y10U(L#0BIAj4cN;6bDo-^KIf?)JwZxKMF zNa1x3+b}&{9^rWpLUG5D!-TY-MA=NB1RVFP_Q(3kIBIVQo4iw=St;1sUy7=>%;9-ET_V_TWH<}jX*Lcc1!P(`P~4OT zV^=>qX8navh%7{Ymx48~f+szgQvuIAyw`wDP==WY<@n?rH`y2kRxmmywGh*#g{De^TLoaN)I#Ci{3SCV8uyFXw1= zwLUO@(+tS_)sD7HCTB+5gV-hDPd}g_t!A35T9%a8Q%>UJP}Q|xe^`-AhAXjPKnjNt z`C%8&C@NF$SSQU9A7)B$!VN-ClUZSV;h6V8M#f&$>RY%tiI6fyVd`qKJ5WCgCJWSH z&^t8j?0j#2GmEqE*#IePrK?J`&P4mi!_Zm+!Q5^QofnF)$_9}Rq8;#Ci28ugrOo?o z$N23-efB}&Vb~sT#xq4;%enHK)PmmD+Sc1O9HL`p6=iMp2OHw*sP4$>?qlfU@HEM? ziW2-qJO@0>{=au=SpK<7^RK7nS-F|n|Lwuue+k610d@`t94KEseP57%O@YlMQA+@1 zur<@pZi2bNg4WL_elTaUQEU2deR$jFGbbyVnKFxAGkww;ib2@n6zlAi!*OntKegCwUj?5YcfOsQ5K;Gw z%qbX57-1k-eF11|)kFH|pEXWdHGRn1t@LY?EIMp%njevhJS$cHgBoiW;J6J{Gurw+ zKY#Scd26^|Iiu699c%T{<@3X@&!t(TB*gz2Hkj-)sB17Uh3g4F_lEsrh7Z7$wOmQp zMyP2%)r(%3LygpjyOil#yA<*w{cR(_=vK9#C_6w18PusYR}ddAMeDxjEoV#3J^fh zsypfRh(zLHy@675z(~@Y^g1_W&dBq(e_{Nr|BGe_Wf$J-qRZ#Kk<@d!3pmZvg}M&i zBB)!Z)10sJMIlm1(_apL@?0}z47GVfTS48K3yAcBXxybq>i;1xSokx+%`O_01U1ch z+Oe@@tw5lMq5WoyBd0H&{0YsZ`E;{nE1IP9>ZyT3BIaEmYrWzyoFJfb`LkFUs64eS zF7FnT&AEYE_|#k267gVZOi6A7XASww_=abi2qT1b(2o$vSsEYtI^!TNY&`pXOtk^r zruJ6pH-p`p61<81vktF1LkyoiyE(0rPI|&`^yW$cnm0*vhu%m1A-OjQT^j4j-OCHONV&=3{- zRSpOiZNjBO01*l|9Moq!h?1xO?3ixzDg$+sZI=}BGmb z_YPtXL0dqt5!@;D?ag3R59KZD0AhHqR4?pZ7qdOp zkt54z423sTz3e^F&Ew{+5qdVEborOhNN%{gkct35SdTqJZb}i=oe5jokYKHpgmuiQ zFlJnC^R7i8fxSp3l!{`=il6?SM}HB$6JNeMG@T^|T{P7lh!J9l4xMu3o(IG(pOZIc zNUEX2yk*wU$%h|e*DD#Qb66pgr&OFmP5Au4^9Mh8$$$wZ@G? zE3-f@TNdpGjEP6;-l$u-AJ+5|8{f35=jYII9XKXs5046Lz#Wo{p3wdt!Uaot^;_bV zI)DqZ*z;}}^j)VQG?m|R(pN&zvBR}kM{nbbSYPmnK;`-{D-taAI&G@1+hOnR&#~$7 zRl|w<%=e>n*J{j@gRNJljGqEKhNzuKve|2D>s`n5=3StTWNn+=r1jyJL62H61F!Z$ ziqKYBU9-bk-KH=LYq{1kY3vp81#bfZ>Z5(Uw2;+?IVeO})8poo6Osw;!qvTMB}E^e ztdf)tN)ka0&PMknL4zww1MRIdtkc^dj6-wSZjvFEg@{j)vZiSpWk46QDvd(vpP`Pe zjM+2Z;Xyd0GZ!|s7{Lg3ns5q{5^tQ&8o)?cdFW=M;a+)osU_OY=(~V2g#B_D$3%7= z=4}wtZ?)B>Yo%Io*#kgg;`59Qq^AAF$m|4}@P6XZ&UEacSJ_0EUPfdQ_XjFW2ObTX zH2`=RNfpO(Kyl0V(}FfZQEe`!=ORae#eAT=25abR zUaG6UeX+C0z?J(g6*wovlUvfN0!@Sgzjs@#;ye}$z!k>|AWag*XNe(zAzGhQ0?lA$ zu$Hr71rs~|IR2Ia2a4VPRXzna0+Ag(6m3ekUTsMNO({$KU~1+DzFw+lIBO8ws5aHM zmCyL<7U@Muif8dj3&)^X_RjeLn3J=P`poY)&5Wvtb+^4c2qdPJ+;sWj4Tn$aO=bax zBAML6^^^7MR}PZ9OR3Qv8}T!rZIugX-F%v=2wGdxIP#rkNipkBRJm_bQZgK+-K5u| zVM(Qm6w4H$xv2%pG~8TccyE`jfxA2as27MLP<}Opb2N^c0ldrjAchCj*hCas_bw@B zP$N^(}cm>Xne?yP)Ba#nfQFl)R7OpUl{b&hhul9LJ{FJH%<%5|k^xHxiH z=k8~eHCYM*HqqCkd^9SqN~fym$IwjHLf6Fmu8b87p0856@%pAx7oe$l+b z*=;Ur5g$>gdKuXc8t*h_Zu4aJ{TfK%VuAx0K4suntDTmhTy#h4D19FAj*>!F({&n+ z)FHR8nFVc;z2(Xs_fusyw{fFU{!Ot&zzCIvwh12%=8tte^_R5goxIxLma;vh|W) zkr~%gk-(6(&=6|HI zXJU6;BaDchkpu>=boXNo?F1@noHkIn5Y&-dSki?I=~l6G9)Ve_$h+ExmWwZE%Y=ve z-Wh`pWgf&m<_P^Tq7}AsyoQ*H#3K1@I{A1nBmqX(h7#7+Ye8?P6zbp~X+fL55s+IO zpAP0x_GQpJ^g8h??ZgC)5{vj6tuK;%2vuU9MQ5i@^zWmX9}rH+Vp+%#S*Okh5Enz4 zOsQmP=Z|x9{3HM*!-vBQkzs5Ex7B9dI;lS3`3j^zZ52Ysoa>rq0%+WqX%fMBP;(N+~2{e2SF9f=bGZbq?2Fbj;i>K6ry93l0meX5RxLGQ3VjtNwV`aRoSR97U zqsbi~T@8)pn;k5jKCM*z`~YPz+i0EZOaf=CEZwulYfY8bboG69k%ckX(dkjim^v0e z5mQ(CHY2Gtwe@kloh)ZHs0Bs6yRL4v#`<{+0B0t9Cj-~q-eSo57i#=vyI1e3`F$S1(3}*bkQD7 z-TANsvXm`nPt8H7o&77X)O#^!jX?%dJ+Vb%F=s45GFldy$HvXc8>K{m`c-eL(WI5^3mCr^TRV(s+J1wI z(Ku8DssF-E!6v90_>oMUfNY%2P7dEY$pb3E4M7S+ep{nE|4YlTVp$$obnm@fEk%rJ z_dyZG0eI-C3TG6)h7+k1&ITEt;vtb5j+J9o9*#DOKdv>UUZd<-hRQ|oE@cuG zBP>WweESjG4}CVE?~%Lq?hdw_Y~Y}&p6F>{EoVf}^42N3swJ0sg-3|U8j5~62r`9s z-k4fGuae2F@FpI^^%133uc6E6FekXNk@yJb5a*IDy2JCZhv;o@MLFanCK0t-JQY60 zP<9Hs_6msH5SP!k@;rq)^XTkx5fQAf0ZU%HbsFLEPsESx9Bm{VE?BI*qTRzPrq3NpY9gN2o-9ZtoG2^{E^3xFOBk25G0@T4hv%2DA^MR3OML zQ)%E zL_Jr4nO>$cVNJ0y#*<^7<9bzBIrQ-0=YyUB;4ACzsUcZ3*u} z0Dg~2?r{H(k2*w-(yp?KBF0la2DB2djNN~K9{IsCc=oJx~!Zvoabk$wyxUw6d2s%sQr?pLlZ+rugoC&iK$&mHbf zm9HUdZ@uNK_wjPjVwG$1{?`F{zV67$Pif6QP%Dq_fapb<_V`gF58SoI#y@dohh?HO zXC<2js>_-F2gUB+>heu4lrR0fzk!5yc`GtS`ZqA3^6r2w{02?Bg-*n2T4xh$lzs#POfE>D~T+2e+>T{Y<}{$L;;P%s8JN zc0O*IO@J+)H(MP*jtBpO{Cdrq75(*64%vH+=&hq5K~E04*aJwAafj6ToY&Bc{Jjx9mC`)Z#WwI|UL0#|>g9X5ZkeGd|} zniFY#+x$MG>}dpjx_V5e1nE{^ym^S&d(+XKAJ$Ge{-i{M99uB}l+;1$fYl$87*Ksg! zdLG!xhNXqq3n^k_y~s1M+|JvFIvq#K9`my#Gwls(w*?-JKue4;F9BF5DyOJnLPlTR z09fF6mY20P^;@|*FH}Qf5)tz(K;Tidb&FP2As?98Ug7QwSS9j+$lU&nuPhgT_o7l; zNJXE93XA)If+Au#6LB}L-H!@Wa4hULgGNB0Tmt0T&yc!s>?pZCR4Hx@8@91e0s?66 zU8C!!C#J`OF^z5!Si#g8>bA2${-ebcMmSdd>Jn=!cFG4ST_FAkT?}Lj{Rum(WL%_9 zPNE4aYwBFHoqGac_o}F*r$8mwkZGi}bo$Ub0_{?)VOhtn{wc-Wll4p3L3ti4B&75N z0r$4LpCGb+C8t6DA5JOQC|%Hh%c4*4E+MLfH^6+~Pt018k)Mr?Y>qczki`q@lL3jk zKkW<2fDqqvY;C4|#2eTxw%gr#g!ZlCs&b<5t#W48!hGC^3D~{uX4*IKq*QqCWhd4y zF|zMi?T0YK2q29RKX;8v@b@Bq$8D<5(a|71IUmfCIaNmDV3&r_L?8 z1)l#B)7KIuM5t+?gy$!SF__?}Zuz0>2Cw7(gdyi!HXM1qYv) zpKqQUD*aGtZaFUqdKzo$Y-XP=6{G7CgsuRN-q?@%0 zSh3^pJR2fB1Qiy4N*_4OyP-c<-J zy?M+&9l#ymz9@+Gc0PX+(YJRLw`n4gG1zB}ghxI}&8A_M!j%*y-@2Vad=3ba1z(kc zbyvA@KSVwTPRAv~9ZwiV?z>SnvR{9dRSgCQTi>tHk8hFI}S3 zGBn(Hr$Jq8?F!(D;Dz;iS*J-#+72#5zsT8uVm4yxSh^P12kxYiRVR!>i}hKuIofVWJsK#3H0c-C)doXc=6GU3wxj1 zS!Hh5o>`bZtpJlbqlJ@bTxy7SLd)g0TzIssHfIXTY3K#SXlPw*!JKVS_u=^Lc*L0O z8H8;%^FX0IZiMJUXX@ZeP(p7zn!xF*2Ff7Xi`UugN{6BK{2HVFazbFFhZE=-+JtBE zIKw3ewh2CU973H$6OpcTN%Kj^iP88T!#MAl2lMv%U|owvU!}h zAhHhH{6hU9T}_i!C5GxuWw@NNO<4&7>`U+s9YQKQeKeP@5dNG&s_zP&-qpfq0PDP>B)HN8Nj^VfxPNDM2fk z^jv?QVLzsd#i<|Z$D&>D77L@}@yeguC3Qc)qRYU0iK)5SU2kHP^J9$p`ma%S>D5dH zjvJq{8k{Rc^kxBd(gv(|pfd6mf_zg7~wPy3BGuM@a-ITr%<73ff*4j-U{v+d^yTv6zN z)Nz*(H=8fS7S-QR3XN)C#^wW3J%|)eLYE2Iy6t`7wz|27?<=YZuGraM#CD`P|3Ja= ziy$C!6VSZ!3yy?-F9jQ_SAmBK2-Klcuz?m)Bx`9K@5|Lge*ynkLGPyp?fw2m4&2EI zGm6UNx0_K*GRhV*FE1cUe=Y~A2-h3WIEUoU7DWe0ARos%(OF{R|= zw}}y0elX+W*F3mVJnWBY?D;`nH;F5jKmcj`&bRA=#=yke4y?CqgMuJ~)tcNS@-KqH zS6v1eaV#l6fsimi8#k^Ew}3%@d6r!%bFgY{)!*tZUHR6RyY7a31(xMW;iTOp^kFjqt+IFR3KhVsbc;_^e|} zCrY%GW$yj0>;G;ZV!@ZWlS>NNDSs~Zqni{4nD8#D^!o;28bL1M(Avd0wgIt*HzUwa zvS^;Q?^KDB1GZ+efD*ati`!`p83I(Gy_-}UkP7S3BTB}a5`8U_LAr6ZtIp45a-yf3 zL_2>oS3#+xswZ7IRNO5)wP(zr|5%lB_Q*40FRv!_X+?kRjQPWOLY#E_u^YPD?Q<&E=1~fnsVnNM7G5UabGHWR zb6z8v`6YB-JW?jA3{R6nTwZKhSpyW{w9>X2UPER2B+|jkv9b;CSk^(oXDG$h`uUJ7V<-@zQyBuYMtDX^3B~zI-6w#y+Tn>UHL_OSJVm>WGt!jjb*WfxNi!jRB+Lfj{7$o4UM_Rvnb~3JT@?FotP4pn0G34zMhMM|BfoHDnmW?U5 z0#fuQgQ^rtf~r<*h?vJ)9_ zSw}N&Nd+Ay6+K0lDED3?*aNM2Zf4BdOA(UbaQy?n{j5gy>>j9Do+=?>lcrZEgYlaZ?x4#UUkGO+l32*V%@ zngtmI2i!{ZYC?Z1^c^$ODUM=5_@ zCB5Gq@#!QdVHdxA3q)cb$-6yM0%22FLV)#3ehKl+p%`u*WyT65>bWG7V-owH%Xwv3 zLMq|8_*R3c{3?R%u!?WhQUlG3+cr}rQ%=mtB1w-CB9eJW26Da=6_oU|x%~0FeN}2yFr%;yH;Y4na?m|QVjU&Pv}%7CvRx6Iw~k>&IPM_LE_dcD-e-w`E6byFDG>*v{l(ig;n%aX%pre6#i-W1+DW}-(t zDSohpSptXCH5*!xhNcLgflDL}4h(h=X9IUAaeiAnnG4IX_?_cuS|@L@`1Dut#T_*J zMjD=6b0*zTd_>}33;2|)SNa6^=YZFfs6@~A9Ia$gJIS}yK@*VkaR~mKv&;rm@pc_c z3MzoR_}@XFxX*P)EWIgQO0^l=YLrJI%>pafh$vuE23jv#fM|UrXPMp%846>>x5JpN zr)Rn7+T@iwWiFBs84BPjLh*yJ+Y5>3Ulip3JQMeSD9Ab3nf`mD{HM-$K`w#v^-WSU z5|rVJ-gAE4ICibu=CO2=2U(&=utW$YQ^BZ3qrM%M`TCrmx=zwvplyf3TR*&>y6h5Q zrG2_)_5S;{&G;<%*|+tWvHj^ddrh$O%}`5Vx~?Dn{AQ@N-^Mo%x#`YYB;xYk-g)}G zkC-XG?1X=V(mZcEl)Jtdy+2;BG6{`(i~6^*6Z@cjg2xD9Te7aBOE$TxJors;9Urb& zb^9#(^j6VtvD<6>AqAPgy7k4|jwN5|puSbUkB820a7P?Bzx3bV*e?+bJwW_-LcP+9 zC~muj5H6IMpX|{K!`V-6j#ReJcWT<-bEs+^t8ZixM8-W41^0-+#tCZgxcsDOrL9ra zk$n>Gf%njzV6ImQoE-_nT%cai>PgDEN0VH*cnpMWH3ocQJB1YP{94)t(WCIC(UTn$ zy?&J`x`ll64-Q-O)tK)RBLfGAApf4i`%o5H`Y7dAdImRn2&AhK3brk0s23nutDW2% z@T8^ya*8#_Xoz5G#9uF@&T?ONm3__PJxh9jL;JpV?#s(X>c}lwQtPlP0et8qlJr%s z(9;u6^PiM8Syf4Puql)5X+Bk=p9?CVbdsF%V~Vf5DN_+kl}b)yd7aC?Ug@Ace;Fc} ztVX&bSkh`(eA|Gk>2(9bqHWI@aWv>PxAZQxz56_DK@k;8k7%@)ZYgxL&V4{T16G?05UnJB?jFHBm=0bUEaWi{{iA@{K<0!oCP1 zu&SqBJ~|@_JprT(jO&!U1jx_#pkGfnF}&v$w5mvvf%Z9^ zo+(}DLQ_W*!OxY3%B^|%{MB5hd3Z`=#qq1ji9v6UbmFu3wps| z(xg%)`Zb5LR?uq-wFx?+E0z`bbyJ+xMUFF@gU!j{1AE>1fs&C81gzoPNx}xd+Kq;; z*VyT!hBk2QVk^Ir+~F`4WwnI%uapRj*nHyRpY)V{0QaV*IVtMoSX&1Rs(rv@XC0gL zh2qf)WEhYI;ojf&CyJ^j1wiWS<_34l-dBetPD5kEi&a8ir*%n+H#kCBe`6SjV4k#!|BYh2u)QXblprC zPg!3I8t+bWcmXjmuTkNY**8*()SCq=2%aS;T@~xtzVT?PO1i8(R*UGS?iI~MhQy3bgJT!F7I-`=(;E?$=WMDaL z;|nw-NpuFO&x(mb!Req;sJVATOtJ2t3a7b%+laF!xVE&AFGmfov2lsj1w<+`qz;k! z;P(xs3ZHfAf9S2VPi8Z*J+p70sTob>69}_YgI_dGb#UX z)sB@BNu9_=5-%l@B-fZx|72EY2{zhRS~*{Al-IHoe>og!FJ4Vb8sZ;TlKM>|i0ZCVzPFWz}NFcAM zkzy`tFWuEp2w#Nk&lnEndDbw2*T|NY%cU0BhbaT@*Jq5mKesS_!cF<^!bwD)IdoEm z8F@0peNwr0&GFSu!vaC@=2+DHG&-$YCBv-N^|!PEYSx%dQw~an8OdR?i3fInYcdU% z$Xrfh<#Sx`Gc~Vv(q{o|s!6g`H9?WN|9o|T%3;Ib?+F$QsyaLGmLTZ%;Y4Y$suOo3 z@yx%@layHHR{>f&mTAeJaRyz=&!E-oiVusNy-pNNsruEWqTb=UxX;MB8^EH0tpnyH z&VzuPzK6*Fwmkuo-b#u%3i2D&T)j_q8)SFZDq=!42RUrflATm5JPiYnfVQ5*E2+R> z9zGnc(oOY>*bf9>z|*uE2CcX?ZcqRjFHbk%Z!glJ;UOsbc~}5UP(QKcp20F2kVD@B z<<@*lh8#S_2uL9ht%imiZ#+%aO!Gne9P`*gJvx!NEs=*m9RcDmJ0+_S2YVMQ$h*-g znBrg~iu@1tr^wQqAos(>?qF##1*-_>$MnaWQZMk#f>+}s8hDW~Qnw7`*KDc~dC*mv^q)RBTUz`;ccQ z9^Zsm57n@V`ajc?$`10^%-^(b%WvJ=ZY*YclD?Qv4s#~jVq%cM52}Q!qGzeo7Qt-` zu`8|8N_zaHxy5;nPw*z7dg+@2pMeAij{CX$NJ}Xz4;b=i{H%vX0h7~(Bv4o5=gTKn z@{`$>IxZptTh6Y;1koYfTE-?k84eW0 z9iISx^kRqOmTX)N30oeyT}x$Mu}rI-poL)XTfqb^G^#8jlRV7duNc{7tA3(PzMr4l zL9`00mRMx_fn(accO7pj8iVr8;VDc-G zZghzoM@BcSo9`WwLHrGk4?7FulFjbq>!Whr&1f7hj(Jy>g|GJsqp?2~MZB}IZDffU z*PiPr*O7jjPH0Yh>{}wGOqz4tpCX_TXdsP1{KY#m_klh#UYK7N6}5U{K*Abp2O}Js ze~bg`eiJP}4fp-(?JrRvn$qKxi**6QN4+G5dyF9$)F{j38PF9ug&1wj;{yRx49A#< z=%YA)Rkf**uN&rA+W-nC^lof^YQi(T<5)4SztU-GmCxfcb2gE6s}@F1ym*P!(bM3_ zEb~@1X|A>pG@-aNy`trxvezdVDe7dN$KBkBm|dA!WX{z)6Z^8=TpuABA&#kk5K=1q z*{0e;z=c(P&QtjGf-kVMfDH(^i%9J;vYe|%ek*1CY#j0n5w<~@VOF|}EzxAJ*|cz7 zS9@|xu=+?Y25PQJ7gz-seaC~uNadT3 zlcXPhR%GbEfNgH6k$%6OYXz|mbrST6wwXk!d;O9)E+?@T(gHCSRw`$Kq_K8#05orC zj38!9JszDMDKKec0^CnJx?JfJ+AVaPTC35A+cKEg_q?aX)zhRHqif$#m!a(0*ld8o zMF=Tc@`DB(_4ANiwZAKrM3b2vQTglF@pMh$e5&Lisb#C+fD7{IU23tshteDqe(WoN zkx*B7dBD9!8!POI=>h1#J7Y|8vkpW^j7vMZ^laLZ5B<$uU7z-XyMir02J*G11}4f) zNrqICL9I%4qoAb5&1Fn6=ALv&Df0&B;$`>*q!t{0o&XWYovDMf^oP_=`>wCD^s2Vm zqMnN)q8F|IEo4dxk;0F`QxHYEd!xeybkQH3#Nv3g+zy`SjKZByO3UzVz`qwxBV%#Y zlLbhs5f{KKEK1;h98g>6>uH-$;Hy?YEM0REOSCwZMaQA)Ic5bQiU;WUL<9!YgmZnC zua=4;}f3kOZc>J`d1E}p6Y+nN-E zXaVQd3m*-h>{M}aWL3BPj>`8*ZXUr}_sWELFSrxPP8OBv^$JDyPn z1Yr%paDmG8jwoF41Ja1Lm{u|j7V|0}ot`=Z@I~xZ8V+JCTQvGhenV5G8V++8f`xzK zO4z#M7Du7Vq#``)iMzEtF)Pg`4>26lSq;_V_;_WR>`k`ijXu zH;b`r6{p=pAtraMppB7_Wq= z=PThAdfY~!NmetCnkNrqa6&1OE}g}F^$mmBJvB(rD%~U-{l&t}T`n;UQ3rB45DWiw z(dpUZ&LKNE#FRmK@XX^Xte&rkuPkWbxhLzoVu-qS+pVGnjPBg=bO%(S_6T1aMl=Jp zhg_q~-kD5Q+Mii^sME3#7OH5#s;o&+N>D!rnIIV^8*kMH=p+fGo+fg*YCXWRsjvU$ zOyTDYG$k;mQR`1{1{x7J;QPVnE%%C$EYl%4nH z`DaVI)Iz2i+0VIWKtt5i#wItDiYIiqetoK-NlGSZH3x{=>T1!T|9XZM|ND^na7xd6SznFx=yXLXi89jzX%yhyc&GqC#R{=zpM`5o7@!-SZa_L=s%SyLP___Lzph zKHk5(>Z9Bb2*Jr!WL|DpxF_Lv%jB07;*_ieCu0r^o(ZP<}Z~9?8Q2aM$I|Rp*Vda?; zb@Ja|T4RreNiVPsNH(Hl#-2fA;Ani|+`}fAP~&F=^|5rV~uu5$HT&mSiq~EacgHAI3jtHH3m6Q_n1fKY|q7;ghpe~ zrJIAe5kN3D1KqfjT2K6h#?H`b!iimtM*6 z-KiA>=YGULY4C{O9um`4$1^SQ{9-FIE17VYa}JE4IpK(|Em|;Lp`3R)Utim=W|rY) z73A2``ujLePAK-I9&>S?f%7JNwW1%7POwV!{3r zIkM!8+lPNO0sYM|HeDOm3Q{#!9W@tA_aXGFL?t9~H-;X{d@so!{YyG)q^+?l5`PA6 z*3he;F9)%R@|W3ChHdFQ038GjIf$Y$XyZtqqN}pBbKntDFv>EVjwhsFJT7Mor1uoc z@0sGH)FU3^_UfWM^G8nJAg!F!9JcDH3T(s-(IjUe%VWSmah5agj$~=Azz}&Sz9GYn zlA!kuoF;&9js);JTyO}+mcV!G4GkZ!qJ!B{+fxk+-Y38{l>t9q0C+6YR$s&`!^Gwk zbf9|Tbo(8HDYSPFV8duPRy?y^%O=dEBP}%kRNLB{^j z%S+crZt2iCsBv!l@l)TeGceO)P-XL)lPcNm*FjE9hmBLS@`~n`3(R}N%Bop0IF|f` z8;)R^q^h0{R&Cwj+?Y!FkSJ=9AB=?L{4lxr_ z^kVHl)Nc-O?e-)w&;u}bcud0q2$F`bz>+?i+xlurLxF+Bg3Lleec;P}M+UKKLql*( zcZvphBHnN+%|)aThnsEX@oAPDvqIy8rsdbc>5=Kthf1u0qR(21D%xCv zZ0K{L5b}xI7)tGeD2zNG&XMtejUyd6j7Ty$aY9I(#u?-5t(l!#Xk{cnAd>w_f%;_{yA$Iv@S`kY zBob!z6wk5T-p`3X6CD=9R^wUr4K@ip{? z_{>xo6i4v<@#>cKHI=1;t+)i> zl@pa^Wa&Uql2~3AobGddpi9pIkl9t4TldMAOupS0YB#)b3R)CruhzG1j1 zxN#u2;G2J_Em=u%i5+M8>T4M}M;I@*siU-Ge8WsPE@JPsz5Rn++P7ut%0!cA8I*NU z9tUewxJzp8J(HQi@&rG@fN4K*woEo<>91hm=Tc98i&J!0e~R-Egb^T(1eDJz9+S8g zrDgk6Q%k5I134dkDL^|g383YdHR@wqP@$@%f1m8^nLmj%X9 zN{khya#9ytj}===&)vJ1BQ(tmNX_bAw6=T1E*qyyDMuwAoHW%Ls2^eX(2q|~6&FUHM>5&x5OFiDspeHfp1Z2if&otjz2_mb^M(-Hh4S+Lh}+)a{Ny*! zu{X(k*YdH@9;T0|L~at>1uxw-DG8{qjhi${9YV!$sOZ)uDn0=<7pIJ(QY_FSW?;Gk zMlY}^@2IQ%!$;G%iEnwa1+kA{eR`jIhzT>u*Z5>NKj_o4LJoQ`eETuAwGNU93%pi) z9cmF&$q8#z@(p+kVkeDFKZ;w-4{C>aliq|x(O~w~Tk>h=Fb(_rhIA^l)HmF;tohO6 z=n6}B>;wjw_35um0IF$yO47dK_@FI(+YO#8=}nf_gE`MrNCu-$^$~a)634ZAq3nS; zn=!0OS|W9ZngNUh^uRs$H0_ZuCvwHNJIh~^WcYVG%6xamw#J^VvsqC}7|^CUra+3t|7)v`1Z6YBe%%Ht^q@{LffH|SL| zC6T+fyMw$+4hGOVBlv&K>^5~NrI(O&4Jy%Iz^T|cspK;cq)bQ@cHqa2&M)S}*pyEe z)_5-5`G<+M+@F4l!<3ejsG*^<1QBPtpHRzqcb%@RgxFP!4mYn{X^SO!gkw{_)36ze zNU=j@9da8Xkg(deg?s;krSiXbsDCRO-{&G*Vuhdh`8Wber{`(lE!>Y#RXlgFz| zxwyP^_X1tkPpKXvBeVq)M3irKr(_u%&}*wyNLc$>uIQ{SJ(7@No`Xt;?J+fz3~qZRSD~(J@`eKq|KSZPtWkUzieSy(39+^E_-fn_b#4oJTHYxkzuDGt^4E{YoVg5W>Z&WqwL~H zJ>FAS1L9`SlnW(7;#z9s`TH4@~vNhZ;WwY-=euJ zM)`pV3A&vLWm=nbwKc+$9mt*kx{NS%nX=QJ~cwC z+G&>TKMkn)-OI#41uhvawaI#Qv9&oBBjZgUrj2U$AV80J5ZUB%VKM6<&Wgte3BHXB zV^W*hjanu?WMOf2a)8Ni(a}ka5f|GBqD?uo>-YE>5Wnub&Uf3VNO(wnp|@%Gg2`tm z$4^$uFV?Fe!k^ij(F?6CbVi)?RB!&?_2o!7Qm3DKNFJZ9YHCS0;YU0h7r62W5Yv>fX~o3d**2)yMRrr3pQ zqA<#Y9Y~SY>!X?MsTq?sLd0(!_j+=P%X85vSYlG^)y0?7tF#UcrWGo3?5JGmSmZ!H zYbBMf{b^wMDHZEGhgsY=y3=-{g_zi%gb&o3kW>ifii9UWze(L|4`zXo&~Z}9amO1x zS>uva{ljvQ54y`q&MNe7TLsp`o9QVjGC0{za?%~r1$XLM@h_+azZP#rkL0aWXl;w? zK%(I*i2XsnNtbMr{?^V#%e*X@R`+nj(xjwo_Ezm~05idgNWCFjX5C(9#;swIYt8nX zne+{BJPld6x&yC%%B0?VW8-Pu#I|kph-S!;g9IQ-KwwVoZwwW|KbVg5Y)D{>bK6uj zLM#DCt1HJy`7*PXoM28W0i;t-7`zlL7A)zRdczsL;-cdSu?;~#6f#jaWyb>;u)wD@ zP@^I*@0rg?ZfF^(GTPm$`QwNTxkYBK9@oKDB75VKAyy@IZbk=Q#$FIoVylEhlXg#o zmouT{FU~98yLB_4F}!-X; z?-h?}dz@SUL4DFt7*7d+YcLiIjKuEcH*=XD`g7QQ@e__Vs$IK0nd%SClHiI?M%QGF z4WDixPN?XWMl%Jhe$%&Fxotn?3G_VzmfoDQ-r$@IoWRJLiRqD%Mf~~2NEBPHlY5U9 zB2lSBrsT+}ITl2hEphps#Fg(QkhsX34@J!J5;``bF!v3DVFKJXWejJebZAmNYw_p@ z7yi1wN2v(a8C0J_y@e%n>}APa?Che=F$2s}=aW=b?rwf&WL0JdBO0>gGehTBxJfPE zq#fJG2;0?S(_bWrTCNB!)Ivfyn7b5mJOO#!){&dJ+s2(9iq&5XEFrU|%@+_vSz&2f ze~PGlYcpi!@=;E{14;fB4ZEm7KLiuzlKD9m z1zi^IS7m^`8A{R3F;MYCE)N-7*A8DrZh5>%jZ*S4t@S9!h`Vr1+(iDE~&u)Mp0-D)7VBatZqd$G?R@GfyO7G6;wgFEDwP4PktB)m^ zbh{>k>F3Dl#UI;ECt!~Xon+xxcNyoLoK)knpGn%e zTy|*=1QDr52JTIZ47~m|psdhx&)F%*KJ9cW)gmmj`fMnPvR2JeC(AuYVoKi}hc3hr ze-?@G{h6?A{q;5lCz)O(vrdVS`sfi_v&-Xi59s)s*y`%|I=r2i zr}1+8))DhCBIxe)asG0ga2x2h(&^cw3HsvrE}ul9qy)Pw6kUwthw*(*^(XN@*XRac zr2Eh_J)RFQ*K|)M=zStS9n#n6eqfa(&68auZe$jTe-GN za$ez+bL?;hjwH{S&V&y^)Z~JVrWgn7S$YYAfqOJ)l~>IDq9SjSiOUt!;K!}pmWgSe zXeY#Ng#oJRY6sZ(tb2|LrZwHb_dL0MNO$cb*%QR(K6f`y%%iYcqt!v~=Qcab|E8a? zcF(%wi=yYR}CCpO6jMd*Y-v#Ho3PnhByk`1P>xL_= ziIKw9lqF*pUZ1~m2Bb|t)4>>wKqHU=ji2HW}P7%&Dlax3&jNK7f7h zB)8*{5@w9$oniDZDc{8U`BoFVBnaeq?>2qQIwZPNd(BI!C6^I12W3*s-Yf8y#Oa*r z%W492P?S2`1}cFb6s<&z)~%JKRDH$8nBlTzxaPPqS~ywL4=j?1rPOLuBa`4c7%mb? z&4g>g_r_`nh<&W06@o`0-rp830`A3$KAE1sz{$kaJrP$@tq)z{-KDB~F=uQu`w>z# zbnoEPyT+7qP&s7D&pgZPmDJZtt|hTk=57m`0K<5pYE5iXp!)6HN*{rpw)IN2B%3!b zHx=+B@>Y|L0RIqJq4Me_(v2Tm*9gGiY8YZE$D)xvS}pu$o2vWTANWnsN$s`E4^;RR zO~UO~2qc_auwlC(eO3-d_%6^WTkN4Wq@-iaJdu+5HY?g$#dPHhyvC4TFAU*#0;o%^ zp!m=)sTmj2P;IYdz=RUY;t+b~xbhy)S_v5}e64`JINU9G$i=%MU|LL?DjfAXP)B>E z2M^hd3ae-qZ@s4-j>64-3^-lX02Y%aA>X@%BSCb{A|1-T4N_jo$}|VBSc8pDw?mA& z#M+XM`vi2s0ou6|HndTOlr`h|ny3*XS+SkK{FC=fIk?LG#BXIbe6lqbJPGXZ(`gq)Wo+=?g%FWUz1I50gRm;9{atG5Ke6gtabPSB<$RqzyCr z*+&$Dc>>o;I{SOefO@Z`+9n949f!^cTyjAjb!z;U5#n$tE>ylo0W%w!A1q1K>Xw@9 z9U-coPefpU;`%arsJt(t8W={HBUi2|3{p|^zNh^FK{0X}aZSu(jQW5Do_!^D+YtwdE2HRC#jDeqpYraL`1R@Txo2lyukdn!l%t+zCR{S+_OsdJNHbmB1J z%Ol_mz75z(Fg=0Ji1>l8WIfGELxet?#hs26d-5)qM1sj%bShufQn9QZKRP;*<8_phKKyo)IrU5CNQnqY@3pg`Z=U z`4D(U@sQ=M?-fI6ONLIn!Oef-R`@3B`ZN_o#2iAI&^&12oKjS2>O|l+wG7o$AmerV zC!C!iQJH-Q`hlrA`bpWT_E!84w1{z$=?eCDPauYi9`pPW3^N*BMzMkO+?87@2rJRI|X6-uB|?r@RyjFMO^XrIZ99x>o@ZKSabkOqU7 z$|mcPQ~>*T@bm=PZ`BIxCPB$}n^7wBMJ+&Y2FAXcBb7YOC}TH39`^E3$u=+A&q*&j zRjw5hHFr4B)0;7>e1VD4AcqY0cH{m!}P!$rgf;?wlCB$VtzFatW zGDGNo7Rsg(+>xONbCqmhHM$D+fk$AB8l+{jGt;*JD89XQ>v{0!xgs!K#4u+=nBY&z?$CvuY( zyEuYzI?{1SvTI~K659&i4P}7?|4T5Wk6DbUW{Iab#>mqWvkxECi_zLhY;q7LW5MO# zFG0LQe6~QaEAzt7OxXp+E;paI^MsN_vu!!8CnjnovgI9|JiiulcJN!rDdmJq{Bf}l z|IXlm!a>7HWv^E0hwHzDzNR(8B%EHUV~;zg1~MfB07}%wY4$Lo1pSa% zo=>cPu4LgG*eQmM;c0SoQlWa#DIW}EOMHQ$+x~rFmOEJ{h+$;wYB@y1Fx&Kl7}f(t zW)z?9)E;s-*0wh~aWbBbL-KB~xZjwt7RG`?Q}75TZ+wfqFm1@~?}#3t|S(q2w zns$q8CZ(y?E<`9a5ja+GfpLM5u%NY0H@0L+17}P9QOts#bZZi$rmm&r75Axg-&!uf!~Dzn-YhYF}H z%>7tWddz5@)Cfmedrf10J32we%y@KJlNAk%jLasJ7oNQFLw_~ao2F?1Hc5eTeWf!2 z=Z8|=k+MH}$Sys_pyh;*+6uzZn(%Vp^bm!zwqP2P3u$S#lGd5{wdhsU4bg{_l(hTo ztdQG0v6ezZB=17fCNDIK^3J9%x+u5HxK7hgR&z@8X3H4EDKzEx)5-+al&Q=~3F!6= z=4f8T?$%C#mgBrw9kiTGng;Vg!8v1BkEKR>xud}&E14${wXG31tVm=%pYtq$M9i)Z9-(U0x4+}miWoI0xPGf5xzAG`}qY}t!K@`LH&?&^9w z<}!Z^<0RF(o$X9Sncqdd^U5CQ{N3Gb43YHuVkV-o%>LwRjbth6npT*65=p0Hk_Wbg zgXFxC#uKwOkiD{vQ5*7Y84bhl2|Y7e#4nY z!Uxu?4WsWRPE~EObhA`6^QlDs;pmLTDe5i*9aZ^9Y5;zOvM(3ifoKQRgG&!0c&yz> z+K5hcBS*S7W}1fyBd!eS8-U9=zgs5R@?!8=S ze)cY={*)Iv+nNLaNlDg7fi0cQu^kis0o!GP9MZvFRVu1tMBZWPfnnWDsVGr9vl8*s zlq1|ea#iH!p#OWT>cXXn}-{v19!(cXF%yv2B5(G&=nUkMc1?j*YM> z_D(MO--R(cy|lLSI+{KB0oaRk=A$BUICV?){F-dcgNE|vFqXMA;coq#_D2y8P$$@j z{NJ8Wpti<9i${GqBkfK!IlZOmt3>ph#sh7p%;kT)s#t&XBaM?cPNI09^LN?f3)vq( zP!pr#;neBfe+yyd8xBHWK<2e zpmckH@vTNUdJ@r8zK`_kn@qKThC-hPxtJ$&bnd~wjZXT@Ji!*YA#`I1E6UI|E|rag z;2lo^k7~)JMo{D;5@iigz!AgV)N>!27E32l3i-j8Pi~wlgDq=|7ojN8k3SQ zvQMMAX6IfxtF);=|8N5le<1a$TmHAFgS*oaQv-|Q7$R<|fW7)GdRAvs+-b>O>KE5dO zMyed0Pax)p!#`vDuxx`-oXv2Bz9+l6p!G)wPC2!EDhbakBcN1j<=LZ%EApL)wIW04 zBc%glr4wDyMlz?+mK$hI#*4)>#xVKeugB#cc*edE@oxs{YVlW!2=8G;LIilN8t z^&n8!jeM$?SgTSAKBk0>JyA?skf!Od$Z1 z;D#2A?R?CXQ{6imkD-24>z4%mz#nX3lj&_$>M+madQ`M1e8O6M`rd3lc-s|I=p`U> z`1MbCP5sVjUyIwo*NPwE_P$DWb}4^yrN+(JmrA_o2NK{S8GX9tuGKeOhVvP$zYsU; z7$3y1R&Y(~-G$k_+}6z2t3R$2>38;aZbiM^iODtmR~8BuV;8+FNWEuPKgQ}6?iXs3 zNH>$u$whA6K(>7h1;Qom*L@5bfaoqEs?v9R zGL1@s9zY##zD8m=A0Ul}u}#JhelF|QKJs@EF@^Dc--)(f#X1+BYL|!7YMp4%J2lW& zBo3%6>#D=utuzhcr^tgkhbGRqet*%DyH6G!toT75muK$tkgjz2_Fr`Qb4;v|Y5d?# za6Hb8IPIH`4*tHh7gjkvnT?r_lNG?q!bHc!3Seeur(ncLdXE7Si}lKkgIVdmsy$3;)?>gq~oYiDdj>*!=eXX{`} zZ{cLfNbhLK#6<6E%EU--WNYY1Z>Mi(?BGbx#PE%jvtefEWTZ25vbLfGe4j+w$-&vs zNkQM?9|9dK`#*IYF>*nmXv)nVB0p z{_C22gVmh%t?2)Y0q6YB1O5+t?Ei7VnK+o}IN83Z5i{L4r10O2{y#O-@t>(Fzd!$LiZF0|yUxnM%E&_hZq96$>^onzu_}r+Z5^Euf_`M?AQ%#gEPUSfu)_Hik&q~oaY@;YzMm5`^hZh?@s2AH z#zyw09NStw+RPVk>`!lxkEO2c*Xi#^@Sg9Vc%Gh~?)D#qCPMY=mxsZ6bbpa)T-vC4 z(c6(jdu$MEPxeiBAujT}JMC5jKRFRP2>5k$Ho9Ck89eSWIzA5X_DmJlsL-#%O>*CJ z@?WR)f0t)vML?@xODSKJe&iVcraojj%{LkLN~}&&t}{uk_6q$d9er|Rwp8^`EM~Qg zKv9(@|K*O5%TwnY1qTkPu6n*Qox8=zc2~&ow=C_(9TzhtRH=griuejVdyL=4W~Q+m zZJD4G3*3HU->hI~!O$`GD$7J-t7MdJI^pqb%=PKQF?}zTWIe!=2eKzcE)mV$+Bxo^ zt{%s64`9x5LQ>u3>NP65khua;J7kBykGFZ!>U(n*IgBK zp5zv~TjkZ?ERHl~FI%WwG_s1(*+ZYxh_0ntRSjZ_RPjr@1o{Z(4dh`r8-Dx_%Pn`@ znGc{s9K=fl4u0@%sIH&@(zow`CTa)&5%&|ZLHFy^{s2rGlLt7$d)_+S*_xy7P_BO( z$oByCqI4Um+RjE*X*CxEicj%&tC_{AEls3RAk~l|CX~f?X}>J0QC*AWW$utkukSt& zcgJO?y;|?5hkM;eZ{xQT0NP!g(`UA$F);F*^(60aj;c0&Yp3?7SX7kqiu|~=9n9Z; z709+^fkB95n3%Qa&0R|t5jVujCsV8FX@|mU0|H4uEq>dWVa|NQfwN&q&bkELu9ax? z3+K7(eON`pWZ6lu!^uEpQ+cWjW*EPE*v^&(?I@*vcQ$H3$5KDm15r}=ov!IdimCZD zXtJ|0j=b(n5LfdHhzWUQc&mYLg_8^cbInt^WW4`8K_%77gW6F>NPPo$W+-Z!F7y+P zIPdU*`-(RPpiy|p<#U(v6;Pt3)ob@RB%;#Q==2@}^PAuQS(_QfY2DZ_trrZ3Bhj$@ za@u)2KKr|plCx0l+q^rq+O&y|g7Qs)Z+wxB7q~k?m~Gb4)XF0Wsw@A|?i2`bTpIXh zezNT$aS|U#nilk8Z%cbHrEfFwp^yG^vvt&R!jzzL@OH#UJQVj?fcnfOK*J;B7bBs_ z(n4%S4{9tMG@^&jHv&Eg4WfGWbSPR^&-;ANa5FVHC&x+?*YQO&wk|#}0YOC-ZN~){ zv|(~p)k~-HWq|5@CoJ%Ej(c2b+qteG(ZXL*PI!vFO)oHEry*j1=!dJ8%O>|=|US` zRtV)2aDm*CN!t{zOqQ3#ZHb=oPacyD$Ngc4;&zzEw4#J$V5*A0 zf@=)hjh%$x|1hL22O9Rzk7Z%Z(tqz#BmxmyHje%jGmV*Cj2{-ZB`PM3GpR<@dqhRh z=_Y!Vp>8$ukc?TuNm^0nAia@;8@%tI+KGb7qGM5;rPenC0tL0=Ae>ERkFOUR&@=aV z2)f|%JxSKI|CUN&`KGR~+q>5d6FWyl=Ib~A1?EDQ7l}7N#*Bu8L_s1p50%(UN_hX_-pJ2S#E>L|blYyzB5XIC8N+&& z7W3hH48R_WM*;_C1S2|AMv}}@AU7x|g19xDD>aKo@@)+72f95NfItZ+iF;vm?Jt%X zlB&Ikc;`byY~`%%RWd>Ia$YqVM0b*KLw5wu}h= zoQ0^dj4073>1=Dr!N;diX4bxa--%A1=%rqthg9%EbR|I2@qhfO!3Z)6R&T5!Ztwsd zRcrY?@^p(5Wk@P4Miy33u@(=Z{4OIF4W`o@gdLB2+3s0ZLhM#@0~iDkv`FsL-5 zTjL;Hmi66A^e&zm#Y}HC#|V$nW1@mEmgbJlH$uoZF+J~AiB-|PoJn_yKY{uzD7euT zU{?+JT4TXQqgih4M!)lc6dDAY@@6}XO( zZFb}hQSb=y$l2)R6>KX_2kutS9&_KI@pK5wZ{tZuBJW5``h~ttPxGRzpPuyYu`her zXxX#py$TN}CBYBqqnJK4IQ_$r#N+Rl+|&fVEA?KkcoNl^nm*odXMg}50br66)1tfl z2tk=-Kpwo0|NLmSCelt{CVO-zVlBo^-Xdyv+l(g=ZQX|bh#8|KtJRo|8K ztVV95sF4p*= z4r9{9qvn7zTqq{(Gk5>8Y`=sX*l>J&WP>?jXI%oP+j>6h?(0IvLFr{J%O%k)GOjoT zGGZ#5j_@dM`!E~(ZL0YP^a7_-h&BmVz=;G;vDTVDJgMfvvYBs$A=5DQ>K9d$aBAXY zi?Hd6XudMoZ2U{Yz}%4~MS5hm37fOL)6|XfJP8VBuT7EChW3Wykd)P*v!ZPxa?CMd zR~4zp6oH+gIhJ@ZsTq9A#||V||CrM{HAm&$C>Cp?c;pT7cE)a$TBKEV zNsv9yAf=3CwbL%;a3^_!j$P5~>t)@YdiipTD6Q`0GM!&0pc#>FnCgr89a@F z16xwKa_go3ZUUEN(=;z`I$5A19H^LuY%4mae)ZAUuEP*GhjjD;qc%A(MrycWndi~rmrPsF-GBhOiC`IBsnu@(jS%#z>*v{6fiR`iU zIS;ruMm2(WZ=#4R%y=vRcy&XtJ6QNk`l*{|NUEB*{VO^|pM)m>2pa9KIMAsQ6tQ+L zl#ifcI0uS!`r#OSVX-zM;0XCbd<1BF{#TfFo!ZxDbh3 z91=cu8`7S7cvb4va=&M!>50GjkMJk}UtjVI#GH_kA*tg?4g;^Vue)DIN2*bY{`cJi z;AiZPXkxJmLDAf(@A1@d4N1!+i~j=^^FvHawApu>vCG2+#6xXDL}Ah+scg01oo7qp1K@-`M*^xCEUBe_ z=GoEJUl~>BzvR@VB2_YnMU^)A)6-{XIdnZax!&Dn731tj1?_MTqlc;E{J%4|r>FVE zRD`Z-i<*VH4ZOS4#Mhss8`UTFin9mCKQ%k8G=y>nN@FA4Iy|FNPx*9A5O4345j!oi z7?=X5_sjTv+N&#~+9%2g;;n^{=rQ>vn1){vCS7po*ID&#_vdw_=E61Z{E#TYCEUrA zsEm^XX$oE=%w$sstnul8WR$yz?;zfu2EA0Pu>`Ytu9Ig7y)~*2k5{BR-w?GHh9O(S zn{iV&QWj?idYQ6apU`U4LV022@-^PNY>m?ypm3vO8khogh{4V$)sG9N%zCvKiex#> zr!ZZcFN>G5B{}n;hzx^psUpmr8WtqgPIP-HM{*5JH%w!EeZWEFsZLbNp~ne;LY)9A z37BCJ{3yt^dI3g9w8a$0o5WaC6!P;2S0^s*L>JzF69-wg=rA_t&$hQT;ZXCCR@7E z=TcEd1SOzzY|1n92i~MIYA=dWif-;Gpd`R4x~w~Aie;FhIxr+LGr~6*qwt}cn`GS| zzV}~>pR=MI(7pZZSUsyEy!1FWXj^f8idYZ(-;6bqE36?z)RnU`!rJG-y~NerfE%r^M`5bJBOrm#bVEumCA(vd(^%kNKlsuF&PcLRlixc*?7Gf;>)(a6_S zpy`U$$X$=PMiff!jA$kA2eCq9#?5;CL9h+xdh7zN7|e~JLpGOs~vD~P7?RuZ|I z-%3Wd92RMs)2}0U@gO3jfY+NQp_Q~I9RR*&>Vw{v-8D3~3soLcl46H}(t&_klwjYp zJ?8eg2WFXvRrgC?(w%H1mH(2K1Ig}XxTqX~7PT3QV4Ibc7u%7(zFGJxb(@$N-l3f| zJqfI@fZQxEvagi-kesm*$j@nN4v0K+d?jw-|~czOMp*vD05s z%k`opVWnx|AQ69o3Oy0!3=g=2_@W#Oac+afKmVNOCP}R?xdb1Sv)sq-ISy=w=g?wT zI+YLZpqYEkEVVVlaXAhsPSf}U2sn#5{e!ZJm>ox%+b@nPaq4&ocMpiQ@CV^91@5$u zut^B1R`}#-yvL>YR0vO@ZR@fx8Jrr=_RSKzH!9dPKC2RiPqcSR6R2`-}R=uHdczwv6A+;PUIG<+<$KRiO} zuCU)ef2*B8&l$m$J zk`N9ojPf^l+_+MA000``s-A6d*n<;-Ji(`+ek;nY|BeBG0az9sq@m8DQkzQdJl)_a(YgTF&QfXwM^}{sF=6@Z;^E+} zih6u~@ylLko;(-f*cV;RH!H^rp)6=ak8(eV%RoEVI^c4WP5q*sMv79#qRxhAY&$o>x!U$NU9*B0#SUVDQ2&cRR6S3E$1&VFm9TWd_UK$bl2&5n%IC>1W z%F(?DfZBAMVZZ?2U!NF=IHgwgiVO`Z;U@kLNECsohdGiz_{spWzefp?BTD|E+TtZ3 zLIY63)*sg*q8tfg3MjZ;&NHk1{tcuA$0Mjj5g<~JFBiPq&IYOTnpOQnpXfhe7iZF7cD7hvB+84pXaP=<{BFMXwRVb zM%mZZqDMLJqZZ+U@%1& zNBd_tye$X}NK__{dyW{=j+JJHMNiu=cJcs%yqD?(6=LSsBEY=frwkZ+2ZI#_AGP|% znH0shyyYD5*!7rHnid;0#Nkv3Rc~1Hip`pCQ95KC#Ej4J*!BEL8kg0jf{3On=qj0* zcr%U#QnTzPY;FLoqZALSWR;~N)fI#m@C*xwr8z4zae4sm=(H`O}4U`KHHwD?U=^fcZ3Ru1M@XaZX| z-}|#^ExHmjGZrla=nOB%FX(HCD$p5g&D4SbStuPy6M0rA$-{epn&CR_(xi=&qjS`^W=3yt1#191Nm3}&-hPR-ntgOqA4cw?OftI(zb81pW~AbyQay`vgoO_chw zKZ9_i49@QF>g@OcF&?3iK(Od6t0uJ>`}r%}(NMgy&j%$UCh3j$;rToH?VU@_!@p!E z)7AM#@0FT>qHY5XF6%^Cs1tz}w_Y}F!^^YU=Y=i<1>Ow%R;lbc@Q7C{xMuctwz zbF+j0VoSB(jO}~BN|J}qz3~IFbRcXgVL-B|DXk-nkX4%YPoGBo1@u@PNuRAPpcFR} zKzEIyA~3Z6$rtec9R}PkO3k8e@rCc(8W6c|AuTgy;cA*}%jgV#m=R=Xd#DAdv3a(c zh@~;cS^ivpMXZH0nj5$ZIU5WxU@xHHv&CuCLFw4Tz}{Q5m}sf?Q1qCyxgsNhCDHoX zeH@RTIxz6bIv1A#9|r;3sNv3jLAd}DtWw;2-Ol?vE^QxYkyC#@T@Pn_2jT?85&jPJ ztvqYY_uLrZnv{s6{tajSQ~JF!IZ-Pg_gpc>VVz<-8zu6ASXoE_K{d?%{B)%Ij@Bxe zD87$~`~lWit(frbF$UDFlFP=(&t?KA40-#>_;FC1H{{wV!@&&j@KMuzKb+olWH6x< zz!%7{#9Ja^C&z?36j>;Pzx>U~c>0-J%KPIAtO$gqB_TiRNJ$^CJ+Jk~2v%`Au?#s` z4EoTGt~YsT(>(eK8LCMV{$DRgEdP6b0pH8f|DsFzy&V0M_;`IkW%(nHV|KE?e7i#C z9+n6}ihL(b0`;~%UQ83&`F2Fn0A&{rxU@5soT72p$LOhRv8C_U z`n-$(dA;3$NI<_D`p z32}e;Rd_u4!YxFIkGzQEZjhm2#l*&~C_LMcHJp<28n2fy8_GSsdb!$Z|>{|s87)Ito5Czw-F`>ni zz0bvo_XRO}bRuuhbkHm_1m77zP(lu&py*YJsI-qKNo`pbnK#n>IRM4A7loDSrM&*G*qr?4V%&06So-6dw+u_7(pt;&3dXHh|yn72q?^ z-iVGXH5a?v3je#{QIQhn(G<;R0xzqF7ptT?U4sZOmVBgP>*`!J>-b~YAAn+MmEB1>VsK7DN+Bs zU#WR+3k607R$$T|+M-Xk599YLy5D70V9j#2_P5depO3p#jMaM6dUUwhC_vU#*u&{_ zpNzl+AcBN7eW)=}aCeYh=Z%$k8x`*VbrN zjAOM^9WMXbK#BlioE{w9Qf)1a)y)GYC7($;@HXuG8w{uP`8(POYOPo{e2GuPmNBW0 zV5O8U><+cq9uDEtv4ft96F4?TN~0z91G!e)(%vm* zLTr&?uisrFeBTFT6o9};;q}wc7ir3TFBWgtEe~S4yNfPFc*rXY^&W??6a~xUkL+7; zrlv#|Vnk}i--_>3bVFi`EFJ6~zFMUgCE*bS{z5kMm^ShF>+_wYUn9;E7+a&y8Jv=b z8e9enaWx7(8N!u}l;Gos%{9_~2$PiHUHPKu7~+TBC!aQ8{6X=7_*A+peSb2Ri`X0V ziQ6WzX0X5RaHKU`6k&I+pgQuD3EEa(gbyvL7{m}AQ3P7Env2=b-hkrB963v)`t1V| z8XyH&W~mlb#TLHr`R_}NSXetR0t=~E!tl1*@@DS}wZ(AqY?*Ze#m%^xyq#-Wu^SO$ zl@Ph&X>baHOzxpAbkMYnW6)J{hJ0gV3B{qoNtwQn%`w|e(~XQM&&ZP^VGByZ6@pKC=& zV!hRD?dr4x0^&$@3WdU32z3AUaX&DZKLHp@4?b5>qd~aKpXcq|N(6w2C!Fc0i}Q(< zt-YP*z0LN3>X2^F|1%wh3=ZdSW(H*c@9F4d{W6Nu@LfJ=S-@PwwJo^sHO_`Dnw(O_s9DnR?24`y)2l9TU>=S@3)Sqym( zz6Eo}ppi#cRRoSk%q@sW#_-&OQ8)nK0x8e6GG>eF=LZcN{ES`z9|1)(H>s=%P^kbJ zoJqy9Ywi5;%U;l3PLQLUh&bpkJhMZyiQ#)xl>$?@+fPI?qOenN;oCYqFTrBoo@#R+ zYoY^v@%*PYN9HN$D{R9Y;v7B>8sSu2g3{Or;?x+3$e|s7G>+BqVHs$Bho4gYZsfov z6*4LXCPiSSvHU1K7}=@oS3ht9Sv}9+Og-2AhVK0+1Nv+PDatk=f&rtdsi|l3sgYg^ z>{QOJcyh`!fh#LDAu;9V=7u}BULPQU$ap`*rkwKHEvUrwgVgWO91Vv#;z|H&FlJ$Y~la1>r(VY^6=A$!>#DrL4-zXt_cEbCuu;L4e z0pG?~o>>!MUj(6*qb$Of^2@_f>;@lZ4|H4~{jZIT$c?8|@-f=OBw4yDSkcHI3qk>X zImhl*rXn;RCR08JzAuwP6uhD^JO+jLrNI+5jML6!8|cMkw>V|Y%u|IG4)H6DRu(zE z8SOO6KQP9474-exQZ1b%J}l#MDrR~D0mKO~_kV_l-6lum;CRI-pDF!P&nyuQs44r0 zMIQQ{F*#Ks{=&8iD{`o_rk|znHRsrvSIKTWp1Z#;&2}yh^f(3nr02^w&p>A+TT^_; zFeYMNX2m&Ofj1_iTc+R4dCd`JQGo@|7WG(=y#bxSJ%gXSbp}n24W9GUUc;hr6agK) zrX$zVPGE?WqnvTTQHD;R)n@P%ETc7iVOpe!>*8!Gb-(V0B%X&XgUf=Apbi=@wV?3U z<+CQ#(&l6Qe$n-HegOJm%>i^4wqs$bp(Qn2f3xRZYAjDQnmVRn*Nd$SKE+Il1)Xr> z8*L<@HTs%^jn?dEPez`p087BH90@W*LE3V(XIh~#zj$H+DSz;vl&@0hOaT#hedR!_HA z&z6g`x4&Kp#<#mBx4c}lJ2^SI*gljDIaIqwrn>O(PN<{595EusBFFugR#z`}`LncU zccc3Q=!REEc~@6;LLh${*goFey-`cXIQeh%P?kwp%@B$>-;N0vgnh!S3;L%ATNorH z@0Me=Xb+{l*>P1+xN}E_3_EdYNtG8Ii{c!r|)v{(Tsh3#S-^5&VTxIGWZ|y}v4>%~7Js`aO?u?HoSH?j-s* zT(=davbUGHRdR*`$}LR~0{@`0SbmfRbBmVUIi{>Vh|K(H|K3UEq(IC{NPP??mIDH2 zUtXqt7B$r_?}`2uf{Hedzo$WYdhzEo@5(ru+0{gPgPMzxL<|lKOy@`fF*66Gz{;P; zzqhPh;dDmqTc;D=!Yr&4TqVY`s;@;%Wr808PjI*j-_=BkNRSkjlb`WVfv~#VZpKTP zw6+*PqJ}VY z&MvPr$f0~3IreWIO1)14z~FPrL6jlbK)`*6erLddSvz$+!e{C%uYxOMLr~+67ybUW zb(b5L?WySfoA&}qaf^&OWg?Ff;F8)Z$Fj0u^B8|F9Z(MH)3|nJu8r$K;?b9z6oDg# zz-il7t% zkV_$O1ZZU`9R+I0y`P$WtBT%rSfan!YX?0y(&(YPXm|R0Qz=os|Awzaol)Ufu85qk zqs&{i(~b7l9QH)Bz4G>R`;D~|y0UpXB3%U+RS$P@W||GXe;W{;sUW@wy<9R{K{c)Y zlBh6;2tRT{^DP<1gDe*fR`}!}4&Y5$3s_2#IEDrIXHgAT%3QCu?H<|H-+%6U{}$sn zFIX8Eh`-kSOo^YHKdi!h2Vliz0ozTIV(3grn53WY;q1x*KJy4 zb<**Epz=CLuH6vkTR#a4!?uXyUO;NWNylvPz2^sB>QRzGw=LS^B-pz$Ghr=1)c@+2 z&{ACX?8CE_W`%W8G?IwHB7ZGnqJ&E^C+sT!Dwp2)ofx_84+v1O7N{D_rIq$=aBSvG zO~`7qWP}_6L(|zG=aIt4#Z)rIr}-PI9ZmL#hy3pEsz7DeD-)ki+X3RJUekga#VU0K zz3Lxl_5*P}yO%{c&x`KOH^K#rDZlEK2Rf0Wm#iZv3D zKRl!1#MzvfTKwA8N5c>-MvrEF#X#+WjWjWxk&=lsinfY=_F4^XU&piF^wWFD%{4BM zqF!OjFaryGnklZEesO=Sp?JTFpCzfTmGr$qU@xYu4^|<%Yhb1oTU$EX*95|}sA?_G zff`X&7cvLTAItC?&J)i*s^f7}*0vE)UFL*ZTse2NXgTmR2eICuYPXE2Eb#cN?z@)D z><`aZZQJgOO7qSMnqB%;7<(w+f1B%oqFHp?8!BJ(fH(!SFuHYSO(u%)WxK52h$Dcu z4AT{~qdS@JEsz^wA{UVO5iKK^2Ctu}!NdY`PPl{|Pc`UD<)*BiMUG0ef79I%h5V+V zS{K8U0P>8S(t3M?!_9CQm&}X!OQD3aph312m_By?nnYG2XfWnK5io)P1KJ^Pv`1@t z;!ne;E_Op})Vhu^9ja|HZO%|evZKA@Y4Y_%Ugs4?ILasPTOMZ7>>@~lj322NQ?v09 z{t}AYP0|`zum7e{H&Hu!?=vOMF8L2A{+|y1e@5}|5W;^|pDb#uTYsat7weACPP`uI zXt2kAoON7?rg{UPFUW(2CRAO47zmnpj3FoAtha|rQbB`YsNh<99t}*5$|!pVJ13`u zbE~xWM_PyX$KUz4Y+mBi_2$ub#H)B0)?<@u?+KJtm~;|WovCTVxISJ+JBflZVwtgn zBPy=@c^k&bxYNgXYUv`^m(%z2JEJ(wPNw8hWj~+RYx@Te`@8X%RZ&;qu7cpiH5fPF z56@PJ^<4yNV@%T~|8aMa1Sy({^tX5QsMf_>v7+=kRmj{eitp3ASY+A&TUDJ>q zs+M*)=@pzEhpdNP4bNpXij73p9(^bbPS0lyw!t@|mWm|X)jh#VYEbqn(}CgG0zg~_ z`r1Gontud+;v)mGn8GB$*8}Ef3`B%eNa&y)1P11bjF_gEi*J+I7v{+7{3jq4)}+*@ zSru#6G-yS#$GDUQaGWJiD_|Cjrg&t~S}sm)@)Yoy;n|Pl z>JnOOJx&p|Fm0FN>>XBZ5q~fIGM_lJbpUd+{G3c23PY+fvFrSrK%N%saIY53L&bSw zVIV`H7wUD(h;9b#6V0RZxq8Hjl0~VX~ji+ZOJReV=d)Qp&!N)=tB^ z^%*i94%pGeCb$0dO{|^PQ#`MFPvU5h(*i4PS4OC;dThOLJ5kRJp2yY)E*1@ayy&u3 zky%Z7fS3X zm+Gy&30}%XPk|)8MmR`NVBc-87(48N$Q`n-(6Ls|>E+A;o|O8^UuIeO3feILq0zX( zKMWQT^qpayhD@Q0GmeJT#{?sO_bTGYt()a5?#9h3KE*)}@Up9}0B8ec%DR&uu>9@= z;k@0{f8X8r6ezw6tb?~L?;{@TN_C{~`SsAEC>UewQK}$AzyfJOgV}z5%z2-xYJ#?S zq=ZV*aZ`h?U{^T>m&;;9NJ0=LOI;Q_5(5atbQrN}514{79_H{x?OQdO9^~;7z@6Iz zVvQk;+ahR0zzz^v2TK!i+O!Jr#B!jrAa0h|n&{>b6rm_rE&;_8K{=}~3Em55!2)oH#fe65fJ)btb3 zN!!>1@gv>;m~ob=g6|@%l;UR3dON@QKlZ)-65&G&a2Z(v%U;(t!pgt+X!1nx-iv5? zYP0d#}@=XC@HSHZSxFubDtFJiRzC z`;h3y1d{|Sa%X-lgsjm4EtcE4bet)0V5#Mp29B|OYHe7Duwf)(jvON1m*l%X*5%!W{prRiNQ+3zKTil?l+J&{L`zL%+-vQ9$u;kiT7| z8^U{4oI~kMXu%+<_GEM-HcjFX`JhY=>(C)FaLliB^S#{whT{L!5Op>6q?U}3Q<5{B zTXC1=`^@~sb*X0JV0wSP`a{H@(vZNJEYf$tcun}3zaXubrl8Rz6=R7--vFQwR;Hj{ za`K7f|E?27H#?&Ci8WZ3!*cc~pVRL{af&X;n0ty2AfhTkuKp2a2M|#n-B=vXiCg%> zyi%IO@Qw{5v`JAWxXr32M9E2sCy&S0(RQrW} z{o6dmT*IX2+!r&hV|%&`RqzOW$oOb+w0>x+$6fh2fiB5W#1u^e3*7@O(U&XqG5@Qx zK%21Rrgc(P@h|5%5RuX?n!7qHC^w5Wl!Ae>k~k!g&w$w#Z`JvOxgwOS3jK@m`bTjx zn6yeH<4o?MnW?n@C&ZHS;?+M8nE#CS{SO3&k?Fq(Or!dL5Euf?$+T|*BRwCYIST>~ z!(=0_$JS&CT|=^1_bo$wb^a1mSj%l7l8}<~jg*@D4hpTV{_3Bc`W*58d^vw&?e3bq z)$tzH?)HlB{B-qneC!%=tn!TY`VN85sUduwQe!3JB!gGhN4s3lgz!3P8?uh?=X169 zj)&~$%jTcoSD)|O42xa?k$F75rBjD%=jA6m>V}soFw^TA7SsK}SAMQW(jmOY64a<> z8g>OaJLO*C;_5rx!>FX&Wy~gcM7iX_-#Y}m+H>IDnf5t32G!(==E)|tG5lF=W5f=lEF{7T5f3gl`tWmhMa28HW7C}KT%>38evJCJds>N>xJ z66Yyo=i@Pv>_DG~{nYZGboFD6dv~w)zp^DlwgmSNP+bxSD~4heaWl^D98uQpeQkYb zdZlA_&WPKfug{aKo>qMWm#$UY9-VLCgr z^4-1fdzHf*T-O(jOVJJc)<;Fb0sG<`D@3g{|tzP`ROA84Ny$5YEr`mnf1`tv} zC7QqVn+=jB!wB4j8BP{Yk`QY!wrx|6^<5t zAuFmWOu+(W0&W>`7nR@DM%mZ{@T?p5pz5^`!|YQEGlT$@MdlV!mku)5X0fYi+fb?3 zEF0A13?TcYFo%lU*w?-!nPG&5Zrv5caUy;*@{*VoWQj}UoQ9&rxHUX9upJ+TU_?|W zVGQArpzmbHm)7`B8KT_=^ZG~QLwQocKp>|2Y0u2Eeawh^+LAd=j4TlQ;Gqoelo(Pf znq%J6pe-p;gcb0j`(~JK!4sI>vDja*t1U&pI87lWrq&|^bX*L_LKm6V+?Pzh^PgPQ zaK7P*qy1pgL%M{h`dWpSi#NiCLP(=q{$n`mRg6fEJ8rdef9A>GfiuchogB}VP^Iz8 z91fS=u|~*6wP*%ai!V)3x}~iA=-~)RC^X4$81Pw)Bw<9iq;)au1p9AOE}< zgB*Zx1j;9Bt8&b==?9=_p(?dai>tvo(m?E1Y3YucWIGG8xWmlmn!9Q5}|&e z2IiK-CYP(R&8M@!wyBI*B2{XwWsBzp7WfT&fAj`Bkm$_dbycsi4U zCLG^|sA4@k3&f#+-{DY+#CiKpJbW>6fR6uSa*uZVcALx>mAf=f<(6v?cxf60$4ZpN z_&;plYER#@6$%YE$$> zsrLh_Gg26xkD5lFHs`}HbqW*RDGghW!f1G#Lv^%-p* zq1df~CwB2Or*J~_Q?i~6xhRfogZwm38U->jP#piVV2Pg)_E=6%@{OiGO-7KvI|vzS z`7QI>d~5t;Yk+a-u^1dXi-zb;WDayQ>Ov(!p z7nXBKD|#EmMKeP|tEGVV zF8Lv*2v=w6^g)Va_Zr2BETV)MK4q4yby{Lw4YZg&q%RYh0=c2~=8!dq7$Q{{LEB0!_881NK#wnK z-@5yOJOdx{tgUQkD?B6sY}7m^C^szI@47_)how0op1KAUrxdDPwU9N~qFIEp z$j0o!rKDl^x8IiK%;8>Au0zDa$b-ay%v2CQ)oWyz&bZs0TE802qFE!o}0a=g!n;@bu1IHjcGE@Cy+tmaNqvARx zhlumZ!VrFYI&rB?qb?zY3H8<$0^4L~dkzwqA;cpfYa12}{%3mCk( z?SxXfO5&5hP9+ln4%eP{v{4i=3!{Wzg7t`?r>ML*UZOWbgaI~h@p|_}i4oDIF(4$D zoJ~4n2)XoYYklfYMNqAkIK6uvm38ap+zXL^ekyYMXqS|o+fq%%$iew`-C94vh0cQ| zTAbipRb%70(}o%<$+_H`XkICmatfYvyz=@UDb)M}A^QKU2KdFy@UN85|MdxUek(fr zEJ$96F+MYjNTBTvuBe0Ohk7=`u+(xnZtG~l%e9$6GCu~kgfWEQE)M1LCSxaJe^`Zs z2z1Q-u$zKoHz8-i`O50_=Kg&DTt-y;e6)JJ?0-AoJUktJR*b#LI3;Y?%*eW?cKN!Q zfJ%Z*1WeVBb3V<``CNC5B&E;Cb7{P8FD>x;uyeoIXBp)u|K-9_dmbN1p3Po8v?(V0 zxmmvBv9Xo+ z{yKX5_>!>|IKK2(Yc~YnmyL$Y3-FKwUuU;na``M3*6xbdP^led;cx3aJ8!ssO`DBF z3|*UL-xQ!3w_ZyC@PN%2kGFTWk-VWRTB-;&jD;E<9KUWtFf=k>7T_1yp4ua^l;C+0 zpHvgrwHws>J&%xS8w{dqZ98@^l}T0~{EB7fWcdJ80d-0(JS#aZac|J9R9UX(06vb% z=SBH1cOcPh{0kKxlb^uvYnz$8Dhn;tU{j<$-_HoDVHB(>XEVel@i@&qAn_62Fk;~t zC9$HgT;f4|)~WX;lYU~hTZ6>9=8VK2>(d|jNqmz{X=g`3SwvVSs-3|z0~F&0R?kw% z#n5|9U(f@C_$e)%BZ)M`!xwNp1W$PbeHA$&<)Oz?nlh_f>_%wwO}psA()@BnH1j0F z(qZTXDI$-n;~9rb@TQN4?^g>eeiNGb^&1*72v~i0887F~9>c zyVIx}-PVAu!1oQq9#cA@z{=D~c=_TcFd-*~vol0YB^k8McffKtIU3p_v6f)=+#zFl zb~p(dWKNOwh<`!!cS><<97RaJSI|j>*L1Miq{;kD`u?QOepg!PEW^U*qrJYyZolGUdoTa5#Yp3{_mgC?>(3i$X&LHsfASKXiqC@493-BS_ti2nQ@|qn;O{Nam{53hJ ztooVb@CC4_G-~RS+l~T3lneEj5DEZ(_Z!(TT%;K4%6$p}zSUD63tOOzuSH?d5qeyt z8S;JX{WqLv(iI%M?kBj)Ni-rS(&PeKRAl^bRw2*=%%%RK)P zly79Xdz)QSqH2SnB%36Ge-x6S?Jo*E%0@m@s@Pf1W|?6Hz$wg9&Kr541a$Z~sDAl| ztaQz?^&7Fk$DO)^?7ST&o@XWM`m;iawuzZS4U$+kacvK-e6~CSy3-teOYSI-D}JaS zBaiGn0&?MPvXM1K-y*Vb=Xea%Pagr?Z$BHSPjIKrvf~jN>my^7>Kgj%;r-sXFYed| z9kl7I_G^t=T>wkFRixNzZsEtyb1AxvQh_z`LwsbjkU>b!bu;)wkPw^@z?3t2-8O`J z@$Va(Re8=zq8CNpQ#kn~yh_OK;^u?5x!j;2r@Iab`MzDL;Nl0WJEL75Z0lZYu~~@hQ+St7eR%@OqTUZcp^(#yAg1)j?Okbv4OwG(o#`M(?^N3{wy;N_>>PgUC z_Us8$N^pb_p{C%)844u9#Mjq(fRm=G3_)^>qy;(UQL?!xuPu$AZp{KVIz1T7GqKIA z!QPb3tHD?~iw7A?a}LWBKt1%8=qhdyVKJ*eRi| zm&Y(G(gOhMG?NEBAdkKWescN#?Sz|JwyzaI40F2!C8|vpU-Os_e>@AjwcE#0!dkbb z+T1u{w#9e&R@W}f?NW067m{z$B z^N(&-4U1J8N~Wlg#l)UIxgn9frPXaNEL#Qsc1-eJ*4# zG5`}t1`Zs}IsX_vmo|t9JQTaGk|DTiw^@B>Z8{{CI%Cn`$M#V0e1eiwM50fxmkU$P zCM+RBq^DYD8?WOB6(^lF>)}X_7f$=+!(9D&N5jH$c0;3rx(R$NJl$`X7Sqh7df(cF zfK7Nel>8g&@O9X%YLLh^GsTgOJY6?K~4|aa!J;J@37GR!%jzb&Jv8m7kO6 zc~=*I4vQvZpvP!X=fYunR9ppAHg@_nVDzVUZqQvAaW*8cLd6U}Uf#Rw@7`6JX z`*sIKM_=;07-$gvj*n#q$X*P`pDB8HVcH5E`l}`$|G8ple|PUq5skYR`#Te-ioUJa z5rgoP$Ug>^FR(@x>DYbYw)Rt(Zuv2F$hzKY6M9A&PUN}I$AUgpBmNNn0I^&ztXJQf&gGiO2CK*x6vJgnzriw= z)rHUE&zOWm0O;?&>keoxo4~y?Nu0q>!WKF>UF3}r)8x4Hs*fo~!va`s#|UG3m3HJ; z*fhutq3&8sNEe2iyIn-k3~2s`S!4RN6r`8QUUC>oKet zf1ucL zX>~L`zGBJUyjt|jDrWnZTU#G$pv~f#G*c)=LjQ#UjTAN6m2Sz@ z`EdP=&B-1`aWWzhkh}3O-jO`{LsTG+btndtgvpl$BT5k9%^l; zwQC~{sy+-Ebe(K}x-I_;+~4zt;c=J{oGWpgCyA|ZMv&Mb6yS8<7DH>vw(;Yxik&@vOKsL3XA~kptL>kEx&u5HPp|aF5<(wr)qQ~={Ul_iNF{q z#suV@I>^|+Q{z)$mgt?Xqr0oTCfuj#!WCpB1msF;H;mR%NR#U5&R()p$Z3#<+iLQC zhj_$KKU5g{?b@eZj?Jf$SS?wTcfPCQdO;>g+qDM-!e@*_U_|-t`I(FpagZR*?m+y6 zCSajnG!WrE8gVlaQ+E{{J4m<5k#K*j=_M2{Nq~XOa<`;x%)w5CBtPEPSQ+TZl(0}y znbxn+F>>ThQqr`FB^E$|J#J~nEfJmNy(y4Y(a|9YhrAQ!6Sa|4_!*gVi{gi~*eusn zdD+f-ZHAJi#NLJcIf>CRbQHo=b>=ToBtZcI{<6^xH)XQql+}v+@jSEDx#EKvA-~S- zHG2~k5qok*Io=wY-Y=w+oOt9WKqLA%y)N3%D-FTNWTYmsVkLoN4hAAAxZs}_<=AZ< z@~R69vb)~lY`s;xAX!AVX@zLT`$)t5nsX|wQg0XNMzBf(7C_CYU6ce3HaBhE^IdQ= z=zE^c3iC!XT2{EQNG|#e$tmK;qGp@}Z+lN15~vwh6tPRc=foj^-E3noXU;5&MVd(| z3{^a|XFa#YW@}$GgI{PTN6Z}P9=FzsC?-Ys^I(zG=43I+7bfb16cG>URowq8q|rc1 z|5@w93^3pix!L@yo~ZA5EkU+XCf%qW;w5xfb&oo&vl&Y zwG2R1)?Vz7oIFM>+4oLZ0b#wk=#FPBZpjm8ItqG(5SD|#s%ay#jK2kH!ZZsZ&-C8? z3qU(BlE%|FPa{wJWyISC8({5TXX^Ga<}4*bv=TcgYlaP10^`s`3Vt5(<8!BjU#un? z*Y~u0nEL9$wwh9Rh+RzsZIt>DOP7d3J{^ zy4tzxTjUmlZ3Za*qzlT#$va+JFXVU0t`iyIh&6kik&*It#o|tv(RO#d6e$Y1A_R~T z%u>(2bK{0l_m?d=^nf>l+K`Ytb6NsrK0x=YiIq2h?{nAEwq7Okb zSuUE(>2a>yOg((EGk(5-^06?N; ztB7TZPr?waJal@UF7pZ})gSKO5*kRhyt}*II1Q{kH{#XWfx86x0KNvRe7ZZHEqQ@{ znr*@uwYb{9Io&rmZdO$c!c8DJc(BWy8+C(CH$R@<8ykLgt*?zA0Y$5Qv|w$@To`>< zwyra4KI+RwS17>c4 zuz&}DR3yW*El zUhhQ&Yl&xt=ZvCR3-8dvsdAtDcdWO0zc&pE$kk&%;e=`<@EeT{*KuE zSQqS)(q6tB&z%8KeU)pcxCRH-UL%(tynM-dbAkD2ulMmzN2mt!hNVa#@l(LkCRKIa z7Ow~|t_pW~Gy}a6B9+~>euBS*Fk&?48srnEkD<_xZRCN_mavZL)cN>~Y{X?7CuS@! z|5+(e#|B~`+GQzM1uHOtRUQVGdd`G6@`=y~XnO(Li{x*v%JH7wZT={T3_L~70~Iht zlqHKfLPX-UfQn*YaC($wf&fF~*sw(5B5;(_womlk`~|7$bO?g)!aGQP_ro0Rm44M- zpb9H~zVc^Ge^+#4qsXRFJj!L%urqzrCOU<*f}JwHO|g3;h3z@6=0^3|QX_1L>E2mb zISeSN8c{>^Y}(nvTu27o-i2ezcErXxINr}Fr?KCtNJ2O}1~6Arx}G@-MIR&RrAQ6v zQKW&gabhR<`IaCBQ+_e=U?|l)8tYnb#|vtfy?dGYEo3D~XmLmazW}K>9lQW>6?3l$ zE`EOD*3zYgSPFawF)t0@Q!|j$F)pMP#Pf|6Z&i*&#%$KG;0c)+ejZ)ai=bHeU>l z8sL2Q(xDO;l8(D6Lm0*+pp2;<>z7~(_?xefGb#@fkdaB?1fVapo~49(tvxEv2Hj z0z(obgu*Q=+~sI(dXvFF=A!OZ5WH@vo+fAs&xs{g5}^4GaBrsHk~kN|UOo|>PEiuy9_8%r&AMi*e|}i8UHYktP2j2;?<{vPZKIjFv6g7~LO}4# zK#7<&5JX8BI9(-l<5>oToF6NY4>AbYnix89#*&h?rj6AQHUx=d%ruJx^@y{#mnlfk z0OJ?k<`10IeqWDfD~rhW{EQaefSPsY_3X({Qf*wTuqM>VaAC}m>XQ#?DIjqo0_%jN znR*kXnGr?$Y;eY;<_m#mu&V=Yr#72T+$ZVwG#a3P{lRlbb7ICnR|RF^USv25*C-iq zz_=L>(mB_bHo45_P)>~1n5~e0UBYswL(#}X5sIS`93_yq;wgQh=LRMyACk6yzRB2* z(YC+xav`eHWKN6*!duF7R6d(;P;0q+U~Mi~BWs}5FiJpeh+x?w-Z^uHkuq_MsHH&4(t}PR<6I7}ZX|{vq3tL7~abF{IF2i^EVE5tmXK z=nq>Ntrx_#N7x?-Cz_#Y?Ln$#i&#(9<|<%hW; zS8kUADTAy;*iCh30z2XbdW;Xp-L5YJXl$DI;0N8nyDO(#4aOUklPrI=g| zzdEFC-px>eaxsL}3bJJcWcZ45cs!;goacgBh6ES|MmXeC4u~YXqKSF@1zK$&F901U z2(S0&zeOOEL6XwmojKTI#wBx1`Qv$%gka}{6I65tc#1m2>Gz_AOk@VyYo zk|k_AE=6Su?j5IcZec-)L*#-5mAT8r!-v9eiz}dzMhMVt-3+0{2%*%;j?8f`JSq@+ zk@3=wBcX*M3I1UrxXrqA3z(mHa!gCSYLAc1jR{1;mNR@^C}nl0g9dP$P>r&39k*a5 zx?cvCe=XV)LPTv~Xm3hx2Ig~fZdM2_e0hVU9gA#1$`z|wiuXW)OM;}3l=(n8X^B@E z`B3~os`>tt(lR-08t*yB0gxH@WfEB@p;K~A^v1@R?{2usZ~M(R-}vADVFF-;`VN|8tF#bJ?0@@*)3u3!2W0k0A}qp-+PcxF*FfhArP?KcBXakmBnx*F)Z{ zEBDX4sxOB;a5MB~7IOlGAg|BY*jgwQWd1oI0+*;O&x{n4^ZoQ@?TL;_D7fXAOJg84 zFUW12FGsl5XaVofXmsLfB2$PiFGQ?_tNUJ3a6g4E19%x<5PlSVv?R$@^q`f|m2}Zm z-;I!Dm1f?!Q+1mGIr@?S>10LJ%?5{=86<5kEMoE zGr09H2MeUwVT8;Kp^jct(iLTKZIN+t%Ek^bGz-rh7Iad1LV&g3U-iHPM|Xqw35Tq^ zx}|#7;EE|{CudG+9L>$rr!VQk4@|!4Qt-MFG+=iI>l=yI(m{fpWqat_?L~~#iqTTv zAseUrN9z~#mojC} zCuSYSw6=mm_uzOs@a-p!CtFB~1x&BsB*<}){x8PPDM++nS<`LXwrz8_ZQHhO+ugfu z+qP|+yKQ6oJkFiD5$AEeR76!|RprY1^ZTjWSam#p!y% zc85#6i^T4$$`I8S#9h(iY!5C3{S%)i-qUGZL7{n&ZkX`}H=?|u5 z+QUJ7m+;NIrxwdDuka<>rKoJG%MVDjSO zidNPBaTAr=2!P>u@=E~mP#&H4u_NwyWL8n6rBy@0lO_;Qc{@_u_F#7WQFYvLzgDoT z5HHk$A6T%i*_=j1Neo03VKjC-zi^p?4JvxAqD?}nXfx=1`)0N2xJs79`?*LXfl>kXD^I$oM3*TO9od9eVM( zv_uV9D7$+IGI>GlQ<|_X?fK5p6!}q!q&Y+?CDd5-Q8ix{=dp2%xsV99ORL~qz+#cQ z*I}(9|F3ybaY3^?WfPeA2EYu$@YVSf3)JFn{_tn z#udRQ$sxf7^Nh=D<3IZ>SY{%ILgA7Y%(^&b0TC_Pxfm{s72EGsfs8FYgX1p5Oi-wQ zkR+9wp8ik}m($W@aoy9o270^zsLPlYlikg@HC`b+j@GMWr@@4n4~gqq6F!Cot9PoZ z90kufYujv>4n0#+BaM@KhX9vbSTh0m9D`oaTskHNkB9aVR0t|FMuL zZ@bj?HX_HUb<`d1P z%1j1m+F;bBbpoy#1E|{?)E@lJ7nQ}G5Jjz{kCi9PCmkwaDEP49ISK|tr^^jKXo<8d zoA>E zeqJ9-Fbz6U9NkYglyY~vaN}POC8RAjs~sN%n!bq^q%O_ZgDP=r2uM0_dN-Z= zAwJ#sh?g+ht=9@F4QDN9w~nSC$98tbZRmCKR2f>s3JW4>+}{_{P5WX@QaK{=GcWRX zJrtK<1kQeRuDPoX$<0vk$|IaTAFe2$P%ZMwVYoIQ&y@=apsl|-;@T0c zLJ4nlo+-=!-8Lz!TqR#C9OP2KCaSfT6|0la+`v2;(0w4bs zDGx_H#7hOCLCEL%MnMa$O#d-nPbg*)ocFt#iKo7r+aSb+5|sCk7n)hmW^QaWqnDBW zk=E_z`g(nSag%s|cey{=-aMKf-tYfsr$MA-(0F9%=uVKd^hKVe9if~-lE&2D=7R6@ zDpjJvABNoumh=dho!Lk;YrgMa9az%&&H)GE9WD*PK4MIP=gR7v9qnF!y zFe#$V*32ilVmWOy#G!Z0M>+MF(kl)oeIAceE-Ie<*)Ki(G1Lj0l0jvZnh$glV1_$V zHD3$?9rQQWOs@im&gVV4_6CT6tCu6_0Df(*5W4Kc-y(NII3*?N!x->|N23;xWIO@> z++_7;$_yHY5GC&t|BfLIX(nogRpa2J84OGLdWE>U$v(!iT*MK5zm2AsZ?dTQ!Cdsy z0aD#`KdGb!3;>cUI2(Xwb?AOPu3(L{eJrf544xT+wO`G5Is;SgXY3li=Z=kiSA@30 z?r{J)h7p`lsqFa#!T2a9Kj>xpliGBV^#OX=(^Q~ese9^)PZW^r#xYzSm~hjl=KH7% zC{|6}o5Q@ypnF36a}b`3tStiS8g7QeODZH+A!6}fA_mbg`pI#>-QM}K3#;n;%kDLk zCsZ9C@e3Fvbu$pn;(nOJ1yjOSzaaBDKL&d6DD(6{6R|+YFz)LMek1)tk`%F4H z(G@^7vCwSJ%HM14(J+{H;E?l`Wyqg)Yjka1|Em2qd(Y zD|rOLqOz<3{MTtL8CV7)$XsPAfdYqp)1VllFiDeP=x9h2k|z`C89P=c7pvhJxka%O#D|g1SVr>y3^G(W z-#*t;TS+KRbJ7aTKa+O*jO`iWwcl3TDOq8+MIZhR1J#H4e7dr_v=OW0aV)ylu#Y+k zOAHj#Fz}dz_a{D-I)=rZYl9Y6oLoZ_WRJ|Idhi$ zzu%>YH;S2Otc;Xhh#4>irZMY=Rx*2+FjJ94%gzc=M0OSb2(%>gKreyfu`Yj4=O=3i zB@NEr0-4HBRSIfJri4&Dh~{d{VmcH*XeawnLjy*T4g&E09JpDe8b$j~i52d3g+0eU zB_JwuH5P0|eUgcr!5zXx5d~jg!jO$N>$$)XCNfuL*7}2O_5FPnWEes43t45Bel?rJ z_eB-n2n|^QK%(HPvqycbdybleB-?1CT74p)lu>P|3Zw|QtVb=JZ(=2~k!yZdH>S+; zLu?cK2yYf0WPsTlMv23=r<650KL-@swA#fdd4R4_F^C*IzBKNSFPc<5G8yDeB@x}W zNPBJYVY^7IBt%N8OaP=%QlCeN7nS{Z+*TOkM&S&V7JshWKGSgj3u%F!TtCEYiBwc> zso^s0dbUN?>JBo;7$ro_L82qH@HT(Ws}yXQi*WtV z2`5%@s+*Ii;=y3-j0&~zL7UQf-9CggSVNE^P4u7cNjtzli3e@-Rf8PnXgDqJ`vLgu?|Kra*-R<~;^Y^01`O;S}x(NsyY zLND!;qL;a@X)$cmTzwRb|0?uuCapn^6qW=2#CRo-w};`|NW$3Oini))an;7h@HONx zc}kzOY%bFcmO*CxqjT%jJcAO{uXu|ceRoeYZ5aG~WT$k~{z(lPMuD2&%esHwu>*~@ zV|N5b#VT6XaXznxTY=b$T5GkB5?QpnL!!h}SZb}!l)da2fNTAgAIweUn#bFrWB2wH z7K$>ll z0Oq53@;O~sB_0ugg46;}R%By{woK}{bf2GPPy}~n=F)z&g0zEZXnbB#W3(($eS(Ui zfr(=a;0z0+pZ&(*@??;=v6tuPV52EaDVloMyC5duUK0rLa=S6PLYf5sZP+;_RPz-< zw}kdPB^ywgR5mRFijmGXE;kg;kd|r1)=8Z=E=Cf4>JF0bsBO zpSJC$66&1dnlWc%chgv0bpW~tj%YE0JfW{$F028jhvuD`82smrtH_Ia zmyf44l4(3$E#-tjKtvTa&K>^d@D?rV!w>ytclYQ0F1Huu_?Hts+v`o^>)X}S@#Cd4 zrkLL0uC1##UeNSoJg;0(%WTfCe zwjdN+cV2_c`*)b)`n!ZyF-$JT@2<}WraU^HaAY9%+sJOzdgYmE@E9cg5W4QS;N=*J z4ej;j-PyeQZ(Mgp@5+R+K8<{9=l7N3RfQCLzWi2=@&2*2`w~za;N{;#cK3HMes8Z? z^jrgyD42b27Gfu{X?KfXj{dl9=74!L17gNjpz>5;Q%qR}BS9o!{euFRn}$z(A?~+h zUC`&TR$vnFT<(>P<`~c}@8M!6inodsVJ3oa3@UdqSW|I46%*B)HLWtpH>?%=Xjab7 zlQId8)Ot8GKLcYiw_`RVveHO68IT`P%mpf0=(nktV^d12;#~5U)%*^~lH0s*k2w}5r2U1Ej*{Fs&26W6Pzxr8F*T1huK4Nv} zEmw`1zu^e!2iFH+y^X;5a<30_VIjDTjl`~6VoRw+W_=I6QX}!IiWG-(4HV} zT;{HXn$P|1N*pJ(vOBBDDeO-%CYWil2Trj7|s zg7TRYG-x=ZpP5uB&mEwLmz0%S5GFHFJ_zg}=^$=~A@`D;d`DwIdEEk<^QVHDO|DET zDy}W(Pa?wsNMPE{5_f(ABGb7uoc+uFbQ=^~2UzAm)u}UxinVAv=vF21jjK|E^bc$v z0}cmdSvW!U^9hll7RWy;_&K=V+E=#N57(#m%>xQcLAee|gcM^1Ry z+d&ETv2ep^L^!7clm6tPAED_vxmxisqh8 zKxFHHc_Uc%NM|$42!w80!Rmw$b2?p@M?fu*S-osiwc|?N_}L%E<;RwYFBVu2WEg_R zdEc(!3VVqoNwE?iG%4RcOIP^B&k5?a;8oW^pD zVhC1j$Tl4|5D`BpFX|`UyTb|;96-VK=CCiK@pV^Hg;(JyB?@pa zdeKOL+3J?Lu$(U!6!FxWu7hl-`=^cX|F1&v_zMA=`(rgls+fc4Io z`&u4hn_Av({eq%Mf{j=!uaN&l`=h+cMmP!ajO5YiJ7eKk_F~u~>o1|oy==jkrctjQ@>%zA$dJK;fcWy`Z%Oa_$mk5Gpzhl3$ z+q%o!DFslxF+Bs*oYgi%$T-!9ePq`!%MZ3gaQX^3n?EyKOF}&4=ClURJO5-PtTSJT zg?zUJ8FvZBcQm&}eCFW?Gi8fraeNksgKY{(0n;cF}$7EOI`&lW4r z%vErsk&SUtytVYR0u;W{m10_@$D^tLecG^ZgWJdS$mF(1Za=mbdwfhki-r~^BZ*at zU1eCpC9YV0iv4H)!)mWi5!hrD?f@rW_E&yb_4jumB6bt9UmJOx6aR_}5TCjtCLn1H zjz{Vr<_6)48E)x2wbc=DiR13$jk}h7HD&vu>5KIV*0Z>46scAZ)4u_l`)&H>;FDm) zwZ_YirGJn}#<03K+%HX5J^{rA?GzEH;(83?PRpEL@81Wm3+^FKN12AqYx>t1!_Y9l zh@`T8&IU%s-?mJzHcB7yEJS%N3!<8~Q#I?vA(X7+q3SpfGb0Au*ZTlcK}G#sIMUOw zy#U8Xy6GOLa21c_ugFQ%3&rR-<^5(jvgoW>h?_Jgb7c!Y;r(#e!~d7W=f4ENa{fQk zp8o*%I1swQ$Nc6f#r^4seIpcG&hqg)*Fd2z30qAK+F}peTyO?m7an)hgf!U1>T^;W zqC^1t6If@nO82L*6W8DPe}Q|a_`6?Ee3QFf<2yZmY2DpCd|W?;W5#sW2|7DC_~SG$ zeoRi1M-#@f6PNebuN1Rn&TkK|XNwl8*@020 zy=)})srY=0LB@$b z#0$0K##b`7wKJbT+X2duI?djK!59MK`5}~wkP(745%J)5j~Qf>=~LtZDReOSL<g&iw00bRKEz-yAVE>@nIxUcS4@sxz1@>`uRtQ~m7PF3T zieu-w|9)GESGK5fY&wE59sm$eK&DBG2hU^L0iSI7D(>+pr67eI0gK9}^;uYmtW$fa z0FbN}NXqImimTDYTw`COC6}r`j&U7*K-P=DpgrC?itEkwO7SyxkB0+9?E1Ry7)szp zQ?TuKG8CiKSStWrnC-|EJ<+qt$#}wmyk7N#KVB6;4iJXyd^OP3edB#`L%>)AbPZQP zZpMR;y~yZ`W#K9cE+>haam_TuUp+q$q(BoKxI#O2hXGSyVy_vwdNqf5UIUjA^OyZw$g)~Om$u+_h03?>r5Dk?ggde+c^t~^Sf!Yt@-*WusHSvghsO{JSV{W zpmGR>k_tNTenJC|*t%OG@Sol`4w5w)$||cEcuz=>M9SafS=Wb59(?4DkC#=0As*V! zx1Pwc>{(m;b&}YDRTKHO`^WXIgV3SLR`H6&c!&K_tFYwT&#s>PjA^qePp3mbQN++l zJEZ=#H6)cmI$zw^A(UWNKtBD?vj|||z^kcx@reM~0P#mC-?ZtM5;s1AGc?Mt_Lhs) zf-&B`%wUh}iFJvBr)PJ+t^I1c=WXkW4Jm3-Kf z+Cm?LKtS!NE7-us!o@lIi#EPt%9{~Y{f&L1YXb_JHTWXcknR~Z?u;A+u4dLYYafAk zMsE`{=GDyxyA;9}nVRzJMFO^8ODw(K!L=l%my-u&4lG8?h>zk7D~|W~mWuU?IUcws zWVu?WX-J`20}+C-aUf|yX)h=U9#0YAC?U0&p&Tnaz*!Li<)zh>_c}HBDL#1cAeHZG zdkT|n*zp0TXt+{;x6wX~fL4I*Usv97rLd-9Jc_2MF!ZE+rb?shR&a8YnV%ttRq)Cc z0u|I@Rh`WXVT6E6`9yeu-Zx-}a7tuHK$BX(fTmP-_J>7Hfs3YTM-ls-%U0o_lH?*7 z7C!G0KpEAsqe2N871(_=@XJ)|slv;FY{^Qg_hURTL0K}bA0Rj*#EJhi)`;AZPp|7p zW>>+T^SJxg3`V)Qg#$UEihu}1ERd%#nYuO?{q#0vUB3{NKU$*7@;ghiQ;WPgUR9XO zvF*^*!;GO*s$rF$+;luks`00@;;t1L zV!w3mZByCHLAzKydY)Pl)nZ%%L;Osm&gO;^cTX)q$WuNpI63BI12(sMa#sG6`ZX#K zH~3LhvWT~xs z9^4x!d9kA9YT5gA0!02f4_TT?k|4kyoQNn;tBYheBjkQ)F%m-vnD`qHF# z#L(4Zggu6BO)lf=@be{ZIf6xnCs`f|RACd5{0bB1EzUST+?xcCPuJu7eb`F!^+@^l z)H*v}n^sDW{zHS5UC|{@S1Tvy{7dc2P8KaDlaj1Xn$&7Ld-*wQ5?Ae9Ok&ZP|D}iP z`SJ6blnbAN}yzJ z5V1`$LE;kUDWy!L6G~R)6-}i~j~L=mwFBHiqjU)8<-9P?BO#RiUNO;QAjD9W4Te>S z`AFB4d(aJt`Dd_yd3U|yIz;0-gi6zO3!z0=GI*4lkN=(!^c2Z(kdtydvv}vc+$em& zeYwngyTEk}i}h&r@59t~=JfBQ`E_~-Mz|$pnt4P<^%*3u5TUOStqQID(T=ZDHW6E7 zrGvO)*-GrpG-VIG=cN)ewl&2&bNemsezoCdykt6Ig zvPw}i(qUD;pHRUS1puJv6(T1byG`und$Ew5+;Ljn5~rEP0DH7F~Zm*Kp1fXHdxv1lglS$O-f z?KLr7{S;{HmkQY+2Xk)z7_8zr=&piUKPjo&nU7qNh=$-%+BzK&1;Z=Pq%s@ZEF&p~ zIM$%yAJ7C{vS7Gj0hif&C^dl3D03z789cW}G9jdKSk!$aaaY@ziBZ)NX^GLpc$8gY zv7GBKQ7^u8Lv_!tQg1X>q8#ph7wUUv<4iA*%EWTErD2Sk3?Cv%pw$_fipcp*CS@cM zi(~e6=#sK0TLfi-K&Ui#Tvogmd<1&u8qw*}h{Bw2_IUN6A=|kg&lnYLycs zMwk?s$EJUhYn^1w6Ph(Ipd|P!Nf3)znoRr$cB`m31;Y)Xnzh`0;kQtqe3j5DPpbmJ z6(%JX*Ndj`2_}D((YeW8Ozs1F_zapZoD}2L4Rk#NYNwfo0GvYr*mXeU%Rm~alw5pZ z`oj17A_H*ThIfFRDK>y`Z5={&r$S(bxh9)&Bfz{?g@a%N$Zhf9ZKc1)g@V%$19`5y zhFr-#>hirDVTQ>6xLV@w z`|jcn+MG)`S87l^RzeM8hY5fvQqVR0fd^EKZIXtJYXTH2VVi9X3-PrIB$TT?gn?Aabm=qJeu4N6enK+dKWw?FVI792F;C<~1cjT)+V#NdL;_%uUw_%3)q1B9h23$E2q zsBVBr2WXYqGD7_wSaN&UafM`z+3A(~o&?^4=@&ue{MYl;&vzo@(KDlTEa_Hitr7PZnl7n z1mMHNhpp0L^9cH+jaHLmUk&?-Ni>Q!j7%d6B8oTCI(o0a9_9t#w*}$-4ABbJE*N>M zp)aMJw4&*0LKiKbWJr#x7E6zV4XtY~+{;h?!kz65Yst#q4h?+$H%yzJyc!VwjOXnG zNHi(Do6}=FRclh z!f9^lfa9&Huwnzkiv(zCX{6X%3JfGeJ+}eu|E7Y%-CibaBY>azc#P8`IUrIL%MhZ( zRvV=!-r=F0FtN8I3BvLq>X>gwhergL{7ZIl5}5-rG(VR{H4@@eVw%b@+{Ui79)EJV zBLee4C%qh|27UDOd029B8Qne7v zk-XiQV_@lV`C8u8g8-5-O6o3!$?ToxLvoun_v6ADyUYxW#MfBumFlX!Y8ks=V$uUz z6ovGzX*mlICYkEi9!daDs(w6478wfN=#?_-BI*!H-?}-YZQI?zt#@mzXbQXEjaO)3 z;<4$WIaq~Kk2Ha-vkH9b!5lDkQGvrhH<>&X>W9XBBhCD$3;Hgh<@(T|B(|7Poz{6C zv*xgLP>*izIcwZ+W1noeeV)h}sCd$mVku|dgT zlznj*G$$>AU9;(+B*whOruDK8u6fb$U|tXaCiv!pOB6IqP3NT>~sWixOOnw z>ebHZ0v=+fH4YBj+Gk&y8^H(AGp()eDnPuCF1`VB_Rt0#XWRHNA;@ki%_c_<2S*mpAs*15sh|Gzrl(NeEj4sU zn1uBlj`!ACXZvln3{;9X4lW<0iG4PVSh$r%-G|dy>6iQU)yq?JYC?AQ5sOTg!{5FF zaxQ4!0gVE3Ad&1G*0Qe2x4D}!=c{w+E-elwGaUyr0na7`h-9$wb}(kt&AjVj)54$e zU@c0IpUaJ%KPYI>Dvc7Bm5!RAE`(&`w~@idPAibr)eb09i3jl$Aw)5-P-qiULfFeQYGldHWqt^98C!e|(^gAK73y zZ2ON^-A7zuB{F;E_AZ%5?Ym$|rC!QmriG?3x0k$c^nAc{gUJ7IXd2U@0`~JK2R#ku zt#wkRYmL6WGjIMDdErP4!7$q|jNGS}x}mDge^eWgG@+4YHxWbb-*eXtRcHZF=5%!C zu~Y<{1fUK;`}uJv;h^@pg`17;*B9rxqW9yc;9A1B$G_G`A}@?6PqgPtU15+5zDGp>#CV& zqaIoVv%4{EjQ8}oaHBn?)b&Tap}o~=C-|qm>4l(ZqEZM96C3`=18)aoJ86maBh@Y90`v!OF3L@!O>M?7C4d*6d;|KyCiMf|unXHRkN zbM+M({EXdCUlz@=89%js0(5WN`XG-C0DN^R>B-4-j|kPE zz%g@i1V7O63O(w6*&cZh1J57+!w8?m5N8bH7o((=4c zJ0s6B_ljnBwi$U9ap!E|bOSQ0Fr!j9^L!C4?nlCY@S@^Iy%P)WRlF~I1vAt|z%6GH zAulGaA1wO`tu(*!DN9s`ZW(fndP@_3Pdz)Zm4KLH78CF59Ji3?RY2l|IbDw$7$TRS zcOST_nOCI+_6{g)v_#t;KnaJ;tk+Wkr5;yWJ2^TFEwYnXs_@@E?1bRVxaNRMHbLEm zRh!$xZ^v~=+Z$6+VdGAN8`owUP4R)r-&!jdoJ!!5r6N@Bxde`ZqtDr{9FX3N(l;# zCU|U5J_jFFsp*h{iZ5mi!D4{Wkbji7)SkH&u{%gQ=OsK$Tm`DN$XS0(z1oUriolrF z9Gb^74J4kEf%vhy8w1pxIi`^hEmiTL!tqiY3#)S!EtTlW$5KiPL|pQAMy)JpNRD^r z$%o03+7zo#&}Le-bp^Bk2ZXNeF!5$!b$L=${ssn8!n`ADdBK_!K^2q=pp`J#r$X~Z zIiw(gI&6zx)ClhH2B_hjJF2-o=G3fXF;j8WKBRBwn#FGTgZg$th>qwe zoH_EjjM?oNfm`|n)~H}D+p~R$&6bMinw$qvm(RBd?3yq8ntGtM)7qXOB8AAkkh!8F z23^`E*GWB|T@PCVVdTBj{)Azr&3lmQp;rZ6`A@-?G{VL(w4*M^?L&{IPDORP&1zejQH5!R>s;KZh_dU8X_9d6@qPprvJfqN8)^!g;T)s;lf6qE2_uYiG?%U*B zUizvexJYl{v~sTIi2ImEW-cZR$^3^v8|2_+%9ISzME)>^5vQrOf?D+iDt=mff3vOwM+o$CANS6%3RR~f z;{`&~DDU95fDN08tmx-?3AD9Ww_OG?(WpRBlcFW6JRh`!O~9^<7PN&0LvYMS$bu(` z@N_WW$f^poQddxNmjQ*ttCn{xrkM#EoU`L+wHlIl{9C$JjYO6S+3aCch1}@PRe-xrflWNh(VTt*Lb-W9*QEU#(i=gedD5 zAn2bDYf+@rs7j_s8B{dx9llnbo$%Z9w3%nPR{oBjFEpW1SNkH^vTeZ8Hpj0i!M`yj z6|fAN3rkWcU_QvsoBaEAf_%*!%(y{Fpvos;!fwZ`S}lrQ?Sqe%P-N0Rinc8 zmyMe%5;J905Ts?Q4M0cJ3S2dW=OECk#p?BO%CQz#{1Vd3#6~rDBvp1k@t__ZepZ@n z&Ni$!_K(7wC4<F07ufpF_JpKJSMwUN8>>eRR9M z`!yhbI3@=OP$EeUkVqnZc7W!?^gJ*c!%mK);(6yzY5wu~y1yMvW->@GT=><``gy$_ zfFo3ZKG>6RLJ^rrd@~t65awbu+%be;u3OusO?u_Obqkh4r}2puz(!{Jf=^SkD+qh<&M>tX=wgdZHQps-~-Fa;sLns)qRKgFeXo zia#+=maCZ;uAEoU5A@R3Cj%Wt?RwjAXOF`a9eA5Tif6Hic*VB6v%kLN1XttQ4E~dj z6P@c4TR5}7FY!{b4b+}cTA;Y+A^kw*O6%vX4$}LmQ6~$VVl-fLg9{7lrU}wa;oO{G-rVcM|LZ1jHVcCs-3`I zpgynaa_A@pR3&f!G7`O&c}M}k(w49Fj;Gs0f2#pG3l&E} zOfa#>CRcqW0IgsuZlzTng_xX0&Q{2F8=B$~HjtXxWwGYiyBSZ@m&OBY%fo+FJfCBh-3yqG@>0AA<-)H*&Q zI8`lpE%4N@fcu$_Y*8$TqmgAxeJHe0u=GIZX$El-ZuT=A!^r-0!K2TvQqGG{VZ201 za=`4}qT`>Jh$eUOxTqXLkN|%o6c)07y!jwmP872P16Yd@>lcnOi))Di{`r{C79DTC zu6h|hwHY)~kIF^ny{g(|3-otT-+k*X`ZJR;>mfcFBk{oUJ-R5zJ}Bc6n@~kaQJq`% zX9r|C9U($vxFzaG-!<&C8&o~ov~9x3MV^1~sCdFuTx#a-u4iaK}whXVT1SU#;6Gec%Ws?cx zx|~93vd!8ugmC_PU6GA?D(9&er$fecFUu(FJ&YGtJmQe)EnxdU3+beb7mO;7;#O&_ z3>*qDyqK}E_3V&G06wS>X2&o-)budMb+WdK=gtRJbesBKr z#TFO336y`W*O5oevjN@u+@Thru0hzK7Jx`UP0I;rF%}lQ3Fw!5%s;e=@C0+xIRG{> zLOMVFLi6U4j-yc{`m`qsvYT$kW_vs$ZBL0l*wkn1?UJS~c4zkfCJM^I^BzM<%T`(0 z&O`I)51(KkKwn`Z=x$l%{&cy?C+00JCC4@~mhhrojT`cFK;*PDdQ&lQK4CM(h&I_C z<$!8$G%dyo->iPp>;i9m07FfGcyq4;G}W|R5}QJS>n$o-XY&Oa zdET(1qn0CHS;jro+1J)yiPbp;rL;@qM;Pws9FIL3@h`%g5FDA5*wy72y_0Q{^OVbW zI_|o|X|MsAD$Vr#>(_|cvzAcd@_u{9zod9`P9h*3G3RKeU?#^~fZIe18-gs5@Rbj% zo~I3b3Opg{@K9^Coyi-9V-{zPZA#U7o-X^h0k2qX32@Y5HtcCk(=pD*rH~2d3PnB_ z*QJ}@e5n#LpivkVEJ|9%AbL)H$N^dr`dG}AJ@nF$I^6Jh#%^puKx8HBBShFA8fZ)N z7z6fNS@(nBsz6cFxNqc}M&i_jqbcQIPs> zl}K6pfmrzZ9vNl_qe#o*?S_Fy9=x?(q+Au&2`Fj{U%NBNZ1JdWKEi&Rk$YL$R;5U) zfPnAp5i`T`SLG>HR%B{zF_7sMNXl;JuK^m#LMqF@d?b4K5C$1jbPtN8Cm48>`Y%9u zlW`5)$zSN;iZ5-dv@HFAbv=y5tW|xHI#KH@c2zaaMvukrE6TA^Fq|&)$gir`izcZ? zVDnN@aZpu#yL!xHd>s>)E+c{<>M|jflkNgh4w$hMd_ai_W?{(A2I}@L{yB@KXVUO< zWI-cZI^Z?|n9e?UP#qZ!{_fTiBX3zgy+#l3>@V{#*Dc zpTNY5JtbH23iU}M$ZU3R92xYy`{ZdY;^%`rtJbbAhzKu;H5?zrhLW=oAd|C)>aI8iT9@S7&30=V@@?-E5JQ?JE1pDgStX; zoGmQ%_>;+7RB%?m*7Hx!&O`hF9-!?b+BFWUw-%90Y4KbGAa;(Q)5ezE;fL9TL~5sK z+*p^4SSkI)q`hd|Gjv?tn*5pqr`6DHCMF#O+A-DIM)UGes9gQ{@XR(_)+1-;)*JY(F>5XGZke~&Y8>g2tDQ!LL1R`yAn7U;Yw5WfWVXRLe49Z^T?l>i z92E~lP`QKnK|mkX@SXkB74pW>`J{(HwTRHQl?>ghD1~^VWx&fOp%Fc-^;psN;nK<) zi@Zl)XXGsCs#^V!Y)SRQMl428d5x6n(kOqEV|+?XMJ2SDrB+8i0b^d(?dSh6_Z7f# zEK9bMY=MOqGcz+<%oZ~zBTHToLKdEfkpJ9XeY#Z`-u6+7+QX*+L%#ZP`e!mf*zCh|C?i+#xZ| z%uFV;6|SJSb7h2UBm6fHP=WzUpvVp%HG)0W)!_aM)jpF8VHxaJ!~}YIHJaI zs&{U-#Sj^O60KW38z|%^W1BARJD1r{^YVzQf{1rtLQietCywuM*w0ONaq;bm`96e- z6?*+SyI5V-{c;>zil*I9(>bw9dzz(t*?wBr)a4<8r-3`|?Oa$nRX38Y0wIki7Oms-R)Q$#!7iPNcq!59V-4NTkCTbt1~hrsES8-3{K-g{ zh$C_uR;4{C6=3<%MI3#v(#&isJ*W8Y>QBe+Vw#`C1Fndd?|X#CD4WV62hI{gSbbWw z>ID=ju1m;v>qQpaHjw!PspOTj{LvOWynQQ4OXK5o` ztR<~!No!ILXnR889{dJx&)@+Mv_eV3S;nuvU5T%rI_`S9#rKW3$P@*53dn$2y#|PessCd59Ud9W!>0ID(w-WLaISo(L7Vrs z_AiXLJgC~?XqnF}kS!ZBt7W38M}x772WC3$jH&n^=Y~ppR!0tWhcsXuaN5_4iG*9! zDx#oUA}VPl+og0{)S4YA1UwA5npr&YUn*l|MYe`qt4r~6-Ji0HRgrv;rAU*p#*|_R zX_v+B+ejbAbZ?hSLfvT&@~RfI1@x*TF%>>8WXCKd(8@g*J9!9DjQgjs%jHgkb$68t!{})i3;LApjFbzt=RFbt7NW zHq)I$YqL9;R)$XLv$$vD5$75=Yf(&RC`ndqYRr}$HW82c^7SG*#yF$D(cXkOA20qTiBw*hC_pK2-9FfHE|6-v_R=~ zV+(tDXKcO%Poh3{jZmG%shb=hiLChhYJzIZfANV}Gm{dL!l^8c!Tst0X7z;NF1Ty? zFYeKQ-R?xu$pG-d&X``x+{Th#!PpR>Nx;TQ$IeQ?#KJ_!%1pq-#z@D?0{q~hV`kPS zpcho+=B8IA0KO*SX+S$?B z0&`26m|Gb;(%b3V89O-A+c2|pGSZm=tgR>sfMY2F9GnaRa{3O&HUI*SpQ*l$ZH#OU zEa0FSS$|Ct{;&BmveB_K6EL#^X|w;%{(q6L3^NB4E1jK@$=}dr`teo9Kj{9NPxN2X zW#nX_<76RVW?-XZ-0GKld;E$2xvZDI(wmFtc@_kTy3o(>JyvkT#UkcQQ4zGPj{5pcis5)&~HU z&o3a-Am$*3APyk5AdbM(1Oxz53PJ#)3d9Z|MnJ>_!T`bu!u&@k;3Xie4=|<>=K8^n zft87!0q9x=CRzp-as~!+U^8i3qyMCZoP({AlcDi{Z~A|VK(=2mn4edttbv6hz?xo$ zfR%xPUew&d5kSDg!N3TFRsdrMdQmGNX<=hSTO;5<1jaU|05bwsroSduDbX5?IR0jz z4%x@IhoE7kd=83%#{soAhh7iak^zp%5sXMuf!k>Z@%&KSE$ws&2qjYPTl@S$qnKQ^ zxqkW`$?`SrmnQYD$Vz|h^D3M63AFDm-MFoT`k`+Y9hOM+bQ7fcF)D4a>POi~t!4B& zJ@o>4vixYf!!qq9gI`wbhMq)fwO}6(R9*u}t(|sTnv}PB7cI7V4`RzJ_|>3pb>YwBPvznD`dTd$knV;uJhFz_y!y*;CUZ{qL!JQ!%Vk8e=$l z$11JH!nmZ>?~{7B*f;!`SU+EjA!zX&!a~pyEf@9Td*g?_{*9uX9^zK{vo`E)B$-XA zW_8=}Z3(JPPb*3TW~Abd3HOKu=USS+K-ij=o*uBsGV!}H^#241KZ;JJMq^bQ)INa-82rLRz7_5BrN%2=%bAyc!dZj z>LDVh@#T{WJ2F<%+t-4xFqI@;onyG!JI)W85%~0mK@e5ajPv^?7-Iz`RY|=<)_^dw4~6k&PE#%tR!cdBM_jFveFq|9q6@Uh+imRzas&B0Y{M^(h_y>mFqX{o zVts>xjc?=CKYt|{tE9rurNst|CQqkz1RXKo#j}$MZUxZ?fTvBn0}(-`x-xmS?wl zPT^B?rNu)W-J=hdKlQPd7}`G`7Lp&@K_(7V*H8pA*?~EVu-J~m z=@Vz9a`0|S$u#+nfJ9N3^4BnlFJMQY(|)qls!)`aG)6;|KIMMdT`+^%MiGczRzbqJ zl@zL5Lj%EDZ=TffqbKTpV2v2;%&!>0zvqMrKS>lt3u7LVGl6-GL7Pp+k-n`M%8P5C znjOevxOrol!N5a(NNC_2%Y#bRdCXBcCSJqT=Jx$p{)DC8($TwS&eQvA!rjtOQdysW?OHNkH56n9Rfu zp*EEq$yKAixdqLD^!{pItoHFUxC#f1NIBSBe&j*e10*90vm)V;8Q|X6<(=}PEusU% z!CDk`{KVzE(6{o0tyt=96m=8WXRqEN_qFjA+hvFB!R9lK@z2$jo69@DpRvd&XE*$A zIA>@~w2b{~(($-phBeBx z#>Lr`Yl_$9pLPe;hT-PJrib7qF%y$>RWQYp_th{HF+q%w+gmE^OOO0sQEJFarE4ap z`c-?RxF&=xqy_Vd8k*QEi(1o_i_Z7#NOUm?j_FqQyY{x4Opqf z*{iEP6$5h!BlOr3-iO<(n-NOVXejBs3(;}Rl+^U@O@X=NJ8zVCVtm-+9&ECs}VLPfuebM zc{OcVu?hb@g<5WoLqAHg1KIF#rfa4^8ceu?(M!|5YGwtw8%?uUmt#u~LVoBOl6rwK z%^}F((l+f?J}MCkwFRlw$^7o5u9`eG8{a#5tB&VP<*qsMlOft39ZT|&w=p=d28XX2 zz+$9oq+vZI=%n4Zm!j5X4Q(5keXB*$rXx|N3O{J|H&o(xaf&2p7Za&YLCa&SKeNq% z7DKD1fy^a39<)PKh(Zpu6UV^p!kV}m-k@RtjmIG;DH+#JH;u%}Jd25K3<0GQmugPB z$PKj_k~Y3p-mtv|x=dq#xmIjsE%)jDkt=7T90d7LA1DlE5cTHP97NvOyA>K3cVumoVHrk(iilIIgo|P*An;T0zV(_Ivy)csc7M!|`VyM{GZ;aUF`fN_Eo< z1iKivn)&b&j@?xLcM_?Qt_eZru;To_$}#|}loE#pL(+-?`^cIJDlwuRC{e6y#aGV# zf_&>&g#Uu?T&YzGC-YlpD zl}SsFih4gz#zqQmT<%fzN)7|Gq;Haj_cW`3S5WOpqgE)72iD(t&F8 zSjYkyyRiXdZ@A! zUps`M2ioGw$9W^RKkG?h7r7c}VF3%kCJ2Xa&3qIy@+NmhNFLi+MF@G%hYi>ijOAcM z8G|iS=jNjz(B-yut6eI4uFYYXD!tSZr14CkIzv3nXi7k#S`v&9+}J3>Hp~WClM^lY z@)>rfy(`JaDM}Gl#Weg*7IR_QPy^K#p|Jt@8$V8ul0G``{lUoofXJ zWX~G4>F3MtyF9*^6IoqX{D)Pq@Pb2MC<1T9r?X7&`%_8(w`X(XrOM|Q6JK4(6#E^B zsM7c9_?|oYv?W&>jT#aj`{~WM&^4!JWQDn|Bo7w0vvgOIrAQZvTh$V^5*`&Gyb19FbuGZ9cM40a3`>0MqOaM^EnUxzcm&oQh*CCkotvf@bq<(x4v1R;O;e;zU3SOl zE2t&r=r^(NnVZgX-dgm^3I=$ocT2(|JWjw_WY!nok^;MjBx1-40~=6n<}Sab$CvsV zlex8QBllou-c8SSCaKmFnjw|4K?-Q{Bh=wdk|O2nZ(RO-&AAYwYqgbV-1G%`9ECn> zlQircDdGG($*HsNf>;2x7v_|?S4w@pHfJ(Rx8#v)uwj#*aTE8?uKRl-x)4rWJ<3ge zUO?ic&P`p6IvZ3vTkDhWhOE*ODx3v#lD}HwSO(*@kuH+xOtxviWOgb_j zX1}_=$E7z9L)YvX%xOyH(wRWg0r(|Whb1bmNGmpdiAZGWk<|D_H+8!6V+A(A#k(|Z zG3o$E!P{P5I**w>V>)oTpwc;tbGbmFZ`dS_JdaU5H;DXhbK=_nswvIZzkTaF{H{~C zn-(RWs#$ORxV?yj)*Bq+Gsf?@#3SPq__RmkmAJG6@-dM}fG$HX7Y@g-16|wE-LgU%YUpuFP*9zTbY! zZGQXI&uYJy(p0!wFw$a^YpbpJ&FiX%)m*un+dcB#P9g29h9+3jDtMfBF@ivDUDY>o&j8Duk8(c+nd3*H?j)$bp_1LE>$6o!MIb5XnxSadKtRgZ;eZlN~!H0bxVj>!)k4Iq>(wGaC zkY=MD2YT&8(&nO(ZKIH9qc123dn0hvg=Mff#S)?&@2i!KLU8u`qOrI7m>f28{Ah4F zD}&Ow0V8gv9uj>_A`yVCJ~#&>OwMz8!Gs7LZ6O)VfcR44-MA>H5S-(_aqO)OI|nPjw3_*&7&|w{@w`1lBkr9XLkteC z)tte1SSdNq_{Il)ePZ7^H;z6|tv6q@>kw0$p3Zc;c`}d{L0&w+IV5j_W1hY&ee`vz zmop1uf7cWpxZ-M{(!^%TK_^9@#-}!jTy-B__2rz9k5RI0xG>Sgv$X&|?^8A1D&BnQ zvhyL|^J(tPisz8g^OsSk~M*+GIOV0`o5~*xoDQntxzGdNIzAo_n zK~~UWBya@z%eVc0dke=0h{kx?TZ99N!r#3_9y{rucUNDWMbsetPG`Gj{VyIxFVHoT z-;~H?xe-s92zIj4?J7)$PjSb)!5uYBIS|*#`86e}HPkFGW2W7Tu>TZ8cxk z22dP_G&8`>yCw#TW}-hSoFI+gC^30fakjMXIjf^|KCkR~^xj{TIy4+=J}91ufNu#N z>hB*VPEPQ>-dv6F#)(~o{HCMt#y(?P=!7727utV~DDR+8qN}ifX}#m}64$;z+rEEz z8FQEJ)I4SixL-I;y7K5fsyhI*@;r3r^G*O77ZRa3B6+kRkHVA@*cYAtBnt6^TxQ)H1gVlc(YiSpwc%4(*(Cg z^GEy&74zZzWh%^YLp_O3SG&e=0ejr~o~pW;h`FD3zp9RW;8(NZ={;@5PBwiw$U~3x z@4?P0%GBXT`{ocei?N?rwM-Zok+BIk``)tREzg&4GT61Fd@c16o{Qvk@P-W1T2>Dn z0vbs>g`Gur$offp?!3M7nIB3{@2GJCzPMC%F=y`)A|XV(1q}(saSMMC1T4RxM&=)I zEn8BQLfkS_p;N(wXR_8HXIs{ZMN*u~y2h zLr#_2B5_B=p}pXJFTSzq{4R$1(p8Bk=TSD;zTn|FB>K!t+t@w+erg8Un^uJH zOj-{`UzVG$hwBXQjFq3)s^p@hUGjA4&PKlJ>@i>3yf}cq^KSUKT4?w5&G7biz>nT! z_}S;$*TvOHRV;Kl%Xqo89zJoU=K55I;jnz4elR(Fz3SF{(3E-NF~l&6>FBw#eZ*GT zE1IiygCS3;A(|`QSja)5#^15wMB+g*f0;Be=GCjOr!u%AgS?1egP-$M^LWQ)u0~6(qz}3j^PLVPHn!B1t?MZ9(^cb{#4q{QzkF)hX1QE?g-_GU zZqz_bbMqx8QRd{Ns(^4>8~Zwp!aXP?FyAex!>NsS1RkLvJ5)kT=^)!-ov8jJqE;Ui zo!M)2wrm*easTkW4pD$U@wakB?YSU2E8*Y8aQ6B_T61sF*}DAy1C&E&oAQTq(ihU6 z144MyII%a2LMS}K8-xl7(I0|h0)LzR8~iNf8+0-s7?gJZkTo9>yZtiR+9W&I?9e zhICqE<^|IUx2ed>Nsq_%1Fws=XTVG}DY5YpZB9lIG^U0DPLD;nI;;*8o$n1YD~3k~ z2EA`tSV8-_h0wiuph6F7TM4?HB#f5Qln}%xdKCV%o)e^v^sU5+E$=IGr{c zS=Nd26JpZ#>7?uD3wpN43yvrJ#Kan%9zQsd0F~3EHtF)s3nzGGunAcWRBAoqm^6lQ zbP2{`gucdm3x#SuYE1CHH;RS~YA9iYdc)j#5VFHf076Z^DWbipAspISZOx;jf@I*9 zbIh5;K(?{%DR+1fnWjzMYt%xok4ZZK{!D&JGFqY`oX&-sIJxguE&J49Ge$A&suN)O z71kI*&CPe-h~GQY@Gqobj@6xb*@?Sb?!bw2McZ?%lqAy=m^W;KP3VkzfWCJeMvuDw zU;+{olng4q>uCZOGh$ChfcqURifa_)eKH%QOCd_C@4M+bM9s$sGu z+w{IIE4EdGBtX}$rA0N zqemx>2jnsin2Z2O%xdbzB?Dta8uO;`WqRc%I;rg`nE8=RHufOoV=$k(97qYU!m_nK z0pjc>JRw|onO&ocV9Dmmd=Uz|feH8EWbDwz;gFdCNcG?o{a+P*@MeQ7|_E^TQJ5PsCQHk zFlnWaj<>%t#ss^8h^5@LX@Ol~BJ&+}JTxvRsqeaw?|HxO40D0|TDfOAxmbo-_Qzse z>`64XbGgi#M@3X4Z1y_Vl+LOwzW zA(wSoNpSe~RXCWIdU>u@7=La=eGItvKra+P!sQdVZlZ+00(V+K*1Ts*6qvT@j|kWb>4PPyk8>e z!5R~Vg?^AWkOQ|tde#3nRP8KYd-xTC!Dl1YPl*jg4P%DW<}O;U!Qw3o1^VtIA$%ZL9 zg184@zaNp-xOfcgW@(c8nu!_JGQ=!fAg|6S3?*=X*PM-PiC&|MF3x&belu$8(o}{1 zKB7qO8YJ6k_X)}KRENa8MV3B>do>UJefDX>$3&@B&l{8>x%sZ}_(EwjcFuf2EjF(6 zr2|Ip#EcE(MeSlPIQe@W=Uk!?Y|1jXU~EqMu%aTcodYm|>iA>P>gilRWDb@&+Eu0p zK;NUU14Lin>raVGeCea~{oeOPx-y5^8BABJBD|D5Nkz+Bc8GGxFpf2;qS_=%Wb{D? zgBwxwL{#rx85_|mW<$dUNU*rDaK96MVG6#!6Bb0FQ=p19Gb@nFCj812JY(@R;#I-& zPQ$##lep})fC;@A{6L6_SPa3%tOM}z2;5+wp%xlkhl8lbO1vQxG52ZBAl#Nz)A1t_ zo9tnoEwY6JASeL>jn;}4>FVXsCE*6Zvqx{wLp<8g;Md<3nn$6;PQ{7b>WaDgiqA<}Sd33R6nYcIzhX)h5+$Cbb zr^4&;(w*8b+=OqGzsJ8BD7@g_6;OYDHHgQ4tlR-HK(&+9sL3m$IJsbhd{K=(zGKFo zT|-r*FleP5u#1!FjgTyCsjR|z!iNu76t7k>M%7I&87OQ>YFtLKu3agdF~}ITQ8X#4 zoa;FnOnGF@R#taHsd}gO+NhQa5{yYRo)a|rGY(Xrl`{OFqF126AwGQ^QrYI`Hz{Hg zq1!cgmJ6SU<0u1TO&EqRWNd_uMeL}X7hqMnG|s}JPQg_YBF$v|j77a44mPbe9V*PK zbk*p1(pq~-BoAj!M<@q}`uuR$OP<^;t|WvtV{FP{?+4X^&&f+94$a_;X63^eRc14A_{*wAqO3Pu{X zfbO31x!;5uR#Kti<`s;zY+lO=c!R5ygAs~cGTR(*z2;mpgZ2v%Kd3l0;31(Q>kA;F zq3Y`+qM_@5LPW#V&q74QHm``z&{4Dc(k-g-&xN{GT({_l?kUA&-W=jf(sqZ1aaD&bZ+IVwRsAewyXHrUbxsXv>+q zsT473m-cnD8Yl0V1GjfyBk_<>pAiuaMPD8f4Nc!35e-8>8W9caCxiWc|NmeQjUV;^ z8bwv=pX~uO&!65nWcj7?!(V^6=4*G)Z0*2)aqD(mgd(R*r+rGqq(fTmCIBbTQoA(J zuUlA6&QC-{P0g=cL`~06L{!bp?h5&>lde=rC6NHCFx%ld{P_!sCya zp=ASd_~{_sMJyT9C)zwf+JHS)#3UdsVY3=HZ<9m&(1C}9hOEPfh=!`8gNTN%1B{r4 zsY8&MhHb)tn5X&g;`V2>eh&%$X_;S&Kcmw%{ZHfk9=|_B^(U9xg_-{|zDbx=_a3Cg z&2vZ#*kr-Y+vc$D-RF>*{icQRCN#MGGgN3uc{x;QXn7k{Xju6e)Xxi8mj0(@Xn&aJ z&*HbMrOCkHcQ5^P)sN!Ot5zrPkHG!INB_8lTWV|4|F2v(n}C^B2Z`PSoV;}o>0WbA znMHf9h{+ndS)mRCA{vU0Y$6((jtwFjh7KZP8kP0(PT&9cUo?1O2h zj#=vEhJOp{z7B>arv33!byv6Lq&|A0=V~DueV>ZyjUc0UBl=LqJ6iW;xA4$Kw(I(O z+nnxh!&D^nQS0k^S8K^fgNJi0uZken;@fG3reLpzd{)6HxAUDLhH~dbEHtlk=+KJb z+VXPA13a`riDBB1r|gDFh2n^rl&yiA6W~A1r~;g!%HMywA{(4dc*a~`Kc~^X7wwR1 zxlxm4zF6Ky--N1@_6Uu|rY6a!dZ^qiwJ<=WZUV^OyhL9g%winUxoAPlwYzZYWPp14 zV2`fZ;AJmJ|460R?i@8Xa0CfWr5E;2eRmJ~$*IWDAEcy#ZA`zS7$rv!zR(XMaKG9Q zN?NPN4>~XYLRly<$GRrq?Xij_9BD+wG@3;9fV7~#zSE^#_EX*U*e5uDxadQ@ zlwCyH@{s~&0K@P_2ygk$3@TTWVU>;j=+5WkEZ>G&vaDCwJ!H!@CPTGR4iypBq#D~G zmem7P7FZ=r0h-||m=GnRMPUYqXXWKw8fW@AbtfMAtod-eouVreBY|84lbWALz5_@L zwI@{Gz!VvVm+xt=N~*z950@utqQiw6ld5LB*t>9Qyf5C80A#s1krpy87u|dcfegb# zvp$sW=r}Orp(&2g0fIeZAXt}BvedvY6=wbV@MF}aJnHeOZ&%wAmkeyzJT%-?HRa{y zD2#I9Cx`-LO3mR=6c&I;C|?WI@F3qG$j^cZ2l0*clZpdrAzWLKTK)m(D8zuoPJhdLNiIQ>VEL*V%v=6R7ZG_nNe5Wi zxQR$ri|gmgWwRQJNGTZtt4a^uAxZf?m%xH71(k8!AT(Yuct)SvARB8ESaensksVyB zQ}|?mo8`&Q##*fuQ&XB9T1abmB_o34!h*wPd|&46y% zbs~~^>|$%Q>}i0yZDh{ud7eFu78~&TGa_v8TpqYrnGNF!n%O1LK@6xW4IYMh|SLHzR z+GdAGE<%{#Ycy2mblxS>c~yd8AzT%rqghh7A7`gkx7MynZ}qOHt)ke_dmA)GdB5>O ztg4_?+(}^1=goqZe8LJ}7V`>Np zjMBT5K`0RJ<}FD^dh`*(@AMuc?dhQp3c%Soz-mTC@3MYKn!&3>BA$u}sL#a1LqIr} z4XSNCK6{9mUo2kgJo7eTp}Kc(;6FH9mSh2=1m1YQ+teNs?sm=?F=J`;0{+vX!ai2bhpD|!vR_PiYzQ{w zBIl{U`mQ{!?s(3*M`pTN=XA*uD@UxHEuK{M$TrvZ0aC;QTHGF|EUJ`03eUPRx^?FC zL@_wZh)RKEjmrx{uk?5BT09gyd3WK8T2)Z8LG(U}=CL6VpuNq3ewfBU8sQGbFAdqL ziR^<*sq-Gf0GxiRNZZ-Td3TcoHyBDgbVSw3F~t3ph-ad*$gT3W0_BWlC}esTl2u8+ zH3hLcr8f|B!Wxg?WJ&)*PT$cp>4UX40;9UU@aWyC5a!G|T1`_}YWB5B7|KCs`oWVU!- z9GlvDpHDx{y0qTqlq^11FMEFXU;dMM*8KJ{_klseTnVEv`NsH$9-X zpHV4cE~L0H7RSbt3n%?6%=ua^uegv;X+0IkW+8#inj4-nAu4VDo7jxfx;lR`T67>l72vnZ|M6tgI?Aq%r8HETWR`!6hnl=9*ds4+4AUjT%Z`r;CpF);zZv1xFP z{@r8$%Liic%cT?j5^>>Oja|g>ysGJ< zVoWRecZ5w+%D8Q?!DsT-y8CCavFF|S*#|Ez#l`x9S_ew9rPAA!g&ygecuB-<=Wf-h z9dB&!qK%)GS;6^w%z=U2Acv}r543T^sT)*@L<7emWxNqynI+e3|;t!Pm~sS8l>wbZRr=LIY>^y)s*Whvj~%VBdi^^02+_SFcWSrxFY z%kPl05?^`~Qu;_OW78dO)%M+1p+VvN_+xyy+OsijB6Y$dr3#zT-A%hz@$HNeK+8Me zJ9BMD`$-tDDF??L_a{zN4~YYu&8pE+-um$om^Y^g-P83aH+&C~=q{}<7caNy5dNX~ zN1o2>d8wH5_EmlLDGKjy1@Hx zJgSFS%{lzlxo`7A{z#OwL~Hwd&QF{BJbLzYySby<0BBaFQuBOn zZJ|Tp?wD9qveRQtb3*qZJz=OA683DB8oRBUlhqJKIo4bf4}tqqk}yHRVw9j&+C9gU z!Syl&vQ3f2Uq1ER1MZA@O;P*BC)>1KGO#N(9KI*CDyg$KLzO zU;!pR#|E6+hG*87=HTwV1U%dBjRrhht>v#X3Z$CN3OA0eT4!sE-z*3}kUbJUSi(HF z8NW(|YtVa@3FpBUX4uKW7D0^E)pB}^;(_Kt#Y@eL&HIiQl9!x!U3LwDYj3T^_kr#V z(i5j&kBXt2JB@Eq2qqr^YgIO*4aq>>cbD^sx?CHQ zVjlZJ^tk7_#4Uim2I3JwS8@c$WYz_Iy30@WN1L@Q-#~agF4w)a&%VC!@LU}K7U+HS z1%-#;z*ze)fS}k{+^}a1ZJi(pe*x_vkgsrH?HJnrKY^jTzf9QK_Q=rI4TAnx@n4y> zcfLkI=9W5R_#c3a&e!P3T2gk5?cKkE|KX_rmF^c^zfSlkg+IE&aMPTXw{?Oc{O^N{ zE--W$EgHLuw(eiS|Gx?U9Qn_gZ$Ey3#CSG&g9Z&VAZVOb#h{i%GnVz|L6}*7;xW_+ z!}H^~(BB*(&v4J$1ttT`xLdN`?QCrxbNo^DcwKYBIahjF{7;A0e#3-g?ykgWdtjD9{3DT)8{D_i*#%ZQ;$-%tR<1C7<2R zIlP#^`Y9gnohAB%>)(<1{6+xThwQa9RLWZxLNou*s6HxC8vh2Y<*RcU8t70!&Og!@_(Lw)4AA=k4>jE5DfPp z>nS2Bjo~=igRTSkyMODDUUv1zgXXpq-k=IDB8kv!>)_E_C$no}Lij-^zDpTN^}QD9 zufRS}y?&Zz$r8VXPzEY+a_>j#{H0opvbn|b zDfP$&&hDwV%S&BdYs1R}+Xv{w#GTWt&c%nu)jPgc*QdM2m&f+fr;ERqvPeW z6J0N_mmT1avxBW(Pt!%SH<{1dxpfoXXSQX-or85{csiRewks|7r->>-FHf_bsq`<8 zXJ^~XqxifJ*Orz_k6UHl4XxhpX^3~ngQF|l-1jf7FWt|cmoJ&EZgJKU zt=@oR`AF^S?$kux)u->%=&LOaz0J=ji)AnOVuvxzzN<;niQxs6HbcILJyvzrQpOKG z+)h?fg1bGij@G94^}u(YDHa=X?A|eRFONKy*qAz-u*xT@pema>F@|UwTRko$U7&cA zE}bh9e~@sL0WeWBbxf|>_99!ws~Ef+y@`RLtvWmBOWK`sX(_C1nU+4UPG zZdr3YIz{LroGV4>+YU`?^aE~9>huFwt~EMwi|01Y6gQjOZt{4&i&xp)k+X*)^Q(>h zxGA2Y=tm;zE4T+?szwgz605jVp)Ldm&vX#aFz~^Qjd~94uYK-b#e(lZ4?#x3+o=yK z)2fzg)jQY^)KJc5YI!*X_oI>}#%f7BboYT1qx)+iJ1qAa<0m?6&D&q~bYr8NX=U2O z^^jsDs%shBlXm-~piBCDM{fIei6ABlYMt2CbfUtcvuIV@4R<)bNhH;Bv)gW;21iHN z;k`esw!g*&$YB)K$^_@V_;druCbFwM(unE<$)O|;A zXAbhqxnW>F%BM_DMrM7m5N?ckuTv|cky3r5qy-(`qP|0W2zcV_^r}!X<5PHs4yew) zFLA--7bD(hABm}+cGDdEs=QC+#W;Y_1qi3JdixtL?Qi%U9^GM{8^B){e7vpBmyu&` z8*|~j#j4j&-RLrt;>4C1I-k9H*@6cgOv&{hw_e5BfyLJh6u+7kkcP9c7*Zzqe9=bw zdXgZnhi^Ng2ar*_MJdIBJEXUEbf-kdtC+_WIpW2eawmX0-1V6!bF^z0(w_GMqk2~; z1%HZA8g}90y|jndTXNP&0e9X~V6)jD&E|hJGx^cXHx+-Web{g|XH_=bYBym-g&HgfpJ`+;cYt^)6{3yLrE*yDUW^LR^+ z5C80O55d(S|AjPk00p%di>A;^}n?OmVYq@Q_VT!2To00CW&sgTu?B|>rnQptU2n}ucLVn5uScG;0UH(s*jfY=Vz}q=BpS9K7aU zCv@-VMmQu&AsQYGYLO`1bSW`dV#{wR&Oi1{KFdwr;>T>uiIB=W4Yr)m7}yLNlwzR|7snEmt1JZ0Y%d5CL1yf5SYoywgsqOWvOROr zJ*IwD+%onh>o>Vh*6eQK57;cZP#^zQbpM(<v2 zeq{&Ee|!`PA6{{Eqi_HAdgxShjML?Of}HQe>%$i`8(A$TN1fB;V5dy5q*ds(di$&U zc_4E43Z}&07-x#mIlQ29^L+Wt?R(dXGZBw3}2rwdsUa!$}dvAXYUwegk z*obzhING{bd9gI>u_MpWp$igWqf=+{lq>6PIU0FB7U`ou_|3^uwUqOF;1dD}hWK4D zi9qV^9fr*dPF?KbjBU#$xhC@9+1w$>0{;Ej0)lQ@di)cJ-OO-OLW^1FLHzQKTH?p^ z=}-`W*VBL`yIXA$e(#fR`_omZYN_tK^NNSwSLCa3Z|}!@;8NL4W6L2HT@d?MZ`W(E zeQ%^*m@y(uK;oSEOTk}`*oV%d7gZ^ay-^;wSU^2a#cxfG8hWp{i&mE&Z!D)B{r&4H zC%(Vd(lD@fY3HPBYPc(t&EJLJ+NvlcqAWx#1w~B&2{aY<7u9;@#f>)`)PTd@Zucrl zfWfM1OSCq*|;_#vjApv-Xw!N@!52hN%z6IE~^`f zc_|Y@h%L3d*_LIL^b}?3(MTvLjt#F4zYS(dsvbJz03EGZCO7Edgy^2hG_W~fA6 z78wZmNz)u$p&}tozpptZf`=lhq0XEOf;6cD4`2npQ<4cwPUTAubj2)uP=z1fbd8&A zx^)0vD}0rH+j)go8QyET-VxPt#j!K3)}eOYeiTZAKiF;FKw7^_Hs^CUX{RaZs8Q-m zK!@tqMEthR&1SGQkCO$i(l&~;b`w_18#!@#ZYH@tE!22t^InMsyS8zegR>E97Pp=^ zJ`)yRD{=grU2AKMXL%FcVm-u#cD*%;@%bE^7Q}n?;;OH6ceJPzJ?r_V)gNCDb*K^| zcAs2~f_HObG1Pl4&n8_GnQ1;eTnju{gYl)@bX9LYAb?MZK~H#rh+Pam1Zwd4w(Buq zgiT_1TF*ZWEC?9wsWG&%vvUh1~T0!zUB4(0zsZ8>& z&%V4Na9c~%I<$F`ca?*_mp!`OhmwH;tgWqCInmQ{g1xws0mJuHi=&2OmOpb zyD%Vk5}6&fohO9$OP2P6aSy%_nXH1Sbx74Cpue6h7Nv9!5bn4dvdRVHXu$Eeh>VEq zixzKiP~H?7R>o3ETwyTM)vlh03}XCLiiQjrvwPy~Za$p)-h~XUOae5|!H@`SPtO|4e5=f4 zwL9D%we$f&$8>pKt6h$jbLyF4{Xu{;XL7b!jzig^%WU-7&Yz=a_?|b0Jtp>kO{fdB z{@DpgC1U+6ry9VK?GR9%_};&qB=T{&NmhoW340#qz&N}zc=ILp6<8Sa4BREtmemX3 zFPu0s9L33rd39&JVmwhKp)VY=h}#nVLBvw=}_ufeWXq+Ac%LsOi$EwfKwp7OsgD}R(y6}@NQeTu+33Xt~C(r1QqP6n1 zzOc&tZg6VKa)e4b1x2<+jy`Y%6%I~Cz8&Gm!Y_EA9r4FtOg2F_sO}4WA~4`Z#w92) z#Udo(CB<(LCa9ueqNq$De749p^YQ>JE3!ews&X|E=68znK$t}|mBPQm=vMeD=HF0{ z3c+hYREy%3vI<$BpkMNpBDP^(ix`#r1x)YW=|HmOs1O-0io73I3+_JSNT5;@?Oiv*SCy)hTp z2J9~R(}8k}ZH%a{1TLof;VcEXuKbh2x`M7m4<`Pw=6yDcVk(#ec#FRc?Vi{)K<*W0 z3f5rn71R1b7ES9J->H29&YU=5AA{?m9(6Rb`Cw>vY!>-7g4$80g>*yTV5-CP7TN0I zTVj#JiCBlRw#fuxo`sVSF$it8Tb9 z&aEBTj{I`YICk#Kw?nKIdcc>BGVGN<5p=@6P?i@hJGixSQn#L>}nG%M7-Y74E zs^o=!3xAS*@OD7@i9IggY?t>0>gV%ABAO8f2j3u_5qV%eGV%t!@m@^x!$_2O1H~71 zLwPIc7rrs`=5E5*_3AAa)gwNtR@U_;uS)E++@PJE->{xtmv;ltIqKu zN3ZHL=J{p5KP;Ea`^UaLs8`7Q|N55{EtV0M@PAT1o=Q~63rP9CDV{CFE9Lp607?ML zhyF{_0M#D? z{$T!1l;;=l_5cbfm(TwR1SnT7FCggq27I>gten@K_xA9)Saw~;?+N9^ zP!PZg0RR904*;AaEa3nAA29@^0Hyv%3KmAomYMUWecmkh7kc$8 z@E+QM{MY}Bjea&Ck8ecn7KX%g#VA9^MI#Y>-;!_1=<}K*i|LVClV%LKFst>0SeSgU zmV70=Z8Wb=v@0A7E-*GlM4&IAN&M66x7s>Hd+P$JQjrQ_b1 z;P@>F*DI{U5e>{Jmx{7M8Vw9bD6XBqA^RVf3{eEt*7Ib1NV2aH3HXWSZr>m8T6-%J z7%IsmadgsZix!F%Lhwjad(uKJ+VtjQLCLHrt`{qyrdrmhQ$R{|SlWCVzHrJcx;I0T zbcZur5~$B8ty)bItvV?qO*D%%GD#JQY|IXPE@s~z*g_L!ZjUxwbXgJ(Xcu*;5DUmt6evgZhXcx!@$TXvkV+*;1|%aAXuiwT&YL9=zg_ZmIW%FGe(rFBw7Uj}mt9B12avWgiP0o>-V_kM_k~M?#%XxHHjP0`g+G%*2K+SH zwN0vsC)6}i#59#m0WuGOO4UKcoHXmR8StaM!C>(;%U9ssBOL#*f>d>!fd22C7mWxL6l?sxQXGXAf>C%h_G1inNmLK*M4DCm z(rqrzTCLBh8PJMJa}r39YSV7LwE}n%FT@U|bu!j_yfv5#_wK)vxOU2V$ z(5liHG_$q>xJk(gmzP|?>l47lPSq#dIFbR-!qiS!lZ?zG;(}9Us|$yIZe}PeX`3 zGVT+m7*CtTpgfj8NQE??qNj<|h!<4~ttR_unOVq%uDbAnQ%)Rl z!rO4ZW-9bYo0h##>+$MpmYi0!_>SUOkaZ7m&7s?-u4I#NJi zwQE^J>%a|{52mi~kr*1Hv{6`@|);q5UfvVNS@bN&Az|d8=PUcx#lwI4ZlO~WI zI#kk1xi_!!aq&nY@@KIEWSa~fJ9Y|~fS_p{S8YR?stX2z`c-Zn{s6STQmb0&Y;1^W ze-?W{0)V$}Gz&L|FfG6SpNZWP{+GRc@I?e2Y#diDG*Q3k=fKLg%ihpB&g#bi@MN`& zS1GGV+EM9&4!}_5=8)iDEzcOSz#$X=@h?SXpB|^h8ydPvXk`XN^jray+efi5~_FcTY6d76p`M@x-zzGR~A`i(c zfuzw0OI4KvxS$b=t_iQ-00;Aty#P%M(aY&66#-oTA6zKakob4a=!E>;fC7p|GsA}U zSk8QOB)W-A?G(`}_5cglVC~rV&#!!SSTHiOok;NDtNiUlc!+(Wo6#S^5S6I< zjmoHEWmx2hhzXZ!Q`j!ti$S0mr75!-l{f%2vk)=@qTg$W6*hhN4jKe_au6w~U;hQP zqo~z?4ev(bKZd6XXArW}w5y>{7EGKb>ue#%D*GT>R9k-J(uQ9-V*6`TE^qzP!P2cv z8@8jV?_ORyBUWo`iw2!Yz`{62M=9FaG{Xc0qb=CmrP(cngNf*Q-##z;znzznTj^zo%0 zyp0!$`vmdJMclS}@mG&%!}VcK@vfi%l&0Z$&wJq_d~N(=Fwg#Y@Idj}N$EBirTKC}jA=H8aH!jtS ziU6^}pErPdL+-l;5W^=KUUerjt@b~PUg9Z>uE)*B!R*fYL6kLM_KaxI68htyR({ZE z%z`n)#Uk>jE;F{&u<)EoBM~$*BxilHS3Qq6T916{r&B1y&NC0|M*o%$)&MnGr7A#) z{2aWUTF?@(1QS}X05gox&t9IQ02CvjH!ADFQ^@Vk(to`oa;5R1by0(p{6P80@k7#X z;>aL1PYNcOrBbAj}l|PQa zDBP6vk@Tm5Fc2x(Oa#ibp&=@R`uce)!vQk5!W<6Xc|0`xPS!9__t8A}b(iFRafdtI z1&wKtgkC7w`!Cp}Mq>Vpl0s$NYTfMA*VPWgK)_Si19N^qkl?I^{22oQ?7WthOp4P1V4dzCSZ}heg%ooxvB1GPVa4YOM-WefGZ&}l`P0uu@X z4oNFRRnVX^fCP5{2v^-8ryEXOzvHy@Ca;kLUNIno=V(a{`IXEHvH+RNj zu@8?s!;A9~xzENIeJW7mx$fTZhhV6o>}Nid{$#{KeA#mpTM$9N)nLSN3^&>hvmoUz z4?6Ky(TTYeugCkJFs5hXMx>9&;S2e4HA)8dXZJuko2AO(?C+~eX$_8jE}qepOzy$s=Km{W$8VnsNUIsnkm zO*1N3v%~nH8DjSYdi`Hq`kULXmhA?WlSk){`rj>4N@2F8{xXetxqrse&Vcim}6*Za%Z_<@W4=l zWP{YVhgH3M=vQMV0{$zynoI@6nlJkaBClDN-=xTq;g&Ae`2t{O`X zwWcoS^7)xgw@PCLJ$hX&44LvT}4{}a7)XKefSYl$PaLIDj#rbtIlqm z>j#_-hGK7Pt2L`iSaW4WQ@=;zN~)h~2LNlSb2*PZr-%AA*XJMckHrg@pvwJcsZ$+o z_pfyNIsaqwByPADPzBsU#-C9tuCA5z*_BeNMJ1h6o4WA2&8n`l=#h@HxdtMSA*I9P z?Q0gU#+60%svPA(?a$?{SR$T#Z?m`mb0MkM7r=EKN|GFfb78kz^&GQ|frt z(z%<9noEjEbmmsQ)FdRNM;24Z@ND4y-N@|RcT-$CgN3aA{Z!C_t~YLJAKni%UU>)yAP z9zow8g&mPM9Vxu8Mw8RwY;zXW@UxZB<+rextZU(tH>t2T|C!92W%l^8r24Hmf!haz z3A`dN91qgk8QLqz4zISsJZp>kfiTK&ciMW?N94-$&=0v2To1wzp}i}&0?mLsj7@=^ zcgWvY=Bl{t(nByu^C<3XwxN4_k~M6DF=}6{GQg@K{;d6)`yMK{GLry^1qbIPPBn5`uy zkI_--{NN82qbp7v6_0_L`g3(Ii`h&D&-LUhEJkj##qFx}^r>$91?Yr;#>zB2#j9VG zBaZ~;y1~fijYy-Lz#3?Wf}ftklO=Iah<;Hi&$M24F2AkSd&-}&nq+c0tnHw!s)mB@ zT6R@sT~*CQnL%SORulwqP`|w8{rPMJ)rNJGF=`l$Et|a-r@$Q%k=D7uB z`9G*MOooTh(7xFC$?cG7V<)~%>HMuGIMTV#wMnNsV-JFo!Ido{-o80ozh+tDr({le z;3qJi_TF4sP^BLy&s}^8bbA78*B$sU2Jj!~x7#zkhG)y%P1_kXm$#QVP^;F-HF;2T ztZN=!>!+x9D?_ZY?Tz-?gWWR&Yq7d?ZP#Odtkf%J2pXBG59g&zY9;Jax2x5T(Q2%$ zv$0@B)78{XU~#KcsG0tlOH{P7L_R4FAG^uHhUJU#1NP)_i0!ViQ~z$}QPo&dr>T>y z)@-y_yw2ks%hi>BcYqa8wy0%>w9lYl$M1rU8CK}%pwc+ZKmBOT%hJ1@_2FCRvEu- zp?#|MK;2|LlExbH?gWQU?(b1Hn}Z&Fu~;NaJ&(!568E2Cj=<}RU!!YkC;FRFLkT4i z8#KQm>PEn^8-Ca6+YY$=y2xWvFNf~>jt^KCxP7ySEUTU@yFouA46IJlW1gL3{C@E& z{llItm55+;I!F^`n=Rf#vAC?;xR5SsqvEQwa~cfpVW&=SYdx4u7@aubJvGf*-5)!d z8rs!ni?0UWBGTUAW;whf;pB!tsZ@bks)taAgqz-cG1(5tD|)fPMW z_IL6ruItOp0gc6$9lG$LT%O&(FU?o|`At zZ|@zbUhe+--{U!}bX6$rnI}DI=Z9YJ9Bz;JJs&*3pLJ0uUGzK9wg=EKH8wAP)Fj-G&3E z$>(N^wHG7Px)9pM`%w;bmUY)76Ikt<^=N)^Bar$uaQ>yt{!vbup2D}Y33?$!XDwCd z^vuT+*jXjXnK1twGBYE%HGO)hi^7fIO~A>LuNRJn_GpW73)(Qksb^nrWCm05>haQt zvpxC!5`i8)hkszI3&?jvu{F{g8KE#ka0m^3xwOc3@R2r?t0S7Hv#6?ys|z))8Q!I> ztG)D9FR6hK$?A*AeZ>P(MFvi}jPGoFm_sOnXD(miMng75|KGYZrG^&cz3Q^1{@@_3`w8 za?a88`Ys}e{`YjM1sOha+S7*;k?HdMMl+9SMse*XGSqRZ#+eAq#fH@jXC|^vxn$F= z1ZW+)?w6RNZ`^Qu9Vv-Fy)4s~NOU=S2SjsT+pjML#y;&Ihrpu<&;LM53Q+ zEivE%pP)*wG^h-!2#|8Z$bT%bojkq+4Jz$a;x{gN@S3mav>Mb1kxO`NgDlY5NMLScEV#ljqWenyOYf%qIUN1?1lR{S53sTl7K$qiU5 z);x)M`$A8X*aKY1L+6*_>y@p)%>Ki?E^RckcEbDhS3Hd02wL1NZkV!w?~8?}_xFb_ z^AD6~x4xY1h>p$^cQ|5MaeqK;Niwksj;H$skdG7I6pJiy=dOfV94BsE5!~Z$<$N{` zJAW@{yuTJ zrd`Rom+_pEcA1>gZOYDTj)@CP+o?f8Be?~M3M;sU)>B0!2N1&$pHS|N3gUsQ3^PRw z{`Luq?J?Jt!hM6)mHLC+eze@aOIgF9Wi{iTUGZFj z($vBtZ^rS<(n6^f>Pg(Lx`M2Hf38AUGF+FIK@)|FkXSJVYi3kn?yMcP-wE{RyeD3d z#8UlkXzl~QxfpTo2zO$hKc9+Uq^m=~I74~1{2@P7LHxLcxA3{=x5UYp{@km5Z_(i= zVVL-1H=jnC-uL6IZ--Z-mgQo&SL5H=@}3}C*F{LL#Penc{<~{VibF@cr7dM&ht~MyM=E4ISOfNT{Z@=s# zj#xQ?{`OqZ>E(C_w?|HS)6hBh(N~IVreoMs!|cENycy_!l?EcK83%%=?Tnl-A5A?* zUseA494G5FyVj*?SynuUH0B_BnsXCA%z4H;`~G#5gV2#@$rYcH)hx<}F94m^(#NXM zgq|~yiupa+v7srICK1w5`y9X`z&9y5R%DLHc`#Xw{HgaVrGiXC6WPMyS5k>)h2@gW zg3MyfBAP`b8@+5Lxma?3>~dyvgH|xRc-7Llmf}QHzATi)47E@ z+idu&6vjp7`5gLag_$!7bt82jzD4Nsh3rsCl!wtJ&sj49A^acI>9r7vl2f`XznedNZ_3!L?SD}E#8grYcEtgS3{Rv*#yajtuai7^() ziOkzz({iKM*zw%EpmZ42*KH^XD*w>9p4nS2e1Taa=z-APvjKJZDBA@X4P;Sb!V?p+ z88t9F)h;J7MyQV+6gg=@-QXAJK1iJgm(qK*F9i@^DfuoO z0gFI#+)9f-;R^}p=OjkjMpsVAESWq=q6^KzzbKUC5%52>z1?~VeugtJ66OXchaA3- zu3Cn?8?a^vmHoi@yHhnN$MA|3k8H#V{c7D8g~AJEZh%1>9=}T~HuHGHKfK^Uf zTQWBj;4is|KS#1i15vr-?tqrIV=`LuhLtK-ebe{nM6$lW{)DjTdVaNT*H|XrZ2+s% z7sTA>Yz)AI_=nrqCVY zRiMOd6h#rCs6eRsXr`Wo{2Guu(h#3R(jkcfKg--1teb zi>rXoP|$^#kcbOd0fO0pnn!x;E&D?vOa2J)og;#R7ydU{7wiX5jC!Be$&c~pxvrj2 zlJxl3Nhtziz$~{{#cCbG+wwz?Gxl*MgyL4yur39YDxO>vwJ1-#C;^%!qMz@EHrA2g zz8o?3heyaSqs&$%9RB)TGY`6ppoJUmxm*6*Puv#-7AoISzrMAig`#*d0dlRT1HPDm zNJiAueydhwKar|8JYGcoJ+acF+_FK;;^ukGIq%38zjD$w3We*jhYPwUDL$mq2lgpu z1YOo>WKIH#U7w9G9>y5+8@S|*teC@N;k28|n_LZA$vI{(C6xFRNvYBS5UoIcq?YTF zSAGbF-ih=GzsXYUF4<>&0}@TP5{VV6r|x>i6>_~KyZG$b4-zM)c5GHs)1pYksvYRP z{vM`Ci_u=OR*-MG6nk@d*oGj@8yGR+P)0Eelq;kwR6Ue0QhH3p2>-;hVy=1Msq9hs z#O0#LxpfspG4ghh1n^J=;X9W2VoRpEmY8`b4ajptmJQiECkB_K5!^7;8|F@M|6u=l z7@+pZqfpkjM^abZTRSPlJ^NctA7K4q#9I*gNfApd8neUdsHMhN81X^NpUud)n%`mN^{(nY5MM%Z_WS0L-5@RDorh+kLy- zeJOe6BeK?K;F0f*xqXw

nIR6q3CWVS?UDi0M3ewiI6SDw<)WL(7f1C4nDN>kUJz zrUoT#96#}5<8??0XKapO{7%Yvh^GUl=q=EDLXLS}R3vApZ`i<~_YI>qwThyQ1mP(> zlVYbTw?y|9kHWBBU-AX`uG;S36MvzMCR~98x8KWsWVxmoF9A(nsNMl~Z>ZX%e|q5> z6xyL+Bd_D7IgooK8h99$J(M@#31Rh~*oM@3pxC}5jE7v@;Aw_HLs~)8AwE|iCT{!` zZm_=K2M*8$$S+19%<`AcjKpb)M&9FtaJSKn@*@`_{8A%gFJReKIqCB-q9|{;;Qhmz zDGdn5rsMOVHUx1T2w{;*myj|$0|)vb5Rta>;_;3n=(=cZiMYHqMuQ|1Ag3-=DM>b8 z(&yn?@xulbllpjm#9xNE&LMQBI{4%5Qh-Kn`~b|+Qq>A;a(X1q2>Sb1SpIl=D0qRA=c5a{h`A-F^gu2rOuh2N zUI!q}ai9`l{Eo1~Byz^xY@lI=K$B`2s2bhDDD*@-^(^8HOK_KPL7s9TS}liYjAR(- zKLJ$`v*w`kvUY);jN`}45oRGOa)Bngc3i1Sg!1P8A-g8s*ddlZau=}$_p@K8om+a1q?5#lioQsJ zCbXC-)IJtjF7DjSBZg1prPPqZOAuw?BBKmEV(w;K2&_XbRZf8i6qrRYJo*-=9()Q@ z7_{K_=)S-al!&sd{T0RZ)$@weJv*LR26;D0n$uGDl0irlvy- zAF$i3m^^j+9&%_tC3>hu{mV?TT4Vc@o?5HR_Zins!%>zn%i}Dt5hC@}8`-xTbkFGEA`NnevIqOhW4uSgRp34JA{3ZoXqBP^lS7KlZxY6y(v#zb;6QmVZ9 zDrCF{l_ydtL1nKsix_0%*Nr4R1Z$ni$Gz*CWf8n#TN$~wnJx>up*+k?NP0LqXNy|U z0;lP_AAi^oLpdiDp>&wEpMNQvOF5$8CZf_dr-*AwCq*^>9>*IB!dzHhxjZyAeN{dd z|B4#;Yer>Cau4b*G3}7WLB^a~L*hRRVjATxvGK*}*0DRyiSb(*6Ow0ap}=&O598c2 zMe*uqx)VHR^wC$K!YJMz&0L;*X8ct83F3=pBDNHYX$Bd&#sZf1bFb^V`|b@a$2GyV zTTB;O3f8D07f;>#9~!5#^{nR@=k@bt z$z`*@GaVdG``U@>#2&$QM}(~}p)Kv~*ZXK212|*E8?ry2+8Ws$$Hf80%)t4l9?~*{PIzqdO5gd z`<-mQT-{LfQ&SNT>=6IYx-z@kCYM>6t;G1JD$fY7;d)wQ%bDON&6m2A4(fTO)X*+` zX!B4Z3D!^f=1ej37-W#4fuZ#L6WSTgW9ZP^`n_0&?0PxS`h^!Yqk{XI-s!!T@d;gc zPxvw%IgSW;Tngu1qSTN{P*Big$e(u8d4y1phB}?iDPR>Y_Cpa=65tB-LC?MsjpL*IR@7 z-`E~kEiGM(m}`w9Pd&%Fn+EZMS(&S*kAL1Cn3|Bb#NcS^_&Zym)D zqc7R|gal#2a?QaRHb01mTfzGFrMrE4z&qgY(EGQfz zASRVFDjT>2RF=f|5tRjKRK(NAS>l2ReV4?Z%zPavykQJFtN5|EdL#urC0Ka($)US+ zVS;H(@;0nS%`og>oCUY;jQZbzUFY}rN#CiXgjb)QHeiH0(eUU8CBx=L==xbBvChg8ZDk85$Hu!gB06-+E7wP8lIL^O5l z%_l&AlP|cz*dtpucj9{s{c8F+^y|Jw48g?n51Up@JD9Gfkl$t0>U{@b1Ee8%DxXt4 zz-efxIBwB8dYw%45kC`XGA4EDh77C2a=%f4YA&%6bK@ zXEe+?_ZwOQr&EdZt+7a)!xU|hNJe%t;@}&yQr&VxzMu;zf6#r&eQWld#P6pWn=2>$ zl`Al$_-XKrKg4QuIcxP4&%x26i?u8O7OrZY0wMEU>OD^dLNXFJhNCa#WaXsQ_(S`H zJa5bXxAvusTeM@%P6~caI+AoVDd^Jt+)~t-*7)93WQ{?5flMp@M z2^3J!w4-Yl-2RdW$u=}B9Sk?Dz`%;>p&zukBuS8!yV5OnHT7->LSrVmi;@%cC>hO} z6xL&q<^1gh8E30qST%x0Dp-lPveljIBC8Yq`@{Bd! z+GNPJnN!)j*|pTR!Oe7I{6+Uoe}o_FS^Lx8SU*+oPqzt=F`qHd`J3LyR%UucMWL>g zToc7=O$B@GbY;t_GVEp1rMp&38!J1Hv0C`1L0W83j$~sjXxA_?&VXo`Tp20WIFCy? zEG&3bA1&9PRmb>GDxTkj=r9qE+TMxS^Zl*AeAr%#pi@^ZzIS(-6G9Wv6eWQJ=a@MkpM6xF5>1Iaw zXL5!Qr<#m{Sx`&GfmYnd+^d;g_#&-!IAt*4|q> z8{WGKLu;fYgLYT+$Pnh()MusCZR9{@ko%!J`?4)^2vNA4firoJu(B zO~3ZO2VU24<#_`FS)Mgv8+KN?uQ0NNXzE{|@=n6ShC+gmWrs)_Za6clLLXt2hBZ_! z+e~7)!C?x5oUCl4`;ycEuh-TB*O=I+0mB<^$SwcoX~#=O^6|#nmJyd1llW9)spdL;Z$Uv9kZ{)kbjlYl)Wfy!$fo^p}MFsfL^V0ipZ! zloCsZTW<&a7E_&dB*EWNiy??%hSPzLNXv^7Lj%e^OH@` z;Jrv9Ac`n)V~SO&q&mg3^5-m?gUS=(wH$EfJmB0FO-e`jq7;QS%YK>GkmA7YF;$cJ z&h7Dv)h%RzZIJMiF%rdWQ?t{mFHMBdg{Yg$21%;1mN$&(6^PgpxrPcC3#xn$P8zq~ z&FkFp3Lp91_ueV!SY}r;W;q2BuhQtTWypkBOpM`LYR5%xaWcG;Y6ybENFZF|d&JeW z8`_iN&urtrqEDYAvFo%)^YJof?W@y_z2j5>Z={#1@KGE2D6jQ5xmD=e$#+R_WL8oc ziCtCnt1P=b@1-owXQs&7{5EzTC+RnCm%G-igYGQW$!CQlD{P}AZ*(__=P{Dm=IHh=w`v)hPTf_I-;l2NvC&2 z2LAe$km1@sH$_-@q7&7&FgfWqqu5C(pv?7mS%%Tx?r1|%tRr49{LDmNHIRJqnDVz| z7HUd_Zm&E-4GZkBP&$fGrcEtTHSsps)Ulx)0?l=bg% zH+v%Zfk|Tn%0XuChVJiE_Ptg8q9{WXh!Fh03v~5p(Y-3#qPkNR8kQwuHQuPIg>edU= zggQfJ%x3Ijk~fRWYz^{NPS$`)TPKw_+Gy48w8?_@DJD-RMf$+u3I3ImS_LT|RXyuH z4Hfs6LXW>DE!niRG2w=UW~eM$URF}t&?$T7G2o}NyClTp8E9O?@!kKOwB=-$KSvyG?iSNrmxNzWra zR^Jwno#vOhW^mVq>&|_QZx_qJ8O~h}|5oR#)mn-xFC#UEQi6V_L~PKdEbR$=p7hjM9S*WQ4K>YmOkM6X4iWi7uAUx zQC?t0Mri4zNfNKpLqzppLI#BfDJgSe^AeQGME)V9M}|H(3S|V3Zow`oIiP{Ql~{tT z(NQauZc#}d*}foQMBVq4ZStY#_ZvYFQ=ff8-!94*bTf$1b#^69O5L*UvKZlDX|xAU zdnBGa2i@&su?t{dgIkdysk@(vbhe(#FiIs5--t6245Y_RC$C@g+(|7{r1ow%BEYq( zaqNntdONhEaI|z9=clvoSloE{W4J!}UsK@m>rdQI?_TioJP7ac;Cd0BLf>&rlAuhK zxEUgtKbf`g`HL9-5M1|b$Ko0jhOZoLROB_isFu* z#)uT#+F$&UfMAk@FnFMee(qLf(2PkipnA6l|R4j?l&uP3=+?KModIVFe!UK zNEW#!nx}o21USxOJ5(JqsWuu(5q*L@CR*y~&YPaH3Df4d8eGUvdcMK$RByRob<{(g z{jE8BMMIF}O8<(HfhqDA<=Ut9wRwcl*K#bdc0R1fMWDlE4QH}PQj^bKPeRe}_F%YX znPGK@a0+4LFW2QCRK5vZH->KGkIp}~b+sA4jm)0crR_56Z-$ppVK5KG`D-@U8@~#g z7e-R(iQzJTX5L_pg`k62D8SeuWG8OjWhj4;(R^}i(5`~LyKzz>-SP(dwg@Y^f zdqv{RSdtxS6^fz8*QuL4aIwwqvwtdi>GCU^+k~kgCt$a%IGQh0yg-x4kT~u@NqP~k zVDB4uFOz~u>@gY5Fbt6!#k6n;Rk6@&+`Tx*?y=i`TIy6$z~WDRPKSt%uV0 zlhCNR!Mc5&3swxj4y|A2pnXu~Ga=yNUn`C#XUfj6}a#V31gUMnsrFrv0L)Ec&D3lRmaSUXA|G9?^CIfFDLx1$-xJA zpjvzjRMfP#OYN}=uoT+CS(#* zC1Ye-21f;D$SvNKBtepWw9I}V+A?cXw@k?7mMC(RPIDwXulQGF_^&NqE^ZwC@eB7g z=rt_r-`JM_ij#drWKhp+jgFYYkP&@@jtEWD3f;uiH=fzeE0eH`pv{c5N4)C9N6q4N zS5PssG5DpaK#5Mz0wr1_z6Y0dKozTQiC>axw%p z;r8CP6>_K~f_$<>`gg^n#1-7W|A9NoG>CFO_#Y99?@cz$10j;_b8QHGlYKMGaQ3@Q z2IrWU$L~@4gOwPu4+)$0m(2R(dAx=M+t>q{0dL2Vr9_!p+~0+Sup}izJArtBewDEu zG7am7BYTR4ws{_UqTZPu*DTo1U9w%c@+MW^Tf+})^ktL&v@44!)sTk!R_6H~cFO^x zd5KZX_%Yj;uGIll?3A2hQkPUvmX7qHnR$h%G?x-pk@azOp3FZs4!i#t{uxC>!w_wX zZ!A7aW~@H{{{cHd#J}s_HFNNd#3$-TWn0_jcM=yu%>mV?ai!5ud1ezB!H2LE~ z>6==oUmMDCXVyHo?@x2aR9t;eMdA?hpz@2ozieAGs(r_#Jl~R(^!&+V+kSV`jKy`o zTJY$d=PPp6oj>(`&zwlDCQG^-Dq#x#O~0`DXN|zE`aOU{M1b#u7S;Pu|nw9R`Bn} zh6$7MD=Qd?deM93$bjL$WaXV8i<2 zv|4Len5YzMYI6#UVW9w7wsgm-m~$X&z|) zST%L=KfW+9zr4vD8&a2aWOaSXRZ`yQF|}iA#t8DrvQQb5v-~<=qTl6<Q+L1NnI+)xne44v-K-6$w`v9suygj4k{00O0wNy_VH^t zX`#6xTSA))61O3oh8&Qz$!?nDU$V`nB7~4CfP5+#uFgW7L-T&%$Z)-Yy3p^3GX;F}*L$IAYO0V3 z|BM|=b#?=K6z~Y8B22_%Cg}4Drb3kR6d60pPzRH4Bn_((1jduB^@COJ-jU<`v{ z@W?|N@fp~px$owQ;cRsJ8+Sie`Q?F+E4?4T2D;t?4A|A%w4jo#y!qS8^51*`j-2}i znEjJS&TpJGTex@6rBiQw{$Fppa#9DczBF@ociXtBwM~6@MaNF3U#N7SSe=O0-VLVh zc?!fH`ctL&#mUNs7XiXGmETqdJ^(-X0_ zV)Eo0J*~YjZ<*iHI{)CphnHS*8Io|GqRhLIMF~?16rX{_?g~JWp&X%5OhrW$fFdjJ z3-oWO0J<1-+34RG0Tza3nq$NM2&Hr(JBr*4%R!dPw_s58#<4f@c`P5u+Wq!(kgxvm z>-vB8Gag;_STb1`$2obMY*pG+i;wg0A$LfU!eYdt;-e*62~T_V`9(5kb7bC=scuJ; z)$Nd6-42lLJw7rS5AdF%le43Tm$@0-6n?tgs&;Vm_&MJB@^#!b{Bn5}-)HJ~ZQ}a* zeqp1$L3xOKh~MgdNIt|J;-3#4l3(L~&i{Ml=kj~pasD&z6n{$olKX=HGV-NdYvpE2 zP(iU1A`%sm<*?OdldS%5K=QMYkyxMGEBRK-93SQ7a5(1Xz3whIz{j0kgYZ?u4P`Hc zvJ!a=xeY?NL9pL&uslcm{C<|Tvf)ASSHsGo&%noAhI0;uM(30Sg2de_h&7skf@Q)SMaU||CIuQ)hf z?!02?lgrEL8&7@?UU|DUrQ{h+<3#-))53EPZn)g6X{MZ7y9hX8V(8a6K8#V6=_HDZ zWhzUJh3gD`0kuHhNNtce7Pf|dkQxXLq&^9Kn)*2J7)#xnT2t88u(j}5;>p7C(DBsq zw9V8s2tVG-UDMcvr6L?F;@SAWzCf{HsI_Pa%EbmFo<@TdDPEemRNEMO2fUqlxA2k1 zm=Zv9Ht@91B89xNKjBaN^jyQ_#EjxRFh95;bw70T6yG!lEJ!SF>T2q1+R?;@^iV?^ zg?wo!A*X|RlLgXpKyEE;NNh{IQ(&S^MpIkURq!f$v3ap&F|$}-Ww|MIlhh^mCT>dI zn!ep~r*x;hxzN}2^ZdK{&k}!41Upzxk*sQrS0uk0FC-9_sijI;B|*nBV`~d^E|xBp zto}?o5b(oX8cWKSBuHYhZz_@L5flb!KFg(YURmRrV z;}`hJCBZQ5Fd^Tw!*s$#oA9R1=`JD|88rdZAb8WzYAqfQoKx%II6OL?XpA9Q=6E=V zi{e{ud%5X3@Ft~FOMr+X0^~@t+2+}&k?ah0c4s@gabs*fUH6GZrqdnB95-VL?Kw>Z ztfv}Gp^HF=5xn58A_ZJML5^i&z8Fu7GGIbdP=XdqGJ%4;LNYBT3n0(b7eHK27U&|V zFVHC|QvkX-SD>^=tU$>Pbg2LUg&aWhR|2hS&KMxO-_z4W^>kkdmMNV2uZG2zxLPVS zAVZF8HSu^!ZK&3}H9xWN)zq>Cew1lY{deuM+k~eUin&XrZJ% z>DMfhwT^Q5(7*=Gb-)&I)=|_2&Q&Aip6*WIi4&q@H%)4a0gEXf#fc0dfq^0B+!)iF ziZbEk5BuL;x9aqRxBq;NvaE9E*~-(0HXQ&h&)>7TMv%NAyZQP`;TH!sR^EDlu=0m3 z-8;SecmDP8`PV@Ev(x+@Nyj)aj=Ut!T>B{%&_;({vPbUZ@8kcIH?QJXdHeYXJzIUR zO0P!V;#tuxcq1~+_&|SXgACKGMUfDGU=+!z#sg|lNxNK57)<;96dP`C6+ks1p$mp! z76ym^`v9h)Fg=cSaY9SUh=XVxbj5K7oQ|sjqKyHfjR8XL074xO9%-Y6Y+6Ei)3QCb zWP}G;7l+8mcXsz=|4f*2QRT{`Di#jOoR8PMNtp}J1tA|AB5q|akUYV;qvXdaQ=~DS z-G#3!MiikUp0TJYM0E<;N~9O@!rX*Ej5Qz)bTIzKffp+`zqfwwDbP^)KW7%)q>WK; zqF1bs)@qw7FZ{Cd(F>ejTWPHP574ZL;5apKz~+0 zQDWx?yDVMIdUn0F&(guSskruBAhq`~1-fe3E;1175?X-)P}7?#S~Sh&6238~@;09yd-A5` z`h)B`^lxWvYJ}%`eG^DRK!=Y30TyG_PRXComOk9u(MDr8YRR**GZ(K!p z|BIZ~D!;nE&BtMms)(cbEI}Qpc_y771hO$kTiR$fS#7)X^n=;M*;lgf(7()nV*12( z&UDUZ?J{>+)*~MGnfol85sz8MX03sY>TnE#q~T;GCZb3IHD*Cf#XA|ZWN{JSDJxP^ zjc04qHr8P>L&R!C{y-fSPf}?<4bzy@S}K)<{s5cGrU$4DpfY;K$aG~)nJpHJ!hlu= z93d&i{YH**5l*@Y(_Dm;u9zGloQ#mo2;pR8d+vWJ-C3k_&A7FP0g{S z6sp$`9oE~EqSK}zp`d^7jE5#)eH~)jXERq;O06@r%G_(zpde~mee_m(MRi?ydr?Ok z^J^ONHcujNQv{txyUjEu2ZO0l8uB6^gwaN$adG2nwoB{^uCCc4ZVB!dcL(it`BnCQ zJ1sWmLT!y*jdz)TY&y|sa?p3$k2ccNSi~3ck1+vrEnX!4XD{(TU@t;|GmT00+iC-% z7_+2nX;(UC1zAOQV9Lvc$g%|!S&q5gZNe4-azd*BvF%(h3=1Z~gt;Lg1Nz}UVn7Gs z7lz%|+?E7fQb|Gtgw7Z|eoT_buP3LMmTns16*7oO&+=KqD#Eo7NjejAi68Y;BUZ8) z%`!ZzrBj(yO^UWS5D?*1_c#z$csG-^)ltqk8u+Md9A!;e>VREy)lpvyLTjonEK770 zLl5l85Er8uVplzx8^ei`>cd$`pBv#2;?{5*-DnkXjOi1^_VzU|REGMy@Bd@p%)2Hk z6TbnS!OJ4vn@()3-17R?xy$z4_u7m#E5~{~5{+D3`;Nd$eB9N=A3r)E!fg zO+7Ky)M|#E!*I#4NEv7&Sut)WuVePNkz$ z!PLoGtkhOqT!h8#QH`d8vNr*%1?gUV)Pl5fPC4 z6}WwQ)i4D3iA&GlchO3KA5^aTip{wGD{sR#qkzEDYJ6sldeK;^5-+S0(NT?bDX1=S zFKuKM392zskpwjsR3xCrt%~GU;W}+NYjSX?vNKzn82Dt{MJ-b|VVKsZWe? zlLfHIv&ajV2D$=wIG*B;YGy$Mx@KrF#8wFvAtdsPVcs8v0P0@D3){TFJ4oC12h&b# zBs@6$SMqnG#o2wB9(ZA>m?q(v)vB`wyP18MeVR2NVc%zm5!K)bnLahVgiL-yzmWDm zLj5Na+90gotDg7~j^sYb_10C{B8`_nRw%YHhTT3M8aFp{F@Th&XiZ))&6p z*<2q~YOZX&q@CV=fu=EJuZ|;{PJ+9Q!L_azTyO;i)>AjbwXRkAn$oR}M{I|k>Jd zs9#gZz+3Qb`ZMY?a0dLzcE<4sr|2*Ei^T@L*bcT*_d4%yxUXm(sd=b*E+#k2lP~pA zJ{`JricX3Cpd?yEHj|W6<5CctkD-^zfFtB?!ifA(vt*PlPDZj|FRRA#ij-Dk%@fB< z&1REHGIPZ1DvFd+q!xms zsfAH!g+NsgZucY2O2}ik@YUr|Gk@`4^#)O>GmmIR^45VePK)8J7*2|zc_bxh75|->~KjbrbWK)J-yVc64TO-;S+O^gCN@QE$0naQMUlzHIQWGCuyX z$5p1#&K`1ibPtd3jy{8?3n}T2YCRr|WYVgQJ>dUq(%p??D3V$xdoGAu5to9qYkx9t zXl+x$Q>xSwmB|gg@DA( zA$ z1p)eRQairnh>ImLQlsg9wfEe~!d%TqLfB<1=0$l&!);gn>$jGJTbRlgZEUocz8;6K z8mKYWoFBMC@p*GMS8b8y4~Qx{c-1(?iNHm%0awtO<}zH3NoR!dV0^wqTnUzoH{{od z4}fj?*Ti?lQ{Xev=@fx2V9}@Obfeg)PZepuo)VKfZ4u3SAV6oS47wXfH3iCIDOl25 z8d@8cQ@2v9#5KWQeG|1&yhGngJ)rNR9@lp?>~45H@Tz#U;n#t8#A6Mo1D}eY22V8n znfhzsFS<4jOb<-SF902Zx%uk?tAnqIFY9lMZ|fh4AL*`Y7BZ?xAvKmGRs`WBR*hHl zk}9zv7^dTLs~Ds}P!zHGn4ssqx){*&Vjkqt?;Z#Rg8^t|S&Gv2RGQVVMA#sh&&8rq zb%(lJ#lHB2YEicv4WI!){0Jw{ML9RlDAp4vjd+QX(`+0K;|20M`3hp_h;ml}6fP-V zXt*NE#6Mi^^E8OlVuk!{^^T?d-b0g;Pqc8(6NV1CGo*~)f zmXeVHQT&BfCo(YO@#07LR8^0GqcIc>5cE$%uow=;Y$PrSrkDI^RBNj!<3gSaZJ_l@ z(vn)`_36|7BYl-9Y%UWPGx#V7)rrk>+A0Kv3}~UsLMt^xSVS!lR#Mjqw+at|UEo=; zUw94t6$rnB07qUO6pF38C*ki*fx|oZ%0dgoDRX4aQ3!eJ01_%AT*k{iBa=j?1Hm%F zsCaqY;DoZ^7s`_A+|RvFh~2es38X?ope6A@z)Q8~BKbm{r$F9^=llWRRz z3X)iUH92u9QO_9l4+uM%UAA4k=@zht=?5Da(EV%NFHS4Y=DV|huI3jCa^S{|-@9S&kuNvih=SggmA5LdRhEPAfo3r2^=GE{@2osm z*|&ECr~wnf!lyRi+%B#>Wl79Z3sxVZa_CRJr>T_B-7NM>z2SdOcjfL2Gi$_yiNopl zr1!$_CM>}epGzmpS~)c?t>+e`u1$62`f~PHC=d!~!ZX9a3ce?qcc#J56Ym7xO}vvj zp8hOh2^;Z9nss4Q8Uu>NsBvUyeQKPFL~Cmz>6UnF9LD2}uO{vH`yk7(0u|yzddLWM zh0LMpxsiM@l>eC4Sg25dy`bK2=1JiDAFSNn6m7Dt%uS=pe=UkBm>8pxT6(PI-e_?*^ATc{bM&}1T!8abhh zbU8WG<97!dAAz8rtKj-H-)q7I5mAh#?*TY*(eYE!BCU?p6cSPRy|o0OZP zt75CQO`t#eVBJ&TDeYkLxw_$m&l0^I+?BXJwJq@&coaUKc)IRL-EsYQb;ET|f%1b8 z6w*k`>YH*+`m)5ed0Pz&!(rf4Bu| ztq2rBbwA$-jK;3UV~uoUktLeV5<0L%v)P#6M>N|tEzyg{Qt`&FgR`k4Hx?J8T0bW{gqN7>Xi9#a#o2L2Lj%~Z;!vR`H`o9 zxOmgb^W!~X>q{>`d|T61@Ky*wW!2YBM9Z$5*9|5sYww)zfcJu(-(LT)2j>_1hCeWw zk)0R|=NUoazFNQm4%%soGo`7FIok?aq1D|q2&Ndv8pk$e%I|>e|D#7XMq=-1!vJ&iWDNnNC}sA>r7EO zs$?>Cg$ZB+Y%%FUUDg#{9bX(@n&zBV({7*ZoX5}2%*{p=pg^ghl%&RXu|3!x>S$P4 zSXf+GTG+T?jElD0GakE?iQA)1<1%_vkI>`Un0SzRFuzsbnLnC-vF4TR(WWy^-pkmr z615UaPlI0o2-bs<%CO-qZL1GUk(G)h%ZDR)rx@JkMaHAq;qp2huB@ZRWlCDfWQl_z z6al5{>3AAfjDaD?iU26MQ31paKJPx_hVQ#U)cv&keK+kMg#8DV0XfU#6NKmu%ELKu zB=@`AFmi3i)RK|=1-hZBTr{U6hiA$?2c}SEFoiT4V3XOI?MBA3=PW+>*E7^p&S$IG zgZQnHZbKaIyQ*>iXf~g$IsxB(dc?FgCUnM=PTFg&1uDZ~r{+NeqoZ3}oufe69ktmM zk6aw*%G78Aa&v6nf@Qv%)+fVguRZSM?8NzktL)31*YHHO9Q<~5@uyFZ??1WEV_|DAV zJvXkX{4^AdFq#&czkkKL?~iFpRUW-()`=glSTi;dQf&wkW&3x0bN%HL3NzO&yW!r; zx4myQx5#<$=H1_4eEWiiWwr88d+%z$`ltUnIHf?IW7R=;)bLnAmNEja7J);L zYongV$5de22(eaT=d8q}S&5yq#sYpND`WfU!k?gIUS1^ckWKPon5O*0pBr{;1^vYS z`O(w&MwfP03#ey1vB8s(fwhY$R+I_<(l>*2$AQ9Uc~VHkwxj^3?|8&XH{NmPc)4= zcXkwtn;b6BiiKbTrmB7Tg!vgn)f~9(5T&EAqb6U}NmpBf%tpIETufV?Nqv#DG`p&)VnvaHYOIDNj6FCB7)PNw@>5Vt zJFPV+M*ICfOf|GPNdh>sz!c2jNR78zS;J9g4FpnHorNsUBD=j_?0bkGvXERc4*IG| zck-KF+EU_m(53Itck3r~ldePwGoyr=QNqk9W zb&lq3@EI@?0cJZdCUeMnu+dJ=dVS{QYn~ayBGpZ*X`36L9fcN7OKAyLw2tE4Nk^s* z*ljAW)lq4?hNB8l1wW+s2XrD`q`I-ng1^a5r;^Cmd@bEi^l!ui(Qkqig|@8k^3$*X z_eniE8MpWp+Y`aatj){s_>bAh1^O8m0us3P)xr-QJ9ZT0 zar2}@;8oyf?d4s5K+uF(ZHp|Fs%??Ac`_TfMdQUk3g?tFDt$O`NPIT5Tm6zT?+Olt zo--e?9AeB*nxC-jVxIIp;Wt0TY~i*D+x%Np^R>REfnL)ZTc2uP;GY+0Q?IsM%b2fZ zI@l|1-*k2O%!b-VwbS#=S6IwZwP+gan?g-@nKes>NwaBR+HXb(Qq|SP>M_+klGqMY zE;VZNhx|2u+Rr%gpD4MIA7@y_g>%|1o&3v7H~d@tXZ$ArDcxuI z+I+ixXMEqceE6^TSR`9LYG4b8y&qpjjk~f80P> zJ*Mhpg#N+ zDj<%(eF!D{4%?|S{&8gO3 zeePSP?=SEwakHjbbBTuQ&VNL^d+Q=4J2DE`5=p}!Fzb*6mT9>vdk3swY$oY-Bk98l z4w!;rt1g-B0<^OfF2M%MEkqD6h+@!caWW3pW@T(P-BM-*m*^=w&?R9(WUWOB_ave@ zjAr8$S~OZq`5D#@(|qd_R!h>7WozweN7|DPWu%&Ps=m=u4i)vOmP?tL_GwbPWj-^X z?Xb;v%n!}i+v~5jEM->Mmxq>1*B4fqR#{dtt8A<7YaMGttEF|})zO>tcbM*CH-$Ik zH|QJd?`F2z@A2FtZVf#s-J8BIf3LoiebV}*{mIZyX;=8k$P@X!%wG1OZ7{S?|2O?h z_DlQu$d}O>%kx+3%j-8BC19~fa^Fk@|K*o2 zoFJ2oT5CAWTCKJ)!d6k0a6TUembnDV-TE^*r}E%cFex6sml-^BzI477{ehLk?sX1iUs?cG4y zn@efI+jKYOvIQ&m{AZ-Z^t=0gm905vj?RqcX#V$WC>A4v!{_un()o-(Z5QxaQlX?j zRV!BgwWSNwPx(zodFjFd)mh*jX$){+O(a7_hq5DhhqeXnrj;ZCM7Gz3-Mw8h>sZg9N&KH^O#eK!8 z;xySgQ#@DXi?8#)Fc!kBPMV1%!BbuZC3Jf$HTq?~%ivy!-W zo+v5G+G`i}lBRXHm4Qky?^1`qV;wI3_sF<@%ZZjA9{+J-56QD>zA*gkUjI}t2*Xzj8V!T?)A|0aJgYM);jKRrL?Cy7-XRdko zi@Iw+=1C?Ji9$5?u{DmqZ+7p7q{D3ISv-{KIJg$3-?+WtN%Izh)mE%eKY_8j&a^i< zicQB!evH$LY*!_n0OS^vwg{EeCB0QTNqc#gr|S4cLiT~pi0@uRaPd|fGJ6flE_4g^ zHxa!(3<*aTYb`H2YhtgesJ%=t0LI~PtaLMVi|w}Pv~pYak?6y*$IxTq`I^_RpK{V&Qd)s}nz#r`kyf0@qp2JCrJwnyc-lFsGx8^waXAa_SP zQw3#^!fJZ2+*{~9)vG(1MIXuDp1(&ql-Kns6T(D8 z(a57YT@wSNI$y7vu_be~jf&)S{sjCKejn@O;ivE?tI4KE^~D#P4g3f#9yFYj^C%mU z^J3H{M(uS9W$krVHK=HUGjUAQ8;V9;;&|-q8LS4Cqh|F zIqk$tBIlj5oXusDR#wrqDE6K+EV1I){vC ziT;yn?U#4R`(;MnKt+#6>F5&u-Q#NSLoLKQKZ#W#%)-_OnKUzrK@lRDWND(*UxYsE zw^sau)V@h9MIXbz3=}KCFErD)=Xf4vqWMh>)^$L_zCN;FIgp>~CB9OGbsvId)@xJO zSLrtJn#M#kSjk^k9YQT8nQA%wj%{_m9#xuv>?t;m~GjBcKv6{U~1#@VdBbEFaONNk$kiqys*Z~WXf^oPf~ z3#b0j<`As8t>{;^c;}T@(7$hNTil0vG%^_y4v)t+h~C%uyRMW=ZetP&z3AJs7yTW& z@5nWHkI4lRgN^T_VrSar5?wZghpe7$*Hfg{2c-l5kPXp`b``SwFj`*i@Rh38s@Sg| zvfisZWPZi~IWC3-+D2_b+l>2lS94R2kLYH(X~(^~ySO>WR4aiQFm;2 zFb>-WSw!N4yw~oyHS)npVuv2Z@)j2NUz;SQlSWB|>spWaTC?PsR(eEp`Di2S6f^}y zt3^r_z`YLECF9bCx1ZGfcld5bASj%Plu;zADQu6tdk@_{cc>gu-&tU;ZEX9{`#W68 zfPUm1cKRD^U! zrl^(~jW;qN-NY(o@S03BbBu0|nP=#u3}WunvkM4~(Ni>y39VrX6`zXy^h&aL&EW-M zVfc!-ZTYMI*IK`U7TT*-T#Jx$ZxMQ`u@x;fUO~~u4IJA3Ur_aGxN$wrkn6l#jjM*E z271bX@RhP$5>cXFm!uhc9p52*xd_n_!3Rp3x zDSVyZL`5n>?IcOwBsWmIOj7L=u5@zUr8ZNkCmj(|pDr?tuX8KD&R6swe7muo-A|zl zzi$la?2Sj@`AyGKG?Y%GtPItur_pt~!L3+#|6`9<9tfWZpF?MV=d>=?7}yE+;ma

zo7w*&NA z7pR~eWNt@|BQ2LDE*9B<56N{PtG8?qJyTtljU1tc4=ttNs@|NgGms&p* z;-Ba$i&$EtL1dc}7@0IT3p$}k0*7bDRNF4?lMYBsUOFhz(#OIW zoAHVZJ!%h)mpu)oqOxWDyDc#Ts!eCgEoV`7DnWIa1))^JKm5D+4zS}L&%@JLs04hY zrA8&fiMhmlLZ>FqCFr>XN{BEi@jTs!!P-;5hyi4Y;!PLZ6QGDi9!!Ky8$_FyfI5q2s2MafO94Nv+X*L9C_>hXc%?aD zej;g(TWS^A0(|ZDV*)g1R1@ZhvZ?05?*Kr%&xCbJQ>~JQ)`(jpZVk9KT=YS=UK4no ziB@ePU~QTaoppKE=T>{%E|N6>c?2%aBoB;^WVq6Ue;e=IxbLH(%n#q(y`!E;()nZ} zzi{NXZQTL8(PI?_SI_jd#V+*O_U-+#P>O=jXMw30>_Nm&|eHimEymR3!^Q`_s%1y=5Pc_VcGNcC#76F&_ zPJxn0Ab})+F$)k~05F3g(g8ddV7?jV3xedKbhN<%60psw8t^oyi}EK7rpN@%5zBG? zw4#}g37(!-mc^48X|W*OlqZw;6bwEEJ`Rq7V?%m{R zFeC`cgpCjcjQGpYTWNmZik1@ZS8o-Q=qv1T_G#{SVa#p%%#)pR@+RhH-M!3xy2qGr z@Z2DWx_D>G-0KKA`z4P+>HKa=jG&8GQVatnhY}A@=o$SRf*X_XxFCq;G4r%}-mII$ zn*}pNnZW^Bz};o@DKlrr*#AsV**ul_&Tunx3!-AR=()AYS?q^2Q3jkH&0 zOk7fCLNf9hr2yrXOhSOidtqHfMqZOYKm}R9+$?a?wA|f!CkA*D{XRP}fiBfu!my<| zcT~n8ai9txVQWtP((3ft=xC%4DHC%|2&zga&=%|#Zm3Uo?7L;WAUp@Ig{E@?clFE%Aj z1#XsR1NYk>bj;i4rN_`$=qF-Np>Lz_ao_X)mOmT#oqQfiEInl3ZGRyAfIJsF7vpR) z`sRf*l#JhDOfaY*1q8T&;bJN>7on+$7?DW;^mJr?UF_Alh&gg?@Kr0ae$SmSa6yoj zoi%9Gs=bC6X^Q+PETHYeVSyI%B8k$QqNb^NYJq}E7zP-isjq+7cbAVI^PwX?S>ot22ajpS3qp%(x?XP4L4( z=F>q0l^Zc`RI61~C8cp7WrAqzSniX+#&qtuqox%UPoy0zW-Tl?+)2avDl{l8!!Lzp{uu5O6Yx0e;2W@{v25j zk0$d;*UjP3(A8i5$~%3zTk-1qFPzosF@*|KS$en$Tgg0$e9y2F0V-YtFam6p9CQPN8L)k|WPyXg6UlxTQzlE?*^IYy6OWn|y>iB7dEGmOI&IO7f1B&}$Dl z`dz`4yEhOD_J{FdCSALW{A%HL)ZQLuOkv6t5o8cB?5-*Iocjqk6L!zLY4;nMF&0di z>0AlgX9mk`U#{<9(_1mRx;6{dn&Aa8rn7j-m^_MvK2qW(GU-byIzE+1@)?;@ba<2I z5;AJjx69PUGAGnz6(Af!F~D^W2H-@ixCCazeKCD7APkbWbSA}beeZ#ekVZEH)SDBGY`&HP$>ifFf>Jp z@Yse6%Y;@!N3}t`AVrz{2^$CblQaZMEW*(op{{ryhxPlH$q~5ogJ%F6bVZYi5C)K- zNfs8kh9(JEV|JWhS-!-KgRVL1C?-ctD~6a{g!YYE-e(*@Smb1Gfnz9cii5(BI_^`t zzt`V;JZ!u{es!GEB?AwBK*8T||EFU9lpe=-jH6gS0B zvC zUEmM%ukwt@t2|x_zrdg2S^n!5myS9FaK*H%_JRefUoezKw8$3boCR6nN(}h7wDg7g znvx4v0Y=wmKx~eTV)b@A9g*QWcrzY zVXOBZ<{m-+hz{km2P5z};v@VK!3S#r0wd`+In4U<3-Y{?m(n8Z$SX!`z+IzWy>iGYw@-}$FL0740+Lja! zB_LGy;O4c-v$G_Ip{HkUwx_;^HQRhMR@0tHIo-*GE17Vo160Zx51>Db(!xU0x)29& zbjQja@DPV)eJ#v~h`@w3KUaqfJr+o8+Oc*zliut-c5KhnGuQ9wDup~9L*Z~Trv~0+ zM%Esii?+w(>He$fE4TI>`p294v(->Ja-+jhyzb@ATcO&^#>N2izpzZ+Oa6=IH`5sz z@>AYEI~3zFLt>M`;cy!GxdgH&z&>Qhd?*38!zt9ERZVtN{Yc`8#0v=~v4p<#^d4m{ z0uJ|AR5Q%AABj8>c_G3?n#Yh99}>ZHRcU?*4MBDEAr%h|wFBx5k<>lJtBwOaI>_UW z4FW96?8BtWS5XzbL&m%pjd|z1wD()|Pbn57*C^G4KQgkM_i}W3d%Jb?ADIH?cOks3 zQKL*j4T}YIpm4Zwq`(v;;I9P%P@+(-<(RphXeX@AjIkAWey}JyN#_+}i`l7#;$uYG znFyy52~%}@e5J!_v^_nYUQVA%>(UmOnQq1X_@MzbK&&_eMcIw4?rHZ=FtJ~{@E@v;#O(+m7`Vwbx|is0sg8&1s9r2EV+=jU zAP7CD!L0g}H&`MqJ}U!X4`MQOo`E$o*I&8!Idluw>x@qx0@nwL7r|P^>>BB;Dzj%r zWk$ad;!{t$#+KlQlwNYOWP-EHA0Ck13Q%3#LKmd)Wb_dX|-N7zDp6>6aMv6l+8XhWl zs&pUJ5#FTh37~EH%LCMo%;hq*#nTtiYQDDO(VCn0J_fRl6oUoiC+TN1gte*0oQPqx zEZV`=bnZ!eGb*hWZAOwcK~HC6v8E2Cc}B?J#mdQAj(UY0g)SB;B?V;J^?P`~yz|PH zqjybxN3k%hp0O%_Q$6u$|6qGKQV2}{c;n=O8@}+)x9=G?*~;9$l2Sviq5b`(v5~8{ zbTr=17rOR;Yw;T$rAK~+wq-s&@jp(ede-3a8TIVe>AB<1WX)-lIUS=nn5VCpx#m;5 zH*`u;Vzc3za4{UaioWmW+rG4W^XzR$uH5|YogI4;h4`j}TT5=Y4l{kqjEU2KVr{OI zKHTJu!Kw;~D;jM^!U&C09QGv=dM1ID2XI0HdmPd5Bntqklmu=WhJj?HR8D14L?;OJ zc!ZoIl9k{bS;*XlQQUcpn5?ob9K)SARV!i2+wPT+SMzf)8R!Zgan zj#ciYQnp~b4y;)DJm`WXOCH=Nnm$N`R`JBi4dMw!8(F~$;)!*-;hvHmP_j(6_#0Ct zd{Q{2EoCI^*GO2dk+5ZB)6zwTnzk>gT0s#q93jIIG91CHIY+1s?)=9he1JReJ_Da+ zv(-wIYZIp3?5}{(g;$|j$B1_UtmOHs+EzAJr?A{?O<0q2)%mJ!p}Jf>Rb> zjb15km^Y#YBeEK&jYo_>G3ty!q!L*w63>ORW7(Sp>ynmb0g_y6jZt zv4dLqPm<;j66pGL|5eDEt~H+t(qzs~UqH{Z34b!6_XZHh`?w&m=cc8M7>1z=2-q=f zom$RxGfPq9)g&%jixVZPA!L$jbzPboBN{#M@!oCIeuu?aP#c?E>INed?k^N?7;@DH z8eJP>PRSbfx$+id*FU&+^=(^ry-)pmDFE33;x^R(&{g@;_D0~UTsR(g7^}OO zjhgldo|zuJ;V{0Ks3_g^%sflQF(U|)A{=G{?&b)wWJE|+W zN`)O)!PIq>rQu5{N{&Q12Q2R`H2_B%4Dpzm;Deb4us0KYfR$nmXdaSTPxnUEc$MatVNha&xgS8&YZrPL@YDsT?Fao&IoHR9szBc4vxS}!vn z6a=%^9G6t3CK10;XIE)nLSqt|lBT73>8Ny0(o4r;$NoWktQ9NWM9uXdjDtIWv?|pP0<&wX$+vl`okD%Gw4K<&YRK>q69g@aR1IP z0)Zx-CU~A{f#=UvhX$V-Y#U+NjJ5X$IRIEdr@sVu-Xw?M&cBgE!f=QI4hd6iCI#>+ zq*XBHr892-k3}lKx&l@^@#U2!SSm^jFqM;7cRBtAA7Z^ofnT~_DVvpJnEa{Am@=R_44DISjx-(L-CiRlkkinsA_cwR9K zA`r4zgNcAO96%w9AEX@A(qAx}zzWQt0n9oVmb>H6;3lo~^e7lS=3Y9wcTX|m^V{AZ zk#g=!&~uo4+@|z2bpj*MQ58){=uG9ps3{(hswNSZ2n;#G|8s5tu3Sq_ z$hG8z98gj?K@N(ZkmTB&h-_h9(&+Ie(&URkWPct@3rVVsVb9)4q=n83mGlaN<|ku* zecT|J33xNVe$vR2hx8~-A!1EgUS7WB5Nq=3lbC8k0A8`sjG+OV^sKcOuF-Z@MEL*H zhR+!1P4mL%t&i9~Z+|3wr1q52So79=`^0^=ec=y@2W$tzpQjCPgjU1!oZ(K(N#>;W zxAbqVtG3_U`MRwx)x%Y}UK_B^8gH`ldAd!M6LKsNxx{gFg}77J#l+ocxAisg zkD~rE+t%=R4Bs*SZ=>F0aEsw!IJ|}4Y-LS0tHbOQg4U2F%ubvyJE;!fL62kW&4 zgQ4&ax)m#y@018kBatzt%J?_BT|mM|F>V-HZ%PpGS2v{_Vib(zz~>12AT$#?jyr!M zbUc@NGhpVXDZ)Y z4t4fZdCG+8PFxN%%vI}7c(xqstQ4}R(g`zx5=uLG*5`JVd8CeYZ zUaw>{6@)o~J}014!Wn^{7M8)M%e&j@JBGxMHh&p8j{A;z+S60~Ypt-FLg$ISaX$2>^&jCrO! z)1GB-l@g;GrkwS5^&^(P6?o#e9%?oHuKvTlBFfSYx&Ix+q zn0uYrqKWVIo=buXR+)+YjL0ePl}%cZ@lkJSuu-q)e3r1}OWTl5|KK~lyQ)DVhcN2r z2Q}%La1pk^JVEVd{<+CTJQGCQoFFz>kB!_~+xSSKMehr6L*e$ph-!snT$LX=>bTA|73r0`V5M$Ta)=deLQi*^pV(DZ+PM>~hy zMtq}77k;UlV5&?vKYtg)DELd=-u#9wTS1_b2X~IEFeg8bwvQheKRC{e?_vjwQlj0& z^|b4?$c{X4w8=>61mbNnaiGcyQGyjRrc`>#UN70}9l`7P-7}g?bx#G%2ryjH>th{Tl3BMXBai=DJ?`GyOh);mFt(ejL1Xil$Oh{Uy-(8GWGNB^wsHW&h zCNww{wPivctXD6_luW3w#F!Ujy_wJe?x>q$x|qh{~$9lF2FYYN3LrD+?960%Pvc-M#UV zk?`o)C_OhiKT1=h;wU`|fx}LBX>@AO#1efa=2-`&CA6PB-QZG8%X!et&uUFiE9??p zb@D$-7+5PCgSx1(w{-SsT(FuGv1D9`1dzoVwItT-?6Z*bLyYRpXC-_7KZ<*kmk_Hu z$9XQ%k&DCJI*tB45^M(=+i%Z)pkvqVuInBgzHBDqHXA!PHhLW05sy*lPwgsyaD=8^ zT?38cNX?{=v~TY$@5p+K!;S9x1|N}gQ&!|u=r{LUlWqI=-7-8p-gSH9=3TNIEBGEU zW*bBIPv_L~R+G{gCR#t{N>|{qq8e?|`cinhTJ?1x!vUw6(lo*WFSaB43dSC2#prG$N({c8JSGE z^p_gjux#2@R@=&a8SuYQ9xG3kr_1wYeO8B5(x1b73uShpe5y<@l+hF(SS~X`-kk|q zHN#sb6N(Q-`Ao<%6boiTG0pH+OttkELdE_772D83RveGTtX7NBoJQ&{mnT}w*Eu0z4OhJX-xy*cKA;VA^F+-EWLk5iSnW>Uyd{h2%g8vgR9hCd|#KgPZV%x&sgcW+6y zW%(ibAzP9?wmh~hzdd7nJn`gV<^3X=;h9WeNPq+q2+d?5Kms9iXh}$+C%KdsD7{Q> zdt2aeA%ui5B&CFQ+S1zwa?hc(^gEQ^`vnT845WN1rG;_s-dpx$lD6k`5@~PAdRbn3 z?X~v)*S`X8N9UZzbe~b?nAyv2y~W|i4bi`#laIFA;rI`hUN+;7#?}>4nT)ydz3|rU zo9}A04FuXyOIx@WUh={i6n>p%m7F=P+pX1{cd~yiOl*0Il#QB{9vET$^zA?lO zz*UBcIGrX)f^Wu9TI%m+AO zS>14sAQxv67l3iWcwjcW^qJJfOP}exaMb~4WbuJ0v-qM_D__J&XuzN)dgd7J0_U#$ z9#H5KV1S=4y)V2UnzD&{hyJttMpfA6)!a!+3nw|vn)L8~6|_M`g#kONNj6mTxdau4 zXtWX?K^4drv}*dytv`YUMzV&a4$fU^c(zbmtlPM4?rq-N0$ZdlVRoRunJUyC7Cf~O zT0}fi<1i;`@Q_(EWr3N>uNuU&wSI4N!i54S?!4ia*LJ+N?Yiwhzqsp$IU{#nb?1hK z^!`V8?Z5r=;qTo0)SZ96b$0#HJ6>u0X5SA_-?s*1Z~xp_LLWi0rh^*Q-jucUbb_}p zaT#3T=>R+<;*)_&r+q{R`&0tASMl6N%U&aTSDi%Rs&p#rW!zTfh?!Kza3J%ept-C4 zRvQ@~vjd`q0YuV?G%T{*#)-l`2bOzG_%Twf#dFYYFM!gS&!5ABSmLlu5{MedP47WZ zN95K=bfix;`v5X}^`Q|W#+r(bN?F}HfU+Asi~~OnegJ~e6->^3xDlEFts%)>Su+vdc&r8NY<`Izy(pp)ZOuS6wP;VJ9<-n9V35%&P zF_l8o(4nA`T)3zA%U5i^XYgN^R8ys3ZD~W5yLF!^#3PahD|Yvd7q6Xl;T6Wpj$(qY z4ZX4Ts*PWIef*IfBA;)(e`Ps>X(=6@Yw4@|J0$mx#=mTe_pDrg?F;|9dAa1p^Az(M zOBjG;xea9D>rGi!l0;P|MM8foB3C-n^rhX{Cn3npCU+LGL)>@}nAkCx+l_!oKgXJ)k!7`}uO5`$uhIwLg ztCHTAr;Pk?{(q+S<(UqpBUaB$%k~O}V#Ingi?S>EKBYg>7h9ECo!ul{ty~@3l(|FL ztn7$vj_t_at$Zc>P5$f3HzQw9~@H_-nYe6+sm4h1422 z4EIACvc%v2eX>&!`$Xy`@ip-ykroLOK%ARvVJ9(T%S3iy$fUq85(j&{K7r-Y+hP=! z5-DFW5lpHe1jPRCrai5+nRq;y zzCkK4X_S1^+WgYx_bk5q|3Lo_Yip7{U0>AK)(7`}`=;qv(EC5Tc4aB7X@aAMOy7;Y zAOGxqsHti=F;Rq1qyGB)FTZfC49pp0>UkttDfnCqE14lW(i#nVbYh(9QWQ2_`Kg|7 zv}M;uTNY^)Ya@b?h!V#j3kEthAi@GNL z-N^_b)5jY+xp}BbU^g^A;AuwIgDF!^L&&~E9j91r;lf*9S8#G7^_&5}3vSxly{M9i zuMoXrzQgC5GpmtZ&@OWpS6qqe92DvOuf94rr&s6u(^obYU!Wu7EfFC8)HVBNhOq&M zzYZ^3ZX zaw$hm^7lJeB_9zUNLV-I#hf*r+j2YIkH`0y-=p6RJJW1u1iVN^U=$Wf zBDd_b;KjlyR18l>ipVd9B1%+&f})}~hd-2G4B!vjz1~FJxx{6vXIS<=x~ib zs1NJ3s(0v=egvwZ1l0peTa5#AWfA9S0;6Eh#Na@Gt%&T(XU{-X#gM3zr%7sKLaIH5 zL8L7rthT5p7KYX| z8wNN<9Vc1ga*!RNmKr zRzSOQWU<$rLd08lt9XTjibFM0$hCwCYmS?R6Vtf(YPlxQ$+KSbTD%wC!i#RsiN zKIfFd^XM?XMhh-<9~ZvBDZ}eR_i>?P&?0%ra(;;3xqr}%*~3I(lL?@MlgYbrz9mn& z6*QI5r;>zGdt=F4uUK%I8eM(=&tBYe$;Ox%bj4!fN3Wj0;;P1P^7%(@uP!Tl1h13c z-+1M#*DuLWOQj17uld&Yha;Q<7vA^J7uM!qxwogbV)H{m-Yp>==0EcXY6kN%2*HUK zg1F7_A|2L7rqCTuG63TgebC|~RUhfdd@Zz;uQjjk!|%c*g>tYtKHz6CbQnM@>d7Wf z950TKHT$r)T2Xjs^^+Vl@q=V7PN|3RtS2$2S```Fb7XpA&;cEM2#Op0aIqhf+Zjj{ z(Y+lZXd%vlg$$-xNH1vdnZrj`@}#8y^R;I9e7?5ul))4d2T-3lF)(mUI4+D0v@i|m zXAQjoT<8I2J8P@qYKp42J?wc{eo1^OFe<+%+eX^pZUy!_dtIxYt6hJTELKUBbcqg# zlC01Wul%8XkQO_dPfK@D6tp_K@Iwb)6W=B_);fRa=fHvI{cNcxQLnD2z|w?3MJC`=)#_&AieFuD+(c`Wk9|EU;lwavkm&sWT_(3Hkw`Q5{XG3g~1Ek!_mg4mH)B5op>& zYNY95o-{ETszMG_ykz#l+Y&c#%NIqJ(*!o;O|)E3x1?Des#~(Q<=hS%M&>_X6(CEr_maUeeLDi8*r)jLeFu3Yig8 zh>4|eWL(9|vPqRlo@zB`1(IGoi-!;KwopR2LS)bD)ss`l{n1JwoVt59{^KRlx|6-RfpM_m+Mq*@f#*NZ*RSZ_qrVF*Yl%zMJT5(a`NB(#NF2}THaaBCvYjEic? zA+p)rF#cL(`aXn~J(L&Mx?*PCc zit!IVs25R>P&_-P)+urJ5No%$$Iy8WKN`>Y<~|9QMtitIt{TO}10U*~xC?0*w# zTzu=eK%(jlyZ2&lrF6MW%Y=Tss~z`3SBYJI*{{Uy?Oe>GdJ~c=t4fc(#`Sn{>VO_) z3A@-nkDD*emlrD=*l)5A+yA@rjnGK@6X0?7JN9qM-%=hAeV={KewaHfJue?oj)so4 z|3dnN`$YOo$&c7!JHeQ(sgN?;X_k?+SuR{?mbz}1@wi!fJft)XIb7k}?*Kz^h#Iuq zq5hNQZqJ@}dkcpMu3;|L{KZ(Y2@sR ztV*)nVX~2g6eVG2QH`}(EeyjVlg#HuW)rX~vO^k$sC!z?L4iwfBiv!`b70k9~oC6}8^&c6p0}i4jy_N6*W9EA}P`onQz`UATDO*#+#!kh?SrUpg$b!{K)G zZJ?uYd6@TAVpy@tLN<#tK4E>KOi1s_Nam%}$~Z2Eq;b$9m=ngacHQ+4u*{j%RhwHD z0TF$ZUG6zf4Y=w^dA;{MD(wjehUNVhSt%TbC3C(St0FT6Eluyjc8!rS>QBR3}KufCej)s+TO>1-8d55Mk zp2&jFKcp?yqF`sSZ+zyYCtqxu)46pK3I5Pdq4H5_G!wA4|vws zMUHzV6s^Pxh4k8Ln=D5|aiPF)$+l!JSxa6Td@T5w^jMO0Xx)i!y%$^nm)RDx3lj_U zWvON9du+qPu;(kSd$fC!!-e23`_AC5B<-^I!&`-0Jq&6S z=-1RV4%$$w5Q3hFpvGen6{K?!z;o^hAC)5!I4jpG?*Ss9-=iJYFz&9;qpDQE}!SURa7QwlGwwA_k`jKU^XiR6jzB@Dd31LdYV`PxzEP5`9lb>M61P3hnu%2kcxlbkwKQ2x^ z8?0%#5Xsg7@ho?isX3YyScLY@R2wZt(%gn|+SDU1IE=dCu^&|=Jum|vS`_iKCtmjJ zH5glwZoHa)r}0Ov@$0r}Gmt)EBH?Im;t%ktT{D7i%yktM;(l@BWB6HB^+hO6b8Yzi z_tfHv=V@wj*+uv(0ib_}G|V)HY1)j=BqvppOdg<16*1#o-X~DgFvJn$BOX)H6pJRu z-9)qPn>=^Byz@D@$F;}3$FnQBtMZ29jo`2KUzhECA<1cugmZ}7;&``Y3-=WGRaK@? zx73BYXIiqJs#Q9A7CU-{UeAKa;^YOXr4^&+GWjyCuV;&GhhvAZ!?Po>BltDjh%n-L zOgfs3xGlWEd-z;bh7SCQZ3Y7Yy;AAo98PCh!pXekWTmT8?$W$_ z0!0t>bRn}e;B4D2_eEf&sBMbxh*R-BaTu4iLZMd9f1FP1GvV*bXyG^Re(-_4%klj3v{2Q|^4rE*1FOJ|B zhyjX|Ph0M%@)FvC4#ms^;z zeQXRDW9*m>6)f6o<`X0ICoM3e1GO>^V-`Ps-d+phaR*d?4`-wivD<17d+IJDB-ACm z7i~y{GcV|_TktHW4bxOsaSbQDe;$?T6pycV>M&o^R34iEm;uj*n>KHzDRZF@Tx1U( zuSlwR@t}Pkd>+nWgUyC#y=LJtjfjw|CZHGKK}*o^)&zmCdC-zGM4b2r>xqC_cyZ?_ z;?a;(hEJ?jS+SPt@Ym94@vs4m#zYqj)Y66rEn=;N7j)+!zB^jHQ(&5Z{dfKt2|VWm zqL^AkBW9AcrbT1(O=38arK8)Xu=;g(W6LK5_oriVM_~5SMeRvg?M!rDy8YxOi)xL& zyzDb}esx|x-}pr$lw5V}=_MD=M5-zrluAPT`t{c+VjEIaQv1+jjnS>0bRyw*2ZIA+ zW0!j*ok}Du{<8V`Lf&=+j77l_qCXk-eJD(BL*5>TSq}AS1titg1Yuib;46 zQ>04aYKc@!qb>I$JD&Xj{i_#`544n6Q+Gt{Sx|40(z~TbP6P&j?E|S@|Leo%s~VXHEeHseVpqg2JA(;}}7A_G@X%S1AP6R=;Su z+e+E(7B4HaiaqOBlJZp-cF zcFPZehwKk3U(X%|Co1n)wKl#I3@S3VA3}RL_%?S6PoEBQA8|Cd9j9?z zZKv(qSsWVCmVJZAAr2!drS4gsgT-7uN9E*l0Dbm2iPfnInJno(a!&McMUgV)sX#r#yPRhty97quy5N9P4-zQd{WHkV{ae# z*x2?g%xEdeE;sJ2?!R#Q1>GI7T8fJ-Ow4XP&&OmTSVl6ex9Rg6CHR+g%4>JHkohjf z-1X1DaQ8j)a+z{~pVdD?9gG&@PQhtr`=d7^=@sD zEw0XLA6UuviFAkwx_$hW%tid$%n9Dsl*$yOg8`bS+!p6j3%uO|`z&iLl%>OIoyWtQ zdAOS2#8Z3+#ew<+Qj%nKHb-_1IlJH!L6|K@@IY6>C|N9rxQK&s^L&D4{4~wb4vOKS z(;al-yD)tgXz6e{t-@*^@*R-k_@mS;;06pe%gE8NFoM2Tq0a?7T!w4VMZ1(@upaCU z(m`jz(FG_-$${YiFguaur#CMR@Kz##(d++yI8b9!eq8<4VSkMo^y2E? z!`>PriMaaSVG&h%QazvEl;o~!l3yaJiFe0DLWo)Irmt{({wr!tbLqh}m+(i60R`sL z*U=YSZU6z02X~>y0^E!g)I!lzJL_?zjP}DpkKs5Bf;6CuNTKnBHxbhkWDGvkvk$%h zAM);~d)Q68@jg4#v)>Q>a-ld1Z$22iWL1;Kb9@2`F@HW%o1VF(d+x@&sms?H4u{i`3#4Z*n>OeAot7KYg|*Y;E;m0j z*D?R*OV>V?O!izcE9`a))3cq6hA!Rk6qdE-TYxke1AzH9K;Ib?j8gzo85&F30Ji&I zrq{ub(YsPWuhC|gkKHy&OvqAB+ZvaohmR92DeG_@gQ;#e|#UDdP5l(V^tF{b6i>ompTbUVC?Cp9aY>6v>&|8#m?ab{PtE6VdW z`;2@koZNiLEms);Hl955zo{oJ>yZ@9Fx(Qol3q{UMmdJ!@bkN_UbpWW3 zu#7wl-(`+aJxFShh@2ib)0UDB0Xb3Blb`qZ(~nu!|K)1Sqxjp)=*`Tu{4+4%{>dQ{ z7F0Q9j7yz(hPmLS~K0_%m-Iv8k5PGw&J+GS@-KjVzWqvq6v? z5hR$?AejycrZqEM&5D^Z{x2DaMwQ0oiNLMN?UYkSBF@lNYCT)*KY4_{$>^Y^CKR{Ll%qt=6I3{6 zTfzE%e0;OVM1tX_f>Yv|L)3v8^-OM7eP*4qW|K2=h6?JL=_-j8$q>8>h8rLi+>J@R zTE?ge>yDq3_SfWJA@nPg+3!sL6=b)oCxEY~&An09s8&$0P!Z#(VboSJDk6ANY? zII!-=+b_FsZa&)HQHyEeOnIG8p&zhL^lYjlV>BDN4!$$s<2@7qYojW8!imJPFHx5) zeg60@wSK+55Wlb}@)vb2I)o8ZK_p{!Bx6ZXfnOPgrMpc@doGxfB;dx=bRH|j;^wYc z^BEDStZGYAda@;N$w_%jD&gjA+{dQ8DMa2B1vN8@96^!bXo|=i<#CxIwAM>e<(EX> zTrGKXxzNk`8}il+v6~`r$Qvd=f{LTqSEcq<;b0Z@Qm#W0c4vDs9Z~gm>QKbCGp?i~ zQ9bT)<+4GVl9XgB6U=8up>CA(uSy~Seb{uU=pF$H6KmsA$%H(j>{lp7K^Lr+sf2rz zYmbX^-OtNi)&E3}T2f@14CCY8R-|iistiemlGoo^>L?XUwAGg^_{(8X^5(;nQiM7) zBtv+%qkD?1%%YGjNaX4)f4RpqiD9 zbK-tU)e1NFvw;fdmC@s;BHMe8>Amf)A&cLy0s4(k9ie2mRF zrNbE`;Q)udhSSkm5BK!tA)k-thx2rvbY=TcGyWmd!;4XI7?p^N|40m%cW9fP}(n@l4w=xlPCkN)<}CLMrv{cNKI}4smTpM&eCM1ayE)?NnF%j zv;7fqp34>hHWEkYf(a5pC*!z(5;WT4zz>5(Jnh(e~Mva5KGHAC=Q&B zH-7E+|t8lP&uT$VSCeBP*AYPi4)y3ob@tR?sj_jT39BJ3A8h}2eb zw@78g9+BciMWiSQ9|ocy0FijpJ7@0$8b{!Qv*)n?z&R}V(-C&c zIl@11jsQM7BADk0;99VXxtv)JY=B3aD++X^y}CgiECjt^1y~KP1Dn9DU{i;>hZ=A=!Q{DE{Vnt$6$d zi3=|li^2&!d0#_S;W(~NUC42;XqLjO=JDqp{8z`LH{g%AcU8(Iy;=I2Ww2ScKDV8> zeSUfV=eEGP+uC{8Z{3f6y`xg;cmS{dRPHQyCUC9MT|$3Pl{-7j)J1qbq2L|V7blOM zc)FufDkWfNrP2w1f2O!VFUUoIRi9N$IY!N9u+;+#2Px01R7OcKu8tS#C)eZ)9hBw&Y6?+2>lW8A$h*pSiUj|U(w(zF}PBNE5g@>sh@=4Pl9ko;JN^{+Y7gO z;XO{c)d_d8@D>*CqTm(^TCR%2j<^x;i_`IVS~iDdBAmkyM(Gbh{dgV8-oSCfbBd&D z;JiOr!nrHmRJ^@Fbya3j!FD&=#_98Bq3r?%|8Ui#n`ceixNrT{BSW(mZ+&FN{7uW! z(S@6qU$ALWJhyBE{ZZe&N3UP|z5Dz7?tN*~_G5R=y|H`4Lsu=jf6L-In;%+n`B&H1 z(D(iV`m)#4Z-5Z!d`{v0PG}v4iw#coclas40z;uudi;=+54rG2(*I}dOQ761&NI8Z zaW>Az*+8QkXmmGjpaC>)433$>oSYdR8r~dI;!Ro-DTz9$!xF87l4+TCl$Cs2_RCY8 zSWzrmmSpMKiQ-wsn}J>d-o`|0s~VVtqMhe~h?(vJ)K&lg z{m1uLb=NZd5B9nL-rLUi-bS<*^-0^)4@Di=FA8={DC5VIqgk4f+k$FJbh5NR(@79N z5pA)ldjGriPDn3`rbw%T-%@CBW)a1mG3aFOg3``lH+Oj&W@yHkp3v!He{VJBDL_%d zoY5GF1oJ3agkGLdFrIk7YbG$AQ-|x)P@u{M6iz#r`o)V&#ZLcn5y@7OwGFpj^{Yks z5-Qa$LHwXHpOG)OiE5ibf<$B>-qtHac^kd>o~cK2(cS%&eEaQ(q)eT+^36^1;yvlG z(I2a9xTUk{F_d`8Uo!QZK8A-+U)AMts3hQw@G?KP{}NE&r$)$7bFHlqcQ5FrMVGb_?K&+ zIjimiU%7?&M;Ks*@gVO;$P@hU`v z6&ve@rtq`)bNFkx4*!hqYf#L9fG@k1v{*>pn@|M+vl8#WOyDqQ>L{ATFDWkMJfWN~ zp+$RM5C=Sjh%xRaUR6`az?al^e6ppuBli$LvHjau!@3tCNTN>AK)pK-`*I&-`38)6 zA02O2pC-PhqhN1C7^eOSJaYto;vMZ1ZWeuF6U6Recx=QxAKZ+gGZ~1ZuWRG+YR3!k z8=JLn_*ruQtsP${4|p7fUf=<(J@^xJ{2*-qxYo{S?VDly z*R4zQX zp<~c9w78T?HI5Y0d&EX*q}6CJseFsxVi9ONi2~cQIPF2(8(x zEkj&q(foBsh)uV3nyq--gg%E=b3OW~m9K4oU`uiLWYS&Vuvh(7AQt7tOsL!ro5AOClg;Xg z=+DvVmgr)=7Ar0IrD$e)sqnR#{%5D=MS~<+;u}WsBmK{g%qAU@WKC@7;74ZU+ipEL zm-EG|5gpqqg#XzejYs{tjYsQG?&eGBxYrB@x-mSYe;R7$e(Z&A@7~Ez9s|b?9GL8M z7ABKPxm9MwQ?2ZH6SNZM`S;rbMnwuBon;Yinc8}FHH|D8F~sgSBw5S6gwdi5rkp1n=k zKAthw-cVn;PPa_ZM@u|8A#t4|rB3++_cId(q*qzw( z-NM4c9`|A(nOtnQdvg;mQCuvQMa78q@;$KFTkIV?wfFGBJzE9w$icn4H?*4zNVVZT ztvQmFZofU3bo+cjmn)YQtCYhIE>7f+xI_asP;Td{qQC^Qc!SCTvc!u6J4Cv6E?-ox z7FRV5wTwy`GV<$#-E#*z_Ie3)xTYa!X>CH&+?v{9EE_2Jx`W?hxB5v_Bp48F9+nOJ zid9B`!YaAwq##IXW}q6<;SMni+qMdZWV!DDBuB+Y(kh=AiM!RKR&lJNT1#V+?RrH! z#OC&U=aH(3XF%NK@_Ql~#!}z+(8MOdTTN>^sqL7k)a72rOW0Xv<~Q5gGjXJ5K*nZA z@nikxIX6>Zx1zO(mh8QLGZwN#aFlzq_y_-NF+a!I6#kZp0t)0}$nh2Oid_87x#G@nU)3W1Diltk3S_oX}-P zg9Y9n^;=Dhl2(6d3Kml7p;4VZJ96h&4|k7F$Dv8GoET)=O0bj@$slOa^+wrCymamG z-G6ph-NgznSHy3_tpPes)sOAOU)*u1XzRb2nyW`wOlRh?zj&}IR!2iZ)*Q%5sRS~+ z-s=^ZXBd!QR44Vnf^xkZ`#ARH?j{p9CsJom=W>+UOg~0Faugihd-8k>v?`TF@nrra zpiWXJ`A^WUM@60yM4qRx{7rM>V}|3G5A1ZD&E0cPz3`BfOpZ$hj3JFQ6#Rvt8D%u; zvSustRj1}1k^GmJmEYnMovT_vcQ$E;qM&AED8ILhQ+}84gsM>fJ;j0#`9|WU-^<@U z^t(K0o31q~-gJ52<52mTHRa1uzc5t3a-*vxW`9rr_d7f))a}0u5wPt>zlp=_6w}ef z|H35bH!pTiK}sGE2Iz#{wAXaIiBL`8pG{!i1X8Ak31>{eYyy8{0eX= zS5W>B6u=QHXeq_wabDYz3n7T&3DOfwWEe2*1h;x(@uXipLPj{B!(LUNFPlwXjx&Se z7e!!a$=Oca)sb##m`a=HPt;q=;XJ0TEgjelDQ`HxO};H}TM!Yk3C zuigzC%zV27zPRt>H#d1pu{Y^<7OJ&OD3VH%Ol^AK*qx3BYmDbhnGln%lyi1E?(uI( zG#0Bts{WCkOu-=r$e`+;a^pv2(C&1wa3lhF zNZLnNw=5ZTz78eo-IxKHNEpDE-y#({oo#hcFF-hb(=Wx*t|%P^q6f(f3XW1BUmWZ? z0$C#p+n3PRtPnjw$Pp`n*u&}2DiH`Bzg@rPFMNIoBh8NxzZQ)SU)alxPR)uN9@a&|RMjH<{Xd&dc3#O1fzI6Zm!EZmkb<4RokIf&7(wvLb>nO^h6Yyul~2~vQo5H>28QE7As-< zyUe*PXk^Hc_J#K995Fl7Rh1em~q9?2!_Ohrr1iyM-Qc-Y3oFLM2X?2v$cptxOO{X z)Dw<_kbv1WQh8jV z1_xRk(lB6LFB76jiu(NceDsHZ)#$Q1l-Zd0vHEL-H=Ep2T$~ySip{<`565c^Drw@% zFM2akgL*%csj=#_Vm;|oU*pn@)t27W`#=oK^&ox|IxE1@Babo;N1w%Zb>ntB<#cAT z2!KD5oQ_DG$uCNF%#In&lHcifaz-i5Wl=GQjd0wcm~(Y7)U^R$Tp97DqBdMO*0rHl z*AMl&dJj*G$9106WJUdAq8|6^L=m^gdex^5p;krZYn_PEz;zo$1izY}$a>XBOkAt1 z{y};~a;n!LFAR#JFFOvya$-Cm6o%IRxpmgwkU=d6>M1a32S*8H^Z>(HQDnL_py^Qy zLbVH7JHv5UDC9CAYu8NuTYi@$B4dZHvZD;FUB0Xpu{2}9tdT9v*oW8_)|)yUG&NX+ zZ6~~5EeXHD(C_O7bQuu%Q>P_cf*?;J* z=k|EKW{UxLcxf~8g*3Ew6iJ%csczHY^NFn4;}9{H&9sW~Oj&GlVg{2OT$q!&jof+e z%bcMz{No3lp5vr)(QM$1C5VOBM87A_`6QH$4QdA{Cqsg{<0`_#dn+ce+#mjih$s(q zeq-&A_uhyM?|{FI8@N^l{P%J@LRzD(q8ee!8AfG|kxpF=R6Aj#k?YjJKUTUCGwyvq zK9&m#f;&B_^#5CVB1ws&A=E5`a6dUFL$Czpu_P`bC<%fuH<9}Vl1d!DU4>F%ute9& zIJ}|}dLX9_JwEH|D-6zIYxPSMFW-eD;cx7zHXd+QZOAp&tYhkB@OHV*=*(vGR^$!D3zZ!Xn?I-SMhu8++K{(4cccvv?@yBsEpF?(qe zH}jn`_%ZPcR~Qr3=lQYG7L%XK)7D^`bHJcOx`GbD9+KNpT!PZld&egWHPpN;@n~z%vQDp5VyVFO3 z-Rgf4Ml!T0hU8`#ALmB$oFG{EmZJU(z{rRoIqWVoAq??Id;>~2ij}*Rn{v5=V#FJa z>cwCL<9H~mS6vp#%ekSPuJ$i#$mp-Q-%H9WJXWI$aot#PbE_9I;E+Q9i0(|!N#gcv zmsiL0_rxpSbWiR-`%K#cQN1z0Pcm6 zBgha!jsgxUOyLym(3!;mPSfd9A(rL^$he&XE`Fd{{=p-_Pi1at)sAH-S+3K&b#tF!!0aoKrItBWl4iv#~#yu7ru z0uTi{9p}X*^uQ6=QplU}-{N!x0ADwv0qlawy#%H!Bdk#$YSq+{LOGz*sTX+lg3cN5 z=GC*+CZi{UBX#0RKZCy`go*%;KykkliT*#t$BQ9RTvw@MW3oWMyG z!zoO3iV}wb+IV@>OuMt7*0ee?Jl#nhhxmQaq8jsgi2jP3jZ|u66 z*~eeM{p1^u&u)19_1lVfo;lM5R^ z@!gZRe&^gKZ(;MjU)}B5dhEpRW^?z6ql=#C%|{MxDyF8FjvN~>Wa2J}1QGJM4d2F$ za2SG9j>xzyvvsdS5?O&}rIh5bT1#G<^O4n(B&7bFSCVZoByHMmzEEpb z?~SSUDqjQN_Al-~d{e2l_s()>f8H!ijP(1_w#<;xUIT11g=1+?dPZU6t=XtFl^*;G0_tovlT$(TMaLSFhfQ#lV(el>q41nvrf{UNX^1V%$39|DGuFBA(A=Lwkh-ACXd zB1A;Ll7BgmJM)qJr}9KT--)8{dcI47KPSPLNN|FDm^@DsWL1KJ|NYmJQi!nd9ESFE zRW$4%v z>$lzU#$z+vr-O37$W?CMwJme)Z-#*Thz2-sd}0M~>NWg-@2XTfL|WQ(nqr)V=OqK9#Kl(LjagR}tv+r*d@=6(_1E<_s~1I2rkBU#@sw02TNd)d#F1X2osUs|+7iQGO7B+ENw1I##Ji0K z&vZBLYi9P}RCT(X76)YnbK^@Ryq$2zn#t%$vk_+78OSZKZ4^0d=$r>cm&6Bhe>q$?5M)Q0>4Qb zIN$#Ay8}9Kv48PBB)3aN=kWI$#lJ4o(8N?FK4TXQT&@}YLrbI~t68PVnf^c-O;Chr zBd+|iIwo5CHK~&gh+-hyk?`;P(w*clVed^aK0XM0U&n6gmQQEEj?B>vevSf9Il<#r z@F)ptwO|o5h6b}=-larGeV_cs$T7@{z!CDn*c3}gS`_bQDY zCQ1Wt5&JO58Bkj^OEgH8A8d5P2A7}TbMQdoM?WADpZLd0Ct|`Kk>>94=-gDt>+)Hk zCvD_mcFYvU6YBlV)5-c&!v5{oz@H4#18-)cpl-KS$0q8MjmboqO0~*@7b2CoPs^D| zIDVa$5kJdrF_8?*^DN5*Dau6BK~s>-(?Jgn|DiV~ zXkmHUV*n(@xrZ6$N@chM<$)@9(En)E0^KU66@#^tkXLADG*Y37D5l-I=yoHg6B|kg zJ+MK`i$0&r*)8gSChaC&ItH9kIVO13{~@WL^GYI0iv-{fdgA{6t2h-(glS8F76h)j zwbJ(xlS+-zA(j>V;AaMyUSe(R2i-^Svw>79;&yYQm7*|fCR5BuUZ}oW#pkM^UIop{ zh6-+~fG0?B7YPg`AS+d(_Co2^68>BX++PASB~UAYW6EjeDTQb%;GQrDE2XkUA9*qY z(DVCnYs4CIlq%BCn7tkRfkAg&p?z`yvH`v{>7m-_5Lw8r48#dth*mT~;#`sFmnqg~vs!=t7l~j>5ppxwLX4Z{~03H9OsQl6CoHSqfis`z|?&%k;u2( zCBGlDPuhF==^|IkPe-^?lvKi8iJP$5dv>e67bOps?k+uEA{L?S?VtqD=DCuG<4S=5 z$3X%`P8IUgc?%yUqfh0*19_ynyGd}E1bH$_iqm<|^mHD&?kI>xdmHEHr>A?}ZoUV4 zy>6)$jpdVEqD@ZEaX}K;{TzJ*n9*O5A)$p#%3wxgSd3hq*g&c|YhPa0-lzfAsrBuS zwPuIIK|w~L&5dX}1gk3ZSJzaAOu*+Edc=+ic@ z&1m-pNH800O>ZqecsVy!&(mtf$nycG@5|>%zuQL9L9_bDbY*<8^7&&G9W8 zege|ML^X=^i{`0JS{8JsJL+~@p>|B9)ilh3ip4Zcc+#Xb7$QT~d@uxQe#q+$3L#NS zr$cTj%84-93HnUH>gGHj)&xq?>zb>*RJ_i)(9X+C+8NW()vOmRvW-e*U9rqatgnxi z2S)K48I1m5=;N$BwpCy3iJ^>i_hIBZ)9_IA)K_pYW@H4Sd-$ zTMsoDYb+A4;KE7uP4jfI^0KJj^%ytxgmXuZ^o`UslW!DF@u zG4zP)cd-vJ17>*@V4KGL{w}%=5`Idn?dhL@pZb_~&*Xpo);#9vngJ$-P2Mhm6yRSl z7_#7pamsUE#r%+kDqT9^1#!m}2Ofv2Jrj#5^ck2vXj`@IxRBQCvCgGyOP2HM{u_QjZXyPgTMxyDGf<~v9(*A z;$T{`1!6(jURRViScD57A2 zRs_n*$~p?v&6OFFl|&z*X0Vn;qXJ%VK9LJKNqI~qKl<54hA-Cqu}aKmkPZIwuIbUG zX2?M2Hl5x|kb0ZX`G?Fc=WpK{OVk8sK#1G?Q{(wWvlsGYtG(^FP3Tb8QH6N$!*R8+ zUEM^e6+ENo&(vD_T20>~oSk&q;cT@)D}*^67<`dA1&e{$8(;@Ug5JwsIHIc%AeV-7 zgp_g#rq>Gc#Dm4+!|7J{y5YoEhGSgIu(h?yYfE>9H&Bx77jrb93wzB86IisVf+q=f}fvza&L zcTJ|O9@^sfQEtjB6+(rv1O@HE3iUb%$4_E*Y^v+DVaO4XIs%-rTa7v+Qm4aiwqP>o z036-#j}`#$co{<@U((jj4%WoL_e;x)Q+ooQw(Qgk-C7wK1!(*~J#pe;^(F97TBibB z|E!wW^U5oGz~6pG{Y#{QCe(nee+rYZ(QW`zDAO61jpLH!bP~|J6S$kkY`}&@jzf`S zYa*ASVHP2hpxiY8A^aGHRk6mdm#QxA#%1OI6vpq_S!(P(-5K31QFI~}_i@b}tM_F# z-nZ>}{Zo7PTJkgd8ubG+=~UF~qdXLy8WD}LVpZmGpv|W8u)k#}F%DC(de@I(wlkSb zIjoPK@rMg~=tJX}3%HO2!MLFVL6rCsnk+3A2Uv$ag~`v#qLbCNB{~HR7Z|J+Z*XDk zwjJX%JE3GYx1_}6zH0N}bTU-mcIWwR>Ul!%h}M&ywBWaft7)mOzZ=hNING)cLX}PB z^4_VGeA9_;@%W*g<1zKDGZhrJ&zGrKI~$nos`{^c|L-rXVKL!LZqh&158&qrmlU)-v&Y*` z$m`YNes^eM5-p&E2DU~>wVCJjrZr$P17V`DJ4{!U;Z(tuU@61!BR46^Vmm4*H6NN~ zjE!wCly;599Af*KaMEXH;weXEqL%kqxRBc!Eyv2!CZ?R#2~_nR zS*6m5rlyn-R~&;3FJIp0jf(=6$kB#+RvL?(HU;A)AyCPLT8b?kFY@a#6@pQz)eW-# zGx|tGNu9Albg?o5mE^*(5C|cWxCSC|uEJ_iR*{vfisovn>n9?I_yWUJWA!G1iZXWF zP6(^X>tNM=J87}mcDGk+6cZpcZ?TC6?|5%puObxvzFUcgKwY(#A?4B)d`+x!h} zRrr7PYi$cFZ86KR%?iIar?qWdy&_udKe%EOepANZg{_-bzG++eCJ)=n+BY|^e$(~; z+4~l_D672xGtXQY7-m550?6gj$j}HccttBwK(G-A#%p8@%;1c|49yH0Zbn;M>+7nR zwMB^LmKt6&{)pDwYi+l;t?=z%`)+R5zO^e`Tm8#iw{>mf`G3#vIWr7oZMN-y_w)JV z@psPe+o+)?J%jaOKc1&aF!uclqU$)BL(zRpHdnrPbnNJVzwGJD*_e+q-p_b{?8dS0 zj(vCB6om3|<(Z{d`LcdCA!_1<>{(ORPm`zrU`E@_|2^yJYtv_+oMV|A$opCT6NMv- z3g)+1#}`+Yc9jh)kN*~7>^~{&3kxrnzi2D6RUjM;g;Q!+WL`WCk^j$QlfT;a@NmF0ER6>tGlRgJCcXhQTlx2E$+&41-}X42EwLmi;&^ z{Lf(cmkRF>hQTlx`oax2+_0m!@jaArs`1j)zwcpraN{!Cp({Zep$0|xAhys!GBPA?*HFVFW28x|H{qR-MsPU)4uC`xA`sp zfd5YaJ^qLM2mMd^U-tjn|Gxjv0RzI5gJCcXhQBA!Pj+e;lV%~lQFA*putQAC(v@a@ zFG)Ftcm~Beh=;PFN+(NaTGXbaHU;sF-t&lalnTU46&K=VN*>}0io4KeEQ>+yST=;> zbhH@{3Z49SZqa5u=<_&-$}2#5JbLA^Y-*E@zA1=@P@InPDd=?<;u)Ye1-+UPS15%Yy$5UX39MI%(ItZ*vg`j*0 zajfzt;vt~Fkj+Q!LeyH>Qq=wc@estz2wz5c1>qHhcR@lI;zj7&#TKJ)7e>kj|H+Y# zGyW?*{6`y;$fLC6RjHKI(r-Chq-O=LWlN+j0@sDL(X#~U1A!aZXl;;A1X~?yV`LMU zMc|R_ZtZA+o6Tdi?ZMxn)tF;X2wcNrhMW?(#3JIx3tY=Gq7 z5`Ht`k-~;5uG&z=RU4|fYC{#*g|$&_sN$*(Ra~{9imNtMan*(@uG)~}QDO3%NVXpm z9vxP0A^aY~`OgMf5`RW`Jn*>0#|R%9)_xe#QSsqn<%!hy=Y)@>HY&}Our_I7csjNJ zFT%$W{tn?+5&jX!jbZW|!+1r9l}874*~?@$2^N`%^+jej=3-8y3z(OA00Gv>>ZxQd zaz5ZZwxirlEwWIP%W4s1R)(?_=pSHy$~lob(Rwvv2emXK6e3rJQYTx3k`kis0pB1W zE2uYub_3|hpz8%qH>(C-4ZI$8z7QWdB>e=EeoQDgjb)Myc2KBCTN!-q;KONDvsI$) zeB@jx<+Tlv(I3)@+rdqG)PAizHDn8!%|X5jHN4bLmgujeO2;cSm5ECOYO6_Ko~r@v zHR$W3k_NPLkmY2Q2gjobGI8s;sh@{zJCpi5sfCl(fhV`LgJM}o6l^O~xgRCme)XXd z?9+qS2OxzTJ^iqP4OkuZk?9v`*N{cMD6>;PRWCb9$$i2>GH@+ck-jzG$)5(c%=w#g za8FwStJM;3nPq^6oAmUCtUH!1B8&P%T2BS9>DW8_sH?R5D3`KwP_kV__C9aTBk9+G zh6gfmf387ri?O{5P);`WKsqOSsh04O?KoBLrHiP2K#YQwv~bY4agUpb{V^L}y_CF0 zCfORvOVm*fggmu|CKpW`eC&Q!%-=pA2-eh-^&H?*O%&Z^ zvo*x4nR_^Np~&9hpXQ7Tui8}~0>UoU2qOjdCSUT#65TF_Fp=QC0MisoLjW+RQX z8zUR;`(G!Q=PR_oy_LdeR&bnsk708 z){Pf5ZyK`>owN05^T(69z+$SEPeT!}K(;=%EE(oR|{ zc9K3n{iazTG}Z^B*`KAuHKQcWyg3?MbSY9aPdlyM%{i4c|N6 zw6gojKZT56Kfbgd^xN;{6yb%zHPR_0boZMR-=s4e}Wmi^Zg zbqvRg5%<$fsSU{xoZJ0<>Dybik3&$)@O`7dPxo134cW2oJC0*;ZRcl2kFZSt{nX3U z^JAY~R-#39*iI1mhBaAT#~q|WaR18r%4%*0RWGeP7e9fkC!^rL(PyLJ-qdHO@O7ns zFF&mp>UdQN-7mh2+P`L0eIX0@#d#}0bGViy;Pv5q^mp}w@V%}OrzhT`gcTsSn0}X+ zmlUB)#%fxInnlRvp)?OASD;0?sK0_nY%%Rgg=n{s_B)kE8RBB(m(p5Sz+}qv+;wPQ z3|hQzK3hUO@kGUvWh&;#V(Q2sjD@HH%nW9MSkE*0Ll*=Iv z`%6_s9D|ZAK&}k*3q@@%XcrMZE4v<}~Mub7&crE<{?2cICuB zmvmO8EhZfbP_OEePZDs>SwdH}9k5h=Qb^9}&qJ+^ zc8U`8%p*<9$$I(1W?Wk<<@&TzM`|u!6~kOzDLU|z^}WfZHjl!a02Z@a}*-`7gj zFIU8K$#Nx>Q%7Si3pxtBNsL}{G5}`<@U?9 z;dE-eK6#G2s@7d?uayNywDE$e?DsbKs+~w`0&DC(r`+IiIDK+}>rrHrt?p{4$M2je z`<+hNSy$zBIGhf-RxOnsPJgw}UC$LH9u8-~?ymJ`+1zzbzg!G1W!^fwhx4+_0iWIB zth4)8$=;f;w^Oh%XCRF-=Zc0}yHCzo;I8(0xwvB&IemW4dTQ46DbyUTsc~uf0$YeW znKjR6U*qHt)*+IIpkv(atw?VG6 zH_8oAHNcHp<3)|#FV{PLb?!g_mZ)kZQ{^wT=8^??rrzguG*ky;`XY6E zs%sm#5d&V?;r7>Kpk%wpfnIJjs75QW&ywXJbFZhiQO8+a zb2T?E+PIvx^#e3AN13DesMmOFYrQlU!izHHD!U&7c|9So3;I`vD-fv989(0X$y(!H z<*s)+-1aQ5Z^d|?8;_PZ3I80MDckGoYu)e|aOY$$KA|o)5ndN9th~h=+?Ff75S;7p zTg;sa!ZsP4Vn2Q5axw4U z7)ug4oFM2{N8+OG#zx20r3k!%Vr(>u}fb z)JX=ZZ-7F6S0Z~iwm&;2EY>RWt^5vp(xwNcg zQBhugo_s}aIr3Lz%8QF^g(VAZGFp`77TcD}B?WSB@lyG^qT;+vIe$rMS$=uBTv8?% zEhx1X<)f^qc&>F}UQzKpc@Fv&mtdzT!h8f#TZzmW3Q|S+<($}p{Ia=)$mY%|vKHBv zX37Ocwqj1R07P@;(%dpz(Oj&dWpe4lveJ_Be6Y_0+2W$&f--Q)UyxsH%K}%F$@zfhh({PtobS{C^grbTeKik&dXhp zJ1?Jlm4HeaH51Y;F3hJQ@XN*jxwfK`Vy?#Al44sKvYF7b%oggpxTrioQ_d|bD(40% zC@TSZZcg+lAtLBkoUc;hrk4AS2%7Nx!t(q+S@QC8t)NxTJBK&U!Xd;<4>kM&!$S`b zRjg5C#v{T?L%*0)6LUejd%uH+wri*Ul6K~ST4s2 zw2Xf;H-u>vg@0zm*aGSIlO(3SkFhy=y%l*`Js<@CDfq{(ReEg;ipwTUVC-)3={k#M zOv;odgBt%+)f<^c+9W;5v{I|o3VfTi4S1W>27J4;1NcMI8Q`Bu=Yju43kkGw+Bl}w z#%l|J&(mH9+^W3|c$2n?N!r`B=Yao7`&Zy!>ikTj3+Mt&t836T0$;0J3;YMVdw_4% z-3$Ca-F?7+s{1MM`}LVjqrXZ&lWFy{40%jr$Txt#!D?6lyx6c9_!7es;7biR0Ix6v zfHxQ#fUh>J0e*|&E+!f7HvAa)dc(f~-w?5jX(Dz<>}J}CJrPHMcNue;WSnDcV_M^O z<0njG{M2|3_@5#{IdW;_8m5iB#T3ajrYMt{X-yVW2Jo?_Y~Yhkj{F20q{SVK1TWfF`WheN7J8xe{T95_@7OG27cc37vL967|m!F z{VdZ&KNtNX@c)ed4EWjTKQbx$oH>SnfNV}+T63a#A@D`!8-XvkR5FdlZm~1TQe}Zv zEo&|7n9g#W;@iFuW2V!C7AXWEz#V*bFSm=9w< z1pZMBED-Z)%o*UH#llBo5#VDw;V%*!MI)$=ojPh_ykNsJSkGp}xEPlhVLjtA<8t73 zV>RL$V?E;4#zw?zjklt<$@oLWcNp(L$(_bKf&a*OH}D@D{|)#C<4=HZ!MN}dIV?>dP_~SeMFdayeFCHhW=N z9)Ch)Gzax8hX1`5!VN4|{2fUxi@+>R7Pyhcu@r$vvUrwCR^@peNivkBg_UTSi4DWE zRIr5qWsq1VS+PK}R9o3~GXJZX)KbDM9>GS5oR*nc0{lCsE9+L(t&##1-%9b1DBei%eH6D*yo=%k6n9em6s?Bwu-&jrz@lKw z5wKDs#%v_UCk11X_Wz(<6TH=Q(U_09B<9+s;u?4tzX1{fh=k`v!wW3%7Y5EUd}B2C z0d_eX!>(W%Y%Ckcu7v+w#j@CVx??bjWwXg_3Y*HNvFU6E%V9IwEOzzR(EPS#66S^B zTctxVH~v<7hsL0>XohQ2H5r--n(3O^nnF#fW{IX!b?ZqeMXS+CimY0>P|v}1EU zrg=$oQuBf4ykwLTq%qQDX^vDXEs-iEmlTk0l{QGvXrr)uC26N?^R$&(kM=|DS?vX# zq>IwU>5_C~bXmF_omIC?SEXC2yG3`qZoO`cu0^*~*RDIPJEnU^_mb{4-AUcMx({?` zbm#R`rGyE^;`5U`knfA{bBtv{WJQP z^snhp>fhCWpg*HOZ(s(aA=Z#!kPR7z35My0*@i+xDfYKYgUe8lo$Pk(U|S3=u!Rx3 zVk?cl=E`I>oz}@qnKWb1jCWyEl;o7bvPiGKpr*5XRX>?yRntYUtLfrhYPwVs>APyW z;+JabdP+^*JJqxvboj4m-@Kj~;I^732Qy$X)%@^P@?y=McdO}L32J)xEb>hKM$5(t z8_PBZHr_At?Hga+cxKbkP1Du1%iH(p)Z9I(_Y~aYx#xb7JABW{ zt!!(CYPqd*M7oD8sQKw(O11av?oYTsQ?0vy1C{9>Soy%M4{UirZJF@EnHF73LQ7W5 zoR%dmD_d@FX=&+bd8y^ymh%tBJ(&4m;e*Q`T>aqY2iqTf_QBsgc(&C@y+*fMTPs^v zw{C9T)%sNHuUbFc#U9r2;cjfG|?yB6ide{10 zZK^)IV|SY2VPktNnQUTkW6k9lAGjZ^7Qmy=(X0zqe!WYkNQ5XWTbtU*0~) zzFYU*x9`xtm-hX3-(UA9?4P{9Y=7p5_n$v7^uUAz#Rpsmeso~xf#V0> zK5+J6)WOjQa}L@LdJb+lxa;8YgKr)DT-EQ8Iue@0Eh6m@=`U4}KK!|wK7Ll!u;bZ| zUv+$_mi@2kYFVeTGr4mT;fBsvJKya*cf@!k`N#xS*CShx>^bt}krOK2u4~l3UBVJa zS026X=zT{IsL~vZ;xW>3BAulA_puz27Kqd)(khYGi}W^;t{3T6k+z9+k4O)T^eK_P zEYg!A{k=%fiL_TupNJM|l1MW|I#r~zMOrM<3X!f9=`AAtkw}GnPwW)wA(0BXo_JBD zuZi?6k)9UmCn7zsrcX*D6>>f~T%@u{$BA^ZNau*ORHVz*ad@&;O`m#RO`jGk;M0Fq z(`VjR)1S{)(`Qer>2t@`^m#GwUoeVP(0fs=1OF-NU$Thwoaz-XXNh#HNQIZavP?~1 z?O>YAM$;Pk8_kQFze!UbTO-AK8U>|c4zGI zAu_KWvUbP^agzDrxMaW`@w#|V{9lJYJ1k+?d|o@OV%SQ==Y}5|5o>;U#Oe_nM|6!i zmoPj*PAEulBy31{D&fV1^NC4`vlCY*b|#)kVo8Ri*rcqa(xl}{w`nk{IVKS5_mw%nv@nmSIRFb{%tBtElAy%x`*dd_oQ|r z^rl6pb)=n6J1uXJpBa@ps$$gUwCGXKr1r`iMr{VXJ~}zAW3*3xW_0`Lw?;iP>KWd4 z)axiegR=|2W6p1w^ZVuecKIx&Q}db9toaMz3#D1o03wxBQk2pu#VDPYN`>FRlsvk9&hMV{o9A6hig^>Dx%a$zi!#o2k?8q`+!eS z_bK2E;4{EkwD}|8oRSBADL7y8yX*Ysdb;8=uLW!av;npQb^sm%>;xPEbODY6&O?#} zy1&kExbyq%{C4{+C7bTIcY*#UKr>(qT5nadAzLAGoIhU=Qr^A{d<1`=9Hb5I-J75RkA;3<+5kME(6ic^LzgMmVX6CV=Xvs1GE9Q19ku&0_+4F0q~h{6mTANl2nf&T~dTDdEk;KxMYJ% zHn=o{OExPS+ZyxaP9q8$M2mD(H{5uEpsnm*k{=EYJt%4!n%RJRu zEXqksB4DJ#cW}%`{)~>8e_MgRs{q_|NjgMHS1H-jRDcz5eQ%Rw!^}$oi~(RaTXK7w zEZk~CzL)ttJJ6yVYyJ+b_pMm(Tg_i6JIuYx4vQWTuk27;p|%FKH3MryV;{%&22G}N zKy#IHK+*#ul{6`;_ZLzOV7TI!Fn6VN#cz?61C~gDSxJNU=q)k8M*tFmk5u$54OHfX z$_P!ClC2r9EYeI=MryKw|E2dZq-D_OFgVPY%z#+okGh~XgLQh=ddB*=LbJO?9d52bixjuutO($`_X$3bnlc#01^RdfH8n8 zv13chW1#jJs6EENaiYA!B_AmD-;^{GzLW-EO2haU!0wgsk^s;-cumL%SM*eBjwhN1H=R8R!x9>W5haq0a9|! zBuH5RDGR={#|>8|elK1pVeF1$?2fZ2$gmDFtb+{eAj3NFTZa)o1-k3dY8~jVL(6qc zADprMyjA8p3Vr7PQ)Z9`WBd-hH%sXP?=JA}f{&~O|1R+A0@>C%48OeJ+B8XTe0u;STX?PfM)@w0A?Y7HQ-w16-zFt<|#c)W4Q+LD6Cbj z=v!kMr5v)12Ba%(mdlZjLD^WOrO7f0>14nZluboC4KM?c z1DJ*WvytX1>n(GT&IRP5EFWnBpb$``+-sSSlZP1+JPlnR1J|b^{o~NH8#+D)9UlXw zry>30karKL^?=IL(7T(N(8C6K6Jec3$d!m*KY=WX=xIYw8+y3V@+aVv$daL{Rf6_X zA!fpL04wqf0L4lZP7c427Nc&N(j(oVv`9ArcOhMcv=(ja03M|Sa$3QaTiFUZtwPRL zaN}0CLQX5>vyyztQVytHqjX5KK_#C!p9SZ$;M@bw$H4hLsRZTMgSrjvmMTw4%aM1Y zz7CXAz%flZ3mrSau>%~BLC+58*a5C*!SyV-c7W?KaP1(DO<^261gB+TT5k@PT@T}G3rg=bSFl+2i)!y9<&o4)QvId;2s34wqlixfo+EX!n_tzjDi%f zHp_+-HBte%6r%h(q)U-s2D}2&EeC#+;*hF)^R?@DM=2fP94YQQa!x)J{K zZD<abLg^rNu~ZLTYE((Cq~DI6<|EkgeyUb1^~q375DVHhc#*{2grfF-d*{B)JK` z!TqBSp8s8ZcR1{GCq}6UGVB3$K018-JA&i?okwJ3NbUv7oA9tbpxgr+B$9961P*qj zF6f~8b_aB*k=78$OV`5y4t&ON%4b2foBWoqENab7#EVMdXB||N2>)n>{;k4GF&j~~ zK-nY}BQ3$%;d+!WRq9}i9!na=g|BNF*t3Fb+63_6>)LeG%>-PHx@%YzZ1FLqdk=QF z2YXwL!r+;V;mMDs0`|cVa(XX-a}78j6CO|_6(Z#lSV@X*$o&qa@IrznNYD||VGa5> z(u_O-iE1EGH>9Z%o>K!`oq(;le|3`=C580Nr_tyE)mKP28@Cy_aj#qjs8#1XEYt%o ziI=>VUj|+I_wTbY3tKS@UlE*}$hzw6>w#WxkcX+Wua$hE3b=zjt`)P7uX#0+8|5nj ztH?K6u|~8?ewvA`VKb52VGX3@UfBf6nxOw0=)ZF@fFQ&C25x&#}=@O+Iu?8&feGgJbNtM9ufGR*W+B=Xs(WVCJ z3V;i^o7M~~q>h5b*-|}lAHWZ|1<;6n;ZpXCVPY+{hJ3_Iqv*g0HbGJ@0pB^hg@>-k zXmw+>ehbR$L3Mq|J7=N%YLw?;zC??ar3Evz1A1FYZx^j~d}rwpv#ta3bkGdb(b&1j z6V$a!E7gH&FgF_e8kgs;fBG(-MUvzw?XcQP%&;ct+5zhwf(IT7TTN>)59(mWkz&m6 z{ijQw0Eun18mVhS6ODH|*}Uxl(-TF;-vd8j9>cMmfL&jRS(O8lIVphm2ooW6uTIFYZTcwXfCFJruI z50$RM>dMzZ4{&iR!7hD+*h6>=PGuF&<){JA9-QEpBUcIFwKdqGU68I$`EN*e7Omby zt9Mv5R-ad(*L$GVP3Jmw{|lb&_{#e`^x&)SVZIMS%4O(}br`dCIrQhNbfq|z)!_Mn zORDzc7Ucb2;jN+JubDBVkJ|b@(USC0H7BiutG}JJ?g`WSP2y~ZEo)%QnvjhusdXZa zA65ftrPw>_XwS%|5r_%x1K2^Z^7hc4*Egn3!VCDw>tq}D!$?EWrg`u zz!|`2fUvihVV^MUN6n>t!oX$8gDiQFCGY$ARDonsKTX)r-(O$CrwOrt@4HL-m7wrX z3{JrICm@H5J&v*t`gG%;|6VhGz$XDhO5h9Osr1#bF z1K#Y1%a#IaDVIbo8s3!#?@EJrrSZ3p7D?G*i3FJOBxF(Mi1&2-&Fdt~NM#bu9D3&q z4Wi6nD4FJ7CDWn@#4DLBqTd@^3w9gzt!*p%wlXcK?*{eVptzeT(HlQdO8d&2z99qN z?**;KJ*5D87JRFBaGZ)1_WmtMMFN#HP~m(hfyyLMX$6%@pwbE|T<%Gr(h4fA%y5zS z&}*U5TKYtyHKbo$-`hT`(cu>FojC?tX7~_5*)h zeO_k&fwJTDwx=8CpdOrq`1$`foP&CB2IA-cQ8)wj;0)A*GZ24Xy$xp|{>(ZIXP_RO zf%r4wZ8!t<;0)A*^J6#8K|MGJ_23-YjdM^B&Okjl1NB(=Gj9Ps=MKXeh(9yd;0)9g zdV}=pfTxaELHX5-K6Q+R_cg)$n&5p+{Om{PI8}$>S?Y|?MxGsI?x&;?K*UbYR^=x-E^ls^6l4=an4CQz9yvC`j)INq@zYBY={g|HJM$j{i zI%Wf(V?M^%b%c$b6=U}?y%kDVs_|^GA9_`jK2wke-wvtI7CrQA5d+IvVL2--XXWpu zF6q5ebl7{L(_!z0PJ`d+i@p~Mj_qkNwvSP3^+b7EjO}Cn-XiEM8L-ksmTkEj={%fU z;=-PFTE(-@CUG)-L_7nx4tVC-gcE8ad}b?u_ThG=Q|hq3Cv(^`6@XI;W;J8S!7l}^ zR4z4^G4z}>;3+%EfzH72M3PTEG4*=}2E}ZQPAf*|6n5Pu~oWgVAL$8iazgt{)FloCq)IXu^8 zU6*?KnW63H}# zC&@oUNMcw9{3{d6gpz%XkP(unm{=y3>}Ni~e1bg9Jjpys4lqwKPmxbCPcu)GWae4s zv*a13gXtit%m_0=KEu4lyhYNOpE5rs&obATYb2d{hk1v5mT@y~a*%nKd6#^S`6cs9 za)^14d5?Ua`4#gklEM5d^RMJN=HHlqCz;HDF#kcm$h^k9hkb(Nvrn=~=)r2`c3vMdzNtQIrbd+0b9 zaFuim*M+|(uM2Mrw@AMb&Jn~Yd|&uJF$sSsd`Qe9R>TsEC{z?ihDDL0NMaL3i=v5L zBoxIGhbUh3apDp^A^HRv6+J0RB5#QHfrh>*N)|ms-V%KpEc0zq8rZ{6MVX>Z@(WQm z=;@p&M|7B66TJZT;1L}a9V1>*fvAAIi@&{y$-@5^&s+dKAq(>W4`IAANLK;tK-WWh z3vh=|5!*rZ147t(-I2C+rvLAq4PnWb_03z@mU6dv9!oz6_jZKM#z^_ zFnmgBuhmCiuLjx$spRqXcIEwT$a^BTV`2Z&nI*E4yC7L=rRZInqPXW}7an@q>#5!d z3eH=NaL+79x#yRo7BjqU6xlv_&Mt3wDwc0Aq%56VNMEX4$bd9^snWA&c@43Uw{&44 zf9aw}4E1WDo^EM|A`j~2Lw(6o2SxAFJYsQlS-&{3Y+0yX>Y^}1U4#N?gdJ$a4xb`K zP(Fbo6llajpb^Kt*%T*vT!MKalsqinW(udb4WJ3+#~?oj`3;~Ex4k+Fe|`&SfSY(n z{~!e333rTl+I_^^<~|09hx}g1p8)z4pw)YWqGM^s-Q~UMzUcK*^gvzJhtdvp7bQa`XKoAgLDhh z`~G!+HR*zM#%%;xVSJg_yHEgYRtRfW1ZfGRc}p@_!+QT(dJaH;h*TaN^nD4|yczmJ zOaL#4HlPvHKqDkeJruo59*Wu}Eroe$mBL?t7V6FhwfE;GOGb*`rFF#hC|GwyCagOm z4roLU(10CXxt5Oz(w#(#JwWeyTz&6;iehgb#c^*wj{=HfZy`k~=vOJ#w<3zOKqD%= zB@|+B8AS`|9ipAbC9i}>Ee{0`U%nISAi8<@b#&5ugUY-fkO@z_A3Hq=Z$h&}c1?9&hp zyMTMka{*iS;~ZBiw1;377-=x>@jb3*e`?#fQsoPw4W>q6p-iupD*0 z2J8dD+kz)*dCU_Beu_`QzO59!OSdQ#uxB9bz^k45EB`)rhoTl}gc)drX30e{3T+XR zrE!YhrEQ8U;7-~f$4a=%Xi*ONfzh{NCm4nN`peEVXtx18d*w~E5QpX|t@4WMx! z0$a+0xt{}_s|4ikvMs-@UD#!7M(;zn74&i^e-G^F?qVXyYd?Uu1Hb$hi+~1z-K2uu zq=F3`2b^3~z@C6;gFOLJyL^eFdAWr`v)qU9%Vp6FdIwnWf*b&gcE|%3Za^Ned*8X< z2XpS@{ZePp{O4f)b6!o5+)@xh`E&|@eK*uc=%Ek90jPsG3i1aml))ZTzSOi(1!?tC zlcy7OwHtKxCagVx=KCPO3HeRTuj~a~-3M#?0O2VHJw}xB*Z|$V4LZC9>HU?gAigpv z{CuqdPY8d04QRk(3izJ%<+#3eZyUmMb|o3cOM|gi5&m`ZKZkWW28A+sf%8VdAA@g3TwFOq(F3&BySaNE zmjuf-6fw(6goj%>27C8?IIGPg0(stlUB9$)0^#>LOYtkG5cu0a`g?Oie`y{;e`6jQ z_FPyd5rt)kJx}83ufh`qCj@^+o)i=bzD1s)~ zBe6e^ohL8EF2(+ue2xCbxtNahFD%>#LY@jaK-iE^ha4h;kmo|ONLb+6a~?E z2Y|EpG@SFN;T%2kengcZ$;-XWnPw`h?FL|)Od@3(3A4FtYr4d3!B z$aTmUKs!l@Dx?YY^!^=CMLZcdrjfzr6-+4hQ8|2=nS*U;4A7 zkZ!;;u#2~E1K`g6_I)TnPRJC9Yf9j2gXvTZ1@p6${IeK3ALMB_kVnerR6GF2(g2TB z`=G2CP)Z1n4`BF|(my-vqo}ArJT;?cK$doeW%ms#H6ih1#(R68AH9eXRjaGf1uYG4ys{7QIiB+Il)gHBW!V8p6-KM^x)&SM5o>aH1 z$AIcm%hXNkdZ09Fv$|HT1FBtJp{`MjY1=M!rMd&C0%%>icN~P;@#=l*G&Rm4LS3lduPz`V>K65-i9>3oy0c@G zupM_g9!#XFS)gvJ4^He;rvkOou`!X*aT}<4b>c*nIsvHZj)jgJYLH9Em|D=`R+InK z{V0-tMTOAsr{LF2q$E-x6EqMZ{kF)T&@Y2LLBIX+36WFu4@|zP zUh(EUzypB&q<{dsoYzNWc-_hSrfG?kj0Dw=Pz6LA+)t?+OM?t zw(FqO+-`>w9es+SxqY-frM>yJn%B73F1@B~&v;|yjr(tGy>a`EjW^cD)5Z^tXN~8M zpBO(ietP`O__^`Q@eAV@A;`w-`OwtW1?&GLXxd#+xh?kJ2+RIEXk94PIsw(XaH@4N zpmkpY-FrTudmjVc`zF~d_%qPJB&va*6r2{ECQpF|>dF3SBk18Xpob4gYV1;9ms3{X!<8|d0(6QC8)!IvYt z06qM3tuIB4jYHnJlLy4NHMO<=NZ;1c*45Vaqpeqq{&D&rXUC$(;>L>Gx;od!N;~Jq z&QibeTlTjgr)_o{cGaA)9Ks4t3Qm#`@DJZ6p@Q##mk5hCL>q`8`ghU4BjLgl@DdTC zx4}z9Q7;i4`-|9LkeJwc@D;*XcdUnqVwYo=$;V=U8T(5TAG;R&EAnxAn)$yw5{@CF zW5m)i;s_JJ_3>gjlf*D%q>>OVoCvhAgKA1B*jItp!pT6}4uIWX3#S4toCdVu1vIme z!YM!trvS~g585%l9P3R6z?emZ{gJ?jS6cws-&IIEcgjBuuXY3aK0-Y`zyfg6JmrgG zj^_<|al>=qvGvh$ef8i}p}7LjC;76q|8uCjXx{<&`_*m`)_xaoFED46>(2Oa($S1k z(7eX{p`g!U97x&K{v*aR+wuNm#&X-q{u9P3TXFv>W3{cc|FltJJKKN8SZk|*as`y1 zFgDx7uLz87wwnHPMvaZ@uQXnI^-k8#uH?AIFa+Qwc< zGv2dJ_8W~4ZCCrPrcm2lzYE5#=^r;m+1&k8ra0S5|BPvmZLNRalw{lJ_m~dYZu2Fp zrc@YZ-Ec3+;YP;XRZ8~lz(0>l}KW;h+eLgT1+uF6P zsnjmeMwrgpW3(bug*{%IU=rJo`(l(^k6oLH64UNC)j<6e6K5;drkgH7TxN3GoR7ri zrm;X=hB400zE4|anzYS55?9k$V!CQugLsa{SMAB#T3Vtoxox+#%@9vM61SOFXuJk- zm1%?awi8#=SYx_vPt#_Yl=i*-Cn&d9Ok4ItFl*>R7jM30AJ=A^T40WObf&%;+08Nb z-2PQ_y#0u_*K{AGkpgoRLrtucXle%u_~?97C(yo<0#moGhK~z*x)0(alOFmEj!R6I zUGb=SFRY+X$LMNmC(Qe7-P&n$vhBWh)|_UmXxTC!vd8=MmY-JmIHkT1`(c>Ss^B_91Xy+HW+U0?iEAj{OvB=_|=T2@HhdIu1nPEC%Atr*TH+GdLsj zxt-aWD`9pEs6PXHaAgOQD1CsgauJn3UEhIJ^99=_?LG5F+t$EAqz5u7or97YIE<1( zE3==b`g{hYB(t3yIBKr9lY!$X)q#^#2TG`ZQmq&$21#19H&BuTr6|>bvy`qdH`&h( zh|R6`%7GelhyB6;hjJLWgmM^AqLe`XCxELKqzBq5-APx!+}s7DBvQJJYH~ick#b7k zG-u)HbS+XSU5zw)n;!c>x48$(i_BV^c%aX0w5@bRn5~z|fZi;)oaNIZ&XW+JZ-maxK zQtY$4fvq6={*L_7ANJVM^Vp3#V)oedI)Ql=JjsqGTXiw!b-Qcu9zGp>h)?yQNb930 z9Y^Us!L5cb+GF}pnD2n69XD?Sw@pK4psho87!h>Xc?oscspKu4dMBUu>XS^N&KCUv zQ@gXB_eDO7uBK~B<*ZNj%ehB^(sOp|4;rhT-RNVTeY{0ejm6nPIh`GhWeLn0yuDM; z`_&+xd9UL0FqAj2AoQFCJL_%`?DTJl!9ES~*yrU3<_GpE-PF*gqe`n8V(n?Vy+aZ9 z8Qs3Nar?Y3c}N5$`-T$i^Ze7ap+x&3-JzlVc8@M=D8;_o5iyi*E7j!=W!TrDW;Sh= z2Q`lj<=by{u(-0iV?zb@J6iKlp?zC-VyMXeKzC}W#KG!L50yD0`e%m9ZELzSLsbsZ zk)XRUq;MqaE)F$2_QO~ujuf42sLh_mb6!8Bair^-hORg= zbge_Zj%;YF1K$OH%#mlG0!^+J6PbhN2eW{wri1g z6zPmZu+IVy3(&K5$m=N4xrS~y%6vPlZ!go058ZT>^Kr5@(VjLKVcqYjLas)%hJDtQ z5u+j5nm%GRq**gYT!ur|?2&OpmNjo=%8+Z#ADJ;6u@;QX8;(J_$8f@0II`;7qYbC5 zMI-Bm)7BE$S$wAmx?da4n6pN18RDt!Ck}VnE*Z`Z_rUH9rv<0pr$1mR9Oy=y$?fbj zR2pwOMq9Q_70yt@1+-$rMQho}9fQnT4qVk+t46l5Pt*tO)6it}+Gh-{*6NW5pu+)= z>f4(P9aNWm`;>1-rasEhg?bM4I|Di&7nn>`KJ&XtI3=h_b^5VVeV zlhc)gmg~IF?>i~fI;w%IxnOJ3%?#azm7O2D=ctDGA;hR%X?!`2wHiyPJxk}YL_s;V zBi*Vc&VEO?ZrS6I@bN86lA~64$8x}-&}~~%!3v;0JySufdtf=}XdYxOnU1!>2uqHm zYGBfG82UVi=QND%S%V_WQAfgHg5|iaW-!rm66~VVQv66d*|PSk5}G(6|@R zau8FW?28A}Efo%(PG%8<-ey>89Ol7n3+J#8=2IUWv5Ebhx$gSD2G%VbbtSp&M+vH_<@5o#}uqk`zr!8Xh7%ljbSqVauP zg<;~1^PQpxHNyhu9-o{CuMEdHlREN;kfd&SpYx#3HJl8zzaNav z!)eaULHqC_XAaO=&clPF!@16*gA>C?oW}>JhmSc=4$cmra25|P44-nA4tj@AJI@Z@ z7(U~y7`!=r&MC${!d^-D2#Y>*7)}xW9ypC()#n(?o%CexY{9#ObBxlH`onk@(jTR# z^h#s(>zw|$@u8ERi=1 z`m@7Lwwi&h;a1S=c@nbK*LKBR9S zw%S_sox?6$pT3*YeMsXiX(UUpH>Hl`>Miu9K+o`a(s=zK>hs7Eq(_b+?Q~Q6gip`4 zv%}-I3T^Z7l+6t?LAniTeJ1)Dy%YTmo~ zgBm_^PCq&9v32XO4zI$AC5O^;NMrqxGgu$$Wa52I?;c)44v*DSc7taj(t(_ArddQI`w6Bp?N_Qar3Za_NrN3{D zuoHchRRr>Hre_Sg3mAws!R~TRyB1ut#zfr%*A*XATdLuX)%)mOmEXbX`N6Plz2Pb|Jh0xh-!ih+ zO;@?kuWCoFcj1;n`x#`d_Z;_(5!Q#UDr&PEK1;-LUDf<;8qUU0LNysVaY=Z88{ouM z8|)$JP1%iiWS7F{)6iqMntk_cpI<^-9=V8nhpWvO`$~MH7)8c=&NyR&E!3s)X$bBb zP_o|^)CZiD@Qgrh~aohM9Mn zb@JQLiqP+o_d|O_`^oP^M?>FaLPBRk-(ey{H$s2Id@OW3EQI-!u;j33m`@3s1f$F| zf^or{OtIiC!CTB}!L;BS^BuurxPbYu;gR7_FqgwW8NQF{4SzaZ&h$mfBNc2|q$;wF z6-KHfJJ}~9e;lc2pNup`US*$+d?(V&el_yl$Zhr;k?%((u-}c2jE-dMqD9fMY<+Zm z^b@QidNumjY;(-{m>;tpF0EkFp9a|SsC#p-RORU>pmr|Ermr<8pmsgixS5Q}2S5#M0S5{YE zS5;SCC#kEgQ`9v>okIMwGF@R3@j}E4gpDYOC?NRvv*YRiyC!Tln@t!ths_}@`xW*p zB!oS}zJR}6W{(j8`*rr~B%FPbeUU`4-(pXbNcJW6B_d?Y*uNwq`v0-x*zd95BOhbG z&wd~J{A*T1K2HBv_7foWWU^OqO>m8T0_Nl)t8`}gZ@)xVPRe8&*%eu@OeZtT?6OhW zglt+iD_f9xWjACup>$JrS9VYKP#!9elE=yS$dlv;r zTL5mkQ$8l2lwXz4$yelS@{QUU`EB_YjC5aCTT5!`7c|5F9;CVF5pBo6C6`IWpu0Kb zZ$R^pP;LKH&~h{RI_UWbIRRRJoqU7bf>20h^v&>3g+D`1hJQNz)8xhQXTzT*Md6Ach4BPQul43a*)J<22kAu9wqsX3oxyaueJ% zcaysTWz*1dmRsPwAR{K?uOhxrzk(h0h_wC&LMHhIgfEa^LC6Bz|0nWAvH>AGyfD0w zd@20J@E1u=_}TEYQkxy}hxyezdWT z0_llHP5pG^6-py!8++>)8g+qZ-bQoanZF*kMH-*`pWSG*2WTw6**IFi**Nh?ihU!E zxZ5~Q;ivC4&IX?O;pfF)4}tyrY3%bM!ZRiBjmwf7R-nL zxu1V1YY6r6iYY}@V{b4XX&(&a4d)4ILmaFD$cOfYbMTMxkWX=qg7YZPXBOViZG8-cNQrF0w^Kaldg2j+q@IM{ge1MNb0 zjhorH*^twCx8ZQ(JwKoRIRxhNI9~m_63knWyc&)Mb)*lhYqd{~%w%^LU)T@wV1b zs*GzmtK36rJ`MO~-Ub^glu3a)V&ws9V>QauV1M1fDGxSWQf5+_*>`lKL8;7XXi**x z*1v{!<1 zj1hRgt-7dqppxxgix1V!s9m=GNBq?X){>V|Bde-!j8HZC`9|3`id3z^vI_7r@gaT) z`I%E*LIn0Tzfbl*cPo_*E6Ns%HD!ClhO#qwKW(_J?0#gw4cccLwv>Il_qT@oNFL!j8Jyo#W{%wM)oITx^DelJxdE8U7T0ro104FU1KJQJhi<6sJ`&iZiNs#W~epMWt$= z;({t!aZ#0~kf{zS>Qz~aCROeudxzilg3`cVvfB@TNcw@jX5!H_@ErVpV1NH8d(o~v z3EL`+K7D;`y`cS+)(f&_YCC9mu-^WZo=q_QWApq2zLw5E&Ue-bq<*^@-DO9+_dmb? zfxN=?Xc{=%-2LD@cJH?znP0!|`S;4*`|5|BKX$LD-?jqdq5grqdtJTbA2{1W+L)l~ zP_(L!C^}Tf8WUArjr&zSkDM8?Uj)ho`f5y3X#+Nlatl5m`|Zzv4&nJ}Ojj9kpJ>cb zSp#;D<=HA1+Fx+{#yr({fWO^+L%)srswvvGV8_0K{gdAp1W6<%#CGMX^~NgIEu`@#AMtX;D}+RUp8nOg z&FD=cfYML@=e}tP3n9O!Z&Y5QZ&dz5FfMqDX{YZ}H1u6c4}F(1Pv51yN8hFVDpDSm zz#gG*NIdin$r61-vP|EQyhq=V{085Uge2k{l8{t-GBgy7#Q z=_R_I_Xy|b$g%Sq=Wn0iI)7hG!~$_ll|&pb-YecGP8O$$51pSAX904>N5sd@uZT~G zPgO~v#%b{x@i}p&_=5PNSSGF)H;G%t9pWx=k60@Btw!bIU+eGIUzYEIW0LOIVY)va6xiWB7-OO zP}U@Am2^nDfbNlKq0A_;N?ek0$rO~%NaiIT$&vHfl2zzsU2+TJJCbe511T$wkcuQd z(gbOubiXu3nhq^6na`kes0U6kfYI;0U2D{yf_S|~9>tJBgVn5{=rDJ_$h!~CZx zI-nnyv`ShH^5}rN5@{{;Is?*Jmt4f204Og+J@D2lWhtO{sY2Q;>4G_bk#fA9cw@s#wQWSrt57YY(S!9{U# z5*N3JOX3c2sgg6?K`xWap_&bP${ps8LQfAQ_1tmp(C` zaT{)-g@zVaB&EQ*X|FGC6!pg&0~<#-hS%?CjIQr#jBA_>VcPoZjmZ#F8zNkH8#C*3 z8grjZZ7hTw`{8J9v^B11EN`p=e05`O{Y`pSyQy(2gzfkYdA;yFMP7d$EFEp^ey*_b zWc{wer^$Wm0~@c<^W^tH^A6;(seYsP$#P@nhM0A|D8VPp>htCG+tugG8;W48VQLbz8x6PM*w8TGsV^6EnOtU97?r*h=Af0H(c_Bs zj3QTpYpN^BHIwQUTYar7-Ie3AxE8vKiAr57U6n9)8e!J*5VcLiL6^g|*0s*nIHU)c z!rX>L?bFbSuZpYhkGrc>)eg*jqWY(Z5vt|uef)(+ugg|d))i$PrDDfkGPM!d#W?tr)mC6SNm@L zMfVx^d8!le+kH))Euo&a!CX4pebL=d*TS#Bb#Lo$>=leV&ce|S$3AI>z0A>T zuh0nNcAy$9j#LNKpp!M}WFEZ=EpFGzHtXVuHv_f!9P6|=QkzDe_)eY7Lmpq+bXb`# z-mJ^B!pEO7P5!9V=0m=|JcvAXRN>>NhdgpUZr2^{T3Pi}HVn0C`fXYpH0bJEpGS)( z*Pqwv(o|?^JV%dSv(K^9r%m-ok1zYQ<3T?@c#aiX{+^@WcaNRJe$x5odkp9V&?%jt zzGd;}tH1gg?pUY!G~ChCC-r^N?t{G!bnXH5;9LHO`J^9To-yOWe2@CH7aYB-rUE4m z)4reNakzSa)T3`bKWcmVJ6?Fiqb{ANo*s65V7~ft3@69S@4Xn6FncAd|y8XJ~z6l^H0^nD?qkpje;;hj)I^`r)dX4t4zM=NCAxO4rinI1J-) zl|?1Q9B~j|sKqA(O>J%WBHmK-fPe!v?=A)too(T!y|VT0$Kgk z^>BUjVSUYazVbIOp)WR|6*@nmZXM;ux*FnxuPv<4VwDE3Yo31Mk(UCk)Tk23;V@iJ zSFP2h)nA*iFRXJ6xxTGx)Y`&B9y=Sg;})Q8Ksy{muT45y)vglFWgcvou3oik>8d?I z`+eHfo9 z%VMnb7SI4tqDsr58cL_b(F9}$3ImD+iUmplSqdDdYLukms5jF~i<4D7(oNTNQI-Q_ z(eQ;p#XzMapp~i}4-ML@RQ+G>&}<{EHR}4L%POraZ76Lj-CWvS+EUt9y0f$s!oFo^ z;rw9fK{y@;>==a;rKd_?FFjX!q4XHwmrJjf-YC6Qnpc{)I1o7=wb%giNg+urCFGruci3mmzcimA^QhtnK95ZIe&Fe z|5ivanf_Cq@pt(LOyYkMp)7dRhodL3Pcb0}GKI6hx{rUSzti98uSbF{VCrhWoK?YU zA6NLFf>r&G*(Cb9!xUK6pJj=#s=vfO$1X!iW&IFl!3zIvmPTKCn9bgSkPfT;+hFMq z`xDD#A414te}<4v-+{=X??BAuCT?Q6Jdg*mc|3%NuzdP5goVBgQNSPLkFi2NmXBqh z=i~S|HlL5@AMk&=(`a`d=j6;7V{_g6Rem|;ZxWW{v>~r z+2D?23tLLxlPKY>yp=8EZM=<@@^;?Nmh%qY!B+5{d?$OF@8Y{y8Q;x!voG>a-pN+- zJ$w)Q65q@BvU0wU?_*!)`}uxW!4L2Q>?`~rKgcTiA%2KG!@GDFtD^5!RP&$lpD{cC zIsZ9Z#eczn!5sWQ_b;XkG)7=yr`!yUaY4tUNq1bFI=PYM&+@_QT3w+*oMLX zv5eII$1)4wBbw&p9p30?M&s{Xd^NJ^zcXKXfJP2!?0SI4T+-P601ezT#7DpFqk&&3 ziPng*d47F0>g4(L)~J*3*I%QK#jnRkodQ2T3($!rO|@KwI;raYP@T^kb-??fI`e&W zcKOj+;G?tKkIq7)4tS5{iU5iMNel$k`hwq@_SLeIg}R4mEh4QK9->u5S}#6CYcXnt zj`gYW2o|U5Mvzvq-#YizTH;d^b$+#MK3XsM)mrMK^`c*`5~CKB1HZ--F{r1u&@w;X z57jF5V45~zZj~w(r?cg zs`n+oeIt_oMK_XSk)&7dx7~;8ec5lz57n#i+xA2CzT&s_BL_9PrdR2=WrylLx z>Q(t|-JyEbe*BY3&!egK1G^vp{OPUo~*8+JTy#HO@L`15ll_$+>ya2}~zi!A_v~zW6@eEB;9Q2#_C(A2T5iii1oNKM_A+ zvgi>#Ou^@e%oOs|kmD=>v`&hC@XJg)NZFhgCUk`7+=mdCbcC3-_EzoX+H=l@)-0#l z$()h3SDoprjyc!X4mfk1mCjfdUv;eZf;GnJa9U8uxz=g%;MStr3xt_~9JR;5+Tk^w z&UQQkvP-oJNSKmT9MA!d9lu7=N9J? zJh#T=4>)6;rOs{6f-Qm+=*xnAYEHgKy?=Nd z^iMl_^7q&q?&!bX=9CUsZ=hQVxmX74YwE-5ORFcSA57=1AD?=8#QN~~G3c+BpT~}; zJf3_og2|UmdP0g$E&pmF&*S&cFwdmEWY7P zSbU>62`rd~>rWoP@UCCHB)$cG|J&l*EGVQqHsK?Pc*YV?oP;mN6bw z7F5PW(3gY0%%mWD&}t?JtqEEK+J6lBBY5(D$onirvz-oUi)dxQ*mD|&JH0d6S_2kN zyT2fg zy3h8JG=)6hF``y21}dfctkIAhu(Oa>#a?VW9Md4A7|=+VB@-ybYPjkL@}1sxpr^0g z1f7zJz`VdbXoqD%bxfufh^H2q6#D-{Z-O1NE0SQ2o+;AF<{AxywV{Z|e}d3qfzbY= z#Z-}?NBMh9@H@g{z%DY0_X{Rc4CqO)VNBZvdgu93-fcj4GMRTn=!E+}J-(SKcxMQq znYS1utHI7TUJLh~db9-W)blc+S_7U1csYbTzQTYfg8f1W(}8jglF=YZq7crf>Lu(J zGw}!vYykKegX}yU2iQeE-GFvOEB3RKte;03@V$WJZy*kEX27>I1xCmr)(UjhAi?M1 zZ4??=uR&7AO!TV?H;i33q|?i=zg4gf1BU(03c*l+)Zfx5cgGT5UkXm@KtIh?Gk7xEKI!CLNNF7*JSe zNOo~e>X3FD@Y76@ilicOM%pB8HAoIZDGwVx5glMVLF_hqA~u8V(b8zq?BfZHUQs7a zmGTT|DO@csiIq~glw`njm;&pelfokIN|6Q$lwV92mnGSNLit6jh!m&A4L!~Wz>XUN z6Nkh(gX9v7l`EoBOg5mWz>bx_F05jV0Y3m)FCOfXN};Hx3cDQzTqWT#mGFXBb)4Dd~SKb-5O`(Yd$;wij}Z#3XLAg>tK z&SSuHhe6T+dEwKyCg3x9kwLZ+tW~lrJesE)a0`s)UbqtULYf4FWIBvyoB>jB2H?Si zG7hr~t`nGsc&9C!Qz#{tJ*}ks-0t##d&d=C5e8x!p%0-nrhh`y3S?MbuOE(b2)UK zD;)6*;D1JWO`BJ|bHu+9{|@7FpAruD4`#S;8qfHQ6+}!s`jSaI%Gyx^5<0m)o#K;r zQPu9ME=yZgS9M)#cWQT)ZSL*duDQ3XYpSk5uvJ~jKT9z>o7-QoXKsJCRg-n)#$h_` z%w5$5Rw)&V}bMEP3OJq39-)@of zx7%~@tU58bqxx8GM{bu|*ZF6wJM+(iB~|kQXU2NbpV>`=_0nkHVm$LLANVmd|LnXx zN@qsTa^vhd_Klh>eK^@)qKD+Wb35|g`EF{LPpD7$>jlHM`vY3~> zQB@DJ>GoKt%UDQPUv;25&z@juvll}R?yjmwS@mUmDadwL9l#RVbE+HcYt<4NdqK9f zy3@YW(l)nWJ8MQnZI#>(yCt{7t67i(wUVQr<#tr{4a%-(TjyS^ZU7G`hw8fOW}r?_ zx_Nm}4}I!cbzMP@z0#8dwMSQO2gJco`_$Yn`&966dUbGBw>=i@m8#{#GboX#wDavr zP<98@Fw_KoA4hx#W;jN3Cl4xxd0fCe{w0{fD`4&pg1Nhfh0@&pSdbIu)Uh;=j-$Ev z5$;GrZin1v^J%_bpgqZsrYn$oC3${C_cw5N2%eV0b*BcrCEIDhBH)O>bl$3=99pV0sOBTr-N>$)?Z`vkBz~S&1i0eDmF7b7$4S^U zhR^c^tA~35FY0*%P(lANh^S|E?buyBXf2Z8fI9V$a> z-l10I>^&VW*gkd%&ieEgV9nM_>$V<)g)Rt9K%5;gSg80Zl% zu*axJBvFreit08w^jhdOHiLRcir?NLQCr(}^P8fc*|MT2r&>0w;C1-2SY zDY`V}rgEiI0dJH(kd>RFy{VKfrc7lUNRELdPr0W{HBG58B`9?ugL_q_e^8>B!c1X` z%@nM_>QsR{cIA{em2z82Q*J0Q3n;6ZfV2JHbl`WN604k1VD3Gngu1gs|a1nz0wVNmvjqc@sP(} z`J$|A1$nEyReD|CD8aQvmO;K1?DTkRM>-(EtRwY<)tz#e4sVq@06z`*W_h=_43b+; zkv4(k5J+m|O*%=X94$eAmfApKlh^8O&6nWbQgTD?fpWTBq)T%{N|sVV2G=_|UQYFv zN;(T6Qi58L=HqTOIaZhIu(&Hh4M<5Cm#)jY+K}3%c5z9-61{~NW-K&soa}Vq>AeTW&q)U_$?_>%Jim$t5=M8UBH|rtdOHwir2}G(z6m6 z0|Lf?xG9-*vYotNwDM~piv+7X#aVGpSN0~+L{D5Kh;@n6USIe=v63HDpSg%C(Jl_^ zY|iJ~L@tN9h@Su(ZsDDk6p<1I+wF zu04BEQ#7#S4EsOKf4qU8(WNQp<*bwKqbs(6v%}t0YzyR#a{$bLJdd~QQcYtuJOQqu z_zypvH+gG^hw(6GHMWNGd9ntOWwV-CI8aWmKkL;=cmLj+r2Oz zkj@#KXSU23lf1j+P;yuDrR1&|WmC(Nch77oNt)S`G^XUpjIhs zw1+gMX=w`*rYAie4eMLyvc0~3p$+tD&>zhge}0e+u#4$X2W-`$Ps=)zx0cLI?wBFt zc}n_>qM644FD^-6c3{Tkk{u-*mjxPp0b6uOIP@J``QSS?h2F6R2h|4EvJh%-Gqv}~ z-#n^olozR&y$qH(^_6c9(WoEPz}~bS-wsl5l80!nH)uACZQ6T8ycfYY8@K}?2Rvqv z!>U9hNf-B!@R6hb=p}cS-d)FP1*riS-=xE8^-FhB4OF+MZi&IbSUBDR@`Yc#(2nC;S|kgdaZbjeIxH8eA?_)&^T$3ejMLy^)l{T148$zWu z(>vZ#RNB#0+OgF0!l|_5s9X`$y6JRJq!NR2B8FG&=^A;kVy52%*f2ONkL>+&H}PKr zuVK5XW;21<#FSx)`@zhM;}*v)aV*L45S{_eg!oKAaZ!hZ%SR(bJasw95R_kh_al|#TeXu6*>|dC7Ps6u}e;YZ} ziR$l0oxdA2e;alFZqWR#(fO-l<+MIoIEanZ-)4iq|4e+_16$EMgVW9o=Em#L1J*p% zu;#%hlOeR)8AYp|P+D<}q4^E(g3Qc@Z>*yB4^MM;K3J}!uti;qdcV-LsC7{<#9D#w zEV>8B-EeG06lEX7>yf9#`3%>myMXpk?R}Ln+$Yftb}g($hbGe~mf)Do8g)3%g!sNN znnI-}`Q)AueUtc)D5rR89r_Qb$T38G!C|^)e^+!+Uk(BuOiz*Uo{=lFJ?Hn^b?3^! z%0KrRb`+Xfz`%J{;RoI9553dl5B=cY5HyhSdw=+gAW(`ApC9VOhwu3F?8EQ)L;v)9 zzvyF+Pzunyz1nXb$o|k<_5RR59(=T%?zH&zbE-e|_D+B3`$O9n>hJC*Kka?QZ~a;S zMti|u7r~l&&0ihdo%eD2n}`v~FlNngpB%zi_+%z@gy-Ccgm$z(VU5pCxENnpa3Jbv z!S>1ag7*@)CiWIwQjy6e1@3|lknBx3q9TR%$t6)o6K)plE$ApXP_Vl&F+R7TyI^l( zZ^FfbONBLPt*{0xbQfGNY$@yn&HBQ9iCZU^Jkk9`E9ih`VM<{h#obve3fl?~7W5Vz zNUSfc!w|l+&<+}PPqY@aK9LJrH=l?`dwQc}VYo74 z>8M=sYPs|!dT?3PT+|#@n`$c6H??$6o{KNUl0u5Dlk1*{F6b?6!g@tJShrwpJ8C}B zTDZAzXJIphIWmNAo3<8Mxh z$xpRRw?s@{ts(u7_m5vODK+1kAEzM~WrY z?hM5b#1Eif{a74eviPm|Ei;KT;&=S(~81i}t?}GRWzLuT@MB}~9sHsF8 z$eOz!N^4}%Js~|)Z8b=<=>MeI2#5!qhnmS8uZrUgx3~X ziuPJT8#!$`J99d7cA|x-Gf`(I#;KHj2PtPCNO$HOWFy=2!C8{_8!IYpa66GXCi(Fy zHN+%iT&0{GT`nW;|He5b82bI33t8qlJ43I|xe%O?l{Du99nEvjAp+qtViSTxufqAc zEc1lmIp-ql06&Kz%baCK$%Np@IyIo&V{OhUy)CqZx?UUEec6{FTtRE0S0n3U2PT}D zb0KyBtwh#kU(bFo`%X6Q=23SCe2h6ID2JJ&<1=q$9s{}&$}k?vkg_8N?T@@pEAagk zIR3fQ_nCpp?24R#>UwU_NZ1eH!|;=hL17- z1OyXVGmb~bM>dS_1zs|)C^9}{$GD>Oa})PwG-ezh-WYioQj+CeK`8<8cE@e}ug?c*7HGIJw4C+24C zQEkr&&MZ`|#I%1hr8UJ6Su<=C_NTW;TmrsrynVucJkGv4K4pALhAnbi#=Xq=^xNZ8 z(l@4`ncZeOl9`yXBK_Lz8yPDw%)Y8>g8Z5q^w!ePdu>I+S^90X;PqgyeIyEX3C*o9*k z&aMTFg5Fw0yT{hpg%di_4qEZrn7w*-H>50{eJ8p#>TY!F__*lSh@9xw^sEe)c3!ix zdxUQtKF0M*x=v)Cb!t}I&=AzgyzdD{^1RxZmz&5uE@IX#Zx}aSJ4Sq>d4&_1!@I|x z_lC$$^%&j&zCc00{W0^p!;`&F!Ns0WgsfxTsTal^NWBmqG4|e=1K|*k=C1bHmwiBrLpeu1LFtAPE%>tE~K<8 zAibV;{bN0W{}^{o+`_D%+xWK~wCC_2wVX_bd7pPH;ly!=-Ie>P7{7NGc$tECO9RR} zh)=_(^L*O98vM^q;QED~z+7Cfbu@!Z)z&9_^Sit;JNPAJ97oe4035sv^FP zIF5spCj3W=fdDu0B*OPo9QWqEW1{^>Cfegh2vd#`a*N`$W14I-g?`Nb0(iB zDeXKm;co5sv0P9_yxLu%I782+8WZkrzG6C!arBdSt2%@?1;ikZxl3{Ap)?h_I2w=( zyazciyMLL|rsF=Xdv_5b-mT*IT1f|N%BdI+jJvmsanm;BO5S}F;O!`t%&HESLfoKw zxPom2WoC$@RO~^noWyzt&6{BDD(aZFDX4Q9acE6?(?{=InD`#`W7@ASUIz%j%e!R zrnHZc$CXvkIveSKO8-Tf11D%Jp zfsd6I17EJVfHx=#@DtKX;29Fkv;2GbJ6FjreFx&tC>y}S8vGq9AjmgUsqGTh$#A6zE&Uw$9%%|# z_<;Bgmq3zwtm1O>I1Em_HEjyn?d~~URr}YX>kUY6zQwLpH;G{ z6<$JI!u^RGrGDTo(j~%=VcC_Rf#o{sdD3~FS^;OLOZD^h7#9 zZE+Cz@1>vO_`TnYWA^^LI0MkzowqQ~mr(qNB%MV_8O@D7q{;5B@cjNlFw$X&v+JbO zO#07Id_Tq0X#Tg-Xrg@xqJe!Le0UM(Oz{-iJdN|A^a|-ebsw%QQYXc~hg|s)a_RfT zKa0QUkvi{La95}559Reee5)*NCY!;y=RqEWTpFj^NBrJZ)lW3`Za|({hHhKC*=2+Q(2%M?#)6D zB{Csbcgo8Ngy2;^RO5*BN_R<$JEqdrxJ18g!c_OK%d}saY9>^Tt2*kgUOAfZF%(}( z9M(zq?glu}hX5Fx_g=yH{rrISWRv!3E3`+!w1na>6Q^H5EB{ISO_I{CE`|0(n|?=p z67g!f?gx>yl@Pk(D|GEPkp=ei%hORQnGM zm{;%LCh5C~KwQOPU39-w!-3zug8dWL4D>%0_h>)9hMdJ-En}}Jm$yS-{Z#_0{L0>ZyWyq-9YYFKm_7<~{n}|c- zc2KW&P=9t%-*!-MM?Q_xW>Ko+6kkQDen{3RF2A8#CjIY{&ijPSrd+})-b(R*BI&Dy z2tuAD%K?P{7a^O;=Ss?j;>rxdKTE09^6nx0J;LV@VkHYJDgGIf%7m;S;zP1Em4s+M{`*?)@g z1%!W%cs+4yDe3nVzfb%RYTIG0O2lF0I%qy|&}`$NnFsk+)C{J!3o6EVAhmKp4B1&r zNWWT3s1r;*B;aL2))W6KLh(Nay@|b@ z5K5)IM!bU%(v;Qs66E{~v~r-|cZw3^%CB%8qS%njZxMeUx!8+bnut6=<^P|vF9FY@ z$ksmH)zx28fwU+3+E5B&4s%!WO~ zpbfNa41QCTa@&#({!Q>71*Z!%3;^8_xdu3Wz}W_R9&in6tPB1>z_|nY0AMosW5B-x zd>))3p!WiQ1pW$yhmADQ<6sZGVM5aU61i@xbD%#S{Epzy0!{&<7sS_~OM%~mGoLX4 z{Z+09qlMn_g+V40oJ-)W0Ozm3X($Wd8Yj@+IjGmIJr?|S;4cHGCO92{c_=#+I0FcI z`5ACEIFK=1x+kN1LR!UKg`ykqEY_k6LEpvta}i|9GvC+`&RTG=x-fW6p_ws|&qCQ5 zrD|?t#41HZqihuDCXmSnE(PLDv$hhsw!065otfd#fZyWkI18=C z^SVWJ!P+#}$`ux8_1a0bDK zos7nXk|}IC@Ghgi8h8wM5YNKT&7dt7HcMWQX=_xWWjVHNzQ*0N0F4n;>FX$h$7 zoaD$8*mz+tcBh`j8^>1z4t-xM%XzA zz4VDm-nIANUYs8>wk-`X4ay|*66rBvIq(Dp3& zEsNKdpre6@ad&eYbT_O#vw=6D*#>_H?t?~v{}rQJ0W8B^+c?ONgM}==u;ehxGFss5 zz@F6()O#BEEOL_>#a^_17_9w>H47cqW}@Cv*f|`IdUrwFe$eM33H^E){8^$_+1z)W zyA&F}MqPQJcX~8y+X9)FU~@m{ybDVz0lPzTG`w9E=-ypcfIU8x?E^jO;P(OE2IAa2 zziCvJI)xsY2F?iJtH4izdtmtz^j8f?o_BXak$cSZq(bRll`;@XLeSEq$VI*Utr~@c zQ3?@EI{=+Sp)J9?axr}k{H~Ck<5~+njW7-o$@O=^c?h|aAfJrd<59~8$ZhV`1G_{Q?=;xFn+$n zNEm>KcLt?`VC^X6F2LBB1iAua{59db89@+q|X6z~OL8%X9rrU~dg;3UY`16>IJ zVBMld8jq-pu%`vAMX!|=Iy4fF-G= zN8^s0?%pLd!4Cz-fNwDh8@U!Vq(_jzU+yDdd?`!22x<`?KYsZ-EY# zn}I`MZGW_4J&tiJ387V;4P?>2R&&zZT{2bM}QC?fp6`n^~ zf}IyVYcF9Y!V*YcL|rlLXRR5J8Eq$Xj6?kP5@|AuDB~Vqsd-;fWJ#aO9U+e^x;}Cv z7o8(pL*&88 z(NBYa75#G1ja0mQsrLm21Ajv8O?gzS`NE~PVDyIa9;R3Vd(vRfFxX>*uEg5Zth6wH z5iwxNXm{T6Gg)maFdg^f-=XYs$d~XFA63`$n46e8=1jiEVP@S!jXqc!Qf|tp9IOJ?ySKK8fo&{AerZjz_mbBhW~Hyj=CPf z<3wA5IN#oQ7c-YfRJzF;8hNvTyoJNqT%4n8=vmRHjLh#Fj zJ^}gya_0l5Gx|D#9*f-lu1?<77e08qHPeO(4dLJy0@FBGU4vM@4svIpk0v9x8*m0N zi&5VNJjSTvdpaUC#T($i2mA>5J)?nWCVRn>m%$m2CxB$!RyLf2#}1-J z!9tB6qXz1F7<;OI(7%En0XrL`-k;6Nit`w9=RoICjL*K1xdw9o+}v*PKC_1uFWFY67fAe-k~}7w!EEKR?y)avSAM=#S^J=3LO{_&R7rq8HkTp+IG= zxFmiDvVXSos4(z+%BTgI3Xu5{n8c{BS9d>}=*hMz3z=TPXtZZkt!S(83|p%=XO3E@ zwdEZ-w$lVh+yQQ9Z8AVyQMtdtZxQSto*ekYHOrh+?*$Zq1|G$D!nghRGHtH+B&N_`*$ejWlju91!Qwr%^mu!YUZHBSk!R<|8RgBn$ z80QBt&YuVUInzciM*A+riV{dphK9zj4958h$Q%Q|26mDk2B$u>-9#-zF@HZmsk@L& z#VqcEt6MwhN#%1&YEoJ~L0f<-SdT_390i#8Tv0<3enT*yYMCsd!;S5%&CoDrhG0}=VnkiUNLyg2@h`jc3{vCj4%U7{ zF&_A8o(KCa)Q&Y|=`Y^b3956H#;(^y;EmEN++U#Q0tb0~oGt(^a(DKCTd;3745+)3 zCF*`tPh>s92LA;387N!8e60vrg1Riww?GHu?mifjp*X8B85|4rHLrG-Pxmyi=0xn5 z?sa#1AyeYszq_Xnpm_rj&xOTV&o;(r@H^qIe=hc^CPG^}Bu^lBHEg)-S_Mhm;y_N;zW(U3%j5e5H{;qVR;egxu6ev z^f=6vEZ{ikPs12HficParO+Jeane9@yM|#$s}f`^(7Lxj%rXv6N?b#!MA*E@vo;Ge z;sk2Jya4BxJFh|Sg=7ZG1_LwDN7((dMzW+2u|j^!XpZ7sxeqP6&ge^Gj`7XN21@Kg+1;b^!Gb{k{$8fq^A765aAr+_ig@H)!w0e+5pF-rB$(6%1@0sO8> zeE`PZM5B|!J$RzJ2fKxPaF(Dx?-0@*pUS1p7T2C{bp!SR@_D3uUmi}(?glpD5hd&4 zeC%H2#vyV>!ZwAa^Ko+Nyji613{LPCn=2Vh)wPd4;AdW{);l8(@t_AJ{-ogo}@;H055y;k7M_Wp9p4s6QGTq^;p1QjXVZL!);Xa%SE(Ygk;BlO- zI?j8fbe``JsXAZXs3mqp>j6XDw_kcV6laQHr)&?-@1WO!z79GBG@sB|gVR>O8@#eL zTs}1bw&xMWCp@(g2A_A@W`50ACEzw6dw4Q%n+Y1Y&G#tykAiLqx+P@hKxPi;d7$|u zWL2zWs>(LNpBc?HKm(i9|7r>*?GY!642>J|gDliHBF|Z*6{reV5!75%! zs@%@1U8{{Zfv+*jCxJT{S%bm|aMpnSnBz0wscCEFYe1G<3(2*(*Io-7PU7vWCr$ne z=4D@B&}`31-qWC5KE+LY7`4vwH`TgmQ!?_2H9Z=dZ?GOk&jT)mOh+L5B-*EAjg*S} z{Wln~PZGnutmyf`d`5nEui}3NyoORQD|)yw68Hh5>;g%yx2kam-l)s8*%xi+_dK12 zM*oGM^#dD^BKIUe#+m zfm7vp(BnZr5Bhn~Z-agt^b*iZphxM~A4e@Q@-4JtF6i%I+b6&uFzPD9svmfLWt_wa zd5Ev$Y>$%RH;fhg`T*I_opBEKA%oAZuQZx7%10Dl<@1)>RrK{$K3k}e$J{MBN3QUjp|t?imBR1wRmjm`GS4j4gP~l?#6CQa zJ*~jF3i}NppW5vthXU&Y7ciPp$h`(mGrj_vZm!E817!cNL|W-I#(UYod)!lK@7a6&`;j6>rRRGt3(PFxIp~A77|%0oTMV~U8}1@ssa38* zeKcAf1j+Ly966Ip_XAG>53o*f*1E`6DY`u9aj3m7=)PEI*5q>|tWDi>u??F`)xD?o z2y#W~6vmRdp!qsm0GR?dE-|ZVS(v4}&w`tr3>EZ~E^7ybMk=Z-z4B zt&*ijfjAGK`js%Rl}=g@nE>!{&Pp?oi?d0k_19}UF& z67^lsvzGM>8)pd?!}8WBi&Gh;IDsSZJiP?xg_I>qz62*XgnQ!Un5S9s4YX05z}bM_ zpz%cn11-`r;U9cgOX$$w%kzU;1E^S29j&Mi`>Vsx`LHk_J;iv7QLP>VfUIW+^jGzI zlh+c9AeqCcR?j}Pm$jV(XIJS>)J4E$=pBCIUma`jWx(mM#{|9Jvkhw-Mpbea#?LH_ z2gb>aYUIqqyqE<&vp5dJGcUn!$6;rAa1!D3Dew|{O{RFBWIn#gAu%3GFp5fW_N)Xa zD@xE)B{*$$52rHj;mpZBoUyrwQ*igtzxOZ>)jVWGpXznEEvn!1;gfuRPQl(#USiG- z#=98vCFsEt@7o}PXLmLH(t#*Io9SCia$x4bK@>jtxy;d&_jKmaQFLke&_S7+F?!&H zv04a)k&*IPw{S}6*x|`=>ejteayX6c*-fFct+bTiW2a_L0L4;cN~1p1jGm@Qt%mxK_jWI zmsgHLiD&jB)Q&pP0BT92)JWqwJ?2 z6hpz3q{e#}>Pfw6sM7X~ms?AX$p-WgJw~b2m3q-rG)&bwj-DOdX#8M38@L6y3z!Ey zHhAFZ3HoW^IpAgBb>PjxgU5{1Z!-!VXag$&!-3JjCcq)UvB1egMvr(}Ob5;dE(Wdy zW&zg&w*Wr`?gr)qj}007%ouSBcoujGSOhE{He&2R@eA-SqoD&WpffCU;9w&JSRGgo z*a+Bi#MluNj1*u8U^id}u-}OB&x|&P07nAH0Ve{dD$@oU(}4?tD}n2PTSkxl%NXNh z;C|p?;4xsq=w}9xHqHPq01JUPfVY5m#ta=YLK4sf+Q497s8W+Ds{A=~*g}|l2mB2OQ#|$1P*8y{Z9|HFSkB%Q7 z7cWl%&jK$2i-5%wxRzglC5)yCbbx$Xm%rIwg{uAuN>g+H-y?sAz*2Mh&rn>JuQip_ zT#8juB~C?%Mk?wwQ86Sz#e-%lz9gzx(NfL+)@qg}srlCCfs+3lrK@=v@*ky<9J|U= zjq3j|-2cvv`a=x-0~9J+)S&P`L1`59hZyh&XsBpcK}D{R{}0+*sr*~S*+Ig}hOj16 z*9u10`;~$AA7c0)pspfvt^Xj^sLmgv{|_++o_<)x{%U`M;%|rjd(_qSqVE5h_M#lx zK_62d9i;*~t5%vfvsM5&=zXTwJdGDwnh6;+p8Vcj%%m2 z3tEwOQ@f+j=juE4-Fm)$Oh2Wc(+l-t{k9-s ziSi;vbP~P93^89U6}e)k*e&wKF>y+q6NRE!+&0LtjPgdP5pL8o;*4fS5}CYlDOTcI zsu|I4TF(7qix!wbe5a}f@?M_$XD28ur_wIo-@Vl+DMyv<3HD5TrJZZnkfyRLFmf>B(3v22%b84Q7*cMS(>vW{;))jdw@-i&dBX8Gs zT&=ZRx^1jI)=MXN={Yy8li;RNj+ajH(o=34v(ud+F&}$>U+~frH*HYWOA}n5Ht6Q1 zgFJq=m+tpcuigfC-844TZDni|FHJ^UjM!eW!(*q$F2Y~c8rEyrx?!(|V;jzHxT@in zhWQQ8HM|`c92Xsz9G4L{Hg0Cz>bPxjN8&EWQ+%cP*!YzAe({sz7suzsyX$DJ(K1(i zqg7t&`L@v+H*M_tR%?>y{@papOFgTSTYKpZH%%GtrOVtAlClovLsK@U>`p02xsht6 zR!>bx?UFh=^`+EhsX3|nsb^DfrP*nbX|2;T(k7%WN?V)uVcJo**2mYo+8#fKze64` zOsDip>9Og_>3z~O)90qIN#B`%H2re=-S#2vquaM>pV59?`r;GSTwokE3A`3~jhfo~?EREr=h=DGEU0`? zMQR>YIjA!6yC6oY>p^)fLT@5cj0_by6V>%PU9H=Dt9AQG%A_gyPQxNvuI_oWDffYB zc!{plExM~2n(f;`!ne`4$@f0e9N$i)n|&W3&Gmh#(oKr`2(* zk>>h7RnnV%N7P@rO8PUTn|w!+=J-BGy4iOOX|C@JC7t^}JThF}F-)eH{v(eZN6R<* zzVtkE!t=~mo@WX?&zw~CZ1kP-{PVTvm(!kKzVZBW#`DOxo=47l9{JAm$T`m==i!kH zo<}Zv9=YUs=DawJz`1MBbMoU#PYcwu`JgkR=Gdnk^OXpPS6?Uks`WD zcQjoKumW6<;5 z#-2x-cpho$c_hK}$RqGbGtVQDyXejm7qt9<{_i0jitgedSS0>;gr# zgWO4vT4J99#d2SJ)DpZ!I8xoKHB9U%>DXZyBSxw)T)pWM3 zrtivXI#*WH`TwfPE>cvg)mHJYdDIg7I;eJv_q|8`kwq8EEV@``(WNqr{#9ntax6~ueVnua}m^*zD})fl^}@ss*9 z_v=)D@jv!z-u*i9b?Kb@bUo&E4V z?z9JVs--)PR)05nKxY&DQ$F#|$uM8d9ur?(*MH-u6l%QK6kyIYXW@;%|NRvZE$~es zpW)J+Nubw)z5=`WJ~GDB+75Pc%+#oA8IMc6^`F$_Om@emxN24tJo`1XhFO#E`L!%M zDvCt7s3&4XtY{<>#B_BBK2yvVbHzfjNZpAq6D!4PktNoN^$`ECHu?4 z@@Y9rJ|oA=N%F7qMLA8rEMJkcd zZkO-N59KboTke*pgGhWAGjrOTi^~`w@o|1cI;rg zl3mrVZb#U4?0R;z9b?DYP3&fNOFPL z=PYpk<}7hub5=NSIBz;{Id41fIPW@}ocEmV&Ozr>=X2*v=cMzEf2}{;ztNxT-{#-x z-{s%!-|x@&ANC(nef62J1TWrdh#D&H)D?9}7xhJb)te1O12ROsh$ktUil$_WX<{1r z#LMDkvcxOm6)GoYiCGjN=7>2IC>DqXD(b!}UZo(hM2!PSye3{FzgQtwP=IIm*-zr??& zwzw*;QXO$kT%)?;d+|Nh6F-O_C`$Y&exztwPu8RQGDgNwjBF`eQUlpqwx(E_B$KG2 zY$MxHoJ^L<6faX`3N?~xGL0I`beT>~WGC5)n#yjn8zt~puIUlkTlS`AvY+fn&E+6D zh!W*6IgDD!k?P*Cr5r2AQY)D$GpV(lC@0dRa*CWnN%95x0zD>Qk}pvkIbBYtwsMA? zLCJEaoJsBEY&n}!0i{v6omy6|MYA=_{rPM(#lgp^1TrQVW zC%ICtq|S1cTt!{vYPp)a$~AHgb(3r5TIw#dWj6JY8|6moDRX5m^^)7HrGLz_KvyIt?W|)1aXpvpfu1J5gtJqa&v0crsMoa9Pc1>Dp z*S2fZYj$0`E-ka8>?nHOu5Z_;<#t26A+4|*+l^_Z{fPYt{oQV1x1d$_qxPfphTYa~ zORMcvJC*)nx3}BV8oRUInclR!+ubS4e!_l&-m;&vpQ5#Pf4e`uZ4b5w(>nWU`)PW| z9$}B5Y%tCoORARdf&-*vT3KY(b-5JIJr(Pedug+ zw$VpUo|8wroWssx`loZ$IZ7Wp$DQN!iBsSd&~E3nbDH+}-}1jjd;RbD-=Tf}4gL+Z z-@nrL_^?ypA zscTLIEff(VTEvMa;+B{%7K`O#l~^Ozifpk>>=e7iZn0nFizDKgI3Z4nGvb`MBns7) z<+_X#w`7#8FXqXPva9SVpOk&&Ksi*7kYnVt@-Ol^`Mi8fz9Tot&2p=nFCWPI@?*JI z=E=kIs5qh00(n}Vl^5h?StM`BoAMWVN0yknX_^71BMN0lvyzA~!_3iUg4s&cH2a%_ z&8Gu*+J$Ef}Lo$w%gb#cDmik?q>J0d)xi&LH00vtTWAd z#hK&0>b&m!-T4P_gR|M$>b&n9az1muaK3WBcE0tm^RM^k__z3X_&@Z2?BDCpQ!#%5 zqCFwnYl!nY;=DkdHxSPyBDske?n4Z>5W~wMh6f;q2O?J6h}A)e)ed5{AF;YTVs!R`m`hY+hn5UVR9R#!r-u8de6idbC*vAQZ^^}~qLVTjVz5T&alO4mRH4o3v8i3l8l z2wV#hI1&-KHX?8xMBuuJ!1WM;qY#0k5rOL?0>}J6_Rc%LiKA=VGqaLxS(=r>;1GHb z9l1~ggdREs2-OsWZETv2F{Xy%5JD)1&`ThuhTeM*9YPDuglbCYEp!q>zB9LES2KbDUhmIGqq%lRv%7QdDLcCh1uh9~ECp>W4Q+Hn8-t*Y!O+GKXk#d}u?)1a9JH}K zw6OxTu_CnbLug|qXk%q)V-;xQN6^Nq(8g-e#_G_<8qmg?(8gNO#@f)vkD-lqppA8* zjrE|7^`VUopp6Zojg6p5 zsypxmNPVG5{h&hqp+Wi*difW~`5bdcpTKig?s?F5C)#hp6X=}BO+E#5R`NTf$2kp3aN=wx)XjioB+AUSe zNpqf(<`g5%X<%+*Zf*&X%(`+N2r_B{3i_LBA>dl`ELdu4kydo6oidqevt_D}7t z?d|O0_DFjVeW*TMAE_tnQ}h}7Y}h6G3Vn^fK|iP;(NE~7^>g|~#{$P<$8yJN$9l(R z$9Bi}j(wy$$^WN1|ED@G)j>;ESad}Un5_;tKDTjIBUL^7)y-0M#rl#o#kfmGMHx+(=VquyjYN?SeEl1T-zl^*U|+x4m4#a7E{D>Wo( zV#Sz~l~vEM^UOUmdCr+@w5T@nc^wv`Od783YD*~nOs-K+Ewh%H)cj+uKC_xb%%My- zmp6aN{4KRC^;s56BTF-u!_vailI63swzOphY>RBGSYg|*wm(>D*+RBsW%Td$eXO#6 zS-;GxJB~U|vKo$`9Jg3qf9}s&E9A=u`K(U14r|2Jb?Y#9j(yzu&FL;>u6%!tTz(6C z86(pg!f#-&;5gjHvHdIe!ogZlzSZ^OIQmbd@F12%p;2r+g{QbjBwcH&cb=7p&s1d% zDBP6NsLDFBC<=FX?`0kA%~sen>{D6oamL=-j)43C`^>Y?>e~a@wXoOz;-ioS`=7`L zv*GkVio)t@*I+iA&1Xy8p;Z*Cp6b2LeLS+b&woAEg#KGlSRKcD?vz}iK@^+hJ~DOx z!y_}yQ%?T3j#2=f>Fz9^^`qm_kB-zR9HnpAT(577h`UC%U0Zlmmi|?FY0n~XgfhM* z5_cV;df2P4Vb{6$@ZIAx*6S#&fSu>10XN-8@2@>B95eL`vh;b8{_g#$j}hx#$~qiw zR*F7rVo_@}aL1}SMy1?~D_$_oHpe!XG249Ge5z?~VJtmkEL_kwR#gK#UOS#UUN~Ml zUO9esP)$gBu4-I{T2@diqzTig71ErUsYc&M+T^-6mVhIxekX#J)^qB)^xS$LJ+Gcm zI3+jdR!ukh#5xuBhOfRmN&`av2^wPRh57LA65Is~cqnFjo>E-nbdPV(1y^>y8 zucCjXSJkWO)%6;BO}&<0TmM+Equ15z;c8R~(V8+nQjA31P>1D{zw1JG=mB~bJ*yt5 zzo);iXOq9lH}b9gLuWeIHQl6}b&Kw!`|4KRPq*oIUFy2-uV>OT>)G`jxb|0^m!t#u z3x7%B*TSK$VsT$;`E-y2XYdJwql;6q}IY-WuOXNzqR!)*rohCM(r78quF+C~T4FcIYj4r=A-h9MC3cUN%IpO#RoE-`ntjB6 zqoo@AotEmrpEc$=cn;Qt=i<58Cp-_&!6SOIT;Vj4xvmd<9>@BKa!5ibe4?d=2Zu*YR~Mns4A6SPb9HH?yvM zE8ohx@$Gy&>&|!bova7{o`27J@;!VHi{<V+bf%WD``B9d@ zkMrZK5C4(>$P)P}ev0)~S4CMrevY4G{rP!*o(B`;PrdT*dA!SG+lVj8W4{t#!DH*O{N$a=HO=#27J#SC^2lE+ubWNxrNX{pBE&{CbfWq*+GYFs0)HFGn0tq=EMA9FuC7j>vFW+&gJ(@VZf6(0F+W}caR zHw(`~z8lB`$#=8yY~;Jyd3N&MoIEG_Zf>5Nd^a!8OTL?*=O^DS$P1G17UqS?cZ={M zt7c|K^Ywf^`R+!(k$iUx-$K5-jc+60 z-NAQ|@9yHe$ai=1-Q>G_`Cjtf{d_<9?m>Q#eD^RvOul=BA0gj8#*dNjp5Q0QcTe(@ z@t_%$||-{3dc5FcM3Up7=GP`x|M zRRc4$1X*UZZq)43{O(pmL(In5N(<9J)z#B2)J)U>mJ_u;^}zM|dIP^N-SzU1e|2 zyjZn2CcPuYqs2qzlA|BsORWumN;_|Qe_JNf-qvLeWM6zXmi_VBP^ve1*JV4&HekC{ z>6hv{e?z2J*PWBDvYYHKd&r(LR>sL*GM;kq&+d^cw|_Ss@4cqu-a>Dwx6)hdZS=N! znBI=g!@qVGypD{xMQW<%BdaG~tNUa#;x%!{LtHIE^`w>NCnDzoBkqJDUrs10uuwc~A~5^odL@ix%_yiGI< z-X@yW_R{u};SJVe3j6ooM#`;dX<9p})~nd2(Gk*U?={zK{>Ey+NGzn~KK+Ke1M`(v ze6pqsJe7$4(>(Dekx0u6v5jJP)BiyaQBN9I??2$;t|v~2I(Vz$B>F$=wdNN3SK~HJ z1beNUQ>dq)MpNjn>#bJqwbfHGs2wd%igV&}#`^repuH32iEI(O)cgEATePA7+!UWe z`_{&5i!DMuYsErjq)1j_&lW=&$2$m1dBt_7xO1v5=3~5KTi}jhP1F?i_*<{|Dwt2D zQCmA$l=u40+Um`Ud;(@=WyCs#Kjupb{+2tv;r34wpVupXJhjl~Vonvuj45|Ko6Uz)i;gpO_8w=P zZ#IIB;N7|ESE^^wobw{xc~f4St7pupC;#m55Hs~IoAUC!1gB#{eRq!8Qt4ZjrMfI9 z)l2IBW;M4eW2>CByx;=4Qcq6l>1HlJqOvb$ikVEBCYvTR9q*fU_}2EV&HTwH`m#(Y z`%aYoAoxzO3nEOuq3dLkXluwRt>3DM{4yvO2owi*lFlrKSOvn>}FRTMgFXanpqf_u3D6)iBxN` z@+ewUz4Njd=EMdvb&gH8-RkYx2<`EN_9CR7oRciZL#>?HCL8raT-zumOy4Rayw@G} z+ESG$%1K!|HwkP2wTDNrF>C^x<{qn2bNaV2b-(;E>erm7Ud>I+P<}!ve`>YR zxu;f0DIUrz@~TvR8c-=}#oO};-j&DkL_UZo@sT{4Pon-r3iTJ3iLsRbu_BplvKU8p z9OXrb@#?L*;%hO1>;y59>_j>$LQEpX6=JeFQ(_9~t|0ZDhBG)_9S1s(Ld>KRButa3 z1PMzYDnY`xHmRzha@2-w8*5v#ZLMKs!>sMdwu9QXw{{?_-fb+b9aSl^hLf_Yw?%h` z7Dtecutt)Nv__GQvUVZc#Y&21jkZ$FZH=*ZCEL~7jchk-ce35BJ;?ST1sB$y)>yLY zP07L^~x_%D!-5q>D;o#@#g8;9IUc*tGwehh=B!BsJ*S5`e*7n%$XD?{4 zVsB-Sw~w(ewC}Q?w?C7*EF!DRFqud_r6trixh!8%kE{gs13T&i^htE&eVNX(s1n@0 zWmH_v)-VV(f#4Ec8+Uhi3m)7hK;sU0RxrKj`?7=9+3}iP-I|UffMWi+z{@??RNv80XL8~t-$3Xt(;&u z;0Iw!oPKd|81Ms<33@*{SO$g_*Mzm-1ds&9`pzWWU+#6iJL{Bip1&L*$qYClk{2k) z1x^C8iJ0L@!@okf{}5ynfVEF}J7DNtk`?emc-w!74SWZ@5ZT7>hXTI?A|RTO^oxSO z!kiQKe*v!G_LG7ofDwo$Ed9pd9+)a<6S#hKfEIiehDo76JwOYlYDoBdAU&*>Es#!F z-LHfhoB*T~QOE121*-vz5luMyEx}VTRWK$<{dfQ^geokPQvVWw7Hrjs@N{4atd<=R zUzpR+ni(7g#24Yj>!$?E15*%9*!s=D!!T9vOc4690CVtFm?p*k)_^&fs$t=}Kx^1J zTVRujYv3U#SODlLe2vqu4{iZ^BAF2P3xd62s)$X5`h5UA5RMR=e*Of|JntR<2qXIw zK=GIWLqw1R2{^$yKq--EynYt&XJ8-VCU?IBcmu`}Y7@F24seIIDFr4*+9dCn0ms2O z!f#^q(*Sso9Pu`5{8J%$0FJ%FBLS)Jc&vbhZvf+nyh+f{1Gt0RqylFkZu0lLgD+ql zAvdA=-vJumJECo7`|CnALOTu!GY0CyG+F~SgvXD%=iP(auNM_Lh_4irEl$9jcn;q^B_ z{E02i1lET^M|lN1V2g-H;3X#*`V9d7KQz}U)B}GM_+We!2a5yzUo_W*)B|6Xgg#zb zmxQ;Qp-%2{zFuNcw*R`={+0gUW-UNg0Zc+(z3UuY)r7FC{~^?zDNs=)J%FDByaOB+ zNyqP(1^)mtwS?^_+(#>`FZvGyZ-kHi7umoMz}HthUuU0SSRe}GCP}{-I0WYW{U%yJ z8NeO!9A}dy)bM%P+c*+?59fl$|16tzmx4=#>Fz`1HM@jCBkuk0VV3g=d@>=pT`m;S zwmY`V6j+tEI~IJ=r}aj;s^$`$tMuXu-Vz#w&&u@CNQPZntSP|`mXSWdAT-n@(NZ%WoK$Ap9zZRkgF@FqT$pFb2(*NGXlWEuU{~X4$z!qLla^u?T zj*rzJphYnq>SA(syjaxa!Br7>NZ!2k(dy6@BoV<-kC@gD*w?CA0j5F1l z99*42c_6Q@^_{Tz*9RhY4kieDfF4$B=qAKX(At4#xCrSUHiI=yEJLCcY3=29VQE|1Xt zlHtvP9Cju-!^Jyj8801ro=w{`)yq9bb=(k;4L#>}Q{e4U!U$#I+i5uM5T7SvM zQJILiNvZ*AZ3$)WKHll0PNUC`Ha7`1=-^`h;M=wGKA+kO7v2Rav-|SY>g913%pQ zVu_oxCyP(r(yc><`o^hSneB3pldr>9B#2BtX?VN4%uHMfhzmS*bf;H>n%|d$fS+f{ z&CGVDL>DmGn6IGW*cSY^;6{xNhm$;zZ*;_T)y7E@4w`~zjopZB^u=_6gYvFI^-Z7E zXmlt?o__QW2xv5CRuk~jWme$PSd-Gkf0}w!nu5adr{5*g(YT<}P0pQ!pXreHjPGey za~OBRTy1mK^Pk7Siw-&OjclxvKeI|?qvC9kGE}>@+K{I4SpGaVn2y*gp4%H^e-&?$ z3x6kpGj0`p>(VgqH0_cw_<;{!qqyLDdvtN8LidbJ+$mf`W9y?^Pj6v8*D2iZ9q5a2 zyWHt@!0t<_hPBICinLx}bYGwy2mb5zCo@PrYJ8cl)$1rRE=!auWNepSGpkKx9IeAo$&Bmec$R%6qw*>E@?B}*vvID{XpBL`Sk;oK9ty8) zx)m07Ax!s&o`SrQ29I|Joi5Z0ZEHk3U-URAn^3PYqUEr3Jr#XLMK4~)ryO!wKM(XJ zCI%G`(PH|mvi~#|r8WC$EJDlq(^!f&_B=aXPKtw_E^;n|GJK1%O+2NdZUe3CTcYla z((VOX15B;q&kw{CxCd5hPPDoj8v0<5`mAINbfFl5r%6KJr1jzpks1Q_?vs4&Oq`X~ zGLG@j8p_sK>75`PW6+-+9l>-I&Ti!V(FHGv6N}IznGC7{*c3ctov|IxZuR`p zug!T)>M}75A{iU*H2PzxvMvJn?bVG|Ns2GAu2sb~qb@&OqsPmXW%MLWpScsH5PmnJ z{BBfB%^%;9s_hrJ9q_e44hB(v9Y1TSXfnFVj8qIEgiS$|WpJX^pmgosw%_GUdzy1P zfM*R^mWY}Dd|Bqf)zY*qc2d~4@8H2Cpnpv;P77<3<})hka+8K?W3T9E zmDlj+VNcI6$LOSa-5%L0{j>?+en!uWA)@^pV0TQ7zM*8 zZz=Z=z=q*#d87NB@7D=CcW&7>Dd5~iaRKsmCC`_0Fd+U=G5CtqXvFABj% zFE20rUp=A^8L=`;$=2u9mxO9WQ>3Ks^JeNn#|&yZT^u_DB`1#D1kcfO$WyRNY#Yjg zSK=+@%PVN7`A*9(Nw``?Hx(JVqaL4}u#E+5=vOXXQB<6c9CK!}9Zfo?02(h&8GP}} zK0~{?KW{AcEX0*p*lsf7-AVEmMre*gY)}?(>*%bxW{)cb3_UxqKYjOlCMe6uc;EtQ zQ?NcQ@hu>J(N#hi&GSf)Gt8%x<&l?AQ292Yy2+0De?})?nvdBMdaiD*`MH>+UBGc3 z{0RloMPdTk+o~Zho645kC|5sWiW@~#Pvn%HLT*X-zm;z2+%oQ08Zn}`4cVPGJ+fTg zF25)7DwIl;Fu``0Fq*NZR+bq4jxH~buutZSK9-#?jSA>iViAqZQXgaAM;OhY?xWpb zu+2%{$mFI}hzrjTOIdGqBh?S9PY!eLH9(kjw7jb&)uv%kEiO=-va~{~$mEC1n4#Ro$wkF1DBAS z@Lf?3^=G{+9*j`hiGl>6J#nt74_Rh6DyR&7g9P9_;jh^bac8S53M+ODeFFqgJRz@1 z4=H8`D>Muz49h$9Uyp+F1YCn=Q!47?Io7t^x`| z3OU-`YC@~{R-s(+*F2u#UZTH74W7DK@mt%?LThd=Cclq(RC$omN|nbS$wLB71Xo*h z&D9+FEx|P%=wW7YDikF%L3^TH3myVyLn>kniRm7&Yi@MCp`+_PXU~ExBn7~I+Q=%{ zDm64PD?C^wNly@;-SYUJOjq{gez#5;GjL{)g#L(q2#x=FI7n^zZI!=&yGDDc$3@CmW{h$s}r&@6^?o(t--cP4|Y!=F9GzgvGt zT_$6+i^H2rZCr^HAsGR$I(8_4?p9fCcC8AkOLmH#X6IkNrOM>XJLvco8f{R@2MXF_ zIeHH-RZGh0I-7VcCl6b0l}?o?_v~+3O;O{nmtbjE=_;9c>Sp`}0 zoPM%}?c4}(duy7a4ZcwH~vf(~mw&#}e|589#`ZSQjqzI?hFQZyz44o|;|a4YDX=whE*bZI)G7xSPl#&Vw^1jX-T!x)Lk@#M_fBV#a zB-R%!hj_Bta&sw5(vfou6Qs(aV zWjz{3hDtES*oyz>rNfKsoRtIvW}7p0zoqZXQ$CeYOnJJmc+VXlCFhzbnNaeN?owy* zp%GnYX{WtBVU_R5SH%W(c8nR0yhVqzSZx$FW%wK=+`pB|pz^Fo+OxFagIezkEsnU` zVAXtOA8l;T)I5KexNxTwW1c7C@gDFU z*I>&+Tj#9nWi6gD0@otzsgT1P!5yYbD?3IzqK;+YC|5lf;-mrq34qcrPZU_PV;^Ae zua6$;eSoabCqGkH5tZ&3Ose>v#^WZvRve_|6VRouC}}{BOui>M{5}W~Kk%n=)dr?U zdWi++msq!bHVa`MlDmcW^mcoq){G4@Qd_jAH17wqC=$IG)5g4(hbt8XEfdo@B@#d^4xrL>z7Q5;6Q?c+@>Fwjv95BGDdA#;Hv#=5rU|n5U z_(1E5fX97VDA=^M8^tw@Pm7Vv!ck~GH@2lwf|KSw*QIkKdsJdz>93e%qzE`)*3+-E5t_@r^}I|`b$Wsv#06oV)MD$H<5)QKnT6B8$KK)E9wG=b%b1}Y5X_GFA*Io`u5pmih z_odGk0(+u&4oNHeLVQ3YlkO=6PlN>8I%D-Zevf0MCJijze6Bgy*E2{fejz-Ruh_56 z9yIt%+@8w!gcGea&RVx7Z|_c>-fS7Y6J+u@X>av_wew|uoLqh4u#QV|ciHIIe;EH- zNJjXrqHU`n`G=}+B(Kc}bQ*frBVtH!D{UcN!-kf7jTDIDn25V?Ak z3|;KmaAH~wT5@K4r$AgE_f!U5sM%Q=^h8l~?(FF{azEAYh2$zE$E)-PtmFkI6>R-* zaMl|X{!yvq0s82gTN!cfLNa`7c6)kCmZQc=I>Cs1Y*sHVGnk4q*1LQUMh|p)3$};8 zx?a@`EFRalJS(%;h)I0gKZ12AHE!ke^wRE1^hBhhE6J+W37n1YDr-Z2*%c~fPlMjE zaWEampU1?USPBZQgj#ACua@XWJoyec(yqyDB-&PEV-xs1cf`ljwd@G(Cwpr>DOCI7 z*3b=td8P2n3h(Y6a>E3QGMWT-w>@dta&k%~^dkymSS@sZvFklQrPa1zryqLNEZ5R< zrE}gt#qe0@NVJC>o$Ehe=D5@KY9P_BqXh zbDVzbw7$2RTz^pmZJ)hvolYRc_I=-l3Xf8b(XZq$#IF7SCMF@T{Diq^|IkuiSa9>^wX@ zOUI5Q!heZMPbNs&72EI?$YfD&2DpV#fNtg`B2pC7e_1qy9;vHq43xoFF|Ce7TdZJ$ za+fuSHl=TN5jqIW>5LJoY-1te{H_16`8n5gae8?FAWx}4H_Xk?r(uRN0h!#lu&)LE zVY8N(ll5)8&rGTII_y~`3X`Hh$tP5!>%7&~D90BLY--c*hRg+_1p&5&AxcxnAZwo6 zS;blQ3i1-f_h*SVe_b*!^532Aa{Reu8$=WqI2A5aC{yo#ZX2yC?}ARQ;XRweYOghco_bxWejdm^OtWOzau}lr&i+K z7b?JAIxct- z5n@i^)N#p{LVVcwq6&B29>dgZDGOt*(wCbaxp&zcev}RZXM04c^#(MWH(YX{`;v0N zQC3Lzw8T)>%abCkJ7Bc7a*I~gWN1*Hcs{?opt2<-#lMD1b051xuMg`halRPh)yO}$ zDS=_jf_2^^{E_kFIu4_GrksLI3baUNyE(9&-(NwZYdm4lJp9nkII@`?dwD=Z(lx(q zR6LNrib3?CPQlpMAr2X+dHIAcq4(_0si42wpBYP7M0bRpcV{nN6NU{HHu3)3_$cWm zW16{D>eX<)LWN))M%-Y&BB*IR?F8nAX_hPG`_AiL*YR^dylE$wq>Dpr`wq7p(Zt1( zs#+ZNulG8yh1SzaIVUs(wBrcT!+$ddmy=Mi%Svj5*rj$&cSi3w5=?a`SdFf4(*nW( z_7ap#&q|S~m_{tzlKS`)pXnSF7MQnU5iAUa)3Pb8WE!|AdMWCA5lyl`ewha`Y$iw& z2#v1$mmyt3Lx1{+)u_<6!OP^zRJD*JjY5|3dNjP^28}&d`OE_5oOag*q)4d6&I?FYjM{2(wkBFfbk-B=hJcuXIH3L8JU0qA9s&GQ(e{3)#ZN zNC;Ez!~H;B>xiDH{Q z5m9Qvc_E!c2D{!7b);WkqL)_~f?kB}>W(h++##6hkJ!Ar%KVI2R{EIkW;ya-8u?|c zyU`h|jBG{1&SX+daXyV~y#(L;7CYyca_Cs9#tEbyw{{d3#b#pbiB|`L;dy+8_?WOZ zOUoYeH!L^r=Pt5aPC2IkxTZ3XvwNS$Q%?P=8=?&K)r3G-*2QmjYXqqyu`0F@!-6uq zcU7>5cwpsiDIyiR-T0Ah2o$wV;!*Nb!hc|WIMeg27sN|ttao}Rc~!d6p%--(^dZ)& zzevk=7mKZ%ec4AyW8QS_NfoEO(-O9q88wGQ%rH;x!O}XY>zf$LnnERlqE!RP{>Nx7 z^#J!K*U)5|(d%BEb_&A7fi|@rjMuKHw%oAUCp=Q~I#-@$oC)T4VN<7}$ZW*}#jP?_ z;c8J2D`@z(=c%2tEdzt`pG*+fd+IIUd%%6eO7#6!dNf@~ppzz`BH&osZ%_y`vrhG! zk*L4KhkAY#tGG*9Lrcr&PgHD93))BVuVzjGWpVR|$j$NAXsR(I@k6RdRX!osFMgs0 zl?^qmi8)6#Qz-}KoehcJR&)h&5ReY=Lj`u5`s zmXB-QM~Y%*@#bUdGxx<%*mG%Fc)L|y4jefJmHX#)pVd0B5TCRi^Lk{q-gVT|I;lXp zWl-pf!-V$JVH}-~)J7~%fFHI+@%INJGi9uLn>!9LLnB5hw%IVg{BF2$HnPN)v;>S9 zgM{qCG5n_@f}U-u6hA<8tS@B2;))1H_oCF$P~)9PeOrSob}3#~q&vYJc6nB92S37) zyQ*5mfn%Lj9PA9dqu|%t3vSq+0x{hXydkLSr+1QLCGt zsnn188SnydQ14wvb0cpP(+m2lm$$GE_7s|(Z;x(~U~4w0H_wC^N{QOe zGKx*OoAC}}Y#p3azt!w1a-_&;=)`$_m%ZUE|K%%vnpIP#ndkKVpgPU}``*3npqyK} zGw-`4!CK{YM0M1$NZky6tz6snq2MZdWc6B*_04XqKCdku0s=Uwwb65}kPC2a_-p5W zaCYsRhC`M9AwwEoX~9+NP2ACD1$~x=Q=sHAN%%28RSK-SpaYY4b0HsnX4hOY?`4Tj zQdrU=G3AHX^)ZHoo}exX|JhVlS;SRK1(9V8JMU3vsj03py*=TdRQkUcRCh&S-NVo& z=xP|m3>Ia)6(~h0M9@_a7r2bO!I`P-Gi3~Fz0Vc&s}FqW3+(RDn{$jZ+je|(sPkQI z(aeUL^~tusaWLO0SrAJOTr-8s5iuvt@Ck}Cx-plo(2!i=ed-N;`B2VPyAJCaTU}rd zP)e;>M7R?x&QEcBh}~S0yAIfrv_FVTwIYOyoiDZoe0PJOL9Xy5?mqN8 zM!UaSL+Px)pwOLslBum$Iz5Ks<8#xR&8IJ_>Gm>S(u9ph1sm#V^WU%%4d~MbyRN|P zgld^gSf;B9efmtEc z6DMa!QzM(dsGYGT5H+_U*m(Yz*xm&3KjAL{{}BEE zjL2Sl`2SE`uf6?SRIk|EX#S;M|5GggFN){2zyE*2U#UDh7Le8OONtL_=w4YNJIvk&G&Z#GBP?nhYiQjO{v zRx4!M6~V)ct@=s8yRciRHfn>yep+QSY@?TGVa3rFc_RZEB@oSwh|e8aWSXht4*4m_ zHKB%kP7NLGrKYIlay$zv7T~KqWRC0_&tkta$0nI4`RJ9e_2I=?6LBIiKbNP9ZIbA$ zs&lYw5lUi=SHeS7+hu_!f}f#ls7dN1-sm@?%3++Z!r44cm+-@)Rg40Di1PEyOiMEU zF)O<3)VxC13xp617X*pX9l52F!qzocEn>yk|HcEev;5zZ01qoG8`r>ILGC2Aczx-J|ZV~Kt>0`S!@s_+Nb1r3tN2N zg=|nd|A>;w@UtD@kzMjoKqB0AAi(3H_p|D3s<*YxYp{(=}&aVYMrlgTNRtb78F1KI{JCM%u(Fx9sR-3ozHK> zDP?q-`*eGSXdm);ZVzHHB}K?9%XRJKiP&SkS(lBC}%0LhTD7?PDgM^QC3)l5xXm3wqe9R7D+GJpllu zgYl6{8~lrO=@0#UmIrX%^wH&D08F6|nKVuKjQgF#zfBg3J)79uedp?tK&?%FRvbMI zdKRlybM$qsT@~@opH6W=4o06+MnlTG^w!bD|qXKNwkVyf!BKa9%!s!UZIruZ4M8RKC zmS<4hfI;k>CDA&bWIMjY11QZHn}e@bhPb_hEc(&UBYlsrFT$*XL}I6#AbyRNarqE_ zkM*KAh;%>-Hk~ztyKh8aKoi|1PlsQNATACQiF9X;D$EA+9>y>D;w?LEatEZ^*$6rF{a{R$#s;D3*{rdNQK z9=vUQbqia~1O^ocp}mg-6;}+uc-L8Ck@p}5MWu*v=*N2=hXF^Rs?DM6XORZG7l1%7 zV(U&0Lov^!Td0P+snwh-TUag{HeJM`+i!=EXD*uL%~40pSmm8n2h2~hp`paE`P{In zz1;H??cp6X>LMoN$m1BKz9l$)M2~6Aep&ckP>2`Ow^UanU4H_NNP^kndiG_6{CeW{ znFAf)hu$%|ePn~L%A{`JY3dRF zG7@8L_uh;5m;NwD(8kBdj~}+V!|)e=CT*Cf-CQyanPIN26EQJ(9)@NzNp&F$(*tvjv`?VT((mtN1 z|1T`{?6N?$*9G~lPzOdF`>?CxlPI5-AgDku(B2g=E@UMVOX4nUC1OiZ2h~hng{P2{ zK1KN*u*&tFFq0F?1_5k_Wcx`Ka98xRksh4;5%$Q|A_Ca=%CM_7hY0pWuNi{Y5)V+^ zgjb?P!~ty8zCkEmTIMgXsZrMws!YL7N=*KclQHe?b3*O8szUHPIX;Mt!b>pN*~pzC zRij;|r$&>5YeGsw3RfTO(e|mQ-|W2%-1$tsrz#F+V_h@G-bDt2*B78{{n z;Wf}d(0c{%*V^;!yWT?Y`*u=QKde@(mIo@D-gNG)!q*6)Xk`09mUX5wb)xQHomx!d z7c9S@G0E^}>Hz(DX4Q?j)+ktpUQo6Rei2`S%ou(~ZiS!8T87FHYrzzZ@xY&Y31BkI z2wqt8nB-f9ndB?FLINT zugH~A1JeVY8}zZ1HwKaL6NMMk0}ek-)7Ud6f9Q32;WNxLEapw{J@+H33(7vz8r&_~ ze%$Hj$^2E4$^12{IjOZTrz(@6RZzhzRe>2ff(R%eV*iycvVu`%Zz3XzC%_~6Rm`d8 zwUHa7&)0j>N4zVFTcrKLf;K;)4m)K7e}RJX&JP9U%1bDUX1>UtixoH2 zz02f2zsI-|y_W^qz+);~FTz3G9?Py#@2_{yc`r4S|HR$8%}j|2@Yg0qjzi=T`|gxO zAJ}1z-X8jyBCbRHQ?IYpB)MGVpj5cDTZ}0~zE~uB#r+~e0A zz)ynG2?82?UOGzvvGD|z0-#1{o-(k-{u@lFJIAgpMz+izf z$z?{K>ID2pa6^A`$u{yp#2Pz6MAGzg=Y7oW(lCmDUk*KZ1obz7NpSxXJR0cUW4pdl&&{9`_sf7G z5a8{RM9cy~xTk}vO6O`=y=0uw5s)^Exa~z3XVO_F=TS|sEu)h&0F*HsV7G9B2yQ09 z6mW_7yw8mDuJ>$>nz$7{N8HU*;=egAkOD}g#ks&%?eOdRxtOaqXPKKrKW9R!p>7(7 zE03!ZYmyL-V(~G1$O!_L*pu75(DX7y8NNtz2LgVl&6gL}&wKjg4uop48ceZuoo0Ki z9mO{uh_0730Qi;lpTk+AQKT-`ikUwKY1BG4y@hE+NwnxPMNdvxW;Nz5SQSI^E^_10 zs_f15itln&xUgE6$ClOBv75ej$eBZ8>95=zapdi$hLp->HA8Mklw|pGA~ehj^?GD) zWvn}0N`RP0gryq2339t7Ps1X>RZokxzY5JHC#ohvPEzX=r2}$ig;C?~WvPQ4AxsX$ zUq#5NT4ek?pHL3UIhaTvhLpoZP6B}U=J(ALZ8&*f(4(Ix)QwzzKB2(6Q_gE%W8nKS$?nC?Sd`%<2P%v#Eb~ zY!MBa&C%n_*wx`2{$z-L9I=rl1X-=G5?KOX0U?FG}gLs(Y-f zH2Vqs0&5b;<&5moYd|INgJzl$$dicwXiWci_B3v2#sA`$Rd2={zcwG=sWE>uLT5o# z4yv^g+seK-z+4@&}z7YtKk}5_up8<|9ty7l6 zQKb|^6_DJj zhw6MXGztKKg`SpE< zv4>eCf^9fbs6SZEA>ur2SJ$e1U3Ay%nzCeD+wYnpt4w+HT-3Q4(6TEmkM}QuqDb{^ zx;qS!1kL~c$MTg1kJ^Je-#m`G1a6BG%>o8~E&0^JtEH(`79qo__E>zOMt1yCJIuy= z$xHg%Yp%K?dXWU{fv2EQ;b)iBHpHaYJfxY*@v<*(9p`75=%7X07})j$Hb6rsQN{=U zqKOT`+XC2YQ#F{ed3c{hXLY2EoiQX;k*UM92{GRNNbq>o%2Wh=zY( zgtub2h}YDk-+Up^Cy8RP_^ z@{VApxKX*~9YX?66&=n`Ma`x|&L283Kb8)hi*56VkDZ|jdYG)fiznH6GrkEHlj$us zgbt%bCjsoocpySP*N|!ZEuWoS+&@A11CjSyl7)6*+9nQe{DoFNy3D7!MtpWgZeMer z$BdX*Q=5|U>;AidGhM+`d;cWXKUV|Z2K&@g+>eBN(cd&n`2B-5 zc{T(zdR8ckC{gT(-}R2}sxd_k{Ie;;XfYET$~NjTY`e}1^RGdU1fV#!lFl4c*ky=; z(-%UfGw!_3tjh4e9EXlAEG5R9XH^=IP`0FD42jS-vy*t|x3G21tr{~5r7zXK;dIZB zoZm<2irH48g>KqM`g63`m{z!< zjugue-T=o5eo(;8i!ozx`%J6DuJp3eTkwbF#V@+WbeX2MBId?bI$ovf=zoz&reZBK z5!MCP)%z#(ie@e%%TXUnRp!Af)Gx#}^>uIK)|UAH{s>Xtckrd@QG|e_k?cA1^;o9H zC;j0Afq!h3!Z&nE_07ZmsS$)!FK%I;hYMKx2s7QfI6EJWtBDoSYYY(<^Z}?%EE@#G zBIilCQ(yMuTdli$G(iTg-MoXc&0ji+aQBYmgjLey>^fmmFNyqz#2Ea|1kWToZ<}t%rY-EpS5#L3Fw*V1W z_pEJ!F&!(^{V`#JL=x_2-K1YOH+)VSGj~7I3v{frAyKj!g zNY3WJf6Sq=UFW<;3Y6$8ryLI{!^tWMODo6#f2Hn|DDflIGmYTaQ+j3(P+*G#JILBz zYKDFYARP1)8V}RI8HhO_9UNy$wf%DhlzXs{I8cVlY*o5|QdtF{^rM@^JG+(=H!vAK zRwd5vt2fX3mmt#Fl%uO}hUDuv++}NxXpNzVXRc0~;AJ)&% zHprX%c>gM9=0>Mv#e$x;AR*vK8e$1qV`VJ@n>~4ai3}wq9=?OL!9=>XobV?yo&m4o zP^`&-V`&V}>Une|EA2l!;l_5+1b2E2Az7zjk&;(8P53W2EtU5ccS8y{I{)JcX;BQe zyrFeaJ&RD^hmgLy8$MRc!UXwYh%xCJR*Vuk?o3wIVhYkQO=f}!PE}QcJ3^W_1F!i0 zNTUAh%^PMNs7!RMovLk3Os)3#sLB9kn9NiGHSBdY5ONtr(B`Q#tS!jeMbZjRt!k!f z5^7(|tA4+8(9n5Js7d_M!A!w=eQo*GV-K3Cs$tT(M*X9qZ&oC>f3NxL(S9(OT{=D&=sf&GhUS(bepWTk#VKt$Qcj-7vH) zKL!NDmTnC0q2@q;_sRn3mI<$g`v^eWKkCW@2O!KQ0X4OCMj1!Dp%6c@YF*exbXcc2 z0cM*zYDTcp?}`ril@5~hG}JV(BcS(-=BqO;+Wb)mw`k76yEOJpkyK8cDscxNyrNQ2;ix?pGZNk(K$ms8}<{oa&USL6Y>e z>*VC*zq6r3&^z4Dq->XKOLHxgc*3jnDYY)(^q6$uKsWTj75?X=piIlzpKoL=ZLzJN17Z@ z-cQ+GqU@;Kzy`=!C3EJq+Ddx9H=7(y5iGWtzWf!uH-S|L-YJU#v%a*N#-9=$Ouo(4 z{25Rf0)>IbL`Xtr{B2P#0u;Jca!o*f7exi2 zwMTvqEk<=u)GSRN^3Sd`lT}M zyDF{wjQt*Vxap$z#udBt9-mY(nsWR?Q8z7}>&wXD2CrG|Xevt!2S;gcV_{{Mpq7S? zie5sfMsJO|1UUgb%%fm=-;pD)YLk4W_E41xE1tOjPG%NWYo_9$>Wyjl{%y8I6glBa zC@wzA!0w=VVy&TdTI94;vBhVryh^hdPs=@&_nrabe@~=#=yxb0y6b-m+ZS#8;F;94>7H1*& zhOyWg%uT({{L@nH7^RSwXC^A+U}Z$|Sv%amC{m)HP!gF06{Sb%u+piQ?d>7=7+c}v zv+B-l-{v89?|=@kYT%v6mP{h`a6c?Xx$?SmoLbm`x{kAorBr7pHSCtqSE?MIk|Qe| z80JE9h;A0r&h*ZkUkuT?jt{k+da`m!j0*aEe@VuQiD{T85z@^NXycLna%HduES#$$ z+y`T=mX-GgHkc#?du|9dy2=MXkRN{{D-UWeT0G$6SQc}bU*5W=;yJ z*s;LDGAmNMhPU#2suFh zhve}-{wF?ZL5mC))j|iGU8Hs*RNt$FN*;VEr%1JZd||n9MR+}=!3)>CR>3&ASVrUh z&KnHxRM`nOJbXd^&J_Y;C636`(++t4I{X<|_Kmfeo__qty>IN+o#JNpTgkfGf$}7T zfUDF#9EKc5cc4-gV$jH5Wn)Yp8;jwW>^ z<9$}QbgP#E zJn2v_zVtTIX&lQrX_RT#Zxdk(J(TITNbc~o7TZ0~r@_(dIK>20=_L=w>Bh>SzrL=F zj?DLKM7G9fH=Vs5$be}9BX38v=C>_#$B)bzbK1zyQJ-V^D~H`D+lC0uiDJ*o2JPaf z?y_N->yfz)oUH06N2XO7LUSWz$LU?|mhC^!!Y}>PoTB-d>JdcGlIQ-^9;X>P&TBhf zs?JFGWXd+;HOM+PH0TG62A1MAh%=VTp82%AMyLQ3*GYFAPD9iJM=(~}y+r9ATI9&6 z#Li|mo8#F2^rg3^151tBmxvLg3?YfCkm2b`U>HTxPs00O)6V(yyr&58g*$#~jhY5y zA0s>m)Cq1~g0_*r+-zzOkD87WmM)Ir9myGLcY%AE{ni)}VVQBpJYm^C&qk9(i2S7a zWQQMY#d6qQ5i^;q6Q_NYMxxwSP>0{~ICP7o-#$8q9+eSfnl>45VwOBYRq}@cs$0tNXyV!Ji}K zdE4@3Rsj%V@$+Q3Lj5WG{l$khmQXR(TY+9ooEMzWhi;uQK_S9fKFgfe8Y+PeZ90|r zrJX%WAw4e?x&bSOIh|>peL(SIfvg3`2Y1nO`8?j?PQuRIn&0m_-8Tg_*XY;e1Td#u z;p)FVQ#Z5H>xBB2?-o(Hw4KJX=`sr|Szb8yyD-<&aFgZb^ z$YOYJu9_8Dtg#Ss1wA|@Gr!lT_Y`kHvuB$pwLLc`j9C?!l%C8xMiZpf4VMyK`q~%WwHSjm z$hkh3`)fj?SnuO=`_2**Kk^{U>Fy)Z>qfQ5jB9L{xz@zjA<}^c2UVCTOHz&}?>L)- znqhAc0z0=ZrFA7^gtsB(j9;(?74ShJrO}g|UN;(_&vhrQSop(@gkaE$OM7Q3@Ln~% z;y&CcMZk20q9i9OX2zy;?BT1#?Kt*WPObEf>Zc6sXuNDa6t$m3Kp6IQ9wv%;@tkD> zy+&EhfG1F6h1?3d#EQm#gWkCPoV}-1k?D_$NTLW+5BBuIX+20w`afH`ZTonfe4$iJ zHO4KBbLOs3yBR;h1g;OCln?U>FQ@9p$9m>F+p#S#u z>*+gf?{5Bt{2~Oz=vepGgeUjDHiO!QjM&6N&~6wY6(qT+NH%RNLf8%NsK5>kJy8SP zkNKG@hy;Eica*y3d=7Sotw*YJSh%(6@yA+2aVf}JB-Gtso6Bols1Y7I=lF%@SyHM&0yeR5Oq7X zR9dnd^--GMPSbs;12mmRT|uolY74P2#Bp0sV!c7s?HEWsl8&RckTixkp533oyaCkh z7GLm!vH`&^0uj4#_#f->aYQjE?Z%(Q8$VhI5fl zqD~ht;PF?u*QkD*>djO?NA+Z?_OvCg{3EXXFs|GYS31r7Vn|^20je)iJtJ*PC@&_I zA0?Dq6Ur?KWf%7xRANCa9jsLTP^tW`Qu%JB^7TsPx=LkzrLwY8Sz1XpRSOy@e1s_X zL8{@jPgCC3lxH>NXPWYmrhHXX)@n+JhSj;(@iSH7zD)ItRA+p5x)PnPM5ZhE@_1~x zQ*=AXyLg^E1r))oC+9{-1er#BOz*A2D6IE(VieMQPrxXs_nwcDOYgld+9~sPZYO?W ziSjmXr$l0_p1cf;ExAb2lOM#$peJWVN4R(OWE`Wn^!^A&Z|eOO82wG}pN`QRB)X6L z3-sex;3)TJz5gcMJohrxlFf22KsEmjj7Rj|d06|qxxI7Wfw^22X5$c!c)@*BPoi_& zoqDnsqdW9u0;Ah=(XDziiqTi~{w9oW()+K&=qq~v^BCQz*PcbTcLUVY?OYGlG`>LZ z4Po(ldN0|+fZp4T(Ybo>42;gy=l%kt)AhN}lcuL}J2~v#Tt6hKryKSDBo=QNeIXx! zT3WmwX3#A!)O*PxSwJ?@sc=1`FQl96BH#PC`P@#rm9(C0!D@5$WHm-}az}2q-d~SV zyIzaOn478B-h@Z4ZFC29CwN}Vsv-(mEKL!KlP5_ zx8CT>_-Fi$yQ6!t>N9iEOk1K)C!dc#)n6I?X%cIsL(!iko1)*ZzBoEkyDK`}TM^xf zj%E5cMepjTTljW0Hq)bb){gKTw%*adG_LGu3*_vK+yROjCBd#bAUrMjo5_nz*qUS{dpn2l)|W|~oG@P z_GBu-w>cdenP(c2r=nVx8Bh6+D31hD$0*q9%@f*L`{m8OLlf_c9pFXR1S!7mg@4`rHXxE6YA8794%_AbMyP&J>imqK#pzKRe#$L40anIte(GXe9sRw_weTN{9Qf#T|N9=<5T0+ceP*EjP0FWyL8ap z-7-0s?`B2=Y0ETUxVzaYFKSd(XL#6stM7ma_zV~m-MywrbFY~$-c&ZSY$R_YmF7(r zz70Lt>D-C>UTQ+((!eNa8O10$LTt$qWpt|@Q>4Vl2CquaIo=sov>pYmO~ea=mrlN z_aw9v30)wOi!CDL*bbeLPxk&VXoj6I1pbPn;5Ks56W}qzhT|z%9|`xtR=gzp1>6R2 z<6PK5Pd|exD1>o1I{Oh^3Z2<~$p0ha;jjrFK?^yoacICu_Cp$B39N$y@JGnPB-ku% zrBOQJGFX`12b19~oP<|r{V)a=!mY3wo`jd+6yAvkMJYQCYGDQ}MlI%Hk+3@Z4Ae{S z>7UOY$sPxp`aemd{+%VnQQ3b$3O*MxJBLIh531>02tS3ra01;}E3|-xAn0VG#VxQ? zD55!zhP!BO2k>UxDOj>k(Q1amO!yIr)s1+Ng{AkTud+9Roz_=FGhGi)!LQ*k{EbE% zg;xmIWty_%$xrGa0d4fAHE;*~iYRx8&Le2WFpi;-e~lmF$HGG4QyTec=!Y}#4Hn^C zyp=Vv)l${KZQ17`PAg2&7-QfnSOCvr98-8TJ^L72&TgfUd9QFnEE2!W)@Kic1}HR# z)$j{i*PHM*yi5EVg&p`ucB`;kx+8lt&9?&P&??rzHrNkeql9`ip#wu$jYDZ=H{(J4 zm<3pbbqOUS4m#5?8*U<6_tAM6-bVp_SU@9y}FTRS$@eBMC|Ha(wZuTI1f&GRZW5*ETz?5gAnv&M^R={|W^fG!)qTQC?D1PR3ZDqivef`$ ztJ*w*tk_X_5spf4i}}*$@GA4dKgb?FC`@NBQ@HKMI$^lDRy;~pX9dmkXY3=UWjm?I z--sJiVIq3q|A<$@mqh<#(t4ulDE1-lV85mCISuc@Q|twx;2vh-P@3H}@H~7A_u+ma zgnLQuegwzi?{Mx9ZM@ecwgWaTqzZ0XRL0`jup#~<2CyD131OJw3m6i&(;~6%R z*y&O&_XKW@$p&vGTgC0D1$L4okQGri`fu(Zk60}mwXeh{DM>F3}wkVaIoZTXI zO9^-r$6-FaLe|SoRD4*{XZoq<9@4`PU^H%k-I;6PAo&$H#;}T{sb5+qZIpf??U7!V z-p~wz8%b*)B`$sfr^#!Ca3;~>ukcTj^=8tZQqrH1G>g&X!xpe^;U#E6FDxP(SVVTa znP@PHIJtyISq*oSK5Zi(@+N$RGDW>F!+WGTF4FUv^nM+U(+(4f>q}reS;yOPH`QDN z1yDkC`W7u%&z92rxSf5N?Ce3B(+T*LEJs$IS1AssQ29z4>z`bg=?!(zNihLr_d=39 zWvg%${sK|*uFa&QPtkMJNH#1GfTZ+iWKfzJpRH$eg_qDt-q1o)bp?6$5!gesu+lmP zARi|{ZRQdhZ3o%1PH7u?-voJve3ma>B~7GxzfYd*O<0`m!bh~N!n?v(;v(|te&VoS z;y(+~Lh~Mmhc((hL6^z{NjxloK`S0c@aQzsVJ5tYBSBA$xDwn6`Aow=!+800L&rb^ zG*MYTN6C=Nuq|whQG$LE&V_`7=TZ`!g^+lV|7vDu_AkishfJ3D)|Xf>EzipyfC6^^ z?tmVlPw=F?wlOZ_#)7Q{tia{+njB-ikn#j;;1Hs^ol9jjS-n9o^OjmoK@&6eVO~oA ziUu{Fz>!)dG>KOR6X-FlGY8}-&rWGUc!oqlM zOI?Mrl}ixZwUuzWhRoksVN`R*&Q`Z=L^&T8bq_jWdqb|EKUov^x;h@kHeuw z+q&yrPq>)N>ocqii70x!7p6a6K9lYkAiB!^J+@>LZT4i6Uo?FJpAq50#J_)&9x}&q z)re8!-MFf1mb<(0l6Eh93vX*rHePjgZP}E}ZMdqda#+`tA(1&eUN3?>#p}e^zzE&D zLkw9TI#Nd5Y0&NzcZLjTp!+@g5P1(O>=SfNETl(0?<8MOp65#t_$OtL>9U#XynE6e zr_&?^r_xYyIz7-Y51dL5smu%8s%_!?uq|Q>7vaaZOtr*zPF2U=M@uwzbKf|ZV@)$wc z17kEsfy;t1q_5O7y~lL@UHs{DL{4bpPhZSn7&U!HTif*MSfgfbZ8P|I>qre|N^{66 z-u@z3@RwK%I^4EbnX0{B%W$MwtLp48(8t5q;|F7WGrQ|>Oj(IO;i~qyU{1; zQ?kX1y zZ4Rfix;j5xTU}LGS8J<@$0LfiFvcErj_L>w)J3lv>$MLFRgbabe@JuA?pWDY8jBT; zTE$+OQV|YCPpNdJ6+K2P^26t;=$-6W>{&r5G(99RgVA6_kbL&7&OJ`%^fQ{1!Km~1 z;k3Q>3Rf=)W*;igpFbQQztd|$!h+b-`1q|J!MlBf-6Samb547R{l34SsK#ea4pztYgAg*amC=8p}{cG zaA>vAdF~Uu{_)jQ9+?=cJF)TFUrZZ2EAuSI7K|)WqE37s%Qw#5@QC?f-?XR4ti5Z0 z=6QRfjngrl{j;#1=$L?Gsi4;Cvd&4YNUY6Y>wGltA?MHS+nopUjAi~NKXd4?4G)Z;XQnqhVn;_OZEf{vDBw$-R~wdYgL-rSqANM18I`dHqc5Tax_fDeHY zy?YCCWbP9T`)qGRv0TiGshqM|UFhU`<_V&C4_Uy|{b~91fGt_! z@%A@>yQ#_BpGc5S%BSqfigdp{nIjk0HnNMUMLMG8B!jRrXdhi9g;jOb2P+nLrB+P3 zdq!;Z$LsIeH}UElZqB@s$vitD*_;Rm6TkE{h9pfg!!|=+;f|bWsYOzG3Fu(Y0I9XXlfiN*qJJ~Xi#tP7>b}s5FLhmU%p?c z*NoBZlLVuLWbplBK&CVxqE{4z+$t4XrDC@#2#QPr1X++hc8a{kKKyd8JtVv$FzTr6 zMi9My_(;lN%?swSyb~rf>tnC&#uBsZB=~0zaB&nqy;-FHB zgG#FA)RpJYIZWy!iSGV1e<)R;@Ie(msKN(T_@GLPx+y8UG1oWIy-q4m5b?ogcX4*O zNIsz_jf>Mg7#6}>k^iPtBSy|krPD>HDwol)q9yos^Q?itR%7>pEkDj=9@*aAI5JV# zIekQFu<)`anXQ@AzB*}KCbQ1`#O;SyetBDCX?>zO)LJ5&ZoH!R1ghBNGdw38B46Ty zs{P<0u;H=i)o8|m)-=X$vNXbA3Uk*V8wdV39Xxjeeuv*j>s>}`(*9I=G|t7(Fg-2 z5(yhD#(=>Ub_ZNW!az(H&^vAU0VhTcpg5OAta2yxFsb*umH?F<+IwDe!oIb4*B~6xIB~nv^m!paSvTomL z6k+0Ya-F3-q2uJT5V@$3K9bi3XT$;Z4Mk_ZoXd4LKleqJ!tOY^1A`?#f%YE}QBgRZ=!@uO=7o*CQ#(_n?2_dJ3`RD!a zIIdpPoJjg)T`Xpt`KUPT>@z6`xp-_Dc~B1{mkEM!@I5QQN)F?HW& z7usj}ma%1(PrG-N9w<0adQ^L&>|YgzBCN;JIL0@Tb^B(qJJ_1aXYke1Ka_r2@VRoP z;2Y(eO512%Jm!x^3oW65UQw)}fJ2E?#tMWel!q#Zlt8Q?N)eIX;V+NH^p0qGe!hd1 zl>#s{2sf9Ujr;P9( z%UOBH7ir(F@{ay)^2jQr=NI{#ihd7IRnIesWr#;Kh*q{VaB8=#NL3}u!V#xi(z;?w z+!fQrOJfmdr~(z9B(&uf7b8{ZQKysZ>s#FjKxb6 zl}V+$^p4U$l2TGrHziJ&3X=#teTOw`!zy;tNW6wBv^Ja8;jA9K6Yl->_(eBw%A6dS zFr~%kYfZEDUmRNWyL{@V25tv0&3;U#Z$9Z|U_Usst9I)RHU7R_t{KeD zl&89>VDjpHb$K1$JDeN5_xkSg>*m|$+gI3D*zdAEt$D`0&GoA5b)P}wgm{Z{q<@uj zt?Lfo8vj1=g#trGd`@t=W|?`J?~c3!R_#!W%^nTFBo?4RlOh}{hJS9eTcmjb!7?vj zk5embX!9Oon?#vx$RGx zo%>$L?nC!JG1(KU&`R?&C4EQkU$$xg-po5&7TtBj^7+5QQGJJS^1;SvMKzDweWZUq zs{SR=n40WeMTC#=MCM6?C)ei9abFvIq`0q0y4E(AZZ_FAJDFYake4fks`W7CW`5U0FKf`J7+v;VMKi5fN90xEyEk4sghhN{8U6 zBa#x4_r^Oa9jM;*cMqx*f!iEmr*OiKjU;5RJVp)+tCmx*DpTT2LkBmXq)lWq8|(zx=>qw@Uh$AQ7d8VIf;KJ$RiP4% z)fkT##tNe(0NR)-qK|6!) z8$Nf({PjDq3b)I;_TnVBmgE~X4${pQY)aW%6v80nr2;xdadTwt=5)3U^*4cAc5ihH zp-{lx$NscWsR{*36lIu-6{+8_6!ozV3l7^kOlS@ThEborik6R{{cZ%Utlg>=Fci@8 z5hAt_XM6Ga5sK9jii5>Fi-kxiP)vPNQzF%&KvIb);i49>LJ*qxCSyr)vD@up!;(pz zPOFPRv)s&@8>_6Eo-E-#r4V(u+JhdkmR}ctNWg{_|UQ`rhseyVme1ErP=*4QCPoc5O;P8K|`L9o~ zN*Ag4!0@u+QLn|Qs{3zv*=od(oUO@HcBHf+LU+78(2y&$yEBuy*2nTKihFj>0_4h> zRk-TH-MKXv%J@_+VgU9J{-qbzr^>>d0ftb3DT+4~uq%o$6d*)k3T;i=(O;akHqqB9r+)6OfaO{o{woLu8Bn00q=F(@Nvyfy}hh7~Gqxn}N&m z=E$N#absj-bbC~|u;_70Zn>nTf-e#Uh{>@?sM3uN)cD+^PFTMGpa<;JJg&Fyr<>C*$y)I`!W&~Q54z_$uqNp-O*7#9Aw<&q2F zaA~Myu0A{NqE){=TwS$0;+fX7VB_2hJduh1!0NZoNm}&dp4yt@wRR3spbjUb78men z#aMv)f}0CiWqn&+XZ_Rg8b~pJ9WICE{^fx?V4Z(mU`ybcz+VI3226|UPu8=bJ(w4C z$Wb{aS?$(5tApTlOkbzDSZK(ve6@$Y9F(pzF3e+m(Pwq^$K)@eDfFi%o;rIK1 z|IP2RK!GC=C;+Sr_=O;Pp{|zV&3G)}x7&08L+gFA7rl*!W5$n+%;>FG?Y_UDMx9VS z_eT1BXH9)Uu&AP(x7m1G`N?v2u>3e7XV1|3KD>gU^)h!KmagT_A*~8s1384ni8E=H zK`M%NlN9oUr-MjZx2`-PQJ_P)TP>Xb^%sv1(~CKjf}RB8|E$j#A*;YmIj?ipUCd?S zI4)vEr43Qf1$E}-fp6RcUrFYx(wRz2+4v$Oqs9a)!8e6liK}7vtaGa`()Rwd3GwK; zwrgBfO|cjTYbuOa3zM#`E{t*g4iFOFL_7~;&vSM=>E$=inUg$AEjJ})zuzkR0|Bdf z7&rGmZjKc;ETC1mX?Bhqj79^YKv?#>&>9Fd=JwG7J_T%63u3?(CJU?u=5p$+dgPI+ z8K;`jys|Tb5!qJc2OoC&5Pa8@daP6iO>R$`TUl;#&*Vy^9N*d6!F@DJc$B$LTzLej z(w&PaIqBEQ4J(hVlaC$Jz=vL z62m28p;5^z@oMD0?A6cZ)l#;d{0{$Rs_Z~n-iTZMy>hQ#2OI^E$L2qWdS2E!d`&X{ z@uJ@DZUUVpuL=6HUk%<_9ZlB0>}R{F59RMaXK^*MVddQX`E8+0a8Xwv(cCDFJGYNra#La$qp&tIVcOYE;@opT zz2P!q@T3L8OVK)o#rS_VLEQa{;v6#+;Eq)F9C=ROX2ZMocRlZU-}Ap4_{^@?y0rx^ z<~F&!E`On1m{;g1@)`;_+;;IKe-PAJFA9oyuH$NT4M%;v7xKiu2_I%#G+T5Jn>LxZ zv+br=rC0U84ZMr*n$1kq>NI+d!G$j7GP%sofPS`Tw*N+HxoMeaSzwcOuX}IcUEfza zy6v6}5MqLVL%`8q1OG*q&gEHO0u z8KszKaK^wZQj$nC(3yklx%d}J%X##>N2jqTrM~Rxl+m7KZhO*17wgM@{+umIK>6>K zN&L>7)YIKAa}v&n(B0n!({-Wgf`f z|JqORQLH~OeZox>w_MxSHRGB`rKzUO!p!e8nIoBV-yA_Rmg58CUVbcdBC~D#(yA1C zKA}3}LLPP10EpX2`@LkQkL`yLX}>8M;@Usin4A#DP3|+UGogPeVu{WVXd+yuD1^>5 zO2o`fdBj(4hjPDPlV_)ZL??$a{NXg`D(4eU!MVPIqF7%JR+X8-B%4^LX_|?dR>tBl zA|ot50<}3Tp8gJB@mMRZx_Z8IA@`pLPwF;BK``R*x?LU@(?lHM3JiKFQSze|7;+Wx zEeXz%!O)4{sFpVWdwUHb^~-}sunm4}h_GT`+vM*y7bajd^VG)apM`BVtyyzBo1M9n zZzWvVR5WdclM|>RtucW zR7fQ`smU3t3Q!hN9Fd6fqsWE`i$IA#>|3RrQcf#^taK{J72&voimSx0MB=e>Umt#w zazzNfN6X6dh)JQ}hr^0Op@fbg7)lf#L5W<#NcLNP+QDr@6l{Z=N)Z+!UJr~NYX?t6;PJO#5ZGc`&u|AKs0%OyvyXgMwj4}Ay9>vUX*K< zSm!wC_>OIJr%nwbMvTiGtN>G_V{jN(2_Q<0Qh#=^2_56Z?=Wazwwb0lN+5H^ymkY3 zy|9(rBHUBFTYF4+f%`7^WA4X-mlzyggP`p&#I^w|!h}P;_+Kc9IBo%lofKd5TwX9= zsF3Gm3friE=ZdM{?b>jAC}rx;zkktZX8!tyIkLJc$22VBEwIwfYa zu5?O(==L}9_&=nS%*GptG${&BVhEr`E}2=U6@2K4iBXV_4n!Z0Qqi<1gS0##kIE0r z4*3`;5mEBnV;STG#g9?Q3KCG1Qao+bq3Lco>whA|X{asM0R){Wl7Pc@a0Zo6flUlT z6(8+U)BOwc>#mI~=qyinTKwp$`+F{lA695 zLClyQmBBiBRwm``)v8$?s18;4SLv!#U}ctMdy2(@5-4rg=jgjt`GCF4u!SX0S%yoS zGf3G?gG+Gd^Ep1p<(xWEXz(f`^eq`z!J`vG7B*;#yEW?`WR!+S0Q?CcSkKs?-Znmk zyv5Hfu#du}5X)h!#8%1gDJ#2TZJ%3z^S%}NRQWUD7s-z0K5zZ>&knBNd1KsMO)t-7 zIzKzT@$hZ^SAY8iS-h-Yh~#pWO8TPd=?{K>NH>4<9Qoy2JF)=pih=0v5XSDQql5yb zvNNt4lL}~d>>BXWJ@xyX3L5spMc(O3+XRi}s;H0&Wh<@GqZlqVB|@ZB7r zeb8);uuR&Cf-oe@mLpIlBO#h$8X_@x6bm_7#^Ir3&;f^>G|gtb9s+uO7vyadN6JeL zB@&4f$3TUMfV)h8+GE0N>pj2|%PKc!cHeZCTxs#xis|WSKdPA0upoDLqvR1PKZ0P1!RDy8cxgF61Xg$1x-gkIqhhD zWuYsV3kxZKZPWB1x#p&2ajD|*VJ^i(YjG5=M;$z3{?NbF+b1rSmdW>mzs+NcZN>Iw z;5x9OvNgRmbBDgC@wxO7@@V>a=2+!e^;rGGUSCiQO0g;>09QfKWsq>lI#bm_O_I}m zO%l?4T_ki+7a5*SF)=BgialHa1-&6v=%{z5I%wcX(L@wP#YifePeW|mUTaIWS7m{4 z(74UV>Y~^n)q;{#1NwtJ(0kH+FbyAE)6*>OI-KCxz`d=BN*waIL@v4=AtBQ16`ncWMG z&$oP$-Pc0(AeVII1ucg=z~|Vf%P({vDZf@ek$Jm(qUHBxR|~s{T^3jtS=w@GWP|fD zVqeQQz+rIM>1k%cj-JOI|62Y^%|Y}G^jsZY-!l@~6FLCC(Rm!4>~TB813jPZqWYX< z$R8rR&|hhfbbQbSnwp(1C#y9!XpK3ovDn@G&F1emQ;z0&%`2L>H-Dk|iRN!Lf4}*E zHUFmhR5Lf!44S(jVSK~f>vEB+g3gTdTIa1!2kGo`E_ZHq-tT$kxhGvL0u=KW>GVQs2p7v-5h-)dLVi{%Dxl*Q}iFudqz!O zG@>MQ0i4h%H|mY`Mn~hq;sPNj=g8c91mTLJKd-y$u2I){3l5mO83y*{EnxfgW zqlYwm*7uM-&xSw6;H-aYI`%<&TDBt)aGPd2`>+#l!PUduJXqGh!~fY{3POfsQ2?wzgH2 z1kwa;cFK`}_BBEjz=fvZU+g3zVuS?Im`{}>;{M{n;zW@x@;o8L@Pb{=s!?{ePlB1avg?ooL(w};-VGB|j#2KekcMr&yy zN;Iq>log$9vMi^P1qW_>aQ*Y^x4yA+`E4EhvaDNc2D=#d@~-BkwbsIX2w|qDw+>I< z_xRs;R$H%ieB;7EGC}61zdo~mROwpU`NGM!2Rf0r?4O;Y)#lp={e_jMnF)}>3?1)p_ z<$>rBZPhnpku8~gkcE#TtRlz~%Jh-Z5}rUF&X53B0`efFHgVn3GSrPhCDU;Z7tYs! zKB<#K`hK0%0*%EI%xY#?7CN?zFHd>IIt1g&5Pi=dX2u$JgU-l4!ycBphv zpU{~he$;Jm?mS2+SE$tXoP;0I&GmlDAPmWt`>qnOm1^UOcw(;*BqDT(Ggr<*ClU zciE;~G^ZQoNW-Q5^zu*MxG9)PJ2ET2w7O^iUEkmP!B(Re#5aXg$C0OpHL^fCqf@l|LJv) zhO9!))zk)RbM|&>G`o|!hkwueZpc+~&W3^0<sJHTbcnAz{%pt7!7{G$MMZ2d9Ae`mhy5^hv3l z6+}$>Wr>If!xE5u2?<0(u(5-PD4?sMMIHtjOB*eZhZfKe*N-*klr=;RPS3j5F1oV& zs`l*i@hy{^R!=|w&`;i1av{aYbb-GdyYZq0mxTA-x&O}N?}5-Co_g{Q+26cop8}_1 zK0#3P=}k~WHS=;)2TVX#Nr53)nGsn>Nh1I#`b4kCDl<@L6LO-S zpbkKA(v-g|1j_u*MmPleW4DgVUm=Ci-_a=@qIiHa^wn6xh)Tt*3H$8BMg3RrltK9| zf+*UPUh+%|KzM5sTFAG&UVqVJ7u}-X)Qe3<+B4}PA;j=hJv%%Pd-i)66x3ah4<|hz zdRR{^tygujqW?H^3|s>k6x^HCzxJ6{mXhw z@V@)N&tBYi`?7h)JV;|9Nh**JP>ZH-zapBWR23wu%gOt%TBJWbad~@rerv{+^a&xi zP;EJI`&DS)(u$eI)UTl?Rf&1Ta_}?rlAOp1^~T)2uKUVgEWYG8>N-?BT=`J_%R;xi z+10{yFkR_>+6mRR=qk$Xa-aO5^X}3<*E8j37I0>tIzQtrMn!_^WYu6#(W`rU48NaT zg^_$5ihPgh@8~h}1*6B5WY~nFMzsg@;ClY3(KAjt%uq0h6g8M?+w1Y9bdoalnn8_I zNz()6xVBek7v)nzA67Vjy${#G!q1%U1ATqb&hgnvY=FI;ptC7D!jfP_W`T};9L1Q$ z#`z|^2{uAqpAUrj@_cfBUq(b1MSM{Nf+&lmI8M=KFmF`hqeue?hHQ|AnaOL7=L3ZAF-k%78q`BYl>JI15|YbZFig1SjFM2HKqv*9A$ZK`z%j>6?Bc&0@2OK zmoX#dd2K!4`svEyjjQf__H&bK7hQ4J4Y%BL$H{|(%Q^>EwssGc)3zXfKM0XX{3RyAlUiJA*t#(PZvNUFnEV`>&+kgH2ulL+K{@CW5pBU?{ ze)4CZ+|qo}vIQ}p1g$Z#m>?YO(DOHfca9Rw?1zWA4xIMZFK997#Uwd^vfeCBGhrsr zI0P?|B^qU~m=zlt{{j9uPbL5nP-T9c{I%)J7F0Q_WL>K4Rg|PEXU552nO7?fs@$k3 zAOUYBq8l7+Hk09buiGiRfU6V?n3>*sz+AM%2$=I)0_Fnv)6oe}sx{aY8epT9VUty1 z1Eo7)iaz7b01yHo9e6W9iUANnl*~U-0dnPFh14rUXd-%A&=(nlkHS5C8t&l(aSxw_ z`^F0HO&%&og|NU}siA-`!4LLf0qBK^!eoI$m&V#U4ctTB!9Dy?c&ICtF$%GAzXeE; zU_lARc`DK7P|&bJf`_czng6=asSJWJ1p+{PnL-8(SXqn=(qOKRD_~qfPn}0w6!2Lf z?1g90k=1QlnYY@i2 zvSP=gOScyr=FQ}rVt&7tXjtAT1iEJOT`^yw2cq`hUAW+yd-u{SBKDP_aK@wiIIJrp`Js!a;dr5C8 z8ZqJH@!qV?7Q9s}tr)luL~w8F<*IQo0(M6Lri77grZgatvb0{>FCCN|x>T2T!-EOw zq{O89C!pbh3-|FLHa^y}K~8S_q53Jibn8=FF3z84IH&pEwU?RZ+O=;~7R<0cQm`_g zz7bzA&C6!GrW04UIaHO*My@8a@Gu9pb0O5udvN^xPv!zL9qKqrexE-<{(=0vmrl9j zTt1o2W|g+&D(^MkTfDdXc6h&#c*MI$*dsm{KjeK;I3d0(21$VuUGccT!B5*Mmkf|f z#bB|j11Tjqa?Y|`AvmaxOfZto$!b`2Be9%*_0?DF)34S~*~R)D9r|>4!n}o0iHfL- zm8wER)|^TuC5Z=sgstr6IoTafM&xi&l~rg7Nchx{7?eY@Dl3XoQss)GQ1r_r#1Iqk zuEi1`gg1(Ua78K^gwGPZQYtA5JPDjtnWzwM7X!&Tdh1r|G6^C_GpedeIOKk(`azW( zt%53qETM&N@GI9i7#b_$9ij&g@gw3f0NFW^%y4qRD(k&nl4Ml!2c@x8!o*&LN~=RA zKUq9kbQEKH^?QIKGDJU^vNO$^l?>>HerIZW>h$Ts>EDZ1h;n!k2QOnQ#M7sv(^E(g zFl|ExJ}4gTK=Ejt#~dVlsDS>QIOMsn((xA_}gA6?i8@yNNl#$RVxdEUiS{SlKW*TRTy2Do{NSa$q+H2u|ckZkz1i z??33LbbsBy+dtty>8Jf@e9bUWf4E#Rd{{Y=aXn8v=gR*q`!|e}`{&Qt*jW`^{>g1; z6p#ARRY>vRw_i>W%&ic?EhhU-c?k*pe%W+OZB7BbAbPPJfJS>U16tc+svI0A-+nP$ zR^SW(z)xi!NAht%D) z!69vMyB#dCnCb3nC_048&GRS%c`?-*>QYqR-I>C7u@qSs;Z{JO*864Ee_= zV#i}|#watkJ4VL-kja)RW%#Qy{#E&S`OPwAmUoxQ@*fDHO>QIGO7nX$cuZxD^}Q#1 z$^E?tdnbA+9X6A_RBvoa-#B^ESOz&Xt^aIcB?e&K({ue`x1|ksEFVSl>riJ-iDzsE zE^4)^TW!CFiIu9?5-HA0Gu3=DU!yA$VAvEFmw?BsGffgmcqEHn&85-so{^;&Z!!IH z+UZI=r2;LxG6f=?ak2oX=Ljo=rLONg*+()S)nju@okjN_yiv<#F1 z4Y6X5p?*oeMg1a9g_stIBB{5)I|7{SQ#{1T44jxU=Zm>5CO~}!j?gVErSSKia`)WfKrgl2g{^h z9)fBE(PY_1lemWuDch*BY@^7sjV{YJy2NuLKvY>y+HR*%$e)1#hCq40m3g4&C-Red zDsRKeybUY!7MxU#e5~;-oWy8SJO@r{C|__^wy-+dTlV1%!w^n(pOd#f4^yTsOqrg; zlmfz(={Za(;CKMSlmfz(!ark5$bd#rq+@Ud%$IJ&kTMs$8tlKNJF{(uyS|-0PYmH?E}NaAjzBr| z5*cu@8U0}#6gXpyE`@j$Hc?vYV@;cC#toYrJHw`XX7R%0C z2Qtr(rb1{13p2|ca3Cat{aF$ScN=S8B^ z`NpUe%W3&kzL0B-77HLR!KM^17eGTYcP0X@*?F2S)vPZu6x57HN2SsHXrtq^!O_@I z>R*(h!l-t4@IhryaBuW+>GAA7_37Yq+2_^6!SAX5g&}~W(Wn+KH&+LDMnf~9*0yuf zI)!{8Jhy)q>N7YHsV<)WBSuZ&zFPCr)z>|D>1E%#Va0-`w$)d)Dn>`%yta4U%-8#j zXf8))BI~JNBObG@FRkD8e|A0e$8Fj8*SB_D{HOoBrt4880sT+{mO%+fL4I?+8T9)X zJB0`ll_O%*ArUFRouH>4e`PE;AF#O~4jP-$D`{>qoZ$>lL0jlV+$|qFA*> zv3hQrA%_E0XOjzU&2xYQmn8Y-g4I5pscj{X&TCn`{NRQQx4nJG!1nT2vtoSZ^i)rK zNYSIY<)!%@g&y^?tIW9i)$QMYWcJ?Hwwpd#ba^BPa=Bz>3HUy^^U00*z=G>$-hKO$ zt|o-6FCYl&X1MA_P%zzGp6lR(9?>$S&<%5_{yiZZnvL{fzvGbHf=^SDby*N`Zx(`K zL)5???qQAOVqTviqzH*9$|+G2iwp>bBM~C|lq_L_5_wHdVS=KlauJDDN^v&{rqm7n zT(Ye$T!)|qQDmf)TNotV$G|$m0oEOPn4M%#vJ|vJ$4rhW3K2O%MoLQ760I!800yq| z8%w0EYQLaAY)oXq(A;Y?epTwXVwV;}fo20T$y2AqDJy=^jrNHmlfYt=fCJYWu-ObQ z{kNU$T;k8(8WM_F$s%h9fSrAPeel8F_65C_mVValO~s3$G+;e?`wTlzbGq|Y>Y1NE zvTjj*!Lo%8CY-HbdF$Kl9bzIzK`7XF2GEU_#yVrOF=`wz7{l*OqlciDTxC_dn($`pC>t*}%;lw^&6qP04Y6kA=#hzl z7GmnuAncGgc*&WD;0arj2)xB<1~YYMcSwOvI0sMRceC*n0tO$CAnP)BYbI^Q_)eNG z_>9aI@P717#^57x51)d2_#o6DI`b@T&6I}UZW04#LljPO(gzzc0UNZF#Po*km!J^! zQ|J##k|fln@!9_v^8~FPjzB%yc!CGwaYqRn0&PDWOG|JdEx}QAaBc|N?mDQ=)%N1o zDG9pi_SJRMCBVjd^9p*=fM$(Ce>qo%9}TMdCQAqxr;$X)a7Y4OOq0ZC=qqMnQ7mU($!Ugwx$t#Ht&;@8J|YCF;{tgQ)r!=Qg_mE-V;Edxz0$ zgy!mVuwg+7GW7C{@!$Sd$cw$5(uIfDZ1cIde(pQ-9n&+n_*YL@zP3}-{#vrVmP=Tx-R7qVOQb{!^hd`(#AVV_-AI#g_j<>lTZ#@j# zp#Y?KAM!xwC-_O8;$uqxnPLX)C2;QG+k6eDLM zUyPNLvQVDA>Ug_&p@n**VcyKn1@~OEa$Bj;1GWc>2{qNwju_drisFLX2bNxW*HhpY zM7^f(yrxqM#8-mTc03>edD#1K^^;(i8TXR}3H*c~II7Z`$eQSYbi{K~`cPsexh6z0)jqkRRAqBVKF3!$7k<1ZxD!NI+08+7Q~<+h=3rj z5O{dRCwV|P7%>ekgovyqDheURL_|o40uSgUbc`&^FiC<-{8iji6-;43poBsGJ%HZx zgk4Y?><1(grZ)iv2GA!P>t1Q#Pnh_BjC~258^x7=Rd?%Ft6TTo-BL@fTP>-jnbDj* z_IPYOC&moMwgzJxUmW(>I0l2mVThMwmzzM?1j1$s%Q^`d1CD`gjtPXU$02M8WPil4 zzZ@K!AtZkSBv|sls-+nlFuUvV^rd5}>U;0i_o`mK5))-krI|9T%?P}~Q7i`^MfD)U zh)a->VL-^l~ zA6Er$4*p5D`?6oTqLQn^QnsU`@skko@?J4uipT99F214hbtqrk#wUn)T;FzGJ&Lv5 ze&V;f0|@6Van3;pu){1~_VrDNs|-j$Sv(dm3s{n+46;l1$lg9zpQq0|<{I;ic~|IG zI3~D@bsNm-HE9uR8i{3`DIy=Rw`SJXkya__W;jlZMz|2~BGjf`EAC-WKOp;GDXM!jrZ}K_? zR5GWB_ew&Xm()WizVNu6B!ojJcBq?qkQFl7>>w|=cwTS<6VUSnnB+Nh%Tc6>gydv1 zTN1J}fEctp(6xi5NP;qDIi~{xz1fNdj2% zSmv|MNyzq&=47J~X-+o!{DE>_#eprTPQ-WeFz@vS5<3O{5X?QPuCZ^k6ZWTJ4hXIXp%S|DLgvBz^6+C&D9iP7i-cj65kQ-GJfw$2|Rf>8AsT~#mog>#}y zisYR1HifqpWUc?KD3iZE0X{DOwIktI;H!n0aKm+GE+@m+JGk(5mj$GD=+3ug8h;BB z->xqs9=cB!Y{(yR*w1d<0WbCqrSL3>-|HDdx8q9!i5P_>y>eyUk0o73{>ke|(mRQ1 zbtnxQo2VriyV~jR`%2s4HX@&ca+u?3Ic($UPP~;{Cu5+I zVf2Rsyg!zU^Rc$hcE0Vf9%|OnhkOv9$VYjxBA59}p0goSs2xTB{qla9SS{ZyKO>WJ z_{+@x&SyHw)txtYe#nsLF#DMMJIU}M(}_%IXRbAZh0Z@wzl4bNZ*uUg+|{}Lx&O#f zIq0C1NQHFJ4dZY-ybkJapnt@F$dk+Yz5E^g!#wp*^lS77GmYIX)Ytc|E8KFH4q6RLJ4Al^yZppSF(9#IPHAE+8Xmb7ti4#L#{1BKwqKV{!i-= zPPg>n)5{QQt+*4_7515JWd(?EgQKl`ESDg{C?rP{J+z0(`JZ=@$hQLxyeHb~cKMYIzMD-(+i-M<~CZ(o4a3_1)f!y4qjYr7=t4(sA^V(|v8 ze`ySovqQO?loJC9GVwwr19UGUPVX-iPg03d zEpub-w}`qorFi>1l^9`hcrX^XW-O8y=L9w8GfhfiYZ++J3RLxge%`{)VRfNov4qoiW8~e)-d==| zcMxgh76Z~lzD<5iQuLt{Z>c6RUM7V=7-tfA>v2xN=l9ehf3Vz1EG0IPSCKodHxf6K zcheu^Xw)Hc&^kb`A}6d*lRqU51dBet)B0zEkd3lQunUd}>nqkbtsh#A7J{+{373^> z>0#1JxSVDpK8gYT}ZMl#wSfC^D0R0w4@vvEi{&O zRe_4^bssnZh^;tomWUsqcf$FBO`HYU={f|5<|S?_Gg8-_jrZTjZsJ^0^2`)w3&?Yv zeYX!M6y)iML(s^Z#e8ELm`R+L885-SY0n#fwB^I_b*Yxk_Xd1kcdZyc~W=X0v= zna1D6zQDc!wAmzVmEm^H>uF6;k?4aaMw>xZO^EXnK6F4|^X_9f%?)z&Gv`Jk6^PeT z8bo`<4Y4b)kPDB$L=bnMzq}k0NoRvlzyC-kMjIc zut2r{jerId1%C*RSkFLC%Meo6LDc~jMrD2F<`lc%xBDwC_Zq3_EKb?}{w%a>dCzOk z%G@%CQmWn zL}lp&KUWoVCYi}($s3c8B%ewCdy?7``)Ta07-@{9Vx6%wVicnXZeGv2DLf}4MguY4 zt&M9E%?J#28TOoA$a7`_a``(cn0luyMIjwJ6z0N+vf`;6bFL(15P?q9sufz_WbJPR70MImO}w)2nO zzV?oV!wdTSV$vSyQzIEWO+HwUo!3XjVuplglDNFSZ~jhD4Nqotyt(&QIMK5016%uXk|`CFT^92QzD}^Kp0nV!?QGCyXYcVdw#dH zrt?)Mm2HGF8I!(Ihh)%ebB3#{(;TVRZ#X}I!~YCP_xZ%GjSoJ$onb%Tv%J6~RzO99 zt~1fYr-DIm(qp$M_5X8(QAh-={?rH~yu~fij38>^~bs^w|)i1M?w77rgnp6TI&m2B@Vg1T z50CFzK$0(^@4FEF{_-&$l-c*2y9wYuF7C$L7ohjD&CgK3|KC4D{r+#i&}C14206W- z^O?V#{5zm=7!IENjPd{Q86)`cu(0hv*=}-0s9bQdtS>aW^b6a!uiY@X;ETK4N|$VLc$Q5N`p(`7^b?(2$pu#K z-m-G#mfhrrsM(gz=cVWdARn8l$}=y{U{WT_GW+5TJA*m~bTxx7PyN;22j%9OJ=%Q# zr{4UT_oEhYiP1_~DJ5EGXY1^3o#$RReCqzw=TE=>>HGMnzJKoTk-sRE%Y{4f;X|dU z6l3_R(OyFTzNHk43b70y>jC_L*gOB;`nL<^Qb~I={0V-ou^Jyg#BaV6Uy*mCLjm12 zUQv|d>*xl48C^`^FS`OA;Ik#UQeT3u?kW_@gwT3Z!+qUXBX4z56>AG+1h^1J-syV))VmDmmQBpZo8m7 zu#EnxTsdpa6}=Zzri6t=rTc$ir&hWI_`(wj2};fwZW6Okujj%}XV?euZP9M`ap7># z^^pXBC&6Dz@OcT|Ej=VXDUrLReG(z5&T;1&C+T$BfQ*E@) zLd6Va17V;bFyUI7bd=R%Bu#n?g5&@NNg)4vx?Y;bs))3+J~NF-Jv)t;c|g%ERuIWl z?21@1K*!R9jaT6{tCluihWvf^O~L0Hoqzo+YTZAe)@8{-WQ~@oLE>M@r%8h3c!4RP zuAjkykjz1(9>`oGI@~L@g(p5z8%^vs2OWBuhoyumY|G9fjwF)$+Z$Y zQ!8l_VQ6K+ZqlUIyj81bc0zVR<2nEBTW_6Odv#yO_(*b+68T~SY=`TYY|lu@K%pNMP+%2oCPUxo=PVTqK>2}M&w08#QTc)F;%sC zGX{eP$Lb4S)jRIhdA%O{VKN3d%5@+~0lY1Y0TF>d1u1l2{U~b7nxfz|=5lQowdahY zDOg-{6C#yfvQo|yV$?<$61_U5#1UGKWH)JO>#+(0$B*6m>{OnwEJ=HcO2I9d0#f_% z`u@?&&rFxMerNaF?MmZY#VL--S5H?yls@D9Hua*Zy%Q8TaRP)J zTgWewe}o3$IdQzP511YUwnLN)^i{M>V2$(0@1k0pfeoCY+G*Y-n+TJ^Opzyd>v7qv ztU)lS2GU>wHWSoQ1~bsUqHlWU*CiyZxSrGX+RU`l5}3KYK`M|GVT3$u!-mFh>hBTX z{4&*;f_IR!$DjF^#(D7TH<4=_KdS!~l~QhOBfm<%ij%9Ic&BkQE+uG{^2CV~Z=$09 zNVf^~xULgx0IpSQ_Z~uz{dRO8I`JFwdh`xG@O+H#Tf3;B*S*^7b9<2Jfls?{tpq`@ zBN;^PfcN@}BPKoy)`1(;rK{M9i7|Fzr&?eQ5R9Z*v)MP!vcd&EJ2S?Q5o2lO`T#)? z2w_=I&)B2@*}Ws;n11rw%;2?^N+AOSUW1u8`H(P7H>Rhj`xI=DX8We6>(kR%Adrcw z9i2gqHhl!&qDDk~V`ln@qk2pe6InCGA{J#W2$$5nm*!1rZV_R*m%?J>?IjhCoTqNs zpouop?N*R`TE+>eTKm}82sbr$1r_Y9)c=-9xyZ)vNoP`OFtXyM_UsY6#?PJ1E?Uzs zS>r}G3d|tr--ff z+tU46Kcd*~?7}>;b?xfmsc|K2VSRp6Ak0wE9WM)|-i+vqF)kkwD)h%+`l{LN5Cqom zc3AA*U~zF4H20v;k0CTRAQttII&mqtb?a4IHgetETBFhCVb-QOpHJcj2X!0LwsXeE zZ5;Z^UnBASRq(2Gv5?Gf*)lYA)#Z7H+q+?H@hbi0*S4>|w!go-9VX*Gqt4As1}{bi zgYgM)lsR-{)Gg1WgXoc6K{l~|w5iN&9X-~zCt#;bEvVwB1M2foBj!+R>AVu_4EkPO|Y99!Ekg4Jy|o9uziXb`$WoRtasJr>4grLv38N#BWAt76pGA=DRvm0$;WP+h)h z-MSs!+)54el^W)gt2iAe?Z*PLFVU9dqSdpamllI^3j+_>0 zy*HO=_@xv^nsgv^Bie0|9(P9dNsYLO6sM zuJeeO1UVu&X=hw^J3~96(}~VTBS%;fyu_f@=CWFCHpXnWS{YuD!nb0o?XfYab5N~z zr`1dtf*#&&)C_HDTKnn4*0hE&g??G_$r$E+Y=#9t*oSi+L-Yu%vs^}M!=#2e0 z?|B!xE^>*q6ck1Mx#y7H*@EQc?dGh+@j#rG?!CKX(;X}8KZ}j}UO=4p>tPDsA zRSwkouFUGm4Lh{lDSx0S@?F&T4yu6^a5@o^S;oR!2#bpPUz=Wvq|;IaA^Q}b4X{aG z3#wxYnOCf;n8hQjJX=E*oI$tPFBS8orYg7s$a-qqd^9a7RyJ)omZB2YjJ*MA1@HMk;yo9|1Ux#w)9 z)y}DM*dq3S@$lsrJhpdue>5@A^Je{(I^!y>ie6KNrIlt=rj5fl<0uT6rf30NlNl*RJA8u zQW!DvRt@diD8j5Zh)}B`IYdIp9&7cYGYa-;#){Y=#KdFDM{HEB5G~*^t ztBc0CuR6R|9k^sPlP-y?i{VA#o~4AXyJPglZFjtS^T7D+FYI2hW=YxY4V&V`^$RW> zO7-p9fAKZ{TozLn+v`dy9#0qEl`>2B9@w<)$G0zccpSbcsw=Xl)XNCfD%hmvMNv@< z)j}+j4hhvlm8e#&T@I7gWeB#`KUqT(0EW2R5#>b}0`sYYNw4rF!#r2lj#y=(jL>{- zx(O%lQC@4wwYDin3&yrN$#vtVz~TTZ!}N4_v0ZI#U0qP8V^|3F zIW~iN4-6}2lemM z)bu``kIn2e?wN+Q8e#<$y2F&f$6{iKhg@W2yNY<*vy=TjUg`WPm7QywW-?BEYaxV}h|F~#@MQG2$XWu4Y z5zPTPR^N=3u?5HvkKaS~)OU=iqBt-@ToEq`HnDyXkMzEG;!SEjs%;EepQ_Dh9pnwN zfv_PAQ~-+rvIr#tfRGgPFoU8mH}Qtn;MO#Y91~1gt2n13 z#_Q;j`VnnJpjN9LsnxWxVmJ?%zPSg(Nn4c2lSn_wyKT|#Jlr&}Fka8tV!egNor@NT z-gty(;7#xzcpI<8U81;f$?@-z-ugkY5_6(@Ehg@X`ogRpikR;#Iq^GcKVt1pkO2K^ z45+ud9&kPCdeKGo<29`X7vXZH7!GrIb=(ZiehIVk$3;nJ(ZUlT9`$OL8&9L0;^*QX zK{w~;X!NI-p!Sd4_Veqm{@Ly0%kG-FV*AW}s~Z22Sag21FgYaqdoCF2T{{qiZ*O|$ z@6Q^(;o0p||90cZ;PpS)d+E2fcjPxca^;y1Uc0P!$AhTUm|4#tG&qm~W2l2u86*fI zo#FM(qNZtw5zs6x&?L=E;jl3!*?A{6iaH~&pYPK(>)%q9ro7Fbbok~598a=1u`*BL zkeQEkr0cIFD!i?Kgh-6uwryc?)BTt1R90?w6~?;~4ya+0`fKoNs|8O=t|r;+5tYbfW2so*t&I ztq*Kq+s;^7PRY5;y3YFh?JKx*Z&_bCiCS`SO-FumxDe=FzqIH4MREA{%74CYwIjQ< z!dbf*M|$|8e$R?8eyuk3y&FarUH|>Pm;UQidv@c$TzTgGSC4gXeV~aUb%Ul+GT5b7 zV__JMiqT0f?Bckv7~=$i;{qz;u#vc+hk7Q)$B0;(b|PRQ9hbt$Aj!yAa^udO6A-RZ z3@mo?OHFK**|`zqBeiKvYVephcI=T$h$BO4pT=6#ww62P)Kc?f#GB)42yx^iA;gnq zfyNeuNNjyzb7|+6-;a$p_B7tO2Gtsgq_eQcIt0)bw>sfhev~lQS zQiS`L#=1w6wF{61MY>0>K)N>oZdWHlz8LBunV71A?rq(K(5-gg+WkQHi`}~JZZKFb zBA-zOf&%d@0V36ERduIi2HF@7kN$_;`j96?gmhIYRVw9E7Pq9c*~~g^cvWL~b3Csp z7`5i?zDDL}G11d*rmCokW|}iZ&Xc6B(j>JwP?n>-co4Fw<*hvUSg5dC=$9(1uNv;1 z94tBgp+v&byKH0E*=LuRZ`ryz8HzY`rM0(A_N^W$y8WCjp0M|?+P?6-vx?&zF5EC) zB%WC?bynUJ@MHsxN2(i!vcr9uu1qYYNP$XO@h{x5yx{V=1OZ;Yc>8#EsJqZ#h$jn! zYwXxxI?^!k z7_crm53)4R%(11{a1VL}$;~lsvWab;T3q;(++G{m7wr-9V1f#jN6L#WLTA4ILZU;o zFE1=E1*ru2W#ZfEGkc|aBH1o7NHBOLJiku$k4Z3vS(F1=;2o&^3FI+H-EN=6Cv<}> zU*J`q6!b15-(*W0xX#571ve{2IskwcgthYu0 zT4GM^kSbB;rRO(3a7ndyoDi4v?A&wpZkyPhgHz-|Hr|_Sod3e}@~V9+;QKulQS4pR zuw8b=-M7GhO7|ojqE_zTPzow{2<%onEEc=dIjJ+abWXRWwToiCIYwve9(exLt*nZeR5<6`jO#kj_7E^IU0E@Y2!J_pzSlV+HO|( z39f4^eR`{s$VqWJ=knQ5O1YM4JR>*m^!64BQ&rU)XAaxw-Y&S3Jh*nl@ej$Z)s!ek z{j|r`@WF$E!U_>W)b^hGo!+eZ);FpPqtRl~n@XgJR5Gpi8v_PIpj6TgrjzM_&&%@x zmi3y<=75XAYdjdnlJ*9CDWjh<6?nT1MEN2k;A$F7&1$wrCN-*a4Cx!v#j0OMTJ6I& z%8vK|eu|$Va)3DjZVU}qL_eWO&S#6Ct1dF+pQ$~1pf@|Ec+B2-H1T%h!$jjAwj{up zOG&Hk;EkO&KPQFY@xFq|`p838b6*iIL^@;_+f&E?KYQN-A60SoJ?HEtn{0M-A>>9b z2NGfkApycA7eqofF_DnOBtTF^Hpzx8B-yyx0P*z`YSoHzs~3y`ks^d}DaD8}QrlV; zURo~or>%-qTQ9MSeyEgMYHiNYMMOr9jLDpmk`SY$WyDV!#UC94BO`*sB%Rq9Zy0{z$A-Q%OXp9x+9r772il2n z(@p#dBA8e7A>mEOd;>QH`G$gmg0xXS7g-s~qcb|(_p?b!{HxF2j}|9RohoSovg&w% zBBuHtCyYivovuB>mhz9!r(P8jcHg?;!*X)_+m^QW_MgXH+{jSb9F{mD*kXO4C1&`f zNz#(6ilkp{oRW<_Xm}VRaq5Mb(Zga!CM0b6v$SzkN(AoFCD|{?YK{qifAi?6!;+%# zFp-zhe~zzK`gE3mCbF7mv@s<$bzw|gSWK!E6E`w0#%L^*q*TdlNwr7?W=ojaVlsz` z&q%^qOfdhUx`a3-#u9G!myGd#qb~e>gq(_W)%<$X3BGk6|G~hgu{?!?-#q4ByCG5* zE#3<}G3eh@ChNq4);@L^ri%*kA9uA>l~SGctR-Pu`ahnTaP`Q*PvWl`FMXjT4KtW5 z-MY~+qeHkabd~e^|Iq)du~XvAxc!oXM@>pRCvBaYgWH9`Ad@*dwEs0GPK|!}BZQUB z7;Q58`I+%RE$aiq0%R88AFwclg@v$?5dUGp)}SE%Cpbd5#eOWwpIeNFtYZ>=^u_bX znD-_2&>cm&3-ZyJsRY}7OQ;kex$D~+8D>Sp-~Iot3(=4Z*2 zD&%qKv7yIKJz1isK;9;LvPI7|pm7+!kDeS~&o;Tn(1M<6qURRqkt4rEoGaDa_`j>7 zrxzu3$vp`4CW9^XhF%W$TqXt zMt{g=Vt$CZ`rfOn!jt$98YX8Y1jnRL8)%X{2c_<5|yQzF4 zKcLIeZP(xFD=+F_G{mC(7ca)^{R&MXrjxw*{~_Q_b2*h)0*_mswH^y<3~CI%C1gQJ zU+A7;EyG&Ewp?7o6Cwg4o{4-m>b_|Eh@O}aWABQ+EAEB(naYV#p`-qsa4zwa(Z9UP ze${Kqua5ck*lSY1828uowEuC%b8#6zVf^_kEfZ>d<=&w(REEk>xq`C&-%@@)REElb zV0nGQ*@=NeWvC35p)yp4%1{|9LuIH8m7y|JuB2o{43+=b5H|P9r z+Wcu-rfs>pK@eTM41js8|o~o7f??R@C+KwU?GGjf_^e6 zdr@amy#V!8(40aY44SE+tVbP7bt2UhY1Bre1ymPOT}=JugwG+$xrA3yeFODyJ+p{^ z7Wi{K1h!;>zYTRF;S*K<#*mGA3aKtu51=k5d=Aa3B76brA`}MbVYje3#CZ-lA3)7* zoC6JcPa)N_Ksg6|I9^HhJnFfD>KmzEK=n;j_ps4yKKQH$1+N!S-2*B0sOLgT5BZ$2 z3f*bO-<9S+S`bZ<)lqcg=t@VwWnhw@7r2g<%Nqo)XUXz5fg4z){EonlELHwO;C^hG zkB^Cs=Wm%1?$7SlB?;VONz(20{@#sb34U4N5(^6XgTQ5`56uv`j*SV87Py{;(f30c z=@1y2CvYPR4=okAAItIaF|o+tlLGf=d7%!0TZ|8ccJUuD(d!_~8g-+<^(-wahj0Ub z>o{t)!1XL8%1O8p{l=+HgFQ4bLA$Nd&{QsD4a)H8&e&>t8r30%)oquwUmU-)0c zHUDe4=6?;>{IB7f|216mzlLl6*Kp1M8m{?Y!!`eFxaNP32XNb?#|a#^M_ULtqdzqI zMuF?u#AwYYfn2xfwE~Ae(T#*#`7bU+|3ct;Ha_|>!h?y=T7h#u8vQWt!{|>04j)GU zhVU@1&xqjy=lcAG@ZtO${Uh=Ou4j`*BoH1>^veYf`VsR8k0SaV0_XI15k7*)bi_%4 zBc>y?7{yXdPYRsJRO{z2`vt`41kUN-B|MSGG-jN@5z`pWZzj3pK)U`xuK`F#lHF_Ov zIeJQodlTe(0k$kX3#2- zYlj@pqlPUNwAbOP9=&|D6*{)~Y~p@!k{u0St4|&ILSZv;U5ydmYbQ@!Xrso*B`j4) zN-IWd$XK2*6ZtlW<~xYO!5Sfxd%BitMQG%u zRj9uOJ=}lIz6cK3!N)z&!ikwJ@Ioc9Mw+9r5@Aa@XdB6sUc2n1CC`ak(t%sCloBYSQ@=Tpe^d1q3V)9}w#g1p) z1l$>9AhYLF<|w3P8)b?XS&uJU>xiR=;=-?+$@WH!dQh~ysHVBz%*w}IK{3|wKpuEU zn#qr~kWxb&o#egcB&&wj)TQKV*G^h%4YaB>soXZ6V|=_>tSW`PQY&OR1&12JOS7J@ zM&&D(yU3eu6mutHJUIWqPOqk~@V;^{4PIT|IJ+r#JfwMzFM}^_y(ayudgToA0k=f6 z#Y6JEYr{<|vW>jQfA6u0b|L%MTB>>4et}oD-NYqo%_-E=#`%x`9YdPfF}IndY5R<3yH}fUb4p#|si4GM#G}~DLy7g} z=Kl%xn^?C6(-U zi<3y(`S}iErx<9l_GV=h&2JWavL?X=uG-1d0Hvh zTuVKzbY3)(u7l4{C++Mll%GP!ua7UC2N#_Ai1?U6KH^c}zQ)9PE}-WaCR?(HHeb-ruIpbX)=kQSj9a7*=_ z7Mj-8q>Dz`;-kE9Kha{CE+XDSE2Y7wgLiFTm`hjg)d2}!D+iw&7v}VUCzg{R8^2>5 zy?Z;qUu+Vdx$r!7G3_35z%NTcQ8VZy@O;CbtnK5qWP$hm%Kpl3ZUHZ&;Z&c*ef7Ny+L;&3l>)TSvGOQECM z?O3jqHanUs`J7^Vo2%8MG`JQ!Ym^#SbDNvbQ8@eY8A=jwrlu<8_J-zqrO@6~aKC1sq-wiyB$hv zQ?0|Tc(@%!l}fR*#?jQ`$WdAx4#m+}?WnDF)G7^HuTtx1sc}1-xq&33*5R=`8(PvT zosEtbr36ySU5)l8F3YZX-1b^Wqusq!an*gjpS+#f7xS3uYN%C`XFF@$F0SjCxej*= zmpdgbb28C_lqkz8#&O!&l|KIDSex6v+}X5PDXpu6_R2V=!eei0aI`@Uw-bI#RpvTt zJTRiz?yhw-d6WrR858HbT9rn7o6-tnJ>0EzE{xb)lxBy!(dqHP7u9X#to%8}x#R5Bw$^wQXOptL-dR&WXf9f3Q%yrFccaIp)H++55h}&rREt?o5Y&JQ;?oqxE8Nx8 z(556i$7uc^%&W;ueMyzHaB-X6juwv_*1=zc#ACXTR}N{A?1U7Lqmf6$?S#}?*Yc(Y zmwm8MC~enNMVi1~7et|M^)w^hY8}hCb3s$@XlTC3B1?cJfXBVg)zILgScp7IRjTbR zP{`Hf%R6s|CD(gA&DrVcj;6Hb&ZW*~N3GMI=5jAi=U3^Vyjf)Em{i5y+}z+q&Okb6 zbLk~@sip9;peW`PuW(;3aY1ozzhjxB0n3DZdf}qu{<>hh12uu$sHFsf`B?3=~&27Ecp*i=7rer~GzyaFy&WEv_1;ou@&q ztEROPj<;*;)7b#uBy)}z*sD~CmH)~Z(x}z}hE6RKm!wmcJ3aNhdr(%Timc+=dxsmG zNJmXJ=jGP+K1gWg5$6`BDvhpMXB}@HPA}EprUo!m%0gwLu#3)zmzYD`Kdn-VVE}9TzN7`yf-@T!9wsTOKEZgjK4o z=x=g?w(1J=m5S1W%6Ylv`ASiRQdV9%x5$=nQ?AOb!1YzB%Dke=!qPdF3Mk5RODg9p zr3FfE$$Vv2QHd>8$*(Fa&#$OZO3Rg^*=5B=`RFSu$t#{?D=N8GnTdHNr8p~!upYs* zvQ*&$1*@X`3eIeHetBLYE^}uV6&F>`PgQiCbxd8+v+r?=7k4P`?(XjH?!{dW4#lmw zyB2r1;_mM59Nam){_acOySd3tCX-of@4seeXH6z+K417KS~>0+2<9n`ahD0Y=)1b` zR5}aS@d;VFJCbdf777Up=%a*0A->*XRwUKAvcs97U#cqUdiwH(E+@k8F7r&aO?Lj? zbIrd}WKC@98HjV(?hACTC-;37Fk;5(rWrDG{;axKofu{*HOlsvWRHe=+{52jAl$j! z1{hkX*uZg-)ixD35TsSqHFV8$xf`lT`2R`NGgR*0TsxwCT!>t(8J#Q3{CN3nZ;r?ZbnyzbNM*q6?m z*xkqYnHP5(K-0=Bqw(5n#>%PZ-z#j{krOk;juYivZOv81W{dfzr18oWQ~sIKC}$Z* zTx;eT?O1VRgp{auB(v)QS;rxtxH2BkoU=*d`R}iAgy_-PM*L9mMz|R{R0;~9%!37S z8GK7}E9g)zT|ipE1nbr0Lh!1;_SmI!r^~3)E8&Cv_@^Qh^d+|Qm%LjFXu|7P*@N^_ z{iYZ6l?Dp$1Fi^xeTaO9^byYsLHQPuq{xIhhY^&r$+NAen@@5D_tvj+<9kIq6W!37 zVcxtB;|DP@`vkV)=>;*dF~auz^}QPZ zbP>Ox9~(ggY=4m6h#eR8#b?B`t@-}_0KY+*A};z0$eMxpYJ6qt6XFU${-{0fg%ENC z;omS#Mp*tp@XeJ8VuB)q0qq3kfeYckSW&{}HbUJp1!|LKOru$3K>F4kQSKsCN2i-N z>s`sWXzJ~0TvRWA4LvMxR4YLOn+3x`M!G00IgfRZ3J+Zteh4qb!Er1!r(Uyp>5Qi# z`6w9#ZoH@LH}S!{LHSC-g3urxW*2gtUti6RznNI^Wl$GQ%On&A5d`VOpJ^2$qASLs zfEf@Ly2mD}#1yJ5XL= z27gH%R^9X>&cs9K{!|R#8O|C>ax7?nCA*h8Y{ga~h7auy3f~jEuHP#kVA#9S2&I7V zB7ZKZqYCt^+L%G~Xzk9V;jq7kX)&$es88O~i_g+-Y45+bF*TqMJ40|{>Pxi3p3zz@ zhTlY}!*w0E_uXUF4S~TLEQEG2@3#x>`_%sSWlI&BrA_^B^zQHH8Z(xZ;n9lEJbBCz z%K7i~45X3e-K*c)+%Mxp+%-D-7O(WbO5kO2E4hPXF|>Fu5q{exx6QNBMVrFW*O#`J zWOR!>0@U*g-uP=NyekH_$e~qpq#xP;&{a6(zbXC!miRy};a6-=5*L=(s{@PPek_Go z_-CBAmixz_-*=_5RWO$Ns2t1>mo$W*Z znSfv9g?64P<|*$7O&2^bKRaeoczov+f#cmX9%>KGpt@&$E9RYayj{VmAzwowdtp;he^G@ zpsV+sy38n8)%@7m+=AMYA2vc{q+GntV;aZhpAab$!6moKJjr=^Puzp}6#bX#l& zO1H9*9eo@Z(y|7)ls0|0j@PFu*{g|i3T?XVahroS;_Lyo8*3v9@lry$PihxkxOAdl(&Fbs!v>#vmrEhJt`;fcB8SRDcyt~!Pa*b8z_UW6i)@jXc zr>qCZRR>@t)u6l6aQpGr;ow@OvkYih2UxpC>U_QyYnD0P&Z8z>)Q7%1`a+(1#@ZLO;zWM;qMkyvQfHslQZl z0=FYn(>8uvY|TAXVtMjDE_i#xR7QSx4@sY}qA28qqsw*zb+3IONG2jLgM)YV0?uce zy+|UZ836%3A0Kx6T;v0eb(zAP(xc}E&bib`j{<9aaX_Ut5cTS_aEpFjaqb%XN@R`* z>&j8$J7Bw0C=}@Cvhfw(^-` zu7_m(SsWnQbkh8UtJ4%zi0LC(6u~LclqAk)&@@!oEzfBb!&p9lw8%5K9x>qj~ z`K8JfH3>Y}pQY0uEILoTJNG1?d0c4WG$4({sKqSAEUDuucU1UKd#%3c39TuWR_@%b zGhq(J&R?w9W;*=jv}Yq^AuRBJ$WU~mU4S!;>3vjs@_cW_?}Us2PXYIYB4Fdlve?8| zV*e7HCG^rWw%Tn>wVR-w5S(x=B}-k%jz5dwn9npfFg6Ik`!No8k+$qELL;IV65F5q z-Avk4+G8}tm;KPqTIUq)qGJ{S21K+adXm)sylL9Y-OKTHdjajis^p>6A^@9fqU$8d zC6lE#(d+s4g$E-e;>pCwti)5rx3ShxU-b`9R5Da3R4NOv)@?KLjNg>~%Ems*EB278FGvD3zC_gN3% zl{p8y37#!B({4RS9Am%qGm007?CWZxd-W|_Tq#IB7ZhG*KB{i2oA7Nxw6m9Gv$--9N!ZUkBkRohA z5t&}>kUoC*O8-vkE>QNN{4upT@bUA60e?|@;`7gx3)l_O+Zz}V5(LE^Qm+J-2O$WV z4Ly|yexiZ z-*fD{X;pvWqy5;z2Bk(tkY84`ZkFaYR6%S)wqf6VH%5Qsf+T{r1LucXg?~XEegb=f z@JC#QeSzDhiMg%v!kdl0umXbx7lQ5r^Fnp{=7i&fb_27EvCIE}Q>zoAfAEhL&E@z4 z;BwwP=z9flapqCL`lhO@RN1HM{hNNN;4|(=)~{9|$GO2>SVb8~2nE^wF@Q3#TzaicIzRSEzzKhgH)93ATArl=QyM4RY zjuzb&c>t6&d0d^vf@tEd3V$lg|D>@F00YJUddivYK^KhwHDk7Sul>T0^-A&8~W-!NKvw^S?L!HV@L@S;d?9kN?{|4 zbz0q%`q^<9d%M};|K=3zuzGs_^Pyk2AOl9mzUYW{9l0?RhssW?DM8DLh*6IZEvlov z=3lcq)j#t%;F(3QLMWAP1$|JWwu41&L7FX4qX&zK-thT2PJUmq?W$9C!w`vJ3t;V^ zbk&?3ArD_C&uIw(V-C!BLZ+CoQ88>JJ(Oqsol0+dUpm?BK@E!mnsJ&ax}fcV<@ud} z<)2`P7eW&d&R7iKLn7G{a!$yELp*Ma!M1X}KC?f;w3mvOO{|M%@jt(UemI|Cs+kITU|XqW{=wX%T&`_)+qwvc!3IBfn;tCzAs9A%FxH{O?ic`U?$V>aUhm{}I=&3j%#Ed~})VvC1Sr{CQD+F8p}~Jw~!YLOU2%Ug!{& z$*qjGFIr=#@sSJ<#CPZjSn5FXKAb-7M{;hDATw-k4;F+Kkm(dtrF|eb5Fudz`sRl2 z#)+5z1HS9|KgR#hKf)&!N1kJ)vYrw!;`kzqz0s^X!+T)##X-+|HKBvy2HxB8+;Jmx z;s1WsnY~N40}l*GY`<|7C~QMj;s5o`f!v7hR7sgQaOUD@?oiXO~KL284VI@Fx1eRDs!si-uPVWkCMk9KszvK}NyR zdJr(%mURfF-VA)!gu_i6iBMB4d?}$hle9Wt0U`!GMnj7&#Pidr?s?=(t>vT9mJ&)8 zMf6-mS|DQ5`qyDdg41_2XEfW&FHaU1%G#2e!W95W2FroiBX3yvfj*jOOOqrsgC_OYjlKlbrG<^nX5VSxsE zq-OskPF0+oT$GkkTQPYK2dbeWq4N8lZya!*K7^NbJ2F5V?{`>y3dXPZ0k zPdbl6&GJhEB7PsQW=)eqXhR-lx6b?LI~8j5~;3L|3X!Ncr|q>=j$Hw;s~h zfpM*3Bc{><$dQBztKb5T;kiSzKo4ob>B2)hr>q)}3AR3pyyCoHhm8rFuw&f`A1(S( zpo{))G`IUDtD|3S9>!g$*=9>=;)sU9P1_=%0JuaSk~0cU2vtqw#Ce9c9p;F8$lXnm zYxfmSWS^53a)?g@&h&;Vt z<@#W7zYdQCrE5a8qK}|w?MQC2mUP?k+QecLFJ>8G7R`L&s;r^5qdahpq1heOE*P^a z{K?%py9^*~?gMuaH>X*tiIH$(gSFlmwbA!TvD?B%_G-EIYCZSL;tS542YVrPTf{1P zt<~SF?_9V)Zv4axQCRul)XPGpRS5<+C5hRmw$VO8Z&XW)eFqwy&tEM}V8pfli0>$(MMm0XjbPRfsF&L_XbJX+Yr}QH z(K-aiT>DwEogruE*3uVCg&P3`xSnW&yi$qLGH=eOAC$!a*IvC-l-@uoe2*G!YqZ)P zc>Bv`^4+oXjoD#jh0B|T%73%mGV0CGb3>SFb;_^%J~Ue9V68>51EpPlEIa|_jat0!Y=BhW@5P{N zFI4{5Um3a@J>MO(sU~fBZ&c{6ajMc@M3~s_;onZ~HtG zv0!LYni`sO+$dgapk}s9ZvOgO?{2NtxM`q-UvKT|!q&7ZO9F~iqWBIkh72S9_Vt`O zMv<|is?G+^`J$|w%pR}IEcb`BK&10`+%A_K_0jHRwH-E8_xZg@^$oMvQuEGCLrQzR zmn4s?NX;5ko`WH6DBN7un#640Gvbq%KXj0#YtcIu@Q(rs@9Tla@kf9kC&SO-luiE{ zNeeiD%UIL+qbA>DRemL7D3`aJ!}jl5(O|w!$YmM=P1foGu=dlz=N!s=HQ(s&sh>hx z`!Be+23Ci1yOZ4luor!`)@Np5N+FMQ@P>$>l^FU~MOV9}H-i>Ull7onkdtm9uFD9RTiJ3ogg3xRc3&NB| zkw|2}kwDQr;-#W3cU0L{l~moTGOegi=rUPUuT1O?`c&h>7Kdgi%T}0-eVC=={zF#S z!qqQwgncKpG!9dht-5$?tFbUx(cawQ+2LZIXWw|=-0FUQ&E4_be)c`_J^3duIs@2t zH5Ww9*scxPKG(K!w%7KdN~tt_DBCe-6`W|wX*k6Hrx6@0Xl^Uo+~#r>?AH^#)|M6f zw^Od@2I-I^q6n2t_p-Av9s~_=OngDM4c#uE@s%R*q>KGh?m)(i<6SSSou6WL^cuLIJ zmgJ^Yk+Q6IQ-ZYw=hD9 z;2PLPQYlC0p>#3@kGrb>?=tZ&0I)16NOk>?wW_!SrY)>@3;H6S-pR#Kn(Z7!f8dD$ z60iie{Fw3SmE)($3r$W+a6wa56dfN^;{NYT8EKyO{bJw$dh{=bqoE=>A}`MV|L@Cq zsDfsr)Lev$AJi@alR2envLn6<7CJ_gczw{Y{q@#Hx~dT!>E4BSKNWOszT~Xb=ihe{ z$F7Cqy94eaPc-WH?iHJGsXkBrE8K4VE9haoPW@>j4V?d+U?@FimtPFl@ZNRNa{8W! za-|e)!z^wD`rs>DK`wjt-yug?$?vbSBJfA}6Md|*{kZ)I_m$;;=b_I13~g2?Qt1S1 zMhJC9E`G=+OUV(%im)OGkRzvF3RY#Ho(ra8IE_RWn5$QN$z#eHEUw|UiL$FEsGi%# zJP;T%wH?~8h|;vH_o^7e@R(14m?6*R)DPtdh-j@7Abo{<;`k>aT~wL<9?vADwI6p# zQ3VYbpk6Fbb|@dyO<=|}vN~bIKe+w*;+I5^p6}=dahBAlCd_!lF1*tOZnNzdO;2nC zF1({3@!%aeeg`pc8aUnrcNWm^V9Yj;4L+#NI;hD-u)g2xvx)_5=(g5SqGTQNlxW8&7JZ$w{Z2ohXO^ym-)%8beF`%EJt{P_( z9Snb0_-ZD?aa8i{-3m=_kS&sd9tdmqLP_EJzZnC~#dFbWE|q9mNe*{3mQAwN_ogDs<{*a#2k#lr z02sWie%TkBRWcH*(Xt_d4G2lzz~9LEznIL5A@@O71~Fd3k~68UL1jUYUOnJ8g34h0 zusz?;?uAje@BgL1n9SOwR!T}B5EaFE5YlZYTm{8=5fbMSOp-s4n$E@3QuqzM!_`># z+|;l5lMbTycg=etrKE&{Tj3zJY)lm1X|cdawlCtX2Ws7I4@_=s&HJQ_zvESJ5LRAv z6OjvyH~%ZlXBxZcX&MonRKvGVmHjF5KgU*>YXd^*QgFt=_}g;0nTd$>QIcB6sCC4q_hiY;+K4Cu z!s&7jcyfKiqK^y5bQQ;C#?16t)8tv(q}rrL4>pT7i^!7zF@PA~R6sT$+uT{nSt*IC z4QUgmAr6oVNaY`McgZ0ScXf5R!+7R=<{UfnpZ?6|pX#3JR$6u?b|Owd%8tMP&CfXa zYm{x1sof~i_gZVScC>M`w%sTR;+nWUfPBXJYw(ke<`DGj9s3UA8TA>J<`{0~cdRcW zv6$e@$epU{IMw~wq0&qEYq$*07j>RuI_RYKYey)pSCBAsgzHSSy7zUeMmlUICEQ3S)~^g^RvEJW4=BM=fO1X^CkFO zo9@=!?6aX?prqJPl*a^TbM}RJ)=2qaxgUVxzWBf>%Hs;OD&-6DhqG2D7{0u?(7iYj z-t9qsy&Wwq@GMlY@$|Hv{S2Ewa|nAnLlB&L2nCKe<(ayu)kXacVD#DwAn_7Nz_LR$ z2U`<%sB`{lb^5VbGy7t3<+g3H;I?OhuR7zlr!H!pynnZLmN;=z%B6HA(*Bk(qs8f$ z3GwPZ$|Szgi7Q*yi~;T{jp-E1>)UX~8z!4vrp?hEUjWZO)R4`FIPt+RhVmkKvmyeS zL?ePb@Dugu6nh8@HOd%r;MSPT$vRRiNGr%QsFWLBoi+4TWftS0KUYbdd6kO?d+~h* z2LDsX>qO&*tM4Rm1~M~*3{k2~>0JqGpMu< zlJD=q+Y{K#mgqQULi4!AR%LX|VR}q6A-!QNMzPN-#nIM(J5j=i{cOCjC6LSuM!^(N zi6+|4AQ4LzC}GwfM8d{x@WnXCA<}^T4q!%%UQxQU%~k$vVrNa^BJuTHW|xj8mox;s z-MhfRQtg%$+kc5s2t&Ow+r?J#xDC2%rJ-C1sl-tYwjpK3nGab*%;?t-OEwl9;9bQZ zdNW296RAr!!M}_%EsMC@MMmWy{VDP7gE6^am5kJ`h_D|k%mQC zFZ@&W#kdRup>C?PZc233LMGH+)eV;EFA*c-2A#D%lw)xBsxi~V5mUj(A{wy&zR}Ac ztVO|DSva4zDbhr$JbNEJAPEKcqb}fwG8ECxOd#x=RY)vGI=&}0giXN`2FQD{H|(u2 z?`{Vw0NMB=k91I(+W#l(y$E^S?5xzVX?bXg|f`g;^L`h1I(DDP6&D!nZ?sidua<=bH(7 z`8D9&hZGWdAVFb?b*s%4fSjUU{gO#8^E4ImjLRVmhCY@;F47U%B`B<;KF&B{RKBP; z#*}&eQVYI;LJPq`q5Gr{{x&|Qta!Fk50HYw+Sm&r7Kk+cvSD|-hGBJ#9lHme!Qmg| zt0!ssz$_D2OkuPa^&34AM=9J%jxW5MrCm>{$>!@_`s1mTZ~pKfCBg&`6p(-Kg%|U7 zpfdOMsrv&+k^_0_1QUp9zY+Y+6m~|mg^)0_MiG;<77Af?%QhWjd^h$CtVQJogYdZt z1b+82KI&j=Cq9svBPZSbGJL4!@}d@Xe8x$A`Jq&=-a~vugM2_3=m>vgS?~pQO5Em) zZaZmT#q(Tx@B8uaRN=q+2eoA#qCJR)&I|j+Y!`g>kNM9Pd9>jtf}usMRhA)6R8OmA z#iWcX8@T!6e+h2ir%pX&6{U<~c7#TP((K1pQ4g*ucAk}|UDpd~vBQu%AQ!|Qp@2S6 zB^doyoy!a9Ek#m`b_bz$(jOmE3xy*8+6RlOwUxE3S{0K-dg&TwBGFZU8NZihFT5q6 z+lyplb+bRtl5L2-K32!6uJli}T`j^Lfb5)^Y8r`cZ{FZr8cKTUSlVdGsW!XQTfd`^ z{$zW>{ls_il5S-NA3w)u}1rfa93^~emHUH{FHS%)38Hn)o6s}XxxkK zANPs%a(}7SmzA`mko$v)5;ieF%+R#=eoLlTWcmv-UR&V2zFhvVlpiB)ymVo1EG;>W zic}%i=$~|Vmi9w0`ABmz9vYgIuF;(2MQISUt@d_Q!k5}T&GjX}X z=nJ|1L_BV?PY%{R$$+3qM>eZ_!+axoni$k3Oeb)wK$Ttob7QUpVpw0&U{hWy;qWanrA{!}_u9hgWecKRe`d;J z@XNptu5aE+r3ifnq8(}p@dhej_#c7de4FBq#&jQwJsFdGhxYE$e-|rwP z=9@<=A?wf!t{}71S>NtnDR@6(`aN|=5zGr1JuHK=<7<0^QC3L6FX5>Sl045^&%Q$F zuec5+EX^LCRrF2y-yK9~m4ARh&B-7<^<@%3&i4$-Czw48^ad2^rb((SaqGBa-c*`;1Wn|kpYcR4fP%^@?YhVO9q!{x>||&^ah>ycU{`T zzADju!e3f*fH6REx$bFR8*of-<5djoFuQb{9wY=3q`hVwibDyCo zd%9ZBKRPrR)4KLRUnEVDkTklr5!ram4}pi44-l$0757~Jc zpUB+RQCwC@O6dfB60R`=#>^yV+ctulP`Z;pZ3df$*I=IMe8bJZsi$HrMcHa^ZEI}E zLszPn&412wTnJOxJlUvnxaT);AZ6-L87k9cerCF7`Y2aqRyRTIEj_by;N=QxF#Q}~ z@?_5vHds_;a#EwaAtqSK(Npx40s5rM08X zRWXxfJ(^WIwqkB=p5ULti^8+^vzJm!plD2M#x{z#B3W-K=N#T0znrvL(%_E+mCCvE z#L6YPB5h;oN zNdv)4?V3O-ATnbR6Kygi(!I|I%+RV3XB8?rnr0~Vn-6{+`YQA#_<7K$a8ks8>7Va6 zl*=>3zDhu^i?Qwj1KuB(-MS3dTrTr`UO9Im}U~m)g(ucxpDqo>i4)l{J+ml{N21GpUoSxXifqxNhNr=UR96eI2ur zf;cSw5#D6NE5gjU+&DpfAE#qvsqj{_PyzchoQt*yfJgW^OmylofRft9C!3pbiT zB6A{ZgOB-)^yet(cPZ+UbolYP^olf4`YXbDFlvIsMY2nB#H8d)s)y9Us&^3SMtMkSh(J`0*#21!N$JEa7A6)`9d9N|fF-|n-uNzD>hF97y zaru4WeX!r;AjVrya!p-GCR8c_tRZQTcjVyVbK(w}%ozF&=DfL4L*8g&SyI_pSzPz3_YmAHK3U=GQ{2M*q%Xo#-0aE}F#a7KpG4|34)YmQwCoJ)UGI9u?N^tS?4$)%wiPzr| zlfW&iQdq$rU%lD{;7|YE_8(Hnwo(bPoLcBkLxQs9WdXH7?4L zzcXBTMEmAQiy85XS9XL5H!4$B;dkW~Siyg&q|Q7OVZQwp-f=c<_cO>+#`?Yv{==tO8*f{N= zh0~#K#Tn)3J*P{PbM+`@p$3ng*J8a%q|z00yiJ+X>?Vc{$z6(&i{>*7@@R&St!XXf zVA{_9I)5f3xptDPvQeUv-O-b1p(U#_N49#nYh!JjmSu&9V|3@_QX~U%TF^fJHD9e( zmzj%iYE&rd&hHpqFOt}GX}ECN65l5PwfSAR&x!;6@{kcY@o0bi_h}r8Nr+(3xMEx@ZJ5lVDvk~ zJ&!fbo&Sh0`186dC*Z=D0Y2+tjDHlI3PY zt08TD#D&!EeCSHEPc+Gd=}ZTTW+knlX$u>tNn1}uB2P_*8A2_VX4Mr+>D6y=)pi6k zvxcXV4B^)C^bAc>sb&-1jns3U_jP$29nQQB)~GGy^R4NiU$>7s>vNs?5(nz%$2fi| zbHSDl%2TsC$FyZnm+OUkbr0OG?w$;Oim|!O)u{t8KKb_c>C1BT7Sp7Di6!%Avt_~4 zOSL8sy3yOs3V9YRogU||^vElWenbmm@Jk^*-*shYtHV-hA1P9GM`HZhisz%pG^v-m#o^p<#yC%I@k} za3RbEH>{+~c?;)yd)P|VD}yfwbsm?yH`kO9A-dxB{B_UvZp4+Wd??ERt!1N)kOs{! zHo8Mspg6mW>y{eYwjZ3&XVFL37*75;)p0cQnbs?1>5+RY1I;ce3B=pxY@5Y;;67Sa z!%h3nC5E`woXzN{>1!SYbF3G!Y?mm(Mqs`tg2P#V3ZvZtU{rNLc=ymsd4gjeLq#i= z+6ydMKdUnm^ewx=b!`lso|N&Q(wjBv_7oBZv0AQznnP&g#p(=W49JEV!4EY40Eg~tkTsQ8s>aNkc^Jn%DXTEC0fC~{V^lVDzUux>&{15j*~PmDMI%6UVtCtGezCAGV6iX3o#@hPO>y zM7}DKXI-&a_vxHp9a?*xyCa)C`*`D;bYj(yHGDI5o)K*bNJyy?o{=J)*05sOE6Q)1)b}I8(Cqo zrQGj(CY3UlT8N$Um6s#oGwJh}fA&<=!n(~~x@b1GIrtsMo1c;2q0cv78#~Gl)#-e=dt^oJpd-FWWj_>z(;>UDfFm^w|EXmjcKXf6n5b zoR_gpA8;&@5?Kdf3+#<8bI$A7t=kF#Q_}G+54OqGinh3X1?Th9k=H`D)zzZ?raL9M zM)-fSJQkLkEqb0MmFGykxn9vX+b1QymP-df^F7y;cwA3KHF>Wx^Mh?SULrxwY>IT( zS8NsD9;dTUlV-9%uQz%;&Um}z>iV^=H#^o5#JM6~Jhs>M;@uQU;QAt4CKWhZH{Pd; z2&wPY4ER-c#_6n7F&jDUC|XS^b5zaoHvwpNSkzCpt!|L7T#5TW!LG@~V7FkA%*3Xy zEeD1Qit4)M#HhYU*57i-BQ>|j<5`CDZc!m>g>`J%zg-tB)a~W4E1Eq^3_OxB9RFpI z>*-u@vKl@7$x4sBwz(BXx(U~r$0>>8y{T*VcUGr0a?74Qbs*=}e9u81m-po9+b3%c zQOB;Jtvqq2Q{KW3{#_>%4qLe8W@qe0*s=2rLC0~faJ)mu=cS;TzL497_n0=b+l+uC zear2&ZQDqD?c8h07>h&0*d|x(QH#d)#xO$*`?J6Sr(Re%*L9NxU_Vr4!E?hUr*YVz z#W#MkZA9}>$Ktdx#b-X|v86$cro%^%;`FnHRtbiXNt>zrL~?d*m~tad?Wk>K*MC(L zfd{jtJJ**aij%07!z&6(0AHg;QmLYTz+-gH>awBPYkc;N<)pBFrSw4^@7?|?Kg%w& zq!rg*AeXjiY58Q$#BJ>%7w-T!Yfa6TpqYms5PM>8s1)M7$+>UC{$^*ED>j^eRaiE} zZPj_mW7+jH>yCO2Z!h0D?qps#_o~B6R?nvMh`#6@x{5GjQlL?r2^mm>h!NZ)sBCI; zvx&A}5;PSuBH#%_JBb#LZ4n2knf09^jr|=~M02GIXF)BH9q5aBx7H!X;LRaAZ=Yd#8wk>SO+-C~e!G$|r+zF=rD{U&LqvYd}J)kXcUVF_Z z;{c^f$CDmA#~Jeda&CG!2r|SV7d3e-#12*k1RskY7EMxy>Ov~&^!|wX1ocq4<}!L! z_BxPd4RYd%B@Ju+W&snou9jU1qqwTYhl13^(vdXpmeyoG;N#j#C*jDpL$D1a&>7|l z|1^1OkQ`P+de_|eWTd!2#DZ9j9Vh(F6Jl%)8H7%TZhsPOlmKr&H{ z)dL7T$&WBr{_+A9*A)78QWb&NVVRp7p))m0$&i|4CsL zSK@_E7KOOf?P3}Bu6`MX?o?OEH@o^Bd(Hn`n_M8lf=MdbWx40yCALfO-|<_iR`M|> z(>my38j#p9Ct-Z2AOwN=jn;Nm7|KgNr7OIfjaCxQ^m-uPb+A9=X6+(eLz_vnpyvDQW)sj89oY4p`FyzQ|!STqX|j=6Cqq}UD#c0@hyu^F#_U1W3)r@LegHLyR7(^#!+F!*D$tWs}U zJFe-pfH|V+*m%}q)=4$}PsHddlWoiS@`;Fpf%klKD`YOtFJfU80E12d+eHPVMgS|o zY6601``vP3kM6lp=Y7Z~=ij%(D6@YR^N?Uywki5Nn#(fRs1m=2`Lq&jgm%noAkwwv z27T)hjY^pn5>h!e2=HOvn!8+r$6`%C<38s=!s6!b=G=1=9^XU#k`!qe2@H_v)?bA$P9IKuG<8yQ686!4=q+XLGm5aUXqnD zqoj>P!B-=KnWKcSshr*9!AW1L;JA}{bqCdJHcm-G4ra>cgOnM zdKA~%5r0Y#h8660ud3{e__Pt?1GD{J?44=3gQZ)8kAYjE7_PhcVU*##lf0;}AO2Ba zroPl5&M&K5Vv4H$-dvnKoSEKCYB~Aic*;^r!AWAdY?%+FTKTuiV&c0T83fh10I5t$ zg#)34QaQF)xp}G*rMrcBeH%t%`BaLDm+yP|IX)i46FrO!Oi;3cQ^L?PNok{86Lg1q zM;k{=cUyP7uY#}OuOi-!ALSpRT?*SYKp1!3nv|?V&UPt(O@BrIV1KjpSmsCo%eBPc z5shJuMCzwBh<0B_5?@p!aqgaUCQAMucY}UutDv`@otAaZ@+gc03Y~a3;OOI@#+3FFzbV*L*{LCC+H33 zcb9~_%=YHkdnip@Au#VL9x&)T=sXB8KO9Z>?e5wg9r{O=l_$*j2i6;XBx{Y^{9P;9 zP#yu}De*gBTBUfD52F(EEJ}WecgRN~s8G9JMx|!8aJ6)`Vzp$os9ft(i=76U4kPLS zKBZ7>uH;nXfi9-J(YG4A*5&q(QHT1zg+^PT{}8URy0alm%?(X(+cAa~CKm=mRA(*P zuM3T_N}1Zyo{lh3r_1Gza8@O8oyS}62WG-&-InPcp*G0U@+ttHjw^|&e|pQDuIhvJ zmCXf73v*#EZ^WPT39fs4Afzfu4L1 zo*tT>=ugvL96b>b>r-Vt$6?Bs&z7&!^u)m->np8yCcjuN!%WJ_M0DooovL?6m#QJf4oU6rmGS3s{KMEgu{*3+ zmUh)`#+6aPp`T0lCcWoq_Z{kM`bXghS{u!4)koAv$4BZ%oNqlv2SouziG{nIj~u1j z;E*5P^+u>a3hy4cy&tR=xHrm*>)}cpJj=5X`Akw}Ta;;~Y2_$FJ<~{!e3aSq;57+8 zT$-B{t=W#k3`u=x*D^x>3T-AHIGy#4RB2(ZU$tC`Pqo%k|2*?n?YYlX`ME{ipEo11 z@BeD)%b4-;aTP)RxVs|S6-XdYE$@9F-x;5EhV#;?>bY8u(KyPVVO-+U6Lmq!@VxK~ zW$(X7|M;_P{ z+~LFU^B3%fMvVpob)&jx3QzT65J>Xr=)ky3W?%wT)Lq-{!_??F^c2T1s9;PXm%?u(hYrQl|@usTUVbbH*b0&!g(tA&zAsp(p? zrFr=?*UwkfrvVrb013CJyn)E(lit4hm*mFM4PT(EQc6K7y??^0sW8#G`_0pzp6$qf zDF}qUquRVLQp)P84Y(?_x4XwS6uL7M4Y`d4M7ip;H*?rlOg=3WaE|=ZyC?mubMdq- zXsBrpJ)^gaU*x*9-KyfB)vaHYT0aS?)=QbH-bj(stJE=E70Rz^XmrnO=zIig9I8{8 ze^P8EQva!!l~TG~RK>Kvsk*MKq@3Ngy6kkPsz=5U;PU5cc5JOBHA!ndP6Z&~-K{Wo ziFK9TwY2PirT>+hX z4vYjUdcVx@b1rNaalqLCt8U#L(OElwj~n>_@8Fi1D2)Z#3^AO$$vN_%q3VJ+PELR0 z0M9IIFniwX@3J`NexEsR?|VKg;);JTD0Y z5c@%=TU^vImtmZX#I5gGwy=?%z^B@EftmFLcF*V9wNL3~hUYwxn~+Jz@*7fpJ0wUP9NUF8bN%7MC~?QECgwBfjY&{)fAvatsuK zFNk2O1Ey`owZ%RN`+a%><_iyIM=r&WY%j%2G=*xuP`4+hRbke2#+mu#GAylVz9y$t zK@^wWH{7O{ROD=zp@#u==!suriqfEroCIHKCFwSCAJM-h^XO>TNdE$h{{#pRp`k@a zL)@WpP&25yibaK~3k+6zlzNO!`ad)5+m~5aTsn^oCqhzxY4&h*ag=iOa8z)Va5Qri zaa3}YEv@Q)Gqz{2t+v}**4_E(Xm9)2;?d;Mdi|5odTXPj_tE%bZ@H+NN>`~l*G6E) zr{~f1;%J$!dPUC>BImDnAP$TU;^~%27(24`3>2bt(~cytAM}LNm$nwi z1^daxjs#ej0}F@>2%ah82a$fUnHQgEMSyy}C;%shcPrb0ssy)jIIMvZ7kE38uf{RbWHvDY=vb(H6lz?sN3j&~&c0Ff$NZThUV za~k(Vqix$sF=Ub9#Neds{4K0T5P!9tKT! zo9+s0gmk7whG`LmwL+rPA!IxE3742Ihfpe12+?3q0%)a}3AT&iVBn_!R@nf1oR6Hx zz=|{>&p8726bQxO?Ub`fs21wL|8a(6pl4KQ6k4D>#z59B>;SFfOoNOKU=2kF*wzVt zQUvWnm$1{>3qJdSN0H`6F+u1P_E5cnTrw3%Z2%MoAv8lOibar%gu(&g5Y)$vvs^gh zyeec1$DIwrN#V3`mgUcE*j~)MQ|1jQObQpALrv4n+jJI_5hyGrl}vEinQeIsz6dP>W7!u5MOe)1gS|u3fa2C8T!HvXSf;X2J6@;hHc9 zSBkfxoW`N%?gs&sAh%z19R>OJ>74?GKA-W%?X@y2_TyeXa|-c;HW<(i~9 zcr(0N6kV0x9OsOfg7UmZZy{?ta*4{NS0tY&b3Srkb>DD~xo^2|IpQb?aqhd|L#2D({m2pL+6Lv;2e}Ef zzct%|bfV0NkrF-Q_$4o zDF)lpJf)rrPc>kjr_nhInh1;-k320Nx6|R-;puYrdUksHJbOHYo&$_?$aBPV+;h@% z+L_=v>zVXi@LYnvMq695bIdj1+UwfyItcw?743m=f7o@@b;5ND!ZWUOftI%5I`6vZ zx(qGuJd9cstlU}eab1ynk?Xqart6ODK9p@btrKUt>mdx3dUvF7iD9fe!JX`04ddL6 z0J6UAPIG6v*ST}u=0z=7fU%7t)Q!8yUBa;3ZKG|+UE^+GZAgwoD{?#Bg1g<_>F#m& z3SDl$d!Ks>i=L(tXT5>>L&h3`fLv=N@&BxyRiT?kR!5I2!F7ZJPN` zDjjXTUT+6rw`bOK&0Pd7Il;Nwy9-9`UU!es=S_uHFy@@_4nQ8aobyluFd7SS-o4)a z-hz3y4%z3IKq}tmb%c%dY@~#8>V)=5e96AmY%cr;%zJD8Ev%!! z+eXyJPS4}vit5b>1IE?o0Tcif1C#<(08|6i0W<=%0Js4tZAbm_`mXwu^*aIj0QLY3 z0vrH11aPFDuF;6$Yla&3mB@|gO(@q*$O7w%&9FMqqqm{-BA}eNqURBgyd62uEMiZ+ zoKPdKGZ3ahc#iv`Gud^@xf(E8LK;s4%#?5)V6GIWJhLR1sgR@hMIm}hLUiUzGUbZU zrl8kI_j0^JipzXC%{ql#uB1O#!g58PO20Bg$aNH&o`w#Eo#i2+Y>Oa; z?XF^*_|_&`{aGa;3avT4x!CE-j7o|`z07e7Gsq0us6w$>4hKusB@;>E?2TXFYwg@Y3 zu}wlgu2jGbz%0o>xvf5~FDmFPzXMV}iacb#D+kaRQm2n=n@?(Mp<{~HxMUOC5$qoV zcEe8Ml&cJ|(zSS84jqRS^M$ZV#K62Kw-f1JSOb_Y;ab3KF@GUX!U9Q8u_B$+7KBp3 z3YThr6RKU}oGYUwFVsnT8Ub4r{)eF8mQc1E%2C)M+0+HNQz{>6?iTujx@EtGJ(8|L zv2I!YD)TrbmX&Zs^q2Z599QT(sV*0!{*60K5b^3wRB14)8YMJ-`PcbyB1e zE>-VKg-<)irMZH0ht}M)RH)Tnwd9oZvQ}u8>N_-il7CMcbLFul&9%7vv_jdZCxy!O zfmZmm^%FWCEH!67?VMJm$X{ObLHX{M*J#SMEgcuOLAzTJk*#5RLh@Cv13|y5-WBY_ zHkYc8%Ka~}HZFGs*Ca4cxa?wor~RJg-6r-wr9PKeVPA-Ds@K(_@JrIK9G~Q|D6n>> zHg}7B+K*kkT!A$%?Cpc)CfNzQ|HbVjm+k)5Z8l9&Ml{`iz=I;6z6BK#9udXfg8Dag zZjb%+yYna#M8Ado}wRcpD15D6vVgJ zLO3iUjR*K3TRS3!$0YhF;27XI-~`~5bU!V{X8^AP-T=HM$;dX1NJ#U#E9spFd=z5) zh&I*{WUSTKM%KpGCe$X^uC7h1&8%GqkXvi6EvhX6FxQp?O$1wQO>IN1qgH^pxwgHw z^X>H7p4#48f9<~7q1s^xM{1ANj@FLVj@M4q4wcQHW|`cmYNBF~|9krR;IL-Ws28JNWdHH=yUh>dSS-Ft zJBB`sP)!FyZ)J#B(+#)_a3DxiqLN;-R|@xQ%a=}y^qPYq=?(|)8GpYNKPu{EIIuWB zz|Yq3HQ^x;qlm{V;z>);H2`WLn!V$V4CRKeBFx_L*0FcI!`VCDQ3kK!U6f$xHgrST z_ZW6U+4ma$BU%-a9`SjU67hc{ZlN`iKaTt{N{xz-ibromB}65lwBMdy+>Ugp8pgZ-**|TkM<+!Wqt8Lj#6ZoMfA5z5p&&s#`_FZRe}R9E zIQ$#35`{;76#X)K4H4debQt~KZTutt5&ww4KO|@~5?A|ms1a8CbcO#Ktm=P&KEuBL z@H(vOFQHUe)n7yZ4qXSxMmGSy3@iMfqa5}ni1p}0fLvJZ&x581=r<@2eFR`c{|aDY z--$4@??i0CdaOqU*nq>(MjU}7(3|Yb5k>6F5u5OH_&HRJpU2N53w{B=fUNjM{36=S zz9><`z9{h({0e>rm9p*yW)27Uuoz>cFAeU*J< zq7o0{K~#nJEf)C&Ws2U%{2hmnMjEB)SdaBE#7yZp>`a73U2^0J8%1`DAd}1_MZby_T+#Z)G8VNASie}t8X_~SA+tF|=8%R= ziCPA%r+&o)CIKf2fJ%Kuv!p|%N|^@l6Qtf^Qobihl`*MzpCI)%m0J0HNQuXzRg!Ex zlPcFN^H8aGLQ2A`DOC|7<7YCTk+8Gl6Yj;trSSErat)d_yIAgy5yhmqvtE`tp1QzG7dguL98RtM=9T8UgFP z`+O~C)-uT;=rNGLCVvfk#qX2v1LX(g2Z)dp#DfL)R74N{c97ZC;0dmMt4&MA=6O1-l_-e>jgee;Sh+;hki*6HWM2|Ub^Gp{E}QJW6z@rP-_gF>m*U&+yWF1U zOZA2OuC!-@^g-Ws-%VeJ^&YkK%_NY#33+Atl9(+yVor-fqhw#96w3C=p_IR@Z>dnb z-12Qpl^e(&2JH{!^755QJl;t7YA=?|sPtqg%6DX%jko2~% zgZnJs9niZCVyWO`J*&x!Oh5H02J~O^U18~xeBsT}Z}L7nNZQ{_dh?2RVX5{c+eLT% zq@Vl+wEgdp@1U@Vvk~V|c*L(GevP7lw}KobKLp-cavmj<56I8a>w2HwhuB#<+Q9lk z!O9O;-a%IOojGw0m&*EQ3w_gHrJHIEXT9ya_?V#6#!Fph)uUPNVdk`@c8VaEv zs=~a8XEl(*YTz>~|KG~Hpoi%tnJ`ALBe_hcQ=-AzkfhLmf>6*5Q2)^+jjUEu@jXQF z15%`-T}2$eK@iDOQ71u%I_*i2o582?Srzpl;_+F4!?6ET(sv;p-5CN5;JqqN3+VA< zH|#r=)Jo8^18)O#tLR3c*8vpbY85>d^cMqU02Zh?(ZI=M5Qo#09CRP)aXba|5Uw#Q z-VB5f(N&zGqMn6Xyn!as4V<8&9|1c34a9MbRP;Sa2R&pI4FcX&ap-yYeg>WBf{L>Z z>DjL;x}fiNK{_Rmwzqn8Kt-eNtrS32eyqLaFp$en-QEa{2H!!5jRRtz{+DI7LYh+S zQy+*qb1*(}X0Ds%DoC_c#Bs;C46a2*jYT{+2#~;4D(U1QNF#2P8&gqXox$13E$#q! zNJXDQIBh%bYu201|0bZU`TS5+i?$zXw+7hx0bVqa1WFW*6=)J_trE!HSstsm~ zYovyY<1$rrGt$9&Xp$6>M_hu61OAf?a-HKKxC9$R&lOD zUzsBfWQ~e?9`uyri=>pqsOTp^Pd3TMrvM+QID^oO4v=J0MpXXdE=ZxrJBgm;5TlCI z0Da{)fCJwqt3vWG2CHcPi7ILqF>F}PQ9k3l~e#aXx!_o(RmAg?4egphl%N_x=N0bkw zaV0oL{1vfOVMA7wvRO>=8QKbHYJL8>${rB`Y!ub@y;i0)(#=4+ z8T+)B)#9CfT$1br|2mtl$@w|#O3Q#3$lczXS8eYNdh4iHNqU#`NOji~-CP4G(7Wc? zrUgemV24=NIpewA;FVXDeB7P7T$Fds339nKk2hac--Y@Ib~NOSH}|r1$<(r(k!GQJ zLgG1=;{7&Sh@%q9q0&*gegCs-6I!ic$$EcWO@HdTZC>5H&OY7jxA!(r0WYmN7s@iX z>0a}cRJ4)GXvxH;;-Qg|vdJx!ujfj$L1> z6Ym_Ulp@wj(?WAQA<;j$D+iCto5z}=ChQZ< zHt_uzQefy9}_wXFRO><+yd#Je0I9Atoh2P@IaS1Ai)=y6+x)pRCS_gfg z4S@CpyMm*Kc9R00Q=sR_r2*b@#*Js`HPnGVTb~C#2-f3z@${gbdah5=U)HArtpadg zfKK$`df4wk3ZkE2|1}`XAJg5_!C0b)U5dUTK%bb_Eb!{|iNRF5UVWa<51cc=Dby_}Ql;zK^s9AV;K5#1cO$^j z>0|Y=x(a=`4pyf+*s<%*2UF?hbve2_Iv53XEr`I~v0yr|dsdgMo7TbDp(_LKtZq-R zBy^w{=vffEtD6s6$lufr@z7s&FjnYhbXS8Z_zV0cpcCqa?u_o7!mBoZl!qR}--I-W zbVn5SRp=`C{XC4J`~~3kQr`oqa`;Xjc3Aug8rQYx+=_I`x@5kNZv^f>;3n(Jbd?Gl z3-|{-j5s{pfgf4AoM1}+2A|4b;WK~>D}G&qE;(2t{3JjmKhDPj*9aax(h)_4(1Y`2Yw&unFy8+cbtP!hr0n<5Ar7!^g-?b(5HaD zi$4_ff$QS4xShZm1x_2kQ^9HA6FF$l+(D!mdgen z%y)bWpB?myy9AKHK`C%n`ZgM$tVnf=JmR1PxJ(-7Zu5%L;D)#%a*e=@&BXzCh`Y$m z1ucP|PEYsdfz!#I;4Ub1){_wet&m({zK<$27IVd9fSv=Bv%u@*_A63l5P`t#O%BsI zSI2cK(#3MIq=G=}C%wRp~r&sU};u~ZT-vV9&Xgx?Sky{GiyGb`Yap53#l1v3{!AD6AJ|UjD zkVY~@PAGI*v7Z!R7>n>Z(9uPLqmqtfl1%I-sdxu)M}S*Tb|_ND;tCQ@&n_|ePhv?S zsSa9$voUx~&m%~&!jcqx8N>L8E0}*l>2P{x2`LDkAV~`OV=&{w_=jQqlg?gP-t4WO zSvvc|jE$wU7coT#8b`GK!}y0g@U$XL9j-%%(NQ*I6SzASOoe(OZ#o9R_=gMekRnw& zYQw8x4yFI_gK>ATbZ{(=MHM(4QLkbA!;QgIXddOj>cYroYl7ynHJFaAFz7$btY&LI zf@X21#9iKc_xF3w0_!v~2y^ALJ#SH-w0uC%+%fb``PuAi4+4l4aV=ExOFv)nxumMR zsy$VGRqicARqm=m+hJQ-)ofLZZ9k2FzQT5eC}Y?;MSO` z9jp1OSzFl~U0dVRjF7tejmD~K+nMTxG~*jxw!?39RUOzeyftY{^456Ja@KZY%jy7v zK8jUcRg)BHdMc;HC2gDCni6Uk(?e~N?2&EJw1esZy(}Hbe7*u~0h_k+Th`f5R2OVX zqxZHeAfF21ozEq0&Da{grDjWJb+*bD(8YFyi=VO81)j0#*fX~9Fn5?6MX>sgWc9uL zCy(M9ZV2CAr(Pp&OKNY6h3T+uSE5(XA zTbV8Et5${?fH^?VvQ+|a8^y|Upg|hxxo$t$^*((bOZLK?%t)uqce7fgfguhDc=F?2#m_hd%k>@U4I1E zHgt%UY#tzbC2L8<8nno&Mu3*esQ|)VRb%Bi#K$YA=sk-w-aDODjmxrkc~A1?=k@K< z{_ERpMs>h0ZWr9wE2wm5O3y7y0<`6pYCrA8(9YdUybVBQzWd2{fNW$T;0awNoRF;S zWVCwr5B3LCv{Kl?(z#zr%Vke5y((HNYejV`S{!OoltkyUOJYx;B#JfyhSJ*@fH3#vB?BhiY7Gia>_b(a?PL8cb<*HeqA280)W{#&7d7azU5*oKdO zp=H@e-_xT0W|O9G|K};Z0J-@Vt<>|=TGU_GX;JSjJY7x?4r*G@Yf*o-SChK9zM%Xb z?a`=jP5VDur&-?a+1LC@J1jGnW0o;X`{oSmPOIVNF>9PenYIjD{1A><6Ge*k8qmfp z`z#|Czje-XYje(Pe#?YqBt8$I+IpL6v)+Dr%rarUw>fLG5hQyz7g`OLX=|VL0pv82 zw9|6cdYr|Ftqa!d%~mV19NS#>Y6XSOy!G14W3N_NA6R-UQ*hn)@-Wq>yo&jXS215^ z>xigdOuP8{G@gR(an=^m$IandK0+?cJL(rmGQU(FJ=PbgJXwySPAL_$P4sSajAe#; zYMI(xxj7zaWOEWNSE`4WE$C^dlGX>CQ(o!VoVq#n)e6wK*dvzX5^I4^xRz75ujeKZ zQ6Rm?AxNaKw0OZ1zN!5sb8%nsVDXMk`!=mEo=lp5$tF@ZIbO}&WP`9|lUbx#_)QLw z>;j6dc;}|x;#o*Pys3mqmsnz`HcL#>{HEce>lSPAHINi6^~IBr>VYMGQ~Rcp#5J2b zEp{4zHM97DrOeV+e7d;L;(a-Zf+fjPnKW-n0sctwAxnI57tlbT@+#&lU0J?T?o7X! zcJcLTJO#e3I9>G7lDd?S)H~`|ak}W2%A?2nBIY8MB-1ISVz!CiSu$QSQ%@m9hb0Tb z)0P}su1pV5NyWloKV3S}1C3TS`|^F@r{>&LX!I?x4Jlr zkp-8u;LSY&{b6L741@l^BCs6G+aISriU= zeMomfxEc%WBp{LQZKBc`V!+ZOQj}O^_yibTwCWSd%NX|}%`ykRJgKo|?Kj)m*u$n)lx5;oX23;`fUjbv8}{(`RO z%@pXJ6#6AlXe*cv>SCIZLJR2FcxvOBjpsI=VH#>S)D(0{=%%>w{KktLFK@hpmiNvF zMw!xYteCgqLkuHh%Oht*h%Kja5jPGga#?o!SC1*-(C$sMW}`XYG-sL(Uu|wP&9cyF zxur= zD<@Y@=3mIa0K5hX6xxh;Ow$|cWnEMc)e_VJp~H9)(%Q^*8|>yflVFN8HLM(jyEc#Hewdft!*n=* zI_h-Z!~FLANBPO7qsG4c(JxLI`zU}MlZ-l@KPrM!TYgVaSAHhkO*1V49Uw6ToOa_* zs>^gD|CnhT#0QNBOs9-{L@i&OShlyY-W`It<3Uz*_}UYfX881%T;*#imkIg`}l=nNJ-)#eBuxW*DivmwRzB zos$=Jdi|C4+j8>YdWGGUg&V>RL7GURvGrFXuCKpBxj~@(+*=ft+SZo^bc1^elmHw&z4;!R&_)qF5;@P`0AKM}I z8lLvHxrKYM!#S&qqyMd`qtA@yKF+3;g-Z~BNGUjdp^b9c^*+6#yL$FEj=r2-S$u)L zF{KxnUhPz_uX zjpGJ(3VdJU((9L*Oh2XLY<8Vs6tqw+zo!i{7nomELpqabWAS%b{1A%|uy)c%pRbbB z^dEgl2eLrE|BL>P9p7hqrWShsKWAqGUqzAa|LUsldvC~1Km-H~5CH)rVt}v&F)BvP zgb*Ywq9O`Nh9x4K$l%WSfX67q;4;c%a6@GPk;eckGRPVkQDhLK0wUWWW)Kh&5y`!; z&bQh;`TzgVH~v3-_|?g&Q>RXyI<<6nbzeAAsvm8y1wBj9_PyA7k9x`CN}_Z=xhK)E zUeK&Wj}qEXg9OX+?l>0+0UF>HG1|#7QwxyZ~$6E!R zE~vAdyqwY1Dkzn{5N)b)aI?qjM7oEQy;%IRMJeWCrOfgSb!biv>$kqllGT2B)+ z4+NtuXC0g?1*54*_JXhczuB^*(7Dd?~zi=DRY_S{0+=B zcZ(i5pJ_RET$rKqo~`~5v&G7<_P?;4O=hvh6=sDkJI5@w^dC7r`>A=&Vs9f)-4#zK zl{;JM$w|{8a*j|hl4~7vi{50>~6aLfM>h~U&TD)1v%!B`d@U7$~ zd0uWDy+-&#>sCRCf7?$+K3Wm-E5qd2_4G5=MGoN$mN7`Ge&!E`m>py0^iZ`WuTM z5__K!V~+`6ziFPg_$bl7*4P=_Zy?%&X9aB>3LXIOg8w8oJT2P1bs}$?W9M8Wqhr1K ztJRQZT1qbnnp|^%rN4o`5j<;TmV42>V)1o!-f!0{sokQ##@G?6FEejj|JMxOWbLbO zXRxKwTUq^kGvCV0$r^2S$tu9R8iv`}?hIsxYyn*)vvklMP6u!RWjQ}&d(>iN4)iBr z8&(14f3q?vK5Pd)5X=L=LgpxXo}$z#_>-YmK=VG0$)Uz|%;yzO4=eRrICG$PpyxQ8 zXA=dIE9kvJ*)p&TWeeQ8Bc=3dp`)}>U&^Yn#OXw`1WWdldl0N0mbIFrO~|c;{}5#> z1cSzj$+qk(g8p1V{UvysHSsM$GX}}4uz8BC`?^?Uy!R;OR??0l<2Mv9`5UpPl(Ju; ze-HBWWhY=~H_81LyaHs^_AhpQ2PaN@>!NuHdd_0Q&Ga2>XtYe)72F}{f0E2+C6%-C z6QvfvNNB&C*kcxhXI<~$|96q>2xo`9N2Xg~+e$$_1Nv@oGFSlrAasfBZFH5OU1jC{ zf;^#(hV!kKN!Rfj!v5^+*m^fNq;N7z`I!9RQ5{^$URDptLdr3wBiu4 zcSz)e=kVwL&^GsWglKc$i5LR^VbSI_C3hRzw&Blw^t45ilXm{gdkcK2oJ2>ZiGy5vS)LtB40X0ds<>v#AUqVp^0rL2dUS-U#28YOqh*X4g%d^D8K*l@XmfrE+rN63} zbN&%Vi0Ge5?l_0+Y2$e84DHII#%$dfUrDPOp?0p2mez8)(4EQUDoj6t=EYzJp6Lp1 zMsg`Qn_gRi{6lV@fkUqDiU;Nsfg5Sdci6+6Z+E=US&ZAO2QRT$FxgPh?tyv9){c9j z?GA&*%_t?sukix?_xMT!D4xv&Fcw%hs1UlG5?piR5 zQkRnZB=jg`K7!K{&S*Ga!l?mW2tA!#C*$;ALtPWld=#suVh>hDs4JKWJ&028!?^;w zA^hQRIzjh={|fjFd>_qN=&ylZ06hYH3v7-J_kum)>;kjVc|LkRrECXe(562CvCTgY z=7Sd^xd{9LP6;>{Oh>2dku$V+Ec!1ew+Hl}$=w3ydvGJz0G(J8^n;TErw;Tc!BqM; zr7uYDrw|D-YKf8?-GByss}s3 zb8NU5>u55 zp#Mzn7C7I78^H$X#FC(&>r?s&v@=o}W50}ftc=;IjM=G-8BF*oXsCm>O@gWPa!OyJ zQ;4M$;wpw!Q5Q?Eh)gPUbOW{1FFFDJIq3Xp;L|$48?8XzzYRpv&^mnxdKG0?BT0Xm zV@RUe5K&$)_6B_CAb5v8Pk&bM1MHo0*-bTq!~M7DW6HPkf$%}23nD)wMigt~&6(1R%TKAbC{ z8^RwBrxSD^_^*J^!1vLNh5j1o1<)fvuD1N<*l;h{6V5I$8=dE)=TpjdKn8940}$K% z<6u5`A(D&0AK;XLbHQ|Ux*j=0d&i>xa&mh>|C!t^aJ~l{pbZ;>esEIY)Pde4m`cy4 z^abhn6k;HT{wTT84QRltIsyGT=)7UzA8^-k*nqr$8;GRAHqCW`Sw-2^NaAgC3`sN_ z;=%3}?T#f;PwvLsz2b8Aip$xRv4>%Qc*<|cF7dGJQbNAGpU~CqB+Uu-imTyIw=zfI z)DX0L#Y*;ymFyKO*(+AESFB{OSjk?olD%Rjd&NrjibB_P`_gc~S|s~wc}Ae;37UG) z+rVYu3_))yxp{DQLeB)V;B)~Oz=;d`ZQztsHX+Yb^Z>iN_q$jm&jPWpOy;UBEu-=O$CABauA{BZL9SS9u9bbb&z($tT5K>m_^lq2m9%bk z$QKWn&=QX%X zE4+6v-Y7?p0*k<0WIUn072pDJ2iT8T%0cE<qT8pQI_SZq*OKyKb9jBHfczdDLWj497 zBa!2`A&PRKYq|M^c>WxjhvN8tp~|I!^}AG6Q5| zl{`Zkjy)P}8Q2hW^9gPA@y`tWJVg8x!=C6ok%?eQOp8q9En@Xm!Pt1=M6VD!_yTN2 zdk2RCSot?GI_5CauVm+coy5P;b_TYnF9#>VDQDgJ zm|8x9Gl-bX06!CL`VG8Y8T{VXTg3CwTuLQ`V`tajbH_t!e~{WMMNe{--br6u3;hX# z!4&AN;3_x^!Q-@IwV*jn?gN6+A>^(B>%cDp=YqB1cLyIuegX7oa`&UHK=vVKu$+7_ zc|!Zm;b+3%<7$L{L}cuWHisDfZ-FJ?TJQuoQ&8^&eE$3q-A1AjNcGeWsPeAv_t83BxBCY!x`2)yzhrUtnhDDxa=P*j<@Zck{Gsq?P zS*-0BG_W$)!TD6=gM%{rS+E4>-Y(yQ z_H&(wg%hnMr6L*3?MFnLZh~YZ!N_^CyY}5$L%U2qJ@PQ}$DC%ffmYYB{J%*nte5Ju zhbhAHb#nI`pLe8}51}VBD4-XFzDY_&hNH6?^a80jc*mUzpm*pme>T0=Sz2Kh(UyFv z%g+}Z%rH2Osds!}Ievg-30Mz&8|)*f7ZOn;kSrAqK6jh_=IFd%Xz!aqo`m)k+RiiI z$<-X=$d%0&3_kYl+!#C}I<4pB>B(clH;>V}&W;wHW(L@Sy7J|lSpG9;9wj#Dg!V2MTF#sHQHV<6Tr?`@&oc!QdclcR(XFeHTI*_cv_K; zB@KfQq?DA69H5P7K*nZpIepiI{_X4A7>i7lp7p925LErWN+r5 z&B)vYeIW85Hg`F@k+)?e`kSN|YAlyhDSbsIc9~!bkrrJ+ysZ>Wc}FmoFBsWJ?jo!m zC-OCxBhyzrU^Q5bGUo?b!EN}&`q`ur8#9Ds*A9zj31g7e++NF^Vjh##_6FHa1xLhJ zc04v@&64qTpP*S0!2B(Nk#6YU|e#+CL8G12imx zX8-9OWdC^=Rqx)Od^4%lWIR;P-Iy$lVD&6U?IQQTRik7r>9h;l!7hfImRctAx&n9*#_HdHSI9 z-5D@JwH?j?^b{ad45tfE(5^;uJ{o4BtqWL;d=Bz0kXg_3@&0h0fK%ztC{ng*C@E!g z1x+S&26ZXuvB>1|)Vm0o9QX&(_8v8sgqD1bg=6rNa1uOCTSkqQ=v;vPv(WYgdbV&H z;X%r-cG{5f(O=*BA5MMeC3NOHKR_>X=jE_13(XNY=Y#DjMSD#^EiX~;0XX+SUj&|y zWCr}Vz$>YRUiLWSXEubTghtZGGo~(O-$DP_q`iXEe}bNfhJNHO0^dZ#WO7U4lp|A) z4R~04cy9%`0NerpR`4=P)rQ{)+gxAMYo;aWyitH8J~Trqd&IS!8s7n1gQJj)VHKxY z)OYY}fxn}!z_kULN$9B$DmYDDyrCyeJmB%PS6@PI1sZtDrlZ8_3HX*FoP)TU-n?ro1E23&}lnWOIeX%o9Ao zI2uMh3>_qsSz0u9FVGe#M1pC781ph(oKL#$xo<%(C=M0HAmYywi==_j; znOS!(GsX+drJVG`p106^xtlq|89;D_8$sYL;78zR$iIQLMPVeo!2Bcl9k~yNbF$F4 z%XdiqiN0Ko-tHohrwr@3ue;7YrRCXiGP+Y{>8SiR$oAMH7Wai{dq=$%8_3ydp$}CZ zl->`z%giR{qRmX+p*s{=FR?0Tn7u)qWG>*;^kz9VZDaT>t&=;nk8;L)UqtTN?v504 z3Rk}9c|5t);+t}Q%xmGEU-P>a%A3U<;{njEp=*O>a0Y?%!8gE@oO!FoQ}4x~wci^Z z_?BKC*=KPQxICIEG`Kv{1b!3vdGPa~yFzzGrVTP}pyxr)gMJoT?msl}cM1mg$=n;c zRp`jyK}TN%4o2olP=4w2c#t7_g7x4@bne14H$xu-KS%O?@bB0*MCj;XN(};UBUkR< z&gG=R)8O1ld!fO(@?Bv|3(k$!5*nNP|WwU(H)^o3wsDHY_%=nL^fK{+{T zC07eZ#Y=o$*<0eD6gu(&w%Og9I!wFHL@$OvAHMX$VdD8rGz#WY*A(d&XItb2dbWVR zyA@1>--o_C2B!-$71)puz1PxPWdG@H;e^SS;4c<`FYLq93)n-9k>S|i?sFIU5HvYZy zWGr}d8IT&@w+HxW6l)Ko^F zH;6co3&-+DTDpcWZRsB5fxi=v$(XhA)>leJWOW-P=Y_n5GKzImU(PTz4Q2{PdP2Vs zeK)uX&L2RDxr1?*Ya3elU2IpJ+jekhi0&|MoN^<4yaZ@DUG=CDl z{}Ozs;VX+3PJ`bH{zm9apf^E(3;i{<1dPN&(H88JULf)h`(pWE{iV?22R&HMKU@BC z=n2p(pyf9Lmiuzo;yjt_yg3nhD`c-kp!X#!&T%C@(wg52JD!{-w4kN?N?Gu@^V~i=GFe{|L(2t>aaUh2;03^y%?L7WAXg^`I|<)-rw* z%`F~Gv|_i@89Xj18Z3PPECuVqZx0;@?G?KBBzE2lJ}I?Wj0y*w4gc?=$GZi(7<^r< zvV3=SBdhiki8JVwd#ZaAU%WA?|3X-2C?5b^d(I0|a zL7Btv2j`1D*3Kr>Rf^71YVQn3d>a!Pzl~_K*O=0x-z9A?c;_b;aP1&xGQGqMXc>JK z$W&nAetL7V$Xm2)kjmqYsuoF^IY%K`An*9uU4oK0Oo-nK$nBn#vwzDIchg2$^+qS; zZom~unT^*=4A`C6S{dm{dGl*h!p>KE5V_wHA;*&)i5cdxWE^@22rZJ97Cnm-&s%)8 z>P2E(?!aFlKDU}9^l}A#WTRJcHeM~~bRQ?}y>$65YLfG`-XPvw<20{#b(rh0o$QUF zF9AOVIZLlzg5Chz8>#L|y@$Q)WRS>-o zT!`lN&|Apm%{zT7G;c|m&7se&g@!ZRCJAx^KZrvA0U1spC+VFe-cE3K-L}h?P4E_* zHwyjZDfL%yDo8JwSHN6OGIMIw>pMc0DqjN>ZF>PELU4T@QOzqqq|#$SLk5?=`4}A$^8;mh-EvK&(nG4Sn92 zINXfK1WUoag8Cw`g`n@wv40|89u3^PC!C=6e+zOZ*5|9J{;DwkWykdf+CD|k6a13& z7OBxj^=7U;Wj_2o9C1&vD#^KAdeE*xf{jBw!w5aYc##%GpchihEYW5)Y(|4cTV@(# zWEx{_8u34k5ju^rHVtji+@o-B+&qi@&p@vQIg742v#q|M7x?n6KPij~iLnpy3_WFr zLBAhHh{V8+$ZvyBoG0D|Ik%r+R3`{s z8KH(TYZ%?yjffk-vG5sLnvvzB*|_&^n2|JN%`hkUuY$~D0Uq#qcg9e!y$Th~3rCzh z1J(5G7JBm)dh-eBT*0%vb@uA7p)6P@n=AQ2wOs+}$zmGqBT z+`zlW$Kia7WFyWsZI@@SYCAjpeez6JHI}=zsw=;y(F&~Nepv&);<{MLyJ?p519${Z z9cVcR`<%Rgs($dBDmf(rUtI=L%8qY2QIkh}HUq`}4HCC@e0^n598DM|gpUwBL4z+A z+*y3F1b250?k*{b{L%uE0 zZS(KF{w>$cjaYcz({{?V$w0m_Kt0_OcW^Tszj+8!OBw1tY}$Qxqh*` z>b727rAVnZ%E}@(uTgjDs=NrHaBbJ4kyu_HXnyzn;Z#DOqdt=6?@lZwdeC;#aIBB=No2y${g`Ms<^!AkWM;SQ11kyNY?3^U)!K#e3C4&0#AiRHmFQ8v zH{})O#z(266vEVw=7qo?EEt|j+mIi0P0t4Y74YD@` zt9E_e=k8*JIrc{BN{#cfQ>&7dYWjKP>Zrx#_7#SIcK<$lG<)@Rvcag%$?c=LH*~ft zuNORaVd~YrtJ@@((cqGf-_ZvydJ5bNOfE$0O8bXrZJKwBfi4izN}3~yYw?$CSf2ZF z;A5yDWRh^BUydZfC_Q7rER?`%uoQJW zW^jKXWq^CgeK4l@!IHqzcBZWeU6Lq)i~1DOFkneEOFu(Ds|J3#uDI^F?m9F*#4MbY zH^|+|_Ltwt?3%T#q%&AfX{dc_e-%&R8gV-myQ&1ntG6|1S?JX}{@sX}e%DN&Fq6no zuzg({5W`onQJOKf8kJ(gZ)?+*v$^?%cdV|^sD0AVv~sutmJ*P)4mm_HYU?Yi#BaZ@ zdo<#kE?RzBw-_e<`ud`nI)OgR-OD+b;Imd_+xNKAmKD3mB_wP9`}$4--%e0L1_OG0|cIypa6J7#&#!z^18d|1Z{k_74Rx1OC( z(CDTUX{#yH$a1$eu(HUG>h9pcBpx1vR8Vs0b#+^69Tff!lU|TAfnAQLyCt+@B*0_G zwH-t4pxZkh71febIVB?{%junbEwL-TN)VaT3b<=*!xdb0s5N~hS!=LX)1v1na&bC< z9bt|)$)c~<(b-a$a-`O+k)gltg?<9;N$UFRrtuhz{hYPZ{_}hbR@8ZZ3~Ij%fLVjj z5A?M1rH__LI&Z$`Fyd4Dw2g8v+VTx2ogRl+zOasC&Q1xvTxNQAvsHO_(@j*r?6uzB z>EISy_caJG-sz{R2k%a{G`tlsch-(7_zo1{@>M6;H?H_JcG_LNZoP;dTBKOu`&t$@ z3H3BDzP_6H)ny`Ik!kQPFsbK1FZnOQsd01hy5*GNd$HcuSbcu7J!z(={bvh@o68N zppxzCbC>By#Ix&UhUW9kZXlKhug8qjY~Mn{l5bZsT=jFaN4$-~Oll1CglbhyWhjjj zB&rf~QmzYEogOYl?9&6&8U@t}%wb(3kJ{IAGey&CTt4&4_HkW=dU9=4j~X+J`PPyt z;u}p}9>BJR*T#P7YDynqTegdo3&NrGbX1{CK}N-OyhZEFF_7T}j%#S#6s5rn3#q5{xC%=-^;>~NbTBC| z9(c#&Ag=m*Oy(!hB|0fD0eEMX)mT0#`+@m->~M->1DnlU^zHfc(X_)5(CEKY07ROdx>bU?GYNmwom;E@+IZrA)XVS2u=MOP9s^<_AtLB@~b)!;_ z>|3jTE1sBsYKsmg;&{k_cX z*L%JzB2^P%KTY%de%ewH7F#XaevW3rlu*?7H%{air`iV2WP-=t{3#Z>@7$={yG^U<@7BYAQgvac3)`OajI$2mKGZwHq3v^>>1rlIx3O0aq= zi|X8CQbm}zAev?=9dL{0x1pw_x3glX?3N+Qb%`Z%stR%DAZ}lkX`fft>+LXzbKh1d zME$#_$^`m+=zngp(7c#CPUjpC?vg*YcdpJIYo2osU~g7@q%kf0=%ZXwXKIIKSu2tA zS;}W+o)LJcVw~muee_)~AUPE2dht@P1i;&uq2j76V74@uN+>?@b4ZRj zW?r#vZxJ|vXIt&keo9cXpF@C@O-!>L$x`&D2=X870 zZp^hK8i9iPlWv#M$}8+DnhmcDto_9Km9v>nN+Ble>Y4W$m+3Ac$HC_u`}Oqg!gDr; zuhaJStvBbWLBr?rrK4nWns?|mVgEHIv*7B>D~Mb{U~<~>E?)o5*#&m8>{FcL7d>%y zo0C~GA}C?b_1322+vn`^&ZpxOJrQdDf+whf?7GqdBJai~7F0lUUFqJ*xe4=9zb}w~ zP&0a`#^F1izfgZ#Tyu7rsDCrz7I-1fnth-t85qneaBh0>yW-_TqHEov=aDead!f-F zX_!u~?u!f~z4o{<8uVoxdz|1BwfhNe}M+d!Ob zvn&TGH=>E$qAu=kT}EU7E(;;B6wh!p%TKc*WmOqd<>(vZ ztRGi-8-RI+XekxizCo(0vU#1`%B3jiDF757DE?=N4*j1&a)K9wmG-^p1IG7Q)=yip z&JzT~y!)B|iQuR!=`Ol%l$<&5jWui>-<`G}H*N^A_{?*Ny~r;f&dyKj=|OaSztKRY zoYFI?_lL!t(sZd8hohXz*XZs>0xwGi=q5)ZF2g&RyAw7>b9PuRxmW8*_}Ac;jyc@2VR_>)C>X@ygHl^ zcH$*_Q@==LRNkoyr=AK~@(@QumXrdvg>V0U$ku-w7?a8}RcB3g{Y>?*V@!lLwl>z4vY(X*XDUDV@*;|0X>#x7ct>Qqp0gT@D#(P>=9+%r! z#QLlZ7CirM%JldCp@b~*q`pt4j-^9A6%!VNdALaRm!;StRm4jSb6&)Pn^P%$A;f}P z|JXuAh{tB7LL9!17`15e4jJKuun`YBeI5GiT#prj;FX~@U1jE!I%-6YbTv1%ORS!@ zPi8o#L|dP4${(^$tZ6;IBI~+T0c0;X;mPE-u7V1f%hSHT>>;1V>^Rfjq{`hWwt1M?q*dF_|E@}Fxs59@uFmVgxwM*T#>^OCP>krP9&^@f_Ri2Zr znwUOv4DY=gx~@7+k{1Hv`=gtOk(&qnCk7se;RjtO!IaEN>iw&v<8!m5Rm$xmOKA{* zjP)3Kr_W^AxbExmX2GRW-R}0Kqw=NH0~K#w^@)t*<@X2jfzg;937mMc(HJ@rjQBuW z#t(mtk?n=Thc@dN)aD2d~ZGES8@(XN~f13gOaU zK=@(zi|22YcNV+_7-R5^h9fkc!#&zg( z#4{?cn%ELe1Z1m>2UlZP%@eGurifemyR4Lc<|n-pwX&3&lv@6fnyFfvG=#nk1(a7- zR;H@0rZImg^}cH_WG`zflT(1Sl`$u&p{sodYXjBfAemMW?HP`;N-LRNHHrDSY&9wR zF#1xHB-u$wb{UPD>ia+i*1u8mp;fw3c{xCwH@GR0w(=(wW-0q+1yEBDoHqnZ6_w(Y zh8=vEKjZQC@Il^jG)RAM}D!I>*Se3sPzlxvE3C#(WcJ|@oxjJlR@*Exf&SG_S@*XOgkawfucXf2) z+F-S<5@!*M}Tu2X^1{Qzb5${T@)=(ce3+_UoKm5vTm3C7QP zsWY+WM(GX{3-7X&<>`)26Wyd|k>s^X7;hX$cy~*yReB)8FPY);Vvkc&E?AIml?{jj z8E;h9Am<;;GtQEjEGn9?kHPrC_%pfxw*DCt66=%d%jdN8;wEm^PbUa`>&9`A@VOFZJ*1C)(-?2;ufb4>*bOFp6l zqcF|RUUO^|gFw!opD}n5A+S=|)7mI_9XL zp{HXtsOy^MDZ#QpXgx2dUBw_)7iw7U5873>E({m1=~ zVNudOz9HWJO!A7ca(aI0K26#c$Seu*ZdOrEPAuBBP3v`MwRGx`O;OoFYyD9bYrXTa zRm(1=eb?7hlQgAd*V9wWm&qPVbo9kj2b3Q^tT0!8l>&{zO4Qzzb(J2{Cw{2h~_5ZalDpzNXnt% zS-bOSCmAuTL*A<-@~VPylhY}kx3ZT(cQwjgk2@n{bbNcy^{PE+4a<(MIZ|h$a`RhT z(t4SlYjd&AYUMGPOGX>hdURX$t0d;k_nWUEc|Ul5oyoi0i=hH~nUwlM!E=nHi zpFLkG{L;Ed4EF7>o9p&4f30B8=?m{O9d!JjSep1n#!@}beVKy8(=J#?v zi$L z6(d37%K^#oQ=h%kCvy zCq_~^vX2+SqdIE(?KjR!F3wXXT1^t#rB%h6HpLpSV$Gvs%}2$WV8t47#hO9Inr~C( z#Z%>GQ{{V8<#MR2Hfl z7OLE(D(^Kl4oI{e*sdmM@Y{k60T+z;4(ev*?;O{|#{wO!UP;P=yZURw!KH(l= z;y!+&=Y*rbW>d8Qs9JnhwO~~}z%ErpQMLGFEl*BJj|!F8`FV-_5cvE9Bjx7~&qGiq zW69`%Q>!l1V!eV*T>FlorzB}Y$quills-^{*Lni8f>%t-xeP*BmRweFR6bbNYE`*X zK2eqdmbg()nBxS>jH^W4^XcY=mo*;AG>V-ndhL+Edi}^!G@nDfNop(ZQu9+1D(f!m z=I>RKhhFTcsg1WrB<%^7WT}YHZ)tunfy^rFePVGfBH9nu+ZaEDox=77Hw6y_j|9&I z4+T#Jj|I=W4!Tadj=Ije4!cgd95Py%)-c*)&Z?1)R6*K)#Wa5=X0EO&I%Vw_+i!e* zG|3iAULdcsepTI521nJ`i;o76I-0J^ZyK(z8m<&&f&37@sqE%FkZT_3CKq&*2SU#U zq3403azRmfAh}$STpnmV7c`y+V#)e1{%Z_j{jB?Mtogas8dN-CA+KM z0{vD!h4t^=!nv)}NOfJtYpc_I^}~GiGpe5>POKMqUBkaa2Ka3=xy<@?RRMB{5F*>6 z7ngYES@-MunwC(fi0AxLS~=vzjLS=!a7AQ#xn0(n`t;|xt8<$3np2jCj9uXe?k32D zaNS(}1iwv=Gq}zNb~td0*cq_e(04=Ml=CVQEkr()6SvI*z0la<`NZ25LA>!j`kZno z3F-)R!ZG3R954Cu1i(ASj<|^$cpNY$8#I3TSsTM{e0Ep6gh{~mcC2|qXpCpQz-bGF;R+V<2YNaK}yxy65d}Zxskm?cBW?<5^fmvC}}M z59xXky?5by{Y~;zLGn^auI>BBbnGy$dufB+GcGO1)QR=V;^ZGG>=-F+gg&&>B>`GO z=_gl>dk##wV@LRp3%4jsG7 zLFN({1wx~0Ia5{v4zA;6;j30;E@`{^xV}H<2Fw32u__M&vkFjl_@jjQA-@HZURime zA4t6v!9*vI>K_@YAHALfuLJygyQNvov6sgP37mBuc_w}|sg?4jJ*eCiND$+LU>(!t zj81DT+qB*Opa@5bu>0zoeFxI2?X_1LzaWLihnDe^s0reDURcDVqYW$i_Wgl{f$vVj z9!aI?Uk+Rd;gGcxDK3PqamVB7pt>U5pq}tnz*mJ}mMHDQy02Zttp^tUVs_PSZ-n2c z|BRUvqkc(R{bSx+9<(70y>;W!=E z@c`r{-+V90?`rHiN{{BPdqP>B`S3RJ$N9epkC4eZ!_1-!PP)-IGuD_$WU<>&2qThn zCuiXv&-b)98MAlq==p!;!F|kOue}>NIpkUsy#hfS3NypwUUuYS6{1}Wla!N_%fX-vmKbj@m#MlMc1j1+qs0D(o)62gGjS!2~dE~@G ze!X-*3Ox!vxIgE-7HQGOk2o@JYw=Z0nTk1#e{|H77Rr-3rg0^BNn|e1 zS=hbiXzTD**O;0-41e^@Dm9o&x{he8^Oe$=W;rhVO2ll}IgSLHA`ETIL&5#`TE%pF zoXMBcC9}Wae(dE!dTtM^hS|e}I4$#vni^-Kqh~Mp3b9=@+gE0_&1aWgF?_1KFextv z`U|{2yiuGvJXa^%4vYg2CsWogH_bFc^|PS#|Z|#~7cfZU{Fu1SdFYME~$~h{_dd7j=t(oULx(p_1AIUwDu{nMv?kVJvDc@hU#oa-7``D#M`aSgF44Phql)k z9w8llurKGS?j!uCSvM1&DV+>3ZW#Kx#5s+9b@QCgZsqNQ=W!=G%*?*Ld0=(V_Rh_N zzf%upXP?u&!GAz<6YWLQkpLq&?{J@gT4~?YyX(5?y6U>~y?s4;*;>D}1N&Xrd8Kqr z-k+%Mw=;6cbbkhon%bHztPKhBWgZvva^|RLT&Vv(@4}d+bjfb6bBSv%d5}M0_c~RB zW#?IUB$e2EcqRL8RepGp^()#xu||KFqN4uVm(4(IG7P3kS32G0;2X|J;to_UkU~+z&eFtoMqPH%aH7^EQ2aO zY$CF`A1U+-Rlc)H$>xh2ho_204REqWrH2w2e+1&z_cL03+Y9BL(;dUUDh<*E;3>+~ zN;2lF8;5C%Rt~V&My`Y=8B;gnmJe82(JX{FzLQztA43A~mA$1%2ENsX@r5xNqq^d) z_H!LkxP_7=Qn`ic&8eMy@hZ(&qPbOacN8YhHF1BQXWMK}Ind6Usn?}+%t!BRo1D|vsC%tjU#CX`~9sj&t5?KIv*r?G% zVV2&r9!6vK%LZ>4_Km*#)q^_q_g4MgKrfo*{NEk{&J$+4R6}i}^y0|s;Yp&1OU~FW zjhEG)XCAk6lgoZIKR_N>UdO7pbC&<+wNA?Gmv#2*Sy)W$_4;8i1kbA;ZrvN6_WkaQ z;+=Ow=j~qijGcHl>(VCKXfwf&b>|pcm7GNhp0~XpVA=Ue9Z5x$9UwV;4+e=853k^^ ztx5r(@zr{ltY#FKz~=n}413%|d{}mgfu~I2#sS$$yRzi1HZ_iyZDwde%8w5zVz_n@ zttaie9q;LH?fKqk-X(YEFx`{(Rx!KVbpZ;@r?bv2{oC~p3YI53!MGS7?r!L0myRNi z$p#Y@O6@rwUeL08L@32cyO@~L?Ycrg%}M*u{;#*|wZ@E3XFP1tK6lO+yiaHNTd23| zVa60sXC`cEKJI0yBVGJ@vgR9EbY^wu6L|H@?)%~I?YJ87zFiM8CV#3*qgmHx#Fbfg zPl?z)X)o`mzg-6!qd%ST)kgcc2QK~TYFDx`*;r@fsz0~G)me6LjyOGO=O2*2U0*lm zemc{yP4RK>UYhLkQY1Fn05M|JpOaz_Ex9X%VxP2^^wZt0*KfTy(9<#7=PtiRvU9-H zF-82P4|%NG}Cvk4qBYC-fg^Hd4A>4{O*e1Ty+** zg~@Sja?jCWpYf(4sIOCPeZpbe>89^h9k@7syyJS?<{>rqx_tgfa~Vb&BRtBIeQsFi zNczCB@=u>VrzZuHzKGywa0MIK(C9qtI3I1uwgs*j3XE{n+c_u%H)&$*3^J*%r_MUM zPmtpB_Sqk;JTmD?bXOi9f!n(5{_Or^N$kyuRY=}$sH&sS0MhqL(_DQk8*{PLi-?1g z6lo2qpf0LJSx9?MxB`kk&V)N?bEo4=jt*Ex(Sg#ebv*b;L#}FFR;Bk&X|7&TM+ImsydqPZ<qpqNOl?{1ZKF<=@ayr4k|w$@y68;srZix610vj2l`6=lQ_NN8U{8#=@j16|mz8w-UPym~<@9 zX5wyFqaQskTk3$@5pR+_uA&NQ;DYh#q~At*LM(BZQK$Sms^aD;#r)LB6wLuIr%`Kg$kl2+>eN?N1tvGET_hQ?xA zhH%vS-i?ZrwD|WSN|$DDfLOZz*4!|;^YZdGp~gYgj9PDqHsbz^!P5edHL>R{trw1E zN&9Tp^Zm$05*^Xg56qEh>u##5m!ZG>MbF2tuHfG8!wutc4&VRmF@bq+hdKvL3{l;@ zec0F)VYNQz`#v$sMqTVI%2LPd`&W^(st?kFC0 z5iJHvSCXfCa255NoSeey@t7?kvx+19QM)YQR0TXDr z3TL&-Iu~kN@OjZYZ*Y$u1!(k6*D9wK6otoazA7*m@UBQA)5P?>a;XWWHa|!^I0h__j zbWC+_IvSd>XG!n+Y|GlW3ER8utp@tdw){DI3ssiQ%}7g!xAadnFInLlh-#i{I#uk6YoRT?jyl^DLoZl43|&9G zlkSTzI=3W-SVA`l{CHoR6|)r~ia_R8!MsUP8BwqA1~i(;p4cN)bCMPrQ$j|fz2UzD zk>8;oJbo>@E$S^lJq$gRJ>>2!?vpb%@thc1T-T_$2eS6w2gSB#&?)W(R_CKWdvlAK zBhh}v9Y^y?xU*MX?HNSkGA)Kiu5}ETG$-Krneb$hEgt3F2m#+kf&J_M8hpr2yDz+ciqO8_|^p^~w207?WC94Kw95i!jQT3-MRBI*GZXt8R5a$$8us8#Gdpd7&j9ZDDr zgs;OhVS=u}Eq|)}V)E19=EL%Tb#%g9fi@qPi2*voP5w5>v6TQFk*1GOu2@^Z>IV~k zs9WqQd>w)b5;Pia8MzMI#N7V`ei@;TM))@11aX-N@FaZu>jX9S1@I(tiv)#_MF1du z*a1LAVguowKJ9#l=E3ozIep!6@F#}n{oq6;934Q6$V&(q5{~{wj2gQQ7!rv_f+ELa z186?%P(h_)6X2atc5t8&I9_xo!W|d?On6=dr*Fa&0hx%rM1XzaiC>whu~&e7kqIOy zVk{~E|HBRi^j&5M-U)dJ3t9x%isnSH+ufOkUNL4hX0wW2uT?pUcC7YH^g z<*fXAoLlP|Ect4!7dTD@5(fKUL!}+MGmI--(YeIOKn~vFwF|%{S!Mh}X32Fp2$C{p zp}zkd5(HCONSM%{6VCE809}MIfD3vv9s3P_2B(ltau&|= z;|yA%mOm$wCB}?^u(p2#oaGk)lZbXe16r&)pi)>HQPMhg0Z@rh`0iyD%LPA!SI8u} z3TKHlgHfpG-+*L^IU^{{=kEe{_!&SV!WZCz7Ap_P66QmcG>@GCWFZuyO5(>d!^i*k zZa4rvk+uLA^jJHLhPA6G)I zIA(!3CX&@P>;H-l|NH*`S@e%D))jF4!2|>a$KJr#!J8mJgW(?FcaUPqKI}-ul8N}D z#qtB(h0jc=i`58o{#QpPcq3e*L%HFd5OzL7qu?I!c64Ix5q9`v&xN~CV>1BUB6c64 zOtCtEW?{yWEFjnObp#^n!G%P#af}#6YlM~bRvy0fI0(V1(SKj)w z;L3Ps>$-P@;HKLJ)g`SE?(Tv!Vp;F$#p7H&pNhhf0wgim*Xr6A5KQ{He+o6=D_HdN zcl%Gq2VX?cIw?Z)%>QG%j()Gi>YtJc5X@OM$zvIbzNRwNJNs;g(=~o*MBJ(Mq?h8P zLPxJK4`HJgi&?0cHxOSv1Y{L6xJ3AdjZ0Sq*t6Z~S;oQO*DQX=% z?6_MOKG>amEEwCB+?%HjTax8JCNsaVQ+NRgoonPb_OmNLJa84U1CFj-cUO_jWqZz<;fySur5-cu$ zVR=-QOZ3XUUvrhlEc*$gWyWgnet+1bP`vJNgUWdIG&lmf!31{7;H~_mC-;rl=z~CW zDswq&=9X;ii2mwdb4U4HQXFq0y2ynoUvP~Th?a-|o?_%p*i%I5X-A*N-EuvRMa<}* zdL}cy5aXzn5e|nA1xoPoT*az|A3xp#RwGFx`l0Pc#{B}b1I4Q@Iyhg{5U7I0%J>()m4 zSperZ)AC_MMKTj}J1WiD?!rabqPZqn%*#;D+oPrghv}T$!ZhZ?`@tP{`@o|2U=%%0 z1I6T&7xtkH>xwfc`v|T~mj5(;Rp-Fz!B=%EAAeKWxsmv8xVhA+jaqLi&QqqC*35CL zLRhv3Ov216|AMi{y@NuIcr0Fj&ZDsu&ofmLMM3+7aBL8R((mYH8aa5Y7W~}<&`-y^jIK{&f+dG zti7f(axtfZeTYrdHb}iZlH0Q+=B_K$z%tW!mBCVq2`x2jZ#%kHp(TKTDg%{8->{`dF*Hn8IIK>u-LO%GPvr)~$^J z)^R?%euFwlt!A<{(GKt6%l&s9r+gsTMwL(^-XCn9?8)H|+(@64X#Cn~O2ouL>XHc3 z&?;&D*zf$IwRnQKGl0d2So)v)kEaL9f-9@5^l;h@^PNb|(G*97sQs1YSI z@iaMRJf}G5fH*TsD-V=9Qdf7!80Mf93{0}NppVolO*+)+mul59qy&mxX$pIcS)-Atx|NzP*W0v8@h)QCwDu)4h{343;?dnF zKc+J9LDr4%Mi6>P*fZ=mQ~pY_f!6-T4ZG^1w&uH$iqXSFW;H`b^lu-75a7%7EG=qW zwa(!}Ta;b->fvo$;8`jE;Y3@6{EVI}_j=arllk`7%1h7l$VRfTXQftp7c5}lwa)Y$7vPkTe{7jkieBSkzb8m7j`M7oWmNTTv z=Vr#ODBt>9%EX`^!!kQ_%=}S0`E5P=%<>FK;hdca+kEon5^A?!finvRRViducpbRE zWL`@+@4uxHXcgboB(a-;(ppiojPEor2<|{8dndc!%Lj<#qNW2SpPXellO5kum!*d- z=EW~9hHWRk{T#-17MA`w7QED;8)fwTUwy(nST{*FbpLSS=UA-9ez;K`i(0X^$=^|9 z=^6c-#F~-pkd65N7i;~x&+11F1q5TDG$@WFs_{AkyRFe>y-fMqx*3e8!s${~R^PwhT_a2bk6Jm(jNBZlX@E7ft=LC5vp{B%8p)dOv2-OSYR^SA2DWWFDkfqNT(F^gm ztd?tJ^bljUZ|QzS%e$7@2DJ28gI;%ULAmr+b~d)1r@M+InBkggQAhREg+4j9^p2Vx zBpgZfAuujx`=J^s8HAT;6IDs8qePbvQcbj>p`%I!CQ?0Tr^)YLyTP1cLa;k;-|U!( zv-1NL-S3H^h1?U@#gX8*HF0s!iv6YAz3q#U&4Jb@(D(` zr=EeE60=%vO~huz-t)*KX8ovFh{K87m#fH#wP|dwBGO|-Ve|PU! zcOmvf2irRK=fnFJ_lE7cU7(=@g6?Ob#Fv&m<2dq&{d4GiKASPbF{Sb&*3r>IkTGYsZmM?U_V%_|4wW)X>ph?1LE!_l_b zx2`w+&b{YI_S}-=rg5{`3Oz5#jI8S3JKLRLeme=ZtE_Q}TM4VPJN^NR3$JLo93*Lz zYIal#__Dpi2R`q_`*2X>UpuYc*N2~SsoK~fK-)&DUmEn(%eOOvofX`{X6{KDZGlKl zoQ#j9Uq#&5s$c$_ltQ~$ajbDCg_D!T;(8Kv{;i9@6W?oIyw{YojU#I@MuIp9dnI?} zOTr>MUy38~?N;(rzWf-?`pc?MdSlq}>3Y*pdvj<6v&CF{x6+!Z<46@jM6eB;yULiN z3vBJ}m2Yt+p*DF$c$-+?X`l5_UhRoQlmSq+p8a=9pW>$*B-5f{xM_s}fcp{Ys?;B2 z_k;Ow^v?(-s%Sxx4(;R1Z!GT>NS_L#gKG_>oc*DhQ+R{7N? z$b%$5aZYoYTCP;)2?rN*`M;v_aPjCYhChNrdyW;XCUm%i?MiCNcfPsa6+W4`2DYiq zhn`sbKKBR03{GoW_BQe0=nQkbOWC$!(R6K~H#ZRk8fxjgzEO0HgqDGdjOkbG2Mb?Q z(HLu|YC{v+@)(ZIBHfKNsC>=`M8;_wjJ90%luua3@}S>gKz8O zzW(&_8>WMJXt%WLJ&LyNx~m%zY|rzf#MmYL#be-=YUVVj;iS!;gntJuCz7n+E#_Bp z*(CJJ$RVpEt1^pw&qsLu70t*JOnst)zlUK%9#+4~nvzqvbCCt%fdW3SaDPIcDaUQ+ z1FELJ*#bLqHyg*(*0B7qG~iY~06q`^K46c%Qo;q)qKUJA?LYI!_!u*=3CH+Hbh8Qf z6BQibKMjCG-^TaNoNKu!-18be@{w}Af3+mMcM|(ID{{6x&NOZvC@$@U%P6B&sF+Yt za!OQ3y^zph=lG4wIwGv=wPN|Su6%)-2IWBPF0oM+c-m1_Zq=lbydg!pxvSUYfwb?z zanP&>q?f4peO_-tZM%|;lc+=CwfS%_HCR5?J1iWhY+b!}H_g3x((G;HJnZ5tEd*R@ z@uC7thQ{H3{!_$*$qyXH>^?hJbUU_HJ6PsAA5upk`e^8k@foVG@hl|hLKjt zEOZ`OW$hO&8z$*v4b9BI;Qs9|_0gBVPKgA6gT7u~-FnQ$d2SlkF|u+)F8Xy&@@unthJNZO$3+;7`JlQNGog>IH zHXt&qwr++d^S!|abtCNQ6EU$gksRYcbaBpNbBg6WVE<}K~_cJ(bDBt0~F zb~c7kDttW(h>$^qE}w`B;U^9EBRvG0m$~GV#`~J#bz*CGIe3u8rv~Mudz>ON3v9Hn zJb^!Bu3VP3!~QdG%V#G#D|1b$ymKHLJnl^EaiF8wDe%-kQ)#C19Et<&R~C=!G~T#6 zmAhj{{B}wpyCid6=vEuq#qhh0GUWe5u>7&YI39ldxfIL=hw-W@Qf(0b8=0Y2?bCl> ze{&2|}5$oWHeQUu6W#4Hl!|7kq^*(b0M+ zC(s>#|Nb>ffE_wbrWs6M}NXx1l0beI5O2cbq|dI2hkC1wlgT zhcKY}K@1(v}6NxZw@zUgCWM7Bv+=s_g8_&9$PR zN8WPZU44op#WR&L7Nk5q;}aU}XtF9VK*PV<>x;;Ivck}5mn|VO@6Jif^vD9_e z^6t`NSL;gR%aKTKf6gEUcuS91lZxPz&~R2+^GnNVz;H9EFQr^YYG>c#uGy7N9DQfd zgJj}h6U7g=G5Z^MEqr%oJ!7)->*hHr&9jc=1}L-Bfdz$s4_?MDu?F&}a? zMx7sy3OhF_jntkRHavHv`lXDF6N+=a?8}ylab$hcf*}Y0<@kRx@v1J)P?Z@(s0#B? zjkje*kz);2uNx~C%vxUdwvJTZbm}#=*Jl5jMeV(+YyC@zyHe7cxPW<%=f}K0NT#dw zTp`E3B{35J8drkkY}f0ML&lEH-tXHr*CliQ<8r_eLs(yH(Hg1+Vqaa)!)yG@UL!Fn zUKeTbZ|QBeUJo@76Yl1Z8Z{PZ>c()pb5Gyw|3)Diq$v#6W#wwSAY{yC|8k*3oXMIi zIFuV+*HYf?=s$rxU;g&z$rhHi_4xeb#ALa_a89C!XW2Te^49>K=FJ#>wL5`}$gQWA zfUT5G*_YSI{BIldtfl@0ADI*CZffT=D%vv{$Z zgBJ``Z)D~i@|W6;L`7gs1Vei}lV+8=3T~N^?A;-E#xi!j)$V;0dVtjtQ@Up`w){^472hv*Pv8Gyn zXY0CrmYpo=MRXtrTw!iDB)twwek?5jTAh|(B?NR@=^A1p$6K_|c6y;9=~^-9a)><* z}8+Ug$9^BpCU4y$j!QI`hIXUOvzVCI9_osWT+H1}F=B!y&-?BZ%s;bFRNwPa9 zx5V7y%Kdy|W2A02)YVVthg>l0yvGhn;n3xu8cS#iaFtHCtmoTJ=Q&Knw8_!yLmmtV z$0Kfh5LGL&F7<&$U%Zdduf!V<_jE{EW-=-+5iyOmHhklej>Ct5&v9^z>XSc-P%47S zY+~(7*oQ>l)bRtjwUcf6y|VDle+zp&cX#h1aodZ+lUN#4SQ$O}LV`O6cXpwWJTk5@ zrME`2IcrErKrN6V$SYR{WGQlG;;X;AJnGU+z|5!%GF*Tk)E4TR#slR zXG>?$i3pAj8ASi^EE1-AhGaGp7w@Wnsj>q+DcvENy|vUDF?KPMRKEkBrIL@gbEi$0 zinb${@Eh!9KqmkOvey)>n{62;*5z~>O&r7s9xb|ELW^d%d%GLc65@3h*~kW&A65pC zxf++CjJ=B%Tx*Tx4o7!}jL#0C$?F|SSX!oPhq6I%%3(1-h&$5QK?pG_{pfaq^uMFG zaj;^blJhu4dx0s8}wKizP}!-a^>#?k=4zR~2IHX*kF=XM;tRK`~d>%Y?% z!f025@<=+-L{j|(vOXkQzG<~R9|2>&qzr^Dw2auE+}-c^8n~#O%K3rcXAxCV=oyuK zsKI)6Bm#pIq)b%xo_hH`keTzsyf)Y_Np|vN*$(NhqSfW+0GWz4#1Mjn3k|agpCvd@ zDs9OJ4NnYX<0~vkk-3Yw#Pe$nj4;aOlA+owxwKXcb}{2n90nBoe30dvDMaKTM9xa* zcE-+FPLv;Xv`Ucv()+eylt9wJJ5LJfv3OR^4$;E?)_yP1Q@_PFjyTle2veNg;v?%) zUEhBv1vRz5HQHXbiy&d3DK(Bwqukw0PC|ym*e1aVRHovNp0CF?nwgyY<^(B-5qjO6 zOcA$8$&0aadE>Thhdaf~uGmj1#?^2=byFKK)`Y4MI+^@K;KN>XY~Ky$R~~CmKi^wb z8>WPyo?=83uB3Kau2dU3X{(%@e&2v-5rOLT%J5)?-&MHzGU0S!@*E77H?OsHBDkBV z=>%Qm*j`eV9?NYfsJ6Q*YZux`Nxun}ujeG$_V95{XiI)p1b&$$=U`^4t*3L-9n9%Q z`^YJE8x*-vWuN%LbkpR!(GZ^s#PcJ5FgimMK9UZ0^uU+1QvP2lURFQ4%k_cHW(E${ z-uW0RcFP^YhU~-xg6e(N3XQvL?-OFvUNCq2(!4fVm{bt((Yn&xm!Zs?5mpY1n2s=1 z_YW_K*zYHH7xql5He5muv-7y`o|MvuR>nZ#H`DVc`(A~0%QxQ!FMGm4WH$4QMgg2| z7RDU0ZtQEjo|PcOd;6{GXwb-RWlTA6o<~wK2NEWZZCC;XmD3=n<^L?b_gQ#vg}~&# zeun3&Vu94-^75&KR`sGD@4A_=wcGOR__9_(N{&qmR(?C)-Im|D)5z;Bt3M;~c@sR+C@nu``~+zX@Q)r)|eWr&A{As`Rft9nm%?9v9w) zXjO(Uv{x#M#{B{09#tg^N2>)r5v1sX%vs+x(^XUv2G?kOp1*uP+FXH$HL^6cv$r++ z0sJFc=>y%wRg;j3iRmAl z@!gb#p8mi8-b*lY{IUDX3B$k2GQIoz+Y8gX7dA#lLRMC`KgW0Z-IAH{PsM*#PRPX0 z@fX6T`NxKXnfY(KcMU58!@Gv%-Pd0pSXfy9n-`Y%n*a94%KlI5-ffuQJ^W?+*YU6R z|7rDmp7Bpd+5WQpJ4eX=m-b!$m&LzJv2*-g@*mxw+W+bMyVv(NF|faP;N7`4p*G=v z;g;!tbNkNcd*=V#-g$XP|6%rz{{O=3zsvn)_s;sCGJo&s|FH2NeEzZhi^+f3{FDDn z|KGTL$Nw)p{)7JacK(Z#|AEc-lK;<4{ulC?-#z|wVg5N;|3%62A4*2n|3*9Ozm(kE zbRuRJ_C~gJA{IaFjf9O1tPG9lq>L<0>`e*T*qNCb|H&{AGO#f*voZ4W!o&XS9&t`R z_JDF%QeJxHxRaqvO8OeZD!v;iE=ZXBQx1h6ODv~>KG9pyRbE0W3nnBx^CQ}PdEx$2 zl@#R60`9GjiqlDHc}dBFiuQNHx4l&-8R*i-wU_pl@tddJRPH;MF}ER}Jsu+jKBg#} zzC>I^{1j~sjy(ORCe5LwnYN&++=d~txUpf}!^Wg4{41=j$OP$R9b0wDrnD-mY3!Iw zDv9Btx99!&pSZe4Qm>`@x1~d7Lj7W4+A$;dx2GXPow;^>QXc-|TULe^mzC;qE)Z)S zH(Z!Yk36dyiXFA}Kq)aAT|Ge(w?kF?Z@-4`T1V7QoWc%bQkIevJfBWJ;~J2p8;zvS zXf03nMJFMiMSk}%xr&~Z&XdIJ|F$W0Ot13ScCAnLnQb9}D!dPBG> z(2xZ8JwTq_95Ad&Ob_>qPmI~A66w=guD!D*JF0$Q-A=wvIE0%t{8sf$yiCD>8iVI5 z9&KNp>lP{Q;pr&(r7fWfJ1(T_IV=xN@k^MhL=xzL(3-qU#p=|0ZlY=`}q*CajqXSYYHvnPj#jWuL@617pfl_0VEGpGYI$AfoKSLo+! z580dQ;f2*=w3mY}F%imNX`_Q6cerVX{0gwp{x;bDtl`TY4SdaeLV}6FYGlcL)#&j)l<>ps4u8}UzjY96F0Lbb3}G`c0UgfjfmaBUy}7Sry{h>>a$|QyQWdw zu$GRf>g0T4GWTtkTH7Av04%A(37vcpl9ux+dLCdD$P=N;$5Wq*jFuLSyH*tU@)AE) z>Z`Kh=#FK~KyfdhDY(9buq)1Nh<_}OTj!M?pQxo(lw61slN5r_qt41xg1N-WqgHFr z&TA>nM?1MuqakgN7LgpIpEIZu)X4HxZ?7jvXGu2~9QuYkO~MeP?E#bVAY0bw9u> z=5h9TvJvT;2DWDfVd-ilFC~n&d8z~nTfd}!lb|XcL)Cw6JwD7-%Gu@qYWw>mi%HwS zL50qiq+&sFDcN&PHYrhKyUZXq*4Eo_&(DR!Li$-;#KQK$1r zXR*_mWr{Wl$U-(~Hc*N=v+=)fheZzp;!9O%l8(hoWOB}#v@iXia>t>QA!~R1vpQt2 z(=(27;#9bpg(=Oc@h5(f;LHYbVOgH^KT#I7Lw8`YNFCbCV5r+dI?`I8Bu`2mQj<{# zuxb`vvOE@hs0qC;DjzN=>6%}0l})h$$9%s5>$^(~SCJ`)=(3f5<`HRr%|$8wb!icq zs6wNimG=}A6FHPlTpec_W2Ir#u+&KRn^3XRkKR;hH+E_C`y@#v%dk!J!;ra0h$7`# z`N@f{@#dI+NtluNJAZcM^tnuqmHXA}l;d^C6`a1mU#8w(6zKT;LiXB*MKFlz5{$RWzw#fv?B0U7*`egHQ8ALr}{dxa(nPT`1qXc$W9 zSJoOK)l0ck%kyj%-%dEj+Ygzk>$bchlm+Zq$2>jylwwQdiX2PRiRU3rzkPzSd~_XP!oK;s0P?ZPX?yXKmAnJ&FNg`RM8F2 zlQAjk6^a+Z3vM0}fya<#k16VoW-4`*oJb9YyvPBVmp7B%VD}vY4qM}w&}hA#xcpSE zDeSzdy3yD14W;Fud^4o?i#4u))FpAWS(IC$%V5+^YeJTzpsQp+b%LqX zJvc-va8(kZIKfh+Y)Oy|5vM=9IEa-f9J900nBc5(tHe42D4-x&sN-AB(PsK`;zezZA*9p8_LW3^XYi zhN7Q~MB-0@mdy{^5Zs1~A{Q=4;t>3dN~{UW68wxzED8E0Xb2lcB;1U|O9TlMMdnZJ zuL@EkQt%hU=pqr0MhX`E3XM!BoQh;gq#po6Cf0yXK$0QC6BLH|f!RgouM8cEWK1L_ zh!sE&orNh#?oaLi^%JIV0K^&U=1(N30CvJ2M8RXsO*f);)J-cvcd8yXL3f%S-GF-u z5M98%AZR?`UJB$P_|7i5;PZD-WWc=`h!5@}3&{&*6P#!jb2C!#7=4q6Xcc`EpJ)|h zlZI#&Z4;j8m9Xb5z*!qK?|+|$Q~`StfT4tJ4?G!AZq$ zUC;t^)0T)9byIfm*l$$pp?O z9x26tfubi#5M+*sIZr@a&ZDK}*4TJ!ZF91*xzycT7ZmzGD^_X!8{e#L-ZnO0yL(@P zLZ1*Z@4nEU@@f6{YW)AH_;-tdL7~eCm<{-}mRwrD9UB`@tZkMzHtV~4fk6q!3J{i~ zSu+-!A2$L4s>cULH#z@lS$s)`w+eu)_ zg3KJ-NwCF)-w<8$eTD?n4>A?9QL@Ej*`f{~g309CE`!eY35i{XnBlDJpgA6h2N4C`6V)ZcK$R7t$2@A zf>eS?g6tBBG$7j87bO@)P`rl!LfFR894m>G>bRc?!Z06q^PhL+2hZU=U{~|a)%xgFHxp+ zlWwthw3A$h?kW2;*=)h9nZ#b1GiSj%h`nFnTxrnwzFc!4U$Te1iSFk83n1I;z=OqDQb4J)5@`|KA;^c~O zo6;q%#EQ5*)TCv$c2*-yrW}POQDG2;m_64dP`CkQMX)wze^(CgJ(x6Voh`{Ee5@1C zq=WE0%1it{PIgJKBa-&_aBcB2ErHs!OIq^guziJW$-=JQ*k;haU^X1ZnLA*IO?Xd! zl{MQgc#LRCqBcOnGGB>pa#7d>8A!Z@WjpUX_PObZ-vkK=-IT&#fSQJ33&npVWQo`J zJoD2HZ67V$LCJ$=mMh6rdSK;)hV-l|a@ki6ftl|!;xhu$4T?80pe4am*9lvI1$La4 zM6Lh6a5gGPqeur%p6RAExR?!vMQ+eFn=@M@8z;M0IMj5aUvWHwL_^F^hhJKCI`sW| z%sU+`z=SA_a}kacwhP|%*MG@e%u>67uMw;|yiCUqS^1ER95VV*x`22Zlpm;XL$|I- z!ID(y8@7|RpvZ5OwIH22C3jqu87+70I*}`9&tXa&m0=1tc`wJzyY|2ki-T#a?AM19 z4%0M~CoiRhW~=Ni5~QV^DNi&HHX$~IE1-mB3lEMiH@HERz*+hHQ*tH6MYu_cCuo&E zj3NaGSAy9eXP6jADpoue*|tbWg8WiG#jkLb86cIV(kfh}L>EAjG$0f!9E)X3fG7dY zf$6g;G}fERPRu4xE&o}bS=m}1f*c!PSYFtX7&op~K^zWyRG5sIB+5tPuqZboj4?{M zCpfWVTz*g4Wo#8?}0oIIMr<*73@bpg| zuK=3HT6%5$?xZ-n-2%0?S2{ym3!vtpWR{zFtpR%4>#=D^U~>+?o5yM_mzrbdPqglK zIlXFsRkK!-SznH^_{{pm`6zR#LY_vkR+Ak_y)|}*q-lTDR<%$yNqBa^TwCmwY;pF) zOi)Xxkvxb7rup3R_mACvFwaV(rsd?VG~K)K*$Tn?nq<7hYCGG^>_Tq2 zz+W|nCe_i@T(bxxQX;a6L9#=4_dI7V?dSW6RNiqQrDbaRUkD>B-KP z*~eneL;{!OpRrX=L0&|!EBE7D4h*mNL`^%?W7q{fgO&~!HcY#5=GMJAAvOf$mE0FX|IPv zkDdr71^La}HuEzDgoL+vr*J2t)Q3Ls{tsK;Rh?LwSQKC);5pt=ozR&`6dwY?ANUD= z!fk)(_O{TYp#L-g1__?T5BU?}-dlhlC-Z|2A-dSd=#Pj$KYay*;pawzYV=Vfgakoq zd81l?koU%~{HW3imiQ4>@6%^*f(hy4Zbiti-r!*@)(iJU>x9-H?*BZ9+@YTTc@EuE zoui+Voipu<*6G&S(#h4i+^N}_(uv#o z#d{6B0=(j52e=M|&PN?c9Wb3wIv>)Z(!tXq(m$p{rh}z_O8-CrMF4*LArdU|10p!$ zM?^5h4|m{qAMe2KJ~)B5b!vB}b>eqg>R}>*xq1^?b6MkBQ(41RqBdeT!Zac`erzOY zL})ofX_)sdai1FC_X9 z(!6@!r#c&xS0dCC*pMs_jhP@;v#H}Re{i5&{#9KR$kVIyrur&zpEdiKH$t}7 z`$@@nJoMy!QIrI-27*<6UOQ=KN1FM&Mk2X~F8tJ!ASNZx)Bgp0lH@H8hEPb_-2>MGXW| zOM%V=Pw;cy5XXX!$St3aHf`(Qzu@;Kzc4zIw!oT;jJ6=fmoVq;uJ#j{I8`n$oE*!H zCfuCkxCr0piC_J|b+5!A`AwhMzugh{vdRfzpxQt8zE1YH1=%lh2HzJV0fX=q;$;)u zg=M8&L#WI2kW)dT!bNa(7hmcTu7}3e1NiC@&qsDNB$P!py(Dyd$~zHSab#ypikl&m zXOxo(OgpMOjuB{HG#zPL5bSLH-g~s;x{tdMzOc+zlXi^J)9so`+#bGCJgW8crV?qn z*U^CN%+RSyXY|$1h0k~my*}uX#;L|_p-qhlu`=wu~tfLo6bkln4j#7lVIDCwL%h@2**2CL(Md&8~_Ayi+6?=LOoX^T6 z6zPUNj&nP~CS+h_AY}0~YYff%tN+60OMl-v*Qs?ve6npA;(CsjJ}fObS)WVrT2{=l z6Dg_m`3lQarLv>+!45|YIab4FGS|jB7gWYL*Zo-g{${HO_t{C?*|CG?Lu(0ph4op9 zThN}JYO6JS&c2+h8J#>r|$hakhouZMs;PrmC)GxA1WwjDTxm!Shkk?ByXRe z?_0SgEd>P?tky(ZQr#i%L$xF5mswsN6Qs8y9o3cNwO(hgH&|0hKlakd1U>Q#ghJ#| z!%*lqLA^o#@IZV(jnX^F*;PZ`JaK{Pwu4_S}xJSyD`PUcBKgt(2tFYVDp_YWCvlOw~BEB*TC zk-~k^xoRDYsplR_etT{nOevLCU~||sv~^eQ0!bQs(-Q_;AT2Dd!=-3MsRK{jBgCqM zgR0-NFXw?%dMbL;(O2~>z)}J-mj><@8-0mncc6yEA~s?=qm$%SB6tS8Rjb-d{mQJz z(@prk5OT=^&qx{*dsf2T!>He}OMGgo00}i{qnOjT8r{iB=0M;e0z@q%1bLlKrgy1eHvyco4ias?v%SH zi#J(XR#K~mN=8$(I}-3fNm77#w{4iqQ9{!vyYevojG4~lX)K^0hU^zJDnC~d7{5!3 zpFGPqU^1n^IGjQrk*KS(UYo!3RKqJH5xaU3J}kp+uc@D|`%-Tty~gXpb!wEv{=)jy zhT3OaQlPft(t9{Y<;Xb;A9T+cAYbeB>s((&Mr*nufXh8)v!8v1BN^*D6?? zssRJ>c0W6?_$`U#$010kd>NfZh!4NKdnr#@5chiaoR@~6kw-z| ztp9!(id_Hhmo)425cZXc#eUII>s?q#HOe5Mwj^cBl3Pv1<+!oA?saM!H!_$&gHdY* zK4CM^#qXI}MeOCYK8kx9nYSNrgUGLA;l%p#AmUtLZ+~a)At#9s(j*{^#RxRIJVhW&b>j>n>*5tFzZVuy7J=$F<|OU;$i;{I{}n>vStl9hGP zjGd~4n99R{{)Z&ZfK)~_m4{x1xs9ng(Ilz>eIzO1$_cb2*gm-*`t2r0TbydCh)yr!DQCvU4Nqo(9t*WEAo- ze$1IM2>xBMMJLXgvufzjs2yS0i&@~LV1nw=e(#@^)Smbr&nze6NXL;>82bjYjfIG6 zXCi#RUgo4FR!^w#+_*Qzo=ixIJEk%3O!GC~6WOkYi24x0BhVzU1`pru>7n}to6;ok z1=H^OX5BOA@gfxuXm1m6BrU(&LtWt{2FA-0=-j3rY`khzU36v1G%kj&X>a#iz!BNYHP$j_wgg;7SYXO zDn{GtVI{tt0wlRw8H}HzLNy9ad=K?Cu;%wy?ff$ool8R%cB=KfJy=Lr%4hv8`FQq* z+F$Eokr6W1SerCeW*6)Rqt6rhBo+@zmm(WvufB3YfnUt*IG-LDIHuq(TOK37`W+DE zm)BS)hZ}w8;RrsgfWE(^`Nps|pmQ+7WxG{o3y3dP;L^f>jPUuA@C2Ls1R3#*G>DG8 znr`=um&5?ppl3(ebADgSzTY`J?2BCu$=F6%DC1QFI~ymeo&%Pm!O&KmaKQ%U1G+&i z7lUgtX`gZY>iiaT4^d&lGt^m(O?a#WB>r{I%k6yhZ__S^bE-jtv~Bu*AZ^QS#a_u9 z6LH2v326D1N1pK+)#il`f9L)U+-BKJ@A z$oTuPt5SIIV-eQ5V`y_!JKThz_b)D^irq_HCU*%9)fQL2mGuk_4ZxH+@2v14O5C5cEOMdK2CbRAjT>nD;t@Xp? zWClBQsbs%6^1eiP(omPl4Xe@Gl2wy}U{l~Unal-rg5m+6*s`x-xpC#HKi$MMqm=b(+=GrcX(T7dP(}@a8#=UpMn$(O07ZP0J#T_SD~stq;&xPl)%^An zD-8rhilv5+$t-lWfR48c&x&kC$s&@|;|#=0?6&WdkL}dlNY>#AzjEK|VDcYUaSAxh}vcqV`78mwhXTKGWxLjknp0>DF5F5&Y6%1kv{lJRlQ9}6FE<-^djP6>^%N?Wy|cT{ z#17n>=kp;m_=>71(>zf4V^Z8|QCp3GX7Hh=%y9~teDUVL9hcnvpnjg=jZr!)`{OO#+!f@T-sb~tdi6R0`vr&CteX^8fEWg1sHXWSrk^rN6Yf~(d;v<@Bk`H;YL#<)`1 zO*Dr!$U#GUql^)wvynXTs2*`3>t#CgVf#E?4f_>RdRVqKVG6M5I--}b+a37IGMBm2 zU`AzlZQ+SYBI-oa$Ni}7!{pi9(hiA za=)`d9v)(!P=DE6n+(77swz6Yuoj_V8(eShX&Lyc{Iq$VJ}~W?bNZ3Axs4SUpM!xDBzqvLgSWF=fYG12N~w==yQ>IWQ6Ft?PJPp#KzPC7EKMltK9NQz(PUh&_OEq>F)0TCMGwD%P&Pg60 z;Tu{QYZMh$99832%K8L`DfGv!jV`o9_ZIh>cg@j*+6U6o&+;qH~*@hq*ZQ;sx`oR__m$$xPo!?a^fA~a3 zwq~4WBALZ(uC~QFIY)b4RzqhX*a%Lm2yQ8EXF4t}IVwR!9!=72$Jpc?qF7~-gO)Kj znu=#QP0#A(v{xN#agC)jJ)J|9#=fbzbZ%tcA}U_{BxE7_Xv`)r@KJKPp=2euuAD&w z{ITU8qq&rm%yuRst=?H(rEfF#R#zfLQIMwBx$C>Z&DZg?v^|mAyz&`)mT}+fu;UW2 zW&%29^1$4@amlPJ^4x9Xy@ob67*d&1)cMDlfnQ^q_9$fEk@36UZfI6Jb6?#NFtSg0 zc9*inP+W4MD%iY~V&gl`U9X(>Gk4zB-;c+II~A>~&kPIz&$NyA{Gsq`@RFCu z$Vf|MvMvp7)@wp{?rEzs5NYKmc$3Wb^VaKr$z_CjLIa%3(@!=ZJg4G1-8d)dme!Sl z<;d3V0UOLa)QTauLhV)OO9a9*;C5oqOD@$F;BB^gu9atiE3wt-CrQ*3Q^ioqBJCOc zHoo9$)pp|8OVI4AKC7hha5_)N#@VduD01|oA?sen9^G1DLRg?;z+r}Z^a$ihsT|tj zO*Du8(OlWC*r3Hr>-kj|FjqSFCU*duG8#vtgkG!<6e%%d8x@U)T~4ednyVq2`#q#K z?)>i7zk$59Fc1D~sC;!IJfxpn_fnlXTcb4OAX<6;1n~hiGVlfs=W}##V-#PgaL5Fe6zG+m`?ZVW zdlF)i*M^Q2@|PoCq{kWG)X$SHo-&WbQL#~*DsL}$xB;i92TUi~TO-&`%d_%bT3NR) zs7xXa=W)W32NauKs+`7gSjZJSuq%^_UZwlA&9E=A+uMWLXJH3-%e@m&CQ@}J27unt|`&rrtE@x-du7MfCAd1QFzmeJ%ywvw4N?h}d_l!fwYqu;<8g;n{CL@fNE*c%V z>p&+#>;?EnC(Z&~kab&;hw_Z3qM?q*g|sOOsweDnToKa|Oto9wCyiQMyao6TMzlj( zUp-3kd6sN49J#acscN^xPn>1ASZha_=bd6-OLDMZZjxol#%6UDU*DPwx|a*zZcLcR zO3qpjHJ5NMvKPo4gI6{a3z0Fu)~&&m(FMl-40v=?G}l#lqlyv4!GF~1puK)5(Q9G6 zo(}}7YDv~hs_KZ!wq9}?@5jxjy}Iu>bfl~5+;tp2bjqvhM2ewAH9O8X^wzssqD^_& zmA9tX`^mzQ*g@9CotJbSmXZv) z4&I?G`FhgeP%AyPV&K+un_o`&jRuf)S|MMO!@7Sfa+E#VY%obPNz-hlUJhQ&+80t7 zS&31e$q>G~}6i7}w_2T5E`XJFclb zqo49mL9t9;Fd^#qPjS3k_Oc6zPktIFGD6%J#o^90=0^fRKC@fDWwOmOXBtnK__@Dt z@P0W^P6W@G3hG_#3btLTL{|Rq5u3U;UIORCoiA>Yb8SerM8>d__yDTx9`FAj3#%u= z#dAa|aP9O<RKJf;3)2qXB@AhE!I&Fz>nOD8Ky|gBO7EV5W9w8nz&< zl`o~1V^F+&JC{UUG(X;!J1ad35WSrnIt^D>>+wiLla@-`J$T?_*nRzBd}o_ukUZL) zz&b`J^#}Rd?Saok4EAsVlyPd>Bt6wbmPd`r8}ThBkJqGC`;XVuhqx=cdQVy`sinAC zh7u=7&)ekV=;LGy4z9|cO2dWdV98yYL7i&%!AH`R1oz7AEmF4xyy3wy7X}m2u>h?o z+!QVjC(BclCiGL})236lOM)TIjJ-i~9e@_6^Ff;=pPH-XVviB#mD}!G%Gt>Hpcjdk ziKmgknQsQByOx}~wM`SyWqv0oeyxog_;9-uM+I4)*tj`~uBp=6u-OyRxrIug`+9Fe z6;4H7I->qCIpje_S9aJA_*HyTvOSxlx>vEPp7{J_w>YvQJ+eF%2%DfIbI7gGcw-AY zO8EBUm{f;nvmB2+E8TNcy})7DETKG=3-(T1=I~ff&5EAgJDhKbf@@&tE59O!NNYR-3aFY3t)&_SAVfNX1ESx-)B| zWDb=vPve_)N#k-i&%*2Q<6_#3w)zrfpIbsy8)24Fs=h+&$nm`*1gPzyp&GZ4t_`1{ znkiSIG|x)YATTPhxT0+^OMZyYlHkf$Z}L9bDII5?r=FZjuT(>a2XUpXHKJZue74@S z#MpVoqQSOLp?mgdJD*CWKW8JZ%Fg`A#gpOsF3of*J(?o$cQ!Z(lROw^};zpj`B)51kxManQ>kw zCDoZ4Iax(MxSbS~M+7)zjg3cyX_Y)jaqSJkl9YPhSGt(`{CY{g(X6uC69wm9pd=qn zR(b84_SD?wkqnUP)=Ny4Dlfm@;hFC%(5T}y_k^{aNxLkfUeqkXvpA#P$t+>U^Na0c zha_LwgO}yXP2SJ3!&Oq(Wi{ip8sN++)@)jYV;w_PLo*aCA4!!TPTpy< zpwn!VE{|eNJy&wsN$Cua(pIAg(5vSZRI_5h255=ts@D!nu9u~g;$&!(TlrD8O=v?;x5JF9}Ny?BANZ71^Fmw^WV1;2LbxUXfg)kUDh-d)N43qht`&H}d=9l9e2q=S_M~A7!M0jn9hXU-@%xz>G!~C|dE#ft zBmoiRqD_|olWNa+TNN=pP5+3kk1rNG6jq04R0%ygJJH){X}M?&LdjH{c}g2Ur-Z|5 z#d?0)ed6dpVv6m633eTW26q8&hZ9wVw_=p>(ly}-=Ux}?4_@(dXY^j-I?mikO#!oXxFldys@9C6+H*vM$Bc%>r7^#3*G22Na<2R9&{+SPdzy=E1UC4oUn9t zCdu$U^?xxPB?ByxTz-d&qTuW@W#A9% zC#Y?pg*-2@-$h=+i8qk~foc`HG?p`bM8}WBHaQzKJBdH2TH*V9K6KB^LGH+XT;nHo zhwIORmFeW`@diZ8AF82mzZ-*N>ww}W+}1jB-lsa?%H?(klgveP_*j%c#s+UgT^ zG^MPLM6FsvSL*{;Sz}gN6INLRR#|<1pH1kZTq9DBA9&?c7eK9ubhsqpq`F2{YkLKH z?xMTCa6GO%Z6cRtq>;|U)F+kYY|1m_YQMx3c~RcTX1_*lrwgs56h6tu;>fI|6g@c{ zK7~CJpiIu#rfZBTN{RxSk~FFdjiBp3XT=N5*fN!Ii%Y*0QHE;-%6B8sOo69*P;3@% zSf0`SGlVhZc%SZ)jID<~gWNX|U7Q%OrVuy@x+ zz8;QT7E>q~R$-+3JDj7H1{G{zJ7ci&7ong*Z6M(VlAM#`1yrnKxx*XDA;g^{en%$H z!jbu9R_MbtBw&NlYAsNN@@AOI=Jy3`0!+ZT!Rz9g`1wP^`r0`OP##Skh0v^K6Z-|v zbzwa2>QVH;{@WgWKic9sORNBgQYV`n%vzUCp)cw=VxgjM;8`csn&0P}i4S{O$jR$q z{h^;n*tzH?w9m*6o=%lYPu|AbZ~5-(!m8Q7yv?7k9Rmv@$ml9ow?3w5sdAIGz{ zYyW(i<$cuuK)rnhqt^eR=#7}a_wajQ5AGagFJ;|m;d6!Do96Gez6Y+s0OG(*z*Xbt-{N;h9y0z& zm0>%Ie4R5K&Uc1W@p_ut&*;?4>Aze#jvWy);X}VeuV_WH-yDd@;sno#^NCg9RA4< zA&_!au;}20Y5^h2g=%@>3tL_O@lFiUqor+LMkg;huN3Ads-=RZtjX=X#LpqnvgVJx zW6F4{Jd;lFEbb)6H8PxPQqmR#=}@O zMq!JLeaB{fr5W$R%ts!vYdqh@8|HY1Bcl;l>>8cE(gcRkHT`c#yU=|HW_@NXTi486 zwHkb?*V6@pfoj8?OQ8<6m`A3Fb23oo1%7qYzm^X4PV6fkIn}uEOVbek6Q*{>4%O+) zPN-7rTexD{9m29R3ge(NPxWIN`}Mf1=V4b_&VfaxGsg;LuBqD>lJGv&`;9K=En)I) zc>m4l`fd8J0HvWh?{D>*}b~m**ynp5S*qXpH@#}F<@5Qe2m1E|$T#Nq*?sz<1 zF}=rUaAdC_Y5dAspHb#HumE@eB<8w*K|GFO583b$BB z?`v*-dXLal&*4V9C33=N^wdZ}r_XC_FGr z_Y{_PQdFd5fuFtfDmg)w1@wDYis1{>nIRbRlTim+ygw+{15MNp402JBdmBo#Zru+# zGEc(mLo6R$w61pkLPI2JpSZD=B4Y(|ssv=6+SY8p!BKyp{D!;xWta#SOpl)b z>*eRC=?xZV{8ewZ4Vnd5t8UhNmR9f%pObUiWAC*tw{u?i4;_AK=S1$GI)b$2K6`od zRclghT-oh3*5clF>fCc3Z@pqlG}V4V;HSj%7aHO?pvUu}TND`C0Pe`|6mFayf4%*M zS^1CJT8)zJT^;w{;XJZzCVQXq3HVJyogxNa#0oGRtTm-E>;|g6@Ut$2dzw}#uk}{~ z-bEnJ+t`DA-tT*s2PzIk3YL7_b&-7tM{9~b>9#Dy>wuKZ3_@78X>jj$y==O~ z^A+Z>qYZA{oK&Wj!M)Ert?C6ci8p%Q(Dc4ABS%VggBi1qJ%nj)b?PTtf&o1 zjiWt4GD{|#lolbxeVE!csi)CDJA{3Bk4(DXpI%I->333H*nelmrigZ9ol1MVZSXpW zx!XOY_SZaYYkr_rgLdK8gelQuLF>Bu{l@aJM*4=Z)A-P!)d7XsxTgvrCMBF3kdbit zY9s6@KlXj;K#1z=Oq86cAU=%4KSD4H%Ar^xNmkg5d{LY}AqJ;_$v&8N7H*FKx4p@@ zE6Ft&7keh#wNJY>>a|}=7N6B3xE|qW-(S{nUptYoU>myVu@FesSsU?1x+ogKMY^#X zQTw{su@F($X&Z4*eS+y>P6M9w7^QrK6Je+QAH5EManX95U#U#;p!6U|{GoneoOnWe zLe^~jP%D~|{L>ZGO2`mB8g7`QbxJkFRx2^wIE(`bXJj2;>2pSlK-G1Y-GTWHcxTjA z-?DR73qRd%u5;W4gi`ORKWFf)8|s{E0cNBQ#jfnyZ2_Y99E#!x?HitBH^Bm&R}h^Z zAD*`YJGAOJaZN0m@xfv#IDX>8nIZmu=dl-g&8;e=F*i6%Nf@$K^mFJ%Z~M!U|s!Y#rx z9N-o|wtctakDkg-WAQrO=T!)Ie~=I|(Tn)&AGW0ekB#E0SBI+V%w?3#u1&azrEM_T zA9m5AF3zM|{}FM_v^ts<|3`JS+Tv}N?d&b;;ieixVfAv~)(iR#@5bHhCzbI*E&j+& zTRgmhp3CFr>fil*O!#MLfyoMh$4m7dX)JCNV%o6C(RXUDlJ!0vruKq;t6+|1&-^iH?-t4Or;*VYa4 z>@COQ>d^F;2nYF6& z=OB~UMmWwH1{&kxW`3Z2@S8-VjIEAFb0e)L7R@%v4H&~Yc0yzQX>1Y@df3~_9t^t! z?oWrD{Dz1jp8%B^1%_&Q7LV&5)RyVTJw@eiG!Tge*wpSCpFNF`n-#+Dm$1elJ-REh zJq7r0N%XiSmD?tzUm!$~z8DVIJXD{p)pKc8l9IsmPfYxl{1ePE1K!14{tLke{_-gR)1) z!c+eOJtbrQv3rM{m9O$HWaPgu)ss;blq%@qEhB&bO89%@?KX4e!H_SWWiz?4Ksq?ZOZ0d;BApnZ}E1QW8`@ zzUO()MvdGr@ZGCvWm_A607_sSBYXsbPx72trkYYYeQ#g)^8JHuWqKE@{j=R-s;q+F4J%zl{Cj1uh`b37ne*%%*j9soP1W)?)s;5A7 zmej%xp?^#IElcu|<$ptJr;v^*nLa)$=v%i$2z&eo71Rwz)F=_R2^0E7#Y`z^&hBh} z8W|np=hkje!tD*(i}q&ur)RkT#G)KO7nP|f^ig3ZA!bdEucP94BwTN(gv(9wU76Z) zwwpJHC2K?CE*4`StuI2RrMi3Z&oYgH)Jk;@Q?0DqlBh0mRcK%qO1d|T?0fT#@2arF z5z0Fv)OI;>jT3{*rbd=EjBM&j_@#f5FS6rYCI(wfjkIeR>D804ONYahcY5~3D!k)3 zWYQKq)R&&ZZRib_hj4DPQ|{AOqYCIjy(S-Q8ubp9cLx? zfCA^W%4$-CsuZRtq&R$mmtMc#OS;_PkDt)5A*IdaQW}l{A5HdEo<=AI2BuE8swElW{O53h&a3PXecM`6RQf!~)Cyg78rXV;XV3=#r5eWX4EkgaxgyCya? zp(tRdw@7jah3tMkBOpuf>b6tGad5e9QoKvBOtO`(kM}&2$m74Mx|iT`qKC{R&US@UZjrz1*(0u)i-Pc^c8+ku7Y?j zlX`&RAn0}9fQk={pU|sx84SD7`h7I51pzbxM!%4uD>U!;!*+>jd2%$0rqPDfR>-zn zBH4HtL=yz9#savHchHUAmMBL;;5I(K-lrgpy~4RIxN@_I&(B;yuW(h*Z`2URCd1 z$=A2aiEpSSy)ntW@A;>ZvprF+{0fPLo<2cf<@kdCWeF5~k1h8?4ABvK3M=$Ny`s;4 z7FKS21Jv|ZqHCwZ){TR&7=%{ceph1qb{a9;62-x<5MOBJ69h(%Ex3vQUy%9}HC`Xs z>f01&))GF^rp}goKroxjympC>=mjuek53)+HxiYOWnST~*p{hKt;s>&@#y654qdt@ zrPG7EKxZ9($N+cKNuC1tjt{qisHcb|>-Zw=Y~gu=!-x;3g#=N9XZ?Pn0PgekXxJ!j z=dBJBWPr=*zbU14JT{W6&3KsKOZUl2gEL?^61;rFKId(R z_$O|yx?Z#z$ie9)Zt-rQ?)}}kwGCZDq}jiM2Z?n;<~cNMra?6#jFE1zfdZWU`n|VT zXRk+?p3c=~A}mZ>^KvsA8@u&imhxaU&D#G3km4p7YW}wQ-uoX;o|$HG@4o{EjD&X$ z7~>)a{Q<_Brkw#~1RvJD?^mb&o1_Yt{sZ{mR^C8hWZAr%Ub|?fy_p@dfYZsbUn}i!ij^Y{(H^uT{ zWwm?ie~-L9_0Y0^7nen@_li6o#p%3CG8x4MGBZ;JkbQ-#J?*gL+P}lIS8(&iY4M=l z37FcA)Qy~rD?6Bd+N@LoSm02&sJvvm=vu<_^T^b^cJX?87Aj5|L-AWa(&Fq}6WQ)8 z`A~JAeHFQK-nW|W};z_u1fsaub z>P(%M=FDM}l)4JKSKSHc%XQh&4BoM^UC zz0-!jo0d<1=8VU+YXqlcQPv6+q_8cT^|8$3DdjB+nbAiyhoLP-@MKX(3P_~#lSWQI zWni)PnE0oiCEb1)MQYx>=w$1rOzSYYmZJqi7kMqW^ zFtKszGnJjf(<5MRt8JNick1ky(=gmqBYBG#U?(W8k#7@s&Mb}Iz9wI@)f`bZpmr4A z^t=(5_V@sSwlQsOVLcno_h?AtWWuVwx&4JeZSbxNF_Rx61GX4)JADZ-N zD<2y5Xk#53b`Zmt8Fkdss2ctO-HvzgSZWoge1H5b{YSMl7EOh2G;|ov{D5y7O+)+@ zr&@W;m8)8L!ZxQ`NkWh7EAm{`iWBlU)rwQ{n*Ir90TqhTe^mdqVN=dcK{^6h0lw2c z-ZdKe*eGkEq>8rovu4j&Z|-6zNy|e@5kS0|&pkBbi6gRWlAZ84*lvTo#lwO73jsC} z{u2c+L-@|!NfaLeZ%*nD%i*^Qdisz1)(bwM(R+=@(o<9S?>MN)$P(gSAVVek z{_o|5Xytlps#e|gM}06PmJ9+Z^~a~Z5vvVaG->4VyhSALlaZ}xc-%^%2_U5I{@Fbo zney{3{PblDOO4^uMf`K9Gi&93xAVBuz=GB5>FRX$X>=>x6Dz1QAP^9|VbHT5l=|9B zoQr#C5=2h6)wp2OH3zG;`)mOh`2{Mc#oU;Ui#Ag8!(6Nvkt5s&Ok>VrCM`YGtDBfy zES0c_4qDA~B*HmoR$_Xl^WR#z@JfEYe=p-$*$s%F2P3Aa5?2U~`7}WE zLedpK4`21Frz>Va)_K$rKJtYJEk<mgt7uAqJP_IUopYj`uy1K8Qk0NgHZ zGY#(`RMv+$xT)5Q9{$wd0AL}}5OlASDJQm1`jF;Vbt}dvQa!U)UIS)VyB6J4xq?Ab zn^x$+6TK^*5*D9rH&qLP;~z<;bXWlgwi1Ldp`0b{oEVj>W6wLc@lF;9b2CC4V=S0@ zmQr}Q1iO!4!hdDu`xoh3$E++X*m=#XG9gZ#eKHPglw*lH+=;+Hx)e3caQcfK-ir#~ za}hrgMn6XudXjT4dd6PcVlSQOJ`kph56NlSDkc!j7#;DSmNPz}&!uB^nriOC9f;DKI~&kbM4UVxel?F``Tc3chJ@8+*SL??v}e{7 z&Z3jkven{KJK2)!n+&vLQeA98M8$1>R2X z1>eFUAX9J8@ofbL-7kO8M86LG-AcS=iCUGAAh|)R;5-n!jKTMU>lvT}W^16uOKv7~ z(k*^Cu{-jVwBsd2b{<36Mdso~6WIZDffF$;N1y1HGn1tTdG;SEAK%IZ!3)hmQ!Rf1 zum`|OXCYfEZhmr_$Jz(wz1A3_e1>@px&GnPQ$P2w!g# zyZIERk(;f_+PMiIN)S876k4D}c%cSJ2sw+ol!qlM%h_g7{J?;w zKYw03d#1m5etqI@UxzBS3#=mY@>z#RkIYN9QaNv@NFIL6e^*N*SY@Vh?$P3hDv4W} zT%&e;HK$S;w3%+fLfz{vDvIUM=W{enURvp9Oc$886Y|w`{cQN#DG|o2R64sO?#-!b z3DpU7Spwn%f6ygetLEPACL_s}N!&{gpbS|ii9RK5c%ctpB#p~$xsEkh=F zO#19K!*>^O=gsmh9enDv19g`+(3V8c%=JUeyNwIX>cm+zNW03TH|Byz$Q7%h^)EhF zUNVEck~8>53YMm0T3mnc*8emUPcN@Ko638%#R8@F(3_m~u(s7jm;c-{$G=m?Uo!)% z;NQ)Nc-AV?4qg=HQ7ymYz4C{v7vEOx;xj&rVtuZR_SNh}*6yapSgbnbmatML#JlY@ zF}yHdXi4I087QVLQ6DS5a^K`ga)TP8ODIZFbL1GJ+r?kH?Om#}$+1|bz-K#;_Szt6 zHd@H0(b%FsxE;Vss+Be_jZr(e9X4CAPoq))#er|s4TD?hGs9MWZ#=t71I60!jmW6$ zhcN#MinZdOm zC@s8DB<)xnlLj#?aHx`(Q>Fs+i#t@w$+1%Pi$pk@G!9SFR5LH-Z9AGa9#-)?E`0K{ z_(hv+6lR>1rDkjzkDGj?*qT=SdUH-yCk$@pg7nN%k!$ptML~SnBMj==r%ikzcfVjO zlru!)HtCwVkn3zy`p{RDqaO)RtXg0n2)k5MSYd6CWVfivw8U}J?L%I#G2F9|Q-)M~ z(q!j{748#5lpeU%rZ1P~7Orb&+h#-K9Uqzo+D2;&?2h&|Q76dZ?hktm-5Au~UoJ!q zaJNMz$n0)Ux!l>iF(f72oSpM(^QOH@BTt7c328g$JDzpPL&_=hX6WU|CgoDxjTs(h z3kC77FhRFEer;xMBBIC355%4YjnmnWPozY9LcHXZ6w#M+f8Dsc^?+xfI;mB)OD@L*|q; z<0<3Uy$b~stUT>HTFzOqRuOfRTw0Mu{oGOuRfya{#H>M$Yt9UQ>74162#`&^d;+qN zokH6bu{eaaB67@fjzwa{aE?{C$Ld->;TF->v!@ZRZFMQ{)gT;I!QZxwtE_${PI7}& zsYa(k0WOQPk$CE`gTiGyDocmrQGD?6>atgN|8BqIy{-P3yC9j<{THPEp4t*5WL=hL`5cQRVw z=HmOAs|BUT!gZQJ4C1axI4JRS-luncPWLErZj{5ub%>V3ekxBYi2V_1r$afEx}`dZ z!?g0i$0RcI4Rhr??Bzk})b-V-^@tDXSoO!2)$1&`m$cK`kv6ta%jwa9ci|Nhx6?}P z7fU7RlV`kmAiv^~Qfpi_D|z5DpkZ}Y*XURo>8R1=%cN$VpH^bflSG{Ti5SkYX7pYg z4HMdYSvLZ|#KupnG^b;BT-SWBl;wrQ4&%@^O{?rdbccPEOZo#-=@aR}s&2voOjVzo zYHP?$3XCWI1a;VD(A;oS%y!Cf!&JBgsB7Qwh-}u9aY&l!&~Tef*;4;Mu|Y=SP-TsN zz*=efCt?aAaSk_yo-IK^SAhxHu~ZE~@{lNfGsC26I+M}~n^80#Ng|KmH)A70WnFw${~x#oDPo4|`#On42QYW~KU-;w8(b=BVRi zg#|~TMe}~7kdb)-4_cgYy?C{T!vdjF(e{(^`LD&a!Ua;Tn>smkuG~#iDDT zGnAw)!K^O0#pM~)3_`@;dY9Z2xV@A@+pE5FUH2;Fqqej@0Xpo(hmWN-sLw zt=__NI@D>IU(#AMU$3mVDjILMPJFb9kP+-8nU)uzC7qVnmmW)=sxFz4V5pUo%v&pS zsG4FOq^N{?IBZvNT&MKd()BRhFDH>GE{K5qU@A8$N@0cMM>PG&v0N-nVl~SjaZk@P zTr5oNPEF6FSfmJL4b6^7HVtDmz7QojVb;$;b;2uMGqu7y8rgH^^9Wl}AF)Z}D6`uw zg93Fu^Ksd;8aV+#&&*uIaHSRvL5Mex1_|jlrL%VeeZsM`jD1cgi|V`3j~+L(%>_MA z_+3q2i#=H-uZIk2Um;IRGo!!i#dXS6goX7(FB)ssR4?N15O1m%f~9P#7w{+I_b3iD zts)LeZCY6@>w8;RSk(=3SXkwYNz2V^(nX4^(uytW{ZEnGmbXE4!5)2S&l-7;oGpH!lE$UH{AXi6pY z%JDw3lZaad_G{?dP<;rM)pqE|4qdRR^ZIQQoPrJeR3D}@)YO1#8zkP)s0}bX_U;Dy z?HAqvy;~J`yo?SL8{TI`>~*^al#D(Q82*;H%|Gna2q6lI-i@P0@mk!u>`lId_9S$ruVKDZmwp9GIK$sKL}-Zax1>rG4i6M z54oe5Y?6%f`ABqK4jVNPFDE4hs+rn6W3hIo8!dL`Bsp5#R0DRKJJaHdWOZx)=78Kh;;^4B8!4r&IWrvCX%9)BKjREyM~uc#1OS5xmRWZAUJW z(=}|0P}YaofC}y;Smh348`~JMbG}GDU-QS@uHR%`j^z4^>9k3=9N}h7f86!t+-(=N zS^2fEj8CzWwWQFr*Yy#RwhVMMABx0x(v38?`jL9_hoNi$O=NpCJ1V&k;pAaE*G}%3 zEqC7;ci-5Ct)|b(rdtCicefp2lLPrIHOP5XD4mJnXX}rHZGJl{FZC)ZdzHed<6fQy z?3)eG;ocJlSeft}t#%80pdIf3ekI$86Zv`GA!@4_H6IJEHR)c&*FTCFX0_LCHgVH5LAGHlKkSlou@_VH zVSb$}_nW(_3q{Hz}9$awuTcev;&1)$67jNN#{DKTQr z04cpa#u?75eJU}`B{AxCESxnTfWF z^#0ppoq_p&vkyVNu-}lVXi#ia$5q2yHhr32J#Nd+_mbUTxY0xgu}QYWqPKzB{M� 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 +#include +#include +#include +#include + +#if defined(_MSC_VER) && (_MSC_VER <= 1800) +#define noexcept +#endif + +namespace std { + namespace experimental { + namespace drawing { +#if __cplusplus >= 201103L + inline namespace v1 { +#endif + enum class status { + success, + no_memory, + invalid_restore, + invalid_pop_group, + no_current_point, + invalid_matrix, + invalid_status, + null_pointer, + invalid_string, + invalid_path_data, + read_error, + write_error, + surface_finished, + surface_type_mismatch, + pattern_type_mismatch, + invalid_content, + invalid_format, + invalid_visual, + file_not_found, + invalid_dash, + invalid_dsc_comment, + invalid_index, + clip_not_representable, + temp_file_error, + invalid_stride, + font_type_mismatch, + user_font_immutable, + user_font_error, + negative_count, + invalid_clusters, + invalid_slant, + invalid_weight, + invalid_size, + user_font_not_implemented, + device_type_mismatch, + device_error, + invalid_mesh_construction, + device_finished, + last_status + }; + + enum class antialias { + default_antialias, + none, + gray, + subpixel, + fast, + good, + best + }; + + enum class content { + color, + alpha, + color_alpha + }; + + enum class fill_rule { + winding, + even_odd + }; + + enum class line_cap { + butt, + round, + square + }; + + enum class line_join { + miter, + round, + bevel + }; + + enum class compositing_operator { + clear, + source, + over, + in, + out, + atop, + dest, + dest_over, + dest_in, + dest_out, + dest_atop, + xor_compositing_operator, + add, + saturate, + multiply, + screen, + overlay, + darken, + lighten, + color_dodge, + color_burn, + hard_light, + soft_light, + difference, + exclusion, + hsl_hue, + hsl_saturation, + hsl_color, + hsl_luminosity + }; + + enum class format { + invalid, + argb32, + rgb24, + a8, + a1, + rgb16_565, + rgb30 + }; + + enum class path_data_type { + move_to, + line_to, + curve_to, + new_sub_path, + close_path + }; + + enum class extend { + none, + repeat, + reflect, + pad, + default_extend = none + }; + + enum class filter { + fast, + good, + best, + nearest, + bilinear, + gaussian, + default_filter = good + }; + + enum class pattern_type { + solid_color, + surface, + linear, + radial, + mesh, + raster_source + }; + + enum class font_slant { + normal, + italic, + oblique + }; + + enum class font_weight { + normal, + bold + }; + + enum class subpixel_order { + default_subpixel_order, + rgb, + bgr, + vrgb, + vbgr + }; + + enum class hint_style { + default_hint_style, + none, + slight, + medium, + full + }; + + enum class hint_metrics { + default_hint_metrics, + off, + on + }; + + namespace text_cluster_flags { + enum text_cluster_flags : int { + none = 0x0, + backward = 0x1 + }; + }; + + struct rectangle { + double x; + double y; + double width; + double height; + }; + + struct rgba_color { + double r; + double g; + double b; + double a; + + static rgba_color from_byte_values(unsigned char r, unsigned char g, unsigned char b, unsigned char a = 255u); + + const static rgba_color alice_blue; + const static rgba_color antique_white; + const static rgba_color aqua; + const static rgba_color aquamarine; + const static rgba_color azure; + const static rgba_color beige; + const static rgba_color bisque; + const static rgba_color black; + const static rgba_color blanched_almond; + const static rgba_color blue; + const static rgba_color blue_violet; + const static rgba_color brown; + const static rgba_color burly_wood; + const static rgba_color cadet_blue; + const static rgba_color chartreuse; + const static rgba_color chocolate; + const static rgba_color coral; + const static rgba_color cornflower_blue; + const static rgba_color cornsilk; + const static rgba_color crimson; + const static rgba_color cyan; + const static rgba_color dark_blue; + const static rgba_color dark_cyan; + const static rgba_color dark_goldenrod; + const static rgba_color dark_gray; + const static rgba_color dark_green; + const static rgba_color dark_grey; + const static rgba_color dark_khaki; + const static rgba_color dark_magenta; + const static rgba_color dark_olive_green; + const static rgba_color dark_orange; + const static rgba_color dark_orchid; + const static rgba_color dark_red; + const static rgba_color dark_salmon; + const static rgba_color dark_sea_green; + const static rgba_color dark_slate_blue; + const static rgba_color dark_slate_gray; + const static rgba_color dark_slate_grey; + const static rgba_color dark_turquoise; + const static rgba_color dark_violet; + const static rgba_color deep_pink; + const static rgba_color deep_sky_blue; + const static rgba_color dim_gray; + const static rgba_color dim_grey; + const static rgba_color dodger_blue; + const static rgba_color firebrick; + const static rgba_color floral_white; + const static rgba_color forest_green; + const static rgba_color fuchsia; + const static rgba_color gainsboro; + const static rgba_color ghost_white; + const static rgba_color gold; + const static rgba_color goldenrod; + const static rgba_color gray; + const static rgba_color green; + const static rgba_color green_yellow; + const static rgba_color grey; + const static rgba_color honeydew; + const static rgba_color hot_pink; + const static rgba_color indian_red; + const static rgba_color indigo; + const static rgba_color ivory; + const static rgba_color khaki; + const static rgba_color lavender; + const static rgba_color lavender_blush; + const static rgba_color lawn_green; + const static rgba_color lemon_chiffon; + const static rgba_color light_blue; + const static rgba_color light_coral; + const static rgba_color light_cyan; + const static rgba_color light_goldenrod_yellow; + const static rgba_color light_gray; + const static rgba_color light_green; + const static rgba_color light_grey; + const static rgba_color light_pink; + const static rgba_color light_salmon; + const static rgba_color light_sea_green; + const static rgba_color light_sky_blue; + const static rgba_color light_slate_gray; + const static rgba_color light_slate_grey; + const static rgba_color light_steel_blue; + const static rgba_color light_yellow; + const static rgba_color lime; + const static rgba_color lime_green; + const static rgba_color linen; + const static rgba_color magenta; + const static rgba_color maroon; + const static rgba_color medium_aquamarine; + const static rgba_color medium_blue; + const static rgba_color medium_orchid; + const static rgba_color medium_purple; + const static rgba_color medium_sea_green; + const static rgba_color medium_slate_blue; + const static rgba_color medium_spring_green; + const static rgba_color medium_turquoise; + const static rgba_color medium_violet_red; + const static rgba_color midnight_blue; + const static rgba_color mint_cream; + const static rgba_color misty_rose; + const static rgba_color moccasin; + const static rgba_color navajo_white; + const static rgba_color navy; + const static rgba_color old_lace; + const static rgba_color olive; + const static rgba_color olive_drab; + const static rgba_color orange; + const static rgba_color orange_red; + const static rgba_color orchid; + const static rgba_color pale_goldenrod; + const static rgba_color pale_green; + const static rgba_color pale_turquoise; + const static rgba_color pale_violet_red; + const static rgba_color papaya_whip; + const static rgba_color peach_puff; + const static rgba_color peru; + const static rgba_color pink; + const static rgba_color plum; + const static rgba_color powder_blue; + const static rgba_color purple; + const static rgba_color red; + const static rgba_color rosy_brown; + const static rgba_color royal_blue; + const static rgba_color saddle_brown; + const static rgba_color salmon; + const static rgba_color sandy_brown; + const static rgba_color sea_green; + const static rgba_color sea_shell; + const static rgba_color sienna; + const static rgba_color silver; + const static rgba_color sky_blue; + const static rgba_color slate_blue; + const static rgba_color slate_gray; + const static rgba_color slate_grey; + const static rgba_color snow; + const static rgba_color spring_green; + const static rgba_color steel_blue; + const static rgba_color tan; + const static rgba_color teal; + const static rgba_color thistle; + const static rgba_color tomato; + const static rgba_color turquoise; + const static rgba_color violet; + const static rgba_color wheat; + const static rgba_color white; + const static rgba_color white_smoke; + const static rgba_color yellow; + const static rgba_color yellow_green; + }; + + struct point { + double x; + double y; + + point operator+=(const point& rhs); + point operator+=(double rhs); + point operator-=(const point& rhs); + point operator-=(double rhs); + point operator*=(const point& rhs); + point operator*=(double rhs); + point operator/=(const point& rhs); + point operator/=(double rhs); + }; + + point operator+(const point& lhs); + point operator+(const point& lhs, const point& rhs); + point operator+(const point& lhs, double rhs); + point operator-(const point& lhs); + point operator-(const point& lhs, const point& rhs); + point operator-(const point& lhs, double rhs); + point operator*(const point& lhs, const point& rhs); + point operator*(const point& lhs, double rhs); + point operator/(const point& lhs, const point& rhs); + point operator/(const point& lhs, double rhs); + + struct glyph { + unsigned long index; + double x; + double y; + }; + + struct text_cluster { + int num_bytes; + int num_glyphs; + }; + + struct font_extents { + double ascent; + double descent; + double height; + double max_x_advance; + double max_y_advance; + }; + + struct text_extents { + double x_bearing; + double y_bearing; + double width; + double height; + double x_advance; + double y_advance; + }; + + struct matrix { + double xx; + double yx; + double xy; + double yy; + double x0; + double y0; + + static matrix init_identity(); + static matrix init_translate(const point& value); + static matrix init_scale(const point& value); + static matrix init_rotate(double radians); + static matrix init_shear_x(double factor); + static matrix init_shear_y(double factor); + + matrix& translate(const point& value); + matrix& scale(const point& value); + matrix& rotate(double radians); + matrix& shear_x(double factor); + matrix& shear_y(double factor); + double determinant(); + void invert(); + point transform_distance(const point& dist) const; + point transform_point(const point& pt) const; + + matrix operator*=(const matrix& rhs); + }; + + matrix operator*(const matrix& lhs, const matrix& rhs); + + union path_data + { + struct { + path_data_type type; + int length; + } header; + v1::point point; + double value; + }; + + // Forward declaration. + class path_builder; + + class path { + ::std::vector _Data; + bool _Has_current_point; + point _Current_point; + point _Extents_pt0; + point _Extents_pt1; + public: + typedef QPainterPath* native_handle_type; + + path() = delete; + path(const path_builder& pb); + path(const path& other) = default; + path& operator=(const path& other) = default; + path(path&& other); + path& operator=(path&& other); + + ::std::vector get_data() const; + const ::std::vector& get_data_ref() const; + void get_path_extents(point& pt0, point& pt1) const; + }; + + class path_builder { + friend class path; + ::std::vector _Data; + bool _Has_current_point; + point _Current_point; + point _Extents_pt0; + point _Extents_pt1; + matrix _Transform_matrix; + point _Origin; + + public: + path_builder(); + path_builder(const path_builder& other) = default; + path_builder& operator=(const path_builder& other) = default; + path_builder(path_builder&& other); + path_builder& operator=(path_builder&& other); + + path get_path() const; + path get_path_flat() const; + + void append_path(const path& p); + void append_path(const path_builder& p); + bool has_current_point(); + point get_current_point(); + void new_sub_path(); + void close_path(); + void arc(const point& center, double radius, double angle1, double angle2); + void arc_negative(const point& center, double radius, double angle1, double angle2); + void curve_to(const point& pt0, const point& pt1, const point& pt2); + void line_to(const point& pt); + void move_to(const point& pt); + void rectangle(const rectangle& rect); + void rel_curve_to(const point& dpt0, const point& dpt1, const point& dpt2); + void rel_line_to(const point& dpt); + void rel_move_to(const point& dpt); + + void set_transform_matrix(const matrix& m); + matrix get_transform_matrix() const; + void set_origin(const point& pt); + point get_origin() const; + + ::std::vector get_data() const; + const ::std::vector& get_data_ref() const; + ::std::vector& get_data_ref(); + void get_path_extents(point& pt0, point& pt1) const; + + void reset(); + }; + + class drawing_exception : public exception { + status _Status = status::last_status; + public: + drawing_exception() noexcept; + explicit drawing_exception(::std::experimental::drawing::status s) noexcept; + + virtual ~drawing_exception() noexcept; + + drawing_exception(const drawing_exception& rhs) noexcept = default; + drawing_exception& operator=(const drawing_exception& rhs) noexcept = default; + + virtual const char* what() const noexcept; + status get_status() const noexcept; + }; + + class device { + protected: + ::std::shared_ptr _Device; + public: + typedef QPaintEngine* native_handle_type; + native_handle_type native_handle() const; + + device() = delete; + device(const device&) = delete; + device& operator=(const device&) = delete; + device(device&& other); + device& operator=(device&& other); + explicit device(native_handle_type nh); + void flush(); + void acquire(); + void release(); + }; + + // Forward declaration. + class font_options; + + class font_options_builder { + antialias _Antialias = antialias::default_antialias; + subpixel_order _Subpixel_order = subpixel_order::default_subpixel_order; + hint_style _Hint_style = hint_style::default_hint_style; + hint_metrics _Hint_metrics = hint_metrics::default_hint_metrics; + + public: + font_options_builder() = default; + font_options_builder(const font_options_builder&) = default; + font_options_builder& operator=(const font_options_builder&) = default; + font_options_builder(font_options_builder&& other); + font_options_builder& operator=(font_options_builder&& other); + + font_options get_font_options() const; + void set_antialias(antialias a); + antialias get_antialias() const; + void set_subpixel_order(subpixel_order so); + subpixel_order get_subpixel_order() const; + void set_hint_style(hint_style hs); + hint_style get_hint_style() const; + void set_hint_metrics(hint_metrics hm); + hint_metrics get_hint_metrics() const; + }; + + class font_options { + ::std::shared_ptr<_QFontOptions> _Font_options; + public: + typedef _QFontOptions* native_handle_type; + native_handle_type native_handle() const; + + font_options() = delete; + font_options(const font_options&) = default; + font_options& operator=(const font_options&) = default; + font_options(font_options&& other); + font_options& operator=(font_options&& other); + font_options(antialias a, subpixel_order so, hint_style hs, hint_metrics hm); + explicit font_options(native_handle_type nh); + + antialias get_antialias() const; + subpixel_order get_subpixel_order() const; + hint_style get_hint_style() const; + hint_metrics get_hint_metrics() const; + }; + + class font_face { + protected: + ::std::shared_ptr _Font_face; + public: + typedef QFont* native_handle_type; + native_handle_type native_handle() const; + + font_face() = delete; + font_face(const font_face&) = default; + font_face& operator=(const font_face&) = default; + font_face(font_face&& other); + font_face& operator=(font_face&& other); + + explicit font_face(native_handle_type nh); + + virtual ~font_face(); + }; + + class scaled_font { + ::std::shared_ptr _Scaled_font; + + public: + typedef QFont* native_handle_type; + native_handle_type native_handle() const; + + scaled_font() = delete; + scaled_font(const scaled_font&) = default; + scaled_font& operator=(const scaled_font&) = default; + scaled_font(scaled_font&& other); + scaled_font& operator=(scaled_font&& other); + + explicit scaled_font(native_handle_type nh); + scaled_font(const font_face& ff, const matrix& fm, const matrix& ctm, const font_options& fo); + + font_extents get_extents() const; + text_extents get_text_extents(const ::std::string& utf8) const; + text_extents get_glyph_extents(const ::std::vector& glyphs) const; + ::std::vector text_to_glyphs(double x, double y, const ::std::string& utf8) const; + ::std::vector text_to_glyphs(double x, double y, const ::std::string& utf8, ::std::vector& clusters, text_cluster_flags::text_cluster_flags& clFlags) const; + }; + + class toy_font_face : public font_face { + public: + toy_font_face() = delete; + toy_font_face(const toy_font_face&) = default; + toy_font_face& operator=(const toy_font_face&) = default; + toy_font_face(const ::std::string& family, font_slant slant, font_weight weight); + toy_font_face(toy_font_face&& other); + toy_font_face& operator=(toy_font_face&& other); + + ::std::string get_family() const; + font_slant get_slant() const; + font_weight get_weight() const; + }; + + // Forward declaration. + class image_surface; + + // Forward declaration. + class linear_pattern_builder; + class mesh_pattern_builder; + class radial_pattern_builder; + class raster_source_pattern_builder; + class solid_color_pattern_builder; + class surface; + + class pattern { + public: + typedef QBrush* native_handle_type; + + private: + friend class linear_pattern_builder; + friend class mesh_pattern_builder; + friend class radial_pattern_builder; + friend class raster_source_pattern_builder; + friend class solid_color_pattern_builder; + friend class surface; + + pattern(native_handle_type nh); + + std::unique_ptr _Pattern; + pattern_type _Pattern_type; + + public: + native_handle_type native_handle() const; + + pattern() = delete; + pattern(const pattern&) = default; + pattern& operator=(const pattern&) = default; + pattern(pattern&& other); + pattern& operator=(pattern&& other); + + ~pattern(); + + pattern_type get_type() const; + }; + + class solid_color_pattern_builder { + pattern_type _Pattern_type; + extend _Extend; + filter _Filter; + matrix _Matrix; + rgba_color _Color; + + public: + solid_color_pattern_builder(const solid_color_pattern_builder&) = default; + solid_color_pattern_builder& operator=(const solid_color_pattern_builder&) = default; + solid_color_pattern_builder(solid_color_pattern_builder&& other); + solid_color_pattern_builder& operator=(solid_color_pattern_builder&& other); + solid_color_pattern_builder(const rgba_color& color); + + pattern get_pattern(); + void set_extend(extend e); + extend get_extend(); + void set_filter(filter f); + filter get_filter(); + void set_matrix(const matrix& m); + matrix get_matrix(); + + rgba_color get_rgba(); + void set_rgba(const rgba_color& color); + double get_red(); + void set_red(double red); + double get_green(); + void set_green(double green); + double get_blue(); + void set_blue(double blue); + double get_alpha(); + void set_alpha(double alpha); + }; + + class linear_pattern_builder { + pattern_type _Pattern_type; + extend _Extend; + filter _Filter; + matrix _Matrix; + + point _Point0; + point _Point1; + ::std::vector<::std::tuple> _Color_stops; + + public: + linear_pattern_builder() = delete; + linear_pattern_builder(const linear_pattern_builder&) = default; + linear_pattern_builder& operator=(const linear_pattern_builder&) = default; + linear_pattern_builder(linear_pattern_builder&& other); + linear_pattern_builder& operator=(linear_pattern_builder&& other); + linear_pattern_builder(const point& pt0, const point& pt1); + + pattern get_pattern(); + void set_extend(extend extend); + extend get_extend(); + void set_filter(filter filter); + filter get_filter(); + void set_matrix(const matrix& matrix); + matrix get_matrix(); + + void add_color_stop_rgba(double offset, const rgba_color& color); + int get_color_stop_count(); + + void get_color_stop_rgba(int index, double& offset, rgba_color& color); + void set_color_stop_rgba(int index, double offset, const rgba_color& color); + void get_linear_points(point& pt0, point& pt1); + void set_linear_points(const point& pt0, const point& pt1); + }; + + class radial_pattern_builder { + pattern_type _Pattern_type; + extend _Extend; + filter _Filter; + matrix _Matrix; + + point _Center0; + double _Radius0; + point _Center1; + double _Radius1; + ::std::vector<::std::tuple> _Color_stops; + + public: + radial_pattern_builder() = delete; + radial_pattern_builder(const radial_pattern_builder&) = default; + radial_pattern_builder& operator=(const radial_pattern_builder&) = default; + radial_pattern_builder(radial_pattern_builder&& other); + radial_pattern_builder& operator=(radial_pattern_builder&& other); + radial_pattern_builder(const point& center0, double radius0, const point& center1, double radius1); + + pattern get_pattern(); + void set_extend(extend extend); + extend get_extend(); + void set_filter(filter filter); + filter get_filter(); + void set_matrix(const matrix& matrix); + matrix get_matrix(); + + void add_color_stop_rgba(double offset, const rgba_color& color); + int get_color_stop_count(); + + void get_color_stop_rgba(int index, double& offset, rgba_color& color); + void set_color_stop_rgba(int index, double offset, const rgba_color& color); + + void get_radial_circles(point& center0, double& radius0, point& center1, double& radius1); + void set_radial_circles(const point& center0, double radius0, const point& center1, double radius1); + }; +#if 0 + class mesh_pattern_builder { + pattern_type _Pattern_type; + extend _Extend; + filter _Filter; + matrix _Matrix; + + bool _Has_current_patch; + unsigned int _Current_patch_index; + int _Current_patch_side_count; + point _Current_patch_initial_point; + typedef ::std::map _Control_points; + typedef ::std::map _Corner_colors; + // + typedef ::std::tuple _Patch; + ::std::vector<_Patch> _Patches; + public: + mesh_pattern_builder(); + mesh_pattern_builder(const mesh_pattern_builder&) = default; + mesh_pattern_builder& operator=(const mesh_pattern_builder&) = default; + mesh_pattern_builder(mesh_pattern_builder&& other); + mesh_pattern_builder& operator=(mesh_pattern_builder&& other); + + pattern get_pattern(); + void set_extend(extend extend); + extend get_extend(); + void set_filter(filter filter); + filter get_filter(); + void set_matrix(const matrix& matrix); + matrix get_matrix(); + + void begin_patch(); + void begin_edit_patch(unsigned int patch_num); + void end_patch(); + void move_to(const point& pt); + void line_to(const point& pt); + void curve_to(const point& pt0, const point& pt1, const point& pt2); + void set_control_point(unsigned int point_num, const point& pt); + void set_corner_color_rgba(unsigned int corner_num, const rgba_color& color); + void get_patch_count(unsigned int& count); + path get_path(unsigned int patch_num); + path_builder get_path_builder(unsigned int patch_num); + point get_control_point(unsigned int patch_num, unsigned int point_num); + rgba_color get_corner_color_rgba(unsigned int patch_num, unsigned int corner_num); + }; + + class raster_source_pattern_builder { + pattern_type _Pattern_type; + extend _Extend; + filter _Filter; + matrix _Matrix; + + void* _User_callback_data; + int _Width; + int _Height; + content _Content; + ::std::shared_ptr<::std::function> _Acquire_fn; + ::std::shared_ptr<::std::function> _Release_fn; + +// static cairo_surface_t* _Cairo_acquire(cairo_pattern_t* pattern_builder, void* this_ptr, cairo_surface_t* target, const cairo_rectangle_int_t* extents); +// static void _Cairo_release(cairo_pattern_t* pattern_builder, void* this_ptr, cairo_surface_t* surface); + + public: + raster_source_pattern_builder() = delete; + raster_source_pattern_builder(const raster_source_pattern_builder&) = default; + raster_source_pattern_builder& operator=(const raster_source_pattern_builder&) = default; + raster_source_pattern_builder(raster_source_pattern_builder&& other); + raster_source_pattern_builder& operator=(raster_source_pattern_builder&& other); + raster_source_pattern_builder(void* user_data, content content, int width, int height); + + pattern get_pattern(); + void set_extend(extend extend); + extend get_extend(); + void set_filter(filter filter); + filter get_filter(); + void set_matrix(const matrix& matrix); + matrix get_matrix(); + + void set_callback_data(void* data); + void* get_callback_data(); + void set_acquire( + ::std::function acquire_fn, + ::std::function release_fn + ); + void get_acquire( + ::std::function& acquire_fn, + ::std::function& release_fn + ); + }; +#endif + + struct _Surface_native_handles { + QPaintDevice* csfce; + QPaintEngine* cctxt; + }; + + class surface { + ::std::mutex _Lock_for_device; + ::std::weak_ptr _Device; + protected: + ::std::unique_ptr _Surface; + ::std::unique_ptr _Context; + + public: + surface() = delete; + + typedef _Surface_native_handles native_handle_type; + native_handle_type native_handle() const; + + surface(const surface&) = delete; + surface& operator=(const surface&) = delete; + + surface(surface&& other); + surface& operator=(surface&& other); + + explicit surface(native_handle_type nh); + + surface(format fmt, int width, int height); + // create_similar + surface(const surface& other, content content, int width, int height); + // create_for_rectangle + surface(const surface& target, const rectangle& rect); + + virtual ~surface(); + + void finish(); + void flush(); + + ::std::shared_ptr get_device(); + + content get_content(); + void mark_dirty(); + void mark_dirty_rectangle(const rectangle& rect); + + void set_device_offset(const point& offset); + void get_device_offset(point& offset); + void write_to_png(const ::std::string& filename); + image_surface map_to_image(const rectangle& extents); + void unmap_image(image_surface& image); + bool has_surface_resource() const; + + void save(); + void restore(); + void push_group(); + void push_group_with_content(content c); + surface pop_group(); + void pop_group_to_source(); + + void set_pattern(); + void set_pattern(const pattern& source); + pattern get_pattern(); + + void set_antialias(antialias a); + antialias get_antialias(); + + void set_dash(); + void set_dash(const ::std::vector& dashes, double offset); + int get_dash_count(); + void get_dash(::std::vector& dashes, double& offset); + + void set_fill_rule(fill_rule fr); + fill_rule get_fill_rule(); + + void set_line_cap(line_cap lc); + line_cap get_line_cap(); + + void set_line_join(line_join lj); + line_join get_line_join(); + + void set_line_width(double width); + double get_line_width(); + + void set_miter_limit(double limit); + double get_miter_limit(); + + void set_compositing_operator(compositing_operator co); + compositing_operator get_compositing_operator(); + + void set_tolerance(double tolerance); + double get_tolerance(); + + void clip(); + void clip_extents(point& pt0, point& pt1); + bool in_clip(const point& pt); + void reset_clip(); + + ::std::vector copy_clip_rectangle_list(); + + void fill(); + void fill(const surface& s); + void fill_extents(point& pt0, point& pt1); + bool in_fill(const point& pt); + + void mask(const pattern& pttn); + void mask(const surface& surface); + void mask(const surface& surface, const point& origin); + + void paint(); + void paint(const surface& s); + void paint_with_alpha(double alpha); + void paint_with_alpha(const surface& s, double alpha); + + void stroke(); + void stroke(const surface& s); + void stroke_extents(point& pt0, point& pt1); + bool in_stroke(const point& pt); + + void set_path(); + void set_path(const path& p); + + // Transformations + void translate(const point& value); + void scale(const point& value); + void rotate(double angle); + void transform(const matrix& matrix); + void set_matrix(const matrix& matrix); + void get_matrix(matrix& matrix); + void identity_matrix(); + void user_to_device(point& pt); + void user_to_device_distance(point& dpt); + void device_to_user(point& pt); + void device_to_user_distance(point& dpt); + + // Text + void select_font_face(const ::std::string& family, font_slant slant, font_weight weight); + void set_font_size(double size); + void set_font_matrix(const matrix& matrix); + void get_font_matrix(matrix& matrix); + void set_font_options(const font_options& options); + font_options get_font_options(); + void set_font_face(font_face& font_face); + font_face get_font_face(); + void set_scaled_font(const scaled_font& scaled_font); + scaled_font get_scaled_font(); + void show_text(const ::std::string& utf8); + void show_glyphs(const ::std::vector& glyphs); + void show_text_glyphs(const ::std::string& utf8, const ::std::vector& glyphs, const ::std::vector& clusters, text_cluster_flags::text_cluster_flags cluster_flags); + void font_extents(font_extents& extents); + void text_extents(const ::std::string& utf8, text_extents& extents); + void glyph_extents(const ::std::vector& glyphs, ::std::experimental::drawing::text_extents& extents); + }; + + class image_surface : public surface { + friend surface; + protected: + ::std::shared_ptr<::std::vector> _Data; + public: + image_surface() = delete; + image_surface(const image_surface&) = delete; + image_surface& operator=(const image_surface&) = delete; + image_surface(image_surface&& other); + image_surface& operator=(image_surface&& other); + //image_surface(surface::native_handle_type nh, surface::native_handle_type map_of); + image_surface(format format, int width, int height); + image_surface(vector& data, format format, int width, int height, int stride); + // create_similar_image + image_surface(surface& other, format format, int width, int height); + // create_from_png + image_surface(const ::std::string& filename); + + void set_data(::std::vector& data); + ::std::vector get_data(); + format get_format(); + int get_width(); + int get_height(); + int get_stride(); + }; + + int format_stride_for_width(format format, int width); + surface make_surface(surface::native_handle_type nh); // parameters are exposition only. + surface make_surface(format format, int width, int height); // parameters are exposition only. +#if __cplusplus >= 201103L + } +#endif + } + } +} + +#endif diff --git a/qt/src/device.cpp b/qt/src/device.cpp new file mode 100755 index 0000000..8916def --- /dev/null +++ b/qt/src/device.cpp @@ -0,0 +1,37 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +device::native_handle_type device::native_handle() const { + return _Device.get(); +} + +device::device(device::native_handle_type nh) : _Device() { + + _Device = shared_ptr(nh); +} + +device::device(device&& other) { + _Device = move(other._Device); + other._Device = nullptr; +} + +device& device::operator=(device&& other) { + if (this != &other) { + _Device = move(other._Device); + other._Device = nullptr; + } + return *this; +} + +void device::flush() { +} + +void device::acquire() { +} + +void device::release() { +} diff --git a/qt/src/drawing.pro b/qt/src/drawing.pro new file mode 100755 index 0000000..768b0f1 --- /dev/null +++ b/qt/src/drawing.pro @@ -0,0 +1,29 @@ +TEMPLATE = lib +TARGET = drawing +INCLUDEPATH += . ../include +CONFIG += C++11 plugin + +DESTDIR = $$PWD/../lib/$$PLATFORM/$$BUILD +OBJECTS_DIR = $$OUT_PWD/obj/$$PLATFORM/$$BUILD + +# Input +HEADERS += ../include/drawing.h xdrawing.h xdrawinghelpers.h +SOURCES += device.cpp \ + drawing_exception.cpp \ + font_face.cpp \ + font_options.cpp \ + font_options_builder.cpp \ + image_surface.cpp \ + linear_pattern_builder.cpp \ + matrix.cpp \ + path.cpp \ + path_builder.cpp \ + pattern.cpp \ + point.cpp \ + radial_pattern_builder.cpp \ + rgba_color.cpp \ + scaled_font.cpp \ + solid_color_pattern_builder.cpp \ + surface.cpp \ + surface_pattern_builder.cpp \ + toy_font_face.cpp diff --git a/qt/src/drawing_exception.cpp b/qt/src/drawing_exception.cpp new file mode 100755 index 0000000..0a813f7 --- /dev/null +++ b/qt/src/drawing_exception.cpp @@ -0,0 +1,22 @@ + +#include "drawing.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +drawing_exception::drawing_exception() noexcept : _Status(status::success) { } + +drawing_exception::drawing_exception(status s) noexcept : _Status(s) { } + +drawing_exception::~drawing_exception() noexcept { } + +const char * drawing_exception::what() const noexcept { + // TODO: FIX + //return cairo_status_to_string(_Status_to_cairo_status_t(_Status)); + return ""; +} + +status drawing_exception::get_status() const noexcept { + return _Status; +} diff --git a/qt/src/font_face.cpp b/qt/src/font_face.cpp new file mode 100755 index 0000000..126f693 --- /dev/null +++ b/qt/src/font_face.cpp @@ -0,0 +1,29 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +font_face::native_handle_type font_face::native_handle() const { + return _Font_face.get(); +} + +font_face::font_face(font_face&& other) { + _Font_face = move(other._Font_face); + other._Font_face = nullptr; +} + +font_face& font_face::operator=(font_face&& other) { + if (this != &other) { + _Font_face = move(other._Font_face); + other._Font_face = nullptr; + } + return *this; +} + +font_face::font_face(font_face::native_handle_type nh) { + _Font_face = shared_ptr(nh); +} + +font_face::~font_face() { +} diff --git a/qt/src/font_options.cpp b/qt/src/font_options.cpp new file mode 100755 index 0000000..06976d5 --- /dev/null +++ b/qt/src/font_options.cpp @@ -0,0 +1,49 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +font_options::native_handle_type font_options::native_handle() const { + return _Font_options.get(); +} + +font_options::font_options(font_options&& other) { + _Font_options = move(other._Font_options); + other._Font_options = nullptr; +} + +font_options& font_options::operator=(font_options&& other) { + if (this != &other) { + _Font_options = move(other._Font_options); + other._Font_options = nullptr; + } + return *this; +} + +font_options::font_options(antialias a, subpixel_order /*so*/, hint_style hs, hint_metrics /*hm*/) +: _Font_options(shared_ptr<_QFontOptions>(new _QFontOptions)) { + _Font_options->styleStrategy = _Antialias_to_QFontOptions(a); + _Font_options->hintingPreference = _Hint_style_to_QFontOptions(hs); +} + +font_options::font_options(font_options::native_handle_type nh) { + _Font_options = shared_ptr<_QFontOptions>(nh); +} + +antialias font_options::get_antialias() const { + return _QFontOptions_to_antialias(_Font_options->styleStrategy); +} + +subpixel_order font_options::get_subpixel_order() const { + return subpixel_order::default_subpixel_order; +} + +hint_style font_options::get_hint_style() const { + return _QFontOptions_to_hint_style(_Font_options->hintingPreference); +} + +hint_metrics font_options::get_hint_metrics() const { + return hint_metrics::default_hint_metrics; +} diff --git a/qt/src/font_options_builder.cpp b/qt/src/font_options_builder.cpp new file mode 100755 index 0000000..7ad3e3a --- /dev/null +++ b/qt/src/font_options_builder.cpp @@ -0,0 +1,59 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +font_options_builder::font_options_builder(font_options_builder&& other) +: _Antialias(move(other._Antialias)) +, _Subpixel_order(move(other._Subpixel_order)) +, _Hint_style(move(other._Hint_style)) +, _Hint_metrics(move(other._Hint_metrics)) { +} + +font_options_builder& font_options_builder::operator=(font_options_builder&& other) { + if (this != &other) { + _Antialias = move(other._Antialias); + _Subpixel_order = move(other._Subpixel_order); + _Hint_style = move(other._Hint_style); + _Hint_metrics = move(other._Hint_metrics); + } + return *this; +} + +font_options font_options_builder::get_font_options() const { + return font_options(_Antialias, _Subpixel_order, _Hint_style, _Hint_metrics); +} + +void font_options_builder::set_antialias(antialias a) { + _Antialias = a; +} + +antialias font_options_builder::get_antialias() const { + return _Antialias; +} + +void font_options_builder::set_subpixel_order(subpixel_order so) { + _Subpixel_order = so; +} + +subpixel_order font_options_builder::get_subpixel_order() const { + return _Subpixel_order; +} + +void font_options_builder::set_hint_style(hint_style hs) { + _Hint_style = hs; +} + +hint_style font_options_builder::get_hint_style() const { + return _Hint_style; +} + +void font_options_builder::set_hint_metrics(hint_metrics hm) { + _Hint_metrics = hm; +} + +hint_metrics font_options_builder::get_hint_metrics() const { + return _Hint_metrics; +} diff --git a/qt/src/image_surface.cpp b/qt/src/image_surface.cpp new file mode 100755 index 0000000..50f3da0 --- /dev/null +++ b/qt/src/image_surface.cpp @@ -0,0 +1,92 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" +#include + +using namespace std; +using namespace std::experimental::drawing; + +image_surface::image_surface(image_surface&& other) : surface(move(other)) { + _Data = move(other._Data); + other._Data = nullptr; +} + +image_surface& image_surface::operator=(image_surface&& other) { + if (this != &other) { + surface::operator=(move(other)); + _Data = move(other._Data); + other._Data = nullptr; + } + return *this; +} + +image_surface::image_surface(format format, int width, int height) + : surface({ nullptr, nullptr }) + , _Data(nullptr) { + _Surface = unique_ptr(new QImage(width, height, _Format_to_QImage_Format(format))); +} + +image_surface::image_surface(vector& data, format format, int width, int height, int stride) + : surface({ nullptr, nullptr }) + , _Data(new vector) { + assert(stride == format_stride_for_width(format, width)); + _Data->resize(height * stride); + _Data->assign(begin(data), end(data)); + _Surface = unique_ptr(new QImage(_Data->data(), width, height, stride, _Format_to_QImage_Format(format))); +} + +image_surface::image_surface(surface& other, format format, int width, int height) + : surface({ nullptr, nullptr }) + , _Data(nullptr) { + _Surface = unique_ptr(new QImage(static_cast(other.native_handle().csfce)->constBits(), width, height, _Format_to_QImage_Format(format))); +} + +image_surface::image_surface(const string& filename) + : surface({ nullptr, nullptr }) + , _Data(nullptr) { + _Surface = unique_ptr(new QImage(QString::fromStdString(filename))); +} + +void image_surface::set_data(vector& data) { + auto expected_size = static_cast(get_stride() * get_height()); + if (data.size() != static_cast(expected_size)) { + throw drawing_exception(::std::experimental::drawing::status::invalid_stride); + } + if (_Surface.get() == nullptr) { + throw drawing_exception(::std::experimental::drawing::status::null_pointer); + } + auto imageData = static_cast(_Surface.get())->bits(); + if (imageData == nullptr) { + throw drawing_exception(::std::experimental::drawing::status::null_pointer); + } + ::std::memcpy(imageData, data.data(), expected_size); +} + +vector image_surface::get_data() { + auto required_size = get_stride() * get_height(); + vector data; + auto imageData = static_cast(_Surface.get())->constBits(); + if (imageData == nullptr) { + data.clear(); + } + else { + data.assign(imageData, imageData + required_size); + } + return data; +} + +format image_surface::get_format() { + return _QImage_Format_to_format(static_cast(_Surface.get())->format()); +} + +int image_surface::get_width() { + return static_cast(_Surface.get())->width(); +} + +int image_surface::get_height() { + return static_cast(_Surface.get())->height(); +} + +int image_surface::get_stride() { + return static_cast(_Surface.get())->bytesPerLine(); +} diff --git a/qt/src/linear_pattern_builder.cpp b/qt/src/linear_pattern_builder.cpp new file mode 100755 index 0000000..e418971 --- /dev/null +++ b/qt/src/linear_pattern_builder.cpp @@ -0,0 +1,119 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +linear_pattern_builder::linear_pattern_builder(linear_pattern_builder&& other) +: _Pattern_type(move(other._Pattern_type)) +, _Extend(move(other._Extend)) +, _Filter(move(other._Filter)) +, _Matrix(move(other._Matrix)) +, _Point0(move(other._Point0)) +, _Point1(move(other._Point1)) +, _Color_stops(move(other._Color_stops)) { +} + +linear_pattern_builder& linear_pattern_builder::operator=(linear_pattern_builder&& other) { + if (this != &other) { + _Pattern_type = move(other._Pattern_type); + _Extend = move(other._Extend); + _Filter = move(other._Filter); + _Matrix = move(other._Matrix); + _Point0 = move(other._Point0); + _Point1 = move(other._Point1); + _Color_stops = move(other._Color_stops); + } + return *this; +} + +linear_pattern_builder::linear_pattern_builder(const point& pt0, const point& pt1) +: _Pattern_type(pattern_type::linear) +, _Extend(extend::default_extend) +, _Filter(filter::default_filter) +, _Matrix(matrix::init_identity()) +, _Point0(pt0) +, _Point1(pt1) +, _Color_stops() { +} + +pattern linear_pattern_builder::get_pattern() { + QLinearGradient pat(_Point0.x, _Point0.y, _Point1.x, _Point1.y); + for (const auto& stop : _Color_stops) { + pat.setColorAt(get<0>(stop), rgba_color_to_QColor(get<1>(stop))); + } + + return pattern(new QBrush(pat)); +} + +void linear_pattern_builder::set_extend(extend e) { + _Extend = e; +} + +extend linear_pattern_builder::get_extend() { + return _Extend; +} + +void linear_pattern_builder::set_filter(filter f) { + _Filter = f; +} + +filter linear_pattern_builder::get_filter() { + return _Filter; +} + +void linear_pattern_builder::set_matrix(const matrix& m) { + _Matrix = m; +} + +matrix linear_pattern_builder::get_matrix() { + return _Matrix; +} + +void linear_pattern_builder::add_color_stop_rgba(double offset, const rgba_color& color) { + assert(offset >= 0.0 && offset <= 1.0); + assert(color.r >= 0.0 && color.r <= 1.0); + assert(color.g >= 0.0 && color.g <= 1.0); + assert(color.b >= 0.0 && color.b <= 1.0); + assert(color.a >= 0.0 && color.a <= 1.0); + _Color_stops.push_back(make_tuple(offset, color)); +} + +int linear_pattern_builder::get_color_stop_count() { + return static_cast(_Color_stops.size()); +} + +void linear_pattern_builder::get_color_stop_rgba(int index, double& offset, rgba_color& color) { + if (index >= _Color_stops.size() || index < 0) { + _Throw_if_failed_status(status::invalid_index); + } + + const auto& stop = _Color_stops.at(index); + offset = get<0>(stop); + color = get<1>(stop); +} + +void linear_pattern_builder::set_color_stop_rgba(int index, double offset, const rgba_color& color) { + assert(offset >= 0.0 && offset <= 1.0); + assert(color.r >= 0.0 && color.r <= 1.0); + assert(color.g >= 0.0 && color.g <= 1.0); + assert(color.b >= 0.0 && color.b <= 1.0); + assert(color.a >= 0.0 && color.a <= 1.0); + + if (index >= _Color_stops.size() || index < 0) { + _Throw_if_failed_status(status::invalid_index); + } + + _Color_stops[index] = make_tuple(offset, color); +} + +void linear_pattern_builder::get_linear_points(point& pt0, point& pt1) { + pt0 = _Point0; + pt1 = _Point1; +} + +void linear_pattern_builder::set_linear_points(const point& pt0, const point& pt1) { + _Point0 = pt0; + _Point1 = pt1; +} diff --git a/qt/src/matrix.cpp b/qt/src/matrix.cpp new file mode 100755 index 0000000..33548f0 --- /dev/null +++ b/qt/src/matrix.cpp @@ -0,0 +1,111 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +matrix matrix::init_identity() { + return{ 1.0, 0.0, 0.0, 1.0, 0.0, 0.0 }; +} + +matrix matrix::init_translate(const point& value) { + return{ 1.0, 0.0, 0.0, 1.0, value.x, value.y }; +} + +matrix matrix::init_scale(const point& value) { + return{ value.x, 0.0, 0.0, value.y, 0.0, 0.0 }; +} + +matrix matrix::init_rotate(double radians) { + auto sine = sin(radians); + auto cosine = cos(radians); + return{ cosine, sine, -sine, cosine, 0.0, 0.0 }; +} + +matrix matrix::init_shear_x(double factor) { + return{ 1.0, 0.0, factor, 1.0, 0.0, 0.0 }; +} + +matrix matrix::init_shear_y(double factor) { + return{ 1.0, factor, 0.0, 1.0, 0.0, 0.0 }; +} + +matrix& matrix::translate(const point& value) { + *this = init_translate(value) * (*this); + return *this; +} + +matrix& matrix::scale(const point& value) { + *this *= init_scale(value); + return *this; +} + +matrix& matrix::rotate(double radians) { + *this *= init_rotate(radians); + return *this; +} + +matrix& matrix::shear_x(double factor) { + *this *= init_shear_x(factor); + return *this; +} + +matrix& matrix::shear_y(double factor) { + *this *= init_shear_y(factor); + return *this; +} + +double matrix::determinant() { + if (isnan(x0) || isnan(y0)) { + throw drawing_exception(status::invalid_matrix); + } + return xx * yy - yx * xy; +} + +void matrix::invert() { + cairo_matrix_t cm{ xx, yx, xy, yy, x0, y0 }; + _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_matrix_invert(&cm))); + xx = cm.xx; + yx = cm.yx; + xy = cm.xy; + yy = cm.yy; + x0 = cm.x0; + y0 = cm.y0; +} + +matrix matrix::operator*=(const matrix& rhs) { + xx = (xx * rhs.xx) + (yx * rhs.xy); + yx = (xx * rhs.yx) + (yx * rhs.yy); + xy = (xy * rhs.xx) + (yy * rhs.xy); + yy = (xy * rhs.yx) + (yy * rhs.yy); + x0 = (x0 * rhs.xx) + (y0 * rhs.xy) + x0; + y0 = (x0 * rhs.yx) + (y0 * rhs.yy) + y0; + + return *this; +} + +namespace std { + namespace experimental { + namespace drawing { + matrix operator*(const matrix& lhs, const matrix& rhs) { + return matrix{ + (lhs.xx * rhs.xx) + (lhs.yx * rhs.xy), + (lhs.xx * rhs.yx) + (lhs.yx * rhs.yy), + (lhs.xy * rhs.xx) + (lhs.yy * rhs.xy), + (lhs.xy * rhs.yx) + (lhs.yy * rhs.yy), + (lhs.x0 * rhs.xx) + (lhs.y0 * rhs.xy) + lhs.x0, + (lhs.x0 * rhs.yx) + (lhs.y0 * rhs.yy) + lhs.y0 + }; + } + } + } +} + +point matrix::transform_distance(const point& dist) const { + return{ xx * dist.x + xy * dist.y, yx * dist.x + yy * dist.y }; +} + +point matrix::transform_point(const point& pt) const { + return transform_distance(pt) + point{ x0, y0 }; +} diff --git a/qt/src/path.cpp b/qt/src/path.cpp new file mode 100755 index 0000000..7035ea4 --- /dev/null +++ b/qt/src/path.cpp @@ -0,0 +1,46 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +path::path(const path_builder& pb) +: _Data(pb._Data) +, _Has_current_point(pb._Has_current_point) +, _Current_point(pb._Current_point) +, _Extents_pt0(pb._Extents_pt0) +, _Extents_pt1(pb._Extents_pt1) { +} + +path::path(path&& other) +: _Data(move(other._Data)) +, _Has_current_point(move(other._Has_current_point)) +, _Current_point(move(other._Current_point)) +, _Extents_pt0(move(other._Extents_pt0)) +, _Extents_pt1(move(other._Extents_pt0)) { +} + +path& path::operator=(path&& other) { + if (this != &other) { + _Data = move(other._Data); + _Has_current_point = move(other._Has_current_point); + _Current_point = move(other._Current_point); + _Extents_pt0 = move(other._Extents_pt0); + _Extents_pt1 = move(other._Extents_pt1); + } + return *this; +} + +vector path::get_data() const { + return vector(_Data); +} + +const vector& path::get_data_ref() const { + return _Data; +} + +void path::get_path_extents(point& pt0, point& pt1) const { + pt0 = _Extents_pt0; + pt1 = _Extents_pt1; +} diff --git a/qt/src/path_builder.cpp b/qt/src/path_builder.cpp new file mode 100755 index 0000000..40e0b06 --- /dev/null +++ b/qt/src/path_builder.cpp @@ -0,0 +1,701 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" +#include + +using namespace std; +using namespace std::experimental::drawing; + +path_builder::path_builder() + : _Data() + , _Has_current_point() + , _Current_point() + , _Extents_pt0() + , _Extents_pt1() + , _Transform_matrix(matrix::init_identity()) + , _Origin() { +} + +path_builder::path_builder(path_builder&& other) + : _Data(move(other._Data)) + , _Has_current_point(move(other._Has_current_point)) + , _Current_point(move(other._Current_point)) + , _Extents_pt0(move(other._Extents_pt0)) + , _Extents_pt1(move(other._Extents_pt1)) + , _Transform_matrix(move(other._Transform_matrix)) + , _Origin(move(other._Origin)) { +} + +path_builder& path_builder::operator=(path_builder&& other) { + if (this != &other) { + _Data = move(other._Data); + _Has_current_point = move(other._Has_current_point); + _Current_point = move(other._Current_point); + _Extents_pt0 = move(other._Extents_pt0); + _Extents_pt1 = move(other._Extents_pt1); + _Transform_matrix = move(other._Transform_matrix); + _Origin = move(other._Origin); + } + return *this; +} + +path path_builder::get_path() const { + return path(*this); +} + +path path_builder::get_path_flat() const { + throw runtime_error("Not implemented yet."); +} + +bool path_builder::has_current_point() { + return _Has_current_point; +} + +void path_builder::append_path(const path& p) { + const auto& data = p.get_data_ref(); + for (const auto& item : data) { + _Data.push_back(item); + } +} + +void path_builder::append_path(const path_builder& p) { + for (const auto& item : p._Data) { + _Data.push_back(item); + } +} + +point path_builder::get_current_point() { + assert(has_current_point()); + return point((*_Data.crend()).point); +} + +void path_builder::new_sub_path() { + path_data pd{ }; + pd.header.type = path_data_type::new_sub_path; + pd.header.length = 1; + _Data.push_back(pd); +} + +void path_builder::close_path() { + path_data pd{ }; + pd.header.type = path_data_type::close_path; + pd.header.length = 1; + _Data.push_back(pd); +} + +point _Rotate_point(const point& pt, double angle, bool clockwise = true) { + if (clockwise) { + return{ pt.x * cos(angle) + pt.y * sin(angle), -(pt.x * -(sin(angle)) + pt.y * cos(angle)) }; + } + else { + return{ pt.x * cos(angle) + pt.y * sin(angle), pt.x * -(sin(angle)) + pt.y * cos(angle) }; + } +} + +void _Add_arc_as_beziers_to_path_builder(const point& center, double radius, double angle1, double angle2, path_builder& pb, bool arcNegative = false) { + if (arcNegative) { + while (angle2 > angle1) { + angle2 -= _PI * 2.0; + } + } + else { + while (angle2 < angle1) { + angle2 += _PI * 2.0; + } + } + point pt0, pt1, pt2, pt3; + int bezierCount = 1; + double theta; + if (arcNegative) { + theta = angle1 - angle2; + } + else { + theta = angle2 - angle1; + } + double phi; + + { + // See: DeVeneza, Richard A., "How to determine the control points of a Bézier curve that approximates a small circular arc" (Nov. 2004) [ http://www.tinaja.com/glib/bezcirc2.pdf ]. + + while (theta >= (_PI / 2.0)) { + theta /= 2.0; + bezierCount += bezierCount; + } + + phi = theta / 2.0; + + auto cosinePhi = cos(phi); + auto sinePhi = sin(phi); + + pt0.x = cosinePhi; + pt0.y = -sinePhi; + + pt3.x = pt0.x; + pt3.y = -pt0.y; + + pt1.x = (4.0 - cosinePhi) / 3.0; + pt1.y = -(((1.0 - cosinePhi) * (3.0 - cosinePhi)) / (3.0 * sinePhi)); + + pt2.x = pt1.x; + pt2.y = -pt1.y; + + } + + { + if (!arcNegative) { + phi = -phi; + } + // Rotate all points to start with a zero angle. + pt0 = _Rotate_point(pt0, phi); + pt1 = _Rotate_point(pt1, phi); + pt2 = _Rotate_point(pt2, phi); + pt3 = _Rotate_point(pt3, phi); + + if (arcNegative) { + auto tempPt = pt3; + pt3 = pt0; + pt0 = tempPt; + tempPt = pt2; + pt2 = pt1; + pt1 = tempPt; + } + } + + auto currentTheta = angle1; + + const auto startPoint = center + _Rotate_point(pt0 * radius, currentTheta); + if (pb.has_current_point()) { + pb.line_to(center + _Rotate_point(pt0 * radius, currentTheta)); + } + else { + pb.new_sub_path(); + } + + pb.move_to(center); + pb.line_to(startPoint); + + // We start at the point derived from angle1 and continue adding beziers until the count reaches zero. + // The point we have is already rotated by half of theta. + for (; bezierCount > 0; bezierCount--) { + pb.curve_to( + center + _Rotate_point(pt1 * radius, currentTheta), + center + _Rotate_point(pt2 * radius, currentTheta), + center + _Rotate_point(pt3 * radius, currentTheta) + ); + + if (arcNegative) { + currentTheta -= theta; + } + else { + currentTheta += theta; + } + } + pb.line_to(center); + pb.close_path(); +} + +void path_builder::arc(const point& center, double radius, double angle1, double angle2) { + _Add_arc_as_beziers_to_path_builder(center, radius, angle1, angle2, *this, false); + close_path(); +} + +void path_builder::arc_negative(const point& center, double radius, double angle1, double angle2) { + _Add_arc_as_beziers_to_path_builder(center, radius, angle1, angle2, *this, true); + close_path(); +} + +void path_builder::curve_to(const point& pt0, const point& pt1, const point& pt2) { + if (!_Has_current_point) { + move_to(pt0); + } + path_data pd; + pd.header.type = path_data_type::curve_to; + pd.header.length = 4; + _Data.push_back(pd); + pd = { }; + pd.point = _Transform_matrix.transform_point(pt0 - _Origin) + _Origin; + _Data.push_back(pd); + pd.point = _Transform_matrix.transform_point(pt1 - _Origin) + _Origin; + _Data.push_back(pd); + pd.point = _Transform_matrix.transform_point(pt2 - _Origin) + _Origin; + _Data.push_back(pd); + _Has_current_point = true; + _Current_point = pd.point; +} + +void path_builder::line_to(const point& pt) { + path_data pd; + if (!_Has_current_point) { + move_to(pt); + return; + } + pd.header.type = path_data_type::line_to; + pd.header.length = 2; + _Data.push_back(pd); + pd = { }; + pd.point = _Transform_matrix.transform_point(pt - _Origin) + _Origin; + _Data.push_back(pd); + _Has_current_point = true; + _Current_point = pd.point; +} + +void path_builder::move_to(const point& pt) { + path_data pd; + pd.header.type = path_data_type::move_to; + pd.header.length = 2; + _Data.push_back(pd); + pd = { }; + pd.point = _Transform_matrix.transform_point(pt - _Origin) + _Origin; + _Data.push_back(pd); + _Has_current_point = true; + _Current_point = pd.point; +} + +void path_builder::rectangle(const experimental::drawing::rectangle& rect) { + move_to({ rect.x, rect.y }); + line_to({ rect.x + rect.width, rect.y }); + line_to({ rect.x + rect.width, rect.y + rect.height }); + line_to({ rect.x, rect.y + rect.height }); + close_path(); +} + +void path_builder::rel_curve_to(const point& dpt0, const point& dpt1, const point& dpt2) { + if (!_Has_current_point) { + throw drawing_exception(status::no_current_point); + } + curve_to(dpt0 + _Current_point, dpt1 + _Current_point, dpt2 + _Current_point); +} + +void path_builder::rel_line_to(const point& dpt) { + if (!_Has_current_point) { + throw drawing_exception(status::no_current_point); + } + line_to(dpt + _Current_point); +} + +void path_builder::rel_move_to(const point& dpt) { + if (!_Has_current_point) { + throw drawing_exception(status::no_current_point); + } + move_to(dpt + _Current_point); +} + +void path_builder::set_transform_matrix(const matrix& m) { + _Transform_matrix = m; +} + +matrix path_builder::get_transform_matrix() const { + return _Transform_matrix; +} + +void path_builder::set_origin(const point& pt) { + _Origin = pt; +} + +point path_builder::get_origin() const { + return _Origin; +} + +vector path_builder::get_data() const { + return vector(_Data); +} + +const vector& path_builder::get_data_ref() const { + return _Data; +} + +vector& path_builder::get_data_ref() { + return _Data; +} + +point operator*(double lhs, const point& rhs) { + return{ lhs * rhs.x, lhs * rhs.y }; +} + +// See: http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/ +bool _Almost_equal_relative(double a, double b, double epsilon) { + auto diff = abs(a - b); + a = abs(a); + b = abs(b); + auto largest = (b > a) ? b : a; + if (diff <= largest * epsilon) { + return true; + } + return false; +} + +double _Curve_value_for_t(double a, double b, double c, double d, double t) { + return pow(1.0 - t, 3.0) * a + 3.0 * pow(1.0 - t, 2.0) * t * b + 3.0 * (1.0 - t) * pow(t, 2.0) * c + pow(t, 3.0) * d; +} + +inline point _Cubic_bezier_derivative_for_t(const point& pt0, const point& pt1, const point& pt2, const point& pt3, double t) { + return 3.0 * pow(1.0 - t, 2.0) * (pt1 - pt0) + 6.0 * (1.0 - t) * t * (pt2 - pt1) + 3.0 * pow(t, 2.0) * (pt3 - pt2); +} + +inline bool _Same_sign(double lhs, double rhs) { + return ((lhs < 0.0) && (rhs < 0.0)) || ((lhs > 0.0) && (rhs > 0.0)); +} + +double _Find_t_for_d_of_t_equal_zero(const point& pt0, const point& pt1, const point& pt2, const point& pt3, double t0, double t2, const bool findX, const double epsilon = DBL_EPSILON) { + // Validate that t0 is the low value, t2 is the high value, t0 is not equal to t2, and that both are in the range [0.0, 1.0]. + assert(t0 >= 0.0 && t0 < t2 && t2 <= 1.0); + // Find the midpoint. + double t1 = (t2 - t0) / 2.0 + t0; + + double t1Previous = -1.0; + // Short-circuit and return current t0 if t0 and t1 are equal or t1 and t1Previous are equal to avoid infinite looping. + if (_Almost_equal_relative(t0, t1, epsilon) || _Almost_equal_relative(t1, t1Previous, epsilon)) { + return t0; + } + auto dt0 = _Cubic_bezier_derivative_for_t(pt0, pt1, pt2, pt3, t0); + auto dt2 = _Cubic_bezier_derivative_for_t(pt0, pt1, pt2, pt3, t2); + + if (findX) { + assert(!_Same_sign(dt0.x, dt2.x)); + } + else { + assert(!_Same_sign(dt0.y, dt2.y)); + } + + auto dt1 = +_Cubic_bezier_derivative_for_t(pt0, pt1, pt2, pt3, t1); + + // If t0 and t1 are equal or t1 and t1Previous are equal, we can no longer get a meaningful t1 value so the value of t0 will have to be accepted as close enough. + while (!_Almost_equal_relative(t0, t1, epsilon) && !_Almost_equal_relative(t1, t1Previous, epsilon)) { + if (findX) { + if (_Almost_equal_relative(dt1.x, 0.0, epsilon)) { + return t1; + } + if (_Same_sign(dt0.x, dt1.x)) { + // Since t0 and t2 are different signs and t0 and t1 are the same sign, we know our value lies between t1 and t2 so set t0 = t1 and calculate the new t1. + t0 = t1; + t1Previous = t1; + t1 = (t2 - t0) / 2.0 + t0; + } + else { + assert(_Same_sign(dt1.x, dt2.x)); + // Since t0 and t2 are different signs and t1 and t2 are the same sign, we know our value lies between t0 and t1 so set t2 = t1 and calculate the new t1. + t2 = t1; + t1Previous = t1; + t1 = (t2 - t0) / 2.0 + t0; + } + } + else { + if (_Almost_equal_relative(dt1.y, 0.0, epsilon)) { + return t1; + } + if (_Same_sign(dt0.y, dt1.y)) { + // Since t0 and t2 are different signs and t0 and t1 are the same sign, we know our value lies between t1 and t2 so set t0 = t1 and calculate the new t1. + t0 = t1; + t1Previous = t1; + t1 = (t2 - t0) / 2.0 + t0; + } + else { + assert(_Same_sign(dt1.y, dt2.y)); + // Since t0 and t2 are different signs and t1 and t2 are the same sign, we know our value lies between t0 and t1 so set t2 = t1 and calculate the new t1. + t2 = t1; + t1Previous = t1; + t1 = (t2 - t0) / 2.0 + t0; + } + } + } + return t1; +} + +void _Curve_to_extents(const point& pt0, const point& pt1, const point& pt2, const point& pt3, point& extents0, point& extents1) { + // We know at a minimum that the extents are the two knots, pt0 and pt3. The only question is whether the extents go beyond those two points. + extents0.x = min(pt0.x, pt3.x); + extents0.y = min(pt0.y, pt3.y); + extents1.x = max(pt0.x, pt3.x); + extents1.y = max(pt0.y, pt3.y); + + // Find X's and Ys (between 0 and 2). + int numPoints = 0; + int numXs = 0; + int numYs = 0; + + const auto dt0 = _Cubic_bezier_derivative_for_t(pt0, pt1, pt2, pt3, 0.0); + const auto dt1 = _Cubic_bezier_derivative_for_t(pt0, pt1, pt2, pt3, 0.5); + const auto dt2 = _Cubic_bezier_derivative_for_t(pt0, pt1, pt2, pt3, 1.0); + bool foundLowX = false; + bool foundHighX = false; + bool foundLowY = false; + bool foundHighY = false; + + const double epsilon = DBL_EPSILON; + + // X values + if (_Almost_equal_relative(dt0.x, 0.0, epsilon)) { + assert(numXs == 0); + // First knot is critical. We already assigned it so we're done with that. + foundLowX = true; + numPoints++; + numXs++; + if (_Same_sign(dt1.x, dt2.x)) { + // No second critical point so the second knot is the other extent and we already assigned it so we're done with that. + foundHighX = true; + numPoints++; + numXs++; + } + else { + auto t = _Find_t_for_d_of_t_equal_zero(pt0, pt1, pt2, pt3, 0.5, 1.0, true); + auto xval = _Curve_value_for_t(pt0.x, pt1.x, pt2.x, pt3.x, t); + // We do this min/max assignment because critical points just signal a change in curve direction, not that the critical point is actually a min/max point. + extents0.x = min(extents0.x, xval); + extents1.x = max(extents1.x, xval); + foundHighX = true; + numPoints++; + numXs++; + } + } + if (_Almost_equal_relative(dt1.x, 0.0, epsilon)) { + assert(numXs == 0); + // Center is only critical. + auto cxval = _Curve_value_for_t(pt0.x, pt1.x, pt2.x, pt3.x, 0.5); + // Arbitrarily use pt3.x rather than pt0.x; they are the same value regardless. + assert(_Almost_equal_relative(pt0.x, pt3.x, epsilon)); + extents0.x = min(cxval, pt3.x); + extents1.x = max(cxval, pt3.x); + numPoints += 2; + numXs += 2; + } + if (_Almost_equal_relative(dt2.x, 0.0, epsilon)) { + assert(numXs == 0); + numPoints++; + numXs++; + foundHighX = true; + if (_Same_sign(dt0.x, dt1.x)) { + // No second critical point so the first knot is the other extent and we already assigned it so we're done with that. + foundLowX = true; + numPoints++; + numXs++; + } + else { + auto t = _Find_t_for_d_of_t_equal_zero(pt0, pt1, pt2, pt3, 0.0, 0.5, true); + auto xval = _Curve_value_for_t(pt0.y, pt1.y, pt2.y, pt3.y, t); + // We do this min/max assignment because critical points just signal a change in curve direction, not that the critical point is actually a min/max point. + extents0.x = min(extents0.x, xval); + extents1.x = max(extents1.x, xval); + foundLowX = true; + numPoints++; + numXs++; + } + } + if (numXs == 0) { + if (_Same_sign(dt0.x, dt1.x) && _Same_sign(dt1.x, dt2.x)) { + // No critical points on X: use ends. + extents0.x = min(pt0.x, pt3.x); + extents1.x = max(pt0.x, pt3.x); + foundLowX = true; + foundHighX = true; + numPoints += 2; + numXs += 2; + } + } + if (!foundLowX) { + if (_Same_sign(dt0.x, dt1.x)) { + // There is no critical point between dt0.x and dt1.x so the lowX point is pt0.x, which we already assigned. + foundLowX = true; + numPoints++; + numXs++; + } + else { + auto t = _Find_t_for_d_of_t_equal_zero(pt0, pt1, pt2, pt3, 0.0, 0.5, true); + auto xval = _Curve_value_for_t(pt0.x, pt1.x, pt2.x, pt3.x, t); + // We do this min/max assignment because critical points just signal a change in curve direction, not that the critical point is actually a min/max point. + extents0.x = min(extents0.x, xval); + extents1.x = max(extents1.x, xval); + foundLowX = true; + numPoints++; + numXs++; + } + } + if (!foundHighX) { + if (_Same_sign(dt1.x, dt2.x)) { + // There is no critical point between dt1.x and dt2.x so the highX point is pt3.x, which we already assigned. + foundHighX = true; + numPoints++; + numXs++; + } + else { + auto t = _Find_t_for_d_of_t_equal_zero(pt0, pt1, pt2, pt3, 0.5, 1.0, true); + auto xval = _Curve_value_for_t(pt0.x, pt1.x, pt2.x, pt3.x, t); + // We do this min/max assignment because critical points just signal a change in curve direction, not that the critical point is actually a min/max point. + extents0.x = min(extents0.x, xval); + extents1.x = max(extents1.x, xval); + foundHighX = true; + numPoints++; + numXs++; + } + } + + // Y values + if (_Almost_equal_relative(dt0.y, 0.0, epsilon)) { + assert(numYs == 0); + // First knot is critical. We already assigned it so we're done with that. + foundLowY = true; + numPoints++; + numYs++; + if (_Same_sign(dt1.y, dt2.y)) { + // No second critical point so the second knot is the other extent and we already assigned it so we're done with that. + foundHighY = true; + numPoints++; + numYs++; + } + else { + auto t = _Find_t_for_d_of_t_equal_zero(pt0, pt1, pt2, pt3, 0.5, 1.0, true); + auto yval = _Curve_value_for_t(pt0.y, pt1.y, pt2.y, pt3.y, t); + // We do this min/max assignment because critical points just signal a change in curve direction, not that the critical point is actually a min/max point. + extents0.y = min(extents0.y, yval); + extents1.y = max(extents1.y, yval); + foundHighY = true; + numPoints++; + numYs++; + } + } + if (_Almost_equal_relative(dt1.y, 0.0, epsilon)) { + assert(numYs == 0); + // Center is only critical. + auto cyval = _Curve_value_for_t(pt0.y, pt1.y, pt2.y, pt3.y, 0.5); + // Arbitrarily use pt3.y rather than pt0.y; they are the same value regardless. + assert(_Almost_equal_relative(pt0.y, pt3.y, epsilon)); + extents0.y = min(cyval, pt3.y); + extents1.y = max(cyval, pt3.y); + numPoints += 2; + numYs += 2; + } + if (_Almost_equal_relative(dt2.y, 0.0, epsilon)) { + assert(numYs == 0); + numPoints++; + numYs++; + foundHighY = true; + if (_Same_sign(dt0.y, dt1.y)) { + // No second critical point so the first knot is the other extent and we already assigned it so we're done with that. + foundLowY = true; + numPoints++; + numYs++; + } + else { + auto t = _Find_t_for_d_of_t_equal_zero(pt0, pt1, pt2, pt3, 0.0, 0.5, true); + auto yval = _Curve_value_for_t(pt0.y, pt1.y, pt2.y, pt3.y, t); + // We do this min/max assignment because critical points just signal a change in curve direction, not that the critical point is actually a min/max point. + extents0.y = min(extents0.y, yval); + extents1.y = max(extents1.y, yval); + foundLowY = true; + numPoints++; + numYs++; + } + } + if (numYs == 0) { + if (_Same_sign(dt0.y, dt1.y) && _Same_sign(dt1.y, dt2.y)) { + // No critical points on Y: use ends. + extents0.y = min(pt0.y, pt3.y); + extents1.y = max(pt0.y, pt3.y); + foundLowY = true; + foundHighY = true; + numPoints += 2; + numYs += 2; + } + } + if (!foundLowY) { + if (_Same_sign(dt0.y, dt1.y)) { + // There is no critical point between dt0.y and dt1.y so the lowY point is pt0.y, which we already assigned. + foundLowY = true; + numPoints++; + numYs++; + } + else { + auto t = _Find_t_for_d_of_t_equal_zero(pt0, pt1, pt2, pt3, 0.0, 0.5, false); + auto yval = _Curve_value_for_t(pt0.y, pt1.y, pt2.y, pt3.y, t); + extents0.y = min(extents0.y, yval); + extents1.y = max(extents1.y, yval); + foundLowY = true; + numPoints++; + numYs++; + } + } + if (!foundHighY) { + if (_Same_sign(dt1.y, dt2.y)) { + // There is no critical point between dt1.y and dt2.y so the lowY point is pt3.y, which we already assigned. + foundHighY = true; + numPoints++; + numYs++; + } + else { + auto t = _Find_t_for_d_of_t_equal_zero(pt0, pt1, pt2, pt3, 0.5, 1.0, false); + auto yval = _Curve_value_for_t(pt0.y, pt1.y, pt2.y, pt3.y, t); + extents0.y = min(extents0.y, yval); + extents1.y = max(extents1.y, yval); + foundHighY = true; + numPoints++; + numYs++; + } + } + assert(foundLowX && foundLowY && foundHighX && foundHighY && numPoints == 4 && numXs == 2 && numYs == 2); +} + +void path_builder::get_path_extents(point& pt0, point& pt1) const { + bool hasLastPoint = false; + bool hasExtents = false; + point lastPoint{ }; + // pt0 will hold min values; pt1 will hold max values. + for (auto i = 0U; i < _Data.size(); i += _Data[i].header.length) { + auto type = _Data[i].header.type; + + switch (type) { + case std::experimental::drawing::path_data_type::move_to: + lastPoint = _Data[i + 1].point; + hasLastPoint = true; + break; + case std::experimental::drawing::path_data_type::line_to: + if (hasLastPoint) { + if (!hasExtents) { + hasExtents = true; + pt0.x = min(lastPoint.x, _Data[i + 1].point.x); + pt1.x = max(lastPoint.x, _Data[i + 1].point.x); + pt0.y = min(lastPoint.y, _Data[i + 1].point.y); + pt1.y = max(lastPoint.y, _Data[i + 1].point.y); + } + else { + pt0.x = min(min(pt0.x, lastPoint.x), _Data[i + 1].point.x); + pt0.y = min(min(pt0.y, lastPoint.y), _Data[i + 1].point.y); + pt1.x = max(max(pt1.x, lastPoint.x), _Data[i + 1].point.x); + pt1.y = max(max(pt1.y, lastPoint.y), _Data[i + 1].point.y); + } + } + else { + throw drawing_exception(status::invalid_path_data); + } + break; + case std::experimental::drawing::path_data_type::curve_to: + { + point cte0{ }, cte1{ }; + _Curve_to_extents(lastPoint, _Data[i + 1].point, _Data[i + 2].point, _Data[i + 3].point, cte0, cte1); + if (!hasExtents) { + pt0.x = min(cte0.x, cte1.x); + pt0.y = min(cte0.y, cte1.y); + pt1.x = max(cte0.x, cte1.x); + pt1.y = max(cte0.y, cte1.y); + } + else { + pt0.x = min(min(pt0.x, cte0.x), cte1.x); + pt0.y = min(min(pt0.y, cte0.y), cte1.y); + pt1.x = max(max(pt1.x, cte0.x), cte1.x); + pt1.y = max(max(pt1.y, cte0.y), cte1.y); + } + } + break; + case std::experimental::drawing::path_data_type::new_sub_path: + hasLastPoint = false; + break; + case std::experimental::drawing::path_data_type::close_path: + hasLastPoint = false; + break; + default: + throw drawing_exception(status::invalid_path_data); + } + } +} + +void path_builder::reset() { + *this = path_builder(); +} diff --git a/qt/src/pattern.cpp b/qt/src/pattern.cpp new file mode 100755 index 0000000..66deb00 --- /dev/null +++ b/qt/src/pattern.cpp @@ -0,0 +1,39 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +pattern::native_handle_type pattern::native_handle() const { + return _Pattern.get(); +} + +pattern::pattern(pattern::native_handle_type nh) +: _Pattern(nh) +, _Pattern_type(_Qt_brush_style_to_pattern_type(nh->style())) { +} + +pattern::~pattern() { + _Pattern = nullptr; +} + +pattern::pattern(pattern&& other) +: _Pattern(move(other._Pattern)) +, _Pattern_type(move(other._Pattern_type)) { + other._Pattern = nullptr; +} + +pattern& pattern::operator=(pattern&& other) { + if (this != &other) { + _Pattern = move(other._Pattern); + _Pattern_type = move(other._Pattern_type); + other._Pattern = nullptr; + } + + return *this; +} + +pattern_type pattern::get_type() const { + return _Pattern_type; +} diff --git a/qt/src/point.cpp b/qt/src/point.cpp new file mode 100755 index 0000000..aff24b4 --- /dev/null +++ b/qt/src/point.cpp @@ -0,0 +1,100 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +point point::operator+=(const point& rhs) { + x += rhs.x; + y += rhs.y; + return *this; +} + +point point::operator+=(double rhs) { + x += rhs; + y += rhs; + return *this; +} + +point point::operator-=(const point& rhs) { + x -= rhs.x; + y -= rhs.y; + return *this; +} + +point point::operator-=(double rhs) { + x -= rhs; + y -= rhs; + return *this; +} + +point point::operator*=(const point& rhs) { + x *= rhs.x; + y *= rhs.y; + return *this; +} + +point point::operator*=(double rhs) { + x *= rhs; + y *= rhs; + return *this; +} + +point point::operator/=(const point& rhs) { + x /= rhs.x; + y /= rhs.y; + return *this; +} + +point point::operator/=(double rhs) { + x /= rhs; + y /= rhs; + return *this; +} + +namespace std { + namespace experimental { + namespace drawing { + point operator+(const point& lhs) { + return lhs; + } + + point operator+(const point& lhs, const point& rhs) { + return point{ lhs.x + rhs.x, lhs.y + rhs.y }; + } + + point operator+(const point& lhs, double rhs) { + return point{ lhs.x + rhs, lhs.y + rhs }; + } + + point operator-(const point& lhs) { + return point{ -lhs.x, -lhs.y }; + } + + point operator-(const point& lhs, const point& rhs) { + return point{ lhs.x - rhs.x, lhs.y - rhs.y }; + } + + point operator-(const point& lhs, double rhs) { + return point{ lhs.x - rhs, lhs.y - rhs }; + } + + point operator*(const point& lhs, const point& rhs) { + return point{ lhs.x * rhs.x, lhs.y * rhs.y }; + } + + point operator*(const point& lhs, double rhs) { + return point{ lhs.x * rhs, lhs.y * rhs }; + } + + point operator/(const point& lhs, const point& rhs) { + return point{ lhs.x / rhs.x, lhs.y / rhs.y }; + } + + point operator/(const point& lhs, double rhs) { + return point{ lhs.x / rhs, lhs.y / rhs }; + } + } + } +} diff --git a/qt/src/radial_pattern_builder.cpp b/qt/src/radial_pattern_builder.cpp new file mode 100755 index 0000000..b472dad --- /dev/null +++ b/qt/src/radial_pattern_builder.cpp @@ -0,0 +1,133 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +radial_pattern_builder::radial_pattern_builder(radial_pattern_builder&& other) +: _Pattern_type(move(other._Pattern_type)) +, _Extend(move(other._Extend)) +, _Filter(move(other._Filter)) +, _Matrix(move(other._Matrix)) +, _Center0(move(other._Center0)) +, _Radius0(move(other._Radius0)) +, _Center1(move(other._Center1)) +, _Radius1(move(other._Radius1)) +, _Color_stops(move(other._Color_stops)) { +} + +radial_pattern_builder& radial_pattern_builder::operator=(radial_pattern_builder&& other) { + if (this != &other) { + _Pattern_type = move(other._Pattern_type); + _Extend = move(other._Extend); + _Filter = move(other._Filter); + _Matrix = move(other._Matrix); + _Center0 = move(other._Center0); + _Radius0 = move(other._Radius0); + _Center1 = move(other._Center1); + _Radius1 = move(other._Radius1); + _Color_stops = move(other._Color_stops); + } + return *this; +} + +radial_pattern_builder::radial_pattern_builder(const point& center0, double radius0, const point& center1, double radius1) +: _Pattern_type(pattern_type::radial) +, _Extend(extend::default_extend) +, _Filter(filter::default_filter) +, _Matrix(matrix::init_identity()) +, _Center0(center0) +, _Radius0(radius0) +, _Center1(center1) +, _Radius1(radius1) +, _Color_stops() { +} + +pattern radial_pattern_builder::get_pattern() { +// cairo_pattern_set_extend(pat, _Extend_to_cairo_extend_t(_Extend)); +// cairo_pattern_set_filter(pat, _Filter_to_cairo_filter_t(_Filter)); +// cairo_matrix_t mtrx{ _Matrix.xx, _Matrix.yx, _Matrix.xy, _Matrix.yy, _Matrix.x0, _Matrix.y0 }; +// cairo_pattern_set_matrix(pat, &mtrx); + QRadialGradient pat(_Center0.x, _Center0.y, _Radius0, _Center1.x, _Center1.y, _Radius1); + for (const auto& stop : _Color_stops) { + pat.setColorAt(get<0>(stop), rgba_color_to_QColor(get<1>(stop))); + } + + return pattern(new QBrush(pat)); +} + +void radial_pattern_builder::set_extend(extend e) { + _Extend = e; +} + +extend radial_pattern_builder::get_extend() { + return _Extend; +} + +void radial_pattern_builder::set_filter(filter f) { + _Filter = f; +} + +filter radial_pattern_builder::get_filter() { + return _Filter; +} + +void radial_pattern_builder::set_matrix(const matrix& m) { + _Matrix = m; +} + +matrix radial_pattern_builder::get_matrix() { + return _Matrix; +} + +void radial_pattern_builder::add_color_stop_rgba(double offset, const rgba_color& color) { + assert(offset >= 0.0 && offset <= 1.0); + assert(color.r >= 0.0 && color.r <= 1.0); + assert(color.g >= 0.0 && color.g <= 1.0); + assert(color.b >= 0.0 && color.b <= 1.0); + assert(color.a >= 0.0 && color.a <= 1.0); + _Color_stops.push_back(make_tuple(offset, color)); +} + +int radial_pattern_builder::get_color_stop_count() { + return static_cast(_Color_stops.size()); +} + +void radial_pattern_builder::get_color_stop_rgba(int index, double& offset, rgba_color& color) { + if (index >= _Color_stops.size() || index < 0) { + _Throw_if_failed_status(status::invalid_index); + } + + const auto& stop = _Color_stops.at(index); + offset = get<0>(stop); + color = get<1>(stop); +} + +void radial_pattern_builder::set_color_stop_rgba(int index, double offset, const rgba_color& color) { + assert(offset >= 0.0 && offset <= 1.0); + assert(color.r >= 0.0 && color.r <= 1.0); + assert(color.g >= 0.0 && color.g <= 1.0); + assert(color.b >= 0.0 && color.b <= 1.0); + assert(color.a >= 0.0 && color.a <= 1.0); + + if (index >= _Color_stops.size() || index < 0) { + _Throw_if_failed_status(status::invalid_index); + } + + _Color_stops[index] = make_tuple(offset, color); +} + +void radial_pattern_builder::get_radial_circles(point& center0, double& radius0, point& center1, double& radius1) { + center0 = _Center0; + radius0 = _Radius0; + center1 = _Center1; + radius1 = _Radius1; +} + +void radial_pattern_builder::set_radial_circles(const point& center0, double radius0, const point& center1, double radius1) { + _Center0 = center0; + _Radius0 = radius0; + _Center1 = center1; + _Radius1 = radius1; +} diff --git a/qt/src/raster_source_pattern_builder.cpp b/qt/src/raster_source_pattern_builder.cpp new file mode 100755 index 0000000..be8896c --- /dev/null +++ b/qt/src/raster_source_pattern_builder.cpp @@ -0,0 +1,161 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; +using namespace std::placeholders; + +cairo_surface_t* raster_source_pattern_builder::_Cairo_acquire(cairo_pattern_t*, void* this_ptr, cairo_surface_t* target, const cairo_rectangle_int_t* extents) { + auto rsp = static_cast(this_ptr); + rectangle ri_extents{ }; + if (extents == nullptr) { + ri_extents.x = 0.0; + ri_extents.y = 0.0; + ri_extents.width = static_cast(rsp->_Width); + ri_extents.height = static_cast(rsp->_Height); + } + else { + ri_extents.x = static_cast(extents->x); + ri_extents.y = static_cast(extents->y); + ri_extents.width = static_cast(extents->width); + ri_extents.height = static_cast(extents->height); + } + auto acqTarget = surface({ target, nullptr }); + // Increment the reference count of target to avoid its destruction when acqTarget is destroyed. + cairo_surface_reference(target); + auto& acquire_fn = *rsp->_Acquire_fn; + auto result = acquire_fn(rsp->_User_callback_data, acqTarget, ri_extents); + // Increment the reference count of result to avoid its destruction when we return it. + cairo_surface_reference(result.native_handle().csfce); + return result.native_handle().csfce; +} + +void raster_source_pattern_builder::_Cairo_release(cairo_pattern_t*, void* this_ptr, cairo_surface_t* surface) { + auto rsp = static_cast(this_ptr); + if (*rsp->_Release_fn != nullptr) { + // If the user has an explicit release function, increment the reference count since it's the user's responsibility to destroy the surface (e.g. by calling cairo_surface_destroy(surface.native_handle()); ). + cairo_surface_reference(surface); + auto relSurface = experimental::drawing::surface({ surface, nullptr }); + auto& release_fn = *rsp->_Release_fn; + release_fn(rsp->_User_callback_data, relSurface); + } + else { + // If there's no release function, just destroy the surface and proceed. + cairo_surface_destroy(surface); + } +} + +raster_source_pattern_builder::raster_source_pattern_builder(raster_source_pattern_builder&& other) +: _Pattern_type(move(other._Pattern_type)) +, _Extend(move(other._Extend)) +, _Filter(move(other._Filter)) +, _Matrix(move(other._Matrix)) +, _User_callback_data(move(other._User_callback_data)) +, _Width(move(other._Width)) +, _Height(move(other._Height)) +, _Content(move(other._Content)) +, _Acquire_fn(move(other._Acquire_fn)) +, _Release_fn(move(other._Release_fn)) { +} + +raster_source_pattern_builder& raster_source_pattern_builder::operator=(raster_source_pattern_builder&& other) { + if (this != &other) { + _Pattern_type = move(other._Pattern_type); + _Extend = move(other._Extend); + _Filter = move(other._Filter); + _Matrix = move(other._Matrix); + _User_callback_data = move(other._User_callback_data); + _Width = move(other._Width); + _Height = move(other._Height); + _Content = move(other._Content); + _Acquire_fn = move(other._Acquire_fn); + _Release_fn = move(other._Release_fn); + other._User_callback_data = nullptr; + other._Width = { }; + other._Height = { }; + other._Acquire_fn = nullptr; + other._Release_fn = nullptr; + } + return *this; +} + +raster_source_pattern_builder::raster_source_pattern_builder(void* user_data, content content, int width, int height) +: _Pattern_type(pattern_type::raster_source) +, _Extend(extend::default_extend) +, _Filter(filter::default_filter) +, _Matrix(matrix::init_identity()) +, _User_callback_data(user_data) +, _Width(width) +, _Height(height) +, _Content(content) +, _Acquire_fn(new function) +, _Release_fn(new function) { +} + +pattern raster_source_pattern_builder::get_pattern() { + auto pat = cairo_pattern_create_raster_source(_User_callback_data, _Content_to_cairo_content_t(_Content), _Width, _Height); + _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); + + cairo_pattern_set_extend(pat, _Extend_to_cairo_extend_t(_Extend)); + _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); + cairo_pattern_set_filter(pat, _Filter_to_cairo_filter_t(_Filter)); + _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); + cairo_matrix_t mtrx{ _Matrix.xx, _Matrix.yx, _Matrix.xy, _Matrix.yy, _Matrix.x0, _Matrix.y0 }; + cairo_pattern_set_matrix(pat, &mtrx); + _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); + + cairo_raster_source_pattern_set_acquire(pat, (_Acquire_fn == nullptr) ? nullptr : &raster_source_pattern_builder::_Cairo_acquire, + &raster_source_pattern_builder::_Cairo_release + ); + _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); + return pattern(pat); +} + +void raster_source_pattern_builder::set_extend(extend e) { + _Extend = e; +} + +extend raster_source_pattern_builder::get_extend() { + return _Extend; +} + +void raster_source_pattern_builder::set_filter(filter f) { + _Filter = f; +} + +filter raster_source_pattern_builder::get_filter() { + return _Filter; +} + +void raster_source_pattern_builder::set_matrix(const matrix& m) { + _Matrix = m; +} + +matrix raster_source_pattern_builder::get_matrix() { + return _Matrix; +} + +void raster_source_pattern_builder::set_callback_data(void* data) { + _User_callback_data = data; +} + +void* raster_source_pattern_builder::get_callback_data() { + return _User_callback_data; +} + +void raster_source_pattern_builder::set_acquire( + function acquire_fn, + function release_fn + ) { + *_Acquire_fn = acquire_fn; + *_Release_fn = release_fn; +} + +void raster_source_pattern_builder::get_acquire( + function& acquire_fn, + function& release_fn + ) { + acquire_fn = *_Acquire_fn; + release_fn = *_Release_fn; +} diff --git a/qt/src/rgba_color.cpp b/qt/src/rgba_color.cpp new file mode 100755 index 0000000..dd2cf49 --- /dev/null +++ b/qt/src/rgba_color.cpp @@ -0,0 +1,158 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +rgba_color rgba_color::from_byte_values(unsigned char r, unsigned char g, unsigned char b, unsigned char a) { + return{ static_cast(r) / 255.0, static_cast(g) / 255.0, static_cast(b) / 255.0, static_cast(a) / 255.0 }; +} + +const rgba_color rgba_color::alice_blue = rgba_color::from_byte_values(240u, 248u, 255u); +const rgba_color rgba_color::antique_white = rgba_color::from_byte_values(250u, 235u, 215u); +const rgba_color rgba_color::aqua = rgba_color::from_byte_values(0u, 255u, 255u); +const rgba_color rgba_color::aquamarine = rgba_color::from_byte_values(127u, 255u, 212u); +const rgba_color rgba_color::azure = rgba_color::from_byte_values(240u, 255u, 255u); +const rgba_color rgba_color::beige = rgba_color::from_byte_values(245u, 245u, 220u); +const rgba_color rgba_color::bisque = rgba_color::from_byte_values(255u, 228u, 196u); +const rgba_color rgba_color::black = rgba_color::from_byte_values(0u, 0u, 0u); +const rgba_color rgba_color::blanched_almond = rgba_color::from_byte_values(255u, 235u, 205u); +const rgba_color rgba_color::blue = rgba_color::from_byte_values(0u, 0u, 255u); +const rgba_color rgba_color::blue_violet = rgba_color::from_byte_values(138u, 43u, 226u); +const rgba_color rgba_color::brown = rgba_color::from_byte_values(165u, 42u, 42u); +const rgba_color rgba_color::burly_wood = rgba_color::from_byte_values(222u, 184u, 135u); +const rgba_color rgba_color::cadet_blue = rgba_color::from_byte_values(95u, 158u, 160u); +const rgba_color rgba_color::chartreuse = rgba_color::from_byte_values(127u, 255u, 0u); +const rgba_color rgba_color::chocolate = rgba_color::from_byte_values(210u, 105u, 30u); +const rgba_color rgba_color::coral = rgba_color::from_byte_values(255u, 127u, 80u); +const rgba_color rgba_color::cornflower_blue = rgba_color::from_byte_values(100u, 149u, 237u); +const rgba_color rgba_color::cornsilk = rgba_color::from_byte_values(255u, 248u, 220u); +const rgba_color rgba_color::crimson = rgba_color::from_byte_values(220u, 20u, 60u); +const rgba_color rgba_color::cyan = rgba_color::from_byte_values(0u, 255u, 255u); +const rgba_color rgba_color::dark_blue = rgba_color::from_byte_values(0u, 0u, 139u); +const rgba_color rgba_color::dark_cyan = rgba_color::from_byte_values(0u, 139u, 139u); +const rgba_color rgba_color::dark_goldenrod = rgba_color::from_byte_values(184u, 134u, 11u); +const rgba_color rgba_color::dark_gray = rgba_color::from_byte_values(169u, 169u, 169u); +const rgba_color rgba_color::dark_green = rgba_color::from_byte_values(0u, 100u, 0u); +const rgba_color rgba_color::dark_grey = rgba_color::from_byte_values(169u, 169u, 169u); +const rgba_color rgba_color::dark_khaki = rgba_color::from_byte_values(189u, 183u, 107u); +const rgba_color rgba_color::dark_magenta = rgba_color::from_byte_values(139u, 0u, 139u); +const rgba_color rgba_color::dark_olive_green = rgba_color::from_byte_values(85u, 107u, 47u); +const rgba_color rgba_color::dark_orange = rgba_color::from_byte_values(255u, 140u, 0u); +const rgba_color rgba_color::dark_orchid = rgba_color::from_byte_values(153u, 50u, 204u); +const rgba_color rgba_color::dark_red = rgba_color::from_byte_values(139u, 0u, 0u); +const rgba_color rgba_color::dark_salmon = rgba_color::from_byte_values(233u, 150u, 122u); +const rgba_color rgba_color::dark_sea_green = rgba_color::from_byte_values(143u, 188u, 143u); +const rgba_color rgba_color::dark_slate_blue = rgba_color::from_byte_values(72u, 61u, 139u); +const rgba_color rgba_color::dark_slate_gray = rgba_color::from_byte_values(47u, 79u, 79u); +const rgba_color rgba_color::dark_slate_grey = rgba_color::from_byte_values(47u, 79u, 79u); +const rgba_color rgba_color::dark_turquoise = rgba_color::from_byte_values(0u, 206u, 209u); +const rgba_color rgba_color::dark_violet = rgba_color::from_byte_values(148u, 0u, 211u); +const rgba_color rgba_color::deep_pink = rgba_color::from_byte_values(255u, 20u, 147u); +const rgba_color rgba_color::deep_sky_blue = rgba_color::from_byte_values(0u, 191u, 255u); +const rgba_color rgba_color::dim_gray = rgba_color::from_byte_values(105u, 105u, 105u); +const rgba_color rgba_color::dim_grey = rgba_color::from_byte_values(105u, 105u, 105u); +const rgba_color rgba_color::dodger_blue = rgba_color::from_byte_values(30u, 144u, 255u); +const rgba_color rgba_color::firebrick = rgba_color::from_byte_values(178u, 34u, 34u); +const rgba_color rgba_color::floral_white = rgba_color::from_byte_values(255u, 250u, 240u); +const rgba_color rgba_color::forest_green = rgba_color::from_byte_values(34u, 139u, 34u); +const rgba_color rgba_color::fuchsia = rgba_color::from_byte_values(255u, 0u, 255u); +const rgba_color rgba_color::gainsboro = rgba_color::from_byte_values(220u, 220u, 220u); +const rgba_color rgba_color::ghost_white = rgba_color::from_byte_values(248u, 248u, 255u); +const rgba_color rgba_color::gold = rgba_color::from_byte_values(255u, 215u, 0u); +const rgba_color rgba_color::goldenrod = rgba_color::from_byte_values(218u, 165u, 32u); +const rgba_color rgba_color::gray = rgba_color::from_byte_values(128u, 128u, 128u); +const rgba_color rgba_color::green = rgba_color::from_byte_values(0u, 128u, 0u); +const rgba_color rgba_color::green_yellow = rgba_color::from_byte_values(173u, 255u, 47u); +const rgba_color rgba_color::grey = rgba_color::from_byte_values(128u, 128u, 128u); +const rgba_color rgba_color::honeydew = rgba_color::from_byte_values(240u, 255u, 240u); +const rgba_color rgba_color::hot_pink = rgba_color::from_byte_values(255u, 105u, 180u); +const rgba_color rgba_color::indian_red = rgba_color::from_byte_values(205u, 92u, 92u); +const rgba_color rgba_color::indigo = rgba_color::from_byte_values(75u, 0u, 130u); +const rgba_color rgba_color::ivory = rgba_color::from_byte_values(255u, 255u, 240u); +const rgba_color rgba_color::khaki = rgba_color::from_byte_values(240u, 230u, 140u); +const rgba_color rgba_color::lavender = rgba_color::from_byte_values(230u, 230u, 250u); +const rgba_color rgba_color::lavender_blush = rgba_color::from_byte_values(255u, 240u, 245u); +const rgba_color rgba_color::lawn_green = rgba_color::from_byte_values(124u, 252u, 0u); +const rgba_color rgba_color::lemon_chiffon = rgba_color::from_byte_values(255u, 250u, 205u); +const rgba_color rgba_color::light_blue = rgba_color::from_byte_values(173u, 216u, 230u); +const rgba_color rgba_color::light_coral = rgba_color::from_byte_values(240u, 128u, 128u); +const rgba_color rgba_color::light_cyan = rgba_color::from_byte_values(224u, 255u, 255u); +const rgba_color rgba_color::light_goldenrod_yellow = rgba_color::from_byte_values(250u, 250u, 210u); +const rgba_color rgba_color::light_gray = rgba_color::from_byte_values(211u, 211u, 211u); +const rgba_color rgba_color::light_green = rgba_color::from_byte_values(144u, 238u, 144u); +const rgba_color rgba_color::light_grey = rgba_color::from_byte_values(211u, 211u, 211u); +const rgba_color rgba_color::light_pink = rgba_color::from_byte_values(255u, 182u, 193u); +const rgba_color rgba_color::light_salmon = rgba_color::from_byte_values(255u, 160u, 122u); +const rgba_color rgba_color::light_sea_green = rgba_color::from_byte_values(32u, 178u, 170u); +const rgba_color rgba_color::light_sky_blue = rgba_color::from_byte_values(135u, 206u, 250u); +const rgba_color rgba_color::light_slate_gray = rgba_color::from_byte_values(119u, 136u, 153u); +const rgba_color rgba_color::light_slate_grey = rgba_color::from_byte_values(119u, 136u, 153u); +const rgba_color rgba_color::light_steel_blue = rgba_color::from_byte_values(176u, 196u, 222u); +const rgba_color rgba_color::light_yellow = rgba_color::from_byte_values(255u, 255u, 224u); +const rgba_color rgba_color::lime = rgba_color::from_byte_values(0u, 255u, 0u); +const rgba_color rgba_color::lime_green = rgba_color::from_byte_values(50u, 205u, 50u); +const rgba_color rgba_color::linen = rgba_color::from_byte_values(250u, 240u, 230u); +const rgba_color rgba_color::magenta = rgba_color::from_byte_values(255u, 0u, 255u); +const rgba_color rgba_color::maroon = rgba_color::from_byte_values(128u, 0u, 0u); +const rgba_color rgba_color::medium_aquamarine = rgba_color::from_byte_values(102u, 205u, 170u); +const rgba_color rgba_color::medium_blue = rgba_color::from_byte_values(0u, 0u, 205u); +const rgba_color rgba_color::medium_orchid = rgba_color::from_byte_values(186u, 85u, 211u); +const rgba_color rgba_color::medium_purple = rgba_color::from_byte_values(147u, 112u, 219u); +const rgba_color rgba_color::medium_sea_green = rgba_color::from_byte_values(60u, 179u, 113u); +const rgba_color rgba_color::medium_slate_blue = rgba_color::from_byte_values(123u, 104u, 238u); +const rgba_color rgba_color::medium_spring_green = rgba_color::from_byte_values(0u, 250u, 154u); +const rgba_color rgba_color::medium_turquoise = rgba_color::from_byte_values(72u, 209u, 204u); +const rgba_color rgba_color::medium_violet_red = rgba_color::from_byte_values(199u, 21u, 133u); +const rgba_color rgba_color::midnight_blue = rgba_color::from_byte_values(25u, 25u, 112u); +const rgba_color rgba_color::mint_cream = rgba_color::from_byte_values(245u, 255u, 250u); +const rgba_color rgba_color::misty_rose = rgba_color::from_byte_values(255u, 228u, 225u); +const rgba_color rgba_color::moccasin = rgba_color::from_byte_values(255u, 228u, 181u); +const rgba_color rgba_color::navajo_white = rgba_color::from_byte_values(255u, 222u, 173u); +const rgba_color rgba_color::navy = rgba_color::from_byte_values(0u, 0u, 128u); +const rgba_color rgba_color::old_lace = rgba_color::from_byte_values(253u, 245u, 230u); +const rgba_color rgba_color::olive = rgba_color::from_byte_values(128u, 128u, 0u); +const rgba_color rgba_color::olive_drab = rgba_color::from_byte_values(107u, 142u, 35u); +const rgba_color rgba_color::orange = rgba_color::from_byte_values(255u, 165u, 0u); +const rgba_color rgba_color::orange_red = rgba_color::from_byte_values(255u, 69u, 0u); +const rgba_color rgba_color::orchid = rgba_color::from_byte_values(218u, 112u, 214u); +const rgba_color rgba_color::pale_goldenrod = rgba_color::from_byte_values(238u, 232u, 170u); +const rgba_color rgba_color::pale_green = rgba_color::from_byte_values(152u, 251u, 152u); +const rgba_color rgba_color::pale_turquoise = rgba_color::from_byte_values(175u, 238u, 238u); +const rgba_color rgba_color::pale_violet_red = rgba_color::from_byte_values(219u, 112u, 147u); +const rgba_color rgba_color::papaya_whip = rgba_color::from_byte_values(255u, 239u, 213u); +const rgba_color rgba_color::peach_puff = rgba_color::from_byte_values(255u, 218u, 185u); +const rgba_color rgba_color::peru = rgba_color::from_byte_values(205u, 133u, 63u); +const rgba_color rgba_color::pink = rgba_color::from_byte_values(255u, 192u, 203u); +const rgba_color rgba_color::plum = rgba_color::from_byte_values(221u, 160u, 221u); +const rgba_color rgba_color::powder_blue = rgba_color::from_byte_values(176u, 224u, 230u); +const rgba_color rgba_color::purple = rgba_color::from_byte_values(128u, 0u, 128u); +const rgba_color rgba_color::red = rgba_color::from_byte_values(255u, 0u, 0u); +const rgba_color rgba_color::rosy_brown = rgba_color::from_byte_values(188u, 143u, 143u); +const rgba_color rgba_color::royal_blue = rgba_color::from_byte_values(65u, 105u, 225u); +const rgba_color rgba_color::saddle_brown = rgba_color::from_byte_values(139u, 69u, 19u); +const rgba_color rgba_color::salmon = rgba_color::from_byte_values(250u, 128u, 114u); +const rgba_color rgba_color::sandy_brown = rgba_color::from_byte_values(244u, 164u, 96u); +const rgba_color rgba_color::sea_green = rgba_color::from_byte_values(46u, 139u, 87u); +const rgba_color rgba_color::sea_shell = rgba_color::from_byte_values(255u, 245u, 238u); +const rgba_color rgba_color::sienna = rgba_color::from_byte_values(160u, 82u, 45u); +const rgba_color rgba_color::silver = rgba_color::from_byte_values(192u, 192u, 192u); +const rgba_color rgba_color::sky_blue = rgba_color::from_byte_values(135u, 206u, 235u); +const rgba_color rgba_color::slate_blue = rgba_color::from_byte_values(106u, 90u, 205u); +const rgba_color rgba_color::slate_gray = rgba_color::from_byte_values(112u, 128u, 144u); +const rgba_color rgba_color::slate_grey = rgba_color::from_byte_values(112u, 128u, 144u); +const rgba_color rgba_color::snow = rgba_color::from_byte_values(255u, 250u, 250u); +const rgba_color rgba_color::spring_green = rgba_color::from_byte_values(0u, 255u, 127u); +const rgba_color rgba_color::steel_blue = rgba_color::from_byte_values(70u, 130u, 180u); +const rgba_color rgba_color::tan = rgba_color::from_byte_values(210u, 180u, 140u); +const rgba_color rgba_color::teal = rgba_color::from_byte_values(0u, 128u, 128u); +const rgba_color rgba_color::thistle = rgba_color::from_byte_values(216u, 191u, 216u); +const rgba_color rgba_color::tomato = rgba_color::from_byte_values(255u, 99u, 71u); +const rgba_color rgba_color::turquoise = rgba_color::from_byte_values(64u, 244u, 208u); +const rgba_color rgba_color::violet = rgba_color::from_byte_values(238u, 130u, 238u); +const rgba_color rgba_color::wheat = rgba_color::from_byte_values(245u, 222u, 179u); +const rgba_color rgba_color::white = rgba_color::from_byte_values(255u, 255u, 255u); +const rgba_color rgba_color::white_smoke = rgba_color::from_byte_values(245u, 245u, 245u); +const rgba_color rgba_color::yellow = rgba_color::from_byte_values(255u, 255u, 0u); +const rgba_color rgba_color::yellow_green = rgba_color::from_byte_values(154u, 205u, 50u); diff --git a/qt/src/scaled_font.cpp b/qt/src/scaled_font.cpp new file mode 100755 index 0000000..76d78ed --- /dev/null +++ b/qt/src/scaled_font.cpp @@ -0,0 +1,77 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +scaled_font::native_handle_type scaled_font::native_handle() const { + return _Scaled_font.get(); +} + +scaled_font::scaled_font(scaled_font&& other) { + _Scaled_font = move(other._Scaled_font); + other._Scaled_font = nullptr; +} + +scaled_font& scaled_font::operator=(scaled_font&& other) { + if (this != &other) { + _Scaled_font = move(other._Scaled_font); + other._Scaled_font = nullptr; + } + return *this; +} + +scaled_font::scaled_font(scaled_font::native_handle_type nh) { + _Scaled_font = shared_ptr(new QFont(*nh)); +} + +scaled_font::scaled_font(const font_face& ff, const matrix& fm, const matrix& ctm, const font_options& fo) +: _Scaled_font(nullptr) { +// cairo_matrix_t c_fm{ fm.xx, fm.xy, fm.yx, fm.yy, fm.x0, fm.y0 }, +// c_ctm{ ctm.xx, ctm.xy, ctm.yx, ctm.yy, ctm.x0, ctm.y0 }; +// _Scaled_font = shared_ptr(cairo_scaled_font_create(ff.native_handle(), &c_fm, &c_ctm, fo.native_handle()), &cairo_scaled_font_destroy); + _Scaled_font = shared_ptr(new QFont(*ff.native_handle())); + _Scaled_font->setHintingPreference(fo.native_handle()->hintingPreference); + _Scaled_font->setStyleStrategy(fo.native_handle()->styleStrategy); +} + +font_extents scaled_font::get_extents() const { + // TODO: find values for max_x_advance and max_y_advance + QFontMetrics metrics(*_Scaled_font); + return{ metrics.ascent(), metrics.descent(), metrics.height(), 0, 0 }; +} + +text_extents scaled_font::get_text_extents(const string& utf8) const { + // TODO: find values for x_bearing, y_bearing, x_advance and y_advance + QFontMetrics metrics(*_Scaled_font); + QRect bounding = metrics.boundingRect(QString::fromUtf8(utf8.c_str())); + + return{ 0, 0, bounding.width(), bounding.height(), 0, 0 }; +} + +text_extents scaled_font::get_glyph_extents(const vector& /*glyphs*/) const { + // TODO: implement this + return{ 0, 0, 0, 0, 0, 0 }; +} + +vector scaled_font::text_to_glyphs(double /*x*/, double /*y*/, const string& utf8) const { + QRawFont rawFont = QRawFont::fromFont(*_Scaled_font); + auto indexVector = rawFont.glyphIndexesForString(QString::fromUtf8(utf8.c_str())); + + vector result; + for (const auto& index : indexVector) + { + // TODO: what to put for glyph.x and glyph.y? + result.push_back({index, 0, 0 }); + } + + return result; +} + +vector scaled_font::text_to_glyphs(double /*x*/, double /*y*/, const string& /*utf8*/, + vector& /*clusters*/, text_cluster_flags::text_cluster_flags& /*clFlags*/) const { + // TODO: implement + vector result; + return result; +} diff --git a/qt/src/solid_color_pattern_builder.cpp b/qt/src/solid_color_pattern_builder.cpp new file mode 100755 index 0000000..7f7f34e --- /dev/null +++ b/qt/src/solid_color_pattern_builder.cpp @@ -0,0 +1,119 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +solid_color_pattern_builder::solid_color_pattern_builder(solid_color_pattern_builder&& other) +: _Pattern_type(move(other._Pattern_type)) +, _Extend(move(other._Extend)) +, _Filter(move(other._Filter)) +, _Matrix(move(other._Matrix)) +, _Color(move(other._Color)) { +} + +solid_color_pattern_builder& solid_color_pattern_builder::operator=(solid_color_pattern_builder&& other) { + if (this != &other) { + _Pattern_type = move(other._Pattern_type); + _Extend = move(other._Extend); + _Filter = move(other._Filter); + _Matrix = move(other._Matrix); + _Color = move(other._Color); + } + return *this; +} + +solid_color_pattern_builder::solid_color_pattern_builder(const rgba_color& color) +: _Pattern_type(pattern_type::solid_color) +, _Extend(extend::default_extend) +, _Filter(filter::default_filter) +, _Matrix(matrix::init_identity()) +, _Color(color){ + assert(color.r >= 0.0 && color.r <= 1.0); + assert(color.g >= 0.0 && color.g <= 1.0); + assert(color.b >= 0.0 && color.b <= 1.0); + assert(color.a >= 0.0 && color.a <= 1.0); +} + +pattern solid_color_pattern_builder::get_pattern() { +// cairo_pattern_set_extend(pat, _Extend_to_cairo_extend_t(_Extend)); +// cairo_pattern_set_filter(pat, _Filter_to_cairo_filter_t(_Filter)); +// cairo_matrix_t mtrx{ _Matrix.xx, _Matrix.yx, _Matrix.xy, _Matrix.yy, _Matrix.x0, _Matrix.y0 }; +// cairo_pattern_set_matrix(pat, &mtrx); + + auto pat = new QBrush(rgba_color_to_QColor(_Color), Qt::SolidPattern); + return pattern(pat); +} + +void solid_color_pattern_builder::set_extend(extend e) { + _Extend = e; +} + +extend solid_color_pattern_builder::get_extend() { + return _Extend; +} + +void solid_color_pattern_builder::set_filter(filter f) { + _Filter = f; +} + +filter solid_color_pattern_builder::get_filter() { + return _Filter; +} + +void solid_color_pattern_builder::set_matrix(const matrix& m) { + _Matrix = m; +} + +matrix solid_color_pattern_builder::get_matrix() { + return _Matrix; +} + +rgba_color solid_color_pattern_builder::get_rgba() { + return _Color; +} + +void solid_color_pattern_builder::set_rgba(const rgba_color& color) { + assert(color.r >= 0.0 && color.r <= 1.0); + assert(color.g >= 0.0 && color.g <= 1.0); + assert(color.b >= 0.0 && color.b <= 1.0); + assert(color.a >= 0.0 && color.a <= 1.0); + _Color = color; +} + +double solid_color_pattern_builder::get_red() { + return _Color.r; +} + +void solid_color_pattern_builder::set_red(double red) { + assert(red >= 0.0 && red <= 1.0); + _Color.r = red; +} + +double solid_color_pattern_builder::get_green() { + return _Color.g; +} + +void solid_color_pattern_builder::set_green(double green) { + assert(green >= 0.0 && green <= 1.0); + _Color.g = green; +} + +double solid_color_pattern_builder::get_blue() { + return _Color.b; +} + +void solid_color_pattern_builder::set_blue(double blue) { + assert(blue >= 0.0 && blue <= 1.0); + _Color.b = blue; +} + +double solid_color_pattern_builder::get_alpha() { + return _Color.a; +} + +void solid_color_pattern_builder::set_alpha(double alpha) { + assert(alpha >= 0.0 && alpha <= 1.0); + _Color.a = alpha; +} diff --git a/qt/src/surface.cpp b/qt/src/surface.cpp new file mode 100755 index 0000000..3d51d8d --- /dev/null +++ b/qt/src/surface.cpp @@ -0,0 +1,554 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +surface::native_handle_type surface::native_handle() const { + return{ _Surface.get(), _Context.get() }; +} + +surface::surface(surface::native_handle_type nh) +: _Lock_for_device() +, _Device() +, _Surface(unique_ptr(nh.csfce)) +, _Context(unique_ptr(((nh.csfce == nullptr) ? nullptr : nh.csfce->paintEngine()))) { +} + +surface::surface(surface&& other) +: _Lock_for_device() +, _Device(move(other._Device)) +, _Surface(move(other._Surface)) +, _Context(move(other._Context)) { + other._Surface = nullptr; + other._Context = nullptr; +} + +surface& surface::operator=(surface&& other) { + if (this != &other) { + _Device = move(other._Device); + _Surface = move(other._Surface); + _Context = move(other._Context); + other._Surface = nullptr; + other._Context = nullptr; + } + return *this; +} + +surface::surface(const surface& other, content content, int width, int height) +: _Lock_for_device() +, _Device() +, _Surface(unique_ptr(new QOpenGLPaintDevice(width, height))) +, _Context(unique_ptr(_Surface.get()->paintEngine())) { +} + +surface::surface(const surface& target, const rectangle& rect) +: _Lock_for_device() +, _Device() +, _Surface(unique_ptr(new QOpenGLPaintDevice(rect.width, rect.height))) +, _Context(unique_ptr(_Surface.get()->paintEngine())) { +} + +surface::surface(format fmt, int width, int height) +: _Lock_for_device() +, _Device() +, _Surface(unique_ptr(new QOpenGLPaintDevice(width, height))) +, _Context(unique_ptr(_Surface.get()->paintEngine())) { +} + +surface::~surface() { +} + +void surface::finish() { + //cairo_surface_finish(_Surface.get()); +} + +void surface::flush() { + //cairo_surface_flush(_Surface.get()); +} + +shared_ptr surface::get_device() { + lock_guard lg(_Lock_for_device); + auto dvc = _Device.lock(); + if (dvc != nullptr) { + return dvc; + } + dvc = nullptr; + _Device = weak_ptr(dvc); + return dvc; +} + +content surface::get_content() { + //return _Cairo_content_t_to_content(cairo_surface_get_content(_Surface.get())); + return content::color; +} + +void surface::mark_dirty() { + // cairo_surface_mark_dirty(_Surface.get()); +} + +void surface::mark_dirty_rectangle(const rectangle& rect) { + //cairo_surface_mark_dirty_rectangle(_Surface.get(), static_cast(rect.x), static_cast(rect.y), static_cast(rect.width), static_cast(rect.height)); +} + +void surface::set_device_offset(const point& offset) { + //cairo_surface_set_device_offset(_Surface.get(), offset.x, offset.y); +} + +void surface::get_device_offset(point& offset) { + //cairo_surface_get_device_offset(_Surface.get(), &offset.x, &offset.y); +} + +void surface::write_to_png(const string& filename) { + //_Throw_if_failed_status(_Cairo_status_t_to_status(cairo_surface_write_to_png(_Surface.get(), filename.c_str()))); +} + +image_surface surface::map_to_image(const rectangle& extents) { + cairo_rectangle_int_t cextents{ _Double_to_int(extents.x), _Double_to_int(extents.y), _Double_to_int(extents.width), _Double_to_int(extents.height) }; + + return image_surface({ cairo_surface_map_to_image(_Surface.get(), (extents.x == 0 && extents.y == 0 && extents.width == 0 && extents.height == 0) ? nullptr : &cextents), nullptr }, { _Surface.get(), nullptr }); +} + +void surface::unmap_image(image_surface& image) { + image._Context = nullptr; + image._Surface = nullptr; +} + +bool surface::has_surface_resource() const { + return _Surface != nullptr; +} + +void surface::save() { + //cairo_save(_Context.get()); +} + +void surface::restore() { + //cairo_restore(_Context.get()); +} + +void surface::push_group() { + //cairo_push_group(_Context.get()); +} + +void surface::push_group_with_content(content c) { + //cairo_push_group_with_content(_Context.get(), _Content_to_cairo_content_t(c)); +} + +surface surface::pop_group() { +// cairo_surface_t* sfce = nullptr; +// unique_ptr> pttn(cairo_pop_group(_Context.get()), &cairo_pattern_destroy); +// _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pttn.get()))); +// _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_get_surface(pttn.get(), &sfce))); +// // This next line would not create a resource leak if it threw because until we reference the surface we don't own it. +// _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_surface_status(sfce))); +// return surface({ cairo_surface_reference(sfce), nullptr }); + return nullptr; +} + +void surface::pop_group_to_source() { + //cairo_pop_group_to_source(_Context.get()); +} + +void surface::set_pattern() { + //cairo_set_source_rgb(_Context.get(), 0.0, 0.0, 0.0); +} + +void surface::set_pattern(const pattern& source) { + cairo_set_source(_Context.get(), source.native_handle()); +} + +pattern surface::get_pattern() { + return pattern(cairo_pattern_reference(cairo_get_source(_Context.get()))); +} + +void surface::set_antialias(antialias a) { + cairo_set_antialias(_Context.get(), _Antialias_to_QFontOptions(a)); +} + +antialias surface::get_antialias() { + return _QFontOptions_to_antialias(cairo_get_antialias(_Context.get())); +} + +void surface::set_dash() { +// cairo_set_dash(_Context.get(), nullptr, 0, 0.0); +} + +void surface::set_dash(const vector& dashes, double offset) { +// cairo_set_dash(_Context.get(), dashes.data(), static_cast(dashes.size()), offset); +} + +int surface::get_dash_count() { +// return cairo_get_dash_count(_Context.get()); +} + +void surface::get_dash(vector& dashes, double& offset) { +// dashes.resize(get_dash_count()); +// cairo_get_dash(_Context.get(), &dashes[0], &offset); +} + +void surface::set_fill_rule(fill_rule fr) { +// cairo_set_fill_rule(_Context.get(), _Fill_rule_to_cairo_fill_rule_t(fr)); +} + +fill_rule surface::get_fill_rule() { +// return _Cairo_fill_rule_t_to_fill_rule(cairo_get_fill_rule(_Context.get())); +} + +void surface::set_line_cap(line_cap lc) { +// cairo_set_line_cap(_Context.get(), _Line_cap_to_cairo_line_cap_t(lc)); +} + +line_cap surface::get_line_cap() { + return _Cairo_line_cap_t_to_line_cap(cairo_get_line_cap(_Context.get())); +} + +void surface::set_line_join(line_join lj) { + cairo_set_line_join(_Context.get(), _Line_join_to_cairo_line_join_t(lj)); +} + +line_join surface::get_line_join() { + return _Cairo_line_join_t_to_line_join(cairo_get_line_join(_Context.get())); +} + +void surface::set_line_width(double width) { + cairo_set_line_width(_Context.get(), width); +} + +double surface::get_line_width() { + return cairo_get_line_width(_Context.get()); +} + +void surface::set_miter_limit(double limit) { + cairo_set_miter_limit(_Context.get(), limit); +} + +double surface::get_miter_limit() { + return cairo_get_miter_limit(_Context.get()); +} + +void surface::set_compositing_operator(compositing_operator co) { + cairo_set_operator(_Context.get(), _Compositing_operator_to_cairo_operator_t(co)); +} + +compositing_operator surface::get_compositing_operator() { + return _Cairo_operator_t_to_compositing_operator(cairo_get_operator(_Context.get())); +} + +void surface::set_tolerance(double tolerance) { + cairo_set_tolerance(_Context.get(), tolerance); +} + +double surface::get_tolerance() { + return cairo_get_tolerance(_Context.get()); +} + +void surface::clip() { + cairo_clip_preserve(_Context.get()); +} + +void surface::clip_extents(point& pt0, point& pt1) { + cairo_clip_extents(_Context.get(), &pt0.x, &pt0.y, &pt1.x, &pt1.y); +} + +bool surface::in_clip(const point& pt) { + return cairo_in_clip(_Context.get(), pt.x, pt.y) != 0; +} + +void surface::reset_clip() { + cairo_reset_clip(_Context.get()); +} + +vector surface::copy_clip_rectangle_list() { + vector results; + std::unique_ptr> sp_rects(cairo_copy_clip_rectangle_list(_Context.get()), &cairo_rectangle_list_destroy); + _Throw_if_failed_status(_Cairo_status_t_to_status(sp_rects->status)); + for (auto i = 0; i < sp_rects->num_rectangles; ++i) { + results.push_back({ sp_rects->rectangles[i].x, sp_rects->rectangles[i].y, sp_rects->rectangles[i].width, sp_rects->rectangles[i].height }); + } + + return results; +} + +void surface::fill() { + cairo_fill_preserve(_Context.get()); +} + +void surface::fill(const surface& s) { + unique_ptr> pat(cairo_pattern_reference(cairo_get_source(_Context.get())), &cairo_pattern_destroy); + cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); + cairo_fill_preserve(_Context.get()); + cairo_surface_flush(_Surface.get()); + cairo_set_source(_Context.get(), pat.get()); +} + +void surface::fill_extents(point& pt0, point& pt1) { + cairo_fill_extents(_Context.get(), &pt0.x, &pt0.y, &pt1.x, &pt1.y); +} + +bool surface::in_fill(const point& pt) { + return cairo_in_fill(_Context.get(), pt.x, pt.y) != 0; +} + +void surface::mask(const pattern& pttn) { + cairo_mask(_Context.get(), pttn.native_handle()); +} + +void surface::mask(const surface& surface) { + cairo_mask_surface(_Context.get(), surface.native_handle().csfce, 0.0, 0.0); +} + +void surface::mask(const surface& surface, const point& origin) { + cairo_mask_surface(_Context.get(), surface.native_handle().csfce, origin.x, origin.y); +} + +void surface::paint() { + cairo_paint(_Context.get()); +} + +void surface::paint(const surface& s) { + unique_ptr> pat(cairo_pattern_reference(cairo_get_source(_Context.get())), &cairo_pattern_destroy); + cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); + cairo_paint(_Context.get()); + cairo_surface_flush(_Surface.get()); + cairo_set_source(_Context.get(), pat.get()); +} + +void surface::paint_with_alpha(double alpha) { + cairo_paint_with_alpha(_Context.get(), alpha); +} + +void surface::paint_with_alpha(const surface& s, double alpha) { + auto pat = cairo_get_source(_Context.get()); + cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); + cairo_paint_with_alpha(_Context.get(), alpha); + cairo_surface_flush(_Surface.get()); + cairo_set_source(_Context.get(), pat); +} + +void surface::stroke() { + cairo_stroke_preserve(_Context.get()); +} + +void surface::stroke(const surface& s) { + unique_ptr> pat(cairo_pattern_reference(cairo_get_source(_Context.get())), &cairo_pattern_destroy); + cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); + cairo_stroke_preserve(_Context.get()); + cairo_surface_flush(_Surface.get()); + cairo_set_source(_Context.get(), pat.get()); +} + +void surface::stroke_extents(point& pt0, point& pt1) { + cairo_stroke_extents(_Context.get(), &pt0.x, &pt0.y, &pt1.x, &pt1.y); +} + +bool surface::in_stroke(const point& pt) { + return cairo_in_stroke(_Context.get(), pt.x, pt.y) != 0; +} + +void surface::set_path() { + cairo_new_path(_Context.get()); +} + +void surface::set_path(const path& p) { + auto ctx = _Context.get(); + cairo_new_path(ctx); + const auto& pathData = p.get_data_ref(); + for (int i = 0; i < pathData.size(); i += pathData[i].header.length) { + auto pdt = pathData[i].header.type; + switch (pdt) { + case ::std::experimental::drawing::path_data_type::move_to: + cairo_move_to(ctx, pathData[i + 1].point.x, pathData[i + 1].point.y); + break; + case ::std::experimental::drawing::path_data_type::line_to: + cairo_line_to(ctx, pathData[i + 1].point.x, pathData[i + 1].point.y); + break; + case ::std::experimental::drawing::path_data_type::curve_to: + cairo_curve_to(ctx, pathData[i + 1].point.x, pathData[i + 1].point.y, pathData[i + 2].point.x, pathData[i + 2].point.y, pathData[i + 3].point.x, pathData[i + 3].point.y); + break; + case ::std::experimental::drawing::path_data_type::new_sub_path: + cairo_new_sub_path(ctx); + break; + case std::experimental::drawing::path_data_type::close_path: + cairo_close_path(ctx); + break; + default: + throw drawing_exception(status::invalid_path_data); + } + } +} + +void surface::translate(const point& value) { + cairo_translate(_Context.get(), value.x, value.y); +} + +void surface::scale(const point& value) { + cairo_scale(_Context.get(), value.x, value.y); +} + +void surface::rotate(double angle) { + cairo_rotate(_Context.get(), angle); +} + +void surface::transform(const matrix& m) { + cairo_matrix_t cm{ m.xx, m.yx, m.xy, m.yy, m.x0, m.y0 }; + cairo_transform(_Context.get(), &cm); +} + +void surface::set_matrix(const matrix& m) { + cairo_matrix_t cm{ m.xx, m.yx, m.xy, m.yy, m.x0, m.y0 }; + cairo_set_matrix(_Context.get(), &cm); +} + +void surface::get_matrix(matrix& matrix) { + cairo_matrix_t cm{ }; + cairo_get_matrix(_Context.get(), &cm); + matrix = { cm.xx, cm.yx, cm.xy, cm.yy, cm.x0, cm.y0 }; +} + +void surface::identity_matrix() { + cairo_identity_matrix(_Context.get()); +} + +void surface::user_to_device(point& pt) { + cairo_user_to_device(_Context.get(), &pt.x, &pt.y); +} + +void surface::user_to_device_distance(point& dpt) { + cairo_user_to_device_distance(_Context.get(), &dpt.x, &dpt.y); +} + +void surface::device_to_user(point& pt) { + cairo_device_to_user(_Context.get(), &pt.x, &pt.y); +} + +void surface::device_to_user_distance(point& dpt) { + cairo_device_to_user_distance(_Context.get(), &dpt.x, &dpt.y); +} + +void surface::select_font_face(const string& family, font_slant slant, font_weight weight) { + cairo_select_font_face(_Context.get(), family.c_str(), _Font_slant_to_cairo_font_slant_t(slant), _Font_weight_to_cairo_font_weight_t(weight)); +} + +void surface::set_font_size(double size) { + cairo_set_font_size(_Context.get(), size); +} + +void surface::set_font_matrix(const matrix& m) { + cairo_matrix_t cm{ m.xx, m.yx, m.xy, m.yy, m.x0, m.y0 }; + cairo_set_font_matrix(_Context.get(), &cm); +} + +void surface::get_font_matrix(matrix& matrix) { + cairo_matrix_t cm{ }; + cairo_get_font_matrix(_Context.get(), &cm); + matrix = { cm.xx, cm.yx, cm.xy, cm.yy, cm.x0, cm.y0 }; +} + +void surface::set_font_options(const font_options& options) { + cairo_set_font_options(_Context.get(), options.native_handle()); +} + +// Note: This deviates from cairo in that we return the values that will actually wind up being used. +font_options surface::get_font_options() { + font_options fo(antialias::default_antialias, subpixel_order::default_subpixel_order, hint_style::default_hint_style, hint_metrics::default_hint_metrics); + cairo_get_font_options(_Context.get(), fo.native_handle()); + auto ca = fo.get_antialias(); + auto cso = fo.get_subpixel_order(); + auto chs = fo.get_hint_style(); + auto chm = fo.get_hint_metrics(); + cairo_surface_get_font_options(_Surface.get(), fo.native_handle()); + + return font_options( + (ca == antialias::default_antialias) ? fo.get_antialias() : ca, + (cso == subpixel_order::default_subpixel_order) ? fo.get_subpixel_order() : cso, + (chs == hint_style::default_hint_style) ? fo.get_hint_style() : chs, + (chm == hint_metrics::default_hint_metrics) ? fo.get_hint_metrics() : chm + ); +} + +void surface::set_font_face(font_face& font_face) { + cairo_set_font_face(_Context.get(), font_face.native_handle()); +} + +font_face surface::get_font_face() { + auto ff = cairo_get_font_face(_Context.get()); + _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_font_face_status(ff))); + // Cairo doesn't increase the font face's reference count when you call cairo_get_font_face so we do it manually. + return font_face(cairo_font_face_reference(ff)); +} + +void surface::set_scaled_font(const scaled_font& scaled_font) { + cairo_set_scaled_font(_Context.get(), scaled_font.native_handle()); +} + +scaled_font surface::get_scaled_font() { + auto sf = cairo_get_scaled_font(_Context.get()); + _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_scaled_font_status(sf))); + // Cairo doesn't increase the scaled font's reference count when you call cairo_get_scaled_font so we do it manually. + return scaled_font(cairo_scaled_font_reference(sf)); +} + +void surface::show_text(const string& utf8) { +// cairo_show_text(_Context.get(), utf8.c_str()); +} + +void surface::show_glyphs(const vector& glyphs) { +// vector vec; +// for (const auto& glyph : glyphs) { +// vec.push_back({ glyph.index, glyph.x, glyph.y }); +// } +// cairo_show_glyphs(_Context.get(), vec.data(), static_cast(vec.size())); +} + +void surface::show_text_glyphs(const string& utf8, const vector& glyphs, const vector& clusters, text_cluster_flags::text_cluster_flags cluster_flags) { +// vector vec; +// for (const auto& glyph : glyphs) { +// vec.push_back({ glyph.index, glyph.x, glyph.y }); +// } +// const auto tcSize = static_cast(clusters.size()); +// unique_ptr> sp_tc(cairo_text_cluster_allocate(tcSize), &cairo_text_cluster_free); +// auto tc_ptr = sp_tc.get(); +// for (auto i = 0; i < tcSize; ++i) { +// tc_ptr[i].num_bytes = clusters[i].num_bytes; +// tc_ptr[i].num_glyphs = clusters[i].num_glyphs; +// } +// auto ctcf = _Text_cluster_flags_to_cairo_text_cluster_flags_t(cluster_flags); +// cairo_show_text_glyphs(_Context.get(), utf8.data(), static_cast(utf8.size()), vec.data(), static_cast(vec.size()), sp_tc.get(), tcSize, ctcf); +} + +void surface::font_extents(experimental::drawing::font_extents& extents) { +// cairo_font_extents_t result{ }; +// cairo_font_extents(_Context.get(), &result); +// extents.ascent = result.ascent; +// extents.descent = result.descent; +// extents.height = result.height; +// extents.max_x_advance = result.max_x_advance; +// extents.max_y_advance = result.max_y_advance; +} + +void surface::text_extents(const string& utf8, experimental::drawing::text_extents& extents) { +// cairo_text_extents_t result{ }; +// cairo_text_extents(_Context.get(), utf8.c_str(), &result); +// extents.height = result.height; +// extents.width = result.width; +// extents.x_advance = result.x_advance; +// extents.x_bearing = result.x_bearing; +// extents.y_advance = result.y_advance; +// extents.y_bearing = result.y_bearing; +} + +void surface::glyph_extents(const vector& glyphs, experimental::drawing::text_extents& extents) { +// vector vec; +// for (const auto& glyph : glyphs) { +// vec.push_back({ glyph.index, glyph.x, glyph.y }); +// } +// cairo_text_extents_t result{ }; +// cairo_glyph_extents(_Context.get(), vec.data(), static_cast(vec.size()), &result); +// extents.height = result.height; +// extents.width = result.width; +// extents.x_advance = result.x_advance; +// extents.x_bearing = result.x_bearing; +// extents.y_advance = result.y_advance; +// extents.y_bearing = result.y_bearing; +} diff --git a/qt/src/surface_pattern_builder.cpp b/qt/src/surface_pattern_builder.cpp new file mode 100755 index 0000000..640b310 --- /dev/null +++ b/qt/src/surface_pattern_builder.cpp @@ -0,0 +1,79 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +//surface_pattern_builder::surface_pattern_builder(surface_pattern_builder&& other) +//: _Pattern_type(move(other._Pattern_type)) +//, _Extend(move(other._Extend)) +//, _Filter(move(other._Filter)) +//, _Matrix(move(other._Matrix)) +//, _Surface(move(other._Surface)) { +//} +// +//surface_pattern_builder& surface_pattern_builder::operator=(surface_pattern_builder&& other) { +// if (this != &other) { +// _Pattern_type = move(other._Pattern_type); +// _Extend = move(other._Extend); +// _Filter = move(other._Filter); +// _Matrix = move(other._Matrix); +// _Surface = move(other._Surface); +// } +// return *this; +//} +// +//surface_pattern_builder::surface_pattern_builder(surface&& s) +//: _Pattern_type(pattern_type::surface) +//, _Extend(extend::default_extend) +//, _Filter(filter::default_filter) +//, _Matrix(matrix::init_identity()) +//, _Surface(move(s)) { +//} +// +//pattern surface_pattern_builder::get_pattern() { +// if (!_Surface.has_surface_resource()) { +// _Throw_if_failed_status(status::null_pointer); +// } +// auto pat = cairo_pattern_create_for_surface(_Surface.native_handle()); +// _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); +// +// cairo_pattern_set_extend(pat, _Extend_to_cairo_extend_t(_Extend)); +// _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); +// cairo_pattern_set_filter(pat, _Filter_to_cairo_filter_t(_Filter)); +// _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); +// cairo_matrix_t mtrx{ _Matrix.xx, _Matrix.yx, _Matrix.xy, _Matrix.yy, _Matrix.x0, _Matrix.y0 }; +// cairo_pattern_set_matrix(pat, &mtrx); +// _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); +// +// return pattern(pat); +//} +// +//void surface_pattern_builder::set_extend(extend e) { +// _Extend = e; +//} +// +//extend surface_pattern_builder::get_extend() { +// return _Extend; +//} +// +//void surface_pattern_builder::set_filter(filter f) { +// _Filter = f; +//} +// +//filter surface_pattern_builder::get_filter() { +// return _Filter; +//} +// +//void surface_pattern_builder::set_matrix(const matrix& m) { +// _Matrix = m; +//} +// +//matrix surface_pattern_builder::get_matrix() { +// return _Matrix; +//} +// +//surface& surface_pattern_builder::get_surface() { +// return _Surface; +//} diff --git a/qt/src/toy_font_face.cpp b/qt/src/toy_font_face.cpp new file mode 100755 index 0000000..6047104 --- /dev/null +++ b/qt/src/toy_font_face.cpp @@ -0,0 +1,35 @@ +#include "drawing.h" +#include "xdrawinghelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::drawing; + +toy_font_face::toy_font_face(const string& family, font_slant slant, font_weight weight) : font_face(nullptr) { + _Font_face = shared_ptr(cairo_toy_font_face_create(family.c_str(), _Font_slant_to_cairo_font_slant_t(slant), _Font_weight_to_cairo_font_weight_t(weight)), &cairo_font_face_destroy); +} + +toy_font_face::toy_font_face(toy_font_face&& other) : font_face(nullptr) { + _Font_face = move(other._Font_face); + other._Font_face = nullptr; +} + +toy_font_face& toy_font_face::operator=(toy_font_face&& other) { + if (this != &other) { + _Font_face = move(other._Font_face); + other._Font_face = nullptr; + } + return *this; +} + +string toy_font_face::get_family() const { + return string(cairo_toy_font_face_get_family(_Font_face.get())); +} + +font_slant toy_font_face::get_slant() const { + return _Cairo_font_slant_t_to_font_slant(cairo_toy_font_face_get_slant(_Font_face.get())); +} + +font_weight toy_font_face::get_weight() const { + return _Cairo_font_weight_t_to_font_weight(cairo_toy_font_face_get_weight(_Font_face.get())); +} diff --git a/qt/src/xcairoenumhelpers.h b/qt/src/xcairoenumhelpers.h new file mode 100755 index 0000000..0105f29 --- /dev/null +++ b/qt/src/xcairoenumhelpers.h @@ -0,0 +1,740 @@ +#pragma once + +#ifndef _XCAIROENUMHELPERS_H_ +#define _XCAIROENUMHELPERS_H_ + +#include "drawing.h" +//#include +#include + +namespace std { + namespace experimental { + namespace drawing { +// inline cairo_status_t _Status_to_cairo_status_t(::std::experimental::drawing::status s) { +// switch (s) { +// case ::std::experimental::drawing::status::success: +// return CAIRO_STATUS_SUCCESS; +// case ::std::experimental::drawing::status::no_memory: +// return CAIRO_STATUS_NO_MEMORY; +// case ::std::experimental::drawing::status::invalid_restore: +// return CAIRO_STATUS_INVALID_RESTORE; +// case ::std::experimental::drawing::status::invalid_pop_group: +// return CAIRO_STATUS_INVALID_POP_GROUP; +// case ::std::experimental::drawing::status::no_current_point: +// return CAIRO_STATUS_NO_CURRENT_POINT; +// case ::std::experimental::drawing::status::invalid_matrix: +// return CAIRO_STATUS_INVALID_MATRIX; +// case ::std::experimental::drawing::status::invalid_status: +// return CAIRO_STATUS_INVALID_STATUS; +// case ::std::experimental::drawing::status::null_pointer: +// return CAIRO_STATUS_NULL_POINTER; +// case ::std::experimental::drawing::status::invalid_string: +// return CAIRO_STATUS_INVALID_STRING; +// case ::std::experimental::drawing::status::invalid_path_data: +// return CAIRO_STATUS_INVALID_PATH_DATA; +// case ::std::experimental::drawing::status::read_error: +// return CAIRO_STATUS_READ_ERROR; +// case ::std::experimental::drawing::status::write_error: +// return CAIRO_STATUS_WRITE_ERROR; +// case ::std::experimental::drawing::status::surface_finished: +// return CAIRO_STATUS_SURFACE_FINISHED; +// case ::std::experimental::drawing::status::surface_type_mismatch: +// return CAIRO_STATUS_SURFACE_TYPE_MISMATCH; +// case ::std::experimental::drawing::status::pattern_type_mismatch: +// return CAIRO_STATUS_PATTERN_TYPE_MISMATCH; +// case ::std::experimental::drawing::status::invalid_content: +// return CAIRO_STATUS_INVALID_CONTENT; +// case ::std::experimental::drawing::status::invalid_format: +// return CAIRO_STATUS_INVALID_FORMAT; +// case ::std::experimental::drawing::status::invalid_visual: +// return CAIRO_STATUS_INVALID_VISUAL; +// case ::std::experimental::drawing::status::file_not_found: +// return CAIRO_STATUS_FILE_NOT_FOUND; +// case ::std::experimental::drawing::status::invalid_dash: +// return CAIRO_STATUS_INVALID_DASH; +// case ::std::experimental::drawing::status::invalid_dsc_comment: +// return CAIRO_STATUS_INVALID_DSC_COMMENT; +// case ::std::experimental::drawing::status::invalid_index: +// return CAIRO_STATUS_INVALID_INDEX; +// case ::std::experimental::drawing::status::clip_not_representable: +// return CAIRO_STATUS_CLIP_NOT_REPRESENTABLE; +// case ::std::experimental::drawing::status::temp_file_error: +// return CAIRO_STATUS_TEMP_FILE_ERROR; +// case ::std::experimental::drawing::status::invalid_stride: +// return CAIRO_STATUS_INVALID_STRIDE; +// case ::std::experimental::drawing::status::font_type_mismatch: +// return CAIRO_STATUS_FONT_TYPE_MISMATCH; +// case ::std::experimental::drawing::status::user_font_immutable: +// return CAIRO_STATUS_USER_FONT_IMMUTABLE; +// case ::std::experimental::drawing::status::user_font_error: +// return CAIRO_STATUS_USER_FONT_ERROR; +// case ::std::experimental::drawing::status::negative_count: +// return CAIRO_STATUS_NEGATIVE_COUNT; +// case ::std::experimental::drawing::status::invalid_clusters: +// return CAIRO_STATUS_INVALID_CLUSTERS; +// case ::std::experimental::drawing::status::invalid_slant: +// return CAIRO_STATUS_INVALID_SLANT; +// case ::std::experimental::drawing::status::invalid_weight: +// return CAIRO_STATUS_INVALID_WEIGHT; +// case ::std::experimental::drawing::status::invalid_size: +// return CAIRO_STATUS_INVALID_SIZE; +// case ::std::experimental::drawing::status::user_font_not_implemented: +// return CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED; +// case ::std::experimental::drawing::status::device_type_mismatch: +// return CAIRO_STATUS_DEVICE_TYPE_MISMATCH; +// case ::std::experimental::drawing::status::device_error: +// return CAIRO_STATUS_DEVICE_ERROR; +// case ::std::experimental::drawing::status::invalid_mesh_construction: +// return CAIRO_STATUS_INVALID_MESH_CONSTRUCTION; +// case ::std::experimental::drawing::status::device_finished: +// return CAIRO_STATUS_DEVICE_FINISHED; +// case ::std::experimental::drawing::status::last_status: +// throw ::std::runtime_error("Invalid status value status::last_status."); +// default: +// throw ::std::runtime_error("Unknown status value."); +// } +// } + +// inline ::std::experimental::drawing::status _Cairo_status_t_to_status(cairo_status_t cs) { +// switch (cs) { +// case CAIRO_STATUS_SUCCESS: +// return ::std::experimental::drawing::status::success; +// case CAIRO_STATUS_NO_MEMORY: +// return ::std::experimental::drawing::status::no_memory; +// case CAIRO_STATUS_INVALID_RESTORE: +// return ::std::experimental::drawing::status::invalid_restore; +// case CAIRO_STATUS_INVALID_POP_GROUP: +// return ::std::experimental::drawing::status::invalid_pop_group; +// case CAIRO_STATUS_NO_CURRENT_POINT: +// return ::std::experimental::drawing::status::no_current_point; +// case CAIRO_STATUS_INVALID_MATRIX: +// return ::std::experimental::drawing::status::invalid_matrix; +// case CAIRO_STATUS_INVALID_STATUS: +// return ::std::experimental::drawing::status::invalid_status; +// case CAIRO_STATUS_NULL_POINTER: +// return ::std::experimental::drawing::status::null_pointer; +// case CAIRO_STATUS_INVALID_STRING: +// return ::std::experimental::drawing::status::invalid_string; +// case CAIRO_STATUS_INVALID_PATH_DATA: +// return ::std::experimental::drawing::status::invalid_path_data; +// case CAIRO_STATUS_READ_ERROR: +// return ::std::experimental::drawing::status::read_error; +// case CAIRO_STATUS_WRITE_ERROR: +// return ::std::experimental::drawing::status::write_error; +// case CAIRO_STATUS_SURFACE_FINISHED: +// return ::std::experimental::drawing::status::surface_finished; +// case CAIRO_STATUS_SURFACE_TYPE_MISMATCH: +// return ::std::experimental::drawing::status::surface_type_mismatch; +// case CAIRO_STATUS_PATTERN_TYPE_MISMATCH: +// return ::std::experimental::drawing::status::pattern_type_mismatch; +// case CAIRO_STATUS_INVALID_CONTENT: +// return ::std::experimental::drawing::status::invalid_content; +// case CAIRO_STATUS_INVALID_FORMAT: +// return ::std::experimental::drawing::status::invalid_format; +// case CAIRO_STATUS_INVALID_VISUAL: +// return ::std::experimental::drawing::status::invalid_visual; +// case CAIRO_STATUS_FILE_NOT_FOUND: +// return ::std::experimental::drawing::status::file_not_found; +// case CAIRO_STATUS_INVALID_DASH: +// return ::std::experimental::drawing::status::invalid_dash; +// case CAIRO_STATUS_INVALID_DSC_COMMENT: +// return ::std::experimental::drawing::status::invalid_dsc_comment; +// case CAIRO_STATUS_INVALID_INDEX: +// return ::std::experimental::drawing::status::invalid_index; +// case CAIRO_STATUS_CLIP_NOT_REPRESENTABLE: +// return ::std::experimental::drawing::status::clip_not_representable; +// case CAIRO_STATUS_TEMP_FILE_ERROR: +// return ::std::experimental::drawing::status::temp_file_error; +// case CAIRO_STATUS_INVALID_STRIDE: +// return ::std::experimental::drawing::status::invalid_stride; +// case CAIRO_STATUS_FONT_TYPE_MISMATCH: +// return ::std::experimental::drawing::status::font_type_mismatch; +// case CAIRO_STATUS_USER_FONT_IMMUTABLE: +// return ::std::experimental::drawing::status::user_font_immutable; +// case CAIRO_STATUS_USER_FONT_ERROR: +// return ::std::experimental::drawing::status::user_font_error; +// case CAIRO_STATUS_NEGATIVE_COUNT: +// return ::std::experimental::drawing::status::negative_count; +// case CAIRO_STATUS_INVALID_CLUSTERS: +// return ::std::experimental::drawing::status::invalid_clusters; +// case CAIRO_STATUS_INVALID_SLANT: +// return ::std::experimental::drawing::status::invalid_slant; +// case CAIRO_STATUS_INVALID_WEIGHT: +// return ::std::experimental::drawing::status::invalid_weight; +// case CAIRO_STATUS_INVALID_SIZE: +// return ::std::experimental::drawing::status::invalid_size; +// case CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED: +// return ::std::experimental::drawing::status::user_font_not_implemented; +// case CAIRO_STATUS_DEVICE_TYPE_MISMATCH: +// return ::std::experimental::drawing::status::device_type_mismatch; +// case CAIRO_STATUS_DEVICE_ERROR: +// return ::std::experimental::drawing::status::device_error; +// case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: +// return ::std::experimental::drawing::status::invalid_mesh_construction; +// case CAIRO_STATUS_DEVICE_FINISHED: +// return ::std::experimental::drawing::status::device_finished; +// case CAIRO_STATUS_LAST_STATUS: +// throw ::std::runtime_error("Invalid cairo_status_t value CAIRO_STATUS_LAST_STATUS."); +// default: +// throw ::std::runtime_error("Unknown cairo_status_t value."); +// } +// } + + inline QFont::StyleStrategy _Antialias_to_QFontOptions(::std::experimental::drawing::antialias aa) { + switch (aa) { + case ::std::experimental::drawing::antialias::default_antialias: + case ::std::experimental::drawing::antialias::gray: + case ::std::experimental::drawing::antialias::subpixel: + case ::std::experimental::drawing::antialias::fast: + case ::std::experimental::drawing::antialias::good: + case ::std::experimental::drawing::antialias::best: + return QFont::PreferAntialias; + case ::std::experimental::drawing::antialias::none: + return QFont::NoAntialias; + default: + throw ::std::runtime_error("Unknown antialias value."); + } + } + + inline ::std::experimental::drawing::antialias _QFontOptions_to_antialias(QFont::StyleStrategy qss) { + switch (qss) { + case QFont::PreferAntialias: + return ::std::experimental::drawing::antialias::best; + case QFont::NoAntialias: + return ::std::experimental::drawing::antialias::none; + default: + throw ::std::runtime_error("Unknown QFont::StyleStrategy value."); + } + } + +// inline cairo_content_t _Content_to_cairo_content_t(::std::experimental::drawing::content c) { +// switch (c) { +// case ::std::experimental::drawing::content::color: +// return CAIRO_CONTENT_COLOR; +// case ::std::experimental::drawing::content::alpha: +// return CAIRO_CONTENT_ALPHA; +// case ::std::experimental::drawing::content::color_alpha: +// return CAIRO_CONTENT_COLOR_ALPHA; +// default: +// throw ::std::runtime_error("Unknown content value."); +// } +// } + +// inline ::std::experimental::drawing::content _Cairo_content_t_to_content(cairo_content_t cc) { +// switch (cc) { +// case CAIRO_CONTENT_COLOR: +// return ::std::experimental::drawing::content::color; +// case CAIRO_CONTENT_ALPHA: +// return ::std::experimental::drawing::content::alpha; +// case CAIRO_CONTENT_COLOR_ALPHA: +// return ::std::experimental::drawing::content::color_alpha; +// default: +// throw ::std::runtime_error("Unknown cairo_content_t value."); +// } +// } + +// inline cairo_fill_rule_t _Fill_rule_to_cairo_fill_rule_t(::std::experimental::drawing::fill_rule fr) { +// switch (fr) { +// case ::std::experimental::drawing::fill_rule::winding: +// return CAIRO_FILL_RULE_WINDING; +// case ::std::experimental::drawing::fill_rule::even_odd: +// return CAIRO_FILL_RULE_EVEN_ODD; +// default: +// throw ::std::runtime_error("Unknown fill_rule value."); +// } +// } + +// inline ::std::experimental::drawing::fill_rule _Cairo_fill_rule_t_to_fill_rule(cairo_fill_rule_t cfr) { +// switch (cfr) { +// case CAIRO_FILL_RULE_WINDING: +// return ::std::experimental::drawing::fill_rule::winding; +// case CAIRO_FILL_RULE_EVEN_ODD: +// return ::std::experimental::drawing::fill_rule::even_odd; +// default: +// throw ::std::runtime_error("Unknown cairo_fill_rule_t value."); +// } +// } + +// inline cairo_line_cap_t _Line_cap_to_cairo_line_cap_t(::std::experimental::drawing::line_cap lc) { +// switch (lc) { +// case ::std::experimental::drawing::line_cap::butt: +// return CAIRO_LINE_CAP_BUTT; +// case ::std::experimental::drawing::line_cap::round: +// return CAIRO_LINE_CAP_ROUND; +// case ::std::experimental::drawing::line_cap::square: +// return CAIRO_LINE_CAP_SQUARE; +// default: +// throw ::std::runtime_error("Unknown line_cap value."); +// } +// } + +// inline ::std::experimental::drawing::line_cap _Cairo_line_cap_t_to_line_cap(cairo_line_cap_t clc) { +// switch (clc) { +// case CAIRO_LINE_CAP_BUTT: +// return ::std::experimental::drawing::line_cap::butt; +// case CAIRO_LINE_CAP_ROUND: +// return ::std::experimental::drawing::line_cap::round; +// case CAIRO_LINE_CAP_SQUARE: +// return ::std::experimental::drawing::line_cap::square; +// default: +// throw ::std::runtime_error("Unknown cairo_line_cap_t value."); +// } +// } + +// inline cairo_line_join_t _Line_join_to_cairo_line_join_t(::std::experimental::drawing::line_join lj) { +// switch (lj) { +// case ::std::experimental::drawing::line_join::miter: +// return CAIRO_LINE_JOIN_MITER; +// case ::std::experimental::drawing::line_join::round: +// return CAIRO_LINE_JOIN_ROUND; +// case ::std::experimental::drawing::line_join::bevel: +// return CAIRO_LINE_JOIN_BEVEL; +// default: +// throw ::std::runtime_error("Unknown line_join value."); +// } +// } + +// inline ::std::experimental::drawing::line_join _Cairo_line_join_t_to_line_join(cairo_line_join_t clj) { +// switch (clj) { +// case CAIRO_LINE_JOIN_MITER: +// return ::std::experimental::drawing::line_join::miter; +// case CAIRO_LINE_JOIN_ROUND: +// return ::std::experimental::drawing::line_join::round; +// case CAIRO_LINE_JOIN_BEVEL: +// return ::std::experimental::drawing::line_join::bevel; +// default: +// throw ::std::runtime_error("Unknown cairo_line_join_t value."); +// } +// } + +// inline cairo_operator_t _Compositing_operator_to_cairo_operator_t(::std::experimental::drawing::compositing_operator co) { +// switch (co) +// { +// case ::std::experimental::drawing::compositing_operator::clear: +// return CAIRO_OPERATOR_CLEAR; +// case ::std::experimental::drawing::compositing_operator::source: +// return CAIRO_OPERATOR_SOURCE; +// case ::std::experimental::drawing::compositing_operator::over: +// return CAIRO_OPERATOR_OVER; +// case ::std::experimental::drawing::compositing_operator::in: +// return CAIRO_OPERATOR_IN; +// case ::std::experimental::drawing::compositing_operator::out: +// return CAIRO_OPERATOR_OUT; +// case ::std::experimental::drawing::compositing_operator::atop: +// return CAIRO_OPERATOR_ATOP; +// case ::std::experimental::drawing::compositing_operator::dest: +// return CAIRO_OPERATOR_DEST; +// case ::std::experimental::drawing::compositing_operator::dest_over: +// return CAIRO_OPERATOR_DEST_OVER; +// case ::std::experimental::drawing::compositing_operator::dest_in: +// return CAIRO_OPERATOR_DEST_IN; +// case ::std::experimental::drawing::compositing_operator::dest_out: +// return CAIRO_OPERATOR_DEST_OUT; +// case ::std::experimental::drawing::compositing_operator::dest_atop: +// return CAIRO_OPERATOR_DEST_ATOP; +// case ::std::experimental::drawing::compositing_operator::xor_compositing_operator: +// return CAIRO_OPERATOR_XOR; +// case ::std::experimental::drawing::compositing_operator::add: +// return CAIRO_OPERATOR_ADD; +// case ::std::experimental::drawing::compositing_operator::saturate: +// return CAIRO_OPERATOR_SATURATE; +// case ::std::experimental::drawing::compositing_operator::multiply: +// return CAIRO_OPERATOR_MULTIPLY; +// case ::std::experimental::drawing::compositing_operator::screen: +// return CAIRO_OPERATOR_SCREEN; +// case ::std::experimental::drawing::compositing_operator::overlay: +// return CAIRO_OPERATOR_OVERLAY; +// case ::std::experimental::drawing::compositing_operator::darken: +// return CAIRO_OPERATOR_DARKEN; +// case ::std::experimental::drawing::compositing_operator::lighten: +// return CAIRO_OPERATOR_LIGHTEN; +// case ::std::experimental::drawing::compositing_operator::color_dodge: +// return CAIRO_OPERATOR_COLOR_DODGE; +// case ::std::experimental::drawing::compositing_operator::color_burn: +// return CAIRO_OPERATOR_COLOR_BURN; +// case ::std::experimental::drawing::compositing_operator::hard_light: +// return CAIRO_OPERATOR_HARD_LIGHT; +// case ::std::experimental::drawing::compositing_operator::soft_light: +// return CAIRO_OPERATOR_SOFT_LIGHT; +// case ::std::experimental::drawing::compositing_operator::difference: +// return CAIRO_OPERATOR_DIFFERENCE; +// case ::std::experimental::drawing::compositing_operator::exclusion: +// return CAIRO_OPERATOR_EXCLUSION; +// case ::std::experimental::drawing::compositing_operator::hsl_hue: +// return CAIRO_OPERATOR_HSL_HUE; +// case ::std::experimental::drawing::compositing_operator::hsl_saturation: +// return CAIRO_OPERATOR_HSL_SATURATION; +// case ::std::experimental::drawing::compositing_operator::hsl_color: +// return CAIRO_OPERATOR_HSL_COLOR; +// case ::std::experimental::drawing::compositing_operator::hsl_luminosity: +// return CAIRO_OPERATOR_HSL_LUMINOSITY; +// default: +// throw ::std::runtime_error("Unknown compositing_operator value."); +// } +// } + +// inline ::std::experimental::drawing::compositing_operator _Cairo_operator_t_to_compositing_operator(cairo_operator_t co) { +// switch (co) +// { +// case CAIRO_OPERATOR_CLEAR: +// return ::std::experimental::drawing::compositing_operator::clear; +// case CAIRO_OPERATOR_SOURCE: +// return ::std::experimental::drawing::compositing_operator::source; +// case CAIRO_OPERATOR_OVER: +// return ::std::experimental::drawing::compositing_operator::over; +// case CAIRO_OPERATOR_IN: +// return ::std::experimental::drawing::compositing_operator::in; +// case CAIRO_OPERATOR_OUT: +// return ::std::experimental::drawing::compositing_operator::out; +// case CAIRO_OPERATOR_ATOP: +// return ::std::experimental::drawing::compositing_operator::atop; +// case CAIRO_OPERATOR_DEST: +// return ::std::experimental::drawing::compositing_operator::dest; +// case CAIRO_OPERATOR_DEST_OVER: +// return ::std::experimental::drawing::compositing_operator::dest_over; +// case CAIRO_OPERATOR_DEST_IN: +// return ::std::experimental::drawing::compositing_operator::dest_in; +// case CAIRO_OPERATOR_DEST_OUT: +// return ::std::experimental::drawing::compositing_operator::dest_out; +// case CAIRO_OPERATOR_DEST_ATOP: +// return ::std::experimental::drawing::compositing_operator::dest_atop; +// case CAIRO_OPERATOR_XOR: +// return ::std::experimental::drawing::compositing_operator::xor_compositing_operator; +// case CAIRO_OPERATOR_ADD: +// return ::std::experimental::drawing::compositing_operator::add; +// case CAIRO_OPERATOR_SATURATE: +// return ::std::experimental::drawing::compositing_operator::saturate; +// case CAIRO_OPERATOR_MULTIPLY: +// return ::std::experimental::drawing::compositing_operator::multiply; +// case CAIRO_OPERATOR_SCREEN: +// return ::std::experimental::drawing::compositing_operator::screen; +// case CAIRO_OPERATOR_OVERLAY: +// return ::std::experimental::drawing::compositing_operator::overlay; +// case CAIRO_OPERATOR_DARKEN: +// return ::std::experimental::drawing::compositing_operator::darken; +// case CAIRO_OPERATOR_LIGHTEN: +// return ::std::experimental::drawing::compositing_operator::lighten; +// case CAIRO_OPERATOR_COLOR_DODGE: +// return ::std::experimental::drawing::compositing_operator::color_dodge; +// case CAIRO_OPERATOR_COLOR_BURN: +// return ::std::experimental::drawing::compositing_operator::color_burn; +// case CAIRO_OPERATOR_HARD_LIGHT: +// return ::std::experimental::drawing::compositing_operator::hard_light; +// case CAIRO_OPERATOR_SOFT_LIGHT: +// return ::std::experimental::drawing::compositing_operator::soft_light; +// case CAIRO_OPERATOR_DIFFERENCE: +// return ::std::experimental::drawing::compositing_operator::difference; +// case CAIRO_OPERATOR_EXCLUSION: +// return ::std::experimental::drawing::compositing_operator::exclusion; +// case CAIRO_OPERATOR_HSL_HUE: +// return ::std::experimental::drawing::compositing_operator::hsl_hue; +// case CAIRO_OPERATOR_HSL_SATURATION: +// return ::std::experimental::drawing::compositing_operator::hsl_saturation; +// case CAIRO_OPERATOR_HSL_COLOR: +// return ::std::experimental::drawing::compositing_operator::hsl_color; +// case CAIRO_OPERATOR_HSL_LUMINOSITY: +// return ::std::experimental::drawing::compositing_operator::hsl_luminosity; +// default: +// throw ::std::runtime_error("Unknown cairo_operator_t value."); +// } +// } + + inline QImage::Format _Format_to_QImage_Format(::std::experimental::drawing::format f) { + switch (f) { + case ::std::experimental::drawing::format::invalid: + return QImage::Format_Invalid; + case ::std::experimental::drawing::format::argb32: + return QImage::Format_ARGB32_Premultiplied; + case ::std::experimental::drawing::format::rgb24: + return QImage::Format_RGB32; + case ::std::experimental::drawing::format::a8: + return QImage::Format_Indexed8; + case ::std::experimental::drawing::format::a1: + return QImage::Format_MonoLSB; + case ::std::experimental::drawing::format::rgb16_565: + return QImage::Format_RGB16; + default: + throw ::std::runtime_error("Unknown format value."); + } + } + + inline ::std::experimental::drawing::format _QImage_Format_to_format(QImage::Format qf) { + switch (qf) { + case QImage::Format_Invalid: + return ::std::experimental::drawing::format::invalid; + case QImage::Format_ARGB32_Premultiplied: + return ::std::experimental::drawing::format::argb32; + case QImage::Format_RGB32: + return ::std::experimental::drawing::format::rgb24; + case QImage::Format_Indexed8: + return ::std::experimental::drawing::format::a8; + case QImage::Format_MonoLSB: + return ::std::experimental::drawing::format::a1; + case QImage::Format_RGB16: + return ::std::experimental::drawing::format::rgb16_565; + default: + throw ::std::runtime_error("Unknown QImage::Format value."); + } + } + +// inline ::std::experimental::drawing::path_data_type _Cairo_path_data_type_t_to_path_data_type(cairo_path_data_type_t cpdt) { +// switch (cpdt) { +// case CAIRO_PATH_MOVE_TO: +// return ::std::experimental::drawing::path_data_type::move_to; +// case CAIRO_PATH_LINE_TO: +// return ::std::experimental::drawing::path_data_type::line_to; +// case CAIRO_PATH_CURVE_TO: +// return ::std::experimental::drawing::path_data_type::curve_to; +// case CAIRO_PATH_CLOSE_PATH: +// return ::std::experimental::drawing::path_data_type::close_path; +// default: +// throw ::std::runtime_error("Unknown cairo_path_data_type_t value."); +// } +// } + +// inline cairo_extend_t _Extend_to_cairo_extend_t(::std::experimental::drawing::extend e) { +// switch (e) { +// case ::std::experimental::drawing::extend::none: +// return CAIRO_EXTEND_NONE; +// case ::std::experimental::drawing::extend::repeat: +// return CAIRO_EXTEND_REPEAT; +// case ::std::experimental::drawing::extend::reflect: +// return CAIRO_EXTEND_REFLECT; +// case ::std::experimental::drawing::extend::pad: +// return CAIRO_EXTEND_PAD; +// default: +// throw ::std::runtime_error("Unknown extend value."); +// } +// } + +// inline ::std::experimental::drawing::extend _Cairo_extend_t_to_extend(cairo_extend_t ce) { +// switch (ce) { +// case CAIRO_EXTEND_NONE: +// return ::std::experimental::drawing::extend::none; +// case CAIRO_EXTEND_REPEAT: +// return ::std::experimental::drawing::extend::repeat; +// case CAIRO_EXTEND_REFLECT: +// return ::std::experimental::drawing::extend::reflect; +// case CAIRO_EXTEND_PAD: +// return ::std::experimental::drawing::extend::pad; +// default: +// throw ::std::runtime_error("Unknown cairo_extend_t value."); +// } +// } + +// inline cairo_filter_t _Filter_to_cairo_filter_t(::std::experimental::drawing::filter f) { +// switch (f) { +// case ::std::experimental::drawing::filter::fast: +// return CAIRO_FILTER_FAST; +// case ::std::experimental::drawing::filter::good: +// return CAIRO_FILTER_GOOD; +// case ::std::experimental::drawing::filter::best: +// return CAIRO_FILTER_BEST; +// case ::std::experimental::drawing::filter::nearest: +// return CAIRO_FILTER_NEAREST; +// case ::std::experimental::drawing::filter::bilinear: +// return CAIRO_FILTER_BILINEAR; +// case ::std::experimental::drawing::filter::gaussian: +// return CAIRO_FILTER_GAUSSIAN; +// default: +// throw ::std::runtime_error("Unknown filter value."); +// } +// } + +// inline ::std::experimental::drawing::filter _Cairo_filter_t_to_filter(cairo_filter_t cf) { +// switch (cf) { +// case CAIRO_FILTER_FAST: +// return ::std::experimental::drawing::filter::fast; +// case CAIRO_FILTER_GOOD: +// return ::std::experimental::drawing::filter::good; +// case CAIRO_FILTER_BEST: +// return ::std::experimental::drawing::filter::best; +// case CAIRO_FILTER_NEAREST: +// return ::std::experimental::drawing::filter::nearest; +// case CAIRO_FILTER_BILINEAR: +// return ::std::experimental::drawing::filter::bilinear; +// case CAIRO_FILTER_GAUSSIAN: +// return ::std::experimental::drawing::filter::gaussian; +// default: +// throw ::std::runtime_error("Unknown cairo_filter_t value."); +// } +// } + +// inline cairo_pattern_type_t _Pattern_type_to_cairo_pattern_type_t(::std::experimental::drawing::pattern_type pt) { +// switch (pt) { +// case ::std::experimental::drawing::pattern_type::solid_color: +// return CAIRO_PATTERN_TYPE_SOLID; +// case ::std::experimental::drawing::pattern_type::surface: +// return CAIRO_PATTERN_TYPE_SURFACE; +// case ::std::experimental::drawing::pattern_type::linear: +// return CAIRO_PATTERN_TYPE_LINEAR; +// case ::std::experimental::drawing::pattern_type::radial: +// return CAIRO_PATTERN_TYPE_RADIAL; +// case ::std::experimental::drawing::pattern_type::mesh: +// return CAIRO_PATTERN_TYPE_MESH; +// case ::std::experimental::drawing::pattern_type::raster_source: +// return CAIRO_PATTERN_TYPE_RASTER_SOURCE; +// default: +// throw ::std::runtime_error("Unknown pattern_type value."); +// } +// } + + inline ::std::experimental::drawing::pattern_type _Qt_brush_style_to_pattern_type(Qt::BrushStyle qbs) { + switch (qbs) { + case Qt::SolidPattern: + return ::std::experimental::drawing::pattern_type::solid_color; + case Qt::TexturePattern: + return ::std::experimental::drawing::pattern_type::surface; + case Qt::LinearGradientPattern: + return ::std::experimental::drawing::pattern_type::linear; + case Qt::RadialGradientPattern: + return ::std::experimental::drawing::pattern_type::radial; +// case QGradient::MeshGradient: +// return ::std::experimental::drawing::pattern_type::mesh; +// case QGradient::RasterSource: +// return ::std::experimental::drawing::pattern_type::raster_source; + default: + throw ::std::runtime_error("Unknown Qt::BrushStyle value."); + } + } + +// inline cairo_font_slant_t _Font_slant_to_cairo_font_slant_t(::std::experimental::drawing::font_slant fs) { +// switch (fs) { +// case ::std::experimental::drawing::font_slant::normal: +// return CAIRO_FONT_SLANT_NORMAL; +// case ::std::experimental::drawing::font_slant::italic: +// return CAIRO_FONT_SLANT_ITALIC; +// case ::std::experimental::drawing::font_slant::oblique: +// return CAIRO_FONT_SLANT_OBLIQUE; +// default: +// throw ::std::runtime_error("Unknown font_slant value."); +// } +// } + +// inline ::std::experimental::drawing::font_slant _Cairo_font_slant_t_to_font_slant(cairo_font_slant_t cfs) { +// switch (cfs) { +// case CAIRO_FONT_SLANT_NORMAL: +// return ::std::experimental::drawing::font_slant::normal; +// case CAIRO_FONT_SLANT_ITALIC: +// return ::std::experimental::drawing::font_slant::italic; +// case CAIRO_FONT_SLANT_OBLIQUE: +// return ::std::experimental::drawing::font_slant::oblique; +// default: +// throw ::std::runtime_error("Unknown cairo_font_slant_t value."); +// } +// } + +// inline cairo_font_weight_t _Font_weight_to_cairo_font_weight_t(::std::experimental::drawing::font_weight fw) { +// switch (fw) { +// case ::std::experimental::drawing::font_weight::normal: +// return CAIRO_FONT_WEIGHT_NORMAL; +// case ::std::experimental::drawing::font_weight::bold: +// return CAIRO_FONT_WEIGHT_BOLD; +// default: +// throw ::std::runtime_error("Unknown font_weight value."); +// } +// } + +// inline ::std::experimental::drawing::font_weight _Cairo_font_weight_t_to_font_weight(cairo_font_weight_t cfw) { +// switch (cfw) { +// case CAIRO_FONT_WEIGHT_NORMAL: +// return ::std::experimental::drawing::font_weight::normal; +// case CAIRO_FONT_WEIGHT_BOLD: +// return ::std::experimental::drawing::font_weight::bold; +// default: +// throw ::std::runtime_error("Unknown cairo_font_weight_t value."); +// } +// } + +// inline cairo_text_cluster_flags_t _Text_cluster_flags_to_cairo_text_cluster_flags_t(const ::std::experimental::drawing::text_cluster_flags::text_cluster_flags& tcf) { +// cairo_text_cluster_flags_t result{ }; +// if (tcf == 0) { +// return static_cast(0); +// } +// if ((tcf & ::std::experimental::drawing::text_cluster_flags::backward) != 0) { +// result = static_cast(result | CAIRO_TEXT_CLUSTER_FLAG_BACKWARD); +// } +// return result; +// } + +// inline ::std::experimental::drawing::text_cluster_flags::text_cluster_flags _Cairo_text_cluster_flags_t_to_text_cluster_flags(cairo_text_cluster_flags_t ctcf) { +// ::std::experimental::drawing::text_cluster_flags::text_cluster_flags result{ }; +// if (ctcf == 0) { +// return result; +// } + +// if ((ctcf & CAIRO_TEXT_CLUSTER_FLAG_BACKWARD) != 0) { +// result = static_cast<::std::experimental::drawing::text_cluster_flags::text_cluster_flags>(result | ::std::experimental::drawing::text_cluster_flags::backward); +// } + +// return result; +// } + + + inline QFont::HintingPreference _Hint_style_to_QFontOptions(::std::experimental::drawing::hint_style hs) { + switch (hs) { + case ::std::experimental::drawing::hint_style::default_hint_style: + return QFont::PreferDefaultHinting; + case ::std::experimental::drawing::hint_style::none: + return QFont::PreferNoHinting; + case ::std::experimental::drawing::hint_style::slight: + case ::std::experimental::drawing::hint_style::medium: + return QFont::PreferVerticalHinting; + case ::std::experimental::drawing::hint_style::full: + return QFont::PreferFullHinting; + default: + throw ::std::runtime_error("Unknown hint_style value."); + } + } + + inline ::std::experimental::drawing::hint_style _QFontOptions_to_hint_style(QFont::HintingPreference qhp) { + switch (qhp) { + case QFont::PreferDefaultHinting: + return ::std::experimental::drawing::hint_style::default_hint_style; + case QFont::PreferNoHinting: + return ::std::experimental::drawing::hint_style::none; + case QFont::PreferVerticalHinting: + return ::std::experimental::drawing::hint_style::medium; + case QFont::PreferFullHinting: + return ::std::experimental::drawing::hint_style::full; + default: + throw ::std::runtime_error("Unknown QFont::HintingPrefrence value."); + } + } + +// inline cairo_hint_metrics_t _Hint_metrics_to_cairo_hint_metrics_t(::std::experimental::drawing::hint_metrics hm) { +// switch (hm) { +// case ::std::experimental::drawing::hint_metrics::default_hint_metrics: +// return CAIRO_HINT_METRICS_DEFAULT; + +// case ::std::experimental::drawing::hint_metrics::off: +// return CAIRO_HINT_METRICS_OFF; +// case ::std::experimental::drawing::hint_metrics::on: +// return CAIRO_HINT_METRICS_ON; +// default: +// throw ::std::runtime_error("Unknown hint_metrics value."); +// } +// } + +// inline ::std::experimental::drawing::hint_metrics _Cairo_hint_metrics_t_to_hint_metrics(cairo_hint_metrics_t chm) { +// switch (chm) { +// case CAIRO_HINT_METRICS_DEFAULT: +// return ::std::experimental::drawing::hint_metrics::default_hint_metrics; +// case CAIRO_HINT_METRICS_OFF: +// return ::std::experimental::drawing::hint_metrics::off; +// case CAIRO_HINT_METRICS_ON: +// return ::std::experimental::drawing::hint_metrics::on; +// default: +// throw ::std::runtime_error("Unknown cairo_hint_metrics_t value."); +// } +// } + + QColor rgba_color_to_QColor(rgba_color color) { + return QColor(color.r * 255.0, color.g * 255.0, color.b * 255.0, color.a * 255.0); + } + + } // close drawing + } // close experimental +} // close std + +#endif diff --git a/qt/src/xdrawing.h b/qt/src/xdrawing.h new file mode 100755 index 0000000..182613b --- /dev/null +++ b/qt/src/xdrawing.h @@ -0,0 +1,28 @@ +#pragma once + +#ifndef _XDRAWING_ +#define _XDRAWING_ + +#include +#include +#include +#include +#include +#include +#include + +struct _QFontOptions +{ + QFont::StyleStrategy styleStrategy; + QFont::HintingPreference hintingPreference; +}; + +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/qt/src/xdrawinghelpers.h b/qt/src/xdrawinghelpers.h new file mode 100755 index 0000000..716e50c --- /dev/null +++ b/qt/src/xdrawinghelpers.h @@ -0,0 +1,25 @@ +#pragma once +#include "drawing.h" + +#define _PI 3.1415926535897932384626433832795 + +inline void _Throw_if_failed_status(::std::experimental::drawing::status s) { + if (s != ::std::experimental::drawing::status::success) { + throw ::std::experimental::drawing::drawing_exception(s); + } +} + +// Converts 'value' to an int and returns it. If nearestNeighbor is true, the return value is the result of calling 'static_cast(round(value))'; if false, the return value is the result of calling 'static_cast(trunc(value))'. +inline int _Double_to_int(double value, bool nearestNeighbor = true) { + if (nearestNeighbor) { + // Round to the nearest neighbor. + return static_cast(round(value)); + } + // Otherwise truncate. + return static_cast(trunc(value)); +} + +template +T _Degrees_to_radians(T degrees) { + return degrees * static_cast(3.1415926535897932384626433832795L) / static_cast(180.0L); +} From 97617190f1c7f8bd7ef78d572df972a0d2d2cf92 Mon Sep 17 00:00:00 2001 From: Jean Gressmann Date: Wed, 19 Nov 2014 21:42:31 +0100 Subject: [PATCH 02/30] * matrix: implemented inverse() --- qt/src/matrix.cpp | 152 ++++++++++++++++++++++++++++++---------------- 1 file changed, 99 insertions(+), 53 deletions(-) diff --git a/qt/src/matrix.cpp b/qt/src/matrix.cpp index 33548f0..a88d994 100755 --- a/qt/src/matrix.cpp +++ b/qt/src/matrix.cpp @@ -1,111 +1,157 @@ #include "drawing.h" #include "xdrawinghelpers.h" #include "xcairoenumhelpers.h" +#include + using namespace std; using namespace std::experimental::drawing; +namespace { + +inline +double +det2x2(double a1, double a2, double b1, double b2) { + return a1 * b2 - a2 * b1; +} + +} // anon + matrix matrix::init_identity() { - return{ 1.0, 0.0, 0.0, 1.0, 0.0, 0.0 }; + return{ 1.0, 0.0, 0.0, 1.0, 0.0, 0.0 }; } matrix matrix::init_translate(const point& value) { - return{ 1.0, 0.0, 0.0, 1.0, value.x, value.y }; + return{ 1.0, 0.0, 0.0, 1.0, value.x, value.y }; } matrix matrix::init_scale(const point& value) { - return{ value.x, 0.0, 0.0, value.y, 0.0, 0.0 }; + return{ value.x, 0.0, 0.0, value.y, 0.0, 0.0 }; } matrix matrix::init_rotate(double radians) { - auto sine = sin(radians); - auto cosine = cos(radians); - return{ cosine, sine, -sine, cosine, 0.0, 0.0 }; + auto sine = sin(radians); + auto cosine = cos(radians); + return{ cosine, sine, -sine, cosine, 0.0, 0.0 }; } matrix matrix::init_shear_x(double factor) { - return{ 1.0, 0.0, factor, 1.0, 0.0, 0.0 }; + return{ 1.0, 0.0, factor, 1.0, 0.0, 0.0 }; } matrix matrix::init_shear_y(double factor) { - return{ 1.0, factor, 0.0, 1.0, 0.0, 0.0 }; + return{ 1.0, factor, 0.0, 1.0, 0.0, 0.0 }; } matrix& matrix::translate(const point& value) { - *this = init_translate(value) * (*this); - return *this; + *this = init_translate(value) * (*this); + return *this; } matrix& matrix::scale(const point& value) { - *this *= init_scale(value); - return *this; + *this *= init_scale(value); + return *this; } matrix& matrix::rotate(double radians) { - *this *= init_rotate(radians); - return *this; + *this *= init_rotate(radians); + return *this; } matrix& matrix::shear_x(double factor) { - *this *= init_shear_x(factor); - return *this; + *this *= init_shear_x(factor); + return *this; } matrix& matrix::shear_y(double factor) { - *this *= init_shear_y(factor); - return *this; + *this *= init_shear_y(factor); + return *this; } double matrix::determinant() { - if (isnan(x0) || isnan(y0)) { - throw drawing_exception(status::invalid_matrix); - } - return xx * yy - yx * xy; + if (isnan(x0) || isnan(y0)) { + throw drawing_exception(status::invalid_matrix); + } + return xx * yy - yx * xy; } void matrix::invert() { - cairo_matrix_t cm{ xx, yx, xy, yy, x0, y0 }; - _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_matrix_invert(&cm))); - xx = cm.xx; - yx = cm.yx; - xy = cm.xy; - yy = cm.yy; - x0 = cm.x0; - y0 = cm.y0; + // Yep, peeked at the cairo sources + /* Simple scaling|translation matrices are quite common... */ + if (xy == 0. && yx == 0.) { + x0 = -x0; + y0 = -y0; + + if (xx != 1.) { + if (xx == 0.) + throw drawing_exception(status::invalid_matrix); + + xx = 1. / xx; + x0 *= xx; + } + + if (yy != 1.) { + if (yy == 0.) + throw drawing_exception(status::invalid_matrix); + + yy = 1. / yy; + y0 *= yy; + } + } else { + + /* inv (A) = 1/det (A) * adj (A) */ + const double det = det2x2 (xx, yx, xy, yy); + + if (! isfinite (det)) + throw drawing_exception(status::invalid_matrix); + + if (det == 0) + throw drawing_exception(status::invalid_matrix); + + const double a = xx, b = yx, c = xy, d = yy, tx = x0, ty = y0; + const double onOverDet = 1 / det; + + xx = d * onOverDet; + yx = -b * onOverDet; + xy = -c * onOverDet; + yy = a * onOverDet; + x0 = (c * ty - d * tx) * onOverDet; + y0 = (b * tx - a * ty) * onOverDet; + } } matrix matrix::operator*=(const matrix& rhs) { - xx = (xx * rhs.xx) + (yx * rhs.xy); - yx = (xx * rhs.yx) + (yx * rhs.yy); - xy = (xy * rhs.xx) + (yy * rhs.xy); - yy = (xy * rhs.yx) + (yy * rhs.yy); - x0 = (x0 * rhs.xx) + (y0 * rhs.xy) + x0; - y0 = (x0 * rhs.yx) + (y0 * rhs.yy) + y0; + xx = (xx * rhs.xx) + (yx * rhs.xy); + yx = (xx * rhs.yx) + (yx * rhs.yy); + xy = (xy * rhs.xx) + (yy * rhs.xy); + yy = (xy * rhs.yx) + (yy * rhs.yy); + x0 = (x0 * rhs.xx) + (y0 * rhs.xy) + x0; + y0 = (x0 * rhs.yx) + (y0 * rhs.yy) + y0; - return *this; + return *this; } namespace std { - namespace experimental { - namespace drawing { - matrix operator*(const matrix& lhs, const matrix& rhs) { - return matrix{ - (lhs.xx * rhs.xx) + (lhs.yx * rhs.xy), - (lhs.xx * rhs.yx) + (lhs.yx * rhs.yy), - (lhs.xy * rhs.xx) + (lhs.yy * rhs.xy), - (lhs.xy * rhs.yx) + (lhs.yy * rhs.yy), - (lhs.x0 * rhs.xx) + (lhs.y0 * rhs.xy) + lhs.x0, - (lhs.x0 * rhs.yx) + (lhs.y0 * rhs.yy) + lhs.y0 - }; - } - } - } + namespace experimental { + namespace drawing { + matrix operator*(const matrix& lhs, const matrix& rhs) { + return matrix{ + (lhs.xx * rhs.xx) + (lhs.yx * rhs.xy), + (lhs.xx * rhs.yx) + (lhs.yx * rhs.yy), + (lhs.xy * rhs.xx) + (lhs.yy * rhs.xy), + (lhs.xy * rhs.yx) + (lhs.yy * rhs.yy), + (lhs.x0 * rhs.xx) + (lhs.y0 * rhs.xy) + lhs.x0, + (lhs.x0 * rhs.yx) + (lhs.y0 * rhs.yy) + lhs.y0 + }; + } + } + } } point matrix::transform_distance(const point& dist) const { - return{ xx * dist.x + xy * dist.y, yx * dist.x + yy * dist.y }; + return{ xx * dist.x + xy * dist.y, yx * dist.x + yy * dist.y }; } point matrix::transform_point(const point& pt) const { - return transform_distance(pt) + point{ x0, y0 }; + return transform_distance(pt) + point{ x0, y0 }; } From e8bda1ba7961b8175db43d3096679752a90cf8b0 Mon Sep 17 00:00:00 2001 From: Jean Gressmann Date: Wed, 19 Nov 2014 21:46:46 +0100 Subject: [PATCH 03/30] * Fixed signed/unsigned compare warnings. --- qt/src/linear_pattern_builder.cpp | 94 +++++++++++++++---------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/qt/src/linear_pattern_builder.cpp b/qt/src/linear_pattern_builder.cpp index e418971..5bd9d0f 100755 --- a/qt/src/linear_pattern_builder.cpp +++ b/qt/src/linear_pattern_builder.cpp @@ -16,16 +16,16 @@ linear_pattern_builder::linear_pattern_builder(linear_pattern_builder&& other) } linear_pattern_builder& linear_pattern_builder::operator=(linear_pattern_builder&& other) { - if (this != &other) { - _Pattern_type = move(other._Pattern_type); - _Extend = move(other._Extend); - _Filter = move(other._Filter); - _Matrix = move(other._Matrix); - _Point0 = move(other._Point0); - _Point1 = move(other._Point1); - _Color_stops = move(other._Color_stops); - } - return *this; + if (this != &other) { + _Pattern_type = move(other._Pattern_type); + _Extend = move(other._Extend); + _Filter = move(other._Filter); + _Matrix = move(other._Matrix); + _Point0 = move(other._Point0); + _Point1 = move(other._Point1); + _Color_stops = move(other._Color_stops); + } + return *this; } linear_pattern_builder::linear_pattern_builder(const point& pt0, const point& pt1) @@ -39,81 +39,81 @@ linear_pattern_builder::linear_pattern_builder(const point& pt0, const point& pt } pattern linear_pattern_builder::get_pattern() { - QLinearGradient pat(_Point0.x, _Point0.y, _Point1.x, _Point1.y); - for (const auto& stop : _Color_stops) { - pat.setColorAt(get<0>(stop), rgba_color_to_QColor(get<1>(stop))); - } + QLinearGradient pat(_Point0.x, _Point0.y, _Point1.x, _Point1.y); + for (const auto& stop : _Color_stops) { + pat.setColorAt(get<0>(stop), rgba_color_to_QColor(get<1>(stop))); + } - return pattern(new QBrush(pat)); + return pattern(new QBrush(pat)); } void linear_pattern_builder::set_extend(extend e) { - _Extend = e; + _Extend = e; } extend linear_pattern_builder::get_extend() { - return _Extend; + return _Extend; } void linear_pattern_builder::set_filter(filter f) { - _Filter = f; + _Filter = f; } filter linear_pattern_builder::get_filter() { - return _Filter; + return _Filter; } void linear_pattern_builder::set_matrix(const matrix& m) { - _Matrix = m; + _Matrix = m; } matrix linear_pattern_builder::get_matrix() { - return _Matrix; + return _Matrix; } void linear_pattern_builder::add_color_stop_rgba(double offset, const rgba_color& color) { - assert(offset >= 0.0 && offset <= 1.0); - assert(color.r >= 0.0 && color.r <= 1.0); - assert(color.g >= 0.0 && color.g <= 1.0); - assert(color.b >= 0.0 && color.b <= 1.0); - assert(color.a >= 0.0 && color.a <= 1.0); - _Color_stops.push_back(make_tuple(offset, color)); + assert(offset >= 0.0 && offset <= 1.0); + assert(color.r >= 0.0 && color.r <= 1.0); + assert(color.g >= 0.0 && color.g <= 1.0); + assert(color.b >= 0.0 && color.b <= 1.0); + assert(color.a >= 0.0 && color.a <= 1.0); + _Color_stops.push_back(make_tuple(offset, color)); } int linear_pattern_builder::get_color_stop_count() { - return static_cast(_Color_stops.size()); + return static_cast(_Color_stops.size()); } void linear_pattern_builder::get_color_stop_rgba(int index, double& offset, rgba_color& color) { - if (index >= _Color_stops.size() || index < 0) { - _Throw_if_failed_status(status::invalid_index); - } + if (static_cast(index) >= _Color_stops.size() || index < 0) { + _Throw_if_failed_status(status::invalid_index); + } - const auto& stop = _Color_stops.at(index); - offset = get<0>(stop); - color = get<1>(stop); + const auto& stop = _Color_stops.at(index); + offset = get<0>(stop); + color = get<1>(stop); } void linear_pattern_builder::set_color_stop_rgba(int index, double offset, const rgba_color& color) { - assert(offset >= 0.0 && offset <= 1.0); - assert(color.r >= 0.0 && color.r <= 1.0); - assert(color.g >= 0.0 && color.g <= 1.0); - assert(color.b >= 0.0 && color.b <= 1.0); - assert(color.a >= 0.0 && color.a <= 1.0); + assert(offset >= 0.0 && offset <= 1.0); + assert(color.r >= 0.0 && color.r <= 1.0); + assert(color.g >= 0.0 && color.g <= 1.0); + assert(color.b >= 0.0 && color.b <= 1.0); + assert(color.a >= 0.0 && color.a <= 1.0); - if (index >= _Color_stops.size() || index < 0) { - _Throw_if_failed_status(status::invalid_index); - } + if (static_cast(index) >= _Color_stops.size() || index < 0) { + _Throw_if_failed_status(status::invalid_index); + } - _Color_stops[index] = make_tuple(offset, color); + _Color_stops[index] = make_tuple(offset, color); } void linear_pattern_builder::get_linear_points(point& pt0, point& pt1) { - pt0 = _Point0; - pt1 = _Point1; + pt0 = _Point0; + pt1 = _Point1; } void linear_pattern_builder::set_linear_points(const point& pt0, const point& pt1) { - _Point0 = pt0; - _Point1 = pt1; + _Point0 = pt0; + _Point1 = pt1; } From 8949b81744c321884fe66a3cf357217557456fe9 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Wed, 24 Feb 2016 23:28:21 +0100 Subject: [PATCH 04/30] Removed top level autotools support --- GNU-Linux_build_instructions.txt | 23 ---- Makefile.am | 2 - configure.ac | 15 --- m4/ax_append_flag.m4 | 69 ---------- m4/ax_cflags_warn_all.m4 | 122 ------------------ m4/ax_check_define.m4 | 92 ------------- m4/ax_cxx_compile_stdcxx_11.m4 | 142 --------------------- m4/ax_require_defined.m4 | 37 ------ run-configure-with-clang-and-libstdc++.sh | 3 - run-configure-with-gcc4_9-and-libstdc++.sh | 3 - run-configure-with-gcc5-and-libstdc++.sh | 3 - 11 files changed, 511 deletions(-) delete mode 100644 GNU-Linux_build_instructions.txt delete mode 100644 Makefile.am delete mode 100644 configure.ac delete mode 100644 m4/ax_append_flag.m4 delete mode 100644 m4/ax_cflags_warn_all.m4 delete mode 100644 m4/ax_check_define.m4 delete mode 100644 m4/ax_cxx_compile_stdcxx_11.m4 delete mode 100644 m4/ax_require_defined.m4 delete mode 100755 run-configure-with-clang-and-libstdc++.sh delete mode 100755 run-configure-with-gcc4_9-and-libstdc++.sh delete mode 100755 run-configure-with-gcc5-and-libstdc++.sh diff --git a/GNU-Linux_build_instructions.txt b/GNU-Linux_build_instructions.txt deleted file mode 100644 index 795b9e8..0000000 --- a/GNU-Linux_build_instructions.txt +++ /dev/null @@ -1,23 +0,0 @@ -You will need a relatively recent build of GNU autotools. Any recent distro -should have a reasonably new version available which will fit the needs here. -You will also need cairo, GTK+3, and related libraries; as long as you have -autotools, if you should be able to generate a configure script and it will -tell you if you are missing any other dependencies. - -To build the project, from this directory run the command 'autoreconf -i'. It -should run for a bit then complete silently. If so, you should then run the -generated './configure' script with any necessary parameters. This should -notify you if you are missing any pre-requisites or have an older version that -won't work. If configure completes successfully, you should be able to run the -'make' command and then execute the resulting executable by calling -the './N3888_RefImpl/src/N3888_RefImpl' executable. - -The drawing portion is the same code as in the Windows version. The entry -point uses GTK+3 and is primarily C code. It is patterned after Gnome project -utilities. It has improved significantly and is now essentially on par with -the Windows version. - -Tested on OpenSUSE 13.2 with GCC 4.9.0 using the following configure command: -'./configure CC=gcc-4.9 CXX=g++-4.9 CXXFLAGS="-g -std=c++1y"'. Also tested -with Clang 3.5 using the configure settings found in the -run-configure-with-clang-and-libstdc++.sh shell script. diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index f2abd87..0000000 --- a/Makefile.am +++ /dev/null @@ -1,2 +0,0 @@ -SUBDIRS = N3888_RefImpl -ACLOCAL_AMFLAGS = -I m4 diff --git a/configure.ac b/configure.ac deleted file mode 100644 index e41cb41..0000000 --- a/configure.ac +++ /dev/null @@ -1,15 +0,0 @@ -AC_INIT([amN3888_RefImpl], [1.0], [mikebmcl@gmail.com]) -AM_INIT_AUTOMAKE([foreign -Wall -Werror]) -AC_PROG_CC -AM_PROG_CC_C_O -AC_PROG_CXX -AC_CONFIG_HEADERS([config.h]) -AC_CONFIG_FILES([Makefile N3888_RefImpl/Makefile N3888_RefImpl/src/Makefile]) -AC_CONFIG_MACRO_DIR([m4]) -AC_LANG([C++]) -AX_CXX_COMPILE_STDCXX_11([noext], [mandatory]) -AX_CFLAGS_WARN_ALL -AX_CXXFLAGS_WARN_ALL -PKG_CHECK_MODULES([GTKCAIRO], [gtk+-3.0 >= 3.8.0 gmodule-2.0 gobject-2.0 cairo >= 1.12.16 x11]) -AC_SUBST([DOLLAR_SIGN],[$]) -AC_OUTPUT diff --git a/m4/ax_append_flag.m4 b/m4/ax_append_flag.m4 deleted file mode 100644 index 1d38b76..0000000 --- a/m4/ax_append_flag.m4 +++ /dev/null @@ -1,69 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_append_flag.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE]) -# -# DESCRIPTION -# -# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space -# added in between. -# -# If FLAGS-VARIABLE is not specified, the current language's flags (e.g. -# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains -# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly -# FLAG. -# -# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. -# -# LICENSE -# -# Copyright (c) 2008 Guido U. Draheim -# Copyright (c) 2011 Maarten Bosmans -# -# This program is free software: you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation, either version 3 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 2 - -AC_DEFUN([AX_APPEND_FLAG], -[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX -AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])dnl -AS_VAR_SET_IF(FLAGS, - [case " AS_VAR_GET(FLAGS) " in - *" $1 "*) - AC_RUN_LOG([: FLAGS already contains $1]) - ;; - *) - AC_RUN_LOG([: FLAGS="$FLAGS $1"]) - AS_VAR_SET(FLAGS, ["AS_VAR_GET(FLAGS) $1"]) - ;; - esac], - [AS_VAR_SET(FLAGS,["$1"])]) -AS_VAR_POPDEF([FLAGS])dnl -])dnl AX_APPEND_FLAG diff --git a/m4/ax_cflags_warn_all.m4 b/m4/ax_cflags_warn_all.m4 deleted file mode 100644 index 1f07799..0000000 --- a/m4/ax_cflags_warn_all.m4 +++ /dev/null @@ -1,122 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_CFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] -# AX_CXXFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] -# AX_FCFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] -# -# DESCRIPTION -# -# Try to find a compiler option that enables most reasonable warnings. -# -# For the GNU compiler it will be -Wall (and -ansi -pedantic) The result -# is added to the shellvar being CFLAGS, CXXFLAGS, or FCFLAGS by default. -# -# Currently this macro knows about the GCC, Solaris, Digital Unix, AIX, -# HP-UX, IRIX, NEC SX-5 (Super-UX 10), Cray J90 (Unicos 10.0.0.8), and -# Intel compilers. For a given compiler, the Fortran flags are much more -# experimental than their C equivalents. -# -# - $1 shell-variable-to-add-to : CFLAGS, CXXFLAGS, or FCFLAGS -# - $2 add-value-if-not-found : nothing -# - $3 action-if-found : add value to shellvariable -# - $4 action-if-not-found : nothing -# -# NOTE: These macros depend on AX_APPEND_FLAG. -# -# LICENSE -# -# Copyright (c) 2008 Guido U. Draheim -# Copyright (c) 2010 Rhys Ulerich -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 3 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 15 - -AC_DEFUN([AX_FLAGS_WARN_ALL],[dnl -AS_VAR_PUSHDEF([FLAGS],[_AC_LANG_PREFIX[]FLAGS])dnl -AS_VAR_PUSHDEF([VAR],[ac_cv_[]_AC_LANG_ABBREV[]flags_warn_all])dnl -AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings], -VAR,[VAR="no, unknown" -ac_save_[]FLAGS="$[]FLAGS" -for ac_arg dnl -in "-warn all % -warn all" dnl Intel - "-pedantic % -Wall" dnl GCC - "-xstrconst % -v" dnl Solaris C - "-std1 % -verbose -w0 -warnprotos" dnl Digital Unix - "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX - "-ansi -ansiE % -fullwarn" dnl IRIX - "+ESlit % +w1" dnl HP-UX C - "-Xc % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10) - "-h conform % -h msglevel 2" dnl Cray C (Unicos) - # -do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) -done -FLAGS="$ac_save_[]FLAGS" -]) -AS_VAR_POPDEF([FLAGS])dnl -AX_REQUIRE_DEFINED([AX_APPEND_FLAG]) -case ".$VAR" in - .ok|.ok,*) m4_ifvaln($3,$3) ;; - .|.no|.no,*) m4_default($4,[m4_ifval($2,[AX_APPEND_FLAG([$2], [$1])])]) ;; - *) m4_default($3,[AX_APPEND_FLAG([$VAR], [$1])]) ;; -esac -AS_VAR_POPDEF([VAR])dnl -])dnl AX_FLAGS_WARN_ALL -dnl implementation tactics: -dnl the for-argument contains a list of options. The first part of -dnl these does only exist to detect the compiler - usually it is -dnl a global option to enable -ansi or -extrawarnings. All other -dnl compilers will fail about it. That was needed since a lot of -dnl compilers will give false positives for some option-syntax -dnl like -Woption or -Xoption as they think of it is a pass-through -dnl to later compile stages or something. The "%" is used as a -dnl delimiter. A non-option comment can be given after "%%" marks -dnl which will be shown but not added to the respective C/CXXFLAGS. - -AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl -AC_LANG_PUSH([C]) -AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) -AC_LANG_POP([C]) -]) - -AC_DEFUN([AX_CXXFLAGS_WARN_ALL],[dnl -AC_LANG_PUSH([C++]) -AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) -AC_LANG_POP([C++]) -]) - -AC_DEFUN([AX_FCFLAGS_WARN_ALL],[dnl -AC_LANG_PUSH([Fortran]) -AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) -AC_LANG_POP([Fortran]) -]) diff --git a/m4/ax_check_define.m4 b/m4/ax_check_define.m4 deleted file mode 100644 index 4bc6948..0000000 --- a/m4/ax_check_define.m4 +++ /dev/null @@ -1,92 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_check_define.html -# =========================================================================== -# -# SYNOPSIS -# -# AC_CHECK_DEFINE([symbol], [ACTION-IF-FOUND], [ACTION-IF-NOT]) -# AX_CHECK_DEFINE([includes],[symbol], [ACTION-IF-FOUND], [ACTION-IF-NOT]) -# -# DESCRIPTION -# -# Complements AC_CHECK_FUNC but it does not check for a function but for a -# define to exist. Consider a usage like: -# -# AC_CHECK_DEFINE(__STRICT_ANSI__, CFLAGS="$CFLAGS -D_XOPEN_SOURCE=500") -# -# LICENSE -# -# Copyright (c) 2008 Guido U. Draheim -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 3 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 8 - -AU_ALIAS([AC_CHECK_DEFINED], [AC_CHECK_DEFINE]) -AC_DEFUN([AC_CHECK_DEFINE],[ -AS_VAR_PUSHDEF([ac_var],[ac_cv_defined_$1])dnl -AC_CACHE_CHECK([for $1 defined], ac_var, -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ - #ifdef $1 - int ok; - #else - choke me - #endif -]])],[AS_VAR_SET(ac_var, yes)],[AS_VAR_SET(ac_var, no)])) -AS_IF([test AS_VAR_GET(ac_var) != "no"], [$2], [$3])dnl -AS_VAR_POPDEF([ac_var])dnl -]) - -AU_ALIAS([AX_CHECK_DEFINED], [AX_CHECK_DEFINE]) -AC_DEFUN([AX_CHECK_DEFINE],[ -AS_VAR_PUSHDEF([ac_var],[ac_cv_defined_$2_$1])dnl -AC_CACHE_CHECK([for $2 defined in $1], ac_var, -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <$1>]], [[ - #ifdef $2 - int ok; - #else - choke me - #endif -]])],[AS_VAR_SET(ac_var, yes)],[AS_VAR_SET(ac_var, no)])) -AS_IF([test AS_VAR_GET(ac_var) != "no"], [$3], [$4])dnl -AS_VAR_POPDEF([ac_var])dnl -]) - -AC_DEFUN([AX_CHECK_FUNC], -[AS_VAR_PUSHDEF([ac_var], [ac_cv_func_$2])dnl -AC_CACHE_CHECK([for $2], ac_var, -dnl AC_LANG_FUNC_LINK_TRY -[AC_LINK_IFELSE([AC_LANG_PROGRAM([$1 - #undef $2 - char $2 ();],[ - char (*f) () = $2; - return f != $2; ])], - [AS_VAR_SET(ac_var, yes)], - [AS_VAR_SET(ac_var, no)])]) -AS_IF([test AS_VAR_GET(ac_var) = yes], [$3], [$4])dnl -AS_VAR_POPDEF([ac_var])dnl -])# AC_CHECK_FUNC diff --git a/m4/ax_cxx_compile_stdcxx_11.m4 b/m4/ax_cxx_compile_stdcxx_11.m4 deleted file mode 100644 index 163a4c6..0000000 --- a/m4/ax_cxx_compile_stdcxx_11.m4 +++ /dev/null @@ -1,142 +0,0 @@ -# ============================================================================ -# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html -# ============================================================================ -# -# SYNOPSIS -# -# AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional]) -# -# DESCRIPTION -# -# Check for baseline language coverage in the compiler for the C++11 -# standard; if necessary, add switches to CXXFLAGS to enable support. -# -# The first argument, if specified, indicates whether you insist on an -# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. -# -std=c++11). If neither is specified, you get whatever works, with -# preference for an extended mode. -# -# The second argument, if specified 'mandatory' or if left unspecified, -# indicates that baseline C++11 support is required and that the macro -# should error out if no mode with that support is found. If specified -# 'optional', then configuration proceeds regardless, after defining -# HAVE_CXX11 if and only if a supporting mode is found. -# -# LICENSE -# -# Copyright (c) 2008 Benjamin Kosnik -# Copyright (c) 2012 Zack Weinberg -# Copyright (c) 2013 Roy Stogner -# Copyright (c) 2014 Alexey Sokolov -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 4 - -m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [[ - template - struct check - { - static_assert(sizeof(int) <= sizeof(T), "not big enough"); - }; - - struct Base { - virtual void f() {} - }; - struct Child : public Base { - virtual void f() override {} - }; - - typedef check> right_angle_brackets; - - int a; - decltype(a) b; - - typedef check check_type; - check_type c; - check_type&& cr = static_cast(c); - - auto d = a; - auto l = [](){}; -]]) - -AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl - m4_if([$1], [], [], - [$1], [ext], [], - [$1], [noext], [], - [m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_11])])dnl - m4_if([$2], [], [ax_cxx_compile_cxx11_required=true], - [$2], [mandatory], [ax_cxx_compile_cxx11_required=true], - [$2], [optional], [ax_cxx_compile_cxx11_required=false], - [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_11])]) - AC_LANG_PUSH([C++])dnl - ac_success=no - AC_CACHE_CHECK(whether $CXX supports C++11 features by default, - ax_cv_cxx_compile_cxx11, - [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], - [ax_cv_cxx_compile_cxx11=yes], - [ax_cv_cxx_compile_cxx11=no])]) - if test x$ax_cv_cxx_compile_cxx11 = xyes; then - ac_success=yes - fi - - m4_if([$1], [noext], [], [dnl - if test x$ac_success = xno; then - for switch in -std=gnu++11 -std=gnu++0x; do - cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch]) - AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch, - $cachevar, - [ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS $switch" - AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], - [eval $cachevar=yes], - [eval $cachevar=no]) - CXXFLAGS="$ac_save_CXXFLAGS"]) - if eval test x\$$cachevar = xyes; then - CXXFLAGS="$CXXFLAGS $switch" - ac_success=yes - break - fi - done - fi]) - - m4_if([$1], [ext], [], [dnl - if test x$ac_success = xno; then - for switch in -std=c++11 -std=c++0x; do - cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch]) - AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch, - $cachevar, - [ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS $switch" - AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], - [eval $cachevar=yes], - [eval $cachevar=no]) - CXXFLAGS="$ac_save_CXXFLAGS"]) - if eval test x\$$cachevar = xyes; then - CXXFLAGS="$CXXFLAGS $switch" - ac_success=yes - break - fi - done - fi]) - AC_LANG_POP([C++]) - if test x$ax_cxx_compile_cxx11_required = xtrue; then - if test x$ac_success = xno; then - AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.]) - fi - else - if test x$ac_success = xno; then - HAVE_CXX11=0 - AC_MSG_NOTICE([No compiler with C++11 support was found]) - else - HAVE_CXX11=1 - AC_DEFINE(HAVE_CXX11,1, - [define if the compiler supports basic C++11 syntax]) - fi - - AC_SUBST(HAVE_CXX11) - fi -]) diff --git a/m4/ax_require_defined.m4 b/m4/ax_require_defined.m4 deleted file mode 100644 index cae1111..0000000 --- a/m4/ax_require_defined.m4 +++ /dev/null @@ -1,37 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_require_defined.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_REQUIRE_DEFINED(MACRO) -# -# DESCRIPTION -# -# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have -# been defined and thus are available for use. This avoids random issues -# where a macro isn't expanded. Instead the configure script emits a -# non-fatal: -# -# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found -# -# It's like AC_REQUIRE except it doesn't expand the required macro. -# -# Here's an example: -# -# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) -# -# LICENSE -# -# Copyright (c) 2014 Mike Frysinger -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 1 - -AC_DEFUN([AX_REQUIRE_DEFINED], [dnl - m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])]) -])dnl AX_REQUIRE_DEFINED diff --git a/run-configure-with-clang-and-libstdc++.sh b/run-configure-with-clang-and-libstdc++.sh deleted file mode 100755 index 02d6520..0000000 --- a/run-configure-with-clang-and-libstdc++.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -echo "Running './configure CC=clang CFLAGS=\"-g\" CXX=clang++ CXXFLAGS=\"-g -stdlib=libstdc++ -std=c++14 -Weverything -Wno-c++98-compat -Wno-covered-switch-default -Wno-c++98-compat-pedantic -Wno-global-constructors -Wno-float-equal -Wno-documentation -Wno-documentation-unknown-command -Wno-padded -Wno-exit-time-destructors -Wno-reserved-id-macro\" LDFLAGS=\"-stdlib=libstdc++\"" -./configure CC=clang CFLAGS="-g" CXX=clang++ CXXFLAGS="-g -stdlib=libstdc++ -std=c++14 -Weverything -Wno-c++98-compat -Wno-covered-switch-default -Wno-c++98-compat-pedantic -Wno-global-constructors -Wno-float-equal -Wno-documentation -Wno-documentation-unknown-command -Wno-padded -Wno-exit-time-destructors -Wno-reserved-id-macro" LDFLAGS="-stdlib=libstdc++" diff --git a/run-configure-with-gcc4_9-and-libstdc++.sh b/run-configure-with-gcc4_9-and-libstdc++.sh deleted file mode 100755 index e84c2ba..0000000 --- a/run-configure-with-gcc4_9-and-libstdc++.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -echo "Running './configure CC=gcc-4.9 CFLAGS=\"-g -fdiagnostics-color\" CXX=g++-4.9 CXXFLAGS=\"-g -std=c++1y -fdiagnostics-color -Wall -pedantic\"" -./configure CC=gcc-4.9 CFLAGS="-g -fdiagnostics-color" CXX=g++-4.9 CXXFLAGS="-g -std=c++1y -fdiagnostics-color -Wall -pedantic" diff --git a/run-configure-with-gcc5-and-libstdc++.sh b/run-configure-with-gcc5-and-libstdc++.sh deleted file mode 100755 index 41c1752..0000000 --- a/run-configure-with-gcc5-and-libstdc++.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -echo "Running './configure CC=gcc-5 CFLAGS=\"-g -fdiagnostics-color\" CXX=g++-5 CXXFLAGS=\"-g -std=c++1y -fdiagnostics-color -Wall -pedantic\"" -./configure CC=gcc-5 CFLAGS="-g -fdiagnostics-color" CXX=g++-5 CXXFLAGS="-g -std=c++1y -fdiagnostics-color -Wall -pedantic" From 94bae84295fc592c712d48440dfc5deb4ee24f98 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Wed, 24 Feb 2016 23:34:36 +0100 Subject: [PATCH 05/30] Restructured the repo structure --- {cairo => 3rd-party/cairo}/.gitignore | 0 {cairo => 3rd-party/cairo}/AUTHORS | 0 {cairo => 3rd-party/cairo}/BIBLIOGRAPHY | 0 {cairo => 3rd-party/cairo}/BUGS | 0 {cairo => 3rd-party/cairo}/CODING_STYLE | 0 {cairo => 3rd-party/cairo}/COPYING | 0 {cairo => 3rd-party/cairo}/COPYING-LGPL-2.1 | 0 {cairo => 3rd-party/cairo}/COPYING-MPL-1.1 | 0 {cairo => 3rd-party/cairo}/HACKING | 0 {cairo => 3rd-party/cairo}/INSTALL | 0 {cairo => 3rd-party/cairo}/KNOWN_ISSUES | 0 {cairo => 3rd-party/cairo}/Makefile.am | 0 {cairo => 3rd-party/cairo}/Makefile.win32 | 0 {cairo => 3rd-party/cairo}/NEWS | 0 {cairo => 3rd-party/cairo}/PORTING_GUIDE | 0 {cairo => 3rd-party/cairo}/README | 0 {cairo => 3rd-party/cairo}/README.win32 | 0 {cairo => 3rd-party/cairo}/RELEASING | 0 {cairo => 3rd-party/cairo}/acinclude.m4 | 0 {cairo => 3rd-party/cairo}/autogen.sh | 0 .../cairo}/boilerplate/.gitignore | 0 .../cairo}/boilerplate/Makefile.am | 0 .../cairo}/boilerplate/Makefile.sources | 0 .../cairo}/boilerplate/Makefile.win32 | 0 .../boilerplate/Makefile.win32.features | 0 {cairo => 3rd-party/cairo}/boilerplate/README | 0 .../boilerplate/cairo-boilerplate-beos.cpp | 0 .../boilerplate/cairo-boilerplate-cogl.c | 0 .../boilerplate/cairo-boilerplate-directfb.c | 0 .../boilerplate/cairo-boilerplate-drm.c | 0 .../boilerplate/cairo-boilerplate-egl.c | 0 .../boilerplate/cairo-boilerplate-getopt.c | 0 .../boilerplate/cairo-boilerplate-getopt.h | 0 .../boilerplate/cairo-boilerplate-glx.c | 0 .../boilerplate/cairo-boilerplate-pdf.c | 0 .../boilerplate/cairo-boilerplate-private.h | 0 .../cairo}/boilerplate/cairo-boilerplate-ps.c | 0 .../boilerplate/cairo-boilerplate-qt.cpp | 0 .../boilerplate/cairo-boilerplate-quartz.c | 0 .../cairo-boilerplate-scaled-font.h | 0 .../boilerplate/cairo-boilerplate-script.c | 0 .../boilerplate/cairo-boilerplate-skia.c | 0 .../boilerplate/cairo-boilerplate-svg.c | 0 .../boilerplate/cairo-boilerplate-system.c | 0 .../boilerplate/cairo-boilerplate-system.h | 0 .../cairo-boilerplate-test-surfaces.c | 0 .../cairo}/boilerplate/cairo-boilerplate-vg.c | 0 .../boilerplate/cairo-boilerplate-wgl.c | 0 .../cairo-boilerplate-win32-printing.c | 0 .../boilerplate/cairo-boilerplate-win32.c | 0 .../boilerplate/cairo-boilerplate-xcb.c | 0 .../boilerplate/cairo-boilerplate-xlib.c | 0 .../boilerplate/cairo-boilerplate-xlib.h | 0 .../cairo}/boilerplate/cairo-boilerplate.c | 0 .../cairo}/boilerplate/cairo-boilerplate.h | 0 .../cairo}/boilerplate/check-link.c | 0 .../make-cairo-boilerplate-constructors.sh | 0 {cairo => 3rd-party/cairo}/build/.gitignore | 0 .../cairo}/build/Makefile.am.analysis | 0 .../cairo}/build/Makefile.am.changelog | 0 .../cairo}/build/Makefile.am.common | 0 .../cairo}/build/Makefile.am.gtk-doc | 0 .../cairo}/build/Makefile.am.releasing | 0 .../cairo}/build/Makefile.win32.common | 0 .../cairo}/build/Makefile.win32.features | 0 .../cairo}/build/Makefile.win32.features-h | 0 .../cairo}/build/Makefile.win32.inform | 0 .../cairo}/build/aclocal.cairo.m4 | 0 .../cairo}/build/aclocal.compare.m4 | 0 .../cairo}/build/aclocal.enable.m4 | 0 .../cairo}/build/aclocal.float.m4 | 0 .../cairo}/build/aclocal.gtk-doc.m4 | 0 .../cairo}/build/aclocal.makefile.m4 | 0 .../cairo}/build/aclocal.pkg.m4 | 0 .../cairo}/build/configure.ac.analysis | 0 .../cairo}/build/configure.ac.features | 0 .../cairo}/build/configure.ac.noversion | 0 .../cairo}/build/configure.ac.pthread | 0 .../cairo}/build/configure.ac.system | 0 .../cairo}/build/configure.ac.tools | 0 .../cairo}/build/configure.ac.version | 0 .../cairo}/build/configure.ac.warnings | 0 .../cairo}/cairo-version.h | 0 {cairo => 3rd-party/cairo}/configure.ac | 0 {cairo => 3rd-party/cairo}/doc/.gitignore | 0 {cairo => 3rd-party/cairo}/doc/Makefile.am | 0 .../cairo}/doc/public/.gitignore | 0 .../cairo}/doc/public/Makefile.am | 0 {cairo => 3rd-party/cairo}/doc/public/README | 0 .../cairo}/doc/public/cairo-docs.xml | 0 .../cairo}/doc/public/cairo-overrides.txt | 0 .../cairo}/doc/public/cairo-sections.txt | 0 .../cairo}/doc/public/cairo.types | 0 .../cairo}/doc/public/check-doc-coverage.sh | 0 .../cairo}/doc/public/check-doc-syntax.sh | 0 .../cairo}/doc/public/language-bindings.xml | 0 .../cairo}/doc/tutorial/slides/.gitignore | 0 .../cairo}/doc/tutorial/slides/Makefile | 0 .../doc/tutorial/slides/cairo-blank.svg | 0 .../cairo}/doc/tutorial/slides/cairo-code.svg | 0 .../tutorial/slides/cairo-large-content.svg | 0 .../doc/tutorial/slides/cairo-separator.svg | 0 .../doc/tutorial/slides/cairo-title.svg | 0 .../cairo}/doc/tutorial/slides/cairo.svg | 0 .../tutorial/slides/circle-cairo-large.png | Bin .../doc/tutorial/slides/circle-cairo.png | Bin .../doc/tutorial/slides/circle-ooo-large.png | Bin .../cairo}/doc/tutorial/slides/circle-ooo.png | Bin .../tutorial/slides/expander-fuzzy-large.png | Bin .../doc/tutorial/slides/expander-fuzzy.png | Bin .../tutorial/slides/expander-sharp-large.png | Bin .../doc/tutorial/slides/expander-sharp.png | Bin .../cairo}/doc/tutorial/slides/fuzzies.svg | 0 .../cairo}/doc/tutorial/slides/jaggies.svg | 0 .../doc/tutorial/slides/rendering-model.png | Bin .../cairo}/doc/tutorial/slides/tutorial.xml | 0 .../cairo}/doc/tutorial/src/.gitignore | 0 .../cairo}/doc/tutorial/src/Makefile | 0 .../cairo}/doc/tutorial/src/README | 0 .../cairo}/doc/tutorial/src/circle.c | 0 .../tutorial/src/include/cairo-tutorial-gtk.h | 0 .../tutorial/src/include/cairo-tutorial-pdf.h | 0 .../tutorial/src/include/cairo-tutorial-png.h | 0 .../src/include/cairo-tutorial-xlib.h | 0 .../doc/tutorial/src/include/cairo-tutorial.h | 0 .../cairo}/doc/tutorial/src/lca.c | 0 .../cairo}/doc/tutorial/src/singular.c | 0 .../cairo}/doc/tutorial/src/twin.c | 0 {cairo => 3rd-party/cairo}/perf/.gitignore | 0 {cairo => 3rd-party/cairo}/perf/COPYING | 0 {cairo => 3rd-party/cairo}/perf/Makefile.am | 0 .../cairo}/perf/Makefile.sources | 0 .../cairo}/perf/Makefile.win32 | 0 {cairo => 3rd-party/cairo}/perf/README | 0 .../cairo}/perf/cairo-analyse-trace.c | 0 .../cairo}/perf/cairo-perf-chart.c | 0 .../cairo}/perf/cairo-perf-compare-backends.c | 0 .../cairo}/perf/cairo-perf-diff | 0 .../cairo}/perf/cairo-perf-diff-files.c | 0 .../cairo}/perf/cairo-perf-graph | 0 .../cairo}/perf/cairo-perf-graph-files.c | 0 .../cairo}/perf/cairo-perf-graph-widget.c | 0 .../cairo}/perf/cairo-perf-graph.h | 0 .../cairo}/perf/cairo-perf-micro.c | 0 .../cairo}/perf/cairo-perf-print.c | 0 .../cairo}/perf/cairo-perf-report.c | 0 .../cairo}/perf/cairo-perf-trace.c | 0 {cairo => 3rd-party/cairo}/perf/cairo-perf.c | 0 {cairo => 3rd-party/cairo}/perf/cairo-perf.h | 0 {cairo => 3rd-party/cairo}/perf/cairo-stats.c | 0 {cairo => 3rd-party/cairo}/perf/cairo-stats.h | 0 .../cairo}/perf/dirent-win32.h | 0 {cairo => 3rd-party/cairo}/perf/make-html.py | 0 .../cairo}/perf/micro/Makefile.am | 0 .../cairo}/perf/micro/Makefile.sources | 0 .../cairo}/perf/micro/Makefile.win32 | 0 .../cairo}/perf/micro/a1-curve.c | 0 .../cairo}/perf/micro/a1-line.c | 0 .../cairo}/perf/micro/box-outline.c | 0 .../cairo}/perf/micro/cairo-perf-cover.c | 0 .../cairo}/perf/micro/composite-checker.c | 0 {cairo => 3rd-party/cairo}/perf/micro/curve.c | 0 .../cairo}/perf/micro/disjoint.c | 0 .../cairo}/perf/micro/dragon.c | 0 .../cairo}/perf/micro/fill-clip.c | 0 {cairo => 3rd-party/cairo}/perf/micro/fill.c | 0 .../cairo}/perf/micro/glyphs.c | 0 .../cairo}/perf/micro/hash-table.c | 0 .../cairo}/perf/micro/hatching.c | 0 .../cairo}/perf/micro/intersections.c | 0 {cairo => 3rd-party/cairo}/perf/micro/line.c | 0 .../cairo}/perf/micro/long-dashed-lines.c | 0 .../cairo}/perf/micro/long-lines.c | 0 .../cairo}/perf/micro/many-curves.c | 0 .../cairo}/perf/micro/many-fills.c | 0 .../cairo}/perf/micro/many-strokes.c | 0 {cairo => 3rd-party/cairo}/perf/micro/mask.c | 0 .../cairo}/perf/micro/mosaic.c | 0 .../cairo}/perf/micro/mosaic.h | 0 .../cairo}/perf/micro/paint-with-alpha.c | 0 {cairo => 3rd-party/cairo}/perf/micro/paint.c | 0 .../cairo}/perf/micro/pattern_create_radial.c | 0 {cairo => 3rd-party/cairo}/perf/micro/pixel.c | 0 .../cairo}/perf/micro/pythagoras-tree.c | 0 .../cairo}/perf/micro/rectangles.c | 0 .../cairo}/perf/micro/rounded-rectangles.c | 0 .../cairo}/perf/micro/sierpinski.c | 0 .../cairo}/perf/micro/spiral.c | 0 .../cairo}/perf/micro/stroke.c | 0 .../cairo}/perf/micro/subimage_copy.c | 0 .../cairo}/perf/micro/tessellate.c | 0 {cairo => 3rd-party/cairo}/perf/micro/text.c | 0 {cairo => 3rd-party/cairo}/perf/micro/tiger.c | 0 {cairo => 3rd-party/cairo}/perf/micro/twin.c | 0 .../cairo}/perf/micro/unaligned-clip.c | 0 {cairo => 3rd-party/cairo}/perf/micro/wave.c | 0 .../cairo}/perf/micro/wide-fills.c | 0 .../cairo}/perf/micro/wide-strokes.c | 0 .../cairo}/perf/micro/world-map.c | 0 .../cairo}/perf/micro/world-map.h | 0 .../cairo}/perf/micro/zrusin-another.h | 0 .../cairo}/perf/micro/zrusin.c | 0 {cairo => 3rd-party/cairo}/src/.gitignore | 0 {cairo => 3rd-party/cairo}/src/Makefile.am | 0 .../cairo}/src/Makefile.am.analysis | 0 .../cairo}/src/Makefile.sources | 0 {cairo => 3rd-party/cairo}/src/Makefile.win32 | 0 .../cairo}/src/Makefile.win32.features | 0 {cairo => 3rd-party/cairo}/src/README | 0 .../src/cairo-analysis-surface-private.h | 0 .../cairo}/src/cairo-analysis-surface.c | 0 .../cairo}/src/cairo-arc-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-arc.c | 0 .../cairo}/src/cairo-array-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-array.c | 0 .../cairo}/src/cairo-atomic-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-atomic.c | 0 .../cairo}/src/cairo-backend-private.h | 0 .../cairo}/src/cairo-base64-stream.c | 0 .../cairo}/src/cairo-base85-stream.c | 0 .../src/cairo-bentley-ottmann-rectangular.c | 0 .../src/cairo-bentley-ottmann-rectilinear.c | 0 .../cairo}/src/cairo-bentley-ottmann.c | 0 .../cairo}/src/cairo-beos-surface.cpp | 0 {cairo => 3rd-party/cairo}/src/cairo-beos.h | 0 .../cairo}/src/cairo-botor-scan-converter.c | 0 .../cairo}/src/cairo-box-inline.h | 0 .../cairo}/src/cairo-boxes-intersect.c | 0 .../cairo}/src/cairo-boxes-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-boxes.c | 0 .../cairo}/src/cairo-cache-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-cache.c | 0 .../cairo}/src/cairo-cff-subset.c | 0 .../cairo}/src/cairo-clip-boxes.c | 0 .../cairo}/src/cairo-clip-inline.h | 0 .../cairo}/src/cairo-clip-polygon.c | 0 .../cairo}/src/cairo-clip-private.h | 0 .../cairo}/src/cairo-clip-region.c | 0 .../cairo}/src/cairo-clip-surface.c | 0 .../src/cairo-clip-tor-scan-converter.c | 0 {cairo => 3rd-party/cairo}/src/cairo-clip.c | 0 .../cairo}/src/cairo-cogl-context-private.h | 0 .../cairo}/src/cairo-cogl-context.c | 0 .../cairo}/src/cairo-cogl-gradient-private.h | 0 .../cairo}/src/cairo-cogl-gradient.c | 0 .../cairo}/src/cairo-cogl-private.h | 0 .../cairo}/src/cairo-cogl-surface.c | 0 .../cairo}/src/cairo-cogl-utils-private.h | 0 .../cairo}/src/cairo-cogl-utils.c | 0 {cairo => 3rd-party/cairo}/src/cairo-cogl.h | 0 {cairo => 3rd-party/cairo}/src/cairo-color.c | 0 .../cairo}/src/cairo-combsort-inline.h | 0 .../cairo}/src/cairo-compiler-private.h | 0 .../src/cairo-composite-rectangles-private.h | 0 .../cairo}/src/cairo-composite-rectangles.c | 0 .../cairo}/src/cairo-compositor-private.h | 0 .../cairo}/src/cairo-compositor.c | 0 .../cairo}/src/cairo-contour-inline.h | 0 .../cairo}/src/cairo-contour-private.h | 0 .../cairo}/src/cairo-contour.c | 0 .../cairo}/src/cairo-damage-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-damage.c | 0 {cairo => 3rd-party/cairo}/src/cairo-debug.c | 0 .../src/cairo-default-context-private.h | 0 .../cairo}/src/cairo-default-context.c | 0 .../cairo}/src/cairo-deflate-stream.c | 0 .../cairo/src}/cairo-deprecated.h | 0 .../cairo}/src/cairo-device-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-device.c | 0 .../cairo}/src/cairo-directfb-surface.c | 0 .../cairo}/src/cairo-directfb.h | 0 {cairo => 3rd-party/cairo}/src/cairo-drm.h | 0 .../cairo}/src/cairo-egl-context.c | 0 .../cairo}/src/cairo-error-inline.h | 0 .../cairo}/src/cairo-error-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-error.c | 0 .../cairo}/src/cairo-fallback-compositor.c | 0 .../src/cairo-features-uninstalled.pc.in | 0 .../cairo/src}/cairo-features.h | 0 .../cairo}/src/cairo-features.pc.in | 0 .../cairo}/src/cairo-fixed-private.h | 0 .../cairo}/src/cairo-fixed-type-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-fixed.c | 0 .../cairo}/src/cairo-font-face-twin-data.c | 0 .../cairo}/src/cairo-font-face-twin.c | 0 .../cairo}/src/cairo-font-face.c | 0 .../cairo}/src/cairo-font-options.c | 0 .../cairo}/src/cairo-fontconfig-private.h | 0 .../cairo}/src/cairo-freed-pool-private.h | 0 .../cairo}/src/cairo-freed-pool.c | 0 .../cairo}/src/cairo-freelist-private.h | 0 .../cairo}/src/cairo-freelist-type-private.h | 0 .../cairo}/src/cairo-freelist.c | 0 .../cairo}/src/cairo-ft-font.c | 0 .../cairo}/src/cairo-ft-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-ft.h | 0 .../cairo}/src/cairo-gl-composite.c | 0 .../cairo}/src/cairo-gl-device.c | 0 .../cairo}/src/cairo-gl-dispatch-private.h | 0 .../cairo}/src/cairo-gl-dispatch.c | 0 .../cairo}/src/cairo-gl-ext-def-private.h | 0 .../cairo}/src/cairo-gl-glyphs.c | 0 .../cairo}/src/cairo-gl-gradient-private.h | 0 .../cairo}/src/cairo-gl-gradient.c | 0 .../cairo}/src/cairo-gl-info.c | 0 .../cairo}/src/cairo-gl-msaa-compositor.c | 0 .../cairo}/src/cairo-gl-operand.c | 0 .../cairo}/src/cairo-gl-private.h | 0 .../cairo}/src/cairo-gl-shaders.c | 0 .../cairo}/src/cairo-gl-source.c | 0 .../cairo}/src/cairo-gl-spans-compositor.c | 0 .../cairo}/src/cairo-gl-surface-legacy.c | 0 .../cairo}/src/cairo-gl-surface.c | 0 .../cairo}/src/cairo-gl-traps-compositor.c | 0 {cairo => 3rd-party/cairo}/src/cairo-gl.h | 0 .../cairo}/src/cairo-glx-context.c | 0 .../cairo}/src/cairo-gstate-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-gstate.c | 0 .../cairo}/src/cairo-hash-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-hash.c | 0 {cairo => 3rd-party/cairo}/src/cairo-hull.c | 0 .../cairo}/src/cairo-image-compositor.c | 0 .../cairo}/src/cairo-image-info-private.h | 0 .../cairo}/src/cairo-image-info.c | 0 .../cairo}/src/cairo-image-mask-compositor.c | 0 .../cairo}/src/cairo-image-source.c | 0 .../cairo}/src/cairo-image-surface-inline.h | 0 .../cairo}/src/cairo-image-surface-private.h | 0 .../cairo}/src/cairo-image-surface.c | 0 .../cairo}/src/cairo-list-inline.h | 0 .../cairo}/src/cairo-list-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-lzw.c | 0 .../cairo}/src/cairo-malloc-private.h | 0 .../cairo}/src/cairo-mask-compositor.c | 0 {cairo => 3rd-party/cairo}/src/cairo-matrix.c | 0 .../cairo}/src/cairo-mempool-private.h | 0 .../cairo}/src/cairo-mempool.c | 0 .../src/cairo-mesh-pattern-rasterizer.c | 0 {cairo => 3rd-party/cairo}/src/cairo-misc.c | 0 .../cairo}/src/cairo-mono-scan-converter.c | 0 .../cairo}/src/cairo-mutex-impl-private.h | 0 .../cairo}/src/cairo-mutex-list-private.h | 0 .../cairo}/src/cairo-mutex-private.h | 0 .../cairo}/src/cairo-mutex-type-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-mutex.c | 0 .../cairo}/src/cairo-no-compositor.c | 0 .../cairo}/src/cairo-observer.c | 0 .../cairo}/src/cairo-os2-private.h | 0 .../cairo}/src/cairo-os2-surface.c | 0 {cairo => 3rd-party/cairo}/src/cairo-os2.h | 0 .../cairo}/src/cairo-output-stream-private.h | 0 .../cairo}/src/cairo-output-stream.c | 0 .../cairo}/src/cairo-paginated-private.h | 0 .../src/cairo-paginated-surface-private.h | 0 .../cairo}/src/cairo-paginated-surface.c | 0 .../cairo}/src/cairo-path-bounds.c | 0 .../cairo}/src/cairo-path-fill.c | 0 .../cairo}/src/cairo-path-fixed-private.h | 0 .../cairo}/src/cairo-path-fixed.c | 0 .../cairo}/src/cairo-path-in-fill.c | 0 .../cairo}/src/cairo-path-private.h | 0 .../cairo}/src/cairo-path-stroke-boxes.c | 0 .../cairo}/src/cairo-path-stroke-polygon.c | 0 .../cairo}/src/cairo-path-stroke-traps.c | 0 .../cairo}/src/cairo-path-stroke-tristrip.c | 0 .../cairo}/src/cairo-path-stroke.c | 0 {cairo => 3rd-party/cairo}/src/cairo-path.c | 0 .../cairo}/src/cairo-pattern-inline.h | 0 .../cairo}/src/cairo-pattern-private.h | 0 .../cairo}/src/cairo-pattern.c | 0 .../cairo}/src/cairo-pdf-operators-private.h | 0 .../cairo}/src/cairo-pdf-operators.c | 0 .../cairo}/src/cairo-pdf-shading-private.h | 0 .../cairo}/src/cairo-pdf-shading.c | 0 .../cairo}/src/cairo-pdf-surface-private.h | 0 .../cairo}/src/cairo-pdf-surface.c | 0 .../cairo/src}/cairo-pdf.h | 0 {cairo => 3rd-party/cairo}/src/cairo-pen.c | 0 .../cairo}/src/cairo-pixman-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-png.c | 0 .../cairo}/src/cairo-polygon-intersect.c | 0 .../cairo}/src/cairo-polygon-reduce.c | 0 .../cairo}/src/cairo-polygon.c | 0 .../cairo}/src/cairo-private.h | 0 .../cairo}/src/cairo-ps-surface-private.h | 0 .../cairo}/src/cairo-ps-surface.c | 0 .../cairo/src}/cairo-ps.h | 0 .../cairo}/src/cairo-qt-surface.cpp | 0 {cairo => 3rd-party/cairo}/src/cairo-qt.h | 0 .../cairo}/src/cairo-quartz-font.c | 0 .../cairo}/src/cairo-quartz-image-surface.c | 0 .../cairo}/src/cairo-quartz-image.h | 0 .../cairo}/src/cairo-quartz-private.h | 0 .../cairo}/src/cairo-quartz-surface.c | 0 {cairo => 3rd-party/cairo}/src/cairo-quartz.h | 0 .../cairo}/src/cairo-raster-source-pattern.c | 0 .../src/cairo-recording-surface-inline.h | 0 .../src/cairo-recording-surface-private.h | 0 .../cairo}/src/cairo-recording-surface.c | 0 .../cairo}/src/cairo-rectangle.c | 0 .../src/cairo-rectangular-scan-converter.c | 0 .../src/cairo-reference-count-private.h | 0 .../cairo}/src/cairo-region-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-region.c | 0 .../cairo}/src/cairo-rtree-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-rtree.c | 0 .../cairo}/src/cairo-scaled-font-private.h | 0 .../src/cairo-scaled-font-subsets-private.h | 0 .../cairo}/src/cairo-scaled-font-subsets.c | 0 .../cairo}/src/cairo-scaled-font.c | 0 .../cairo}/src/cairo-script-private.h | 0 .../cairo}/src/cairo-script-surface.c | 0 .../cairo/src}/cairo-script.h | 0 .../cairo}/src/cairo-shape-mask-compositor.c | 0 .../cairo}/src/cairo-skia-surface.cpp | 0 {cairo => 3rd-party/cairo}/src/cairo-skia.h | 0 .../cairo}/src/cairo-slope-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-slope.c | 0 .../src/cairo-spans-compositor-private.h | 0 .../cairo}/src/cairo-spans-compositor.c | 0 .../cairo}/src/cairo-spans-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-spans.c | 0 {cairo => 3rd-party/cairo}/src/cairo-spline.c | 0 .../cairo}/src/cairo-stroke-dash-private.h | 0 .../cairo}/src/cairo-stroke-dash.c | 0 .../cairo}/src/cairo-stroke-style.c | 0 .../src/cairo-surface-backend-private.h | 0 .../src/cairo-surface-clipper-private.h | 0 .../cairo}/src/cairo-surface-clipper.c | 0 .../src/cairo-surface-fallback-private.h | 0 .../cairo}/src/cairo-surface-fallback.c | 0 .../cairo}/src/cairo-surface-inline.h | 0 .../src/cairo-surface-observer-inline.h | 0 .../src/cairo-surface-observer-private.h | 0 .../cairo}/src/cairo-surface-observer.c | 0 .../cairo}/src/cairo-surface-offset-private.h | 0 .../cairo}/src/cairo-surface-offset.c | 0 .../cairo}/src/cairo-surface-private.h | 0 .../src/cairo-surface-snapshot-inline.h | 0 .../src/cairo-surface-snapshot-private.h | 0 .../cairo}/src/cairo-surface-snapshot.c | 0 .../src/cairo-surface-subsurface-inline.h | 0 .../src/cairo-surface-subsurface-private.h | 0 .../cairo}/src/cairo-surface-subsurface.c | 0 .../src/cairo-surface-wrapper-private.h | 0 .../cairo}/src/cairo-surface-wrapper.c | 0 .../cairo}/src/cairo-surface.c | 0 .../cairo}/src/cairo-svg-surface-private.h | 0 .../cairo}/src/cairo-svg-surface.c | 0 .../cairo/src}/cairo-svg.h | 0 .../cairo}/src/cairo-tee-surface-private.h | 0 .../cairo}/src/cairo-tee-surface.c | 0 {cairo => 3rd-party/cairo}/src/cairo-tee.h | 0 .../cairo}/src/cairo-time-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-time.c | 0 .../cairo}/src/cairo-tor-scan-converter.c | 0 .../cairo}/src/cairo-tor22-scan-converter.c | 0 .../cairo}/src/cairo-toy-font-face.c | 0 .../cairo}/src/cairo-traps-compositor.c | 0 .../cairo}/src/cairo-traps-private.h | 0 {cairo => 3rd-party/cairo}/src/cairo-traps.c | 0 .../cairo}/src/cairo-tristrip-private.h | 0 .../cairo}/src/cairo-tristrip.c | 0 .../src/cairo-truetype-subset-private.h | 0 .../cairo}/src/cairo-truetype-subset.c | 0 .../cairo}/src/cairo-type1-fallback.c | 0 .../cairo}/src/cairo-type1-glyph-names.c | 0 .../cairo}/src/cairo-type1-private.h | 0 .../cairo}/src/cairo-type1-subset.c | 0 .../src/cairo-type3-glyph-surface-private.h | 0 .../cairo}/src/cairo-type3-glyph-surface.c | 0 .../cairo}/src/cairo-types-private.h | 0 .../cairo}/src/cairo-unicode.c | 0 .../cairo}/src/cairo-uninstalled.pc.in | 0 .../cairo}/src/cairo-user-font-private.h | 0 .../cairo}/src/cairo-user-font.c | 0 .../cairo}/src/cairo-version.c | 0 .../cairo}/src/cairo-version.h | 0 .../cairo}/src/cairo-vg-surface.c | 0 {cairo => 3rd-party/cairo}/src/cairo-vg.h | 0 .../cairo}/src/cairo-wgl-context.c | 0 .../cairo}/src/cairo-wideint-private.h | 0 .../cairo}/src/cairo-wideint-type-private.h | 0 .../cairo}/src/cairo-wideint.c | 0 .../cairo/src}/cairo-win32.h | 0 .../cairo}/src/cairo-xcb-connection-core.c | 0 .../cairo}/src/cairo-xcb-connection-render.c | 0 .../cairo}/src/cairo-xcb-connection-shm.c | 0 .../cairo}/src/cairo-xcb-connection.c | 0 .../cairo}/src/cairo-xcb-private.h | 0 .../cairo}/src/cairo-xcb-screen.c | 0 .../cairo}/src/cairo-xcb-shm.c | 0 .../cairo}/src/cairo-xcb-surface-core.c | 0 .../cairo}/src/cairo-xcb-surface-render.c | 0 .../cairo}/src/cairo-xcb-surface.c | 0 {cairo => 3rd-party/cairo}/src/cairo-xcb.h | 0 .../cairo}/src/cairo-xlib-core-compositor.c | 0 .../cairo}/src/cairo-xlib-display.c | 0 .../src/cairo-xlib-fallback-compositor.c | 0 .../cairo}/src/cairo-xlib-private.h | 0 .../cairo}/src/cairo-xlib-render-compositor.c | 0 .../cairo}/src/cairo-xlib-screen.c | 0 .../cairo}/src/cairo-xlib-source.c | 0 .../cairo}/src/cairo-xlib-surface-private.h | 0 .../cairo}/src/cairo-xlib-surface-shm.c | 0 .../cairo}/src/cairo-xlib-surface.c | 0 .../cairo}/src/cairo-xlib-visual.c | 0 .../cairo}/src/cairo-xlib-xcb-surface.c | 0 .../cairo}/src/cairo-xlib-xrender-private.h | 0 .../cairo}/src/cairo-xlib-xrender.h | 0 {cairo => 3rd-party/cairo}/src/cairo-xlib.h | 0 .../cairo}/src/cairo-xml-surface.c | 0 {cairo => 3rd-party/cairo}/src/cairo-xml.h | 0 {cairo => 3rd-party/cairo}/src/cairo.c | 0 .../include => 3rd-party/cairo/src}/cairo.h | 0 {cairo => 3rd-party/cairo}/src/cairo.pc.in | 0 {cairo => 3rd-party/cairo}/src/cairoint.h | 0 {cairo => 3rd-party/cairo}/src/check-def.sh | 0 .../cairo}/src/check-doc-syntax.awk | 0 .../cairo}/src/check-doc-syntax.sh | 0 .../cairo}/src/check-has-hidden-symbols.c | 0 .../cairo}/src/check-headers.sh | 0 {cairo => 3rd-party/cairo}/src/check-link.c | 0 {cairo => 3rd-party/cairo}/src/check-plt.sh | 0 .../cairo}/src/check-preprocessor-syntax.sh | 0 .../cairo}/src/drm/cairo-drm-bo.c | 0 .../src/drm/cairo-drm-gallium-surface.c | 0 .../cairo}/src/drm/cairo-drm-i915-glyphs.c | 0 .../cairo}/src/drm/cairo-drm-i915-private.h | 0 .../cairo}/src/drm/cairo-drm-i915-shader.c | 0 .../cairo}/src/drm/cairo-drm-i915-spans.c | 0 .../cairo}/src/drm/cairo-drm-i915-surface.c | 0 .../cairo}/src/drm/cairo-drm-i965-glyphs.c | 0 .../cairo}/src/drm/cairo-drm-i965-private.h | 0 .../cairo}/src/drm/cairo-drm-i965-shader.c | 0 .../cairo}/src/drm/cairo-drm-i965-spans.c | 0 .../cairo}/src/drm/cairo-drm-i965-surface.c | 0 .../src/drm/cairo-drm-intel-brw-defines.h | 0 .../src/drm/cairo-drm-intel-brw-eu-emit.c | 0 .../src/drm/cairo-drm-intel-brw-eu-util.c | 0 .../cairo}/src/drm/cairo-drm-intel-brw-eu.c | 0 .../cairo}/src/drm/cairo-drm-intel-brw-eu.h | 0 .../src/drm/cairo-drm-intel-brw-structs.h | 0 .../src/drm/cairo-drm-intel-command-private.h | 0 .../cairo}/src/drm/cairo-drm-intel-debug.c | 0 .../src/drm/cairo-drm-intel-ioctl-private.h | 0 .../cairo}/src/drm/cairo-drm-intel-private.h | 0 .../cairo}/src/drm/cairo-drm-intel-surface.c | 0 .../cairo}/src/drm/cairo-drm-intel.c | 0 .../cairo}/src/drm/cairo-drm-ioctl-private.h | 0 .../cairo}/src/drm/cairo-drm-private.h | 0 .../cairo}/src/drm/cairo-drm-radeon-private.h | 0 .../cairo}/src/drm/cairo-drm-radeon-surface.c | 0 .../cairo}/src/drm/cairo-drm-radeon.c | 0 .../cairo}/src/drm/cairo-drm-surface.c | 0 .../cairo}/src/drm/cairo-drm.c | 0 .../cairo}/src/skia/cairo-skia-context.cpp | 0 .../cairo}/src/skia/cairo-skia-private.h | 0 .../cairo}/src/skia/cairo-skia-surface.cpp | 0 .../cairo}/src/test-base-compositor-surface.c | 0 .../src/test-compositor-surface-private.h | 0 .../cairo}/src/test-compositor-surface.c | 0 .../cairo}/src/test-compositor-surface.h | 0 .../cairo}/src/test-null-compositor-surface.c | 0 .../cairo}/src/test-null-compositor-surface.h | 0 .../cairo}/src/test-paginated-surface.c | 0 .../cairo}/src/test-paginated-surface.h | 0 .../cairo}/src/win32/cairo-win32-debug.c | 0 .../cairo}/src/win32/cairo-win32-device.c | 0 .../src/win32/cairo-win32-display-surface.c | 0 .../cairo}/src/win32/cairo-win32-font.c | 0 .../src/win32/cairo-win32-gdi-compositor.c | 0 .../src/win32/cairo-win32-printing-surface.c | 0 .../cairo}/src/win32/cairo-win32-private.h | 0 .../cairo}/src/win32/cairo-win32-surface.c | 0 .../cairo}/src/win32/cairo-win32-system.c | 0 {cairo => 3rd-party/cairo}/test/.gitignore | 0 .../cairo}/test/.valgrind-suppressions | 0 {cairo => 3rd-party/cairo}/test/6x13.pcf | Bin {cairo => 3rd-party/cairo}/test/COPYING | 0 {cairo => 3rd-party/cairo}/test/Makefile.am | 0 .../cairo}/test/Makefile.sources | 0 .../cairo}/test/Makefile.win32 | 0 {cairo => 3rd-party/cairo}/test/README | 0 {cairo => 3rd-party/cairo}/test/a1-bug.c | 0 {cairo => 3rd-party/cairo}/test/a1-clip.c | 0 {cairo => 3rd-party/cairo}/test/a1-fill.c | 0 .../cairo}/test/a1-image-sample.c | 0 .../cairo}/test/a1-mask-sample.c | 0 {cairo => 3rd-party/cairo}/test/a1-mask.c | 0 .../cairo}/test/a1-rasterisation.c | 0 {cairo => 3rd-party/cairo}/test/a1-sample.c | 0 .../cairo}/test/a1-traps-sample.c | 0 {cairo => 3rd-party/cairo}/test/a8-clear.c | 0 {cairo => 3rd-party/cairo}/test/a8-mask.c | 0 {cairo => 3rd-party/cairo}/test/aliasing.c | 0 .../cairo}/test/alpha-similar.c | 0 {cairo => 3rd-party/cairo}/test/any2ppm.c | 0 .../cairo}/test/api-special-cases.c | 0 .../cairo}/test/arc-direction.c | 0 .../cairo}/test/arc-infinite-loop.c | 0 .../cairo}/test/arc-looping-dash.c | 0 .../cairo}/test/big-empty-box.c | 0 .../cairo}/test/big-empty-triangle.c | 0 {cairo => 3rd-party/cairo}/test/big-line.c | 0 .../cairo}/test/big-little-box.c | 0 .../cairo}/test/big-little-triangle.c | 0 {cairo => 3rd-party/cairo}/test/big-trap.c | 0 .../cairo}/test/bilevel-image.c | 0 {cairo => 3rd-party/cairo}/test/bitmap-font.c | 0 {cairo => 3rd-party/cairo}/test/buffer-diff.c | 0 {cairo => 3rd-party/cairo}/test/buffer-diff.h | 0 {cairo => 3rd-party/cairo}/test/bug-40410.c | 0 {cairo => 3rd-party/cairo}/test/bug-51910.c | 0 .../cairo}/test/bug-bo-collins.c | 0 .../cairo}/test/bug-bo-rectangular.c | 0 .../cairo}/test/bug-bo-ricotz.c | 0 {cairo => 3rd-party/cairo}/test/bug-extents.c | 0 {cairo => 3rd-party/cairo}/test/bug-seams.c | 0 .../cairo}/test/bug-source-cu.c | 0 {cairo => 3rd-party/cairo}/test/bug-spline.c | 0 .../cairo}/test/cairo-test-private.h | 0 .../cairo}/test/cairo-test-runner.c | 0 .../cairo}/test/cairo-test-trace.c | 0 {cairo => 3rd-party/cairo}/test/cairo-test.c | 0 {cairo => 3rd-party/cairo}/test/cairo-test.h | 0 .../cairo}/test/caps-joins-alpha.c | 0 .../cairo}/test/caps-joins-curve.c | 0 {cairo => 3rd-party/cairo}/test/caps-joins.c | 0 .../cairo}/test/caps-sub-paths.c | 0 .../cairo}/test/caps-tails-curve.c | 0 {cairo => 3rd-party/cairo}/test/caps.c | 0 {cairo => 3rd-party/cairo}/test/check-refs.sh | 0 .../cairo}/test/checkerboard.c | 0 .../cairo}/test/clear-source.c | 0 {cairo => 3rd-party/cairo}/test/clear.c | 0 {cairo => 3rd-party/cairo}/test/clip-all.c | 0 .../cairo}/test/clip-complex-bug61592.c | 0 .../cairo}/test/clip-complex-shape.c | 0 .../cairo}/test/clip-contexts.c | 0 .../cairo}/test/clip-device-offset.c | 0 .../cairo}/test/clip-disjoint-hatching.c | 0 .../cairo}/test/clip-disjoint-quad.c | 0 .../cairo}/test/clip-disjoint.c | 0 .../cairo}/test/clip-double-free.c | 0 .../cairo}/test/clip-draw-unbounded.c | 0 .../cairo}/test/clip-empty-group.c | 0 .../cairo}/test/clip-empty-save.c | 0 {cairo => 3rd-party/cairo}/test/clip-empty.c | 0 .../cairo}/test/clip-fill-no-op.c | 0 .../test/clip-fill-rule-pixel-aligned.c | 0 .../cairo}/test/clip-fill-rule.c | 0 {cairo => 3rd-party/cairo}/test/clip-fill.c | 0 .../cairo}/test/clip-group-shapes.c | 0 {cairo => 3rd-party/cairo}/test/clip-image.c | 0 .../cairo}/test/clip-intersect.c | 0 .../cairo}/test/clip-mixed-antialias.c | 0 .../cairo}/test/clip-nesting.c | 0 .../cairo}/test/clip-operator.c | 0 .../cairo}/test/clip-polygons.c | 0 .../cairo}/test/clip-push-group.c | 0 .../cairo}/test/clip-rectilinear.c | 0 {cairo => 3rd-party/cairo}/test/clip-shape.c | 0 .../cairo}/test/clip-stroke-no-op.c | 0 {cairo => 3rd-party/cairo}/test/clip-stroke.c | 0 {cairo => 3rd-party/cairo}/test/clip-text.c | 0 .../cairo}/test/clip-twice-rectangle.c | 0 {cairo => 3rd-party/cairo}/test/clip-twice.c | 0 .../cairo}/test/clip-unbounded.c | 0 {cairo => 3rd-party/cairo}/test/clip-zero.c | 0 .../cairo}/test/clipped-group.c | 0 .../cairo}/test/clipped-surface.c | 0 .../cairo}/test/clipped-trapezoids-ref.png | Bin .../cairo}/test/clipped-trapezoids.c | 0 .../cairo}/test/close-path-current-point.c | 0 {cairo => 3rd-party/cairo}/test/close-path.c | 0 .../composite-integer-translate-over-repeat.c | 0 .../test/composite-integer-translate-over.c | 0 .../test/composite-integer-translate-source.c | 0 .../cairo}/test/copy-disjoint.c | 0 {cairo => 3rd-party/cairo}/test/copy-path.c | 0 {cairo => 3rd-party/cairo}/test/coverage.c | 0 .../cairo}/test/create-for-stream.c | 0 .../cairo}/test/create-from-png-stream.c | 0 .../cairo}/test/create-from-png.c | 0 .../cairo}/test/culled-glyphs.c | 0 .../cairo}/test/curve-to-as-line-to.c | 0 .../cairo}/test/dash-caps-joins.c | 0 {cairo => 3rd-party/cairo}/test/dash-curve.c | 0 .../cairo}/test/dash-infinite-loop.c | 0 .../cairo}/test/dash-no-dash.c | 0 .../cairo}/test/dash-offset-negative.c | 0 {cairo => 3rd-party/cairo}/test/dash-offset.c | 0 {cairo => 3rd-party/cairo}/test/dash-scale.c | 0 {cairo => 3rd-party/cairo}/test/dash-state.c | 0 .../cairo}/test/dash-zero-length.c | 0 .../cairo}/test/degenerate-arc.c | 0 .../cairo}/test/degenerate-arcs.c | 0 .../cairo}/test/degenerate-curve-to.c | 0 .../cairo}/test/degenerate-dash.c | 0 .../cairo}/test/degenerate-linear-gradient.c | 0 .../cairo}/test/degenerate-path.c | 0 .../cairo}/test/degenerate-pen.c | 0 .../cairo}/test/degenerate-radial-gradient.c | 0 .../cairo}/test/degenerate-rel-curve-to.c | 0 .../cairo}/test/degenerate-solid-dash.c | 0 .../cairo}/test/device-offset-fractional.c | 0 .../cairo}/test/device-offset-positive.c | 0 .../cairo}/test/device-offset-scale.c | 0 .../cairo}/test/device-offset.c | 0 .../cairo}/test/drunkard-tails.c | 0 .../cairo}/test/error-setters.c | 0 .../cairo}/test/extend-pad-border.c | 0 .../cairo}/test/extend-pad-similar.c | 0 {cairo => 3rd-party/cairo}/test/extend-pad.c | 0 .../cairo}/test/extend-reflect-similar.c | 0 .../cairo}/test/extend-reflect.c | 0 .../cairo}/test/extend-repeat-similar.c | 0 .../cairo}/test/extend-repeat.c | 0 .../cairo}/test/extended-blend.c | 0 .../cairo}/test/fallback-resolution.c | 0 {cairo => 3rd-party/cairo}/test/fallback.c | 0 .../cairo}/test/fill-alpha-pattern.c | 0 {cairo => 3rd-party/cairo}/test/fill-alpha.c | 0 .../cairo}/test/fill-and-stroke-alpha-add.c | 0 .../cairo}/test/fill-and-stroke-alpha.c | 0 .../cairo}/test/fill-and-stroke.c | 0 .../cairo}/test/fill-degenerate-sort-order.c | 0 .../cairo}/test/fill-disjoint.c | 0 {cairo => 3rd-party/cairo}/test/fill-empty.c | 0 {cairo => 3rd-party/cairo}/test/fill-image.c | 0 .../cairo}/test/fill-missed-stop.c | 0 {cairo => 3rd-party/cairo}/test/fill-rule.c | 0 .../cairo}/test/filter-bilinear-extents.c | 0 .../cairo}/test/filter-nearest-offset.c | 0 .../cairo}/test/filter-nearest-transformed.c | 0 .../cairo}/test/finer-grained-fallbacks.c | 0 .../cairo}/test/font-face-get-type.c | 0 .../cairo}/test/font-matrix-translation.c | 0 .../cairo}/test/font-options.c | 0 .../cairo}/test/ft-font-create-for-ft-face.c | 0 .../cairo}/test/ft-show-glyphs-positioning.c | 0 .../cairo}/test/ft-show-glyphs-table.c | 0 .../cairo}/test/ft-text-antialias-none.c | 0 .../test/ft-text-vertical-layout-type1.c | 0 .../test/ft-text-vertical-layout-type3.c | 0 .../cairo}/test/generate_refs.sh | 0 {cairo => 3rd-party/cairo}/test/get-and-set.c | 0 {cairo => 3rd-party/cairo}/test/get-clip.c | 0 .../cairo}/test/get-group-target.c | 0 .../cairo}/test/get-path-extents.c | 0 .../cairo}/test/get-xrender-format.c | 0 .../cairo}/test/gl-device-release.c | 0 .../cairo}/test/gl-oversized-surface.c | 0 .../cairo}/test/gl-surface-source.c | 0 .../cairo}/test/glyph-cache-pressure.c | 0 .../cairo}/test/gradient-alpha.c | 0 .../cairo}/test/gradient-constant-alpha.c | 0 .../cairo}/test/gradient-zero-stops-mask.c | 0 .../cairo}/test/gradient-zero-stops.c | 0 {cairo => 3rd-party/cairo}/test/group-clip.c | 0 {cairo => 3rd-party/cairo}/test/group-paint.c | 0 {cairo => 3rd-party/cairo}/test/group-state.c | 0 .../cairo}/test/group-unaligned.c | 0 .../cairo}/test/half-coverage.c | 0 {cairo => 3rd-party/cairo}/test/halo.c | 0 {cairo => 3rd-party/cairo}/test/hatchings.c | 0 .../cairo}/test/horizontal-clip.c | 0 {cairo => 3rd-party/cairo}/test/huge-linear.c | 0 {cairo => 3rd-party/cairo}/test/huge-radial.c | 0 .../cairo}/test/image-bug-710072.c | 0 .../cairo}/test/image-surface-source.c | 0 {cairo => 3rd-party/cairo}/test/imagediff.c | 0 .../cairo}/test/implicit-close.c | 0 .../cairo}/test/in-fill-empty-trapezoid.c | 0 .../cairo}/test/in-fill-trapezoid.c | 0 {cairo => 3rd-party/cairo}/test/index.html | 0 .../cairo}/test/infinite-join.c | 0 .../cairo}/test/invalid-matrix.c | 0 .../cairo}/test/inverse-text.c | 0 .../cairo}/test/inverted-clip.c | 0 {cairo => 3rd-party/cairo}/test/joins-loop.c | 0 .../cairo}/test/joins-retrace.c | 0 {cairo => 3rd-party/cairo}/test/joins-star.c | 0 {cairo => 3rd-party/cairo}/test/joins.c | 0 {cairo => 3rd-party/cairo}/test/jp2.jp2 | Bin {cairo => 3rd-party/cairo}/test/jpeg.jpg | Bin {cairo => 3rd-party/cairo}/test/large-clip.c | 0 {cairo => 3rd-party/cairo}/test/large-font.c | 0 .../cairo}/test/large-source-roi.c | 0 .../cairo}/test/large-source.c | 0 .../cairo}/test/large-twin-antialias-mixed.c | 0 {cairo => 3rd-party/cairo}/test/leaky-dash.c | 0 .../cairo}/test/leaky-dashed-rectangle.c | 0 .../cairo}/test/leaky-dashed-stroke.c | 0 .../cairo}/test/leaky-polygon.c | 0 .../cairo}/test/line-width-large-overlap.c | 0 .../cairo}/test/line-width-overlap.c | 0 .../cairo}/test/line-width-scale.c | 0 .../cairo}/test/line-width-tolerance.c | 0 .../cairo}/test/line-width-zero.c | 0 {cairo => 3rd-party/cairo}/test/line-width.c | 0 .../cairo}/test/linear-gradient-extend.c | 0 .../cairo}/test/linear-gradient-large.c | 0 .../cairo}/test/linear-gradient-one-stop.c | 0 .../cairo}/test/linear-gradient-reflect.c | 0 .../cairo}/test/linear-gradient-subset.c | 0 .../cairo}/test/linear-gradient.c | 0 .../cairo}/test/linear-step-function.c | 0 .../cairo}/test/linear-uniform.c | 0 .../cairo}/test/long-dashed-lines.c | 0 {cairo => 3rd-party/cairo}/test/long-lines.c | 0 .../test/make-cairo-test-constructors.sh | 0 .../cairo}/test/map-to-image.c | 0 {cairo => 3rd-party/cairo}/test/mask-alpha.c | 0 {cairo => 3rd-party/cairo}/test/mask-ctm.c | 0 {cairo => 3rd-party/cairo}/test/mask-glyphs.c | 0 .../cairo}/test/mask-surface-ctm.c | 0 .../cairo}/test/mask-transformed-image.c | 0 .../cairo}/test/mask-transformed-similar.c | 0 {cairo => 3rd-party/cairo}/test/mask.c | 0 .../cairo}/test/mesh-pattern-accuracy.c | 0 .../cairo}/test/mesh-pattern-conical.c | 0 .../cairo}/test/mesh-pattern-control-points.c | 0 .../cairo}/test/mesh-pattern-fold.c | 0 .../cairo}/test/mesh-pattern-overlap.c | 0 .../cairo}/test/mesh-pattern-transformed.c | 0 .../cairo}/test/mesh-pattern.c | 0 {cairo => 3rd-party/cairo}/test/mime-data.c | 0 .../cairo}/test/mime-surface-api.c | 0 .../cairo}/test/miter-precision.c | 0 .../cairo}/test/move-to-show-surface.c | 0 {cairo => 3rd-party/cairo}/test/multi-page.c | 0 .../cairo}/test/negative-stride-image.c | 0 .../cairo}/test/new-sub-path.c | 0 {cairo => 3rd-party/cairo}/test/nil-surface.c | 0 .../cairo}/test/operator-alpha-alpha.c | 0 .../cairo}/test/operator-alpha.c | 0 .../cairo}/test/operator-clear.c | 0 .../cairo}/test/operator-source.c | 0 {cairo => 3rd-party/cairo}/test/operator.c | 0 .../cairo}/test/outline-tolerance.c | 0 .../cairo}/test/over-above-source.c | 0 .../cairo}/test/over-around-source.c | 0 .../cairo}/test/over-below-source.c | 0 .../cairo}/test/over-between-source.c | 0 .../cairo}/test/overlapping-boxes.c | 0 .../cairo}/test/overlapping-dash-caps.c | 0 .../cairo}/test/overlapping-glyphs.c | 0 .../cairo}/test/paint-clip-fill.c | 0 .../cairo}/test/paint-repeat.c | 0 .../cairo}/test/paint-source-alpha.c | 0 .../cairo}/test/paint-with-alpha.c | 0 {cairo => 3rd-party/cairo}/test/paint.c | 0 .../cairo}/test/partial-clip-text.c | 0 .../cairo}/test/partial-coverage.c | 0 .../cairo}/test/pass-through.c | 0 {cairo => 3rd-party/cairo}/test/path-append.c | 0 .../cairo}/test/path-precision.c | 0 .../cairo}/test/path-stroke-twice.c | 0 .../cairo}/test/pattern-get-type.c | 0 .../cairo}/test/pattern-getters.c | 0 .../cairo}/test/pdf-features.c | 0 .../cairo}/test/pdf-isolated-group.c | 0 .../cairo}/test/pdf-mime-data.c | 0 .../cairo}/test/pdf-surface-source.c | 0 {cairo => 3rd-party/cairo}/test/pdf2png.c | 0 .../cairo}/test/pdiff/.gitignore | 0 .../cairo}/test/pdiff/CMakeLists.txt | 0 .../cairo}/test/pdiff/Makefile.am | 0 .../cairo}/test/pdiff/Makefile.win32 | 0 .../cairo}/test/pdiff/README.txt | 0 {cairo => 3rd-party/cairo}/test/pdiff/args.c | 0 {cairo => 3rd-party/cairo}/test/pdiff/args.h | 0 {cairo => 3rd-party/cairo}/test/pdiff/gpl.txt | 0 .../cairo}/test/pdiff/lpyramid.c | 0 .../cairo}/test/pdiff/lpyramid.h | 0 {cairo => 3rd-party/cairo}/test/pdiff/pdiff.c | 0 {cairo => 3rd-party/cairo}/test/pdiff/pdiff.h | 0 .../cairo}/test/pdiff/perceptualdiff.c | 0 .../cairo}/test/pixman-rotate.c | 0 {cairo => 3rd-party/cairo}/test/png-flatten.c | 0 {cairo => 3rd-party/cairo}/test/png.c | 0 {cairo => 3rd-party/cairo}/test/png.png | Bin {cairo => 3rd-party/cairo}/test/ps-eps.c | 0 {cairo => 3rd-party/cairo}/test/ps-features.c | 0 .../cairo}/test/ps-surface-source.c | 0 {cairo => 3rd-party/cairo}/test/ps2png.c | 0 .../cairo}/test/pthread-same-source.c | 0 .../cairo}/test/pthread-show-text.c | 0 .../cairo}/test/pthread-similar.c | 0 .../cairo}/test/push-group-color.c | 0 .../cairo}/test/push-group-path-offset.c | 0 {cairo => 3rd-party/cairo}/test/push-group.c | 0 .../cairo}/test/quartz-surface-source.c | 0 .../cairo}/test/radial-gradient-extend.c | 0 .../cairo}/test/radial-gradient.c | 0 .../cairo}/test/radial-outer-focus.c | 0 .../cairo}/test/random-clips.c | 0 .../test/random-intersections-curves-eo.c | 0 .../test/random-intersections-curves-nz.c | 0 .../cairo}/test/random-intersections-eo.c | 0 .../test/random-intersections-nonzero.c | 0 .../cairo}/test/raster-source.c | 0 .../cairo}/test/record-extend.c | 0 {cairo => 3rd-party/cairo}/test/record-mesh.c | 0 {cairo => 3rd-party/cairo}/test/record.c | 0 {cairo => 3rd-party/cairo}/test/record1414x.c | 0 {cairo => 3rd-party/cairo}/test/record2x.c | 0 {cairo => 3rd-party/cairo}/test/record90.c | 0 {cairo => 3rd-party/cairo}/test/recordflip.c | 0 .../cairo}/test/recording-surface-extend.c | 0 .../cairo}/test/recording-surface-pattern.c | 0 .../cairo}/test/rectangle-rounding-error.c | 0 .../cairo}/test/rectilinear-dash-scale.c | 0 .../cairo}/test/rectilinear-dash.c | 0 .../cairo}/test/rectilinear-fill.c | 0 .../cairo}/test/rectilinear-grid.c | 0 .../cairo}/test/rectilinear-miter-limit.c | 0 .../cairo}/test/rectilinear-stroke.c | 0 .../test/reference/a1-bug.base.argb32.ref.png | Bin .../test/reference/a1-bug.base.rgb24.ref.png | Bin .../test/reference/a1-bug.image16.ref.png | Bin .../test/reference/a1-bug.mask.argb32.ref.png | Bin .../test/reference/a1-bug.mask.rgb24.ref.png | Bin .../test/reference/a1-bug.quartz.xfail.png | Bin .../cairo}/test/reference/a1-bug.ref.png | Bin .../reference/a1-bug.traps.argb32.ref.png | Bin .../test/reference/a1-bug.traps.rgb24.ref.png | Bin .../a1-clip-fill-equal.base.argb32.ref.png | Bin .../a1-clip-fill-equal.base.rgb24.ref.png | Bin .../test/reference/a1-clip-fill-equal.ref.png | Bin .../a1-clip-fill-rule.argb32.ref.png | Bin .../a1-clip-fill-rule.base.argb32.ref.png | Bin .../a1-clip-fill-rule.base.rgb24.ref.png | Bin .../reference/a1-clip-fill-rule.rgb24.ref.png | Bin .../a1-clip-fill.base.argb32.ref.png | Bin .../reference/a1-clip-fill.base.rgb24.ref.png | Bin .../test/reference/a1-clip-fill.ref.png | Bin .../a1-clip-paint.base.argb32.ref.png | Bin .../a1-clip-paint.base.rgb24.ref.png | Bin .../test/reference/a1-clip-paint.ref.png | Bin .../a1-clip-stroke.base.argb32.ref.png | Bin .../a1-clip-stroke.base.rgb24.ref.png | Bin .../test/reference/a1-clip-stroke.ref.png | Bin .../reference/a1-fill.base.argb32.ref.png | Bin .../test/reference/a1-fill.base.rgb24.ref.png | Bin .../cairo}/test/reference/a1-fill.ref.png | Bin .../a1-image-sample.base.argb32.ref.png | Bin .../a1-image-sample.base.rgb24.ref.png | Bin .../reference/a1-image-sample.gl.xfail.png | Bin .../test/reference/a1-image-sample.ref.png | Bin .../a1-line-width.base.argb32.ref.png | Bin .../a1-line-width.base.rgb24.ref.png | Bin .../test/reference/a1-line-width.pdf.ref.png | Bin .../test/reference/a1-line-width.ps.ref.png | Bin .../test/reference/a1-line-width.ref.png | Bin .../a1-mask-sample.base.argb32.ref.png | Bin .../a1-mask-sample.base.rgb24.ref.png | Bin .../test/reference/a1-mask-sample.ref.png | Bin .../reference/a1-mask.base.argb32.ref.png | Bin .../test/reference/a1-mask.base.rgb24.ref.png | Bin .../cairo}/test/reference/a1-mask.ref.png | Bin ...sterisation-rectangles.base.argb32.ref.png | Bin ...asterisation-rectangles.base.rgb24.ref.png | Bin ...-rasterisation-rectangles.quartz.xfail.png | Bin .../a1-rasterisation-rectangles.ref.png | Bin ...asterisation-triangles.base.argb32.ref.png | Bin ...rasterisation-triangles.base.rgb24.ref.png | Bin ...1-rasterisation-triangles.quartz.xfail.png | Bin .../a1-rasterisation-triangles.ref.png | Bin .../a1-rectilinear-grid.base.argb32.ref.png | Bin .../a1-rectilinear-grid.base.rgb24.ref.png | Bin .../reference/a1-rectilinear-grid.ref.png | Bin .../reference/a1-sample.base.argb32.ref.png | Bin .../reference/a1-sample.base.rgb24.ref.png | Bin .../cairo}/test/reference/a1-sample.ref.png | Bin .../reference/a1-tiger.base.argb32.ref.png | Bin .../reference/a1-tiger.base.rgb24.ref.png | Bin .../reference/a1-tiger.mask.argb32.ref.png | Bin .../reference/a1-tiger.mask.rgb24.ref.png | Bin .../cairo}/test/reference/a1-tiger.ref.png | Bin .../reference/a1-tiger.traps.argb32.ref.png | Bin .../reference/a1-tiger.traps.rgb24.ref.png | Bin .../a1-traps-sample.base.argb32.ref.png | Bin .../a1-traps-sample.base.rgb24.ref.png | Bin .../a1-traps-sample.quartz.xfail.png | Bin .../test/reference/a1-traps-sample.ref.png | Bin .../test/reference/a8-clear.argb32.ref.png | Bin .../reference/a8-clear.base.argb32.ref.png | Bin .../reference/a8-clear.base.rgb24.ref.png | Bin .../test/reference/a8-clear.quartz.ref.png | Bin .../test/reference/a8-clear.rgb24.ref.png | Bin .../reference/a8-clear.traps.argb32.ref.png | Bin .../reference/a8-clear.traps.rgb24.ref.png | Bin .../reference/a8-mask.base.argb32.ref.png | Bin .../test/reference/a8-mask.base.rgb24.ref.png | Bin .../cairo}/test/reference/a8-mask.ref.png | Bin .../test/reference/aliasing.argb32.ref.png | Bin .../reference/aliasing.base.argb32.ref.png | Bin .../reference/aliasing.base.rgb24.ref.png | Bin .../test/reference/aliasing.image16.ref.png | Bin .../test/reference/aliasing.quartz.ref.png | Bin .../test/reference/aliasing.rgb24.ref.png | Bin .../reference/aliasing.traps.argb32.ref.png | Bin .../reference/aliasing.traps.rgb24.ref.png | Bin .../reference/alpha-similar.argb32.ref.png | Bin .../alpha-similar.base.argb32.ref.png | Bin .../alpha-similar.base.rgb24.ref.png | Bin .../alpha-similar.gl.argb32.xfail.png | Bin .../alpha-similar.gl.rgb24.xfail.png | Bin .../alpha-similar.pdf.argb32.xfail.png | Bin .../alpha-similar.pdf.rgb24.xfail.png | Bin .../alpha-similar.ps.argb32.xfail.png | Bin .../alpha-similar.ps.rgb24.xfail.png | Bin .../reference/alpha-similar.rgb24.ref.png | Bin .../alpha-similar.svg.argb32.xfail.png | Bin .../alpha-similar.svg.rgb24.xfail.png | Bin .../api-special-cases.base.argb32.ref.png | Bin .../api-special-cases.base.rgb24.ref.png | Bin .../test/reference/api-special-cases.ref.png | Bin .../reference/arc-direction.argb32.ref.png | Bin .../arc-direction.base.argb32.ref.png | Bin .../arc-direction.base.rgb24.ref.png | Bin .../test/reference/arc-direction.ps.ref.png | Bin .../reference/arc-direction.rgb24.ref.png | Bin .../reference/arc-direction.traps.ref.png | Bin .../arc-infinite-loop.base.argb32.ref.png | Bin .../arc-infinite-loop.base.rgb24.ref.png | Bin .../test/reference/arc-infinite-loop.ref.png | Bin .../arc-looping-dash.image16.ref.png | Bin .../arc-looping-dash.mask.argb32.ref.png | Bin .../arc-looping-dash.mask.rgb24.ref.png | Bin .../reference/arc-looping-dash.ps.ref.png | Bin .../reference/arc-looping-dash.quartz.ref.png | Bin .../test/reference/arc-looping-dash.ref.png | Bin .../arc-looping-dash.traps.argb32.ref.png | Bin .../arc-looping-dash.traps.rgb24.ref.png | Bin .../reference/big-empty-box.argb32.ref.png | Bin .../big-empty-box.base.argb32.ref.png | Bin .../big-empty-box.base.rgb24.ref.png | Bin .../reference/big-empty-box.rgb24.ref.png | Bin .../big-empty-triangle.argb32.ref.png | Bin .../big-empty-triangle.base.argb32.ref.png | Bin .../big-empty-triangle.base.rgb24.ref.png | Bin .../big-empty-triangle.rgb24.ref.png | Bin .../test/reference/big-line.argb32.ref.png | Bin .../reference/big-line.base.argb32.ref.png | Bin .../reference/big-line.base.rgb24.ref.png | Bin .../test/reference/big-line.image16.ref.png | Bin .../cairo}/test/reference/big-line.ps.ref.png | Bin .../test/reference/big-line.quartz.ref.png | Bin .../test/reference/big-line.rgb24.ref.png | Bin .../reference/big-line.traps.argb32.ref.png | Bin .../reference/big-line.traps.rgb24.ref.png | Bin .../reference/big-little-box.argb32.ref.png | Bin .../big-little-box.base.argb32.ref.png | Bin .../big-little-box.base.rgb24.ref.png | Bin .../reference/big-little-box.rgb24.ref.png | Bin .../big-little-triangle.argb32.ref.png | Bin .../big-little-triangle.base.argb32.ref.png | Bin .../big-little-triangle.base.rgb24.ref.png | Bin .../big-little-triangle.rgb24.ref.png | Bin .../big-little-triangle.traps.argb32.ref.png | Bin .../big-little-triangle.traps.rgb24.ref.png | Bin .../reference/big-trap.base.argb32.ref.png | Bin .../reference/big-trap.base.rgb24.ref.png | Bin .../reference/big-trap.mask.argb32.ref.png | Bin .../reference/big-trap.mask.rgb24.ref.png | Bin .../reference/big-trap.traps.argb32.ref.png | Bin .../reference/big-trap.traps.rgb24.ref.png | Bin .../bilevel-image.base.argb32.ref.png | Bin .../bilevel-image.base.rgb24.ref.png | Bin .../test/reference/bilevel-image.ref.png | Bin .../bilevel-xlib-fallback.rgb24.ref.png | Bin .../bilevel-xlib-window.rgb24.ref.png | Bin .../reference/bilevel-xlib.argb32.ref.png | Bin .../test/reference/bilevel-xlib.rgb24.ref.png | Bin .../test/reference/bitmap-font.argb32.ref.png | Bin .../reference/bitmap-font.base.argb32.ref.png | Bin .../reference/bitmap-font.base.rgb24.ref.png | Bin .../test/reference/bitmap-font.rgb24.ref.png | Bin .../test/reference/bug-40410.argb32.ref.png | Bin .../reference/bug-40410.base.argb32.ref.png | Bin .../reference/bug-40410.base.rgb24.ref.png | Bin .../test/reference/bug-40410.rgb24.ref.png | Bin .../reference/bug-40410.traps.argb32.ref.png | Bin .../reference/bug-40410.traps.rgb24.ref.png | Bin .../cairo}/test/reference/bug-51910.ref.png | Bin .../test/reference/bug-bo-collins.ref.png | Bin .../bug-bo-rectangular.base.argb32.ref.png | Bin .../bug-bo-rectangular.base.rgb24.ref.png | Bin .../bug-bo-rectangular.image16.ref.png | Bin .../reference/bug-bo-rectangular.ps.xfail.png | Bin .../test/reference/bug-bo-rectangular.ref.png | Bin .../reference/bug-bo-ricotz.argb32.ref.png | Bin .../bug-bo-ricotz.base.argb32.ref.png | Bin .../bug-bo-ricotz.base.rgb24.ref.png | Bin .../reference/bug-bo-ricotz.rgb24.ref.png | Bin .../reference/bug-bo-ricotz.traps.ref.png | Bin .../test/reference/bug-extents.argb32.ref.png | Bin .../reference/bug-extents.base.argb32.ref.png | Bin .../reference/bug-extents.base.rgb24.ref.png | Bin .../reference/bug-extents.image16.ref.png | Bin .../test/reference/bug-extents.ps.ref.png | Bin .../test/reference/bug-extents.quartz.ref.png | Bin .../test/reference/bug-extents.rgb24.ref.png | Bin .../bug-extents.traps.argb32.ref.png | Bin .../reference/bug-extents.traps.rgb24.ref.png | Bin .../reference/bug-seams.base.argb32.ref.png | Bin .../reference/bug-seams.base.rgb24.ref.png | Bin .../test/reference/bug-seams.image.xfail.png | Bin .../reference/bug-seams.mask.argb32.ref.png | Bin .../reference/bug-seams.mask.rgb24.ref.png | Bin .../cairo}/test/reference/bug-seams.ref.png | Bin .../reference/bug-seams.traps.argb32.ref.png | Bin .../reference/bug-seams.traps.rgb24.ref.png | Bin .../reference/bug-seams.xlib-fallback.ref.png | Bin .../reference/bug-source-cu.argb32.ref.png | Bin .../reference/bug-source-cu.rgb24.ref.png | Bin .../bug-source-cu.traps.argb32.ref.png | Bin .../bug-source-cu.traps.rgb24.ref.png | Bin .../cairo}/test/reference/bug-spline.ref.png | Bin .../cairo}/test/reference/caps-05.ref.png | Bin .../test/reference/caps-05.traps.ref.png | Bin .../cairo}/test/reference/caps-1.ref.png | Bin .../test/reference/caps-1.traps.ref.png | Bin .../cairo}/test/reference/caps-2.ref.png | Bin .../test/reference/caps-2.traps.ref.png | Bin .../test/reference/caps-joins-05.ref.png | Bin .../reference/caps-joins-05.traps.ref.png | Bin .../test/reference/caps-joins-1.ref.png | Bin .../test/reference/caps-joins-1.traps.ref.png | Bin .../test/reference/caps-joins-2.ref.png | Bin .../test/reference/caps-joins-2.traps.ref.png | Bin .../caps-joins-alpha.image16.ref.png | Bin .../caps-joins-alpha.mask.argb32.ref.png | Bin .../caps-joins-alpha.mask.rgb24.ref.png | Bin .../reference/caps-joins-alpha.quartz.ref.png | Bin .../test/reference/caps-joins-alpha.ref.png | Bin .../caps-joins-alpha.traps.argb32.ref.png | Bin .../caps-joins-alpha.traps.rgb24.ref.png | Bin .../caps-joins-curve.image16.ref.png | Bin .../caps-joins-curve.mask.argb32.ref.png | Bin .../caps-joins-curve.mask.rgb24.ref.png | Bin .../reference/caps-joins-curve.ps.ref.png | Bin .../reference/caps-joins-curve.quartz.ref.png | Bin .../test/reference/caps-joins-curve.ref.png | Bin .../caps-joins-curve.traps.argb32.ref.png | Bin .../caps-joins-curve.traps.rgb24.ref.png | Bin .../test/reference/caps-joins.argb32.ref.png | Bin .../reference/caps-joins.base.argb32.ref.png | Bin .../reference/caps-joins.base.rgb24.ref.png | Bin .../test/reference/caps-joins.image16.ref.png | Bin .../test/reference/caps-joins.ps.ref.png | Bin .../test/reference/caps-joins.rgb24.ref.png | Bin .../reference/caps-joins.traps.argb32.ref.png | Bin .../reference/caps-joins.traps.rgb24.ref.png | Bin .../reference/caps-sub-paths.argb32.ref.png | Bin .../caps-sub-paths.base.argb32.ref.png | Bin .../caps-sub-paths.base.rgb24.ref.png | Bin .../reference/caps-sub-paths.image16.ref.png | Bin .../test/reference/caps-sub-paths.ps.ref.png | Bin .../reference/caps-sub-paths.rgb24.ref.png | Bin .../caps-sub-paths.traps.argb32.ref.png | Bin .../caps-sub-paths.traps.rgb24.ref.png | Bin .../caps-tails-curve.mask.argb32.ref.png | Bin .../caps-tails-curve.mask.rgb24.ref.png | Bin .../reference/caps-tails-curve.ps.ref.png | Bin .../test/reference/caps-tails-curve.ref.png | Bin .../caps-tails-curve.traps.argb32.ref.png | Bin .../caps-tails-curve.traps.rgb24.ref.png | Bin .../reference/caps-tails-curve.xcb.ref.png | Bin .../cairo}/test/reference/caps.argb32.ref.png | Bin .../test/reference/caps.base.argb32.ref.png | Bin .../test/reference/caps.base.rgb24.ref.png | Bin .../test/reference/caps.image16.ref.png | Bin .../cairo}/test/reference/caps.ps.ref.png | Bin .../cairo}/test/reference/caps.rgb24.ref.png | Bin .../test/reference/caps.traps.argb32.ref.png | Bin .../test/reference/caps.traps.rgb24.ref.png | Bin .../checkerboard.base.argb32.ref.png | Bin .../reference/checkerboard.base.rgb24.ref.png | Bin .../test/reference/checkerboard.ref.png | Bin .../reference/clear-source.argb32.ref.png | Bin .../clear-source.base.argb32.ref.png | Bin .../reference/clear-source.base.rgb24.ref.png | Bin .../reference/clear-source.image16.ref.png | Bin .../test/reference/clear-source.pdf.xfail.png | Bin .../test/reference/clear-source.ps.xfail.png | Bin .../test/reference/clear-source.rgb24.ref.png | Bin .../clear-source.traps.argb32.ref.png | Bin .../clear-source.traps.rgb24.ref.png | Bin .../test/reference/clear.argb32.ref.png | Bin .../test/reference/clear.base.argb32.ref.png | Bin .../test/reference/clear.base.rgb24.ref.png | Bin .../test/reference/clear.pdf.argb32.ref.png | Bin .../test/reference/clear.ps.argb32.ref.png | Bin .../reference/clear.quartz.argb32.ref.png | Bin .../test/reference/clear.quartz.rgb24.ref.png | Bin .../cairo}/test/reference/clear.rgb24.ref.png | Bin .../reference/clear.svg12.argb32.xfail.png | Bin .../reference/clear.svg12.rgb24.xfail.png | Bin .../test/reference/clear.traps.argb32.ref.png | Bin .../test/reference/clear.traps.rgb24.ref.png | Bin .../reference/clip-all.base.argb32.ref.png | Bin .../reference/clip-all.base.rgb24.ref.png | Bin .../cairo}/test/reference/clip-all.ref.png | Bin .../reference/clip-complex-bug61492.ref.png | Bin ...ip-complex-shape-eo-aa.base.argb32.ref.png | Bin ...lip-complex-shape-eo-aa.base.rgb24.ref.png | Bin .../clip-complex-shape-eo-aa.ref.png | Bin ...-complex-shape-eo-mono.base.argb32.ref.png | Bin ...p-complex-shape-eo-mono.base.rgb24.ref.png | Bin .../clip-complex-shape-eo-mono.ref.png | Bin .../clip-contexts.base.argb32.ref.png | Bin .../clip-contexts.base.rgb24.ref.png | Bin .../test/reference/clip-contexts.ref.png | Bin .../clip-device-offset.argb32.ref.png | Bin .../clip-device-offset.base.argb32.ref.png | Bin .../clip-device-offset.base.rgb24.ref.png | Bin .../clip-device-offset.rgb24.ref.png | Bin .../clip-disjoint-hatching.argb32.ref.png | Bin ...clip-disjoint-hatching.base.argb32.ref.png | Bin .../clip-disjoint-hatching.base.rgb24.ref.png | Bin ...clip-disjoint-hatching.mask.argb32.ref.png | Bin .../clip-disjoint-hatching.mask.rgb24.ref.png | Bin .../clip-disjoint-hatching.rgb24.ref.png | Bin ...lip-disjoint-hatching.traps.argb32.ref.png | Bin ...clip-disjoint-hatching.traps.rgb24.ref.png | Bin .../test/reference/clip-disjoint-quad.ref.png | Bin .../clip-disjoint-quad.traps.ref.png | Bin .../clip-disjoint.base.argb32.ref.png | Bin .../clip-disjoint.base.rgb24.ref.png | Bin .../reference/clip-disjoint.image16.ref.png | Bin .../clip-disjoint.mask.argb32.ref.png | Bin .../clip-disjoint.mask.rgb24.ref.png | Bin .../test/reference/clip-disjoint.ps.ref.png | Bin .../reference/clip-disjoint.quartz.ref.png | Bin .../test/reference/clip-disjoint.ref.png | Bin .../clip-disjoint.traps.argb32.ref.png | Bin .../clip-disjoint.traps.rgb24.ref.png | Bin .../clip-empty-group.base.argb32.ref.png | Bin .../clip-empty-group.base.rgb24.ref.png | Bin .../test/reference/clip-empty-group.ref.png | Bin .../clip-empty-save.base.argb32.ref.png | Bin .../clip-empty-save.base.rgb24.ref.png | Bin .../test/reference/clip-empty-save.ref.png | Bin .../reference/clip-empty.base.argb32.ref.png | Bin .../reference/clip-empty.base.rgb24.ref.png | Bin .../cairo}/test/reference/clip-empty.ref.png | Bin .../clip-fill-eo-unbounded.argb32.ref.png | Bin ...clip-fill-eo-unbounded.base.argb32.ref.png | Bin .../clip-fill-eo-unbounded.base.rgb24.ref.png | Bin .../clip-fill-eo-unbounded.image16.ref.png | Bin ...clip-fill-eo-unbounded.mask.argb32.ref.png | Bin .../clip-fill-eo-unbounded.mask.rgb24.ref.png | Bin ...ip-fill-eo-unbounded.quartz.argb32.ref.png | Bin ...lip-fill-eo-unbounded.quartz.rgb24.ref.png | Bin .../clip-fill-eo-unbounded.rgb24.ref.png | Bin ...ip-fill-eo-unbounded.svg12.rgb24.xfail.png | Bin ...lip-fill-eo-unbounded.traps.argb32.ref.png | Bin ...clip-fill-eo-unbounded.traps.rgb24.ref.png | Bin ...l-eo-unbounded.xlib-fallback.rgb24.ref.png | Bin .../clip-fill-no-op.base.argb32.ref.png | Bin .../clip-fill-no-op.base.rgb24.ref.png | Bin .../reference/clip-fill-no-op.image16.ref.png | Bin .../test/reference/clip-fill-no-op.ref.png | Bin .../clip-fill-nz-unbounded.argb32.ref.png | Bin ...clip-fill-nz-unbounded.base.argb32.ref.png | Bin .../clip-fill-nz-unbounded.base.rgb24.ref.png | Bin .../clip-fill-nz-unbounded.image16.ref.png | Bin ...clip-fill-nz-unbounded.mask.argb32.ref.png | Bin .../clip-fill-nz-unbounded.mask.rgb24.ref.png | Bin ...ip-fill-nz-unbounded.quartz.argb32.ref.png | Bin ...lip-fill-nz-unbounded.quartz.rgb24.ref.png | Bin .../clip-fill-nz-unbounded.rgb24.ref.png | Bin ...ip-fill-nz-unbounded.svg12.rgb24.xfail.png | Bin ...lip-fill-nz-unbounded.traps.argb32.ref.png | Bin ...clip-fill-nz-unbounded.traps.rgb24.ref.png | Bin ...l-nz-unbounded.xlib-fallback.rgb24.ref.png | Bin ...lip-fill-rule-pixel-aligned.argb32.ref.png | Bin ...ill-rule-pixel-aligned.base.argb32.ref.png | Bin ...fill-rule-pixel-aligned.base.rgb24.ref.png | Bin ...clip-fill-rule-pixel-aligned.rgb24.ref.png | Bin .../reference/clip-fill-rule.argb32.ref.png | Bin .../clip-fill-rule.base.argb32.ref.png | Bin .../clip-fill-rule.base.rgb24.ref.png | Bin .../reference/clip-fill-rule.image16.ref.png | Bin .../clip-fill-rule.pdf.argb32.ref.png | Bin .../clip-fill-rule.ps.argb32.ref.png | Bin .../reference/clip-fill-rule.ps.rgb24.ref.png | Bin .../clip-fill-rule.quartz.rgb24.ref.png | Bin .../reference/clip-fill-rule.rgb24.ref.png | Bin ...lip-fill-rule.test-paginated.rgb24.ref.png | Bin .../clip-fill-rule.traps.argb32.ref.png | Bin .../clip-fill-rule.traps.rgb24.ref.png | Bin .../test/reference/clip-fill.argb32.ref.png | Bin .../reference/clip-fill.base.argb32.ref.png | Bin .../reference/clip-fill.base.rgb24.ref.png | Bin .../test/reference/clip-fill.image16.ref.png | Bin .../reference/clip-fill.mask.argb32.ref.png | Bin .../reference/clip-fill.mask.rgb24.ref.png | Bin .../test/reference/clip-fill.ps.xfail.png | Bin .../test/reference/clip-fill.quartz.ref.png | Bin .../test/reference/clip-fill.rgb24.ref.png | Bin .../reference/clip-fill.traps.argb32.ref.png | Bin .../reference/clip-fill.traps.rgb24.ref.png | Bin .../reference/clip-fill.xlib-fallback.ref.png | Bin ...pes-aligned-rectangles.base.argb32.ref.png | Bin ...apes-aligned-rectangles.base.rgb24.ref.png | Bin ...ip-group-shapes-aligned-rectangles.ref.png | Bin .../clip-group-shapes-circles.argb32.ref.png | Bin ...p-group-shapes-circles.base.argb32.ref.png | Bin ...ip-group-shapes-circles.base.rgb24.ref.png | Bin ...p-group-shapes-circles.mask.argb32.ref.png | Bin ...ip-group-shapes-circles.mask.rgb24.ref.png | Bin .../clip-group-shapes-circles.ps.ref.png | Bin .../clip-group-shapes-circles.quartz.ref.png | Bin .../clip-group-shapes-circles.rgb24.ref.png | Bin ...-group-shapes-circles.traps.argb32.ref.png | Bin ...p-group-shapes-circles.traps.rgb24.ref.png | Bin ...s-unaligned-rectangles.base.argb32.ref.png | Bin ...es-unaligned-rectangles.base.rgb24.ref.png | Bin ...s-unaligned-rectangles.mask.argb32.ref.png | Bin ...es-unaligned-rectangles.mask.rgb24.ref.png | Bin ...-group-shapes-unaligned-rectangles.ref.png | Bin ...-unaligned-rectangles.traps.argb32.ref.png | Bin ...s-unaligned-rectangles.traps.rgb24.ref.png | Bin .../test/reference/clip-image.argb32.ref.png | Bin .../reference/clip-image.base.argb32.ref.png | Bin .../reference/clip-image.base.rgb24.ref.png | Bin .../test/reference/clip-image.image16.ref.png | Bin .../reference/clip-image.mask.argb32.ref.png | Bin .../reference/clip-image.mask.rgb24.ref.png | Bin .../test/reference/clip-image.ps.ref.png | Bin .../test/reference/clip-image.rgb24.ref.png | Bin .../reference/clip-image.traps.argb32.ref.png | Bin .../reference/clip-image.traps.rgb24.ref.png | Bin .../reference/clip-intersect.argb32.ref.png | Bin .../clip-intersect.base.argb32.ref.png | Bin .../clip-intersect.base.rgb24.ref.png | Bin .../reference/clip-intersect.rgb24.ref.png | Bin .../clip-intersect.traps.argb32.ref.png | Bin .../clip-intersect.traps.rgb24.ref.png | Bin .../clip-mixed-antialias.argb32.ref.png | Bin .../clip-mixed-antialias.base.argb32.ref.png | Bin .../clip-mixed-antialias.base.rgb24.ref.png | Bin .../clip-mixed-antialias.rgb24.ref.png | Bin .../clip-mixed-antialias.traps.argb32.ref.png | Bin .../clip-mixed-antialias.traps.rgb24.ref.png | Bin .../reference/clip-nesting.argb32.ref.png | Bin .../clip-nesting.base.argb32.ref.png | Bin .../reference/clip-nesting.base.rgb24.ref.png | Bin .../reference/clip-nesting.mask.rgb24.ref.png | Bin .../reference/clip-nesting.pdf.argb32.ref.png | Bin .../reference/clip-nesting.ps.argb32.ref.png | Bin .../reference/clip-nesting.ps.rgb24.ref.png | Bin .../clip-nesting.quartz.argb32.ref.png | Bin .../clip-nesting.quartz.rgb24.ref.png | Bin .../test/reference/clip-nesting.rgb24.ref.png | Bin .../clip-nesting.test-paginated.rgb24.ref.png | Bin .../clip-nesting.traps.argb32.ref.png | Bin .../clip-nesting.traps.rgb24.ref.png | Bin .../reference/clip-operator.argb32.ref.png | Bin .../clip-operator.base.argb32.ref.png | Bin .../clip-operator.base.rgb24.ref.png | Bin .../reference/clip-operator.gl.argb32.ref.png | Bin .../reference/clip-operator.image16.ref.png | Bin .../clip-operator.mask.argb32.ref.png | Bin .../clip-operator.mask.rgb24.ref.png | Bin .../clip-operator.pdf.argb32.ref.png | Bin .../reference/clip-operator.pdf.rgb24.ref.png | Bin .../reference/clip-operator.ps2.rgb24.ref.png | Bin .../clip-operator.ps3.argb32.ref.png | Bin .../test/reference/clip-operator.ps3.ref.png | Bin .../reference/clip-operator.ps3.rgb24.ref.png | Bin .../clip-operator.quartz.argb32.ref.png | Bin .../clip-operator.quartz.rgb24.ref.png | Bin .../reference/clip-operator.rgb24.ref.png | Bin .../clip-operator.svg12.argb32.xfail.png | Bin .../clip-operator.svg12.rgb24.xfail.png | Bin ...lip-operator.test-paginated.argb32.ref.png | Bin .../clip-operator.traps.argb32.ref.png | Bin .../clip-operator.traps.rgb24.ref.png | Bin .../clip-operator.xlib-fallback.ref.png | Bin .../reference/clip-polygons.argb32.ref.png | Bin .../clip-polygons.base.argb32.ref.png | Bin .../clip-polygons.base.rgb24.ref.png | Bin .../clip-polygons.mask.argb32.ref.png | Bin .../clip-polygons.mask.rgb24.ref.png | Bin .../reference/clip-polygons.rgb24.ref.png | Bin .../reference/clip-polygons.traps.ref.png | Bin .../reference/clip-push-group.argb32.ref.png | Bin .../clip-push-group.base.argb32.ref.png | Bin .../clip-push-group.base.rgb24.ref.png | Bin .../reference/clip-push-group.image16.ref.png | Bin .../reference/clip-push-group.pdf.ref.png | Bin .../test/reference/clip-push-group.ps.ref.png | Bin .../reference/clip-push-group.quartz.ref.png | Bin .../reference/clip-push-group.rgb24.ref.png | Bin .../reference/clip-push-group.svg.ref.png | Bin .../clip-push-group.traps.argb32.ref.png | Bin .../clip-push-group.traps.rgb24.ref.png | Bin .../clip-rectilinear.base.argb32.ref.png | Bin .../clip-rectilinear.base.rgb24.ref.png | Bin .../clip-rectilinear.mask.argb32.ref.png | Bin .../clip-rectilinear.mask.rgb24.ref.png | Bin .../test/reference/clip-rectilinear.ref.png | Bin .../reference/clip-rectilinear.traps.ref.png | Bin ...te-image-surface-paint.base.argb32.ref.png | Bin ...ate-image-surface-paint.base.rgb24.ref.png | Bin .../clip-rotate-image-surface-paint.ref.png | Bin .../test/reference/clip-shape.argb32.ref.png | Bin .../reference/clip-shape.base.argb32.ref.png | Bin .../reference/clip-shape.base.rgb24.ref.png | Bin .../test/reference/clip-shape.image16.ref.png | Bin .../reference/clip-shape.mask.argb32.ref.png | Bin .../reference/clip-shape.mask.rgb24.ref.png | Bin .../test/reference/clip-shape.ps.ref.png | Bin .../test/reference/clip-shape.quartz.ref.png | Bin .../test/reference/clip-shape.rgb24.ref.png | Bin .../reference/clip-shape.traps.argb32.ref.png | Bin .../reference/clip-shape.traps.rgb24.ref.png | Bin .../clip-shape.xlib-fallback.ref.png | Bin .../clip-stroke-no-op.base.argb32.ref.png | Bin .../clip-stroke-no-op.base.rgb24.ref.png | Bin .../clip-stroke-no-op.image16.ref.png | Bin .../test/reference/clip-stroke-no-op.ref.png | Bin .../clip-stroke-unbounded.argb32.ref.png | Bin .../clip-stroke-unbounded.base.argb32.ref.png | Bin .../clip-stroke-unbounded.base.rgb24.ref.png | Bin ...lip-stroke-unbounded.image16.rgb24.ref.png | Bin .../clip-stroke-unbounded.mask.argb32.ref.png | Bin .../clip-stroke-unbounded.mask.rgb24.ref.png | Bin ...lip-stroke-unbounded.quartz.argb32.ref.png | Bin ...clip-stroke-unbounded.quartz.rgb24.ref.png | Bin .../clip-stroke-unbounded.rgb24.ref.png | Bin ...lip-stroke-unbounded.svg12.rgb24.xfail.png | Bin ...clip-stroke-unbounded.traps.argb32.ref.png | Bin .../clip-stroke-unbounded.traps.rgb24.ref.png | Bin ...roke-unbounded.xlib-fallback.rgb24.ref.png | Bin .../reference/clip-stroke.base.argb32.ref.png | Bin .../reference/clip-stroke.base.rgb24.ref.png | Bin .../reference/clip-stroke.image16.ref.png | Bin .../reference/clip-stroke.mask.argb32.ref.png | Bin .../reference/clip-stroke.mask.rgb24.ref.png | Bin .../test/reference/clip-stroke.ps.xfail.png | Bin .../test/reference/clip-stroke.quartz.ref.png | Bin .../cairo}/test/reference/clip-stroke.ref.png | Bin .../clip-stroke.traps.argb32.ref.png | Bin .../reference/clip-stroke.traps.rgb24.ref.png | Bin .../clip-stroke.xlib-fallback.ref.png | Bin .../test/reference/clip-text.argb32.ref.png | Bin .../reference/clip-text.base.argb32.ref.png | Bin .../reference/clip-text.base.rgb24.ref.png | Bin .../test/reference/clip-text.image16.ref.png | Bin .../reference/clip-text.mask.argb32.ref.png | Bin .../reference/clip-text.mask.rgb24.ref.png | Bin .../test/reference/clip-text.ps.xfail.png | Bin .../test/reference/clip-text.quartz.ref.png | Bin .../test/reference/clip-text.rgb24.ref.png | Bin .../test/reference/clip-text.svg.ref.png | Bin .../reference/clip-text.traps.argb32.ref.png | Bin .../reference/clip-text.traps.rgb24.ref.png | Bin .../clip-twice-rectangle.base.argb32.ref.png | Bin .../clip-twice-rectangle.base.rgb24.ref.png | Bin .../reference/clip-twice-rectangle.ref.png | Bin .../test/reference/clip-twice.argb32.ref.png | Bin .../reference/clip-twice.base.argb32.ref.png | Bin .../reference/clip-twice.base.rgb24.ref.png | Bin .../test/reference/clip-twice.image16.ref.png | Bin .../reference/clip-twice.mask.argb32.ref.png | Bin .../reference/clip-twice.mask.rgb24.ref.png | Bin .../reference/clip-twice.pdf.argb32.ref.png | Bin .../reference/clip-twice.ps.argb32.ref.png | Bin .../reference/clip-twice.ps.rgb24.ref.png | Bin .../clip-twice.quartz.argb32.ref.png | Bin .../reference/clip-twice.quartz.rgb24.ref.png | Bin .../test/reference/clip-twice.rgb24.ref.png | Bin .../clip-twice.test-paginated.argb32.ref.png | Bin .../clip-twice.test-paginated.rgb24.ref.png | Bin .../reference/clip-twice.traps.argb32.ref.png | Bin .../reference/clip-twice.traps.rgb24.ref.png | Bin .../reference/clip-unbounded.argb32.ref.png | Bin .../clip-unbounded.base.argb32.ref.png | Bin .../clip-unbounded.base.rgb24.ref.png | Bin .../clip-unbounded.pdf.argb32.xfail.png | Bin .../clip-unbounded.pdf.rgb24.xfail.png | Bin .../reference/clip-unbounded.rgb24.ref.png | Bin .../clip-unbounded.svg12.rgb24.xfail.png | Bin .../clip-xlib-fallback.rgb24.ref.png | Bin .../reference/clip-xlib-window.rgb24.ref.png | Bin .../test/reference/clip-xlib.argb32.ref.png | Bin .../test/reference/clip-xlib.rgb24.ref.png | Bin .../reference/clipped-group.argb32.ref.png | Bin .../clipped-group.base.argb32.ref.png | Bin .../clipped-group.base.rgb24.ref.png | Bin .../reference/clipped-group.image16.ref.png | Bin .../clipped-group.mask.argb32.ref.png | Bin .../clipped-group.mask.rgb24.ref.png | Bin .../test/reference/clipped-group.pdf.ref.png | Bin .../test/reference/clipped-group.ps2.ref.png | Bin .../test/reference/clipped-group.ps3.ref.png | Bin .../reference/clipped-group.quartz.ref.png | Bin .../reference/clipped-group.rgb24.ref.png | Bin .../test/reference/clipped-group.svg.ref.png | Bin .../clipped-group.traps.argb32.ref.png | Bin .../clipped-group.traps.rgb24.ref.png | Bin .../clipped-group.xlib-fallback.ref.png | Bin .../clipped-surface.base.argb32.ref.png | Bin .../clipped-surface.base.rgb24.ref.png | Bin .../reference/clipped-surface.image16.ref.png | Bin .../test/reference/clipped-surface.ref.png | Bin .../test/reference/clipped-trapezoids.ref.png | Bin ...ose-path-current-point.base.argb32.ref.png | Bin ...lose-path-current-point.base.rgb24.ref.png | Bin .../close-path-current-point.image16.ref.png | Bin ...ose-path-current-point.mask.argb32.ref.png | Bin ...lose-path-current-point.mask.rgb24.ref.png | Bin .../close-path-current-point.ps.ref.png | Bin .../close-path-current-point.ref.png | Bin ...se-path-current-point.traps.argb32.ref.png | Bin ...ose-path-current-point.traps.rgb24.ref.png | Bin .../test/reference/close-path.argb32.ref.png | Bin .../reference/close-path.base.argb32.ref.png | Bin .../reference/close-path.base.rgb24.ref.png | Bin .../test/reference/close-path.ps2.ref.png | Bin .../test/reference/close-path.ps3.ref.png | Bin .../test/reference/close-path.rgb24.ref.png | Bin .../reference/close-path.traps.argb32.ref.png | Bin .../reference/close-path.traps.rgb24.ref.png | Bin ...-translate-over-repeat.base.argb32.ref.png | Bin ...r-translate-over-repeat.base.rgb24.ref.png | Bin ...-integer-translate-over-repeat.ps2.ref.png | Bin ...-integer-translate-over-repeat.ps3.ref.png | Bin ...site-integer-translate-over-repeat.ref.png | Bin ...integer-translate-over.base.argb32.ref.png | Bin ...-integer-translate-over.base.rgb24.ref.png | Bin ...ite-integer-translate-over.image16.ref.png | Bin ...mposite-integer-translate-over.ps2.ref.png | Bin ...mposite-integer-translate-over.ps3.ref.png | Bin .../composite-integer-translate-over.ref.png | Bin ...teger-translate-source.base.argb32.ref.png | Bin ...nteger-translate-source.base.rgb24.ref.png | Bin ...e-integer-translate-source.image16.ref.png | Bin ...osite-integer-translate-source.ps2.ref.png | Bin ...osite-integer-translate-source.ps3.ref.png | Bin ...composite-integer-translate-source.ref.png | Bin ...er-translate-source.svg12.argb32.xfail.png | Bin ...ger-translate-source.svg12.rgb24.xfail.png | Bin .../copy-disjoint.base.argb32.ref.png | Bin .../copy-disjoint.base.rgb24.ref.png | Bin .../test/reference/copy-disjoint.ref.png | Bin .../test/reference/copy-path.argb32.ref.png | Bin .../reference/copy-path.base.argb32.ref.png | Bin .../reference/copy-path.base.rgb24.ref.png | Bin .../test/reference/copy-path.image16.ref.png | Bin .../test/reference/copy-path.ps.ref.png | Bin .../test/reference/copy-path.rgb24.ref.png | Bin .../reference/copy-path.traps.argb32.ref.png | Bin .../reference/copy-path.traps.rgb24.ref.png | Bin .../coverage-column-triangles.ref.png | Bin .../coverage-column-triangles.xlib.xfail.png | Bin .../coverage-intersecting-quads.ref.png | Bin ...coverage-intersecting-quads.xlib.xfail.png | Bin .../coverage-intersecting-triangles.ref.png | Bin ...rage-intersecting-triangles.xlib.xfail.png | Bin .../reference/coverage-rectangles.ref.png | Bin .../coverage-rectangles.xlib.xfail.png | Bin .../reference/coverage-row-triangles.ref.png | Bin .../coverage-row-triangles.xlib.xfail.png | Bin .../test/reference/coverage-triangles.ref.png | Bin .../coverage-triangles.xlib.xfail.png | Bin ...create-from-png-stream.base.argb32.ref.png | Bin .../create-from-png-stream.base.rgb24.ref.png | Bin .../reference/create-from-png-stream.ref.png | Bin .../reference/create-from-png.alpha.ref.png | Bin .../reference/create-from-png.argb32.ref.png | Bin .../create-from-png.base.argb32.ref.png | Bin .../create-from-png.base.rgb24.ref.png | Bin .../create-from-png.gray-alpha.ref.png | Bin .../reference/create-from-png.gray.ref.png | Bin .../create-from-png.indexed-alpha.ref.png | Bin .../reference/create-from-png.indexed.ref.png | Bin .../create-from-png.mask.argb32.ref.png | Bin .../create-from-png.mask.rgb24.ref.png | Bin .../reference/create-from-png.rgb24.ref.png | Bin .../create-from-png.traps.argb32.ref.png | Bin .../create-from-png.traps.rgb24.ref.png | Bin .../reference/culled-glyphs.argb32.ref.png | Bin .../culled-glyphs.base.argb32.ref.png | Bin .../culled-glyphs.base.rgb24.ref.png | Bin .../reference/culled-glyphs.image16.ref.png | Bin .../test/reference/culled-glyphs.ps.ref.png | Bin .../reference/culled-glyphs.quartz.ref.png | Bin .../reference/culled-glyphs.rgb24.ref.png | Bin .../curve-to-as-line-to.base.argb32.ref.png | Bin .../curve-to-as-line-to.base.rgb24.ref.png | Bin .../curve-to-as-line-to.mask.argb32.ref.png | Bin .../curve-to-as-line-to.mask.rgb24.ref.png | Bin .../curve-to-as-line-to.ps.xfail.png | Bin .../reference/curve-to-as-line-to.ref.png | Bin .../curve-to-as-line-to.traps.argb32.ref.png | Bin .../curve-to-as-line-to.traps.rgb24.ref.png | Bin .../dash-caps-joins.base.argb32.ref.png | Bin .../dash-caps-joins.base.rgb24.ref.png | Bin .../reference/dash-caps-joins.image16.ref.png | Bin .../dash-caps-joins.mask.argb32.ref.png | Bin .../dash-caps-joins.mask.rgb24.ref.png | Bin .../test/reference/dash-caps-joins.ps.ref.png | Bin .../dash-caps-joins.quartz.xfail.png | Bin .../test/reference/dash-caps-joins.ref.png | Bin .../dash-caps-joins.traps.argb32.ref.png | Bin .../dash-caps-joins.traps.rgb24.ref.png | Bin .../test/reference/dash-curve.image16.ref.png | Bin .../reference/dash-curve.mask.argb32.ref.png | Bin .../reference/dash-curve.mask.rgb24.ref.png | Bin .../test/reference/dash-curve.ps2.ref.png | Bin .../test/reference/dash-curve.ps3.ref.png | Bin .../reference/dash-curve.quartz.xfail.png | Bin .../cairo}/test/reference/dash-curve.ref.png | Bin .../reference/dash-curve.traps.argb32.ref.png | Bin .../reference/dash-curve.traps.rgb24.ref.png | Bin .../dash-infinite-loop.argb32.ref.png | Bin .../dash-infinite-loop.base.argb32.ref.png | Bin .../dash-infinite-loop.base.rgb24.ref.png | Bin .../reference/dash-infinite-loop.ps.ref.png | Bin .../dash-infinite-loop.rgb24.ref.png | Bin .../dash-infinite-loop.traps.argb32.ref.png | Bin .../dash-infinite-loop.traps.rgb24.ref.png | Bin .../dash-no-dash.base.argb32.ref.png | Bin .../reference/dash-no-dash.base.rgb24.ref.png | Bin .../test/reference/dash-no-dash.ref.png | Bin .../dash-offset-negative.argb32.ref.png | Bin .../dash-offset-negative.base.argb32.ref.png | Bin .../dash-offset-negative.base.rgb24.ref.png | Bin .../dash-offset-negative.pdf.ref.png | Bin .../dash-offset-negative.rgb24.ref.png | Bin .../dash-offset-negative.traps.argb32.ref.png | Bin .../dash-offset-negative.traps.rgb24.ref.png | Bin .../reference/dash-offset.base.argb32.ref.png | Bin .../reference/dash-offset.base.rgb24.ref.png | Bin .../cairo}/test/reference/dash-offset.ref.png | Bin .../test/reference/dash-scale.image16.ref.png | Bin .../reference/dash-scale.mask.argb32.ref.png | Bin .../reference/dash-scale.mask.rgb24.ref.png | Bin .../test/reference/dash-scale.ps.ref.png | Bin .../test/reference/dash-scale.quartz.ref.png | Bin .../cairo}/test/reference/dash-scale.ref.png | Bin .../reference/dash-scale.traps.argb32.ref.png | Bin .../reference/dash-scale.traps.rgb24.ref.png | Bin .../test/reference/dash-state.argb32.ref.png | Bin .../reference/dash-state.base.argb32.ref.png | Bin .../reference/dash-state.base.rgb24.ref.png | Bin .../test/reference/dash-state.image16.ref.png | Bin .../test/reference/dash-state.ps2.ref.png | Bin .../test/reference/dash-state.ps3.ref.png | Bin .../reference/dash-state.quartz.xfail.png | Bin .../test/reference/dash-state.rgb24.ref.png | Bin .../reference/dash-state.traps.argb32.ref.png | Bin .../reference/dash-state.traps.rgb24.ref.png | Bin .../reference/dash-zero-length.argb32.ref.png | Bin .../dash-zero-length.base.argb32.ref.png | Bin .../dash-zero-length.base.rgb24.ref.png | Bin .../dash-zero-length.mask.rgb24.ref.png | Bin .../reference/dash-zero-length.ps2.ref.png | Bin .../dash-zero-length.ps2.rgb24.ref.png | Bin .../reference/dash-zero-length.ps3.ref.png | Bin .../dash-zero-length.ps3.rgb24.ref.png | Bin .../reference/dash-zero-length.rgb24.ref.png | Bin .../dash-zero-length.traps.argb32.ref.png | Bin .../dash-zero-length.traps.rgb24.ref.png | Bin .../degenerate-arc.base.argb32.ref.png | Bin .../degenerate-arc.base.rgb24.ref.png | Bin .../reference/degenerate-arc.image16.ref.png | Bin .../degenerate-arc.mask.argb32.ref.png | Bin .../degenerate-arc.mask.rgb24.ref.png | Bin .../test/reference/degenerate-arc.ps2.ref.png | Bin .../test/reference/degenerate-arc.ps3.ref.png | Bin .../reference/degenerate-arc.quartz.ref.png | Bin .../test/reference/degenerate-arc.ref.png | Bin .../degenerate-arc.traps.argb32.ref.png | Bin .../degenerate-arc.traps.rgb24.ref.png | Bin .../degenerate-arcs.base.argb32.ref.png | Bin .../degenerate-arcs.base.rgb24.ref.png | Bin .../reference/degenerate-arcs.image16.ref.png | Bin .../test/reference/degenerate-arcs.ref.png | Bin .../degenerate-curve-to.base.argb32.ref.png | Bin .../degenerate-curve-to.base.rgb24.ref.png | Bin .../degenerate-curve-to.image16.ref.png | Bin .../degenerate-curve-to.mask.argb32.ref.png | Bin .../degenerate-curve-to.mask.rgb24.ref.png | Bin .../degenerate-curve-to.ps.xfail.png | Bin .../degenerate-curve-to.quartz.ref.png | Bin .../reference/degenerate-curve-to.ref.png | Bin .../degenerate-curve-to.traps.argb32.ref.png | Bin .../degenerate-curve-to.traps.rgb24.ref.png | Bin .../degenerate-dash.base.argb32.ref.png | Bin .../degenerate-dash.base.rgb24.ref.png | Bin .../degenerate-dash.mask.argb32.ref.png | Bin .../degenerate-dash.mask.rgb24.ref.png | Bin .../reference/degenerate-dash.ps.xfail.png | Bin .../degenerate-dash.quartz.xfail.png | Bin .../test/reference/degenerate-dash.ref.png | Bin .../degenerate-dash.traps.argb32.ref.png | Bin .../degenerate-dash.traps.rgb24.ref.png | Bin .../degenerate-linear-gradient.argb32.ref.png | Bin ...nerate-linear-gradient.base.argb32.ref.png | Bin ...enerate-linear-gradient.base.rgb24.ref.png | Bin .../degenerate-linear-gradient.rgb24.ref.png | Bin .../reference/degenerate-path.argb32.ref.png | Bin .../degenerate-path.base.argb32.ref.png | Bin .../degenerate-path.base.rgb24.ref.png | Bin .../degenerate-path.mask.argb32.ref.png | Bin .../degenerate-path.mask.rgb24.ref.png | Bin .../degenerate-path.ps.argb32.xfail.png | Bin .../degenerate-path.ps.rgb24.xfail.png | Bin .../degenerate-path.quartz.argb32.xfail.png | Bin .../degenerate-path.quartz.rgb24.xfail.png | Bin .../reference/degenerate-path.rgb24.ref.png | Bin .../degenerate-path.traps.argb32.ref.png | Bin .../degenerate-path.traps.rgb24.ref.png | Bin .../reference/degenerate-pen.argb32.ref.png | Bin .../degenerate-pen.base.argb32.ref.png | Bin .../degenerate-pen.base.rgb24.ref.png | Bin .../reference/degenerate-pen.image16.ref.png | Bin .../test/reference/degenerate-pen.ps.ref.png | Bin .../reference/degenerate-pen.rgb24.ref.png | Bin .../degenerate-pen.traps.argb32.ref.png | Bin .../degenerate-pen.traps.rgb24.ref.png | Bin ...nerate-radial-gradient.base.argb32.ref.png | Bin ...enerate-radial-gradient.base.rgb24.ref.png | Bin .../degenerate-radial-gradient.ref.png | Bin ...egenerate-rel-curve-to.base.argb32.ref.png | Bin ...degenerate-rel-curve-to.base.rgb24.ref.png | Bin .../degenerate-rel-curve-to.image16.ref.png | Bin ...egenerate-rel-curve-to.mask.argb32.ref.png | Bin ...degenerate-rel-curve-to.mask.rgb24.ref.png | Bin .../degenerate-rel-curve-to.ps.ref.png | Bin .../degenerate-rel-curve-to.quartz.ref.png | Bin .../reference/degenerate-rel-curve-to.ref.png | Bin ...generate-rel-curve-to.traps.argb32.ref.png | Bin ...egenerate-rel-curve-to.traps.rgb24.ref.png | Bin .../reference/degenerate-solid-dash.ref.png | Bin ...vice-offset-fractional.base.argb32.ref.png | Bin ...evice-offset-fractional.base.rgb24.ref.png | Bin .../device-offset-fractional.gl.xfail.png | Bin .../device-offset-fractional.pdf.xfail.png | Bin .../device-offset-fractional.ps2.ref.png | Bin .../device-offset-fractional.ps3.ref.png | Bin .../device-offset-fractional.ref.png | Bin .../device-offset-positive.argb32.ref.png | Bin ...device-offset-positive.base.argb32.ref.png | Bin .../device-offset-positive.base.rgb24.ref.png | Bin .../device-offset-positive.rgb24.ref.png | Bin .../device-offset-scale.base.argb32.ref.png | Bin .../device-offset-scale.base.rgb24.ref.png | Bin .../reference/device-offset-scale.ref.png | Bin .../device-offset-scale.svg.xfail.png | Bin .../reference/device-offset.argb32.ref.png | Bin .../device-offset.base.argb32.ref.png | Bin .../device-offset.base.rgb24.ref.png | Bin .../reference/device-offset.rgb24.ref.png | Bin .../drunkard-tails.base.argb32.ref.png | Bin .../drunkard-tails.base.rgb24.ref.png | Bin .../drunkard-tails.mask.argb32.ref.png | Bin .../drunkard-tails.mask.rgb24.ref.png | Bin .../test/reference/drunkard-tails.ps.ref.png | Bin .../test/reference/drunkard-tails.ref.png | Bin .../drunkard-tails.traps.argb32.ref.png | Bin .../drunkard-tails.traps.rgb24.ref.png | Bin .../extend-pad-border.argb32.ref.png | Bin .../extend-pad-border.base.argb32.ref.png | Bin .../extend-pad-border.base.rgb24.ref.png | Bin .../extend-pad-border.image16.ref.png | Bin .../reference/extend-pad-border.pdf.ref.png | Bin .../reference/extend-pad-border.ps.ref.png | Bin .../extend-pad-border.quartz.ref.png | Bin .../reference/extend-pad-border.rgb24.ref.png | Bin .../reference/extend-pad-border.svg.xfail.png | Bin .../extend-pad-similar.base.argb32.ref.png | Bin .../extend-pad-similar.base.rgb24.ref.png | Bin .../extend-pad-similar.quartz.xfail.png | Bin .../test/reference/extend-pad-similar.ref.png | Bin .../extend-pad-similar.svg.xfail.png | Bin .../reference/extend-pad.base.argb32.ref.png | Bin .../reference/extend-pad.base.rgb24.ref.png | Bin .../test/reference/extend-pad.ps.ref.png | Bin .../reference/extend-pad.quartz.xfail.png | Bin .../cairo}/test/reference/extend-pad.ref.png | Bin .../test/reference/extend-pad.svg.xfail.png | Bin ...extend-reflect-similar.base.argb32.ref.png | Bin .../extend-reflect-similar.base.rgb24.ref.png | Bin .../extend-reflect-similar.image16.ref.png | Bin .../extend-reflect-similar.ps2.ref.png | Bin .../extend-reflect-similar.ps3.ref.png | Bin .../reference/extend-reflect-similar.ref.png | Bin .../extend-reflect.base.argb32.ref.png | Bin .../extend-reflect.base.rgb24.ref.png | Bin .../reference/extend-reflect.image16.ref.png | Bin .../test/reference/extend-reflect.ps2.ref.png | Bin .../test/reference/extend-reflect.ps3.ref.png | Bin .../test/reference/extend-reflect.ref.png | Bin .../extend-repeat-similar.base.argb32.ref.png | Bin .../extend-repeat-similar.base.rgb24.ref.png | Bin .../extend-repeat-similar.image16.ref.png | Bin .../extend-repeat-similar.ps2.ref.png | Bin .../extend-repeat-similar.ps3.ref.png | Bin .../reference/extend-repeat-similar.ref.png | Bin .../extend-repeat.base.argb32.ref.png | Bin .../extend-repeat.base.rgb24.ref.png | Bin .../reference/extend-repeat.image16.ref.png | Bin .../test/reference/extend-repeat.ps2.ref.png | Bin .../test/reference/extend-repeat.ps3.ref.png | Bin .../test/reference/extend-repeat.ref.png | Bin .../extended-blend-alpha-mask.argb32.ref.png | Bin ...ended-blend-alpha-mask.base.argb32.ref.png | Bin ...tended-blend-alpha-mask.base.rgb24.ref.png | Bin .../extended-blend-alpha-mask.rgb24.ref.png | Bin .../extended-blend-alpha.argb32.ref.png | Bin .../extended-blend-alpha.base.argb32.ref.png | Bin .../extended-blend-alpha.base.rgb24.ref.png | Bin .../extended-blend-alpha.image16.ref.png | Bin ...extended-blend-alpha.quartz.argb32.ref.png | Bin .../extended-blend-alpha.quartz.rgb24.ref.png | Bin .../extended-blend-alpha.rgb24.ref.png | Bin ...xtended-blend-alpha.svg12.argb32.xfail.png | Bin ...extended-blend-alpha.svg12.rgb24.xfail.png | Bin .../extended-blend-mask.argb32.ref.png | Bin .../extended-blend-mask.base.argb32.ref.png | Bin .../extended-blend-mask.base.rgb24.ref.png | Bin .../extended-blend-mask.rgb24.ref.png | Bin .../extended-blend-solid-alpha.argb32.ref.png | Bin ...nded-blend-solid-alpha.base.argb32.ref.png | Bin ...ended-blend-solid-alpha.base.rgb24.ref.png | Bin ...extended-blend-solid-alpha.image16.ref.png | Bin .../extended-blend-solid-alpha.rgb24.ref.png | Bin .../extended-blend-solid.argb32.ref.png | Bin .../extended-blend-solid.base.argb32.ref.png | Bin .../extended-blend-solid.base.rgb24.ref.png | Bin .../extended-blend-solid.image16.ref.png | Bin .../extended-blend-solid.rgb24.ref.png | Bin .../reference/extended-blend.argb32.ref.png | Bin .../extended-blend.base.argb32.ref.png | Bin .../extended-blend.base.rgb24.ref.png | Bin .../reference/extended-blend.image16.ref.png | Bin .../extended-blend.quartz.argb32.ref.png | Bin .../extended-blend.quartz.rgb24.ref.png | Bin .../reference/extended-blend.rgb24.ref.png | Bin .../extended-blend.svg12.argb32.xfail.png | Bin .../extended-blend.svg12.rgb24.xfail.png | Bin .../fallback-resolution.ppi144x144.ps.ref.png | Bin .../fallback-resolution.ppi144x144.ref.png | Bin .../fallback-resolution.ppi144x72.ps.ref.png | Bin .../fallback-resolution.ppi144x72.ref.png | Bin ...fallback-resolution.ppi288x288.pdf.ref.png | Bin .../fallback-resolution.ppi288x288.ps.ref.png | Bin ...fallback-resolution.ppi288x288.svg.ref.png | Bin .../fallback-resolution.ppi288x72.ps.ref.png | Bin .../fallback-resolution.ppi288x72.ref.png | Bin ...fallback-resolution.ppi576x576.pdf.ref.png | Bin .../fallback-resolution.ppi576x576.ps.ref.png | Bin ...fallback-resolution.ppi576x576.svg.ref.png | Bin .../fallback-resolution.ppi576x72.ps.ref.png | Bin .../fallback-resolution.ppi576x72.ref.png | Bin .../fallback-resolution.ppi72x144.ps.ref.png | Bin .../fallback-resolution.ppi72x144.ref.png | Bin .../fallback-resolution.ppi72x288.ps.ref.png | Bin .../fallback-resolution.ppi72x288.ref.png | Bin .../fallback-resolution.ppi72x576.ps.ref.png | Bin .../fallback-resolution.ppi72x576.ref.png | Bin .../fallback-resolution.ppi72x72.ref.png | Bin .../test/reference/fallback.argb32.ref.png | Bin .../reference/fallback.base.argb32.ref.png | Bin .../reference/fallback.base.rgb24.ref.png | Bin .../reference/fallback.image16.rgb24.ref.png | Bin .../reference/fallback.mask.argb32.ref.png | Bin .../reference/fallback.mask.rgb24.ref.png | Bin .../test/reference/fallback.rgb24.ref.png | Bin .../reference/fallback.traps.argb32.ref.png | Bin .../reference/fallback.traps.rgb24.ref.png | Bin .../fill-alpha-pattern.argb32.ref.png | Bin .../fill-alpha-pattern.base.argb32.ref.png | Bin .../fill-alpha-pattern.base.rgb24.ref.png | Bin .../fill-alpha-pattern.image16.ref.png | Bin .../reference/fill-alpha-pattern.pdf.ref.png | Bin .../fill-alpha-pattern.ps3.argb32.ref.png | Bin .../fill-alpha-pattern.quartz.ref.png | Bin .../fill-alpha-pattern.rgb24.ref.png | Bin .../fill-alpha-pattern.traps.argb32.ref.png | Bin .../fill-alpha-pattern.traps.rgb24.ref.png | Bin .../test/reference/fill-alpha.argb32.ref.png | Bin .../reference/fill-alpha.base.argb32.ref.png | Bin .../reference/fill-alpha.base.rgb24.ref.png | Bin .../test/reference/fill-alpha.image16.ref.png | Bin .../reference/fill-alpha.ps.argb32.ref.png | Bin .../test/reference/fill-alpha.quartz.ref.png | Bin .../test/reference/fill-alpha.rgb24.ref.png | Bin .../reference/fill-alpha.traps.argb32.ref.png | Bin .../reference/fill-alpha.traps.rgb24.ref.png | Bin .../fill-and-stroke-alpha-add.argb32.ref.png | Bin ...l-and-stroke-alpha-add.base.argb32.ref.png | Bin ...ll-and-stroke-alpha-add.base.rgb24.ref.png | Bin .../fill-and-stroke-alpha-add.image16.ref.png | Bin .../fill-and-stroke-alpha-add.quartz.ref.png | Bin .../fill-and-stroke-alpha-add.rgb24.ref.png | Bin .../fill-and-stroke-alpha-add.svg12.xfail.png | Bin ...-and-stroke-alpha-add.traps.argb32.ref.png | Bin ...l-and-stroke-alpha-add.traps.rgb24.ref.png | Bin .../fill-and-stroke-alpha.argb32.ref.png | Bin .../fill-and-stroke-alpha.base.argb32.ref.png | Bin .../fill-and-stroke-alpha.base.rgb24.ref.png | Bin .../fill-and-stroke-alpha.image16.ref.png | Bin .../fill-and-stroke-alpha.rgb24.ref.png | Bin ...fill-and-stroke-alpha.traps.argb32.ref.png | Bin .../fill-and-stroke-alpha.traps.rgb24.ref.png | Bin .../reference/fill-and-stroke.argb32.ref.png | Bin .../fill-and-stroke.base.argb32.ref.png | Bin .../fill-and-stroke.base.rgb24.ref.png | Bin .../reference/fill-and-stroke.image16.ref.png | Bin .../fill-and-stroke.ps.argb32.ref.png | Bin .../fill-and-stroke.ps.rgb24.ref.png | Bin .../fill-and-stroke.quartz.argb32.ref.png | Bin .../fill-and-stroke.quartz.rgb24.ref.png | Bin .../reference/fill-and-stroke.rgb24.ref.png | Bin .../fill-and-stroke.traps.argb32.ref.png | Bin .../fill-and-stroke.traps.rgb24.ref.png | Bin .../fill-degenerate-sort-order.argb32.ref.png | Bin ...-degenerate-sort-order.base.argb32.ref.png | Bin ...l-degenerate-sort-order.base.rgb24.ref.png | Bin ...fill-degenerate-sort-order.image16.ref.png | Bin ...-degenerate-sort-order.ps.argb32.xfail.png | Bin ...l-degenerate-sort-order.ps.rgb24.xfail.png | Bin ...egenerate-sort-order.quartz.argb32.ref.png | Bin ...degenerate-sort-order.quartz.rgb24.ref.png | Bin .../fill-degenerate-sort-order.rgb24.ref.png | Bin ...degenerate-sort-order.traps.argb32.ref.png | Bin ...-degenerate-sort-order.traps.rgb24.ref.png | Bin .../fill-disjoint.base.argb32.ref.png | Bin .../fill-disjoint.base.rgb24.ref.png | Bin .../test/reference/fill-disjoint.ref.png | Bin .../test/reference/fill-empty.argb32.ref.png | Bin .../reference/fill-empty.base.argb32.ref.png | Bin .../reference/fill-empty.base.rgb24.ref.png | Bin .../test/reference/fill-empty.rgb24.ref.png | Bin .../fill-empty.svg12.rgb24.xfail.png | Bin .../test/reference/fill-image.argb32.ref.png | Bin .../reference/fill-image.base.argb32.ref.png | Bin .../reference/fill-image.base.rgb24.ref.png | Bin .../test/reference/fill-image.image16.ref.png | Bin .../test/reference/fill-image.ps.ref.png | Bin .../test/reference/fill-image.quartz.ref.png | Bin .../test/reference/fill-image.rgb24.ref.png | Bin .../reference/fill-image.traps.argb32.ref.png | Bin .../reference/fill-image.traps.rgb24.ref.png | Bin .../reference/fill-missed-stop.argb32.ref.png | Bin .../fill-missed-stop.base.argb32.ref.png | Bin .../fill-missed-stop.base.rgb24.ref.png | Bin .../fill-missed-stop.pdf.argb32.ref.png | Bin .../fill-missed-stop.ps2.argb32.ref.png | Bin .../fill-missed-stop.ps2.rgb24.ref.png | Bin .../fill-missed-stop.ps3.argb32.ref.png | Bin .../fill-missed-stop.ps3.rgb24.ref.png | Bin .../reference/fill-missed-stop.rgb24.ref.png | Bin .../fill-missed-stop.traps.argb32.ref.png | Bin .../fill-missed-stop.traps.rgb24.ref.png | Bin .../test/reference/fill-rule.argb32.ref.png | Bin .../reference/fill-rule.base.argb32.ref.png | Bin .../reference/fill-rule.base.rgb24.ref.png | Bin .../test/reference/fill-rule.image16.ref.png | Bin .../reference/fill-rule.ps2.argb32.ref.png | Bin .../reference/fill-rule.ps2.rgb24.ref.png | Bin .../reference/fill-rule.ps3.argb32.ref.png | Bin .../reference/fill-rule.ps3.rgb24.ref.png | Bin .../reference/fill-rule.quartz.argb32.ref.png | Bin .../reference/fill-rule.quartz.rgb24.ref.png | Bin .../test/reference/fill-rule.rgb24.ref.png | Bin .../reference/fill-rule.traps.argb32.ref.png | Bin .../reference/fill-rule.traps.rgb24.ref.png | Bin .../fill-xlib-fallback.rgb24.ref.png | Bin .../reference/fill-xlib-window.rgb24.ref.png | Bin .../test/reference/fill-xlib.argb32.ref.png | Bin .../test/reference/fill-xlib.rgb24.ref.png | Bin .../filter-bilinear-extents.argb32.ref.png | Bin ...ilter-bilinear-extents.base.argb32.ref.png | Bin ...filter-bilinear-extents.base.rgb24.ref.png | Bin .../filter-bilinear-extents.image16.ref.png | Bin .../filter-bilinear-extents.pdf.xfail.png | Bin .../filter-bilinear-extents.ps2.ref.png | Bin .../filter-bilinear-extents.ps3.ref.png | Bin .../filter-bilinear-extents.quartz.xfail.png | Bin .../filter-bilinear-extents.rgb24.ref.png | Bin .../filter-nearest-offset.base.argb32.ref.png | Bin .../filter-nearest-offset.base.rgb24.ref.png | Bin .../filter-nearest-offset.gl.xfail.png | Bin .../filter-nearest-offset.pdf.xfail.png | Bin .../filter-nearest-offset.ps2.ref.png | Bin .../filter-nearest-offset.ps3.ref.png | Bin .../reference/filter-nearest-offset.ref.png | Bin .../filter-nearest-offset.svg.xfail.png | Bin ...er-nearest-transformed.base.argb32.ref.png | Bin ...ter-nearest-transformed.base.rgb24.ref.png | Bin .../filter-nearest-transformed.gl.xfail.png | Bin ...filter-nearest-transformed.image16.ref.png | Bin .../filter-nearest-transformed.pdf.xfail.png | Bin ...ilter-nearest-transformed.quartz.xfail.png | Bin .../filter-nearest-transformed.ref.png | Bin .../filter-nearest-transformed.svg.xfail.png | Bin .../finer-grained-fallbacks.argb32.ref.png | Bin ...iner-grained-fallbacks.base.argb32.ref.png | Bin ...finer-grained-fallbacks.base.rgb24.ref.png | Bin .../finer-grained-fallbacks.gl.argb32.ref.png | Bin .../finer-grained-fallbacks.image16.ref.png | Bin ...iner-grained-fallbacks.mask.argb32.ref.png | Bin ...finer-grained-fallbacks.mask.rgb24.ref.png | Bin ...finer-grained-fallbacks.ps2.argb32.ref.png | Bin .../finer-grained-fallbacks.ps2.ref.png | Bin .../finer-grained-fallbacks.ps2.rgb24.ref.png | Bin ...finer-grained-fallbacks.ps3.argb32.ref.png | Bin .../finer-grained-fallbacks.ps3.ref.png | Bin .../finer-grained-fallbacks.ps3.rgb24.ref.png | Bin ...er-grained-fallbacks.quartz.argb32.ref.png | Bin ...ner-grained-fallbacks.quartz.rgb24.ref.png | Bin .../finer-grained-fallbacks.rgb24.ref.png | Bin ...ner-grained-fallbacks.svg12.argb32.ref.png | Bin ...iner-grained-fallbacks.svg12.rgb24.ref.png | Bin ...ner-grained-fallbacks.traps.argb32.ref.png | Bin ...iner-grained-fallbacks.traps.rgb24.ref.png | Bin ...er-grained-fallbacks.xlib-fallback.ref.png | Bin .../font-matrix-translation.argb32.ref.png | Bin ...ont-matrix-translation.base.argb32.ref.png | Bin ...font-matrix-translation.base.rgb24.ref.png | Bin .../font-matrix-translation.image16.ref.png | Bin ...font-matrix-translation.ps2.argb32.ref.png | Bin .../font-matrix-translation.ps2.rgb24.ref.png | Bin ...font-matrix-translation.ps3.argb32.ref.png | Bin .../font-matrix-translation.ps3.rgb24.ref.png | Bin .../font-matrix-translation.quartz.ref.png | Bin .../font-matrix-translation.rgb24.ref.png | Bin .../font-matrix-translation.svg.ref.png | Bin .../font-matrix-translation.traps.ref.png | Bin .../ft-show-glyphs-positioning.argb32.ref.png | Bin ...how-glyphs-positioning.base.argb32.ref.png | Bin ...show-glyphs-positioning.base.rgb24.ref.png | Bin ...ft-show-glyphs-positioning.image16.ref.png | Bin .../ft-show-glyphs-positioning.pdf.ref.png | Bin .../ft-show-glyphs-positioning.ps2.ref.png | Bin .../ft-show-glyphs-positioning.ps3.ref.png | Bin .../ft-show-glyphs-positioning.rgb24.ref.png | Bin .../ft-show-glyphs-positioning.svg.ref.png | Bin .../ft-show-glyphs-positioning.traps.ref.png | Bin .../ft-show-glyphs-table.argb32.ref.png | Bin .../ft-show-glyphs-table.base.argb32.ref.png | Bin .../ft-show-glyphs-table.base.rgb24.ref.png | Bin .../ft-show-glyphs-table.image16.ref.png | Bin .../ft-show-glyphs-table.ps2.ref.png | Bin .../ft-show-glyphs-table.ps3.ref.png | Bin .../ft-show-glyphs-table.quartz.xfail.png | Bin .../ft-show-glyphs-table.rgb24.ref.png | Bin .../ft-show-glyphs-table.svg.ref.png | Bin .../ft-show-glyphs-table.traps.ref.png | Bin ...ft-text-antialias-none.base.argb32.ref.png | Bin .../ft-text-antialias-none.base.rgb24.ref.png | Bin .../ft-text-antialias-none.ps2.argb32.ref.png | Bin .../ft-text-antialias-none.ps3.argb32.ref.png | Bin .../reference/ft-text-antialias-none.ref.png | Bin ...-text-vertical-layout-type1.argb32.ref.png | Bin ...-vertical-layout-type1.base.argb32.ref.png | Bin ...t-vertical-layout-type1.base.rgb24.ref.png | Bin ...text-vertical-layout-type1.image16.ref.png | Bin .../ft-text-vertical-layout-type1.pdf.ref.png | Bin .../ft-text-vertical-layout-type1.ps.ref.png | Bin ...ext-vertical-layout-type1.quartz.xfail.png | Bin ...t-text-vertical-layout-type1.rgb24.ref.png | Bin .../ft-text-vertical-layout-type1.svg.ref.png | Bin ...vertical-layout-type1.traps.argb32.ref.png | Bin ...-vertical-layout-type1.traps.rgb24.ref.png | Bin .../ft-text-vertical-layout-type1.xfail.png | Bin ...-vertical-layout-type3.base.argb32.ref.png | Bin ...t-vertical-layout-type3.base.rgb24.ref.png | Bin ...text-vertical-layout-type3.image16.ref.png | Bin ...-vertical-layout-type3.mask.argb32.ref.png | Bin ...t-vertical-layout-type3.mask.rgb24.ref.png | Bin .../ft-text-vertical-layout-type3.pdf.ref.png | Bin .../ft-text-vertical-layout-type3.ps.ref.png | Bin ...-text-vertical-layout-type3.quartz.ref.png | Bin .../ft-text-vertical-layout-type3.ref.png | Bin .../ft-text-vertical-layout-type3.svg.ref.png | Bin ...vertical-layout-type3.traps.argb32.ref.png | Bin ...-vertical-layout-type3.traps.rgb24.ref.png | Bin .../get-group-target.base.argb32.ref.png | Bin .../get-group-target.base.rgb24.ref.png | Bin .../test/reference/get-group-target.ref.png | Bin .../gl-surface-source.argb32.ref.png | Bin .../gl-surface-source.base.argb32.ref.png | Bin .../gl-surface-source.base.rgb24.ref.png | Bin .../gl-surface-source.image16.ref.png | Bin .../reference/gl-surface-source.rgb24.ref.png | Bin .../glyph-cache-pressure.argb32.ref.png | Bin .../glyph-cache-pressure.base.argb32.ref.png | Bin .../glyph-cache-pressure.base.rgb24.ref.png | Bin .../glyph-cache-pressure.image16.ref.png | Bin .../glyph-cache-pressure.ps2.ref.png | Bin .../glyph-cache-pressure.ps3.ref.png | Bin .../glyph-cache-pressure.quartz.ref.png | Bin .../glyph-cache-pressure.rgb24.ref.png | Bin .../glyph-cache-pressure.traps.ref.png | Bin .../reference/gradient-alpha.argb32.ref.png | Bin .../gradient-alpha.base.argb32.ref.png | Bin .../gradient-alpha.base.rgb24.ref.png | Bin .../gradient-alpha.ps2.argb32.ref.png | Bin .../gradient-alpha.ps2.rgb24.ref.png | Bin .../gradient-alpha.ps3.argb32.ref.png | Bin .../gradient-alpha.ps3.rgb24.ref.png | Bin .../reference/gradient-alpha.rgb24.ref.png | Bin .../gradient-constant-alpha.argb32.ref.png | Bin ...radient-constant-alpha.base.argb32.ref.png | Bin ...gradient-constant-alpha.base.rgb24.ref.png | Bin .../gradient-constant-alpha.ps3.ref.png | Bin .../gradient-constant-alpha.ps3.rgb24.ref.png | Bin ...dient-constant-alpha.quartz.argb32.ref.png | Bin .../gradient-constant-alpha.rgb24.ref.png | Bin .../gradient-zero-stops-mask.argb32.ref.png | Bin ...adient-zero-stops-mask.base.argb32.ref.png | Bin ...radient-zero-stops-mask.base.rgb24.ref.png | Bin .../gradient-zero-stops-mask.rgb24.ref.png | Bin .../gradient-zero-stops.argb32.ref.png | Bin .../gradient-zero-stops.base.argb32.ref.png | Bin .../gradient-zero-stops.base.rgb24.ref.png | Bin .../gradient-zero-stops.rgb24.ref.png | Bin .../reference/group-clip.base.argb32.ref.png | Bin .../reference/group-clip.base.rgb24.ref.png | Bin .../test/reference/group-clip.image16.ref.png | Bin .../cairo}/test/reference/group-clip.ref.png | Bin .../reference/group-paint.base.argb32.ref.png | Bin .../reference/group-paint.base.rgb24.ref.png | Bin .../cairo}/test/reference/group-paint.ref.png | Bin .../reference/group-unaligned.argb32.ref.png | Bin .../group-unaligned.base.argb32.ref.png | Bin .../group-unaligned.base.rgb24.ref.png | Bin .../reference/group-unaligned.image16.ref.png | Bin .../test/reference/group-unaligned.ps.ref.png | Bin .../group-unaligned.ps.rgb24.xfail.png | Bin .../reference/group-unaligned.quartz.ref.png | Bin .../reference/group-unaligned.rgb24.ref.png | Bin .../group-unaligned.svg.argb32.xfail.png | Bin .../group-unaligned.svg.rgb24.xfail.png | Bin .../group-unaligned.traps.argb32.ref.png | Bin .../group-unaligned.traps.rgb24.ref.png | Bin .../group-unaligned.xlib-fallback.ref.png | Bin .../reference/halo-transform.argb32.ref.png | Bin .../halo-transform.base.argb32.ref.png | Bin .../halo-transform.base.rgb24.ref.png | Bin .../reference/halo-transform.image16.ref.png | Bin .../test/reference/halo-transform.ps.ref.png | Bin .../reference/halo-transform.quartz.ref.png | Bin .../reference/halo-transform.rgb24.ref.png | Bin .../reference/halo-transform.traps.ref.png | Bin .../test/reference/halo.base.argb32.ref.png | Bin .../test/reference/halo.base.rgb24.ref.png | Bin .../test/reference/halo.image16.ref.png | Bin .../test/reference/halo.mask.argb32.ref.png | Bin .../test/reference/halo.mask.rgb24.ref.png | Bin .../cairo}/test/reference/halo.ps.ref.png | Bin .../cairo}/test/reference/halo.quartz.ref.png | Bin .../cairo}/test/reference/halo.ref.png | Bin .../cairo}/test/reference/halo.traps.ref.png | Bin .../reference/hatchings.base.argb32.ref.png | Bin .../reference/hatchings.base.rgb24.ref.png | Bin .../reference/hatchings.mask.argb32.ref.png | Bin .../reference/hatchings.mask.rgb24.ref.png | Bin .../cairo}/test/reference/hatchings.ref.png | Bin .../reference/hatchings.traps.argb32.ref.png | Bin .../reference/hatchings.traps.rgb24.ref.png | Bin .../reference/horizontal-clip.argb32.ref.png | Bin .../horizontal-clip.base.argb32.ref.png | Bin .../horizontal-clip.base.rgb24.ref.png | Bin .../reference/horizontal-clip.rgb24.ref.png | Bin .../test/reference/huge-linear.argb32.ref.png | Bin .../reference/huge-linear.base.argb32.ref.png | Bin .../reference/huge-linear.base.rgb24.ref.png | Bin .../reference/huge-linear.image16.ref.png | Bin .../test/reference/huge-linear.pdf.ref.png | Bin .../test/reference/huge-linear.ps3.ref.png | Bin .../test/reference/huge-linear.quartz.ref.png | Bin .../test/reference/huge-linear.rgb24.ref.png | Bin .../reference/huge-radial.base.argb32.ref.png | Bin .../reference/huge-radial.base.rgb24.ref.png | Bin .../reference/huge-radial.image16.ref.png | Bin .../reference/huge-radial.pdf.argb32.ref.png | Bin .../reference/huge-radial.pdf.rgb24.ref.png | Bin .../test/reference/huge-radial.ps3.ref.png | Bin .../test/reference/huge-radial.quartz.ref.png | Bin .../cairo}/test/reference/huge-radial.ref.png | Bin ...age-bug-710072-aligned.base.argb32.ref.png | Bin ...mage-bug-710072-aligned.base.rgb24.ref.png | Bin .../image-bug-710072-aligned.ref.png | Bin ...e-bug-710072-unaligned.base.argb32.ref.png | Bin ...ge-bug-710072-unaligned.base.rgb24.ref.png | Bin .../image-bug-710072-unaligned.ref.png | Bin ...-bug-710072-unaligned.traps.argb32.ref.png | Bin ...e-bug-710072-unaligned.traps.rgb24.ref.png | Bin ...0072-unaligned.xlib-fallback.rgb24.ref.png | Bin ...710072-unaligned.xlib-window.rgb24.ref.png | Bin .../image-surface-source.argb32.ref.png | Bin .../image-surface-source.base.argb32.ref.png | Bin .../image-surface-source.base.rgb24.ref.png | Bin .../image-surface-source.image16.ref.png | Bin .../image-surface-source.ps2.ref.png | Bin .../image-surface-source.ps3.ref.png | Bin .../image-surface-source.rgb24.ref.png | Bin ...mage-surface-source.svg12.argb32.xfail.png | Bin ...image-surface-source.svg12.rgb24.xfail.png | Bin .../implicit-close.base.argb32.ref.png | Bin .../implicit-close.base.rgb24.ref.png | Bin .../test/reference/implicit-close.ps.ref.png | Bin .../test/reference/implicit-close.ref.png | Bin .../implicit-close.traps.argb32.ref.png | Bin .../implicit-close.traps.rgb24.ref.png | Bin .../reference/infinite-join.argb32.ref.png | Bin .../infinite-join.base.argb32.ref.png | Bin .../infinite-join.base.rgb24.ref.png | Bin .../test/reference/infinite-join.ps2.ref.png | Bin .../test/reference/infinite-join.ps3.ref.png | Bin .../reference/infinite-join.rgb24.ref.png | Bin .../infinite-join.traps.argb32.ref.png | Bin .../infinite-join.traps.rgb24.ref.png | Bin .../inverse-text.base.argb32.ref.png | Bin .../reference/inverse-text.base.rgb24.ref.png | Bin .../inverse-text.mask.argb32.ref.png | Bin .../reference/inverse-text.mask.rgb24.ref.png | Bin .../test/reference/inverse-text.traps.ref.png | Bin .../reference/inverted-clip.base.xfail.png | Bin .../reference/inverted-clip.traps.xfail.png | Bin .../test/reference/inverted-clip.xfail.png | Bin .../test/reference/joins-loop.argb32.ref.png | Bin .../reference/joins-loop.base.argb32.ref.png | Bin .../reference/joins-loop.base.rgb24.ref.png | Bin .../test/reference/joins-loop.rgb24.ref.png | Bin .../reference/joins-loop.traps.argb32.ref.png | Bin .../reference/joins-loop.traps.rgb24.ref.png | Bin .../joins-retrace.base.argb32.ref.png | Bin .../joins-retrace.base.rgb24.ref.png | Bin .../joins-retrace.mask.argb32.ref.png | Bin .../joins-retrace.mask.rgb24.ref.png | Bin .../test/reference/joins-retrace.ref.png | Bin .../joins-retrace.traps.argb32.ref.png | Bin .../joins-retrace.traps.rgb24.ref.png | Bin .../test/reference/joins-star.argb32.ref.png | Bin .../reference/joins-star.base.argb32.ref.png | Bin .../reference/joins-star.base.rgb24.ref.png | Bin .../test/reference/joins-star.rgb24.ref.png | Bin .../reference/joins-star.traps.argb32.ref.png | Bin .../reference/joins-star.traps.rgb24.ref.png | Bin .../test/reference/joins.base.argb32.ref.png | Bin .../test/reference/joins.base.rgb24.ref.png | Bin .../test/reference/joins.image16.ref.png | Bin .../test/reference/joins.mask.argb32.ref.png | Bin .../test/reference/joins.mask.rgb24.ref.png | Bin .../cairo}/test/reference/joins.ps.ref.png | Bin .../test/reference/joins.quartz.ref.png | Bin .../cairo}/test/reference/joins.ref.png | Bin .../test/reference/joins.traps.argb32.ref.png | Bin .../test/reference/joins.traps.rgb24.ref.png | Bin .../reference/large-clip.base.argb32.ref.png | Bin .../reference/large-clip.base.rgb24.ref.png | Bin .../cairo}/test/reference/large-clip.ref.png | Bin .../reference/large-font.base.argb32.ref.png | Bin .../reference/large-font.base.rgb24.ref.png | Bin .../test/reference/large-font.image16.ref.png | Bin .../cairo}/test/reference/large-font.ref.png | Bin .../large-source-roi.base.argb32.ref.png | Bin .../large-source-roi.base.rgb24.ref.png | Bin .../test/reference/large-source-roi.ref.png | Bin .../large-source.base.argb32.ref.png | Bin .../reference/large-source.base.rgb24.ref.png | Bin .../test/reference/large-source.ref.png | Bin .../large-twin-antialias-mixed.argb32.ref.png | Bin ...e-twin-antialias-mixed.base.argb32.ref.png | Bin ...ge-twin-antialias-mixed.base.rgb24.ref.png | Bin ...large-twin-antialias-mixed.image16.ref.png | Bin .../large-twin-antialias-mixed.rgb24.ref.png | Bin ...-twin-antialias-mixed.traps.argb32.ref.png | Bin ...e-twin-antialias-mixed.traps.rgb24.ref.png | Bin .../reference/leaky-dash.base.argb32.ref.png | Bin .../reference/leaky-dash.base.rgb24.ref.png | Bin .../reference/leaky-dash.ps2.argb32.ref.png | Bin .../reference/leaky-dash.ps2.rgb24.ref.png | Bin .../reference/leaky-dash.ps3.argb32.ref.png | Bin .../reference/leaky-dash.ps3.rgb24.ref.png | Bin .../test/reference/leaky-dash.quartz.ref.png | Bin .../cairo}/test/reference/leaky-dash.ref.png | Bin ...leaky-dashed-rectangle.base.argb32.ref.png | Bin .../leaky-dashed-rectangle.base.rgb24.ref.png | Bin .../leaky-dashed-rectangle.image16.ref.png | Bin .../leaky-dashed-rectangle.pdf.ref.png | Bin .../leaky-dashed-rectangle.ps.ref.png | Bin .../leaky-dashed-rectangle.quartz.ref.png | Bin .../reference/leaky-dashed-rectangle.ref.png | Bin ...eaky-dashed-rectangle.traps.argb32.ref.png | Bin ...leaky-dashed-rectangle.traps.rgb24.ref.png | Bin .../leaky-dashed-stroke.argb32.ref.png | Bin .../leaky-dashed-stroke.base.argb32.ref.png | Bin .../leaky-dashed-stroke.base.rgb24.ref.png | Bin .../leaky-dashed-stroke.image16.ref.png | Bin .../reference/leaky-dashed-stroke.ps.ref.png | Bin .../leaky-dashed-stroke.quartz.ref.png | Bin .../leaky-dashed-stroke.rgb24.ref.png | Bin .../leaky-dashed-stroke.traps.argb32.ref.png | Bin .../leaky-dashed-stroke.traps.rgb24.ref.png | Bin .../reference/leaky-polygon.argb32.ref.png | Bin .../leaky-polygon.base.argb32.ref.png | Bin .../leaky-polygon.base.rgb24.ref.png | Bin .../reference/leaky-polygon.image16.ref.png | Bin .../test/reference/leaky-polygon.ps.ref.png | Bin .../reference/leaky-polygon.rgb24.ref.png | Bin .../leaky-polygon.traps.argb32.ref.png | Bin .../leaky-polygon.traps.rgb24.ref.png | Bin ...h-large-overlap-dashed.base.argb32.ref.png | Bin ...th-large-overlap-dashed.base.rgb24.ref.png | Bin ...h-large-overlap-dashed.mask.argb32.ref.png | Bin ...th-large-overlap-dashed.mask.rgb24.ref.png | Bin .../line-width-large-overlap-dashed.ref.png | Bin ...-large-overlap-dashed.traps.argb32.ref.png | Bin ...h-large-overlap-dashed.traps.rgb24.ref.png | Bin ...-large-overlap-flipped.base.argb32.ref.png | Bin ...h-large-overlap-flipped.base.rgb24.ref.png | Bin .../line-width-large-overlap-flipped.ref.png | Bin ...-large-overlap-flopped.base.argb32.ref.png | Bin ...h-large-overlap-flopped.base.rgb24.ref.png | Bin .../line-width-large-overlap-flopped.ref.png | Bin ...h-large-overlap-offset.base.argb32.ref.png | Bin ...th-large-overlap-offset.base.rgb24.ref.png | Bin .../line-width-large-overlap-offset.ref.png | Bin ...width-large-overlap-rotated.argb32.ref.png | Bin ...-large-overlap-rotated.base.argb32.ref.png | Bin ...h-large-overlap-rotated.base.rgb24.ref.png | Bin ...-width-large-overlap-rotated.rgb24.ref.png | Bin ...-width-large-overlap-rotated.traps.ref.png | Bin ...ne-width-large-overlap.base.argb32.ref.png | Bin ...ine-width-large-overlap.base.rgb24.ref.png | Bin .../line-width-large-overlap.ref.png | Bin ...e-width-overlap-dashed.base.argb32.ref.png | Bin ...ne-width-overlap-dashed.base.rgb24.ref.png | Bin ...e-width-overlap-dashed.mask.argb32.ref.png | Bin ...ne-width-overlap-dashed.mask.rgb24.ref.png | Bin .../line-width-overlap-dashed.ref.png | Bin ...-width-overlap-dashed.traps.argb32.ref.png | Bin ...e-width-overlap-dashed.traps.rgb24.ref.png | Bin ...-width-overlap-flipped.base.argb32.ref.png | Bin ...e-width-overlap-flipped.base.rgb24.ref.png | Bin .../line-width-overlap-flipped.ref.png | Bin ...-width-overlap-flopped.base.argb32.ref.png | Bin ...e-width-overlap-flopped.base.rgb24.ref.png | Bin .../line-width-overlap-flopped.ref.png | Bin ...e-width-overlap-offset.base.argb32.ref.png | Bin ...ne-width-overlap-offset.base.rgb24.ref.png | Bin .../line-width-overlap-offset.ref.png | Bin .../line-width-overlap-offset.traps.ref.png | Bin .../line-width-overlap-rotated.argb32.ref.png | Bin ...-width-overlap-rotated.base.argb32.ref.png | Bin ...e-width-overlap-rotated.base.rgb24.ref.png | Bin .../line-width-overlap-rotated.rgb24.ref.png | Bin ...width-overlap-rotated.traps.argb32.ref.png | Bin ...-width-overlap-rotated.traps.rgb24.ref.png | Bin .../line-width-overlap.base.argb32.ref.png | Bin .../line-width-overlap.base.rgb24.ref.png | Bin .../test/reference/line-width-overlap.ref.png | Bin .../reference/line-width-scale.argb32.ref.png | Bin .../line-width-scale.base.argb32.ref.png | Bin .../line-width-scale.base.rgb24.ref.png | Bin .../line-width-scale.image16.ref.png | Bin .../reference/line-width-scale.ps2.ref.png | Bin .../reference/line-width-scale.ps3.ref.png | Bin .../reference/line-width-scale.quartz.ref.png | Bin .../reference/line-width-scale.rgb24.ref.png | Bin .../line-width-scale.traps.argb32.ref.png | Bin .../line-width-scale.traps.rgb24.ref.png | Bin .../line-width-tolerance.argb32.ref.png | Bin .../line-width-tolerance.base.argb32.ref.png | Bin .../line-width-tolerance.base.rgb24.ref.png | Bin .../line-width-tolerance.rgb24.ref.png | Bin .../line-width-tolerance.traps.argb32.ref.png | Bin .../line-width-tolerance.traps.rgb24.ref.png | Bin .../test/reference/line-width.argb32.ref.png | Bin .../reference/line-width.base.argb32.ref.png | Bin .../reference/line-width.base.rgb24.ref.png | Bin .../test/reference/line-width.rgb24.ref.png | Bin .../reference/line-width.traps.argb32.ref.png | Bin .../reference/line-width.traps.rgb24.ref.png | Bin ...linear-gradient-extend.base.argb32.ref.png | Bin .../linear-gradient-extend.base.rgb24.ref.png | Bin .../reference/linear-gradient-extend.ref.png | Bin .../linear-gradient-large.base.argb32.ref.png | Bin .../linear-gradient-large.base.rgb24.ref.png | Bin .../linear-gradient-large.quartz.ref.png | Bin .../reference/linear-gradient-large.ref.png | Bin .../linear-gradient-one-stop.argb32.ref.png | Bin ...near-gradient-one-stop.base.argb32.ref.png | Bin ...inear-gradient-one-stop.base.rgb24.ref.png | Bin .../linear-gradient-one-stop.rgb24.ref.png | Bin .../linear-gradient-reflect.argb32.ref.png | Bin ...inear-gradient-reflect.base.argb32.ref.png | Bin ...linear-gradient-reflect.base.rgb24.ref.png | Bin .../linear-gradient-reflect.image16.ref.png | Bin ...linear-gradient-reflect.pdf.argb32.ref.png | Bin .../linear-gradient-reflect.pdf.rgb24.ref.png | Bin .../linear-gradient-reflect.ps3.ref.png | Bin .../linear-gradient-reflect.quartz.ref.png | Bin .../linear-gradient-reflect.rgb24.ref.png | Bin .../linear-gradient-subset.argb32.ref.png | Bin ...linear-gradient-subset.base.argb32.ref.png | Bin .../linear-gradient-subset.base.rgb24.ref.png | Bin .../linear-gradient-subset.image16.ref.png | Bin .../linear-gradient-subset.ps3.ref.png | Bin .../linear-gradient-subset.quartz.ref.png | Bin .../linear-gradient-subset.rgb24.ref.png | Bin ...inear-gradient-subset.traps.argb32.ref.png | Bin ...linear-gradient-subset.traps.rgb24.ref.png | Bin .../reference/linear-gradient.argb32.ref.png | Bin .../linear-gradient.base.argb32.ref.png | Bin .../linear-gradient.base.rgb24.ref.png | Bin .../reference/linear-gradient.image16.ref.png | Bin .../reference/linear-gradient.ps3.ref.png | Bin .../reference/linear-gradient.quartz.ref.png | Bin .../reference/linear-gradient.rgb24.ref.png | Bin .../linear-gradient.traps.argb32.ref.png | Bin .../linear-gradient.traps.rgb24.ref.png | Bin .../linear-step-function.base.argb32.ref.png | Bin .../linear-step-function.base.rgb24.ref.png | Bin .../linear-step-function.mask.argb32.ref.png | Bin .../linear-step-function.mask.rgb24.ref.png | Bin .../linear-step-function.traps.argb32.ref.png | Bin .../linear-step-function.traps.rgb24.ref.png | Bin .../reference/linear-step-function.xfail.png | Bin .../linear-uniform.base.argb32.ref.png | Bin .../linear-uniform.base.rgb24.ref.png | Bin .../reference/linear-uniform.image16.ref.png | Bin .../test/reference/linear-uniform.ref.png | Bin .../long-dashed-lines.argb32.ref.png | Bin .../long-dashed-lines.base.argb32.ref.png | Bin .../long-dashed-lines.base.rgb24.ref.png | Bin .../long-dashed-lines.image16.ref.png | Bin .../reference/long-dashed-lines.ps2.ref.png | Bin .../reference/long-dashed-lines.ps3.ref.png | Bin .../long-dashed-lines.quartz.ref.png | Bin .../reference/long-dashed-lines.rgb24.ref.png | Bin .../long-dashed-lines.traps.argb32.ref.png | Bin .../long-dashed-lines.traps.rgb24.ref.png | Bin .../reference/long-lines.base.argb32.ref.png | Bin .../reference/long-lines.base.rgb24.ref.png | Bin .../reference/long-lines.mask.argb32.ref.png | Bin .../reference/long-lines.mask.rgb24.ref.png | Bin .../reference/long-lines.traps.argb32.ref.png | Bin .../reference/long-lines.traps.rgb24.ref.png | Bin .../map-all-to-image.base.argb32.ref.png | Bin .../map-all-to-image.base.rgb24.ref.png | Bin .../test/reference/map-all-to-image.ref.png | Bin .../map-all-to-xlib-fallback.rgb24.ref.png | Bin .../map-all-to-xlib-window.rgb24.ref.png | Bin .../reference/map-all-to-xlib.argb32.ref.png | Bin .../reference/map-all-to-xlib.rgb24.ref.png | Bin .../map-bit-to-image.base.argb32.ref.png | Bin .../map-bit-to-image.base.rgb24.ref.png | Bin .../test/reference/map-bit-to-image.ref.png | Bin .../map-bit-to-xlib-fallback.rgb24.ref.png | Bin .../map-bit-to-xlib-window.rgb24.ref.png | Bin .../reference/map-bit-to-xlib.argb32.ref.png | Bin .../reference/map-bit-to-xlib.rgb24.ref.png | Bin .../map-to-image-fill.base.argb32.ref.png | Bin .../map-to-image-fill.base.rgb24.ref.png | Bin .../test/reference/map-to-image-fill.ref.png | Bin .../test/reference/mask-alpha.argb32.ref.png | Bin .../reference/mask-alpha.base.argb32.ref.png | Bin .../reference/mask-alpha.base.rgb24.ref.png | Bin .../test/reference/mask-alpha.image16.ref.png | Bin .../test/reference/mask-alpha.ps.ref.png | Bin .../mask-alpha.quartz.argb32.ref.png | Bin .../test/reference/mask-alpha.rgb24.ref.png | Bin .../reference/mask-alpha.svg.rgb24.xfail.png | Bin .../reference/mask-alpha.traps.argb32.ref.png | Bin .../reference/mask-alpha.traps.rgb24.ref.png | Bin .../test/reference/mask-ctm.argb32.ref.png | Bin .../reference/mask-ctm.base.argb32.ref.png | Bin .../reference/mask-ctm.base.rgb24.ref.png | Bin .../test/reference/mask-ctm.rgb24.ref.png | Bin .../test/reference/mask-glyphs.gl.ref.png | Bin .../reference/mask-glyphs.image16.ref.png | Bin .../test/reference/mask-glyphs.pdf.ref.png | Bin .../cairo}/test/reference/mask-glyphs.ref.png | Bin .../test/reference/mask-glyphs.svg.ref.png | Bin .../reference/mask-surface-ctm.argb32.ref.png | Bin .../mask-surface-ctm.base.argb32.ref.png | Bin .../mask-surface-ctm.base.rgb24.ref.png | Bin .../reference/mask-surface-ctm.rgb24.ref.png | Bin .../mask-transformed-image.argb32.ref.png | Bin ...mask-transformed-image.base.argb32.ref.png | Bin .../mask-transformed-image.base.rgb24.ref.png | Bin .../mask-transformed-image.image16.ref.png | Bin .../mask-transformed-image.pdf.ref.png | Bin .../mask-transformed-image.quartz.ref.png | Bin .../mask-transformed-image.rgb24.ref.png | Bin .../mask-transformed-similar.argb32.ref.png | Bin ...sk-transformed-similar.base.argb32.ref.png | Bin ...ask-transformed-similar.base.rgb24.ref.png | Bin .../mask-transformed-similar.image16.ref.png | Bin .../mask-transformed-similar.pdf.ref.png | Bin .../mask-transformed-similar.quartz.ref.png | Bin ...mask-transformed-similar.recording.ref.png | Bin .../mask-transformed-similar.rgb24.ref.png | Bin .../mask-transformed-similar.svg.ref.png | Bin ...sk-transformed-xlib-fallback.rgb24.ref.png | Bin ...mask-transformed-xlib-window.rgb24.ref.png | Bin .../mask-transformed-xlib.argb32.ref.png | Bin .../mask-transformed-xlib.rgb24.ref.png | Bin .../cairo}/test/reference/mask.argb32.ref.png | Bin .../test/reference/mask.base.argb32.ref.png | Bin .../test/reference/mask.base.rgb24.ref.png | Bin .../test/reference/mask.image16.ref.png | Bin .../test/reference/mask.pdf.argb32.ref.png | Bin .../test/reference/mask.pdf.rgb24.ref.png | Bin .../test/reference/mask.quartz.argb32.ref.png | Bin .../test/reference/mask.quartz.rgb24.ref.png | Bin .../cairo}/test/reference/mask.rgb24.ref.png | Bin .../test/reference/mask.svg.argb32.xfail.png | Bin .../test/reference/mask.svg.rgb24.xfail.png | Bin .../test/reference/mask.traps.argb32.ref.png | Bin .../test/reference/mask.traps.rgb24.ref.png | Bin .../mesh-pattern-accuracy.base.argb32.ref.png | Bin .../mesh-pattern-accuracy.base.rgb24.ref.png | Bin .../mesh-pattern-accuracy.image16.ref.png | Bin .../reference/mesh-pattern-accuracy.ref.png | Bin .../mesh-pattern-conical.base.argb32.ref.png | Bin .../mesh-pattern-conical.base.rgb24.ref.png | Bin .../mesh-pattern-conical.image16.ref.png | Bin .../reference/mesh-pattern-conical.ref.png | Bin ...pattern-control-points.base.argb32.ref.png | Bin ...-pattern-control-points.base.rgb24.ref.png | Bin ...esh-pattern-control-points.image16.ref.png | Bin .../mesh-pattern-control-points.ref.png | Bin .../mesh-pattern-fold.base.argb32.ref.png | Bin .../mesh-pattern-fold.base.rgb24.ref.png | Bin .../mesh-pattern-fold.image16.ref.png | Bin .../test/reference/mesh-pattern-fold.ref.png | Bin .../mesh-pattern-overlap.base.argb32.ref.png | Bin .../mesh-pattern-overlap.base.rgb24.ref.png | Bin .../mesh-pattern-overlap.image16.ref.png | Bin .../reference/mesh-pattern-overlap.ref.png | Bin ...sh-pattern-transformed.base.argb32.ref.png | Bin ...esh-pattern-transformed.base.rgb24.ref.png | Bin .../mesh-pattern-transformed.image16.ref.png | Bin .../mesh-pattern-transformed.ref.png | Bin .../mesh-pattern.base.argb32.ref.png | Bin .../reference/mesh-pattern.base.rgb24.ref.png | Bin .../reference/mesh-pattern.image16.ref.png | Bin .../test/reference/mesh-pattern.ref.png | Bin .../reference/mime-data.base.argb32.ref.png | Bin .../reference/mime-data.base.rgb24.ref.png | Bin .../test/reference/mime-data.pdf.ref.png | Bin .../test/reference/mime-data.ps.ref.png | Bin .../cairo}/test/reference/mime-data.ref.png | Bin .../test/reference/mime-data.script.ref.png | Bin .../test/reference/mime-data.svg.ref.png | Bin .../reference/miter-precision.argb32.ref.png | Bin .../miter-precision.base.argb32.ref.png | Bin .../miter-precision.base.rgb24.ref.png | Bin .../reference/miter-precision.ps2.ref.png | Bin .../reference/miter-precision.ps3.ref.png | Bin .../reference/miter-precision.rgb24.ref.png | Bin .../miter-precision.traps.argb32.ref.png | Bin .../miter-precision.traps.rgb24.ref.png | Bin .../move-to-show-surface.base.argb32.ref.png | Bin .../move-to-show-surface.base.rgb24.ref.png | Bin .../reference/move-to-show-surface.ref.png | Bin .../negative-stride-image.base.argb32.ref.png | Bin .../negative-stride-image.base.rgb24.ref.png | Bin .../negative-stride-image.image16.ref.png | Bin .../negative-stride-image.ps.ref.png | Bin .../reference/negative-stride-image.ref.png | Bin .../reference/new-sub-path.argb32.ref.png | Bin .../new-sub-path.base.argb32.ref.png | Bin .../reference/new-sub-path.base.rgb24.ref.png | Bin .../reference/new-sub-path.pdf.argb32.ref.png | Bin .../reference/new-sub-path.ps2.argb32.ref.png | Bin .../reference/new-sub-path.ps2.rgb24.ref.png | Bin .../reference/new-sub-path.ps3.argb32.ref.png | Bin .../reference/new-sub-path.ps3.rgb24.ref.png | Bin .../reference/new-sub-path.quartz.ref.png | Bin .../test/reference/new-sub-path.rgb24.ref.png | Bin .../new-sub-path.traps.argb32.ref.png | Bin .../new-sub-path.traps.rgb24.ref.png | Bin .../test/reference/nil-surface.argb32.ref.png | Bin .../reference/nil-surface.base.argb32.ref.png | Bin .../reference/nil-surface.base.rgb24.ref.png | Bin .../test/reference/nil-surface.rgb24.ref.png | Bin .../operator-alpha-alpha.base.argb32.ref.png | Bin .../operator-alpha-alpha.base.rgb24.ref.png | Bin .../operator-alpha-alpha.image16.ref.png | Bin .../operator-alpha-alpha.pdf.xfail.png | Bin .../operator-alpha-alpha.ps.xfail.png | Bin .../reference/operator-alpha-alpha.ref.png | Bin .../operator-alpha-alpha.svg.xfail.png | Bin .../operator-alpha-alpha.traps.argb32.ref.png | Bin .../operator-alpha-alpha.traps.rgb24.ref.png | Bin .../reference/operator-alpha.argb32.ref.png | Bin .../operator-alpha.base.argb32.ref.png | Bin .../operator-alpha.base.rgb24.ref.png | Bin .../reference/operator-alpha.rgb24.ref.png | Bin .../operator-alpha.svg12.argb32.xfail.png | Bin .../operator-alpha.svg12.rgb24.xfail.png | Bin .../reference/operator-clear.argb32.ref.png | Bin .../operator-clear.base.argb32.ref.png | Bin .../operator-clear.base.rgb24.ref.png | Bin .../operator-clear.mask.rgb24.ref.png | Bin .../operator-clear.ps2.argb32.ref.png | Bin .../operator-clear.ps3.argb32.ref.png | Bin .../operator-clear.quartz.argb32.ref.png | Bin .../operator-clear.quartz.rgb24.ref.png | Bin .../reference/operator-clear.rgb24.ref.png | Bin .../operator-clear.svg12.argb32.xfail.png | Bin .../operator-clear.svg12.rgb24.xfail.png | Bin .../operator-clear.traps.argb32.ref.png | Bin .../operator-clear.traps.rgb24.ref.png | Bin .../reference/operator-source.argb32.ref.png | Bin .../operator-source.base.argb32.ref.png | Bin .../operator-source.base.rgb24.ref.png | Bin .../reference/operator-source.image16.ref.png | Bin .../operator-source.mask.argb32.ref.png | Bin .../operator-source.mask.rgb24.ref.png | Bin .../reference/operator-source.rgb24.ref.png | Bin .../operator-source.traps.argb32.ref.png | Bin .../operator-source.traps.rgb24.ref.png | Bin .../operator-source.xlib-fallback.ref.png | Bin .../test/reference/operator.argb32.ref.png | Bin .../reference/operator.base.argb32.ref.png | Bin .../reference/operator.base.rgb24.ref.png | Bin .../test/reference/operator.rgb24.ref.png | Bin .../reference/operator.svg12.argb32.xfail.png | Bin .../reference/operator.svg12.rgb24.xfail.png | Bin .../test/reference/outline-tolerance.ref.png | Bin .../over-above-source.argb32.ref.png | Bin .../over-above-source.base.argb32.ref.png | Bin .../over-above-source.base.rgb24.ref.png | Bin .../over-above-source.ps2.argb32.ref.png | Bin .../over-above-source.ps3.argb32.ref.png | Bin .../over-above-source.quartz.argb32.ref.png | Bin .../over-above-source.quartz.rgb24.ref.png | Bin .../reference/over-above-source.rgb24.ref.png | Bin .../over-above-source.svg12.rgb24.xfail.png | Bin .../over-above-source.traps.argb32.ref.png | Bin .../over-above-source.traps.rgb24.ref.png | Bin .../over-around-source.argb32.ref.png | Bin .../over-around-source.base.argb32.ref.png | Bin .../over-around-source.base.rgb24.ref.png | Bin .../over-around-source.image16.ref.png | Bin .../over-around-source.pdf.argb32.ref.png | Bin .../over-around-source.ps2.argb32.ref.png | Bin .../over-around-source.ps2.rgb24.ref.png | Bin .../over-around-source.ps3.argb32.ref.png | Bin .../over-around-source.ps3.rgb24.ref.png | Bin .../over-around-source.quartz.argb32.ref.png | Bin .../over-around-source.rgb24.ref.png | Bin .../over-around-source.svg12.argb32.xfail.png | Bin .../over-around-source.svg12.rgb24.xfail.png | Bin .../over-around-source.traps.argb32.ref.png | Bin .../over-around-source.traps.rgb24.ref.png | Bin .../over-below-source.argb32.ref.png | Bin .../over-below-source.base.argb32.ref.png | Bin .../over-below-source.base.rgb24.ref.png | Bin .../over-below-source.pdf.argb32.ref.png | Bin .../over-below-source.ps2.argb32.ref.png | Bin .../over-below-source.ps2.rgb24.ref.png | Bin .../over-below-source.ps3.argb32.ref.png | Bin .../over-below-source.ps3.rgb24.ref.png | Bin .../reference/over-below-source.rgb24.ref.png | Bin .../over-below-source.svg12.argb32.xfail.png | Bin .../over-below-source.svg12.rgb24.xfail.png | Bin .../over-below-source.traps.argb32.ref.png | Bin .../over-below-source.traps.rgb24.ref.png | Bin .../over-between-source.argb32.ref.png | Bin .../over-between-source.base.argb32.ref.png | Bin .../over-between-source.base.rgb24.ref.png | Bin .../over-between-source.ps2.argb32.ref.png | Bin .../over-between-source.ps3.argb32.ref.png | Bin .../over-between-source.quartz.argb32.ref.png | Bin .../over-between-source.rgb24.ref.png | Bin ...over-between-source.svg12.argb32.xfail.png | Bin .../over-between-source.svg12.rgb24.xfail.png | Bin .../over-between-source.traps.argb32.ref.png | Bin .../over-between-source.traps.rgb24.ref.png | Bin .../overlapping-boxes.argb32.ref.png | Bin .../overlapping-boxes.base.argb32.ref.png | Bin .../overlapping-boxes.base.rgb24.ref.png | Bin .../reference/overlapping-boxes.rgb24.ref.png | Bin .../overlapping-boxes.traps.argb32.ref.png | Bin .../overlapping-boxes.traps.rgb24.ref.png | Bin .../overlapping-dash-caps.base.argb32.ref.png | Bin .../overlapping-dash-caps.base.rgb24.ref.png | Bin .../overlapping-dash-caps.mask.argb32.ref.png | Bin .../overlapping-dash-caps.mask.rgb24.ref.png | Bin .../reference/overlapping-dash-caps.ref.png | Bin ...overlapping-dash-caps.traps.argb32.ref.png | Bin .../overlapping-dash-caps.traps.rgb24.ref.png | Bin .../overlapping-glyphs.argb32.ref.png | Bin .../overlapping-glyphs.base.argb32.ref.png | Bin .../overlapping-glyphs.base.rgb24.ref.png | Bin .../overlapping-glyphs.pdf.argb32.xfail.png | Bin .../overlapping-glyphs.pdf.rgb24.xfail.png | Bin .../overlapping-glyphs.quartz.argb32.ref.png | Bin .../overlapping-glyphs.quartz.rgb24.ref.png | Bin .../overlapping-glyphs.rgb24.ref.png | Bin .../overlapping-glyphs.svg.argb32.ref.png | Bin .../overlapping-glyphs.svg.rgb24.ref.png | Bin .../overlapping-glyphs.traps.argb32.ref.png | Bin .../overlapping-glyphs.traps.rgb24.ref.png | Bin .../paint-clip-fill-aa.base.argb32.ref.png | Bin .../paint-clip-fill-aa.base.rgb24.ref.png | Bin .../test/reference/paint-clip-fill-aa.ref.png | Bin .../paint-clip-fill-mono.base.argb32.ref.png | Bin .../paint-clip-fill-mono.base.rgb24.ref.png | Bin .../reference/paint-clip-fill-mono.ref.png | Bin .../paint-repeat.base.argb32.ref.png | Bin .../reference/paint-repeat.base.rgb24.ref.png | Bin .../test/reference/paint-repeat.ref.png | Bin .../paint-source-alpha.base.argb32.ref.png | Bin .../paint-source-alpha.base.rgb24.ref.png | Bin .../paint-source-alpha.image16.ref.png | Bin .../test/reference/paint-source-alpha.ref.png | Bin .../reference/paint-source-alpha.svg.ref.png | Bin .../paint-with-alpha-clip-mask.argb32.ref.png | Bin ...t-with-alpha-clip-mask.base.argb32.ref.png | Bin ...nt-with-alpha-clip-mask.base.rgb24.ref.png | Bin ...t-with-alpha-clip-mask.mask.argb32.ref.png | Bin ...nt-with-alpha-clip-mask.mask.rgb24.ref.png | Bin .../paint-with-alpha-clip-mask.rgb24.ref.png | Bin ...-with-alpha-clip-mask.traps.argb32.ref.png | Bin ...t-with-alpha-clip-mask.traps.rgb24.ref.png | Bin .../paint-with-alpha-clip.base.argb32.ref.png | Bin .../paint-with-alpha-clip.base.rgb24.ref.png | Bin .../paint-with-alpha-clip.mask.argb32.ref.png | Bin .../paint-with-alpha-clip.mask.rgb24.ref.png | Bin .../reference/paint-with-alpha-clip.ref.png | Bin ...paint-with-alpha-clip.traps.argb32.ref.png | Bin .../paint-with-alpha-clip.traps.rgb24.ref.png | Bin ...-with-alpha-solid-clip.base.argb32.ref.png | Bin ...t-with-alpha-solid-clip.base.rgb24.ref.png | Bin ...-with-alpha-solid-clip.mask.argb32.ref.png | Bin ...t-with-alpha-solid-clip.mask.rgb24.ref.png | Bin .../paint-with-alpha-solid-clip.ref.png | Bin ...with-alpha-solid-clip.traps.argb32.ref.png | Bin ...-with-alpha-solid-clip.traps.rgb24.ref.png | Bin .../paint-with-alpha.base.argb32.ref.png | Bin .../paint-with-alpha.base.rgb24.ref.png | Bin .../paint-with-alpha.image16.ref.png | Bin .../test/reference/paint-with-alpha.ref.png | Bin .../reference/paint-with-alpha.svg.ref.png | Bin .../test/reference/paint.base.argb32.ref.png | Bin .../test/reference/paint.base.rgb24.ref.png | Bin .../cairo}/test/reference/paint.ref.png | Bin .../partial-clip-text-bottom.argb32.ref.png | Bin ...rtial-clip-text-bottom.base.argb32.ref.png | Bin ...artial-clip-text-bottom.base.rgb24.ref.png | Bin .../partial-clip-text-bottom.rgb24.ref.png | Bin .../partial-clip-text-left.argb32.ref.png | Bin ...partial-clip-text-left.base.argb32.ref.png | Bin .../partial-clip-text-left.base.rgb24.ref.png | Bin .../partial-clip-text-left.rgb24.ref.png | Bin .../partial-clip-text-right.argb32.ref.png | Bin ...artial-clip-text-right.base.argb32.ref.png | Bin ...partial-clip-text-right.base.rgb24.ref.png | Bin .../partial-clip-text-right.rgb24.ref.png | Bin .../partial-clip-text-right.traps.ref.png | Bin .../partial-clip-text-top.argb32.ref.png | Bin .../partial-clip-text-top.base.argb32.ref.png | Bin .../partial-clip-text-top.base.rgb24.ref.png | Bin .../partial-clip-text-top.ps.ref.png | Bin .../partial-clip-text-top.quartz.ref.png | Bin .../partial-clip-text-top.rgb24.ref.png | Bin .../partial-clip-text-top.svg.ref.png | Bin .../partial-clip-text-top.traps.ref.png | Bin ...overage-half-reference.base.argb32.ref.png | Bin ...coverage-half-reference.base.rgb24.ref.png | Bin .../partial-coverage-half-reference.ref.png | Bin .../partial-coverage-half-triangles.ref.png | Bin ...artial-coverage-intersecting-quads.ref.png | Bin ...tial-coverage-intersecting-quads.xfail.png | Bin ...al-coverage-intersecting-triangles.ref.png | Bin ...coverage-overlap-half-triangles-eo.ref.png | Bin ...al-coverage-overlap-half-triangles.ref.png | Bin ...ge-overlap-three-quarter-triangles.ref.png | Bin .../partial-coverage-rectangles.ref.png | Bin ...ial-coverage-reference.base.argb32.ref.png | Bin ...tial-coverage-reference.base.rgb24.ref.png | Bin .../partial-coverage-reference.ref.png | Bin ...hree-quarter-reference.base.argb32.ref.png | Bin ...three-quarter-reference.base.rgb24.ref.png | Bin ...l-coverage-three-quarter-reference.ref.png | Bin .../partial-coverage-triangles.ref.png | Bin .../reference/pass-through.argb32.ref.png | Bin .../pass-through.base.argb32.ref.png | Bin .../reference/pass-through.base.rgb24.ref.png | Bin .../test/reference/pass-through.rgb24.ref.png | Bin .../test/reference/path-append.argb32.ref.png | Bin .../reference/path-append.base.argb32.ref.png | Bin .../reference/path-append.base.rgb24.ref.png | Bin .../reference/path-append.image16.ref.png | Bin .../test/reference/path-append.ps.ref.png | Bin .../test/reference/path-append.quartz.ref.png | Bin .../test/reference/path-append.rgb24.ref.png | Bin .../path-append.test-fallback.ref.png | Bin .../path-append.traps.argb32.ref.png | Bin .../reference/path-append.traps.rgb24.ref.png | Bin .../path-append.xlib-fallback.ref.png | Bin .../path-stroke-twice.argb32.ref.png | Bin .../path-stroke-twice.base.argb32.ref.png | Bin .../path-stroke-twice.base.rgb24.ref.png | Bin .../path-stroke-twice.image16.ref.png | Bin .../reference/path-stroke-twice.ps.ref.png | Bin .../reference/path-stroke-twice.rgb24.ref.png | Bin .../path-stroke-twice.traps.argb32.ref.png | Bin .../path-stroke-twice.traps.rgb24.ref.png | Bin .../pattern-getters.base.argb32.ref.png | Bin .../pattern-getters.base.rgb24.ref.png | Bin .../test/reference/pattern-getters.ref.png | Bin .../pdf-isolated-group.base.argb32.ref.png | Bin .../pdf-isolated-group.base.rgb24.ref.png | Bin .../test/reference/pdf-isolated-group.ref.png | Bin .../pdf-surface-source.argb32.ref.png | Bin .../pdf-surface-source.base.argb32.ref.png | Bin .../pdf-surface-source.base.rgb24.ref.png | Bin .../pdf-surface-source.image16.ref.png | Bin .../pdf-surface-source.rgb24.ref.png | Bin .../pdf-surface-source.svg12.argb32.xfail.png | Bin .../pdf-surface-source.svg12.rgb24.xfail.png | Bin .../reference/pixman-rotate.argb32.ref.png | Bin .../pixman-rotate.base.argb32.ref.png | Bin .../pixman-rotate.base.rgb24.ref.png | Bin .../reference/pixman-rotate.ps.argb32.ref.png | Bin .../reference/pixman-rotate.rgb24.ref.png | Bin .../cairo}/test/reference/ps-eps.ref.png | Bin .../ps-surface-source.argb32.ref.png | Bin .../ps-surface-source.base.argb32.ref.png | Bin .../ps-surface-source.base.rgb24.ref.png | Bin .../ps-surface-source.image16.ref.png | Bin .../reference/ps-surface-source.rgb24.ref.png | Bin .../ps-surface-source.svg12.argb32.xfail.png | Bin .../ps-surface-source.svg12.rgb24.xfail.png | Bin .../pthread-same-source.base.argb32.ref.png | Bin .../pthread-same-source.base.rgb24.ref.png | Bin .../pthread-same-source.image16.ref.png | Bin .../pthread-same-source.quartz.xfail.png | Bin .../reference/pthread-same-source.ref.png | Bin .../pthread-show-text.argb32.ref.png | Bin .../pthread-show-text.base.argb32.ref.png | Bin .../pthread-show-text.base.rgb24.ref.png | Bin .../pthread-show-text.image16.ref.png | Bin .../reference/pthread-show-text.pdf.ref.png | Bin .../reference/pthread-show-text.ps.ref.png | Bin .../pthread-show-text.quartz.ref.png | Bin .../reference/pthread-show-text.rgb24.ref.png | Bin .../reference/pthread-show-text.traps.ref.png | Bin .../pthread-show-text.xlib-fallback.ref.png | Bin .../pthread-similar.base.argb32.ref.png | Bin .../pthread-similar.base.rgb24.ref.png | Bin .../test/reference/pthread-similar.ref.png | Bin .../reference/push-group-color.argb32.ref.png | Bin .../push-group-color.base.argb32.ref.png | Bin .../push-group-color.base.rgb24.ref.png | Bin .../push-group-color.image16.ref.png | Bin .../reference/push-group-color.ps2.ref.png | Bin .../reference/push-group-color.ps3.ref.png | Bin .../reference/push-group-color.quartz.ref.png | Bin .../reference/push-group-color.rgb24.ref.png | Bin .../push-group-color.traps.argb32.ref.png | Bin .../push-group-color.traps.rgb24.ref.png | Bin ...push-group-path-offset.base.argb32.ref.png | Bin .../push-group-path-offset.base.rgb24.ref.png | Bin .../reference/push-group-path-offset.ref.png | Bin .../test/reference/push-group.argb32.ref.png | Bin .../reference/push-group.base.argb32.ref.png | Bin .../reference/push-group.base.rgb24.ref.png | Bin .../test/reference/push-group.image16.ref.png | Bin .../push-group.quartz.argb32.ref.png | Bin .../reference/push-group.quartz.rgb24.ref.png | Bin .../test/reference/push-group.rgb24.ref.png | Bin .../reference/push-group.traps.argb32.ref.png | Bin .../reference/push-group.traps.rgb24.ref.png | Bin .../quartz-surface-source.argb32.ref.png | Bin .../quartz-surface-source.ps2.ref.png | Bin .../quartz-surface-source.ps3.ref.png | Bin .../quartz-surface-source.rgb24.ref.png | Bin ...radial-gradient-extend.base.argb32.ref.png | Bin .../radial-gradient-extend.base.rgb24.ref.png | Bin ...radial-gradient-extend.mask.argb32.ref.png | Bin .../radial-gradient-extend.mask.rgb24.ref.png | Bin .../radial-gradient-extend.ps3.ref.png | Bin .../reference/radial-gradient-extend.ref.png | Bin ...adial-gradient-extend.traps.argb32.ref.png | Bin ...radial-gradient-extend.traps.rgb24.ref.png | Bin ...radial-gradient-mask-source.argb32.ref.png | Bin ...l-gradient-mask-source.base.argb32.ref.png | Bin ...al-gradient-mask-source.base.rgb24.ref.png | Bin ...adial-gradient-mask-source.image16.ref.png | Bin ...al-gradient-mask-source.mask.rgb24.ref.png | Bin ...gradient-mask-source.quartz.argb32.ref.png | Bin ...-gradient-mask-source.quartz.rgb24.ref.png | Bin ...l-gradient-mask-source.traps.rgb24.ref.png | Bin .../radial-gradient-mask.base.argb32.ref.png | Bin .../radial-gradient-mask.base.rgb24.ref.png | Bin .../radial-gradient-mask.image16.ref.png | Bin .../radial-gradient-mask.quartz.ref.png | Bin .../reference/radial-gradient-mask.ref.png | Bin ...dial-gradient-one-stop.base.argb32.ref.png | Bin ...adial-gradient-one-stop.base.rgb24.ref.png | Bin .../radial-gradient-one-stop.quartz.ref.png | Bin .../radial-gradient-one-stop.ref.png | Bin .../radial-gradient-source.argb32.ref.png | Bin ...radial-gradient-source.base.argb32.ref.png | Bin .../radial-gradient-source.base.rgb24.ref.png | Bin .../radial-gradient-source.image16.ref.png | Bin ...dial-gradient-source.quartz.argb32.ref.png | Bin ...adial-gradient-source.quartz.rgb24.ref.png | Bin .../radial-gradient-source.rgb24.ref.png | Bin .../radial-gradient.base.argb32.ref.png | Bin .../radial-gradient.base.rgb24.ref.png | Bin .../reference/radial-gradient.image16.ref.png | Bin .../reference/radial-gradient.quartz.ref.png | Bin .../test/reference/radial-gradient.ref.png | Bin .../radial-outer-focus.base.argb32.ref.png | Bin .../radial-outer-focus.base.rgb24.ref.png | Bin .../radial-outer-focus.mask.argb32.ref.png | Bin .../radial-outer-focus.mask.rgb24.ref.png | Bin .../radial-outer-focus.traps.argb32.ref.png | Bin .../radial-outer-focus.traps.rgb24.ref.png | Bin .../reference/radial-outer-focus.xfail.png | Bin .../reference/random-clip.base.argb32.ref.png | Bin .../random-clip.base.argb32.xfail.png | Bin .../reference/random-clip.base.rgb24.ref.png | Bin .../random-clip.base.rgb24.xfail.png | Bin .../reference/random-clip.mask.argb32.ref.png | Bin .../reference/random-clip.mask.rgb24.ref.png | Bin .../cairo}/test/reference/random-clip.ref.png | Bin .../random-clip.traps.argb32.ref.png | Bin .../reference/random-clip.traps.rgb24.ref.png | Bin ...dom-intersections-curves-eo.argb32.ref.png | Bin ...ntersections-curves-eo.base.argb32.ref.png | Bin ...intersections-curves-eo.base.rgb24.ref.png | Bin ...om-intersections-curves-eo.image16.ref.png | Bin ...random-intersections-curves-eo.pdf.ref.png | Bin .../random-intersections-curves-eo.ps.ref.png | Bin ...dom-intersections-curves-eo.quartz.ref.png | Bin ...ndom-intersections-curves-eo.rgb24.ref.png | Bin ...tersections-curves-eo.traps.argb32.ref.png | Bin ...ntersections-curves-eo.traps.rgb24.ref.png | Bin ...ersections-curves-eo.xlib-fallback.ref.png | Bin ...dom-intersections-curves-nz.argb32.ref.png | Bin ...ntersections-curves-nz.base.argb32.ref.png | Bin ...intersections-curves-nz.base.rgb24.ref.png | Bin ...om-intersections-curves-nz.image16.ref.png | Bin ...random-intersections-curves-nz.pdf.ref.png | Bin .../random-intersections-curves-nz.ps.ref.png | Bin ...dom-intersections-curves-nz.quartz.ref.png | Bin ...ndom-intersections-curves-nz.rgb24.ref.png | Bin ...tersections-curves-nz.traps.argb32.ref.png | Bin ...ntersections-curves-nz.traps.rgb24.ref.png | Bin ...ersections-curves-nz.xlib-fallback.ref.png | Bin .../random-intersections-eo.argb32.ref.png | Bin ...andom-intersections-eo.base.argb32.ref.png | Bin ...random-intersections-eo.base.rgb24.ref.png | Bin .../random-intersections-eo.image16.ref.png | Bin .../random-intersections-eo.ps.ref.png | Bin .../random-intersections-eo.quartz.ref.png | Bin .../random-intersections-eo.rgb24.ref.png | Bin ...ndom-intersections-eo.traps.argb32.ref.png | Bin ...andom-intersections-eo.traps.rgb24.ref.png | Bin ...andom-intersections-nonzero.argb32.ref.png | Bin ...-intersections-nonzero.base.argb32.ref.png | Bin ...m-intersections-nonzero.base.rgb24.ref.png | Bin ...ndom-intersections-nonzero.image16.ref.png | Bin .../random-intersections-nonzero.ps.ref.png | Bin ...andom-intersections-nonzero.quartz.ref.png | Bin ...random-intersections-nonzero.rgb24.ref.png | Bin ...intersections-nonzero.traps.argb32.ref.png | Bin ...-intersections-nonzero.traps.rgb24.ref.png | Bin .../raster-source.base.argb32.ref.png | Bin .../raster-source.base.rgb24.ref.png | Bin .../test/reference/raster-source.ps.ref.png | Bin .../test/reference/raster-source.ref.png | Bin ...rd-extend-none-similar.base.argb32.ref.png | Bin ...ord-extend-none-similar.base.rgb24.ref.png | Bin .../record-extend-none-similar.ref.png | Bin ...d-extend-none-similar.traps.argb32.ref.png | Bin ...rd-extend-none-similar.traps.rgb24.ref.png | Bin .../record-extend-none.base.argb32.ref.png | Bin .../record-extend-none.base.rgb24.ref.png | Bin .../test/reference/record-extend-none.ref.png | Bin ...ord-extend-pad-similar.base.argb32.ref.png | Bin ...cord-extend-pad-similar.base.rgb24.ref.png | Bin .../record-extend-pad-similar.ref.png | Bin ...rd-extend-pad-similar.traps.argb32.ref.png | Bin ...ord-extend-pad-similar.traps.rgb24.ref.png | Bin .../record-extend-pad.base.argb32.ref.png | Bin .../record-extend-pad.base.rgb24.ref.png | Bin .../test/reference/record-extend-pad.ref.png | Bin ...extend-reflect-similar.base.argb32.ref.png | Bin ...-extend-reflect-similar.base.rgb24.ref.png | Bin .../record-extend-reflect-similar.ref.png | Bin ...xtend-reflect-similar.traps.argb32.ref.png | Bin ...extend-reflect-similar.traps.rgb24.ref.png | Bin .../record-extend-reflect.base.argb32.ref.png | Bin .../record-extend-reflect.base.rgb24.ref.png | Bin .../reference/record-extend-reflect.ref.png | Bin ...-extend-repeat-similar.base.argb32.ref.png | Bin ...d-extend-repeat-similar.base.rgb24.ref.png | Bin .../record-extend-repeat-similar.ref.png | Bin ...extend-repeat-similar.traps.argb32.ref.png | Bin ...-extend-repeat-similar.traps.rgb24.ref.png | Bin .../record-extend-repeat.base.argb32.ref.png | Bin .../record-extend-repeat.base.rgb24.ref.png | Bin .../reference/record-extend-repeat.ref.png | Bin .../record-fill-alpha.base.argb32.ref.png | Bin .../record-fill-alpha.base.rgb24.ref.png | Bin .../record-fill-alpha.base.xfail.png | Bin .../record-fill-alpha.image16.rgb24.ref.png | Bin .../test/reference/record-fill-alpha.ref.png | Bin .../record-fill-alpha.traps.argb32.ref.png | Bin .../record-fill-alpha.traps.rgb24.ref.png | Bin .../reference/record-fill-alpha.xfail.png | Bin .../reference/record-mesh.base.argb32.ref.png | Bin .../reference/record-mesh.base.rgb24.ref.png | Bin .../record-mesh.image16.rgb24.ref.png | Bin .../cairo}/test/reference/record-mesh.ref.png | Bin ...-paint-alpha-clip-mask.base.argb32.ref.png | Bin ...d-paint-alpha-clip-mask.base.rgb24.ref.png | Bin ...ecord-paint-alpha-clip-mask.base.xfail.png | Bin ...aint-alpha-clip-mask.image16.rgb24.ref.png | Bin .../record-paint-alpha-clip-mask.ref.png | Bin ...paint-alpha-clip-mask.traps.argb32.ref.png | Bin ...-paint-alpha-clip-mask.traps.rgb24.ref.png | Bin .../record-paint-alpha-clip-mask.xfail.png | Bin .../record-paint-alpha-clip.argb32.ref.png | Bin ...ecord-paint-alpha-clip.base.argb32.ref.png | Bin ...record-paint-alpha-clip.base.rgb24.ref.png | Bin ...ord-paint-alpha-clip.image16.rgb24.ref.png | Bin .../record-paint-alpha-clip.rgb24.ref.png | Bin ...cord-paint-alpha-clip.traps.argb32.ref.png | Bin ...ecord-paint-alpha-clip.traps.rgb24.ref.png | Bin ...paint-alpha-solid-clip.base.argb32.ref.png | Bin ...-paint-alpha-solid-clip.base.rgb24.ref.png | Bin ...int-alpha-solid-clip.image16.rgb24.ref.png | Bin .../record-paint-alpha-solid-clip.ref.png | Bin ...aint-alpha-solid-clip.traps.argb32.ref.png | Bin ...paint-alpha-solid-clip.traps.rgb24.ref.png | Bin .../record-paint-alpha.base.argb32.ref.png | Bin .../record-paint-alpha.base.rgb24.ref.png | Bin .../record-paint-alpha.image16.rgb24.ref.png | Bin .../test/reference/record-paint-alpha.ref.png | Bin .../record-paint.base.argb32.ref.png | Bin .../reference/record-paint.base.rgb24.ref.png | Bin .../test/reference/record-paint.ref.png | Bin .../record-select-font-face.argb32.ref.png | Bin ...ecord-select-font-face.base.argb32.ref.png | Bin ...record-select-font-face.base.rgb24.ref.png | Bin ...ord-select-font-face.image16.rgb24.ref.png | Bin .../record-select-font-face.rgb24.ref.png | Bin .../record-select-font-face.xfail.png | Bin ...cord-self-intersecting.base.argb32.ref.png | Bin ...ecord-self-intersecting.base.rgb24.ref.png | Bin ...rd-self-intersecting.image16.rgb24.ref.png | Bin .../record-self-intersecting.ref.png | Bin .../record-text-transform.base.argb32.ref.png | Bin .../record-text-transform.base.rgb24.ref.png | Bin ...ecord-text-transform.image16.rgb24.ref.png | Bin .../reference/record-text-transform.ref.png | Bin ...record1414x-fill-alpha.base.argb32.ref.png | Bin .../record1414x-fill-alpha.base.rgb24.ref.png | Bin .../record1414x-fill-alpha.base.xfail.png | Bin .../reference/record1414x-fill-alpha.ref.png | Bin .../record1414x-fill-alpha.xfail.png | Bin ...1414x-paint-alpha-clip-mask.argb32.ref.png | Bin ...-paint-alpha-clip-mask.base.argb32.ref.png | Bin ...x-paint-alpha-clip-mask.base.rgb24.ref.png | Bin ...d1414x-paint-alpha-clip-mask.rgb24.ref.png | Bin ...ecord1414x-paint-alpha-clip.argb32.ref.png | Bin ...1414x-paint-alpha-clip.base.argb32.ref.png | Bin ...d1414x-paint-alpha-clip.base.rgb24.ref.png | Bin ...record1414x-paint-alpha-clip.rgb24.ref.png | Bin ...414x-paint-alpha-solid-clip.argb32.ref.png | Bin ...paint-alpha-solid-clip.base.argb32.ref.png | Bin ...-paint-alpha-solid-clip.base.rgb24.ref.png | Bin ...1414x-paint-alpha-solid-clip.rgb24.ref.png | Bin .../record1414x-paint-alpha.argb32.ref.png | Bin ...ecord1414x-paint-alpha.base.argb32.ref.png | Bin ...record1414x-paint-alpha.base.rgb24.ref.png | Bin .../record1414x-paint-alpha.rgb24.ref.png | Bin .../record1414x-paint.argb32.ref.png | Bin .../record1414x-paint.base.argb32.ref.png | Bin .../record1414x-paint.base.rgb24.ref.png | Bin .../reference/record1414x-paint.rgb24.ref.png | Bin ...ecord1414x-select-font-face.argb32.ref.png | Bin ...1414x-select-font-face.base.argb32.ref.png | Bin ...d1414x-select-font-face.base.rgb24.ref.png | Bin ...record1414x-select-font-face.rgb24.ref.png | Bin ...cord1414x-self-intersecting.argb32.ref.png | Bin ...414x-self-intersecting.base.argb32.ref.png | Bin ...1414x-self-intersecting.base.rgb24.ref.png | Bin ...ecord1414x-self-intersecting.rgb24.ref.png | Bin ...rd1414x-text-transform.base.argb32.ref.png | Bin ...ord1414x-text-transform.base.rgb24.ref.png | Bin .../record1414x-text-transform.ref.png | Bin .../record2x-fill-alpha.base.argb32.ref.png | Bin .../record2x-fill-alpha.base.rgb24.ref.png | Bin .../record2x-fill-alpha.base.xfail.png | Bin .../reference/record2x-fill-alpha.ref.png | Bin .../reference/record2x-fill-alpha.xfail.png | Bin ...ord2x-paint-alpha-clip-mask.argb32.ref.png | Bin ...-paint-alpha-clip-mask.base.argb32.ref.png | Bin ...x-paint-alpha-clip-mask.base.rgb24.ref.png | Bin ...cord2x-paint-alpha-clip-mask.rgb24.ref.png | Bin .../record2x-paint-alpha-clip.argb32.ref.png | Bin ...ord2x-paint-alpha-clip.base.argb32.ref.png | Bin ...cord2x-paint-alpha-clip.base.rgb24.ref.png | Bin .../record2x-paint-alpha-clip.rgb24.ref.png | Bin ...rd2x-paint-alpha-solid-clip.argb32.ref.png | Bin ...paint-alpha-solid-clip.base.argb32.ref.png | Bin ...-paint-alpha-solid-clip.base.rgb24.ref.png | Bin ...ord2x-paint-alpha-solid-clip.rgb24.ref.png | Bin .../record2x-paint-alpha.argb32.ref.png | Bin .../record2x-paint-alpha.base.argb32.ref.png | Bin .../record2x-paint-alpha.base.rgb24.ref.png | Bin .../record2x-paint-alpha.rgb24.ref.png | Bin .../reference/record2x-paint.argb32.ref.png | Bin .../record2x-paint.base.argb32.ref.png | Bin .../record2x-paint.base.rgb24.ref.png | Bin .../reference/record2x-paint.rgb24.ref.png | Bin .../record2x-select-font-face.argb32.ref.png | Bin ...ord2x-select-font-face.base.argb32.ref.png | Bin ...cord2x-select-font-face.base.rgb24.ref.png | Bin .../record2x-select-font-face.rgb24.ref.png | Bin .../record2x-self-intersecting.argb32.ref.png | Bin ...rd2x-self-intersecting.base.argb32.ref.png | Bin ...ord2x-self-intersecting.base.rgb24.ref.png | Bin .../record2x-self-intersecting.rgb24.ref.png | Bin ...ecord2x-text-transform.base.argb32.ref.png | Bin ...record2x-text-transform.base.rgb24.ref.png | Bin .../reference/record2x-text-transform.ref.png | Bin .../record90-fill-alpha.base.argb32.ref.png | Bin .../record90-fill-alpha.base.rgb24.ref.png | Bin .../reference/record90-fill-alpha.ref.png | Bin .../reference/record90-fill-alpha.xfail.png | Bin ...-paint-alpha-clip-mask.base.argb32.ref.png | Bin ...0-paint-alpha-clip-mask.base.rgb24.ref.png | Bin .../record90-paint-alpha-clip-mask.ref.png | Bin .../record90-paint-alpha-clip-mask.xfail.png | Bin ...ord90-paint-alpha-clip.base.argb32.ref.png | Bin ...cord90-paint-alpha-clip.base.rgb24.ref.png | Bin .../record90-paint-alpha-clip.ref.png | Bin .../record90-paint-alpha-clip.xfail.png | Bin ...rd90-paint-alpha-solid-clip.argb32.ref.png | Bin ...paint-alpha-solid-clip.base.argb32.ref.png | Bin ...-paint-alpha-solid-clip.base.rgb24.ref.png | Bin ...ord90-paint-alpha-solid-clip.rgb24.ref.png | Bin .../record90-paint-alpha.argb32.ref.png | Bin .../record90-paint-alpha.base.argb32.ref.png | Bin .../record90-paint-alpha.base.rgb24.ref.png | Bin .../record90-paint-alpha.rgb24.ref.png | Bin .../reference/record90-paint.argb32.ref.png | Bin .../record90-paint.base.argb32.ref.png | Bin .../record90-paint.base.rgb24.ref.png | Bin .../reference/record90-paint.rgb24.ref.png | Bin .../record90-select-font-face.argb32.ref.png | Bin ...ord90-select-font-face.base.argb32.ref.png | Bin ...cord90-select-font-face.base.rgb24.ref.png | Bin .../record90-select-font-face.rgb24.ref.png | Bin ...rd90-self-intersecting.base.argb32.ref.png | Bin ...ord90-self-intersecting.base.rgb24.ref.png | Bin .../record90-self-intersecting.ref.png | Bin ...ecord90-text-transform.base.argb32.ref.png | Bin ...record90-text-transform.base.rgb24.ref.png | Bin .../reference/record90-text-transform.ref.png | Bin .../reference/recordflip-fill-alpha.ref.png | Bin .../recordflip-paint-alpha-clip-mask.ref.png | Bin .../recordflip-paint-alpha-clip.ref.png | Bin .../recordflip-paint-alpha-solid-clip.ref.png | Bin .../reference/recordflip-paint-alpha.ref.png | Bin .../test/reference/recordflip-paint.ref.png | Bin .../recordflip-select-font-face.ref.png | Bin .../recordflip-self-intersecting.ref.png | Bin .../recordflip-text-transform.ref.png | Bin ...cording-surface-extend-none.argb32.ref.png | Bin ...ng-surface-extend-none.base.argb32.ref.png | Bin ...ing-surface-extend-none.base.rgb24.ref.png | Bin ...ecording-surface-extend-none.rgb24.ref.png | Bin ...g-surface-extend-none.traps.argb32.ref.png | Bin ...ng-surface-extend-none.traps.rgb24.ref.png | Bin ...ecording-surface-extend-pad.argb32.ref.png | Bin ...ing-surface-extend-pad.base.argb32.ref.png | Bin ...ding-surface-extend-pad.base.rgb24.ref.png | Bin ...recording-surface-extend-pad.rgb24.ref.png | Bin ...ng-surface-extend-pad.traps.argb32.ref.png | Bin ...ing-surface-extend-pad.traps.rgb24.ref.png | Bin ...ding-surface-extend-reflect.argb32.ref.png | Bin ...surface-extend-reflect.base.argb32.ref.png | Bin ...-surface-extend-reflect.base.rgb24.ref.png | Bin ...rding-surface-extend-reflect.rgb24.ref.png | Bin ...urface-extend-reflect.traps.argb32.ref.png | Bin ...surface-extend-reflect.traps.rgb24.ref.png | Bin ...rding-surface-extend-repeat.argb32.ref.png | Bin ...-surface-extend-repeat.base.argb32.ref.png | Bin ...g-surface-extend-repeat.base.rgb24.ref.png | Bin ...ording-surface-extend-repeat.rgb24.ref.png | Bin ...surface-extend-repeat.traps.argb32.ref.png | Bin ...-surface-extend-repeat.traps.rgb24.ref.png | Bin .../recording-surface-over.argb32.ref.png | Bin ...recording-surface-over.base.argb32.ref.png | Bin .../recording-surface-over.base.rgb24.ref.png | Bin .../recording-surface-over.gl.argb32.ref.png | Bin .../recording-surface-over.image16.ref.png | Bin .../recording-surface-over.pdf.argb32.ref.png | Bin .../recording-surface-over.pdf.rgb24.ref.png | Bin .../recording-surface-over.ps.argb32.ref.png | Bin .../recording-surface-over.ps.rgb24.ref.png | Bin ...cording-surface-over.quartz.argb32.ref.png | Bin ...ecording-surface-over.quartz.rgb24.ref.png | Bin .../recording-surface-over.rgb24.ref.png | Bin .../recording-surface-over.svg.argb32.ref.png | Bin .../recording-surface-over.svg.rgb24.ref.png | Bin ...ecording-surface-over.traps.argb32.ref.png | Bin ...recording-surface-over.traps.rgb24.ref.png | Bin .../recording-surface-source.argb32.ref.png | Bin ...cording-surface-source.base.argb32.ref.png | Bin ...ecording-surface-source.base.rgb24.ref.png | Bin .../recording-surface-source.rgb24.ref.png | Bin ...ording-surface-source.traps.argb32.ref.png | Bin ...cording-surface-source.traps.rgb24.ref.png | Bin ...ctangle-rounding-error.base.argb32.ref.png | Bin ...ectangle-rounding-error.base.rgb24.ref.png | Bin .../rectangle-rounding-error.ref.png | Bin .../rectilinear-dash-scale-unaligned.ref.png | Bin ...ilinear-dash-scale-unaligned.traps.ref.png | Bin .../reference/rectilinear-dash-scale.ref.png | Bin .../rectilinear-dash.base.argb32.ref.png | Bin .../rectilinear-dash.base.rgb24.ref.png | Bin .../rectilinear-dash.mask.argb32.ref.png | Bin .../rectilinear-dash.mask.rgb24.ref.png | Bin .../rectilinear-dash.quartz.xfail.png | Bin .../test/reference/rectilinear-dash.ref.png | Bin .../rectilinear-dash.traps.argb32.ref.png | Bin .../rectilinear-dash.traps.rgb24.ref.png | Bin .../rectilinear-fill.base.argb32.ref.png | Bin .../rectilinear-fill.base.rgb24.ref.png | Bin .../test/reference/rectilinear-fill.ref.png | Bin .../rectilinear-grid.base.argb32.ref.png | Bin .../rectilinear-grid.base.rgb24.ref.png | Bin .../rectilinear-grid.image16.ref.png | Bin .../test/reference/rectilinear-grid.ref.png | Bin .../rectilinear-grid.traps.argb32.ref.png | Bin .../rectilinear-grid.traps.rgb24.ref.png | Bin .../rectilinear-miter-limit.argb32.ref.png | Bin ...ectilinear-miter-limit.base.argb32.ref.png | Bin ...rectilinear-miter-limit.base.rgb24.ref.png | Bin .../rectilinear-miter-limit.ps2.ref.png | Bin .../rectilinear-miter-limit.ps3.ref.png | Bin .../rectilinear-miter-limit.rgb24.ref.png | Bin ...ctilinear-miter-limit.traps.argb32.ref.png | Bin ...ectilinear-miter-limit.traps.rgb24.ref.png | Bin .../rectilinear-stroke.base.argb32.ref.png | Bin .../rectilinear-stroke.base.rgb24.ref.png | Bin .../rectilinear-stroke.quartz.xfail.png | Bin .../test/reference/rectilinear-stroke.ref.png | Bin .../reflected-stroke.base.argb32.ref.png | Bin .../reflected-stroke.base.rgb24.ref.png | Bin .../reflected-stroke.image16.ref.png | Bin .../reflected-stroke.mask.argb32.ref.png | Bin .../reflected-stroke.mask.rgb24.ref.png | Bin .../reference/reflected-stroke.ps.ref.png | Bin .../test/reference/reflected-stroke.ref.png | Bin .../reflected-stroke.traps.argb32.ref.png | Bin .../reflected-stroke.traps.rgb24.ref.png | Bin .../test/reference/rel-path.argb32.ref.png | Bin .../reference/rel-path.base.argb32.ref.png | Bin .../reference/rel-path.base.rgb24.ref.png | Bin .../reference/rel-path.mask.rgb24.ref.png | Bin .../test/reference/rel-path.ps2.rgb24.ref.png | Bin .../test/reference/rel-path.ps3.rgb24.ref.png | Bin .../test/reference/rel-path.rgb24.ref.png | Bin .../reference/rel-path.traps.argb32.ref.png | Bin .../reference/rel-path.traps.rgb24.ref.png | Bin .../rgb24-ignore-alpha.base.argb32.ref.png | Bin .../rgb24-ignore-alpha.base.rgb24.ref.png | Bin .../test/reference/rgb24-ignore-alpha.ref.png | Bin ...te-clip-image-surface-paint.argb32.ref.png | Bin ...ip-image-surface-paint.base.argb32.ref.png | Bin ...lip-image-surface-paint.base.rgb24.ref.png | Bin ...ate-clip-image-surface-paint.rgb24.ref.png | Bin ...p-image-surface-paint.traps.argb32.ref.png | Bin ...ip-image-surface-paint.traps.rgb24.ref.png | Bin ...-surface-paint.xlib-fallback.rgb24.ref.png | Bin ...ge-surface-paint.xlib-window.rgb24.ref.png | Bin ...te-image-surface-paint.base.argb32.ref.png | Bin ...ate-image-surface-paint.base.rgb24.ref.png | Bin .../rotate-image-surface-paint.pdf.xfail.png | Bin .../rotate-image-surface-paint.ps.ref.png | Bin .../rotate-image-surface-paint.quartz.ref.png | Bin .../rotate-image-surface-paint.ref.png | Bin .../rotate-image-surface-paint.svg.ref.png | Bin .../rotate-image-surface-paint.svg.xfail.png | Bin .../reference/rotated-clip.argb32.ref.png | Bin .../rotated-clip.base.argb32.ref.png | Bin .../reference/rotated-clip.base.rgb24.ref.png | Bin .../reference/rotated-clip.image16.ref.png | Bin .../rotated-clip.mask.argb32.ref.png | Bin .../reference/rotated-clip.mask.rgb24.ref.png | Bin .../test/reference/rotated-clip.ps.ref.png | Bin .../reference/rotated-clip.quartz.ref.png | Bin .../test/reference/rotated-clip.rgb24.ref.png | Bin .../rotated-clip.traps.argb32.ref.png | Bin .../rotated-clip.traps.rgb24.ref.png | Bin .../rounded-rectangle-fill.argb32.ref.png | Bin ...rounded-rectangle-fill.base.argb32.ref.png | Bin .../rounded-rectangle-fill.base.rgb24.ref.png | Bin .../rounded-rectangle-fill.image16.ref.png | Bin .../rounded-rectangle-fill.ps.ref.png | Bin .../rounded-rectangle-fill.quartz.ref.png | Bin .../rounded-rectangle-fill.rgb24.ref.png | Bin ...ounded-rectangle-fill.traps.argb32.ref.png | Bin ...rounded-rectangle-fill.traps.rgb24.ref.png | Bin ...unded-rectangle-stroke.base.argb32.ref.png | Bin ...ounded-rectangle-stroke.base.rgb24.ref.png | Bin .../rounded-rectangle-stroke.image16.ref.png | Bin ...unded-rectangle-stroke.mask.argb32.ref.png | Bin ...ounded-rectangle-stroke.mask.rgb24.ref.png | Bin .../rounded-rectangle-stroke.ps.ref.png | Bin .../rounded-rectangle-stroke.ref.png | Bin ...nded-rectangle-stroke.traps.argb32.ref.png | Bin ...unded-rectangle-stroke.traps.rgb24.ref.png | Bin .../test/reference/sample-diagonal.ref.png | Bin .../test/reference/sample-horizontal.ref.png | Bin .../test/reference/sample-vertical.ref.png | Bin ...n-source-surface-paint.base.argb32.ref.png | Bin ...wn-source-surface-paint.base.rgb24.ref.png | Bin .../scale-down-source-surface-paint.ref.png | Bin .../scale-offset-image.argb32.ref.png | Bin .../scale-offset-image.base.argb32.ref.png | Bin .../scale-offset-image.base.rgb24.ref.png | Bin .../reference/scale-offset-image.gl.ref.png | Bin .../scale-offset-image.image16.ref.png | Bin .../scale-offset-image.pdf.argb32.ref.png | Bin .../scale-offset-image.pdf.rgb24.ref.png | Bin .../reference/scale-offset-image.ps.ref.png | Bin .../scale-offset-image.quartz.ref.png | Bin .../scale-offset-image.rgb24.ref.png | Bin .../scale-offset-image.script.xfail.png | Bin .../scale-offset-image.traps.argb32.ref.png | Bin .../scale-offset-image.traps.rgb24.ref.png | Bin .../reference/scale-offset-image.xfail.png | Bin ...scale-offset-image.xlib-fallback.xfail.png | Bin .../scale-offset-similar.argb32.ref.png | Bin .../scale-offset-similar.base.argb32.ref.png | Bin .../scale-offset-similar.base.rgb24.ref.png | Bin .../reference/scale-offset-similar.gl.ref.png | Bin .../scale-offset-similar.image16.ref.png | Bin .../scale-offset-similar.pdf.argb32.ref.png | Bin .../scale-offset-similar.pdf.rgb24.ref.png | Bin .../reference/scale-offset-similar.ps.ref.png | Bin .../scale-offset-similar.quartz.ref.png | Bin .../scale-offset-similar.recording.xfail.png | Bin .../scale-offset-similar.rgb24.ref.png | Bin .../scale-offset-similar.script.xfail.png | Bin .../scale-offset-similar.traps.argb32.ref.png | Bin .../scale-offset-similar.traps.rgb24.ref.png | Bin .../reference/scale-offset-similar.xfail.png | Bin ...ale-offset-similar.xlib-fallback.xfail.png | Bin .../scale-offset-similar.xlib.xfail.png | Bin .../scale-offset-xlib-fallback.rgb24.ref.png | Bin .../scale-offset-xlib-window.rgb24.ref.png | Bin .../scale-offset-xlib.argb32.ref.png | Bin .../reference/scale-offset-xlib.rgb24.ref.png | Bin .../scale-source-surface-paint.argb32.ref.png | Bin ...e-source-surface-paint.base.argb32.ref.png | Bin ...le-source-surface-paint.base.rgb24.ref.png | Bin ...-source-surface-paint.pdf.argb32.xfail.png | Bin ...e-source-surface-paint.pdf.rgb24.xfail.png | Bin .../scale-source-surface-paint.rgb24.ref.png | Bin ...-source-surface-paint.svg.argb32.xfail.png | Bin ...e-source-surface-paint.svg.rgb24.xfail.png | Bin .../reference/select-font-face.argb32.ref.png | Bin .../select-font-face.base.argb32.ref.png | Bin .../select-font-face.base.rgb24.ref.png | Bin .../select-font-face.image16.ref.png | Bin .../reference/select-font-face.ps2.ref.png | Bin .../reference/select-font-face.ps3.ref.png | Bin .../reference/select-font-face.quartz.ref.png | Bin .../reference/select-font-face.rgb24.ref.png | Bin .../reference/select-font-face.traps.ref.png | Bin .../self-copy-overlap.base.argb32.ref.png | Bin .../self-copy-overlap.base.rgb24.ref.png | Bin .../self-copy-overlap.mask.argb32.ref.png | Bin .../self-copy-overlap.mask.rgb24.ref.png | Bin .../self-copy-overlap.traps.argb32.ref.png | Bin .../self-copy-overlap.traps.rgb24.ref.png | Bin .../test/reference/self-copy.argb32.ref.png | Bin .../reference/self-copy.base.argb32.ref.png | Bin .../reference/self-copy.base.rgb24.ref.png | Bin .../test/reference/self-copy.ps2.ref.png | Bin .../test/reference/self-copy.ps3.ref.png | Bin .../test/reference/self-copy.rgb24.ref.png | Bin .../reference/self-copy.traps.argb32.ref.png | Bin .../reference/self-copy.traps.rgb24.ref.png | Bin .../self-intersecting.base.argb32.ref.png | Bin .../self-intersecting.base.rgb24.ref.png | Bin .../reference/self-intersecting.ps.ref.png | Bin .../self-intersecting.quartz.xfail.png | Bin .../test/reference/self-intersecting.ref.png | Bin .../self-intersecting.traps.argb32.ref.png | Bin .../self-intersecting.traps.rgb24.ref.png | Bin .../test/reference/set-source.argb32.ref.png | Bin .../reference/set-source.base.argb32.ref.png | Bin .../reference/set-source.base.rgb24.ref.png | Bin .../test/reference/set-source.rgb24.ref.png | Bin .../shape-general-convex.argb32.ref.png | Bin .../shape-general-convex.base.argb32.ref.png | Bin .../shape-general-convex.base.rgb24.ref.png | Bin .../reference/shape-general-convex.ps.ref.png | Bin .../shape-general-convex.rgb24.ref.png | Bin .../shape-general-convex.traps.argb32.ref.png | Bin .../shape-general-convex.traps.rgb24.ref.png | Bin .../reference/shape-sierpinski.argb32.ref.png | Bin .../shape-sierpinski.base.argb32.ref.png | Bin .../shape-sierpinski.base.rgb24.ref.png | Bin .../shape-sierpinski.pdf.argb32.ref.png | Bin .../shape-sierpinski.pdf.rgb24.ref.png | Bin .../reference/shape-sierpinski.ps.ref.png | Bin .../shape-sierpinski.ps3.argb32.ref.png | Bin .../shape-sierpinski.ps3.rgb24.ref.png | Bin .../reference/shape-sierpinski.rgb24.ref.png | Bin .../shape-sierpinski.traps.argb32.ref.png | Bin .../shape-sierpinski.traps.rgb24.ref.png | Bin .../show-glyphs-advance.argb32.ref.png | Bin .../show-glyphs-advance.base.argb32.ref.png | Bin .../show-glyphs-advance.base.rgb24.ref.png | Bin .../show-glyphs-advance.image16.ref.png | Bin .../reference/show-glyphs-advance.ps.ref.png | Bin .../show-glyphs-advance.quartz.ref.png | Bin .../show-glyphs-advance.rgb24.ref.png | Bin .../reference/show-glyphs-advance.svg.ref.png | Bin .../show-glyphs-advance.traps.ref.png | Bin .../show-glyphs-many.base.argb32.ref.png | Bin .../show-glyphs-many.base.rgb24.ref.png | Bin .../test/reference/show-glyphs-many.ref.png | Bin .../show-text-current-point.argb32.ref.png | Bin ...how-text-current-point.base.argb32.ref.png | Bin ...show-text-current-point.base.rgb24.ref.png | Bin .../show-text-current-point.image16.ref.png | Bin .../show-text-current-point.ps2.ref.png | Bin .../show-text-current-point.ps3.ref.png | Bin .../show-text-current-point.quartz.ref.png | Bin .../show-text-current-point.rgb24.ref.png | Bin .../show-text-current-point.traps.ref.png | Bin .../reference/skew-extreme.argb32.ref.png | Bin .../skew-extreme.base.argb32.ref.png | Bin .../reference/skew-extreme.base.rgb24.ref.png | Bin .../test/reference/skew-extreme.ps2.ref.png | Bin .../test/reference/skew-extreme.ps3.ref.png | Bin .../test/reference/skew-extreme.rgb24.ref.png | Bin .../skew-extreme.traps.argb32.ref.png | Bin .../skew-extreme.traps.rgb24.ref.png | Bin .../test/reference/smask-fill.argb32.ref.png | Bin .../reference/smask-fill.base.argb32.ref.png | Bin .../reference/smask-fill.base.rgb24.ref.png | Bin .../test/reference/smask-fill.image16.ref.png | Bin .../test/reference/smask-fill.pdf.ref.png | Bin .../test/reference/smask-fill.quartz.ref.png | Bin .../test/reference/smask-fill.rgb24.ref.png | Bin .../test/reference/smask-fill.svg.ref.png | Bin .../reference/smask-fill.traps.argb32.ref.png | Bin .../reference/smask-fill.traps.rgb24.ref.png | Bin .../reference/smask-image-mask.argb32.ref.png | Bin .../smask-image-mask.base.argb32.ref.png | Bin .../smask-image-mask.base.rgb24.ref.png | Bin .../reference/smask-image-mask.pdf.ref.png | Bin .../reference/smask-image-mask.rgb24.ref.png | Bin .../test/reference/smask-mask.argb32.ref.png | Bin .../reference/smask-mask.base.argb32.ref.png | Bin .../reference/smask-mask.base.rgb24.ref.png | Bin .../test/reference/smask-mask.image16.ref.png | Bin .../test/reference/smask-mask.pdf.ref.png | Bin .../test/reference/smask-mask.quartz.ref.png | Bin .../test/reference/smask-mask.rgb24.ref.png | Bin .../test/reference/smask-mask.svg.ref.png | Bin .../test/reference/smask-paint.argb32.ref.png | Bin .../reference/smask-paint.base.argb32.ref.png | Bin .../reference/smask-paint.base.rgb24.ref.png | Bin .../reference/smask-paint.image16.ref.png | Bin .../test/reference/smask-paint.pdf.ref.png | Bin .../test/reference/smask-paint.quartz.ref.png | Bin .../test/reference/smask-paint.rgb24.ref.png | Bin .../test/reference/smask-paint.svg.ref.png | Bin .../reference/smask-stroke.argb32.ref.png | Bin .../smask-stroke.base.argb32.ref.png | Bin .../reference/smask-stroke.base.rgb24.ref.png | Bin .../reference/smask-stroke.image16.ref.png | Bin .../test/reference/smask-stroke.pdf.xfail.png | Bin .../reference/smask-stroke.quartz.ref.png | Bin .../test/reference/smask-stroke.rgb24.ref.png | Bin .../smask-stroke.traps.argb32.ref.png | Bin .../smask-stroke.traps.rgb24.ref.png | Bin .../test/reference/smask-text.argb32.ref.png | Bin .../reference/smask-text.base.argb32.ref.png | Bin .../reference/smask-text.base.rgb24.ref.png | Bin .../test/reference/smask-text.image16.ref.png | Bin .../reference/smask-text.mask.argb32.ref.png | Bin .../reference/smask-text.mask.rgb24.ref.png | Bin .../test/reference/smask-text.pdf.ref.png | Bin .../test/reference/smask-text.ps2.ref.png | Bin .../test/reference/smask-text.ps3.ref.png | Bin .../test/reference/smask-text.quartz.ref.png | Bin .../test/reference/smask-text.rgb24.ref.png | Bin .../test/reference/smask-text.script.ref.png | Bin .../test/reference/smask-text.svg.ref.png | Bin .../test/reference/smask-text.traps.ref.png | Bin .../smask-text.xlib-fallback.ref.png | Bin .../test/reference/smask.argb32.ref.png | Bin .../test/reference/smask.base.argb32.ref.png | Bin .../test/reference/smask.base.rgb24.ref.png | Bin .../test/reference/smask.image16.ref.png | Bin .../test/reference/smask.mask.argb32.ref.png | Bin .../test/reference/smask.mask.rgb24.ref.png | Bin .../cairo}/test/reference/smask.pdf.xfail.png | Bin .../cairo}/test/reference/smask.ps.ref.png | Bin .../test/reference/smask.quartz.ref.png | Bin .../cairo}/test/reference/smask.rgb24.ref.png | Bin .../test/reference/smask.script.ref.png | Bin .../cairo}/test/reference/smask.svg.ref.png | Bin .../cairo}/test/reference/smask.traps.ref.png | Bin .../reference/smask.xlib-fallback.ref.png | Bin ...d-pattern-cache-stress.base.argb32.ref.png | Bin ...id-pattern-cache-stress.base.rgb24.ref.png | Bin .../solid-pattern-cache-stress.ref.png | Bin .../source-clip-scale.base.argb32.ref.png | Bin .../source-clip-scale.base.rgb24.ref.png | Bin .../reference/source-clip-scale.gl.ref.png | Bin .../reference/source-clip-scale.pdf.ref.png | Bin .../source-clip-scale.ps2.argb32.ref.png | Bin .../source-clip-scale.ps2.rgb24.ref.png | Bin .../source-clip-scale.ps3.argb32.ref.png | Bin .../source-clip-scale.ps3.rgb24.ref.png | Bin .../source-clip-scale.quartz.ref.png | Bin .../source-clip-scale.recording.ref.png | Bin .../test/reference/source-clip-scale.ref.png | Bin .../reference/source-clip-scale.svg.ref.png | Bin .../reference/source-clip.base.argb32.ref.png | Bin .../reference/source-clip.base.rgb24.ref.png | Bin .../cairo}/test/reference/source-clip.ref.png | Bin .../source-surface-scale-paint.argb32.ref.png | Bin ...ce-surface-scale-paint.base.argb32.ref.png | Bin ...rce-surface-scale-paint.base.rgb24.ref.png | Bin .../source-surface-scale-paint.rgb24.ref.png | Bin .../spline-decomposition.argb32.ref.png | Bin .../spline-decomposition.base.argb32.ref.png | Bin .../spline-decomposition.base.rgb24.ref.png | Bin .../spline-decomposition.image16.ref.png | Bin .../spline-decomposition.pdf.ref.png | Bin .../reference/spline-decomposition.ps.ref.png | Bin .../spline-decomposition.quartz.xfail.png | Bin .../spline-decomposition.rgb24.ref.png | Bin .../spline-decomposition.svg.ref.png | Bin .../spline-decomposition.traps.argb32.ref.png | Bin .../spline-decomposition.traps.rgb24.ref.png | Bin .../stride-12-image.base.argb32.ref.png | Bin .../stride-12-image.base.rgb24.ref.png | Bin .../reference/stride-12-image.image16.ref.png | Bin .../test/reference/stride-12-image.ps.ref.png | Bin .../test/reference/stride-12-image.ref.png | Bin .../stride-12-xlib-fallback.rgb24.ref.png | Bin .../stride-12-xlib-window.rgb24.ref.png | Bin .../reference/stride-12-xlib.argb32.ref.png | Bin .../reference/stride-12-xlib.rgb24.ref.png | Bin .../test/reference/stroke-clipped.ref.png | Bin .../stroke-ctm-caps.base.argb32.ref.png | Bin .../stroke-ctm-caps.base.rgb24.ref.png | Bin .../reference/stroke-ctm-caps.image16.ref.png | Bin .../stroke-ctm-caps.mask.argb32.ref.png | Bin .../stroke-ctm-caps.mask.rgb24.ref.png | Bin .../reference/stroke-ctm-caps.ps2.ref.png | Bin .../reference/stroke-ctm-caps.ps3.ref.png | Bin .../reference/stroke-ctm-caps.quartz.ref.png | Bin .../test/reference/stroke-ctm-caps.ref.png | Bin .../stroke-ctm-caps.traps.argb32.ref.png | Bin .../stroke-ctm-caps.traps.rgb24.ref.png | Bin .../reference/stroke-image.argb32.ref.png | Bin .../stroke-image.base.argb32.ref.png | Bin .../reference/stroke-image.base.rgb24.ref.png | Bin .../reference/stroke-image.image16.ref.png | Bin .../test/reference/stroke-image.pdf.ref.png | Bin .../test/reference/stroke-image.ps.ref.png | Bin .../reference/stroke-image.quartz.ref.png | Bin .../test/reference/stroke-image.rgb24.ref.png | Bin .../stroke-image.traps.argb32.ref.png | Bin .../stroke-image.traps.rgb24.ref.png | Bin .../stroke-open-box.base.argb32.ref.png | Bin .../stroke-open-box.base.rgb24.ref.png | Bin .../test/reference/stroke-open-box.ref.png | Bin .../reference/stroke-pattern.argb32.ref.png | Bin .../stroke-pattern.base.argb32.ref.png | Bin .../stroke-pattern.base.rgb24.ref.png | Bin .../reference/stroke-pattern.rgb24.ref.png | Bin .../reference/stroke-pattern.traps.ref.png | Bin .../stroke-xlib-fallback.rgb24.ref.png | Bin .../stroke-xlib-window.rgb24.ref.png | Bin .../test/reference/stroke-xlib.argb32.ref.png | Bin .../test/reference/stroke-xlib.rgb24.ref.png | Bin ...ubsurface-image-repeat.base.argb32.ref.png | Bin ...subsurface-image-repeat.base.rgb24.ref.png | Bin .../subsurface-image-repeat.image16.ref.png | Bin .../reference/subsurface-image-repeat.ref.png | Bin ...ubsurface-modify-child.base.argb32.ref.png | Bin ...subsurface-modify-child.base.rgb24.ref.png | Bin .../reference/subsurface-modify-child.ref.png | Bin ...bsurface-modify-parent.base.argb32.ref.png | Bin ...ubsurface-modify-parent.base.rgb24.ref.png | Bin .../subsurface-modify-parent.ref.png | Bin .../subsurface-outside-target.argb32.ref.png | Bin ...surface-outside-target.base.argb32.ref.png | Bin ...bsurface-outside-target.base.rgb24.ref.png | Bin .../subsurface-outside-target.rgb24.ref.png | Bin .../subsurface-pad.base.argb32.ref.png | Bin .../subsurface-pad.base.rgb24.ref.png | Bin .../reference/subsurface-pad.quartz.xfail.png | Bin .../test/reference/subsurface-pad.ref.png | Bin .../subsurface-reflect.base.argb32.ref.png | Bin .../subsurface-reflect.base.rgb24.ref.png | Bin .../test/reference/subsurface-reflect.ref.png | Bin .../subsurface-repeat.base.argb32.ref.png | Bin .../subsurface-repeat.base.rgb24.ref.png | Bin .../test/reference/subsurface-repeat.ref.png | Bin .../reference/subsurface-scale.argb32.ref.png | Bin .../subsurface-scale.base.argb32.ref.png | Bin .../subsurface-scale.base.rgb24.ref.png | Bin .../reference/subsurface-scale.rgb24.ref.png | Bin .../subsurface-scale.traps.argb32.ref.png | Bin .../subsurface-scale.traps.rgb24.ref.png | Bin ...surface-similar-repeat.base.argb32.ref.png | Bin ...bsurface-similar-repeat.base.rgb24.ref.png | Bin .../subsurface-similar-repeat.ref.png | Bin .../test/reference/subsurface.argb32.ref.png | Bin .../reference/subsurface.base.argb32.ref.png | Bin .../reference/subsurface.base.rgb24.ref.png | Bin .../test/reference/subsurface.image16.ref.png | Bin .../test/reference/subsurface.ps.ref.png | Bin .../test/reference/subsurface.rgb24.ref.png | Bin .../reference/subsurface.traps.argb32.ref.png | Bin .../reference/subsurface.traps.rgb24.ref.png | Bin ...pattern-big-scale-down.base.argb32.ref.png | Bin ...-pattern-big-scale-down.base.rgb24.ref.png | Bin .../surface-pattern-big-scale-down.ps.ref.png | Bin ...face-pattern-big-scale-down.quartz.ref.png | Bin .../surface-pattern-big-scale-down.ref.png | Bin .../surface-pattern-operator.argb32.ref.png | Bin ...rface-pattern-operator.base.argb32.ref.png | Bin ...urface-pattern-operator.base.rgb24.ref.png | Bin .../surface-pattern-operator.image16.ref.png | Bin ...face-pattern-operator.pdf.argb32.xfail.png | Bin ...rface-pattern-operator.pdf.rgb24.xfail.png | Bin ...ace-pattern-operator.quartz.argb32.ref.png | Bin ...face-pattern-operator.quartz.rgb24.ref.png | Bin .../surface-pattern-operator.rgb24.ref.png | Bin ...face-pattern-operator.traps.argb32.ref.png | Bin ...rface-pattern-operator.traps.rgb24.ref.png | Bin ...scale-down-extend-none.base.argb32.ref.png | Bin ...-scale-down-extend-none.base.rgb24.ref.png | Bin ...tern-scale-down-extend-none.quartz.ref.png | Bin ...ace-pattern-scale-down-extend-none.ref.png | Bin ...-scale-down-extend-pad.base.argb32.ref.png | Bin ...n-scale-down-extend-pad.base.rgb24.ref.png | Bin ...ern-scale-down-extend-pad.quartz.xfail.png | Bin ...face-pattern-scale-down-extend-pad.ref.png | Bin ...le-down-extend-reflect.base.argb32.ref.png | Bin ...ale-down-extend-reflect.base.rgb24.ref.png | Bin ...n-scale-down-extend-reflect.quartz.ref.png | Bin ...-pattern-scale-down-extend-reflect.ref.png | Bin ...ale-down-extend-repeat.base.argb32.ref.png | Bin ...cale-down-extend-repeat.base.rgb24.ref.png | Bin ...rn-scale-down-extend-repeat.quartz.ref.png | Bin ...e-pattern-scale-down-extend-repeat.ref.png | Bin .../surface-pattern-scale-down.argb32.ref.png | Bin ...ace-pattern-scale-down.base.argb32.ref.png | Bin ...face-pattern-scale-down.base.rgb24.ref.png | Bin ...surface-pattern-scale-down.image16.ref.png | Bin .../surface-pattern-scale-down.pdf.ref.png | Bin .../surface-pattern-scale-down.ps2.ref.png | Bin .../surface-pattern-scale-down.ps3.ref.png | Bin .../surface-pattern-scale-down.quartz.ref.png | Bin .../surface-pattern-scale-down.rgb24.ref.png | Bin .../surface-pattern-scale-up.argb32.ref.png | Bin ...rface-pattern-scale-up.base.argb32.ref.png | Bin ...urface-pattern-scale-up.base.rgb24.ref.png | Bin .../surface-pattern-scale-up.image16.ref.png | Bin .../surface-pattern-scale-up.pdf.ref.png | Bin .../surface-pattern-scale-up.ps2.ref.png | Bin .../surface-pattern-scale-up.ps3.ref.png | Bin .../surface-pattern-scale-up.quartz.xfail.png | Bin .../surface-pattern-scale-up.rgb24.ref.png | Bin .../reference/surface-pattern.argb32.ref.png | Bin .../surface-pattern.base.argb32.ref.png | Bin .../surface-pattern.base.rgb24.ref.png | Bin .../reference/surface-pattern.image16.ref.png | Bin .../reference/surface-pattern.pdf.xfail.png | Bin .../reference/surface-pattern.ps.xfail.png | Bin .../surface-pattern.quartz.xfail.png | Bin .../reference/surface-pattern.rgb24.ref.png | Bin .../reference/surface-pattern.svg.xfail.png | Bin .../svg-surface-source.argb32.ref.png | Bin .../svg-surface-source.base.argb32.ref.png | Bin .../svg-surface-source.base.rgb24.ref.png | Bin .../svg-surface-source.image16.ref.png | Bin .../svg-surface-source.rgb24.ref.png | Bin .../svg-surface-source.svg12.argb32.xfail.png | Bin .../svg-surface-source.svg12.rgb24.xfail.png | Bin .../text-antialias-gray.argb32.ref.png | Bin .../text-antialias-gray.base.argb32.ref.png | Bin .../text-antialias-gray.base.rgb24.ref.png | Bin .../text-antialias-gray.image16.ref.png | Bin .../text-antialias-gray.quartz.ref.png | Bin .../text-antialias-gray.rgb24.ref.png | Bin .../text-antialias-gray.traps.ref.png | Bin .../text-antialias-none.base.argb32.ref.png | Bin .../text-antialias-none.base.rgb24.ref.png | Bin .../text-antialias-none.quartz.ref.png | Bin .../reference/text-antialias-none.ref.png | Bin ...text-antialias-subpixel-bgr.argb32.ref.png | Bin ...antialias-subpixel-bgr.base.argb32.ref.png | Bin ...-antialias-subpixel-bgr.base.rgb24.ref.png | Bin ...ext-antialias-subpixel-bgr.image16.ref.png | Bin ...antialias-subpixel-bgr.mask.argb32.ref.png | Bin ...-antialias-subpixel-bgr.mask.rgb24.ref.png | Bin .../text-antialias-subpixel-bgr.rgb24.ref.png | Bin .../text-antialias-subpixel-bgr.traps.ref.png | Bin ...text-antialias-subpixel-rgb.argb32.ref.png | Bin ...antialias-subpixel-rgb.base.argb32.ref.png | Bin ...-antialias-subpixel-rgb.base.rgb24.ref.png | Bin ...ext-antialias-subpixel-rgb.image16.ref.png | Bin ...antialias-subpixel-rgb.mask.argb32.ref.png | Bin ...-antialias-subpixel-rgb.mask.rgb24.ref.png | Bin .../text-antialias-subpixel-rgb.rgb24.ref.png | Bin .../text-antialias-subpixel-rgb.traps.ref.png | Bin ...ext-antialias-subpixel-vbgr.argb32.ref.png | Bin ...ntialias-subpixel-vbgr.base.argb32.ref.png | Bin ...antialias-subpixel-vbgr.base.rgb24.ref.png | Bin ...xt-antialias-subpixel-vbgr.image16.ref.png | Bin ...ntialias-subpixel-vbgr.mask.argb32.ref.png | Bin ...antialias-subpixel-vbgr.mask.rgb24.ref.png | Bin ...text-antialias-subpixel-vbgr.rgb24.ref.png | Bin ...text-antialias-subpixel-vbgr.traps.ref.png | Bin ...ext-antialias-subpixel-vrgb.argb32.ref.png | Bin ...ntialias-subpixel-vrgb.base.argb32.ref.png | Bin ...antialias-subpixel-vrgb.base.rgb24.ref.png | Bin ...xt-antialias-subpixel-vrgb.image16.ref.png | Bin ...ntialias-subpixel-vrgb.mask.argb32.ref.png | Bin ...antialias-subpixel-vrgb.mask.rgb24.ref.png | Bin ...text-antialias-subpixel-vrgb.rgb24.ref.png | Bin ...text-antialias-subpixel-vrgb.traps.ref.png | Bin .../text-antialias-subpixel.argb32.ref.png | Bin ...ext-antialias-subpixel.base.argb32.ref.png | Bin ...t-antialias-subpixel.base.argb32.xfail.png | Bin ...text-antialias-subpixel.base.rgb24.ref.png | Bin ...xt-antialias-subpixel.base.rgb24.xfail.png | Bin .../text-antialias-subpixel.image16.ref.png | Bin ...ext-antialias-subpixel.mask.argb32.ref.png | Bin ...text-antialias-subpixel.mask.rgb24.ref.png | Bin .../text-antialias-subpixel.quartz.ref.png | Bin .../text-antialias-subpixel.rgb24.ref.png | Bin .../text-antialias-subpixel.traps.ref.png | Bin .../reference/text-glyph-range.argb32.ref.png | Bin .../text-glyph-range.base.argb32.ref.png | Bin .../text-glyph-range.base.rgb24.ref.png | Bin .../text-glyph-range.image16.ref.png | Bin .../reference/text-glyph-range.ps.ref.png | Bin .../reference/text-glyph-range.quartz.ref.png | Bin .../reference/text-glyph-range.rgb24.ref.png | Bin .../reference/text-glyph-range.traps.ref.png | Bin .../reference/text-pattern.argb32.ref.png | Bin .../text-pattern.base.argb32.ref.png | Bin .../reference/text-pattern.base.rgb24.ref.png | Bin .../reference/text-pattern.pdf.argb32.ref.png | Bin .../reference/text-pattern.pdf.rgb24.ref.png | Bin .../reference/text-pattern.ps2.argb32.ref.png | Bin .../reference/text-pattern.ps2.rgb24.ref.png | Bin .../reference/text-pattern.ps3.argb32.ref.png | Bin .../reference/text-pattern.ps3.rgb24.ref.png | Bin .../text-pattern.quartz.argb32.ref.png | Bin .../text-pattern.quartz.rgb24.ref.png | Bin .../test/reference/text-pattern.rgb24.ref.png | Bin .../reference/text-pattern.svg.argb32.ref.png | Bin .../reference/text-pattern.svg.rgb24.ref.png | Bin .../text-pattern.traps.argb32.ref.png | Bin .../text-pattern.traps.rgb24.ref.png | Bin .../reference/text-rotate.base.argb32.ref.png | Bin .../reference/text-rotate.base.rgb24.ref.png | Bin .../reference/text-rotate.image16.ref.png | Bin .../reference/text-rotate.mask.argb32.ref.png | Bin .../reference/text-rotate.mask.rgb24.ref.png | Bin .../test/reference/text-rotate.pdf.ref.png | Bin .../test/reference/text-rotate.ps.ref.png | Bin .../test/reference/text-rotate.quartz.ref.png | Bin .../cairo}/test/reference/text-rotate.ref.png | Bin .../test/reference/text-rotate.svg.ref.png | Bin .../test/reference/text-rotate.traps.ref.png | Bin .../text-rotate.xlib-fallback.ref.png | Bin .../text-transform.base.argb32.ref.png | Bin .../text-transform.base.rgb24.ref.png | Bin .../reference/text-transform.image16.ref.png | Bin .../text-transform.pdf.argb32.ref.png | Bin .../text-transform.pdf.rgb24.ref.png | Bin .../test/reference/text-transform.ps2.ref.png | Bin .../test/reference/text-transform.ps3.ref.png | Bin .../test/reference/text-transform.ref.png | Bin .../test/reference/text-transform.svg.ref.png | Bin .../test/reference/tiger.argb32.ref.png | Bin .../test/reference/tiger.base.argb32.ref.png | Bin .../test/reference/tiger.base.rgb24.ref.png | Bin .../cairo}/test/reference/tiger.rgb24.ref.png | Bin .../test/reference/tiger.traps.argb32.ref.png | Bin .../test/reference/tiger.traps.rgb24.ref.png | Bin .../reference/tighten-bounds.argb32.ref.png | Bin .../tighten-bounds.base.argb32.ref.png | Bin .../tighten-bounds.base.rgb24.ref.png | Bin .../reference/tighten-bounds.rgb24.ref.png | Bin .../tighten-bounds.traps.argb32.ref.png | Bin .../tighten-bounds.traps.rgb24.ref.png | Bin .../test/reference/transforms.argb32.ref.png | Bin .../reference/transforms.base.argb32.ref.png | Bin .../reference/transforms.base.rgb24.ref.png | Bin .../test/reference/transforms.image16.ref.png | Bin .../test/reference/transforms.ps2.ref.png | Bin .../test/reference/transforms.ps3.ref.png | Bin .../test/reference/transforms.rgb24.ref.png | Bin .../reference/transforms.traps.argb32.ref.png | Bin .../reference/transforms.traps.rgb24.ref.png | Bin ...translate-show-surface.base.argb32.ref.png | Bin .../translate-show-surface.base.rgb24.ref.png | Bin .../reference/translate-show-surface.ref.png | Bin .../test/reference/trap-clip.argb32.ref.png | Bin .../reference/trap-clip.base.argb32.ref.png | Bin .../reference/trap-clip.base.rgb24.ref.png | Bin .../test/reference/trap-clip.image16.ref.png | Bin .../reference/trap-clip.mask.argb32.ref.png | Bin .../reference/trap-clip.mask.rgb24.ref.png | Bin .../reference/trap-clip.ps2.argb32.ref.png | Bin .../reference/trap-clip.ps2.rgb24.ref.png | Bin .../reference/trap-clip.ps3.argb32.ref.png | Bin .../reference/trap-clip.ps3.rgb24.ref.png | Bin .../reference/trap-clip.quartz.argb32.ref.png | Bin .../reference/trap-clip.quartz.rgb24.ref.png | Bin .../test/reference/trap-clip.rgb24.ref.png | Bin .../trap-clip.test-paginated.argb32.ref.png | Bin .../reference/trap-clip.traps.argb32.ref.png | Bin .../reference/trap-clip.traps.rgb24.ref.png | Bin .../twin-antialias-gray.base.argb32.ref.png | Bin .../twin-antialias-gray.base.rgb24.ref.png | Bin .../twin-antialias-gray.image16.ref.png | Bin .../twin-antialias-gray.mask.argb32.ref.png | Bin .../twin-antialias-gray.mask.rgb24.ref.png | Bin .../reference/twin-antialias-gray.ref.png | Bin .../twin-antialias-gray.traps.argb32.ref.png | Bin .../twin-antialias-gray.traps.rgb24.ref.png | Bin .../twin-antialias-mixed.argb32.ref.png | Bin .../twin-antialias-mixed.base.argb32.ref.png | Bin .../twin-antialias-mixed.base.rgb24.ref.png | Bin .../twin-antialias-mixed.image16.ref.png | Bin .../twin-antialias-mixed.rgb24.ref.png | Bin .../twin-antialias-mixed.traps.argb32.ref.png | Bin .../twin-antialias-mixed.traps.rgb24.ref.png | Bin .../twin-antialias-none.argb32.ref.png | Bin .../twin-antialias-none.base.argb32.ref.png | Bin .../twin-antialias-none.base.rgb24.ref.png | Bin .../twin-antialias-none.rgb24.ref.png | Bin .../twin-antialias-none.traps.argb32.ref.png | Bin .../twin-antialias-none.traps.rgb24.ref.png | Bin ...win-antialias-subpixel.base.argb32.ref.png | Bin ...twin-antialias-subpixel.base.rgb24.ref.png | Bin .../twin-antialias-subpixel.image16.ref.png | Bin ...win-antialias-subpixel.mask.argb32.ref.png | Bin ...twin-antialias-subpixel.mask.rgb24.ref.png | Bin .../reference/twin-antialias-subpixel.ref.png | Bin ...in-antialias-subpixel.traps.argb32.ref.png | Bin ...win-antialias-subpixel.traps.rgb24.ref.png | Bin .../test/reference/twin.base.argb32.ref.png | Bin .../test/reference/twin.base.rgb24.ref.png | Bin .../test/reference/twin.image16.ref.png | Bin .../test/reference/twin.mask.argb32.ref.png | Bin .../test/reference/twin.mask.rgb24.ref.png | Bin .../cairo}/test/reference/twin.ps.ref.png | Bin .../cairo}/test/reference/twin.ref.png | Bin .../cairo}/test/reference/twin.svg.ref.png | Bin .../test/reference/twin.traps.argb32.ref.png | Bin .../test/reference/twin.traps.rgb24.ref.png | Bin .../unaligned-box.base.argb32.ref.png | Bin .../unaligned-box.base.rgb24.ref.png | Bin .../test/reference/unaligned-box.ref.png | Bin .../unaligned-box.traps.argb32.ref.png | Bin .../unaligned-box.traps.rgb24.ref.png | Bin .../unantialiased-shapes.base.argb32.ref.png | Bin .../unantialiased-shapes.base.rgb24.ref.png | Bin .../unantialiased-shapes.quartz.ref.png | Bin .../reference/unantialiased-shapes.ref.png | Bin .../unantialiased-shapes.traps.argb32.ref.png | Bin .../unantialiased-shapes.traps.rgb24.ref.png | Bin .../unbounded-operator.argb32.ref.png | Bin .../unbounded-operator.base.argb32.ref.png | Bin .../unbounded-operator.base.rgb24.ref.png | Bin .../unbounded-operator.gl.argb32.xfail.png | Bin .../unbounded-operator.gl.rgb24.xfail.png | Bin .../unbounded-operator.image16.ref.png | Bin .../unbounded-operator.mask.argb32.ref.png | Bin .../unbounded-operator.mask.rgb24.ref.png | Bin .../unbounded-operator.pdf.argb32.ref.png | Bin .../unbounded-operator.ps2.argb32.ref.png | Bin .../unbounded-operator.ps3.argb32.ref.png | Bin .../unbounded-operator.quartz.argb32.ref.png | Bin .../unbounded-operator.quartz.rgb24.ref.png | Bin .../unbounded-operator.rgb24.ref.png | Bin .../unbounded-operator.svg12.argb32.ref.png | Bin .../unbounded-operator.svg12.rgb24.xfail.png | Bin .../unbounded-operator.traps.argb32.ref.png | Bin .../unbounded-operator.traps.rgb24.ref.png | Bin .../reference/unclosed-strokes.argb32.ref.png | Bin .../unclosed-strokes.base.argb32.ref.png | Bin .../unclosed-strokes.base.rgb24.ref.png | Bin .../reference/unclosed-strokes.rgb24.ref.png | Bin .../unclosed-strokes.traps.argb32.ref.png | Bin .../unclosed-strokes.traps.rgb24.ref.png | Bin .../user-font-mask.base.argb32.ref.png | Bin .../user-font-mask.base.rgb24.ref.png | Bin .../reference/user-font-mask.image16.ref.png | Bin .../test/reference/user-font-mask.pdf.ref.png | Bin .../test/reference/user-font-mask.ps2.ref.png | Bin .../test/reference/user-font-mask.ps3.ref.png | Bin .../test/reference/user-font-mask.ref.png | Bin .../test/reference/user-font-mask.svg.ref.png | Bin .../reference/user-font-proxy.argb32.ref.png | Bin .../user-font-proxy.base.argb32.ref.png | Bin .../user-font-proxy.base.rgb24.ref.png | Bin .../reference/user-font-proxy.image16.ref.png | Bin .../user-font-proxy.pdf.argb32.ref.png | Bin .../reference/user-font-proxy.pdf.ref.png | Bin .../user-font-proxy.pdf.rgb24.ref.png | Bin .../test/reference/user-font-proxy.ps.ref.png | Bin .../reference/user-font-proxy.quartz.ref.png | Bin .../reference/user-font-proxy.rgb24.ref.png | Bin .../reference/user-font-proxy.svg.ref.png | Bin .../reference/user-font-proxy.traps.ref.png | Bin .../user-font-rescale.argb32.ref.png | Bin .../user-font-rescale.base.argb32.ref.png | Bin .../user-font-rescale.base.rgb24.ref.png | Bin .../user-font-rescale.image16.ref.png | Bin .../reference/user-font-rescale.ps.ref.png | Bin .../user-font-rescale.quartz.ref.png | Bin .../reference/user-font-rescale.rgb24.ref.png | Bin .../reference/user-font-rescale.svg.ref.png | Bin .../reference/user-font-rescale.traps.ref.png | Bin .../reference/user-font.base.argb32.ref.png | Bin .../reference/user-font.base.rgb24.ref.png | Bin .../test/reference/user-font.image16.ref.png | Bin .../reference/user-font.mask.argb32.ref.png | Bin .../reference/user-font.mask.rgb24.ref.png | Bin .../test/reference/user-font.pdf.ref.png | Bin .../test/reference/user-font.ps.ref.png | Bin .../test/reference/user-font.quartz.ref.png | Bin .../cairo}/test/reference/user-font.ref.png | Bin .../test/reference/user-font.svg.ref.png | Bin .../reference/user-font.traps.argb32.ref.png | Bin .../reference/user-font.traps.rgb24.ref.png | Bin .../white-in-noop.base.argb32.ref.png | Bin .../white-in-noop.base.rgb24.ref.png | Bin .../test/reference/white-in-noop.ref.png | Bin .../reference/world-map-fill.argb32.ref.png | Bin .../world-map-fill.base.argb32.ref.png | Bin .../world-map-fill.base.rgb24.ref.png | Bin .../reference/world-map-fill.image16.ref.png | Bin .../reference/world-map-fill.rgb24.ref.png | Bin .../world-map-fill.traps.argb32.ref.png | Bin .../world-map-fill.traps.rgb24.ref.png | Bin .../reference/world-map-stroke.argb32.ref.png | Bin .../world-map-stroke.base.argb32.ref.png | Bin .../world-map-stroke.base.rgb24.ref.png | Bin .../world-map-stroke.image16.ref.png | Bin .../world-map-stroke.mask.argb32.ref.png | Bin .../world-map-stroke.mask.rgb24.ref.png | Bin .../reference/world-map-stroke.rgb24.ref.png | Bin .../world-map-stroke.traps.argb32.ref.png | Bin .../world-map-stroke.traps.rgb24.ref.png | Bin .../test/reference/world-map.argb32.ref.png | Bin .../reference/world-map.base.argb32.ref.png | Bin .../reference/world-map.base.rgb24.ref.png | Bin .../test/reference/world-map.image16.ref.png | Bin .../reference/world-map.mask.argb32.ref.png | Bin .../reference/world-map.mask.rgb24.ref.png | Bin .../test/reference/world-map.rgb24.ref.png | Bin .../reference/world-map.traps.argb32.ref.png | Bin .../reference/world-map.traps.rgb24.ref.png | Bin .../xcb-huge-image-shm.base.argb32.ref.png | Bin .../xcb-huge-image-shm.base.rgb24.ref.png | Bin .../test/reference/xcb-huge-image-shm.ref.png | Bin .../test/reference/xcb-huge-subimage.ref.png | Bin .../xcb-snapshot-assert.base.argb32.ref.png | Bin .../xcb-snapshot-assert.base.rgb24.ref.png | Bin .../reference/xcb-snapshot-assert.ref.png | Bin .../xcb-stress-cache.base.argb32.ref.png | Bin .../xcb-stress-cache.base.rgb24.ref.png | Bin .../test/reference/xcb-stress-cache.ref.png | Bin .../xcb-surface-source.argb32.ref.png | Bin .../xcb-surface-source.base.argb32.ref.png | Bin .../xcb-surface-source.base.rgb24.ref.png | Bin .../xcb-surface-source.image16.ref.png | Bin .../xcb-surface-source.ps.argb32.ref.png | Bin .../xcb-surface-source.ps.rgb24.ref.png | Bin .../xcb-surface-source.rgb24.ref.png | Bin .../xcomposite-projection.base.argb32.ref.png | Bin .../xcomposite-projection.base.rgb24.ref.png | Bin .../xcomposite-projection.image16.ref.png | Bin .../xcomposite-projection.mask.argb32.ref.png | Bin .../xcomposite-projection.mask.rgb24.ref.png | Bin .../xcomposite-projection.quartz.ref.png | Bin .../reference/xcomposite-projection.ref.png | Bin ...xcomposite-projection.traps.argb32.ref.png | Bin .../xcomposite-projection.traps.rgb24.ref.png | Bin .../xlib-expose-event.base.argb32.ref.png | Bin .../xlib-expose-event.base.rgb24.ref.png | Bin .../xlib-expose-event.image16.ref.png | Bin .../reference/xlib-expose-event.ps.ref.png | Bin .../test/reference/xlib-expose-event.ref.png | Bin .../xlib-surface-source.argb32.ref.png | Bin .../xlib-surface-source.base.argb32.ref.png | Bin .../xlib-surface-source.base.rgb24.ref.png | Bin .../xlib-surface-source.image16.ref.png | Bin .../xlib-surface-source.ps.argb32.ref.png | Bin .../xlib-surface-source.ps.rgb24.ref.png | Bin .../xlib-surface-source.rgb24.ref.png | Bin ...xlib-surface-source.svg12.argb32.xfail.png | Bin .../xlib-surface-source.svg12.rgb24.xfail.png | Bin .../reference/zero-alpha.base.argb32.ref.png | Bin .../reference/zero-alpha.base.rgb24.ref.png | Bin .../cairo}/test/reference/zero-alpha.ref.png | Bin .../test/reference/zero-mask.argb32.ref.png | Bin .../reference/zero-mask.base.argb32.ref.png | Bin .../reference/zero-mask.base.rgb24.ref.png | Bin .../test/reference/zero-mask.rgb24.ref.png | Bin .../cairo}/test/reflected-stroke.c | 0 {cairo => 3rd-party/cairo}/test/rel-path.c | 0 .../cairo}/test/rgb24-ignore-alpha.c | 0 {cairo => 3rd-party/cairo}/test/romedalen.jpg | Bin {cairo => 3rd-party/cairo}/test/romedalen.png | Bin .../cairo}/test/rotate-image-surface-paint.c | 0 .../cairo}/test/rotated-clip.c | 0 .../cairo}/test/rounded-rectangle-fill.c | 0 .../cairo}/test/rounded-rectangle-stroke.c | 0 .../cairo}/test/run-cairo-test-suite.sh | 0 {cairo => 3rd-party/cairo}/test/sample.c | 0 .../test/scale-down-source-surface-paint.c | 0 .../cairo}/test/scale-offset-image.c | 0 .../cairo}/test/scale-offset-similar.c | 0 .../cairo}/test/scale-source-surface-paint.c | 0 .../cairo}/test/scaled-font-zero-matrix.c | 0 {cairo => 3rd-party/cairo}/test/scarab.jpg | Bin .../cairo}/test/select-font-face.c | 0 .../cairo}/test/select-font-no-show-text.c | 0 .../cairo}/test/self-copy-overlap.c | 0 {cairo => 3rd-party/cairo}/test/self-copy.c | 0 .../cairo}/test/self-intersecting.c | 0 {cairo => 3rd-party/cairo}/test/set-source.c | 0 .../cairo}/test/shape-general-convex.c | 0 .../cairo}/test/shape-sierpinski.c | 0 .../cairo}/test/show-glyphs-advance.c | 0 .../cairo}/test/show-glyphs-many.c | 0 .../cairo}/test/show-text-current-point.c | 0 .../cairo}/test/skew-extreme.c | 0 {cairo => 3rd-party/cairo}/test/smask-fill.c | 0 .../cairo}/test/smask-image-mask.c | 0 {cairo => 3rd-party/cairo}/test/smask-mask.c | 0 {cairo => 3rd-party/cairo}/test/smask-paint.c | 0 .../cairo}/test/smask-stroke.c | 0 {cairo => 3rd-party/cairo}/test/smask-text.c | 0 {cairo => 3rd-party/cairo}/test/smask.c | 0 .../cairo}/test/solid-pattern-cache-stress.c | 0 .../cairo}/test/source-clip-scale.c | 0 {cairo => 3rd-party/cairo}/test/source-clip.c | 0 .../cairo}/test/source-surface-scale-paint.c | 0 .../cairo}/test/spline-decomposition.c | 0 .../cairo}/test/stride-12-image.c | 0 .../cairo}/test/stroke-clipped.c | 0 .../cairo}/test/stroke-ctm-caps.c | 0 .../cairo}/test/stroke-image.c | 0 .../cairo}/test/stroke-open-box.c | 0 .../cairo}/test/stroke-pattern.c | 0 .../cairo}/test/subsurface-image-repeat.c | 0 .../cairo}/test/subsurface-modify-child.c | 0 .../cairo}/test/subsurface-modify-parent.c | 0 .../cairo}/test/subsurface-outside-target.c | 0 .../cairo}/test/subsurface-pad.c | 0 .../cairo}/test/subsurface-reflect.c | 0 .../cairo}/test/subsurface-repeat.c | 0 .../cairo}/test/subsurface-scale.c | 0 .../cairo}/test/subsurface-similar-repeat.c | 0 {cairo => 3rd-party/cairo}/test/subsurface.c | 0 .../cairo}/test/surface-finish-twice.c | 0 .../test/surface-pattern-big-scale-down.c | 0 .../cairo}/test/surface-pattern-operator.c | 0 .../test/surface-pattern-scale-down-extend.c | 0 .../cairo}/test/surface-pattern-scale-down.c | 0 .../cairo}/test/surface-pattern-scale-up.c | 0 .../cairo}/test/surface-pattern.c | 0 .../cairo}/test/surface-source.c | 0 {cairo => 3rd-party/cairo}/test/svg-clip.c | 0 .../cairo}/test/svg-surface-source.c | 0 {cairo => 3rd-party/cairo}/test/svg-surface.c | 0 {cairo => 3rd-party/cairo}/test/svg2png.c | 0 {cairo => 3rd-party/cairo}/test/testsvg | 0 {cairo => 3rd-party/cairo}/test/testtable.js | 0 .../cairo}/test/text-antialias-subpixel.c | 0 .../cairo}/test/text-antialias.c | 0 .../cairo}/test/text-cache-crash.c | 0 .../cairo}/test/text-glyph-range.c | 0 .../cairo}/test/text-pattern.c | 0 {cairo => 3rd-party/cairo}/test/text-rotate.c | 0 .../cairo}/test/text-transform.c | 0 .../cairo}/test/text-zero-len.c | 0 {cairo => 3rd-party/cairo}/test/tiger.c | 0 {cairo => 3rd-party/cairo}/test/tiger.inc | 0 .../cairo}/test/tighten-bounds.c | 0 .../cairo}/test/toy-font-face.c | 0 {cairo => 3rd-party/cairo}/test/transforms.c | 0 .../cairo}/test/translate-show-surface.c | 0 {cairo => 3rd-party/cairo}/test/trap-clip.c | 0 .../cairo}/test/twin-antialias-gray.c | 0 .../cairo}/test/twin-antialias-mixed.c | 0 .../cairo}/test/twin-antialias-none.c | 0 .../cairo}/test/twin-antialias-subpixel.c | 0 {cairo => 3rd-party/cairo}/test/twin.c | 0 .../cairo}/test/unaligned-box.c | 0 .../cairo}/test/unantialiased-shapes.c | 0 .../cairo}/test/unbounded-operator.c | 0 .../cairo}/test/unclosed-strokes.c | 0 {cairo => 3rd-party/cairo}/test/user-data.c | 0 .../cairo}/test/user-font-mask.c | 0 .../cairo}/test/user-font-proxy.c | 0 .../cairo}/test/user-font-rescale.c | 0 {cairo => 3rd-party/cairo}/test/user-font.c | 0 .../cairo}/test/white-in-noop.c | 0 {cairo => 3rd-party/cairo}/test/world-map.c | 0 {cairo => 3rd-party/cairo}/test/world-map.h | 0 .../cairo}/test/xcb-huge-image-shm.c | 0 .../cairo}/test/xcb-huge-subimage.c | 0 .../cairo}/test/xcb-snapshot-assert.c | 0 .../cairo}/test/xcb-stress-cache.c | 0 .../cairo}/test/xcb-surface-source.c | 0 .../cairo}/test/xcomposite-projection.c | 0 .../cairo}/test/xlib-expose-event.c | 0 .../cairo}/test/xlib-surface-source.c | 0 .../cairo}/test/xlib-surface.c | 0 {cairo => 3rd-party/cairo}/test/zero-alpha.c | 0 {cairo => 3rd-party/cairo}/test/zero-mask.c | 0 {cairo => 3rd-party/cairo}/util/.gitignore | 0 {cairo => 3rd-party/cairo}/util/COPYING | 0 {cairo => 3rd-party/cairo}/util/Makefile.am | 0 {cairo => 3rd-party/cairo}/util/README | 0 .../cairo}/util/backtrace-symbols.c | 0 .../cairo}/util/cairo-api-update | 0 .../cairo}/util/cairo-fdr/Makefile.am | 0 .../cairo}/util/cairo-fdr/fdr.c | 0 .../cairo}/util/cairo-gobject/Makefile.am | 0 .../util/cairo-gobject/cairo-gobject-enums.c | 0 .../cairo-gobject/cairo-gobject-structs.c | 0 .../cairo}/util/cairo-gobject/cairo-gobject.h | 0 .../cairo}/util/cairo-missing/Makefile.am | 0 .../util/cairo-missing/Makefile.sources | 0 .../cairo}/util/cairo-missing/Makefile.win32 | 0 .../cairo}/util/cairo-missing/cairo-missing.h | 0 .../cairo}/util/cairo-missing/getline.c | 0 .../cairo}/util/cairo-missing/strndup.c | 0 .../cairo}/util/cairo-script/.gitignore | 0 .../cairo}/util/cairo-script/COPYING | 0 .../cairo}/util/cairo-script/Makefile.am | 0 .../cairo}/util/cairo-script/Makefile.sources | 0 .../cairo}/util/cairo-script/Makefile.win32 | 0 .../util/cairo-script/cairo-script-file.c | 0 .../util/cairo-script/cairo-script-hash.c | 0 .../cairo-script/cairo-script-interpreter.c | 0 .../cairo-script/cairo-script-interpreter.h | 0 .../util/cairo-script/cairo-script-objects.c | 0 .../cairo-script/cairo-script-operators.c | 0 .../util/cairo-script/cairo-script-private.h | 0 .../util/cairo-script/cairo-script-scanner.c | 0 .../util/cairo-script/cairo-script-stack.c | 0 .../cairo}/util/cairo-script/csi-bind.c | 0 .../cairo}/util/cairo-script/csi-exec.c | 0 .../cairo}/util/cairo-script/csi-replay.c | 0 .../cairo}/util/cairo-script/csi-trace.c | 0 .../util/cairo-script/examples/Makefile.am | 0 .../util/cairo-script/examples/dragon.cs | 0 .../util/cairo-script/examples/hilbert.cs | 0 .../util/cairo-script/examples/infinichess.cs | 0 .../cairo-script/examples/interference.cs | 0 .../cairo-script/examples/pythagoras-tree.cs | 0 .../util/cairo-script/examples/sierpinski.cs | 0 .../examples/wedgeAnnulus_crop_ybRings.cs | 0 .../util/cairo-script/examples/world-map.cs | 0 .../util/cairo-script/examples/zrusin.cs | 0 .../cairo}/util/cairo-sphinx/.gitignore | 0 .../cairo}/util/cairo-sphinx/Makefile.am | 0 .../cairo}/util/cairo-sphinx/fdr.c | 0 .../cairo}/util/cairo-sphinx/sphinx.c | 0 .../cairo}/util/cairo-trace/.gitignore | 0 .../cairo}/util/cairo-trace/COPYING | 0 .../cairo}/util/cairo-trace/COPYING-GPL-3 | 0 .../cairo}/util/cairo-trace/Makefile.am | 0 .../cairo}/util/cairo-trace/cairo-trace.in | 0 .../cairo}/util/cairo-trace/lookup-symbol.c | 0 .../cairo}/util/cairo-trace/lookup-symbol.h | 0 .../cairo}/util/cairo-trace/trace.c | 0 {cairo => 3rd-party/cairo}/util/cairo-view | 0 {cairo => 3rd-party/cairo}/util/cairo.modules | 0 {cairo => 3rd-party/cairo}/util/font-view.c | 0 .../cairo}/util/malloc-stats.c | 0 .../cairo}/util/show-contour.c | 0 {cairo => 3rd-party/cairo}/util/show-edges.c | 0 {cairo => 3rd-party/cairo}/util/show-events.c | 0 .../cairo}/util/show-polygon.c | 0 {cairo => 3rd-party/cairo}/util/show-traps.c | 0 .../cairo}/util/trace-to-xml.c | 0 {cairo => 3rd-party/cairo}/util/waterfall | 0 .../cairo}/util/xml-to-trace.c | 0 {cairo => 3rd-party/cairo}/util/xr2cairo | 0 {libpng16 => 3rd-party/libpng}/ANNOUNCE | 0 {libpng16 => 3rd-party/libpng}/CHANGES | 0 {libpng16 => 3rd-party/libpng}/CMakeLists.txt | 0 {libpng16 => 3rd-party/libpng}/INSTALL | 0 {libpng16 => 3rd-party/libpng}/LICENSE | 0 {libpng16 => 3rd-party/libpng}/Makefile.am | 0 {libpng16 => 3rd-party/libpng}/README | 0 {libpng16 => 3rd-party/libpng}/TODO | 0 {libpng16 => 3rd-party/libpng}/arm/arm_init.c | 0 .../libpng}/arm/filter_neon.S | 0 .../libpng}/arm/filter_neon_intrinsics.c | 0 {libpng16 => 3rd-party/libpng}/autogen.sh | 0 {libpng16 => 3rd-party/libpng}/configure.ac | 0 .../libpng}/contrib/README.txt | 0 .../libpng}/contrib/conftest/README | 0 .../libpng}/contrib/conftest/read.dfa | 0 .../libpng}/contrib/conftest/s_read.dfa | 0 .../libpng}/contrib/conftest/s_write.dfa | 0 .../libpng}/contrib/conftest/simple.dfa | 0 .../libpng}/contrib/conftest/write.dfa | 0 .../libpng}/contrib/examples/README.txt | 0 .../libpng}/contrib/examples/iccfrompng.c | 0 .../libpng}/contrib/examples/pngpixel.c | 0 .../libpng}/contrib/examples/pngtopng.c | 0 .../libpng}/contrib/gregbook/COPYING | 0 .../libpng}/contrib/gregbook/LICENSE | 0 .../libpng}/contrib/gregbook/Makefile.mingw32 | 0 .../libpng}/contrib/gregbook/Makefile.sgi | 0 .../libpng}/contrib/gregbook/Makefile.unx | 0 .../libpng}/contrib/gregbook/Makefile.w32 | 0 .../libpng}/contrib/gregbook/README | 0 .../libpng}/contrib/gregbook/makevms.com | 0 .../libpng}/contrib/gregbook/readpng.c | 0 .../libpng}/contrib/gregbook/readpng.h | 0 .../libpng}/contrib/gregbook/readpng2.c | 0 .../libpng}/contrib/gregbook/readpng2.h | 0 .../libpng}/contrib/gregbook/readppm.c | 0 .../libpng}/contrib/gregbook/rpng-win.c | 0 .../libpng}/contrib/gregbook/rpng-x.c | 0 .../libpng}/contrib/gregbook/rpng2-win.c | 0 .../libpng}/contrib/gregbook/rpng2-x.c | 0 .../libpng}/contrib/gregbook/toucan.png | Bin .../libpng}/contrib/gregbook/wpng.c | 0 .../libpng}/contrib/gregbook/writepng.c | 0 .../libpng}/contrib/gregbook/writepng.h | 0 .../libpng}/contrib/libtests/fakepng.c | 0 .../libpng}/contrib/libtests/gentests.sh | 0 .../libpng}/contrib/libtests/makepng.c | 0 .../libpng}/contrib/libtests/pngstest.c | 0 .../libpng}/contrib/libtests/pngunknown.c | 0 .../libpng}/contrib/libtests/pngvalid.c | 0 .../libpng}/contrib/libtests/readpng.c | 0 .../libpng}/contrib/libtests/tarith.c | 0 .../libpng}/contrib/libtests/timepng.c | 0 .../libpng}/contrib/pngminim/README | 0 .../libpng}/contrib/pngminim/decoder/README | 0 .../libpng}/contrib/pngminim/decoder/makefile | 0 .../contrib/pngminim/decoder/pngusr.dfa | 0 .../libpng}/contrib/pngminim/decoder/pngusr.h | 0 .../libpng}/contrib/pngminim/encoder/README | 0 .../libpng}/contrib/pngminim/encoder/makefile | 0 .../contrib/pngminim/encoder/pngusr.dfa | 0 .../libpng}/contrib/pngminim/encoder/pngusr.h | 0 .../libpng}/contrib/pngminim/preader/README | 0 .../libpng}/contrib/pngminim/preader/makefile | 0 .../contrib/pngminim/preader/pngusr.dfa | 0 .../libpng}/contrib/pngminim/preader/pngusr.h | 0 .../libpng}/contrib/pngminus/README | 0 .../libpng}/contrib/pngminus/makefile.std | 0 .../libpng}/contrib/pngminus/makefile.tc3 | 0 .../libpng}/contrib/pngminus/makevms.com | 0 .../libpng}/contrib/pngminus/png2pnm.bat | 0 .../libpng}/contrib/pngminus/png2pnm.c | 0 .../libpng}/contrib/pngminus/png2pnm.sh | 0 .../libpng}/contrib/pngminus/pngminus.bat | 0 .../libpng}/contrib/pngminus/pngminus.sh | 0 .../libpng}/contrib/pngminus/pnm2png.bat | 0 .../libpng}/contrib/pngminus/pnm2png.c | 0 .../libpng}/contrib/pngminus/pnm2png.sh | 0 .../libpng}/contrib/pngsuite/README | 0 .../libpng}/contrib/pngsuite/basn0g01.png | Bin .../libpng}/contrib/pngsuite/basn0g02.png | Bin .../libpng}/contrib/pngsuite/basn0g04.png | Bin .../libpng}/contrib/pngsuite/basn0g08.png | Bin .../libpng}/contrib/pngsuite/basn0g16.png | Bin .../libpng}/contrib/pngsuite/basn2c08.png | Bin .../libpng}/contrib/pngsuite/basn2c16.png | Bin .../libpng}/contrib/pngsuite/basn3p01.png | Bin .../libpng}/contrib/pngsuite/basn3p02.png | Bin .../libpng}/contrib/pngsuite/basn3p04.png | Bin .../libpng}/contrib/pngsuite/basn3p08.png | Bin .../libpng}/contrib/pngsuite/basn4a08.png | Bin .../libpng}/contrib/pngsuite/basn4a16.png | Bin .../libpng}/contrib/pngsuite/basn6a08.png | Bin .../libpng}/contrib/pngsuite/basn6a16.png | Bin .../libpng}/contrib/pngsuite/ftbbn0g01.png | Bin .../libpng}/contrib/pngsuite/ftbbn0g02.png | Bin .../libpng}/contrib/pngsuite/ftbbn0g04.png | Bin .../libpng}/contrib/pngsuite/ftbbn2c16.png | Bin .../libpng}/contrib/pngsuite/ftbbn3p08.png | Bin .../libpng}/contrib/pngsuite/ftbgn2c16.png | Bin .../libpng}/contrib/pngsuite/ftbgn3p08.png | Bin .../libpng}/contrib/pngsuite/ftbrn2c08.png | Bin .../libpng}/contrib/pngsuite/ftbwn0g16.png | Bin .../libpng}/contrib/pngsuite/ftbwn3p08.png | Bin .../libpng}/contrib/pngsuite/ftbyn3p08.png | Bin .../libpng}/contrib/pngsuite/ftp0n0g08.png | Bin .../libpng}/contrib/pngsuite/ftp0n2c08.png | Bin .../libpng}/contrib/pngsuite/ftp0n3p08.png | Bin .../libpng}/contrib/pngsuite/ftp1n3p08.png | Bin .../libpng}/contrib/tools/README.txt | 0 .../libpng}/contrib/tools/checksum-icc.c | 0 .../libpng}/contrib/tools/chkfmt | 0 .../libpng}/contrib/tools/cvtcolor.c | 0 .../libpng}/contrib/tools/intgamma.sh | 0 .../libpng}/contrib/tools/makesRGB.c | 0 .../libpng}/contrib/tools/png-fix-itxt.c | 0 .../libpng}/contrib/tools/pngfix.c | 0 .../libpng}/contrib/tools/sRGB.h | 0 .../libpng}/contrib/visupng/PngFile.c | 0 .../libpng}/contrib/visupng/PngFile.h | 0 .../libpng}/contrib/visupng/README.txt | 0 .../libpng}/contrib/visupng/VisualPng.c | 0 .../libpng}/contrib/visupng/VisualPng.dsp | 0 .../libpng}/contrib/visupng/VisualPng.dsw | 0 .../libpng}/contrib/visupng/VisualPng.ico | Bin .../libpng}/contrib/visupng/VisualPng.png | Bin .../libpng}/contrib/visupng/VisualPng.rc | 0 .../libpng}/contrib/visupng/cexcept.h | 0 .../libpng}/contrib/visupng/resource.h | 0 {libpng16 => 3rd-party/libpng}/example.c | 0 .../libpng}/libpng-config.in | 0 .../libpng}/libpng-manual.txt | 0 {libpng16 => 3rd-party/libpng}/libpng.3 | 0 {libpng16 => 3rd-party/libpng}/libpng.pc.in | 0 {libpng16 => 3rd-party/libpng}/libpngpf.3 | 0 {libpng16 => 3rd-party/libpng}/png.5 | 0 {libpng16 => 3rd-party/libpng}/png.c | 0 {libpng16 => 3rd-party/libpng}/png.h | 0 {libpng16 => 3rd-party/libpng}/pngbar.jpg | Bin {libpng16 => 3rd-party/libpng}/pngbar.png | Bin {libpng16 => 3rd-party/libpng}/pngconf.h | 0 {libpng16 => 3rd-party/libpng}/pngdebug.h | 0 {libpng16 => 3rd-party/libpng}/pngerror.c | 0 {libpng16 => 3rd-party/libpng}/pngget.c | 0 {libpng16 => 3rd-party/libpng}/pnginfo.h | 0 {libpng16 => 3rd-party/libpng}/pnglibconf.h | 0 {libpng16 => 3rd-party/libpng}/pngmem.c | 0 {libpng16 => 3rd-party/libpng}/pngnow.png | Bin {libpng16 => 3rd-party/libpng}/pngpread.c | 0 {libpng16 => 3rd-party/libpng}/pngpriv.h | 0 {libpng16 => 3rd-party/libpng}/pngread.c | 0 {libpng16 => 3rd-party/libpng}/pngrio.c | 0 {libpng16 => 3rd-party/libpng}/pngrtran.c | 0 {libpng16 => 3rd-party/libpng}/pngrutil.c | 0 {libpng16 => 3rd-party/libpng}/pngset.c | 0 {libpng16 => 3rd-party/libpng}/pngstruct.h | 0 {libpng16 => 3rd-party/libpng}/pngtest.c | 0 {libpng16 => 3rd-party/libpng}/pngtest.png | Bin {libpng16 => 3rd-party/libpng}/pngtrans.c | 0 {libpng16 => 3rd-party/libpng}/pngusr.dfa | 0 {libpng16 => 3rd-party/libpng}/pngwio.c | 0 {libpng16 => 3rd-party/libpng}/pngwrite.c | 0 {libpng16 => 3rd-party/libpng}/pngwtran.c | 0 {libpng16 => 3rd-party/libpng}/pngwutil.c | 0 .../libpng}/projects/owatcom/libpng.tgt | 0 .../libpng}/projects/owatcom/libpng.wpj | 0 .../libpng}/projects/owatcom/pngconfig.mak | 0 .../libpng}/projects/owatcom/pngstest.tgt | 0 .../libpng}/projects/owatcom/pngtest.tgt | 0 .../libpng}/projects/owatcom/pngvalid.tgt | 0 .../libpng}/projects/visualc71/PRJ0041.mak | 0 .../libpng}/projects/visualc71/README.txt | 0 .../projects/visualc71/README_zlib.txt | 0 .../libpng}/projects/visualc71/libpng.sln | 0 .../libpng}/projects/visualc71/libpng.vcproj | 0 .../libpng}/projects/visualc71/pngtest.vcproj | 0 .../libpng}/projects/visualc71/zlib.vcproj | 0 .../libpng}/projects/vstudio/WARNING | 0 .../projects/vstudio/libpng/libpng.vcxproj | 0 .../vstudio/pnglibconf/pnglibconf.vcxproj | 0 .../vstudio/pngstest/pngstest.vcxproj | 0 .../projects/vstudio/pngtest/pngtest.vcxproj | 0 .../vstudio/pngunknown/pngunknown.vcxproj | 0 .../vstudio/pngvalid/pngvalid.vcxproj | 0 .../libpng}/projects/vstudio/readme.txt | 0 .../libpng}/projects/vstudio/vstudio.sln | 0 .../libpng}/projects/vstudio/zlib.props | 0 .../projects/vstudio/zlib/zlib.vcxproj | 0 .../libpng}/scripts/README.txt | 0 .../libpng}/scripts/SCOPTIONS.ppc | 0 .../libpng}/scripts/checksym.awk | 0 .../libpng}/scripts/def.dfn | 0 .../libpng}/scripts/descrip.mms | 0 .../libpng}/scripts/dfn.awk | 0 .../libpng}/scripts/intprefix.dfn | 0 .../libpng}/scripts/libpng-config-body.in | 0 .../libpng}/scripts/libpng-config-head.in | 0 .../libpng}/scripts/libpng.pc.in | 0 .../libpng}/scripts/macro.lst | 0 .../libpng}/scripts/makefile.32sunu | 0 .../libpng}/scripts/makefile.64sunu | 0 .../libpng}/scripts/makefile.acorn | 0 .../libpng}/scripts/makefile.aix | 0 .../libpng}/scripts/makefile.amiga | 0 .../libpng}/scripts/makefile.atari | 0 .../libpng}/scripts/makefile.bc32 | 0 .../libpng}/scripts/makefile.beos | 0 .../libpng}/scripts/makefile.bor | 0 .../libpng}/scripts/makefile.cegcc | 0 .../libpng}/scripts/makefile.darwin | 0 .../libpng}/scripts/makefile.dec | 0 .../libpng}/scripts/makefile.dj2 | 0 .../libpng}/scripts/makefile.elf | 0 .../libpng}/scripts/makefile.freebsd | 0 .../libpng}/scripts/makefile.gcc | 0 .../libpng}/scripts/makefile.hp64 | 0 .../libpng}/scripts/makefile.hpgcc | 0 .../libpng}/scripts/makefile.hpux | 0 .../libpng}/scripts/makefile.ibmc | 0 .../libpng}/scripts/makefile.intel | 0 .../libpng}/scripts/makefile.knr | 0 .../libpng}/scripts/makefile.linux | 0 .../libpng}/scripts/makefile.mips | 0 .../libpng}/scripts/makefile.msc | 0 .../libpng}/scripts/makefile.msys | 0 .../libpng}/scripts/makefile.ne12bsd | 0 .../libpng}/scripts/makefile.netbsd | 0 .../libpng}/scripts/makefile.openbsd | 0 .../libpng}/scripts/makefile.sco | 0 .../libpng}/scripts/makefile.sggcc | 0 .../libpng}/scripts/makefile.sgi | 0 .../libpng}/scripts/makefile.so9 | 0 .../libpng}/scripts/makefile.solaris | 0 .../libpng}/scripts/makefile.solaris-x86 | 0 .../libpng}/scripts/makefile.std | 0 .../libpng}/scripts/makefile.sunos | 0 .../libpng}/scripts/makefile.tc3 | 0 .../libpng}/scripts/makefile.vcwin32 | 0 .../libpng}/scripts/makevms.com | 0 .../libpng}/scripts/options.awk | 0 .../libpng}/scripts/pnglibconf.dfa | 0 .../libpng}/scripts/pnglibconf.h.prebuilt | 0 .../libpng}/scripts/pnglibconf.mak | 0 .../libpng}/scripts/pngwin.rc | 0 .../libpng}/scripts/prefix.dfn | 0 .../libpng}/scripts/smakefile.ppc | 0 .../libpng}/scripts/sym.dfn | 0 .../libpng}/scripts/symbols.def | 0 .../libpng}/scripts/symbols.dfn | 0 .../libpng}/scripts/vers.dfn | 0 {libpng16 => 3rd-party/libpng}/tests/pngstest | 0 .../libpng}/tests/pngstest-0g01 | 0 .../libpng}/tests/pngstest-0g02 | 0 .../libpng}/tests/pngstest-0g04 | 0 .../libpng}/tests/pngstest-0g08 | 0 .../libpng}/tests/pngstest-0g16 | 0 .../libpng}/tests/pngstest-2c08 | 0 .../libpng}/tests/pngstest-2c16 | 0 .../libpng}/tests/pngstest-3p01 | 0 .../libpng}/tests/pngstest-3p02 | 0 .../libpng}/tests/pngstest-3p04 | 0 .../libpng}/tests/pngstest-3p08 | 0 .../libpng}/tests/pngstest-4a08 | 0 .../libpng}/tests/pngstest-4a16 | 0 .../libpng}/tests/pngstest-6a08 | 0 .../libpng}/tests/pngstest-6a16 | 0 .../libpng}/tests/pngstest-error | 0 {libpng16 => 3rd-party/libpng}/tests/pngtest | 0 .../libpng}/tests/pngunknown-IDAT | 0 .../libpng}/tests/pngunknown-discard | 0 .../libpng}/tests/pngunknown-if-safe | 0 .../libpng}/tests/pngunknown-sAPI | 0 .../libpng}/tests/pngunknown-sTER | 0 .../libpng}/tests/pngunknown-save | 0 .../libpng}/tests/pngunknown-vpAg | 0 .../libpng}/tests/pngvalid-gamma-16-to-8 | 0 .../libpng}/tests/pngvalid-gamma-alpha-mode | 0 .../libpng}/tests/pngvalid-gamma-background | 0 .../tests/pngvalid-gamma-expand16-alpha-mode | 0 .../tests/pngvalid-gamma-expand16-background | 0 .../tests/pngvalid-gamma-expand16-transform | 0 .../libpng}/tests/pngvalid-gamma-sbit | 0 .../libpng}/tests/pngvalid-gamma-threshold | 0 .../libpng}/tests/pngvalid-gamma-transform | 0 .../tests/pngvalid-progressive-interlace-size | 0 .../pngvalid-progressive-interlace-standard | 0 .../pngvalid-progressive-interlace-transform | 0 .../tests/pngvalid-progressive-standard | 0 .../libpng}/tests/pngvalid-standard | 0 {pixman => 3rd-party/pixman}/.gitignore | 0 {pixman => 3rd-party/pixman}/AUTHORS | 0 {pixman => 3rd-party/pixman}/CODING_STYLE | 0 {pixman => 3rd-party/pixman}/COPYING | 0 {pixman => 3rd-party/pixman}/ChangeLog | 0 {pixman => 3rd-party/pixman}/INSTALL | 0 {pixman => 3rd-party/pixman}/Makefile.am | 0 {pixman => 3rd-party/pixman}/Makefile.win32 | 0 .../pixman}/Makefile.win32.common | 0 {pixman => 3rd-party/pixman}/NEWS | 0 {pixman => 3rd-party/pixman}/README | 0 {pixman => 3rd-party/pixman}/RELEASING | 0 {pixman => 3rd-party/pixman}/autogen.sh | 0 {pixman => 3rd-party/pixman}/configure.ac | 0 .../pixman}/demos/Makefile.am | 0 .../pixman}/demos/alpha-test.c | 0 .../pixman}/demos/checkerboard.c | 0 {pixman => 3rd-party/pixman}/demos/clip-in.c | 0 .../pixman}/demos/clip-test.c | 0 .../pixman}/demos/composite-test.c | 0 .../pixman}/demos/conical-test.c | 0 .../pixman}/demos/convolution-test.c | 0 .../pixman}/demos/gradient-test.c | 0 .../pixman}/demos/gtk-utils.c | 0 .../pixman}/demos/gtk-utils.h | 0 .../pixman}/demos/linear-gradient.c | 0 {pixman => 3rd-party/pixman}/demos/parrot.c | 0 {pixman => 3rd-party/pixman}/demos/parrot.jpg | Bin .../pixman}/demos/quad2quad.c | 0 .../pixman}/demos/radial-test.c | 0 {pixman => 3rd-party/pixman}/demos/scale.c | 0 {pixman => 3rd-party/pixman}/demos/scale.ui | 0 .../pixman}/demos/screen-test.c | 0 .../pixman}/demos/srgb-test.c | 0 .../pixman}/demos/srgb-trap-test.c | 0 .../pixman}/demos/trap-test.c | 0 {pixman => 3rd-party/pixman}/demos/tri-test.c | 0 .../pixman}/demos/zone_plate.png | Bin .../pixman}/pixman-1-uninstalled.pc.in | 0 {pixman => 3rd-party/pixman}/pixman-1.pc.in | 0 .../pixman}/pixman/Makefile.am | 0 .../pixman}/pixman/Makefile.sources | 0 .../pixman}/pixman/Makefile.win32 | 0 .../pixman}/pixman/loongson-mmintrin.h | 0 .../pixman}/pixman/make-srgb.pl | 0 .../pixman}/pixman/pixman-access-accessors.c | 0 .../pixman}/pixman/pixman-access.c | 0 .../pixman}/pixman/pixman-accessor.h | 0 .../pixman}/pixman/pixman-arm-common.h | 0 .../pixman/pixman-arm-detect-win32.asm | 0 .../pixman/pixman-arm-neon-asm-bilinear.S | 0 .../pixman}/pixman/pixman-arm-neon-asm.S | 0 .../pixman}/pixman/pixman-arm-neon-asm.h | 0 .../pixman}/pixman/pixman-arm-neon.c | 0 .../pixman/pixman-arm-simd-asm-scaled.S | 0 .../pixman}/pixman/pixman-arm-simd-asm.S | 0 .../pixman}/pixman/pixman-arm-simd-asm.h | 0 .../pixman}/pixman/pixman-arm-simd.c | 0 .../pixman}/pixman/pixman-arm.c | 0 .../pixman}/pixman/pixman-bits-image.c | 0 .../pixman}/pixman/pixman-combine-float.c | 0 .../pixman}/pixman/pixman-combine32.c | 0 .../pixman}/pixman/pixman-combine32.h | 0 .../pixman}/pixman/pixman-compiler.h | 0 .../pixman}/pixman/pixman-conical-gradient.c | 0 .../pixman}/pixman/pixman-edge-accessors.c | 0 .../pixman}/pixman/pixman-edge-imp.h | 0 .../pixman}/pixman/pixman-edge.c | 0 .../pixman}/pixman/pixman-fast-path.c | 0 .../pixman}/pixman/pixman-filter.c | 0 .../pixman}/pixman/pixman-general.c | 0 .../pixman}/pixman/pixman-glyph.c | 0 .../pixman}/pixman/pixman-gradient-walker.c | 0 .../pixman}/pixman/pixman-image.c | 0 .../pixman}/pixman/pixman-implementation.c | 0 .../pixman}/pixman/pixman-inlines.h | 0 .../pixman}/pixman/pixman-linear-gradient.c | 0 .../pixman}/pixman/pixman-matrix.c | 0 .../pixman}/pixman/pixman-mips-dspr2-asm.S | 0 .../pixman}/pixman/pixman-mips-dspr2-asm.h | 0 .../pixman}/pixman/pixman-mips-dspr2.c | 0 .../pixman}/pixman/pixman-mips-dspr2.h | 0 .../pixman}/pixman/pixman-mips-memcpy-asm.S | 0 .../pixman}/pixman/pixman-mips.c | 0 .../pixman}/pixman/pixman-mmx.c | 0 .../pixman}/pixman/pixman-noop.c | 0 .../pixman}/pixman/pixman-ppc.c | 0 .../pixman}/pixman/pixman-private.h | 0 .../pixman}/pixman/pixman-radial-gradient.c | 0 .../pixman}/pixman/pixman-region.c | 0 .../pixman}/pixman/pixman-region16.c | 0 .../pixman}/pixman/pixman-region32.c | 0 .../pixman}/pixman/pixman-solid-fill.c | 0 .../pixman}/pixman/pixman-sse2.c | 0 .../pixman}/pixman/pixman-ssse3.c | 0 .../pixman}/pixman/pixman-timer.c | 0 .../pixman}/pixman/pixman-trap.c | 0 .../pixman}/pixman/pixman-utils.c | 0 .../pixman}/pixman/pixman-version.h | 0 .../pixman}/pixman/pixman-version.h.in | 0 .../pixman}/pixman/pixman-vmx.c | 0 .../pixman}/pixman/pixman-x86.c | 0 {pixman => 3rd-party/pixman}/pixman/pixman.c | 0 {pixman => 3rd-party/pixman}/pixman/pixman.h | 0 .../pixman}/pixman/rounding.txt | 0 .../pixman}/pixman/solaris-hwcap.mapfile | 0 {pixman => 3rd-party/pixman}/test/Makefile.am | 0 .../pixman}/test/Makefile.sources | 0 .../pixman}/test/Makefile.win32 | 0 .../pixman}/test/a1-trap-test.c | 0 .../pixman}/test/affine-test.c | 0 .../pixman}/test/alpha-loop.c | 0 {pixman => 3rd-party/pixman}/test/alphamap.c | 0 .../pixman}/test/blitters-test.c | 0 .../pixman}/test/check-formats.c | 0 .../pixman}/test/combiner-test.c | 0 .../pixman}/test/composite-traps-test.c | 0 {pixman => 3rd-party/pixman}/test/composite.c | 0 .../pixman}/test/fetch-test.c | 0 .../pixman}/test/fuzzer-find-diff.pl | 0 .../pixman}/test/glyph-test.c | 0 .../pixman}/test/gradient-crash-test.c | 0 .../pixman}/test/infinite-loop.c | 0 .../pixman}/test/lowlevel-blt-bench.c | 0 .../pixman}/test/matrix-test.c | 0 {pixman => 3rd-party/pixman}/test/oob-test.c | 0 .../pixman}/test/pdf-op-test.c | 0 .../pixman}/test/pixel-test.c | 0 {pixman => 3rd-party/pixman}/test/prng-test.c | 0 .../pixman}/test/radial-perf-test.c | 0 .../pixman}/test/region-contains-test.c | 0 .../pixman}/test/region-test.c | 0 .../pixman}/test/region-translate-test.c | 0 .../pixman}/test/rotate-test.c | 0 .../pixman}/test/scaling-bench.c | 0 .../pixman}/test/scaling-crash-test.c | 0 .../pixman}/test/scaling-helpers-test.c | 0 .../pixman}/test/scaling-test.c | 0 .../pixman}/test/stress-test.c | 0 .../pixman}/test/thread-test.c | 0 .../pixman}/test/trap-crasher.c | 0 .../pixman}/test/utils-prng.c | 0 .../pixman}/test/utils-prng.h | 0 {pixman => 3rd-party/pixman}/test/utils.c | 0 {pixman => 3rd-party/pixman}/test/utils.h | 0 {zlib-1.2.8 => 3rd-party/zlib}/CMakeLists.txt | 0 {zlib-1.2.8 => 3rd-party/zlib}/ChangeLog | 0 {zlib-1.2.8 => 3rd-party/zlib}/FAQ | 0 {zlib-1.2.8 => 3rd-party/zlib}/INDEX | 0 {zlib-1.2.8 => 3rd-party/zlib}/Makefile | 0 {zlib-1.2.8 => 3rd-party/zlib}/Makefile.in | 0 {zlib-1.2.8 => 3rd-party/zlib}/README | 0 {zlib-1.2.8 => 3rd-party/zlib}/adler32.c | 0 .../zlib}/amiga/Makefile.pup | 0 .../zlib}/amiga/Makefile.sas | 0 {zlib-1.2.8 => 3rd-party/zlib}/as400/bndsrc | 0 .../zlib}/as400/compile.clp | 0 .../zlib}/as400/readme.txt | 0 {zlib-1.2.8 => 3rd-party/zlib}/as400/zlib.inc | 0 {zlib-1.2.8 => 3rd-party/zlib}/compress.c | 0 {zlib-1.2.8 => 3rd-party/zlib}/configure | 0 .../zlib}/contrib/README.contrib | 0 .../zlib}/contrib/ada/buffer_demo.adb | 0 .../zlib}/contrib/ada/mtest.adb | 0 .../zlib}/contrib/ada/read.adb | 0 .../zlib}/contrib/ada/readme.txt | 0 .../zlib}/contrib/ada/test.adb | 0 .../zlib}/contrib/ada/zlib-streams.adb | 0 .../zlib}/contrib/ada/zlib-streams.ads | 0 .../zlib}/contrib/ada/zlib-thin.adb | 0 .../zlib}/contrib/ada/zlib-thin.ads | 0 .../zlib}/contrib/ada/zlib.adb | 0 .../zlib}/contrib/ada/zlib.ads | 0 .../zlib}/contrib/ada/zlib.gpr | 0 .../zlib}/contrib/amd64/amd64-match.S | 0 .../zlib}/contrib/asm686/README.686 | 0 .../zlib}/contrib/asm686/match.S | 0 .../zlib}/contrib/blast/Makefile | 0 .../zlib}/contrib/blast/README | 0 .../zlib}/contrib/blast/blast.c | 0 .../zlib}/contrib/blast/blast.h | 0 .../zlib}/contrib/blast/test.pk | Bin .../zlib}/contrib/blast/test.txt | 0 .../zlib}/contrib/delphi/ZLib.pas | 0 .../zlib}/contrib/delphi/ZLibConst.pas | 0 .../zlib}/contrib/delphi/readme.txt | 0 .../zlib}/contrib/delphi/zlibd32.mak | 0 .../zlib}/contrib/dotzlib/DotZLib.build | 0 .../zlib}/contrib/dotzlib/DotZLib.chm | Bin .../zlib}/contrib/dotzlib/DotZLib.sln | 0 .../contrib/dotzlib/DotZLib/AssemblyInfo.cs | 0 .../contrib/dotzlib/DotZLib/ChecksumImpl.cs | 0 .../contrib/dotzlib/DotZLib/CircularBuffer.cs | 0 .../contrib/dotzlib/DotZLib/CodecBase.cs | 0 .../zlib}/contrib/dotzlib/DotZLib/Deflater.cs | 0 .../zlib}/contrib/dotzlib/DotZLib/DotZLib.cs | 0 .../contrib/dotzlib/DotZLib/DotZLib.csproj | 0 .../contrib/dotzlib/DotZLib/GZipStream.cs | 0 .../zlib}/contrib/dotzlib/DotZLib/Inflater.cs | 0 .../contrib/dotzlib/DotZLib/UnitTests.cs | 0 .../zlib}/contrib/dotzlib/LICENSE_1_0.txt | 0 .../zlib}/contrib/dotzlib/readme.txt | 0 .../zlib}/contrib/gcc_gvmat64/gvmat64.S | 0 .../zlib}/contrib/infback9/README | 0 .../zlib}/contrib/infback9/infback9.c | 0 .../zlib}/contrib/infback9/infback9.h | 0 .../zlib}/contrib/infback9/inffix9.h | 0 .../zlib}/contrib/infback9/inflate9.h | 0 .../zlib}/contrib/infback9/inftree9.c | 0 .../zlib}/contrib/infback9/inftree9.h | 0 .../zlib}/contrib/inflate86/inffas86.c | 0 .../zlib}/contrib/inflate86/inffast.S | 0 .../zlib}/contrib/iostream/test.cpp | 0 .../zlib}/contrib/iostream/zfstream.cpp | 0 .../zlib}/contrib/iostream/zfstream.h | 0 .../zlib}/contrib/iostream2/zstream.h | 0 .../zlib}/contrib/iostream2/zstream_test.cpp | 0 .../zlib}/contrib/iostream3/README | 0 .../zlib}/contrib/iostream3/TODO | 0 .../zlib}/contrib/iostream3/test.cc | 0 .../zlib}/contrib/iostream3/zfstream.cc | 0 .../zlib}/contrib/iostream3/zfstream.h | 0 .../zlib}/contrib/masmx64/bld_ml64.bat | 0 .../zlib}/contrib/masmx64/gvmat64.asm | 0 .../zlib}/contrib/masmx64/inffas8664.c | 0 .../zlib}/contrib/masmx64/inffasx64.asm | 0 .../zlib}/contrib/masmx64/readme.txt | 0 .../zlib}/contrib/masmx86/bld_ml32.bat | 0 .../zlib}/contrib/masmx86/inffas32.asm | 0 .../zlib}/contrib/masmx86/match686.asm | 0 .../zlib}/contrib/masmx86/readme.txt | 0 .../zlib}/contrib/minizip/Makefile | 0 .../zlib}/contrib/minizip/Makefile.am | 0 .../contrib/minizip/MiniZip64_Changes.txt | 0 .../zlib}/contrib/minizip/MiniZip64_info.txt | 0 .../zlib}/contrib/minizip/configure.ac | 0 .../zlib}/contrib/minizip/crypt.h | 0 .../zlib}/contrib/minizip/ioapi.c | 0 .../zlib}/contrib/minizip/ioapi.h | 0 .../zlib}/contrib/minizip/iowin32.c | 0 .../zlib}/contrib/minizip/iowin32.h | 0 .../zlib}/contrib/minizip/make_vms.com | 0 .../zlib}/contrib/minizip/miniunz.c | 0 .../zlib}/contrib/minizip/miniunzip.1 | 0 .../zlib}/contrib/minizip/minizip.1 | 0 .../zlib}/contrib/minizip/minizip.c | 0 .../zlib}/contrib/minizip/minizip.pc.in | 0 .../zlib}/contrib/minizip/mztools.c | 0 .../zlib}/contrib/minizip/mztools.h | 0 .../zlib}/contrib/minizip/unzip.c | 0 .../zlib}/contrib/minizip/unzip.h | 0 .../zlib}/contrib/minizip/zip.c | 0 .../zlib}/contrib/minizip/zip.h | 0 .../zlib}/contrib/pascal/example.pas | 0 .../zlib}/contrib/pascal/readme.txt | 0 .../zlib}/contrib/pascal/zlibd32.mak | 0 .../zlib}/contrib/pascal/zlibpas.pas | 0 .../zlib}/contrib/puff/Makefile | 0 .../zlib}/contrib/puff/README | 0 .../zlib}/contrib/puff/puff.c | 0 .../zlib}/contrib/puff/puff.h | 0 .../zlib}/contrib/puff/pufftest.c | 0 .../zlib}/contrib/puff/zeros.raw | Bin .../zlib}/contrib/testzlib/testzlib.c | 0 .../zlib}/contrib/testzlib/testzlib.txt | 0 .../zlib}/contrib/untgz/Makefile | 0 .../zlib}/contrib/untgz/Makefile.msc | 0 .../zlib}/contrib/untgz/untgz.c | 0 .../zlib}/contrib/vstudio/readme.txt | 0 .../contrib/vstudio/vc10/miniunz.vcxproj | 0 .../vstudio/vc10/miniunz.vcxproj.filters | 0 .../contrib/vstudio/vc10/minizip.vcxproj | 0 .../vstudio/vc10/minizip.vcxproj.filters | 0 .../contrib/vstudio/vc10/testzlib.vcxproj | 0 .../vstudio/vc10/testzlib.vcxproj.filters | 0 .../contrib/vstudio/vc10/testzlibdll.vcxproj | 0 .../vstudio/vc10/testzlibdll.vcxproj.filters | 0 .../zlib}/contrib/vstudio/vc10/zlib.rc | 0 .../contrib/vstudio/vc10/zlibstat.vcxproj | 0 .../vstudio/vc10/zlibstat.vcxproj.filters | 0 .../zlib}/contrib/vstudio/vc10/zlibvc.def | 0 .../zlib}/contrib/vstudio/vc10/zlibvc.sln | 0 .../zlib}/contrib/vstudio/vc10/zlibvc.vcxproj | 0 .../vstudio/vc10/zlibvc.vcxproj.filters | 0 .../contrib/vstudio/vc11/miniunz.vcxproj | 0 .../contrib/vstudio/vc11/minizip.vcxproj | 0 .../contrib/vstudio/vc11/testzlib.vcxproj | 0 .../contrib/vstudio/vc11/testzlibdll.vcxproj | 0 .../zlib}/contrib/vstudio/vc11/zlib.rc | 0 .../contrib/vstudio/vc11/zlibstat.vcxproj | 0 .../zlib}/contrib/vstudio/vc11/zlibvc.def | 0 .../zlib}/contrib/vstudio/vc11/zlibvc.sln | 0 .../zlib}/contrib/vstudio/vc11/zlibvc.vcxproj | 0 .../zlib}/contrib/vstudio/vc9/miniunz.vcproj | 0 .../zlib}/contrib/vstudio/vc9/minizip.vcproj | 0 .../zlib}/contrib/vstudio/vc9/testzlib.vcproj | 0 .../contrib/vstudio/vc9/testzlibdll.vcproj | 0 .../zlib}/contrib/vstudio/vc9/zlib.rc | 0 .../zlib}/contrib/vstudio/vc9/zlibstat.vcproj | 0 .../zlib}/contrib/vstudio/vc9/zlibvc.def | 0 .../zlib}/contrib/vstudio/vc9/zlibvc.sln | 0 .../zlib}/contrib/vstudio/vc9/zlibvc.vcproj | 0 {zlib-1.2.8 => 3rd-party/zlib}/crc32.c | 0 {zlib-1.2.8 => 3rd-party/zlib}/crc32.h | 0 {zlib-1.2.8 => 3rd-party/zlib}/deflate.c | 0 {zlib-1.2.8 => 3rd-party/zlib}/deflate.h | 0 .../zlib}/doc/algorithm.txt | 0 .../zlib}/doc/rfc1950.txt | 0 .../zlib}/doc/rfc1951.txt | 0 .../zlib}/doc/rfc1952.txt | 0 .../zlib}/doc/txtvsbin.txt | 0 .../zlib}/examples/README.examples | 0 .../zlib}/examples/enough.c | 0 .../zlib}/examples/fitblk.c | 0 {zlib-1.2.8 => 3rd-party/zlib}/examples/gun.c | 0 .../zlib}/examples/gzappend.c | 0 .../zlib}/examples/gzjoin.c | 0 .../zlib}/examples/gzlog.c | 0 .../zlib}/examples/gzlog.h | 0 .../zlib}/examples/zlib_how.html | 0 .../zlib}/examples/zpipe.c | 0 .../zlib}/examples/zran.c | 0 {zlib-1.2.8 => 3rd-party/zlib}/gzclose.c | 0 {zlib-1.2.8 => 3rd-party/zlib}/gzguts.h | 0 {zlib-1.2.8 => 3rd-party/zlib}/gzlib.c | 0 {zlib-1.2.8 => 3rd-party/zlib}/gzread.c | 0 {zlib-1.2.8 => 3rd-party/zlib}/gzwrite.c | 0 {zlib-1.2.8 => 3rd-party/zlib}/infback.c | 0 {zlib-1.2.8 => 3rd-party/zlib}/inffast.c | 0 {zlib-1.2.8 => 3rd-party/zlib}/inffast.h | 0 {zlib-1.2.8 => 3rd-party/zlib}/inffixed.h | 0 {zlib-1.2.8 => 3rd-party/zlib}/inflate.c | 0 {zlib-1.2.8 => 3rd-party/zlib}/inflate.h | 0 {zlib-1.2.8 => 3rd-party/zlib}/inftrees.c | 0 {zlib-1.2.8 => 3rd-party/zlib}/inftrees.h | 0 {zlib-1.2.8 => 3rd-party/zlib}/make_vms.com | 0 .../zlib}/msdos/Makefile.bor | 0 .../zlib}/msdos/Makefile.dj2 | 0 .../zlib}/msdos/Makefile.emx | 0 .../zlib}/msdos/Makefile.msc | 0 .../zlib}/msdos/Makefile.tc | 0 .../zlib}/nintendods/Makefile | 0 .../zlib}/nintendods/README | 0 .../zlib}/old/Makefile.emx | 0 .../zlib}/old/Makefile.riscos | 0 {zlib-1.2.8 => 3rd-party/zlib}/old/README | 0 .../zlib}/old/descrip.mms | 0 .../zlib}/old/os2/Makefile.os2 | 0 .../zlib}/old/os2/zlib.def | 0 .../zlib}/old/visual-basic.txt | 0 .../zlib}/qnx/package.qpg | 0 {zlib-1.2.8 => 3rd-party/zlib}/test/example.c | 0 .../zlib}/test/infcover.c | 0 .../zlib}/test/minigzip.c | 0 {zlib-1.2.8 => 3rd-party/zlib}/treebuild.xml | 0 {zlib-1.2.8 => 3rd-party/zlib}/trees.c | 0 {zlib-1.2.8 => 3rd-party/zlib}/trees.h | 0 {zlib-1.2.8 => 3rd-party/zlib}/uncompr.c | 0 .../zlib}/watcom/watcom_f.mak | 0 .../zlib}/watcom/watcom_l.mak | 0 .../zlib}/win32/DLL_FAQ.txt | 0 .../zlib}/win32/Makefile.bor | 0 .../zlib}/win32/Makefile.gcc | 0 .../zlib}/win32/Makefile.msc | 0 .../zlib}/win32/README-WIN32.txt | 0 .../zlib}/win32/VisualC.txt | 0 {zlib-1.2.8 => 3rd-party/zlib}/win32/zlib.def | 0 {zlib-1.2.8 => 3rd-party/zlib}/win32/zlib1.rc | 0 {zlib-1.2.8 => 3rd-party/zlib}/zconf.h | 0 .../zlib}/zconf.h.cmakein | 0 {zlib-1.2.8 => 3rd-party/zlib}/zconf.h.in | 0 {zlib-1.2.8 => 3rd-party/zlib}/zlib.3 | 0 {zlib-1.2.8 => 3rd-party/zlib}/zlib.3.pdf | Bin {zlib-1.2.8 => 3rd-party/zlib}/zlib.h | 0 {zlib-1.2.8 => 3rd-party/zlib}/zlib.map | 0 .../zlib}/zlib.pc.cmakein | 0 {zlib-1.2.8 => 3rd-party/zlib}/zlib.pc.in | 0 {zlib-1.2.8 => 3rd-party/zlib}/zlib2ansi | 0 {zlib-1.2.8 => 3rd-party/zlib}/zutil.c | 0 {zlib-1.2.8 => 3rd-party/zlib}/zutil.h | 0 N3888_RefImpl/.gitignore | 46 ------------------ N3888_RefImpl/Makefile.am | 2 - N3888_RefImpl/N3888_RefImpl.sln | 40 --------------- .../win32/DLLs/x86/Debug_Clang_C2/cairo.dll | Bin 2063872 -> 0 bytes .../win32/DLLs/x86/Release_Clang_C2/zlib1.dll | Bin 67584 -> 0 bytes {N3888_RefImpl/src => src}/.gitignore | 0 {N3888_RefImpl/src => src}/Makefile.am | 0 {N3888_RefImpl/src => src}/N3888_RefImpl.ico | Bin {N3888_RefImpl/src => src}/N3888_RefImpl.rc | Bin .../src => src}/N3888_RefImpl.vcxproj | 0 .../src => src}/N3888_RefImpl.vcxproj.filters | 0 {N3888_RefImpl/src => src}/RefImplApp.c | 0 {N3888_RefImpl/src => src}/RefImplApp.h | 0 {N3888_RefImpl/src => src}/RefImplDraw.cpp | 0 {N3888_RefImpl/src => src}/RefImplDraw.h | 0 {N3888_RefImpl/src => src}/RefImplWindow.c | 0 {N3888_RefImpl/src => src}/RefImplWindow.h | 0 .../src => src}/Win32RenderWindow.cpp | 0 .../src => src}/Win32RenderWindow.h | 0 {N3888_RefImpl/src => src}/brush.cpp | 0 {N3888_RefImpl/src => src}/device.cpp | 0 .../src => src}/display_surface-common.cpp | 0 .../src => src}/display_surface-win32.cpp | 0 .../src => src}/display_surface-xlib.cpp | 0 {N3888_RefImpl/src => src}/entrypoint-gtk.cpp | 0 .../src => src}/entrypoint-win32.cpp | 0 {N3888_RefImpl/src => src}/entrypoint-win32.h | 0 {N3888_RefImpl/src => src}/entrypoint.cpp | 0 {N3888_RefImpl/src => src}/font_extents.cpp | 0 {N3888_RefImpl/src => src}/font_face.cpp | 0 {N3888_RefImpl/src => src}/font_options.cpp | 0 {N3888_RefImpl/src => src}/image_surface.cpp | 0 {N3888_RefImpl/src => src}/io2d.h | 0 .../src => src}/io2d_error_category.cpp | 0 .../src => src}/linear_brush_factory.cpp | 0 {N3888_RefImpl/src => src}/mapped_surface.cpp | 0 {N3888_RefImpl/src => src}/matrix_2d.cpp | 0 .../src => src}/mesh_brush_factory.cpp | 0 {N3888_RefImpl/src => src}/path.cpp | 0 {N3888_RefImpl/src => src}/path_data.cpp | 0 {N3888_RefImpl/src => src}/path_data_item.cpp | 0 {N3888_RefImpl/src => src}/path_factory.cpp | 0 .../src => src}/radial_brush_factory.cpp | 0 {N3888_RefImpl/src => src}/rectangle.cpp | 0 .../src => src}/refimpl-resources.c | 0 .../src => src}/refimpl-resources.h | 0 .../src => src}/refimpl.gresource.xml | 0 .../src => src}/refimpl_about_window.ui | 0 {N3888_RefImpl/src => src}/refimpl_menu.ui | 0 {N3888_RefImpl/src => src}/refimpl_window.ui | 0 {N3888_RefImpl/src => src}/resource.h | Bin {N3888_RefImpl/src => src}/rgba_color.cpp | 0 {N3888_RefImpl/src => src}/sample_draw.cpp | 0 {N3888_RefImpl/src => src}/sample_draw.h | 0 .../src => src}/simple_font_face.cpp | 0 {N3888_RefImpl/src => src}/small.ico | Bin .../src => src}/solid_color_brush_factory.cpp | 0 .../src => src}/standalone_functions.cpp | 0 {N3888_RefImpl/src => src}/surface.cpp | 0 .../src => src}/surface_brush_factory.cpp | 0 {N3888_RefImpl/src => src}/targetver.h | 0 {N3888_RefImpl/src => src}/test_renderer.h | 0 .../src => src}/test_renderer_fill.cpp | 0 {N3888_RefImpl/src => src}/text_extents.cpp | 0 {N3888_RefImpl/src => src}/throw_helpers.h | 0 {N3888_RefImpl/src => src}/vector_2d.cpp | 0 .../win32/DLL build instructions.txt | 0 .../win32/DLLs/x64/Debug/cairo.dll | Bin .../win32/DLLs/x64/Debug/cairo.pdb | Bin .../win32/DLLs/x64/Debug/zlib1.dll | Bin .../win32/DLLs/x64/Debug/zlib1.pdb | Bin .../win32/DLLs/x64/Release/cairo.dll | Bin .../win32/DLLs/x64/Release/zlib1.dll | Bin .../win32/DLLs/x86/Debug}/cairo.dll | Bin .../win32/DLLs/x86/Debug/cairo.pdb | Bin .../win32/DLLs/x86/Debug}/zlib1.dll | Bin .../win32/DLLs/x86/Debug/zlib1.pdb | Bin .../win32/DLLs/x86/Debug_Clang_C2}/cairo.dll | Bin .../win32/DLLs/x86/Debug_Clang_C2}/zlib1.dll | Bin .../win32/DLLs/x86/Release/cairo.dll | Bin .../win32/DLLs/x86/Release}/zlib1.dll | Bin .../win32/DLLs/x86/Release_Clang_C2/cairo.dll | Bin .../DLLs/x86/Release_Clang_C2}/zlib1.dll | Bin .../win32/include}/cairo-deprecated.h | 0 .../win32/include}/cairo-features.h | 0 {cairo/src => src/win32/include}/cairo-pdf.h | 0 {cairo/src => src/win32/include}/cairo-ps.h | 0 .../src => src/win32/include}/cairo-script.h | 0 {cairo/src => src/win32/include}/cairo-svg.h | 0 {cairo => src/win32/include}/cairo-version.h | 0 .../src => src/win32/include}/cairo-win32.h | 0 {cairo/src => src/win32/include}/cairo.h | 0 .../src => src}/win32/lib/x64/Debug/cairo.lib | Bin .../src => src}/win32/lib/x64/Debug/zlib.lib | Bin .../win32/lib/x64/Release/cairo.lib | Bin .../win32/lib/x64/Release/zlib.lib | Bin .../src => src}/win32/lib/x86/Debug/cairo.lib | Bin .../src => src}/win32/lib/x86/Debug/zlib.lib | Bin .../win32/lib/x86/Debug_Clang_C2/cairo.lib | Bin .../win32/lib/x86/Debug_Clang_C2/zlib.lib | Bin .../win32/lib/x86/Release/cairo.lib | Bin .../win32/lib/x86/Release/zlib.lib | Bin .../win32/lib/x86/Release_Clang_C2/cairo.lib | Bin .../win32/lib/x86/Release_Clang_C2/zlib.lib | Bin .../src => src}/xcairoenumhelpers.h | 0 {N3888_RefImpl/src => src}/xio2d.h | 0 {N3888_RefImpl/src => src}/xio2dhelpers.h | 0 5011 files changed, 88 deletions(-) rename {cairo => 3rd-party/cairo}/.gitignore (100%) rename {cairo => 3rd-party/cairo}/AUTHORS (100%) rename {cairo => 3rd-party/cairo}/BIBLIOGRAPHY (100%) rename {cairo => 3rd-party/cairo}/BUGS (100%) rename {cairo => 3rd-party/cairo}/CODING_STYLE (100%) rename {cairo => 3rd-party/cairo}/COPYING (100%) rename {cairo => 3rd-party/cairo}/COPYING-LGPL-2.1 (100%) rename {cairo => 3rd-party/cairo}/COPYING-MPL-1.1 (100%) rename {cairo => 3rd-party/cairo}/HACKING (100%) rename {cairo => 3rd-party/cairo}/INSTALL (100%) rename {cairo => 3rd-party/cairo}/KNOWN_ISSUES (100%) rename {cairo => 3rd-party/cairo}/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/Makefile.win32 (100%) rename {cairo => 3rd-party/cairo}/NEWS (100%) rename {cairo => 3rd-party/cairo}/PORTING_GUIDE (100%) rename {cairo => 3rd-party/cairo}/README (100%) rename {cairo => 3rd-party/cairo}/README.win32 (100%) rename {cairo => 3rd-party/cairo}/RELEASING (100%) rename {cairo => 3rd-party/cairo}/acinclude.m4 (100%) rename {cairo => 3rd-party/cairo}/autogen.sh (100%) rename {cairo => 3rd-party/cairo}/boilerplate/.gitignore (100%) rename {cairo => 3rd-party/cairo}/boilerplate/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/boilerplate/Makefile.sources (100%) rename {cairo => 3rd-party/cairo}/boilerplate/Makefile.win32 (100%) rename {cairo => 3rd-party/cairo}/boilerplate/Makefile.win32.features (100%) rename {cairo => 3rd-party/cairo}/boilerplate/README (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-beos.cpp (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-cogl.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-directfb.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-drm.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-egl.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-getopt.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-getopt.h (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-glx.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-pdf.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-private.h (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-ps.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-qt.cpp (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-quartz.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-scaled-font.h (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-script.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-skia.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-svg.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-system.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-system.h (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-test-surfaces.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-vg.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-wgl.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-win32-printing.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-win32.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-xcb.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-xlib.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate-xlib.h (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/cairo-boilerplate.h (100%) rename {cairo => 3rd-party/cairo}/boilerplate/check-link.c (100%) rename {cairo => 3rd-party/cairo}/boilerplate/make-cairo-boilerplate-constructors.sh (100%) rename {cairo => 3rd-party/cairo}/build/.gitignore (100%) rename {cairo => 3rd-party/cairo}/build/Makefile.am.analysis (100%) rename {cairo => 3rd-party/cairo}/build/Makefile.am.changelog (100%) rename {cairo => 3rd-party/cairo}/build/Makefile.am.common (100%) rename {cairo => 3rd-party/cairo}/build/Makefile.am.gtk-doc (100%) rename {cairo => 3rd-party/cairo}/build/Makefile.am.releasing (100%) rename {cairo => 3rd-party/cairo}/build/Makefile.win32.common (100%) rename {cairo => 3rd-party/cairo}/build/Makefile.win32.features (100%) rename {cairo => 3rd-party/cairo}/build/Makefile.win32.features-h (100%) rename {cairo => 3rd-party/cairo}/build/Makefile.win32.inform (100%) rename {cairo => 3rd-party/cairo}/build/aclocal.cairo.m4 (100%) rename {cairo => 3rd-party/cairo}/build/aclocal.compare.m4 (100%) rename {cairo => 3rd-party/cairo}/build/aclocal.enable.m4 (100%) rename {cairo => 3rd-party/cairo}/build/aclocal.float.m4 (100%) rename {cairo => 3rd-party/cairo}/build/aclocal.gtk-doc.m4 (100%) rename {cairo => 3rd-party/cairo}/build/aclocal.makefile.m4 (100%) rename {cairo => 3rd-party/cairo}/build/aclocal.pkg.m4 (100%) rename {cairo => 3rd-party/cairo}/build/configure.ac.analysis (100%) rename {cairo => 3rd-party/cairo}/build/configure.ac.features (100%) rename {cairo => 3rd-party/cairo}/build/configure.ac.noversion (100%) rename {cairo => 3rd-party/cairo}/build/configure.ac.pthread (100%) rename {cairo => 3rd-party/cairo}/build/configure.ac.system (100%) rename {cairo => 3rd-party/cairo}/build/configure.ac.tools (100%) rename {cairo => 3rd-party/cairo}/build/configure.ac.version (100%) rename {cairo => 3rd-party/cairo}/build/configure.ac.warnings (100%) rename {N3888_RefImpl/src/win32/include => 3rd-party/cairo}/cairo-version.h (100%) rename {cairo => 3rd-party/cairo}/configure.ac (100%) rename {cairo => 3rd-party/cairo}/doc/.gitignore (100%) rename {cairo => 3rd-party/cairo}/doc/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/doc/public/.gitignore (100%) rename {cairo => 3rd-party/cairo}/doc/public/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/doc/public/README (100%) rename {cairo => 3rd-party/cairo}/doc/public/cairo-docs.xml (100%) rename {cairo => 3rd-party/cairo}/doc/public/cairo-overrides.txt (100%) rename {cairo => 3rd-party/cairo}/doc/public/cairo-sections.txt (100%) rename {cairo => 3rd-party/cairo}/doc/public/cairo.types (100%) rename {cairo => 3rd-party/cairo}/doc/public/check-doc-coverage.sh (100%) rename {cairo => 3rd-party/cairo}/doc/public/check-doc-syntax.sh (100%) rename {cairo => 3rd-party/cairo}/doc/public/language-bindings.xml (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/.gitignore (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/Makefile (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/cairo-blank.svg (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/cairo-code.svg (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/cairo-large-content.svg (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/cairo-separator.svg (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/cairo-title.svg (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/cairo.svg (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/circle-cairo-large.png (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/circle-cairo.png (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/circle-ooo-large.png (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/circle-ooo.png (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/expander-fuzzy-large.png (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/expander-fuzzy.png (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/expander-sharp-large.png (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/expander-sharp.png (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/fuzzies.svg (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/jaggies.svg (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/rendering-model.png (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/slides/tutorial.xml (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/src/.gitignore (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/src/Makefile (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/src/README (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/src/circle.c (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/src/include/cairo-tutorial-gtk.h (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/src/include/cairo-tutorial-pdf.h (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/src/include/cairo-tutorial-png.h (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/src/include/cairo-tutorial-xlib.h (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/src/include/cairo-tutorial.h (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/src/lca.c (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/src/singular.c (100%) rename {cairo => 3rd-party/cairo}/doc/tutorial/src/twin.c (100%) rename {cairo => 3rd-party/cairo}/perf/.gitignore (100%) rename {cairo => 3rd-party/cairo}/perf/COPYING (100%) rename {cairo => 3rd-party/cairo}/perf/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/perf/Makefile.sources (100%) rename {cairo => 3rd-party/cairo}/perf/Makefile.win32 (100%) rename {cairo => 3rd-party/cairo}/perf/README (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-analyse-trace.c (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-perf-chart.c (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-perf-compare-backends.c (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-perf-diff (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-perf-diff-files.c (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-perf-graph (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-perf-graph-files.c (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-perf-graph-widget.c (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-perf-graph.h (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-perf-micro.c (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-perf-print.c (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-perf-report.c (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-perf-trace.c (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-perf.c (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-perf.h (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-stats.c (100%) rename {cairo => 3rd-party/cairo}/perf/cairo-stats.h (100%) rename {cairo => 3rd-party/cairo}/perf/dirent-win32.h (100%) rename {cairo => 3rd-party/cairo}/perf/make-html.py (100%) rename {cairo => 3rd-party/cairo}/perf/micro/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/perf/micro/Makefile.sources (100%) rename {cairo => 3rd-party/cairo}/perf/micro/Makefile.win32 (100%) rename {cairo => 3rd-party/cairo}/perf/micro/a1-curve.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/a1-line.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/box-outline.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/cairo-perf-cover.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/composite-checker.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/curve.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/disjoint.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/dragon.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/fill-clip.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/fill.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/glyphs.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/hash-table.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/hatching.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/intersections.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/line.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/long-dashed-lines.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/long-lines.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/many-curves.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/many-fills.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/many-strokes.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/mask.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/mosaic.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/mosaic.h (100%) rename {cairo => 3rd-party/cairo}/perf/micro/paint-with-alpha.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/paint.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/pattern_create_radial.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/pixel.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/pythagoras-tree.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/rectangles.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/rounded-rectangles.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/sierpinski.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/spiral.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/stroke.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/subimage_copy.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/tessellate.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/text.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/tiger.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/twin.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/unaligned-clip.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/wave.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/wide-fills.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/wide-strokes.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/world-map.c (100%) rename {cairo => 3rd-party/cairo}/perf/micro/world-map.h (100%) rename {cairo => 3rd-party/cairo}/perf/micro/zrusin-another.h (100%) rename {cairo => 3rd-party/cairo}/perf/micro/zrusin.c (100%) rename {cairo => 3rd-party/cairo}/src/.gitignore (100%) rename {cairo => 3rd-party/cairo}/src/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/src/Makefile.am.analysis (100%) rename {cairo => 3rd-party/cairo}/src/Makefile.sources (100%) rename {cairo => 3rd-party/cairo}/src/Makefile.win32 (100%) rename {cairo => 3rd-party/cairo}/src/Makefile.win32.features (100%) rename {cairo => 3rd-party/cairo}/src/README (100%) rename {cairo => 3rd-party/cairo}/src/cairo-analysis-surface-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-analysis-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-arc-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-arc.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-array-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-array.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-atomic-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-atomic.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-backend-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-base64-stream.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-base85-stream.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-bentley-ottmann-rectangular.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-bentley-ottmann-rectilinear.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-bentley-ottmann.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-beos-surface.cpp (100%) rename {cairo => 3rd-party/cairo}/src/cairo-beos.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-botor-scan-converter.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-box-inline.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-boxes-intersect.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-boxes-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-boxes.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-cache-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-cache.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-cff-subset.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-clip-boxes.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-clip-inline.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-clip-polygon.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-clip-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-clip-region.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-clip-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-clip-tor-scan-converter.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-clip.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-cogl-context-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-cogl-context.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-cogl-gradient-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-cogl-gradient.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-cogl-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-cogl-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-cogl-utils-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-cogl-utils.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-cogl.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-color.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-combsort-inline.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-compiler-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-composite-rectangles-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-composite-rectangles.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-compositor-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-compositor.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-contour-inline.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-contour-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-contour.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-damage-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-damage.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-debug.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-default-context-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-default-context.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-deflate-stream.c (100%) rename {N3888_RefImpl/src/win32/include => 3rd-party/cairo/src}/cairo-deprecated.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-device-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-device.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-directfb-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-directfb.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-drm.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-egl-context.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-error-inline.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-error-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-error.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-fallback-compositor.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-features-uninstalled.pc.in (100%) rename {N3888_RefImpl/src/win32/include => 3rd-party/cairo/src}/cairo-features.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-features.pc.in (100%) rename {cairo => 3rd-party/cairo}/src/cairo-fixed-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-fixed-type-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-fixed.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-font-face-twin-data.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-font-face-twin.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-font-face.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-font-options.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-fontconfig-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-freed-pool-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-freed-pool.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-freelist-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-freelist-type-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-freelist.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-ft-font.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-ft-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-ft.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-composite.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-device.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-dispatch-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-dispatch.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-ext-def-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-glyphs.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-gradient-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-gradient.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-info.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-msaa-compositor.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-operand.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-shaders.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-source.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-spans-compositor.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-surface-legacy.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl-traps-compositor.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gl.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-glx-context.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gstate-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-gstate.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-hash-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-hash.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-hull.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-image-compositor.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-image-info-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-image-info.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-image-mask-compositor.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-image-source.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-image-surface-inline.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-image-surface-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-image-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-list-inline.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-list-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-lzw.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-malloc-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-mask-compositor.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-matrix.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-mempool-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-mempool.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-mesh-pattern-rasterizer.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-misc.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-mono-scan-converter.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-mutex-impl-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-mutex-list-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-mutex-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-mutex-type-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-mutex.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-no-compositor.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-observer.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-os2-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-os2-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-os2.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-output-stream-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-output-stream.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-paginated-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-paginated-surface-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-paginated-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-path-bounds.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-path-fill.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-path-fixed-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-path-fixed.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-path-in-fill.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-path-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-path-stroke-boxes.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-path-stroke-polygon.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-path-stroke-traps.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-path-stroke-tristrip.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-path-stroke.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-path.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-pattern-inline.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-pattern-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-pattern.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-pdf-operators-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-pdf-operators.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-pdf-shading-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-pdf-shading.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-pdf-surface-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-pdf-surface.c (100%) rename {N3888_RefImpl/src/win32/include => 3rd-party/cairo/src}/cairo-pdf.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-pen.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-pixman-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-png.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-polygon-intersect.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-polygon-reduce.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-polygon.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-ps-surface-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-ps-surface.c (100%) rename {N3888_RefImpl/src/win32/include => 3rd-party/cairo/src}/cairo-ps.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-qt-surface.cpp (100%) rename {cairo => 3rd-party/cairo}/src/cairo-qt.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-quartz-font.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-quartz-image-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-quartz-image.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-quartz-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-quartz-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-quartz.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-raster-source-pattern.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-recording-surface-inline.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-recording-surface-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-recording-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-rectangle.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-rectangular-scan-converter.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-reference-count-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-region-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-region.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-rtree-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-rtree.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-scaled-font-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-scaled-font-subsets-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-scaled-font-subsets.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-scaled-font.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-script-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-script-surface.c (100%) rename {N3888_RefImpl/src/win32/include => 3rd-party/cairo/src}/cairo-script.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-shape-mask-compositor.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-skia-surface.cpp (100%) rename {cairo => 3rd-party/cairo}/src/cairo-skia.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-slope-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-slope.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-spans-compositor-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-spans-compositor.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-spans-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-spans.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-spline.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-stroke-dash-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-stroke-dash.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-stroke-style.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-backend-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-clipper-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-clipper.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-fallback-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-fallback.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-inline.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-observer-inline.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-observer-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-observer.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-offset-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-offset.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-snapshot-inline.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-snapshot-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-snapshot.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-subsurface-inline.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-subsurface-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-subsurface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-wrapper-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface-wrapper.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-svg-surface-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-svg-surface.c (100%) rename {N3888_RefImpl/src/win32/include => 3rd-party/cairo/src}/cairo-svg.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-tee-surface-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-tee-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-tee.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-time-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-time.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-tor-scan-converter.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-tor22-scan-converter.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-toy-font-face.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-traps-compositor.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-traps-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-traps.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-tristrip-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-tristrip.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-truetype-subset-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-truetype-subset.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-type1-fallback.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-type1-glyph-names.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-type1-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-type1-subset.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-type3-glyph-surface-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-type3-glyph-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-types-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-unicode.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-uninstalled.pc.in (100%) rename {cairo => 3rd-party/cairo}/src/cairo-user-font-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-user-font.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-version.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-version.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-vg-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-vg.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-wgl-context.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-wideint-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-wideint-type-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-wideint.c (100%) rename {N3888_RefImpl/src/win32/include => 3rd-party/cairo/src}/cairo-win32.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xcb-connection-core.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xcb-connection-render.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xcb-connection-shm.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xcb-connection.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xcb-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xcb-screen.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xcb-shm.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xcb-surface-core.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xcb-surface-render.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xcb-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xcb.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xlib-core-compositor.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xlib-display.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xlib-fallback-compositor.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xlib-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xlib-render-compositor.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xlib-screen.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xlib-source.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xlib-surface-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xlib-surface-shm.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xlib-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xlib-visual.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xlib-xcb-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xlib-xrender-private.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xlib-xrender.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xlib.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xml-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/cairo-xml.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo.c (100%) rename {N3888_RefImpl/src/win32/include => 3rd-party/cairo/src}/cairo.h (100%) rename {cairo => 3rd-party/cairo}/src/cairo.pc.in (100%) rename {cairo => 3rd-party/cairo}/src/cairoint.h (100%) rename {cairo => 3rd-party/cairo}/src/check-def.sh (100%) rename {cairo => 3rd-party/cairo}/src/check-doc-syntax.awk (100%) rename {cairo => 3rd-party/cairo}/src/check-doc-syntax.sh (100%) rename {cairo => 3rd-party/cairo}/src/check-has-hidden-symbols.c (100%) rename {cairo => 3rd-party/cairo}/src/check-headers.sh (100%) rename {cairo => 3rd-party/cairo}/src/check-link.c (100%) rename {cairo => 3rd-party/cairo}/src/check-plt.sh (100%) rename {cairo => 3rd-party/cairo}/src/check-preprocessor-syntax.sh (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-bo.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-gallium-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-i915-glyphs.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-i915-private.h (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-i915-shader.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-i915-spans.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-i915-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-i965-glyphs.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-i965-private.h (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-i965-shader.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-i965-spans.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-i965-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-intel-brw-defines.h (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-intel-brw-eu-emit.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-intel-brw-eu-util.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-intel-brw-eu.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-intel-brw-eu.h (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-intel-brw-structs.h (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-intel-command-private.h (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-intel-debug.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-intel-ioctl-private.h (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-intel-private.h (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-intel-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-intel.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-ioctl-private.h (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-private.h (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-radeon-private.h (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-radeon-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-radeon.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/drm/cairo-drm.c (100%) rename {cairo => 3rd-party/cairo}/src/skia/cairo-skia-context.cpp (100%) rename {cairo => 3rd-party/cairo}/src/skia/cairo-skia-private.h (100%) rename {cairo => 3rd-party/cairo}/src/skia/cairo-skia-surface.cpp (100%) rename {cairo => 3rd-party/cairo}/src/test-base-compositor-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/test-compositor-surface-private.h (100%) rename {cairo => 3rd-party/cairo}/src/test-compositor-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/test-compositor-surface.h (100%) rename {cairo => 3rd-party/cairo}/src/test-null-compositor-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/test-null-compositor-surface.h (100%) rename {cairo => 3rd-party/cairo}/src/test-paginated-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/test-paginated-surface.h (100%) rename {cairo => 3rd-party/cairo}/src/win32/cairo-win32-debug.c (100%) rename {cairo => 3rd-party/cairo}/src/win32/cairo-win32-device.c (100%) rename {cairo => 3rd-party/cairo}/src/win32/cairo-win32-display-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/win32/cairo-win32-font.c (100%) rename {cairo => 3rd-party/cairo}/src/win32/cairo-win32-gdi-compositor.c (100%) rename {cairo => 3rd-party/cairo}/src/win32/cairo-win32-printing-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/win32/cairo-win32-private.h (100%) rename {cairo => 3rd-party/cairo}/src/win32/cairo-win32-surface.c (100%) rename {cairo => 3rd-party/cairo}/src/win32/cairo-win32-system.c (100%) rename {cairo => 3rd-party/cairo}/test/.gitignore (100%) rename {cairo => 3rd-party/cairo}/test/.valgrind-suppressions (100%) rename {cairo => 3rd-party/cairo}/test/6x13.pcf (100%) rename {cairo => 3rd-party/cairo}/test/COPYING (100%) rename {cairo => 3rd-party/cairo}/test/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/test/Makefile.sources (100%) rename {cairo => 3rd-party/cairo}/test/Makefile.win32 (100%) rename {cairo => 3rd-party/cairo}/test/README (100%) rename {cairo => 3rd-party/cairo}/test/a1-bug.c (100%) rename {cairo => 3rd-party/cairo}/test/a1-clip.c (100%) rename {cairo => 3rd-party/cairo}/test/a1-fill.c (100%) rename {cairo => 3rd-party/cairo}/test/a1-image-sample.c (100%) rename {cairo => 3rd-party/cairo}/test/a1-mask-sample.c (100%) rename {cairo => 3rd-party/cairo}/test/a1-mask.c (100%) rename {cairo => 3rd-party/cairo}/test/a1-rasterisation.c (100%) rename {cairo => 3rd-party/cairo}/test/a1-sample.c (100%) rename {cairo => 3rd-party/cairo}/test/a1-traps-sample.c (100%) rename {cairo => 3rd-party/cairo}/test/a8-clear.c (100%) rename {cairo => 3rd-party/cairo}/test/a8-mask.c (100%) rename {cairo => 3rd-party/cairo}/test/aliasing.c (100%) rename {cairo => 3rd-party/cairo}/test/alpha-similar.c (100%) rename {cairo => 3rd-party/cairo}/test/any2ppm.c (100%) rename {cairo => 3rd-party/cairo}/test/api-special-cases.c (100%) rename {cairo => 3rd-party/cairo}/test/arc-direction.c (100%) rename {cairo => 3rd-party/cairo}/test/arc-infinite-loop.c (100%) rename {cairo => 3rd-party/cairo}/test/arc-looping-dash.c (100%) rename {cairo => 3rd-party/cairo}/test/big-empty-box.c (100%) rename {cairo => 3rd-party/cairo}/test/big-empty-triangle.c (100%) rename {cairo => 3rd-party/cairo}/test/big-line.c (100%) rename {cairo => 3rd-party/cairo}/test/big-little-box.c (100%) rename {cairo => 3rd-party/cairo}/test/big-little-triangle.c (100%) rename {cairo => 3rd-party/cairo}/test/big-trap.c (100%) rename {cairo => 3rd-party/cairo}/test/bilevel-image.c (100%) rename {cairo => 3rd-party/cairo}/test/bitmap-font.c (100%) rename {cairo => 3rd-party/cairo}/test/buffer-diff.c (100%) rename {cairo => 3rd-party/cairo}/test/buffer-diff.h (100%) rename {cairo => 3rd-party/cairo}/test/bug-40410.c (100%) rename {cairo => 3rd-party/cairo}/test/bug-51910.c (100%) rename {cairo => 3rd-party/cairo}/test/bug-bo-collins.c (100%) rename {cairo => 3rd-party/cairo}/test/bug-bo-rectangular.c (100%) rename {cairo => 3rd-party/cairo}/test/bug-bo-ricotz.c (100%) rename {cairo => 3rd-party/cairo}/test/bug-extents.c (100%) rename {cairo => 3rd-party/cairo}/test/bug-seams.c (100%) rename {cairo => 3rd-party/cairo}/test/bug-source-cu.c (100%) rename {cairo => 3rd-party/cairo}/test/bug-spline.c (100%) rename {cairo => 3rd-party/cairo}/test/cairo-test-private.h (100%) rename {cairo => 3rd-party/cairo}/test/cairo-test-runner.c (100%) rename {cairo => 3rd-party/cairo}/test/cairo-test-trace.c (100%) rename {cairo => 3rd-party/cairo}/test/cairo-test.c (100%) rename {cairo => 3rd-party/cairo}/test/cairo-test.h (100%) rename {cairo => 3rd-party/cairo}/test/caps-joins-alpha.c (100%) rename {cairo => 3rd-party/cairo}/test/caps-joins-curve.c (100%) rename {cairo => 3rd-party/cairo}/test/caps-joins.c (100%) rename {cairo => 3rd-party/cairo}/test/caps-sub-paths.c (100%) rename {cairo => 3rd-party/cairo}/test/caps-tails-curve.c (100%) rename {cairo => 3rd-party/cairo}/test/caps.c (100%) rename {cairo => 3rd-party/cairo}/test/check-refs.sh (100%) rename {cairo => 3rd-party/cairo}/test/checkerboard.c (100%) rename {cairo => 3rd-party/cairo}/test/clear-source.c (100%) rename {cairo => 3rd-party/cairo}/test/clear.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-all.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-complex-bug61592.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-complex-shape.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-contexts.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-device-offset.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-disjoint-hatching.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-disjoint-quad.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-disjoint.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-double-free.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-draw-unbounded.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-empty-group.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-empty-save.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-empty.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-fill-no-op.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-fill-rule-pixel-aligned.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-fill-rule.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-fill.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-group-shapes.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-image.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-intersect.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-mixed-antialias.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-nesting.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-operator.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-polygons.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-push-group.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-rectilinear.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-shape.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-stroke-no-op.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-stroke.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-text.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-twice-rectangle.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-twice.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-unbounded.c (100%) rename {cairo => 3rd-party/cairo}/test/clip-zero.c (100%) rename {cairo => 3rd-party/cairo}/test/clipped-group.c (100%) rename {cairo => 3rd-party/cairo}/test/clipped-surface.c (100%) rename {cairo => 3rd-party/cairo}/test/clipped-trapezoids-ref.png (100%) rename {cairo => 3rd-party/cairo}/test/clipped-trapezoids.c (100%) rename {cairo => 3rd-party/cairo}/test/close-path-current-point.c (100%) rename {cairo => 3rd-party/cairo}/test/close-path.c (100%) rename {cairo => 3rd-party/cairo}/test/composite-integer-translate-over-repeat.c (100%) rename {cairo => 3rd-party/cairo}/test/composite-integer-translate-over.c (100%) rename {cairo => 3rd-party/cairo}/test/composite-integer-translate-source.c (100%) rename {cairo => 3rd-party/cairo}/test/copy-disjoint.c (100%) rename {cairo => 3rd-party/cairo}/test/copy-path.c (100%) rename {cairo => 3rd-party/cairo}/test/coverage.c (100%) rename {cairo => 3rd-party/cairo}/test/create-for-stream.c (100%) rename {cairo => 3rd-party/cairo}/test/create-from-png-stream.c (100%) rename {cairo => 3rd-party/cairo}/test/create-from-png.c (100%) rename {cairo => 3rd-party/cairo}/test/culled-glyphs.c (100%) rename {cairo => 3rd-party/cairo}/test/curve-to-as-line-to.c (100%) rename {cairo => 3rd-party/cairo}/test/dash-caps-joins.c (100%) rename {cairo => 3rd-party/cairo}/test/dash-curve.c (100%) rename {cairo => 3rd-party/cairo}/test/dash-infinite-loop.c (100%) rename {cairo => 3rd-party/cairo}/test/dash-no-dash.c (100%) rename {cairo => 3rd-party/cairo}/test/dash-offset-negative.c (100%) rename {cairo => 3rd-party/cairo}/test/dash-offset.c (100%) rename {cairo => 3rd-party/cairo}/test/dash-scale.c (100%) rename {cairo => 3rd-party/cairo}/test/dash-state.c (100%) rename {cairo => 3rd-party/cairo}/test/dash-zero-length.c (100%) rename {cairo => 3rd-party/cairo}/test/degenerate-arc.c (100%) rename {cairo => 3rd-party/cairo}/test/degenerate-arcs.c (100%) rename {cairo => 3rd-party/cairo}/test/degenerate-curve-to.c (100%) rename {cairo => 3rd-party/cairo}/test/degenerate-dash.c (100%) rename {cairo => 3rd-party/cairo}/test/degenerate-linear-gradient.c (100%) rename {cairo => 3rd-party/cairo}/test/degenerate-path.c (100%) rename {cairo => 3rd-party/cairo}/test/degenerate-pen.c (100%) rename {cairo => 3rd-party/cairo}/test/degenerate-radial-gradient.c (100%) rename {cairo => 3rd-party/cairo}/test/degenerate-rel-curve-to.c (100%) rename {cairo => 3rd-party/cairo}/test/degenerate-solid-dash.c (100%) rename {cairo => 3rd-party/cairo}/test/device-offset-fractional.c (100%) rename {cairo => 3rd-party/cairo}/test/device-offset-positive.c (100%) rename {cairo => 3rd-party/cairo}/test/device-offset-scale.c (100%) rename {cairo => 3rd-party/cairo}/test/device-offset.c (100%) rename {cairo => 3rd-party/cairo}/test/drunkard-tails.c (100%) rename {cairo => 3rd-party/cairo}/test/error-setters.c (100%) rename {cairo => 3rd-party/cairo}/test/extend-pad-border.c (100%) rename {cairo => 3rd-party/cairo}/test/extend-pad-similar.c (100%) rename {cairo => 3rd-party/cairo}/test/extend-pad.c (100%) rename {cairo => 3rd-party/cairo}/test/extend-reflect-similar.c (100%) rename {cairo => 3rd-party/cairo}/test/extend-reflect.c (100%) rename {cairo => 3rd-party/cairo}/test/extend-repeat-similar.c (100%) rename {cairo => 3rd-party/cairo}/test/extend-repeat.c (100%) rename {cairo => 3rd-party/cairo}/test/extended-blend.c (100%) rename {cairo => 3rd-party/cairo}/test/fallback-resolution.c (100%) rename {cairo => 3rd-party/cairo}/test/fallback.c (100%) rename {cairo => 3rd-party/cairo}/test/fill-alpha-pattern.c (100%) rename {cairo => 3rd-party/cairo}/test/fill-alpha.c (100%) rename {cairo => 3rd-party/cairo}/test/fill-and-stroke-alpha-add.c (100%) rename {cairo => 3rd-party/cairo}/test/fill-and-stroke-alpha.c (100%) rename {cairo => 3rd-party/cairo}/test/fill-and-stroke.c (100%) rename {cairo => 3rd-party/cairo}/test/fill-degenerate-sort-order.c (100%) rename {cairo => 3rd-party/cairo}/test/fill-disjoint.c (100%) rename {cairo => 3rd-party/cairo}/test/fill-empty.c (100%) rename {cairo => 3rd-party/cairo}/test/fill-image.c (100%) rename {cairo => 3rd-party/cairo}/test/fill-missed-stop.c (100%) rename {cairo => 3rd-party/cairo}/test/fill-rule.c (100%) rename {cairo => 3rd-party/cairo}/test/filter-bilinear-extents.c (100%) rename {cairo => 3rd-party/cairo}/test/filter-nearest-offset.c (100%) rename {cairo => 3rd-party/cairo}/test/filter-nearest-transformed.c (100%) rename {cairo => 3rd-party/cairo}/test/finer-grained-fallbacks.c (100%) rename {cairo => 3rd-party/cairo}/test/font-face-get-type.c (100%) rename {cairo => 3rd-party/cairo}/test/font-matrix-translation.c (100%) rename {cairo => 3rd-party/cairo}/test/font-options.c (100%) rename {cairo => 3rd-party/cairo}/test/ft-font-create-for-ft-face.c (100%) rename {cairo => 3rd-party/cairo}/test/ft-show-glyphs-positioning.c (100%) rename {cairo => 3rd-party/cairo}/test/ft-show-glyphs-table.c (100%) rename {cairo => 3rd-party/cairo}/test/ft-text-antialias-none.c (100%) rename {cairo => 3rd-party/cairo}/test/ft-text-vertical-layout-type1.c (100%) rename {cairo => 3rd-party/cairo}/test/ft-text-vertical-layout-type3.c (100%) rename {cairo => 3rd-party/cairo}/test/generate_refs.sh (100%) rename {cairo => 3rd-party/cairo}/test/get-and-set.c (100%) rename {cairo => 3rd-party/cairo}/test/get-clip.c (100%) rename {cairo => 3rd-party/cairo}/test/get-group-target.c (100%) rename {cairo => 3rd-party/cairo}/test/get-path-extents.c (100%) rename {cairo => 3rd-party/cairo}/test/get-xrender-format.c (100%) rename {cairo => 3rd-party/cairo}/test/gl-device-release.c (100%) rename {cairo => 3rd-party/cairo}/test/gl-oversized-surface.c (100%) rename {cairo => 3rd-party/cairo}/test/gl-surface-source.c (100%) rename {cairo => 3rd-party/cairo}/test/glyph-cache-pressure.c (100%) rename {cairo => 3rd-party/cairo}/test/gradient-alpha.c (100%) rename {cairo => 3rd-party/cairo}/test/gradient-constant-alpha.c (100%) rename {cairo => 3rd-party/cairo}/test/gradient-zero-stops-mask.c (100%) rename {cairo => 3rd-party/cairo}/test/gradient-zero-stops.c (100%) rename {cairo => 3rd-party/cairo}/test/group-clip.c (100%) rename {cairo => 3rd-party/cairo}/test/group-paint.c (100%) rename {cairo => 3rd-party/cairo}/test/group-state.c (100%) rename {cairo => 3rd-party/cairo}/test/group-unaligned.c (100%) rename {cairo => 3rd-party/cairo}/test/half-coverage.c (100%) rename {cairo => 3rd-party/cairo}/test/halo.c (100%) rename {cairo => 3rd-party/cairo}/test/hatchings.c (100%) rename {cairo => 3rd-party/cairo}/test/horizontal-clip.c (100%) rename {cairo => 3rd-party/cairo}/test/huge-linear.c (100%) rename {cairo => 3rd-party/cairo}/test/huge-radial.c (100%) rename {cairo => 3rd-party/cairo}/test/image-bug-710072.c (100%) rename {cairo => 3rd-party/cairo}/test/image-surface-source.c (100%) rename {cairo => 3rd-party/cairo}/test/imagediff.c (100%) rename {cairo => 3rd-party/cairo}/test/implicit-close.c (100%) rename {cairo => 3rd-party/cairo}/test/in-fill-empty-trapezoid.c (100%) rename {cairo => 3rd-party/cairo}/test/in-fill-trapezoid.c (100%) rename {cairo => 3rd-party/cairo}/test/index.html (100%) rename {cairo => 3rd-party/cairo}/test/infinite-join.c (100%) rename {cairo => 3rd-party/cairo}/test/invalid-matrix.c (100%) rename {cairo => 3rd-party/cairo}/test/inverse-text.c (100%) rename {cairo => 3rd-party/cairo}/test/inverted-clip.c (100%) rename {cairo => 3rd-party/cairo}/test/joins-loop.c (100%) rename {cairo => 3rd-party/cairo}/test/joins-retrace.c (100%) rename {cairo => 3rd-party/cairo}/test/joins-star.c (100%) rename {cairo => 3rd-party/cairo}/test/joins.c (100%) rename {cairo => 3rd-party/cairo}/test/jp2.jp2 (100%) rename {cairo => 3rd-party/cairo}/test/jpeg.jpg (100%) rename {cairo => 3rd-party/cairo}/test/large-clip.c (100%) rename {cairo => 3rd-party/cairo}/test/large-font.c (100%) rename {cairo => 3rd-party/cairo}/test/large-source-roi.c (100%) rename {cairo => 3rd-party/cairo}/test/large-source.c (100%) rename {cairo => 3rd-party/cairo}/test/large-twin-antialias-mixed.c (100%) rename {cairo => 3rd-party/cairo}/test/leaky-dash.c (100%) rename {cairo => 3rd-party/cairo}/test/leaky-dashed-rectangle.c (100%) rename {cairo => 3rd-party/cairo}/test/leaky-dashed-stroke.c (100%) rename {cairo => 3rd-party/cairo}/test/leaky-polygon.c (100%) rename {cairo => 3rd-party/cairo}/test/line-width-large-overlap.c (100%) rename {cairo => 3rd-party/cairo}/test/line-width-overlap.c (100%) rename {cairo => 3rd-party/cairo}/test/line-width-scale.c (100%) rename {cairo => 3rd-party/cairo}/test/line-width-tolerance.c (100%) rename {cairo => 3rd-party/cairo}/test/line-width-zero.c (100%) rename {cairo => 3rd-party/cairo}/test/line-width.c (100%) rename {cairo => 3rd-party/cairo}/test/linear-gradient-extend.c (100%) rename {cairo => 3rd-party/cairo}/test/linear-gradient-large.c (100%) rename {cairo => 3rd-party/cairo}/test/linear-gradient-one-stop.c (100%) rename {cairo => 3rd-party/cairo}/test/linear-gradient-reflect.c (100%) rename {cairo => 3rd-party/cairo}/test/linear-gradient-subset.c (100%) rename {cairo => 3rd-party/cairo}/test/linear-gradient.c (100%) rename {cairo => 3rd-party/cairo}/test/linear-step-function.c (100%) rename {cairo => 3rd-party/cairo}/test/linear-uniform.c (100%) rename {cairo => 3rd-party/cairo}/test/long-dashed-lines.c (100%) rename {cairo => 3rd-party/cairo}/test/long-lines.c (100%) rename {cairo => 3rd-party/cairo}/test/make-cairo-test-constructors.sh (100%) rename {cairo => 3rd-party/cairo}/test/map-to-image.c (100%) rename {cairo => 3rd-party/cairo}/test/mask-alpha.c (100%) rename {cairo => 3rd-party/cairo}/test/mask-ctm.c (100%) rename {cairo => 3rd-party/cairo}/test/mask-glyphs.c (100%) rename {cairo => 3rd-party/cairo}/test/mask-surface-ctm.c (100%) rename {cairo => 3rd-party/cairo}/test/mask-transformed-image.c (100%) rename {cairo => 3rd-party/cairo}/test/mask-transformed-similar.c (100%) rename {cairo => 3rd-party/cairo}/test/mask.c (100%) rename {cairo => 3rd-party/cairo}/test/mesh-pattern-accuracy.c (100%) rename {cairo => 3rd-party/cairo}/test/mesh-pattern-conical.c (100%) rename {cairo => 3rd-party/cairo}/test/mesh-pattern-control-points.c (100%) rename {cairo => 3rd-party/cairo}/test/mesh-pattern-fold.c (100%) rename {cairo => 3rd-party/cairo}/test/mesh-pattern-overlap.c (100%) rename {cairo => 3rd-party/cairo}/test/mesh-pattern-transformed.c (100%) rename {cairo => 3rd-party/cairo}/test/mesh-pattern.c (100%) rename {cairo => 3rd-party/cairo}/test/mime-data.c (100%) rename {cairo => 3rd-party/cairo}/test/mime-surface-api.c (100%) rename {cairo => 3rd-party/cairo}/test/miter-precision.c (100%) rename {cairo => 3rd-party/cairo}/test/move-to-show-surface.c (100%) rename {cairo => 3rd-party/cairo}/test/multi-page.c (100%) rename {cairo => 3rd-party/cairo}/test/negative-stride-image.c (100%) rename {cairo => 3rd-party/cairo}/test/new-sub-path.c (100%) rename {cairo => 3rd-party/cairo}/test/nil-surface.c (100%) rename {cairo => 3rd-party/cairo}/test/operator-alpha-alpha.c (100%) rename {cairo => 3rd-party/cairo}/test/operator-alpha.c (100%) rename {cairo => 3rd-party/cairo}/test/operator-clear.c (100%) rename {cairo => 3rd-party/cairo}/test/operator-source.c (100%) rename {cairo => 3rd-party/cairo}/test/operator.c (100%) rename {cairo => 3rd-party/cairo}/test/outline-tolerance.c (100%) rename {cairo => 3rd-party/cairo}/test/over-above-source.c (100%) rename {cairo => 3rd-party/cairo}/test/over-around-source.c (100%) rename {cairo => 3rd-party/cairo}/test/over-below-source.c (100%) rename {cairo => 3rd-party/cairo}/test/over-between-source.c (100%) rename {cairo => 3rd-party/cairo}/test/overlapping-boxes.c (100%) rename {cairo => 3rd-party/cairo}/test/overlapping-dash-caps.c (100%) rename {cairo => 3rd-party/cairo}/test/overlapping-glyphs.c (100%) rename {cairo => 3rd-party/cairo}/test/paint-clip-fill.c (100%) rename {cairo => 3rd-party/cairo}/test/paint-repeat.c (100%) rename {cairo => 3rd-party/cairo}/test/paint-source-alpha.c (100%) rename {cairo => 3rd-party/cairo}/test/paint-with-alpha.c (100%) rename {cairo => 3rd-party/cairo}/test/paint.c (100%) rename {cairo => 3rd-party/cairo}/test/partial-clip-text.c (100%) rename {cairo => 3rd-party/cairo}/test/partial-coverage.c (100%) rename {cairo => 3rd-party/cairo}/test/pass-through.c (100%) rename {cairo => 3rd-party/cairo}/test/path-append.c (100%) rename {cairo => 3rd-party/cairo}/test/path-precision.c (100%) rename {cairo => 3rd-party/cairo}/test/path-stroke-twice.c (100%) rename {cairo => 3rd-party/cairo}/test/pattern-get-type.c (100%) rename {cairo => 3rd-party/cairo}/test/pattern-getters.c (100%) rename {cairo => 3rd-party/cairo}/test/pdf-features.c (100%) rename {cairo => 3rd-party/cairo}/test/pdf-isolated-group.c (100%) rename {cairo => 3rd-party/cairo}/test/pdf-mime-data.c (100%) rename {cairo => 3rd-party/cairo}/test/pdf-surface-source.c (100%) rename {cairo => 3rd-party/cairo}/test/pdf2png.c (100%) rename {cairo => 3rd-party/cairo}/test/pdiff/.gitignore (100%) rename {cairo => 3rd-party/cairo}/test/pdiff/CMakeLists.txt (100%) rename {cairo => 3rd-party/cairo}/test/pdiff/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/test/pdiff/Makefile.win32 (100%) rename {cairo => 3rd-party/cairo}/test/pdiff/README.txt (100%) rename {cairo => 3rd-party/cairo}/test/pdiff/args.c (100%) rename {cairo => 3rd-party/cairo}/test/pdiff/args.h (100%) rename {cairo => 3rd-party/cairo}/test/pdiff/gpl.txt (100%) rename {cairo => 3rd-party/cairo}/test/pdiff/lpyramid.c (100%) rename {cairo => 3rd-party/cairo}/test/pdiff/lpyramid.h (100%) rename {cairo => 3rd-party/cairo}/test/pdiff/pdiff.c (100%) rename {cairo => 3rd-party/cairo}/test/pdiff/pdiff.h (100%) rename {cairo => 3rd-party/cairo}/test/pdiff/perceptualdiff.c (100%) rename {cairo => 3rd-party/cairo}/test/pixman-rotate.c (100%) rename {cairo => 3rd-party/cairo}/test/png-flatten.c (100%) rename {cairo => 3rd-party/cairo}/test/png.c (100%) rename {cairo => 3rd-party/cairo}/test/png.png (100%) rename {cairo => 3rd-party/cairo}/test/ps-eps.c (100%) rename {cairo => 3rd-party/cairo}/test/ps-features.c (100%) rename {cairo => 3rd-party/cairo}/test/ps-surface-source.c (100%) rename {cairo => 3rd-party/cairo}/test/ps2png.c (100%) rename {cairo => 3rd-party/cairo}/test/pthread-same-source.c (100%) rename {cairo => 3rd-party/cairo}/test/pthread-show-text.c (100%) rename {cairo => 3rd-party/cairo}/test/pthread-similar.c (100%) rename {cairo => 3rd-party/cairo}/test/push-group-color.c (100%) rename {cairo => 3rd-party/cairo}/test/push-group-path-offset.c (100%) rename {cairo => 3rd-party/cairo}/test/push-group.c (100%) rename {cairo => 3rd-party/cairo}/test/quartz-surface-source.c (100%) rename {cairo => 3rd-party/cairo}/test/radial-gradient-extend.c (100%) rename {cairo => 3rd-party/cairo}/test/radial-gradient.c (100%) rename {cairo => 3rd-party/cairo}/test/radial-outer-focus.c (100%) rename {cairo => 3rd-party/cairo}/test/random-clips.c (100%) rename {cairo => 3rd-party/cairo}/test/random-intersections-curves-eo.c (100%) rename {cairo => 3rd-party/cairo}/test/random-intersections-curves-nz.c (100%) rename {cairo => 3rd-party/cairo}/test/random-intersections-eo.c (100%) rename {cairo => 3rd-party/cairo}/test/random-intersections-nonzero.c (100%) rename {cairo => 3rd-party/cairo}/test/raster-source.c (100%) rename {cairo => 3rd-party/cairo}/test/record-extend.c (100%) rename {cairo => 3rd-party/cairo}/test/record-mesh.c (100%) rename {cairo => 3rd-party/cairo}/test/record.c (100%) rename {cairo => 3rd-party/cairo}/test/record1414x.c (100%) rename {cairo => 3rd-party/cairo}/test/record2x.c (100%) rename {cairo => 3rd-party/cairo}/test/record90.c (100%) rename {cairo => 3rd-party/cairo}/test/recordflip.c (100%) rename {cairo => 3rd-party/cairo}/test/recording-surface-extend.c (100%) rename {cairo => 3rd-party/cairo}/test/recording-surface-pattern.c (100%) rename {cairo => 3rd-party/cairo}/test/rectangle-rounding-error.c (100%) rename {cairo => 3rd-party/cairo}/test/rectilinear-dash-scale.c (100%) rename {cairo => 3rd-party/cairo}/test/rectilinear-dash.c (100%) rename {cairo => 3rd-party/cairo}/test/rectilinear-fill.c (100%) rename {cairo => 3rd-party/cairo}/test/rectilinear-grid.c (100%) rename {cairo => 3rd-party/cairo}/test/rectilinear-miter-limit.c (100%) rename {cairo => 3rd-party/cairo}/test/rectilinear-stroke.c (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-bug.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-bug.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-bug.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-bug.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-bug.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-bug.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-bug.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-bug.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-bug.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-clip-fill-equal.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-clip-fill-equal.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-clip-fill-equal.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-clip-fill-rule.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-clip-fill-rule.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-clip-fill-rule.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-clip-fill-rule.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-clip-fill.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-clip-fill.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-clip-fill.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-clip-paint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-clip-paint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-clip-paint.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-clip-stroke.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-clip-stroke.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-clip-stroke.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-fill.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-fill.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-fill.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-image-sample.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-image-sample.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-image-sample.gl.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-image-sample.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-line-width.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-line-width.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-line-width.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-line-width.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-line-width.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-mask-sample.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-mask-sample.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-mask-sample.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-mask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-mask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-mask.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-rasterisation-rectangles.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-rasterisation-rectangles.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-rasterisation-rectangles.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-rasterisation-rectangles.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-rasterisation-triangles.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-rasterisation-triangles.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-rasterisation-triangles.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-rasterisation-triangles.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-rectilinear-grid.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-rectilinear-grid.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-rectilinear-grid.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-sample.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-sample.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-sample.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-tiger.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-tiger.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-tiger.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-tiger.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-tiger.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-tiger.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-tiger.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-traps-sample.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-traps-sample.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-traps-sample.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a1-traps-sample.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a8-clear.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a8-clear.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a8-clear.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a8-clear.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a8-clear.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a8-clear.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a8-clear.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a8-mask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a8-mask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/a8-mask.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/aliasing.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/aliasing.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/aliasing.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/aliasing.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/aliasing.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/aliasing.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/aliasing.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/aliasing.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/alpha-similar.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/alpha-similar.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/alpha-similar.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/alpha-similar.gl.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/alpha-similar.gl.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/alpha-similar.pdf.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/alpha-similar.pdf.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/alpha-similar.ps.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/alpha-similar.ps.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/alpha-similar.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/alpha-similar.svg.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/alpha-similar.svg.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/api-special-cases.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/api-special-cases.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/api-special-cases.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-direction.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-direction.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-direction.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-direction.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-direction.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-direction.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-infinite-loop.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-infinite-loop.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-infinite-loop.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-looping-dash.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-looping-dash.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-looping-dash.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-looping-dash.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-looping-dash.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-looping-dash.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-looping-dash.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/arc-looping-dash.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-empty-box.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-empty-box.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-empty-box.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-empty-box.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-empty-triangle.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-empty-triangle.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-empty-triangle.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-empty-triangle.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-line.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-line.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-line.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-line.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-line.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-line.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-line.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-line.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-line.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-little-box.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-little-box.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-little-box.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-little-box.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-little-triangle.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-little-triangle.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-little-triangle.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-little-triangle.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-little-triangle.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-little-triangle.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-trap.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-trap.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-trap.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-trap.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-trap.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/big-trap.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bilevel-image.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bilevel-image.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bilevel-image.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bilevel-xlib-fallback.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bilevel-xlib-window.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bilevel-xlib.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bilevel-xlib.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bitmap-font.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bitmap-font.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bitmap-font.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bitmap-font.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-40410.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-40410.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-40410.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-40410.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-40410.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-40410.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-51910.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-bo-collins.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-bo-rectangular.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-bo-rectangular.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-bo-rectangular.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-bo-rectangular.ps.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-bo-rectangular.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-bo-ricotz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-bo-ricotz.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-bo-ricotz.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-bo-ricotz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-bo-ricotz.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-extents.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-extents.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-extents.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-extents.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-extents.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-extents.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-extents.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-extents.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-extents.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-seams.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-seams.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-seams.image.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-seams.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-seams.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-seams.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-seams.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-seams.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-seams.xlib-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-source-cu.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-source-cu.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-source-cu.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-source-cu.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/bug-spline.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-05.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-05.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-1.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-1.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-2.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-05.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-05.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-1.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-1.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-2.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-alpha.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-alpha.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-alpha.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-alpha.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-alpha.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-alpha.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-alpha.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-curve.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-curve.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-curve.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-curve.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-curve.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-curve.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-curve.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins-curve.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-joins.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-sub-paths.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-sub-paths.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-sub-paths.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-sub-paths.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-sub-paths.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-sub-paths.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-sub-paths.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-sub-paths.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-tails-curve.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-tails-curve.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-tails-curve.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-tails-curve.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-tails-curve.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-tails-curve.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps-tails-curve.xcb.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/caps.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/checkerboard.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/checkerboard.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/checkerboard.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear-source.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear-source.pdf.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear-source.ps.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear-source.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear-source.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear.ps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear.svg12.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clear.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-all.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-all.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-all.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-complex-bug61492.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-complex-shape-eo-aa.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-complex-shape-eo-aa.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-complex-shape-eo-aa.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-complex-shape-eo-mono.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-complex-shape-eo-mono.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-complex-shape-eo-mono.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-contexts.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-contexts.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-contexts.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-device-offset.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-device-offset.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-device-offset.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-device-offset.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint-hatching.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint-hatching.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint-hatching.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint-hatching.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint-hatching.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint-hatching.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint-hatching.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint-hatching.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint-quad.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint-quad.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-disjoint.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-empty-group.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-empty-group.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-empty-group.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-empty-save.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-empty-save.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-empty-save.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-empty.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-empty.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-empty.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-eo-unbounded.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-eo-unbounded.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-eo-unbounded.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-eo-unbounded.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-eo-unbounded.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-eo-unbounded.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-eo-unbounded.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-eo-unbounded.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-eo-unbounded.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-eo-unbounded.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-eo-unbounded.xlib-fallback.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-no-op.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-no-op.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-no-op.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-no-op.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-nz-unbounded.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-nz-unbounded.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-nz-unbounded.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-nz-unbounded.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-nz-unbounded.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-nz-unbounded.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-nz-unbounded.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-nz-unbounded.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-nz-unbounded.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-nz-unbounded.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-nz-unbounded.xlib-fallback.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-rule-pixel-aligned.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-rule-pixel-aligned.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-rule-pixel-aligned.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-rule-pixel-aligned.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-rule.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-rule.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-rule.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-rule.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-rule.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-rule.ps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-rule.ps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-rule.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-rule.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-rule.test-paginated.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-rule.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill-rule.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill.ps.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-fill.xlib-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-aligned-rectangles.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-aligned-rectangles.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-aligned-rectangles.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-circles.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-circles.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-circles.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-circles.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-circles.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-circles.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-circles.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-circles.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-circles.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-circles.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-unaligned-rectangles.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-unaligned-rectangles.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-unaligned-rectangles.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-unaligned-rectangles.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-group-shapes-unaligned-rectangles.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-image.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-image.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-image.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-image.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-image.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-image.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-image.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-image.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-image.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-image.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-intersect.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-intersect.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-intersect.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-intersect.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-intersect.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-intersect.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-mixed-antialias.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-mixed-antialias.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-mixed-antialias.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-mixed-antialias.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-mixed-antialias.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-mixed-antialias.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-nesting.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-nesting.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-nesting.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-nesting.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-nesting.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-nesting.ps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-nesting.ps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-nesting.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-nesting.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-nesting.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-nesting.test-paginated.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-nesting.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-nesting.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.gl.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.pdf.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.ps2.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.svg12.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.test-paginated.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-operator.xlib-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-polygons.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-polygons.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-polygons.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-polygons.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-polygons.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-polygons.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-polygons.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-push-group.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-push-group.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-push-group.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-push-group.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-push-group.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-push-group.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-push-group.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-push-group.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-push-group.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-push-group.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-push-group.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-rectilinear.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-rectilinear.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-rectilinear.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-rectilinear.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-rectilinear.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-rectilinear.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-rotate-image-surface-paint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-rotate-image-surface-paint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-rotate-image-surface-paint.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-shape.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-shape.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-shape.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-shape.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-shape.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-shape.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-shape.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-shape.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-shape.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-shape.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-shape.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-shape.xlib-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-no-op.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-no-op.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-no-op.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-no-op.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-unbounded.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-unbounded.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-unbounded.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-unbounded.image16.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-unbounded.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-unbounded.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-unbounded.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-unbounded.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-unbounded.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-unbounded.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-unbounded.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-unbounded.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke-unbounded.xlib-fallback.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke.ps.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-stroke.xlib-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-text.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-text.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-text.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-text.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-text.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-text.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-text.ps.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-text.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-text.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-text.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-text.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-text.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice-rectangle.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice-rectangle.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice-rectangle.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice.ps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice.ps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice.test-paginated.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice.test-paginated.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-twice.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-unbounded.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-unbounded.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-unbounded.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-unbounded.pdf.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-unbounded.pdf.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-unbounded.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-unbounded.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-xlib-fallback.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-xlib-window.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-xlib.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clip-xlib.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-group.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-group.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-group.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-group.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-group.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-group.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-group.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-group.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-group.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-group.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-group.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-group.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-group.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-group.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-group.xlib-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-surface.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-surface.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-surface.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-surface.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/clipped-trapezoids.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path-current-point.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path-current-point.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path-current-point.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path-current-point.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path-current-point.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path-current-point.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path-current-point.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path-current-point.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path-current-point.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/close-path.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-over-repeat.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-over-repeat.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-over-repeat.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-over-repeat.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-over-repeat.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-over.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-over.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-over.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-over.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-over.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-over.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-source.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-source.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-source.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-source.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-source.svg12.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/composite-integer-translate-source.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/copy-disjoint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/copy-disjoint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/copy-disjoint.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/copy-path.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/copy-path.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/copy-path.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/copy-path.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/copy-path.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/copy-path.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/copy-path.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/copy-path.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/coverage-column-triangles.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/coverage-column-triangles.xlib.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/coverage-intersecting-quads.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/coverage-intersecting-quads.xlib.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/coverage-intersecting-triangles.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/coverage-intersecting-triangles.xlib.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/coverage-rectangles.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/coverage-rectangles.xlib.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/coverage-row-triangles.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/coverage-row-triangles.xlib.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/coverage-triangles.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/coverage-triangles.xlib.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/create-from-png-stream.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/create-from-png-stream.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/create-from-png-stream.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/create-from-png.alpha.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/create-from-png.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/create-from-png.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/create-from-png.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/create-from-png.gray-alpha.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/create-from-png.gray.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/create-from-png.indexed-alpha.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/create-from-png.indexed.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/create-from-png.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/create-from-png.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/create-from-png.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/create-from-png.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/create-from-png.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/culled-glyphs.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/culled-glyphs.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/culled-glyphs.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/culled-glyphs.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/culled-glyphs.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/culled-glyphs.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/culled-glyphs.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/curve-to-as-line-to.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/curve-to-as-line-to.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/curve-to-as-line-to.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/curve-to-as-line-to.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/curve-to-as-line-to.ps.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/curve-to-as-line-to.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/curve-to-as-line-to.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/curve-to-as-line-to.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-caps-joins.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-caps-joins.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-caps-joins.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-caps-joins.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-caps-joins.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-caps-joins.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-caps-joins.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-caps-joins.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-caps-joins.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-caps-joins.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-curve.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-curve.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-curve.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-curve.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-curve.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-curve.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-curve.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-curve.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-curve.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-infinite-loop.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-infinite-loop.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-infinite-loop.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-infinite-loop.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-infinite-loop.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-infinite-loop.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-infinite-loop.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-no-dash.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-no-dash.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-no-dash.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-offset-negative.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-offset-negative.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-offset-negative.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-offset-negative.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-offset-negative.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-offset-negative.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-offset-negative.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-offset.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-offset.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-offset.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-scale.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-scale.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-scale.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-scale.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-scale.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-scale.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-scale.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-scale.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-state.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-state.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-state.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-state.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-state.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-state.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-state.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-state.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-state.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-state.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-zero-length.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-zero-length.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-zero-length.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-zero-length.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-zero-length.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-zero-length.ps2.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-zero-length.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-zero-length.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-zero-length.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-zero-length.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/dash-zero-length.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-arc.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-arc.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-arc.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-arc.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-arc.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-arc.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-arc.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-arc.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-arc.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-arc.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-arc.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-arcs.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-arcs.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-arcs.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-arcs.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-curve-to.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-curve-to.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-curve-to.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-curve-to.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-curve-to.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-curve-to.ps.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-curve-to.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-curve-to.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-curve-to.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-curve-to.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-dash.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-dash.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-dash.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-dash.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-dash.ps.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-dash.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-dash.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-dash.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-dash.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-linear-gradient.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-linear-gradient.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-linear-gradient.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-linear-gradient.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-path.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-path.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-path.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-path.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-path.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-path.ps.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-path.ps.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-path.quartz.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-path.quartz.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-path.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-path.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-path.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-pen.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-pen.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-pen.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-pen.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-pen.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-pen.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-pen.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-pen.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-radial-gradient.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-radial-gradient.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-radial-gradient.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-rel-curve-to.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-rel-curve-to.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-rel-curve-to.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-rel-curve-to.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-rel-curve-to.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-rel-curve-to.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-rel-curve-to.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-rel-curve-to.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-rel-curve-to.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/degenerate-solid-dash.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset-fractional.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset-fractional.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset-fractional.gl.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset-fractional.pdf.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset-fractional.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset-fractional.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset-fractional.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset-positive.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset-positive.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset-positive.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset-positive.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset-scale.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset-scale.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset-scale.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset-scale.svg.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/device-offset.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/drunkard-tails.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/drunkard-tails.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/drunkard-tails.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/drunkard-tails.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/drunkard-tails.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/drunkard-tails.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/drunkard-tails.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/drunkard-tails.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad-border.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad-border.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad-border.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad-border.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad-border.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad-border.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad-border.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad-border.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad-border.svg.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad-similar.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad-similar.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad-similar.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad-similar.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad-similar.svg.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-pad.svg.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-reflect-similar.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-reflect-similar.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-reflect-similar.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-reflect-similar.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-reflect-similar.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-reflect-similar.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-reflect.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-reflect.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-reflect.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-reflect.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-reflect.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-reflect.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-repeat-similar.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-repeat-similar.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-repeat-similar.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-repeat-similar.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-repeat-similar.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-repeat-similar.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-repeat.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-repeat.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-repeat.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-repeat.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-repeat.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extend-repeat.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-alpha-mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-alpha-mask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-alpha-mask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-alpha-mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-alpha.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-alpha.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-alpha.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-alpha.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-alpha.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-alpha.svg12.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-alpha.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-mask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-mask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-solid-alpha.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-solid-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-solid-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-solid-alpha.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-solid-alpha.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-solid.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-solid.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-solid.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-solid.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend-solid.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend.svg12.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/extended-blend.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi144x144.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi144x144.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi144x72.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi144x72.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi288x288.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi288x288.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi288x288.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi288x72.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi288x72.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi576x576.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi576x576.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi576x576.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi576x72.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi576x72.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi72x144.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi72x144.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi72x288.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi72x288.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi72x576.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi72x576.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback-resolution.ppi72x72.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback.image16.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fallback.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha-pattern.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha-pattern.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha-pattern.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha-pattern.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha-pattern.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha-pattern.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha-pattern.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha-pattern.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha-pattern.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha-pattern.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha.ps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-alpha.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke-alpha-add.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke-alpha-add.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke-alpha-add.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke-alpha-add.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke-alpha-add.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke-alpha-add.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke-alpha-add.svg12.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke-alpha-add.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke-alpha-add.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke-alpha.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke-alpha.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke-alpha.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke-alpha.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke-alpha.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke.ps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke.ps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-and-stroke.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-degenerate-sort-order.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-degenerate-sort-order.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-degenerate-sort-order.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-degenerate-sort-order.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-degenerate-sort-order.ps.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-degenerate-sort-order.ps.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-degenerate-sort-order.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-degenerate-sort-order.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-degenerate-sort-order.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-degenerate-sort-order.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-degenerate-sort-order.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-disjoint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-disjoint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-disjoint.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-empty.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-empty.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-empty.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-empty.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-empty.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-image.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-image.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-image.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-image.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-image.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-image.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-image.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-image.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-image.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-missed-stop.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-missed-stop.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-missed-stop.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-missed-stop.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-missed-stop.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-missed-stop.ps2.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-missed-stop.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-missed-stop.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-missed-stop.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-missed-stop.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-missed-stop.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-rule.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-rule.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-rule.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-rule.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-rule.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-rule.ps2.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-rule.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-rule.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-rule.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-rule.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-rule.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-rule.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-rule.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-xlib-fallback.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-xlib-window.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-xlib.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/fill-xlib.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-bilinear-extents.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-bilinear-extents.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-bilinear-extents.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-bilinear-extents.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-bilinear-extents.pdf.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-bilinear-extents.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-bilinear-extents.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-bilinear-extents.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-bilinear-extents.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-nearest-offset.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-nearest-offset.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-nearest-offset.gl.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-nearest-offset.pdf.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-nearest-offset.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-nearest-offset.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-nearest-offset.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-nearest-offset.svg.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-nearest-transformed.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-nearest-transformed.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-nearest-transformed.gl.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-nearest-transformed.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-nearest-transformed.pdf.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-nearest-transformed.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-nearest-transformed.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/filter-nearest-transformed.svg.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.gl.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.ps2.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.svg12.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.svg12.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/finer-grained-fallbacks.xlib-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/font-matrix-translation.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/font-matrix-translation.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/font-matrix-translation.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/font-matrix-translation.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/font-matrix-translation.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/font-matrix-translation.ps2.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/font-matrix-translation.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/font-matrix-translation.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/font-matrix-translation.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/font-matrix-translation.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/font-matrix-translation.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/font-matrix-translation.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-positioning.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-positioning.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-positioning.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-positioning.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-positioning.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-positioning.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-positioning.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-positioning.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-table.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-table.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-table.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-table.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-table.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-table.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-table.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-table.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-table.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-show-glyphs-table.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-antialias-none.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-antialias-none.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-antialias-none.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-antialias-none.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-antialias-none.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type1.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type1.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type1.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type1.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type1.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type1.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type1.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type1.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type1.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type1.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type1.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type1.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type3.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type3.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type3.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type3.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type3.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type3.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type3.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type3.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ft-text-vertical-layout-type3.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/get-group-target.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/get-group-target.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/get-group-target.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gl-surface-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gl-surface-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gl-surface-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gl-surface-source.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gl-surface-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/glyph-cache-pressure.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/glyph-cache-pressure.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/glyph-cache-pressure.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/glyph-cache-pressure.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/glyph-cache-pressure.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/glyph-cache-pressure.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/glyph-cache-pressure.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/glyph-cache-pressure.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/glyph-cache-pressure.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-alpha.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-alpha.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-alpha.ps2.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-alpha.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-alpha.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-alpha.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-constant-alpha.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-constant-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-constant-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-constant-alpha.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-constant-alpha.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-constant-alpha.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-constant-alpha.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-zero-stops-mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-zero-stops-mask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-zero-stops-mask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-zero-stops-mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-zero-stops.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-zero-stops.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-zero-stops.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/gradient-zero-stops.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-clip.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-clip.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-paint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-paint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-paint.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-unaligned.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-unaligned.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-unaligned.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-unaligned.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-unaligned.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-unaligned.ps.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-unaligned.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-unaligned.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-unaligned.svg.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-unaligned.svg.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-unaligned.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-unaligned.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/group-unaligned.xlib-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo-transform.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo-transform.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo-transform.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo-transform.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo-transform.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo-transform.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo-transform.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo-transform.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/halo.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/hatchings.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/hatchings.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/hatchings.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/hatchings.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/hatchings.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/hatchings.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/hatchings.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/horizontal-clip.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/horizontal-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/horizontal-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/horizontal-clip.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/huge-linear.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/huge-linear.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/huge-linear.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/huge-linear.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/huge-linear.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/huge-linear.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/huge-linear.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/huge-linear.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/huge-radial.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/huge-radial.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/huge-radial.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/huge-radial.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/huge-radial.pdf.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/huge-radial.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/huge-radial.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/huge-radial.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-bug-710072-aligned.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-bug-710072-aligned.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-bug-710072-aligned.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-bug-710072-unaligned.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-bug-710072-unaligned.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-bug-710072-unaligned.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-bug-710072-unaligned.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-bug-710072-unaligned.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-bug-710072-unaligned.xlib-fallback.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-bug-710072-unaligned.xlib-window.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-surface-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-surface-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-surface-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-surface-source.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-surface-source.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-surface-source.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-surface-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-surface-source.svg12.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/image-surface-source.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/implicit-close.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/implicit-close.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/implicit-close.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/implicit-close.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/implicit-close.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/implicit-close.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/infinite-join.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/infinite-join.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/infinite-join.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/infinite-join.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/infinite-join.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/infinite-join.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/infinite-join.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/infinite-join.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/inverse-text.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/inverse-text.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/inverse-text.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/inverse-text.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/inverse-text.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/inverted-clip.base.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/inverted-clip.traps.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/inverted-clip.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-loop.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-loop.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-loop.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-loop.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-loop.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-loop.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-retrace.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-retrace.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-retrace.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-retrace.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-retrace.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-retrace.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-retrace.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-star.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-star.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-star.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-star.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-star.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins-star.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/joins.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-clip.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-font.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-font.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-font.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-font.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-source-roi.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-source-roi.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-source-roi.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-source.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-twin-antialias-mixed.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-twin-antialias-mixed.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-twin-antialias-mixed.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-twin-antialias-mixed.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dash.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dash.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dash.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dash.ps2.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dash.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dash.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dash.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dash.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-rectangle.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-rectangle.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-rectangle.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-rectangle.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-rectangle.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-rectangle.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-rectangle.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-rectangle.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-rectangle.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-stroke.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-stroke.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-stroke.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-stroke.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-stroke.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-stroke.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-stroke.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-stroke.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-dashed-stroke.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-polygon.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-polygon.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-polygon.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-polygon.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-polygon.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-polygon.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-polygon.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/leaky-polygon.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-dashed.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-dashed.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-flipped.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-flipped.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-flopped.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-flopped.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-offset.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-offset.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-offset.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-rotated.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-rotated.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-rotated.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap-rotated.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-large-overlap.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-dashed.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-dashed.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-dashed.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-dashed.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-dashed.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-dashed.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-dashed.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-flipped.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-flipped.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-flipped.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-flopped.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-flopped.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-flopped.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-offset.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-offset.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-offset.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-offset.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-rotated.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-rotated.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-rotated.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-rotated.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-rotated.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap-rotated.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-overlap.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-scale.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-scale.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-scale.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-scale.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-scale.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-scale.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-scale.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-scale.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-scale.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-scale.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-tolerance.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-tolerance.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-tolerance.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-tolerance.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-tolerance.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width-tolerance.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/line-width.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-extend.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-extend.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-extend.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-large.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-large.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-large.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-large.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-one-stop.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-one-stop.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-one-stop.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-one-stop.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-reflect.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-reflect.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-reflect.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-reflect.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-reflect.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-reflect.pdf.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-reflect.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-reflect.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-reflect.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-subset.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-subset.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-subset.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-subset.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-subset.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-subset.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-subset.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-subset.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient-subset.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-gradient.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-step-function.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-step-function.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-step-function.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-step-function.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-step-function.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-step-function.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-step-function.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-uniform.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-uniform.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-uniform.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/linear-uniform.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/long-dashed-lines.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/long-dashed-lines.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/long-dashed-lines.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/long-dashed-lines.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/long-dashed-lines.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/long-dashed-lines.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/long-dashed-lines.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/long-dashed-lines.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/long-dashed-lines.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/long-dashed-lines.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/long-lines.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/long-lines.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/long-lines.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/long-lines.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/long-lines.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/long-lines.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-all-to-image.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-all-to-image.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-all-to-image.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-all-to-xlib-fallback.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-all-to-xlib-window.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-all-to-xlib.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-all-to-xlib.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-bit-to-image.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-bit-to-image.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-bit-to-image.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-bit-to-xlib-fallback.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-bit-to-xlib-window.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-bit-to-xlib.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-bit-to-xlib.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-to-image-fill.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-to-image-fill.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/map-to-image-fill.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-alpha.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-alpha.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-alpha.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-alpha.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-alpha.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-alpha.svg.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-alpha.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-alpha.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-ctm.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-ctm.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-ctm.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-ctm.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-glyphs.gl.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-glyphs.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-glyphs.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-glyphs.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-glyphs.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-surface-ctm.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-surface-ctm.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-surface-ctm.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-surface-ctm.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-image.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-image.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-image.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-image.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-image.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-image.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-image.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-similar.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-similar.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-similar.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-similar.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-similar.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-similar.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-similar.recording.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-similar.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-similar.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-xlib-fallback.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-xlib-window.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-xlib.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask-transformed-xlib.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask.pdf.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask.svg.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask.svg.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mask.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-accuracy.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-accuracy.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-accuracy.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-accuracy.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-conical.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-conical.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-conical.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-conical.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-control-points.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-control-points.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-control-points.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-control-points.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-fold.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-fold.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-fold.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-fold.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-overlap.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-overlap.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-overlap.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-overlap.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-transformed.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-transformed.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-transformed.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern-transformed.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mesh-pattern.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mime-data.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mime-data.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mime-data.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mime-data.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mime-data.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mime-data.script.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/mime-data.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/miter-precision.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/miter-precision.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/miter-precision.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/miter-precision.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/miter-precision.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/miter-precision.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/miter-precision.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/miter-precision.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/move-to-show-surface.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/move-to-show-surface.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/move-to-show-surface.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/negative-stride-image.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/negative-stride-image.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/negative-stride-image.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/negative-stride-image.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/negative-stride-image.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/new-sub-path.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/new-sub-path.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/new-sub-path.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/new-sub-path.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/new-sub-path.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/new-sub-path.ps2.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/new-sub-path.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/new-sub-path.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/new-sub-path.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/new-sub-path.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/new-sub-path.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/new-sub-path.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/nil-surface.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/nil-surface.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/nil-surface.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/nil-surface.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-alpha-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-alpha-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-alpha-alpha.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-alpha-alpha.pdf.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-alpha-alpha.ps.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-alpha-alpha.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-alpha-alpha.svg.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-alpha-alpha.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-alpha-alpha.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-alpha.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-alpha.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-alpha.svg12.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-alpha.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-clear.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-clear.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-clear.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-clear.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-clear.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-clear.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-clear.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-clear.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-clear.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-clear.svg12.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-clear.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-clear.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-clear.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-source.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-source.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-source.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-source.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-source.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator-source.xlib-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator.svg12.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/operator.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/outline-tolerance.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-above-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-above-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-above-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-above-source.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-above-source.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-above-source.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-above-source.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-above-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-above-source.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-above-source.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-above-source.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-around-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-around-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-around-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-around-source.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-around-source.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-around-source.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-around-source.ps2.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-around-source.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-around-source.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-around-source.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-around-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-around-source.svg12.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-around-source.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-around-source.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-around-source.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-below-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-below-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-below-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-below-source.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-below-source.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-below-source.ps2.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-below-source.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-below-source.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-below-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-below-source.svg12.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-below-source.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-below-source.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-below-source.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-between-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-between-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-between-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-between-source.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-between-source.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-between-source.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-between-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-between-source.svg12.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-between-source.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-between-source.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/over-between-source.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-boxes.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-boxes.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-boxes.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-boxes.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-boxes.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-boxes.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-dash-caps.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-dash-caps.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-dash-caps.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-dash-caps.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-dash-caps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-dash-caps.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-dash-caps.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-glyphs.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-glyphs.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-glyphs.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-glyphs.pdf.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-glyphs.pdf.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-glyphs.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-glyphs.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-glyphs.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-glyphs.svg.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-glyphs.svg.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-glyphs.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/overlapping-glyphs.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-clip-fill-aa.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-clip-fill-aa.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-clip-fill-aa.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-clip-fill-mono.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-clip-fill-mono.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-clip-fill-mono.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-repeat.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-repeat.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-repeat.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-source-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-source-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-source-alpha.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-source-alpha.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-source-alpha.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-clip-mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-clip-mask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-clip-mask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-clip-mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-clip-mask.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-clip-mask.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-clip.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-clip.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-clip.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-clip.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-clip.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-solid-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-solid-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-solid-clip.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-solid-clip.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha-solid-clip.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint-with-alpha.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/paint.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-bottom.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-bottom.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-bottom.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-bottom.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-left.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-left.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-left.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-left.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-right.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-right.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-right.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-right.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-right.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-top.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-top.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-top.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-top.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-top.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-top.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-top.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-clip-text-top.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-half-reference.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-half-reference.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-half-reference.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-half-triangles.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-intersecting-quads.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-intersecting-quads.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-intersecting-triangles.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-overlap-half-triangles-eo.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-overlap-half-triangles.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-overlap-three-quarter-triangles.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-rectangles.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-reference.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-reference.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-reference.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-three-quarter-reference.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-three-quarter-reference.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-three-quarter-reference.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/partial-coverage-triangles.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pass-through.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pass-through.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pass-through.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pass-through.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-append.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-append.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-append.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-append.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-append.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-append.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-append.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-append.test-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-append.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-append.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-append.xlib-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-stroke-twice.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-stroke-twice.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-stroke-twice.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-stroke-twice.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-stroke-twice.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-stroke-twice.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-stroke-twice.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/path-stroke-twice.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pattern-getters.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pattern-getters.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pattern-getters.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pdf-isolated-group.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pdf-isolated-group.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pdf-isolated-group.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pdf-surface-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pdf-surface-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pdf-surface-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pdf-surface-source.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pdf-surface-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pdf-surface-source.svg12.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pdf-surface-source.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pixman-rotate.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pixman-rotate.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pixman-rotate.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pixman-rotate.ps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pixman-rotate.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ps-eps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ps-surface-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ps-surface-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ps-surface-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ps-surface-source.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ps-surface-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ps-surface-source.svg12.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/ps-surface-source.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-same-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-same-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-same-source.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-same-source.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-same-source.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-show-text.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-show-text.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-show-text.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-show-text.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-show-text.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-show-text.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-show-text.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-show-text.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-show-text.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-show-text.xlib-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-similar.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-similar.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/pthread-similar.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group-color.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group-color.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group-color.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group-color.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group-color.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group-color.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group-color.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group-color.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group-color.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group-color.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group-path-offset.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group-path-offset.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group-path-offset.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/push-group.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/quartz-surface-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/quartz-surface-source.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/quartz-surface-source.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/quartz-surface-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-extend.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-extend.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-extend.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-extend.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-extend.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-extend.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-extend.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-extend.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-mask-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-mask-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-mask-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-mask-source.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-mask-source.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-mask-source.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-mask-source.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-mask-source.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-mask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-mask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-mask.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-mask.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-mask.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-one-stop.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-one-stop.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-one-stop.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-one-stop.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-source.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-source.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-source.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-gradient.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-outer-focus.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-outer-focus.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-outer-focus.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-outer-focus.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-outer-focus.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-outer-focus.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/radial-outer-focus.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-clip.base.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-clip.base.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-clip.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-clip.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-clip.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-clip.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-clip.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-eo.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-eo.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-eo.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-eo.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-eo.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-eo.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-eo.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-eo.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-eo.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-eo.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-eo.xlib-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-nz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-nz.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-nz.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-nz.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-nz.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-nz.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-nz.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-nz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-nz.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-nz.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-curves-nz.xlib-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-eo.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-eo.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-eo.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-eo.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-eo.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-eo.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-eo.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-eo.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-eo.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-nonzero.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-nonzero.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-nonzero.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-nonzero.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-nonzero.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-nonzero.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-nonzero.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-nonzero.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/random-intersections-nonzero.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/raster-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/raster-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/raster-source.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/raster-source.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-none-similar.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-none-similar.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-none-similar.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-none-similar.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-none-similar.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-none.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-none.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-none.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-pad-similar.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-pad-similar.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-pad-similar.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-pad-similar.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-pad-similar.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-pad.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-pad.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-pad.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-reflect-similar.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-reflect-similar.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-reflect-similar.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-reflect-similar.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-reflect-similar.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-reflect.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-reflect.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-reflect.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-repeat-similar.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-repeat-similar.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-repeat-similar.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-repeat-similar.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-repeat-similar.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-repeat.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-repeat.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-extend-repeat.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-fill-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-fill-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-fill-alpha.base.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-fill-alpha.image16.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-fill-alpha.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-fill-alpha.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-fill-alpha.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-fill-alpha.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-mesh.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-mesh.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-mesh.image16.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-mesh.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-clip-mask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-clip-mask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-clip-mask.base.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-clip-mask.image16.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-clip-mask.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-clip-mask.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-clip-mask.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-clip-mask.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-clip.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-clip.image16.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-clip.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-clip.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-clip.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-solid-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-solid-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-solid-clip.image16.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-solid-clip.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-solid-clip.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha-solid-clip.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha.image16.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint-alpha.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-paint.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-select-font-face.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-select-font-face.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-select-font-face.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-select-font-face.image16.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-select-font-face.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-select-font-face.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-self-intersecting.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-self-intersecting.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-self-intersecting.image16.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-self-intersecting.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-text-transform.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-text-transform.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-text-transform.image16.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record-text-transform.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-fill-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-fill-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-fill-alpha.base.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-fill-alpha.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-fill-alpha.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint-alpha-clip-mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint-alpha-clip-mask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint-alpha-clip-mask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint-alpha-clip-mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint-alpha-clip.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint-alpha-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint-alpha-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint-alpha-clip.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint-alpha-solid-clip.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint-alpha-solid-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint-alpha-solid-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint-alpha-solid-clip.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint-alpha.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint-alpha.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-paint.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-select-font-face.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-select-font-face.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-select-font-face.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-select-font-face.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-self-intersecting.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-self-intersecting.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-self-intersecting.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-self-intersecting.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-text-transform.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-text-transform.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record1414x-text-transform.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-fill-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-fill-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-fill-alpha.base.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-fill-alpha.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-fill-alpha.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint-alpha-clip-mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint-alpha-clip-mask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint-alpha-clip-mask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint-alpha-clip-mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint-alpha-clip.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint-alpha-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint-alpha-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint-alpha-clip.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint-alpha-solid-clip.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint-alpha-solid-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint-alpha-solid-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint-alpha-solid-clip.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint-alpha.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint-alpha.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-paint.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-select-font-face.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-select-font-face.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-select-font-face.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-select-font-face.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-self-intersecting.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-self-intersecting.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-self-intersecting.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-self-intersecting.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-text-transform.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-text-transform.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record2x-text-transform.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-fill-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-fill-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-fill-alpha.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-fill-alpha.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint-alpha-clip-mask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint-alpha-clip-mask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint-alpha-clip-mask.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint-alpha-clip-mask.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint-alpha-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint-alpha-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint-alpha-clip.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint-alpha-clip.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint-alpha-solid-clip.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint-alpha-solid-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint-alpha-solid-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint-alpha-solid-clip.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint-alpha.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint-alpha.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-paint.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-select-font-face.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-select-font-face.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-select-font-face.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-select-font-face.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-self-intersecting.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-self-intersecting.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-self-intersecting.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-text-transform.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-text-transform.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/record90-text-transform.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recordflip-fill-alpha.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recordflip-paint-alpha-clip-mask.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recordflip-paint-alpha-clip.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recordflip-paint-alpha-solid-clip.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recordflip-paint-alpha.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recordflip-paint.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recordflip-select-font-face.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recordflip-self-intersecting.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recordflip-text-transform.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-none.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-none.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-none.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-none.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-none.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-none.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-pad.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-pad.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-pad.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-pad.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-pad.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-pad.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-reflect.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-reflect.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-reflect.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-reflect.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-reflect.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-reflect.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-repeat.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-repeat.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-repeat.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-repeat.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-repeat.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-extend-repeat.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-over.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-over.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-over.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-over.gl.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-over.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-over.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-over.pdf.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-over.ps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-over.ps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-over.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-over.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-over.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-over.svg.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-over.svg.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-over.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-over.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-source.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/recording-surface-source.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectangle-rounding-error.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectangle-rounding-error.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectangle-rounding-error.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-dash-scale-unaligned.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-dash-scale-unaligned.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-dash-scale.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-dash.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-dash.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-dash.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-dash.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-dash.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-dash.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-dash.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-dash.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-fill.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-fill.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-fill.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-grid.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-grid.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-grid.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-grid.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-grid.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-grid.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-miter-limit.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-miter-limit.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-miter-limit.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-miter-limit.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-miter-limit.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-miter-limit.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-miter-limit.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-miter-limit.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-stroke.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-stroke.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-stroke.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rectilinear-stroke.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/reflected-stroke.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/reflected-stroke.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/reflected-stroke.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/reflected-stroke.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/reflected-stroke.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/reflected-stroke.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/reflected-stroke.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/reflected-stroke.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/reflected-stroke.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rel-path.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rel-path.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rel-path.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rel-path.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rel-path.ps2.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rel-path.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rel-path.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rel-path.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rel-path.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rgb24-ignore-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rgb24-ignore-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rgb24-ignore-alpha.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotate-clip-image-surface-paint.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotate-clip-image-surface-paint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotate-clip-image-surface-paint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotate-clip-image-surface-paint.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotate-clip-image-surface-paint.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotate-clip-image-surface-paint.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotate-clip-image-surface-paint.xlib-fallback.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotate-clip-image-surface-paint.xlib-window.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotate-image-surface-paint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotate-image-surface-paint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotate-image-surface-paint.pdf.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotate-image-surface-paint.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotate-image-surface-paint.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotate-image-surface-paint.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotate-image-surface-paint.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotate-image-surface-paint.svg.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotated-clip.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotated-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotated-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotated-clip.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotated-clip.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotated-clip.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotated-clip.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotated-clip.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotated-clip.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotated-clip.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rotated-clip.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-fill.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-fill.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-fill.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-fill.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-fill.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-fill.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-fill.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-fill.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-fill.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-stroke.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-stroke.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-stroke.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-stroke.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-stroke.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-stroke.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-stroke.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/rounded-rectangle-stroke.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/sample-diagonal.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/sample-horizontal.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/sample-vertical.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-down-source-surface-paint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-down-source-surface-paint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-down-source-surface-paint.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-image.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-image.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-image.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-image.gl.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-image.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-image.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-image.pdf.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-image.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-image.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-image.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-image.script.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-image.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-image.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-image.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-image.xlib-fallback.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.gl.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.pdf.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.recording.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.script.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.xlib-fallback.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-similar.xlib.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-xlib-fallback.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-xlib-window.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-xlib.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-offset-xlib.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-source-surface-paint.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-source-surface-paint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-source-surface-paint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-source-surface-paint.pdf.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-source-surface-paint.pdf.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-source-surface-paint.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-source-surface-paint.svg.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/scale-source-surface-paint.svg.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/select-font-face.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/select-font-face.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/select-font-face.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/select-font-face.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/select-font-face.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/select-font-face.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/select-font-face.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/select-font-face.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/select-font-face.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-copy-overlap.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-copy-overlap.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-copy-overlap.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-copy-overlap.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-copy-overlap.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-copy-overlap.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-copy.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-copy.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-copy.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-copy.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-copy.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-copy.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-copy.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-copy.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-intersecting.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-intersecting.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-intersecting.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-intersecting.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-intersecting.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-intersecting.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/self-intersecting.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/set-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/set-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/set-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/set-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-general-convex.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-general-convex.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-general-convex.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-general-convex.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-general-convex.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-general-convex.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-general-convex.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-sierpinski.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-sierpinski.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-sierpinski.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-sierpinski.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-sierpinski.pdf.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-sierpinski.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-sierpinski.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-sierpinski.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-sierpinski.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-sierpinski.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/shape-sierpinski.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-glyphs-advance.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-glyphs-advance.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-glyphs-advance.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-glyphs-advance.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-glyphs-advance.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-glyphs-advance.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-glyphs-advance.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-glyphs-advance.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-glyphs-advance.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-glyphs-many.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-glyphs-many.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-glyphs-many.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-text-current-point.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-text-current-point.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-text-current-point.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-text-current-point.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-text-current-point.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-text-current-point.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-text-current-point.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-text-current-point.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/show-text-current-point.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/skew-extreme.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/skew-extreme.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/skew-extreme.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/skew-extreme.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/skew-extreme.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/skew-extreme.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/skew-extreme.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/skew-extreme.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-fill.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-fill.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-fill.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-fill.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-fill.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-fill.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-fill.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-fill.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-fill.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-fill.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-image-mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-image-mask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-image-mask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-image-mask.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-image-mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-mask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-mask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-mask.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-mask.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-mask.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-mask.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-paint.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-paint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-paint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-paint.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-paint.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-paint.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-paint.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-paint.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-stroke.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-stroke.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-stroke.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-stroke.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-stroke.pdf.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-stroke.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-stroke.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-stroke.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-stroke.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-text.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-text.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-text.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-text.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-text.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-text.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-text.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-text.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-text.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-text.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-text.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-text.script.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-text.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-text.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask-text.xlib-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask.pdf.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask.script.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/smask.xlib-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/solid-pattern-cache-stress.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/solid-pattern-cache-stress.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/solid-pattern-cache-stress.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-clip-scale.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-clip-scale.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-clip-scale.gl.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-clip-scale.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-clip-scale.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-clip-scale.ps2.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-clip-scale.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-clip-scale.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-clip-scale.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-clip-scale.recording.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-clip-scale.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-clip-scale.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-clip.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-surface-scale-paint.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-surface-scale-paint.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-surface-scale-paint.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/source-surface-scale-paint.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/spline-decomposition.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/spline-decomposition.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/spline-decomposition.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/spline-decomposition.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/spline-decomposition.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/spline-decomposition.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/spline-decomposition.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/spline-decomposition.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/spline-decomposition.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/spline-decomposition.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/spline-decomposition.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stride-12-image.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stride-12-image.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stride-12-image.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stride-12-image.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stride-12-image.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stride-12-xlib-fallback.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stride-12-xlib-window.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stride-12-xlib.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stride-12-xlib.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-clipped.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-ctm-caps.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-ctm-caps.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-ctm-caps.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-ctm-caps.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-ctm-caps.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-ctm-caps.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-ctm-caps.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-ctm-caps.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-ctm-caps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-ctm-caps.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-ctm-caps.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-image.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-image.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-image.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-image.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-image.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-image.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-image.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-image.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-image.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-image.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-open-box.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-open-box.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-open-box.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-pattern.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-pattern.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-pattern.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-pattern.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-pattern.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-xlib-fallback.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-xlib-window.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-xlib.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/stroke-xlib.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-image-repeat.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-image-repeat.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-image-repeat.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-image-repeat.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-modify-child.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-modify-child.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-modify-child.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-modify-parent.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-modify-parent.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-modify-parent.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-outside-target.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-outside-target.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-outside-target.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-outside-target.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-pad.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-pad.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-pad.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-pad.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-reflect.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-reflect.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-reflect.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-repeat.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-repeat.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-repeat.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-scale.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-scale.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-scale.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-scale.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-scale.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-scale.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-similar-repeat.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-similar-repeat.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface-similar-repeat.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/subsurface.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-big-scale-down.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-big-scale-down.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-big-scale-down.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-big-scale-down.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-big-scale-down.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-operator.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-operator.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-operator.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-operator.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-operator.pdf.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-operator.pdf.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-operator.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-operator.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-operator.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-operator.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-operator.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down-extend-none.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down-extend-none.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down-extend-none.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down-extend-none.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down-extend-pad.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down-extend-pad.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down-extend-pad.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down-extend-pad.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down-extend-reflect.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down-extend-reflect.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down-extend-reflect.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down-extend-reflect.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down-extend-repeat.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down-extend-repeat.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down-extend-repeat.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down-extend-repeat.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-down.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-up.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-up.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-up.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-up.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-up.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-up.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-up.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-up.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern-scale-up.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern.pdf.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern.ps.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern.quartz.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/surface-pattern.svg.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/svg-surface-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/svg-surface-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/svg-surface-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/svg-surface-source.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/svg-surface-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/svg-surface-source.svg12.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/svg-surface-source.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-gray.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-gray.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-gray.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-gray.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-gray.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-gray.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-gray.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-none.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-none.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-none.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-none.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-bgr.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-bgr.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-bgr.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-bgr.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-rgb.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-rgb.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-rgb.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-rgb.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-vbgr.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-vbgr.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-vbgr.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-vbgr.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-vrgb.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-vrgb.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-vrgb.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel-vrgb.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel.base.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel.base.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-antialias-subpixel.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-glyph-range.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-glyph-range.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-glyph-range.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-glyph-range.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-glyph-range.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-glyph-range.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-glyph-range.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-glyph-range.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-pattern.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-pattern.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-pattern.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-pattern.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-pattern.pdf.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-pattern.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-pattern.ps2.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-pattern.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-pattern.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-pattern.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-pattern.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-pattern.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-pattern.svg.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-pattern.svg.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-pattern.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-pattern.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-rotate.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-rotate.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-rotate.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-rotate.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-rotate.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-rotate.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-rotate.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-rotate.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-rotate.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-rotate.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-rotate.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-rotate.xlib-fallback.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-transform.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-transform.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-transform.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-transform.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-transform.pdf.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-transform.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-transform.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-transform.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/text-transform.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/tiger.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/tiger.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/tiger.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/tiger.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/tiger.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/tiger.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/tighten-bounds.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/tighten-bounds.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/tighten-bounds.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/tighten-bounds.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/tighten-bounds.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/tighten-bounds.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/transforms.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/transforms.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/transforms.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/transforms.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/transforms.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/transforms.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/transforms.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/transforms.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/transforms.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/translate-show-surface.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/translate-show-surface.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/translate-show-surface.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/trap-clip.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/trap-clip.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/trap-clip.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/trap-clip.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/trap-clip.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/trap-clip.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/trap-clip.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/trap-clip.ps2.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/trap-clip.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/trap-clip.ps3.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/trap-clip.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/trap-clip.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/trap-clip.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/trap-clip.test-paginated.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/trap-clip.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/trap-clip.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-gray.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-gray.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-gray.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-gray.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-gray.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-gray.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-gray.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-gray.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-mixed.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-mixed.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-mixed.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-mixed.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-mixed.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-mixed.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-mixed.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-none.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-none.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-none.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-none.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-none.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-none.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-subpixel.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-subpixel.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-subpixel.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-subpixel.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-subpixel.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-subpixel.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-subpixel.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/twin.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unaligned-box.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unaligned-box.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unaligned-box.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unaligned-box.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unaligned-box.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unantialiased-shapes.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unantialiased-shapes.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unantialiased-shapes.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unantialiased-shapes.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unantialiased-shapes.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unantialiased-shapes.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.gl.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.gl.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.ps2.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.ps3.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.quartz.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.quartz.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.svg12.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unbounded-operator.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unclosed-strokes.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unclosed-strokes.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unclosed-strokes.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unclosed-strokes.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unclosed-strokes.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/unclosed-strokes.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-mask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-mask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-mask.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-mask.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-mask.ps2.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-mask.ps3.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-mask.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-mask.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-proxy.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-proxy.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-proxy.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-proxy.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-proxy.pdf.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-proxy.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-proxy.pdf.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-proxy.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-proxy.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-proxy.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-proxy.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-proxy.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-rescale.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-rescale.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-rescale.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-rescale.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-rescale.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-rescale.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-rescale.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-rescale.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font-rescale.traps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font.pdf.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font.svg.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/user-font.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/white-in-noop.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/white-in-noop.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/white-in-noop.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map-fill.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map-fill.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map-fill.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map-fill.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map-fill.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map-fill.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map-fill.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map-stroke.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map-stroke.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map-stroke.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map-stroke.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map-stroke.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map-stroke.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map-stroke.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map-stroke.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map-stroke.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/world-map.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-huge-image-shm.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-huge-image-shm.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-huge-image-shm.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-huge-subimage.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-snapshot-assert.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-snapshot-assert.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-snapshot-assert.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-stress-cache.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-stress-cache.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-stress-cache.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-surface-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-surface-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-surface-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-surface-source.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-surface-source.ps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-surface-source.ps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcb-surface-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcomposite-projection.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcomposite-projection.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcomposite-projection.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcomposite-projection.mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcomposite-projection.mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcomposite-projection.quartz.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcomposite-projection.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcomposite-projection.traps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xcomposite-projection.traps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xlib-expose-event.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xlib-expose-event.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xlib-expose-event.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xlib-expose-event.ps.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xlib-expose-event.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xlib-surface-source.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xlib-surface-source.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xlib-surface-source.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xlib-surface-source.image16.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xlib-surface-source.ps.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xlib-surface-source.ps.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xlib-surface-source.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xlib-surface-source.svg12.argb32.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/xlib-surface-source.svg12.rgb24.xfail.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/zero-alpha.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/zero-alpha.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/zero-alpha.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/zero-mask.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/zero-mask.base.argb32.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/zero-mask.base.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reference/zero-mask.rgb24.ref.png (100%) rename {cairo => 3rd-party/cairo}/test/reflected-stroke.c (100%) rename {cairo => 3rd-party/cairo}/test/rel-path.c (100%) rename {cairo => 3rd-party/cairo}/test/rgb24-ignore-alpha.c (100%) rename {cairo => 3rd-party/cairo}/test/romedalen.jpg (100%) rename {cairo => 3rd-party/cairo}/test/romedalen.png (100%) rename {cairo => 3rd-party/cairo}/test/rotate-image-surface-paint.c (100%) rename {cairo => 3rd-party/cairo}/test/rotated-clip.c (100%) rename {cairo => 3rd-party/cairo}/test/rounded-rectangle-fill.c (100%) rename {cairo => 3rd-party/cairo}/test/rounded-rectangle-stroke.c (100%) rename {cairo => 3rd-party/cairo}/test/run-cairo-test-suite.sh (100%) rename {cairo => 3rd-party/cairo}/test/sample.c (100%) rename {cairo => 3rd-party/cairo}/test/scale-down-source-surface-paint.c (100%) rename {cairo => 3rd-party/cairo}/test/scale-offset-image.c (100%) rename {cairo => 3rd-party/cairo}/test/scale-offset-similar.c (100%) rename {cairo => 3rd-party/cairo}/test/scale-source-surface-paint.c (100%) rename {cairo => 3rd-party/cairo}/test/scaled-font-zero-matrix.c (100%) rename {cairo => 3rd-party/cairo}/test/scarab.jpg (100%) rename {cairo => 3rd-party/cairo}/test/select-font-face.c (100%) rename {cairo => 3rd-party/cairo}/test/select-font-no-show-text.c (100%) rename {cairo => 3rd-party/cairo}/test/self-copy-overlap.c (100%) rename {cairo => 3rd-party/cairo}/test/self-copy.c (100%) rename {cairo => 3rd-party/cairo}/test/self-intersecting.c (100%) rename {cairo => 3rd-party/cairo}/test/set-source.c (100%) rename {cairo => 3rd-party/cairo}/test/shape-general-convex.c (100%) rename {cairo => 3rd-party/cairo}/test/shape-sierpinski.c (100%) rename {cairo => 3rd-party/cairo}/test/show-glyphs-advance.c (100%) rename {cairo => 3rd-party/cairo}/test/show-glyphs-many.c (100%) rename {cairo => 3rd-party/cairo}/test/show-text-current-point.c (100%) rename {cairo => 3rd-party/cairo}/test/skew-extreme.c (100%) rename {cairo => 3rd-party/cairo}/test/smask-fill.c (100%) rename {cairo => 3rd-party/cairo}/test/smask-image-mask.c (100%) rename {cairo => 3rd-party/cairo}/test/smask-mask.c (100%) rename {cairo => 3rd-party/cairo}/test/smask-paint.c (100%) rename {cairo => 3rd-party/cairo}/test/smask-stroke.c (100%) rename {cairo => 3rd-party/cairo}/test/smask-text.c (100%) rename {cairo => 3rd-party/cairo}/test/smask.c (100%) rename {cairo => 3rd-party/cairo}/test/solid-pattern-cache-stress.c (100%) rename {cairo => 3rd-party/cairo}/test/source-clip-scale.c (100%) rename {cairo => 3rd-party/cairo}/test/source-clip.c (100%) rename {cairo => 3rd-party/cairo}/test/source-surface-scale-paint.c (100%) rename {cairo => 3rd-party/cairo}/test/spline-decomposition.c (100%) rename {cairo => 3rd-party/cairo}/test/stride-12-image.c (100%) rename {cairo => 3rd-party/cairo}/test/stroke-clipped.c (100%) rename {cairo => 3rd-party/cairo}/test/stroke-ctm-caps.c (100%) rename {cairo => 3rd-party/cairo}/test/stroke-image.c (100%) rename {cairo => 3rd-party/cairo}/test/stroke-open-box.c (100%) rename {cairo => 3rd-party/cairo}/test/stroke-pattern.c (100%) rename {cairo => 3rd-party/cairo}/test/subsurface-image-repeat.c (100%) rename {cairo => 3rd-party/cairo}/test/subsurface-modify-child.c (100%) rename {cairo => 3rd-party/cairo}/test/subsurface-modify-parent.c (100%) rename {cairo => 3rd-party/cairo}/test/subsurface-outside-target.c (100%) rename {cairo => 3rd-party/cairo}/test/subsurface-pad.c (100%) rename {cairo => 3rd-party/cairo}/test/subsurface-reflect.c (100%) rename {cairo => 3rd-party/cairo}/test/subsurface-repeat.c (100%) rename {cairo => 3rd-party/cairo}/test/subsurface-scale.c (100%) rename {cairo => 3rd-party/cairo}/test/subsurface-similar-repeat.c (100%) rename {cairo => 3rd-party/cairo}/test/subsurface.c (100%) rename {cairo => 3rd-party/cairo}/test/surface-finish-twice.c (100%) rename {cairo => 3rd-party/cairo}/test/surface-pattern-big-scale-down.c (100%) rename {cairo => 3rd-party/cairo}/test/surface-pattern-operator.c (100%) rename {cairo => 3rd-party/cairo}/test/surface-pattern-scale-down-extend.c (100%) rename {cairo => 3rd-party/cairo}/test/surface-pattern-scale-down.c (100%) rename {cairo => 3rd-party/cairo}/test/surface-pattern-scale-up.c (100%) rename {cairo => 3rd-party/cairo}/test/surface-pattern.c (100%) rename {cairo => 3rd-party/cairo}/test/surface-source.c (100%) rename {cairo => 3rd-party/cairo}/test/svg-clip.c (100%) rename {cairo => 3rd-party/cairo}/test/svg-surface-source.c (100%) rename {cairo => 3rd-party/cairo}/test/svg-surface.c (100%) rename {cairo => 3rd-party/cairo}/test/svg2png.c (100%) rename {cairo => 3rd-party/cairo}/test/testsvg (100%) rename {cairo => 3rd-party/cairo}/test/testtable.js (100%) rename {cairo => 3rd-party/cairo}/test/text-antialias-subpixel.c (100%) rename {cairo => 3rd-party/cairo}/test/text-antialias.c (100%) rename {cairo => 3rd-party/cairo}/test/text-cache-crash.c (100%) rename {cairo => 3rd-party/cairo}/test/text-glyph-range.c (100%) rename {cairo => 3rd-party/cairo}/test/text-pattern.c (100%) rename {cairo => 3rd-party/cairo}/test/text-rotate.c (100%) rename {cairo => 3rd-party/cairo}/test/text-transform.c (100%) rename {cairo => 3rd-party/cairo}/test/text-zero-len.c (100%) rename {cairo => 3rd-party/cairo}/test/tiger.c (100%) rename {cairo => 3rd-party/cairo}/test/tiger.inc (100%) rename {cairo => 3rd-party/cairo}/test/tighten-bounds.c (100%) rename {cairo => 3rd-party/cairo}/test/toy-font-face.c (100%) rename {cairo => 3rd-party/cairo}/test/transforms.c (100%) rename {cairo => 3rd-party/cairo}/test/translate-show-surface.c (100%) rename {cairo => 3rd-party/cairo}/test/trap-clip.c (100%) rename {cairo => 3rd-party/cairo}/test/twin-antialias-gray.c (100%) rename {cairo => 3rd-party/cairo}/test/twin-antialias-mixed.c (100%) rename {cairo => 3rd-party/cairo}/test/twin-antialias-none.c (100%) rename {cairo => 3rd-party/cairo}/test/twin-antialias-subpixel.c (100%) rename {cairo => 3rd-party/cairo}/test/twin.c (100%) rename {cairo => 3rd-party/cairo}/test/unaligned-box.c (100%) rename {cairo => 3rd-party/cairo}/test/unantialiased-shapes.c (100%) rename {cairo => 3rd-party/cairo}/test/unbounded-operator.c (100%) rename {cairo => 3rd-party/cairo}/test/unclosed-strokes.c (100%) rename {cairo => 3rd-party/cairo}/test/user-data.c (100%) rename {cairo => 3rd-party/cairo}/test/user-font-mask.c (100%) rename {cairo => 3rd-party/cairo}/test/user-font-proxy.c (100%) rename {cairo => 3rd-party/cairo}/test/user-font-rescale.c (100%) rename {cairo => 3rd-party/cairo}/test/user-font.c (100%) rename {cairo => 3rd-party/cairo}/test/white-in-noop.c (100%) rename {cairo => 3rd-party/cairo}/test/world-map.c (100%) rename {cairo => 3rd-party/cairo}/test/world-map.h (100%) rename {cairo => 3rd-party/cairo}/test/xcb-huge-image-shm.c (100%) rename {cairo => 3rd-party/cairo}/test/xcb-huge-subimage.c (100%) rename {cairo => 3rd-party/cairo}/test/xcb-snapshot-assert.c (100%) rename {cairo => 3rd-party/cairo}/test/xcb-stress-cache.c (100%) rename {cairo => 3rd-party/cairo}/test/xcb-surface-source.c (100%) rename {cairo => 3rd-party/cairo}/test/xcomposite-projection.c (100%) rename {cairo => 3rd-party/cairo}/test/xlib-expose-event.c (100%) rename {cairo => 3rd-party/cairo}/test/xlib-surface-source.c (100%) rename {cairo => 3rd-party/cairo}/test/xlib-surface.c (100%) rename {cairo => 3rd-party/cairo}/test/zero-alpha.c (100%) rename {cairo => 3rd-party/cairo}/test/zero-mask.c (100%) rename {cairo => 3rd-party/cairo}/util/.gitignore (100%) rename {cairo => 3rd-party/cairo}/util/COPYING (100%) rename {cairo => 3rd-party/cairo}/util/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/util/README (100%) rename {cairo => 3rd-party/cairo}/util/backtrace-symbols.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-api-update (100%) rename {cairo => 3rd-party/cairo}/util/cairo-fdr/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/util/cairo-fdr/fdr.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-gobject/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/util/cairo-gobject/cairo-gobject-enums.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-gobject/cairo-gobject-structs.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-gobject/cairo-gobject.h (100%) rename {cairo => 3rd-party/cairo}/util/cairo-missing/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/util/cairo-missing/Makefile.sources (100%) rename {cairo => 3rd-party/cairo}/util/cairo-missing/Makefile.win32 (100%) rename {cairo => 3rd-party/cairo}/util/cairo-missing/cairo-missing.h (100%) rename {cairo => 3rd-party/cairo}/util/cairo-missing/getline.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-missing/strndup.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/.gitignore (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/COPYING (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/Makefile.sources (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/Makefile.win32 (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/cairo-script-file.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/cairo-script-hash.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/cairo-script-interpreter.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/cairo-script-interpreter.h (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/cairo-script-objects.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/cairo-script-operators.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/cairo-script-private.h (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/cairo-script-scanner.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/cairo-script-stack.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/csi-bind.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/csi-exec.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/csi-replay.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/csi-trace.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/examples/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/examples/dragon.cs (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/examples/hilbert.cs (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/examples/infinichess.cs (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/examples/interference.cs (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/examples/pythagoras-tree.cs (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/examples/sierpinski.cs (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/examples/wedgeAnnulus_crop_ybRings.cs (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/examples/world-map.cs (100%) rename {cairo => 3rd-party/cairo}/util/cairo-script/examples/zrusin.cs (100%) rename {cairo => 3rd-party/cairo}/util/cairo-sphinx/.gitignore (100%) rename {cairo => 3rd-party/cairo}/util/cairo-sphinx/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/util/cairo-sphinx/fdr.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-sphinx/sphinx.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-trace/.gitignore (100%) rename {cairo => 3rd-party/cairo}/util/cairo-trace/COPYING (100%) rename {cairo => 3rd-party/cairo}/util/cairo-trace/COPYING-GPL-3 (100%) rename {cairo => 3rd-party/cairo}/util/cairo-trace/Makefile.am (100%) rename {cairo => 3rd-party/cairo}/util/cairo-trace/cairo-trace.in (100%) rename {cairo => 3rd-party/cairo}/util/cairo-trace/lookup-symbol.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-trace/lookup-symbol.h (100%) rename {cairo => 3rd-party/cairo}/util/cairo-trace/trace.c (100%) rename {cairo => 3rd-party/cairo}/util/cairo-view (100%) rename {cairo => 3rd-party/cairo}/util/cairo.modules (100%) rename {cairo => 3rd-party/cairo}/util/font-view.c (100%) rename {cairo => 3rd-party/cairo}/util/malloc-stats.c (100%) rename {cairo => 3rd-party/cairo}/util/show-contour.c (100%) rename {cairo => 3rd-party/cairo}/util/show-edges.c (100%) rename {cairo => 3rd-party/cairo}/util/show-events.c (100%) rename {cairo => 3rd-party/cairo}/util/show-polygon.c (100%) rename {cairo => 3rd-party/cairo}/util/show-traps.c (100%) rename {cairo => 3rd-party/cairo}/util/trace-to-xml.c (100%) rename {cairo => 3rd-party/cairo}/util/waterfall (100%) rename {cairo => 3rd-party/cairo}/util/xml-to-trace.c (100%) rename {cairo => 3rd-party/cairo}/util/xr2cairo (100%) rename {libpng16 => 3rd-party/libpng}/ANNOUNCE (100%) rename {libpng16 => 3rd-party/libpng}/CHANGES (100%) rename {libpng16 => 3rd-party/libpng}/CMakeLists.txt (100%) rename {libpng16 => 3rd-party/libpng}/INSTALL (100%) rename {libpng16 => 3rd-party/libpng}/LICENSE (100%) rename {libpng16 => 3rd-party/libpng}/Makefile.am (100%) rename {libpng16 => 3rd-party/libpng}/README (100%) rename {libpng16 => 3rd-party/libpng}/TODO (100%) rename {libpng16 => 3rd-party/libpng}/arm/arm_init.c (100%) rename {libpng16 => 3rd-party/libpng}/arm/filter_neon.S (100%) rename {libpng16 => 3rd-party/libpng}/arm/filter_neon_intrinsics.c (100%) rename {libpng16 => 3rd-party/libpng}/autogen.sh (100%) rename {libpng16 => 3rd-party/libpng}/configure.ac (100%) rename {libpng16 => 3rd-party/libpng}/contrib/README.txt (100%) rename {libpng16 => 3rd-party/libpng}/contrib/conftest/README (100%) rename {libpng16 => 3rd-party/libpng}/contrib/conftest/read.dfa (100%) rename {libpng16 => 3rd-party/libpng}/contrib/conftest/s_read.dfa (100%) rename {libpng16 => 3rd-party/libpng}/contrib/conftest/s_write.dfa (100%) rename {libpng16 => 3rd-party/libpng}/contrib/conftest/simple.dfa (100%) rename {libpng16 => 3rd-party/libpng}/contrib/conftest/write.dfa (100%) rename {libpng16 => 3rd-party/libpng}/contrib/examples/README.txt (100%) rename {libpng16 => 3rd-party/libpng}/contrib/examples/iccfrompng.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/examples/pngpixel.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/examples/pngtopng.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/COPYING (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/LICENSE (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/Makefile.mingw32 (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/Makefile.sgi (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/Makefile.unx (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/Makefile.w32 (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/README (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/makevms.com (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/readpng.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/readpng.h (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/readpng2.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/readpng2.h (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/readppm.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/rpng-win.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/rpng-x.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/rpng2-win.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/rpng2-x.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/toucan.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/wpng.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/writepng.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/gregbook/writepng.h (100%) rename {libpng16 => 3rd-party/libpng}/contrib/libtests/fakepng.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/libtests/gentests.sh (100%) rename {libpng16 => 3rd-party/libpng}/contrib/libtests/makepng.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/libtests/pngstest.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/libtests/pngunknown.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/libtests/pngvalid.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/libtests/readpng.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/libtests/tarith.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/libtests/timepng.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminim/README (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminim/decoder/README (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminim/decoder/makefile (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminim/decoder/pngusr.dfa (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminim/decoder/pngusr.h (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminim/encoder/README (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminim/encoder/makefile (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminim/encoder/pngusr.dfa (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminim/encoder/pngusr.h (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminim/preader/README (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminim/preader/makefile (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminim/preader/pngusr.dfa (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminim/preader/pngusr.h (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminus/README (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminus/makefile.std (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminus/makefile.tc3 (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminus/makevms.com (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminus/png2pnm.bat (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminus/png2pnm.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminus/png2pnm.sh (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminus/pngminus.bat (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminus/pngminus.sh (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminus/pnm2png.bat (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminus/pnm2png.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngminus/pnm2png.sh (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/README (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/basn0g01.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/basn0g02.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/basn0g04.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/basn0g08.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/basn0g16.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/basn2c08.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/basn2c16.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/basn3p01.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/basn3p02.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/basn3p04.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/basn3p08.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/basn4a08.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/basn4a16.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/basn6a08.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/basn6a16.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/ftbbn0g01.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/ftbbn0g02.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/ftbbn0g04.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/ftbbn2c16.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/ftbbn3p08.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/ftbgn2c16.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/ftbgn3p08.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/ftbrn2c08.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/ftbwn0g16.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/ftbwn3p08.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/ftbyn3p08.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/ftp0n0g08.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/ftp0n2c08.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/ftp0n3p08.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/pngsuite/ftp1n3p08.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/tools/README.txt (100%) rename {libpng16 => 3rd-party/libpng}/contrib/tools/checksum-icc.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/tools/chkfmt (100%) rename {libpng16 => 3rd-party/libpng}/contrib/tools/cvtcolor.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/tools/intgamma.sh (100%) rename {libpng16 => 3rd-party/libpng}/contrib/tools/makesRGB.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/tools/png-fix-itxt.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/tools/pngfix.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/tools/sRGB.h (100%) rename {libpng16 => 3rd-party/libpng}/contrib/visupng/PngFile.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/visupng/PngFile.h (100%) rename {libpng16 => 3rd-party/libpng}/contrib/visupng/README.txt (100%) rename {libpng16 => 3rd-party/libpng}/contrib/visupng/VisualPng.c (100%) rename {libpng16 => 3rd-party/libpng}/contrib/visupng/VisualPng.dsp (100%) rename {libpng16 => 3rd-party/libpng}/contrib/visupng/VisualPng.dsw (100%) rename {libpng16 => 3rd-party/libpng}/contrib/visupng/VisualPng.ico (100%) rename {libpng16 => 3rd-party/libpng}/contrib/visupng/VisualPng.png (100%) rename {libpng16 => 3rd-party/libpng}/contrib/visupng/VisualPng.rc (100%) rename {libpng16 => 3rd-party/libpng}/contrib/visupng/cexcept.h (100%) rename {libpng16 => 3rd-party/libpng}/contrib/visupng/resource.h (100%) rename {libpng16 => 3rd-party/libpng}/example.c (100%) rename {libpng16 => 3rd-party/libpng}/libpng-config.in (100%) rename {libpng16 => 3rd-party/libpng}/libpng-manual.txt (100%) rename {libpng16 => 3rd-party/libpng}/libpng.3 (100%) rename {libpng16 => 3rd-party/libpng}/libpng.pc.in (100%) rename {libpng16 => 3rd-party/libpng}/libpngpf.3 (100%) rename {libpng16 => 3rd-party/libpng}/png.5 (100%) rename {libpng16 => 3rd-party/libpng}/png.c (100%) rename {libpng16 => 3rd-party/libpng}/png.h (100%) rename {libpng16 => 3rd-party/libpng}/pngbar.jpg (100%) rename {libpng16 => 3rd-party/libpng}/pngbar.png (100%) rename {libpng16 => 3rd-party/libpng}/pngconf.h (100%) rename {libpng16 => 3rd-party/libpng}/pngdebug.h (100%) rename {libpng16 => 3rd-party/libpng}/pngerror.c (100%) rename {libpng16 => 3rd-party/libpng}/pngget.c (100%) rename {libpng16 => 3rd-party/libpng}/pnginfo.h (100%) rename {libpng16 => 3rd-party/libpng}/pnglibconf.h (100%) rename {libpng16 => 3rd-party/libpng}/pngmem.c (100%) rename {libpng16 => 3rd-party/libpng}/pngnow.png (100%) rename {libpng16 => 3rd-party/libpng}/pngpread.c (100%) rename {libpng16 => 3rd-party/libpng}/pngpriv.h (100%) rename {libpng16 => 3rd-party/libpng}/pngread.c (100%) rename {libpng16 => 3rd-party/libpng}/pngrio.c (100%) rename {libpng16 => 3rd-party/libpng}/pngrtran.c (100%) rename {libpng16 => 3rd-party/libpng}/pngrutil.c (100%) rename {libpng16 => 3rd-party/libpng}/pngset.c (100%) rename {libpng16 => 3rd-party/libpng}/pngstruct.h (100%) rename {libpng16 => 3rd-party/libpng}/pngtest.c (100%) rename {libpng16 => 3rd-party/libpng}/pngtest.png (100%) rename {libpng16 => 3rd-party/libpng}/pngtrans.c (100%) rename {libpng16 => 3rd-party/libpng}/pngusr.dfa (100%) rename {libpng16 => 3rd-party/libpng}/pngwio.c (100%) rename {libpng16 => 3rd-party/libpng}/pngwrite.c (100%) rename {libpng16 => 3rd-party/libpng}/pngwtran.c (100%) rename {libpng16 => 3rd-party/libpng}/pngwutil.c (100%) rename {libpng16 => 3rd-party/libpng}/projects/owatcom/libpng.tgt (100%) rename {libpng16 => 3rd-party/libpng}/projects/owatcom/libpng.wpj (100%) rename {libpng16 => 3rd-party/libpng}/projects/owatcom/pngconfig.mak (100%) rename {libpng16 => 3rd-party/libpng}/projects/owatcom/pngstest.tgt (100%) rename {libpng16 => 3rd-party/libpng}/projects/owatcom/pngtest.tgt (100%) rename {libpng16 => 3rd-party/libpng}/projects/owatcom/pngvalid.tgt (100%) rename {libpng16 => 3rd-party/libpng}/projects/visualc71/PRJ0041.mak (100%) rename {libpng16 => 3rd-party/libpng}/projects/visualc71/README.txt (100%) rename {libpng16 => 3rd-party/libpng}/projects/visualc71/README_zlib.txt (100%) rename {libpng16 => 3rd-party/libpng}/projects/visualc71/libpng.sln (100%) rename {libpng16 => 3rd-party/libpng}/projects/visualc71/libpng.vcproj (100%) rename {libpng16 => 3rd-party/libpng}/projects/visualc71/pngtest.vcproj (100%) rename {libpng16 => 3rd-party/libpng}/projects/visualc71/zlib.vcproj (100%) rename {libpng16 => 3rd-party/libpng}/projects/vstudio/WARNING (100%) rename {libpng16 => 3rd-party/libpng}/projects/vstudio/libpng/libpng.vcxproj (100%) rename {libpng16 => 3rd-party/libpng}/projects/vstudio/pnglibconf/pnglibconf.vcxproj (100%) rename {libpng16 => 3rd-party/libpng}/projects/vstudio/pngstest/pngstest.vcxproj (100%) rename {libpng16 => 3rd-party/libpng}/projects/vstudio/pngtest/pngtest.vcxproj (100%) rename {libpng16 => 3rd-party/libpng}/projects/vstudio/pngunknown/pngunknown.vcxproj (100%) rename {libpng16 => 3rd-party/libpng}/projects/vstudio/pngvalid/pngvalid.vcxproj (100%) rename {libpng16 => 3rd-party/libpng}/projects/vstudio/readme.txt (100%) rename {libpng16 => 3rd-party/libpng}/projects/vstudio/vstudio.sln (100%) rename {libpng16 => 3rd-party/libpng}/projects/vstudio/zlib.props (100%) rename {libpng16 => 3rd-party/libpng}/projects/vstudio/zlib/zlib.vcxproj (100%) rename {libpng16 => 3rd-party/libpng}/scripts/README.txt (100%) rename {libpng16 => 3rd-party/libpng}/scripts/SCOPTIONS.ppc (100%) rename {libpng16 => 3rd-party/libpng}/scripts/checksym.awk (100%) rename {libpng16 => 3rd-party/libpng}/scripts/def.dfn (100%) rename {libpng16 => 3rd-party/libpng}/scripts/descrip.mms (100%) rename {libpng16 => 3rd-party/libpng}/scripts/dfn.awk (100%) rename {libpng16 => 3rd-party/libpng}/scripts/intprefix.dfn (100%) rename {libpng16 => 3rd-party/libpng}/scripts/libpng-config-body.in (100%) rename {libpng16 => 3rd-party/libpng}/scripts/libpng-config-head.in (100%) rename {libpng16 => 3rd-party/libpng}/scripts/libpng.pc.in (100%) rename {libpng16 => 3rd-party/libpng}/scripts/macro.lst (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.32sunu (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.64sunu (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.acorn (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.aix (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.amiga (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.atari (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.bc32 (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.beos (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.bor (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.cegcc (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.darwin (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.dec (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.dj2 (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.elf (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.freebsd (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.gcc (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.hp64 (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.hpgcc (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.hpux (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.ibmc (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.intel (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.knr (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.linux (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.mips (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.msc (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.msys (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.ne12bsd (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.netbsd (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.openbsd (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.sco (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.sggcc (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.sgi (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.so9 (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.solaris (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.solaris-x86 (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.std (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.sunos (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.tc3 (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makefile.vcwin32 (100%) rename {libpng16 => 3rd-party/libpng}/scripts/makevms.com (100%) rename {libpng16 => 3rd-party/libpng}/scripts/options.awk (100%) rename {libpng16 => 3rd-party/libpng}/scripts/pnglibconf.dfa (100%) rename {libpng16 => 3rd-party/libpng}/scripts/pnglibconf.h.prebuilt (100%) rename {libpng16 => 3rd-party/libpng}/scripts/pnglibconf.mak (100%) rename {libpng16 => 3rd-party/libpng}/scripts/pngwin.rc (100%) rename {libpng16 => 3rd-party/libpng}/scripts/prefix.dfn (100%) rename {libpng16 => 3rd-party/libpng}/scripts/smakefile.ppc (100%) rename {libpng16 => 3rd-party/libpng}/scripts/sym.dfn (100%) rename {libpng16 => 3rd-party/libpng}/scripts/symbols.def (100%) rename {libpng16 => 3rd-party/libpng}/scripts/symbols.dfn (100%) rename {libpng16 => 3rd-party/libpng}/scripts/vers.dfn (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest-0g01 (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest-0g02 (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest-0g04 (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest-0g08 (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest-0g16 (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest-2c08 (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest-2c16 (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest-3p01 (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest-3p02 (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest-3p04 (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest-3p08 (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest-4a08 (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest-4a16 (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest-6a08 (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest-6a16 (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngstest-error (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngtest (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngunknown-IDAT (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngunknown-discard (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngunknown-if-safe (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngunknown-sAPI (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngunknown-sTER (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngunknown-save (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngunknown-vpAg (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngvalid-gamma-16-to-8 (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngvalid-gamma-alpha-mode (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngvalid-gamma-background (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngvalid-gamma-expand16-alpha-mode (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngvalid-gamma-expand16-background (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngvalid-gamma-expand16-transform (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngvalid-gamma-sbit (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngvalid-gamma-threshold (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngvalid-gamma-transform (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngvalid-progressive-interlace-size (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngvalid-progressive-interlace-standard (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngvalid-progressive-interlace-transform (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngvalid-progressive-standard (100%) rename {libpng16 => 3rd-party/libpng}/tests/pngvalid-standard (100%) rename {pixman => 3rd-party/pixman}/.gitignore (100%) rename {pixman => 3rd-party/pixman}/AUTHORS (100%) rename {pixman => 3rd-party/pixman}/CODING_STYLE (100%) rename {pixman => 3rd-party/pixman}/COPYING (100%) rename {pixman => 3rd-party/pixman}/ChangeLog (100%) rename {pixman => 3rd-party/pixman}/INSTALL (100%) rename {pixman => 3rd-party/pixman}/Makefile.am (100%) rename {pixman => 3rd-party/pixman}/Makefile.win32 (100%) rename {pixman => 3rd-party/pixman}/Makefile.win32.common (100%) rename {pixman => 3rd-party/pixman}/NEWS (100%) rename {pixman => 3rd-party/pixman}/README (100%) rename {pixman => 3rd-party/pixman}/RELEASING (100%) rename {pixman => 3rd-party/pixman}/autogen.sh (100%) rename {pixman => 3rd-party/pixman}/configure.ac (100%) rename {pixman => 3rd-party/pixman}/demos/Makefile.am (100%) rename {pixman => 3rd-party/pixman}/demos/alpha-test.c (100%) rename {pixman => 3rd-party/pixman}/demos/checkerboard.c (100%) rename {pixman => 3rd-party/pixman}/demos/clip-in.c (100%) rename {pixman => 3rd-party/pixman}/demos/clip-test.c (100%) rename {pixman => 3rd-party/pixman}/demos/composite-test.c (100%) rename {pixman => 3rd-party/pixman}/demos/conical-test.c (100%) rename {pixman => 3rd-party/pixman}/demos/convolution-test.c (100%) rename {pixman => 3rd-party/pixman}/demos/gradient-test.c (100%) rename {pixman => 3rd-party/pixman}/demos/gtk-utils.c (100%) rename {pixman => 3rd-party/pixman}/demos/gtk-utils.h (100%) rename {pixman => 3rd-party/pixman}/demos/linear-gradient.c (100%) rename {pixman => 3rd-party/pixman}/demos/parrot.c (100%) rename {pixman => 3rd-party/pixman}/demos/parrot.jpg (100%) rename {pixman => 3rd-party/pixman}/demos/quad2quad.c (100%) rename {pixman => 3rd-party/pixman}/demos/radial-test.c (100%) rename {pixman => 3rd-party/pixman}/demos/scale.c (100%) rename {pixman => 3rd-party/pixman}/demos/scale.ui (100%) rename {pixman => 3rd-party/pixman}/demos/screen-test.c (100%) rename {pixman => 3rd-party/pixman}/demos/srgb-test.c (100%) rename {pixman => 3rd-party/pixman}/demos/srgb-trap-test.c (100%) rename {pixman => 3rd-party/pixman}/demos/trap-test.c (100%) rename {pixman => 3rd-party/pixman}/demos/tri-test.c (100%) rename {pixman => 3rd-party/pixman}/demos/zone_plate.png (100%) rename {pixman => 3rd-party/pixman}/pixman-1-uninstalled.pc.in (100%) rename {pixman => 3rd-party/pixman}/pixman-1.pc.in (100%) rename {pixman => 3rd-party/pixman}/pixman/Makefile.am (100%) rename {pixman => 3rd-party/pixman}/pixman/Makefile.sources (100%) rename {pixman => 3rd-party/pixman}/pixman/Makefile.win32 (100%) rename {pixman => 3rd-party/pixman}/pixman/loongson-mmintrin.h (100%) rename {pixman => 3rd-party/pixman}/pixman/make-srgb.pl (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-access-accessors.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-access.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-accessor.h (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-arm-common.h (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-arm-detect-win32.asm (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-arm-neon-asm-bilinear.S (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-arm-neon-asm.S (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-arm-neon-asm.h (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-arm-neon.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-arm-simd-asm-scaled.S (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-arm-simd-asm.S (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-arm-simd-asm.h (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-arm-simd.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-arm.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-bits-image.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-combine-float.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-combine32.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-combine32.h (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-compiler.h (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-conical-gradient.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-edge-accessors.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-edge-imp.h (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-edge.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-fast-path.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-filter.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-general.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-glyph.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-gradient-walker.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-image.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-implementation.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-inlines.h (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-linear-gradient.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-matrix.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-mips-dspr2-asm.S (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-mips-dspr2-asm.h (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-mips-dspr2.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-mips-dspr2.h (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-mips-memcpy-asm.S (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-mips.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-mmx.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-noop.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-ppc.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-private.h (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-radial-gradient.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-region.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-region16.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-region32.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-solid-fill.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-sse2.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-ssse3.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-timer.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-trap.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-utils.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-version.h (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-version.h.in (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-vmx.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman-x86.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman.c (100%) rename {pixman => 3rd-party/pixman}/pixman/pixman.h (100%) rename {pixman => 3rd-party/pixman}/pixman/rounding.txt (100%) rename {pixman => 3rd-party/pixman}/pixman/solaris-hwcap.mapfile (100%) rename {pixman => 3rd-party/pixman}/test/Makefile.am (100%) rename {pixman => 3rd-party/pixman}/test/Makefile.sources (100%) rename {pixman => 3rd-party/pixman}/test/Makefile.win32 (100%) rename {pixman => 3rd-party/pixman}/test/a1-trap-test.c (100%) rename {pixman => 3rd-party/pixman}/test/affine-test.c (100%) rename {pixman => 3rd-party/pixman}/test/alpha-loop.c (100%) rename {pixman => 3rd-party/pixman}/test/alphamap.c (100%) rename {pixman => 3rd-party/pixman}/test/blitters-test.c (100%) rename {pixman => 3rd-party/pixman}/test/check-formats.c (100%) rename {pixman => 3rd-party/pixman}/test/combiner-test.c (100%) rename {pixman => 3rd-party/pixman}/test/composite-traps-test.c (100%) rename {pixman => 3rd-party/pixman}/test/composite.c (100%) rename {pixman => 3rd-party/pixman}/test/fetch-test.c (100%) rename {pixman => 3rd-party/pixman}/test/fuzzer-find-diff.pl (100%) rename {pixman => 3rd-party/pixman}/test/glyph-test.c (100%) rename {pixman => 3rd-party/pixman}/test/gradient-crash-test.c (100%) rename {pixman => 3rd-party/pixman}/test/infinite-loop.c (100%) rename {pixman => 3rd-party/pixman}/test/lowlevel-blt-bench.c (100%) rename {pixman => 3rd-party/pixman}/test/matrix-test.c (100%) rename {pixman => 3rd-party/pixman}/test/oob-test.c (100%) rename {pixman => 3rd-party/pixman}/test/pdf-op-test.c (100%) rename {pixman => 3rd-party/pixman}/test/pixel-test.c (100%) rename {pixman => 3rd-party/pixman}/test/prng-test.c (100%) rename {pixman => 3rd-party/pixman}/test/radial-perf-test.c (100%) rename {pixman => 3rd-party/pixman}/test/region-contains-test.c (100%) rename {pixman => 3rd-party/pixman}/test/region-test.c (100%) rename {pixman => 3rd-party/pixman}/test/region-translate-test.c (100%) rename {pixman => 3rd-party/pixman}/test/rotate-test.c (100%) rename {pixman => 3rd-party/pixman}/test/scaling-bench.c (100%) rename {pixman => 3rd-party/pixman}/test/scaling-crash-test.c (100%) rename {pixman => 3rd-party/pixman}/test/scaling-helpers-test.c (100%) rename {pixman => 3rd-party/pixman}/test/scaling-test.c (100%) rename {pixman => 3rd-party/pixman}/test/stress-test.c (100%) rename {pixman => 3rd-party/pixman}/test/thread-test.c (100%) rename {pixman => 3rd-party/pixman}/test/trap-crasher.c (100%) rename {pixman => 3rd-party/pixman}/test/utils-prng.c (100%) rename {pixman => 3rd-party/pixman}/test/utils-prng.h (100%) rename {pixman => 3rd-party/pixman}/test/utils.c (100%) rename {pixman => 3rd-party/pixman}/test/utils.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/CMakeLists.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/ChangeLog (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/FAQ (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/INDEX (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/Makefile (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/Makefile.in (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/README (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/adler32.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/amiga/Makefile.pup (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/amiga/Makefile.sas (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/as400/bndsrc (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/as400/compile.clp (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/as400/readme.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/as400/zlib.inc (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/compress.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/configure (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/README.contrib (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/ada/buffer_demo.adb (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/ada/mtest.adb (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/ada/read.adb (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/ada/readme.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/ada/test.adb (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/ada/zlib-streams.adb (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/ada/zlib-streams.ads (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/ada/zlib-thin.adb (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/ada/zlib-thin.ads (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/ada/zlib.adb (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/ada/zlib.ads (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/ada/zlib.gpr (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/amd64/amd64-match.S (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/asm686/README.686 (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/asm686/match.S (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/blast/Makefile (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/blast/README (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/blast/blast.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/blast/blast.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/blast/test.pk (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/blast/test.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/delphi/ZLib.pas (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/delphi/ZLibConst.pas (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/delphi/readme.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/delphi/zlibd32.mak (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/dotzlib/DotZLib.build (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/dotzlib/DotZLib.chm (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/dotzlib/DotZLib.sln (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/dotzlib/DotZLib/AssemblyInfo.cs (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/dotzlib/DotZLib/ChecksumImpl.cs (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/dotzlib/DotZLib/CircularBuffer.cs (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/dotzlib/DotZLib/CodecBase.cs (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/dotzlib/DotZLib/Deflater.cs (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/dotzlib/DotZLib/DotZLib.cs (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/dotzlib/DotZLib/DotZLib.csproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/dotzlib/DotZLib/GZipStream.cs (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/dotzlib/DotZLib/Inflater.cs (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/dotzlib/DotZLib/UnitTests.cs (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/dotzlib/LICENSE_1_0.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/dotzlib/readme.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/gcc_gvmat64/gvmat64.S (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/infback9/README (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/infback9/infback9.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/infback9/infback9.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/infback9/inffix9.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/infback9/inflate9.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/infback9/inftree9.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/infback9/inftree9.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/inflate86/inffas86.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/inflate86/inffast.S (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/iostream/test.cpp (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/iostream/zfstream.cpp (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/iostream/zfstream.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/iostream2/zstream.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/iostream2/zstream_test.cpp (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/iostream3/README (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/iostream3/TODO (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/iostream3/test.cc (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/iostream3/zfstream.cc (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/iostream3/zfstream.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/masmx64/bld_ml64.bat (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/masmx64/gvmat64.asm (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/masmx64/inffas8664.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/masmx64/inffasx64.asm (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/masmx64/readme.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/masmx86/bld_ml32.bat (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/masmx86/inffas32.asm (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/masmx86/match686.asm (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/masmx86/readme.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/Makefile (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/Makefile.am (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/MiniZip64_Changes.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/MiniZip64_info.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/configure.ac (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/crypt.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/ioapi.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/ioapi.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/iowin32.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/iowin32.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/make_vms.com (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/miniunz.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/miniunzip.1 (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/minizip.1 (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/minizip.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/minizip.pc.in (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/mztools.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/mztools.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/unzip.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/unzip.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/zip.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/minizip/zip.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/pascal/example.pas (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/pascal/readme.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/pascal/zlibd32.mak (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/pascal/zlibpas.pas (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/puff/Makefile (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/puff/README (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/puff/puff.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/puff/puff.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/puff/pufftest.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/puff/zeros.raw (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/testzlib/testzlib.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/testzlib/testzlib.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/untgz/Makefile (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/untgz/Makefile.msc (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/untgz/untgz.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/readme.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc10/miniunz.vcxproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc10/miniunz.vcxproj.filters (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc10/minizip.vcxproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc10/minizip.vcxproj.filters (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc10/testzlib.vcxproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc10/testzlib.vcxproj.filters (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc10/testzlibdll.vcxproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc10/testzlibdll.vcxproj.filters (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc10/zlib.rc (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc10/zlibstat.vcxproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc10/zlibstat.vcxproj.filters (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc10/zlibvc.def (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc10/zlibvc.sln (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc10/zlibvc.vcxproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc10/zlibvc.vcxproj.filters (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc11/miniunz.vcxproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc11/minizip.vcxproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc11/testzlib.vcxproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc11/testzlibdll.vcxproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc11/zlib.rc (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc11/zlibstat.vcxproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc11/zlibvc.def (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc11/zlibvc.sln (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc11/zlibvc.vcxproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc9/miniunz.vcproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc9/minizip.vcproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc9/testzlib.vcproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc9/testzlibdll.vcproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc9/zlib.rc (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc9/zlibstat.vcproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc9/zlibvc.def (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc9/zlibvc.sln (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/contrib/vstudio/vc9/zlibvc.vcproj (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/crc32.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/crc32.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/deflate.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/deflate.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/doc/algorithm.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/doc/rfc1950.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/doc/rfc1951.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/doc/rfc1952.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/doc/txtvsbin.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/examples/README.examples (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/examples/enough.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/examples/fitblk.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/examples/gun.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/examples/gzappend.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/examples/gzjoin.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/examples/gzlog.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/examples/gzlog.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/examples/zlib_how.html (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/examples/zpipe.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/examples/zran.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/gzclose.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/gzguts.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/gzlib.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/gzread.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/gzwrite.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/infback.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/inffast.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/inffast.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/inffixed.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/inflate.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/inflate.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/inftrees.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/inftrees.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/make_vms.com (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/msdos/Makefile.bor (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/msdos/Makefile.dj2 (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/msdos/Makefile.emx (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/msdos/Makefile.msc (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/msdos/Makefile.tc (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/nintendods/Makefile (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/nintendods/README (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/old/Makefile.emx (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/old/Makefile.riscos (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/old/README (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/old/descrip.mms (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/old/os2/Makefile.os2 (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/old/os2/zlib.def (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/old/visual-basic.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/qnx/package.qpg (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/test/example.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/test/infcover.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/test/minigzip.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/treebuild.xml (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/trees.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/trees.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/uncompr.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/watcom/watcom_f.mak (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/watcom/watcom_l.mak (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/win32/DLL_FAQ.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/win32/Makefile.bor (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/win32/Makefile.gcc (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/win32/Makefile.msc (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/win32/README-WIN32.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/win32/VisualC.txt (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/win32/zlib.def (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/win32/zlib1.rc (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/zconf.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/zconf.h.cmakein (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/zconf.h.in (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/zlib.3 (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/zlib.3.pdf (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/zlib.h (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/zlib.map (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/zlib.pc.cmakein (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/zlib.pc.in (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/zlib2ansi (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/zutil.c (100%) rename {zlib-1.2.8 => 3rd-party/zlib}/zutil.h (100%) delete mode 100644 N3888_RefImpl/.gitignore delete mode 100644 N3888_RefImpl/Makefile.am delete mode 100644 N3888_RefImpl/N3888_RefImpl.sln delete mode 100644 N3888_RefImpl/src/win32/DLLs/x86/Debug_Clang_C2/cairo.dll delete mode 100644 N3888_RefImpl/src/win32/DLLs/x86/Release_Clang_C2/zlib1.dll rename {N3888_RefImpl/src => src}/.gitignore (100%) rename {N3888_RefImpl/src => src}/Makefile.am (100%) rename {N3888_RefImpl/src => src}/N3888_RefImpl.ico (100%) rename {N3888_RefImpl/src => src}/N3888_RefImpl.rc (100%) rename {N3888_RefImpl/src => src}/N3888_RefImpl.vcxproj (100%) rename {N3888_RefImpl/src => src}/N3888_RefImpl.vcxproj.filters (100%) rename {N3888_RefImpl/src => src}/RefImplApp.c (100%) rename {N3888_RefImpl/src => src}/RefImplApp.h (100%) rename {N3888_RefImpl/src => src}/RefImplDraw.cpp (100%) rename {N3888_RefImpl/src => src}/RefImplDraw.h (100%) rename {N3888_RefImpl/src => src}/RefImplWindow.c (100%) rename {N3888_RefImpl/src => src}/RefImplWindow.h (100%) rename {N3888_RefImpl/src => src}/Win32RenderWindow.cpp (100%) rename {N3888_RefImpl/src => src}/Win32RenderWindow.h (100%) rename {N3888_RefImpl/src => src}/brush.cpp (100%) rename {N3888_RefImpl/src => src}/device.cpp (100%) rename {N3888_RefImpl/src => src}/display_surface-common.cpp (100%) rename {N3888_RefImpl/src => src}/display_surface-win32.cpp (100%) rename {N3888_RefImpl/src => src}/display_surface-xlib.cpp (100%) rename {N3888_RefImpl/src => src}/entrypoint-gtk.cpp (100%) rename {N3888_RefImpl/src => src}/entrypoint-win32.cpp (100%) rename {N3888_RefImpl/src => src}/entrypoint-win32.h (100%) rename {N3888_RefImpl/src => src}/entrypoint.cpp (100%) rename {N3888_RefImpl/src => src}/font_extents.cpp (100%) rename {N3888_RefImpl/src => src}/font_face.cpp (100%) rename {N3888_RefImpl/src => src}/font_options.cpp (100%) rename {N3888_RefImpl/src => src}/image_surface.cpp (100%) rename {N3888_RefImpl/src => src}/io2d.h (100%) rename {N3888_RefImpl/src => src}/io2d_error_category.cpp (100%) rename {N3888_RefImpl/src => src}/linear_brush_factory.cpp (100%) rename {N3888_RefImpl/src => src}/mapped_surface.cpp (100%) rename {N3888_RefImpl/src => src}/matrix_2d.cpp (100%) rename {N3888_RefImpl/src => src}/mesh_brush_factory.cpp (100%) rename {N3888_RefImpl/src => src}/path.cpp (100%) rename {N3888_RefImpl/src => src}/path_data.cpp (100%) rename {N3888_RefImpl/src => src}/path_data_item.cpp (100%) rename {N3888_RefImpl/src => src}/path_factory.cpp (100%) rename {N3888_RefImpl/src => src}/radial_brush_factory.cpp (100%) rename {N3888_RefImpl/src => src}/rectangle.cpp (100%) rename {N3888_RefImpl/src => src}/refimpl-resources.c (100%) rename {N3888_RefImpl/src => src}/refimpl-resources.h (100%) rename {N3888_RefImpl/src => src}/refimpl.gresource.xml (100%) rename {N3888_RefImpl/src => src}/refimpl_about_window.ui (100%) rename {N3888_RefImpl/src => src}/refimpl_menu.ui (100%) rename {N3888_RefImpl/src => src}/refimpl_window.ui (100%) rename {N3888_RefImpl/src => src}/resource.h (100%) rename {N3888_RefImpl/src => src}/rgba_color.cpp (100%) rename {N3888_RefImpl/src => src}/sample_draw.cpp (100%) rename {N3888_RefImpl/src => src}/sample_draw.h (100%) rename {N3888_RefImpl/src => src}/simple_font_face.cpp (100%) rename {N3888_RefImpl/src => src}/small.ico (100%) rename {N3888_RefImpl/src => src}/solid_color_brush_factory.cpp (100%) rename {N3888_RefImpl/src => src}/standalone_functions.cpp (100%) rename {N3888_RefImpl/src => src}/surface.cpp (100%) rename {N3888_RefImpl/src => src}/surface_brush_factory.cpp (100%) rename {N3888_RefImpl/src => src}/targetver.h (100%) rename {N3888_RefImpl/src => src}/test_renderer.h (100%) rename {N3888_RefImpl/src => src}/test_renderer_fill.cpp (100%) rename {N3888_RefImpl/src => src}/text_extents.cpp (100%) rename {N3888_RefImpl/src => src}/throw_helpers.h (100%) rename {N3888_RefImpl/src => src}/vector_2d.cpp (100%) rename {N3888_RefImpl/src => src}/win32/DLL build instructions.txt (100%) rename {N3888_RefImpl/src => src}/win32/DLLs/x64/Debug/cairo.dll (100%) rename {N3888_RefImpl/src => src}/win32/DLLs/x64/Debug/cairo.pdb (100%) rename {N3888_RefImpl/src => src}/win32/DLLs/x64/Debug/zlib1.dll (100%) rename {N3888_RefImpl/src => src}/win32/DLLs/x64/Debug/zlib1.pdb (100%) rename {N3888_RefImpl/src => src}/win32/DLLs/x64/Release/cairo.dll (100%) rename {N3888_RefImpl/src => src}/win32/DLLs/x64/Release/zlib1.dll (100%) rename {N3888_RefImpl/Debug_Clang_C2 => src/win32/DLLs/x86/Debug}/cairo.dll (100%) rename {N3888_RefImpl/src => src}/win32/DLLs/x86/Debug/cairo.pdb (100%) rename {N3888_RefImpl/Debug_Clang_C2 => src/win32/DLLs/x86/Debug}/zlib1.dll (100%) rename {N3888_RefImpl/src => src}/win32/DLLs/x86/Debug/zlib1.pdb (100%) rename {N3888_RefImpl/src/win32/DLLs/x86/Debug => src/win32/DLLs/x86/Debug_Clang_C2}/cairo.dll (100%) rename {N3888_RefImpl/src/win32/DLLs/x86/Debug => src/win32/DLLs/x86/Debug_Clang_C2}/zlib1.dll (100%) rename {N3888_RefImpl/src => src}/win32/DLLs/x86/Release/cairo.dll (100%) rename {N3888_RefImpl/src/win32/DLLs/x86/Debug_Clang_C2 => src/win32/DLLs/x86/Release}/zlib1.dll (100%) rename {N3888_RefImpl/src => src}/win32/DLLs/x86/Release_Clang_C2/cairo.dll (100%) rename {N3888_RefImpl/src/win32/DLLs/x86/Release => src/win32/DLLs/x86/Release_Clang_C2}/zlib1.dll (100%) rename {cairo/src => src/win32/include}/cairo-deprecated.h (100%) rename {cairo/src => src/win32/include}/cairo-features.h (100%) rename {cairo/src => src/win32/include}/cairo-pdf.h (100%) rename {cairo/src => src/win32/include}/cairo-ps.h (100%) rename {cairo/src => src/win32/include}/cairo-script.h (100%) rename {cairo/src => src/win32/include}/cairo-svg.h (100%) rename {cairo => src/win32/include}/cairo-version.h (100%) rename {cairo/src => src/win32/include}/cairo-win32.h (100%) rename {cairo/src => src/win32/include}/cairo.h (100%) rename {N3888_RefImpl/src => src}/win32/lib/x64/Debug/cairo.lib (100%) rename {N3888_RefImpl/src => src}/win32/lib/x64/Debug/zlib.lib (100%) rename {N3888_RefImpl/src => src}/win32/lib/x64/Release/cairo.lib (100%) rename {N3888_RefImpl/src => src}/win32/lib/x64/Release/zlib.lib (100%) rename {N3888_RefImpl/src => src}/win32/lib/x86/Debug/cairo.lib (100%) rename {N3888_RefImpl/src => src}/win32/lib/x86/Debug/zlib.lib (100%) rename {N3888_RefImpl/src => src}/win32/lib/x86/Debug_Clang_C2/cairo.lib (100%) rename {N3888_RefImpl/src => src}/win32/lib/x86/Debug_Clang_C2/zlib.lib (100%) rename {N3888_RefImpl/src => src}/win32/lib/x86/Release/cairo.lib (100%) rename {N3888_RefImpl/src => src}/win32/lib/x86/Release/zlib.lib (100%) rename {N3888_RefImpl/src => src}/win32/lib/x86/Release_Clang_C2/cairo.lib (100%) rename {N3888_RefImpl/src => src}/win32/lib/x86/Release_Clang_C2/zlib.lib (100%) rename {N3888_RefImpl/src => src}/xcairoenumhelpers.h (100%) rename {N3888_RefImpl/src => src}/xio2d.h (100%) rename {N3888_RefImpl/src => src}/xio2dhelpers.h (100%) diff --git a/cairo/.gitignore b/3rd-party/cairo/.gitignore similarity index 100% rename from cairo/.gitignore rename to 3rd-party/cairo/.gitignore diff --git a/cairo/AUTHORS b/3rd-party/cairo/AUTHORS similarity index 100% rename from cairo/AUTHORS rename to 3rd-party/cairo/AUTHORS diff --git a/cairo/BIBLIOGRAPHY b/3rd-party/cairo/BIBLIOGRAPHY similarity index 100% rename from cairo/BIBLIOGRAPHY rename to 3rd-party/cairo/BIBLIOGRAPHY diff --git a/cairo/BUGS b/3rd-party/cairo/BUGS similarity index 100% rename from cairo/BUGS rename to 3rd-party/cairo/BUGS diff --git a/cairo/CODING_STYLE b/3rd-party/cairo/CODING_STYLE similarity index 100% rename from cairo/CODING_STYLE rename to 3rd-party/cairo/CODING_STYLE diff --git a/cairo/COPYING b/3rd-party/cairo/COPYING similarity index 100% rename from cairo/COPYING rename to 3rd-party/cairo/COPYING diff --git a/cairo/COPYING-LGPL-2.1 b/3rd-party/cairo/COPYING-LGPL-2.1 similarity index 100% rename from cairo/COPYING-LGPL-2.1 rename to 3rd-party/cairo/COPYING-LGPL-2.1 diff --git a/cairo/COPYING-MPL-1.1 b/3rd-party/cairo/COPYING-MPL-1.1 similarity index 100% rename from cairo/COPYING-MPL-1.1 rename to 3rd-party/cairo/COPYING-MPL-1.1 diff --git a/cairo/HACKING b/3rd-party/cairo/HACKING similarity index 100% rename from cairo/HACKING rename to 3rd-party/cairo/HACKING diff --git a/cairo/INSTALL b/3rd-party/cairo/INSTALL similarity index 100% rename from cairo/INSTALL rename to 3rd-party/cairo/INSTALL diff --git a/cairo/KNOWN_ISSUES b/3rd-party/cairo/KNOWN_ISSUES similarity index 100% rename from cairo/KNOWN_ISSUES rename to 3rd-party/cairo/KNOWN_ISSUES diff --git a/cairo/Makefile.am b/3rd-party/cairo/Makefile.am similarity index 100% rename from cairo/Makefile.am rename to 3rd-party/cairo/Makefile.am diff --git a/cairo/Makefile.win32 b/3rd-party/cairo/Makefile.win32 similarity index 100% rename from cairo/Makefile.win32 rename to 3rd-party/cairo/Makefile.win32 diff --git a/cairo/NEWS b/3rd-party/cairo/NEWS similarity index 100% rename from cairo/NEWS rename to 3rd-party/cairo/NEWS diff --git a/cairo/PORTING_GUIDE b/3rd-party/cairo/PORTING_GUIDE similarity index 100% rename from cairo/PORTING_GUIDE rename to 3rd-party/cairo/PORTING_GUIDE diff --git a/cairo/README b/3rd-party/cairo/README similarity index 100% rename from cairo/README rename to 3rd-party/cairo/README diff --git a/cairo/README.win32 b/3rd-party/cairo/README.win32 similarity index 100% rename from cairo/README.win32 rename to 3rd-party/cairo/README.win32 diff --git a/cairo/RELEASING b/3rd-party/cairo/RELEASING similarity index 100% rename from cairo/RELEASING rename to 3rd-party/cairo/RELEASING diff --git a/cairo/acinclude.m4 b/3rd-party/cairo/acinclude.m4 similarity index 100% rename from cairo/acinclude.m4 rename to 3rd-party/cairo/acinclude.m4 diff --git a/cairo/autogen.sh b/3rd-party/cairo/autogen.sh similarity index 100% rename from cairo/autogen.sh rename to 3rd-party/cairo/autogen.sh diff --git a/cairo/boilerplate/.gitignore b/3rd-party/cairo/boilerplate/.gitignore similarity index 100% rename from cairo/boilerplate/.gitignore rename to 3rd-party/cairo/boilerplate/.gitignore diff --git a/cairo/boilerplate/Makefile.am b/3rd-party/cairo/boilerplate/Makefile.am similarity index 100% rename from cairo/boilerplate/Makefile.am rename to 3rd-party/cairo/boilerplate/Makefile.am diff --git a/cairo/boilerplate/Makefile.sources b/3rd-party/cairo/boilerplate/Makefile.sources similarity index 100% rename from cairo/boilerplate/Makefile.sources rename to 3rd-party/cairo/boilerplate/Makefile.sources diff --git a/cairo/boilerplate/Makefile.win32 b/3rd-party/cairo/boilerplate/Makefile.win32 similarity index 100% rename from cairo/boilerplate/Makefile.win32 rename to 3rd-party/cairo/boilerplate/Makefile.win32 diff --git a/cairo/boilerplate/Makefile.win32.features b/3rd-party/cairo/boilerplate/Makefile.win32.features similarity index 100% rename from cairo/boilerplate/Makefile.win32.features rename to 3rd-party/cairo/boilerplate/Makefile.win32.features diff --git a/cairo/boilerplate/README b/3rd-party/cairo/boilerplate/README similarity index 100% rename from cairo/boilerplate/README rename to 3rd-party/cairo/boilerplate/README diff --git a/cairo/boilerplate/cairo-boilerplate-beos.cpp b/3rd-party/cairo/boilerplate/cairo-boilerplate-beos.cpp similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-beos.cpp rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-beos.cpp diff --git a/cairo/boilerplate/cairo-boilerplate-cogl.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-cogl.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-cogl.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-cogl.c diff --git a/cairo/boilerplate/cairo-boilerplate-directfb.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-directfb.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-directfb.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-directfb.c diff --git a/cairo/boilerplate/cairo-boilerplate-drm.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-drm.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-drm.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-drm.c diff --git a/cairo/boilerplate/cairo-boilerplate-egl.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-egl.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-egl.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-egl.c diff --git a/cairo/boilerplate/cairo-boilerplate-getopt.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-getopt.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-getopt.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-getopt.c diff --git a/cairo/boilerplate/cairo-boilerplate-getopt.h b/3rd-party/cairo/boilerplate/cairo-boilerplate-getopt.h similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-getopt.h rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-getopt.h diff --git a/cairo/boilerplate/cairo-boilerplate-glx.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-glx.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-glx.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-glx.c diff --git a/cairo/boilerplate/cairo-boilerplate-pdf.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-pdf.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-pdf.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-pdf.c diff --git a/cairo/boilerplate/cairo-boilerplate-private.h b/3rd-party/cairo/boilerplate/cairo-boilerplate-private.h similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-private.h rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-private.h diff --git a/cairo/boilerplate/cairo-boilerplate-ps.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-ps.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-ps.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-ps.c diff --git a/cairo/boilerplate/cairo-boilerplate-qt.cpp b/3rd-party/cairo/boilerplate/cairo-boilerplate-qt.cpp similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-qt.cpp rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-qt.cpp diff --git a/cairo/boilerplate/cairo-boilerplate-quartz.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-quartz.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-quartz.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-quartz.c diff --git a/cairo/boilerplate/cairo-boilerplate-scaled-font.h b/3rd-party/cairo/boilerplate/cairo-boilerplate-scaled-font.h similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-scaled-font.h rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-scaled-font.h diff --git a/cairo/boilerplate/cairo-boilerplate-script.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-script.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-script.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-script.c diff --git a/cairo/boilerplate/cairo-boilerplate-skia.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-skia.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-skia.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-skia.c diff --git a/cairo/boilerplate/cairo-boilerplate-svg.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-svg.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-svg.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-svg.c diff --git a/cairo/boilerplate/cairo-boilerplate-system.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-system.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-system.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-system.c diff --git a/cairo/boilerplate/cairo-boilerplate-system.h b/3rd-party/cairo/boilerplate/cairo-boilerplate-system.h similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-system.h rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-system.h diff --git a/cairo/boilerplate/cairo-boilerplate-test-surfaces.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-test-surfaces.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-test-surfaces.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-test-surfaces.c diff --git a/cairo/boilerplate/cairo-boilerplate-vg.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-vg.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-vg.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-vg.c diff --git a/cairo/boilerplate/cairo-boilerplate-wgl.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-wgl.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-wgl.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-wgl.c diff --git a/cairo/boilerplate/cairo-boilerplate-win32-printing.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-win32-printing.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-win32-printing.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-win32-printing.c diff --git a/cairo/boilerplate/cairo-boilerplate-win32.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-win32.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-win32.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-win32.c diff --git a/cairo/boilerplate/cairo-boilerplate-xcb.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-xcb.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-xcb.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-xcb.c diff --git a/cairo/boilerplate/cairo-boilerplate-xlib.c b/3rd-party/cairo/boilerplate/cairo-boilerplate-xlib.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-xlib.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-xlib.c diff --git a/cairo/boilerplate/cairo-boilerplate-xlib.h b/3rd-party/cairo/boilerplate/cairo-boilerplate-xlib.h similarity index 100% rename from cairo/boilerplate/cairo-boilerplate-xlib.h rename to 3rd-party/cairo/boilerplate/cairo-boilerplate-xlib.h diff --git a/cairo/boilerplate/cairo-boilerplate.c b/3rd-party/cairo/boilerplate/cairo-boilerplate.c similarity index 100% rename from cairo/boilerplate/cairo-boilerplate.c rename to 3rd-party/cairo/boilerplate/cairo-boilerplate.c diff --git a/cairo/boilerplate/cairo-boilerplate.h b/3rd-party/cairo/boilerplate/cairo-boilerplate.h similarity index 100% rename from cairo/boilerplate/cairo-boilerplate.h rename to 3rd-party/cairo/boilerplate/cairo-boilerplate.h diff --git a/cairo/boilerplate/check-link.c b/3rd-party/cairo/boilerplate/check-link.c similarity index 100% rename from cairo/boilerplate/check-link.c rename to 3rd-party/cairo/boilerplate/check-link.c diff --git a/cairo/boilerplate/make-cairo-boilerplate-constructors.sh b/3rd-party/cairo/boilerplate/make-cairo-boilerplate-constructors.sh similarity index 100% rename from cairo/boilerplate/make-cairo-boilerplate-constructors.sh rename to 3rd-party/cairo/boilerplate/make-cairo-boilerplate-constructors.sh diff --git a/cairo/build/.gitignore b/3rd-party/cairo/build/.gitignore similarity index 100% rename from cairo/build/.gitignore rename to 3rd-party/cairo/build/.gitignore diff --git a/cairo/build/Makefile.am.analysis b/3rd-party/cairo/build/Makefile.am.analysis similarity index 100% rename from cairo/build/Makefile.am.analysis rename to 3rd-party/cairo/build/Makefile.am.analysis diff --git a/cairo/build/Makefile.am.changelog b/3rd-party/cairo/build/Makefile.am.changelog similarity index 100% rename from cairo/build/Makefile.am.changelog rename to 3rd-party/cairo/build/Makefile.am.changelog diff --git a/cairo/build/Makefile.am.common b/3rd-party/cairo/build/Makefile.am.common similarity index 100% rename from cairo/build/Makefile.am.common rename to 3rd-party/cairo/build/Makefile.am.common diff --git a/cairo/build/Makefile.am.gtk-doc b/3rd-party/cairo/build/Makefile.am.gtk-doc similarity index 100% rename from cairo/build/Makefile.am.gtk-doc rename to 3rd-party/cairo/build/Makefile.am.gtk-doc diff --git a/cairo/build/Makefile.am.releasing b/3rd-party/cairo/build/Makefile.am.releasing similarity index 100% rename from cairo/build/Makefile.am.releasing rename to 3rd-party/cairo/build/Makefile.am.releasing diff --git a/cairo/build/Makefile.win32.common b/3rd-party/cairo/build/Makefile.win32.common similarity index 100% rename from cairo/build/Makefile.win32.common rename to 3rd-party/cairo/build/Makefile.win32.common diff --git a/cairo/build/Makefile.win32.features b/3rd-party/cairo/build/Makefile.win32.features similarity index 100% rename from cairo/build/Makefile.win32.features rename to 3rd-party/cairo/build/Makefile.win32.features diff --git a/cairo/build/Makefile.win32.features-h b/3rd-party/cairo/build/Makefile.win32.features-h similarity index 100% rename from cairo/build/Makefile.win32.features-h rename to 3rd-party/cairo/build/Makefile.win32.features-h diff --git a/cairo/build/Makefile.win32.inform b/3rd-party/cairo/build/Makefile.win32.inform similarity index 100% rename from cairo/build/Makefile.win32.inform rename to 3rd-party/cairo/build/Makefile.win32.inform diff --git a/cairo/build/aclocal.cairo.m4 b/3rd-party/cairo/build/aclocal.cairo.m4 similarity index 100% rename from cairo/build/aclocal.cairo.m4 rename to 3rd-party/cairo/build/aclocal.cairo.m4 diff --git a/cairo/build/aclocal.compare.m4 b/3rd-party/cairo/build/aclocal.compare.m4 similarity index 100% rename from cairo/build/aclocal.compare.m4 rename to 3rd-party/cairo/build/aclocal.compare.m4 diff --git a/cairo/build/aclocal.enable.m4 b/3rd-party/cairo/build/aclocal.enable.m4 similarity index 100% rename from cairo/build/aclocal.enable.m4 rename to 3rd-party/cairo/build/aclocal.enable.m4 diff --git a/cairo/build/aclocal.float.m4 b/3rd-party/cairo/build/aclocal.float.m4 similarity index 100% rename from cairo/build/aclocal.float.m4 rename to 3rd-party/cairo/build/aclocal.float.m4 diff --git a/cairo/build/aclocal.gtk-doc.m4 b/3rd-party/cairo/build/aclocal.gtk-doc.m4 similarity index 100% rename from cairo/build/aclocal.gtk-doc.m4 rename to 3rd-party/cairo/build/aclocal.gtk-doc.m4 diff --git a/cairo/build/aclocal.makefile.m4 b/3rd-party/cairo/build/aclocal.makefile.m4 similarity index 100% rename from cairo/build/aclocal.makefile.m4 rename to 3rd-party/cairo/build/aclocal.makefile.m4 diff --git a/cairo/build/aclocal.pkg.m4 b/3rd-party/cairo/build/aclocal.pkg.m4 similarity index 100% rename from cairo/build/aclocal.pkg.m4 rename to 3rd-party/cairo/build/aclocal.pkg.m4 diff --git a/cairo/build/configure.ac.analysis b/3rd-party/cairo/build/configure.ac.analysis similarity index 100% rename from cairo/build/configure.ac.analysis rename to 3rd-party/cairo/build/configure.ac.analysis diff --git a/cairo/build/configure.ac.features b/3rd-party/cairo/build/configure.ac.features similarity index 100% rename from cairo/build/configure.ac.features rename to 3rd-party/cairo/build/configure.ac.features diff --git a/cairo/build/configure.ac.noversion b/3rd-party/cairo/build/configure.ac.noversion similarity index 100% rename from cairo/build/configure.ac.noversion rename to 3rd-party/cairo/build/configure.ac.noversion diff --git a/cairo/build/configure.ac.pthread b/3rd-party/cairo/build/configure.ac.pthread similarity index 100% rename from cairo/build/configure.ac.pthread rename to 3rd-party/cairo/build/configure.ac.pthread diff --git a/cairo/build/configure.ac.system b/3rd-party/cairo/build/configure.ac.system similarity index 100% rename from cairo/build/configure.ac.system rename to 3rd-party/cairo/build/configure.ac.system diff --git a/cairo/build/configure.ac.tools b/3rd-party/cairo/build/configure.ac.tools similarity index 100% rename from cairo/build/configure.ac.tools rename to 3rd-party/cairo/build/configure.ac.tools diff --git a/cairo/build/configure.ac.version b/3rd-party/cairo/build/configure.ac.version similarity index 100% rename from cairo/build/configure.ac.version rename to 3rd-party/cairo/build/configure.ac.version diff --git a/cairo/build/configure.ac.warnings b/3rd-party/cairo/build/configure.ac.warnings similarity index 100% rename from cairo/build/configure.ac.warnings rename to 3rd-party/cairo/build/configure.ac.warnings diff --git a/N3888_RefImpl/src/win32/include/cairo-version.h b/3rd-party/cairo/cairo-version.h similarity index 100% rename from N3888_RefImpl/src/win32/include/cairo-version.h rename to 3rd-party/cairo/cairo-version.h diff --git a/cairo/configure.ac b/3rd-party/cairo/configure.ac similarity index 100% rename from cairo/configure.ac rename to 3rd-party/cairo/configure.ac diff --git a/cairo/doc/.gitignore b/3rd-party/cairo/doc/.gitignore similarity index 100% rename from cairo/doc/.gitignore rename to 3rd-party/cairo/doc/.gitignore diff --git a/cairo/doc/Makefile.am b/3rd-party/cairo/doc/Makefile.am similarity index 100% rename from cairo/doc/Makefile.am rename to 3rd-party/cairo/doc/Makefile.am diff --git a/cairo/doc/public/.gitignore b/3rd-party/cairo/doc/public/.gitignore similarity index 100% rename from cairo/doc/public/.gitignore rename to 3rd-party/cairo/doc/public/.gitignore diff --git a/cairo/doc/public/Makefile.am b/3rd-party/cairo/doc/public/Makefile.am similarity index 100% rename from cairo/doc/public/Makefile.am rename to 3rd-party/cairo/doc/public/Makefile.am diff --git a/cairo/doc/public/README b/3rd-party/cairo/doc/public/README similarity index 100% rename from cairo/doc/public/README rename to 3rd-party/cairo/doc/public/README diff --git a/cairo/doc/public/cairo-docs.xml b/3rd-party/cairo/doc/public/cairo-docs.xml similarity index 100% rename from cairo/doc/public/cairo-docs.xml rename to 3rd-party/cairo/doc/public/cairo-docs.xml diff --git a/cairo/doc/public/cairo-overrides.txt b/3rd-party/cairo/doc/public/cairo-overrides.txt similarity index 100% rename from cairo/doc/public/cairo-overrides.txt rename to 3rd-party/cairo/doc/public/cairo-overrides.txt diff --git a/cairo/doc/public/cairo-sections.txt b/3rd-party/cairo/doc/public/cairo-sections.txt similarity index 100% rename from cairo/doc/public/cairo-sections.txt rename to 3rd-party/cairo/doc/public/cairo-sections.txt diff --git a/cairo/doc/public/cairo.types b/3rd-party/cairo/doc/public/cairo.types similarity index 100% rename from cairo/doc/public/cairo.types rename to 3rd-party/cairo/doc/public/cairo.types diff --git a/cairo/doc/public/check-doc-coverage.sh b/3rd-party/cairo/doc/public/check-doc-coverage.sh similarity index 100% rename from cairo/doc/public/check-doc-coverage.sh rename to 3rd-party/cairo/doc/public/check-doc-coverage.sh diff --git a/cairo/doc/public/check-doc-syntax.sh b/3rd-party/cairo/doc/public/check-doc-syntax.sh similarity index 100% rename from cairo/doc/public/check-doc-syntax.sh rename to 3rd-party/cairo/doc/public/check-doc-syntax.sh diff --git a/cairo/doc/public/language-bindings.xml b/3rd-party/cairo/doc/public/language-bindings.xml similarity index 100% rename from cairo/doc/public/language-bindings.xml rename to 3rd-party/cairo/doc/public/language-bindings.xml diff --git a/cairo/doc/tutorial/slides/.gitignore b/3rd-party/cairo/doc/tutorial/slides/.gitignore similarity index 100% rename from cairo/doc/tutorial/slides/.gitignore rename to 3rd-party/cairo/doc/tutorial/slides/.gitignore diff --git a/cairo/doc/tutorial/slides/Makefile b/3rd-party/cairo/doc/tutorial/slides/Makefile similarity index 100% rename from cairo/doc/tutorial/slides/Makefile rename to 3rd-party/cairo/doc/tutorial/slides/Makefile diff --git a/cairo/doc/tutorial/slides/cairo-blank.svg b/3rd-party/cairo/doc/tutorial/slides/cairo-blank.svg similarity index 100% rename from cairo/doc/tutorial/slides/cairo-blank.svg rename to 3rd-party/cairo/doc/tutorial/slides/cairo-blank.svg diff --git a/cairo/doc/tutorial/slides/cairo-code.svg b/3rd-party/cairo/doc/tutorial/slides/cairo-code.svg similarity index 100% rename from cairo/doc/tutorial/slides/cairo-code.svg rename to 3rd-party/cairo/doc/tutorial/slides/cairo-code.svg diff --git a/cairo/doc/tutorial/slides/cairo-large-content.svg b/3rd-party/cairo/doc/tutorial/slides/cairo-large-content.svg similarity index 100% rename from cairo/doc/tutorial/slides/cairo-large-content.svg rename to 3rd-party/cairo/doc/tutorial/slides/cairo-large-content.svg diff --git a/cairo/doc/tutorial/slides/cairo-separator.svg b/3rd-party/cairo/doc/tutorial/slides/cairo-separator.svg similarity index 100% rename from cairo/doc/tutorial/slides/cairo-separator.svg rename to 3rd-party/cairo/doc/tutorial/slides/cairo-separator.svg diff --git a/cairo/doc/tutorial/slides/cairo-title.svg b/3rd-party/cairo/doc/tutorial/slides/cairo-title.svg similarity index 100% rename from cairo/doc/tutorial/slides/cairo-title.svg rename to 3rd-party/cairo/doc/tutorial/slides/cairo-title.svg diff --git a/cairo/doc/tutorial/slides/cairo.svg b/3rd-party/cairo/doc/tutorial/slides/cairo.svg similarity index 100% rename from cairo/doc/tutorial/slides/cairo.svg rename to 3rd-party/cairo/doc/tutorial/slides/cairo.svg diff --git a/cairo/doc/tutorial/slides/circle-cairo-large.png b/3rd-party/cairo/doc/tutorial/slides/circle-cairo-large.png similarity index 100% rename from cairo/doc/tutorial/slides/circle-cairo-large.png rename to 3rd-party/cairo/doc/tutorial/slides/circle-cairo-large.png diff --git a/cairo/doc/tutorial/slides/circle-cairo.png b/3rd-party/cairo/doc/tutorial/slides/circle-cairo.png similarity index 100% rename from cairo/doc/tutorial/slides/circle-cairo.png rename to 3rd-party/cairo/doc/tutorial/slides/circle-cairo.png diff --git a/cairo/doc/tutorial/slides/circle-ooo-large.png b/3rd-party/cairo/doc/tutorial/slides/circle-ooo-large.png similarity index 100% rename from cairo/doc/tutorial/slides/circle-ooo-large.png rename to 3rd-party/cairo/doc/tutorial/slides/circle-ooo-large.png diff --git a/cairo/doc/tutorial/slides/circle-ooo.png b/3rd-party/cairo/doc/tutorial/slides/circle-ooo.png similarity index 100% rename from cairo/doc/tutorial/slides/circle-ooo.png rename to 3rd-party/cairo/doc/tutorial/slides/circle-ooo.png diff --git a/cairo/doc/tutorial/slides/expander-fuzzy-large.png b/3rd-party/cairo/doc/tutorial/slides/expander-fuzzy-large.png similarity index 100% rename from cairo/doc/tutorial/slides/expander-fuzzy-large.png rename to 3rd-party/cairo/doc/tutorial/slides/expander-fuzzy-large.png diff --git a/cairo/doc/tutorial/slides/expander-fuzzy.png b/3rd-party/cairo/doc/tutorial/slides/expander-fuzzy.png similarity index 100% rename from cairo/doc/tutorial/slides/expander-fuzzy.png rename to 3rd-party/cairo/doc/tutorial/slides/expander-fuzzy.png diff --git a/cairo/doc/tutorial/slides/expander-sharp-large.png b/3rd-party/cairo/doc/tutorial/slides/expander-sharp-large.png similarity index 100% rename from cairo/doc/tutorial/slides/expander-sharp-large.png rename to 3rd-party/cairo/doc/tutorial/slides/expander-sharp-large.png diff --git a/cairo/doc/tutorial/slides/expander-sharp.png b/3rd-party/cairo/doc/tutorial/slides/expander-sharp.png similarity index 100% rename from cairo/doc/tutorial/slides/expander-sharp.png rename to 3rd-party/cairo/doc/tutorial/slides/expander-sharp.png diff --git a/cairo/doc/tutorial/slides/fuzzies.svg b/3rd-party/cairo/doc/tutorial/slides/fuzzies.svg similarity index 100% rename from cairo/doc/tutorial/slides/fuzzies.svg rename to 3rd-party/cairo/doc/tutorial/slides/fuzzies.svg diff --git a/cairo/doc/tutorial/slides/jaggies.svg b/3rd-party/cairo/doc/tutorial/slides/jaggies.svg similarity index 100% rename from cairo/doc/tutorial/slides/jaggies.svg rename to 3rd-party/cairo/doc/tutorial/slides/jaggies.svg diff --git a/cairo/doc/tutorial/slides/rendering-model.png b/3rd-party/cairo/doc/tutorial/slides/rendering-model.png similarity index 100% rename from cairo/doc/tutorial/slides/rendering-model.png rename to 3rd-party/cairo/doc/tutorial/slides/rendering-model.png diff --git a/cairo/doc/tutorial/slides/tutorial.xml b/3rd-party/cairo/doc/tutorial/slides/tutorial.xml similarity index 100% rename from cairo/doc/tutorial/slides/tutorial.xml rename to 3rd-party/cairo/doc/tutorial/slides/tutorial.xml diff --git a/cairo/doc/tutorial/src/.gitignore b/3rd-party/cairo/doc/tutorial/src/.gitignore similarity index 100% rename from cairo/doc/tutorial/src/.gitignore rename to 3rd-party/cairo/doc/tutorial/src/.gitignore diff --git a/cairo/doc/tutorial/src/Makefile b/3rd-party/cairo/doc/tutorial/src/Makefile similarity index 100% rename from cairo/doc/tutorial/src/Makefile rename to 3rd-party/cairo/doc/tutorial/src/Makefile diff --git a/cairo/doc/tutorial/src/README b/3rd-party/cairo/doc/tutorial/src/README similarity index 100% rename from cairo/doc/tutorial/src/README rename to 3rd-party/cairo/doc/tutorial/src/README diff --git a/cairo/doc/tutorial/src/circle.c b/3rd-party/cairo/doc/tutorial/src/circle.c similarity index 100% rename from cairo/doc/tutorial/src/circle.c rename to 3rd-party/cairo/doc/tutorial/src/circle.c diff --git a/cairo/doc/tutorial/src/include/cairo-tutorial-gtk.h b/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-gtk.h similarity index 100% rename from cairo/doc/tutorial/src/include/cairo-tutorial-gtk.h rename to 3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-gtk.h diff --git a/cairo/doc/tutorial/src/include/cairo-tutorial-pdf.h b/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-pdf.h similarity index 100% rename from cairo/doc/tutorial/src/include/cairo-tutorial-pdf.h rename to 3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-pdf.h diff --git a/cairo/doc/tutorial/src/include/cairo-tutorial-png.h b/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-png.h similarity index 100% rename from cairo/doc/tutorial/src/include/cairo-tutorial-png.h rename to 3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-png.h diff --git a/cairo/doc/tutorial/src/include/cairo-tutorial-xlib.h b/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-xlib.h similarity index 100% rename from cairo/doc/tutorial/src/include/cairo-tutorial-xlib.h rename to 3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-xlib.h diff --git a/cairo/doc/tutorial/src/include/cairo-tutorial.h b/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial.h similarity index 100% rename from cairo/doc/tutorial/src/include/cairo-tutorial.h rename to 3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial.h diff --git a/cairo/doc/tutorial/src/lca.c b/3rd-party/cairo/doc/tutorial/src/lca.c similarity index 100% rename from cairo/doc/tutorial/src/lca.c rename to 3rd-party/cairo/doc/tutorial/src/lca.c diff --git a/cairo/doc/tutorial/src/singular.c b/3rd-party/cairo/doc/tutorial/src/singular.c similarity index 100% rename from cairo/doc/tutorial/src/singular.c rename to 3rd-party/cairo/doc/tutorial/src/singular.c diff --git a/cairo/doc/tutorial/src/twin.c b/3rd-party/cairo/doc/tutorial/src/twin.c similarity index 100% rename from cairo/doc/tutorial/src/twin.c rename to 3rd-party/cairo/doc/tutorial/src/twin.c diff --git a/cairo/perf/.gitignore b/3rd-party/cairo/perf/.gitignore similarity index 100% rename from cairo/perf/.gitignore rename to 3rd-party/cairo/perf/.gitignore diff --git a/cairo/perf/COPYING b/3rd-party/cairo/perf/COPYING similarity index 100% rename from cairo/perf/COPYING rename to 3rd-party/cairo/perf/COPYING diff --git a/cairo/perf/Makefile.am b/3rd-party/cairo/perf/Makefile.am similarity index 100% rename from cairo/perf/Makefile.am rename to 3rd-party/cairo/perf/Makefile.am diff --git a/cairo/perf/Makefile.sources b/3rd-party/cairo/perf/Makefile.sources similarity index 100% rename from cairo/perf/Makefile.sources rename to 3rd-party/cairo/perf/Makefile.sources diff --git a/cairo/perf/Makefile.win32 b/3rd-party/cairo/perf/Makefile.win32 similarity index 100% rename from cairo/perf/Makefile.win32 rename to 3rd-party/cairo/perf/Makefile.win32 diff --git a/cairo/perf/README b/3rd-party/cairo/perf/README similarity index 100% rename from cairo/perf/README rename to 3rd-party/cairo/perf/README diff --git a/cairo/perf/cairo-analyse-trace.c b/3rd-party/cairo/perf/cairo-analyse-trace.c similarity index 100% rename from cairo/perf/cairo-analyse-trace.c rename to 3rd-party/cairo/perf/cairo-analyse-trace.c diff --git a/cairo/perf/cairo-perf-chart.c b/3rd-party/cairo/perf/cairo-perf-chart.c similarity index 100% rename from cairo/perf/cairo-perf-chart.c rename to 3rd-party/cairo/perf/cairo-perf-chart.c diff --git a/cairo/perf/cairo-perf-compare-backends.c b/3rd-party/cairo/perf/cairo-perf-compare-backends.c similarity index 100% rename from cairo/perf/cairo-perf-compare-backends.c rename to 3rd-party/cairo/perf/cairo-perf-compare-backends.c diff --git a/cairo/perf/cairo-perf-diff b/3rd-party/cairo/perf/cairo-perf-diff similarity index 100% rename from cairo/perf/cairo-perf-diff rename to 3rd-party/cairo/perf/cairo-perf-diff diff --git a/cairo/perf/cairo-perf-diff-files.c b/3rd-party/cairo/perf/cairo-perf-diff-files.c similarity index 100% rename from cairo/perf/cairo-perf-diff-files.c rename to 3rd-party/cairo/perf/cairo-perf-diff-files.c diff --git a/cairo/perf/cairo-perf-graph b/3rd-party/cairo/perf/cairo-perf-graph similarity index 100% rename from cairo/perf/cairo-perf-graph rename to 3rd-party/cairo/perf/cairo-perf-graph diff --git a/cairo/perf/cairo-perf-graph-files.c b/3rd-party/cairo/perf/cairo-perf-graph-files.c similarity index 100% rename from cairo/perf/cairo-perf-graph-files.c rename to 3rd-party/cairo/perf/cairo-perf-graph-files.c diff --git a/cairo/perf/cairo-perf-graph-widget.c b/3rd-party/cairo/perf/cairo-perf-graph-widget.c similarity index 100% rename from cairo/perf/cairo-perf-graph-widget.c rename to 3rd-party/cairo/perf/cairo-perf-graph-widget.c diff --git a/cairo/perf/cairo-perf-graph.h b/3rd-party/cairo/perf/cairo-perf-graph.h similarity index 100% rename from cairo/perf/cairo-perf-graph.h rename to 3rd-party/cairo/perf/cairo-perf-graph.h diff --git a/cairo/perf/cairo-perf-micro.c b/3rd-party/cairo/perf/cairo-perf-micro.c similarity index 100% rename from cairo/perf/cairo-perf-micro.c rename to 3rd-party/cairo/perf/cairo-perf-micro.c diff --git a/cairo/perf/cairo-perf-print.c b/3rd-party/cairo/perf/cairo-perf-print.c similarity index 100% rename from cairo/perf/cairo-perf-print.c rename to 3rd-party/cairo/perf/cairo-perf-print.c diff --git a/cairo/perf/cairo-perf-report.c b/3rd-party/cairo/perf/cairo-perf-report.c similarity index 100% rename from cairo/perf/cairo-perf-report.c rename to 3rd-party/cairo/perf/cairo-perf-report.c diff --git a/cairo/perf/cairo-perf-trace.c b/3rd-party/cairo/perf/cairo-perf-trace.c similarity index 100% rename from cairo/perf/cairo-perf-trace.c rename to 3rd-party/cairo/perf/cairo-perf-trace.c diff --git a/cairo/perf/cairo-perf.c b/3rd-party/cairo/perf/cairo-perf.c similarity index 100% rename from cairo/perf/cairo-perf.c rename to 3rd-party/cairo/perf/cairo-perf.c diff --git a/cairo/perf/cairo-perf.h b/3rd-party/cairo/perf/cairo-perf.h similarity index 100% rename from cairo/perf/cairo-perf.h rename to 3rd-party/cairo/perf/cairo-perf.h diff --git a/cairo/perf/cairo-stats.c b/3rd-party/cairo/perf/cairo-stats.c similarity index 100% rename from cairo/perf/cairo-stats.c rename to 3rd-party/cairo/perf/cairo-stats.c diff --git a/cairo/perf/cairo-stats.h b/3rd-party/cairo/perf/cairo-stats.h similarity index 100% rename from cairo/perf/cairo-stats.h rename to 3rd-party/cairo/perf/cairo-stats.h diff --git a/cairo/perf/dirent-win32.h b/3rd-party/cairo/perf/dirent-win32.h similarity index 100% rename from cairo/perf/dirent-win32.h rename to 3rd-party/cairo/perf/dirent-win32.h diff --git a/cairo/perf/make-html.py b/3rd-party/cairo/perf/make-html.py similarity index 100% rename from cairo/perf/make-html.py rename to 3rd-party/cairo/perf/make-html.py diff --git a/cairo/perf/micro/Makefile.am b/3rd-party/cairo/perf/micro/Makefile.am similarity index 100% rename from cairo/perf/micro/Makefile.am rename to 3rd-party/cairo/perf/micro/Makefile.am diff --git a/cairo/perf/micro/Makefile.sources b/3rd-party/cairo/perf/micro/Makefile.sources similarity index 100% rename from cairo/perf/micro/Makefile.sources rename to 3rd-party/cairo/perf/micro/Makefile.sources diff --git a/cairo/perf/micro/Makefile.win32 b/3rd-party/cairo/perf/micro/Makefile.win32 similarity index 100% rename from cairo/perf/micro/Makefile.win32 rename to 3rd-party/cairo/perf/micro/Makefile.win32 diff --git a/cairo/perf/micro/a1-curve.c b/3rd-party/cairo/perf/micro/a1-curve.c similarity index 100% rename from cairo/perf/micro/a1-curve.c rename to 3rd-party/cairo/perf/micro/a1-curve.c diff --git a/cairo/perf/micro/a1-line.c b/3rd-party/cairo/perf/micro/a1-line.c similarity index 100% rename from cairo/perf/micro/a1-line.c rename to 3rd-party/cairo/perf/micro/a1-line.c diff --git a/cairo/perf/micro/box-outline.c b/3rd-party/cairo/perf/micro/box-outline.c similarity index 100% rename from cairo/perf/micro/box-outline.c rename to 3rd-party/cairo/perf/micro/box-outline.c diff --git a/cairo/perf/micro/cairo-perf-cover.c b/3rd-party/cairo/perf/micro/cairo-perf-cover.c similarity index 100% rename from cairo/perf/micro/cairo-perf-cover.c rename to 3rd-party/cairo/perf/micro/cairo-perf-cover.c diff --git a/cairo/perf/micro/composite-checker.c b/3rd-party/cairo/perf/micro/composite-checker.c similarity index 100% rename from cairo/perf/micro/composite-checker.c rename to 3rd-party/cairo/perf/micro/composite-checker.c diff --git a/cairo/perf/micro/curve.c b/3rd-party/cairo/perf/micro/curve.c similarity index 100% rename from cairo/perf/micro/curve.c rename to 3rd-party/cairo/perf/micro/curve.c diff --git a/cairo/perf/micro/disjoint.c b/3rd-party/cairo/perf/micro/disjoint.c similarity index 100% rename from cairo/perf/micro/disjoint.c rename to 3rd-party/cairo/perf/micro/disjoint.c diff --git a/cairo/perf/micro/dragon.c b/3rd-party/cairo/perf/micro/dragon.c similarity index 100% rename from cairo/perf/micro/dragon.c rename to 3rd-party/cairo/perf/micro/dragon.c diff --git a/cairo/perf/micro/fill-clip.c b/3rd-party/cairo/perf/micro/fill-clip.c similarity index 100% rename from cairo/perf/micro/fill-clip.c rename to 3rd-party/cairo/perf/micro/fill-clip.c diff --git a/cairo/perf/micro/fill.c b/3rd-party/cairo/perf/micro/fill.c similarity index 100% rename from cairo/perf/micro/fill.c rename to 3rd-party/cairo/perf/micro/fill.c diff --git a/cairo/perf/micro/glyphs.c b/3rd-party/cairo/perf/micro/glyphs.c similarity index 100% rename from cairo/perf/micro/glyphs.c rename to 3rd-party/cairo/perf/micro/glyphs.c diff --git a/cairo/perf/micro/hash-table.c b/3rd-party/cairo/perf/micro/hash-table.c similarity index 100% rename from cairo/perf/micro/hash-table.c rename to 3rd-party/cairo/perf/micro/hash-table.c diff --git a/cairo/perf/micro/hatching.c b/3rd-party/cairo/perf/micro/hatching.c similarity index 100% rename from cairo/perf/micro/hatching.c rename to 3rd-party/cairo/perf/micro/hatching.c diff --git a/cairo/perf/micro/intersections.c b/3rd-party/cairo/perf/micro/intersections.c similarity index 100% rename from cairo/perf/micro/intersections.c rename to 3rd-party/cairo/perf/micro/intersections.c diff --git a/cairo/perf/micro/line.c b/3rd-party/cairo/perf/micro/line.c similarity index 100% rename from cairo/perf/micro/line.c rename to 3rd-party/cairo/perf/micro/line.c diff --git a/cairo/perf/micro/long-dashed-lines.c b/3rd-party/cairo/perf/micro/long-dashed-lines.c similarity index 100% rename from cairo/perf/micro/long-dashed-lines.c rename to 3rd-party/cairo/perf/micro/long-dashed-lines.c diff --git a/cairo/perf/micro/long-lines.c b/3rd-party/cairo/perf/micro/long-lines.c similarity index 100% rename from cairo/perf/micro/long-lines.c rename to 3rd-party/cairo/perf/micro/long-lines.c diff --git a/cairo/perf/micro/many-curves.c b/3rd-party/cairo/perf/micro/many-curves.c similarity index 100% rename from cairo/perf/micro/many-curves.c rename to 3rd-party/cairo/perf/micro/many-curves.c diff --git a/cairo/perf/micro/many-fills.c b/3rd-party/cairo/perf/micro/many-fills.c similarity index 100% rename from cairo/perf/micro/many-fills.c rename to 3rd-party/cairo/perf/micro/many-fills.c diff --git a/cairo/perf/micro/many-strokes.c b/3rd-party/cairo/perf/micro/many-strokes.c similarity index 100% rename from cairo/perf/micro/many-strokes.c rename to 3rd-party/cairo/perf/micro/many-strokes.c diff --git a/cairo/perf/micro/mask.c b/3rd-party/cairo/perf/micro/mask.c similarity index 100% rename from cairo/perf/micro/mask.c rename to 3rd-party/cairo/perf/micro/mask.c diff --git a/cairo/perf/micro/mosaic.c b/3rd-party/cairo/perf/micro/mosaic.c similarity index 100% rename from cairo/perf/micro/mosaic.c rename to 3rd-party/cairo/perf/micro/mosaic.c diff --git a/cairo/perf/micro/mosaic.h b/3rd-party/cairo/perf/micro/mosaic.h similarity index 100% rename from cairo/perf/micro/mosaic.h rename to 3rd-party/cairo/perf/micro/mosaic.h diff --git a/cairo/perf/micro/paint-with-alpha.c b/3rd-party/cairo/perf/micro/paint-with-alpha.c similarity index 100% rename from cairo/perf/micro/paint-with-alpha.c rename to 3rd-party/cairo/perf/micro/paint-with-alpha.c diff --git a/cairo/perf/micro/paint.c b/3rd-party/cairo/perf/micro/paint.c similarity index 100% rename from cairo/perf/micro/paint.c rename to 3rd-party/cairo/perf/micro/paint.c diff --git a/cairo/perf/micro/pattern_create_radial.c b/3rd-party/cairo/perf/micro/pattern_create_radial.c similarity index 100% rename from cairo/perf/micro/pattern_create_radial.c rename to 3rd-party/cairo/perf/micro/pattern_create_radial.c diff --git a/cairo/perf/micro/pixel.c b/3rd-party/cairo/perf/micro/pixel.c similarity index 100% rename from cairo/perf/micro/pixel.c rename to 3rd-party/cairo/perf/micro/pixel.c diff --git a/cairo/perf/micro/pythagoras-tree.c b/3rd-party/cairo/perf/micro/pythagoras-tree.c similarity index 100% rename from cairo/perf/micro/pythagoras-tree.c rename to 3rd-party/cairo/perf/micro/pythagoras-tree.c diff --git a/cairo/perf/micro/rectangles.c b/3rd-party/cairo/perf/micro/rectangles.c similarity index 100% rename from cairo/perf/micro/rectangles.c rename to 3rd-party/cairo/perf/micro/rectangles.c diff --git a/cairo/perf/micro/rounded-rectangles.c b/3rd-party/cairo/perf/micro/rounded-rectangles.c similarity index 100% rename from cairo/perf/micro/rounded-rectangles.c rename to 3rd-party/cairo/perf/micro/rounded-rectangles.c diff --git a/cairo/perf/micro/sierpinski.c b/3rd-party/cairo/perf/micro/sierpinski.c similarity index 100% rename from cairo/perf/micro/sierpinski.c rename to 3rd-party/cairo/perf/micro/sierpinski.c diff --git a/cairo/perf/micro/spiral.c b/3rd-party/cairo/perf/micro/spiral.c similarity index 100% rename from cairo/perf/micro/spiral.c rename to 3rd-party/cairo/perf/micro/spiral.c diff --git a/cairo/perf/micro/stroke.c b/3rd-party/cairo/perf/micro/stroke.c similarity index 100% rename from cairo/perf/micro/stroke.c rename to 3rd-party/cairo/perf/micro/stroke.c diff --git a/cairo/perf/micro/subimage_copy.c b/3rd-party/cairo/perf/micro/subimage_copy.c similarity index 100% rename from cairo/perf/micro/subimage_copy.c rename to 3rd-party/cairo/perf/micro/subimage_copy.c diff --git a/cairo/perf/micro/tessellate.c b/3rd-party/cairo/perf/micro/tessellate.c similarity index 100% rename from cairo/perf/micro/tessellate.c rename to 3rd-party/cairo/perf/micro/tessellate.c diff --git a/cairo/perf/micro/text.c b/3rd-party/cairo/perf/micro/text.c similarity index 100% rename from cairo/perf/micro/text.c rename to 3rd-party/cairo/perf/micro/text.c diff --git a/cairo/perf/micro/tiger.c b/3rd-party/cairo/perf/micro/tiger.c similarity index 100% rename from cairo/perf/micro/tiger.c rename to 3rd-party/cairo/perf/micro/tiger.c diff --git a/cairo/perf/micro/twin.c b/3rd-party/cairo/perf/micro/twin.c similarity index 100% rename from cairo/perf/micro/twin.c rename to 3rd-party/cairo/perf/micro/twin.c diff --git a/cairo/perf/micro/unaligned-clip.c b/3rd-party/cairo/perf/micro/unaligned-clip.c similarity index 100% rename from cairo/perf/micro/unaligned-clip.c rename to 3rd-party/cairo/perf/micro/unaligned-clip.c diff --git a/cairo/perf/micro/wave.c b/3rd-party/cairo/perf/micro/wave.c similarity index 100% rename from cairo/perf/micro/wave.c rename to 3rd-party/cairo/perf/micro/wave.c diff --git a/cairo/perf/micro/wide-fills.c b/3rd-party/cairo/perf/micro/wide-fills.c similarity index 100% rename from cairo/perf/micro/wide-fills.c rename to 3rd-party/cairo/perf/micro/wide-fills.c diff --git a/cairo/perf/micro/wide-strokes.c b/3rd-party/cairo/perf/micro/wide-strokes.c similarity index 100% rename from cairo/perf/micro/wide-strokes.c rename to 3rd-party/cairo/perf/micro/wide-strokes.c diff --git a/cairo/perf/micro/world-map.c b/3rd-party/cairo/perf/micro/world-map.c similarity index 100% rename from cairo/perf/micro/world-map.c rename to 3rd-party/cairo/perf/micro/world-map.c diff --git a/cairo/perf/micro/world-map.h b/3rd-party/cairo/perf/micro/world-map.h similarity index 100% rename from cairo/perf/micro/world-map.h rename to 3rd-party/cairo/perf/micro/world-map.h diff --git a/cairo/perf/micro/zrusin-another.h b/3rd-party/cairo/perf/micro/zrusin-another.h similarity index 100% rename from cairo/perf/micro/zrusin-another.h rename to 3rd-party/cairo/perf/micro/zrusin-another.h diff --git a/cairo/perf/micro/zrusin.c b/3rd-party/cairo/perf/micro/zrusin.c similarity index 100% rename from cairo/perf/micro/zrusin.c rename to 3rd-party/cairo/perf/micro/zrusin.c diff --git a/cairo/src/.gitignore b/3rd-party/cairo/src/.gitignore similarity index 100% rename from cairo/src/.gitignore rename to 3rd-party/cairo/src/.gitignore diff --git a/cairo/src/Makefile.am b/3rd-party/cairo/src/Makefile.am similarity index 100% rename from cairo/src/Makefile.am rename to 3rd-party/cairo/src/Makefile.am diff --git a/cairo/src/Makefile.am.analysis b/3rd-party/cairo/src/Makefile.am.analysis similarity index 100% rename from cairo/src/Makefile.am.analysis rename to 3rd-party/cairo/src/Makefile.am.analysis diff --git a/cairo/src/Makefile.sources b/3rd-party/cairo/src/Makefile.sources similarity index 100% rename from cairo/src/Makefile.sources rename to 3rd-party/cairo/src/Makefile.sources diff --git a/cairo/src/Makefile.win32 b/3rd-party/cairo/src/Makefile.win32 similarity index 100% rename from cairo/src/Makefile.win32 rename to 3rd-party/cairo/src/Makefile.win32 diff --git a/cairo/src/Makefile.win32.features b/3rd-party/cairo/src/Makefile.win32.features similarity index 100% rename from cairo/src/Makefile.win32.features rename to 3rd-party/cairo/src/Makefile.win32.features diff --git a/cairo/src/README b/3rd-party/cairo/src/README similarity index 100% rename from cairo/src/README rename to 3rd-party/cairo/src/README diff --git a/cairo/src/cairo-analysis-surface-private.h b/3rd-party/cairo/src/cairo-analysis-surface-private.h similarity index 100% rename from cairo/src/cairo-analysis-surface-private.h rename to 3rd-party/cairo/src/cairo-analysis-surface-private.h diff --git a/cairo/src/cairo-analysis-surface.c b/3rd-party/cairo/src/cairo-analysis-surface.c similarity index 100% rename from cairo/src/cairo-analysis-surface.c rename to 3rd-party/cairo/src/cairo-analysis-surface.c diff --git a/cairo/src/cairo-arc-private.h b/3rd-party/cairo/src/cairo-arc-private.h similarity index 100% rename from cairo/src/cairo-arc-private.h rename to 3rd-party/cairo/src/cairo-arc-private.h diff --git a/cairo/src/cairo-arc.c b/3rd-party/cairo/src/cairo-arc.c similarity index 100% rename from cairo/src/cairo-arc.c rename to 3rd-party/cairo/src/cairo-arc.c diff --git a/cairo/src/cairo-array-private.h b/3rd-party/cairo/src/cairo-array-private.h similarity index 100% rename from cairo/src/cairo-array-private.h rename to 3rd-party/cairo/src/cairo-array-private.h diff --git a/cairo/src/cairo-array.c b/3rd-party/cairo/src/cairo-array.c similarity index 100% rename from cairo/src/cairo-array.c rename to 3rd-party/cairo/src/cairo-array.c diff --git a/cairo/src/cairo-atomic-private.h b/3rd-party/cairo/src/cairo-atomic-private.h similarity index 100% rename from cairo/src/cairo-atomic-private.h rename to 3rd-party/cairo/src/cairo-atomic-private.h diff --git a/cairo/src/cairo-atomic.c b/3rd-party/cairo/src/cairo-atomic.c similarity index 100% rename from cairo/src/cairo-atomic.c rename to 3rd-party/cairo/src/cairo-atomic.c diff --git a/cairo/src/cairo-backend-private.h b/3rd-party/cairo/src/cairo-backend-private.h similarity index 100% rename from cairo/src/cairo-backend-private.h rename to 3rd-party/cairo/src/cairo-backend-private.h diff --git a/cairo/src/cairo-base64-stream.c b/3rd-party/cairo/src/cairo-base64-stream.c similarity index 100% rename from cairo/src/cairo-base64-stream.c rename to 3rd-party/cairo/src/cairo-base64-stream.c diff --git a/cairo/src/cairo-base85-stream.c b/3rd-party/cairo/src/cairo-base85-stream.c similarity index 100% rename from cairo/src/cairo-base85-stream.c rename to 3rd-party/cairo/src/cairo-base85-stream.c diff --git a/cairo/src/cairo-bentley-ottmann-rectangular.c b/3rd-party/cairo/src/cairo-bentley-ottmann-rectangular.c similarity index 100% rename from cairo/src/cairo-bentley-ottmann-rectangular.c rename to 3rd-party/cairo/src/cairo-bentley-ottmann-rectangular.c diff --git a/cairo/src/cairo-bentley-ottmann-rectilinear.c b/3rd-party/cairo/src/cairo-bentley-ottmann-rectilinear.c similarity index 100% rename from cairo/src/cairo-bentley-ottmann-rectilinear.c rename to 3rd-party/cairo/src/cairo-bentley-ottmann-rectilinear.c diff --git a/cairo/src/cairo-bentley-ottmann.c b/3rd-party/cairo/src/cairo-bentley-ottmann.c similarity index 100% rename from cairo/src/cairo-bentley-ottmann.c rename to 3rd-party/cairo/src/cairo-bentley-ottmann.c diff --git a/cairo/src/cairo-beos-surface.cpp b/3rd-party/cairo/src/cairo-beos-surface.cpp similarity index 100% rename from cairo/src/cairo-beos-surface.cpp rename to 3rd-party/cairo/src/cairo-beos-surface.cpp diff --git a/cairo/src/cairo-beos.h b/3rd-party/cairo/src/cairo-beos.h similarity index 100% rename from cairo/src/cairo-beos.h rename to 3rd-party/cairo/src/cairo-beos.h diff --git a/cairo/src/cairo-botor-scan-converter.c b/3rd-party/cairo/src/cairo-botor-scan-converter.c similarity index 100% rename from cairo/src/cairo-botor-scan-converter.c rename to 3rd-party/cairo/src/cairo-botor-scan-converter.c diff --git a/cairo/src/cairo-box-inline.h b/3rd-party/cairo/src/cairo-box-inline.h similarity index 100% rename from cairo/src/cairo-box-inline.h rename to 3rd-party/cairo/src/cairo-box-inline.h diff --git a/cairo/src/cairo-boxes-intersect.c b/3rd-party/cairo/src/cairo-boxes-intersect.c similarity index 100% rename from cairo/src/cairo-boxes-intersect.c rename to 3rd-party/cairo/src/cairo-boxes-intersect.c diff --git a/cairo/src/cairo-boxes-private.h b/3rd-party/cairo/src/cairo-boxes-private.h similarity index 100% rename from cairo/src/cairo-boxes-private.h rename to 3rd-party/cairo/src/cairo-boxes-private.h diff --git a/cairo/src/cairo-boxes.c b/3rd-party/cairo/src/cairo-boxes.c similarity index 100% rename from cairo/src/cairo-boxes.c rename to 3rd-party/cairo/src/cairo-boxes.c diff --git a/cairo/src/cairo-cache-private.h b/3rd-party/cairo/src/cairo-cache-private.h similarity index 100% rename from cairo/src/cairo-cache-private.h rename to 3rd-party/cairo/src/cairo-cache-private.h diff --git a/cairo/src/cairo-cache.c b/3rd-party/cairo/src/cairo-cache.c similarity index 100% rename from cairo/src/cairo-cache.c rename to 3rd-party/cairo/src/cairo-cache.c diff --git a/cairo/src/cairo-cff-subset.c b/3rd-party/cairo/src/cairo-cff-subset.c similarity index 100% rename from cairo/src/cairo-cff-subset.c rename to 3rd-party/cairo/src/cairo-cff-subset.c diff --git a/cairo/src/cairo-clip-boxes.c b/3rd-party/cairo/src/cairo-clip-boxes.c similarity index 100% rename from cairo/src/cairo-clip-boxes.c rename to 3rd-party/cairo/src/cairo-clip-boxes.c diff --git a/cairo/src/cairo-clip-inline.h b/3rd-party/cairo/src/cairo-clip-inline.h similarity index 100% rename from cairo/src/cairo-clip-inline.h rename to 3rd-party/cairo/src/cairo-clip-inline.h diff --git a/cairo/src/cairo-clip-polygon.c b/3rd-party/cairo/src/cairo-clip-polygon.c similarity index 100% rename from cairo/src/cairo-clip-polygon.c rename to 3rd-party/cairo/src/cairo-clip-polygon.c diff --git a/cairo/src/cairo-clip-private.h b/3rd-party/cairo/src/cairo-clip-private.h similarity index 100% rename from cairo/src/cairo-clip-private.h rename to 3rd-party/cairo/src/cairo-clip-private.h diff --git a/cairo/src/cairo-clip-region.c b/3rd-party/cairo/src/cairo-clip-region.c similarity index 100% rename from cairo/src/cairo-clip-region.c rename to 3rd-party/cairo/src/cairo-clip-region.c diff --git a/cairo/src/cairo-clip-surface.c b/3rd-party/cairo/src/cairo-clip-surface.c similarity index 100% rename from cairo/src/cairo-clip-surface.c rename to 3rd-party/cairo/src/cairo-clip-surface.c diff --git a/cairo/src/cairo-clip-tor-scan-converter.c b/3rd-party/cairo/src/cairo-clip-tor-scan-converter.c similarity index 100% rename from cairo/src/cairo-clip-tor-scan-converter.c rename to 3rd-party/cairo/src/cairo-clip-tor-scan-converter.c diff --git a/cairo/src/cairo-clip.c b/3rd-party/cairo/src/cairo-clip.c similarity index 100% rename from cairo/src/cairo-clip.c rename to 3rd-party/cairo/src/cairo-clip.c diff --git a/cairo/src/cairo-cogl-context-private.h b/3rd-party/cairo/src/cairo-cogl-context-private.h similarity index 100% rename from cairo/src/cairo-cogl-context-private.h rename to 3rd-party/cairo/src/cairo-cogl-context-private.h diff --git a/cairo/src/cairo-cogl-context.c b/3rd-party/cairo/src/cairo-cogl-context.c similarity index 100% rename from cairo/src/cairo-cogl-context.c rename to 3rd-party/cairo/src/cairo-cogl-context.c diff --git a/cairo/src/cairo-cogl-gradient-private.h b/3rd-party/cairo/src/cairo-cogl-gradient-private.h similarity index 100% rename from cairo/src/cairo-cogl-gradient-private.h rename to 3rd-party/cairo/src/cairo-cogl-gradient-private.h diff --git a/cairo/src/cairo-cogl-gradient.c b/3rd-party/cairo/src/cairo-cogl-gradient.c similarity index 100% rename from cairo/src/cairo-cogl-gradient.c rename to 3rd-party/cairo/src/cairo-cogl-gradient.c diff --git a/cairo/src/cairo-cogl-private.h b/3rd-party/cairo/src/cairo-cogl-private.h similarity index 100% rename from cairo/src/cairo-cogl-private.h rename to 3rd-party/cairo/src/cairo-cogl-private.h diff --git a/cairo/src/cairo-cogl-surface.c b/3rd-party/cairo/src/cairo-cogl-surface.c similarity index 100% rename from cairo/src/cairo-cogl-surface.c rename to 3rd-party/cairo/src/cairo-cogl-surface.c diff --git a/cairo/src/cairo-cogl-utils-private.h b/3rd-party/cairo/src/cairo-cogl-utils-private.h similarity index 100% rename from cairo/src/cairo-cogl-utils-private.h rename to 3rd-party/cairo/src/cairo-cogl-utils-private.h diff --git a/cairo/src/cairo-cogl-utils.c b/3rd-party/cairo/src/cairo-cogl-utils.c similarity index 100% rename from cairo/src/cairo-cogl-utils.c rename to 3rd-party/cairo/src/cairo-cogl-utils.c diff --git a/cairo/src/cairo-cogl.h b/3rd-party/cairo/src/cairo-cogl.h similarity index 100% rename from cairo/src/cairo-cogl.h rename to 3rd-party/cairo/src/cairo-cogl.h diff --git a/cairo/src/cairo-color.c b/3rd-party/cairo/src/cairo-color.c similarity index 100% rename from cairo/src/cairo-color.c rename to 3rd-party/cairo/src/cairo-color.c diff --git a/cairo/src/cairo-combsort-inline.h b/3rd-party/cairo/src/cairo-combsort-inline.h similarity index 100% rename from cairo/src/cairo-combsort-inline.h rename to 3rd-party/cairo/src/cairo-combsort-inline.h diff --git a/cairo/src/cairo-compiler-private.h b/3rd-party/cairo/src/cairo-compiler-private.h similarity index 100% rename from cairo/src/cairo-compiler-private.h rename to 3rd-party/cairo/src/cairo-compiler-private.h diff --git a/cairo/src/cairo-composite-rectangles-private.h b/3rd-party/cairo/src/cairo-composite-rectangles-private.h similarity index 100% rename from cairo/src/cairo-composite-rectangles-private.h rename to 3rd-party/cairo/src/cairo-composite-rectangles-private.h diff --git a/cairo/src/cairo-composite-rectangles.c b/3rd-party/cairo/src/cairo-composite-rectangles.c similarity index 100% rename from cairo/src/cairo-composite-rectangles.c rename to 3rd-party/cairo/src/cairo-composite-rectangles.c diff --git a/cairo/src/cairo-compositor-private.h b/3rd-party/cairo/src/cairo-compositor-private.h similarity index 100% rename from cairo/src/cairo-compositor-private.h rename to 3rd-party/cairo/src/cairo-compositor-private.h diff --git a/cairo/src/cairo-compositor.c b/3rd-party/cairo/src/cairo-compositor.c similarity index 100% rename from cairo/src/cairo-compositor.c rename to 3rd-party/cairo/src/cairo-compositor.c diff --git a/cairo/src/cairo-contour-inline.h b/3rd-party/cairo/src/cairo-contour-inline.h similarity index 100% rename from cairo/src/cairo-contour-inline.h rename to 3rd-party/cairo/src/cairo-contour-inline.h diff --git a/cairo/src/cairo-contour-private.h b/3rd-party/cairo/src/cairo-contour-private.h similarity index 100% rename from cairo/src/cairo-contour-private.h rename to 3rd-party/cairo/src/cairo-contour-private.h diff --git a/cairo/src/cairo-contour.c b/3rd-party/cairo/src/cairo-contour.c similarity index 100% rename from cairo/src/cairo-contour.c rename to 3rd-party/cairo/src/cairo-contour.c diff --git a/cairo/src/cairo-damage-private.h b/3rd-party/cairo/src/cairo-damage-private.h similarity index 100% rename from cairo/src/cairo-damage-private.h rename to 3rd-party/cairo/src/cairo-damage-private.h diff --git a/cairo/src/cairo-damage.c b/3rd-party/cairo/src/cairo-damage.c similarity index 100% rename from cairo/src/cairo-damage.c rename to 3rd-party/cairo/src/cairo-damage.c diff --git a/cairo/src/cairo-debug.c b/3rd-party/cairo/src/cairo-debug.c similarity index 100% rename from cairo/src/cairo-debug.c rename to 3rd-party/cairo/src/cairo-debug.c diff --git a/cairo/src/cairo-default-context-private.h b/3rd-party/cairo/src/cairo-default-context-private.h similarity index 100% rename from cairo/src/cairo-default-context-private.h rename to 3rd-party/cairo/src/cairo-default-context-private.h diff --git a/cairo/src/cairo-default-context.c b/3rd-party/cairo/src/cairo-default-context.c similarity index 100% rename from cairo/src/cairo-default-context.c rename to 3rd-party/cairo/src/cairo-default-context.c diff --git a/cairo/src/cairo-deflate-stream.c b/3rd-party/cairo/src/cairo-deflate-stream.c similarity index 100% rename from cairo/src/cairo-deflate-stream.c rename to 3rd-party/cairo/src/cairo-deflate-stream.c diff --git a/N3888_RefImpl/src/win32/include/cairo-deprecated.h b/3rd-party/cairo/src/cairo-deprecated.h similarity index 100% rename from N3888_RefImpl/src/win32/include/cairo-deprecated.h rename to 3rd-party/cairo/src/cairo-deprecated.h diff --git a/cairo/src/cairo-device-private.h b/3rd-party/cairo/src/cairo-device-private.h similarity index 100% rename from cairo/src/cairo-device-private.h rename to 3rd-party/cairo/src/cairo-device-private.h diff --git a/cairo/src/cairo-device.c b/3rd-party/cairo/src/cairo-device.c similarity index 100% rename from cairo/src/cairo-device.c rename to 3rd-party/cairo/src/cairo-device.c diff --git a/cairo/src/cairo-directfb-surface.c b/3rd-party/cairo/src/cairo-directfb-surface.c similarity index 100% rename from cairo/src/cairo-directfb-surface.c rename to 3rd-party/cairo/src/cairo-directfb-surface.c diff --git a/cairo/src/cairo-directfb.h b/3rd-party/cairo/src/cairo-directfb.h similarity index 100% rename from cairo/src/cairo-directfb.h rename to 3rd-party/cairo/src/cairo-directfb.h diff --git a/cairo/src/cairo-drm.h b/3rd-party/cairo/src/cairo-drm.h similarity index 100% rename from cairo/src/cairo-drm.h rename to 3rd-party/cairo/src/cairo-drm.h diff --git a/cairo/src/cairo-egl-context.c b/3rd-party/cairo/src/cairo-egl-context.c similarity index 100% rename from cairo/src/cairo-egl-context.c rename to 3rd-party/cairo/src/cairo-egl-context.c diff --git a/cairo/src/cairo-error-inline.h b/3rd-party/cairo/src/cairo-error-inline.h similarity index 100% rename from cairo/src/cairo-error-inline.h rename to 3rd-party/cairo/src/cairo-error-inline.h diff --git a/cairo/src/cairo-error-private.h b/3rd-party/cairo/src/cairo-error-private.h similarity index 100% rename from cairo/src/cairo-error-private.h rename to 3rd-party/cairo/src/cairo-error-private.h diff --git a/cairo/src/cairo-error.c b/3rd-party/cairo/src/cairo-error.c similarity index 100% rename from cairo/src/cairo-error.c rename to 3rd-party/cairo/src/cairo-error.c diff --git a/cairo/src/cairo-fallback-compositor.c b/3rd-party/cairo/src/cairo-fallback-compositor.c similarity index 100% rename from cairo/src/cairo-fallback-compositor.c rename to 3rd-party/cairo/src/cairo-fallback-compositor.c diff --git a/cairo/src/cairo-features-uninstalled.pc.in b/3rd-party/cairo/src/cairo-features-uninstalled.pc.in similarity index 100% rename from cairo/src/cairo-features-uninstalled.pc.in rename to 3rd-party/cairo/src/cairo-features-uninstalled.pc.in diff --git a/N3888_RefImpl/src/win32/include/cairo-features.h b/3rd-party/cairo/src/cairo-features.h similarity index 100% rename from N3888_RefImpl/src/win32/include/cairo-features.h rename to 3rd-party/cairo/src/cairo-features.h diff --git a/cairo/src/cairo-features.pc.in b/3rd-party/cairo/src/cairo-features.pc.in similarity index 100% rename from cairo/src/cairo-features.pc.in rename to 3rd-party/cairo/src/cairo-features.pc.in diff --git a/cairo/src/cairo-fixed-private.h b/3rd-party/cairo/src/cairo-fixed-private.h similarity index 100% rename from cairo/src/cairo-fixed-private.h rename to 3rd-party/cairo/src/cairo-fixed-private.h diff --git a/cairo/src/cairo-fixed-type-private.h b/3rd-party/cairo/src/cairo-fixed-type-private.h similarity index 100% rename from cairo/src/cairo-fixed-type-private.h rename to 3rd-party/cairo/src/cairo-fixed-type-private.h diff --git a/cairo/src/cairo-fixed.c b/3rd-party/cairo/src/cairo-fixed.c similarity index 100% rename from cairo/src/cairo-fixed.c rename to 3rd-party/cairo/src/cairo-fixed.c diff --git a/cairo/src/cairo-font-face-twin-data.c b/3rd-party/cairo/src/cairo-font-face-twin-data.c similarity index 100% rename from cairo/src/cairo-font-face-twin-data.c rename to 3rd-party/cairo/src/cairo-font-face-twin-data.c diff --git a/cairo/src/cairo-font-face-twin.c b/3rd-party/cairo/src/cairo-font-face-twin.c similarity index 100% rename from cairo/src/cairo-font-face-twin.c rename to 3rd-party/cairo/src/cairo-font-face-twin.c diff --git a/cairo/src/cairo-font-face.c b/3rd-party/cairo/src/cairo-font-face.c similarity index 100% rename from cairo/src/cairo-font-face.c rename to 3rd-party/cairo/src/cairo-font-face.c diff --git a/cairo/src/cairo-font-options.c b/3rd-party/cairo/src/cairo-font-options.c similarity index 100% rename from cairo/src/cairo-font-options.c rename to 3rd-party/cairo/src/cairo-font-options.c diff --git a/cairo/src/cairo-fontconfig-private.h b/3rd-party/cairo/src/cairo-fontconfig-private.h similarity index 100% rename from cairo/src/cairo-fontconfig-private.h rename to 3rd-party/cairo/src/cairo-fontconfig-private.h diff --git a/cairo/src/cairo-freed-pool-private.h b/3rd-party/cairo/src/cairo-freed-pool-private.h similarity index 100% rename from cairo/src/cairo-freed-pool-private.h rename to 3rd-party/cairo/src/cairo-freed-pool-private.h diff --git a/cairo/src/cairo-freed-pool.c b/3rd-party/cairo/src/cairo-freed-pool.c similarity index 100% rename from cairo/src/cairo-freed-pool.c rename to 3rd-party/cairo/src/cairo-freed-pool.c diff --git a/cairo/src/cairo-freelist-private.h b/3rd-party/cairo/src/cairo-freelist-private.h similarity index 100% rename from cairo/src/cairo-freelist-private.h rename to 3rd-party/cairo/src/cairo-freelist-private.h diff --git a/cairo/src/cairo-freelist-type-private.h b/3rd-party/cairo/src/cairo-freelist-type-private.h similarity index 100% rename from cairo/src/cairo-freelist-type-private.h rename to 3rd-party/cairo/src/cairo-freelist-type-private.h diff --git a/cairo/src/cairo-freelist.c b/3rd-party/cairo/src/cairo-freelist.c similarity index 100% rename from cairo/src/cairo-freelist.c rename to 3rd-party/cairo/src/cairo-freelist.c diff --git a/cairo/src/cairo-ft-font.c b/3rd-party/cairo/src/cairo-ft-font.c similarity index 100% rename from cairo/src/cairo-ft-font.c rename to 3rd-party/cairo/src/cairo-ft-font.c diff --git a/cairo/src/cairo-ft-private.h b/3rd-party/cairo/src/cairo-ft-private.h similarity index 100% rename from cairo/src/cairo-ft-private.h rename to 3rd-party/cairo/src/cairo-ft-private.h diff --git a/cairo/src/cairo-ft.h b/3rd-party/cairo/src/cairo-ft.h similarity index 100% rename from cairo/src/cairo-ft.h rename to 3rd-party/cairo/src/cairo-ft.h diff --git a/cairo/src/cairo-gl-composite.c b/3rd-party/cairo/src/cairo-gl-composite.c similarity index 100% rename from cairo/src/cairo-gl-composite.c rename to 3rd-party/cairo/src/cairo-gl-composite.c diff --git a/cairo/src/cairo-gl-device.c b/3rd-party/cairo/src/cairo-gl-device.c similarity index 100% rename from cairo/src/cairo-gl-device.c rename to 3rd-party/cairo/src/cairo-gl-device.c diff --git a/cairo/src/cairo-gl-dispatch-private.h b/3rd-party/cairo/src/cairo-gl-dispatch-private.h similarity index 100% rename from cairo/src/cairo-gl-dispatch-private.h rename to 3rd-party/cairo/src/cairo-gl-dispatch-private.h diff --git a/cairo/src/cairo-gl-dispatch.c b/3rd-party/cairo/src/cairo-gl-dispatch.c similarity index 100% rename from cairo/src/cairo-gl-dispatch.c rename to 3rd-party/cairo/src/cairo-gl-dispatch.c diff --git a/cairo/src/cairo-gl-ext-def-private.h b/3rd-party/cairo/src/cairo-gl-ext-def-private.h similarity index 100% rename from cairo/src/cairo-gl-ext-def-private.h rename to 3rd-party/cairo/src/cairo-gl-ext-def-private.h diff --git a/cairo/src/cairo-gl-glyphs.c b/3rd-party/cairo/src/cairo-gl-glyphs.c similarity index 100% rename from cairo/src/cairo-gl-glyphs.c rename to 3rd-party/cairo/src/cairo-gl-glyphs.c diff --git a/cairo/src/cairo-gl-gradient-private.h b/3rd-party/cairo/src/cairo-gl-gradient-private.h similarity index 100% rename from cairo/src/cairo-gl-gradient-private.h rename to 3rd-party/cairo/src/cairo-gl-gradient-private.h diff --git a/cairo/src/cairo-gl-gradient.c b/3rd-party/cairo/src/cairo-gl-gradient.c similarity index 100% rename from cairo/src/cairo-gl-gradient.c rename to 3rd-party/cairo/src/cairo-gl-gradient.c diff --git a/cairo/src/cairo-gl-info.c b/3rd-party/cairo/src/cairo-gl-info.c similarity index 100% rename from cairo/src/cairo-gl-info.c rename to 3rd-party/cairo/src/cairo-gl-info.c diff --git a/cairo/src/cairo-gl-msaa-compositor.c b/3rd-party/cairo/src/cairo-gl-msaa-compositor.c similarity index 100% rename from cairo/src/cairo-gl-msaa-compositor.c rename to 3rd-party/cairo/src/cairo-gl-msaa-compositor.c diff --git a/cairo/src/cairo-gl-operand.c b/3rd-party/cairo/src/cairo-gl-operand.c similarity index 100% rename from cairo/src/cairo-gl-operand.c rename to 3rd-party/cairo/src/cairo-gl-operand.c diff --git a/cairo/src/cairo-gl-private.h b/3rd-party/cairo/src/cairo-gl-private.h similarity index 100% rename from cairo/src/cairo-gl-private.h rename to 3rd-party/cairo/src/cairo-gl-private.h diff --git a/cairo/src/cairo-gl-shaders.c b/3rd-party/cairo/src/cairo-gl-shaders.c similarity index 100% rename from cairo/src/cairo-gl-shaders.c rename to 3rd-party/cairo/src/cairo-gl-shaders.c diff --git a/cairo/src/cairo-gl-source.c b/3rd-party/cairo/src/cairo-gl-source.c similarity index 100% rename from cairo/src/cairo-gl-source.c rename to 3rd-party/cairo/src/cairo-gl-source.c diff --git a/cairo/src/cairo-gl-spans-compositor.c b/3rd-party/cairo/src/cairo-gl-spans-compositor.c similarity index 100% rename from cairo/src/cairo-gl-spans-compositor.c rename to 3rd-party/cairo/src/cairo-gl-spans-compositor.c diff --git a/cairo/src/cairo-gl-surface-legacy.c b/3rd-party/cairo/src/cairo-gl-surface-legacy.c similarity index 100% rename from cairo/src/cairo-gl-surface-legacy.c rename to 3rd-party/cairo/src/cairo-gl-surface-legacy.c diff --git a/cairo/src/cairo-gl-surface.c b/3rd-party/cairo/src/cairo-gl-surface.c similarity index 100% rename from cairo/src/cairo-gl-surface.c rename to 3rd-party/cairo/src/cairo-gl-surface.c diff --git a/cairo/src/cairo-gl-traps-compositor.c b/3rd-party/cairo/src/cairo-gl-traps-compositor.c similarity index 100% rename from cairo/src/cairo-gl-traps-compositor.c rename to 3rd-party/cairo/src/cairo-gl-traps-compositor.c diff --git a/cairo/src/cairo-gl.h b/3rd-party/cairo/src/cairo-gl.h similarity index 100% rename from cairo/src/cairo-gl.h rename to 3rd-party/cairo/src/cairo-gl.h diff --git a/cairo/src/cairo-glx-context.c b/3rd-party/cairo/src/cairo-glx-context.c similarity index 100% rename from cairo/src/cairo-glx-context.c rename to 3rd-party/cairo/src/cairo-glx-context.c diff --git a/cairo/src/cairo-gstate-private.h b/3rd-party/cairo/src/cairo-gstate-private.h similarity index 100% rename from cairo/src/cairo-gstate-private.h rename to 3rd-party/cairo/src/cairo-gstate-private.h diff --git a/cairo/src/cairo-gstate.c b/3rd-party/cairo/src/cairo-gstate.c similarity index 100% rename from cairo/src/cairo-gstate.c rename to 3rd-party/cairo/src/cairo-gstate.c diff --git a/cairo/src/cairo-hash-private.h b/3rd-party/cairo/src/cairo-hash-private.h similarity index 100% rename from cairo/src/cairo-hash-private.h rename to 3rd-party/cairo/src/cairo-hash-private.h diff --git a/cairo/src/cairo-hash.c b/3rd-party/cairo/src/cairo-hash.c similarity index 100% rename from cairo/src/cairo-hash.c rename to 3rd-party/cairo/src/cairo-hash.c diff --git a/cairo/src/cairo-hull.c b/3rd-party/cairo/src/cairo-hull.c similarity index 100% rename from cairo/src/cairo-hull.c rename to 3rd-party/cairo/src/cairo-hull.c diff --git a/cairo/src/cairo-image-compositor.c b/3rd-party/cairo/src/cairo-image-compositor.c similarity index 100% rename from cairo/src/cairo-image-compositor.c rename to 3rd-party/cairo/src/cairo-image-compositor.c diff --git a/cairo/src/cairo-image-info-private.h b/3rd-party/cairo/src/cairo-image-info-private.h similarity index 100% rename from cairo/src/cairo-image-info-private.h rename to 3rd-party/cairo/src/cairo-image-info-private.h diff --git a/cairo/src/cairo-image-info.c b/3rd-party/cairo/src/cairo-image-info.c similarity index 100% rename from cairo/src/cairo-image-info.c rename to 3rd-party/cairo/src/cairo-image-info.c diff --git a/cairo/src/cairo-image-mask-compositor.c b/3rd-party/cairo/src/cairo-image-mask-compositor.c similarity index 100% rename from cairo/src/cairo-image-mask-compositor.c rename to 3rd-party/cairo/src/cairo-image-mask-compositor.c diff --git a/cairo/src/cairo-image-source.c b/3rd-party/cairo/src/cairo-image-source.c similarity index 100% rename from cairo/src/cairo-image-source.c rename to 3rd-party/cairo/src/cairo-image-source.c diff --git a/cairo/src/cairo-image-surface-inline.h b/3rd-party/cairo/src/cairo-image-surface-inline.h similarity index 100% rename from cairo/src/cairo-image-surface-inline.h rename to 3rd-party/cairo/src/cairo-image-surface-inline.h diff --git a/cairo/src/cairo-image-surface-private.h b/3rd-party/cairo/src/cairo-image-surface-private.h similarity index 100% rename from cairo/src/cairo-image-surface-private.h rename to 3rd-party/cairo/src/cairo-image-surface-private.h diff --git a/cairo/src/cairo-image-surface.c b/3rd-party/cairo/src/cairo-image-surface.c similarity index 100% rename from cairo/src/cairo-image-surface.c rename to 3rd-party/cairo/src/cairo-image-surface.c diff --git a/cairo/src/cairo-list-inline.h b/3rd-party/cairo/src/cairo-list-inline.h similarity index 100% rename from cairo/src/cairo-list-inline.h rename to 3rd-party/cairo/src/cairo-list-inline.h diff --git a/cairo/src/cairo-list-private.h b/3rd-party/cairo/src/cairo-list-private.h similarity index 100% rename from cairo/src/cairo-list-private.h rename to 3rd-party/cairo/src/cairo-list-private.h diff --git a/cairo/src/cairo-lzw.c b/3rd-party/cairo/src/cairo-lzw.c similarity index 100% rename from cairo/src/cairo-lzw.c rename to 3rd-party/cairo/src/cairo-lzw.c diff --git a/cairo/src/cairo-malloc-private.h b/3rd-party/cairo/src/cairo-malloc-private.h similarity index 100% rename from cairo/src/cairo-malloc-private.h rename to 3rd-party/cairo/src/cairo-malloc-private.h diff --git a/cairo/src/cairo-mask-compositor.c b/3rd-party/cairo/src/cairo-mask-compositor.c similarity index 100% rename from cairo/src/cairo-mask-compositor.c rename to 3rd-party/cairo/src/cairo-mask-compositor.c diff --git a/cairo/src/cairo-matrix.c b/3rd-party/cairo/src/cairo-matrix.c similarity index 100% rename from cairo/src/cairo-matrix.c rename to 3rd-party/cairo/src/cairo-matrix.c diff --git a/cairo/src/cairo-mempool-private.h b/3rd-party/cairo/src/cairo-mempool-private.h similarity index 100% rename from cairo/src/cairo-mempool-private.h rename to 3rd-party/cairo/src/cairo-mempool-private.h diff --git a/cairo/src/cairo-mempool.c b/3rd-party/cairo/src/cairo-mempool.c similarity index 100% rename from cairo/src/cairo-mempool.c rename to 3rd-party/cairo/src/cairo-mempool.c diff --git a/cairo/src/cairo-mesh-pattern-rasterizer.c b/3rd-party/cairo/src/cairo-mesh-pattern-rasterizer.c similarity index 100% rename from cairo/src/cairo-mesh-pattern-rasterizer.c rename to 3rd-party/cairo/src/cairo-mesh-pattern-rasterizer.c diff --git a/cairo/src/cairo-misc.c b/3rd-party/cairo/src/cairo-misc.c similarity index 100% rename from cairo/src/cairo-misc.c rename to 3rd-party/cairo/src/cairo-misc.c diff --git a/cairo/src/cairo-mono-scan-converter.c b/3rd-party/cairo/src/cairo-mono-scan-converter.c similarity index 100% rename from cairo/src/cairo-mono-scan-converter.c rename to 3rd-party/cairo/src/cairo-mono-scan-converter.c diff --git a/cairo/src/cairo-mutex-impl-private.h b/3rd-party/cairo/src/cairo-mutex-impl-private.h similarity index 100% rename from cairo/src/cairo-mutex-impl-private.h rename to 3rd-party/cairo/src/cairo-mutex-impl-private.h diff --git a/cairo/src/cairo-mutex-list-private.h b/3rd-party/cairo/src/cairo-mutex-list-private.h similarity index 100% rename from cairo/src/cairo-mutex-list-private.h rename to 3rd-party/cairo/src/cairo-mutex-list-private.h diff --git a/cairo/src/cairo-mutex-private.h b/3rd-party/cairo/src/cairo-mutex-private.h similarity index 100% rename from cairo/src/cairo-mutex-private.h rename to 3rd-party/cairo/src/cairo-mutex-private.h diff --git a/cairo/src/cairo-mutex-type-private.h b/3rd-party/cairo/src/cairo-mutex-type-private.h similarity index 100% rename from cairo/src/cairo-mutex-type-private.h rename to 3rd-party/cairo/src/cairo-mutex-type-private.h diff --git a/cairo/src/cairo-mutex.c b/3rd-party/cairo/src/cairo-mutex.c similarity index 100% rename from cairo/src/cairo-mutex.c rename to 3rd-party/cairo/src/cairo-mutex.c diff --git a/cairo/src/cairo-no-compositor.c b/3rd-party/cairo/src/cairo-no-compositor.c similarity index 100% rename from cairo/src/cairo-no-compositor.c rename to 3rd-party/cairo/src/cairo-no-compositor.c diff --git a/cairo/src/cairo-observer.c b/3rd-party/cairo/src/cairo-observer.c similarity index 100% rename from cairo/src/cairo-observer.c rename to 3rd-party/cairo/src/cairo-observer.c diff --git a/cairo/src/cairo-os2-private.h b/3rd-party/cairo/src/cairo-os2-private.h similarity index 100% rename from cairo/src/cairo-os2-private.h rename to 3rd-party/cairo/src/cairo-os2-private.h diff --git a/cairo/src/cairo-os2-surface.c b/3rd-party/cairo/src/cairo-os2-surface.c similarity index 100% rename from cairo/src/cairo-os2-surface.c rename to 3rd-party/cairo/src/cairo-os2-surface.c diff --git a/cairo/src/cairo-os2.h b/3rd-party/cairo/src/cairo-os2.h similarity index 100% rename from cairo/src/cairo-os2.h rename to 3rd-party/cairo/src/cairo-os2.h diff --git a/cairo/src/cairo-output-stream-private.h b/3rd-party/cairo/src/cairo-output-stream-private.h similarity index 100% rename from cairo/src/cairo-output-stream-private.h rename to 3rd-party/cairo/src/cairo-output-stream-private.h diff --git a/cairo/src/cairo-output-stream.c b/3rd-party/cairo/src/cairo-output-stream.c similarity index 100% rename from cairo/src/cairo-output-stream.c rename to 3rd-party/cairo/src/cairo-output-stream.c diff --git a/cairo/src/cairo-paginated-private.h b/3rd-party/cairo/src/cairo-paginated-private.h similarity index 100% rename from cairo/src/cairo-paginated-private.h rename to 3rd-party/cairo/src/cairo-paginated-private.h diff --git a/cairo/src/cairo-paginated-surface-private.h b/3rd-party/cairo/src/cairo-paginated-surface-private.h similarity index 100% rename from cairo/src/cairo-paginated-surface-private.h rename to 3rd-party/cairo/src/cairo-paginated-surface-private.h diff --git a/cairo/src/cairo-paginated-surface.c b/3rd-party/cairo/src/cairo-paginated-surface.c similarity index 100% rename from cairo/src/cairo-paginated-surface.c rename to 3rd-party/cairo/src/cairo-paginated-surface.c diff --git a/cairo/src/cairo-path-bounds.c b/3rd-party/cairo/src/cairo-path-bounds.c similarity index 100% rename from cairo/src/cairo-path-bounds.c rename to 3rd-party/cairo/src/cairo-path-bounds.c diff --git a/cairo/src/cairo-path-fill.c b/3rd-party/cairo/src/cairo-path-fill.c similarity index 100% rename from cairo/src/cairo-path-fill.c rename to 3rd-party/cairo/src/cairo-path-fill.c diff --git a/cairo/src/cairo-path-fixed-private.h b/3rd-party/cairo/src/cairo-path-fixed-private.h similarity index 100% rename from cairo/src/cairo-path-fixed-private.h rename to 3rd-party/cairo/src/cairo-path-fixed-private.h diff --git a/cairo/src/cairo-path-fixed.c b/3rd-party/cairo/src/cairo-path-fixed.c similarity index 100% rename from cairo/src/cairo-path-fixed.c rename to 3rd-party/cairo/src/cairo-path-fixed.c diff --git a/cairo/src/cairo-path-in-fill.c b/3rd-party/cairo/src/cairo-path-in-fill.c similarity index 100% rename from cairo/src/cairo-path-in-fill.c rename to 3rd-party/cairo/src/cairo-path-in-fill.c diff --git a/cairo/src/cairo-path-private.h b/3rd-party/cairo/src/cairo-path-private.h similarity index 100% rename from cairo/src/cairo-path-private.h rename to 3rd-party/cairo/src/cairo-path-private.h diff --git a/cairo/src/cairo-path-stroke-boxes.c b/3rd-party/cairo/src/cairo-path-stroke-boxes.c similarity index 100% rename from cairo/src/cairo-path-stroke-boxes.c rename to 3rd-party/cairo/src/cairo-path-stroke-boxes.c diff --git a/cairo/src/cairo-path-stroke-polygon.c b/3rd-party/cairo/src/cairo-path-stroke-polygon.c similarity index 100% rename from cairo/src/cairo-path-stroke-polygon.c rename to 3rd-party/cairo/src/cairo-path-stroke-polygon.c diff --git a/cairo/src/cairo-path-stroke-traps.c b/3rd-party/cairo/src/cairo-path-stroke-traps.c similarity index 100% rename from cairo/src/cairo-path-stroke-traps.c rename to 3rd-party/cairo/src/cairo-path-stroke-traps.c diff --git a/cairo/src/cairo-path-stroke-tristrip.c b/3rd-party/cairo/src/cairo-path-stroke-tristrip.c similarity index 100% rename from cairo/src/cairo-path-stroke-tristrip.c rename to 3rd-party/cairo/src/cairo-path-stroke-tristrip.c diff --git a/cairo/src/cairo-path-stroke.c b/3rd-party/cairo/src/cairo-path-stroke.c similarity index 100% rename from cairo/src/cairo-path-stroke.c rename to 3rd-party/cairo/src/cairo-path-stroke.c diff --git a/cairo/src/cairo-path.c b/3rd-party/cairo/src/cairo-path.c similarity index 100% rename from cairo/src/cairo-path.c rename to 3rd-party/cairo/src/cairo-path.c diff --git a/cairo/src/cairo-pattern-inline.h b/3rd-party/cairo/src/cairo-pattern-inline.h similarity index 100% rename from cairo/src/cairo-pattern-inline.h rename to 3rd-party/cairo/src/cairo-pattern-inline.h diff --git a/cairo/src/cairo-pattern-private.h b/3rd-party/cairo/src/cairo-pattern-private.h similarity index 100% rename from cairo/src/cairo-pattern-private.h rename to 3rd-party/cairo/src/cairo-pattern-private.h diff --git a/cairo/src/cairo-pattern.c b/3rd-party/cairo/src/cairo-pattern.c similarity index 100% rename from cairo/src/cairo-pattern.c rename to 3rd-party/cairo/src/cairo-pattern.c diff --git a/cairo/src/cairo-pdf-operators-private.h b/3rd-party/cairo/src/cairo-pdf-operators-private.h similarity index 100% rename from cairo/src/cairo-pdf-operators-private.h rename to 3rd-party/cairo/src/cairo-pdf-operators-private.h diff --git a/cairo/src/cairo-pdf-operators.c b/3rd-party/cairo/src/cairo-pdf-operators.c similarity index 100% rename from cairo/src/cairo-pdf-operators.c rename to 3rd-party/cairo/src/cairo-pdf-operators.c diff --git a/cairo/src/cairo-pdf-shading-private.h b/3rd-party/cairo/src/cairo-pdf-shading-private.h similarity index 100% rename from cairo/src/cairo-pdf-shading-private.h rename to 3rd-party/cairo/src/cairo-pdf-shading-private.h diff --git a/cairo/src/cairo-pdf-shading.c b/3rd-party/cairo/src/cairo-pdf-shading.c similarity index 100% rename from cairo/src/cairo-pdf-shading.c rename to 3rd-party/cairo/src/cairo-pdf-shading.c diff --git a/cairo/src/cairo-pdf-surface-private.h b/3rd-party/cairo/src/cairo-pdf-surface-private.h similarity index 100% rename from cairo/src/cairo-pdf-surface-private.h rename to 3rd-party/cairo/src/cairo-pdf-surface-private.h diff --git a/cairo/src/cairo-pdf-surface.c b/3rd-party/cairo/src/cairo-pdf-surface.c similarity index 100% rename from cairo/src/cairo-pdf-surface.c rename to 3rd-party/cairo/src/cairo-pdf-surface.c diff --git a/N3888_RefImpl/src/win32/include/cairo-pdf.h b/3rd-party/cairo/src/cairo-pdf.h similarity index 100% rename from N3888_RefImpl/src/win32/include/cairo-pdf.h rename to 3rd-party/cairo/src/cairo-pdf.h diff --git a/cairo/src/cairo-pen.c b/3rd-party/cairo/src/cairo-pen.c similarity index 100% rename from cairo/src/cairo-pen.c rename to 3rd-party/cairo/src/cairo-pen.c diff --git a/cairo/src/cairo-pixman-private.h b/3rd-party/cairo/src/cairo-pixman-private.h similarity index 100% rename from cairo/src/cairo-pixman-private.h rename to 3rd-party/cairo/src/cairo-pixman-private.h diff --git a/cairo/src/cairo-png.c b/3rd-party/cairo/src/cairo-png.c similarity index 100% rename from cairo/src/cairo-png.c rename to 3rd-party/cairo/src/cairo-png.c diff --git a/cairo/src/cairo-polygon-intersect.c b/3rd-party/cairo/src/cairo-polygon-intersect.c similarity index 100% rename from cairo/src/cairo-polygon-intersect.c rename to 3rd-party/cairo/src/cairo-polygon-intersect.c diff --git a/cairo/src/cairo-polygon-reduce.c b/3rd-party/cairo/src/cairo-polygon-reduce.c similarity index 100% rename from cairo/src/cairo-polygon-reduce.c rename to 3rd-party/cairo/src/cairo-polygon-reduce.c diff --git a/cairo/src/cairo-polygon.c b/3rd-party/cairo/src/cairo-polygon.c similarity index 100% rename from cairo/src/cairo-polygon.c rename to 3rd-party/cairo/src/cairo-polygon.c diff --git a/cairo/src/cairo-private.h b/3rd-party/cairo/src/cairo-private.h similarity index 100% rename from cairo/src/cairo-private.h rename to 3rd-party/cairo/src/cairo-private.h diff --git a/cairo/src/cairo-ps-surface-private.h b/3rd-party/cairo/src/cairo-ps-surface-private.h similarity index 100% rename from cairo/src/cairo-ps-surface-private.h rename to 3rd-party/cairo/src/cairo-ps-surface-private.h diff --git a/cairo/src/cairo-ps-surface.c b/3rd-party/cairo/src/cairo-ps-surface.c similarity index 100% rename from cairo/src/cairo-ps-surface.c rename to 3rd-party/cairo/src/cairo-ps-surface.c diff --git a/N3888_RefImpl/src/win32/include/cairo-ps.h b/3rd-party/cairo/src/cairo-ps.h similarity index 100% rename from N3888_RefImpl/src/win32/include/cairo-ps.h rename to 3rd-party/cairo/src/cairo-ps.h diff --git a/cairo/src/cairo-qt-surface.cpp b/3rd-party/cairo/src/cairo-qt-surface.cpp similarity index 100% rename from cairo/src/cairo-qt-surface.cpp rename to 3rd-party/cairo/src/cairo-qt-surface.cpp diff --git a/cairo/src/cairo-qt.h b/3rd-party/cairo/src/cairo-qt.h similarity index 100% rename from cairo/src/cairo-qt.h rename to 3rd-party/cairo/src/cairo-qt.h diff --git a/cairo/src/cairo-quartz-font.c b/3rd-party/cairo/src/cairo-quartz-font.c similarity index 100% rename from cairo/src/cairo-quartz-font.c rename to 3rd-party/cairo/src/cairo-quartz-font.c diff --git a/cairo/src/cairo-quartz-image-surface.c b/3rd-party/cairo/src/cairo-quartz-image-surface.c similarity index 100% rename from cairo/src/cairo-quartz-image-surface.c rename to 3rd-party/cairo/src/cairo-quartz-image-surface.c diff --git a/cairo/src/cairo-quartz-image.h b/3rd-party/cairo/src/cairo-quartz-image.h similarity index 100% rename from cairo/src/cairo-quartz-image.h rename to 3rd-party/cairo/src/cairo-quartz-image.h diff --git a/cairo/src/cairo-quartz-private.h b/3rd-party/cairo/src/cairo-quartz-private.h similarity index 100% rename from cairo/src/cairo-quartz-private.h rename to 3rd-party/cairo/src/cairo-quartz-private.h diff --git a/cairo/src/cairo-quartz-surface.c b/3rd-party/cairo/src/cairo-quartz-surface.c similarity index 100% rename from cairo/src/cairo-quartz-surface.c rename to 3rd-party/cairo/src/cairo-quartz-surface.c diff --git a/cairo/src/cairo-quartz.h b/3rd-party/cairo/src/cairo-quartz.h similarity index 100% rename from cairo/src/cairo-quartz.h rename to 3rd-party/cairo/src/cairo-quartz.h diff --git a/cairo/src/cairo-raster-source-pattern.c b/3rd-party/cairo/src/cairo-raster-source-pattern.c similarity index 100% rename from cairo/src/cairo-raster-source-pattern.c rename to 3rd-party/cairo/src/cairo-raster-source-pattern.c diff --git a/cairo/src/cairo-recording-surface-inline.h b/3rd-party/cairo/src/cairo-recording-surface-inline.h similarity index 100% rename from cairo/src/cairo-recording-surface-inline.h rename to 3rd-party/cairo/src/cairo-recording-surface-inline.h diff --git a/cairo/src/cairo-recording-surface-private.h b/3rd-party/cairo/src/cairo-recording-surface-private.h similarity index 100% rename from cairo/src/cairo-recording-surface-private.h rename to 3rd-party/cairo/src/cairo-recording-surface-private.h diff --git a/cairo/src/cairo-recording-surface.c b/3rd-party/cairo/src/cairo-recording-surface.c similarity index 100% rename from cairo/src/cairo-recording-surface.c rename to 3rd-party/cairo/src/cairo-recording-surface.c diff --git a/cairo/src/cairo-rectangle.c b/3rd-party/cairo/src/cairo-rectangle.c similarity index 100% rename from cairo/src/cairo-rectangle.c rename to 3rd-party/cairo/src/cairo-rectangle.c diff --git a/cairo/src/cairo-rectangular-scan-converter.c b/3rd-party/cairo/src/cairo-rectangular-scan-converter.c similarity index 100% rename from cairo/src/cairo-rectangular-scan-converter.c rename to 3rd-party/cairo/src/cairo-rectangular-scan-converter.c diff --git a/cairo/src/cairo-reference-count-private.h b/3rd-party/cairo/src/cairo-reference-count-private.h similarity index 100% rename from cairo/src/cairo-reference-count-private.h rename to 3rd-party/cairo/src/cairo-reference-count-private.h diff --git a/cairo/src/cairo-region-private.h b/3rd-party/cairo/src/cairo-region-private.h similarity index 100% rename from cairo/src/cairo-region-private.h rename to 3rd-party/cairo/src/cairo-region-private.h diff --git a/cairo/src/cairo-region.c b/3rd-party/cairo/src/cairo-region.c similarity index 100% rename from cairo/src/cairo-region.c rename to 3rd-party/cairo/src/cairo-region.c diff --git a/cairo/src/cairo-rtree-private.h b/3rd-party/cairo/src/cairo-rtree-private.h similarity index 100% rename from cairo/src/cairo-rtree-private.h rename to 3rd-party/cairo/src/cairo-rtree-private.h diff --git a/cairo/src/cairo-rtree.c b/3rd-party/cairo/src/cairo-rtree.c similarity index 100% rename from cairo/src/cairo-rtree.c rename to 3rd-party/cairo/src/cairo-rtree.c diff --git a/cairo/src/cairo-scaled-font-private.h b/3rd-party/cairo/src/cairo-scaled-font-private.h similarity index 100% rename from cairo/src/cairo-scaled-font-private.h rename to 3rd-party/cairo/src/cairo-scaled-font-private.h diff --git a/cairo/src/cairo-scaled-font-subsets-private.h b/3rd-party/cairo/src/cairo-scaled-font-subsets-private.h similarity index 100% rename from cairo/src/cairo-scaled-font-subsets-private.h rename to 3rd-party/cairo/src/cairo-scaled-font-subsets-private.h diff --git a/cairo/src/cairo-scaled-font-subsets.c b/3rd-party/cairo/src/cairo-scaled-font-subsets.c similarity index 100% rename from cairo/src/cairo-scaled-font-subsets.c rename to 3rd-party/cairo/src/cairo-scaled-font-subsets.c diff --git a/cairo/src/cairo-scaled-font.c b/3rd-party/cairo/src/cairo-scaled-font.c similarity index 100% rename from cairo/src/cairo-scaled-font.c rename to 3rd-party/cairo/src/cairo-scaled-font.c diff --git a/cairo/src/cairo-script-private.h b/3rd-party/cairo/src/cairo-script-private.h similarity index 100% rename from cairo/src/cairo-script-private.h rename to 3rd-party/cairo/src/cairo-script-private.h diff --git a/cairo/src/cairo-script-surface.c b/3rd-party/cairo/src/cairo-script-surface.c similarity index 100% rename from cairo/src/cairo-script-surface.c rename to 3rd-party/cairo/src/cairo-script-surface.c diff --git a/N3888_RefImpl/src/win32/include/cairo-script.h b/3rd-party/cairo/src/cairo-script.h similarity index 100% rename from N3888_RefImpl/src/win32/include/cairo-script.h rename to 3rd-party/cairo/src/cairo-script.h diff --git a/cairo/src/cairo-shape-mask-compositor.c b/3rd-party/cairo/src/cairo-shape-mask-compositor.c similarity index 100% rename from cairo/src/cairo-shape-mask-compositor.c rename to 3rd-party/cairo/src/cairo-shape-mask-compositor.c diff --git a/cairo/src/cairo-skia-surface.cpp b/3rd-party/cairo/src/cairo-skia-surface.cpp similarity index 100% rename from cairo/src/cairo-skia-surface.cpp rename to 3rd-party/cairo/src/cairo-skia-surface.cpp diff --git a/cairo/src/cairo-skia.h b/3rd-party/cairo/src/cairo-skia.h similarity index 100% rename from cairo/src/cairo-skia.h rename to 3rd-party/cairo/src/cairo-skia.h diff --git a/cairo/src/cairo-slope-private.h b/3rd-party/cairo/src/cairo-slope-private.h similarity index 100% rename from cairo/src/cairo-slope-private.h rename to 3rd-party/cairo/src/cairo-slope-private.h diff --git a/cairo/src/cairo-slope.c b/3rd-party/cairo/src/cairo-slope.c similarity index 100% rename from cairo/src/cairo-slope.c rename to 3rd-party/cairo/src/cairo-slope.c diff --git a/cairo/src/cairo-spans-compositor-private.h b/3rd-party/cairo/src/cairo-spans-compositor-private.h similarity index 100% rename from cairo/src/cairo-spans-compositor-private.h rename to 3rd-party/cairo/src/cairo-spans-compositor-private.h diff --git a/cairo/src/cairo-spans-compositor.c b/3rd-party/cairo/src/cairo-spans-compositor.c similarity index 100% rename from cairo/src/cairo-spans-compositor.c rename to 3rd-party/cairo/src/cairo-spans-compositor.c diff --git a/cairo/src/cairo-spans-private.h b/3rd-party/cairo/src/cairo-spans-private.h similarity index 100% rename from cairo/src/cairo-spans-private.h rename to 3rd-party/cairo/src/cairo-spans-private.h diff --git a/cairo/src/cairo-spans.c b/3rd-party/cairo/src/cairo-spans.c similarity index 100% rename from cairo/src/cairo-spans.c rename to 3rd-party/cairo/src/cairo-spans.c diff --git a/cairo/src/cairo-spline.c b/3rd-party/cairo/src/cairo-spline.c similarity index 100% rename from cairo/src/cairo-spline.c rename to 3rd-party/cairo/src/cairo-spline.c diff --git a/cairo/src/cairo-stroke-dash-private.h b/3rd-party/cairo/src/cairo-stroke-dash-private.h similarity index 100% rename from cairo/src/cairo-stroke-dash-private.h rename to 3rd-party/cairo/src/cairo-stroke-dash-private.h diff --git a/cairo/src/cairo-stroke-dash.c b/3rd-party/cairo/src/cairo-stroke-dash.c similarity index 100% rename from cairo/src/cairo-stroke-dash.c rename to 3rd-party/cairo/src/cairo-stroke-dash.c diff --git a/cairo/src/cairo-stroke-style.c b/3rd-party/cairo/src/cairo-stroke-style.c similarity index 100% rename from cairo/src/cairo-stroke-style.c rename to 3rd-party/cairo/src/cairo-stroke-style.c diff --git a/cairo/src/cairo-surface-backend-private.h b/3rd-party/cairo/src/cairo-surface-backend-private.h similarity index 100% rename from cairo/src/cairo-surface-backend-private.h rename to 3rd-party/cairo/src/cairo-surface-backend-private.h diff --git a/cairo/src/cairo-surface-clipper-private.h b/3rd-party/cairo/src/cairo-surface-clipper-private.h similarity index 100% rename from cairo/src/cairo-surface-clipper-private.h rename to 3rd-party/cairo/src/cairo-surface-clipper-private.h diff --git a/cairo/src/cairo-surface-clipper.c b/3rd-party/cairo/src/cairo-surface-clipper.c similarity index 100% rename from cairo/src/cairo-surface-clipper.c rename to 3rd-party/cairo/src/cairo-surface-clipper.c diff --git a/cairo/src/cairo-surface-fallback-private.h b/3rd-party/cairo/src/cairo-surface-fallback-private.h similarity index 100% rename from cairo/src/cairo-surface-fallback-private.h rename to 3rd-party/cairo/src/cairo-surface-fallback-private.h diff --git a/cairo/src/cairo-surface-fallback.c b/3rd-party/cairo/src/cairo-surface-fallback.c similarity index 100% rename from cairo/src/cairo-surface-fallback.c rename to 3rd-party/cairo/src/cairo-surface-fallback.c diff --git a/cairo/src/cairo-surface-inline.h b/3rd-party/cairo/src/cairo-surface-inline.h similarity index 100% rename from cairo/src/cairo-surface-inline.h rename to 3rd-party/cairo/src/cairo-surface-inline.h diff --git a/cairo/src/cairo-surface-observer-inline.h b/3rd-party/cairo/src/cairo-surface-observer-inline.h similarity index 100% rename from cairo/src/cairo-surface-observer-inline.h rename to 3rd-party/cairo/src/cairo-surface-observer-inline.h diff --git a/cairo/src/cairo-surface-observer-private.h b/3rd-party/cairo/src/cairo-surface-observer-private.h similarity index 100% rename from cairo/src/cairo-surface-observer-private.h rename to 3rd-party/cairo/src/cairo-surface-observer-private.h diff --git a/cairo/src/cairo-surface-observer.c b/3rd-party/cairo/src/cairo-surface-observer.c similarity index 100% rename from cairo/src/cairo-surface-observer.c rename to 3rd-party/cairo/src/cairo-surface-observer.c diff --git a/cairo/src/cairo-surface-offset-private.h b/3rd-party/cairo/src/cairo-surface-offset-private.h similarity index 100% rename from cairo/src/cairo-surface-offset-private.h rename to 3rd-party/cairo/src/cairo-surface-offset-private.h diff --git a/cairo/src/cairo-surface-offset.c b/3rd-party/cairo/src/cairo-surface-offset.c similarity index 100% rename from cairo/src/cairo-surface-offset.c rename to 3rd-party/cairo/src/cairo-surface-offset.c diff --git a/cairo/src/cairo-surface-private.h b/3rd-party/cairo/src/cairo-surface-private.h similarity index 100% rename from cairo/src/cairo-surface-private.h rename to 3rd-party/cairo/src/cairo-surface-private.h diff --git a/cairo/src/cairo-surface-snapshot-inline.h b/3rd-party/cairo/src/cairo-surface-snapshot-inline.h similarity index 100% rename from cairo/src/cairo-surface-snapshot-inline.h rename to 3rd-party/cairo/src/cairo-surface-snapshot-inline.h diff --git a/cairo/src/cairo-surface-snapshot-private.h b/3rd-party/cairo/src/cairo-surface-snapshot-private.h similarity index 100% rename from cairo/src/cairo-surface-snapshot-private.h rename to 3rd-party/cairo/src/cairo-surface-snapshot-private.h diff --git a/cairo/src/cairo-surface-snapshot.c b/3rd-party/cairo/src/cairo-surface-snapshot.c similarity index 100% rename from cairo/src/cairo-surface-snapshot.c rename to 3rd-party/cairo/src/cairo-surface-snapshot.c diff --git a/cairo/src/cairo-surface-subsurface-inline.h b/3rd-party/cairo/src/cairo-surface-subsurface-inline.h similarity index 100% rename from cairo/src/cairo-surface-subsurface-inline.h rename to 3rd-party/cairo/src/cairo-surface-subsurface-inline.h diff --git a/cairo/src/cairo-surface-subsurface-private.h b/3rd-party/cairo/src/cairo-surface-subsurface-private.h similarity index 100% rename from cairo/src/cairo-surface-subsurface-private.h rename to 3rd-party/cairo/src/cairo-surface-subsurface-private.h diff --git a/cairo/src/cairo-surface-subsurface.c b/3rd-party/cairo/src/cairo-surface-subsurface.c similarity index 100% rename from cairo/src/cairo-surface-subsurface.c rename to 3rd-party/cairo/src/cairo-surface-subsurface.c diff --git a/cairo/src/cairo-surface-wrapper-private.h b/3rd-party/cairo/src/cairo-surface-wrapper-private.h similarity index 100% rename from cairo/src/cairo-surface-wrapper-private.h rename to 3rd-party/cairo/src/cairo-surface-wrapper-private.h diff --git a/cairo/src/cairo-surface-wrapper.c b/3rd-party/cairo/src/cairo-surface-wrapper.c similarity index 100% rename from cairo/src/cairo-surface-wrapper.c rename to 3rd-party/cairo/src/cairo-surface-wrapper.c diff --git a/cairo/src/cairo-surface.c b/3rd-party/cairo/src/cairo-surface.c similarity index 100% rename from cairo/src/cairo-surface.c rename to 3rd-party/cairo/src/cairo-surface.c diff --git a/cairo/src/cairo-svg-surface-private.h b/3rd-party/cairo/src/cairo-svg-surface-private.h similarity index 100% rename from cairo/src/cairo-svg-surface-private.h rename to 3rd-party/cairo/src/cairo-svg-surface-private.h diff --git a/cairo/src/cairo-svg-surface.c b/3rd-party/cairo/src/cairo-svg-surface.c similarity index 100% rename from cairo/src/cairo-svg-surface.c rename to 3rd-party/cairo/src/cairo-svg-surface.c diff --git a/N3888_RefImpl/src/win32/include/cairo-svg.h b/3rd-party/cairo/src/cairo-svg.h similarity index 100% rename from N3888_RefImpl/src/win32/include/cairo-svg.h rename to 3rd-party/cairo/src/cairo-svg.h diff --git a/cairo/src/cairo-tee-surface-private.h b/3rd-party/cairo/src/cairo-tee-surface-private.h similarity index 100% rename from cairo/src/cairo-tee-surface-private.h rename to 3rd-party/cairo/src/cairo-tee-surface-private.h diff --git a/cairo/src/cairo-tee-surface.c b/3rd-party/cairo/src/cairo-tee-surface.c similarity index 100% rename from cairo/src/cairo-tee-surface.c rename to 3rd-party/cairo/src/cairo-tee-surface.c diff --git a/cairo/src/cairo-tee.h b/3rd-party/cairo/src/cairo-tee.h similarity index 100% rename from cairo/src/cairo-tee.h rename to 3rd-party/cairo/src/cairo-tee.h diff --git a/cairo/src/cairo-time-private.h b/3rd-party/cairo/src/cairo-time-private.h similarity index 100% rename from cairo/src/cairo-time-private.h rename to 3rd-party/cairo/src/cairo-time-private.h diff --git a/cairo/src/cairo-time.c b/3rd-party/cairo/src/cairo-time.c similarity index 100% rename from cairo/src/cairo-time.c rename to 3rd-party/cairo/src/cairo-time.c diff --git a/cairo/src/cairo-tor-scan-converter.c b/3rd-party/cairo/src/cairo-tor-scan-converter.c similarity index 100% rename from cairo/src/cairo-tor-scan-converter.c rename to 3rd-party/cairo/src/cairo-tor-scan-converter.c diff --git a/cairo/src/cairo-tor22-scan-converter.c b/3rd-party/cairo/src/cairo-tor22-scan-converter.c similarity index 100% rename from cairo/src/cairo-tor22-scan-converter.c rename to 3rd-party/cairo/src/cairo-tor22-scan-converter.c diff --git a/cairo/src/cairo-toy-font-face.c b/3rd-party/cairo/src/cairo-toy-font-face.c similarity index 100% rename from cairo/src/cairo-toy-font-face.c rename to 3rd-party/cairo/src/cairo-toy-font-face.c diff --git a/cairo/src/cairo-traps-compositor.c b/3rd-party/cairo/src/cairo-traps-compositor.c similarity index 100% rename from cairo/src/cairo-traps-compositor.c rename to 3rd-party/cairo/src/cairo-traps-compositor.c diff --git a/cairo/src/cairo-traps-private.h b/3rd-party/cairo/src/cairo-traps-private.h similarity index 100% rename from cairo/src/cairo-traps-private.h rename to 3rd-party/cairo/src/cairo-traps-private.h diff --git a/cairo/src/cairo-traps.c b/3rd-party/cairo/src/cairo-traps.c similarity index 100% rename from cairo/src/cairo-traps.c rename to 3rd-party/cairo/src/cairo-traps.c diff --git a/cairo/src/cairo-tristrip-private.h b/3rd-party/cairo/src/cairo-tristrip-private.h similarity index 100% rename from cairo/src/cairo-tristrip-private.h rename to 3rd-party/cairo/src/cairo-tristrip-private.h diff --git a/cairo/src/cairo-tristrip.c b/3rd-party/cairo/src/cairo-tristrip.c similarity index 100% rename from cairo/src/cairo-tristrip.c rename to 3rd-party/cairo/src/cairo-tristrip.c diff --git a/cairo/src/cairo-truetype-subset-private.h b/3rd-party/cairo/src/cairo-truetype-subset-private.h similarity index 100% rename from cairo/src/cairo-truetype-subset-private.h rename to 3rd-party/cairo/src/cairo-truetype-subset-private.h diff --git a/cairo/src/cairo-truetype-subset.c b/3rd-party/cairo/src/cairo-truetype-subset.c similarity index 100% rename from cairo/src/cairo-truetype-subset.c rename to 3rd-party/cairo/src/cairo-truetype-subset.c diff --git a/cairo/src/cairo-type1-fallback.c b/3rd-party/cairo/src/cairo-type1-fallback.c similarity index 100% rename from cairo/src/cairo-type1-fallback.c rename to 3rd-party/cairo/src/cairo-type1-fallback.c diff --git a/cairo/src/cairo-type1-glyph-names.c b/3rd-party/cairo/src/cairo-type1-glyph-names.c similarity index 100% rename from cairo/src/cairo-type1-glyph-names.c rename to 3rd-party/cairo/src/cairo-type1-glyph-names.c diff --git a/cairo/src/cairo-type1-private.h b/3rd-party/cairo/src/cairo-type1-private.h similarity index 100% rename from cairo/src/cairo-type1-private.h rename to 3rd-party/cairo/src/cairo-type1-private.h diff --git a/cairo/src/cairo-type1-subset.c b/3rd-party/cairo/src/cairo-type1-subset.c similarity index 100% rename from cairo/src/cairo-type1-subset.c rename to 3rd-party/cairo/src/cairo-type1-subset.c diff --git a/cairo/src/cairo-type3-glyph-surface-private.h b/3rd-party/cairo/src/cairo-type3-glyph-surface-private.h similarity index 100% rename from cairo/src/cairo-type3-glyph-surface-private.h rename to 3rd-party/cairo/src/cairo-type3-glyph-surface-private.h diff --git a/cairo/src/cairo-type3-glyph-surface.c b/3rd-party/cairo/src/cairo-type3-glyph-surface.c similarity index 100% rename from cairo/src/cairo-type3-glyph-surface.c rename to 3rd-party/cairo/src/cairo-type3-glyph-surface.c diff --git a/cairo/src/cairo-types-private.h b/3rd-party/cairo/src/cairo-types-private.h similarity index 100% rename from cairo/src/cairo-types-private.h rename to 3rd-party/cairo/src/cairo-types-private.h diff --git a/cairo/src/cairo-unicode.c b/3rd-party/cairo/src/cairo-unicode.c similarity index 100% rename from cairo/src/cairo-unicode.c rename to 3rd-party/cairo/src/cairo-unicode.c diff --git a/cairo/src/cairo-uninstalled.pc.in b/3rd-party/cairo/src/cairo-uninstalled.pc.in similarity index 100% rename from cairo/src/cairo-uninstalled.pc.in rename to 3rd-party/cairo/src/cairo-uninstalled.pc.in diff --git a/cairo/src/cairo-user-font-private.h b/3rd-party/cairo/src/cairo-user-font-private.h similarity index 100% rename from cairo/src/cairo-user-font-private.h rename to 3rd-party/cairo/src/cairo-user-font-private.h diff --git a/cairo/src/cairo-user-font.c b/3rd-party/cairo/src/cairo-user-font.c similarity index 100% rename from cairo/src/cairo-user-font.c rename to 3rd-party/cairo/src/cairo-user-font.c diff --git a/cairo/src/cairo-version.c b/3rd-party/cairo/src/cairo-version.c similarity index 100% rename from cairo/src/cairo-version.c rename to 3rd-party/cairo/src/cairo-version.c diff --git a/cairo/src/cairo-version.h b/3rd-party/cairo/src/cairo-version.h similarity index 100% rename from cairo/src/cairo-version.h rename to 3rd-party/cairo/src/cairo-version.h diff --git a/cairo/src/cairo-vg-surface.c b/3rd-party/cairo/src/cairo-vg-surface.c similarity index 100% rename from cairo/src/cairo-vg-surface.c rename to 3rd-party/cairo/src/cairo-vg-surface.c diff --git a/cairo/src/cairo-vg.h b/3rd-party/cairo/src/cairo-vg.h similarity index 100% rename from cairo/src/cairo-vg.h rename to 3rd-party/cairo/src/cairo-vg.h diff --git a/cairo/src/cairo-wgl-context.c b/3rd-party/cairo/src/cairo-wgl-context.c similarity index 100% rename from cairo/src/cairo-wgl-context.c rename to 3rd-party/cairo/src/cairo-wgl-context.c diff --git a/cairo/src/cairo-wideint-private.h b/3rd-party/cairo/src/cairo-wideint-private.h similarity index 100% rename from cairo/src/cairo-wideint-private.h rename to 3rd-party/cairo/src/cairo-wideint-private.h diff --git a/cairo/src/cairo-wideint-type-private.h b/3rd-party/cairo/src/cairo-wideint-type-private.h similarity index 100% rename from cairo/src/cairo-wideint-type-private.h rename to 3rd-party/cairo/src/cairo-wideint-type-private.h diff --git a/cairo/src/cairo-wideint.c b/3rd-party/cairo/src/cairo-wideint.c similarity index 100% rename from cairo/src/cairo-wideint.c rename to 3rd-party/cairo/src/cairo-wideint.c diff --git a/N3888_RefImpl/src/win32/include/cairo-win32.h b/3rd-party/cairo/src/cairo-win32.h similarity index 100% rename from N3888_RefImpl/src/win32/include/cairo-win32.h rename to 3rd-party/cairo/src/cairo-win32.h diff --git a/cairo/src/cairo-xcb-connection-core.c b/3rd-party/cairo/src/cairo-xcb-connection-core.c similarity index 100% rename from cairo/src/cairo-xcb-connection-core.c rename to 3rd-party/cairo/src/cairo-xcb-connection-core.c diff --git a/cairo/src/cairo-xcb-connection-render.c b/3rd-party/cairo/src/cairo-xcb-connection-render.c similarity index 100% rename from cairo/src/cairo-xcb-connection-render.c rename to 3rd-party/cairo/src/cairo-xcb-connection-render.c diff --git a/cairo/src/cairo-xcb-connection-shm.c b/3rd-party/cairo/src/cairo-xcb-connection-shm.c similarity index 100% rename from cairo/src/cairo-xcb-connection-shm.c rename to 3rd-party/cairo/src/cairo-xcb-connection-shm.c diff --git a/cairo/src/cairo-xcb-connection.c b/3rd-party/cairo/src/cairo-xcb-connection.c similarity index 100% rename from cairo/src/cairo-xcb-connection.c rename to 3rd-party/cairo/src/cairo-xcb-connection.c diff --git a/cairo/src/cairo-xcb-private.h b/3rd-party/cairo/src/cairo-xcb-private.h similarity index 100% rename from cairo/src/cairo-xcb-private.h rename to 3rd-party/cairo/src/cairo-xcb-private.h diff --git a/cairo/src/cairo-xcb-screen.c b/3rd-party/cairo/src/cairo-xcb-screen.c similarity index 100% rename from cairo/src/cairo-xcb-screen.c rename to 3rd-party/cairo/src/cairo-xcb-screen.c diff --git a/cairo/src/cairo-xcb-shm.c b/3rd-party/cairo/src/cairo-xcb-shm.c similarity index 100% rename from cairo/src/cairo-xcb-shm.c rename to 3rd-party/cairo/src/cairo-xcb-shm.c diff --git a/cairo/src/cairo-xcb-surface-core.c b/3rd-party/cairo/src/cairo-xcb-surface-core.c similarity index 100% rename from cairo/src/cairo-xcb-surface-core.c rename to 3rd-party/cairo/src/cairo-xcb-surface-core.c diff --git a/cairo/src/cairo-xcb-surface-render.c b/3rd-party/cairo/src/cairo-xcb-surface-render.c similarity index 100% rename from cairo/src/cairo-xcb-surface-render.c rename to 3rd-party/cairo/src/cairo-xcb-surface-render.c diff --git a/cairo/src/cairo-xcb-surface.c b/3rd-party/cairo/src/cairo-xcb-surface.c similarity index 100% rename from cairo/src/cairo-xcb-surface.c rename to 3rd-party/cairo/src/cairo-xcb-surface.c diff --git a/cairo/src/cairo-xcb.h b/3rd-party/cairo/src/cairo-xcb.h similarity index 100% rename from cairo/src/cairo-xcb.h rename to 3rd-party/cairo/src/cairo-xcb.h diff --git a/cairo/src/cairo-xlib-core-compositor.c b/3rd-party/cairo/src/cairo-xlib-core-compositor.c similarity index 100% rename from cairo/src/cairo-xlib-core-compositor.c rename to 3rd-party/cairo/src/cairo-xlib-core-compositor.c diff --git a/cairo/src/cairo-xlib-display.c b/3rd-party/cairo/src/cairo-xlib-display.c similarity index 100% rename from cairo/src/cairo-xlib-display.c rename to 3rd-party/cairo/src/cairo-xlib-display.c diff --git a/cairo/src/cairo-xlib-fallback-compositor.c b/3rd-party/cairo/src/cairo-xlib-fallback-compositor.c similarity index 100% rename from cairo/src/cairo-xlib-fallback-compositor.c rename to 3rd-party/cairo/src/cairo-xlib-fallback-compositor.c diff --git a/cairo/src/cairo-xlib-private.h b/3rd-party/cairo/src/cairo-xlib-private.h similarity index 100% rename from cairo/src/cairo-xlib-private.h rename to 3rd-party/cairo/src/cairo-xlib-private.h diff --git a/cairo/src/cairo-xlib-render-compositor.c b/3rd-party/cairo/src/cairo-xlib-render-compositor.c similarity index 100% rename from cairo/src/cairo-xlib-render-compositor.c rename to 3rd-party/cairo/src/cairo-xlib-render-compositor.c diff --git a/cairo/src/cairo-xlib-screen.c b/3rd-party/cairo/src/cairo-xlib-screen.c similarity index 100% rename from cairo/src/cairo-xlib-screen.c rename to 3rd-party/cairo/src/cairo-xlib-screen.c diff --git a/cairo/src/cairo-xlib-source.c b/3rd-party/cairo/src/cairo-xlib-source.c similarity index 100% rename from cairo/src/cairo-xlib-source.c rename to 3rd-party/cairo/src/cairo-xlib-source.c diff --git a/cairo/src/cairo-xlib-surface-private.h b/3rd-party/cairo/src/cairo-xlib-surface-private.h similarity index 100% rename from cairo/src/cairo-xlib-surface-private.h rename to 3rd-party/cairo/src/cairo-xlib-surface-private.h diff --git a/cairo/src/cairo-xlib-surface-shm.c b/3rd-party/cairo/src/cairo-xlib-surface-shm.c similarity index 100% rename from cairo/src/cairo-xlib-surface-shm.c rename to 3rd-party/cairo/src/cairo-xlib-surface-shm.c diff --git a/cairo/src/cairo-xlib-surface.c b/3rd-party/cairo/src/cairo-xlib-surface.c similarity index 100% rename from cairo/src/cairo-xlib-surface.c rename to 3rd-party/cairo/src/cairo-xlib-surface.c diff --git a/cairo/src/cairo-xlib-visual.c b/3rd-party/cairo/src/cairo-xlib-visual.c similarity index 100% rename from cairo/src/cairo-xlib-visual.c rename to 3rd-party/cairo/src/cairo-xlib-visual.c diff --git a/cairo/src/cairo-xlib-xcb-surface.c b/3rd-party/cairo/src/cairo-xlib-xcb-surface.c similarity index 100% rename from cairo/src/cairo-xlib-xcb-surface.c rename to 3rd-party/cairo/src/cairo-xlib-xcb-surface.c diff --git a/cairo/src/cairo-xlib-xrender-private.h b/3rd-party/cairo/src/cairo-xlib-xrender-private.h similarity index 100% rename from cairo/src/cairo-xlib-xrender-private.h rename to 3rd-party/cairo/src/cairo-xlib-xrender-private.h diff --git a/cairo/src/cairo-xlib-xrender.h b/3rd-party/cairo/src/cairo-xlib-xrender.h similarity index 100% rename from cairo/src/cairo-xlib-xrender.h rename to 3rd-party/cairo/src/cairo-xlib-xrender.h diff --git a/cairo/src/cairo-xlib.h b/3rd-party/cairo/src/cairo-xlib.h similarity index 100% rename from cairo/src/cairo-xlib.h rename to 3rd-party/cairo/src/cairo-xlib.h diff --git a/cairo/src/cairo-xml-surface.c b/3rd-party/cairo/src/cairo-xml-surface.c similarity index 100% rename from cairo/src/cairo-xml-surface.c rename to 3rd-party/cairo/src/cairo-xml-surface.c diff --git a/cairo/src/cairo-xml.h b/3rd-party/cairo/src/cairo-xml.h similarity index 100% rename from cairo/src/cairo-xml.h rename to 3rd-party/cairo/src/cairo-xml.h diff --git a/cairo/src/cairo.c b/3rd-party/cairo/src/cairo.c similarity index 100% rename from cairo/src/cairo.c rename to 3rd-party/cairo/src/cairo.c diff --git a/N3888_RefImpl/src/win32/include/cairo.h b/3rd-party/cairo/src/cairo.h similarity index 100% rename from N3888_RefImpl/src/win32/include/cairo.h rename to 3rd-party/cairo/src/cairo.h diff --git a/cairo/src/cairo.pc.in b/3rd-party/cairo/src/cairo.pc.in similarity index 100% rename from cairo/src/cairo.pc.in rename to 3rd-party/cairo/src/cairo.pc.in diff --git a/cairo/src/cairoint.h b/3rd-party/cairo/src/cairoint.h similarity index 100% rename from cairo/src/cairoint.h rename to 3rd-party/cairo/src/cairoint.h diff --git a/cairo/src/check-def.sh b/3rd-party/cairo/src/check-def.sh similarity index 100% rename from cairo/src/check-def.sh rename to 3rd-party/cairo/src/check-def.sh diff --git a/cairo/src/check-doc-syntax.awk b/3rd-party/cairo/src/check-doc-syntax.awk similarity index 100% rename from cairo/src/check-doc-syntax.awk rename to 3rd-party/cairo/src/check-doc-syntax.awk diff --git a/cairo/src/check-doc-syntax.sh b/3rd-party/cairo/src/check-doc-syntax.sh similarity index 100% rename from cairo/src/check-doc-syntax.sh rename to 3rd-party/cairo/src/check-doc-syntax.sh diff --git a/cairo/src/check-has-hidden-symbols.c b/3rd-party/cairo/src/check-has-hidden-symbols.c similarity index 100% rename from cairo/src/check-has-hidden-symbols.c rename to 3rd-party/cairo/src/check-has-hidden-symbols.c diff --git a/cairo/src/check-headers.sh b/3rd-party/cairo/src/check-headers.sh similarity index 100% rename from cairo/src/check-headers.sh rename to 3rd-party/cairo/src/check-headers.sh diff --git a/cairo/src/check-link.c b/3rd-party/cairo/src/check-link.c similarity index 100% rename from cairo/src/check-link.c rename to 3rd-party/cairo/src/check-link.c diff --git a/cairo/src/check-plt.sh b/3rd-party/cairo/src/check-plt.sh similarity index 100% rename from cairo/src/check-plt.sh rename to 3rd-party/cairo/src/check-plt.sh diff --git a/cairo/src/check-preprocessor-syntax.sh b/3rd-party/cairo/src/check-preprocessor-syntax.sh similarity index 100% rename from cairo/src/check-preprocessor-syntax.sh rename to 3rd-party/cairo/src/check-preprocessor-syntax.sh diff --git a/cairo/src/drm/cairo-drm-bo.c b/3rd-party/cairo/src/drm/cairo-drm-bo.c similarity index 100% rename from cairo/src/drm/cairo-drm-bo.c rename to 3rd-party/cairo/src/drm/cairo-drm-bo.c diff --git a/cairo/src/drm/cairo-drm-gallium-surface.c b/3rd-party/cairo/src/drm/cairo-drm-gallium-surface.c similarity index 100% rename from cairo/src/drm/cairo-drm-gallium-surface.c rename to 3rd-party/cairo/src/drm/cairo-drm-gallium-surface.c diff --git a/cairo/src/drm/cairo-drm-i915-glyphs.c b/3rd-party/cairo/src/drm/cairo-drm-i915-glyphs.c similarity index 100% rename from cairo/src/drm/cairo-drm-i915-glyphs.c rename to 3rd-party/cairo/src/drm/cairo-drm-i915-glyphs.c diff --git a/cairo/src/drm/cairo-drm-i915-private.h b/3rd-party/cairo/src/drm/cairo-drm-i915-private.h similarity index 100% rename from cairo/src/drm/cairo-drm-i915-private.h rename to 3rd-party/cairo/src/drm/cairo-drm-i915-private.h diff --git a/cairo/src/drm/cairo-drm-i915-shader.c b/3rd-party/cairo/src/drm/cairo-drm-i915-shader.c similarity index 100% rename from cairo/src/drm/cairo-drm-i915-shader.c rename to 3rd-party/cairo/src/drm/cairo-drm-i915-shader.c diff --git a/cairo/src/drm/cairo-drm-i915-spans.c b/3rd-party/cairo/src/drm/cairo-drm-i915-spans.c similarity index 100% rename from cairo/src/drm/cairo-drm-i915-spans.c rename to 3rd-party/cairo/src/drm/cairo-drm-i915-spans.c diff --git a/cairo/src/drm/cairo-drm-i915-surface.c b/3rd-party/cairo/src/drm/cairo-drm-i915-surface.c similarity index 100% rename from cairo/src/drm/cairo-drm-i915-surface.c rename to 3rd-party/cairo/src/drm/cairo-drm-i915-surface.c diff --git a/cairo/src/drm/cairo-drm-i965-glyphs.c b/3rd-party/cairo/src/drm/cairo-drm-i965-glyphs.c similarity index 100% rename from cairo/src/drm/cairo-drm-i965-glyphs.c rename to 3rd-party/cairo/src/drm/cairo-drm-i965-glyphs.c diff --git a/cairo/src/drm/cairo-drm-i965-private.h b/3rd-party/cairo/src/drm/cairo-drm-i965-private.h similarity index 100% rename from cairo/src/drm/cairo-drm-i965-private.h rename to 3rd-party/cairo/src/drm/cairo-drm-i965-private.h diff --git a/cairo/src/drm/cairo-drm-i965-shader.c b/3rd-party/cairo/src/drm/cairo-drm-i965-shader.c similarity index 100% rename from cairo/src/drm/cairo-drm-i965-shader.c rename to 3rd-party/cairo/src/drm/cairo-drm-i965-shader.c diff --git a/cairo/src/drm/cairo-drm-i965-spans.c b/3rd-party/cairo/src/drm/cairo-drm-i965-spans.c similarity index 100% rename from cairo/src/drm/cairo-drm-i965-spans.c rename to 3rd-party/cairo/src/drm/cairo-drm-i965-spans.c diff --git a/cairo/src/drm/cairo-drm-i965-surface.c b/3rd-party/cairo/src/drm/cairo-drm-i965-surface.c similarity index 100% rename from cairo/src/drm/cairo-drm-i965-surface.c rename to 3rd-party/cairo/src/drm/cairo-drm-i965-surface.c diff --git a/cairo/src/drm/cairo-drm-intel-brw-defines.h b/3rd-party/cairo/src/drm/cairo-drm-intel-brw-defines.h similarity index 100% rename from cairo/src/drm/cairo-drm-intel-brw-defines.h rename to 3rd-party/cairo/src/drm/cairo-drm-intel-brw-defines.h diff --git a/cairo/src/drm/cairo-drm-intel-brw-eu-emit.c b/3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu-emit.c similarity index 100% rename from cairo/src/drm/cairo-drm-intel-brw-eu-emit.c rename to 3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu-emit.c diff --git a/cairo/src/drm/cairo-drm-intel-brw-eu-util.c b/3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu-util.c similarity index 100% rename from cairo/src/drm/cairo-drm-intel-brw-eu-util.c rename to 3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu-util.c diff --git a/cairo/src/drm/cairo-drm-intel-brw-eu.c b/3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu.c similarity index 100% rename from cairo/src/drm/cairo-drm-intel-brw-eu.c rename to 3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu.c diff --git a/cairo/src/drm/cairo-drm-intel-brw-eu.h b/3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu.h similarity index 100% rename from cairo/src/drm/cairo-drm-intel-brw-eu.h rename to 3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu.h diff --git a/cairo/src/drm/cairo-drm-intel-brw-structs.h b/3rd-party/cairo/src/drm/cairo-drm-intel-brw-structs.h similarity index 100% rename from cairo/src/drm/cairo-drm-intel-brw-structs.h rename to 3rd-party/cairo/src/drm/cairo-drm-intel-brw-structs.h diff --git a/cairo/src/drm/cairo-drm-intel-command-private.h b/3rd-party/cairo/src/drm/cairo-drm-intel-command-private.h similarity index 100% rename from cairo/src/drm/cairo-drm-intel-command-private.h rename to 3rd-party/cairo/src/drm/cairo-drm-intel-command-private.h diff --git a/cairo/src/drm/cairo-drm-intel-debug.c b/3rd-party/cairo/src/drm/cairo-drm-intel-debug.c similarity index 100% rename from cairo/src/drm/cairo-drm-intel-debug.c rename to 3rd-party/cairo/src/drm/cairo-drm-intel-debug.c diff --git a/cairo/src/drm/cairo-drm-intel-ioctl-private.h b/3rd-party/cairo/src/drm/cairo-drm-intel-ioctl-private.h similarity index 100% rename from cairo/src/drm/cairo-drm-intel-ioctl-private.h rename to 3rd-party/cairo/src/drm/cairo-drm-intel-ioctl-private.h diff --git a/cairo/src/drm/cairo-drm-intel-private.h b/3rd-party/cairo/src/drm/cairo-drm-intel-private.h similarity index 100% rename from cairo/src/drm/cairo-drm-intel-private.h rename to 3rd-party/cairo/src/drm/cairo-drm-intel-private.h diff --git a/cairo/src/drm/cairo-drm-intel-surface.c b/3rd-party/cairo/src/drm/cairo-drm-intel-surface.c similarity index 100% rename from cairo/src/drm/cairo-drm-intel-surface.c rename to 3rd-party/cairo/src/drm/cairo-drm-intel-surface.c diff --git a/cairo/src/drm/cairo-drm-intel.c b/3rd-party/cairo/src/drm/cairo-drm-intel.c similarity index 100% rename from cairo/src/drm/cairo-drm-intel.c rename to 3rd-party/cairo/src/drm/cairo-drm-intel.c diff --git a/cairo/src/drm/cairo-drm-ioctl-private.h b/3rd-party/cairo/src/drm/cairo-drm-ioctl-private.h similarity index 100% rename from cairo/src/drm/cairo-drm-ioctl-private.h rename to 3rd-party/cairo/src/drm/cairo-drm-ioctl-private.h diff --git a/cairo/src/drm/cairo-drm-private.h b/3rd-party/cairo/src/drm/cairo-drm-private.h similarity index 100% rename from cairo/src/drm/cairo-drm-private.h rename to 3rd-party/cairo/src/drm/cairo-drm-private.h diff --git a/cairo/src/drm/cairo-drm-radeon-private.h b/3rd-party/cairo/src/drm/cairo-drm-radeon-private.h similarity index 100% rename from cairo/src/drm/cairo-drm-radeon-private.h rename to 3rd-party/cairo/src/drm/cairo-drm-radeon-private.h diff --git a/cairo/src/drm/cairo-drm-radeon-surface.c b/3rd-party/cairo/src/drm/cairo-drm-radeon-surface.c similarity index 100% rename from cairo/src/drm/cairo-drm-radeon-surface.c rename to 3rd-party/cairo/src/drm/cairo-drm-radeon-surface.c diff --git a/cairo/src/drm/cairo-drm-radeon.c b/3rd-party/cairo/src/drm/cairo-drm-radeon.c similarity index 100% rename from cairo/src/drm/cairo-drm-radeon.c rename to 3rd-party/cairo/src/drm/cairo-drm-radeon.c diff --git a/cairo/src/drm/cairo-drm-surface.c b/3rd-party/cairo/src/drm/cairo-drm-surface.c similarity index 100% rename from cairo/src/drm/cairo-drm-surface.c rename to 3rd-party/cairo/src/drm/cairo-drm-surface.c diff --git a/cairo/src/drm/cairo-drm.c b/3rd-party/cairo/src/drm/cairo-drm.c similarity index 100% rename from cairo/src/drm/cairo-drm.c rename to 3rd-party/cairo/src/drm/cairo-drm.c diff --git a/cairo/src/skia/cairo-skia-context.cpp b/3rd-party/cairo/src/skia/cairo-skia-context.cpp similarity index 100% rename from cairo/src/skia/cairo-skia-context.cpp rename to 3rd-party/cairo/src/skia/cairo-skia-context.cpp diff --git a/cairo/src/skia/cairo-skia-private.h b/3rd-party/cairo/src/skia/cairo-skia-private.h similarity index 100% rename from cairo/src/skia/cairo-skia-private.h rename to 3rd-party/cairo/src/skia/cairo-skia-private.h diff --git a/cairo/src/skia/cairo-skia-surface.cpp b/3rd-party/cairo/src/skia/cairo-skia-surface.cpp similarity index 100% rename from cairo/src/skia/cairo-skia-surface.cpp rename to 3rd-party/cairo/src/skia/cairo-skia-surface.cpp diff --git a/cairo/src/test-base-compositor-surface.c b/3rd-party/cairo/src/test-base-compositor-surface.c similarity index 100% rename from cairo/src/test-base-compositor-surface.c rename to 3rd-party/cairo/src/test-base-compositor-surface.c diff --git a/cairo/src/test-compositor-surface-private.h b/3rd-party/cairo/src/test-compositor-surface-private.h similarity index 100% rename from cairo/src/test-compositor-surface-private.h rename to 3rd-party/cairo/src/test-compositor-surface-private.h diff --git a/cairo/src/test-compositor-surface.c b/3rd-party/cairo/src/test-compositor-surface.c similarity index 100% rename from cairo/src/test-compositor-surface.c rename to 3rd-party/cairo/src/test-compositor-surface.c diff --git a/cairo/src/test-compositor-surface.h b/3rd-party/cairo/src/test-compositor-surface.h similarity index 100% rename from cairo/src/test-compositor-surface.h rename to 3rd-party/cairo/src/test-compositor-surface.h diff --git a/cairo/src/test-null-compositor-surface.c b/3rd-party/cairo/src/test-null-compositor-surface.c similarity index 100% rename from cairo/src/test-null-compositor-surface.c rename to 3rd-party/cairo/src/test-null-compositor-surface.c diff --git a/cairo/src/test-null-compositor-surface.h b/3rd-party/cairo/src/test-null-compositor-surface.h similarity index 100% rename from cairo/src/test-null-compositor-surface.h rename to 3rd-party/cairo/src/test-null-compositor-surface.h diff --git a/cairo/src/test-paginated-surface.c b/3rd-party/cairo/src/test-paginated-surface.c similarity index 100% rename from cairo/src/test-paginated-surface.c rename to 3rd-party/cairo/src/test-paginated-surface.c diff --git a/cairo/src/test-paginated-surface.h b/3rd-party/cairo/src/test-paginated-surface.h similarity index 100% rename from cairo/src/test-paginated-surface.h rename to 3rd-party/cairo/src/test-paginated-surface.h diff --git a/cairo/src/win32/cairo-win32-debug.c b/3rd-party/cairo/src/win32/cairo-win32-debug.c similarity index 100% rename from cairo/src/win32/cairo-win32-debug.c rename to 3rd-party/cairo/src/win32/cairo-win32-debug.c diff --git a/cairo/src/win32/cairo-win32-device.c b/3rd-party/cairo/src/win32/cairo-win32-device.c similarity index 100% rename from cairo/src/win32/cairo-win32-device.c rename to 3rd-party/cairo/src/win32/cairo-win32-device.c diff --git a/cairo/src/win32/cairo-win32-display-surface.c b/3rd-party/cairo/src/win32/cairo-win32-display-surface.c similarity index 100% rename from cairo/src/win32/cairo-win32-display-surface.c rename to 3rd-party/cairo/src/win32/cairo-win32-display-surface.c diff --git a/cairo/src/win32/cairo-win32-font.c b/3rd-party/cairo/src/win32/cairo-win32-font.c similarity index 100% rename from cairo/src/win32/cairo-win32-font.c rename to 3rd-party/cairo/src/win32/cairo-win32-font.c diff --git a/cairo/src/win32/cairo-win32-gdi-compositor.c b/3rd-party/cairo/src/win32/cairo-win32-gdi-compositor.c similarity index 100% rename from cairo/src/win32/cairo-win32-gdi-compositor.c rename to 3rd-party/cairo/src/win32/cairo-win32-gdi-compositor.c diff --git a/cairo/src/win32/cairo-win32-printing-surface.c b/3rd-party/cairo/src/win32/cairo-win32-printing-surface.c similarity index 100% rename from cairo/src/win32/cairo-win32-printing-surface.c rename to 3rd-party/cairo/src/win32/cairo-win32-printing-surface.c diff --git a/cairo/src/win32/cairo-win32-private.h b/3rd-party/cairo/src/win32/cairo-win32-private.h similarity index 100% rename from cairo/src/win32/cairo-win32-private.h rename to 3rd-party/cairo/src/win32/cairo-win32-private.h diff --git a/cairo/src/win32/cairo-win32-surface.c b/3rd-party/cairo/src/win32/cairo-win32-surface.c similarity index 100% rename from cairo/src/win32/cairo-win32-surface.c rename to 3rd-party/cairo/src/win32/cairo-win32-surface.c diff --git a/cairo/src/win32/cairo-win32-system.c b/3rd-party/cairo/src/win32/cairo-win32-system.c similarity index 100% rename from cairo/src/win32/cairo-win32-system.c rename to 3rd-party/cairo/src/win32/cairo-win32-system.c diff --git a/cairo/test/.gitignore b/3rd-party/cairo/test/.gitignore similarity index 100% rename from cairo/test/.gitignore rename to 3rd-party/cairo/test/.gitignore diff --git a/cairo/test/.valgrind-suppressions b/3rd-party/cairo/test/.valgrind-suppressions similarity index 100% rename from cairo/test/.valgrind-suppressions rename to 3rd-party/cairo/test/.valgrind-suppressions diff --git a/cairo/test/6x13.pcf b/3rd-party/cairo/test/6x13.pcf similarity index 100% rename from cairo/test/6x13.pcf rename to 3rd-party/cairo/test/6x13.pcf diff --git a/cairo/test/COPYING b/3rd-party/cairo/test/COPYING similarity index 100% rename from cairo/test/COPYING rename to 3rd-party/cairo/test/COPYING diff --git a/cairo/test/Makefile.am b/3rd-party/cairo/test/Makefile.am similarity index 100% rename from cairo/test/Makefile.am rename to 3rd-party/cairo/test/Makefile.am diff --git a/cairo/test/Makefile.sources b/3rd-party/cairo/test/Makefile.sources similarity index 100% rename from cairo/test/Makefile.sources rename to 3rd-party/cairo/test/Makefile.sources diff --git a/cairo/test/Makefile.win32 b/3rd-party/cairo/test/Makefile.win32 similarity index 100% rename from cairo/test/Makefile.win32 rename to 3rd-party/cairo/test/Makefile.win32 diff --git a/cairo/test/README b/3rd-party/cairo/test/README similarity index 100% rename from cairo/test/README rename to 3rd-party/cairo/test/README diff --git a/cairo/test/a1-bug.c b/3rd-party/cairo/test/a1-bug.c similarity index 100% rename from cairo/test/a1-bug.c rename to 3rd-party/cairo/test/a1-bug.c diff --git a/cairo/test/a1-clip.c b/3rd-party/cairo/test/a1-clip.c similarity index 100% rename from cairo/test/a1-clip.c rename to 3rd-party/cairo/test/a1-clip.c diff --git a/cairo/test/a1-fill.c b/3rd-party/cairo/test/a1-fill.c similarity index 100% rename from cairo/test/a1-fill.c rename to 3rd-party/cairo/test/a1-fill.c diff --git a/cairo/test/a1-image-sample.c b/3rd-party/cairo/test/a1-image-sample.c similarity index 100% rename from cairo/test/a1-image-sample.c rename to 3rd-party/cairo/test/a1-image-sample.c diff --git a/cairo/test/a1-mask-sample.c b/3rd-party/cairo/test/a1-mask-sample.c similarity index 100% rename from cairo/test/a1-mask-sample.c rename to 3rd-party/cairo/test/a1-mask-sample.c diff --git a/cairo/test/a1-mask.c b/3rd-party/cairo/test/a1-mask.c similarity index 100% rename from cairo/test/a1-mask.c rename to 3rd-party/cairo/test/a1-mask.c diff --git a/cairo/test/a1-rasterisation.c b/3rd-party/cairo/test/a1-rasterisation.c similarity index 100% rename from cairo/test/a1-rasterisation.c rename to 3rd-party/cairo/test/a1-rasterisation.c diff --git a/cairo/test/a1-sample.c b/3rd-party/cairo/test/a1-sample.c similarity index 100% rename from cairo/test/a1-sample.c rename to 3rd-party/cairo/test/a1-sample.c diff --git a/cairo/test/a1-traps-sample.c b/3rd-party/cairo/test/a1-traps-sample.c similarity index 100% rename from cairo/test/a1-traps-sample.c rename to 3rd-party/cairo/test/a1-traps-sample.c diff --git a/cairo/test/a8-clear.c b/3rd-party/cairo/test/a8-clear.c similarity index 100% rename from cairo/test/a8-clear.c rename to 3rd-party/cairo/test/a8-clear.c diff --git a/cairo/test/a8-mask.c b/3rd-party/cairo/test/a8-mask.c similarity index 100% rename from cairo/test/a8-mask.c rename to 3rd-party/cairo/test/a8-mask.c diff --git a/cairo/test/aliasing.c b/3rd-party/cairo/test/aliasing.c similarity index 100% rename from cairo/test/aliasing.c rename to 3rd-party/cairo/test/aliasing.c diff --git a/cairo/test/alpha-similar.c b/3rd-party/cairo/test/alpha-similar.c similarity index 100% rename from cairo/test/alpha-similar.c rename to 3rd-party/cairo/test/alpha-similar.c diff --git a/cairo/test/any2ppm.c b/3rd-party/cairo/test/any2ppm.c similarity index 100% rename from cairo/test/any2ppm.c rename to 3rd-party/cairo/test/any2ppm.c diff --git a/cairo/test/api-special-cases.c b/3rd-party/cairo/test/api-special-cases.c similarity index 100% rename from cairo/test/api-special-cases.c rename to 3rd-party/cairo/test/api-special-cases.c diff --git a/cairo/test/arc-direction.c b/3rd-party/cairo/test/arc-direction.c similarity index 100% rename from cairo/test/arc-direction.c rename to 3rd-party/cairo/test/arc-direction.c diff --git a/cairo/test/arc-infinite-loop.c b/3rd-party/cairo/test/arc-infinite-loop.c similarity index 100% rename from cairo/test/arc-infinite-loop.c rename to 3rd-party/cairo/test/arc-infinite-loop.c diff --git a/cairo/test/arc-looping-dash.c b/3rd-party/cairo/test/arc-looping-dash.c similarity index 100% rename from cairo/test/arc-looping-dash.c rename to 3rd-party/cairo/test/arc-looping-dash.c diff --git a/cairo/test/big-empty-box.c b/3rd-party/cairo/test/big-empty-box.c similarity index 100% rename from cairo/test/big-empty-box.c rename to 3rd-party/cairo/test/big-empty-box.c diff --git a/cairo/test/big-empty-triangle.c b/3rd-party/cairo/test/big-empty-triangle.c similarity index 100% rename from cairo/test/big-empty-triangle.c rename to 3rd-party/cairo/test/big-empty-triangle.c diff --git a/cairo/test/big-line.c b/3rd-party/cairo/test/big-line.c similarity index 100% rename from cairo/test/big-line.c rename to 3rd-party/cairo/test/big-line.c diff --git a/cairo/test/big-little-box.c b/3rd-party/cairo/test/big-little-box.c similarity index 100% rename from cairo/test/big-little-box.c rename to 3rd-party/cairo/test/big-little-box.c diff --git a/cairo/test/big-little-triangle.c b/3rd-party/cairo/test/big-little-triangle.c similarity index 100% rename from cairo/test/big-little-triangle.c rename to 3rd-party/cairo/test/big-little-triangle.c diff --git a/cairo/test/big-trap.c b/3rd-party/cairo/test/big-trap.c similarity index 100% rename from cairo/test/big-trap.c rename to 3rd-party/cairo/test/big-trap.c diff --git a/cairo/test/bilevel-image.c b/3rd-party/cairo/test/bilevel-image.c similarity index 100% rename from cairo/test/bilevel-image.c rename to 3rd-party/cairo/test/bilevel-image.c diff --git a/cairo/test/bitmap-font.c b/3rd-party/cairo/test/bitmap-font.c similarity index 100% rename from cairo/test/bitmap-font.c rename to 3rd-party/cairo/test/bitmap-font.c diff --git a/cairo/test/buffer-diff.c b/3rd-party/cairo/test/buffer-diff.c similarity index 100% rename from cairo/test/buffer-diff.c rename to 3rd-party/cairo/test/buffer-diff.c diff --git a/cairo/test/buffer-diff.h b/3rd-party/cairo/test/buffer-diff.h similarity index 100% rename from cairo/test/buffer-diff.h rename to 3rd-party/cairo/test/buffer-diff.h diff --git a/cairo/test/bug-40410.c b/3rd-party/cairo/test/bug-40410.c similarity index 100% rename from cairo/test/bug-40410.c rename to 3rd-party/cairo/test/bug-40410.c diff --git a/cairo/test/bug-51910.c b/3rd-party/cairo/test/bug-51910.c similarity index 100% rename from cairo/test/bug-51910.c rename to 3rd-party/cairo/test/bug-51910.c diff --git a/cairo/test/bug-bo-collins.c b/3rd-party/cairo/test/bug-bo-collins.c similarity index 100% rename from cairo/test/bug-bo-collins.c rename to 3rd-party/cairo/test/bug-bo-collins.c diff --git a/cairo/test/bug-bo-rectangular.c b/3rd-party/cairo/test/bug-bo-rectangular.c similarity index 100% rename from cairo/test/bug-bo-rectangular.c rename to 3rd-party/cairo/test/bug-bo-rectangular.c diff --git a/cairo/test/bug-bo-ricotz.c b/3rd-party/cairo/test/bug-bo-ricotz.c similarity index 100% rename from cairo/test/bug-bo-ricotz.c rename to 3rd-party/cairo/test/bug-bo-ricotz.c diff --git a/cairo/test/bug-extents.c b/3rd-party/cairo/test/bug-extents.c similarity index 100% rename from cairo/test/bug-extents.c rename to 3rd-party/cairo/test/bug-extents.c diff --git a/cairo/test/bug-seams.c b/3rd-party/cairo/test/bug-seams.c similarity index 100% rename from cairo/test/bug-seams.c rename to 3rd-party/cairo/test/bug-seams.c diff --git a/cairo/test/bug-source-cu.c b/3rd-party/cairo/test/bug-source-cu.c similarity index 100% rename from cairo/test/bug-source-cu.c rename to 3rd-party/cairo/test/bug-source-cu.c diff --git a/cairo/test/bug-spline.c b/3rd-party/cairo/test/bug-spline.c similarity index 100% rename from cairo/test/bug-spline.c rename to 3rd-party/cairo/test/bug-spline.c diff --git a/cairo/test/cairo-test-private.h b/3rd-party/cairo/test/cairo-test-private.h similarity index 100% rename from cairo/test/cairo-test-private.h rename to 3rd-party/cairo/test/cairo-test-private.h diff --git a/cairo/test/cairo-test-runner.c b/3rd-party/cairo/test/cairo-test-runner.c similarity index 100% rename from cairo/test/cairo-test-runner.c rename to 3rd-party/cairo/test/cairo-test-runner.c diff --git a/cairo/test/cairo-test-trace.c b/3rd-party/cairo/test/cairo-test-trace.c similarity index 100% rename from cairo/test/cairo-test-trace.c rename to 3rd-party/cairo/test/cairo-test-trace.c diff --git a/cairo/test/cairo-test.c b/3rd-party/cairo/test/cairo-test.c similarity index 100% rename from cairo/test/cairo-test.c rename to 3rd-party/cairo/test/cairo-test.c diff --git a/cairo/test/cairo-test.h b/3rd-party/cairo/test/cairo-test.h similarity index 100% rename from cairo/test/cairo-test.h rename to 3rd-party/cairo/test/cairo-test.h diff --git a/cairo/test/caps-joins-alpha.c b/3rd-party/cairo/test/caps-joins-alpha.c similarity index 100% rename from cairo/test/caps-joins-alpha.c rename to 3rd-party/cairo/test/caps-joins-alpha.c diff --git a/cairo/test/caps-joins-curve.c b/3rd-party/cairo/test/caps-joins-curve.c similarity index 100% rename from cairo/test/caps-joins-curve.c rename to 3rd-party/cairo/test/caps-joins-curve.c diff --git a/cairo/test/caps-joins.c b/3rd-party/cairo/test/caps-joins.c similarity index 100% rename from cairo/test/caps-joins.c rename to 3rd-party/cairo/test/caps-joins.c diff --git a/cairo/test/caps-sub-paths.c b/3rd-party/cairo/test/caps-sub-paths.c similarity index 100% rename from cairo/test/caps-sub-paths.c rename to 3rd-party/cairo/test/caps-sub-paths.c diff --git a/cairo/test/caps-tails-curve.c b/3rd-party/cairo/test/caps-tails-curve.c similarity index 100% rename from cairo/test/caps-tails-curve.c rename to 3rd-party/cairo/test/caps-tails-curve.c diff --git a/cairo/test/caps.c b/3rd-party/cairo/test/caps.c similarity index 100% rename from cairo/test/caps.c rename to 3rd-party/cairo/test/caps.c diff --git a/cairo/test/check-refs.sh b/3rd-party/cairo/test/check-refs.sh similarity index 100% rename from cairo/test/check-refs.sh rename to 3rd-party/cairo/test/check-refs.sh diff --git a/cairo/test/checkerboard.c b/3rd-party/cairo/test/checkerboard.c similarity index 100% rename from cairo/test/checkerboard.c rename to 3rd-party/cairo/test/checkerboard.c diff --git a/cairo/test/clear-source.c b/3rd-party/cairo/test/clear-source.c similarity index 100% rename from cairo/test/clear-source.c rename to 3rd-party/cairo/test/clear-source.c diff --git a/cairo/test/clear.c b/3rd-party/cairo/test/clear.c similarity index 100% rename from cairo/test/clear.c rename to 3rd-party/cairo/test/clear.c diff --git a/cairo/test/clip-all.c b/3rd-party/cairo/test/clip-all.c similarity index 100% rename from cairo/test/clip-all.c rename to 3rd-party/cairo/test/clip-all.c diff --git a/cairo/test/clip-complex-bug61592.c b/3rd-party/cairo/test/clip-complex-bug61592.c similarity index 100% rename from cairo/test/clip-complex-bug61592.c rename to 3rd-party/cairo/test/clip-complex-bug61592.c diff --git a/cairo/test/clip-complex-shape.c b/3rd-party/cairo/test/clip-complex-shape.c similarity index 100% rename from cairo/test/clip-complex-shape.c rename to 3rd-party/cairo/test/clip-complex-shape.c diff --git a/cairo/test/clip-contexts.c b/3rd-party/cairo/test/clip-contexts.c similarity index 100% rename from cairo/test/clip-contexts.c rename to 3rd-party/cairo/test/clip-contexts.c diff --git a/cairo/test/clip-device-offset.c b/3rd-party/cairo/test/clip-device-offset.c similarity index 100% rename from cairo/test/clip-device-offset.c rename to 3rd-party/cairo/test/clip-device-offset.c diff --git a/cairo/test/clip-disjoint-hatching.c b/3rd-party/cairo/test/clip-disjoint-hatching.c similarity index 100% rename from cairo/test/clip-disjoint-hatching.c rename to 3rd-party/cairo/test/clip-disjoint-hatching.c diff --git a/cairo/test/clip-disjoint-quad.c b/3rd-party/cairo/test/clip-disjoint-quad.c similarity index 100% rename from cairo/test/clip-disjoint-quad.c rename to 3rd-party/cairo/test/clip-disjoint-quad.c diff --git a/cairo/test/clip-disjoint.c b/3rd-party/cairo/test/clip-disjoint.c similarity index 100% rename from cairo/test/clip-disjoint.c rename to 3rd-party/cairo/test/clip-disjoint.c diff --git a/cairo/test/clip-double-free.c b/3rd-party/cairo/test/clip-double-free.c similarity index 100% rename from cairo/test/clip-double-free.c rename to 3rd-party/cairo/test/clip-double-free.c diff --git a/cairo/test/clip-draw-unbounded.c b/3rd-party/cairo/test/clip-draw-unbounded.c similarity index 100% rename from cairo/test/clip-draw-unbounded.c rename to 3rd-party/cairo/test/clip-draw-unbounded.c diff --git a/cairo/test/clip-empty-group.c b/3rd-party/cairo/test/clip-empty-group.c similarity index 100% rename from cairo/test/clip-empty-group.c rename to 3rd-party/cairo/test/clip-empty-group.c diff --git a/cairo/test/clip-empty-save.c b/3rd-party/cairo/test/clip-empty-save.c similarity index 100% rename from cairo/test/clip-empty-save.c rename to 3rd-party/cairo/test/clip-empty-save.c diff --git a/cairo/test/clip-empty.c b/3rd-party/cairo/test/clip-empty.c similarity index 100% rename from cairo/test/clip-empty.c rename to 3rd-party/cairo/test/clip-empty.c diff --git a/cairo/test/clip-fill-no-op.c b/3rd-party/cairo/test/clip-fill-no-op.c similarity index 100% rename from cairo/test/clip-fill-no-op.c rename to 3rd-party/cairo/test/clip-fill-no-op.c diff --git a/cairo/test/clip-fill-rule-pixel-aligned.c b/3rd-party/cairo/test/clip-fill-rule-pixel-aligned.c similarity index 100% rename from cairo/test/clip-fill-rule-pixel-aligned.c rename to 3rd-party/cairo/test/clip-fill-rule-pixel-aligned.c diff --git a/cairo/test/clip-fill-rule.c b/3rd-party/cairo/test/clip-fill-rule.c similarity index 100% rename from cairo/test/clip-fill-rule.c rename to 3rd-party/cairo/test/clip-fill-rule.c diff --git a/cairo/test/clip-fill.c b/3rd-party/cairo/test/clip-fill.c similarity index 100% rename from cairo/test/clip-fill.c rename to 3rd-party/cairo/test/clip-fill.c diff --git a/cairo/test/clip-group-shapes.c b/3rd-party/cairo/test/clip-group-shapes.c similarity index 100% rename from cairo/test/clip-group-shapes.c rename to 3rd-party/cairo/test/clip-group-shapes.c diff --git a/cairo/test/clip-image.c b/3rd-party/cairo/test/clip-image.c similarity index 100% rename from cairo/test/clip-image.c rename to 3rd-party/cairo/test/clip-image.c diff --git a/cairo/test/clip-intersect.c b/3rd-party/cairo/test/clip-intersect.c similarity index 100% rename from cairo/test/clip-intersect.c rename to 3rd-party/cairo/test/clip-intersect.c diff --git a/cairo/test/clip-mixed-antialias.c b/3rd-party/cairo/test/clip-mixed-antialias.c similarity index 100% rename from cairo/test/clip-mixed-antialias.c rename to 3rd-party/cairo/test/clip-mixed-antialias.c diff --git a/cairo/test/clip-nesting.c b/3rd-party/cairo/test/clip-nesting.c similarity index 100% rename from cairo/test/clip-nesting.c rename to 3rd-party/cairo/test/clip-nesting.c diff --git a/cairo/test/clip-operator.c b/3rd-party/cairo/test/clip-operator.c similarity index 100% rename from cairo/test/clip-operator.c rename to 3rd-party/cairo/test/clip-operator.c diff --git a/cairo/test/clip-polygons.c b/3rd-party/cairo/test/clip-polygons.c similarity index 100% rename from cairo/test/clip-polygons.c rename to 3rd-party/cairo/test/clip-polygons.c diff --git a/cairo/test/clip-push-group.c b/3rd-party/cairo/test/clip-push-group.c similarity index 100% rename from cairo/test/clip-push-group.c rename to 3rd-party/cairo/test/clip-push-group.c diff --git a/cairo/test/clip-rectilinear.c b/3rd-party/cairo/test/clip-rectilinear.c similarity index 100% rename from cairo/test/clip-rectilinear.c rename to 3rd-party/cairo/test/clip-rectilinear.c diff --git a/cairo/test/clip-shape.c b/3rd-party/cairo/test/clip-shape.c similarity index 100% rename from cairo/test/clip-shape.c rename to 3rd-party/cairo/test/clip-shape.c diff --git a/cairo/test/clip-stroke-no-op.c b/3rd-party/cairo/test/clip-stroke-no-op.c similarity index 100% rename from cairo/test/clip-stroke-no-op.c rename to 3rd-party/cairo/test/clip-stroke-no-op.c diff --git a/cairo/test/clip-stroke.c b/3rd-party/cairo/test/clip-stroke.c similarity index 100% rename from cairo/test/clip-stroke.c rename to 3rd-party/cairo/test/clip-stroke.c diff --git a/cairo/test/clip-text.c b/3rd-party/cairo/test/clip-text.c similarity index 100% rename from cairo/test/clip-text.c rename to 3rd-party/cairo/test/clip-text.c diff --git a/cairo/test/clip-twice-rectangle.c b/3rd-party/cairo/test/clip-twice-rectangle.c similarity index 100% rename from cairo/test/clip-twice-rectangle.c rename to 3rd-party/cairo/test/clip-twice-rectangle.c diff --git a/cairo/test/clip-twice.c b/3rd-party/cairo/test/clip-twice.c similarity index 100% rename from cairo/test/clip-twice.c rename to 3rd-party/cairo/test/clip-twice.c diff --git a/cairo/test/clip-unbounded.c b/3rd-party/cairo/test/clip-unbounded.c similarity index 100% rename from cairo/test/clip-unbounded.c rename to 3rd-party/cairo/test/clip-unbounded.c diff --git a/cairo/test/clip-zero.c b/3rd-party/cairo/test/clip-zero.c similarity index 100% rename from cairo/test/clip-zero.c rename to 3rd-party/cairo/test/clip-zero.c diff --git a/cairo/test/clipped-group.c b/3rd-party/cairo/test/clipped-group.c similarity index 100% rename from cairo/test/clipped-group.c rename to 3rd-party/cairo/test/clipped-group.c diff --git a/cairo/test/clipped-surface.c b/3rd-party/cairo/test/clipped-surface.c similarity index 100% rename from cairo/test/clipped-surface.c rename to 3rd-party/cairo/test/clipped-surface.c diff --git a/cairo/test/clipped-trapezoids-ref.png b/3rd-party/cairo/test/clipped-trapezoids-ref.png similarity index 100% rename from cairo/test/clipped-trapezoids-ref.png rename to 3rd-party/cairo/test/clipped-trapezoids-ref.png diff --git a/cairo/test/clipped-trapezoids.c b/3rd-party/cairo/test/clipped-trapezoids.c similarity index 100% rename from cairo/test/clipped-trapezoids.c rename to 3rd-party/cairo/test/clipped-trapezoids.c diff --git a/cairo/test/close-path-current-point.c b/3rd-party/cairo/test/close-path-current-point.c similarity index 100% rename from cairo/test/close-path-current-point.c rename to 3rd-party/cairo/test/close-path-current-point.c diff --git a/cairo/test/close-path.c b/3rd-party/cairo/test/close-path.c similarity index 100% rename from cairo/test/close-path.c rename to 3rd-party/cairo/test/close-path.c diff --git a/cairo/test/composite-integer-translate-over-repeat.c b/3rd-party/cairo/test/composite-integer-translate-over-repeat.c similarity index 100% rename from cairo/test/composite-integer-translate-over-repeat.c rename to 3rd-party/cairo/test/composite-integer-translate-over-repeat.c diff --git a/cairo/test/composite-integer-translate-over.c b/3rd-party/cairo/test/composite-integer-translate-over.c similarity index 100% rename from cairo/test/composite-integer-translate-over.c rename to 3rd-party/cairo/test/composite-integer-translate-over.c diff --git a/cairo/test/composite-integer-translate-source.c b/3rd-party/cairo/test/composite-integer-translate-source.c similarity index 100% rename from cairo/test/composite-integer-translate-source.c rename to 3rd-party/cairo/test/composite-integer-translate-source.c diff --git a/cairo/test/copy-disjoint.c b/3rd-party/cairo/test/copy-disjoint.c similarity index 100% rename from cairo/test/copy-disjoint.c rename to 3rd-party/cairo/test/copy-disjoint.c diff --git a/cairo/test/copy-path.c b/3rd-party/cairo/test/copy-path.c similarity index 100% rename from cairo/test/copy-path.c rename to 3rd-party/cairo/test/copy-path.c diff --git a/cairo/test/coverage.c b/3rd-party/cairo/test/coverage.c similarity index 100% rename from cairo/test/coverage.c rename to 3rd-party/cairo/test/coverage.c diff --git a/cairo/test/create-for-stream.c b/3rd-party/cairo/test/create-for-stream.c similarity index 100% rename from cairo/test/create-for-stream.c rename to 3rd-party/cairo/test/create-for-stream.c diff --git a/cairo/test/create-from-png-stream.c b/3rd-party/cairo/test/create-from-png-stream.c similarity index 100% rename from cairo/test/create-from-png-stream.c rename to 3rd-party/cairo/test/create-from-png-stream.c diff --git a/cairo/test/create-from-png.c b/3rd-party/cairo/test/create-from-png.c similarity index 100% rename from cairo/test/create-from-png.c rename to 3rd-party/cairo/test/create-from-png.c diff --git a/cairo/test/culled-glyphs.c b/3rd-party/cairo/test/culled-glyphs.c similarity index 100% rename from cairo/test/culled-glyphs.c rename to 3rd-party/cairo/test/culled-glyphs.c diff --git a/cairo/test/curve-to-as-line-to.c b/3rd-party/cairo/test/curve-to-as-line-to.c similarity index 100% rename from cairo/test/curve-to-as-line-to.c rename to 3rd-party/cairo/test/curve-to-as-line-to.c diff --git a/cairo/test/dash-caps-joins.c b/3rd-party/cairo/test/dash-caps-joins.c similarity index 100% rename from cairo/test/dash-caps-joins.c rename to 3rd-party/cairo/test/dash-caps-joins.c diff --git a/cairo/test/dash-curve.c b/3rd-party/cairo/test/dash-curve.c similarity index 100% rename from cairo/test/dash-curve.c rename to 3rd-party/cairo/test/dash-curve.c diff --git a/cairo/test/dash-infinite-loop.c b/3rd-party/cairo/test/dash-infinite-loop.c similarity index 100% rename from cairo/test/dash-infinite-loop.c rename to 3rd-party/cairo/test/dash-infinite-loop.c diff --git a/cairo/test/dash-no-dash.c b/3rd-party/cairo/test/dash-no-dash.c similarity index 100% rename from cairo/test/dash-no-dash.c rename to 3rd-party/cairo/test/dash-no-dash.c diff --git a/cairo/test/dash-offset-negative.c b/3rd-party/cairo/test/dash-offset-negative.c similarity index 100% rename from cairo/test/dash-offset-negative.c rename to 3rd-party/cairo/test/dash-offset-negative.c diff --git a/cairo/test/dash-offset.c b/3rd-party/cairo/test/dash-offset.c similarity index 100% rename from cairo/test/dash-offset.c rename to 3rd-party/cairo/test/dash-offset.c diff --git a/cairo/test/dash-scale.c b/3rd-party/cairo/test/dash-scale.c similarity index 100% rename from cairo/test/dash-scale.c rename to 3rd-party/cairo/test/dash-scale.c diff --git a/cairo/test/dash-state.c b/3rd-party/cairo/test/dash-state.c similarity index 100% rename from cairo/test/dash-state.c rename to 3rd-party/cairo/test/dash-state.c diff --git a/cairo/test/dash-zero-length.c b/3rd-party/cairo/test/dash-zero-length.c similarity index 100% rename from cairo/test/dash-zero-length.c rename to 3rd-party/cairo/test/dash-zero-length.c diff --git a/cairo/test/degenerate-arc.c b/3rd-party/cairo/test/degenerate-arc.c similarity index 100% rename from cairo/test/degenerate-arc.c rename to 3rd-party/cairo/test/degenerate-arc.c diff --git a/cairo/test/degenerate-arcs.c b/3rd-party/cairo/test/degenerate-arcs.c similarity index 100% rename from cairo/test/degenerate-arcs.c rename to 3rd-party/cairo/test/degenerate-arcs.c diff --git a/cairo/test/degenerate-curve-to.c b/3rd-party/cairo/test/degenerate-curve-to.c similarity index 100% rename from cairo/test/degenerate-curve-to.c rename to 3rd-party/cairo/test/degenerate-curve-to.c diff --git a/cairo/test/degenerate-dash.c b/3rd-party/cairo/test/degenerate-dash.c similarity index 100% rename from cairo/test/degenerate-dash.c rename to 3rd-party/cairo/test/degenerate-dash.c diff --git a/cairo/test/degenerate-linear-gradient.c b/3rd-party/cairo/test/degenerate-linear-gradient.c similarity index 100% rename from cairo/test/degenerate-linear-gradient.c rename to 3rd-party/cairo/test/degenerate-linear-gradient.c diff --git a/cairo/test/degenerate-path.c b/3rd-party/cairo/test/degenerate-path.c similarity index 100% rename from cairo/test/degenerate-path.c rename to 3rd-party/cairo/test/degenerate-path.c diff --git a/cairo/test/degenerate-pen.c b/3rd-party/cairo/test/degenerate-pen.c similarity index 100% rename from cairo/test/degenerate-pen.c rename to 3rd-party/cairo/test/degenerate-pen.c diff --git a/cairo/test/degenerate-radial-gradient.c b/3rd-party/cairo/test/degenerate-radial-gradient.c similarity index 100% rename from cairo/test/degenerate-radial-gradient.c rename to 3rd-party/cairo/test/degenerate-radial-gradient.c diff --git a/cairo/test/degenerate-rel-curve-to.c b/3rd-party/cairo/test/degenerate-rel-curve-to.c similarity index 100% rename from cairo/test/degenerate-rel-curve-to.c rename to 3rd-party/cairo/test/degenerate-rel-curve-to.c diff --git a/cairo/test/degenerate-solid-dash.c b/3rd-party/cairo/test/degenerate-solid-dash.c similarity index 100% rename from cairo/test/degenerate-solid-dash.c rename to 3rd-party/cairo/test/degenerate-solid-dash.c diff --git a/cairo/test/device-offset-fractional.c b/3rd-party/cairo/test/device-offset-fractional.c similarity index 100% rename from cairo/test/device-offset-fractional.c rename to 3rd-party/cairo/test/device-offset-fractional.c diff --git a/cairo/test/device-offset-positive.c b/3rd-party/cairo/test/device-offset-positive.c similarity index 100% rename from cairo/test/device-offset-positive.c rename to 3rd-party/cairo/test/device-offset-positive.c diff --git a/cairo/test/device-offset-scale.c b/3rd-party/cairo/test/device-offset-scale.c similarity index 100% rename from cairo/test/device-offset-scale.c rename to 3rd-party/cairo/test/device-offset-scale.c diff --git a/cairo/test/device-offset.c b/3rd-party/cairo/test/device-offset.c similarity index 100% rename from cairo/test/device-offset.c rename to 3rd-party/cairo/test/device-offset.c diff --git a/cairo/test/drunkard-tails.c b/3rd-party/cairo/test/drunkard-tails.c similarity index 100% rename from cairo/test/drunkard-tails.c rename to 3rd-party/cairo/test/drunkard-tails.c diff --git a/cairo/test/error-setters.c b/3rd-party/cairo/test/error-setters.c similarity index 100% rename from cairo/test/error-setters.c rename to 3rd-party/cairo/test/error-setters.c diff --git a/cairo/test/extend-pad-border.c b/3rd-party/cairo/test/extend-pad-border.c similarity index 100% rename from cairo/test/extend-pad-border.c rename to 3rd-party/cairo/test/extend-pad-border.c diff --git a/cairo/test/extend-pad-similar.c b/3rd-party/cairo/test/extend-pad-similar.c similarity index 100% rename from cairo/test/extend-pad-similar.c rename to 3rd-party/cairo/test/extend-pad-similar.c diff --git a/cairo/test/extend-pad.c b/3rd-party/cairo/test/extend-pad.c similarity index 100% rename from cairo/test/extend-pad.c rename to 3rd-party/cairo/test/extend-pad.c diff --git a/cairo/test/extend-reflect-similar.c b/3rd-party/cairo/test/extend-reflect-similar.c similarity index 100% rename from cairo/test/extend-reflect-similar.c rename to 3rd-party/cairo/test/extend-reflect-similar.c diff --git a/cairo/test/extend-reflect.c b/3rd-party/cairo/test/extend-reflect.c similarity index 100% rename from cairo/test/extend-reflect.c rename to 3rd-party/cairo/test/extend-reflect.c diff --git a/cairo/test/extend-repeat-similar.c b/3rd-party/cairo/test/extend-repeat-similar.c similarity index 100% rename from cairo/test/extend-repeat-similar.c rename to 3rd-party/cairo/test/extend-repeat-similar.c diff --git a/cairo/test/extend-repeat.c b/3rd-party/cairo/test/extend-repeat.c similarity index 100% rename from cairo/test/extend-repeat.c rename to 3rd-party/cairo/test/extend-repeat.c diff --git a/cairo/test/extended-blend.c b/3rd-party/cairo/test/extended-blend.c similarity index 100% rename from cairo/test/extended-blend.c rename to 3rd-party/cairo/test/extended-blend.c diff --git a/cairo/test/fallback-resolution.c b/3rd-party/cairo/test/fallback-resolution.c similarity index 100% rename from cairo/test/fallback-resolution.c rename to 3rd-party/cairo/test/fallback-resolution.c diff --git a/cairo/test/fallback.c b/3rd-party/cairo/test/fallback.c similarity index 100% rename from cairo/test/fallback.c rename to 3rd-party/cairo/test/fallback.c diff --git a/cairo/test/fill-alpha-pattern.c b/3rd-party/cairo/test/fill-alpha-pattern.c similarity index 100% rename from cairo/test/fill-alpha-pattern.c rename to 3rd-party/cairo/test/fill-alpha-pattern.c diff --git a/cairo/test/fill-alpha.c b/3rd-party/cairo/test/fill-alpha.c similarity index 100% rename from cairo/test/fill-alpha.c rename to 3rd-party/cairo/test/fill-alpha.c diff --git a/cairo/test/fill-and-stroke-alpha-add.c b/3rd-party/cairo/test/fill-and-stroke-alpha-add.c similarity index 100% rename from cairo/test/fill-and-stroke-alpha-add.c rename to 3rd-party/cairo/test/fill-and-stroke-alpha-add.c diff --git a/cairo/test/fill-and-stroke-alpha.c b/3rd-party/cairo/test/fill-and-stroke-alpha.c similarity index 100% rename from cairo/test/fill-and-stroke-alpha.c rename to 3rd-party/cairo/test/fill-and-stroke-alpha.c diff --git a/cairo/test/fill-and-stroke.c b/3rd-party/cairo/test/fill-and-stroke.c similarity index 100% rename from cairo/test/fill-and-stroke.c rename to 3rd-party/cairo/test/fill-and-stroke.c diff --git a/cairo/test/fill-degenerate-sort-order.c b/3rd-party/cairo/test/fill-degenerate-sort-order.c similarity index 100% rename from cairo/test/fill-degenerate-sort-order.c rename to 3rd-party/cairo/test/fill-degenerate-sort-order.c diff --git a/cairo/test/fill-disjoint.c b/3rd-party/cairo/test/fill-disjoint.c similarity index 100% rename from cairo/test/fill-disjoint.c rename to 3rd-party/cairo/test/fill-disjoint.c diff --git a/cairo/test/fill-empty.c b/3rd-party/cairo/test/fill-empty.c similarity index 100% rename from cairo/test/fill-empty.c rename to 3rd-party/cairo/test/fill-empty.c diff --git a/cairo/test/fill-image.c b/3rd-party/cairo/test/fill-image.c similarity index 100% rename from cairo/test/fill-image.c rename to 3rd-party/cairo/test/fill-image.c diff --git a/cairo/test/fill-missed-stop.c b/3rd-party/cairo/test/fill-missed-stop.c similarity index 100% rename from cairo/test/fill-missed-stop.c rename to 3rd-party/cairo/test/fill-missed-stop.c diff --git a/cairo/test/fill-rule.c b/3rd-party/cairo/test/fill-rule.c similarity index 100% rename from cairo/test/fill-rule.c rename to 3rd-party/cairo/test/fill-rule.c diff --git a/cairo/test/filter-bilinear-extents.c b/3rd-party/cairo/test/filter-bilinear-extents.c similarity index 100% rename from cairo/test/filter-bilinear-extents.c rename to 3rd-party/cairo/test/filter-bilinear-extents.c diff --git a/cairo/test/filter-nearest-offset.c b/3rd-party/cairo/test/filter-nearest-offset.c similarity index 100% rename from cairo/test/filter-nearest-offset.c rename to 3rd-party/cairo/test/filter-nearest-offset.c diff --git a/cairo/test/filter-nearest-transformed.c b/3rd-party/cairo/test/filter-nearest-transformed.c similarity index 100% rename from cairo/test/filter-nearest-transformed.c rename to 3rd-party/cairo/test/filter-nearest-transformed.c diff --git a/cairo/test/finer-grained-fallbacks.c b/3rd-party/cairo/test/finer-grained-fallbacks.c similarity index 100% rename from cairo/test/finer-grained-fallbacks.c rename to 3rd-party/cairo/test/finer-grained-fallbacks.c diff --git a/cairo/test/font-face-get-type.c b/3rd-party/cairo/test/font-face-get-type.c similarity index 100% rename from cairo/test/font-face-get-type.c rename to 3rd-party/cairo/test/font-face-get-type.c diff --git a/cairo/test/font-matrix-translation.c b/3rd-party/cairo/test/font-matrix-translation.c similarity index 100% rename from cairo/test/font-matrix-translation.c rename to 3rd-party/cairo/test/font-matrix-translation.c diff --git a/cairo/test/font-options.c b/3rd-party/cairo/test/font-options.c similarity index 100% rename from cairo/test/font-options.c rename to 3rd-party/cairo/test/font-options.c diff --git a/cairo/test/ft-font-create-for-ft-face.c b/3rd-party/cairo/test/ft-font-create-for-ft-face.c similarity index 100% rename from cairo/test/ft-font-create-for-ft-face.c rename to 3rd-party/cairo/test/ft-font-create-for-ft-face.c diff --git a/cairo/test/ft-show-glyphs-positioning.c b/3rd-party/cairo/test/ft-show-glyphs-positioning.c similarity index 100% rename from cairo/test/ft-show-glyphs-positioning.c rename to 3rd-party/cairo/test/ft-show-glyphs-positioning.c diff --git a/cairo/test/ft-show-glyphs-table.c b/3rd-party/cairo/test/ft-show-glyphs-table.c similarity index 100% rename from cairo/test/ft-show-glyphs-table.c rename to 3rd-party/cairo/test/ft-show-glyphs-table.c diff --git a/cairo/test/ft-text-antialias-none.c b/3rd-party/cairo/test/ft-text-antialias-none.c similarity index 100% rename from cairo/test/ft-text-antialias-none.c rename to 3rd-party/cairo/test/ft-text-antialias-none.c diff --git a/cairo/test/ft-text-vertical-layout-type1.c b/3rd-party/cairo/test/ft-text-vertical-layout-type1.c similarity index 100% rename from cairo/test/ft-text-vertical-layout-type1.c rename to 3rd-party/cairo/test/ft-text-vertical-layout-type1.c diff --git a/cairo/test/ft-text-vertical-layout-type3.c b/3rd-party/cairo/test/ft-text-vertical-layout-type3.c similarity index 100% rename from cairo/test/ft-text-vertical-layout-type3.c rename to 3rd-party/cairo/test/ft-text-vertical-layout-type3.c diff --git a/cairo/test/generate_refs.sh b/3rd-party/cairo/test/generate_refs.sh similarity index 100% rename from cairo/test/generate_refs.sh rename to 3rd-party/cairo/test/generate_refs.sh diff --git a/cairo/test/get-and-set.c b/3rd-party/cairo/test/get-and-set.c similarity index 100% rename from cairo/test/get-and-set.c rename to 3rd-party/cairo/test/get-and-set.c diff --git a/cairo/test/get-clip.c b/3rd-party/cairo/test/get-clip.c similarity index 100% rename from cairo/test/get-clip.c rename to 3rd-party/cairo/test/get-clip.c diff --git a/cairo/test/get-group-target.c b/3rd-party/cairo/test/get-group-target.c similarity index 100% rename from cairo/test/get-group-target.c rename to 3rd-party/cairo/test/get-group-target.c diff --git a/cairo/test/get-path-extents.c b/3rd-party/cairo/test/get-path-extents.c similarity index 100% rename from cairo/test/get-path-extents.c rename to 3rd-party/cairo/test/get-path-extents.c diff --git a/cairo/test/get-xrender-format.c b/3rd-party/cairo/test/get-xrender-format.c similarity index 100% rename from cairo/test/get-xrender-format.c rename to 3rd-party/cairo/test/get-xrender-format.c diff --git a/cairo/test/gl-device-release.c b/3rd-party/cairo/test/gl-device-release.c similarity index 100% rename from cairo/test/gl-device-release.c rename to 3rd-party/cairo/test/gl-device-release.c diff --git a/cairo/test/gl-oversized-surface.c b/3rd-party/cairo/test/gl-oversized-surface.c similarity index 100% rename from cairo/test/gl-oversized-surface.c rename to 3rd-party/cairo/test/gl-oversized-surface.c diff --git a/cairo/test/gl-surface-source.c b/3rd-party/cairo/test/gl-surface-source.c similarity index 100% rename from cairo/test/gl-surface-source.c rename to 3rd-party/cairo/test/gl-surface-source.c diff --git a/cairo/test/glyph-cache-pressure.c b/3rd-party/cairo/test/glyph-cache-pressure.c similarity index 100% rename from cairo/test/glyph-cache-pressure.c rename to 3rd-party/cairo/test/glyph-cache-pressure.c diff --git a/cairo/test/gradient-alpha.c b/3rd-party/cairo/test/gradient-alpha.c similarity index 100% rename from cairo/test/gradient-alpha.c rename to 3rd-party/cairo/test/gradient-alpha.c diff --git a/cairo/test/gradient-constant-alpha.c b/3rd-party/cairo/test/gradient-constant-alpha.c similarity index 100% rename from cairo/test/gradient-constant-alpha.c rename to 3rd-party/cairo/test/gradient-constant-alpha.c diff --git a/cairo/test/gradient-zero-stops-mask.c b/3rd-party/cairo/test/gradient-zero-stops-mask.c similarity index 100% rename from cairo/test/gradient-zero-stops-mask.c rename to 3rd-party/cairo/test/gradient-zero-stops-mask.c diff --git a/cairo/test/gradient-zero-stops.c b/3rd-party/cairo/test/gradient-zero-stops.c similarity index 100% rename from cairo/test/gradient-zero-stops.c rename to 3rd-party/cairo/test/gradient-zero-stops.c diff --git a/cairo/test/group-clip.c b/3rd-party/cairo/test/group-clip.c similarity index 100% rename from cairo/test/group-clip.c rename to 3rd-party/cairo/test/group-clip.c diff --git a/cairo/test/group-paint.c b/3rd-party/cairo/test/group-paint.c similarity index 100% rename from cairo/test/group-paint.c rename to 3rd-party/cairo/test/group-paint.c diff --git a/cairo/test/group-state.c b/3rd-party/cairo/test/group-state.c similarity index 100% rename from cairo/test/group-state.c rename to 3rd-party/cairo/test/group-state.c diff --git a/cairo/test/group-unaligned.c b/3rd-party/cairo/test/group-unaligned.c similarity index 100% rename from cairo/test/group-unaligned.c rename to 3rd-party/cairo/test/group-unaligned.c diff --git a/cairo/test/half-coverage.c b/3rd-party/cairo/test/half-coverage.c similarity index 100% rename from cairo/test/half-coverage.c rename to 3rd-party/cairo/test/half-coverage.c diff --git a/cairo/test/halo.c b/3rd-party/cairo/test/halo.c similarity index 100% rename from cairo/test/halo.c rename to 3rd-party/cairo/test/halo.c diff --git a/cairo/test/hatchings.c b/3rd-party/cairo/test/hatchings.c similarity index 100% rename from cairo/test/hatchings.c rename to 3rd-party/cairo/test/hatchings.c diff --git a/cairo/test/horizontal-clip.c b/3rd-party/cairo/test/horizontal-clip.c similarity index 100% rename from cairo/test/horizontal-clip.c rename to 3rd-party/cairo/test/horizontal-clip.c diff --git a/cairo/test/huge-linear.c b/3rd-party/cairo/test/huge-linear.c similarity index 100% rename from cairo/test/huge-linear.c rename to 3rd-party/cairo/test/huge-linear.c diff --git a/cairo/test/huge-radial.c b/3rd-party/cairo/test/huge-radial.c similarity index 100% rename from cairo/test/huge-radial.c rename to 3rd-party/cairo/test/huge-radial.c diff --git a/cairo/test/image-bug-710072.c b/3rd-party/cairo/test/image-bug-710072.c similarity index 100% rename from cairo/test/image-bug-710072.c rename to 3rd-party/cairo/test/image-bug-710072.c diff --git a/cairo/test/image-surface-source.c b/3rd-party/cairo/test/image-surface-source.c similarity index 100% rename from cairo/test/image-surface-source.c rename to 3rd-party/cairo/test/image-surface-source.c diff --git a/cairo/test/imagediff.c b/3rd-party/cairo/test/imagediff.c similarity index 100% rename from cairo/test/imagediff.c rename to 3rd-party/cairo/test/imagediff.c diff --git a/cairo/test/implicit-close.c b/3rd-party/cairo/test/implicit-close.c similarity index 100% rename from cairo/test/implicit-close.c rename to 3rd-party/cairo/test/implicit-close.c diff --git a/cairo/test/in-fill-empty-trapezoid.c b/3rd-party/cairo/test/in-fill-empty-trapezoid.c similarity index 100% rename from cairo/test/in-fill-empty-trapezoid.c rename to 3rd-party/cairo/test/in-fill-empty-trapezoid.c diff --git a/cairo/test/in-fill-trapezoid.c b/3rd-party/cairo/test/in-fill-trapezoid.c similarity index 100% rename from cairo/test/in-fill-trapezoid.c rename to 3rd-party/cairo/test/in-fill-trapezoid.c diff --git a/cairo/test/index.html b/3rd-party/cairo/test/index.html similarity index 100% rename from cairo/test/index.html rename to 3rd-party/cairo/test/index.html diff --git a/cairo/test/infinite-join.c b/3rd-party/cairo/test/infinite-join.c similarity index 100% rename from cairo/test/infinite-join.c rename to 3rd-party/cairo/test/infinite-join.c diff --git a/cairo/test/invalid-matrix.c b/3rd-party/cairo/test/invalid-matrix.c similarity index 100% rename from cairo/test/invalid-matrix.c rename to 3rd-party/cairo/test/invalid-matrix.c diff --git a/cairo/test/inverse-text.c b/3rd-party/cairo/test/inverse-text.c similarity index 100% rename from cairo/test/inverse-text.c rename to 3rd-party/cairo/test/inverse-text.c diff --git a/cairo/test/inverted-clip.c b/3rd-party/cairo/test/inverted-clip.c similarity index 100% rename from cairo/test/inverted-clip.c rename to 3rd-party/cairo/test/inverted-clip.c diff --git a/cairo/test/joins-loop.c b/3rd-party/cairo/test/joins-loop.c similarity index 100% rename from cairo/test/joins-loop.c rename to 3rd-party/cairo/test/joins-loop.c diff --git a/cairo/test/joins-retrace.c b/3rd-party/cairo/test/joins-retrace.c similarity index 100% rename from cairo/test/joins-retrace.c rename to 3rd-party/cairo/test/joins-retrace.c diff --git a/cairo/test/joins-star.c b/3rd-party/cairo/test/joins-star.c similarity index 100% rename from cairo/test/joins-star.c rename to 3rd-party/cairo/test/joins-star.c diff --git a/cairo/test/joins.c b/3rd-party/cairo/test/joins.c similarity index 100% rename from cairo/test/joins.c rename to 3rd-party/cairo/test/joins.c diff --git a/cairo/test/jp2.jp2 b/3rd-party/cairo/test/jp2.jp2 similarity index 100% rename from cairo/test/jp2.jp2 rename to 3rd-party/cairo/test/jp2.jp2 diff --git a/cairo/test/jpeg.jpg b/3rd-party/cairo/test/jpeg.jpg similarity index 100% rename from cairo/test/jpeg.jpg rename to 3rd-party/cairo/test/jpeg.jpg diff --git a/cairo/test/large-clip.c b/3rd-party/cairo/test/large-clip.c similarity index 100% rename from cairo/test/large-clip.c rename to 3rd-party/cairo/test/large-clip.c diff --git a/cairo/test/large-font.c b/3rd-party/cairo/test/large-font.c similarity index 100% rename from cairo/test/large-font.c rename to 3rd-party/cairo/test/large-font.c diff --git a/cairo/test/large-source-roi.c b/3rd-party/cairo/test/large-source-roi.c similarity index 100% rename from cairo/test/large-source-roi.c rename to 3rd-party/cairo/test/large-source-roi.c diff --git a/cairo/test/large-source.c b/3rd-party/cairo/test/large-source.c similarity index 100% rename from cairo/test/large-source.c rename to 3rd-party/cairo/test/large-source.c diff --git a/cairo/test/large-twin-antialias-mixed.c b/3rd-party/cairo/test/large-twin-antialias-mixed.c similarity index 100% rename from cairo/test/large-twin-antialias-mixed.c rename to 3rd-party/cairo/test/large-twin-antialias-mixed.c diff --git a/cairo/test/leaky-dash.c b/3rd-party/cairo/test/leaky-dash.c similarity index 100% rename from cairo/test/leaky-dash.c rename to 3rd-party/cairo/test/leaky-dash.c diff --git a/cairo/test/leaky-dashed-rectangle.c b/3rd-party/cairo/test/leaky-dashed-rectangle.c similarity index 100% rename from cairo/test/leaky-dashed-rectangle.c rename to 3rd-party/cairo/test/leaky-dashed-rectangle.c diff --git a/cairo/test/leaky-dashed-stroke.c b/3rd-party/cairo/test/leaky-dashed-stroke.c similarity index 100% rename from cairo/test/leaky-dashed-stroke.c rename to 3rd-party/cairo/test/leaky-dashed-stroke.c diff --git a/cairo/test/leaky-polygon.c b/3rd-party/cairo/test/leaky-polygon.c similarity index 100% rename from cairo/test/leaky-polygon.c rename to 3rd-party/cairo/test/leaky-polygon.c diff --git a/cairo/test/line-width-large-overlap.c b/3rd-party/cairo/test/line-width-large-overlap.c similarity index 100% rename from cairo/test/line-width-large-overlap.c rename to 3rd-party/cairo/test/line-width-large-overlap.c diff --git a/cairo/test/line-width-overlap.c b/3rd-party/cairo/test/line-width-overlap.c similarity index 100% rename from cairo/test/line-width-overlap.c rename to 3rd-party/cairo/test/line-width-overlap.c diff --git a/cairo/test/line-width-scale.c b/3rd-party/cairo/test/line-width-scale.c similarity index 100% rename from cairo/test/line-width-scale.c rename to 3rd-party/cairo/test/line-width-scale.c diff --git a/cairo/test/line-width-tolerance.c b/3rd-party/cairo/test/line-width-tolerance.c similarity index 100% rename from cairo/test/line-width-tolerance.c rename to 3rd-party/cairo/test/line-width-tolerance.c diff --git a/cairo/test/line-width-zero.c b/3rd-party/cairo/test/line-width-zero.c similarity index 100% rename from cairo/test/line-width-zero.c rename to 3rd-party/cairo/test/line-width-zero.c diff --git a/cairo/test/line-width.c b/3rd-party/cairo/test/line-width.c similarity index 100% rename from cairo/test/line-width.c rename to 3rd-party/cairo/test/line-width.c diff --git a/cairo/test/linear-gradient-extend.c b/3rd-party/cairo/test/linear-gradient-extend.c similarity index 100% rename from cairo/test/linear-gradient-extend.c rename to 3rd-party/cairo/test/linear-gradient-extend.c diff --git a/cairo/test/linear-gradient-large.c b/3rd-party/cairo/test/linear-gradient-large.c similarity index 100% rename from cairo/test/linear-gradient-large.c rename to 3rd-party/cairo/test/linear-gradient-large.c diff --git a/cairo/test/linear-gradient-one-stop.c b/3rd-party/cairo/test/linear-gradient-one-stop.c similarity index 100% rename from cairo/test/linear-gradient-one-stop.c rename to 3rd-party/cairo/test/linear-gradient-one-stop.c diff --git a/cairo/test/linear-gradient-reflect.c b/3rd-party/cairo/test/linear-gradient-reflect.c similarity index 100% rename from cairo/test/linear-gradient-reflect.c rename to 3rd-party/cairo/test/linear-gradient-reflect.c diff --git a/cairo/test/linear-gradient-subset.c b/3rd-party/cairo/test/linear-gradient-subset.c similarity index 100% rename from cairo/test/linear-gradient-subset.c rename to 3rd-party/cairo/test/linear-gradient-subset.c diff --git a/cairo/test/linear-gradient.c b/3rd-party/cairo/test/linear-gradient.c similarity index 100% rename from cairo/test/linear-gradient.c rename to 3rd-party/cairo/test/linear-gradient.c diff --git a/cairo/test/linear-step-function.c b/3rd-party/cairo/test/linear-step-function.c similarity index 100% rename from cairo/test/linear-step-function.c rename to 3rd-party/cairo/test/linear-step-function.c diff --git a/cairo/test/linear-uniform.c b/3rd-party/cairo/test/linear-uniform.c similarity index 100% rename from cairo/test/linear-uniform.c rename to 3rd-party/cairo/test/linear-uniform.c diff --git a/cairo/test/long-dashed-lines.c b/3rd-party/cairo/test/long-dashed-lines.c similarity index 100% rename from cairo/test/long-dashed-lines.c rename to 3rd-party/cairo/test/long-dashed-lines.c diff --git a/cairo/test/long-lines.c b/3rd-party/cairo/test/long-lines.c similarity index 100% rename from cairo/test/long-lines.c rename to 3rd-party/cairo/test/long-lines.c diff --git a/cairo/test/make-cairo-test-constructors.sh b/3rd-party/cairo/test/make-cairo-test-constructors.sh similarity index 100% rename from cairo/test/make-cairo-test-constructors.sh rename to 3rd-party/cairo/test/make-cairo-test-constructors.sh diff --git a/cairo/test/map-to-image.c b/3rd-party/cairo/test/map-to-image.c similarity index 100% rename from cairo/test/map-to-image.c rename to 3rd-party/cairo/test/map-to-image.c diff --git a/cairo/test/mask-alpha.c b/3rd-party/cairo/test/mask-alpha.c similarity index 100% rename from cairo/test/mask-alpha.c rename to 3rd-party/cairo/test/mask-alpha.c diff --git a/cairo/test/mask-ctm.c b/3rd-party/cairo/test/mask-ctm.c similarity index 100% rename from cairo/test/mask-ctm.c rename to 3rd-party/cairo/test/mask-ctm.c diff --git a/cairo/test/mask-glyphs.c b/3rd-party/cairo/test/mask-glyphs.c similarity index 100% rename from cairo/test/mask-glyphs.c rename to 3rd-party/cairo/test/mask-glyphs.c diff --git a/cairo/test/mask-surface-ctm.c b/3rd-party/cairo/test/mask-surface-ctm.c similarity index 100% rename from cairo/test/mask-surface-ctm.c rename to 3rd-party/cairo/test/mask-surface-ctm.c diff --git a/cairo/test/mask-transformed-image.c b/3rd-party/cairo/test/mask-transformed-image.c similarity index 100% rename from cairo/test/mask-transformed-image.c rename to 3rd-party/cairo/test/mask-transformed-image.c diff --git a/cairo/test/mask-transformed-similar.c b/3rd-party/cairo/test/mask-transformed-similar.c similarity index 100% rename from cairo/test/mask-transformed-similar.c rename to 3rd-party/cairo/test/mask-transformed-similar.c diff --git a/cairo/test/mask.c b/3rd-party/cairo/test/mask.c similarity index 100% rename from cairo/test/mask.c rename to 3rd-party/cairo/test/mask.c diff --git a/cairo/test/mesh-pattern-accuracy.c b/3rd-party/cairo/test/mesh-pattern-accuracy.c similarity index 100% rename from cairo/test/mesh-pattern-accuracy.c rename to 3rd-party/cairo/test/mesh-pattern-accuracy.c diff --git a/cairo/test/mesh-pattern-conical.c b/3rd-party/cairo/test/mesh-pattern-conical.c similarity index 100% rename from cairo/test/mesh-pattern-conical.c rename to 3rd-party/cairo/test/mesh-pattern-conical.c diff --git a/cairo/test/mesh-pattern-control-points.c b/3rd-party/cairo/test/mesh-pattern-control-points.c similarity index 100% rename from cairo/test/mesh-pattern-control-points.c rename to 3rd-party/cairo/test/mesh-pattern-control-points.c diff --git a/cairo/test/mesh-pattern-fold.c b/3rd-party/cairo/test/mesh-pattern-fold.c similarity index 100% rename from cairo/test/mesh-pattern-fold.c rename to 3rd-party/cairo/test/mesh-pattern-fold.c diff --git a/cairo/test/mesh-pattern-overlap.c b/3rd-party/cairo/test/mesh-pattern-overlap.c similarity index 100% rename from cairo/test/mesh-pattern-overlap.c rename to 3rd-party/cairo/test/mesh-pattern-overlap.c diff --git a/cairo/test/mesh-pattern-transformed.c b/3rd-party/cairo/test/mesh-pattern-transformed.c similarity index 100% rename from cairo/test/mesh-pattern-transformed.c rename to 3rd-party/cairo/test/mesh-pattern-transformed.c diff --git a/cairo/test/mesh-pattern.c b/3rd-party/cairo/test/mesh-pattern.c similarity index 100% rename from cairo/test/mesh-pattern.c rename to 3rd-party/cairo/test/mesh-pattern.c diff --git a/cairo/test/mime-data.c b/3rd-party/cairo/test/mime-data.c similarity index 100% rename from cairo/test/mime-data.c rename to 3rd-party/cairo/test/mime-data.c diff --git a/cairo/test/mime-surface-api.c b/3rd-party/cairo/test/mime-surface-api.c similarity index 100% rename from cairo/test/mime-surface-api.c rename to 3rd-party/cairo/test/mime-surface-api.c diff --git a/cairo/test/miter-precision.c b/3rd-party/cairo/test/miter-precision.c similarity index 100% rename from cairo/test/miter-precision.c rename to 3rd-party/cairo/test/miter-precision.c diff --git a/cairo/test/move-to-show-surface.c b/3rd-party/cairo/test/move-to-show-surface.c similarity index 100% rename from cairo/test/move-to-show-surface.c rename to 3rd-party/cairo/test/move-to-show-surface.c diff --git a/cairo/test/multi-page.c b/3rd-party/cairo/test/multi-page.c similarity index 100% rename from cairo/test/multi-page.c rename to 3rd-party/cairo/test/multi-page.c diff --git a/cairo/test/negative-stride-image.c b/3rd-party/cairo/test/negative-stride-image.c similarity index 100% rename from cairo/test/negative-stride-image.c rename to 3rd-party/cairo/test/negative-stride-image.c diff --git a/cairo/test/new-sub-path.c b/3rd-party/cairo/test/new-sub-path.c similarity index 100% rename from cairo/test/new-sub-path.c rename to 3rd-party/cairo/test/new-sub-path.c diff --git a/cairo/test/nil-surface.c b/3rd-party/cairo/test/nil-surface.c similarity index 100% rename from cairo/test/nil-surface.c rename to 3rd-party/cairo/test/nil-surface.c diff --git a/cairo/test/operator-alpha-alpha.c b/3rd-party/cairo/test/operator-alpha-alpha.c similarity index 100% rename from cairo/test/operator-alpha-alpha.c rename to 3rd-party/cairo/test/operator-alpha-alpha.c diff --git a/cairo/test/operator-alpha.c b/3rd-party/cairo/test/operator-alpha.c similarity index 100% rename from cairo/test/operator-alpha.c rename to 3rd-party/cairo/test/operator-alpha.c diff --git a/cairo/test/operator-clear.c b/3rd-party/cairo/test/operator-clear.c similarity index 100% rename from cairo/test/operator-clear.c rename to 3rd-party/cairo/test/operator-clear.c diff --git a/cairo/test/operator-source.c b/3rd-party/cairo/test/operator-source.c similarity index 100% rename from cairo/test/operator-source.c rename to 3rd-party/cairo/test/operator-source.c diff --git a/cairo/test/operator.c b/3rd-party/cairo/test/operator.c similarity index 100% rename from cairo/test/operator.c rename to 3rd-party/cairo/test/operator.c diff --git a/cairo/test/outline-tolerance.c b/3rd-party/cairo/test/outline-tolerance.c similarity index 100% rename from cairo/test/outline-tolerance.c rename to 3rd-party/cairo/test/outline-tolerance.c diff --git a/cairo/test/over-above-source.c b/3rd-party/cairo/test/over-above-source.c similarity index 100% rename from cairo/test/over-above-source.c rename to 3rd-party/cairo/test/over-above-source.c diff --git a/cairo/test/over-around-source.c b/3rd-party/cairo/test/over-around-source.c similarity index 100% rename from cairo/test/over-around-source.c rename to 3rd-party/cairo/test/over-around-source.c diff --git a/cairo/test/over-below-source.c b/3rd-party/cairo/test/over-below-source.c similarity index 100% rename from cairo/test/over-below-source.c rename to 3rd-party/cairo/test/over-below-source.c diff --git a/cairo/test/over-between-source.c b/3rd-party/cairo/test/over-between-source.c similarity index 100% rename from cairo/test/over-between-source.c rename to 3rd-party/cairo/test/over-between-source.c diff --git a/cairo/test/overlapping-boxes.c b/3rd-party/cairo/test/overlapping-boxes.c similarity index 100% rename from cairo/test/overlapping-boxes.c rename to 3rd-party/cairo/test/overlapping-boxes.c diff --git a/cairo/test/overlapping-dash-caps.c b/3rd-party/cairo/test/overlapping-dash-caps.c similarity index 100% rename from cairo/test/overlapping-dash-caps.c rename to 3rd-party/cairo/test/overlapping-dash-caps.c diff --git a/cairo/test/overlapping-glyphs.c b/3rd-party/cairo/test/overlapping-glyphs.c similarity index 100% rename from cairo/test/overlapping-glyphs.c rename to 3rd-party/cairo/test/overlapping-glyphs.c diff --git a/cairo/test/paint-clip-fill.c b/3rd-party/cairo/test/paint-clip-fill.c similarity index 100% rename from cairo/test/paint-clip-fill.c rename to 3rd-party/cairo/test/paint-clip-fill.c diff --git a/cairo/test/paint-repeat.c b/3rd-party/cairo/test/paint-repeat.c similarity index 100% rename from cairo/test/paint-repeat.c rename to 3rd-party/cairo/test/paint-repeat.c diff --git a/cairo/test/paint-source-alpha.c b/3rd-party/cairo/test/paint-source-alpha.c similarity index 100% rename from cairo/test/paint-source-alpha.c rename to 3rd-party/cairo/test/paint-source-alpha.c diff --git a/cairo/test/paint-with-alpha.c b/3rd-party/cairo/test/paint-with-alpha.c similarity index 100% rename from cairo/test/paint-with-alpha.c rename to 3rd-party/cairo/test/paint-with-alpha.c diff --git a/cairo/test/paint.c b/3rd-party/cairo/test/paint.c similarity index 100% rename from cairo/test/paint.c rename to 3rd-party/cairo/test/paint.c diff --git a/cairo/test/partial-clip-text.c b/3rd-party/cairo/test/partial-clip-text.c similarity index 100% rename from cairo/test/partial-clip-text.c rename to 3rd-party/cairo/test/partial-clip-text.c diff --git a/cairo/test/partial-coverage.c b/3rd-party/cairo/test/partial-coverage.c similarity index 100% rename from cairo/test/partial-coverage.c rename to 3rd-party/cairo/test/partial-coverage.c diff --git a/cairo/test/pass-through.c b/3rd-party/cairo/test/pass-through.c similarity index 100% rename from cairo/test/pass-through.c rename to 3rd-party/cairo/test/pass-through.c diff --git a/cairo/test/path-append.c b/3rd-party/cairo/test/path-append.c similarity index 100% rename from cairo/test/path-append.c rename to 3rd-party/cairo/test/path-append.c diff --git a/cairo/test/path-precision.c b/3rd-party/cairo/test/path-precision.c similarity index 100% rename from cairo/test/path-precision.c rename to 3rd-party/cairo/test/path-precision.c diff --git a/cairo/test/path-stroke-twice.c b/3rd-party/cairo/test/path-stroke-twice.c similarity index 100% rename from cairo/test/path-stroke-twice.c rename to 3rd-party/cairo/test/path-stroke-twice.c diff --git a/cairo/test/pattern-get-type.c b/3rd-party/cairo/test/pattern-get-type.c similarity index 100% rename from cairo/test/pattern-get-type.c rename to 3rd-party/cairo/test/pattern-get-type.c diff --git a/cairo/test/pattern-getters.c b/3rd-party/cairo/test/pattern-getters.c similarity index 100% rename from cairo/test/pattern-getters.c rename to 3rd-party/cairo/test/pattern-getters.c diff --git a/cairo/test/pdf-features.c b/3rd-party/cairo/test/pdf-features.c similarity index 100% rename from cairo/test/pdf-features.c rename to 3rd-party/cairo/test/pdf-features.c diff --git a/cairo/test/pdf-isolated-group.c b/3rd-party/cairo/test/pdf-isolated-group.c similarity index 100% rename from cairo/test/pdf-isolated-group.c rename to 3rd-party/cairo/test/pdf-isolated-group.c diff --git a/cairo/test/pdf-mime-data.c b/3rd-party/cairo/test/pdf-mime-data.c similarity index 100% rename from cairo/test/pdf-mime-data.c rename to 3rd-party/cairo/test/pdf-mime-data.c diff --git a/cairo/test/pdf-surface-source.c b/3rd-party/cairo/test/pdf-surface-source.c similarity index 100% rename from cairo/test/pdf-surface-source.c rename to 3rd-party/cairo/test/pdf-surface-source.c diff --git a/cairo/test/pdf2png.c b/3rd-party/cairo/test/pdf2png.c similarity index 100% rename from cairo/test/pdf2png.c rename to 3rd-party/cairo/test/pdf2png.c diff --git a/cairo/test/pdiff/.gitignore b/3rd-party/cairo/test/pdiff/.gitignore similarity index 100% rename from cairo/test/pdiff/.gitignore rename to 3rd-party/cairo/test/pdiff/.gitignore diff --git a/cairo/test/pdiff/CMakeLists.txt b/3rd-party/cairo/test/pdiff/CMakeLists.txt similarity index 100% rename from cairo/test/pdiff/CMakeLists.txt rename to 3rd-party/cairo/test/pdiff/CMakeLists.txt diff --git a/cairo/test/pdiff/Makefile.am b/3rd-party/cairo/test/pdiff/Makefile.am similarity index 100% rename from cairo/test/pdiff/Makefile.am rename to 3rd-party/cairo/test/pdiff/Makefile.am diff --git a/cairo/test/pdiff/Makefile.win32 b/3rd-party/cairo/test/pdiff/Makefile.win32 similarity index 100% rename from cairo/test/pdiff/Makefile.win32 rename to 3rd-party/cairo/test/pdiff/Makefile.win32 diff --git a/cairo/test/pdiff/README.txt b/3rd-party/cairo/test/pdiff/README.txt similarity index 100% rename from cairo/test/pdiff/README.txt rename to 3rd-party/cairo/test/pdiff/README.txt diff --git a/cairo/test/pdiff/args.c b/3rd-party/cairo/test/pdiff/args.c similarity index 100% rename from cairo/test/pdiff/args.c rename to 3rd-party/cairo/test/pdiff/args.c diff --git a/cairo/test/pdiff/args.h b/3rd-party/cairo/test/pdiff/args.h similarity index 100% rename from cairo/test/pdiff/args.h rename to 3rd-party/cairo/test/pdiff/args.h diff --git a/cairo/test/pdiff/gpl.txt b/3rd-party/cairo/test/pdiff/gpl.txt similarity index 100% rename from cairo/test/pdiff/gpl.txt rename to 3rd-party/cairo/test/pdiff/gpl.txt diff --git a/cairo/test/pdiff/lpyramid.c b/3rd-party/cairo/test/pdiff/lpyramid.c similarity index 100% rename from cairo/test/pdiff/lpyramid.c rename to 3rd-party/cairo/test/pdiff/lpyramid.c diff --git a/cairo/test/pdiff/lpyramid.h b/3rd-party/cairo/test/pdiff/lpyramid.h similarity index 100% rename from cairo/test/pdiff/lpyramid.h rename to 3rd-party/cairo/test/pdiff/lpyramid.h diff --git a/cairo/test/pdiff/pdiff.c b/3rd-party/cairo/test/pdiff/pdiff.c similarity index 100% rename from cairo/test/pdiff/pdiff.c rename to 3rd-party/cairo/test/pdiff/pdiff.c diff --git a/cairo/test/pdiff/pdiff.h b/3rd-party/cairo/test/pdiff/pdiff.h similarity index 100% rename from cairo/test/pdiff/pdiff.h rename to 3rd-party/cairo/test/pdiff/pdiff.h diff --git a/cairo/test/pdiff/perceptualdiff.c b/3rd-party/cairo/test/pdiff/perceptualdiff.c similarity index 100% rename from cairo/test/pdiff/perceptualdiff.c rename to 3rd-party/cairo/test/pdiff/perceptualdiff.c diff --git a/cairo/test/pixman-rotate.c b/3rd-party/cairo/test/pixman-rotate.c similarity index 100% rename from cairo/test/pixman-rotate.c rename to 3rd-party/cairo/test/pixman-rotate.c diff --git a/cairo/test/png-flatten.c b/3rd-party/cairo/test/png-flatten.c similarity index 100% rename from cairo/test/png-flatten.c rename to 3rd-party/cairo/test/png-flatten.c diff --git a/cairo/test/png.c b/3rd-party/cairo/test/png.c similarity index 100% rename from cairo/test/png.c rename to 3rd-party/cairo/test/png.c diff --git a/cairo/test/png.png b/3rd-party/cairo/test/png.png similarity index 100% rename from cairo/test/png.png rename to 3rd-party/cairo/test/png.png diff --git a/cairo/test/ps-eps.c b/3rd-party/cairo/test/ps-eps.c similarity index 100% rename from cairo/test/ps-eps.c rename to 3rd-party/cairo/test/ps-eps.c diff --git a/cairo/test/ps-features.c b/3rd-party/cairo/test/ps-features.c similarity index 100% rename from cairo/test/ps-features.c rename to 3rd-party/cairo/test/ps-features.c diff --git a/cairo/test/ps-surface-source.c b/3rd-party/cairo/test/ps-surface-source.c similarity index 100% rename from cairo/test/ps-surface-source.c rename to 3rd-party/cairo/test/ps-surface-source.c diff --git a/cairo/test/ps2png.c b/3rd-party/cairo/test/ps2png.c similarity index 100% rename from cairo/test/ps2png.c rename to 3rd-party/cairo/test/ps2png.c diff --git a/cairo/test/pthread-same-source.c b/3rd-party/cairo/test/pthread-same-source.c similarity index 100% rename from cairo/test/pthread-same-source.c rename to 3rd-party/cairo/test/pthread-same-source.c diff --git a/cairo/test/pthread-show-text.c b/3rd-party/cairo/test/pthread-show-text.c similarity index 100% rename from cairo/test/pthread-show-text.c rename to 3rd-party/cairo/test/pthread-show-text.c diff --git a/cairo/test/pthread-similar.c b/3rd-party/cairo/test/pthread-similar.c similarity index 100% rename from cairo/test/pthread-similar.c rename to 3rd-party/cairo/test/pthread-similar.c diff --git a/cairo/test/push-group-color.c b/3rd-party/cairo/test/push-group-color.c similarity index 100% rename from cairo/test/push-group-color.c rename to 3rd-party/cairo/test/push-group-color.c diff --git a/cairo/test/push-group-path-offset.c b/3rd-party/cairo/test/push-group-path-offset.c similarity index 100% rename from cairo/test/push-group-path-offset.c rename to 3rd-party/cairo/test/push-group-path-offset.c diff --git a/cairo/test/push-group.c b/3rd-party/cairo/test/push-group.c similarity index 100% rename from cairo/test/push-group.c rename to 3rd-party/cairo/test/push-group.c diff --git a/cairo/test/quartz-surface-source.c b/3rd-party/cairo/test/quartz-surface-source.c similarity index 100% rename from cairo/test/quartz-surface-source.c rename to 3rd-party/cairo/test/quartz-surface-source.c diff --git a/cairo/test/radial-gradient-extend.c b/3rd-party/cairo/test/radial-gradient-extend.c similarity index 100% rename from cairo/test/radial-gradient-extend.c rename to 3rd-party/cairo/test/radial-gradient-extend.c diff --git a/cairo/test/radial-gradient.c b/3rd-party/cairo/test/radial-gradient.c similarity index 100% rename from cairo/test/radial-gradient.c rename to 3rd-party/cairo/test/radial-gradient.c diff --git a/cairo/test/radial-outer-focus.c b/3rd-party/cairo/test/radial-outer-focus.c similarity index 100% rename from cairo/test/radial-outer-focus.c rename to 3rd-party/cairo/test/radial-outer-focus.c diff --git a/cairo/test/random-clips.c b/3rd-party/cairo/test/random-clips.c similarity index 100% rename from cairo/test/random-clips.c rename to 3rd-party/cairo/test/random-clips.c diff --git a/cairo/test/random-intersections-curves-eo.c b/3rd-party/cairo/test/random-intersections-curves-eo.c similarity index 100% rename from cairo/test/random-intersections-curves-eo.c rename to 3rd-party/cairo/test/random-intersections-curves-eo.c diff --git a/cairo/test/random-intersections-curves-nz.c b/3rd-party/cairo/test/random-intersections-curves-nz.c similarity index 100% rename from cairo/test/random-intersections-curves-nz.c rename to 3rd-party/cairo/test/random-intersections-curves-nz.c diff --git a/cairo/test/random-intersections-eo.c b/3rd-party/cairo/test/random-intersections-eo.c similarity index 100% rename from cairo/test/random-intersections-eo.c rename to 3rd-party/cairo/test/random-intersections-eo.c diff --git a/cairo/test/random-intersections-nonzero.c b/3rd-party/cairo/test/random-intersections-nonzero.c similarity index 100% rename from cairo/test/random-intersections-nonzero.c rename to 3rd-party/cairo/test/random-intersections-nonzero.c diff --git a/cairo/test/raster-source.c b/3rd-party/cairo/test/raster-source.c similarity index 100% rename from cairo/test/raster-source.c rename to 3rd-party/cairo/test/raster-source.c diff --git a/cairo/test/record-extend.c b/3rd-party/cairo/test/record-extend.c similarity index 100% rename from cairo/test/record-extend.c rename to 3rd-party/cairo/test/record-extend.c diff --git a/cairo/test/record-mesh.c b/3rd-party/cairo/test/record-mesh.c similarity index 100% rename from cairo/test/record-mesh.c rename to 3rd-party/cairo/test/record-mesh.c diff --git a/cairo/test/record.c b/3rd-party/cairo/test/record.c similarity index 100% rename from cairo/test/record.c rename to 3rd-party/cairo/test/record.c diff --git a/cairo/test/record1414x.c b/3rd-party/cairo/test/record1414x.c similarity index 100% rename from cairo/test/record1414x.c rename to 3rd-party/cairo/test/record1414x.c diff --git a/cairo/test/record2x.c b/3rd-party/cairo/test/record2x.c similarity index 100% rename from cairo/test/record2x.c rename to 3rd-party/cairo/test/record2x.c diff --git a/cairo/test/record90.c b/3rd-party/cairo/test/record90.c similarity index 100% rename from cairo/test/record90.c rename to 3rd-party/cairo/test/record90.c diff --git a/cairo/test/recordflip.c b/3rd-party/cairo/test/recordflip.c similarity index 100% rename from cairo/test/recordflip.c rename to 3rd-party/cairo/test/recordflip.c diff --git a/cairo/test/recording-surface-extend.c b/3rd-party/cairo/test/recording-surface-extend.c similarity index 100% rename from cairo/test/recording-surface-extend.c rename to 3rd-party/cairo/test/recording-surface-extend.c diff --git a/cairo/test/recording-surface-pattern.c b/3rd-party/cairo/test/recording-surface-pattern.c similarity index 100% rename from cairo/test/recording-surface-pattern.c rename to 3rd-party/cairo/test/recording-surface-pattern.c diff --git a/cairo/test/rectangle-rounding-error.c b/3rd-party/cairo/test/rectangle-rounding-error.c similarity index 100% rename from cairo/test/rectangle-rounding-error.c rename to 3rd-party/cairo/test/rectangle-rounding-error.c diff --git a/cairo/test/rectilinear-dash-scale.c b/3rd-party/cairo/test/rectilinear-dash-scale.c similarity index 100% rename from cairo/test/rectilinear-dash-scale.c rename to 3rd-party/cairo/test/rectilinear-dash-scale.c diff --git a/cairo/test/rectilinear-dash.c b/3rd-party/cairo/test/rectilinear-dash.c similarity index 100% rename from cairo/test/rectilinear-dash.c rename to 3rd-party/cairo/test/rectilinear-dash.c diff --git a/cairo/test/rectilinear-fill.c b/3rd-party/cairo/test/rectilinear-fill.c similarity index 100% rename from cairo/test/rectilinear-fill.c rename to 3rd-party/cairo/test/rectilinear-fill.c diff --git a/cairo/test/rectilinear-grid.c b/3rd-party/cairo/test/rectilinear-grid.c similarity index 100% rename from cairo/test/rectilinear-grid.c rename to 3rd-party/cairo/test/rectilinear-grid.c diff --git a/cairo/test/rectilinear-miter-limit.c b/3rd-party/cairo/test/rectilinear-miter-limit.c similarity index 100% rename from cairo/test/rectilinear-miter-limit.c rename to 3rd-party/cairo/test/rectilinear-miter-limit.c diff --git a/cairo/test/rectilinear-stroke.c b/3rd-party/cairo/test/rectilinear-stroke.c similarity index 100% rename from cairo/test/rectilinear-stroke.c rename to 3rd-party/cairo/test/rectilinear-stroke.c diff --git a/cairo/test/reference/a1-bug.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-bug.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-bug.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-bug.base.argb32.ref.png diff --git a/cairo/test/reference/a1-bug.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-bug.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-bug.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-bug.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-bug.image16.ref.png b/3rd-party/cairo/test/reference/a1-bug.image16.ref.png similarity index 100% rename from cairo/test/reference/a1-bug.image16.ref.png rename to 3rd-party/cairo/test/reference/a1-bug.image16.ref.png diff --git a/cairo/test/reference/a1-bug.mask.argb32.ref.png b/3rd-party/cairo/test/reference/a1-bug.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-bug.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-bug.mask.argb32.ref.png diff --git a/cairo/test/reference/a1-bug.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-bug.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-bug.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-bug.mask.rgb24.ref.png diff --git a/cairo/test/reference/a1-bug.quartz.xfail.png b/3rd-party/cairo/test/reference/a1-bug.quartz.xfail.png similarity index 100% rename from cairo/test/reference/a1-bug.quartz.xfail.png rename to 3rd-party/cairo/test/reference/a1-bug.quartz.xfail.png diff --git a/cairo/test/reference/a1-bug.ref.png b/3rd-party/cairo/test/reference/a1-bug.ref.png similarity index 100% rename from cairo/test/reference/a1-bug.ref.png rename to 3rd-party/cairo/test/reference/a1-bug.ref.png diff --git a/cairo/test/reference/a1-bug.traps.argb32.ref.png b/3rd-party/cairo/test/reference/a1-bug.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-bug.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-bug.traps.argb32.ref.png diff --git a/cairo/test/reference/a1-bug.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-bug.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-bug.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-bug.traps.rgb24.ref.png diff --git a/cairo/test/reference/a1-clip-fill-equal.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-clip-fill-equal.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-clip-fill-equal.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-clip-fill-equal.base.argb32.ref.png diff --git a/cairo/test/reference/a1-clip-fill-equal.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-clip-fill-equal.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-clip-fill-equal.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-clip-fill-equal.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-clip-fill-equal.ref.png b/3rd-party/cairo/test/reference/a1-clip-fill-equal.ref.png similarity index 100% rename from cairo/test/reference/a1-clip-fill-equal.ref.png rename to 3rd-party/cairo/test/reference/a1-clip-fill-equal.ref.png diff --git a/cairo/test/reference/a1-clip-fill-rule.argb32.ref.png b/3rd-party/cairo/test/reference/a1-clip-fill-rule.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-clip-fill-rule.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-clip-fill-rule.argb32.ref.png diff --git a/cairo/test/reference/a1-clip-fill-rule.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-clip-fill-rule.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-clip-fill-rule.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-clip-fill-rule.base.argb32.ref.png diff --git a/cairo/test/reference/a1-clip-fill-rule.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-clip-fill-rule.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-clip-fill-rule.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-clip-fill-rule.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-clip-fill-rule.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-clip-fill-rule.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-clip-fill-rule.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-clip-fill-rule.rgb24.ref.png diff --git a/cairo/test/reference/a1-clip-fill.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-clip-fill.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-clip-fill.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-clip-fill.base.argb32.ref.png diff --git a/cairo/test/reference/a1-clip-fill.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-clip-fill.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-clip-fill.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-clip-fill.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-clip-fill.ref.png b/3rd-party/cairo/test/reference/a1-clip-fill.ref.png similarity index 100% rename from cairo/test/reference/a1-clip-fill.ref.png rename to 3rd-party/cairo/test/reference/a1-clip-fill.ref.png diff --git a/cairo/test/reference/a1-clip-paint.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-clip-paint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-clip-paint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-clip-paint.base.argb32.ref.png diff --git a/cairo/test/reference/a1-clip-paint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-clip-paint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-clip-paint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-clip-paint.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-clip-paint.ref.png b/3rd-party/cairo/test/reference/a1-clip-paint.ref.png similarity index 100% rename from cairo/test/reference/a1-clip-paint.ref.png rename to 3rd-party/cairo/test/reference/a1-clip-paint.ref.png diff --git a/cairo/test/reference/a1-clip-stroke.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-clip-stroke.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-clip-stroke.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-clip-stroke.base.argb32.ref.png diff --git a/cairo/test/reference/a1-clip-stroke.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-clip-stroke.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-clip-stroke.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-clip-stroke.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-clip-stroke.ref.png b/3rd-party/cairo/test/reference/a1-clip-stroke.ref.png similarity index 100% rename from cairo/test/reference/a1-clip-stroke.ref.png rename to 3rd-party/cairo/test/reference/a1-clip-stroke.ref.png diff --git a/cairo/test/reference/a1-fill.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-fill.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-fill.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-fill.base.argb32.ref.png diff --git a/cairo/test/reference/a1-fill.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-fill.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-fill.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-fill.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-fill.ref.png b/3rd-party/cairo/test/reference/a1-fill.ref.png similarity index 100% rename from cairo/test/reference/a1-fill.ref.png rename to 3rd-party/cairo/test/reference/a1-fill.ref.png diff --git a/cairo/test/reference/a1-image-sample.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-image-sample.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-image-sample.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-image-sample.base.argb32.ref.png diff --git a/cairo/test/reference/a1-image-sample.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-image-sample.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-image-sample.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-image-sample.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-image-sample.gl.xfail.png b/3rd-party/cairo/test/reference/a1-image-sample.gl.xfail.png similarity index 100% rename from cairo/test/reference/a1-image-sample.gl.xfail.png rename to 3rd-party/cairo/test/reference/a1-image-sample.gl.xfail.png diff --git a/cairo/test/reference/a1-image-sample.ref.png b/3rd-party/cairo/test/reference/a1-image-sample.ref.png similarity index 100% rename from cairo/test/reference/a1-image-sample.ref.png rename to 3rd-party/cairo/test/reference/a1-image-sample.ref.png diff --git a/cairo/test/reference/a1-line-width.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-line-width.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-line-width.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-line-width.base.argb32.ref.png diff --git a/cairo/test/reference/a1-line-width.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-line-width.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-line-width.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-line-width.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-line-width.pdf.ref.png b/3rd-party/cairo/test/reference/a1-line-width.pdf.ref.png similarity index 100% rename from cairo/test/reference/a1-line-width.pdf.ref.png rename to 3rd-party/cairo/test/reference/a1-line-width.pdf.ref.png diff --git a/cairo/test/reference/a1-line-width.ps.ref.png b/3rd-party/cairo/test/reference/a1-line-width.ps.ref.png similarity index 100% rename from cairo/test/reference/a1-line-width.ps.ref.png rename to 3rd-party/cairo/test/reference/a1-line-width.ps.ref.png diff --git a/cairo/test/reference/a1-line-width.ref.png b/3rd-party/cairo/test/reference/a1-line-width.ref.png similarity index 100% rename from cairo/test/reference/a1-line-width.ref.png rename to 3rd-party/cairo/test/reference/a1-line-width.ref.png diff --git a/cairo/test/reference/a1-mask-sample.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-mask-sample.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-mask-sample.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-mask-sample.base.argb32.ref.png diff --git a/cairo/test/reference/a1-mask-sample.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-mask-sample.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-mask-sample.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-mask-sample.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-mask-sample.ref.png b/3rd-party/cairo/test/reference/a1-mask-sample.ref.png similarity index 100% rename from cairo/test/reference/a1-mask-sample.ref.png rename to 3rd-party/cairo/test/reference/a1-mask-sample.ref.png diff --git a/cairo/test/reference/a1-mask.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-mask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-mask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-mask.base.argb32.ref.png diff --git a/cairo/test/reference/a1-mask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-mask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-mask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-mask.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-mask.ref.png b/3rd-party/cairo/test/reference/a1-mask.ref.png similarity index 100% rename from cairo/test/reference/a1-mask.ref.png rename to 3rd-party/cairo/test/reference/a1-mask.ref.png diff --git a/cairo/test/reference/a1-rasterisation-rectangles.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-rasterisation-rectangles.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-rasterisation-rectangles.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-rasterisation-rectangles.base.argb32.ref.png diff --git a/cairo/test/reference/a1-rasterisation-rectangles.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-rasterisation-rectangles.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-rasterisation-rectangles.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-rasterisation-rectangles.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-rasterisation-rectangles.quartz.xfail.png b/3rd-party/cairo/test/reference/a1-rasterisation-rectangles.quartz.xfail.png similarity index 100% rename from cairo/test/reference/a1-rasterisation-rectangles.quartz.xfail.png rename to 3rd-party/cairo/test/reference/a1-rasterisation-rectangles.quartz.xfail.png diff --git a/cairo/test/reference/a1-rasterisation-rectangles.ref.png b/3rd-party/cairo/test/reference/a1-rasterisation-rectangles.ref.png similarity index 100% rename from cairo/test/reference/a1-rasterisation-rectangles.ref.png rename to 3rd-party/cairo/test/reference/a1-rasterisation-rectangles.ref.png diff --git a/cairo/test/reference/a1-rasterisation-triangles.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-rasterisation-triangles.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-rasterisation-triangles.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-rasterisation-triangles.base.argb32.ref.png diff --git a/cairo/test/reference/a1-rasterisation-triangles.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-rasterisation-triangles.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-rasterisation-triangles.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-rasterisation-triangles.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-rasterisation-triangles.quartz.xfail.png b/3rd-party/cairo/test/reference/a1-rasterisation-triangles.quartz.xfail.png similarity index 100% rename from cairo/test/reference/a1-rasterisation-triangles.quartz.xfail.png rename to 3rd-party/cairo/test/reference/a1-rasterisation-triangles.quartz.xfail.png diff --git a/cairo/test/reference/a1-rasterisation-triangles.ref.png b/3rd-party/cairo/test/reference/a1-rasterisation-triangles.ref.png similarity index 100% rename from cairo/test/reference/a1-rasterisation-triangles.ref.png rename to 3rd-party/cairo/test/reference/a1-rasterisation-triangles.ref.png diff --git a/cairo/test/reference/a1-rectilinear-grid.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-rectilinear-grid.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-rectilinear-grid.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-rectilinear-grid.base.argb32.ref.png diff --git a/cairo/test/reference/a1-rectilinear-grid.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-rectilinear-grid.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-rectilinear-grid.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-rectilinear-grid.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-rectilinear-grid.ref.png b/3rd-party/cairo/test/reference/a1-rectilinear-grid.ref.png similarity index 100% rename from cairo/test/reference/a1-rectilinear-grid.ref.png rename to 3rd-party/cairo/test/reference/a1-rectilinear-grid.ref.png diff --git a/cairo/test/reference/a1-sample.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-sample.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-sample.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-sample.base.argb32.ref.png diff --git a/cairo/test/reference/a1-sample.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-sample.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-sample.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-sample.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-sample.ref.png b/3rd-party/cairo/test/reference/a1-sample.ref.png similarity index 100% rename from cairo/test/reference/a1-sample.ref.png rename to 3rd-party/cairo/test/reference/a1-sample.ref.png diff --git a/cairo/test/reference/a1-tiger.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-tiger.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-tiger.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-tiger.base.argb32.ref.png diff --git a/cairo/test/reference/a1-tiger.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-tiger.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-tiger.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-tiger.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-tiger.mask.argb32.ref.png b/3rd-party/cairo/test/reference/a1-tiger.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-tiger.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-tiger.mask.argb32.ref.png diff --git a/cairo/test/reference/a1-tiger.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-tiger.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-tiger.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-tiger.mask.rgb24.ref.png diff --git a/cairo/test/reference/a1-tiger.ref.png b/3rd-party/cairo/test/reference/a1-tiger.ref.png similarity index 100% rename from cairo/test/reference/a1-tiger.ref.png rename to 3rd-party/cairo/test/reference/a1-tiger.ref.png diff --git a/cairo/test/reference/a1-tiger.traps.argb32.ref.png b/3rd-party/cairo/test/reference/a1-tiger.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-tiger.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-tiger.traps.argb32.ref.png diff --git a/cairo/test/reference/a1-tiger.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-tiger.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-tiger.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-tiger.traps.rgb24.ref.png diff --git a/cairo/test/reference/a1-traps-sample.base.argb32.ref.png b/3rd-party/cairo/test/reference/a1-traps-sample.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a1-traps-sample.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a1-traps-sample.base.argb32.ref.png diff --git a/cairo/test/reference/a1-traps-sample.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a1-traps-sample.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a1-traps-sample.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a1-traps-sample.base.rgb24.ref.png diff --git a/cairo/test/reference/a1-traps-sample.quartz.xfail.png b/3rd-party/cairo/test/reference/a1-traps-sample.quartz.xfail.png similarity index 100% rename from cairo/test/reference/a1-traps-sample.quartz.xfail.png rename to 3rd-party/cairo/test/reference/a1-traps-sample.quartz.xfail.png diff --git a/cairo/test/reference/a1-traps-sample.ref.png b/3rd-party/cairo/test/reference/a1-traps-sample.ref.png similarity index 100% rename from cairo/test/reference/a1-traps-sample.ref.png rename to 3rd-party/cairo/test/reference/a1-traps-sample.ref.png diff --git a/cairo/test/reference/a8-clear.argb32.ref.png b/3rd-party/cairo/test/reference/a8-clear.argb32.ref.png similarity index 100% rename from cairo/test/reference/a8-clear.argb32.ref.png rename to 3rd-party/cairo/test/reference/a8-clear.argb32.ref.png diff --git a/cairo/test/reference/a8-clear.base.argb32.ref.png b/3rd-party/cairo/test/reference/a8-clear.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a8-clear.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a8-clear.base.argb32.ref.png diff --git a/cairo/test/reference/a8-clear.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a8-clear.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a8-clear.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a8-clear.base.rgb24.ref.png diff --git a/cairo/test/reference/a8-clear.quartz.ref.png b/3rd-party/cairo/test/reference/a8-clear.quartz.ref.png similarity index 100% rename from cairo/test/reference/a8-clear.quartz.ref.png rename to 3rd-party/cairo/test/reference/a8-clear.quartz.ref.png diff --git a/cairo/test/reference/a8-clear.rgb24.ref.png b/3rd-party/cairo/test/reference/a8-clear.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a8-clear.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a8-clear.rgb24.ref.png diff --git a/cairo/test/reference/a8-clear.traps.argb32.ref.png b/3rd-party/cairo/test/reference/a8-clear.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/a8-clear.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/a8-clear.traps.argb32.ref.png diff --git a/cairo/test/reference/a8-clear.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/a8-clear.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a8-clear.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a8-clear.traps.rgb24.ref.png diff --git a/cairo/test/reference/a8-mask.base.argb32.ref.png b/3rd-party/cairo/test/reference/a8-mask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/a8-mask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/a8-mask.base.argb32.ref.png diff --git a/cairo/test/reference/a8-mask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/a8-mask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/a8-mask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/a8-mask.base.rgb24.ref.png diff --git a/cairo/test/reference/a8-mask.ref.png b/3rd-party/cairo/test/reference/a8-mask.ref.png similarity index 100% rename from cairo/test/reference/a8-mask.ref.png rename to 3rd-party/cairo/test/reference/a8-mask.ref.png diff --git a/cairo/test/reference/aliasing.argb32.ref.png b/3rd-party/cairo/test/reference/aliasing.argb32.ref.png similarity index 100% rename from cairo/test/reference/aliasing.argb32.ref.png rename to 3rd-party/cairo/test/reference/aliasing.argb32.ref.png diff --git a/cairo/test/reference/aliasing.base.argb32.ref.png b/3rd-party/cairo/test/reference/aliasing.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/aliasing.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/aliasing.base.argb32.ref.png diff --git a/cairo/test/reference/aliasing.base.rgb24.ref.png b/3rd-party/cairo/test/reference/aliasing.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/aliasing.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/aliasing.base.rgb24.ref.png diff --git a/cairo/test/reference/aliasing.image16.ref.png b/3rd-party/cairo/test/reference/aliasing.image16.ref.png similarity index 100% rename from cairo/test/reference/aliasing.image16.ref.png rename to 3rd-party/cairo/test/reference/aliasing.image16.ref.png diff --git a/cairo/test/reference/aliasing.quartz.ref.png b/3rd-party/cairo/test/reference/aliasing.quartz.ref.png similarity index 100% rename from cairo/test/reference/aliasing.quartz.ref.png rename to 3rd-party/cairo/test/reference/aliasing.quartz.ref.png diff --git a/cairo/test/reference/aliasing.rgb24.ref.png b/3rd-party/cairo/test/reference/aliasing.rgb24.ref.png similarity index 100% rename from cairo/test/reference/aliasing.rgb24.ref.png rename to 3rd-party/cairo/test/reference/aliasing.rgb24.ref.png diff --git a/cairo/test/reference/aliasing.traps.argb32.ref.png b/3rd-party/cairo/test/reference/aliasing.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/aliasing.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/aliasing.traps.argb32.ref.png diff --git a/cairo/test/reference/aliasing.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/aliasing.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/aliasing.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/aliasing.traps.rgb24.ref.png diff --git a/cairo/test/reference/alpha-similar.argb32.ref.png b/3rd-party/cairo/test/reference/alpha-similar.argb32.ref.png similarity index 100% rename from cairo/test/reference/alpha-similar.argb32.ref.png rename to 3rd-party/cairo/test/reference/alpha-similar.argb32.ref.png diff --git a/cairo/test/reference/alpha-similar.base.argb32.ref.png b/3rd-party/cairo/test/reference/alpha-similar.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/alpha-similar.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/alpha-similar.base.argb32.ref.png diff --git a/cairo/test/reference/alpha-similar.base.rgb24.ref.png b/3rd-party/cairo/test/reference/alpha-similar.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/alpha-similar.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/alpha-similar.base.rgb24.ref.png diff --git a/cairo/test/reference/alpha-similar.gl.argb32.xfail.png b/3rd-party/cairo/test/reference/alpha-similar.gl.argb32.xfail.png similarity index 100% rename from cairo/test/reference/alpha-similar.gl.argb32.xfail.png rename to 3rd-party/cairo/test/reference/alpha-similar.gl.argb32.xfail.png diff --git a/cairo/test/reference/alpha-similar.gl.rgb24.xfail.png b/3rd-party/cairo/test/reference/alpha-similar.gl.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/alpha-similar.gl.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/alpha-similar.gl.rgb24.xfail.png diff --git a/cairo/test/reference/alpha-similar.pdf.argb32.xfail.png b/3rd-party/cairo/test/reference/alpha-similar.pdf.argb32.xfail.png similarity index 100% rename from cairo/test/reference/alpha-similar.pdf.argb32.xfail.png rename to 3rd-party/cairo/test/reference/alpha-similar.pdf.argb32.xfail.png diff --git a/cairo/test/reference/alpha-similar.pdf.rgb24.xfail.png b/3rd-party/cairo/test/reference/alpha-similar.pdf.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/alpha-similar.pdf.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/alpha-similar.pdf.rgb24.xfail.png diff --git a/cairo/test/reference/alpha-similar.ps.argb32.xfail.png b/3rd-party/cairo/test/reference/alpha-similar.ps.argb32.xfail.png similarity index 100% rename from cairo/test/reference/alpha-similar.ps.argb32.xfail.png rename to 3rd-party/cairo/test/reference/alpha-similar.ps.argb32.xfail.png diff --git a/cairo/test/reference/alpha-similar.ps.rgb24.xfail.png b/3rd-party/cairo/test/reference/alpha-similar.ps.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/alpha-similar.ps.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/alpha-similar.ps.rgb24.xfail.png diff --git a/cairo/test/reference/alpha-similar.rgb24.ref.png b/3rd-party/cairo/test/reference/alpha-similar.rgb24.ref.png similarity index 100% rename from cairo/test/reference/alpha-similar.rgb24.ref.png rename to 3rd-party/cairo/test/reference/alpha-similar.rgb24.ref.png diff --git a/cairo/test/reference/alpha-similar.svg.argb32.xfail.png b/3rd-party/cairo/test/reference/alpha-similar.svg.argb32.xfail.png similarity index 100% rename from cairo/test/reference/alpha-similar.svg.argb32.xfail.png rename to 3rd-party/cairo/test/reference/alpha-similar.svg.argb32.xfail.png diff --git a/cairo/test/reference/alpha-similar.svg.rgb24.xfail.png b/3rd-party/cairo/test/reference/alpha-similar.svg.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/alpha-similar.svg.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/alpha-similar.svg.rgb24.xfail.png diff --git a/cairo/test/reference/api-special-cases.base.argb32.ref.png b/3rd-party/cairo/test/reference/api-special-cases.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/api-special-cases.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/api-special-cases.base.argb32.ref.png diff --git a/cairo/test/reference/api-special-cases.base.rgb24.ref.png b/3rd-party/cairo/test/reference/api-special-cases.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/api-special-cases.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/api-special-cases.base.rgb24.ref.png diff --git a/cairo/test/reference/api-special-cases.ref.png b/3rd-party/cairo/test/reference/api-special-cases.ref.png similarity index 100% rename from cairo/test/reference/api-special-cases.ref.png rename to 3rd-party/cairo/test/reference/api-special-cases.ref.png diff --git a/cairo/test/reference/arc-direction.argb32.ref.png b/3rd-party/cairo/test/reference/arc-direction.argb32.ref.png similarity index 100% rename from cairo/test/reference/arc-direction.argb32.ref.png rename to 3rd-party/cairo/test/reference/arc-direction.argb32.ref.png diff --git a/cairo/test/reference/arc-direction.base.argb32.ref.png b/3rd-party/cairo/test/reference/arc-direction.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/arc-direction.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/arc-direction.base.argb32.ref.png diff --git a/cairo/test/reference/arc-direction.base.rgb24.ref.png b/3rd-party/cairo/test/reference/arc-direction.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/arc-direction.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/arc-direction.base.rgb24.ref.png diff --git a/cairo/test/reference/arc-direction.ps.ref.png b/3rd-party/cairo/test/reference/arc-direction.ps.ref.png similarity index 100% rename from cairo/test/reference/arc-direction.ps.ref.png rename to 3rd-party/cairo/test/reference/arc-direction.ps.ref.png diff --git a/cairo/test/reference/arc-direction.rgb24.ref.png b/3rd-party/cairo/test/reference/arc-direction.rgb24.ref.png similarity index 100% rename from cairo/test/reference/arc-direction.rgb24.ref.png rename to 3rd-party/cairo/test/reference/arc-direction.rgb24.ref.png diff --git a/cairo/test/reference/arc-direction.traps.ref.png b/3rd-party/cairo/test/reference/arc-direction.traps.ref.png similarity index 100% rename from cairo/test/reference/arc-direction.traps.ref.png rename to 3rd-party/cairo/test/reference/arc-direction.traps.ref.png diff --git a/cairo/test/reference/arc-infinite-loop.base.argb32.ref.png b/3rd-party/cairo/test/reference/arc-infinite-loop.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/arc-infinite-loop.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/arc-infinite-loop.base.argb32.ref.png diff --git a/cairo/test/reference/arc-infinite-loop.base.rgb24.ref.png b/3rd-party/cairo/test/reference/arc-infinite-loop.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/arc-infinite-loop.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/arc-infinite-loop.base.rgb24.ref.png diff --git a/cairo/test/reference/arc-infinite-loop.ref.png b/3rd-party/cairo/test/reference/arc-infinite-loop.ref.png similarity index 100% rename from cairo/test/reference/arc-infinite-loop.ref.png rename to 3rd-party/cairo/test/reference/arc-infinite-loop.ref.png diff --git a/cairo/test/reference/arc-looping-dash.image16.ref.png b/3rd-party/cairo/test/reference/arc-looping-dash.image16.ref.png similarity index 100% rename from cairo/test/reference/arc-looping-dash.image16.ref.png rename to 3rd-party/cairo/test/reference/arc-looping-dash.image16.ref.png diff --git a/cairo/test/reference/arc-looping-dash.mask.argb32.ref.png b/3rd-party/cairo/test/reference/arc-looping-dash.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/arc-looping-dash.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/arc-looping-dash.mask.argb32.ref.png diff --git a/cairo/test/reference/arc-looping-dash.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/arc-looping-dash.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/arc-looping-dash.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/arc-looping-dash.mask.rgb24.ref.png diff --git a/cairo/test/reference/arc-looping-dash.ps.ref.png b/3rd-party/cairo/test/reference/arc-looping-dash.ps.ref.png similarity index 100% rename from cairo/test/reference/arc-looping-dash.ps.ref.png rename to 3rd-party/cairo/test/reference/arc-looping-dash.ps.ref.png diff --git a/cairo/test/reference/arc-looping-dash.quartz.ref.png b/3rd-party/cairo/test/reference/arc-looping-dash.quartz.ref.png similarity index 100% rename from cairo/test/reference/arc-looping-dash.quartz.ref.png rename to 3rd-party/cairo/test/reference/arc-looping-dash.quartz.ref.png diff --git a/cairo/test/reference/arc-looping-dash.ref.png b/3rd-party/cairo/test/reference/arc-looping-dash.ref.png similarity index 100% rename from cairo/test/reference/arc-looping-dash.ref.png rename to 3rd-party/cairo/test/reference/arc-looping-dash.ref.png diff --git a/cairo/test/reference/arc-looping-dash.traps.argb32.ref.png b/3rd-party/cairo/test/reference/arc-looping-dash.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/arc-looping-dash.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/arc-looping-dash.traps.argb32.ref.png diff --git a/cairo/test/reference/arc-looping-dash.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/arc-looping-dash.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/arc-looping-dash.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/arc-looping-dash.traps.rgb24.ref.png diff --git a/cairo/test/reference/big-empty-box.argb32.ref.png b/3rd-party/cairo/test/reference/big-empty-box.argb32.ref.png similarity index 100% rename from cairo/test/reference/big-empty-box.argb32.ref.png rename to 3rd-party/cairo/test/reference/big-empty-box.argb32.ref.png diff --git a/cairo/test/reference/big-empty-box.base.argb32.ref.png b/3rd-party/cairo/test/reference/big-empty-box.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/big-empty-box.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/big-empty-box.base.argb32.ref.png diff --git a/cairo/test/reference/big-empty-box.base.rgb24.ref.png b/3rd-party/cairo/test/reference/big-empty-box.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/big-empty-box.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/big-empty-box.base.rgb24.ref.png diff --git a/cairo/test/reference/big-empty-box.rgb24.ref.png b/3rd-party/cairo/test/reference/big-empty-box.rgb24.ref.png similarity index 100% rename from cairo/test/reference/big-empty-box.rgb24.ref.png rename to 3rd-party/cairo/test/reference/big-empty-box.rgb24.ref.png diff --git a/cairo/test/reference/big-empty-triangle.argb32.ref.png b/3rd-party/cairo/test/reference/big-empty-triangle.argb32.ref.png similarity index 100% rename from cairo/test/reference/big-empty-triangle.argb32.ref.png rename to 3rd-party/cairo/test/reference/big-empty-triangle.argb32.ref.png diff --git a/cairo/test/reference/big-empty-triangle.base.argb32.ref.png b/3rd-party/cairo/test/reference/big-empty-triangle.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/big-empty-triangle.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/big-empty-triangle.base.argb32.ref.png diff --git a/cairo/test/reference/big-empty-triangle.base.rgb24.ref.png b/3rd-party/cairo/test/reference/big-empty-triangle.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/big-empty-triangle.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/big-empty-triangle.base.rgb24.ref.png diff --git a/cairo/test/reference/big-empty-triangle.rgb24.ref.png b/3rd-party/cairo/test/reference/big-empty-triangle.rgb24.ref.png similarity index 100% rename from cairo/test/reference/big-empty-triangle.rgb24.ref.png rename to 3rd-party/cairo/test/reference/big-empty-triangle.rgb24.ref.png diff --git a/cairo/test/reference/big-line.argb32.ref.png b/3rd-party/cairo/test/reference/big-line.argb32.ref.png similarity index 100% rename from cairo/test/reference/big-line.argb32.ref.png rename to 3rd-party/cairo/test/reference/big-line.argb32.ref.png diff --git a/cairo/test/reference/big-line.base.argb32.ref.png b/3rd-party/cairo/test/reference/big-line.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/big-line.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/big-line.base.argb32.ref.png diff --git a/cairo/test/reference/big-line.base.rgb24.ref.png b/3rd-party/cairo/test/reference/big-line.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/big-line.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/big-line.base.rgb24.ref.png diff --git a/cairo/test/reference/big-line.image16.ref.png b/3rd-party/cairo/test/reference/big-line.image16.ref.png similarity index 100% rename from cairo/test/reference/big-line.image16.ref.png rename to 3rd-party/cairo/test/reference/big-line.image16.ref.png diff --git a/cairo/test/reference/big-line.ps.ref.png b/3rd-party/cairo/test/reference/big-line.ps.ref.png similarity index 100% rename from cairo/test/reference/big-line.ps.ref.png rename to 3rd-party/cairo/test/reference/big-line.ps.ref.png diff --git a/cairo/test/reference/big-line.quartz.ref.png b/3rd-party/cairo/test/reference/big-line.quartz.ref.png similarity index 100% rename from cairo/test/reference/big-line.quartz.ref.png rename to 3rd-party/cairo/test/reference/big-line.quartz.ref.png diff --git a/cairo/test/reference/big-line.rgb24.ref.png b/3rd-party/cairo/test/reference/big-line.rgb24.ref.png similarity index 100% rename from cairo/test/reference/big-line.rgb24.ref.png rename to 3rd-party/cairo/test/reference/big-line.rgb24.ref.png diff --git a/cairo/test/reference/big-line.traps.argb32.ref.png b/3rd-party/cairo/test/reference/big-line.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/big-line.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/big-line.traps.argb32.ref.png diff --git a/cairo/test/reference/big-line.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/big-line.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/big-line.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/big-line.traps.rgb24.ref.png diff --git a/cairo/test/reference/big-little-box.argb32.ref.png b/3rd-party/cairo/test/reference/big-little-box.argb32.ref.png similarity index 100% rename from cairo/test/reference/big-little-box.argb32.ref.png rename to 3rd-party/cairo/test/reference/big-little-box.argb32.ref.png diff --git a/cairo/test/reference/big-little-box.base.argb32.ref.png b/3rd-party/cairo/test/reference/big-little-box.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/big-little-box.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/big-little-box.base.argb32.ref.png diff --git a/cairo/test/reference/big-little-box.base.rgb24.ref.png b/3rd-party/cairo/test/reference/big-little-box.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/big-little-box.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/big-little-box.base.rgb24.ref.png diff --git a/cairo/test/reference/big-little-box.rgb24.ref.png b/3rd-party/cairo/test/reference/big-little-box.rgb24.ref.png similarity index 100% rename from cairo/test/reference/big-little-box.rgb24.ref.png rename to 3rd-party/cairo/test/reference/big-little-box.rgb24.ref.png diff --git a/cairo/test/reference/big-little-triangle.argb32.ref.png b/3rd-party/cairo/test/reference/big-little-triangle.argb32.ref.png similarity index 100% rename from cairo/test/reference/big-little-triangle.argb32.ref.png rename to 3rd-party/cairo/test/reference/big-little-triangle.argb32.ref.png diff --git a/cairo/test/reference/big-little-triangle.base.argb32.ref.png b/3rd-party/cairo/test/reference/big-little-triangle.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/big-little-triangle.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/big-little-triangle.base.argb32.ref.png diff --git a/cairo/test/reference/big-little-triangle.base.rgb24.ref.png b/3rd-party/cairo/test/reference/big-little-triangle.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/big-little-triangle.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/big-little-triangle.base.rgb24.ref.png diff --git a/cairo/test/reference/big-little-triangle.rgb24.ref.png b/3rd-party/cairo/test/reference/big-little-triangle.rgb24.ref.png similarity index 100% rename from cairo/test/reference/big-little-triangle.rgb24.ref.png rename to 3rd-party/cairo/test/reference/big-little-triangle.rgb24.ref.png diff --git a/cairo/test/reference/big-little-triangle.traps.argb32.ref.png b/3rd-party/cairo/test/reference/big-little-triangle.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/big-little-triangle.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/big-little-triangle.traps.argb32.ref.png diff --git a/cairo/test/reference/big-little-triangle.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/big-little-triangle.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/big-little-triangle.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/big-little-triangle.traps.rgb24.ref.png diff --git a/cairo/test/reference/big-trap.base.argb32.ref.png b/3rd-party/cairo/test/reference/big-trap.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/big-trap.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/big-trap.base.argb32.ref.png diff --git a/cairo/test/reference/big-trap.base.rgb24.ref.png b/3rd-party/cairo/test/reference/big-trap.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/big-trap.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/big-trap.base.rgb24.ref.png diff --git a/cairo/test/reference/big-trap.mask.argb32.ref.png b/3rd-party/cairo/test/reference/big-trap.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/big-trap.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/big-trap.mask.argb32.ref.png diff --git a/cairo/test/reference/big-trap.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/big-trap.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/big-trap.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/big-trap.mask.rgb24.ref.png diff --git a/cairo/test/reference/big-trap.traps.argb32.ref.png b/3rd-party/cairo/test/reference/big-trap.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/big-trap.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/big-trap.traps.argb32.ref.png diff --git a/cairo/test/reference/big-trap.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/big-trap.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/big-trap.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/big-trap.traps.rgb24.ref.png diff --git a/cairo/test/reference/bilevel-image.base.argb32.ref.png b/3rd-party/cairo/test/reference/bilevel-image.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/bilevel-image.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/bilevel-image.base.argb32.ref.png diff --git a/cairo/test/reference/bilevel-image.base.rgb24.ref.png b/3rd-party/cairo/test/reference/bilevel-image.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bilevel-image.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bilevel-image.base.rgb24.ref.png diff --git a/cairo/test/reference/bilevel-image.ref.png b/3rd-party/cairo/test/reference/bilevel-image.ref.png similarity index 100% rename from cairo/test/reference/bilevel-image.ref.png rename to 3rd-party/cairo/test/reference/bilevel-image.ref.png diff --git a/cairo/test/reference/bilevel-xlib-fallback.rgb24.ref.png b/3rd-party/cairo/test/reference/bilevel-xlib-fallback.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bilevel-xlib-fallback.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bilevel-xlib-fallback.rgb24.ref.png diff --git a/cairo/test/reference/bilevel-xlib-window.rgb24.ref.png b/3rd-party/cairo/test/reference/bilevel-xlib-window.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bilevel-xlib-window.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bilevel-xlib-window.rgb24.ref.png diff --git a/cairo/test/reference/bilevel-xlib.argb32.ref.png b/3rd-party/cairo/test/reference/bilevel-xlib.argb32.ref.png similarity index 100% rename from cairo/test/reference/bilevel-xlib.argb32.ref.png rename to 3rd-party/cairo/test/reference/bilevel-xlib.argb32.ref.png diff --git a/cairo/test/reference/bilevel-xlib.rgb24.ref.png b/3rd-party/cairo/test/reference/bilevel-xlib.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bilevel-xlib.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bilevel-xlib.rgb24.ref.png diff --git a/cairo/test/reference/bitmap-font.argb32.ref.png b/3rd-party/cairo/test/reference/bitmap-font.argb32.ref.png similarity index 100% rename from cairo/test/reference/bitmap-font.argb32.ref.png rename to 3rd-party/cairo/test/reference/bitmap-font.argb32.ref.png diff --git a/cairo/test/reference/bitmap-font.base.argb32.ref.png b/3rd-party/cairo/test/reference/bitmap-font.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/bitmap-font.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/bitmap-font.base.argb32.ref.png diff --git a/cairo/test/reference/bitmap-font.base.rgb24.ref.png b/3rd-party/cairo/test/reference/bitmap-font.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bitmap-font.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bitmap-font.base.rgb24.ref.png diff --git a/cairo/test/reference/bitmap-font.rgb24.ref.png b/3rd-party/cairo/test/reference/bitmap-font.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bitmap-font.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bitmap-font.rgb24.ref.png diff --git a/cairo/test/reference/bug-40410.argb32.ref.png b/3rd-party/cairo/test/reference/bug-40410.argb32.ref.png similarity index 100% rename from cairo/test/reference/bug-40410.argb32.ref.png rename to 3rd-party/cairo/test/reference/bug-40410.argb32.ref.png diff --git a/cairo/test/reference/bug-40410.base.argb32.ref.png b/3rd-party/cairo/test/reference/bug-40410.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/bug-40410.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/bug-40410.base.argb32.ref.png diff --git a/cairo/test/reference/bug-40410.base.rgb24.ref.png b/3rd-party/cairo/test/reference/bug-40410.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bug-40410.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bug-40410.base.rgb24.ref.png diff --git a/cairo/test/reference/bug-40410.rgb24.ref.png b/3rd-party/cairo/test/reference/bug-40410.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bug-40410.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bug-40410.rgb24.ref.png diff --git a/cairo/test/reference/bug-40410.traps.argb32.ref.png b/3rd-party/cairo/test/reference/bug-40410.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/bug-40410.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/bug-40410.traps.argb32.ref.png diff --git a/cairo/test/reference/bug-40410.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/bug-40410.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bug-40410.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bug-40410.traps.rgb24.ref.png diff --git a/cairo/test/reference/bug-51910.ref.png b/3rd-party/cairo/test/reference/bug-51910.ref.png similarity index 100% rename from cairo/test/reference/bug-51910.ref.png rename to 3rd-party/cairo/test/reference/bug-51910.ref.png diff --git a/cairo/test/reference/bug-bo-collins.ref.png b/3rd-party/cairo/test/reference/bug-bo-collins.ref.png similarity index 100% rename from cairo/test/reference/bug-bo-collins.ref.png rename to 3rd-party/cairo/test/reference/bug-bo-collins.ref.png diff --git a/cairo/test/reference/bug-bo-rectangular.base.argb32.ref.png b/3rd-party/cairo/test/reference/bug-bo-rectangular.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/bug-bo-rectangular.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/bug-bo-rectangular.base.argb32.ref.png diff --git a/cairo/test/reference/bug-bo-rectangular.base.rgb24.ref.png b/3rd-party/cairo/test/reference/bug-bo-rectangular.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bug-bo-rectangular.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bug-bo-rectangular.base.rgb24.ref.png diff --git a/cairo/test/reference/bug-bo-rectangular.image16.ref.png b/3rd-party/cairo/test/reference/bug-bo-rectangular.image16.ref.png similarity index 100% rename from cairo/test/reference/bug-bo-rectangular.image16.ref.png rename to 3rd-party/cairo/test/reference/bug-bo-rectangular.image16.ref.png diff --git a/cairo/test/reference/bug-bo-rectangular.ps.xfail.png b/3rd-party/cairo/test/reference/bug-bo-rectangular.ps.xfail.png similarity index 100% rename from cairo/test/reference/bug-bo-rectangular.ps.xfail.png rename to 3rd-party/cairo/test/reference/bug-bo-rectangular.ps.xfail.png diff --git a/cairo/test/reference/bug-bo-rectangular.ref.png b/3rd-party/cairo/test/reference/bug-bo-rectangular.ref.png similarity index 100% rename from cairo/test/reference/bug-bo-rectangular.ref.png rename to 3rd-party/cairo/test/reference/bug-bo-rectangular.ref.png diff --git a/cairo/test/reference/bug-bo-ricotz.argb32.ref.png b/3rd-party/cairo/test/reference/bug-bo-ricotz.argb32.ref.png similarity index 100% rename from cairo/test/reference/bug-bo-ricotz.argb32.ref.png rename to 3rd-party/cairo/test/reference/bug-bo-ricotz.argb32.ref.png diff --git a/cairo/test/reference/bug-bo-ricotz.base.argb32.ref.png b/3rd-party/cairo/test/reference/bug-bo-ricotz.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/bug-bo-ricotz.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/bug-bo-ricotz.base.argb32.ref.png diff --git a/cairo/test/reference/bug-bo-ricotz.base.rgb24.ref.png b/3rd-party/cairo/test/reference/bug-bo-ricotz.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bug-bo-ricotz.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bug-bo-ricotz.base.rgb24.ref.png diff --git a/cairo/test/reference/bug-bo-ricotz.rgb24.ref.png b/3rd-party/cairo/test/reference/bug-bo-ricotz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bug-bo-ricotz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bug-bo-ricotz.rgb24.ref.png diff --git a/cairo/test/reference/bug-bo-ricotz.traps.ref.png b/3rd-party/cairo/test/reference/bug-bo-ricotz.traps.ref.png similarity index 100% rename from cairo/test/reference/bug-bo-ricotz.traps.ref.png rename to 3rd-party/cairo/test/reference/bug-bo-ricotz.traps.ref.png diff --git a/cairo/test/reference/bug-extents.argb32.ref.png b/3rd-party/cairo/test/reference/bug-extents.argb32.ref.png similarity index 100% rename from cairo/test/reference/bug-extents.argb32.ref.png rename to 3rd-party/cairo/test/reference/bug-extents.argb32.ref.png diff --git a/cairo/test/reference/bug-extents.base.argb32.ref.png b/3rd-party/cairo/test/reference/bug-extents.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/bug-extents.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/bug-extents.base.argb32.ref.png diff --git a/cairo/test/reference/bug-extents.base.rgb24.ref.png b/3rd-party/cairo/test/reference/bug-extents.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bug-extents.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bug-extents.base.rgb24.ref.png diff --git a/cairo/test/reference/bug-extents.image16.ref.png b/3rd-party/cairo/test/reference/bug-extents.image16.ref.png similarity index 100% rename from cairo/test/reference/bug-extents.image16.ref.png rename to 3rd-party/cairo/test/reference/bug-extents.image16.ref.png diff --git a/cairo/test/reference/bug-extents.ps.ref.png b/3rd-party/cairo/test/reference/bug-extents.ps.ref.png similarity index 100% rename from cairo/test/reference/bug-extents.ps.ref.png rename to 3rd-party/cairo/test/reference/bug-extents.ps.ref.png diff --git a/cairo/test/reference/bug-extents.quartz.ref.png b/3rd-party/cairo/test/reference/bug-extents.quartz.ref.png similarity index 100% rename from cairo/test/reference/bug-extents.quartz.ref.png rename to 3rd-party/cairo/test/reference/bug-extents.quartz.ref.png diff --git a/cairo/test/reference/bug-extents.rgb24.ref.png b/3rd-party/cairo/test/reference/bug-extents.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bug-extents.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bug-extents.rgb24.ref.png diff --git a/cairo/test/reference/bug-extents.traps.argb32.ref.png b/3rd-party/cairo/test/reference/bug-extents.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/bug-extents.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/bug-extents.traps.argb32.ref.png diff --git a/cairo/test/reference/bug-extents.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/bug-extents.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bug-extents.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bug-extents.traps.rgb24.ref.png diff --git a/cairo/test/reference/bug-seams.base.argb32.ref.png b/3rd-party/cairo/test/reference/bug-seams.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/bug-seams.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/bug-seams.base.argb32.ref.png diff --git a/cairo/test/reference/bug-seams.base.rgb24.ref.png b/3rd-party/cairo/test/reference/bug-seams.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bug-seams.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bug-seams.base.rgb24.ref.png diff --git a/cairo/test/reference/bug-seams.image.xfail.png b/3rd-party/cairo/test/reference/bug-seams.image.xfail.png similarity index 100% rename from cairo/test/reference/bug-seams.image.xfail.png rename to 3rd-party/cairo/test/reference/bug-seams.image.xfail.png diff --git a/cairo/test/reference/bug-seams.mask.argb32.ref.png b/3rd-party/cairo/test/reference/bug-seams.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/bug-seams.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/bug-seams.mask.argb32.ref.png diff --git a/cairo/test/reference/bug-seams.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/bug-seams.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bug-seams.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bug-seams.mask.rgb24.ref.png diff --git a/cairo/test/reference/bug-seams.ref.png b/3rd-party/cairo/test/reference/bug-seams.ref.png similarity index 100% rename from cairo/test/reference/bug-seams.ref.png rename to 3rd-party/cairo/test/reference/bug-seams.ref.png diff --git a/cairo/test/reference/bug-seams.traps.argb32.ref.png b/3rd-party/cairo/test/reference/bug-seams.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/bug-seams.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/bug-seams.traps.argb32.ref.png diff --git a/cairo/test/reference/bug-seams.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/bug-seams.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bug-seams.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bug-seams.traps.rgb24.ref.png diff --git a/cairo/test/reference/bug-seams.xlib-fallback.ref.png b/3rd-party/cairo/test/reference/bug-seams.xlib-fallback.ref.png similarity index 100% rename from cairo/test/reference/bug-seams.xlib-fallback.ref.png rename to 3rd-party/cairo/test/reference/bug-seams.xlib-fallback.ref.png diff --git a/cairo/test/reference/bug-source-cu.argb32.ref.png b/3rd-party/cairo/test/reference/bug-source-cu.argb32.ref.png similarity index 100% rename from cairo/test/reference/bug-source-cu.argb32.ref.png rename to 3rd-party/cairo/test/reference/bug-source-cu.argb32.ref.png diff --git a/cairo/test/reference/bug-source-cu.rgb24.ref.png b/3rd-party/cairo/test/reference/bug-source-cu.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bug-source-cu.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bug-source-cu.rgb24.ref.png diff --git a/cairo/test/reference/bug-source-cu.traps.argb32.ref.png b/3rd-party/cairo/test/reference/bug-source-cu.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/bug-source-cu.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/bug-source-cu.traps.argb32.ref.png diff --git a/cairo/test/reference/bug-source-cu.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/bug-source-cu.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/bug-source-cu.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/bug-source-cu.traps.rgb24.ref.png diff --git a/cairo/test/reference/bug-spline.ref.png b/3rd-party/cairo/test/reference/bug-spline.ref.png similarity index 100% rename from cairo/test/reference/bug-spline.ref.png rename to 3rd-party/cairo/test/reference/bug-spline.ref.png diff --git a/cairo/test/reference/caps-05.ref.png b/3rd-party/cairo/test/reference/caps-05.ref.png similarity index 100% rename from cairo/test/reference/caps-05.ref.png rename to 3rd-party/cairo/test/reference/caps-05.ref.png diff --git a/cairo/test/reference/caps-05.traps.ref.png b/3rd-party/cairo/test/reference/caps-05.traps.ref.png similarity index 100% rename from cairo/test/reference/caps-05.traps.ref.png rename to 3rd-party/cairo/test/reference/caps-05.traps.ref.png diff --git a/cairo/test/reference/caps-1.ref.png b/3rd-party/cairo/test/reference/caps-1.ref.png similarity index 100% rename from cairo/test/reference/caps-1.ref.png rename to 3rd-party/cairo/test/reference/caps-1.ref.png diff --git a/cairo/test/reference/caps-1.traps.ref.png b/3rd-party/cairo/test/reference/caps-1.traps.ref.png similarity index 100% rename from cairo/test/reference/caps-1.traps.ref.png rename to 3rd-party/cairo/test/reference/caps-1.traps.ref.png diff --git a/cairo/test/reference/caps-2.ref.png b/3rd-party/cairo/test/reference/caps-2.ref.png similarity index 100% rename from cairo/test/reference/caps-2.ref.png rename to 3rd-party/cairo/test/reference/caps-2.ref.png diff --git a/cairo/test/reference/caps-2.traps.ref.png b/3rd-party/cairo/test/reference/caps-2.traps.ref.png similarity index 100% rename from cairo/test/reference/caps-2.traps.ref.png rename to 3rd-party/cairo/test/reference/caps-2.traps.ref.png diff --git a/cairo/test/reference/caps-joins-05.ref.png b/3rd-party/cairo/test/reference/caps-joins-05.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-05.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-05.ref.png diff --git a/cairo/test/reference/caps-joins-05.traps.ref.png b/3rd-party/cairo/test/reference/caps-joins-05.traps.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-05.traps.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-05.traps.ref.png diff --git a/cairo/test/reference/caps-joins-1.ref.png b/3rd-party/cairo/test/reference/caps-joins-1.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-1.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-1.ref.png diff --git a/cairo/test/reference/caps-joins-1.traps.ref.png b/3rd-party/cairo/test/reference/caps-joins-1.traps.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-1.traps.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-1.traps.ref.png diff --git a/cairo/test/reference/caps-joins-2.ref.png b/3rd-party/cairo/test/reference/caps-joins-2.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-2.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-2.ref.png diff --git a/cairo/test/reference/caps-joins-2.traps.ref.png b/3rd-party/cairo/test/reference/caps-joins-2.traps.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-2.traps.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-2.traps.ref.png diff --git a/cairo/test/reference/caps-joins-alpha.image16.ref.png b/3rd-party/cairo/test/reference/caps-joins-alpha.image16.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-alpha.image16.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-alpha.image16.ref.png diff --git a/cairo/test/reference/caps-joins-alpha.mask.argb32.ref.png b/3rd-party/cairo/test/reference/caps-joins-alpha.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-alpha.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-alpha.mask.argb32.ref.png diff --git a/cairo/test/reference/caps-joins-alpha.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/caps-joins-alpha.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-alpha.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-alpha.mask.rgb24.ref.png diff --git a/cairo/test/reference/caps-joins-alpha.quartz.ref.png b/3rd-party/cairo/test/reference/caps-joins-alpha.quartz.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-alpha.quartz.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-alpha.quartz.ref.png diff --git a/cairo/test/reference/caps-joins-alpha.ref.png b/3rd-party/cairo/test/reference/caps-joins-alpha.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-alpha.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-alpha.ref.png diff --git a/cairo/test/reference/caps-joins-alpha.traps.argb32.ref.png b/3rd-party/cairo/test/reference/caps-joins-alpha.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-alpha.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-alpha.traps.argb32.ref.png diff --git a/cairo/test/reference/caps-joins-alpha.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/caps-joins-alpha.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-alpha.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-alpha.traps.rgb24.ref.png diff --git a/cairo/test/reference/caps-joins-curve.image16.ref.png b/3rd-party/cairo/test/reference/caps-joins-curve.image16.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-curve.image16.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-curve.image16.ref.png diff --git a/cairo/test/reference/caps-joins-curve.mask.argb32.ref.png b/3rd-party/cairo/test/reference/caps-joins-curve.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-curve.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-curve.mask.argb32.ref.png diff --git a/cairo/test/reference/caps-joins-curve.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/caps-joins-curve.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-curve.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-curve.mask.rgb24.ref.png diff --git a/cairo/test/reference/caps-joins-curve.ps.ref.png b/3rd-party/cairo/test/reference/caps-joins-curve.ps.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-curve.ps.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-curve.ps.ref.png diff --git a/cairo/test/reference/caps-joins-curve.quartz.ref.png b/3rd-party/cairo/test/reference/caps-joins-curve.quartz.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-curve.quartz.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-curve.quartz.ref.png diff --git a/cairo/test/reference/caps-joins-curve.ref.png b/3rd-party/cairo/test/reference/caps-joins-curve.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-curve.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-curve.ref.png diff --git a/cairo/test/reference/caps-joins-curve.traps.argb32.ref.png b/3rd-party/cairo/test/reference/caps-joins-curve.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-curve.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-curve.traps.argb32.ref.png diff --git a/cairo/test/reference/caps-joins-curve.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/caps-joins-curve.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/caps-joins-curve.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/caps-joins-curve.traps.rgb24.ref.png diff --git a/cairo/test/reference/caps-joins.argb32.ref.png b/3rd-party/cairo/test/reference/caps-joins.argb32.ref.png similarity index 100% rename from cairo/test/reference/caps-joins.argb32.ref.png rename to 3rd-party/cairo/test/reference/caps-joins.argb32.ref.png diff --git a/cairo/test/reference/caps-joins.base.argb32.ref.png b/3rd-party/cairo/test/reference/caps-joins.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/caps-joins.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/caps-joins.base.argb32.ref.png diff --git a/cairo/test/reference/caps-joins.base.rgb24.ref.png b/3rd-party/cairo/test/reference/caps-joins.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/caps-joins.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/caps-joins.base.rgb24.ref.png diff --git a/cairo/test/reference/caps-joins.image16.ref.png b/3rd-party/cairo/test/reference/caps-joins.image16.ref.png similarity index 100% rename from cairo/test/reference/caps-joins.image16.ref.png rename to 3rd-party/cairo/test/reference/caps-joins.image16.ref.png diff --git a/cairo/test/reference/caps-joins.ps.ref.png b/3rd-party/cairo/test/reference/caps-joins.ps.ref.png similarity index 100% rename from cairo/test/reference/caps-joins.ps.ref.png rename to 3rd-party/cairo/test/reference/caps-joins.ps.ref.png diff --git a/cairo/test/reference/caps-joins.rgb24.ref.png b/3rd-party/cairo/test/reference/caps-joins.rgb24.ref.png similarity index 100% rename from cairo/test/reference/caps-joins.rgb24.ref.png rename to 3rd-party/cairo/test/reference/caps-joins.rgb24.ref.png diff --git a/cairo/test/reference/caps-joins.traps.argb32.ref.png b/3rd-party/cairo/test/reference/caps-joins.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/caps-joins.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/caps-joins.traps.argb32.ref.png diff --git a/cairo/test/reference/caps-joins.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/caps-joins.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/caps-joins.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/caps-joins.traps.rgb24.ref.png diff --git a/cairo/test/reference/caps-sub-paths.argb32.ref.png b/3rd-party/cairo/test/reference/caps-sub-paths.argb32.ref.png similarity index 100% rename from cairo/test/reference/caps-sub-paths.argb32.ref.png rename to 3rd-party/cairo/test/reference/caps-sub-paths.argb32.ref.png diff --git a/cairo/test/reference/caps-sub-paths.base.argb32.ref.png b/3rd-party/cairo/test/reference/caps-sub-paths.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/caps-sub-paths.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/caps-sub-paths.base.argb32.ref.png diff --git a/cairo/test/reference/caps-sub-paths.base.rgb24.ref.png b/3rd-party/cairo/test/reference/caps-sub-paths.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/caps-sub-paths.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/caps-sub-paths.base.rgb24.ref.png diff --git a/cairo/test/reference/caps-sub-paths.image16.ref.png b/3rd-party/cairo/test/reference/caps-sub-paths.image16.ref.png similarity index 100% rename from cairo/test/reference/caps-sub-paths.image16.ref.png rename to 3rd-party/cairo/test/reference/caps-sub-paths.image16.ref.png diff --git a/cairo/test/reference/caps-sub-paths.ps.ref.png b/3rd-party/cairo/test/reference/caps-sub-paths.ps.ref.png similarity index 100% rename from cairo/test/reference/caps-sub-paths.ps.ref.png rename to 3rd-party/cairo/test/reference/caps-sub-paths.ps.ref.png diff --git a/cairo/test/reference/caps-sub-paths.rgb24.ref.png b/3rd-party/cairo/test/reference/caps-sub-paths.rgb24.ref.png similarity index 100% rename from cairo/test/reference/caps-sub-paths.rgb24.ref.png rename to 3rd-party/cairo/test/reference/caps-sub-paths.rgb24.ref.png diff --git a/cairo/test/reference/caps-sub-paths.traps.argb32.ref.png b/3rd-party/cairo/test/reference/caps-sub-paths.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/caps-sub-paths.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/caps-sub-paths.traps.argb32.ref.png diff --git a/cairo/test/reference/caps-sub-paths.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/caps-sub-paths.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/caps-sub-paths.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/caps-sub-paths.traps.rgb24.ref.png diff --git a/cairo/test/reference/caps-tails-curve.mask.argb32.ref.png b/3rd-party/cairo/test/reference/caps-tails-curve.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/caps-tails-curve.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/caps-tails-curve.mask.argb32.ref.png diff --git a/cairo/test/reference/caps-tails-curve.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/caps-tails-curve.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/caps-tails-curve.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/caps-tails-curve.mask.rgb24.ref.png diff --git a/cairo/test/reference/caps-tails-curve.ps.ref.png b/3rd-party/cairo/test/reference/caps-tails-curve.ps.ref.png similarity index 100% rename from cairo/test/reference/caps-tails-curve.ps.ref.png rename to 3rd-party/cairo/test/reference/caps-tails-curve.ps.ref.png diff --git a/cairo/test/reference/caps-tails-curve.ref.png b/3rd-party/cairo/test/reference/caps-tails-curve.ref.png similarity index 100% rename from cairo/test/reference/caps-tails-curve.ref.png rename to 3rd-party/cairo/test/reference/caps-tails-curve.ref.png diff --git a/cairo/test/reference/caps-tails-curve.traps.argb32.ref.png b/3rd-party/cairo/test/reference/caps-tails-curve.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/caps-tails-curve.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/caps-tails-curve.traps.argb32.ref.png diff --git a/cairo/test/reference/caps-tails-curve.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/caps-tails-curve.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/caps-tails-curve.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/caps-tails-curve.traps.rgb24.ref.png diff --git a/cairo/test/reference/caps-tails-curve.xcb.ref.png b/3rd-party/cairo/test/reference/caps-tails-curve.xcb.ref.png similarity index 100% rename from cairo/test/reference/caps-tails-curve.xcb.ref.png rename to 3rd-party/cairo/test/reference/caps-tails-curve.xcb.ref.png diff --git a/cairo/test/reference/caps.argb32.ref.png b/3rd-party/cairo/test/reference/caps.argb32.ref.png similarity index 100% rename from cairo/test/reference/caps.argb32.ref.png rename to 3rd-party/cairo/test/reference/caps.argb32.ref.png diff --git a/cairo/test/reference/caps.base.argb32.ref.png b/3rd-party/cairo/test/reference/caps.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/caps.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/caps.base.argb32.ref.png diff --git a/cairo/test/reference/caps.base.rgb24.ref.png b/3rd-party/cairo/test/reference/caps.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/caps.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/caps.base.rgb24.ref.png diff --git a/cairo/test/reference/caps.image16.ref.png b/3rd-party/cairo/test/reference/caps.image16.ref.png similarity index 100% rename from cairo/test/reference/caps.image16.ref.png rename to 3rd-party/cairo/test/reference/caps.image16.ref.png diff --git a/cairo/test/reference/caps.ps.ref.png b/3rd-party/cairo/test/reference/caps.ps.ref.png similarity index 100% rename from cairo/test/reference/caps.ps.ref.png rename to 3rd-party/cairo/test/reference/caps.ps.ref.png diff --git a/cairo/test/reference/caps.rgb24.ref.png b/3rd-party/cairo/test/reference/caps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/caps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/caps.rgb24.ref.png diff --git a/cairo/test/reference/caps.traps.argb32.ref.png b/3rd-party/cairo/test/reference/caps.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/caps.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/caps.traps.argb32.ref.png diff --git a/cairo/test/reference/caps.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/caps.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/caps.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/caps.traps.rgb24.ref.png diff --git a/cairo/test/reference/checkerboard.base.argb32.ref.png b/3rd-party/cairo/test/reference/checkerboard.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/checkerboard.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/checkerboard.base.argb32.ref.png diff --git a/cairo/test/reference/checkerboard.base.rgb24.ref.png b/3rd-party/cairo/test/reference/checkerboard.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/checkerboard.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/checkerboard.base.rgb24.ref.png diff --git a/cairo/test/reference/checkerboard.ref.png b/3rd-party/cairo/test/reference/checkerboard.ref.png similarity index 100% rename from cairo/test/reference/checkerboard.ref.png rename to 3rd-party/cairo/test/reference/checkerboard.ref.png diff --git a/cairo/test/reference/clear-source.argb32.ref.png b/3rd-party/cairo/test/reference/clear-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/clear-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/clear-source.argb32.ref.png diff --git a/cairo/test/reference/clear-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/clear-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clear-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clear-source.base.argb32.ref.png diff --git a/cairo/test/reference/clear-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clear-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clear-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clear-source.base.rgb24.ref.png diff --git a/cairo/test/reference/clear-source.image16.ref.png b/3rd-party/cairo/test/reference/clear-source.image16.ref.png similarity index 100% rename from cairo/test/reference/clear-source.image16.ref.png rename to 3rd-party/cairo/test/reference/clear-source.image16.ref.png diff --git a/cairo/test/reference/clear-source.pdf.xfail.png b/3rd-party/cairo/test/reference/clear-source.pdf.xfail.png similarity index 100% rename from cairo/test/reference/clear-source.pdf.xfail.png rename to 3rd-party/cairo/test/reference/clear-source.pdf.xfail.png diff --git a/cairo/test/reference/clear-source.ps.xfail.png b/3rd-party/cairo/test/reference/clear-source.ps.xfail.png similarity index 100% rename from cairo/test/reference/clear-source.ps.xfail.png rename to 3rd-party/cairo/test/reference/clear-source.ps.xfail.png diff --git a/cairo/test/reference/clear-source.rgb24.ref.png b/3rd-party/cairo/test/reference/clear-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clear-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clear-source.rgb24.ref.png diff --git a/cairo/test/reference/clear-source.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clear-source.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clear-source.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clear-source.traps.argb32.ref.png diff --git a/cairo/test/reference/clear-source.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clear-source.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clear-source.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clear-source.traps.rgb24.ref.png diff --git a/cairo/test/reference/clear.argb32.ref.png b/3rd-party/cairo/test/reference/clear.argb32.ref.png similarity index 100% rename from cairo/test/reference/clear.argb32.ref.png rename to 3rd-party/cairo/test/reference/clear.argb32.ref.png diff --git a/cairo/test/reference/clear.base.argb32.ref.png b/3rd-party/cairo/test/reference/clear.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clear.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clear.base.argb32.ref.png diff --git a/cairo/test/reference/clear.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clear.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clear.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clear.base.rgb24.ref.png diff --git a/cairo/test/reference/clear.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/clear.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/clear.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/clear.pdf.argb32.ref.png diff --git a/cairo/test/reference/clear.ps.argb32.ref.png b/3rd-party/cairo/test/reference/clear.ps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clear.ps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clear.ps.argb32.ref.png diff --git a/cairo/test/reference/clear.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/clear.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/clear.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/clear.quartz.argb32.ref.png diff --git a/cairo/test/reference/clear.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/clear.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clear.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clear.quartz.rgb24.ref.png diff --git a/cairo/test/reference/clear.rgb24.ref.png b/3rd-party/cairo/test/reference/clear.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clear.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clear.rgb24.ref.png diff --git a/cairo/test/reference/clear.svg12.argb32.xfail.png b/3rd-party/cairo/test/reference/clear.svg12.argb32.xfail.png similarity index 100% rename from cairo/test/reference/clear.svg12.argb32.xfail.png rename to 3rd-party/cairo/test/reference/clear.svg12.argb32.xfail.png diff --git a/cairo/test/reference/clear.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/clear.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/clear.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/clear.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/clear.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clear.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clear.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clear.traps.argb32.ref.png diff --git a/cairo/test/reference/clear.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clear.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clear.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clear.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-all.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-all.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-all.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-all.base.argb32.ref.png diff --git a/cairo/test/reference/clip-all.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-all.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-all.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-all.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-all.ref.png b/3rd-party/cairo/test/reference/clip-all.ref.png similarity index 100% rename from cairo/test/reference/clip-all.ref.png rename to 3rd-party/cairo/test/reference/clip-all.ref.png diff --git a/cairo/test/reference/clip-complex-bug61492.ref.png b/3rd-party/cairo/test/reference/clip-complex-bug61492.ref.png similarity index 100% rename from cairo/test/reference/clip-complex-bug61492.ref.png rename to 3rd-party/cairo/test/reference/clip-complex-bug61492.ref.png diff --git a/cairo/test/reference/clip-complex-shape-eo-aa.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-complex-shape-eo-aa.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.base.argb32.ref.png diff --git a/cairo/test/reference/clip-complex-shape-eo-aa.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-complex-shape-eo-aa.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-complex-shape-eo-aa.ref.png b/3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.ref.png similarity index 100% rename from cairo/test/reference/clip-complex-shape-eo-aa.ref.png rename to 3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.ref.png diff --git a/cairo/test/reference/clip-complex-shape-eo-mono.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-complex-shape-eo-mono.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.base.argb32.ref.png diff --git a/cairo/test/reference/clip-complex-shape-eo-mono.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-complex-shape-eo-mono.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-complex-shape-eo-mono.ref.png b/3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.ref.png similarity index 100% rename from cairo/test/reference/clip-complex-shape-eo-mono.ref.png rename to 3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.ref.png diff --git a/cairo/test/reference/clip-contexts.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-contexts.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-contexts.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-contexts.base.argb32.ref.png diff --git a/cairo/test/reference/clip-contexts.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-contexts.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-contexts.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-contexts.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-contexts.ref.png b/3rd-party/cairo/test/reference/clip-contexts.ref.png similarity index 100% rename from cairo/test/reference/clip-contexts.ref.png rename to 3rd-party/cairo/test/reference/clip-contexts.ref.png diff --git a/cairo/test/reference/clip-device-offset.argb32.ref.png b/3rd-party/cairo/test/reference/clip-device-offset.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-device-offset.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-device-offset.argb32.ref.png diff --git a/cairo/test/reference/clip-device-offset.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-device-offset.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-device-offset.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-device-offset.base.argb32.ref.png diff --git a/cairo/test/reference/clip-device-offset.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-device-offset.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-device-offset.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-device-offset.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-device-offset.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-device-offset.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-device-offset.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-device-offset.rgb24.ref.png diff --git a/cairo/test/reference/clip-disjoint-hatching.argb32.ref.png b/3rd-party/cairo/test/reference/clip-disjoint-hatching.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint-hatching.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint-hatching.argb32.ref.png diff --git a/cairo/test/reference/clip-disjoint-hatching.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-disjoint-hatching.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint-hatching.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint-hatching.base.argb32.ref.png diff --git a/cairo/test/reference/clip-disjoint-hatching.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-disjoint-hatching.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint-hatching.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint-hatching.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-disjoint-hatching.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clip-disjoint-hatching.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint-hatching.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint-hatching.mask.argb32.ref.png diff --git a/cairo/test/reference/clip-disjoint-hatching.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-disjoint-hatching.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint-hatching.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint-hatching.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-disjoint-hatching.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-disjoint-hatching.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint-hatching.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint-hatching.rgb24.ref.png diff --git a/cairo/test/reference/clip-disjoint-hatching.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-disjoint-hatching.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint-hatching.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint-hatching.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-disjoint-hatching.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-disjoint-hatching.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint-hatching.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint-hatching.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-disjoint-quad.ref.png b/3rd-party/cairo/test/reference/clip-disjoint-quad.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint-quad.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint-quad.ref.png diff --git a/cairo/test/reference/clip-disjoint-quad.traps.ref.png b/3rd-party/cairo/test/reference/clip-disjoint-quad.traps.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint-quad.traps.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint-quad.traps.ref.png diff --git a/cairo/test/reference/clip-disjoint.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-disjoint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint.base.argb32.ref.png diff --git a/cairo/test/reference/clip-disjoint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-disjoint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-disjoint.image16.ref.png b/3rd-party/cairo/test/reference/clip-disjoint.image16.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint.image16.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint.image16.ref.png diff --git a/cairo/test/reference/clip-disjoint.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clip-disjoint.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint.mask.argb32.ref.png diff --git a/cairo/test/reference/clip-disjoint.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-disjoint.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-disjoint.ps.ref.png b/3rd-party/cairo/test/reference/clip-disjoint.ps.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint.ps.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint.ps.ref.png diff --git a/cairo/test/reference/clip-disjoint.quartz.ref.png b/3rd-party/cairo/test/reference/clip-disjoint.quartz.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint.quartz.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint.quartz.ref.png diff --git a/cairo/test/reference/clip-disjoint.ref.png b/3rd-party/cairo/test/reference/clip-disjoint.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint.ref.png diff --git a/cairo/test/reference/clip-disjoint.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-disjoint.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-disjoint.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-disjoint.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-disjoint.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-disjoint.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-empty-group.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-empty-group.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-empty-group.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-empty-group.base.argb32.ref.png diff --git a/cairo/test/reference/clip-empty-group.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-empty-group.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-empty-group.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-empty-group.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-empty-group.ref.png b/3rd-party/cairo/test/reference/clip-empty-group.ref.png similarity index 100% rename from cairo/test/reference/clip-empty-group.ref.png rename to 3rd-party/cairo/test/reference/clip-empty-group.ref.png diff --git a/cairo/test/reference/clip-empty-save.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-empty-save.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-empty-save.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-empty-save.base.argb32.ref.png diff --git a/cairo/test/reference/clip-empty-save.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-empty-save.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-empty-save.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-empty-save.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-empty-save.ref.png b/3rd-party/cairo/test/reference/clip-empty-save.ref.png similarity index 100% rename from cairo/test/reference/clip-empty-save.ref.png rename to 3rd-party/cairo/test/reference/clip-empty-save.ref.png diff --git a/cairo/test/reference/clip-empty.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-empty.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-empty.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-empty.base.argb32.ref.png diff --git a/cairo/test/reference/clip-empty.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-empty.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-empty.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-empty.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-empty.ref.png b/3rd-party/cairo/test/reference/clip-empty.ref.png similarity index 100% rename from cairo/test/reference/clip-empty.ref.png rename to 3rd-party/cairo/test/reference/clip-empty.ref.png diff --git a/cairo/test/reference/clip-fill-eo-unbounded.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-eo-unbounded.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-eo-unbounded.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-eo-unbounded.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.base.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-eo-unbounded.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-eo-unbounded.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-eo-unbounded.image16.ref.png b/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.image16.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-eo-unbounded.image16.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.image16.ref.png diff --git a/cairo/test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-eo-unbounded.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-eo-unbounded.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.quartz.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-eo-unbounded.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-eo-unbounded.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.quartz.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-eo-unbounded.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-eo-unbounded.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-eo-unbounded.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/clip-fill-eo-unbounded.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/clip-fill-eo-unbounded.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-eo-unbounded.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-eo-unbounded.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-eo-unbounded.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-eo-unbounded.xlib-fallback.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.xlib-fallback.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-eo-unbounded.xlib-fallback.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.xlib-fallback.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-no-op.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-no-op.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-no-op.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-no-op.base.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-no-op.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-no-op.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-no-op.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-no-op.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-no-op.image16.ref.png b/3rd-party/cairo/test/reference/clip-fill-no-op.image16.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-no-op.image16.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-no-op.image16.ref.png diff --git a/cairo/test/reference/clip-fill-no-op.ref.png b/3rd-party/cairo/test/reference/clip-fill-no-op.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-no-op.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-no-op.ref.png diff --git a/cairo/test/reference/clip-fill-nz-unbounded.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-nz-unbounded.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-nz-unbounded.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-nz-unbounded.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.base.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-nz-unbounded.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-nz-unbounded.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-nz-unbounded.image16.ref.png b/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.image16.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-nz-unbounded.image16.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.image16.ref.png diff --git a/cairo/test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-nz-unbounded.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-nz-unbounded.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.quartz.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-nz-unbounded.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-nz-unbounded.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.quartz.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-nz-unbounded.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-nz-unbounded.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-nz-unbounded.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/clip-fill-nz-unbounded.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/clip-fill-nz-unbounded.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-nz-unbounded.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-nz-unbounded.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-nz-unbounded.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-nz-unbounded.xlib-fallback.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.xlib-fallback.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-nz-unbounded.xlib-fallback.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.xlib-fallback.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-rule-pixel-aligned.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-rule-pixel-aligned.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-rule-pixel-aligned.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-rule-pixel-aligned.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.base.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-rule-pixel-aligned.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-rule-pixel-aligned.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-rule-pixel-aligned.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-rule-pixel-aligned.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-rule.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-rule.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-rule.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-rule.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-rule.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-rule.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-rule.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-rule.base.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-rule.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-rule.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-rule.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-rule.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-rule.image16.ref.png b/3rd-party/cairo/test/reference/clip-fill-rule.image16.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-rule.image16.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-rule.image16.ref.png diff --git a/cairo/test/reference/clip-fill-rule.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-rule.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-rule.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-rule.pdf.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-rule.ps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-rule.ps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-rule.ps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-rule.ps.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-rule.ps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-rule.ps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-rule.ps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-rule.ps.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-rule.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-rule.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-rule.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-rule.quartz.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-rule.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-rule.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-rule.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-rule.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-rule.test-paginated.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-rule.test-paginated.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-rule.test-paginated.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-rule.test-paginated.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill-rule.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill-rule.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-rule.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-rule.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-fill-rule.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill-rule.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill-rule.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill-rule.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill.argb32.ref.png diff --git a/cairo/test/reference/clip-fill.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill.base.argb32.ref.png diff --git a/cairo/test/reference/clip-fill.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill.image16.ref.png b/3rd-party/cairo/test/reference/clip-fill.image16.ref.png similarity index 100% rename from cairo/test/reference/clip-fill.image16.ref.png rename to 3rd-party/cairo/test/reference/clip-fill.image16.ref.png diff --git a/cairo/test/reference/clip-fill.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill.mask.argb32.ref.png diff --git a/cairo/test/reference/clip-fill.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill.ps.xfail.png b/3rd-party/cairo/test/reference/clip-fill.ps.xfail.png similarity index 100% rename from cairo/test/reference/clip-fill.ps.xfail.png rename to 3rd-party/cairo/test/reference/clip-fill.ps.xfail.png diff --git a/cairo/test/reference/clip-fill.quartz.ref.png b/3rd-party/cairo/test/reference/clip-fill.quartz.ref.png similarity index 100% rename from cairo/test/reference/clip-fill.quartz.ref.png rename to 3rd-party/cairo/test/reference/clip-fill.quartz.ref.png diff --git a/cairo/test/reference/clip-fill.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-fill.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-fill.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-fill.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-fill.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-fill.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-fill.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-fill.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-fill.xlib-fallback.ref.png b/3rd-party/cairo/test/reference/clip-fill.xlib-fallback.ref.png similarity index 100% rename from cairo/test/reference/clip-fill.xlib-fallback.ref.png rename to 3rd-party/cairo/test/reference/clip-fill.xlib-fallback.ref.png diff --git a/cairo/test/reference/clip-group-shapes-aligned-rectangles.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-aligned-rectangles.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.base.argb32.ref.png diff --git a/cairo/test/reference/clip-group-shapes-aligned-rectangles.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-aligned-rectangles.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-group-shapes-aligned-rectangles.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-aligned-rectangles.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.ref.png diff --git a/cairo/test/reference/clip-group-shapes-circles.argb32.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-circles.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-circles.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-circles.argb32.ref.png diff --git a/cairo/test/reference/clip-group-shapes-circles.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-circles.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-circles.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-circles.base.argb32.ref.png diff --git a/cairo/test/reference/clip-group-shapes-circles.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-circles.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-circles.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-circles.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-group-shapes-circles.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-circles.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-circles.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-circles.mask.argb32.ref.png diff --git a/cairo/test/reference/clip-group-shapes-circles.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-circles.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-circles.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-circles.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-group-shapes-circles.ps.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-circles.ps.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-circles.ps.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-circles.ps.ref.png diff --git a/cairo/test/reference/clip-group-shapes-circles.quartz.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-circles.quartz.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-circles.quartz.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-circles.quartz.ref.png diff --git a/cairo/test/reference/clip-group-shapes-circles.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-circles.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-circles.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-circles.rgb24.ref.png diff --git a/cairo/test/reference/clip-group-shapes-circles.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-circles.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-circles.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-circles.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-group-shapes-circles.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-circles.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-circles.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-circles.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.argb32.ref.png diff --git a/cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png diff --git a/cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-group-shapes-unaligned-rectangles.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-unaligned-rectangles.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.ref.png diff --git a/cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-image.argb32.ref.png b/3rd-party/cairo/test/reference/clip-image.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-image.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-image.argb32.ref.png diff --git a/cairo/test/reference/clip-image.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-image.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-image.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-image.base.argb32.ref.png diff --git a/cairo/test/reference/clip-image.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-image.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-image.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-image.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-image.image16.ref.png b/3rd-party/cairo/test/reference/clip-image.image16.ref.png similarity index 100% rename from cairo/test/reference/clip-image.image16.ref.png rename to 3rd-party/cairo/test/reference/clip-image.image16.ref.png diff --git a/cairo/test/reference/clip-image.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clip-image.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-image.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-image.mask.argb32.ref.png diff --git a/cairo/test/reference/clip-image.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-image.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-image.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-image.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-image.ps.ref.png b/3rd-party/cairo/test/reference/clip-image.ps.ref.png similarity index 100% rename from cairo/test/reference/clip-image.ps.ref.png rename to 3rd-party/cairo/test/reference/clip-image.ps.ref.png diff --git a/cairo/test/reference/clip-image.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-image.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-image.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-image.rgb24.ref.png diff --git a/cairo/test/reference/clip-image.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-image.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-image.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-image.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-image.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-image.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-image.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-image.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-intersect.argb32.ref.png b/3rd-party/cairo/test/reference/clip-intersect.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-intersect.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-intersect.argb32.ref.png diff --git a/cairo/test/reference/clip-intersect.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-intersect.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-intersect.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-intersect.base.argb32.ref.png diff --git a/cairo/test/reference/clip-intersect.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-intersect.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-intersect.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-intersect.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-intersect.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-intersect.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-intersect.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-intersect.rgb24.ref.png diff --git a/cairo/test/reference/clip-intersect.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-intersect.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-intersect.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-intersect.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-intersect.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-intersect.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-intersect.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-intersect.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-mixed-antialias.argb32.ref.png b/3rd-party/cairo/test/reference/clip-mixed-antialias.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-mixed-antialias.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-mixed-antialias.argb32.ref.png diff --git a/cairo/test/reference/clip-mixed-antialias.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-mixed-antialias.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-mixed-antialias.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-mixed-antialias.base.argb32.ref.png diff --git a/cairo/test/reference/clip-mixed-antialias.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-mixed-antialias.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-mixed-antialias.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-mixed-antialias.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-mixed-antialias.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-mixed-antialias.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-mixed-antialias.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-mixed-antialias.rgb24.ref.png diff --git a/cairo/test/reference/clip-mixed-antialias.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-mixed-antialias.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-mixed-antialias.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-mixed-antialias.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-mixed-antialias.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-mixed-antialias.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-mixed-antialias.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-mixed-antialias.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-nesting.argb32.ref.png b/3rd-party/cairo/test/reference/clip-nesting.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-nesting.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-nesting.argb32.ref.png diff --git a/cairo/test/reference/clip-nesting.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-nesting.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-nesting.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-nesting.base.argb32.ref.png diff --git a/cairo/test/reference/clip-nesting.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-nesting.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-nesting.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-nesting.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-nesting.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-nesting.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-nesting.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-nesting.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-nesting.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/clip-nesting.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-nesting.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-nesting.pdf.argb32.ref.png diff --git a/cairo/test/reference/clip-nesting.ps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-nesting.ps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-nesting.ps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-nesting.ps.argb32.ref.png diff --git a/cairo/test/reference/clip-nesting.ps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-nesting.ps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-nesting.ps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-nesting.ps.rgb24.ref.png diff --git a/cairo/test/reference/clip-nesting.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/clip-nesting.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-nesting.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-nesting.quartz.argb32.ref.png diff --git a/cairo/test/reference/clip-nesting.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-nesting.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-nesting.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-nesting.quartz.rgb24.ref.png diff --git a/cairo/test/reference/clip-nesting.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-nesting.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-nesting.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-nesting.rgb24.ref.png diff --git a/cairo/test/reference/clip-nesting.test-paginated.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-nesting.test-paginated.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-nesting.test-paginated.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-nesting.test-paginated.rgb24.ref.png diff --git a/cairo/test/reference/clip-nesting.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-nesting.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-nesting.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-nesting.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-nesting.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-nesting.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-nesting.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-nesting.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-operator.argb32.ref.png b/3rd-party/cairo/test/reference/clip-operator.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.argb32.ref.png diff --git a/cairo/test/reference/clip-operator.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-operator.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.base.argb32.ref.png diff --git a/cairo/test/reference/clip-operator.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-operator.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-operator.gl.argb32.ref.png b/3rd-party/cairo/test/reference/clip-operator.gl.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.gl.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.gl.argb32.ref.png diff --git a/cairo/test/reference/clip-operator.image16.ref.png b/3rd-party/cairo/test/reference/clip-operator.image16.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.image16.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.image16.ref.png diff --git a/cairo/test/reference/clip-operator.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clip-operator.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.mask.argb32.ref.png diff --git a/cairo/test/reference/clip-operator.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-operator.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-operator.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/clip-operator.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.pdf.argb32.ref.png diff --git a/cairo/test/reference/clip-operator.pdf.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-operator.pdf.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.pdf.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.pdf.rgb24.ref.png diff --git a/cairo/test/reference/clip-operator.ps2.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-operator.ps2.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.ps2.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.ps2.rgb24.ref.png diff --git a/cairo/test/reference/clip-operator.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/clip-operator.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.ps3.argb32.ref.png diff --git a/cairo/test/reference/clip-operator.ps3.ref.png b/3rd-party/cairo/test/reference/clip-operator.ps3.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.ps3.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.ps3.ref.png diff --git a/cairo/test/reference/clip-operator.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-operator.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.ps3.rgb24.ref.png diff --git a/cairo/test/reference/clip-operator.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/clip-operator.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.quartz.argb32.ref.png diff --git a/cairo/test/reference/clip-operator.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-operator.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.quartz.rgb24.ref.png diff --git a/cairo/test/reference/clip-operator.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-operator.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.rgb24.ref.png diff --git a/cairo/test/reference/clip-operator.svg12.argb32.xfail.png b/3rd-party/cairo/test/reference/clip-operator.svg12.argb32.xfail.png similarity index 100% rename from cairo/test/reference/clip-operator.svg12.argb32.xfail.png rename to 3rd-party/cairo/test/reference/clip-operator.svg12.argb32.xfail.png diff --git a/cairo/test/reference/clip-operator.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/clip-operator.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/clip-operator.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/clip-operator.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/clip-operator.test-paginated.argb32.ref.png b/3rd-party/cairo/test/reference/clip-operator.test-paginated.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.test-paginated.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.test-paginated.argb32.ref.png diff --git a/cairo/test/reference/clip-operator.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-operator.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-operator.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-operator.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-operator.xlib-fallback.ref.png b/3rd-party/cairo/test/reference/clip-operator.xlib-fallback.ref.png similarity index 100% rename from cairo/test/reference/clip-operator.xlib-fallback.ref.png rename to 3rd-party/cairo/test/reference/clip-operator.xlib-fallback.ref.png diff --git a/cairo/test/reference/clip-polygons.argb32.ref.png b/3rd-party/cairo/test/reference/clip-polygons.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-polygons.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-polygons.argb32.ref.png diff --git a/cairo/test/reference/clip-polygons.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-polygons.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-polygons.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-polygons.base.argb32.ref.png diff --git a/cairo/test/reference/clip-polygons.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-polygons.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-polygons.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-polygons.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-polygons.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clip-polygons.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-polygons.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-polygons.mask.argb32.ref.png diff --git a/cairo/test/reference/clip-polygons.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-polygons.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-polygons.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-polygons.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-polygons.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-polygons.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-polygons.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-polygons.rgb24.ref.png diff --git a/cairo/test/reference/clip-polygons.traps.ref.png b/3rd-party/cairo/test/reference/clip-polygons.traps.ref.png similarity index 100% rename from cairo/test/reference/clip-polygons.traps.ref.png rename to 3rd-party/cairo/test/reference/clip-polygons.traps.ref.png diff --git a/cairo/test/reference/clip-push-group.argb32.ref.png b/3rd-party/cairo/test/reference/clip-push-group.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-push-group.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-push-group.argb32.ref.png diff --git a/cairo/test/reference/clip-push-group.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-push-group.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-push-group.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-push-group.base.argb32.ref.png diff --git a/cairo/test/reference/clip-push-group.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-push-group.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-push-group.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-push-group.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-push-group.image16.ref.png b/3rd-party/cairo/test/reference/clip-push-group.image16.ref.png similarity index 100% rename from cairo/test/reference/clip-push-group.image16.ref.png rename to 3rd-party/cairo/test/reference/clip-push-group.image16.ref.png diff --git a/cairo/test/reference/clip-push-group.pdf.ref.png b/3rd-party/cairo/test/reference/clip-push-group.pdf.ref.png similarity index 100% rename from cairo/test/reference/clip-push-group.pdf.ref.png rename to 3rd-party/cairo/test/reference/clip-push-group.pdf.ref.png diff --git a/cairo/test/reference/clip-push-group.ps.ref.png b/3rd-party/cairo/test/reference/clip-push-group.ps.ref.png similarity index 100% rename from cairo/test/reference/clip-push-group.ps.ref.png rename to 3rd-party/cairo/test/reference/clip-push-group.ps.ref.png diff --git a/cairo/test/reference/clip-push-group.quartz.ref.png b/3rd-party/cairo/test/reference/clip-push-group.quartz.ref.png similarity index 100% rename from cairo/test/reference/clip-push-group.quartz.ref.png rename to 3rd-party/cairo/test/reference/clip-push-group.quartz.ref.png diff --git a/cairo/test/reference/clip-push-group.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-push-group.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-push-group.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-push-group.rgb24.ref.png diff --git a/cairo/test/reference/clip-push-group.svg.ref.png b/3rd-party/cairo/test/reference/clip-push-group.svg.ref.png similarity index 100% rename from cairo/test/reference/clip-push-group.svg.ref.png rename to 3rd-party/cairo/test/reference/clip-push-group.svg.ref.png diff --git a/cairo/test/reference/clip-push-group.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-push-group.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-push-group.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-push-group.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-push-group.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-push-group.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-push-group.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-push-group.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-rectilinear.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-rectilinear.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-rectilinear.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-rectilinear.base.argb32.ref.png diff --git a/cairo/test/reference/clip-rectilinear.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-rectilinear.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-rectilinear.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-rectilinear.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-rectilinear.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clip-rectilinear.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-rectilinear.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-rectilinear.mask.argb32.ref.png diff --git a/cairo/test/reference/clip-rectilinear.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-rectilinear.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-rectilinear.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-rectilinear.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-rectilinear.ref.png b/3rd-party/cairo/test/reference/clip-rectilinear.ref.png similarity index 100% rename from cairo/test/reference/clip-rectilinear.ref.png rename to 3rd-party/cairo/test/reference/clip-rectilinear.ref.png diff --git a/cairo/test/reference/clip-rectilinear.traps.ref.png b/3rd-party/cairo/test/reference/clip-rectilinear.traps.ref.png similarity index 100% rename from cairo/test/reference/clip-rectilinear.traps.ref.png rename to 3rd-party/cairo/test/reference/clip-rectilinear.traps.ref.png diff --git a/cairo/test/reference/clip-rotate-image-surface-paint.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-rotate-image-surface-paint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.base.argb32.ref.png diff --git a/cairo/test/reference/clip-rotate-image-surface-paint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-rotate-image-surface-paint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-rotate-image-surface-paint.ref.png b/3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.ref.png similarity index 100% rename from cairo/test/reference/clip-rotate-image-surface-paint.ref.png rename to 3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.ref.png diff --git a/cairo/test/reference/clip-shape.argb32.ref.png b/3rd-party/cairo/test/reference/clip-shape.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-shape.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-shape.argb32.ref.png diff --git a/cairo/test/reference/clip-shape.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-shape.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-shape.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-shape.base.argb32.ref.png diff --git a/cairo/test/reference/clip-shape.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-shape.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-shape.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-shape.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-shape.image16.ref.png b/3rd-party/cairo/test/reference/clip-shape.image16.ref.png similarity index 100% rename from cairo/test/reference/clip-shape.image16.ref.png rename to 3rd-party/cairo/test/reference/clip-shape.image16.ref.png diff --git a/cairo/test/reference/clip-shape.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clip-shape.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-shape.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-shape.mask.argb32.ref.png diff --git a/cairo/test/reference/clip-shape.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-shape.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-shape.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-shape.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-shape.ps.ref.png b/3rd-party/cairo/test/reference/clip-shape.ps.ref.png similarity index 100% rename from cairo/test/reference/clip-shape.ps.ref.png rename to 3rd-party/cairo/test/reference/clip-shape.ps.ref.png diff --git a/cairo/test/reference/clip-shape.quartz.ref.png b/3rd-party/cairo/test/reference/clip-shape.quartz.ref.png similarity index 100% rename from cairo/test/reference/clip-shape.quartz.ref.png rename to 3rd-party/cairo/test/reference/clip-shape.quartz.ref.png diff --git a/cairo/test/reference/clip-shape.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-shape.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-shape.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-shape.rgb24.ref.png diff --git a/cairo/test/reference/clip-shape.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-shape.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-shape.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-shape.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-shape.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-shape.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-shape.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-shape.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-shape.xlib-fallback.ref.png b/3rd-party/cairo/test/reference/clip-shape.xlib-fallback.ref.png similarity index 100% rename from cairo/test/reference/clip-shape.xlib-fallback.ref.png rename to 3rd-party/cairo/test/reference/clip-shape.xlib-fallback.ref.png diff --git a/cairo/test/reference/clip-stroke-no-op.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-stroke-no-op.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke-no-op.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke-no-op.base.argb32.ref.png diff --git a/cairo/test/reference/clip-stroke-no-op.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-stroke-no-op.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke-no-op.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke-no-op.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-stroke-no-op.image16.ref.png b/3rd-party/cairo/test/reference/clip-stroke-no-op.image16.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke-no-op.image16.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke-no-op.image16.ref.png diff --git a/cairo/test/reference/clip-stroke-no-op.ref.png b/3rd-party/cairo/test/reference/clip-stroke-no-op.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke-no-op.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke-no-op.ref.png diff --git a/cairo/test/reference/clip-stroke-unbounded.argb32.ref.png b/3rd-party/cairo/test/reference/clip-stroke-unbounded.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke-unbounded.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke-unbounded.argb32.ref.png diff --git a/cairo/test/reference/clip-stroke-unbounded.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-stroke-unbounded.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke-unbounded.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke-unbounded.base.argb32.ref.png diff --git a/cairo/test/reference/clip-stroke-unbounded.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-stroke-unbounded.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke-unbounded.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke-unbounded.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-stroke-unbounded.image16.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-stroke-unbounded.image16.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke-unbounded.image16.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke-unbounded.image16.rgb24.ref.png diff --git a/cairo/test/reference/clip-stroke-unbounded.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clip-stroke-unbounded.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke-unbounded.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke-unbounded.mask.argb32.ref.png diff --git a/cairo/test/reference/clip-stroke-unbounded.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-stroke-unbounded.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke-unbounded.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke-unbounded.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-stroke-unbounded.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/clip-stroke-unbounded.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke-unbounded.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke-unbounded.quartz.argb32.ref.png diff --git a/cairo/test/reference/clip-stroke-unbounded.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-stroke-unbounded.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke-unbounded.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke-unbounded.quartz.rgb24.ref.png diff --git a/cairo/test/reference/clip-stroke-unbounded.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-stroke-unbounded.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke-unbounded.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke-unbounded.rgb24.ref.png diff --git a/cairo/test/reference/clip-stroke-unbounded.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/clip-stroke-unbounded.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/clip-stroke-unbounded.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/clip-stroke-unbounded.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/clip-stroke-unbounded.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-stroke-unbounded.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke-unbounded.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke-unbounded.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-stroke-unbounded.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-stroke-unbounded.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke-unbounded.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke-unbounded.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-stroke-unbounded.xlib-fallback.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-stroke-unbounded.xlib-fallback.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke-unbounded.xlib-fallback.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke-unbounded.xlib-fallback.rgb24.ref.png diff --git a/cairo/test/reference/clip-stroke.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-stroke.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke.base.argb32.ref.png diff --git a/cairo/test/reference/clip-stroke.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-stroke.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-stroke.image16.ref.png b/3rd-party/cairo/test/reference/clip-stroke.image16.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke.image16.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke.image16.ref.png diff --git a/cairo/test/reference/clip-stroke.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clip-stroke.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke.mask.argb32.ref.png diff --git a/cairo/test/reference/clip-stroke.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-stroke.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-stroke.ps.xfail.png b/3rd-party/cairo/test/reference/clip-stroke.ps.xfail.png similarity index 100% rename from cairo/test/reference/clip-stroke.ps.xfail.png rename to 3rd-party/cairo/test/reference/clip-stroke.ps.xfail.png diff --git a/cairo/test/reference/clip-stroke.quartz.ref.png b/3rd-party/cairo/test/reference/clip-stroke.quartz.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke.quartz.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke.quartz.ref.png diff --git a/cairo/test/reference/clip-stroke.ref.png b/3rd-party/cairo/test/reference/clip-stroke.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke.ref.png diff --git a/cairo/test/reference/clip-stroke.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-stroke.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-stroke.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-stroke.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-stroke.xlib-fallback.ref.png b/3rd-party/cairo/test/reference/clip-stroke.xlib-fallback.ref.png similarity index 100% rename from cairo/test/reference/clip-stroke.xlib-fallback.ref.png rename to 3rd-party/cairo/test/reference/clip-stroke.xlib-fallback.ref.png diff --git a/cairo/test/reference/clip-text.argb32.ref.png b/3rd-party/cairo/test/reference/clip-text.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-text.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-text.argb32.ref.png diff --git a/cairo/test/reference/clip-text.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-text.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-text.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-text.base.argb32.ref.png diff --git a/cairo/test/reference/clip-text.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-text.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-text.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-text.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-text.image16.ref.png b/3rd-party/cairo/test/reference/clip-text.image16.ref.png similarity index 100% rename from cairo/test/reference/clip-text.image16.ref.png rename to 3rd-party/cairo/test/reference/clip-text.image16.ref.png diff --git a/cairo/test/reference/clip-text.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clip-text.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-text.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-text.mask.argb32.ref.png diff --git a/cairo/test/reference/clip-text.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-text.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-text.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-text.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-text.ps.xfail.png b/3rd-party/cairo/test/reference/clip-text.ps.xfail.png similarity index 100% rename from cairo/test/reference/clip-text.ps.xfail.png rename to 3rd-party/cairo/test/reference/clip-text.ps.xfail.png diff --git a/cairo/test/reference/clip-text.quartz.ref.png b/3rd-party/cairo/test/reference/clip-text.quartz.ref.png similarity index 100% rename from cairo/test/reference/clip-text.quartz.ref.png rename to 3rd-party/cairo/test/reference/clip-text.quartz.ref.png diff --git a/cairo/test/reference/clip-text.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-text.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-text.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-text.rgb24.ref.png diff --git a/cairo/test/reference/clip-text.svg.ref.png b/3rd-party/cairo/test/reference/clip-text.svg.ref.png similarity index 100% rename from cairo/test/reference/clip-text.svg.ref.png rename to 3rd-party/cairo/test/reference/clip-text.svg.ref.png diff --git a/cairo/test/reference/clip-text.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-text.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-text.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-text.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-text.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-text.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-text.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-text.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-twice-rectangle.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-twice-rectangle.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-twice-rectangle.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-twice-rectangle.base.argb32.ref.png diff --git a/cairo/test/reference/clip-twice-rectangle.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-twice-rectangle.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-twice-rectangle.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-twice-rectangle.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-twice-rectangle.ref.png b/3rd-party/cairo/test/reference/clip-twice-rectangle.ref.png similarity index 100% rename from cairo/test/reference/clip-twice-rectangle.ref.png rename to 3rd-party/cairo/test/reference/clip-twice-rectangle.ref.png diff --git a/cairo/test/reference/clip-twice.argb32.ref.png b/3rd-party/cairo/test/reference/clip-twice.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-twice.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-twice.argb32.ref.png diff --git a/cairo/test/reference/clip-twice.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-twice.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-twice.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-twice.base.argb32.ref.png diff --git a/cairo/test/reference/clip-twice.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-twice.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-twice.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-twice.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-twice.image16.ref.png b/3rd-party/cairo/test/reference/clip-twice.image16.ref.png similarity index 100% rename from cairo/test/reference/clip-twice.image16.ref.png rename to 3rd-party/cairo/test/reference/clip-twice.image16.ref.png diff --git a/cairo/test/reference/clip-twice.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clip-twice.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-twice.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-twice.mask.argb32.ref.png diff --git a/cairo/test/reference/clip-twice.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-twice.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-twice.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-twice.mask.rgb24.ref.png diff --git a/cairo/test/reference/clip-twice.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/clip-twice.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-twice.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-twice.pdf.argb32.ref.png diff --git a/cairo/test/reference/clip-twice.ps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-twice.ps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-twice.ps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-twice.ps.argb32.ref.png diff --git a/cairo/test/reference/clip-twice.ps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-twice.ps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-twice.ps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-twice.ps.rgb24.ref.png diff --git a/cairo/test/reference/clip-twice.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/clip-twice.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-twice.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-twice.quartz.argb32.ref.png diff --git a/cairo/test/reference/clip-twice.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-twice.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-twice.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-twice.quartz.rgb24.ref.png diff --git a/cairo/test/reference/clip-twice.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-twice.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-twice.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-twice.rgb24.ref.png diff --git a/cairo/test/reference/clip-twice.test-paginated.argb32.ref.png b/3rd-party/cairo/test/reference/clip-twice.test-paginated.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-twice.test-paginated.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-twice.test-paginated.argb32.ref.png diff --git a/cairo/test/reference/clip-twice.test-paginated.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-twice.test-paginated.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-twice.test-paginated.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-twice.test-paginated.rgb24.ref.png diff --git a/cairo/test/reference/clip-twice.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clip-twice.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-twice.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-twice.traps.argb32.ref.png diff --git a/cairo/test/reference/clip-twice.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-twice.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-twice.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-twice.traps.rgb24.ref.png diff --git a/cairo/test/reference/clip-unbounded.argb32.ref.png b/3rd-party/cairo/test/reference/clip-unbounded.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-unbounded.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-unbounded.argb32.ref.png diff --git a/cairo/test/reference/clip-unbounded.base.argb32.ref.png b/3rd-party/cairo/test/reference/clip-unbounded.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-unbounded.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-unbounded.base.argb32.ref.png diff --git a/cairo/test/reference/clip-unbounded.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-unbounded.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-unbounded.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-unbounded.base.rgb24.ref.png diff --git a/cairo/test/reference/clip-unbounded.pdf.argb32.xfail.png b/3rd-party/cairo/test/reference/clip-unbounded.pdf.argb32.xfail.png similarity index 100% rename from cairo/test/reference/clip-unbounded.pdf.argb32.xfail.png rename to 3rd-party/cairo/test/reference/clip-unbounded.pdf.argb32.xfail.png diff --git a/cairo/test/reference/clip-unbounded.pdf.rgb24.xfail.png b/3rd-party/cairo/test/reference/clip-unbounded.pdf.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/clip-unbounded.pdf.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/clip-unbounded.pdf.rgb24.xfail.png diff --git a/cairo/test/reference/clip-unbounded.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-unbounded.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-unbounded.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-unbounded.rgb24.ref.png diff --git a/cairo/test/reference/clip-unbounded.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/clip-unbounded.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/clip-unbounded.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/clip-unbounded.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/clip-xlib-fallback.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-xlib-fallback.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-xlib-fallback.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-xlib-fallback.rgb24.ref.png diff --git a/cairo/test/reference/clip-xlib-window.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-xlib-window.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-xlib-window.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-xlib-window.rgb24.ref.png diff --git a/cairo/test/reference/clip-xlib.argb32.ref.png b/3rd-party/cairo/test/reference/clip-xlib.argb32.ref.png similarity index 100% rename from cairo/test/reference/clip-xlib.argb32.ref.png rename to 3rd-party/cairo/test/reference/clip-xlib.argb32.ref.png diff --git a/cairo/test/reference/clip-xlib.rgb24.ref.png b/3rd-party/cairo/test/reference/clip-xlib.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clip-xlib.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clip-xlib.rgb24.ref.png diff --git a/cairo/test/reference/clipped-group.argb32.ref.png b/3rd-party/cairo/test/reference/clipped-group.argb32.ref.png similarity index 100% rename from cairo/test/reference/clipped-group.argb32.ref.png rename to 3rd-party/cairo/test/reference/clipped-group.argb32.ref.png diff --git a/cairo/test/reference/clipped-group.base.argb32.ref.png b/3rd-party/cairo/test/reference/clipped-group.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clipped-group.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clipped-group.base.argb32.ref.png diff --git a/cairo/test/reference/clipped-group.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clipped-group.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clipped-group.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clipped-group.base.rgb24.ref.png diff --git a/cairo/test/reference/clipped-group.image16.ref.png b/3rd-party/cairo/test/reference/clipped-group.image16.ref.png similarity index 100% rename from cairo/test/reference/clipped-group.image16.ref.png rename to 3rd-party/cairo/test/reference/clipped-group.image16.ref.png diff --git a/cairo/test/reference/clipped-group.mask.argb32.ref.png b/3rd-party/cairo/test/reference/clipped-group.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/clipped-group.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/clipped-group.mask.argb32.ref.png diff --git a/cairo/test/reference/clipped-group.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/clipped-group.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clipped-group.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clipped-group.mask.rgb24.ref.png diff --git a/cairo/test/reference/clipped-group.pdf.ref.png b/3rd-party/cairo/test/reference/clipped-group.pdf.ref.png similarity index 100% rename from cairo/test/reference/clipped-group.pdf.ref.png rename to 3rd-party/cairo/test/reference/clipped-group.pdf.ref.png diff --git a/cairo/test/reference/clipped-group.ps2.ref.png b/3rd-party/cairo/test/reference/clipped-group.ps2.ref.png similarity index 100% rename from cairo/test/reference/clipped-group.ps2.ref.png rename to 3rd-party/cairo/test/reference/clipped-group.ps2.ref.png diff --git a/cairo/test/reference/clipped-group.ps3.ref.png b/3rd-party/cairo/test/reference/clipped-group.ps3.ref.png similarity index 100% rename from cairo/test/reference/clipped-group.ps3.ref.png rename to 3rd-party/cairo/test/reference/clipped-group.ps3.ref.png diff --git a/cairo/test/reference/clipped-group.quartz.ref.png b/3rd-party/cairo/test/reference/clipped-group.quartz.ref.png similarity index 100% rename from cairo/test/reference/clipped-group.quartz.ref.png rename to 3rd-party/cairo/test/reference/clipped-group.quartz.ref.png diff --git a/cairo/test/reference/clipped-group.rgb24.ref.png b/3rd-party/cairo/test/reference/clipped-group.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clipped-group.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clipped-group.rgb24.ref.png diff --git a/cairo/test/reference/clipped-group.svg.ref.png b/3rd-party/cairo/test/reference/clipped-group.svg.ref.png similarity index 100% rename from cairo/test/reference/clipped-group.svg.ref.png rename to 3rd-party/cairo/test/reference/clipped-group.svg.ref.png diff --git a/cairo/test/reference/clipped-group.traps.argb32.ref.png b/3rd-party/cairo/test/reference/clipped-group.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/clipped-group.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/clipped-group.traps.argb32.ref.png diff --git a/cairo/test/reference/clipped-group.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/clipped-group.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clipped-group.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clipped-group.traps.rgb24.ref.png diff --git a/cairo/test/reference/clipped-group.xlib-fallback.ref.png b/3rd-party/cairo/test/reference/clipped-group.xlib-fallback.ref.png similarity index 100% rename from cairo/test/reference/clipped-group.xlib-fallback.ref.png rename to 3rd-party/cairo/test/reference/clipped-group.xlib-fallback.ref.png diff --git a/cairo/test/reference/clipped-surface.base.argb32.ref.png b/3rd-party/cairo/test/reference/clipped-surface.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/clipped-surface.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/clipped-surface.base.argb32.ref.png diff --git a/cairo/test/reference/clipped-surface.base.rgb24.ref.png b/3rd-party/cairo/test/reference/clipped-surface.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/clipped-surface.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/clipped-surface.base.rgb24.ref.png diff --git a/cairo/test/reference/clipped-surface.image16.ref.png b/3rd-party/cairo/test/reference/clipped-surface.image16.ref.png similarity index 100% rename from cairo/test/reference/clipped-surface.image16.ref.png rename to 3rd-party/cairo/test/reference/clipped-surface.image16.ref.png diff --git a/cairo/test/reference/clipped-surface.ref.png b/3rd-party/cairo/test/reference/clipped-surface.ref.png similarity index 100% rename from cairo/test/reference/clipped-surface.ref.png rename to 3rd-party/cairo/test/reference/clipped-surface.ref.png diff --git a/cairo/test/reference/clipped-trapezoids.ref.png b/3rd-party/cairo/test/reference/clipped-trapezoids.ref.png similarity index 100% rename from cairo/test/reference/clipped-trapezoids.ref.png rename to 3rd-party/cairo/test/reference/clipped-trapezoids.ref.png diff --git a/cairo/test/reference/close-path-current-point.base.argb32.ref.png b/3rd-party/cairo/test/reference/close-path-current-point.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/close-path-current-point.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/close-path-current-point.base.argb32.ref.png diff --git a/cairo/test/reference/close-path-current-point.base.rgb24.ref.png b/3rd-party/cairo/test/reference/close-path-current-point.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/close-path-current-point.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/close-path-current-point.base.rgb24.ref.png diff --git a/cairo/test/reference/close-path-current-point.image16.ref.png b/3rd-party/cairo/test/reference/close-path-current-point.image16.ref.png similarity index 100% rename from cairo/test/reference/close-path-current-point.image16.ref.png rename to 3rd-party/cairo/test/reference/close-path-current-point.image16.ref.png diff --git a/cairo/test/reference/close-path-current-point.mask.argb32.ref.png b/3rd-party/cairo/test/reference/close-path-current-point.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/close-path-current-point.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/close-path-current-point.mask.argb32.ref.png diff --git a/cairo/test/reference/close-path-current-point.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/close-path-current-point.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/close-path-current-point.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/close-path-current-point.mask.rgb24.ref.png diff --git a/cairo/test/reference/close-path-current-point.ps.ref.png b/3rd-party/cairo/test/reference/close-path-current-point.ps.ref.png similarity index 100% rename from cairo/test/reference/close-path-current-point.ps.ref.png rename to 3rd-party/cairo/test/reference/close-path-current-point.ps.ref.png diff --git a/cairo/test/reference/close-path-current-point.ref.png b/3rd-party/cairo/test/reference/close-path-current-point.ref.png similarity index 100% rename from cairo/test/reference/close-path-current-point.ref.png rename to 3rd-party/cairo/test/reference/close-path-current-point.ref.png diff --git a/cairo/test/reference/close-path-current-point.traps.argb32.ref.png b/3rd-party/cairo/test/reference/close-path-current-point.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/close-path-current-point.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/close-path-current-point.traps.argb32.ref.png diff --git a/cairo/test/reference/close-path-current-point.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/close-path-current-point.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/close-path-current-point.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/close-path-current-point.traps.rgb24.ref.png diff --git a/cairo/test/reference/close-path.argb32.ref.png b/3rd-party/cairo/test/reference/close-path.argb32.ref.png similarity index 100% rename from cairo/test/reference/close-path.argb32.ref.png rename to 3rd-party/cairo/test/reference/close-path.argb32.ref.png diff --git a/cairo/test/reference/close-path.base.argb32.ref.png b/3rd-party/cairo/test/reference/close-path.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/close-path.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/close-path.base.argb32.ref.png diff --git a/cairo/test/reference/close-path.base.rgb24.ref.png b/3rd-party/cairo/test/reference/close-path.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/close-path.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/close-path.base.rgb24.ref.png diff --git a/cairo/test/reference/close-path.ps2.ref.png b/3rd-party/cairo/test/reference/close-path.ps2.ref.png similarity index 100% rename from cairo/test/reference/close-path.ps2.ref.png rename to 3rd-party/cairo/test/reference/close-path.ps2.ref.png diff --git a/cairo/test/reference/close-path.ps3.ref.png b/3rd-party/cairo/test/reference/close-path.ps3.ref.png similarity index 100% rename from cairo/test/reference/close-path.ps3.ref.png rename to 3rd-party/cairo/test/reference/close-path.ps3.ref.png diff --git a/cairo/test/reference/close-path.rgb24.ref.png b/3rd-party/cairo/test/reference/close-path.rgb24.ref.png similarity index 100% rename from cairo/test/reference/close-path.rgb24.ref.png rename to 3rd-party/cairo/test/reference/close-path.rgb24.ref.png diff --git a/cairo/test/reference/close-path.traps.argb32.ref.png b/3rd-party/cairo/test/reference/close-path.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/close-path.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/close-path.traps.argb32.ref.png diff --git a/cairo/test/reference/close-path.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/close-path.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/close-path.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/close-path.traps.rgb24.ref.png diff --git a/cairo/test/reference/composite-integer-translate-over-repeat.base.argb32.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-over-repeat.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.base.argb32.ref.png diff --git a/cairo/test/reference/composite-integer-translate-over-repeat.base.rgb24.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-over-repeat.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.base.rgb24.ref.png diff --git a/cairo/test/reference/composite-integer-translate-over-repeat.ps2.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ps2.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-over-repeat.ps2.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ps2.ref.png diff --git a/cairo/test/reference/composite-integer-translate-over-repeat.ps3.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ps3.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-over-repeat.ps3.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ps3.ref.png diff --git a/cairo/test/reference/composite-integer-translate-over-repeat.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-over-repeat.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ref.png diff --git a/cairo/test/reference/composite-integer-translate-over.base.argb32.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-over.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-over.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-over.base.argb32.ref.png diff --git a/cairo/test/reference/composite-integer-translate-over.base.rgb24.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-over.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-over.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-over.base.rgb24.ref.png diff --git a/cairo/test/reference/composite-integer-translate-over.image16.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-over.image16.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-over.image16.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-over.image16.ref.png diff --git a/cairo/test/reference/composite-integer-translate-over.ps2.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-over.ps2.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-over.ps2.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-over.ps2.ref.png diff --git a/cairo/test/reference/composite-integer-translate-over.ps3.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-over.ps3.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-over.ps3.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-over.ps3.ref.png diff --git a/cairo/test/reference/composite-integer-translate-over.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-over.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-over.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-over.ref.png diff --git a/cairo/test/reference/composite-integer-translate-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-source.base.argb32.ref.png diff --git a/cairo/test/reference/composite-integer-translate-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-source.base.rgb24.ref.png diff --git a/cairo/test/reference/composite-integer-translate-source.image16.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-source.image16.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-source.image16.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-source.image16.ref.png diff --git a/cairo/test/reference/composite-integer-translate-source.ps2.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-source.ps2.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-source.ps2.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-source.ps2.ref.png diff --git a/cairo/test/reference/composite-integer-translate-source.ps3.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-source.ps3.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-source.ps3.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-source.ps3.ref.png diff --git a/cairo/test/reference/composite-integer-translate-source.ref.png b/3rd-party/cairo/test/reference/composite-integer-translate-source.ref.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-source.ref.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-source.ref.png diff --git a/cairo/test/reference/composite-integer-translate-source.svg12.argb32.xfail.png b/3rd-party/cairo/test/reference/composite-integer-translate-source.svg12.argb32.xfail.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-source.svg12.argb32.xfail.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-source.svg12.argb32.xfail.png diff --git a/cairo/test/reference/composite-integer-translate-source.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/composite-integer-translate-source.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/composite-integer-translate-source.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/composite-integer-translate-source.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/copy-disjoint.base.argb32.ref.png b/3rd-party/cairo/test/reference/copy-disjoint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/copy-disjoint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/copy-disjoint.base.argb32.ref.png diff --git a/cairo/test/reference/copy-disjoint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/copy-disjoint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/copy-disjoint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/copy-disjoint.base.rgb24.ref.png diff --git a/cairo/test/reference/copy-disjoint.ref.png b/3rd-party/cairo/test/reference/copy-disjoint.ref.png similarity index 100% rename from cairo/test/reference/copy-disjoint.ref.png rename to 3rd-party/cairo/test/reference/copy-disjoint.ref.png diff --git a/cairo/test/reference/copy-path.argb32.ref.png b/3rd-party/cairo/test/reference/copy-path.argb32.ref.png similarity index 100% rename from cairo/test/reference/copy-path.argb32.ref.png rename to 3rd-party/cairo/test/reference/copy-path.argb32.ref.png diff --git a/cairo/test/reference/copy-path.base.argb32.ref.png b/3rd-party/cairo/test/reference/copy-path.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/copy-path.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/copy-path.base.argb32.ref.png diff --git a/cairo/test/reference/copy-path.base.rgb24.ref.png b/3rd-party/cairo/test/reference/copy-path.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/copy-path.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/copy-path.base.rgb24.ref.png diff --git a/cairo/test/reference/copy-path.image16.ref.png b/3rd-party/cairo/test/reference/copy-path.image16.ref.png similarity index 100% rename from cairo/test/reference/copy-path.image16.ref.png rename to 3rd-party/cairo/test/reference/copy-path.image16.ref.png diff --git a/cairo/test/reference/copy-path.ps.ref.png b/3rd-party/cairo/test/reference/copy-path.ps.ref.png similarity index 100% rename from cairo/test/reference/copy-path.ps.ref.png rename to 3rd-party/cairo/test/reference/copy-path.ps.ref.png diff --git a/cairo/test/reference/copy-path.rgb24.ref.png b/3rd-party/cairo/test/reference/copy-path.rgb24.ref.png similarity index 100% rename from cairo/test/reference/copy-path.rgb24.ref.png rename to 3rd-party/cairo/test/reference/copy-path.rgb24.ref.png diff --git a/cairo/test/reference/copy-path.traps.argb32.ref.png b/3rd-party/cairo/test/reference/copy-path.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/copy-path.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/copy-path.traps.argb32.ref.png diff --git a/cairo/test/reference/copy-path.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/copy-path.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/copy-path.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/copy-path.traps.rgb24.ref.png diff --git a/cairo/test/reference/coverage-column-triangles.ref.png b/3rd-party/cairo/test/reference/coverage-column-triangles.ref.png similarity index 100% rename from cairo/test/reference/coverage-column-triangles.ref.png rename to 3rd-party/cairo/test/reference/coverage-column-triangles.ref.png diff --git a/cairo/test/reference/coverage-column-triangles.xlib.xfail.png b/3rd-party/cairo/test/reference/coverage-column-triangles.xlib.xfail.png similarity index 100% rename from cairo/test/reference/coverage-column-triangles.xlib.xfail.png rename to 3rd-party/cairo/test/reference/coverage-column-triangles.xlib.xfail.png diff --git a/cairo/test/reference/coverage-intersecting-quads.ref.png b/3rd-party/cairo/test/reference/coverage-intersecting-quads.ref.png similarity index 100% rename from cairo/test/reference/coverage-intersecting-quads.ref.png rename to 3rd-party/cairo/test/reference/coverage-intersecting-quads.ref.png diff --git a/cairo/test/reference/coverage-intersecting-quads.xlib.xfail.png b/3rd-party/cairo/test/reference/coverage-intersecting-quads.xlib.xfail.png similarity index 100% rename from cairo/test/reference/coverage-intersecting-quads.xlib.xfail.png rename to 3rd-party/cairo/test/reference/coverage-intersecting-quads.xlib.xfail.png diff --git a/cairo/test/reference/coverage-intersecting-triangles.ref.png b/3rd-party/cairo/test/reference/coverage-intersecting-triangles.ref.png similarity index 100% rename from cairo/test/reference/coverage-intersecting-triangles.ref.png rename to 3rd-party/cairo/test/reference/coverage-intersecting-triangles.ref.png diff --git a/cairo/test/reference/coverage-intersecting-triangles.xlib.xfail.png b/3rd-party/cairo/test/reference/coverage-intersecting-triangles.xlib.xfail.png similarity index 100% rename from cairo/test/reference/coverage-intersecting-triangles.xlib.xfail.png rename to 3rd-party/cairo/test/reference/coverage-intersecting-triangles.xlib.xfail.png diff --git a/cairo/test/reference/coverage-rectangles.ref.png b/3rd-party/cairo/test/reference/coverage-rectangles.ref.png similarity index 100% rename from cairo/test/reference/coverage-rectangles.ref.png rename to 3rd-party/cairo/test/reference/coverage-rectangles.ref.png diff --git a/cairo/test/reference/coverage-rectangles.xlib.xfail.png b/3rd-party/cairo/test/reference/coverage-rectangles.xlib.xfail.png similarity index 100% rename from cairo/test/reference/coverage-rectangles.xlib.xfail.png rename to 3rd-party/cairo/test/reference/coverage-rectangles.xlib.xfail.png diff --git a/cairo/test/reference/coverage-row-triangles.ref.png b/3rd-party/cairo/test/reference/coverage-row-triangles.ref.png similarity index 100% rename from cairo/test/reference/coverage-row-triangles.ref.png rename to 3rd-party/cairo/test/reference/coverage-row-triangles.ref.png diff --git a/cairo/test/reference/coverage-row-triangles.xlib.xfail.png b/3rd-party/cairo/test/reference/coverage-row-triangles.xlib.xfail.png similarity index 100% rename from cairo/test/reference/coverage-row-triangles.xlib.xfail.png rename to 3rd-party/cairo/test/reference/coverage-row-triangles.xlib.xfail.png diff --git a/cairo/test/reference/coverage-triangles.ref.png b/3rd-party/cairo/test/reference/coverage-triangles.ref.png similarity index 100% rename from cairo/test/reference/coverage-triangles.ref.png rename to 3rd-party/cairo/test/reference/coverage-triangles.ref.png diff --git a/cairo/test/reference/coverage-triangles.xlib.xfail.png b/3rd-party/cairo/test/reference/coverage-triangles.xlib.xfail.png similarity index 100% rename from cairo/test/reference/coverage-triangles.xlib.xfail.png rename to 3rd-party/cairo/test/reference/coverage-triangles.xlib.xfail.png diff --git a/cairo/test/reference/create-from-png-stream.base.argb32.ref.png b/3rd-party/cairo/test/reference/create-from-png-stream.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/create-from-png-stream.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/create-from-png-stream.base.argb32.ref.png diff --git a/cairo/test/reference/create-from-png-stream.base.rgb24.ref.png b/3rd-party/cairo/test/reference/create-from-png-stream.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/create-from-png-stream.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/create-from-png-stream.base.rgb24.ref.png diff --git a/cairo/test/reference/create-from-png-stream.ref.png b/3rd-party/cairo/test/reference/create-from-png-stream.ref.png similarity index 100% rename from cairo/test/reference/create-from-png-stream.ref.png rename to 3rd-party/cairo/test/reference/create-from-png-stream.ref.png diff --git a/cairo/test/reference/create-from-png.alpha.ref.png b/3rd-party/cairo/test/reference/create-from-png.alpha.ref.png similarity index 100% rename from cairo/test/reference/create-from-png.alpha.ref.png rename to 3rd-party/cairo/test/reference/create-from-png.alpha.ref.png diff --git a/cairo/test/reference/create-from-png.argb32.ref.png b/3rd-party/cairo/test/reference/create-from-png.argb32.ref.png similarity index 100% rename from cairo/test/reference/create-from-png.argb32.ref.png rename to 3rd-party/cairo/test/reference/create-from-png.argb32.ref.png diff --git a/cairo/test/reference/create-from-png.base.argb32.ref.png b/3rd-party/cairo/test/reference/create-from-png.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/create-from-png.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/create-from-png.base.argb32.ref.png diff --git a/cairo/test/reference/create-from-png.base.rgb24.ref.png b/3rd-party/cairo/test/reference/create-from-png.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/create-from-png.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/create-from-png.base.rgb24.ref.png diff --git a/cairo/test/reference/create-from-png.gray-alpha.ref.png b/3rd-party/cairo/test/reference/create-from-png.gray-alpha.ref.png similarity index 100% rename from cairo/test/reference/create-from-png.gray-alpha.ref.png rename to 3rd-party/cairo/test/reference/create-from-png.gray-alpha.ref.png diff --git a/cairo/test/reference/create-from-png.gray.ref.png b/3rd-party/cairo/test/reference/create-from-png.gray.ref.png similarity index 100% rename from cairo/test/reference/create-from-png.gray.ref.png rename to 3rd-party/cairo/test/reference/create-from-png.gray.ref.png diff --git a/cairo/test/reference/create-from-png.indexed-alpha.ref.png b/3rd-party/cairo/test/reference/create-from-png.indexed-alpha.ref.png similarity index 100% rename from cairo/test/reference/create-from-png.indexed-alpha.ref.png rename to 3rd-party/cairo/test/reference/create-from-png.indexed-alpha.ref.png diff --git a/cairo/test/reference/create-from-png.indexed.ref.png b/3rd-party/cairo/test/reference/create-from-png.indexed.ref.png similarity index 100% rename from cairo/test/reference/create-from-png.indexed.ref.png rename to 3rd-party/cairo/test/reference/create-from-png.indexed.ref.png diff --git a/cairo/test/reference/create-from-png.mask.argb32.ref.png b/3rd-party/cairo/test/reference/create-from-png.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/create-from-png.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/create-from-png.mask.argb32.ref.png diff --git a/cairo/test/reference/create-from-png.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/create-from-png.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/create-from-png.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/create-from-png.mask.rgb24.ref.png diff --git a/cairo/test/reference/create-from-png.rgb24.ref.png b/3rd-party/cairo/test/reference/create-from-png.rgb24.ref.png similarity index 100% rename from cairo/test/reference/create-from-png.rgb24.ref.png rename to 3rd-party/cairo/test/reference/create-from-png.rgb24.ref.png diff --git a/cairo/test/reference/create-from-png.traps.argb32.ref.png b/3rd-party/cairo/test/reference/create-from-png.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/create-from-png.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/create-from-png.traps.argb32.ref.png diff --git a/cairo/test/reference/create-from-png.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/create-from-png.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/create-from-png.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/create-from-png.traps.rgb24.ref.png diff --git a/cairo/test/reference/culled-glyphs.argb32.ref.png b/3rd-party/cairo/test/reference/culled-glyphs.argb32.ref.png similarity index 100% rename from cairo/test/reference/culled-glyphs.argb32.ref.png rename to 3rd-party/cairo/test/reference/culled-glyphs.argb32.ref.png diff --git a/cairo/test/reference/culled-glyphs.base.argb32.ref.png b/3rd-party/cairo/test/reference/culled-glyphs.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/culled-glyphs.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/culled-glyphs.base.argb32.ref.png diff --git a/cairo/test/reference/culled-glyphs.base.rgb24.ref.png b/3rd-party/cairo/test/reference/culled-glyphs.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/culled-glyphs.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/culled-glyphs.base.rgb24.ref.png diff --git a/cairo/test/reference/culled-glyphs.image16.ref.png b/3rd-party/cairo/test/reference/culled-glyphs.image16.ref.png similarity index 100% rename from cairo/test/reference/culled-glyphs.image16.ref.png rename to 3rd-party/cairo/test/reference/culled-glyphs.image16.ref.png diff --git a/cairo/test/reference/culled-glyphs.ps.ref.png b/3rd-party/cairo/test/reference/culled-glyphs.ps.ref.png similarity index 100% rename from cairo/test/reference/culled-glyphs.ps.ref.png rename to 3rd-party/cairo/test/reference/culled-glyphs.ps.ref.png diff --git a/cairo/test/reference/culled-glyphs.quartz.ref.png b/3rd-party/cairo/test/reference/culled-glyphs.quartz.ref.png similarity index 100% rename from cairo/test/reference/culled-glyphs.quartz.ref.png rename to 3rd-party/cairo/test/reference/culled-glyphs.quartz.ref.png diff --git a/cairo/test/reference/culled-glyphs.rgb24.ref.png b/3rd-party/cairo/test/reference/culled-glyphs.rgb24.ref.png similarity index 100% rename from cairo/test/reference/culled-glyphs.rgb24.ref.png rename to 3rd-party/cairo/test/reference/culled-glyphs.rgb24.ref.png diff --git a/cairo/test/reference/curve-to-as-line-to.base.argb32.ref.png b/3rd-party/cairo/test/reference/curve-to-as-line-to.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/curve-to-as-line-to.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/curve-to-as-line-to.base.argb32.ref.png diff --git a/cairo/test/reference/curve-to-as-line-to.base.rgb24.ref.png b/3rd-party/cairo/test/reference/curve-to-as-line-to.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/curve-to-as-line-to.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/curve-to-as-line-to.base.rgb24.ref.png diff --git a/cairo/test/reference/curve-to-as-line-to.mask.argb32.ref.png b/3rd-party/cairo/test/reference/curve-to-as-line-to.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/curve-to-as-line-to.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/curve-to-as-line-to.mask.argb32.ref.png diff --git a/cairo/test/reference/curve-to-as-line-to.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/curve-to-as-line-to.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/curve-to-as-line-to.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/curve-to-as-line-to.mask.rgb24.ref.png diff --git a/cairo/test/reference/curve-to-as-line-to.ps.xfail.png b/3rd-party/cairo/test/reference/curve-to-as-line-to.ps.xfail.png similarity index 100% rename from cairo/test/reference/curve-to-as-line-to.ps.xfail.png rename to 3rd-party/cairo/test/reference/curve-to-as-line-to.ps.xfail.png diff --git a/cairo/test/reference/curve-to-as-line-to.ref.png b/3rd-party/cairo/test/reference/curve-to-as-line-to.ref.png similarity index 100% rename from cairo/test/reference/curve-to-as-line-to.ref.png rename to 3rd-party/cairo/test/reference/curve-to-as-line-to.ref.png diff --git a/cairo/test/reference/curve-to-as-line-to.traps.argb32.ref.png b/3rd-party/cairo/test/reference/curve-to-as-line-to.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/curve-to-as-line-to.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/curve-to-as-line-to.traps.argb32.ref.png diff --git a/cairo/test/reference/curve-to-as-line-to.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/curve-to-as-line-to.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/curve-to-as-line-to.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/curve-to-as-line-to.traps.rgb24.ref.png diff --git a/cairo/test/reference/dash-caps-joins.base.argb32.ref.png b/3rd-party/cairo/test/reference/dash-caps-joins.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-caps-joins.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-caps-joins.base.argb32.ref.png diff --git a/cairo/test/reference/dash-caps-joins.base.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-caps-joins.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-caps-joins.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-caps-joins.base.rgb24.ref.png diff --git a/cairo/test/reference/dash-caps-joins.image16.ref.png b/3rd-party/cairo/test/reference/dash-caps-joins.image16.ref.png similarity index 100% rename from cairo/test/reference/dash-caps-joins.image16.ref.png rename to 3rd-party/cairo/test/reference/dash-caps-joins.image16.ref.png diff --git a/cairo/test/reference/dash-caps-joins.mask.argb32.ref.png b/3rd-party/cairo/test/reference/dash-caps-joins.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-caps-joins.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-caps-joins.mask.argb32.ref.png diff --git a/cairo/test/reference/dash-caps-joins.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-caps-joins.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-caps-joins.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-caps-joins.mask.rgb24.ref.png diff --git a/cairo/test/reference/dash-caps-joins.ps.ref.png b/3rd-party/cairo/test/reference/dash-caps-joins.ps.ref.png similarity index 100% rename from cairo/test/reference/dash-caps-joins.ps.ref.png rename to 3rd-party/cairo/test/reference/dash-caps-joins.ps.ref.png diff --git a/cairo/test/reference/dash-caps-joins.quartz.xfail.png b/3rd-party/cairo/test/reference/dash-caps-joins.quartz.xfail.png similarity index 100% rename from cairo/test/reference/dash-caps-joins.quartz.xfail.png rename to 3rd-party/cairo/test/reference/dash-caps-joins.quartz.xfail.png diff --git a/cairo/test/reference/dash-caps-joins.ref.png b/3rd-party/cairo/test/reference/dash-caps-joins.ref.png similarity index 100% rename from cairo/test/reference/dash-caps-joins.ref.png rename to 3rd-party/cairo/test/reference/dash-caps-joins.ref.png diff --git a/cairo/test/reference/dash-caps-joins.traps.argb32.ref.png b/3rd-party/cairo/test/reference/dash-caps-joins.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-caps-joins.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-caps-joins.traps.argb32.ref.png diff --git a/cairo/test/reference/dash-caps-joins.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-caps-joins.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-caps-joins.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-caps-joins.traps.rgb24.ref.png diff --git a/cairo/test/reference/dash-curve.image16.ref.png b/3rd-party/cairo/test/reference/dash-curve.image16.ref.png similarity index 100% rename from cairo/test/reference/dash-curve.image16.ref.png rename to 3rd-party/cairo/test/reference/dash-curve.image16.ref.png diff --git a/cairo/test/reference/dash-curve.mask.argb32.ref.png b/3rd-party/cairo/test/reference/dash-curve.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-curve.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-curve.mask.argb32.ref.png diff --git a/cairo/test/reference/dash-curve.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-curve.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-curve.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-curve.mask.rgb24.ref.png diff --git a/cairo/test/reference/dash-curve.ps2.ref.png b/3rd-party/cairo/test/reference/dash-curve.ps2.ref.png similarity index 100% rename from cairo/test/reference/dash-curve.ps2.ref.png rename to 3rd-party/cairo/test/reference/dash-curve.ps2.ref.png diff --git a/cairo/test/reference/dash-curve.ps3.ref.png b/3rd-party/cairo/test/reference/dash-curve.ps3.ref.png similarity index 100% rename from cairo/test/reference/dash-curve.ps3.ref.png rename to 3rd-party/cairo/test/reference/dash-curve.ps3.ref.png diff --git a/cairo/test/reference/dash-curve.quartz.xfail.png b/3rd-party/cairo/test/reference/dash-curve.quartz.xfail.png similarity index 100% rename from cairo/test/reference/dash-curve.quartz.xfail.png rename to 3rd-party/cairo/test/reference/dash-curve.quartz.xfail.png diff --git a/cairo/test/reference/dash-curve.ref.png b/3rd-party/cairo/test/reference/dash-curve.ref.png similarity index 100% rename from cairo/test/reference/dash-curve.ref.png rename to 3rd-party/cairo/test/reference/dash-curve.ref.png diff --git a/cairo/test/reference/dash-curve.traps.argb32.ref.png b/3rd-party/cairo/test/reference/dash-curve.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-curve.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-curve.traps.argb32.ref.png diff --git a/cairo/test/reference/dash-curve.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-curve.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-curve.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-curve.traps.rgb24.ref.png diff --git a/cairo/test/reference/dash-infinite-loop.argb32.ref.png b/3rd-party/cairo/test/reference/dash-infinite-loop.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-infinite-loop.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-infinite-loop.argb32.ref.png diff --git a/cairo/test/reference/dash-infinite-loop.base.argb32.ref.png b/3rd-party/cairo/test/reference/dash-infinite-loop.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-infinite-loop.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-infinite-loop.base.argb32.ref.png diff --git a/cairo/test/reference/dash-infinite-loop.base.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-infinite-loop.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-infinite-loop.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-infinite-loop.base.rgb24.ref.png diff --git a/cairo/test/reference/dash-infinite-loop.ps.ref.png b/3rd-party/cairo/test/reference/dash-infinite-loop.ps.ref.png similarity index 100% rename from cairo/test/reference/dash-infinite-loop.ps.ref.png rename to 3rd-party/cairo/test/reference/dash-infinite-loop.ps.ref.png diff --git a/cairo/test/reference/dash-infinite-loop.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-infinite-loop.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-infinite-loop.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-infinite-loop.rgb24.ref.png diff --git a/cairo/test/reference/dash-infinite-loop.traps.argb32.ref.png b/3rd-party/cairo/test/reference/dash-infinite-loop.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-infinite-loop.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-infinite-loop.traps.argb32.ref.png diff --git a/cairo/test/reference/dash-infinite-loop.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-infinite-loop.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-infinite-loop.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-infinite-loop.traps.rgb24.ref.png diff --git a/cairo/test/reference/dash-no-dash.base.argb32.ref.png b/3rd-party/cairo/test/reference/dash-no-dash.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-no-dash.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-no-dash.base.argb32.ref.png diff --git a/cairo/test/reference/dash-no-dash.base.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-no-dash.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-no-dash.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-no-dash.base.rgb24.ref.png diff --git a/cairo/test/reference/dash-no-dash.ref.png b/3rd-party/cairo/test/reference/dash-no-dash.ref.png similarity index 100% rename from cairo/test/reference/dash-no-dash.ref.png rename to 3rd-party/cairo/test/reference/dash-no-dash.ref.png diff --git a/cairo/test/reference/dash-offset-negative.argb32.ref.png b/3rd-party/cairo/test/reference/dash-offset-negative.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-offset-negative.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-offset-negative.argb32.ref.png diff --git a/cairo/test/reference/dash-offset-negative.base.argb32.ref.png b/3rd-party/cairo/test/reference/dash-offset-negative.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-offset-negative.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-offset-negative.base.argb32.ref.png diff --git a/cairo/test/reference/dash-offset-negative.base.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-offset-negative.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-offset-negative.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-offset-negative.base.rgb24.ref.png diff --git a/cairo/test/reference/dash-offset-negative.pdf.ref.png b/3rd-party/cairo/test/reference/dash-offset-negative.pdf.ref.png similarity index 100% rename from cairo/test/reference/dash-offset-negative.pdf.ref.png rename to 3rd-party/cairo/test/reference/dash-offset-negative.pdf.ref.png diff --git a/cairo/test/reference/dash-offset-negative.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-offset-negative.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-offset-negative.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-offset-negative.rgb24.ref.png diff --git a/cairo/test/reference/dash-offset-negative.traps.argb32.ref.png b/3rd-party/cairo/test/reference/dash-offset-negative.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-offset-negative.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-offset-negative.traps.argb32.ref.png diff --git a/cairo/test/reference/dash-offset-negative.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-offset-negative.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-offset-negative.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-offset-negative.traps.rgb24.ref.png diff --git a/cairo/test/reference/dash-offset.base.argb32.ref.png b/3rd-party/cairo/test/reference/dash-offset.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-offset.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-offset.base.argb32.ref.png diff --git a/cairo/test/reference/dash-offset.base.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-offset.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-offset.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-offset.base.rgb24.ref.png diff --git a/cairo/test/reference/dash-offset.ref.png b/3rd-party/cairo/test/reference/dash-offset.ref.png similarity index 100% rename from cairo/test/reference/dash-offset.ref.png rename to 3rd-party/cairo/test/reference/dash-offset.ref.png diff --git a/cairo/test/reference/dash-scale.image16.ref.png b/3rd-party/cairo/test/reference/dash-scale.image16.ref.png similarity index 100% rename from cairo/test/reference/dash-scale.image16.ref.png rename to 3rd-party/cairo/test/reference/dash-scale.image16.ref.png diff --git a/cairo/test/reference/dash-scale.mask.argb32.ref.png b/3rd-party/cairo/test/reference/dash-scale.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-scale.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-scale.mask.argb32.ref.png diff --git a/cairo/test/reference/dash-scale.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-scale.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-scale.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-scale.mask.rgb24.ref.png diff --git a/cairo/test/reference/dash-scale.ps.ref.png b/3rd-party/cairo/test/reference/dash-scale.ps.ref.png similarity index 100% rename from cairo/test/reference/dash-scale.ps.ref.png rename to 3rd-party/cairo/test/reference/dash-scale.ps.ref.png diff --git a/cairo/test/reference/dash-scale.quartz.ref.png b/3rd-party/cairo/test/reference/dash-scale.quartz.ref.png similarity index 100% rename from cairo/test/reference/dash-scale.quartz.ref.png rename to 3rd-party/cairo/test/reference/dash-scale.quartz.ref.png diff --git a/cairo/test/reference/dash-scale.ref.png b/3rd-party/cairo/test/reference/dash-scale.ref.png similarity index 100% rename from cairo/test/reference/dash-scale.ref.png rename to 3rd-party/cairo/test/reference/dash-scale.ref.png diff --git a/cairo/test/reference/dash-scale.traps.argb32.ref.png b/3rd-party/cairo/test/reference/dash-scale.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-scale.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-scale.traps.argb32.ref.png diff --git a/cairo/test/reference/dash-scale.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-scale.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-scale.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-scale.traps.rgb24.ref.png diff --git a/cairo/test/reference/dash-state.argb32.ref.png b/3rd-party/cairo/test/reference/dash-state.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-state.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-state.argb32.ref.png diff --git a/cairo/test/reference/dash-state.base.argb32.ref.png b/3rd-party/cairo/test/reference/dash-state.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-state.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-state.base.argb32.ref.png diff --git a/cairo/test/reference/dash-state.base.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-state.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-state.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-state.base.rgb24.ref.png diff --git a/cairo/test/reference/dash-state.image16.ref.png b/3rd-party/cairo/test/reference/dash-state.image16.ref.png similarity index 100% rename from cairo/test/reference/dash-state.image16.ref.png rename to 3rd-party/cairo/test/reference/dash-state.image16.ref.png diff --git a/cairo/test/reference/dash-state.ps2.ref.png b/3rd-party/cairo/test/reference/dash-state.ps2.ref.png similarity index 100% rename from cairo/test/reference/dash-state.ps2.ref.png rename to 3rd-party/cairo/test/reference/dash-state.ps2.ref.png diff --git a/cairo/test/reference/dash-state.ps3.ref.png b/3rd-party/cairo/test/reference/dash-state.ps3.ref.png similarity index 100% rename from cairo/test/reference/dash-state.ps3.ref.png rename to 3rd-party/cairo/test/reference/dash-state.ps3.ref.png diff --git a/cairo/test/reference/dash-state.quartz.xfail.png b/3rd-party/cairo/test/reference/dash-state.quartz.xfail.png similarity index 100% rename from cairo/test/reference/dash-state.quartz.xfail.png rename to 3rd-party/cairo/test/reference/dash-state.quartz.xfail.png diff --git a/cairo/test/reference/dash-state.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-state.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-state.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-state.rgb24.ref.png diff --git a/cairo/test/reference/dash-state.traps.argb32.ref.png b/3rd-party/cairo/test/reference/dash-state.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-state.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-state.traps.argb32.ref.png diff --git a/cairo/test/reference/dash-state.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-state.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-state.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-state.traps.rgb24.ref.png diff --git a/cairo/test/reference/dash-zero-length.argb32.ref.png b/3rd-party/cairo/test/reference/dash-zero-length.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-zero-length.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-zero-length.argb32.ref.png diff --git a/cairo/test/reference/dash-zero-length.base.argb32.ref.png b/3rd-party/cairo/test/reference/dash-zero-length.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-zero-length.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-zero-length.base.argb32.ref.png diff --git a/cairo/test/reference/dash-zero-length.base.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-zero-length.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-zero-length.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-zero-length.base.rgb24.ref.png diff --git a/cairo/test/reference/dash-zero-length.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-zero-length.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-zero-length.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-zero-length.mask.rgb24.ref.png diff --git a/cairo/test/reference/dash-zero-length.ps2.ref.png b/3rd-party/cairo/test/reference/dash-zero-length.ps2.ref.png similarity index 100% rename from cairo/test/reference/dash-zero-length.ps2.ref.png rename to 3rd-party/cairo/test/reference/dash-zero-length.ps2.ref.png diff --git a/cairo/test/reference/dash-zero-length.ps2.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-zero-length.ps2.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-zero-length.ps2.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-zero-length.ps2.rgb24.ref.png diff --git a/cairo/test/reference/dash-zero-length.ps3.ref.png b/3rd-party/cairo/test/reference/dash-zero-length.ps3.ref.png similarity index 100% rename from cairo/test/reference/dash-zero-length.ps3.ref.png rename to 3rd-party/cairo/test/reference/dash-zero-length.ps3.ref.png diff --git a/cairo/test/reference/dash-zero-length.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-zero-length.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-zero-length.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-zero-length.ps3.rgb24.ref.png diff --git a/cairo/test/reference/dash-zero-length.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-zero-length.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-zero-length.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-zero-length.rgb24.ref.png diff --git a/cairo/test/reference/dash-zero-length.traps.argb32.ref.png b/3rd-party/cairo/test/reference/dash-zero-length.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/dash-zero-length.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/dash-zero-length.traps.argb32.ref.png diff --git a/cairo/test/reference/dash-zero-length.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/dash-zero-length.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/dash-zero-length.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/dash-zero-length.traps.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-arc.base.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-arc.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-arc.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-arc.base.argb32.ref.png diff --git a/cairo/test/reference/degenerate-arc.base.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-arc.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-arc.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-arc.base.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-arc.image16.ref.png b/3rd-party/cairo/test/reference/degenerate-arc.image16.ref.png similarity index 100% rename from cairo/test/reference/degenerate-arc.image16.ref.png rename to 3rd-party/cairo/test/reference/degenerate-arc.image16.ref.png diff --git a/cairo/test/reference/degenerate-arc.mask.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-arc.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-arc.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-arc.mask.argb32.ref.png diff --git a/cairo/test/reference/degenerate-arc.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-arc.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-arc.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-arc.mask.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-arc.ps2.ref.png b/3rd-party/cairo/test/reference/degenerate-arc.ps2.ref.png similarity index 100% rename from cairo/test/reference/degenerate-arc.ps2.ref.png rename to 3rd-party/cairo/test/reference/degenerate-arc.ps2.ref.png diff --git a/cairo/test/reference/degenerate-arc.ps3.ref.png b/3rd-party/cairo/test/reference/degenerate-arc.ps3.ref.png similarity index 100% rename from cairo/test/reference/degenerate-arc.ps3.ref.png rename to 3rd-party/cairo/test/reference/degenerate-arc.ps3.ref.png diff --git a/cairo/test/reference/degenerate-arc.quartz.ref.png b/3rd-party/cairo/test/reference/degenerate-arc.quartz.ref.png similarity index 100% rename from cairo/test/reference/degenerate-arc.quartz.ref.png rename to 3rd-party/cairo/test/reference/degenerate-arc.quartz.ref.png diff --git a/cairo/test/reference/degenerate-arc.ref.png b/3rd-party/cairo/test/reference/degenerate-arc.ref.png similarity index 100% rename from cairo/test/reference/degenerate-arc.ref.png rename to 3rd-party/cairo/test/reference/degenerate-arc.ref.png diff --git a/cairo/test/reference/degenerate-arc.traps.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-arc.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-arc.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-arc.traps.argb32.ref.png diff --git a/cairo/test/reference/degenerate-arc.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-arc.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-arc.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-arc.traps.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-arcs.base.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-arcs.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-arcs.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-arcs.base.argb32.ref.png diff --git a/cairo/test/reference/degenerate-arcs.base.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-arcs.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-arcs.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-arcs.base.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-arcs.image16.ref.png b/3rd-party/cairo/test/reference/degenerate-arcs.image16.ref.png similarity index 100% rename from cairo/test/reference/degenerate-arcs.image16.ref.png rename to 3rd-party/cairo/test/reference/degenerate-arcs.image16.ref.png diff --git a/cairo/test/reference/degenerate-arcs.ref.png b/3rd-party/cairo/test/reference/degenerate-arcs.ref.png similarity index 100% rename from cairo/test/reference/degenerate-arcs.ref.png rename to 3rd-party/cairo/test/reference/degenerate-arcs.ref.png diff --git a/cairo/test/reference/degenerate-curve-to.base.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-curve-to.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-curve-to.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-curve-to.base.argb32.ref.png diff --git a/cairo/test/reference/degenerate-curve-to.base.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-curve-to.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-curve-to.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-curve-to.base.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-curve-to.image16.ref.png b/3rd-party/cairo/test/reference/degenerate-curve-to.image16.ref.png similarity index 100% rename from cairo/test/reference/degenerate-curve-to.image16.ref.png rename to 3rd-party/cairo/test/reference/degenerate-curve-to.image16.ref.png diff --git a/cairo/test/reference/degenerate-curve-to.mask.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-curve-to.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-curve-to.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-curve-to.mask.argb32.ref.png diff --git a/cairo/test/reference/degenerate-curve-to.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-curve-to.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-curve-to.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-curve-to.mask.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-curve-to.ps.xfail.png b/3rd-party/cairo/test/reference/degenerate-curve-to.ps.xfail.png similarity index 100% rename from cairo/test/reference/degenerate-curve-to.ps.xfail.png rename to 3rd-party/cairo/test/reference/degenerate-curve-to.ps.xfail.png diff --git a/cairo/test/reference/degenerate-curve-to.quartz.ref.png b/3rd-party/cairo/test/reference/degenerate-curve-to.quartz.ref.png similarity index 100% rename from cairo/test/reference/degenerate-curve-to.quartz.ref.png rename to 3rd-party/cairo/test/reference/degenerate-curve-to.quartz.ref.png diff --git a/cairo/test/reference/degenerate-curve-to.ref.png b/3rd-party/cairo/test/reference/degenerate-curve-to.ref.png similarity index 100% rename from cairo/test/reference/degenerate-curve-to.ref.png rename to 3rd-party/cairo/test/reference/degenerate-curve-to.ref.png diff --git a/cairo/test/reference/degenerate-curve-to.traps.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-curve-to.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-curve-to.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-curve-to.traps.argb32.ref.png diff --git a/cairo/test/reference/degenerate-curve-to.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-curve-to.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-curve-to.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-curve-to.traps.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-dash.base.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-dash.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-dash.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-dash.base.argb32.ref.png diff --git a/cairo/test/reference/degenerate-dash.base.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-dash.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-dash.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-dash.base.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-dash.mask.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-dash.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-dash.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-dash.mask.argb32.ref.png diff --git a/cairo/test/reference/degenerate-dash.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-dash.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-dash.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-dash.mask.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-dash.ps.xfail.png b/3rd-party/cairo/test/reference/degenerate-dash.ps.xfail.png similarity index 100% rename from cairo/test/reference/degenerate-dash.ps.xfail.png rename to 3rd-party/cairo/test/reference/degenerate-dash.ps.xfail.png diff --git a/cairo/test/reference/degenerate-dash.quartz.xfail.png b/3rd-party/cairo/test/reference/degenerate-dash.quartz.xfail.png similarity index 100% rename from cairo/test/reference/degenerate-dash.quartz.xfail.png rename to 3rd-party/cairo/test/reference/degenerate-dash.quartz.xfail.png diff --git a/cairo/test/reference/degenerate-dash.ref.png b/3rd-party/cairo/test/reference/degenerate-dash.ref.png similarity index 100% rename from cairo/test/reference/degenerate-dash.ref.png rename to 3rd-party/cairo/test/reference/degenerate-dash.ref.png diff --git a/cairo/test/reference/degenerate-dash.traps.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-dash.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-dash.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-dash.traps.argb32.ref.png diff --git a/cairo/test/reference/degenerate-dash.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-dash.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-dash.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-dash.traps.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-linear-gradient.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-linear-gradient.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-linear-gradient.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-linear-gradient.argb32.ref.png diff --git a/cairo/test/reference/degenerate-linear-gradient.base.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-linear-gradient.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-linear-gradient.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-linear-gradient.base.argb32.ref.png diff --git a/cairo/test/reference/degenerate-linear-gradient.base.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-linear-gradient.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-linear-gradient.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-linear-gradient.base.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-linear-gradient.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-linear-gradient.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-linear-gradient.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-linear-gradient.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-path.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-path.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-path.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-path.argb32.ref.png diff --git a/cairo/test/reference/degenerate-path.base.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-path.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-path.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-path.base.argb32.ref.png diff --git a/cairo/test/reference/degenerate-path.base.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-path.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-path.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-path.base.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-path.mask.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-path.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-path.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-path.mask.argb32.ref.png diff --git a/cairo/test/reference/degenerate-path.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-path.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-path.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-path.mask.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-path.ps.argb32.xfail.png b/3rd-party/cairo/test/reference/degenerate-path.ps.argb32.xfail.png similarity index 100% rename from cairo/test/reference/degenerate-path.ps.argb32.xfail.png rename to 3rd-party/cairo/test/reference/degenerate-path.ps.argb32.xfail.png diff --git a/cairo/test/reference/degenerate-path.ps.rgb24.xfail.png b/3rd-party/cairo/test/reference/degenerate-path.ps.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/degenerate-path.ps.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/degenerate-path.ps.rgb24.xfail.png diff --git a/cairo/test/reference/degenerate-path.quartz.argb32.xfail.png b/3rd-party/cairo/test/reference/degenerate-path.quartz.argb32.xfail.png similarity index 100% rename from cairo/test/reference/degenerate-path.quartz.argb32.xfail.png rename to 3rd-party/cairo/test/reference/degenerate-path.quartz.argb32.xfail.png diff --git a/cairo/test/reference/degenerate-path.quartz.rgb24.xfail.png b/3rd-party/cairo/test/reference/degenerate-path.quartz.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/degenerate-path.quartz.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/degenerate-path.quartz.rgb24.xfail.png diff --git a/cairo/test/reference/degenerate-path.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-path.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-path.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-path.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-path.traps.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-path.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-path.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-path.traps.argb32.ref.png diff --git a/cairo/test/reference/degenerate-path.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-path.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-path.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-path.traps.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-pen.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-pen.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-pen.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-pen.argb32.ref.png diff --git a/cairo/test/reference/degenerate-pen.base.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-pen.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-pen.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-pen.base.argb32.ref.png diff --git a/cairo/test/reference/degenerate-pen.base.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-pen.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-pen.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-pen.base.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-pen.image16.ref.png b/3rd-party/cairo/test/reference/degenerate-pen.image16.ref.png similarity index 100% rename from cairo/test/reference/degenerate-pen.image16.ref.png rename to 3rd-party/cairo/test/reference/degenerate-pen.image16.ref.png diff --git a/cairo/test/reference/degenerate-pen.ps.ref.png b/3rd-party/cairo/test/reference/degenerate-pen.ps.ref.png similarity index 100% rename from cairo/test/reference/degenerate-pen.ps.ref.png rename to 3rd-party/cairo/test/reference/degenerate-pen.ps.ref.png diff --git a/cairo/test/reference/degenerate-pen.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-pen.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-pen.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-pen.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-pen.traps.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-pen.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-pen.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-pen.traps.argb32.ref.png diff --git a/cairo/test/reference/degenerate-pen.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-pen.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-pen.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-pen.traps.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-radial-gradient.base.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-radial-gradient.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-radial-gradient.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-radial-gradient.base.argb32.ref.png diff --git a/cairo/test/reference/degenerate-radial-gradient.base.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-radial-gradient.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-radial-gradient.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-radial-gradient.base.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-radial-gradient.ref.png b/3rd-party/cairo/test/reference/degenerate-radial-gradient.ref.png similarity index 100% rename from cairo/test/reference/degenerate-radial-gradient.ref.png rename to 3rd-party/cairo/test/reference/degenerate-radial-gradient.ref.png diff --git a/cairo/test/reference/degenerate-rel-curve-to.base.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-rel-curve-to.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-rel-curve-to.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-rel-curve-to.base.argb32.ref.png diff --git a/cairo/test/reference/degenerate-rel-curve-to.base.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-rel-curve-to.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-rel-curve-to.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-rel-curve-to.base.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-rel-curve-to.image16.ref.png b/3rd-party/cairo/test/reference/degenerate-rel-curve-to.image16.ref.png similarity index 100% rename from cairo/test/reference/degenerate-rel-curve-to.image16.ref.png rename to 3rd-party/cairo/test/reference/degenerate-rel-curve-to.image16.ref.png diff --git a/cairo/test/reference/degenerate-rel-curve-to.mask.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-rel-curve-to.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-rel-curve-to.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-rel-curve-to.mask.argb32.ref.png diff --git a/cairo/test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-rel-curve-to.ps.ref.png b/3rd-party/cairo/test/reference/degenerate-rel-curve-to.ps.ref.png similarity index 100% rename from cairo/test/reference/degenerate-rel-curve-to.ps.ref.png rename to 3rd-party/cairo/test/reference/degenerate-rel-curve-to.ps.ref.png diff --git a/cairo/test/reference/degenerate-rel-curve-to.quartz.ref.png b/3rd-party/cairo/test/reference/degenerate-rel-curve-to.quartz.ref.png similarity index 100% rename from cairo/test/reference/degenerate-rel-curve-to.quartz.ref.png rename to 3rd-party/cairo/test/reference/degenerate-rel-curve-to.quartz.ref.png diff --git a/cairo/test/reference/degenerate-rel-curve-to.ref.png b/3rd-party/cairo/test/reference/degenerate-rel-curve-to.ref.png similarity index 100% rename from cairo/test/reference/degenerate-rel-curve-to.ref.png rename to 3rd-party/cairo/test/reference/degenerate-rel-curve-to.ref.png diff --git a/cairo/test/reference/degenerate-rel-curve-to.traps.argb32.ref.png b/3rd-party/cairo/test/reference/degenerate-rel-curve-to.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/degenerate-rel-curve-to.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/degenerate-rel-curve-to.traps.argb32.ref.png diff --git a/cairo/test/reference/degenerate-rel-curve-to.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/degenerate-rel-curve-to.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/degenerate-rel-curve-to.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/degenerate-rel-curve-to.traps.rgb24.ref.png diff --git a/cairo/test/reference/degenerate-solid-dash.ref.png b/3rd-party/cairo/test/reference/degenerate-solid-dash.ref.png similarity index 100% rename from cairo/test/reference/degenerate-solid-dash.ref.png rename to 3rd-party/cairo/test/reference/degenerate-solid-dash.ref.png diff --git a/cairo/test/reference/device-offset-fractional.base.argb32.ref.png b/3rd-party/cairo/test/reference/device-offset-fractional.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/device-offset-fractional.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/device-offset-fractional.base.argb32.ref.png diff --git a/cairo/test/reference/device-offset-fractional.base.rgb24.ref.png b/3rd-party/cairo/test/reference/device-offset-fractional.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/device-offset-fractional.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/device-offset-fractional.base.rgb24.ref.png diff --git a/cairo/test/reference/device-offset-fractional.gl.xfail.png b/3rd-party/cairo/test/reference/device-offset-fractional.gl.xfail.png similarity index 100% rename from cairo/test/reference/device-offset-fractional.gl.xfail.png rename to 3rd-party/cairo/test/reference/device-offset-fractional.gl.xfail.png diff --git a/cairo/test/reference/device-offset-fractional.pdf.xfail.png b/3rd-party/cairo/test/reference/device-offset-fractional.pdf.xfail.png similarity index 100% rename from cairo/test/reference/device-offset-fractional.pdf.xfail.png rename to 3rd-party/cairo/test/reference/device-offset-fractional.pdf.xfail.png diff --git a/cairo/test/reference/device-offset-fractional.ps2.ref.png b/3rd-party/cairo/test/reference/device-offset-fractional.ps2.ref.png similarity index 100% rename from cairo/test/reference/device-offset-fractional.ps2.ref.png rename to 3rd-party/cairo/test/reference/device-offset-fractional.ps2.ref.png diff --git a/cairo/test/reference/device-offset-fractional.ps3.ref.png b/3rd-party/cairo/test/reference/device-offset-fractional.ps3.ref.png similarity index 100% rename from cairo/test/reference/device-offset-fractional.ps3.ref.png rename to 3rd-party/cairo/test/reference/device-offset-fractional.ps3.ref.png diff --git a/cairo/test/reference/device-offset-fractional.ref.png b/3rd-party/cairo/test/reference/device-offset-fractional.ref.png similarity index 100% rename from cairo/test/reference/device-offset-fractional.ref.png rename to 3rd-party/cairo/test/reference/device-offset-fractional.ref.png diff --git a/cairo/test/reference/device-offset-positive.argb32.ref.png b/3rd-party/cairo/test/reference/device-offset-positive.argb32.ref.png similarity index 100% rename from cairo/test/reference/device-offset-positive.argb32.ref.png rename to 3rd-party/cairo/test/reference/device-offset-positive.argb32.ref.png diff --git a/cairo/test/reference/device-offset-positive.base.argb32.ref.png b/3rd-party/cairo/test/reference/device-offset-positive.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/device-offset-positive.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/device-offset-positive.base.argb32.ref.png diff --git a/cairo/test/reference/device-offset-positive.base.rgb24.ref.png b/3rd-party/cairo/test/reference/device-offset-positive.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/device-offset-positive.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/device-offset-positive.base.rgb24.ref.png diff --git a/cairo/test/reference/device-offset-positive.rgb24.ref.png b/3rd-party/cairo/test/reference/device-offset-positive.rgb24.ref.png similarity index 100% rename from cairo/test/reference/device-offset-positive.rgb24.ref.png rename to 3rd-party/cairo/test/reference/device-offset-positive.rgb24.ref.png diff --git a/cairo/test/reference/device-offset-scale.base.argb32.ref.png b/3rd-party/cairo/test/reference/device-offset-scale.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/device-offset-scale.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/device-offset-scale.base.argb32.ref.png diff --git a/cairo/test/reference/device-offset-scale.base.rgb24.ref.png b/3rd-party/cairo/test/reference/device-offset-scale.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/device-offset-scale.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/device-offset-scale.base.rgb24.ref.png diff --git a/cairo/test/reference/device-offset-scale.ref.png b/3rd-party/cairo/test/reference/device-offset-scale.ref.png similarity index 100% rename from cairo/test/reference/device-offset-scale.ref.png rename to 3rd-party/cairo/test/reference/device-offset-scale.ref.png diff --git a/cairo/test/reference/device-offset-scale.svg.xfail.png b/3rd-party/cairo/test/reference/device-offset-scale.svg.xfail.png similarity index 100% rename from cairo/test/reference/device-offset-scale.svg.xfail.png rename to 3rd-party/cairo/test/reference/device-offset-scale.svg.xfail.png diff --git a/cairo/test/reference/device-offset.argb32.ref.png b/3rd-party/cairo/test/reference/device-offset.argb32.ref.png similarity index 100% rename from cairo/test/reference/device-offset.argb32.ref.png rename to 3rd-party/cairo/test/reference/device-offset.argb32.ref.png diff --git a/cairo/test/reference/device-offset.base.argb32.ref.png b/3rd-party/cairo/test/reference/device-offset.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/device-offset.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/device-offset.base.argb32.ref.png diff --git a/cairo/test/reference/device-offset.base.rgb24.ref.png b/3rd-party/cairo/test/reference/device-offset.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/device-offset.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/device-offset.base.rgb24.ref.png diff --git a/cairo/test/reference/device-offset.rgb24.ref.png b/3rd-party/cairo/test/reference/device-offset.rgb24.ref.png similarity index 100% rename from cairo/test/reference/device-offset.rgb24.ref.png rename to 3rd-party/cairo/test/reference/device-offset.rgb24.ref.png diff --git a/cairo/test/reference/drunkard-tails.base.argb32.ref.png b/3rd-party/cairo/test/reference/drunkard-tails.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/drunkard-tails.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/drunkard-tails.base.argb32.ref.png diff --git a/cairo/test/reference/drunkard-tails.base.rgb24.ref.png b/3rd-party/cairo/test/reference/drunkard-tails.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/drunkard-tails.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/drunkard-tails.base.rgb24.ref.png diff --git a/cairo/test/reference/drunkard-tails.mask.argb32.ref.png b/3rd-party/cairo/test/reference/drunkard-tails.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/drunkard-tails.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/drunkard-tails.mask.argb32.ref.png diff --git a/cairo/test/reference/drunkard-tails.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/drunkard-tails.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/drunkard-tails.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/drunkard-tails.mask.rgb24.ref.png diff --git a/cairo/test/reference/drunkard-tails.ps.ref.png b/3rd-party/cairo/test/reference/drunkard-tails.ps.ref.png similarity index 100% rename from cairo/test/reference/drunkard-tails.ps.ref.png rename to 3rd-party/cairo/test/reference/drunkard-tails.ps.ref.png diff --git a/cairo/test/reference/drunkard-tails.ref.png b/3rd-party/cairo/test/reference/drunkard-tails.ref.png similarity index 100% rename from cairo/test/reference/drunkard-tails.ref.png rename to 3rd-party/cairo/test/reference/drunkard-tails.ref.png diff --git a/cairo/test/reference/drunkard-tails.traps.argb32.ref.png b/3rd-party/cairo/test/reference/drunkard-tails.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/drunkard-tails.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/drunkard-tails.traps.argb32.ref.png diff --git a/cairo/test/reference/drunkard-tails.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/drunkard-tails.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/drunkard-tails.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/drunkard-tails.traps.rgb24.ref.png diff --git a/cairo/test/reference/extend-pad-border.argb32.ref.png b/3rd-party/cairo/test/reference/extend-pad-border.argb32.ref.png similarity index 100% rename from cairo/test/reference/extend-pad-border.argb32.ref.png rename to 3rd-party/cairo/test/reference/extend-pad-border.argb32.ref.png diff --git a/cairo/test/reference/extend-pad-border.base.argb32.ref.png b/3rd-party/cairo/test/reference/extend-pad-border.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/extend-pad-border.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/extend-pad-border.base.argb32.ref.png diff --git a/cairo/test/reference/extend-pad-border.base.rgb24.ref.png b/3rd-party/cairo/test/reference/extend-pad-border.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extend-pad-border.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extend-pad-border.base.rgb24.ref.png diff --git a/cairo/test/reference/extend-pad-border.image16.ref.png b/3rd-party/cairo/test/reference/extend-pad-border.image16.ref.png similarity index 100% rename from cairo/test/reference/extend-pad-border.image16.ref.png rename to 3rd-party/cairo/test/reference/extend-pad-border.image16.ref.png diff --git a/cairo/test/reference/extend-pad-border.pdf.ref.png b/3rd-party/cairo/test/reference/extend-pad-border.pdf.ref.png similarity index 100% rename from cairo/test/reference/extend-pad-border.pdf.ref.png rename to 3rd-party/cairo/test/reference/extend-pad-border.pdf.ref.png diff --git a/cairo/test/reference/extend-pad-border.ps.ref.png b/3rd-party/cairo/test/reference/extend-pad-border.ps.ref.png similarity index 100% rename from cairo/test/reference/extend-pad-border.ps.ref.png rename to 3rd-party/cairo/test/reference/extend-pad-border.ps.ref.png diff --git a/cairo/test/reference/extend-pad-border.quartz.ref.png b/3rd-party/cairo/test/reference/extend-pad-border.quartz.ref.png similarity index 100% rename from cairo/test/reference/extend-pad-border.quartz.ref.png rename to 3rd-party/cairo/test/reference/extend-pad-border.quartz.ref.png diff --git a/cairo/test/reference/extend-pad-border.rgb24.ref.png b/3rd-party/cairo/test/reference/extend-pad-border.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extend-pad-border.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extend-pad-border.rgb24.ref.png diff --git a/cairo/test/reference/extend-pad-border.svg.xfail.png b/3rd-party/cairo/test/reference/extend-pad-border.svg.xfail.png similarity index 100% rename from cairo/test/reference/extend-pad-border.svg.xfail.png rename to 3rd-party/cairo/test/reference/extend-pad-border.svg.xfail.png diff --git a/cairo/test/reference/extend-pad-similar.base.argb32.ref.png b/3rd-party/cairo/test/reference/extend-pad-similar.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/extend-pad-similar.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/extend-pad-similar.base.argb32.ref.png diff --git a/cairo/test/reference/extend-pad-similar.base.rgb24.ref.png b/3rd-party/cairo/test/reference/extend-pad-similar.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extend-pad-similar.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extend-pad-similar.base.rgb24.ref.png diff --git a/cairo/test/reference/extend-pad-similar.quartz.xfail.png b/3rd-party/cairo/test/reference/extend-pad-similar.quartz.xfail.png similarity index 100% rename from cairo/test/reference/extend-pad-similar.quartz.xfail.png rename to 3rd-party/cairo/test/reference/extend-pad-similar.quartz.xfail.png diff --git a/cairo/test/reference/extend-pad-similar.ref.png b/3rd-party/cairo/test/reference/extend-pad-similar.ref.png similarity index 100% rename from cairo/test/reference/extend-pad-similar.ref.png rename to 3rd-party/cairo/test/reference/extend-pad-similar.ref.png diff --git a/cairo/test/reference/extend-pad-similar.svg.xfail.png b/3rd-party/cairo/test/reference/extend-pad-similar.svg.xfail.png similarity index 100% rename from cairo/test/reference/extend-pad-similar.svg.xfail.png rename to 3rd-party/cairo/test/reference/extend-pad-similar.svg.xfail.png diff --git a/cairo/test/reference/extend-pad.base.argb32.ref.png b/3rd-party/cairo/test/reference/extend-pad.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/extend-pad.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/extend-pad.base.argb32.ref.png diff --git a/cairo/test/reference/extend-pad.base.rgb24.ref.png b/3rd-party/cairo/test/reference/extend-pad.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extend-pad.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extend-pad.base.rgb24.ref.png diff --git a/cairo/test/reference/extend-pad.ps.ref.png b/3rd-party/cairo/test/reference/extend-pad.ps.ref.png similarity index 100% rename from cairo/test/reference/extend-pad.ps.ref.png rename to 3rd-party/cairo/test/reference/extend-pad.ps.ref.png diff --git a/cairo/test/reference/extend-pad.quartz.xfail.png b/3rd-party/cairo/test/reference/extend-pad.quartz.xfail.png similarity index 100% rename from cairo/test/reference/extend-pad.quartz.xfail.png rename to 3rd-party/cairo/test/reference/extend-pad.quartz.xfail.png diff --git a/cairo/test/reference/extend-pad.ref.png b/3rd-party/cairo/test/reference/extend-pad.ref.png similarity index 100% rename from cairo/test/reference/extend-pad.ref.png rename to 3rd-party/cairo/test/reference/extend-pad.ref.png diff --git a/cairo/test/reference/extend-pad.svg.xfail.png b/3rd-party/cairo/test/reference/extend-pad.svg.xfail.png similarity index 100% rename from cairo/test/reference/extend-pad.svg.xfail.png rename to 3rd-party/cairo/test/reference/extend-pad.svg.xfail.png diff --git a/cairo/test/reference/extend-reflect-similar.base.argb32.ref.png b/3rd-party/cairo/test/reference/extend-reflect-similar.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/extend-reflect-similar.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/extend-reflect-similar.base.argb32.ref.png diff --git a/cairo/test/reference/extend-reflect-similar.base.rgb24.ref.png b/3rd-party/cairo/test/reference/extend-reflect-similar.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extend-reflect-similar.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extend-reflect-similar.base.rgb24.ref.png diff --git a/cairo/test/reference/extend-reflect-similar.image16.ref.png b/3rd-party/cairo/test/reference/extend-reflect-similar.image16.ref.png similarity index 100% rename from cairo/test/reference/extend-reflect-similar.image16.ref.png rename to 3rd-party/cairo/test/reference/extend-reflect-similar.image16.ref.png diff --git a/cairo/test/reference/extend-reflect-similar.ps2.ref.png b/3rd-party/cairo/test/reference/extend-reflect-similar.ps2.ref.png similarity index 100% rename from cairo/test/reference/extend-reflect-similar.ps2.ref.png rename to 3rd-party/cairo/test/reference/extend-reflect-similar.ps2.ref.png diff --git a/cairo/test/reference/extend-reflect-similar.ps3.ref.png b/3rd-party/cairo/test/reference/extend-reflect-similar.ps3.ref.png similarity index 100% rename from cairo/test/reference/extend-reflect-similar.ps3.ref.png rename to 3rd-party/cairo/test/reference/extend-reflect-similar.ps3.ref.png diff --git a/cairo/test/reference/extend-reflect-similar.ref.png b/3rd-party/cairo/test/reference/extend-reflect-similar.ref.png similarity index 100% rename from cairo/test/reference/extend-reflect-similar.ref.png rename to 3rd-party/cairo/test/reference/extend-reflect-similar.ref.png diff --git a/cairo/test/reference/extend-reflect.base.argb32.ref.png b/3rd-party/cairo/test/reference/extend-reflect.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/extend-reflect.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/extend-reflect.base.argb32.ref.png diff --git a/cairo/test/reference/extend-reflect.base.rgb24.ref.png b/3rd-party/cairo/test/reference/extend-reflect.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extend-reflect.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extend-reflect.base.rgb24.ref.png diff --git a/cairo/test/reference/extend-reflect.image16.ref.png b/3rd-party/cairo/test/reference/extend-reflect.image16.ref.png similarity index 100% rename from cairo/test/reference/extend-reflect.image16.ref.png rename to 3rd-party/cairo/test/reference/extend-reflect.image16.ref.png diff --git a/cairo/test/reference/extend-reflect.ps2.ref.png b/3rd-party/cairo/test/reference/extend-reflect.ps2.ref.png similarity index 100% rename from cairo/test/reference/extend-reflect.ps2.ref.png rename to 3rd-party/cairo/test/reference/extend-reflect.ps2.ref.png diff --git a/cairo/test/reference/extend-reflect.ps3.ref.png b/3rd-party/cairo/test/reference/extend-reflect.ps3.ref.png similarity index 100% rename from cairo/test/reference/extend-reflect.ps3.ref.png rename to 3rd-party/cairo/test/reference/extend-reflect.ps3.ref.png diff --git a/cairo/test/reference/extend-reflect.ref.png b/3rd-party/cairo/test/reference/extend-reflect.ref.png similarity index 100% rename from cairo/test/reference/extend-reflect.ref.png rename to 3rd-party/cairo/test/reference/extend-reflect.ref.png diff --git a/cairo/test/reference/extend-repeat-similar.base.argb32.ref.png b/3rd-party/cairo/test/reference/extend-repeat-similar.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/extend-repeat-similar.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/extend-repeat-similar.base.argb32.ref.png diff --git a/cairo/test/reference/extend-repeat-similar.base.rgb24.ref.png b/3rd-party/cairo/test/reference/extend-repeat-similar.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extend-repeat-similar.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extend-repeat-similar.base.rgb24.ref.png diff --git a/cairo/test/reference/extend-repeat-similar.image16.ref.png b/3rd-party/cairo/test/reference/extend-repeat-similar.image16.ref.png similarity index 100% rename from cairo/test/reference/extend-repeat-similar.image16.ref.png rename to 3rd-party/cairo/test/reference/extend-repeat-similar.image16.ref.png diff --git a/cairo/test/reference/extend-repeat-similar.ps2.ref.png b/3rd-party/cairo/test/reference/extend-repeat-similar.ps2.ref.png similarity index 100% rename from cairo/test/reference/extend-repeat-similar.ps2.ref.png rename to 3rd-party/cairo/test/reference/extend-repeat-similar.ps2.ref.png diff --git a/cairo/test/reference/extend-repeat-similar.ps3.ref.png b/3rd-party/cairo/test/reference/extend-repeat-similar.ps3.ref.png similarity index 100% rename from cairo/test/reference/extend-repeat-similar.ps3.ref.png rename to 3rd-party/cairo/test/reference/extend-repeat-similar.ps3.ref.png diff --git a/cairo/test/reference/extend-repeat-similar.ref.png b/3rd-party/cairo/test/reference/extend-repeat-similar.ref.png similarity index 100% rename from cairo/test/reference/extend-repeat-similar.ref.png rename to 3rd-party/cairo/test/reference/extend-repeat-similar.ref.png diff --git a/cairo/test/reference/extend-repeat.base.argb32.ref.png b/3rd-party/cairo/test/reference/extend-repeat.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/extend-repeat.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/extend-repeat.base.argb32.ref.png diff --git a/cairo/test/reference/extend-repeat.base.rgb24.ref.png b/3rd-party/cairo/test/reference/extend-repeat.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extend-repeat.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extend-repeat.base.rgb24.ref.png diff --git a/cairo/test/reference/extend-repeat.image16.ref.png b/3rd-party/cairo/test/reference/extend-repeat.image16.ref.png similarity index 100% rename from cairo/test/reference/extend-repeat.image16.ref.png rename to 3rd-party/cairo/test/reference/extend-repeat.image16.ref.png diff --git a/cairo/test/reference/extend-repeat.ps2.ref.png b/3rd-party/cairo/test/reference/extend-repeat.ps2.ref.png similarity index 100% rename from cairo/test/reference/extend-repeat.ps2.ref.png rename to 3rd-party/cairo/test/reference/extend-repeat.ps2.ref.png diff --git a/cairo/test/reference/extend-repeat.ps3.ref.png b/3rd-party/cairo/test/reference/extend-repeat.ps3.ref.png similarity index 100% rename from cairo/test/reference/extend-repeat.ps3.ref.png rename to 3rd-party/cairo/test/reference/extend-repeat.ps3.ref.png diff --git a/cairo/test/reference/extend-repeat.ref.png b/3rd-party/cairo/test/reference/extend-repeat.ref.png similarity index 100% rename from cairo/test/reference/extend-repeat.ref.png rename to 3rd-party/cairo/test/reference/extend-repeat.ref.png diff --git a/cairo/test/reference/extended-blend-alpha-mask.argb32.ref.png b/3rd-party/cairo/test/reference/extended-blend-alpha-mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-alpha-mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-alpha-mask.argb32.ref.png diff --git a/cairo/test/reference/extended-blend-alpha-mask.base.argb32.ref.png b/3rd-party/cairo/test/reference/extended-blend-alpha-mask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-alpha-mask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-alpha-mask.base.argb32.ref.png diff --git a/cairo/test/reference/extended-blend-alpha-mask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/extended-blend-alpha-mask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-alpha-mask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-alpha-mask.base.rgb24.ref.png diff --git a/cairo/test/reference/extended-blend-alpha-mask.rgb24.ref.png b/3rd-party/cairo/test/reference/extended-blend-alpha-mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-alpha-mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-alpha-mask.rgb24.ref.png diff --git a/cairo/test/reference/extended-blend-alpha.argb32.ref.png b/3rd-party/cairo/test/reference/extended-blend-alpha.argb32.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-alpha.argb32.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-alpha.argb32.ref.png diff --git a/cairo/test/reference/extended-blend-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/extended-blend-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/extended-blend-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/extended-blend-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/extended-blend-alpha.image16.ref.png b/3rd-party/cairo/test/reference/extended-blend-alpha.image16.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-alpha.image16.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-alpha.image16.ref.png diff --git a/cairo/test/reference/extended-blend-alpha.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/extended-blend-alpha.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-alpha.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-alpha.quartz.argb32.ref.png diff --git a/cairo/test/reference/extended-blend-alpha.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/extended-blend-alpha.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-alpha.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-alpha.quartz.rgb24.ref.png diff --git a/cairo/test/reference/extended-blend-alpha.rgb24.ref.png b/3rd-party/cairo/test/reference/extended-blend-alpha.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-alpha.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-alpha.rgb24.ref.png diff --git a/cairo/test/reference/extended-blend-alpha.svg12.argb32.xfail.png b/3rd-party/cairo/test/reference/extended-blend-alpha.svg12.argb32.xfail.png similarity index 100% rename from cairo/test/reference/extended-blend-alpha.svg12.argb32.xfail.png rename to 3rd-party/cairo/test/reference/extended-blend-alpha.svg12.argb32.xfail.png diff --git a/cairo/test/reference/extended-blend-alpha.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/extended-blend-alpha.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/extended-blend-alpha.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/extended-blend-alpha.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/extended-blend-mask.argb32.ref.png b/3rd-party/cairo/test/reference/extended-blend-mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-mask.argb32.ref.png diff --git a/cairo/test/reference/extended-blend-mask.base.argb32.ref.png b/3rd-party/cairo/test/reference/extended-blend-mask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-mask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-mask.base.argb32.ref.png diff --git a/cairo/test/reference/extended-blend-mask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/extended-blend-mask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-mask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-mask.base.rgb24.ref.png diff --git a/cairo/test/reference/extended-blend-mask.rgb24.ref.png b/3rd-party/cairo/test/reference/extended-blend-mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-mask.rgb24.ref.png diff --git a/cairo/test/reference/extended-blend-solid-alpha.argb32.ref.png b/3rd-party/cairo/test/reference/extended-blend-solid-alpha.argb32.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-solid-alpha.argb32.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-solid-alpha.argb32.ref.png diff --git a/cairo/test/reference/extended-blend-solid-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/extended-blend-solid-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-solid-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-solid-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/extended-blend-solid-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/extended-blend-solid-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-solid-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-solid-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/extended-blend-solid-alpha.image16.ref.png b/3rd-party/cairo/test/reference/extended-blend-solid-alpha.image16.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-solid-alpha.image16.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-solid-alpha.image16.ref.png diff --git a/cairo/test/reference/extended-blend-solid-alpha.rgb24.ref.png b/3rd-party/cairo/test/reference/extended-blend-solid-alpha.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-solid-alpha.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-solid-alpha.rgb24.ref.png diff --git a/cairo/test/reference/extended-blend-solid.argb32.ref.png b/3rd-party/cairo/test/reference/extended-blend-solid.argb32.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-solid.argb32.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-solid.argb32.ref.png diff --git a/cairo/test/reference/extended-blend-solid.base.argb32.ref.png b/3rd-party/cairo/test/reference/extended-blend-solid.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-solid.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-solid.base.argb32.ref.png diff --git a/cairo/test/reference/extended-blend-solid.base.rgb24.ref.png b/3rd-party/cairo/test/reference/extended-blend-solid.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-solid.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-solid.base.rgb24.ref.png diff --git a/cairo/test/reference/extended-blend-solid.image16.ref.png b/3rd-party/cairo/test/reference/extended-blend-solid.image16.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-solid.image16.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-solid.image16.ref.png diff --git a/cairo/test/reference/extended-blend-solid.rgb24.ref.png b/3rd-party/cairo/test/reference/extended-blend-solid.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extended-blend-solid.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extended-blend-solid.rgb24.ref.png diff --git a/cairo/test/reference/extended-blend.argb32.ref.png b/3rd-party/cairo/test/reference/extended-blend.argb32.ref.png similarity index 100% rename from cairo/test/reference/extended-blend.argb32.ref.png rename to 3rd-party/cairo/test/reference/extended-blend.argb32.ref.png diff --git a/cairo/test/reference/extended-blend.base.argb32.ref.png b/3rd-party/cairo/test/reference/extended-blend.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/extended-blend.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/extended-blend.base.argb32.ref.png diff --git a/cairo/test/reference/extended-blend.base.rgb24.ref.png b/3rd-party/cairo/test/reference/extended-blend.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extended-blend.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extended-blend.base.rgb24.ref.png diff --git a/cairo/test/reference/extended-blend.image16.ref.png b/3rd-party/cairo/test/reference/extended-blend.image16.ref.png similarity index 100% rename from cairo/test/reference/extended-blend.image16.ref.png rename to 3rd-party/cairo/test/reference/extended-blend.image16.ref.png diff --git a/cairo/test/reference/extended-blend.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/extended-blend.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/extended-blend.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/extended-blend.quartz.argb32.ref.png diff --git a/cairo/test/reference/extended-blend.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/extended-blend.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extended-blend.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extended-blend.quartz.rgb24.ref.png diff --git a/cairo/test/reference/extended-blend.rgb24.ref.png b/3rd-party/cairo/test/reference/extended-blend.rgb24.ref.png similarity index 100% rename from cairo/test/reference/extended-blend.rgb24.ref.png rename to 3rd-party/cairo/test/reference/extended-blend.rgb24.ref.png diff --git a/cairo/test/reference/extended-blend.svg12.argb32.xfail.png b/3rd-party/cairo/test/reference/extended-blend.svg12.argb32.xfail.png similarity index 100% rename from cairo/test/reference/extended-blend.svg12.argb32.xfail.png rename to 3rd-party/cairo/test/reference/extended-blend.svg12.argb32.xfail.png diff --git a/cairo/test/reference/extended-blend.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/extended-blend.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/extended-blend.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/extended-blend.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/fallback-resolution.ppi144x144.ps.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi144x144.ps.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi144x144.ps.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi144x144.ps.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi144x144.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi144x144.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi144x144.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi144x144.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi144x72.ps.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi144x72.ps.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi144x72.ps.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi144x72.ps.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi144x72.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi144x72.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi144x72.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi144x72.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi288x288.pdf.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.pdf.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi288x288.pdf.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.pdf.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi288x288.ps.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.ps.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi288x288.ps.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.ps.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi288x288.svg.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.svg.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi288x288.svg.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.svg.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi288x72.ps.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi288x72.ps.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi288x72.ps.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi288x72.ps.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi288x72.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi288x72.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi288x72.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi288x72.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi576x576.pdf.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.pdf.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi576x576.pdf.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.pdf.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi576x576.ps.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.ps.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi576x576.ps.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.ps.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi576x576.svg.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.svg.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi576x576.svg.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.svg.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi576x72.ps.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi576x72.ps.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi576x72.ps.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi576x72.ps.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi576x72.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi576x72.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi576x72.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi576x72.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi72x144.ps.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi72x144.ps.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi72x144.ps.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi72x144.ps.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi72x144.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi72x144.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi72x144.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi72x144.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi72x288.ps.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi72x288.ps.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi72x288.ps.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi72x288.ps.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi72x288.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi72x288.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi72x288.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi72x288.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi72x576.ps.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi72x576.ps.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi72x576.ps.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi72x576.ps.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi72x576.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi72x576.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi72x576.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi72x576.ref.png diff --git a/cairo/test/reference/fallback-resolution.ppi72x72.ref.png b/3rd-party/cairo/test/reference/fallback-resolution.ppi72x72.ref.png similarity index 100% rename from cairo/test/reference/fallback-resolution.ppi72x72.ref.png rename to 3rd-party/cairo/test/reference/fallback-resolution.ppi72x72.ref.png diff --git a/cairo/test/reference/fallback.argb32.ref.png b/3rd-party/cairo/test/reference/fallback.argb32.ref.png similarity index 100% rename from cairo/test/reference/fallback.argb32.ref.png rename to 3rd-party/cairo/test/reference/fallback.argb32.ref.png diff --git a/cairo/test/reference/fallback.base.argb32.ref.png b/3rd-party/cairo/test/reference/fallback.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/fallback.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/fallback.base.argb32.ref.png diff --git a/cairo/test/reference/fallback.base.rgb24.ref.png b/3rd-party/cairo/test/reference/fallback.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fallback.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fallback.base.rgb24.ref.png diff --git a/cairo/test/reference/fallback.image16.rgb24.ref.png b/3rd-party/cairo/test/reference/fallback.image16.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fallback.image16.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fallback.image16.rgb24.ref.png diff --git a/cairo/test/reference/fallback.mask.argb32.ref.png b/3rd-party/cairo/test/reference/fallback.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/fallback.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/fallback.mask.argb32.ref.png diff --git a/cairo/test/reference/fallback.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/fallback.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fallback.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fallback.mask.rgb24.ref.png diff --git a/cairo/test/reference/fallback.rgb24.ref.png b/3rd-party/cairo/test/reference/fallback.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fallback.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fallback.rgb24.ref.png diff --git a/cairo/test/reference/fallback.traps.argb32.ref.png b/3rd-party/cairo/test/reference/fallback.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/fallback.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/fallback.traps.argb32.ref.png diff --git a/cairo/test/reference/fallback.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/fallback.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fallback.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fallback.traps.rgb24.ref.png diff --git a/cairo/test/reference/fill-alpha-pattern.argb32.ref.png b/3rd-party/cairo/test/reference/fill-alpha-pattern.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha-pattern.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha-pattern.argb32.ref.png diff --git a/cairo/test/reference/fill-alpha-pattern.base.argb32.ref.png b/3rd-party/cairo/test/reference/fill-alpha-pattern.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha-pattern.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha-pattern.base.argb32.ref.png diff --git a/cairo/test/reference/fill-alpha-pattern.base.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-alpha-pattern.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha-pattern.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha-pattern.base.rgb24.ref.png diff --git a/cairo/test/reference/fill-alpha-pattern.image16.ref.png b/3rd-party/cairo/test/reference/fill-alpha-pattern.image16.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha-pattern.image16.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha-pattern.image16.ref.png diff --git a/cairo/test/reference/fill-alpha-pattern.pdf.ref.png b/3rd-party/cairo/test/reference/fill-alpha-pattern.pdf.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha-pattern.pdf.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha-pattern.pdf.ref.png diff --git a/cairo/test/reference/fill-alpha-pattern.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/fill-alpha-pattern.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha-pattern.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha-pattern.ps3.argb32.ref.png diff --git a/cairo/test/reference/fill-alpha-pattern.quartz.ref.png b/3rd-party/cairo/test/reference/fill-alpha-pattern.quartz.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha-pattern.quartz.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha-pattern.quartz.ref.png diff --git a/cairo/test/reference/fill-alpha-pattern.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-alpha-pattern.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha-pattern.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha-pattern.rgb24.ref.png diff --git a/cairo/test/reference/fill-alpha-pattern.traps.argb32.ref.png b/3rd-party/cairo/test/reference/fill-alpha-pattern.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha-pattern.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha-pattern.traps.argb32.ref.png diff --git a/cairo/test/reference/fill-alpha-pattern.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-alpha-pattern.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha-pattern.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha-pattern.traps.rgb24.ref.png diff --git a/cairo/test/reference/fill-alpha.argb32.ref.png b/3rd-party/cairo/test/reference/fill-alpha.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha.argb32.ref.png diff --git a/cairo/test/reference/fill-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/fill-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/fill-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/fill-alpha.image16.ref.png b/3rd-party/cairo/test/reference/fill-alpha.image16.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha.image16.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha.image16.ref.png diff --git a/cairo/test/reference/fill-alpha.ps.argb32.ref.png b/3rd-party/cairo/test/reference/fill-alpha.ps.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha.ps.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha.ps.argb32.ref.png diff --git a/cairo/test/reference/fill-alpha.quartz.ref.png b/3rd-party/cairo/test/reference/fill-alpha.quartz.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha.quartz.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha.quartz.ref.png diff --git a/cairo/test/reference/fill-alpha.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-alpha.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha.rgb24.ref.png diff --git a/cairo/test/reference/fill-alpha.traps.argb32.ref.png b/3rd-party/cairo/test/reference/fill-alpha.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha.traps.argb32.ref.png diff --git a/cairo/test/reference/fill-alpha.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-alpha.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-alpha.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-alpha.traps.rgb24.ref.png diff --git a/cairo/test/reference/fill-and-stroke-alpha-add.argb32.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke-alpha-add.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.argb32.ref.png diff --git a/cairo/test/reference/fill-and-stroke-alpha-add.base.argb32.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke-alpha-add.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.base.argb32.ref.png diff --git a/cairo/test/reference/fill-and-stroke-alpha-add.base.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke-alpha-add.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.base.rgb24.ref.png diff --git a/cairo/test/reference/fill-and-stroke-alpha-add.image16.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.image16.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke-alpha-add.image16.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.image16.ref.png diff --git a/cairo/test/reference/fill-and-stroke-alpha-add.quartz.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.quartz.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke-alpha-add.quartz.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.quartz.ref.png diff --git a/cairo/test/reference/fill-and-stroke-alpha-add.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke-alpha-add.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.rgb24.ref.png diff --git a/cairo/test/reference/fill-and-stroke-alpha-add.svg12.xfail.png b/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.svg12.xfail.png similarity index 100% rename from cairo/test/reference/fill-and-stroke-alpha-add.svg12.xfail.png rename to 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.svg12.xfail.png diff --git a/cairo/test/reference/fill-and-stroke-alpha-add.traps.argb32.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke-alpha-add.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.traps.argb32.ref.png diff --git a/cairo/test/reference/fill-and-stroke-alpha-add.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke-alpha-add.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.traps.rgb24.ref.png diff --git a/cairo/test/reference/fill-and-stroke-alpha.argb32.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke-alpha.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke-alpha.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke-alpha.argb32.ref.png diff --git a/cairo/test/reference/fill-and-stroke-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/fill-and-stroke-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/fill-and-stroke-alpha.image16.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke-alpha.image16.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke-alpha.image16.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke-alpha.image16.ref.png diff --git a/cairo/test/reference/fill-and-stroke-alpha.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke-alpha.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke-alpha.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke-alpha.rgb24.ref.png diff --git a/cairo/test/reference/fill-and-stroke-alpha.traps.argb32.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke-alpha.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke-alpha.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke-alpha.traps.argb32.ref.png diff --git a/cairo/test/reference/fill-and-stroke-alpha.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke-alpha.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke-alpha.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke-alpha.traps.rgb24.ref.png diff --git a/cairo/test/reference/fill-and-stroke.argb32.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke.argb32.ref.png diff --git a/cairo/test/reference/fill-and-stroke.base.argb32.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke.base.argb32.ref.png diff --git a/cairo/test/reference/fill-and-stroke.base.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke.base.rgb24.ref.png diff --git a/cairo/test/reference/fill-and-stroke.image16.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke.image16.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke.image16.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke.image16.ref.png diff --git a/cairo/test/reference/fill-and-stroke.ps.argb32.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke.ps.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke.ps.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke.ps.argb32.ref.png diff --git a/cairo/test/reference/fill-and-stroke.ps.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke.ps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke.ps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke.ps.rgb24.ref.png diff --git a/cairo/test/reference/fill-and-stroke.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke.quartz.argb32.ref.png diff --git a/cairo/test/reference/fill-and-stroke.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke.quartz.rgb24.ref.png diff --git a/cairo/test/reference/fill-and-stroke.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke.rgb24.ref.png diff --git a/cairo/test/reference/fill-and-stroke.traps.argb32.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke.traps.argb32.ref.png diff --git a/cairo/test/reference/fill-and-stroke.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-and-stroke.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-and-stroke.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-and-stroke.traps.rgb24.ref.png diff --git a/cairo/test/reference/fill-degenerate-sort-order.argb32.ref.png b/3rd-party/cairo/test/reference/fill-degenerate-sort-order.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-degenerate-sort-order.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-degenerate-sort-order.argb32.ref.png diff --git a/cairo/test/reference/fill-degenerate-sort-order.base.argb32.ref.png b/3rd-party/cairo/test/reference/fill-degenerate-sort-order.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-degenerate-sort-order.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-degenerate-sort-order.base.argb32.ref.png diff --git a/cairo/test/reference/fill-degenerate-sort-order.base.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-degenerate-sort-order.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-degenerate-sort-order.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-degenerate-sort-order.base.rgb24.ref.png diff --git a/cairo/test/reference/fill-degenerate-sort-order.image16.ref.png b/3rd-party/cairo/test/reference/fill-degenerate-sort-order.image16.ref.png similarity index 100% rename from cairo/test/reference/fill-degenerate-sort-order.image16.ref.png rename to 3rd-party/cairo/test/reference/fill-degenerate-sort-order.image16.ref.png diff --git a/cairo/test/reference/fill-degenerate-sort-order.ps.argb32.xfail.png b/3rd-party/cairo/test/reference/fill-degenerate-sort-order.ps.argb32.xfail.png similarity index 100% rename from cairo/test/reference/fill-degenerate-sort-order.ps.argb32.xfail.png rename to 3rd-party/cairo/test/reference/fill-degenerate-sort-order.ps.argb32.xfail.png diff --git a/cairo/test/reference/fill-degenerate-sort-order.ps.rgb24.xfail.png b/3rd-party/cairo/test/reference/fill-degenerate-sort-order.ps.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/fill-degenerate-sort-order.ps.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/fill-degenerate-sort-order.ps.rgb24.xfail.png diff --git a/cairo/test/reference/fill-degenerate-sort-order.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/fill-degenerate-sort-order.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-degenerate-sort-order.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-degenerate-sort-order.quartz.argb32.ref.png diff --git a/cairo/test/reference/fill-degenerate-sort-order.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-degenerate-sort-order.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-degenerate-sort-order.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-degenerate-sort-order.quartz.rgb24.ref.png diff --git a/cairo/test/reference/fill-degenerate-sort-order.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-degenerate-sort-order.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-degenerate-sort-order.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-degenerate-sort-order.rgb24.ref.png diff --git a/cairo/test/reference/fill-degenerate-sort-order.traps.argb32.ref.png b/3rd-party/cairo/test/reference/fill-degenerate-sort-order.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-degenerate-sort-order.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-degenerate-sort-order.traps.argb32.ref.png diff --git a/cairo/test/reference/fill-degenerate-sort-order.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-degenerate-sort-order.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-degenerate-sort-order.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-degenerate-sort-order.traps.rgb24.ref.png diff --git a/cairo/test/reference/fill-disjoint.base.argb32.ref.png b/3rd-party/cairo/test/reference/fill-disjoint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-disjoint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-disjoint.base.argb32.ref.png diff --git a/cairo/test/reference/fill-disjoint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-disjoint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-disjoint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-disjoint.base.rgb24.ref.png diff --git a/cairo/test/reference/fill-disjoint.ref.png b/3rd-party/cairo/test/reference/fill-disjoint.ref.png similarity index 100% rename from cairo/test/reference/fill-disjoint.ref.png rename to 3rd-party/cairo/test/reference/fill-disjoint.ref.png diff --git a/cairo/test/reference/fill-empty.argb32.ref.png b/3rd-party/cairo/test/reference/fill-empty.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-empty.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-empty.argb32.ref.png diff --git a/cairo/test/reference/fill-empty.base.argb32.ref.png b/3rd-party/cairo/test/reference/fill-empty.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-empty.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-empty.base.argb32.ref.png diff --git a/cairo/test/reference/fill-empty.base.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-empty.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-empty.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-empty.base.rgb24.ref.png diff --git a/cairo/test/reference/fill-empty.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-empty.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-empty.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-empty.rgb24.ref.png diff --git a/cairo/test/reference/fill-empty.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/fill-empty.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/fill-empty.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/fill-empty.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/fill-image.argb32.ref.png b/3rd-party/cairo/test/reference/fill-image.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-image.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-image.argb32.ref.png diff --git a/cairo/test/reference/fill-image.base.argb32.ref.png b/3rd-party/cairo/test/reference/fill-image.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-image.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-image.base.argb32.ref.png diff --git a/cairo/test/reference/fill-image.base.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-image.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-image.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-image.base.rgb24.ref.png diff --git a/cairo/test/reference/fill-image.image16.ref.png b/3rd-party/cairo/test/reference/fill-image.image16.ref.png similarity index 100% rename from cairo/test/reference/fill-image.image16.ref.png rename to 3rd-party/cairo/test/reference/fill-image.image16.ref.png diff --git a/cairo/test/reference/fill-image.ps.ref.png b/3rd-party/cairo/test/reference/fill-image.ps.ref.png similarity index 100% rename from cairo/test/reference/fill-image.ps.ref.png rename to 3rd-party/cairo/test/reference/fill-image.ps.ref.png diff --git a/cairo/test/reference/fill-image.quartz.ref.png b/3rd-party/cairo/test/reference/fill-image.quartz.ref.png similarity index 100% rename from cairo/test/reference/fill-image.quartz.ref.png rename to 3rd-party/cairo/test/reference/fill-image.quartz.ref.png diff --git a/cairo/test/reference/fill-image.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-image.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-image.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-image.rgb24.ref.png diff --git a/cairo/test/reference/fill-image.traps.argb32.ref.png b/3rd-party/cairo/test/reference/fill-image.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-image.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-image.traps.argb32.ref.png diff --git a/cairo/test/reference/fill-image.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-image.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-image.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-image.traps.rgb24.ref.png diff --git a/cairo/test/reference/fill-missed-stop.argb32.ref.png b/3rd-party/cairo/test/reference/fill-missed-stop.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-missed-stop.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-missed-stop.argb32.ref.png diff --git a/cairo/test/reference/fill-missed-stop.base.argb32.ref.png b/3rd-party/cairo/test/reference/fill-missed-stop.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-missed-stop.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-missed-stop.base.argb32.ref.png diff --git a/cairo/test/reference/fill-missed-stop.base.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-missed-stop.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-missed-stop.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-missed-stop.base.rgb24.ref.png diff --git a/cairo/test/reference/fill-missed-stop.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/fill-missed-stop.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-missed-stop.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-missed-stop.pdf.argb32.ref.png diff --git a/cairo/test/reference/fill-missed-stop.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/fill-missed-stop.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-missed-stop.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-missed-stop.ps2.argb32.ref.png diff --git a/cairo/test/reference/fill-missed-stop.ps2.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-missed-stop.ps2.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-missed-stop.ps2.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-missed-stop.ps2.rgb24.ref.png diff --git a/cairo/test/reference/fill-missed-stop.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/fill-missed-stop.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-missed-stop.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-missed-stop.ps3.argb32.ref.png diff --git a/cairo/test/reference/fill-missed-stop.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-missed-stop.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-missed-stop.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-missed-stop.ps3.rgb24.ref.png diff --git a/cairo/test/reference/fill-missed-stop.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-missed-stop.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-missed-stop.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-missed-stop.rgb24.ref.png diff --git a/cairo/test/reference/fill-missed-stop.traps.argb32.ref.png b/3rd-party/cairo/test/reference/fill-missed-stop.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-missed-stop.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-missed-stop.traps.argb32.ref.png diff --git a/cairo/test/reference/fill-missed-stop.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-missed-stop.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-missed-stop.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-missed-stop.traps.rgb24.ref.png diff --git a/cairo/test/reference/fill-rule.argb32.ref.png b/3rd-party/cairo/test/reference/fill-rule.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-rule.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-rule.argb32.ref.png diff --git a/cairo/test/reference/fill-rule.base.argb32.ref.png b/3rd-party/cairo/test/reference/fill-rule.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-rule.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-rule.base.argb32.ref.png diff --git a/cairo/test/reference/fill-rule.base.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-rule.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-rule.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-rule.base.rgb24.ref.png diff --git a/cairo/test/reference/fill-rule.image16.ref.png b/3rd-party/cairo/test/reference/fill-rule.image16.ref.png similarity index 100% rename from cairo/test/reference/fill-rule.image16.ref.png rename to 3rd-party/cairo/test/reference/fill-rule.image16.ref.png diff --git a/cairo/test/reference/fill-rule.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/fill-rule.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-rule.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-rule.ps2.argb32.ref.png diff --git a/cairo/test/reference/fill-rule.ps2.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-rule.ps2.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-rule.ps2.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-rule.ps2.rgb24.ref.png diff --git a/cairo/test/reference/fill-rule.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/fill-rule.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-rule.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-rule.ps3.argb32.ref.png diff --git a/cairo/test/reference/fill-rule.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-rule.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-rule.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-rule.ps3.rgb24.ref.png diff --git a/cairo/test/reference/fill-rule.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/fill-rule.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-rule.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-rule.quartz.argb32.ref.png diff --git a/cairo/test/reference/fill-rule.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-rule.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-rule.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-rule.quartz.rgb24.ref.png diff --git a/cairo/test/reference/fill-rule.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-rule.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-rule.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-rule.rgb24.ref.png diff --git a/cairo/test/reference/fill-rule.traps.argb32.ref.png b/3rd-party/cairo/test/reference/fill-rule.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-rule.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-rule.traps.argb32.ref.png diff --git a/cairo/test/reference/fill-rule.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-rule.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-rule.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-rule.traps.rgb24.ref.png diff --git a/cairo/test/reference/fill-xlib-fallback.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-xlib-fallback.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-xlib-fallback.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-xlib-fallback.rgb24.ref.png diff --git a/cairo/test/reference/fill-xlib-window.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-xlib-window.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-xlib-window.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-xlib-window.rgb24.ref.png diff --git a/cairo/test/reference/fill-xlib.argb32.ref.png b/3rd-party/cairo/test/reference/fill-xlib.argb32.ref.png similarity index 100% rename from cairo/test/reference/fill-xlib.argb32.ref.png rename to 3rd-party/cairo/test/reference/fill-xlib.argb32.ref.png diff --git a/cairo/test/reference/fill-xlib.rgb24.ref.png b/3rd-party/cairo/test/reference/fill-xlib.rgb24.ref.png similarity index 100% rename from cairo/test/reference/fill-xlib.rgb24.ref.png rename to 3rd-party/cairo/test/reference/fill-xlib.rgb24.ref.png diff --git a/cairo/test/reference/filter-bilinear-extents.argb32.ref.png b/3rd-party/cairo/test/reference/filter-bilinear-extents.argb32.ref.png similarity index 100% rename from cairo/test/reference/filter-bilinear-extents.argb32.ref.png rename to 3rd-party/cairo/test/reference/filter-bilinear-extents.argb32.ref.png diff --git a/cairo/test/reference/filter-bilinear-extents.base.argb32.ref.png b/3rd-party/cairo/test/reference/filter-bilinear-extents.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/filter-bilinear-extents.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/filter-bilinear-extents.base.argb32.ref.png diff --git a/cairo/test/reference/filter-bilinear-extents.base.rgb24.ref.png b/3rd-party/cairo/test/reference/filter-bilinear-extents.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/filter-bilinear-extents.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/filter-bilinear-extents.base.rgb24.ref.png diff --git a/cairo/test/reference/filter-bilinear-extents.image16.ref.png b/3rd-party/cairo/test/reference/filter-bilinear-extents.image16.ref.png similarity index 100% rename from cairo/test/reference/filter-bilinear-extents.image16.ref.png rename to 3rd-party/cairo/test/reference/filter-bilinear-extents.image16.ref.png diff --git a/cairo/test/reference/filter-bilinear-extents.pdf.xfail.png b/3rd-party/cairo/test/reference/filter-bilinear-extents.pdf.xfail.png similarity index 100% rename from cairo/test/reference/filter-bilinear-extents.pdf.xfail.png rename to 3rd-party/cairo/test/reference/filter-bilinear-extents.pdf.xfail.png diff --git a/cairo/test/reference/filter-bilinear-extents.ps2.ref.png b/3rd-party/cairo/test/reference/filter-bilinear-extents.ps2.ref.png similarity index 100% rename from cairo/test/reference/filter-bilinear-extents.ps2.ref.png rename to 3rd-party/cairo/test/reference/filter-bilinear-extents.ps2.ref.png diff --git a/cairo/test/reference/filter-bilinear-extents.ps3.ref.png b/3rd-party/cairo/test/reference/filter-bilinear-extents.ps3.ref.png similarity index 100% rename from cairo/test/reference/filter-bilinear-extents.ps3.ref.png rename to 3rd-party/cairo/test/reference/filter-bilinear-extents.ps3.ref.png diff --git a/cairo/test/reference/filter-bilinear-extents.quartz.xfail.png b/3rd-party/cairo/test/reference/filter-bilinear-extents.quartz.xfail.png similarity index 100% rename from cairo/test/reference/filter-bilinear-extents.quartz.xfail.png rename to 3rd-party/cairo/test/reference/filter-bilinear-extents.quartz.xfail.png diff --git a/cairo/test/reference/filter-bilinear-extents.rgb24.ref.png b/3rd-party/cairo/test/reference/filter-bilinear-extents.rgb24.ref.png similarity index 100% rename from cairo/test/reference/filter-bilinear-extents.rgb24.ref.png rename to 3rd-party/cairo/test/reference/filter-bilinear-extents.rgb24.ref.png diff --git a/cairo/test/reference/filter-nearest-offset.base.argb32.ref.png b/3rd-party/cairo/test/reference/filter-nearest-offset.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/filter-nearest-offset.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/filter-nearest-offset.base.argb32.ref.png diff --git a/cairo/test/reference/filter-nearest-offset.base.rgb24.ref.png b/3rd-party/cairo/test/reference/filter-nearest-offset.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/filter-nearest-offset.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/filter-nearest-offset.base.rgb24.ref.png diff --git a/cairo/test/reference/filter-nearest-offset.gl.xfail.png b/3rd-party/cairo/test/reference/filter-nearest-offset.gl.xfail.png similarity index 100% rename from cairo/test/reference/filter-nearest-offset.gl.xfail.png rename to 3rd-party/cairo/test/reference/filter-nearest-offset.gl.xfail.png diff --git a/cairo/test/reference/filter-nearest-offset.pdf.xfail.png b/3rd-party/cairo/test/reference/filter-nearest-offset.pdf.xfail.png similarity index 100% rename from cairo/test/reference/filter-nearest-offset.pdf.xfail.png rename to 3rd-party/cairo/test/reference/filter-nearest-offset.pdf.xfail.png diff --git a/cairo/test/reference/filter-nearest-offset.ps2.ref.png b/3rd-party/cairo/test/reference/filter-nearest-offset.ps2.ref.png similarity index 100% rename from cairo/test/reference/filter-nearest-offset.ps2.ref.png rename to 3rd-party/cairo/test/reference/filter-nearest-offset.ps2.ref.png diff --git a/cairo/test/reference/filter-nearest-offset.ps3.ref.png b/3rd-party/cairo/test/reference/filter-nearest-offset.ps3.ref.png similarity index 100% rename from cairo/test/reference/filter-nearest-offset.ps3.ref.png rename to 3rd-party/cairo/test/reference/filter-nearest-offset.ps3.ref.png diff --git a/cairo/test/reference/filter-nearest-offset.ref.png b/3rd-party/cairo/test/reference/filter-nearest-offset.ref.png similarity index 100% rename from cairo/test/reference/filter-nearest-offset.ref.png rename to 3rd-party/cairo/test/reference/filter-nearest-offset.ref.png diff --git a/cairo/test/reference/filter-nearest-offset.svg.xfail.png b/3rd-party/cairo/test/reference/filter-nearest-offset.svg.xfail.png similarity index 100% rename from cairo/test/reference/filter-nearest-offset.svg.xfail.png rename to 3rd-party/cairo/test/reference/filter-nearest-offset.svg.xfail.png diff --git a/cairo/test/reference/filter-nearest-transformed.base.argb32.ref.png b/3rd-party/cairo/test/reference/filter-nearest-transformed.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/filter-nearest-transformed.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/filter-nearest-transformed.base.argb32.ref.png diff --git a/cairo/test/reference/filter-nearest-transformed.base.rgb24.ref.png b/3rd-party/cairo/test/reference/filter-nearest-transformed.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/filter-nearest-transformed.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/filter-nearest-transformed.base.rgb24.ref.png diff --git a/cairo/test/reference/filter-nearest-transformed.gl.xfail.png b/3rd-party/cairo/test/reference/filter-nearest-transformed.gl.xfail.png similarity index 100% rename from cairo/test/reference/filter-nearest-transformed.gl.xfail.png rename to 3rd-party/cairo/test/reference/filter-nearest-transformed.gl.xfail.png diff --git a/cairo/test/reference/filter-nearest-transformed.image16.ref.png b/3rd-party/cairo/test/reference/filter-nearest-transformed.image16.ref.png similarity index 100% rename from cairo/test/reference/filter-nearest-transformed.image16.ref.png rename to 3rd-party/cairo/test/reference/filter-nearest-transformed.image16.ref.png diff --git a/cairo/test/reference/filter-nearest-transformed.pdf.xfail.png b/3rd-party/cairo/test/reference/filter-nearest-transformed.pdf.xfail.png similarity index 100% rename from cairo/test/reference/filter-nearest-transformed.pdf.xfail.png rename to 3rd-party/cairo/test/reference/filter-nearest-transformed.pdf.xfail.png diff --git a/cairo/test/reference/filter-nearest-transformed.quartz.xfail.png b/3rd-party/cairo/test/reference/filter-nearest-transformed.quartz.xfail.png similarity index 100% rename from cairo/test/reference/filter-nearest-transformed.quartz.xfail.png rename to 3rd-party/cairo/test/reference/filter-nearest-transformed.quartz.xfail.png diff --git a/cairo/test/reference/filter-nearest-transformed.ref.png b/3rd-party/cairo/test/reference/filter-nearest-transformed.ref.png similarity index 100% rename from cairo/test/reference/filter-nearest-transformed.ref.png rename to 3rd-party/cairo/test/reference/filter-nearest-transformed.ref.png diff --git a/cairo/test/reference/filter-nearest-transformed.svg.xfail.png b/3rd-party/cairo/test/reference/filter-nearest-transformed.svg.xfail.png similarity index 100% rename from cairo/test/reference/filter-nearest-transformed.svg.xfail.png rename to 3rd-party/cairo/test/reference/filter-nearest-transformed.svg.xfail.png diff --git a/cairo/test/reference/finer-grained-fallbacks.argb32.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.argb32.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.argb32.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.argb32.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.base.argb32.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.base.argb32.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.base.rgb24.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.base.rgb24.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.gl.argb32.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.gl.argb32.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.gl.argb32.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.gl.argb32.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.image16.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.image16.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.image16.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.image16.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.mask.argb32.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.mask.argb32.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.mask.rgb24.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.argb32.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.ps2.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.ps2.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.ps2.rgb24.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.rgb24.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.ps2.rgb24.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.rgb24.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.argb32.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.ps3.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.ps3.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.rgb24.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.quartz.argb32.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.quartz.rgb24.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.rgb24.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.rgb24.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.rgb24.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.rgb24.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.svg12.argb32.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.svg12.argb32.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.svg12.argb32.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.svg12.argb32.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.svg12.rgb24.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.svg12.rgb24.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.svg12.rgb24.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.svg12.rgb24.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.traps.argb32.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.traps.argb32.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.traps.rgb24.ref.png diff --git a/cairo/test/reference/finer-grained-fallbacks.xlib-fallback.ref.png b/3rd-party/cairo/test/reference/finer-grained-fallbacks.xlib-fallback.ref.png similarity index 100% rename from cairo/test/reference/finer-grained-fallbacks.xlib-fallback.ref.png rename to 3rd-party/cairo/test/reference/finer-grained-fallbacks.xlib-fallback.ref.png diff --git a/cairo/test/reference/font-matrix-translation.argb32.ref.png b/3rd-party/cairo/test/reference/font-matrix-translation.argb32.ref.png similarity index 100% rename from cairo/test/reference/font-matrix-translation.argb32.ref.png rename to 3rd-party/cairo/test/reference/font-matrix-translation.argb32.ref.png diff --git a/cairo/test/reference/font-matrix-translation.base.argb32.ref.png b/3rd-party/cairo/test/reference/font-matrix-translation.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/font-matrix-translation.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/font-matrix-translation.base.argb32.ref.png diff --git a/cairo/test/reference/font-matrix-translation.base.rgb24.ref.png b/3rd-party/cairo/test/reference/font-matrix-translation.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/font-matrix-translation.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/font-matrix-translation.base.rgb24.ref.png diff --git a/cairo/test/reference/font-matrix-translation.image16.ref.png b/3rd-party/cairo/test/reference/font-matrix-translation.image16.ref.png similarity index 100% rename from cairo/test/reference/font-matrix-translation.image16.ref.png rename to 3rd-party/cairo/test/reference/font-matrix-translation.image16.ref.png diff --git a/cairo/test/reference/font-matrix-translation.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/font-matrix-translation.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/font-matrix-translation.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/font-matrix-translation.ps2.argb32.ref.png diff --git a/cairo/test/reference/font-matrix-translation.ps2.rgb24.ref.png b/3rd-party/cairo/test/reference/font-matrix-translation.ps2.rgb24.ref.png similarity index 100% rename from cairo/test/reference/font-matrix-translation.ps2.rgb24.ref.png rename to 3rd-party/cairo/test/reference/font-matrix-translation.ps2.rgb24.ref.png diff --git a/cairo/test/reference/font-matrix-translation.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/font-matrix-translation.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/font-matrix-translation.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/font-matrix-translation.ps3.argb32.ref.png diff --git a/cairo/test/reference/font-matrix-translation.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/font-matrix-translation.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/font-matrix-translation.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/font-matrix-translation.ps3.rgb24.ref.png diff --git a/cairo/test/reference/font-matrix-translation.quartz.ref.png b/3rd-party/cairo/test/reference/font-matrix-translation.quartz.ref.png similarity index 100% rename from cairo/test/reference/font-matrix-translation.quartz.ref.png rename to 3rd-party/cairo/test/reference/font-matrix-translation.quartz.ref.png diff --git a/cairo/test/reference/font-matrix-translation.rgb24.ref.png b/3rd-party/cairo/test/reference/font-matrix-translation.rgb24.ref.png similarity index 100% rename from cairo/test/reference/font-matrix-translation.rgb24.ref.png rename to 3rd-party/cairo/test/reference/font-matrix-translation.rgb24.ref.png diff --git a/cairo/test/reference/font-matrix-translation.svg.ref.png b/3rd-party/cairo/test/reference/font-matrix-translation.svg.ref.png similarity index 100% rename from cairo/test/reference/font-matrix-translation.svg.ref.png rename to 3rd-party/cairo/test/reference/font-matrix-translation.svg.ref.png diff --git a/cairo/test/reference/font-matrix-translation.traps.ref.png b/3rd-party/cairo/test/reference/font-matrix-translation.traps.ref.png similarity index 100% rename from cairo/test/reference/font-matrix-translation.traps.ref.png rename to 3rd-party/cairo/test/reference/font-matrix-translation.traps.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-positioning.argb32.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.argb32.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-positioning.argb32.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.argb32.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-positioning.image16.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.image16.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-positioning.image16.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.image16.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-positioning.pdf.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.pdf.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-positioning.pdf.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.pdf.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-positioning.ps2.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.ps2.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-positioning.ps2.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.ps2.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-positioning.ps3.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.ps3.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-positioning.ps3.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.ps3.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-positioning.rgb24.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.rgb24.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-positioning.rgb24.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.rgb24.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-positioning.svg.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.svg.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-positioning.svg.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.svg.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-positioning.traps.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.traps.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-positioning.traps.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.traps.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-table.argb32.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-table.argb32.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-table.argb32.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-table.argb32.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-table.base.argb32.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-table.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-table.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-table.base.argb32.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-table.base.rgb24.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-table.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-table.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-table.base.rgb24.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-table.image16.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-table.image16.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-table.image16.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-table.image16.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-table.ps2.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-table.ps2.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-table.ps2.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-table.ps2.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-table.ps3.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-table.ps3.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-table.ps3.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-table.ps3.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-table.quartz.xfail.png b/3rd-party/cairo/test/reference/ft-show-glyphs-table.quartz.xfail.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-table.quartz.xfail.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-table.quartz.xfail.png diff --git a/cairo/test/reference/ft-show-glyphs-table.rgb24.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-table.rgb24.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-table.rgb24.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-table.rgb24.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-table.svg.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-table.svg.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-table.svg.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-table.svg.ref.png diff --git a/cairo/test/reference/ft-show-glyphs-table.traps.ref.png b/3rd-party/cairo/test/reference/ft-show-glyphs-table.traps.ref.png similarity index 100% rename from cairo/test/reference/ft-show-glyphs-table.traps.ref.png rename to 3rd-party/cairo/test/reference/ft-show-glyphs-table.traps.ref.png diff --git a/cairo/test/reference/ft-text-antialias-none.base.argb32.ref.png b/3rd-party/cairo/test/reference/ft-text-antialias-none.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/ft-text-antialias-none.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/ft-text-antialias-none.base.argb32.ref.png diff --git a/cairo/test/reference/ft-text-antialias-none.base.rgb24.ref.png b/3rd-party/cairo/test/reference/ft-text-antialias-none.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/ft-text-antialias-none.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/ft-text-antialias-none.base.rgb24.ref.png diff --git a/cairo/test/reference/ft-text-antialias-none.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/ft-text-antialias-none.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/ft-text-antialias-none.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/ft-text-antialias-none.ps2.argb32.ref.png diff --git a/cairo/test/reference/ft-text-antialias-none.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/ft-text-antialias-none.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/ft-text-antialias-none.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/ft-text-antialias-none.ps3.argb32.ref.png diff --git a/cairo/test/reference/ft-text-antialias-none.ref.png b/3rd-party/cairo/test/reference/ft-text-antialias-none.ref.png similarity index 100% rename from cairo/test/reference/ft-text-antialias-none.ref.png rename to 3rd-party/cairo/test/reference/ft-text-antialias-none.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type1.argb32.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.argb32.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type1.argb32.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.argb32.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type1.base.argb32.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type1.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.base.argb32.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type1.base.rgb24.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type1.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.base.rgb24.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type1.image16.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.image16.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type1.image16.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.image16.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type1.pdf.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.pdf.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type1.pdf.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.pdf.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type1.ps.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.ps.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type1.ps.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.ps.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type1.quartz.xfail.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.quartz.xfail.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type1.quartz.xfail.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.quartz.xfail.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type1.rgb24.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.rgb24.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type1.rgb24.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.rgb24.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type1.svg.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.svg.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type1.svg.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.svg.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type1.traps.argb32.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type1.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.traps.argb32.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type1.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type1.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.traps.rgb24.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type1.xfail.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.xfail.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type1.xfail.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.xfail.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type3.base.argb32.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type3.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.base.argb32.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type3.base.rgb24.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type3.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.base.rgb24.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type3.image16.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.image16.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type3.image16.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.image16.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type3.pdf.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.pdf.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type3.pdf.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.pdf.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type3.ps.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.ps.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type3.ps.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.ps.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type3.quartz.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.quartz.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type3.quartz.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.quartz.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type3.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type3.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type3.svg.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.svg.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type3.svg.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.svg.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type3.traps.argb32.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type3.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.traps.argb32.ref.png diff --git a/cairo/test/reference/ft-text-vertical-layout-type3.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/ft-text-vertical-layout-type3.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.traps.rgb24.ref.png diff --git a/cairo/test/reference/get-group-target.base.argb32.ref.png b/3rd-party/cairo/test/reference/get-group-target.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/get-group-target.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/get-group-target.base.argb32.ref.png diff --git a/cairo/test/reference/get-group-target.base.rgb24.ref.png b/3rd-party/cairo/test/reference/get-group-target.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/get-group-target.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/get-group-target.base.rgb24.ref.png diff --git a/cairo/test/reference/get-group-target.ref.png b/3rd-party/cairo/test/reference/get-group-target.ref.png similarity index 100% rename from cairo/test/reference/get-group-target.ref.png rename to 3rd-party/cairo/test/reference/get-group-target.ref.png diff --git a/cairo/test/reference/gl-surface-source.argb32.ref.png b/3rd-party/cairo/test/reference/gl-surface-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/gl-surface-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/gl-surface-source.argb32.ref.png diff --git a/cairo/test/reference/gl-surface-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/gl-surface-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/gl-surface-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/gl-surface-source.base.argb32.ref.png diff --git a/cairo/test/reference/gl-surface-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/gl-surface-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/gl-surface-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/gl-surface-source.base.rgb24.ref.png diff --git a/cairo/test/reference/gl-surface-source.image16.ref.png b/3rd-party/cairo/test/reference/gl-surface-source.image16.ref.png similarity index 100% rename from cairo/test/reference/gl-surface-source.image16.ref.png rename to 3rd-party/cairo/test/reference/gl-surface-source.image16.ref.png diff --git a/cairo/test/reference/gl-surface-source.rgb24.ref.png b/3rd-party/cairo/test/reference/gl-surface-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/gl-surface-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/gl-surface-source.rgb24.ref.png diff --git a/cairo/test/reference/glyph-cache-pressure.argb32.ref.png b/3rd-party/cairo/test/reference/glyph-cache-pressure.argb32.ref.png similarity index 100% rename from cairo/test/reference/glyph-cache-pressure.argb32.ref.png rename to 3rd-party/cairo/test/reference/glyph-cache-pressure.argb32.ref.png diff --git a/cairo/test/reference/glyph-cache-pressure.base.argb32.ref.png b/3rd-party/cairo/test/reference/glyph-cache-pressure.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/glyph-cache-pressure.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/glyph-cache-pressure.base.argb32.ref.png diff --git a/cairo/test/reference/glyph-cache-pressure.base.rgb24.ref.png b/3rd-party/cairo/test/reference/glyph-cache-pressure.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/glyph-cache-pressure.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/glyph-cache-pressure.base.rgb24.ref.png diff --git a/cairo/test/reference/glyph-cache-pressure.image16.ref.png b/3rd-party/cairo/test/reference/glyph-cache-pressure.image16.ref.png similarity index 100% rename from cairo/test/reference/glyph-cache-pressure.image16.ref.png rename to 3rd-party/cairo/test/reference/glyph-cache-pressure.image16.ref.png diff --git a/cairo/test/reference/glyph-cache-pressure.ps2.ref.png b/3rd-party/cairo/test/reference/glyph-cache-pressure.ps2.ref.png similarity index 100% rename from cairo/test/reference/glyph-cache-pressure.ps2.ref.png rename to 3rd-party/cairo/test/reference/glyph-cache-pressure.ps2.ref.png diff --git a/cairo/test/reference/glyph-cache-pressure.ps3.ref.png b/3rd-party/cairo/test/reference/glyph-cache-pressure.ps3.ref.png similarity index 100% rename from cairo/test/reference/glyph-cache-pressure.ps3.ref.png rename to 3rd-party/cairo/test/reference/glyph-cache-pressure.ps3.ref.png diff --git a/cairo/test/reference/glyph-cache-pressure.quartz.ref.png b/3rd-party/cairo/test/reference/glyph-cache-pressure.quartz.ref.png similarity index 100% rename from cairo/test/reference/glyph-cache-pressure.quartz.ref.png rename to 3rd-party/cairo/test/reference/glyph-cache-pressure.quartz.ref.png diff --git a/cairo/test/reference/glyph-cache-pressure.rgb24.ref.png b/3rd-party/cairo/test/reference/glyph-cache-pressure.rgb24.ref.png similarity index 100% rename from cairo/test/reference/glyph-cache-pressure.rgb24.ref.png rename to 3rd-party/cairo/test/reference/glyph-cache-pressure.rgb24.ref.png diff --git a/cairo/test/reference/glyph-cache-pressure.traps.ref.png b/3rd-party/cairo/test/reference/glyph-cache-pressure.traps.ref.png similarity index 100% rename from cairo/test/reference/glyph-cache-pressure.traps.ref.png rename to 3rd-party/cairo/test/reference/glyph-cache-pressure.traps.ref.png diff --git a/cairo/test/reference/gradient-alpha.argb32.ref.png b/3rd-party/cairo/test/reference/gradient-alpha.argb32.ref.png similarity index 100% rename from cairo/test/reference/gradient-alpha.argb32.ref.png rename to 3rd-party/cairo/test/reference/gradient-alpha.argb32.ref.png diff --git a/cairo/test/reference/gradient-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/gradient-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/gradient-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/gradient-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/gradient-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/gradient-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/gradient-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/gradient-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/gradient-alpha.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/gradient-alpha.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/gradient-alpha.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/gradient-alpha.ps2.argb32.ref.png diff --git a/cairo/test/reference/gradient-alpha.ps2.rgb24.ref.png b/3rd-party/cairo/test/reference/gradient-alpha.ps2.rgb24.ref.png similarity index 100% rename from cairo/test/reference/gradient-alpha.ps2.rgb24.ref.png rename to 3rd-party/cairo/test/reference/gradient-alpha.ps2.rgb24.ref.png diff --git a/cairo/test/reference/gradient-alpha.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/gradient-alpha.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/gradient-alpha.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/gradient-alpha.ps3.argb32.ref.png diff --git a/cairo/test/reference/gradient-alpha.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/gradient-alpha.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/gradient-alpha.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/gradient-alpha.ps3.rgb24.ref.png diff --git a/cairo/test/reference/gradient-alpha.rgb24.ref.png b/3rd-party/cairo/test/reference/gradient-alpha.rgb24.ref.png similarity index 100% rename from cairo/test/reference/gradient-alpha.rgb24.ref.png rename to 3rd-party/cairo/test/reference/gradient-alpha.rgb24.ref.png diff --git a/cairo/test/reference/gradient-constant-alpha.argb32.ref.png b/3rd-party/cairo/test/reference/gradient-constant-alpha.argb32.ref.png similarity index 100% rename from cairo/test/reference/gradient-constant-alpha.argb32.ref.png rename to 3rd-party/cairo/test/reference/gradient-constant-alpha.argb32.ref.png diff --git a/cairo/test/reference/gradient-constant-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/gradient-constant-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/gradient-constant-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/gradient-constant-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/gradient-constant-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/gradient-constant-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/gradient-constant-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/gradient-constant-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/gradient-constant-alpha.ps3.ref.png b/3rd-party/cairo/test/reference/gradient-constant-alpha.ps3.ref.png similarity index 100% rename from cairo/test/reference/gradient-constant-alpha.ps3.ref.png rename to 3rd-party/cairo/test/reference/gradient-constant-alpha.ps3.ref.png diff --git a/cairo/test/reference/gradient-constant-alpha.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/gradient-constant-alpha.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/gradient-constant-alpha.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/gradient-constant-alpha.ps3.rgb24.ref.png diff --git a/cairo/test/reference/gradient-constant-alpha.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/gradient-constant-alpha.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/gradient-constant-alpha.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/gradient-constant-alpha.quartz.argb32.ref.png diff --git a/cairo/test/reference/gradient-constant-alpha.rgb24.ref.png b/3rd-party/cairo/test/reference/gradient-constant-alpha.rgb24.ref.png similarity index 100% rename from cairo/test/reference/gradient-constant-alpha.rgb24.ref.png rename to 3rd-party/cairo/test/reference/gradient-constant-alpha.rgb24.ref.png diff --git a/cairo/test/reference/gradient-zero-stops-mask.argb32.ref.png b/3rd-party/cairo/test/reference/gradient-zero-stops-mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/gradient-zero-stops-mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/gradient-zero-stops-mask.argb32.ref.png diff --git a/cairo/test/reference/gradient-zero-stops-mask.base.argb32.ref.png b/3rd-party/cairo/test/reference/gradient-zero-stops-mask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/gradient-zero-stops-mask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/gradient-zero-stops-mask.base.argb32.ref.png diff --git a/cairo/test/reference/gradient-zero-stops-mask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/gradient-zero-stops-mask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/gradient-zero-stops-mask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/gradient-zero-stops-mask.base.rgb24.ref.png diff --git a/cairo/test/reference/gradient-zero-stops-mask.rgb24.ref.png b/3rd-party/cairo/test/reference/gradient-zero-stops-mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/gradient-zero-stops-mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/gradient-zero-stops-mask.rgb24.ref.png diff --git a/cairo/test/reference/gradient-zero-stops.argb32.ref.png b/3rd-party/cairo/test/reference/gradient-zero-stops.argb32.ref.png similarity index 100% rename from cairo/test/reference/gradient-zero-stops.argb32.ref.png rename to 3rd-party/cairo/test/reference/gradient-zero-stops.argb32.ref.png diff --git a/cairo/test/reference/gradient-zero-stops.base.argb32.ref.png b/3rd-party/cairo/test/reference/gradient-zero-stops.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/gradient-zero-stops.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/gradient-zero-stops.base.argb32.ref.png diff --git a/cairo/test/reference/gradient-zero-stops.base.rgb24.ref.png b/3rd-party/cairo/test/reference/gradient-zero-stops.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/gradient-zero-stops.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/gradient-zero-stops.base.rgb24.ref.png diff --git a/cairo/test/reference/gradient-zero-stops.rgb24.ref.png b/3rd-party/cairo/test/reference/gradient-zero-stops.rgb24.ref.png similarity index 100% rename from cairo/test/reference/gradient-zero-stops.rgb24.ref.png rename to 3rd-party/cairo/test/reference/gradient-zero-stops.rgb24.ref.png diff --git a/cairo/test/reference/group-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/group-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/group-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/group-clip.base.argb32.ref.png diff --git a/cairo/test/reference/group-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/group-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/group-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/group-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/group-clip.image16.ref.png b/3rd-party/cairo/test/reference/group-clip.image16.ref.png similarity index 100% rename from cairo/test/reference/group-clip.image16.ref.png rename to 3rd-party/cairo/test/reference/group-clip.image16.ref.png diff --git a/cairo/test/reference/group-clip.ref.png b/3rd-party/cairo/test/reference/group-clip.ref.png similarity index 100% rename from cairo/test/reference/group-clip.ref.png rename to 3rd-party/cairo/test/reference/group-clip.ref.png diff --git a/cairo/test/reference/group-paint.base.argb32.ref.png b/3rd-party/cairo/test/reference/group-paint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/group-paint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/group-paint.base.argb32.ref.png diff --git a/cairo/test/reference/group-paint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/group-paint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/group-paint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/group-paint.base.rgb24.ref.png diff --git a/cairo/test/reference/group-paint.ref.png b/3rd-party/cairo/test/reference/group-paint.ref.png similarity index 100% rename from cairo/test/reference/group-paint.ref.png rename to 3rd-party/cairo/test/reference/group-paint.ref.png diff --git a/cairo/test/reference/group-unaligned.argb32.ref.png b/3rd-party/cairo/test/reference/group-unaligned.argb32.ref.png similarity index 100% rename from cairo/test/reference/group-unaligned.argb32.ref.png rename to 3rd-party/cairo/test/reference/group-unaligned.argb32.ref.png diff --git a/cairo/test/reference/group-unaligned.base.argb32.ref.png b/3rd-party/cairo/test/reference/group-unaligned.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/group-unaligned.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/group-unaligned.base.argb32.ref.png diff --git a/cairo/test/reference/group-unaligned.base.rgb24.ref.png b/3rd-party/cairo/test/reference/group-unaligned.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/group-unaligned.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/group-unaligned.base.rgb24.ref.png diff --git a/cairo/test/reference/group-unaligned.image16.ref.png b/3rd-party/cairo/test/reference/group-unaligned.image16.ref.png similarity index 100% rename from cairo/test/reference/group-unaligned.image16.ref.png rename to 3rd-party/cairo/test/reference/group-unaligned.image16.ref.png diff --git a/cairo/test/reference/group-unaligned.ps.ref.png b/3rd-party/cairo/test/reference/group-unaligned.ps.ref.png similarity index 100% rename from cairo/test/reference/group-unaligned.ps.ref.png rename to 3rd-party/cairo/test/reference/group-unaligned.ps.ref.png diff --git a/cairo/test/reference/group-unaligned.ps.rgb24.xfail.png b/3rd-party/cairo/test/reference/group-unaligned.ps.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/group-unaligned.ps.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/group-unaligned.ps.rgb24.xfail.png diff --git a/cairo/test/reference/group-unaligned.quartz.ref.png b/3rd-party/cairo/test/reference/group-unaligned.quartz.ref.png similarity index 100% rename from cairo/test/reference/group-unaligned.quartz.ref.png rename to 3rd-party/cairo/test/reference/group-unaligned.quartz.ref.png diff --git a/cairo/test/reference/group-unaligned.rgb24.ref.png b/3rd-party/cairo/test/reference/group-unaligned.rgb24.ref.png similarity index 100% rename from cairo/test/reference/group-unaligned.rgb24.ref.png rename to 3rd-party/cairo/test/reference/group-unaligned.rgb24.ref.png diff --git a/cairo/test/reference/group-unaligned.svg.argb32.xfail.png b/3rd-party/cairo/test/reference/group-unaligned.svg.argb32.xfail.png similarity index 100% rename from cairo/test/reference/group-unaligned.svg.argb32.xfail.png rename to 3rd-party/cairo/test/reference/group-unaligned.svg.argb32.xfail.png diff --git a/cairo/test/reference/group-unaligned.svg.rgb24.xfail.png b/3rd-party/cairo/test/reference/group-unaligned.svg.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/group-unaligned.svg.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/group-unaligned.svg.rgb24.xfail.png diff --git a/cairo/test/reference/group-unaligned.traps.argb32.ref.png b/3rd-party/cairo/test/reference/group-unaligned.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/group-unaligned.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/group-unaligned.traps.argb32.ref.png diff --git a/cairo/test/reference/group-unaligned.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/group-unaligned.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/group-unaligned.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/group-unaligned.traps.rgb24.ref.png diff --git a/cairo/test/reference/group-unaligned.xlib-fallback.ref.png b/3rd-party/cairo/test/reference/group-unaligned.xlib-fallback.ref.png similarity index 100% rename from cairo/test/reference/group-unaligned.xlib-fallback.ref.png rename to 3rd-party/cairo/test/reference/group-unaligned.xlib-fallback.ref.png diff --git a/cairo/test/reference/halo-transform.argb32.ref.png b/3rd-party/cairo/test/reference/halo-transform.argb32.ref.png similarity index 100% rename from cairo/test/reference/halo-transform.argb32.ref.png rename to 3rd-party/cairo/test/reference/halo-transform.argb32.ref.png diff --git a/cairo/test/reference/halo-transform.base.argb32.ref.png b/3rd-party/cairo/test/reference/halo-transform.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/halo-transform.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/halo-transform.base.argb32.ref.png diff --git a/cairo/test/reference/halo-transform.base.rgb24.ref.png b/3rd-party/cairo/test/reference/halo-transform.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/halo-transform.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/halo-transform.base.rgb24.ref.png diff --git a/cairo/test/reference/halo-transform.image16.ref.png b/3rd-party/cairo/test/reference/halo-transform.image16.ref.png similarity index 100% rename from cairo/test/reference/halo-transform.image16.ref.png rename to 3rd-party/cairo/test/reference/halo-transform.image16.ref.png diff --git a/cairo/test/reference/halo-transform.ps.ref.png b/3rd-party/cairo/test/reference/halo-transform.ps.ref.png similarity index 100% rename from cairo/test/reference/halo-transform.ps.ref.png rename to 3rd-party/cairo/test/reference/halo-transform.ps.ref.png diff --git a/cairo/test/reference/halo-transform.quartz.ref.png b/3rd-party/cairo/test/reference/halo-transform.quartz.ref.png similarity index 100% rename from cairo/test/reference/halo-transform.quartz.ref.png rename to 3rd-party/cairo/test/reference/halo-transform.quartz.ref.png diff --git a/cairo/test/reference/halo-transform.rgb24.ref.png b/3rd-party/cairo/test/reference/halo-transform.rgb24.ref.png similarity index 100% rename from cairo/test/reference/halo-transform.rgb24.ref.png rename to 3rd-party/cairo/test/reference/halo-transform.rgb24.ref.png diff --git a/cairo/test/reference/halo-transform.traps.ref.png b/3rd-party/cairo/test/reference/halo-transform.traps.ref.png similarity index 100% rename from cairo/test/reference/halo-transform.traps.ref.png rename to 3rd-party/cairo/test/reference/halo-transform.traps.ref.png diff --git a/cairo/test/reference/halo.base.argb32.ref.png b/3rd-party/cairo/test/reference/halo.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/halo.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/halo.base.argb32.ref.png diff --git a/cairo/test/reference/halo.base.rgb24.ref.png b/3rd-party/cairo/test/reference/halo.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/halo.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/halo.base.rgb24.ref.png diff --git a/cairo/test/reference/halo.image16.ref.png b/3rd-party/cairo/test/reference/halo.image16.ref.png similarity index 100% rename from cairo/test/reference/halo.image16.ref.png rename to 3rd-party/cairo/test/reference/halo.image16.ref.png diff --git a/cairo/test/reference/halo.mask.argb32.ref.png b/3rd-party/cairo/test/reference/halo.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/halo.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/halo.mask.argb32.ref.png diff --git a/cairo/test/reference/halo.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/halo.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/halo.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/halo.mask.rgb24.ref.png diff --git a/cairo/test/reference/halo.ps.ref.png b/3rd-party/cairo/test/reference/halo.ps.ref.png similarity index 100% rename from cairo/test/reference/halo.ps.ref.png rename to 3rd-party/cairo/test/reference/halo.ps.ref.png diff --git a/cairo/test/reference/halo.quartz.ref.png b/3rd-party/cairo/test/reference/halo.quartz.ref.png similarity index 100% rename from cairo/test/reference/halo.quartz.ref.png rename to 3rd-party/cairo/test/reference/halo.quartz.ref.png diff --git a/cairo/test/reference/halo.ref.png b/3rd-party/cairo/test/reference/halo.ref.png similarity index 100% rename from cairo/test/reference/halo.ref.png rename to 3rd-party/cairo/test/reference/halo.ref.png diff --git a/cairo/test/reference/halo.traps.ref.png b/3rd-party/cairo/test/reference/halo.traps.ref.png similarity index 100% rename from cairo/test/reference/halo.traps.ref.png rename to 3rd-party/cairo/test/reference/halo.traps.ref.png diff --git a/cairo/test/reference/hatchings.base.argb32.ref.png b/3rd-party/cairo/test/reference/hatchings.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/hatchings.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/hatchings.base.argb32.ref.png diff --git a/cairo/test/reference/hatchings.base.rgb24.ref.png b/3rd-party/cairo/test/reference/hatchings.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/hatchings.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/hatchings.base.rgb24.ref.png diff --git a/cairo/test/reference/hatchings.mask.argb32.ref.png b/3rd-party/cairo/test/reference/hatchings.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/hatchings.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/hatchings.mask.argb32.ref.png diff --git a/cairo/test/reference/hatchings.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/hatchings.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/hatchings.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/hatchings.mask.rgb24.ref.png diff --git a/cairo/test/reference/hatchings.ref.png b/3rd-party/cairo/test/reference/hatchings.ref.png similarity index 100% rename from cairo/test/reference/hatchings.ref.png rename to 3rd-party/cairo/test/reference/hatchings.ref.png diff --git a/cairo/test/reference/hatchings.traps.argb32.ref.png b/3rd-party/cairo/test/reference/hatchings.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/hatchings.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/hatchings.traps.argb32.ref.png diff --git a/cairo/test/reference/hatchings.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/hatchings.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/hatchings.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/hatchings.traps.rgb24.ref.png diff --git a/cairo/test/reference/horizontal-clip.argb32.ref.png b/3rd-party/cairo/test/reference/horizontal-clip.argb32.ref.png similarity index 100% rename from cairo/test/reference/horizontal-clip.argb32.ref.png rename to 3rd-party/cairo/test/reference/horizontal-clip.argb32.ref.png diff --git a/cairo/test/reference/horizontal-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/horizontal-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/horizontal-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/horizontal-clip.base.argb32.ref.png diff --git a/cairo/test/reference/horizontal-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/horizontal-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/horizontal-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/horizontal-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/horizontal-clip.rgb24.ref.png b/3rd-party/cairo/test/reference/horizontal-clip.rgb24.ref.png similarity index 100% rename from cairo/test/reference/horizontal-clip.rgb24.ref.png rename to 3rd-party/cairo/test/reference/horizontal-clip.rgb24.ref.png diff --git a/cairo/test/reference/huge-linear.argb32.ref.png b/3rd-party/cairo/test/reference/huge-linear.argb32.ref.png similarity index 100% rename from cairo/test/reference/huge-linear.argb32.ref.png rename to 3rd-party/cairo/test/reference/huge-linear.argb32.ref.png diff --git a/cairo/test/reference/huge-linear.base.argb32.ref.png b/3rd-party/cairo/test/reference/huge-linear.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/huge-linear.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/huge-linear.base.argb32.ref.png diff --git a/cairo/test/reference/huge-linear.base.rgb24.ref.png b/3rd-party/cairo/test/reference/huge-linear.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/huge-linear.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/huge-linear.base.rgb24.ref.png diff --git a/cairo/test/reference/huge-linear.image16.ref.png b/3rd-party/cairo/test/reference/huge-linear.image16.ref.png similarity index 100% rename from cairo/test/reference/huge-linear.image16.ref.png rename to 3rd-party/cairo/test/reference/huge-linear.image16.ref.png diff --git a/cairo/test/reference/huge-linear.pdf.ref.png b/3rd-party/cairo/test/reference/huge-linear.pdf.ref.png similarity index 100% rename from cairo/test/reference/huge-linear.pdf.ref.png rename to 3rd-party/cairo/test/reference/huge-linear.pdf.ref.png diff --git a/cairo/test/reference/huge-linear.ps3.ref.png b/3rd-party/cairo/test/reference/huge-linear.ps3.ref.png similarity index 100% rename from cairo/test/reference/huge-linear.ps3.ref.png rename to 3rd-party/cairo/test/reference/huge-linear.ps3.ref.png diff --git a/cairo/test/reference/huge-linear.quartz.ref.png b/3rd-party/cairo/test/reference/huge-linear.quartz.ref.png similarity index 100% rename from cairo/test/reference/huge-linear.quartz.ref.png rename to 3rd-party/cairo/test/reference/huge-linear.quartz.ref.png diff --git a/cairo/test/reference/huge-linear.rgb24.ref.png b/3rd-party/cairo/test/reference/huge-linear.rgb24.ref.png similarity index 100% rename from cairo/test/reference/huge-linear.rgb24.ref.png rename to 3rd-party/cairo/test/reference/huge-linear.rgb24.ref.png diff --git a/cairo/test/reference/huge-radial.base.argb32.ref.png b/3rd-party/cairo/test/reference/huge-radial.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/huge-radial.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/huge-radial.base.argb32.ref.png diff --git a/cairo/test/reference/huge-radial.base.rgb24.ref.png b/3rd-party/cairo/test/reference/huge-radial.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/huge-radial.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/huge-radial.base.rgb24.ref.png diff --git a/cairo/test/reference/huge-radial.image16.ref.png b/3rd-party/cairo/test/reference/huge-radial.image16.ref.png similarity index 100% rename from cairo/test/reference/huge-radial.image16.ref.png rename to 3rd-party/cairo/test/reference/huge-radial.image16.ref.png diff --git a/cairo/test/reference/huge-radial.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/huge-radial.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/huge-radial.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/huge-radial.pdf.argb32.ref.png diff --git a/cairo/test/reference/huge-radial.pdf.rgb24.ref.png b/3rd-party/cairo/test/reference/huge-radial.pdf.rgb24.ref.png similarity index 100% rename from cairo/test/reference/huge-radial.pdf.rgb24.ref.png rename to 3rd-party/cairo/test/reference/huge-radial.pdf.rgb24.ref.png diff --git a/cairo/test/reference/huge-radial.ps3.ref.png b/3rd-party/cairo/test/reference/huge-radial.ps3.ref.png similarity index 100% rename from cairo/test/reference/huge-radial.ps3.ref.png rename to 3rd-party/cairo/test/reference/huge-radial.ps3.ref.png diff --git a/cairo/test/reference/huge-radial.quartz.ref.png b/3rd-party/cairo/test/reference/huge-radial.quartz.ref.png similarity index 100% rename from cairo/test/reference/huge-radial.quartz.ref.png rename to 3rd-party/cairo/test/reference/huge-radial.quartz.ref.png diff --git a/cairo/test/reference/huge-radial.ref.png b/3rd-party/cairo/test/reference/huge-radial.ref.png similarity index 100% rename from cairo/test/reference/huge-radial.ref.png rename to 3rd-party/cairo/test/reference/huge-radial.ref.png diff --git a/cairo/test/reference/image-bug-710072-aligned.base.argb32.ref.png b/3rd-party/cairo/test/reference/image-bug-710072-aligned.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/image-bug-710072-aligned.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/image-bug-710072-aligned.base.argb32.ref.png diff --git a/cairo/test/reference/image-bug-710072-aligned.base.rgb24.ref.png b/3rd-party/cairo/test/reference/image-bug-710072-aligned.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/image-bug-710072-aligned.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/image-bug-710072-aligned.base.rgb24.ref.png diff --git a/cairo/test/reference/image-bug-710072-aligned.ref.png b/3rd-party/cairo/test/reference/image-bug-710072-aligned.ref.png similarity index 100% rename from cairo/test/reference/image-bug-710072-aligned.ref.png rename to 3rd-party/cairo/test/reference/image-bug-710072-aligned.ref.png diff --git a/cairo/test/reference/image-bug-710072-unaligned.base.argb32.ref.png b/3rd-party/cairo/test/reference/image-bug-710072-unaligned.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/image-bug-710072-unaligned.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/image-bug-710072-unaligned.base.argb32.ref.png diff --git a/cairo/test/reference/image-bug-710072-unaligned.base.rgb24.ref.png b/3rd-party/cairo/test/reference/image-bug-710072-unaligned.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/image-bug-710072-unaligned.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/image-bug-710072-unaligned.base.rgb24.ref.png diff --git a/cairo/test/reference/image-bug-710072-unaligned.ref.png b/3rd-party/cairo/test/reference/image-bug-710072-unaligned.ref.png similarity index 100% rename from cairo/test/reference/image-bug-710072-unaligned.ref.png rename to 3rd-party/cairo/test/reference/image-bug-710072-unaligned.ref.png diff --git a/cairo/test/reference/image-bug-710072-unaligned.traps.argb32.ref.png b/3rd-party/cairo/test/reference/image-bug-710072-unaligned.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/image-bug-710072-unaligned.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/image-bug-710072-unaligned.traps.argb32.ref.png diff --git a/cairo/test/reference/image-bug-710072-unaligned.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/image-bug-710072-unaligned.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/image-bug-710072-unaligned.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/image-bug-710072-unaligned.traps.rgb24.ref.png diff --git a/cairo/test/reference/image-bug-710072-unaligned.xlib-fallback.rgb24.ref.png b/3rd-party/cairo/test/reference/image-bug-710072-unaligned.xlib-fallback.rgb24.ref.png similarity index 100% rename from cairo/test/reference/image-bug-710072-unaligned.xlib-fallback.rgb24.ref.png rename to 3rd-party/cairo/test/reference/image-bug-710072-unaligned.xlib-fallback.rgb24.ref.png diff --git a/cairo/test/reference/image-bug-710072-unaligned.xlib-window.rgb24.ref.png b/3rd-party/cairo/test/reference/image-bug-710072-unaligned.xlib-window.rgb24.ref.png similarity index 100% rename from cairo/test/reference/image-bug-710072-unaligned.xlib-window.rgb24.ref.png rename to 3rd-party/cairo/test/reference/image-bug-710072-unaligned.xlib-window.rgb24.ref.png diff --git a/cairo/test/reference/image-surface-source.argb32.ref.png b/3rd-party/cairo/test/reference/image-surface-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/image-surface-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/image-surface-source.argb32.ref.png diff --git a/cairo/test/reference/image-surface-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/image-surface-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/image-surface-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/image-surface-source.base.argb32.ref.png diff --git a/cairo/test/reference/image-surface-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/image-surface-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/image-surface-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/image-surface-source.base.rgb24.ref.png diff --git a/cairo/test/reference/image-surface-source.image16.ref.png b/3rd-party/cairo/test/reference/image-surface-source.image16.ref.png similarity index 100% rename from cairo/test/reference/image-surface-source.image16.ref.png rename to 3rd-party/cairo/test/reference/image-surface-source.image16.ref.png diff --git a/cairo/test/reference/image-surface-source.ps2.ref.png b/3rd-party/cairo/test/reference/image-surface-source.ps2.ref.png similarity index 100% rename from cairo/test/reference/image-surface-source.ps2.ref.png rename to 3rd-party/cairo/test/reference/image-surface-source.ps2.ref.png diff --git a/cairo/test/reference/image-surface-source.ps3.ref.png b/3rd-party/cairo/test/reference/image-surface-source.ps3.ref.png similarity index 100% rename from cairo/test/reference/image-surface-source.ps3.ref.png rename to 3rd-party/cairo/test/reference/image-surface-source.ps3.ref.png diff --git a/cairo/test/reference/image-surface-source.rgb24.ref.png b/3rd-party/cairo/test/reference/image-surface-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/image-surface-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/image-surface-source.rgb24.ref.png diff --git a/cairo/test/reference/image-surface-source.svg12.argb32.xfail.png b/3rd-party/cairo/test/reference/image-surface-source.svg12.argb32.xfail.png similarity index 100% rename from cairo/test/reference/image-surface-source.svg12.argb32.xfail.png rename to 3rd-party/cairo/test/reference/image-surface-source.svg12.argb32.xfail.png diff --git a/cairo/test/reference/image-surface-source.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/image-surface-source.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/image-surface-source.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/image-surface-source.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/implicit-close.base.argb32.ref.png b/3rd-party/cairo/test/reference/implicit-close.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/implicit-close.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/implicit-close.base.argb32.ref.png diff --git a/cairo/test/reference/implicit-close.base.rgb24.ref.png b/3rd-party/cairo/test/reference/implicit-close.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/implicit-close.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/implicit-close.base.rgb24.ref.png diff --git a/cairo/test/reference/implicit-close.ps.ref.png b/3rd-party/cairo/test/reference/implicit-close.ps.ref.png similarity index 100% rename from cairo/test/reference/implicit-close.ps.ref.png rename to 3rd-party/cairo/test/reference/implicit-close.ps.ref.png diff --git a/cairo/test/reference/implicit-close.ref.png b/3rd-party/cairo/test/reference/implicit-close.ref.png similarity index 100% rename from cairo/test/reference/implicit-close.ref.png rename to 3rd-party/cairo/test/reference/implicit-close.ref.png diff --git a/cairo/test/reference/implicit-close.traps.argb32.ref.png b/3rd-party/cairo/test/reference/implicit-close.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/implicit-close.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/implicit-close.traps.argb32.ref.png diff --git a/cairo/test/reference/implicit-close.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/implicit-close.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/implicit-close.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/implicit-close.traps.rgb24.ref.png diff --git a/cairo/test/reference/infinite-join.argb32.ref.png b/3rd-party/cairo/test/reference/infinite-join.argb32.ref.png similarity index 100% rename from cairo/test/reference/infinite-join.argb32.ref.png rename to 3rd-party/cairo/test/reference/infinite-join.argb32.ref.png diff --git a/cairo/test/reference/infinite-join.base.argb32.ref.png b/3rd-party/cairo/test/reference/infinite-join.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/infinite-join.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/infinite-join.base.argb32.ref.png diff --git a/cairo/test/reference/infinite-join.base.rgb24.ref.png b/3rd-party/cairo/test/reference/infinite-join.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/infinite-join.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/infinite-join.base.rgb24.ref.png diff --git a/cairo/test/reference/infinite-join.ps2.ref.png b/3rd-party/cairo/test/reference/infinite-join.ps2.ref.png similarity index 100% rename from cairo/test/reference/infinite-join.ps2.ref.png rename to 3rd-party/cairo/test/reference/infinite-join.ps2.ref.png diff --git a/cairo/test/reference/infinite-join.ps3.ref.png b/3rd-party/cairo/test/reference/infinite-join.ps3.ref.png similarity index 100% rename from cairo/test/reference/infinite-join.ps3.ref.png rename to 3rd-party/cairo/test/reference/infinite-join.ps3.ref.png diff --git a/cairo/test/reference/infinite-join.rgb24.ref.png b/3rd-party/cairo/test/reference/infinite-join.rgb24.ref.png similarity index 100% rename from cairo/test/reference/infinite-join.rgb24.ref.png rename to 3rd-party/cairo/test/reference/infinite-join.rgb24.ref.png diff --git a/cairo/test/reference/infinite-join.traps.argb32.ref.png b/3rd-party/cairo/test/reference/infinite-join.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/infinite-join.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/infinite-join.traps.argb32.ref.png diff --git a/cairo/test/reference/infinite-join.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/infinite-join.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/infinite-join.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/infinite-join.traps.rgb24.ref.png diff --git a/cairo/test/reference/inverse-text.base.argb32.ref.png b/3rd-party/cairo/test/reference/inverse-text.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/inverse-text.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/inverse-text.base.argb32.ref.png diff --git a/cairo/test/reference/inverse-text.base.rgb24.ref.png b/3rd-party/cairo/test/reference/inverse-text.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/inverse-text.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/inverse-text.base.rgb24.ref.png diff --git a/cairo/test/reference/inverse-text.mask.argb32.ref.png b/3rd-party/cairo/test/reference/inverse-text.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/inverse-text.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/inverse-text.mask.argb32.ref.png diff --git a/cairo/test/reference/inverse-text.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/inverse-text.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/inverse-text.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/inverse-text.mask.rgb24.ref.png diff --git a/cairo/test/reference/inverse-text.traps.ref.png b/3rd-party/cairo/test/reference/inverse-text.traps.ref.png similarity index 100% rename from cairo/test/reference/inverse-text.traps.ref.png rename to 3rd-party/cairo/test/reference/inverse-text.traps.ref.png diff --git a/cairo/test/reference/inverted-clip.base.xfail.png b/3rd-party/cairo/test/reference/inverted-clip.base.xfail.png similarity index 100% rename from cairo/test/reference/inverted-clip.base.xfail.png rename to 3rd-party/cairo/test/reference/inverted-clip.base.xfail.png diff --git a/cairo/test/reference/inverted-clip.traps.xfail.png b/3rd-party/cairo/test/reference/inverted-clip.traps.xfail.png similarity index 100% rename from cairo/test/reference/inverted-clip.traps.xfail.png rename to 3rd-party/cairo/test/reference/inverted-clip.traps.xfail.png diff --git a/cairo/test/reference/inverted-clip.xfail.png b/3rd-party/cairo/test/reference/inverted-clip.xfail.png similarity index 100% rename from cairo/test/reference/inverted-clip.xfail.png rename to 3rd-party/cairo/test/reference/inverted-clip.xfail.png diff --git a/cairo/test/reference/joins-loop.argb32.ref.png b/3rd-party/cairo/test/reference/joins-loop.argb32.ref.png similarity index 100% rename from cairo/test/reference/joins-loop.argb32.ref.png rename to 3rd-party/cairo/test/reference/joins-loop.argb32.ref.png diff --git a/cairo/test/reference/joins-loop.base.argb32.ref.png b/3rd-party/cairo/test/reference/joins-loop.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/joins-loop.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/joins-loop.base.argb32.ref.png diff --git a/cairo/test/reference/joins-loop.base.rgb24.ref.png b/3rd-party/cairo/test/reference/joins-loop.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/joins-loop.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/joins-loop.base.rgb24.ref.png diff --git a/cairo/test/reference/joins-loop.rgb24.ref.png b/3rd-party/cairo/test/reference/joins-loop.rgb24.ref.png similarity index 100% rename from cairo/test/reference/joins-loop.rgb24.ref.png rename to 3rd-party/cairo/test/reference/joins-loop.rgb24.ref.png diff --git a/cairo/test/reference/joins-loop.traps.argb32.ref.png b/3rd-party/cairo/test/reference/joins-loop.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/joins-loop.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/joins-loop.traps.argb32.ref.png diff --git a/cairo/test/reference/joins-loop.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/joins-loop.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/joins-loop.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/joins-loop.traps.rgb24.ref.png diff --git a/cairo/test/reference/joins-retrace.base.argb32.ref.png b/3rd-party/cairo/test/reference/joins-retrace.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/joins-retrace.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/joins-retrace.base.argb32.ref.png diff --git a/cairo/test/reference/joins-retrace.base.rgb24.ref.png b/3rd-party/cairo/test/reference/joins-retrace.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/joins-retrace.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/joins-retrace.base.rgb24.ref.png diff --git a/cairo/test/reference/joins-retrace.mask.argb32.ref.png b/3rd-party/cairo/test/reference/joins-retrace.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/joins-retrace.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/joins-retrace.mask.argb32.ref.png diff --git a/cairo/test/reference/joins-retrace.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/joins-retrace.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/joins-retrace.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/joins-retrace.mask.rgb24.ref.png diff --git a/cairo/test/reference/joins-retrace.ref.png b/3rd-party/cairo/test/reference/joins-retrace.ref.png similarity index 100% rename from cairo/test/reference/joins-retrace.ref.png rename to 3rd-party/cairo/test/reference/joins-retrace.ref.png diff --git a/cairo/test/reference/joins-retrace.traps.argb32.ref.png b/3rd-party/cairo/test/reference/joins-retrace.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/joins-retrace.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/joins-retrace.traps.argb32.ref.png diff --git a/cairo/test/reference/joins-retrace.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/joins-retrace.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/joins-retrace.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/joins-retrace.traps.rgb24.ref.png diff --git a/cairo/test/reference/joins-star.argb32.ref.png b/3rd-party/cairo/test/reference/joins-star.argb32.ref.png similarity index 100% rename from cairo/test/reference/joins-star.argb32.ref.png rename to 3rd-party/cairo/test/reference/joins-star.argb32.ref.png diff --git a/cairo/test/reference/joins-star.base.argb32.ref.png b/3rd-party/cairo/test/reference/joins-star.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/joins-star.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/joins-star.base.argb32.ref.png diff --git a/cairo/test/reference/joins-star.base.rgb24.ref.png b/3rd-party/cairo/test/reference/joins-star.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/joins-star.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/joins-star.base.rgb24.ref.png diff --git a/cairo/test/reference/joins-star.rgb24.ref.png b/3rd-party/cairo/test/reference/joins-star.rgb24.ref.png similarity index 100% rename from cairo/test/reference/joins-star.rgb24.ref.png rename to 3rd-party/cairo/test/reference/joins-star.rgb24.ref.png diff --git a/cairo/test/reference/joins-star.traps.argb32.ref.png b/3rd-party/cairo/test/reference/joins-star.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/joins-star.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/joins-star.traps.argb32.ref.png diff --git a/cairo/test/reference/joins-star.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/joins-star.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/joins-star.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/joins-star.traps.rgb24.ref.png diff --git a/cairo/test/reference/joins.base.argb32.ref.png b/3rd-party/cairo/test/reference/joins.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/joins.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/joins.base.argb32.ref.png diff --git a/cairo/test/reference/joins.base.rgb24.ref.png b/3rd-party/cairo/test/reference/joins.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/joins.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/joins.base.rgb24.ref.png diff --git a/cairo/test/reference/joins.image16.ref.png b/3rd-party/cairo/test/reference/joins.image16.ref.png similarity index 100% rename from cairo/test/reference/joins.image16.ref.png rename to 3rd-party/cairo/test/reference/joins.image16.ref.png diff --git a/cairo/test/reference/joins.mask.argb32.ref.png b/3rd-party/cairo/test/reference/joins.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/joins.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/joins.mask.argb32.ref.png diff --git a/cairo/test/reference/joins.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/joins.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/joins.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/joins.mask.rgb24.ref.png diff --git a/cairo/test/reference/joins.ps.ref.png b/3rd-party/cairo/test/reference/joins.ps.ref.png similarity index 100% rename from cairo/test/reference/joins.ps.ref.png rename to 3rd-party/cairo/test/reference/joins.ps.ref.png diff --git a/cairo/test/reference/joins.quartz.ref.png b/3rd-party/cairo/test/reference/joins.quartz.ref.png similarity index 100% rename from cairo/test/reference/joins.quartz.ref.png rename to 3rd-party/cairo/test/reference/joins.quartz.ref.png diff --git a/cairo/test/reference/joins.ref.png b/3rd-party/cairo/test/reference/joins.ref.png similarity index 100% rename from cairo/test/reference/joins.ref.png rename to 3rd-party/cairo/test/reference/joins.ref.png diff --git a/cairo/test/reference/joins.traps.argb32.ref.png b/3rd-party/cairo/test/reference/joins.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/joins.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/joins.traps.argb32.ref.png diff --git a/cairo/test/reference/joins.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/joins.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/joins.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/joins.traps.rgb24.ref.png diff --git a/cairo/test/reference/large-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/large-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/large-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/large-clip.base.argb32.ref.png diff --git a/cairo/test/reference/large-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/large-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/large-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/large-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/large-clip.ref.png b/3rd-party/cairo/test/reference/large-clip.ref.png similarity index 100% rename from cairo/test/reference/large-clip.ref.png rename to 3rd-party/cairo/test/reference/large-clip.ref.png diff --git a/cairo/test/reference/large-font.base.argb32.ref.png b/3rd-party/cairo/test/reference/large-font.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/large-font.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/large-font.base.argb32.ref.png diff --git a/cairo/test/reference/large-font.base.rgb24.ref.png b/3rd-party/cairo/test/reference/large-font.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/large-font.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/large-font.base.rgb24.ref.png diff --git a/cairo/test/reference/large-font.image16.ref.png b/3rd-party/cairo/test/reference/large-font.image16.ref.png similarity index 100% rename from cairo/test/reference/large-font.image16.ref.png rename to 3rd-party/cairo/test/reference/large-font.image16.ref.png diff --git a/cairo/test/reference/large-font.ref.png b/3rd-party/cairo/test/reference/large-font.ref.png similarity index 100% rename from cairo/test/reference/large-font.ref.png rename to 3rd-party/cairo/test/reference/large-font.ref.png diff --git a/cairo/test/reference/large-source-roi.base.argb32.ref.png b/3rd-party/cairo/test/reference/large-source-roi.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/large-source-roi.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/large-source-roi.base.argb32.ref.png diff --git a/cairo/test/reference/large-source-roi.base.rgb24.ref.png b/3rd-party/cairo/test/reference/large-source-roi.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/large-source-roi.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/large-source-roi.base.rgb24.ref.png diff --git a/cairo/test/reference/large-source-roi.ref.png b/3rd-party/cairo/test/reference/large-source-roi.ref.png similarity index 100% rename from cairo/test/reference/large-source-roi.ref.png rename to 3rd-party/cairo/test/reference/large-source-roi.ref.png diff --git a/cairo/test/reference/large-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/large-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/large-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/large-source.base.argb32.ref.png diff --git a/cairo/test/reference/large-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/large-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/large-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/large-source.base.rgb24.ref.png diff --git a/cairo/test/reference/large-source.ref.png b/3rd-party/cairo/test/reference/large-source.ref.png similarity index 100% rename from cairo/test/reference/large-source.ref.png rename to 3rd-party/cairo/test/reference/large-source.ref.png diff --git a/cairo/test/reference/large-twin-antialias-mixed.argb32.ref.png b/3rd-party/cairo/test/reference/large-twin-antialias-mixed.argb32.ref.png similarity index 100% rename from cairo/test/reference/large-twin-antialias-mixed.argb32.ref.png rename to 3rd-party/cairo/test/reference/large-twin-antialias-mixed.argb32.ref.png diff --git a/cairo/test/reference/large-twin-antialias-mixed.base.argb32.ref.png b/3rd-party/cairo/test/reference/large-twin-antialias-mixed.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/large-twin-antialias-mixed.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/large-twin-antialias-mixed.base.argb32.ref.png diff --git a/cairo/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png b/3rd-party/cairo/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png diff --git a/cairo/test/reference/large-twin-antialias-mixed.image16.ref.png b/3rd-party/cairo/test/reference/large-twin-antialias-mixed.image16.ref.png similarity index 100% rename from cairo/test/reference/large-twin-antialias-mixed.image16.ref.png rename to 3rd-party/cairo/test/reference/large-twin-antialias-mixed.image16.ref.png diff --git a/cairo/test/reference/large-twin-antialias-mixed.rgb24.ref.png b/3rd-party/cairo/test/reference/large-twin-antialias-mixed.rgb24.ref.png similarity index 100% rename from cairo/test/reference/large-twin-antialias-mixed.rgb24.ref.png rename to 3rd-party/cairo/test/reference/large-twin-antialias-mixed.rgb24.ref.png diff --git a/cairo/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png b/3rd-party/cairo/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png diff --git a/cairo/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png diff --git a/cairo/test/reference/leaky-dash.base.argb32.ref.png b/3rd-party/cairo/test/reference/leaky-dash.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/leaky-dash.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/leaky-dash.base.argb32.ref.png diff --git a/cairo/test/reference/leaky-dash.base.rgb24.ref.png b/3rd-party/cairo/test/reference/leaky-dash.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/leaky-dash.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/leaky-dash.base.rgb24.ref.png diff --git a/cairo/test/reference/leaky-dash.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/leaky-dash.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/leaky-dash.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/leaky-dash.ps2.argb32.ref.png diff --git a/cairo/test/reference/leaky-dash.ps2.rgb24.ref.png b/3rd-party/cairo/test/reference/leaky-dash.ps2.rgb24.ref.png similarity index 100% rename from cairo/test/reference/leaky-dash.ps2.rgb24.ref.png rename to 3rd-party/cairo/test/reference/leaky-dash.ps2.rgb24.ref.png diff --git a/cairo/test/reference/leaky-dash.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/leaky-dash.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/leaky-dash.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/leaky-dash.ps3.argb32.ref.png diff --git a/cairo/test/reference/leaky-dash.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/leaky-dash.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/leaky-dash.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/leaky-dash.ps3.rgb24.ref.png diff --git a/cairo/test/reference/leaky-dash.quartz.ref.png b/3rd-party/cairo/test/reference/leaky-dash.quartz.ref.png similarity index 100% rename from cairo/test/reference/leaky-dash.quartz.ref.png rename to 3rd-party/cairo/test/reference/leaky-dash.quartz.ref.png diff --git a/cairo/test/reference/leaky-dash.ref.png b/3rd-party/cairo/test/reference/leaky-dash.ref.png similarity index 100% rename from cairo/test/reference/leaky-dash.ref.png rename to 3rd-party/cairo/test/reference/leaky-dash.ref.png diff --git a/cairo/test/reference/leaky-dashed-rectangle.base.argb32.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-rectangle.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-rectangle.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-rectangle.base.argb32.ref.png diff --git a/cairo/test/reference/leaky-dashed-rectangle.base.rgb24.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-rectangle.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-rectangle.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-rectangle.base.rgb24.ref.png diff --git a/cairo/test/reference/leaky-dashed-rectangle.image16.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-rectangle.image16.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-rectangle.image16.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-rectangle.image16.ref.png diff --git a/cairo/test/reference/leaky-dashed-rectangle.pdf.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-rectangle.pdf.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-rectangle.pdf.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-rectangle.pdf.ref.png diff --git a/cairo/test/reference/leaky-dashed-rectangle.ps.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-rectangle.ps.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-rectangle.ps.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-rectangle.ps.ref.png diff --git a/cairo/test/reference/leaky-dashed-rectangle.quartz.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-rectangle.quartz.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-rectangle.quartz.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-rectangle.quartz.ref.png diff --git a/cairo/test/reference/leaky-dashed-rectangle.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-rectangle.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-rectangle.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-rectangle.ref.png diff --git a/cairo/test/reference/leaky-dashed-rectangle.traps.argb32.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-rectangle.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-rectangle.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-rectangle.traps.argb32.ref.png diff --git a/cairo/test/reference/leaky-dashed-rectangle.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-rectangle.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-rectangle.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-rectangle.traps.rgb24.ref.png diff --git a/cairo/test/reference/leaky-dashed-stroke.argb32.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-stroke.argb32.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-stroke.argb32.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-stroke.argb32.ref.png diff --git a/cairo/test/reference/leaky-dashed-stroke.base.argb32.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-stroke.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-stroke.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-stroke.base.argb32.ref.png diff --git a/cairo/test/reference/leaky-dashed-stroke.base.rgb24.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-stroke.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-stroke.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-stroke.base.rgb24.ref.png diff --git a/cairo/test/reference/leaky-dashed-stroke.image16.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-stroke.image16.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-stroke.image16.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-stroke.image16.ref.png diff --git a/cairo/test/reference/leaky-dashed-stroke.ps.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-stroke.ps.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-stroke.ps.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-stroke.ps.ref.png diff --git a/cairo/test/reference/leaky-dashed-stroke.quartz.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-stroke.quartz.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-stroke.quartz.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-stroke.quartz.ref.png diff --git a/cairo/test/reference/leaky-dashed-stroke.rgb24.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-stroke.rgb24.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-stroke.rgb24.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-stroke.rgb24.ref.png diff --git a/cairo/test/reference/leaky-dashed-stroke.traps.argb32.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-stroke.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-stroke.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-stroke.traps.argb32.ref.png diff --git a/cairo/test/reference/leaky-dashed-stroke.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/leaky-dashed-stroke.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/leaky-dashed-stroke.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/leaky-dashed-stroke.traps.rgb24.ref.png diff --git a/cairo/test/reference/leaky-polygon.argb32.ref.png b/3rd-party/cairo/test/reference/leaky-polygon.argb32.ref.png similarity index 100% rename from cairo/test/reference/leaky-polygon.argb32.ref.png rename to 3rd-party/cairo/test/reference/leaky-polygon.argb32.ref.png diff --git a/cairo/test/reference/leaky-polygon.base.argb32.ref.png b/3rd-party/cairo/test/reference/leaky-polygon.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/leaky-polygon.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/leaky-polygon.base.argb32.ref.png diff --git a/cairo/test/reference/leaky-polygon.base.rgb24.ref.png b/3rd-party/cairo/test/reference/leaky-polygon.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/leaky-polygon.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/leaky-polygon.base.rgb24.ref.png diff --git a/cairo/test/reference/leaky-polygon.image16.ref.png b/3rd-party/cairo/test/reference/leaky-polygon.image16.ref.png similarity index 100% rename from cairo/test/reference/leaky-polygon.image16.ref.png rename to 3rd-party/cairo/test/reference/leaky-polygon.image16.ref.png diff --git a/cairo/test/reference/leaky-polygon.ps.ref.png b/3rd-party/cairo/test/reference/leaky-polygon.ps.ref.png similarity index 100% rename from cairo/test/reference/leaky-polygon.ps.ref.png rename to 3rd-party/cairo/test/reference/leaky-polygon.ps.ref.png diff --git a/cairo/test/reference/leaky-polygon.rgb24.ref.png b/3rd-party/cairo/test/reference/leaky-polygon.rgb24.ref.png similarity index 100% rename from cairo/test/reference/leaky-polygon.rgb24.ref.png rename to 3rd-party/cairo/test/reference/leaky-polygon.rgb24.ref.png diff --git a/cairo/test/reference/leaky-polygon.traps.argb32.ref.png b/3rd-party/cairo/test/reference/leaky-polygon.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/leaky-polygon.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/leaky-polygon.traps.argb32.ref.png diff --git a/cairo/test/reference/leaky-polygon.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/leaky-polygon.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/leaky-polygon.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/leaky-polygon.traps.rgb24.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-dashed.base.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-dashed.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-dashed.base.argb32.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-dashed.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-dashed.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-dashed.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-flipped.base.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-flipped.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-flipped.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-flipped.base.argb32.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-flipped.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-flipped.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-flipped.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-flipped.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-flopped.base.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-flopped.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-flopped.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-flopped.base.argb32.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-flopped.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-flopped.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-flopped.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-flopped.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-offset.base.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-offset.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-offset.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-offset.base.argb32.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-offset.base.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-offset.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-offset.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-offset.base.rgb24.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-offset.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-offset.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-offset.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-offset.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-rotated.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-rotated.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-rotated.argb32.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-rotated.base.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-rotated.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-rotated.base.argb32.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-rotated.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-rotated.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-rotated.rgb24.ref.png diff --git a/cairo/test/reference/line-width-large-overlap-rotated.traps.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.traps.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap-rotated.traps.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap-rotated.traps.ref.png diff --git a/cairo/test/reference/line-width-large-overlap.base.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap.base.argb32.ref.png diff --git a/cairo/test/reference/line-width-large-overlap.base.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap.base.rgb24.ref.png diff --git a/cairo/test/reference/line-width-large-overlap.ref.png b/3rd-party/cairo/test/reference/line-width-large-overlap.ref.png similarity index 100% rename from cairo/test/reference/line-width-large-overlap.ref.png rename to 3rd-party/cairo/test/reference/line-width-large-overlap.ref.png diff --git a/cairo/test/reference/line-width-overlap-dashed.base.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-dashed.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-dashed.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-dashed.base.argb32.ref.png diff --git a/cairo/test/reference/line-width-overlap-dashed.base.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-dashed.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-dashed.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-dashed.base.rgb24.ref.png diff --git a/cairo/test/reference/line-width-overlap-dashed.mask.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-dashed.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-dashed.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-dashed.mask.argb32.ref.png diff --git a/cairo/test/reference/line-width-overlap-dashed.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-dashed.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-dashed.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-dashed.mask.rgb24.ref.png diff --git a/cairo/test/reference/line-width-overlap-dashed.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-dashed.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-dashed.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-dashed.ref.png diff --git a/cairo/test/reference/line-width-overlap-dashed.traps.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-dashed.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-dashed.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-dashed.traps.argb32.ref.png diff --git a/cairo/test/reference/line-width-overlap-dashed.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-dashed.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-dashed.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-dashed.traps.rgb24.ref.png diff --git a/cairo/test/reference/line-width-overlap-flipped.base.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-flipped.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-flipped.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-flipped.base.argb32.ref.png diff --git a/cairo/test/reference/line-width-overlap-flipped.base.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-flipped.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-flipped.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-flipped.base.rgb24.ref.png diff --git a/cairo/test/reference/line-width-overlap-flipped.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-flipped.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-flipped.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-flipped.ref.png diff --git a/cairo/test/reference/line-width-overlap-flopped.base.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-flopped.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-flopped.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-flopped.base.argb32.ref.png diff --git a/cairo/test/reference/line-width-overlap-flopped.base.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-flopped.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-flopped.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-flopped.base.rgb24.ref.png diff --git a/cairo/test/reference/line-width-overlap-flopped.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-flopped.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-flopped.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-flopped.ref.png diff --git a/cairo/test/reference/line-width-overlap-offset.base.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-offset.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-offset.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-offset.base.argb32.ref.png diff --git a/cairo/test/reference/line-width-overlap-offset.base.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-offset.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-offset.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-offset.base.rgb24.ref.png diff --git a/cairo/test/reference/line-width-overlap-offset.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-offset.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-offset.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-offset.ref.png diff --git a/cairo/test/reference/line-width-overlap-offset.traps.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-offset.traps.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-offset.traps.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-offset.traps.ref.png diff --git a/cairo/test/reference/line-width-overlap-rotated.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-rotated.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-rotated.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-rotated.argb32.ref.png diff --git a/cairo/test/reference/line-width-overlap-rotated.base.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-rotated.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-rotated.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-rotated.base.argb32.ref.png diff --git a/cairo/test/reference/line-width-overlap-rotated.base.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-rotated.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-rotated.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-rotated.base.rgb24.ref.png diff --git a/cairo/test/reference/line-width-overlap-rotated.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-rotated.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-rotated.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-rotated.rgb24.ref.png diff --git a/cairo/test/reference/line-width-overlap-rotated.traps.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-rotated.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-rotated.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-rotated.traps.argb32.ref.png diff --git a/cairo/test/reference/line-width-overlap-rotated.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-overlap-rotated.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap-rotated.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap-rotated.traps.rgb24.ref.png diff --git a/cairo/test/reference/line-width-overlap.base.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-overlap.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap.base.argb32.ref.png diff --git a/cairo/test/reference/line-width-overlap.base.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-overlap.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap.base.rgb24.ref.png diff --git a/cairo/test/reference/line-width-overlap.ref.png b/3rd-party/cairo/test/reference/line-width-overlap.ref.png similarity index 100% rename from cairo/test/reference/line-width-overlap.ref.png rename to 3rd-party/cairo/test/reference/line-width-overlap.ref.png diff --git a/cairo/test/reference/line-width-scale.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-scale.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-scale.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-scale.argb32.ref.png diff --git a/cairo/test/reference/line-width-scale.base.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-scale.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-scale.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-scale.base.argb32.ref.png diff --git a/cairo/test/reference/line-width-scale.base.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-scale.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-scale.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-scale.base.rgb24.ref.png diff --git a/cairo/test/reference/line-width-scale.image16.ref.png b/3rd-party/cairo/test/reference/line-width-scale.image16.ref.png similarity index 100% rename from cairo/test/reference/line-width-scale.image16.ref.png rename to 3rd-party/cairo/test/reference/line-width-scale.image16.ref.png diff --git a/cairo/test/reference/line-width-scale.ps2.ref.png b/3rd-party/cairo/test/reference/line-width-scale.ps2.ref.png similarity index 100% rename from cairo/test/reference/line-width-scale.ps2.ref.png rename to 3rd-party/cairo/test/reference/line-width-scale.ps2.ref.png diff --git a/cairo/test/reference/line-width-scale.ps3.ref.png b/3rd-party/cairo/test/reference/line-width-scale.ps3.ref.png similarity index 100% rename from cairo/test/reference/line-width-scale.ps3.ref.png rename to 3rd-party/cairo/test/reference/line-width-scale.ps3.ref.png diff --git a/cairo/test/reference/line-width-scale.quartz.ref.png b/3rd-party/cairo/test/reference/line-width-scale.quartz.ref.png similarity index 100% rename from cairo/test/reference/line-width-scale.quartz.ref.png rename to 3rd-party/cairo/test/reference/line-width-scale.quartz.ref.png diff --git a/cairo/test/reference/line-width-scale.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-scale.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-scale.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-scale.rgb24.ref.png diff --git a/cairo/test/reference/line-width-scale.traps.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-scale.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-scale.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-scale.traps.argb32.ref.png diff --git a/cairo/test/reference/line-width-scale.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-scale.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-scale.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-scale.traps.rgb24.ref.png diff --git a/cairo/test/reference/line-width-tolerance.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-tolerance.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-tolerance.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-tolerance.argb32.ref.png diff --git a/cairo/test/reference/line-width-tolerance.base.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-tolerance.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-tolerance.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-tolerance.base.argb32.ref.png diff --git a/cairo/test/reference/line-width-tolerance.base.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-tolerance.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-tolerance.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-tolerance.base.rgb24.ref.png diff --git a/cairo/test/reference/line-width-tolerance.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-tolerance.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-tolerance.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-tolerance.rgb24.ref.png diff --git a/cairo/test/reference/line-width-tolerance.traps.argb32.ref.png b/3rd-party/cairo/test/reference/line-width-tolerance.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width-tolerance.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width-tolerance.traps.argb32.ref.png diff --git a/cairo/test/reference/line-width-tolerance.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width-tolerance.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width-tolerance.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width-tolerance.traps.rgb24.ref.png diff --git a/cairo/test/reference/line-width.argb32.ref.png b/3rd-party/cairo/test/reference/line-width.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width.argb32.ref.png diff --git a/cairo/test/reference/line-width.base.argb32.ref.png b/3rd-party/cairo/test/reference/line-width.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width.base.argb32.ref.png diff --git a/cairo/test/reference/line-width.base.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width.base.rgb24.ref.png diff --git a/cairo/test/reference/line-width.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width.rgb24.ref.png diff --git a/cairo/test/reference/line-width.traps.argb32.ref.png b/3rd-party/cairo/test/reference/line-width.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/line-width.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/line-width.traps.argb32.ref.png diff --git a/cairo/test/reference/line-width.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/line-width.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/line-width.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/line-width.traps.rgb24.ref.png diff --git a/cairo/test/reference/linear-gradient-extend.base.argb32.ref.png b/3rd-party/cairo/test/reference/linear-gradient-extend.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-extend.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-extend.base.argb32.ref.png diff --git a/cairo/test/reference/linear-gradient-extend.base.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-gradient-extend.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-extend.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-extend.base.rgb24.ref.png diff --git a/cairo/test/reference/linear-gradient-extend.ref.png b/3rd-party/cairo/test/reference/linear-gradient-extend.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-extend.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-extend.ref.png diff --git a/cairo/test/reference/linear-gradient-large.base.argb32.ref.png b/3rd-party/cairo/test/reference/linear-gradient-large.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-large.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-large.base.argb32.ref.png diff --git a/cairo/test/reference/linear-gradient-large.base.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-gradient-large.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-large.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-large.base.rgb24.ref.png diff --git a/cairo/test/reference/linear-gradient-large.quartz.ref.png b/3rd-party/cairo/test/reference/linear-gradient-large.quartz.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-large.quartz.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-large.quartz.ref.png diff --git a/cairo/test/reference/linear-gradient-large.ref.png b/3rd-party/cairo/test/reference/linear-gradient-large.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-large.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-large.ref.png diff --git a/cairo/test/reference/linear-gradient-one-stop.argb32.ref.png b/3rd-party/cairo/test/reference/linear-gradient-one-stop.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-one-stop.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-one-stop.argb32.ref.png diff --git a/cairo/test/reference/linear-gradient-one-stop.base.argb32.ref.png b/3rd-party/cairo/test/reference/linear-gradient-one-stop.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-one-stop.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-one-stop.base.argb32.ref.png diff --git a/cairo/test/reference/linear-gradient-one-stop.base.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-gradient-one-stop.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-one-stop.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-one-stop.base.rgb24.ref.png diff --git a/cairo/test/reference/linear-gradient-one-stop.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-gradient-one-stop.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-one-stop.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-one-stop.rgb24.ref.png diff --git a/cairo/test/reference/linear-gradient-reflect.argb32.ref.png b/3rd-party/cairo/test/reference/linear-gradient-reflect.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-reflect.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-reflect.argb32.ref.png diff --git a/cairo/test/reference/linear-gradient-reflect.base.argb32.ref.png b/3rd-party/cairo/test/reference/linear-gradient-reflect.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-reflect.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-reflect.base.argb32.ref.png diff --git a/cairo/test/reference/linear-gradient-reflect.base.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-gradient-reflect.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-reflect.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-reflect.base.rgb24.ref.png diff --git a/cairo/test/reference/linear-gradient-reflect.image16.ref.png b/3rd-party/cairo/test/reference/linear-gradient-reflect.image16.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-reflect.image16.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-reflect.image16.ref.png diff --git a/cairo/test/reference/linear-gradient-reflect.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/linear-gradient-reflect.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-reflect.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-reflect.pdf.argb32.ref.png diff --git a/cairo/test/reference/linear-gradient-reflect.pdf.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-gradient-reflect.pdf.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-reflect.pdf.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-reflect.pdf.rgb24.ref.png diff --git a/cairo/test/reference/linear-gradient-reflect.ps3.ref.png b/3rd-party/cairo/test/reference/linear-gradient-reflect.ps3.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-reflect.ps3.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-reflect.ps3.ref.png diff --git a/cairo/test/reference/linear-gradient-reflect.quartz.ref.png b/3rd-party/cairo/test/reference/linear-gradient-reflect.quartz.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-reflect.quartz.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-reflect.quartz.ref.png diff --git a/cairo/test/reference/linear-gradient-reflect.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-gradient-reflect.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-reflect.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-reflect.rgb24.ref.png diff --git a/cairo/test/reference/linear-gradient-subset.argb32.ref.png b/3rd-party/cairo/test/reference/linear-gradient-subset.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-subset.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-subset.argb32.ref.png diff --git a/cairo/test/reference/linear-gradient-subset.base.argb32.ref.png b/3rd-party/cairo/test/reference/linear-gradient-subset.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-subset.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-subset.base.argb32.ref.png diff --git a/cairo/test/reference/linear-gradient-subset.base.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-gradient-subset.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-subset.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-subset.base.rgb24.ref.png diff --git a/cairo/test/reference/linear-gradient-subset.image16.ref.png b/3rd-party/cairo/test/reference/linear-gradient-subset.image16.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-subset.image16.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-subset.image16.ref.png diff --git a/cairo/test/reference/linear-gradient-subset.ps3.ref.png b/3rd-party/cairo/test/reference/linear-gradient-subset.ps3.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-subset.ps3.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-subset.ps3.ref.png diff --git a/cairo/test/reference/linear-gradient-subset.quartz.ref.png b/3rd-party/cairo/test/reference/linear-gradient-subset.quartz.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-subset.quartz.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-subset.quartz.ref.png diff --git a/cairo/test/reference/linear-gradient-subset.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-gradient-subset.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-subset.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-subset.rgb24.ref.png diff --git a/cairo/test/reference/linear-gradient-subset.traps.argb32.ref.png b/3rd-party/cairo/test/reference/linear-gradient-subset.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-subset.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-subset.traps.argb32.ref.png diff --git a/cairo/test/reference/linear-gradient-subset.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-gradient-subset.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient-subset.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient-subset.traps.rgb24.ref.png diff --git a/cairo/test/reference/linear-gradient.argb32.ref.png b/3rd-party/cairo/test/reference/linear-gradient.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient.argb32.ref.png diff --git a/cairo/test/reference/linear-gradient.base.argb32.ref.png b/3rd-party/cairo/test/reference/linear-gradient.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient.base.argb32.ref.png diff --git a/cairo/test/reference/linear-gradient.base.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-gradient.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient.base.rgb24.ref.png diff --git a/cairo/test/reference/linear-gradient.image16.ref.png b/3rd-party/cairo/test/reference/linear-gradient.image16.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient.image16.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient.image16.ref.png diff --git a/cairo/test/reference/linear-gradient.ps3.ref.png b/3rd-party/cairo/test/reference/linear-gradient.ps3.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient.ps3.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient.ps3.ref.png diff --git a/cairo/test/reference/linear-gradient.quartz.ref.png b/3rd-party/cairo/test/reference/linear-gradient.quartz.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient.quartz.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient.quartz.ref.png diff --git a/cairo/test/reference/linear-gradient.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-gradient.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient.rgb24.ref.png diff --git a/cairo/test/reference/linear-gradient.traps.argb32.ref.png b/3rd-party/cairo/test/reference/linear-gradient.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient.traps.argb32.ref.png diff --git a/cairo/test/reference/linear-gradient.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-gradient.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-gradient.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-gradient.traps.rgb24.ref.png diff --git a/cairo/test/reference/linear-step-function.base.argb32.ref.png b/3rd-party/cairo/test/reference/linear-step-function.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-step-function.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-step-function.base.argb32.ref.png diff --git a/cairo/test/reference/linear-step-function.base.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-step-function.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-step-function.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-step-function.base.rgb24.ref.png diff --git a/cairo/test/reference/linear-step-function.mask.argb32.ref.png b/3rd-party/cairo/test/reference/linear-step-function.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-step-function.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-step-function.mask.argb32.ref.png diff --git a/cairo/test/reference/linear-step-function.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-step-function.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-step-function.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-step-function.mask.rgb24.ref.png diff --git a/cairo/test/reference/linear-step-function.traps.argb32.ref.png b/3rd-party/cairo/test/reference/linear-step-function.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-step-function.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-step-function.traps.argb32.ref.png diff --git a/cairo/test/reference/linear-step-function.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-step-function.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-step-function.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-step-function.traps.rgb24.ref.png diff --git a/cairo/test/reference/linear-step-function.xfail.png b/3rd-party/cairo/test/reference/linear-step-function.xfail.png similarity index 100% rename from cairo/test/reference/linear-step-function.xfail.png rename to 3rd-party/cairo/test/reference/linear-step-function.xfail.png diff --git a/cairo/test/reference/linear-uniform.base.argb32.ref.png b/3rd-party/cairo/test/reference/linear-uniform.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/linear-uniform.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/linear-uniform.base.argb32.ref.png diff --git a/cairo/test/reference/linear-uniform.base.rgb24.ref.png b/3rd-party/cairo/test/reference/linear-uniform.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/linear-uniform.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/linear-uniform.base.rgb24.ref.png diff --git a/cairo/test/reference/linear-uniform.image16.ref.png b/3rd-party/cairo/test/reference/linear-uniform.image16.ref.png similarity index 100% rename from cairo/test/reference/linear-uniform.image16.ref.png rename to 3rd-party/cairo/test/reference/linear-uniform.image16.ref.png diff --git a/cairo/test/reference/linear-uniform.ref.png b/3rd-party/cairo/test/reference/linear-uniform.ref.png similarity index 100% rename from cairo/test/reference/linear-uniform.ref.png rename to 3rd-party/cairo/test/reference/linear-uniform.ref.png diff --git a/cairo/test/reference/long-dashed-lines.argb32.ref.png b/3rd-party/cairo/test/reference/long-dashed-lines.argb32.ref.png similarity index 100% rename from cairo/test/reference/long-dashed-lines.argb32.ref.png rename to 3rd-party/cairo/test/reference/long-dashed-lines.argb32.ref.png diff --git a/cairo/test/reference/long-dashed-lines.base.argb32.ref.png b/3rd-party/cairo/test/reference/long-dashed-lines.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/long-dashed-lines.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/long-dashed-lines.base.argb32.ref.png diff --git a/cairo/test/reference/long-dashed-lines.base.rgb24.ref.png b/3rd-party/cairo/test/reference/long-dashed-lines.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/long-dashed-lines.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/long-dashed-lines.base.rgb24.ref.png diff --git a/cairo/test/reference/long-dashed-lines.image16.ref.png b/3rd-party/cairo/test/reference/long-dashed-lines.image16.ref.png similarity index 100% rename from cairo/test/reference/long-dashed-lines.image16.ref.png rename to 3rd-party/cairo/test/reference/long-dashed-lines.image16.ref.png diff --git a/cairo/test/reference/long-dashed-lines.ps2.ref.png b/3rd-party/cairo/test/reference/long-dashed-lines.ps2.ref.png similarity index 100% rename from cairo/test/reference/long-dashed-lines.ps2.ref.png rename to 3rd-party/cairo/test/reference/long-dashed-lines.ps2.ref.png diff --git a/cairo/test/reference/long-dashed-lines.ps3.ref.png b/3rd-party/cairo/test/reference/long-dashed-lines.ps3.ref.png similarity index 100% rename from cairo/test/reference/long-dashed-lines.ps3.ref.png rename to 3rd-party/cairo/test/reference/long-dashed-lines.ps3.ref.png diff --git a/cairo/test/reference/long-dashed-lines.quartz.ref.png b/3rd-party/cairo/test/reference/long-dashed-lines.quartz.ref.png similarity index 100% rename from cairo/test/reference/long-dashed-lines.quartz.ref.png rename to 3rd-party/cairo/test/reference/long-dashed-lines.quartz.ref.png diff --git a/cairo/test/reference/long-dashed-lines.rgb24.ref.png b/3rd-party/cairo/test/reference/long-dashed-lines.rgb24.ref.png similarity index 100% rename from cairo/test/reference/long-dashed-lines.rgb24.ref.png rename to 3rd-party/cairo/test/reference/long-dashed-lines.rgb24.ref.png diff --git a/cairo/test/reference/long-dashed-lines.traps.argb32.ref.png b/3rd-party/cairo/test/reference/long-dashed-lines.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/long-dashed-lines.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/long-dashed-lines.traps.argb32.ref.png diff --git a/cairo/test/reference/long-dashed-lines.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/long-dashed-lines.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/long-dashed-lines.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/long-dashed-lines.traps.rgb24.ref.png diff --git a/cairo/test/reference/long-lines.base.argb32.ref.png b/3rd-party/cairo/test/reference/long-lines.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/long-lines.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/long-lines.base.argb32.ref.png diff --git a/cairo/test/reference/long-lines.base.rgb24.ref.png b/3rd-party/cairo/test/reference/long-lines.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/long-lines.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/long-lines.base.rgb24.ref.png diff --git a/cairo/test/reference/long-lines.mask.argb32.ref.png b/3rd-party/cairo/test/reference/long-lines.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/long-lines.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/long-lines.mask.argb32.ref.png diff --git a/cairo/test/reference/long-lines.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/long-lines.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/long-lines.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/long-lines.mask.rgb24.ref.png diff --git a/cairo/test/reference/long-lines.traps.argb32.ref.png b/3rd-party/cairo/test/reference/long-lines.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/long-lines.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/long-lines.traps.argb32.ref.png diff --git a/cairo/test/reference/long-lines.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/long-lines.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/long-lines.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/long-lines.traps.rgb24.ref.png diff --git a/cairo/test/reference/map-all-to-image.base.argb32.ref.png b/3rd-party/cairo/test/reference/map-all-to-image.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/map-all-to-image.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/map-all-to-image.base.argb32.ref.png diff --git a/cairo/test/reference/map-all-to-image.base.rgb24.ref.png b/3rd-party/cairo/test/reference/map-all-to-image.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/map-all-to-image.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/map-all-to-image.base.rgb24.ref.png diff --git a/cairo/test/reference/map-all-to-image.ref.png b/3rd-party/cairo/test/reference/map-all-to-image.ref.png similarity index 100% rename from cairo/test/reference/map-all-to-image.ref.png rename to 3rd-party/cairo/test/reference/map-all-to-image.ref.png diff --git a/cairo/test/reference/map-all-to-xlib-fallback.rgb24.ref.png b/3rd-party/cairo/test/reference/map-all-to-xlib-fallback.rgb24.ref.png similarity index 100% rename from cairo/test/reference/map-all-to-xlib-fallback.rgb24.ref.png rename to 3rd-party/cairo/test/reference/map-all-to-xlib-fallback.rgb24.ref.png diff --git a/cairo/test/reference/map-all-to-xlib-window.rgb24.ref.png b/3rd-party/cairo/test/reference/map-all-to-xlib-window.rgb24.ref.png similarity index 100% rename from cairo/test/reference/map-all-to-xlib-window.rgb24.ref.png rename to 3rd-party/cairo/test/reference/map-all-to-xlib-window.rgb24.ref.png diff --git a/cairo/test/reference/map-all-to-xlib.argb32.ref.png b/3rd-party/cairo/test/reference/map-all-to-xlib.argb32.ref.png similarity index 100% rename from cairo/test/reference/map-all-to-xlib.argb32.ref.png rename to 3rd-party/cairo/test/reference/map-all-to-xlib.argb32.ref.png diff --git a/cairo/test/reference/map-all-to-xlib.rgb24.ref.png b/3rd-party/cairo/test/reference/map-all-to-xlib.rgb24.ref.png similarity index 100% rename from cairo/test/reference/map-all-to-xlib.rgb24.ref.png rename to 3rd-party/cairo/test/reference/map-all-to-xlib.rgb24.ref.png diff --git a/cairo/test/reference/map-bit-to-image.base.argb32.ref.png b/3rd-party/cairo/test/reference/map-bit-to-image.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/map-bit-to-image.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/map-bit-to-image.base.argb32.ref.png diff --git a/cairo/test/reference/map-bit-to-image.base.rgb24.ref.png b/3rd-party/cairo/test/reference/map-bit-to-image.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/map-bit-to-image.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/map-bit-to-image.base.rgb24.ref.png diff --git a/cairo/test/reference/map-bit-to-image.ref.png b/3rd-party/cairo/test/reference/map-bit-to-image.ref.png similarity index 100% rename from cairo/test/reference/map-bit-to-image.ref.png rename to 3rd-party/cairo/test/reference/map-bit-to-image.ref.png diff --git a/cairo/test/reference/map-bit-to-xlib-fallback.rgb24.ref.png b/3rd-party/cairo/test/reference/map-bit-to-xlib-fallback.rgb24.ref.png similarity index 100% rename from cairo/test/reference/map-bit-to-xlib-fallback.rgb24.ref.png rename to 3rd-party/cairo/test/reference/map-bit-to-xlib-fallback.rgb24.ref.png diff --git a/cairo/test/reference/map-bit-to-xlib-window.rgb24.ref.png b/3rd-party/cairo/test/reference/map-bit-to-xlib-window.rgb24.ref.png similarity index 100% rename from cairo/test/reference/map-bit-to-xlib-window.rgb24.ref.png rename to 3rd-party/cairo/test/reference/map-bit-to-xlib-window.rgb24.ref.png diff --git a/cairo/test/reference/map-bit-to-xlib.argb32.ref.png b/3rd-party/cairo/test/reference/map-bit-to-xlib.argb32.ref.png similarity index 100% rename from cairo/test/reference/map-bit-to-xlib.argb32.ref.png rename to 3rd-party/cairo/test/reference/map-bit-to-xlib.argb32.ref.png diff --git a/cairo/test/reference/map-bit-to-xlib.rgb24.ref.png b/3rd-party/cairo/test/reference/map-bit-to-xlib.rgb24.ref.png similarity index 100% rename from cairo/test/reference/map-bit-to-xlib.rgb24.ref.png rename to 3rd-party/cairo/test/reference/map-bit-to-xlib.rgb24.ref.png diff --git a/cairo/test/reference/map-to-image-fill.base.argb32.ref.png b/3rd-party/cairo/test/reference/map-to-image-fill.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/map-to-image-fill.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/map-to-image-fill.base.argb32.ref.png diff --git a/cairo/test/reference/map-to-image-fill.base.rgb24.ref.png b/3rd-party/cairo/test/reference/map-to-image-fill.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/map-to-image-fill.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/map-to-image-fill.base.rgb24.ref.png diff --git a/cairo/test/reference/map-to-image-fill.ref.png b/3rd-party/cairo/test/reference/map-to-image-fill.ref.png similarity index 100% rename from cairo/test/reference/map-to-image-fill.ref.png rename to 3rd-party/cairo/test/reference/map-to-image-fill.ref.png diff --git a/cairo/test/reference/mask-alpha.argb32.ref.png b/3rd-party/cairo/test/reference/mask-alpha.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask-alpha.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask-alpha.argb32.ref.png diff --git a/cairo/test/reference/mask-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/mask-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/mask-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/mask-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/mask-alpha.image16.ref.png b/3rd-party/cairo/test/reference/mask-alpha.image16.ref.png similarity index 100% rename from cairo/test/reference/mask-alpha.image16.ref.png rename to 3rd-party/cairo/test/reference/mask-alpha.image16.ref.png diff --git a/cairo/test/reference/mask-alpha.ps.ref.png b/3rd-party/cairo/test/reference/mask-alpha.ps.ref.png similarity index 100% rename from cairo/test/reference/mask-alpha.ps.ref.png rename to 3rd-party/cairo/test/reference/mask-alpha.ps.ref.png diff --git a/cairo/test/reference/mask-alpha.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/mask-alpha.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask-alpha.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask-alpha.quartz.argb32.ref.png diff --git a/cairo/test/reference/mask-alpha.rgb24.ref.png b/3rd-party/cairo/test/reference/mask-alpha.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask-alpha.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask-alpha.rgb24.ref.png diff --git a/cairo/test/reference/mask-alpha.svg.rgb24.xfail.png b/3rd-party/cairo/test/reference/mask-alpha.svg.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/mask-alpha.svg.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/mask-alpha.svg.rgb24.xfail.png diff --git a/cairo/test/reference/mask-alpha.traps.argb32.ref.png b/3rd-party/cairo/test/reference/mask-alpha.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask-alpha.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask-alpha.traps.argb32.ref.png diff --git a/cairo/test/reference/mask-alpha.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/mask-alpha.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask-alpha.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask-alpha.traps.rgb24.ref.png diff --git a/cairo/test/reference/mask-ctm.argb32.ref.png b/3rd-party/cairo/test/reference/mask-ctm.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask-ctm.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask-ctm.argb32.ref.png diff --git a/cairo/test/reference/mask-ctm.base.argb32.ref.png b/3rd-party/cairo/test/reference/mask-ctm.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask-ctm.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask-ctm.base.argb32.ref.png diff --git a/cairo/test/reference/mask-ctm.base.rgb24.ref.png b/3rd-party/cairo/test/reference/mask-ctm.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask-ctm.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask-ctm.base.rgb24.ref.png diff --git a/cairo/test/reference/mask-ctm.rgb24.ref.png b/3rd-party/cairo/test/reference/mask-ctm.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask-ctm.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask-ctm.rgb24.ref.png diff --git a/cairo/test/reference/mask-glyphs.gl.ref.png b/3rd-party/cairo/test/reference/mask-glyphs.gl.ref.png similarity index 100% rename from cairo/test/reference/mask-glyphs.gl.ref.png rename to 3rd-party/cairo/test/reference/mask-glyphs.gl.ref.png diff --git a/cairo/test/reference/mask-glyphs.image16.ref.png b/3rd-party/cairo/test/reference/mask-glyphs.image16.ref.png similarity index 100% rename from cairo/test/reference/mask-glyphs.image16.ref.png rename to 3rd-party/cairo/test/reference/mask-glyphs.image16.ref.png diff --git a/cairo/test/reference/mask-glyphs.pdf.ref.png b/3rd-party/cairo/test/reference/mask-glyphs.pdf.ref.png similarity index 100% rename from cairo/test/reference/mask-glyphs.pdf.ref.png rename to 3rd-party/cairo/test/reference/mask-glyphs.pdf.ref.png diff --git a/cairo/test/reference/mask-glyphs.ref.png b/3rd-party/cairo/test/reference/mask-glyphs.ref.png similarity index 100% rename from cairo/test/reference/mask-glyphs.ref.png rename to 3rd-party/cairo/test/reference/mask-glyphs.ref.png diff --git a/cairo/test/reference/mask-glyphs.svg.ref.png b/3rd-party/cairo/test/reference/mask-glyphs.svg.ref.png similarity index 100% rename from cairo/test/reference/mask-glyphs.svg.ref.png rename to 3rd-party/cairo/test/reference/mask-glyphs.svg.ref.png diff --git a/cairo/test/reference/mask-surface-ctm.argb32.ref.png b/3rd-party/cairo/test/reference/mask-surface-ctm.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask-surface-ctm.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask-surface-ctm.argb32.ref.png diff --git a/cairo/test/reference/mask-surface-ctm.base.argb32.ref.png b/3rd-party/cairo/test/reference/mask-surface-ctm.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask-surface-ctm.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask-surface-ctm.base.argb32.ref.png diff --git a/cairo/test/reference/mask-surface-ctm.base.rgb24.ref.png b/3rd-party/cairo/test/reference/mask-surface-ctm.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask-surface-ctm.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask-surface-ctm.base.rgb24.ref.png diff --git a/cairo/test/reference/mask-surface-ctm.rgb24.ref.png b/3rd-party/cairo/test/reference/mask-surface-ctm.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask-surface-ctm.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask-surface-ctm.rgb24.ref.png diff --git a/cairo/test/reference/mask-transformed-image.argb32.ref.png b/3rd-party/cairo/test/reference/mask-transformed-image.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-image.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-image.argb32.ref.png diff --git a/cairo/test/reference/mask-transformed-image.base.argb32.ref.png b/3rd-party/cairo/test/reference/mask-transformed-image.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-image.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-image.base.argb32.ref.png diff --git a/cairo/test/reference/mask-transformed-image.base.rgb24.ref.png b/3rd-party/cairo/test/reference/mask-transformed-image.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-image.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-image.base.rgb24.ref.png diff --git a/cairo/test/reference/mask-transformed-image.image16.ref.png b/3rd-party/cairo/test/reference/mask-transformed-image.image16.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-image.image16.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-image.image16.ref.png diff --git a/cairo/test/reference/mask-transformed-image.pdf.ref.png b/3rd-party/cairo/test/reference/mask-transformed-image.pdf.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-image.pdf.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-image.pdf.ref.png diff --git a/cairo/test/reference/mask-transformed-image.quartz.ref.png b/3rd-party/cairo/test/reference/mask-transformed-image.quartz.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-image.quartz.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-image.quartz.ref.png diff --git a/cairo/test/reference/mask-transformed-image.rgb24.ref.png b/3rd-party/cairo/test/reference/mask-transformed-image.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-image.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-image.rgb24.ref.png diff --git a/cairo/test/reference/mask-transformed-similar.argb32.ref.png b/3rd-party/cairo/test/reference/mask-transformed-similar.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-similar.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-similar.argb32.ref.png diff --git a/cairo/test/reference/mask-transformed-similar.base.argb32.ref.png b/3rd-party/cairo/test/reference/mask-transformed-similar.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-similar.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-similar.base.argb32.ref.png diff --git a/cairo/test/reference/mask-transformed-similar.base.rgb24.ref.png b/3rd-party/cairo/test/reference/mask-transformed-similar.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-similar.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-similar.base.rgb24.ref.png diff --git a/cairo/test/reference/mask-transformed-similar.image16.ref.png b/3rd-party/cairo/test/reference/mask-transformed-similar.image16.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-similar.image16.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-similar.image16.ref.png diff --git a/cairo/test/reference/mask-transformed-similar.pdf.ref.png b/3rd-party/cairo/test/reference/mask-transformed-similar.pdf.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-similar.pdf.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-similar.pdf.ref.png diff --git a/cairo/test/reference/mask-transformed-similar.quartz.ref.png b/3rd-party/cairo/test/reference/mask-transformed-similar.quartz.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-similar.quartz.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-similar.quartz.ref.png diff --git a/cairo/test/reference/mask-transformed-similar.recording.ref.png b/3rd-party/cairo/test/reference/mask-transformed-similar.recording.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-similar.recording.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-similar.recording.ref.png diff --git a/cairo/test/reference/mask-transformed-similar.rgb24.ref.png b/3rd-party/cairo/test/reference/mask-transformed-similar.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-similar.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-similar.rgb24.ref.png diff --git a/cairo/test/reference/mask-transformed-similar.svg.ref.png b/3rd-party/cairo/test/reference/mask-transformed-similar.svg.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-similar.svg.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-similar.svg.ref.png diff --git a/cairo/test/reference/mask-transformed-xlib-fallback.rgb24.ref.png b/3rd-party/cairo/test/reference/mask-transformed-xlib-fallback.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-xlib-fallback.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-xlib-fallback.rgb24.ref.png diff --git a/cairo/test/reference/mask-transformed-xlib-window.rgb24.ref.png b/3rd-party/cairo/test/reference/mask-transformed-xlib-window.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-xlib-window.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-xlib-window.rgb24.ref.png diff --git a/cairo/test/reference/mask-transformed-xlib.argb32.ref.png b/3rd-party/cairo/test/reference/mask-transformed-xlib.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-xlib.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-xlib.argb32.ref.png diff --git a/cairo/test/reference/mask-transformed-xlib.rgb24.ref.png b/3rd-party/cairo/test/reference/mask-transformed-xlib.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask-transformed-xlib.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask-transformed-xlib.rgb24.ref.png diff --git a/cairo/test/reference/mask.argb32.ref.png b/3rd-party/cairo/test/reference/mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask.argb32.ref.png diff --git a/cairo/test/reference/mask.base.argb32.ref.png b/3rd-party/cairo/test/reference/mask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask.base.argb32.ref.png diff --git a/cairo/test/reference/mask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/mask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask.base.rgb24.ref.png diff --git a/cairo/test/reference/mask.image16.ref.png b/3rd-party/cairo/test/reference/mask.image16.ref.png similarity index 100% rename from cairo/test/reference/mask.image16.ref.png rename to 3rd-party/cairo/test/reference/mask.image16.ref.png diff --git a/cairo/test/reference/mask.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/mask.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask.pdf.argb32.ref.png diff --git a/cairo/test/reference/mask.pdf.rgb24.ref.png b/3rd-party/cairo/test/reference/mask.pdf.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask.pdf.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask.pdf.rgb24.ref.png diff --git a/cairo/test/reference/mask.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/mask.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask.quartz.argb32.ref.png diff --git a/cairo/test/reference/mask.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/mask.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask.quartz.rgb24.ref.png diff --git a/cairo/test/reference/mask.rgb24.ref.png b/3rd-party/cairo/test/reference/mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask.rgb24.ref.png diff --git a/cairo/test/reference/mask.svg.argb32.xfail.png b/3rd-party/cairo/test/reference/mask.svg.argb32.xfail.png similarity index 100% rename from cairo/test/reference/mask.svg.argb32.xfail.png rename to 3rd-party/cairo/test/reference/mask.svg.argb32.xfail.png diff --git a/cairo/test/reference/mask.svg.rgb24.xfail.png b/3rd-party/cairo/test/reference/mask.svg.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/mask.svg.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/mask.svg.rgb24.xfail.png diff --git a/cairo/test/reference/mask.traps.argb32.ref.png b/3rd-party/cairo/test/reference/mask.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/mask.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/mask.traps.argb32.ref.png diff --git a/cairo/test/reference/mask.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/mask.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mask.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mask.traps.rgb24.ref.png diff --git a/cairo/test/reference/mesh-pattern-accuracy.base.argb32.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-accuracy.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-accuracy.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-accuracy.base.argb32.ref.png diff --git a/cairo/test/reference/mesh-pattern-accuracy.base.rgb24.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-accuracy.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-accuracy.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-accuracy.base.rgb24.ref.png diff --git a/cairo/test/reference/mesh-pattern-accuracy.image16.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-accuracy.image16.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-accuracy.image16.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-accuracy.image16.ref.png diff --git a/cairo/test/reference/mesh-pattern-accuracy.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-accuracy.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-accuracy.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-accuracy.ref.png diff --git a/cairo/test/reference/mesh-pattern-conical.base.argb32.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-conical.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-conical.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-conical.base.argb32.ref.png diff --git a/cairo/test/reference/mesh-pattern-conical.base.rgb24.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-conical.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-conical.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-conical.base.rgb24.ref.png diff --git a/cairo/test/reference/mesh-pattern-conical.image16.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-conical.image16.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-conical.image16.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-conical.image16.ref.png diff --git a/cairo/test/reference/mesh-pattern-conical.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-conical.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-conical.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-conical.ref.png diff --git a/cairo/test/reference/mesh-pattern-control-points.base.argb32.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-control-points.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-control-points.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-control-points.base.argb32.ref.png diff --git a/cairo/test/reference/mesh-pattern-control-points.base.rgb24.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-control-points.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-control-points.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-control-points.base.rgb24.ref.png diff --git a/cairo/test/reference/mesh-pattern-control-points.image16.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-control-points.image16.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-control-points.image16.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-control-points.image16.ref.png diff --git a/cairo/test/reference/mesh-pattern-control-points.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-control-points.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-control-points.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-control-points.ref.png diff --git a/cairo/test/reference/mesh-pattern-fold.base.argb32.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-fold.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-fold.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-fold.base.argb32.ref.png diff --git a/cairo/test/reference/mesh-pattern-fold.base.rgb24.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-fold.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-fold.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-fold.base.rgb24.ref.png diff --git a/cairo/test/reference/mesh-pattern-fold.image16.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-fold.image16.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-fold.image16.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-fold.image16.ref.png diff --git a/cairo/test/reference/mesh-pattern-fold.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-fold.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-fold.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-fold.ref.png diff --git a/cairo/test/reference/mesh-pattern-overlap.base.argb32.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-overlap.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-overlap.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-overlap.base.argb32.ref.png diff --git a/cairo/test/reference/mesh-pattern-overlap.base.rgb24.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-overlap.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-overlap.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-overlap.base.rgb24.ref.png diff --git a/cairo/test/reference/mesh-pattern-overlap.image16.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-overlap.image16.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-overlap.image16.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-overlap.image16.ref.png diff --git a/cairo/test/reference/mesh-pattern-overlap.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-overlap.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-overlap.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-overlap.ref.png diff --git a/cairo/test/reference/mesh-pattern-transformed.base.argb32.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-transformed.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-transformed.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-transformed.base.argb32.ref.png diff --git a/cairo/test/reference/mesh-pattern-transformed.base.rgb24.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-transformed.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-transformed.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-transformed.base.rgb24.ref.png diff --git a/cairo/test/reference/mesh-pattern-transformed.image16.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-transformed.image16.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-transformed.image16.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-transformed.image16.ref.png diff --git a/cairo/test/reference/mesh-pattern-transformed.ref.png b/3rd-party/cairo/test/reference/mesh-pattern-transformed.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern-transformed.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern-transformed.ref.png diff --git a/cairo/test/reference/mesh-pattern.base.argb32.ref.png b/3rd-party/cairo/test/reference/mesh-pattern.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern.base.argb32.ref.png diff --git a/cairo/test/reference/mesh-pattern.base.rgb24.ref.png b/3rd-party/cairo/test/reference/mesh-pattern.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern.base.rgb24.ref.png diff --git a/cairo/test/reference/mesh-pattern.image16.ref.png b/3rd-party/cairo/test/reference/mesh-pattern.image16.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern.image16.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern.image16.ref.png diff --git a/cairo/test/reference/mesh-pattern.ref.png b/3rd-party/cairo/test/reference/mesh-pattern.ref.png similarity index 100% rename from cairo/test/reference/mesh-pattern.ref.png rename to 3rd-party/cairo/test/reference/mesh-pattern.ref.png diff --git a/cairo/test/reference/mime-data.base.argb32.ref.png b/3rd-party/cairo/test/reference/mime-data.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/mime-data.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/mime-data.base.argb32.ref.png diff --git a/cairo/test/reference/mime-data.base.rgb24.ref.png b/3rd-party/cairo/test/reference/mime-data.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/mime-data.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/mime-data.base.rgb24.ref.png diff --git a/cairo/test/reference/mime-data.pdf.ref.png b/3rd-party/cairo/test/reference/mime-data.pdf.ref.png similarity index 100% rename from cairo/test/reference/mime-data.pdf.ref.png rename to 3rd-party/cairo/test/reference/mime-data.pdf.ref.png diff --git a/cairo/test/reference/mime-data.ps.ref.png b/3rd-party/cairo/test/reference/mime-data.ps.ref.png similarity index 100% rename from cairo/test/reference/mime-data.ps.ref.png rename to 3rd-party/cairo/test/reference/mime-data.ps.ref.png diff --git a/cairo/test/reference/mime-data.ref.png b/3rd-party/cairo/test/reference/mime-data.ref.png similarity index 100% rename from cairo/test/reference/mime-data.ref.png rename to 3rd-party/cairo/test/reference/mime-data.ref.png diff --git a/cairo/test/reference/mime-data.script.ref.png b/3rd-party/cairo/test/reference/mime-data.script.ref.png similarity index 100% rename from cairo/test/reference/mime-data.script.ref.png rename to 3rd-party/cairo/test/reference/mime-data.script.ref.png diff --git a/cairo/test/reference/mime-data.svg.ref.png b/3rd-party/cairo/test/reference/mime-data.svg.ref.png similarity index 100% rename from cairo/test/reference/mime-data.svg.ref.png rename to 3rd-party/cairo/test/reference/mime-data.svg.ref.png diff --git a/cairo/test/reference/miter-precision.argb32.ref.png b/3rd-party/cairo/test/reference/miter-precision.argb32.ref.png similarity index 100% rename from cairo/test/reference/miter-precision.argb32.ref.png rename to 3rd-party/cairo/test/reference/miter-precision.argb32.ref.png diff --git a/cairo/test/reference/miter-precision.base.argb32.ref.png b/3rd-party/cairo/test/reference/miter-precision.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/miter-precision.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/miter-precision.base.argb32.ref.png diff --git a/cairo/test/reference/miter-precision.base.rgb24.ref.png b/3rd-party/cairo/test/reference/miter-precision.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/miter-precision.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/miter-precision.base.rgb24.ref.png diff --git a/cairo/test/reference/miter-precision.ps2.ref.png b/3rd-party/cairo/test/reference/miter-precision.ps2.ref.png similarity index 100% rename from cairo/test/reference/miter-precision.ps2.ref.png rename to 3rd-party/cairo/test/reference/miter-precision.ps2.ref.png diff --git a/cairo/test/reference/miter-precision.ps3.ref.png b/3rd-party/cairo/test/reference/miter-precision.ps3.ref.png similarity index 100% rename from cairo/test/reference/miter-precision.ps3.ref.png rename to 3rd-party/cairo/test/reference/miter-precision.ps3.ref.png diff --git a/cairo/test/reference/miter-precision.rgb24.ref.png b/3rd-party/cairo/test/reference/miter-precision.rgb24.ref.png similarity index 100% rename from cairo/test/reference/miter-precision.rgb24.ref.png rename to 3rd-party/cairo/test/reference/miter-precision.rgb24.ref.png diff --git a/cairo/test/reference/miter-precision.traps.argb32.ref.png b/3rd-party/cairo/test/reference/miter-precision.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/miter-precision.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/miter-precision.traps.argb32.ref.png diff --git a/cairo/test/reference/miter-precision.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/miter-precision.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/miter-precision.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/miter-precision.traps.rgb24.ref.png diff --git a/cairo/test/reference/move-to-show-surface.base.argb32.ref.png b/3rd-party/cairo/test/reference/move-to-show-surface.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/move-to-show-surface.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/move-to-show-surface.base.argb32.ref.png diff --git a/cairo/test/reference/move-to-show-surface.base.rgb24.ref.png b/3rd-party/cairo/test/reference/move-to-show-surface.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/move-to-show-surface.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/move-to-show-surface.base.rgb24.ref.png diff --git a/cairo/test/reference/move-to-show-surface.ref.png b/3rd-party/cairo/test/reference/move-to-show-surface.ref.png similarity index 100% rename from cairo/test/reference/move-to-show-surface.ref.png rename to 3rd-party/cairo/test/reference/move-to-show-surface.ref.png diff --git a/cairo/test/reference/negative-stride-image.base.argb32.ref.png b/3rd-party/cairo/test/reference/negative-stride-image.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/negative-stride-image.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/negative-stride-image.base.argb32.ref.png diff --git a/cairo/test/reference/negative-stride-image.base.rgb24.ref.png b/3rd-party/cairo/test/reference/negative-stride-image.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/negative-stride-image.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/negative-stride-image.base.rgb24.ref.png diff --git a/cairo/test/reference/negative-stride-image.image16.ref.png b/3rd-party/cairo/test/reference/negative-stride-image.image16.ref.png similarity index 100% rename from cairo/test/reference/negative-stride-image.image16.ref.png rename to 3rd-party/cairo/test/reference/negative-stride-image.image16.ref.png diff --git a/cairo/test/reference/negative-stride-image.ps.ref.png b/3rd-party/cairo/test/reference/negative-stride-image.ps.ref.png similarity index 100% rename from cairo/test/reference/negative-stride-image.ps.ref.png rename to 3rd-party/cairo/test/reference/negative-stride-image.ps.ref.png diff --git a/cairo/test/reference/negative-stride-image.ref.png b/3rd-party/cairo/test/reference/negative-stride-image.ref.png similarity index 100% rename from cairo/test/reference/negative-stride-image.ref.png rename to 3rd-party/cairo/test/reference/negative-stride-image.ref.png diff --git a/cairo/test/reference/new-sub-path.argb32.ref.png b/3rd-party/cairo/test/reference/new-sub-path.argb32.ref.png similarity index 100% rename from cairo/test/reference/new-sub-path.argb32.ref.png rename to 3rd-party/cairo/test/reference/new-sub-path.argb32.ref.png diff --git a/cairo/test/reference/new-sub-path.base.argb32.ref.png b/3rd-party/cairo/test/reference/new-sub-path.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/new-sub-path.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/new-sub-path.base.argb32.ref.png diff --git a/cairo/test/reference/new-sub-path.base.rgb24.ref.png b/3rd-party/cairo/test/reference/new-sub-path.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/new-sub-path.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/new-sub-path.base.rgb24.ref.png diff --git a/cairo/test/reference/new-sub-path.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/new-sub-path.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/new-sub-path.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/new-sub-path.pdf.argb32.ref.png diff --git a/cairo/test/reference/new-sub-path.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/new-sub-path.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/new-sub-path.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/new-sub-path.ps2.argb32.ref.png diff --git a/cairo/test/reference/new-sub-path.ps2.rgb24.ref.png b/3rd-party/cairo/test/reference/new-sub-path.ps2.rgb24.ref.png similarity index 100% rename from cairo/test/reference/new-sub-path.ps2.rgb24.ref.png rename to 3rd-party/cairo/test/reference/new-sub-path.ps2.rgb24.ref.png diff --git a/cairo/test/reference/new-sub-path.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/new-sub-path.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/new-sub-path.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/new-sub-path.ps3.argb32.ref.png diff --git a/cairo/test/reference/new-sub-path.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/new-sub-path.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/new-sub-path.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/new-sub-path.ps3.rgb24.ref.png diff --git a/cairo/test/reference/new-sub-path.quartz.ref.png b/3rd-party/cairo/test/reference/new-sub-path.quartz.ref.png similarity index 100% rename from cairo/test/reference/new-sub-path.quartz.ref.png rename to 3rd-party/cairo/test/reference/new-sub-path.quartz.ref.png diff --git a/cairo/test/reference/new-sub-path.rgb24.ref.png b/3rd-party/cairo/test/reference/new-sub-path.rgb24.ref.png similarity index 100% rename from cairo/test/reference/new-sub-path.rgb24.ref.png rename to 3rd-party/cairo/test/reference/new-sub-path.rgb24.ref.png diff --git a/cairo/test/reference/new-sub-path.traps.argb32.ref.png b/3rd-party/cairo/test/reference/new-sub-path.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/new-sub-path.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/new-sub-path.traps.argb32.ref.png diff --git a/cairo/test/reference/new-sub-path.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/new-sub-path.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/new-sub-path.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/new-sub-path.traps.rgb24.ref.png diff --git a/cairo/test/reference/nil-surface.argb32.ref.png b/3rd-party/cairo/test/reference/nil-surface.argb32.ref.png similarity index 100% rename from cairo/test/reference/nil-surface.argb32.ref.png rename to 3rd-party/cairo/test/reference/nil-surface.argb32.ref.png diff --git a/cairo/test/reference/nil-surface.base.argb32.ref.png b/3rd-party/cairo/test/reference/nil-surface.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/nil-surface.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/nil-surface.base.argb32.ref.png diff --git a/cairo/test/reference/nil-surface.base.rgb24.ref.png b/3rd-party/cairo/test/reference/nil-surface.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/nil-surface.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/nil-surface.base.rgb24.ref.png diff --git a/cairo/test/reference/nil-surface.rgb24.ref.png b/3rd-party/cairo/test/reference/nil-surface.rgb24.ref.png similarity index 100% rename from cairo/test/reference/nil-surface.rgb24.ref.png rename to 3rd-party/cairo/test/reference/nil-surface.rgb24.ref.png diff --git a/cairo/test/reference/operator-alpha-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/operator-alpha-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/operator-alpha-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/operator-alpha-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/operator-alpha-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/operator-alpha-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/operator-alpha-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/operator-alpha-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/operator-alpha-alpha.image16.ref.png b/3rd-party/cairo/test/reference/operator-alpha-alpha.image16.ref.png similarity index 100% rename from cairo/test/reference/operator-alpha-alpha.image16.ref.png rename to 3rd-party/cairo/test/reference/operator-alpha-alpha.image16.ref.png diff --git a/cairo/test/reference/operator-alpha-alpha.pdf.xfail.png b/3rd-party/cairo/test/reference/operator-alpha-alpha.pdf.xfail.png similarity index 100% rename from cairo/test/reference/operator-alpha-alpha.pdf.xfail.png rename to 3rd-party/cairo/test/reference/operator-alpha-alpha.pdf.xfail.png diff --git a/cairo/test/reference/operator-alpha-alpha.ps.xfail.png b/3rd-party/cairo/test/reference/operator-alpha-alpha.ps.xfail.png similarity index 100% rename from cairo/test/reference/operator-alpha-alpha.ps.xfail.png rename to 3rd-party/cairo/test/reference/operator-alpha-alpha.ps.xfail.png diff --git a/cairo/test/reference/operator-alpha-alpha.ref.png b/3rd-party/cairo/test/reference/operator-alpha-alpha.ref.png similarity index 100% rename from cairo/test/reference/operator-alpha-alpha.ref.png rename to 3rd-party/cairo/test/reference/operator-alpha-alpha.ref.png diff --git a/cairo/test/reference/operator-alpha-alpha.svg.xfail.png b/3rd-party/cairo/test/reference/operator-alpha-alpha.svg.xfail.png similarity index 100% rename from cairo/test/reference/operator-alpha-alpha.svg.xfail.png rename to 3rd-party/cairo/test/reference/operator-alpha-alpha.svg.xfail.png diff --git a/cairo/test/reference/operator-alpha-alpha.traps.argb32.ref.png b/3rd-party/cairo/test/reference/operator-alpha-alpha.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/operator-alpha-alpha.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/operator-alpha-alpha.traps.argb32.ref.png diff --git a/cairo/test/reference/operator-alpha-alpha.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/operator-alpha-alpha.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/operator-alpha-alpha.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/operator-alpha-alpha.traps.rgb24.ref.png diff --git a/cairo/test/reference/operator-alpha.argb32.ref.png b/3rd-party/cairo/test/reference/operator-alpha.argb32.ref.png similarity index 100% rename from cairo/test/reference/operator-alpha.argb32.ref.png rename to 3rd-party/cairo/test/reference/operator-alpha.argb32.ref.png diff --git a/cairo/test/reference/operator-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/operator-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/operator-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/operator-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/operator-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/operator-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/operator-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/operator-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/operator-alpha.rgb24.ref.png b/3rd-party/cairo/test/reference/operator-alpha.rgb24.ref.png similarity index 100% rename from cairo/test/reference/operator-alpha.rgb24.ref.png rename to 3rd-party/cairo/test/reference/operator-alpha.rgb24.ref.png diff --git a/cairo/test/reference/operator-alpha.svg12.argb32.xfail.png b/3rd-party/cairo/test/reference/operator-alpha.svg12.argb32.xfail.png similarity index 100% rename from cairo/test/reference/operator-alpha.svg12.argb32.xfail.png rename to 3rd-party/cairo/test/reference/operator-alpha.svg12.argb32.xfail.png diff --git a/cairo/test/reference/operator-alpha.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/operator-alpha.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/operator-alpha.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/operator-alpha.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/operator-clear.argb32.ref.png b/3rd-party/cairo/test/reference/operator-clear.argb32.ref.png similarity index 100% rename from cairo/test/reference/operator-clear.argb32.ref.png rename to 3rd-party/cairo/test/reference/operator-clear.argb32.ref.png diff --git a/cairo/test/reference/operator-clear.base.argb32.ref.png b/3rd-party/cairo/test/reference/operator-clear.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/operator-clear.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/operator-clear.base.argb32.ref.png diff --git a/cairo/test/reference/operator-clear.base.rgb24.ref.png b/3rd-party/cairo/test/reference/operator-clear.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/operator-clear.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/operator-clear.base.rgb24.ref.png diff --git a/cairo/test/reference/operator-clear.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/operator-clear.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/operator-clear.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/operator-clear.mask.rgb24.ref.png diff --git a/cairo/test/reference/operator-clear.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/operator-clear.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/operator-clear.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/operator-clear.ps2.argb32.ref.png diff --git a/cairo/test/reference/operator-clear.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/operator-clear.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/operator-clear.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/operator-clear.ps3.argb32.ref.png diff --git a/cairo/test/reference/operator-clear.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/operator-clear.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/operator-clear.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/operator-clear.quartz.argb32.ref.png diff --git a/cairo/test/reference/operator-clear.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/operator-clear.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/operator-clear.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/operator-clear.quartz.rgb24.ref.png diff --git a/cairo/test/reference/operator-clear.rgb24.ref.png b/3rd-party/cairo/test/reference/operator-clear.rgb24.ref.png similarity index 100% rename from cairo/test/reference/operator-clear.rgb24.ref.png rename to 3rd-party/cairo/test/reference/operator-clear.rgb24.ref.png diff --git a/cairo/test/reference/operator-clear.svg12.argb32.xfail.png b/3rd-party/cairo/test/reference/operator-clear.svg12.argb32.xfail.png similarity index 100% rename from cairo/test/reference/operator-clear.svg12.argb32.xfail.png rename to 3rd-party/cairo/test/reference/operator-clear.svg12.argb32.xfail.png diff --git a/cairo/test/reference/operator-clear.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/operator-clear.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/operator-clear.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/operator-clear.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/operator-clear.traps.argb32.ref.png b/3rd-party/cairo/test/reference/operator-clear.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/operator-clear.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/operator-clear.traps.argb32.ref.png diff --git a/cairo/test/reference/operator-clear.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/operator-clear.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/operator-clear.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/operator-clear.traps.rgb24.ref.png diff --git a/cairo/test/reference/operator-source.argb32.ref.png b/3rd-party/cairo/test/reference/operator-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/operator-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/operator-source.argb32.ref.png diff --git a/cairo/test/reference/operator-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/operator-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/operator-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/operator-source.base.argb32.ref.png diff --git a/cairo/test/reference/operator-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/operator-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/operator-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/operator-source.base.rgb24.ref.png diff --git a/cairo/test/reference/operator-source.image16.ref.png b/3rd-party/cairo/test/reference/operator-source.image16.ref.png similarity index 100% rename from cairo/test/reference/operator-source.image16.ref.png rename to 3rd-party/cairo/test/reference/operator-source.image16.ref.png diff --git a/cairo/test/reference/operator-source.mask.argb32.ref.png b/3rd-party/cairo/test/reference/operator-source.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/operator-source.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/operator-source.mask.argb32.ref.png diff --git a/cairo/test/reference/operator-source.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/operator-source.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/operator-source.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/operator-source.mask.rgb24.ref.png diff --git a/cairo/test/reference/operator-source.rgb24.ref.png b/3rd-party/cairo/test/reference/operator-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/operator-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/operator-source.rgb24.ref.png diff --git a/cairo/test/reference/operator-source.traps.argb32.ref.png b/3rd-party/cairo/test/reference/operator-source.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/operator-source.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/operator-source.traps.argb32.ref.png diff --git a/cairo/test/reference/operator-source.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/operator-source.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/operator-source.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/operator-source.traps.rgb24.ref.png diff --git a/cairo/test/reference/operator-source.xlib-fallback.ref.png b/3rd-party/cairo/test/reference/operator-source.xlib-fallback.ref.png similarity index 100% rename from cairo/test/reference/operator-source.xlib-fallback.ref.png rename to 3rd-party/cairo/test/reference/operator-source.xlib-fallback.ref.png diff --git a/cairo/test/reference/operator.argb32.ref.png b/3rd-party/cairo/test/reference/operator.argb32.ref.png similarity index 100% rename from cairo/test/reference/operator.argb32.ref.png rename to 3rd-party/cairo/test/reference/operator.argb32.ref.png diff --git a/cairo/test/reference/operator.base.argb32.ref.png b/3rd-party/cairo/test/reference/operator.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/operator.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/operator.base.argb32.ref.png diff --git a/cairo/test/reference/operator.base.rgb24.ref.png b/3rd-party/cairo/test/reference/operator.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/operator.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/operator.base.rgb24.ref.png diff --git a/cairo/test/reference/operator.rgb24.ref.png b/3rd-party/cairo/test/reference/operator.rgb24.ref.png similarity index 100% rename from cairo/test/reference/operator.rgb24.ref.png rename to 3rd-party/cairo/test/reference/operator.rgb24.ref.png diff --git a/cairo/test/reference/operator.svg12.argb32.xfail.png b/3rd-party/cairo/test/reference/operator.svg12.argb32.xfail.png similarity index 100% rename from cairo/test/reference/operator.svg12.argb32.xfail.png rename to 3rd-party/cairo/test/reference/operator.svg12.argb32.xfail.png diff --git a/cairo/test/reference/operator.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/operator.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/operator.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/operator.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/outline-tolerance.ref.png b/3rd-party/cairo/test/reference/outline-tolerance.ref.png similarity index 100% rename from cairo/test/reference/outline-tolerance.ref.png rename to 3rd-party/cairo/test/reference/outline-tolerance.ref.png diff --git a/cairo/test/reference/over-above-source.argb32.ref.png b/3rd-party/cairo/test/reference/over-above-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-above-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-above-source.argb32.ref.png diff --git a/cairo/test/reference/over-above-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/over-above-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-above-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-above-source.base.argb32.ref.png diff --git a/cairo/test/reference/over-above-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/over-above-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-above-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-above-source.base.rgb24.ref.png diff --git a/cairo/test/reference/over-above-source.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/over-above-source.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-above-source.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-above-source.ps2.argb32.ref.png diff --git a/cairo/test/reference/over-above-source.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/over-above-source.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-above-source.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-above-source.ps3.argb32.ref.png diff --git a/cairo/test/reference/over-above-source.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/over-above-source.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-above-source.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-above-source.quartz.argb32.ref.png diff --git a/cairo/test/reference/over-above-source.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/over-above-source.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-above-source.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-above-source.quartz.rgb24.ref.png diff --git a/cairo/test/reference/over-above-source.rgb24.ref.png b/3rd-party/cairo/test/reference/over-above-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-above-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-above-source.rgb24.ref.png diff --git a/cairo/test/reference/over-above-source.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/over-above-source.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/over-above-source.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/over-above-source.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/over-above-source.traps.argb32.ref.png b/3rd-party/cairo/test/reference/over-above-source.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-above-source.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-above-source.traps.argb32.ref.png diff --git a/cairo/test/reference/over-above-source.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/over-above-source.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-above-source.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-above-source.traps.rgb24.ref.png diff --git a/cairo/test/reference/over-around-source.argb32.ref.png b/3rd-party/cairo/test/reference/over-around-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-around-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-around-source.argb32.ref.png diff --git a/cairo/test/reference/over-around-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/over-around-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-around-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-around-source.base.argb32.ref.png diff --git a/cairo/test/reference/over-around-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/over-around-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-around-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-around-source.base.rgb24.ref.png diff --git a/cairo/test/reference/over-around-source.image16.ref.png b/3rd-party/cairo/test/reference/over-around-source.image16.ref.png similarity index 100% rename from cairo/test/reference/over-around-source.image16.ref.png rename to 3rd-party/cairo/test/reference/over-around-source.image16.ref.png diff --git a/cairo/test/reference/over-around-source.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/over-around-source.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-around-source.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-around-source.pdf.argb32.ref.png diff --git a/cairo/test/reference/over-around-source.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/over-around-source.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-around-source.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-around-source.ps2.argb32.ref.png diff --git a/cairo/test/reference/over-around-source.ps2.rgb24.ref.png b/3rd-party/cairo/test/reference/over-around-source.ps2.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-around-source.ps2.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-around-source.ps2.rgb24.ref.png diff --git a/cairo/test/reference/over-around-source.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/over-around-source.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-around-source.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-around-source.ps3.argb32.ref.png diff --git a/cairo/test/reference/over-around-source.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/over-around-source.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-around-source.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-around-source.ps3.rgb24.ref.png diff --git a/cairo/test/reference/over-around-source.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/over-around-source.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-around-source.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-around-source.quartz.argb32.ref.png diff --git a/cairo/test/reference/over-around-source.rgb24.ref.png b/3rd-party/cairo/test/reference/over-around-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-around-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-around-source.rgb24.ref.png diff --git a/cairo/test/reference/over-around-source.svg12.argb32.xfail.png b/3rd-party/cairo/test/reference/over-around-source.svg12.argb32.xfail.png similarity index 100% rename from cairo/test/reference/over-around-source.svg12.argb32.xfail.png rename to 3rd-party/cairo/test/reference/over-around-source.svg12.argb32.xfail.png diff --git a/cairo/test/reference/over-around-source.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/over-around-source.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/over-around-source.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/over-around-source.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/over-around-source.traps.argb32.ref.png b/3rd-party/cairo/test/reference/over-around-source.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-around-source.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-around-source.traps.argb32.ref.png diff --git a/cairo/test/reference/over-around-source.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/over-around-source.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-around-source.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-around-source.traps.rgb24.ref.png diff --git a/cairo/test/reference/over-below-source.argb32.ref.png b/3rd-party/cairo/test/reference/over-below-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-below-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-below-source.argb32.ref.png diff --git a/cairo/test/reference/over-below-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/over-below-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-below-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-below-source.base.argb32.ref.png diff --git a/cairo/test/reference/over-below-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/over-below-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-below-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-below-source.base.rgb24.ref.png diff --git a/cairo/test/reference/over-below-source.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/over-below-source.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-below-source.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-below-source.pdf.argb32.ref.png diff --git a/cairo/test/reference/over-below-source.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/over-below-source.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-below-source.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-below-source.ps2.argb32.ref.png diff --git a/cairo/test/reference/over-below-source.ps2.rgb24.ref.png b/3rd-party/cairo/test/reference/over-below-source.ps2.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-below-source.ps2.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-below-source.ps2.rgb24.ref.png diff --git a/cairo/test/reference/over-below-source.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/over-below-source.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-below-source.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-below-source.ps3.argb32.ref.png diff --git a/cairo/test/reference/over-below-source.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/over-below-source.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-below-source.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-below-source.ps3.rgb24.ref.png diff --git a/cairo/test/reference/over-below-source.rgb24.ref.png b/3rd-party/cairo/test/reference/over-below-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-below-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-below-source.rgb24.ref.png diff --git a/cairo/test/reference/over-below-source.svg12.argb32.xfail.png b/3rd-party/cairo/test/reference/over-below-source.svg12.argb32.xfail.png similarity index 100% rename from cairo/test/reference/over-below-source.svg12.argb32.xfail.png rename to 3rd-party/cairo/test/reference/over-below-source.svg12.argb32.xfail.png diff --git a/cairo/test/reference/over-below-source.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/over-below-source.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/over-below-source.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/over-below-source.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/over-below-source.traps.argb32.ref.png b/3rd-party/cairo/test/reference/over-below-source.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-below-source.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-below-source.traps.argb32.ref.png diff --git a/cairo/test/reference/over-below-source.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/over-below-source.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-below-source.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-below-source.traps.rgb24.ref.png diff --git a/cairo/test/reference/over-between-source.argb32.ref.png b/3rd-party/cairo/test/reference/over-between-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-between-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-between-source.argb32.ref.png diff --git a/cairo/test/reference/over-between-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/over-between-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-between-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-between-source.base.argb32.ref.png diff --git a/cairo/test/reference/over-between-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/over-between-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-between-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-between-source.base.rgb24.ref.png diff --git a/cairo/test/reference/over-between-source.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/over-between-source.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-between-source.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-between-source.ps2.argb32.ref.png diff --git a/cairo/test/reference/over-between-source.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/over-between-source.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-between-source.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-between-source.ps3.argb32.ref.png diff --git a/cairo/test/reference/over-between-source.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/over-between-source.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-between-source.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-between-source.quartz.argb32.ref.png diff --git a/cairo/test/reference/over-between-source.rgb24.ref.png b/3rd-party/cairo/test/reference/over-between-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-between-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-between-source.rgb24.ref.png diff --git a/cairo/test/reference/over-between-source.svg12.argb32.xfail.png b/3rd-party/cairo/test/reference/over-between-source.svg12.argb32.xfail.png similarity index 100% rename from cairo/test/reference/over-between-source.svg12.argb32.xfail.png rename to 3rd-party/cairo/test/reference/over-between-source.svg12.argb32.xfail.png diff --git a/cairo/test/reference/over-between-source.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/over-between-source.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/over-between-source.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/over-between-source.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/over-between-source.traps.argb32.ref.png b/3rd-party/cairo/test/reference/over-between-source.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/over-between-source.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/over-between-source.traps.argb32.ref.png diff --git a/cairo/test/reference/over-between-source.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/over-between-source.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/over-between-source.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/over-between-source.traps.rgb24.ref.png diff --git a/cairo/test/reference/overlapping-boxes.argb32.ref.png b/3rd-party/cairo/test/reference/overlapping-boxes.argb32.ref.png similarity index 100% rename from cairo/test/reference/overlapping-boxes.argb32.ref.png rename to 3rd-party/cairo/test/reference/overlapping-boxes.argb32.ref.png diff --git a/cairo/test/reference/overlapping-boxes.base.argb32.ref.png b/3rd-party/cairo/test/reference/overlapping-boxes.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/overlapping-boxes.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/overlapping-boxes.base.argb32.ref.png diff --git a/cairo/test/reference/overlapping-boxes.base.rgb24.ref.png b/3rd-party/cairo/test/reference/overlapping-boxes.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/overlapping-boxes.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/overlapping-boxes.base.rgb24.ref.png diff --git a/cairo/test/reference/overlapping-boxes.rgb24.ref.png b/3rd-party/cairo/test/reference/overlapping-boxes.rgb24.ref.png similarity index 100% rename from cairo/test/reference/overlapping-boxes.rgb24.ref.png rename to 3rd-party/cairo/test/reference/overlapping-boxes.rgb24.ref.png diff --git a/cairo/test/reference/overlapping-boxes.traps.argb32.ref.png b/3rd-party/cairo/test/reference/overlapping-boxes.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/overlapping-boxes.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/overlapping-boxes.traps.argb32.ref.png diff --git a/cairo/test/reference/overlapping-boxes.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/overlapping-boxes.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/overlapping-boxes.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/overlapping-boxes.traps.rgb24.ref.png diff --git a/cairo/test/reference/overlapping-dash-caps.base.argb32.ref.png b/3rd-party/cairo/test/reference/overlapping-dash-caps.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/overlapping-dash-caps.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/overlapping-dash-caps.base.argb32.ref.png diff --git a/cairo/test/reference/overlapping-dash-caps.base.rgb24.ref.png b/3rd-party/cairo/test/reference/overlapping-dash-caps.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/overlapping-dash-caps.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/overlapping-dash-caps.base.rgb24.ref.png diff --git a/cairo/test/reference/overlapping-dash-caps.mask.argb32.ref.png b/3rd-party/cairo/test/reference/overlapping-dash-caps.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/overlapping-dash-caps.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/overlapping-dash-caps.mask.argb32.ref.png diff --git a/cairo/test/reference/overlapping-dash-caps.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/overlapping-dash-caps.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/overlapping-dash-caps.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/overlapping-dash-caps.mask.rgb24.ref.png diff --git a/cairo/test/reference/overlapping-dash-caps.ref.png b/3rd-party/cairo/test/reference/overlapping-dash-caps.ref.png similarity index 100% rename from cairo/test/reference/overlapping-dash-caps.ref.png rename to 3rd-party/cairo/test/reference/overlapping-dash-caps.ref.png diff --git a/cairo/test/reference/overlapping-dash-caps.traps.argb32.ref.png b/3rd-party/cairo/test/reference/overlapping-dash-caps.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/overlapping-dash-caps.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/overlapping-dash-caps.traps.argb32.ref.png diff --git a/cairo/test/reference/overlapping-dash-caps.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/overlapping-dash-caps.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/overlapping-dash-caps.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/overlapping-dash-caps.traps.rgb24.ref.png diff --git a/cairo/test/reference/overlapping-glyphs.argb32.ref.png b/3rd-party/cairo/test/reference/overlapping-glyphs.argb32.ref.png similarity index 100% rename from cairo/test/reference/overlapping-glyphs.argb32.ref.png rename to 3rd-party/cairo/test/reference/overlapping-glyphs.argb32.ref.png diff --git a/cairo/test/reference/overlapping-glyphs.base.argb32.ref.png b/3rd-party/cairo/test/reference/overlapping-glyphs.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/overlapping-glyphs.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/overlapping-glyphs.base.argb32.ref.png diff --git a/cairo/test/reference/overlapping-glyphs.base.rgb24.ref.png b/3rd-party/cairo/test/reference/overlapping-glyphs.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/overlapping-glyphs.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/overlapping-glyphs.base.rgb24.ref.png diff --git a/cairo/test/reference/overlapping-glyphs.pdf.argb32.xfail.png b/3rd-party/cairo/test/reference/overlapping-glyphs.pdf.argb32.xfail.png similarity index 100% rename from cairo/test/reference/overlapping-glyphs.pdf.argb32.xfail.png rename to 3rd-party/cairo/test/reference/overlapping-glyphs.pdf.argb32.xfail.png diff --git a/cairo/test/reference/overlapping-glyphs.pdf.rgb24.xfail.png b/3rd-party/cairo/test/reference/overlapping-glyphs.pdf.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/overlapping-glyphs.pdf.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/overlapping-glyphs.pdf.rgb24.xfail.png diff --git a/cairo/test/reference/overlapping-glyphs.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/overlapping-glyphs.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/overlapping-glyphs.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/overlapping-glyphs.quartz.argb32.ref.png diff --git a/cairo/test/reference/overlapping-glyphs.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/overlapping-glyphs.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/overlapping-glyphs.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/overlapping-glyphs.quartz.rgb24.ref.png diff --git a/cairo/test/reference/overlapping-glyphs.rgb24.ref.png b/3rd-party/cairo/test/reference/overlapping-glyphs.rgb24.ref.png similarity index 100% rename from cairo/test/reference/overlapping-glyphs.rgb24.ref.png rename to 3rd-party/cairo/test/reference/overlapping-glyphs.rgb24.ref.png diff --git a/cairo/test/reference/overlapping-glyphs.svg.argb32.ref.png b/3rd-party/cairo/test/reference/overlapping-glyphs.svg.argb32.ref.png similarity index 100% rename from cairo/test/reference/overlapping-glyphs.svg.argb32.ref.png rename to 3rd-party/cairo/test/reference/overlapping-glyphs.svg.argb32.ref.png diff --git a/cairo/test/reference/overlapping-glyphs.svg.rgb24.ref.png b/3rd-party/cairo/test/reference/overlapping-glyphs.svg.rgb24.ref.png similarity index 100% rename from cairo/test/reference/overlapping-glyphs.svg.rgb24.ref.png rename to 3rd-party/cairo/test/reference/overlapping-glyphs.svg.rgb24.ref.png diff --git a/cairo/test/reference/overlapping-glyphs.traps.argb32.ref.png b/3rd-party/cairo/test/reference/overlapping-glyphs.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/overlapping-glyphs.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/overlapping-glyphs.traps.argb32.ref.png diff --git a/cairo/test/reference/overlapping-glyphs.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/overlapping-glyphs.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/overlapping-glyphs.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/overlapping-glyphs.traps.rgb24.ref.png diff --git a/cairo/test/reference/paint-clip-fill-aa.base.argb32.ref.png b/3rd-party/cairo/test/reference/paint-clip-fill-aa.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/paint-clip-fill-aa.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/paint-clip-fill-aa.base.argb32.ref.png diff --git a/cairo/test/reference/paint-clip-fill-aa.base.rgb24.ref.png b/3rd-party/cairo/test/reference/paint-clip-fill-aa.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/paint-clip-fill-aa.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/paint-clip-fill-aa.base.rgb24.ref.png diff --git a/cairo/test/reference/paint-clip-fill-aa.ref.png b/3rd-party/cairo/test/reference/paint-clip-fill-aa.ref.png similarity index 100% rename from cairo/test/reference/paint-clip-fill-aa.ref.png rename to 3rd-party/cairo/test/reference/paint-clip-fill-aa.ref.png diff --git a/cairo/test/reference/paint-clip-fill-mono.base.argb32.ref.png b/3rd-party/cairo/test/reference/paint-clip-fill-mono.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/paint-clip-fill-mono.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/paint-clip-fill-mono.base.argb32.ref.png diff --git a/cairo/test/reference/paint-clip-fill-mono.base.rgb24.ref.png b/3rd-party/cairo/test/reference/paint-clip-fill-mono.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/paint-clip-fill-mono.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/paint-clip-fill-mono.base.rgb24.ref.png diff --git a/cairo/test/reference/paint-clip-fill-mono.ref.png b/3rd-party/cairo/test/reference/paint-clip-fill-mono.ref.png similarity index 100% rename from cairo/test/reference/paint-clip-fill-mono.ref.png rename to 3rd-party/cairo/test/reference/paint-clip-fill-mono.ref.png diff --git a/cairo/test/reference/paint-repeat.base.argb32.ref.png b/3rd-party/cairo/test/reference/paint-repeat.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/paint-repeat.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/paint-repeat.base.argb32.ref.png diff --git a/cairo/test/reference/paint-repeat.base.rgb24.ref.png b/3rd-party/cairo/test/reference/paint-repeat.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/paint-repeat.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/paint-repeat.base.rgb24.ref.png diff --git a/cairo/test/reference/paint-repeat.ref.png b/3rd-party/cairo/test/reference/paint-repeat.ref.png similarity index 100% rename from cairo/test/reference/paint-repeat.ref.png rename to 3rd-party/cairo/test/reference/paint-repeat.ref.png diff --git a/cairo/test/reference/paint-source-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/paint-source-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/paint-source-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/paint-source-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/paint-source-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/paint-source-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/paint-source-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/paint-source-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/paint-source-alpha.image16.ref.png b/3rd-party/cairo/test/reference/paint-source-alpha.image16.ref.png similarity index 100% rename from cairo/test/reference/paint-source-alpha.image16.ref.png rename to 3rd-party/cairo/test/reference/paint-source-alpha.image16.ref.png diff --git a/cairo/test/reference/paint-source-alpha.ref.png b/3rd-party/cairo/test/reference/paint-source-alpha.ref.png similarity index 100% rename from cairo/test/reference/paint-source-alpha.ref.png rename to 3rd-party/cairo/test/reference/paint-source-alpha.ref.png diff --git a/cairo/test/reference/paint-source-alpha.svg.ref.png b/3rd-party/cairo/test/reference/paint-source-alpha.svg.ref.png similarity index 100% rename from cairo/test/reference/paint-source-alpha.svg.ref.png rename to 3rd-party/cairo/test/reference/paint-source-alpha.svg.ref.png diff --git a/cairo/test/reference/paint-with-alpha-clip-mask.argb32.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-clip-mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.argb32.ref.png diff --git a/cairo/test/reference/paint-with-alpha-clip-mask.base.argb32.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-clip-mask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.base.argb32.ref.png diff --git a/cairo/test/reference/paint-with-alpha-clip-mask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-clip-mask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.base.rgb24.ref.png diff --git a/cairo/test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png diff --git a/cairo/test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png diff --git a/cairo/test/reference/paint-with-alpha-clip-mask.rgb24.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-clip-mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.rgb24.ref.png diff --git a/cairo/test/reference/paint-with-alpha-clip-mask.traps.argb32.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-clip-mask.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.traps.argb32.ref.png diff --git a/cairo/test/reference/paint-with-alpha-clip-mask.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-clip-mask.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.traps.rgb24.ref.png diff --git a/cairo/test/reference/paint-with-alpha-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-clip.base.argb32.ref.png diff --git a/cairo/test/reference/paint-with-alpha-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/paint-with-alpha-clip.mask.argb32.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-clip.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-clip.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-clip.mask.argb32.ref.png diff --git a/cairo/test/reference/paint-with-alpha-clip.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-clip.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-clip.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-clip.mask.rgb24.ref.png diff --git a/cairo/test/reference/paint-with-alpha-clip.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-clip.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-clip.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-clip.ref.png diff --git a/cairo/test/reference/paint-with-alpha-clip.traps.argb32.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-clip.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-clip.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-clip.traps.argb32.ref.png diff --git a/cairo/test/reference/paint-with-alpha-clip.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-clip.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-clip.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-clip.traps.rgb24.ref.png diff --git a/cairo/test/reference/paint-with-alpha-solid-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-solid-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.base.argb32.ref.png diff --git a/cairo/test/reference/paint-with-alpha-solid-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-solid-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png diff --git a/cairo/test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png diff --git a/cairo/test/reference/paint-with-alpha-solid-clip.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-solid-clip.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.ref.png diff --git a/cairo/test/reference/paint-with-alpha-solid-clip.traps.argb32.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-solid-clip.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.traps.argb32.ref.png diff --git a/cairo/test/reference/paint-with-alpha-solid-clip.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha-solid-clip.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.traps.rgb24.ref.png diff --git a/cairo/test/reference/paint-with-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/paint-with-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/paint-with-alpha.image16.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha.image16.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha.image16.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha.image16.ref.png diff --git a/cairo/test/reference/paint-with-alpha.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha.ref.png diff --git a/cairo/test/reference/paint-with-alpha.svg.ref.png b/3rd-party/cairo/test/reference/paint-with-alpha.svg.ref.png similarity index 100% rename from cairo/test/reference/paint-with-alpha.svg.ref.png rename to 3rd-party/cairo/test/reference/paint-with-alpha.svg.ref.png diff --git a/cairo/test/reference/paint.base.argb32.ref.png b/3rd-party/cairo/test/reference/paint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/paint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/paint.base.argb32.ref.png diff --git a/cairo/test/reference/paint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/paint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/paint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/paint.base.rgb24.ref.png diff --git a/cairo/test/reference/paint.ref.png b/3rd-party/cairo/test/reference/paint.ref.png similarity index 100% rename from cairo/test/reference/paint.ref.png rename to 3rd-party/cairo/test/reference/paint.ref.png diff --git a/cairo/test/reference/partial-clip-text-bottom.argb32.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-bottom.argb32.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-bottom.argb32.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-bottom.argb32.ref.png diff --git a/cairo/test/reference/partial-clip-text-bottom.base.argb32.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-bottom.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-bottom.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-bottom.base.argb32.ref.png diff --git a/cairo/test/reference/partial-clip-text-bottom.base.rgb24.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-bottom.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-bottom.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-bottom.base.rgb24.ref.png diff --git a/cairo/test/reference/partial-clip-text-bottom.rgb24.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-bottom.rgb24.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-bottom.rgb24.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-bottom.rgb24.ref.png diff --git a/cairo/test/reference/partial-clip-text-left.argb32.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-left.argb32.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-left.argb32.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-left.argb32.ref.png diff --git a/cairo/test/reference/partial-clip-text-left.base.argb32.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-left.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-left.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-left.base.argb32.ref.png diff --git a/cairo/test/reference/partial-clip-text-left.base.rgb24.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-left.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-left.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-left.base.rgb24.ref.png diff --git a/cairo/test/reference/partial-clip-text-left.rgb24.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-left.rgb24.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-left.rgb24.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-left.rgb24.ref.png diff --git a/cairo/test/reference/partial-clip-text-right.argb32.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-right.argb32.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-right.argb32.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-right.argb32.ref.png diff --git a/cairo/test/reference/partial-clip-text-right.base.argb32.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-right.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-right.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-right.base.argb32.ref.png diff --git a/cairo/test/reference/partial-clip-text-right.base.rgb24.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-right.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-right.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-right.base.rgb24.ref.png diff --git a/cairo/test/reference/partial-clip-text-right.rgb24.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-right.rgb24.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-right.rgb24.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-right.rgb24.ref.png diff --git a/cairo/test/reference/partial-clip-text-right.traps.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-right.traps.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-right.traps.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-right.traps.ref.png diff --git a/cairo/test/reference/partial-clip-text-top.argb32.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-top.argb32.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-top.argb32.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-top.argb32.ref.png diff --git a/cairo/test/reference/partial-clip-text-top.base.argb32.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-top.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-top.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-top.base.argb32.ref.png diff --git a/cairo/test/reference/partial-clip-text-top.base.rgb24.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-top.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-top.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-top.base.rgb24.ref.png diff --git a/cairo/test/reference/partial-clip-text-top.ps.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-top.ps.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-top.ps.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-top.ps.ref.png diff --git a/cairo/test/reference/partial-clip-text-top.quartz.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-top.quartz.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-top.quartz.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-top.quartz.ref.png diff --git a/cairo/test/reference/partial-clip-text-top.rgb24.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-top.rgb24.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-top.rgb24.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-top.rgb24.ref.png diff --git a/cairo/test/reference/partial-clip-text-top.svg.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-top.svg.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-top.svg.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-top.svg.ref.png diff --git a/cairo/test/reference/partial-clip-text-top.traps.ref.png b/3rd-party/cairo/test/reference/partial-clip-text-top.traps.ref.png similarity index 100% rename from cairo/test/reference/partial-clip-text-top.traps.ref.png rename to 3rd-party/cairo/test/reference/partial-clip-text-top.traps.ref.png diff --git a/cairo/test/reference/partial-coverage-half-reference.base.argb32.ref.png b/3rd-party/cairo/test/reference/partial-coverage-half-reference.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-half-reference.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-half-reference.base.argb32.ref.png diff --git a/cairo/test/reference/partial-coverage-half-reference.base.rgb24.ref.png b/3rd-party/cairo/test/reference/partial-coverage-half-reference.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-half-reference.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-half-reference.base.rgb24.ref.png diff --git a/cairo/test/reference/partial-coverage-half-reference.ref.png b/3rd-party/cairo/test/reference/partial-coverage-half-reference.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-half-reference.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-half-reference.ref.png diff --git a/cairo/test/reference/partial-coverage-half-triangles.ref.png b/3rd-party/cairo/test/reference/partial-coverage-half-triangles.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-half-triangles.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-half-triangles.ref.png diff --git a/cairo/test/reference/partial-coverage-intersecting-quads.ref.png b/3rd-party/cairo/test/reference/partial-coverage-intersecting-quads.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-intersecting-quads.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-intersecting-quads.ref.png diff --git a/cairo/test/reference/partial-coverage-intersecting-quads.xfail.png b/3rd-party/cairo/test/reference/partial-coverage-intersecting-quads.xfail.png similarity index 100% rename from cairo/test/reference/partial-coverage-intersecting-quads.xfail.png rename to 3rd-party/cairo/test/reference/partial-coverage-intersecting-quads.xfail.png diff --git a/cairo/test/reference/partial-coverage-intersecting-triangles.ref.png b/3rd-party/cairo/test/reference/partial-coverage-intersecting-triangles.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-intersecting-triangles.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-intersecting-triangles.ref.png diff --git a/cairo/test/reference/partial-coverage-overlap-half-triangles-eo.ref.png b/3rd-party/cairo/test/reference/partial-coverage-overlap-half-triangles-eo.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-overlap-half-triangles-eo.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-overlap-half-triangles-eo.ref.png diff --git a/cairo/test/reference/partial-coverage-overlap-half-triangles.ref.png b/3rd-party/cairo/test/reference/partial-coverage-overlap-half-triangles.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-overlap-half-triangles.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-overlap-half-triangles.ref.png diff --git a/cairo/test/reference/partial-coverage-overlap-three-quarter-triangles.ref.png b/3rd-party/cairo/test/reference/partial-coverage-overlap-three-quarter-triangles.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-overlap-three-quarter-triangles.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-overlap-three-quarter-triangles.ref.png diff --git a/cairo/test/reference/partial-coverage-rectangles.ref.png b/3rd-party/cairo/test/reference/partial-coverage-rectangles.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-rectangles.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-rectangles.ref.png diff --git a/cairo/test/reference/partial-coverage-reference.base.argb32.ref.png b/3rd-party/cairo/test/reference/partial-coverage-reference.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-reference.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-reference.base.argb32.ref.png diff --git a/cairo/test/reference/partial-coverage-reference.base.rgb24.ref.png b/3rd-party/cairo/test/reference/partial-coverage-reference.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-reference.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-reference.base.rgb24.ref.png diff --git a/cairo/test/reference/partial-coverage-reference.ref.png b/3rd-party/cairo/test/reference/partial-coverage-reference.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-reference.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-reference.ref.png diff --git a/cairo/test/reference/partial-coverage-three-quarter-reference.base.argb32.ref.png b/3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-three-quarter-reference.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.base.argb32.ref.png diff --git a/cairo/test/reference/partial-coverage-three-quarter-reference.base.rgb24.ref.png b/3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-three-quarter-reference.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.base.rgb24.ref.png diff --git a/cairo/test/reference/partial-coverage-three-quarter-reference.ref.png b/3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-three-quarter-reference.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.ref.png diff --git a/cairo/test/reference/partial-coverage-triangles.ref.png b/3rd-party/cairo/test/reference/partial-coverage-triangles.ref.png similarity index 100% rename from cairo/test/reference/partial-coverage-triangles.ref.png rename to 3rd-party/cairo/test/reference/partial-coverage-triangles.ref.png diff --git a/cairo/test/reference/pass-through.argb32.ref.png b/3rd-party/cairo/test/reference/pass-through.argb32.ref.png similarity index 100% rename from cairo/test/reference/pass-through.argb32.ref.png rename to 3rd-party/cairo/test/reference/pass-through.argb32.ref.png diff --git a/cairo/test/reference/pass-through.base.argb32.ref.png b/3rd-party/cairo/test/reference/pass-through.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/pass-through.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/pass-through.base.argb32.ref.png diff --git a/cairo/test/reference/pass-through.base.rgb24.ref.png b/3rd-party/cairo/test/reference/pass-through.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/pass-through.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/pass-through.base.rgb24.ref.png diff --git a/cairo/test/reference/pass-through.rgb24.ref.png b/3rd-party/cairo/test/reference/pass-through.rgb24.ref.png similarity index 100% rename from cairo/test/reference/pass-through.rgb24.ref.png rename to 3rd-party/cairo/test/reference/pass-through.rgb24.ref.png diff --git a/cairo/test/reference/path-append.argb32.ref.png b/3rd-party/cairo/test/reference/path-append.argb32.ref.png similarity index 100% rename from cairo/test/reference/path-append.argb32.ref.png rename to 3rd-party/cairo/test/reference/path-append.argb32.ref.png diff --git a/cairo/test/reference/path-append.base.argb32.ref.png b/3rd-party/cairo/test/reference/path-append.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/path-append.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/path-append.base.argb32.ref.png diff --git a/cairo/test/reference/path-append.base.rgb24.ref.png b/3rd-party/cairo/test/reference/path-append.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/path-append.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/path-append.base.rgb24.ref.png diff --git a/cairo/test/reference/path-append.image16.ref.png b/3rd-party/cairo/test/reference/path-append.image16.ref.png similarity index 100% rename from cairo/test/reference/path-append.image16.ref.png rename to 3rd-party/cairo/test/reference/path-append.image16.ref.png diff --git a/cairo/test/reference/path-append.ps.ref.png b/3rd-party/cairo/test/reference/path-append.ps.ref.png similarity index 100% rename from cairo/test/reference/path-append.ps.ref.png rename to 3rd-party/cairo/test/reference/path-append.ps.ref.png diff --git a/cairo/test/reference/path-append.quartz.ref.png b/3rd-party/cairo/test/reference/path-append.quartz.ref.png similarity index 100% rename from cairo/test/reference/path-append.quartz.ref.png rename to 3rd-party/cairo/test/reference/path-append.quartz.ref.png diff --git a/cairo/test/reference/path-append.rgb24.ref.png b/3rd-party/cairo/test/reference/path-append.rgb24.ref.png similarity index 100% rename from cairo/test/reference/path-append.rgb24.ref.png rename to 3rd-party/cairo/test/reference/path-append.rgb24.ref.png diff --git a/cairo/test/reference/path-append.test-fallback.ref.png b/3rd-party/cairo/test/reference/path-append.test-fallback.ref.png similarity index 100% rename from cairo/test/reference/path-append.test-fallback.ref.png rename to 3rd-party/cairo/test/reference/path-append.test-fallback.ref.png diff --git a/cairo/test/reference/path-append.traps.argb32.ref.png b/3rd-party/cairo/test/reference/path-append.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/path-append.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/path-append.traps.argb32.ref.png diff --git a/cairo/test/reference/path-append.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/path-append.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/path-append.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/path-append.traps.rgb24.ref.png diff --git a/cairo/test/reference/path-append.xlib-fallback.ref.png b/3rd-party/cairo/test/reference/path-append.xlib-fallback.ref.png similarity index 100% rename from cairo/test/reference/path-append.xlib-fallback.ref.png rename to 3rd-party/cairo/test/reference/path-append.xlib-fallback.ref.png diff --git a/cairo/test/reference/path-stroke-twice.argb32.ref.png b/3rd-party/cairo/test/reference/path-stroke-twice.argb32.ref.png similarity index 100% rename from cairo/test/reference/path-stroke-twice.argb32.ref.png rename to 3rd-party/cairo/test/reference/path-stroke-twice.argb32.ref.png diff --git a/cairo/test/reference/path-stroke-twice.base.argb32.ref.png b/3rd-party/cairo/test/reference/path-stroke-twice.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/path-stroke-twice.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/path-stroke-twice.base.argb32.ref.png diff --git a/cairo/test/reference/path-stroke-twice.base.rgb24.ref.png b/3rd-party/cairo/test/reference/path-stroke-twice.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/path-stroke-twice.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/path-stroke-twice.base.rgb24.ref.png diff --git a/cairo/test/reference/path-stroke-twice.image16.ref.png b/3rd-party/cairo/test/reference/path-stroke-twice.image16.ref.png similarity index 100% rename from cairo/test/reference/path-stroke-twice.image16.ref.png rename to 3rd-party/cairo/test/reference/path-stroke-twice.image16.ref.png diff --git a/cairo/test/reference/path-stroke-twice.ps.ref.png b/3rd-party/cairo/test/reference/path-stroke-twice.ps.ref.png similarity index 100% rename from cairo/test/reference/path-stroke-twice.ps.ref.png rename to 3rd-party/cairo/test/reference/path-stroke-twice.ps.ref.png diff --git a/cairo/test/reference/path-stroke-twice.rgb24.ref.png b/3rd-party/cairo/test/reference/path-stroke-twice.rgb24.ref.png similarity index 100% rename from cairo/test/reference/path-stroke-twice.rgb24.ref.png rename to 3rd-party/cairo/test/reference/path-stroke-twice.rgb24.ref.png diff --git a/cairo/test/reference/path-stroke-twice.traps.argb32.ref.png b/3rd-party/cairo/test/reference/path-stroke-twice.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/path-stroke-twice.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/path-stroke-twice.traps.argb32.ref.png diff --git a/cairo/test/reference/path-stroke-twice.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/path-stroke-twice.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/path-stroke-twice.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/path-stroke-twice.traps.rgb24.ref.png diff --git a/cairo/test/reference/pattern-getters.base.argb32.ref.png b/3rd-party/cairo/test/reference/pattern-getters.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/pattern-getters.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/pattern-getters.base.argb32.ref.png diff --git a/cairo/test/reference/pattern-getters.base.rgb24.ref.png b/3rd-party/cairo/test/reference/pattern-getters.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/pattern-getters.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/pattern-getters.base.rgb24.ref.png diff --git a/cairo/test/reference/pattern-getters.ref.png b/3rd-party/cairo/test/reference/pattern-getters.ref.png similarity index 100% rename from cairo/test/reference/pattern-getters.ref.png rename to 3rd-party/cairo/test/reference/pattern-getters.ref.png diff --git a/cairo/test/reference/pdf-isolated-group.base.argb32.ref.png b/3rd-party/cairo/test/reference/pdf-isolated-group.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/pdf-isolated-group.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/pdf-isolated-group.base.argb32.ref.png diff --git a/cairo/test/reference/pdf-isolated-group.base.rgb24.ref.png b/3rd-party/cairo/test/reference/pdf-isolated-group.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/pdf-isolated-group.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/pdf-isolated-group.base.rgb24.ref.png diff --git a/cairo/test/reference/pdf-isolated-group.ref.png b/3rd-party/cairo/test/reference/pdf-isolated-group.ref.png similarity index 100% rename from cairo/test/reference/pdf-isolated-group.ref.png rename to 3rd-party/cairo/test/reference/pdf-isolated-group.ref.png diff --git a/cairo/test/reference/pdf-surface-source.argb32.ref.png b/3rd-party/cairo/test/reference/pdf-surface-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/pdf-surface-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/pdf-surface-source.argb32.ref.png diff --git a/cairo/test/reference/pdf-surface-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/pdf-surface-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/pdf-surface-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/pdf-surface-source.base.argb32.ref.png diff --git a/cairo/test/reference/pdf-surface-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/pdf-surface-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/pdf-surface-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/pdf-surface-source.base.rgb24.ref.png diff --git a/cairo/test/reference/pdf-surface-source.image16.ref.png b/3rd-party/cairo/test/reference/pdf-surface-source.image16.ref.png similarity index 100% rename from cairo/test/reference/pdf-surface-source.image16.ref.png rename to 3rd-party/cairo/test/reference/pdf-surface-source.image16.ref.png diff --git a/cairo/test/reference/pdf-surface-source.rgb24.ref.png b/3rd-party/cairo/test/reference/pdf-surface-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/pdf-surface-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/pdf-surface-source.rgb24.ref.png diff --git a/cairo/test/reference/pdf-surface-source.svg12.argb32.xfail.png b/3rd-party/cairo/test/reference/pdf-surface-source.svg12.argb32.xfail.png similarity index 100% rename from cairo/test/reference/pdf-surface-source.svg12.argb32.xfail.png rename to 3rd-party/cairo/test/reference/pdf-surface-source.svg12.argb32.xfail.png diff --git a/cairo/test/reference/pdf-surface-source.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/pdf-surface-source.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/pdf-surface-source.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/pdf-surface-source.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/pixman-rotate.argb32.ref.png b/3rd-party/cairo/test/reference/pixman-rotate.argb32.ref.png similarity index 100% rename from cairo/test/reference/pixman-rotate.argb32.ref.png rename to 3rd-party/cairo/test/reference/pixman-rotate.argb32.ref.png diff --git a/cairo/test/reference/pixman-rotate.base.argb32.ref.png b/3rd-party/cairo/test/reference/pixman-rotate.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/pixman-rotate.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/pixman-rotate.base.argb32.ref.png diff --git a/cairo/test/reference/pixman-rotate.base.rgb24.ref.png b/3rd-party/cairo/test/reference/pixman-rotate.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/pixman-rotate.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/pixman-rotate.base.rgb24.ref.png diff --git a/cairo/test/reference/pixman-rotate.ps.argb32.ref.png b/3rd-party/cairo/test/reference/pixman-rotate.ps.argb32.ref.png similarity index 100% rename from cairo/test/reference/pixman-rotate.ps.argb32.ref.png rename to 3rd-party/cairo/test/reference/pixman-rotate.ps.argb32.ref.png diff --git a/cairo/test/reference/pixman-rotate.rgb24.ref.png b/3rd-party/cairo/test/reference/pixman-rotate.rgb24.ref.png similarity index 100% rename from cairo/test/reference/pixman-rotate.rgb24.ref.png rename to 3rd-party/cairo/test/reference/pixman-rotate.rgb24.ref.png diff --git a/cairo/test/reference/ps-eps.ref.png b/3rd-party/cairo/test/reference/ps-eps.ref.png similarity index 100% rename from cairo/test/reference/ps-eps.ref.png rename to 3rd-party/cairo/test/reference/ps-eps.ref.png diff --git a/cairo/test/reference/ps-surface-source.argb32.ref.png b/3rd-party/cairo/test/reference/ps-surface-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/ps-surface-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/ps-surface-source.argb32.ref.png diff --git a/cairo/test/reference/ps-surface-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/ps-surface-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/ps-surface-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/ps-surface-source.base.argb32.ref.png diff --git a/cairo/test/reference/ps-surface-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/ps-surface-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/ps-surface-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/ps-surface-source.base.rgb24.ref.png diff --git a/cairo/test/reference/ps-surface-source.image16.ref.png b/3rd-party/cairo/test/reference/ps-surface-source.image16.ref.png similarity index 100% rename from cairo/test/reference/ps-surface-source.image16.ref.png rename to 3rd-party/cairo/test/reference/ps-surface-source.image16.ref.png diff --git a/cairo/test/reference/ps-surface-source.rgb24.ref.png b/3rd-party/cairo/test/reference/ps-surface-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/ps-surface-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/ps-surface-source.rgb24.ref.png diff --git a/cairo/test/reference/ps-surface-source.svg12.argb32.xfail.png b/3rd-party/cairo/test/reference/ps-surface-source.svg12.argb32.xfail.png similarity index 100% rename from cairo/test/reference/ps-surface-source.svg12.argb32.xfail.png rename to 3rd-party/cairo/test/reference/ps-surface-source.svg12.argb32.xfail.png diff --git a/cairo/test/reference/ps-surface-source.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/ps-surface-source.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/ps-surface-source.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/ps-surface-source.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/pthread-same-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/pthread-same-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/pthread-same-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/pthread-same-source.base.argb32.ref.png diff --git a/cairo/test/reference/pthread-same-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/pthread-same-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/pthread-same-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/pthread-same-source.base.rgb24.ref.png diff --git a/cairo/test/reference/pthread-same-source.image16.ref.png b/3rd-party/cairo/test/reference/pthread-same-source.image16.ref.png similarity index 100% rename from cairo/test/reference/pthread-same-source.image16.ref.png rename to 3rd-party/cairo/test/reference/pthread-same-source.image16.ref.png diff --git a/cairo/test/reference/pthread-same-source.quartz.xfail.png b/3rd-party/cairo/test/reference/pthread-same-source.quartz.xfail.png similarity index 100% rename from cairo/test/reference/pthread-same-source.quartz.xfail.png rename to 3rd-party/cairo/test/reference/pthread-same-source.quartz.xfail.png diff --git a/cairo/test/reference/pthread-same-source.ref.png b/3rd-party/cairo/test/reference/pthread-same-source.ref.png similarity index 100% rename from cairo/test/reference/pthread-same-source.ref.png rename to 3rd-party/cairo/test/reference/pthread-same-source.ref.png diff --git a/cairo/test/reference/pthread-show-text.argb32.ref.png b/3rd-party/cairo/test/reference/pthread-show-text.argb32.ref.png similarity index 100% rename from cairo/test/reference/pthread-show-text.argb32.ref.png rename to 3rd-party/cairo/test/reference/pthread-show-text.argb32.ref.png diff --git a/cairo/test/reference/pthread-show-text.base.argb32.ref.png b/3rd-party/cairo/test/reference/pthread-show-text.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/pthread-show-text.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/pthread-show-text.base.argb32.ref.png diff --git a/cairo/test/reference/pthread-show-text.base.rgb24.ref.png b/3rd-party/cairo/test/reference/pthread-show-text.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/pthread-show-text.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/pthread-show-text.base.rgb24.ref.png diff --git a/cairo/test/reference/pthread-show-text.image16.ref.png b/3rd-party/cairo/test/reference/pthread-show-text.image16.ref.png similarity index 100% rename from cairo/test/reference/pthread-show-text.image16.ref.png rename to 3rd-party/cairo/test/reference/pthread-show-text.image16.ref.png diff --git a/cairo/test/reference/pthread-show-text.pdf.ref.png b/3rd-party/cairo/test/reference/pthread-show-text.pdf.ref.png similarity index 100% rename from cairo/test/reference/pthread-show-text.pdf.ref.png rename to 3rd-party/cairo/test/reference/pthread-show-text.pdf.ref.png diff --git a/cairo/test/reference/pthread-show-text.ps.ref.png b/3rd-party/cairo/test/reference/pthread-show-text.ps.ref.png similarity index 100% rename from cairo/test/reference/pthread-show-text.ps.ref.png rename to 3rd-party/cairo/test/reference/pthread-show-text.ps.ref.png diff --git a/cairo/test/reference/pthread-show-text.quartz.ref.png b/3rd-party/cairo/test/reference/pthread-show-text.quartz.ref.png similarity index 100% rename from cairo/test/reference/pthread-show-text.quartz.ref.png rename to 3rd-party/cairo/test/reference/pthread-show-text.quartz.ref.png diff --git a/cairo/test/reference/pthread-show-text.rgb24.ref.png b/3rd-party/cairo/test/reference/pthread-show-text.rgb24.ref.png similarity index 100% rename from cairo/test/reference/pthread-show-text.rgb24.ref.png rename to 3rd-party/cairo/test/reference/pthread-show-text.rgb24.ref.png diff --git a/cairo/test/reference/pthread-show-text.traps.ref.png b/3rd-party/cairo/test/reference/pthread-show-text.traps.ref.png similarity index 100% rename from cairo/test/reference/pthread-show-text.traps.ref.png rename to 3rd-party/cairo/test/reference/pthread-show-text.traps.ref.png diff --git a/cairo/test/reference/pthread-show-text.xlib-fallback.ref.png b/3rd-party/cairo/test/reference/pthread-show-text.xlib-fallback.ref.png similarity index 100% rename from cairo/test/reference/pthread-show-text.xlib-fallback.ref.png rename to 3rd-party/cairo/test/reference/pthread-show-text.xlib-fallback.ref.png diff --git a/cairo/test/reference/pthread-similar.base.argb32.ref.png b/3rd-party/cairo/test/reference/pthread-similar.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/pthread-similar.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/pthread-similar.base.argb32.ref.png diff --git a/cairo/test/reference/pthread-similar.base.rgb24.ref.png b/3rd-party/cairo/test/reference/pthread-similar.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/pthread-similar.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/pthread-similar.base.rgb24.ref.png diff --git a/cairo/test/reference/pthread-similar.ref.png b/3rd-party/cairo/test/reference/pthread-similar.ref.png similarity index 100% rename from cairo/test/reference/pthread-similar.ref.png rename to 3rd-party/cairo/test/reference/pthread-similar.ref.png diff --git a/cairo/test/reference/push-group-color.argb32.ref.png b/3rd-party/cairo/test/reference/push-group-color.argb32.ref.png similarity index 100% rename from cairo/test/reference/push-group-color.argb32.ref.png rename to 3rd-party/cairo/test/reference/push-group-color.argb32.ref.png diff --git a/cairo/test/reference/push-group-color.base.argb32.ref.png b/3rd-party/cairo/test/reference/push-group-color.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/push-group-color.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/push-group-color.base.argb32.ref.png diff --git a/cairo/test/reference/push-group-color.base.rgb24.ref.png b/3rd-party/cairo/test/reference/push-group-color.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/push-group-color.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/push-group-color.base.rgb24.ref.png diff --git a/cairo/test/reference/push-group-color.image16.ref.png b/3rd-party/cairo/test/reference/push-group-color.image16.ref.png similarity index 100% rename from cairo/test/reference/push-group-color.image16.ref.png rename to 3rd-party/cairo/test/reference/push-group-color.image16.ref.png diff --git a/cairo/test/reference/push-group-color.ps2.ref.png b/3rd-party/cairo/test/reference/push-group-color.ps2.ref.png similarity index 100% rename from cairo/test/reference/push-group-color.ps2.ref.png rename to 3rd-party/cairo/test/reference/push-group-color.ps2.ref.png diff --git a/cairo/test/reference/push-group-color.ps3.ref.png b/3rd-party/cairo/test/reference/push-group-color.ps3.ref.png similarity index 100% rename from cairo/test/reference/push-group-color.ps3.ref.png rename to 3rd-party/cairo/test/reference/push-group-color.ps3.ref.png diff --git a/cairo/test/reference/push-group-color.quartz.ref.png b/3rd-party/cairo/test/reference/push-group-color.quartz.ref.png similarity index 100% rename from cairo/test/reference/push-group-color.quartz.ref.png rename to 3rd-party/cairo/test/reference/push-group-color.quartz.ref.png diff --git a/cairo/test/reference/push-group-color.rgb24.ref.png b/3rd-party/cairo/test/reference/push-group-color.rgb24.ref.png similarity index 100% rename from cairo/test/reference/push-group-color.rgb24.ref.png rename to 3rd-party/cairo/test/reference/push-group-color.rgb24.ref.png diff --git a/cairo/test/reference/push-group-color.traps.argb32.ref.png b/3rd-party/cairo/test/reference/push-group-color.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/push-group-color.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/push-group-color.traps.argb32.ref.png diff --git a/cairo/test/reference/push-group-color.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/push-group-color.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/push-group-color.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/push-group-color.traps.rgb24.ref.png diff --git a/cairo/test/reference/push-group-path-offset.base.argb32.ref.png b/3rd-party/cairo/test/reference/push-group-path-offset.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/push-group-path-offset.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/push-group-path-offset.base.argb32.ref.png diff --git a/cairo/test/reference/push-group-path-offset.base.rgb24.ref.png b/3rd-party/cairo/test/reference/push-group-path-offset.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/push-group-path-offset.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/push-group-path-offset.base.rgb24.ref.png diff --git a/cairo/test/reference/push-group-path-offset.ref.png b/3rd-party/cairo/test/reference/push-group-path-offset.ref.png similarity index 100% rename from cairo/test/reference/push-group-path-offset.ref.png rename to 3rd-party/cairo/test/reference/push-group-path-offset.ref.png diff --git a/cairo/test/reference/push-group.argb32.ref.png b/3rd-party/cairo/test/reference/push-group.argb32.ref.png similarity index 100% rename from cairo/test/reference/push-group.argb32.ref.png rename to 3rd-party/cairo/test/reference/push-group.argb32.ref.png diff --git a/cairo/test/reference/push-group.base.argb32.ref.png b/3rd-party/cairo/test/reference/push-group.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/push-group.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/push-group.base.argb32.ref.png diff --git a/cairo/test/reference/push-group.base.rgb24.ref.png b/3rd-party/cairo/test/reference/push-group.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/push-group.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/push-group.base.rgb24.ref.png diff --git a/cairo/test/reference/push-group.image16.ref.png b/3rd-party/cairo/test/reference/push-group.image16.ref.png similarity index 100% rename from cairo/test/reference/push-group.image16.ref.png rename to 3rd-party/cairo/test/reference/push-group.image16.ref.png diff --git a/cairo/test/reference/push-group.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/push-group.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/push-group.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/push-group.quartz.argb32.ref.png diff --git a/cairo/test/reference/push-group.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/push-group.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/push-group.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/push-group.quartz.rgb24.ref.png diff --git a/cairo/test/reference/push-group.rgb24.ref.png b/3rd-party/cairo/test/reference/push-group.rgb24.ref.png similarity index 100% rename from cairo/test/reference/push-group.rgb24.ref.png rename to 3rd-party/cairo/test/reference/push-group.rgb24.ref.png diff --git a/cairo/test/reference/push-group.traps.argb32.ref.png b/3rd-party/cairo/test/reference/push-group.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/push-group.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/push-group.traps.argb32.ref.png diff --git a/cairo/test/reference/push-group.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/push-group.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/push-group.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/push-group.traps.rgb24.ref.png diff --git a/cairo/test/reference/quartz-surface-source.argb32.ref.png b/3rd-party/cairo/test/reference/quartz-surface-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/quartz-surface-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/quartz-surface-source.argb32.ref.png diff --git a/cairo/test/reference/quartz-surface-source.ps2.ref.png b/3rd-party/cairo/test/reference/quartz-surface-source.ps2.ref.png similarity index 100% rename from cairo/test/reference/quartz-surface-source.ps2.ref.png rename to 3rd-party/cairo/test/reference/quartz-surface-source.ps2.ref.png diff --git a/cairo/test/reference/quartz-surface-source.ps3.ref.png b/3rd-party/cairo/test/reference/quartz-surface-source.ps3.ref.png similarity index 100% rename from cairo/test/reference/quartz-surface-source.ps3.ref.png rename to 3rd-party/cairo/test/reference/quartz-surface-source.ps3.ref.png diff --git a/cairo/test/reference/quartz-surface-source.rgb24.ref.png b/3rd-party/cairo/test/reference/quartz-surface-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/quartz-surface-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/quartz-surface-source.rgb24.ref.png diff --git a/cairo/test/reference/radial-gradient-extend.base.argb32.ref.png b/3rd-party/cairo/test/reference/radial-gradient-extend.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-extend.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-extend.base.argb32.ref.png diff --git a/cairo/test/reference/radial-gradient-extend.base.rgb24.ref.png b/3rd-party/cairo/test/reference/radial-gradient-extend.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-extend.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-extend.base.rgb24.ref.png diff --git a/cairo/test/reference/radial-gradient-extend.mask.argb32.ref.png b/3rd-party/cairo/test/reference/radial-gradient-extend.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-extend.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-extend.mask.argb32.ref.png diff --git a/cairo/test/reference/radial-gradient-extend.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/radial-gradient-extend.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-extend.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-extend.mask.rgb24.ref.png diff --git a/cairo/test/reference/radial-gradient-extend.ps3.ref.png b/3rd-party/cairo/test/reference/radial-gradient-extend.ps3.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-extend.ps3.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-extend.ps3.ref.png diff --git a/cairo/test/reference/radial-gradient-extend.ref.png b/3rd-party/cairo/test/reference/radial-gradient-extend.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-extend.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-extend.ref.png diff --git a/cairo/test/reference/radial-gradient-extend.traps.argb32.ref.png b/3rd-party/cairo/test/reference/radial-gradient-extend.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-extend.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-extend.traps.argb32.ref.png diff --git a/cairo/test/reference/radial-gradient-extend.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/radial-gradient-extend.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-extend.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-extend.traps.rgb24.ref.png diff --git a/cairo/test/reference/radial-gradient-mask-source.argb32.ref.png b/3rd-party/cairo/test/reference/radial-gradient-mask-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-mask-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-mask-source.argb32.ref.png diff --git a/cairo/test/reference/radial-gradient-mask-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/radial-gradient-mask-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-mask-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-mask-source.base.argb32.ref.png diff --git a/cairo/test/reference/radial-gradient-mask-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/radial-gradient-mask-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-mask-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-mask-source.base.rgb24.ref.png diff --git a/cairo/test/reference/radial-gradient-mask-source.image16.ref.png b/3rd-party/cairo/test/reference/radial-gradient-mask-source.image16.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-mask-source.image16.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-mask-source.image16.ref.png diff --git a/cairo/test/reference/radial-gradient-mask-source.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/radial-gradient-mask-source.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-mask-source.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-mask-source.mask.rgb24.ref.png diff --git a/cairo/test/reference/radial-gradient-mask-source.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/radial-gradient-mask-source.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-mask-source.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-mask-source.quartz.argb32.ref.png diff --git a/cairo/test/reference/radial-gradient-mask-source.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/radial-gradient-mask-source.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-mask-source.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-mask-source.quartz.rgb24.ref.png diff --git a/cairo/test/reference/radial-gradient-mask-source.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/radial-gradient-mask-source.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-mask-source.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-mask-source.traps.rgb24.ref.png diff --git a/cairo/test/reference/radial-gradient-mask.base.argb32.ref.png b/3rd-party/cairo/test/reference/radial-gradient-mask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-mask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-mask.base.argb32.ref.png diff --git a/cairo/test/reference/radial-gradient-mask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/radial-gradient-mask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-mask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-mask.base.rgb24.ref.png diff --git a/cairo/test/reference/radial-gradient-mask.image16.ref.png b/3rd-party/cairo/test/reference/radial-gradient-mask.image16.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-mask.image16.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-mask.image16.ref.png diff --git a/cairo/test/reference/radial-gradient-mask.quartz.ref.png b/3rd-party/cairo/test/reference/radial-gradient-mask.quartz.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-mask.quartz.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-mask.quartz.ref.png diff --git a/cairo/test/reference/radial-gradient-mask.ref.png b/3rd-party/cairo/test/reference/radial-gradient-mask.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-mask.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-mask.ref.png diff --git a/cairo/test/reference/radial-gradient-one-stop.base.argb32.ref.png b/3rd-party/cairo/test/reference/radial-gradient-one-stop.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-one-stop.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-one-stop.base.argb32.ref.png diff --git a/cairo/test/reference/radial-gradient-one-stop.base.rgb24.ref.png b/3rd-party/cairo/test/reference/radial-gradient-one-stop.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-one-stop.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-one-stop.base.rgb24.ref.png diff --git a/cairo/test/reference/radial-gradient-one-stop.quartz.ref.png b/3rd-party/cairo/test/reference/radial-gradient-one-stop.quartz.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-one-stop.quartz.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-one-stop.quartz.ref.png diff --git a/cairo/test/reference/radial-gradient-one-stop.ref.png b/3rd-party/cairo/test/reference/radial-gradient-one-stop.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-one-stop.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-one-stop.ref.png diff --git a/cairo/test/reference/radial-gradient-source.argb32.ref.png b/3rd-party/cairo/test/reference/radial-gradient-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-source.argb32.ref.png diff --git a/cairo/test/reference/radial-gradient-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/radial-gradient-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-source.base.argb32.ref.png diff --git a/cairo/test/reference/radial-gradient-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/radial-gradient-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-source.base.rgb24.ref.png diff --git a/cairo/test/reference/radial-gradient-source.image16.ref.png b/3rd-party/cairo/test/reference/radial-gradient-source.image16.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-source.image16.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-source.image16.ref.png diff --git a/cairo/test/reference/radial-gradient-source.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/radial-gradient-source.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-source.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-source.quartz.argb32.ref.png diff --git a/cairo/test/reference/radial-gradient-source.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/radial-gradient-source.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-source.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-source.quartz.rgb24.ref.png diff --git a/cairo/test/reference/radial-gradient-source.rgb24.ref.png b/3rd-party/cairo/test/reference/radial-gradient-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient-source.rgb24.ref.png diff --git a/cairo/test/reference/radial-gradient.base.argb32.ref.png b/3rd-party/cairo/test/reference/radial-gradient.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient.base.argb32.ref.png diff --git a/cairo/test/reference/radial-gradient.base.rgb24.ref.png b/3rd-party/cairo/test/reference/radial-gradient.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient.base.rgb24.ref.png diff --git a/cairo/test/reference/radial-gradient.image16.ref.png b/3rd-party/cairo/test/reference/radial-gradient.image16.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient.image16.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient.image16.ref.png diff --git a/cairo/test/reference/radial-gradient.quartz.ref.png b/3rd-party/cairo/test/reference/radial-gradient.quartz.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient.quartz.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient.quartz.ref.png diff --git a/cairo/test/reference/radial-gradient.ref.png b/3rd-party/cairo/test/reference/radial-gradient.ref.png similarity index 100% rename from cairo/test/reference/radial-gradient.ref.png rename to 3rd-party/cairo/test/reference/radial-gradient.ref.png diff --git a/cairo/test/reference/radial-outer-focus.base.argb32.ref.png b/3rd-party/cairo/test/reference/radial-outer-focus.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/radial-outer-focus.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/radial-outer-focus.base.argb32.ref.png diff --git a/cairo/test/reference/radial-outer-focus.base.rgb24.ref.png b/3rd-party/cairo/test/reference/radial-outer-focus.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/radial-outer-focus.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/radial-outer-focus.base.rgb24.ref.png diff --git a/cairo/test/reference/radial-outer-focus.mask.argb32.ref.png b/3rd-party/cairo/test/reference/radial-outer-focus.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/radial-outer-focus.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/radial-outer-focus.mask.argb32.ref.png diff --git a/cairo/test/reference/radial-outer-focus.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/radial-outer-focus.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/radial-outer-focus.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/radial-outer-focus.mask.rgb24.ref.png diff --git a/cairo/test/reference/radial-outer-focus.traps.argb32.ref.png b/3rd-party/cairo/test/reference/radial-outer-focus.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/radial-outer-focus.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/radial-outer-focus.traps.argb32.ref.png diff --git a/cairo/test/reference/radial-outer-focus.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/radial-outer-focus.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/radial-outer-focus.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/radial-outer-focus.traps.rgb24.ref.png diff --git a/cairo/test/reference/radial-outer-focus.xfail.png b/3rd-party/cairo/test/reference/radial-outer-focus.xfail.png similarity index 100% rename from cairo/test/reference/radial-outer-focus.xfail.png rename to 3rd-party/cairo/test/reference/radial-outer-focus.xfail.png diff --git a/cairo/test/reference/random-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/random-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/random-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/random-clip.base.argb32.ref.png diff --git a/cairo/test/reference/random-clip.base.argb32.xfail.png b/3rd-party/cairo/test/reference/random-clip.base.argb32.xfail.png similarity index 100% rename from cairo/test/reference/random-clip.base.argb32.xfail.png rename to 3rd-party/cairo/test/reference/random-clip.base.argb32.xfail.png diff --git a/cairo/test/reference/random-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/random-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/random-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/random-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/random-clip.base.rgb24.xfail.png b/3rd-party/cairo/test/reference/random-clip.base.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/random-clip.base.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/random-clip.base.rgb24.xfail.png diff --git a/cairo/test/reference/random-clip.mask.argb32.ref.png b/3rd-party/cairo/test/reference/random-clip.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/random-clip.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/random-clip.mask.argb32.ref.png diff --git a/cairo/test/reference/random-clip.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/random-clip.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/random-clip.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/random-clip.mask.rgb24.ref.png diff --git a/cairo/test/reference/random-clip.ref.png b/3rd-party/cairo/test/reference/random-clip.ref.png similarity index 100% rename from cairo/test/reference/random-clip.ref.png rename to 3rd-party/cairo/test/reference/random-clip.ref.png diff --git a/cairo/test/reference/random-clip.traps.argb32.ref.png b/3rd-party/cairo/test/reference/random-clip.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/random-clip.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/random-clip.traps.argb32.ref.png diff --git a/cairo/test/reference/random-clip.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/random-clip.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/random-clip.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/random-clip.traps.rgb24.ref.png diff --git a/cairo/test/reference/random-intersections-curves-eo.argb32.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-eo.argb32.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-eo.argb32.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-eo.argb32.ref.png diff --git a/cairo/test/reference/random-intersections-curves-eo.base.argb32.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-eo.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-eo.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-eo.base.argb32.ref.png diff --git a/cairo/test/reference/random-intersections-curves-eo.base.rgb24.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-eo.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-eo.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-eo.base.rgb24.ref.png diff --git a/cairo/test/reference/random-intersections-curves-eo.image16.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-eo.image16.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-eo.image16.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-eo.image16.ref.png diff --git a/cairo/test/reference/random-intersections-curves-eo.pdf.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-eo.pdf.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-eo.pdf.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-eo.pdf.ref.png diff --git a/cairo/test/reference/random-intersections-curves-eo.ps.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-eo.ps.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-eo.ps.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-eo.ps.ref.png diff --git a/cairo/test/reference/random-intersections-curves-eo.quartz.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-eo.quartz.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-eo.quartz.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-eo.quartz.ref.png diff --git a/cairo/test/reference/random-intersections-curves-eo.rgb24.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-eo.rgb24.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-eo.rgb24.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-eo.rgb24.ref.png diff --git a/cairo/test/reference/random-intersections-curves-eo.traps.argb32.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-eo.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-eo.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-eo.traps.argb32.ref.png diff --git a/cairo/test/reference/random-intersections-curves-eo.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-eo.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-eo.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-eo.traps.rgb24.ref.png diff --git a/cairo/test/reference/random-intersections-curves-eo.xlib-fallback.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-eo.xlib-fallback.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-eo.xlib-fallback.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-eo.xlib-fallback.ref.png diff --git a/cairo/test/reference/random-intersections-curves-nz.argb32.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-nz.argb32.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-nz.argb32.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-nz.argb32.ref.png diff --git a/cairo/test/reference/random-intersections-curves-nz.base.argb32.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-nz.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-nz.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-nz.base.argb32.ref.png diff --git a/cairo/test/reference/random-intersections-curves-nz.base.rgb24.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-nz.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-nz.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-nz.base.rgb24.ref.png diff --git a/cairo/test/reference/random-intersections-curves-nz.image16.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-nz.image16.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-nz.image16.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-nz.image16.ref.png diff --git a/cairo/test/reference/random-intersections-curves-nz.pdf.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-nz.pdf.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-nz.pdf.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-nz.pdf.ref.png diff --git a/cairo/test/reference/random-intersections-curves-nz.ps.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-nz.ps.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-nz.ps.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-nz.ps.ref.png diff --git a/cairo/test/reference/random-intersections-curves-nz.quartz.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-nz.quartz.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-nz.quartz.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-nz.quartz.ref.png diff --git a/cairo/test/reference/random-intersections-curves-nz.rgb24.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-nz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-nz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-nz.rgb24.ref.png diff --git a/cairo/test/reference/random-intersections-curves-nz.traps.argb32.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-nz.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-nz.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-nz.traps.argb32.ref.png diff --git a/cairo/test/reference/random-intersections-curves-nz.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-nz.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-nz.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-nz.traps.rgb24.ref.png diff --git a/cairo/test/reference/random-intersections-curves-nz.xlib-fallback.ref.png b/3rd-party/cairo/test/reference/random-intersections-curves-nz.xlib-fallback.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-curves-nz.xlib-fallback.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-curves-nz.xlib-fallback.ref.png diff --git a/cairo/test/reference/random-intersections-eo.argb32.ref.png b/3rd-party/cairo/test/reference/random-intersections-eo.argb32.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-eo.argb32.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-eo.argb32.ref.png diff --git a/cairo/test/reference/random-intersections-eo.base.argb32.ref.png b/3rd-party/cairo/test/reference/random-intersections-eo.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-eo.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-eo.base.argb32.ref.png diff --git a/cairo/test/reference/random-intersections-eo.base.rgb24.ref.png b/3rd-party/cairo/test/reference/random-intersections-eo.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-eo.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-eo.base.rgb24.ref.png diff --git a/cairo/test/reference/random-intersections-eo.image16.ref.png b/3rd-party/cairo/test/reference/random-intersections-eo.image16.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-eo.image16.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-eo.image16.ref.png diff --git a/cairo/test/reference/random-intersections-eo.ps.ref.png b/3rd-party/cairo/test/reference/random-intersections-eo.ps.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-eo.ps.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-eo.ps.ref.png diff --git a/cairo/test/reference/random-intersections-eo.quartz.ref.png b/3rd-party/cairo/test/reference/random-intersections-eo.quartz.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-eo.quartz.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-eo.quartz.ref.png diff --git a/cairo/test/reference/random-intersections-eo.rgb24.ref.png b/3rd-party/cairo/test/reference/random-intersections-eo.rgb24.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-eo.rgb24.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-eo.rgb24.ref.png diff --git a/cairo/test/reference/random-intersections-eo.traps.argb32.ref.png b/3rd-party/cairo/test/reference/random-intersections-eo.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-eo.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-eo.traps.argb32.ref.png diff --git a/cairo/test/reference/random-intersections-eo.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/random-intersections-eo.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-eo.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-eo.traps.rgb24.ref.png diff --git a/cairo/test/reference/random-intersections-nonzero.argb32.ref.png b/3rd-party/cairo/test/reference/random-intersections-nonzero.argb32.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-nonzero.argb32.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-nonzero.argb32.ref.png diff --git a/cairo/test/reference/random-intersections-nonzero.base.argb32.ref.png b/3rd-party/cairo/test/reference/random-intersections-nonzero.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-nonzero.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-nonzero.base.argb32.ref.png diff --git a/cairo/test/reference/random-intersections-nonzero.base.rgb24.ref.png b/3rd-party/cairo/test/reference/random-intersections-nonzero.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-nonzero.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-nonzero.base.rgb24.ref.png diff --git a/cairo/test/reference/random-intersections-nonzero.image16.ref.png b/3rd-party/cairo/test/reference/random-intersections-nonzero.image16.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-nonzero.image16.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-nonzero.image16.ref.png diff --git a/cairo/test/reference/random-intersections-nonzero.ps.ref.png b/3rd-party/cairo/test/reference/random-intersections-nonzero.ps.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-nonzero.ps.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-nonzero.ps.ref.png diff --git a/cairo/test/reference/random-intersections-nonzero.quartz.ref.png b/3rd-party/cairo/test/reference/random-intersections-nonzero.quartz.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-nonzero.quartz.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-nonzero.quartz.ref.png diff --git a/cairo/test/reference/random-intersections-nonzero.rgb24.ref.png b/3rd-party/cairo/test/reference/random-intersections-nonzero.rgb24.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-nonzero.rgb24.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-nonzero.rgb24.ref.png diff --git a/cairo/test/reference/random-intersections-nonzero.traps.argb32.ref.png b/3rd-party/cairo/test/reference/random-intersections-nonzero.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-nonzero.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-nonzero.traps.argb32.ref.png diff --git a/cairo/test/reference/random-intersections-nonzero.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/random-intersections-nonzero.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/random-intersections-nonzero.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/random-intersections-nonzero.traps.rgb24.ref.png diff --git a/cairo/test/reference/raster-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/raster-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/raster-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/raster-source.base.argb32.ref.png diff --git a/cairo/test/reference/raster-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/raster-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/raster-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/raster-source.base.rgb24.ref.png diff --git a/cairo/test/reference/raster-source.ps.ref.png b/3rd-party/cairo/test/reference/raster-source.ps.ref.png similarity index 100% rename from cairo/test/reference/raster-source.ps.ref.png rename to 3rd-party/cairo/test/reference/raster-source.ps.ref.png diff --git a/cairo/test/reference/raster-source.ref.png b/3rd-party/cairo/test/reference/raster-source.ref.png similarity index 100% rename from cairo/test/reference/raster-source.ref.png rename to 3rd-party/cairo/test/reference/raster-source.ref.png diff --git a/cairo/test/reference/record-extend-none-similar.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-extend-none-similar.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-extend-none-similar.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-extend-none-similar.base.argb32.ref.png diff --git a/cairo/test/reference/record-extend-none-similar.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-extend-none-similar.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-extend-none-similar.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-extend-none-similar.base.rgb24.ref.png diff --git a/cairo/test/reference/record-extend-none-similar.ref.png b/3rd-party/cairo/test/reference/record-extend-none-similar.ref.png similarity index 100% rename from cairo/test/reference/record-extend-none-similar.ref.png rename to 3rd-party/cairo/test/reference/record-extend-none-similar.ref.png diff --git a/cairo/test/reference/record-extend-none-similar.traps.argb32.ref.png b/3rd-party/cairo/test/reference/record-extend-none-similar.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-extend-none-similar.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-extend-none-similar.traps.argb32.ref.png diff --git a/cairo/test/reference/record-extend-none-similar.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/record-extend-none-similar.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-extend-none-similar.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-extend-none-similar.traps.rgb24.ref.png diff --git a/cairo/test/reference/record-extend-none.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-extend-none.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-extend-none.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-extend-none.base.argb32.ref.png diff --git a/cairo/test/reference/record-extend-none.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-extend-none.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-extend-none.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-extend-none.base.rgb24.ref.png diff --git a/cairo/test/reference/record-extend-none.ref.png b/3rd-party/cairo/test/reference/record-extend-none.ref.png similarity index 100% rename from cairo/test/reference/record-extend-none.ref.png rename to 3rd-party/cairo/test/reference/record-extend-none.ref.png diff --git a/cairo/test/reference/record-extend-pad-similar.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-extend-pad-similar.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-extend-pad-similar.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-extend-pad-similar.base.argb32.ref.png diff --git a/cairo/test/reference/record-extend-pad-similar.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-extend-pad-similar.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-extend-pad-similar.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-extend-pad-similar.base.rgb24.ref.png diff --git a/cairo/test/reference/record-extend-pad-similar.ref.png b/3rd-party/cairo/test/reference/record-extend-pad-similar.ref.png similarity index 100% rename from cairo/test/reference/record-extend-pad-similar.ref.png rename to 3rd-party/cairo/test/reference/record-extend-pad-similar.ref.png diff --git a/cairo/test/reference/record-extend-pad-similar.traps.argb32.ref.png b/3rd-party/cairo/test/reference/record-extend-pad-similar.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-extend-pad-similar.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-extend-pad-similar.traps.argb32.ref.png diff --git a/cairo/test/reference/record-extend-pad-similar.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/record-extend-pad-similar.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-extend-pad-similar.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-extend-pad-similar.traps.rgb24.ref.png diff --git a/cairo/test/reference/record-extend-pad.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-extend-pad.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-extend-pad.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-extend-pad.base.argb32.ref.png diff --git a/cairo/test/reference/record-extend-pad.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-extend-pad.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-extend-pad.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-extend-pad.base.rgb24.ref.png diff --git a/cairo/test/reference/record-extend-pad.ref.png b/3rd-party/cairo/test/reference/record-extend-pad.ref.png similarity index 100% rename from cairo/test/reference/record-extend-pad.ref.png rename to 3rd-party/cairo/test/reference/record-extend-pad.ref.png diff --git a/cairo/test/reference/record-extend-reflect-similar.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-extend-reflect-similar.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-extend-reflect-similar.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-extend-reflect-similar.base.argb32.ref.png diff --git a/cairo/test/reference/record-extend-reflect-similar.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-extend-reflect-similar.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-extend-reflect-similar.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-extend-reflect-similar.base.rgb24.ref.png diff --git a/cairo/test/reference/record-extend-reflect-similar.ref.png b/3rd-party/cairo/test/reference/record-extend-reflect-similar.ref.png similarity index 100% rename from cairo/test/reference/record-extend-reflect-similar.ref.png rename to 3rd-party/cairo/test/reference/record-extend-reflect-similar.ref.png diff --git a/cairo/test/reference/record-extend-reflect-similar.traps.argb32.ref.png b/3rd-party/cairo/test/reference/record-extend-reflect-similar.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-extend-reflect-similar.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-extend-reflect-similar.traps.argb32.ref.png diff --git a/cairo/test/reference/record-extend-reflect-similar.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/record-extend-reflect-similar.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-extend-reflect-similar.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-extend-reflect-similar.traps.rgb24.ref.png diff --git a/cairo/test/reference/record-extend-reflect.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-extend-reflect.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-extend-reflect.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-extend-reflect.base.argb32.ref.png diff --git a/cairo/test/reference/record-extend-reflect.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-extend-reflect.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-extend-reflect.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-extend-reflect.base.rgb24.ref.png diff --git a/cairo/test/reference/record-extend-reflect.ref.png b/3rd-party/cairo/test/reference/record-extend-reflect.ref.png similarity index 100% rename from cairo/test/reference/record-extend-reflect.ref.png rename to 3rd-party/cairo/test/reference/record-extend-reflect.ref.png diff --git a/cairo/test/reference/record-extend-repeat-similar.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-extend-repeat-similar.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-extend-repeat-similar.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-extend-repeat-similar.base.argb32.ref.png diff --git a/cairo/test/reference/record-extend-repeat-similar.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-extend-repeat-similar.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-extend-repeat-similar.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-extend-repeat-similar.base.rgb24.ref.png diff --git a/cairo/test/reference/record-extend-repeat-similar.ref.png b/3rd-party/cairo/test/reference/record-extend-repeat-similar.ref.png similarity index 100% rename from cairo/test/reference/record-extend-repeat-similar.ref.png rename to 3rd-party/cairo/test/reference/record-extend-repeat-similar.ref.png diff --git a/cairo/test/reference/record-extend-repeat-similar.traps.argb32.ref.png b/3rd-party/cairo/test/reference/record-extend-repeat-similar.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-extend-repeat-similar.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-extend-repeat-similar.traps.argb32.ref.png diff --git a/cairo/test/reference/record-extend-repeat-similar.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/record-extend-repeat-similar.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-extend-repeat-similar.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-extend-repeat-similar.traps.rgb24.ref.png diff --git a/cairo/test/reference/record-extend-repeat.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-extend-repeat.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-extend-repeat.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-extend-repeat.base.argb32.ref.png diff --git a/cairo/test/reference/record-extend-repeat.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-extend-repeat.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-extend-repeat.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-extend-repeat.base.rgb24.ref.png diff --git a/cairo/test/reference/record-extend-repeat.ref.png b/3rd-party/cairo/test/reference/record-extend-repeat.ref.png similarity index 100% rename from cairo/test/reference/record-extend-repeat.ref.png rename to 3rd-party/cairo/test/reference/record-extend-repeat.ref.png diff --git a/cairo/test/reference/record-fill-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-fill-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-fill-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-fill-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/record-fill-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-fill-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-fill-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-fill-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/record-fill-alpha.base.xfail.png b/3rd-party/cairo/test/reference/record-fill-alpha.base.xfail.png similarity index 100% rename from cairo/test/reference/record-fill-alpha.base.xfail.png rename to 3rd-party/cairo/test/reference/record-fill-alpha.base.xfail.png diff --git a/cairo/test/reference/record-fill-alpha.image16.rgb24.ref.png b/3rd-party/cairo/test/reference/record-fill-alpha.image16.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-fill-alpha.image16.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-fill-alpha.image16.rgb24.ref.png diff --git a/cairo/test/reference/record-fill-alpha.ref.png b/3rd-party/cairo/test/reference/record-fill-alpha.ref.png similarity index 100% rename from cairo/test/reference/record-fill-alpha.ref.png rename to 3rd-party/cairo/test/reference/record-fill-alpha.ref.png diff --git a/cairo/test/reference/record-fill-alpha.traps.argb32.ref.png b/3rd-party/cairo/test/reference/record-fill-alpha.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-fill-alpha.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-fill-alpha.traps.argb32.ref.png diff --git a/cairo/test/reference/record-fill-alpha.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/record-fill-alpha.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-fill-alpha.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-fill-alpha.traps.rgb24.ref.png diff --git a/cairo/test/reference/record-fill-alpha.xfail.png b/3rd-party/cairo/test/reference/record-fill-alpha.xfail.png similarity index 100% rename from cairo/test/reference/record-fill-alpha.xfail.png rename to 3rd-party/cairo/test/reference/record-fill-alpha.xfail.png diff --git a/cairo/test/reference/record-mesh.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-mesh.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-mesh.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-mesh.base.argb32.ref.png diff --git a/cairo/test/reference/record-mesh.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-mesh.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-mesh.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-mesh.base.rgb24.ref.png diff --git a/cairo/test/reference/record-mesh.image16.rgb24.ref.png b/3rd-party/cairo/test/reference/record-mesh.image16.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-mesh.image16.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-mesh.image16.rgb24.ref.png diff --git a/cairo/test/reference/record-mesh.ref.png b/3rd-party/cairo/test/reference/record-mesh.ref.png similarity index 100% rename from cairo/test/reference/record-mesh.ref.png rename to 3rd-party/cairo/test/reference/record-mesh.ref.png diff --git a/cairo/test/reference/record-paint-alpha-clip-mask.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-clip-mask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.argb32.ref.png diff --git a/cairo/test/reference/record-paint-alpha-clip-mask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-clip-mask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.rgb24.ref.png diff --git a/cairo/test/reference/record-paint-alpha-clip-mask.base.xfail.png b/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.xfail.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-clip-mask.base.xfail.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.xfail.png diff --git a/cairo/test/reference/record-paint-alpha-clip-mask.image16.rgb24.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.image16.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-clip-mask.image16.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.image16.rgb24.ref.png diff --git a/cairo/test/reference/record-paint-alpha-clip-mask.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-clip-mask.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.ref.png diff --git a/cairo/test/reference/record-paint-alpha-clip-mask.traps.argb32.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-clip-mask.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.traps.argb32.ref.png diff --git a/cairo/test/reference/record-paint-alpha-clip-mask.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-clip-mask.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.traps.rgb24.ref.png diff --git a/cairo/test/reference/record-paint-alpha-clip-mask.xfail.png b/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.xfail.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-clip-mask.xfail.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.xfail.png diff --git a/cairo/test/reference/record-paint-alpha-clip.argb32.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-clip.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-clip.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-clip.argb32.ref.png diff --git a/cairo/test/reference/record-paint-alpha-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-clip.base.argb32.ref.png diff --git a/cairo/test/reference/record-paint-alpha-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/record-paint-alpha-clip.image16.rgb24.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-clip.image16.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-clip.image16.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-clip.image16.rgb24.ref.png diff --git a/cairo/test/reference/record-paint-alpha-clip.rgb24.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-clip.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-clip.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-clip.rgb24.ref.png diff --git a/cairo/test/reference/record-paint-alpha-clip.traps.argb32.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-clip.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-clip.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-clip.traps.argb32.ref.png diff --git a/cairo/test/reference/record-paint-alpha-clip.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-clip.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-clip.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-clip.traps.rgb24.ref.png diff --git a/cairo/test/reference/record-paint-alpha-solid-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-solid-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.base.argb32.ref.png diff --git a/cairo/test/reference/record-paint-alpha-solid-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-solid-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/record-paint-alpha-solid-clip.image16.rgb24.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.image16.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-solid-clip.image16.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.image16.rgb24.ref.png diff --git a/cairo/test/reference/record-paint-alpha-solid-clip.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-solid-clip.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.ref.png diff --git a/cairo/test/reference/record-paint-alpha-solid-clip.traps.argb32.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-solid-clip.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.traps.argb32.ref.png diff --git a/cairo/test/reference/record-paint-alpha-solid-clip.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha-solid-clip.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.traps.rgb24.ref.png diff --git a/cairo/test/reference/record-paint-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/record-paint-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/record-paint-alpha.image16.rgb24.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha.image16.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha.image16.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha.image16.rgb24.ref.png diff --git a/cairo/test/reference/record-paint-alpha.ref.png b/3rd-party/cairo/test/reference/record-paint-alpha.ref.png similarity index 100% rename from cairo/test/reference/record-paint-alpha.ref.png rename to 3rd-party/cairo/test/reference/record-paint-alpha.ref.png diff --git a/cairo/test/reference/record-paint.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-paint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-paint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-paint.base.argb32.ref.png diff --git a/cairo/test/reference/record-paint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-paint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-paint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-paint.base.rgb24.ref.png diff --git a/cairo/test/reference/record-paint.ref.png b/3rd-party/cairo/test/reference/record-paint.ref.png similarity index 100% rename from cairo/test/reference/record-paint.ref.png rename to 3rd-party/cairo/test/reference/record-paint.ref.png diff --git a/cairo/test/reference/record-select-font-face.argb32.ref.png b/3rd-party/cairo/test/reference/record-select-font-face.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-select-font-face.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-select-font-face.argb32.ref.png diff --git a/cairo/test/reference/record-select-font-face.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-select-font-face.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-select-font-face.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-select-font-face.base.argb32.ref.png diff --git a/cairo/test/reference/record-select-font-face.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-select-font-face.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-select-font-face.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-select-font-face.base.rgb24.ref.png diff --git a/cairo/test/reference/record-select-font-face.image16.rgb24.ref.png b/3rd-party/cairo/test/reference/record-select-font-face.image16.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-select-font-face.image16.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-select-font-face.image16.rgb24.ref.png diff --git a/cairo/test/reference/record-select-font-face.rgb24.ref.png b/3rd-party/cairo/test/reference/record-select-font-face.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-select-font-face.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-select-font-face.rgb24.ref.png diff --git a/cairo/test/reference/record-select-font-face.xfail.png b/3rd-party/cairo/test/reference/record-select-font-face.xfail.png similarity index 100% rename from cairo/test/reference/record-select-font-face.xfail.png rename to 3rd-party/cairo/test/reference/record-select-font-face.xfail.png diff --git a/cairo/test/reference/record-self-intersecting.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-self-intersecting.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-self-intersecting.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-self-intersecting.base.argb32.ref.png diff --git a/cairo/test/reference/record-self-intersecting.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-self-intersecting.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-self-intersecting.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-self-intersecting.base.rgb24.ref.png diff --git a/cairo/test/reference/record-self-intersecting.image16.rgb24.ref.png b/3rd-party/cairo/test/reference/record-self-intersecting.image16.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-self-intersecting.image16.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-self-intersecting.image16.rgb24.ref.png diff --git a/cairo/test/reference/record-self-intersecting.ref.png b/3rd-party/cairo/test/reference/record-self-intersecting.ref.png similarity index 100% rename from cairo/test/reference/record-self-intersecting.ref.png rename to 3rd-party/cairo/test/reference/record-self-intersecting.ref.png diff --git a/cairo/test/reference/record-text-transform.base.argb32.ref.png b/3rd-party/cairo/test/reference/record-text-transform.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record-text-transform.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record-text-transform.base.argb32.ref.png diff --git a/cairo/test/reference/record-text-transform.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record-text-transform.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-text-transform.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-text-transform.base.rgb24.ref.png diff --git a/cairo/test/reference/record-text-transform.image16.rgb24.ref.png b/3rd-party/cairo/test/reference/record-text-transform.image16.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record-text-transform.image16.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record-text-transform.image16.rgb24.ref.png diff --git a/cairo/test/reference/record-text-transform.ref.png b/3rd-party/cairo/test/reference/record-text-transform.ref.png similarity index 100% rename from cairo/test/reference/record-text-transform.ref.png rename to 3rd-party/cairo/test/reference/record-text-transform.ref.png diff --git a/cairo/test/reference/record1414x-fill-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/record1414x-fill-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record1414x-fill-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record1414x-fill-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/record1414x-fill-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record1414x-fill-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record1414x-fill-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record1414x-fill-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/record1414x-fill-alpha.base.xfail.png b/3rd-party/cairo/test/reference/record1414x-fill-alpha.base.xfail.png similarity index 100% rename from cairo/test/reference/record1414x-fill-alpha.base.xfail.png rename to 3rd-party/cairo/test/reference/record1414x-fill-alpha.base.xfail.png diff --git a/cairo/test/reference/record1414x-fill-alpha.ref.png b/3rd-party/cairo/test/reference/record1414x-fill-alpha.ref.png similarity index 100% rename from cairo/test/reference/record1414x-fill-alpha.ref.png rename to 3rd-party/cairo/test/reference/record1414x-fill-alpha.ref.png diff --git a/cairo/test/reference/record1414x-fill-alpha.xfail.png b/3rd-party/cairo/test/reference/record1414x-fill-alpha.xfail.png similarity index 100% rename from cairo/test/reference/record1414x-fill-alpha.xfail.png rename to 3rd-party/cairo/test/reference/record1414x-fill-alpha.xfail.png diff --git a/cairo/test/reference/record1414x-paint-alpha-clip-mask.argb32.ref.png b/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint-alpha-clip-mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.argb32.ref.png diff --git a/cairo/test/reference/record1414x-paint-alpha-clip-mask.base.argb32.ref.png b/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint-alpha-clip-mask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.base.argb32.ref.png diff --git a/cairo/test/reference/record1414x-paint-alpha-clip-mask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint-alpha-clip-mask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.base.rgb24.ref.png diff --git a/cairo/test/reference/record1414x-paint-alpha-clip-mask.rgb24.ref.png b/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint-alpha-clip-mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.rgb24.ref.png diff --git a/cairo/test/reference/record1414x-paint-alpha-clip.argb32.ref.png b/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.argb32.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint-alpha-clip.argb32.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.argb32.ref.png diff --git a/cairo/test/reference/record1414x-paint-alpha-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint-alpha-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.base.argb32.ref.png diff --git a/cairo/test/reference/record1414x-paint-alpha-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint-alpha-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/record1414x-paint-alpha-clip.rgb24.ref.png b/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint-alpha-clip.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.rgb24.ref.png diff --git a/cairo/test/reference/record1414x-paint-alpha-solid-clip.argb32.ref.png b/3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.argb32.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint-alpha-solid-clip.argb32.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.argb32.ref.png diff --git a/cairo/test/reference/record1414x-paint-alpha-solid-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint-alpha-solid-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.base.argb32.ref.png diff --git a/cairo/test/reference/record1414x-paint-alpha-solid-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint-alpha-solid-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/record1414x-paint-alpha-solid-clip.rgb24.ref.png b/3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint-alpha-solid-clip.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.rgb24.ref.png diff --git a/cairo/test/reference/record1414x-paint-alpha.argb32.ref.png b/3rd-party/cairo/test/reference/record1414x-paint-alpha.argb32.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint-alpha.argb32.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint-alpha.argb32.ref.png diff --git a/cairo/test/reference/record1414x-paint-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/record1414x-paint-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/record1414x-paint-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record1414x-paint-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/record1414x-paint-alpha.rgb24.ref.png b/3rd-party/cairo/test/reference/record1414x-paint-alpha.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint-alpha.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint-alpha.rgb24.ref.png diff --git a/cairo/test/reference/record1414x-paint.argb32.ref.png b/3rd-party/cairo/test/reference/record1414x-paint.argb32.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint.argb32.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint.argb32.ref.png diff --git a/cairo/test/reference/record1414x-paint.base.argb32.ref.png b/3rd-party/cairo/test/reference/record1414x-paint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint.base.argb32.ref.png diff --git a/cairo/test/reference/record1414x-paint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record1414x-paint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint.base.rgb24.ref.png diff --git a/cairo/test/reference/record1414x-paint.rgb24.ref.png b/3rd-party/cairo/test/reference/record1414x-paint.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record1414x-paint.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record1414x-paint.rgb24.ref.png diff --git a/cairo/test/reference/record1414x-select-font-face.argb32.ref.png b/3rd-party/cairo/test/reference/record1414x-select-font-face.argb32.ref.png similarity index 100% rename from cairo/test/reference/record1414x-select-font-face.argb32.ref.png rename to 3rd-party/cairo/test/reference/record1414x-select-font-face.argb32.ref.png diff --git a/cairo/test/reference/record1414x-select-font-face.base.argb32.ref.png b/3rd-party/cairo/test/reference/record1414x-select-font-face.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record1414x-select-font-face.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record1414x-select-font-face.base.argb32.ref.png diff --git a/cairo/test/reference/record1414x-select-font-face.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record1414x-select-font-face.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record1414x-select-font-face.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record1414x-select-font-face.base.rgb24.ref.png diff --git a/cairo/test/reference/record1414x-select-font-face.rgb24.ref.png b/3rd-party/cairo/test/reference/record1414x-select-font-face.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record1414x-select-font-face.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record1414x-select-font-face.rgb24.ref.png diff --git a/cairo/test/reference/record1414x-self-intersecting.argb32.ref.png b/3rd-party/cairo/test/reference/record1414x-self-intersecting.argb32.ref.png similarity index 100% rename from cairo/test/reference/record1414x-self-intersecting.argb32.ref.png rename to 3rd-party/cairo/test/reference/record1414x-self-intersecting.argb32.ref.png diff --git a/cairo/test/reference/record1414x-self-intersecting.base.argb32.ref.png b/3rd-party/cairo/test/reference/record1414x-self-intersecting.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record1414x-self-intersecting.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record1414x-self-intersecting.base.argb32.ref.png diff --git a/cairo/test/reference/record1414x-self-intersecting.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record1414x-self-intersecting.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record1414x-self-intersecting.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record1414x-self-intersecting.base.rgb24.ref.png diff --git a/cairo/test/reference/record1414x-self-intersecting.rgb24.ref.png b/3rd-party/cairo/test/reference/record1414x-self-intersecting.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record1414x-self-intersecting.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record1414x-self-intersecting.rgb24.ref.png diff --git a/cairo/test/reference/record1414x-text-transform.base.argb32.ref.png b/3rd-party/cairo/test/reference/record1414x-text-transform.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record1414x-text-transform.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record1414x-text-transform.base.argb32.ref.png diff --git a/cairo/test/reference/record1414x-text-transform.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record1414x-text-transform.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record1414x-text-transform.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record1414x-text-transform.base.rgb24.ref.png diff --git a/cairo/test/reference/record1414x-text-transform.ref.png b/3rd-party/cairo/test/reference/record1414x-text-transform.ref.png similarity index 100% rename from cairo/test/reference/record1414x-text-transform.ref.png rename to 3rd-party/cairo/test/reference/record1414x-text-transform.ref.png diff --git a/cairo/test/reference/record2x-fill-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/record2x-fill-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record2x-fill-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record2x-fill-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/record2x-fill-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record2x-fill-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record2x-fill-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record2x-fill-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/record2x-fill-alpha.base.xfail.png b/3rd-party/cairo/test/reference/record2x-fill-alpha.base.xfail.png similarity index 100% rename from cairo/test/reference/record2x-fill-alpha.base.xfail.png rename to 3rd-party/cairo/test/reference/record2x-fill-alpha.base.xfail.png diff --git a/cairo/test/reference/record2x-fill-alpha.ref.png b/3rd-party/cairo/test/reference/record2x-fill-alpha.ref.png similarity index 100% rename from cairo/test/reference/record2x-fill-alpha.ref.png rename to 3rd-party/cairo/test/reference/record2x-fill-alpha.ref.png diff --git a/cairo/test/reference/record2x-fill-alpha.xfail.png b/3rd-party/cairo/test/reference/record2x-fill-alpha.xfail.png similarity index 100% rename from cairo/test/reference/record2x-fill-alpha.xfail.png rename to 3rd-party/cairo/test/reference/record2x-fill-alpha.xfail.png diff --git a/cairo/test/reference/record2x-paint-alpha-clip-mask.argb32.ref.png b/3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint-alpha-clip-mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.argb32.ref.png diff --git a/cairo/test/reference/record2x-paint-alpha-clip-mask.base.argb32.ref.png b/3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint-alpha-clip-mask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.base.argb32.ref.png diff --git a/cairo/test/reference/record2x-paint-alpha-clip-mask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint-alpha-clip-mask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.base.rgb24.ref.png diff --git a/cairo/test/reference/record2x-paint-alpha-clip-mask.rgb24.ref.png b/3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint-alpha-clip-mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.rgb24.ref.png diff --git a/cairo/test/reference/record2x-paint-alpha-clip.argb32.ref.png b/3rd-party/cairo/test/reference/record2x-paint-alpha-clip.argb32.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint-alpha-clip.argb32.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint-alpha-clip.argb32.ref.png diff --git a/cairo/test/reference/record2x-paint-alpha-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/record2x-paint-alpha-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint-alpha-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint-alpha-clip.base.argb32.ref.png diff --git a/cairo/test/reference/record2x-paint-alpha-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record2x-paint-alpha-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint-alpha-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint-alpha-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/record2x-paint-alpha-clip.rgb24.ref.png b/3rd-party/cairo/test/reference/record2x-paint-alpha-clip.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint-alpha-clip.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint-alpha-clip.rgb24.ref.png diff --git a/cairo/test/reference/record2x-paint-alpha-solid-clip.argb32.ref.png b/3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.argb32.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint-alpha-solid-clip.argb32.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.argb32.ref.png diff --git a/cairo/test/reference/record2x-paint-alpha-solid-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint-alpha-solid-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.base.argb32.ref.png diff --git a/cairo/test/reference/record2x-paint-alpha-solid-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint-alpha-solid-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/record2x-paint-alpha-solid-clip.rgb24.ref.png b/3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint-alpha-solid-clip.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.rgb24.ref.png diff --git a/cairo/test/reference/record2x-paint-alpha.argb32.ref.png b/3rd-party/cairo/test/reference/record2x-paint-alpha.argb32.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint-alpha.argb32.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint-alpha.argb32.ref.png diff --git a/cairo/test/reference/record2x-paint-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/record2x-paint-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/record2x-paint-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record2x-paint-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/record2x-paint-alpha.rgb24.ref.png b/3rd-party/cairo/test/reference/record2x-paint-alpha.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint-alpha.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint-alpha.rgb24.ref.png diff --git a/cairo/test/reference/record2x-paint.argb32.ref.png b/3rd-party/cairo/test/reference/record2x-paint.argb32.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint.argb32.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint.argb32.ref.png diff --git a/cairo/test/reference/record2x-paint.base.argb32.ref.png b/3rd-party/cairo/test/reference/record2x-paint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint.base.argb32.ref.png diff --git a/cairo/test/reference/record2x-paint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record2x-paint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint.base.rgb24.ref.png diff --git a/cairo/test/reference/record2x-paint.rgb24.ref.png b/3rd-party/cairo/test/reference/record2x-paint.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record2x-paint.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record2x-paint.rgb24.ref.png diff --git a/cairo/test/reference/record2x-select-font-face.argb32.ref.png b/3rd-party/cairo/test/reference/record2x-select-font-face.argb32.ref.png similarity index 100% rename from cairo/test/reference/record2x-select-font-face.argb32.ref.png rename to 3rd-party/cairo/test/reference/record2x-select-font-face.argb32.ref.png diff --git a/cairo/test/reference/record2x-select-font-face.base.argb32.ref.png b/3rd-party/cairo/test/reference/record2x-select-font-face.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record2x-select-font-face.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record2x-select-font-face.base.argb32.ref.png diff --git a/cairo/test/reference/record2x-select-font-face.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record2x-select-font-face.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record2x-select-font-face.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record2x-select-font-face.base.rgb24.ref.png diff --git a/cairo/test/reference/record2x-select-font-face.rgb24.ref.png b/3rd-party/cairo/test/reference/record2x-select-font-face.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record2x-select-font-face.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record2x-select-font-face.rgb24.ref.png diff --git a/cairo/test/reference/record2x-self-intersecting.argb32.ref.png b/3rd-party/cairo/test/reference/record2x-self-intersecting.argb32.ref.png similarity index 100% rename from cairo/test/reference/record2x-self-intersecting.argb32.ref.png rename to 3rd-party/cairo/test/reference/record2x-self-intersecting.argb32.ref.png diff --git a/cairo/test/reference/record2x-self-intersecting.base.argb32.ref.png b/3rd-party/cairo/test/reference/record2x-self-intersecting.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record2x-self-intersecting.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record2x-self-intersecting.base.argb32.ref.png diff --git a/cairo/test/reference/record2x-self-intersecting.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record2x-self-intersecting.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record2x-self-intersecting.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record2x-self-intersecting.base.rgb24.ref.png diff --git a/cairo/test/reference/record2x-self-intersecting.rgb24.ref.png b/3rd-party/cairo/test/reference/record2x-self-intersecting.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record2x-self-intersecting.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record2x-self-intersecting.rgb24.ref.png diff --git a/cairo/test/reference/record2x-text-transform.base.argb32.ref.png b/3rd-party/cairo/test/reference/record2x-text-transform.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record2x-text-transform.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record2x-text-transform.base.argb32.ref.png diff --git a/cairo/test/reference/record2x-text-transform.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record2x-text-transform.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record2x-text-transform.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record2x-text-transform.base.rgb24.ref.png diff --git a/cairo/test/reference/record2x-text-transform.ref.png b/3rd-party/cairo/test/reference/record2x-text-transform.ref.png similarity index 100% rename from cairo/test/reference/record2x-text-transform.ref.png rename to 3rd-party/cairo/test/reference/record2x-text-transform.ref.png diff --git a/cairo/test/reference/record90-fill-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/record90-fill-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record90-fill-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record90-fill-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/record90-fill-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record90-fill-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record90-fill-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record90-fill-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/record90-fill-alpha.ref.png b/3rd-party/cairo/test/reference/record90-fill-alpha.ref.png similarity index 100% rename from cairo/test/reference/record90-fill-alpha.ref.png rename to 3rd-party/cairo/test/reference/record90-fill-alpha.ref.png diff --git a/cairo/test/reference/record90-fill-alpha.xfail.png b/3rd-party/cairo/test/reference/record90-fill-alpha.xfail.png similarity index 100% rename from cairo/test/reference/record90-fill-alpha.xfail.png rename to 3rd-party/cairo/test/reference/record90-fill-alpha.xfail.png diff --git a/cairo/test/reference/record90-paint-alpha-clip-mask.base.argb32.ref.png b/3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record90-paint-alpha-clip-mask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.base.argb32.ref.png diff --git a/cairo/test/reference/record90-paint-alpha-clip-mask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record90-paint-alpha-clip-mask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.base.rgb24.ref.png diff --git a/cairo/test/reference/record90-paint-alpha-clip-mask.ref.png b/3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.ref.png similarity index 100% rename from cairo/test/reference/record90-paint-alpha-clip-mask.ref.png rename to 3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.ref.png diff --git a/cairo/test/reference/record90-paint-alpha-clip-mask.xfail.png b/3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.xfail.png similarity index 100% rename from cairo/test/reference/record90-paint-alpha-clip-mask.xfail.png rename to 3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.xfail.png diff --git a/cairo/test/reference/record90-paint-alpha-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/record90-paint-alpha-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record90-paint-alpha-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record90-paint-alpha-clip.base.argb32.ref.png diff --git a/cairo/test/reference/record90-paint-alpha-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record90-paint-alpha-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record90-paint-alpha-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record90-paint-alpha-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/record90-paint-alpha-clip.ref.png b/3rd-party/cairo/test/reference/record90-paint-alpha-clip.ref.png similarity index 100% rename from cairo/test/reference/record90-paint-alpha-clip.ref.png rename to 3rd-party/cairo/test/reference/record90-paint-alpha-clip.ref.png diff --git a/cairo/test/reference/record90-paint-alpha-clip.xfail.png b/3rd-party/cairo/test/reference/record90-paint-alpha-clip.xfail.png similarity index 100% rename from cairo/test/reference/record90-paint-alpha-clip.xfail.png rename to 3rd-party/cairo/test/reference/record90-paint-alpha-clip.xfail.png diff --git a/cairo/test/reference/record90-paint-alpha-solid-clip.argb32.ref.png b/3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.argb32.ref.png similarity index 100% rename from cairo/test/reference/record90-paint-alpha-solid-clip.argb32.ref.png rename to 3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.argb32.ref.png diff --git a/cairo/test/reference/record90-paint-alpha-solid-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record90-paint-alpha-solid-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.base.argb32.ref.png diff --git a/cairo/test/reference/record90-paint-alpha-solid-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record90-paint-alpha-solid-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/record90-paint-alpha-solid-clip.rgb24.ref.png b/3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record90-paint-alpha-solid-clip.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.rgb24.ref.png diff --git a/cairo/test/reference/record90-paint-alpha.argb32.ref.png b/3rd-party/cairo/test/reference/record90-paint-alpha.argb32.ref.png similarity index 100% rename from cairo/test/reference/record90-paint-alpha.argb32.ref.png rename to 3rd-party/cairo/test/reference/record90-paint-alpha.argb32.ref.png diff --git a/cairo/test/reference/record90-paint-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/record90-paint-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record90-paint-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record90-paint-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/record90-paint-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record90-paint-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record90-paint-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record90-paint-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/record90-paint-alpha.rgb24.ref.png b/3rd-party/cairo/test/reference/record90-paint-alpha.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record90-paint-alpha.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record90-paint-alpha.rgb24.ref.png diff --git a/cairo/test/reference/record90-paint.argb32.ref.png b/3rd-party/cairo/test/reference/record90-paint.argb32.ref.png similarity index 100% rename from cairo/test/reference/record90-paint.argb32.ref.png rename to 3rd-party/cairo/test/reference/record90-paint.argb32.ref.png diff --git a/cairo/test/reference/record90-paint.base.argb32.ref.png b/3rd-party/cairo/test/reference/record90-paint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record90-paint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record90-paint.base.argb32.ref.png diff --git a/cairo/test/reference/record90-paint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record90-paint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record90-paint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record90-paint.base.rgb24.ref.png diff --git a/cairo/test/reference/record90-paint.rgb24.ref.png b/3rd-party/cairo/test/reference/record90-paint.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record90-paint.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record90-paint.rgb24.ref.png diff --git a/cairo/test/reference/record90-select-font-face.argb32.ref.png b/3rd-party/cairo/test/reference/record90-select-font-face.argb32.ref.png similarity index 100% rename from cairo/test/reference/record90-select-font-face.argb32.ref.png rename to 3rd-party/cairo/test/reference/record90-select-font-face.argb32.ref.png diff --git a/cairo/test/reference/record90-select-font-face.base.argb32.ref.png b/3rd-party/cairo/test/reference/record90-select-font-face.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record90-select-font-face.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record90-select-font-face.base.argb32.ref.png diff --git a/cairo/test/reference/record90-select-font-face.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record90-select-font-face.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record90-select-font-face.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record90-select-font-face.base.rgb24.ref.png diff --git a/cairo/test/reference/record90-select-font-face.rgb24.ref.png b/3rd-party/cairo/test/reference/record90-select-font-face.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record90-select-font-face.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record90-select-font-face.rgb24.ref.png diff --git a/cairo/test/reference/record90-self-intersecting.base.argb32.ref.png b/3rd-party/cairo/test/reference/record90-self-intersecting.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record90-self-intersecting.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record90-self-intersecting.base.argb32.ref.png diff --git a/cairo/test/reference/record90-self-intersecting.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record90-self-intersecting.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record90-self-intersecting.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record90-self-intersecting.base.rgb24.ref.png diff --git a/cairo/test/reference/record90-self-intersecting.ref.png b/3rd-party/cairo/test/reference/record90-self-intersecting.ref.png similarity index 100% rename from cairo/test/reference/record90-self-intersecting.ref.png rename to 3rd-party/cairo/test/reference/record90-self-intersecting.ref.png diff --git a/cairo/test/reference/record90-text-transform.base.argb32.ref.png b/3rd-party/cairo/test/reference/record90-text-transform.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/record90-text-transform.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/record90-text-transform.base.argb32.ref.png diff --git a/cairo/test/reference/record90-text-transform.base.rgb24.ref.png b/3rd-party/cairo/test/reference/record90-text-transform.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/record90-text-transform.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/record90-text-transform.base.rgb24.ref.png diff --git a/cairo/test/reference/record90-text-transform.ref.png b/3rd-party/cairo/test/reference/record90-text-transform.ref.png similarity index 100% rename from cairo/test/reference/record90-text-transform.ref.png rename to 3rd-party/cairo/test/reference/record90-text-transform.ref.png diff --git a/cairo/test/reference/recordflip-fill-alpha.ref.png b/3rd-party/cairo/test/reference/recordflip-fill-alpha.ref.png similarity index 100% rename from cairo/test/reference/recordflip-fill-alpha.ref.png rename to 3rd-party/cairo/test/reference/recordflip-fill-alpha.ref.png diff --git a/cairo/test/reference/recordflip-paint-alpha-clip-mask.ref.png b/3rd-party/cairo/test/reference/recordflip-paint-alpha-clip-mask.ref.png similarity index 100% rename from cairo/test/reference/recordflip-paint-alpha-clip-mask.ref.png rename to 3rd-party/cairo/test/reference/recordflip-paint-alpha-clip-mask.ref.png diff --git a/cairo/test/reference/recordflip-paint-alpha-clip.ref.png b/3rd-party/cairo/test/reference/recordflip-paint-alpha-clip.ref.png similarity index 100% rename from cairo/test/reference/recordflip-paint-alpha-clip.ref.png rename to 3rd-party/cairo/test/reference/recordflip-paint-alpha-clip.ref.png diff --git a/cairo/test/reference/recordflip-paint-alpha-solid-clip.ref.png b/3rd-party/cairo/test/reference/recordflip-paint-alpha-solid-clip.ref.png similarity index 100% rename from cairo/test/reference/recordflip-paint-alpha-solid-clip.ref.png rename to 3rd-party/cairo/test/reference/recordflip-paint-alpha-solid-clip.ref.png diff --git a/cairo/test/reference/recordflip-paint-alpha.ref.png b/3rd-party/cairo/test/reference/recordflip-paint-alpha.ref.png similarity index 100% rename from cairo/test/reference/recordflip-paint-alpha.ref.png rename to 3rd-party/cairo/test/reference/recordflip-paint-alpha.ref.png diff --git a/cairo/test/reference/recordflip-paint.ref.png b/3rd-party/cairo/test/reference/recordflip-paint.ref.png similarity index 100% rename from cairo/test/reference/recordflip-paint.ref.png rename to 3rd-party/cairo/test/reference/recordflip-paint.ref.png diff --git a/cairo/test/reference/recordflip-select-font-face.ref.png b/3rd-party/cairo/test/reference/recordflip-select-font-face.ref.png similarity index 100% rename from cairo/test/reference/recordflip-select-font-face.ref.png rename to 3rd-party/cairo/test/reference/recordflip-select-font-face.ref.png diff --git a/cairo/test/reference/recordflip-self-intersecting.ref.png b/3rd-party/cairo/test/reference/recordflip-self-intersecting.ref.png similarity index 100% rename from cairo/test/reference/recordflip-self-intersecting.ref.png rename to 3rd-party/cairo/test/reference/recordflip-self-intersecting.ref.png diff --git a/cairo/test/reference/recordflip-text-transform.ref.png b/3rd-party/cairo/test/reference/recordflip-text-transform.ref.png similarity index 100% rename from cairo/test/reference/recordflip-text-transform.ref.png rename to 3rd-party/cairo/test/reference/recordflip-text-transform.ref.png diff --git a/cairo/test/reference/recording-surface-extend-none.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-none.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-none.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-none.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-extend-none.base.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-none.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-none.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-none.base.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-extend-none.base.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-none.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-none.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-none.base.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-extend-none.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-none.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-none.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-none.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-extend-none.traps.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-none.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-none.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-none.traps.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-extend-none.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-none.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-none.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-none.traps.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-extend-pad.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-pad.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-pad.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-pad.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-extend-pad.base.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-pad.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-pad.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-pad.base.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-extend-pad.base.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-pad.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-pad.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-pad.base.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-extend-pad.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-pad.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-pad.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-pad.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-extend-pad.traps.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-pad.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-pad.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-pad.traps.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-extend-pad.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-pad.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-pad.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-pad.traps.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-extend-reflect.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-reflect.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-reflect.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-reflect.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-extend-reflect.base.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-reflect.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-reflect.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-reflect.base.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-extend-reflect.base.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-reflect.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-reflect.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-reflect.base.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-extend-reflect.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-reflect.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-reflect.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-reflect.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-extend-reflect.traps.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-reflect.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-reflect.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-reflect.traps.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-extend-reflect.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-reflect.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-reflect.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-reflect.traps.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-extend-repeat.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-repeat.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-repeat.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-repeat.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-extend-repeat.base.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-repeat.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-repeat.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-repeat.base.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-extend-repeat.base.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-repeat.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-repeat.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-repeat.base.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-extend-repeat.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-repeat.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-repeat.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-repeat.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-extend-repeat.traps.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-repeat.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-repeat.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-repeat.traps.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-extend-repeat.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-extend-repeat.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-extend-repeat.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-extend-repeat.traps.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-over.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-over.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-over.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-over.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-over.base.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-over.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-over.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-over.base.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-over.base.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-over.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-over.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-over.base.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-over.gl.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-over.gl.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-over.gl.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-over.gl.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-over.image16.ref.png b/3rd-party/cairo/test/reference/recording-surface-over.image16.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-over.image16.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-over.image16.ref.png diff --git a/cairo/test/reference/recording-surface-over.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-over.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-over.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-over.pdf.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-over.pdf.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-over.pdf.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-over.pdf.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-over.pdf.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-over.ps.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-over.ps.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-over.ps.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-over.ps.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-over.ps.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-over.ps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-over.ps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-over.ps.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-over.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-over.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-over.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-over.quartz.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-over.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-over.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-over.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-over.quartz.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-over.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-over.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-over.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-over.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-over.svg.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-over.svg.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-over.svg.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-over.svg.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-over.svg.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-over.svg.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-over.svg.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-over.svg.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-over.traps.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-over.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-over.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-over.traps.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-over.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-over.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-over.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-over.traps.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-source.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-source.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-source.base.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-source.base.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-source.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-source.rgb24.ref.png diff --git a/cairo/test/reference/recording-surface-source.traps.argb32.ref.png b/3rd-party/cairo/test/reference/recording-surface-source.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-source.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-source.traps.argb32.ref.png diff --git a/cairo/test/reference/recording-surface-source.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/recording-surface-source.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/recording-surface-source.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/recording-surface-source.traps.rgb24.ref.png diff --git a/cairo/test/reference/rectangle-rounding-error.base.argb32.ref.png b/3rd-party/cairo/test/reference/rectangle-rounding-error.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/rectangle-rounding-error.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/rectangle-rounding-error.base.argb32.ref.png diff --git a/cairo/test/reference/rectangle-rounding-error.base.rgb24.ref.png b/3rd-party/cairo/test/reference/rectangle-rounding-error.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rectangle-rounding-error.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rectangle-rounding-error.base.rgb24.ref.png diff --git a/cairo/test/reference/rectangle-rounding-error.ref.png b/3rd-party/cairo/test/reference/rectangle-rounding-error.ref.png similarity index 100% rename from cairo/test/reference/rectangle-rounding-error.ref.png rename to 3rd-party/cairo/test/reference/rectangle-rounding-error.ref.png diff --git a/cairo/test/reference/rectilinear-dash-scale-unaligned.ref.png b/3rd-party/cairo/test/reference/rectilinear-dash-scale-unaligned.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-dash-scale-unaligned.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-dash-scale-unaligned.ref.png diff --git a/cairo/test/reference/rectilinear-dash-scale-unaligned.traps.ref.png b/3rd-party/cairo/test/reference/rectilinear-dash-scale-unaligned.traps.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-dash-scale-unaligned.traps.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-dash-scale-unaligned.traps.ref.png diff --git a/cairo/test/reference/rectilinear-dash-scale.ref.png b/3rd-party/cairo/test/reference/rectilinear-dash-scale.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-dash-scale.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-dash-scale.ref.png diff --git a/cairo/test/reference/rectilinear-dash.base.argb32.ref.png b/3rd-party/cairo/test/reference/rectilinear-dash.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-dash.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-dash.base.argb32.ref.png diff --git a/cairo/test/reference/rectilinear-dash.base.rgb24.ref.png b/3rd-party/cairo/test/reference/rectilinear-dash.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-dash.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-dash.base.rgb24.ref.png diff --git a/cairo/test/reference/rectilinear-dash.mask.argb32.ref.png b/3rd-party/cairo/test/reference/rectilinear-dash.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-dash.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-dash.mask.argb32.ref.png diff --git a/cairo/test/reference/rectilinear-dash.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/rectilinear-dash.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-dash.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-dash.mask.rgb24.ref.png diff --git a/cairo/test/reference/rectilinear-dash.quartz.xfail.png b/3rd-party/cairo/test/reference/rectilinear-dash.quartz.xfail.png similarity index 100% rename from cairo/test/reference/rectilinear-dash.quartz.xfail.png rename to 3rd-party/cairo/test/reference/rectilinear-dash.quartz.xfail.png diff --git a/cairo/test/reference/rectilinear-dash.ref.png b/3rd-party/cairo/test/reference/rectilinear-dash.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-dash.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-dash.ref.png diff --git a/cairo/test/reference/rectilinear-dash.traps.argb32.ref.png b/3rd-party/cairo/test/reference/rectilinear-dash.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-dash.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-dash.traps.argb32.ref.png diff --git a/cairo/test/reference/rectilinear-dash.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/rectilinear-dash.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-dash.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-dash.traps.rgb24.ref.png diff --git a/cairo/test/reference/rectilinear-fill.base.argb32.ref.png b/3rd-party/cairo/test/reference/rectilinear-fill.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-fill.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-fill.base.argb32.ref.png diff --git a/cairo/test/reference/rectilinear-fill.base.rgb24.ref.png b/3rd-party/cairo/test/reference/rectilinear-fill.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-fill.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-fill.base.rgb24.ref.png diff --git a/cairo/test/reference/rectilinear-fill.ref.png b/3rd-party/cairo/test/reference/rectilinear-fill.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-fill.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-fill.ref.png diff --git a/cairo/test/reference/rectilinear-grid.base.argb32.ref.png b/3rd-party/cairo/test/reference/rectilinear-grid.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-grid.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-grid.base.argb32.ref.png diff --git a/cairo/test/reference/rectilinear-grid.base.rgb24.ref.png b/3rd-party/cairo/test/reference/rectilinear-grid.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-grid.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-grid.base.rgb24.ref.png diff --git a/cairo/test/reference/rectilinear-grid.image16.ref.png b/3rd-party/cairo/test/reference/rectilinear-grid.image16.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-grid.image16.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-grid.image16.ref.png diff --git a/cairo/test/reference/rectilinear-grid.ref.png b/3rd-party/cairo/test/reference/rectilinear-grid.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-grid.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-grid.ref.png diff --git a/cairo/test/reference/rectilinear-grid.traps.argb32.ref.png b/3rd-party/cairo/test/reference/rectilinear-grid.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-grid.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-grid.traps.argb32.ref.png diff --git a/cairo/test/reference/rectilinear-grid.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/rectilinear-grid.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-grid.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-grid.traps.rgb24.ref.png diff --git a/cairo/test/reference/rectilinear-miter-limit.argb32.ref.png b/3rd-party/cairo/test/reference/rectilinear-miter-limit.argb32.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-miter-limit.argb32.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-miter-limit.argb32.ref.png diff --git a/cairo/test/reference/rectilinear-miter-limit.base.argb32.ref.png b/3rd-party/cairo/test/reference/rectilinear-miter-limit.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-miter-limit.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-miter-limit.base.argb32.ref.png diff --git a/cairo/test/reference/rectilinear-miter-limit.base.rgb24.ref.png b/3rd-party/cairo/test/reference/rectilinear-miter-limit.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-miter-limit.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-miter-limit.base.rgb24.ref.png diff --git a/cairo/test/reference/rectilinear-miter-limit.ps2.ref.png b/3rd-party/cairo/test/reference/rectilinear-miter-limit.ps2.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-miter-limit.ps2.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-miter-limit.ps2.ref.png diff --git a/cairo/test/reference/rectilinear-miter-limit.ps3.ref.png b/3rd-party/cairo/test/reference/rectilinear-miter-limit.ps3.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-miter-limit.ps3.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-miter-limit.ps3.ref.png diff --git a/cairo/test/reference/rectilinear-miter-limit.rgb24.ref.png b/3rd-party/cairo/test/reference/rectilinear-miter-limit.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-miter-limit.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-miter-limit.rgb24.ref.png diff --git a/cairo/test/reference/rectilinear-miter-limit.traps.argb32.ref.png b/3rd-party/cairo/test/reference/rectilinear-miter-limit.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-miter-limit.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-miter-limit.traps.argb32.ref.png diff --git a/cairo/test/reference/rectilinear-miter-limit.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/rectilinear-miter-limit.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-miter-limit.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-miter-limit.traps.rgb24.ref.png diff --git a/cairo/test/reference/rectilinear-stroke.base.argb32.ref.png b/3rd-party/cairo/test/reference/rectilinear-stroke.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-stroke.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-stroke.base.argb32.ref.png diff --git a/cairo/test/reference/rectilinear-stroke.base.rgb24.ref.png b/3rd-party/cairo/test/reference/rectilinear-stroke.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-stroke.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-stroke.base.rgb24.ref.png diff --git a/cairo/test/reference/rectilinear-stroke.quartz.xfail.png b/3rd-party/cairo/test/reference/rectilinear-stroke.quartz.xfail.png similarity index 100% rename from cairo/test/reference/rectilinear-stroke.quartz.xfail.png rename to 3rd-party/cairo/test/reference/rectilinear-stroke.quartz.xfail.png diff --git a/cairo/test/reference/rectilinear-stroke.ref.png b/3rd-party/cairo/test/reference/rectilinear-stroke.ref.png similarity index 100% rename from cairo/test/reference/rectilinear-stroke.ref.png rename to 3rd-party/cairo/test/reference/rectilinear-stroke.ref.png diff --git a/cairo/test/reference/reflected-stroke.base.argb32.ref.png b/3rd-party/cairo/test/reference/reflected-stroke.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/reflected-stroke.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/reflected-stroke.base.argb32.ref.png diff --git a/cairo/test/reference/reflected-stroke.base.rgb24.ref.png b/3rd-party/cairo/test/reference/reflected-stroke.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/reflected-stroke.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/reflected-stroke.base.rgb24.ref.png diff --git a/cairo/test/reference/reflected-stroke.image16.ref.png b/3rd-party/cairo/test/reference/reflected-stroke.image16.ref.png similarity index 100% rename from cairo/test/reference/reflected-stroke.image16.ref.png rename to 3rd-party/cairo/test/reference/reflected-stroke.image16.ref.png diff --git a/cairo/test/reference/reflected-stroke.mask.argb32.ref.png b/3rd-party/cairo/test/reference/reflected-stroke.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/reflected-stroke.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/reflected-stroke.mask.argb32.ref.png diff --git a/cairo/test/reference/reflected-stroke.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/reflected-stroke.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/reflected-stroke.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/reflected-stroke.mask.rgb24.ref.png diff --git a/cairo/test/reference/reflected-stroke.ps.ref.png b/3rd-party/cairo/test/reference/reflected-stroke.ps.ref.png similarity index 100% rename from cairo/test/reference/reflected-stroke.ps.ref.png rename to 3rd-party/cairo/test/reference/reflected-stroke.ps.ref.png diff --git a/cairo/test/reference/reflected-stroke.ref.png b/3rd-party/cairo/test/reference/reflected-stroke.ref.png similarity index 100% rename from cairo/test/reference/reflected-stroke.ref.png rename to 3rd-party/cairo/test/reference/reflected-stroke.ref.png diff --git a/cairo/test/reference/reflected-stroke.traps.argb32.ref.png b/3rd-party/cairo/test/reference/reflected-stroke.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/reflected-stroke.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/reflected-stroke.traps.argb32.ref.png diff --git a/cairo/test/reference/reflected-stroke.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/reflected-stroke.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/reflected-stroke.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/reflected-stroke.traps.rgb24.ref.png diff --git a/cairo/test/reference/rel-path.argb32.ref.png b/3rd-party/cairo/test/reference/rel-path.argb32.ref.png similarity index 100% rename from cairo/test/reference/rel-path.argb32.ref.png rename to 3rd-party/cairo/test/reference/rel-path.argb32.ref.png diff --git a/cairo/test/reference/rel-path.base.argb32.ref.png b/3rd-party/cairo/test/reference/rel-path.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/rel-path.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/rel-path.base.argb32.ref.png diff --git a/cairo/test/reference/rel-path.base.rgb24.ref.png b/3rd-party/cairo/test/reference/rel-path.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rel-path.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rel-path.base.rgb24.ref.png diff --git a/cairo/test/reference/rel-path.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/rel-path.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rel-path.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rel-path.mask.rgb24.ref.png diff --git a/cairo/test/reference/rel-path.ps2.rgb24.ref.png b/3rd-party/cairo/test/reference/rel-path.ps2.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rel-path.ps2.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rel-path.ps2.rgb24.ref.png diff --git a/cairo/test/reference/rel-path.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/rel-path.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rel-path.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rel-path.ps3.rgb24.ref.png diff --git a/cairo/test/reference/rel-path.rgb24.ref.png b/3rd-party/cairo/test/reference/rel-path.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rel-path.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rel-path.rgb24.ref.png diff --git a/cairo/test/reference/rel-path.traps.argb32.ref.png b/3rd-party/cairo/test/reference/rel-path.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/rel-path.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/rel-path.traps.argb32.ref.png diff --git a/cairo/test/reference/rel-path.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/rel-path.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rel-path.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rel-path.traps.rgb24.ref.png diff --git a/cairo/test/reference/rgb24-ignore-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/rgb24-ignore-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/rgb24-ignore-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/rgb24-ignore-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/rgb24-ignore-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/rgb24-ignore-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rgb24-ignore-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rgb24-ignore-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/rgb24-ignore-alpha.ref.png b/3rd-party/cairo/test/reference/rgb24-ignore-alpha.ref.png similarity index 100% rename from cairo/test/reference/rgb24-ignore-alpha.ref.png rename to 3rd-party/cairo/test/reference/rgb24-ignore-alpha.ref.png diff --git a/cairo/test/reference/rotate-clip-image-surface-paint.argb32.ref.png b/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.argb32.ref.png similarity index 100% rename from cairo/test/reference/rotate-clip-image-surface-paint.argb32.ref.png rename to 3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.argb32.ref.png diff --git a/cairo/test/reference/rotate-clip-image-surface-paint.base.argb32.ref.png b/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/rotate-clip-image-surface-paint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.base.argb32.ref.png diff --git a/cairo/test/reference/rotate-clip-image-surface-paint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rotate-clip-image-surface-paint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.base.rgb24.ref.png diff --git a/cairo/test/reference/rotate-clip-image-surface-paint.rgb24.ref.png b/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rotate-clip-image-surface-paint.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.rgb24.ref.png diff --git a/cairo/test/reference/rotate-clip-image-surface-paint.traps.argb32.ref.png b/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/rotate-clip-image-surface-paint.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.traps.argb32.ref.png diff --git a/cairo/test/reference/rotate-clip-image-surface-paint.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rotate-clip-image-surface-paint.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.traps.rgb24.ref.png diff --git a/cairo/test/reference/rotate-clip-image-surface-paint.xlib-fallback.rgb24.ref.png b/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.xlib-fallback.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rotate-clip-image-surface-paint.xlib-fallback.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.xlib-fallback.rgb24.ref.png diff --git a/cairo/test/reference/rotate-clip-image-surface-paint.xlib-window.rgb24.ref.png b/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.xlib-window.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rotate-clip-image-surface-paint.xlib-window.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.xlib-window.rgb24.ref.png diff --git a/cairo/test/reference/rotate-image-surface-paint.base.argb32.ref.png b/3rd-party/cairo/test/reference/rotate-image-surface-paint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/rotate-image-surface-paint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/rotate-image-surface-paint.base.argb32.ref.png diff --git a/cairo/test/reference/rotate-image-surface-paint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/rotate-image-surface-paint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rotate-image-surface-paint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rotate-image-surface-paint.base.rgb24.ref.png diff --git a/cairo/test/reference/rotate-image-surface-paint.pdf.xfail.png b/3rd-party/cairo/test/reference/rotate-image-surface-paint.pdf.xfail.png similarity index 100% rename from cairo/test/reference/rotate-image-surface-paint.pdf.xfail.png rename to 3rd-party/cairo/test/reference/rotate-image-surface-paint.pdf.xfail.png diff --git a/cairo/test/reference/rotate-image-surface-paint.ps.ref.png b/3rd-party/cairo/test/reference/rotate-image-surface-paint.ps.ref.png similarity index 100% rename from cairo/test/reference/rotate-image-surface-paint.ps.ref.png rename to 3rd-party/cairo/test/reference/rotate-image-surface-paint.ps.ref.png diff --git a/cairo/test/reference/rotate-image-surface-paint.quartz.ref.png b/3rd-party/cairo/test/reference/rotate-image-surface-paint.quartz.ref.png similarity index 100% rename from cairo/test/reference/rotate-image-surface-paint.quartz.ref.png rename to 3rd-party/cairo/test/reference/rotate-image-surface-paint.quartz.ref.png diff --git a/cairo/test/reference/rotate-image-surface-paint.ref.png b/3rd-party/cairo/test/reference/rotate-image-surface-paint.ref.png similarity index 100% rename from cairo/test/reference/rotate-image-surface-paint.ref.png rename to 3rd-party/cairo/test/reference/rotate-image-surface-paint.ref.png diff --git a/cairo/test/reference/rotate-image-surface-paint.svg.ref.png b/3rd-party/cairo/test/reference/rotate-image-surface-paint.svg.ref.png similarity index 100% rename from cairo/test/reference/rotate-image-surface-paint.svg.ref.png rename to 3rd-party/cairo/test/reference/rotate-image-surface-paint.svg.ref.png diff --git a/cairo/test/reference/rotate-image-surface-paint.svg.xfail.png b/3rd-party/cairo/test/reference/rotate-image-surface-paint.svg.xfail.png similarity index 100% rename from cairo/test/reference/rotate-image-surface-paint.svg.xfail.png rename to 3rd-party/cairo/test/reference/rotate-image-surface-paint.svg.xfail.png diff --git a/cairo/test/reference/rotated-clip.argb32.ref.png b/3rd-party/cairo/test/reference/rotated-clip.argb32.ref.png similarity index 100% rename from cairo/test/reference/rotated-clip.argb32.ref.png rename to 3rd-party/cairo/test/reference/rotated-clip.argb32.ref.png diff --git a/cairo/test/reference/rotated-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/rotated-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/rotated-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/rotated-clip.base.argb32.ref.png diff --git a/cairo/test/reference/rotated-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/rotated-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rotated-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rotated-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/rotated-clip.image16.ref.png b/3rd-party/cairo/test/reference/rotated-clip.image16.ref.png similarity index 100% rename from cairo/test/reference/rotated-clip.image16.ref.png rename to 3rd-party/cairo/test/reference/rotated-clip.image16.ref.png diff --git a/cairo/test/reference/rotated-clip.mask.argb32.ref.png b/3rd-party/cairo/test/reference/rotated-clip.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/rotated-clip.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/rotated-clip.mask.argb32.ref.png diff --git a/cairo/test/reference/rotated-clip.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/rotated-clip.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rotated-clip.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rotated-clip.mask.rgb24.ref.png diff --git a/cairo/test/reference/rotated-clip.ps.ref.png b/3rd-party/cairo/test/reference/rotated-clip.ps.ref.png similarity index 100% rename from cairo/test/reference/rotated-clip.ps.ref.png rename to 3rd-party/cairo/test/reference/rotated-clip.ps.ref.png diff --git a/cairo/test/reference/rotated-clip.quartz.ref.png b/3rd-party/cairo/test/reference/rotated-clip.quartz.ref.png similarity index 100% rename from cairo/test/reference/rotated-clip.quartz.ref.png rename to 3rd-party/cairo/test/reference/rotated-clip.quartz.ref.png diff --git a/cairo/test/reference/rotated-clip.rgb24.ref.png b/3rd-party/cairo/test/reference/rotated-clip.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rotated-clip.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rotated-clip.rgb24.ref.png diff --git a/cairo/test/reference/rotated-clip.traps.argb32.ref.png b/3rd-party/cairo/test/reference/rotated-clip.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/rotated-clip.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/rotated-clip.traps.argb32.ref.png diff --git a/cairo/test/reference/rotated-clip.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/rotated-clip.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rotated-clip.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rotated-clip.traps.rgb24.ref.png diff --git a/cairo/test/reference/rounded-rectangle-fill.argb32.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-fill.argb32.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-fill.argb32.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-fill.argb32.ref.png diff --git a/cairo/test/reference/rounded-rectangle-fill.base.argb32.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-fill.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-fill.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-fill.base.argb32.ref.png diff --git a/cairo/test/reference/rounded-rectangle-fill.base.rgb24.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-fill.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-fill.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-fill.base.rgb24.ref.png diff --git a/cairo/test/reference/rounded-rectangle-fill.image16.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-fill.image16.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-fill.image16.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-fill.image16.ref.png diff --git a/cairo/test/reference/rounded-rectangle-fill.ps.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-fill.ps.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-fill.ps.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-fill.ps.ref.png diff --git a/cairo/test/reference/rounded-rectangle-fill.quartz.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-fill.quartz.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-fill.quartz.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-fill.quartz.ref.png diff --git a/cairo/test/reference/rounded-rectangle-fill.rgb24.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-fill.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-fill.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-fill.rgb24.ref.png diff --git a/cairo/test/reference/rounded-rectangle-fill.traps.argb32.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-fill.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-fill.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-fill.traps.argb32.ref.png diff --git a/cairo/test/reference/rounded-rectangle-fill.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-fill.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-fill.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-fill.traps.rgb24.ref.png diff --git a/cairo/test/reference/rounded-rectangle-stroke.base.argb32.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-stroke.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-stroke.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-stroke.base.argb32.ref.png diff --git a/cairo/test/reference/rounded-rectangle-stroke.base.rgb24.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-stroke.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-stroke.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-stroke.base.rgb24.ref.png diff --git a/cairo/test/reference/rounded-rectangle-stroke.image16.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-stroke.image16.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-stroke.image16.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-stroke.image16.ref.png diff --git a/cairo/test/reference/rounded-rectangle-stroke.mask.argb32.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-stroke.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-stroke.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-stroke.mask.argb32.ref.png diff --git a/cairo/test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png diff --git a/cairo/test/reference/rounded-rectangle-stroke.ps.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-stroke.ps.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-stroke.ps.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-stroke.ps.ref.png diff --git a/cairo/test/reference/rounded-rectangle-stroke.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-stroke.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-stroke.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-stroke.ref.png diff --git a/cairo/test/reference/rounded-rectangle-stroke.traps.argb32.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-stroke.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-stroke.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-stroke.traps.argb32.ref.png diff --git a/cairo/test/reference/rounded-rectangle-stroke.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/rounded-rectangle-stroke.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/rounded-rectangle-stroke.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/rounded-rectangle-stroke.traps.rgb24.ref.png diff --git a/cairo/test/reference/sample-diagonal.ref.png b/3rd-party/cairo/test/reference/sample-diagonal.ref.png similarity index 100% rename from cairo/test/reference/sample-diagonal.ref.png rename to 3rd-party/cairo/test/reference/sample-diagonal.ref.png diff --git a/cairo/test/reference/sample-horizontal.ref.png b/3rd-party/cairo/test/reference/sample-horizontal.ref.png similarity index 100% rename from cairo/test/reference/sample-horizontal.ref.png rename to 3rd-party/cairo/test/reference/sample-horizontal.ref.png diff --git a/cairo/test/reference/sample-vertical.ref.png b/3rd-party/cairo/test/reference/sample-vertical.ref.png similarity index 100% rename from cairo/test/reference/sample-vertical.ref.png rename to 3rd-party/cairo/test/reference/sample-vertical.ref.png diff --git a/cairo/test/reference/scale-down-source-surface-paint.base.argb32.ref.png b/3rd-party/cairo/test/reference/scale-down-source-surface-paint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/scale-down-source-surface-paint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/scale-down-source-surface-paint.base.argb32.ref.png diff --git a/cairo/test/reference/scale-down-source-surface-paint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/scale-down-source-surface-paint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/scale-down-source-surface-paint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/scale-down-source-surface-paint.base.rgb24.ref.png diff --git a/cairo/test/reference/scale-down-source-surface-paint.ref.png b/3rd-party/cairo/test/reference/scale-down-source-surface-paint.ref.png similarity index 100% rename from cairo/test/reference/scale-down-source-surface-paint.ref.png rename to 3rd-party/cairo/test/reference/scale-down-source-surface-paint.ref.png diff --git a/cairo/test/reference/scale-offset-image.argb32.ref.png b/3rd-party/cairo/test/reference/scale-offset-image.argb32.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-image.argb32.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-image.argb32.ref.png diff --git a/cairo/test/reference/scale-offset-image.base.argb32.ref.png b/3rd-party/cairo/test/reference/scale-offset-image.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-image.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-image.base.argb32.ref.png diff --git a/cairo/test/reference/scale-offset-image.base.rgb24.ref.png b/3rd-party/cairo/test/reference/scale-offset-image.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-image.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-image.base.rgb24.ref.png diff --git a/cairo/test/reference/scale-offset-image.gl.ref.png b/3rd-party/cairo/test/reference/scale-offset-image.gl.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-image.gl.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-image.gl.ref.png diff --git a/cairo/test/reference/scale-offset-image.image16.ref.png b/3rd-party/cairo/test/reference/scale-offset-image.image16.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-image.image16.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-image.image16.ref.png diff --git a/cairo/test/reference/scale-offset-image.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/scale-offset-image.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-image.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-image.pdf.argb32.ref.png diff --git a/cairo/test/reference/scale-offset-image.pdf.rgb24.ref.png b/3rd-party/cairo/test/reference/scale-offset-image.pdf.rgb24.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-image.pdf.rgb24.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-image.pdf.rgb24.ref.png diff --git a/cairo/test/reference/scale-offset-image.ps.ref.png b/3rd-party/cairo/test/reference/scale-offset-image.ps.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-image.ps.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-image.ps.ref.png diff --git a/cairo/test/reference/scale-offset-image.quartz.ref.png b/3rd-party/cairo/test/reference/scale-offset-image.quartz.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-image.quartz.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-image.quartz.ref.png diff --git a/cairo/test/reference/scale-offset-image.rgb24.ref.png b/3rd-party/cairo/test/reference/scale-offset-image.rgb24.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-image.rgb24.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-image.rgb24.ref.png diff --git a/cairo/test/reference/scale-offset-image.script.xfail.png b/3rd-party/cairo/test/reference/scale-offset-image.script.xfail.png similarity index 100% rename from cairo/test/reference/scale-offset-image.script.xfail.png rename to 3rd-party/cairo/test/reference/scale-offset-image.script.xfail.png diff --git a/cairo/test/reference/scale-offset-image.traps.argb32.ref.png b/3rd-party/cairo/test/reference/scale-offset-image.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-image.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-image.traps.argb32.ref.png diff --git a/cairo/test/reference/scale-offset-image.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/scale-offset-image.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-image.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-image.traps.rgb24.ref.png diff --git a/cairo/test/reference/scale-offset-image.xfail.png b/3rd-party/cairo/test/reference/scale-offset-image.xfail.png similarity index 100% rename from cairo/test/reference/scale-offset-image.xfail.png rename to 3rd-party/cairo/test/reference/scale-offset-image.xfail.png diff --git a/cairo/test/reference/scale-offset-image.xlib-fallback.xfail.png b/3rd-party/cairo/test/reference/scale-offset-image.xlib-fallback.xfail.png similarity index 100% rename from cairo/test/reference/scale-offset-image.xlib-fallback.xfail.png rename to 3rd-party/cairo/test/reference/scale-offset-image.xlib-fallback.xfail.png diff --git a/cairo/test/reference/scale-offset-similar.argb32.ref.png b/3rd-party/cairo/test/reference/scale-offset-similar.argb32.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.argb32.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.argb32.ref.png diff --git a/cairo/test/reference/scale-offset-similar.base.argb32.ref.png b/3rd-party/cairo/test/reference/scale-offset-similar.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.base.argb32.ref.png diff --git a/cairo/test/reference/scale-offset-similar.base.rgb24.ref.png b/3rd-party/cairo/test/reference/scale-offset-similar.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.base.rgb24.ref.png diff --git a/cairo/test/reference/scale-offset-similar.gl.ref.png b/3rd-party/cairo/test/reference/scale-offset-similar.gl.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.gl.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.gl.ref.png diff --git a/cairo/test/reference/scale-offset-similar.image16.ref.png b/3rd-party/cairo/test/reference/scale-offset-similar.image16.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.image16.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.image16.ref.png diff --git a/cairo/test/reference/scale-offset-similar.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/scale-offset-similar.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.pdf.argb32.ref.png diff --git a/cairo/test/reference/scale-offset-similar.pdf.rgb24.ref.png b/3rd-party/cairo/test/reference/scale-offset-similar.pdf.rgb24.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.pdf.rgb24.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.pdf.rgb24.ref.png diff --git a/cairo/test/reference/scale-offset-similar.ps.ref.png b/3rd-party/cairo/test/reference/scale-offset-similar.ps.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.ps.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.ps.ref.png diff --git a/cairo/test/reference/scale-offset-similar.quartz.ref.png b/3rd-party/cairo/test/reference/scale-offset-similar.quartz.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.quartz.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.quartz.ref.png diff --git a/cairo/test/reference/scale-offset-similar.recording.xfail.png b/3rd-party/cairo/test/reference/scale-offset-similar.recording.xfail.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.recording.xfail.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.recording.xfail.png diff --git a/cairo/test/reference/scale-offset-similar.rgb24.ref.png b/3rd-party/cairo/test/reference/scale-offset-similar.rgb24.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.rgb24.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.rgb24.ref.png diff --git a/cairo/test/reference/scale-offset-similar.script.xfail.png b/3rd-party/cairo/test/reference/scale-offset-similar.script.xfail.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.script.xfail.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.script.xfail.png diff --git a/cairo/test/reference/scale-offset-similar.traps.argb32.ref.png b/3rd-party/cairo/test/reference/scale-offset-similar.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.traps.argb32.ref.png diff --git a/cairo/test/reference/scale-offset-similar.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/scale-offset-similar.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.traps.rgb24.ref.png diff --git a/cairo/test/reference/scale-offset-similar.xfail.png b/3rd-party/cairo/test/reference/scale-offset-similar.xfail.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.xfail.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.xfail.png diff --git a/cairo/test/reference/scale-offset-similar.xlib-fallback.xfail.png b/3rd-party/cairo/test/reference/scale-offset-similar.xlib-fallback.xfail.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.xlib-fallback.xfail.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.xlib-fallback.xfail.png diff --git a/cairo/test/reference/scale-offset-similar.xlib.xfail.png b/3rd-party/cairo/test/reference/scale-offset-similar.xlib.xfail.png similarity index 100% rename from cairo/test/reference/scale-offset-similar.xlib.xfail.png rename to 3rd-party/cairo/test/reference/scale-offset-similar.xlib.xfail.png diff --git a/cairo/test/reference/scale-offset-xlib-fallback.rgb24.ref.png b/3rd-party/cairo/test/reference/scale-offset-xlib-fallback.rgb24.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-xlib-fallback.rgb24.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-xlib-fallback.rgb24.ref.png diff --git a/cairo/test/reference/scale-offset-xlib-window.rgb24.ref.png b/3rd-party/cairo/test/reference/scale-offset-xlib-window.rgb24.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-xlib-window.rgb24.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-xlib-window.rgb24.ref.png diff --git a/cairo/test/reference/scale-offset-xlib.argb32.ref.png b/3rd-party/cairo/test/reference/scale-offset-xlib.argb32.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-xlib.argb32.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-xlib.argb32.ref.png diff --git a/cairo/test/reference/scale-offset-xlib.rgb24.ref.png b/3rd-party/cairo/test/reference/scale-offset-xlib.rgb24.ref.png similarity index 100% rename from cairo/test/reference/scale-offset-xlib.rgb24.ref.png rename to 3rd-party/cairo/test/reference/scale-offset-xlib.rgb24.ref.png diff --git a/cairo/test/reference/scale-source-surface-paint.argb32.ref.png b/3rd-party/cairo/test/reference/scale-source-surface-paint.argb32.ref.png similarity index 100% rename from cairo/test/reference/scale-source-surface-paint.argb32.ref.png rename to 3rd-party/cairo/test/reference/scale-source-surface-paint.argb32.ref.png diff --git a/cairo/test/reference/scale-source-surface-paint.base.argb32.ref.png b/3rd-party/cairo/test/reference/scale-source-surface-paint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/scale-source-surface-paint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/scale-source-surface-paint.base.argb32.ref.png diff --git a/cairo/test/reference/scale-source-surface-paint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/scale-source-surface-paint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/scale-source-surface-paint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/scale-source-surface-paint.base.rgb24.ref.png diff --git a/cairo/test/reference/scale-source-surface-paint.pdf.argb32.xfail.png b/3rd-party/cairo/test/reference/scale-source-surface-paint.pdf.argb32.xfail.png similarity index 100% rename from cairo/test/reference/scale-source-surface-paint.pdf.argb32.xfail.png rename to 3rd-party/cairo/test/reference/scale-source-surface-paint.pdf.argb32.xfail.png diff --git a/cairo/test/reference/scale-source-surface-paint.pdf.rgb24.xfail.png b/3rd-party/cairo/test/reference/scale-source-surface-paint.pdf.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/scale-source-surface-paint.pdf.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/scale-source-surface-paint.pdf.rgb24.xfail.png diff --git a/cairo/test/reference/scale-source-surface-paint.rgb24.ref.png b/3rd-party/cairo/test/reference/scale-source-surface-paint.rgb24.ref.png similarity index 100% rename from cairo/test/reference/scale-source-surface-paint.rgb24.ref.png rename to 3rd-party/cairo/test/reference/scale-source-surface-paint.rgb24.ref.png diff --git a/cairo/test/reference/scale-source-surface-paint.svg.argb32.xfail.png b/3rd-party/cairo/test/reference/scale-source-surface-paint.svg.argb32.xfail.png similarity index 100% rename from cairo/test/reference/scale-source-surface-paint.svg.argb32.xfail.png rename to 3rd-party/cairo/test/reference/scale-source-surface-paint.svg.argb32.xfail.png diff --git a/cairo/test/reference/scale-source-surface-paint.svg.rgb24.xfail.png b/3rd-party/cairo/test/reference/scale-source-surface-paint.svg.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/scale-source-surface-paint.svg.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/scale-source-surface-paint.svg.rgb24.xfail.png diff --git a/cairo/test/reference/select-font-face.argb32.ref.png b/3rd-party/cairo/test/reference/select-font-face.argb32.ref.png similarity index 100% rename from cairo/test/reference/select-font-face.argb32.ref.png rename to 3rd-party/cairo/test/reference/select-font-face.argb32.ref.png diff --git a/cairo/test/reference/select-font-face.base.argb32.ref.png b/3rd-party/cairo/test/reference/select-font-face.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/select-font-face.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/select-font-face.base.argb32.ref.png diff --git a/cairo/test/reference/select-font-face.base.rgb24.ref.png b/3rd-party/cairo/test/reference/select-font-face.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/select-font-face.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/select-font-face.base.rgb24.ref.png diff --git a/cairo/test/reference/select-font-face.image16.ref.png b/3rd-party/cairo/test/reference/select-font-face.image16.ref.png similarity index 100% rename from cairo/test/reference/select-font-face.image16.ref.png rename to 3rd-party/cairo/test/reference/select-font-face.image16.ref.png diff --git a/cairo/test/reference/select-font-face.ps2.ref.png b/3rd-party/cairo/test/reference/select-font-face.ps2.ref.png similarity index 100% rename from cairo/test/reference/select-font-face.ps2.ref.png rename to 3rd-party/cairo/test/reference/select-font-face.ps2.ref.png diff --git a/cairo/test/reference/select-font-face.ps3.ref.png b/3rd-party/cairo/test/reference/select-font-face.ps3.ref.png similarity index 100% rename from cairo/test/reference/select-font-face.ps3.ref.png rename to 3rd-party/cairo/test/reference/select-font-face.ps3.ref.png diff --git a/cairo/test/reference/select-font-face.quartz.ref.png b/3rd-party/cairo/test/reference/select-font-face.quartz.ref.png similarity index 100% rename from cairo/test/reference/select-font-face.quartz.ref.png rename to 3rd-party/cairo/test/reference/select-font-face.quartz.ref.png diff --git a/cairo/test/reference/select-font-face.rgb24.ref.png b/3rd-party/cairo/test/reference/select-font-face.rgb24.ref.png similarity index 100% rename from cairo/test/reference/select-font-face.rgb24.ref.png rename to 3rd-party/cairo/test/reference/select-font-face.rgb24.ref.png diff --git a/cairo/test/reference/select-font-face.traps.ref.png b/3rd-party/cairo/test/reference/select-font-face.traps.ref.png similarity index 100% rename from cairo/test/reference/select-font-face.traps.ref.png rename to 3rd-party/cairo/test/reference/select-font-face.traps.ref.png diff --git a/cairo/test/reference/self-copy-overlap.base.argb32.ref.png b/3rd-party/cairo/test/reference/self-copy-overlap.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/self-copy-overlap.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/self-copy-overlap.base.argb32.ref.png diff --git a/cairo/test/reference/self-copy-overlap.base.rgb24.ref.png b/3rd-party/cairo/test/reference/self-copy-overlap.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/self-copy-overlap.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/self-copy-overlap.base.rgb24.ref.png diff --git a/cairo/test/reference/self-copy-overlap.mask.argb32.ref.png b/3rd-party/cairo/test/reference/self-copy-overlap.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/self-copy-overlap.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/self-copy-overlap.mask.argb32.ref.png diff --git a/cairo/test/reference/self-copy-overlap.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/self-copy-overlap.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/self-copy-overlap.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/self-copy-overlap.mask.rgb24.ref.png diff --git a/cairo/test/reference/self-copy-overlap.traps.argb32.ref.png b/3rd-party/cairo/test/reference/self-copy-overlap.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/self-copy-overlap.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/self-copy-overlap.traps.argb32.ref.png diff --git a/cairo/test/reference/self-copy-overlap.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/self-copy-overlap.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/self-copy-overlap.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/self-copy-overlap.traps.rgb24.ref.png diff --git a/cairo/test/reference/self-copy.argb32.ref.png b/3rd-party/cairo/test/reference/self-copy.argb32.ref.png similarity index 100% rename from cairo/test/reference/self-copy.argb32.ref.png rename to 3rd-party/cairo/test/reference/self-copy.argb32.ref.png diff --git a/cairo/test/reference/self-copy.base.argb32.ref.png b/3rd-party/cairo/test/reference/self-copy.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/self-copy.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/self-copy.base.argb32.ref.png diff --git a/cairo/test/reference/self-copy.base.rgb24.ref.png b/3rd-party/cairo/test/reference/self-copy.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/self-copy.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/self-copy.base.rgb24.ref.png diff --git a/cairo/test/reference/self-copy.ps2.ref.png b/3rd-party/cairo/test/reference/self-copy.ps2.ref.png similarity index 100% rename from cairo/test/reference/self-copy.ps2.ref.png rename to 3rd-party/cairo/test/reference/self-copy.ps2.ref.png diff --git a/cairo/test/reference/self-copy.ps3.ref.png b/3rd-party/cairo/test/reference/self-copy.ps3.ref.png similarity index 100% rename from cairo/test/reference/self-copy.ps3.ref.png rename to 3rd-party/cairo/test/reference/self-copy.ps3.ref.png diff --git a/cairo/test/reference/self-copy.rgb24.ref.png b/3rd-party/cairo/test/reference/self-copy.rgb24.ref.png similarity index 100% rename from cairo/test/reference/self-copy.rgb24.ref.png rename to 3rd-party/cairo/test/reference/self-copy.rgb24.ref.png diff --git a/cairo/test/reference/self-copy.traps.argb32.ref.png b/3rd-party/cairo/test/reference/self-copy.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/self-copy.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/self-copy.traps.argb32.ref.png diff --git a/cairo/test/reference/self-copy.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/self-copy.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/self-copy.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/self-copy.traps.rgb24.ref.png diff --git a/cairo/test/reference/self-intersecting.base.argb32.ref.png b/3rd-party/cairo/test/reference/self-intersecting.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/self-intersecting.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/self-intersecting.base.argb32.ref.png diff --git a/cairo/test/reference/self-intersecting.base.rgb24.ref.png b/3rd-party/cairo/test/reference/self-intersecting.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/self-intersecting.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/self-intersecting.base.rgb24.ref.png diff --git a/cairo/test/reference/self-intersecting.ps.ref.png b/3rd-party/cairo/test/reference/self-intersecting.ps.ref.png similarity index 100% rename from cairo/test/reference/self-intersecting.ps.ref.png rename to 3rd-party/cairo/test/reference/self-intersecting.ps.ref.png diff --git a/cairo/test/reference/self-intersecting.quartz.xfail.png b/3rd-party/cairo/test/reference/self-intersecting.quartz.xfail.png similarity index 100% rename from cairo/test/reference/self-intersecting.quartz.xfail.png rename to 3rd-party/cairo/test/reference/self-intersecting.quartz.xfail.png diff --git a/cairo/test/reference/self-intersecting.ref.png b/3rd-party/cairo/test/reference/self-intersecting.ref.png similarity index 100% rename from cairo/test/reference/self-intersecting.ref.png rename to 3rd-party/cairo/test/reference/self-intersecting.ref.png diff --git a/cairo/test/reference/self-intersecting.traps.argb32.ref.png b/3rd-party/cairo/test/reference/self-intersecting.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/self-intersecting.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/self-intersecting.traps.argb32.ref.png diff --git a/cairo/test/reference/self-intersecting.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/self-intersecting.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/self-intersecting.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/self-intersecting.traps.rgb24.ref.png diff --git a/cairo/test/reference/set-source.argb32.ref.png b/3rd-party/cairo/test/reference/set-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/set-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/set-source.argb32.ref.png diff --git a/cairo/test/reference/set-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/set-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/set-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/set-source.base.argb32.ref.png diff --git a/cairo/test/reference/set-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/set-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/set-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/set-source.base.rgb24.ref.png diff --git a/cairo/test/reference/set-source.rgb24.ref.png b/3rd-party/cairo/test/reference/set-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/set-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/set-source.rgb24.ref.png diff --git a/cairo/test/reference/shape-general-convex.argb32.ref.png b/3rd-party/cairo/test/reference/shape-general-convex.argb32.ref.png similarity index 100% rename from cairo/test/reference/shape-general-convex.argb32.ref.png rename to 3rd-party/cairo/test/reference/shape-general-convex.argb32.ref.png diff --git a/cairo/test/reference/shape-general-convex.base.argb32.ref.png b/3rd-party/cairo/test/reference/shape-general-convex.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/shape-general-convex.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/shape-general-convex.base.argb32.ref.png diff --git a/cairo/test/reference/shape-general-convex.base.rgb24.ref.png b/3rd-party/cairo/test/reference/shape-general-convex.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/shape-general-convex.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/shape-general-convex.base.rgb24.ref.png diff --git a/cairo/test/reference/shape-general-convex.ps.ref.png b/3rd-party/cairo/test/reference/shape-general-convex.ps.ref.png similarity index 100% rename from cairo/test/reference/shape-general-convex.ps.ref.png rename to 3rd-party/cairo/test/reference/shape-general-convex.ps.ref.png diff --git a/cairo/test/reference/shape-general-convex.rgb24.ref.png b/3rd-party/cairo/test/reference/shape-general-convex.rgb24.ref.png similarity index 100% rename from cairo/test/reference/shape-general-convex.rgb24.ref.png rename to 3rd-party/cairo/test/reference/shape-general-convex.rgb24.ref.png diff --git a/cairo/test/reference/shape-general-convex.traps.argb32.ref.png b/3rd-party/cairo/test/reference/shape-general-convex.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/shape-general-convex.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/shape-general-convex.traps.argb32.ref.png diff --git a/cairo/test/reference/shape-general-convex.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/shape-general-convex.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/shape-general-convex.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/shape-general-convex.traps.rgb24.ref.png diff --git a/cairo/test/reference/shape-sierpinski.argb32.ref.png b/3rd-party/cairo/test/reference/shape-sierpinski.argb32.ref.png similarity index 100% rename from cairo/test/reference/shape-sierpinski.argb32.ref.png rename to 3rd-party/cairo/test/reference/shape-sierpinski.argb32.ref.png diff --git a/cairo/test/reference/shape-sierpinski.base.argb32.ref.png b/3rd-party/cairo/test/reference/shape-sierpinski.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/shape-sierpinski.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/shape-sierpinski.base.argb32.ref.png diff --git a/cairo/test/reference/shape-sierpinski.base.rgb24.ref.png b/3rd-party/cairo/test/reference/shape-sierpinski.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/shape-sierpinski.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/shape-sierpinski.base.rgb24.ref.png diff --git a/cairo/test/reference/shape-sierpinski.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/shape-sierpinski.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/shape-sierpinski.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/shape-sierpinski.pdf.argb32.ref.png diff --git a/cairo/test/reference/shape-sierpinski.pdf.rgb24.ref.png b/3rd-party/cairo/test/reference/shape-sierpinski.pdf.rgb24.ref.png similarity index 100% rename from cairo/test/reference/shape-sierpinski.pdf.rgb24.ref.png rename to 3rd-party/cairo/test/reference/shape-sierpinski.pdf.rgb24.ref.png diff --git a/cairo/test/reference/shape-sierpinski.ps.ref.png b/3rd-party/cairo/test/reference/shape-sierpinski.ps.ref.png similarity index 100% rename from cairo/test/reference/shape-sierpinski.ps.ref.png rename to 3rd-party/cairo/test/reference/shape-sierpinski.ps.ref.png diff --git a/cairo/test/reference/shape-sierpinski.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/shape-sierpinski.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/shape-sierpinski.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/shape-sierpinski.ps3.argb32.ref.png diff --git a/cairo/test/reference/shape-sierpinski.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/shape-sierpinski.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/shape-sierpinski.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/shape-sierpinski.ps3.rgb24.ref.png diff --git a/cairo/test/reference/shape-sierpinski.rgb24.ref.png b/3rd-party/cairo/test/reference/shape-sierpinski.rgb24.ref.png similarity index 100% rename from cairo/test/reference/shape-sierpinski.rgb24.ref.png rename to 3rd-party/cairo/test/reference/shape-sierpinski.rgb24.ref.png diff --git a/cairo/test/reference/shape-sierpinski.traps.argb32.ref.png b/3rd-party/cairo/test/reference/shape-sierpinski.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/shape-sierpinski.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/shape-sierpinski.traps.argb32.ref.png diff --git a/cairo/test/reference/shape-sierpinski.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/shape-sierpinski.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/shape-sierpinski.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/shape-sierpinski.traps.rgb24.ref.png diff --git a/cairo/test/reference/show-glyphs-advance.argb32.ref.png b/3rd-party/cairo/test/reference/show-glyphs-advance.argb32.ref.png similarity index 100% rename from cairo/test/reference/show-glyphs-advance.argb32.ref.png rename to 3rd-party/cairo/test/reference/show-glyphs-advance.argb32.ref.png diff --git a/cairo/test/reference/show-glyphs-advance.base.argb32.ref.png b/3rd-party/cairo/test/reference/show-glyphs-advance.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/show-glyphs-advance.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/show-glyphs-advance.base.argb32.ref.png diff --git a/cairo/test/reference/show-glyphs-advance.base.rgb24.ref.png b/3rd-party/cairo/test/reference/show-glyphs-advance.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/show-glyphs-advance.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/show-glyphs-advance.base.rgb24.ref.png diff --git a/cairo/test/reference/show-glyphs-advance.image16.ref.png b/3rd-party/cairo/test/reference/show-glyphs-advance.image16.ref.png similarity index 100% rename from cairo/test/reference/show-glyphs-advance.image16.ref.png rename to 3rd-party/cairo/test/reference/show-glyphs-advance.image16.ref.png diff --git a/cairo/test/reference/show-glyphs-advance.ps.ref.png b/3rd-party/cairo/test/reference/show-glyphs-advance.ps.ref.png similarity index 100% rename from cairo/test/reference/show-glyphs-advance.ps.ref.png rename to 3rd-party/cairo/test/reference/show-glyphs-advance.ps.ref.png diff --git a/cairo/test/reference/show-glyphs-advance.quartz.ref.png b/3rd-party/cairo/test/reference/show-glyphs-advance.quartz.ref.png similarity index 100% rename from cairo/test/reference/show-glyphs-advance.quartz.ref.png rename to 3rd-party/cairo/test/reference/show-glyphs-advance.quartz.ref.png diff --git a/cairo/test/reference/show-glyphs-advance.rgb24.ref.png b/3rd-party/cairo/test/reference/show-glyphs-advance.rgb24.ref.png similarity index 100% rename from cairo/test/reference/show-glyphs-advance.rgb24.ref.png rename to 3rd-party/cairo/test/reference/show-glyphs-advance.rgb24.ref.png diff --git a/cairo/test/reference/show-glyphs-advance.svg.ref.png b/3rd-party/cairo/test/reference/show-glyphs-advance.svg.ref.png similarity index 100% rename from cairo/test/reference/show-glyphs-advance.svg.ref.png rename to 3rd-party/cairo/test/reference/show-glyphs-advance.svg.ref.png diff --git a/cairo/test/reference/show-glyphs-advance.traps.ref.png b/3rd-party/cairo/test/reference/show-glyphs-advance.traps.ref.png similarity index 100% rename from cairo/test/reference/show-glyphs-advance.traps.ref.png rename to 3rd-party/cairo/test/reference/show-glyphs-advance.traps.ref.png diff --git a/cairo/test/reference/show-glyphs-many.base.argb32.ref.png b/3rd-party/cairo/test/reference/show-glyphs-many.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/show-glyphs-many.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/show-glyphs-many.base.argb32.ref.png diff --git a/cairo/test/reference/show-glyphs-many.base.rgb24.ref.png b/3rd-party/cairo/test/reference/show-glyphs-many.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/show-glyphs-many.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/show-glyphs-many.base.rgb24.ref.png diff --git a/cairo/test/reference/show-glyphs-many.ref.png b/3rd-party/cairo/test/reference/show-glyphs-many.ref.png similarity index 100% rename from cairo/test/reference/show-glyphs-many.ref.png rename to 3rd-party/cairo/test/reference/show-glyphs-many.ref.png diff --git a/cairo/test/reference/show-text-current-point.argb32.ref.png b/3rd-party/cairo/test/reference/show-text-current-point.argb32.ref.png similarity index 100% rename from cairo/test/reference/show-text-current-point.argb32.ref.png rename to 3rd-party/cairo/test/reference/show-text-current-point.argb32.ref.png diff --git a/cairo/test/reference/show-text-current-point.base.argb32.ref.png b/3rd-party/cairo/test/reference/show-text-current-point.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/show-text-current-point.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/show-text-current-point.base.argb32.ref.png diff --git a/cairo/test/reference/show-text-current-point.base.rgb24.ref.png b/3rd-party/cairo/test/reference/show-text-current-point.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/show-text-current-point.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/show-text-current-point.base.rgb24.ref.png diff --git a/cairo/test/reference/show-text-current-point.image16.ref.png b/3rd-party/cairo/test/reference/show-text-current-point.image16.ref.png similarity index 100% rename from cairo/test/reference/show-text-current-point.image16.ref.png rename to 3rd-party/cairo/test/reference/show-text-current-point.image16.ref.png diff --git a/cairo/test/reference/show-text-current-point.ps2.ref.png b/3rd-party/cairo/test/reference/show-text-current-point.ps2.ref.png similarity index 100% rename from cairo/test/reference/show-text-current-point.ps2.ref.png rename to 3rd-party/cairo/test/reference/show-text-current-point.ps2.ref.png diff --git a/cairo/test/reference/show-text-current-point.ps3.ref.png b/3rd-party/cairo/test/reference/show-text-current-point.ps3.ref.png similarity index 100% rename from cairo/test/reference/show-text-current-point.ps3.ref.png rename to 3rd-party/cairo/test/reference/show-text-current-point.ps3.ref.png diff --git a/cairo/test/reference/show-text-current-point.quartz.ref.png b/3rd-party/cairo/test/reference/show-text-current-point.quartz.ref.png similarity index 100% rename from cairo/test/reference/show-text-current-point.quartz.ref.png rename to 3rd-party/cairo/test/reference/show-text-current-point.quartz.ref.png diff --git a/cairo/test/reference/show-text-current-point.rgb24.ref.png b/3rd-party/cairo/test/reference/show-text-current-point.rgb24.ref.png similarity index 100% rename from cairo/test/reference/show-text-current-point.rgb24.ref.png rename to 3rd-party/cairo/test/reference/show-text-current-point.rgb24.ref.png diff --git a/cairo/test/reference/show-text-current-point.traps.ref.png b/3rd-party/cairo/test/reference/show-text-current-point.traps.ref.png similarity index 100% rename from cairo/test/reference/show-text-current-point.traps.ref.png rename to 3rd-party/cairo/test/reference/show-text-current-point.traps.ref.png diff --git a/cairo/test/reference/skew-extreme.argb32.ref.png b/3rd-party/cairo/test/reference/skew-extreme.argb32.ref.png similarity index 100% rename from cairo/test/reference/skew-extreme.argb32.ref.png rename to 3rd-party/cairo/test/reference/skew-extreme.argb32.ref.png diff --git a/cairo/test/reference/skew-extreme.base.argb32.ref.png b/3rd-party/cairo/test/reference/skew-extreme.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/skew-extreme.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/skew-extreme.base.argb32.ref.png diff --git a/cairo/test/reference/skew-extreme.base.rgb24.ref.png b/3rd-party/cairo/test/reference/skew-extreme.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/skew-extreme.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/skew-extreme.base.rgb24.ref.png diff --git a/cairo/test/reference/skew-extreme.ps2.ref.png b/3rd-party/cairo/test/reference/skew-extreme.ps2.ref.png similarity index 100% rename from cairo/test/reference/skew-extreme.ps2.ref.png rename to 3rd-party/cairo/test/reference/skew-extreme.ps2.ref.png diff --git a/cairo/test/reference/skew-extreme.ps3.ref.png b/3rd-party/cairo/test/reference/skew-extreme.ps3.ref.png similarity index 100% rename from cairo/test/reference/skew-extreme.ps3.ref.png rename to 3rd-party/cairo/test/reference/skew-extreme.ps3.ref.png diff --git a/cairo/test/reference/skew-extreme.rgb24.ref.png b/3rd-party/cairo/test/reference/skew-extreme.rgb24.ref.png similarity index 100% rename from cairo/test/reference/skew-extreme.rgb24.ref.png rename to 3rd-party/cairo/test/reference/skew-extreme.rgb24.ref.png diff --git a/cairo/test/reference/skew-extreme.traps.argb32.ref.png b/3rd-party/cairo/test/reference/skew-extreme.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/skew-extreme.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/skew-extreme.traps.argb32.ref.png diff --git a/cairo/test/reference/skew-extreme.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/skew-extreme.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/skew-extreme.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/skew-extreme.traps.rgb24.ref.png diff --git a/cairo/test/reference/smask-fill.argb32.ref.png b/3rd-party/cairo/test/reference/smask-fill.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask-fill.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask-fill.argb32.ref.png diff --git a/cairo/test/reference/smask-fill.base.argb32.ref.png b/3rd-party/cairo/test/reference/smask-fill.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask-fill.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask-fill.base.argb32.ref.png diff --git a/cairo/test/reference/smask-fill.base.rgb24.ref.png b/3rd-party/cairo/test/reference/smask-fill.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask-fill.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask-fill.base.rgb24.ref.png diff --git a/cairo/test/reference/smask-fill.image16.ref.png b/3rd-party/cairo/test/reference/smask-fill.image16.ref.png similarity index 100% rename from cairo/test/reference/smask-fill.image16.ref.png rename to 3rd-party/cairo/test/reference/smask-fill.image16.ref.png diff --git a/cairo/test/reference/smask-fill.pdf.ref.png b/3rd-party/cairo/test/reference/smask-fill.pdf.ref.png similarity index 100% rename from cairo/test/reference/smask-fill.pdf.ref.png rename to 3rd-party/cairo/test/reference/smask-fill.pdf.ref.png diff --git a/cairo/test/reference/smask-fill.quartz.ref.png b/3rd-party/cairo/test/reference/smask-fill.quartz.ref.png similarity index 100% rename from cairo/test/reference/smask-fill.quartz.ref.png rename to 3rd-party/cairo/test/reference/smask-fill.quartz.ref.png diff --git a/cairo/test/reference/smask-fill.rgb24.ref.png b/3rd-party/cairo/test/reference/smask-fill.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask-fill.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask-fill.rgb24.ref.png diff --git a/cairo/test/reference/smask-fill.svg.ref.png b/3rd-party/cairo/test/reference/smask-fill.svg.ref.png similarity index 100% rename from cairo/test/reference/smask-fill.svg.ref.png rename to 3rd-party/cairo/test/reference/smask-fill.svg.ref.png diff --git a/cairo/test/reference/smask-fill.traps.argb32.ref.png b/3rd-party/cairo/test/reference/smask-fill.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask-fill.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask-fill.traps.argb32.ref.png diff --git a/cairo/test/reference/smask-fill.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/smask-fill.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask-fill.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask-fill.traps.rgb24.ref.png diff --git a/cairo/test/reference/smask-image-mask.argb32.ref.png b/3rd-party/cairo/test/reference/smask-image-mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask-image-mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask-image-mask.argb32.ref.png diff --git a/cairo/test/reference/smask-image-mask.base.argb32.ref.png b/3rd-party/cairo/test/reference/smask-image-mask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask-image-mask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask-image-mask.base.argb32.ref.png diff --git a/cairo/test/reference/smask-image-mask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/smask-image-mask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask-image-mask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask-image-mask.base.rgb24.ref.png diff --git a/cairo/test/reference/smask-image-mask.pdf.ref.png b/3rd-party/cairo/test/reference/smask-image-mask.pdf.ref.png similarity index 100% rename from cairo/test/reference/smask-image-mask.pdf.ref.png rename to 3rd-party/cairo/test/reference/smask-image-mask.pdf.ref.png diff --git a/cairo/test/reference/smask-image-mask.rgb24.ref.png b/3rd-party/cairo/test/reference/smask-image-mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask-image-mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask-image-mask.rgb24.ref.png diff --git a/cairo/test/reference/smask-mask.argb32.ref.png b/3rd-party/cairo/test/reference/smask-mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask-mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask-mask.argb32.ref.png diff --git a/cairo/test/reference/smask-mask.base.argb32.ref.png b/3rd-party/cairo/test/reference/smask-mask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask-mask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask-mask.base.argb32.ref.png diff --git a/cairo/test/reference/smask-mask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/smask-mask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask-mask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask-mask.base.rgb24.ref.png diff --git a/cairo/test/reference/smask-mask.image16.ref.png b/3rd-party/cairo/test/reference/smask-mask.image16.ref.png similarity index 100% rename from cairo/test/reference/smask-mask.image16.ref.png rename to 3rd-party/cairo/test/reference/smask-mask.image16.ref.png diff --git a/cairo/test/reference/smask-mask.pdf.ref.png b/3rd-party/cairo/test/reference/smask-mask.pdf.ref.png similarity index 100% rename from cairo/test/reference/smask-mask.pdf.ref.png rename to 3rd-party/cairo/test/reference/smask-mask.pdf.ref.png diff --git a/cairo/test/reference/smask-mask.quartz.ref.png b/3rd-party/cairo/test/reference/smask-mask.quartz.ref.png similarity index 100% rename from cairo/test/reference/smask-mask.quartz.ref.png rename to 3rd-party/cairo/test/reference/smask-mask.quartz.ref.png diff --git a/cairo/test/reference/smask-mask.rgb24.ref.png b/3rd-party/cairo/test/reference/smask-mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask-mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask-mask.rgb24.ref.png diff --git a/cairo/test/reference/smask-mask.svg.ref.png b/3rd-party/cairo/test/reference/smask-mask.svg.ref.png similarity index 100% rename from cairo/test/reference/smask-mask.svg.ref.png rename to 3rd-party/cairo/test/reference/smask-mask.svg.ref.png diff --git a/cairo/test/reference/smask-paint.argb32.ref.png b/3rd-party/cairo/test/reference/smask-paint.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask-paint.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask-paint.argb32.ref.png diff --git a/cairo/test/reference/smask-paint.base.argb32.ref.png b/3rd-party/cairo/test/reference/smask-paint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask-paint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask-paint.base.argb32.ref.png diff --git a/cairo/test/reference/smask-paint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/smask-paint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask-paint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask-paint.base.rgb24.ref.png diff --git a/cairo/test/reference/smask-paint.image16.ref.png b/3rd-party/cairo/test/reference/smask-paint.image16.ref.png similarity index 100% rename from cairo/test/reference/smask-paint.image16.ref.png rename to 3rd-party/cairo/test/reference/smask-paint.image16.ref.png diff --git a/cairo/test/reference/smask-paint.pdf.ref.png b/3rd-party/cairo/test/reference/smask-paint.pdf.ref.png similarity index 100% rename from cairo/test/reference/smask-paint.pdf.ref.png rename to 3rd-party/cairo/test/reference/smask-paint.pdf.ref.png diff --git a/cairo/test/reference/smask-paint.quartz.ref.png b/3rd-party/cairo/test/reference/smask-paint.quartz.ref.png similarity index 100% rename from cairo/test/reference/smask-paint.quartz.ref.png rename to 3rd-party/cairo/test/reference/smask-paint.quartz.ref.png diff --git a/cairo/test/reference/smask-paint.rgb24.ref.png b/3rd-party/cairo/test/reference/smask-paint.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask-paint.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask-paint.rgb24.ref.png diff --git a/cairo/test/reference/smask-paint.svg.ref.png b/3rd-party/cairo/test/reference/smask-paint.svg.ref.png similarity index 100% rename from cairo/test/reference/smask-paint.svg.ref.png rename to 3rd-party/cairo/test/reference/smask-paint.svg.ref.png diff --git a/cairo/test/reference/smask-stroke.argb32.ref.png b/3rd-party/cairo/test/reference/smask-stroke.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask-stroke.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask-stroke.argb32.ref.png diff --git a/cairo/test/reference/smask-stroke.base.argb32.ref.png b/3rd-party/cairo/test/reference/smask-stroke.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask-stroke.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask-stroke.base.argb32.ref.png diff --git a/cairo/test/reference/smask-stroke.base.rgb24.ref.png b/3rd-party/cairo/test/reference/smask-stroke.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask-stroke.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask-stroke.base.rgb24.ref.png diff --git a/cairo/test/reference/smask-stroke.image16.ref.png b/3rd-party/cairo/test/reference/smask-stroke.image16.ref.png similarity index 100% rename from cairo/test/reference/smask-stroke.image16.ref.png rename to 3rd-party/cairo/test/reference/smask-stroke.image16.ref.png diff --git a/cairo/test/reference/smask-stroke.pdf.xfail.png b/3rd-party/cairo/test/reference/smask-stroke.pdf.xfail.png similarity index 100% rename from cairo/test/reference/smask-stroke.pdf.xfail.png rename to 3rd-party/cairo/test/reference/smask-stroke.pdf.xfail.png diff --git a/cairo/test/reference/smask-stroke.quartz.ref.png b/3rd-party/cairo/test/reference/smask-stroke.quartz.ref.png similarity index 100% rename from cairo/test/reference/smask-stroke.quartz.ref.png rename to 3rd-party/cairo/test/reference/smask-stroke.quartz.ref.png diff --git a/cairo/test/reference/smask-stroke.rgb24.ref.png b/3rd-party/cairo/test/reference/smask-stroke.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask-stroke.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask-stroke.rgb24.ref.png diff --git a/cairo/test/reference/smask-stroke.traps.argb32.ref.png b/3rd-party/cairo/test/reference/smask-stroke.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask-stroke.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask-stroke.traps.argb32.ref.png diff --git a/cairo/test/reference/smask-stroke.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/smask-stroke.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask-stroke.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask-stroke.traps.rgb24.ref.png diff --git a/cairo/test/reference/smask-text.argb32.ref.png b/3rd-party/cairo/test/reference/smask-text.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask-text.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask-text.argb32.ref.png diff --git a/cairo/test/reference/smask-text.base.argb32.ref.png b/3rd-party/cairo/test/reference/smask-text.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask-text.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask-text.base.argb32.ref.png diff --git a/cairo/test/reference/smask-text.base.rgb24.ref.png b/3rd-party/cairo/test/reference/smask-text.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask-text.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask-text.base.rgb24.ref.png diff --git a/cairo/test/reference/smask-text.image16.ref.png b/3rd-party/cairo/test/reference/smask-text.image16.ref.png similarity index 100% rename from cairo/test/reference/smask-text.image16.ref.png rename to 3rd-party/cairo/test/reference/smask-text.image16.ref.png diff --git a/cairo/test/reference/smask-text.mask.argb32.ref.png b/3rd-party/cairo/test/reference/smask-text.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask-text.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask-text.mask.argb32.ref.png diff --git a/cairo/test/reference/smask-text.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/smask-text.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask-text.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask-text.mask.rgb24.ref.png diff --git a/cairo/test/reference/smask-text.pdf.ref.png b/3rd-party/cairo/test/reference/smask-text.pdf.ref.png similarity index 100% rename from cairo/test/reference/smask-text.pdf.ref.png rename to 3rd-party/cairo/test/reference/smask-text.pdf.ref.png diff --git a/cairo/test/reference/smask-text.ps2.ref.png b/3rd-party/cairo/test/reference/smask-text.ps2.ref.png similarity index 100% rename from cairo/test/reference/smask-text.ps2.ref.png rename to 3rd-party/cairo/test/reference/smask-text.ps2.ref.png diff --git a/cairo/test/reference/smask-text.ps3.ref.png b/3rd-party/cairo/test/reference/smask-text.ps3.ref.png similarity index 100% rename from cairo/test/reference/smask-text.ps3.ref.png rename to 3rd-party/cairo/test/reference/smask-text.ps3.ref.png diff --git a/cairo/test/reference/smask-text.quartz.ref.png b/3rd-party/cairo/test/reference/smask-text.quartz.ref.png similarity index 100% rename from cairo/test/reference/smask-text.quartz.ref.png rename to 3rd-party/cairo/test/reference/smask-text.quartz.ref.png diff --git a/cairo/test/reference/smask-text.rgb24.ref.png b/3rd-party/cairo/test/reference/smask-text.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask-text.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask-text.rgb24.ref.png diff --git a/cairo/test/reference/smask-text.script.ref.png b/3rd-party/cairo/test/reference/smask-text.script.ref.png similarity index 100% rename from cairo/test/reference/smask-text.script.ref.png rename to 3rd-party/cairo/test/reference/smask-text.script.ref.png diff --git a/cairo/test/reference/smask-text.svg.ref.png b/3rd-party/cairo/test/reference/smask-text.svg.ref.png similarity index 100% rename from cairo/test/reference/smask-text.svg.ref.png rename to 3rd-party/cairo/test/reference/smask-text.svg.ref.png diff --git a/cairo/test/reference/smask-text.traps.ref.png b/3rd-party/cairo/test/reference/smask-text.traps.ref.png similarity index 100% rename from cairo/test/reference/smask-text.traps.ref.png rename to 3rd-party/cairo/test/reference/smask-text.traps.ref.png diff --git a/cairo/test/reference/smask-text.xlib-fallback.ref.png b/3rd-party/cairo/test/reference/smask-text.xlib-fallback.ref.png similarity index 100% rename from cairo/test/reference/smask-text.xlib-fallback.ref.png rename to 3rd-party/cairo/test/reference/smask-text.xlib-fallback.ref.png diff --git a/cairo/test/reference/smask.argb32.ref.png b/3rd-party/cairo/test/reference/smask.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask.argb32.ref.png diff --git a/cairo/test/reference/smask.base.argb32.ref.png b/3rd-party/cairo/test/reference/smask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask.base.argb32.ref.png diff --git a/cairo/test/reference/smask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/smask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask.base.rgb24.ref.png diff --git a/cairo/test/reference/smask.image16.ref.png b/3rd-party/cairo/test/reference/smask.image16.ref.png similarity index 100% rename from cairo/test/reference/smask.image16.ref.png rename to 3rd-party/cairo/test/reference/smask.image16.ref.png diff --git a/cairo/test/reference/smask.mask.argb32.ref.png b/3rd-party/cairo/test/reference/smask.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/smask.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/smask.mask.argb32.ref.png diff --git a/cairo/test/reference/smask.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/smask.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask.mask.rgb24.ref.png diff --git a/cairo/test/reference/smask.pdf.xfail.png b/3rd-party/cairo/test/reference/smask.pdf.xfail.png similarity index 100% rename from cairo/test/reference/smask.pdf.xfail.png rename to 3rd-party/cairo/test/reference/smask.pdf.xfail.png diff --git a/cairo/test/reference/smask.ps.ref.png b/3rd-party/cairo/test/reference/smask.ps.ref.png similarity index 100% rename from cairo/test/reference/smask.ps.ref.png rename to 3rd-party/cairo/test/reference/smask.ps.ref.png diff --git a/cairo/test/reference/smask.quartz.ref.png b/3rd-party/cairo/test/reference/smask.quartz.ref.png similarity index 100% rename from cairo/test/reference/smask.quartz.ref.png rename to 3rd-party/cairo/test/reference/smask.quartz.ref.png diff --git a/cairo/test/reference/smask.rgb24.ref.png b/3rd-party/cairo/test/reference/smask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/smask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/smask.rgb24.ref.png diff --git a/cairo/test/reference/smask.script.ref.png b/3rd-party/cairo/test/reference/smask.script.ref.png similarity index 100% rename from cairo/test/reference/smask.script.ref.png rename to 3rd-party/cairo/test/reference/smask.script.ref.png diff --git a/cairo/test/reference/smask.svg.ref.png b/3rd-party/cairo/test/reference/smask.svg.ref.png similarity index 100% rename from cairo/test/reference/smask.svg.ref.png rename to 3rd-party/cairo/test/reference/smask.svg.ref.png diff --git a/cairo/test/reference/smask.traps.ref.png b/3rd-party/cairo/test/reference/smask.traps.ref.png similarity index 100% rename from cairo/test/reference/smask.traps.ref.png rename to 3rd-party/cairo/test/reference/smask.traps.ref.png diff --git a/cairo/test/reference/smask.xlib-fallback.ref.png b/3rd-party/cairo/test/reference/smask.xlib-fallback.ref.png similarity index 100% rename from cairo/test/reference/smask.xlib-fallback.ref.png rename to 3rd-party/cairo/test/reference/smask.xlib-fallback.ref.png diff --git a/cairo/test/reference/solid-pattern-cache-stress.base.argb32.ref.png b/3rd-party/cairo/test/reference/solid-pattern-cache-stress.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/solid-pattern-cache-stress.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/solid-pattern-cache-stress.base.argb32.ref.png diff --git a/cairo/test/reference/solid-pattern-cache-stress.base.rgb24.ref.png b/3rd-party/cairo/test/reference/solid-pattern-cache-stress.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/solid-pattern-cache-stress.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/solid-pattern-cache-stress.base.rgb24.ref.png diff --git a/cairo/test/reference/solid-pattern-cache-stress.ref.png b/3rd-party/cairo/test/reference/solid-pattern-cache-stress.ref.png similarity index 100% rename from cairo/test/reference/solid-pattern-cache-stress.ref.png rename to 3rd-party/cairo/test/reference/solid-pattern-cache-stress.ref.png diff --git a/cairo/test/reference/source-clip-scale.base.argb32.ref.png b/3rd-party/cairo/test/reference/source-clip-scale.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/source-clip-scale.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/source-clip-scale.base.argb32.ref.png diff --git a/cairo/test/reference/source-clip-scale.base.rgb24.ref.png b/3rd-party/cairo/test/reference/source-clip-scale.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/source-clip-scale.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/source-clip-scale.base.rgb24.ref.png diff --git a/cairo/test/reference/source-clip-scale.gl.ref.png b/3rd-party/cairo/test/reference/source-clip-scale.gl.ref.png similarity index 100% rename from cairo/test/reference/source-clip-scale.gl.ref.png rename to 3rd-party/cairo/test/reference/source-clip-scale.gl.ref.png diff --git a/cairo/test/reference/source-clip-scale.pdf.ref.png b/3rd-party/cairo/test/reference/source-clip-scale.pdf.ref.png similarity index 100% rename from cairo/test/reference/source-clip-scale.pdf.ref.png rename to 3rd-party/cairo/test/reference/source-clip-scale.pdf.ref.png diff --git a/cairo/test/reference/source-clip-scale.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/source-clip-scale.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/source-clip-scale.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/source-clip-scale.ps2.argb32.ref.png diff --git a/cairo/test/reference/source-clip-scale.ps2.rgb24.ref.png b/3rd-party/cairo/test/reference/source-clip-scale.ps2.rgb24.ref.png similarity index 100% rename from cairo/test/reference/source-clip-scale.ps2.rgb24.ref.png rename to 3rd-party/cairo/test/reference/source-clip-scale.ps2.rgb24.ref.png diff --git a/cairo/test/reference/source-clip-scale.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/source-clip-scale.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/source-clip-scale.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/source-clip-scale.ps3.argb32.ref.png diff --git a/cairo/test/reference/source-clip-scale.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/source-clip-scale.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/source-clip-scale.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/source-clip-scale.ps3.rgb24.ref.png diff --git a/cairo/test/reference/source-clip-scale.quartz.ref.png b/3rd-party/cairo/test/reference/source-clip-scale.quartz.ref.png similarity index 100% rename from cairo/test/reference/source-clip-scale.quartz.ref.png rename to 3rd-party/cairo/test/reference/source-clip-scale.quartz.ref.png diff --git a/cairo/test/reference/source-clip-scale.recording.ref.png b/3rd-party/cairo/test/reference/source-clip-scale.recording.ref.png similarity index 100% rename from cairo/test/reference/source-clip-scale.recording.ref.png rename to 3rd-party/cairo/test/reference/source-clip-scale.recording.ref.png diff --git a/cairo/test/reference/source-clip-scale.ref.png b/3rd-party/cairo/test/reference/source-clip-scale.ref.png similarity index 100% rename from cairo/test/reference/source-clip-scale.ref.png rename to 3rd-party/cairo/test/reference/source-clip-scale.ref.png diff --git a/cairo/test/reference/source-clip-scale.svg.ref.png b/3rd-party/cairo/test/reference/source-clip-scale.svg.ref.png similarity index 100% rename from cairo/test/reference/source-clip-scale.svg.ref.png rename to 3rd-party/cairo/test/reference/source-clip-scale.svg.ref.png diff --git a/cairo/test/reference/source-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/source-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/source-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/source-clip.base.argb32.ref.png diff --git a/cairo/test/reference/source-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/source-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/source-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/source-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/source-clip.ref.png b/3rd-party/cairo/test/reference/source-clip.ref.png similarity index 100% rename from cairo/test/reference/source-clip.ref.png rename to 3rd-party/cairo/test/reference/source-clip.ref.png diff --git a/cairo/test/reference/source-surface-scale-paint.argb32.ref.png b/3rd-party/cairo/test/reference/source-surface-scale-paint.argb32.ref.png similarity index 100% rename from cairo/test/reference/source-surface-scale-paint.argb32.ref.png rename to 3rd-party/cairo/test/reference/source-surface-scale-paint.argb32.ref.png diff --git a/cairo/test/reference/source-surface-scale-paint.base.argb32.ref.png b/3rd-party/cairo/test/reference/source-surface-scale-paint.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/source-surface-scale-paint.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/source-surface-scale-paint.base.argb32.ref.png diff --git a/cairo/test/reference/source-surface-scale-paint.base.rgb24.ref.png b/3rd-party/cairo/test/reference/source-surface-scale-paint.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/source-surface-scale-paint.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/source-surface-scale-paint.base.rgb24.ref.png diff --git a/cairo/test/reference/source-surface-scale-paint.rgb24.ref.png b/3rd-party/cairo/test/reference/source-surface-scale-paint.rgb24.ref.png similarity index 100% rename from cairo/test/reference/source-surface-scale-paint.rgb24.ref.png rename to 3rd-party/cairo/test/reference/source-surface-scale-paint.rgb24.ref.png diff --git a/cairo/test/reference/spline-decomposition.argb32.ref.png b/3rd-party/cairo/test/reference/spline-decomposition.argb32.ref.png similarity index 100% rename from cairo/test/reference/spline-decomposition.argb32.ref.png rename to 3rd-party/cairo/test/reference/spline-decomposition.argb32.ref.png diff --git a/cairo/test/reference/spline-decomposition.base.argb32.ref.png b/3rd-party/cairo/test/reference/spline-decomposition.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/spline-decomposition.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/spline-decomposition.base.argb32.ref.png diff --git a/cairo/test/reference/spline-decomposition.base.rgb24.ref.png b/3rd-party/cairo/test/reference/spline-decomposition.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/spline-decomposition.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/spline-decomposition.base.rgb24.ref.png diff --git a/cairo/test/reference/spline-decomposition.image16.ref.png b/3rd-party/cairo/test/reference/spline-decomposition.image16.ref.png similarity index 100% rename from cairo/test/reference/spline-decomposition.image16.ref.png rename to 3rd-party/cairo/test/reference/spline-decomposition.image16.ref.png diff --git a/cairo/test/reference/spline-decomposition.pdf.ref.png b/3rd-party/cairo/test/reference/spline-decomposition.pdf.ref.png similarity index 100% rename from cairo/test/reference/spline-decomposition.pdf.ref.png rename to 3rd-party/cairo/test/reference/spline-decomposition.pdf.ref.png diff --git a/cairo/test/reference/spline-decomposition.ps.ref.png b/3rd-party/cairo/test/reference/spline-decomposition.ps.ref.png similarity index 100% rename from cairo/test/reference/spline-decomposition.ps.ref.png rename to 3rd-party/cairo/test/reference/spline-decomposition.ps.ref.png diff --git a/cairo/test/reference/spline-decomposition.quartz.xfail.png b/3rd-party/cairo/test/reference/spline-decomposition.quartz.xfail.png similarity index 100% rename from cairo/test/reference/spline-decomposition.quartz.xfail.png rename to 3rd-party/cairo/test/reference/spline-decomposition.quartz.xfail.png diff --git a/cairo/test/reference/spline-decomposition.rgb24.ref.png b/3rd-party/cairo/test/reference/spline-decomposition.rgb24.ref.png similarity index 100% rename from cairo/test/reference/spline-decomposition.rgb24.ref.png rename to 3rd-party/cairo/test/reference/spline-decomposition.rgb24.ref.png diff --git a/cairo/test/reference/spline-decomposition.svg.ref.png b/3rd-party/cairo/test/reference/spline-decomposition.svg.ref.png similarity index 100% rename from cairo/test/reference/spline-decomposition.svg.ref.png rename to 3rd-party/cairo/test/reference/spline-decomposition.svg.ref.png diff --git a/cairo/test/reference/spline-decomposition.traps.argb32.ref.png b/3rd-party/cairo/test/reference/spline-decomposition.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/spline-decomposition.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/spline-decomposition.traps.argb32.ref.png diff --git a/cairo/test/reference/spline-decomposition.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/spline-decomposition.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/spline-decomposition.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/spline-decomposition.traps.rgb24.ref.png diff --git a/cairo/test/reference/stride-12-image.base.argb32.ref.png b/3rd-party/cairo/test/reference/stride-12-image.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/stride-12-image.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/stride-12-image.base.argb32.ref.png diff --git a/cairo/test/reference/stride-12-image.base.rgb24.ref.png b/3rd-party/cairo/test/reference/stride-12-image.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/stride-12-image.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/stride-12-image.base.rgb24.ref.png diff --git a/cairo/test/reference/stride-12-image.image16.ref.png b/3rd-party/cairo/test/reference/stride-12-image.image16.ref.png similarity index 100% rename from cairo/test/reference/stride-12-image.image16.ref.png rename to 3rd-party/cairo/test/reference/stride-12-image.image16.ref.png diff --git a/cairo/test/reference/stride-12-image.ps.ref.png b/3rd-party/cairo/test/reference/stride-12-image.ps.ref.png similarity index 100% rename from cairo/test/reference/stride-12-image.ps.ref.png rename to 3rd-party/cairo/test/reference/stride-12-image.ps.ref.png diff --git a/cairo/test/reference/stride-12-image.ref.png b/3rd-party/cairo/test/reference/stride-12-image.ref.png similarity index 100% rename from cairo/test/reference/stride-12-image.ref.png rename to 3rd-party/cairo/test/reference/stride-12-image.ref.png diff --git a/cairo/test/reference/stride-12-xlib-fallback.rgb24.ref.png b/3rd-party/cairo/test/reference/stride-12-xlib-fallback.rgb24.ref.png similarity index 100% rename from cairo/test/reference/stride-12-xlib-fallback.rgb24.ref.png rename to 3rd-party/cairo/test/reference/stride-12-xlib-fallback.rgb24.ref.png diff --git a/cairo/test/reference/stride-12-xlib-window.rgb24.ref.png b/3rd-party/cairo/test/reference/stride-12-xlib-window.rgb24.ref.png similarity index 100% rename from cairo/test/reference/stride-12-xlib-window.rgb24.ref.png rename to 3rd-party/cairo/test/reference/stride-12-xlib-window.rgb24.ref.png diff --git a/cairo/test/reference/stride-12-xlib.argb32.ref.png b/3rd-party/cairo/test/reference/stride-12-xlib.argb32.ref.png similarity index 100% rename from cairo/test/reference/stride-12-xlib.argb32.ref.png rename to 3rd-party/cairo/test/reference/stride-12-xlib.argb32.ref.png diff --git a/cairo/test/reference/stride-12-xlib.rgb24.ref.png b/3rd-party/cairo/test/reference/stride-12-xlib.rgb24.ref.png similarity index 100% rename from cairo/test/reference/stride-12-xlib.rgb24.ref.png rename to 3rd-party/cairo/test/reference/stride-12-xlib.rgb24.ref.png diff --git a/cairo/test/reference/stroke-clipped.ref.png b/3rd-party/cairo/test/reference/stroke-clipped.ref.png similarity index 100% rename from cairo/test/reference/stroke-clipped.ref.png rename to 3rd-party/cairo/test/reference/stroke-clipped.ref.png diff --git a/cairo/test/reference/stroke-ctm-caps.base.argb32.ref.png b/3rd-party/cairo/test/reference/stroke-ctm-caps.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/stroke-ctm-caps.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/stroke-ctm-caps.base.argb32.ref.png diff --git a/cairo/test/reference/stroke-ctm-caps.base.rgb24.ref.png b/3rd-party/cairo/test/reference/stroke-ctm-caps.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/stroke-ctm-caps.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/stroke-ctm-caps.base.rgb24.ref.png diff --git a/cairo/test/reference/stroke-ctm-caps.image16.ref.png b/3rd-party/cairo/test/reference/stroke-ctm-caps.image16.ref.png similarity index 100% rename from cairo/test/reference/stroke-ctm-caps.image16.ref.png rename to 3rd-party/cairo/test/reference/stroke-ctm-caps.image16.ref.png diff --git a/cairo/test/reference/stroke-ctm-caps.mask.argb32.ref.png b/3rd-party/cairo/test/reference/stroke-ctm-caps.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/stroke-ctm-caps.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/stroke-ctm-caps.mask.argb32.ref.png diff --git a/cairo/test/reference/stroke-ctm-caps.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/stroke-ctm-caps.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/stroke-ctm-caps.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/stroke-ctm-caps.mask.rgb24.ref.png diff --git a/cairo/test/reference/stroke-ctm-caps.ps2.ref.png b/3rd-party/cairo/test/reference/stroke-ctm-caps.ps2.ref.png similarity index 100% rename from cairo/test/reference/stroke-ctm-caps.ps2.ref.png rename to 3rd-party/cairo/test/reference/stroke-ctm-caps.ps2.ref.png diff --git a/cairo/test/reference/stroke-ctm-caps.ps3.ref.png b/3rd-party/cairo/test/reference/stroke-ctm-caps.ps3.ref.png similarity index 100% rename from cairo/test/reference/stroke-ctm-caps.ps3.ref.png rename to 3rd-party/cairo/test/reference/stroke-ctm-caps.ps3.ref.png diff --git a/cairo/test/reference/stroke-ctm-caps.quartz.ref.png b/3rd-party/cairo/test/reference/stroke-ctm-caps.quartz.ref.png similarity index 100% rename from cairo/test/reference/stroke-ctm-caps.quartz.ref.png rename to 3rd-party/cairo/test/reference/stroke-ctm-caps.quartz.ref.png diff --git a/cairo/test/reference/stroke-ctm-caps.ref.png b/3rd-party/cairo/test/reference/stroke-ctm-caps.ref.png similarity index 100% rename from cairo/test/reference/stroke-ctm-caps.ref.png rename to 3rd-party/cairo/test/reference/stroke-ctm-caps.ref.png diff --git a/cairo/test/reference/stroke-ctm-caps.traps.argb32.ref.png b/3rd-party/cairo/test/reference/stroke-ctm-caps.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/stroke-ctm-caps.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/stroke-ctm-caps.traps.argb32.ref.png diff --git a/cairo/test/reference/stroke-ctm-caps.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/stroke-ctm-caps.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/stroke-ctm-caps.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/stroke-ctm-caps.traps.rgb24.ref.png diff --git a/cairo/test/reference/stroke-image.argb32.ref.png b/3rd-party/cairo/test/reference/stroke-image.argb32.ref.png similarity index 100% rename from cairo/test/reference/stroke-image.argb32.ref.png rename to 3rd-party/cairo/test/reference/stroke-image.argb32.ref.png diff --git a/cairo/test/reference/stroke-image.base.argb32.ref.png b/3rd-party/cairo/test/reference/stroke-image.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/stroke-image.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/stroke-image.base.argb32.ref.png diff --git a/cairo/test/reference/stroke-image.base.rgb24.ref.png b/3rd-party/cairo/test/reference/stroke-image.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/stroke-image.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/stroke-image.base.rgb24.ref.png diff --git a/cairo/test/reference/stroke-image.image16.ref.png b/3rd-party/cairo/test/reference/stroke-image.image16.ref.png similarity index 100% rename from cairo/test/reference/stroke-image.image16.ref.png rename to 3rd-party/cairo/test/reference/stroke-image.image16.ref.png diff --git a/cairo/test/reference/stroke-image.pdf.ref.png b/3rd-party/cairo/test/reference/stroke-image.pdf.ref.png similarity index 100% rename from cairo/test/reference/stroke-image.pdf.ref.png rename to 3rd-party/cairo/test/reference/stroke-image.pdf.ref.png diff --git a/cairo/test/reference/stroke-image.ps.ref.png b/3rd-party/cairo/test/reference/stroke-image.ps.ref.png similarity index 100% rename from cairo/test/reference/stroke-image.ps.ref.png rename to 3rd-party/cairo/test/reference/stroke-image.ps.ref.png diff --git a/cairo/test/reference/stroke-image.quartz.ref.png b/3rd-party/cairo/test/reference/stroke-image.quartz.ref.png similarity index 100% rename from cairo/test/reference/stroke-image.quartz.ref.png rename to 3rd-party/cairo/test/reference/stroke-image.quartz.ref.png diff --git a/cairo/test/reference/stroke-image.rgb24.ref.png b/3rd-party/cairo/test/reference/stroke-image.rgb24.ref.png similarity index 100% rename from cairo/test/reference/stroke-image.rgb24.ref.png rename to 3rd-party/cairo/test/reference/stroke-image.rgb24.ref.png diff --git a/cairo/test/reference/stroke-image.traps.argb32.ref.png b/3rd-party/cairo/test/reference/stroke-image.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/stroke-image.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/stroke-image.traps.argb32.ref.png diff --git a/cairo/test/reference/stroke-image.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/stroke-image.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/stroke-image.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/stroke-image.traps.rgb24.ref.png diff --git a/cairo/test/reference/stroke-open-box.base.argb32.ref.png b/3rd-party/cairo/test/reference/stroke-open-box.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/stroke-open-box.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/stroke-open-box.base.argb32.ref.png diff --git a/cairo/test/reference/stroke-open-box.base.rgb24.ref.png b/3rd-party/cairo/test/reference/stroke-open-box.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/stroke-open-box.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/stroke-open-box.base.rgb24.ref.png diff --git a/cairo/test/reference/stroke-open-box.ref.png b/3rd-party/cairo/test/reference/stroke-open-box.ref.png similarity index 100% rename from cairo/test/reference/stroke-open-box.ref.png rename to 3rd-party/cairo/test/reference/stroke-open-box.ref.png diff --git a/cairo/test/reference/stroke-pattern.argb32.ref.png b/3rd-party/cairo/test/reference/stroke-pattern.argb32.ref.png similarity index 100% rename from cairo/test/reference/stroke-pattern.argb32.ref.png rename to 3rd-party/cairo/test/reference/stroke-pattern.argb32.ref.png diff --git a/cairo/test/reference/stroke-pattern.base.argb32.ref.png b/3rd-party/cairo/test/reference/stroke-pattern.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/stroke-pattern.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/stroke-pattern.base.argb32.ref.png diff --git a/cairo/test/reference/stroke-pattern.base.rgb24.ref.png b/3rd-party/cairo/test/reference/stroke-pattern.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/stroke-pattern.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/stroke-pattern.base.rgb24.ref.png diff --git a/cairo/test/reference/stroke-pattern.rgb24.ref.png b/3rd-party/cairo/test/reference/stroke-pattern.rgb24.ref.png similarity index 100% rename from cairo/test/reference/stroke-pattern.rgb24.ref.png rename to 3rd-party/cairo/test/reference/stroke-pattern.rgb24.ref.png diff --git a/cairo/test/reference/stroke-pattern.traps.ref.png b/3rd-party/cairo/test/reference/stroke-pattern.traps.ref.png similarity index 100% rename from cairo/test/reference/stroke-pattern.traps.ref.png rename to 3rd-party/cairo/test/reference/stroke-pattern.traps.ref.png diff --git a/cairo/test/reference/stroke-xlib-fallback.rgb24.ref.png b/3rd-party/cairo/test/reference/stroke-xlib-fallback.rgb24.ref.png similarity index 100% rename from cairo/test/reference/stroke-xlib-fallback.rgb24.ref.png rename to 3rd-party/cairo/test/reference/stroke-xlib-fallback.rgb24.ref.png diff --git a/cairo/test/reference/stroke-xlib-window.rgb24.ref.png b/3rd-party/cairo/test/reference/stroke-xlib-window.rgb24.ref.png similarity index 100% rename from cairo/test/reference/stroke-xlib-window.rgb24.ref.png rename to 3rd-party/cairo/test/reference/stroke-xlib-window.rgb24.ref.png diff --git a/cairo/test/reference/stroke-xlib.argb32.ref.png b/3rd-party/cairo/test/reference/stroke-xlib.argb32.ref.png similarity index 100% rename from cairo/test/reference/stroke-xlib.argb32.ref.png rename to 3rd-party/cairo/test/reference/stroke-xlib.argb32.ref.png diff --git a/cairo/test/reference/stroke-xlib.rgb24.ref.png b/3rd-party/cairo/test/reference/stroke-xlib.rgb24.ref.png similarity index 100% rename from cairo/test/reference/stroke-xlib.rgb24.ref.png rename to 3rd-party/cairo/test/reference/stroke-xlib.rgb24.ref.png diff --git a/cairo/test/reference/subsurface-image-repeat.base.argb32.ref.png b/3rd-party/cairo/test/reference/subsurface-image-repeat.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/subsurface-image-repeat.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/subsurface-image-repeat.base.argb32.ref.png diff --git a/cairo/test/reference/subsurface-image-repeat.base.rgb24.ref.png b/3rd-party/cairo/test/reference/subsurface-image-repeat.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/subsurface-image-repeat.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/subsurface-image-repeat.base.rgb24.ref.png diff --git a/cairo/test/reference/subsurface-image-repeat.image16.ref.png b/3rd-party/cairo/test/reference/subsurface-image-repeat.image16.ref.png similarity index 100% rename from cairo/test/reference/subsurface-image-repeat.image16.ref.png rename to 3rd-party/cairo/test/reference/subsurface-image-repeat.image16.ref.png diff --git a/cairo/test/reference/subsurface-image-repeat.ref.png b/3rd-party/cairo/test/reference/subsurface-image-repeat.ref.png similarity index 100% rename from cairo/test/reference/subsurface-image-repeat.ref.png rename to 3rd-party/cairo/test/reference/subsurface-image-repeat.ref.png diff --git a/cairo/test/reference/subsurface-modify-child.base.argb32.ref.png b/3rd-party/cairo/test/reference/subsurface-modify-child.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/subsurface-modify-child.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/subsurface-modify-child.base.argb32.ref.png diff --git a/cairo/test/reference/subsurface-modify-child.base.rgb24.ref.png b/3rd-party/cairo/test/reference/subsurface-modify-child.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/subsurface-modify-child.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/subsurface-modify-child.base.rgb24.ref.png diff --git a/cairo/test/reference/subsurface-modify-child.ref.png b/3rd-party/cairo/test/reference/subsurface-modify-child.ref.png similarity index 100% rename from cairo/test/reference/subsurface-modify-child.ref.png rename to 3rd-party/cairo/test/reference/subsurface-modify-child.ref.png diff --git a/cairo/test/reference/subsurface-modify-parent.base.argb32.ref.png b/3rd-party/cairo/test/reference/subsurface-modify-parent.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/subsurface-modify-parent.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/subsurface-modify-parent.base.argb32.ref.png diff --git a/cairo/test/reference/subsurface-modify-parent.base.rgb24.ref.png b/3rd-party/cairo/test/reference/subsurface-modify-parent.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/subsurface-modify-parent.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/subsurface-modify-parent.base.rgb24.ref.png diff --git a/cairo/test/reference/subsurface-modify-parent.ref.png b/3rd-party/cairo/test/reference/subsurface-modify-parent.ref.png similarity index 100% rename from cairo/test/reference/subsurface-modify-parent.ref.png rename to 3rd-party/cairo/test/reference/subsurface-modify-parent.ref.png diff --git a/cairo/test/reference/subsurface-outside-target.argb32.ref.png b/3rd-party/cairo/test/reference/subsurface-outside-target.argb32.ref.png similarity index 100% rename from cairo/test/reference/subsurface-outside-target.argb32.ref.png rename to 3rd-party/cairo/test/reference/subsurface-outside-target.argb32.ref.png diff --git a/cairo/test/reference/subsurface-outside-target.base.argb32.ref.png b/3rd-party/cairo/test/reference/subsurface-outside-target.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/subsurface-outside-target.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/subsurface-outside-target.base.argb32.ref.png diff --git a/cairo/test/reference/subsurface-outside-target.base.rgb24.ref.png b/3rd-party/cairo/test/reference/subsurface-outside-target.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/subsurface-outside-target.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/subsurface-outside-target.base.rgb24.ref.png diff --git a/cairo/test/reference/subsurface-outside-target.rgb24.ref.png b/3rd-party/cairo/test/reference/subsurface-outside-target.rgb24.ref.png similarity index 100% rename from cairo/test/reference/subsurface-outside-target.rgb24.ref.png rename to 3rd-party/cairo/test/reference/subsurface-outside-target.rgb24.ref.png diff --git a/cairo/test/reference/subsurface-pad.base.argb32.ref.png b/3rd-party/cairo/test/reference/subsurface-pad.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/subsurface-pad.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/subsurface-pad.base.argb32.ref.png diff --git a/cairo/test/reference/subsurface-pad.base.rgb24.ref.png b/3rd-party/cairo/test/reference/subsurface-pad.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/subsurface-pad.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/subsurface-pad.base.rgb24.ref.png diff --git a/cairo/test/reference/subsurface-pad.quartz.xfail.png b/3rd-party/cairo/test/reference/subsurface-pad.quartz.xfail.png similarity index 100% rename from cairo/test/reference/subsurface-pad.quartz.xfail.png rename to 3rd-party/cairo/test/reference/subsurface-pad.quartz.xfail.png diff --git a/cairo/test/reference/subsurface-pad.ref.png b/3rd-party/cairo/test/reference/subsurface-pad.ref.png similarity index 100% rename from cairo/test/reference/subsurface-pad.ref.png rename to 3rd-party/cairo/test/reference/subsurface-pad.ref.png diff --git a/cairo/test/reference/subsurface-reflect.base.argb32.ref.png b/3rd-party/cairo/test/reference/subsurface-reflect.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/subsurface-reflect.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/subsurface-reflect.base.argb32.ref.png diff --git a/cairo/test/reference/subsurface-reflect.base.rgb24.ref.png b/3rd-party/cairo/test/reference/subsurface-reflect.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/subsurface-reflect.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/subsurface-reflect.base.rgb24.ref.png diff --git a/cairo/test/reference/subsurface-reflect.ref.png b/3rd-party/cairo/test/reference/subsurface-reflect.ref.png similarity index 100% rename from cairo/test/reference/subsurface-reflect.ref.png rename to 3rd-party/cairo/test/reference/subsurface-reflect.ref.png diff --git a/cairo/test/reference/subsurface-repeat.base.argb32.ref.png b/3rd-party/cairo/test/reference/subsurface-repeat.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/subsurface-repeat.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/subsurface-repeat.base.argb32.ref.png diff --git a/cairo/test/reference/subsurface-repeat.base.rgb24.ref.png b/3rd-party/cairo/test/reference/subsurface-repeat.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/subsurface-repeat.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/subsurface-repeat.base.rgb24.ref.png diff --git a/cairo/test/reference/subsurface-repeat.ref.png b/3rd-party/cairo/test/reference/subsurface-repeat.ref.png similarity index 100% rename from cairo/test/reference/subsurface-repeat.ref.png rename to 3rd-party/cairo/test/reference/subsurface-repeat.ref.png diff --git a/cairo/test/reference/subsurface-scale.argb32.ref.png b/3rd-party/cairo/test/reference/subsurface-scale.argb32.ref.png similarity index 100% rename from cairo/test/reference/subsurface-scale.argb32.ref.png rename to 3rd-party/cairo/test/reference/subsurface-scale.argb32.ref.png diff --git a/cairo/test/reference/subsurface-scale.base.argb32.ref.png b/3rd-party/cairo/test/reference/subsurface-scale.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/subsurface-scale.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/subsurface-scale.base.argb32.ref.png diff --git a/cairo/test/reference/subsurface-scale.base.rgb24.ref.png b/3rd-party/cairo/test/reference/subsurface-scale.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/subsurface-scale.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/subsurface-scale.base.rgb24.ref.png diff --git a/cairo/test/reference/subsurface-scale.rgb24.ref.png b/3rd-party/cairo/test/reference/subsurface-scale.rgb24.ref.png similarity index 100% rename from cairo/test/reference/subsurface-scale.rgb24.ref.png rename to 3rd-party/cairo/test/reference/subsurface-scale.rgb24.ref.png diff --git a/cairo/test/reference/subsurface-scale.traps.argb32.ref.png b/3rd-party/cairo/test/reference/subsurface-scale.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/subsurface-scale.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/subsurface-scale.traps.argb32.ref.png diff --git a/cairo/test/reference/subsurface-scale.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/subsurface-scale.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/subsurface-scale.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/subsurface-scale.traps.rgb24.ref.png diff --git a/cairo/test/reference/subsurface-similar-repeat.base.argb32.ref.png b/3rd-party/cairo/test/reference/subsurface-similar-repeat.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/subsurface-similar-repeat.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/subsurface-similar-repeat.base.argb32.ref.png diff --git a/cairo/test/reference/subsurface-similar-repeat.base.rgb24.ref.png b/3rd-party/cairo/test/reference/subsurface-similar-repeat.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/subsurface-similar-repeat.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/subsurface-similar-repeat.base.rgb24.ref.png diff --git a/cairo/test/reference/subsurface-similar-repeat.ref.png b/3rd-party/cairo/test/reference/subsurface-similar-repeat.ref.png similarity index 100% rename from cairo/test/reference/subsurface-similar-repeat.ref.png rename to 3rd-party/cairo/test/reference/subsurface-similar-repeat.ref.png diff --git a/cairo/test/reference/subsurface.argb32.ref.png b/3rd-party/cairo/test/reference/subsurface.argb32.ref.png similarity index 100% rename from cairo/test/reference/subsurface.argb32.ref.png rename to 3rd-party/cairo/test/reference/subsurface.argb32.ref.png diff --git a/cairo/test/reference/subsurface.base.argb32.ref.png b/3rd-party/cairo/test/reference/subsurface.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/subsurface.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/subsurface.base.argb32.ref.png diff --git a/cairo/test/reference/subsurface.base.rgb24.ref.png b/3rd-party/cairo/test/reference/subsurface.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/subsurface.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/subsurface.base.rgb24.ref.png diff --git a/cairo/test/reference/subsurface.image16.ref.png b/3rd-party/cairo/test/reference/subsurface.image16.ref.png similarity index 100% rename from cairo/test/reference/subsurface.image16.ref.png rename to 3rd-party/cairo/test/reference/subsurface.image16.ref.png diff --git a/cairo/test/reference/subsurface.ps.ref.png b/3rd-party/cairo/test/reference/subsurface.ps.ref.png similarity index 100% rename from cairo/test/reference/subsurface.ps.ref.png rename to 3rd-party/cairo/test/reference/subsurface.ps.ref.png diff --git a/cairo/test/reference/subsurface.rgb24.ref.png b/3rd-party/cairo/test/reference/subsurface.rgb24.ref.png similarity index 100% rename from cairo/test/reference/subsurface.rgb24.ref.png rename to 3rd-party/cairo/test/reference/subsurface.rgb24.ref.png diff --git a/cairo/test/reference/subsurface.traps.argb32.ref.png b/3rd-party/cairo/test/reference/subsurface.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/subsurface.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/subsurface.traps.argb32.ref.png diff --git a/cairo/test/reference/subsurface.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/subsurface.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/subsurface.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/subsurface.traps.rgb24.ref.png diff --git a/cairo/test/reference/surface-pattern-big-scale-down.base.argb32.ref.png b/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-big-scale-down.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-big-scale-down.base.argb32.ref.png diff --git a/cairo/test/reference/surface-pattern-big-scale-down.base.rgb24.ref.png b/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-big-scale-down.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-big-scale-down.base.rgb24.ref.png diff --git a/cairo/test/reference/surface-pattern-big-scale-down.ps.ref.png b/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.ps.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-big-scale-down.ps.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-big-scale-down.ps.ref.png diff --git a/cairo/test/reference/surface-pattern-big-scale-down.quartz.ref.png b/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.quartz.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-big-scale-down.quartz.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-big-scale-down.quartz.ref.png diff --git a/cairo/test/reference/surface-pattern-big-scale-down.ref.png b/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-big-scale-down.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-big-scale-down.ref.png diff --git a/cairo/test/reference/surface-pattern-operator.argb32.ref.png b/3rd-party/cairo/test/reference/surface-pattern-operator.argb32.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-operator.argb32.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-operator.argb32.ref.png diff --git a/cairo/test/reference/surface-pattern-operator.base.argb32.ref.png b/3rd-party/cairo/test/reference/surface-pattern-operator.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-operator.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-operator.base.argb32.ref.png diff --git a/cairo/test/reference/surface-pattern-operator.base.rgb24.ref.png b/3rd-party/cairo/test/reference/surface-pattern-operator.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-operator.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-operator.base.rgb24.ref.png diff --git a/cairo/test/reference/surface-pattern-operator.image16.ref.png b/3rd-party/cairo/test/reference/surface-pattern-operator.image16.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-operator.image16.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-operator.image16.ref.png diff --git a/cairo/test/reference/surface-pattern-operator.pdf.argb32.xfail.png b/3rd-party/cairo/test/reference/surface-pattern-operator.pdf.argb32.xfail.png similarity index 100% rename from cairo/test/reference/surface-pattern-operator.pdf.argb32.xfail.png rename to 3rd-party/cairo/test/reference/surface-pattern-operator.pdf.argb32.xfail.png diff --git a/cairo/test/reference/surface-pattern-operator.pdf.rgb24.xfail.png b/3rd-party/cairo/test/reference/surface-pattern-operator.pdf.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/surface-pattern-operator.pdf.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/surface-pattern-operator.pdf.rgb24.xfail.png diff --git a/cairo/test/reference/surface-pattern-operator.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/surface-pattern-operator.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-operator.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-operator.quartz.argb32.ref.png diff --git a/cairo/test/reference/surface-pattern-operator.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/surface-pattern-operator.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-operator.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-operator.quartz.rgb24.ref.png diff --git a/cairo/test/reference/surface-pattern-operator.rgb24.ref.png b/3rd-party/cairo/test/reference/surface-pattern-operator.rgb24.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-operator.rgb24.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-operator.rgb24.ref.png diff --git a/cairo/test/reference/surface-pattern-operator.traps.argb32.ref.png b/3rd-party/cairo/test/reference/surface-pattern-operator.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-operator.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-operator.traps.argb32.ref.png diff --git a/cairo/test/reference/surface-pattern-operator.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/surface-pattern-operator.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-operator.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-operator.traps.rgb24.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down-extend-none.base.argb32.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down-extend-none.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.base.argb32.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down-extend-none.base.rgb24.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down-extend-none.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.base.rgb24.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down-extend-none.quartz.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.quartz.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down-extend-none.quartz.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.quartz.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down-extend-none.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down-extend-none.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down-extend-pad.base.argb32.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down-extend-pad.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.base.argb32.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down-extend-pad.base.rgb24.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down-extend-pad.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.base.rgb24.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down-extend-pad.quartz.xfail.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.quartz.xfail.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down-extend-pad.quartz.xfail.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.quartz.xfail.png diff --git a/cairo/test/reference/surface-pattern-scale-down-extend-pad.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down-extend-pad.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.argb32.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.argb32.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.rgb24.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.rgb24.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down-extend-reflect.quartz.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.quartz.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down-extend-reflect.quartz.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.quartz.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down-extend-reflect.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down-extend-reflect.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.argb32.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.argb32.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.rgb24.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.rgb24.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down-extend-repeat.quartz.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.quartz.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down-extend-repeat.quartz.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.quartz.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down-extend-repeat.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down-extend-repeat.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down.argb32.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down.argb32.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down.argb32.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down.argb32.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down.base.argb32.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down.base.argb32.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down.base.rgb24.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down.base.rgb24.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down.image16.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down.image16.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down.image16.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down.image16.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down.pdf.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down.pdf.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down.pdf.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down.pdf.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down.ps2.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down.ps2.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down.ps2.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down.ps2.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down.ps3.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down.ps3.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down.ps3.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down.ps3.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down.quartz.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down.quartz.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down.quartz.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down.quartz.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-down.rgb24.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-down.rgb24.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-down.rgb24.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-down.rgb24.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-up.argb32.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-up.argb32.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-up.argb32.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-up.argb32.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-up.base.argb32.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-up.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-up.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-up.base.argb32.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-up.base.rgb24.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-up.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-up.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-up.base.rgb24.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-up.image16.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-up.image16.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-up.image16.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-up.image16.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-up.pdf.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-up.pdf.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-up.pdf.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-up.pdf.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-up.ps2.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-up.ps2.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-up.ps2.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-up.ps2.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-up.ps3.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-up.ps3.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-up.ps3.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-up.ps3.ref.png diff --git a/cairo/test/reference/surface-pattern-scale-up.quartz.xfail.png b/3rd-party/cairo/test/reference/surface-pattern-scale-up.quartz.xfail.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-up.quartz.xfail.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-up.quartz.xfail.png diff --git a/cairo/test/reference/surface-pattern-scale-up.rgb24.ref.png b/3rd-party/cairo/test/reference/surface-pattern-scale-up.rgb24.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern-scale-up.rgb24.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern-scale-up.rgb24.ref.png diff --git a/cairo/test/reference/surface-pattern.argb32.ref.png b/3rd-party/cairo/test/reference/surface-pattern.argb32.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern.argb32.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern.argb32.ref.png diff --git a/cairo/test/reference/surface-pattern.base.argb32.ref.png b/3rd-party/cairo/test/reference/surface-pattern.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern.base.argb32.ref.png diff --git a/cairo/test/reference/surface-pattern.base.rgb24.ref.png b/3rd-party/cairo/test/reference/surface-pattern.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern.base.rgb24.ref.png diff --git a/cairo/test/reference/surface-pattern.image16.ref.png b/3rd-party/cairo/test/reference/surface-pattern.image16.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern.image16.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern.image16.ref.png diff --git a/cairo/test/reference/surface-pattern.pdf.xfail.png b/3rd-party/cairo/test/reference/surface-pattern.pdf.xfail.png similarity index 100% rename from cairo/test/reference/surface-pattern.pdf.xfail.png rename to 3rd-party/cairo/test/reference/surface-pattern.pdf.xfail.png diff --git a/cairo/test/reference/surface-pattern.ps.xfail.png b/3rd-party/cairo/test/reference/surface-pattern.ps.xfail.png similarity index 100% rename from cairo/test/reference/surface-pattern.ps.xfail.png rename to 3rd-party/cairo/test/reference/surface-pattern.ps.xfail.png diff --git a/cairo/test/reference/surface-pattern.quartz.xfail.png b/3rd-party/cairo/test/reference/surface-pattern.quartz.xfail.png similarity index 100% rename from cairo/test/reference/surface-pattern.quartz.xfail.png rename to 3rd-party/cairo/test/reference/surface-pattern.quartz.xfail.png diff --git a/cairo/test/reference/surface-pattern.rgb24.ref.png b/3rd-party/cairo/test/reference/surface-pattern.rgb24.ref.png similarity index 100% rename from cairo/test/reference/surface-pattern.rgb24.ref.png rename to 3rd-party/cairo/test/reference/surface-pattern.rgb24.ref.png diff --git a/cairo/test/reference/surface-pattern.svg.xfail.png b/3rd-party/cairo/test/reference/surface-pattern.svg.xfail.png similarity index 100% rename from cairo/test/reference/surface-pattern.svg.xfail.png rename to 3rd-party/cairo/test/reference/surface-pattern.svg.xfail.png diff --git a/cairo/test/reference/svg-surface-source.argb32.ref.png b/3rd-party/cairo/test/reference/svg-surface-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/svg-surface-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/svg-surface-source.argb32.ref.png diff --git a/cairo/test/reference/svg-surface-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/svg-surface-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/svg-surface-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/svg-surface-source.base.argb32.ref.png diff --git a/cairo/test/reference/svg-surface-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/svg-surface-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/svg-surface-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/svg-surface-source.base.rgb24.ref.png diff --git a/cairo/test/reference/svg-surface-source.image16.ref.png b/3rd-party/cairo/test/reference/svg-surface-source.image16.ref.png similarity index 100% rename from cairo/test/reference/svg-surface-source.image16.ref.png rename to 3rd-party/cairo/test/reference/svg-surface-source.image16.ref.png diff --git a/cairo/test/reference/svg-surface-source.rgb24.ref.png b/3rd-party/cairo/test/reference/svg-surface-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/svg-surface-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/svg-surface-source.rgb24.ref.png diff --git a/cairo/test/reference/svg-surface-source.svg12.argb32.xfail.png b/3rd-party/cairo/test/reference/svg-surface-source.svg12.argb32.xfail.png similarity index 100% rename from cairo/test/reference/svg-surface-source.svg12.argb32.xfail.png rename to 3rd-party/cairo/test/reference/svg-surface-source.svg12.argb32.xfail.png diff --git a/cairo/test/reference/svg-surface-source.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/svg-surface-source.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/svg-surface-source.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/svg-surface-source.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/text-antialias-gray.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-gray.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-gray.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-gray.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-gray.base.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-gray.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-gray.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-gray.base.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-gray.base.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-gray.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-gray.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-gray.base.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-gray.image16.ref.png b/3rd-party/cairo/test/reference/text-antialias-gray.image16.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-gray.image16.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-gray.image16.ref.png diff --git a/cairo/test/reference/text-antialias-gray.quartz.ref.png b/3rd-party/cairo/test/reference/text-antialias-gray.quartz.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-gray.quartz.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-gray.quartz.ref.png diff --git a/cairo/test/reference/text-antialias-gray.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-gray.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-gray.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-gray.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-gray.traps.ref.png b/3rd-party/cairo/test/reference/text-antialias-gray.traps.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-gray.traps.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-gray.traps.ref.png diff --git a/cairo/test/reference/text-antialias-none.base.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-none.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-none.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-none.base.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-none.base.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-none.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-none.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-none.base.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-none.quartz.ref.png b/3rd-party/cairo/test/reference/text-antialias-none.quartz.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-none.quartz.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-none.quartz.ref.png diff --git a/cairo/test/reference/text-antialias-none.ref.png b/3rd-party/cairo/test/reference/text-antialias-none.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-none.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-none.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-bgr.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-bgr.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-bgr.image16.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.image16.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-bgr.image16.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.image16.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-bgr.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-bgr.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-bgr.traps.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.traps.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-bgr.traps.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.traps.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-rgb.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-rgb.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-rgb.image16.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.image16.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-rgb.image16.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.image16.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-rgb.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-rgb.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-rgb.traps.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.traps.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-rgb.traps.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.traps.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-vbgr.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-vbgr.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-vbgr.image16.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.image16.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-vbgr.image16.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.image16.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-vbgr.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-vbgr.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-vbgr.traps.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.traps.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-vbgr.traps.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.traps.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-vrgb.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-vrgb.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-vrgb.image16.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.image16.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-vrgb.image16.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.image16.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-vrgb.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-vrgb.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel-vrgb.traps.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.traps.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel-vrgb.traps.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.traps.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel.base.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel.base.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel.base.argb32.xfail.png b/3rd-party/cairo/test/reference/text-antialias-subpixel.base.argb32.xfail.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel.base.argb32.xfail.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel.base.argb32.xfail.png diff --git a/cairo/test/reference/text-antialias-subpixel.base.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel.base.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel.base.rgb24.xfail.png b/3rd-party/cairo/test/reference/text-antialias-subpixel.base.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel.base.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel.base.rgb24.xfail.png diff --git a/cairo/test/reference/text-antialias-subpixel.image16.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel.image16.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel.image16.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel.image16.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel.mask.argb32.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel.mask.argb32.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel.mask.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel.quartz.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel.quartz.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel.quartz.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel.quartz.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel.rgb24.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel.rgb24.ref.png diff --git a/cairo/test/reference/text-antialias-subpixel.traps.ref.png b/3rd-party/cairo/test/reference/text-antialias-subpixel.traps.ref.png similarity index 100% rename from cairo/test/reference/text-antialias-subpixel.traps.ref.png rename to 3rd-party/cairo/test/reference/text-antialias-subpixel.traps.ref.png diff --git a/cairo/test/reference/text-glyph-range.argb32.ref.png b/3rd-party/cairo/test/reference/text-glyph-range.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-glyph-range.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-glyph-range.argb32.ref.png diff --git a/cairo/test/reference/text-glyph-range.base.argb32.ref.png b/3rd-party/cairo/test/reference/text-glyph-range.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-glyph-range.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-glyph-range.base.argb32.ref.png diff --git a/cairo/test/reference/text-glyph-range.base.rgb24.ref.png b/3rd-party/cairo/test/reference/text-glyph-range.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-glyph-range.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-glyph-range.base.rgb24.ref.png diff --git a/cairo/test/reference/text-glyph-range.image16.ref.png b/3rd-party/cairo/test/reference/text-glyph-range.image16.ref.png similarity index 100% rename from cairo/test/reference/text-glyph-range.image16.ref.png rename to 3rd-party/cairo/test/reference/text-glyph-range.image16.ref.png diff --git a/cairo/test/reference/text-glyph-range.ps.ref.png b/3rd-party/cairo/test/reference/text-glyph-range.ps.ref.png similarity index 100% rename from cairo/test/reference/text-glyph-range.ps.ref.png rename to 3rd-party/cairo/test/reference/text-glyph-range.ps.ref.png diff --git a/cairo/test/reference/text-glyph-range.quartz.ref.png b/3rd-party/cairo/test/reference/text-glyph-range.quartz.ref.png similarity index 100% rename from cairo/test/reference/text-glyph-range.quartz.ref.png rename to 3rd-party/cairo/test/reference/text-glyph-range.quartz.ref.png diff --git a/cairo/test/reference/text-glyph-range.rgb24.ref.png b/3rd-party/cairo/test/reference/text-glyph-range.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-glyph-range.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-glyph-range.rgb24.ref.png diff --git a/cairo/test/reference/text-glyph-range.traps.ref.png b/3rd-party/cairo/test/reference/text-glyph-range.traps.ref.png similarity index 100% rename from cairo/test/reference/text-glyph-range.traps.ref.png rename to 3rd-party/cairo/test/reference/text-glyph-range.traps.ref.png diff --git a/cairo/test/reference/text-pattern.argb32.ref.png b/3rd-party/cairo/test/reference/text-pattern.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-pattern.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-pattern.argb32.ref.png diff --git a/cairo/test/reference/text-pattern.base.argb32.ref.png b/3rd-party/cairo/test/reference/text-pattern.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-pattern.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-pattern.base.argb32.ref.png diff --git a/cairo/test/reference/text-pattern.base.rgb24.ref.png b/3rd-party/cairo/test/reference/text-pattern.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-pattern.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-pattern.base.rgb24.ref.png diff --git a/cairo/test/reference/text-pattern.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/text-pattern.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-pattern.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-pattern.pdf.argb32.ref.png diff --git a/cairo/test/reference/text-pattern.pdf.rgb24.ref.png b/3rd-party/cairo/test/reference/text-pattern.pdf.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-pattern.pdf.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-pattern.pdf.rgb24.ref.png diff --git a/cairo/test/reference/text-pattern.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/text-pattern.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-pattern.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-pattern.ps2.argb32.ref.png diff --git a/cairo/test/reference/text-pattern.ps2.rgb24.ref.png b/3rd-party/cairo/test/reference/text-pattern.ps2.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-pattern.ps2.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-pattern.ps2.rgb24.ref.png diff --git a/cairo/test/reference/text-pattern.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/text-pattern.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-pattern.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-pattern.ps3.argb32.ref.png diff --git a/cairo/test/reference/text-pattern.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/text-pattern.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-pattern.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-pattern.ps3.rgb24.ref.png diff --git a/cairo/test/reference/text-pattern.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/text-pattern.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-pattern.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-pattern.quartz.argb32.ref.png diff --git a/cairo/test/reference/text-pattern.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/text-pattern.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-pattern.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-pattern.quartz.rgb24.ref.png diff --git a/cairo/test/reference/text-pattern.rgb24.ref.png b/3rd-party/cairo/test/reference/text-pattern.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-pattern.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-pattern.rgb24.ref.png diff --git a/cairo/test/reference/text-pattern.svg.argb32.ref.png b/3rd-party/cairo/test/reference/text-pattern.svg.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-pattern.svg.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-pattern.svg.argb32.ref.png diff --git a/cairo/test/reference/text-pattern.svg.rgb24.ref.png b/3rd-party/cairo/test/reference/text-pattern.svg.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-pattern.svg.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-pattern.svg.rgb24.ref.png diff --git a/cairo/test/reference/text-pattern.traps.argb32.ref.png b/3rd-party/cairo/test/reference/text-pattern.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-pattern.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-pattern.traps.argb32.ref.png diff --git a/cairo/test/reference/text-pattern.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/text-pattern.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-pattern.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-pattern.traps.rgb24.ref.png diff --git a/cairo/test/reference/text-rotate.base.argb32.ref.png b/3rd-party/cairo/test/reference/text-rotate.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-rotate.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-rotate.base.argb32.ref.png diff --git a/cairo/test/reference/text-rotate.base.rgb24.ref.png b/3rd-party/cairo/test/reference/text-rotate.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-rotate.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-rotate.base.rgb24.ref.png diff --git a/cairo/test/reference/text-rotate.image16.ref.png b/3rd-party/cairo/test/reference/text-rotate.image16.ref.png similarity index 100% rename from cairo/test/reference/text-rotate.image16.ref.png rename to 3rd-party/cairo/test/reference/text-rotate.image16.ref.png diff --git a/cairo/test/reference/text-rotate.mask.argb32.ref.png b/3rd-party/cairo/test/reference/text-rotate.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-rotate.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-rotate.mask.argb32.ref.png diff --git a/cairo/test/reference/text-rotate.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/text-rotate.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-rotate.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-rotate.mask.rgb24.ref.png diff --git a/cairo/test/reference/text-rotate.pdf.ref.png b/3rd-party/cairo/test/reference/text-rotate.pdf.ref.png similarity index 100% rename from cairo/test/reference/text-rotate.pdf.ref.png rename to 3rd-party/cairo/test/reference/text-rotate.pdf.ref.png diff --git a/cairo/test/reference/text-rotate.ps.ref.png b/3rd-party/cairo/test/reference/text-rotate.ps.ref.png similarity index 100% rename from cairo/test/reference/text-rotate.ps.ref.png rename to 3rd-party/cairo/test/reference/text-rotate.ps.ref.png diff --git a/cairo/test/reference/text-rotate.quartz.ref.png b/3rd-party/cairo/test/reference/text-rotate.quartz.ref.png similarity index 100% rename from cairo/test/reference/text-rotate.quartz.ref.png rename to 3rd-party/cairo/test/reference/text-rotate.quartz.ref.png diff --git a/cairo/test/reference/text-rotate.ref.png b/3rd-party/cairo/test/reference/text-rotate.ref.png similarity index 100% rename from cairo/test/reference/text-rotate.ref.png rename to 3rd-party/cairo/test/reference/text-rotate.ref.png diff --git a/cairo/test/reference/text-rotate.svg.ref.png b/3rd-party/cairo/test/reference/text-rotate.svg.ref.png similarity index 100% rename from cairo/test/reference/text-rotate.svg.ref.png rename to 3rd-party/cairo/test/reference/text-rotate.svg.ref.png diff --git a/cairo/test/reference/text-rotate.traps.ref.png b/3rd-party/cairo/test/reference/text-rotate.traps.ref.png similarity index 100% rename from cairo/test/reference/text-rotate.traps.ref.png rename to 3rd-party/cairo/test/reference/text-rotate.traps.ref.png diff --git a/cairo/test/reference/text-rotate.xlib-fallback.ref.png b/3rd-party/cairo/test/reference/text-rotate.xlib-fallback.ref.png similarity index 100% rename from cairo/test/reference/text-rotate.xlib-fallback.ref.png rename to 3rd-party/cairo/test/reference/text-rotate.xlib-fallback.ref.png diff --git a/cairo/test/reference/text-transform.base.argb32.ref.png b/3rd-party/cairo/test/reference/text-transform.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-transform.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-transform.base.argb32.ref.png diff --git a/cairo/test/reference/text-transform.base.rgb24.ref.png b/3rd-party/cairo/test/reference/text-transform.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-transform.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-transform.base.rgb24.ref.png diff --git a/cairo/test/reference/text-transform.image16.ref.png b/3rd-party/cairo/test/reference/text-transform.image16.ref.png similarity index 100% rename from cairo/test/reference/text-transform.image16.ref.png rename to 3rd-party/cairo/test/reference/text-transform.image16.ref.png diff --git a/cairo/test/reference/text-transform.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/text-transform.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/text-transform.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/text-transform.pdf.argb32.ref.png diff --git a/cairo/test/reference/text-transform.pdf.rgb24.ref.png b/3rd-party/cairo/test/reference/text-transform.pdf.rgb24.ref.png similarity index 100% rename from cairo/test/reference/text-transform.pdf.rgb24.ref.png rename to 3rd-party/cairo/test/reference/text-transform.pdf.rgb24.ref.png diff --git a/cairo/test/reference/text-transform.ps2.ref.png b/3rd-party/cairo/test/reference/text-transform.ps2.ref.png similarity index 100% rename from cairo/test/reference/text-transform.ps2.ref.png rename to 3rd-party/cairo/test/reference/text-transform.ps2.ref.png diff --git a/cairo/test/reference/text-transform.ps3.ref.png b/3rd-party/cairo/test/reference/text-transform.ps3.ref.png similarity index 100% rename from cairo/test/reference/text-transform.ps3.ref.png rename to 3rd-party/cairo/test/reference/text-transform.ps3.ref.png diff --git a/cairo/test/reference/text-transform.ref.png b/3rd-party/cairo/test/reference/text-transform.ref.png similarity index 100% rename from cairo/test/reference/text-transform.ref.png rename to 3rd-party/cairo/test/reference/text-transform.ref.png diff --git a/cairo/test/reference/text-transform.svg.ref.png b/3rd-party/cairo/test/reference/text-transform.svg.ref.png similarity index 100% rename from cairo/test/reference/text-transform.svg.ref.png rename to 3rd-party/cairo/test/reference/text-transform.svg.ref.png diff --git a/cairo/test/reference/tiger.argb32.ref.png b/3rd-party/cairo/test/reference/tiger.argb32.ref.png similarity index 100% rename from cairo/test/reference/tiger.argb32.ref.png rename to 3rd-party/cairo/test/reference/tiger.argb32.ref.png diff --git a/cairo/test/reference/tiger.base.argb32.ref.png b/3rd-party/cairo/test/reference/tiger.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/tiger.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/tiger.base.argb32.ref.png diff --git a/cairo/test/reference/tiger.base.rgb24.ref.png b/3rd-party/cairo/test/reference/tiger.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/tiger.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/tiger.base.rgb24.ref.png diff --git a/cairo/test/reference/tiger.rgb24.ref.png b/3rd-party/cairo/test/reference/tiger.rgb24.ref.png similarity index 100% rename from cairo/test/reference/tiger.rgb24.ref.png rename to 3rd-party/cairo/test/reference/tiger.rgb24.ref.png diff --git a/cairo/test/reference/tiger.traps.argb32.ref.png b/3rd-party/cairo/test/reference/tiger.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/tiger.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/tiger.traps.argb32.ref.png diff --git a/cairo/test/reference/tiger.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/tiger.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/tiger.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/tiger.traps.rgb24.ref.png diff --git a/cairo/test/reference/tighten-bounds.argb32.ref.png b/3rd-party/cairo/test/reference/tighten-bounds.argb32.ref.png similarity index 100% rename from cairo/test/reference/tighten-bounds.argb32.ref.png rename to 3rd-party/cairo/test/reference/tighten-bounds.argb32.ref.png diff --git a/cairo/test/reference/tighten-bounds.base.argb32.ref.png b/3rd-party/cairo/test/reference/tighten-bounds.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/tighten-bounds.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/tighten-bounds.base.argb32.ref.png diff --git a/cairo/test/reference/tighten-bounds.base.rgb24.ref.png b/3rd-party/cairo/test/reference/tighten-bounds.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/tighten-bounds.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/tighten-bounds.base.rgb24.ref.png diff --git a/cairo/test/reference/tighten-bounds.rgb24.ref.png b/3rd-party/cairo/test/reference/tighten-bounds.rgb24.ref.png similarity index 100% rename from cairo/test/reference/tighten-bounds.rgb24.ref.png rename to 3rd-party/cairo/test/reference/tighten-bounds.rgb24.ref.png diff --git a/cairo/test/reference/tighten-bounds.traps.argb32.ref.png b/3rd-party/cairo/test/reference/tighten-bounds.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/tighten-bounds.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/tighten-bounds.traps.argb32.ref.png diff --git a/cairo/test/reference/tighten-bounds.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/tighten-bounds.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/tighten-bounds.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/tighten-bounds.traps.rgb24.ref.png diff --git a/cairo/test/reference/transforms.argb32.ref.png b/3rd-party/cairo/test/reference/transforms.argb32.ref.png similarity index 100% rename from cairo/test/reference/transforms.argb32.ref.png rename to 3rd-party/cairo/test/reference/transforms.argb32.ref.png diff --git a/cairo/test/reference/transforms.base.argb32.ref.png b/3rd-party/cairo/test/reference/transforms.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/transforms.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/transforms.base.argb32.ref.png diff --git a/cairo/test/reference/transforms.base.rgb24.ref.png b/3rd-party/cairo/test/reference/transforms.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/transforms.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/transforms.base.rgb24.ref.png diff --git a/cairo/test/reference/transforms.image16.ref.png b/3rd-party/cairo/test/reference/transforms.image16.ref.png similarity index 100% rename from cairo/test/reference/transforms.image16.ref.png rename to 3rd-party/cairo/test/reference/transforms.image16.ref.png diff --git a/cairo/test/reference/transforms.ps2.ref.png b/3rd-party/cairo/test/reference/transforms.ps2.ref.png similarity index 100% rename from cairo/test/reference/transforms.ps2.ref.png rename to 3rd-party/cairo/test/reference/transforms.ps2.ref.png diff --git a/cairo/test/reference/transforms.ps3.ref.png b/3rd-party/cairo/test/reference/transforms.ps3.ref.png similarity index 100% rename from cairo/test/reference/transforms.ps3.ref.png rename to 3rd-party/cairo/test/reference/transforms.ps3.ref.png diff --git a/cairo/test/reference/transforms.rgb24.ref.png b/3rd-party/cairo/test/reference/transforms.rgb24.ref.png similarity index 100% rename from cairo/test/reference/transforms.rgb24.ref.png rename to 3rd-party/cairo/test/reference/transforms.rgb24.ref.png diff --git a/cairo/test/reference/transforms.traps.argb32.ref.png b/3rd-party/cairo/test/reference/transforms.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/transforms.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/transforms.traps.argb32.ref.png diff --git a/cairo/test/reference/transforms.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/transforms.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/transforms.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/transforms.traps.rgb24.ref.png diff --git a/cairo/test/reference/translate-show-surface.base.argb32.ref.png b/3rd-party/cairo/test/reference/translate-show-surface.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/translate-show-surface.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/translate-show-surface.base.argb32.ref.png diff --git a/cairo/test/reference/translate-show-surface.base.rgb24.ref.png b/3rd-party/cairo/test/reference/translate-show-surface.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/translate-show-surface.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/translate-show-surface.base.rgb24.ref.png diff --git a/cairo/test/reference/translate-show-surface.ref.png b/3rd-party/cairo/test/reference/translate-show-surface.ref.png similarity index 100% rename from cairo/test/reference/translate-show-surface.ref.png rename to 3rd-party/cairo/test/reference/translate-show-surface.ref.png diff --git a/cairo/test/reference/trap-clip.argb32.ref.png b/3rd-party/cairo/test/reference/trap-clip.argb32.ref.png similarity index 100% rename from cairo/test/reference/trap-clip.argb32.ref.png rename to 3rd-party/cairo/test/reference/trap-clip.argb32.ref.png diff --git a/cairo/test/reference/trap-clip.base.argb32.ref.png b/3rd-party/cairo/test/reference/trap-clip.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/trap-clip.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/trap-clip.base.argb32.ref.png diff --git a/cairo/test/reference/trap-clip.base.rgb24.ref.png b/3rd-party/cairo/test/reference/trap-clip.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/trap-clip.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/trap-clip.base.rgb24.ref.png diff --git a/cairo/test/reference/trap-clip.image16.ref.png b/3rd-party/cairo/test/reference/trap-clip.image16.ref.png similarity index 100% rename from cairo/test/reference/trap-clip.image16.ref.png rename to 3rd-party/cairo/test/reference/trap-clip.image16.ref.png diff --git a/cairo/test/reference/trap-clip.mask.argb32.ref.png b/3rd-party/cairo/test/reference/trap-clip.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/trap-clip.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/trap-clip.mask.argb32.ref.png diff --git a/cairo/test/reference/trap-clip.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/trap-clip.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/trap-clip.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/trap-clip.mask.rgb24.ref.png diff --git a/cairo/test/reference/trap-clip.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/trap-clip.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/trap-clip.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/trap-clip.ps2.argb32.ref.png diff --git a/cairo/test/reference/trap-clip.ps2.rgb24.ref.png b/3rd-party/cairo/test/reference/trap-clip.ps2.rgb24.ref.png similarity index 100% rename from cairo/test/reference/trap-clip.ps2.rgb24.ref.png rename to 3rd-party/cairo/test/reference/trap-clip.ps2.rgb24.ref.png diff --git a/cairo/test/reference/trap-clip.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/trap-clip.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/trap-clip.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/trap-clip.ps3.argb32.ref.png diff --git a/cairo/test/reference/trap-clip.ps3.rgb24.ref.png b/3rd-party/cairo/test/reference/trap-clip.ps3.rgb24.ref.png similarity index 100% rename from cairo/test/reference/trap-clip.ps3.rgb24.ref.png rename to 3rd-party/cairo/test/reference/trap-clip.ps3.rgb24.ref.png diff --git a/cairo/test/reference/trap-clip.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/trap-clip.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/trap-clip.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/trap-clip.quartz.argb32.ref.png diff --git a/cairo/test/reference/trap-clip.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/trap-clip.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/trap-clip.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/trap-clip.quartz.rgb24.ref.png diff --git a/cairo/test/reference/trap-clip.rgb24.ref.png b/3rd-party/cairo/test/reference/trap-clip.rgb24.ref.png similarity index 100% rename from cairo/test/reference/trap-clip.rgb24.ref.png rename to 3rd-party/cairo/test/reference/trap-clip.rgb24.ref.png diff --git a/cairo/test/reference/trap-clip.test-paginated.argb32.ref.png b/3rd-party/cairo/test/reference/trap-clip.test-paginated.argb32.ref.png similarity index 100% rename from cairo/test/reference/trap-clip.test-paginated.argb32.ref.png rename to 3rd-party/cairo/test/reference/trap-clip.test-paginated.argb32.ref.png diff --git a/cairo/test/reference/trap-clip.traps.argb32.ref.png b/3rd-party/cairo/test/reference/trap-clip.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/trap-clip.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/trap-clip.traps.argb32.ref.png diff --git a/cairo/test/reference/trap-clip.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/trap-clip.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/trap-clip.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/trap-clip.traps.rgb24.ref.png diff --git a/cairo/test/reference/twin-antialias-gray.base.argb32.ref.png b/3rd-party/cairo/test/reference/twin-antialias-gray.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-gray.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-gray.base.argb32.ref.png diff --git a/cairo/test/reference/twin-antialias-gray.base.rgb24.ref.png b/3rd-party/cairo/test/reference/twin-antialias-gray.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-gray.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-gray.base.rgb24.ref.png diff --git a/cairo/test/reference/twin-antialias-gray.image16.ref.png b/3rd-party/cairo/test/reference/twin-antialias-gray.image16.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-gray.image16.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-gray.image16.ref.png diff --git a/cairo/test/reference/twin-antialias-gray.mask.argb32.ref.png b/3rd-party/cairo/test/reference/twin-antialias-gray.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-gray.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-gray.mask.argb32.ref.png diff --git a/cairo/test/reference/twin-antialias-gray.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/twin-antialias-gray.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-gray.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-gray.mask.rgb24.ref.png diff --git a/cairo/test/reference/twin-antialias-gray.ref.png b/3rd-party/cairo/test/reference/twin-antialias-gray.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-gray.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-gray.ref.png diff --git a/cairo/test/reference/twin-antialias-gray.traps.argb32.ref.png b/3rd-party/cairo/test/reference/twin-antialias-gray.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-gray.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-gray.traps.argb32.ref.png diff --git a/cairo/test/reference/twin-antialias-gray.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/twin-antialias-gray.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-gray.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-gray.traps.rgb24.ref.png diff --git a/cairo/test/reference/twin-antialias-mixed.argb32.ref.png b/3rd-party/cairo/test/reference/twin-antialias-mixed.argb32.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-mixed.argb32.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-mixed.argb32.ref.png diff --git a/cairo/test/reference/twin-antialias-mixed.base.argb32.ref.png b/3rd-party/cairo/test/reference/twin-antialias-mixed.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-mixed.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-mixed.base.argb32.ref.png diff --git a/cairo/test/reference/twin-antialias-mixed.base.rgb24.ref.png b/3rd-party/cairo/test/reference/twin-antialias-mixed.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-mixed.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-mixed.base.rgb24.ref.png diff --git a/cairo/test/reference/twin-antialias-mixed.image16.ref.png b/3rd-party/cairo/test/reference/twin-antialias-mixed.image16.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-mixed.image16.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-mixed.image16.ref.png diff --git a/cairo/test/reference/twin-antialias-mixed.rgb24.ref.png b/3rd-party/cairo/test/reference/twin-antialias-mixed.rgb24.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-mixed.rgb24.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-mixed.rgb24.ref.png diff --git a/cairo/test/reference/twin-antialias-mixed.traps.argb32.ref.png b/3rd-party/cairo/test/reference/twin-antialias-mixed.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-mixed.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-mixed.traps.argb32.ref.png diff --git a/cairo/test/reference/twin-antialias-mixed.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/twin-antialias-mixed.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-mixed.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-mixed.traps.rgb24.ref.png diff --git a/cairo/test/reference/twin-antialias-none.argb32.ref.png b/3rd-party/cairo/test/reference/twin-antialias-none.argb32.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-none.argb32.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-none.argb32.ref.png diff --git a/cairo/test/reference/twin-antialias-none.base.argb32.ref.png b/3rd-party/cairo/test/reference/twin-antialias-none.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-none.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-none.base.argb32.ref.png diff --git a/cairo/test/reference/twin-antialias-none.base.rgb24.ref.png b/3rd-party/cairo/test/reference/twin-antialias-none.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-none.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-none.base.rgb24.ref.png diff --git a/cairo/test/reference/twin-antialias-none.rgb24.ref.png b/3rd-party/cairo/test/reference/twin-antialias-none.rgb24.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-none.rgb24.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-none.rgb24.ref.png diff --git a/cairo/test/reference/twin-antialias-none.traps.argb32.ref.png b/3rd-party/cairo/test/reference/twin-antialias-none.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-none.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-none.traps.argb32.ref.png diff --git a/cairo/test/reference/twin-antialias-none.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/twin-antialias-none.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-none.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-none.traps.rgb24.ref.png diff --git a/cairo/test/reference/twin-antialias-subpixel.base.argb32.ref.png b/3rd-party/cairo/test/reference/twin-antialias-subpixel.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-subpixel.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-subpixel.base.argb32.ref.png diff --git a/cairo/test/reference/twin-antialias-subpixel.base.rgb24.ref.png b/3rd-party/cairo/test/reference/twin-antialias-subpixel.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-subpixel.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-subpixel.base.rgb24.ref.png diff --git a/cairo/test/reference/twin-antialias-subpixel.image16.ref.png b/3rd-party/cairo/test/reference/twin-antialias-subpixel.image16.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-subpixel.image16.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-subpixel.image16.ref.png diff --git a/cairo/test/reference/twin-antialias-subpixel.mask.argb32.ref.png b/3rd-party/cairo/test/reference/twin-antialias-subpixel.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-subpixel.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-subpixel.mask.argb32.ref.png diff --git a/cairo/test/reference/twin-antialias-subpixel.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/twin-antialias-subpixel.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-subpixel.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-subpixel.mask.rgb24.ref.png diff --git a/cairo/test/reference/twin-antialias-subpixel.ref.png b/3rd-party/cairo/test/reference/twin-antialias-subpixel.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-subpixel.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-subpixel.ref.png diff --git a/cairo/test/reference/twin-antialias-subpixel.traps.argb32.ref.png b/3rd-party/cairo/test/reference/twin-antialias-subpixel.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-subpixel.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-subpixel.traps.argb32.ref.png diff --git a/cairo/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png diff --git a/cairo/test/reference/twin.base.argb32.ref.png b/3rd-party/cairo/test/reference/twin.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/twin.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/twin.base.argb32.ref.png diff --git a/cairo/test/reference/twin.base.rgb24.ref.png b/3rd-party/cairo/test/reference/twin.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/twin.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/twin.base.rgb24.ref.png diff --git a/cairo/test/reference/twin.image16.ref.png b/3rd-party/cairo/test/reference/twin.image16.ref.png similarity index 100% rename from cairo/test/reference/twin.image16.ref.png rename to 3rd-party/cairo/test/reference/twin.image16.ref.png diff --git a/cairo/test/reference/twin.mask.argb32.ref.png b/3rd-party/cairo/test/reference/twin.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/twin.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/twin.mask.argb32.ref.png diff --git a/cairo/test/reference/twin.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/twin.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/twin.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/twin.mask.rgb24.ref.png diff --git a/cairo/test/reference/twin.ps.ref.png b/3rd-party/cairo/test/reference/twin.ps.ref.png similarity index 100% rename from cairo/test/reference/twin.ps.ref.png rename to 3rd-party/cairo/test/reference/twin.ps.ref.png diff --git a/cairo/test/reference/twin.ref.png b/3rd-party/cairo/test/reference/twin.ref.png similarity index 100% rename from cairo/test/reference/twin.ref.png rename to 3rd-party/cairo/test/reference/twin.ref.png diff --git a/cairo/test/reference/twin.svg.ref.png b/3rd-party/cairo/test/reference/twin.svg.ref.png similarity index 100% rename from cairo/test/reference/twin.svg.ref.png rename to 3rd-party/cairo/test/reference/twin.svg.ref.png diff --git a/cairo/test/reference/twin.traps.argb32.ref.png b/3rd-party/cairo/test/reference/twin.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/twin.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/twin.traps.argb32.ref.png diff --git a/cairo/test/reference/twin.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/twin.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/twin.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/twin.traps.rgb24.ref.png diff --git a/cairo/test/reference/unaligned-box.base.argb32.ref.png b/3rd-party/cairo/test/reference/unaligned-box.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/unaligned-box.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/unaligned-box.base.argb32.ref.png diff --git a/cairo/test/reference/unaligned-box.base.rgb24.ref.png b/3rd-party/cairo/test/reference/unaligned-box.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/unaligned-box.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/unaligned-box.base.rgb24.ref.png diff --git a/cairo/test/reference/unaligned-box.ref.png b/3rd-party/cairo/test/reference/unaligned-box.ref.png similarity index 100% rename from cairo/test/reference/unaligned-box.ref.png rename to 3rd-party/cairo/test/reference/unaligned-box.ref.png diff --git a/cairo/test/reference/unaligned-box.traps.argb32.ref.png b/3rd-party/cairo/test/reference/unaligned-box.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/unaligned-box.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/unaligned-box.traps.argb32.ref.png diff --git a/cairo/test/reference/unaligned-box.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/unaligned-box.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/unaligned-box.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/unaligned-box.traps.rgb24.ref.png diff --git a/cairo/test/reference/unantialiased-shapes.base.argb32.ref.png b/3rd-party/cairo/test/reference/unantialiased-shapes.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/unantialiased-shapes.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/unantialiased-shapes.base.argb32.ref.png diff --git a/cairo/test/reference/unantialiased-shapes.base.rgb24.ref.png b/3rd-party/cairo/test/reference/unantialiased-shapes.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/unantialiased-shapes.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/unantialiased-shapes.base.rgb24.ref.png diff --git a/cairo/test/reference/unantialiased-shapes.quartz.ref.png b/3rd-party/cairo/test/reference/unantialiased-shapes.quartz.ref.png similarity index 100% rename from cairo/test/reference/unantialiased-shapes.quartz.ref.png rename to 3rd-party/cairo/test/reference/unantialiased-shapes.quartz.ref.png diff --git a/cairo/test/reference/unantialiased-shapes.ref.png b/3rd-party/cairo/test/reference/unantialiased-shapes.ref.png similarity index 100% rename from cairo/test/reference/unantialiased-shapes.ref.png rename to 3rd-party/cairo/test/reference/unantialiased-shapes.ref.png diff --git a/cairo/test/reference/unantialiased-shapes.traps.argb32.ref.png b/3rd-party/cairo/test/reference/unantialiased-shapes.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/unantialiased-shapes.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/unantialiased-shapes.traps.argb32.ref.png diff --git a/cairo/test/reference/unantialiased-shapes.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/unantialiased-shapes.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/unantialiased-shapes.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/unantialiased-shapes.traps.rgb24.ref.png diff --git a/cairo/test/reference/unbounded-operator.argb32.ref.png b/3rd-party/cairo/test/reference/unbounded-operator.argb32.ref.png similarity index 100% rename from cairo/test/reference/unbounded-operator.argb32.ref.png rename to 3rd-party/cairo/test/reference/unbounded-operator.argb32.ref.png diff --git a/cairo/test/reference/unbounded-operator.base.argb32.ref.png b/3rd-party/cairo/test/reference/unbounded-operator.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/unbounded-operator.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/unbounded-operator.base.argb32.ref.png diff --git a/cairo/test/reference/unbounded-operator.base.rgb24.ref.png b/3rd-party/cairo/test/reference/unbounded-operator.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/unbounded-operator.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/unbounded-operator.base.rgb24.ref.png diff --git a/cairo/test/reference/unbounded-operator.gl.argb32.xfail.png b/3rd-party/cairo/test/reference/unbounded-operator.gl.argb32.xfail.png similarity index 100% rename from cairo/test/reference/unbounded-operator.gl.argb32.xfail.png rename to 3rd-party/cairo/test/reference/unbounded-operator.gl.argb32.xfail.png diff --git a/cairo/test/reference/unbounded-operator.gl.rgb24.xfail.png b/3rd-party/cairo/test/reference/unbounded-operator.gl.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/unbounded-operator.gl.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/unbounded-operator.gl.rgb24.xfail.png diff --git a/cairo/test/reference/unbounded-operator.image16.ref.png b/3rd-party/cairo/test/reference/unbounded-operator.image16.ref.png similarity index 100% rename from cairo/test/reference/unbounded-operator.image16.ref.png rename to 3rd-party/cairo/test/reference/unbounded-operator.image16.ref.png diff --git a/cairo/test/reference/unbounded-operator.mask.argb32.ref.png b/3rd-party/cairo/test/reference/unbounded-operator.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/unbounded-operator.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/unbounded-operator.mask.argb32.ref.png diff --git a/cairo/test/reference/unbounded-operator.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/unbounded-operator.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/unbounded-operator.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/unbounded-operator.mask.rgb24.ref.png diff --git a/cairo/test/reference/unbounded-operator.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/unbounded-operator.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/unbounded-operator.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/unbounded-operator.pdf.argb32.ref.png diff --git a/cairo/test/reference/unbounded-operator.ps2.argb32.ref.png b/3rd-party/cairo/test/reference/unbounded-operator.ps2.argb32.ref.png similarity index 100% rename from cairo/test/reference/unbounded-operator.ps2.argb32.ref.png rename to 3rd-party/cairo/test/reference/unbounded-operator.ps2.argb32.ref.png diff --git a/cairo/test/reference/unbounded-operator.ps3.argb32.ref.png b/3rd-party/cairo/test/reference/unbounded-operator.ps3.argb32.ref.png similarity index 100% rename from cairo/test/reference/unbounded-operator.ps3.argb32.ref.png rename to 3rd-party/cairo/test/reference/unbounded-operator.ps3.argb32.ref.png diff --git a/cairo/test/reference/unbounded-operator.quartz.argb32.ref.png b/3rd-party/cairo/test/reference/unbounded-operator.quartz.argb32.ref.png similarity index 100% rename from cairo/test/reference/unbounded-operator.quartz.argb32.ref.png rename to 3rd-party/cairo/test/reference/unbounded-operator.quartz.argb32.ref.png diff --git a/cairo/test/reference/unbounded-operator.quartz.rgb24.ref.png b/3rd-party/cairo/test/reference/unbounded-operator.quartz.rgb24.ref.png similarity index 100% rename from cairo/test/reference/unbounded-operator.quartz.rgb24.ref.png rename to 3rd-party/cairo/test/reference/unbounded-operator.quartz.rgb24.ref.png diff --git a/cairo/test/reference/unbounded-operator.rgb24.ref.png b/3rd-party/cairo/test/reference/unbounded-operator.rgb24.ref.png similarity index 100% rename from cairo/test/reference/unbounded-operator.rgb24.ref.png rename to 3rd-party/cairo/test/reference/unbounded-operator.rgb24.ref.png diff --git a/cairo/test/reference/unbounded-operator.svg12.argb32.ref.png b/3rd-party/cairo/test/reference/unbounded-operator.svg12.argb32.ref.png similarity index 100% rename from cairo/test/reference/unbounded-operator.svg12.argb32.ref.png rename to 3rd-party/cairo/test/reference/unbounded-operator.svg12.argb32.ref.png diff --git a/cairo/test/reference/unbounded-operator.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/unbounded-operator.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/unbounded-operator.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/unbounded-operator.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/unbounded-operator.traps.argb32.ref.png b/3rd-party/cairo/test/reference/unbounded-operator.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/unbounded-operator.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/unbounded-operator.traps.argb32.ref.png diff --git a/cairo/test/reference/unbounded-operator.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/unbounded-operator.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/unbounded-operator.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/unbounded-operator.traps.rgb24.ref.png diff --git a/cairo/test/reference/unclosed-strokes.argb32.ref.png b/3rd-party/cairo/test/reference/unclosed-strokes.argb32.ref.png similarity index 100% rename from cairo/test/reference/unclosed-strokes.argb32.ref.png rename to 3rd-party/cairo/test/reference/unclosed-strokes.argb32.ref.png diff --git a/cairo/test/reference/unclosed-strokes.base.argb32.ref.png b/3rd-party/cairo/test/reference/unclosed-strokes.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/unclosed-strokes.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/unclosed-strokes.base.argb32.ref.png diff --git a/cairo/test/reference/unclosed-strokes.base.rgb24.ref.png b/3rd-party/cairo/test/reference/unclosed-strokes.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/unclosed-strokes.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/unclosed-strokes.base.rgb24.ref.png diff --git a/cairo/test/reference/unclosed-strokes.rgb24.ref.png b/3rd-party/cairo/test/reference/unclosed-strokes.rgb24.ref.png similarity index 100% rename from cairo/test/reference/unclosed-strokes.rgb24.ref.png rename to 3rd-party/cairo/test/reference/unclosed-strokes.rgb24.ref.png diff --git a/cairo/test/reference/unclosed-strokes.traps.argb32.ref.png b/3rd-party/cairo/test/reference/unclosed-strokes.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/unclosed-strokes.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/unclosed-strokes.traps.argb32.ref.png diff --git a/cairo/test/reference/unclosed-strokes.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/unclosed-strokes.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/unclosed-strokes.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/unclosed-strokes.traps.rgb24.ref.png diff --git a/cairo/test/reference/user-font-mask.base.argb32.ref.png b/3rd-party/cairo/test/reference/user-font-mask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/user-font-mask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/user-font-mask.base.argb32.ref.png diff --git a/cairo/test/reference/user-font-mask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/user-font-mask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/user-font-mask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/user-font-mask.base.rgb24.ref.png diff --git a/cairo/test/reference/user-font-mask.image16.ref.png b/3rd-party/cairo/test/reference/user-font-mask.image16.ref.png similarity index 100% rename from cairo/test/reference/user-font-mask.image16.ref.png rename to 3rd-party/cairo/test/reference/user-font-mask.image16.ref.png diff --git a/cairo/test/reference/user-font-mask.pdf.ref.png b/3rd-party/cairo/test/reference/user-font-mask.pdf.ref.png similarity index 100% rename from cairo/test/reference/user-font-mask.pdf.ref.png rename to 3rd-party/cairo/test/reference/user-font-mask.pdf.ref.png diff --git a/cairo/test/reference/user-font-mask.ps2.ref.png b/3rd-party/cairo/test/reference/user-font-mask.ps2.ref.png similarity index 100% rename from cairo/test/reference/user-font-mask.ps2.ref.png rename to 3rd-party/cairo/test/reference/user-font-mask.ps2.ref.png diff --git a/cairo/test/reference/user-font-mask.ps3.ref.png b/3rd-party/cairo/test/reference/user-font-mask.ps3.ref.png similarity index 100% rename from cairo/test/reference/user-font-mask.ps3.ref.png rename to 3rd-party/cairo/test/reference/user-font-mask.ps3.ref.png diff --git a/cairo/test/reference/user-font-mask.ref.png b/3rd-party/cairo/test/reference/user-font-mask.ref.png similarity index 100% rename from cairo/test/reference/user-font-mask.ref.png rename to 3rd-party/cairo/test/reference/user-font-mask.ref.png diff --git a/cairo/test/reference/user-font-mask.svg.ref.png b/3rd-party/cairo/test/reference/user-font-mask.svg.ref.png similarity index 100% rename from cairo/test/reference/user-font-mask.svg.ref.png rename to 3rd-party/cairo/test/reference/user-font-mask.svg.ref.png diff --git a/cairo/test/reference/user-font-proxy.argb32.ref.png b/3rd-party/cairo/test/reference/user-font-proxy.argb32.ref.png similarity index 100% rename from cairo/test/reference/user-font-proxy.argb32.ref.png rename to 3rd-party/cairo/test/reference/user-font-proxy.argb32.ref.png diff --git a/cairo/test/reference/user-font-proxy.base.argb32.ref.png b/3rd-party/cairo/test/reference/user-font-proxy.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/user-font-proxy.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/user-font-proxy.base.argb32.ref.png diff --git a/cairo/test/reference/user-font-proxy.base.rgb24.ref.png b/3rd-party/cairo/test/reference/user-font-proxy.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/user-font-proxy.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/user-font-proxy.base.rgb24.ref.png diff --git a/cairo/test/reference/user-font-proxy.image16.ref.png b/3rd-party/cairo/test/reference/user-font-proxy.image16.ref.png similarity index 100% rename from cairo/test/reference/user-font-proxy.image16.ref.png rename to 3rd-party/cairo/test/reference/user-font-proxy.image16.ref.png diff --git a/cairo/test/reference/user-font-proxy.pdf.argb32.ref.png b/3rd-party/cairo/test/reference/user-font-proxy.pdf.argb32.ref.png similarity index 100% rename from cairo/test/reference/user-font-proxy.pdf.argb32.ref.png rename to 3rd-party/cairo/test/reference/user-font-proxy.pdf.argb32.ref.png diff --git a/cairo/test/reference/user-font-proxy.pdf.ref.png b/3rd-party/cairo/test/reference/user-font-proxy.pdf.ref.png similarity index 100% rename from cairo/test/reference/user-font-proxy.pdf.ref.png rename to 3rd-party/cairo/test/reference/user-font-proxy.pdf.ref.png diff --git a/cairo/test/reference/user-font-proxy.pdf.rgb24.ref.png b/3rd-party/cairo/test/reference/user-font-proxy.pdf.rgb24.ref.png similarity index 100% rename from cairo/test/reference/user-font-proxy.pdf.rgb24.ref.png rename to 3rd-party/cairo/test/reference/user-font-proxy.pdf.rgb24.ref.png diff --git a/cairo/test/reference/user-font-proxy.ps.ref.png b/3rd-party/cairo/test/reference/user-font-proxy.ps.ref.png similarity index 100% rename from cairo/test/reference/user-font-proxy.ps.ref.png rename to 3rd-party/cairo/test/reference/user-font-proxy.ps.ref.png diff --git a/cairo/test/reference/user-font-proxy.quartz.ref.png b/3rd-party/cairo/test/reference/user-font-proxy.quartz.ref.png similarity index 100% rename from cairo/test/reference/user-font-proxy.quartz.ref.png rename to 3rd-party/cairo/test/reference/user-font-proxy.quartz.ref.png diff --git a/cairo/test/reference/user-font-proxy.rgb24.ref.png b/3rd-party/cairo/test/reference/user-font-proxy.rgb24.ref.png similarity index 100% rename from cairo/test/reference/user-font-proxy.rgb24.ref.png rename to 3rd-party/cairo/test/reference/user-font-proxy.rgb24.ref.png diff --git a/cairo/test/reference/user-font-proxy.svg.ref.png b/3rd-party/cairo/test/reference/user-font-proxy.svg.ref.png similarity index 100% rename from cairo/test/reference/user-font-proxy.svg.ref.png rename to 3rd-party/cairo/test/reference/user-font-proxy.svg.ref.png diff --git a/cairo/test/reference/user-font-proxy.traps.ref.png b/3rd-party/cairo/test/reference/user-font-proxy.traps.ref.png similarity index 100% rename from cairo/test/reference/user-font-proxy.traps.ref.png rename to 3rd-party/cairo/test/reference/user-font-proxy.traps.ref.png diff --git a/cairo/test/reference/user-font-rescale.argb32.ref.png b/3rd-party/cairo/test/reference/user-font-rescale.argb32.ref.png similarity index 100% rename from cairo/test/reference/user-font-rescale.argb32.ref.png rename to 3rd-party/cairo/test/reference/user-font-rescale.argb32.ref.png diff --git a/cairo/test/reference/user-font-rescale.base.argb32.ref.png b/3rd-party/cairo/test/reference/user-font-rescale.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/user-font-rescale.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/user-font-rescale.base.argb32.ref.png diff --git a/cairo/test/reference/user-font-rescale.base.rgb24.ref.png b/3rd-party/cairo/test/reference/user-font-rescale.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/user-font-rescale.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/user-font-rescale.base.rgb24.ref.png diff --git a/cairo/test/reference/user-font-rescale.image16.ref.png b/3rd-party/cairo/test/reference/user-font-rescale.image16.ref.png similarity index 100% rename from cairo/test/reference/user-font-rescale.image16.ref.png rename to 3rd-party/cairo/test/reference/user-font-rescale.image16.ref.png diff --git a/cairo/test/reference/user-font-rescale.ps.ref.png b/3rd-party/cairo/test/reference/user-font-rescale.ps.ref.png similarity index 100% rename from cairo/test/reference/user-font-rescale.ps.ref.png rename to 3rd-party/cairo/test/reference/user-font-rescale.ps.ref.png diff --git a/cairo/test/reference/user-font-rescale.quartz.ref.png b/3rd-party/cairo/test/reference/user-font-rescale.quartz.ref.png similarity index 100% rename from cairo/test/reference/user-font-rescale.quartz.ref.png rename to 3rd-party/cairo/test/reference/user-font-rescale.quartz.ref.png diff --git a/cairo/test/reference/user-font-rescale.rgb24.ref.png b/3rd-party/cairo/test/reference/user-font-rescale.rgb24.ref.png similarity index 100% rename from cairo/test/reference/user-font-rescale.rgb24.ref.png rename to 3rd-party/cairo/test/reference/user-font-rescale.rgb24.ref.png diff --git a/cairo/test/reference/user-font-rescale.svg.ref.png b/3rd-party/cairo/test/reference/user-font-rescale.svg.ref.png similarity index 100% rename from cairo/test/reference/user-font-rescale.svg.ref.png rename to 3rd-party/cairo/test/reference/user-font-rescale.svg.ref.png diff --git a/cairo/test/reference/user-font-rescale.traps.ref.png b/3rd-party/cairo/test/reference/user-font-rescale.traps.ref.png similarity index 100% rename from cairo/test/reference/user-font-rescale.traps.ref.png rename to 3rd-party/cairo/test/reference/user-font-rescale.traps.ref.png diff --git a/cairo/test/reference/user-font.base.argb32.ref.png b/3rd-party/cairo/test/reference/user-font.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/user-font.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/user-font.base.argb32.ref.png diff --git a/cairo/test/reference/user-font.base.rgb24.ref.png b/3rd-party/cairo/test/reference/user-font.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/user-font.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/user-font.base.rgb24.ref.png diff --git a/cairo/test/reference/user-font.image16.ref.png b/3rd-party/cairo/test/reference/user-font.image16.ref.png similarity index 100% rename from cairo/test/reference/user-font.image16.ref.png rename to 3rd-party/cairo/test/reference/user-font.image16.ref.png diff --git a/cairo/test/reference/user-font.mask.argb32.ref.png b/3rd-party/cairo/test/reference/user-font.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/user-font.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/user-font.mask.argb32.ref.png diff --git a/cairo/test/reference/user-font.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/user-font.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/user-font.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/user-font.mask.rgb24.ref.png diff --git a/cairo/test/reference/user-font.pdf.ref.png b/3rd-party/cairo/test/reference/user-font.pdf.ref.png similarity index 100% rename from cairo/test/reference/user-font.pdf.ref.png rename to 3rd-party/cairo/test/reference/user-font.pdf.ref.png diff --git a/cairo/test/reference/user-font.ps.ref.png b/3rd-party/cairo/test/reference/user-font.ps.ref.png similarity index 100% rename from cairo/test/reference/user-font.ps.ref.png rename to 3rd-party/cairo/test/reference/user-font.ps.ref.png diff --git a/cairo/test/reference/user-font.quartz.ref.png b/3rd-party/cairo/test/reference/user-font.quartz.ref.png similarity index 100% rename from cairo/test/reference/user-font.quartz.ref.png rename to 3rd-party/cairo/test/reference/user-font.quartz.ref.png diff --git a/cairo/test/reference/user-font.ref.png b/3rd-party/cairo/test/reference/user-font.ref.png similarity index 100% rename from cairo/test/reference/user-font.ref.png rename to 3rd-party/cairo/test/reference/user-font.ref.png diff --git a/cairo/test/reference/user-font.svg.ref.png b/3rd-party/cairo/test/reference/user-font.svg.ref.png similarity index 100% rename from cairo/test/reference/user-font.svg.ref.png rename to 3rd-party/cairo/test/reference/user-font.svg.ref.png diff --git a/cairo/test/reference/user-font.traps.argb32.ref.png b/3rd-party/cairo/test/reference/user-font.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/user-font.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/user-font.traps.argb32.ref.png diff --git a/cairo/test/reference/user-font.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/user-font.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/user-font.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/user-font.traps.rgb24.ref.png diff --git a/cairo/test/reference/white-in-noop.base.argb32.ref.png b/3rd-party/cairo/test/reference/white-in-noop.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/white-in-noop.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/white-in-noop.base.argb32.ref.png diff --git a/cairo/test/reference/white-in-noop.base.rgb24.ref.png b/3rd-party/cairo/test/reference/white-in-noop.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/white-in-noop.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/white-in-noop.base.rgb24.ref.png diff --git a/cairo/test/reference/white-in-noop.ref.png b/3rd-party/cairo/test/reference/white-in-noop.ref.png similarity index 100% rename from cairo/test/reference/white-in-noop.ref.png rename to 3rd-party/cairo/test/reference/white-in-noop.ref.png diff --git a/cairo/test/reference/world-map-fill.argb32.ref.png b/3rd-party/cairo/test/reference/world-map-fill.argb32.ref.png similarity index 100% rename from cairo/test/reference/world-map-fill.argb32.ref.png rename to 3rd-party/cairo/test/reference/world-map-fill.argb32.ref.png diff --git a/cairo/test/reference/world-map-fill.base.argb32.ref.png b/3rd-party/cairo/test/reference/world-map-fill.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/world-map-fill.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/world-map-fill.base.argb32.ref.png diff --git a/cairo/test/reference/world-map-fill.base.rgb24.ref.png b/3rd-party/cairo/test/reference/world-map-fill.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/world-map-fill.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/world-map-fill.base.rgb24.ref.png diff --git a/cairo/test/reference/world-map-fill.image16.ref.png b/3rd-party/cairo/test/reference/world-map-fill.image16.ref.png similarity index 100% rename from cairo/test/reference/world-map-fill.image16.ref.png rename to 3rd-party/cairo/test/reference/world-map-fill.image16.ref.png diff --git a/cairo/test/reference/world-map-fill.rgb24.ref.png b/3rd-party/cairo/test/reference/world-map-fill.rgb24.ref.png similarity index 100% rename from cairo/test/reference/world-map-fill.rgb24.ref.png rename to 3rd-party/cairo/test/reference/world-map-fill.rgb24.ref.png diff --git a/cairo/test/reference/world-map-fill.traps.argb32.ref.png b/3rd-party/cairo/test/reference/world-map-fill.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/world-map-fill.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/world-map-fill.traps.argb32.ref.png diff --git a/cairo/test/reference/world-map-fill.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/world-map-fill.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/world-map-fill.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/world-map-fill.traps.rgb24.ref.png diff --git a/cairo/test/reference/world-map-stroke.argb32.ref.png b/3rd-party/cairo/test/reference/world-map-stroke.argb32.ref.png similarity index 100% rename from cairo/test/reference/world-map-stroke.argb32.ref.png rename to 3rd-party/cairo/test/reference/world-map-stroke.argb32.ref.png diff --git a/cairo/test/reference/world-map-stroke.base.argb32.ref.png b/3rd-party/cairo/test/reference/world-map-stroke.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/world-map-stroke.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/world-map-stroke.base.argb32.ref.png diff --git a/cairo/test/reference/world-map-stroke.base.rgb24.ref.png b/3rd-party/cairo/test/reference/world-map-stroke.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/world-map-stroke.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/world-map-stroke.base.rgb24.ref.png diff --git a/cairo/test/reference/world-map-stroke.image16.ref.png b/3rd-party/cairo/test/reference/world-map-stroke.image16.ref.png similarity index 100% rename from cairo/test/reference/world-map-stroke.image16.ref.png rename to 3rd-party/cairo/test/reference/world-map-stroke.image16.ref.png diff --git a/cairo/test/reference/world-map-stroke.mask.argb32.ref.png b/3rd-party/cairo/test/reference/world-map-stroke.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/world-map-stroke.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/world-map-stroke.mask.argb32.ref.png diff --git a/cairo/test/reference/world-map-stroke.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/world-map-stroke.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/world-map-stroke.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/world-map-stroke.mask.rgb24.ref.png diff --git a/cairo/test/reference/world-map-stroke.rgb24.ref.png b/3rd-party/cairo/test/reference/world-map-stroke.rgb24.ref.png similarity index 100% rename from cairo/test/reference/world-map-stroke.rgb24.ref.png rename to 3rd-party/cairo/test/reference/world-map-stroke.rgb24.ref.png diff --git a/cairo/test/reference/world-map-stroke.traps.argb32.ref.png b/3rd-party/cairo/test/reference/world-map-stroke.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/world-map-stroke.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/world-map-stroke.traps.argb32.ref.png diff --git a/cairo/test/reference/world-map-stroke.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/world-map-stroke.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/world-map-stroke.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/world-map-stroke.traps.rgb24.ref.png diff --git a/cairo/test/reference/world-map.argb32.ref.png b/3rd-party/cairo/test/reference/world-map.argb32.ref.png similarity index 100% rename from cairo/test/reference/world-map.argb32.ref.png rename to 3rd-party/cairo/test/reference/world-map.argb32.ref.png diff --git a/cairo/test/reference/world-map.base.argb32.ref.png b/3rd-party/cairo/test/reference/world-map.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/world-map.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/world-map.base.argb32.ref.png diff --git a/cairo/test/reference/world-map.base.rgb24.ref.png b/3rd-party/cairo/test/reference/world-map.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/world-map.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/world-map.base.rgb24.ref.png diff --git a/cairo/test/reference/world-map.image16.ref.png b/3rd-party/cairo/test/reference/world-map.image16.ref.png similarity index 100% rename from cairo/test/reference/world-map.image16.ref.png rename to 3rd-party/cairo/test/reference/world-map.image16.ref.png diff --git a/cairo/test/reference/world-map.mask.argb32.ref.png b/3rd-party/cairo/test/reference/world-map.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/world-map.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/world-map.mask.argb32.ref.png diff --git a/cairo/test/reference/world-map.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/world-map.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/world-map.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/world-map.mask.rgb24.ref.png diff --git a/cairo/test/reference/world-map.rgb24.ref.png b/3rd-party/cairo/test/reference/world-map.rgb24.ref.png similarity index 100% rename from cairo/test/reference/world-map.rgb24.ref.png rename to 3rd-party/cairo/test/reference/world-map.rgb24.ref.png diff --git a/cairo/test/reference/world-map.traps.argb32.ref.png b/3rd-party/cairo/test/reference/world-map.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/world-map.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/world-map.traps.argb32.ref.png diff --git a/cairo/test/reference/world-map.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/world-map.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/world-map.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/world-map.traps.rgb24.ref.png diff --git a/cairo/test/reference/xcb-huge-image-shm.base.argb32.ref.png b/3rd-party/cairo/test/reference/xcb-huge-image-shm.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/xcb-huge-image-shm.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/xcb-huge-image-shm.base.argb32.ref.png diff --git a/cairo/test/reference/xcb-huge-image-shm.base.rgb24.ref.png b/3rd-party/cairo/test/reference/xcb-huge-image-shm.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/xcb-huge-image-shm.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/xcb-huge-image-shm.base.rgb24.ref.png diff --git a/cairo/test/reference/xcb-huge-image-shm.ref.png b/3rd-party/cairo/test/reference/xcb-huge-image-shm.ref.png similarity index 100% rename from cairo/test/reference/xcb-huge-image-shm.ref.png rename to 3rd-party/cairo/test/reference/xcb-huge-image-shm.ref.png diff --git a/cairo/test/reference/xcb-huge-subimage.ref.png b/3rd-party/cairo/test/reference/xcb-huge-subimage.ref.png similarity index 100% rename from cairo/test/reference/xcb-huge-subimage.ref.png rename to 3rd-party/cairo/test/reference/xcb-huge-subimage.ref.png diff --git a/cairo/test/reference/xcb-snapshot-assert.base.argb32.ref.png b/3rd-party/cairo/test/reference/xcb-snapshot-assert.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/xcb-snapshot-assert.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/xcb-snapshot-assert.base.argb32.ref.png diff --git a/cairo/test/reference/xcb-snapshot-assert.base.rgb24.ref.png b/3rd-party/cairo/test/reference/xcb-snapshot-assert.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/xcb-snapshot-assert.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/xcb-snapshot-assert.base.rgb24.ref.png diff --git a/cairo/test/reference/xcb-snapshot-assert.ref.png b/3rd-party/cairo/test/reference/xcb-snapshot-assert.ref.png similarity index 100% rename from cairo/test/reference/xcb-snapshot-assert.ref.png rename to 3rd-party/cairo/test/reference/xcb-snapshot-assert.ref.png diff --git a/cairo/test/reference/xcb-stress-cache.base.argb32.ref.png b/3rd-party/cairo/test/reference/xcb-stress-cache.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/xcb-stress-cache.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/xcb-stress-cache.base.argb32.ref.png diff --git a/cairo/test/reference/xcb-stress-cache.base.rgb24.ref.png b/3rd-party/cairo/test/reference/xcb-stress-cache.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/xcb-stress-cache.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/xcb-stress-cache.base.rgb24.ref.png diff --git a/cairo/test/reference/xcb-stress-cache.ref.png b/3rd-party/cairo/test/reference/xcb-stress-cache.ref.png similarity index 100% rename from cairo/test/reference/xcb-stress-cache.ref.png rename to 3rd-party/cairo/test/reference/xcb-stress-cache.ref.png diff --git a/cairo/test/reference/xcb-surface-source.argb32.ref.png b/3rd-party/cairo/test/reference/xcb-surface-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/xcb-surface-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/xcb-surface-source.argb32.ref.png diff --git a/cairo/test/reference/xcb-surface-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/xcb-surface-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/xcb-surface-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/xcb-surface-source.base.argb32.ref.png diff --git a/cairo/test/reference/xcb-surface-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/xcb-surface-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/xcb-surface-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/xcb-surface-source.base.rgb24.ref.png diff --git a/cairo/test/reference/xcb-surface-source.image16.ref.png b/3rd-party/cairo/test/reference/xcb-surface-source.image16.ref.png similarity index 100% rename from cairo/test/reference/xcb-surface-source.image16.ref.png rename to 3rd-party/cairo/test/reference/xcb-surface-source.image16.ref.png diff --git a/cairo/test/reference/xcb-surface-source.ps.argb32.ref.png b/3rd-party/cairo/test/reference/xcb-surface-source.ps.argb32.ref.png similarity index 100% rename from cairo/test/reference/xcb-surface-source.ps.argb32.ref.png rename to 3rd-party/cairo/test/reference/xcb-surface-source.ps.argb32.ref.png diff --git a/cairo/test/reference/xcb-surface-source.ps.rgb24.ref.png b/3rd-party/cairo/test/reference/xcb-surface-source.ps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/xcb-surface-source.ps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/xcb-surface-source.ps.rgb24.ref.png diff --git a/cairo/test/reference/xcb-surface-source.rgb24.ref.png b/3rd-party/cairo/test/reference/xcb-surface-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/xcb-surface-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/xcb-surface-source.rgb24.ref.png diff --git a/cairo/test/reference/xcomposite-projection.base.argb32.ref.png b/3rd-party/cairo/test/reference/xcomposite-projection.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/xcomposite-projection.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/xcomposite-projection.base.argb32.ref.png diff --git a/cairo/test/reference/xcomposite-projection.base.rgb24.ref.png b/3rd-party/cairo/test/reference/xcomposite-projection.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/xcomposite-projection.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/xcomposite-projection.base.rgb24.ref.png diff --git a/cairo/test/reference/xcomposite-projection.image16.ref.png b/3rd-party/cairo/test/reference/xcomposite-projection.image16.ref.png similarity index 100% rename from cairo/test/reference/xcomposite-projection.image16.ref.png rename to 3rd-party/cairo/test/reference/xcomposite-projection.image16.ref.png diff --git a/cairo/test/reference/xcomposite-projection.mask.argb32.ref.png b/3rd-party/cairo/test/reference/xcomposite-projection.mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/xcomposite-projection.mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/xcomposite-projection.mask.argb32.ref.png diff --git a/cairo/test/reference/xcomposite-projection.mask.rgb24.ref.png b/3rd-party/cairo/test/reference/xcomposite-projection.mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/xcomposite-projection.mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/xcomposite-projection.mask.rgb24.ref.png diff --git a/cairo/test/reference/xcomposite-projection.quartz.ref.png b/3rd-party/cairo/test/reference/xcomposite-projection.quartz.ref.png similarity index 100% rename from cairo/test/reference/xcomposite-projection.quartz.ref.png rename to 3rd-party/cairo/test/reference/xcomposite-projection.quartz.ref.png diff --git a/cairo/test/reference/xcomposite-projection.ref.png b/3rd-party/cairo/test/reference/xcomposite-projection.ref.png similarity index 100% rename from cairo/test/reference/xcomposite-projection.ref.png rename to 3rd-party/cairo/test/reference/xcomposite-projection.ref.png diff --git a/cairo/test/reference/xcomposite-projection.traps.argb32.ref.png b/3rd-party/cairo/test/reference/xcomposite-projection.traps.argb32.ref.png similarity index 100% rename from cairo/test/reference/xcomposite-projection.traps.argb32.ref.png rename to 3rd-party/cairo/test/reference/xcomposite-projection.traps.argb32.ref.png diff --git a/cairo/test/reference/xcomposite-projection.traps.rgb24.ref.png b/3rd-party/cairo/test/reference/xcomposite-projection.traps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/xcomposite-projection.traps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/xcomposite-projection.traps.rgb24.ref.png diff --git a/cairo/test/reference/xlib-expose-event.base.argb32.ref.png b/3rd-party/cairo/test/reference/xlib-expose-event.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/xlib-expose-event.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/xlib-expose-event.base.argb32.ref.png diff --git a/cairo/test/reference/xlib-expose-event.base.rgb24.ref.png b/3rd-party/cairo/test/reference/xlib-expose-event.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/xlib-expose-event.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/xlib-expose-event.base.rgb24.ref.png diff --git a/cairo/test/reference/xlib-expose-event.image16.ref.png b/3rd-party/cairo/test/reference/xlib-expose-event.image16.ref.png similarity index 100% rename from cairo/test/reference/xlib-expose-event.image16.ref.png rename to 3rd-party/cairo/test/reference/xlib-expose-event.image16.ref.png diff --git a/cairo/test/reference/xlib-expose-event.ps.ref.png b/3rd-party/cairo/test/reference/xlib-expose-event.ps.ref.png similarity index 100% rename from cairo/test/reference/xlib-expose-event.ps.ref.png rename to 3rd-party/cairo/test/reference/xlib-expose-event.ps.ref.png diff --git a/cairo/test/reference/xlib-expose-event.ref.png b/3rd-party/cairo/test/reference/xlib-expose-event.ref.png similarity index 100% rename from cairo/test/reference/xlib-expose-event.ref.png rename to 3rd-party/cairo/test/reference/xlib-expose-event.ref.png diff --git a/cairo/test/reference/xlib-surface-source.argb32.ref.png b/3rd-party/cairo/test/reference/xlib-surface-source.argb32.ref.png similarity index 100% rename from cairo/test/reference/xlib-surface-source.argb32.ref.png rename to 3rd-party/cairo/test/reference/xlib-surface-source.argb32.ref.png diff --git a/cairo/test/reference/xlib-surface-source.base.argb32.ref.png b/3rd-party/cairo/test/reference/xlib-surface-source.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/xlib-surface-source.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/xlib-surface-source.base.argb32.ref.png diff --git a/cairo/test/reference/xlib-surface-source.base.rgb24.ref.png b/3rd-party/cairo/test/reference/xlib-surface-source.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/xlib-surface-source.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/xlib-surface-source.base.rgb24.ref.png diff --git a/cairo/test/reference/xlib-surface-source.image16.ref.png b/3rd-party/cairo/test/reference/xlib-surface-source.image16.ref.png similarity index 100% rename from cairo/test/reference/xlib-surface-source.image16.ref.png rename to 3rd-party/cairo/test/reference/xlib-surface-source.image16.ref.png diff --git a/cairo/test/reference/xlib-surface-source.ps.argb32.ref.png b/3rd-party/cairo/test/reference/xlib-surface-source.ps.argb32.ref.png similarity index 100% rename from cairo/test/reference/xlib-surface-source.ps.argb32.ref.png rename to 3rd-party/cairo/test/reference/xlib-surface-source.ps.argb32.ref.png diff --git a/cairo/test/reference/xlib-surface-source.ps.rgb24.ref.png b/3rd-party/cairo/test/reference/xlib-surface-source.ps.rgb24.ref.png similarity index 100% rename from cairo/test/reference/xlib-surface-source.ps.rgb24.ref.png rename to 3rd-party/cairo/test/reference/xlib-surface-source.ps.rgb24.ref.png diff --git a/cairo/test/reference/xlib-surface-source.rgb24.ref.png b/3rd-party/cairo/test/reference/xlib-surface-source.rgb24.ref.png similarity index 100% rename from cairo/test/reference/xlib-surface-source.rgb24.ref.png rename to 3rd-party/cairo/test/reference/xlib-surface-source.rgb24.ref.png diff --git a/cairo/test/reference/xlib-surface-source.svg12.argb32.xfail.png b/3rd-party/cairo/test/reference/xlib-surface-source.svg12.argb32.xfail.png similarity index 100% rename from cairo/test/reference/xlib-surface-source.svg12.argb32.xfail.png rename to 3rd-party/cairo/test/reference/xlib-surface-source.svg12.argb32.xfail.png diff --git a/cairo/test/reference/xlib-surface-source.svg12.rgb24.xfail.png b/3rd-party/cairo/test/reference/xlib-surface-source.svg12.rgb24.xfail.png similarity index 100% rename from cairo/test/reference/xlib-surface-source.svg12.rgb24.xfail.png rename to 3rd-party/cairo/test/reference/xlib-surface-source.svg12.rgb24.xfail.png diff --git a/cairo/test/reference/zero-alpha.base.argb32.ref.png b/3rd-party/cairo/test/reference/zero-alpha.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/zero-alpha.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/zero-alpha.base.argb32.ref.png diff --git a/cairo/test/reference/zero-alpha.base.rgb24.ref.png b/3rd-party/cairo/test/reference/zero-alpha.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/zero-alpha.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/zero-alpha.base.rgb24.ref.png diff --git a/cairo/test/reference/zero-alpha.ref.png b/3rd-party/cairo/test/reference/zero-alpha.ref.png similarity index 100% rename from cairo/test/reference/zero-alpha.ref.png rename to 3rd-party/cairo/test/reference/zero-alpha.ref.png diff --git a/cairo/test/reference/zero-mask.argb32.ref.png b/3rd-party/cairo/test/reference/zero-mask.argb32.ref.png similarity index 100% rename from cairo/test/reference/zero-mask.argb32.ref.png rename to 3rd-party/cairo/test/reference/zero-mask.argb32.ref.png diff --git a/cairo/test/reference/zero-mask.base.argb32.ref.png b/3rd-party/cairo/test/reference/zero-mask.base.argb32.ref.png similarity index 100% rename from cairo/test/reference/zero-mask.base.argb32.ref.png rename to 3rd-party/cairo/test/reference/zero-mask.base.argb32.ref.png diff --git a/cairo/test/reference/zero-mask.base.rgb24.ref.png b/3rd-party/cairo/test/reference/zero-mask.base.rgb24.ref.png similarity index 100% rename from cairo/test/reference/zero-mask.base.rgb24.ref.png rename to 3rd-party/cairo/test/reference/zero-mask.base.rgb24.ref.png diff --git a/cairo/test/reference/zero-mask.rgb24.ref.png b/3rd-party/cairo/test/reference/zero-mask.rgb24.ref.png similarity index 100% rename from cairo/test/reference/zero-mask.rgb24.ref.png rename to 3rd-party/cairo/test/reference/zero-mask.rgb24.ref.png diff --git a/cairo/test/reflected-stroke.c b/3rd-party/cairo/test/reflected-stroke.c similarity index 100% rename from cairo/test/reflected-stroke.c rename to 3rd-party/cairo/test/reflected-stroke.c diff --git a/cairo/test/rel-path.c b/3rd-party/cairo/test/rel-path.c similarity index 100% rename from cairo/test/rel-path.c rename to 3rd-party/cairo/test/rel-path.c diff --git a/cairo/test/rgb24-ignore-alpha.c b/3rd-party/cairo/test/rgb24-ignore-alpha.c similarity index 100% rename from cairo/test/rgb24-ignore-alpha.c rename to 3rd-party/cairo/test/rgb24-ignore-alpha.c diff --git a/cairo/test/romedalen.jpg b/3rd-party/cairo/test/romedalen.jpg similarity index 100% rename from cairo/test/romedalen.jpg rename to 3rd-party/cairo/test/romedalen.jpg diff --git a/cairo/test/romedalen.png b/3rd-party/cairo/test/romedalen.png similarity index 100% rename from cairo/test/romedalen.png rename to 3rd-party/cairo/test/romedalen.png diff --git a/cairo/test/rotate-image-surface-paint.c b/3rd-party/cairo/test/rotate-image-surface-paint.c similarity index 100% rename from cairo/test/rotate-image-surface-paint.c rename to 3rd-party/cairo/test/rotate-image-surface-paint.c diff --git a/cairo/test/rotated-clip.c b/3rd-party/cairo/test/rotated-clip.c similarity index 100% rename from cairo/test/rotated-clip.c rename to 3rd-party/cairo/test/rotated-clip.c diff --git a/cairo/test/rounded-rectangle-fill.c b/3rd-party/cairo/test/rounded-rectangle-fill.c similarity index 100% rename from cairo/test/rounded-rectangle-fill.c rename to 3rd-party/cairo/test/rounded-rectangle-fill.c diff --git a/cairo/test/rounded-rectangle-stroke.c b/3rd-party/cairo/test/rounded-rectangle-stroke.c similarity index 100% rename from cairo/test/rounded-rectangle-stroke.c rename to 3rd-party/cairo/test/rounded-rectangle-stroke.c diff --git a/cairo/test/run-cairo-test-suite.sh b/3rd-party/cairo/test/run-cairo-test-suite.sh similarity index 100% rename from cairo/test/run-cairo-test-suite.sh rename to 3rd-party/cairo/test/run-cairo-test-suite.sh diff --git a/cairo/test/sample.c b/3rd-party/cairo/test/sample.c similarity index 100% rename from cairo/test/sample.c rename to 3rd-party/cairo/test/sample.c diff --git a/cairo/test/scale-down-source-surface-paint.c b/3rd-party/cairo/test/scale-down-source-surface-paint.c similarity index 100% rename from cairo/test/scale-down-source-surface-paint.c rename to 3rd-party/cairo/test/scale-down-source-surface-paint.c diff --git a/cairo/test/scale-offset-image.c b/3rd-party/cairo/test/scale-offset-image.c similarity index 100% rename from cairo/test/scale-offset-image.c rename to 3rd-party/cairo/test/scale-offset-image.c diff --git a/cairo/test/scale-offset-similar.c b/3rd-party/cairo/test/scale-offset-similar.c similarity index 100% rename from cairo/test/scale-offset-similar.c rename to 3rd-party/cairo/test/scale-offset-similar.c diff --git a/cairo/test/scale-source-surface-paint.c b/3rd-party/cairo/test/scale-source-surface-paint.c similarity index 100% rename from cairo/test/scale-source-surface-paint.c rename to 3rd-party/cairo/test/scale-source-surface-paint.c diff --git a/cairo/test/scaled-font-zero-matrix.c b/3rd-party/cairo/test/scaled-font-zero-matrix.c similarity index 100% rename from cairo/test/scaled-font-zero-matrix.c rename to 3rd-party/cairo/test/scaled-font-zero-matrix.c diff --git a/cairo/test/scarab.jpg b/3rd-party/cairo/test/scarab.jpg similarity index 100% rename from cairo/test/scarab.jpg rename to 3rd-party/cairo/test/scarab.jpg diff --git a/cairo/test/select-font-face.c b/3rd-party/cairo/test/select-font-face.c similarity index 100% rename from cairo/test/select-font-face.c rename to 3rd-party/cairo/test/select-font-face.c diff --git a/cairo/test/select-font-no-show-text.c b/3rd-party/cairo/test/select-font-no-show-text.c similarity index 100% rename from cairo/test/select-font-no-show-text.c rename to 3rd-party/cairo/test/select-font-no-show-text.c diff --git a/cairo/test/self-copy-overlap.c b/3rd-party/cairo/test/self-copy-overlap.c similarity index 100% rename from cairo/test/self-copy-overlap.c rename to 3rd-party/cairo/test/self-copy-overlap.c diff --git a/cairo/test/self-copy.c b/3rd-party/cairo/test/self-copy.c similarity index 100% rename from cairo/test/self-copy.c rename to 3rd-party/cairo/test/self-copy.c diff --git a/cairo/test/self-intersecting.c b/3rd-party/cairo/test/self-intersecting.c similarity index 100% rename from cairo/test/self-intersecting.c rename to 3rd-party/cairo/test/self-intersecting.c diff --git a/cairo/test/set-source.c b/3rd-party/cairo/test/set-source.c similarity index 100% rename from cairo/test/set-source.c rename to 3rd-party/cairo/test/set-source.c diff --git a/cairo/test/shape-general-convex.c b/3rd-party/cairo/test/shape-general-convex.c similarity index 100% rename from cairo/test/shape-general-convex.c rename to 3rd-party/cairo/test/shape-general-convex.c diff --git a/cairo/test/shape-sierpinski.c b/3rd-party/cairo/test/shape-sierpinski.c similarity index 100% rename from cairo/test/shape-sierpinski.c rename to 3rd-party/cairo/test/shape-sierpinski.c diff --git a/cairo/test/show-glyphs-advance.c b/3rd-party/cairo/test/show-glyphs-advance.c similarity index 100% rename from cairo/test/show-glyphs-advance.c rename to 3rd-party/cairo/test/show-glyphs-advance.c diff --git a/cairo/test/show-glyphs-many.c b/3rd-party/cairo/test/show-glyphs-many.c similarity index 100% rename from cairo/test/show-glyphs-many.c rename to 3rd-party/cairo/test/show-glyphs-many.c diff --git a/cairo/test/show-text-current-point.c b/3rd-party/cairo/test/show-text-current-point.c similarity index 100% rename from cairo/test/show-text-current-point.c rename to 3rd-party/cairo/test/show-text-current-point.c diff --git a/cairo/test/skew-extreme.c b/3rd-party/cairo/test/skew-extreme.c similarity index 100% rename from cairo/test/skew-extreme.c rename to 3rd-party/cairo/test/skew-extreme.c diff --git a/cairo/test/smask-fill.c b/3rd-party/cairo/test/smask-fill.c similarity index 100% rename from cairo/test/smask-fill.c rename to 3rd-party/cairo/test/smask-fill.c diff --git a/cairo/test/smask-image-mask.c b/3rd-party/cairo/test/smask-image-mask.c similarity index 100% rename from cairo/test/smask-image-mask.c rename to 3rd-party/cairo/test/smask-image-mask.c diff --git a/cairo/test/smask-mask.c b/3rd-party/cairo/test/smask-mask.c similarity index 100% rename from cairo/test/smask-mask.c rename to 3rd-party/cairo/test/smask-mask.c diff --git a/cairo/test/smask-paint.c b/3rd-party/cairo/test/smask-paint.c similarity index 100% rename from cairo/test/smask-paint.c rename to 3rd-party/cairo/test/smask-paint.c diff --git a/cairo/test/smask-stroke.c b/3rd-party/cairo/test/smask-stroke.c similarity index 100% rename from cairo/test/smask-stroke.c rename to 3rd-party/cairo/test/smask-stroke.c diff --git a/cairo/test/smask-text.c b/3rd-party/cairo/test/smask-text.c similarity index 100% rename from cairo/test/smask-text.c rename to 3rd-party/cairo/test/smask-text.c diff --git a/cairo/test/smask.c b/3rd-party/cairo/test/smask.c similarity index 100% rename from cairo/test/smask.c rename to 3rd-party/cairo/test/smask.c diff --git a/cairo/test/solid-pattern-cache-stress.c b/3rd-party/cairo/test/solid-pattern-cache-stress.c similarity index 100% rename from cairo/test/solid-pattern-cache-stress.c rename to 3rd-party/cairo/test/solid-pattern-cache-stress.c diff --git a/cairo/test/source-clip-scale.c b/3rd-party/cairo/test/source-clip-scale.c similarity index 100% rename from cairo/test/source-clip-scale.c rename to 3rd-party/cairo/test/source-clip-scale.c diff --git a/cairo/test/source-clip.c b/3rd-party/cairo/test/source-clip.c similarity index 100% rename from cairo/test/source-clip.c rename to 3rd-party/cairo/test/source-clip.c diff --git a/cairo/test/source-surface-scale-paint.c b/3rd-party/cairo/test/source-surface-scale-paint.c similarity index 100% rename from cairo/test/source-surface-scale-paint.c rename to 3rd-party/cairo/test/source-surface-scale-paint.c diff --git a/cairo/test/spline-decomposition.c b/3rd-party/cairo/test/spline-decomposition.c similarity index 100% rename from cairo/test/spline-decomposition.c rename to 3rd-party/cairo/test/spline-decomposition.c diff --git a/cairo/test/stride-12-image.c b/3rd-party/cairo/test/stride-12-image.c similarity index 100% rename from cairo/test/stride-12-image.c rename to 3rd-party/cairo/test/stride-12-image.c diff --git a/cairo/test/stroke-clipped.c b/3rd-party/cairo/test/stroke-clipped.c similarity index 100% rename from cairo/test/stroke-clipped.c rename to 3rd-party/cairo/test/stroke-clipped.c diff --git a/cairo/test/stroke-ctm-caps.c b/3rd-party/cairo/test/stroke-ctm-caps.c similarity index 100% rename from cairo/test/stroke-ctm-caps.c rename to 3rd-party/cairo/test/stroke-ctm-caps.c diff --git a/cairo/test/stroke-image.c b/3rd-party/cairo/test/stroke-image.c similarity index 100% rename from cairo/test/stroke-image.c rename to 3rd-party/cairo/test/stroke-image.c diff --git a/cairo/test/stroke-open-box.c b/3rd-party/cairo/test/stroke-open-box.c similarity index 100% rename from cairo/test/stroke-open-box.c rename to 3rd-party/cairo/test/stroke-open-box.c diff --git a/cairo/test/stroke-pattern.c b/3rd-party/cairo/test/stroke-pattern.c similarity index 100% rename from cairo/test/stroke-pattern.c rename to 3rd-party/cairo/test/stroke-pattern.c diff --git a/cairo/test/subsurface-image-repeat.c b/3rd-party/cairo/test/subsurface-image-repeat.c similarity index 100% rename from cairo/test/subsurface-image-repeat.c rename to 3rd-party/cairo/test/subsurface-image-repeat.c diff --git a/cairo/test/subsurface-modify-child.c b/3rd-party/cairo/test/subsurface-modify-child.c similarity index 100% rename from cairo/test/subsurface-modify-child.c rename to 3rd-party/cairo/test/subsurface-modify-child.c diff --git a/cairo/test/subsurface-modify-parent.c b/3rd-party/cairo/test/subsurface-modify-parent.c similarity index 100% rename from cairo/test/subsurface-modify-parent.c rename to 3rd-party/cairo/test/subsurface-modify-parent.c diff --git a/cairo/test/subsurface-outside-target.c b/3rd-party/cairo/test/subsurface-outside-target.c similarity index 100% rename from cairo/test/subsurface-outside-target.c rename to 3rd-party/cairo/test/subsurface-outside-target.c diff --git a/cairo/test/subsurface-pad.c b/3rd-party/cairo/test/subsurface-pad.c similarity index 100% rename from cairo/test/subsurface-pad.c rename to 3rd-party/cairo/test/subsurface-pad.c diff --git a/cairo/test/subsurface-reflect.c b/3rd-party/cairo/test/subsurface-reflect.c similarity index 100% rename from cairo/test/subsurface-reflect.c rename to 3rd-party/cairo/test/subsurface-reflect.c diff --git a/cairo/test/subsurface-repeat.c b/3rd-party/cairo/test/subsurface-repeat.c similarity index 100% rename from cairo/test/subsurface-repeat.c rename to 3rd-party/cairo/test/subsurface-repeat.c diff --git a/cairo/test/subsurface-scale.c b/3rd-party/cairo/test/subsurface-scale.c similarity index 100% rename from cairo/test/subsurface-scale.c rename to 3rd-party/cairo/test/subsurface-scale.c diff --git a/cairo/test/subsurface-similar-repeat.c b/3rd-party/cairo/test/subsurface-similar-repeat.c similarity index 100% rename from cairo/test/subsurface-similar-repeat.c rename to 3rd-party/cairo/test/subsurface-similar-repeat.c diff --git a/cairo/test/subsurface.c b/3rd-party/cairo/test/subsurface.c similarity index 100% rename from cairo/test/subsurface.c rename to 3rd-party/cairo/test/subsurface.c diff --git a/cairo/test/surface-finish-twice.c b/3rd-party/cairo/test/surface-finish-twice.c similarity index 100% rename from cairo/test/surface-finish-twice.c rename to 3rd-party/cairo/test/surface-finish-twice.c diff --git a/cairo/test/surface-pattern-big-scale-down.c b/3rd-party/cairo/test/surface-pattern-big-scale-down.c similarity index 100% rename from cairo/test/surface-pattern-big-scale-down.c rename to 3rd-party/cairo/test/surface-pattern-big-scale-down.c diff --git a/cairo/test/surface-pattern-operator.c b/3rd-party/cairo/test/surface-pattern-operator.c similarity index 100% rename from cairo/test/surface-pattern-operator.c rename to 3rd-party/cairo/test/surface-pattern-operator.c diff --git a/cairo/test/surface-pattern-scale-down-extend.c b/3rd-party/cairo/test/surface-pattern-scale-down-extend.c similarity index 100% rename from cairo/test/surface-pattern-scale-down-extend.c rename to 3rd-party/cairo/test/surface-pattern-scale-down-extend.c diff --git a/cairo/test/surface-pattern-scale-down.c b/3rd-party/cairo/test/surface-pattern-scale-down.c similarity index 100% rename from cairo/test/surface-pattern-scale-down.c rename to 3rd-party/cairo/test/surface-pattern-scale-down.c diff --git a/cairo/test/surface-pattern-scale-up.c b/3rd-party/cairo/test/surface-pattern-scale-up.c similarity index 100% rename from cairo/test/surface-pattern-scale-up.c rename to 3rd-party/cairo/test/surface-pattern-scale-up.c diff --git a/cairo/test/surface-pattern.c b/3rd-party/cairo/test/surface-pattern.c similarity index 100% rename from cairo/test/surface-pattern.c rename to 3rd-party/cairo/test/surface-pattern.c diff --git a/cairo/test/surface-source.c b/3rd-party/cairo/test/surface-source.c similarity index 100% rename from cairo/test/surface-source.c rename to 3rd-party/cairo/test/surface-source.c diff --git a/cairo/test/svg-clip.c b/3rd-party/cairo/test/svg-clip.c similarity index 100% rename from cairo/test/svg-clip.c rename to 3rd-party/cairo/test/svg-clip.c diff --git a/cairo/test/svg-surface-source.c b/3rd-party/cairo/test/svg-surface-source.c similarity index 100% rename from cairo/test/svg-surface-source.c rename to 3rd-party/cairo/test/svg-surface-source.c diff --git a/cairo/test/svg-surface.c b/3rd-party/cairo/test/svg-surface.c similarity index 100% rename from cairo/test/svg-surface.c rename to 3rd-party/cairo/test/svg-surface.c diff --git a/cairo/test/svg2png.c b/3rd-party/cairo/test/svg2png.c similarity index 100% rename from cairo/test/svg2png.c rename to 3rd-party/cairo/test/svg2png.c diff --git a/cairo/test/testsvg b/3rd-party/cairo/test/testsvg similarity index 100% rename from cairo/test/testsvg rename to 3rd-party/cairo/test/testsvg diff --git a/cairo/test/testtable.js b/3rd-party/cairo/test/testtable.js similarity index 100% rename from cairo/test/testtable.js rename to 3rd-party/cairo/test/testtable.js diff --git a/cairo/test/text-antialias-subpixel.c b/3rd-party/cairo/test/text-antialias-subpixel.c similarity index 100% rename from cairo/test/text-antialias-subpixel.c rename to 3rd-party/cairo/test/text-antialias-subpixel.c diff --git a/cairo/test/text-antialias.c b/3rd-party/cairo/test/text-antialias.c similarity index 100% rename from cairo/test/text-antialias.c rename to 3rd-party/cairo/test/text-antialias.c diff --git a/cairo/test/text-cache-crash.c b/3rd-party/cairo/test/text-cache-crash.c similarity index 100% rename from cairo/test/text-cache-crash.c rename to 3rd-party/cairo/test/text-cache-crash.c diff --git a/cairo/test/text-glyph-range.c b/3rd-party/cairo/test/text-glyph-range.c similarity index 100% rename from cairo/test/text-glyph-range.c rename to 3rd-party/cairo/test/text-glyph-range.c diff --git a/cairo/test/text-pattern.c b/3rd-party/cairo/test/text-pattern.c similarity index 100% rename from cairo/test/text-pattern.c rename to 3rd-party/cairo/test/text-pattern.c diff --git a/cairo/test/text-rotate.c b/3rd-party/cairo/test/text-rotate.c similarity index 100% rename from cairo/test/text-rotate.c rename to 3rd-party/cairo/test/text-rotate.c diff --git a/cairo/test/text-transform.c b/3rd-party/cairo/test/text-transform.c similarity index 100% rename from cairo/test/text-transform.c rename to 3rd-party/cairo/test/text-transform.c diff --git a/cairo/test/text-zero-len.c b/3rd-party/cairo/test/text-zero-len.c similarity index 100% rename from cairo/test/text-zero-len.c rename to 3rd-party/cairo/test/text-zero-len.c diff --git a/cairo/test/tiger.c b/3rd-party/cairo/test/tiger.c similarity index 100% rename from cairo/test/tiger.c rename to 3rd-party/cairo/test/tiger.c diff --git a/cairo/test/tiger.inc b/3rd-party/cairo/test/tiger.inc similarity index 100% rename from cairo/test/tiger.inc rename to 3rd-party/cairo/test/tiger.inc diff --git a/cairo/test/tighten-bounds.c b/3rd-party/cairo/test/tighten-bounds.c similarity index 100% rename from cairo/test/tighten-bounds.c rename to 3rd-party/cairo/test/tighten-bounds.c diff --git a/cairo/test/toy-font-face.c b/3rd-party/cairo/test/toy-font-face.c similarity index 100% rename from cairo/test/toy-font-face.c rename to 3rd-party/cairo/test/toy-font-face.c diff --git a/cairo/test/transforms.c b/3rd-party/cairo/test/transforms.c similarity index 100% rename from cairo/test/transforms.c rename to 3rd-party/cairo/test/transforms.c diff --git a/cairo/test/translate-show-surface.c b/3rd-party/cairo/test/translate-show-surface.c similarity index 100% rename from cairo/test/translate-show-surface.c rename to 3rd-party/cairo/test/translate-show-surface.c diff --git a/cairo/test/trap-clip.c b/3rd-party/cairo/test/trap-clip.c similarity index 100% rename from cairo/test/trap-clip.c rename to 3rd-party/cairo/test/trap-clip.c diff --git a/cairo/test/twin-antialias-gray.c b/3rd-party/cairo/test/twin-antialias-gray.c similarity index 100% rename from cairo/test/twin-antialias-gray.c rename to 3rd-party/cairo/test/twin-antialias-gray.c diff --git a/cairo/test/twin-antialias-mixed.c b/3rd-party/cairo/test/twin-antialias-mixed.c similarity index 100% rename from cairo/test/twin-antialias-mixed.c rename to 3rd-party/cairo/test/twin-antialias-mixed.c diff --git a/cairo/test/twin-antialias-none.c b/3rd-party/cairo/test/twin-antialias-none.c similarity index 100% rename from cairo/test/twin-antialias-none.c rename to 3rd-party/cairo/test/twin-antialias-none.c diff --git a/cairo/test/twin-antialias-subpixel.c b/3rd-party/cairo/test/twin-antialias-subpixel.c similarity index 100% rename from cairo/test/twin-antialias-subpixel.c rename to 3rd-party/cairo/test/twin-antialias-subpixel.c diff --git a/cairo/test/twin.c b/3rd-party/cairo/test/twin.c similarity index 100% rename from cairo/test/twin.c rename to 3rd-party/cairo/test/twin.c diff --git a/cairo/test/unaligned-box.c b/3rd-party/cairo/test/unaligned-box.c similarity index 100% rename from cairo/test/unaligned-box.c rename to 3rd-party/cairo/test/unaligned-box.c diff --git a/cairo/test/unantialiased-shapes.c b/3rd-party/cairo/test/unantialiased-shapes.c similarity index 100% rename from cairo/test/unantialiased-shapes.c rename to 3rd-party/cairo/test/unantialiased-shapes.c diff --git a/cairo/test/unbounded-operator.c b/3rd-party/cairo/test/unbounded-operator.c similarity index 100% rename from cairo/test/unbounded-operator.c rename to 3rd-party/cairo/test/unbounded-operator.c diff --git a/cairo/test/unclosed-strokes.c b/3rd-party/cairo/test/unclosed-strokes.c similarity index 100% rename from cairo/test/unclosed-strokes.c rename to 3rd-party/cairo/test/unclosed-strokes.c diff --git a/cairo/test/user-data.c b/3rd-party/cairo/test/user-data.c similarity index 100% rename from cairo/test/user-data.c rename to 3rd-party/cairo/test/user-data.c diff --git a/cairo/test/user-font-mask.c b/3rd-party/cairo/test/user-font-mask.c similarity index 100% rename from cairo/test/user-font-mask.c rename to 3rd-party/cairo/test/user-font-mask.c diff --git a/cairo/test/user-font-proxy.c b/3rd-party/cairo/test/user-font-proxy.c similarity index 100% rename from cairo/test/user-font-proxy.c rename to 3rd-party/cairo/test/user-font-proxy.c diff --git a/cairo/test/user-font-rescale.c b/3rd-party/cairo/test/user-font-rescale.c similarity index 100% rename from cairo/test/user-font-rescale.c rename to 3rd-party/cairo/test/user-font-rescale.c diff --git a/cairo/test/user-font.c b/3rd-party/cairo/test/user-font.c similarity index 100% rename from cairo/test/user-font.c rename to 3rd-party/cairo/test/user-font.c diff --git a/cairo/test/white-in-noop.c b/3rd-party/cairo/test/white-in-noop.c similarity index 100% rename from cairo/test/white-in-noop.c rename to 3rd-party/cairo/test/white-in-noop.c diff --git a/cairo/test/world-map.c b/3rd-party/cairo/test/world-map.c similarity index 100% rename from cairo/test/world-map.c rename to 3rd-party/cairo/test/world-map.c diff --git a/cairo/test/world-map.h b/3rd-party/cairo/test/world-map.h similarity index 100% rename from cairo/test/world-map.h rename to 3rd-party/cairo/test/world-map.h diff --git a/cairo/test/xcb-huge-image-shm.c b/3rd-party/cairo/test/xcb-huge-image-shm.c similarity index 100% rename from cairo/test/xcb-huge-image-shm.c rename to 3rd-party/cairo/test/xcb-huge-image-shm.c diff --git a/cairo/test/xcb-huge-subimage.c b/3rd-party/cairo/test/xcb-huge-subimage.c similarity index 100% rename from cairo/test/xcb-huge-subimage.c rename to 3rd-party/cairo/test/xcb-huge-subimage.c diff --git a/cairo/test/xcb-snapshot-assert.c b/3rd-party/cairo/test/xcb-snapshot-assert.c similarity index 100% rename from cairo/test/xcb-snapshot-assert.c rename to 3rd-party/cairo/test/xcb-snapshot-assert.c diff --git a/cairo/test/xcb-stress-cache.c b/3rd-party/cairo/test/xcb-stress-cache.c similarity index 100% rename from cairo/test/xcb-stress-cache.c rename to 3rd-party/cairo/test/xcb-stress-cache.c diff --git a/cairo/test/xcb-surface-source.c b/3rd-party/cairo/test/xcb-surface-source.c similarity index 100% rename from cairo/test/xcb-surface-source.c rename to 3rd-party/cairo/test/xcb-surface-source.c diff --git a/cairo/test/xcomposite-projection.c b/3rd-party/cairo/test/xcomposite-projection.c similarity index 100% rename from cairo/test/xcomposite-projection.c rename to 3rd-party/cairo/test/xcomposite-projection.c diff --git a/cairo/test/xlib-expose-event.c b/3rd-party/cairo/test/xlib-expose-event.c similarity index 100% rename from cairo/test/xlib-expose-event.c rename to 3rd-party/cairo/test/xlib-expose-event.c diff --git a/cairo/test/xlib-surface-source.c b/3rd-party/cairo/test/xlib-surface-source.c similarity index 100% rename from cairo/test/xlib-surface-source.c rename to 3rd-party/cairo/test/xlib-surface-source.c diff --git a/cairo/test/xlib-surface.c b/3rd-party/cairo/test/xlib-surface.c similarity index 100% rename from cairo/test/xlib-surface.c rename to 3rd-party/cairo/test/xlib-surface.c diff --git a/cairo/test/zero-alpha.c b/3rd-party/cairo/test/zero-alpha.c similarity index 100% rename from cairo/test/zero-alpha.c rename to 3rd-party/cairo/test/zero-alpha.c diff --git a/cairo/test/zero-mask.c b/3rd-party/cairo/test/zero-mask.c similarity index 100% rename from cairo/test/zero-mask.c rename to 3rd-party/cairo/test/zero-mask.c diff --git a/cairo/util/.gitignore b/3rd-party/cairo/util/.gitignore similarity index 100% rename from cairo/util/.gitignore rename to 3rd-party/cairo/util/.gitignore diff --git a/cairo/util/COPYING b/3rd-party/cairo/util/COPYING similarity index 100% rename from cairo/util/COPYING rename to 3rd-party/cairo/util/COPYING diff --git a/cairo/util/Makefile.am b/3rd-party/cairo/util/Makefile.am similarity index 100% rename from cairo/util/Makefile.am rename to 3rd-party/cairo/util/Makefile.am diff --git a/cairo/util/README b/3rd-party/cairo/util/README similarity index 100% rename from cairo/util/README rename to 3rd-party/cairo/util/README diff --git a/cairo/util/backtrace-symbols.c b/3rd-party/cairo/util/backtrace-symbols.c similarity index 100% rename from cairo/util/backtrace-symbols.c rename to 3rd-party/cairo/util/backtrace-symbols.c diff --git a/cairo/util/cairo-api-update b/3rd-party/cairo/util/cairo-api-update similarity index 100% rename from cairo/util/cairo-api-update rename to 3rd-party/cairo/util/cairo-api-update diff --git a/cairo/util/cairo-fdr/Makefile.am b/3rd-party/cairo/util/cairo-fdr/Makefile.am similarity index 100% rename from cairo/util/cairo-fdr/Makefile.am rename to 3rd-party/cairo/util/cairo-fdr/Makefile.am diff --git a/cairo/util/cairo-fdr/fdr.c b/3rd-party/cairo/util/cairo-fdr/fdr.c similarity index 100% rename from cairo/util/cairo-fdr/fdr.c rename to 3rd-party/cairo/util/cairo-fdr/fdr.c diff --git a/cairo/util/cairo-gobject/Makefile.am b/3rd-party/cairo/util/cairo-gobject/Makefile.am similarity index 100% rename from cairo/util/cairo-gobject/Makefile.am rename to 3rd-party/cairo/util/cairo-gobject/Makefile.am diff --git a/cairo/util/cairo-gobject/cairo-gobject-enums.c b/3rd-party/cairo/util/cairo-gobject/cairo-gobject-enums.c similarity index 100% rename from cairo/util/cairo-gobject/cairo-gobject-enums.c rename to 3rd-party/cairo/util/cairo-gobject/cairo-gobject-enums.c diff --git a/cairo/util/cairo-gobject/cairo-gobject-structs.c b/3rd-party/cairo/util/cairo-gobject/cairo-gobject-structs.c similarity index 100% rename from cairo/util/cairo-gobject/cairo-gobject-structs.c rename to 3rd-party/cairo/util/cairo-gobject/cairo-gobject-structs.c diff --git a/cairo/util/cairo-gobject/cairo-gobject.h b/3rd-party/cairo/util/cairo-gobject/cairo-gobject.h similarity index 100% rename from cairo/util/cairo-gobject/cairo-gobject.h rename to 3rd-party/cairo/util/cairo-gobject/cairo-gobject.h diff --git a/cairo/util/cairo-missing/Makefile.am b/3rd-party/cairo/util/cairo-missing/Makefile.am similarity index 100% rename from cairo/util/cairo-missing/Makefile.am rename to 3rd-party/cairo/util/cairo-missing/Makefile.am diff --git a/cairo/util/cairo-missing/Makefile.sources b/3rd-party/cairo/util/cairo-missing/Makefile.sources similarity index 100% rename from cairo/util/cairo-missing/Makefile.sources rename to 3rd-party/cairo/util/cairo-missing/Makefile.sources diff --git a/cairo/util/cairo-missing/Makefile.win32 b/3rd-party/cairo/util/cairo-missing/Makefile.win32 similarity index 100% rename from cairo/util/cairo-missing/Makefile.win32 rename to 3rd-party/cairo/util/cairo-missing/Makefile.win32 diff --git a/cairo/util/cairo-missing/cairo-missing.h b/3rd-party/cairo/util/cairo-missing/cairo-missing.h similarity index 100% rename from cairo/util/cairo-missing/cairo-missing.h rename to 3rd-party/cairo/util/cairo-missing/cairo-missing.h diff --git a/cairo/util/cairo-missing/getline.c b/3rd-party/cairo/util/cairo-missing/getline.c similarity index 100% rename from cairo/util/cairo-missing/getline.c rename to 3rd-party/cairo/util/cairo-missing/getline.c diff --git a/cairo/util/cairo-missing/strndup.c b/3rd-party/cairo/util/cairo-missing/strndup.c similarity index 100% rename from cairo/util/cairo-missing/strndup.c rename to 3rd-party/cairo/util/cairo-missing/strndup.c diff --git a/cairo/util/cairo-script/.gitignore b/3rd-party/cairo/util/cairo-script/.gitignore similarity index 100% rename from cairo/util/cairo-script/.gitignore rename to 3rd-party/cairo/util/cairo-script/.gitignore diff --git a/cairo/util/cairo-script/COPYING b/3rd-party/cairo/util/cairo-script/COPYING similarity index 100% rename from cairo/util/cairo-script/COPYING rename to 3rd-party/cairo/util/cairo-script/COPYING diff --git a/cairo/util/cairo-script/Makefile.am b/3rd-party/cairo/util/cairo-script/Makefile.am similarity index 100% rename from cairo/util/cairo-script/Makefile.am rename to 3rd-party/cairo/util/cairo-script/Makefile.am diff --git a/cairo/util/cairo-script/Makefile.sources b/3rd-party/cairo/util/cairo-script/Makefile.sources similarity index 100% rename from cairo/util/cairo-script/Makefile.sources rename to 3rd-party/cairo/util/cairo-script/Makefile.sources diff --git a/cairo/util/cairo-script/Makefile.win32 b/3rd-party/cairo/util/cairo-script/Makefile.win32 similarity index 100% rename from cairo/util/cairo-script/Makefile.win32 rename to 3rd-party/cairo/util/cairo-script/Makefile.win32 diff --git a/cairo/util/cairo-script/cairo-script-file.c b/3rd-party/cairo/util/cairo-script/cairo-script-file.c similarity index 100% rename from cairo/util/cairo-script/cairo-script-file.c rename to 3rd-party/cairo/util/cairo-script/cairo-script-file.c diff --git a/cairo/util/cairo-script/cairo-script-hash.c b/3rd-party/cairo/util/cairo-script/cairo-script-hash.c similarity index 100% rename from cairo/util/cairo-script/cairo-script-hash.c rename to 3rd-party/cairo/util/cairo-script/cairo-script-hash.c diff --git a/cairo/util/cairo-script/cairo-script-interpreter.c b/3rd-party/cairo/util/cairo-script/cairo-script-interpreter.c similarity index 100% rename from cairo/util/cairo-script/cairo-script-interpreter.c rename to 3rd-party/cairo/util/cairo-script/cairo-script-interpreter.c diff --git a/cairo/util/cairo-script/cairo-script-interpreter.h b/3rd-party/cairo/util/cairo-script/cairo-script-interpreter.h similarity index 100% rename from cairo/util/cairo-script/cairo-script-interpreter.h rename to 3rd-party/cairo/util/cairo-script/cairo-script-interpreter.h diff --git a/cairo/util/cairo-script/cairo-script-objects.c b/3rd-party/cairo/util/cairo-script/cairo-script-objects.c similarity index 100% rename from cairo/util/cairo-script/cairo-script-objects.c rename to 3rd-party/cairo/util/cairo-script/cairo-script-objects.c diff --git a/cairo/util/cairo-script/cairo-script-operators.c b/3rd-party/cairo/util/cairo-script/cairo-script-operators.c similarity index 100% rename from cairo/util/cairo-script/cairo-script-operators.c rename to 3rd-party/cairo/util/cairo-script/cairo-script-operators.c diff --git a/cairo/util/cairo-script/cairo-script-private.h b/3rd-party/cairo/util/cairo-script/cairo-script-private.h similarity index 100% rename from cairo/util/cairo-script/cairo-script-private.h rename to 3rd-party/cairo/util/cairo-script/cairo-script-private.h diff --git a/cairo/util/cairo-script/cairo-script-scanner.c b/3rd-party/cairo/util/cairo-script/cairo-script-scanner.c similarity index 100% rename from cairo/util/cairo-script/cairo-script-scanner.c rename to 3rd-party/cairo/util/cairo-script/cairo-script-scanner.c diff --git a/cairo/util/cairo-script/cairo-script-stack.c b/3rd-party/cairo/util/cairo-script/cairo-script-stack.c similarity index 100% rename from cairo/util/cairo-script/cairo-script-stack.c rename to 3rd-party/cairo/util/cairo-script/cairo-script-stack.c diff --git a/cairo/util/cairo-script/csi-bind.c b/3rd-party/cairo/util/cairo-script/csi-bind.c similarity index 100% rename from cairo/util/cairo-script/csi-bind.c rename to 3rd-party/cairo/util/cairo-script/csi-bind.c diff --git a/cairo/util/cairo-script/csi-exec.c b/3rd-party/cairo/util/cairo-script/csi-exec.c similarity index 100% rename from cairo/util/cairo-script/csi-exec.c rename to 3rd-party/cairo/util/cairo-script/csi-exec.c diff --git a/cairo/util/cairo-script/csi-replay.c b/3rd-party/cairo/util/cairo-script/csi-replay.c similarity index 100% rename from cairo/util/cairo-script/csi-replay.c rename to 3rd-party/cairo/util/cairo-script/csi-replay.c diff --git a/cairo/util/cairo-script/csi-trace.c b/3rd-party/cairo/util/cairo-script/csi-trace.c similarity index 100% rename from cairo/util/cairo-script/csi-trace.c rename to 3rd-party/cairo/util/cairo-script/csi-trace.c diff --git a/cairo/util/cairo-script/examples/Makefile.am b/3rd-party/cairo/util/cairo-script/examples/Makefile.am similarity index 100% rename from cairo/util/cairo-script/examples/Makefile.am rename to 3rd-party/cairo/util/cairo-script/examples/Makefile.am diff --git a/cairo/util/cairo-script/examples/dragon.cs b/3rd-party/cairo/util/cairo-script/examples/dragon.cs similarity index 100% rename from cairo/util/cairo-script/examples/dragon.cs rename to 3rd-party/cairo/util/cairo-script/examples/dragon.cs diff --git a/cairo/util/cairo-script/examples/hilbert.cs b/3rd-party/cairo/util/cairo-script/examples/hilbert.cs similarity index 100% rename from cairo/util/cairo-script/examples/hilbert.cs rename to 3rd-party/cairo/util/cairo-script/examples/hilbert.cs diff --git a/cairo/util/cairo-script/examples/infinichess.cs b/3rd-party/cairo/util/cairo-script/examples/infinichess.cs similarity index 100% rename from cairo/util/cairo-script/examples/infinichess.cs rename to 3rd-party/cairo/util/cairo-script/examples/infinichess.cs diff --git a/cairo/util/cairo-script/examples/interference.cs b/3rd-party/cairo/util/cairo-script/examples/interference.cs similarity index 100% rename from cairo/util/cairo-script/examples/interference.cs rename to 3rd-party/cairo/util/cairo-script/examples/interference.cs diff --git a/cairo/util/cairo-script/examples/pythagoras-tree.cs b/3rd-party/cairo/util/cairo-script/examples/pythagoras-tree.cs similarity index 100% rename from cairo/util/cairo-script/examples/pythagoras-tree.cs rename to 3rd-party/cairo/util/cairo-script/examples/pythagoras-tree.cs diff --git a/cairo/util/cairo-script/examples/sierpinski.cs b/3rd-party/cairo/util/cairo-script/examples/sierpinski.cs similarity index 100% rename from cairo/util/cairo-script/examples/sierpinski.cs rename to 3rd-party/cairo/util/cairo-script/examples/sierpinski.cs diff --git a/cairo/util/cairo-script/examples/wedgeAnnulus_crop_ybRings.cs b/3rd-party/cairo/util/cairo-script/examples/wedgeAnnulus_crop_ybRings.cs similarity index 100% rename from cairo/util/cairo-script/examples/wedgeAnnulus_crop_ybRings.cs rename to 3rd-party/cairo/util/cairo-script/examples/wedgeAnnulus_crop_ybRings.cs diff --git a/cairo/util/cairo-script/examples/world-map.cs b/3rd-party/cairo/util/cairo-script/examples/world-map.cs similarity index 100% rename from cairo/util/cairo-script/examples/world-map.cs rename to 3rd-party/cairo/util/cairo-script/examples/world-map.cs diff --git a/cairo/util/cairo-script/examples/zrusin.cs b/3rd-party/cairo/util/cairo-script/examples/zrusin.cs similarity index 100% rename from cairo/util/cairo-script/examples/zrusin.cs rename to 3rd-party/cairo/util/cairo-script/examples/zrusin.cs diff --git a/cairo/util/cairo-sphinx/.gitignore b/3rd-party/cairo/util/cairo-sphinx/.gitignore similarity index 100% rename from cairo/util/cairo-sphinx/.gitignore rename to 3rd-party/cairo/util/cairo-sphinx/.gitignore diff --git a/cairo/util/cairo-sphinx/Makefile.am b/3rd-party/cairo/util/cairo-sphinx/Makefile.am similarity index 100% rename from cairo/util/cairo-sphinx/Makefile.am rename to 3rd-party/cairo/util/cairo-sphinx/Makefile.am diff --git a/cairo/util/cairo-sphinx/fdr.c b/3rd-party/cairo/util/cairo-sphinx/fdr.c similarity index 100% rename from cairo/util/cairo-sphinx/fdr.c rename to 3rd-party/cairo/util/cairo-sphinx/fdr.c diff --git a/cairo/util/cairo-sphinx/sphinx.c b/3rd-party/cairo/util/cairo-sphinx/sphinx.c similarity index 100% rename from cairo/util/cairo-sphinx/sphinx.c rename to 3rd-party/cairo/util/cairo-sphinx/sphinx.c diff --git a/cairo/util/cairo-trace/.gitignore b/3rd-party/cairo/util/cairo-trace/.gitignore similarity index 100% rename from cairo/util/cairo-trace/.gitignore rename to 3rd-party/cairo/util/cairo-trace/.gitignore diff --git a/cairo/util/cairo-trace/COPYING b/3rd-party/cairo/util/cairo-trace/COPYING similarity index 100% rename from cairo/util/cairo-trace/COPYING rename to 3rd-party/cairo/util/cairo-trace/COPYING diff --git a/cairo/util/cairo-trace/COPYING-GPL-3 b/3rd-party/cairo/util/cairo-trace/COPYING-GPL-3 similarity index 100% rename from cairo/util/cairo-trace/COPYING-GPL-3 rename to 3rd-party/cairo/util/cairo-trace/COPYING-GPL-3 diff --git a/cairo/util/cairo-trace/Makefile.am b/3rd-party/cairo/util/cairo-trace/Makefile.am similarity index 100% rename from cairo/util/cairo-trace/Makefile.am rename to 3rd-party/cairo/util/cairo-trace/Makefile.am diff --git a/cairo/util/cairo-trace/cairo-trace.in b/3rd-party/cairo/util/cairo-trace/cairo-trace.in similarity index 100% rename from cairo/util/cairo-trace/cairo-trace.in rename to 3rd-party/cairo/util/cairo-trace/cairo-trace.in diff --git a/cairo/util/cairo-trace/lookup-symbol.c b/3rd-party/cairo/util/cairo-trace/lookup-symbol.c similarity index 100% rename from cairo/util/cairo-trace/lookup-symbol.c rename to 3rd-party/cairo/util/cairo-trace/lookup-symbol.c diff --git a/cairo/util/cairo-trace/lookup-symbol.h b/3rd-party/cairo/util/cairo-trace/lookup-symbol.h similarity index 100% rename from cairo/util/cairo-trace/lookup-symbol.h rename to 3rd-party/cairo/util/cairo-trace/lookup-symbol.h diff --git a/cairo/util/cairo-trace/trace.c b/3rd-party/cairo/util/cairo-trace/trace.c similarity index 100% rename from cairo/util/cairo-trace/trace.c rename to 3rd-party/cairo/util/cairo-trace/trace.c diff --git a/cairo/util/cairo-view b/3rd-party/cairo/util/cairo-view similarity index 100% rename from cairo/util/cairo-view rename to 3rd-party/cairo/util/cairo-view diff --git a/cairo/util/cairo.modules b/3rd-party/cairo/util/cairo.modules similarity index 100% rename from cairo/util/cairo.modules rename to 3rd-party/cairo/util/cairo.modules diff --git a/cairo/util/font-view.c b/3rd-party/cairo/util/font-view.c similarity index 100% rename from cairo/util/font-view.c rename to 3rd-party/cairo/util/font-view.c diff --git a/cairo/util/malloc-stats.c b/3rd-party/cairo/util/malloc-stats.c similarity index 100% rename from cairo/util/malloc-stats.c rename to 3rd-party/cairo/util/malloc-stats.c diff --git a/cairo/util/show-contour.c b/3rd-party/cairo/util/show-contour.c similarity index 100% rename from cairo/util/show-contour.c rename to 3rd-party/cairo/util/show-contour.c diff --git a/cairo/util/show-edges.c b/3rd-party/cairo/util/show-edges.c similarity index 100% rename from cairo/util/show-edges.c rename to 3rd-party/cairo/util/show-edges.c diff --git a/cairo/util/show-events.c b/3rd-party/cairo/util/show-events.c similarity index 100% rename from cairo/util/show-events.c rename to 3rd-party/cairo/util/show-events.c diff --git a/cairo/util/show-polygon.c b/3rd-party/cairo/util/show-polygon.c similarity index 100% rename from cairo/util/show-polygon.c rename to 3rd-party/cairo/util/show-polygon.c diff --git a/cairo/util/show-traps.c b/3rd-party/cairo/util/show-traps.c similarity index 100% rename from cairo/util/show-traps.c rename to 3rd-party/cairo/util/show-traps.c diff --git a/cairo/util/trace-to-xml.c b/3rd-party/cairo/util/trace-to-xml.c similarity index 100% rename from cairo/util/trace-to-xml.c rename to 3rd-party/cairo/util/trace-to-xml.c diff --git a/cairo/util/waterfall b/3rd-party/cairo/util/waterfall similarity index 100% rename from cairo/util/waterfall rename to 3rd-party/cairo/util/waterfall diff --git a/cairo/util/xml-to-trace.c b/3rd-party/cairo/util/xml-to-trace.c similarity index 100% rename from cairo/util/xml-to-trace.c rename to 3rd-party/cairo/util/xml-to-trace.c diff --git a/cairo/util/xr2cairo b/3rd-party/cairo/util/xr2cairo similarity index 100% rename from cairo/util/xr2cairo rename to 3rd-party/cairo/util/xr2cairo diff --git a/libpng16/ANNOUNCE b/3rd-party/libpng/ANNOUNCE similarity index 100% rename from libpng16/ANNOUNCE rename to 3rd-party/libpng/ANNOUNCE diff --git a/libpng16/CHANGES b/3rd-party/libpng/CHANGES similarity index 100% rename from libpng16/CHANGES rename to 3rd-party/libpng/CHANGES diff --git a/libpng16/CMakeLists.txt b/3rd-party/libpng/CMakeLists.txt similarity index 100% rename from libpng16/CMakeLists.txt rename to 3rd-party/libpng/CMakeLists.txt diff --git a/libpng16/INSTALL b/3rd-party/libpng/INSTALL similarity index 100% rename from libpng16/INSTALL rename to 3rd-party/libpng/INSTALL diff --git a/libpng16/LICENSE b/3rd-party/libpng/LICENSE similarity index 100% rename from libpng16/LICENSE rename to 3rd-party/libpng/LICENSE diff --git a/libpng16/Makefile.am b/3rd-party/libpng/Makefile.am similarity index 100% rename from libpng16/Makefile.am rename to 3rd-party/libpng/Makefile.am diff --git a/libpng16/README b/3rd-party/libpng/README similarity index 100% rename from libpng16/README rename to 3rd-party/libpng/README diff --git a/libpng16/TODO b/3rd-party/libpng/TODO similarity index 100% rename from libpng16/TODO rename to 3rd-party/libpng/TODO diff --git a/libpng16/arm/arm_init.c b/3rd-party/libpng/arm/arm_init.c similarity index 100% rename from libpng16/arm/arm_init.c rename to 3rd-party/libpng/arm/arm_init.c diff --git a/libpng16/arm/filter_neon.S b/3rd-party/libpng/arm/filter_neon.S similarity index 100% rename from libpng16/arm/filter_neon.S rename to 3rd-party/libpng/arm/filter_neon.S diff --git a/libpng16/arm/filter_neon_intrinsics.c b/3rd-party/libpng/arm/filter_neon_intrinsics.c similarity index 100% rename from libpng16/arm/filter_neon_intrinsics.c rename to 3rd-party/libpng/arm/filter_neon_intrinsics.c diff --git a/libpng16/autogen.sh b/3rd-party/libpng/autogen.sh similarity index 100% rename from libpng16/autogen.sh rename to 3rd-party/libpng/autogen.sh diff --git a/libpng16/configure.ac b/3rd-party/libpng/configure.ac similarity index 100% rename from libpng16/configure.ac rename to 3rd-party/libpng/configure.ac diff --git a/libpng16/contrib/README.txt b/3rd-party/libpng/contrib/README.txt similarity index 100% rename from libpng16/contrib/README.txt rename to 3rd-party/libpng/contrib/README.txt diff --git a/libpng16/contrib/conftest/README b/3rd-party/libpng/contrib/conftest/README similarity index 100% rename from libpng16/contrib/conftest/README rename to 3rd-party/libpng/contrib/conftest/README diff --git a/libpng16/contrib/conftest/read.dfa b/3rd-party/libpng/contrib/conftest/read.dfa similarity index 100% rename from libpng16/contrib/conftest/read.dfa rename to 3rd-party/libpng/contrib/conftest/read.dfa diff --git a/libpng16/contrib/conftest/s_read.dfa b/3rd-party/libpng/contrib/conftest/s_read.dfa similarity index 100% rename from libpng16/contrib/conftest/s_read.dfa rename to 3rd-party/libpng/contrib/conftest/s_read.dfa diff --git a/libpng16/contrib/conftest/s_write.dfa b/3rd-party/libpng/contrib/conftest/s_write.dfa similarity index 100% rename from libpng16/contrib/conftest/s_write.dfa rename to 3rd-party/libpng/contrib/conftest/s_write.dfa diff --git a/libpng16/contrib/conftest/simple.dfa b/3rd-party/libpng/contrib/conftest/simple.dfa similarity index 100% rename from libpng16/contrib/conftest/simple.dfa rename to 3rd-party/libpng/contrib/conftest/simple.dfa diff --git a/libpng16/contrib/conftest/write.dfa b/3rd-party/libpng/contrib/conftest/write.dfa similarity index 100% rename from libpng16/contrib/conftest/write.dfa rename to 3rd-party/libpng/contrib/conftest/write.dfa diff --git a/libpng16/contrib/examples/README.txt b/3rd-party/libpng/contrib/examples/README.txt similarity index 100% rename from libpng16/contrib/examples/README.txt rename to 3rd-party/libpng/contrib/examples/README.txt diff --git a/libpng16/contrib/examples/iccfrompng.c b/3rd-party/libpng/contrib/examples/iccfrompng.c similarity index 100% rename from libpng16/contrib/examples/iccfrompng.c rename to 3rd-party/libpng/contrib/examples/iccfrompng.c diff --git a/libpng16/contrib/examples/pngpixel.c b/3rd-party/libpng/contrib/examples/pngpixel.c similarity index 100% rename from libpng16/contrib/examples/pngpixel.c rename to 3rd-party/libpng/contrib/examples/pngpixel.c diff --git a/libpng16/contrib/examples/pngtopng.c b/3rd-party/libpng/contrib/examples/pngtopng.c similarity index 100% rename from libpng16/contrib/examples/pngtopng.c rename to 3rd-party/libpng/contrib/examples/pngtopng.c diff --git a/libpng16/contrib/gregbook/COPYING b/3rd-party/libpng/contrib/gregbook/COPYING similarity index 100% rename from libpng16/contrib/gregbook/COPYING rename to 3rd-party/libpng/contrib/gregbook/COPYING diff --git a/libpng16/contrib/gregbook/LICENSE b/3rd-party/libpng/contrib/gregbook/LICENSE similarity index 100% rename from libpng16/contrib/gregbook/LICENSE rename to 3rd-party/libpng/contrib/gregbook/LICENSE diff --git a/libpng16/contrib/gregbook/Makefile.mingw32 b/3rd-party/libpng/contrib/gregbook/Makefile.mingw32 similarity index 100% rename from libpng16/contrib/gregbook/Makefile.mingw32 rename to 3rd-party/libpng/contrib/gregbook/Makefile.mingw32 diff --git a/libpng16/contrib/gregbook/Makefile.sgi b/3rd-party/libpng/contrib/gregbook/Makefile.sgi similarity index 100% rename from libpng16/contrib/gregbook/Makefile.sgi rename to 3rd-party/libpng/contrib/gregbook/Makefile.sgi diff --git a/libpng16/contrib/gregbook/Makefile.unx b/3rd-party/libpng/contrib/gregbook/Makefile.unx similarity index 100% rename from libpng16/contrib/gregbook/Makefile.unx rename to 3rd-party/libpng/contrib/gregbook/Makefile.unx diff --git a/libpng16/contrib/gregbook/Makefile.w32 b/3rd-party/libpng/contrib/gregbook/Makefile.w32 similarity index 100% rename from libpng16/contrib/gregbook/Makefile.w32 rename to 3rd-party/libpng/contrib/gregbook/Makefile.w32 diff --git a/libpng16/contrib/gregbook/README b/3rd-party/libpng/contrib/gregbook/README similarity index 100% rename from libpng16/contrib/gregbook/README rename to 3rd-party/libpng/contrib/gregbook/README diff --git a/libpng16/contrib/gregbook/makevms.com b/3rd-party/libpng/contrib/gregbook/makevms.com similarity index 100% rename from libpng16/contrib/gregbook/makevms.com rename to 3rd-party/libpng/contrib/gregbook/makevms.com diff --git a/libpng16/contrib/gregbook/readpng.c b/3rd-party/libpng/contrib/gregbook/readpng.c similarity index 100% rename from libpng16/contrib/gregbook/readpng.c rename to 3rd-party/libpng/contrib/gregbook/readpng.c diff --git a/libpng16/contrib/gregbook/readpng.h b/3rd-party/libpng/contrib/gregbook/readpng.h similarity index 100% rename from libpng16/contrib/gregbook/readpng.h rename to 3rd-party/libpng/contrib/gregbook/readpng.h diff --git a/libpng16/contrib/gregbook/readpng2.c b/3rd-party/libpng/contrib/gregbook/readpng2.c similarity index 100% rename from libpng16/contrib/gregbook/readpng2.c rename to 3rd-party/libpng/contrib/gregbook/readpng2.c diff --git a/libpng16/contrib/gregbook/readpng2.h b/3rd-party/libpng/contrib/gregbook/readpng2.h similarity index 100% rename from libpng16/contrib/gregbook/readpng2.h rename to 3rd-party/libpng/contrib/gregbook/readpng2.h diff --git a/libpng16/contrib/gregbook/readppm.c b/3rd-party/libpng/contrib/gregbook/readppm.c similarity index 100% rename from libpng16/contrib/gregbook/readppm.c rename to 3rd-party/libpng/contrib/gregbook/readppm.c diff --git a/libpng16/contrib/gregbook/rpng-win.c b/3rd-party/libpng/contrib/gregbook/rpng-win.c similarity index 100% rename from libpng16/contrib/gregbook/rpng-win.c rename to 3rd-party/libpng/contrib/gregbook/rpng-win.c diff --git a/libpng16/contrib/gregbook/rpng-x.c b/3rd-party/libpng/contrib/gregbook/rpng-x.c similarity index 100% rename from libpng16/contrib/gregbook/rpng-x.c rename to 3rd-party/libpng/contrib/gregbook/rpng-x.c diff --git a/libpng16/contrib/gregbook/rpng2-win.c b/3rd-party/libpng/contrib/gregbook/rpng2-win.c similarity index 100% rename from libpng16/contrib/gregbook/rpng2-win.c rename to 3rd-party/libpng/contrib/gregbook/rpng2-win.c diff --git a/libpng16/contrib/gregbook/rpng2-x.c b/3rd-party/libpng/contrib/gregbook/rpng2-x.c similarity index 100% rename from libpng16/contrib/gregbook/rpng2-x.c rename to 3rd-party/libpng/contrib/gregbook/rpng2-x.c diff --git a/libpng16/contrib/gregbook/toucan.png b/3rd-party/libpng/contrib/gregbook/toucan.png similarity index 100% rename from libpng16/contrib/gregbook/toucan.png rename to 3rd-party/libpng/contrib/gregbook/toucan.png diff --git a/libpng16/contrib/gregbook/wpng.c b/3rd-party/libpng/contrib/gregbook/wpng.c similarity index 100% rename from libpng16/contrib/gregbook/wpng.c rename to 3rd-party/libpng/contrib/gregbook/wpng.c diff --git a/libpng16/contrib/gregbook/writepng.c b/3rd-party/libpng/contrib/gregbook/writepng.c similarity index 100% rename from libpng16/contrib/gregbook/writepng.c rename to 3rd-party/libpng/contrib/gregbook/writepng.c diff --git a/libpng16/contrib/gregbook/writepng.h b/3rd-party/libpng/contrib/gregbook/writepng.h similarity index 100% rename from libpng16/contrib/gregbook/writepng.h rename to 3rd-party/libpng/contrib/gregbook/writepng.h diff --git a/libpng16/contrib/libtests/fakepng.c b/3rd-party/libpng/contrib/libtests/fakepng.c similarity index 100% rename from libpng16/contrib/libtests/fakepng.c rename to 3rd-party/libpng/contrib/libtests/fakepng.c diff --git a/libpng16/contrib/libtests/gentests.sh b/3rd-party/libpng/contrib/libtests/gentests.sh similarity index 100% rename from libpng16/contrib/libtests/gentests.sh rename to 3rd-party/libpng/contrib/libtests/gentests.sh diff --git a/libpng16/contrib/libtests/makepng.c b/3rd-party/libpng/contrib/libtests/makepng.c similarity index 100% rename from libpng16/contrib/libtests/makepng.c rename to 3rd-party/libpng/contrib/libtests/makepng.c diff --git a/libpng16/contrib/libtests/pngstest.c b/3rd-party/libpng/contrib/libtests/pngstest.c similarity index 100% rename from libpng16/contrib/libtests/pngstest.c rename to 3rd-party/libpng/contrib/libtests/pngstest.c diff --git a/libpng16/contrib/libtests/pngunknown.c b/3rd-party/libpng/contrib/libtests/pngunknown.c similarity index 100% rename from libpng16/contrib/libtests/pngunknown.c rename to 3rd-party/libpng/contrib/libtests/pngunknown.c diff --git a/libpng16/contrib/libtests/pngvalid.c b/3rd-party/libpng/contrib/libtests/pngvalid.c similarity index 100% rename from libpng16/contrib/libtests/pngvalid.c rename to 3rd-party/libpng/contrib/libtests/pngvalid.c diff --git a/libpng16/contrib/libtests/readpng.c b/3rd-party/libpng/contrib/libtests/readpng.c similarity index 100% rename from libpng16/contrib/libtests/readpng.c rename to 3rd-party/libpng/contrib/libtests/readpng.c diff --git a/libpng16/contrib/libtests/tarith.c b/3rd-party/libpng/contrib/libtests/tarith.c similarity index 100% rename from libpng16/contrib/libtests/tarith.c rename to 3rd-party/libpng/contrib/libtests/tarith.c diff --git a/libpng16/contrib/libtests/timepng.c b/3rd-party/libpng/contrib/libtests/timepng.c similarity index 100% rename from libpng16/contrib/libtests/timepng.c rename to 3rd-party/libpng/contrib/libtests/timepng.c diff --git a/libpng16/contrib/pngminim/README b/3rd-party/libpng/contrib/pngminim/README similarity index 100% rename from libpng16/contrib/pngminim/README rename to 3rd-party/libpng/contrib/pngminim/README diff --git a/libpng16/contrib/pngminim/decoder/README b/3rd-party/libpng/contrib/pngminim/decoder/README similarity index 100% rename from libpng16/contrib/pngminim/decoder/README rename to 3rd-party/libpng/contrib/pngminim/decoder/README diff --git a/libpng16/contrib/pngminim/decoder/makefile b/3rd-party/libpng/contrib/pngminim/decoder/makefile similarity index 100% rename from libpng16/contrib/pngminim/decoder/makefile rename to 3rd-party/libpng/contrib/pngminim/decoder/makefile diff --git a/libpng16/contrib/pngminim/decoder/pngusr.dfa b/3rd-party/libpng/contrib/pngminim/decoder/pngusr.dfa similarity index 100% rename from libpng16/contrib/pngminim/decoder/pngusr.dfa rename to 3rd-party/libpng/contrib/pngminim/decoder/pngusr.dfa diff --git a/libpng16/contrib/pngminim/decoder/pngusr.h b/3rd-party/libpng/contrib/pngminim/decoder/pngusr.h similarity index 100% rename from libpng16/contrib/pngminim/decoder/pngusr.h rename to 3rd-party/libpng/contrib/pngminim/decoder/pngusr.h diff --git a/libpng16/contrib/pngminim/encoder/README b/3rd-party/libpng/contrib/pngminim/encoder/README similarity index 100% rename from libpng16/contrib/pngminim/encoder/README rename to 3rd-party/libpng/contrib/pngminim/encoder/README diff --git a/libpng16/contrib/pngminim/encoder/makefile b/3rd-party/libpng/contrib/pngminim/encoder/makefile similarity index 100% rename from libpng16/contrib/pngminim/encoder/makefile rename to 3rd-party/libpng/contrib/pngminim/encoder/makefile diff --git a/libpng16/contrib/pngminim/encoder/pngusr.dfa b/3rd-party/libpng/contrib/pngminim/encoder/pngusr.dfa similarity index 100% rename from libpng16/contrib/pngminim/encoder/pngusr.dfa rename to 3rd-party/libpng/contrib/pngminim/encoder/pngusr.dfa diff --git a/libpng16/contrib/pngminim/encoder/pngusr.h b/3rd-party/libpng/contrib/pngminim/encoder/pngusr.h similarity index 100% rename from libpng16/contrib/pngminim/encoder/pngusr.h rename to 3rd-party/libpng/contrib/pngminim/encoder/pngusr.h diff --git a/libpng16/contrib/pngminim/preader/README b/3rd-party/libpng/contrib/pngminim/preader/README similarity index 100% rename from libpng16/contrib/pngminim/preader/README rename to 3rd-party/libpng/contrib/pngminim/preader/README diff --git a/libpng16/contrib/pngminim/preader/makefile b/3rd-party/libpng/contrib/pngminim/preader/makefile similarity index 100% rename from libpng16/contrib/pngminim/preader/makefile rename to 3rd-party/libpng/contrib/pngminim/preader/makefile diff --git a/libpng16/contrib/pngminim/preader/pngusr.dfa b/3rd-party/libpng/contrib/pngminim/preader/pngusr.dfa similarity index 100% rename from libpng16/contrib/pngminim/preader/pngusr.dfa rename to 3rd-party/libpng/contrib/pngminim/preader/pngusr.dfa diff --git a/libpng16/contrib/pngminim/preader/pngusr.h b/3rd-party/libpng/contrib/pngminim/preader/pngusr.h similarity index 100% rename from libpng16/contrib/pngminim/preader/pngusr.h rename to 3rd-party/libpng/contrib/pngminim/preader/pngusr.h diff --git a/libpng16/contrib/pngminus/README b/3rd-party/libpng/contrib/pngminus/README similarity index 100% rename from libpng16/contrib/pngminus/README rename to 3rd-party/libpng/contrib/pngminus/README diff --git a/libpng16/contrib/pngminus/makefile.std b/3rd-party/libpng/contrib/pngminus/makefile.std similarity index 100% rename from libpng16/contrib/pngminus/makefile.std rename to 3rd-party/libpng/contrib/pngminus/makefile.std diff --git a/libpng16/contrib/pngminus/makefile.tc3 b/3rd-party/libpng/contrib/pngminus/makefile.tc3 similarity index 100% rename from libpng16/contrib/pngminus/makefile.tc3 rename to 3rd-party/libpng/contrib/pngminus/makefile.tc3 diff --git a/libpng16/contrib/pngminus/makevms.com b/3rd-party/libpng/contrib/pngminus/makevms.com similarity index 100% rename from libpng16/contrib/pngminus/makevms.com rename to 3rd-party/libpng/contrib/pngminus/makevms.com diff --git a/libpng16/contrib/pngminus/png2pnm.bat b/3rd-party/libpng/contrib/pngminus/png2pnm.bat similarity index 100% rename from libpng16/contrib/pngminus/png2pnm.bat rename to 3rd-party/libpng/contrib/pngminus/png2pnm.bat diff --git a/libpng16/contrib/pngminus/png2pnm.c b/3rd-party/libpng/contrib/pngminus/png2pnm.c similarity index 100% rename from libpng16/contrib/pngminus/png2pnm.c rename to 3rd-party/libpng/contrib/pngminus/png2pnm.c diff --git a/libpng16/contrib/pngminus/png2pnm.sh b/3rd-party/libpng/contrib/pngminus/png2pnm.sh similarity index 100% rename from libpng16/contrib/pngminus/png2pnm.sh rename to 3rd-party/libpng/contrib/pngminus/png2pnm.sh diff --git a/libpng16/contrib/pngminus/pngminus.bat b/3rd-party/libpng/contrib/pngminus/pngminus.bat similarity index 100% rename from libpng16/contrib/pngminus/pngminus.bat rename to 3rd-party/libpng/contrib/pngminus/pngminus.bat diff --git a/libpng16/contrib/pngminus/pngminus.sh b/3rd-party/libpng/contrib/pngminus/pngminus.sh similarity index 100% rename from libpng16/contrib/pngminus/pngminus.sh rename to 3rd-party/libpng/contrib/pngminus/pngminus.sh diff --git a/libpng16/contrib/pngminus/pnm2png.bat b/3rd-party/libpng/contrib/pngminus/pnm2png.bat similarity index 100% rename from libpng16/contrib/pngminus/pnm2png.bat rename to 3rd-party/libpng/contrib/pngminus/pnm2png.bat diff --git a/libpng16/contrib/pngminus/pnm2png.c b/3rd-party/libpng/contrib/pngminus/pnm2png.c similarity index 100% rename from libpng16/contrib/pngminus/pnm2png.c rename to 3rd-party/libpng/contrib/pngminus/pnm2png.c diff --git a/libpng16/contrib/pngminus/pnm2png.sh b/3rd-party/libpng/contrib/pngminus/pnm2png.sh similarity index 100% rename from libpng16/contrib/pngminus/pnm2png.sh rename to 3rd-party/libpng/contrib/pngminus/pnm2png.sh diff --git a/libpng16/contrib/pngsuite/README b/3rd-party/libpng/contrib/pngsuite/README similarity index 100% rename from libpng16/contrib/pngsuite/README rename to 3rd-party/libpng/contrib/pngsuite/README diff --git a/libpng16/contrib/pngsuite/basn0g01.png b/3rd-party/libpng/contrib/pngsuite/basn0g01.png similarity index 100% rename from libpng16/contrib/pngsuite/basn0g01.png rename to 3rd-party/libpng/contrib/pngsuite/basn0g01.png diff --git a/libpng16/contrib/pngsuite/basn0g02.png b/3rd-party/libpng/contrib/pngsuite/basn0g02.png similarity index 100% rename from libpng16/contrib/pngsuite/basn0g02.png rename to 3rd-party/libpng/contrib/pngsuite/basn0g02.png diff --git a/libpng16/contrib/pngsuite/basn0g04.png b/3rd-party/libpng/contrib/pngsuite/basn0g04.png similarity index 100% rename from libpng16/contrib/pngsuite/basn0g04.png rename to 3rd-party/libpng/contrib/pngsuite/basn0g04.png diff --git a/libpng16/contrib/pngsuite/basn0g08.png b/3rd-party/libpng/contrib/pngsuite/basn0g08.png similarity index 100% rename from libpng16/contrib/pngsuite/basn0g08.png rename to 3rd-party/libpng/contrib/pngsuite/basn0g08.png diff --git a/libpng16/contrib/pngsuite/basn0g16.png b/3rd-party/libpng/contrib/pngsuite/basn0g16.png similarity index 100% rename from libpng16/contrib/pngsuite/basn0g16.png rename to 3rd-party/libpng/contrib/pngsuite/basn0g16.png diff --git a/libpng16/contrib/pngsuite/basn2c08.png b/3rd-party/libpng/contrib/pngsuite/basn2c08.png similarity index 100% rename from libpng16/contrib/pngsuite/basn2c08.png rename to 3rd-party/libpng/contrib/pngsuite/basn2c08.png diff --git a/libpng16/contrib/pngsuite/basn2c16.png b/3rd-party/libpng/contrib/pngsuite/basn2c16.png similarity index 100% rename from libpng16/contrib/pngsuite/basn2c16.png rename to 3rd-party/libpng/contrib/pngsuite/basn2c16.png diff --git a/libpng16/contrib/pngsuite/basn3p01.png b/3rd-party/libpng/contrib/pngsuite/basn3p01.png similarity index 100% rename from libpng16/contrib/pngsuite/basn3p01.png rename to 3rd-party/libpng/contrib/pngsuite/basn3p01.png diff --git a/libpng16/contrib/pngsuite/basn3p02.png b/3rd-party/libpng/contrib/pngsuite/basn3p02.png similarity index 100% rename from libpng16/contrib/pngsuite/basn3p02.png rename to 3rd-party/libpng/contrib/pngsuite/basn3p02.png diff --git a/libpng16/contrib/pngsuite/basn3p04.png b/3rd-party/libpng/contrib/pngsuite/basn3p04.png similarity index 100% rename from libpng16/contrib/pngsuite/basn3p04.png rename to 3rd-party/libpng/contrib/pngsuite/basn3p04.png diff --git a/libpng16/contrib/pngsuite/basn3p08.png b/3rd-party/libpng/contrib/pngsuite/basn3p08.png similarity index 100% rename from libpng16/contrib/pngsuite/basn3p08.png rename to 3rd-party/libpng/contrib/pngsuite/basn3p08.png diff --git a/libpng16/contrib/pngsuite/basn4a08.png b/3rd-party/libpng/contrib/pngsuite/basn4a08.png similarity index 100% rename from libpng16/contrib/pngsuite/basn4a08.png rename to 3rd-party/libpng/contrib/pngsuite/basn4a08.png diff --git a/libpng16/contrib/pngsuite/basn4a16.png b/3rd-party/libpng/contrib/pngsuite/basn4a16.png similarity index 100% rename from libpng16/contrib/pngsuite/basn4a16.png rename to 3rd-party/libpng/contrib/pngsuite/basn4a16.png diff --git a/libpng16/contrib/pngsuite/basn6a08.png b/3rd-party/libpng/contrib/pngsuite/basn6a08.png similarity index 100% rename from libpng16/contrib/pngsuite/basn6a08.png rename to 3rd-party/libpng/contrib/pngsuite/basn6a08.png diff --git a/libpng16/contrib/pngsuite/basn6a16.png b/3rd-party/libpng/contrib/pngsuite/basn6a16.png similarity index 100% rename from libpng16/contrib/pngsuite/basn6a16.png rename to 3rd-party/libpng/contrib/pngsuite/basn6a16.png diff --git a/libpng16/contrib/pngsuite/ftbbn0g01.png b/3rd-party/libpng/contrib/pngsuite/ftbbn0g01.png similarity index 100% rename from libpng16/contrib/pngsuite/ftbbn0g01.png rename to 3rd-party/libpng/contrib/pngsuite/ftbbn0g01.png diff --git a/libpng16/contrib/pngsuite/ftbbn0g02.png b/3rd-party/libpng/contrib/pngsuite/ftbbn0g02.png similarity index 100% rename from libpng16/contrib/pngsuite/ftbbn0g02.png rename to 3rd-party/libpng/contrib/pngsuite/ftbbn0g02.png diff --git a/libpng16/contrib/pngsuite/ftbbn0g04.png b/3rd-party/libpng/contrib/pngsuite/ftbbn0g04.png similarity index 100% rename from libpng16/contrib/pngsuite/ftbbn0g04.png rename to 3rd-party/libpng/contrib/pngsuite/ftbbn0g04.png diff --git a/libpng16/contrib/pngsuite/ftbbn2c16.png b/3rd-party/libpng/contrib/pngsuite/ftbbn2c16.png similarity index 100% rename from libpng16/contrib/pngsuite/ftbbn2c16.png rename to 3rd-party/libpng/contrib/pngsuite/ftbbn2c16.png diff --git a/libpng16/contrib/pngsuite/ftbbn3p08.png b/3rd-party/libpng/contrib/pngsuite/ftbbn3p08.png similarity index 100% rename from libpng16/contrib/pngsuite/ftbbn3p08.png rename to 3rd-party/libpng/contrib/pngsuite/ftbbn3p08.png diff --git a/libpng16/contrib/pngsuite/ftbgn2c16.png b/3rd-party/libpng/contrib/pngsuite/ftbgn2c16.png similarity index 100% rename from libpng16/contrib/pngsuite/ftbgn2c16.png rename to 3rd-party/libpng/contrib/pngsuite/ftbgn2c16.png diff --git a/libpng16/contrib/pngsuite/ftbgn3p08.png b/3rd-party/libpng/contrib/pngsuite/ftbgn3p08.png similarity index 100% rename from libpng16/contrib/pngsuite/ftbgn3p08.png rename to 3rd-party/libpng/contrib/pngsuite/ftbgn3p08.png diff --git a/libpng16/contrib/pngsuite/ftbrn2c08.png b/3rd-party/libpng/contrib/pngsuite/ftbrn2c08.png similarity index 100% rename from libpng16/contrib/pngsuite/ftbrn2c08.png rename to 3rd-party/libpng/contrib/pngsuite/ftbrn2c08.png diff --git a/libpng16/contrib/pngsuite/ftbwn0g16.png b/3rd-party/libpng/contrib/pngsuite/ftbwn0g16.png similarity index 100% rename from libpng16/contrib/pngsuite/ftbwn0g16.png rename to 3rd-party/libpng/contrib/pngsuite/ftbwn0g16.png diff --git a/libpng16/contrib/pngsuite/ftbwn3p08.png b/3rd-party/libpng/contrib/pngsuite/ftbwn3p08.png similarity index 100% rename from libpng16/contrib/pngsuite/ftbwn3p08.png rename to 3rd-party/libpng/contrib/pngsuite/ftbwn3p08.png diff --git a/libpng16/contrib/pngsuite/ftbyn3p08.png b/3rd-party/libpng/contrib/pngsuite/ftbyn3p08.png similarity index 100% rename from libpng16/contrib/pngsuite/ftbyn3p08.png rename to 3rd-party/libpng/contrib/pngsuite/ftbyn3p08.png diff --git a/libpng16/contrib/pngsuite/ftp0n0g08.png b/3rd-party/libpng/contrib/pngsuite/ftp0n0g08.png similarity index 100% rename from libpng16/contrib/pngsuite/ftp0n0g08.png rename to 3rd-party/libpng/contrib/pngsuite/ftp0n0g08.png diff --git a/libpng16/contrib/pngsuite/ftp0n2c08.png b/3rd-party/libpng/contrib/pngsuite/ftp0n2c08.png similarity index 100% rename from libpng16/contrib/pngsuite/ftp0n2c08.png rename to 3rd-party/libpng/contrib/pngsuite/ftp0n2c08.png diff --git a/libpng16/contrib/pngsuite/ftp0n3p08.png b/3rd-party/libpng/contrib/pngsuite/ftp0n3p08.png similarity index 100% rename from libpng16/contrib/pngsuite/ftp0n3p08.png rename to 3rd-party/libpng/contrib/pngsuite/ftp0n3p08.png diff --git a/libpng16/contrib/pngsuite/ftp1n3p08.png b/3rd-party/libpng/contrib/pngsuite/ftp1n3p08.png similarity index 100% rename from libpng16/contrib/pngsuite/ftp1n3p08.png rename to 3rd-party/libpng/contrib/pngsuite/ftp1n3p08.png diff --git a/libpng16/contrib/tools/README.txt b/3rd-party/libpng/contrib/tools/README.txt similarity index 100% rename from libpng16/contrib/tools/README.txt rename to 3rd-party/libpng/contrib/tools/README.txt diff --git a/libpng16/contrib/tools/checksum-icc.c b/3rd-party/libpng/contrib/tools/checksum-icc.c similarity index 100% rename from libpng16/contrib/tools/checksum-icc.c rename to 3rd-party/libpng/contrib/tools/checksum-icc.c diff --git a/libpng16/contrib/tools/chkfmt b/3rd-party/libpng/contrib/tools/chkfmt similarity index 100% rename from libpng16/contrib/tools/chkfmt rename to 3rd-party/libpng/contrib/tools/chkfmt diff --git a/libpng16/contrib/tools/cvtcolor.c b/3rd-party/libpng/contrib/tools/cvtcolor.c similarity index 100% rename from libpng16/contrib/tools/cvtcolor.c rename to 3rd-party/libpng/contrib/tools/cvtcolor.c diff --git a/libpng16/contrib/tools/intgamma.sh b/3rd-party/libpng/contrib/tools/intgamma.sh similarity index 100% rename from libpng16/contrib/tools/intgamma.sh rename to 3rd-party/libpng/contrib/tools/intgamma.sh diff --git a/libpng16/contrib/tools/makesRGB.c b/3rd-party/libpng/contrib/tools/makesRGB.c similarity index 100% rename from libpng16/contrib/tools/makesRGB.c rename to 3rd-party/libpng/contrib/tools/makesRGB.c diff --git a/libpng16/contrib/tools/png-fix-itxt.c b/3rd-party/libpng/contrib/tools/png-fix-itxt.c similarity index 100% rename from libpng16/contrib/tools/png-fix-itxt.c rename to 3rd-party/libpng/contrib/tools/png-fix-itxt.c diff --git a/libpng16/contrib/tools/pngfix.c b/3rd-party/libpng/contrib/tools/pngfix.c similarity index 100% rename from libpng16/contrib/tools/pngfix.c rename to 3rd-party/libpng/contrib/tools/pngfix.c diff --git a/libpng16/contrib/tools/sRGB.h b/3rd-party/libpng/contrib/tools/sRGB.h similarity index 100% rename from libpng16/contrib/tools/sRGB.h rename to 3rd-party/libpng/contrib/tools/sRGB.h diff --git a/libpng16/contrib/visupng/PngFile.c b/3rd-party/libpng/contrib/visupng/PngFile.c similarity index 100% rename from libpng16/contrib/visupng/PngFile.c rename to 3rd-party/libpng/contrib/visupng/PngFile.c diff --git a/libpng16/contrib/visupng/PngFile.h b/3rd-party/libpng/contrib/visupng/PngFile.h similarity index 100% rename from libpng16/contrib/visupng/PngFile.h rename to 3rd-party/libpng/contrib/visupng/PngFile.h diff --git a/libpng16/contrib/visupng/README.txt b/3rd-party/libpng/contrib/visupng/README.txt similarity index 100% rename from libpng16/contrib/visupng/README.txt rename to 3rd-party/libpng/contrib/visupng/README.txt diff --git a/libpng16/contrib/visupng/VisualPng.c b/3rd-party/libpng/contrib/visupng/VisualPng.c similarity index 100% rename from libpng16/contrib/visupng/VisualPng.c rename to 3rd-party/libpng/contrib/visupng/VisualPng.c diff --git a/libpng16/contrib/visupng/VisualPng.dsp b/3rd-party/libpng/contrib/visupng/VisualPng.dsp similarity index 100% rename from libpng16/contrib/visupng/VisualPng.dsp rename to 3rd-party/libpng/contrib/visupng/VisualPng.dsp diff --git a/libpng16/contrib/visupng/VisualPng.dsw b/3rd-party/libpng/contrib/visupng/VisualPng.dsw similarity index 100% rename from libpng16/contrib/visupng/VisualPng.dsw rename to 3rd-party/libpng/contrib/visupng/VisualPng.dsw diff --git a/libpng16/contrib/visupng/VisualPng.ico b/3rd-party/libpng/contrib/visupng/VisualPng.ico similarity index 100% rename from libpng16/contrib/visupng/VisualPng.ico rename to 3rd-party/libpng/contrib/visupng/VisualPng.ico diff --git a/libpng16/contrib/visupng/VisualPng.png b/3rd-party/libpng/contrib/visupng/VisualPng.png similarity index 100% rename from libpng16/contrib/visupng/VisualPng.png rename to 3rd-party/libpng/contrib/visupng/VisualPng.png diff --git a/libpng16/contrib/visupng/VisualPng.rc b/3rd-party/libpng/contrib/visupng/VisualPng.rc similarity index 100% rename from libpng16/contrib/visupng/VisualPng.rc rename to 3rd-party/libpng/contrib/visupng/VisualPng.rc diff --git a/libpng16/contrib/visupng/cexcept.h b/3rd-party/libpng/contrib/visupng/cexcept.h similarity index 100% rename from libpng16/contrib/visupng/cexcept.h rename to 3rd-party/libpng/contrib/visupng/cexcept.h diff --git a/libpng16/contrib/visupng/resource.h b/3rd-party/libpng/contrib/visupng/resource.h similarity index 100% rename from libpng16/contrib/visupng/resource.h rename to 3rd-party/libpng/contrib/visupng/resource.h diff --git a/libpng16/example.c b/3rd-party/libpng/example.c similarity index 100% rename from libpng16/example.c rename to 3rd-party/libpng/example.c diff --git a/libpng16/libpng-config.in b/3rd-party/libpng/libpng-config.in similarity index 100% rename from libpng16/libpng-config.in rename to 3rd-party/libpng/libpng-config.in diff --git a/libpng16/libpng-manual.txt b/3rd-party/libpng/libpng-manual.txt similarity index 100% rename from libpng16/libpng-manual.txt rename to 3rd-party/libpng/libpng-manual.txt diff --git a/libpng16/libpng.3 b/3rd-party/libpng/libpng.3 similarity index 100% rename from libpng16/libpng.3 rename to 3rd-party/libpng/libpng.3 diff --git a/libpng16/libpng.pc.in b/3rd-party/libpng/libpng.pc.in similarity index 100% rename from libpng16/libpng.pc.in rename to 3rd-party/libpng/libpng.pc.in diff --git a/libpng16/libpngpf.3 b/3rd-party/libpng/libpngpf.3 similarity index 100% rename from libpng16/libpngpf.3 rename to 3rd-party/libpng/libpngpf.3 diff --git a/libpng16/png.5 b/3rd-party/libpng/png.5 similarity index 100% rename from libpng16/png.5 rename to 3rd-party/libpng/png.5 diff --git a/libpng16/png.c b/3rd-party/libpng/png.c similarity index 100% rename from libpng16/png.c rename to 3rd-party/libpng/png.c diff --git a/libpng16/png.h b/3rd-party/libpng/png.h similarity index 100% rename from libpng16/png.h rename to 3rd-party/libpng/png.h diff --git a/libpng16/pngbar.jpg b/3rd-party/libpng/pngbar.jpg similarity index 100% rename from libpng16/pngbar.jpg rename to 3rd-party/libpng/pngbar.jpg diff --git a/libpng16/pngbar.png b/3rd-party/libpng/pngbar.png similarity index 100% rename from libpng16/pngbar.png rename to 3rd-party/libpng/pngbar.png diff --git a/libpng16/pngconf.h b/3rd-party/libpng/pngconf.h similarity index 100% rename from libpng16/pngconf.h rename to 3rd-party/libpng/pngconf.h diff --git a/libpng16/pngdebug.h b/3rd-party/libpng/pngdebug.h similarity index 100% rename from libpng16/pngdebug.h rename to 3rd-party/libpng/pngdebug.h diff --git a/libpng16/pngerror.c b/3rd-party/libpng/pngerror.c similarity index 100% rename from libpng16/pngerror.c rename to 3rd-party/libpng/pngerror.c diff --git a/libpng16/pngget.c b/3rd-party/libpng/pngget.c similarity index 100% rename from libpng16/pngget.c rename to 3rd-party/libpng/pngget.c diff --git a/libpng16/pnginfo.h b/3rd-party/libpng/pnginfo.h similarity index 100% rename from libpng16/pnginfo.h rename to 3rd-party/libpng/pnginfo.h diff --git a/libpng16/pnglibconf.h b/3rd-party/libpng/pnglibconf.h similarity index 100% rename from libpng16/pnglibconf.h rename to 3rd-party/libpng/pnglibconf.h diff --git a/libpng16/pngmem.c b/3rd-party/libpng/pngmem.c similarity index 100% rename from libpng16/pngmem.c rename to 3rd-party/libpng/pngmem.c diff --git a/libpng16/pngnow.png b/3rd-party/libpng/pngnow.png similarity index 100% rename from libpng16/pngnow.png rename to 3rd-party/libpng/pngnow.png diff --git a/libpng16/pngpread.c b/3rd-party/libpng/pngpread.c similarity index 100% rename from libpng16/pngpread.c rename to 3rd-party/libpng/pngpread.c diff --git a/libpng16/pngpriv.h b/3rd-party/libpng/pngpriv.h similarity index 100% rename from libpng16/pngpriv.h rename to 3rd-party/libpng/pngpriv.h diff --git a/libpng16/pngread.c b/3rd-party/libpng/pngread.c similarity index 100% rename from libpng16/pngread.c rename to 3rd-party/libpng/pngread.c diff --git a/libpng16/pngrio.c b/3rd-party/libpng/pngrio.c similarity index 100% rename from libpng16/pngrio.c rename to 3rd-party/libpng/pngrio.c diff --git a/libpng16/pngrtran.c b/3rd-party/libpng/pngrtran.c similarity index 100% rename from libpng16/pngrtran.c rename to 3rd-party/libpng/pngrtran.c diff --git a/libpng16/pngrutil.c b/3rd-party/libpng/pngrutil.c similarity index 100% rename from libpng16/pngrutil.c rename to 3rd-party/libpng/pngrutil.c diff --git a/libpng16/pngset.c b/3rd-party/libpng/pngset.c similarity index 100% rename from libpng16/pngset.c rename to 3rd-party/libpng/pngset.c diff --git a/libpng16/pngstruct.h b/3rd-party/libpng/pngstruct.h similarity index 100% rename from libpng16/pngstruct.h rename to 3rd-party/libpng/pngstruct.h diff --git a/libpng16/pngtest.c b/3rd-party/libpng/pngtest.c similarity index 100% rename from libpng16/pngtest.c rename to 3rd-party/libpng/pngtest.c diff --git a/libpng16/pngtest.png b/3rd-party/libpng/pngtest.png similarity index 100% rename from libpng16/pngtest.png rename to 3rd-party/libpng/pngtest.png diff --git a/libpng16/pngtrans.c b/3rd-party/libpng/pngtrans.c similarity index 100% rename from libpng16/pngtrans.c rename to 3rd-party/libpng/pngtrans.c diff --git a/libpng16/pngusr.dfa b/3rd-party/libpng/pngusr.dfa similarity index 100% rename from libpng16/pngusr.dfa rename to 3rd-party/libpng/pngusr.dfa diff --git a/libpng16/pngwio.c b/3rd-party/libpng/pngwio.c similarity index 100% rename from libpng16/pngwio.c rename to 3rd-party/libpng/pngwio.c diff --git a/libpng16/pngwrite.c b/3rd-party/libpng/pngwrite.c similarity index 100% rename from libpng16/pngwrite.c rename to 3rd-party/libpng/pngwrite.c diff --git a/libpng16/pngwtran.c b/3rd-party/libpng/pngwtran.c similarity index 100% rename from libpng16/pngwtran.c rename to 3rd-party/libpng/pngwtran.c diff --git a/libpng16/pngwutil.c b/3rd-party/libpng/pngwutil.c similarity index 100% rename from libpng16/pngwutil.c rename to 3rd-party/libpng/pngwutil.c diff --git a/libpng16/projects/owatcom/libpng.tgt b/3rd-party/libpng/projects/owatcom/libpng.tgt similarity index 100% rename from libpng16/projects/owatcom/libpng.tgt rename to 3rd-party/libpng/projects/owatcom/libpng.tgt diff --git a/libpng16/projects/owatcom/libpng.wpj b/3rd-party/libpng/projects/owatcom/libpng.wpj similarity index 100% rename from libpng16/projects/owatcom/libpng.wpj rename to 3rd-party/libpng/projects/owatcom/libpng.wpj diff --git a/libpng16/projects/owatcom/pngconfig.mak b/3rd-party/libpng/projects/owatcom/pngconfig.mak similarity index 100% rename from libpng16/projects/owatcom/pngconfig.mak rename to 3rd-party/libpng/projects/owatcom/pngconfig.mak diff --git a/libpng16/projects/owatcom/pngstest.tgt b/3rd-party/libpng/projects/owatcom/pngstest.tgt similarity index 100% rename from libpng16/projects/owatcom/pngstest.tgt rename to 3rd-party/libpng/projects/owatcom/pngstest.tgt diff --git a/libpng16/projects/owatcom/pngtest.tgt b/3rd-party/libpng/projects/owatcom/pngtest.tgt similarity index 100% rename from libpng16/projects/owatcom/pngtest.tgt rename to 3rd-party/libpng/projects/owatcom/pngtest.tgt diff --git a/libpng16/projects/owatcom/pngvalid.tgt b/3rd-party/libpng/projects/owatcom/pngvalid.tgt similarity index 100% rename from libpng16/projects/owatcom/pngvalid.tgt rename to 3rd-party/libpng/projects/owatcom/pngvalid.tgt diff --git a/libpng16/projects/visualc71/PRJ0041.mak b/3rd-party/libpng/projects/visualc71/PRJ0041.mak similarity index 100% rename from libpng16/projects/visualc71/PRJ0041.mak rename to 3rd-party/libpng/projects/visualc71/PRJ0041.mak diff --git a/libpng16/projects/visualc71/README.txt b/3rd-party/libpng/projects/visualc71/README.txt similarity index 100% rename from libpng16/projects/visualc71/README.txt rename to 3rd-party/libpng/projects/visualc71/README.txt diff --git a/libpng16/projects/visualc71/README_zlib.txt b/3rd-party/libpng/projects/visualc71/README_zlib.txt similarity index 100% rename from libpng16/projects/visualc71/README_zlib.txt rename to 3rd-party/libpng/projects/visualc71/README_zlib.txt diff --git a/libpng16/projects/visualc71/libpng.sln b/3rd-party/libpng/projects/visualc71/libpng.sln similarity index 100% rename from libpng16/projects/visualc71/libpng.sln rename to 3rd-party/libpng/projects/visualc71/libpng.sln diff --git a/libpng16/projects/visualc71/libpng.vcproj b/3rd-party/libpng/projects/visualc71/libpng.vcproj similarity index 100% rename from libpng16/projects/visualc71/libpng.vcproj rename to 3rd-party/libpng/projects/visualc71/libpng.vcproj diff --git a/libpng16/projects/visualc71/pngtest.vcproj b/3rd-party/libpng/projects/visualc71/pngtest.vcproj similarity index 100% rename from libpng16/projects/visualc71/pngtest.vcproj rename to 3rd-party/libpng/projects/visualc71/pngtest.vcproj diff --git a/libpng16/projects/visualc71/zlib.vcproj b/3rd-party/libpng/projects/visualc71/zlib.vcproj similarity index 100% rename from libpng16/projects/visualc71/zlib.vcproj rename to 3rd-party/libpng/projects/visualc71/zlib.vcproj diff --git a/libpng16/projects/vstudio/WARNING b/3rd-party/libpng/projects/vstudio/WARNING similarity index 100% rename from libpng16/projects/vstudio/WARNING rename to 3rd-party/libpng/projects/vstudio/WARNING diff --git a/libpng16/projects/vstudio/libpng/libpng.vcxproj b/3rd-party/libpng/projects/vstudio/libpng/libpng.vcxproj similarity index 100% rename from libpng16/projects/vstudio/libpng/libpng.vcxproj rename to 3rd-party/libpng/projects/vstudio/libpng/libpng.vcxproj diff --git a/libpng16/projects/vstudio/pnglibconf/pnglibconf.vcxproj b/3rd-party/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj similarity index 100% rename from libpng16/projects/vstudio/pnglibconf/pnglibconf.vcxproj rename to 3rd-party/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj diff --git a/libpng16/projects/vstudio/pngstest/pngstest.vcxproj b/3rd-party/libpng/projects/vstudio/pngstest/pngstest.vcxproj similarity index 100% rename from libpng16/projects/vstudio/pngstest/pngstest.vcxproj rename to 3rd-party/libpng/projects/vstudio/pngstest/pngstest.vcxproj diff --git a/libpng16/projects/vstudio/pngtest/pngtest.vcxproj b/3rd-party/libpng/projects/vstudio/pngtest/pngtest.vcxproj similarity index 100% rename from libpng16/projects/vstudio/pngtest/pngtest.vcxproj rename to 3rd-party/libpng/projects/vstudio/pngtest/pngtest.vcxproj diff --git a/libpng16/projects/vstudio/pngunknown/pngunknown.vcxproj b/3rd-party/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj similarity index 100% rename from libpng16/projects/vstudio/pngunknown/pngunknown.vcxproj rename to 3rd-party/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj diff --git a/libpng16/projects/vstudio/pngvalid/pngvalid.vcxproj b/3rd-party/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj similarity index 100% rename from libpng16/projects/vstudio/pngvalid/pngvalid.vcxproj rename to 3rd-party/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj diff --git a/libpng16/projects/vstudio/readme.txt b/3rd-party/libpng/projects/vstudio/readme.txt similarity index 100% rename from libpng16/projects/vstudio/readme.txt rename to 3rd-party/libpng/projects/vstudio/readme.txt diff --git a/libpng16/projects/vstudio/vstudio.sln b/3rd-party/libpng/projects/vstudio/vstudio.sln similarity index 100% rename from libpng16/projects/vstudio/vstudio.sln rename to 3rd-party/libpng/projects/vstudio/vstudio.sln diff --git a/libpng16/projects/vstudio/zlib.props b/3rd-party/libpng/projects/vstudio/zlib.props similarity index 100% rename from libpng16/projects/vstudio/zlib.props rename to 3rd-party/libpng/projects/vstudio/zlib.props diff --git a/libpng16/projects/vstudio/zlib/zlib.vcxproj b/3rd-party/libpng/projects/vstudio/zlib/zlib.vcxproj similarity index 100% rename from libpng16/projects/vstudio/zlib/zlib.vcxproj rename to 3rd-party/libpng/projects/vstudio/zlib/zlib.vcxproj diff --git a/libpng16/scripts/README.txt b/3rd-party/libpng/scripts/README.txt similarity index 100% rename from libpng16/scripts/README.txt rename to 3rd-party/libpng/scripts/README.txt diff --git a/libpng16/scripts/SCOPTIONS.ppc b/3rd-party/libpng/scripts/SCOPTIONS.ppc similarity index 100% rename from libpng16/scripts/SCOPTIONS.ppc rename to 3rd-party/libpng/scripts/SCOPTIONS.ppc diff --git a/libpng16/scripts/checksym.awk b/3rd-party/libpng/scripts/checksym.awk similarity index 100% rename from libpng16/scripts/checksym.awk rename to 3rd-party/libpng/scripts/checksym.awk diff --git a/libpng16/scripts/def.dfn b/3rd-party/libpng/scripts/def.dfn similarity index 100% rename from libpng16/scripts/def.dfn rename to 3rd-party/libpng/scripts/def.dfn diff --git a/libpng16/scripts/descrip.mms b/3rd-party/libpng/scripts/descrip.mms similarity index 100% rename from libpng16/scripts/descrip.mms rename to 3rd-party/libpng/scripts/descrip.mms diff --git a/libpng16/scripts/dfn.awk b/3rd-party/libpng/scripts/dfn.awk similarity index 100% rename from libpng16/scripts/dfn.awk rename to 3rd-party/libpng/scripts/dfn.awk diff --git a/libpng16/scripts/intprefix.dfn b/3rd-party/libpng/scripts/intprefix.dfn similarity index 100% rename from libpng16/scripts/intprefix.dfn rename to 3rd-party/libpng/scripts/intprefix.dfn diff --git a/libpng16/scripts/libpng-config-body.in b/3rd-party/libpng/scripts/libpng-config-body.in similarity index 100% rename from libpng16/scripts/libpng-config-body.in rename to 3rd-party/libpng/scripts/libpng-config-body.in diff --git a/libpng16/scripts/libpng-config-head.in b/3rd-party/libpng/scripts/libpng-config-head.in similarity index 100% rename from libpng16/scripts/libpng-config-head.in rename to 3rd-party/libpng/scripts/libpng-config-head.in diff --git a/libpng16/scripts/libpng.pc.in b/3rd-party/libpng/scripts/libpng.pc.in similarity index 100% rename from libpng16/scripts/libpng.pc.in rename to 3rd-party/libpng/scripts/libpng.pc.in diff --git a/libpng16/scripts/macro.lst b/3rd-party/libpng/scripts/macro.lst similarity index 100% rename from libpng16/scripts/macro.lst rename to 3rd-party/libpng/scripts/macro.lst diff --git a/libpng16/scripts/makefile.32sunu b/3rd-party/libpng/scripts/makefile.32sunu similarity index 100% rename from libpng16/scripts/makefile.32sunu rename to 3rd-party/libpng/scripts/makefile.32sunu diff --git a/libpng16/scripts/makefile.64sunu b/3rd-party/libpng/scripts/makefile.64sunu similarity index 100% rename from libpng16/scripts/makefile.64sunu rename to 3rd-party/libpng/scripts/makefile.64sunu diff --git a/libpng16/scripts/makefile.acorn b/3rd-party/libpng/scripts/makefile.acorn similarity index 100% rename from libpng16/scripts/makefile.acorn rename to 3rd-party/libpng/scripts/makefile.acorn diff --git a/libpng16/scripts/makefile.aix b/3rd-party/libpng/scripts/makefile.aix similarity index 100% rename from libpng16/scripts/makefile.aix rename to 3rd-party/libpng/scripts/makefile.aix diff --git a/libpng16/scripts/makefile.amiga b/3rd-party/libpng/scripts/makefile.amiga similarity index 100% rename from libpng16/scripts/makefile.amiga rename to 3rd-party/libpng/scripts/makefile.amiga diff --git a/libpng16/scripts/makefile.atari b/3rd-party/libpng/scripts/makefile.atari similarity index 100% rename from libpng16/scripts/makefile.atari rename to 3rd-party/libpng/scripts/makefile.atari diff --git a/libpng16/scripts/makefile.bc32 b/3rd-party/libpng/scripts/makefile.bc32 similarity index 100% rename from libpng16/scripts/makefile.bc32 rename to 3rd-party/libpng/scripts/makefile.bc32 diff --git a/libpng16/scripts/makefile.beos b/3rd-party/libpng/scripts/makefile.beos similarity index 100% rename from libpng16/scripts/makefile.beos rename to 3rd-party/libpng/scripts/makefile.beos diff --git a/libpng16/scripts/makefile.bor b/3rd-party/libpng/scripts/makefile.bor similarity index 100% rename from libpng16/scripts/makefile.bor rename to 3rd-party/libpng/scripts/makefile.bor diff --git a/libpng16/scripts/makefile.cegcc b/3rd-party/libpng/scripts/makefile.cegcc similarity index 100% rename from libpng16/scripts/makefile.cegcc rename to 3rd-party/libpng/scripts/makefile.cegcc diff --git a/libpng16/scripts/makefile.darwin b/3rd-party/libpng/scripts/makefile.darwin similarity index 100% rename from libpng16/scripts/makefile.darwin rename to 3rd-party/libpng/scripts/makefile.darwin diff --git a/libpng16/scripts/makefile.dec b/3rd-party/libpng/scripts/makefile.dec similarity index 100% rename from libpng16/scripts/makefile.dec rename to 3rd-party/libpng/scripts/makefile.dec diff --git a/libpng16/scripts/makefile.dj2 b/3rd-party/libpng/scripts/makefile.dj2 similarity index 100% rename from libpng16/scripts/makefile.dj2 rename to 3rd-party/libpng/scripts/makefile.dj2 diff --git a/libpng16/scripts/makefile.elf b/3rd-party/libpng/scripts/makefile.elf similarity index 100% rename from libpng16/scripts/makefile.elf rename to 3rd-party/libpng/scripts/makefile.elf diff --git a/libpng16/scripts/makefile.freebsd b/3rd-party/libpng/scripts/makefile.freebsd similarity index 100% rename from libpng16/scripts/makefile.freebsd rename to 3rd-party/libpng/scripts/makefile.freebsd diff --git a/libpng16/scripts/makefile.gcc b/3rd-party/libpng/scripts/makefile.gcc similarity index 100% rename from libpng16/scripts/makefile.gcc rename to 3rd-party/libpng/scripts/makefile.gcc diff --git a/libpng16/scripts/makefile.hp64 b/3rd-party/libpng/scripts/makefile.hp64 similarity index 100% rename from libpng16/scripts/makefile.hp64 rename to 3rd-party/libpng/scripts/makefile.hp64 diff --git a/libpng16/scripts/makefile.hpgcc b/3rd-party/libpng/scripts/makefile.hpgcc similarity index 100% rename from libpng16/scripts/makefile.hpgcc rename to 3rd-party/libpng/scripts/makefile.hpgcc diff --git a/libpng16/scripts/makefile.hpux b/3rd-party/libpng/scripts/makefile.hpux similarity index 100% rename from libpng16/scripts/makefile.hpux rename to 3rd-party/libpng/scripts/makefile.hpux diff --git a/libpng16/scripts/makefile.ibmc b/3rd-party/libpng/scripts/makefile.ibmc similarity index 100% rename from libpng16/scripts/makefile.ibmc rename to 3rd-party/libpng/scripts/makefile.ibmc diff --git a/libpng16/scripts/makefile.intel b/3rd-party/libpng/scripts/makefile.intel similarity index 100% rename from libpng16/scripts/makefile.intel rename to 3rd-party/libpng/scripts/makefile.intel diff --git a/libpng16/scripts/makefile.knr b/3rd-party/libpng/scripts/makefile.knr similarity index 100% rename from libpng16/scripts/makefile.knr rename to 3rd-party/libpng/scripts/makefile.knr diff --git a/libpng16/scripts/makefile.linux b/3rd-party/libpng/scripts/makefile.linux similarity index 100% rename from libpng16/scripts/makefile.linux rename to 3rd-party/libpng/scripts/makefile.linux diff --git a/libpng16/scripts/makefile.mips b/3rd-party/libpng/scripts/makefile.mips similarity index 100% rename from libpng16/scripts/makefile.mips rename to 3rd-party/libpng/scripts/makefile.mips diff --git a/libpng16/scripts/makefile.msc b/3rd-party/libpng/scripts/makefile.msc similarity index 100% rename from libpng16/scripts/makefile.msc rename to 3rd-party/libpng/scripts/makefile.msc diff --git a/libpng16/scripts/makefile.msys b/3rd-party/libpng/scripts/makefile.msys similarity index 100% rename from libpng16/scripts/makefile.msys rename to 3rd-party/libpng/scripts/makefile.msys diff --git a/libpng16/scripts/makefile.ne12bsd b/3rd-party/libpng/scripts/makefile.ne12bsd similarity index 100% rename from libpng16/scripts/makefile.ne12bsd rename to 3rd-party/libpng/scripts/makefile.ne12bsd diff --git a/libpng16/scripts/makefile.netbsd b/3rd-party/libpng/scripts/makefile.netbsd similarity index 100% rename from libpng16/scripts/makefile.netbsd rename to 3rd-party/libpng/scripts/makefile.netbsd diff --git a/libpng16/scripts/makefile.openbsd b/3rd-party/libpng/scripts/makefile.openbsd similarity index 100% rename from libpng16/scripts/makefile.openbsd rename to 3rd-party/libpng/scripts/makefile.openbsd diff --git a/libpng16/scripts/makefile.sco b/3rd-party/libpng/scripts/makefile.sco similarity index 100% rename from libpng16/scripts/makefile.sco rename to 3rd-party/libpng/scripts/makefile.sco diff --git a/libpng16/scripts/makefile.sggcc b/3rd-party/libpng/scripts/makefile.sggcc similarity index 100% rename from libpng16/scripts/makefile.sggcc rename to 3rd-party/libpng/scripts/makefile.sggcc diff --git a/libpng16/scripts/makefile.sgi b/3rd-party/libpng/scripts/makefile.sgi similarity index 100% rename from libpng16/scripts/makefile.sgi rename to 3rd-party/libpng/scripts/makefile.sgi diff --git a/libpng16/scripts/makefile.so9 b/3rd-party/libpng/scripts/makefile.so9 similarity index 100% rename from libpng16/scripts/makefile.so9 rename to 3rd-party/libpng/scripts/makefile.so9 diff --git a/libpng16/scripts/makefile.solaris b/3rd-party/libpng/scripts/makefile.solaris similarity index 100% rename from libpng16/scripts/makefile.solaris rename to 3rd-party/libpng/scripts/makefile.solaris diff --git a/libpng16/scripts/makefile.solaris-x86 b/3rd-party/libpng/scripts/makefile.solaris-x86 similarity index 100% rename from libpng16/scripts/makefile.solaris-x86 rename to 3rd-party/libpng/scripts/makefile.solaris-x86 diff --git a/libpng16/scripts/makefile.std b/3rd-party/libpng/scripts/makefile.std similarity index 100% rename from libpng16/scripts/makefile.std rename to 3rd-party/libpng/scripts/makefile.std diff --git a/libpng16/scripts/makefile.sunos b/3rd-party/libpng/scripts/makefile.sunos similarity index 100% rename from libpng16/scripts/makefile.sunos rename to 3rd-party/libpng/scripts/makefile.sunos diff --git a/libpng16/scripts/makefile.tc3 b/3rd-party/libpng/scripts/makefile.tc3 similarity index 100% rename from libpng16/scripts/makefile.tc3 rename to 3rd-party/libpng/scripts/makefile.tc3 diff --git a/libpng16/scripts/makefile.vcwin32 b/3rd-party/libpng/scripts/makefile.vcwin32 similarity index 100% rename from libpng16/scripts/makefile.vcwin32 rename to 3rd-party/libpng/scripts/makefile.vcwin32 diff --git a/libpng16/scripts/makevms.com b/3rd-party/libpng/scripts/makevms.com similarity index 100% rename from libpng16/scripts/makevms.com rename to 3rd-party/libpng/scripts/makevms.com diff --git a/libpng16/scripts/options.awk b/3rd-party/libpng/scripts/options.awk similarity index 100% rename from libpng16/scripts/options.awk rename to 3rd-party/libpng/scripts/options.awk diff --git a/libpng16/scripts/pnglibconf.dfa b/3rd-party/libpng/scripts/pnglibconf.dfa similarity index 100% rename from libpng16/scripts/pnglibconf.dfa rename to 3rd-party/libpng/scripts/pnglibconf.dfa diff --git a/libpng16/scripts/pnglibconf.h.prebuilt b/3rd-party/libpng/scripts/pnglibconf.h.prebuilt similarity index 100% rename from libpng16/scripts/pnglibconf.h.prebuilt rename to 3rd-party/libpng/scripts/pnglibconf.h.prebuilt diff --git a/libpng16/scripts/pnglibconf.mak b/3rd-party/libpng/scripts/pnglibconf.mak similarity index 100% rename from libpng16/scripts/pnglibconf.mak rename to 3rd-party/libpng/scripts/pnglibconf.mak diff --git a/libpng16/scripts/pngwin.rc b/3rd-party/libpng/scripts/pngwin.rc similarity index 100% rename from libpng16/scripts/pngwin.rc rename to 3rd-party/libpng/scripts/pngwin.rc diff --git a/libpng16/scripts/prefix.dfn b/3rd-party/libpng/scripts/prefix.dfn similarity index 100% rename from libpng16/scripts/prefix.dfn rename to 3rd-party/libpng/scripts/prefix.dfn diff --git a/libpng16/scripts/smakefile.ppc b/3rd-party/libpng/scripts/smakefile.ppc similarity index 100% rename from libpng16/scripts/smakefile.ppc rename to 3rd-party/libpng/scripts/smakefile.ppc diff --git a/libpng16/scripts/sym.dfn b/3rd-party/libpng/scripts/sym.dfn similarity index 100% rename from libpng16/scripts/sym.dfn rename to 3rd-party/libpng/scripts/sym.dfn diff --git a/libpng16/scripts/symbols.def b/3rd-party/libpng/scripts/symbols.def similarity index 100% rename from libpng16/scripts/symbols.def rename to 3rd-party/libpng/scripts/symbols.def diff --git a/libpng16/scripts/symbols.dfn b/3rd-party/libpng/scripts/symbols.dfn similarity index 100% rename from libpng16/scripts/symbols.dfn rename to 3rd-party/libpng/scripts/symbols.dfn diff --git a/libpng16/scripts/vers.dfn b/3rd-party/libpng/scripts/vers.dfn similarity index 100% rename from libpng16/scripts/vers.dfn rename to 3rd-party/libpng/scripts/vers.dfn diff --git a/libpng16/tests/pngstest b/3rd-party/libpng/tests/pngstest similarity index 100% rename from libpng16/tests/pngstest rename to 3rd-party/libpng/tests/pngstest diff --git a/libpng16/tests/pngstest-0g01 b/3rd-party/libpng/tests/pngstest-0g01 similarity index 100% rename from libpng16/tests/pngstest-0g01 rename to 3rd-party/libpng/tests/pngstest-0g01 diff --git a/libpng16/tests/pngstest-0g02 b/3rd-party/libpng/tests/pngstest-0g02 similarity index 100% rename from libpng16/tests/pngstest-0g02 rename to 3rd-party/libpng/tests/pngstest-0g02 diff --git a/libpng16/tests/pngstest-0g04 b/3rd-party/libpng/tests/pngstest-0g04 similarity index 100% rename from libpng16/tests/pngstest-0g04 rename to 3rd-party/libpng/tests/pngstest-0g04 diff --git a/libpng16/tests/pngstest-0g08 b/3rd-party/libpng/tests/pngstest-0g08 similarity index 100% rename from libpng16/tests/pngstest-0g08 rename to 3rd-party/libpng/tests/pngstest-0g08 diff --git a/libpng16/tests/pngstest-0g16 b/3rd-party/libpng/tests/pngstest-0g16 similarity index 100% rename from libpng16/tests/pngstest-0g16 rename to 3rd-party/libpng/tests/pngstest-0g16 diff --git a/libpng16/tests/pngstest-2c08 b/3rd-party/libpng/tests/pngstest-2c08 similarity index 100% rename from libpng16/tests/pngstest-2c08 rename to 3rd-party/libpng/tests/pngstest-2c08 diff --git a/libpng16/tests/pngstest-2c16 b/3rd-party/libpng/tests/pngstest-2c16 similarity index 100% rename from libpng16/tests/pngstest-2c16 rename to 3rd-party/libpng/tests/pngstest-2c16 diff --git a/libpng16/tests/pngstest-3p01 b/3rd-party/libpng/tests/pngstest-3p01 similarity index 100% rename from libpng16/tests/pngstest-3p01 rename to 3rd-party/libpng/tests/pngstest-3p01 diff --git a/libpng16/tests/pngstest-3p02 b/3rd-party/libpng/tests/pngstest-3p02 similarity index 100% rename from libpng16/tests/pngstest-3p02 rename to 3rd-party/libpng/tests/pngstest-3p02 diff --git a/libpng16/tests/pngstest-3p04 b/3rd-party/libpng/tests/pngstest-3p04 similarity index 100% rename from libpng16/tests/pngstest-3p04 rename to 3rd-party/libpng/tests/pngstest-3p04 diff --git a/libpng16/tests/pngstest-3p08 b/3rd-party/libpng/tests/pngstest-3p08 similarity index 100% rename from libpng16/tests/pngstest-3p08 rename to 3rd-party/libpng/tests/pngstest-3p08 diff --git a/libpng16/tests/pngstest-4a08 b/3rd-party/libpng/tests/pngstest-4a08 similarity index 100% rename from libpng16/tests/pngstest-4a08 rename to 3rd-party/libpng/tests/pngstest-4a08 diff --git a/libpng16/tests/pngstest-4a16 b/3rd-party/libpng/tests/pngstest-4a16 similarity index 100% rename from libpng16/tests/pngstest-4a16 rename to 3rd-party/libpng/tests/pngstest-4a16 diff --git a/libpng16/tests/pngstest-6a08 b/3rd-party/libpng/tests/pngstest-6a08 similarity index 100% rename from libpng16/tests/pngstest-6a08 rename to 3rd-party/libpng/tests/pngstest-6a08 diff --git a/libpng16/tests/pngstest-6a16 b/3rd-party/libpng/tests/pngstest-6a16 similarity index 100% rename from libpng16/tests/pngstest-6a16 rename to 3rd-party/libpng/tests/pngstest-6a16 diff --git a/libpng16/tests/pngstest-error b/3rd-party/libpng/tests/pngstest-error similarity index 100% rename from libpng16/tests/pngstest-error rename to 3rd-party/libpng/tests/pngstest-error diff --git a/libpng16/tests/pngtest b/3rd-party/libpng/tests/pngtest similarity index 100% rename from libpng16/tests/pngtest rename to 3rd-party/libpng/tests/pngtest diff --git a/libpng16/tests/pngunknown-IDAT b/3rd-party/libpng/tests/pngunknown-IDAT similarity index 100% rename from libpng16/tests/pngunknown-IDAT rename to 3rd-party/libpng/tests/pngunknown-IDAT diff --git a/libpng16/tests/pngunknown-discard b/3rd-party/libpng/tests/pngunknown-discard similarity index 100% rename from libpng16/tests/pngunknown-discard rename to 3rd-party/libpng/tests/pngunknown-discard diff --git a/libpng16/tests/pngunknown-if-safe b/3rd-party/libpng/tests/pngunknown-if-safe similarity index 100% rename from libpng16/tests/pngunknown-if-safe rename to 3rd-party/libpng/tests/pngunknown-if-safe diff --git a/libpng16/tests/pngunknown-sAPI b/3rd-party/libpng/tests/pngunknown-sAPI similarity index 100% rename from libpng16/tests/pngunknown-sAPI rename to 3rd-party/libpng/tests/pngunknown-sAPI diff --git a/libpng16/tests/pngunknown-sTER b/3rd-party/libpng/tests/pngunknown-sTER similarity index 100% rename from libpng16/tests/pngunknown-sTER rename to 3rd-party/libpng/tests/pngunknown-sTER diff --git a/libpng16/tests/pngunknown-save b/3rd-party/libpng/tests/pngunknown-save similarity index 100% rename from libpng16/tests/pngunknown-save rename to 3rd-party/libpng/tests/pngunknown-save diff --git a/libpng16/tests/pngunknown-vpAg b/3rd-party/libpng/tests/pngunknown-vpAg similarity index 100% rename from libpng16/tests/pngunknown-vpAg rename to 3rd-party/libpng/tests/pngunknown-vpAg diff --git a/libpng16/tests/pngvalid-gamma-16-to-8 b/3rd-party/libpng/tests/pngvalid-gamma-16-to-8 similarity index 100% rename from libpng16/tests/pngvalid-gamma-16-to-8 rename to 3rd-party/libpng/tests/pngvalid-gamma-16-to-8 diff --git a/libpng16/tests/pngvalid-gamma-alpha-mode b/3rd-party/libpng/tests/pngvalid-gamma-alpha-mode similarity index 100% rename from libpng16/tests/pngvalid-gamma-alpha-mode rename to 3rd-party/libpng/tests/pngvalid-gamma-alpha-mode diff --git a/libpng16/tests/pngvalid-gamma-background b/3rd-party/libpng/tests/pngvalid-gamma-background similarity index 100% rename from libpng16/tests/pngvalid-gamma-background rename to 3rd-party/libpng/tests/pngvalid-gamma-background diff --git a/libpng16/tests/pngvalid-gamma-expand16-alpha-mode b/3rd-party/libpng/tests/pngvalid-gamma-expand16-alpha-mode similarity index 100% rename from libpng16/tests/pngvalid-gamma-expand16-alpha-mode rename to 3rd-party/libpng/tests/pngvalid-gamma-expand16-alpha-mode diff --git a/libpng16/tests/pngvalid-gamma-expand16-background b/3rd-party/libpng/tests/pngvalid-gamma-expand16-background similarity index 100% rename from libpng16/tests/pngvalid-gamma-expand16-background rename to 3rd-party/libpng/tests/pngvalid-gamma-expand16-background diff --git a/libpng16/tests/pngvalid-gamma-expand16-transform b/3rd-party/libpng/tests/pngvalid-gamma-expand16-transform similarity index 100% rename from libpng16/tests/pngvalid-gamma-expand16-transform rename to 3rd-party/libpng/tests/pngvalid-gamma-expand16-transform diff --git a/libpng16/tests/pngvalid-gamma-sbit b/3rd-party/libpng/tests/pngvalid-gamma-sbit similarity index 100% rename from libpng16/tests/pngvalid-gamma-sbit rename to 3rd-party/libpng/tests/pngvalid-gamma-sbit diff --git a/libpng16/tests/pngvalid-gamma-threshold b/3rd-party/libpng/tests/pngvalid-gamma-threshold similarity index 100% rename from libpng16/tests/pngvalid-gamma-threshold rename to 3rd-party/libpng/tests/pngvalid-gamma-threshold diff --git a/libpng16/tests/pngvalid-gamma-transform b/3rd-party/libpng/tests/pngvalid-gamma-transform similarity index 100% rename from libpng16/tests/pngvalid-gamma-transform rename to 3rd-party/libpng/tests/pngvalid-gamma-transform diff --git a/libpng16/tests/pngvalid-progressive-interlace-size b/3rd-party/libpng/tests/pngvalid-progressive-interlace-size similarity index 100% rename from libpng16/tests/pngvalid-progressive-interlace-size rename to 3rd-party/libpng/tests/pngvalid-progressive-interlace-size diff --git a/libpng16/tests/pngvalid-progressive-interlace-standard b/3rd-party/libpng/tests/pngvalid-progressive-interlace-standard similarity index 100% rename from libpng16/tests/pngvalid-progressive-interlace-standard rename to 3rd-party/libpng/tests/pngvalid-progressive-interlace-standard diff --git a/libpng16/tests/pngvalid-progressive-interlace-transform b/3rd-party/libpng/tests/pngvalid-progressive-interlace-transform similarity index 100% rename from libpng16/tests/pngvalid-progressive-interlace-transform rename to 3rd-party/libpng/tests/pngvalid-progressive-interlace-transform diff --git a/libpng16/tests/pngvalid-progressive-standard b/3rd-party/libpng/tests/pngvalid-progressive-standard similarity index 100% rename from libpng16/tests/pngvalid-progressive-standard rename to 3rd-party/libpng/tests/pngvalid-progressive-standard diff --git a/libpng16/tests/pngvalid-standard b/3rd-party/libpng/tests/pngvalid-standard similarity index 100% rename from libpng16/tests/pngvalid-standard rename to 3rd-party/libpng/tests/pngvalid-standard diff --git a/pixman/.gitignore b/3rd-party/pixman/.gitignore similarity index 100% rename from pixman/.gitignore rename to 3rd-party/pixman/.gitignore diff --git a/pixman/AUTHORS b/3rd-party/pixman/AUTHORS similarity index 100% rename from pixman/AUTHORS rename to 3rd-party/pixman/AUTHORS diff --git a/pixman/CODING_STYLE b/3rd-party/pixman/CODING_STYLE similarity index 100% rename from pixman/CODING_STYLE rename to 3rd-party/pixman/CODING_STYLE diff --git a/pixman/COPYING b/3rd-party/pixman/COPYING similarity index 100% rename from pixman/COPYING rename to 3rd-party/pixman/COPYING diff --git a/pixman/ChangeLog b/3rd-party/pixman/ChangeLog similarity index 100% rename from pixman/ChangeLog rename to 3rd-party/pixman/ChangeLog diff --git a/pixman/INSTALL b/3rd-party/pixman/INSTALL similarity index 100% rename from pixman/INSTALL rename to 3rd-party/pixman/INSTALL diff --git a/pixman/Makefile.am b/3rd-party/pixman/Makefile.am similarity index 100% rename from pixman/Makefile.am rename to 3rd-party/pixman/Makefile.am diff --git a/pixman/Makefile.win32 b/3rd-party/pixman/Makefile.win32 similarity index 100% rename from pixman/Makefile.win32 rename to 3rd-party/pixman/Makefile.win32 diff --git a/pixman/Makefile.win32.common b/3rd-party/pixman/Makefile.win32.common similarity index 100% rename from pixman/Makefile.win32.common rename to 3rd-party/pixman/Makefile.win32.common diff --git a/pixman/NEWS b/3rd-party/pixman/NEWS similarity index 100% rename from pixman/NEWS rename to 3rd-party/pixman/NEWS diff --git a/pixman/README b/3rd-party/pixman/README similarity index 100% rename from pixman/README rename to 3rd-party/pixman/README diff --git a/pixman/RELEASING b/3rd-party/pixman/RELEASING similarity index 100% rename from pixman/RELEASING rename to 3rd-party/pixman/RELEASING diff --git a/pixman/autogen.sh b/3rd-party/pixman/autogen.sh similarity index 100% rename from pixman/autogen.sh rename to 3rd-party/pixman/autogen.sh diff --git a/pixman/configure.ac b/3rd-party/pixman/configure.ac similarity index 100% rename from pixman/configure.ac rename to 3rd-party/pixman/configure.ac diff --git a/pixman/demos/Makefile.am b/3rd-party/pixman/demos/Makefile.am similarity index 100% rename from pixman/demos/Makefile.am rename to 3rd-party/pixman/demos/Makefile.am diff --git a/pixman/demos/alpha-test.c b/3rd-party/pixman/demos/alpha-test.c similarity index 100% rename from pixman/demos/alpha-test.c rename to 3rd-party/pixman/demos/alpha-test.c diff --git a/pixman/demos/checkerboard.c b/3rd-party/pixman/demos/checkerboard.c similarity index 100% rename from pixman/demos/checkerboard.c rename to 3rd-party/pixman/demos/checkerboard.c diff --git a/pixman/demos/clip-in.c b/3rd-party/pixman/demos/clip-in.c similarity index 100% rename from pixman/demos/clip-in.c rename to 3rd-party/pixman/demos/clip-in.c diff --git a/pixman/demos/clip-test.c b/3rd-party/pixman/demos/clip-test.c similarity index 100% rename from pixman/demos/clip-test.c rename to 3rd-party/pixman/demos/clip-test.c diff --git a/pixman/demos/composite-test.c b/3rd-party/pixman/demos/composite-test.c similarity index 100% rename from pixman/demos/composite-test.c rename to 3rd-party/pixman/demos/composite-test.c diff --git a/pixman/demos/conical-test.c b/3rd-party/pixman/demos/conical-test.c similarity index 100% rename from pixman/demos/conical-test.c rename to 3rd-party/pixman/demos/conical-test.c diff --git a/pixman/demos/convolution-test.c b/3rd-party/pixman/demos/convolution-test.c similarity index 100% rename from pixman/demos/convolution-test.c rename to 3rd-party/pixman/demos/convolution-test.c diff --git a/pixman/demos/gradient-test.c b/3rd-party/pixman/demos/gradient-test.c similarity index 100% rename from pixman/demos/gradient-test.c rename to 3rd-party/pixman/demos/gradient-test.c diff --git a/pixman/demos/gtk-utils.c b/3rd-party/pixman/demos/gtk-utils.c similarity index 100% rename from pixman/demos/gtk-utils.c rename to 3rd-party/pixman/demos/gtk-utils.c diff --git a/pixman/demos/gtk-utils.h b/3rd-party/pixman/demos/gtk-utils.h similarity index 100% rename from pixman/demos/gtk-utils.h rename to 3rd-party/pixman/demos/gtk-utils.h diff --git a/pixman/demos/linear-gradient.c b/3rd-party/pixman/demos/linear-gradient.c similarity index 100% rename from pixman/demos/linear-gradient.c rename to 3rd-party/pixman/demos/linear-gradient.c diff --git a/pixman/demos/parrot.c b/3rd-party/pixman/demos/parrot.c similarity index 100% rename from pixman/demos/parrot.c rename to 3rd-party/pixman/demos/parrot.c diff --git a/pixman/demos/parrot.jpg b/3rd-party/pixman/demos/parrot.jpg similarity index 100% rename from pixman/demos/parrot.jpg rename to 3rd-party/pixman/demos/parrot.jpg diff --git a/pixman/demos/quad2quad.c b/3rd-party/pixman/demos/quad2quad.c similarity index 100% rename from pixman/demos/quad2quad.c rename to 3rd-party/pixman/demos/quad2quad.c diff --git a/pixman/demos/radial-test.c b/3rd-party/pixman/demos/radial-test.c similarity index 100% rename from pixman/demos/radial-test.c rename to 3rd-party/pixman/demos/radial-test.c diff --git a/pixman/demos/scale.c b/3rd-party/pixman/demos/scale.c similarity index 100% rename from pixman/demos/scale.c rename to 3rd-party/pixman/demos/scale.c diff --git a/pixman/demos/scale.ui b/3rd-party/pixman/demos/scale.ui similarity index 100% rename from pixman/demos/scale.ui rename to 3rd-party/pixman/demos/scale.ui diff --git a/pixman/demos/screen-test.c b/3rd-party/pixman/demos/screen-test.c similarity index 100% rename from pixman/demos/screen-test.c rename to 3rd-party/pixman/demos/screen-test.c diff --git a/pixman/demos/srgb-test.c b/3rd-party/pixman/demos/srgb-test.c similarity index 100% rename from pixman/demos/srgb-test.c rename to 3rd-party/pixman/demos/srgb-test.c diff --git a/pixman/demos/srgb-trap-test.c b/3rd-party/pixman/demos/srgb-trap-test.c similarity index 100% rename from pixman/demos/srgb-trap-test.c rename to 3rd-party/pixman/demos/srgb-trap-test.c diff --git a/pixman/demos/trap-test.c b/3rd-party/pixman/demos/trap-test.c similarity index 100% rename from pixman/demos/trap-test.c rename to 3rd-party/pixman/demos/trap-test.c diff --git a/pixman/demos/tri-test.c b/3rd-party/pixman/demos/tri-test.c similarity index 100% rename from pixman/demos/tri-test.c rename to 3rd-party/pixman/demos/tri-test.c diff --git a/pixman/demos/zone_plate.png b/3rd-party/pixman/demos/zone_plate.png similarity index 100% rename from pixman/demos/zone_plate.png rename to 3rd-party/pixman/demos/zone_plate.png diff --git a/pixman/pixman-1-uninstalled.pc.in b/3rd-party/pixman/pixman-1-uninstalled.pc.in similarity index 100% rename from pixman/pixman-1-uninstalled.pc.in rename to 3rd-party/pixman/pixman-1-uninstalled.pc.in diff --git a/pixman/pixman-1.pc.in b/3rd-party/pixman/pixman-1.pc.in similarity index 100% rename from pixman/pixman-1.pc.in rename to 3rd-party/pixman/pixman-1.pc.in diff --git a/pixman/pixman/Makefile.am b/3rd-party/pixman/pixman/Makefile.am similarity index 100% rename from pixman/pixman/Makefile.am rename to 3rd-party/pixman/pixman/Makefile.am diff --git a/pixman/pixman/Makefile.sources b/3rd-party/pixman/pixman/Makefile.sources similarity index 100% rename from pixman/pixman/Makefile.sources rename to 3rd-party/pixman/pixman/Makefile.sources diff --git a/pixman/pixman/Makefile.win32 b/3rd-party/pixman/pixman/Makefile.win32 similarity index 100% rename from pixman/pixman/Makefile.win32 rename to 3rd-party/pixman/pixman/Makefile.win32 diff --git a/pixman/pixman/loongson-mmintrin.h b/3rd-party/pixman/pixman/loongson-mmintrin.h similarity index 100% rename from pixman/pixman/loongson-mmintrin.h rename to 3rd-party/pixman/pixman/loongson-mmintrin.h diff --git a/pixman/pixman/make-srgb.pl b/3rd-party/pixman/pixman/make-srgb.pl similarity index 100% rename from pixman/pixman/make-srgb.pl rename to 3rd-party/pixman/pixman/make-srgb.pl diff --git a/pixman/pixman/pixman-access-accessors.c b/3rd-party/pixman/pixman/pixman-access-accessors.c similarity index 100% rename from pixman/pixman/pixman-access-accessors.c rename to 3rd-party/pixman/pixman/pixman-access-accessors.c diff --git a/pixman/pixman/pixman-access.c b/3rd-party/pixman/pixman/pixman-access.c similarity index 100% rename from pixman/pixman/pixman-access.c rename to 3rd-party/pixman/pixman/pixman-access.c diff --git a/pixman/pixman/pixman-accessor.h b/3rd-party/pixman/pixman/pixman-accessor.h similarity index 100% rename from pixman/pixman/pixman-accessor.h rename to 3rd-party/pixman/pixman/pixman-accessor.h diff --git a/pixman/pixman/pixman-arm-common.h b/3rd-party/pixman/pixman/pixman-arm-common.h similarity index 100% rename from pixman/pixman/pixman-arm-common.h rename to 3rd-party/pixman/pixman/pixman-arm-common.h diff --git a/pixman/pixman/pixman-arm-detect-win32.asm b/3rd-party/pixman/pixman/pixman-arm-detect-win32.asm similarity index 100% rename from pixman/pixman/pixman-arm-detect-win32.asm rename to 3rd-party/pixman/pixman/pixman-arm-detect-win32.asm diff --git a/pixman/pixman/pixman-arm-neon-asm-bilinear.S b/3rd-party/pixman/pixman/pixman-arm-neon-asm-bilinear.S similarity index 100% rename from pixman/pixman/pixman-arm-neon-asm-bilinear.S rename to 3rd-party/pixman/pixman/pixman-arm-neon-asm-bilinear.S diff --git a/pixman/pixman/pixman-arm-neon-asm.S b/3rd-party/pixman/pixman/pixman-arm-neon-asm.S similarity index 100% rename from pixman/pixman/pixman-arm-neon-asm.S rename to 3rd-party/pixman/pixman/pixman-arm-neon-asm.S diff --git a/pixman/pixman/pixman-arm-neon-asm.h b/3rd-party/pixman/pixman/pixman-arm-neon-asm.h similarity index 100% rename from pixman/pixman/pixman-arm-neon-asm.h rename to 3rd-party/pixman/pixman/pixman-arm-neon-asm.h diff --git a/pixman/pixman/pixman-arm-neon.c b/3rd-party/pixman/pixman/pixman-arm-neon.c similarity index 100% rename from pixman/pixman/pixman-arm-neon.c rename to 3rd-party/pixman/pixman/pixman-arm-neon.c diff --git a/pixman/pixman/pixman-arm-simd-asm-scaled.S b/3rd-party/pixman/pixman/pixman-arm-simd-asm-scaled.S similarity index 100% rename from pixman/pixman/pixman-arm-simd-asm-scaled.S rename to 3rd-party/pixman/pixman/pixman-arm-simd-asm-scaled.S diff --git a/pixman/pixman/pixman-arm-simd-asm.S b/3rd-party/pixman/pixman/pixman-arm-simd-asm.S similarity index 100% rename from pixman/pixman/pixman-arm-simd-asm.S rename to 3rd-party/pixman/pixman/pixman-arm-simd-asm.S diff --git a/pixman/pixman/pixman-arm-simd-asm.h b/3rd-party/pixman/pixman/pixman-arm-simd-asm.h similarity index 100% rename from pixman/pixman/pixman-arm-simd-asm.h rename to 3rd-party/pixman/pixman/pixman-arm-simd-asm.h diff --git a/pixman/pixman/pixman-arm-simd.c b/3rd-party/pixman/pixman/pixman-arm-simd.c similarity index 100% rename from pixman/pixman/pixman-arm-simd.c rename to 3rd-party/pixman/pixman/pixman-arm-simd.c diff --git a/pixman/pixman/pixman-arm.c b/3rd-party/pixman/pixman/pixman-arm.c similarity index 100% rename from pixman/pixman/pixman-arm.c rename to 3rd-party/pixman/pixman/pixman-arm.c diff --git a/pixman/pixman/pixman-bits-image.c b/3rd-party/pixman/pixman/pixman-bits-image.c similarity index 100% rename from pixman/pixman/pixman-bits-image.c rename to 3rd-party/pixman/pixman/pixman-bits-image.c diff --git a/pixman/pixman/pixman-combine-float.c b/3rd-party/pixman/pixman/pixman-combine-float.c similarity index 100% rename from pixman/pixman/pixman-combine-float.c rename to 3rd-party/pixman/pixman/pixman-combine-float.c diff --git a/pixman/pixman/pixman-combine32.c b/3rd-party/pixman/pixman/pixman-combine32.c similarity index 100% rename from pixman/pixman/pixman-combine32.c rename to 3rd-party/pixman/pixman/pixman-combine32.c diff --git a/pixman/pixman/pixman-combine32.h b/3rd-party/pixman/pixman/pixman-combine32.h similarity index 100% rename from pixman/pixman/pixman-combine32.h rename to 3rd-party/pixman/pixman/pixman-combine32.h diff --git a/pixman/pixman/pixman-compiler.h b/3rd-party/pixman/pixman/pixman-compiler.h similarity index 100% rename from pixman/pixman/pixman-compiler.h rename to 3rd-party/pixman/pixman/pixman-compiler.h diff --git a/pixman/pixman/pixman-conical-gradient.c b/3rd-party/pixman/pixman/pixman-conical-gradient.c similarity index 100% rename from pixman/pixman/pixman-conical-gradient.c rename to 3rd-party/pixman/pixman/pixman-conical-gradient.c diff --git a/pixman/pixman/pixman-edge-accessors.c b/3rd-party/pixman/pixman/pixman-edge-accessors.c similarity index 100% rename from pixman/pixman/pixman-edge-accessors.c rename to 3rd-party/pixman/pixman/pixman-edge-accessors.c diff --git a/pixman/pixman/pixman-edge-imp.h b/3rd-party/pixman/pixman/pixman-edge-imp.h similarity index 100% rename from pixman/pixman/pixman-edge-imp.h rename to 3rd-party/pixman/pixman/pixman-edge-imp.h diff --git a/pixman/pixman/pixman-edge.c b/3rd-party/pixman/pixman/pixman-edge.c similarity index 100% rename from pixman/pixman/pixman-edge.c rename to 3rd-party/pixman/pixman/pixman-edge.c diff --git a/pixman/pixman/pixman-fast-path.c b/3rd-party/pixman/pixman/pixman-fast-path.c similarity index 100% rename from pixman/pixman/pixman-fast-path.c rename to 3rd-party/pixman/pixman/pixman-fast-path.c diff --git a/pixman/pixman/pixman-filter.c b/3rd-party/pixman/pixman/pixman-filter.c similarity index 100% rename from pixman/pixman/pixman-filter.c rename to 3rd-party/pixman/pixman/pixman-filter.c diff --git a/pixman/pixman/pixman-general.c b/3rd-party/pixman/pixman/pixman-general.c similarity index 100% rename from pixman/pixman/pixman-general.c rename to 3rd-party/pixman/pixman/pixman-general.c diff --git a/pixman/pixman/pixman-glyph.c b/3rd-party/pixman/pixman/pixman-glyph.c similarity index 100% rename from pixman/pixman/pixman-glyph.c rename to 3rd-party/pixman/pixman/pixman-glyph.c diff --git a/pixman/pixman/pixman-gradient-walker.c b/3rd-party/pixman/pixman/pixman-gradient-walker.c similarity index 100% rename from pixman/pixman/pixman-gradient-walker.c rename to 3rd-party/pixman/pixman/pixman-gradient-walker.c diff --git a/pixman/pixman/pixman-image.c b/3rd-party/pixman/pixman/pixman-image.c similarity index 100% rename from pixman/pixman/pixman-image.c rename to 3rd-party/pixman/pixman/pixman-image.c diff --git a/pixman/pixman/pixman-implementation.c b/3rd-party/pixman/pixman/pixman-implementation.c similarity index 100% rename from pixman/pixman/pixman-implementation.c rename to 3rd-party/pixman/pixman/pixman-implementation.c diff --git a/pixman/pixman/pixman-inlines.h b/3rd-party/pixman/pixman/pixman-inlines.h similarity index 100% rename from pixman/pixman/pixman-inlines.h rename to 3rd-party/pixman/pixman/pixman-inlines.h diff --git a/pixman/pixman/pixman-linear-gradient.c b/3rd-party/pixman/pixman/pixman-linear-gradient.c similarity index 100% rename from pixman/pixman/pixman-linear-gradient.c rename to 3rd-party/pixman/pixman/pixman-linear-gradient.c diff --git a/pixman/pixman/pixman-matrix.c b/3rd-party/pixman/pixman/pixman-matrix.c similarity index 100% rename from pixman/pixman/pixman-matrix.c rename to 3rd-party/pixman/pixman/pixman-matrix.c diff --git a/pixman/pixman/pixman-mips-dspr2-asm.S b/3rd-party/pixman/pixman/pixman-mips-dspr2-asm.S similarity index 100% rename from pixman/pixman/pixman-mips-dspr2-asm.S rename to 3rd-party/pixman/pixman/pixman-mips-dspr2-asm.S diff --git a/pixman/pixman/pixman-mips-dspr2-asm.h b/3rd-party/pixman/pixman/pixman-mips-dspr2-asm.h similarity index 100% rename from pixman/pixman/pixman-mips-dspr2-asm.h rename to 3rd-party/pixman/pixman/pixman-mips-dspr2-asm.h diff --git a/pixman/pixman/pixman-mips-dspr2.c b/3rd-party/pixman/pixman/pixman-mips-dspr2.c similarity index 100% rename from pixman/pixman/pixman-mips-dspr2.c rename to 3rd-party/pixman/pixman/pixman-mips-dspr2.c diff --git a/pixman/pixman/pixman-mips-dspr2.h b/3rd-party/pixman/pixman/pixman-mips-dspr2.h similarity index 100% rename from pixman/pixman/pixman-mips-dspr2.h rename to 3rd-party/pixman/pixman/pixman-mips-dspr2.h diff --git a/pixman/pixman/pixman-mips-memcpy-asm.S b/3rd-party/pixman/pixman/pixman-mips-memcpy-asm.S similarity index 100% rename from pixman/pixman/pixman-mips-memcpy-asm.S rename to 3rd-party/pixman/pixman/pixman-mips-memcpy-asm.S diff --git a/pixman/pixman/pixman-mips.c b/3rd-party/pixman/pixman/pixman-mips.c similarity index 100% rename from pixman/pixman/pixman-mips.c rename to 3rd-party/pixman/pixman/pixman-mips.c diff --git a/pixman/pixman/pixman-mmx.c b/3rd-party/pixman/pixman/pixman-mmx.c similarity index 100% rename from pixman/pixman/pixman-mmx.c rename to 3rd-party/pixman/pixman/pixman-mmx.c diff --git a/pixman/pixman/pixman-noop.c b/3rd-party/pixman/pixman/pixman-noop.c similarity index 100% rename from pixman/pixman/pixman-noop.c rename to 3rd-party/pixman/pixman/pixman-noop.c diff --git a/pixman/pixman/pixman-ppc.c b/3rd-party/pixman/pixman/pixman-ppc.c similarity index 100% rename from pixman/pixman/pixman-ppc.c rename to 3rd-party/pixman/pixman/pixman-ppc.c diff --git a/pixman/pixman/pixman-private.h b/3rd-party/pixman/pixman/pixman-private.h similarity index 100% rename from pixman/pixman/pixman-private.h rename to 3rd-party/pixman/pixman/pixman-private.h diff --git a/pixman/pixman/pixman-radial-gradient.c b/3rd-party/pixman/pixman/pixman-radial-gradient.c similarity index 100% rename from pixman/pixman/pixman-radial-gradient.c rename to 3rd-party/pixman/pixman/pixman-radial-gradient.c diff --git a/pixman/pixman/pixman-region.c b/3rd-party/pixman/pixman/pixman-region.c similarity index 100% rename from pixman/pixman/pixman-region.c rename to 3rd-party/pixman/pixman/pixman-region.c diff --git a/pixman/pixman/pixman-region16.c b/3rd-party/pixman/pixman/pixman-region16.c similarity index 100% rename from pixman/pixman/pixman-region16.c rename to 3rd-party/pixman/pixman/pixman-region16.c diff --git a/pixman/pixman/pixman-region32.c b/3rd-party/pixman/pixman/pixman-region32.c similarity index 100% rename from pixman/pixman/pixman-region32.c rename to 3rd-party/pixman/pixman/pixman-region32.c diff --git a/pixman/pixman/pixman-solid-fill.c b/3rd-party/pixman/pixman/pixman-solid-fill.c similarity index 100% rename from pixman/pixman/pixman-solid-fill.c rename to 3rd-party/pixman/pixman/pixman-solid-fill.c diff --git a/pixman/pixman/pixman-sse2.c b/3rd-party/pixman/pixman/pixman-sse2.c similarity index 100% rename from pixman/pixman/pixman-sse2.c rename to 3rd-party/pixman/pixman/pixman-sse2.c diff --git a/pixman/pixman/pixman-ssse3.c b/3rd-party/pixman/pixman/pixman-ssse3.c similarity index 100% rename from pixman/pixman/pixman-ssse3.c rename to 3rd-party/pixman/pixman/pixman-ssse3.c diff --git a/pixman/pixman/pixman-timer.c b/3rd-party/pixman/pixman/pixman-timer.c similarity index 100% rename from pixman/pixman/pixman-timer.c rename to 3rd-party/pixman/pixman/pixman-timer.c diff --git a/pixman/pixman/pixman-trap.c b/3rd-party/pixman/pixman/pixman-trap.c similarity index 100% rename from pixman/pixman/pixman-trap.c rename to 3rd-party/pixman/pixman/pixman-trap.c diff --git a/pixman/pixman/pixman-utils.c b/3rd-party/pixman/pixman/pixman-utils.c similarity index 100% rename from pixman/pixman/pixman-utils.c rename to 3rd-party/pixman/pixman/pixman-utils.c diff --git a/pixman/pixman/pixman-version.h b/3rd-party/pixman/pixman/pixman-version.h similarity index 100% rename from pixman/pixman/pixman-version.h rename to 3rd-party/pixman/pixman/pixman-version.h diff --git a/pixman/pixman/pixman-version.h.in b/3rd-party/pixman/pixman/pixman-version.h.in similarity index 100% rename from pixman/pixman/pixman-version.h.in rename to 3rd-party/pixman/pixman/pixman-version.h.in diff --git a/pixman/pixman/pixman-vmx.c b/3rd-party/pixman/pixman/pixman-vmx.c similarity index 100% rename from pixman/pixman/pixman-vmx.c rename to 3rd-party/pixman/pixman/pixman-vmx.c diff --git a/pixman/pixman/pixman-x86.c b/3rd-party/pixman/pixman/pixman-x86.c similarity index 100% rename from pixman/pixman/pixman-x86.c rename to 3rd-party/pixman/pixman/pixman-x86.c diff --git a/pixman/pixman/pixman.c b/3rd-party/pixman/pixman/pixman.c similarity index 100% rename from pixman/pixman/pixman.c rename to 3rd-party/pixman/pixman/pixman.c diff --git a/pixman/pixman/pixman.h b/3rd-party/pixman/pixman/pixman.h similarity index 100% rename from pixman/pixman/pixman.h rename to 3rd-party/pixman/pixman/pixman.h diff --git a/pixman/pixman/rounding.txt b/3rd-party/pixman/pixman/rounding.txt similarity index 100% rename from pixman/pixman/rounding.txt rename to 3rd-party/pixman/pixman/rounding.txt diff --git a/pixman/pixman/solaris-hwcap.mapfile b/3rd-party/pixman/pixman/solaris-hwcap.mapfile similarity index 100% rename from pixman/pixman/solaris-hwcap.mapfile rename to 3rd-party/pixman/pixman/solaris-hwcap.mapfile diff --git a/pixman/test/Makefile.am b/3rd-party/pixman/test/Makefile.am similarity index 100% rename from pixman/test/Makefile.am rename to 3rd-party/pixman/test/Makefile.am diff --git a/pixman/test/Makefile.sources b/3rd-party/pixman/test/Makefile.sources similarity index 100% rename from pixman/test/Makefile.sources rename to 3rd-party/pixman/test/Makefile.sources diff --git a/pixman/test/Makefile.win32 b/3rd-party/pixman/test/Makefile.win32 similarity index 100% rename from pixman/test/Makefile.win32 rename to 3rd-party/pixman/test/Makefile.win32 diff --git a/pixman/test/a1-trap-test.c b/3rd-party/pixman/test/a1-trap-test.c similarity index 100% rename from pixman/test/a1-trap-test.c rename to 3rd-party/pixman/test/a1-trap-test.c diff --git a/pixman/test/affine-test.c b/3rd-party/pixman/test/affine-test.c similarity index 100% rename from pixman/test/affine-test.c rename to 3rd-party/pixman/test/affine-test.c diff --git a/pixman/test/alpha-loop.c b/3rd-party/pixman/test/alpha-loop.c similarity index 100% rename from pixman/test/alpha-loop.c rename to 3rd-party/pixman/test/alpha-loop.c diff --git a/pixman/test/alphamap.c b/3rd-party/pixman/test/alphamap.c similarity index 100% rename from pixman/test/alphamap.c rename to 3rd-party/pixman/test/alphamap.c diff --git a/pixman/test/blitters-test.c b/3rd-party/pixman/test/blitters-test.c similarity index 100% rename from pixman/test/blitters-test.c rename to 3rd-party/pixman/test/blitters-test.c diff --git a/pixman/test/check-formats.c b/3rd-party/pixman/test/check-formats.c similarity index 100% rename from pixman/test/check-formats.c rename to 3rd-party/pixman/test/check-formats.c diff --git a/pixman/test/combiner-test.c b/3rd-party/pixman/test/combiner-test.c similarity index 100% rename from pixman/test/combiner-test.c rename to 3rd-party/pixman/test/combiner-test.c diff --git a/pixman/test/composite-traps-test.c b/3rd-party/pixman/test/composite-traps-test.c similarity index 100% rename from pixman/test/composite-traps-test.c rename to 3rd-party/pixman/test/composite-traps-test.c diff --git a/pixman/test/composite.c b/3rd-party/pixman/test/composite.c similarity index 100% rename from pixman/test/composite.c rename to 3rd-party/pixman/test/composite.c diff --git a/pixman/test/fetch-test.c b/3rd-party/pixman/test/fetch-test.c similarity index 100% rename from pixman/test/fetch-test.c rename to 3rd-party/pixman/test/fetch-test.c diff --git a/pixman/test/fuzzer-find-diff.pl b/3rd-party/pixman/test/fuzzer-find-diff.pl similarity index 100% rename from pixman/test/fuzzer-find-diff.pl rename to 3rd-party/pixman/test/fuzzer-find-diff.pl diff --git a/pixman/test/glyph-test.c b/3rd-party/pixman/test/glyph-test.c similarity index 100% rename from pixman/test/glyph-test.c rename to 3rd-party/pixman/test/glyph-test.c diff --git a/pixman/test/gradient-crash-test.c b/3rd-party/pixman/test/gradient-crash-test.c similarity index 100% rename from pixman/test/gradient-crash-test.c rename to 3rd-party/pixman/test/gradient-crash-test.c diff --git a/pixman/test/infinite-loop.c b/3rd-party/pixman/test/infinite-loop.c similarity index 100% rename from pixman/test/infinite-loop.c rename to 3rd-party/pixman/test/infinite-loop.c diff --git a/pixman/test/lowlevel-blt-bench.c b/3rd-party/pixman/test/lowlevel-blt-bench.c similarity index 100% rename from pixman/test/lowlevel-blt-bench.c rename to 3rd-party/pixman/test/lowlevel-blt-bench.c diff --git a/pixman/test/matrix-test.c b/3rd-party/pixman/test/matrix-test.c similarity index 100% rename from pixman/test/matrix-test.c rename to 3rd-party/pixman/test/matrix-test.c diff --git a/pixman/test/oob-test.c b/3rd-party/pixman/test/oob-test.c similarity index 100% rename from pixman/test/oob-test.c rename to 3rd-party/pixman/test/oob-test.c diff --git a/pixman/test/pdf-op-test.c b/3rd-party/pixman/test/pdf-op-test.c similarity index 100% rename from pixman/test/pdf-op-test.c rename to 3rd-party/pixman/test/pdf-op-test.c diff --git a/pixman/test/pixel-test.c b/3rd-party/pixman/test/pixel-test.c similarity index 100% rename from pixman/test/pixel-test.c rename to 3rd-party/pixman/test/pixel-test.c diff --git a/pixman/test/prng-test.c b/3rd-party/pixman/test/prng-test.c similarity index 100% rename from pixman/test/prng-test.c rename to 3rd-party/pixman/test/prng-test.c diff --git a/pixman/test/radial-perf-test.c b/3rd-party/pixman/test/radial-perf-test.c similarity index 100% rename from pixman/test/radial-perf-test.c rename to 3rd-party/pixman/test/radial-perf-test.c diff --git a/pixman/test/region-contains-test.c b/3rd-party/pixman/test/region-contains-test.c similarity index 100% rename from pixman/test/region-contains-test.c rename to 3rd-party/pixman/test/region-contains-test.c diff --git a/pixman/test/region-test.c b/3rd-party/pixman/test/region-test.c similarity index 100% rename from pixman/test/region-test.c rename to 3rd-party/pixman/test/region-test.c diff --git a/pixman/test/region-translate-test.c b/3rd-party/pixman/test/region-translate-test.c similarity index 100% rename from pixman/test/region-translate-test.c rename to 3rd-party/pixman/test/region-translate-test.c diff --git a/pixman/test/rotate-test.c b/3rd-party/pixman/test/rotate-test.c similarity index 100% rename from pixman/test/rotate-test.c rename to 3rd-party/pixman/test/rotate-test.c diff --git a/pixman/test/scaling-bench.c b/3rd-party/pixman/test/scaling-bench.c similarity index 100% rename from pixman/test/scaling-bench.c rename to 3rd-party/pixman/test/scaling-bench.c diff --git a/pixman/test/scaling-crash-test.c b/3rd-party/pixman/test/scaling-crash-test.c similarity index 100% rename from pixman/test/scaling-crash-test.c rename to 3rd-party/pixman/test/scaling-crash-test.c diff --git a/pixman/test/scaling-helpers-test.c b/3rd-party/pixman/test/scaling-helpers-test.c similarity index 100% rename from pixman/test/scaling-helpers-test.c rename to 3rd-party/pixman/test/scaling-helpers-test.c diff --git a/pixman/test/scaling-test.c b/3rd-party/pixman/test/scaling-test.c similarity index 100% rename from pixman/test/scaling-test.c rename to 3rd-party/pixman/test/scaling-test.c diff --git a/pixman/test/stress-test.c b/3rd-party/pixman/test/stress-test.c similarity index 100% rename from pixman/test/stress-test.c rename to 3rd-party/pixman/test/stress-test.c diff --git a/pixman/test/thread-test.c b/3rd-party/pixman/test/thread-test.c similarity index 100% rename from pixman/test/thread-test.c rename to 3rd-party/pixman/test/thread-test.c diff --git a/pixman/test/trap-crasher.c b/3rd-party/pixman/test/trap-crasher.c similarity index 100% rename from pixman/test/trap-crasher.c rename to 3rd-party/pixman/test/trap-crasher.c diff --git a/pixman/test/utils-prng.c b/3rd-party/pixman/test/utils-prng.c similarity index 100% rename from pixman/test/utils-prng.c rename to 3rd-party/pixman/test/utils-prng.c diff --git a/pixman/test/utils-prng.h b/3rd-party/pixman/test/utils-prng.h similarity index 100% rename from pixman/test/utils-prng.h rename to 3rd-party/pixman/test/utils-prng.h diff --git a/pixman/test/utils.c b/3rd-party/pixman/test/utils.c similarity index 100% rename from pixman/test/utils.c rename to 3rd-party/pixman/test/utils.c diff --git a/pixman/test/utils.h b/3rd-party/pixman/test/utils.h similarity index 100% rename from pixman/test/utils.h rename to 3rd-party/pixman/test/utils.h diff --git a/zlib-1.2.8/CMakeLists.txt b/3rd-party/zlib/CMakeLists.txt similarity index 100% rename from zlib-1.2.8/CMakeLists.txt rename to 3rd-party/zlib/CMakeLists.txt diff --git a/zlib-1.2.8/ChangeLog b/3rd-party/zlib/ChangeLog similarity index 100% rename from zlib-1.2.8/ChangeLog rename to 3rd-party/zlib/ChangeLog diff --git a/zlib-1.2.8/FAQ b/3rd-party/zlib/FAQ similarity index 100% rename from zlib-1.2.8/FAQ rename to 3rd-party/zlib/FAQ diff --git a/zlib-1.2.8/INDEX b/3rd-party/zlib/INDEX similarity index 100% rename from zlib-1.2.8/INDEX rename to 3rd-party/zlib/INDEX diff --git a/zlib-1.2.8/Makefile b/3rd-party/zlib/Makefile similarity index 100% rename from zlib-1.2.8/Makefile rename to 3rd-party/zlib/Makefile diff --git a/zlib-1.2.8/Makefile.in b/3rd-party/zlib/Makefile.in similarity index 100% rename from zlib-1.2.8/Makefile.in rename to 3rd-party/zlib/Makefile.in diff --git a/zlib-1.2.8/README b/3rd-party/zlib/README similarity index 100% rename from zlib-1.2.8/README rename to 3rd-party/zlib/README diff --git a/zlib-1.2.8/adler32.c b/3rd-party/zlib/adler32.c similarity index 100% rename from zlib-1.2.8/adler32.c rename to 3rd-party/zlib/adler32.c diff --git a/zlib-1.2.8/amiga/Makefile.pup b/3rd-party/zlib/amiga/Makefile.pup similarity index 100% rename from zlib-1.2.8/amiga/Makefile.pup rename to 3rd-party/zlib/amiga/Makefile.pup diff --git a/zlib-1.2.8/amiga/Makefile.sas b/3rd-party/zlib/amiga/Makefile.sas similarity index 100% rename from zlib-1.2.8/amiga/Makefile.sas rename to 3rd-party/zlib/amiga/Makefile.sas diff --git a/zlib-1.2.8/as400/bndsrc b/3rd-party/zlib/as400/bndsrc similarity index 100% rename from zlib-1.2.8/as400/bndsrc rename to 3rd-party/zlib/as400/bndsrc diff --git a/zlib-1.2.8/as400/compile.clp b/3rd-party/zlib/as400/compile.clp similarity index 100% rename from zlib-1.2.8/as400/compile.clp rename to 3rd-party/zlib/as400/compile.clp diff --git a/zlib-1.2.8/as400/readme.txt b/3rd-party/zlib/as400/readme.txt similarity index 100% rename from zlib-1.2.8/as400/readme.txt rename to 3rd-party/zlib/as400/readme.txt diff --git a/zlib-1.2.8/as400/zlib.inc b/3rd-party/zlib/as400/zlib.inc similarity index 100% rename from zlib-1.2.8/as400/zlib.inc rename to 3rd-party/zlib/as400/zlib.inc diff --git a/zlib-1.2.8/compress.c b/3rd-party/zlib/compress.c similarity index 100% rename from zlib-1.2.8/compress.c rename to 3rd-party/zlib/compress.c diff --git a/zlib-1.2.8/configure b/3rd-party/zlib/configure similarity index 100% rename from zlib-1.2.8/configure rename to 3rd-party/zlib/configure diff --git a/zlib-1.2.8/contrib/README.contrib b/3rd-party/zlib/contrib/README.contrib similarity index 100% rename from zlib-1.2.8/contrib/README.contrib rename to 3rd-party/zlib/contrib/README.contrib diff --git a/zlib-1.2.8/contrib/ada/buffer_demo.adb b/3rd-party/zlib/contrib/ada/buffer_demo.adb similarity index 100% rename from zlib-1.2.8/contrib/ada/buffer_demo.adb rename to 3rd-party/zlib/contrib/ada/buffer_demo.adb diff --git a/zlib-1.2.8/contrib/ada/mtest.adb b/3rd-party/zlib/contrib/ada/mtest.adb similarity index 100% rename from zlib-1.2.8/contrib/ada/mtest.adb rename to 3rd-party/zlib/contrib/ada/mtest.adb diff --git a/zlib-1.2.8/contrib/ada/read.adb b/3rd-party/zlib/contrib/ada/read.adb similarity index 100% rename from zlib-1.2.8/contrib/ada/read.adb rename to 3rd-party/zlib/contrib/ada/read.adb diff --git a/zlib-1.2.8/contrib/ada/readme.txt b/3rd-party/zlib/contrib/ada/readme.txt similarity index 100% rename from zlib-1.2.8/contrib/ada/readme.txt rename to 3rd-party/zlib/contrib/ada/readme.txt diff --git a/zlib-1.2.8/contrib/ada/test.adb b/3rd-party/zlib/contrib/ada/test.adb similarity index 100% rename from zlib-1.2.8/contrib/ada/test.adb rename to 3rd-party/zlib/contrib/ada/test.adb diff --git a/zlib-1.2.8/contrib/ada/zlib-streams.adb b/3rd-party/zlib/contrib/ada/zlib-streams.adb similarity index 100% rename from zlib-1.2.8/contrib/ada/zlib-streams.adb rename to 3rd-party/zlib/contrib/ada/zlib-streams.adb diff --git a/zlib-1.2.8/contrib/ada/zlib-streams.ads b/3rd-party/zlib/contrib/ada/zlib-streams.ads similarity index 100% rename from zlib-1.2.8/contrib/ada/zlib-streams.ads rename to 3rd-party/zlib/contrib/ada/zlib-streams.ads diff --git a/zlib-1.2.8/contrib/ada/zlib-thin.adb b/3rd-party/zlib/contrib/ada/zlib-thin.adb similarity index 100% rename from zlib-1.2.8/contrib/ada/zlib-thin.adb rename to 3rd-party/zlib/contrib/ada/zlib-thin.adb diff --git a/zlib-1.2.8/contrib/ada/zlib-thin.ads b/3rd-party/zlib/contrib/ada/zlib-thin.ads similarity index 100% rename from zlib-1.2.8/contrib/ada/zlib-thin.ads rename to 3rd-party/zlib/contrib/ada/zlib-thin.ads diff --git a/zlib-1.2.8/contrib/ada/zlib.adb b/3rd-party/zlib/contrib/ada/zlib.adb similarity index 100% rename from zlib-1.2.8/contrib/ada/zlib.adb rename to 3rd-party/zlib/contrib/ada/zlib.adb diff --git a/zlib-1.2.8/contrib/ada/zlib.ads b/3rd-party/zlib/contrib/ada/zlib.ads similarity index 100% rename from zlib-1.2.8/contrib/ada/zlib.ads rename to 3rd-party/zlib/contrib/ada/zlib.ads diff --git a/zlib-1.2.8/contrib/ada/zlib.gpr b/3rd-party/zlib/contrib/ada/zlib.gpr similarity index 100% rename from zlib-1.2.8/contrib/ada/zlib.gpr rename to 3rd-party/zlib/contrib/ada/zlib.gpr diff --git a/zlib-1.2.8/contrib/amd64/amd64-match.S b/3rd-party/zlib/contrib/amd64/amd64-match.S similarity index 100% rename from zlib-1.2.8/contrib/amd64/amd64-match.S rename to 3rd-party/zlib/contrib/amd64/amd64-match.S diff --git a/zlib-1.2.8/contrib/asm686/README.686 b/3rd-party/zlib/contrib/asm686/README.686 similarity index 100% rename from zlib-1.2.8/contrib/asm686/README.686 rename to 3rd-party/zlib/contrib/asm686/README.686 diff --git a/zlib-1.2.8/contrib/asm686/match.S b/3rd-party/zlib/contrib/asm686/match.S similarity index 100% rename from zlib-1.2.8/contrib/asm686/match.S rename to 3rd-party/zlib/contrib/asm686/match.S diff --git a/zlib-1.2.8/contrib/blast/Makefile b/3rd-party/zlib/contrib/blast/Makefile similarity index 100% rename from zlib-1.2.8/contrib/blast/Makefile rename to 3rd-party/zlib/contrib/blast/Makefile diff --git a/zlib-1.2.8/contrib/blast/README b/3rd-party/zlib/contrib/blast/README similarity index 100% rename from zlib-1.2.8/contrib/blast/README rename to 3rd-party/zlib/contrib/blast/README diff --git a/zlib-1.2.8/contrib/blast/blast.c b/3rd-party/zlib/contrib/blast/blast.c similarity index 100% rename from zlib-1.2.8/contrib/blast/blast.c rename to 3rd-party/zlib/contrib/blast/blast.c diff --git a/zlib-1.2.8/contrib/blast/blast.h b/3rd-party/zlib/contrib/blast/blast.h similarity index 100% rename from zlib-1.2.8/contrib/blast/blast.h rename to 3rd-party/zlib/contrib/blast/blast.h diff --git a/zlib-1.2.8/contrib/blast/test.pk b/3rd-party/zlib/contrib/blast/test.pk similarity index 100% rename from zlib-1.2.8/contrib/blast/test.pk rename to 3rd-party/zlib/contrib/blast/test.pk diff --git a/zlib-1.2.8/contrib/blast/test.txt b/3rd-party/zlib/contrib/blast/test.txt similarity index 100% rename from zlib-1.2.8/contrib/blast/test.txt rename to 3rd-party/zlib/contrib/blast/test.txt diff --git a/zlib-1.2.8/contrib/delphi/ZLib.pas b/3rd-party/zlib/contrib/delphi/ZLib.pas similarity index 100% rename from zlib-1.2.8/contrib/delphi/ZLib.pas rename to 3rd-party/zlib/contrib/delphi/ZLib.pas diff --git a/zlib-1.2.8/contrib/delphi/ZLibConst.pas b/3rd-party/zlib/contrib/delphi/ZLibConst.pas similarity index 100% rename from zlib-1.2.8/contrib/delphi/ZLibConst.pas rename to 3rd-party/zlib/contrib/delphi/ZLibConst.pas diff --git a/zlib-1.2.8/contrib/delphi/readme.txt b/3rd-party/zlib/contrib/delphi/readme.txt similarity index 100% rename from zlib-1.2.8/contrib/delphi/readme.txt rename to 3rd-party/zlib/contrib/delphi/readme.txt diff --git a/zlib-1.2.8/contrib/delphi/zlibd32.mak b/3rd-party/zlib/contrib/delphi/zlibd32.mak similarity index 100% rename from zlib-1.2.8/contrib/delphi/zlibd32.mak rename to 3rd-party/zlib/contrib/delphi/zlibd32.mak diff --git a/zlib-1.2.8/contrib/dotzlib/DotZLib.build b/3rd-party/zlib/contrib/dotzlib/DotZLib.build similarity index 100% rename from zlib-1.2.8/contrib/dotzlib/DotZLib.build rename to 3rd-party/zlib/contrib/dotzlib/DotZLib.build diff --git a/zlib-1.2.8/contrib/dotzlib/DotZLib.chm b/3rd-party/zlib/contrib/dotzlib/DotZLib.chm similarity index 100% rename from zlib-1.2.8/contrib/dotzlib/DotZLib.chm rename to 3rd-party/zlib/contrib/dotzlib/DotZLib.chm diff --git a/zlib-1.2.8/contrib/dotzlib/DotZLib.sln b/3rd-party/zlib/contrib/dotzlib/DotZLib.sln similarity index 100% rename from zlib-1.2.8/contrib/dotzlib/DotZLib.sln rename to 3rd-party/zlib/contrib/dotzlib/DotZLib.sln diff --git a/zlib-1.2.8/contrib/dotzlib/DotZLib/AssemblyInfo.cs b/3rd-party/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs similarity index 100% rename from zlib-1.2.8/contrib/dotzlib/DotZLib/AssemblyInfo.cs rename to 3rd-party/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs diff --git a/zlib-1.2.8/contrib/dotzlib/DotZLib/ChecksumImpl.cs b/3rd-party/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs similarity index 100% rename from zlib-1.2.8/contrib/dotzlib/DotZLib/ChecksumImpl.cs rename to 3rd-party/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs diff --git a/zlib-1.2.8/contrib/dotzlib/DotZLib/CircularBuffer.cs b/3rd-party/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs similarity index 100% rename from zlib-1.2.8/contrib/dotzlib/DotZLib/CircularBuffer.cs rename to 3rd-party/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs diff --git a/zlib-1.2.8/contrib/dotzlib/DotZLib/CodecBase.cs b/3rd-party/zlib/contrib/dotzlib/DotZLib/CodecBase.cs similarity index 100% rename from zlib-1.2.8/contrib/dotzlib/DotZLib/CodecBase.cs rename to 3rd-party/zlib/contrib/dotzlib/DotZLib/CodecBase.cs diff --git a/zlib-1.2.8/contrib/dotzlib/DotZLib/Deflater.cs b/3rd-party/zlib/contrib/dotzlib/DotZLib/Deflater.cs similarity index 100% rename from zlib-1.2.8/contrib/dotzlib/DotZLib/Deflater.cs rename to 3rd-party/zlib/contrib/dotzlib/DotZLib/Deflater.cs diff --git a/zlib-1.2.8/contrib/dotzlib/DotZLib/DotZLib.cs b/3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.cs similarity index 100% rename from zlib-1.2.8/contrib/dotzlib/DotZLib/DotZLib.cs rename to 3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.cs diff --git a/zlib-1.2.8/contrib/dotzlib/DotZLib/DotZLib.csproj b/3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj similarity index 100% rename from zlib-1.2.8/contrib/dotzlib/DotZLib/DotZLib.csproj rename to 3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj diff --git a/zlib-1.2.8/contrib/dotzlib/DotZLib/GZipStream.cs b/3rd-party/zlib/contrib/dotzlib/DotZLib/GZipStream.cs similarity index 100% rename from zlib-1.2.8/contrib/dotzlib/DotZLib/GZipStream.cs rename to 3rd-party/zlib/contrib/dotzlib/DotZLib/GZipStream.cs diff --git a/zlib-1.2.8/contrib/dotzlib/DotZLib/Inflater.cs b/3rd-party/zlib/contrib/dotzlib/DotZLib/Inflater.cs similarity index 100% rename from zlib-1.2.8/contrib/dotzlib/DotZLib/Inflater.cs rename to 3rd-party/zlib/contrib/dotzlib/DotZLib/Inflater.cs diff --git a/zlib-1.2.8/contrib/dotzlib/DotZLib/UnitTests.cs b/3rd-party/zlib/contrib/dotzlib/DotZLib/UnitTests.cs similarity index 100% rename from zlib-1.2.8/contrib/dotzlib/DotZLib/UnitTests.cs rename to 3rd-party/zlib/contrib/dotzlib/DotZLib/UnitTests.cs diff --git a/zlib-1.2.8/contrib/dotzlib/LICENSE_1_0.txt b/3rd-party/zlib/contrib/dotzlib/LICENSE_1_0.txt similarity index 100% rename from zlib-1.2.8/contrib/dotzlib/LICENSE_1_0.txt rename to 3rd-party/zlib/contrib/dotzlib/LICENSE_1_0.txt diff --git a/zlib-1.2.8/contrib/dotzlib/readme.txt b/3rd-party/zlib/contrib/dotzlib/readme.txt similarity index 100% rename from zlib-1.2.8/contrib/dotzlib/readme.txt rename to 3rd-party/zlib/contrib/dotzlib/readme.txt diff --git a/zlib-1.2.8/contrib/gcc_gvmat64/gvmat64.S b/3rd-party/zlib/contrib/gcc_gvmat64/gvmat64.S similarity index 100% rename from zlib-1.2.8/contrib/gcc_gvmat64/gvmat64.S rename to 3rd-party/zlib/contrib/gcc_gvmat64/gvmat64.S diff --git a/zlib-1.2.8/contrib/infback9/README b/3rd-party/zlib/contrib/infback9/README similarity index 100% rename from zlib-1.2.8/contrib/infback9/README rename to 3rd-party/zlib/contrib/infback9/README diff --git a/zlib-1.2.8/contrib/infback9/infback9.c b/3rd-party/zlib/contrib/infback9/infback9.c similarity index 100% rename from zlib-1.2.8/contrib/infback9/infback9.c rename to 3rd-party/zlib/contrib/infback9/infback9.c diff --git a/zlib-1.2.8/contrib/infback9/infback9.h b/3rd-party/zlib/contrib/infback9/infback9.h similarity index 100% rename from zlib-1.2.8/contrib/infback9/infback9.h rename to 3rd-party/zlib/contrib/infback9/infback9.h diff --git a/zlib-1.2.8/contrib/infback9/inffix9.h b/3rd-party/zlib/contrib/infback9/inffix9.h similarity index 100% rename from zlib-1.2.8/contrib/infback9/inffix9.h rename to 3rd-party/zlib/contrib/infback9/inffix9.h diff --git a/zlib-1.2.8/contrib/infback9/inflate9.h b/3rd-party/zlib/contrib/infback9/inflate9.h similarity index 100% rename from zlib-1.2.8/contrib/infback9/inflate9.h rename to 3rd-party/zlib/contrib/infback9/inflate9.h diff --git a/zlib-1.2.8/contrib/infback9/inftree9.c b/3rd-party/zlib/contrib/infback9/inftree9.c similarity index 100% rename from zlib-1.2.8/contrib/infback9/inftree9.c rename to 3rd-party/zlib/contrib/infback9/inftree9.c diff --git a/zlib-1.2.8/contrib/infback9/inftree9.h b/3rd-party/zlib/contrib/infback9/inftree9.h similarity index 100% rename from zlib-1.2.8/contrib/infback9/inftree9.h rename to 3rd-party/zlib/contrib/infback9/inftree9.h diff --git a/zlib-1.2.8/contrib/inflate86/inffas86.c b/3rd-party/zlib/contrib/inflate86/inffas86.c similarity index 100% rename from zlib-1.2.8/contrib/inflate86/inffas86.c rename to 3rd-party/zlib/contrib/inflate86/inffas86.c diff --git a/zlib-1.2.8/contrib/inflate86/inffast.S b/3rd-party/zlib/contrib/inflate86/inffast.S similarity index 100% rename from zlib-1.2.8/contrib/inflate86/inffast.S rename to 3rd-party/zlib/contrib/inflate86/inffast.S diff --git a/zlib-1.2.8/contrib/iostream/test.cpp b/3rd-party/zlib/contrib/iostream/test.cpp similarity index 100% rename from zlib-1.2.8/contrib/iostream/test.cpp rename to 3rd-party/zlib/contrib/iostream/test.cpp diff --git a/zlib-1.2.8/contrib/iostream/zfstream.cpp b/3rd-party/zlib/contrib/iostream/zfstream.cpp similarity index 100% rename from zlib-1.2.8/contrib/iostream/zfstream.cpp rename to 3rd-party/zlib/contrib/iostream/zfstream.cpp diff --git a/zlib-1.2.8/contrib/iostream/zfstream.h b/3rd-party/zlib/contrib/iostream/zfstream.h similarity index 100% rename from zlib-1.2.8/contrib/iostream/zfstream.h rename to 3rd-party/zlib/contrib/iostream/zfstream.h diff --git a/zlib-1.2.8/contrib/iostream2/zstream.h b/3rd-party/zlib/contrib/iostream2/zstream.h similarity index 100% rename from zlib-1.2.8/contrib/iostream2/zstream.h rename to 3rd-party/zlib/contrib/iostream2/zstream.h diff --git a/zlib-1.2.8/contrib/iostream2/zstream_test.cpp b/3rd-party/zlib/contrib/iostream2/zstream_test.cpp similarity index 100% rename from zlib-1.2.8/contrib/iostream2/zstream_test.cpp rename to 3rd-party/zlib/contrib/iostream2/zstream_test.cpp diff --git a/zlib-1.2.8/contrib/iostream3/README b/3rd-party/zlib/contrib/iostream3/README similarity index 100% rename from zlib-1.2.8/contrib/iostream3/README rename to 3rd-party/zlib/contrib/iostream3/README diff --git a/zlib-1.2.8/contrib/iostream3/TODO b/3rd-party/zlib/contrib/iostream3/TODO similarity index 100% rename from zlib-1.2.8/contrib/iostream3/TODO rename to 3rd-party/zlib/contrib/iostream3/TODO diff --git a/zlib-1.2.8/contrib/iostream3/test.cc b/3rd-party/zlib/contrib/iostream3/test.cc similarity index 100% rename from zlib-1.2.8/contrib/iostream3/test.cc rename to 3rd-party/zlib/contrib/iostream3/test.cc diff --git a/zlib-1.2.8/contrib/iostream3/zfstream.cc b/3rd-party/zlib/contrib/iostream3/zfstream.cc similarity index 100% rename from zlib-1.2.8/contrib/iostream3/zfstream.cc rename to 3rd-party/zlib/contrib/iostream3/zfstream.cc diff --git a/zlib-1.2.8/contrib/iostream3/zfstream.h b/3rd-party/zlib/contrib/iostream3/zfstream.h similarity index 100% rename from zlib-1.2.8/contrib/iostream3/zfstream.h rename to 3rd-party/zlib/contrib/iostream3/zfstream.h diff --git a/zlib-1.2.8/contrib/masmx64/bld_ml64.bat b/3rd-party/zlib/contrib/masmx64/bld_ml64.bat similarity index 100% rename from zlib-1.2.8/contrib/masmx64/bld_ml64.bat rename to 3rd-party/zlib/contrib/masmx64/bld_ml64.bat diff --git a/zlib-1.2.8/contrib/masmx64/gvmat64.asm b/3rd-party/zlib/contrib/masmx64/gvmat64.asm similarity index 100% rename from zlib-1.2.8/contrib/masmx64/gvmat64.asm rename to 3rd-party/zlib/contrib/masmx64/gvmat64.asm diff --git a/zlib-1.2.8/contrib/masmx64/inffas8664.c b/3rd-party/zlib/contrib/masmx64/inffas8664.c similarity index 100% rename from zlib-1.2.8/contrib/masmx64/inffas8664.c rename to 3rd-party/zlib/contrib/masmx64/inffas8664.c diff --git a/zlib-1.2.8/contrib/masmx64/inffasx64.asm b/3rd-party/zlib/contrib/masmx64/inffasx64.asm similarity index 100% rename from zlib-1.2.8/contrib/masmx64/inffasx64.asm rename to 3rd-party/zlib/contrib/masmx64/inffasx64.asm diff --git a/zlib-1.2.8/contrib/masmx64/readme.txt b/3rd-party/zlib/contrib/masmx64/readme.txt similarity index 100% rename from zlib-1.2.8/contrib/masmx64/readme.txt rename to 3rd-party/zlib/contrib/masmx64/readme.txt diff --git a/zlib-1.2.8/contrib/masmx86/bld_ml32.bat b/3rd-party/zlib/contrib/masmx86/bld_ml32.bat similarity index 100% rename from zlib-1.2.8/contrib/masmx86/bld_ml32.bat rename to 3rd-party/zlib/contrib/masmx86/bld_ml32.bat diff --git a/zlib-1.2.8/contrib/masmx86/inffas32.asm b/3rd-party/zlib/contrib/masmx86/inffas32.asm similarity index 100% rename from zlib-1.2.8/contrib/masmx86/inffas32.asm rename to 3rd-party/zlib/contrib/masmx86/inffas32.asm diff --git a/zlib-1.2.8/contrib/masmx86/match686.asm b/3rd-party/zlib/contrib/masmx86/match686.asm similarity index 100% rename from zlib-1.2.8/contrib/masmx86/match686.asm rename to 3rd-party/zlib/contrib/masmx86/match686.asm diff --git a/zlib-1.2.8/contrib/masmx86/readme.txt b/3rd-party/zlib/contrib/masmx86/readme.txt similarity index 100% rename from zlib-1.2.8/contrib/masmx86/readme.txt rename to 3rd-party/zlib/contrib/masmx86/readme.txt diff --git a/zlib-1.2.8/contrib/minizip/Makefile b/3rd-party/zlib/contrib/minizip/Makefile similarity index 100% rename from zlib-1.2.8/contrib/minizip/Makefile rename to 3rd-party/zlib/contrib/minizip/Makefile diff --git a/zlib-1.2.8/contrib/minizip/Makefile.am b/3rd-party/zlib/contrib/minizip/Makefile.am similarity index 100% rename from zlib-1.2.8/contrib/minizip/Makefile.am rename to 3rd-party/zlib/contrib/minizip/Makefile.am diff --git a/zlib-1.2.8/contrib/minizip/MiniZip64_Changes.txt b/3rd-party/zlib/contrib/minizip/MiniZip64_Changes.txt similarity index 100% rename from zlib-1.2.8/contrib/minizip/MiniZip64_Changes.txt rename to 3rd-party/zlib/contrib/minizip/MiniZip64_Changes.txt diff --git a/zlib-1.2.8/contrib/minizip/MiniZip64_info.txt b/3rd-party/zlib/contrib/minizip/MiniZip64_info.txt similarity index 100% rename from zlib-1.2.8/contrib/minizip/MiniZip64_info.txt rename to 3rd-party/zlib/contrib/minizip/MiniZip64_info.txt diff --git a/zlib-1.2.8/contrib/minizip/configure.ac b/3rd-party/zlib/contrib/minizip/configure.ac similarity index 100% rename from zlib-1.2.8/contrib/minizip/configure.ac rename to 3rd-party/zlib/contrib/minizip/configure.ac diff --git a/zlib-1.2.8/contrib/minizip/crypt.h b/3rd-party/zlib/contrib/minizip/crypt.h similarity index 100% rename from zlib-1.2.8/contrib/minizip/crypt.h rename to 3rd-party/zlib/contrib/minizip/crypt.h diff --git a/zlib-1.2.8/contrib/minizip/ioapi.c b/3rd-party/zlib/contrib/minizip/ioapi.c similarity index 100% rename from zlib-1.2.8/contrib/minizip/ioapi.c rename to 3rd-party/zlib/contrib/minizip/ioapi.c diff --git a/zlib-1.2.8/contrib/minizip/ioapi.h b/3rd-party/zlib/contrib/minizip/ioapi.h similarity index 100% rename from zlib-1.2.8/contrib/minizip/ioapi.h rename to 3rd-party/zlib/contrib/minizip/ioapi.h diff --git a/zlib-1.2.8/contrib/minizip/iowin32.c b/3rd-party/zlib/contrib/minizip/iowin32.c similarity index 100% rename from zlib-1.2.8/contrib/minizip/iowin32.c rename to 3rd-party/zlib/contrib/minizip/iowin32.c diff --git a/zlib-1.2.8/contrib/minizip/iowin32.h b/3rd-party/zlib/contrib/minizip/iowin32.h similarity index 100% rename from zlib-1.2.8/contrib/minizip/iowin32.h rename to 3rd-party/zlib/contrib/minizip/iowin32.h diff --git a/zlib-1.2.8/contrib/minizip/make_vms.com b/3rd-party/zlib/contrib/minizip/make_vms.com similarity index 100% rename from zlib-1.2.8/contrib/minizip/make_vms.com rename to 3rd-party/zlib/contrib/minizip/make_vms.com diff --git a/zlib-1.2.8/contrib/minizip/miniunz.c b/3rd-party/zlib/contrib/minizip/miniunz.c similarity index 100% rename from zlib-1.2.8/contrib/minizip/miniunz.c rename to 3rd-party/zlib/contrib/minizip/miniunz.c diff --git a/zlib-1.2.8/contrib/minizip/miniunzip.1 b/3rd-party/zlib/contrib/minizip/miniunzip.1 similarity index 100% rename from zlib-1.2.8/contrib/minizip/miniunzip.1 rename to 3rd-party/zlib/contrib/minizip/miniunzip.1 diff --git a/zlib-1.2.8/contrib/minizip/minizip.1 b/3rd-party/zlib/contrib/minizip/minizip.1 similarity index 100% rename from zlib-1.2.8/contrib/minizip/minizip.1 rename to 3rd-party/zlib/contrib/minizip/minizip.1 diff --git a/zlib-1.2.8/contrib/minizip/minizip.c b/3rd-party/zlib/contrib/minizip/minizip.c similarity index 100% rename from zlib-1.2.8/contrib/minizip/minizip.c rename to 3rd-party/zlib/contrib/minizip/minizip.c diff --git a/zlib-1.2.8/contrib/minizip/minizip.pc.in b/3rd-party/zlib/contrib/minizip/minizip.pc.in similarity index 100% rename from zlib-1.2.8/contrib/minizip/minizip.pc.in rename to 3rd-party/zlib/contrib/minizip/minizip.pc.in diff --git a/zlib-1.2.8/contrib/minizip/mztools.c b/3rd-party/zlib/contrib/minizip/mztools.c similarity index 100% rename from zlib-1.2.8/contrib/minizip/mztools.c rename to 3rd-party/zlib/contrib/minizip/mztools.c diff --git a/zlib-1.2.8/contrib/minizip/mztools.h b/3rd-party/zlib/contrib/minizip/mztools.h similarity index 100% rename from zlib-1.2.8/contrib/minizip/mztools.h rename to 3rd-party/zlib/contrib/minizip/mztools.h diff --git a/zlib-1.2.8/contrib/minizip/unzip.c b/3rd-party/zlib/contrib/minizip/unzip.c similarity index 100% rename from zlib-1.2.8/contrib/minizip/unzip.c rename to 3rd-party/zlib/contrib/minizip/unzip.c diff --git a/zlib-1.2.8/contrib/minizip/unzip.h b/3rd-party/zlib/contrib/minizip/unzip.h similarity index 100% rename from zlib-1.2.8/contrib/minizip/unzip.h rename to 3rd-party/zlib/contrib/minizip/unzip.h diff --git a/zlib-1.2.8/contrib/minizip/zip.c b/3rd-party/zlib/contrib/minizip/zip.c similarity index 100% rename from zlib-1.2.8/contrib/minizip/zip.c rename to 3rd-party/zlib/contrib/minizip/zip.c diff --git a/zlib-1.2.8/contrib/minizip/zip.h b/3rd-party/zlib/contrib/minizip/zip.h similarity index 100% rename from zlib-1.2.8/contrib/minizip/zip.h rename to 3rd-party/zlib/contrib/minizip/zip.h diff --git a/zlib-1.2.8/contrib/pascal/example.pas b/3rd-party/zlib/contrib/pascal/example.pas similarity index 100% rename from zlib-1.2.8/contrib/pascal/example.pas rename to 3rd-party/zlib/contrib/pascal/example.pas diff --git a/zlib-1.2.8/contrib/pascal/readme.txt b/3rd-party/zlib/contrib/pascal/readme.txt similarity index 100% rename from zlib-1.2.8/contrib/pascal/readme.txt rename to 3rd-party/zlib/contrib/pascal/readme.txt diff --git a/zlib-1.2.8/contrib/pascal/zlibd32.mak b/3rd-party/zlib/contrib/pascal/zlibd32.mak similarity index 100% rename from zlib-1.2.8/contrib/pascal/zlibd32.mak rename to 3rd-party/zlib/contrib/pascal/zlibd32.mak diff --git a/zlib-1.2.8/contrib/pascal/zlibpas.pas b/3rd-party/zlib/contrib/pascal/zlibpas.pas similarity index 100% rename from zlib-1.2.8/contrib/pascal/zlibpas.pas rename to 3rd-party/zlib/contrib/pascal/zlibpas.pas diff --git a/zlib-1.2.8/contrib/puff/Makefile b/3rd-party/zlib/contrib/puff/Makefile similarity index 100% rename from zlib-1.2.8/contrib/puff/Makefile rename to 3rd-party/zlib/contrib/puff/Makefile diff --git a/zlib-1.2.8/contrib/puff/README b/3rd-party/zlib/contrib/puff/README similarity index 100% rename from zlib-1.2.8/contrib/puff/README rename to 3rd-party/zlib/contrib/puff/README diff --git a/zlib-1.2.8/contrib/puff/puff.c b/3rd-party/zlib/contrib/puff/puff.c similarity index 100% rename from zlib-1.2.8/contrib/puff/puff.c rename to 3rd-party/zlib/contrib/puff/puff.c diff --git a/zlib-1.2.8/contrib/puff/puff.h b/3rd-party/zlib/contrib/puff/puff.h similarity index 100% rename from zlib-1.2.8/contrib/puff/puff.h rename to 3rd-party/zlib/contrib/puff/puff.h diff --git a/zlib-1.2.8/contrib/puff/pufftest.c b/3rd-party/zlib/contrib/puff/pufftest.c similarity index 100% rename from zlib-1.2.8/contrib/puff/pufftest.c rename to 3rd-party/zlib/contrib/puff/pufftest.c diff --git a/zlib-1.2.8/contrib/puff/zeros.raw b/3rd-party/zlib/contrib/puff/zeros.raw similarity index 100% rename from zlib-1.2.8/contrib/puff/zeros.raw rename to 3rd-party/zlib/contrib/puff/zeros.raw diff --git a/zlib-1.2.8/contrib/testzlib/testzlib.c b/3rd-party/zlib/contrib/testzlib/testzlib.c similarity index 100% rename from zlib-1.2.8/contrib/testzlib/testzlib.c rename to 3rd-party/zlib/contrib/testzlib/testzlib.c diff --git a/zlib-1.2.8/contrib/testzlib/testzlib.txt b/3rd-party/zlib/contrib/testzlib/testzlib.txt similarity index 100% rename from zlib-1.2.8/contrib/testzlib/testzlib.txt rename to 3rd-party/zlib/contrib/testzlib/testzlib.txt diff --git a/zlib-1.2.8/contrib/untgz/Makefile b/3rd-party/zlib/contrib/untgz/Makefile similarity index 100% rename from zlib-1.2.8/contrib/untgz/Makefile rename to 3rd-party/zlib/contrib/untgz/Makefile diff --git a/zlib-1.2.8/contrib/untgz/Makefile.msc b/3rd-party/zlib/contrib/untgz/Makefile.msc similarity index 100% rename from zlib-1.2.8/contrib/untgz/Makefile.msc rename to 3rd-party/zlib/contrib/untgz/Makefile.msc diff --git a/zlib-1.2.8/contrib/untgz/untgz.c b/3rd-party/zlib/contrib/untgz/untgz.c similarity index 100% rename from zlib-1.2.8/contrib/untgz/untgz.c rename to 3rd-party/zlib/contrib/untgz/untgz.c diff --git a/zlib-1.2.8/contrib/vstudio/readme.txt b/3rd-party/zlib/contrib/vstudio/readme.txt similarity index 100% rename from zlib-1.2.8/contrib/vstudio/readme.txt rename to 3rd-party/zlib/contrib/vstudio/readme.txt diff --git a/zlib-1.2.8/contrib/vstudio/vc10/miniunz.vcxproj b/3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc10/miniunz.vcxproj rename to 3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj diff --git a/zlib-1.2.8/contrib/vstudio/vc10/miniunz.vcxproj.filters b/3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc10/miniunz.vcxproj.filters rename to 3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters diff --git a/zlib-1.2.8/contrib/vstudio/vc10/minizip.vcxproj b/3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc10/minizip.vcxproj rename to 3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj diff --git a/zlib-1.2.8/contrib/vstudio/vc10/minizip.vcxproj.filters b/3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc10/minizip.vcxproj.filters rename to 3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters diff --git a/zlib-1.2.8/contrib/vstudio/vc10/testzlib.vcxproj b/3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc10/testzlib.vcxproj rename to 3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj diff --git a/zlib-1.2.8/contrib/vstudio/vc10/testzlib.vcxproj.filters b/3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc10/testzlib.vcxproj.filters rename to 3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters diff --git a/zlib-1.2.8/contrib/vstudio/vc10/testzlibdll.vcxproj b/3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc10/testzlibdll.vcxproj rename to 3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj diff --git a/zlib-1.2.8/contrib/vstudio/vc10/testzlibdll.vcxproj.filters b/3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc10/testzlibdll.vcxproj.filters rename to 3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters diff --git a/zlib-1.2.8/contrib/vstudio/vc10/zlib.rc b/3rd-party/zlib/contrib/vstudio/vc10/zlib.rc similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc10/zlib.rc rename to 3rd-party/zlib/contrib/vstudio/vc10/zlib.rc diff --git a/zlib-1.2.8/contrib/vstudio/vc10/zlibstat.vcxproj b/3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc10/zlibstat.vcxproj rename to 3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj diff --git a/zlib-1.2.8/contrib/vstudio/vc10/zlibstat.vcxproj.filters b/3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc10/zlibstat.vcxproj.filters rename to 3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters diff --git a/zlib-1.2.8/contrib/vstudio/vc10/zlibvc.def b/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.def similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc10/zlibvc.def rename to 3rd-party/zlib/contrib/vstudio/vc10/zlibvc.def diff --git a/zlib-1.2.8/contrib/vstudio/vc10/zlibvc.sln b/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.sln similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc10/zlibvc.sln rename to 3rd-party/zlib/contrib/vstudio/vc10/zlibvc.sln diff --git a/zlib-1.2.8/contrib/vstudio/vc10/zlibvc.vcxproj b/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc10/zlibvc.vcxproj rename to 3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj diff --git a/zlib-1.2.8/contrib/vstudio/vc10/zlibvc.vcxproj.filters b/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc10/zlibvc.vcxproj.filters rename to 3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters diff --git a/zlib-1.2.8/contrib/vstudio/vc11/miniunz.vcxproj b/3rd-party/zlib/contrib/vstudio/vc11/miniunz.vcxproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc11/miniunz.vcxproj rename to 3rd-party/zlib/contrib/vstudio/vc11/miniunz.vcxproj diff --git a/zlib-1.2.8/contrib/vstudio/vc11/minizip.vcxproj b/3rd-party/zlib/contrib/vstudio/vc11/minizip.vcxproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc11/minizip.vcxproj rename to 3rd-party/zlib/contrib/vstudio/vc11/minizip.vcxproj diff --git a/zlib-1.2.8/contrib/vstudio/vc11/testzlib.vcxproj b/3rd-party/zlib/contrib/vstudio/vc11/testzlib.vcxproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc11/testzlib.vcxproj rename to 3rd-party/zlib/contrib/vstudio/vc11/testzlib.vcxproj diff --git a/zlib-1.2.8/contrib/vstudio/vc11/testzlibdll.vcxproj b/3rd-party/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc11/testzlibdll.vcxproj rename to 3rd-party/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj diff --git a/zlib-1.2.8/contrib/vstudio/vc11/zlib.rc b/3rd-party/zlib/contrib/vstudio/vc11/zlib.rc similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc11/zlib.rc rename to 3rd-party/zlib/contrib/vstudio/vc11/zlib.rc diff --git a/zlib-1.2.8/contrib/vstudio/vc11/zlibstat.vcxproj b/3rd-party/zlib/contrib/vstudio/vc11/zlibstat.vcxproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc11/zlibstat.vcxproj rename to 3rd-party/zlib/contrib/vstudio/vc11/zlibstat.vcxproj diff --git a/zlib-1.2.8/contrib/vstudio/vc11/zlibvc.def b/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.def similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc11/zlibvc.def rename to 3rd-party/zlib/contrib/vstudio/vc11/zlibvc.def diff --git a/zlib-1.2.8/contrib/vstudio/vc11/zlibvc.sln b/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.sln similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc11/zlibvc.sln rename to 3rd-party/zlib/contrib/vstudio/vc11/zlibvc.sln diff --git a/zlib-1.2.8/contrib/vstudio/vc11/zlibvc.vcxproj b/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.vcxproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc11/zlibvc.vcxproj rename to 3rd-party/zlib/contrib/vstudio/vc11/zlibvc.vcxproj diff --git a/zlib-1.2.8/contrib/vstudio/vc9/miniunz.vcproj b/3rd-party/zlib/contrib/vstudio/vc9/miniunz.vcproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc9/miniunz.vcproj rename to 3rd-party/zlib/contrib/vstudio/vc9/miniunz.vcproj diff --git a/zlib-1.2.8/contrib/vstudio/vc9/minizip.vcproj b/3rd-party/zlib/contrib/vstudio/vc9/minizip.vcproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc9/minizip.vcproj rename to 3rd-party/zlib/contrib/vstudio/vc9/minizip.vcproj diff --git a/zlib-1.2.8/contrib/vstudio/vc9/testzlib.vcproj b/3rd-party/zlib/contrib/vstudio/vc9/testzlib.vcproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc9/testzlib.vcproj rename to 3rd-party/zlib/contrib/vstudio/vc9/testzlib.vcproj diff --git a/zlib-1.2.8/contrib/vstudio/vc9/testzlibdll.vcproj b/3rd-party/zlib/contrib/vstudio/vc9/testzlibdll.vcproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc9/testzlibdll.vcproj rename to 3rd-party/zlib/contrib/vstudio/vc9/testzlibdll.vcproj diff --git a/zlib-1.2.8/contrib/vstudio/vc9/zlib.rc b/3rd-party/zlib/contrib/vstudio/vc9/zlib.rc similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc9/zlib.rc rename to 3rd-party/zlib/contrib/vstudio/vc9/zlib.rc diff --git a/zlib-1.2.8/contrib/vstudio/vc9/zlibstat.vcproj b/3rd-party/zlib/contrib/vstudio/vc9/zlibstat.vcproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc9/zlibstat.vcproj rename to 3rd-party/zlib/contrib/vstudio/vc9/zlibstat.vcproj diff --git a/zlib-1.2.8/contrib/vstudio/vc9/zlibvc.def b/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.def similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc9/zlibvc.def rename to 3rd-party/zlib/contrib/vstudio/vc9/zlibvc.def diff --git a/zlib-1.2.8/contrib/vstudio/vc9/zlibvc.sln b/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.sln similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc9/zlibvc.sln rename to 3rd-party/zlib/contrib/vstudio/vc9/zlibvc.sln diff --git a/zlib-1.2.8/contrib/vstudio/vc9/zlibvc.vcproj b/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.vcproj similarity index 100% rename from zlib-1.2.8/contrib/vstudio/vc9/zlibvc.vcproj rename to 3rd-party/zlib/contrib/vstudio/vc9/zlibvc.vcproj diff --git a/zlib-1.2.8/crc32.c b/3rd-party/zlib/crc32.c similarity index 100% rename from zlib-1.2.8/crc32.c rename to 3rd-party/zlib/crc32.c diff --git a/zlib-1.2.8/crc32.h b/3rd-party/zlib/crc32.h similarity index 100% rename from zlib-1.2.8/crc32.h rename to 3rd-party/zlib/crc32.h diff --git a/zlib-1.2.8/deflate.c b/3rd-party/zlib/deflate.c similarity index 100% rename from zlib-1.2.8/deflate.c rename to 3rd-party/zlib/deflate.c diff --git a/zlib-1.2.8/deflate.h b/3rd-party/zlib/deflate.h similarity index 100% rename from zlib-1.2.8/deflate.h rename to 3rd-party/zlib/deflate.h diff --git a/zlib-1.2.8/doc/algorithm.txt b/3rd-party/zlib/doc/algorithm.txt similarity index 100% rename from zlib-1.2.8/doc/algorithm.txt rename to 3rd-party/zlib/doc/algorithm.txt diff --git a/zlib-1.2.8/doc/rfc1950.txt b/3rd-party/zlib/doc/rfc1950.txt similarity index 100% rename from zlib-1.2.8/doc/rfc1950.txt rename to 3rd-party/zlib/doc/rfc1950.txt diff --git a/zlib-1.2.8/doc/rfc1951.txt b/3rd-party/zlib/doc/rfc1951.txt similarity index 100% rename from zlib-1.2.8/doc/rfc1951.txt rename to 3rd-party/zlib/doc/rfc1951.txt diff --git a/zlib-1.2.8/doc/rfc1952.txt b/3rd-party/zlib/doc/rfc1952.txt similarity index 100% rename from zlib-1.2.8/doc/rfc1952.txt rename to 3rd-party/zlib/doc/rfc1952.txt diff --git a/zlib-1.2.8/doc/txtvsbin.txt b/3rd-party/zlib/doc/txtvsbin.txt similarity index 100% rename from zlib-1.2.8/doc/txtvsbin.txt rename to 3rd-party/zlib/doc/txtvsbin.txt diff --git a/zlib-1.2.8/examples/README.examples b/3rd-party/zlib/examples/README.examples similarity index 100% rename from zlib-1.2.8/examples/README.examples rename to 3rd-party/zlib/examples/README.examples diff --git a/zlib-1.2.8/examples/enough.c b/3rd-party/zlib/examples/enough.c similarity index 100% rename from zlib-1.2.8/examples/enough.c rename to 3rd-party/zlib/examples/enough.c diff --git a/zlib-1.2.8/examples/fitblk.c b/3rd-party/zlib/examples/fitblk.c similarity index 100% rename from zlib-1.2.8/examples/fitblk.c rename to 3rd-party/zlib/examples/fitblk.c diff --git a/zlib-1.2.8/examples/gun.c b/3rd-party/zlib/examples/gun.c similarity index 100% rename from zlib-1.2.8/examples/gun.c rename to 3rd-party/zlib/examples/gun.c diff --git a/zlib-1.2.8/examples/gzappend.c b/3rd-party/zlib/examples/gzappend.c similarity index 100% rename from zlib-1.2.8/examples/gzappend.c rename to 3rd-party/zlib/examples/gzappend.c diff --git a/zlib-1.2.8/examples/gzjoin.c b/3rd-party/zlib/examples/gzjoin.c similarity index 100% rename from zlib-1.2.8/examples/gzjoin.c rename to 3rd-party/zlib/examples/gzjoin.c diff --git a/zlib-1.2.8/examples/gzlog.c b/3rd-party/zlib/examples/gzlog.c similarity index 100% rename from zlib-1.2.8/examples/gzlog.c rename to 3rd-party/zlib/examples/gzlog.c diff --git a/zlib-1.2.8/examples/gzlog.h b/3rd-party/zlib/examples/gzlog.h similarity index 100% rename from zlib-1.2.8/examples/gzlog.h rename to 3rd-party/zlib/examples/gzlog.h diff --git a/zlib-1.2.8/examples/zlib_how.html b/3rd-party/zlib/examples/zlib_how.html similarity index 100% rename from zlib-1.2.8/examples/zlib_how.html rename to 3rd-party/zlib/examples/zlib_how.html diff --git a/zlib-1.2.8/examples/zpipe.c b/3rd-party/zlib/examples/zpipe.c similarity index 100% rename from zlib-1.2.8/examples/zpipe.c rename to 3rd-party/zlib/examples/zpipe.c diff --git a/zlib-1.2.8/examples/zran.c b/3rd-party/zlib/examples/zran.c similarity index 100% rename from zlib-1.2.8/examples/zran.c rename to 3rd-party/zlib/examples/zran.c diff --git a/zlib-1.2.8/gzclose.c b/3rd-party/zlib/gzclose.c similarity index 100% rename from zlib-1.2.8/gzclose.c rename to 3rd-party/zlib/gzclose.c diff --git a/zlib-1.2.8/gzguts.h b/3rd-party/zlib/gzguts.h similarity index 100% rename from zlib-1.2.8/gzguts.h rename to 3rd-party/zlib/gzguts.h diff --git a/zlib-1.2.8/gzlib.c b/3rd-party/zlib/gzlib.c similarity index 100% rename from zlib-1.2.8/gzlib.c rename to 3rd-party/zlib/gzlib.c diff --git a/zlib-1.2.8/gzread.c b/3rd-party/zlib/gzread.c similarity index 100% rename from zlib-1.2.8/gzread.c rename to 3rd-party/zlib/gzread.c diff --git a/zlib-1.2.8/gzwrite.c b/3rd-party/zlib/gzwrite.c similarity index 100% rename from zlib-1.2.8/gzwrite.c rename to 3rd-party/zlib/gzwrite.c diff --git a/zlib-1.2.8/infback.c b/3rd-party/zlib/infback.c similarity index 100% rename from zlib-1.2.8/infback.c rename to 3rd-party/zlib/infback.c diff --git a/zlib-1.2.8/inffast.c b/3rd-party/zlib/inffast.c similarity index 100% rename from zlib-1.2.8/inffast.c rename to 3rd-party/zlib/inffast.c diff --git a/zlib-1.2.8/inffast.h b/3rd-party/zlib/inffast.h similarity index 100% rename from zlib-1.2.8/inffast.h rename to 3rd-party/zlib/inffast.h diff --git a/zlib-1.2.8/inffixed.h b/3rd-party/zlib/inffixed.h similarity index 100% rename from zlib-1.2.8/inffixed.h rename to 3rd-party/zlib/inffixed.h diff --git a/zlib-1.2.8/inflate.c b/3rd-party/zlib/inflate.c similarity index 100% rename from zlib-1.2.8/inflate.c rename to 3rd-party/zlib/inflate.c diff --git a/zlib-1.2.8/inflate.h b/3rd-party/zlib/inflate.h similarity index 100% rename from zlib-1.2.8/inflate.h rename to 3rd-party/zlib/inflate.h diff --git a/zlib-1.2.8/inftrees.c b/3rd-party/zlib/inftrees.c similarity index 100% rename from zlib-1.2.8/inftrees.c rename to 3rd-party/zlib/inftrees.c diff --git a/zlib-1.2.8/inftrees.h b/3rd-party/zlib/inftrees.h similarity index 100% rename from zlib-1.2.8/inftrees.h rename to 3rd-party/zlib/inftrees.h diff --git a/zlib-1.2.8/make_vms.com b/3rd-party/zlib/make_vms.com similarity index 100% rename from zlib-1.2.8/make_vms.com rename to 3rd-party/zlib/make_vms.com diff --git a/zlib-1.2.8/msdos/Makefile.bor b/3rd-party/zlib/msdos/Makefile.bor similarity index 100% rename from zlib-1.2.8/msdos/Makefile.bor rename to 3rd-party/zlib/msdos/Makefile.bor diff --git a/zlib-1.2.8/msdos/Makefile.dj2 b/3rd-party/zlib/msdos/Makefile.dj2 similarity index 100% rename from zlib-1.2.8/msdos/Makefile.dj2 rename to 3rd-party/zlib/msdos/Makefile.dj2 diff --git a/zlib-1.2.8/msdos/Makefile.emx b/3rd-party/zlib/msdos/Makefile.emx similarity index 100% rename from zlib-1.2.8/msdos/Makefile.emx rename to 3rd-party/zlib/msdos/Makefile.emx diff --git a/zlib-1.2.8/msdos/Makefile.msc b/3rd-party/zlib/msdos/Makefile.msc similarity index 100% rename from zlib-1.2.8/msdos/Makefile.msc rename to 3rd-party/zlib/msdos/Makefile.msc diff --git a/zlib-1.2.8/msdos/Makefile.tc b/3rd-party/zlib/msdos/Makefile.tc similarity index 100% rename from zlib-1.2.8/msdos/Makefile.tc rename to 3rd-party/zlib/msdos/Makefile.tc diff --git a/zlib-1.2.8/nintendods/Makefile b/3rd-party/zlib/nintendods/Makefile similarity index 100% rename from zlib-1.2.8/nintendods/Makefile rename to 3rd-party/zlib/nintendods/Makefile diff --git a/zlib-1.2.8/nintendods/README b/3rd-party/zlib/nintendods/README similarity index 100% rename from zlib-1.2.8/nintendods/README rename to 3rd-party/zlib/nintendods/README diff --git a/zlib-1.2.8/old/Makefile.emx b/3rd-party/zlib/old/Makefile.emx similarity index 100% rename from zlib-1.2.8/old/Makefile.emx rename to 3rd-party/zlib/old/Makefile.emx diff --git a/zlib-1.2.8/old/Makefile.riscos b/3rd-party/zlib/old/Makefile.riscos similarity index 100% rename from zlib-1.2.8/old/Makefile.riscos rename to 3rd-party/zlib/old/Makefile.riscos diff --git a/zlib-1.2.8/old/README b/3rd-party/zlib/old/README similarity index 100% rename from zlib-1.2.8/old/README rename to 3rd-party/zlib/old/README diff --git a/zlib-1.2.8/old/descrip.mms b/3rd-party/zlib/old/descrip.mms similarity index 100% rename from zlib-1.2.8/old/descrip.mms rename to 3rd-party/zlib/old/descrip.mms diff --git a/zlib-1.2.8/old/os2/Makefile.os2 b/3rd-party/zlib/old/os2/Makefile.os2 similarity index 100% rename from zlib-1.2.8/old/os2/Makefile.os2 rename to 3rd-party/zlib/old/os2/Makefile.os2 diff --git a/zlib-1.2.8/old/os2/zlib.def b/3rd-party/zlib/old/os2/zlib.def similarity index 100% rename from zlib-1.2.8/old/os2/zlib.def rename to 3rd-party/zlib/old/os2/zlib.def diff --git a/zlib-1.2.8/old/visual-basic.txt b/3rd-party/zlib/old/visual-basic.txt similarity index 100% rename from zlib-1.2.8/old/visual-basic.txt rename to 3rd-party/zlib/old/visual-basic.txt diff --git a/zlib-1.2.8/qnx/package.qpg b/3rd-party/zlib/qnx/package.qpg similarity index 100% rename from zlib-1.2.8/qnx/package.qpg rename to 3rd-party/zlib/qnx/package.qpg diff --git a/zlib-1.2.8/test/example.c b/3rd-party/zlib/test/example.c similarity index 100% rename from zlib-1.2.8/test/example.c rename to 3rd-party/zlib/test/example.c diff --git a/zlib-1.2.8/test/infcover.c b/3rd-party/zlib/test/infcover.c similarity index 100% rename from zlib-1.2.8/test/infcover.c rename to 3rd-party/zlib/test/infcover.c diff --git a/zlib-1.2.8/test/minigzip.c b/3rd-party/zlib/test/minigzip.c similarity index 100% rename from zlib-1.2.8/test/minigzip.c rename to 3rd-party/zlib/test/minigzip.c diff --git a/zlib-1.2.8/treebuild.xml b/3rd-party/zlib/treebuild.xml similarity index 100% rename from zlib-1.2.8/treebuild.xml rename to 3rd-party/zlib/treebuild.xml diff --git a/zlib-1.2.8/trees.c b/3rd-party/zlib/trees.c similarity index 100% rename from zlib-1.2.8/trees.c rename to 3rd-party/zlib/trees.c diff --git a/zlib-1.2.8/trees.h b/3rd-party/zlib/trees.h similarity index 100% rename from zlib-1.2.8/trees.h rename to 3rd-party/zlib/trees.h diff --git a/zlib-1.2.8/uncompr.c b/3rd-party/zlib/uncompr.c similarity index 100% rename from zlib-1.2.8/uncompr.c rename to 3rd-party/zlib/uncompr.c diff --git a/zlib-1.2.8/watcom/watcom_f.mak b/3rd-party/zlib/watcom/watcom_f.mak similarity index 100% rename from zlib-1.2.8/watcom/watcom_f.mak rename to 3rd-party/zlib/watcom/watcom_f.mak diff --git a/zlib-1.2.8/watcom/watcom_l.mak b/3rd-party/zlib/watcom/watcom_l.mak similarity index 100% rename from zlib-1.2.8/watcom/watcom_l.mak rename to 3rd-party/zlib/watcom/watcom_l.mak diff --git a/zlib-1.2.8/win32/DLL_FAQ.txt b/3rd-party/zlib/win32/DLL_FAQ.txt similarity index 100% rename from zlib-1.2.8/win32/DLL_FAQ.txt rename to 3rd-party/zlib/win32/DLL_FAQ.txt diff --git a/zlib-1.2.8/win32/Makefile.bor b/3rd-party/zlib/win32/Makefile.bor similarity index 100% rename from zlib-1.2.8/win32/Makefile.bor rename to 3rd-party/zlib/win32/Makefile.bor diff --git a/zlib-1.2.8/win32/Makefile.gcc b/3rd-party/zlib/win32/Makefile.gcc similarity index 100% rename from zlib-1.2.8/win32/Makefile.gcc rename to 3rd-party/zlib/win32/Makefile.gcc diff --git a/zlib-1.2.8/win32/Makefile.msc b/3rd-party/zlib/win32/Makefile.msc similarity index 100% rename from zlib-1.2.8/win32/Makefile.msc rename to 3rd-party/zlib/win32/Makefile.msc diff --git a/zlib-1.2.8/win32/README-WIN32.txt b/3rd-party/zlib/win32/README-WIN32.txt similarity index 100% rename from zlib-1.2.8/win32/README-WIN32.txt rename to 3rd-party/zlib/win32/README-WIN32.txt diff --git a/zlib-1.2.8/win32/VisualC.txt b/3rd-party/zlib/win32/VisualC.txt similarity index 100% rename from zlib-1.2.8/win32/VisualC.txt rename to 3rd-party/zlib/win32/VisualC.txt diff --git a/zlib-1.2.8/win32/zlib.def b/3rd-party/zlib/win32/zlib.def similarity index 100% rename from zlib-1.2.8/win32/zlib.def rename to 3rd-party/zlib/win32/zlib.def diff --git a/zlib-1.2.8/win32/zlib1.rc b/3rd-party/zlib/win32/zlib1.rc similarity index 100% rename from zlib-1.2.8/win32/zlib1.rc rename to 3rd-party/zlib/win32/zlib1.rc diff --git a/zlib-1.2.8/zconf.h b/3rd-party/zlib/zconf.h similarity index 100% rename from zlib-1.2.8/zconf.h rename to 3rd-party/zlib/zconf.h diff --git a/zlib-1.2.8/zconf.h.cmakein b/3rd-party/zlib/zconf.h.cmakein similarity index 100% rename from zlib-1.2.8/zconf.h.cmakein rename to 3rd-party/zlib/zconf.h.cmakein diff --git a/zlib-1.2.8/zconf.h.in b/3rd-party/zlib/zconf.h.in similarity index 100% rename from zlib-1.2.8/zconf.h.in rename to 3rd-party/zlib/zconf.h.in diff --git a/zlib-1.2.8/zlib.3 b/3rd-party/zlib/zlib.3 similarity index 100% rename from zlib-1.2.8/zlib.3 rename to 3rd-party/zlib/zlib.3 diff --git a/zlib-1.2.8/zlib.3.pdf b/3rd-party/zlib/zlib.3.pdf similarity index 100% rename from zlib-1.2.8/zlib.3.pdf rename to 3rd-party/zlib/zlib.3.pdf diff --git a/zlib-1.2.8/zlib.h b/3rd-party/zlib/zlib.h similarity index 100% rename from zlib-1.2.8/zlib.h rename to 3rd-party/zlib/zlib.h diff --git a/zlib-1.2.8/zlib.map b/3rd-party/zlib/zlib.map similarity index 100% rename from zlib-1.2.8/zlib.map rename to 3rd-party/zlib/zlib.map diff --git a/zlib-1.2.8/zlib.pc.cmakein b/3rd-party/zlib/zlib.pc.cmakein similarity index 100% rename from zlib-1.2.8/zlib.pc.cmakein rename to 3rd-party/zlib/zlib.pc.cmakein diff --git a/zlib-1.2.8/zlib.pc.in b/3rd-party/zlib/zlib.pc.in similarity index 100% rename from zlib-1.2.8/zlib.pc.in rename to 3rd-party/zlib/zlib.pc.in diff --git a/zlib-1.2.8/zlib2ansi b/3rd-party/zlib/zlib2ansi similarity index 100% rename from zlib-1.2.8/zlib2ansi rename to 3rd-party/zlib/zlib2ansi diff --git a/zlib-1.2.8/zutil.c b/3rd-party/zlib/zutil.c similarity index 100% rename from zlib-1.2.8/zutil.c rename to 3rd-party/zlib/zutil.c diff --git a/zlib-1.2.8/zutil.h b/3rd-party/zlib/zutil.h similarity index 100% rename from zlib-1.2.8/zutil.h rename to 3rd-party/zlib/zutil.h diff --git a/N3888_RefImpl/.gitignore b/N3888_RefImpl/.gitignore deleted file mode 100644 index 7e0949a..0000000 --- a/N3888_RefImpl/.gitignore +++ /dev/null @@ -1,46 +0,0 @@ -################################################################################ -# This .gitignore file was automatically created by Microsoft(R) Visual Studio. -################################################################################ - -/N3888_RefImpl/Debug -*.user -/Debug -/ipch/N3888_RefImpl-e13b5b2c -/N3888_RefImpl.opensdf -/N3888_RefImpl.sdf -/N3888_RefImpl.v12.suo -/N3888_RefImpl/x64/Release/N3888_RefImpl.tlog -/N3888_RefImpl/x64/Release/N3888_RefImpl.log -/N3888_RefImpl/x64/Release/N3888_RefImpl.obj -/N3888_RefImpl/x64/Release/N3888_RefImpl.pch -/N3888_RefImpl/x64/Release/N3888_RefImpl.res -/N3888_RefImpl/x64/Release/context.obj -/N3888_RefImpl/x64/Release/device.obj -/N3888_RefImpl/x64/Release/drawing_exception.obj -/N3888_RefImpl/x64/Release/font_face.obj -/N3888_RefImpl/x64/Release/font_options.obj -/N3888_RefImpl/x64/Release/gradient_pattern.obj -/N3888_RefImpl/x64/Release/image_surface.obj -/N3888_RefImpl/x64/Release/linear_gradient_pattern.obj -/N3888_RefImpl/x64/Release/matrix.obj -/N3888_RefImpl/x64/Release/mesh_pattern.obj -/N3888_RefImpl/x64/Release/pattern.obj -/N3888_RefImpl/x64/Release/pch.obj -/N3888_RefImpl/x64/Release/radial_gradient_pattern.obj -/N3888_RefImpl/x64/Release/raster_source_pattern.obj -/N3888_RefImpl/x64/Release/region.obj -/N3888_RefImpl/x64/Release/scaled_font.obj -/N3888_RefImpl/x64/Release/solid_color_pattern.obj -/N3888_RefImpl/x64/Release/surface.obj -/N3888_RefImpl/x64/Release/surface_pattern.obj -/N3888_RefImpl/x64/Release/toy_font_face.obj -/N3888_RefImpl/x64/Release/user_data_key.obj -/N3888_RefImpl/x64/Release/vc120.pdb -/x64/Release -/N3888_RefImpl/x64/Release -/N3888_RefImpl/x64/Debug/N3888_RefImpl.tlog -/N3888_RefImpl/x64/Debug/N3888_RefImpl.pch -/N3888_RefImpl/x64/Debug/N3888_RefImpl.res -/N3888_RefImpl/x64/Debug/vc120.idb -Makefile -Makefile.in diff --git a/N3888_RefImpl/Makefile.am b/N3888_RefImpl/Makefile.am deleted file mode 100644 index 280086e..0000000 --- a/N3888_RefImpl/Makefile.am +++ /dev/null @@ -1,2 +0,0 @@ -SUBDIRS = src - diff --git a/N3888_RefImpl/N3888_RefImpl.sln b/N3888_RefImpl/N3888_RefImpl.sln deleted file mode 100644 index 9f06198..0000000 --- a/N3888_RefImpl/N3888_RefImpl.sln +++ /dev/null @@ -1,40 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.24720.0 -MinimumVisualStudioVersion = 12.0.21005.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "N3888_RefImpl", "src\N3888_RefImpl.vcxproj", "{1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug_Clang_C2|Win32 = Debug_Clang_C2|Win32 - Debug_Clang_C2|x64 = Debug_Clang_C2|x64 - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release_Clang_C2|Win32 = Release_Clang_C2|Win32 - Release_Clang_C2|x64 = Release_Clang_C2|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}.Debug_Clang_C2|Win32.ActiveCfg = Debug_Clang_C2|Win32 - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}.Debug_Clang_C2|Win32.Build.0 = Debug_Clang_C2|Win32 - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}.Debug_Clang_C2|x64.ActiveCfg = Debug_Clang_C2|x64 - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}.Debug_Clang_C2|x64.Build.0 = Debug_Clang_C2|x64 - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}.Debug|Win32.ActiveCfg = Debug|Win32 - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}.Debug|Win32.Build.0 = Debug|Win32 - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}.Debug|x64.ActiveCfg = Debug|x64 - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}.Debug|x64.Build.0 = Debug|x64 - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}.Release_Clang_C2|Win32.ActiveCfg = Release_Clang_C2|Win32 - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}.Release_Clang_C2|Win32.Build.0 = Release_Clang_C2|Win32 - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}.Release_Clang_C2|x64.ActiveCfg = Release_Clang_C2|x64 - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}.Release_Clang_C2|x64.Build.0 = Release_Clang_C2|x64 - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}.Release|Win32.ActiveCfg = Release|Win32 - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}.Release|Win32.Build.0 = Release|Win32 - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}.Release|x64.ActiveCfg = Release|x64 - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/N3888_RefImpl/src/win32/DLLs/x86/Debug_Clang_C2/cairo.dll b/N3888_RefImpl/src/win32/DLLs/x86/Debug_Clang_C2/cairo.dll deleted file mode 100644 index ef90fabff0d5ffc8542cd5d73946928bf64ff980..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2063872 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

To){nyxJ<>8P;m0rPFLk~7Kk;4|@WaO3 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

cn;!XgPxf}w#fw%dk83QmY( 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

  • !D(%i1~&H6Pt-het{&I>w1Wl!86 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%0Dv&cBZ8)WX87%l6;V{pB#v$CmQ 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%0DOfpd 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�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

    +}qSgMq!r{T>8AQ~FGH#IQ14<%Syl|6 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�PKOAtG*p@SAUvb41RWJ`n~g zB?WU9cRY12f6iMdk~)p-APx%DSRep98vqh?!v~84ETj?&%%%E-+{MEwN<5S@ZOF}C z*pP;ur|r=*m)ZiK@D)5|L4k*CKZ!g#s$91?Bq)&7Hxc&f8y=gG-ZL^8)T9m|Aan+V z9(!Zjr07?|!i<%0)xH3S9`{GBqI14xzJ0X%M>q{=6b|{89lNGl^=eg?DbfUv3dHT^BkV9{g zWX;a{@dY<$tE=ZKKXD|D+snyN8rziuJ%QioZ0v}E01r~9rxVggPqOjJ(UVMkeDov} z>yMrk;NFJf8`Rk$R}zW^)3CBedJyQd3(1tfVkdEubQjUbB?G8j?W4mW#VYX9G#yX- z<|Ek=ut?Ftq*m(Rb0L=YBIyYNeXr$Cxi*yZ;Qg;%B*cpra1Wuam zxa8dq9iur4uqMTXn?d`vs5RW)Hn^!xo~#rzCp#1ursQN+2mJlY2?LC9l9 zCXLpt4c>%;=f0~!z@(beT)^7@56`E?V}b;;i3fvYfUvLQ%;jIo0)*U9%_FGeS^y`s zq`FFZcSnkDM~fh2dpv;De{?RNc%6(lTRcaK_QU`F_1q7CGprX$JvOfYBc6#@5mRbg zbOj#&xx&ZJC^jb3ZNME$Q6AVH+>&isL4Q!95ejpz^4q<}Ka}+xkCkSbn98yWK9+kS z68`wjzN6_VD{FvdVVPMLkY@_YdJM`EGl)O6og4e-OW*+VAQhcgsn{kzib!p$cc+kM zd;)AwBmmm&qL0I!C=zKn*$DLh@KJ1iqnIdM>2}d~qUWJF6dJ8k97<+feE!I1!!C7K zFbpdlC<1b9q@NNsX#81x)M%xpa=1G9t@k9=Z-{p}d=t^8{x-HTsgZX8Rg$nQy2d9= ztFU-q1!y9u@^o88Je5c?V3fnf$}Gdsk0s9pR;_%_UPHzf(~Snk1XROI?*EU z#8nY;E&7(we4~!-Eo_X$&Bi_aJ)1f9{>HrA&o7 z68aV*!6&3kl1@_sN-}^{Ngq)!-fA`rte@47l}m<3O;ZCXWs2cdI`JvD<$HPW1!H@Y zb2IvdanKG8%%>h!nQ^cR#=%>Fd+u9qG#6lcG^gl*=dk(E!JwW8bg9E2zBcIVf)FaA z#8fvjBREKnF~F&7G5XM-sg|sf>)LMZGHEbZLZ@$4jGjnA0VNyJ|5g+Jm}WRX^SMP4=RB>B3$E1!Qmv#dUr%h1|ln=gdj->sImi=8-r-Jf6knnyM@v1 zcJnYw(CqXk3(C7u-xlg&TT%^x`eSz17xM_cCY!927U^WWvDhkR$2olJ(uT}B-H}dC zXHMA#>a8jleaM#|H|f{zrO4SHHO?UR9J=?>Y}dJe!k>hiU%m=uzG7s(a;D1!^(W>QPoE0(NZgl3l zyNu`=F|W+n-A<8h{AN~>VKkXS`&OpqSM3;oF9IB5EK5rO}gh0jSFN|JTBDxlPY&ZDdwJfvty&Cr_dYTzjeSgbY08b z^YNDr#Jf{EW%por=~~T9cSmp60f=D-`nVVrLn+NBC~5w|m)hLSrd0N)XR`krinEfi z*%o~6jo#rl_LrKK{QweivxqDEDwo-TIs~W02xzdSN}jRI&WER$s7l-(s$yGRu41*! ziqa_BbQ&o`M88G!Zq!pWhzKoW)h5%r)pF4yj$iOn9+1+2{boa9)td?El+kv{!S$M+hSh5X=8hInn#$r5xNH+x>%%@8`R(xwZ>3;m zcv(Kl#&ma2SQ^5vP}L>ClWW@m?{LE`{TrxnKTV;fkxH%XgfQ)nMs;8j>VVluosJRd zxqu|fI~+fZboM<{0RGJ<9*^bwns65`t-YP(k~gr&W2+mMo~wwZ#D=WQan;aJ#tE{& zQwa$!m}kUgJzwmHp?wStP_-7X1HW?F}n*!dm3l>7ZBot_0^4D#s7;ykrEmiS_LU@t@??(|=wGHq)2C{YsT zsB>vO6x}}ZLiF+oyTrvg0NV&-uTHV#B38aktNW7yu0{m(H7bOYrtkr5I=v2*dAK}jscYgD+Ac1Rm)*(UAH!3mi%mV91iC|qw5eM zsIiqZ3Ephfp|s?UAGR7OQ!AV1h%Rtvdk_r`YpM)`bJv~DtQ;iCF45^RB>yKi+KUM# zV*)M3;cm8biM?EzPo7DZ!u##u zd}E5Ws!zpjLoiuMhGIYxV)$*BDb05DnuD0yu>qn4^VLB>O_ML9Ts1IFN~xi5@LzxA zoTiM9Uh-4gE@*?+C8+L{$2uB4Jx*BDhLkIjqMB8vyHQ~n==9gXgM*iGp6L>-SLp_1 z2oJ@tWkjEgQtA>B&D&>U#*h&tsrWTCT)Ub?~9Iu z%h1}Cg7ecCL2#DhWhKB+MW}~HKLm_FO@(5V@F1$Crkk@tqgD85qfr%(HC-8K6`xep zfpvOOg%X*KR{t9Z3$JWV*5^8C9;5G}2(|O@t6WG0j=acW5{K;o5!9mJ2!Z_LYaQ~I^8({!#so`ZlbOW)(xZ;LQ)1lIW(4k*>lyvAI;F>raFsjwr%No?C z*=#uf`L(=vLry6sb79UO_9n+!#MIbcbeEK z!+^uJn+M5y*`{i;^$&Ma(iF`JK$94QzzpkWYg-vC@v(S05@POS*@zs^5vMmOz0FD2 z8gr%6SL^cHG{ATYfW{N5+UJYGD(HBdVUWRJi0;K0uuy6c-IhsBlj!rblJK}XiR_9! zun!+~Cwm1$7&#!@bwj<$O^1uv!9HR)!*ZE$-uEo(ck1-oChi_4-c7R`!-*4VAY+2~T|ctEX9uN}n} z0C`@(i%y3G(fiTBwdX21W5xw+u3}R&4yXIlW*mYn1UvxSS&GZZvchWGq{FqZ+{6Gg z1Yo;@)o~W|;Sd9rW5BQebuYJY^a~8a6=I7Xav+?X?)y_)6C*IT#uvC>eC+O75t)0& zb$PGCY=lWv7|73ko)_MM0&oe0ddZR35j!bWbnYMam9d=? z(D-_TLiGDPAfCFKq!8`Jf`+mr^E($5c5;pAlTjKhuQc2I1xn4ImY(`)T);&vHt&@B z?~R^d&ynU~m*M^wduGpFlydljb3rmoNQNoCZ3^|6@yKq_|^NS2TY%Xxz1dU zPV-4lxN(shmOGiAdTMiq*)X>lr7vVw0bA_EWE<06M8vLh&g=*twS8-^UbNh_y7@6N zOt1RjyS_|QEu#q7fat8;9jC3pZ4!#H=w9-A;Zf{gR3myQR zw%vjBC7TbJK9|)x5pj5s@V*<$d{nY4p$Qtgsujm zLjalXMA$#mdOISpM$=9=RY~9b^Gqvq*#^P-XIh1?m777}P1`Dz(HBqwJktuUD-}&J zWX*&xI5~1ldaPmcI7d9PlJ3OZpASdWWY>B8;Vc{FMX%hI;+MTr8ALgq_H`T`Lu+xu z%PeJ91{3q2-`9-`YH!?*V8(&w=cC=6BIns?bfaJObhyzQ&ij@b+i>3Z^^9#e?|Tko z8_xSagRu?geR~=EaL)U_cSqjbH9D?q+l>ZtAAX)3#S5JGz2jamVxjZCPlSAD{T9jk zAsN&e!tM0G>ix+&e>{mqQ$GCjwyFARD-4`n)|2v|#4F#C43(dx@WsI_f&^ zKzlC{Kl5E@{bD5+Z-E#xM|pc9p%;8Fu^p)kyqEaE(`+watw+du;qJfr6t_+Q`FHD( zpFh{2>fTGd8kxO34>ar=yd0?uyqEayY^mJ4wk}gDd6qlHm0JH^;xYfak}4J*)EJBQUn9@cw_@Zw*O9U8pF^OsPj zTn80Sl{JJ#&>;Hh^|n5YcrKgR{p8SmmC<6$@C)Kb>p~Ngz#+u6qwdSE6pPn$4OW`W zlE8OF$*0CH7_6ekCN_=v<#3uU=`=WzTms)>J z^Q-GI-1Ah5SyP(7ucQW=g{u%94JKj`2o&s#x-IxHHY9H1kOnrE9^!_?=eT_T{SApJ z{Q)}KZHvzT_-x_8fK=g|KeQgzp${qg?|T$B){MZ?z4C@ZaOlY;?km zMteLyxwfarzY17{sY2UfNoNc&NaA+yo$ zuL*gc$ny=zVZ7*}x!LG3LcS@aXcdJVDEZ7#KKd5C(LlZciiEz~zApN5bJw7rK-0tA zywDYyd*|j+ck+N}RY-;hd9x4~;DN{#uZFCQ6b~GkJrVE2Z_b0S!&rKd3W!$+3wfFc zY%uX)77BG?6bXI1Z*V-|+7ft>XY+U-#JmO53qt#5hZa)T+p_Tx0ia=#*6RdP_j@nd zytMWjaug&SU(+r@wUNVfd~}TAIi4j#SdSmpsr^B}0?fugKHK=MvmtNgh3SfA=I9tK zLe_S`W@>gMJJsJ8Jnw${PSu;{IM-fVWRBq2y$upcnXMJz)817~?%%<`|Cz#)5stsisj=6R7`pznCsDp3YT;S|OX{7G7y;W82j zF=l)$`?F_{Dj}<-l#c3Cl&;(jX?7`5I}xg3U-adFvb_*PDC_ke>y)s9jVx=Ok1e~h zC<{qh=*^yAo$lOlKywVM*4nOTtqY5+FM1xz5;KTjheTN^)O{@8^1|VO>?kAJ{EKcNK(labfZ~Gae8mAf ze3sLBrJ>W@(FZ9fEr&U2qLJeu*WAEiAXYFlykdJn$kx)*Iu7g_DONB$R|zvq`0iz zmLx`|3!1U`D|*~V>ilj@!ydpyQ+!C!?}fx$f{pNT>7+0k;#-1t)ej!X;+tc}?C5RS z(gZ~9zWqj{*ILXn#AKhm`oH%c;0K|#;`aby{QTwAqkDFBImRSDyLtlEBQ`k31z^N? zdwVL`S5nskhTDktS3`b{8+)2*$X_0tQGksa@*7!z|AvPANN*Dj`3RuTYRGHwVvTwP zyCsKHX~>WHSauK3A;^(C04pWv6nlf#QevzjKkyHUh73K{DOZ*>WZpU7a~BRA{=W-W~$eaLG;Q!^%@edek*Q2 zH6+kJ6b)$#)oR;BL-PEv+Lo%ww<6zJ{hCiO_4WV0hTH^||4=mK3jp6#L%tO617t-r%NoDWsLXWJk{jd<4PmVwV0$bkaQ)SrX=MO6 zlC^cv?1Lx=#>~AiMMl!;Wq1-Vqs%PAeAW;0=DfM;2~;}hF$3stvGYbbsY#H8|7Ybk zd$3{}EO~-3&LG3*#eeTk#1BMY!U-$Xh&>SoYxF4#!hvKp#?;8~n`LEroq%H|uPO_D z+LBCCz{BkQ>9pZEn-0;(`Ict$@dSOGk7;qf^m#3vu>v9P!a}(85BiB*`V^AHSq564?c4C49rVIMV!re1gxb)J%d2^uX=eC7F7 zpbd)RoM;@5=_mst1l9QKJ8WeFbYxa0tY0McsXyP&t+ADcU3|8l5ub;B!)4iuqaCME zP(_=K;e5Fi0k)Dw?&d1e$i^gMToD(<5j+fg7N@Z^Q}Npa_&9%037DAWTMUXT@brtMK&s)-9Tm>?ZSsVh>SdiBE&yUI%_x9pi8L zQOx*e@>75Q4c$HZm`X(bca_B})m}jnn*_OClm93Lp>sw;7{rxKi1 zHg|TeH=4i!UAA(-Ic}b9*vl1{zGw(1-&9(~wcTqSEowNx1r&vwVW+597@bVxTPu2* z3;<|ea{5MIUb0V!TY+b;>}r&+Oq=lPXbp(s2KLEm6M=ZEHApBL(rQ?UwtmKKz_-Tq z%t70-F%`^axb{=#%LkR>GjLqRC}V?_Xfhg?7;_JNN3|dUY8U3HmI({pC+_7Z#w@E+ zwpz;Z$}};?ph~Hhw`cP(=u)o8=3&q%%NY#4ryDo=IJ3QeWmhBP~Sps^MT>eD}n z^=zYps`D>NNFy~$?swI^7t-B|Ne*8H?6#d?aiy=N<6?h1j3P$c5YvyOaMG6L$pgUe z#hYj(Hqq5KWI{LJ{#dE&cnGzz3JG8H2^#lp+PYtFq79M0GKq!}BR+t4LkuVq0c=Yb z>n8n?q}k|qv~Vz#!4m0j89s{a29%hO=pySQR0x!6N4jJo@yS-AvnP<(WQElq+c|~0 z!=>2|-+aLw)A)kuP^5KDAm2E)D!MoDf@m{3$llRZAMl9|5jx%qfo1){ASF)*^Gh`2xKB@-&2ToMWtPS+e7O<60U$txNmBRt+)fjEl)>V}jR4 z)~(eS(XDU2Ro$AMHPx+~t=Fhi)7b%Ae8rZ$@6`7oC;N%!jc8|(fj^b$0{j8V`(t^8 ztP79r6gvP3yLoH#^F))-r%liJ;OfKqxi2NMW}G!Fw0Xc%=W{>+Ts0@LGty@{Qeiyk zdI44zL$GHG6h_y4eu1*Ku&lq%mc;?D@jTHc_wXBPZPtoLyjVAAxS5S^xBFJCADG@~ z^19fq{%q2M5PN_p9`R7*ZpdoOh(DkNpOS39le8zVf%Zm^ z1&8+o>{IBL{$1dzGgR;{@F?5E6OpwLkt!;Xx}d2S+kA^3iyTkJHSB5v{dk z3lZX-pEEnXLwqk`CwhiO>!Cd>~ir(Hju$J8VjeRVs% zNtn^yZK+R1m=^p1_v9CE#6+NS<6z=_O`i|vf=W=F z6KRPKwjz4sB5uKE_}a;p)9$I{RhN4|6xRh_7tDq@5&6o8Z93GuEB3AeZ?dCnAMG2G zz&;c$0{ciH=S1^eeU89B5{P(5;Dzwafd_?{zyb;EublQmN8pQM0?|HLkdkPytu|;O z13N15%}E<5?~C5`YGYnsLOBYo-{iIr`UgmV=;;qhKlg&oca46@7#xy*#5?-`5v>CH zgP8uIQ$hdhE2q8pUB=+|eb6%)bf(0upkNs#sYdKw+63Yxaf8HPdu~v>5^EPmt6c5E zq;?>u@diF41;%`pIMQv;1oO%y->-4bLJ7nB+Y2Z;eQ9w(m{%Oe@!yC)vbH zd@3(sc}r_=Boch9sMlIiH(F7@P*LZ_MFlKs_A)tOmfBrYxCEs@wzB<#=+__vHOl8U zVxuD>=DTkG$CWKLY=BhYD+r{!Sts;oN47BfL#90@l~#-< zd>U!(`meSm-$3*RpT^pB-I+=&MYsmb6bNeF+4c2Q+Fj1hR|qGzumBadtGpebSlXP2BFy8n zrN%w}c|Bhv7hBuL$JicuWbNHGK6V9x@UM3J{^t0sWk3!vE47hY{DOno9kwbtj{Vtj z4B-sNO3_EoL|yLm$tjLufdOSO0)2|Qa3tYfDLRMQcDQWt5UR!*h-VSvk}O1P$K=gG zIvo)6`7>Y_S=Ty??csW~j;}pkXNkAMk%*%ETW>g{x_gZdS3Vy(AWrMr+wXl=N9Qs; zo5X8`UNC72wikssTpsk1oNiB0d`)pvHE|BtN*=pdCzd}KZDnwVl9IgG$gI zmx2`^@X01FY&hTJQZiADP9*T41IGPKY_Qf0#4dxVlX_HXmTXsoET$( zRWF>c_*Rao2)f>E%{00Ef+wwLskV(#UHGVpI7&JQD=OBboY)0n>rOUfFPgDaS`s?; zptg3E^`NlOxd*LnZ*L^z->})ej*ymzN(hwpeiJfOPYA7yWgV06BHPXepI{ihu#u(< z;;8*(&gg#AG~QE2*+y1YIofy|&o8~M#G8L4wwinI1$jR^9Evx>xB*y-%x&zU4t(~Rg zbo655>iXr!8C2JO4+xj0Ap^dy>${d&@{zY$vSwlfSGZmB>yP~P!Lr9TXliz)qvN1+ zbTsx#znA_TJ&6F(?CAZGbv)i5;Q99p@Q+=8h*RnZuF={W<)ex6Y$i{d0Fi%gst@Gu1lb_Ztr~olD_J5rVJHl+NFk(Ao>P@-v?lnN_juwcrWkN-HbUd zj?qCzXrWl#Ik0+hr-5MFnH4wf{NS+EGbpi}eWNUdAGtJ|Yj&})J-zYy;3Ms6w8ucYJ&Mt5nDkxO9x}Bt!YwrL zKZU@52VhjIYx~|K;;Bg~I-oN>jkqY4HW>Y;!=*uwbas_eX+zPiJ`E#KXV=kS5f8PGwCKx znAi27)vYpph)w5X8~oGQvz4G>-{0k&K;zfPf%~=;DH? zi0=eJCy1K?SqzA71eFMiw{27eF^H`5|NYLXx{rS3fh@cK{U+Zx>3geAojP^u)TvXa z>eL-Tnmc?vh#KJvMekn;0MZGVaesQbI#4+CMta-T$TWrTMq$+~#z{E+PIVGCR%e0l zC!oFP&JL#xtj^1ky=J;ndSl>7CFQA|0fEwkQPtqs}5$%Di!PDAEhmR<+j%#pt z|Enmpr9K;hk!bEfT?q&r{ z|B^w$2r6uBFr!FL~3zY!~tseEE+`z3&q0&%*5aU zuaeOgFszlJMaII4)zknKdOq3J61T9Wt-+QAHfdq;Md#*tshGN2IxK9@)?lH~0GlFg z1AgyF{~jUTFFeNW?lN72$EK^hu0U7sX}Vgr2DGcu(+xY?OhA5rZ<`Xo!#Q(X3R*1% z_d?B8KVm4@-4`~re}#(z;DGI1$t_67GWXd)F8Wh)i(W3R5nC2LD7hssmur3IHsCFr z_{!S1G0;9wil4*`UilVtM2wXXW%6s&MAi$j6b3*6VpOnR?x9%rKoBLj$IImzWS2+AjYQytdU&!wS|A2ZpZ zo(pOn;4xD$G#)C~7g6=?_KmU9zg~)t`S>J?qy@nOaCcRKGe9E9870hl0z+Je$eS;d znHitPlte=zoq==Y!Vg|IK4-RW&0M&AzCr6NRd;5I5=#)iM4})%GHqh@ha1)7`iAemMf&z*k7UQ& zPyEz=5vA}CAD6~nx&#zvEQJVDii?m0u2h3CZs5%(p?lVt*wqr{(H;ZcO-aV8OWrqB=8ss^)iESq04Dv`OX{*yT%Oe#{?R+tCCmMVJXyWykz_6ZcC3`ozsgY% zw{WwYGO;pdf`qag&?=QP$oYN!VM8W3-!L9pF5OY<(q25qKFLxX)e|Vw4L-;ltsDlH znsf|oW6qrd1yk7zIpA+;(qdyq9Ldy}fd?6?jMfgS1#V4TC>>){qQ7QrvxwMr&^Xqvt6{W}ck9C(i9NO-WB8YF#rCZ6$U)!;tLXMc;-y89>}V`|-fl#epC?mo&pm|Axq<#kNm&ig1E z(|cYm4QTfvv3xBJ;L;(ngKKH%U}}0hX@Hg1VLGWAM>k=LiKYkVq+?54tItB~c38%G z@@M@co_$x&&%*dgVc4c3%Xsxqs&(1U{E5OX&_!{{(>FpR?#Kb2Sm=Gd{YG8}Gi4e! zPo&CEL&pvkPci*pQc4l0tL+|mFxgm%x-=0X$UuNNB~sR`Z$bHsMA#)fgfNU>|HX;d zH19!kQXvQW^DTWl<66}z9XOqG!r+l_{^yjOPMLm@J)NQ^&7Hk8Ovl_CE>uN=@kMUH zE7G?ch6LJ;`P@w(E`AxjaRdhGtL3NT`yOBzMJuz6vc!v=?;vMmiOW6?u2H9OzvbdH zVO0&SxcT#w>FXWeyzXXXj<;v8GUsn9pTzsR0ZH7;OT3hcoG-@Pce07q9&-li&sUnV z)w9-(O2H?+lzAp)qnC0x`1Fx6?82dQvEimS2)FkzWn}6we#YCs2;iBca(3wvwWObf zFjUWAH{x(vn=LNiNiOK30xrOc(vIPa{}5gnMg>n z&gqQ89`ueD`TAY_m6+l+hEaqFL6Z7bEg2~NK||6edwf1##yK3F>Ey+BUz!rg-TXqBghOh6M|WmSAf-Y25ul>}^oVut^C zsNe_aF~7Kek7r)>AclHgC!`qWtvO!}4-P{6-JZ0q!P={)J~`$z<{tGS>I-yPKc?q3 zzyG(%kvHBtIdZ1?`y76Mi9aiket%m1s`>z<>O%I+Nc(Z$mr=D4KjZDEUT$~0je5{- zytu=5;eykp3kzScT{sfEga~w?E>@HmD9TlWvQ<#(K!tiv-ApcK`82?%gZMjQeJpL#!s8FUN2-rUcJ ztovEWp$A&d?@i=zh#8DB)_E>rBf6JaNT*(}wc7mtl<_H*=Vv~`Hh1@H1#l7fqfU;6 z40wpKfZ^T1loJ;C_#hvGEhmR}A*yJMB2E~@&|z@LmrugCU&q{kor&%_P@ud6Pfv?- z;bGP%KB(=-xhAw9_1k&T+9zN&M~so_6F#7%V>RW?NiDsHa8$G;F25bE;NzraZ|6_6 zw~s%u#L#8PsI2CHd{T_s2htH3{4>DK>W91>(^rFQ2LK=Goz4t=N{a(qdu#Rz=Fl@P zeY%QoR?aF|>#4bM9+ArTeS(MbKFIy!Axy`%N(5Pw;5umJS zkumo}3n9e|!fAhHniEbt=6y(;B@G>kb>HbJykEmp0v&o5Q(!mYXS{t^NQ<>hjPLNg zHK&4>v+*}<{yvT0KK%Kd)hAzG*if(OkJL5Y9?#XGaM=n181rrINz(j3-{CbMO}0J4 zt8JH0fiUWdiV9YjRQS~s!{E-CdoG#q&xQ$O?hAay+y+Fd6aHL8!qHy-HD}`$7wg1U zf5qd?xbo&wri@Iz0YBsIFI?7uH}gU0a{PVT{M~`y%kfvs8@|`vZ*dB=R*6(_C#|(t z#wZ^r(QMpF3Hb1Lg@CK@Gv3}S1b8J9E3Ge}hr$biqxL!-b`vKwPS*ouEK+;i74L-u(nyUAB)=O5(kg6M87VMk%V>W!DEty2bxoI zg#KXe*(`vBkI<+AMO=emWZ9D@c{yo98oz!dsEL!fMWfgaALT+e>Ri01O~VFM5(!9- zb^mNH+&+x~^fJJ!e0UxY==dyKBd)-#xB_JqV}p_#U)hUDQWn^e%F`@m-QdD4&+&Cx zsTU_fFpiLO)d1f|=1qy?z8Lp~v*j2$>nRie&AN#VGJ}ZjQXG0rv*(2J0C98*<`Zzn zWF9e}pqM+qL)a4*Jq`p2E^x{>5SHz0fiqTi<2w;lk?eTxUD%JGlH}>md3%8tbv(J} zLn}+iK|Pkvv@?-Pm%sl4Oo$nh@rS8(#WODIz;69_-kq`+ENqmNA-NM&#O+{OYILMo ziMwJ7`Ou#Dwn$tSKjZDKE7hd(AX^hFKPs+jO%bbMZ3l4+i&m#;1Cg^BPjgzFk*|>w zfX>oIt69tP=eaCLz7xgS^~cm7eUQx2H^EYnYtbR5mXhZ6AB z^VhK(=o3dbbXR3o@L>FOQBaF$m6fw5QMi23%UHodsxLU1py+jgu;*{F zaGu~$L@gX?mc1mi@@P=5x95Zl_}?;5V5Dd6 z5}1bkS_Sg;IEfElR+PGPCM+UU4Pxntv%`pkgysW;3hZH)(7X_e|3idwmE-Q(9A6=T zPhfwu+BCc%`0#%SUy}IN3yjzBAbq6(K7qZ);wuS0{O{qTBnf-0yi0@5ZH~N0 zuC~fh+2d`Mgp?}vfmKS2sU3&pM&iWBR-vB+hAovVpaDZjJEXj!2PmE#!IiF!@^+23 zG%6tnNSYNvX5%u+=GEXk4z`Rp*c(t5$O}*wNY$e)LCOM|y9Ou=B%@3XWr0kTK_-se zk;mLB9WiH?Uo3GgWRx0KH1kIEq_w#MRJ!{+aB5Nw7^w2ya^YFvWE%C~Msz37?H)5M z=XN<5!YgNMpF7mQ1&|?X&KGY@}A~DE_dl@Pw$iRR^ zM$*e*JETNbGCEK_%1KA!e{dv;XZhb;@CyjM!-0>Py2&O=je`M*7szz(?V^NR?3>y2 zgNT`Zq8dGK_@Wp+N8o3?ed-eHM;wu$1|!_b*EE)-cm0EIR6tXB+6ExUf;qcrUO+OSKsVOL4RW_{E)OiCnH z-av^#mj)K4pv_1{a_TexL67VLoHIdJtS2BzU!~%JzCm(Pk_#Y85HVloNc>Lya^vDE zI<>`d>VdMQ23 z9<1ezRIf5#S3X(q+7JW2W<7}R?6)$bz5%%$9e(JSX>wzMT)FJgIyPA+(g5>)T4{DbYhT8D^$!~V=)7R7}Gh7c;H>kP56co zE#Ng890nl`4z~uoF`j~Bv%eHsl%XWAyhQdMR9ruoW6IC zxViKLALQTl%D-=ZS@`!5e#YBJFBbmY%o@xp(lIA=GVBB_7s1D&IM+?mtXfv40Hv%n zQCA>sKGwLY#NboN*?>XmL4*#)41N#k08Tj{7?tW_?3k))_Mm2tR`8Ltz0|+>&~1VT z2+dU&Y$v$sjJIqjxU!)#gFO?&f7k;XiLLn(n5vHYFDRQo#*~q%pTW;~`x%SLW_8q? zMWNi15zE|f!U*6byj#wh*Pb1wNe)$ex9sMaOdUR84hIhPaR2uc`$qcinH;$cz$Hv2 zss|#9W?f$t3VW)vb_|D>k~a3pb8$z?gGnOo1w%wZP?V~N?I02@CRCK=#_B<29#$;J;zY+`krmHU7)%oNK7R|?oUK&M zyhKvqX~iFVfS625J}OC=mo$kUTD=ulowTEpUGTE$)V2BI*Oh!scLCb$kak8GHDd!f z7|X7vDg7G!AZNnzKe~Y8*jhhU-)It8KbO_?Hg|4=fG62ano}^ z%ZrouDa3j$K0wMlw)~;BoBwhF|-kbCCRq4yfaSlPKQ}+n$7PP8*Ofq%5$UmG*}R% zjlGRorn`2%X3xWjQ@3BFA@+1OWu3YuBOhzm|Hz8#smASb3{ z<`H8$R@%5oAa%rp(wosQeAi!Y3hT|<&dAkzGcQ^|8`nMlRB@BXDi7=o2lCzW5jEVA zf~OhC#$`>FQDj)ugZ(+)<8hNo670apVaM&7Yfqsp9Xupep!;nIEoEKOX-$UHb09K< zRM3;c&m>#{4aiaSTcB_OKqLo1#LyVXsXV=tPbnwQZW@2xxP%wvMSA5F3*I>3*e*Bj zLz{N}JCo3!>i{9$j>_Ei*v1n?pew&bsAs+%!KeWl0|S!ef6fYWD}~DWCG<^oPg+4L zyry{=FrtA$_Z zhvdRAK*!pu9g=gK&;myUkeM7wHw3Biqx1(VAw75vSF+Zk0wF*(hF4RG0k@SfM=H?= zv?Ldx5;`T=lA>0!esQoR3WG|>%1}#?qb*S;qwOBIq4DslRC<*tX*HDuVNeNsG1L;T z6764LH60C;u5ypHIl*MHGHb^7cVp~J9vAuXzDBt2k|b3yATnRzamOx~6r)ZgIusNs1c>ZpBtFi4&%{a>|6`Nu+HR`(B=!+wdwtIs`+1}< zGwCwqWWWd}Hi#0(7x5Q}Gpp+AgkPD0eCx7DArK4Yq;YAWeynSMiou`5XN2H9}cq8c8{+X(aPSmN(%cKnFp+ zbfJR)LI+r?_@poFi#UUTJlIGNIUgD!R{%89K+>^Mjy-gq*N>+_5TsIQ!`Qb>x+FN& zSmiXxVI?a}Q32vK#r3l@0x_jzru2q&ydu&=EEe4za`QCLhSK+eFw9l_p-!I$glKH+ z<-1I^{diMvotjlvQhDHn-)KT`s~?YaY^V9c*(zXj|8S9PdsqvNXxzs%O)w%MFS7xm zm9bJ86a{n@DmF?({H&PGJg|a*!92nkRWPS|2o}aay24u+?}1QU_-~F}BMalx@H5_? zf4{#l4mN`m@9Iay1pRyO5e%*)y>_8z=@xoG8h`;8VJot2CoV&QWN zzmJ7yF1l~L{n7Us{MvU=euu_3{Q;&fH@adE;YskDo*i$$#lnMez#yjaZ65qh79P1X zWErqJeI1xMET<*t&xZizt;sDpJg5Os^ojxP#Cn041r~Iwd9JW+)#EIj`?-hUc0oui zR#d3LJNau~*&)z1HWMdRg0FFXU7aqmhp`{=%^um0=*KJUTli7#+%P%vP5eFe!^x5B z@1Gp$d1!LvuCe+vGohuH^`pd|J}{;BFUA3hxEb}q>)n!A`JaXkP2uU59|Tg&lm#V* zBsIVK>laHzSbzDHJkdgPyC zT2e7RaYV$l8$aXicR_Myj#72V5(*u{dR_-vq_(0v#2%nUNXgZ5SBo>klQK(B>s8;tz|pc zMx}upfidM?bEHyc3gDm|>`{gE?sZVeML|d)niWPguO>Se&VEZx_MC9`>w?+p5;tdh zKT3Ca8fswGbXn8v{S(g}4t+0eI3$m0Vn7;YlTMwZr|9hakLTjO#IpceNcp+_f2HsJ4*_`4N<-^Sm6 z;?MdH`781sydE;=#9TB$Z-B#oAlj96|9XV<4WyVOJH{zH46rE#U`myaMrRNDXIZzu zzTpr$Qy&MpC8#?LK%*o~(6M0v+B2Pc)XNZePzb;z-f>hd#lAkU=Y7Ehj1uTH&p;%< zU_qfLAMXJD z9G~>xhY74{0)akN2h^YyHJoVBiW*MPv}HT_+n5vVL_+YlF(>}8_5K6Pj56wzFVXAK zem02{1v4Fbk@J01*5W-GkKyqQKyy<`|_>zOs%nI##&s>#UBc5;$2W;22ZdJ~~jtxp~#T59ZP z0WF1Dg(rJ2!&%76N8~X?I0>_ux-U?>_u#?LCk`lX_?1qU4d-X~e}A zR@sDt_r@k1=e@BB?x2Na6W(s~@ccGDYZLC*CS;g0GPM&wG$3noAg`njZLa}Z){T4zTx>l z%U+Wn)h7K1Q%0sfji2%MHSeu&(ys}iP5Ra8rb*EG{+dHpL`k!1k%_UN`9(3WVbqy? zn8+~pQ}(^+oHsYI>}U41kmu`0NWqX_--m5|D%g2+Fg_4`D1TaeXY*%L@4NUD?LC1% zF@$-Z!chp7OE=pkIE`I>XCNWNgtrC~Ze;>!@``+m3Gj4#2|qvrox|UM^J9}EhvUz| z-)Zu=FY)&b{$9dg{O66vt6n|b!6u_hd@(WE*W_qTZLBNDytnh= z9Xx?0opJ`4>eVM1XYhe7=0iwrB|P%Sb}w=m?-0{hy97bu~h>ms|R<}@Hx_l50HY=4f!Q} zGtd3rvloXo88=?Qu|ZC7nT8W064^t>l-CT{qE16 zUm#P9>qdb{nOcC1_!sEE^Kfbd@pUk zJKm}i(|{DADL8(FTUitaRb%c41S14xL*8Qvo;_A&ai2fi&VP`}2C+@70P3yD`8Tc2 z+!QzFUW8K>Uz%CL|$y>-50y26SWY zQ}&jVZPFtEj=QR);ge`UbE3Qkavm5kZd-WK-Q$9#X}~t2KiFT8zS#NgDeHMCaa(N_ z$sd{eADi~Vr4GFQI37sd;H9=Tx>I1%(houlam}rVd!lkqDhkCGowW3Xax@M3iqGVy zO|Qck$kPKc09ZXbguEz3r)}oL?&tr8;?SCz;n=+bZ~7=)ESOGT>V^i zm4703q$`^AKCAAO<)A=p{?F-&IwR5;3_TQ$%lUX9M|*+%t~g1-okC8zji>wJW-9KC z-}VpQDwy;>+v57h2yu70kFa&?2rK^CQ1R&!;?}a2!Ft0kgk4+Wcu4ben0I&ZtAr?1)s4ZA^qCM5Jup8Oyz1@-7% zADI1RW%d^@5oXW8&v^Up?;*2kSx#bq+@T=1Dad*OdHw|3A7GT6u>~Ox)MCaN8H&qH zNI7A3DU467{iqTAS58EF&{?xfd{6rM-F)xRlI~C5u2x3syx~p-FS_dkX?otK6&YvJ!%q1DJf+6(EkA;pNskhEAzxGz%(ie%)#QWH^4_&;3<>}g&Bk!m+y~ z93r+%G2<<9*;i1tfC(pq%#rp!e5#3w6AtQlV#S6j!?aNonf2}$1kO7+DGNyt+T*vN zTxL;bbs_14SxytFd%6dP`eHLNBg)JFyTO~-0ai~=h*;G%S&Bq_;ALMzNcBh#6H5{{?547MJ9JHJUY)9*_s*q7LNdywG=A`qxP&ss=uWr>VI;3el>|!(n&R zld~FuF(MBK2C@zEfVlcLn-1gBLtR@YkcTq1!rbDmRp_-RK=ZaL^vZ-Q#NhAtrg$?` z>5p8s2oBkJD9qg*kv@+spurkSx-ePG$8bjVgO(2lHH8P?E%(?<7>q;jyRuJrwjOXV}G-w>=_+pFMn7@*$EeNl%04CN0|s4 zKQ;t%hSEhm@RNPNSNJ6W#Jcqwf#27M@3HVD1OJBx@PF*`@b@cxY{|dlOv5y(l1XUB zP`V$(v&yw$>@4JZNeU!Gmq38F?3GR*K!S#E)JT0W!&(jssCq*F2gX$xISvj5kWr}1 z=t^X8RtaVpRimf4f*GoCIADXRM%ySJw1)O%pc-{9;2ftuAR9`}r$Q$TC=nxVL?Vsew+b9Q@Y13E z(Q!QjOc|45#l~HDs-%%-Nn_@Pok#<;B)CjKzXKb|M;dZ2+?QVI6jE199n`)Qarey_ z+gw5jg1qSNjQgn*v_aFPLA;wt&}kp4R598E&@$hh1y=b{`7m<8y@kd*QG0!cuc1l7>0Nq zZ{V3ec*GYh@m_kEc;+`Ho|!@7iNhoQD}N0T4^Cm$%(y8-{HNB3h&O}A5>MzL@jBc= zygqnhb+aYjOAiyzd?8*0OF8ce7Bhpy6Ng9qb1#O87tSv{UOE4Z(Gc-wR0W6+asEXs zUi#n>U$Vq|>0#oT-;{V}28kyQkNCra#6ya;N(cq`YGY|3g~DOA=;#=NB;RRC<%8RM zoUT0Hy}?@g#~|PU1=*3OBNNoc9>xh_hH8GAu?QpWk1Udz@bM3F=4?NTGn<`Nx}{{^ zeWNM)Nt8@nTCr8C2&i0wGz@TSY(mX^;wqzN&>GNrn=Ql#k4K41Z?x%NClerX>5xtL z6f;*Bod&%YnV- zD(|lOZioXaM@=|z<&_~0sM(7V!H2DKfB*pwXeAJ5<-nbmYDF02fLDdWfCC0t<8aVF z_Q7yqz~bUVhy$AAalmo+bd&?1z`5jr45$M3#5F7fSFAA{fE0t@*V#VhgK)r=mU=R< z$)*z^zyYJ>1AXmS!WE~-9DN0o6#yJCkk+yX2NcF|plA{CA;baA32-C_a6l^w_I0-pnr zi1-lVfaZ7{=tgGj!PRK|$F7n(QAxkpP^d&7pan2u%oqQXQxCnItq02unCJ+jxUyPp zY!`*G7{JF2IJ8<$LHldfA$j)=2A1}e=ZnvIn%^3braN!|R|ynF$_9t^6vPrvY^36U z_Z`P*|9%xm;1ierz&25Z4^7ku$nmJXe+S>Vcx3KL6y)^J4=Jg(ek zap*&1t}xHz%D4X5oGaRkAtNN9fEVSK_ws4f24jbZAz11Z6C|76exm z3|!GHa3!ZOv6nt$xS|OjSMruC`p}pw%=5T%^B`fq(`EKc0aS?E*_j71lm9W*LDzmVM~=o*)Tbn3n!AgnRo4 zEt@<(Z--LIk+ z%j5HQ%X7Dm1B>9lS)MzGYWO_=sBQ3hv*oisH0Cq&JU)N=cOF|B$+O~t2H0+d^L&Js zO&*`OTb}Fr{NE|hKfAPs&(F-+2A`h=3q`@{Lt{QO&*Sr9m96r5#}WS8RfM?2!huwJ z&SwAoA`Wn3%LZmM4=UE&Jp6#(95#NoER8$P;nMh}L%gjUTox7SJ>C?~Mf#2l-3`@a zuiC}lYft&){_zL=?N@tIF1Q2ldS~L0X!0X%_IUpWnS7L@NqsnY$o-_fel4DE69I4w zK&l7$HFqe`c~1p_mJ<&)0{SC~A^Yh}v=SE(;7F}OpIF&uYWoMSImRhxj0!m_fd(De z{}oP;yPj+IbG%EB9dqe%kNfK>dbCie={wi@y&(r^D!wE+et(%Kx!`v8?OE zbjn53ZHbnKR~VD4Q)m`P3l~mai}ppTi){&f+JpkP=>8Uq@Q|*y!bf)QGk_<+rJe_b z9z`=BX%lwoW_v9E<;Kvt$Q_CH?!^VsBnXu`J5r1#=&EsOd1P{7@{N0Rf$32m=$X~9 zr_dcRx|JPpQj|P53Oy9tE(O-06is+Y zq{sc>G>wRbVnnExnbVFG!gJys%;S0LPjNOG^W)gXyl+Lu9~Nj3n&i~GP0nIdRKF!% zf9SxUzhFOMgEw~OZ}+ta!lAZF6ts9bKkdLsN-jX*tSF`uE|P@>V$jbf=_vz`@4Wnd z7yagdPTKNC@nWQpWhDxz=#1bbn0xdUJhKlkB9FPA^Hw?LT607vL|;Z!8|VoVqv5PU zV)m!8gsGI(>3t-Khd{8m2~4>E^3WHyLdP!U+zjAj=8E1}Uh{d%+H?@Zx; zz%39uQnpiynr zM&JIRt!fmV&rr2h`AMIp#M01KmGKjfzej9P=h}?0M5FIN`tlZT&}XHN!Ehu_u)Lh` za~N9`ywV`=9--y)_7IEAx#n6-_8Bz@=H1jqXX6D2TJ?flD4XE{QZZ@FDX$L(&*$CB z--M!kLwJ7iB-ntwdzS&PUWNjBh`N6cxH0`2I`^SA=xH=u#x2JpFY4ORoA9aTH<6tMjXj;Z?zk^ zPl4%_`=m2-#afWr0G5>qeycR3p*eP-YF&hSF~;kB&Q~@4ZV3#P7Xiq#EP~bhamZg{ z#lMW&8!?MrpEq5f7`zlvNbtHJXr%k0m64{0nH{r8!35^5ruE(f`A~J8g z6F9@4zIo}TEeww2=$KMD2j`&eV$KtgQ2QK`EWvXWgs<-I55G12@Xtf;QuTK=HVPG0zG*Dp`5ekS$qUM zAVLF&GZ7Hu{^%E5@MUG3z~;3gv3uq+i0ce}!Cy}ArAIE2cR*y)U> zN11+}rX%)WOHTdCvBa~0u{Q1rF^0n?r>+p(a=Yeu`_KQJLgI{3keA}2%Ik5ef9Ac@ z@5Rafz-7NUa-NDVjkA8%Bd0Her;#6ga2`KC4*KWYR@$?<-N9S6Z+&XZc;z6(x$+<* z0#!7aNUvSytHzuF4R2o7kDt2(Kix8pkS%gRZa_^72S|$q0{{^(0mmi5_SzlrwBN(! zzUh%I5{uC@+=*kza_&BvN?iUiG()b!?$GaR^sMMlo_gx3G5x+q0lDV;8a<2h$qsNs zzONxKdN+6Z`Bd|}xeHR0bgVP%$nnx1d^D>g(q}$Fa?_Jw#2e8P{SXT>M{%B&N8pD$ zJIH1sAkYJXu$)iwly+i7zMhB=Hu2Oku(RBx&JG^EE#d>zNM}D^FMWRo``)noUF2ee_fExisl6(K(_n^E8HwBA`XI=}q-*1@fc;8LTdmZ@54=LG{ zSNGlWS#f-w!+Z$Sac6lcozcov`PKzmOtZB|=_QA};xpN<{N7 zu0Sk!#Mnp#2%|)_=|^c+Z{9LqeX|n05EqT3W6j4@icYzpbUS6I!|ndBJ(M-M;I~Wc zaFe6QS=;2SGrO}xqp5M++UXc?U-Cx~IT((GpwgB5S$!r$JB2=(^M@zE(Vs(JNg%G{ zPfo%}qRyaZNG%ugO19P#YfTL8Zo$LpD;eHv7%f-f`@=3TOqQ$gIppLj{0?RA-p?v? zx9=)^JIvlevJdp=2=le1d_|a+JMHB?BGoe+6Xgg|Z(M}Nl9r9a0cGZoo>8Kp!cEW{ zI4^;1W|)8bm#F{qKwt_nB+T@_xfefa^_T>gq$Qv;4QxF;gunFddZRz2rrRk;F^my# ziNp2?K~GM9VA8yFTE8d)_Rq&R4$3D(1w^M*zooSejwTTWVQPlpJc)6LF5|$@=qF4w z)iy!tz6TfR%Wx~&)8HXd$TibQ2!jxfv~)fR^|VnQC-U)W6GSlx0hr_52cd>nj^b+! z4dIkf!rdZpOIoX~)vHOmt)WjQA9e*2Q;=XU(m_pzFug2^P7wv2!EOJ!4j&BTJgLN5kdD+?O9_dzLh9kA-_w;FhvIH*l;(mcGt5OY3gj9Gy?a zXb88=ii<^Jnw5cMq$lAMG!MVXMl|KJd~$HiJxZyP`33OlYMf*=#)TYy;3hL2*au&1 zS^lrvLjJ3b($!*4h&-n(v7Eg8j$~>Pm{Y^}77vLwb6K7A6x_=NWn%T?rvFK^MM?~8 zc~k1yF0aEu!i*);0%d2gT>=3bX4KID$wb&J!)B%k4f53y;grWS4%Zs~*YGTHMW6YK zlNIL>2`NK@@JaOo%)_vRi+%Mf%Y#2U5BZUF*{dlJKJtejdX?nC?~7%EGI7OgFAug^ z1^1=@V6*L*OdFOIuy39QB;TDb?lRP(C&PQ!VXVlIcb^&MYks=gUifWrh zOIG8itGnTq!-#_?5K>79HF57?84O8$CQD7+k~ML&A#LF$XB5-*q`I`_k|e(K#?NsH zxgHR73kEAevK-hMXYk%66>LsyE&0Ysj)VR8<|}7_m!L2OjT6-IK^=nL3((3T9N&Y1 z@7q{DO#Du8V1fg$JqPO7GZ^)76KtR^5@m#MHqP>%u|&aO7W2GQbOds9DIYS9@x5FT z(^T$s}5?27d!OsLrjSE%%|kRU!OdT z`MH`n1{c~qB2>DgNC=?~;VZIu$!}^Y&{VF{q^Tt=hoz~=^_to}*q=@&F8_jQd3QOV zet0vhEDd+&WPOxVe@SUYf9|UET=P9rT_YVX)h^2Ca@Jo`;)^ce&U`W@=6GJeWtK+` z5yI!`wE#gNnDyZ55J#!P>Np?i+h145{{n-RvxUF`EIk}YiFAcGQc2o|yw^o&kJm+b z_PPkq(nVU=hP*84P2sF1ryK0S8V!>~bt>~9HM)vm7iHizcmj|c%$!zxAwb5Py}rTL z8KV|vi_9T&<5^VKp%2`j(p%C1EmvCG z#2amncNy?jvXJWvxhOnAvxDr1`~R=N4WBUHLe$trv}3H_a{=) zOU=ClB3zKQM#8l#1`~KwCtRKbo?g zM);*+&L|nZcB8`p5GE(x@R!U6zOV> z(s$UPmc3CXzN~SX_;Bamjmo4@rmabtHhe&^(m_tcHV-)XLi&B1^F`)cHS@(DNT``F z^gbZ%6+0);Uzqp(h57OJd5@>42r{+yeHZ=xHJ#2a4R)- zSuZZ4 z@quS-r&t@E*Oi?bQ{pmQ+4&D@09PCfE2n)Uh7I-)B5M9w<0|6y3?+~YdrYcS)^d%g}qAO&w>g{f% zbVv*)syG$T(k|61K#jsXJ0t32EOx=cC@eG@rQj}rlf51mb!Dr!R4*mYf;7-x+##ZY z?f^Y1XgSJ+dnyJo3b8E(*U^`P@;M)!WJD)F+!-}#ZGklSD%l_TIMPstilj4c(&&%2 zX>_Tkz`4*3HwJE&s#|^+!0JDN~ME`ZBsW zCS(01B@bzAnvjQ*(ln&8X*R8`aJiyUH-xN}YzKK>p z$|o32ezL>lb1eXRKP4c-cJ(eG&3u(~b|5R@VaNjxZn)|AhBgiCG%oj<4ocB+*7Yae zMli%OuqnOys8F`E(i5@t29rU(rI*4QB-ha76YMKI(r7#-&{q8BcZlAP^4`I%(Tlu# zrQ(pxB3V@ePU_QGlmU$&Up&VcFRKi2Ic)q)th7B;N-7^&sxbdM_ zsNLxD)@nb~q&}pH#%-;h%fdh+Rlq?L#k24PYQl-~2BQ-7otAQ+f}*Itb%%-!Ko6kn ztm+V%vuZ=yfJ$jDbIwn%-`vXjWxKCK7Y8T(K(}~H!!4Lw-au?Z)SzAHU{Xu0Z--l(ZbantAS}l)~LeWmm`&y z$ljtog)@abyD#J3`77)(bv33SFBHfg6D!_mdd9&7yyy|709ZJ&_?7jwYwJ(BFVOnH zN0^~7jIm3x8+LN`Zlz))1tIf!z5H>dQo?{KF2Vi1yu}u`<+UW`w!AmsXS{v&qbYJ# zXhS`a{M>A3Rv$jV%BlD55PIBG6{~#1bV}Y?nCD%e4U{gl2ktGEa>Jc+`5}ZqBD`}{ zxk6jocdJ>smFy&0eFhblh8?4qv0-NR*?^W)U2&P?_f8KKfX8R;+?X`c+_v;{P(Hx3xP=(QY-e8%qDHK zhtgv}h3&v^cud4sX^;e6^;u1d3=gFTkYWJZ@H*tb#__t!e~sdGb>P)huxu*mV@;^M zmz$zGneh#ez4(=}E?uSdFJ%c5g1jYO2`=52paj2GKZk9WyTovkWfYL*ooC0FLcTOr zdTs#?H~nmdzN72{l$~dxc!VkX2GYFFkK|e7Sj%A>b@O9Cd9{ znlk{J186aq;r&)3obuHk$#(+K{S8F8@+D)!>SPZzTEl9^1>J_q=D@BnxJGP$Y$Wx9 z<|d+fpNEFDIq~I32_6`+ali>(b+~Yi@yOMt0}ZZ|iEB^6RnOn$Qy_i)P&WEi>V7;x zFlyjrA{EGUJ;-wj37(t_@$By-mh-*5^G)9Q5S}%79=uzAB8j0dS+yqi&b%d*c+OO_ zs_&7ubx~nmEj>tHP#WB?{Y7s4pG9o}HCL0{wT1o{4ErNmmJ*wP#q%6cHcQh`Lyv4f zvIlzr#iJO!2Abw=Zt0N?`e)Ww`{(cYpdyO{jTLk%O=metU?tfqhA_kmzR7qU&6{74 z7G>F@Y+de!Xs@=YGcLPjxG9_%0h~h}SxrMqQJO^d6_HmoFw_@wmUV7RROBP^wW9JS zZB`bj=2UL=`pS$3+gV#}TXd^!yB4`MZ5uUov%9j=U97(3br(&sQlM?QrOn!w^}DRW zFgPAxVkEzT%5)h`ZWTfH*w#ew&_8cY1lJ=sEQ0JWiWmE9mh=}TrQ7STZsc_v7>eMW zWsOA8QxUV~jnu1%k3#T)hKT3jm+Z^+9=5{@YZlN{hS2Z0sG5^eBU>jtlTEx$aA1N1 z6C9Y}!2e|q`0EwVvxYs270+~VN39$?@-lOR2A^(33M{-Fej>dY*k^pA^_Io2yY4fx zS2PRj{aLt?o->x%$0*@=CHTY=d6u}WL5YtT^OYzE`+3Da92aUI4@oIW#2x=bQmfg% z1xzOkV)o3^n88$uO&^#Oe1Z|6z*t7xx+isVI?aOC?4F6sdEQyv4@Gf+WcT=|-WGL$ zt;J%a)QHBobNn=iVy|fKfq=*&2Y5oQe%LdvFn*kd_ zUE~dxmOM}x!USh$itA#yY@!c@AvQ!?T7j2|;=Zx{ja>}5Ec7aGY%0*r(AARc9PUbb zXBG=|qN33K@M&Bv-Gzg=@F(Li(F3e4Q=Z=%cNfTx90^!-KZru|aMzS*4G}=i)@=tB zb4QjWxjojhZf_KL{+2Kz^jb^aVhXSU$=SxqIVPid<|tO>({S80V>YE4LZ-}q*Q>;A zA`LOyDPzB#%pUIAqY1CIOg*okjgg1j<~2wU^SUt+&d8EI{yTYn6FtKidSGa(7jCxO zN&ZOtJICLMpQ#t&XT1Hu_3CERA#U^mSMAgwkftn0OwQeDx;P|eIU~qn&j4qpcNZB> zr9c6(=s2584_1)Bvgt`__q(-_~*@j4IA8~0n1jfnWuJ#1y0%%UC0<*|98{1(b5W>r2L`|~Gw&zD zJhgd_-15Z0ec~3Ga&aPn)ePKDceeseXPfDQ^TF&xy0=1ZG(9xT`fH_VW+rlkwOTP z65*gR)pnmm?g-;-z7SQ5GPHjU5d}sOWP<)C63dHegH-1Df-f~eK!!M2j#{RC~;|%t%@?1ULPT$VbAZ+O^ z)d%smJKm0EyebZT_%=iR1I|W;vq%l@O-ko+t1ll{t_vVe1qb&gzxQ9z=wQMm4J}AD z;9x!fq(d`OEzVUBN7I9I(vjX+IhwAb=S48+9@S085HH!uA$(ToL_kb4*e_k)(G0I` zQP$G83$mhHHdSaMg4@wZUmW#T=s;l(I&dbMg7_Utz7om8OCy4DNGvGsN>2+`;iV?! z3=HPuBzKy17+?Ux_?d?iCP_r7gY#8Nystc|7pWdZgqpgPK3Sel8?S~W0oAqvsCK79 z#;?y5vGuzlJwP%8rWoiSO3S`udA0oNX_cku1WkwZ0JHev2?kNX>zpc1Xxe-x1o8PMs_ZQe5T!PU)F zesyi~`T%o&ZF@ZtQ1KQSm@&Bdzfj{0OQ7El4^y^2&%=~~>||7$faz}*ljXB=1kjXk zbTpu$d?{yU-hh+jD$DPCgvq~=Z+%Lxcf08@`yv1PnGv|{wqc*L2seta{QL{DSk zfO4tIFZ3Z@c~l<|^i{dvJYqCj5q=$j)0I1sQ8`Mw%4duc7{}g3Uk|6UG(|LPMYNwu zm)<=c~$ZyAA95r{*0)&P); zFoZCmK2(Y?H=@!9%(=89HgtwftR3kWsw^T3%P*SKoh!m29&d(VAr6hhG z8I?7LL^%XwNYwouE8&fpm$7sXus8=5f3b~7bV6zg50R=2p#ePEJfXJeQOkqNB#zr0 zCH$5u`yj>R&vtfO9%bAOpHLy#%-YH|La-wul_a)H47QtVvC(NSRX`Xd6T-kXhI`AW zwEm5?CDa;}@lr2w1r}{Hl|5Tm6qN`*RKiSm<|k3fiu<}z3hR{f);zQ<9{ErF9Xk+@ zY{svP-zt8uT@jCXMo-{D=7VNNLILMQ(Fd}<3&DY&MKzJiRQzw!xoKWl7J`E2Wp7r* zQfFy18yan>^DR(DA$|oD;TN85zl=&`w(U)zeC;fIh44hEiUWmXP>3yH>+-ZR&a?6} zYYSm%y*6{K@YA1PdGr%gD?{-u%i?5NpN)3qL^h-PCd1BTD36oij4J1Wl+FVwf;kv| zJ{aDJBBLnq7C?bFqR3bjoWfGXhF_W7T6*QDwU=(Y^rYT*a;LIDFN`Cd<|3SMyo$gJ zPC?%Bjr(E6ZP`@akI8W2=wZFQ`!yt2X>w%HD-u20*xnADeH6Jtqr`rj9q&7u?KAIs zs_QMm6q$hb3Z~#BZQJ&Li;QAF4{gWU&;SuRBIIQVQ4-=fgX{6I(LDt+j3YX8nQOLp zJr3-Fg&BD%6Ls%SB)a-GvJJcg3imSI91Z2~rqwWC7AGArlWP|bpile@-k_9479<#s z9y?v&0rHINL?F-)IMdhrOF0?U5)WG=gmUN{v-D8DWo}Ce{u|9J-^%U`k zlqA6K^ue#A00XGt_89PN2%L-5lrzE!6i_AiR?eAaJrEF{e%BDw;C=lew~Elt|7!Y2 z?9;gDo7h)-Jm(5kALj&4&rW%@{KBTR7F1V#UQ*^%behnGfpQRqp>#OUD+d_> zvnca9bo3m&bh#%&4mhoX6@EF=RGu5xIUKYpzN?kSlcQM3Ovho(v97WlE(M;PJK5lY z@bQ*}rLxv^IGJac&;$NksE;a+j3+VN&+G5rh(cj z{3^58CV@4t23n%X@*$36+!&6J0-bv`P8*Tq19%B50?Tp90mMc?xG#v(Fr)-K$Ov_S z<1YzDOP#EDJx11XoYs;uwSWh|Yt*XrGKn%GnLx!eC zSOJ(C%LVaY6mhpp++BheQ!Y%7%;1{C&#fYd7DXzuWHM`xETi`NI+`Pi%XXDSYev%j zD(QW27X+r@Lir?AIOcZ#UJzy>cTlkCJf|FYUxupW?E)BW)DqhF89cCiGu7j&O0%8L zfeR##xi35;xMl$tmiz|Soq|h5Wrl}qhQT!hb5!W$wN6nr^AqelR2bX+gWg30;{OGE zyo28d$8)kcZ_`__k5wPm;_;Ra|81F zbsU@;Z(+j=;BTW}7`Wopmg0QjGnpEZWKe@CgFuKZ%;aB&zkBCt;IUy2ZTeKJRt^23o+cjPCP_G_rcQ(%A-S2-#`8%H|HFufsyp#WpD= zU7c$qDROBe`IB-#`86DjKc_i$vNu^hz%~@r*(34=4%P8?=Uz0XMF*|56P2ZYDABt7mnzR_QCN-XBC|Cx%IjM6sPLLMt{ zG+T~7!x6v^!csvdn;B$~9Gpw@iIUgS%b7kUH}}9d1J%O1z|U#x`A~F|nDyaa*+=ul zLZ+^eIe%_BI_h9MyZUA3%9uk*4$9$a>ucJmBU}Fu%MVsiLb*s|!C8pT!5DOSIMxKCLEPjpTjnDo7rL4#c7c zZ#MiKRrnh(;ZAPoW7|zn}`qFE}N=CUN6qZh^E7 zhINST|6HgC(Ujqg)D{(a0Bxcz2eN4nSRMU3ynFZJF9rcLs!{eC_dJ9epmU^t(F$P% zI6Xo+$veXZt@#f=ni`)>|V3MO0ZvbLS zXE16Xn24oF=L)6qqGcwr!9d7{d>Pe3bCjP=#o5M9r9 zl1&)8jPM&?r5%WbyHb)h=05guu3QOX1Z>RZdFhZmpt#DzhG<++)<}`BQ9|s3HSO$J_;M zQezSu+A~}?7^4BPwCWFe*B>aty$m!yjeTAs2aE2FAbREKawZ?GJKuiZMx1armd^ox zqqv4ENwe-^_e!U`-{f*4+_IoP1{2~=z=+t8C))?ePNe6P?1NfMz?KiVdW8R&YUP^C zji_D7AQp%yzDN(s3hrZScB=7X4hbkkVE-AinwNnL6NRGL`!<8hXj|BKK!YJKW|QEl20Y-V`G00QxN8~P-)r|DyLNXb=J^jsZ^Rl3+ezHrJbf-dR<7tP#v$n zm)Up?Ftb6kLEc;{uX&a`XJqzN zda4rlhW_!=;?cFLAk|<_o(V%UZ zATcM_?QK)SYsW820Fn*B8j8=R0Uczfq6fkA=mQnPI{<8XizX{?la^={CupEA@InWq z=^68ekl30MX!LfB#~ewlU!QEMP$+xNZo@A{v^|&f^v#mVh2?!l=<}orM2deHepqiI zqdw#*oZzTxWP?0~2d))Um6dp?4B)?D3F25P(bjbOMkPzUS*XGN5ex<>G$J%69G`%J z2-DSfRHbJfTM#-$c%65z^$RvwwW4Re^;4ZG<&XsEEWLdv%QyTN;iwk&<clka#F*pz|IS}om3m#e(OW~iUEtt6PHd{Ucou{Py4Y0BZ(+oouLJF}fEB5035 z&q^-|9}+`A{PtX8GJ%Dzm)FVzrI3NF{s(k9Hvc97J$TwE?VYT2T7sf(VtHzV69S7id3$V%VaTjW=pO^h6g9|9sW|D!zH(!2m6B`5>YhzRD^mD*ywk=W>o>K|95oX)>{!Xt-wS_1zgw8g8P(N(1iO3Rh#}11>o_z=src6)W+`T<(WoK z4mGm1dWhkM00ukkmk?((&~T%*8mqKZR;6n$MIL%4<&?3j#6baP?BzF!$DX6AvH4?% z;l%F*2PQZ$!GQ@5OmJX=0}~vW;J^e2CO9y`f&cX!@LWT3GBYF5$+10-_1p$YNg0x0 zeFQ^e@nphi=&*e~jtQ$S@|^p`Pq`33Mmp zM-XBJh`AP(r9QUFdicaxm~?#{f7*}Zcj&~BIR12lIDR=CR%IN2x`>@v6UQ&ldcI@r zkP=tY^BpB(<8rpd+Tl3me|U2E1cx5|10V?jKjx&z{TJb+#~$=A$RUQB=zF%nI$CPC zV7c|07@@D3MFSD*lg4-g#~yjeIa>?dXEAuzRvW%Adj~(w?L0=|hh9Z6IdJ*Z{@H5{2xq*}jDqIwni`;R0@q88O z!gzZ(ARsc>{6&y1WgZ@cd6$a^fdk7s^A}VK-uS~#cL#+6-l-@Er*vG8-S^u2Z^hNl zLUJzazdc?zht^HR>&7wsC*pOn#qlb}>uO}Nk#(qA?2DLaV~q81{Lm|l){WY*X4yD3 zHTc2K2)e*HgTi|)qjl@PKPj_rH|7J(7)|1J25khv5ks#77Xebsfp4Z z|EE_eN|)bx`(GTTThF}LDoVG$=0@E{Q{LULsNJ@?uG@?n!Zfm7BE_95_s6Fzwwr6Q z%^PVFrTh1@w8X~R5^8Z{2q9LR+gqWy@B%A4&s6qoT~SD!;Dc~8(;Ybzm3UFQy?4bU zOY!&n@5Cb?!|&yH$0Jwbcg{WaF}j}p<{eC>t!F+j;DzVLxzT3hDyD$80FW1*D?m0n z_cuZ_Fv;@D&ZKHd0z0PHe=s&T${CtU0Qx^EU@ck{^#4!b4*UK@|Q2j|*XHy(Gt!#uB#YQP~mPDcAI1r-Fd z(ZmsnF~}r8%L~;NYcpf=`0E$L0gR!VXk4!t4(Guu#IrDdH10`s0boRlfoD-FB{2Rt zSA#N5zgj8Wt-Ny}CYA@Ja_%k$3yvi=jK!7jc+|$?K162-sI`rhhM3QuC^zT?kkr}; zU^Zlqdkv2jfc9p!eh3xRMF1BAwIZSxXT+3(E=H}G=W-$HJ;vQbOf}t1BRRI1K5H={ zQ;W%C+}*-6Mxbt+ak#G|{*mpD!+l~tMR&WRLMP&IP2@8MOfU}j#vO~p{gCLE?c(@E z9Ij|J_~h1pM0|2_jF&o}T*w~>b@ZCVDD4tFh7E<@Mo(*Te4 zoOY8q+}iW*8h?B3A&wP;ltjJ_}d%$AsmBV#AMjCB!>F) z?PLE3;&11DFvVv7uZX|xSOi+cl-`;5GRtXYa$XK@!Wy7SfNUJRrPSM9nVGPNwi1x>`?LX0uvLxNvX{OyB`aSaH+ zk-WFVb@4wQe>*_hYIKO_<_N`G!b|c0UHt8n6Y;mNDE{`nCvv4qo$Up)zS{A((=Z^g zpP&&mc)<5Pw;6l;39f-D-Q#me(xab_yCu1tpX7E04GR{{I*8wzPjI;%)7q>ENKjVVQ|| zTN5OVwbpA8Z;LuGp>A}OzoRhPINQCj^rEE!%M1DLMSh%Zi{zNS0>miF7NgkJKqLF` z@C{Faj$G{aX#Tt-ie~svl9hQVv17@Q|^^SNi1|FGIZ`U90@@8;+;b>!7&i4aMsMy@cML z!X^|fqnd=${^U42|CJ>G4~y((QMb2ypyqCb`uVBReUQ8)gOs2Pc?pKb(GHp}LgXGJ zu-?hV5(35EM3E3i0~+zOUxJ4ZG6O;N%6svs1eG4ny1$_pRWV3BDllL#+Wi+Pt?{Ug z2+W&!R6_|*S=CIFKK-7j1!o{|t16I}^kU&OIV7>&B0H?MfcVtYjnv|*Cf>J^65iWz zF=@XBoAteqB@mG*>wRjYY@|=x2OteD%T#}EU}m$8Nasne&%z=AE95Tr0+SGU*pFjk zAI`2zf|>aE40x2m^%PmWiL3$2AT;Ru6+}2L@uuBCUld&K=jcl%2G9@W_TrTklG1!X z0DEijYe-BfskSktpiW~-GwwKMcYw6&8Z*$G0fv%x(|wN0yasKwHFCiK=8%uQa_NLe zctO5^gHFoTdBSv1H0Uo4GJXF2@RLZ8X=QJ3-(cH8rZ@6SlGqF>y5}%@5l=ntCWP;i zLDBY#IY`o)LqH z$DIV2oE3@}hc=#KmERiKWS6Aa6pRnbiVbFD!x{yfK2(F}GsFYfP$Z|R^K&(@7Xh~N z0aI}nRrwLKCfKyV;9WyUL#jknq%#ilqA^8w-@v$3@>>O#7Y1TDxKALa*)*kT!0F#= zVqzb}SgG7=227Al(Kq!0r#E;JvSc1NXup{Kkq7U&FRu8Hxij9fWt;(Aeb2!DFX+YP#mLgcx)jzB?xVA@ zNlX_OGMz~8RM_y&f#W}tg@0mQf*@Zd$Y=3%*C_s5hXodbzm7RBC0o*V&)ICdtpsdU z7X7KaVgTgU!&`Ie?@4Wluq;RU| zw*LD5&asOz4rKMs{|48xUn6q#=VV)MK)G&>o&tx$pK{7q>PQ-s z-0?Lc9koL$#Qz3WQ*I*g$U(fMil*3&OxF%rD<2I|-z=y(`t}v%jj1LS{dY!co6wu- zTsulYczmSw8F%OTdwBQ35j|XvYbgZy7QDQAjKXV>QJL{I1S9*|;y~5XWm{!- zEw@Dq_`)>eslWHo8;~~U<^U&o8wPp+CetLwZ4q96z2cLCHL^A@D0&g&pMvD5|GoHJ zA_)RM|ISq8xx|c7856@RN~SXA=JBP3kA<_(wb=w049_Ksoyqa`fA2y&D8|nv4qinh z&m|VD58&;tEtrq9WXE{>>R?IYuPJ%HDVfqHQuL)FCq^GMf`j-z=AM@^oIs5G;8;|f z(+M{zIj~_sJ`Lg(-7s(`%JQGhAH_R&OYHlaVE%@I>%y<>5~e6LbVdW8zxey>l`fP< ztR?0h%FK1HO#%__F^4xa<9`1{cs@aLVX%L1(Y@SGc@m#Ah8ecIeD>JA=56wE>$I9? z)k8%fyq$_~%~g#8A;3+?yFp8($cln{{=QNSYKG#099CB}o_qA;YMBga_&f%k-th8lfm?<3a% zQpbkJrwAK5lns|-Xi#-38=%^;0mb#-yi?Xjyh7(^H78Fa;2Szyh7orSer0>|99> zibzfh9}HQx^MsS&0w z>^s{_O)~X&pFrvfeaCyL9ZdZ-Q{SOiZ)5Z(^C_l&m#O>p=?ufv3{!7o>Mq;&)g-Dq zC@U~6q2}U8=7UM`^)EK~*bO9t`HPVMYJKlJ(4Q-w$w`0+G>Et1#t%_4 z_9Ks94nA(=>RUO#cjaXfV|}NH@ic9geMDY5<$)#0M{<|Es%GM+3C7&L-vqUUoFWS3 zSwJo_$;*dc@+iyCH0Ki|)GrLH%u`N^j{PbG(d8sij^Cl26-lg~2|zx!EZd(yt-Trk zOwwzc`4~+MZ9+8_#yXP7bNMoz=%HXr?qBy;HJNi_o211Ykt^2UCePf@UU6?fo@uk> z=B^kmpdfWvVIE6UrQv%hDDqrqBDo?SrLx`?fcm(fKJGxJ#@n`6OF=igpCYWjkK31miv)I+2kg88 zt8Wdb9Ys@KHGpULva~67h%*wqWht&8!LBr}UQX{sV%k5&l#!`F#Lsy93rF(06454) z2;Erd#VQ5t)}tm&Bdam)Q3}fI`*US?iXs$T;E1aCw&I-?&%7wDicK5e2gUB=cj`7v z%8-1C*_ScSB$Tml5Ip&mKxMz+-V@9TafHZD&>S zU{x{^tGK@f9H+SV00RqAoO`S|m)JQa5$E&4;`4DMH-B1s&)`pMV(4n%=Oe`VttiY# zi1VlMSaIxpgp~;Tn!<>?_2rA5#EI+VZ3A9bS?R94%PS&MC57nKKpImDhI)Gt zzY!@e?jyUNDnOewW4SWDUPmIlhewT$(dy+V?~ zlV%XHdGnZNPK`k~eDws;4HW&bZlHk^ntyOK$Ic)4&7g3M2`N5Mz2>3*?3ZogM4g4IDVYIgs#IoBUK1@K+s3j$A#?*O6IiI^clvYJ7D*YB&%`38stqelUO3OGLR<|dY6fBmPNPVSq5{vxuagS{ zQlj>q3WBDFG>i5UEg%QKm?FZpB#v^O#8=UVMuEJ3msMbD0xIx}UWJ;PjFwz)YbH=& zWw@p!peA{xzosT5Fa4S=D3A-+lmyhwA!99mdm&5xW{q=%#uM?QwFNNB+Cv{G-skO$ zL?oQ3y>-D(8IZA-+NNS?M7VYVRl;RbO!*r;-%`8b%*mU;W3q7*dji>-%+ulV^JS-yg|w|gh-&Z!Xn zB$Z&o;Nwn%;Zu++K^5?%uVmzWDh&q|&rwm}qs^#p-i6`TN;5WvT(m*HBV|*_8p+Fk zBYe-L2gBu)L(iBl=41sy-^YFu?O8aV@L8%Y)`!F5d}iBj@og#2<<~GWR}w~+w}pzD zyDImEU0LQwJJju(Gd2dQ=TKdMxozG&M%sEr0l3lhq?o;i%)QZ>Z!_ZY(*_^#TDH&-_A8vLIRGkV9Im4g0W>SeG@!UEsgK& zD$aQ6mJj_Hg^PL=<&0lX-fX=LzMvYe7l<|LQHmG&_2kXgTQtJ!8+^V1pCmU8nh~~q zAYu3K50%mnUY!+AVS9ZiF$Ih+T*^NZqbY;k>B4a+IhFrpDZC4B$OpXeVz@=51Q)hW z2nw>0AcuVyVUk#lnNPS0hv9Qu#%}5M9QhOt;YC@?Y<}LgfSaEc#EMEkrJ7}^dr-Bq zx{_B62K&KMVaR{rF(tutWO6JOvp2c0Y?9| zah5WtBb3wO-7Ptov8wIPYoMGWT0l${`4dqEf;w1}YF94RlTQoV1dLttx<#abNtw-A zexFbR*|$YJXcUDCJ!n+4#pbXFEohrh_4+7FfDZTo>laFmnh};Spw7gnD)h+FxB|8* zd;m^A7bhv^(~ubE85Q{gt)q0qh$-YYqmx|k?~q?C&O12fs4KfkQU z*b=5cQw^gG-ZLa6iI6MKy_B@d6nY4nmPouq);8Pe(jCXCZUpQ^mMXTS zq3e=2EvKeR*;Zeq9Q(=eg$xM~3_8NZxBNKuAUuvENoeh#Gzc_d8xDf6f+8caL)h(~ zF%mt&NE{d)3A_F=QaCs|hM}wCvt&QQ2$Clt4Wl=6I1BsfYjK#b-rGe5GC#Vl!}8+a z56bh^J0MhE@_qOrN7lKtW#iMtH0v%d-Hk~b_9}l5AFLvFpp~(Atp^&+X;ZF7XMt8a`H`EX zhnnsdhqoZ3+WzH(>Emz*cQzN=H{zafptVpx?(Rqjk0OhV?`XobMp59SUiy7^MlH^q zUizJ5X?74=PZXGKM`LW*n8gVL!dL&IiTmJDDIXas0LrBiv=T~zZ(Se&^pu}tChafU z0~m;w=!Ed6ApDhIl9zc27HGni`!$&F>}ThI5|WC|Gx!TCLcn2#53na2$FG(4w|jH2 zgyVP<N&7A039rb>Z;!d`3`ZF4fAa`wKOb%1$}?J|RioU>0kN!# z4v>RGLieXuWorjiPlM=6^|Wl3q}gR*XMeLq#?_I*BYO~>ejG2QGxZ_-nNi?@xKvZ& z4F15gTm)P`HYbPv4Ugr2;Ez;Q4<3*4?kZ?h9;$YuN~nJE;H!VsSVJRIBYjJ0N9>6lMRt z+J1K^rB}+_5=t3BiuaY7Fc0YuJ^no3ANmM;UTQy*DW%pm_^Gx(m=5_vwOKdiT@_O% zfT4F9Aj@V6kuqb-ZdMJRSSlLbEnf+S#HsGS3L>UetgiO+MORB1Fp}om6byC4*UO^-Oz(UKjbH3AWmr??gCza)70=p9u|-JLK3lmvs>vHsJ5TS z5n=;sZ1x#5{{AG!N%w6jbvU8BVlLg4rS^~9sDU7d85Tp==vp6<{*kiyRQi}P8y)Y7 z>T^PFfUoOx1Rqf@S?_?^I>K3RU9Jl!#Vwk+jKe2LQH~X>I_4X#= z-+Rs#{(TNV)%Ff$8dS!IdvMTlfC zPVlzi1n|7QeoN=#7Hpcq^b8|X}#=P79_8e$Xc!M@_BxToT>HT_)(;Skr zSnCUQTmk2=wvTSX9DFp~v1lvuu@oj^gMpp~Y|`?QYO zELWN?O?nSQ?T1TA_rM?9l_U?>0O`==3wY>R`f}Z0pW|Mba+)=W`XIvES`oHDaVKXM z7=+dK6Zb*aq~7~bj~yq)Z1lvYjCi=S=t#g@l+s=D*N=WZC4ZqGvh3KL?lyyh;e070 zl*g17P(?>5i$UJn1HDsi{}sD|d^0QA5t;{+fwjt2GeYv^+~^1`r|lxFK#F)Dz+vy8 zp?LZ0e$AS3ItB_XTyW4YXl%|amGL0h$w<+riikZ1NQTt$l33#gkeVtoq>gtrzd?W`uznHh9d7u-AZjk+Bye+e&9IawwfW zETPib?OhC;0`zf2_(VFL^3OT;9hmm2?K{{x? zyo$iWSX_&=kzoe4D0Jn+ocGa4_YEKByf)lyC8YCCd|vqQom$Ob9$o(w8I5@QtobA@ zP)RZ?vOjZblmxQooIfjTy4Cjk=A}ddb$gG4Us1v#y9ifdwc4B()^ve!#Gq)vpWx0c ziebt8)?fJCnUa(t2^1uc0Jv#E#s_To67|o1&xEC2^-mvpkW{a>uigv20Q?&L^C<`< zQaj7b41+Y(KY#$VjWT!|izrqBFXOOIyj(U+0LT>bV4k=Gk{m8L<`?vNFfYBI^v(nE z!$pT|QBb-YWk!aD8X!$pn1-T3rcuU3D$0@daVkq7vY!^;llA-b247!!JyfyEYu>XB zmDdkx1+zsvMg3S-4gwk+;t5Z|(5SXwKUX;<=Y1b+gDR0J>f!zBlo#eFvA0CAN9QeT zVK(L;r9wRUbDw`m9dYXL7bNT^%CP;xM4%zEHm4tyEMSV~oAC^u5(GtJErV@0g~S9Q z%TUQFF=2w}ma=ytmNaN1kD*7K)qPM2Rn84^qD(po9j1|st&l!?O;8SgXYEO^>Q#EGs zjXDzwNk#=3OO$<;WfS;HQHe??b;o$mF5HWa5jX5ee+PfX)!I?mXQQT` za>^<354_TyQ0E?dTsigvgma)m2aMId?X$XEb3_m%>rt0$56iPX#C0hE)3|YAj)(_H z(*{R{V73>hK}JaX@@kS4y9@>>&?Mg4}5Yt}vuix|ou{G|eJAkjH*>TZz@Zw;m% z;P(8x4+iS%kjHg`!{-spNkFqm%tmAATAsb>X2&tdrS=sKM&;uxs~UfdxB@U!agHVH z7iX&%z`U(U7*7D!@R-#}EL+le0$M_z05|Lj5C~4h69CGf2V+m0DH^-rT+nAC^KWE* zo;Ay)(?}B#A7|?1yP-xwU9Jn7RCyqb8A8*?+~Nc5j^nkO^){XGm|8e1OYHA3sq^zc=od&B%IPM{He=^tz?f?`1Z9{ERN8+4s2{YY&q`$+?*Pq zufz66Gi-|Uq?iAL9X5X?ucePG%+_BvOL&ar@NU6KMugNFJCX6^rGv(3{c20Y(fl1G zMn*GXM#8NbO~-qO*_Ey5?@dq}LI2|At-g#j9L*n~8$t1=%3AFt#s)4%(jzcUg|aSb zK7jPFd8#?Z5t=!HiE3%?csIco4L8zARE`&VhV;f8VD}ikaqyggz(#LG^hMqnXs2Ny z8c4_GhGWZHfFJwUQ$x>gua!5QJ&!<01(FgA`(RQO@o<)IJ z#gP^+kRwO5(ezNEc~|4+`q{u5wCz;m#&?c)G7+If23EO24`Ujp6|F)M#56P0_yHpU}QJ z+Bb)FSlEM&NGz=R8|;r0u){8QzRn93RV9BJ1#-n4V9WFU$a=zV3b=^S|i zd_?oj8gWuZ4X+K483_v+au|4-*}J{JJX$Zbr`l%7C)M_kzXF}qVKTd@>q03+tJ;2n zpJMER3os!Vxqd71P@UFI?fzs$zJ*?#UjR{0PCfGkfLJcc`p6NTe$8xci9<)FGLY-RAKV z{N3gc#Ljvu&#lK_(xYM4gFWusx z-qsX`!QN^MDl%K-vvdo8LWVM!5!rgkDOlii`WqM6yFi?cFjH|w=iu-Dy4xhrRl)!n z(X;GStfPR*e~NB&yNUT@$cK=N`se$WaQWzVQ)Xh|GstBDg%;g?+PzH9HiMY)mcruV z$byI%lnz6#Nv|8$1#nDxX-qAZxTa%}BBn#Y|1wBY8+x%B({gj#?%#4Ag$`ySwt{h1 zJ48R}Hpadq0@k-k0{E~;z>o23?lC?WV<2#)k&zlkQxd6OQD`_d@PSHp|juE<~x`iq`>zuEPdSzPcr^} zt?)Hmk6tsmvYUCqGmlI#9iD_y{2*hPsrZLSZdLG~xZ?@eKN-z|;knd(XKOAsS&+*& z=2jCyT`+mgsnz?yF6CcEi`Wgk0!L{qlt=nLc%N)%VwZo-D*(9Ee(>u>Z*=3Q+I~b6 z^#;8dY~C&Du{`gOzromo3^Lmn+L_NsKmXZ3A-@zalpyFJ!p-6Cn&}ItLWa`pad3Rh zLcg80qq#niE7P1Y{D$(sW>Glj!-@a)5L*wvin{~Nd(S??Elb2cUNZ~z4RkXn45dF4 z!Z19A-0T4q8Xq(H>Lov;9s$;rW6F`5`5){7PPH>Jg) zK~mwmDf|=>{0pBQN>pBHN|<-NF`4DZP*9hz>bmm}H5+90r0))t^3uPD*{;G_-U%4CLw1M6`2NJm2alnO zi$llM74Q)2@%(zAe+BnhpkImrl~pQ;C4lS&0S2x;@~rSym}>$|VLkW^KN~PuNp8n) z==ifHL{C6#+DkYDJ!GJc+0L7T-#gHTw@-*bKgYVrXtHyW=ZoOazsEsM4s~$BfC5{P z$$uCg>dP60!@(wG&FZ9K&WjcrW~+|TyA)+HR;OwaFoh)s3L+ht26(YTikLDx#CI*> zmi_9Ur#11q@gpm6emlhU;zA5 zoGCbDu!L->yp{s_H6?r!zrI_u{=@H!hoX0IwuNr8?DyN#Po<10peimfjDg`{nDxDTUVUBq^Xe~^Orxk(kC;|rx0zZF& z2>9iBHAsd5VAcv4_<3LjKG_{gyMkEbM5lo<>6guOL5PfA>qaf>&5v*2J`HrZ;oN(;X`$X~uW6e8zj=Ct5zo zG{BhjPJI-^!DTBFU^=tVEHPI2bSc0CdaCiV%eTL$AEqfVO@V0&OjBT*0@D zrYSH@foTd%Q(&3`(-fGdz%&J>De(U?1sd+(4(j)Yc}61U&B6V;;?dJ{&WLo?J{n_CRwt$Umd>6 zZ9%Sd9j87)7|Cuy_E&=JC=Ke{XRlu&IHR_BQfE%+Jc7yQI_W=@Is^( z?#v0}E^nOVm=YaRD>_ ziO$>LdRJD!k&V_B0N`DAr}%cwX&U&q7t$Gx^Y;gdgZ***RNJ3_nEvgEhgba3{!w2I z7l$v|jcovoJRRJn_9qp_?gtabzbgy`ZosizNINF%g*;oG1cLNL<4aKsNj3-j7j4Aa zA+Gqt&V2~ouWTpdHj40QFn&U7-gdWM?ikgGr-a^ir`M(@&{krE;Uva+p4E@E>qVc4 zyJ-dvEqe1D8HsNw+Jaw^Hh^R!o#tx)Y;iX6&CYyt;@I(Z2qho`_$5%Ots>t-3UMqG zQLGKW9a>)56(F(Q3|;|324)Lj%Ke7K%QQ<&=ITeI!i>&TK%I+UewCqPX>)qr96ZcN zSXlGgBc-7UZgK!Q;24VG$1}+6r?>DKK{s8M*DH1{X*~zPFGe@xuD@b4?}_S=ORGo; z@I4?l<8gi{t!0$^E)ks*882)n8P!#7U;LYeh_%%(jyNiIRBHU%NJk{gC_GX^w4V9Y z$eBA>pV!WZfd1y!Ol(6C5@1o(x<_I@70}iL0)P^L_!78reIsscX~>OMY9xS`yweu2(Oj|-#h{*#<{~Y^M-di^ zmlrguf+SXiA1xqUt%@B| zp$G2Xkoy&-oQ`&`8Z2fCP=(4NLg0H|c9SaDsq;gakZcC)J?VAsS_x7cv zBP3i#@lG+0RXVaHNLV81Z39jfp{NfEQ9En*h%|{5DJ&lz03_(&daU{6eyw9WasF6Dibha0Kk7Z3~qwld`ToSRhy9ru56P4X7Nj^URV098- zY2i-@Q^J$->!pwssg6}zD^mUW2c<@+d`Nx)6grUor>+!r2#JKw;2|_UY-RE}j_a{^ z4J>Q{y++pN^Xk`iGSH^L3Qk&;{aMA9;n1%Sx56?lA=G44ro>OK0ri{5LjYMWwvIry z$L4I?f?uQr@e9M?#k5iES{h)-^T+o5l=6hkf7qWV4L8VjsTq<8H@3L78jLe{eT~zdsHWM1TXq z?h#kInJ2cn;))KtuFIQS%*CkA6`c;+Uba?h#1-{wYo%~Cw0=4wuhE0%9&^-7(T1}1 z(j%_g)Iyu$ingWh+ztCNH-}rG9DL5AIw^?Ydp1}@w864^*wDr{HJ|f}%noRZM!LEB z98EC}OFBbSI5Xm6TtI-L+u`YTr?QZeK3HIBOangNT=kjz&;cyXH;Xs!LpL_IJKysJ zBLSuzGo9&J>ds#;)^4sSqgEZ0zKm?-5b{#dsk@26b!+EFjxXnX&OE4^I*^wi!JvLQ zGl*~R?BaWGfSnN74G{3{jhA7cTmX3gyzj>u0+4tqhzEv`2ISJ^iNZ2X1H-u^%`y_m zY{A296;7tHEZEElujYeyD>qBs31^XK&TLJ|gqz3l|uD1_>9T^c7jCDvCm&gd$Z7GNS*0qV$dS&WaR78LJYU8d{ddeKtj` zvBd%ugpuC{;XSnOitP|Qz(S+6H&@^y@ARROd(fl(VNrTduuLQhiNL7>+QWqfD4_fD z#3)rG?$HqEAb_t(xD(ByE-fot`Uusjm8Ej0@Q+xyoru(i1ES@J_$FZk1#9cO!~&4RnL4r zNL;{G89nov0Zbu7M)f&rV|oy2kWuFHvuKJ4KFddADc0C7+~fWBm-AwkGp5E$W}?ag zA*_G~>WZ==ZMJ-0@e!WKDcYcE9vqY9S5BIu*jblULv2=LPg|lUjG{btc}w47ZCJbo zlioTQxX^eD^q#&pI8}xExJIDuH3<3MUTxov$SJOl$QK4w$P1vPp}xsT%iWN|k@w_9bK3J#Jqx^(9PxOak>7Ik008=-7pfp#+sR-$`I_+|U*;wB`5yr=9 zLkYl+$^C^B=m6$-eC~$5VxQRA2X?T#E*=38%jVRE4WXC9V!f)bIrp*$Kw~a~ z_=SWmlip&SPy!L?21yBJQ>MfAoT6K78TVSH)Y_)Xewr)GcmgA_GL~57ckytKr8F8M zj9t(x(%XdS^I~(tinvuB@*A;)&}Q&Gg?H%z*?-bi{_6p|;Z^?Z45UFxhX;`EdRz*C zFDkr|q?3`f1DqvMNOY-066Gw3m}AP)v;=V`z-=7Y@){6NY`Wwo^U;ZrtXcj-Wt5*7 z$Uqa|-+;WjaTl)y3vzGlkY_2C$0MK$OW-b4&CyahTPj+)KS~it08^tSCU_`dux95?*&<30 zH%?@U=PyErIyh?5`w3x?W^M@ar5lO3y0jqH!+gU%g%geE3bq*B{~P8+Yb^|HXY*DP zd8xa*)NNaTJ{wNqT3C~?uBo!hCIzJ<`Ac3TU#x6`l=?VCv2#Y>rz-`iWm>^OM}F7V z016p07B7e~4wDOJjdKs&WiI9=w)%N((`lo#E;%$7(TuX!2&?Jv!a`VhVvja7NV#g@IYsBsNJw#C(J;k zbo0CrGO&P?WeC9N1qyvlm2b*d+tR+mfDtM+#JWO_4ygfpr@1f2nhFXD$(!6vI0>Kl zc>EHEtL(Ln%e5I8>uyum(CT!*)mK+Z@}U?1*Ih_?u+TbW(V}1Lnt(O)BZ4eF2z4_x5bkkp2b;G0r=0@}! z1|fbyk!5)2KGlFNiE9Le_mL+b!wfCm9KVc83yA078x@8_9dOnnsOaR-*A@ISs6<*7v%`OiPRwt!(;0mPM}AKc;<1ToxoAGiF31msbyGP%{4nyI3ZLXyG%i;eJK^-}R)O(an| zfp6I&FCU~5~(30e@vj9+ab;yt5LZDcg_cqM1BdXqe~{x|VQ zm=d5~-KE3*XsmCp=u%DMBrT~-%gWkFiu#i`(lAo2&6R%00h^!&_XX(QIx8^JKI)0& z53uQACMQTPDn!noM>kk36-r(IVUq$gC@2dn?d%{Oq(>F`Q(NlTAbl65#6bfP#?(^d z>7$kRn97aug^9M}#R_Cztbj4pJ{6$JP8x#=d?^c*fZ!%Y?I|Ub9ScXuWyVB=ZDj$U^Kci3%(HN%8qOB-;sc;!g>%W?O@wpBEdv})V43H8zM5my zj|sf$kRoneyajq)48E&#huH6-RglRUusz|?U|o6|W6uUq`7cMDnyu#cA= z@lIM8^S#$7j4^>Byeu$eh#mN%#GBx-(;3J(i!F6ig(JfW;>PRZtqQoY#qUEw^eC&r zVUNp9qyahsq=&Z|qX&>1wx{-ayv*2!a9eD=sbcu+CVN4DxZS_;I!S3`5AujFA3pYJ ze82+gG^K@Zx$~sc5Aj+UH9HMDMszyEAUyAvdKf{{=1@l9qnDaXv1ZIaTUAVWl8|5W1 zz(gS=H>EI8jhg#+4w1mWm)E>EA|!UFeRR(C(fL=uxDqm6<_&h0yK0dLI6UoLhdbSH zQwK?$Eb-!w+Aavk**-NUW0T>j7a`+Aazmw$_t)k8Kc((rT)-J+0EwHjjbelg6Xl~p zIHk%npgQP`*$2`_wnwbSzuW`4-nfl2ZfCAw{T@+D{gD0f5Bbp`41^MAE{Vd4k86p` z{~(JCOfoiYuD4Fp7=)9B<+vnyS(}K6Ez#!fgA(v?o=)7roY|3;+uY>sdbbV+5fY~# z)yDkfy%lA3fdYdLg&q0+wHgwg!(I1_M^X$UhA(C1NtQNjdi~-?O(bu}ZQtm?_zMV; z0>~OL;l8~8_kwB8fLTIJ@w`NuSrWn-`!W{ix!yIX1-Q$mMz!*mT|>0csIY|ACu0X; z?xFV~I%uk{lady{&hK??TS@D=)2B=)rDG+81)ua9k{gA5+iP=r0MuZ&`HQ)P8biMK z_xiiREQ8znEvM+55#bU{U9z~;Pa1;}FbJFwF8NR44Dg;L%=gx40@joOK?fme=isR9k!yf9lEB8r74t>yz%G2@VWB=28k+9m%RKUhNst_$ z^|=?xtGLSFPDZ=hG{9ese)-!Xu4qWxn9;Wv*-%RXoX7dA{3#YHF$Pg37R5IzO2|lV zz7p-2?U#ilXQ$mAJ}y{ScN3WkjBY=>)O-(cU?{q5&6r9iRae_L-KwkYylxaRJX|y} zHXn?2)U6mnvpaqWzjnBi4OS4}@JEb=xm*`)`YUjdRII6WGew59Qye6z8*aFvDf}7N?h7EJ zom(-!8z^&wJ3B53-D#VZT*QrFaQC*)I;6h>;>2L;yKJ!;Ae1l&0^fvU%Z(xK1%AR} z8aCFjM?@-W7bcuG{~3KmFo!I|u))kw7V(JcISUX(-ds>#+SB28_3a#NxS0WV%>V;6 z&>Te>$uTCigKw{I>j~&?EpAJH0htTa-Vt_8RV0ub`xPLlZfh4LkRoMz*U3gw`2N++ z3uE}??_k}In{8?OcbWpz6qu&KGzF$9FinAJ3jE(m0fr`SO~JaWwqJg|nv%wB>YI)0 zmS3~vRk4bmQV5++OiggtQ*1*Nh7%F1rkQ88+JxZro%tRc8gWe{i%cU3t&=cgHZr*w zjhsv~FnR>iZ-jApXhhfU|Nbetmj23*V0Cn+IgyqP2$MDR z;%$_GI-^h4YW(OOkcQU)X$bw)&giT5$3C-5rkM2Vk#}gXvgId0dwkW4PzNvy$;%kb zCyR?V`P>&Xu#lLg>x&#RW0mX$@E{?*O;!-*SyvGMdYyL9)kUGp@*E2|^o?;YX12rL zV^N6UYb?qTNB5P5G2MB+;gdp$;wBK{WZ-6fU9#4*t_5upYp%{@={~lA1zRUp18rR6 z;o;skS?8@R!jS?zmlvC3Bh7POv{YBDd8BJjbE9&&y%m6p%}rbc@^NO@oJ6!WR7FZX zBBp9r6UM-=+frAzrMwT_g`kxTt9;oH?dXCPjM#=D0}XK?fE*QBZ~ov*3wfvyarO%g zJ->|%FVJWCGXa+jskfTW_4l(S*YQ=)6MvQ^#3cW{4 z08@%52voi&fO28shsw0;HLMlc-GZ*p2D4T9+BJFx`d}e?2~Ml?DrTHkzrmZ2pVqta zQ*DobSpo}KilTkYWenxv%V5LktzEU(RC!CdwXbSxKh@TrmDaAp7(kG0Ydbf{{q9YS zg{JT3G-(}A)%MmeLTDP{5b^KXPQ%N zSVC(Ey<{b8bO^=9jLPlnpc@)tW9b3l2}BGxV3-KLG91b*GX6M%f{1EzG}J-h4?waU zNY`WsoCpnb9^V{08=SBf7+D5$gQI@&B|10#{KHeyNA~Z6Nx=r{%fJW?av>Vz0vaIMrvaXo27Nva^lLGn zXS>jEuIRU!a)cGV6158Xu@r#^gl|(*1kvMDPy{(qidcCI4W&8bDra>40b2DT5#%{^ z?m`j}{mUngq)@(AjD6!L!Y>%u_(Ny=yByMHPPK_1;a$(p>cOClKFSFkaS|h${m$dk z22qkyQg2j18qe0iT})C@2bIhf$d6wvDpf+1$zBj9#ACmbKTU<*w9(m+r?~mPGyR89 znzwyTeDMu-aJvAdBRu}>)2yIRP&>fEms9b_3QF7#NXf1;Jdt@Srw0lcZ7K@3*fm9q zb?pgVlyRH%$PdJNEJ4VQ`Zy=Oqu(_p|3=0mH0Yvd5zo_Hkzi3*dLWa5Tg+ivfMx*+JJTdhiDoJw2|2cVTlF`)KxKejj7=Qc9zdCIcq5pg(C#JL7csFPhgvwy^4x`k7v_O%!rV3&qmcC`R*~}b$C~*H z595iIn07&t?Os+<-qT09*J}sL0F0@b^{?t~l?@+uC&$tI$iE4{H1t1)&iB4ddS5&1 zzd-L3&#R+%o^W0&y^nq8KcC*Gy?vMTzIu%s2_bra1!1NEy${A(0mB8^GW4Ez{r?2L zJJION=I;-mUq^2*{xazO{nh_`dO!NMUDA89r;gr70_A|-x5E&P(EGaUUJ|{b*5ZFX z)9;UKrwGbgx5%pm?{-68%RdlxfS5x`$F3J1ji%}Lcz;LvYb*hI>-2t})Bbc@dF>H- zEspWKuu@{vh3rz{3;|Dg*G_cJCUMr$8BW zd;H3UXc=kxW2=Q&&^esAp$tCw6(Lr>f%QcDDx?qkL9g$h;nOR!>py_r3u)S1u5s{2 zsy&Kdz7Na0(RKQ&>drn>2r03?)@GHO zSX#1aqb75t%|` z&4gi(OQMFuG2zS}E9|ZF{A~UlRM@R@G*%r~9Dr5F3OpSCYb+SRELcLkiG3=yf1W9& z)=~Ua+wZ!HM*ZS3EL(o83#=EgWC!fDq&)@*ZvrUT&vlbmoqZXy1v@9u76&h6XI4)_ zr=xawggBr!4#XR%j{^_t<8al-@iT3y9%F0&K^%Y>R#q2-EH^1x zGD?;eLYA+6Dp>1)XDB^ePOn4%{xEx6M^O)|s&Ox)V?P`DMK}NeWf0#cteno~!)~Hb zr&H`H?Hku$DgOc8!T88p7<+R!U1`_CZ&8?s5oW^`W`w?`(_HMfQd!AvHLO7i^bxa) zEn*ZVy=K@1HA5vF80jy%=f-5=)x$^m?g)=pfW-#Sdt3ULA{QU?BQ)y1SMgEWO1t$&h*aF`d+Iek4<<{@&~k|ZeuEb`QEQZn zKPxmTqHu?)sjFv!g9!QnPMeL!hh?fwgn))X+52Eu(s5%#2s^zZUEqPu6Dp6UEyPgM zXf2Gi9si8jD=t>_sMhIXsqftqg{&+eD$kX~o#KG!(@z+X9^hdGB!o|Jo+Q-BO6$Ro z_Uc=Wq1o|}>)wP-IfP3SFa3&@DdL3<`^UKspn1~A&`JnGhR$CcW!*DzS{{)UnH5y-$txUytM-;>+aZWoylj z9kZkch%Np`zbq26VFwj6Koxi_lee!}1_9`St(d`YH-6y>oJ340YJ zNgCo8b*G5{+`(nzet6{tP-*2f&;dovZW)P_E6NpxOV*1cEZX=?j7kWBB@Gd9Un&BB z{2&nc65M$W5y&Pl+ew-uQ;?Wx$Y`mM-6a+7zVIbd;oU@H!Bj{rS$|1m1PmoC5{)VG zx|fQ?j(#BVY4kRr1jMhCR~O1Ip^Tl0FV%ZXm_nhF5rahZ3WH!-EfTQ-XAvUO3EpU) zLAlQR{^?y*cjPF8gqf0QMiSiQt=ZC!=r<8)oCa`?!9jYihtE=JdFulrR=xPCwtsV& z(qdgXvPo+$=s;gn%^HcDVn5&&2A>x8W#>%-ZW=@Kg#03+lv4k*>($nk~8MX;t8L z3*-pBFh~$`rB@T_HHwa4ad(!|Ye49A=|`=0VM(KgwrauKwBV1V;OV9y_Z)lrNuW|rsNCtTAj8(rWt`I@`0IEBB04hZ{cfirhUriru3O?D z0vD$$xK!Tw-yN-kpj0Z`1f**wD><|`>FvqO7eb2POu&Kuhn~RPueV`kFiJUh9Vos8 zA`gn+xm`H)H~6Wxw|&G?9G7c|XG{*%PkPmV0bNL1CE}!qZ-)B`Inv+T;-l%o=~V9PTML!pRTgrjwt%Ih_1-Ks)OO6iDfS-peK% zkDj?-zHSpp&_V~CZggBw(l5jI?e~jyWL~Q3nv(C9p_jmmbEgA z0bS?ycN5_1&h4LT?CoTr2eIq#d`waTo@6{F{p7`5s}@58UdHxE9_NCh|` z9q+Vfbr`_d4$z8V8^S+Zk$W2?ARVnk^uoOpX6DFB??8z09DBD~J8k3}`4UDT`{nE; z9n$dzx_wPVz`AHSpR*|J|)o#CMW z6!!fxv@6(GKC3T9>fTa`?AzdH0!NjuARj!CBfb%)O`|_fXuURL%HoJXJ&t) zi?PU)LyyZWjpOlXMwS~Z(PN^_m~Qr5VyWd<{Iw_Wta5VbHZ!?%ueuKl!Z|RDu^?P@ zzbpt(!cVomdWpXvEDqd^3WGals5@{sEq$?;zDi0z5R_)XMPG{O0?o06tOd?~uIjB} zKbcydVY<@^52ooBT+hE;c;7FGnA5#I=0z6>Qo#=VKh6rA2f_)DBf(pJJmKQX2Jd(?=7`iE z5~)WF0XUfQ@BIx-Bf!cJ2m^D#!u)a*BuMfD&JevJi(gzGRXEG42(EZ37?ctU1_gwI zp#q}KRpAH1MKKCNeZeK}xKgk&7&{pmOz z#6}H#x~_q5SfZ9!TR3(=a0_ZD{dFZ3|DR8avWVSFW%1*Sd}T2>dNXRqSn@J0c_4}) zGU$y`^7?SeTW!gYYsoXU^Obzhetn(eB-HPks{@S>W6JltY;Lpf*{fT9=IAZM4hD5bbPLOm~juSzkTH>LO zrZ~D#YX7~C&?|+SogeT=$O`A#LR8U%(SsefJ@|ypYTtBK8b)9?8iv{s5rBTS&8D>3 z1v-dtl4iG}=Ufv~jho3}9^?n>=6HE;A3(q|2P%w@DU7cPjJ^QI;Hb|s2WiPMEm@Y5 zCrU|g(J|;hhCfBL;rszf4$;zc?h{r#6hGDWeM4|Xp|3G4p9{?e$xUyxshBL2Ls|P4 zQTp)AA7V068%L?B=^RRK`VJlT5`aD3C3~9$`vEvlKJG3_sNpIHmTH2xP zb{0o%Oq91l%;ild0i7UH!32Rzzh#o)%&?WH;3UKh&MqlvsX1+TXwr|N3IP$bLz~PF zxGEjv^Z)^aH!(Xr_g+MtNuvfFI2Z`f=`w;zDvSXtA}_$e5^xgdz@WBtCeceGP#N9! zPG1VNFglr70e%hal6sdMi4;Cn+tcrpgFgPr0mF~{0v9h2!B)JmAkXk5E4+u1M=vChuerW)G2b|+k#l#qMe zjN7cA^b&CVNU6@)KH#6dDGJ!f-@5hj?NM~ILuM-3Ax|8cq$=`?KM)$XbTf~rY|Vgup80akM@MT-`N79}s44O&D-G+hf_V80e8(X7)Bnl~ zc38@lQh0Fe1N0=aO1!NUyn*8Zbe5A#P$&i4q)N*4Cr|rv^0a%&A-&#hn59r42iTY! z=L%0s#&(!?%%~i~X?Or|>3Uy9g66gAtQ8a*jBrk5sP(0s&)c z7|#+lQ7%__MBI)*o*fzOJl{kP<;mA;d$YXC19H+aF&B9uy14XJ_Sn@oU^2SgrETK zR$rp^KZ&Y}4%E@ogL8jQ9jI|>NP@nOMyR}=o? ztE?`?jS%pNWT!(?<)YyfVoB;Nw@GFEMde&j8DEjkJNV2YQhU)C9B4g;JON6uNdb;5 ze61SKJyNV&p854@aFjgv%5%Pge3Z&!DU5m-x5yii3+hWwx5)`Zb0jBcaw4!LCvS30 zOXXv+J1p2Hhdv5SM?3IGBWQG_6cKz{wrhsZvOr{tg6IVb`n-&S{CX|Ag08Mchb$8_ zqfIif=tqVV&giHdZ(miqUbgI5K}Zh$a;iSf0A9PRl4#iH89)#D*P_1RY|Q9aD?cb@ zsJ=4n13~3qk4Fqo|BDs|-2Cf11^5;K7b5h72#SmCIP%F$ZCDmbA!HMkaCU~XR77Xg zzC%YCIr?93hJ`CiHBc!&FeUOoK_hM4HVPcAUKM?ceymDUqVVw|YrytHELNeQATWSm zbrzXYBQSI*K?gJHa$MGXPj&j%Hq1w0Ggi?&j zCegr=l7&SCNpwx>m^{u4QWx-16{BhMerP^UW94_FO~0YJBr;)o%P+zWv}T-;t*B$4 zcSs&xdUasX3`s}K>e$CYiV>Zl7%{3ThAZ??gBh_xi;Eu0Bi?*m3(^A7Zdg_NqgCY* zu}6XNB)P?nhkDCE8OtuzD-#dK-dO;mKG5XLbikH*K*@bEz4xrcMUW*WwxJ>R`Y# zWL7UD$Aezw$r=O5spjZn5H3GAIkY>_5eg(X%`lje!9z5Dhpv`$Wv7XqFal86&nFKV z%CP3)w(ML}R_K)+x(*;&ek=;Q$rk@ToAy~sK>JK+K>vra>dK6}BrH-)K5z(HC}eqq zvWbjMitp@FS24jy5)F~1wcKzRG?NI`86hgb5?qB3?H1f+*X-qVN$_Hhu{l;(f4F4vyt2yeamd0`d7H6ryE9@76AHh~yv<`sK5TKC-k0 ziQr#J&blrf426@?T4)#HQGl!P~Vtbz(kj3jiuVD!LeIbj_Y zaD4;C$)UvFLbO><9x(3v?IdK4d;IG3g92Emnma%apV&L5Yd!EuKUTfEj-_W3SHQ3+ z9y<-JU{!$iomn^P4H4p&cD-d-7y2IyMC_eg>dkJ&h+?V6b!g3UEfl{t1-!?gC~M&L z{CD7ehVWp{in%5D-AwvV1v2Qb_LiQqtayoVG5KKx(3@(?J(0$uJGPZj^-488c z{A*b%WGf;RC7rIz55ueXhAd|hdQd5i-nY}(*}DqF`{TiE zH666-k7*mz>P1~NQaCD?8$mel`U+s@R(kj%Ctg$JjZ*s;uM_6^K7Ok0?*+4}FWrIr zF?`~6>x{bMBqB0Br9i^ zU&|@Au8{`%(SVdD32G-wJ6~{?D779b72b*pSZ#od%x-Qd$nKyGi`4T|YRyV(E#uYp zH5_^I2bEg)XR0~8P`Mj0e|I2z`OGR5DYbrGUY_8~;BntWYq7#!NWK$K-ii}2N)z!L znTmf%UN5CbrF3)(vHHPf$8d(FnHC}_j;p`8#_cR8L3Km=6h#pE2!)r6^~@*7&wxcy z_Sg_X*lAS*o_k0|*gAJ*gZ&`Rn=6a=t}NcA6^c2Sq@02efR!6G-&B#?h_YrwWfE2| z3fY}ymIr5{O(r6bXmO__{xJF~dmX<&ItuPU5aOgXX?WAy(GjT;=$9`c4VwbEih`gI z+}D7{{v-wwoe&&z-VKgOfNSSTOFs_!lLrv^83LT5-e&M~6hBAtd%eZ)rlSCg#2`6S zB05XBFeA1A?KVn+okMQH39=rO(&WS4iohptLsk6ZBZf@$JQEuGD&> zAbI1-N`X{pD*3de!5;DcbBPp9NzsonIU@6h)#ay={Q-SoKX_<7JJ-RUM^7De)KSKA z%BRSRT0If|Z3Fsh`}q$p2(ATZ*-tq@h9y|iq(Qb#xl%uP;#OJTS^F`_ z0&CtX#(zzgI+_NC1*iftNn1immd&q}#To-u2GB>p<-sw4SKJY}3oML#VdGu0n1B|? zhmOX~o>`97TR1!hJD3^+Ea&~Sdmh&6ut4(RtVw2Vm8>@GM!+PQOlHQV99mVB31W=p zF1H}M!&%#zb+HA}?SlZk9(Z6UFUBE-0FdC~T0p(wEWzb97ErGb2spbHd|fmEBG}Bd zK>EX3f{k|;`w9f$XAC;zhRUgTdZ2^zn*r<-xispbOK#~F;#xDJZd~#}dmIWuA41R(N zfdby+EmTR0lwF+QJkZ=wVPH7P$|J+#GV=>>7fMWeA4g%RO8r({;|V%g&xq9m_F|Am zY19=Eg>;YEw$${&v8;ZGh1U@wP)ENo=2di};z^8@snzVtB5hIup7~p{c zvB=O+4_Jv?4Ux=@v}`ilYBD>+neb4fCRCp6RO~*G4QHlmYC6c26{8y=gq^R@nO0|C z&R1VtNxH*n=ylEmZA-0(Nb)C`TyLXKvHvJRgvI#!-7(oL-e#krVEZiLXydmB%b*ST zz0myjB6$Gs1^$Y250e>Um5{U=4|=~LB6$j34NnGv~37oq{;OpdQ?!%cim0h+A~q2nMztZ_(}G(KSq1NWuZrtqv+a|CAgn z>SmE{^kLfo5<}LO9_y6KVxm}FabfP#8HKm_km=CQ2K$)OgzjTXkIsiMf@WqPGhY4> zc}SZ?J$GcYvQcSheKK2VD+_!k>V-d;F;0Y!Opo4D;(e6G>9G=)(-V;sA*0K!Ov9J*<1=B*$I&9-yshlb} zeF96%3cfz6+#52Y$jl)RC*SP#r?zYY>;(bGMh$YUhZ2wIdQMI*gFgrG&KuPZ&P$9L zh1}Y`)&^{-4;a)zoH=uLgTc7xefQ^NC;SLMBX2Tp&_ zb(hrKk)zU}^#GDEmIxsD0-nhF{ti4$7r#Mu7`d{aoiY2_NMrNTNJet9k(_J;Xo{FZ z%Qb+O3qf-t(42A?;|szgVPA%o`iG5QEJwqH?i?w>FJF;Ua+1h$nkdcWlKk$h3bZfKeakygUqe za17i#hGWcmOOU@C?1Jx6?!~fTmo#Sp>gmqqqgVt<{k#O55YEJrqM@~wKKT^0RA4J0 zKlrQ7J9RfvMj2jMfy{e5xXhN!ISFqmGEp|uRlHZeZOJL8xP>$(h#qh0q1r%YE$x?c z`}%5eg0R)#v^b0t9P2s1N*xBPn=k`IGXm39i3ITyT>up1__p^otgNB`3=x|UL;e7d z{tF53e6@rqr}XW3*x?u^f2nQOo4g>$_kzh%^LpS5%F|YYkv=Az*lQnh_91T{{P-xu zg=t|&A5^q$B8FUd;#{+g+z#+&Wns&7SLO=;b%X!nPknmtn6!6KU;EUP?V` ztMr&EJ*@J-Y!$q<#c#G%dXksAs6qtTDDoJGaysUkP!dEVSSEpFLD>!|+Z{@BBZV`} znFL^%>sjBj1&B%SKXo30_vZ-dSV}qs`BN!`^6Hi6jHGAf8Gn&(!-0CG(+YVdD74)>9?TC`YM?={z?ai&bCeraICxqRz^85 zriOB})WLut=80@DhC-4AdfRBHoT%I0AbWR)n_)Dvk|Dkbt%vX*TZ%f~Fza%nk8=$M zd^m^bInV`0vIfWSY$6&4$5G=-!zrn{+Ep!}i=FlrP-nMAYhb)PT&e}n`J}pLTvAU(ci!AD_F(&g@L_gXs zU_=Rz4xpO(zyzp1z*lzug#$=VnIvSlP;c45)Zj>bH8KPT3CHdnS-w_{14*=}eU`6n zuu@c{>f?Pe%4}?KloW~S*O7tGun_1E7>NinOr?J`icB+Sh+1UeqR_-JGP`Jhi?qML zX>ORW-tfVG`!@1PX=h&kD8wInxDhFA;o)#Y^JyIRrXS90k6jz{7yW- zFl087tNeN^P_J^a-~>*7emijNK0p_tav4Uf;4%}CBod43zI0GMf=*NAwe@g7<5_YW zi)Qu+Nf32{-GqI`!Yb?mWKv4Y_hb}JG?J<_ZXh!1pFwT{xq+d8Q{( zl0zj6%0Dr3HG2ZcT{y@gTmx(~_Attg!eQNJB4Rkpe6uJd?yo*3@=x-aiR`!NsgkYe zc6!er7`$b?vi}xrIb3xl^(O(CV5muNJ_a5q3=w85aDzxM&Io8oH6P9vkLKII&=37@@WUf3SvDm zpReAVu|{I={DjXEV5oQG7hgZX>|tR!)d$JP64IYe@Cv1moAon@n9IOJfn3aCV;~4@ z2JWaXAMHeom`=QlyXNsO`nTCKJ+@3wQ08PUBOgYDVWKMuLfSa4&)dBXSXE#qpF_Fi zaMpcbDe8x?0$}FjXJ>M*IcqWJn&ZxjV-D&&cWVbHwe~+Ag~XBgiAY4=8zirZpWljS znPhCeQtQLuJnt(qCAKbLj(kKazNgd!GvQ_dd`>Jr6Ymo;Ujj)GApUgof*75^tz|q^ z+Yca5PsAU@ixeoeo-Vk3`v@Bya|0xSOk*#ljSP@z$x`cqQs<+ngWODLri_eVozQ<@ zXa9pYiO{?FskT22gzAOdv)d323{25TiKjh~ad9Raf1{*a7io!0a9H|sfS zbxAV@!mj`UYy`9XH`>EzhJ+S#rH6l5Vrh}Gh8Ze@BmLN~`GvA%my z8WQi@QMQ+X{nmmGCd{Tzg0RQESxhppC5i8)=1F3tC3deZ!JD~i;Dor{_=9T}k+O3v zxI6xy3z)%fl_P2e>}4k^nMTN@608z>Qvm8*ETnUO%mRy)`g`1BA)OB=ssqu)rJ#^` zr{Z6ffCie zJ6|W-_l?ZY+x(E`eNgicYJ_47m~)pZw*iX_zA(~j&TDOatY?;J!@oUkO!lF44k?Y4 z2~8enT~fAMCc1`lSW{FhJLqs3CJZo(zZ?(iAmsCdV7l`o_YYu&46OtbdEdq?j(W0v zBXg9CZB7^WOB0whWY6Sn0SNK>^vlEUJg^w-AmIWYn?GRl+ZO*Av`vRMiQ)IBbnw_` zX{b3zMT3Uqvce4TNiSVFlBE0V0dIx8dj>G@4vQ?-eU}k722a{ACz{Wg0iJto(rG-v~PD zy|d^zl4sEY;szZd13Nr|4h!CRS)@xWF(FuSIbqS+NeUrf(g*{mnQJLeY)KyMHC_#b zV}--C2s*%bT>g&|S;mA)%^-QAYh3OQ%wZssAU^l?eQpfzFlzJyNCck~=uyjx z1As4?y^`5Rgu0C_OHLx>ZXNLq2u5^ftUoRJPBW70&)?nxY(Z=^5 zcL1X-Xq_oAy2HU!r+jAU%|sPbITEt#7we0YV8L~=f=IzaUM8=FRoBhN^oSvg zRc7G%f@0jN?yL)@tchS~mkQE3_i^ zbNz~sVCE#vIhDl1e=Y%3|DN>!+u=mnO?* z@G#g%LjZLT%DeC}p&^xop7E3Pes7hgLsyuF2717^gJZKkJ^1jfnRkuvoQZb93>F=U zL!mYeeZ_Tx=VO-A=xs{m#RTtv8;xfP@ z3(Bgt8$zV=O=EgvMY@tl?lRQP;x~(5md*+cJG|I|Ly6dKt(THM{LqNYqpV4 z4d{%>C3%zoLhBt24hJ|vawT+m1qBEvq}?l-LhVKtG$9_h{s~(hYr1*5)$-koWKFjN zKh^d<4z_DLoPD@fhJVug8O9oeB;Ui#(Nn{8b8<)&AU-ADk-A8}LxI4!j?i)zCkbRZ z3sSn~U;_$ZjRc}*N0xWsD>7vDt*O1}UD$jO)^zA~&6$kvL72yT7gvvAHBs!tlEc9`~Lba&SK8pfE255I1baW1B}nzt(`Rh!@Bo2jpS3f{t(Z(q&ypzieV- zUJiSHBK#pEiG`OP_1~fqUHqS{jPl(3g;DnU02!qWB#k4ah9fehK!&3{i9-Q_X9GdH zWCci`OOFDhe&C`#9MC|ElLhFN2B<$DeH)w?fCJq`ePlqV6pnt%gwb~@s$cLFNqJ)m zLp~9|0(2EtARbEki;(2~c@{^>Tx#K*k^ovwK!bJe5*5rYSH@foTd%Q(&3`(-fGdz%&J>DKJfeX$nkJV44Ec6qu&KGzF$9@Ukfo z@<+pW3s?6_USW)1zDzjS4^n48U)q9~QtRD}y2Y2~wPdOF02VZt118|soymBI5jV0q z0_+;b3vGO?L$(^?>wn}&-^3(kD4oIYVE^h^-yAt3QI>n>ur0^*t|CA1YoDF2J7Otf zs|ju~;cfc!vvM*8+k=Pz80?=P<41n*h<(NKLuMn9kl;|~Id<-Z^pFNU-l3IexdW5b zw|{v;0U=XrcaD2a^2wz>*~0H(MR?oepZx?bc%jq$gvIz?fRCADpNl!{De^M{-~7w7 z+?42sL%lnOPk5vR8McnpJZk2F6&`c4amf%JiDHoMx7W!$)ls;h4TyI$=wpr?A|nVjTP)b`>3TQFdhQI1H1t z-fu7#VX&_iu(GkPfh6AHB(iC!=s3?mh%?<|LBcXgz*R-q*)jJ*UF1Dm#Rbu~qD$OL z#v_9|`Oj8E81;<4OE_vm+0;r@9Y8)dpbp1a-GPe${IcYjYr^BwCmX=RA8}R^Uf_;l z0H!#0N0^`lkvAYJueV6JQ`fddQYi_#W@7 zKRnC8)oyN?iVz`&=(>3lLqsX7*#(t&mD(VYjgKW{aN~`L}=FvbN^WJa&sDO|OK)Aj( zDvu@-ycBQU5|u}TnPb~A^4RU|uS{>QXOEYk6^t2^2%cr>EE4djfdmvSk;klISLBGy zrC1Fwl(`3N+kwnY+5BD@R8;euzgU`&(gHGzg#wll zo(N{?^~Oj=QzasB1PVEh2;9wN!=~ShztugfN1RK6Y$NyUrG z*C!uWu>d2~%h#7ekZkWjJR@Jn{%2UeHbB~BCVCP1x^eSMl&`x$+AxEA!U2X!9E>|f z3I${u%P6|Bo*#RjYz$hgnL;cbrbN! z#Pwegsa_D@pTI0f|1wPI|AI*UtEvBA7OB$>02Qg<|0$q{Wjax0Mx@HWWj;mf7N{0* zZA7G=NH!3umu=%tSD2>2|5p?Ut*`7Q+U_|{Gg%&?)U(~>O%mkaK|PBE%|Rr-pVP*i zHpcLDNO)~CCtF@KYf~i}nDLqt4Ge7kR0p_);m8NUfEF>sWSk)?_9HkntUS@~Iw zg9${gx9^)T?K5!?eZsW?a&y)v!WAS>E6f^YOBJ!Kv$gd`1)Vbmyz~@t@3F<>o5t44 zhpeF1(fi_xW<)nLb)C6qKO5U1w@C?dIJs|-TR&Uj?N%|3Hc8BN?aK0hW`ucO=zp{K zF7R~~)&BTtn?plsNq8J7P|ATD@CX$SP$A{Ht5tWgl*2;^$|FcE5fCFJB}!Wol0w62 zv|vSif`|xQk@Auhd87z5AddW!ucA>(4PuQwhQrP2! zofpH1$84>zUlI1%7)CtiALGb$aus2R#W3PAzf;&R3Hy&2Mm**oh22Zo*ce7U=4yrg zg0KRHGM0DZF&8Q94#FOfVZ>w3P}r@6-5SG)$IMpPO@w_bh7ph1S7HB2*!eMxc+3YB z_7lQRiDATJ{wZh6C4WTN$6^@qm}eDsC1D?oVZ>wZQ`mP2+aiV$kGWQ1-y-Z~G(5{Y z@t8{#_6@?GjA6uM&Q{ph3A-bP5sx`qVR^#78^egl?60tk3A-SM5s%qHVcmqC7Q=|g zyo-1d^nL+hpNwI|W1dsk`GoBm!-&T`sIc=09h{t?QVP7Kb z=@>>l<{X8cN!Tx981b0n6m~jcSH>{nF$XH_G{U-L81b0N3OfbQg)=N6XAqE7z{vz0 zWdUCxU@gO7eaVvu;3xWQ<}Cy~sels+*cscY8OL$F5x==bGaQ3w*%&!@={F7-m)H_s z=0W^Ehrf66w?pH&#Qyj@8h>Zw?-Kl7i@*Eu_bmSYiN6m_8<*G@f3xv-2L3L>-_`iL z2YCn<)Zw)5TH4S-uE7e``EhfwOpL1jE&!Codv$&aHFG#NYxX6{_>Tbv~^%bV{ zO}Gp{#nf-!id`v-r@K4qaUOv@BGVx_rXcJMYvmoi4xXh$#fLSdsPY5Bjqvxq_ldv% z!}QqS{~#vvS4!kECGtiga&M1F-`{`z5$O30k_bNW?ECv~5H?$37Zc|B`)?7pufp<# zdH(*pgnd9^#P9q2D+&8&QtBgq-{1d;uxAxU{Jy{c31RmsjQD+j|DS|it1#mC{rydZ zU7|4J_x=5?gq^K0;`jai9fTdNFyi<9{VxdHUtz>w;_nIDL1D!2`}VcZ``;6G zoWh9T_xFDy>_CMPzwhs#Cv399h~M}3FA_FdVZ`tI`vPGvps$5oh~M}3FBA5#!ieAZ z_pcH5Gldbq@9*Cv>@tNBzwhtgCTyO)DX;QakA1bj~cDFU3o z&k)e9fJp?D`}+?v!{;=^j(E2IzWWgP_+VV(=lFdBe}Bi{xI@P!cE{gG@pm%*zKXxg z@plXU9>d>D_}lETafw~=cPRcogTHzBy9|Fn!{5XBdjWr=fp;?g4#eMa_&W!GU&G%G z_Pk0f3ceG- zPcikE*UJ4p<}7Q!Kq3vmUckNnCbAf0+BDk#vERI(8~FTMTBJ#|Ctun zTp(vEfhP%xp^#j(NT4k>9;HV3@UmJ5Q!3By4xETzA&i9^D-38eJ};)WL=H~TcD}$5 z{L{M?Az6_5Es|*N0HJL&D?LXoH0^dLUL3tN>@%{S>x2)RBW_&)Yt(W&- zft@ktzBf~eaL*x}uF(I}XjQKh5H1H@hhMImx8eQ*eRGQ;oUh8MVcg@Pr-tRI6%d@m zOgJojGA^Nuy5Gh%D~K)b9H+}#d3Q&8)CJ=ZNtngra{SmVi7Du%5+TCCVWKV2T{N{A zY|g;iH6fIz95_AiNr*_NEO zEjgRV6|*?(1I<5=yRMKCBajRpStB0PGxCEtUqFlI(CA?+SQ!4>FKwM6vMNzLV_>%j zbSyIb6j-zsk7^gUgHs~Jg;cM2!?k_p;i|QbdQfXCobhkutRK;0k!C4pIXeo3mKqZ{ zA^$V{I6kCmC^P1z32{xWnHsnXFU4Flw8D@6F$DfV*e3@!K}sZ+=L8Zc!_3k`Ep!Ps zQ$4aaat*ta$gzgK;B^>r*Zo)E)wg=*?JCX_>0g6Sz|AU_64Sr?`pEPL03oS7{TJt> z&63Z8anu7MW#%SGHtfR{;tZRidgd{^>?n3^_jzq;ZLOp@ZJ_6Vlm*^(idVkb&lF@^ zSElT^TCmEk7C^RfiEJdCgPkPim>g$oL6dCc5x23FL3L@*nCs^IP8tQuF>I;j}_ndV-JdK8XOynYhscZ!~R~L@* zlbvTXR*TA%tGY#u&;iwQR0pj$)-76&1U9#+JWeDBimtO13Co#Bv@~^*GY|dxjiN7| zpP_7AU$ki{h|`pYy=d`ZQkd=SlFf#wGB9RS7OIx!4(KgHCPzi{5Z0^JUxaPZ<{^(r zYVAJGB@OFY@o4Lvq1R=SopzR`owXnmYnvw;6_Y5IW^)D<9#O?eFN6a($A56*3ANnJ z29E0p>U$d*cERB>Pdx4!2{vS22W*h|QV`7lq;$SBKyDzLVPCWQ8bp=hR1O^CvRDeJ zRCF|ECBy+4h+n=Xh(8G)pT2-EOiXNr#DBrL#fnc3?+Pm5T-aO)hnonL#mgRYR%uIS zLBASia(FGmU8~Ru2;pFY^zgrOe$bNSo)8g_^dogWw+XBw8dn&ZqX%3goER8 z9ZMSOu`prAqB>8aJ(5}>)CJnBY0GPuL;P_5(PD~?ED=-8(!KB+;N@lkJ^NWFKmx9>2)h7 zT?qILXkzQoJbi^+3er(MBQj`iXuxVs&?B?6+I6(qr{0ibYJ?ZT^VYr8HjVS*M`Nyz z0Jdrdd_D3+HdSK4-Tl-Ec0+@U5N=Wjdg5Y177bl(vzltPOGPUH-H~da2M&y+mfFtV8;xOMX+N_!QcbL28Ah$(4^Gi@EB`AVB%nb>CX zIz$sWOC29VX=nP*c3uQ)TCZ<2FW~$c$9P@OEs{rF(1tANjFlr<&~tNXK`>L)Xbm8cYFrUj`D>I)v?{?-B{>qup=mL(f;pWGk)Ufsfgwo8JxiDHhWX*Wn>xi3% zzyHBY;_vCtBY%&LCEld1Yi$NBV5sogm64OLmz17{M*d=GlWJ5(;SZ$17vi6^=v%&k3FPRfbl}WRx2d$?6q1!@IiQ4 zt!dg_D%?i1Igmo^S(XyXK(3z{7P(S%rNgm`^Y^;e4vNtyzwv`ezRQtPI)nj9Jq>Fl zqYfXsFmr}1#F5Tv*MZp(_+XbPtq3d+p%*v5D6zJrh}Cu=ghM#6b-Z0{!IRFJb~YEOw`piIbFp6*{hEl9z&84c^Rh z90cV^5G233(~0|YAjS!q;^Exn&o7FQDZg0Am0Q=>pi_bU?)Uvjz5|ki83TU1J2G-y z{c$p0P2D(6#wgF?rO z^T@grYE>Q^FbMe`%|ldu0c@AuEo)^LPW9jQb6;OL9O_IJNR0~QBO;LVe&+;2v}pP= z*=i*%Ovncf`B@Ef#^|*Hb65o>;Hvl~8j7eFt-2M&B%D9~7pf|JCE_TYWiIDwd}U%O z7u`9Uhr;lgu~J`qdl^6HD?hh2ih}=&pJM7K&p3Wm!8%-*2+V9pJzJDh{}7lo2kMD) zw(0FMV!m7csn$Ha6Kjr)#l>b4Z8*%$S&&w2^@!_i2EddK6pz9Hk@`6d1Hq^&aZ=8{ z-ol{QxdMJU#2E6l z-PI>Y&0QrT&3zr4`&~DCM6~Y}Q@X5yaGIzH@6ngzCN2eEf!#$-W%7!+l}jTF(5eoA!R@eypUy!1*zcSm+q8w2eV z*)s)*6m$slA?!MBnu(~pbd!kJRbp2l^9ANQj6M z=r-A2$;a_}Q2{E~0VKa$;kY(k*bl7~al$<;BekRH`6!$2fo5SBcOG;iGY`c(0OO2; z?#6UGY0CX^_u39<>e_Ebnrfl_=>$o-cPP@nCj~8JlnY_-O{^?ue#&$AkOooXA8D$( zSCwD{rt7DL^=&p}^cfK!%XbgRxE!6ET!uSno3NTPQ@t>my)t6v_v zd@l0zcg!(hb`vo2ybkDKc8S6k_65%jLopp3wV>IxB-$oA4E`r}>$#)JQqZlJ#k6As zxRO+NN9X?V@`og__%xptT?2$sMSS6Z$jnDnMB|%7nz!=WDvry)GK4>v;hMqO8eIzJY{6NyTBnp5tqut)1c5Z$)PahRK5M z3~{xyBTT!&W{`{Ta5=DU9$qXxm?G=edxJW9r=$HT4znvmcBphfDz%lv=5#AZ`2io!If7#v?8*EXts7y1cGkz*un z9{Tm0*-XbiBE>m%izaY9jLNS-4g3#}OZ174J@!%fYFo%E1Q~pjomuiVnpqyJVxtk6 zli4GKO(JGF{>sb}?m^!;mE=&!VU@2KQG)fyY52AnX(U9XTDRy^r3TpQ8VHVmg{!yR zcHMUcO{lM@p%W$9(`EUx*uG?B=rAk)kXtb*5p9l8;Ke^eG4A5AM;iAp=Y&B%E1xvX zxvE?r0HkObm*8JVHk~(-G%-QcfR`Me$p;>pOg8Ztz;+t(NE^!X7obl30F=QaDaIo| zQm0wAM(1!lxl-809B-#@riHYcZ9yZCwMBrbJd%OHwq=SEQ@~E(<|qoC zv%Nu;D}qjTb{VCgnM!T5On`NZz9xBMa8RUZ)wrWx3X4U%)K(MmrM7y-6^}s34edN}Zc|``z&A`@-#W;f!QD0j= z{*=L@^v)V6c;qKK&;jdd7^@xK;Xy`smHl4{J`Sqi?u&+MGJHx?4Nc~z>o{(Y#@O3{ zDFS4S9j+-IW5=WQvi%|%3WzcI8ZM`?xOwB!XbAJHQS}DGp!?F#_kT>3UmMsli8znE5^U+))dz=0n%c5p`^JIvzOuB zEfN+hU3${9+GB)uJ$qO;qIp##&Eyc2HO3@!OUCDa93}Jh^*^$E!&qr9R5g5y_!&fL zXZ2CHkb92eYBXQ5(_9r~KCCzYf!CX! zJ)scU~vvRiayR&Rf^fAC*we-|NS$(Sgc5cgFLfY}bsec%|W=h7lyIkmgypNbhYcMFa4A zw4~E2TL>F#MN8W4d(~PJRgO9^&RHUQ7h#k(rn`Q(F^y@z?|W97FKL z(rPZjK5VS%B9ve^DYTmNGzt5g?Ke2BW{xIp!=x51c$6f$)G~IJ`72lQ{%+$)_ww@CM;23%9gy zyg|5OK3Ct9x+D&!B#M9G0A?uOP8k*b2=c)ilwHp31RwnPQx8J!;8akOtFvq;b#Cx z2nmZ;(;lQyrqhvX0zWDyEHq$WZd?;2I%rnn!-vA@vHm;*kt$THHg%*bkkhLoh^q)# z#mTI~v-NK8rf#)wgc)b?#B&_;cHHqe=&cD$P3zBz8a{%S48lWltzmwB*!Si76=~@5 zwQDGSBq8h$tDJ#=3Y76`-3jK)CeRi!Kl!d6|UXBxd?t~P#xS1x_IpN;~zIKXNPSf>TPmo=_t_U09>eK)$6su z7hHOWpN;}K2M7R=KrxA~J3jfXn(g^MVbwnTJpnN-q~q%Ml}xErL3E6mkr}6rYkn<^d*pGOyuC>p6;GCmflkXojBM7(0i&5)w^wq@ z(c35LF8Mmr>K64nNS2V-M{S?@>gcv}1RDzh+iIbrenN{<1Hb%g-N~pPXzLxve3)Ce zck(urpEs4X--#!rXr6hy$c8Dws%5t7xqm6jz+CPAs^RtUutFlx!(j0**y6qG5`I4+ z;sM*eA_*WzPIBZ}`2nc1?xKSfPjUsA6ig7M#ix5?go*+1#xi42=A08E9H?;~YPNMs z%}qiDglUVQ%6Z&<)CmmWKzB~@h5x}^I`M;OUi0t@JP4{RgqRmbo4$~M{nkQh>@~D-3a>G!a?mYxEc58UCOWS{9N7F+#cQBK2$N+c zOCVljDPF;vdJVqtKX?s3qTS6Y^%|cRYG`q+^>o&%UZcsPtn?ajtzZ#L0LZ9bqgAS< z*JzbG@yiOW*RTkyc#RmL)+t`2jVQ!xv=J@5MjMgAYs~SzMqpOmZoNh$@`=#tH5NeT z;x#liYEnbMg-jR*;DId9dD~gW8F)g9f_%%+G8L8))wPw>1x=LIwa(SW2iCRzpRTTV z@g#K-y`a~!`1UtH^Ih0M!94&G~b6D5+CXt+mN75!;vv`0j zPyi{(wQpI4X##qIeue1vMrmmgC<9!=qUM1o(g&0Z9Z2&46qU+VfNb&P#Tj}+l+L;= zS_q{T-wDY%E(@)^v~JCU(oGI@osf>wHpLChFhbMfGD3quH6PYyrKC;mkQe05MX5mE z>5yMlfqbjnyA!57qBsS z!sH2?ixz7d`mxfTz-bnVd`%6f617DCU83)f4(H><2iNQXCz?+31z2BcrQUuZa3V93 zTFzt_;E{v?ZGC?8-r7Q%?-o9@c3SPix{?e!r*Uwe{Ioz$6So*<*7Sxog^v8Q~NP}@6-bl7A$_1pob*Oc>9zW-4^GUBp$_rMGWheXWy2NOdHD9C~8 z_FXuV&yWt|Bs9mVvFy6Zm`}?G^6)w~{DIvc(`9oZSdX`ms*(asJiAN3deXTj|1GBv z^;o6ii1$5L{(3!0s~rQ5XEjVz#v`TUyXrW{bTP?^y=5Zs>`f-)7$Jl8TB2*_a(yHB zE1hS#AxN;}VWphw07CUO;dXnf-(Q;o~iSdj^c z>Lt$*J`NE?VMQJy+Ez0C!et67GfhN94N=H4LT64wGpp-)K-^#%40TTwv~wKVOl5i0 zJxMYh<}#JdBrzOA$_er>I}^A}46fiGF^9zrHG^lUpe#qa?)U)=6VSxY8C_VY?o{5J z&e`1+K2Zt-9S{K>P#^_WA*Hc!xR#M22&#)JLS8!~hzi0_V<@JXP+X~rGXXEKhaQgL z{Su495wUm%I-rP%4MrrEDsip5D5Ojy}Bd+ZP;8j`Sse{GHy z$JRqa_%eeiMh&aC=LQpn z+{=_4{sU6w707~#GWe;Ne!3n#ZF0w91a~^}HJG1Z`~`~A5v*qAIj2+tFqWv%FhxEM!jK}G;m|pO47Vf~} z;d0S)Z5aiu8{;BOBanrX;p8X2TdH)ZAp>|a6o6xnuUHE2ETvEN$xF7D^_ZZ(?jpCw z&*P0Fy3;XvNEa4_zVxbq^K}tz8b>s!AVdce|BHdjRIStq%oKE*g633?#C;URHPvA5 z8POKc_y4!IGqpcZUJFK&C*wFxNLOT1yDAV{AX|7I?_?zzPr_-Sks5ec^~4CgDo97q z7~(TmtX}_nEKId|C0ASB3L2mJ<%Mq)hd+WxRv1Y80!gDBIhum7f}Qrc_wm-;q7u`g z4Qn4R587m!ShcCQOCTh0L=XQbYDZ+Ldwp%&_EL9OM;fMGcg_~kNi7A5Yy>zZVdc;m z-ZLio^ff<_A1tPByKHho;su4xSt=4inu)PP;H*`QIuNhZK3;iW)rC(7u*;wR28T(b z5?NR$#d4;!2qc_nuK58*xW0JQxnxLw^$0@bUsw$8A)HuDEnf;+<<-+$)zhgNe}J)< z2O*$2T1%@0fH7|o;RZbMqQ#-=4A76Zm7+GnsvOwR2g=h)GMqnW`M^FN)E6`_C* z4Ta{Zgb2CYL7-EI4(WKrjD{8{iTw2O$}jONl{O)z*=12nZi-(Er?Ao-5;Oq7CmdAt z;MXPt87418%b6B)p_rDJ?9%-C6hMNPSIduDk-tn2Bgrq~eNTk{%XxY7?EeNY|Ll8z zygXbje^p-S%SPe{f=M8A4?Bt*`P z2~8-^C?gWYk?7sVL*`8ybb(*UL@)3-nPG+LNFa1d2HnOd&_-3xK2UqS$Jcfv9ma4@T){s4mNa@kpJQ2^_2g zR4$~cI0HP;t^(NH!Ned-pRfs~$F`YvE{vy{b@=l#VAn;CSnJ+?sLYHNyyPwPR^l{$!9JfPBQPb zV#3S4lmf&-YVMY)x)q#kn?Dl%Z9JjLHYeuugtwN&g7GWT1P%aLxBy8_I5G~%n|3Qc z&QIOj#;?GJ@`SmH@Kfyh|DQ+Di31ZJU)VAOx#jFc_SiYIE&5Ud(U0LD|2Q`sQo9{G z33&Q@UldQj20z8r6Ww~KD~oi;2Yp&$SLeTx$T1<9lxWk*xA2b{+whAZR)AIbCwvv) z;4-KDHzgL-S^f#UL4lzH!{oxc74>BPM+Ei}v+Mh$3a-U-7}F-Vxd(WqK$<9!oUY1a zU{lP=ls(NZ7bBkS2yFs1C*zyhPLxE5fp~Q4XFH^Iq)O|V7erdG;-{Fp=0YbeV5~Al zFNsICV2?@RW6{c5j+N-?Wg@j!N^KS9hQnjo0~1&&wVx0!QUwDYiT0_IkF3i|JGf{q z=2|fQwt_s5`R|~t`lwM@LPtT=g|U^Cft*|!-hss9;rciLJX)?rLIfjCk!OLXaIS)x z-+Xe8H99M)Nx+-|NjQ2)ruS)nFYw{h@Z~<&@m|3+t{|l1tkx63U9o)^Dac%7k;}up z@H0MUv0`qt*|!g|k?#9jN_(af`8JlAgP5Zn=^kK#o9$!xTFL=(MMBgXx6#(vfCeRb zF0^@IN-$^n%m-l&DPQ;k3*#*+T(5;+gh8@!0giyfSFGpHbx%*7il=Jk7R~=K_LnM8J#f zW96}Mh)YSF2b=Ddqqb9v{vtO01N;p_p1?*IGGr!e4mnww$(rGhP$^8?8Di6?*PDgGlB&c5mDShg@s}L# zvCW3H3wKv5cZVr=&BEQQ3oE!g^0RURN^A#6Z5pt-5z_`#*#JJ#?!;HE8bCH1g8Oxx#6EsVcpFlFJnFVtTxo0AXDm?qsr4^14 z&kKp8Ib`pv94*%SOa{1s`cq$k-`cYJy8T~ruO}+u0V*V#ia{7>e9klUOi{C=;c;znNZ^E7O- z>{xTJeS7T*?M9>z8S{(DZ@JoI7u&XjN_QT5Pbb|DphxRFOA5;vuz!$*w>3p6B%`>L zsWc;u)a2_ysSYo=AP~2v+HISlxz+@|Vu$t=cp01_AGS@hbYXDh<(RVdFY+In#?vK+ zogCInaU6^AgM?lI2@YT3vAWWXk??Q(*+M^%37;a6pL04W8V8KRLdO0#FO;!nQ^a;;uhr*2 zEuePmm|FDLZeX7r{+0C|t^Sx|FCG@wm-^YCWZ1O|KgHAu^W4D1ANE^!vIr9s<*n6R zOpD>?E0l1n*?ce8hc_zLe#QE0!8*obWzM~$oYOStWGM^M)>MlUmQQ7=TQn8~KjqJBiRFg^@| zF5;+kbjJfnaGpQE5G!~b3A`uzv(YG|&te`bp9;Niicrb ziYzkg_u9EIseWtFY=hB!TqVbe%FoA@pOb~3j&mb^!sMXTDW^aTnqxS}ft#uJJvMjx zd$E@J4fTmO8EMs%G{kG`t**H^JHG*2eFQo&f~tXRRXwCxp)bs3L|YooNDe<}WfSM*8k3LQ{+RG{2CK5|vP6syR!BLa! z(8YuHLuQG#?V=Q^e<@Q7dvHb`WgL)<<2a^=n;LmtZ$$fHEHt^l*-gw*d#T$p^Mp$9r zY~4{1W~bw|T~(JodGuY6201WV#K=wNceKG8PPo7r%(*l&q7t&<5iY$2yU&MX+?BVl z^`)l%L0rcX_$j7NIh&SFB{(0td)>u=`^+V(E&286G{Dfmx z7KgBIw2Ht0^Huu1cM{LiAM_=k zuf_9XP2X{c;L2z z%wyn9qY58YZYMLPZ^8liDW<;sMRLonVeL=o9OgQ>e{kL)X={PuID9@VI$1g$to{sF z)IEs5f8cL4-tWZk6Zm@;e=p&03#4s}zn$>6JO1{@UnBm$gule7I{Y^pe`9Lul69Mn zt=*gn_vsOd{;Y~+0TglPRCC%wa;0RUu0v7 zOc6J)RNA1|bHaSVPS&iz{uFDmcKm^m0|Cci`lwHzK$ZxvS-%SkRJCsF-!aDNOYZO{ zm($S!hxv69rho04%I>_hJt3=j1k4%b`@&P@ojjrWkFl2zVYUKNGPv;mpq29v^GfIk zhvNRzZrkRV>Dc>8bTeygsqrZFK0ZM#(Fa@w+N5+^5|u%hFbVg&AyI?F+sb1;CvGS( zFMmRN27ozVCLsa7l*7Yn^VG}{dhk10XeX(Nh2$I9)Lc=~pgHhJdUD@re0|cXgmYyB zK!}FRb(9b@Xa4LypC8JGg%*8*CCNCZFZIa7Vo86+Pcil47n~)5&Vfms5rrDuIS|t) zw9j$X`+>-;e+U*sGu$*%?YmX3$XDPnjs4v>KhM{w9L%u&i3x*x(NiKFPwAtd=e zz54viQF2Fowdc(e~hi!Un5CxIIiq-#P4eeSvFpvx{_ar{^5q`MF4-EXHvqCIKypJW?= zF|MWj0#+DGZ;Z zGu!>=m$$%VxuhDjN|^Sbc^H-_q^MsRG%LJ>7Up<^BS?`?G$(s5P8t-#2F+eOSOU?& zk}Frs&Zwx>aR!n6sZAVmtT6FN^!03v#!o!ZCd$-8Yo>9Mm{r?Ha_C%-GW;)=_qGk7^s^M95x-U z7p@xnpd}3C9G&(m|=ndf3^!7xUy4i7}M1L4BRrRo0%!O6ceTnyyqcqaP4?}*8-NsAd z=5b`hIE`gxbVy4yCt%cFUiNEFff#Ub(V?jnQE};FWN?M%wjGOl!vyx>;}=shntuaZ zo_u#9tps#5i209>&HwER^N(UqXk-m=L1>|*@Z!T@>s4%rgSZm=X^i&=C`IT8zoLuy z$F7oo@Qe5_%XQ!z730i5fF}H z>C)2o#f$mgr!hXW`=NA6$_*lMo&5lUCHT}hZ9vney0m;}3z$MKxIHU}&a*THmz^OH zx8Fl1jS&-NjYIy><;ckcchb7Z_z-^0=ivANPqVWN%&p=E**QIWa7+;0)Sl>BTs3^Z z;G<||EC)mbM2K$duCt`uqUQWz2u)4?tKPn06=-O2`$qh3((rUq7aL$jFz+WA=V|-S znd?F2a7ywrW_!@KQ5$8SPjhQAFTvcIcHri1Y~2)NMXB&$ttP77>i*B^|M6so6SJT@ODxHwhj#Dn_EYcD$>D3n4=9u zZ9C!?NEv^$Z-u82rEsS)&jpqIOC;W6Zk!0U^)z$>h)n!Rw2cQcJ`Mla=FG9i?hWNU z-{vHDX7Q(>u#s>cr2jfpg@|Yohn)2LXJ6K`oJ^j`)HmwM0%X;!A*MN)V55 z6iXTcJTpCu=SEG>NG)`c7`dQPbMTzO+bqzR#xFb}wc&JHTuQ!6#WV-O`sYXs6~MeO zU0!r3HK1*k){p^&6(AFgUuhblGILTDm5eUP74EJgRw@ERFH|ZpagCHX=|R)z(G!#K zg7H$16<8S&G#PMAnK_Qld5z_EF}H0WVxZN?m=^X(E)JCKu}V0=``##OzlgxM&@;5g{ZYm#4yEvuVOLUFY{etU!YC<#Q-2;QfzS*#1)sa zfFs0uRR|1omJO`nfj2ZS@-}UM@v3F}>NecJHIYYMj+OCiGxf8#)el}G|7rEJ3Zl~f zt=T;E5$I=()elKGO%o#N7RbAh^&>s#H-K^iRZcMcsPInr=;jk(%*BI?a<+P>EtIAC;y(0WDlMYohq^9LpLSGc9aV?X zXlqnzF^oET*%8BoS$$|*v-)f=8Pz;!-eOKw7)NrKPxD#)K%R$hJF#53FLZGmI%tge z<>qQ$WX#S7-SaN^iOA%frGEhF0H~c?`Z*wryHK=RR7pRRLn`|MJTgO|j{%>FpIO*0 zXaIN=uf(p6=^3Qc9PlVUX(FCS&}(riX>tmj(|%?t!BkqJ?KnRXxSMP}sMHe68Z9MK zBPkiNMsczb*YFO+gp|_ULu}G(X_NSWi&+4BW0SSR z05(DA&a|Q0VSobcFn}-W*P3ZQd^IoZt*yaOCKv;pcS<=DtBA2Qn%!kGO@LtR6^xpb;tP8h(-cHDVX{^pfiLV@Nr%A|kzKh%L@?*; z1&3*->pci4xgYslCG0jO>?tAa042t&{8B6p5+i*>Jw0=9` zH(`HM#cg|{v3=4-wxpOgl9q%$w1cl`A0gF(trIO#o8^XSbYtcm+^CJ}()yVRBJdcI zs35&<&PW~~CkM5B?x&2wOT5X^4Sw;9kznciRpovzw+XmpKUX`gyDzod3eo&kG`&4dGUhu!tT=uHo^TkDD6vKal24=Gk%Jx*Je5D;CI7X zQwx?T0ha9^dYN(SIUbuCY?*5uBE4%KWP12iil|z&1BHic-M}Pu6W2e;E-R zmiOCvxjen{x`bqB+oS_ytJ*}{holC+5`8gO8#^v<7y3cFY4Zzrfur4}z2 zzwtx-6jQ$l)o%co;fD#B_af&Tn)4pb`6tPFspc$W+%mxJrTOI1yY9q!Q3GUvVRS^8 zp5;Kjaw|p}^2Da13A-V)xgLEzhDHtT_f?aslTK_eDjzrU8Z>P)l%7-VtOpT34%}0>q4vb2Y%>A zE`-nuzb(Pz`3Jp~?z6QvrUK7Gi)oTR#D0Mxn@O5zKskOjF|D?3GUxqhJhQOya{uli z(!J))le;Jr*iv1;bRCo^=w=0QYaUf-2@I1t9PsQGA2i@HnKGn~Aw{-ha*#=*{Y zC@jLma+x#_o@*#uhtO2`-Lrh`3gYxMH0-W~*5Gi8sUOUckMgRFa4P3BQgaxV)I6HA zfT{*vN^f^Z4R$+7!^4iO!U^)!-H{#D#!ah-%d3w$=#X%ge8mX5gAT;23bHT9zD1)X z`vKfSL|!T{wlZqicDF>mj8-gov`iB+ULWR>x9M?{1U5-vlLR(NV3Pzk zNnn!%Hc4QU1U5-vlLR(NV3PzkN#Oqh3AlI(WK zOITB8q@_(h14A)T3IG-;8r$Rpi$(i(qca1Ss7a~eN5!}a%e2ayE+AX^O|+uhW< z=lMAMb%Tv;*>j9?hRdg{8_2QqTJ!Fqe0O)$W6fW#trRgha*qd-EW&_NSwPT>R|1Ng z7)YP6UQ4~o+KC@(a`uI=m+)U}o}NI4`C`kKgjGHK_TYnXhI~vp0}J3H&A^=d0e{tx z`y|u)T^*jh+&Q5rFo$p9XQu$t1z7`QUVNTO%r5WbDtToM%*$)3cx_xIT3PxH%q5dX z3Qzj$(KvLP#*|OCygCWnQtl72+qYFxdK#|4ubhC*MsqDC+{Zxw)XDPQgS0U@-fF5u z>*aF=7SS`9r!F{*A8Jq47Jv<$L^_7I6WY%wzJ;}+*d*!|_hvg`!53;N99X!v)bJQn z4!D_Ssils;)&jNc!(fGV?j2gG7JBI z!0G=FvRG}usBOqNHUUkK-(lqB%U*7u2(X^?p=A>jCbL!bCbI#2&BP~uWhBgxe*>70 zp{uRBRzNXS$KS&JXtFmGRpjt&xABFrCwD+KHu0lT=xy`bd*I~?HdUG^AxrHGXtet- zRRFq;mon&}3|hISMoPcBy-?cXHJ1_SL)Q}5#gmR$6_7UyecV4PJBG7>bSgyT)DdZ* zm9>LQZtv`y@RQ3>`x3Z5$f?P%eI)sWte==I& zAS?Upc2ZebTG{`gU2ZIDf2jssLi@5JBnxjje#LzUC?D=7>jYwP&V3qb&uu+x2e`sP zvlQ71r;u-~)ld-N9xe$*WG#OYwuw_dBB_ilQ`Hfg$%i%OSeC`Alid=ZF(1Tse~~Z! zR>u5Qh72^avc)>F=d$yOqSJ$Lw4hrFn^b_;WPfrtHXLCXG+xhzy&3jb_#nv$M0b2j z<8xDF^7kkX;`2MuQ@u%5`u9dbD5qpr)c<$vON{H^r+WR374@I~@2daolKO9+Se5^< zqW%{@`tRZ&+m$^2tJmLDQUB@xuKLd|ssCo$U8Vk8D(Zi6`oD{RY%TQouUHn_!&n~I|W{fMV@V~gC{uhJ)0{=K+BDVh%wf+4a8^S#PSwF5jvF#7vlfqr-CX~>; zJ_a6>j)d?`m<%zjw*wNc_&qm^|x{`OlTI*H`L*WqLs9KB30(4tiE zTHa&>)8#|R5+9(o4Vsf?vZ6tg5d_9Mie+_>b`L^Nc4)|3^l^zYdPUq&I+Hbe5Lu<&v@+L+&a%N%V(Q-JqfS zU-0V22zE=x{#MN}S)4Nz*0za;pm!$l7@_g9p$=_AH`IZSM82l#hB}oetOf^9*Xv%> zk};Kx17!m?%pOAq97UPT^i4#FW!H4c!Ps_y6zRu&=U=bK4kr-W!aWB=oCxBp)aA!O zhWiiq9WU1wP1xySp5>ue+jaXN4!Ha(Kg3wN8pmL}%6snnbK|%2@_;V)N^d9kZkAX}?7t%YbT@9dv9hH^e0fYbaNHg+0kEYS7$(Nk2?3Q%0yY2+8k(HtIe49s!=co}T?8)*%%pZ-b_p^rJXw zwM|-Hg_1IQEx!HZ!VcdtagxIq#7S#y6-Sg;Q62wpxw*HL-q+$Jhksq1Bwvz%tG_YH z7iM+*^Wu`mQud8FiFejgL`&nOz$W!=9R3f)C7pcsi<2DvK{+z$+@GIiruPqF0IMUU zta;}{2snvQtQP8Hl#ae5;v@#9$i;W!q;>4rk@RAmv=kiylcvVH;!(19239Pe$9M~V z0#W0m;87A;bQ@g# z7$!0L2u&mkyYmS>eWEalPf$gour;3`Nm~LFI6CHZNvC9a;ZN1^sGV4cW=j%!h0qlC z)pSMU>vTS$hfAk%(x>0umDr!`KL-XH06v~;veH5~JXZVvaikRlCJF~C-}k&Jiyk<- zOyr83o5eZ3BZ(*nWNF|Kl-D>=W?Qe9vh0pTPN+0pY~MRZrF(?saIZ`x(hREys!aF5 z7-B1z)eIy~EDgH5xI<{_-nV$X@h|AZ$BwZG@U<=3xb@A~x$YzBLgg{S0X7WR+uULV zn3`}Jgh359!ZQMFfnpbFMRmQ0N~}a=Ln|rgGB$`(R*5Gx;rnMZLWurLRy|y=icuE6 zz}Xw0dd!o64mvn{nxOar`-&Vv?L2fn(gWHIxNyY2^Y-y3`C7#Gka*WjC&a1sAr2&z z8$)d|x%3?cun3^WTiZK5UEab=_zzjKsk`Gu`J|6Ay6%C4*$6TP*#gb?S@O<|89u>F z$v+tE;f9pDo2HM)Ip+gR%++NE>2+SR&QtNmdKTr-8YMGsMjr!nqyliLj`a3YpxWVF zw!jn=kgp(7U`kjS`VyTu|ER9ZqdgxsnR&0iUj89RWq!~kgdzVI-w_8IO{P)9i21ua zaIzTJ-sBrvAVK+)YSby?Ex;mW4T$z}k>HW>>6~-?KeeY?d)M6@$PJpWkupic zWEma=rZs4egv+ASp{tVbd=R}Xrhd3BF5}>A{auj9zK?EUKZ+VpFtX|5NHbN070C+~ z)k3EJz>&hlf2H=l;tIrWim8jqJk6R*q`0c&1Io}!s0UR36=V!w4PT`6g9u#FHgj7I zdG@8o-K89U%qkNL(*2F>c03b932V;8>&;d|SN5E{(stevi( zfF|?v*CIJ|>7a#V=R5ToMd1;9r;F!s$?|~+KMBD9D~IIkBb+yj^BbcB>@xOaBv8g+ zE>$z*HMJ`wF}}*Aec~jBJef2(PGS_2Nn6B83=A@9{i_i!#_E{#*EoscGbTOZlCX#l zcGX2?db{`{LNRH24#rv{KjXULtRA>cn+QuiT8X};(ZljY+3A8D1(SBK+N|--QrKo= zoDevcqqr^#3k>s@+CidZEavJ91653L#P*g{K35Z2+UV7{;zt$}t-1AeZ6AoIE5nfY zKZ<3C>B4@ioxketb5s*%|L@$WGXe6*OM-Y_l5a2gZVQK2aQTI8677l&3`?YxKR(7` z+hmhS+j|FFkf|AYn#?8ZK(2t*j0GvaLHz!|pdwWd+5DqeD?5Y=#Yk%$i62pvA7FF_ zPB!2w_EKd!566R+pQ*Zs19wUFX2s)nclF5GU4+S+?%9Rh8#XB=lD|~tAbj6M%T=* zxh|W8=}?7QWWBR;&8WY5b_5cRCJ+1P3_6))9c`N#1kX zdv1uHF^);Dyj0G44N#|G$SRZz{P(;;W(2={Q-;w7goE#K#b9V<dHHgo1paaBSFoP!X#ajdE}Z*|AIg*1-F=kgb6g zo?1H`F(rRcOP@RT(b(t0keWypew*>zfbLXg%lMTO#v><;k7NJFK3jV9oVm~r%*40u zzg;!oN(##34X6eavKimr^S)oNC+oFirXS4TdL7XK7Wyy@LuTPB=TXrhr<(o9fuge0 zB%hq}NVIpX6C&omj5YiPYw)jnPP=sEJOXkM5FXY(AUW;nW3sXAuW!-Nz^Wb#Xj0-c zb>9odyQ<%Fh;X@-wJ|2mjjmYZTyl>a&O^{s)_EotYs@dR6%Mi$<36j!NCbU$MZ&ABWivIKgHDVH`g7YuEr(G*R;irFslWVBT`5{&Iw5%HO#-VA^`5!u8E+GAB?dg zvAkh|QBOWQk(2%887b(p>we0!%7Ks~e^F{|R9$OB2^1!8dN>k(R#JKza{MK8RAkm1 zLBD}l=#}oYvza5W0fF^)@g+R1r=dy8B0H{9xk59Xw#265u-V?8OPDGc!sK|$inwRx z?F3<2L$e?lGpdNjPI56y9B2?2Fm3>z9ygkne0#u|Y0DZx>%^X~U=DVOHOahGW^NvG<60KkIsvFxf&X0cqy+ zAzySl>ER8uNO_vpLJjyk^{0wE2sRyt;dKC`oEy@2Fn9Csy51*ksOd8 zivd?ob(+`Q)1@C^K8tO| zpaFYAIhwyzJA@+CIjaXuYagVd!stBd07e_gUCniDetoIOE)dUlK_@-isHF33THg}o zc-rDl7`J*h0gxAXHU>XSJ)0KOkN}*U$jkDIB?oPL_M}$m<< zdp^5{Gy|NWBQ*z7nMxXP+2FB4b#+pEUbGd3N!buhX?YwuQcsGr$ymoD^=KirM@e@r zK+54IP4`2wumvc2qLavhwwjk;5(mopJr*a#fkHt`P{#THF1`pa`Oa%pFCY`r;0q0U zcrloz1H}bfvQrd;L$d?oSyl{%6JDc{qK$yhCIj0^uX7#eZV}>&A4MK3tjd&JfF>~!YptoQA<>Q(-s?KR_`qUG7ay&oG41h zrCO|WF`Wmz_e8NqdoNLMmn5TYUq#BG=|{$irm4Lu-n;t#?5?%ic9L}ik+O3_hc+(j zu-R4KNLL9>O51=_T!U=t9^eM}LZ>J#f}R0Ru^tO;>c2G=gBUnPrZVSJsYP?Hj&f?M z=42{!UghPyEy}5>nv<#GoWf*}JOZufL8Z;Y?ds?Ruc zJ`&}0j58-wNpMq`{GL2kXMEQ`D__Xgk8G8U?_wo`4C@3>%=kY9gfAJG?i%u9`yvgQ z;$=ftElUS)`xYA!dFE;H#?5Ff&9-}i{j7t8Bm3ctFoJWiqI8ItFW|3vcnsvs?xjsT zi$06GU!oq;#SW3CKJ?$B)IoEI(^!~XPbGPvT?uk1&iEa=nl(>pSJT4Q>R9E436wUt zR$p-iUaYTB0|rDyKzYztP!zByPZHW6Wwe8}5@3JSJiHIAkNr^_`Xls;A~(%_noPhD zGc(^_142;=$Pyl1f7HS*DCDSBX@%>jBOt9fpiBH(L@O_rpmn)UOLb>EEfO5-4%Xv! zT7QtSFpbN0TK}KaI@i{UMyg9o(zE5vp)a_eEeD$E@BWY!f7gQ7vYzcd`nN%`kmRIa zL@sZ+r1an@EueA^DB^K7IB3J{Zn2If0zPI6h}U z1|9>kk%$q{ZtoNU47A7nWri=xi0v222yLA_0H!Pq(m-3H`y8yHqhEZU%IZt4KUez2 z>)Y5b?z!Iei%RekmHV{Ci<7Qj6aWQ+eldsC(tc5kb&9J(zbIO>0>i9EJ(!I*!A@=) zBX&Zqm-LI(<2BlLlg0kXIGV`<7-n0c2Aet5YBt}eQ^hMpj5Mr2flT#h&6rt{X7pXs z*q9wIyhAf!lAx&=hQft2l{p8b7R_0M7^!w3nyNXON;%e*2D%(VpZt9U z?GPl(8U`)sx<4qW1#y_j&$l2BL;vr|s|E5}su?_awLo4>_2tE!lawFibn;?Orh43q zyqLSDoO_WMOAz9f5P7jgeR&Cy7fTQ#rjK#BJVL-#5ha47l%I1l*Vz|wGGYyYWJtJZ059TXs4O}ewKlQas9#=+#$dL_{0f;{(J!~! zei?SW6e^4Cm@mQ~Cc#z+=$9}F#tZb{I((Y+%RLP}Kp1tgeHv0QJJ@+1%p|0A&;_$% z+Q^mGM!<73HR^$S2y!SMc>=xjfsbkL+(90lDELfug9G(u{df_#ES`9|FC-^15t5Ub z2#FG-H>0rN%{*CYUp!&8FC+Hct;1h}2c%%hGs<)dOCnz_^COw5ao>_$FSI8#^IYZfvYi^>6$3QvJg)y}o@2 z+ilctZQuTXoub*6BG`)VA3+}on$0Jkb^U%bH41h6utwmCH?-0^I6;9Pq{U6 z>B~iBJ#rfe^#d7?)R6r*g{lC|Z>p(;HX2kt-4vSGCxZwd1 z0e?e0H1fgr+pa@b!f_il;Az4?zTZP5cH;wpgX6dx|BSTJ)Xir}H-7XN*^SRxSKf_t zJb@4M`{6WndOHL>VV`#6o#IOTWfy_M;m|dp8<)~BZ%IZ-kjXTC;(*%!_O__Kq8r!2 zo~)C)u#_C3Fp%o~IPln(uTS zH6+;EC4I9;Lo0fwtP<(b(28D(sidJbOkN|8)oIwm(tvCOk}akoK^h{HLK_g`ARW$$ z=#20v-H-Yr+c^5k0U+X8$tk_03P;2obw5`@r{>Ggh-+;@_k*hvB-) zewfu9@yP44@oN3VwjI0f63##U=}#xm*)m)O&X9xu6=s~NLYc@@YTR>vAU{}49q>0C zl!Mbc*zXm_vlO5BA6*Wg2_+`J%P-zL`R;B}Y_HQjh=-uN9)6xp3`QUw!kGgT<+vI* zTep+q?cdrqVK!Uk^_fn4=yGsafz{FmTt}&ng&L@}+;vdH@G_o)wg0>AVO1h z0rK3W*L9gyEE9(2b&Pk|>1V5(^h(G0KTy$ZTM>*?H%Hq3?zpF2etJRAJ$78T;e(RWRMdh@c5k5D>5=wD67?;7cwhA)(6!#g z9ad=apvOx!sbp8%f5S>C2K?g*2cv&?a(R@hl|VI-gwP~P_N0%DzueM3|I2FhmG6Hk zW0K;L&koh=r+d5j4I;fl+U)WKyaF#=0Y6Y7{&CxXGrgny11N-3^-4#T3u%M(kAS4{ z!D^g1d2_^3$wi5%v06}}0J0QGIXB`S)k^zwmdVYPna96XH?hrb`X!(4(%)i zUHPTEC`rzZ8Z^g00D?3{HXwxc(Ho9E3n%V3FjDoU`}yHMFfhjVEw6_5qZ3Z6!unV1 zP9ChwthCT6B&sg6X70?oh0jPDGUe*|x*Acde;$Y7F1a>+zpm7~@JlBwBTby5RUe*4 z3qZ?3w~S%v^!)h6`I-y&Tv_6_OXcM|aS}i`)PO1*%z|IW9|MezJcSrobr{{J2?O&mZm)i^DB96&bjk#N_q@ZP%4A>4051Dl%W|GQu5ngND6YG z+HkwzqJf3e@eXt1^t7f6rKY-4WD-j($UQw@)7e{d2?3h%*oLXS+jg-dfR!bNTYw2# z&nD^??S@Ba&uz<(@4xmuN!QvYG0x<|A4dcB04W#@b>JtMkC@^V8L_37d|DB8dUg$S#<|L(gD&Sg$AUgS!%K+sQd-U^Ux2t0y1= zJuj_rH)l!A29~FWeYA#;V#^yDWK|_qpp@Wmm-2)1yd{oH{Nu486$CY62-uh0=5DaY zH>KjV89f0lCyRfU1e9ze1p>J*ldGm@<;UO0aT{rvk*`?{!`zCjgZgG9nO6`U89tA) zMG9rb+0wm#mq7!C>8#I_GOyn2OTBH)J8OOh6w_Di1a@ZiCGRJ(LItH^KF$4oeW_Qa zN+xtM8q-~|y}Gph5&vru{@H>bV|C(RBFT0Kb=JJWJ;{Bk8zTI>Y%Km?M)?2!DCx%l zsS5sYD*iJf{40@pqv-!eg#T+k{$oq&|A^w>H^P7F#^V2dgnuu=kI4?{Ke!bCQ{08t zmwHaLLivvx0e_|cm19vFQTU{&ru#9WVJi=&uc+1PJ})pCC}vHIR<b%6&iA>uf(}$sOo9T=w)8}0#9%9ud zhvN__j!d2K4ydvD50CPHB+fsnsCQ~M;;6|YesBhlIH3@8HWX$0Y?LV*mpX0Klq zk@Mu_>;v&lUU$jB)%L)Z?L`I+L9~e(gE?;RXy?J265obQF^bqjzrN*DScAbsUFO%6 zwmow+XRf#(EWy1?>yyzb4h_YMfrJ?sGjw5=tdtotTs)>A=DvGgXBU~4jU-8iJo-}i z(suhMWFV+w>YsmL=hhEj?z7^?gA<7ws9?IiH6TM?>^OdWLpWwI#6c_`ME8wUgRFxG z4fE9?8jLH2pssHJ+O`sXb+9w)1i@zOyHyf9?TQUn2kAr{g(8F5JjU|v!cXK zUV-^Vh&CT&IXxb62EJm0PxQerG2jt_@da&PYF}{xmX3!@;rN6qb&FsA27ybrq;=rC z+LM9)@WwM*hLggf4 z_bglJ%{lPbUhCb_XXISYh#YCj1cx6U;a3oIU+RI`9xc-=N^l^F(U|ZnR&gpSL@W(% zHg$tvbTcVhq9dK$t%k=J9fT1rHk5SH9ad9luT?cQgPTJl#mNV!sP@RCJ&M2nK+I!z zf5>)N*Q2vhCsKWjHTEUDXH6_7*;yu*FXMYoS7(@f9Z=QTr*mGdQ%V$D&qyaPbWi=o zSM1o5OjCrHn2HrXG_T=Tr>nedA~u&pL!NHG?j!#eJ({-XlDkKVMOz zLbr=hq1Ekg{i1tF(Nf*gRhideyQ14%L`#0LKyJ9*>NYomZYAs&>vkzQ=u7?5m-4NQ zP1r2m{mcQ~E)sn?-OAoop4`x6~>uuLr9l<(UdlzWs_Z43Nbb0r4QBz`wm+tnpd z2LAjuwXCFqv&x{C`>rCnv&-8vj6IPrMs9N)lu}FpcB?2+VJ;s>h1OjD?iYROURG9WE*!R)+t4D!e>8iv z{~z|w1wO8$zW1^%HET!73SuP+F<}8w7Hq;o49H-}3Pd>$1{N?Nh(k6c1VI7_kb)q7 z$jAYU^@i|lXrY*Q$}?>#aRP1R5U>K2Cb`gtN5Ie)j=JgP*_%KMy5HY_X3jaQT{(70 zDYsYte5^h5`p^G0um8+{#!_C!JGnNBR~JzicYMW(Zm2eSg(#@^J}^t;YpmL!F3N$r ztZh=4eG3SGw)tKKg}7-!>T~Q!V@Mrhy6Dv9wrtzzX%cEx29bb-BBe>)H*PC{Eqb z=BBB{WVZCN#DOIaEOB6o14|rO;=mFImN>A)fh7(sabSr9OB`6@z!C?RIIzTlB@Qfc zV2J}u9BAP{^LYvE{@lKPTGtzo@9TK|>&9Pe=O&0O=M-C2?0Mt%_A5t9ddfYDJyWqy z8-Hq&w@u>)^Z{p`s^*IJGqQ z9de18_au+8vc~_((G<_$dB@*F%Es-7{5byRcfTu5 zF&--|!(#(f+2?r7B^U5mK#a%A>Ums_SHl7ExU5sDKOsdt9*wWa!PXFcr$yuYD}L@E zMcn6#Q0_Uf6#SipKVi#hhdv})T~MVMiAFi8AyxsRMRxIzhG$l%yuITfofDo z{b6fVyECeNrhh+~uF+9o?vf0=>kG3X3LjkFk5;q4K)a|)kcUw~Y zOSB}aSzn-&dWeavAYP_#r@a%f9b(SPdI^$NQa}ibLhBc|F%mnu*uaiI6h!6V&&3ic(t-QBHmJkB&*^&NG3MGmJ|e3)K& z1^Sn|RLd)nw2O3U*9;WI=Ltm;6)^205qFX*LFZ0VHP@3WxQGh%65Ge+D^e9fRd}o6^8AHbsQGPY8h%S z&OZ;*3L?#4I3QN2Js2jm2Y%x>pxG3fkg&yOsr{%^`_cI3n%V=Ro9}(=r|v7?9`exw z#6?=bH$LZD0Kw)K(0aa`PTbB1Y0|h~f&^+g{%4Lr@yKUhiDgBV;*T*REpjTod5*Uf zTH?U}uN<)TCo^d8@mjIr!aPtbwP;Oz%@y>wn;|5}MpS7N<){@HqZNqN4Z?t;#Q z7l8DF)0kmI%b$%eRsK`Sf6WAc=6nD2;*L~NVkGqVKi1Y%)$$U$&Xy zO^$D`c~c+-Z<#jJ&BWdSFX-RR!O1^QIW+@{v+*CR*Hl{jt~1yx29&2P5f${sT?J)h z2&{VPM;xn2FfPS=ynBe%na%kapA*@&^X*Za4D}iNfY`C?sGk2#%BT1)xL;suze#V* zEI(klN5S~=w*)@cOuEdQ0;x%!o6tnjo>i0QeAvde!lDEmY<P48F_+Tw zz2|x@sd{L+!;s(3e?7q;CQ#F6-jU04BNrFn=mbf6F8183~Lgy zzs>63^;{VVGLcLrcm*{qNS%@!T(eH(}OGv;Gcr3Ht&>I{_<}Oub;DV~!bs_eo zNST(PNG>XHSnD7%%wAaMD|b7=m1-59!V%otcLh!xY7iDpTZ{IraS@JdAxHZT|4-j< z!XIv)j%J(M()a&^9Kb@fRd(omaleE43-p8*H;{kcjJ@PK{Muu~XZ7L}?e>fKjc78x z^T+6|=EiN&gLbBKrLyKqbtMjm#MZge6CI2TlzxZad8!|v7ak5#UA zxd)V6_a<9=uMRZj?(nO5l8`?DR7L!ZmdHEvGBD73;qvyl*NP-~OIM{FQN z_=F?w)A|>?{6^h4m1v#%rJa6wiNaMlhPlfoex~nz7MNKMXV7drsYu78#V7H z6`S3owEfK2D>l1FY5SRDiamlo%2a@nwc5JmUn`(>3 z+O&%4>D7C%e(qkEJ9HbfHC7(;N2D1vGJ8icF- z)W0ln()WzjRo)1W9)${GPcn&5?9A&4y|qTSLcX7u&kQ zLc?O%zKaAYlO<2|Ghz4+};_I=>g`S2R}=7L59!XTg}H4huQl zK-TzL-HreYj8POySy0Kcpehzf=ra`Jv&@u~G4pWwUW(?>2bJ|P(`gU%Z>K3Ql&d>a3d+1JH~thOxno{UMU)^*+UJ-__!4J>o0 zKrO7A0Ge2~O~2w%)w3*Y@>q;#hLwM3dFl~odt|D_EI!uTs6x$+9jqCSaOI$ zd@@GExLXN?>8yX1O-vQ*Bo&nz2;5e{n7ZGm6qO=wE5(>9b|*|ll8&jba;sEitz#0$ zzs8tqk{2Vz*ZY3Z_$q!i^EE7u4y%vn4BxZ*I0G8-L)lV2Qhh9YJ_K%w4ehzL&!-$l z1uuG4Rs|0cLM2ia{Mq~4sUS6{D=_P7gnPjap>7zrxxiUk>bDuh+K=B8H1_4sOPGtu z(*90e`~cLL#-bKs{0`Tf=6C-Ci4>5G!6kGQd}=3HqUKZYiR^QqTL5SsC**D=36ib* z*Ajyu+GN4z4z#|RcOTz8`U`EozSQSX13=R@ui#jfRIcQjfq1dv=GvDvc7X5O+)U)& zl2h4UmK>rM0A;!`9aQmt*f2CEh3n$$@ci)1(Q#vcCi9q^Pybw)y!UR?` z2cg%ot$0v-=l(n5vZ30vQ5)qfql+QdoMWbZc(lQE|z z*_qbp0wqb|XVyoiVq&L>st}s{)GN?2cxhV++%@aTuWch={VJ_8G7Ai|S+~yU7urvE z-F~a_sp~aclD>4tV*EYwlAXv#fHub3ckObq(|ty(uKU9x@8%MZ);Q&}gW8lLU1B;?qRPKxbYUQO?+wOStnNmV1u;y1jf z9g7!VKc%fGs+kqG=&i8D!(12JW`70V8CTr$>*EXqE+S*hXw#2}@p9>Ri33XkzId$80o|Avp;hBdFnzhP3bE&dHJQ*4WW z!}*HM+78XX;R%Y(+78XXp{Up+upLT9VLWNZ_y2rn0S;!ryh*WH9L#=stzxq{nEmoI ziai1x()#ONhhE0u&!MxU@t;WNhwccBrsWS9(U`?_$M0O1Fli4`XyIA1o&; z2)@fq1rV*pZ%n?UgXKyRI9MLGZw7H5XFgq-qhJbO$(BE+@KsF03QR#d>~iozQdF~( z>4^6m+gk8a{B3^Am<<|J69XON_834ps!wc;YGeITX6h>Rt)dexH+Yc63|X`B9p`!4 z;}7(SD7Y{^sLG3Nl-1-P)(d`q4TVgdk5|dz_%!F;U{~nM^lx1JvZmQ2SK>2#6&0#z zJYUFEz?V$2<(J@qv*jlxAI7Xl^JVIA_pF}b_72{3oNY~9#m{{2+ujuR4k~b6bc%KD zv2R-MP(4*|*77H+gjs3OFJmmLuU!01X~%+DXxdvXGJmC{JBe%ac7>R_H%`*Nc3He1 z5b*~7mEukcz74!Kg)Vq;Q=t?c&O@L+1|(hBCH_I*drC4}o`g}FvG22AhwBNM2(2`3 z6ECqCXho-)rt-!g?N5)SH=p6_@`RJTQ}FMQew6lP&j zil0T(Y7*`HRJ7jPz0yScD1PR9uf9~G)d2)pg#|}=P`Vnw>)!g(TAKsLiq_eFuI}~T zN|@6OeVjN^a%APTm(CPm4L@=`;D6?>%pK;3*(5vI$>!IvPLG;Fw+9`4frn zmM6A6-bLsX%Z4pg#K3(^M47q%o|Y=FAjL=&0!MMdsFA4X{qu876ogVw zp#5(#QHaS|QJ9vukp~?SFJkN5eXZ-)Ly1JpAA@?$%>&$6)BCrYoD0yEln9*;DYM4v zJLMd7RVD=hlLk5?QXe6a&Ulf|S|0C9vParUja89YjW;~ah>^LXzSsExJ^hs?+QbLw{(^!UaDLF|xIhap=qQNYB3I%g89x_;?+nTDhpWn_ zBlS03lm&^l*q&{@_ho-z+VXaO=6fIY2B$5aKcPl3D}Di>TqQ{Paxnm0IzTMG<9G#9 z7avQkS#x#vwHb1Qqqm6@a5iz3F*%TCjy#4s0eWNFvZ^3}l6glS!KLm!N=O8ii;sVy zqfBuoedY*>FV8&da3`13&NkJnNcAcLK`-$5x~ZPDsr?9I_Q&S_)%0(FmvHFX{=`K8 z+y#;_LHeO}z?9Cv~DQJz^Erl%%X@a(-9{Dj)=vn9Y1hk|lEme#Q6onH5lGOGH4% zXLOV2{rU$0z~_kVTj*6kQ|@Y3xveh}#nNXKaCd*7P$Cd1VE7Rz^PO|h7#_R|5wB-a z^speGMXTi}1gsY9T6DmKtOMp3YH#I7rJc^?;wx#lUU-T&{oLSyk1<{Go16a#_Y=)o z@dBF4?*2((Oa@bJT1)=T)>@?d?OV%YRYCkG* zLEV7m@h)1&OIaxmOEus8dvg*AgXt5j1O!vUDg38IPu@kST4o=#!&_TDH?_N|BaZo6Kwi3DdESU-v3785LNh!D#>nY8jO@M))SQ0!^YUIvmc*GysQ}7UD=wF#ww7Q zQ6v~mC@^YeGUE3U68}!4fXzS4Ltn#hoIh5jQ$3Zw#$V>*?{r4>6qRF8yi#IJ>d3_- zXGz^X0$tWQIoDZbj8B9CA-7YV`v_~`%orSB|1)wKpnmo96>bJ*wO37m+kq%oAeuVh zPDtM@q5niRJ?{Jr9#b;|n@JD~>XDSe&dhi;Yf&k_4=vLeMnAj{9y}+1nGWsh1dR9V zv)JVM%RMCOpZWDEDfso-xAW^8c)iYdxh~rI^@$()CnAhDqzaP4_KV0yykFl5?wzn9 z*KS7V-U_E!>Q+_W-d#!^7#NkbED&aAAW1m{#hG}>W=$o ze&%~0{kkx&sEk_Zq+!FHOMOFLoi>6|!1Rv9xitzbs!4s!cToox;9iJc9cBb~>Od-Q z9h~Pzg^Z{lE+tgkI6_hH17-a?oT#5R;Y6(tXYrR#_mL`8?6+0a&v!lD=-fw?4>wN9 zHRHx<60B*?xqdgD27o4&5kPc$YU_Mye|0~__*90g+-F(eR|*>O>hc7cPnHW(IKGNR zUhX34?HIfGmexp4h--o$!EilCF8^`nAO7JNp+t|{vchY2>1gzfjMi`u=7w3%B*%?CscB<13FGEvDG z16c7aYVR4_?8Ygxk;2n@#<%x_`NP3dn7~K=tgfH(#pQ0vATh~ zmDz(ltbM=|8qK8G`YXl9ogd6%-~Zf&*r)cwU{8Ui=()TX3{$AK7!c)iCFlSBONwFB zuhkxN!ZTZIG1L~|XVY?ZolMJr_~>NVvF@vGV?MIA1g6fm6+qyOvkqP!{40n{`RZf;cqfiyH1zS_a02+z=F7e`QB5;l<%Qn5>9wi zqH3w-`QBf@#;20so#rO>e8=B&0<&bs9D76vMYYen#bBzgLJ=nVgIF7%fnHzGI90?D z>vJc@cBk8a)EEi?4ZQU(Gh#s~kb=*&24BT#@%+5Ss#4P&+WN^mt*uM7S{q0k`<>d> zfSO_{zEcg0uX5Z8WX6H4|MI^+uZ?0aY;Ureyzcpef~FZoXZX*J9piLe7RzM}53$c$ zxqQd1(h48iXd%1a11tvO^XM8ZDcEXX{v$){lq7O95JBF$l7aXo=(|f&D|RQlAM1+P zxqEBQ#5b3Egi6t!v>0<*`!{sHYs2Zjv6@)@a^zA!1DiC_bwqxOHXDELhlVlqhIyY) z)F@zc6Cv-Rd=!;QGWrSH>m7g#q(<~oZd}j;z5c3PvN)I3@O`e6NUhN?7cTYQxu4sN z;oiT{jG>dJfypw|jlvpCAre0%Q@e@oj{+`J6G#smx+7s~0s-QtXysF=3c4fV0;TUuv?sR5}Qd6TdGMvJn4^$O)(wpk-iz(uDBQ6_SrLQFpEOB6o z14|rO;=uo04%l)c$9wGS*ezc$7K>^dkM&%8`{c~})vXt`&}DqjX>_(N!ybJR)IL1t z5I5xPU<6h=24kDVX4AH>JlNUK?Gp2iWB9OPy0af}oxtd9JH^b*7c}jD8fA^7LVRzE zvpiwe!P~TU5mW1IiC-YgI2!hxMPX%&-KEau5J&mvpqP0{BQl&Y=6=1tZ*p0 zX0%7H*w1(|5<-0jWV+-CjW=CRv-~BtH1|Qt%@nnM+>=Ut>y)#y*N@w6L3jRrAnF>; zDeh6erf!J+10 z)EwOGgT^m7xE2eCLlkZm%K6K71IY~Cxv}0|M4_SiS05`Q2f_inM^mzJ;Lr*t{(b(_ z8MvRPmI>R7jg_fMgd7}WSO3Hp!jVO4de6Xd9$VZ+^qt&WcRq`#x!YCENv=Rw*|M_l zgsZEvUaP%uzzoOFyT3_!_*zj!Of`P8i>Zb@Bk}1jW+dbpjqmSbMm_k*OqsLsDjmQv z6uWNnQ9qI$T2a!iQFN;+-Fg)|4n6&FtG{FH4@l~7Ji)RFsp&luMhK2f?~yPQNl1`N6r0?P8s=DWjucO9o*kE-PuoV1^cdD4-V>|i_}^;9U0=Je?M^Q!~|HQ zH=lL6mE0+Fm9j@9pjd5ONaXv{m#LJ8+NIL$8bne4(>$3y#5h8fZIW3->51MgVfICL z{E|ewTF(*-qRuB4NQ?~AZgmAc9otr+MV-qe-kiSp=pdoeu}ve8#cKpoG^o;GI>+u$ zdUwazeSn&SDE{(Qq2_K+Rktdn`)O(~3++Xgg+e_XO6ze2Qa2nM3j0X0Zm8`D(AwT3 z*1#}=i<+ucr}hjlcJst3Zl~r?FiXfrB0kol+nU0}qX2&!l}Vz&^Xb z+f;K=MN2BjAn(vEfd@RdX0^;EA1tGyPR%SYCdtTTW_b;T({GU~|3m9Q>qnK)!_XZX z{?@KNf$okc>eM6aYTcGaSg40{hJMEBpF*yZto0WfU+|DzAxaBwz|=8rUke+OF|LUV z#=v1$H(FE(#8yD5Pe=^E=9z-;!U08v4B7%>HJ1y}Vk7m*)B10wF*dfDG%E z(3FeT9uU#dYu&BuEmfO$aQDvMpHMR^be`LlUpZhWkli|r{F~!A{Ifa zs$etF(`TmcTsHP1i=fT;96Odbo)Mzb;!Wufzl(HQlvUedFmsT;)iK-j`&t0tFYm4MEdkaiS+4<5vgQHWHljj zIKHh}@{n81U{-YO9m!y(C~<{f`y=uAbi?d0>4sU7?$}@S#T{lNNgqBOKgnZe6~Q-6 z#nmOSYk`I`HA#0Cg$ifr+a7{X=1*r=#>^I} z2pPyq6T@fXa`gvjG1fSV5~Sk7O!se3JRNehGmWmjM} zL>}LGjMMJD{ga>;pX;ylC<%~i3=m2JSMMBD!ID91-eXA`Hy;c7m&_*gZhyqMye2)O zWecQCJ}n+MiV*6s zLnpJ4Dnc|bTSJ{9JqU2fhns~A)R4jU^;~M%#QOv4EK9uOFAKb!0btzg?+KZ>kaLGb zpzADR;p6eb*#a<9BGX~sAw|~Qt^fH?^L^n=Qov@@QnedJN7?$>f}EuiwB)|NbzFGiBv^r$<~N=@83Mz`RD%>2wyZ8m8QGXRb1{_x)o zx@Ck0K^Kr|5FRJhAO#rObwHJB-9u=M6D2D_fB1$S|Xc|_JgF*Sa z&V#=cQfwLP$T{A~3Hz!#14E%o&Jg~l z!}&`$YKbElqHB~7aoHrC)lRXW(>EAtvIvYC#}_FQawptZ?&G6fH(UviGTXJy^J(kr znPA!SQ+SoqwVjPM6;w_?O-;KFS50Xo$#vaB`k?or)G{{OZ2<1QG>E|c|rLq zDe(2bn4ia{)6eP2ofmh_eV=?Tho`#2yxn8S$fs57Lp_F!e2y^{CfhkJhRPSe@@|=l zO3yq}Gm%^2Qu9QvV|=+YJVjWZxc*iPSWyO!@#D_c@i*7xhTUvZt*<&A>4Gl|Z6u`< z#+}Us?+&0$wV3uyi0P~fUiS$CO2f*fwh}|$+5-uPvB-2YI-2UI$-o z&o+-lxrYkMjU2@W^u@16g>?p8k~lLz}bL257}H zt804DMNdui37xqM-5q!DY7)cVBol_6~=I~Xid8> zzupJsT!zA_pwl-x2BO|G5O0feh{>#@qmZ|ppV=C)+PKwJ+0eI$%sEXdbN=+o!&IQ~~j{soJJB z8=^HkZAQ#Wn+%QnD3$4*GTWDIXe~cpg8WRR0t&FpMR@p$dGDFiUvoAndS7Mb7xXLJGGID*aRR)Sy z8Cy2KvSV$PmcR6rh5T%G)zWyRDk{mU4U~%=G$u z-G0qRFTeGhQ3^HJf?$;5ZZQDSgRq(Z43S*?VXd#oP{kP2xJvjj*0&o`n)Oe>2d)LA z6&{E`W#*RTIO8(}HLJa;{Y@K8YHE{K*VO(=QL=Lzv7JEM>5b?P5x0Ww5k);6V~(Y5a}BBXxR@+MWvmXnK#Tx1hr$zgCB-o?{HQj^)ayB__x2m~BiWknZ@MPR3WPwIjN8~w;j;ev%% z3$yz>JBOC zp2k9Y7Yw-6qjA)?j#7U258&kBek}vl6&M{^WU%U z9|eM9ZK?T;1;Om03WC`q7X-r@i^YbEWIqjh)cTS`4y9;=9dd9lH6a{3DKX#sp>nVj zuzYx5NTd;xyGsc)o_#aoyVtPr9)y) z#+{zfnij}s0`G)BU7mO+RAr^zBh@{RokQ6y0b-0QMi@yg1W0ue6|KuKj=*WA_CMv@9ULwRemg-~8vU!eR@ONHH`fVII=C?IQhi2|FG z3O7^X(70wPn{Ae|IbdxI{c;kr3%{c@sJY9qf|J4&&j+&3#$PcV(99DDh3`Jq926!} z{$}^X`Ywc7d7u~%p^FC3b}U{knp0RnTF6?E!F2;Wxm%Q?=IeV?CVuKnJNvCK#SEcx z8X3Czbv>zrWD#jU%KH$)Sxvd|Hkv}l>S6m=3lC{b-992jMtxr)-$gkGO*1|+Ohkfn z`pg9cOYR3ulv{Qw33FVN&+w{91F&x*zLE^31K;ng@6Ksmd*IHM@SdD*BWKUhmpk)UgPCxWWki-0RkzW!hVBpo&LOeS+Ml~Bhnm;Xq)R0HYG7Q`$QtTQzq%=NdkOHS6L$5qH!w7&N_dzsF zDewH9FeR-p+WuG(yq?2qj}X%m0l0UUAvYWQrJ)0z+JW%A)fa?uBE(5e8#$Ltdj8%H zI7{D!539S{b0lqli|9AGeLHreu7XzrkV-b9Zd+0nU;m|{{zsrzKD*cP$aMT?-qa^r zR65b|DCoHD4VY|%9-WDe@sZQ<^{I}pr_uo+bT}PPGFmC1U*(|Z>lb((SGxyU^a-At z5;f__)SWwbtODk+wm0pF*RY`HKTFgebXW{kQ{C}QMV0cO-Q52On#Pler@wZ4G&GHk zUM$qKC7YE0EOVJXTMl$uX#h&3$=)1u$hTEiiC1o5~>La z)j&d3Bpep;ibK3|G>Ah&#Wm%*3EIkCaCU2g*4BX5R^u$r-9*6LjXUpo=Awok`WD&~ zqI-mIPpQ=Wz5CXllGxCmyo|KmU1qOtJW_&#OV+g1q|~(b@k`TEw=HF`DFD&>bqy>X z;L`PWGSca~s)DI$*VBK+T_C65pbg<3i`i}N!`uv=@90Qu_n{?*L`~_EM5lRMKx2~X z{U%FQ?NN@%5vW^Rwtzb@N)*GFPj@p*qN3=a>ob7D=jx6>itF8O@Nk-{8Rml2tuS#b5+7z7^KJSB8s3nqG2^<12@OS6G7RPGpL6M|QyrY| zopq#hNDTvG7`J6x7=M-PGQ1TxiZ(18XY7NLWHjIDgIe;#40ruR+4c9n#`5-)+zHZV z*vlK=n5)vsSzC-B{BQP-xw|VOzxxA#k{S${$jnij78@_)wi&B%YQHM%7@J7yh}zZR zZiRFPsZ+N-$col%A~F@{t>WojlfVIr$GPz-zTpU*D%(L*zQMaJsXG_lDE>H?Jk1G1 zvTh;K_SQ8w<%ldCvbM77mlc4QucOhi+muw#{L?iE@?CBOZd?pW>A z=WkFm=ol-yaP1uyb`V|&1Q&g9x64M(HmrKr|7NE3XWU~^mRQD~C9)DiHiP#T@a779 zez($Yw0l0xZxK}~4ApK7%C@;S>CR`rqu<@1uEqM9FrZPnCn4UdjbhLniFbU{i@2Sf z<{oZF*1fJNGu!=1*&M~y*3SteZm|E;^B_buPo}eW8h5$d0MzWZPZQ@iXnU1fIidQD z(^*tawLMVQw0>k*M0^5T(ih7$=a(=W)xI7-dT_OdZ|}Z*k|4+Ld!Re|E6ed0^SINW zYvrc)UqmBbHl`8M9d_0s=zfXar;m`{VV*igO$BTOElQTIUP#cnj$yUyeuP&PK|ke4 zL%Sp7iEVP}V~GPx99ZJO5(kzzu*88S4lHqCi33X#7I41D*^0zfWxA|NU1Fku@c!^^N?$e_=s)Uz2d$Y369qPy95pTCoWbFPOfhb4m1Zh`XG6SVS)L7Pu+>% z_j`fh5A>dzO?*5n(IyA*Kgy;$NASXeDCZFVM-MvElfHY3-5z}$!u6dvgg<-rLWl5@ zWwkS9yOj0XPO@uR9A9vXnbLEil?OPj4;Coz5B}zRE$|25bHD$u{K3Buxl;6^S?8Ag!PRuNF}LIo z4jcZf{lU}oTbfQV-S{p1wMXU9i1bPvs$`6C-S<)WYwMUhX6L38sKI`XMOT3Fn${5X zM%A<+r<=89^2^BlYk$m2C3{4nomI_(da81ypjyw9dCPg$U;9lmyqhWA>8g$>CMW0k z#MJGlZgLh`^4F%rZ@Za*$kO?8y0ft4uWg>_?8#|Ra7Pr1zfbnMc=Z2w7<4ao^>r#VxH~c-1Y4P_QXA?Bji>52+On>b9Z{G_i z-jwv`@}~UGiEa|a9-^E|)ycoV9Zch=Cj9}h^gzqC1^%8Z))M{hsUNJ+i2+keWn>i- zpg)^URylma-XnDQ+~85vablx_ozLIS;q#1>j&vCqJaz8E;q%M~-qQ}BP5QzeceVdk8- zU8glhdD}HPVdeq==Y&}xbvhbTUUeFs)6uAXgFvS_JCa{XINWRr`Fv(Yp zALa8gn~_`SQThz7Ru$;B>ASliZu|p6U^w1rPJwO?;{6$i<2S+X7Ei%f>%Nl=oYI^w zFs9i?S%$Rf#S;I(84rOqTG$JE*d3n!$nOPt|G+PLw?th2vU_j@vzu-Nvs-cm!yeos zy-CL3-?$!ig*`9%2WrnN^$%2NzIS&ntSeapyfP&q>|DL)9!50mN7=CUU+o`ASK4*S zm;I4`9q&cFBeahLcm4sLq3JHc)h;L(DP6T)+P2(X%t2D8OEMb-!EP6{Wd}L?%_(o4 zonJT4?vWZ!SOU%PZ8haw5Y@DxJo4z4S+mIS zgeX}&a7e3lg9rdLei4tn0rSXva#TBvN8W>!8r_vgUgQ0lIl&_SNh6|a)VIL9<$w1| zvueI?V2>tKaPL|(NiEi|WobOKY16{>ACh25!Sso8Z>U>9i<}x?+{lbA? zcHQyKV-L{Z9KG`$;xsV#fajgZXyEV|9f9ZF7Z_qNNA8mp;L4GD-u-qQNh|zs^1O4? z)Z9!*9*z zJ*h1Mic{>gXZUMM41PkdNqEjbdFx1Z6@R5RcI>wy8-NSGHxjnU^rRsBT{dwwdr^B6x^S2u&{b>E|ma&!A z=7e6BJ4@e799ZJO5(kzzu*88S4lHqCi33X<`2FTUyYs26=Zl?Mlyv>(FO&6r4>8y3 zrW$+XZoc<{KW0wPe7vX~U#@)iZ+*V^(9hjlpI`E}t0K-_A3Y6d&eu!9J1yvrd=;av zj^o?{s2K752J>8&ve1(2hQzol_HM8EYwB7wBu*2N1m5e@D=t&#S z*649fTPXS*mCpE2A7oBDC9p1ajCIZB1D+HuQ*?SyYzs5$BPOz#+lgU$SzyiJmX`(F zGbpI$0jt@)@wrwjNdLy?UQ20u=JUy{9-wCq3>w#Zihg003DsQ(e!}}={!X?c;J%Uh*3SdKsGjyR;2wI+KSow!VCobF&uWfbN8 zNi5&Vd522IpGg*R(|V4}>)ganE9##2m<(Y0RH>a7({EgIl^@=p2_k0W3y##E={B8? z@knQC^Hd1bT6caXRN8vJ#d8g!uN6@$^AZ_3%~UBCiU_*0a1%J6b{IIPdKdL);>2y> z5GRUPC*N$Xr_5)nm+Xo#0D4S<{4x(8fsH8J#PJg%)_oC_MC6ttRUP3yPC-7shc1UDpeTnxc zfyGXoqy7SX#K!!}DLLPZh!e1azXihhh50h>r zC+Uu4yR={tlK1FsJE|&*PTWUfbnWa`yCG0fHj1tTuoG>TGJ zYvhH@YV!-3oMF5n%09hj3!i3xmgId*?XZML5L4%>9JK`pA-7!@@)VhAUrrf!JEn85 z`VQ23_o_=tTI?yz$Exu&#f7lU%YR}O2PwNDHhBp%JcOz9l`}>!C-B5l{|aU;^9ZKT z%R3#M#Z=xhc^i*%eogM~(D)}_6myHYhw|4Jea_Db&|0EpH za>Ra}(A?hD)C8|*y+lc~WO1*0w0Zw>4I~`N`Ne9`wWa~^>pHEk~nAt$vUSr{KO zXjVDkQp@I4m%e}b!obQI0K^~mD&GA5|qFJ;?Ut9XQ1WB~r54kn_dYW8Y*qoQZnq0iUv`khNps)~qA8;6rtP+nWXROs zHk2`eK0XHAC;Y0N%hOWP+gpFjt1wJdOvJjc2rTCSCLbsfc%m~;?U zHn>RInPIIMm}1(K6heqsIsdDk$JAX*3*9A)W)w`G$JDjtMmi)4O`fOB8P=Iu;i8jY z?IdCZa`tV7r0?*tC!tBwM#hUOz_w0|D6ss6)1kNNNnOjpd#Hf!j?gOR#u zpoZPlM6vaG%%9p(cZX45@;qj;u!U?RNy}g3PBs3qUjR#nMSBF**P2yLVOt&^`*vq=qqq(wkKxFE8jB@uh zs#Yik%IlK`)V)6Gfl|x^O;;}|P^vU{xZu^;(+ICjK6N2i0=MOVrbqm;{_sMCe$;Rd zn-Atd0*ZDwnBJSbPOKwiF}v`z-nZzvcbNAkjWC0ju7f;iSNTD;gtj{ZRC)OKB-e>l zXhM>9jkkOWYPtB|?HJY(y(cM8AFeiFfWh`2-h@tpgN1kw zC&CR;aXSwHDNrs>qagYWnHx7NC_VArMhSm>_qO9(sml^WUhmlWS`Wav@b*~9mK^qo zBbD^Qxt z>MH(iN6iWf5)|w1q^}D7%|v!FD5na|MkYo103S`F4Ceo?xs&})8~7VfXfP0iqS$ka zLoUQ3YdX@fGt`ma{Z}3qnGg>6_?c_cQ`4*Zc-pA&)y^D1rzX1nbBZeJmfJ}o%URph z-`ph|E_BrNeePu^+K_AT22la)x0Fv!Y@l(X$3I61(fat3d-JBLG(1%*R24eLyXM>_ z8j5j@Fu5g+FlEx1!9-4sh<+~^G3;$N;Cwe25lZu$WyCRlcQi1f>N)B(qU=I4ei$Rl zzZZgR9MZFI_`cwmYL?~~7|bxa_(68?*4csF>#-9_ z6HNyyT_{(6qq# z<9YxQgo^0iwVr5tZmZ2%XfGCWO>tqqKn;a2nyv`0eyQeJytZ_wEzU z5F{?STae`3Lw)`5Kh#k6<0P&iJpwsb4#pZ5hBc+88n-Oh`Yw}~f zyc2=Vo#}S5(s4U<3QhVRsdgKh5DRi^mO_5_)RFVM*yRZ4(DYw8hX8A+$IMap31l&y~@^ENM%d~L6F2+mr+Q%3=<@Pf*>;!3ln5AM@T0Y zCdl7nVlnsgCP8{)r{b(2K~x-g1(8jXn0wU%K{mft106U8s03#D)rVk&XP#Z(MJ%JU7l@c5{}kc+?X zqtsDXkXNK_<0^d`5WUBVyWbf_03B60y+@J>!OHX=p=ACc*On zHBmRa`2WC1Z0{@SMET2{aMv~E(hGWxnlcm>K$94Ow+>_FpS<0_~NXdIzGbD7EFX4G9?aO>fm zj1%TY&+o9p$#QUt*U(timdBa>Jz3Y9*L&k<*sSON70r6yelVC<%j(0c04QNjHASyl z&u#W2)Yj%6RTxpSb$h9y4cXGohbTp#=ibAMw|&R9sdygw&@Tim3AZ>TEdy8}ZfkU0dtgr80 zrkyDFx-OZv^jGw>u5h&yJXP7H$NkoW%|^vKY7BvwvVTrl1JgN31~c=P)97Kgafu$b z+zd&|DRC1w;ISKM#x8Q$4LIxujubn+nVG>3*pcD6dG3phKth`gJgNx`)Oz;8(Ia|M z)9fWJMmG8=x0b0{N1N;l*olvjqV6w~A{L0D_O1ZPU@mYuC1x1p16|hV5>-i~?6wu6 zbX$^XuRUZbigc;RkVKrXKixUgR-w$q<;3Ks_-E_PE3#pX=7<&+5xr*_2_xQ%z~1<9 z^O^OM^&m^`rAkwROetQfY`j5`2I9*ZIl-aISXV_4KS9Mjv8cYfW9(k0NG{(ndrxY` zXqJn3jBfTc5HH7O!%9nTv?8PA+-MipX>POw*xF8YZnPXs$oaX|0CP|ZhbAUB+V%Ee zWy#!V`KF$dRL(tEIS`*om2;m2N0?a_u33L!NGa#@^~;C`l5n&agL%)A4bU>gp5KO( zV-HynS?@d`O|$0+&$m`BcI|>)ZTZv3B&Uf#5B8U)48%|4fy=qG>9<5zLJ6ZQ%v`S* zD?y3X(~X-^pDRFG4zo5gkhcRAFeop?mfx3nUEFHrBmygFzoz>!>2Icd;1J~fl~`lQ!QBUrV1fO0*X_3IVp+G3 z1xCksH`|8?&N-=LF3)QG$*13lORGP#u-9_LA9&dykW81O%S&mQ4a;$3guFtB_hg`<1sGrrKbKJFzrDaLRzfs0Z$S9+N zP|g2s$E7pld0_nI6R>V^_E@p;Cw0OBD6A9hdiAckGbl8KwMyV+Ik}QwtumEeho{T& zFYOSbIpk`Y8@&ThSU|9p(yrr}9du#;sIz0-uKs5!Hygi=#aX=1AEzkJecynpOjxCF zf9ucZuc;6{-+S_B{IO97FnCfw`-6^?bCSTK7_#~;##eI^NDE~U;%cPjjThRgkfid4 zoOXGi42{_Nu6n%L`M$}|eDBBqD%kl_q*g#$7EX73n?FfeY}{W9?P6>j#`>D?UHO-5 zI^xeOL%r*^lTVU6uuyHbpEj?j#ig;8 zDTB&~-eagJd(N<^l{YScp6xJ!4O0;y+w zN{6hwV(lhKZqdQ6Tlv;McCpX3JSQlRQw;MNEW|78DDXnKp-*ets)$6U?LVR;GU8E* z34lKp`yf6l#Wx=~L2^4ynTW9?02?<%8 zqj}rR!+(_J{m~}`zbQl8`w>#tJ}gxn0y0*V52o*FXoILS9dVs33eNZNbW|2!qWJQ? zu8F-A#y$ldBQiNwLEP}i(Ti+cfKbrc$pyM#{K;-m@Q`lTpT35ch@5mluy8)?H3+7N zb`A|IdS_$8NlLHnjGY0iPTg>yj`+2oKLI!I89IuS2wE{ocfPj|7SaYeO=TNnG)pT! zU&&FAbvoydKY*$yxB9BvXY_K;?vAzhFEkw&x8{4FBZ-R|-#2#K?Gy21{tVmK%jNN9 zHpq%9G{q~&_THV?jyR-ej*fcoSDp`Y^vq9G_pNm7c#-dp%kf`hL=VK6ao2jd2UEMS zZY*EaLKgZHYS-B0`=zg|;(G5tKF0c`jsf*ckEJ2HehGCETW^%MsZ=yI5p|52(NalK zT>lemp~1&Bv`r^(cm6Xq9TwtSbvh}-Bs#`(UB`FGr^z1?!Pc_ZOOamJIqR z&PhVk9Z1^g5I@c#{%AwI!w`1|k_-{wDbL3D`eS2Mrslh>&jf`!iRGIGjfgUh7&1MP zWu-EX+W96T%SAJG%U8`54XuId`AVU|CV=SwFda~%OQlh&1#L9wM;~NH&yxyLBHA!m z9AC+CUF!&s;RAi?sC9B&JK6Zl3VrE&i39&d9QaxOUR&8=LH+xh8ff&hd=I;Q@h9BW zvS`84_`NRJZ^4NR@~3q@^*>MS$iMkEG&z6iKk}E9-TjlOvl36U#2HJ}TrCXwwj~vO z?AT#rYpjs3znvW6@)}wtoqMfwnK|a2r$%$(jYP7?Hr=^uL9U@?oo%uWt?F#amm^;> zY6ds7D%X;)yDhx#mVELXY=zg;l5cfec&l6T^|gi9*OG5dTX<_)@)g>`E41Y6Zws$~ z?m2Yrb3@GWoxtPw@`=I zq}CFP3Y;P(D(PugWD(i>T5SE(jMvbrMbyC8@-ZW|NnwXpEus;=me;l`vWRl{S|pPN z3>#Xth@SXb?$xfyA}Zr+`L4Cd1+*-pJ-(KYw=2>=_anF8+A_({PG1duPKPoMGL{yi zcSkxCbH^{UqvABv9};s14&|B`n!bOeKhwz^Zl7Ypf5rvLF{_*@aN%e9;jT?9PePsV z)!DzF&a4B4WaRBscazh_R<*0_bWu2eqxu9*2$|P9>ztz*xdXlr>R_qT24fGu2>jC2 z%uclQ%VdP&c9TD74DfK8Zv)MxYfW>+@NlgPG`a?gwil!Prw>Hak^}z_#BgA-c}Zd~ z3WNvxi z6ifyY?-u@gdBi{Q4 zcJO!izlYo)SL9PR6FxcRu($sme5Z%sdarw!)?s`5bp~m^_oeS!qXD!^9(SgrYDZwI zGIf$ak~btX^vgx!)S-55M)@P&hC4{kl@g=e3Y zX}PIBNxyrn8>+3`klSv{!JNW9c=7U)q?-5V4zjAFv-C|l@2}^}Z{n4~&h1S(crg$H zQW)JEqV8rG-P2Kb1~K2C+R?CPBUj9{^)RVEl+{m^kC;gh;BV3)SVNh zQBf=RPt5|viqObORn(#XXpOp~De7QZZf&#?!7H!p3E!;kY4CuHrUy$twUFdA*uM^d znla3fD$5fvO7VrXS=k>rwQd&PfgwBt1(iA~Ms_LQ`?~f^_67Z0`t*B6u(7B`06aX43cdZoVUC6D1%1VAiI0 zU$WQmZ4unGY0fMqfgeTzylcyG3L~hj*+2E5A^}Gc^#I~4@S6B)MY$ZrEl)n6>HtO! z43P{mu2qI0?Z;Xe^chCf@7zax23+xbvc<`7Zp)!OZP-*HglVy1Kf(F32w*`FuupJf zh3mG2&JLZ!JUGIq^%^T*6pQL|>d2K`^x{@S;yVE-_w3spEyo5BK88q0fj$Qbtd zcej{c4dG;d5df+9aQyE)b`8n8ji?&OE>J*(Nq0~|u%-c}hURWX8!8hd9KTdOTBlL7 zn6G~&h_}|kVhBcqrt8^or_%b;M-7^kiPKuL-(~ZH<^XUepL4Lv+%1FumD2#;tjpwc zT7ai?2Au_EzXkmI=Z&k?7Zy)n)|757wyFH`ru60FT2uN8OV@dSqoNvrZkzfXnVK0!@A#0- z$%or0bcPgCSu18&mFz&<8m_BJr6W>XvNy=iPn*2rt-_1W9{tr)Xa+JSgV+G z%gq(jM4Bu9C>K{y@mdFY0Sv2eArhVtUYXd&Xhx7ODn(FR2DO``y88dGaVb^fkt)+d)S_knL{Dr|0;-Rwmf?6rCF(Xb zs?trDXkTu}D&#w4^3~4LkR%Sj)PF>d2wRi1FvC-tf6I?q9-|I&=6*F`R0f*|iSl_z90YK|6IZiw7QltgFmE*Ql!eIkbTLj?wJjPX{oeX$pF=C< zZ5FLmN?EivN|VwrTbT3P zaQrtXF2ZrEs)adL)!pRy+kI6nKo6rwca!5qs+#-P-+Oi6)w>AuO$S@}l<{{dX$a$Ibc9+%(#e(&2=Dy9YpFT60R;aAH=vn*SYZofAAYj!!ehjw{U1kS=79_K% zx5QUv63uR3}lVD;$elM zw9+xQPT*8*5#(k0YNCHedCT2YJ(9&mR=;7x<&of`nH>3=JeyLyb!ksIU%%B4DP<QD{k7rT=>eEtz34CJ5qdmqsaGdbpqG($Z z@62F6DA2nBO|`oDYGhlNS;3t69~uRs0ASOc3E5dUV%Hc5B8mUt)oh=0$Vb(=Y6tPWS=5OL*!Ij6Al|2Tl)L>i-|5QnFnm|BZ?1kRSJ~3 zz1&KCvkSJ}xf33o6w=bTuzj7zghHUIY*aDqLBni(5mqTqZX9Fo(~Zu?=NFum$*j+~ z+tc_U|7R8!)G(a6s&qKD2NErJHdAH3bNZgU#QGpthUM)}S6;g+{?p1#dax=pNjFhY z+3aq!Vc-eN*Z)vJv&1DLLp^Dp67jG)_S|+eRtzg*0DG*HR7l5|+Ubm`J_EL)$lAKk zu~K(d*{Mvqb|M3m)r03Yziv)xTC3w!>I{-s74*ZiaUSM|%)>QxKK<_UHeHa~kEgiZ zoH2t3WzXPGhfskdF{I!RTy4y(3vt`DIEsH?KD z<2+wwfht)Kq*Y?0>~u$SGj%#5ufZ2GWcQVp(n?EBl`1s%w~Opu%0OlFg>(~h*X^9F zLUFrp*py5bs*0hzVyy>~@{lEBnM}!aqn-%iT6#V9k>9rpKQB>8h zBK#Kg+uSY#Gpx_a*R_uvc$L4@Mz*w}I<9C-tG0PrEim`PXHl%q5LfXgv3_a;zZEL$!<%VjIJ&jBuvy-QsB?h=>(!+j;t zqe+I?wQnk_TxN=RWfrwnX5#AY3A9*Dnxn+&7w@C|I;A_aNY z0H@zbEyrJIpUN31k~hX5S}Zw7@=$!~V#(cezlJ;EGMrY6dpe)9Y4Hd{-8Y|@>>%hi z7wh7!Yxn(wjU({Rwa5N^UB?+jyLu^RCiJu7tj;I6S>>pEuc`*2t%!L>r5qdR%8?QXPx0;J7)gu^Bx8P1@dGje>JO_7RYy}NLtI{oz1SGc*+02OvL z9(f@ki$FZlKHO~R+#PNiP(DsS>dwO#tKOI+P>kcC>Nn(s>?BYYi*d1QvC0nwkQhBF&Ex160k>yEAve}n5x+69+ooM1j zh6kh>6t%I*pp!M^3^W;XOw_KL%Fcp#>jJ|&J%U1?6q#V&Ex=wyh3n zBZKIjyp5hTbt zeGTZVM_&YWgeaWS>+IL1Y2(H&pJZqBrrj$PQ<=k%P4FYZf}>%PzC)9-FNv6@c+Ns8 z;gdMQ?& zDzi+pmhAo{HX-3u=H~gYaAy%>vB^8QgYh@~*1 zUQ0`Eym3x9$K4eo`T8$GvrSE$l}wfh<)$S<{?d;fMG;#jj9=1PLyg7Yd;gbFYWJ5V zGj3xB3){|khf97!o5EW6p5v15*EYE?E?e^WNo{%5ST)zk%=CglO+S*U-ERhx9^U#B zMh@$dC!ya@(A0k@sBT5SGCp;Wy#VdfEY_Bm{0`CclyuCN-!gB<4XpiD?H|!)5@u>Q zler(6UIo6Ap{5!EoSmU^HIRfkhPAQ;8l6-KiOw>V<*7*QZ(Cy^ zFV(xK(G;7rmu|AIXFbGgbn($P(VUG>aEYb;IWgkG8B;LLAM&4NEqdupe)m2CEvaf$ zxBk7s-53%%jA)fh7*yeGVl4)rWU8} zS)6~Bzso}@a`J*meJCHkPFSQ1+aX>nWcgN^wV~O!%2ktf_Ak=2<*7+$DRZ_|~#k;C9wfe7aG=1w3d2-(b}?^}RGCjEZu=Qd0fi*^t*$s-B^KixV zJRH%RO z>SR~;{nFI)6d7QNmB`Vlp+PmzWXxj*7+vNhT&_XIUTKRu2$tJnN99bS%HY-5mA5m} z+ihdUXV6i(&W3G-P!X8xJX|=CgZ5dZ=x}%}n$I;m$t`^>!E?2vY?9QT2p z=Q{j46vNB0zWsCM2Zz>HoSA#vfo*444p+kZj-3zlG<3tL0faJM&b)aohfOw810^F^BsiO^a!5#RFYmI+bHZ)%{L zj;Vp3qhR+}7kRHN62eusn>YS?ets=(B4K`5twp)`!D*yi?>>djoFmm$`Xq0e*|pPm{|`w-=M& zu;>`AMV;{_(6KfVLfOZ6$LBT0YdfqAGl%k*{n$4rEB(n|nH-;{3UYYzuQiTiH`Y(0pKx~p$Sb?SyNjk>@Z6o2tZx*+X> zlOupzPfm7SC$!n9jZ|BFNjLTrcznlvM+b+8KF@dlI(OD5f1Nw#lfTa0b3UX5?X9Ys zfk8Wh#f?y0uS83E+KMwHodWX=ym6>@J?tFN8Vj!KEXJ+8fE}v)S^l9jKg++cYt1)L z)Fo^1>Ho6#F5q!i)!z8D$oQ{x_BN zalvh%*r54E)PfC~Z~oQ(_?g~`pYi4c-lZEfxd9T3zjY)t+&4Lb$bLN81Rv1skOp}? zHhS(GERFrGU5Mem0-faPRo)O8y0LXDrWfYA z6JHr;FD@5#DQzh&%B+NGz60L^+z&YJsc;?=IMDYZh+HUN#IFR;n#4glvc+@f(h^1U-7-3RzcU2=j750353ES@9P^b5KyK}qSvFJ!V`z%vq~ zga-8R0Yu6MBS=i3L>9l&mlw(AEGv8!D6OKjA!CMo%;DR|=+QaA2wPdZ7{e5EF1-wn zS6|`?TcAhf#kYi+^a+{6;TjE+j&|xYkG`3E%H)jjwUX!%=WfT|rFdiAMeum+(%6v4 zT&RhC-h2u0%Q?7zvAY|c#!*WyvnsK&^%J@Y-3}bF!Knx(fNM8?!I3dn81@p3YYV8! zuka=+Di_VOXh&k@wgJG&>P4mGThYzM6 z-AjFzkZF$Rn4~x+m$Nqjv!zna>&0xnUrCu^bsR_`5D|0#@vn@xTg0&wu~rYG&}V$& zz5w+E;xa^%YJ=*h|J|x(5e#YB3G`1dixr~Z-^bTKS;SEP^iuzTk=P0@`lr8jK=KZZ z09mv4q-r&Eh81h+O}|I~vQ1$jfHFz>Cdl;3pc*=5Zn%g2UF=6yDs2VbI7S5nd2U!2 zi4$RmOoMqpH4DH6)DE_&+p2zP8C3idL4uwxW=---bX-`ou@0-*(D7MG4l!1(b&8gP z`XcJ8G^53{1k+Gv?m_a?j|xzNGwVo-6RZ;BHE3l(HVutv-UpVdAl!Sb3Ie08AcX1= zDR4ME7$IrEmA|Ngc=qBq?P_AAXj4`j(54cka-=rx!mnu4EVXIpI{GcWLaFfFQJyJ=l;?*o7I~(e zR>(7NE-V{XJfw_aDur4^d{d+&>!GWnB{`P=4T=dw$}xsTJ=Y%pxH*-Wk#4dqtCA)k zzL<$vHJJGvE07UL;*Sh%Q{=OBo+}ESAw|J7J5xio+Eu=ap~O`j>24u5DRU#n416R_ z=50aPH4F!xeyV*h)?|Qa++NB)SBUNv^ZV}_iNReE{6)QK%E6cocpiFo#=I4^gIV1W zPwul#l4)}C$IYnvTMbHJY)Hn2hLFgOs!2U1re=n{q0navrg}I0PPW7zFP!0w<3k!D zF5(oYi=7%F-YrBlnhPbO=Z(N{3+e+j$RKXzz&D#ut_(@T(7GQF^_l}-!RfCK`jU}F zsDyaj(jnqOHiX1uB72KufnPtH?(>V4kwq=&Y>)w1obEf_X0^?Ytvis(M4-6HQB?&Z z2J$jTXYseRXlyxnmoY!QQQ%=ux!kL?lx+sJgAt8iaO#87_5xpFf;D-~Gy9>mTprQi z`VwlgDyNH_#A!NMQdq5EUwYRuz<`m(k4TN7GSoa-bk3~2fI!3KD9O%(2jL44vgQS- z%i<|g7=+;bDw^1RTMlkKl;9VaCIZ0TG z-z0vi2ou6Fp^3f(V%pyt5f;d_^hV|RYQX~e72zIqREw)#XG&a)_nom+Z5?u?#DtxF=unZcAE)` ztCNCD2{h-Rv$={E^y<~SpJ8I7qK9pL~%d`?Xy5s5H(9c1=X~-WWzOV7Yd19Yzn|Otc2QK#|S__ z=nR3futrMQ2Ff8|X2NWwpk;|qR+NO?n2M#anZ=8&SRmkca3?M3ZVv!JMBj$#?8BmL zoSpBph;zuGU)AYtLL`*v7UrK^ccb_vXa`Ho1yp5dKo@L75T>XLrV;eY!IKe8y8+sb zIi#7B7QWMxC7r|!5bhIPtai&GFrMiu;UaNml`1F^9YG|`VG%XERO$rO?1Iz@RW$>H z1mOCoOzqVDZ2CWhX1=K&zV^QfRfG&ljxY}youAn$f0}B?B z1@fTRB1nuhKamMAScAe~s={dH&L{E-T zhFK}Q0!x`bTw6=vy=<9Yof7x}rrE9+;`OpJGgweWSLyIYSA)LjYVb9QE<2C-Svxr* z0ZnKs)@PYpx+Yw?bd+-C(oxElr^}gz#jbJjTdTi-1=h72s1lLD$b7Mt$}%LQDG8fT zAccZCu{Ur6f0@;vBP0`i^kqz%x>{eVDq_3kP{I^#yJc&s%pTir6)N)rD-Qzz5a>Oz z{<{!CUX4fs)#b3n=q*;NE+3GX)taZQE~Ur?zPi+)uP!zC+SDZ_+BUkXX=0Q^B=lwR z-|+kTF@$(Hgoz=U#KQ%NVX9I*&?x9~s!EwvyIdu1A|P2aaM;A^^hpd0{`(z( zS`T@tAJp@v%bRiPbn@~B{B6XenRablpL+8*nYi^Z5Fmqt6Bq;nH#udzDA`5%Nit(1 z(8k>|lS$YCvImy~aK5(bV0lbZ@2$8Hvk`0yp(@q8-5dA?fIRNY*C)y=G@)7B80$n+ zZING8Z*2efG zR7d6DFes!mpkEwdM5vHnfDB&=W@v|ZFrCJ;9Q~~X1vL4CLLK;IPJD7fZYh2VmC*6| zT1VZ^b(q})owA&4Mi?^eFl3UTHoqOOQ^xxBsIbzi^yCD9i=i6rc7<*C$K*f=P?2;w z$@<$uWx2%NEsFwr_6&m90T3*PPf5kEQ!4nZq7s$+TkhTh2>C=Zh}o7{GQlc7Rb?WLO=}0Ji8NlfL=_f+!yH zE{uvt)`|y_`0tAc4Y~ImB#N?c1NDYAJttl-oBVg&9&-E!>a-M)?J!S0Z&%4^!*0;P zY@~FWM>LQ`pv!zo1K}00cfUdAa&b(L@UkLSz!Fq5L(SjYBr9NhjBy35<)qLG*rc;C zAqwg~UH@te`Rn?&HAKny=sRAu=)!4GuT9Y+DWa8OF<^oyVYpQATbRG#M6a#qkm~r3 z6FpBBVSX3_<7S(f0R#QHivF#N{wDm4H(&HNL4QcSN@o9=v|F@RC>II@D@M=30^-V_ zfR|8klgpSEyo~vPMysK1i+b(mLXEyHm^&>ZrVu*-@p#SiY39M)ERL%1BH#XjBKh7n zd1X}L@&U}AX+_RHi@&qhNti*@`FtX?7731;!u&M5qFpUwd3e`>nJtrP_Z&NJmQ{9* zFPEks?mpYkpO!wRM2RuxQZQ48lG4(s0okf+I5tp&)q@I2^dLW>dZ-5_mU^%o*9TfS zp_&8u1@gPk!Ub@9Xt8;98Cu@7RU9P2&Jq3DSLs67c@?6D6eXyk?)R4S2U~boD5V1^ z3Fm+kR_c9VftHvGq>AU;Ca0X_ds`!RFdV`-WZtvCO0K5ivQ7y6)hh7K-;w@$CVs}7 zJ5Qj%w-2ctW1UG#U%PM6PmQ8oTJ$t6`VlF5j1(nytOOG_xiqKCMc_(A=#oWs7&gG( zMXZ9JT35w~(6tbc-C7ufAm{X@CFvsC2UL|lQqSpQ(5qbQBX@kysVKW9@DQ<6A{l7!poj(OsC zq86?8MwItg(?pMx)wCJW{X`vtz)34GP)iIXN0e%--n)Z55(9ObSiUE+#PP%v`^wG% zw4LZx0Pq3;>H`3DRb(|<2aD#m0=fE$bz$5{)gs5=FCL~R-@7oFc~f4 zb4A@h!bqCTM4WABCjDOQwQP~Eq9BJh<777DHzcz*5oN#o-L_Iz&Pqjv2WyO8?l6}A2nw}nhhkp(Wqkg_r{74Tm8jfE#mOl&%F^jUeg`jqo^UEG1(r;&#p zBgJ2f1c@Pq!pR)sg_GQ5hz&rNw?Q_JtD^!XL?l?k><5K_mdi$Z-r-tKG{_l2E^||T z1qG+RWGR@*6}!sRL*ZAFYP37-!;KrEzL>5Ei)6$3Mdjg?o!Im3025x+##G zlBKH<73d-8x)`;`Wgh_4bf?2y9pL{*@lX6u;!m=w@pt|rbRaM)-a<&L;(4~SQqdQ<+lL|+H;-aUXlYMvhfyZ zr6N7n-vzUpc~)~loTw4ecz(DGIwRt)b#IYKFPcRpbqwTT%pCUpDrC`w4qq*j?`@dm zDmqPp@EYLqV$v+FuD4+_*QQx>Z$s_FC#4FI45gZ^ z1N?c@WT=@2RnbejWhtWEMda+^ZY{mG<)Pb7j(aqttGGkE0DJ z-7TeKE9U|>KD#5a{^Nv`7D+qW2u6LQIaJGA+>S$G>gp-MtWinDxH2rcpjQLj?D-(u zQi$D(WDMS@+>VOenVBs<0Mk_s#~U#Ca`<=&8GXYsP&CV;72r}p9=ie*)O%?KTL31G zO%)vN)&QEX9P%S+#*IjvHA;@b9F5g7V>?hnjrL&y@YgpNk?q1f_h=4^vM?dajoEo*BxBzD7m;J|y8;2`4zw9S9SB#-l)Y zq`QHZ6dD7FJHBZ$dIYSq5a)$`#qG%L!M4hw5dW2-=NJNXVg#^D@e>IcVM;{*jm+gR zDz74`=wbs6lFdn&_Y+bM0p{hetnxLv5EuF$Atn|Q=EmE%fXPeC5otuIb!d4*tc6>E zMzU!omSPoraOIu3BzVbImDTDFgZB=*RqV1C0-+5n7!p`R1>?kMS|#y1a*&qTO0N9} zsymsgs)G?PF#!SIJnZ3{*rxf5v;q7esl1V+=DW*m%^Y(2LseC4u3|C(Wht!0%``({ zlwz!(L2K7BHOJKLP|9Ex%!4;OoW(pilvN1Apgq)xNB-6h{b4C`13Xol9VV-X_Fg!@ z-c|H{b<&4Px!oDy5d{fHiJb6?Q%i6UmXdk?3Dx^4YG3S0qkBs}nT&%?O?XP8+v>K9 zMTlrWpli1e(KH31IqbK2^dcDRHsi5Y+E^{54M)D`oP_q$EzBC3Mr0C^3zyk4e;1S$ zRqMTBPI$3d9LQwR%{qAV@JXX9j&?+eD@gtQ@a+;NaxOy7g_?7@h5k8W!gU5*Aa1=1 zJZZEL;iL`2&bA!rp^Zr80>2LOJHg<{2R4B%tUU*a;~B1aqqszT zmP|pAn6ZNUj;-NXwc}~Xejxn6{i-JXWJ3u4zCrlj>w$kqZTRO+3c-Jn}a@tFvljrQMcw;9(c^ z)rKB9TQ6dYm^hwgaka@K1$Q!Qmsu7iJ7L!_*jorcQqYTT4|iPPkpj&j90-(X^BKF- zcM2S1YrIn+HQ9Fx!mkmylom9n|L8zMuqAf5l96V4S7WxZY>4J<6v=O7l=Od*>)YNQC8@upP`U}Q75j4U)Kf|`lmDae=u zYp3cv1s&$q^)(B(O=|$`cJtGTlJ%Ve-nS5*K~|2BecMuEkw=ez(O(~m+l8GBe(C$} zk)t)9gy0L|HKliowYj>LSvamU(WL(-9bdM7s~Mau_DaTn$;byQV*NKsGxkdn=kw*b z+9URs)FOuHq@MTtkTq`{eAW)f7M8!2GuA&ZkU|qB*8k=}jN6F$RqA3icZx0xt(AMv zANhxkknghBl>} zP?qL)5;mV~7`F^@j6_N3UB_I&^9E%Khn|#RQ2=d29vQf$YSdc6q2C~zBH+O2(jMY~ zkBj3dub@3pkufj8;!^_7`s>TI?!aBX9g)=K1{I}5r29=1w#)_Cb-{XrWpVbw%GM%v zmO;hYh9wnT^&g5})IbrapyDCqXJL_LjOow5QQY_x_K-uRraz@`+kJZyX7u2n`<-Hy z#9(46zt&C!G8)!-@=-tS?^r1E=oi3Z89x(Y%4Ds$NGO7 zAX)p`6Nq6SX=5M3kqUSkr<57x*m5gOAD;}hVL;y)aD%zh7F)RzP-v%mTsR^Ch{|S* zIh(>Qe}7q4xEQEJ^q_ydT&A?=EI{y(OO_x19%W_CdwfaO+)lvH zcysXpxBN(8>>)~)ZO)f*Dw%vEj#Bjqq!*3ntHn=H)q(w4a|0@N*!LXkFz-H!jgzH2 zlyp^M+iuxfI+!_><7h$TRG>ER1M%sX_$n6sen+{2MO?+5xreavs4of|v-lZrzH5K7Q5e&6 z4XU4m+C#ln7T4zBs0DE4UEO2`yahby;*)aEFUQCCL^84@ydh4N@n!Ybm7=ODTIY`_ zK-!g8c{B~X58A0Zm;J_G|AZNl^LoicDm+n@6_T1H~P8vdd#Fkb#hpqB^M zZ$kXdufz8|y(I|{SkmI-HSwdj>aPZv?4rWzGFP){AX6d=kg2a8CNf1?u`*S2e6;(6 zR{=CzPs{?=!$3Orur7}bP-g=Hkp(2kP_V}4;)cfi@QwH^KH1v%gqIM|AZR&)<~0d_ z`Zs$`LZ>4&cz%xHHzOzZ2=ENuGIjM({~r1GlLU8ECqggt4^dCR;dy~_#8Kw+TYhFGs3N8cHk#R@=xmg%U=a31g zaOVfN{^7HiF{|-(lrA-?KBLfq?lcOaGoV``l@5p$z6k=KNqn*_J`>;|D8#Pd{?;s_ zkkY{dfX;D(%u3@|SC*tf1kIx`jDhWF9vug$TkegkwS?>e-9i^g_55K#Ed1yzKk!-6 zWo>@hbTI^^2%3SyC%HmKf7mg96iaD}Jj+=+fCD^o!4oR!P;&S+xLQr5Q{VxsCdG;s z`dHO$AN!JS)*3|}=2z-J44FDB!Bh$rM-%p&{MLF*G2{sv6!aZ{d&2(!W=YXSJ?BwE zaq9xMLvTYwr)vF9_NERq@-tELR12_Esg~FxYNYo6g0%Qhn}4oQkqZ`6VE=L@e?bb6 zv||oIs-4$imV`)BQyZ(TLG0X^q}Uy%*y#{df!)1f?5;;v(p-hzlM~&4(@W`MrzOcy z$B(wIK>#ZGMaCg*48M?q5&op>XUT3?iPI(E!qi!~9CEd0yP%#+A6aZ3YoshQ+ZhG) zS*k_c&p?N?#?7y9!)d7pklt>~o>ADRtxosDw--Kbvt82IHn_00BM<@2x)3@Y8VXv0 z8}3uo?Ezgb&DUN)UAkyP(L^;AO0X8#W^v$dInkJp;OU!cE1m-)xv! zWi~)}(0+i~5C>LOW&?Na(`@J^@@z%4lrP|BX;^oQ4|I?^e z%2XNEvQSNgXxWsw;($t1LOkdM7Oz%vA^j1yCpLmJlc++ZwAA zzh)!EhZlvEi@KE6zt^J7N|>e@j;kOXJ>ditaJL2yV08&*Sd76{YEZwO41$jt)B=29 zjxYj}&2Q$#XBwZ(htCwSl=UAr7UW)ti`x_9L#kF;GDRq$E{R`rrn(-oJ~h|=PK=f; za|owk9{k}AB5`D;ZysR3g})xuw@s~!sP{de%Q@H*Y;Rg8s!9OxK8b{08P9YA+ciOOf7j02QbE)I!;jd!Z9_@kz3_enve(X=^j;wgiGEbunSP+*cWD$_?CMAJ* zS`q^ITdSL`NmS7d++c)&qM8P(X|*-e#l=v$uHWQ`#}JD2z{0j2DR5-H2fJSE1n%!Y zP?JmgTHh!qfT#-V((JWE(|-qx3?8>%i(yvY)aRKq@T49xri;H7A@EoGpt~%RT=xcZ z6!3ZiCc_p{6(sqUQgrm{E4dh=0}IUMW6RDJDr>cS zVQ3gcUu3aNsSzRG&nF>=nK|)U!CmI%@Zkso7-B(Z49;R7=>l9x=H1{Aa-`LydQ(ZH zFbxaNO&ccIzuL=5JMRDat}l66iGjTH7a*a~z$uADK$|mUud-`WUC~};UitydXTGSL zVEP@~1;DBi$`iYD6nQTH1xHO7{|E?qG7Cb+cCdGi6o7>wzZU9`eid-d^c+n8i4pemzAzi>|5^w!?JW_2XWA`D0}Ax@z+ciU-3F2)HCPhR z4(3mDRTwk^T~(WKr>^+C`wq6=g~T8{a1kd^}}Y8W$ugbZ3YlQ+cL-t&r21qT84 z7jjx|@2#`Dd};E*#3kbJ=6x|lqR;zPR9ye@U&?z1$otog{`ze}^yfeT670zMjpHX$ z)|*m8h^|A`Wez(D%}QkEmPzBKla_)#x~JK%C|@0p{yW)C8Aly5@4yA-L(wbHW)kbf z)J%SAd_2GP@5o7~muQ`V@hL7B;_d*3@muz*vJ#Ow|LuTYkb(5Z)-0<j+#cNyZ+I4B%nq zhwEGC<`B268L9PLLtw5I_$~ei{xJQBt@xNbfTr$P*Tl#?H*n!Wv%%(Z&Z4RuBMoR6H<5lKhHqC+6Oo2gIrK2UsKbV8rGzZqC zBnR=9YccAvUzCe%_2XD`!Y>Z$>`8J{n<7jZX2#-Y@JGII1QE=@x#QTk>L(ozy0HY( z2<)2#-ZYeJk|+F{@WnT)nwFi*(}qocnIlF3O86(MF^#OFbTo1|j&9w9z{1({TTex8 zjeF|FagC+VhEQbEU<0edI!gJC%%D7!*R#qSYx3JVxdA8zOr&LX-Hk-ck`CYXi!+TY zagn756C+tNOWW5?W^ug_8v;K56AOT%!3_dWFkCCQZh}pk&!Xu-WGkv_Jp!3?*ui^B z-_q9BNM!HG5}sg3G!A*pjckcTx?7pD83*aFoyM=<h-bf@sYX6aEQK#onfBRDXe;^ekG+8=LTm6g8DA@q+jE46;SV$8rHG5{ zk-;7ZyJI4yO$@XtQ)VX7zSCy)+b6-ovb8=T)FxOPpF-Jh2Ik`)VG$Fx>w*6RZ=RErG83*u!JUQ2)$U$sPOFRQ6R@vcBq#>7De)G$4vVNPqN* zm59cK{n4xJk5qFk=KA9{hFyOQ=63yYFHi%z5-5`h_D6`9?T?5K^~Z$Y9}|9mOjP&B z#m_)$C!yicL;!|XYeXHkXO{GC!4bLLkZp*?;}zZP3KY1H%I?hJIVMvND2)bhXBYMi8PrBn{X=Zl^#fbT4>v2pb0r_t-MRM|@L@ z2WQMf!B*+gt)(o!Q^zpp@lUUfpsBY1Axg!_evMMtUbA?x{_Jvr>gs$LyZp{JtCDRM_t;HkJv5S0_3b7-MjVXD1 zF`k!_Abu<3_uT}IipU5`<+mOJIHeCGjk;6QsK+HO#eA|%b|lhh=V=;EJSjJcX_oU#(D(97ai!AIjso;5760;cft?tzGLY6wuj7LXOs!vb zB!#|SJ7)#MmD)H!mNpJU?~E5`;CljS4Fc_wFtkCiA2l@wn(-i@*N7oefjAeLd+8L3 zifhzNvb%J+L`CW)7q8q^Be_X<3Og2f)3BL|-x>Iwf!`MV^1h8Yeo1Q_x9m~aOLc{M z4u7etJzzombocje4*YNCfQMTx*U~&0Z+_u9wLucrcs)psj03+b`#0mnt$>!4BR-O`L+@4)@9tLbQ0jiXab~>)V$$1g1n(~%slt2eO$r>{W3KF z*8w2kTOYxDGM9)dG!H*0CqbLn?Jt$UbTOA~U=*@wei}+~q7uh-p^@(9bqDx4k99e5 z*Q8{^9(}o)X+kxzOMH&3#^;I0UMoI#x}0HrVCGH0p5XZuxsMbBWSBppzfc>XOC)pzP$dm@~6+`4CCYN3?H5A1w@DU#Ue;a`Ow#dId2FE&%s&+ zGwn;EkSVT;4{nFWWH?N@vma~2-@h9Ew?>873E)??^v>b0eV_{eOLq#ts^xYL|DtO6 z|3JS+=b8Zjs+N#b77frUJh_0G;LEX&XbK8ry!p6ip~D znp64wQg{WIauU}tx}%}AcPYlt?OVpj5adr_#P{!fAD}n zG?J%kgKxk)abBW_o&Yg!rr-k_g(eY@YzY(whOWGokKx;pv94ztEu#qZqPYCxkvK{t z28ycn_@_}rt9b-s2xwKtN?HHNF7QqqDp-4~zYDxWPFJ7`vz6sl@!6?SbQtkex{Fmq zo#qWuV`DpXP7<)i`fJRxmg@SIyJHuQNLys2-SBsB7^2<~FBv5ZO!oel(JoEXzkHNs ziun|)bQ7^C3AKmKBQpv$U#Gv*Kj0Vs*|&7KKu_aMIM}s+`Bsb#`3;@n z?bvOgsU^e&yikK?03W_~i+{Lc2Py}P?ZDG7Rw%iFR_K=lFgWD3iU=YOjtv`^A7&ix zRpQOH?EA=`PV(|s$vdPcLWv*}$gZuZ*s_a2Bv-x{^YLlJhXPRXbl9+x-TaAfr)Xsa z>$k;osvvqflLaE&sD1!!Y-a7^o_sb)J21gHI7PA`u3Mpl)djC$>VZ<^r5tyx(*qV7 zx*V)W2f@Gxb;cuTYah~m@5OsybPJWN0F`g1Ebw%Y`3t%|nn{n&FOIz_`tT9^MPfHh zM_O#9-j^&?G=WcY6^6TRmGFQ5AA$27_J%aMwF&%t04S3-oCVaw2knTY&yIrC>mkx0 zV6Ogm6$ZJ=BaKQReO8Krs>FIOmU1Q{+KanoG?U~e=Y$4=mn6*zKqD?`jeIPGJ2_l- z%w-_HFUJ-tj$t61ktE#958sE+N!>Vuqqyly0Jwc5mjROIXdD=Hm*4>PizHT1+~Pn8 zo?8)Op$-=M6W+!R6=JLuVm56xu#Q9q8?NyiXxskQBpNEeRbC=!$EPnlUYB_lfYAVp zTw53BcbZ|uK{OW4Qm_71<^0{|NzI=v=fBDfXnuKK3$Qu`okEWMMX(Lh);6iTg+F!O z2l8hRc_o7l87XmXg+~zsmz(ieaVI*!RX`$bN-z*8BOPTlt}@N2a{CrN_>UGO$IHo` z=Fhl`$|d8x5tCzyr(%gQihPH;{VS9wdwGUuJ^)>V3he1f=@uR4F7!m;kt}{(V52G7 zEr3M1TjU=JaJL?V;N|9IXh9;2ah12U^faoCyd5=^(539He4hE;!@(-04`<95zob=` z4%P-meVJf=xi4xudB1~LK`XZZ1X{6g165vFG1^H>&|d-stj93HFZ`i41C3|`8L=3P z>qGET72lyk4xVmoRYr|TB2LVrKpe!y5AB&;I+7oeZaEB2_ET531tETDlciaOeZjgs%pU=ied zR<^YlNN&ifJ)}=jv3R8#Wa|6@1umeFfJ;g z6Vn!l2qPpn-4uTYoWP|tessAdEncFupO=@`rDH>1M>;(`X)F-7kTR`$DmCS#25_F; zcB1qqN$(=7A=e`*N(GMn%L}q&<{F5yDBMoia(bAnHl)3!CK!EPl5x$1C?R80F$p^l z6}DA8Hd|hws2KFMHKLCW`Gfv#r~tf4;wR$xp%R4H6k~yQ^lt~-OGCPxg#+c^6#b<} zy8)yr`izShKtauFM|iRYlUlTMWNj8YZM^xBCv>J?2HAhz-)l#!NAbIf0V(0-8*H}&jA?rg-j z2t``bJ*M9kNWa&mds3qUK>-=-%26JpbR=tv{`GnbGwZTnif$3C1*4&hLCL0QT53TY zL(`Ab5QdBZm9fNTA&g@PS>r(Oo#W_JjuK30LkMqUE1v`DOohDT?T%RgcWoG^T9;^< zvGL|(H=>o5-(%+U=&*j<#8&>RN=_Y@rQ9|**It~oHaBjeA!~B9V?)3 zGvgV#--1{j+QUPUBF%!Nns*)MQ5a{enXo!c9>%oshuE4qgU994ip_iBM4ZwtPxI?bH3!~ zgaVK?dufrqb30r{z;U+K-noctAzKk0^_Db!i@_V@+9wFNr$R9t&V5#fLn?!s!(rGz zf-Z+uEfSYBKfvIMv8nbhh5yYSz}>X(=D=6e-|st(n&^wCS+Knu2Iz2@FT1Fwy>>NzbA_x#cpX9N?fEjPO4#eF@wxBS zB+S-05r12&D#aaRWL5@OiZ&=qg?e0IrLmL9dc_ZMC)T$v!32VwA0K&bEpTitL?^

    e7p7Vb9xhmvR#y~>bzv&++G4zqWg}Lm8+e76&0*;7AjgYnareKByN-)A^pl1~^al-Qo zXx%zu;|*$qCu&7eOb_rlxx`XFx!VpHwwQoJS%DUc2e%o&HNKV$^EArh-r;zk?7Lo_ zAdV}CcE#wn?^ZC{_Qz`faDE$IQR(zj5J3AEDB{mlEb|GI@hSqb=aed)H)*gt&Fqox z%Ne7&2OF`?7`z}OAQ{hWU7JRUSu*tygK{75ncrCS1^nQ=hCpdJIHWi`GsI7~=3(<9 z%{(8nei-Epd4=l_p{?(i#pt%R1xBdme7kRo&~ z@iw8w@Sf1MZ?2BhH-=oksZg@laYDPKeNB?ub=CK9jp$+m^h7705_Ez@EU_Iy(+=Wz+UtMaGs|*`T;xcsQiKW1964+!slmSyj=Fs_M~wjxBz@H-K>UI! z^BUHP>chB`Hov=DM<6s_a0F6y2I+Z7z}eo;=|Ap9lSlk`b=<{9(g{3WgV1 zM%Me{LqU+O&TM09bkPn_B2@-t3y02YH`Fo=LiDLU_xOhb2!K9CfDZWoCI&A(R*k_# z<9Aybi8Ot7ITDM342xK_MDAW)(-HxWy^&?$y(_?;IcrQtS*mWg!G9TEOcHyfA{|Ub zr`n1Aag35swm&NP=MioePOgT?GTGkHDc?)&W3}%nCogT{wufI`N+svQVu)%S!9#Sg$zTO5bjC)9SpZa`aQ;?qzwbDcD zN8^1NN)tGkH9!13w_B876c-=wS|sydPRxV@hWcB#%CEx&(EnfommkM) zS?Jm{*Wa-d%yR@*g<=_!q=W1xLOO5*$J> zJs|M?2;9#b;+=gRwN@47CVfdTzER%vFvU+Qu$p4MhBN|dEZ5$|Z*`wdaV6l&7F}&>iEhzWC4eZNhZB+Fh z1&n~cZJtyYy=;l!-;)y4-`dGvQJ&La#OU@PnloaX74VCpF3#G!LKzbX>3VkpADn6= zka0Ff11zSVL_y42@>qed2l$o|+X_WYwxH}24E(+Y2(v8&C*iC)00E+GpV2wkLJ-t^ z2*F+uDk|o_NOS-vU9gblBY>rrGS?6+0wOkQ^u!VW%H2xc>8wCxmr@{9I(=jzIC~N@8=R ztuuvhm(Ur&Gg?Xf#v#sgBHgDlSisA}+kaemoNkpe(VJP<0{~_QaBX|dic4={aXLOK zimhR>^Cv21@kO<9`|bceJ1N3JT)VfYI873cJ#3D|wTJmZOINf zdu_simc;yQguCQ5z-0~GHK+1}LJWwE4Y|mPB*81#r9SkX%Z8=zus4+ZPObjJj)DI2 zwX6O9vPNQTrMuMEu)4RRKx7$}dIC~7p{~a2DZ7ylMWiU8X(4#*Z;z~0MJ@FDYE~8X zK4j%q6!W%kVTVkXWRHl%Fi7Z5j|ZT0BNEcAU6M5?-m0pSQXUd)PcojUn=*RN^u%w7 zzP^GDkdxfDeuQOSiw4p7M{R5Q#t1NF`<0fd9+xLvZzBkzuBA&&q(>rc4C+^9EZGG= z&CW_RyF@y4c3C~;VGV1AJe>cq$ipy#WqBxT(%oOXIk1}pyE(9%1G_meF$Wf7cV|QF z5jZ19x8fIp(Z4k8IqLh-C7s7rn3goSG(Nmbh{btEj>&0*CwRtVkBp3NQdPVlSSDIqc3_=V2=B9aQacu{?=EP+m<+@q=aye|5*Q zIFwO&*8FFeSh=)aG0~ig(K%k+0#lpQIGok<_d;FR8O#?g-ithHOBB5Hcyp4N0U$O9 z(0Q!8elc#M>psDOz^29DuJJ*LPa6B|Qa*sk;Tjv>n6Mk$KGQQfC-DX zb;;Y9MEa6mVQ>V6u+6-_PjcaF;7KqRI}t}+E*NO@xkI*owDe_{DK~~C^KXsIC_T*?e1e3NPj7dw!?+(g2qzU@PRtKofW@ z%zcwyq^C(GV#g=6K}(#bCG5mZDgpC6&;0Z&u;f?@Oiv7Yh-6=zbS>|+DZNeM;jP*6 z<~=^ATP~5KVZ3?AXZ?_eU{QiBx#=1`KSfuw-;-4ba5uMfHz5(Vqu>J;4%maxUF8s~ zyg3l`#+&;Y%$K(bDm*;!uHDXKx1$yOfc&Z)K$bDp#te;#_?0Iv@N1u5VrsrO5zz;X zX!FnEWPmSM;MKu(@iWgnoo25>MCS1fy+yhUxaYlK+Z;B*>0}M!-JauSW&JWt_n8~_ z&b*b~(TCm+9;bE*AMa?t1QCG3;3F>uAxiPZ8G#jiOlA&XaDz|?L7B|3P^9N#hoJDa z8o}p>d<1VnO#+g7E434#!0KX)RRrJX;u|ylITV|eS+`i;V~G~|nlmex=<+56-mfr+ zHzh5J%C!g-1T4Ngcdq`%9!^iLDA%d;xhM7t=v5o{Ys8Vsnqw`VfDzh(+Jod6xYT8C zu2JrOTTXLNE-h!)jOl1ra4z~^=m{r`|LVs?4;5vJbG8jnp*pUUx9`D6{O@0*v4%p_`I!C`c=#|9GH7^soDB9JKVm-631cJ@`o}-xXa+I#lI& zqz5;4HYC{@qK-;Bn=`kf!-B5Rz%(GEhkbSiukHI2i>>AE2NCb~zRugNBx|C@q5!#+~Q|r|(CxMyy5IAAW|B2aU>1#~_o# zKt>!%YG=|u6-jYP!nky4bo*)HQVB^~z@+CZk~rGnSso^hRwQAQJ(8rZdn=Os0ppf1 z&oO5B+$s+nql3z=5)Xt0h7FsQBgg0O<;bBCXnGkuL{|R#QMz3y4C~%6!w6mr^vgl5 zKYAOR%a4KH{}N-Q?6>@~%TX3}$14t@1kA}=<4IOvQy<8nb$%d-5#%%m10zTP7(V^= zb;?-7#)urP^7s59u4!}!%m)l&17bK;BsCp@OXon?MClDXO`kAPkg3)E1Ng#5M#oIu zvhhfy_WOaPj0MOn1aW@ZSG8M!E%zY@7zqG18lKp9svPkva}H4aFg=^pFYg4(hq4 z7QB{fc%v^g?K$eA>-=g)U%(X0Mc4b$RkcU8_E@O)_|msH(&qjdjkn@R7d*xZn@@n< zDqH-XG%_dw{&WAzLT5V)w6l;S$57O+9EqSdha1>sIWyGOa8(6wCJT0@Zdd(WUh%Zz zoEm^BW81e(1bWseM6xz)^mO$2@`&a4cB!*ghm`iWHZE^IiVtF&CoZ=#)9{f$xiuR5 z*xkTJ_TdaoKjl)MVC~D@H9dl@mg8FqHnB1CCi%5pHQ}FtMamhWl+yLKKsee)9uv;{ z_S(@f&!o>=Mc&*o0KXQQPt?p8A{R3EO6D6h zGsdI`m`c&LpJW8ePxej%TCqGYY2(nvY>?;C9rZwDHYJrFhuP*YR#C(Qnetm>;Y`og z&XnH~>k(gl1r8-hVijV=%jpdvb{m6ST=ym-h> zk9ev2_^}uxgr5VsV~^;SZho9A zMR0JBHMTAu#56=?wY(A4*+-(u;$EP3j!V;q>(Ge)^|3^X!^^bcD5F)-71#WZ_)
    o6~bB+=41b_s0feA&lQmZqxxF~F)5^B8qM0-s*1B}F)`($Xcx z>!#_6^;_9TkQ2hzU_Of_Zum<<4D=VjnJAqMuAQt8%b#327QnbsVNUUUYH2`_ku(57+6WCsLEriP$gUH2 zVpaW;bM4?s6r}bqUoW*M)kFSeGd{i;^`_@Z&m)#;=Ib^2PMyvHOW*sp1e>LccA2Lrtf((V*+{`9g1QoRTSTJt7_9RIEjn4tpH0A} zq{Jao<3vBq)VRnbjiXkQtC(hET2j6dl@~$J9%!#`BUNom)!O$~Q}yNm9Wr+Xy0bYV zwwWg}Az>7PK8W{e^M$-0yc!v-sB#eaEV!)9g706u6Bbm|-(I8s-z*N2um`G$mp)i3 z?6mrG%GIA2sy^S_6j?5!m2wU$G>tl_dd-R&Rn?b12knYx%W&-c$gLPV^BX#?8Z5uZ z9Mps<)Go50Hcwrn#7mWNtRgsdF0S1l48RN^K?>iV@u8j6G3Y_-BE?$Q`I^J0>i5u~ z%|clSoPX^#BRVL8vV@{FnY*qK9a`yr-U+-E_$`vpz6zGXr~AP{XC!GKvA4;5u@|?= zv`IE=^>mQDq`Bo5nle_EWz50A0ccsd+FSCBH?RMgIQ8OoOsl}qb#-DBhYaeiBK`&; znjzmnkE7bcLWyshyuC|X0ZJ59uodJS2Fzag(6mL6L}&ZysJ`?S;*y4+PMB0)4XdzM z1X_};Z6I8DX=SM7JnoTnJz+G(9+_W%(&$8&uO-5RDF!k}AKGgADkw(t%2mLD+_R@6 zFtf%=l;!lPP;Hh^)u3cpEK4O2Y#>Hz1j$-r)8av|K8%9gUm`|BaHf`8%h7kdc{!Lv zA~6tBNxFNyhp)rMA+(0T@HCN)n|`a*p@ShPXR;jQ-HIFl(0Ta=i5zeK{>lS&PHV0P zC|E-fv5b`+kF15%dJX2CH$#3H0;r7NKhiT$m)Q9tX8vFiY&PFSD3j(mP5VI9n0JL8 z^8mfKY>_7e$7LRQ9~*;16$Gp|mVXvBlZ0OL(4S;j*7;WVNut$gPRaR-v^nZ>5%pHE zt(C6fJ6I4zLV`k-^_Et!gMeHD{kgq|!vc8`LJa25R(E^aTzB=$uui~LI+>|*X1C$= zGcIB|L5Fr*+vE~PR_U^v3AW43Rwd^r@9h9i`T*K-CYdRI#vM>yC`f~>(@DwVvOr;J zmkZM!n5ZCo!hDjGf^zRpV&DnLO1B*UlXe_${#l;#VCl@59JoW&Fpb&3lze$vO#Jsd zsdQ$z(r+vZS9$;`&kAg~p`HDY6M40@%ahQ5dLe#AlIF{pt(vPmh4veyNJJlG99Z_ z_!ATj2!H83!ATYvC~l|$H>Kc0loNp+`>1qLIr|nb9bw^!1Z2(8z_>DtP9Zv6L)#ux z&5CfNe;VU;pwUm_utLbHAiDRj#s5NjMk%Uigaa+D6^4eg6icK3H<({T)XD7h;Jg`( zOuMl=tz);%HUfVUvpM#vdY@eCkup@uM?~O&#`2OZ_NN&G=jQ+s)^2A3#ch1`@<_?!k=_8K`WhNtma35}~Sw5PaxE zNUcDHl9Ndg*4dzWs4vV5xP*>WgUgiS+-2dWi}}qOH;Yl1-GtHnHc_@L(GG(d70}n~ zi%qD0X+NO~{hmBlpN3~XA?+kF>?HrWLc0a~KR*LhIW3)_cO1@`<~wZl*y{qbl&B}o zS!8;?=7dnoqijO~+Zwp4Y9})?$!=hI{F&e64SML!GLWb7{D-ctV#doI8_Y5|4;M&R z^bJa^!%tRP)8?E%fTsY{g_$DAg|=-k%tMokicFhJk?h*ID?dzk8*Zqa4s+b8;JZi^ zvIy(&2PYvB64W?(z_+OFDa)5SKkgpF13HNFJ7)E~7Y!XJSeXJ^yNH@#k7Y+wu?SKi zkh$kA-M2F8;^mV|lS|)`0zJ}s(Yhm31P71>KkXEvz)!d%ZWE<;rER?~Fez<`=cS_7 zM!5rnO6eq4)M}NQP}2qdm^S$Wlp2$SS7?az#`;MjpJ}uApXG)%sL1m0gZmboehx`m zFJ^w1rTv*7)}F1ytgzZ%C8q~t&8ypk%2Br%{Q~@_bkAA5Zr_MkusJ`4rpu$%lB{=T~YEByA)m{0#wYfbwe#k6{P z+6rUDF%!b^T;K>4Lo>5xKx6$}5w|`-OWceyarf*95!a2K-tNLc4&{HA;}38gR>5d4 z!?>BZ7n7+)6{mh7W+ZY|D+Jn)S*hp{+iYOsxhjn&!h_TS~ z&P_EstUxSCwVcT;o8|Y@4EB6!owyz}_V7M~Gy0g>2U=QJ{3Wm;?7G;>r!96cUmDC) zKMFasI-E0$Zk#wWhExV%%Fg)M(2YSDLp}`Y#AO(Qgi?tP5kN>2Q2hmdQSP#$>j#gE z;LGlE!`B?~ogCon14k?DniS|PJzZP~0zM#-oc}BoUlSQoO!apqSC~e zA=}44YvnwRNbReuWz&hD;op$~m}bDw4DI$Q(Lm`7XyHP7S$eSVCE-)QgbF!^{2hQ( zdR5Gs5i+wQkP~9Vpudmf>MO-E%M?EY8KwlYOa-{%>qFooglcmF9D_c%gB`eYYk|{A z-IZZ*4PkH$`r!UkyK$yC4iA*8)5i`~V2*e|7@Y9Cj2(kMxSRv`KrL_$0`7_HLd32K zW5=Km?pO!zvMO-v2#hn)rD1R_VQ>uk;9gX>SEjhn#NdtzgNuj3G3bN4*@1fu9zArq z1xV8_w?G`V3&Q+FUsw>!-;BKI8AwwxL+=;q8LA(J0yW>)(Zm`uVn@g6lN zdTRke&fd1dX;7)0rxtLDN}+MoJoi#qI_dngzUih?BaZcUMM5nE=kkx9OSGa>z;WmVhL0s6QMjosg zICkI><2);VPGSAog&99_h?|%iD}M9xWj-2;c2`>0^UBLE!~wG|^Bx!B4cUQ|(P}>s z^#BJ%iU#$JshAd8KpWKgK^n)*wvaSTE=?`I9W!ohd)=F83;-c>!PA^R-sPVj-Gh|!cQ*7 zb*^c*r@|t`&;%o~?7>NJ43ftR<4b1vvKTi_zizAMF@#{{1xvVrw?uh5)BX#$ewV7$m9Qc=JXn6M0J}#Zq-141fP>rj4(`MR#+6O%R zMtYJG*SCSf9u#G9Sm^w(Z`+tiW%Q@V`-a8?j6omC;n%!{q6Us{W~59F^*FjeJGA-c zB45zncmno@_ILr)f03$lkcc^^^MN45^$T}a70lnS!ffdW7^|?k&o+?r)9Ae1Zac%p zZpv){jt~M|eIJfPlmo&w{Q!^)2?S_o*}0%)=p5MhImDqeB4}?g=Uf_@Fw*#Z0OkQc zpfD20ObY!b$b^m7cCpMup)vErOVsva++g1b{yMPvVG!n}PSY#YlYT&w3}1sVEi4e+Pz3j8v7 ztb$k8%ThIKy zk=r269L(llf!VyqE?!sBn?6(w^KcW;-xY`o0e@=+h<<|b86U~_wxNFz$z8#13KTME*!3_XYf)rGN=7yRm|6HPT{{q$MA<2F_?4WewX+BHtrBsQ`iA-K`vO04F`PMP z!DSN{XAYKpk!e$o+!Sxl(M%F=PACZ)v?QCLY~Dx?VmAVEtC#qEdNBcs18m5t0Wph5 zmvGB-9LuXy59GrJa8)VVU`1kl#`-b`xY3}sRA2h`1XTsb|NJ%#T+ywwdIsu@e?8_-(T^d3taFG;%KZI0_7OD+&{E9l4yBn(wn{67 zTz<0zR3+dC7nA`fg+_Dtgn-j#at*-rAAv7(ydkWqm|BF zZX=-H$sTuqH~1WO1XivO`<7kZ(ILx@Vk#)6>upm3)2&TC$bgO`B)FZyT2lmzLHIH5?YbDu{hb&9qR%33u&LJ23d% zC6y{IF#p5;(uq3h)Fs>=#!hsJSS#y6t-Dw`%v&Kz)Fy=L7!x=M6aS zQFqCH{nxt5Ur&nILbA!f)?WO7YLmb2CvXV;&+qd;br=Lk@HP)z^gBPFaT_!E=Ns}P zdPG8aRUXttbLt;iZ?Eih*tE$Kz0{sqGH}Wwv{M4ZAHB?QlO<#MIStw#SlHrul5V+) zTm$i?A7Ssy5U-^9Eu0q$6{Wih@;C_hTEk5;*tgZTY8Qf;!GT}8;HI3xr*MF!;IZX* zkGz6q^VY-kBSKx9!jn?&svXpo(!YFk{8f1pGBIa^Pde0 z2pcRPiF$kw&7hd>8$^3XY~>$Z@%->hgce)*MHizCMCku2Az%i%gyqcJ^Dj=RTR*x3 zCw`>iiLYfbKOuFPwNmtS%eAap$+R|Eb}A){@JC50Wk++5Jg5ihQ2xuoIE2XA$;)3q z+tEh6I}oL{5{FCi^iZ|?1!cW{Cpb*{pTyzYGN)zNV}IML2jjJf9x;yewAc_yuUl@X z!8h9?H5nACLJkAtWhha6XQ-xWv6Yv)o`&@{G6$RS7vZOPyn|oJ{SoovQg7Er#hqh= z1B`_I*FMc5G}%FRoR!QqMRk0vQbW{gWi0(!5TYM!!-3un_{4ncCyaqIQ$w1LSzXG* z=mv>9nf5defogmcu;q}~Rk(?2sBT7IftG1XGl}Dy8P)5Jd?}9bi_cPPAsqs>hM=yH zEcK)LlUGH0u%a2LDwMvdeigDuU{0*U4{D6J!6H$NVHP-#Q`+sA?J_69X;J(NNuvl9 za;i0fTwNb0+JZDwyyzMP9jf0rGk_|PSE@Nt&!5~E!DEb%3IdVtcM4dnYKdf>Ma)Cl zH`Vi~^6NqP2CnNXt|BO|Z5b&33V)cWf_+eIy zc928jW=9~01AB}BsSv~0A#R}-peY$>0k)%SffLWD)dFn&*Ufg1-VXn~S! zo>TTW_MGC&0SIaPy`NL06)G_Ny-2?*$B5eMzK&h4Q$U3D z6?!2svmLWrj-yD&grPM^Bv>;J?H~P7;tCgg<0u|g8;d3IGkXMhBulc;@0V#o86?&7 zU`eus=O+Wu#d0FBoU^kKXd2iGTq}W!DTUP8IZnt3i}*v;a=V6JmjlF-*iImAU%7oi z-*XA=aRt9RB0cbhgPofIldgy2H6UtO+UNZvAXR}6BMm#NxScSW+q~72EG5h+9ZD#Byg29_wBJ9ERv%$RjA8u0z zcU5#Cb&kaqNX_Q4nc{Z<5otJ!1a{0OB;3KGT_#n!rN}F%o#52MN#cB5;<1l?jtKiu zg!Yr>C1QE{+a;cOE%Nb_vx=NM;21ZY8{B#ZJQ4uV3T!*Br8_2pl-9bj!YE^|KNv9` zh>_bvXCWU8W(OyMmcO75q;dmz0!N++DeiEQv*4*>JNAgkr22IcB^$BvtMhlE zlT$u(187Z35Qv|HA9a7tk*0@pNi+hl1)-e8@^3;;iL^FKciPW_i*vB~u&Gc#02ZGt z-VXE|u}`w*N3V)1Nup~&$f-(_vg@dX{rt9yP6incU zaBd4=qHc==aitkhuyt{^pDcaEB28i=-HQ=7hk`)0CskG3DOqzk>=XxQQIG70w(KIC zEWj~-_h=>im8L6w8k|ym5Pk`eeD57)2)zLa{PrPmC@((YQY#=70uXX84{+eO4`F*7APlohZY823R3aEBOfp_7b8YYVjreARL$e4|4(XJYIT6vTVwA z5fA*E5Q_4YP-6KXBcqgKB-i+T5uHsDO+vh&;5gdN(dJG7<%Ei8qIe%lQ+^~zXfSK# zAR%fdMeAqTxfXvS=W>(ffZxg;cYbae%Z6MT{|8*>YBPI4WC<*%*o+6vk6U-ugE4!y&0Zoka~HY0(#@W}ifrb-!px z+#6Vw%S^*88X~bU$VxWVllB1CY(@Mh%X{>e{%KhKND1fn{-ulXD%_{i0Jy{i!0h^D z;U?iCj0`wwWm9ijmz6{`8yifos=S>!R{!+wO2;aN1OJ>pQay-i8Wa-|?#D_ibtL*j z++D3G6H;`Dv_D1tDo8{}Y$fr*&6(^DX%%dA#MW4z!y@9O%cRkjq@k{$n--NJta35~ zo77nOlu+f=r}5HdJ1b6Jdj(f~Ojk2Q{5Y(5DYb|UIH-`TvaIPdHY=;x>H3g|MVUD- z>H>|Nlw|7$_ssihMh46HlI#2k)jJ6t8e8eh&!H@4)u=R6Ue}p(l6BA%Gbnhp-1cjAWYGwP%S}t9Yr2d2dRo%#(glppGVe1C(rxGV}w7tn+lamI5AL2g2Y0TVwqAX;# zQmN}2$RRLVWu)U^f@3$bA4O&lSWJ5Py8$d$;F6SI(7!v>{MVmDiiV~ixU~iP>%HfS z@&JeHF$7@MYv5%Mb^c5CIbHHG+B`}OD=Yzfz^{H27-ql0{uHd{v#I(zpRU=f+*UvjS4QAs zK#UV+`+a(5Ux>DhEg#=U?3me@2%c!ua~;=#8^ictG(6A7x8iI(80|NXW&D^~ePng% z6iVtVGi3q!>Z8ggivy?F5FKf~F>`ti6kcKNfeL}?%oC(8w4IMf7|!30sz&C^)o`AD zt7MZ2oyAAaSNZb#c(A#&lm1JfQgUq-V9dg#5WSDnN6Zt@>}7Jl{f!X0NC4Jj<{!tY zEQ>c%4)r(zPMNP?xQ{(*A*bcfK`+YNa}MW zRaW%z8WlZ?GNsQIAH+|f-PcW(#vC)Rs^SPuGdPa|F^9s9KvnOv?NGAq=ujOPMOMPn z#3=H|AIm5*_c@Lthj<)CMD@M;c~yPV-WFIzdp{9s34k0_kdG_Kiv{G9XA$J_kDD*= z8sLX30S+lZqX0i706!uCNoSBTRE9$5X@>?I4M=@bVaz~bjF$HZj1vTgvZ)Y(Hzj2n zca7dpDp`1of_|fdUMHZRKU3%(fgTC;#;|>mLa+0VlCui&PBdtd<}c&28n={jpR#fB zr8Ahce8qIMs+Tv1&|)dAfcfX;kfrAoA){}YW}fWr0L>c}v4|q}NkQy%K}<3ia?C7n zPH=FR9>FhOlDUE|Bkvdj$3e@X>FZxSJcyf?o>IK3hFR>75RU$oPkP!I+|3{i*S^SgTQFtJoEnmIC7ljN zvJTG5Q0En1U43v6A2jekw1GEi$6)^$Z@#?E@4Tn336NO3^X?TQ5g;c+wLl*{uOR;} zAY%ejF_N($Zzjhc88bis+%DmNHPpO-zlXyArNWPjOx}Nb?al(OI({awOI1ZFX>P+N zUm}xqwx15)Nzsv;&6N+!AegAR-^0P{Ad~CYwc0@;YfiU7v$018INLUpgT!UEstV2b zRH!|)0i74imhk2LYcqpwr+MEk7}H~E?T|6E{20k5R#n!ya%elo`A9irI%~~rb%|~^ z_rk(P7Y>a8(Q3Fy08Cz<@E+ z%-I9bvi@72Nf*r)vk~{Yn@@kHCLP7Ou9F6xrI4rc`R(8$3$6dVCYP;$lH65pl;SMl zfeY$-Nmdug8L93OsttNt?OXW}!^9sxL=3Z<=pn!hpg$=jNpGUE2M=_d^*5e}^BuSCMA-3lIY; zmB6Ac zsnraUSzkBIFP}l4v_@!FEm0|R5II7Ta#Mv1(a&m36)e3UhSe93TCaoqP>(u$!WMJ-5|m)<_8oOJ zWkEwtU12@Ypdh*AgD3^%KwneXNyl)6LX4rBp6CpYKT>(jzhcHJ7pC%P$LY><3iX?r zPvDrh>Ecgl9r-;dS-cKi{x#qf%ijyQJHusLoAz^4kk% zIBZ1Lol&JO_num=Q*Xbq~W~i8bERlaT{=B!vdu-Nygdpj019U2q6Vh`>Z?r zbyz;y3w)de90EYk0UQjhe5v#$Uq4nGl(f(?TrI4^_+Tc+vnJi=KrZ57K*+<2-VmSa z@5VpA)GRznSSHopjemaW+oiWp1ZRg+}N9kYudf3$u3whaqn(ck`cf1F*}z^kCwAOkUyrd%%a@|N#2&e^l{d_pJ#TSq z@NKBA#u~R@v%kzelijV15r__~ZKna{ zeYTs&_AEl$kBlUF0^&M-B*Jmw}A~@!-5Z5Z7rPD)i0~Z zX>hqtEA9=}W4Nqum0h8edgA(>p0skLXNLWrj4POWrVImth`oZXB~*)(uQ6nRQ8={2 zmoJq#yP#+9MM{&wY4k4Kac=j4zO7E166FEFWyh3?LjiSe=-DEXxzLM6R_0!TC{VuM zS`7xTA5nD!UyzW-x3Tew)nMP4$VGeWa&u2O;YmrbHtk?IZL>}LC_tF2!)edjwAD;I zKb*G3rrpZ4w}jK4m$dfQ_nDdDgeQ^NQJx=WNVaBaGjGZ=;YjL(k6&|^2lYJIwp(H1fXupQCfkrUl00Q zYS82R1}W|XIcpBpwp*I!xg57Hjmv1=Jy}cOjlk`Xe$q&bUxbRpA*yNz3KSa0WyY}I zMDfw5xJ2uCHFUyZ7zaVV>l0p+c@u06bk4wyI>1so8Wh1NPZdQ#+R9y2`=^YGFf-sJ zh8D!^mn`F5hIkyu_CubEfvi&OLA&IQu+OvtQI0?&or&@PkG*#RkE^QshbL)v-Icz}FW`3`N-K?hU?6at61a^7e({K4#szg*8}IqGq-}-8u!KP>@uaKh zaiEiUV<<(_AziG62nrd~6$nzaCQJLGn3!YHe9-VEs8^LV49}Q#^$Dd0eE&G$NPskP z!!AHSE~b@}Apk7|Lj4)|Ss0pr9IU;$1*2DN2<61L4@0ws{FKDLf^iV0_Tnir45Vvl zA22ryqodgNVF2g0-!-Zl3jLS$$u4Wk+e`Ha(3mjGwkd4Km6JNQO3fPV@k?4Ltojt__w3#G>ZlK*V}ma1@fRhX-=aQ=a+@cODS zS3=?Z8$)3bip(ZHtb@p;IPhHOnKLba<%ig{mKW#jIlGVTQFkaD!5O{xwhWK@5St90~%N z=YycZ_7OkENAF{MD|!UsdVjiAd!C`J_o5%ljS4@#@Ku`(Crfh56MlrxPh&yUMj_{f z_pKl*4XUx=^+A;7ry)PeTvpcmVMz8QU{tKe91=U`a~QetuX6@e<-}Osm8^9g0ax%mYCThvX&+qB-Tnt^CY|Ho9c=)qC$F zb0=rWa^i8esCIH}#;_`0=ueL0P7D+j#AI%CAa96e^^|tkE>>9RRA;BOf5a-Mv_F_B z4R&dR_tkyh|PqimmFxWAXsrJWJ8QvVqAfj>e=j@zmMB~kVgfALD6GUwkbSAu9 z5M@PUPY~rwEfd~3e$@B?MHK&;E*YSZ@x$tw?*}o}{=c1yyTjlCufHlh5DG(Uu~TX3 zQpJyxN_?7SYCCV8a3K3s=26aDM}>kIgl`RkX5LEpG5)-D@9qRD6X#zK@Fz~YLmlk@ zgp6#1+ctnQSnhw(^OyTWh`}DA(||wi{CZ~-{v6-L^~*-)###b{mA5t<+ml>eg%kiX zS!h}_hK+ocb?p~-!Ma9vBb=^s;)ymk+?4Y#S?Jj{xMX3m5B_sM({JPwBY_7$Yk6AjVEx|1)CcKJlIDULJLFzvj)}0=V^dB zIe=-E01mDLU^fClYi|Mpcy}0S;61j^;^wC`3x?jN+LRVexuG@%mL9aq%lRpjwlrFa z=%9||ik5yDf*Ol4!EZ2c@tYK)-lViqcmT9JtPaFIMfCd&qE{i&J~25#^&TJ}>d(Ja z+aqHT#auM9=c2?Y^fj%Y+SrmZhRe(t2f;~&K9MFoN*da~_pld=9PN;*^ zA)Fp2C6!)(^oE2n$_Kl)-VRc;{wA5C>I?y!T$8-vSyHD_NTC3JLo zEp<%poybsHU_6cgupbAl8H>Zl+1OB}>V!*TH%$BcpfI$W4p3G#*ACfX2TGQd=4@2Q z@{cl(!vpgS{r`|>!i#d<0hBTEa7*CSSu(fz8!a!+pycyK1E&p?bj_n2r*5ciE-l){ z-ZJ_Oi^Hp0#g*2qQDdd zrYJB)fhh`1QDBM!Qxuq@z!U|hC@@8VDGE$cV2T1$6qusG6a}UzFhzkW3jA+U0IznZ zaLdh&NqTOC?me@0GF@+A_(a_-k`Bk2i1)$z={WlpV)b?$lHRvKMv(>@n(ebws@;0FOF-J6F>YnPUF{UKydyJ^~K)NsiEJmb@Ux0O(2Gm{e z?mgxH8wUlQWpeV)DIOK|@qhzOEgpZzMI?3bNPG7@_kWDXQFZY67JTGz{XCJ4^y2#Y zHA)Wl@M}-K%G*z8!k5TFYNYfIy3UYV-gmrL%RJ`P(=K<5`mHs|Czf8N^N!=^KloR# z()G)U^zwL_qsPmf;^C~E(ebriLak6oonj)ScZkkXK_|ZUC?xEt2S<4fr(O@P{bdE^ z;%k2g%KIqJ`L(9vO*3<(wDY%!K_mOUTTrzg`;p)(G%pmK^NbRse{sP)HjCQVgJA6a zZtw12C}6nh;&SX|g zL1_#g_`bH5;O%cmqLXC3h#pesWE-zpk*E8uwE~ZEUN1-)5yoPA9 zL4HvSg6JC?Z012+-uj(o92n)d`IHnhB<8Wb+Rn*TbdIy5&Ou`R&S5-T{`!*iK1fZru7$bbzxPB`{P!sL zL$gD@^Aag@r3u?bw$2dKwD+HT15oV*RC}H=g+s@@F(h30jQWK!3D+s#ekYK`{7?yE z_xd38yp``Te(`31LX-Kc!yGs*%=*n7NaH(iJO&|M+!}HO=B4d1Ai=YwXZ-~; zFDSW@T|C^LWFN?Pu0QD?Yj^glK<4CJKVHu=z)$Bcr*&dj<_BY7jm#94(B*DYp}WV)0;PM&6|O#U?B7L)OOWtqQn{y^I0NtUj&s ziy)2ku9YmWmvzxZ(#GL0b%SiA_ie-^8^1e(>GL4YlMZh;a5qB^$f1F(cgoMg$VEjw zQLZ+`*FFF^BS6sH*bVUz-_+CqPuE#bN*VPWUv-G^@BM(ohpqRO&?bc1NAxxgxv93h zoOsKh_l}h2)dCb({OE#D+3PoeC31iFPhblW8M7c~q2H1{5yad@k{-|6Ky{qdk(=)3 zP%7b$fapKhSAw|+U`l@Kud7l|W+f=;mJ>ga`lRYEd=eZ*^F}s5FMRV*74^w7W0AfV zRd3r~P&$^*s>x1mo{_E;v_?2oWwwC z#ygr*x_o_iizqg2kv`rJf!nh~qo{W&*dmFRRGlBJ;IQT9Y*}bX$l0>5{1NrzY?*^r>WAe)=cj;_?@ixZG zXYz}8#`j4keI+7US~%X+hR8@MmTzjqsA+1;Eo@7!Ou9>(a5M0%m4#ONfG3ZhJ=ixB zIids1JH7NceBZ(Gx%(<_zcB9)iI5C5{XuzM9-aR*3cCe!4Z{a1zc4QoBHO-2euta} z$i46VRN2v=n)jvhM=(z^mTaDgj~Hp3GqPVq&Shc>(wm0+## z0{$Z8N$8rV@I#Q@1la?Sj3?>0;@A7?6T*lJF242~hy#_oF`jwqB6I^klxEzegqks% zV~CX#Bd>z**9bJIEF0j{UQYb;HS{#{baJ3|M*8H)c27C64tbUF=R#dAQWfS~Ys5q@ zb+B)ja_sI>#yJs_C{;bs)L<(D=w*xp$fE%geA)#Na%wRKg#7TDPzzyxWR+Yhhoc30HAMXGj)sLOE)OI5u@4}! zfq0-}r4L16&7fPB0eYH47I*kS^xz|lUr~rU7a(1P%Lgd9nWb+El z3W`PAO>T6|YtLr@jn%4qa~iO!9taGgU3g35|P@4Md2m=eLyjLt&)<_){^ z&^+AceBT5}VU?y}6e2N(tS!San?{=g>OC7I2i;ql)rgbKoep4>6DPl-+-jzUzI~KM zhoIh~MB9<0=QaEqUrb!pS(n#9?(MKi4R_37(5ys7OBpr6f8p)1iJkF%BkvJaoL--!uDEs9aM1{$a0E{@q_;S_K)Qu3$D z%Q8qv%Lv;`@m%VlhXm*%9z#l+S7v}xiYQ%%p+p3wUxidi!Clx=X1E>qidJ1&P(h!7 z-oU}oTUv}DMibf(tfg5RYGJ5V7V7)+vxTpb#rkGo4isjajt|f$l5c7&IVHIf82~V5 zFuv06(QaBVH}T`}nwgstGYZTdhFKwsMXziE>Q#NqE)L-j1Y&~AKEx%)dMLF7Y1Row zFUc#cS|3oTP7V)b!#|U}|ChNl3%tsSmD?%@w7Jr46BdibKICBa?2WF_u*E17v|O1Y z?zmqWI5pgkzB7+nr@S^h=1DIM0atn?#Sn%;Fk~SE5Q$18pGZ^bl~k_383qtZB2n}* z7uWj>7P`=al})VGgXLug!;LTa9CzkP_t{MI*cm1z9r~8b)+8QSbwUhK$}l~=PN15^ zwfxFm`AQPF3CznWEK+(FcG&|kCrT9F2BD@R(C{`0zaxEk%>}v3iF=B6GCvnal+wPM zYkYu)4gO=e$AG~LcVSM^^k;>7XU!Y*Xj-=iIJ<@Tt?XK z(n4gOia86*)snn5fk}N-0J8dS7dLbr|7WUlW;h^b230wx@?CByF+9|Wb&2Tze?r!3 zaj5qZ%k*8*lQPCkqkymzSveik^fYoTg1DvWK#9fb5)&4l2i_pn#P4q6U3W7z5_EGk zcYFK$erV{#>z+XSV~A~9SJh76!EB5p8mq8o7W~R})vG`rkmbP(pv7@ex=gCE zit%rLrzFJm(vCtbP573G2^eZi?+T!cokyyG+WN0QDis}8hQf=|mW=E=$4vO9UKwvG zD>_A9R;^cZ+xnq-4zZmDnvzC%^*s52D%Sv`%@~};!2mKD^(ek(7ZMnmHcBQ{H+*GO zBhjsaG72eXmC;aYpp1qhV@4U(C<_`|Eu>y`g~;0y#7d1;8TBDnDx($Afif!5fikMM z90Vrtl(!PAXb>P-Rhv;plclJA__5y*JeZ#X`CzSKwiys#b1~S=HUxPE-Ek9sf?AN} zp2tO4WWko%WqnX>rpX#Hal|T7ZH`|})#kbvsM;_~gtudbYPe)VEU4My*I5kw)&q(- zP(^pOeQcuAi0a_g-J!zsQ5fsT+kjJ~@3I#wxodf_CKOwC;_p{<%7Mb_E+GLqErBg5UyJ+Dt7$-=0^bwMM!=~aPRK` zhWy#$HMX|Ac?}Ww$yx}aw~0L1D7o}zxh`t84Xa?Lx4dHGXF%;K9aK9o*XU8rVPT!L6*V%hCQp{cHAo) z1nw3@(8X0PpzQT8k-|Zt2D9L0oK?MW& zq?dOUt9cUZktlmm@lo~WHjJ<^GOI*mlDI*Lq|BOtULFbM zMerbd_j7!80R*?C*6^_1=UKxU{a|?QS2%0MsVE%10OvW z81TqCoSPiUk2@Bn3)z3DpbJ~r$Splk{ag~r#eSQ&Jb{WJh@k1i=#Cq&nxBVN@~09} zPL!YHTntQvTkxt=@!yd1uq;$_AKs%;cLJ<0fE?bx+=`NDNR`3h%tvLQC4GazuT9HS zz`#)*3~IcrqF6D$W45ssi~DiMmH5J}KfYQnd!M;awb2xmh88IZr2+S5Lg+R*5RCRMx(m=YIkQRp^VNgg5sD8)-3@i^nfiG`1m6a3E{ZioWYvE>mWZiMc2?DiC zz(C)q7`YQDgFZ{LD1OuYg)sH-)7Ted40*-GH1y7_NJ~l@*Dbv=Ur@ecSddXw{Axsu z5i%9_Q5o#PIH4}Iy{Weqiym%e?tAGjE?9Ft%JX08ouET@Y-=MHV0_GnpLkvkR!q{B zcV>?;S2N4-i~lIJ_{~(pVOV}qxg*uZ{OaOb-EAy~f3~`5L3Pu#x^a-(UeT@9ZIluU zp5II*99Ad4sLrk5x|>W4|Db1N0 zw00uBt^9>sNeh2FBfT*lqkZ~#WI6HaXF1rgOfDy`GM}&=uP~oo<-{fURJ&UXj7LSG zF6w<+@GzRmR)f?4e!(rh_>tw3%xb=oHzPw+m5MFM0pTxV$BfoqWqjZQyHYa-5p-Th zMv`~k-&EXUB*-dO0ZkaZAALrf;FJ^hnNKv~PV`UurTJao4f7RLqZn57M-eH26*OH@xsig-L0aG|D^L!BDImH~2_682a5+jTZ=vb-$>iguOA}3WBsoW34Iy_cRbp3?O4XlZw3YQb7 z1|i99AiWG~IoEar^6Niyk!7t}m>6KgF;80j4NDM| zaA~@53wF&y)AeG$Xwq}u#Y<^aRX`|Q@vMp7hIVW)Ny8OA)P3Mt1S5i(lRR66>;~OI>Ss{qS8_rfy}SfFR_x z*C$9+o-0P3vQ;aqGrZ}Jy7;<#28OHoD_3w22zE-q15b}Nd4IYdWtUCb0 z=3=KpT~!c1YO2Qqe6s36VpIJ_0L0XafQW zl?@0W{PT!P5_~g&@D6|Y2pz$Gbn&WGJLh2OOwEcm<7;xEm?gv6J41YX}hNtJ#@jLJ*xBV?E_BUUvR_`TW96qz& zb3P63D<@Dbgv%1j2uRG)CbzIofi4)ktg-YFDWIOphogjC%1@ND<-`n@MX^pE^ZN zz|bJt31PNQ-525I`->-Fb{f2oLc^cqt!&|M;9pT8WF`c1^vzfMLdIG{)z0TnVJ?a1 zR!m{$R%w++cGOvsa>QY$okIK+42ss7z@97eR2!smvKf%m>POG0SP- zjeyOeDAkrF-kx~S2qK<%(CRtdz{df(J?H%kTk{v73+GcsnxEU61kcSxy$eAGITeP(w^9ZYT^eeH}Wi)$?0VBW&v zs0Bri;MKy=du0b9GnwfqLIx8rq_n`P2w+Sm)|V5j%cm$&MB>VU&`j|+m;ebSSp`Km zuSF^9KkwpNL}~zi-T-Q=0W^RZ0@8;_Ul*hI0??fs(Oq~~>OPf$&}Ddmzg6MB_Fbp| z2O}G4l@=Li4(4&_-HPhGPhiVd1|?Po!@}$)ulmi4xJ22?heHrthkE%>b4NQ7)FYQT z2(#x+G*YuhjgP=S&a2>0|B8rYL)K{Vqti_J{6Ln?fD@6Ne-an__l>D2hQEaGqle}h zA3gI3&Hdj|h{gRaD0ivAGBXjhqg_LA)}t0hEH}b$|76oj3+F*94@4c}g5qO%=nJ;Y zxQt%5nd0ms&wWi^trWU(XfXDp-Vvc#x}!3-$D0$1O_|tBy`4g_^nGNftO0!Q_t?wa z!0tkqq)oz=Ou!)qKViOsbCw4;5kEGASZP3RgrBmBD*Y#+m~H>~0OuzDQ+kY7yt#&s ziwGQG;0}&4t9_Hw=SuIIZ-#rbnPcU^mC@o-Dag(@4@dP~Y91sW5A_5=+MW(;%?dk73fnY1*cw8B-##l` zY7rRni4*NX2Fp?2(Kq_sE%7rY--LJhm%{XDEFCCFj1O!ebjcH(761mAlZu~|Xrd}r zaE#0ZRTcaE5b-J}GJbpVriBNFV#vnj#OzQEd#;>l48=GS^UB?pE;1@v*$ua{G7tps zR3Q~a!A_nMSpks`b2&{bB*g23hPs=GSVm?+(Q%u4jZ|v^^c6 z7{&ewKgP%Y`CEMKXEQZq5U5_i*-gpZi1daY@W#7k43*?nYRr6{2=FXf7Be>#tO@VE zUy~k9g0-tx;&5py<#Y>`*VOun&xdQ> zEvR)*)XJHw&I}ur-js%oPQa=rfFtCE#$*TaU`7BsHlzaKw^=>nkIK!r9e4{}@oNh){hCTb@>+wzgQW2{U& zVj*n+n7@V1wlHtj+gUx`Qpl0g*X2{CJv3i_RG-92dtZ5QSMimoI*b7PCT}m!8=~I~ zr+nN5hQKML0?jh-DC1z>W#~R?BT-I^!Xpryln!uL^X~dgxI;s1^e(8qCHNPzB)~cO zVHO`AB6zI{bqo(NQnrZ$UJK*f39Y1U7mQKT4+f!De1ceML?`iCy*u89(q%onwJ65ujW@5aqw%bU|rL0P{tJcL-+}TjLK|^0}aAZbjHq5&buR zhft1XSBNdI%Uh0u7P(EQ2ds4qzAIR3exa$IkW1gPIAmT2+jt>IcHr0tInM$>9Pv`fVBRJ7Qu$q zVR`6M2!K;zFeY^Y(JbaMA#}rJPB@v0W&G|)F(YCdG{WLlfR0S_DJdO2xz^?VS|<^) zi0YhXirk4Jr89k+RAJ!;SXd)s2#-p00wtUQx{N?|qO71(?NNtLVA?}cce~RjTx?&U zCol=4hw4)993vvTna^Q9ED%Q<-32IhsadTbZN+GOQ_SOgRU6ihuAt9c(k7tDOajQ* z4Q7ylr0 zQ`uwn8bLf@Wdy=yAIf)&3Y%SY>}SFd&bq1J)d#Ef>{(*L-~ zjOhM~5nb7|Jy}C8T!XJdovdpQssbXoL?mWp9)|p~jc!59APzI}+#~oxyO8FSpK7)W zRL3XX`MTCdyAfB$Vuy4)x3Cn+Ls1kOnGNmSRGu zCU77v1eWgdS!j*y;T11cbQhum(Ye?yq$3WI8R}pEXMt*1B3hKzgfr|7T?@th4Erib zs+S#9N;LogY+lvKe!DmLy_o))}Jga96cCwL+inWRKRD;=6&$6bc|9#)_GZ z(GzH`FAki5XxO`fBmgemhF-Aqr2<-n=f9UQRKDj!^~cG9U%-iQRkc((~mQ5!sGs%oX{qz}1Byd&~s_^`xMpv0%CK1Af z<9*r#XK{a$Lh>t&anLN?;9qEYIlSdljX*M;*$E6wZ?~Ezx(X!4WZK}BpT%Np zF+0ic0$TpaQ%zSFzk{_d1`9e^h5_X5>JgE*94B_|5gtDq5D)$A=NJ3qXFy`~Fk8j= z*@y%)e%_86!HOBHpE1ddAN};lj|c?pql(P{ZKzVtj6^Wr0PG~;J_7MhhpJnA1YfjB zeazbl4M!`XnVpNO(}-7NMOqXW%s=MHp%~s}C6``)1UL^Vdce`J`;m`xsVDch{qY!MBN~0*vCD)-#{f<2{Nwmn-|E21iX0l9y#}H^Gz!zk*=6 zCaeqC3DPrE%v4MA@|f-rZ)d*@_tjWvwib>F{27LM2jG_XRw^ORBYg z!kcCi*8^oH>cK~x`zEsTMpEyGJ1gxEES>kW~K-NSXnF ziZ*y$`o@q#v=y6@8=;p#q*n|~ihU&4-w_epozZ3>F2F-H<^>T8DUSF1;LR z;qv4B2;DY;^3^m%%?rJcKh&%sz|ltUYfp!3i59PiS+?{wO}meOx>#R-G$CZaZ|T(gm~lzx-?*dz{LSNA;C*5=DTuy{TiL}iu?H`b0ZNMsj~f! zRt+&&POJ$4LF9At;n7{=WYlHBJdBwhC&?w(owzZbdL)LlA-1x&>zU*7HX zUcCwHNF?zBF?ZPQD#@LCL_$WkB#k>=KpfdP);{tJnh8pav?}0^`#(NUMr5mT?*;C^ z41%$8;@3flhjD%?K>~UU0HF}vfPHPn=*v}$mceZ!QoFUa8GlVZg8{~tdq6nE9WE*` z#C4U-YlL+))=zTP)$o&?BNh4RlJIXF*J$x4vOoZSsCy@GuGamz zx%WP{9SF#72OusiG#6rMNd7_hv0u3h#;l+9Mq3zbuwB^79$*altE)OFKuzt8Yb-Q!onC2Sa(1BuL|qU`ZZr;N#2ONeiBP&%Ox}mlYHI`q>_FV5=$cSYyOjn;7Tl5JEYR} z2>^~1hG|` ziLR*Y*#~qrL1iRGX!uR?R~RxW?MPbHRfg;K2Lwg5D;Y0*l!6{@OJWg>8CTl}VbZV@ z#{tNNKQhqn)lv&|D8$#=nFOgZ??yjyBWjMX-JMWP(MInoKlLU_mCGshI=Hf45z8u? zybt*KZj*d8U|J|KuU%7R$C!fuS0ER0ggHfSi86Py?sFwXjMZQWH|9;(lE^FGSnvrI zS#A4rQIq$={X!DI{l4L+n|%W)i)MObHc#L>fwZ2*aG_AkVaogJS9CJbYS#w^QoLXh zhvGg$9#C}U)-(3Axporn5?_OG!c9dR5jicsmKq59(nUz9kRsY$@yA#DKI{UZ_cZW4 z38SRKROvm2N)3JOlT@A-6726+o{Hbm)R5c0detsL6#C=?d|7}j#CAwsUeA|z#fG$a z^(`iCL4ox2RTqt*$$W@nC&881+T^y+?K>USFJ?+TG*B|R)5;_K3Nu=&eZ}t8QD?21 zNkFWw)L6O;1s6wp`+-QPmkmo#;BcpeI3VDzHw30W&3ZPV)JE=%}J+>7${g6OL)U%}i;>jBQrhca=FhzkW z3QSR8iULy_Oi^Hp0#g+DZ&85m0$6az#CP-`0Dd^?`k0 zyU5kvemlwgtTbqFf5oA(RLml2FIOLg^+$uzfYvo$F!t)88WRxWhR3f%K?nOE34t|Rw@es3$xVX#M3T*q{vvEO6ga5TBO6^PPVCH^7$nTQF;iDCN`TZHuZ z#l1QM#6|WkYquL;y+lkW^NT++<}B2Ud&{4{=+(ML@o)vOF2T6ZqeXf)r2r$LH+%tJ z!%h+<32y09@G#fN8v+Z0T7aZj^!Y+O{h8?Xqjwc`;Ak9(F8cr(ZxzmE1{8=Ew-Y$p zDXllIP!rw*@2{-rapWp?z`krSMw`Bi^I@Lf`W88Q<;imPa9|_Rc;`1EAvB&HOXBZ>>h8Wqol^Adkh;J^Nml*6SNz7~?j*V&c zV=SCG%$xCs(9I>(Ca9t@FD^xI3yI%#G5a0xyw87FzcSug$c?PH+CQ|d=8rkcYN&$z z4JIQ0^j|0xY^!I*Lq0jlyZk`E2s%iLy+F28iy16s-Ut|{^njm>fNw;UMsQ?2wMuwD zI9*)pZ!l<2edXGHuVNa*HxJ>DoT)7*ZdwU2s1}ZcJTGte*7o}k7{1>xOlHm@;gw?! z16p)@Sq79!8YeB3g$)shu@F^G91Fw*xcAGC0>~bQQ_)D>W5LE~jLk?QycH0K-4!$v zZowypy!R421PEbgyCv~jI)QESmRZNVHGzSkTan&pKZqRYvaHvPLBg+$_ks6?9*@s> zN1!kL!Ibf~fT`)MAg=mZw-7j0q`kg#NmXf#K4Snxoff{x0qZ4bf`jRerMC;h=;2m# zd~Cw=hy|O0-Q6DG4&;L;LqHi`P$dr-03Nz4Wod?Y8t{pNkaEH0M(15E9>^1b6Nu)p zI0Iuxe|VhfMlx>!B$AE;sLlf-IL?m4g1jre6XIPOG$c|gNlQFCSn}~X+IoqM%X$MC z*=)7~7oyCaaPwo_>4t2PL7MeG3tA(W@tVc$L|-M)LgJ9U<#wVo@Ka7~KqKh@Pp}68 z>;i!03n4dZ-b*y^=Oyn&eqMQO>-1sJA{V%^`s1x?D_fkhqhCMPCyEmg1s&IY-HL_4 zpcCwMaGhCk2J5+YHQfig|N3+leEM3~>zf_J=lBBD9&D7^i%F6XL=0;NU5^$(CW6gt zxdKTolj3h0zr*xN6H6G`;Jo_i#3n7a!v-6OpcKcRY2YN0*sbzzJ@55-y36~~8C5*} zr1I&aR^jPO@q_mjK4y8k%R3!lEl>YU^Ar$dKx!POP|3I;ef z+eGr28x%OeArPPJ6x5RFWZY-MYfF>GFAJ;CwE*uCz=4fDo1WVq1G~Z@p7GcLofRZB z%cw>|x`V=PiRKdUUx&9Fi`bNu1Xyvwrr@C-Y(WDsDlt^X7!XNMIfh zUYDZ=zAL(n;WyUa7tY*qdym4Q(Yoz@Q;@KO_HLpJTiy2FU{l^md!ym@o`%z%b=o_L zzj`OD?_y6os^KB%kl-a{LgNpv7t~&l;m!QrNM8uoMz-A1o=$2!dV2pLfh`vn=s|&< zgZS87@Qvky9t*VNU0rf63D9&3HjQ$nrPbz9_YX^*lQv+WOp)ms;!z9h^Sl zl>6Cppq&5#GiCo4%ZDADHAycQp2Y2k>XG!hko#f^c(x|=*76J zG2GIkdpCkiHIAn@7 zHx_WGCUJr0<~K`Iji>a^reATSH!5PGzMPDk{*fzLQ6`A`{8;u zo&bPg(=70(YsV7)aC$}v#tUi8mD$=XyKd%9RO~_5y9$zBB#u4xVx>)$ zzS8{wcsznXNAu4y{Iei1V7T7I=~#mCRW2^jTraNG`qxe0Z00qvj96L9qq4|IOvIsZ z0g-<1LW(dQ5D);L!4eL{O9Rguql1N^hLmR3u#39X8BbpjW&e(yY}mMD9ZU-qv+yZ9yXEfl;#`1>(vwM_>AFlw8`7*e6no^d8_ zw1Y^9&N$p(opq6^!Oyc!km|O(`B(46-Pw^pesytP{aF`dAZ!p~CN7aY_Q;ak*pIA5op{s8BW-;Cj4Ago|__54SI~Al#)+w|Nj6Q*o%ClS!vSVz3(UFV70< zC(H8CPJGP|fCjjdj`|gTb6D`nL+0_^wM5jfKx}nMlsC6l>1*4o1Lp?z60r|dEHXMd-bB^LV1p7(F`B^#Bu3zPi8zO;4v*d9nw`^(JjfVz zNYv?!QE4*NjSz$33rEg=Uq4DR9z-zl6*`i{;+`lB2&ypsE5JE-gD<4W*!CuP*%fAe z_Du;RJ}-PcLI=a4j@hD!;jXH<#7O@!~WJqfs z;pfSH2kT=1H0g-G4cef8mOvYoY~xZMIU}XLf?Fp;IS)q8(p+0JkVW?oEpAG+Yg8rJ zf1QRdrMq&KvRolAc>m?dB|j&g5K)#?PJoH*AW)Xg+7qC>r7mzqzX2&4OOFRayj@E} z)87U3K7bLjZfBLJDQ{nqe&&`y$2$_UC`y|pbt4{SEF?bAY%{-xWtc*`>jar8I7(p} zjiLA2SPZ`~dDdQ-ZT0cGPOO9xTluE;k#-Ok_1&{iLVCp!;y(o`TSD^^j-VkNi9Y!d zQK?gt&dIg>4ynPSM3P^?a#W^|EVVM1M&xJEq{$#w3>|=yBIplqf4deFTtCKHgZ(tz zj`8JZIusof5LH(*sMj{7!^RE;mIqKVet zTz&n!rTa`bD@H2%BL_QY{Zxu|9+qQOMhpHTPCg>914hPyNLnYH z;v!i^T`TG<+nM#cl`1Azw78e#(8JcaulRg6%Uryn=d=gdZtfo#zwn#X2;vl1qk4Z{76!ug`T>${nA)R zoEv>#RdUi#cA0!kRk8?U0WQh=R3)eV(o*+7XH}wxp^diZ9T|t&X*#~}+lB6B5;&}! zc(kIc+8x_AaGc|Jma$+s#W?0nmZa!Wu<#jgJ@RpHmy>h^bXvXB^i|$(mSfYxcDhkc_=UB%ic&Q8%q>U5lCJq@|}WTb$RY=}($=nuEI2 zNKA>=o}a)vsc|}mI#q!DmPPr8%87%P?#*@9Vncytu=9vxyWhDEJlT_eTUlp*QRlD= z>@4CEb@s3e7!^@nI9jMYIEX>So)Q6I-k-6a0FD^TH7^>eoS*tT zMS&>_Oi^Hp0#g*2qQL)mC_sNaTIyn0*7nR!MB?}Gs5WjaGI3`k&SfOhTd3kqn}9P$ zsfjm}1y+xM9$|RNJ!;`KBhJDbrB3)d@B+yCCGd0GTDg=>_U_4_87uf=RdUv<8RJcD zqGC_S2hCymrZy-vtzkUF<CsMP`!wy1J^>XfVo!l6sWT8))e-o<63Bb zk#|J8*n7$_x8!O*Hk>P39AXZ%x+~HP^&eVnIWg9$Yne0);V!C^Eq0;DbBLOGJm;Bz z?HSQMl>(lv1GsYHOhWKOmsG+dGy%;8Retu`*D~;oa?;^o|2Gwv=zS(BK=x@reX>jHj58tK@4#+YY!7MA~Eo4BV%6i4vZvOdKi#c zX?*hxU3zE?BEG-~$$lcT14V3wL4prRq!CU{?cU6hp>cy_iC`~MC zn<$Ilj2hE>ami)rbRd|-lZeh`G1^v~Nr1=|OFICw3s#v)QY!7;b~N$e7AHvb-46ak0 zm_Qu=NxpHXHTWJNJA{Hi#5cvOLL46$Wg7lT7)Uw8LtRKWfO`BSH~KWbeQ(FVAN{Ht za8scM2Sy`ISS>05IHlzm^-}_@Xe_;lQ(0vS7x%IJsXfE9#XS)dpo89*V#90}l3V*!w@J>W6Ye(a2dF2SF#z^mxzKLD%&=dcM$)nN9@`RqvcNh!q;QJ3~_4{5I zp9N#R^oMK%%Hj!A3Fc-6vs*Qo()3~syGBQjVmSM*C{`Z8;3Fm$eJB&s4zd9e`GHnL z!Y+53JdDX^U^ixv{Zi33IFB?nykh_@kFPxz1I8wTMKEskx`l@L+WkXGy1T(7aW=;E zBDaSkbMwrxU&VGFv(Zf?wux>DqNAbc)}6-$wPAU;PsRca$vate?Y&uO5icrX$_7Eq zbU9mWG5+5{%Mn77upzWEAu3i7s*k*{N)>ruv?}cpYz+<%br@i14&l~qj_pzQ6t~52 zK!M`fwlZAZwB9Rh^#5?n60zRKG zZ&!Yp8FUcLwfsebD_%>5mlSu=!=(@g2fJ0Wj1RD<@L#r=@l&zIOcBu(x)20d46~@p zgL2|aC+`h$(ud17Km`RQAnuYe95}5RS<0V^T>zH_v$)z+n+Z9HK`bq_13U}8+D4>k zsf8RcPU0zVBe#s$fmC=?*zn{-#cX1y_x`h$nyFy;Bw1OSjFwz}3cr(h5*t$OYB-~y z5#lysqBdz1P8(>h-1hhD!+=cBZ9hj_?0W{6Zj_7|H`DkwP;=4<2;h(Yhs z_fz!t2^LTrkaaFFhh#RBGWQtwK_12bdh->+-?nn?pCLaXA}jq~Es5*;gQ_}IPJDJT z<}DBmlcD^PK$kFucMxhsl5VQ>!HZtlsF3*Mt7t)C)*LjXoH!62j=r^ulW%tct0?i?bSYJJUxcYY(+-srQ_*B zjGm~w^g*}K5o-YaC7fZF$WFugCuz%FvPy8h+m{w%K|f(V;W*2Qm{zbpxjl|vP% zbeee zMn)DA2~#&7W%aLYUX}W zEKU-e{=k+hH+p>Uk7Pt8zDMSfM4+b)ftnZIjg@TqO^U zzI4Ov$j6$koPSKyqQ6BfcGZMIb=koc9~y51SZ`wg>D+LXSyOTn6!4uj>8XnHPE9)c zJp`Zoc9rnK&2|l>R6;%N*uN8h(%O_1Q{1}!V&zSher6>Cb+AB`I~djrUe;j^{*ftD zMZquW_K03G!p%~#8A=$0&Ymdatv{nil&1jiso(qXC_1k-fGlSlF=0&its7@+Wo6P&q^EuVo*$Q$tzE@!l8iNd?MpLjQlqb=bqtR>B1xA`#gKSQX88KsSq z8(*%L10J^NxGXfLvshok6gvyWWMmZoZD6ImHK&6Xx$V<0yTqzPqClop;LPni3j;QZ z+%>cKPAd&Ai>xpAl3 z_cfFa+b^$Mld|E^P&ksc!6pmnX1@5}he!9KKR;%Q0o6)F3j;FH;|Np#N@z ze#$GHCK|;1gRCHb)}1RFlQ5?sxZbLW5H>?wzzg1Uhhnu~NX!sO+6ali_z1NEu#=+B+<3l>xuls|jTlKa=;x+*tLSWnBJTn=c z6RtAlJ&4=8m0NUNnxVXpUnP|%aubU7g^Q-WYfRB9akABn=GVpcdxr?6-d>I9@j%ot zhhC-rVGcAvtr%$5BXhajwF?sPeo+j$Do@OV80+2NM#A`>mQB@FZb@VK{8wpJy%8;_ zX*FqYqBXJNfOpEp)Na7;F&}7Y42IQT}WGs z$uDD2`pGPk>T*@{Jik8%$jW(V&LkQ!?Kfbf*wL%`$Ym_&rAzyi_F~MtY|PtBGfLAn z@yr?nP_4a9gmk&+PCZL#Aqep4@kcUGm6L^AI1Mcd+TIaRC7|BPFaZFqkpJ zS7)A&%%wwZ{o?i62Cq-NCC>KM=5Ip&;?-Oap;6%d*I@=(f6@$y6G7q%%4>L&EZc*! z8MevJQaxCe$_fay4!xa&I*?h78koK}h$0bd*Ez8VD{I#f1~(pz@Y_G_J|Cl|_#b|1 zen4`fI^meCF@XGn&14n1kq(yby?`NDmdHQC7e4=xF}z3cgeeA3BVV5K^N~MXuMv+c zpb(c7ZQh@u#*S@m!ndv2q4T9v!0} zRcT!Eg}MvyZK|pc;Zr6R_6Mm#2dmD})J-r)UydiP>>TaWTj%IHxfe-pwF%VCE$8xJ z3*_L>`8yS=L5qDjFmhw((;T#GqA3_#fQB@9uNvLf1Q;n0qiN*_2`;I85tDDDOTbCI z3FDs~7Bd~z%qWIy`m0I#fZf$xeXQ=~I@l6ef@C5vaM19UY#((b5Af}2}77U`uiqB0sy#BgaI^R8ViYUpmFO|YQH_X|^#m`ysHK$6oipBUqiW46G74M9)7LCr0aO({7HeFkTNXZ+& zhC{?g!U_riF`j~P31`P{YyH5we$7}npq3M_W%iEHPVvsd>`46T z8(H7lFX1noU$MDPh5^D@!mPWxqCT2MW68O6_dN5dS{AhoCL)_f@4 zT}qY_eNz#}6PqlD(?bohlc08@KR2+vwb*RY87o=54sy@7a(qB&gnY$Sq3GNQ8{W8b z7JG6TQ-6Wfkr?4!IErCvY?7#hD3Klwqz6nQ@5K7gSSKqQwTPSj9Ss^+5FJmwi+;{geVnkB?X%NS~r&>?6EL%T{S!aed@ z6b3`l+W2Uw@y{dGHXd@v8h7StqeF*VZ`Ff^N%T2(|DwgOg$g$9sNnLdf)|JI39175D`GBX5 z%{Vh-Z?cSCH5m=O;X$@vOnF@#fuqB)6vq1kmOaQOgY#f2tOXQ8ZC4%7#Vf!%wnF8D zh7f@%e{8Ci8Mb+fj!hjOSdZHI&&DXUNbgD;VF5r!K=1X1PBsuah_w@+D2kYTCxUEyzHhSEjag^f7``qC*ZL;=)n5N9O za|;)_X70(YXqcle6iLJJnmF(Z`2&5BLO=H-37`nM zVa#YKFh$d_W0I zKVXId#$)yPIb$*frIbL@2wh-0y1?Ay$zXx$m`a?|qeQEUv;_e5NqhX0K56HpB`}#^ zLN3&bN!B;Ne%04MQNQZy27!Q(?(zqa)xwK7aZAK+O4IO#;RTIIY`hQ*vT52=*5i6e z75zBUOIBQ1+Ov2MR6JigqMQQA{55+C^_Si*N zmsu9bMta|3`XBSOl)~JGU+*`^z>5INwZvIOe4(5Mv2H>Vpn}|{C;}p(Sq9SXw4a8g z9rnndohw5YuZZ%5B*@xDX~q_MT`$$17Nx+Ylw~y>8yn@<6gaG+0D00W$#RO|AaJ*% zFi_a`SS1RblcVrUylILCI3S9nT<*x5-bSud;J%a*fy*wfBXB2?w_sD{EAly4t15MX zF-=st?T5wJo**rw7*Zhxx~Q&24o`c#|K3+dM6*PkKZxBxGGdG)rJVT1K|*G^Ohk>5 zR_gwN>>L7}^+xavtuGldrckIt5K`eI@2_V*;xB#8NXY7Rg{5uQmOvWWhNLM7RsWL$ zeP(Om!)QI1+~fql7Y!DoT7@qWK`up57lwR?FbJxH6rwVT3=WHm1&uZozo+&renV`> z#$ADwu=1$i^i{~-HMp%+NFLp=%^#K#iCH6iLE~a+z)F!kH1a4#wI;av^)z(`!66qx z?^l=vh`q6S#MkU4nIr=4e@p?O%j*Hc0QJ6Nig$BFcKeQIx8rUv5(Xof*H5UU88vO} zcz@tv6`Wlx(&Y=z&+P@lc}1OaMurL~48`>+6t4!2TDmAs>E{d^MB@3M=p2Ro-N+AN zun`m?GKjenG3F_($Z9iZM^G`)SrS=kBK{ByXoX_1al}9vkm6bay+fK7FuPHG6d7#q zeCorbWV^^36Ko9Z{_G4=JHuJNAIL_EXECZU>lRe#wH!tN13g_H7??742wkiGFF+JN zE}uD&6j~?jFg!RS4JY8E)l0?>sac^G=0=#!r^ahAcKNt16$Qt7ZKMA};IY>*D)0?G zaw81-eR}_%=+hf%IV(h$JyM4k^~`~H_D_`w`>CapYCa=%6O)3uZx-Z9;%cZb!ZFTb zw>UqbT)l*osEJ&W&sxP$sjvvDA1~K17Fb4d z)1T(oR+#-;ct8(urjs~x%L!(1m9v+t-CD!`&EXIrFnSq8*AOLPtIMCa3Z+R3)A zl!J#(C88D96tfGMzUd_xp8{m8Y65!1XezSOhjbUyHyDB2eJuKt_Z>_%$6N zOi%j)AuL~B+vszNB{z8c*1_u%p`5k@CjxuW8{PLq zA5N0o1-(waoH!vVQ#&<1YTKgm6|QaD%1pM^W6#yLdUt_Nv5Q;-%pJx|Vg<9cb;|NF z?h1;H(uhz^u__Vz1^5M44_I!QQT7WVgpG_lzPTa3Fzd?uFvIM5sLn83wBCjW^B8wP zzvq7$2Cn87U)L~B8NF|@&I^e-fNJrzzFF_Yic<|V5t0V$h0XJ1y+B>F&U(T6Tl)9; zgr8D{8io6xlK%ZqUwUq~G}N)RJ%QC|=}~m)_kToGMBpxzZ-erlNgZag{tZwF->&96C*guMdI<5K(&J!gc-7Rp(NDb<`e=3PRg!8ggx-fS?1L;E zb;;6)lt{+mabYvr5M493y-R-ORz`N!UFyzlIz!9OttcC*E<2YuI-=}wdv_fs^R4XY z{FcU5Zy#Y>F}+D+#Zf?xob|ogCIlV?x$O;D+A@FXSS|fFn<*%r+kQa(vTw0vD-Y^d z@Tbd`Wpyay3u6_4MF&qa1%E;(VNFL~4TQppbg*wTCt+zR5O9WmrpTG5ND5@a*{@bV zD2Ma7@O*I}DvXpL!{(5lNS6_c8(&r24a2y&bG_=N=;FK-HRoI_@Sv?dS)>HQ0B$4p zXsXJxv$4R3oz!6ZO?HkX>(SFl3&RuMlYe_9#8L`w5P4}*NTJ5UtnXp_)5~s$STN0C zZKfvcbym%k@1#8Glmgy;72BuEc>9G=Q3buDQ5hF>YNySUCd0~eK4JOa1{4GbM`ajW z^4pz!2`mICCwALwZ>rHrW)4pltQ-Y5BANvch`w5ehL&7DFO&fMlT5s|0Z`FAk@ol# zD<^)?x_6{>dnhmSUEtR)D-%YY=11j+Mp0KeF^G~{E;m9dMtb4$9-2gM`IB^p^rM5@ z09(q5ll>z3Au568#KKSv#br5hFk%3PH$v2z2mA?P>SKxmQxuq@z!U|hC@@8VDGE$c zV2T1$6qusG6a}UzFhzkW3j8lqfag)g9~ghnjUILG>?$LFJ%1p1>82Ym-R%32aXg{l zi`}p9-Jg33L$HeE`sau(MMHUaj`tEwDaE5<9=UU4f;N(KV=%qYOhwCnGSaulok)v# z8~*xA8K#;aGPgCr;eF>wIuel=t`jdlz>S0nZ(n4jtp-LRvwbr>O1F@o(|t z)@$4lF!19B7*`nSWL)8P51~6z8Q$rEw|rs%e)9O8wec*}3iD&iiQ7Hl&T+$sJ z<2U_IV3FG5{rH8td1zPX#U$JYlRXQ;UiRm_h5+n(!6b24lt@l^>DMeURMp9Cnf-Ui zwoLB6?(kzU;FWs!yNNMNs7z8xuQb|sdZUU@c(dWJub{5Uj8?vV8D~~qk}qV=70BYb zkir4zViYa)zW)aRL)~iN4RYWy%{fIH>1mThBB}by&J3!tl)dO(2TW-1g>y>`S=D+O zN}u<~3NtBr=s?`Tc@968$&Fx16pNG=8>n0Oi%pUtvViw)wd)z%abro245nP62x)%Z z)&P2UAGeMLS_OvJd+Zn3p}n=5dy;oke50w1r>adLjHkhEPXi?ksfQo%eYr*@W=-2G z`~?Yx+_=&LgGz`Dhk`jpJ@#^Kn{J2D59=FnU?z^pE@Qzv1zjN5(zK88oki?MbEBjp z%WqzlraB;;v#jqZlN-6}=Kg*tH=c+AVVrJcWnnmC^5?*na#xj)LhtV|ppmV}V=t^3 zSIM+Eyv_wjzWi|7o^ui8^|*6E4=K3$zqy5;j2V=!iS@qlvf!OXo$vw0G43*3R!F?~ z4Qv|~W*v45FNtbs;w4cWm;G*mXVPrx_x_Tdx2BC&e>oM?4FnWDH~+)7n851kzOx05 z`{P#)!4$11MFeFLs44ltFW-^TyGFu%FZ9c}4lI6V^u$g|k6n!q7^-9byc_cdkuELn zArczf?D0J{l$vcz4WJ@FJ?1TzLM`h4h0ppGNR@(qe2iA5xsjHjNyU{QS4&k>D= z^K%QR6CrgBhqyq-`xD40y%%4*4Q0J+f2)JGi@CbMX5c>I4W7_?5ji+$kw|u1fRPE9 z+i$9Zxe+i;B{J-=@1VnO3kEgeX`(;c-ippZG`rH#cZaf)tB|<;<|@!92gh7@ARZJ7_`{=1en65^Oj8hfwcX8sPaIBsAw^#Ldr`SvxHI$^{KGe*(S=$6!Vml?%X^t??6$CC(J81K z6u8HX`Oo!M8Bs-6gSs|A3@knf4-v(93e;rg?}HoAU(r|IE0PCYWRD6^K16RHFwx2Q zna{@0d>nDJ?nhP@?)Tn=8I7_M71P;A07g)|#$lWg1vkI0ji`Dz$oUDqW{o4FFjGbZ zDO!I-`1^(IPe*k>e8KC1iU>RO26pIV>Id{2s9MsAVNC?W1>E8589llFbVKjV5zb0Q z-Yv^y+&L_R4Wg@`^<;i7J(EPwz)M1RKtIBa;)01Qy@(%ZAp8!dcKf~4FkCoRwMb)W zUuK6_%BW+!Pmq_oz-K`f=Hqs)Ls=Puu>f)i(HQR)d}#$n{r2HrMqIH%a0VJ{c@p44ak6(^GkOwPw@@L2jHnr?gdH<>~Lz>Xwh3GHZFmM%D z8AlV|{un_ud~X2;Qo+A-{fZy>tJHpKwrM@T22rN;H12|Co`3qqFz>1B#Xm_9G!3W? z4DcI`R>rlHgI-RT8wq9xWhj)%yWQSr;3_GTp(9}OZm*ZKQ8E@Fm=7MH5SLu8mDip2 z14KoYR`N@xF0dTLi+p#>cSgQ@$O`KPm@9Tc%ejy7OC2(w#$qUcWnSH%$FbQDBM!|39Pv?TIiA{a<@8M?@eopsEY$`&zs+ zdK0Xg<-}KB-3t?NmAdqBb$;&$I3$6qXhv(ZN^i1#5W^k(dv0{6MQ_kv3hCX-c`b?a zd=%wyK<>v!Z(GW)7Hp2RJM7Ao(CUsm4g{^tJPf#gVBA>}d=Io>+6V==?j8<0S%v~# z-0I($zNkaq{z%naTD3kRuD}ylTmdbayd;FRtXre%34KC~+)z;z0-W&yi(4>x1o^QP z6B-!8B*TOWN(L>_!4=H+tbvH)Ny-4c|9*?_pUz60T>p|tFXn8z;2s>86=f3fRLZM- z^^{(O9pDfGkNYj^uk57;JdMj5CU(&pblIRP#dGKtqQX-_xvdRw3Ecy$*q1)1OJPtt z=ADaGSLtnnFBHdEyV%CfLc>+ackfjTc?}=~Fs&!%b(puI;E7G2rGaSH%w)R z$$^i=j~G*!wGBVz#Lr&gLiET{paUn<=u)Op*C{n4biNIV7b>vb!U$9)*xp91%m%(j zwY7$p>@kctx#+`xdv|b~)xvHPlHkyjYFB!`2`{W8n50g_bPQ@^hCro$6r$g!CmLlq z^Gt0r5?}K%7&>gOTz?GrOm!m$I3_;_k{@~R+#UH})oQ=}{8H|F}zc zruy51gh*)_ovgRVdRtlUv90ewdR)^xCH)wUAKN+&WZl~j{6Fly4SbzdmG6I&CJ>!-%XDPC;*0_! zLW(FUFE$`zK^;*WGwBp~*JwmUJ0u8@Jby*rsfD z-nONS3#B5|jFu9gNA?XHbZ^jTr*7_g4Vmey=Lp2N1iIX+6Vkc#)t@$@n&3jIda0Q` zDjlOroXkwHJUWRj`Mr}^pOaXhWGw0QNlxYk+cef61qtQ!Ub@Qkw;NtfPAC7lMPb4= z=+@OsQj>ajzjdyhx%An+QxoTrJUtL065EAh*M{diCt8dUre$s(9Q^4|PLS@#Cg?XA z@de-(-$g-rWod6N%dnD6`GyUH7COF7+3?z_)cPi+pZ_2m@$tK@Z%NYid>E{!fl-Fw zE>3>WR64i8v|CfPHl(g*Y||%kAhL}w?(m&~3Iz8Wf~gS7Hz8kfmgu2c?XOIVXAhg= zxa#%NFKLej8Q^=#L)@st26m%qadGY@8Ebcu1@le2y8<2mhu`jPLan!zfHr~><>{L( zEaZ+_k4%`=A7DkmCBV{fz#xSxG3mUtet>xk;pvVrJiY&?Wmdv-+D*Yb2u+0VKvD)d z7=|!4tYV)qK~qqf3qD-EaP)cV8u%M!SrU==I|(A{@KiDL?N3$K^;;%JHIQ%u1tej{ zHmaMwaP&W_s+%25Mb*8ds=CW+RyTXhka#P0tJH&gx7Suunx`n5&`z$~M&E9SIdu=9 zdT;xRh3dKOanFrxByqw})NiRmTKYGJoNt(r(K&BZ6YyWCg8vrqp;R^wr{;1umdJT) zm=;RPVyElK8krDKYTyt!IVuqBpsIy!xgYA!+u zyajLC-xR~pyVHsJ>CjX2rPVp;JDHvPTtM~p3ljm=)!fHlD4Li&PvcwIvoS##KV?`_ z^w((;z3*cfBglHf{cZ(=*JSMV^(4n+_M`^QeuxT%Y8CybF{XlNvMIYa?0d=x`M9ce zCLgykE>Do|Pu#gkEu3(Rr?VloGo68<$$eAMr4)(l5dpm-;K@gPybdGeSCWNQ%jmqW zQH73HFXK}QNh6)s=9>P&gz}p zwV}aP#cGznF-C|T6b=fYYn?jdkhJqGT6x40t~C_nUH3Ln!t7x|#0hWLcmpK+I|fV@ zKXyPYrcf2_dZ9{k8a7yGj4xZM5YON?sgI>J{d-)a>0x-^ihv|x324RHj?tOIMnKky z2}0-&rX0A0Op;Bp7Qprg{^{hNSA$#jPx7aAlzeHA(zTJEVH;oho_atWuz&dXOeI#{ z|2P<{r`k5*4&w(M5=lN-;g(~ws8+Oyb~x5y7g-0@C;R&;wAWq|aSO}1QkBQHSQX4P z#nhy>r#W-t6~g5C+VobxcHO3yW7_=X^f|6erpsK!eN#+hZ6At~Mz$<++h*KL&V5fN zzcJq-jHScCl{F74Yow0n`G%G8IM&G#dRc1TMMP<(V|E|45*h}S4YkH>As3_`iWc~) zVhOeRLqGjAFuDaAKHEH>y{Zy`UgNWusyP6EP9?G35wYE#Sa)Ug3696^h)30gXTZQR zzPNp1VZjx7&Wk*xUNIaapr9X3F3C zTi#TiYP*r{w_!{)<;L^6@61P)J}k=X2KLlX{lJ^`Gi%_0X&I>G<`m6$U++)3PcN>K z`P(paevQm0{Yv_@ZX`!p&D42Xd8+|5qtmdKNeDVQ;J<1pvJ!w2-X5 zJ11O{Hx`bNA3nf@>lob1wO2!*b1UBp928%xlw$KY_$gF}r93o4*6fe?Ox!as zTJYnb@|R1)^b3V4@1`^NOoX4n05)UANYLzYwLD%Q*-Rm`#qDsJ&6 z?Dt!+|Yjs8U;u`&IJgh@s}`-5BR297ey)wF}J zH`a}%@x^l&HW8?nEPO)i!a{?6PsBb0CSIlGwRqhdqPNQHU#?2<`u9>&NluKPbzcRq z@qUg3r{Pk+cZJcbynLMNp#%(z`5c6K-~CY{t#)*n+NacY4s>3a*c&AR+7zb3v=1UR z1uy=)$J!kw0{Uc_YN~^G5sAZQ6HwsXgr;Cu_)0qYVfqXAhI_406>x{?KO^0I{(|wM zm>Ifh&+YcCxd0kw&zdG6Kc1JlZJ%xjXn&|$Us&nHjhLE(KiVY7>S+p|-GI1jU*+xl zhg;x_M+sVqs!VIliQo~f(bqmS8a+RpXxP=hCW z>17n-88gE(8&g6lv-8%;*ZQlIZxq6Ohvyn}O~I$7!7ySkt0#@?XiH*z-)@5QP@fyW zbA7yZ6%UV!24mg0?S~-kZvkG3e3Fuhy_id#OJ<_HU1YX=pzoW=_6zSYa(+K zxjforvrkh2b(`SjyPsz`<0cFwgX+S5@E%4IRZt=f5_;qq?%&Ellb*$Fznig~JAOXG z5ti@k`_^zncf9CeopU{$U07g5BsyyA2a-CkPhTgX1TY`f~ zB)*B5E_PR%xa8eu!Zrne+FS#+DflJHRd`#2@7IED4eqFbrN3aI=p%DL(9(GB>lMr4 zs}f4Fzl?P})3dT_@_g`DRBnbrsAcah-Zf=P-T1jrMe(j%Nx?Y@x|S(aRFaI3zd-2mWzvAs)nIgY;j1q756F0<%q@`!FK8L!E+Ls`PSe*pL?}( z-#kcQA}WgfzvOezP;QPuK_a&)_^8iasN7v`^~B;PC~+5F_s5~2Ku2Q?*rKh)qR0oh z!d+qg;lq$KV06>&;AiTO#Z_&?R-P0q{|8^RQ1t6p@A-Dr10&{F$n%88%_^!Ol-5Wz z3K`-*-)dITEah4kGYlp9petUMKSf4%5 z9L0KK2dO(8#o8~Y_k`qP5D)(j&h)&9cTb$yFMhZwU_}aEWEQjp8 z7sKVP6AZYx$?_$XY?6SAnR73ztoU|hX{|Q!8gf5XmHTOON&bhb~ z)n2=ko;33(Jx@epX3p1g>hSF&6SJW$HE_O!o*UR*KZgwLte<6rt(uVKq2VE;K?6e_ zwU=}mem;BQe)_rMBN5b15!4fO$9tY%eM&z-7wzY*_O5aFRV!ll5zIfj?wpHl zw=8Id{i0){-y!L{W1>4%9MQY5{;}bk!s7VOnL|DHo}d%#nh(PBj9aAmI;4-KWmojL zS(3%l=nGs9S*JN7pOD)Ko#L~E5C9lnK?92`}$Kb35UeA31D zNE$WSUsb1w2Da}iaeV1c=~X}DcU!P{NCq4A;l_jPtihS)mqy-cF1Y4r*1@#)+!pMD z9UR#*Yef_ETG$J9B$(%}eh-zyl(P*vo^nYj#}nu9$3yO|M-wo7Pl_+(eO>}*a0(_D#29b z%=MwNoW{huN?EKwIe$FtN>Y4xG)1u%?=#vU(iG&`a;(l}E>?R`2SVO_IL92u_TW2T z#$nuDI^jeUN{hyewop~y+Lr8ZZ?6;(;&y6ej&w)x$;ZvhXk5Wo`HSmI2hD({8k%NR zoqC+9QAg<$MoQeLwPV9((Hiai_ruz>VjCsi=|V~_&bF~)gB+ckVsYo5V|M~7u|2r= zf0#gWrhkJ?2p}i<@T*JQY6mc(v2s6?_sZn`_rN*jd>pe`x|lVL^sjd56wjvi`4;H<6S| zAn;IHG76z2m^C1<_GG^0$|`jlComc-v=8c-OLHXU2J|YKjqBRQ{m#R1QHhZ zj>yP{rULGf<*dBdDkTJ1uw@V11XPf=K1I)oXoJ@O!SqhPjN~9+=HefjFQeiKUq=1_ z5~cs}*S45q%S>g)NL~^ae%ehWbe%?5=j~-gA+$ z8}P&TCpU)dPJ)v*TxF+Kr08l)u@Pl#GKe|W_F;xrhSgVl{UM$9;OQ^u^zGA zZPE@e*;qUke8#MvYXC9&?pvH5S?i-mM?7YFB=xA$Bk7X<#rDN^$;k5J>Nl7P?jkZ< z%zRNan`NbfKbxY;JnE+Zfj3yjlJPuRP08_YS8$v@0F1k9-wVN=N;}(QB0e&{%UB`4 znVRq3H;ff}6WNRBj*ZGkH_U{~>_jP8o#yk6e$vVO-2rl%=r z_nfq|$Vx3%O?&0o=Z}H<5zqX9rr_nTA>xr}TYQE5T19JC7F`oExq@|^d_Y@U3#GQR3xzETb15=>28C&Y;16Ak2~`K#i{WIjkB#46NZ`dodTTy z-gC|%(G(oRyp$okH#KmHj(6qMIolZl5x$)4BW_H(Icm1H(uX(Jm^zS?WBon5;`Poe zkx#&vsyp3I!OtYCybrxBJz!o#In#MBD;&klRY`y^n&NuD>-w*nh-*3!$@XkHKhd7O z9)mURI~<0pxs>$1dcS^nE62zXyIHu2#Yn(5j_*g8Ot}>NSTY?TkIWPM30#j zYb8Y&0GbM3`B!yxGR;b&ZOcqcgL5Bo{^IxN%}ss8F6eL&?Shbj3pzc-VHdF}`I=7{ z5#s1q?xOt)jx40IT_pM)I2JHA0?&d#Xv4+iFG}Xbc7ppLN`*-{GPL-)@Igh4&q$Wv z_2Pz>se5$##l5ZLhxpNF`CFhX zxTRc7y3#4gmIW8%)d(U>DznHCKgpw#%+`(M&ES+edz8jIF0Q$TW^{%5x zYQ-DXlzE{LHVrF65uAeySY2EJCcX=IF+X8dBSYNWaavSrK40{yE_Djv`l`b^LmwX7 z^wm7!F0!tmaxahH=mDE%F1Gq@GZ)s4Nm~Fy$&DVrAYHsssErM>Y@dm?(wuxWd#WkE zH3_{5rKl$MAHd`VVrvba%%!gPcrs;$+DjKg!UW)MmsN{ZRTv5E07OU0j+A!bZMgU8 zlOU)Sp9C8Ro~w*B(Re*I95;JOUTj(2bxCzl=u%_`z|IlH0KrlDHj+T6q>HxBg~Kb7$D9%b89)*gJVx=0+aa?{B|ww%e| zLIBLa@^Pd$=(VbvNOtfTM*4M4$P0z^d?wsu4Q=BMZ5x>SGC$3Z)(KnI?|{!*PRl`M zP0_cO-L$Rjt>(FEDngEx@(@4=0&Y^p?ZJtff@{JbrWbt1!O4vFB=eR03KwzZ;M>Wz^57cU#bahB~eZSk@qW(>Qd*+|)%N zy}}`#tT|k&($E#jY>=w2J~J)7|IuULi-yrQNCviVY8}q!diFr*F}H3&iKv zkucVoQ%OCJ=X1I>r0}n@r!JQd?`6YmR4*H;-oQVgdcR|pC~WAs2+g9FbuswvFuy)R zS&?4|^HCIErO&UkJsaJiYCh(C+q@awLD3TyLJ?{eDyUFhRiWO94=#0)SQKZqg&%AA zHVeyYw?#WG-Hvq-CA-Z_fai50HnV$b(i`FRm3gdq+6c;r4tDxbI zed(ci*c!t#DgBlL@1*eTV9vA^kt7T$y%9|23CK*J@t^|_e#ckXEl(IT_ayTAgGa-> zeoqq15Wx~wAWW9i&tq#5XttJQ8qy;xNsqKzm)6waAKhdZ+=Hwwu4;0t$7XkO!Cro= zd9EZ?{;!n0AfoU6*yicEwiznY_DFkXq2;uCP8SnB0j1cqKc8VXZJ!?5wBv7*`Jp>Q zqTNK;c6$`Ru2>1K>fg~Kuw8-)@@E|K*MSusIl+)`{<2%RmcbvH(Bg$1bPpWpg%0$S z2KvniG`}&$HPNP^9P?<%#?MVH@$+o6`N%9^*qB$kE5J)uFVaJ-yKSk}wwd2=vDJ@? z^`yDgKnu0Ie#XEbd00Chc1Ym=oCL!80rLlxzUpjX&lQYW`k=@9(P5npJo}%W^A(;A z%(}CIH+<3t)NFJ%aA(dAO#hJnV#5LFO#Y2=&m9kZ7;GAZ7k$hvATyTAhKI)k>1e%_ za|LSDKw56eys_Qb+%g?$3J7#jiY(h@AC6LzmT#-EM8Slt~g)GpjL1$NE`cYoEvNd zrm*1rPimV3J5Q#9@1M7m)^@dZkxS&cA;*Nzqixp6uUB=4;m&SwzEYl#m540+g1l|x zf-sJUc8xnJvL!L38d-K4)mS;BT4M}Chb60{BQ?+z4m*zCG(WkziqtIY(MOs@MRz1I z;nu7mF^8FHzoFW@#I&u>DZ!^!I(xzSHRvF%m!zyRbDq(T@ePb7*^Ai}T9GI?Qh=p7 z#uuZcT9+@b-c@aA!eD_vn0K?g+DlOF@vRT8Z8-xyE5tC?so_xPZF>)M=WTnf!j(fE z68PY3xq;La9L%scUGM^c4MaV1EutQov8%MQ|A^P@T~6AJ&A~5pw!;{p?bYs2EZ@l* z0*=6Wq{EpI=l?lF@ZVH(JpW9(^4Gj4a^;z@-EHoAYT(dv=3SrP+ieQP&8f%BTN3*6 z#mpz(rrkHV-<`my&^mM?HF!WdldCF(bMn3rcrJPVK5XX*mow|H-&=iAUT0qTF8N1i z<=8Zdhk?fBL${}#DSB8nDvGXcWQ*tW9frenc$?j1nt94S7(cCLd~xex4{`jgr=0oB z=PJ1XY?bk)91l@1Y3+a7_JvuJ3mzFb|KRbi$Zcp}7 zkxhx^B3b83dgb-xA@%5x)PJG$^gFE&!BIK$5TutgtE+HY3+_jj*tMMwfBs5sPw~G= zL0_dBb5KW)ANWWsPUoD$c=P!@1)o~QK>0DGzFuQgIdhCuQntW#{$l2VcX1;U{r{sY zo-YUAW>^)wSzzhGK~0eBF!`947Jjn>_yPOh$Y= zh5Rtq*MY$T2+3`CmY)bHMDSv{y_{L_4>BIncFKp@yA>EwjV~;VHZyM`1$nivRSx}$ za?3trw%VXrE;hQge-@ z1nsk&J)q65YP^y*yQ)3M8)j~HMQn~9N;erT4b)T7sMyCQ|y=f)bF+}kB{?QK{0 z_QZv)Ni~bdUo05|4_e)&@QxnB3u-%p4I{EpO4^u*IPmGkPlA)(CAohakS6siMlL+H zF~yX_l<~z}os+F4fC~RPRCyIddFhx#L#YA7qgM^A&Qf&`ZOt%L@CS6`VP{6JMThX3 zKWhATvlsbYIC`KmL3HbKkR>i*zCcN63XXFL2*(m;2Zy=@yJU*JnR&)%+bn7wtf`zi z2Nyw9cBro(ej|N-B;hqy&^M$An_O9S&tAO@^8#7lb$c3dq zYy*SK8V7+J;t)j;iyOxCvkl|}4x~ri@S(7|(Aho9f}0xs7q=kdrL%AVXo-9_^|1V+ z4h{JRkAsmFr8$X_UmN(BS-3;xJWQdLdz3$BR&{7*izoOGcggz8|3KI;%GWp%+~+o6 zUJxZAf?Hf#UzjEa4LlM-(LpSq0TGMf{SE|iQ=t<(OOI3kuz`CzMkY0p>VJvT zP-{(z$4|4+*Fa}+X-irAe+Axk*u9V7qF_1s5>bYZB5WO2wKk7-#K>!`98YlV6hxhH(H( zZ_tiqHoIqRJio)Z&s0-z0y`|~64ObrR z(aa8h62mz(48k68Hh{ZIW{9cUr>f=2RG+U1jZEW#Z;!@-e(BQnUa^p(zhj0L;G1DL zU%=3(h7xr-TRc3_9%-v?-&SG#Yu5=$+CH2bLhsCH%q;PFYXe`;2wxnd#g?cp2BoRs zZ!Wgh^04=NSlP0KN_2WX2zhf-v-xQWVm*=dP|puF^n(Ph)us6o;qkv zf+Tj`m?~Jr`x5`YB-GBZqEoGboe2qE=PI)BkyA0hWBtM*e}y8bYz}wK=b|}WRVSI* zK2yeY==*CrTs{qqK9%V51;N!kLuJ(`S zIBN^UnuhYKSpp*q3fFg_N#UDrDCvKL1RmH0vsskk&0;;eOynnC-3h2FWZv~45hO^kv%yhS&!HH zWzuGRxvAjA4<|MCun>V8L7;k_Q6CL9y`m49MG1C7wjllY9bSS9=6@)O^~Z*Ta&EEw zq#6gdZUf}IsGRN8E27bcwHFa40<~cz>);uMUwG45){qi zzkNqy2x`>_dc5NF@U9&g%l!MYq#}unPjg-?Z2sW956)C1)ew9Odj_VgAcski!+!Z^ zOi|SSm5SoW%&PgP4GANgo3KurpW8?QK1d%K>f_Yis~(w5_`~5*Kuvs5B!(k(pL`R~ zpp75S+wxtH$5y6q6WvPLkIjW_(s?W?JXg3z=GEUrxto!)0?2EnD4<6v~ zj!Z7{TUK(xxn@7zYJdO*(LSDU-w@QhIrLt_RBu<+WM?~nBScs?I7myh#TJgwdJZmB z|3pcn{&}VwnCu>l<%6x&**`-AVX@5#lM$E;$7TS1>W>Zx)NQ4sjUruqC_DU4#zw*= zdv|`lT#Y)7aW6HROt#A(vTn>MZ0%t(-%5M9wi=n3k|YNFNPKbJNEWT*LR%V1YQhZ7 znvWLpuy64~bz?ZKAzx7QITXu-z#ck~zH|5(#y=d@uJj#K5rYt*5=Y1#OinkWcwehZ zqejD%8a-_U6D4+mC&|Vk{Y?}0k%>`bL-`yxCCT;MI-~tKO9_YN1|;o+DyB;+J*?8( zcUrjO{5SI*8`&F&7ROeX6jUnfREkeT@E+t`K#Y!VH;7<+t=yj0^CUk8z3~;fT2%18^G%f8<6O)5xrA|ZPPpCG_p3m=l{N%-b>sZy*9n80k5Wa z>JwY1x7K}Z#5kSA8h4K=Ujw&Dx;>P%uHg&5V;Y!VwaN?u_YWv>7rUu@z$~?(`0BGM zRZ%-49_VGb!+g@cxQlsNa{}?DU&a%W7}U8vcSgSG4eA|tG_$PMo{l@ZVyuVH zubJ7d3H=N26XY}8)-IQvW8<85E$f z)DIMobzCLsAM0&nXO?n)0;c|LIyjPC33dZyO?_izi&aZ!{LjNq>04f7VA9CYD|&l^ z{anX(hSM7*yc8QgoZJEH2>#~X38k^?-r7rVc3_@8pr|k>LLGVn1Qx9dKiIJ;cq4w9 zDVL$ly~`_Ch4Dcp7%$}^s zzHq6nc_bH~5mhz(t9`FFV#`Kf#=wz|o&Bdz{B&I(IFLVd2c8zb%AxM<>u0zygAL&P zq1njhHg2IoZenZK|{IdkhE93ftkhvn2GqAKpf^-r$;<{Z(G+ec$# zJtME&NyVO0@(1mMFxk%asRp-;Hh=VE>r*UgmNUQo$lmNI7(Aq$>A$3Mzlmlyz0Bqd zNBG?@X8=$-w#=Q9)qr?AA@orp^dUf*A5_jLS$o)MP zK7Z_Qv0sS;P);6W4a6h#pV)k%c&jdO^1Et6U23h^kj8H zB9_0skI%rJJ@LZb3yI)p>CKR*GLLSi@4ha2afh4A^q??u%Z0I&TL*UiQ}yfgi#*o& zcl(uQSgj2M^Ws|fyKs(5PXVca)0)4zZ|2&!!9)Nb53N5wCQ$J{{VQpzrhKxE#%%K4 zk=f(P+$4A-Q&0LQGW9Gng;DSJ%e#otyZuUsE55Ckr%Iivun(`f3*~C(b5w>;s7a}o z&>{3&KsP4sceUwAaQ1ub?k9&OxYW(FIOf64fr1bETuS$NmyH~k^Q#ZE4AH6b9;hO9KXR%PmgW}N^?EQ$9CEkJ85*?KBld9tvZ5|xA}&ID2_V0kBnG(!&`iz@|21V z9;zZ;Hs{&cuu@flzN!_C0fo47^Mb(=R$7-mLmAzc$d--eIji@n+3V6cQR;GoY;NZjS%!$!?i#t*54mN)B{06 zSM;e{4>f=gWkvh>?VkPzVk7L`>_J#==kx_FJlW={3wV%VE=b=MG@D>FICjvXC4aXo zft61s<}~JH1>ZG3rIq&~CY84KTWKFYWFyoPe1s*s`n1^m?}xCYdN}%W7hPedLHV~2 z(jkl92-9@E1AB>(-g4#@Gc`Ei0xxrzYb8o zd&=-7w<701V7{00fgYhNu$=S)5tivcp}w+axQ6T!3eIVD*U>pYn-jcryK?3~`q^Kg zt*7^>$ak%Xux>PukylW-_fhJN-YL>HHkv2NWvhn5m<`7vd|wiNtCJ+-#V$)Va zA>9TOP_`x~Aw3ACuWn#3a{_}g&>_UH;c-m2K!!xzn;P8v=m*Q0`Cjh$)FJ>xz3wD) zyJOCb%V*wS**N>S#(9IodpdYkFgtw%WkPG$FU~MbZ}(-xjUy~cSwkt^q4_OZ1$n!N zX!J2Pf9C)VdcH5uKt{RXpYSWKGSQn=8e98D)izN=o&>dqB_tXOuG>@kh9gmWvA*!b zaAjB$PPTUKm?%TVw^EnuLkR7SSM2Eo+Tkc(M&pz++TD{E*BuUV@D-WXk(pByYqe1S z{ro0e+c-*u&<3N@%HXlnU8_e42fZy!*f<>NZOtkY{V`e(m}rl@cw17y{9DBL@gKQ^2X&Q;q;8o~3-{t#rl z{EBwl^*=J1RkL*$R_dF8l)Ly4fp+u#ca3Reg*`v*wBkq7)^8(?QgflWs%;q6a!?2= zw=tE~yFKO`0CLYDY#-xJf~Zy!a$}v`DNY%ld;B4MJue$8$erp{vX*T{4X~}GEmw9T zZC@+T)(&GqkzCbYaeSCkI(3{~aiz9l^q~n^AYW}7WXcs-S#P`W>=?aiQ*KB*Vh557Um zG8TuAA(jH+=+$n3WZAcn<5SkGK~*YqU-^5VJ2G*-^k~4=Li@*udkho@a@NY;@Nt|b z5&|}2&bn5cWuS>LzFqR!&o@k588zV=2biSeT559i^O2Vs^ncFi(5Qn`_R)_Zsge8p zVlhP)KeqQ3J$(w&k>Dfqqn>Wl99ptNs>*L(ztMbXqlI9qlHw80&6;A{$#h{ez_8l| z3tg$pGy18!;&u9|AJBqQ*Q|j9oppTeJL$QLcZzE*?P2vJFY`n5D1ao9uTNhmH{VYe zGgyW^8ob|yyU96lerq31nP=*^o{THy%8zWxeZ=y6DarjD$}cuto#TZG?7oRtH#c15 zhmU?Ys`aas(*T(1)l;v`3hJjnJcZ+wH$$fqnV7!3vDyro_H}Gbsa~cFfzaAE6197( zv>O6b8u*q9v-Y?x9V;{d`g{c14Nv7#GoVVdeNU$L0`8U>Q^AdScF#MKd2ZD%D4)Ks zo+nhDnU(Xfb8$1t3@j;6Qol_uc1nL#H}A^ku;;J&jH4KFSFP-SES=&ETX{2^`!C31 z`X#~6i7yLfF>{Vmip@9jQ_lRQPlJJlCm*v7S7Dv*mf6JFbg0aNAf&QQ&(kMTxx4ZK z-Z~()b}^CYn6_eQLA#14FZMu5+Ec)-c#E_0!k4~-5q)&&%G}JPLuMw~WVhYu|8CdH z!&0R$POqbq3Q5)^Pip&W^()@~J}9^QhA`4pMQ8kaa4yocF|D>#r$ zJC`$i$x70Rwuq~N7FDN5<+7WZiOSt=QjS!5)i?PYcLy~aw|~$bY`mj8d`iXW4h)UW zg(IyytWI=?2VNI-hyN60G4n&E6q|47r=0mcbcEf3TGZ7sQfd@cKUP;-=u<}~XN_!r zC6S@4O{FQ6jwABq0K&mW8^^i)^@W9c2$*(rsj`AOi=E& zk(V9awIufIa}%xNMLfU)d(=)9Z4kE8AK#rQm7Lo|YG&Fnkc$zS4_?l+RhBd`5gS(M z6||yc0hyIECsmeIqW;lxJ>vgXo;5a}-)~;T6tDNC_e*{A`{~rL{QuWJl1{DXztZ&o z{!QuB3;uu8qv_QC{8yU(hXZOno+jr{eSTK@S4mG=Pfn zz)??gp{Q^g<(Scle4cU$U=*5p#A9&#`)sOY-h>pm5MU*r;3~SKNio$3}a@6i~?Nipp#pzTUqE_vRrS@)V{U3QC$9OALN8 z+)bam@<1lTm)YEhAu;&;sRDsY?I#iS-Y5;6Ijx$%Oq%Rc`lz{_x$3Mq z#lcKjiutYI#6UqrJ{bO6>Z;*_)z%jTDxVc*G_&ss-g~_DNzT!R7MOg#vDYu&2j9#~ z&q1lIT$aIwnm_hQ6?%POUuxqzVsM!k5&aBAb{obnF;4V^9eYH8Lj)*AR*+HodF+=m z?X&XmQ>b<+Yx867P2NfhdymM|p(EoHVw`E3)ZTP>PEfbARa83H)#sP#05P&S`50~6 z9JGCV*>Q`bq;F9#xt@=?IOiQ`)1csIL|=tUB{}sg{mA-DGO}<}V}UfBPsAL!s>6MN z=~Y+L1cozOMV#nXvkZKwB2`rt7Fr-nPSK5kppn0uYoowBG8zSfv)v5Y*t7T&+HSbw zDqR1nd$ZGAF=icZX=j*Fp~K`yIxJYHpM7UKja7=%;qUasDGsK=V4yh|JS9eLUC({d zUWN5q&a9-ceC}G}OP=={dA3gy=~okDg7wF5ro=Y6V4O=EmH5(E|JZYlwnY7(=i$&g z^o*~`ONxfctI!ITKGdq%$dy9lGtH7Z?-RZD30h3c?#&sai zDdYpO)HY^0cGX-0lA`2U{KuZ06q-(U#q7Z8-F-HdjqFZ5%7(`Y8}|-5jF)QHLA4~^ zO(QSkS#zwL^lN*{_q0HS46YY|eKGbgYH#@H_WHr5;vA0PhU#Q-)_EKxg1@(-z{Y$| zbyTDQWWAs-)P3EWxQ_@ZX0m&jF?e*2jKLEOA_|v*bOgtBVC(8>7^9O8h#H#5?Uam@ zC$IFNgnAlJUPo_V8pU0{(t`I_M{lRtvgz-8%6s9v3BJD_z3b%L*)=->9ZiuCP|OZ~&MMG|m873@ zdDvNK9?#13+l`ey@TzYXE5~3Y#Y(Ah`fO&#(!Ac_$rI>O`}-zw(b3jLu1j?%yOiB_ z;=B)ei6@_DUgGsoQaR$)9`9%bt#7>PByGW=SH{~)D*7XgHlDvv)E{Am_)s}>6O4#o zELFCik0!b3j%9tDtT-%XNq3PX5UZ2Y?{uZzXEa%gEjG7E8aa9qGRyipE&$5erEeAR zI$wb?31tWha$}=mv`Me?$3}b5c`|ciND+N zj_|Q7j>X9?A0w9wDOoUx^Ykd8ydS!QKd6Vw7kY!7EJzK1YP;+2PuUe6J#}Hl-}WPg zjkhSrtCDbNM-38c*N^ml09Z$X5J9gJrldr?bn`sPGmmapf<_VBD3%wP&AiC#(2K0F zlOZqb{0r3jtq*`9Gj|MAQRrCpMFkT!zCMDG*!I+f7 zszicnawJISUHxdXDu*rGYmO&lN_C~Y!jY;SU*Sx3$L|ga?2y0?3G9%-4hig#!2d1@ zgz=(Qjp$h%2z{lt@sI2FOkH}(;77v5ygo+TxJjw!4!$Q!)u(G4?^5cigKv#e^?};P z+m(9k;2WdVtWvL2>i&cKMX5QZ4k>jzzh|p$DQtLTtJMqXcQ=0bi+fhhZbTh26}idQcmMFH`p1rq*JBileltah;IL2;<#JmA_-S#29c(UdzP{3<@JY&-9 zf@sF1=xs+hHOfXarUfJ~N+gFfCb%(1f{(w+6Y5rITs`hA{#2cj8D>Cnpy`<<2D=+m zO8ZgB9!C<8mDcErnU6KQTN;N9J+yPX@LPAEo4U)1b1L}k!PFZ%mryemygc8v0Uj@5 zY)ysVbcW54DvuFF-6t`>MK~zcJ55S0FQ(_%gHrM>Vn|8&yB^9tSsGzkS2Ay%$kJ@f zjg^HeU)Hc#8pQduxs|i?`22?Jk9Pi}WqZ$Vi>a_bD@u+W5i}1uJ@A{=ubq(XoM_2Z28Q4MjmMyPK*y}h?b{** zc)Drzk*U1erQ2&mjrn5*{jU-7ZPDK(`jBNz{{>e26|c2aS1H?-3Cl;dg0H>xzm9m% znuyVd2yw0HaMT_gOKHBoNrAGfkg#?d)R#^qZLOt!P-(H*88`^#{{%V0P7nWx&(6sz zruQ4k#Cp z88{i>w$v30L$}pm(W#$V(4J?{M2jeNdnUePijtY9lwxyvXEFNVDT-9MJrhzLK->nH z?0b3A4vh}Y|Jr>6ayQG_bZ3$=zR^NW$d7dyK!N(HI~4A(IXF_qUB-(GbmnH~f!Fw? z{1E+za9}=Vmw_}+$gYArj&4=lci`_|?64ayJa&r=E2WO@=`==1aK1LJyiPSJS-~0A zAKt%^_oup|DrQXOjpuIR$_H11izP6BD~N)1h_}E|Z~fE{?5>~a`ijd{5qDNVid}1x z41`N8_u3h5Zhv^6pL z(9T@Xq1LLUYGy-c@Rw7==4n?Ll~%p10|i@_5A0&nFEvyNC}DrY`!82cT&{*{XNcSD z=m&$|*UO@B61I-u`GW|DzQzyA$&8qR5wXoDT92rEn9F}rQnhUzM#)QXCu z)LA9;+7Y0e@TyDKB3Re<)TQrO(pGP`O8GA;nP-i_d>OkP@0UxTh-DP zH-0A0vKDX>FKdXLL=z9U{)DSUSvefv;;S;9x@7{x=a--9-JX_5sF@C~%K|?+3vs;t z2*mNuXvruBJl&HB_DON%P)!Bz0(%X-AB^!{CcG~n4&Hhf7Pe)llmE7I*~$7sP5wSR zE5RStnxTyeyZboF&Tnz<4!-a2Lcy$L8HZ?utXm)KUNUZetca~b@$^YfRl0*CQK1Bp z>rS0XWUP;NAN`OuZ{r{9J&~)})~^O9+-kp=cyzKiPM8YT?`y+YSE1-O7Had11Kv_7 zemK7#yOMhGp9{s+w(T&u;jrYG7_W4nTW>?zSNY+d%De^L!PsHd65zF8Fn(Ry5F&*x zWsDDNlNf~ci7*2-rD1`;P+V*EM)m)Cp3Iwv@OU~apBwW}VRNcVuQRQ6(du9?dCnx>szimbK^^?g-__&V+m+sh z(!6)o4eX|$`t;SW1(Zpd3zb{!xnCTCNV4Zg7LmSk;tTpZQwz~wCU5!}RynhT-pV@d zB*H2f3Lkr4)i$i+wXpo@4~E6ttj=T=NY)hmo|iItV|`SdNT+P(^J zh;fp4zS!ngEO@8gH>unt*}-kE!)0?y^a|Q*Oh1Lo;k&!;*v2<=K zDs~ygP^8S?uF_*8$*1tb z4@+#lYr0_pE&mEvLdmP6otLP6ZPWJ>9wJ$ebHnG@Xt_a$WJbcXFFgt0An+qQp zc)WpdW~As{dkpPVP>0iu){?|uoH-UL`4Y=GU#0P7Le%R)9SQWmP{BIHkgT9K_Ltu{ z1G`n`w1DroZIg*b+f~PBs3Vj~?!SQj7j4_a!9uXl5L#EQ#A8W}PN7#c-{G~ua|@D) zG0L6hz}j}NVAbBSeO|836?KY)6f+mSvKK$ick{#j-EY$Pa~H#BtdL=|-g~s2tB8i< z4@|!Sb1=Ote?o51w+qHbWj(?ask04bTN`O8(&tn(I*D7s=n`tBlVxRtY)B^3vgu^T z^Og4xQBQQ+LcE?CkL)h|hKX~trh|s*8u2vfKHe-wp&4u*N$es?h@Rk-jGTNse&y#( zp9WYfi8#vsrZOQ5e!ag5bpfyooSU+s^g;S#2boA!%81p=k>UaxV9y(xyDa1Y!rsW< zy%tVc#rL=V+d;k5#tB1aE#yRJVLf~G*g8vz8ER(=3jW0C#Q5MAE4v_+a-4aCT4vZ zZ*}Qa{{c*x$ks`B^RAbn9jS1w_snZti>~wF`i&*7w@~66VYV>tFDpT0EfUMWU`H4x zB|5!(Q|@ooUYIwy(rRlEgR!{Df8{Cb1 zhk(7#GPwRk-MpCjxBs-kb-zDqaNQpRuUVpK+tKYIZRQ)3l>1sFir2sG@p5|U4g0k=57Ta$o&4p3>X+xk11ZW$E{zpD|` zW>nttae>>1VtOmS)q%dWlB02!sLom=TQ7PRT|DM_R4qK}aCbY8nylvZE5B-J{1ZmB zg|~R^8oySRMe_g+HIch?*deCg+SS_eBI@0{kL!Y^{PZXBU#E2)H1%yV+*LZfk+PAy zS%LM*oO7XvRgB5$knS z5g)Ta7V{Ry`{lp3n`rqqKor@28~5&(=9JQjq$3or8%ZuO#Qx2MLdbFzo5J&-Es8`R zluR}kQppEYB-J(fa$u-~cR+Fh)Dh+;Fu zS(=YsUif-hHmB#3oGVamW;Y}B;Ph5-xP8wUo>e5-2cSDKXc*h~{lSdwZTyrow;vuF zTdT~^XTw@-bTyRU-_03Y)yfQiSiO!ptKV}8tzm{*-7;?FK}>`h>Qa_5Rh1#bVHuMK z(c+Y!O5E5jE54bWV6SEiGB{_DPm{a4t>pEtq%%I2rP?iPG|X}^XS%`Fu)C}?T{nIq z-LoP1;=&e{GE2*CSPtOb_6n;vRicX0C&F|Aq|a!~t=y9zK7l@mxkvcG{1}EDDCyaB z?r~DwbyHE6c+DY>;JtW6a)&m9QA3OpBSCcTN?VX5V&W#mSy7S0EW(4M7 z1YUj)BXAbJ()7PJIoz96N42&sr3B`1ncI%MtbXuB8;JzVh=N2Ir?Cz;{1DZ$%*PX% z7aSIiBEuw?_QZho@SwqBm>>ADa2SfLR|Nra40=O_8P5-Sn+#!V04Pt9tsBX@AKk3u zS-m5Z4R-5S3nr(W`S(NV96-njb^H8!@;7W|&4~O5e10Efr!Er#OenRQfUXl(VkhbmI!?{ zi9#q{Is*t9PNE4G0Xad~k^A9h zmMF|3`1BCIa`0DMJ7Y)PoglA{S>U@0 zeEYG_7WnM#CT4em?;gweUfhYT34Lqg#3VG-)ohXCl3lnkrJ_wdWp$xaI-U7BvX;&` z#W*~sXQpDbkg2b~bo;)rbZcZqtz1n-+|GOHZaJsIocPacMC==DcqpPVPV9Q9VfqDT zrDXNGo+afR(5rO`UgWJWo0YzL7QV2@u)TV-tuFMc>i6HNQz4=2-RO@ycHY>Mdea~1 ztZG!*Id05}q^ZjXBP$WM_)JO7XfE}!Z85pk0$b}kTP;x0c|12YSVao4W^7Ge#F%xa zyq-eAg+@{XgqKZqR%kybT7W@hsjZluSR~s6>144zkg*U#%BnR7hIV9go@TZ6@|!p2O-dRxV&Z?^4f=>djWZx8xMCiPij9ofs#fHDQTqSB5e*?I8+ znVG^2PvWSo`5szxzvmfzkEihdOGimx`pTIf@2`0Twvz8(^B7GwDm>r*eVvcGn$uBe z4zq!x z7nsf9YDO;?+l$j$q$b>k~NSZr|3= zoQr<2Qi{zx^Ha{uIY8{YeOngCuH282*dNg&etYEy*-VK)+)k`zt<=D!%If2Tg>U_l zR%_k*k5c$bVMmyRKVd~vZcl{*{_TaLO|YhdLzn^BvQs;M+500NsbLSzaPsjY7d9c9 zd;Vk}?xQ}z)l5Cl|Ii7`+J1bOU^DM}2ForW0AIF?uTpN}cy9rs`7S)=t0MRDd@5SC zsNlEyUd31fws~3-SWLB55;!JI+NK0vkKesj3HaG}lKr9A!oJ-rU}FBmW0mYb&3nlH zOx};9a24;GQf_6vqK`@Cd!F`_N*qkd+z##;L;Oiq3PvejHPWk2Q?H`H5W<-cQ6?N3 zMJY7f-eFQ!Nh%quM^@?q=v1&P^Hvj1Zawn~?E8ZRmuG7Yln#_kV&9va0#Ms`9*t}B ziBxz~n7YjhZ)mEnux@6BO0o(^WwDxqQ$y6y?B;jk@YpbQn-%6}RERyS=1@tCqPqbk z(LZl0my`UPQ8K}9uF6SD=Ke&U@fAr8dcRzindERhk!SQJ8U0{YCIwxKc1~b;Fge!O zeZXP=R%do`No8}dI>dGdMJEwmfFs-wW?bdf6-|cxNkwL0&1<|WCk@w(_z3;EAaZOU zBxXm1nI$VWen#u8LcN6fE6yt0&i_MS@+xNj!h}YBs3$o1mFE=dDOAN^YS8DGZH-dT z>h61OjY9guGRzW{w^o=Q&+p+Hf?@*{-WjDY&DAT1k%R4??S5P{ zQ0^f$L`6mc>Y@=P7d%MB4ti{^iyC`;M*}43Nlb3M+C@Kg1N)SY@@pZ<%6?5{rBk9C zUSd4oQ-(&R7k(6tN+Wpw2s`y-8gI%F^M1we%dj8VGpeFvG#BuON@h(CU#`xEl9>S#3))v=%Yf#%X4cEqK096OMY zoeu3I8^|!?JKjP}2=jtyb zoO0%;X1`vg{tA6`othbcD!8l7M*>YT@}%Wkf-jMHUiwHH@?!V(FPD7XOxUL2l3K7$ z!8tQwTZ2<;!L|m+RKT(wuZ5a1NJQOQ8h`bE?T{i8rxg3!g8xJgiYN`p2Un!5YgBZ< zg#VE2AET!2jr;vH>L2}<;&&{e7-+cuG@89bYah4#so>rhtbfR#UgY}6qUo1t4Eo3Q zfTRWwFBHSo1#Lh797AoP=-18&@vQ@hULsh5TPuVaBXm`C6dWCN&N&XnMu(!s)bKQq!o(**Yb_H3Cq!V;?Z*s0_#cd3MQ!U1Q_f|1 zpQ%=d|fpQ#;c-D6Y#G&u7Ost%p}=|M;FhCQ9kNN+-7+CJJcx z;YCNt0N8?z$!&3~X&Z6fGaEL%Q1F3B8-)0lLFvv?lPXWvtXAQJ3h$g`$E&sml8?^# z!Rh9-MljblcASIDmff3dZ?AxR6Pw%HgCGCE#<(uqtJfvsVWMBZfNC@zkW7Y@5OKoI zF#5hHZQik)3n#~7Da;N&v6Z}t(UkEiongzp^&*z1kVe<|VjK^uAKxV0<;<4donX1| zM|VLDDy+WtQKq&H^tkCinE>Oi+WPRQg#7}Ce6xMuEE-wO@tmCg!& z_y=Z4@8XAj zGxF%C(%D619`j4PRyezH#xIm1XZK5@)rDZLbJTysQNPxxzph2pJ6A&XMq`!Pu`cP2 z-lP)Q-~kaKh0ot4YfM>n}IJaH}=Bs0>7h@*~@o{wzei^aJr#LRy~W=Z&e+s zY|LdlILeu$=t1k-Ma=mR)^p9WTNfh{;UeMKQ@mlHnx3Nb*tV&^Pi>0y_i-x1LNk0x zHcpSDfWt3brigKaQo99|bvun(Rh!*coUY{$-PPYJ+L|O{R<~LdpeFS}QoW`Wm+ac4 z7wai2?^Sn`Q^%J~Ckxtjtw0FziT7`zo39N?@rQ=M+$#8y4SgQG$nsmT`B_F|h_SrJ z>y3p7vSSHf$0#!R7obNbo zMdkJmpWOxF`}lFffA*qR@M5A@R-i{uJ$lM(7|Evw{k7o7`~`FP5&C`MT!&eL^Nxne z4)x3jnb)?cQMM`fi(|PL`7VQMXE4lBEGtro(}nHPHQvC1J-?j=X;}k|kEWm^cphm( zWd}rZ`CQ}lEs}EFpb$erTM(FAH+>P)`;aVt7pb1a$E^Tfxu~wpZjF!ZO7;>^CHC+m z5S@8k00E)yq>FiAe1d&as(s*1z@cTfI*0DWI4=@TI|pLEhAra)y8tCznqH;p54d@XW{3fjUfe4h zuzsOR4qqOe<_%jnQfDZ{Q<7V)z*KPLZ%jCO>mW8|&rfR~A48&ygP)SzDoij@2zGhE zO-U?;{<{VsrX+$DxYgpPB@7|7xJ338Q`Y7ovQ;>lv5Ab#*<>)AWlI~! zg3K=;3ZDFTS=G?=jSMx|Cv$io&o@l}N)``Pm_$!V z)3K*VEy7EVXUUvLRAgXqt^)eDfN55nx3SK6T-5cx^f@WO*r*kq`q{eQBx?o%{Vj9RE20Y z`l5>(eYFJUN852X*Qddj?%X1wN;P>~($vJhli=OY$Xs9#IdME1iYJ)GeX}BA`fxi$ zqn;ePYkiU>1-J`;YXm8m&fDvb#8^*HUwu<3NAF9euhwxC5hU$51vpD4RBuj|ucH&h za!_E*GWR1&y14-%%NIX z>ET0vBCjVnZ2CFd#-TpmEuyimFV8XS+Q)0v(x;hN7x64Mu6kgv8rCbK{1 zECn8vJ$Dp}1g_w>FSw9kk~q(c(LKcINcH7|#-EKCuC*J_538k>eQQtZH|8vCuQ&X) zHEvkA_LGAzk}MKv2*-E<(UvoxB>6?+Y#+M{TXrPsmcB--!%Di`CoN51bFEdWa<+3) zj^=Tt=gKdp-)Ra>20RW=g3*$?tqvt^3X_&ZNmF6c(kSWiFbM&BT${tBWl>T<()8^{ zTt&5`A!uB!dZtklSF7G&NpZF7!lby`o5G~H+FMC78vGe~cs~)(pmT!sRD5xIf!A_o z>0esIxWQNMW!C-E-{Y{(k1>c=N$-{0Z5An~tX+7_DQoA!RfTeJS&}=cX;PPHRqp<{ zoUpob^ONPchgOsoiWYFP_)fKjF6w}GYmFK82#D^I&*AtDRp-kuw_@kCYY+X--}TNJ z0M{e|Iy7rAZO<31rhj_E8Af!3*ey$?#BTFqW)8xstZ5KLnm)U;;p!eQHk%z#FG$*f zII8PE#+)sTHDD_n+7MmNe~4}*zH`F*leO4PUoG_6cKq&;zzzxQkiZTJ?2y0?3G9%- z4hig#zzzxQkiZTJ?2y0?3G9%-4hig#!2c~0V3&F>*twHP;7IaXfrxzz1vUwaa2_#C z&X6{4>DiMA=nEx<_p1w4!w27DIfO$KlQTiBjtIV$ko$*ji9+s8RvnSVp2kZ~vsJW) zHoH@tmBZ9{LxaNVO^O?S>rZ@SI}QM9|1E0{O{vRwBf_j}`gMhZ9$$LAJjJVi5~0Be z{t5#!kn&`ynNN&c87q;1ck2;|!(C?F9@K9lwi%1T2mh1Cd|Yq%V=qYZ4ooZ{1uv5D&COzrmTG>-Q!p*yCp`IlOF{tfKzR1dci<hEsfsyWpSXcM5S zvGg`Av$6&wir#)elA?piuoY0ipZ*neB#J-CyA|IfIwt|tCqb%RNmVCg!v5KzTJpi~ zjyH+TbrReBxFgPM^ho7V4&Ps7S4N)o<-g|2&vWJ1Rg}jnc35qCyjA@UL|K64ug+u)10(-r7xdwiS+h zhp9EWeiG|b?fM>OcM>Y)>$~SC6#`Q81;@>-Z+Ls^6NOmu|8IToV$81{4L|EzsI|Hm zhWcXyj@O!o?Gmtfm~owzzoEUKu+G%@wVNV)ua&Ie$+;*3t=l2f+JWWkoLHqjDtzz$ zX0tC1x5&Qy^*7GGxC>uKCT@kg6jyj*XD4|YnGmwN^wmG%CrnfqK})BC-6{-``gZ&D zyTl&dzh64jQOntok^^j-5V~d_f7w@7F$OhUhHrT{$eR^{xTQ^gtnyo`eHz5pq zC6uzPIfJ#T{B5&W1zd~8Dv+4X^c}0(ZiLg3&Gq!ST`}!>*l{bnc^;w$lI0p3b=S_h z#@T54Dwr5a14x#~uizXw9h_M~v8$0|3wNFSf%k+8u;?kgj4kECqbfn17lVTA>+tvN8Fiep?v8e!s`>u08q?8)eI-a*dOR zQ;)d9Ng6i$+Aak#JmuX49VACpfY+fau<^_`PLx7%2VN*xLD z@e0em9=fKlX4_v_*4wW1ss^>7Coi;LtDZ}+<+fbWByUBXXs!zBzfCBMjmLZmv5?1? z6}%%9s;`=+r*lF?sTOPW7T-cWKXJxF2Tm%sFQXa+Zv61Jcj9NL+t>J3pT z&oz;nk+RD;rsFJVRZ%B$Q8NR=BXF&gzNf40{ngb+5ZXi}h`wqFsaV{G_Z!(;CA9xl zm=q)1AafY(+h%oiYh=z~WCp7hjD%tynXqqW47}0ik^OYBa~7z7aLbyA30nreHUXW{ z_&1jA)jP&=x7yib83N0`Ar=vASm=sikrt8tm!oa2>fWbyt6_*LQulZ6W8+$dx}PJ! zV&f@%ZtlOX?(h4lQ};b8)%~x(#VY#_DE<8e^;WB5)mY_Jbvb;z5kA7g6sjCTYc+NS zNTj*dx?Kgel}4|E3N^T@;j5t303pSiW;5_@(i~ZqAsE08yX{6(0%OctHEm@ayvsnl?5Ug}* zJ#-8iu4Vq7EOoUm-h2FeuLhuA2B3a7-+kg+*ddHlH-kJE2b{Hh&+vSird2ylC5>t0 z^ly>`YgAO@6`Z-U-ajl(s4!o#?ojp}p}urNOh!bbear!2^aZC+IP)v4OH|so zuUaB_-+jsyC1-s*-ePKvMO$D0jJ35|v!bo##K-Mzn=rMxk3iIKJ{PrkhwsC^{Cb}w zJfXXwiK<`bk9KRD{^^u3wU`TY^-g3IGiQCtT$t7TlrwuhAr~gN<}TNSJ#u*XG`c_Z z(uq?({gl7L+tv5aAj9u3@*|NdQIfaH=+nEu#^he{EgA=-t$-3uI4$&r>C3~;9d2p< z@ZmODl}{1kj=OqG<}{c6Xgc>$+I>;udGG~W?q&LE$6c$58Ns!pZ6U^g`lfD!c|Tn` zF!Q2GqjB)_Teonl?SAOaiK{%beK0%Dn9k;PQp%Z?KeC8JFEZ;b+x^CW_s{rWXEQFV z+Ua*u1&YzD`w_o{O|(7q9+#Zxsn$pP{PDS*kM+V8XP9dr{d8+lRdq>d! z@EDH2AJ{s;2)DEuPeslQ=?U^|r@q6`HJ+cXhBYkRO;NKv_r?r~!R0-x-z_Iz@-2;+D!!C;6OpKIT5 zc^+)RZw{Wp;?l2IvbaCBm#&?jgpzF%Vdt&*n$78$G2LML&)_c<*V^6qPI!O0TW4ej z8>b(U%UeNhe?%?w?5$GU0kv?zEp$Q%>x=8l4<5H+@D!hTJ*oNf23^od#iJs?3BgBz zw~qN22f^frYM|L(L4FmQGkz;M{fMFMDMqE5Z_5|~=`M^hA?4Pi1 z)2q1@VfuKUA{ErKL*Cs?m-pQ&Uq2F9Uq~1C0JKuWwy!_@+kwWkG^|pY9*6WunI`qJ zb!GavM*?*Y%gBa$uaiGdqS3Ik4K!~NnpJHo;zg+fUX-GTM-$~F&+>f|cIu}%0kIJ4 zOJ`4i-%j>kv&QzB(uRQ7^O#&U6kW$tSTCBv4f>XiKEp#3Rc`14uAgm%fg$@ zH^DJn?LLl!Z}Q47%r}wWkqp~b#TR{`IB!Nin4nYYDGbyTFZqhRhGOQr&zrMx4?pG1 zR~~cm62v(&)Rek-=ioUCx(nP$;ozBlIyW1wX#DMMaC{u#;*6gt=0UQ{ndc~i z1$`Y*{~@T=Ko!QDdo1%>GWDfU+_F;)XT_4El-FI0Wbtjh!YE{sZwl^zGR>T)rTLCe z?Wv1yrqb7h?wkx2Ib4FX&cl2nf^i=bi14I>6&~b6A;?GnK=EW%t-+Zd=B*LT_dU!o zzZ-`Y(xs8Dlv1Pwo(S&bD}pT^s=Mg_M#&*x4$K zVGK#NIE?vLLn&o*C<{D96oIlZHmV74Sjom=3v&SDze=8v$@_lpM0?iSt%`9Y2C9Ej8cg z^PGEM^LowBqMyg-kMH;U*gPKDdA;tBbI&>V+;h*p_uTXHcnOfHO5BywFvGN4l@@=! zQXiDc$fkr3_PTD_?C_;{+i+_GiMl7UvxNliiritr-?F1F_`6Zw&oRDd`lZ2ipdO_Q z^~RRfvqGnE8p3m~kzGko7&UzhJs~qh6AjjLfAg1O@vMOuRv`l=6u0Phd?M+DQ_}DN zkiBTaxW;iiB4GQG6q-AppI4( zj-}@z;zUi<>V0|5glfQyGUUFA6+6^*V8@5Lz(NQ8;rP`hKDqb4OrMF7nZOF~%clvC z|2)Qqv)jokubkoa7ifBKayWCb+5^^+drC|p!`O4UN!!ixxjRX*Z*3`=VaY?)AA_GI zg7GzI6>i5X@Hfmfa(LTbKIviC#bra;@Toa(4Za>JP=!s`3JSO~SByTsPNob_EHC^3 zQ^xU_Y%xphh84`T@S;Zf5l@QdDv5{?LsivzF^)K$-byh-I{zrsFq;l;5%7#wHd-K1 zQ=eILI0_V_-+bI_Jk7>m0=;_;6y~5+I655c?hBt69LG#E72~M5S&S9;C{=uz6>rgs z6HqZ;-C4UTT&P=B%Wqik#glD&N7XY1@KB035SaNqhm$EwJ+5^FS9cz+chgp|XDeo_ z;kh-~YPgDh7^)#+osV(S28+2P(d6w&tYop%L_(OC>)#+^d$(BZYv!Q=oH(O*X|`o> zycu;L7kdm{)Y~%y_3|r_V@t@XjEsU!B3E9?3|TDY>UaJw45P(8|M(WJ0M-l^H_-ZM zdPH`PY6_?L-f9cSxG%zH26M;xlEVcobiFFI5&`F;@52;AIT%N>4V#Oe$CO;8xT)$DU|oUB5f$m-c!??0HvXWZ>J zSaNF^INMuJkXIA69n=tmxv!V)X)nX*^mO6q;HJR{*x@XJ0xbYiFkpR*c@O*ummq)0e(Pg z4Y|L7F$hU9(5ef~+Q|DFTiPT?3~@v5OcdA87&VbQ8wjPZ3PTk|WF+7Gh`4tEjL|W$ zir;uvhU0P+hJx7XoQBZrXE%i2$Nwrk^VdH6#|EEEqXHur(`tB|J~JSA2#=n{7qCTJ zgFP{-xvyf*A+PX)MM5!p!Jv$7hWB1}Erw|5F5vI~^!4GyEmP)p;-O*v2NI=g!$M`e z1ojkyy&W2`>{ImuqlCZgN0I{|;<(4f1W|7}RSVxm2?W^E-vVwkadv_$K^*l(886)&{sDQh9g!dQ^H<+$~=6 zVe*^53v%zn?hC@lK%7L_ZMAHlRFm&n`nvybPy4&y<1HT;8^;&9R+yw9!+T!oF=>Ut zT!u!bUq)_Z$qiIq=xPx}X1U*iwgSMIDsFX)`mU%rQ|ft?Dn<|c4M@fKrAO4q*MOYD zD(J;CQ4pu>JVMu@Q;fcWf`Dh7qFB6^)IY%D`=dDIFV5}BO@6ED)~?`;R!-iHauZOF zi_rvD;@EhxptArC6ykunktnnSCQ+x@CW_H{537?@{`Y>;nU|eCuTRczOv$}alA@9% zY+;Z@_9zn-W@JSr;_H4W47q4Q66M1&zjOG@E@j!0e4OCqxLp;!??IIhX`-)(eP9bi zKBP-TK29YyKctor`Pd*pEoOaE&C16L=0QEIdrIVk{XWco@YaJe{(-KDGf#xj?Vk79 zJ^Hap)A9P9`F7@`kf?#VzYg{g^})ugf$2sp;tMmSlpE2{Um7T|b4osM6HyZABtNDB_DM0Hg`b)jMs_4qrY z7z`jkn@mDlB!*p8n#FDA^bUx zf4kJL%*r%fj9z~qrCW=OESC!K74f85V7LwE7f%Qr&ndx( z6#W~LXeQ+T9AEclQj%yTk%$VJa z0kNOx(`!0%FE*Fav9;6K8s`8Y2#1^63#toY_pj)D0>mZ&J~cFU8j8eF0(;&N0-emL zJEyS(M)%nJ^_XJ<#>M(8F)p6}ISp`Bi{_;2EEts%332_r`}P~#7|Lo~9a?@YS5gb%r^OgfAYaG51U);hAu zi6!RXDZyS47SCGKV8P?eM(TBBQ|MAT#dhk7(K8S}4$7ZO=pr)vte-&%CCU(*@KcTi z#nIprLJ~UF$9*iD=SdKkx$#E7EVjZfKvh{)H_LOEJSW+I?d;YVVYkWG61pKfR6t4c z4Ac#|FQFl+)$IQJDVb9f@|tuD`Z`5wXSyba7RrY!+CV7Icc!F~!6+s3btcxCQKAc?v7|p>GxH4FND5rw*Kxac6cf;iL+;5) zK!F&5maq9r@reR6L$9!Av7RH^@GY^`A|*6CPG15kIpj8&6W2oja^6*Dnv=)u)!YMQ z(@(DO^D3M_4Cz^O*8sJaNjoO8(E582aHz3T%MUUKHKnCMookW9=9xGr+pW!-18iy* z_hanO+kqf4<6;ssE`~Y-r~?^^MRL?*GBYu59Ck*GnF&qLDH4)4rwW^L^W-R-6PPJx z;ysp%&8@du~Ehe^iidr2s=NxLXW^IPPn(6U(*Yh+k%)#z0G{%!VqgYGYLTkXDQX z_qyl&My%R0bSgnnI)(a+Zu{rqMfnjo6oor!py*#;9$r-CJ|Lp9A0bEww26!OVK_X4QdLR?@Fw) z`!;%r$g_VL*%%NGU`uGolznLBgPVOr*=c=8u)oo!?0lt1*f}0tEk^Iai~%hL)Kpc7 z<%@~&dSQwXr%tKU@?&9Ma7q)qcgkHty-t4OWbq=vy8p(6N~Yw02i33JHeAOXfL7SI zZRAp$=Tp&z*+5F)z|!Dtn}Po1ugal6KKG~f$<4z5A zEM9{yC-jcOrnD0}w0%4ru5gNyg_(Wrn85M+GlmDzTK8Tom zcIif!KB^0mX@!eF6OBFD3VSXUxwm%K{_39GNnS`QJ||c^i@JFgTJEbVe5G)|6fQ>3 z#waCYbaViKQ;fEnG#NVi$1(Mq!Ur-#%SCoL4VN>MWRx{_;|&4l>BejvaJg zT^pgb852lIjrH|@Bm)zGb>9=%h6>e%I|6Nu(Qm+=2#JJGn{02k5ojXY$Lf7``suVp zwwtd&pmh=NT(;uW9;MpQz1xzf%(y_lzD=X771a#j3bT)YKfI(=gCAaE?_~OU-v?JK z6-A*;2Cqy3ZJYvHRRuP=yW(4;(AgDu&tCAi(ymoH+~{&$3K-sZO_GS0;8y-nG|LGj z99gm@m?r#c$#$z_FbZUswIg}zqi!cWL`%|?0f@+wzX0V*{ippRK-i6u+-el`IxDiW zw*xTYS+-ob@6`0Pv1y1ZhAf!D9xW@>$0^a@WL2Yxu{ z4vaSH5bH%(xIMooSR(iu*NYB!-8H&apczqV30>L#YNp5k;XFd*^3B1+5bhn+pFEBm zzO8x@D#kKL+cGIzW`BPf(P*-;ibk4G-;=Gp5mo7AT4}bHNKN`L??nDo04@* zy@sj#cH(n3CN;*?iAKoDvbZR|}EaEN>VGD1op3KHtap&jz5!>vWnVwRW5B8e|}s=Kv(SccxsuVYDp zYzbBiK;4Ali3k!fo)FX@wat+;)DT_}SemOss2yI3!;`2p4gHU~*?kJZc|lLBZ;|0! zMGl)aWV0ehP5~m6M0R#^x|6gq!jT$Toy2OH>SOinmi-4KOXyc8<&krU%{hcQKlJ4s zYI6={PPZ@TFq?B2+#S!fkT5Q^4F{=nZR%{BIvc6-5l-R*A<(j4MJmun-(x_{VJbG) z2l24J7~S^{Sr~7sb1RNlX_pOKYKwrPZxPb8{(}qYm-L(4X*Yz2c(8yTjydbX{dnd- zlzCdpe3xaQ;&JdRZeB6BuNOmh1n`d=_}`PdCrjO#-z3b=g8=dy5Ciw=tEutAN3+$; z%)=#fGBQt*Iy<6{dM=MQ_J!VNHZD?=q*jSG*-*>XPnNoWyN$R8w#CZ!-^7WknYuL` z)virBxh{xWI^OCXBvEOBzmWP~ky9`otC4|8FnVw=9K6QPG7BJaa1y>F3SS7!a6i66 z4C5I4h{YRh==b&PLHCNXY+T;r&_w@9_BVamDW+hh1s<1g|Kt2m?{DLJUO0BHj=q>P zy=Mr(zQ}l2Ej9Xglmnw280Eky2SzzC%7IZ1jB;R<1EU-m<-jNhMmaFbfl&_pzn23Q z_V;+0kd^}#Y&=fN|5A2UuwRK?$fsR(Cy1;Wi&S@@4-O;p5#n6*n`fINp<=XaIkt4L z|7E>ZcP~a~B1z8B#X({$!yoFV)Fl8>_}ZGy3GO^TA0)o4IPE`rGw$ZlDW);3mpo;Y zt{ANXEbM(oWfQG)oYvhNb-CrH8+xVvtg`(o*-k^5q!5V>IH7A2zkeL0aI8}JGWO;Q zyE3!1*(s-ZveO*{npqFc^J;-``97ZAUus3sxo0VhaF%%N50pjC+zNzq|FOmB)<`O` zs5<>6{_ z1rw9OqT-<22#0j+M&l0-ERWC~!?Olz2)X%@+NzLEsUDVslbEtHBArqz&yzRP3fxWH zh6MvW#sS__BCElj?4aCt2Y@LxIPsFSsn2})t_%TuP7siQaBnRS-hnCV4!U(744n4{ zU^G>P0sMS0*t`c|S{Z<86#;-`1z>rgT#2m4F+nfBQhP4;n$dG*Jv_YsWH%Viha@C! zO#4sAB^cm1(to^}1!5saILa^eA8tWl5D7bQiiC4-_tcxE|KjLB;cS3q31t~Fm1Q;yiDFY>c6S}3)z;yKjO67CZcE(*O z)6aum`F5hZM`Yv<72Qlku`dS*42D#GU#X)LMIB@w{x0|pH=Px%Qx+?^}LhE|%=_9DqJWP$}t|3sBON*$@9mWwzD5 zgrc4uaf7qRxx7Z|+!m}8 zUBxad;d_4#-B9Lk(g}b4Xsf^=9oybn6DsV=oa)XUk@G2iUxdP1CG?zMXkK?%?$vuweQO>6;sYc87rTG5v4rI+1IzYr|Z9|;UAE7dx*Ag^H+x(%V zSLCQlWcHFjJlfn1V?@4s-bSor!j#gyCgZa$l$JB^L@|0OAfSWxVX>6k{xm2DJRFKvEn$Y4~OJ&P1Zv zK$6h6IGF|}MC_^c<%n%AC?XT*sTQTj64J(DF4| zTNZK%Pe)UBdz&iupiSMuri$HYQ+E_Yb0+PN^nrZdUJbGJ?i;YB&@kRx;yc*Hr!^7p zEpb$(&9~ltKob=doSd1y{opGNn~N2>gLpbKZAWoww)PW7l^Wdc4%bCO`QKMG-A0m^ zFT!6&cmFK@26z^;+zIf^<79wmLVXM#VzfPqhFZ99^J#|>Xgpv!XiQZe6XI$fSj31^ zTT;d^gdO(GLJ*STNQeF&@Wwg(L!GO1oF`bo*$uLR5du9UqlTtzjUDuyQ~?PKML;P= z$DksN1-Y?|*VaB6?PGPFmc0;5v)V$YvQNo~Vf3n+i*sl`{{e^hXD`SpAR{@9*BYt{#2)rGf$hO_rNa7jmKl> z2E4-Mi5}RZuzap%O0NFL_$fxuy^@zFG&ls7CNxj@55;DB2GTLu9x6;SxtN`pdzr)& zWB=}rTyTaRkKsZ9?w;QiTeJiCcZ4q42G?DX_%+BghQs+Bnu7mxKu1cXx10J*KXl+_ zAEx6SSaY=LGHC#{_^)s%M>uES4$$#s??o3!KcTpT1^p~3iz7bq9~VD-X6}G_mtVYd z$aCQF*Bf|uKr(^h`tvP@(}1B_$u;&c6sNa@ThDs_G zgP6-q;<{u5D?yTgBJM5`ViJY$kaBBn%Z0O8VHKgGHY|*AG-FI*8_SR@LMf1o{_kaa^3Ldf4^@2t*`rPHJX4~CoPdAPIpu=#6rBM^EVpI{+-u4!)5VP6K7ISa%A)11Im|7{xHy9v)_>ag21doXp_ZJI`=exchmk3TL!C9pB{COR~H*-Ue$Azuo^ z9U|b`8t&ULK7?YmmB07+yDPC3SlUfIWMu^RqtKaQJEV!5Bo$-8dE{#_s;P^yE!)ZVZK@qSeGQe#@ zr)t_dW5(~KhXL+h)(&?+kwj4J9u(jIfboly)^o&q8SzeB1 z`41gmIX(%*CAGgNEB^>X_m_9xLWcBKl0IRvkltQqnh&Rc`e)P6A(Ve?1p14VfL{dY z7sr<_I=*~Q(h>2&y%&2d*v}iQ2cnNrGA<%tnot4@4>}uwfG+ndQVx3{meeNGzt~Ur z6S@^nv4j&$Mrdt&{})ryq{8+bbTI{(Mi)R#5`2rfE1@t@LEeN%?_55NM|S))uX!Hp zZp3|BXclN(GQ~ojTk5vjCZGYU^an6l^EZHqSrQmfHB-!epKys9l*2{%L?!mW+_#Ry zxR$i=azJL%3R160x0xj9D3b(?lZeLz5e1xe$qr=L!u_UjTPbPCBpqRs)+Kp#Xlj(y zN#H(pC4DllqCNo*b>v~4i3w$29RE?e=#%pOSJXr^Qd7@Kq-vud4)mL5HP|M6G8>TB z1ewu1ho9&$GSlQ{b>BK+>iEi|tcB=n8m;+}w*4)jA!ew--9;SgxOWC23wfS?MR`Wk z`8CVP)3bU;VDZq>et!hH8K}U0jm!}M!>GEaGPKW!_X#ReHDE-^AAE;I&||zObZt3$ zpvO1C`1l*ByfZ5UOtbqIPtg5f0`-kRp=82=+4n{6|5^T*s^a$G7piId!{RSjDFsZE z)2CBprk`E{p)^fb+?He_yv6VV*CdkH#E|v=t$MZs183OPMroiNKZMzGO21aSaK^<5@)<655ZDfd>Y2Dp5{;kb`ifQ(q;8=m@7*K zcH?K<8ZY5cx}G23B(*oDND$a2+WYL2puHDT6cU(FiqQ=n6?OgATKWK%c7$o< zB!pb{8y&R)*X}(bdk8J^pR~5F`|;rG`rzv-|Em+`s3N#u%l^Gck!zCvZb4QQqJTbe z*mTMh#S~04sBh8F@@L46AMRUFbRNm_h-~3tpvyxN;aj7}e^t$MYV~%v(Qv%U3HJ&{ zP*&NaPyvwy<=sGjcdjx5vOa*Ci1sLl4FJoR56rm)d=ZX5hx@7JetlLVtvu`aUl+nW zEevg1mxQrnp4rcZ$E5RB&;kfJwT)l(f+#h0(I0g(%&1qyYaE&F*HQ0k9xs zg%$9d0L)NfBFapW^PwqtN<6*6Fmwu{hQ%(R2Z2HWKf&jox*Z?Fdf|j&$(ug}Tr047 zK$`EHRVy_HH&mk-0z=i}TuFtXMxGEl1wmS01VZ_vGUFx>N`ZCN ziTA95kW^gPQpK`((NQvXR{tk>Z$fN2?rNuL14*haD# z&9>{HjFFUNVSPpIjCf4OoFS>z7vns4SD*$ZJMAbr&pio0#pq27Bp4nxLEtuD|89!< z7kyDlMfl-;negT+ytC&Dyzk+s7(FroZ#tX$BJgSn?-YgCa;(5R2S3GV5wwC+2ERMm z)E9xb3E_1pyf_c%a`j8_Q;e<*z?;pcz6dVR*MFygL-$pY{Ad z0Pjo88VR1tGe!c`WU{VI+4<~G$T{bWC#V(8f}3NoXHYGZ_3pv%m#t)U#&|27d+69t(B6`jJ{rPqebGdY)6oip92lhms8wi3y zreAEo^p5g|kjdQFI5$w?p`%birw?xX{uAw>)c^rdRuS+_y+B@2DcFZVa`lVwQ;aS+ zU8IWY$lY5Jh5Ws!CGXaff0mL5nvy^_(}i>FBz-c8)Tbk`)jZ8C4s_wv+&lou?2y=0b`RT-8JH6UVj`RUEo1F zGElleGrQ6v%IHJJ(Tw%g#(QSOxqM1bw zx8|p}9y9XrYlPW#yq?KA6J`HImoUd04AE;~-o_)<4CCIUtS)#;amDL6d8kewErP%d zE>)Ouj%G}^8OtSOcI46*Y|1jOP|iRKe5s?G1e#jnZ;I{&gjm=VA;Y%mluzaf4jWCz zGt8(?mzt7{KvM$4H1)6%38iXle^b2%;?O;y%HPy7ld+N+)#(Gp8@$w@WCt1)NT$K_ z0}YC0o~!Sq44!eWmBC8`WnRW2M%bilF7Qblekv}p?f7;$pi}N!T$G?c)v9nm#VZCF zL(#X$I)FLee&aHPx?eI7S@JO&V0);f8Y$yqV^8c9{K+&|;oGX}7{j#PR{irKJ|&R%(O1bilK(EQEex|K{p&5GQ~FR2);fqiQ;BWZOSJlQ z{NSF}$(Gn8pgPlgNs=5U&muvR*e8k1cHe}1t5Hy#2kOn$iP#+64#-8fC1eW4(ZEu0 zYc4YZD&Uv@(BgNI;X%KmwZFn?V`Uv9WHobgQN2HH;>q zX7~nW1%7`UfK(oCRzjMTkmH4r%t>YZ{-_eanJE086qJYm@U_J611yFISq#hNVPt+k z15k?QJ&NY0isoK|=1cR4<}iNmekb_-a=Y@o3EyJG3FeTG-`wB%On$R~@_R3|ALO^l zC8ax!@%hF1y{SjYV@k+?%6A?=#pnbf#2aeUd%1x#Z2U1%`27jZVyKcBk;L~D=w@Ex z_mhN744*k{1o^HY4+{W88T}{4?|H?qN*H~?iDmLIwi13!6#VW8;`bI`OZdHE@!M-8 z{6?0ChX6{^d`r>1Q_*}8KR5?Gp`tt-axdiJ$um?QV%ras2kypwrab6&9mn4eXg??q z%PlqY4;@h+D)=vOnqUv|S2m#NHyXot5=98eEu1SigrGjE+zCLPhw!JzCWIF9m_%)S z?8S*ikYp9dzBvW&w8R@`P-XM55svn7rsvygYGpfZ?m1%db8eUbM{#KIPntxjO%|pu zI$oG+t{$W(0nZM6)R2v~W%^^_9YRRMmYIbo_#=1YJ=8g0vH`tgdM}G~@;YRP+zmrD zP}ZG5DyYMWu{-s2?V2U{`lbxkooKydmKJ{jl*b2#8d2Q6TNfN`?OEs^0U23*H5%kV z{HQJ+h3|C-7HAO-Yo8!4g&hbCj@R(EUN2}FaK-3L$Lgk#7)@w}M`C@_l$Oi%vsv%M zkE&A^boSJmHy4>UMI_=wYH22@gU`irf8+ks%& zd9to%vA@1!hEJDm=-Xd04NXQvqE3B&Aa;Q?Tyh;Yn{x3PLZc22SIOOv;Bxh+;ink= zHMl-?fU<(by!n;iOnrk7HBr-Z0e3c7G`e1VUih)L4bJ zGEhoCsc}}IQKvymPR3VVO7OHKzq!zc#F)jfH6c%8bFv*Ln`+eR`>3UB(9!A|wAa6v zNS>MXDZiwUBy9Ye?Ff((+hoz#O^EyYhqp!VF78?Tiv7lDE`0VLSgf9f#p*?TI28{U z^5J+qEa3xOT*AvBa)>693*W?t1MqM;v-ZYA4<5`VlJm4n7BMAPzXCtS=&l%X_7Vw7 z-@?2M)=+0Gy9_wY#{U!X{~Y{Zi2w8P|7iTTa$tW0N(`bvHj%N)r%Pew^A%E#w8*{P zH)6ESWb}kcjytzZ#^(9N$y~H!b+N#fTaI#gpWuI=Swy|gb8QkMIQxt6U5g;7vbM&n zHU1)e*CM+}5lG=OyEx@C`=`5u2dE2lF=ua!L0p(;3rfgqr~|XE6Kj#nSVNDJacA5E!F+s;rfJV4a`3ptGhxcM2C$Cx7EayNoK)FXu&~3VZ+VlX^QGOgC^nt~hu-^O0Z* z!7547MkEEKXqjtLD5f2O&RH~5m+qh(9w$!rsCJ%n82^=F9Tvd1l~vl@=ktoM4BvK+ zSLv}Nn9$j z;Z|YBA34ZJkNqCy()a+FP{b`d^R(n2QbqYs znaD-u1D7apfml0$s$z}rBY;Vyo+9l;GJRStVn{%fsP-~893Ztoo~^a)34&0ooz>du zr-4ZePuWl&cZhiMmlXKh>di@Wn1#dAs#?@f^2WODn06fN%TUUFhdLC;G8{_{Y^U9+ znI)EJiokJhi#lx}uq~9{ia%9pe*UDbTEh+GXQRGtuS&o2ch;j-ax9DPnOCiYLO|ht zqP$W9j|=eUgZ(f%J_YvwC!n?ofchCh-Q@#SW3j5a4^u=4`k`9ymL74|K(&6D5bB|7 zmgF9B)-zRepc7Iu*lX%UN=0x}K)+VsF;2i4ytg!HLP8Uu1!_a85xj(Xb$$+@#KZ=x z94>%4$a31(?@b5Z2bs;XcK0}t;q@q^EEz=z-Y07>K>!N9H%EEEE!?H?ZjeShC0UY} zY5NYB&bW-c2Cb~9f{yE@x~L0*f&O`W7e8{x61hdtUL&Fu$^8Nt5Umyb1zJsf;he!2 z+!-!iB^HElLrxjOUAy}crcKmRSP1kKrYa11B~*D$$SdbPA1#C&pyi+dEq%?P~K@ zw1`9u@c*ET#ANa{;L}I;`xTk4c_Hi&cLSp}N%UYb`qQuKVkbstgcv{VdWHjjLF<~+ zdZ#6O_(VNr_+12!Qi~u@EMf6@IidZF8o;BIcrX|D%{fUi{t6&D?&O5Y;EeFfl;PO= z=WqE`_49B~fs^+YV~vwDF5yZFuGHh#{Utxx0f7Lw7RNtgPAkqZiSZk9{di6Sp6nv*A zSYC={&+F&fxfQ*Jepv6{$|fbl+j2kXMFWL(L^j}PwWDe=$19#wW#{Djb*uhe0}otw z5NtrupfpW|Gyx@tpG2fK@(vDu{w$j@@_4{2cG1azVd%dbb^`x$^^f2O@iZK+aPayL zUfsrHEt4Aqd|1{*2C@w_`@k+@=>opUJ?;g3d<<6nJ!?5IDtWvH#yivkoqlfvR$?d) z-~RR4%lv+J9XT6r+|(OwD3VyTQ9pJYeZJN@qDX=}X3{Irlki>D4 z%`Y{`N_Evg>`K+(q9M@$Mi#mFy%=1L$&OkK-FtB;vY1*K1AY#E)RLMbmJ}_11lAdI zUFOv>H4hDbR0Hc~&Lu~%L9FGtBtqbv1q0O}ZgRu+)xcy9Gw_X}$m+41EqFB69SZfl zl3ZLD+I(=qKvh*0VmH(P3Wh>`rt5jRL=?W0p1tMQJbipYM78i(0c|@f|f?y}ZClBe7 zTn1TZ;i)DwP_3VsLl0w4iL4%vu##j|tNFfJs}#ex&X!ZiKD*TClnH>%pAHfMJ6=

    A(v;VbN$rO$}~47x%-b3_nQBwb{mM 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

    czWDY!EJQ2 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

    Eh*yJD@fXoingBDgQNAK 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 !GrJ<;=q-s-9T@+ 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 V2KpQ5Z=k<{{s#IR_&= diff --git a/io2d/src/win32/DLLs/x64/Debug/cairo.pdb b/io2d/src/win32/DLLs/x64/Debug/cairo.pdb deleted file mode 100644 index 5eadb43c9656202c0597eb1016206a443b57b086..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3853312 zcmeFa37l5r|NnocU0S9TNivaSDN~Z{)4oVErbSU^rdgU>v)pEB69yqfNl3O3N+E>o zSt8p<2t~-glRZA+|9oB7Ip@CbGv}WAe!u_!_y7I=e$JzJ&$+MbeXiww?bkW?b)Oi? zuPCo9FRDuGe`x=M4^BIA zj|KksTVT!hzyG=ZvA{nT_`lQwed_=3@5BDdLC^yKbn5??Hs}9vws(E8M@k=6pHx?X z0%6+k)UV+`E`1KNx6`n#Yb4v57Dk9UI?#K5Xo#2v@;WTwpQWaN< z^WzUqoqDN!a+>i8_tq(dRFBUsoF=JNCe#$CKA$~5xyi4u>(>y!qv}dWWpzbSUVdSG zLR=?OV&iWdi$66=xL&$;aot;!E_IPj`K)*)N<$MqVjU*GiT(ezN1Eu%o#blfB%6aM>;>qFD21$L}t#3 z15eD%9_Re@qw%ko=s$GCn7+e@4#>$KIC4~G_COm({cxSE%&eTj*_orWys#Q1>JeA} z(b?GpM~uqJ${adkl%w=COw{q>JF)Mm?4e_^w{#kX>)7nMI*k)`MvNXl+{Q96+r-l( z(cg<_B+-l*?1r&RxK38zQA2VD^c~gL%U9Dxz3hQ~2jmRQ&d$ts!`U^_|K#kUqXxPP zCO^#*{YQ?@9@Mx0z??xtM+_Y~WZ(dk-sa&tqsCV>v{kL`+?|wLSRc-bPdVzX`CAU*?I}x{i z@$lRx;dUKvha;X_#JzWBoLd=gU-EfPoZB_7UaHxLuyI_A+ku3CV4U8~?!6o1;(Y=) zrRC!|y;oel?z_g)vJJPH+;>QvUV~PSqp%9&+}hx#^j#Gf$L_ctO#VCfj)m9G)%!Ef zF6~`6HEGWV9bC6QyTsf&y5U{dH|Dk5(p=--draKD zvv8CBz8VyZ;~Mwg4BS0iUFYiU5f{fTxG8VP#l>+uZYsCoadABE-rEO9FTAz5DSem6 z-TM-5cagXF^u3Oo;wXy?Zv$?Bpf@_s?QPtKk+%3c^d4^4;I>bbSiD9e zg`U813JNDyPde00;ky@3i!!zx)2cD<>*Z;#X8hlrzT!mxsX^E51Ji~N9dUxZFL#b@ z<>XH-a0-qZUmD3T&MPb#KW1c)p5wDB%1hKD`edAB%BJq_R4%ByD6>bwQ*&tw+!9 z>Ep-rAK!22i1B%)1-*NXFNu^*Ci#Vq)86URN}ZHll;lODg=Gaf(Y&f++*;#D_wV@; zxz(pzkGbWP6;8^licBFa>C09&to)J)9j?NsJC1Y9DV$bSSXNbO{Te0uMJoy`3o8gr z_sOnaSml+4Ub37n_%U2~e&x~WIf^W&0{i8aO)4qODT!3lGw+Tb(}sAxXx^kkid@@xn#bI$NqZ%RuqM=m`=t7%d6ko6+DgY>Np+)nk+LdZS^4jfT(<&U`j9@Y_D-s!;+$OQ2Z)|*-Z7}} zmyPw`r?!7dVP2)FH%e1l&|lRuu1wVaI@Qvl+E!PZ`1cL^Rh66DaW?gSza;)S1vJe( zsu2F_FFN~rDnHvN?4RJ4*k5!>^h@Y34v6`cs|dV)M)vBO=%+1@9IvUUJhdLM?Wjoi z8vn2=FWViIMAxnICjSQ~(TOv$X&agg2jh(^N)uMM5S>7AnKIEjCm5D`8j8&LADZZ2 z9<7R$msQf1qti`V(v$dm9i8&tBV5Nbr3t5JxK802j7fNzc6?a4j!d3cRu#!BiR6)L ztJ^ENZn4^0X(3x_`IRPIt)Js;;N?-_8r{mO=_RUrYI7_{lj&AgPmD&U6_(_bR}>UB zL@y1|nn(M9+UpZFcF9lUp~k&`u751>j|KkEvw-HB|6KoA;2#V8-)VsgvaLDf5in$K zQJlx3NpmC32}1l!3oBT3a%rAzq*38 zW>rqKTx%q)z56Ek7s%|UT>8~=kF8G?Xa59$vreq2W)>*F0f~Oz+~0&du(qH3)YitU z{b_3#<;AQU-1(;UADrMnsiM3(np2fWWnks3xQ8V8vnRv4I?vrR8Cu)#bPQqAHLSLu zXJQksHkxAT@{?@t9iHeHsbUpg5-E*nF|Raf|2uYXd9<)1ud1Aipn5PO!Ovf%_{LTl zW+v!V=I50Z78ujG;b$fKmseMqrJ#xXqy#_DQZ`-LiGJlJBuuMFrFmq6Uu=b?^o)x6 zY0aOLS5i`*@9x{^UOk_1^K1OQMWg)21pJCB3Qaqf-^l?#cgxJ!c&zV7*N~G~kCmoz zzCSI5#ZJ|9?`;5U=Tl<-rR-PbxXR<9>dSzxukS+Aqqci|Nfkca{6skk5w17 zAh&t2{e+1l$Fy4$Pid%s6^*ZwT~XWq^xQ8H#+1T}D$^E}_XNMv>XNERv_$)xYDaW; ziT-Z#u*nJk+4^gPk^FRU!q zRx~|lSptw=mhMhu+lU&T*uvcS4eh$Vp_PKs&_sERYiG;J2;}J zwkw;4q|xeEl+n}YmzOXeS4^6yreo$KGm_t9a^-dI%G;TB>e@Nb%y1pQAt;=)!gWf^ z-FIcq^-Qy+IwD6D zfm;_UtIBzBGD%&e(Y<&lbY&2YE0@&LwIh@nef*xxwu?)X>8fVrRhYIjCz(zuO%6ZR zoy(HxROA(~YiQDSd2*df&37u@S%<=#n^f1@L^|{8(2*_Fe_T;Z$1fg}runt}ZL?H+ zG-cpEQITD*+>x%^fR(ldp}MB{HEbE1T@|XsK!!1-qdw{CP#s%1wwI|iVOZV!To>vetB4BY`cNIabFVON2=z~# zQ{Grh$Da!u8{JgPU)@$>nJf;~iIs`ca&xFo%+}JmB~&Ldy|>oZ@s@6;?k7Zl~F zUNU@F>e+y;Ker|L2WO+U9B;2f$My&A%ble8j!<2mjA|R7Cx_);{OBo6S5OL+xvl!|J7YR@dS*Rl?pavJ_1pHUFrD~fHny_iJrJgAnvD%lW&B_=ok~*;%ozDlOowOL zZXx5QK5li0pB-d1rLdXPT;gG0uOcsQ!0;!1%BJ@izBl@h?1VlG;gX4Y`IEf`k>YuD zXYSL(IWFlxwiEj9<9##7d3-1IE6aGgUR-X_R}V$&^?&h|o6S8f>db5@;ucwqotJL_Fp0|SjW!0szQ0zMy zZwGZ^(-LEojX{6++iQ~ z?D{^buHO*6?F^HStx5IGMw7oOD;xcgRM)N@l>Z-->cr;b()%e~FJb>#asC{t=jX-P z{FhK2)xcPs3hUQ!J%1gbbo~~pQ$)UxnEGOX-IuG(H#V4B!E+a?qC2Bjx>8~~g(Zw21meDiX6;xn&OiQ9q2>+s z6a4IRG4*8)65JD?do@h-^CMGQ8rAmm+ob#(*Y@|@q2g^)+uzL4<+n?MpXp!yXI@Qf z`}xnjcCGE_ZQYxC)-1u_Pp&ER=81l_o_V!M@Q*$7QeImo_|<-%m73`9Eg4O`da>Fq zcPg3Pb@KMw6n5(*{(00d)tlYI{A1f0Cf{umbgB}bi?vPgi}eR8huvd-#pP3DjaKz( zk3>KJo#}Ro?&=s!KKHEc?gyyw+QinTBc#g%>mVCc1ot}y}wMFrKj)uxpl#d(}r2e z!`BivK)Dq6eml_1F^~IfK04RZjg9NF@BX#?y%mz}Q@YglH!pyz?j2Ce&y4l{I$1hh zLv;!Y^&YzNqkQW-h>7`DI94a8yr_uo*Q{+13e_v}R?X}hl$TWNeN{KygTwXJkNJI( z(s)RyUTLJ1*MIf)y=>ksRL37@{W*hd+C5Y^wtskNsDG^ODZcbtI(kmbDtu~=8Em}~ zRO#gTbw^!$2k+M~V)npjsf z0jk{|j}O%gZ;z^j8KL^Ib|#&^p*pd)q4f8wt)q5f`eym}ukG)TDQa5-YWr75qvaJ< zl{qFc-aGnA&%j!`)n#g3ZWn9D;6b%??BtCWs8=RT+ZtS_j{mBJDW4%R-6@ko_S%Og z_y;zMDP!evSRFd?lV{CUPYBhG--LDd$_ZOG8J?hDdmmjoC;B?3yUM4X>am*tYK_Wi zM7WN5g+}v_%tU{Gv8i!CE78xqTBCSRin*6hk4=!hsky1&eDTh$-&F}Z8g+{D7;4#2 zQF|I$haPV>n2m1fjjBU$s{1aA(mXn*r*|XtB7#}tk4bblFBB**C;RTE{`<3iFEc9V zvB`9l8NCaVQ&e4+Z~Lopb?NdRT>%ATI!E`O-h_WjUH6!x^_O$*U5=ysPOa-c_H*)C zZfS^$k5Bm-pX@$$L4o{Cs7p6Veom|Fo;vcAQ`db-@}oMQn|L2NPMrJXCGn5Fpp(`6S&jl{i$^MgNg| za%^NO>q&w8%peuAp)TFxfNtC>E2p5Gw<2v8OnM@9=*G<~DGM?ZVSsk?arzGKbG21% z{X*23K6wZCx!*m~7skwclFCm>9rskmR`;gAEe+}>tPX5{Usk7%eS%d`Fwu++6Bnd8O=Vv?eV>aPNy`rr7OA*(S?(^WIL5*{p>LgQcHNHsezIhq>wRRbMWSQ;xJp zPDl1YKfTP@ELr-^um>z5pF)Wx%nK%{mqeq$X=vpWwLyRFHcN8t*hKRx_Q;PbD1f56R{DavRC@C z{O)P|V{@N|QNYcKo`g`kfY^ zCT>)@DflW=HhS0_3smXq=h`;4Axd0nh?2Mu(wQ4Gg6VQ^SL4GjdL?S7(-yRswTta{ z=D6`6O1$cK4nn#Rf7HhB_B&n!jO|6pE?v>BeZ~5mbUbZYCYH%Cx6diSHo8tl6!#cJ zajy)G+k4x?EV{kNGj-IdSUNHYH<%998KvL4`@#8rWmnRXnc~H%^AL}0^_oqW(+xj; z{&(DGTc*~gpSbzzLHNqoAxL-bNsGq!rJhac%wy4*{On9$9?VaC{OcPNA=jOV`t#e6 z!-zjOG5)xYwU93m*_WGDuIeX3F2BC#;%WOud%mM|)#nt$9>#8F$#2>~6gNBW@SK@N zqN;JBtFOL5=j&yrM9PZjL{%o~xTP95@8kn(>u+q@oulwmUPrifXuKL9*8zzB+!r|- zozycDY)xLh2Bf`OZAa-9JNg#0xm4E}8f)iigdNtFyfHjg9ShfojHMb6Hp2|kl2I!y z1?BnGdK=H%EwJ&|-8VLD)x6T=sdN9~1N)8`os}~nv;XK5bqXR^N2g({Zz~f0M`R8d zm@{DDppmZsyJ7x=hmXq|GSZY)272-3>g{~}N5@UopP-%8ALinIoGDvB|5PBQy_Gpf zB);5pB9qE^)1rV|{5Bcy@42fDADa-StuIrp&7J=EsjarQwsQvYIlir|cFSxy;i#<+ zMuwo1ZuPzXkNV@M*?&m0qp@4{IfL+m>GQ^`V1AU&(j@8JxGMp1J;GS5bUpx;&Uwkx z=|3z|I;WYtYyIc9=^DJk(wTvKFr7;OfPi~XKC7PO!eOKQmU*u5ujY^#jcmDtd^9v<}D#q$6u;upjWt zF*cZ?D;t5Z%eRsGm!OT525&t3#7#qY^i)O%BEt!_CV3jXJy+gU;e?_{K^^^nVm}m? z4zEwlYC*(YS2o$rPv~>}@(!j? zbw=elf^;xf^`Ap}b*3+V@pJNGK3ligT=l=&PXz0b(v(g-b}Xg7M#}g~T!HB?-nX{$ z`;YB5pML)_#;tcXEeU|D9(7iIzTQvCCXZ<|g7q%M)^-uVsL1wvnLS%aHkX}3F25e; z;%VEHw~C03zd<`j(GA*B`Br}r?4vzSk~&tQqQ#Q*Bh_Bb>?>0 zUg|H@M!F&0u~)j)_xf9R7fo}cDa>?jU2La6YG1xx((ntWQSI|6x2)C?k1jnMR}awO#?3DMwBubGe(`n=j(1)CFk^F5 z<;An(G_!(soQu&@pQruavBb4_rd#hgP*1Nq@bFs`AAb>5N1N`iAe%ZznKqG`lH#}J zV7pP99gFT5lQ%oplUo{YIvY7NWn%d>{#JUucCxfJ4qO%3Tz!(+H$^x7tfcLP9PssZ z+dA}8u015sMz_PhNp&-ecqW+i=xt8I;&WKqrJIXij?s<1XC?PoKNNd6NA6Md^NfD% z*ax|*+=BMfSeJ%-Y^<~WPO#m`Ufy_Cqlr70-l0)D(K|hb#JBS7WcK1)XcanR(VkUN zM>+fTHj8kBX;mINKS=lWecb#b+Kej8s!M-S%U**f2Bll{<4O}N9%2zgW zI$>@(Ct1F9yqWj>xbA%)Z~wsVht%FbP#%=t;QS;Fx1b&3)4ah=v-S>@X4ye$&Y+Me z7O&5WwQ>6{h$#w{LtXvHj?%31NF%%o89I? zC;Cd~LKt%S{Xz|%Uca!Cziqk4)`05sR^#53xY@s{Vw+-OH7`msN}2V=8vN{9kX=(X zXm=}8_pS5&qIu@n5Z6!n&%&?Fgc-hfxo~$BxaK43*DpgV(62c+SU&1Jcw5wcUwmiV zNZ9_`SmKD9G}*7Ad;MRPakJ}LwS#o@`XZSr)6AS#_0N8uZu&>BKOesb9$djZq@5R< z2mi(P|4DgR(9Y&T&rSE@Pd(F~f<4xR=fQt*UwN2qZw>zM_f_-o36_KGt2%4TVWP3` zV*hi#`MlKsToBk7EtrOvzi(m7WFl`DShoxqUzXmuVfFHTy(oI_y?%JPzFWTUHpF); zF!#pyFJ1SB@F}?Crt-ecNT=6SQ4eeN~#W-MLa{O=h{& zmNXQpe9k0I(OPNp77Tpdg-s-S15-Ecy94(0key9qa6I(pP}7N*v51Gk@n_N4enI;^ znJG552yaQq;9j2@9K#e|SNzY456|3c=PF*_x2p1Tjb+`WypM#+d+G(j@<`14#7LE1 zKZ?(~=~s(QXtn~F@BG(Jl*Q|$PYW3y%YRMlf|9@R{fW3FqE zc8L1dbID)yqPok{trj~y{|_ra**vWLy0|v8M^4MJ~WLsk7_0jY)}(c8BwD)g9H3^9h${aeBYk zz0=k==}*PuWr1^xR*y2Kz!O#)8xYMc)g%<;6H!e`IULHozok9BD%at%b3mkdOC z$+#rg2E6?nYhQg0*L`?kHmUzR@}qQn>!=N#NGO-yr&j&YJLH-(%uAYXe>>RNUhOXA zGW9}hl3YA(yR5yA^6VO{zjD{wG2Xo=pS|%Qxb8~FFIc{6<6UvznKthAW8>A4a%nt~ zEsj9uVvF^cCM!cTRWT>?=xunai?NB~4Y~ZbqV$HI@0Et zbWG&<_TIg65})C#-l#r@TzvN3(#MGc|w`E`+Tlx_-O*YdU|@a(BJbbHlft|&tH?u2Hu)9%HP3#IN4+x?!mRH zx0kG{!#gqF_epX*tI59U`02N~;-62Z;TB)N`DpqX)g4 ze&Y6y>@vz5#8tM6H{|mBhjcuH<)(Vy2lrtA>h;C(wze8=^cKx4}IU{Ci0lOpw2w{lRK43 zu?eBpe|}$~e0Xgn%HP2;&+Aje`ViSpzf+i*;(sN?^pEMd2m4L0F4}xnS47a!dO`Kp zt^;}gGm&4aDTuuXp!u-vv(Z;?&1XGtdd247e?R0DcOPT@!6zpR6dvD?zYcZ`^QaoSqbCY zsBFF(w_A;EV~J5XYjC&ra^3YHnM;1_pxtv#+*j53w;n&cS8JYp<@h_cm3B-^$3Lvh zRK{gC9X(ZNwNC$;dbt8yU&rUUR~y@!a#vXf>x0szatteD^+hVr3^xotKh)=E<37jt zSBK~UB3EjC={e4>a2fZcEv&PAYac$qy>+w=zwJlSOV%FlFgEc{C$u)qLf@9X`^+2L z%J#C0Z9o2VXRoRmyUE7OO?Y~Ypm&v$mx=6|fqqzBQrT>vT)JW>&BbqCWXnc%Y%HJS z=j5`h#GB7P=GyjD^fa&5`+4_}ri|-M7`%yC+l;cI@)mOWHq5~DE;nz%wOX)GQF^?# z9M!`OuD#v1+{kUqD{Xp0*2HEkjkV=ia{UIR^v<@y2LIpbwyd_fROvE#^1Isq(e2o) zgSO7b4CAFt}25OV-b-etUaWC3<0$>s~~* zT7le;t>)cWr>*#AeZ>6cpS$g`({q@hJv=+zOPqSf>$Odlc`j-3<~*9+Nmq9A`*5a0 zI^rQdKTFi%aJ`2pKO2z;2s`Vhy7S{M3jGA^Y`+|qAC*h6ER~-c+=KaRadG z9#*zq8wrk)x@UkNmYWTCOx8VWKgSvyd(RK-deEx}oexKWYeX~qthpC_1pSP~b=u8~ zNXOAK%Gmazvs^+hzi-=yr#DYYL)Y3QvF+%bh}9;&evz2Dh0a0fYwqV+K?To#>~Row z4u_w$Wd#Rq^3E?$ft4)vI~l%TA*YG+$`#{Ckq*rvEU$lg%*1E!kiH)yz z-pqcSn{mybGtjs0b{}J@>LPaS#2!e`+l?K~KKfFe^&8qeM=+`9eHnYCFB!tiYUohQ^XnH55@N_ZM4b9)s{JcrUn1Tmd~T_+-35VERA|L znOC7#-QCVoXj;}Jv#VuGiD$i-S+q5P2fx2frey^B3`pw0pqXzd^ zjeEYIjwo(6&gs6J>VtKw@ZA>sZbgdPgtx|bn{M(@SDl%St{b<}l?}Gw7GICFo@htg zn|UPf*3tIfUupXgg*z5q+fT;&VzpWCo^o1>h^XAQI zy*-%gkLD&WolVrvz9=@IUu5cFrRFu(qc%41122i@R-miF1Qu+{4;m z6!)<9r+#R#n=j9<-u~V7dVs@qF(SLpLf*ix^Q?ZdKHa>q>HR*|j%=%Xs=SBgMR^a} zM0F$=_pmjBwNv7HU-=HcN9y$jVfIj6^YY*BIBw>;opz=C-wZdB|FnnetXFmfVIa}G zT=`c%LN0&(or`B!{#BM?`B$ET`JaYcF#pPD4eoD|X1zOVe)rfd82Qb{FU$sBpJdla z=Jg?SZlK&%C4zmc+|_>K^z-vbr22t$+-)Be;q#HLmRj4HF;AbnJYw6FSNFU&JvM_I zxz3_Z?*XU5_sGZkN0Zs!t#cg@Kx2|WZDmQCq6E-tQJO9ju*48#o?~p>- zL1h-KZ;DIz_C?J1pG)}GsP}_gxXEATmq-3w|JX~+xU0_Bz#hh*Zi`41m&(tk&n;V0 zsB)c$yIU9BGPfy|-$MM7)rZCS+4|syXOE)w=jB1axUUbIJgnq?n@9KlxLhiatMRva zbp7LUsXVU1|6P+ud)lw^n2uXmed~jJux+UAdhc(pRzkRRE|Kbw&QJP)uyY@;tN!eG zPh&^*M)?>^e8Kjai~p+LiU%8$I189dAHttA;WymlJd?~O zDi>Q%HriW*|NHB+HTY!#T>38rXyRn?Woub1!V zrpx%)e!&YhO?D4DIV|rwCyrH*V&Y@;+qbCL}#(p59!nF z7_EDDG?!AjW}z3Tn+19i>AyN2Ds0&!Y|f&vWoJ7tv6B_)*TlQUO;S`|>i_y8nJI~5 z=seuQ#?Xbh2irtCZo#^rte&dOT0d{gBsj<2FpPk>?r{5!x$xIi_L$ch{jf4gI9pof zvXTBbl;Ju+;9inK_#EtKRIYE^a`NX!-nwz7 zu`J)W;Xcic)JHTSOkth9nWOt=GDhW#uk3Crcdym z1-2P(LvIcmB0Sb`nxdcaaa8jdp&(KGuAh)$)Mmpm`t`MSIyT*wb@@xwy;nvHwXvl@+T-3NwT ze!epBOqMUzjWqnj+Jy2OmLKhb>6EbCb2Y9+IG3ndD_XU)cxehvJETf`uf3Dt_UN`o zH)`&6-z}}mGY6LK>xNrk!!6@Yt=Pj;_ZgjZ_Tm0wqZ1dGdxVT^(jA>NbiR0?R(i~d zGMLamuUPs@e<$?UtPbdV$I>wTaj272c~8UYZVT#q2Lv{Ud?&3Yi+$)t@iHV9ZY9!)_Jy?sLzQGw8a}Hq5uJAJ063&JCD#|?Qh2x$LX6B|{8Gqx$>5W}f{zt$zkba|Pf5`TG z%|VbY_?X??^yvMfg(-=4>xrJiISlRw74890;T{VWuF6Bvzo7ieeZdJsK@ z&pA{zdqU1YGWGm%sQUFDR6Y6tJ_tX8viHaE7x)QmN?4!5z2Ik1zd7+a><7PuW8qg& z_WTykgj?Z!_#=D}{sh;;pW(~!7x)hR12&+I{~PLA`*wH~{1c9Wf5AyGWmk?Hfc4;& zus&P@8^C3-A$$xrf-l0xkT&8pg_@7=3ipD|;2|&-9t&H;Y`7a72iw3rxI3Hz_kd@? zcJKn&9$pFef{S1WcnjVSDj$`ddq$LbpIYV905|mwx)zeZhVWXbb?kMp z1H2yUewC$rzLWX>w(jSj-`^}oPvv_vJP_XE-G^=6^O(#zO}c46-G{p_Y;Wqr2T=EI zf$GmbgsNYk!F>1yoC3du7sIci+U>XSZumV^d;I}^3x9-apFhLqDrdMa{1qMue}ihD zzr#WB-%!up9r`h~yA*gOtOpmt`tW+lyO=f0VPp6RYyw|^%^+!UnnS{LT0p{bQXy_m zE7%6^4iAKTK<)AE3H8qQUQp*(b%3TlkrelAC8r+Y$!@7&4x(#6^fZ2VhO*~Da5&_> z@0yYD5SRzM!*X~ioDL6z*TPw5{d*M;=0eB324ju=$z~kX3kiNvE za{z3H-3P){I0WkVoQ6WxqhU~X7=pNG5t-+?%1`{f?JC`e4*jE8wL9hSm3pqF0vtR8cQPcXgxsV}Mr zL!st3!(b;!U9ZueA7>-i^oE&G>E|prGv7H0PUJIZ64aaxM?uy7(NNgY@P>rB~yidj^j=n@8zwf}7fou0r&b-Xf^KH z+ZYVc-(2URCp(@G2f+*AN$^5g3}-|2o0r2)a4uB1xrlpij5#Yn;VNCD5M9@zr*^mq zwu9F}<^Ou9dFhRCD7*>g!JFZw@K$&kWK8tqanE)MjfXMQ#B(Q9JjSG1H#N?B>ybCmlifE! z)rYs>0g(Mi)4n%Bue{tdNz7R#!Sedmz5g$$`tvtD0-|T~Ss!Neu@NkXyFl57?~&BZ zhRvYj*@(F3f0%PY6pzZ~WkgqN^pwty@G!U!RR5C(`@{Xkez+p-}U+bodSI0UOlAZg4-?8}1K}fQ)@kA9yG{5)ObzL;4Vh zxm68)h;tlN{#3^9nHc7*4CSvWZsQSMgV0lcheO#f3ueNT;21axs{bAh)qjtHXTq^i zb?_88AD#*o-!#NMXTtRDimw@NC5WzE^wiFn>zQ~b!Zbb?LXDe6Q1PD*FM^Zd<*)=Q zzEY_8%An>$QFtpn11kPp#61JTJWE#ms&8I9uSQRwXF%1vGhuhgvo=$YYTyVypATiD zSug@Ggr)EzsCcpv_sj-cw}~gdpIVHb;$e?b^W-NRHmcb{X%I_&y1D}Sn z=d^V8VzH<%J2f&MASEzC1K&WF5PzkKT|u zsB;9I0{cL%!;ggD!J}bQ(s?Xw2aktcV1LM5+8F?u6FGyR)|G=HW3@8`UIK^0tKkWd zG1VCk75^HIUqZ<#cdU$>m>A)|8cMnJOyUJQ=#h11UM0%1|u*BR=_-XKFo(2 zR}0`(un^t=C&33`F?><`a{S@1kK7M>54p9^3mya=8JXTuBN#ZdXV6y65sK*ezx zybsQWTKCL@Z^J9#CvZOe23`sOhF8P-r2iV|m4o|TefygxfpWMWJ*9s!R3C9ORDHe$ zX22zIB)ko(UfvG#;Zmr6bs1FubSG4PR=~^QJ#Z#_J+-T6;URD>JP|$zmG0-^WcUK~!gIev z9~$1P=qbF{pu&3{D!ezK!rK59-dj-NEkxY!wQG;tq%RfBL3DkLp2GVQ%HChW1K`(C zNQ1$swsPrvH-0!5D z_nKtCR=6!dbk%EU)72EJ9yfy;pIX9f$nRp9a&8M3^LY=b@@x;+!@b}}xHsGiJ3_^q z26rJHouJmI`@-Gf{_tRU5M-_D91NweFx>Bgo9~D#o$YXY8PRn(dMb}2;b3?a91V|w z)8O&&dYA!kg?-@)*dIO#2ScqdhQRGG6Y5NqY^eQ}k?<5a7HWTG9K0Bw0&j!kA!}A= z0(=eT!XM#8*r*=;5Y)b05j+qUL-snH2vq)x(RIHIZN4L|{Ape>9(P@3=(T`Tbw8XA z)8RQV57xjEcrKg{XTjOu2g-Y8ZsCD(t@LsqCY8<%@z5tiQpWq6}9+q=2+=qOxg6Z%9m;oPxBj9SN z?<+hEHLg4Yr@$xRx$r5-8qRqdvW9Zj!gcU@$lAkM2e-f%;pgxr$X>s*9fuov6}`@wgh=4bChwb#witFP|&oz3^4 zgZ1?@^bSG)bC?0Yfv3W6VFZ2;=fEGJ+WU|2UicGS4S$AD!C#@;*`Kg6_WcX8_vHKy zkAV#u+4Wo_s5;gdUI3fG+u^QI<<<2e=&60CLG@?*!#sEhycTwY3a1a^es9)%pH|^CkRGC|7kUckXm}?)7OsHD zx%cPtxBER+^ZixbuW}oO=o;kSKNzaroB-87jDQ!xOsH`w3od}8;al)zxDk$pN@p>7 zcfZ$ZzVE4cG#?p{yRKaH)Eo)7mUjkDlDcmW&zu10W0i9aWK3`tLi$eUX7~lX1yYxtTOoDV zSpxrnOJN5F=w)ySyc3Ru%OPoY?twQ!J)eFE-V0xc_rWiro>L#!nE3&`8m@-l!AIaA z8t|hqA3g>P;p6Z!_yoKcu7UT%r{K@+nwa6WpyC>kfDT+y;BXKcK!p{BNlGHUx3M z$LVOErTRwp{paZ{PR)3b0uPcmJQ_BD$HGQ%1Z)Ns-a^Fv&ZYS-rov0bX^z~v+MstR zYzzCtJ>hAvJuHD8;9S@lHlUs!0NHbPy24TL5O@yk1}}u&;T+fl-VA%g&tV^^=L<(c z)%T;J(#O83_dQ1Q{YIs4Fzy3z*VP|ArEdUK`c8z|FcVh6EO-e#2`+}&a48%K?}Ve^ z8aNuNeUE|f!*TE@cnZ{bcq-I5I38+UI05#Br$Oa27goSLcs|UB>PHLV6R-%XA1#Mk zFI7PHik(WB3#(xnoDR>2GoaQ@=fOeb`FzM;jdLm7i}rOnOoQ`aS2!Q$!YkoIcnf?2 z-U?rVw?XEh&h3ynqjLvjF6i6|d(i%t!$I(F$eh8s2QtPw_re$8eULHExgRn%Iji7S z_yANpeh@N-IBOt%o%1v-h0j3x9_Lv|pX02BH^Ap0ZOnNdz71c7v=xWnzN(=uIIqEm zwBNTNb;fxYVq0f3EQasFGvEjC9QZL@06&Mz;5Tp^{0=sy9dCvDUhEH0^(q%}zwc+h z2dH{QbM?oE-_g_f@&_CY|Ad7wrHNg4HH7!^c^9blRdd*o@@)wkO z!Cd}$xF>pwXK$DZJHmXp51a+lpu*`xnC|z;%=gQb-p;u5+{j!9qNi}WLya@(a2V_X zhr`3*SlA0{J<=N%!6RTXJQ7|FkAaWDWpCJ!s zz=@D&B@TUh%}h8MvUl&4LiX;RGAR2kMcnU#neT|neywrS++SA>dYaFj3p>GCFaury zRsI*kEI1p=UYEd|;iXVv&w-kU&4s_fc~I+xE1=e=S3;f{I#)rB_t(JF;6kWvr^%-aB9?cqddpxEw0IcflF(9;kWMO1Ky@)|vf2#=4rP z_`C}K3Lk)f!Uv)D19-p7ypQk*?8WED;Bfc^)I9%5sC24Mx!>V2-|bO4o8YE8r|Vht zv_4r2RX?AH`@wZk>HQbfc=RgN{=jRn0=^Cv{%pkk9*w^aRd_QIUGJi&a6f?E;b&0u zwQt}H@LTvE{0^p&?(bm}xD~d5Kf-+=V}1?KVx3=LfA||zzy3QM1OI?Z&o;#U?uz+N zi}Kq6w{H+#DZAKmsSi8xxhd4TxEWNvX#v&FQsE77H+Uax10RNMq0+rOd>!ryKZfn0 z;@%53Cq2wL%yZklVHZB9LG9ahg2%zGa0WaGo(sD}jZ25ZD_}ZY275xayTjo&*c<*0 zkAMwnKSx15&p#R}|C*D!-%~N)Us3*5j)gQe>;6QjJ90b)54TafoI4ppf@LZS$ z=facVLO2rM4oAVe;b^!Lj)AYhli|B?EL8t99;*K4Ks{&4g+*{8)Osc#YQ9kbd1mbt z!CT=ZxDpn_H828Sgr`HE1v{m16D)%t!%Fxqtb&@KR7359PKDYBJqz+I*Et(r3eSP_ zVGUdi&xOn2Y`6tp41a=`!W3*c2kJeV%U}yQ5Ay8DxdQSm#F-DP;FXYP8qQTv-y6Cb zs$A3ux!=t&-`P;Pw8qWr-)==u{lya43Elx!ZcCy1i#wtEixp7)#a(bQyc;fqE8$b{ zKB#`}epnwntb&>!JqSC&)ll=lM_>+o6srG!98QN%K&3aAzuoUGnC~+vy$9m1Hm7SH zda6e+K-Hrcq3Y3kI2OJJr@%MhJ@8Ga_VX5812@7C;3lZ?=^gkz`~a$-+XB@ue+1Pp ze*%ZVPhlqf4333gK=sdG!OP({@P4=z{sw=5f59K&?v&@x@NoDG)co#Os5$KK@MQQ0 z%!MgU?fX>qAkSo-29Rf>P9v!Lu?y7xM02=1wrL6XhWtil4bK>zRxlmz0ndhe!b{;^ zP~Qvb0A**5S?>1;%=Zgq=f=1VKy-CNPyOk>upR6S4}kl_-mnWC2oHc-J9mW&Hyv@` z`#100D_s7WISFvOq1O<0ht1%j?tOju+kG$Jl(%kbfSbx%SC?Jw`?d$b-T8bV>2NRD6Ly2WUu1X!>T{f9>$;kZGr6pS1bVr+?q2SNk9KSXpyrf9A|a z|L@!K->(1j=w1JwUo-H|=g&Nfv49GZn$mT2?&l}})Vuh|-m{0zKI4*a=B%X&V z58e3kQ_oW$X3`#0Q!ajS@9RGN?fI7;$Xxnx^@~pqHSdt&e%`#VCyXCA_U5(6@6qPr z^{3@CN2cskQ*Jn_aO_wAN*#9CD|g&?{qt=JXPR-}ymsvSe^x#Q#A*DkxT=O+3# z<38cSALehUH}Cjo?>>0t*?awk{m(M>XUsvzUN-urUg>Yt`~2EJHs`%YTc&}fru4eM zLCej{m$xmQvG(JipMLWa#zy0Q;sL#G+H%}`CrlW2e}kj$*>pN%f^mO*zYZ7N@c6e| z(lfSgYB+qqIqX>)_hwhGeDsuudp>gV*(a_aJ?CO7@qs44eMT<%>FhOa->f&T#dlv0 z|L|Mdc}vCn$fbp|&uTxn$$Oh`TzTrOTc2l)HtsEN7;@yIwnuL%UN(5#H6vEg$O#7h zt6TNFeP)x^H^0BfK2tw?;V|ql%jmz6^2SZ4HMwBuZm++v;ozGOU&R{FxGyQn`@H3o z<0>y3JF;!ouv{8xN~*$X&EDdXZ0GtsqgVE@3-HHN=?apvaoR8)t^spuq3D3 z{M_aHF=iV5lp~9}-s`;k_byEq9NJ>VhEmpq#(m@WmwuXF{KVbQwzz)Y=L08AV-Cec zI5lO{uaoyXaF2N}?0wJ^&$emY|5nE@GZSujwyOB*0}sFE%WXHWWKKaIQd2VO z4ekB?i4UhV9G$@NSdeo-K5Q zsVVPmpL4)3$DZ`|uU(%k9ri<`DzjIQd(X$xCg1k!`oFe4P*8E@osZHfR+(^K+4adz zbI-o^xBF)vKkJAUUw^?^Y~0V??ZWc!ew+8%*;RwtC}&GA3{f&nlk&6(KUyD)cx+0mOt9^m96J=C!LMt{!sBn-yVDOh`(Q7p8Iji zF`rR?s*L`e>q^gi@5pY`uU*;q<;eQQuQ5k3?n6J%FCLkhom)6HxA(~(bv&16OU8Xj zcC_uG`JeQ;c;2vwPyMCg$!4#S@Vl+p)NSbO_U*=;{?MOS)U@ly*wjYxesg<^wZj|L z&+5`@*t8Wj)8C{X8uw{u*W15Sy>FgbG`GQ=w=zDsmpOoOZ?fpZU-#L4{7LV9wBe%X zvh#3DYpZag5A52e_cME~Y@dDT@vB?@O}!d#++RGa(WFK}J-MDW)bo;?2FHCwi+ViieU0*%yBF01pDAGA|*@Ktv z_UiO4OHO{MWX8+1(Q4!V!Y(sD%4qypv!jm8pSYn>A?`({pZq27=qB$RIQrUW)-b0y=x;)GW}nVg?mbxN04e%SAaCe@6=OaxL>e&62l{Fgqw zt@SS7c4+u$%jkW~rH%U)IY+N8OC5V%^9heEI0*5fC? z^Y=m5@XW!uFSu$-^C=Hp*YA%lV}8o{?nB0}-&1<_&d}=NG z=BEC4{rdG+S2Z3yr)P)DC;$AxwzJqPHSOq{)@@I1_-XyNxtC-e`rVrEr?aQQ1S2)Y zY4Lm3+?&2xzSnWzow)R(wu{(1GvPO$c;KcMyR7N*$6ZfOn14_y@jh+b#}-{Vzv9!| z(t1xDdgkKIzl^}n_@$<_8=v;|lE0t$a{s6Ax%T5p*~{3IFz#s^?--lp3h}0IC0h$7yiY# z!vrKXW&Yg?Y;@!_pt6E+5WV-|D_l)~Z`~P-UO6r&6-deDcTlGzuG`>z*& z_wC59_PBTE3qOrH;^UJ(HP4U;XF|sp4}Phz<+;(kBy^;joYJNhso#VKXdj5(vM$i$_rO4xo+8-wNswzKIhi~x4cDO&ou7O zuj)JOnA|I0{pjo&i$=`;?HlI!#{KMbUp(R88}2I~^Gd~o<@@xAFjZqNm73B$ea3x% zTs`=sPtL#i{&9^wPjQbyt|FP`$$;+Ex{aX8D3J>8r|)sOs?J zBI>PiAM*Io-%VR{Y4`i)XT1IE1y8)k9;tEfc+3-*elq_1w23eGyk^YhRj08QFz#pl zQQq;T2Ki;(UpjT%$;X^|F?)1r3V-(nr*}Q|$4x&UIyL8&2Uq@5#ahFRzjxF-?#pA! zULU(Er)d0uUJu>FvmB!zedmCzul65({i(lq%)0$w=L}+eG~>=Q?QZE2`Jj4qzrOA7 zxO2nrm$6nd`WK#8@pZGoXAXSklk(3CUO44==26D|pvdHAUrhesxce^1O1Ua>R$tcS zos^zSW>?(1+pveeJ>vAu9mjNDL_dF)aqsxafs-y+b<+Nw-(J3{e9k*ZQQypb>HCKU zWgR_h>#&ce{&L~rMJxKToHzO#iYGQYY`>Rhd~m`a8;4A}Hj{MjtMK1ExLxOaKQ6A< zyIaZqk!O0+UXC~Jn|}Y{vkzarqjk-9kItESxZaUE$GD%{dEy?u`i*RMc=__R1x;_D zpM27||FFE@>Bp~}`E;an!(O8wZhZ&&GVb4PnV9=)W&$2PVM&Ov#pk0S3LR{_Tr3t#>kRI4KKQ{s?(b@-rjAuJ$teiH156rOrNw{_WaV* zj&1(-#OrU*APmOH)Ra4#zH#M*B^w)#Th;ZiJ@#+*414*;{qrYt{@TAhqutnR+kMce z)0OjCD;xJola8Nq_7jKS+UdEi4_ww?Ywr(@`!TQ1zHHHv`&>4v&9ud5W*=U{nq+^4 zfBClyM(>jU#$Rn-nf-qAFHU@twU3zxezf0Z?|=B`>1ETFZo1{Gg$2x&w7;F2a_IeM zk9%kT-oCXy)9$uL&m*n{_+iNGH-h7o@++lviOrhn|QWs+?!lbId|lsUuRt1;NW}C z+W&&9nTK>y_*p&1&EGts)kjqYr~SLt#p4z+-!|?&(#|{U{B@NBuUV9P-LS*jV*fXc z`~8=^c)+Z*ht~dhO4eO%uV1m)yj$a}8^U@5X*ZN|LaLCZ$a-Wu(wXsQEHVpOiF|>y zIRRay1X+l@j5MHs%0LQ`*~m&{E7IXao^c^n$P(mb6Xc)*#!E^iix=kp;*) zWE+w;nzbJ?6Ip`1jQosr9z%MN1;{$2*~x^73_%KzS;$gkJ)(`%bYv7#g)Bf;BO8#d zNa{HJkt`&NEI?Kxo008Ehf~8tS%_X9Sb=Or8jQys$wg)( zk0DzSeaXBtG90Nwu18caHzN-HVOL~05=9muYmm*zcBDfN<%o<&W+AJP^~hEvHJ3af zSx5;o2U&uwK{g{lBdK|Wjg%m>kj2O^4YC>8hIE)jJwV1HQDhFX7+Hm^N4`Ls6caC!j$|NXkt$>% zvKo0A`2=YYAztJVBm*fyYLF$!8e|Ky9cgwt@ghTzu}Cp83t51yLY_soAX||RlZh9} zKyr~;$O2?3@+|TR@-vcJLVl4x$PlCinTcGFtUxv(`VwqABm*fxs*nZ95@bEH1=)(| zOS0{dUdRw6ip)kkU7XwWF4{**@m=>VhdydQh-cD79vZLHOP8o zJMz!PhxF2uCtH-g!ywQj|LCII;_J6Vf1+ zv7%FJ2QT*!3j6!lIUE}uDJU$fid0QUt&Vd?()uaW-uWB#2#?=7%j2YpX}VA6hIr=} zE_LG{hWnmKA7oK$@{|yNQDmCV2B|17%_%6a)`1#28>Ah&wXd}Pio27CJYd#m4&;04!Ks=c#)d}h8P)|Pgcbrsys5p&ekA36qVbjA8k+`X`w$OdGFKY{> zLFuVNIQ!DX>6O6(H_k5jDbD?o8;Lk0Bu*X0F{!X3r>La7yaK)C=h5sq-e&a)fGZep zw2pZ53nS_&|5NcE=jdb=`cXIDT>fs0FvL5}u<>FWuc`bwRCe!&X>#%_3OTLc#Hsob za{2Ww15bPIA7_>pmgSW)-syasA-LP}pBgFP$JirfIpzn{D{+^9mhWF&7@1UD6|dmc zj3JJZ)CNamhIC5r#!)5Au|{pQ$&=^5p(*8Tn&e+0l77Iuj~`aN81YW=i7k zIVz3HWBo?*(@%9*SCI8U-oo=f7Cmd5|5)BfxOrdPkN~)*AkC38kXxv~^OEJgqEH9O z~Hmi|30W}u$Z_rQ``e?_$=FWg-eXPf8>|j?rojygWYr; zjxj+dGZ0?lE;CSPykt7IoB(`%wN?+y^0Ds3^Iiar65ng%$jI zsqGt;x7t^1EKbKWXlvVt*|=vaLN4{k`je%giFE~guQ`uug=XIqDDzP7vh>Os8v^AMyv z_oQ}7Ql7DBOn!EzOoRDR{N6dc8`Yt3O+{KD70AcLpOp}QTzxbq{qH+NIM^@BmUC>{ z{4<1?$9;~^+mc<$4A(h`Y&!#4Mg3l%G;d{vQ*)TT+MnI2qrSxY&kVv0rcw2!Gwyn3 z#Bb>M;d%9FlC3WZ=OCt`zuM?C0J(<+D=*$$bWSrAxb)tU@}lRl52K%ZKzu!kFQ@zx ze$~a~VTif2)_;Dx&%!I12c7$H<=JXPTzU^G4c-W!A^mHtzPo0L zFQ>c$RuAQ67+PsB*3Gpqf8C(6@_s8O%HP%IvpKgiQo!FTqiMdodp0LNa<9QXI0utG zGH_pO%EhL`E9bC!8mkkU7f8R-ge{u}>yWp$v2`fIdd1e0=S^JHbMA>R`*tmH;EFH% z7tpOaI9T?!)V-F%AXgS~?WcMea+$jBf7oGn~4hOYgv{pPdR{COuh)1k>Y< zw;Z^rpLwxU=Kpltll{jM-;17|-2Omwgk0RMJ@s>dSfH{{#cph?y5p`dN~Pn~^{AQ0 z<*B+Dw=`(`n##hGqSzcXxQ0+VRNhwC`xS88K8m{A_7Xf#x0jhIus24%SNk0aUm+h` ztbR!S*Lpy|gtl|*45cZ9aD#PC?rFG()miliB!PAl%Y)8-&Z2zNNiSP)&VGm5{CIhe z52q*osu%HfW2pkC}{fz`+LBu3qx?TWoc8PxW4%bx0Mm$~{^MR$;{{Jg5X zlJZIaX}fxD)~3q~Epbd(sf8Vv-Yahhww?|6 zf$Mcd<@Jh$$hKPjkUrM@=C7F~*cpL-bF%LBZ)>MvtA$6H_&fLOJ5$n`rE;wy=@7DNFNNZQFj%OX%ZYcGIl-p=oJ<GvNo zw$iQmL#`e6GqQJIggrp*WtuvZ>$}-KJU$vbd%vlDh&I=`u15AoW+Cs(&Tg9ZYfJnF zsdkZa?1)lleem10+N{^ERX2imR-I9L$D~Tn{-%@H*Pm+K%I>wwB&U005pmM#8 zDA~^=`RHaHmCU~S9i=F{;>Ns{EG={7qMzF==H8vHBNI$|+_1P$=~NlTr(N|a3%9V} zEsB*(;%_eGqMv8Nj{R3PgekJ^pKy+e>sNzdYbL3?<0OM4jJj}7d6{R-B7 zukXExI?TK&O0=e*6XVmaw0iq3>-Erq>m5YX*f){SWxG1lnpYAn&NKB<^(y4@+d&qd zVd+$#WcvpjmeQV!n|)?te+=8((~qqYjIO48reEj`gMF;RQCZrs%l{wh?gPAv>e2W9 z&;%7Vh#(+;2~9diK#YJIdXW;E1O$^1O3*+;0vZHm(*y-Iq7)G&2r4K-?AW6MVg(fu ztN|?8BcLL-_xoFGX7!t8eJeUvz+ z%Sw|mT9`ri=aqkr84r>sgu9JX42$%Wm#>e_8l!v6mQ#SvD=C)Q%-$mG6dsP zeB3yN?=k8;@ZX7-;v0@vczcm?TUkcjV!ItTz0y<1@Y({$^gk1~9DjR}af@$YlC4y_ zB_20!x&Fn-|4iJ%+f&@U>yY?{Hf|e0Nw|XX8_HRz%(&@sjJXW)JGF{m8Flbq_v4hu zs*m=5huOY=FEqsu58n&*+L_=zPu0h8UA6Z%qqURX@$b` zQ4f@L?&1xRN&FB><{1AzP%X2SQh!VvV=`>*W@n|?qO#tmurE1UmVHcX|E&jCqP3E`!Y5SYZ zyZveVo6Mj2)Al!+5Bk&X%=Uirr`ww8WBzm-b8d(w9+Bq@l~3xx3erSE=gVHC;;OB$l9n1$W?z-0-dH>OC2O^&Z>AvO|%1tlgtbXnDHjd_e z9m{lyerB@0j`h}=;jZ&@#5!ssqOGHT{e$juKa&=kKDDo{<9Y@a+0J%q%0?JkFe*+e z*1xjOPP=@Ra;*MX$;A8bo(GghO7qAxii}&K8@J&sqrU49#$&`SreCSNEqPx@k8F~; zPs8&66gR~oj^&QBU2|`T{}l)C_q`gaQ^9bIu@>XcjDN6fR_Qpn^*l9g^3)00Jaw>f zGVe&(SNObIp*X3oL>c~7SzAONntKYmr@}_Ox_Y50gZ8Bi)m7D<4&gBUI&XF=VJcHw zNZXywxW;1o0edW_94al=nC+|otvdRGR``puJbYvPgC9T?VZ0csMb&p-`g_1E^8Y|8I2&9pBOInSkZIBT#H zY2qY?^T92Z-UY0A!9mBdKr5CW{Jv-|^SpbC`TQR(U)B+BuLHyPKnwh^@Vz7D*Ji@^ znerNbr$+Tv<@-)sj@@!%pB<>2M$1EOE0%e|>q)On=$9cQ)-&zPE)u6DX*G!T`rEWI zNTIH=V5#%t?!E-Z2G z(fZ2kJ^H8g;OBKA^OV;O{`l^QFhyBm4@88u zB}~U$jKTIz_4O#>k!365bs1Bi9r{qV{d14aJ8`+&)%P*grhTTbI3XkAx1afJubaj> zQ+PRVLPoN=>^E`I`}V;;lFm`FguDGdH%;kNvLAC^(e_Nc5-#g;eptz}9#42@vutj% z_f*W3Pd|K`A8y(#!foAfkI^qJcHgQa!M0xI&h`_$s?BEtvZtBji)CK0ew6HUn|t(G znHhScTV=$yy|&Ixoit(c)UkZXz;8FT?gExO*{v(t<5JVcx_ugRT+E9#$Lp`_*MU>) zIwjtN()L2EQ`WhvfVy{(0;bz@I|iFFXX2R4bogAQID`v>>WV_4{Q-sN6CSNhuOr;HHQX1Eh>!B1fO#dZk#sRgnC5Nv=Z)7dmydO4 znR#kAtC@U_I9|dOk5~+rJ+-NEG!BoGrh4}NmrX;nyvlKBMzz_KlI=B^*A{x`x%74{ zz_5rhhH)XIKFgXo!sdng8+u-5d$!@qqcmsHXoKn7s@zv$uHC;^k4n~MZ6KJgY7c4= zUfraDeNv}5d-qF{%$*6o7no(VTo1-GS+>}XZ|M&r=sLz+7y8$mihDfkMH&2lc>*(| zm62YAM=K+Vga?mBd7VUfiR;~na**QBD_IUAkGGe(JHxdk%j$Ub{8-1Ec=^AqD=hzi z=Xkxk8ZP%K#KopX>Erdz%|k9=A%>B(+dAH1coxT-U*_@JccLbaotT+D&3^^#zkSTg zGo`hCp2t?hn>2Mw`MlYj6TN#Pwr(n){d+W~r=a&E-23^=qko-~?7a@<-i}aNPiJ23 zKw0l5#kGUILEQ}i-O`J??t8T@wWc=_YjCG)Pd z@+XcB1>>u5HSv+*oG#4ye7TLMpFb~0Oqa-?4mO4_a(uP;_Ze)+aVDf5H-FN&!AQp` zT!D1FD(_JS|9G>Q87+Tu2@mE^h_GnoaRK4}d3juB_C%(Y4ob_&bYRk?!?pG}{B&3w zn65I~9H*HdnJ$|KI{WQM_vD#QI5H*ha0aZIUWC~^IhY`VnBSs7E)u40vcY-`k}B(R+A zmxlY(D*rYt{Fy$r!Lfvw)dz3Nyf4lDF83UhWApK58)v`&xjbT8$Lu}tExd>gFeFy6 z`F1H@6T`bgrH|RYR?##198+|aS85xh41T{Sg_-u4N`Hn=>7eG$oRSl%J&4MsBvELu7Yg1(sL~{29$IATuf_uWwYI9^mineU(5mw?=Y$?zsYzd zX%drOsvNj!Lf18$cQYd1MgBiY7sXNOQabM3!z91%AbyLPf4+^6p9c0_b@#)8%vU}~ zmha`45Xi8eQLnlzV;n=-DK7K4(o=Ji$E9Xuj809v%HE-(c$xBT3IP8H2LBo(kr}$i z(0M{R+Wn5@et7tP zhqkRU8hJlMVao{%-djr{ELwR|xwZFt}%7m>vt7)V+O-l+!xWSg8YVu z(?n&)=4X`W28{DqqN^ncw~Mk&2|!IkE`VUGtJw>Jlm#~ypN=LMa*-{l=-BKci%w!N%Xfl zS|4LFaq5M^Jl1xU#|;?W=d#|%nN5Bq5#Efn98ivDNRx81QuXm$9cL(H3M?nPzs zeH9sPDFP-u9b?1c@l4W}u;(ayoD68`igfJ0-Pgv-*d_&Qn-T zmfK%)-Q+<%yO@00$^L?6(v&g6Bg&+?Eo`?%8DpL;W41o3)l%LcBs|)^;9|mUo|P=i zDw8Tp5&JRcHkB2-ye+4S&lW#y(pXw`zn*HpdJYyW!`gO;a9cLa<0-T4wS?I|j@^XT zUq_fN>srnhb?vi&@M!f+feQIUuOj>3}X0{2-BP^n> zkcRYQDBxLK8J!Sf2fV8?l{4mWySieenBJs(Z(5+4Jk(?yK#- zy}I_~H6^FF<(8cO#+FmR?s@n0QhKv9hLebg^6Dt#xuj>JtsiC8J^wMN)>Zve*@`mw z^-ss8`loWCJPXzhg)5CBpP6WTUU{=+%bv&8$7{ztTeeC+57jye%#VEjrtQZO7A(&S zk0)GrR3o3Ssh{MfQGOp5V7Q4iYK&7+X_OK&X9HM`^S`8!0{bX{2=V(kPGr zqovVu!lR{8KH-sRq2YcThj!ui0jsrJnOCpHo;d zTAHftzIeLQ!ak?c_LT-I7m;mfS!GCRoxrlu`cjeo?TWgO+tEwfRA#%<$TPyX)FHf79WzTt)s+FH_(`9USwyA?f%nPQ4j^iNVHZ9D3`x5Uf zEN5Qu+DK^>ERRYjm1P?qetxX*UW5nx>}92E1C}4j@>NYAH#0+h-0>48@zf^#{-yFM ziDhhC8-9kF;D?3#^g2G3RlBU78%-VUUBGDG0_L4&%7OM3{;ZDT7h+y#My~mpXZNFh z4;hXlUDeFWTOx^PGC|a3O8F1@QiRYmz`(7K6H_&eR z)5^B&^V?@mTgrakzlvY@;zsRgF6Z7TgJ14bnD4iv{2wjO%L#whcu(y{8Iba>8}_0EnO*aC@ViQfBB8! z`cWKS-t@hdhI{<5X@1ytKPX?s%+a;9Wvo#&Uqa9A5t29NE7bGC0wGhCa~`x9=mTFx}DYU(48h8A4cOpCvL4YiTCK8NC&HtpVLai{ z(lE{sw`rKb^hJR*Y)4oy4ZU|gx(#I}LtXkAXX2T73F{}^VbZY7a{}MNnU>Bu*7O>= z2{~p0&kR^!>DWsfEIs(=2<3Y)?Ywd_m3afo=?hjevvT-f{u$M;WI?+4N z{xM8*cy`bERqxkbgxxrfxaG&qbFY#1vc~2$buP-_w>!FaR-MuPk}Fo3?f>ihxm}1; zFn zO{46VK6_71<;*KjD$}Y9cDvl5cT-M%yco*TcJg5~@qKTlNf*ETc6X1PTP>y*c;}+` zZT|T0cm3?H=e^gRX4BWde)sO-SJ8|63}Uj3pEWY+s*Ax+n z_C>CGfU4o8{UmidygKZ*1!fuLL9h;cX;DjGF32#H zc24Kri?BCoQMlTz!+h~^h5U;$_~k#A`QAArf&YW;p2|}%!lU&w zRh|=>XOAWPPL6lMrFGSJbmx05k9pZs>6%EyqLuX&!aFk#D3|N^i3*tRW6Is=socsk zb!iCNZQIY8gx@N$?Nbu-?RLU_E9IHHZPSlZJ}S@LNs)bBXK9N?TLe{FGH&6JO43BKXIzUrm|s z)i2eRXlblE60LrfRYw%A{2Uxe7nRQcL5S(YT!L$WxJG9Mswz;3>%5MyBQ+2@Rh54FEzj7%q zYD4a`<zP<5m54ALt!V4Xr>OfL zv75~HqqIS$o=hB@lkVU2P+i$$HxvBp*Aqlqz_`LG%U2o|3Vl+I(xmDL2cjGYfI^QlIC4I9v6Y*lA`zDi@&?@7)?-ph7 z%ecy~SH@#mHkdv-R-H4Vy(^+?mEe76rGd^twj7syhN^9;?FrroRJiI|@SdK+QwR^H zzxEMsi@c+@e3B*f@prMBCp?cu#T}7;~GZQnVnQ@ies5|CbF)?vrd%3?~^7lGg=zz z_@bqu(j=IMUK?$X*?!JU$CdV6$>Z|wp`?swBMgO%dXG_F&T)n8@*EdGjA3fOcOof2pkcI(3p;0{qnc z@8 z3zm(@bk%RFY0xdKQyGUaR^iTOVVUvvzkeu`pPkB_lw<3a_7i0=WmNH3`8i(vRgO+z zzxvKHceADpc~PcPqO0KAIDH$VqdZ8J9Wyqc<tt2-)pDQwGL zhiePAUMug;r)=pOG&|XReX}Xgilcq!ig5l9l<}Oj3HJM+l@`IeqGekWZtH{nK56yg zWBo9#%lD>`AGvf$E+PC%du$x9{oJ~}@0n)O#ap(JW&dW`E4GxZOZ87s{5dAR-bm#@ z>2LRK!t|br*^b)Wm)-q%?=fv~x8+T5ai{g2Dq8-+t#)7Dy`N$3wC1a9dG`YAn!6o* zryM5@<=JUCjywz5<)gIO=DLdy`lj*CPUhPz$7f8-Qg)bju$TTRJ^1ZlBJ+Y}UFohe z5X|GU@<{0vnRcb~DDwMnZM1ZiASV;~gz1>W z<3x|Ee>Da@nzaZKTTXXz8$>@UqfjC-bHdC(?lz zsmxC_nR2p#aGF`d?f0B1ZH5pQEp5gSZu^626ULY#IEEi@Q{F}1A972)e;3b|-7J6I za6YJBDo?#MRr;s<(;2Bb+}-!ubxCRjX8c> zM|57?L;2m3V}3r^Icb;4D^t%xENknNd9Ti#!&UCRb&jykbe3tp+peSStDUiR$wpbr ztL~(_+x6Od?_Nxd4w~Ur#)gcW7^e|GXYao%Gv;+T<)Ye@qpTKX@XJmSGrh8-6F{`G zqx(5!m7O@&50(cVb3WnU$7tL3_Z3xk5(t~laYU9grNbb5T#otzk!?ubt672Jdq$oybqt*lKcNoTJ-wRmK!fEyz9WKxg0!$`oC&NzNy4Jtx5~Ke3|X(w5+k` z*_OnnL7_HMdhpA`X6AY2VJH7bD-U}JFRMHhG4HxS9(#2x*p{eH1j~-9++}r zmoGCdvZsz!*|6XG>z?M77P_AvW$@dBSmt}}K|&elhhAlzA5`ykP6^ig6m}S__o|nw z4`uZsbnZW1o1nTrCs3x;2B_Y->y>CL)L-%1ihpVo)UK4(Cg|L5=S6Q5VmSU_o6wZ< z97{g(s)X~^=Qf`eSG5Uc^)0kcBI{hkGN*lI*HQYaI0V}f)uoPK*k!!Fg?EoB_c~T! z$R%F7p3cE}q+9XVX8DNnW3HpkXE*E}W804OGHaLmW3DR|pG0N_KWmXh*r_opN8$dR zmW?Akmh#Ip?`is?FXcn5!Wg-SW8dMhv;6B8d#u@+N(ZG`OSEC?lXK@V$KF$E>W34? z|4NhCZ)}=)_l3Roex^fBLR;?{o=MLH<^|9BI=8B=@#;(Dd1}fmW-vTj#h#~DpxUFn@5)L$Q?Bfe zOQf7FU;p&%u$X;$?UCwMFs?ejT7*YSUzNF?tna?Np&-!NCFQivovixveEhcAWXQr9$YhEt%qUFQCxn?S4U3(lR5zUu; z1+SS@22xnge)iowmo)p<_Cti1)o!V-tpDEDm98b`q_(Y%afe=*dn{Hpt^k5LA{?k6xaTG>=y^+6$mJ`n7I+nBFTIHQ5-FG5QJEZnN z>1mgz;Wm#PEFu_nI7)uKE&c>UWefWYabBh?K6I%~neN@zXV*SxQ%Z7IbsD>e_ar zLEQ%r88E1O^5EVhx@%3POCd%}^X-HO(>z32WSVRJM8bmUs&M6NXU5>WHmWn>@bG&b zs&}Vwr;~X4?=E@Y9}_p9K!zjCJR3hoZkuwm!z^EBnz=c|XD9ffiiiYMBd#=DhfxMU z4OJe!vRT0Y!E{odhtKO?`xgGq9QCd2Io}i^zA1am*j&PtKCu`r-I55eR$cq`ADNnR z*OYL(Ew9|!t*H#hF)uQ&yt)wWyIEBhuW+A<^jg4*40kZ9J-d~0KKphmmX)qvzs);V zFD{Yqj@z{D#b%-mrXBanO)xzbuH#=5Q}XzAj5_{czc`k#U>bUP67Bm#G*4+|&k^=x z)qEPyd{4d7#p~l2yXkTl%j!AzQpOuemwY!}f=8cYzpco8&+|W>!*q-ZY%h3>3RhVQ ze%?^^;+#q)>xK6`HupwWV9@~D+;^95B zDR$#=9{aDtsB(W3@hI}*!MEmmuYg2GMrl=xWupxK^-wG`=bQ47nWg0-+tPf!h`ymmu`ziT&$>|tzkNwyX0&|jMR+iulqS*gDT(l4K1G(lxSLsk z;UmUcjIS~3yi{1`@!0RH^S;N7#m%v3KT!t1{3*^}`AgydXvd{|2%ei`2@AH5k@3&F zg#{R1;(V(3KZm!H9|b3tl^>?>Ug8B&)gQ$#%HY=FO4SDN#o}zbk$&ZG(p38yZ>4$g zI8-;37B(+Reg{R0A8zlaXxVhag8Ac>`~Qh^h0@ga1HJQ{eP7i(zy8yCq?1ml47xp{ z^Q&%2-%k35YV>juj^hhCcOHF!&+ct&A5gx1`N++dX zus@YZShTXB?I@puW!Y<2?K&l|2XroNLg$P+;rDgDd?;8V_{7Li2S?61u#-_jBmua_bn2#cI zXE1fj)EqNU<-^W1*N5&Ld%jfOmOnk5x0>!6F|9i1^)st1VM7ecSJN zn%k3l8I(c!t^9~G`1!4R<>mKhwM*x>^5b~otnF_nJhF^w8zI&YmM4WL5box&&0MCnjYNzrKZ@f>!pf@uDi6`>zs_aR z>c7g}g*?+Rhcf~n5dn)Bh z;VP@q%8ANrv~r^I8Z0MD`)K7Pj__#ZB!Tc?IZ?Y&Ryir_JfZSaRynCk8&Q}1Ok|lg zHvddHNntuzPP9z4a&pUACCiETZdJhwR$yr0o@-9RPhx0)Y`&IJPP{kLZFy0;M;ZL` zlEr+lyj;i^wg=0L@~5meNcpOKvTcyb@60TAruwM1#kNBx-0v)E9knsRGNSXF+8J9$ z%sSx)g>7oS+8SF{%=~b}!hF?3wK>7^sP@Lj&$i86=$iQLB;0K$O`Glhbd#C4hk0JR zsP>!`Rr6@(6*14YkM8ztGs$}xd?#6yc@fQ}Ifi1EvB&7HA90jA#-q%)$LP+FI7%I( zLm3Fxi+qkhTD?dhJXkLj&mn}{^6c)TWcS&`Gu$?sv@WrP^02HnRb{-ay3&q%(u*=Z zk7X{4wPjw%l*e?iuA~qatSf4lwT(q=L+|1@tsmY-i0R-qR2GBVP`mtvyPlpOXnJ6S zlJ(EK9`2?aObjP8(nR~;i=AcbNtF7h@98$5S(rjk*1o`(W9y-|6J;>h3d;8?%q**( z>D=MnpZ@M{yOn&NE4Sp|1vs2*hP*Q46g@uwm3ELYwM-zzFl6=$-~b%RaVso40W%orgC+h z&01=s)CPptNy~_wr#4_%{iIJ3Y$E(wctB43g zGe*U&5#y=EE2YeM>6*Xv_c^M6UyF6441S%CWoB7*T6MlD^X+#=mfpU~fwmpYKijvg zS}lgTu_0a4OyJy8wc4H4X%EeGMAEuHd7w(toMq~>&hp#KITa!wW4X(y*T4sYv?$j) zRjb9a?B?LI(X)qpyH%@=V);0;|I%L@r(a3X*CDiFx$!LL%u>8dFBeV)Zw=l9bNW`B zL)kmTYH^IQ_3g9Ywfvt;+edXXc?kNVq^RebsXAW)^WD?Da$DypP{x_ges%^unz7=ZSMej z+sk*imqPev?$1ZY@2_%Bs0QKX$~&P(SRUJ81?-NMQTLmxptrr4hBlo{yA;^o9=4}= ze1u9dUm4tRl&ZD8V0go)!{*?^csSy*F&)d4nxH^ z3DxJi94F&Q^yAye#`k=}gU5dr%bi4c2A+-+u|8&^_LGI}a58Fp35<#E_G0;8+f&=8 zWi-rUIpxo6RQ}At({LWv!y8cBNns4R+qs$lwH=C%`P?Bmce9-G<{W!mN*8T6^0+QxIc+xqRo^KaW<8a+M0dSw_+RNBS>B$EaYDLJ z{1mEQJ&g_V8B{tHB59=WAqh>yS1=p5pyHLzxYOPKO#avQiJGH(7aD$bylds&W4Gkc?B3^-&Q2ARKuSMQ5Gy5y#|CA;+9cGoY`%}4joKZsoo^1XUQ%-$Dzn8+?Qy)$|4KLI1MRaJT2{2j(F*Gk(i&B^xmO-i zTN{Uc@H|vGX@g_1Eh^pGq4se;uE6%V9xuRWFdnz!g{XWiVk~TC<5NI96`$IK?PAn$ zaRr;6mtZTVyQ0c#cN~H}Q01a0-h#dHUhIR~FTXVvdI5)Q=SI0`SvX*d!?I0|pTWV{Dc&?~Q@7A4a?vb^pfe^h?n zMV%ksL+Yk}pC?3{;q1n-_yOv*+&#Di_u|9&Au3%zLhVmwA+e?1-we`J>8kqPjc^TZ zIG?NDosaeL0&Iry*bXnmF4zIphIGV1*a?T@MX2(efXa8?8#M9if{U2$hPPvPR6g{; zr?4k(!#?;vUW%V%Up$Qcusm_>kJWGh#$qD2#mg`ahvAht9B1R@coUAqJ8%?k!Ygny zrr}N;i~3#1@pu^1@ods&0=CC1u_s=I<8TsQgPEvw-OO0j+NNs~>nmN)AZ!Dph8&ht zK3;=oBK<1U{#=XaGd%;l;!IQ<8Ny_oh2wD!s$H0i_uxF-h&STfcr$*9dH6dn#YV(q zIVyctU@_iH{=(9a6h83*W)n_#w{4BRCIFXJ0pP%Qycu&b z5AVg>@FiS~+wpdM2bbVixD1z*N4r0W(;#jTi*+i((Y$C>yV-hi*;B775X!M9NP zl*?G$*5*@1jzjrWm9Pv(4Lq+jv7XBL2dHws2NjRKsP^jsj>0c66~9Dp zyIJmbb^Zu$w^B{J-72W3slAIu^)DKr zj^!LwJJt+C*c?^wTAdCOu46Qf7q-LRNMF#o6m|aTi)*kyzJUW!#~;sF z5O4R>i~qHsirA7-!zuKmPC?GK=6Zs*-L!+W1!jG%<6LOh*Y>r3c6ma9Q{ZET8l zQ1Lno)n5Jwm2YRG;uFVM;BIdz|7&|xFQ*ZshK4NnALN`LQXaK%*IU5WLjuwm3vuJMu~Nh{hq7vHl}H_L+f!8zJ!^$ z7qjpnPR3s_8-GWBPbYLL$8ZhSL)!RIYn+Ci@LKGQ*CE%Q&P>$#ID~4KXW@;=xj(cF z=b+kU`d%Tf&7Ap2U)x!L^o5-pk-n0C&nI*c7vfP|gjFaQx1hc&JrB=8jwy6LF2-(n zJJL7Qc``H_m*EUtiI3qbd>8Za8@vxsBflQN2DlEJ;e*&7AHr@(A0;#tAHi|>7*4~- zaV|cEi}7i^3!g!+d>36}%S9XVEm*#*mbdK<=RQ*&NNcm+c9xAzu1;ohUK*V@39g7fEQpf z_Q9Vp84uwUJd8Ku5mbBiGd_mDp!TPBG{1{I9;LVTN4ERz=qnl4Dseq>2H_{7;(Ib)h*fbIo`RF{RGfvU;UbJdZToawjA!5mtbvMu zP1Jd)7QTmd@O?ZBbzEwX3%lCm()myEqMA60gN9g^({a^DwPOt;)+;{FdQIH*n!4*X zi&!tVTiN?-?XGvOyIx$xdWpwbuf4n81@3zB?s_UGA$L8cOR$`bW4Zc-Ux~`&t5E%) z49v!fcmvW$H0hm*w=g{!b^gl66_|rc&jQAT?)LapPqe@4gso-Na1G0;9^|6(_gd_Z z)3HC&cA5OX4pW%E9w#7uQxl&MPG@=+&c)eyGtNQ9XD+V7dAJVg%bNN}*0ltDO z@O4~?igzJ#P3d9deRd@q@AC<#y)(mVmQ(xl05-$**cl(h%kd$ch!5ie+=Oe8XI!Bt zk+wLrAD_U_@hL2?^uc=gEMA7sA?HTt1=MxMi?{?|M#b?Jd>OalC-@rvimzjN()vxL zO?2Ku+9v019D(oPJmg#unvd_}y|@RT!@bD88s{UV4RSt4RfJEl9u{FA+=qSfa~zLf zA$j2(#6|cGl19#VxD~%gmUW6z=bfKWUsiMkxu>J=)(O$KbB^Lb{0%ek7~X`x<9ejA z3GKsjcmT`eUw8u6Cci49@^L$3-laAl>HC=SSCcUBJW`eAVwff_ras4DE2fE)$**L``q}k{yX&2RoftI?W;vZ7 zhF~mShFx(Osy-&6`r;!{@lcu0a<_Mk{}m7IcLt+|RFMJczI1*SH72 z!LRUJEXE&D*CszAeMYAk=>s}HVOuy1()}uEsxc z4btYAbU(`fg@bIm_o-yleI)7e9pM_zsbsI`TVg!ZtuO)4!xU_f>39KNi5)Q;FTq)u zfO*&%Rld96!`Kbq!|wPY_P_(!6N|AIa!u>>#?z3vh3ev^*a`>WC76hPa4>Rh- zI25^da4y5OI1Hb}B;1a}@k1PehwySdh9mKBOu?q4K`PRhc1B}69D}`aEY84jI2Xs` zVob+7@G4w|8K|;65ml}yq3&a4BF_w*DM;VgnTjV=pkIOX`J7xl8?QzBQqFXwZ{*Ct zZg?H`#t=LF|gY=n8J>#fDu0&mB*cn5aJCCEJtXE~Z)@e?!X6dAFfC0lCuFF%I(8=5^lt*xCv|GqgWrGz?S$F#^Gi(?HG9- zlVr=k@>hAK^N*fMXn2X`)KA)qYJaz57kmv9@pZfc-@vi>HmYB@183t-RD1L;uEh6n z4emnKgZJ?{+=E;26Z`@9VFlu_AFJa5Y=oa<3;Y7l$1kxPev2dUJ5*cxJ*po3fLvoc zKjIx&jH(wuq3XpU+>D3uP5cE_FMdVcSNIJplP1Sd_Y;1{TKEU*zW(1Bi=0gS^FrbX zo1TjZR(eLBXDYK?4B=I<0iKBc@FZ0GaWX2ss-p5IjR=B%D`LIG%WXV#?hCHh&|R+?c4dBZcRlqF^4;}Da{O8^vVZV^yB@#IV)`kYQ03qe zR5{T596ArZfNx+SzKi^(OXwTihUMArt5^+R$7c8jsy%xfhv5#?@fS13jIzgZm~h4C zEW$o#)bKvb)xbSkANS$}{0MXLW7Pf3PjD%IitDimpTYgO9Y4n}@C*D3zr?@sAnH8$ z4YtH@QRVGBAJQsES6o*Q`Hnkf68_)KHE1ofgsm;(Zk>%76&O-GcC!_Ay=in5a zf@)`{;#|B2)xPH9gE$Qz!E5m;oPo;YnW#Dy!Yb@{Hpb#yJP+rgSN;;m*!T@*`C$3G zk>ynWZbGH!LTrFHV>`SB)vn}Wf4mK~UFBJUyWK<@GHqAa8CwX~u!QAw+)J@K-i7sW zCF;C%H){KB%89`o@rd3JYe(-*rg9mUaeu?UbeTC|O z9mG%ZYvf*{^9@!cU%tcY_&qklAFv(%ggx;v^6rCk1eLEL#+YQCoGRT&sD-)i`#GGUM(y7(#l2{+>}_%!Oe^cmcZ&!g(m3#e|PTk##t$9M5bd=Fp8UC6b+ z^FHpu-S`FW#qaP#tU|&32z4FtF;>G*upWMj=iq0Uh(*Y?qq7fFaX(JL1DJzfBG+)v zS2z<7;*IzXaxLY2hg=&uN0Gj{^BW$)V_2SiJ>f*^JyyZ#cp_ehC*ypqimUKcd=XE> zop?IZ_jAs`&#(rn+{BQE1v$3dz%MZ#kKl!<>y{3v^Xo;Zx}AWXu`~9^E~xWHSJZV&54;)spsr6Y#d~l7K8%C$ zDI9{|;$`?74nv-SIU_I$N8&Ubh1}D3u0Zb9JE^z?M`IWAI}Ll{Se%UGa1iM~0Y~AL z$Thrk6=vZiRDNb6*P2cia?R#sV-e;c*AmWj?1D&-oIEU7h5iQ8hC7S#61*L0 zJDsJNhRcw)%UOXLco$xWD{(H~jgR9!NS$_8A$8WtN9v%n8b84MkhRd525;{hjBdqj5F~Uya9j3MOgkMd!1haUtzi;zJ@2@mslB9e@?`scoHgpdl*xA zqnoJd*}92eE&kUzUqcMbHO5-l6>H-_tb?g|7EZvrn1g5ILac|2F&6K_2KWp%!fn_X zw__93d7vro#^$&mTj1x|3e|tS2-^}r^2)p)cL^pi-5FD`3r@yvsOyC8sN*YSES_bL zPtS{#{xt}DoKZs`mQz1_0P46Cu^kS?_Ba^TPa2B4{=N*A4@s#0?{K^mM_@i)j`!jy z+=^GA(lQy}#<6%R@kqy7I057EN^FA}H~=T%V9Z1vhx!JIbL??^NIRqBIG6Cbglm|> za>}P`QSIz>RQzY7+Tl4k1?S>?oQEs$22_0K<72o0U&0$v*OfQn*SHW59+p%7?!^o7BkYEsU=kK#8t%hM_!WlmNBjzlQTzD`|3un2^Bm$Z)@C0^ z@NDhtWc%K2c~t+i0&c}hScPM&fw5Q<2Vrg0{peWy6&oP$HaLy&RMM$2#^O1s{#jFu z!)DkKo1?CCTHxi_5_x9sw8Ht=8gE3}+z`)#owoQ2w!ym#Eezdi%aN`dRgP*B_8g;z zbu6cPy%BrjCRDpyfD7;ud;uTDLVOH=!^iP2d;)dd{Ulb$r%>(B)2Qq2XHf0Xv#9%o zZ(?=g@HU=>J5cp*C(g!qaW%e&x}JC+AH&_~9Z$+)_juS|@OVC9xhBNx0P4E%b5#HD z3(UnYaVdU<%kdySjbG!l_zmj(_ATzj@9=&60T1Ah_zf1L(&10+OFaHYU4L=WYOcG= z;Xpzb49#3%3sRQa!rI-VH*Pq@P#PhHBJjz{-R)D~(ujpfe78rTtQVi&A~i}5VH z6YJu=_#a%0_3;Qcz~8YUYMYJmL~M#@Vl!0zY>ut44eEaA`Kb1^JwA!?xF0*R5_oH>MzW|NAWs5jMt-{)6B#a3}HIX!euxcSK>U>`ye;q zCpaI!#Rce)J~v`{yb1ZNiL(%Oep!SQ@fMtedH4X{hP?CQ+<|J(mf(-L6uZ+tEyn@4 z0w?0#xCS?&o?ktJXVP9hievC`yc(ZCp0PR4;%0mfU&QBe3%-avTXMD_&tjad=+K^R z!%Fxn^6bRfjy3QtOvbly9PU6qYvH_uy8d_{pTphw3VwiFaWB4#MaaE-XCEHL{m4Ce z=W{GazJHCau^2DJpHSB=hfw9Dh%s-KEhlQ1R8DFWwu@22F_x=^f8ja!H>%y_W|{f? zQxzP?hTgDysdA!QEILf50c$3 zc5H;N<2k7M*&J0rTVf@Sp*7aTbJ5fX<`u5C$2pX8pyRBs_zwjI0Zk$Q?U};tcLaQOl*O*@B*xjiC70G z;MuqiWAPoVk1C%Hu{Ouk2rtFPn2*iz5VpYcIKKAS6)(UMcp>V2w+^Uwt|M;1PN@5D z-B9=4x+Cv^IlV9*`=Z{b?uS!xFshv!f)C#cBZ24n_Z0+$gk-*3hC6F`((557N%$8 z9XJnpcI(`L%I{pI=_Z@syfb6+yCvZnglkyHa*gp8RDR!%y1u>xN8?hQhs#m-20(Ya%e;?o*xEFPQ_Cr)X_y~EI+W8t=kk8+u-iQ1SufxNbk3Zu!{0;ZvG5i+) zz(4R$tU$W`g}igV;{HaKZWB``=I{FT1E|L zvD~Rx59?zr>e{U#Djyo-Tx^1mVpA-{X81C;LiIaaqxv0fQ2oxf_#L)K^*=7aa_qkY zo{Jq(&jmW8@}(;d!)~Z}tG}85gpIeZdlc__gsX3;;Zl}Ue`px${!j{T#8gy2Y$ED9 zJQF)&7IwpI9E~}sc6}=9ymbveg}Jy3r(rQ(izl-0>BwgToa?X$&cx9;8)x7goP%>w z?}OcdcjH3T_4h5P_l$1E^Dz%~{kIsq;}X>U`lUD?SD@aLy&Lbwdr;|8g*dstV{d-n zUg>f+;eRk{Sj%$FaRaKK`7oy9M%4Ln6J}xo=HjDxJ3fZ1@d@05PvYme8UMnkQSIq7 zsQ$onsOLK`;dQtL7vomE6Sv{LxEfIH|Wi|Q0Y;bux^YRK4&?d|Gv=r_${iu{De99Gp@#8a19h7B+q8)66> z<7_+!wO^gV3j=ydNi^uIsPDmoNjj<3!YR!%RGg zS@ixo8RKILGcEK6g4QFC1&cW+(F5Zmua3wClhw(=A%8C2i?T+p* z2g}LLET{6AhiBq#*cun(`FK03pS%PI<5E;PU4~QfPMnK(;SIPFwO_Rn2`}4nGLiqa z->R6ws3D)_wBOZO9oJ%gybqh={it}X!_N314#0=-GTeY8aU&`|1*mrF5!C)wwhG<- z59fdFKeB$m#&SA;y^bocZ(3*G!iy0)u+h|U=r z_)T}S-BYk8)2E^8AK$fP>H*)#6zaqD>8SWu$C-Ersvg(C8}Uq3e$~dMSO*`*v+xP5 zi(Bw)+>Q0{2=bjvp_;^{J~qJycp)~#i?I>*#Kt%Po1pqsO;P8yW;g>|;4*B9tFRS5 zh^2NKRRH4?1)Ood`9>8$<4Ky(ycDf;x})z_!>EmB+ns81}{#?29UU{ZQ%2cea`K^D?o9h~ zIhH5>eD{=juQ?e{V>$&D&!dd)?}wY;6IVRz5~e;Rc7((5znuR0T&upwpeVv1Ka4xFe&%@?8A9de-0Zzgj@m9PE3veO6gNv{jZ^qLq z(r>`lcq{h7JiH2T!$r6lAI9794P1h{FS`t9;&RmSXED0J%k8|(|2qE2^UOUgXX-EN zc<;xdxDH3-db|!F#M|&8)cw2-sPgXFzk_XlA6xrvMY#H+8lGS| z?e}R^{dxf}!WXd{7Gghq3&-LPoR06{?f5P(!Ck0$?7^-0A@0JDu?Y8}>eB&?$Io#P z9>f*+4XXe59qz{O@e}+3zr>&LFFb@5IEKTh=K(*X?pqwgzW4`D!as2VmOI@(hpB)c zFD(37Zgs=f$VdImb$4&n{gpnb=VE*W%d}g3WXSX*`KXS$KI5Y= zq1%~14By1z_#uwOUyxUJLx18Gcml^T8g<_#4KKiH*oxzyj+fwdsO$3UF$;MlZQftt z(Wpu1*{JjHZK!m-9giWmyv^s(mS8RF7q@6bNq8rYz!j+L^p$uma%(QM1i5t;T8V4% zIpmf{h|jn<>ygj2I1l3Y_z?2h5@!QesKosl?1nF*-gn{D7kUt1Mc$EjUc=qE3(ur} z@5ZxnFJ6qFAm1tD6rt`*?nAxTvL6@V0eld@z>WANs(hp{y1%*Yyvn~SA3Cq=oT=ek zmTQPVVG{C_bLRQ)VN|IcD1DqxcZh$58FU@94Ed?r&O~-?-I&BHJM@PR)KQ z<0Y)e&vTgf_V^hFd%qIZ{_>UlroVnFu4kIBgAXa*e0{rl@A3?MpJ~3X+w6BUWySsd zXh-)kwBL5jSKm?tU%PC|KVO|{_SXc}Z*Ph^5AhpC=KS6QA7Hv29>Mcb=YjU9YtwkF zjTd59?0`eCBVLZ3a118kJnW1r=Uq^J?`~Lt-BH&|J#jDg!XL3W>OHYbQSDKG)N|qi zsCFn38{<`|az7ChaXP+<{9bkFL%be;MjGEx4CQYYHo)1~8|Ppe&c%s19}92+K8pOt zlDY4`5Z`5*-|{if6Zwsp&~HrVVF$|T9XJ&EPU289^4*l7*?2eJjjNE)k~sPJ60XKK z@m~A}*PvH!+~0#X@9YQ5%{rEANIq;tm77i28z05%@iAP5kK_IL1a82m@O69|b-s88 z_u#YW@0UtMQb#SXg)FE2ZbR+&Rn&f8NA33wRC#?9*Wg>I^11_6Uf;oY@Lg1SeGg52 zBoB+IwA$|pm2G*|c83tIVGqkS!UNbBKgYrN1?sy0E6l-zcrAX7bMRZt$Di;GJcRG! zVf+k_pxW_Y@lX5>b$|RAs&D)|>VC=}*bD!}fmr?w?kivg)ct^psP}0qp~`m^T#F~- zLwFLZPM(af;u-h{)Hen)#9s+=unbbk-o+^bc+iXm(fqlSlBPW|`CFdm=B zR4l}7d>L=XSMW*Pf*;{l{0+C^x#a7s*bTR%%FAmw7+=REd<%6Seh22@PE`ChGrGS` zY<{y?@jHVs)m;tmvz+3$8*AYQ7>l1^bKHkRa6cyF0i1}Rqp25|$Mm=OD1MJS@dwoX z%pY+t7Nd^q5PpG&@h~32WB4=b`r}tT0gs~MuV*0c?*p6P4OaZGAp8&1@F&YP#J{iw zR;XdGgDT=2rYocR+f`6`RTT^I6jb|hD!z>|sQzp<9D%2!((?@b9&6ywSQ8!geJ1L> zQ3rLtI2#9HJsgFxn2z-^2OD4ro8X<;3}41p_!YKB-S0jZ594`w3di0a_4&yQFd5@< z40gb&*b&vw?S!-NVqAci;8ILL)#J{n_mH|^A$G-=u^YaN-LVLJpst^KqCQ{Q3s0q9 z_Qtx{2V3H$*a7`U3aX1JwaVUoHGMtaYa4{yKK4&=`H()Zp zi7EIKj>hWL=W*B?)A16VfIaX^9EevTpOJMkQ18c1#)X)T1vnKy!(8MugU+?6=hWBZ zIXDyBVF)k5S=bBbqWXnPu|4OLJ8>Ycz^m~tydUqzm+&6sGbYYz zAHX*F5cb1|F&Q`FWZZ-^umD%!Bk0v<_xFY!)t_K}ev;)>pPxe2=Vws$;#q8i&tXS= z0sG^NsO!{1RK0o`)o*(Rb8!pmJiHB6k6uO9qwRPPzK)OJ8@L(Y#24^w{0?{E54aN* z|0Kpl`@6c1+7ZQ{!*g^F*6=>dDgL{$7VbsG|3g&#Kf-wY1jpg0n2w*Jwy$eI_jh~E z@A+!`V+e0axP}XA+V(90dobM@)vk3xZLcfp{(g6yi#>1^_QALDQdB>qFMf*sQSI~q z{0kFN?bkrmeg46C5e`AM-$St<4nwuuNjMFM<18G3c{md9!%_GgUV+;&8TVrf{(z}i zkz*W&cg0Y&qKYBcLR>b`FIuHgn76Sm*FDJ$6N3TycKui?f5s|fhSP^ zm!R(FEW_rw9M$i*6EDCOsCH;2PQtr!D&B+o9CtpdKe8J29Qa;TKYR_og!iHPA@}1~ z_y8Wpb$BA}#CnXu2eA%5gbi^c#^WYbdsKkE@KH>~$1oiq$I19KuE1w-6+Vkw@Hy0b zG|wZSy>_;s-q+uT9q?7u`-9uD559?dj{Fvm!MAZDzJu4}yEqTu!`txxWA9DibSnS< z|1fx98U;kAxJ zJvVb4R-%780o8sYuqo&J%;vkzYCpA5Rh1t13;t@uv#=HX9cn-N9L$C1;RDdBZqM68 z;9L&NK&=zXLd8=Ks@;@_8uu$g-N(2T>ON*A7zab)ORy@`{%SR-@whtF^E=@%0@i?i z;ni>;tPKlb9k>nN2*+SgjiAQKo1mT#Z476^Ch!H=6wZgu;d0m-YG1Jp+y-xfO8+6m zDrJAK;WX({IbDfrm-M*y_^Szfzt&5Z4r*Ih5eft#n6-b?}EKxUzh;c01Qm=EuRufzMH#=QwpcKHC5Jx+w* z!^h!%I0YVrPr^UpGf>ZbPKV)e2D}o^gt{*?8`gt!pvo%}alXlGsUK5$(ae3n2Ym^D z)j6IAyTSR+b!rdJw{Oiiadn-4dw3Opvb)!z%KHu25WWdzcW=P~a0!fqOQG!UZ8#df z11G?Dq3nM-d>+0BHQ#z4eg;2)%0~tA?tIJEeB)N>QU7xekz0*FrDr{ifE!_ZxC!14 zx4p!Q*Qz*pc-xD4)spTO^-)_uF-cDM(A2lvCX@Blmy4??B& zFw}EpM_@g86l$G&9Nr2~z$Ew+)P1>=Fbkf7+7~$ubwBPmsC|&%q3q=ksPc$IoNv!s zd=p*^-+{H^8dwK@3G2cgupay# zUJq4{H^L^c0c-^u!nW`xsC|M+sBxk(jD=0%NZ1UjJvN6EU`zNkjDp%{Y6Eru;1;NH zqAlDGqv1)|9{vG4Ks|TT8HU3yP~-A#P|y8$gW7w$9qKuPJ76Nb6W$AZzz1Lq)bpJ^ z;dIy=z6kq3%|rV_%|rV^jqm-T#`nA79yk!5hJ)ara4;-OgB}8P-zXl|fJ0$zm;md; zB-j=vL(N}@!EP`OdSE)tf|*eBR}a+u^&a>v%!QgCjDmY%9y|g^!((tPJOjtUi?9PYJIj0$~}rd+0$cC_B0L39-o0;I2}F$XF`pOv*9W@ z2YwEpgI~et;kPg!9)@$_&+tX4e*7gEPQA{9YM=9=p8tFWHifT3t!oxS?ME$wva8o& zI(!4>z&D}RH%s9Aa4A$j{SFKxPwzt6%W|mals!IxDGdLS=gm1u2@NKvmz7MxRt!E10*YFGYE!+x2sIP5Mdr)6P z?Z<3~TKDXLT2tL#&_Y1y<`aRMQFa_?0nQ#vr4S$4sUS%Jg4fn$r;Q_b^9)xef z!*De`0zZdG;dXco9)QQ8o^w12wNLXiEQ=kTf?6m20;|F^Q0t}NU}Ja|wt#=Y?(k1| z7d!|1z`tP{JP)%WlUlQmDhprWxIBCnR)D%McL~%!Zbi5OUJ7N$9?H=9wy*i-uk2Xk zjM}{1mH2A}uY&4t>%y6^9@KjKI=BGd0GGhV@HA`!|AbAUg&j4Am0?S$d2tkM09(Pv zunlYnZ-I%hE!2FZJ=Aj?9pNh232Gm`GgNfZu z1~!I0VGDQ{Y!7?G{;&^>gMFdyZ})@R7rYzZ2M5AAa1eY64u*O@d^D`F2R@H&_ZJHX+v4;%pp!8Di*)1lVo9;oMP?|~Cx7S#Rn9H@0s zF4TR1k#Hf*gP*|B@H03D%1-ZtymM3!fp~w1_roi(iwUq6d;r#lkHA>?DAfMoV=x6i z4oAW#pni8Z1>Ogrf|KFXPdCzNiV6 z?Pr&PdY-o|dNhWfAHj>E*6Wu*^_LalkML4>5Qak8Wf-)un<`NKW>t6Be!@poNSe}Job9f1C0cGcBsblBc#d^oBnRm89e+<1`SNzG&Z-cV)K2Yo2 zzOW}81V_Ok@O~H%pM*o9<_#mD=Iv=v^Y(P8dAkS7zDL3SFb`_n9}U&N-U~Ia90#Ys z@o+l456*@Y;9KwkxExM|E8s)$OZYI{0VhGN^B#kT;8Re)Czu9n!0E6#oB`XwnNa=h zY$*Gl1AD@JI3CW055gDWqi`Nn|N1i2eBc$h0xp6_;OkKK{02M&7sD&Co3~+0_zr9f z--R9F`!ErH0M(y<2sLk94c~)n;3~Kls^44(wa>X8egi*)JK#pB@qH7Noo<2UsNVv3 zG5i9m{pTKVN{yYcTI58zLBa}dgI zPQ$tISE%v$415cog)8Cja3A~wY99F)yn*^U57p1{kf2%5g~09{mxjGz88`@*hmXJt zQ2X8&!DrwlP~&q&D0{gSz5^>m^@E{sI}C%nVHK$T@XO#Y@N#$_R)?~ea9A5&0UN?A zp`OpI0o%fwP;0qsU=oagIj|O#{agzt!`kpkSQpA}u7m5~^>7=!0p3bQ+z9)^1~3jb zgc-0A)P43ysQF(L_&RI`KY-1l=4mZpG;9gg-$cRwuoWB(Z-x)TTcG-zc2MJBG+Yha z!ws+l+zLCw9k2^L3U7s{U|0AX>;`qe{dTC|Idz9uz&l|i>;YTC7}y5(fkRA}}aANs=2^FLU!W$sH`YE}Lq_Zl{NbRRP`x$0=@a~oJB4m080 z@j~j%(_uN?CbL91e zrte2}dY!qI(ZBY|{Hb3)`q$EGzh3#(oaBz=_f_g3G^Fa~J$K#o$?q36yYlDii@i^G zq^~jl&(BZzru6APmz;mf+xfM1_p;e~8xJbH{hLZh#G zeoTI|WwokVFND9^c<{yy+NueE!qlUK2My>ycWt}sRo^QZlE4^DMTdqw*E*^Hk8^) z(-{kmJ@mcdmdE>SY!>-dse{k{u`B)y`Z{bSG^E+mGL?5NTv#oA%-X%DKiT#uZPe)R zxUSg?yW4(u``~U%%d~!T$8g3%qhC?G#)HqTIKDeF`s|Lf-D^)~%rN?j(-(hm_j^s= z?>GLAf*x!NzVdTjTg|F=^X`;aZyhk> z&PAP>`&=jg*;TsUaV)ph&3hAnIvkqB?;x!AjQwmLy)OBnRw_Wz-XIpQa+nmk9PmF$Ea{R%{ zD+gph-v6#@G2P;5tRbe{%2{Q5UG=F-c`1FH(f3%Hlr(kv!4YNV#Ws8@ zZeeZuTKe_Skf^)n{W5-4wQZ#aR623E`<~;Bna2P2pB~#Enex#aYbwo|da(1bJnT74 z{&%%rJ@~mbIVsbxZ$9Jj*}02Z3mE;AN8ea+^pbf~KO50|=c0@&deKLjayb0eug7y| z-~9Id8?O5P=$sP_emwh3IF~OTbhuL5nkM5XKT>DO*7hFe)}|b8S~`Bf&bq%>ocKfc zZMRPRkn-0&Dm3KSg71IW{&|_^Q+kZ4x#>{iOROD@e&)zm6VJb2=jDrM>^+)2*t3WI z;~V7vg%{WD8(phT)Pneo9$o%AyoIr$iuA|t52^Eh@|P`dn4Y?)@jH*a$XbVvDKzA} zbCa+8^_HIBoT_a_E!j*g`{^d>Aoe{+WWm&%T|Q_4I2W&`IT(a5i7EveuOG z&;GV_Y`cjq7acvsT*m0{zwDvR6TeM8@I-jGz1_chb|HJOMt|wbOAj7dK6>)YF`qOn zol}twXE74-W&L9*?x>MrhMk#w|P*NaWB7q$@Hc3tNn1_0oLwS<^R~rmDYAIS30I%Shu`I z-qG8zL!-|dU#f1cQpZ-$no?%+*U>+`#Tv@!E6jT6%r%z}>iOM|TOau zZ)y54a|i|!(m(dqcOJWJ%jn(n`n{VrW)p2XxxVyw@A##`C7*wEW6mqL_wJZ{+dy+K z9{pz*jrlRU{D&1=w@MhgwH&`owvtUh_G|pj6?R_V=h@Y(%4a2=;yDvb`&gkNtHWPx zoccpeC4&Rzdug9Ht{|@uim+hH-9~H=!jl}mt4M(O=s@O;y>@w8Z8@tcXHZW z6<_<}+=*I4nQI$+yQpWgA2z(xV)?sOt{P#jT+x%cf${(22cPV@qTQ9{&(Chv{MJR^ zc4Mw?^l$WC8vf-g*QSk*K0Rm1C1cs#`P%3g-M(eth=kCbyX$TKx%ST$a@qR{SG>QU ztNFmjJ@czvbi78{4=Q_>u*YHaPsZN7HY2qE>`Mo~KdWt(9rRb@%gg^y?{4Bq+oqrC_So5-+dlF>`o-_pJ$R<|JBem*ll1gYe)_4b{qrMQ+9@uwHuu3F`zqpYDWKUn#e$1>pC;i6!;Ul9T zfB%Nt|J=GHv+w4tcQUVOoXVPpxm{>TqsTE!{+NF2kNX~YWa)tNX=wc}^{~;;-TGL~$G6)4NB+9vp^cq~FUx3|Q{xo& z#yg79Ck-F`ZOZdE-}CL>+qQ4|cpbKoVElJoar241RgX1V@>KLUXCD0MJJ!TTU$f0e zkL?@uQ^e3sO=k3cB4-GDL`FaEkIb4I%Oqqp+Bk4Pzc%+i!dmxIg+KVApP$-VYHGVR zZ``_HdhwFZ(ZxO&-*#*}HGDXK3ufv-7%`BX#@C8Tfn6n3q4l zuM2Bsqkm{Z*3pW$-rITgzRZJ(pWWS#d7aVUkUFB`p%Fi{UGiW|$TO+q+Oy`VrFb8m zl=aqS-QGRka`>*Aee29(oEm5JHTPXV?7?L{>(=>Z;f~D7J6p5%Hu|k8L(4U-y=lx3 zxBs!d>&Rz&&>vo_aJJnTUgxd7DWzI8Ok0||x(V&8ozd_3{pSOFw!Bisd*Xx1W1H)q z+I>cUf1RP#n{~LWV)M*}YZEVij(&Tk(f_=#!|-;C$9|Gpr);x6?^St)^c($&-9zKf zWN+NRuxssV)0%#_8+)j&csty^yk_*aQ4LqF343*RN}o17!*9m5#O?FLFWJ`P*Ut4H z+P85@O~#`KjsNJo(q@%?cu7vJZDYQj-?ZtB$)9tN ziL{1>JhI{H*?WFlxAE;B3*O7!u<|zc3`{u9{)!xSS+A$khum`MH$&&V9F5;P^8d=k zUp+l|-uAKsmev2edfkev*^4&%gDYeIuA3Ph-v8O~AIjBw`YHBQjDFa#b|c4s)cmDd zpPqdC@s8=Gxwm2TZMIB$d{(P#9`9W>FaO?N&C^&5*H!pW9G}+bqJ*#huDW^B_m>{J zV0fP* z+{^oHtg1IEJ%jEV^?A8f{W{zmyJo{yi8cCn1`jzmAi}$N-}fE*EkEEn!TO?} z{5Ou6Fz$i%*_~(1iksc7X*KHoE2Cff=!WYiM!dWB)ZH_#lwbTl#+$w$^8r;$33($^xoF}(=cg;acuG$0-%AK8vnoXqt|4ze6M zheSNiybMW0@{wIgnJ36El7`Gf3Xlp@&>?(uXWU4k0yWaUC)Z*@aYKLC^r{jZ8vTAt#YK zbMS}cA^FI92`O6d-!gwl^{j`H=Iw zkaNg#j<+HwkFnDL~F54dxRk*X%;hAvIzNABjPqhD<`{A#0F* zNST*OJLem~iLk$jEJBuXT!3un|C2B@jIvK={#R2WJbAyG(gBn=sh%tV$WlelgxJc(Ed_(h_S{>W5hJ+d1) ziBwD^FUTMy4_SnKh!h|T2$X+k2AXrw=K zYytKGXCljyO-LEayeiTFsqiX(VK_{Kdbn^N6274}C`kcr4NWEtY& z+%#kj|L;alA~i;k4rCenXc&h~M5ZANkTpmF=k~#~@H7mi{_7)ANE$L0nS(4swjz2E zzT#_yi$wE(cbI}C@_!C84Jkl&BPS6ngRpR8+L+;NFFkgH0P(pla zR_37Wtb{>{Nkemo*~bk%*$uOEvy$Tzk{V?W9nQ1PR+}&@j`}rkz`L|ph>v%qCS+x1 zXC~)F)bDkDL=R6+YI^FJ)Qn*f9W&ECscA`BRujG90~Z>izuYH5E=Fo1`$K8xyjX%$ zu_h(4S(&*RiJYqvTA%a9T?DVW(DRgGVUe&s(jz2`<5pqI?QpCEgjvceXSHzR)!bK3 z@hRRb5Pn;36%>g#&5qdk`_JN5TpgUa&N*?-Bbiw+L^g2=@;rH6TqOSF z)V!p`*yOCt^w`vl9K4vg#p158yen{0o_mC(7KwA86X#`|Q=CL+l_QM>LE_BGj7`kU z9h$}v@gK&SY~pmwSgYTGcyZ+vMmtA1$2yHRHX$o1 zK8He9UZe0E#F=&^n~LV-#m1(RX|Eaa>E^nyu&(Is_BARsF((C6iS=ZXsciH$xh}?c zJ|!u2SW1q+2iI14Hy8GjokMaoI+;4`=HzK!S!oz^kSh^}bE`W3S6whqvB{ZPvAzKR zDSuZw`KxBqF)AxHCn+{LHzR?lETvI-EL~1%Oi0V5@W^^V-h$_yDY8>G|6Se(5vSbk z$fZaZWG4+MnwRQeN5$$hD~T+pCgjA@fYOpiCaKK+DerFGRXSWT$&t_Z%f7MK`LHO;ywL2h9CZ{Su6=lXSQ+{|2 z=1jU&PD+=5IoW-!9dA{g#C1YchwTvF5y0F%cpYX_CP|*`|8c$9eXv5Z%P0btRBvwo zvB*j5&G^;0)BTNBPbxgjR8+T-oC}su&BOX7n0#1A$diueJI7rpFSVa8PThCan)Id(_{lUXO8YkC52jx=i)=xgC!6 z6MEI(4Nknfg2c&Kkm<1!;nvPF>h_5RSLvuISvF*D0$_`^HM;*Ih^OK5ye{@wY4zf$&ZjE833R zw%4@OY)ynx>7**Zxe{ro!IPCV(w-lvtZZFIQXY9xIka}_{g9Kc8}Xxm>mg@J*Q#RW zK&oPM;x+sIw|3xP7D`)`FC8gK@riai-113Nq2Lt1y41Re(qSdrw%}hriOiV(v-&73 zi^B3LEDJXcyffFhI{cMAYVIMMh;-86XB0}pe^n0tHrU;?&`Z#T!btEw--X?>-*`yz@vlm~?vt^@j) z?2LF%c1mVWtfosj@mT=>%D?QkxGU^yqB$9u4y8|hrLFe`XVxhZ=sDMp8hHBd~-T4=K|BH`GLki*_^#Ta^`82n9jwax95Az z2t8!nO^8-@t@>3Y93r$pdglMj0k2$@4VI-$!W#^bNN9F#_aQnK__}B4o z&avi`IzF6cpVzT$?oP+%>R+x%mF?jy=?4EhMOZWuaRd!5qt_vx}szb0KLbauNymtDC3W$O|$)6l7}N~ErH$XgHm zznWw6V*1f&g^BbC$;{31hDz^CE19|C2*fpWh)yAv>k<|`gi6b z*l|efV{a*IaqwmpCQSyqD+xGxde&t^pSb8_^B$}Kk|J0U(zw|D#vsN^}RJ%3WUL=%3n za#5WtU%~7r0zKb%pbQH4!Q{U_`oOZ+Sp7OLfv3AD)>iVhkiktsl-EZQ<+Z@}U&2@& zET{iGSNz|~Yd2nW@1Iw9jS;OIk+`=J%@-FV4j2G)V} z5$FT$S$5~H6(Y5W#r=Y)fA|(r`Xa|($nJ(_COT`suGCu)=WC;poOj!34F3nFQEe-d z0Ll|5?Jzf)|K0v2hyR(ga@;B`!A_4=5q~;<%sH;)94~f`!<^$^{QN7w?)-h3lV6RI zs*hMi^Y_Sc7s_vPW@b*|{9X1Q#QDZ`9wI`ho!weTQEW6;#$Pb2~VapOxU--NVOkB1>pH&C;( z2{TrjSUYw9JQm8vV~B(A(~u@7Fpia1m6v~BHR2|lZI7J8j5Y&YiGoyDm^JNHQw}F3rq;b{`hQmCZ}AR zUCjT1Wv6=Vgx*e{J@%?RqkTI2o(+el&f{Qp(&+Xjy55wB(b?-ym4WKR4%1%$#&B$} zpG^kL0!;J7IO<_03nqM*KVe9Yr zXX{$dI!WCPW`xx2KMTld&=SX3*t;Ys2n0V8ElWvjkm&e_SLQFr!fbsIlP** zhdylb5zBU**;Fgs$@=&6kidAab;{pvZ|2T;Ru=X}rHE+}dLQF&2v?ELCkhQd8H)lD7F`P(9g#s&k|_Oc22kA%f-(5_=U4!aMF!e8JX zp8BJT)OCLnq_Lz8A55aEO~?P#r}OUP*PNa^-Zf za`jJNRV4_QhbVp7h|(8RV){}tN0|ZepWDj6*~5+?zJI&kQo7yyRBN1cGeyUKY&+z8 z4_1MlZZ<(^d~_wlvf|~%l%;GZh;!P2J>Is*gXVqeG}ZsAPqlT!vXYWAj4sBf8=98O zK8?y*ZJ`HqZ1$!+*{Nxn85}FUL!3F|a&>yRleAg=yB%IjdSm#AS5P~MPq-&HHH*9M znYmdBz`lcPKjX;6k%^?DF!@@pe~LTb{3D-p?)+mF{|B}+rGGv8$<({{uie0J>Ywen&!lasXtZOZJVPe0nHm(83-A3@o$ z1}~C%)MigY1=iZ6$?U1w{W#~8u4ovz-xh(ccwbaHY&|yAhRV2|@IJQd!Gxi@EbQNv zR^~`_T+5MWoIBy?w?D__O}(>s&Ht)%*MAgY&qa6L!@)So3g$ z$}JAPy$&fXdzDWV`d3U{u|CPnO61uu*FH@AZW@%oX{2Ex{==RqOoNAG|Fw|HEe4%` zo~4_LE^r;BzVS6DEbR~K_2v zXWLMIBknaL*W&*<$G^%sl4F0HRT)ZDwx=9_?q00B1})Q=i*U!WT_r>B4X#JohE6S^ zY@Io;hesILOS3a$KQL_`DAE3l?&kz?zJBB+C*6KT&%OsM-*EJHUhKB3@HAJ5KyN?i z?X+p9dtw&C9{ls45( zu<=Q4(6$#!)OjdJ`ShUY`+}5{^o4z?;*`z$x2K}()D-Hw$U3m-_@Rjs?tap(@oqG% zulnYrj{IAE9^vl2y90-llvt*`8QGqAJz=1M@dA6$zP7X&f5GZ{Ir?C2X%+gw`czq} zEd{nQl}j9YfBTo;7<7T?{<#<{{V$?MY+xh}<=E>r z)eGK(IbXe0;Oy)8@*lI+Z@BTB!3sa|NF_vT^BakOw;jLcMv19Bkl>mrgNQE$|C9Y# z*?BO#sE^(*^Yr+<*!VP0O1$YWBMS9A3u)_>4|g4x-wY497ZBxR7NUH_Of%)~TDD*6 z|9QTrx{fBCV0IlW{i^4kc6`2icITpFn-dUjJc4OjYF7rH@NOO z=Q^b+l4JkzMYcCTsD3n7LLDlVqpGvj?L#9f`g%b)$QW{=Xk`^Es^*9&mReT8rO? zTuVL+X4!QaET8(74@v&VK1KPA#-D#am8J-Ep(d@x?{{7(tsZUGKHVEjjL?4Lh(4_p0tTgRXFH~sCc zyC(Fwz`PYWd6ShyH7{y!|LO13{*%1rkgq7xq`dw7FZ1?&K;GQF^0+o8YgS7-2bJYD zuo?B{nNvc4k({RefDC8FP-N1jwzb|4F7U6fUti1_w_h*d|6u*ccJ%)9KlOpT(b@C! zOi%nhxk>JG@3L8?+nz_-=Qs>n*RDR2f805_ySJhGcE`8|ZRL|On|>u6>Kmd_l*!`f zN+=WaJcnZicB3@yufGYU*dJg28ONz$`A~?KB&`%$fezwp}}Isphyhdiyxf9P5Akc(ggzKC*orZ^}Yz zu!fhZzRVUi4eX(=GLlZc+U$yNqohKAxO=smksjPaE-9H z@8bK$8q2raK?VNxmH8^psLU(Tr^UQ&!mpE*m1WX-l5>G|pfWm(-mZhoTs$HAU-k#qy$c>8{7uXtM>U?*fFwy08Ov8Dp1o@w#;9*F|R5c0KC) zAkH_RjNoKon^T*rk3Pvz^_$;`>PXG6dYah}JPn5WUOTYlm07T+F;IJ2Ne{a2H*DRDZ4u z;(TQi$H~AlksYf3-!g5z=$?EudfP4v%fOTidY-Q`_ji5eXLNS?sSkFaA&ct93EVG; z>g)v4g}g<7Xv(Ujy!n2U``_kEb)bBGZ1UyYS1HV%>EqO%{Kr5up>)PD!rb-Ak4KX86B{ z^Y8ijkLK8KuI$^pbk_orx8ni#9BoiGHxqVMy{xe7g`!GfHmFwz=?BiS^r+6S=r?=UHjX;@}h9! zpuf#Xr+Ic6=boLO7gjp9pLF**9YSXZyGWT$_BQfRl*xntv56&~)3^0r;R3%gfk zu4>y)al5p~0O!eb`Ce=d(}UCwA>~z^0PzGY)^j>@x*@F#GhN4`!cv=>6@} zt+!w{DBE=FKtC2$z4(2J^SKM(&ua{iQ`{{Ce;lj4AtkpKi2IH`S-h(=cWH z&GhL;8=Y(KS!)aJUG{&i6Q8?wet(^P{y?b4p;lp$>x=rYx3Tb8VY=&r#XS`>?FC^v zXKg}aXfLa5doH29q@`vg#b>e0#}jbw9o~N)&s=*6YzuDRb|>-bzD1^|v9BL3)HN~v zi2H1cw-*V;4aR<}!2Ylo*XM6G`79yb*}OI|A%(FxAmw)2qfCg!{`ls7(VPlQyYkc( zy?xJyx9pJmY>t&DOv5Tne>U}E-wUz*+V2B&?>~3F3(vTvi0VN$*qi)>ZZY}c*J%lb z_tNcc9p+voy)(l8eVWo1K{$3AGLlA_)Y)mP@6#8ScVrP=6T5#vXWO#-RGqy?h1%&K z?0mR;GhO@W4Bup-->nCmz`o?8z|Kbr_2TvecIhc!>NA5lU*8+Ud3SHd%m2aZWfJ-h z6sG^P3#u2@vwyv)oSLBvtV7k8%EYZN`HS{l%kQ|I%GTJ{{VvL*xBWYvuL|t8rnqDq zABMViT{srX|8D%ZCykrFD)gU%|Mp0akixZs$EPb?E5!M9g=?)z=%&yZ+N`#B;zGj4y=)yadq7dO$l&h2mh_}UJ~-5YoNlkmO-irayN zBU_OH#1Z+8@n1syXC--f^`f3J)O!Z)JNo~9f1bUbj78&GUgbYOP|px6z3R0{ybQC_Px9%D&MVbcl!rJHkdB{@yX-uuoZ~pQ%h|S7 z`=x63{+}k%Mb6npV#X_t#e-~H@vXtW2{_LF){e(*TfLlk-LX8=?^w3!_O<&45Hapz z)+n+~J@-AND*x=hkZqL}w9_Rk8eX1|+R2Y`2$F3arG4`6B!c%6vozkBBOttgxdxpww%bf<|0k;eLywYJD zX%5|cq4FxaCWta26#HZ52$iggVLG#QpIx8Y!)|B)U#I(>EgApW)Ak*=Fvnwk$IZ;~ zJm0Zxt1*NZti1c94}A7TwjGB)*xEsDA#m*wfv$KzP&(`ob`?!o&EiW*D=IK>l==$ZHg@;~*!1@rGSFtg_5njp?M z2mNPzD4ORu0{b`iptkD4uiaLQ?scdSyYZlH)9RyC=kC09m6Kl@dR^|7ta^n%Db2O5K zjl`9dPW{YJKgY(O()Vx5Em)iA%Jom0zEbz7GqZW8vuV>2=*OD$+L0)&?r#Be;y8)B zlW|4QOSFJTsQ;5CrPWlllTOB@AkNp0BRH>iT$4UA{HUp;ItlzTBO}*i9v-n%sIagF z{FYSaW{%DIz`iX8U0@#|zx~mFOCIdsxZCrM7!o?&luhA&plmP_eewR$UOxmY<7oU> zGGP}!dncRy`*6{=J+a7I;c!ZkJK#41^{dw~@@mpiu{jI`vBT0v zds5ta0hb1IzIj0f&X!b%8dKeQNiY+frd1`Ssf6^%CW1Jh{Y7)$wZBED zFKmCZrIOOFb}gFVhSCfz8 z>C$|b$C*+ycz!Z5HeHXK{nNbG%mE3qBpcOvjT>5hYyY80;OJG}5inT&)JGp!5B}{n zQXM|7AJ0o^zTOMQ6VKEO<6rOB2;2IN|{I~I)V{;9sGL3|RWv4z{ zeY_ox{a#GfjeT5rpQ~^$$G*?ywu!*^ZYW*qGVMO4Xg<_l-nZ+)ykFR~pMc|w&)DtB z-Aii|a6I8R`+VuDs^3;&Zw4H1agN=6?z^3LEfhF*5jeJ-{JkW*w}1DT&BGu($i$up zpto_}2CHUi>_iOWe0EZSlO@@S>{feFq1cIMoYv{7+=HnYHkf0tIWG407X5h0>{d3x z-!S~eurMuE{8KuGjmme0(pxbsnR3fB*AzB&^M+$`q_}Gl=A@1xR%ySViP_(jv7h%> z#v3{QmIwGNq5ER5vtn2(@p_BIYd#;rvo(qFS@bLB#aV=1&gvfaSSWLR{+GQv-%T^` z?&T!uvftMSto5ZVujUA!!J2Rbbgy&1dq$pd0oQ%$T=x~cg40|5u5-R&rcY@WyKZqg z%d0(;rBJ^+T?XCwoNterem)#e{^{iXGhVtOD;moFn8W$5bG{#D?jZ(V_pEc>ELer> zW;@rZeLCL&GxzLt9a*&0=H<3I*L@8Y-#3urx3@u&3v z02SVD7!LP9?aTfM72aOxhUa{<%Zfvv&)msBebHqsZ#DECVI9~BHi4aCXLuXb)-T_m z_l4(tFUx#KD=@rt{3#tCD4V$lwuM=+Cmad2*E|X;eKCmh4Jz|(Duq`bT_;3tE&en% zehO7y>tQ4K8C3WiVN19Pc7dCrn{VeEQC4&Gf$7|ZKiTVdunOcI>fTy#H@qJ1fz9BL zP~k-*&i9?H2>w@inoG!!+$sF2UVee9m(#E^JOi(Rzd<)$&i9&39s|==v8{n=!WNfQ^~yNA~3vK_)|N%7Al{0p!S#R!W-drum!9S6`sag=UYhT z8%YXJ^ChRtw%XxO_7V-%o;y0%cY-%_+y&kVZ-w!&E1VCz!8Py>cm&=Fe}+9^=@9Gy zD*nZY^IamV6ne#f8M=9h+#C4QT;few9WI4>jma{ox_B3=?Jb8r;Crw){1DQOTPxsH z_z`>xega>FtKn;K4O{`&!j*76q>Wmi!QF5JJPJ3$zu@Ok>5f61?+97Sx6 zjpKU%{*N)#w9_1THK!>fQ+^|%;vNN6FSH9^{+;j6ST~|qc>d+4e9Jy3!Fupf=Q@Su zd?&{A>w)=r0)H3dWeN<3*r@5ppLDKQeL3HFvFh-DV7$-ZPxUn&s=t}xT&H-QZ?%}; zW(CHpaZK0Efof;ZL6yVv&h?7d`SyyjnZS5AI@fQ8Dv!^d>!SJJ`F@Idx7uzpr+QM| z%F*YTcw0i*7wI(lZ3S=OxHVM$#UReNP|P<{q6o*oT{Xd<(%%#+{R&t8o5H;XDqM{_ z3a>AukMh-{^DPpqvHTIPe?8L2nsB3`Y^}X>U4Q;}z9C}PYif@b&~-=TeyeQP|5+H$ z@gJ}@{1d953JJCQ$5Id*wfI)6Hw%`9%5Omk_MT$5cYWVO;gc6@4SKl`opgNy)eoESHgG+Z?Qehspz0|eZh{F=^)&)+fn#9-#AeMr5I-{v=1mAsvWjp6U`E=Zi-vG5$6 z3;%+z!t-ziv_dSe_8PhU;bpF9F?M*rg%`mnD)3Tx7v#ARZw9Oa?}OFgEObZ?GQ>quhBW&RYZC4O_xNus7tHIWKb=D;Ca%aqvwT4?l)O;cA!!^<9=> zQ1zOEINt#=zdumDVshp;8^EGWjh#@YUfI}4sCpR%AAmf+>U{*>4_}58Aa!d^gj?Z5 z@N4)m^u?E9+YxnS?8ra9$MIJi{WPffo`ECbbT|&qfQmOC=EJ#g4SWgG#;y4fo3UPo zicimrIp3%-->y*p8lfMHUhZ}Lg~26I?Q<#A`DIY{{VD7RH^5Z55k3a_)`OWpY=+A? zrhRy^9eoSJi_KVH!G^@~HEaUEfi2;7NS#?b;0VZb3*HytcaXeTKS1KN_CVsY4#HFL zFx2lekHC8HIJ_I4fP>&kct6Ci_aXQzl%1Z1AHv_^8i8(XbR84@<+xU>W!_EC+YP^6*bs2{yvMLSYnSPt>b#gNM6E=ma>t^s#*c{G=+~4$K zD^^SR7Hkbafo-6^*TKCalP)h|I^Ux(->Fc#E=8Av$aTP<($x`$!%i>)-VSetcR<-k z5BM~%II&DI>4 z1)qcC;Pa5QST8{0Q2xC$AhztC2VaD5!k6HO5S@1&oDa9cm*Ed^0o(`aqrE5KYw#@O z_r>1xa1pFP`F;eK!c|b; zd>g`iGeYUS1YIH`w+DYp=Z{c!yB{i@2cXh<5Ndor4DWzPU~hO7-VKk#Nsu!1J_>(= ziZ>5&zSCgd)2MhWqDw>Me!<^G@Gp1+{2OXML)n{twRCB_f2Z&9#-c9^li)@0A;|M@ z-pAo3@M%~XE{35{@tbjrha50H^ZPl)?>~-I#a|uHg+tZD6|g(J3dX}4@JVQLU>ij4I{YcW*TY)yMyPpJL#Y0tF;qUAK!w*I zalUC_y|4cXuL4vW7uphi0_J^{Afl&Dy3RRa0@Bx?zRsTtFDjWvq!c?ew84g#&G`J3C!kv(N zO5X2b4%ECY7b<iQ^X_HkpXO(&&g916uOhq`DqUlp>mtaD^NxLUk5|{JysM&@ z^WsnI|A$~p_%MutkHTl+WTm>%pHPa|P=Z>;z9k#%k+VsQNeqv*B;>VfY7REV9l+`erTqz4W10 zDfkC04Xa?tW#A34EbIWw!vU}&)I5rB4S2CRs}jVftWbzeSj_RwcvKZq2iE0q2doas zn{@>wO%`haZ<#X8lc2s^a1C_ZmGgdl^E=tVc6BfQ)K86ts_${mbtn1XdB45Yn)1?h zSE1X7$UTg|D)3RLe(5o&wmKO$hmS+`g;QWJI28_nPs3qw8kGG^hZErpsCo1(I1937 zG4ts;a1qDP!H?kc@DrF1zk+k2`jwZU(mW5IhOfXJn_DzPu6@(P8Q!K&~YSPj;Lm&5un95#Vh!f1FERKH&X z-Ue$zjsMrcAus~Q!E51gSQp+4uY*%zeW>yOdZ>Q>MyU4H5UM>jf}7z@a2sq4kHHo& zggmu`RbUiUpV6$m<&}lT`(2O zj?>{iFcW4&z6WpOi{gLh-SOtRPsK-b^z8%k9%8d!&bxw4d&z@2oFDC6&-&SYm%Dk^ zU)ML_d>VSWr|~CyoB?l#GojKk3r>J@;FIt<_&j_bY95deSHQXOOZX!E2EGJ$!v*jN zd=>r)UxQi)EQHnJ8_={DsQy6rwc5kCU^l4yTk3~(e``2=8!9jFLaoEzgHz!9@JaXq zTm(Oatg)>XPlV{`2Sk_zTC+0VrEM1lz*H@D6wcs$Cz2 zT8ABns-Kh43x9?a;O}rTJO>r;Zp3-#ws{w~>Rt1(t%zK;@^-z~gzY%K2KI&#Fag$v zxv&m=7}kfYVI%kxya{R^6A8;xp8RIdtnZq_D2|)KjxY+U{kMX8w!bx0J>Co-f^Fb5 zcnf?PwuQ@KJNQ0~hM&Rqki8G96Wj(nL*=soao#npJt8x%R7bZ4k-Hs#m%~AD6dVl4 z!y!=lii5K6c&K&rQ1~iLgzv&6_#GSu_rnx;5RQPFXQV-kc+;WAhYYB>VkWEs?}6;O zSvjyC%!Tz~9_$P6g}HDX91X`qaSGyax?K)3C@N!;2anM^I<3?l zgWxOBjmLQpvZe7QFrJ0@Q#^~H?C%ZO1ulgO?;R*Rd=F~;`Vh{9E1<^nl~D1heL3$l zHqXZ^9{={W7Jur8KZUj6I#?He1|#7H*c$R1Ju{AOhANlOp~Bt*N5QRdG~5OiZ+HlE zkZ0`mq528M8-czedb#iLr}29aR5|U1z2E^j0v?2FUx(o%@CbYw9)~O83HTX23BQFu z!$a^FsQ&acRDb#h)I8)*cr!c))qkFc@vw9Sdta(7{D9+&;97Vo+yX1XovN}kG=bHEG>N;K10KHsy{HZ?gfSM=vfY-vF@Osz_D(>D;{bwI2JL(Jb zU_baMyc@m*2f{btAow|qgKFRL@OL;AUP9c%pwxV2k(O_@B5+3`vEuvPJ}A= z7{qxmuX$gu%Fn;wn1nyI_eY`1aWbq4ABRoh6xbO)32%c>L4~WbbKaqA*8U2&BDyq0 zZXW&=?kiB^%mP>oz6v$(c@1h@TMX4tyam;+mq6{mFNG7}GWZ012dX{13*Gpg_uK}J zep_i^*TELBKI{x{fCJ%;Fc~(0npfNewT~PLwSUqWPJ>P1Yp@yAyrMZ= z30uI;uqFH!MnUy=ZQ!r49V|y#MZ>DFJ-iBbfZB)d1h0dgp~^X$!Pt41t9i$(%6UHe zX6WVaz@O&XL*UIY7HYm74+p{|_$Ew)`(Qde4KtwT6`3#$df??S8>$}~346d%Q1j(H zm;gsZmCL=*%rD?vjwisy@Bz34J`6vGkHL*_GSoczaj0^60v>=<;88dgo`=su&6l5p z-Qn|4`x-C6L2xcihA%=7dG9$W&o-?0q-2H%Fi!*`+f z)0e}G;rp;ITmc)vk6;hD5+=b_a3uT~YCq%?I2o>n+86m0vd3nvgX~RN>)|(W17y#~ z+6Z+&bTjM&KZl8M3w#0=K=uHvFQD#&ehHVsui!4Y6_%myw?Uq5vc87R;Ww}&+zto8 z9WWj4gqiSLI3DhTPr@JIY`7cpjE}Vk@@$XwBU}adLY~F3_Q7p%KjhgM>j1o{9Q_Uq zg@+(}2-ac9o`7`>vKL?-hphFj6OgsM^)qBmZk>X+!e1e4QtJ#H1%HFA$*e!%C-5)0 z9sUi^!1M4dWKry`#K02*uY;u^bAPKeYy-={Zm=wjgXQ38SRPJ>72p%_BFG%kst6Ck z%CJlY`Xk6(#0rD$U=`R2R)dV;*5#0~+qwcWR$EuXQSd6rSZdXPj8WFrkTJ-r3EzX) zz>i@BWUR32zyeqoego^lJ@7hs0A3I2i>(`ADF&b$A$_FP0A2y&M5k))9&y9sG5G4>@f*+MisGt8JVGuA90rKre|%2pwTNMlK8AxoP=p^&nqBtnsp z@_W9{z4tSp`S?iRzTe;Puitq*-t(M$KIfeKKJT;MbMHO30;~gT!@96JtOvWphLE;x zHHEX`J&?9zHG{9h7LYn@wSv?Mt1YBVt={mh8=1erk6;`;0psD%Z~zQpB0L5ThGSs{ z90$k1N8pDr3uZBpPlNN}EVu>Eh9AHe;BmMJb}7O*4x`};_!L|TUxlmSVz?S+!?o~j z_%{3;z5~C78{iqZ5n4rQmoOjP3{5{u-{S1aYxe3@KU#(A)Bu0EPY727?t<;%ZrBs< zf&Jl^a4`G|YR<9`X2JdNdH6M)2fu-uXCH*y;34=GJPh~2@8I|FDAaiMJv!{e|m)H*;rsO#NM@Gf{CYzjNW7O*#rhkf8g_#o80xF1{% zAA+C2D5!BZ21dYGsQku5)^vC~{Wf*nQypf)I&c_l4~IjI4Q&%-M4B9uN#)7e|r z>^Uoa7}mV&I)5o1$3cbdd3avfjpG7v7%T|YuiXe&!a`8#&P1GjUA_0KL-3o7$dx9X z@>v#Ef;Yo3SPp8Qe+!I-<)QL>D;y4QgCk)md=yrMPs2)Z1*{BZhbr(rSRMWZYeCh= z+EDs=5NCf=v+t?$%`o77{-r+Ql<$U6dNzigU=yfy&t~vN*c`qOTf#H26)cH;+rrkc z9UK5VK+StQLiMxvLg}G?(b;d*>_aL&>frD8i`@uUm*YM#9QK1<;X|-DjDoV$0Js?@ z!cSll+yzsh#)CAd>zLv25jX;BJzyk!8jgl9!*TE<$jxZ8t~nka;P?@E7*2qiZ$A!o z9WoK>`ePF0*(7T!)H*a{xaWQN4Ez<&fal;$*o5{p7iwPo0_5Jh^&%VsUxr8EB6t=q zf!q_cmO{0+Ww1MZ9cIAga58)YE`clHdbkGG&d)p?J`3N6FThRkHOQR8^C|oQYTwrn zp~|B@Iy(Don*BFb9&Pb&3gxyFPUW!^-VHy8&EZ#2=X!FORRxEHpCH&7n!VHwy1#=@R39zFmE!#?mO z_#m7QAA%pi7az{_v|EXVvm5!QqQA@}60WXQcVD+N9b2g8{#6>@LKN`u^Mv4%kI zby&k8YxLGgsOy5!a6B9XbzLwHvQ})3huW|85vcm4KF!&O($cu7`hyA?hSCZq| zQ1h5MPP`EcYwrVT_J>rw!uTa4a`OpS0xp6YCz$JcI>IIJakvz!e|jCRfy?2S@C{gy zdc&O9tjnx|5gfk>d%-nOdPgA6zKv!-N1Y#YdhbuZLpbUE9&80S!aneQxEyYRN@pW! zI{PM?{S=js*1t67%Y96^s_-+o0B(n`!5wfNWUg-R=Y0VWbG#eoCGH-mb)~Q1y>Kto zddohjer!L~dh*xsFL(gv<=h9M`m4jRH9P{l!tdY!coZhV@8L%H1LRpZ>loY(k3*gr zvra&@o0E`dtE|&d^Ej?0%=4tbK(&XnQ0?J2xF24Cmm!0`hkO549=H|eg+D{CJv^l` zbbfdbEC5@=8(=?pBb*NTZjXm|X{-vc81?fu$UR-FA{+&8hcjSh$h}Of3glj;bqD+v zR)gnYO?V^qwGONT!yxz2ta?!UUe<>y$7saa|4{GBU3LGYG2t{$wt+FQ9aLTI2&cn) z;SAUru7~%-FJL#g8+L~}&jrfL*_Y7lSE%~Z6#tX>%k?3g>U%Wo4r5^ojDwjl9*%+i z;T$*sE`v#M2OJ20gDJ2yX=cERFca2>Lt!g84EBYi;2by_Zh>Rq&u|Ms3~T|Pg_?&x2UFnlQ0qQ3;SM+tYTTO-c?QN>2`$g?F@Hk=1nK%Vum-h`Xr8n_RxgWth-;9qb9)H={s7z00m{o!`VGZoh7 zur=HTqu_4HGX&O`a5UTpSHiC$_ol4_kbBbB_pk)@<~XbkPr$q3ukbZ^7Ha+EH^{v& z>jLCnmvs@U{DZNrv-h9b6Hw(}0k6x5+!ey9{PP#1UBCjc6AXp};0hM-r4_1Wt!AkG}SQVzj25=E<2)Dw!;d$5u7DwlM z;BBxKoC@2**I+xi47P_K!cOoA>Nh`t z((^Nz0C&TO;a<1|?t@F=*HG#9LY)2Sti}AVbXoSZ)E49p67B|g2sVaCU^93Os$V_{ zWrx#nK0E_ohQC5rZ)e{*@BLC=z1hovu8(#GrGF79d$V_#d5^UiY{N18RhWLdI8?gP z5_|78@BMM^oFgH2$0*a}vF{orjd2Hp-;&nrQlNBxMi$D7&v zP4@BaM`{qR7U62bMz9v_2<)i|J>V~p?`n9? z!rrhNdF%)4!G~Z&$eu~Y9(&Q%*^|xe)h2tW+&)F*1`tm6NQAOS5|lks;gc{8PJ=_> zY?uL6?=siLq#;KOhtRDbX!RC{N?19KmU z{dqi_Ier@MhST7;a5_8!pMfgx9}#E&GrenK+JpMV1Bl!_!YP0Aq4Ku`s{OwPm7k?h z_5V%yJzN7%!nfcra2-^?w;t;H{%u$evM;uohi-t%_eR(Uz7M0|7N~OF2H%FCLY3!d zQ02J;syuf>mFMSB<@pt?OFs6)Mvy&xJomr@Q2A|77-x?!?{nc*@o$R1+%du_zdtHI zJPk*}GtdKnff@(?fa+KNgzMp7Q1$u>+zshe%{Y)39^)_{EX6tU!<%6+jD_q;Wy+I% zJ3Jna`RbAB=SxDZca(xJ!P0OcECbiUvhZ_Q9%}A)E7bZz1(=Wg-VRltD?!iO}zpzNvZG-ppOtC0TZx4f`2 zBG-s;`C(&tBW&Wt%jSP)-z&2pmg1GfZy_Srk#H)9d!fpqCsaT309*ijLD|0#Tn8V7 zKfu251Z2M)PXp}HAF3S%J#pCpa0# z!zobfBvYaET8oa(zC>ofBBkE||7G~g%^;k{2Of1Y&zH@G;T*pJ2f`QOB*O?{pZ zKjwG=R3G> zNx+kbiuomsgnOaZXZAr|Pwa=IA=`1A^_c^3HpkyU-qEnWh1u{R+yD>3o$xR`2#>%s z@H@ye|JG3$lFv-FJUnx69pktTWC-`PfImU)C&hN3-g@Qi9~7`1ohF>x5!>ULcEq-K z=DC6h3bkK#&38jy`sJ0kSMHeq@{Wqd-X3~eDtV@Yg#YL28KTS;?lEY7L>i0Nou6=Uob8?zIbp_u|0S1E0r>1%M0ji{LiF( zHTK=fTOT!C!SRKG{c@6Sk? zMLJBJLV`}e)i$!pgfktF4FB!%yZSF{i49EndFL*?cjMmjU7w$|V&(V6^FK;oMF$iT zG`V2GGin!>%&{WPMtFTuWfoI>x(D< zTvhtFa=YgCZ$-YAP+vlVO5Jq-fx4S6-q4`jFJ-bl&$ObiH{q|m68BZ!b3F=OneJ)x z+J_G}Hfz*`uht{_*aK%9CN^p~spF&}Po8AVr2`jKPwjdv*v++gH`#89ay@wbjql$ z-<{jE=Sk*N#{a%M8oYF<**Ew0>$oak<2UvVWX@px->p>su@~O``A}HIg?;%uRhrD$ zYy1m8m;H91b@kRiF!sKkJtjZFC=rPI&o4bIpc-u@~Am znq9idp~NNadOzQJ8I#$UYbyNnWxw7S`u(=@rFYf0X3lAF4}G0UXIId!mmUg!tV78! zKHgn({#~nS%f^3U|CnRNHuTPz(yLqP$d1u;azWT4BxrNl1$QPL9NMF0i*k!z+kJ5g z{-(Yau=01k<;Ap5#x&@=uSN4>tGJdl{#`aCBxF5zY*4<1QMIQ>FRf(e5~Q>D^i$u5 zCBCaD~?}aUyiO*HP>-pms<}*;y_u)V7#PWAf6k3?|@u2Se zmkqwTt7+@_-;~|=c+uo7^~O$qqVme!Ez($vq@9KYom~9w!M)q_-8Hq#s0yF{82>W& zQjP!2VN2q#tgrm)jn98~BBNj0VfyJ33jg!?pvvp}e{pw>=aLTJx#o!l^fB}gAwl0< zo_xn|_uT*0`Dzh>9QTa z>$GduQsz9yzsQCn$9`Hna`LN@n`-CHEX+beEe7b2ph-{m@YFq0XZih0-!AsqnQ?VE zukoKeC*_fE8r2>-E4#&~Njv9#&KO|)I~bUN~-||0T-@6G3dg7B?=N$h1!)oG51%L6JUGq)<#Zx+6+%l6j z852Hu_T%SoyQ%N}-yGRJ@q?~0_=T2M`e|<#D%EiFE!pL|)@{DF*p(FX>_7f>SB>qx zzskkJ6ApIT({92$)c?LF{3l}y3@9*v=1;w6Wlwl5dwVa&Qsdw1f%&JG-Ijk>=iROA zcbIXy0rkZAAE9`NcaPJKuOsJaZh=pZpfnBzS-I z9mts{J7|O-oxksxsnAoo~=}%l(_42kRUk-~M)V1Hr zo0hJjT{H0r2^vwP{M~ncb7sbh!moXP`BcSN`jcw%-!pEHr_|=R&aL>h@#^OBLobS<`UsTP1E8WNmo&ey+t#I!E5#bol1xhq{FmLk#;DA-(1l>9>A%vl9F0XOeONS$!^9z5qUZ^JbmA~p!}V>>N7_uD z+<)_)!+##wT08drt;~&T$UlDXD`gAq>GE5fYL6e?wz2~CXP@!E@z*ckX!GZYqrXn- zRlol8leaU6HSM?Bi7$4nF4%5zz4A{FI(P8G80KkaJpJ)P;Xzd@e0-$Xg|esSFaLlv zj+_4B`4Xic%>RAf($P;w);+cH^hmCu%{bWM)zif;UuZq8RlZwJB)#wn>DM>?fK~Kj zrH>k{VH#y@oLqFy2ETfCe3)>9we{qE7< z=?{(nt%V!jFyry5Yremu(}zP&^nR5&jqyL#eE8zVuk5b(LBx#vCQN($FUGrDl>YQ% z-Cl3@L*h;2Lo?S7-cYtW{&L3RVqtd_!U+9Mee1LDY^_4u->aFq z=-%$F`geGcdmbkI`6o{O-0i0_D@K2Ow&&g7-Tyt;cE%3%|Z&MjOyN`youh^+*fRnhJ5{9hrOS^{~>LtsHy)iE%@;0$cmN27sm|l()Q2eJGgc* z=~QU?-cv{Wo(_%uwBGYQpU!-Uxv}vdb1AjLwtR7e>uh_l_XABIeu89_lK8@|23 z#s^wH9JS?>r=IzS^R6!d)ByTN{?*~!gl33 zHtW)X7{;BwX1rUJr`hqQgTLstI;wx))(zfzgKN4_g-_dmN90dcddz+BVui?8w~uSf zwTAJ3{E_q%h1)&cX7kb1WAPvNY0iAl_}54pRQSh12b-;YEHdcXq%ke%KdHMRL7$EM zu>a4VHh(3&|K~T&I&~$TGRFUwx{G6*7Q8v^nYcd5%?HnRy`YU#ez$@?3Vel3MBRAY0!wvmtSC|l^cX`ZczPIE0}!tYLu zEl|JGr=t$uduea`VY9k0U%Fl4_tY#~dBt~$c^cMEUX`@D9{oUbaQxP5oLSLDtoX%#b>6orfvKO3}`-V?0a{;T=9c5Z%%2YYrezA zzv+%iQ)V~1ZA$l2Bj!Ea^{!;rK&mMHr+=Q&P>w+QfbP! zhyNTnc*Np;3x1jzU(CFNPxw|ZJn+{akG%h0--?q5T|S+*p0z-ePN}c<&70n-_=kIz zR@&P2Vrk|+ZyEm^;f_X>V?qlu9_y<3hF|}LU^P`^2SM!ZARUUhe zwKCHm{xSOZ-+DbiaY3O~e>VN;Vea2syG^+tn{eQZL04Kla%#jU=Z4Q}_aoOGRi*!( zp^uDt^rMV6&(DsY)3JVO?7z$SuX^&6J0^s_we{CNk*}AYyKElU^!d4-W}bThxqyT+ zhiZ)^BQueW$d5?*m0TktnaEsZ3vv=EwTiMu(vXG7TI5sY98zjE^IN1BG6I>2tVIqW z`QBtb7>P%+kav)CNEmaGWMl@i6A69`eUQ;eHgW(7Ud!4Q5|2zq-a#%P<=3GLl8DSe zHX;X*P|717S%{oOO1(`uBpUG`tC1g(Qt#l8BqKAC-AM4eNN?=AVLK!e|72tmvJlyV97XcIiVgX_ z7MuWkiO4c!HOD)Vz5IU$hD4KZBofI-A9Xp2H2Gia50hbg+WkTp#%~+p0puJK5`+Fo zGSZ9RCct^fYGf~R0SS)9c1SqV9Z5z;BQue;$Zq5eV#N^-2}gP%S;$AoA><5FI39hF zzQ_n<84`(p@4%hNV$S~~v=T@MX@GP`5|K&BLSzfF8##*P>rZ_~LKagFFdXTQq#;?z zVq_z70J(s)AAnxSWMm%Flz5Yn)%?E``4I_D&$DmLa0aA0c~@3rJbk2^#QQE!Z8lhVjS< zWG1p0*@)~!E+cz6$NzW#-va;N0{cE7!%#6P6k}}&5jqTgHet39zRM&+59a7Sg`^Lp2rKk4INRR6qpAb8AfPGv$BQ8BD zEwgrp{W1AEsj&mO=Vdi5Zbj3EtrDE2NY@}Q?@NkHPt8c}pBY-MYxU4Bd@U{|X%rug z2yMj&+LDqJ(s}2%n9;3rkTm2zFmeMj8W~=S{$+89#ZT_W`+WO}j|+^@R|WV^Q54_X zOeY6P_P4r;!ae+JeJ?t+rB0;pJcPnKLs-AzI~wZGeZPgFd$Dr>Qa5Fkbhm@Gi^rR6oK~j9eU_Sail3>@(zx$n# zJSP8k8j2?yxZiAB>zuzM{x>7x$ZU#sW3KZ%#gLww5*431G&b4(#z|SiUhP6#$@VvL zcQhF4n?3r5MkxQcFvs!cn18JoI8T?Lp}F+Y`;u}c5!GkavI4RPH|2BeVe6Bb>S|-# zf}jDMT^FQ-^vOiJ1ob!PY;5Vv5{#M7Iot8S%Ah4Og8CR{pVKrBKIp5)5EYlshn<;+ zT<;q%vV8>U+-Pi11x^?olR`YVOhSx5-yhB#nn5t*Uk&l%{2U69A6px~^_W8aC*1Y&;@ZEdsbhBG5zU(qyIgY8Q(qCu z?@GH%kolyOH*aInN#7tJtj}oiyWM{5x}*13<*Fh@kc!A7g!e2n^)*-B(WipU2Z9K5 z?Y=Abx9VKq5H2?eCQvQkf^SqT?zNT);#%cK5 z{nhZKcm@uI9pUv$Oh_7#n8~5Hj!ZP=k@LMx^*74XUzALjpmbAbIy?1#Qm|t3d>wKt zatL{X_&Z+@P-pDH*U7hO&zUjlln`-LhopZ1=e2=swqw=LDdOoTc(I7Sl>obn<1 z=0kmQLuY=OTu8s#eX)j^P~@Bjm=!*CE;%V9lkbBjk+}5Z*8nbO9vRH9drVtq{7D~a z?Bt#=Utv3HTTl#XgPiAlVfOi=oC&QtV@!PfzdE1tEG2Cn($W)#*>))F^&4ykCto}8 z9-eVE_^bIs732bXd9Jd9w6g6WdtdEx?4UN{YX|A2_F?-aCd81CuMWI}W}NDfs*|fj zb^zPNCnW!ew#l(Wj%}{C1Mg=USDC+Rcef#`4~HBb>_OTTk5n)^{HJ#C%`@)-8FxE> zbw2fbI$y|2|N3W6_g|kcO@)h#K=f}DMCBZD)%jBRXyd=j-?hrw{cbw%ZWyOAQ~x$a zq(fFf9ilR0lI*hnPwjjyJ>0f9S`84VIw?KsBhus0ReEF$k4gJq*djGEk!xF(ziSI! zzsWU3q{E%aRQk=(RsQAA1zrE7^bDsDQd_>-<+Qy}e!N6p)EBA`k}YIE+b^f>xq9&Y zwQ*tmRXwbU=sA_>Kzbykr0J^i+I@8(J#xkv-1s*bGC#pmi= zW1TY_v)3Z*dCEW2HA zdHr1*x|Xd}U)?fW?VP)obM8A}9nS3ucy4!Ow-;oFW+Z6nxNg0X9-)NuFEd{~CQ~=% zxLspx&=blA8~VmmO_?Z*t!GeKqvx66EGx?YdF% z!?s>lZGO{nAzm0@dTWlAFSl+LrvA&RA5huK&a!Wq9o}gZ?iCJoE9W%-m0jC9^Pw!~ z{J!P;EPiPL&p$jpCM_)?UBw&2avKB2_4)+2Y@Z>`ED{*n0m_ZM0R>4m>t z7t&%fGBOj>Q-=;n#Lvy^^Cqu3^L&;6Pfq!}^Jv%p6K*0Rj$5&2JXix?ko|d~1T(nh z@8mr$CRt0KO#k(1)g;2o{?b2yGwYnXwoyLj7@cBbS@5CcqSDfnhMBc0H$Njy{xfn; zKpb}rdCA08l$<>JU*jlj7;$`Ut9*y9wd;Lb()Vr8!76Cn&xq>%kI2iMC&CV&JKssH zLnp;0vBKtD_~gvZs}V1N^RDqqr};+zxO9c{)nTrqgUVAnbVG~|yu@>r?XS`yJ%KeF zWB>nD2ic{oeGa|%Wpr}KVVc8A_@13u|upWSLIoA&@MrlseBdJ_{mm_O&ELbe3O;8_&jWsiB50u+vkqXZoL?4 z;-e9iUnsQw&@RQ!m-0G-m!ZgpH?Qt|Y@rsKaC+}Vb0NLg^cv^iXort-@~TO@$>_h% zX94BYn97?^#}=_VzjP0WzIm6Qt_f@#r6djJf7xR)w#Y*7103gn+s>EltNzo@dx}X< zb;8#^3KQz}8*Iv4wyDUAVX}?eFVu7T9E0d!l5 zZq|Etd2+Xc0r%hOb~Co;{)$P#)om4N>qSXl-74AVx~e=Qb+L?#K-}_tllYN2x+O=Y z4^2++QBQ5-@9gH5XOyvJ|4x zoD^)ky)E6!i%%AfzdP;(J?EDR2{qt^rK z?`tC)IbXJOKC`axH}C$tdhM1`pmVx;91+S%aK7h!pL3qcbWzipJq2 zCyd&Xj-T;4Rv334+4pu%hHHTYBU*FYOrFv<+5Nb4rQ_S|jm??f1af8`A)ANttN*o< zZ#_QhocBHQBU|d-?Jb;lqjTPb6sGYxmq!0}Is4kvSC0moyy1rBaq1eB9$CC-k4jNS zkDMlK^k{EK@&D`1dnCUEs&8TV`|6=`{SiAXtHj)v-}c()qz|&^nIE7>&fLMSn|8XX z$(qkAA8s0lNJCxt`K@-{aLd5|`pY+to)_;yoOvJQ)F+uE6LH&w!mIv7JL$UhsjCym z?W^7X=~Ks^(@8_uB~y@($VbSBKK67cRQ&eev=fzs@BB)7Hn-2?9Yb8b5_Qu6=d0Hz z=#}lOmw86W9^3z|Ub4INilW__IgCBiFg84R4c*FWa*f-Fppv=9|CE0sKk~6zW-5~nc_bH}b;)iDNcBjQ`uJAHLy9N{`7nFk3o750Bq-nkRKR(Tir z)Y!71ua(BPpwfM?Etml;Fc`ORhBFu=XR7|3P6zWHl?iC&>xEPBU6Mddfyv6lj0 z?Yw7SSN-wYMCB03CbH$1ALM&21w)wcv!?i3B_R zhJ1v4Zs!Bb@la>3>D_hPa8cF@l;##Y4ay>a@ecO?l{Ri?Qq_9=h|YDE|zd- zC`(AlORE)GbKiBIC5F4vpM=7G)Bv<$+jPDa82&RZwb z__3wwJKRL<^?S9uqDIfup_yqz9sAmI1*ff={=>EJNk`B5iigZajD2_e=&5lmCf#e` zf7@oRWnZ_AFkPiy*e64cYueb=eX(wu;yy&A`zA!X&)egpyG$IDoJ)6=aRBGFZ8Sgn zw|D8NKG45z$Ug#qrU~e7pNvDJyXv5S{cv@kaHm4iN9D8YM`T+R^;~dUfB(FM)Lb2>(F3x5nSUZ&E)d8~N()j!$+SO2XcDAMe&F#ZjH)k`+5h zaeGaD8D-=luM>FI`jVYD6E}jes+?Vd1{zz*w%?I|_j!G#7m45Z#xFi5GsaGDW*B1| z>8YJm*=KBJ((`cK0_hSo!W?ILkL_o+bj_u>qlvqi-`??wt7AKEx`{i}dpy7#Px2ne zn&Wxi;~3MH)b1tjJ^kQ%1i%F&T3;%N3=g4R?l<~65Bj+`d(GWG@Ayp6K+cq}?)NE8 z`&n%7{XXv%w{&plE7^_?Z3wSx^$4VS39g-N9pV#mJ*{Wgt#HBwaNcuA@S}Zi^y+h~ zysGiLZ=F%w2*uC8KKkkzU7rBBml3t$7m;I>xi-6_9r!&}czr#kM+DLR^=OZut$Rl5 zP+ctHT>XxlI_5PadNe9t$v(gL-i>=tcXb2B!+ee2v4Pr5k zxDsK-v*;Ci(Bvb^em5a0C1wEgNhf9Lvo<(@Hrxg*jAnaA(;`!V*MEc>W!7tP7e z+G#T{3MPm8l8FLjsK;`Os`+O9>+6&?cuf3T}Zlz_`Q#9YZJZ~$F|-%>8f2^D~-#f z@j1U|*kxnVNaUFBWve}Vb<6Vl<>*!|K)PyMQ|x+U`YRm|a_W@Yn)%&1_P=Io+K2>k ze<5mnny;QO#kGeW-fnwozE9=beX#NzzLf4d&X^1MX&UG5uCI*;m|{}>Q~pYG=P zoX6A|x4rk(4Q^ah+PT`QC|ex*-n1dx7P*_dnX6ASv99`KY~fya4g&UOPr|g(;V{`ndMYdm7j-TltWV0-O3uOP9`1{+xJAT)*{{UmR zocGq;>wnw+qmq+iUF+Lr7D<}EanzapU71N|)r~-7Nd*4>Wf_g1e_5*SM_|47l%u}O zIQa+H=5~Fs^UXVKgA+`fQ@yk2ul9Ri>Oa(0w%GRcUW>ZpR0G{;!SzGbR@4SAP(Q-# zvJFr_a*z9}uK}F5&B$i{WhT4mJpOYR)$wZh`DRQvOsg?BDvQCnQAabx~uFQ0Sj;g^$4BIft8!sn4>XZ#!|H4}3YqwzGMy z%3FH24c)#kxH*w=-yyQ0>Vj+-cFM;d6E!b?1IR_#FFQd#`r#{2=F1x%5QR(JkyZyIg1Hm)L~ zHJj)vNf18$F^bMsu$(Qfi;5-s7z`1#b)SOG&RbhMK@7uS@Pjx%5Ni!~SC=U{89Yi+CMCc>U7@NlbH<~cIN2zn< zEgnrdoWnLN_-)t)yX`4GwRLrUtVxdYkkjyp`N|Z-loVM0@>4 z8b6hbZ(SJOjsUouuvHZp1Ph~Q^hLWac*}<0R4%er0Ou_i<Ef?8) z9)6C!^p2ahsWSPDhW=#}hM#}`=9YtR*~rG1v2T0wxPdr-Udpj?1joKM&TaP`o95U# z$EKc`#_DFe@Cy9_dT14A#k zJH7UQe6Ki9h{`1AUa@@~YwCeJk2~q;@O2Ptlbm1QO9|nh$Ukiz>}RxcDPrn_6O9&a=f`%v8P2n`Ig zZ9TktyYJnF+)H5G{q%i$tU%uttwEpQVby^w4;diOO(RY5z$ZmcDAkDw8b! zxBK?1*Y4GBXYzYzQ@@<22RT;0=0T@iylZ-ky?(j(!;oF=HDfc0Gn|t3h@qQA-J%h;RPa^}d`OboWWAnJww2`bfaht%{U3EWzGkt*8PdWvgv?{l3 z(ZTex*XSE_wWm-L^tHLtcgw=xzOtE{pYW~ErZs z+1>2?^rtPT9(IRuluyVFe^)-qN%kw_dQm%rcLAf~@X`8UqEb^^G5^>}`~Gc3_hRma zQuU}~_Fi3S{NImrYM(iiFvqI@BVbSCZ>OyC@!%I_{Bj-um;WUETOhvAO3ObBzZerf z=OJgM9f809bxA0G{&nJ7?NGMzuP3T^VffqgrmNRzRFCSo<4bn};yj4j#lwi+W$+X- zc6Z*yzy8>vJVp@LUl;j@;_sgyUmY&=AOP+Mr$0Ol^^Qykx2KtpCJpx44?txRzw;DjYi{qUSMwzijJe>P9V& zGZFXQ2e(Y^zAL^zKbiL29@_5+nHL!b#~c5=#Sf8gJn2Sq{7ey}yGd8&XQz>tn!*3F zm&Da&3vmwPf5|6~>Vm&6O4nZ(%_01CQQGQHBb~gt{pk|F<2|;0z3*GQV_LokNECM; z1y%;?+mJtn@DE$B@^9e&C@n@yasQ}qZOpcAr1OvaR+WSD>A%()ji3Kor@|)U|26vB zZ9iw;;$Lr7p98fy+0V5_1DzOm&auU5c#^cE?K}jwMM_Kt!`yYpca1YGN?dJ=XyRUL z%y;wWZ;LeI1hR$NnC)*XrT8BF{OuElUm*L0HT@$+4)(7bY^uOB;(4AVe{pX%91um$2jmh8kY&{(n;fB!Oy#4k`8^}^r3 zj5Kc09sTXN;nwjiE!yK&P*&C9TzHWDM%%UyTxQOC+&@`6NFz;+%c}3E%KX1AKiNK; z^9LH=Rfd7eWF!88%0y-8TPA8t(fB=xt<2gn|Lc4aFi<(Q$3IXxMdEMw^?}ECcb?dw zF9C6yk86CF?kyPKLV2NwwivjaymyDMKklo}M3CmS+LH1X%J2SpP=D!O<9_PsScq`> z5$)Hf9lO*1PRB%+>CAjqo8v|eNFJG%sBuzt3j}iBYxQ7$y_UYd{dl4tw7``{@*$;= zn>fgF^x~0(H1-Kkj$%WuK>HRDJdn$!$D|Uf2f0&HB<-zGhI1{Zl-zv+q?^0edpUq^ zHxoYF(JhgY)qct3>i0APDTSZWOMQ~;!?%3VD<>7jadk?gT?W!A>mh~8ZLeF7w5ZO!F9{b)hQ)MCnptKr?)AXvUzgrR8z|6gMx)oHaq|2i!_)vt01itTbIs&*gBZ@%+Q-}2nz=y^L~v_7S6 zA8td>G+u7Is-2pobN1q`M%Vz(=&JLE@uTl~<){3O#2~)wX>Q$$jJ8v&0;Ef*1YPD` zQx|*x8@0Xvl`d}ig~oDnTp7j}%xV>bx2sM$x|s6I9GRBTpq|;gN@4$IeDRiF7U2Sw z-%R{%yXbC-vmq9KDs$Pl%+BT1u}Jg9slId*hn2PWIEJ@l;y%9HBraZ_Kl z7fyn?F40`A^)05}S(UK0j$@o-t*hvGq2KRsImhlg?2z(yd>#AN^Y(F^5O;)1T@ro+ zt8$Jrc6j$$Yp>~@t#VD7%FY3tw@hX0KxH}t|7(@0hu(z%*PONKoc+&ar!u$Nc5v9o(W?Bv$_EL|Yt{=hz!;CE2<{!j(GKk(j1 z%c-KqMykI7oOiv$!;kKI$2|TIWUs~eU&~&~|6t0LXIRa*AviSl3WdIPS^k0g9@$p) zewG>ceEVGA=eMt()5y-%h<7bJKOAb?*}W&~&Qm|qWE!V6*19kSR#Sbm!{@4RW)cxK zjCG{cbj49W@{tDqtDV=L+5GO>^AP_BvgeQZ2ePN~r1vWV)=pn!6twM~ zhE9Rrvxvq&P&ufb`_@~xkFfiVq`~nCBTPGW?WXTo$wgwXTVQ*~Zk|e4*FW2C_Ks?b z^M9lNl|AN>_O)!KI(sc!CGuM!o5+U#Hi^gYS~k(QyyUn=WyVF#sZE=#axI&rrSoFt zfT7eu*+lg|fb;fW5&Rga{w>=TCfAQTP|9H)^a-i%TNjv`^L$9M9xZZoi%_JiozcyGx1elI zlLl>q#X{U=9wxwS=$XHGko~`&GnMJEVgBN`JAQ4twQ3RBrgc=S_AR>VH@*KI>tOUKoD9bxrkWF6G}8o44b)$7~%vOCy?tZrUQb_=}x-fhB!r8DlR`=LtaEMN z8q5vhrc86KzlQPqwXUOOmvDafUqg$)FVGsA){A}1L+w8jKf63sMtUX39{co+Y@og* z+8bW`LFDdB68Wu%ndipwsD*A9IrH;eadLjs`A6{E1Kzo@y-%dZArJn6`Z?u!62JMb z_b8pcSUJ#~Nn?$F|EBb_@ekC;DE%ycYk_e8ou@PGJdA+Xx;9XsoV#uYetuhN&m^pq zwvwbC`nHL|=6IerjQyVTV(;-t(?4$H_*#8xJnbQiGK^mz~~p z<4r!*rYaM6GIBq^Rju##Iri8Ril5r3+KNQsb-pcx59hbx4eanLkF^~8+PxmfzH!bF zN6VZ28|Iv2632I%c59zQZSStb{tXuL-F_T6P15=?$;}g065jp8xSo`=zB3CJorKN z&aJ<*&zbvyq<=ckvFj^~`1U8lOy3yFd3@`tbkdl@Z4)bm8mtvd2x=`4(Wnbk`A1>8^)L_ide)@0xDkE~)1?+TJ!IwB*4HZxA$N4TFd-qe1 zgYETD-TRcIx_EToW*C&;D5yA`JLkMh%`=hanqTpK&pV57`3OH7mVk4dc&fk7xA4q3 zn#SCPDUaE25LmAlwe?*A%W}LDYP*(IQ0IRWwuEb-@}cycZ`PUpxc$@njBskNpF`Q? z3)l$mg00~m*cpBam0mBz`DUE?mYmWfYgQ*j?gzqYjpG>9dfsuUbbo^N;7O==9)5;H z;3@blJPnn;^5A^W&FrPD^kpa4?tc=l2*-cHn;;(n@>B#t(2ehWXN~@Za`KB`jBu() zA+Q820acDAo%kO9cfN^c?t3e~&ZjY1t~TMS!7$hm-U-{l`cQ470gQqTVIsU6PJ-d^ z1=tAE7OckbP1po(fX(3^7y*@!EX4UnnWbatQ4CH%2Ml+1x|3sXkyld%i&m`)T>P0eCeMo_-SA*f*knjF@I>2<;4`xF8 z0Bb0G6b^&a;Bfc?90_HsQE)RH4R^q?a5o$WrI+fv^Np{7^?d^2RR1PI)%QtIdOhJ2 z-}%;-CI1l0BOi3z%Rrh_evX+InEIX!Lpe@?I)8h_`F57MU#9rJ{S8w_kLn%u-<0c6 zScBtXP`VF?D%TNE>4hQAH?PchRg|7@zo-6D{mnR71&(*(DJ|zaRmKkf`FNUeHxgzl zEDN)o_}JWgUgsNArf>H@FMW(D-{;_M#DCt2r}H}BiZW{;{^wP{ta>pQs-9D}#ttv~ z#CN{^WJM?~Kl?8robpTiF#RBP+0%q$jf-yiJKt?G^HBfzOP%#pjjwm|JAIYc-p;p;>@n7_ zoVO89cKZyfAK321i{yXj`$X1#{J*zw?)gJ)!iC^p2dW*`g;gPXntE3cw&0jNnDM>= zbnBh-{UCFVsC0ev5kWZVLtJBrmQFnU-S7UGwbDa09<>+JH4dAYc=Q3DQut6`OucOc z)eh*}yythm;bYofBUuq&0nA9gj2c^5Z#PjTsu17sxkQprqTK4L-j`S)cdU=QGbkUNPks^{~AHHzsB$`*c7V&xCg2}G=p)l6{K&l+Q3<` zJzNDl!f)Wc@O#(^UWWHUw!OEyz}B!U)cd5}U@Ytohrk}t1AD?}U@!P8>;tt=^@C9P z8G$(8j4}JnDnC>yD;bgd^+vm0pM_;PJ_l7#e}|NfbpbYmeAm&F0RMs>cm+;@c?ww` z`VcEGq>Wqo;2M}8>ik)V^X(S%O&6VC{qO`tt`vHz97;pg%bQ>*ECcJovQX#08FqoU zz=5zl90PBKI!6WgGQ17y{Gsq;SP|}nx5FP{B`CdAUnADp^V(kgFTH&0>m7uXUe%!N zQXN)-HDNgt0KKB;$I4X zxs!w|3V(*G->0DJ_b*WGiZqO#=U^L-&%=25JIsU^;4pXzz6$?nd0<7D57vbRU~^ayYAuQNEKgr}Bh+&Mg(l z@xz?>-JSS7ocKL`;yd3F2^hbR6FytkZqYn^z}q~UybL33ksKBeCsk$cC9$3Fh1{%?f$ z;r~92f}3Cr+zi!!ZGkE912_bJ2-P2%adxBK|7O$vWRIKhcgI=Us>#={NEul_LFK1C;(SBFYN7whPXX8zkvl~=wQu?yPbGK;s_oPF znEAt5sIb35r8fz2zKvjEYm=Vp#b`wCBH>gnm!RzP7rX~vfvGTW9?P>B-T)a}tfG*< z&nf}iz|!zucr%;;Z-t9t1xTH+ZiDM!D3m_Y{O^1t!F)SG`KyjU{f%*z2`7E3KI0uHqd9X2D4x7Neuo+Z&Hi!Aq zB?1+WSyDgp{ zVGpS1J9 zN`EX=`W~qCCqSkD7*zU?LpOcrI|kN9{QdRky*V?_n*uejn+C_gXW)4F9Gn4XL+0ex z9QZcm8D($!&UXg_>OY@w(tiPz{tKb>e+5eaMNs-Lh0_0ZDE*g1SAXZ*0Ri=2O}J8o ze-ldobx``h4W<8kQ2K9z(tk6Q{#&4%zO&DNK>a@^ob>+$O8-xx^#2S>{~b{J?}E~Q zHEE{ z8OlDtK-uRklzq-a+2<0Jeg1&5&t>T9@9c|jjl|!-{xE2o>qqveF#Ts9cpu^N!uw%9 zm;&=d^@9arCS)%Wll~$8clNh8``#=4oAKL?$gz)zy^ac7aa;z*!kb|d423)4?eHsD z6&``rp!N``4qLz)FcQ{=Ltq`40onW2^B4?+&%*j}A#4EE?>2;tDc0RE7~R4leVf$? zs{d#VX^U19_$X`!7sCkn8f*b&$85yeyWZ?+uY8uoZy_Srj&M5e2=9TNU~hOIjE0?| z@*4@q!TaIkuq&JjyTeyt54a5Wgeze$xC8cvU&21{0DK5CN4KJ2X&4QeOIxw-@#=n}EoTAe_eGk+3Wr1@C~Pq3Zj1xE4MJ55kG?Fnk(nUNH@} zgfrkMI1|1IXG4uM^Wbr~5T1aqKg@k+_SuwP1@P0HL2fDGbUm^hs$IVce}Ze^ zX}A{t0@p!rdb{oU*L?i_(|eC_%I5}nE8GN?&kv#M!AEc|{203FIeVv@J=Oiw+fF#8 zw*xA@FQC%<8mj)V$C_so{05rz$h)(jx!LDj=~dM_3lpM_RW)`Vgx;q|dM_K-#2L5l)A< z!&$HrdNA9A?LDcL+uM+2g;tZjkAZinNP@`M6)U*at#TWAKncM z!f+>E1phnxep|ZkS3HGlfXKBVoaTKkq56|n@OIb^M!@z^=TAfQaD`0wvW`io5R6CU z?jxM)2kU#L|Gghp;J6#C1G~e9um=o>ePAE>5LA1PhSOjSd=bV%oj05lI{RyzeYbU9 z<(cbh;|36}3jZZRwVPC^`jQ4U4i14Dhti=34uwy^VQ>K)4po0g!|iYk+y}?PAD{w&FMDcdo;XTSd4^{I?Ej9d$iy2j7OW z|1p>Vc@Ec<^Kt0m_$N3Oo`5R%lThV;3hshupxW=RP-T4g_U7NSRLLDYr-n9H>?H|A-{PtU@bTl)`qGt zlMrYBXR|M~%3JkgG$L1za5}CJH4Zd}O<)t)3bJpqna{O_D&O{S0qg)Zu6BeUziE>P_)5}JO8^E-Pmn?0GOkLC&SP_75zG>-Iym0%QX4x^#!VGK-wu~2i6 z1o#;251)Yp;CzTpOh1qe-{m+3?tp{g=P(VbKNtn8QNKpRK5#4?3dcds2gbuE;3M!U zI04Ruk3r27Cc@=#63m8A!A)>7+ybYv23w#c0J~;S$K4*IEi& z!DWy+qxCwBhsz;zH|q_^T+GUb%&n{y@KLx5E`o2u)o>l$1J}dD@Ll*P+yFzU&l_P? z_&#g^H^C-wGi(jF!bJEnr0=ypf%K);XK)4F0k^=Na6kMU(g#^zz|(LSqz|$7K-!qK z7t*$@eNgo-5^?r+w)(03v5m&n)`;A;->g1jz;GA^8^OV_37ig_!Wr-$D0`^ibM`y7zT*fYK)o-JJc3&HlyG zrzZaK_{;Snob-7RhQf!S^ooXkU>sDP>JN4P0g!v|Rw7&v2SW9`gWw-98Cs-07;3(p z3N_#1Id@N0m=2r63^)L0!X!8hJ_3is*Wd`a3_c9^!_n{v91C?_G!CkN8xOVa_6RHu zABBzJ1lR&T1wVjOA!{U77G%xCng*}H>98RE#q&_#W0?gT!rAa1I0weSxsYp2Yd+-K z%~}Y#X0u*_@4!WnYb9$jl-;8dXK!M&XR++A`LWuv-0Oss-Iv2~m<_wY6|fsz4IhVV zpz8fwa3Nd=RqxkBoo6HB>@RF-9aHBijo)fSZX@AJ!1rM}xCN^3`2cGC`v`W0+u&gM zDI5y7LoEto`VNq1@!wCs$Cs~-QXdp ze8>jQp23#pd&);X=*};{C!Fkc{Qt1`CU82H|Ns9PyKH02kTkZk8(WAn_9ZdN9%dgi z%+@Rnp_^=Jtl3l6LY9O=)De!XIFFc+u;AXRqIE@BhWQ|B7?}@6P?#yzY1Q=(QAHU;qEY zUI6BK^IEPSVSe~Cya&3&@9ddtmCxq>!q`*#`$MHeF<2HBckaK&Z)Xo&s|<0M|GIt= z(Gh^Xim)_n0L#M`umY4mD#8J<64Y~TWta&cf=gi)xEfZ4n_)G$3)X-iz*_JStPM}X zAb1|ugZ`vbeW>>$4d4^-VW|4BAxwddpvJQr!`bjrcn&@WFT!T<7uX!?Ii>~7K^$8` z=}&$*`^=jCXBB_7Te&dT(H?u1VF#$^vraGyc7}7|lW+^{0(Zi$Q0-KAcoX)7YO8ud z<-^{v1$-K|hyCC{7z!1iFsSFU2>3jVgs;FTsCp?HZiX>X?*sb7V=xZpChQ5YD@=s_ zU=kbxli@U&3g^Hf@E9BhZ^98!{if%j^rE)G+56Q}yrdT{n`c*GJ&!$=i*axp9Piw> zjNi_Ft=3nBOZOGSY#yRx682P2Ooo-R(rYv9Kak zKCTR(g%83^SOrS|RpD}29j=EppyJaLarP6n`tw`y$p__!jyl*=`0Bz^us&3NYyg!n z9)=xYL#Y1TBQOFsfpWhc5}eD{m%=Oe^T4Kvj^@}a4qHI=ms`R5uq{--paWDGABS=; z7;*O4G<$E#Jsv+i<8n`8PwsVra<3~4fjwXX>2$W_J?C&EL6E10Hyzda1D%yO8-Qt`XmWnfzLp- z4Jq&emH4YwuQ2F~CsQ&D? z@OgLwE`=xIJMc8z3eUq^@FLW^g`c423H%DX!{1OzY4{lI1A}2-*a7x~9bp)J3P!*IFcLlkqv2Q>12s+` z2N%J3xDF=39WW8@gGulJOo1n1Dpb0hK%D&<&AyFFm(m!iFRx=L_S8;23(Lb1Q0ev@ zRC`6DnRav(e46v;VFVlv`@^wN={F9l{Emks;RL99{6#n)X2K&aG3{|eC!0qrQ zsPN8!H{dK-96io~dajrUAA$3s>hlFq{hEbP_XY6V*?ZCK$*6b+VqOq)9m}z&c)kJ4 z!&Ol6Tn!b^H(@jQ7F4^u7DmH$Z~%N8X25sgb8rJ34L8A;;k$4V+zeHJY=vsCw!s~6 zJKPQ5gGb@}Q2pSYQ2n=EFc9vB55W(h>bAX5?bXLH6MhP3!UItKvxD$!co?39N8u0f z7-SBa^(B;k7Vz8IYtih%DE-vITw_x@&S6ja;yhG8?EYFIll+CfrVfkECMyZq9{y-#i8ow5^ydo1@)dM0B(V$ z;d}5tDE*d&XW;$t0(=0fKO6}4JXap-Jy1pXD69hC@UH^Z)Q2kZ{NhCSdJ*b`oWz2RT*X;^|V_JQ}ozEJ5C1{=U| zsBxVL*b_#=zAy%=AJ!kL{*8s|hsD9kFdnKtPJrr%CBh9b8Ga0(fvS&Fpz7l^SOA?3 zf*SA3fa-URfD_+^shF_**DRw50n1A``;6=r*`Z`sD92wsQ&FF zsQP0HY!0VFxfg^a+xyU&_trd zGV>$!q=UVmoK*pLeD#^Xfc@Nd54@l21)%#rXHPt|ba0 zwUdA4xvnyz<6i7ZPo<#75z51cumV&)TM<41E5mN^L8x;45F7=oz!zaPsPbDKN?$eL zI#>&S1#81oFbHZ~vJSio8$#8m&7kzy99D-dU<7OlHBQhPj)iTZ-Y>R;OJN77`tot8 z`m!V31v|lmuroXcL!jEFu2AK&J1hcwK#nuoCp)(a+nN1g3rLuUu2K!#`jKRR3}a zEDVRi@^Cn;0!P3`@HyBVj)G6XNpK&W0yVxi6{;PX1{H6M-_Aa7X8$+ETlwy?u5rx5 zp7OUXVyYFFQaP2gJC0@nNdN#2KIq%VI*u16JQ588HPaR!zbZ(*ahx_UEvYf4IYENVGhFZH1vmkU`f~ymW83P zA`F9iE(nLJ|0AICXB6xJ<6wU{0IGj65UPDjfEh3qE`(|DO_&bff`j2km;v?NHw3Ca z8wypQJquNyhePG#=b?q}M#H>t49pM5LA`f;0Tzc7;QcTYR)P~DYXPh&@M$;|y3^O$ zKP=nyoq;{2?<}bHVm536=fDn-y`qde(w(#Km)Q?Y>8tiP7v?(VV^95t1yJ?O64(~L z4m-o8uoqkgpN7j}1bhP~!xeB0Tn%TyH{mbvEvWWoExZQT!<+DJ_!ry&6^4y44}2FE zfSX|tkBdA3&1h3AY23s!4IH6JO_)yYp@v9e4i5V30M+72k(XI7ng#YVF3IRmVxKseb6r_ zc?#Br7%=xuy!_zPbo`rQGb9Alx zkU6(j19%^4^)O`4s?`t%!A6j|pVlLA2n>cRVROjbL8}Ga0b9b|unl~OinA^32iw6I z*dC_A4)9s{I2;W-!WUo&`~W@)nZsjsfnUL{Fn|Yz9VFs$LQ9()e+F2EWE6X5fZF>z}&WQ^Gw z0~y1$#=@`RICu(HZ3Twk@unv3)c7rn@V`kP&$XJ*) z8#4A}&4Ekc%kVS!3j7?-hm3((3*mQg5o8R&S`4ehr7#jMgVAs~d;zY2JiA$|;99sE z@@!(g3BQAH!Mp{i&tO%!4$@b))U8T1sQN1darPLqw(wi^I+v|@M8{XyQ~Pin zs{Q^3s@*;T+r!gP?eZC@`s+KWe#$vG9-fDAQ#o zV_De0lyGFk*38|b&P9HBG{yhBD`sp4^DZ$9f38)lhyS(UVLMASd8dpSgTVZW`3=6_ z`)%IO=T2VMr^=HxJ|NGK5B&WuzFn?-+Z&@d5A8du?3bwtbExx;`GU*Ww%v2IY?oPc z-dcOMXzu6DGZ*$V^X9$K?7PdA=4Ph7Gp|HB8b6*PFz=i9y}8d+&zt=Hs>pipHfpuX z^pP=tQ~V z@<`6h-3t6Q&DHvi51)O+^tmvv(k<*pjr*gf{Lr^gubvBcH!D?Q(}8}G^chJ5f4^5AiSGIRr~V!4eX?}zybm?k zn>qvY~GdbVa$6sCZ^ytMOQuiD4BCoV-Jhx<%6S2$N_L|jcWoz2FnzG+} zZ?65D&mF#0_p8;L+q}^7De5?5|8u|3=l9DurhV~)dk z?DCEeWkTEo?R(p@Oi#{AwjeJ&J^-&J=+<_ne99%`OU9Z7j2-!A*++oPZ6YB0I; z&~hK2k6O$c3S&Nd(DJCi-mUcdJ+n^#klHu-ByDUl+5d5*U!`|r4mPYdGwx)acV1XT z-9dZl@AvhM%!jT#`s9(TRkkN|_$5yobv^B#zhB)gfdgN=df?Wzx1&;CdSi1X+8pD~ zCk3{bpFCpD@9Ty&8{Kf_59jHF)RO%*tGBo9QT?GA*Y-cP`{n0&AEr4inE$+?O-Pf` zmpYspd}VBdn3XMf9uAcGz0(I&dHUC5mun9W{p6iBSMc{8=T z`1za_Jlh%bLfZ?S`+nn)%-2KSubDHg;0?x(3d)_9yL*>8J?q*hKTZvqk^A=sRDLxW zSn&57KcSne_NiK{pIouI$S0ScBaDYkc%ldN{VMj=CeM6zy8Y3Q-(x+Km1gW`zML@X z>&7*Q%vsa?l$}m*kSQBhNH?VM>Qh zPhZL1gFde*M}5csGVM@~Db04RuD)i(eYdD*T9r_EF1}uPcgH+ALmn*JA!DU$$YJuK zG0zy0qjLEi7kAE`oGbH-;BVjJ+1Hron>+UE1NZiM^6OKF#(mHw95a2#!QU_W?E)np z-g)1eGF@sn+gRkU1o|At{G;J{`sZ0V`}DU0dG zd~g1tr-JitDfmd^$cRIEqA`y#^~{ycAMJF<;$%UBJPm72<~kU!K>mz_9tWrN(^a zKX3=Li=F?{kDm3Wrms|XCqWf>5 zKb@p~d91YDpEas=W@gOJ!zXVZ-(54}z1{RRO}wi7aB%4^0(K9(*~Pz zI;&X8r*ogpSu$)wNbR3?{5-_0iNGDJ@b!?%^DnNr@3EhrST?TYT>5av{k#!Xj}^|p z}!D!XS9EI!SO4d&@QL9QE8|Uk;7mcbt03 z*uTHv!}+I=o&3((hdO@v%n!X@=b6cv|I}>ovPWJ!RQH46=}(NFI+j7l>I|It`%OFd z)T+n6i@kSbVA{sS?EzJ(2aNgr%D)fy^S{vRi|NaX1U*y$CG0ikS6}$)$EUt8_13Vx zzjbeT`pL8OaZLTwx7OnK9TZQmjT;1D=7(%Kh=z`oGwIN%=2QZ&a-DYv*1a z>7yI-uj-7ex_#5GCyu|LduRK}WiXp*%tr?NF}cmg(|ZQBE8nqj$l&{N-^78T>y9d2jEAwirMPCrtXN~!X>zj9I8urruQzM4X z?KJ-Pi}V4F`G}DpJ^tsRwMpGSNqHyffjV)F5z(jd_p22&bnPEA+nze}{0r-P<&AgI zzcc0^EuZ*9@>iqlcWCr}!$lqZex$xN<_izKSZ?C}CXJ_G>3t=1=v2z}mMU`R&tbn` z={alMq5|t~HvRrto-?dN#{M5$|5*O|z!imNepaSwbd9xd@Gk2C*}wnQ7jBjwyRY?t z^@$DB%Kkc+v55RKKYy*@z{=(Jo+@%J;HQPFKd46jH}>0YZSqsbju&gKofdrL>X>a` zn>n7?Z~ywwMQ&VcHMM1~`+kUf<)csOdmH=Znr?gXOrM_vBR;M>tNWz1e)Ktw`S3rI z%I(V)nOJMz)4h5$ef9<3S@Im}@3%C^V;7nx9_+b3G^S6h`WxP)Z(UR7^XrB0_%zRm zN^9R+&||?*?I@3fOuLZ$Feb}UjOvDHjE({^Rc5+ekj=X+15MHB%O=e z+q)V4C1YMKZeYRl1HXN2?U)e18F9m#Gsab3?oSw>@>cN<8-8p!;CQ+2mFCipjL#$U znk$dhY(KtCK=%O~ZccRt5SHP_ez`MM`;S@wWaUanRvb&p{PGdZX~X>ex>tL2Vz+(u zgFer3Zq6Ua!)X_G8vBQ0Bl6U%`0>zhAOGWMyFqh0(@&@%`-iIsRC?=lY>tO(#;=Rp zS(ozI%$Og${>yhK_b)Bx`e}3Kum*Mgcm^}(BP&Ies^8+Nf(?>Z?2fwU73$&b#{8ER zEe14OGwl7iO1bNI+f-~R@ipc@ornm#n!4}oigp!CPOta%3F={^&-A4~f19{1Y;r`U z#fhsnbw@wJ^hNyrTJ+vnF8J`^n%j33UH)=xx28PX8S~($;^*cbw>GW(;h{&07cX6x zXB1;z|7KAC;$5aC^n0|>k%)P(2jd29Kk0bS=P&hLax{0Z^;K?_s$6g<&%DO`-1g90 zm6L)4dd>;>Hc$DNrtwbSnD_7BY|w~p4HlRG;L_U@Te1$@I%&+C?jJvKZsP|gb}f;y z;Mpz>;u$ljEcYkLCpP)z?%4T2P|e|sDDSy>=A)bi zBWcJyWEXM~@!yX*5|2zl)*~m7fCD_EA$rNa5jl!nLjuUBjgX#51~MDjf*ePzgN)xG zJ(1DKO5`}=|2gBrNIbFtIe_G%UTlQ)L53l-kuAsx#5zo$1ZjoDBALh<mIkL$)BtksCH zX~KwH(!IU#li$uxu#$MB-oLzSp^j-#y`IWF@km^8?6HeqVzAVYrQiAh{@ajh1sSzcY~~NDyY1 zXzz~m`!X^QfBeJo8;M6oBMXrA$QG_0h1ZaL5yS~;gmgvXkzvSeWFvA2xrA7e*h3m2 zJ(1(MF$L~HP9T?%f>Golqz|$Zxp4-+-~r@3VnyQyQsOMnU$84ugWs`mJhBAo$oVdK z2swk~iorfo1!;tIMUs&zNGx`j!5xUc?{f`l*PrkqnaBcUJ#qj!kK~KRe35;=re3B&^lMxu~3WID10Ie?r% zE+JMT_K^C>4Z;!l9q#cv8EMDwmGA&^5y_W?pGa54e+7QROk@vo6uE{3B%>Fk6|y4? zzhMRvi(9jy3og?&MI3kB;xt{i!;2`-G$<4dCMg zseRhUrL{|s=+miQqehKFyF|ydPe_jM6B!HSx>OD9%$FMz;)e3+n!uJx3CVHs(J597 zOJ5Bjzxe4t&-qAUL`_b=lB6vkA>on4cF_Kw2_L}w-P!yaqg2tu9DA@;s{yMio^|T;y=Wh4~DwG$MD~cyS`tdxR*3K zu@xGVo=9zH$3Fz-%%gZl#wVdN=}Y$n!f3+CH+Cp)_tN zjmg^9FJxku9R~_}v?-U;_nk+e37g83(yF-0XQ5qnkIKs=M{mF4p8RxwYjI<4+og3> z2r4hDVJh)jVB1emOiqbTNRLm8OO78B8Wo-vj-7wfkHR4RBpLnK^@&?I&)7QSn@n+u zF%(YO4a07r39s$J?cXblL$5iD>izV3!m2q7UpaA+y+)pUBRq9UI%bq5eV*8u1NeXp&DN}l^{Jt)2s_jhhsk7*8d z*Hm8A1x+W;!Bb6~RS~7e(M&~$MyI4CrSM^x_;`H?MmPOa{rGqBw(Az#&4kqcp7a@n z-<|!8xyi4y>~L7mV(uO8YfiWe5RQ8sQMlLK5pKR&m8dVeWrbYfR`|0yJY^>z7k$%9 zH~EI!J4~#dGKaE}ij!nGVLEU}n3B@dlGD@pN^W{;Y-kK!DWgk}-QlTgZVOXra#{+u z<$qnL-q8i0oo${5xuF`~J((QfBnb*sK>x5dk>u4A^^%dDPbHs8yvK4z)|PC(zbLhZ|W%(bw#v)`TV<|VHA)~U*4 z<1v4Z#Nm5jYWPfE3d2loKi`;3R>LcM8{uf%?N~ZF#w-@IF~*GcHqkcAz-*i`v+E{> zHw3f(#*fsr@U(PO?&W4r%)Rr8%v_j_H}|I`4aTO*Win=Vc;e7~(V|^F=ccXa6PYQY z`h+varZ2Dt+HtiTD?W>rqB>V~;IMr3-AU_OoZp;bw}bL`8Rrv>zsd5-a zv?TmGf5%P_s}1MMKMys#U+J$CCh)O{&(vv(5s%8 zSr~p*MBLwPlvx$dz59cT`xfHOTuEyt*B-OOWzsQ_bNl|3Xhq(9`wV-`vm}137xc0l z#JP7pBOOSjn=X#MiNssy)17m7Kf~Q#GH=No!}u><4MwD^OSXNx6X~riuK(ZEm-1*J ze)yB7=+Ki#Ri>oJ$#%ZDtzRh}oku?>h>LX6aCTN+%1%epM>WTe`nKMAC$kU^aHt-T zYHA`SOHh_=`<||Y-SXPH2*A#rM^^tOkc&#o&VKe??mS_eMXJo0w3i#USz2^L^6lX| zqehLR6a59Hlh(YcP2XXM>yBQ{e}~bGr@;Bn}d{ zPTXyNx-m;O`Mwcu9Y@w<)?`jrnpWUE(Aevr5*?jrbf+?7n?>les>ZCm$1Ei}ir?{Y*J zJw_N^HR5tMho?^v%*E{5#CDk5;j=ZbFo$4fhc7j5s8@b+>R6u9?Rv8;y3)5rRi-N0 zVKe$t{JiT}#ZPs@BaWS-CG0vg)j3z4sq3S>&UKGlADU00V>%*zs4uHJbd7D_sYA0A z^4}?&inrQmUtNS@=H1@>Q~f!WaQQx$tNyG(ng$XN<%i#$c)Ih4ZyO_BeDB!NGoy6j z{#Nnhi;945e*)J+OnSoE~X|~7A*o@bRkL4lmW3)e`1nd{doE+k@Ic) z`u3{wR;2~@xx1gY#pisUoi9wkPxjyUIX~caZkKKQyQ2l4RbGuFw{|T027diYSf?P) z_@NnB)Eev}n2kns^!KypSq_96$6&3Q>p{qKyS+awY{U68P|utxP>I9bbu(X_x$Ca6 zoU_KtH4Q!sSHj`&eaN0TW<9J69^#xeB4++&7{8q{K9g4zE{&mdl{v>s?5VDK6PAN( zU=_F)HinFUxLU)vVQ2Ub>;+l#VD`P<1l{p>#@wt`T=$Lt(`{aCI0&hVRww(6*0Y9jGo)f0PJa9P74_|=nb!yg)7lMm9F9MfAf2eQ;OPp~LJ*O#L zxnX@oM-A-J9Gd;pmFL(?(ySX}j=HM`=k*+Sg81!>H<|VDv;7DYW|a^fq_bJ)IR=*C zoU}6jkLR~DW+Yu2|K*?h$vSxDX7tZ%F|*E**I-7^ysmO7-eE8ehC{_W0`7*9@FR#F zv(79UG6-(Pz?UFn)#f`zaZqDd1EBN~i#X#qW?V=5;1R;=gXl=Yp7H~_HsMKyO7}rf z;mLp_;Sl&L911r=ii8Od@iObi2&?h09oL+(6NTNxKM!n*=#ZYIk8$vRH~~HcUxba| zB-j^Dg9?8Y#2M4D=&Bp{h=SSM44Cg0Dn9eQ>^tKPl-E1$zm7fShoz4FSR8Z42h6yE z^wWXs?(uW-w#m0|L*=0@up8V4rNiwo0q%fGxA&mZZ5Jd=7HQ{F`S<{?g&#w%slRB- z@2Btx=lkJt_!*2O{SLxp_&L=6SBK#95WD94Do5dI&bh~|EBYF0-Q+h=>xjOE72qjY z2cCwF;ThN#o`u?9;sQ*8-^0Q1N2qnrKf{mVFYpi~EzCa8zd@}>zYH(JE0D5oU4?v; z!F<1qGOfMkU6ft(9j|=w2IrJf>n03w_6nq1gh6i97XysxZ3M>WhhxfxkSRa;$k3-gIx_ZNEFdSBg zX|M)-7P2_Pn<0z%{Tg+zwf5t}r=8#~&O_i{_#{*~!Vu?K-PBDAM}Ew@B045uPxZnisBlb%!Eg#}3#Y>Fa2gDQ z)IqL+a5~gjz)UEARHmJ0VDoG&e^8HkF9GyTB3D7kS~^o7?0_{nXKj|be;L1>XI1kI ztNV*#HV@IU2YU+VKG+0)3{`)90;Aypmhjh4%tf zc)y1V?+;Mny9gD&pW!-q3GRWvz)#?>Q2r$&&hwMCke~8T^<Y z@CIxRZ^AC{7VHn{=(sY0ADpdII2W=u)~sJ+FAGmRo#zzu{Nfu=);Jn}*$d9(AJ#g$ zf^mmB%H$t^sQgnDhC%i$GWn-CRQ|aaPKKqR;;F{hc@{9w2=cEl#;SXC+=o5oBkDf0 zFClv#xyo}M2$i3z!pC537y*Oe07%{Fa>2TA3~T^r!H3}@*br`njiB;J6Zi#u6jIlk z??q8pneRmvgUvCgE;8SVstVh4PT$RZA8HhQoO8;MMcr$@+Y$ojasDKH9d?DQV0X9y z_JyCre(-A;2G787_!EqTS6~$U3&uk2zc&D)JM%rK@-UHet><7pj@f4@6>1--L2wBi z0yn{D;eI#_s@`Xn`V_tk*<;&$mx(>Ktu36h zH@3AE-h|sAdt6%|z(?tDdRFhzm1g}@J2H9UYP2DK^A~-1W=Q!;jh2Ncc5ZX?!v6oPi~4u3iz-!BdcLpr zvWTX6O9#Ca**m^jBKzHIEjH$Nu9xaz(&e@1KIv0z`0J|*%v|?c$#0+g?tkAps(;tI zsKsyZAl-su0`^+x~IbwzhuKlJZfC)B)#>f!D`+(;T$du~E{lg5u-ofA>! z?(2lknRe~%hyIwp?77c6NB?&2&x5Tm2L9LA4-Kd-f8X!k;9R@&OU_pKYHowHH@ToT6Y`iz>)E76$ZRS0JG0zh@ggZ>{9!0)EWGJb2FNf^J!BWsYLQ#?n#ihqdj z`Vy@t(HaqJ31cRq; zS_G{z(E0(b8_48-tp(7$e$D4U&iQ5JDB+98-37=ceqV!H@8N$5w_zisD-w^m*L+ms z+D6VVA&m$}Q_j8Dd4zE8Ugr_Z?_r30jmLC;yVrTFi zTG!#drbFvFc5$!PbNH_1&^ivS;W)~5_Zp5%{PteIQIJ7i?=>7+zo9i7RWNUgXx&Cv z7>{TZBKNwD>HOB(4fnc@?AB~7!;X8shSq9aTTa|D)0z$UdJW&T8i%;oeB8 z!8jRqEe448d|0$( z5v|0DN=lDl!j=3C!0w$#pl2R-J}zn=w&EVhZ#(W$=3Mu^f4d(UX`_Y3l)Gb7bj3VbVK0=G)xnZ(2_KHeY{3{>I

    c|2==*>wa=6k{mqNnEXt3w%+2O%l7waVOmSZ>@sA6TAw zcgllr;(lj8=T6R*A38bfkajrX8EM>OjSzer`wRZX@Wd)K=H6odvtc%eCx5uOXwTEP z=W?wx;j$gj+@nCQZ}bVP=Kmb9!(wgbn!?`Q343xLZs2&C@}n}V_wHM<6U0O#e*Vk4 z40R$QeO@yz-to^9hZ9_KuQgcO#Q0OGP4o60b%)|0kA3y6`D1z~=^J0AjrZIsw;O@{ z*zVCys9C8fH-a&L&zKL4=JC|bzgHdfT~UQ8Hk>sYY2hlY9GdgDi?j_uN2))gZJn4f zs?2-)8%iHsdUfB^(YdFf9Y1qV{kz?GUUJu6pMRVeM>w<(sKTW8 zv%87U3ERGRdZk8&$EyZXt)3bk&#F}O+s^atj4OBiGkIR~1Vgwq1izVIp5+W?(qT`y z)95fZibntww?OEv4^E9;rH`Fvb_P-UO5e6wQhbz?ab#WzbGx3Ac|uYYsUY3-YHIR` zwFf_SKF&Gc=bW$gxqi~;`Y%4$^RfvUYO{2|w{H19kvSA*wUgD6Pp}hc+rOJ`qgYGg zXx7%P@agnARt4{i-xP;(Gc4?ydnac0`@!!<{KF+)I^XKL|{U|3VC@p&u zf4&)Eba4K^sDnNQ@RY+>2SJaSynDC2sI-hS5tj-aZOEN}pAPPH{_k|aH!v*i1*&|| z(++#K^@VqScK2(vUPZ@9L|MXx96`?uY$*SkLCTyjCOkK6jusaZ8m+t{ zUaKYmDZtVfkb zmq(3jcl`6{au1i>x;(+}>~twTpXb_e!sh8i7{6>iOQ*N%xnR)?gt-cnZgW_6nZ}Ao zpF!E^KbY&;>AxrD7jcVnZ8vMiot#C-lh?F1XgH1ky>zsIDfc1J?svH7>f38J(=lh? zhS>0w_K8u^87A*6z|77IreEdB5K0fF;dLjC+-dA`{P~&i=z4|Lw!gnS=SACPoqMP0 z4O2SITsxDddkC!3G_1X`|F5K}XM+xv{ch>3 zvUj(1j^&!Y_BU(2ZU$!8On=+X5GqT-nE9rq`kKlocG_f^I#g!K9ov9uvc+H5}5r z%4>IjnHzPOGJgrPL}SKU=)_dhrYr4~p1%1+=7EIKx6CWwhGD+~f}h&Lp{;5=PL03% zVTZ?FU#~G2DbmRUl-Hs~^-$`hKjF$*lpC${q;Ya?>i8#2I+*Ytz}|Jtd4^}kOQuAZN z77XpM+51EUm*58$-eWJhuKbrj$sV&v85y%ZS!Q+I_7-HBdG6iiF-xwa z@X9?`mRVi5nZjm=FH%Ov-kK~k&%MjC%slrl@t7r>u&CTgZ;Imy;#i3E&e0_+jypW| zv+9YX9y7b_E1VlWW*K$)X~J~eW0qCM<)1`#_7=N5d)n>m9c_Qzb$DebAGn|0=R4=_ z>x1la=UIc_#;HH@l~M?pPmZXcHVL75urAs5Z>v8{YhwnoqM}*dmZbDiz0n9}b9nlb z!CbW0jD|;WACGtTScoYzT=N|xQJJZNd3NI=(nZy-cHG_L67DtfE1kG#-Z@#?dIq^g zI!&?dhw8zke|%B|&t@hn8aPn+Zl5r=A-RY7N)krB!C*b5P_t^}`u5;UAetW;c z-q*>uT)5u>+2t$7)Yl>0YxfOII+^tDX6w;%*THRUeR=Ba15P@)_d#*@;il_Bo^$7-q|nI}eYpU0ieP zdJVs`)3x&FMy^%BfBJ2v04Rg1pHUwj`V-bgT)!{ORh>Ay z^Vp>axQU}U{jzG1bxBrr>{#J<%VUajdgAS|w(B2-H=Dx~?*&|R$NK=kvx~R#(^0N@ zr}?S)9ta< zJ(aj-*ZH{5)@0hp!maC6Cmil~0`r{nAi|@x*yWtN>x18YuHPGBr>W`#*$?(PU*?>< z)3UphfBnl7D30ZbhOX34)%%ygNINa>HZbeFfbk@%G8?y=@^zPb!_&VA!CrP_f=b7p zT=PxGK+Js8Kz6fq{rB%;q>mUoKAv|jult;Dan9ZEP~3IT5=TEg=2>*JjOZQ8fq&4C zd5Pkq9ksVOk=^0ZO+Kz>ryJ!Hclq0+2SASAb<=|nbR^0b29FO1VnciW`Z zzgqs3e|O;5c+>XbfZep3I%E&#FJ!feo;EiSbEglac3PXLhO&Q#xkqKqH%;$Wu4JyX zE^nT-O`C5vWL3I86P1Yk>KdR&(|?=iE&spx@n{zcOIU! z3g(*cvxtg;>VZJ6Wmi`z%wz2^SY6PW&X;{!QN33P8$lqqp!=B7l%zSm>F2m0l zckaxa!5+8LQ<;8*OSW58psj27tJ@6YM~yqohZyrlnA>48?kI?u=PVjR-q?cvRPJ`! z`Z9eKl^5@{RDSZ#Q|%N0juwdW)T4;<)PguCPf@=yC&ZJfq<4iOo5Q2`U@m&=T{;WI z%vWa$hx?hok~)SQCrNWXqOum>YEL*WIpK&(2_Ni)B9sU9+s5|Cn>+9L=Y%JB(G>$t zT+Fj#9jxiObA*?f9x@fiDX=wu@{H}-+gs^68}qxB*9Ba&^OL% z*Sz(~sVP(LKA_oL2(yRC!x|Q>0F#LClz6*L-K~!tpTw@(X({Q^W?0LfhV@VNoWdH0 zAKArQbzrRgM>_kZg=;WL;ZKGH2Qzo>w9QqS1e!WK>-~i6yD+a{%-y@0*=@S&0q?fT zod$Q)TM+hr^`iy)#g~;qKd-K`icB!FU#zti>>e z$nCK0-!*TU+FzX>yNhD-m&$oIho>It{EP`hrRa>fGWP`RZr$TRs^2^N4KV(U=l9)o9mch%O#NV&B2_|4OX=D-4HV`O z%2+d-nNLKF#WrL@+_|_Btud`0aj1kfX|X8b?( z$^kPU?0ds>&6HF7T6juI_z>r*N%u;h*`Z{V=&@wo+72S~x!tS5?_j9DE!G>^qtcnbETb~-k#S)rjE+W;{!|`rL=p_-;-yI znaY%HW{1Q#9o6q{MEV62pSQ4EI?b+gWG|R=yH0<`_}9pDo^0AL_r1focLmq#rf1#T zj&ob*_Pxrpwp;eS-uY)(eJ*m$LzI7JA-&M0|DZebk7v9-v`zb-ty`(onMD!YVsxx9 zW^;IS9Lz=gU7qK4h|!b6`!s%b_G=?`8#9I3F*DCPsy}*SW1#`()3xtanyQ1mAa7vg^V;>z$RIo=W3&C6y*wW2eEG`My7wZrtxW zE<3u>Tm_94=Yxl-WP&sPPB*MeNDYlvY2}uG%$EvpF!p{$=binyH#FRnC$r2VOy4IE zd!Z(unlZr$PK~+J*ULOy=IS%lV_=maTM^vjo#x9L%7$gWbDs;gMYN_Y%(j19TbGsQ zS!*kpq3oW*@Q?9Rx(4F@-R2_enVW#=EB8k_Ie>KeU zN#;W+|I{|CUR#NNI^v(wJoivrhpLMMIrr{|xaT}e*ZaJ}t@FRU&b{Mt*@*{1H}N3Z zjqZbNfBsqb>4_#LiigrYo5Pefg`tTPcIj4OaE}%5YHZ*2J|Nkx%}6u>3i;bGFp!cK zY8Ku6lMa=qLvYhBTlP8~cN^{dep`0Kuxpo10r6%{y`XSKJFioOPWh@Aaf#!Q-H%wq8fx{FY03KOa;) z^F#N2&iYLAeq?;^+warR;9vQot1|o&y4`cuEN1K8H`tSV-$J=}0tUd7unar}<=$!N){Co7 z4?gJ-oX^&ObExvu0=mQDtQj+m``ZIQ*bU}_dcMmCpNIM3i|`&e6BdArVL`YI z7J_SGQMe11gooh0@Hi|5FTntK1>OgX(9o2H6=6BZ-mX?4jDY1~9IOBb!b&h1R)&LN z6*vr5g<8K@4J!U8Bu(u4SL@{zf0GX}*D(%zs-q{sQg9+vIx?Tv?0-BJHsgF6>rne^E`|5QH(*V;5^CMwDyVoiLYy^frVda%m0wkMbZo+&%KN)e@!Sln!>!K!Do@TD zF|&5eH{b1d?myt%|Cw|DL8$z42zG#np~BM>an@>?^-FRuA7;{_jx*S!%CgQvm5=XW z6?hIdh38=#cmXPGKfo|}5xU)X)yjhP20{{wNqAm%#w z?xd+_o`=%gXsEOs3sc|(sPg|JoCY)D%WxuG0VhHA38p~mUTZ4+4ZZ}+;s<-8y4W+? zngLtESy1~5zXDa>Uxg~~^I-~H07t=va2jNc)3p{Zfd}DhQ2W8Y4l59srBM67GA8Qk z2j79oa3h=qH$(O!wYI|3@I819z7M6}V17GmXUv)!>8Ca3^`VXru~!j(3RQ3Jhfl)K zpz4J~FcBVx!{8A(9Ug!6`~emt>_0>447x1gr_QPi}3v8V13`kiB|cf5N&@W5o4fTgcw(t_0W^PJm6I)?PJ*O26}nvtCDg zW}Eg$_0e%eN25G;J_?2nId2Xhhb^GmnU*jWvd6CLdDt4h1lvKCvkq_%d>m58SgbiW z?QAD_iu2A;?Q00sv*%Ngz1gj93`~RL;0VaxU#_w6 z1vmq~2;YF{*!2ON2+u+G6n3#Uy)_v&gj3*Ca4HOgFG0m`I*f<2;W{`MDn2j6kKjDG zAI^vDL2fO8f5L?@KXF(D3&W+bH{_d~F7}?bmct~t5@y0xa1LAz-+^o3F8DV59liq# zlixSMl5iu`_W|C8HQ{F15N?63;Wqdj+yNKCU64A&+6^hg)(4QXYJCWA!aeXWxEJQ4 z9PESSZR-=L?*M!XL*PL;9v*@!Pe}0~`)7Lekv&5t7E%&rth6UxwJVuEE;$4{D89S*ZM;j5upG%o+~m_X3zjAvzXgPwn^;SR5{eOe?jP!{%@WRJ*zgs{L3E zpMu2M>)4Jx^}lw) z`EVC}3+{%Wzz?9>wGZI~a1ZPT)vr=H-3L`pKZYuQ+++56SAVJ+eyKkd2GyTZyY(4V z`*aZQhKC?~lUs)&dy1RqK)#)0p8G06+FDlw_!aB}sgGR=@N203+P{Tc;7O=<={#(Y zLTQ^_{os#qCHx6${npQL3q&`rAK_(K61`l9{otQa`>@}H+IRgHTmt`s??OMmN1$)~ zq7$Rv5On0M^{}4jxAaRkwpt-N@?cNTG4u&sygYmq@~r0S4lBV3SQ*B^ zDlh?7g~~TIU^?X4#pG*!Ut|d9K~Ujxk;cyY3r~NvCPry8=Lp7LZK&^qG=^Yu#`UxE|iLa6VTEQ6Eb+i(ip0AGSC57Xg3 zI194pzBL=N*S<9eDjnJ(&bkM)9zywpYS}Zc@+$U}FBZZEa4~ETm%twIb=V6og>o+# zan>A|R~2%PZ0`9!)e7w8=X@m$gsWgJ_$E|-UIXRMc*I#BVAc)Dox+%@Z>{5P>{W*P zepeH?0V*6Dq3X&_&;@DhU2Q1q^*9vBG-Wtw=ZQ*=K**4$hX%AIDb$}b7zMJw1>I z=iT8A*b6Ej&?j}}gneN?7!C`;2&m`A{;(8`g~}&!usj?9ReueH)nNh*hV*G&Eg;X% zMvr0m<;({+^TeeWmEW$2jx_A)JRKH?gW-KJ1FGH_3Lk;b!j6!(+x0XY0o7jU`zuPX z*@!b|+sx&bKmM3WcRIp&E-eJZq4H4_421om%3Ul}dJKS3a3CBA<6#O+gkxY5Tn>{V zeF*CrsB+J@TwG^hI#jzb7+!@LP~lTO>CA~XbEOr&JeVo(>Yz_;;{O6H&-nyc3ueMr za3a)m(IhDMT!=G=+01R0dx~EgqGKBNq}S=ND4Y$e!#S`noC{U&&4W)t`tl~eOQ7nH z*C2f!Ol>hHS zr6+wM({J1ghj7lf!(5}``*0fE2^YX!a4Fmk*T4_p7Wg4lxc9(=a4)DhKHf@^A}L{;8955!8!(|2c@So-`C6o_D#>Pu_yhX zfXZ*Dpz4&^?N}` z8*CMZw278Kq>ZwQLE0p%I8=O89-X08t_$E8!muB&>cQ!ZmF4b>KndB z*i*VShUMX7Q01o?>XEY#C#X#I=W%6BCf5jDgEwf2i=s!R>GWRK7`oM_?jUeUJoygzRZy!kY^75Vka^_G1vd9}b3! z*H9P)pM~AwFi4-+VhqiEzw0?jUq+3p>jE4J>1$Y{q4uU21EqtpFb0l;v^~}Y_yT+p zz5z4gCO8S6fK%WlI2Ha1r$epdo&g_(GvT9f7HkIRK#fDb3_HSkup8tV%taewy$a*t zd`O#MErR-f*J3ytE`gKb>u^3?1{r&{mP4g$7~;%xH1i)7C)E>O5gn_rr}NcN_D7(gqHG~{84^cFLREMuonRL!3ywm7z7W& zPVg{{hhM;F;So3i9)-&HUqa=dui!j*94>|@q3WAcQ1$U?xF4Q@-@vo*Jp2y+2G7AO z@I1T$zlXQr4^Z(?*>~pknfZQ-hj+XAEA~oZ=Qmg$UV*jYRjB^qE!Z9Y1?Ao)#F;Z^ z=F-VM)vNCIDpwx6pO7Dx!~7mt6&8R>heGf%SR6|KC15fv3Fp9j;Wqex*gG5eE~o$h zU+W&DrDBq-J1r{fMk=Xwf1{h}PEoeCt+ra*Y^zp^4?-y_Lgj9eZU{qEgmtGVgd#+x zR0tsy;s1P{b6uZ(`t;f4`}Mo||Gr(1z4!c_bDitD&iy&pxz0K7v*B)d4phIY8f*p6 zg=$Bt!|w1r*c+Y?^&VIkj)xaO)x-7Rb1)iy2_J-;Y z_JNtOFZ97{;3_y6diQtdOqqROgIq$(*a69}RehSMF&!0inYdfIQ zaVPZd@6KH^eh$8Wp04LU=pZruuN$HIvpyINZ-SS=TcG*@lVBHkE7bi{5qF-EnSZ4F zpNidJM8_1|>Hc>>_3x%Z<>TqF5u6EIz`LRP3HQK3a26Z_XTxMT2kLoBM|VDu>30OD z<3qU9^B#tJ-XrdH3H)~F@Hngat?L5ovqIdd-dP0|{xz@(TnjtE*I_nX4`;#+umHXZ zUxpi@=RbFDjiYiM>_5g_O}#lBs(+aZ4?*bze2avS2)p&qw8gC_m7aFz8PWMir*EWi zSHYtZVLw;@qHErWsCyrN^2dpfMqcp?;W74)-k6?TsX|)Ct(SgOWz?*-50RD;av#=m zSoE{bCx4z&Vb;ZGEZIUQWWRBLaMXu4yfSUw&HIwpZ_AF@OQlwq1d9mkGi=^>jT&7Q zaX5CunktvQSdBK;*!O(ol26~*QU3k8(-#enzOn&@V3Dyu@IsB6U5-wAdHj%@tACs` zic006vCltr_|;RlRqu2EoM)f=qEgvg=+m60`%f!h{>!#|57n7FE%(I-tJL_DwavzU zNcmNBue+#x)>ls@HGQc?$EWyqY3!d^{rHUc?)d%rsz3eH`T&d5`={@R5n(sa_}>Pt6+^l|U#8VFAB~_- zVC-M1UH#UFUioHcOzh#0%J!&DH5^3^MvymZwKJvaBCHibe_o{B0W?4_wG zlP6Z2Ug6X24;NfB>9O^^iyQlj4|Q!hx9Vj(Qx|s`bbqfU6soT;miys%MfBRV^4<-f z$F@voD%$IA#3jvE^5Ww`!R* zbW6Du-17|<_YIeP)Uey+YLNp*Ec<JL1rKk(-%-+t5gtFxb-@Wzh=F5P|Q7v>#<{4=D+n-^_N zsd!V~Sf}Ed4H7QleW1GX)#Ss&r*@lP^MjnDwHy47cXQS08zE(wZB#(AVZ% zMA#cM=RdHxaNU?yji&wle?x!Z1p2cPVN>2b?}1&vtl#)T??o#{zxi4>-f7R5eT~+y zPTe#3yQra?n%qC&uH0*RM>6&kf6c71u}o4%qm9=Lx~lc{Qy2@nQ0|Y{x6HQ+>=%}5 z^JVLd_XaMFA2zsSvt`dPHV`HItdHx(eO0&rgV!9X5x3y&8$0uj#n|6=bN1KaU9Ru6 zW>4n6pIFm`Yft^*w=TW1Zk-RG{3vtU$Gl9eG4@+hhn8zvd(-$GSNyuI>zFyc`NmpH z?zdhPS?Af^sim4XOn*LYO_N@X0U7&`j(op&*EnSS7(#=gR>In(=g{(1a;WiEPV zV%=NsV=UdYQ#-%9Vob!$wU17{Y|+S(%}%9XJ@W$Hr*YKH6K~m&)9L=X2@iB{T9tVI z(74~de|e9XyL;7Wb6NHJl~3z`BV!@P{quLcS#MI*vUNXP9rsk#2bbiNF7#)@e}l+i zBoE0)HX(Zj4N`*O5NNZ#ul859YTaX9_e!3zPkmblhB%GJp zSY#kF11UrfBQa&eoK$2svKC3c3jZKm_#LQ=Q2GZWc#%xl?NITCIdS~XLZbK`izFaE zWC^kzk*>le$Tp_ECHJM$9$($hjT!A*4ql;~7XkvJ{Eqd;*e-9L8K>DCvQ;K!SA^ zF2~N(op_MnP7-br=`S3J%;FyNkw86$(qXt9y9RIr^mG{R$LyqVJ<<=EjLb)Rd_g$i z7GxXl4K?h0H(}A={B?+_gYForYccJ#9GQMF#Ub7m<#~ z&4_dyPQn}mW08T#Y-BkyANx&kDGbzexE6C9@wf%#hq1VM5H8Vg(mPQ1 zVI1dz^&ci+mxW9~A~VPr$PC%R`EV)HbuV!bw<8-~$1j{a!0)3-mD9qU1DK^NF^b>K zkbeC3bS6q)Vh`*hvncaON2HKANQQYxD)&z1{A_;v;3Azzjv^RfgS({Vb{#!*aIdB2GjO zcGBSFl%b=C4>pU)j?w>@m5qir_PuTBZo%_U=mPZCxitv0=`|mmf;@thiC~`1wu-by zj=OfyE}NC&5^qOPU8Oa98e2X7u=-TI^^L*nhqcDd+v6zTeST$bqB!K$-YLiP6Fv%j zzSUF5+H6;Ao_+T5&y~%wx?FOx3D!{;S;}4+4)n~^5b4JAg?Of?8!wA(&UBT+EFOOp z|6ET`SM}2Ns^18+;_XW~g?Hn8``o~VeO{7#n>x8W58CI`M29;3`+df8R{MQ=>mb+g z4$hj#WSTXzwl@k+<+*`-Iw`H9vA6pLWF-zy%V2A^WOI)g>~Asdv&qJqXVtROE7s5c zy>+kq*rb<#FOmCQ^K`CLdVBe8ksAj$anDl`A0qud1)l__x0~Nc@c#<^J)U2pmG~Tu z5as>)$g|{w*zJLSaSNR?Kf%w;PBuGGpJ?8HhWiD^v*N;ACm&Uo2kM!Kp1%Z{NqqT^ zdA^N-<1&O}@&We(5P=QfP;@MzvX>{jik8 z+|k+eUQ|Zy-YT{D-8+nZkCSblc-8vbnMD|sN1RV>o{(AL_V!EVTc9}#`LA%lj40f( z*8MT-l|zTy=nbK4WMySiER`1jO4y4F#|;7gRyaNkFb9T%Ip5|;+hit>w);EOa?5m#DgVQh z)7Y1V_11c*eIVD=aw=5P`Qy*V4;!746t8@tIEb=ga%S@knVSWf`?}_b-SergS@%|) zdHWx*zSA6U@?UYb4ta!YeAazpMq>K7@hSdl59J@ZDcKoz|7q&rl#HZtC!F4oQBxcJ zA-V<6@zUGwUt)F7cx}{h<5v4oj?TfU$^WVk>(el?PndT9_a1M~DV<7}(>a?LQTmgu ze4w~FWrxl8t+=Pc?$tM}2{p$6{wwTPBK52A-eTQ*6^$2WH+xeFb109?KOqi(-iYDk zQ$b^y<;jhtdwl@5@(XYilcv}{3u^^<=M9zzh-9f)3lRuFxdav%b@}B7=_+ z`Bh;|Fm;mktM&#`H^#QbNv4id_cjV)udnPB_KH>-soQ1khNh3E6_*`BaqY5ACQ$y| zOu8Hmw`=r%v|%)P8>g;YX*L~|mN7afJ~2HjH4%HoS76#6K3%S9j}XP#Ok^=}R`B@= zq^-LtdQN6~T5|l*?9n+^7uLU0u2r|IT-$t@lQ}v&$@E{mzOGGkx7x#<;v@>XacOdv z>hrzU-_Fy7LFR_LZT+r&<^#jMM1kdCh|ARP1EKl@an^mw{Tj2`d0?ndyv`5KC-S2& zz>hND?V7b;cA%fXaNk8`-@b?0IFZ{Z>;m@>!f3+%c2GQ2 z`ohN3^Mq09f34e=OrZavgZVg4U048Lz)h@meX?knApYnm$lY}_@`5=|^ zUOt$?@8Eo_@Xf|PR6nkO8wbXP^2`kEt}*d8)MQ549mI}pG8LCi)R8h}oO=f5qvGPx z%ZKU%(+AAVa<5mv$=YS74NuKA_f$P&?b1_*@k8%Vyhb^_%(JDtI*EOV*b5vxolEt* zH~OvJM6r@>{K6Ev)#*1<#vmkU)6_}Ic2ZCUum~oH`-^-d)@P6gUl}lnM=F= z@!aop&EEame0A*o=eTCgUC{G?am_1T^EF>v_nvu0koj%b?A?ENkokAl?CleM=7D3M z-_JFB;m>l-p8LH4W|e1e?_cdvrGw8-W{l|wd=)=Od}Hoka(PZlO-ULVKO!q-xGBG? zhe90wK1u>7LzP+OZFk>Ef19hal!bkm>ANH+<|f*_l!sj{^B#5VKFU7q9pl#SKdt_C zjNBr;j^`lJ+vyjsK}}yVJ&%KW@GDIQ3i`x3^WW?NB;YI~4QX3B;{!kL`mAqb%Kn|=Jtrog z?c`pe%ENx_L$zT(?j1N5p}MiFzizeq$N6Mn-O z9B{qrGPPyT{%D`)wJqPeX0NS^I%LnQ&n)+SU9;ErjCIXkANv{C?6s{Q2bs(MWbfyl zj|npW`LjL$hWotBY*{lp6ZHK40cM54t1}|26DW=@h+e(gBdRkBt^1POI=2sRm0A?_ zTvazmbDt20zuk-BWTwG&u^D(%8w7Ttt%MPW#B!>R$HdNn8dl@`cL;&ePQoA&h*7)H`{NQ z=eOI5o!ie%)HCER8h={5>`d9I3@1SA2kp0R{E>r|IVXF2E;o}6=;M_sbW-=qhi>>9 zD_p93^vxl-j?*&+VsG!`h0}h()HQMbbLRQ_G;QwR&u?#IMQ&&K?c`SW*6jxDy||WN zjvi#TE@aPMo7oJ6a_cRnMx-`o9y_Byb!|J2Ca#F1VF@9<=UHq|EvYlyQRj@VD~%DP?WARKF-L+acb&Y>eMr^e%h7>)v~pd^x}z7%y?PxtQY+qImfZQM_!n z?oS|IR5kzi#!GABqyhdOjbBeI_xIvuyzAb3hh7$74vd%Cb+|dlEu~n)0I!2=XYXvb z?oS|Il168{8AkbE=^o|POtou)Sp5oE_=F(3M zKF7s~J_TNguqD5fVBMccJW_u2v0883w(OlqT@oCBUY!vfZq*q#yM9-lEx&u?8sQh{ ziL47nR5p4dJ8+YKB7RR9#bp!J`aQ&zHVj%X7i7zuQOAL7Fx67uh zzrG0c_XgMBjk#8F-T*;G7#%>9MkU92PHN^@{5_ls>#yoW&TPDzkBPA`hMeV__10k3A8;tEvOCQGVcpApLLootKPfS#X;t) zT(j3_853|muxv-y$AcV$5S0)06pWm6K_1O zr2MA3p`3YFExND#?9Bxks0xUqF8NC3LiOT*;kod}VN51w?~9pHufloql{>VtN8eiCH-L%eq7Ui^W}}Nh^Di^71%) zUw{A2^GE7Mx-0KBi06;ps*8*B#|WA{-2PP^=J}(V@rS)g{x}lk4^QVr1!WqJJ&5xB z4&)2P#~Fd~;m##Qy-99nc09V={R(jY%0Ft?W4WiR-^X9~v@_$?IZ0BZBR5gFX@@Y+ z&$L-y{@$#HmSb#Lo4@1X59F7Kih=$sW`3Bop^Qv1ai;g;5Qjg1XK~)k-x?n(DSyxA zd~p8G$1YUn-$UAw6bF>M(*5=Tv zx#M)WX~%DUV+*XKH)9`MN6Qb}un#PEvWw&TeYPED#)EAqd@y*7AQd|sKbb>E@LP3z zYZ&}}K=;hT{!4RDI}bs2o3RTl$FiG^UEq7a;-o8f_Pa)MBD!LYS~RT8^J3uf<=*Bs z^`jZvGkLA3?Xr1I&+5o|y4<+2V>|M{>RD@-#bgtkE_!DPr+lnzWc$psE15iJ?wf%7 zXCq7+YLQxzCyQ`a`bycGs+V5<0)k zHG6I2jv#YbWqZAMzL#tEzU|)A+xaQ8p zO<+3}-h@cuc!u{5RXO*=9k`ic-Iv_9syo6ps%!S^CdVKCa=e*yUO7Ib(o z&K1>+0CKQ@yvaN4SMMC=nmFseypIR_MGxoD4j=ow(?hCK2jaJ zi0clUXXK0?s$p^SC>sXVc~nO{zo?(?y#rZ)jm}6*;@eSxj%c;jFmRvKz|Q*h_<1;L!-LC-@=%=rnlw|Me3)$>I(9xx9WqTEX|44Q&CauV zL-{KU^Rve9W(t{Ullx&8*sd$TC=U&*VXyP*sWn07=gvR&e3vL|_UgewuGzbOLeTle z0cJhZn-`XPDIVg`R8F#|6ONopzx<$eUveJR`=o#Ny7?d*uaC^C2$WwzsKftWS%I^~ z<!d}Sl;=-;lw%~j_<9-}VyR2UC1kAQ9yDus3%Z%KsJ_vlD zP}rlf3spZwVIQ0)bdOlKt3< zCj^<-xn|V?%9q}F@Py0o42On}RL<)lXQ+%@_a&Dfwa5Ntf_4>}(kGI8ggE?VJBpLV zrHRU#;xpXjrJ$Q*ulNSX#jCL(>0+&#rGenzdZepn<-GG7{zHth+nQk+q9Rs@s`{kH!NV*y5Su&_sy$L zohDp6gz)V&_bPD-slt$wk<8waTr-?&3iwc3>KJ{J?r?EH!g?1;r{ueo*&m357{py4 z?9Au)avBJVw#h%h=(bUP{CqjPm-$lYUFWXr)zm)eEIj7AIYa^7V`r{yrkw|%cb&U7 z*R(^y*S+Fi$J}+F()~5}Iwy=VDR-T!*4*Y(?`W>~Aw-9CxhTJ$2bJ$?K!xpm*csM` z3GgDQZ;cJ$^{^3~24moZurXW$n?U^HG=-aBGx#CA1bzcsz~5m@7><8h!E@ndQ2WcY zhTUKrm;&3v8(=%Aewp^xyc>3a55g{R1=Jpz+B>ut+ympF))rq06@LQ}cYUpM6Tc^u zUPQfrFU~iJFO`!wVRg6>Djo=f*_-?=sC&E()8RYN2RB16ecUy(raz0WrDM`H7I(@I z?V#$K_U?75{C3y6nl-RWANgZ2qGN=69pgD>PfF6j>=m5_yK_Dp_JOoXX75_YPE5Lt zh4)}jkud2(HuuMayT;Thf7B8 z6%PrByY|zx@w&h6*ALM_UNQIQTCxE{6@^3aCC3el~k^u7qirRc`Kwg;4ANS3!ku9pu?Y z2M=~8UtnkQh5QjGao0M^pYlg}*b&j8{2_n53(tk`!CG)D>bXiO85!%;?Z4` zXuf9z$0OsszB6#Y6P^Qi!6>*JUIh0*#p7Ps9`1vE;FnNo@fFl_3J`a#p;?2d=cryH zJ_k;8b`9ybo4{ z`H+QJCZAS;q>0v=`3fO=WqhmQ*>FAN{n_|iap$h}Giw0l?{e6+Ms%>>xbZjp-5cEp zQLr)gHDOa&3o0MfhKdK>&s}%tC>?_D7mYi`cYSz1yb$U>7eU>JJtRyzHiWugKH{#A zGwbGbze?E6LUd5qnfo<|H85Wa8^IQ^4P+l>lU|p>B+Qq?>tS0s6UM@YupN8_wujXD zPDe=Hr0jePASHUvsm! z?Nv~5HV|F~2f-A0HJlCyL-}(E^y1fD17_y@1;=k9?)2QDP|rz%&0#Xsb7%`p{W~1$ zeyNDNK1*fHq}Qo%Frp(JcdA!1q0%P{Dt}%FlVLVgeC9&clcV9&a12!b%Y)Pj&N%4B zle;d;td|OoC)z0UyqjS&uDb$#-VVn?+A`lw@D6wjoC@_E&Bb=t9hvn= zdQM;L=R+NgLzr^-095=u47kK;?^t@F&O^gwffw7?Ovb zCm?ys=o}&~jn1J2_%!xukZ}pq4nGI)$NW6x+0IhPJ&lebwZqFWABD>y`do~Tp~>(i z%+f9TGJGGdgrC4y;BNRT{2IOne}t=H+0xAAhLz!3SQowywU_;R*b#1kJ>f=(-V&o* zXeQi@c>#PEu7O+Nj}Sc$zCYjx@QgClzYu+wM(0o$_%Y_I;3qH#Zih4A4)`qG3BQB8 zVVSagYlEl5z3?o!4>pJUp}uu}1vB8+P~X4~!297h@D=zS+yoCo_L(<2hJJ%TV6I7p zb_iYwe}XOH&k#M7&M)vrcm&RZzrw}vH@F7=4$)hv&aLkV41?OMp)_m`%ficHIY?j1 zDG$5C3Xpxs9qAT|ho?awl#U_x*)}?cmO$wi(mFZjTbq2lh)22WYs|VE<=Zo{Qy$d8 zelw8=BD zv_3@ftLJZlI)>t|E|e}KwIg}317v@Eqr>oen231-%z_hPHoO5&f!{9exHW%cdWXJ__TnX|M|A{Z3dN-UVr69rUpIXcL|L;4sMdBHt)D8&bDA4?*e@ z=Mh*436Jj$_$Wlbmg+lSWy1C(Y!8>fIQSHdhfl*~_#BiDfEVFhxD3vN%i#j}5_}aR zz8&y2cmNhc)ibN$VYmjWzF7;)!*#F<+yKvqZ@>ZYO{n^1BU}YH!APR2@c$`lmdT*T1;HlIP zgvD18eh$(1;_QJv;TJFk?uFC-wV^p%+W)RjEuu3a!|8kEm@tiNB!-sz@4au$rjJ`y&D=fI}$T-Y9-2UX5> zKX+{bqD=#(J@vHO2?SWMGi#2my-+choj+YI0k+XrF$%j{4CvL`i6vl8l$Uv0-TO{BK#8G z0Lzo$H$wD@pqPkwfj7bN@D_L{oCF_(w?gz68=daxA$D%ZycSM@??CBz{}oP!XOYjR z!A|f_m<#WMkHP8iRY)B8K7rI3z9aB%cp>@y9(WBzuc~hvycaHp_raC$e)t}o1GmEm z;4kn&SecIUL-2C=FdPmafiqz~Tmt98E$~tJ1AGkDAfwNR-QnYK3|s*3feYaR$lheW zmGB9;9zF@*gU`ZK$?vRd_C>;_ur_=FHi9q0u5dZjdYTnb<)r{|=jiKQ)RdRXa6Y2r zRotBcSHbph4eSrsLiOd>!J+VVm<->9>OXIUYHz7~P5bp0ybbeaI0wE9^Wl4N0VMAk z-A^CDXE0M&8{NCoIj{EjQ@9I$2IX(Hkvq%SG3EXIRyikFj{KlwAMWJu{ZRdcuV8)n z4ZIAJw@tbK4rX9J2tHP`d?9(73P zIQVw&s|TfPUiI#|umh|P2g38=2p9z?LfSsxL$DUq^J~L3urAyNFM!{|dXO;zhyCbG z|Dir?hWR4MyQ|Xx#>0m2M%W164VhEm;~mH7q~{&R=%nYJ!RVy_6gK5NePpAP{w%_B z31<3+PIE{f&1nHMVJmnYl&*TkLoDLX2{&`a6%SM=ejTlCaYwPze#t)N=k_ofc7zwg zPEhx0fw=Rtoj&@_eagTFh>q^KQ+oDDSM_K9=9^JZVSq9qf;RxRXByLHT1a z)br8DZ2GP7Q2tnsxO0}xTxQ*;3U*5n9m8>V4jciMk4M2vVFqjivtVa<9aMXm4Krab z90SL~$uJM9A2|*_1+Rze;6%6`-T*&?KB)K5o1pr;x4^oj(`~RdoD5?jeIn!kINZ4N zc>UvHRHsfyM8{pYQ#?+GipQBy`II)q^xN-&oiIyRq~62tg^CyX*_~@^=HMz`be{=` zjt6n4w0a1tJ)Z{$!bf2|d<>?-$6+>H0B?c|;azYMRDC3!k_(}9O0I@a!{1;5)SO@5 zEscM4Z+9-MnOiFVRKTtWqT>bJ$^0Tz_?E*)@Fmy;u7vXEt8h4c4W_|WP~p}6-8rfu z@4pUry8r7?_ul|@|2LuTzX|I8Z$sVx9jN=i3w8fI#GQNU?BTck9}d$I9b0jy_}vC; zLHf4lejmeLm_LCja623irDJj?{0yod-vM8MJK-B}7gYWIIn?v@j^NHMHFHk&{4Usc zggU;%ozn9lR5<>CijzN~($gtx)3X%J##kCog1qbdX6ZD11Xh5`-}J?OTi|I>`I@l+ zqvI_CUP8K7f_mSn3>mX=s=%ipV+Fn!;MtI|4<{0Cg3=kun1s<8$-BREF6MLadv(aW zs3RScU0@B!yQtA2c_plcc|5EQc}H{Vz>*&fYKSM_ok~MaqV0K3A-}{c7oSJ?rn5Qa?VM_tnr(nQ2D9_Y2nUwG;<)8 zuj*j0cU&E#aHo95SdYn9*--f^2P$9XLe&#vpz;-CL8hL_gLh#b2USl;T-rGd;;!-8aLPn z>FXPvjm}|pI#HVyIHi6Q`sC*|~j2b6y3bP?&2)7fVq%1#Tg6FhvQ&9 z$UCZ!y4aZjHAiwHR6dD8+<9o`yQlIA-Zym;aBjjK&YhcKIK0KZt}DOYxnUu{o86AP zQ*eWRE7PC61J=Sk6*h&uE1T~rcR~3>_jBiPnYmr^M>*_TBRcNI-34$qRDPWU)gI4< zec=Nz5k3fYKh?ADoG3F_O82XSy;slX<1PyGJlGH}gl*y5Z~){T-RMl-4DZ4GE>yqa zJ-7nC4>!Rra0lE9_1q6&S)TnNjD(Dx8{NJiL5;tB3_HM2-~hNCD!+dUCqVS^_@=`h z@KLxE7Q$VSZxGHNcnV?p0=9#DA!EGGJ~#sIhkF0`5~>~l8a@CIK#k9Q0~t$nzJ-k8 zIS1iy@CW!i{1KY?BP{ORB{Qc<@kjP@RJZCljJwm}5qK8-4Jv+*y4NdTx$}g~`)+W) za?0C$6$VemZ7FyNE+UitQ#vS5>YAK<-5m#LqlwdququC!&u_N0W>x2r$iau*Os^X`^Rr9`Ea(>zO zdu{31wA-xj==A1d-UEM({SRWjL}5O{VQ)5+}?8fo(I-F z)^_B_e_lvuxj5ade;D_(?j3Xbm=_*s|Le{HKgNH%s~UaVb9A5kZ|*d0+ORcScm2M7 zUBjWP)|s(B?4!Sa@13RPPwKursr&Nw8pHj zM$g?H`{B>GzWOQe-p2mKbzE*U{fGa4U6vDTDqJ;A>a3*gj0oHJTKpe%Gh-tM&WYSn zuI4>=^KNA9hYxQ%=7v`-drOcRS~g zBC+v|cU7>uF(>g`x-kzT5efJoNk=wtpJ{MDvK=`jVi%FfvygOT5|WQBMYbV_kqSc@ zYe!lj{g8Cz0M|``6>6Z*5H3do^gDdA2TwQynw_a0}<_HH5*xu1nbBgjQ`S+25ICC7z?LC>C4QA%Mt0! z)JLHCNFlOQg1vNS9)i-JSsnR1`ZJ|Fa}gpPsM4KToZid{)OTeV5SRYUNa*R%l+M&h zBv_Z`eC&$TrD^nNau4a!jM|HTVFB%~bZUC~G&^#B!|U7wyFeY9{W8f*$TVaFvJE+m zL}rmEkd8(_2MKja*^gi0{fiJMIXIfHrW=`g?+^Fb2^`m-c<+5^k zJUR=bI%JN@Lc2q@fB&r*x0q=xv;rc}ho8+opEvuMy6Zpfw(8!>KzBKET1I?Ib~c)q zwB|FK>yAH)bb!WiGI))w)@*wFIBjtKQ5|=uBIhD!;E#hP_`@zgMIRhvG{vtew|>yN zTZQk&2(1mao0n@XDMr7(OM53x8JE7c2$PP?hc(CL`0o^cwSZHItf-|Xev%T?vONWr z$3_os<)^Op^5FmNb#wVC4u;ar85~#gYaQHH;X-toW@fXcm2T=^e@t8j>X?+h;=DCk zqIXzw%9ykyT2#&LXj!Sb^}Anh=MAp8Gm)XNd%8*|C_{5}Bh1`hYipb{`H}U)UxXcv zo$Q;MoJ>DLaX|Mg)ZxZK*-CR?H2161xm&MpeTgu|O9EE}$4e@9!Qq$NEbJ8-=%Fle zox0q%&^=6C8Sk0+Q#{#c<&d@6J}EiL*hgU>Vcce6YfETQt{&I83^E`72a!+RNbtk^DQ3uq9(_tO_lwFfw2(B?ls~1R)xBkR z>z2Rbuv0wPd$JwHc)O3L%8yO&qP@hmuS!?!>zn%yNAGBM%5bBh(UzfD&b?v6Qe^M# zqi64>eN{?V+CaXTKst=aeb@?<7mWW>G23w4J;9ZiRE9R#wDIp>7PH)5(}6hB`Kj(b z8sRUQpK#5p`()nhnj5?4%f4i<_jIOtd82|dDF@wqClZE3<<}VN{+N9eg7fR>jH2A3 z`cYvCarpCw;@!&|S^N%_H)622@iv?uzTF2$X=wMVu=P=%nhop}&VFvVyt-wKYxee+ znBkghx^>gju37qTbbaK@HeN1u&COl2_E}R}c>6@Q;2WL}t*vV4vL)9fSof|@YgLtr zDAe#*m!|w~FjpS;&mS)ZoKn1KF9o@pw%Yp1GiSMG?Sb{eE9P9C9=)12kz3jA_S-d4 zR2jQ!uX^s9T| z>}T;^MtWm%bF@XK%|j0PnzsG7r0`SGrmChq-xnyof% z{q;cNYxca?*1qJLV|li&KkS;@x#sFN-5js29qgLDdSZ`j_V$vy%ci4W_xW1a>|Otd zYxedTY~kijZ$B1qU$FhB6CjS7)b)79sSefWDzNTLtXJHAIi=j@jS}h>f8T5P+GF#v z;yH`w7MItQhN1GB5BuP}Hra1?Y+j4SK2*Nx=y&hWYo@MOK8p&-H_BsObr0etxX&Ah zeW*U~CO5vlcHk}>Zh!jbyJjzao^#D!{rHM&_WHEF~olOtaE03Y}aZ2Et;Iv8g+ZCma`T{Z7yYZ^qn)^n< z;566sqOrGnii-Njs{1|NJZz0=j@S6FxOoX_NZb^xGkNZB#EqwI%J!vNn7bbL&%}|} z4-bl?%-mF7dO5tj6C56eU2z*6Ps)4N?$~&W!an$2Qt=U-Clw#wUck1MV$Lyjs=5#L zq4p~Cz5dtn;ciuC^2omset!p7;g{co{i!4*q_V@{jsWiU)~m80&AsZ0iZPuWrH|SSAiu!7)b;?OZK*4eUa=quxA$GLbIL(C+({ zZgTwL5A$Tsd121ycS&Jh#QD+2J<7X>Tb%&`Pawz&(~DuWhOdKnn ztl7Rd#c|D2WD@qP-0PH{d6d=k^tMGmHcdJujK&Mxm(UmU=TZ4V zc~t47^tFAkR5QS&x<_djT<+8-(72%WyT%3DXXf>jHb=da*t*`Hv+sqnQ~ch-dm4Ru zqfblsP@EO_uK0tS=3YI2`dc;+c<+i)uGxE6jB(AL4y^&M+1tx-pKI<${3*|!`nJ8F z_ih>Gn!R==-ZgvgmR@_>F%nO6T!$!m_!MSzNBFG!67!s^I>Mxj@82O{|Qj)|`l z!#651hp&b<-~D%m&xYGR*~`O!H_Z9fJm(vs;q=K{Audr zWT-TqjD2vL&cH5In$E_)F@E!O0V&M+*nME^>>m8GTZCOHV`ul5R(UH3v8sKGH((ze&k5L-l()9)0}IC#MDeV4Vh8t*-Tc>i%iYetq&m$X z&sp3zR6Hwvg5%kTU8s0gngqtP;%EkT@g^>g)%Bw^2^Dww*oTTcrA=_$#bH-c+=Z(F z;247_?o|J1@9xbf5O?0L-D(d8a$ShSA9o3y3>9~&*ayd57IwjL=d~H3_UHED-nI+J z@6WCHE^dGB8Jr7_uUPCt#h16oY2jG)71GR}quQr*voQyLh6o-Z^>!T9TACh}lrMka z88L|aU6Q^LX2upvL$!Z8IB(YOHikTg=h-zOy3YNM=;-@m@O78sPTw3`KoyIY?sXgZ z?SALe{&P+ieN#PG@Ax{jSA^c<3ZR~+y&-DC=V5)QJtEpd?G4cfE`x)h_J~M^+9M(x zu7o$kSK!@HdqT{Eh44AJ3a*B$;k!_KMC^jv8{&7k9+t;{+6zMOlyAePPd*!?E z2i)yP+;4a0o1Vg>>UKL~jxwyp<3~AI1D1!);OVe6JOg%v6=7c(0sBMNi}{$g+5_PTWPdUr(_745 z2u#N^dm&s1FUGzJjDc-o6R2;L+Veo+jYZsVUglev!pr9b{~iXcPc-Sa7oLy(KG+0) z3A;e;X`%acMcnUDj=oRnJ`6|s*LeL>%I1T^FcSNtQ0dRQBws7|2h{g0GOM{?0)BMA zA(?MWx}V(l!(PWU-0M5b!!QoAPmS3FBp;5zJP%$6AA>$PAKnGEH&i}+8a@eG_iXki zEr4q)Hk}1pwcZ1algly?=-sRH0)INbZAd0rPmJF2=0WJ zz+F&-`k%vLa4(z$_rtp(>%+~S9pA&BF#iDc{fBk2=DDhr-0vIayN8}T1b2s^4$6pG zyGI)Onq$s`Z6NQ>zANDbC_hewDn~cMhai41dxYK&mtv-#_Pq$F!dKxmSO}*>)m`^M zm8)4$YgF%rBj9~-9K0W14`;*4@Bw%ad=S10d8Utj`<#d2FYpmqnlR+Uif|r04?YI_ z!-en`_$-_WpMwv<=iy?ApMB&t=LJY!GJDdJ2h5(dq@~6OeWZceo0k2!^v-M6;1f3A zdBo{!Fa{RF4saFh16RX-a19&;Ux&jXV<^5HNL={X|H$lN%f3Zs58DNB6ZX`-&RdXu za?IYw>}TV=gIQ}~H$(QNaVRThE$mjPwXh$+hLC#GmkB?GH^I-~ZEz=?4L^qu!!MxL z;_rpK;Xb$@ehGhp)OEg6R7{jXvzOvG@I1`l!3OYqm<-8lKGv%{lu_RTNZsgL1dqbk z;O~(2;@ZQ;w+phK)2IFeZG(?>(GGQ}uNow;n!V0gPjB`*s|Y(|&op2k>v_#yw5+q$ z+H~J^NFCst51G2_TLzhm>w5z-1=q*APlr0$_dVoWsP8Ap)IC!UxS#jk!hFwAIZ!>T zx<$tYxKn#WonrRdU|iI9G3JY5C)gPFhnGO|u+topN6lWb`LGpc)n}K%FJNm(9Gbmi zi8HfDtlEwC*yCrjH*7TQg!xj~8FqtR;5CrnzLBsy91nZIN$^Uz0QQ9ikUGz|3=V{^ z!$EKlyc+%txtFg3VI2Z1!+5CgIMn+lUMTP0_W@@WzZEaxFdfk`9CwPBR9F+HLDf%` zU9%_6XxInySU46^mQDWwKbt)lCql};a|2uksguo~t~bLUFsoj4$KX|_%<}{5#VNSc z^Y4Iq{&cAHm;u!u&4gD$>UguK!@Y1k=KJ8I@P0@ccjiLMwDSPebE#*%v2HU4u5d?S zHx1G82<}dS`LHs46t;$s!EE?AoB~M;-(0v5s-1fh>N!i`Huw}&|3Q1VQZ}4tVL8&} zc~})Lh4tWzus$R$jsF(m)*X{JW7YECnb_z(-?0|U}><2%G$&fr|_K^Gndg;^lyHF12G?l!{HG)2L1u_;h&JY+$lx7wjNUV zo99x$c;mBX+*Z%ka}FUo%HysUqzsty%(`!rZ%>2mun&h_VFXk@ssyivloj7-cs8UB zGkc~!2CHGF?QqV8J75%~?lgO&cEvBzm??`+eK-nU2ycWJ!FjL|Tn;aVDv$Ije6?Xq zsQ$)fkZYXFVKdkUYLASzunUZZSHTWYvU%29V% z6J7ypL;5i0`osKo#}Cc8qOPxw-2p^L9PSjaNl^JK88(F}umct?6UI(9m*>DBSfwXZ>E~HIz#=u|TSg7(c4xSEKk8jG!^{^x632*?M2#3KN zAa#{DV9d#Nh_Di640b>`nuyzW;{yw z3rydpxYPZb!D!eTE{2x}T$|$wcZ2fJm2eWIPvd{SJEma98iKDM>|Q^_ zy*>ph{f9x7#R|+NIJqamgTp$|aav5;v6sMES8l&}^^sGWRr~(z0^dCpqTi`7Bf|cC zJn6&Ihx(uP=iRB%~M-8pWMCVJqf65aDVfRuZIjCG;rR! zwr5vavH990`Y@zHMA$>EQU-qYc0~84Z!LW8!Sz*3)8{w#+t&^J?Dw2iV>=z`v2O8g zO+G4qt@%H-mq1<<`6unh=q`D0%=vA_uM^kDycb3j#zL$>p_R*GqPzMZzRkBtvZx?h_)@tGfbwSRhL?QNGHU3|s?+7>!;5n3_OzHXqx*_$ekywvZEh9a z=fHw9*7Yb?I_`o>-Sd|C#%(2E8T-5&O4Y4d>cE=0)5}czAa=*Ij1d_73UhD!`TVm6 zU-{|hTW){7Pa<|vRdt`N7f!3ve9gH9)%slAc6r4=N3mwj*uOck-0*VqW`8wkPQj!n z3f`u3^mq3vsBg+wSpAVNAFNz{%Q>0Ts@&FW7nOUxvyA^IEPion<#)#IoPX7_^zoZ0 zbH(jpK--Q#|L^TdP~08^C-)MVH1js<$&1cay5GI8?^A8|rk-_ERPOSO*COlF$1?Vh z)cs{*Sj3luKA5$rVobf$=mfuE>`(3`@SnDqz>FB>lTK46)SS9{%gn^pd%{Y+b#)r= z=%>j3_%-FltsTFtrrh5#Is4hl-IslH>4@z$2Gp6$OZ7x!fBc>V#jPn{W87~^9a^qw z?M>r%T=DC+u4Cr(W+PODS4S^pJhE~Niv z?7!VPG~wr*jbA+3wRY86O+VeqJ6ml%xBb=2Ys79H+wirul@>pc+MmIMTaA5e-}Jd< zZ+|Yg=GO5aR<3*wb@sc)zS-|F!z=f>d(^d;pZ?*{2N%S0k2<=~!c*VBXUP0*Wd|*d z{^RVr;cFP|+zD|Fntor@aHa+@uHv8dWfBc?U zf6}%^gjKjTXL{exKaan!%tg;ktb6Ny%x~m{h;+YktFOwMWrv>qq1Dp1$)kTQes6=Y z(sFwQSuFSI0e7^}!|iydz#H`$ryKzh_*{IxQ9@X7uj- z`WWN2ygdjKzGF-ab1wadn9mtEdYG|dVHT|<;sP+8hjFZR782CRO17!%^Q0Kp9{l7c&uuU6gLcG@Sn_uu6dkm ze$zGo%y^8>f9;wlxaWTiI)BcSHvPQwbzJieuKNpJvvVTh*;}jpUjThlxk6Ed+)-~5?zQj$$EAzpvy}Nc+;h&8gTfdIZNy&~Mhmm+?{}Kx1 z&E^{GU+(5!W&InAJL}&x<9-|F4C61mCx{kTrDqOLOG-@lmn-YuwIxJ)ew_b4p8Yt= zW~EAc)fkQR4hx8{_)K=3$)xva(=GwlB=2}`6k^3u5A5x;*w=ym0dhvC%V_4-`=BlR zNtx;FF(W@HZmoM8*NOz$7s7zJku&T|SK3UOt4`k4H{+ep*mA7rF8907pm@dmBUI-W zg*c}hDz3AjeZIM_C?eeRIv3)+@sG-r>YKVttUtW6*v7W^b*;F>_r4zumUowE6k8rE0JGAv)$!ZOQy7B)DeYn*8!OW`=;A1yK2jS7xJ& zhrHm|xvsv$63p^nSHx|P{W_`0-u~~_ui#G4c@^q8ufb|?6^w$bq1yE|Q1?qk+_qG6 z&5X_NvTBaPF#-$=;k5$PE)^GV5T=6f&Y&xf795gXk+WH|Gk|9ZF%`8UjeZAr5Q1cYNfKR}^@I$yC?t@>$OS#uKkhxf9K3pRF9y4>C9Kzz8 z1Am0f?a}-bA9HP-pCNN-oL^u+{B#(eM#c+c=;k6=3SI%r!c`V7rHxmoZu z%nw55Kp5SP=w~zY0xLr1NHfkvGYBg|^t3t5>G3fa*{KZsLgx1P#z6YozI$Lb_&7Wl zE`#Sm>B6W1(Z3`eF~0I7L`_%`)`nFe!&AN*kYOp`1(2aAUo>R+$>=_93~$BE_^A&) zH%?QCz8W)M?m5^3^D5X9q94Z0oBI&9#;mqHRwTYp>M*GKQ?>X1d*%xiH||^9xc)yi zzo0nX2E~o*|5Ni0{;Bx|?>14nn{(&5$?a;@-8AO0iyvH`S^iDN&nn9PXx7>C=hFk8k9==ot@LrR zhaSB4vufE`|?`wZwfey?Ck#c|JXpLJo?t1*pQ@*KQ_T`FM z&oOpm>}SSbwk{)L-~*=*d1-E&Ge7E7ysm#p+8R?H)!)^PieWP~5z&;&c@h zH*f3j>M$s7e%3bn!+ggs)#l6A8Sf2T8b54s$7ai(;hiB$_E{g-i~Fi>{|B!*QX_7` z+c$P*4UVzD?dI&S!@FGHY0aL@eaUZJ-Inj|#{R;zk>UGC?r8Jet#M)ZrcG?e9O|07 z&xy|?SYzCuoGBDvU_5-_^bE>C-UlTl##c{m`{X`F4IE zLW=utUfehH2}Aidiu_aG%C&d?U+tU!SKr6~-S6Vs6JPt_>wEY%;@bxU_rMSQ9$wtH z@cmrpeG3o%4*pl)z`gI^n(Gk!4LsEM?_<7wGddaSn|Dcj+6R8~E+h|x`tBXLhrM(1 zI2i*cW8gm~26*-UulxQ#E+;o-l==MsZ+-u7XXOzNlDD%laRi##9`-syB*Uf zh3{GHmX2NE_k@D6Mc)(jos_X&N7uRjlUg0E%X7-Zj);!#G|>vn74SmX6Sjf9U@W{6 z_JjSQ!aD$J+*9BDPOg*s?-}>}r^Ye=w~b5IZL0U57q43N*1gLgoiU}+$cIZ0*wpCc zxMbR{#xG8Jl<%*9b6oP|IO9LNF6r-%GyYGFC!QQPy!*mYd@Nqghu4U(fy3^(JNt{r zqnhV+yFP#WPc&rZITsNYIXLR;`G3CpW!=@!%-KD>&tmqTF!oW~77mPfsog8N%cics z^p!oo@QvHppBLWzlv%e;fANcYJ=S0M^`HgpIb!U;Z98^RtH-xAc|CSk&y(YZ{~N{) ziyI&OyW@Z-$NTN&-tR{`L>ozo270p;-3q)%)G&YsYxYR5pa4gEKyWqV_ zYb&BNL$9mQxRTaUoE%HyB)BxZ?mf z;rCMz&1W53h4<`fW*oqsm(1+d)c9d(c_=kA+pVVMFkLe#H!VFaBPB7LOUyU{pK3!K zMf&%mINO+ad2hd5z3+SeSnm3RN1M55m7)CMyR#U7*v)?9gMFg$3N8(C6#1h9XM_FG z-d&#%!1>x=S&)-06tY&-A28ak2&aX%-l6mu|(uGYhp z4xYZIj?8z{p|P7YkPgTcu8X-VFdekdIMa+%*x!6;W?o8;eSS12LD3SN_;_)$7AJwo}#uZtiGbFeM~ z&CUJE`oo!qpA?Uc+&mpumJ2v$Bj+KvA$Q>>V!BCFQ=*A|<4-*=#NnT(uk`Zf>BsRq zp1Hp!?f9*541{)UFDX5fm{2}eIHKSTo=G@p!L6P0%PnTy(C$O8FwC%ia-PRNFbuKf zbd{L{YVze*{8ktWtox+QEN0TXVaPKskNaoVNyslgP6hjWGIpW-oq+v4#@|VPe`{W@ zEyG3n0~Bs+SEN5c>jnDx?X4~X#hGN+WFsJ&> zHp~SxZJ7109~kD26>!Kg!VU9KH_V%@`_WnHnThC#Bb9BK<^K?eKg{`@3=Z=m>_UZE z@ppefI%}NThn-EUob06dqA)5C$q)8iQ65mdS-T>)$^&Xst-Xy8{kCQs9}VuY@$rV6 z=e<0z#Ep;3ajzoW8kvJ1W379$Fhc7$vWE{Xq3yBtzx<)wCD5?4&gz(W&sW3G@erbR zSMmA)&zWJL z>>o1eb8P+LhR3WCQT_3O8<$TLmonFwW#d-5B$U@$xpiW!8WfH~MD5(mh{{*2b)SGo8Fp6#uGvh9Sz9^BpqhTo?S7zcX@n!OcALWRHJJ`?_;x_}r^x@@q{ga7-( zU%(lKU%H@vnQiV-N4lUCp3R&Kj*o5Fg^G`z*ayc)9Cq^q;zRdT_(JMUGI7EBrQFdf zPNvO_g`wgo2K(SRQoW@3xB1EHtNv3NxBx%K&M{$k+mG}V zDc!U^xDxABe?0oQmzR(7`5hc@i?9n7Zw1%~$J=u3qLAKU#yci0x?&E@TV8&%&!HaX zd`bB&mh++FQt1&Kmx?cMU2>Ev0gf(+s>AlkLgFjy0bAY@GvWi{%*ItDZbBUXdN7KU zf$iWy}x5p}o?PkJLscBR!QrtRIe9FC6qf=&3d`ew$6X4{;Qg zXU?lUt6s_HcWK^ri}DZ)FF6#3MVt!`gBP~oJfgLi9f`wcghBcCsP(hSXG)85RrL&8 z?WjyhJUv?tc)pH&Brx1rkC?bGDcnZ!kkaFSD$MN4;6&qpg?WkfZ;4^{(s~KyR)^kc zR9C-;#3{e!|7Dmxl}9G6l|~^Be_GE7Nb7pR-^|JXYhIGw8f|38yEgBej%Nh6m=$hd}zamzj9PL1Zy3}a@R84RH(Nt32brCd@? zs1!*l$tCwn6qRZe5i04XLh7jg@6XzMKl9Av89FEDoPOs&>ownbKYQ)9*Iw(pE_>bf z+TM0P-#gmRxef%}_j^Z&v5zGm@q9?tx73njt#9!u5BbY;`p)Dcbg2jHt(NYL{v$X( zQ=U6j9S4{KMEYNk^hf_ePn=c%Y8(IC%bE17^zzod%AV56-#3tyPX6?%wDPCVP~z)P zpW37IB)Un|c}o{(%+F5!nM3)OxgXIpAQyQKeIB*^h&T18{Yt*dYirK?F`j2z1Sfs- zqv|V_Gk@>#t3Gkc)*ku+GMf?A)9a8yge7nOS<}`I;o18<3QHvZ7FTx;;hewl$6)U- z{7Ty-&iUKdART)>cYOCX&^6hfb7^A}Gg4yZR`$h}mt4}R0R4=`-3OLFO!_K4e4k6w zsq;OjCF9iAwBGgpHppvjmNjOq_l;dKJUBIk(HW6>l3_bNOP_+5z^CD5@EO=1J`1mh zOQHJ9&%+;~!fuZNyHrf&uZ9KHHj!D*=`!#oNOm>f7ICh#$8615?nwgUecf8zm&W~T zP+cwZg}I;fZjZUThVy#}Wky{^jrquE?{iUmoy*=0m9M72`cQkGw}4Y&M|dZUgwvqb ztlbS&o~A>EGXk;4R?Txmd0O$2A2R5~tuoXVUI{sG_R{YTJ8|3t${(efJuYhMF!`hS zY0OmS22LxyePB&Un9MuqeW9+GdwU$yjBhT(aars%<{(48=&lT}f-2rkpwfW!am!6p z7y+9>`8Ncy#~00bg7jD(yIzRQK-_68auB=%vL4UG>qe-sFhywA=%IJBw|z96hJ6fl z{I|#c^j^40CvX4LaVNdq0+rt~AYnJ}&MRHAI8K0L;9YP6JOXcp9{=sJIgP>jhJP~d zf^mNvtOectp#$@-eHS=|;}P%81 zyaj7=j4sR`246w#VW4mj7qg}|6#mZf<*+Pas0;aR_A+4q0<)JvN2t9F6i>F1G~eK1 zyFv2}3B67-4ttghxTisV8)z0pNACHMc}w?mPsE8t@v}3~En=wy+&E-~NF8Iqm>Qz)nzOQJtaU%N`8Qn2H%|k=`%I z9{m{86L*dI)gN91`JRjUb_L(hFyHVQ3{{SYz%g(roCa@%_raT>(qR}}0B?rR!C1Hh z#=+f?bas;`U5Su9;~EZGPGPlPRVGhhzHW$x!-=KOQlTNCd$;cXmmh02%Ppz3SNnE9s6 z4!DuyolxPEuIzCVGk&7*1!9+i$b5i1rEdYO33tO#_z6@w*#obIdtn6J2XBD;VLx~P zCcuMm6#N|C3%`K6{}99;BXQ;HnERK9imS}mxT^!dfvO+BgSy|3Q1w1}*Z6x3PUZM# zm;+Bj$A5b)!mt0o;ZFYl4&^^(!1zxYF#eZ;3U^s3|0_WGUlGdxB*gCboACgJzan-~ zhzxa=(NhR)$+5nTbQ7!vvtS+gG^`7k!g_EstPkIT4d8q5O6c6r?&q5RukZbu<4)Y!e;mJOy5uUsf3;Kj!Z1>LSO<6 zg^5t*VmRyvlcDnLNT}x`b-sH%)VGsp>zHpQt%l<`)^jl%9uou4-Mb{0x6t$X<8EUs zOt@h1ua6f*onI-UMlfv~6c!Y4bo57)*XC}S@@4!R1sOqK94D>GC_w@JhClKBRaXrT zIvFu>Q}t_B(C8Uq?0Y}na_`oC<=&q=V^LIC-$t)fCmH*1UanQU>#3=$Ck&fX^W)6X zRB}g+eg3hNuT?Cl*>BdI7he24xXc|qdr=_Y@+epCtM*?Ut2;M0YsI|kwf>;)H}=EI zZJ2vY!*c0Io{Mk3s&(h*_)eO!e|F=OdGAgCZTWw0Z=Hsu^||;K&)@AGlkDb-*PGkE zyXV=aZ(XxzW8U`4i+=C%fBzkm;=Ud82<3@yzAXB5U%@-2Th8b+q1N`p2@9w%!eoE? z-txVT``KfkN%&(`-KQ$fI{0{(E`b^={ z=l&x-#|GWMdHy}uEE+YcMMd;n+&eYJ?Fm)fyEgj9%~S??Rw74{5C+M*A?e6$WDT+l z`35P?z*#7AEiwd|h|ES_LUtj?kRS%t8X?_~Y-AC#2MKJ>H$jjnM0@Nw-?#Dpo=x~r z#>n#NW6Wpl`x5J&pFP89pxw+^0N2e%HY25Lvi}PMFV22EXZ!BWF|LV>VQzy?uJ5;R z0$T)_cZ!@nd;ER-W)IgMLwdy$4&>kY&6`HGh<hy{8l<5=Z?m5KlE8q%*}id8+V$_-|HIm?{jb0G)6Rb1q)`BY#Vkh@ZjBYK zxsb8hyHB4Nw|9#7yl2uHw|=VZ($0y3I*5b~z{B~*Yam^yTcEa(+vE!T%nKRqnwEr{shX&KgMI?UROGlfTMCnE4~6MYK86VFdG#~ljCAkKRg za#xq*EMpgM=FS!7o>mxK&VJ}m`W(OEb!^3{DkC(EJ=t-(fZvLfEXNUV*FC4l$<}X? z_eJR9`ZFFK^C+>`fELwp1#v`>x1NbwZ z@RaAQwI;PNJl^-ux9@)u?xc_Ei0&U={QVOWwYrHxH{JhV)kiy9AKJfO;c?!HsjEzn zNkbH-!AMyWE7Ee$Yh}D^)uy$%_hHWYF`ji*J2~mBi4Es>1^np~kd~=yl!wOJVW@(= z!r-h;*>8toxUNBX9J$t!Zaa(DiM~&B+B(!T<$taJh`?Xp@~HeCioKO)!^fmjG8EPm zc35W(c z=*Fy7p{$y@hjgg;#vpcC@vPNR{01O0S-8_N^}M?pB>R~;v21u5#}i;ncq>E)diT|Q z?_n~G<@h#u3?8m@?#A@Oy;7BAJV;d(senWn?G z(N_Ck9n;@Jre~k*2ilE#F=g0ezZIN6{;iWccK!Ru^o!f~eS46?Q}F#gpNA*Cwsdoq zd3j%U89{*=K}ErsY}-x49^IUk^l*cgv%Wg{#4^UiuWO^h?I>OZKfV*?(&5{ROVjK(Dl1ruHyEgFK#ZmxUu!(#?V>!z#->Z{!Hp<7b z#ujOfINw>$KI)wS9QPxCiE&Ap=&#*9vnPRbaOYQ{u!{AtLuHP}xu}a5IlsU@cKrL+K6dVR zqa9x7{A~N!Ilst0cD}c|)W`iM``G!uv@;$XGtL^1)%fWTgiYgPvk^NzT}o$-vvJC^ zR=f?>x6=MP*cfVja4?L3aj*lN3Ohsf+q=Le@Ot%SvOFQ0qdZERre(3OuBeR`MrA{TXxgb1!Tfb#=h#K-P+8pan1gu zXSxoZb;A-eY6t_nK>bg(3iq~zp!55 zCf>(2_Ft}x{=HsWM97diA^XbKe((Y2{*C>J5$(rLey!z#+OHpd`QA>WnGFBT*k8LN z=ia$(F1vR?_3Zpx`?XBr{kwYd|GsZ$4y+LW{_oY_&iS^KZqCtHqF?%U{iS8ltf?e|x|?YcbC>9=4K>iN?ab$HBCg(%=5? ze`eh4Oygbt_JIFq$F&w+S#)e`J;&br!N)L$H4$<4h1b}YGo}@m##kVdg5)A^A{xum zIF|N@?~E=>#<1v!mY5O^{0%fvnlRk#3eb`&S3=vU(aG^iv56^BgZejZ78RM1Hj*9l zGo!jDXLTDB7j;AP)~#Dd_e&h!eRO(CRD5i5Mp_iRTSl32KI^z~LL#eOvl1J#3^FnH z9DMuF8T-qjE|y`6!c_sX)Zf*N^#T!7yvP3RyR*%^?j9Y_|Exqa_Sf26ecC_ITF?ki zRSD7nAntHp+JAjKf`ehc&L}tn+mCknhHLlg!UZWklm*ZxRN#<=!Yh+9#^^;h&DHZ=AHY zQsb72xYiesVHK_H6o1PuLtFNH;%K`w%Wd@`MDKO8jdDa7TE1WUdS>v+o89O2? ziNj*kRDOhd+{dSlNzF3jv*FljB{6#e7m4F~JC2Min*7)SUamOad4@P@dwDyKXUdNX zO9cLT$5DAP6g%H^v&M`AgM%o+QR527Q%?|P>3=<9ml0ETG@e=myO$7|@dR1rN$Uu! z!%46{)H=de(9IuXtghQ(KR5;6409mYn7yH*He-2a`p9>Wa?&suxQ!W$_l|6+)M&rUND;f`O4-vC|wi6`G zW;~dCnDOBGkUZvo7Iud(L#_K{O{)10=Qh}jsdDt2b1CA*%nlcgn6G-0{}v&2QcF;NHC@dqn)NuO}VZQt3YPgPjAbOg;bM z@7t#xnRIulYySP?-v6z2qrE9#{?><4QGUyM#?UwC%-Obc%`_$KGw+SN!qA=ezutedx!WAv!PKqvYDwkJ2gnGv7Yl#T-Y%=;FVBdM*BYe*?9b?n?*C-#E83#=SG0Z%H73 zS5umR-FObi|I!nNH_l9oO-N3)R{phh@r8*P@)n~sjAr!<@UVAsd`4Pk+VHHCS)oqQ31%7qS*_jQ3behF-l+j?ao78=EqQ z+;*mSz>9uQu>)@V1X!18>?Md}%WiZs{bVz~6jEpxo6T>HyExy$++~Na9`;p`P-HLR zTVEu6XeQd$4BwJS&f-H|Db}}2{_MNryYZ88NK3oiLt{d%;U~tv@LN^hVRP0@hT%?O ztAi+PN6#EK>*Gea{da`T+0P-c6gR*$LMk8{AK6FPLdSZitGC{Uqqu)POd5l2X8G-M z)+%=JI+os?Z>`OVb=ORW_R z3=1WegiG;$^hy3+p zJo<>>q<1(}wrzdb-^a6bRvUZYZvZwbgC&MBGNTj5)LdT@uJxyf>tEJM41;+3wvdXd zbmFAPBKzJ=?RzT^>)zqn-sxc#qqCKv;?l$S-p+T2ztKP*hW%e%8e@!sUvckr>)!VG zx_7x5k(ip8K`v$1z~tN5jEvavMkh(er_=tK^ilnyN0)ECqx_PMy;bjwPGqXU)J1OW zli&q(8E498Yk86TY)ADf~| zNZ)k{_qdZDc`oqv8q{Z=V=9kd6Hm&y>`gk<^|((qZn|;o_?tF-xUq}$*kwn{PH`II zW#`=g&!wYP?>XgO>*J4-rwd4v6ZpAlqLqfqXR7BcU8K{Bv*Hj@XvfpQvP*&w(Kzs~ zzmy-Q+-mvd%(*=@xiEit*KvFF0K$BOs7!r{C_k*X-22H7dWN69j+34u@XKG?OV7S( zFFpIFz5EEp-g{n=LzCZs^ooz-d+BXO(cvilZDZ{?ydM1{Ip|BiuuCv=Y=6jsJ*D>#8 zuB!~|a9tJqI)%w@gP697t}Bh5>Uf!IxKnmHABMo{P<2QR`+DiaZYO9y%Y@fkA3QV6 zUM4NzMVxO5o5NPHAG{heAEUid%s%mL;R75qByQpr!EgJyZ}hG3>2ZXA#%S(K`iOw_ zA!XUjiFJZ1Pl#uZ$bN=ve(AJ1BGSNwvnRZa^SvNpFz-+dg?%_yTYx<4@y~wtnrE`Y zrAL)B=QIF!3fDlWa1DZl)x29Fo#Cfj&v4C^DgB7Q^E}nJdQAAd(?N4*@-G@n|FKYM z6lY(*jNkS%(L5^^9+mBdh)fdhbesY&g>?PQ9yqB`{?WBFd-9MLCY+gY3HFpv_ew}z zY~Crk6>43=BsdgKhD+gXuoU;a9oB|ZAbZf8J%FO%RE}?k)1aQ=cR|H_2-n)rA@h7v zxWlmTg}uy7+$ns_51Q}yJPMirbUg-@K957v+U((T6P(X6McGBz&A#`~!IwB*3OB*$ z;d}4}sQbSN$>ZibRb3%&-4o#o$hRrX-agO6S2^Ac*T92tJvIq2iZ=*!8-p@11indUhr+{31zx0 zxbWwj6VCf~Q}1)Phfi^Ht|j~L|8MWr6VOWe>TtPkeIA+@H}~u7+x&E1>UY5xPvu^5{JOp$od{buy2lS?v#5)CpaumrTN66!$rC$&KlyS(#)HqU zu1notP4;hBT336<>efZ$E!p+IK(aeQ{q%kAuD5pR?HI`rg=A zURU|cBP++}J{7sKajC38DuhNqtAyYqUydeiYT zgL%eRm;c{9Rb@-BvZW&H2lvSS-6`ug6oq%DwLnuq{@5x$9if-$CcKSPH}Uqy-oY-(P}rPq`VrF@KIv9P7^*@#q(t$`MFVB_I*bt zB8!ln$WbKl8s=eA+ciLQ_nf}}!-#U@v~*22rDbHE zgS~%RxvcpbK0#p&!z5;GIUGJl-zuV+8Sl2o=aVxt(_`bQCe8c|O>IBMn)`R=Q|Rh3 zXAtkwT!3@0Ec;$`$IQJNK;6sjbFYNt5t;({m+s}vBYtDws}BBDG=4F!OCM)_k$YwE zK1zbQPZ(}aH-&MMUOFJ`Tf~@Fo8SV=AJ-T7=^aOndCAm5bl;1Rxy12kk^81tH#Y8y z+t1$ry}jpFw%hljtLjpI<2J6cgeSDQciIh4&Q45-&Pt0;NE;Jp=CU-$hEqSL@Sf#4 zYo(zzU+%mwmd|*f%p8O+px!TWeNUe(qR2fp|KZ84W>p5xjGje5#>|Uqj!k*%Tl{0b z$=eSzFBZx<>)oBgcgA#$(ryQRQu3SLol{)7xNy#{5{hBoKP@#YI&(~1W}@airAH@D z&i?8x$XB?aoZbd1PoNnsQJd9#=j&OMIM^{VU;D_!NHMyrS^+v-RD%EDkWu zkw8Rg^fTd0KTG($b6E7~SXM@5|0!J;m#>w7L%FxV{HyTZV29UPo1ikMJW6(V{X%$` zoguu5sj(FJ=-BwIF|jGpS&7*c=yRc0t6s2tCm2P_QcgM9Sb9}BRoAO5?L0#`osXR; zY^`Bdu*A~@$S&lWeAD;+xJJWv@PBi$)`R!4p%Y(XuHFJr8JGw)~q6}@?f!6Y8{ zy^QCR>Y0n-DZ&tbhA_mZB&Xxlq}{)&AI?DN`QcSRYo4b~@F^<}X3dCq-VJ0PMy4)#gQ&V{!r%E3)2evACyr(%AC*Dc zs6;T{^W2(kd^+u)Cx7H~%3uCa{1-EB{-%yjiOtN4&KgI5OnR5-I{B~fI&04C;cKkx zUsRyH{I`Cn-r$^Cuv#1QPxBiytnvgjV0bd2$~qeU|| zF+;B$7m3>*JxDOWA}ZU*5tZ$uXNa3h9nSvtWqVdTD?POyOzG)7=TB8u=*@R(OnNTh zcNx<2sO8>odYYQXPE^&a-HZ>X{qvM*rBQKZT5085r^R6BTc;_lDaxm%bvkywX`StD z=atr~7h7}As{fq)Y32WR?ThNid2ZK5Uoxq*@0!2?upIiyx7_>HPi9iuIPb%N}od9mNJSO4%B zap)6J7#8^-By`L69!_>|wQIK_|2u)=QKM`Ca3 zMfO&EN%duC?5+AT+0@T59Ctwa1Z11zA)e#$CQQm_R+!|6(@M1RNsEZ0`Q&=LAHJD5 z$P7Z%ZenW8w3|XZ7hf;(l`K1yf35zIPC~h#udY9Y6K4Rd>`z zE?4|4_f{b+Qa1nkeks0TR+)0bb4VR5%)5x12iryRS7?u7^!*q26Vh`)I=A#SIyPHt z+{cXO31&UR{OMTj<74P;Ct=}jyXncZTa^M zl7SmnPb<#WxPiuRSRbAgJvwb{qNx=BY&r5BYf;`)y^+p6oVD3bxvz?@c~>BHIF+u` z-tT~0=XoW4SjXdw#34nUGt9?`;_v~YIIQ;{2h*WZ#r}7S!$RUNlR_E41SY_-#38?z z-*n(XZzY7{kYlbq?Vl;@Dyw;%@=XWncQ*D`I>Z@$=X;K=caIi%juTAX9Lcez|AcIQ z8oMNqUEFxbE`lH4Y3Zc7b#1)IU3%fQ9{*xIcJUs&ZXUY?bFK2Pvo}`ji#UntkEjm0 z0ns;VLvQe}H`O2}E8|YOYYqJvkM1Hk>8m?``PDm2As1Udeg%{t4d+P2O&iLwA=@4z&p>b(aoWiKMSvt>d%1>h#?y(#1u`ASXb~DFa zM4>xlr}#N-z9eN(%oXI(E1}i~pHKYK`}peI>1$+0n{g3UA-F$7p7rzz6bGkIkjL-h z`UJB%=iQIe7;rvz*0`jpv$8T`Q#1M6vbw~ko?HY&jIK;o5FblMl)eS=u$`v~m4-Akd;r}J*%H?}@gu`iD#BL}FL^CNxr zSs3245J(>q7EIUO!(Q`Q&@AF@raa z52yX}ap`0Cs2Dt{bv8;q*gz` z>K~3a`MR)wnG~BDZH+mpd_-{15kW?OS+QATGC3r#1P8mJb^Yn(QsFmgfgAMBj8LM{ zz0=?6b{Quy%aQYurN~9-K7Zg@bZ@%&L^2^Un@dcd4bzX)jj3OygK*CI)4SrL6ZV)ve=6)&|Ap(6zojET#uN5PP8JvT zA)NCKyOZCoHfXX5_sw?SzItuzPIbuV3U@82aJvWp6X9m)n08}&T4r)qa#|`q&;Lw3 z%s6r=^)7KxyRh~U6K0cEO8*WB=eEX) zl*cXoWSh7<_48pn?sbVXT@W)DREzu&epB&rk4;FhN2;uJm*0MjC;vup(qH~{>W7-# z&naU{H|2Lbte#9J|DAX_@z8N$x?BARCru0L=nB>%kiYA}BgF4A?h_MLe7rP=?LA7S zG@WgHIqjdPZg+FasoR(F+h07Djw?B5KclRPT8^E1)jNH$HulniRj(F~@9SCr!!Rq) zJ7eEYU3y9x2%~q;8o|q9ZQ`4L^Ph;XQ!i?h<^P0o3z z)lSdxcoWA^j{U_w9D6J7rkSU`hK>6ek9|>{?6=}*+8)wTo0y_Ha`MD>WdzJFM0MW| zqz*b-Z@KqB{#|rkgV9fGuJdEgn%|YTyK$kF->u~zPC-&$2<4owJ`|stu~vMv2Ex0| zK0t#km>Ut*TLTf*TltoIzwwDn9Fd%AkJKuyRet;!Ph6B1{?b?BaQbU|>~KuQt@L^u zQV+el;=J>o-NrM`fat_qSO$O#qfa^YV@w#FGH;cgSW^cm%+_(7(TArDTw(e0Hc)#) z`R@um&nps+qU%;HeOSv9tWkC=OiCv|#-o==PWsb}>a-!8^PSU(!OnUf7oF4aSMSRY z>Akj@_r-nFR-U@gd8Rwh29KXjTbYRx<(H=MR(^5jJDvQWV<)!Sxymo<=PAFWTkiel z7me$CYv-@#8Rxl^-GG~8-k@GqT5W_4NULRM3XA69P22C>q>ykyq0!eekNcwYZmQ>2a;~^JwDp`TZVoMibJ}x& z{(@N^=cKptdpPHO>qptQ#@=@hP4z|#?49zW`pVfSA$P3m(PV6T1^>pqe#D*pw%3{J zU42(X8ODg9{a7{c`e zeoemDy~(}^6>+~6s*Cy-bi!$`-y}br9?tjd>)wYNM%(3eoxK**l(*Ted-0Cn9Ku-| z_j6%2_z2Yf(h++-rCDdGy{5EmA_0-P4tI3t&7Rz9a<%7J=@9|1hm-|(f7lVmz)nyV ze`k0r>;k7l+`1oztikZa(_Zsv=JIu4@9_4-o$9b&Q1wS|`#Rm*UZ-fB|JTu)YnuDO?Yr<}=4>RipeXozkozf)+YKS@(>hTxnb-lfA&#dS3y`HX; zI}rCtur^GF%0naV>-F1SM@O3n{rki_4R?w+>Ef;dZ?UiI#&3IFo9DhfK0Ny}xb5q1 zhYa1A{RuQYG?n8k;WT&^ybC({%wCIT)~NZ0<00HpM9iM<)!{7rx@G*f*N>ULgsxNi zEJS23BtPo-5~%!J6Dn;kh0P)TQTMfwy%gM}v5S7H8=brALUip4gM`)90Nx9)gvvLK z;S$&cs&Cj7egT`o!>|QB2HQgR0#Q5Jt@Uo#LB-caIPEoHW^I_lP2P4L!;MTl?v&mM zFbuLUlly8o9QJ@CU?Su?_Y{~76|V6x6h9_Ftt((p1UK6>x+X!hj|7~`u^Zk8?|?7B zsc;v}fnUSBp}rY09Y(@?pq?SQ@OJnR{tEZPK%YvpFy#ZH>3I$eD`o8m6A!y$p8$2; zY{Xt$W!7Bjx*+Uw5t)&=Q@&4y%J*qd`92*g-`@h2@5jMdm<_2TTd)jr<@f3EIJ^fcd_xd>9h7SkzZJgnuoogT6L%qS7F0bj2S&k1 zpu)jkd2Z?`*JE%jd>Sr*i=g~}lRRp#BQooYq5UfC4K8GQYyyw0OehFK`!%%(huV5#51ond8 z!W-dtkh;P3Jsbm%!kO>~_%QqtQU+Z=!8hSC_#r$FPr*}gAQ|vC7zKZaiIB#Ndm0RY zq@C+LxC%0_W%fZS4L5UK2CBRU!j_b~%J5oP1$Km0VP{wkYCYKb(8(|MdLOe6$Tz?2 zDs4T7K7y(j3!w7#Zdez70`)B23p>MoQ0cxO%KtpXUaw>N;qqV4<*A6wI!>#+tcQ9| zZ-DjSCfE*chRQ!%;5hg?RQ}lt?||eLvk%TTIG^L~a3OpLDqm4n++3q|0VZF)2NkY2 z5qrIjS%;%=U4Y#hMCKFRDO`J?!nGGFT%W?ma6h~reg-4q0T>4lLZ01b-x;-gKIeE6 zJPc<*^04`~$`MFgOncV2pMu}QMeuw0JUj|j4hX9$2S33tIOf@A!v8Zo!SPA^Sn~q* zS{k#)M)6U&^(-`o_Nd~ccB$;ogNjcnsQ75#tsaoF`${8ix!$XY$Obj*0UdnaU`(db}rWMxog9V zV10NAYz%9{Zm<^Y16jlFPJldX-RZCn%!1SfMlV_;Xs@v`Yj327%eY@@>}9URo%GNU zN)K1TFxUhRgiYaS*bHXC7H~Rj2^C+S>F%dtYq$jR3b5IKi8{#SGhXp^ljg4LAbki| zJE(ZJhs4_WxIc&eq1GG?fXeSGqxRYySABj&b-+<%bc9;znza+$7_hROk6uydBMadq6?%W!)ng$iVyWo{D2VMuK!yDi| z@J5&mmHxEVO#aS;&v1M{)cw*CdyR^jqtN{-VV8i&Jd8WtZx+=3W<%YNXOX$zV{k0T z`EUYU0H?u)@G`0u{ekq1qj*;MB>=IanHhozwOP20o$0}OJ`mF+~TU|l0 z8VrUC=McnRV_@d}70&Y5^+IGi;7-RK;T5nmYzVK1%^-aYv(H=)ID+GzFd6oSj{o-h z0l)tD#hv``2j%|&DE|jR`OiD4#(&yI#{Zk3{2vD8e>P&T4KQnL6#hW$QV^MMai?@W z3NMHBWsHA6LgkO2U?MyQRep}c`{4=r6#N-VuP5PF_zT_>I-M=38 z)c3}eqP^RMUuEIdkiF{MT_AlaQ;sUa1dc1gQIP$w-C3|Y{2E>We}ZA~ch~@`{%;Ix z!K>gEunBAh!y$FJt0|0y%^-E9t2v}jbhU&tU~9M(wtY^{`rVr}s1?h9TZh+6gK5!X~g!I{5{h;>m8vwO-g0`yB zqv}C>9^cIGOOKVXlWt^|;!frLc~~1RgRS5TQ0e$0R2{t>X26%A^!PHI4p+cjNSoKa z6t00vzZi)%2XE%)b>9lu4M1eJ;7^XCdQJDJY0_@fxGW&6-`y7P2&mlMl(iV3=0l$RX;1Q_&_apoc{sd3KW3V*$ zI}R(s6YwJV3v2?}!^C_$?>E?$P}Z6q)v2IhSdpgRj9fD zAgK5hAohH>=lP-M({@CrI_{*$i{XXv5?v23g)Lz%*a=<+d%#erdan*lfpwwEVLiAO z)`#oh74QHIgQ{;Ez~itXEKhhFLE4tCtKg-uDQpCr!RujjNL$9$0xJIWaon^uT#QAy zN5Ixl@ykK%Ic>EGO?oMPCL%KJa9166fOTO<*aCKf?O|uA{CGWd!>({4>;{z=y2Hb; z2Xx_oPpJIT3o6_SR7zIbev5yYR z!0shP<~H0lg41DFcn=&1bD`?+d!f?%KKLx00i~xr_!+z(9)SuU4c~^{;0`Fg?}YL<9I@wJT~qlfe@nr- zvd4UZJH_`1R6M@6uXFR;o+s5Ft>(JQFbk3S0e7mee};OlpM+PzU!d~kuTc5&A8;`I z4Ju#$0p~(j8LPb<0H5Zt6jZyt3{<`-3l)CF&7O}m>+ux+(%31l$yCIh^il~*FO}hy zu!?>CQGVNVh-Pk4*Q?!o2$89dJH_K-*a6mrec+{V5Ud5GVJOUiwc&VpIh+FP!u#MA z@G%$$m%;{6_4(ECeDY%(SR1y5VelH*6kZ2Az;>`NY!6dl1e^vtK<&TV5k3ez!+Ed^ zd=mD6ufd*hBkTpGw{HBl=Mv2vqvBm3`)je68HzjUDGD}&BjF7&9X<$efl8+gxBzBB zmGyD(J(vx5!}0I{ycK>0Z-YO>DNyzG9k42#3Pa#DsPcRljDR_?JG=)Dg7-l^uO5VI zx3E`(X}3HC=^MD_!2NJ8{1QF_zlD#&f569}#^)Y~m0&)+2tEPzd|Ln;!G-WT_#~vw z>v{^(#&s=%v_V~qp~lmfz+=QGpT^4D<*Abc?))S9nQNz(%DuNrSpKOQ+j!_zCj$lr zoT&MEx9pLj4?VW{r%CfedZL6#V?Y14l!V~&$yGnNdUy5FGdDlV7>}_(I{Kr@Yjd|u z`7-{Ef{dUqj`J+6D1Z75f8zVAt{NP4GGgMU>esBem_D(w@BMhoy<7K{dw=eXMNwgW z8@*0gjr}(-*Q(w1)YR1zhE1vYapvebw1tg*{;`v_`%pJ5Li9=98 zZn<(_wg2K+-MP70E9O*<&{eO6VYc-z};_M`p9QL zzp?G*K8s!*^VYiVjNKde&u)A&@4e~2Ew6F>;`iqb??m|39t;YoenHpupzqU@zJ0D&9?f&qHle^3Gs*_9I zZ0rLcUbgziSDURGJh}JIfw^}NqdwE@91?^UqYm%1qRD~tuF1n0||5W4t{ebr$zq$OK z-Oqn->#l}Rw4`uuH1-RJ$9`FL-O$W?hxD%z*&~L^ARtKoly#NqcgbVvZ%t|uwYx+6 zs>`W+jD4SViHUg+e>tl3!sx~i#4N7EGsV~!e1Fg9;YqJ8-CSi}-j`iQ@DLvnEPwX2 z-8Agc%~?qgH)uKQtCLSGqf8n5`@deg_UlRu^R|u}@bQw=i~7;lHTD-Qi~6cc%I0R1 zbMLPE;;s(qW-b|jzFG9?zJhm3x17;uLaptG6Bd{`TkL0#eJ0_LRdt`LIP2ionZwdQ zqb*lW_x<+vfV!)OzjyVO4=0!G<9psWo950ao%>=!lKt#DUfolP?a&w1o z`rxzQ_H1b!w_%IvD_|e?^?N&BD%Ul)SyT`)W0AD)V`%8Zpx&n|!za z`|B{+Ekuu)9iy_4R*!Zr!j4t{lyCWTUYk zGW@{@GCqGYv{iQZTl4oEzkzy*b3p+iQK4Ti{NuH+>TP^}&cPA=o}sT{>_ZEl9ul;w zWWU~${dyTQC7(QfUc0ZZO?_|3OVPulI=6V`dEQ|Rm3{ihS41AEH*nrfztoC+>YdxJ zr%z<;r%lQDIBy^QFG^>VC9%cUtbpZRtZ9`&~(KWt-R8K4D+a zUkkd8ozsWs-R1JUpSa_UaQ6_%ab=XBcHc7_Pc-i;fv39JYCKG-Rj(lEt>_< zW;OP=*NwZdMaTYuEz=fnNvQZJ_1ijQ|HI;rBik>VxG}kInHB?Itwv|%H)H?Z{ka$SI{H8KE6M`k1Ik;6zB zgC9eXnaFnJBvQA1fU6fW6-^-7q~nFTiP2q97ZB3 zNDeY{DB}>w9^@2K^G5o2NE9*=(H_E!aJOU={pF{aJ56M~eFT!k_)jcjH*{i3BFKn8n=r;mMdX_P9I8*vYb|U+c zqeuw4Z-I0}(vh8rvj_5kG<1!4f0tJKMJFKHNDza?7O5-p?}PJnNndxpxD8GNFMbouv4RuD0gA5NB<^8#{k%;I*DThjYH~bZSj~9`+xim_7mK&4A?5u_LG%t+n{G zp})OlbzK6t6j3sD+%MOt$G z`peFytKxTvmF`;Oj~~-fy3_lP5zyMRAvTVeXL%*XNd)VBH_o4FkJw1h^@V%HO4p&- z`^I1Kb@ohSKExP}VOHjs=7Fy!zM-LKi*IadY|8iviS`Q&ilf5l$Cx-)bCn6cyteVP zZhT5&Z0eYF6Ys)spB`_e?GQY?9I@Y@^t=@9#Lf4eZCxW>PYN<=9?v`3o|idwE}U~# z-b)?B9-N*RqUB#*&UyPslh(YKr~Gv$9ZoHa1I#DnohEPtY=aJCtoYjR9r-I?CZF4H z{8(kI!1#39KTjE3&ncBL=`*mNrO)d-bXRsY`aBAY%SVdiNzVH#doI%5pPu!umd3s9 zeLBo06SAY9Ztp>0ZL=xAlkmF(!rnL0u?b^iQ{%1o8nZq2Y#3+T>l>?i*jwe+?5u3R zKv($gqx_7(jdz-GXx_~k0{x}2u8H)y#z{xzPv3OZJJ;EifppUF8_t)mYjo;)U&_+e z=)}>5S;b|&Yttt9-ODYv&bzA4JLogZ;Sq-Bi`kQ$rj#o_h<2!zUT4S;+I^Od=gH;T z$&cq&v~2#_ysy>7R6tA^EMN9>#?G`ARRmFJxgQf**sAGL~zdcT`WB}9;#s;~;zAfrS;g z05h7nT?zZc>xkoi%l#SByfBVRXVRTkuvHhV)Q{7Rr!H8;In@OU?@oUEi+2I`-tpG6 zWn^u*k%?;<$w8+Yj|8+)s~j!Dl<=F{;BY2y@FCx2PzD8|@HSD9B7Eg#N% zn!PIG0MihW+Ug_P|0pKRxIcrgv=e-$lG3zCTI5(_@`)*blM1@cr+3CiZS%;#_xlY%;wjs}7HW#ns_XUcSquUs}4Z zQC##R*VtvIjme=R>e?QAVO>CHP&IJ)pnbJ>UC_BnHXVdj*5IQG7}Qyz)H z-U_=_rr4A-BNjVvy-p3p0>eA+BlYaelpyz=bzjCP9t ztL=8hM``Gr29enLO9Q2scN!>;G1x^DX1=LWWY2h|mp{FxWA9I|N;hAFKR-AZNv>-Pxb&a>*(?6z#$yP4cW`YnKdjOQ8mCMWfbbDmpg%I}A9 z>#OUd*!k*OdOeA~zjwaX4%YLlPr&K#e5)PouTQIVR(sf6zp4vo`6Ipf>!&z%L(w*q z_5AE$!e{NbApKd#)_x1lJN{aHrg!|Was>ttBc1civ91N?XV!?P zL*8F;Wk8K>QMXuY#<K4Y$KE z_%;lOJD|pac0$ElI;3><40%t( zyxU)q0>e5ycWrnXvY}SU|o14tOsLZeV7Tu;O(#h%z;DlATr}|r*gwm4zpHvGHlNAZIF9XSgp14cf*w&-vbL^F8mzM zfWN`}A&+*~15oi%y=?cFO+Q-q4a6=5k(rG<^{wZ@Uhq-aA3hEh{`pXTP*%(u@kMYo z$IrpTa4D?E{ho&^zc0Z4@I|Qmw?^zfsOg*P{-v>Ngve0V%-Y;npyK~3tPfW~U7v^8 zeM7y6YwCxpa4I6R0e7kwHp1HQO(?&&!d7q_><72Qq3~@;U1;9rO@{AstorgjmG?k$kAZ{F?L3l*+##O_;}K9}M}HgeTPWJnVeE_7td@mKbB%3pS$#q?!# zop=5^VPE$%RD6Dg5%3>S<^L2^{-VxtPlS|R6CU|%x4})?`ufXzUnV?Nq5S3jFY_)R zW!~MHzDD{ZV$=M#7p^aAtJ*)&2JT5hj+l` zkow%b%X=r>!SOU$0Plid!yHIjyY7ahrFnN0-I;es^*p{8d$r&0gU4_e6Zrq%8sket zd7cDZFmq(sO+W5F)?{4t+bfnG&-(AJF+NvoiHlp)@^@Qfe1M8HDB$gvyFPt;*o0j~~jCKkq6d`(|rGM?HCB z=kF(9PRMxh+0{HCvZ@(eWlW=0UN-*x!Esw6yPj&imrNkRAtn zy+3C$Z8&3Jd0pi%kE|S@`&8t{#-*|Xc@X4PkUxh{29By%YwLlkCquq_V(IHV%o|aW z1qI|xALwp!;Hss47q71R_R-s}Vs8~5G(iE~pZdP)sgs@W?^ODduah5ri-&5Kai9Ch z=qY>KG#)=^S%>Y(JM(!kE;IJszl=}n-=|+p;<%VrgAdfYooA4-@76E9Mw9qMt?$n3 z@#;;-%M7NCR9*gm^Hh~By~>t~tRLJXdx?Ae2jmlDpFR1!dbR(j)+A3VulNqS^16Em zZfg<#{&`={`E^e$dVBQ(+26IW{;6%(d^k34RKH;_Ua)ut&-n{wpIy1;)lK&vo%urG zv+thzu6CSxe+~NzeOv5%YelP-uT;BalxyAEzVxS!`va>tes)p&i_87-NSl^jmwduQ zdZw{oI%s*wdrx1UGCtziyqhacq`~%~v0u`2$DvX2L0LD}fBT0zKa{5rTR%ki{pD1x zJGOoHWVH(4)-1ESYC7dN-q_zCea)8CpdpV`9=2+3yK1|;@JuQz_l=kAZrnZR;*dcj zU-|8RcSvLUTE_j_cb47NX2zjMwk&8r>f=AIoW=X;#(w5QV=Iq+`H_yl?jQ71^mm_K z%(MF<`SYJ&!`z>SSWrO3dEHxm-}}{oGQIlj3~xMX{<&M*%zL!>Ke0^Ir22Eidri5m z-NzGBw(X&hN}PiNE)8r|Vdk_MD?Y!X*BiHdJ(R}I5o7;d`*DlfKDn#e>k%`1PrZK{ zjh=>=$o&If_J6M37fBb~9-6f>bzMjU+7`zC@p?Z`3JCgY=!Y{GRSmzQ5)H_$#{R_J z-+kNv$b~OV-1^g?s}J`5oVKZ{XNJ{!tKqi9s<&s4b5*U@D5fQSvYPTg=j4ccx-YE# zVdkkijehJiv=?jPjQuA~?`p8_)y=*4Y%H^>`;3dRd)V0D9`fsq>sKCpb8NTTy{bfx zyA=P8eW|5CmP>Cw^umrcM@@;}GM@t46~7kx zQ&XQeSw4B_$Mt>*oVu^q2VJMG8Ae~XzWiA}{jDpehQ6}p#~UM`t1)j$zS+0W6~G2PodzmvMl&`*eHjH$VyE@SK{51ekrX5sS%|Dh_8`ZQpjg(GAt{K~8Bc}z zh}IexAb)1PvDP>{YmQy<^nnrIb;nu*?W{ds!f$8&vDO}IZM4=+d#^!W$nj=G>yQs2 zXIqP`b;w$G?Y$PcZqESEdgQ~L)0*TEMC+2ZKKswEOV&DVtxf)`>ym>~3fCrUy|?D` z<{{4dWbd`fS_`iA$=+*|wJzLQpZsUmCO1k)r?h`N!vrK7nT?dJPbSa(n@wr_zu9$e z*Z($UC*U}oVj{{NM=zpd;wLgfQ2MbO+adlrSm$JAfq1zS$p>mHIbGt*gd%sI_v z(OmUoLe0FJvv)k*H|DeAU7A;O?v-WVi>{Qp7uB%2SESFq5|T$G>-vA?UhV8Pv+U(* zOa`Rs?b29x7XqGFX01$9F47vv zZC-ZGY`a&z?3!a|=Hc*X63;KzA$WzuS|h{WLiS$asj;I`yw)a0V0TB5+dL75|!m5(~2yxZ%0{i$VanbP$KIcETkB^fN zbw1S6omm&H<1O~F_S)C+hhE3ZZ%!Vlt3rrri&Q|A$A=K6pdH?M+gtb1TFmvQ=a#Ls zvvLn!o3PZj{B}8E3->v0?{%!OI_u#>%g6`on~QW)TY4RD5X;%#Q3Vqjvzi}yKoK1&3?;0 zWsvV$v*t{CRN9^?Ov--|xU;^iKwULlF|q2qZXSEBGAOJAEw|PkiaxKbdQExXieq8D zrtmv!SXN4z7|nmGUReo~2!H7NXH0Jsugt^|qZ3oJjE)qyA;zcE{&~_ohEu+29)_J2 zzRcta)b74t#~IUW+%pb^s97Q{hq!TNw#v2oUm0!!w)*#O| zCrzaf`&?FRMwUk(mR-7uld}%8pc0NTTX?>yo?Q!5h*M<28PjeA?E~vw0IpHG<;auM zjVE4tob!#>Z0xKsS@LZp4u8rZ?ibs)f;kHfiC@Za8sUcQ9 zv&25uI}bXaxZBFlo$TX(*vGfn?o&Rt&S%=kQ|)8tnSIzk9&4Zf+3UP_`3R~^ATi7_ znl%B;QCjuDCuhw|ae8UxU(H8K#}0_zX&KG;L!ET8?8Z~_thIaL(BCsW27CK@V5^QDuS|McGpoGaRb^T)*e6 zdeg((6rO*j?o^v6g8LO$KEevmdGdN|kDZm*ox0UK?}p;WDnt72Uz_0ZdyD43mG-fd z|30&i^<0$ukWVf5PX1eJA3N>kjb7)y^*FIAH^x*cEq~A@9EYC~`_8CG^L6{^q{P?+ z9+lFg($tUf)Md(VzIE9U?7ZtT>9$Z;XRo7`Z+T(5hnTvp67*k z*;AS6=e##|zU5OsP%s`rCUbAs;Xjowyy>37!fNx0T9YQa)Q|C`Nhl}1^OE#im}jgu zu2WxF`YlW+`RkodhO`FbQh2_+@8}GXpH< z-N+H9<8ih+L}{TgTJcRcZlqxH#W)wxO&E6VNER-1Sm6H^Y9OKhz|Lk~_3BK}2qYux! z+{!a~IQNa)Z0xMKSq}}31>|Grln1*a_P#yuPX-4s@?7Vsti9Z*$vh$}2{%q%=&$XS z&Ux>;RBn|%R(RsmMvo>TIhMY=K`Xy|DFQpEJQwDnQo-6Ncqi*7e&zgS-xxiZa40+- z5T2*B>c_@1-GF_m;1t|$M;_;Rf|vU+j;*lpbjpb4g%j%;r!>`dx=(e|bRF()`QEyZ z^qkGHbssKaAXIiS-geC_e;hwLYVCgc>)Dg;W3fkH7TPSWUeVjSJ>HbPL%fD1*F_ZS;p6gT7o!lw?IO9X5 zRUk3yzchklp!9Rp(vQ_Hp?0y9k!kcW1UG(+XM8b&^VZln>CbOpov2kv(7n@B0$oC+jD)P4stx#73x4`?*FlOE^sdj5Pl8T;(Egbghh z-J=`+cI;-yVI|ws;xbp885?+Bjw!1Ty|OA()0SQM5nFcCNw>-}E5v>2PxibY{$0%4l>Tyn6KFN~L<|2Ev!t2Fb2~)fM}^(!vzqPtTV=+(TaY z-=0@_Mc@}&wkoeE{EOeSTUT#x^Dpo_P@3n~d$sbvjW>RcJf90W*u!JmwRfTN-#KdX zKd4;uCt?(`~jfC z7r)m8s<^2`=l^2s%%N~wrxpacgX_$p2p-5Wm$a#34fA#Y9LC+{I%M6Cn?~gMhbqC%Vd68-e)1c<1ifs6kwSTr==HzCMOv<-EBXF(Cvo^X= z$`PoS4(C-b&*HcD!+)4KMVc36bs^MlTdPjw%+q<;zB&Ip{d>D5KLe?R=~{f$56VEYc6H$l4U{SKq& zFX5W6%=p0H*=zMkZ9@T~IX&Hb3V+*l*#c4=X9xU>^-vA7ufI0DUnX`8qi3pa2I6U7 zzf7L)3f!-FtRkI`3HV!EUn_8XeT>HFruunF;yz`nAC6!=j1ucPSB059>Lv|~a5q5o zUX_wM+VnrFBg2l_I^n;oJm$I8N9p_rp4%u8A&h!vA?4#e52SovZ6r zKb5DY9D(*WmXpDCPr4L^pI=Wj_RJohlsn9;DJrK3&f9X8&Qz&BlekHVPIJbj=4R)a zwD|8aH80>CM|9g1z&Nq4*9Z{NF% z=UC(Lv-*vGdOE1E5%>qETlw$54{Y$_%>G~W!t4(=ZR83Y=ReJVg8yY2^!!-D1wY@9 zzs+|$d!w{Q5H7U+QC!=37D#ua| z6EC$nahwdX>tPm-C=cT~7o3L*AB|sWYiSf-x*l8(C(Co)M_s3FS4?IGGC*y|3Y$L1 zUr+P7=l0v0n93&o=6rB|t@;}`<+zZ1Qu#H2rmj~p;e%`&m0X}=7DEyKU#a6tqtX(p zSAO00`vbMHlgOYr;&>6^XV^HIK3DnH3PsRw#7d9yAkjPTx0kC!+~0?|Bdgjx@xxyl z;_epYw$G?iJ)A!55RH#)S;#g;Iov-G7nQNMF4C+e<2ybMOFtZ?Q^zk%8CQhN!MO_i z8}zU9);MAtgZ?Juy5rt;G*)I$JVP0Co!&>h^@@(xF~-tXXr4yjF4FN#dHcQ27vWIc z>!I4rjqqN$3C@8p!3FSTxCXugHGj7SZicVI?Qk3X6ut&Ohp$8SF*|QS*>K+hW8vRn z7x*?zhdbd&_zq;Buk$XP1K)#B!d(zM63z$kTlgV72>CX=iyZ`q_4O`x4V+J)_J;0( z9pGMgE&LP?hhIW{7jYk40QbYE;8*ZzcmVE$-$A}H=^TW76Vf>Z&x1cezWwMNftSOd zA>Uebet`qvZ&2$*k3p4NEE4XmSyP{){HN&5Ix3)z=dS8g7}R_IX;9628Q2Pzg}RT6 zc97VI25UjppR?dNSQ|bH&w)?C zI&dYd3pc>?pyE-8cx&pMFZo;X(9ffj5FHN^RrQ|_!A9_5*c{G>J>UX31TKWRa1k62 z7emdlJ_6@K;$m!qEQQbGehhAb%i$-GIJ$e`lTh)BL%g+eW(}RoWTr+i)o z>%(VYL%15oLUh`EC-6Bq0{2>|`>GClYu%jI{H^;^yn*`qBH>hDH^P>1lXqPPe|u}u zj7=3?R|&sCh>lkXr+nH5Rc^1r2Jm&LXTAY*;G1wR{5w21%-Tq30(aupnm2U8#50_~ zy|rUzO_`o|KG&7SU&s4|Q~E!Kbs%|YY!B>#(t}Uod+;-O0Db|haP2-g0`73l z^Bwfd;4ipUpMHgzQ0?I)cnmIvzeBz;>ihxuwy11yx>`$jn%DkKAuZloGqVOw`BDwP zv4{@x&6OK_2j+XXwP0J^XT$!G_eM7f$`-@Tkg=}O!}^diP(SFt3uSwOXFC@_&N;jn zx|hR?U{@#`4AQ4~{`S_1ne}6ePZa)IAE$#dHTodi3m4$#QwYWeiEJ=*z)jofrofKy zcGw9%4m(41+M!J~?K00aHgmecPw{74kSSNTv$$1x7SD4d;MGv?u)W}AFb=kd*FeR) z54;)nh1fqZ-yc^yj6DRS2Ls@1xUYq;L(=E|4hKTD%h$tjI2c|CZ-7l<0&D{lq1x$W z*bAmWzB%lq!XYpXE`S;EaX1vNg2UkRa5&WZJ9O0K?-J4)Vb@NX-z1d3HSn8<=*T5p z6-b)gj!?EFy2Ej>4|Jh)W&)fJC&Jlq5~K|>-yL5Cr{Jb;8e0+Qy0H~;2I-!Pe^WRO z_J-t{tKWmCL)D*q;AD6&ls-iBx3^}=tYuPs8{!{{zm8diQ@wovN+0IIZty`E2Ook1 zVG$e&7r=YqLO2I5f(zjza5H=qZih?Yhww2--7z+t(0OCKsWE&4f6Cn0aH7o2cgQIN zXBGaW#n^JrbKD!Ox)D)i2=H@OyXz z`~kY~M>rK8hH7t*z~|ska4Y;7(qc@HTBm8B%=@UpEyL(}MsCKpitONN5vRfBYH{HQdwwn^5Y&MO8e1p-w z7dC-&p=>wJhty%0Z$LYIgWBB&Wy6VYEjz8?ukbRcwPZ0+!nPes`9FcUr$6w zTf!0CxdLi=Z9B+M%T9Z!pF#+4^q;oEyt;LSP4Vvpb^jfRw?@jWoznd^o|4Y%=tem8 zx3n?le!Zc_NpY|P)c4O-kH}-wANGYsxckGEkT%KK@M0`!Y{10B(lzHEfN04eSG-gQ;*WbRm6_X>ZrT2XMat^_(e)xBkbh3(|9f#~&LB zSBWs2;5qOm*dA_%z2M7G_jm>BzFVOBp{?EAryI?)|K5PU(ge~B1cscwCDxROfB)A8v-P{Y8z|Y`v z_yv3d?t@Rm{ZR4PKt6cucg(sT<%`B!LQA#IkM2ze(n zw$bXr`*EKSABGX|Nmw6lfDNGZxFJ-3*Aj-4FRdVBK8L+>X57;T&c)5UovU`cEu>F! zu7LC*PDj|1ICg@qVOMw+WY3&STjE>=spAgsgl;Ch8jgT*5S?RE{kZ+DV6X7lJR(LyP4DRyHaAz{)o8ZoEkZ)@{ zx5Llj6nI)W>ObV$&CZ>WZ#Fx3!TN9-jDyo*e@GwWrokC-1e^);;QjC(NLt;6a1LAr z>5JTE<>~L?rI0*uyTT&a8`4L){otdJxd#V(gD!Iq&J%DiTmgB9cbP~(s7Q1@Mdcxz|^<5=Bi5u)R5!Zn7JvAN&-Q1yqhHud0RxDxj#@Hw~#Zi1h~ z&)^sEYxpJn5$=bo7hl2i(etmN-ebOjyfZilAY*aoJII*ZL6?jzxbI;B?jNAy&HIwS z9>uIvQGP_=Uj=_1#|c*(hL^SPyVc=!xY0fHzFP|_KhA=);MuSUo&(ih)qzUKd2l^4Oa0F}&8T&g;;R+ZHx4>plnpueb^c@W^md-#sbdekiOoz0@9~D?IC@!(*YL1j!^NNjd*J~oW1<5{0WCDdmY^g zr*TU!sQ#@tYz5<>bgB;=1pC6Fus^&F4uI1jb=UOk*Fp6c1EF;0dZ_+=5L^cb!(A`| z?uLm_@sppo#=)$8Q2c7+rM%XWPB`gZHtYd&;59H84uO1g#GL?dg6g-%z=iN;sOP&- z`Zxi;0w=-`;2luor#qp>6L&%B9c_#mM-@Wp8EuU_7Tyad!kKV6ybr3}Wona4uB(G*0x^1DJIJN}uw3v-~+8C7jZ`4mN@>K$XLbupL|vuYwz((z_9AobeJY zgqz_!_%eJ1z6v+M?eGiuI;=o^-hk52w_qdqHq?99dr>8Bpa`9d?B^U>``E?+${spxTW(Q0>OKa1=Zb-T~1F;p5GL&ow>6L=kL3iW;z4fA1hSOob7ue%bqgp9eI z%ivcq1|Ej3;U6#-UPhjEfbC#M*cEn${a`mZ7IufX!yfP+cr~O?ae6`8dZ#yh3)08A zyJ0_Axh(Y+)`kOM9e6El4&z~4cpan-aE8FiFd3?!O@ZjRLm%lr2h-smm;uA+4>MsD z917dOVURdF!=d_B`c$_7X2V-xK3oQGhG&;&{15BFaqvP&8257M!dQ44%!IeYNpK3B z1@C}M;57I>yc-^c(;;)(P9ZE0XTodXeegy&3+BPu@F6${E`@X9)9@j<9X<@-hDC5U zTmXNAi(z<0#{KYWxD@t-kHNukC7c1DhI8R6xDY-A7sF@abMOWD1$+@6fa~EA_!4Zu zi^pcz3BC+_z*k^j_!_(gZilzQ*Wq;d4%`agg>S<5;4X-LFt<@9`e)b}ehiz#J+Kqp z3sc}{P-|U2hpN|VQ@r2P&F}2e`7`jFgy`5$IBxG8gpu$N>ixY2Yy;2qu8-zk-tW|!BQgD8L(WIyucJ2M^qzDstPATxoj(ui8RtXYF9LRe z^anL~CihHB3m!y51sSQj$Jbeq8Duq|u} zd%#xk8pznw9SCEf-m_Z6Y}f{>{ca2If>*$MVLLb*c7V*0Ih~;Tt9x5GNekw`d|M-o*3m^d25>BF2gkuKa6IegIVF?oL{r-C){>q0M_^D6VF`aPA-$Ga&(gvD(Hyd7xdk##7^WZJ; zL8x)rLvT8L7%qTCQ0ZR)x4=bE{p@1MZ!6BD@K?ALRv{kCU_JOaR6aZbRW>`AEPI{y zDm-lR@yw-dCzY8xty)ykvFWeXqYoyc;bA}3{i56Gp%M2zwCu-m3u<5WGv#dj7u=GS zQoUm48Sh;7e$C-CH$O;QV*C#ce{cK?Q(vCAFL}$Z-0&}tP?uLl(W{?Sczf>jC4-`_Y5WR#X#5X6Q?Gv4W0RgAGk9X%5Audn z2@e_nqQggDthB3cpZn)LwepMV&-hn{E6b+qAgwtvi2zy4I08Z_i8XL_C@M;XXCbx@LFNO~0Jp zvd;HsuW)B{qKz}*k1tMsugu~8m5<-+c6n^e%`_g}t0;U_|HOUQ{&;Cd>r1Efm~!Kt z2N+`-|C-0g6t!Gczn1fG?WN5IzlJhjZ0yNISw}p8NXSDI({c`-rzvpcn)#aC-FE72V`TNXgQIW#KT0UL&jNQwY z)fztL<+(GrOS@iof3M|K+Dk7}_r_r4Twi^FV*Umq< z{QPon_uARHMfaHpTbkeW2!F@6^B&my^Oo11>AmE+f^F-&Q|>1G?xx2s&U!U{b58R= zMn%2Zf==nevrM^qzk2$ZPh%^rtJ0=*@{pb7Q}ItT z?ZA>B%{trT1CN7{~ZW?0Pgld~Jsp@>k!r<+2w(ryo3JE4cH5 zcgdTZ8R&(FZCTZ!N87|1Z+<#{%-mj6ex@IM(fE&_upS-&C&Dr#{d0azW;LXn~&CTzk7b_*jCLM6W(I{Cqxc8yJg3|Ra#{) zdpV`jgS2n!jsN${Iu32WV(g~O$Z{?FKUd>X#zn^eyFEh^f69C9i)Gy!)|%Pkqdk;k zLp`_Sz%}(^-x<|p{pRXRAIRw6mNB&PkL{Z^x7_V3^XtDe=Djn|Jf}HplZ=1M-=ovd z>~rt%8?LDO-jI2Z#Bz^F-RIFtZ_gOKXji%GRz>}BcB3jUF&An4_pML(qfvHj?f5yh zKPg{-#=VT0jemN2`;p^cY_+idD~Fz$)`{OYoV~`s?VD4k&24@Dw0<>57v0>aRTl4V zjdcIJzn$6t^yIhysQLPokE`y#dOdSNW<309!)YJy{e9?&(M#T6@b&Bz#w?F>ukf%= z4_^DnZxc7ZIH>;AVgFg1z~jSp|FG6+QBOG^9zVU}%%;_r??lh3Fk$QtAj z(l`$Lz{n(I9kL&Z;Kel_8I3GK_8?m56NBUa%(-yBFqyD~aR?(@!i!*dBJUuGY~p6YsfcXVE`rVo z=1SmUq)7Kbjv^I@@Ejxt>4#(?W0Bd&8e}JO2=VO(Z{@jrkj6ZF9kK(Fo#1{vKLeS9 zY({n>Wz%?9LZXluq#u%l6e3HI-H2=h`*wj>@%Iiywt!^^_+&PKr;uk^q|rt8Ai?&3 zGZ@!TLS`bXkj=;*(FS_~v_$bTshWy9v|C)VQO|)|( z&ocu2@7MtD<=M*BnkXGtAc{BLh4Xk#baS3a;F@lTm+vMYVo&4u9sE=#I_?a!Yps}kTh zRM_dzzn_)mmwIuJym8BwtQU?@|8?8M+;6IMy}8RvpJ(q&d39iW=46cjMVZ5@ z>>u_?yOopU!tTo)*MaqA^%efkDY;Lb*<Cfg%{%n3k^C7|CK{|%}KYi$(>OcSepR}Z`EZJ7EFaQ6}yT5N+v?e;FqY9!p z^Ll5#5wT-I@VkFn=4h+{de%u3FwUvh+dp~dF8&r!MZ(#4?lj(ki@$fW%X@B9&TFmF zMaaXvfF3IGT+eiemumBco`fO1|L5LBaP#~q{c++Eu;UQTxs!flhjYPp9Axh-7Qb7= zjm?2%OxC9af3bs8CJk45^A)psH`mb|Q5u>cN<;L*;Jhm>4cJ&FtmaGpC*tqVw{$B* zBslb*e>&0%(f4t3{w)5UQHZ~ayX-#{=e@Nd#_icZ)4KWud;h>UatcG-4+puWGk$(g zl7ez1knh#tK)8_jt~epS&4cW+<{7oob&7L_{y6dQ=7`EwKepJEU5W2GeGufQvX-3= zH5v1Hw*7Wf^T1b_jIBz}{h1EQCP)ln7Mtts_h^(~E%7VOUWW3q0FnJ9Jv)}alWNFa zY%2*blebkDnfM!fK*4#JQBEOPLxrfUCm@gV{D?kCDa|HhgkYW^T6q zT9U2R$+@XA2V?YNtGV)o{{l9~R&dJN{wr6#(G@E59q`Y}Txs4#m?fsnJ)3%% z?kdO~Vajw5=WIK9;&;0uI2WobN?)k1_;qd+bBXpFUkPdYYMY+z5`KiqZ(|54@GTRa zi{acHqfh2sc20g~_J};KowIgu>~+cdnaAY+r(XX1HmA;dv{>gUocwZa_+mw|R<5xR9Wa+{%CMWRJ@E*Xq0;HwZ;az_ ztAE9IoZ|7bWl(%$9NbTuG^<~;Y5uePS@|#KPqpPG^QTRaTlwSL`i!kagg8D&)F*s` zlVj?L+AEt!DWmz* z=s^T5O=qMZURX1R@$2j=lTSHG`5AOqY1w9+;ioZDgEEfLG{!w{@+dfsS(zjLJJUE- z15l3r)P1r-d;Xn~DMz3j6FC`Lj>>cCbx=7r(>>&$Q_^4E zz42GU28C}Sf3*P-&@X%4#P8evGFCvpj7!spmOkrRkF2N5)ho0LKl8nwIO3QRH*lnh8as=`^mXoFBbp-yQ zX;)ko|I*^>>%FPagjtFxu8WXoQH~-T*OG0YJ_*8k#j_hMEbJ1L2+vgM> zYs*0Gt-fLEx8K&C8z^HN-k8}mVU!*lrsOxr63?))(H^6-`EwauLptJ~GI@TIaY<0M z=9<4AyIS219w(@8m)=^v@x~n1TxDQPV9(j#IlWUReN(tDxSf~26)NuN3g36Z&|k4$ zryDJ3I?npr_bBrSdyVwyInv)dYOwT5Pk)kn|&>-;TO{q)u5e&*dk&r_b{z~DUB z_;oaX)lAxp?O|gGI7c6s@zWVvA9OFJ(~j$H{z~tn@$<+2x>mo%+B^!F1`O!qz2=$4 z_Az~1lV-C6*I`G(*p<>A*Y)I2v`xjA^HHzS|m821dt<+euHiJss2dK;rAi zX2!NU7KhpQbnPjTeb5!pouD5!=@|V@O&YFIrvFJMlLztkHlhCq+P_53gtmW5dj|eB zOxYCIn;iUX+KbE4&lB5*B%5-LCR}h{>YJPTR+H8*oyKaY&~G)x2A*ZxB|SeT;Frm& z1*?O~>(ai}q&&6HFWH7|I8#>|TWO|QUZ=l_N8n6vaqaVh2S+U9cA zf3x>1QO9DrAUF^Fx)Q8Usv8l63vG+!uQUbMH}#di4ce2{Q|XUie^P340SC+GOg}UL zzC_xi*Zo=Ai;d*|b-Hc89h^pA7i?WGwt*XA%DuRb`~7-EEyd8Tol#LKpQYnPC&n>Y z$Bkb9S(zyRV!2modfg5GP`!@BFI2BpUJ>{Qr%(Co$9=OG_a%hU7=9rl-8yt)+>3RK zF#k%v{xiCxIQsLX`d*HXXA#BmDMWEBdZBb32pF3s-2aPs`gvJb0}PHFL}R95$Y$c1 z_+shtOi87&%f9JfilblWg6kHKBY*e?qJ3WAoquDHJGgCj*bkrsn;~Z0k4+Kto%TI8 zd`a81CFX(kqMJKHA2d?_j<&Z6{XfvIByBS3FEOtd7vyKh)a9zT3-W8h-Tb+elg%Md zAxv;Pq`9C%{Qhb#Xf|PN-9B-?M|CK;uK0B@G@qr*Jqa7AZ~U!xqjSK|e$QC-v;h)q zPg!LYx8CGQ;JfVid2WAR=eG^^e5Y_*rhngP-G@AP51UtkGQK{@tupr4);SsKtE?^E zD)i$&5SM7g`;Ec;_OODvJBr>>Tdm^-rhUr77olE%*F*n0?>7STEyq~KGQro?$3}_T zzeuRx6dFPQI&WUy%-4rrcd>WfB~bJDO}*=4`P-WhH}mAWPE)BZ5gjcEr+U^Bs_Mxm z(FG8DK*sh5_6Y1cJjNW}Jhhp>)_oLC`;v9EC7jw7*(g#T$VSn{urt)Nu7o`xbN0pt zY5Qpnv6F3kyhl5~GI2iI1 zqk|nIHy$Ry!7vdHgG1mwFd43dsc%d-Wl|w&7hioIsJr1%}#n?pB*!dRS54tcB zPJlz8Y$WBuNpJ$34E3C&h&O+1=9N`$nwva;=;*_(qToQNb*qdK%wFn2P;ucs+s%gw z@D`W|?}SNk4orcML8j7-Z55WLyKmsmgx|oS@Cc-tGkdC;gLSKsk0aoDkT|;?Au{qR?)8v%(byzmvdP#Yxf!xX)ENiwg)aXz9-aV~!CRr`&Cw~7eyXlN|7zxC zmHtZjkv?_U1Ot zoTr|r@;ip;SV6e@a1~Vjpg%UY-Bv@5&(=WlN?TpsQE)9(eRv+?=d6R(iKdU>NVLp5r&V;YPr{EU&G~5ce!dId6o@cq`NW*Ke z4%`l#!nfcR@NKB~v3KBY@Li}mUgBo*V+wKe<}%IvpYo#`eq#|GpAt^)&tPr14_*TI z!&dMs*bbsgM(@#Emnl%^TX+W~@7;xvw!qkyI0T8SLs_^V!Nc$qcm%3^6d!NivDEnd zN;t*mH>mg=hl-EG`eDT<3@Sclpz2{+sQ8qFicfi{_*8(aA^KqAQwb_Q?58*JsR|Vz z^4p&yG;@c_pR@3zoXtU*nt0TL4e+6C-57{H3}XWi`;W#ZD|N|D#GifoMo+Oj<=%%o z0f<>l}2 zaI<5R!L2v|gVGg_< z-Utg}9()K=S6$i|ecRBbZE!|H>Yy_UQa7B@5M6U_g6Nhr22$3>#&Ao>njB*@WE>sKZpXT#cX4r~aCqk9o7g7mr0d`RDF zYz>csi*aMm&)68&82nM(*yl4ghL^&}aBIGjzQO2AIBE0d)y#aG^hM=EJvImBYU=+= z*Z`l^P;=O8U}yLoyb6+MZXA3O=E4oog&W~xa1*3$H@1Y|gfHW!Z8SE8KZLL0K7(g& zhiAdpA$3{b0x>qZcEA?6{|-CBoiGQ!11WpwT}WO#@4@MivU5qRvl|k|`3QaqKZf7H zPv9@`Q&@&He+D(r_&Jn5)86{?X=a{H`BDeJ-H48_2&a7FUZ#E?fr+?}LA8H>K60|XBwL-=$1)eCD?{|Rfg0(V}lqSG&YFQL1TlMGIeTjemOi7 zs=ulUKY+4D{4G2iHXzREs2d5f)8$?X&xNv)83EN#)rU&&F2tKZGxKUnuiAUnEgcsU zPVGfwcpjAP;R_*spRqX;4W$RoU@B}5$H5kGK9nuu74TB{7Q7777a5zxrx9Q5cbf9P z9R3Y=Ti6lOryAQn?O;xSDY4=la09urItAUJE})00B?kg;LY$+I3Hpk#?%YiMiXxrKX2~E%*p7vRq@M5bjW6~p8FJx zf-7ND_%zfwoB>~ePr~)^DYyYD|I}Z5b1SAVRXl?G z>&=8yIlK(3!!1zlz*g7Yduft z>xsXPcL`S;%GU3t@FREy{1_^~_dwl$FI2ieg-XNca02`SPKRH@2jM=r0DcX(z;B@1 z;REn<_$^dFdJw8TJ_H$KI6uG};Ez!KC3gDUdGH8)9{vQ?{`?HpuKo&Xi=5wJ6L<_# zr=8zn5BLY{4a0aZL#Lh7Az__L@Er1?3TzCk!uGHlS;FNnj|h){pz7eYbKBK;pO@=X`{YjTlRLFf?$kcH*oJB!PT5{s-AMURDS6q> zn!O+1_~iY47ZiPd<@?NS82^fs^QQN`@~1Jg%3l2BxJHv_F{j3h^?%CtQcV9aClM(` zHXsL(+5^Iz&PWzA6IqAsLCRhm=0qWJNItRz*^N}>C95rxgA^fKkwZxB>%yE^Bp>nZ zDNW+gB(Ki z1KWP`)wjRY4R^2&ra#+X=-Xckw!2hiAbP@N$p&Nx@_%E`A+bJnoXUYyIq<(A2Q-KJ zAKm|(Tac<9H%;tPSF-{5-`W4$-21k>|GSOm49g+<&25_;1I${Vl+y2d_i7)_f?h+~zqE_Bnch9>nwPb2O)U;!*sZXik>) z9De69M-2a0L|P!*d1!1%dRjEM&r!G&kK*UVa*`;WkRHuV>NpG0b2PWB=eT})S~UNs z(-Zt0f6puPvgTmuLndc-v6zM(Lb9!m7+l&r8Rwjng_<<>edP zlfA4Z?}NX;Kk!yc-rG}XHIQ>EUq7BxnM2i~XDOZxg-twn`~&e!N&CMaPk+xd-%v6~ zJpW4%`yy|VcIR57?1*cit{p%P2@-G>NV{B18e0XLflP5-0ec#R|mO+ z^ZlqQEeF4Av0mK#{^jf>J&87aXnM>R4=H9ra-R9A=pR`-dG~cDZz7YkQj~xo3A#T1CfuDV{pI4#lwf!}XO__7@_f^WTTi~8% zOQpGIEPn4Ay-gmTlw;Sm$Km%Cm62<)lTf@jM~T&ML;fD>n1EY*jPsL*WZC@&Dytn{ zUN?!DX|eA`ju{iO#8B@EtN|7x7(T!-tj)dk#Ev z1IC)7trM(&DeVaCyEw#Ie_!(a!M2>zk}|V&k?O8~uP?2fbgnk%TA?)TWz0)3Mh@Af z;$0UJIA@kz2hQp`l?C4b;kvY>;h9-CnQQS=nJS-4Tc;X}{|Bb5Y~oa=iTGJPv1O|3 zGw=&7Kl!V?>@&T%;?~}fW9a{}3T7RR6F10~lkOcK2%neBE056^RK%%3gYE0pS?s0I z+FfUp){y3==B2W+FvW(A3tXR)r##WKQh3f$1RB53i+n{eebys5ofu3+wu;yDFZ$C*L1Er|47LBr$XH8 zg4~L;-$vHd511URQ86|xa^Y^`5PpM6PpICer{-fB^roy-U8DA7tNu9g2=>m7H5KugDIm(+)|L!VBM<1A%kfTwT?IRAs{iNL+-+5Lk ztiD8ZF1T!@FD`!Hn(!HH614Y@!7sGD6jtSU(1xXZv-ezr-}lCEc+%(`>(>^)&^i{2 zUuktL$Ci;ZfP1LUt?=A_o%wCt7FM}y)bccpZjH-4X0H^hBOh&wjKeM692Y3t*?msSiXF&rAm(49Hy z$Pv<(W5bu0Hg*SPCu7hh!ESIHQjnIGswU{)YJ>D16TELmZBrb6GyUf15%`xDe}5n3Xuafe zbVbyBc0_(5{)rhz2TCgwuPDs)!M~LT+h>hT$||t-Y$ABJ^)pik_5^;)Z$G|KHSpl* zjHvHwkNie_SNwH+H9hce#kYX#nFA>iU+Xs{m8pSJ;~OKT;J61-{%Wn^@5I;1JZb(i z)JY$a;B78fU#s@Elq1mBs_cW?bLnk7ehp0jZ*Hd{aA52dVf=HFQe?6mf9X^Nw0$l9 zUf9ThU-5os_1BFlgO;RA?Rzhq4s-7)+@%D~$I~w8(3)z+c?wjVBgCcVcrs zkKpD$5rOOMp2FyWySTjlJ=OO9sUz}pZ%VKuX)_e0+{;uyM49#@kGgREgyFXDP~4>- z_PS&x!{}K|z|W3Vr5lo7ULO&!$v2K#bk53az3VEk583;kygf3Tb2F2@?Ea7CxAY^H zc-T5q-2cd5`4y_~O1H|xmYIDAR-YO_!sd%Vp4k)RR{H%uaGTJBR0F zpH$a!Q>A8@x5~-R%cQF;@jmg->YUQ0!U|2V(v^dMaJr-$D$g>+kN4ygBA_vBu})2qoM*bRRh4?E|huu=F~osvE$<)(8J>3J;v$@5V*PXq4=YdyEdwZY}RRhv3EwAVmw&K1zK zIX3*s+Z>rw2`X=;rrTc@Eq%-b3Zp_h|zFRt8-|NF8Mwxv1lXMQx zA03p=HRdiS{1>RxOE_igboJ^R_&c=zs!a&4ze=-6;4<*%lZ*4Qb@c-_T_)dx^C9+pF6IcW zkIvY?$Olck1m#1#y-n!<|8!eanjZS~w6dwE#q&L-)yKIu-hp)b`-LShrS^SJ1{=O0XllguuX8^(Kn*^-UN% zuFlKIOv}eDohWV0qH9$4w(SnSuN|XAaL(Q@FEuGQIl~Uem4;y3bSI9nr5}F2xw-+z zQbe!9i;!yMTln~s>Ic8&B^P9A62-hpFU5XvmCB04JP$*l_ZE zD99lyskVtT=~r2mas>1ymXpDHqx4JHqyxcY$>KKGzN7s!`4qvuZ2C;On>70Ni7G~N zl7oGMW{pJwJd-pQ-g45i4wxuX`DWP5L;v^ESFZZc6U==|j5%`%9h&CR_?;dy-{j(F z=NAH1#^~`B{Hqg3es94HVBm{rjM8l#C=6VuzQ~5rN!0=6qsMpbMw1DDCNc>* zi!k96Pg+LkctT)NhG`|ZM&$)cI|BMxk+Y#?ql;{Migm9xeu`)BFgw+#yokWhriZsg z{#F_Wc<{(jq-5D2yzGa(JP{O5Xb1Uw#@TjZSp(zw$jSnvtyV!0`r$8?OSEo+l2lfsGp1PH1{j< z8`G>HKh0Y$gdTCs&iz~pRN-c&3XG9l>Hg7V2J$=qVn72 zoGqK;-=0)9D#zfm)pO$U``-Lce`34fmvd=jsW`5)wzzCRqW+>AezxpSY(w<&Y|q(& zLSAu~Zu%4Hf^948oL6ihd~rLbIV~A-s!KUv!THy1xte)~&bVzK&KEOivi;c>>4$Wx z|Ls<%{NL*z3UPn!x&7aj^6#+W{dd?yA?`d|W`W3?Eyhw7+wS9QoflRkxsI6YDKl%Cc#?XX$O zWc*zGLf1jX;uqYODIJOU*?X3p)7A5)aPGw4P;I>{*6lLYSE0WVlzX!)AQA%#=J+hW!HJym7H26DFA4bj-+{IMD+2ym%*z)frIXPL zzXpH1MvJykKlI?1zEE7=m>GZmR#@eAsLm;DH2yY@v|CS=pM27M;JZK zO-;_uRdP&uM?f1s)3~MI-g+#aU8Z^lx)VnkoQ3|pS!l~t&yEj-E67jdBKb+D?7a%q z;s*5J`uX$V!FpX_#vsy{ucq63`})!Oo|5i&Jh%UQ^sakLo^NT(HPA*54szRexk~kL z#;-^D0Yx?o^$p(!V9lP$;jKyQi>Dpr3 zh99zo1uxl#F*c4qg8p?8e{$Vk!s-3@Q+Ou)Ead!B==1gwt|I>Xq5Ax-1Af=yl(E*L?>`nz0e)$Fs=0u92=gtz`N(l(n`uHo^$bZ-V}H-g;oO9y0X0E#7ro zVMDHa)w@pm;;qkhq))o80_-e*j@JpNe0c-bhHpZ;WM>D|*yZm~Vc&v%;oDI0IfQuY zWX<|n-B(kbpCdZjmvh`2kbH5~4|au@z;3V&><)F`tDx#rZ#W9Z!SV1KcsuM1?}7c` zBd|YQ4F|w0sV~<;>}5Iea4;MUr@$MaY!fBGnQ#ciu9A}izlMC%$BiJ)neak56#fln zLG0}~*$_K9&W-R2mgp1+#@LBi+d=dT#Ux%z+c8|he;BojX)P96NU@LeWwuKB$jBT~k zV0YZuA~rUh%EIxu%R$*ZIvuWpm7r{lRE8U1Rk#&agFnGD;O{UTo<^F_gq2`T7z1m; z_V6s&8J+`Wi?R+J2hWAFK~fjq0ndjs;RUb={tZ3`FM_LJWB49y0zZS7KCqa*TN7&5ib{`a;{H0p0+wh6(Umm;@7GDx3n-;B=S{XTwam01kz^XBJ!q>356`z#HM0xO3q_$XZdi zJmtzb&)CQs2|ME+1!eo|CaATnW1!-nfq3gJOe?$OoHU4>%#A#;!U2q&%hs`>iLgQ&+CSG>n6>5N9$y+%Esr4o!f1 z?yYbloDA=Rw?W-cy5_A{bT*Z9OufDaFX^I=sf4=_QYVd#p;@p8?)zasxDbwliy+T( zXq$}9zQ>^Ay$q_plJ~~;&lB)X+$*6IhAkyn0a7NeetV~mn|xmjRZpLXac~`EE2Xiu znF*PPGd4*#Ko|EWhzH0=fk=%0$u{^!&u0CzuN~kgefo*j)aZi9q8?GzVeNFpd*QS{@cDiqQ{M#Zr zu<_+qgT0~hiMr+1gMFadS?t}JcBvoq@8_*`GjR*OA9d2SH-n(s8^#{S##;is2zMfE z50jwomxFj~(aah(-LEoUDia-Pgj4*6!bWfyycDwc&+Q6jtFsrR4R$kO9@IVap~`b4 zyc6C8X}gRqPXD>yny*rA%-uqGwVM;6(!p53j9(_hj<^|1nR2`XX5nUEgF6;Zh4(_) z+MEvy;X+7TWYSv{Mjj8f?+@yCm0pd9X5z17IpOr&Rj?L(7DmF=P|sZhbKzPz1~Mjb z=R(>xm$uf}zFYw};9dte!fo&+xC?HEv>C?sanM`vUAPl|3i;c0NZWg`F5Cq#g0#6V_7I&9;Q+WBrofM3 z4*Ue(4fntY;a<26a!(igb;d^KF8Bp*wVz+YX5`~O*bXv=b-O^>#Kg|Ha{yvr+`%5D zn-0H&BjG_f8Xkh!^LBoKT37cYlztQ<-kLA77EI-&etQz4<0#=&PK^1Ce*6J1)``>X z`_O4H8)q3PJuC~=u9SxhUvV_rb7U9%R)Pono2-phNhh1Pp*c(Q|1lS0w-Z0iTwh^P?MBJ2>v3c7VK873n zd1jo{6uyF6wl?2_vbFgWY!2xojIGV`#HAH(+H7NMvp&2GH*KV`wMpCOw87m8UJhw{ zjIGV8-46c_r@(jNo$wbp6=KiOnFi}Z>Y}T)Duqz* z6Zb;w>N`Bc)FZ})rXJ0LGw{D3>iuChoCoK^`EVXw4IhLr!iV4nSOhuw5JYB?FyJXf-D4vQ} zKB8kg;p8UoO+4R%isw!!y?h61OhK8Ld4>02GVTxHeE1<;0(ZkT@MEZYxCb%@H8waE z4~IB;Ym3a9BgNx9ybtRf$Crd}01rVu_j{=N@FP@x_z9{${0vnejzZOkU!m&5G590= z9Wqulwlvj`gz;XYd^!zY0L#F(upDGeU~FvCR~Z|d^hr)-{NIOFA$@>T171R0Wm}Ur z#Hk6dg0iW(1Inf*dE%g(?$@v$H0idz25s?f8X+Ye1ML zQ2B5PR6ayQAcoUw93ap74%u^rSzOo(zD}6W%3^o(zQ2 zlk1`4u@&*wylAXz>eX5JY3!hbzSE4OQ{maT)1dm545)F7zP+J#b|_SQhQWB41ykX0 zm=1Y|aa9LsJIpxjM)&~kT=*2sgBxHzd=nNx-ie$s@OwBG@-AV%y`esEJnjhS!Uk{x zRC*E-Z!Jo|_WbGi^+R;rPPiJ7v6q>DyBoH|JsoPSTnJO(Jun9{C*l^tnQ#%j59&E_ zh_}|mtO1c;Rlu(^qT@lrDZh%~WpF;c1}=aaCoY7lUyI;cxESibF{H&?Ut!i==)RHo zt54DKIN@r;r{M)~6}%Ka3-xT;So0pR1}ctgq4eT;I25jfY6oe9&3pQKScH26+yys6 z-a(yB@N>8ss(!x=H6D2ds-N2ec^7lG!2$3!sD67pl)k?X^WmFtEZhOrkG~BchCAUV z_zq<3=)4CH!dUWyJw;*$4CZC%@wJR;4`W@!VT#cVvLEg2T zOJOqP9p2>~$%%o=_tx-c*al99m&1kd3aD{=JNPF`~c2{n!#3N@x42G#BihmmjujE32;9c0eLjAQd)AKdvc3l_jpa3oazkAl1- zIyb?oa15LcC&1_6MEEki6}}B8!Cmk+sPefTUPd0>0U4V*cS6Q+&Ry_HI2Ed2oCc4> zyCHp>QwZtPoO@s=crT>yaAv^4a3&lA?}xOp&TL5A>db+6!MX5$I1fGqAB2y=hahc- z^Dw0DJ4KK>>&%DLRc8@A0vE%uvW(|o8Tcp+hf5%J#aRX~fR97!g0ljmyUt38PC2U} zW$!!-DJzFLD3`o<)+MVJduhf`oB_#mtdSHfyg?+ItXW3UFq{=dWAn)${@Ey%ltb2j81!l?rp zlRM10nel&J_#N)^;6;>2J=hl3hh1R?hTp;#Q009obSRe?SQfU1Dj$b9c)y#Q-_un-SKxh^H0faO&y>%2*bw(EQ1fLj z%z=}j#sRm%np|@`tP7bdbT5W?!dN&BE`WE#b#OX-5#9qe-n$dTFBVNc^=M& z>!8Z-1*m%YBBYOW*2B->M)(DM2_Ar(q3Y+$urhoFo&&c)`ZniPNZ;XXgT3Kva3I_c zQ{bDBw$J%H91V9u+A`-|NZaMS2M<$zMU@#FRMb4ihWTjNEn0dxKm%U$e_{`0`lssrJ9#NOXW{D{#QTT>Z4absqpsP z=}QJhUDNm#%EtH~c&1+cuE!=lKW6a6x*y~XpToP6@h>`j^uh`&R&QmMDs9x?? zeq$pI;bBuNRQRg>mxm+gPR)OIUd?*PY1@te;0hb(-gt3^oUb2GZm~9|^W&6(@qcX7 z;=;G?{Qc=#N9w$N$`<~=V++3q4R?6h?ERfGoSU0{x97tj>OGb4%mLbnGvxnv*xL`^ zP;qkiGv9i3=f(3|tzs-|{1>Gq?K@-rb$Qd``__uykd2x)-DS zoV~f~$}@g=qV^SKy1wwinveFPZ`I|$yUk03AKaXuG3#%w?*HoO{1vnn#{Zsgo_OJ# z%8LqL9oFxIarBv#+!>EOAIVt8+~@Vm z>+4S+Kj-JC$F`qz+467bZ+S`l|cBUUSpb zN8&a$`TxTf{#g2h@UT0!o%g`rpSQgBOz$Pn6>MAIov~*v`EMInKE3?>*!}syVuUnExOM<*pl)!{-Cb*~Vb3k6Y~G);d4J00eJp+LDVz6<^_lqipRjq)ZwpQoKgM-N5|OdUY-B5P6p0*! zeS1U``b&_VNZG+*PBbzInTf1J4j^@J2y=QO`f%4OQt| zLZmi-#~}TXEMzP)8(D+wL=GXfd1ef$2!hWf!pC`xDzRx z#`_Txh4e#mkV0e$vK#3}TBjmKNZTdE5$-@LlKxm^HnIlUj_l{YWyzD8NMpod0@1gZ zUz@-8;OE=S_wD6R8p^vevI^OZ>_Hk6wl4V^jU*zIkeSHm$YCTZi}WJhkSwGp;pf5S zh`vW4Tlun+A8aE(kubh}{Cxf{%|8AV{QG5dPh={x6`6G>-k`3T`P~YJ4C>V)CMG7K zPik8C;W=4@jCp}USS=ltk~*Xy-MX7ttA0(ivC1<6p7(Ft0Pp2!r8~M6rvIr^h~ixt z>2ePBppltN_xAgoXjhOucG#?Co2)%$_Eki2Z7GM@SE2Rw{xdayrbF|`dS*35&kVod zAAM#fnU(qvJ+qIOPR(oS2z_SsKl;po*&62N*yr?DY3<=Xm*3aTaU=hqj!>nXuB0{Y zFP|GQ*Y}st)836}?pvAnI`-3=t#^62wP)g4`<%d@nE_tBx|JaS$61Kt#Ve1~op|l| z%Xp=ZFdO07*^)V;*vRBx?Mu~OrHVYm#xZD*AQ4skrGLEQ5`URGH8-coWDm^hX+}9t zaY_bTb>U&dEPkF2R9Q*K^)n41;<7qI&f&Ux8=FnP+~p?Ruw#Nc1r-n0ui z7t6T@+?R4lPRe4Bx=E_HFUnZNw)@5 z+gvj&m86*Xj)rrLZkx=^&XILqQX~EF>o@D-&C#6y&qSmn*KnWkCV$nYus;_F(=N)!eMzpbJxtVMx+ zDVrUCkruzpw5@^m4CWbKn{DoP!heA_X$q&*Ce>lD?BHfbpCdcy63$ zeTaO}!P}ZhFr!Z-r?kV{-)i%}0U_vXNALIj!K16%TiwBULBGpR zfCGukiV|_5iL)JDac4_dwWC|@<)QzZxJc)Aa3-{mP(Qj0e;dc39?JG(SVz#8C9KZx zfwmvb$HrWOQE;`-`|Ov!`_?6`BeV@|Hr;WjV&r^tSQu3vz3u0p^Pm{ zmKp01W{f3U^|DlwN+n6kC}l4p$r6#MBq>Evh-gtNEsFf^kLx<;yv`gi^zQS%{r>pg z-sg6^=04YTu5+F1dS1_KJ?A`MImz1*+^57z4dgG?zeeB7+j)rEaysF`@93qoUfWyc zUhlPqZLYsjoNY^AhtAijVdbItO2f0)bI{c{%||saEs9G`&gzVLjiwK-zu8kns>fPPi5EpRf`DAJXc=R2Mp8P^L+ZII!YuxJ2#Ea4Vw93(fO*% z6i@is%H-9d9sjeoS*Gt<s7x0@mFd{I%G5J$fPSk(*Qs2}V~oQe_mVgn zE|>H^JP%i!lMbD)&8cn06YpGY>wNXD@kn~p$BZ3rfn>;vLpsr;w(Tdq->|sBwZ&9l zivo_9agx^p+)iW|S0|Rf4(Z-|@URr^J^a)9w|3*{Q@f{_b}QLN!+MypC7!TUlW)In zdk|#Kl{oWUiq2`S5eM!1vxo8L_5CSEC%iI#?3VFX&TC3^3$8!++a9xw(NREUBxn^0Lez^lK zje8%n@xA>?Z~p1`$da}4665f7Ac2!-=Cw|thV^6TWwJKQIKusIvW*|ki`(O#zuy0o zKG&0R);@KJ8TaDJTev*ZThBgyQ7J12+wV>V*cuK-mP=yi-_8;Sq@~?4EWNuoic7B2 z#TbXbUaieZyI!@r8B1@~$95#%`TAJtTQc$7d8cc8#oEG=ETpH_Mvj>~m=m6kViQ1X z9CuD(4e02ac%_Fk>mS$flfuLE2BP@u&8kMxxpZvRmO4&|Eo8)Eh!wjQ*y(r@>742*ya$=+m&=ozU0&2k# zYU_o1jwYm&wUkvYSWv`DCYdvV?eUU+%9p zRpym`coyPsCHE;Od?B78Wqi0&!7n*z2=F#TYJI1O>(waf@V zJi3-qd6EbZ*P+*k#M<*#SyQ>@Z1pQWOy<08FR~$Ls%Ho@6z@k`(`C3zeZ=(*ZJ!aI z-wnN-1UQCdx8G0d+YZf#;~U4+0e>cZzWSHEGf6i*4_4iW=fN7cD-&+(%-VXB-iCEY zvWh1>)*M#yP2}8lh21){W+5rNoh!I{WMt8}NmLe+O}VDluf25n`?!8@k6}o_ulD2p zHpUoj%5s#U&&dlfhhxy0OdH=DrvuMt?0VUMrWrNAdEPmj_}_Y5!7ol@~1ibdN==)Q9SJ#Ku2|9K2^DQ9($rwwTn;_+$DN>A-eQo$Z;3+U@zCiR>dzSO+EFBZS`_lCSj8 z?}K<`NOLl6UviJ7pNWKzGihX9V|lXo({ks)(zmJ2teic$=eRkmKO^K{67uhJ{a!tN z7xMoW@@H$FwO*eO`Ckh8Uk~};3izc5b=|dM<B8EPw%5^!r1FXZ|*B+ z=$_v{$*X^=PV3@*fWqMqCz=iMgRQY?di66J8#bG_p| zvFM&KqIQC&wFx8Y^g&}=7Ans*KNC&&cHcoU@1`WuchQYGsv{j&s>IW} zwHmwXX-$&9NXP=wd@R+;|Ag>-3G9j&b!xP-@tn(!n`Y? z>u%#b_7co-Gx4M!?Vfl)OY3u;6Qi-)c52~U>dv?^6gq=Amkgy$S`;p)c2Qs%NUse$HBR9Jk-9*y>J7( z59)icNzkDz55Wtdz6+0s`X2lSsPDm>L%soybb*hU*zupc>4(@Da$jpb@?eHQ#~rZKwGTd>Q24kyoL<2VV<6g~fT-hHnZZ ze3NLt_pSu_wlGoyegRv!ovALh#338wRoA&~Azs8)`w}?9KC7!0G`tG*^qz;U|fhn*7 zetq|QD|{SgKz;8!7Cr$Vfz#krsPBDe!Wr--_%!?&>bu`#P~ZLj4fWk`4%*9Xcr|QTJQzf621uALVfScE5GJ@U+oVqz^`_y?|o$t=Ow6i`7&Grm%x?q6}T1ZJK%31 zIutnu^*!*f@HOZl1APyCIeZ;fgR5XGsPBSX!!__O_y(K|*TGD<9?pYr!nfcC_%_@K z55P_EDBKJSpcq?VSt$Fl^u5lzkUrPgiKWjoc4GBi<_Cm#gCD}7a0jGsGWKEVYn+eq zPlTU9`Wk09q^+CplNZB1_|<;*LfWwNCEN`6L4BvWALge09Dr)C2jQjg5WE`dyJo#N z@(q-}cEq{Q_sw&E=}%t5G_TOnBb&A3i|vL;J^cM(LwE<&wF98W59-W(ADssE-atB3 z`ctS2_nEz;XZcG1TEf-m>YxrH+G}VJuYnz4D~Jt;$n8+}lpch=;A5~id>YcX8oMQf z;Ai;x);4korbFrDV3>=0@Xd214$=olu7X3M^buPH#_r5;*aH6uDEky6;Yc_NDvx8} zBk(@>B;=cVW1r#y_%{9rp}xm|2>u8kfw?H-6j&V6*GH~^&p`5S>>3S#v+$D#W7kOE z13!>YxwEb-Oqlux9WN43`)>20 z<{dmAim1L9!bWfrYz|+B(w`-;7kmY#!=*3+m%%A;IeZo3j6EIZ1jdfOM!-wfwI-!%L0x;{5y z^>I435Kr^DciijWg=O$>g*D*&Q1hK_Q0Zmj+-HmCnWNHU>gn65+Ce;}_YqWn=wnTK zyP(pe%*HOk=ddyUJunG=2}i;G@F92r&V^sWb?_i0Zw_rFLYRZh%=hv~;3@pyLOuKZ z4l19iIQN;JdDf?V<|nKRPREbLQ$CMDOuOrTVzQ+67j_D`z!j?E4j4ct}|1{LRlh@KB@i05Q2IhpiZ*Hh@Ef2f}Vw=OH zuRg$iPUh(OnaXp8y^g=U>qtD6qd2SxOF*S}2~>KQ!4|M2>;T!@i426L;20PWC&AKi zIxGX{z;X~Bb}GVMkTEerT^M_y$k4e4zx4H5sCr0%%hBVUHAa32cLk~!xtcPVq-6&0o4395lZgOaPBiLQ@4^!P`?`!PwnF- zSVi%n>h)%*x@it25Ax)v=RTK;*D z_zC{iP~}+ze}Hd5>D@Yrt{eNHSHd^(ql?BKC_3mc=K1+|pQ)H!epF;IpyWqWWH=GVXgN!-G4(MXI7ym~11ysNPCHx-lgPL#dhnK>G z5M4F)KRd(2_>@|^%`2{hPe9fOk(sa#d=b`#FT?BMI>_49tUDXP zL->({u{+Wbp2B}4)OxcKWG}*L3hP0>BQW!fo1x?xAusMT0`u%Z@>G8@lyDs@iKlVy zbyy0nf|4tFF!q|(!+Q8Pz*cZ0><+#ICGU6PI`}@^1GhoO zIOhW>xifb%_ESHEC-Hv_E0ecRU|skrYzlWl`W|ODOo5-le(-ZR9PWYiEzVv@Ut#Pk z(&mkQ#W`?4;i@0j2oc(j^A-F69)#$ygN!5SuCcFp1Rlo!6Z{UM8_rRvc_TJ?%q!J_a_h_0D+Bzqf?3y@0*SOQ)O)lM#hDyQ1C`#eE;GX3XOgtsGH$M3|u z44#B#;VCG6I}K|>hxO0(AO~y>bHPrKHB%%R=7VW4KO79Pc@v4ig7AKLA$%CdL5LCLo}Yz&j3^eF{u&d~!Z z{Un^b&+bI@Kk4Uzx<*GI;wk;U@M72>-URP}J>USSdDuWW8V-V9y6&F1*((pHn?XFK zI|P=7>{S^%e8XUE{CC3Ua3oY&M?s~lbMC&j>ED!YPQohVblgomrF##&97dqVzp?N* zoOl6!6axI8eIv7$MGi$TZoTK)4JY!|xb&yuOCpaqqOBsMxNN6i==o`mQ zg3Y7rGUqIy@QUq|4|n*bR%)GE6Pr&QJn4JpY9_qs=~0E*zpomTjeJyST(%m^a$dA&;lg4AM{WA*_=cU67z<7KEmziNq+?fxVUU5PL>+~-u@Q~=Q~<5*XoPXm$FA`!vANl=zsQ#8b9|5 zi^kCm{BhYfFK^hqe)9k975(4s6|FGi-DejhZam(#`JSVnmYQ|&uM$kA>M?PP%Qk6Z z#w$gdzjpMx{(DN@R&K^Zp6#0OQU|ZFlgjqTDNArDm^HWx%q28>`*Qvpo~O`@~OQ@Bd(K;m8lGCy%MA zy^woM_}Fqiir2WYZGoC;3pe%3{|t+Qbte3$g*WzZuw=}Je&ur2X#aZQxy)xw_z(Mf zB>y(#y+aF|l`S^4`d-HC#Im~Yjh$DPO5Ay8m340wn*Vfa`}*uznefE617_s9f9cTD zJ4bz5q{t=JcxGh6Yn)2xTcpin1G`;c@Y5bMUrZ#8a!O}z{*NB-I%ij|PRlF)UA%mO zjm*hS_~CWk|1O`FSfb-oCBDpE`tirut2g0&`!*PU_Zu~zFa7qhS08G`b8~0E39tXb z#D`|ox#FRAMMq?gZc}prYl`wp|KX!k+vn@~(ceYipZG<=Be$^Fu43k~2g*M5#r{+M z2aTAw`?+tY_hJsB=Tvdo8a>nD@4v>q`9_!0lkYhBWBMwd*_d>Se!4sJv6h84?_5}R zQ=1dTiu~txjK)w0vFzt?i#;kNRuaLBtPA}dNJhukqKWm>D?lF1P`>$+$(h?YNV;a(864 zWz-VC>>0_H(IQ;VF09RPPFMDc*d)pMBI_^Mr5EeX-mH)LUp9{7l3^-qEht+@1EB03 zO_m?G2X`DdAcegH+;ZF>xV$|`2Ui={4mSWd1~(nI5+^%JAH!p~5lD(*~JtNtU^6VL<^Z!KLcHH;4ifPCP7qnya z|FZoeG~$29|0M7~3H(b5J^S==?S2`vU%b~_zmStm|74!{7i^Qw=Pmtu zW~2>C>oYXIVwt5^genP9P2*Y-TTz$yz){Vw^cVCpS3*InZKR=-R9_h61kKtolzd1x0s_W zfAiz?4CPQ9b4Yt1_Z{Vov|)pKnfp{UvBQ6&_fdHo;#y_PaP%H+N1KlGHEBwYH@Nn% zDoUw1c#qV`unK(m62|i^_eE2@FHH1)H1So|X6DK>{+PNe?Bpu+$bCje<@%)b8&H*K z3X2575Sa5*rJ}KIJ(mo}Q*PIe zl#M``_b&1j%4^Trcm3lz7yM=duZb%iu=nVdGBic+LfdcqY<*grGpd&|xK`Qtey{J) zRQ@&c|JjwlXTzoD1S1>A^N)4?zZSOfbK3Iz-?0vG{Y@!{>T^`c|3JVWtlxuf{oYJI z)J_`X9;3WVYNmEIIi`N~eM18AY<>75HF?_*$cys2J>>r~3uplb%W^m%v!xp-MheI5*YkR%-8*UglF0^DT+w7XB_wx+wjM&n?}t z`la-xKsK!Bu#61e)$eXT@iOToan63PJ2Wl5d#`@7SfF$!60SDNw`~1J(Fhcljz0z6 z!Zwnza-;ku6823Yg~@(cZ+aG6Cbc)K!^(&3W>`hmHO)9@)3$QPYx0r|r_r8hwD0IH)MB83Em$30Gx_&QyztH*5ZC&}_ z4S4;Xeq%xh&tJ*6c}{EkJ7-c@r~0^d)y((*Mvo-d7>BP%yC$EhN818no*u0Ugn9kl zfq9`;6bzYdq)v+kN4iR@Q#s zm*+uSw_e{@)5^l{`&PJqukYIu@CW<4^={qPBhUJmDTe9moQKX@x2CuIzw~v5ZQ8zV zmC_-9Lcp)Qdf)jZYLMrciBn#m#!aXFB-!}A2kHB9RBveSz8F@(&I0F^PY~-cI;im| zFK2CgOQ&50?O)pOjB2^xZmn_ee;4x`9*gNcD|3J6VI!-o_vifiWaNEg6uftBu5cJhTE>6c z_t!N3O7>df*D(GYeSdZ1@8tWd;kVy*TKNt#eSAgkZ@=-f_5@U3Z@ygMLYwum^n03P z_Jhw--b|aOD|0MXvLC3j&O;tC4&N4o-i?th2IXT3|9kbWv4(fioQ7r`v+1cml1Qw1 z5i`~d>(j@Mh2HnROXx~S8ts3^I(TC;?*hinU$S02*r^9vd3-R z>zix&n}z(BPqpWJx$$d-{3)*Avl}=qUm)E#;tM_;GZzr7UHsOgZx;$)P z4^Qsr{svPrP9zPlPQ7v8)+yheyXok=<2Y`(5+|KXvG*enLEW_dPB6diE+R6=NSyL3 zS!YTYv*b4oi!v!g(=z@^+q3rz=2vZ@w9&z6I?^YC-F04Cy8aL5>ti=x9}uoS`CZ&| zJSyE7hd*w`b240iejeQnN)MHWottLOpVzNXbn~Zob5w`A?+X5`xB1gT$4r3j ztj_9|bS1{&&g<+tXCXrK=FUN#*+;*lV;_AU-HhI6b>5I1`byOWXCD6j zq?p0`NpD6FHkG+@t8CHve}phAGp5zIK zMlnvQE>qz`(%koyX$#SMyfdTUP)6u;$kiXSl1N8mmhuvov1B9}Te)NOBYl{Pcg{Jm z*3yg7E!I!Qey!37%f(A0DpT3*kX+Qp?f!w4qm^q^MrXE7)j@cT<<)m-&ap3I9Zlq9P)AjE)w`<`J^I^bX5=Ti z+d6h{fM4-D`tkiGrZ4YsIW?X>WAp5<>AW`omRrV#q^CA0U4L1+5-y|63%UDe%4>|n zFQ4)pE}!xns~pLM+j5^-j&M6r-FP<0)@T9B@iWR>kiH_yQ} z@M~PZ#O7K3rpc_kjr))D`l`u;-D3*&FGUI0q4}TcQe*Qfh0QWDb!Ft=vb(HgoNvye zK27CbY3^z5YDn)?ZnuB&=Z3-dRFrpfbi9v~ifzHIC5;4|7r*ST5eO;mrtl`vm35?4c?D(is~+x(C;hu+^qa)~J-?#S>=BY3HMAM=foB{dP1VN61e)cBvO0s44^(CYCz_j7+97FXTV7<7=PPTlEGISTi>E* zRF0c*DvQ=(s)zI!+Cw5;4+gI4&J|7d;KF)wSGqBgXiw|Vf} z@Jj)Ius#wrQR27;r+L#=xE;u1y^ZhJhdTu}^&xr1IDB1C;AF60)BU`5w#dDobT$|6 z7Tm|&&w0`I8K#}-uEx}}W(eK=hnD|zz7~9r9;~lLnjCWIoeh<>C)B-@&wg+7^!^-c zdcVx-pM&>R9ZF8Ip08>?Vf$>>Y5cD`OoYMbqTaf}#EfB|hTuFz&sypfN||e9 zY36MzzxUe{+sl&x$1U0Uo)6Z8pHlwqHh#|-vQN+GH(bAhXOvBH7-3R4Ro+op+eKS*7oz!^F8{d3?bN@&xAWE z59>$mznkZW-Lajh`IPQG58A!sUcLLI3>z>MGi|+iHA3f>_~!}2+=cTaqgayZ4Z;Xvq-$}$>T0;5Cx<6ynbZ0=s@!Gu&*IrsQer^AL(fvm0NDV*S z>WJE&&6oCf^ge|8rr`R(>d4IbR!8)#GuS@=s6YZ7OKBVG)A;`1*^NvS7M!(x_USc* zeI$3krkT0=j6Z%mkt~8bp}ch@%$2Wc3(>OnQPr9JN83z)Q(w{jDV382PhWm)ibHjy zc4uW^?UjbxlHx?=HXvmPkrft|U7vm#1gb5yvE_C=IeBeqpKikO1f7_g)o3U=9b0%- zIq7W>^=f`ws)%f39DZAh zP-$cm{+VeHIDb=8mh+TDN@%r1h{f0bW_<2VKn|p?uWl+8BqQ zk3>!e^C4Mj3<}qy!s7|I@(zx}(CS~AG-b~d{QvK)R%oMan6ROi|W;U(?vezlu?kFZIE z|N8Ap`hB)}qja|h=dFx~^y`K4d2$c$X((JWvhP%6@NAoWjEv5$YV-+Mfp?36}yo`sybR$+-SJRgvZz539*ok~+;h}D;z zO>QS$xutNO=9=0k{0g~ES@+N6rU~D_Y0D~;>NhMal|8Ia;dY{W_x52Xs1xMCwwHN- z>_Iq#{5$JS{_RVQ{+kHq4LXxwbJ3Z9Oy8sX<>j2GXOe3i{#fsjd28yN)oo(;a$yPn zmEoO3Pbb~MkQ~VYV@O-N$re3etk$L;rfV{@yz;2Ccc$>*7{JrhwDS-Pxr&!zKV*H z9HTO~vQ=CaJ=|s#SF*Bc+v*ICC+%u-l4CY=X_lXk?1mkdytanr#i-X^yT^Ua(kVkP z)DvGi`=83l(}OZx&-)2}-a&#;-Y!_4hS8seZ!x%{tNKO0uX( zxGl5h0RwvX!K3i_P<-7<_mMokb}spJcJ(Q#7AH7l2Tb#W!BF#qecNKm$E~AiwGRm^ zm(r5Vq$4p7U$2rm8PqGU&fT&P7@3}G%A>js&w~_KZO@fk7Fl|849OyqIN`Px)Q!yR zh``Y`yDfW1XyzK*&rx=NRsHXELv?EFE~?wA&sgP*>O)kIBokLoe%a#*^UAJ1$Fv`# zYZ<+V_f}WT4^0tAbFb01d}gjF|JsoMbjaWELn9AA{*oQm?>&q4<|fN^Qx5F^p#%JO zE4n0kZnyD6b2s;ibe5e8E7L6|l{5bM^S33O^5$>b`9G*fUK@zjPb3mIIJfZHk>6jt zYaPiX*GIOD-nSNmT))b!^NU00j|BWd9qUqun{sG>MeXYXS0=|kK8KD)r?aLlxnecx z1pfGKDUrZ`A_MgU(mhX4luv)XgDnXiui=!>r8w1H+$XW}sh`Q}J&dPRrYE4&%reIR zoBlG|CVHlFYcmEUKs$%ly=?!cb`q{zl`Ed`V7a{c$}YED7rOG#=jmk3a=HDRSpivH z{O`%WPNBh{Ms-TEzs>D~%c(Qt*oiBN+lc!H*&nmMi6HEDDNK8dADsZyqjaUs7+lZ5#T_-)(bk+1hHhxH!_F1U+ z&`0Bz@)qOp+nRJTC@a;YckeFO+bc%{-COT^nKraLRvWVSc0bwt2lI?vg+|zP$~A3x zb4%Sxn4fd?e=1vWPbSz;&ACA-VoRU)Q38JAwv)_r744w)m@`^-h&;

    G85 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

    7endcQmDM{0LQ@usBq&Ecb%D8zoBp$ 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%0AU@;P_kOjYgdBl2#P|H)VXz>yvN&JT_px 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%0Axmk%U3=wE3G< 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

    6{LKE>rjBk!pL*z7 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� ztU$IQ&f>~W3nURKK;|H;k?ly8JIODSh-4$BNExyj*@ZN^i#U-~B#10Vo<(*djqc_* zBo�EI~FQJCWEW?Ofz)|Du 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 z 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±>y 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%0Di)|`927)n2v!cp)tm;yO_*>&L+ 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

    >s(i!-s`S}zK=TY?_yeiMsnHSkv) z2Ff7;EWyMMy6b!*SZWBHHG1%;f)#+ZH0g#9eRZQ?#bD+-|MTNF(giC6Gsn=RrUNaO zfG-!p;_z>gpW{}`_7L%!HLtfl)U378C4iaR?ZlQN-WDtk%xVVk7tM7dBj@LnLKg>SZqvVx^acB@6fko+ ztlL|z3Y`zkoZf4%{u8uW6q4S!3OGsphyANAJ@RtaXVgUf1mmkLHVZ*7hP zQ4Y_I3*06fuo(wt9&^qWzkO5a(!g4obW5WCJt$Zq*nK8;WB#RJUD^m{Zkxu2mce{E z5W>29)!-O@5zO4icK&hKc#$62U@gDhOWeWskN{>bqpy}U&Jem3Fmt}lJlLtWVA)_1 zrWl4d**8cqUkLl6#oI-K6@;+TdfsD#6^5`G@4rT?0jr-OOg+_cfnY@;?0CjMR|P8$ zVSn_Uv`es(5VoaL7g}V2^frdD+;DrAV5K3f_Tm=j1S<<+hr;f8pD`t~9E>(9T9@Wy zt#<0}t#2~sa#n#o7G$dPyZvv_A(r~$w7((e>~v4`U1`&7jCqxGFi{7o%~4-B9m*Ka z7l4VeaX$8*df@K9lZ4Guut*#*UtG?vlkI%W@hatDqJGXNe(mt4D?G2GY!@vyHKnd^ z;G@hYo-0K(U4k~zCqD8RU1}f(O-TZ46J&~hc<;_=#&CWK?EWA#jF(zhe8AXLGS{MW zId`Olr7`AJO2NeVFdygqryqO7%NX``2NUgx?ytYUPJdpuhC)w>i#`PJYQQ5oYcrXy z9^Nk_*Cg1pU)i)}{TarHkp?Dhx||hvx8m*Hs}z9IfJE80A3B1^=W@;k6K!)o_Kw(T z%c9K+`QkN7z~Y0tdSugQpAKWpFb;spJR`mlM?OwxtRATXYa7&gm6yK@xB{DsD|VA? zn^?+|ZtYvqY7i)gI19^EzbgMK*uU7p=t7RJ9~R-Bp<^5CHe$NIz3rR%x(ao75#HbU zVp--W#&DekOw{W|IG6F;_|`l<+}{I62WFZti}2a)hL@)?=GLO$!Sf#hmI@YWJJF~$_r>K*18dH8bg%KVSLVFLbS`HB zSi>MQ{69bQz--2F?a##K;>){YKg7sJeZd|_V8R#5K79WVzhE1|B5*+cr0kPp(|ZV3 z8p0mz@*|Id80BEpX`0syiK1LsvDL?Ph7pU=Riw8NU*7lE@Rf|^XC+veu1?%P=sCu4 zyDnHG98h1VE`E5~%Zz2XQ!FgrmYM$ge8v=48koqJg}Bx;>eZf07}NaO7Upxt6t$hl zSiG&kVpG@lKY8U_#$4)L3saTnbN)Iibj22%y0-j}J9Y@&MvKlce#?)~VvLY7u#Pxj z@#SZAoAe}4FV}q$EFs8L{ov$zeS|LhU0EjQ1j+V~mgzFwuW5#B-pl{Sp5#=5ZeY6K$I6 zT3+=h30)PK=nJTBj;BCjOn1hX%07hZI$uq!7CJi^ZE!4K^7Oi`Ud(39=S%?;^LeV9 zR%pM)n69ORbqeZo-FvD>PhiZW7J-R&M0KyFJhqCl{H#(i(Qc7v##^&j{lpl~zkrE# z9O|{}lDkhm#`5%wV9_{We&(n%3oh&xx@xevAj{9{u&Ul-#@wFR_vGA^`Z8lp?^BHB zXQhC322ZD@{Z+j%>F@|Rt!D53< zHO@YIUk+nRZo~)X_7HD7Jff_CGgktbSm)4u`TM6?e17dTQo!f|^M#OShBr2tPS*;+ zq%V2CRa*RXZZm5m*n>e`j{mg>R`dQ0=Oe-5f(*~Zbl&hN)9G3@m>5?U5}z8kb?8;b zB5g@q&E?QFanr9md0&9{EL&Lbk<;(&wU6m=og7Tm>lg9mCt-=)CiWi#6JtMRcm6!> zDWSUv7KH;EJ7w?u{0DDigj9#HhfWWBi0KRxy$$mv^eA);Sb%xmj~VMbGp4vxPy@G(`%ir8*WFU#}xg12X}^iapZ z>IQ7u1M!W1ZO2i@G;bVOlVEy=k~90r&y3+3A6U~M(-ha1jt?`I=}ZL^W84DV$1?BY z&=kgq3mbz3$6}hFd)m96WK8pBTXcqUD)|&GGQ^&lR{%yQ+bs4*WZlJ+yo@k^0lOo} zl)P~Js2Zlr@|0Rwl&#j^yJ*)An=a=83(I$(tXt~`#*m+2vW!%HM4y-^7*jH;z+}GQ zU1)8d<715uL*6VL+D+c4v@fYLUvBc8sacLNL(}F2K|7np)6XBn6n|DaQTZSvw6#xQ3G6a66Fd${lU$7r>K4)1ynz$>zDX<7|T%8EX+eZ>lX2OPc+E} zv*Cv+EVh3_xZ-fSzYco`X_1gu4nxtvFizP*O&yhb^g$g`y++X$bsayet@m%wPDP+yi3 zZEC@W_i7l!JDd=WsJlyv;cWj(6JCCpcY}#Mqq;q%qqlNhPAZs~OVPbn+ZNi88?>$9 z`ZQP^{>{?Mbhcbsz+;%`DF&k*7-NX_k+i8egihDW!8!z)lKpPa#WZ=aJZ}}4=+Bno zyEmVDCyp^)i``@PQ*rPAXa5bx@a(vS>Du*c4MsDT>C6VZ7YEE2CG+z2W^}26^ssIO zlj&(wKl$Ou2*wn5DVV5()E8Id7nU%lO+5)lJ1}O`P1eWWp2!&bvyaVwYTnC(DlRc* z=t*ESagi?vw4S^iw5jP}vQBu^2bSE!>ypzb1QT_a`f_o=hsDgMHnkXx4tP91_bW%L zXw^r2Zml9jx94k(x(%jzFNUxW*35aGG5oh&&LfxN8Kd!2w(~l#42%QogrA5QR@dEr z6^F3dw|6R-1OKM|#8T3G@bmr~7jOuMdq2y~OmU^x-%YC|nC7hj6LT9H-^*PR@)^S% z3`~|$rt{$UXV)->dyw~Id`39sMOpHg^%USC<`@?BWr#h>^WDHTZ9|}LLD{Mx5Vs0y{ zzPa_2e=vrA4@{v-xA+i1gCI z;?N*yzO2W(px4gR24fjnh4@u>GziLG$Ctm1E$4ltl39KO?S<>!0_)lOv)_eH`#*f{ zhBDer+yQ%x;kkJ*Q4Yltn zmZ^tDcG<<4H>Zt-VGIb~v#z-kLYRCGQ#Cq-uv$IExjei_C4>#R#NIuMe$bN`!bW$U zkj{L`Q5|3obmp|ayoWC^v2WuShV|m+i=FYLEWWawq`{ zlmpl{VrT&nU{SV>VB#FhHq4Qpz3QXWC+M)Q0^5gw(=qh}uxXE!J;E5tU7rvZT%*(d zdv2`yjnAPCtrYCZpspe5^}{~841rB|Zgjh_;Joz%q;b!(3(s?#!~rJCb}!Cj((maX z)_;1kg_)lnKwn^CE_L34`m{MwoiW(L@Q#&tw>4pmkW>qEsbgN5$op199SMe}iP)nZ z?^6N)!LRbpYr~*tu1><7@LEk96m;V4qJDJ zpXstmFr{FYr1OQf1lhrN;Olo$n?MH#74dMA*+8 zFLx4kVlQb+m!*L}8bjI>W~MtOGe|aG=tAF>Le~~Ev3Jq3HcwumoR-n9QDJPY2KEdY zkzCL7&2q*tHyurP7G=7p@j3BQ>w%0ZMiE#XXEU(3NbgN=_F;^WtzfkB(DbHbUhrJI zI=oLt+W@1DgR*JliGKF2Kl3$$kzIRCSm6CKluaeW1`gbH963C1F9bF;!o3TN54 zF6uoSnJCyvFb8K@*oUC${q#;!S`G$@%a(baiG5ZE|J$vKGo>mgjEv_x6`%LcxfRKo znuZt3v$kT#%SYV$J(oXtmNCo)!4kO6g=ftiqgL>7(=g_PIXH9T^M|Oe_u>P-sLBbj z68xLySvo$$Zp71R6Br@0bHfOAnzE+|?yXNxyZv@*1wxd1a#nrEM!FPMt5U^FAB%^~=#y}jl!#wO-m1{3vVFezv>XJ@yoj162C z`;4q-j}ylr7{mMp>^u&r%|Ya|5xqNQ)n{z}sunZRfAZLAr#kJle+FY4{!S}I zKZpaWOTp(KCy>GT3nvG2&V$Y6YyfFm`r?a==&%j;OTQVj!pJht`jfWzzVk%$e;I=> z&xVm2o?bulz^l)@9{OIe)Y)@k?7UMhee^wcxtm_%d&2Pd?YcoNq36DCEpR>XU+jp0h%?`9=7N18NhU zRbl107~W?QvL7!AE$3~eCw^1swsSDok@E{tKe?_4bSM7Uv7WQSk&EQ`&>gJi=JAJx zjugo{_!xXy8sS?fbR~HU$n)%BtY9nK4|fV( zD$aaKKH+VMM>PV?1(q00{FI^oMEaZmGlrew@r8%Ag)r#3qx zhJRPwL5qxpi|#b@1Q&`tdR{lo?=K!x^J<;!WFQ z?qNDS3-Ov9<7h))zBVIDurja&98jC>@R`zR-Lrz72V2JL8U4+i_ET#McH#}x2^>&e zJk~Pz_jrQ$kvQl5rW}v%$8UT)sxL8}&9)URmgh@b>;w6Ahkm?mss$G}!cWfHAYazk zIrN%H&+(Rw;XdLf{;fl|2v!Kj)}nStYkc`_pKW{{V6(++mUXukX8kh`+?dI923h|O z>L5=q4!)!hSNU8RalI?+bxV}XQ!BrmEYdpyhUOB8{a%#&T{*MpuuH-*9h?20^z$B) z=`T9_ZhxWM54IXVqIuQ=Gwp#Zen2y%I^DT`tE_{~v0v9`@e_C*RLM!OUHBc<-Hmxj z{h5DF6gD?*lXJybu+?9$`Ghe%U%wr5Z(e@QFxR-@$+?d)!?|@Q>NSs{Ddq)VgfGfw zOvya?5$YLdcjC*o&(%H5n5sH<%f37Yy2a-rRxpNh1$$&)-UQc$axS%bhOsQQ;A1&& zwc*+0W{)0zQRtG&(QbKq(a;_5*gANAB66SX&l;nQrayJ}Wu{ZK8DMcZp!pI-eC}y~ zt))W<@)LU-fW>gu2y+|T#viL0OR|-L(f)|)B8j54O7B6#gwAPHgH>_X5Oxk1+$d(u z>mvJQU(f(-&JWjl*}Aj{uw<^Q5BBb%Tl<(U(>)TblCucJe!Bi%-uEQg27ikDUGux1N0nd4`rs&K9ibf3RY(Nc@nV523n6w_o)N-FmQC6KghP5V<+;hS*&E`J7_GszPjfPc_RItOhL5rg=FW`eMUa!J>b#mV={uO1fZiA?(0C&j;(0 z9n5U=)yq!?PMOdOl^miw(P2ffUm6K!j=k*{WBHhacKbh=C&cEPvxfaH{G1WOq6*Fi z`_}nj=CYlza_(rMTMuTAVfL~q!vre}u^G3nZezg?fSJo^!~QElo99E)yAu6fuua#5 z*vwhehOeuzM*q>;7reglyXzvom=N}7#=1WQYXN4Cq4A}AeiqCg!d~BT^i{!f{&jlp{60W;^zjUC;l3Y&97Y_|FP6*@Hv^aaHsx(AxJ z`bn^@VCMM3mo6VA*a0xJFXlX}0Q>*y+3EkmE`pi!<)cGwKNaa!gPDEVwk7#Z!6GZI zEPtB&ZNcKe%r;|{JLvKw5W77@x2yV8u&+x7Gsm#DFs!xErTz~#KE&oG=i606=L0jh zho}3z_l00{!Dyj~vW@v?44v8r{45Pg@A(5Wj|;Xd#O8aAf4L^u39vRe5H`J;{a+TW z8qAz8d$#s$B3Q&(D|;vU-u8mUf|<*q_kfyUyX^pGj&J5St{;UiIfP};>DE`U@geEG zFzkUB1oMEI%b}t2)?&d5z|3|2$mU2s=fnCdg!Q@AKUn8WL(+>q^IvcrD-U7qyF9;0 zq*noEj{U9Eo$nOvJeWE5uxpKH304!rF0}CU7A)o`YhI6V&VNm?HehC(W?gqMbJ@Px zuuqZDrGtsKxfu8PFMf9tpEGn$%C<1`yhm~Qz(igz#(D2{aeH59HajQH028s(0+@O$ z?3_ri2u#$a#iXF?FD3jG1k^rZehA+duuEW zDbOBHSkmh{aYm=BUojS8I}axEY%zJL^LD-AS)r@3=y1L%sKXd=&YWjnl2i5xUyDZC zVk|7mCRqk)0VeZBadqF@njXT>aALPGymvf#4DVYNS2CE)Gp`}*e1%@PFjqYPQ#eLqAUR&GP!Qno}GSur92K}6z{ak0%#==6>>&3XXyL(?&I%oa_ zFqvmr9;ws3Nno-Z4COEP(m$Cl(>WMS)`=|7qpL3P`l)#{z~b;j7K5QwubE%LbgDkv zlAe;6(Q^I=j47^V78Y;&>tH6=DX#TkqAy>JUAH=}dh{W#b04wj+M0Cnw$os;{pp%# zTSY3SJ8AH9cu)e(|8>!5<*c>`iwoN5-8JNt^2%CBBRASNP`K8XSZ?xz#HL1(< zZv~5nW30X?c?}2m@6Ps-+n%)S_zQb$M}n8}yC{bi4Q%yfp5Xweb!()*c7+~&Y!i;j?)8^?EK z4EqOLm{#yr;*B!li^pP9^?tD-<|)Qp#taJ!BY&+~*o?6#+k7xt&vZ@BBXw<=g%Mpc zoX51-^tgMB`+%Q=@VGaF$@X5LZvSQ4WR~6(_kN2m$|l#oQMMBnrfa`-yTRu~x^^B+ z=BLLqefW)`%x0#$+QNL=eYJk$Ymy8l@)xtt(5ove_}Gto#lU1;LZ7_;Yd$}lnq?1R z>k`s=UD6c?n2ZniO|Piz%Y4CoR$#L4i6GZpANBG0JJ%H^)$Ixgm-H3qYvabTj1sP46MTX@?f#13Y*IelzJaQ>MR zqU$kh=o}G48kjl0?qzrG6U-CBn!MJLW-p-wav@k8K55@Wec3&*SwDOPSP9twmoFRt z2P^#_tn7cVaxilY@8&dHAbdFiX3n#@E8h;T8_$QZDQ~9HO9p`$u7mx5b%|WE#%Jye zBEZbP+&+CzDzmAQ7AD;s>{%@9ZZ>HHCj6X3I+HQmjWtY{L=wS-FLOvP@jgEJSH@h# zVXC0%6V$n@9wFi}q1QUMFAx^UO&;;HuJxH=GjF8V;b?(K|n?z=SNk0uD*9cBB zA54_{99&VC<22Sl7Mo6Dzto)1y$!O_Vl#>CJbjQ>DU`!_QU)etcaq<2t$6=3k?gnF zbdlea!})oX0pz5`W)~vY0Xn&8(Tyj)V~(w3>2)MEU^0eWQyKY5?O)AoylGxOoCsNsMV^zD0-fi!}K49Ne#AVH3%muqfV_Yh*K+ zjD4ah_Ku_sOxCkp(rfq!w^(|9a>T;MlU+%^9~m1@DlO^dk>uv%W(i%DMK_7uwd`p= zXV*yW-^}T`iFWAXV5W1CSTLC{E>oRwkpwVV?izV$=G<;f_YkpLY`Vz7d+y@rvj&o6 zFqxk^dCPua3)AJ1@s{*5OyihJJeKrQh&-3)CI(mnjIcV9L9&a~>&zy`MvF}+S-jM% zFlLa=7F`l~yR4X>gC9>$fJr}{WYqR!yr0h|m%$Q)>2)UC8tr|8*-RpFm*pCW_B~HE z^fhA4MUuf}e)@^`!x(yqcKZ++X<;r>m~*)kV*^PBn5+{zA?sbO8S|3@i*6E`^6{~| z8PmvI3v-h;W$tXoT%_1y(?y0o6Lp@kj%2e%mrLaM=O?=?y7A;($1^2NH=b00$$D*W z(;7JqChLpa)c(ek^AWhOpQ(NCz-kwr*4V%O%~xWciIIEj~KS*IeUCszs-gw8JN6Fq?TK z9ZcrggQk2LPqHn#@us#ikrY_c8$s$<&7R0?P9*ceWZ$ZhfBGl!^U#lyjTW08vTVs) zH-s-`V6to#(qrYZGR9Q0A57+pPI~WZ^ax`HISnRb$GzYOmvNi81{T7G{hS;;UswBz zRrh4%;hxMU?)45~cIS_LY{dNwU~%{%>kIH~=SK<2LN^#pmJyyAssChf4mLi7wJB;q zLqglceU2e4dFn~p-2~W-5H@jAO_gBtL)hSbza|N`8jKzYKX0r&IZUtmfQ>@z*ykA=*1wxjtZ zj5PWnndhgbcr3ao+rdFiH!vN}ErW@&rLli`z8*i1;`A&7lYZhEj@GevFkKz8(ZVwI z<@(_eiqb9p|i1aR7 zn5GQ%Hfkz#)nKB2(!H*3u5aLAtTt)!hdDp}dHS-m#~9O;4q(#HEY-GEnaP+xFA+@U zONRQu?hmFgmZhdxY~tSD;5B_sNef{apFWhrbS`JM#U}O{I+4KV-Y(}1i_WDsT^Y85 z>2O{OO!}!Q^{+O(SJ+%;v59@E!tS>-W+)pi4DXK|{+A(a?y@jVk<8F5z+@eavRy8J z{d=avxe74RHc^-K?l%^7WlS+@EIP02@Pu#qT1L-}{L`GDxCf=j%o)OF9GI-1{_IDN zpXS%HT+Spg>5K0Dv~(QrU$B3Og^}#y`h_i-P0gDICi5)HCfCKfk`5-zHp(W~=!(m* zFg#P+Y}cdAW|VENg=tFOt*iAJb2(Ronf)Bu@h4smPGd8etn->DFKae$N4mGnqVs6e z8!qY1Z0gt>rS zr)&?{M*>XdnFou-2tKZOl@?$!c18c|+!B6mVwlpwWRp&YWWS4jXe_LEs!VSL>26Ao z?kjfJ&11Yj8#XZ2lpeKtdD-K^do|O+L|zv`C(oDn?d>t8S42`%OtBNg#O7g7ed(vB z%rM!UM~KNL>V!pSE(bh&Y+`far#Zdi5GJpS;+ZWl(H^KS`pl}2@ImO@tqe@$HD%`W z><2>F2mLxs7rK*RB44P^JXW0#(V5S;UI&Z7?`a*RI&%y)|AW>3>;Kn9{=ZDuV!(u- z3vo$!N$!gEEQVY)4ouX+g&1$=z1(a$W8Ta}Fp)0{;c=Jb@vRt(vL#z|x)%TGem)<> z^G+6>u1cMuWP_P}amu>nH4HE@<}4(2$g`SqP^4E37Ka0xXAAKxmTO4!k%E%^mGl=>1rjI^u;{aa2l5_tPYWW5@$7-%ooKauMrV<#NSrd^K5I8 zXCxL(rk9~SdUgh%YebPYV4{95#51V-wtHGLKXJ_&OpFf;u?OD{SBF(R1})8!Uf#sK zLD{bhmL0<8wA#Su!q^K6Oy;$!HyeGtC)2sq)t2;#JAO&60gS2sGBBCfapai2*G8_( zJ7Qru?yGfP<>QLoUI`}i4EJs44Oz@|SmS}oe6ibQUfb<878Yf?#)s?QH_SSxr!cXh zA$*AelYU0ohS<(rWz23*0F!x*=ie8t<7;$Xb69j9gP6{vjs!EuaPRvKoFaw{ z3)3@4o%q1Pn9FHcn5xLWRa0hLnAe}2`_fLPQ~b-oWDMBPYW0cFMS2@8EKi?qAI!@E z^8kxYmwI|x4)5#ovyNDp&pEV*%56IRr@=(Ow2)|~>v1mqyd^!1f1Xaf?#A1yElk(m zAMoYZJO)=}wK>mJ?|YfGIxwcWT7b#;l-y~Lf4!eEmuj~#SKh8S%F+Z&w%F9w4qtZX z^~|M?1e0wA`{Yl*K8)#b&%Z^NugY~!o?d9td5!Kzp6Bx=U0ZF@8Jg6&)Xf%MyiMw` zR~eYBXNv2?jyHnqhf0gh{H$j8mmXz)=4Vw|Y!b5YjtYKW827RKW6n>!U;F;{Cq;ZM zz+~*2>+HB69fBoUbop6Q7jH|kFkPEB`TIA8E)7hUk>;u@df^Ag6qm=sRPRT-+FfEy z*9t8*z0S@0)8`n=&nmL8Y3i875!DO3uX(#62F`3)+*Z$Y6i?=ObCGK}~ z8ZE%24)2l->J)zmFxj^fGQ|7*L>_~h8lpRx*dUCtcw0J{Y=7o!XTt2k_HY7B zXQj=J%k*0zZAuNH9?+D4REI z>=D7*fC*m~;F$w?FSyT{Xwgk{zHw3PZ>qZngNb~hzT6enrAXLJ2NQLdrYG+q_c=Wl zoj+UNL+*4Hf=OTSuCU-e4tUftyVT!Bi(MwMWo0lyt%C@L}?6=$|sj;M&WR^a2cn;WZkv4 z>GNPRhAemWncvfSzT{PdnexTccm;bXB%N-XK&9P7p+?x&_~wdfR+F4MUmOpMbDh~fNu z?dQBNFw{yg>1UK}ZTy#CiWsUbHZ|q(?yvF~aL)L)InM|=H|eL-Oo#jelj(VlNrS&k zWz1>V!DM=PPvMN5SA{MGOy-N%*x9)Q?X~sx>h?Q^H0VUpU;vWA^o0-J}h*zE$Qi*{gu<58Eb%N z?ZZhN4p{7}GG}$cH;n0-Tft;ryFJJE4HxP8D=apN@k{EOCQOI@d%$E2nlfTxghSZ8 zY_S<->)q^UoYta!9oDH~=KR!@sj1!g92)z@f=QeCZrR>drHw_W`d5ECe-X2ZdpyBp z-6h6L+xBsrPGhh|*MP`1SCnl$n5>_gvSG5g-%V3|7Ms|+z16XQSbBbCu0@yaPY7$9 z$e7|@ZAlONnnf(&^%H#}n2b-)9QV=e8m4PN%D`kf;61_iesO}Gu-H_U8N>g~XN=(4 z)Ns?dsb|VLAI@8X$@uh4c`q@pJB6Ed=JSduBQUAMdtQV0Cr8;@gs}BdN!^7nb_;Vk z&%F^IoYN*-n4a0LO(`Gaa7_bDwlS|uJ|mXz&IXfZ8)bX(pPRfcss2KXP2AgiF^aD( zqHN17I$VD!j^yWXUCzx`Hs!08eH0dh)7TFteQ7}M%)WmMW4LZ-Nl#M>hrYFgF-^H> z(HWXt%eakdi!PVU-jc`16_OQM%N(D}`Pa=(!~^-`^K$I*X|ahd z0>XRpK5L>@ZDLEIZ}Qx<2boR98G*-;MSfyW*n%~mi@oxQIv7mk8Qp`HXj8@sn;8~XKw3ui zyT+KG%&^#WY0Ju{J&9^W^lj{zjwi-0y73txa!!%({N2>rN;?Fd0MN-fzvE zEapA#7GR=prR6tj^AjzZFRGqk(c$^u57)fFn67pQljVSSChmW}7h`UHB$%u(ZbRPV z8A&oMHg)&!U61kgrpH}iu^CA|T=oO+=OalGm^dGT{gd4%Uo1J!eQ|HKq!(}7=6}2= zW7t#1VpDg=_Ah!@=uTU7xS#gZ6T5`&vPFmUKUaU{=LZ#6?Yidt%++rFcqokNoEfoT zGIs1CP^xqlHWMs5-JLk0fX~l#cXtaT*NQ&$y&k-u z$R-Xj8K2_XJ9RwoUp(q~i%o29a!EX6i|fo_vix!tdEF^*;%tje?9=wGxUU&&N{dd( zly%UXQ5uroT_@hjWijCVE|_fZ?gH6=Dz1tU-FL>1rA(*k7eiRj6}x35&2bgS|c*R4@5!H+-t_(|h zPF<$g)@Fdoa@V!5$M@gObm)`8WZ626BQgJu@`EPg-oYwdHKDC}Rx!JcCJJ6xSCkKjLe9U8@0;^{lO}$v+GD zd2d6Ht#4*{U)H4tNjyC*5lqJJ^A+AdY9nLrg27-iKe2Co?Z^1s4d-dWWcjH|;~n-Y zrc-hY!DRXA#-7qPdpUE?2a_>i&)f9>nltA2m4L{UlpnpLKo^w`tT^Y$Cqk{jF+2OapUz*bDBF@A=q> zd*Q%j*-lmD_~$N2G_fT}NZyx+>nUKumnFFFd*A~%Uz6zCV6X)Ip2og}D84#F#%J^R zbOTJ}*%Hh(7OJn@&lvi3i%rF~v{RkcT<0pbFpufnn%~$6Cd!D~l=oTXt6Ra2P+zdW z&2q5AmAm+u6J;xG7*1-3F}8y4Q<}bpuhFqLVPtr4pSCx!hty+jjy7h#I5S!_3a78V z4A`Ut-;=w)xyhK@TMib-*%o}(%U>hvwNeR2D=YPdR?PdewJ3a$aQr_uisu>F+qiFS zY5Bm8jO7vs*a7b6CgkVBAuXo~T|{&^DdFrLT%TU@a@AJGT+WTQ@Zdf}Z{pn|of}u& z%UDL%Ww2r#P+v;%*?hpqw-`h0O^}~;7<&c#dhTe87ntA=dmd#JHIsh6itm=y`kb%r zalZywpiaQ%20Z^h@bXDmp}Kh60kAmyo2IuOd&}A{7w|qLU%d#n6?gAb_B!@->QpiC z5vKEKtM3hG_v?ebMZ7sp=X|`JG3>bsX6H87Aolp=w`eGV^hnF_;J%@ou@~{%iQwCEdJ~O_B3lN{d|om>hX2)t3-O)V1arKUsj`xw6rI7G3L!L0^3-N z#juiOX)C4|@wpVJyAfI2s`yappbpm}4&5-^BvT4_a_;9VxqElQq59aVSGxmhDuq;)w zOmu`YUtrUdS-j&JW)s&_O>8Ie`el3`&s+;@YuOL52rLdpXdk%~dl7g1aX23XaGu7Z zGyAFOWhREbsuh`MF0I^T^8Au2Q2;k zEYQYM%V*;Fw}PuFg3U#R?~elqag;xU_i{`dxU?l>s$L0}7)DuY`P0OB=>0oB%MiMe zX!*2mpzkTCo$8Fm6<;%EkTkIF0p=*5N<3Q8(3GK!X}%J$d~UMM5aXKJ~h7+q$Z$_?~Awdj7$D1<8f-htS4_%iS6{QH?rr_0d@_oj0l-9P!rh~zzt zp*ZjD0hU^>K^NJq^lrxTyy+;3o&n}4_uxA0oyFB@j78W= z!5$Cfi=&+GXWa0@!l{hGzdHz-#90>hU7j%g@IyjZ9fSARahsWVKf{cN<_6kkEi!Cq z;hh+hcnm7iYf~MWBWxC7B9$J{rIu&l-CZyJI`3)5bT#@e%0Eia+A(R?Mc-Hx;#N54TD87mmDh>}JNs z3@mAlc`XiT8PN>s*ya5mj15!D@58%2xNbD*NA9WkCNOSNUmPf{D*>IOd=&2ET+;H7 zu}t@fEj=FZhzt0VT0RncQW_}{?=UuNVo3tZAz;%{J_27pe(>Hv-&%|Kx}-jUXEV5N zIN0AOm!KxldiKpS$AhTXoTZY#U-YbRtTDD|9nFR8dMt)v`0~vgn>~zu-)mhLko^6Sx<@wR4+5rQA{{V^ToeaW4F_2~7-V}g~U@h#^z`;d}(53ac#$5|nH zoRIHvKyAYL!lz?@dt2xtkQw=$IqI`Ur53X8#X&Ja#vq&5RJkNSyceufaT677Y? z&=be2-rVvYXN8W5cs>CKG(BV=dA;&;ls3~9ft7|c9d&-}JwMWB9I#n|QMnWTO?6cN z^!mjOI8&nWt3y1#B<#x=arxjYjOkj*BwQ2Vx^CEmy=V0Nd5k?`^W`8up5DXQ*S6mF z0v=z6+vi1{;5HK>D4ad)9Md7M5qKqP9gVLG_C#Z!o zN@n97!n}TVLJcTda+tSi#61V~n(I2?^S%3Se!_H`&-Vi6qddI_@MYzT^_nsUUl1uP zqtx>D#FeS-oq~vHp1HlLmRSKl9ryM{h)Jy0p?wc*kcTUmWFa@ZHfNkI*h5P)3#S5b_p}FAn*#G`H}dAbVG| z>D2O;*e~|cmj6~Trezkrk8^K0py|;9`1NwH?-*-D3Nbsn5J)ezyag#xhGqU4Smz+V z4Elb2V&P9Usik*raJ8(WA70jUsJrJ=gl|6 zdE0d7l6|PZJcc{5wm8zSKW}4(nvN1NxJ|n6>wm+ht`O-}9mIP_0yZ7xP4MN;p$~Z& z^SGnGz&qZ#O*9LVH}Idqj3wEMj-ovTY&tMBWxBnecNxT()2KXw_;~D%Nrv(C^<}>? zhH>L0f5#@q_bAK@#5*>TFIo}U2>j52I*4k6XKtsCV>(5v25Zh)BA=5f40T}h;;m!9 zFy>bs|KMF(ZJDk%zC7d|StVF`+c47QA;ypwdegJ)JOkV#73pE*8FU^rJ-W~Bp6hqe zrj7Kv+sKQoUK5eT=?7r zPceq~S7C9xh?hH>8)duug6G$og!? zJX-1TFmkCL^99X~oPEQ_%Mbhgp29r^JiRwDKYOEAOeNFB+bT|nk%2g%v6o`~_xL@7 z;uv%L!FmRCj`G*>`D>M*_gRKg4u;|jl8z0C|#Zv_);-meOj8FAeVqY8& zkFOYP_iX1ID93 zkt@9-__I5OsMo^;z$ewkf)xjJj`AURN?+hwWZdj9JOe=EDQ`ds$o}A`pFWEr zdmJyF+l#+!u+<%#IPT=Ur@>juCddxv=DwaB+fv;N;&*g z9bh88y4d?$>fHJhV8YK@=tCsSn>Z3I9AD7<#7^xl$uKs6)ebOwpsh%zsPujY7K6Q< z)?M*OW2g5sMDx6U4|~m-8NH59#|~O2wwvCKggWoKj`Q;(y=_8-&ssRgQEg)MokIfC z^ys;J5&Qd=JR>9yECoL)B^Yd$|irPK%d{YZRL_6*jM z31xX0)hRRbXdBwd+0%G;$^PGt2FkZK=3EXGI;~4oH-q@Kf=2e4Ovlz#Z8)2b_Yv(a z>qWb5*o?rv4pKJ_=kn%6-3a6j^<_U;CHHeGj%O`c{~yzJ>AW64ID!M3UIEs$|B>?! z#@xCO^?{8Y^j$>}wr{UQ1^T7hBsZ^3UHl4#Om*~KMf-~H2#h(k@jOl&j13sZ1B_O( zpT2vTc838!YfQ`_Zgp6L{@j-c+X>8=qmd@H=|{UglazIh>2QxrW9&Q4NC=@gA%vXjJ_4_^*i(sVszZawJ^63lD5*8XJ1q@NhW zTFk_}WTH0c+>6r~%hQWZj8>L4Gd}IaScL5Wm?(D-Y(@>KvxqT6YY~G!4F@!a9E|-h z{x@@i(47XO>kZ2AuA+=Ts}?=SSl;AV^rq#U(Y5{V-zKzX4EYR}&KZ4I(f0ec;2W0L zNf^QmChK>Wg+)U!dZH0q@VIcMciME z)w7*wE8`nOMh;xD^~u1T0a;8E?U#OvoMd^xDmv+Wqe zycquy}G;pF^tht}qw6KwT^lBJS?i*8)()>*JrSSZHivy|~LUtd0c6a8#jMZGRgNeKzOb&f`q~1%X7{ke4Fj3DQ zC-3j=zG*gUEKSe1tpH54X}TCGsr&sE#-8{;_Ra?|isJg?qXHsg=7p3(5)@4yas)d+yOzhcr z6icF@Kf*sKEhF%I+AXOUJvOJ|WZxGIN4#YtpUbs@l=mq}z*Sy6d`+D9(us$9@x*$t zjUFRCj(^~6l!i>pN@Pm4IY`!=OTPEYJjE8Gpq}&6c_Kdi#&tiZ=#+;!X_Ue${GHN? ztj?KwaQELx7K;rUgE@hnC9A?1@6FB+p!Ue;y$nNG=*2r8eXOJo` zv1e?T>hV+r^gOY6oNq7Wc1l$ImK4EvcEp7rXxo$7s_U#H2DUGecFOJzLt zTfwNmLGk+ILu=NRj%0D;BRKHs_y;jk>fL=)tMCiYv$8d?a8)jpi0|w?=Q7Fm5F5ah zZu>&FH~-^uw7@cd-KWcb7|EnE82H#$)N;utn!azP!s_#nIrm5wi!BCIKKW45lpS!- zx&u|bg_h3_!G}xsT2DohE6-bP{N7pSp%R}xx8R+BOO{A2sQ2xf3}xzp&#slsZkgKP z`|E@7;YkOd`)$dvzL47hF7Rjn&(;6v~TM|Ty?+jJXh0kL{}BO3nY_&en-tGaJQ%;$*mt;mm7EG0OcZ}l> z`{N6LlPuw^1XFF}?qEHSdxH@2U>j>L@nv?yXIoxdTCLbRFjUW6{_u8J?2r%t_jSqY z5_Dsel1cMfQx5qbY5~cNn*&fYdU$!?73tjc%llrHtl1uRIo8=chP#Ty)e8p=kSt@b zxYBR`IwM}!KlFsfNsZlQrlk|+ZAYGzT_Bl}9(FzISSQJ74Ey)N*wz56`rAb$8fAun+~joYJ+Di{zmHU`M}Qr-?^4gsU}FI`a@|9l zRlNQIwsuVaa}*mIU>7{o^sr*p0k+q@|1uRD7hvDIee^uVrUqE2$FHa6C6~W=fPHn| z4KFE{4zR&hm!d|>c(ViSie=(l#pVXswIAQRRIytFEW7enYUXokSrlORKUbAhY-xa9 zGVqy06k8EsuP=Vc^Gg`t2G~8{+?~{#d)~SLTe?@}pA>sJz^=ZuD&O923b2-jap$Rc zTLP@=@!xrV7vK0cx25A2%e!$YLEQuFqqqLzjUP}?0_>B%7fn#l>l0w}zI|4OVuJ$g zxeNXbOP6^c7GT%T%+xA2CcvI*I_u|(O$o4l-r4N=U9`~w_Q2%#$o=NZIvHU9IP~cI z6l)2vpByu7t72CL*!8nlqeYZ5=LeWxE(-%}@M*PwQ1O-o*q6YRR!3ze~!ufm(c;X z<$=-HDwz`lZ1yfS`Tk2yfbDZY-CHVNLxA!{u?4zNFUdTkFCZ&`qi{9tU}FRcu)N$1OZnn)(~R&@RSY@dIR zQ!<|mF!$~UUr=mAfc2SlUEU|Z9bhx=oIPB{+ZtfEth(ky#X5b5r)5Lu|4dV?M}Tea zG3HLidI#9!fBM65iuDh$Eyw@p3B`s6*xTQ{_b|n(1MJ8%ug?3IaRK)Fe|pYR@umjY z!#BKifMW3g`{T&JPgg7*WLNF>xMH&d><3l9K3=i80rs1%i@d%f*1`j<`t*W9s|!;2BA#VGUx;sH=Evue&9yGlwyT z_uTUJ!8XS*RuLQVhr15-o>w=8F~fT0r9O{HW~Qby)@c6w$RJmq^$QuZ%m?l|`?nqw zOBi!fohL8#Y{@d0GgfC#pS(KXj;&(MNsWz-_4JPM0b{oN?ubDLtLLp}%rd`z;08~B zePbILbBz5CJ2s)>ZD!0e=l<)ZZj#kCeZ(009#0(Q*?fJn>v#3?>=(Ou;2B>3+OT>C z*!7RQXQ<~@GGdFA~ z%d9E0mN6so!B_7XCF9jO&oPF%l6-xyPi|nWYs`;VpL{#O{PsQFur0E{)}bo4%>3HD`lGQP{uHK z*X1=&4;U*mHfrR4GyjzDLyu!DYaTLT)L*4cr*SG{6*1@bALiT5IAc!B&fSjk?9`)2n;45555M%U|0uSFG1vb7fnB}&fc4?;>$YSYH>~)nSO1)3cgElw2KG|zZK79z z{r&D;*Q<2)(b%>4@R~Efl<)5j3NYPXh6UIM>2oTT%rODh{LnxCrr4AKn|9Zte=9aU zz!&HUD!``An{u0CPX*X*@6KJM*!lpw>+$#x726nKdfqp;!afQxe+>-t ze|WNL1IQ-g>5tx4&+8dr&b!yWuUKV(&E4k#>ZZZwF^?W#?>({b2F0oZ?7`~~zF)D? z0rt+L-#tRHi2+u<>X@q~b488DuEBhy->0=j17l-^^SxK*$auKBgt55T_o)}|m8@3G zVayW#oZRVR9%Dnqf&sL&P%1#)>Oe-uqR_ zaMuiD7m0I@``&QLjumSevqX>YY^alLtay$wS9E#$rHdqM6dM>rl>9j09Pu_|7lh=*?J-=I33}pRs{r z{y)a4d0{b>v5DgQsXhnF=T(Vn#**U7UMG0{$b=Zjm@RxeGsRTKke1q)zpP}&8B2?O z-#qMhl9?jSSiN}UA+hR6j6UCXE4sTR4=Q5TQx6QxRYdaF+R>o}M`;eqq#F#6t zs2O#Slxc{ijNxvWvo7=MktcraDraU2^S1(>> zEFqqI>_tN|yidWHsnw&b*uq$q7<15rGiAIQTo|X@k}3Z6-f&M34Wc_^gN5(Uszfiw z8pS2EPIyzwv_v1qlH$DoKI)BEaBmW0miYOURHckJRt#gz6_>wq%n->;F@~|YSo7@8 z4@-u7%NQG@=_nzlGln-`Zn*Ao84qizjG5v;3r_r{WLeR|Se5wB+1GgOLyfqKF;kp# z>GdDUcnL9|vB~0A;~YV)6^)r%#J)r+-fIi3$misg*C;>IIz);fMLo))VZ zs}Y;8SccI)F;_gr*g#S7k2lvyRwLFk=4k$UlGw781}+~pGkI( z_=vF!#5i_c98trVqqRp91)W;$=dVUg zKJdPONtsEJWeoROwR}8YvVmd_V@HcCC%omgRW)KBV;S+uF%w^q@zP=eV>RNO+UEaC zmKBQ`n<*Ccf9P___Pci(WBc8EK44EtfPEu9>=hO7?Et%Y@Rgqaux1}%`!u|_QN`=DSTAcKzC83&&t9;W8eoqO z>-kL;uXlhgeE7CME7m{2#yq{J*S=#vSb#k@=^gJrJ#_4;ij51f16mgC zq1e;_8}^f*|3$HQfPL~v&9RE51I%1>!A*+I4zMX3fBJ@Ea|3KvgL9H%w+5Ks2g6>e z0Nd;SJ@a~B8er#k-`ZcvToGW8fBnSw6k8KuGyi+r*A!b9U1+`+i?8C*eKz|p7;%A&XPHwN%bHW~j-M}? znV!zrPGbC7fBcJzmt-sv_x*fDtc5Yh*t~czub-SXu41er=JyrxcgAp5=c19l<@2(} zLdLMSVe;3!ek;ykU@T?baPb{p-wpdl7}N9a7^@h=+E4WvJ>~N-|H;^_^u+J3&#JVn zXAJMv-F}9b&Q4+@W0|J!T;{Hl@yzuiHudm{5c5AtO>B2_nvx;jEB8MjAh*cyEGmxS=PuhhI0&$++sCbi-FxE+kJ-_MIP0L)&n3t3EG3+N= zdDKWL6Yo?omTmC;ZcBDHV?yk=+hfY_I&&Gb%=$}@7_4O8%2+o0@Xn7dk!;k+MH<7M zLudQ*HoL}_GB*BHaVhmM$X+H*Si#t+kpn(haH7XfTf-R6GPvi5UfrBHW}U|7BZA+* z9y#h|#zu|w*Opvklg4Ng$oI)Ri7kv7Szl&ThBhv%cI5`V=jO}A=Ng*}nHRj)WuD9f z_P+#}K0n_lzz(|jsNbk~g92>+F>`*c*suV5bHF2~DmEs-D!%c-bj79wn6u&0K8j5b zum>0YeVt;-0DJX=H}d1@mR8tR0jAHF&)3+EB9nOazTFqd=NZ;Q#vJ32r|Nl?Awb* zczH0>6B!fY!PQUy)_Yz^njoqkrbZi03(`{iQU z57b@ljgOM{JjPJ}zQ2EePo`MF*q}l0Z#vcUb#?Y)#zbcC?{+@Piy539;rxQVC#ZT<*9o=8&qLqX70;aH<&L4%?s#GFrINW$ zf5z<8pi75&W6B0+C}TLsLA>##jOS!=*p?;}>xhRB9Xcg~*`HVrg@i{|eyneBTjJeJ=5B+q6WQMhbG0U#6KI>7*n(LP{ z=A(KJ@dB z_d5d2Uw6X0M**hquj>kpsIn%R4@}sjr+Qw`0Mqx#R|c5g&l(V5r_H_ld?m9gz{Wg1 z?Lx&y2iU`@-#w?;!~pBvb*DQNtI-(l0LtoVX$UZVFL*Y<_TTdRsY>RY0IR*>n9Y*m zj$6hYw`WI|J93^eU339=H0y02a@5=1;!lX#>=1nP%^`Mn=#Q+eWC059xJ<*Gco*6 zzoTp;?->8x>)X=T>D-Z5hrBEq&hlbRX!H6a+nX`VY?$`e?lPWZ^k+=i>vwy?^PeI$ zlrhU3x%A!RWW3!(HDgA??+Y7=ag3$v|I%`^HzzPlOl1sn3wNsb3U(85#thfr*KB0c zjN#6x%YWeY*>@AO88b5eoTFpRWh`s^?X9qHWy~`7zjN41mA^%d87+fGKI%O$Yc6FB z@7(0a+B=CAjHT=|hJSydlvxp5!x;A0P5tIZ$!xKXG3*f>Fr$}b*#8n>qo0}O)gz;B z6Jr&z*ef+j^}H>N;hyX#f93VP9Yfrw+fvr(z1PWOWxTA>ow178m*@U!iDYKB7h}6= zYfGY`4`Y_O`@4tc(=v!L$2e>DkW*CthB0O)PdmGt*Jr@}D~x50Y3o-`lJShXDU7AE z2TZ@^8do^J!m`3~McnxryED`#F*sndOY3FTA|P>ql0^RxyVAx>`1W zT|Muq0K5D7e?KpoWv*u|Yn=Jl0jEipFgG%`lQ?Ws#{~AV->NJfAms*&1L{&S)X$KQnLm2qh8rYvjFpU;^^14E`T)s{y0wgn>@iO+ z*-bLreU7niV)Cp%9xNHw{}^-Y?l^zG*WPv$Z!=~aM?UaV&#qI6t&DXOxBY5*y_AXe zZ<(&!tg+8idrp@uYxH0Y`>tjgEnZse-i)EX=huWQV*MF&41dhkO$=qsHja5~-=n2W zw~h{l_U$ZX9l!O*Uf#3DIL2_+z&V@mmhmcLQyFuNn%7?(?WI%18FTCYXC82-WVqvq zv4p$!pu@i+S;D2aU;VUT4)DRnzn3f?pUYYNwr`(syJEL8X3e;3kI`pHX1ny3gfBB$ z>+jvN-KCr*5Bbg;USARKr!t27)jm!>BV}gnHH;aSKVO%z*D+=r{ySo}@iJ%e_aA?1 zt4il4#^C2S#(pOm#%+wbb+?U~HCZyt6hGDThdcN3;~dB6&RC;8{-#mhxFc)yVyq(e z-zzTk`kxiCK8!iW;7Y?Alel$*7)vxR9CEPNjy0OY7!%^vzu#0X(^(N4!DI;b z6MKs(jAadfZ>U>0ow15or)lw{q)a1|WDMt`HuqHN%(O7Jx6t23yo#}w>?N1IzCy}$ zjQNbY_LFDs0E z{>PY^^7o?%YdvF#x5trL8E+4ia4`Vhnd!__mbk`ZM3o z=YlZg)0#^VhCJr*o+`;1*%bToyn1RT{bUZ~vFo^Im4mHJ?6yvo}9zSeqC_+mT;) zs)%i2%yr!R4)*3CE^_El4qvxPv-*<@{~({2%64b0Uu@?q_8y|r(u=V~%g;VIy1!(J zmOhN(4E^bA&X%lSY!G9vv(xB{VCiIot}~1=BkeqK-06}T?ij{!&zAjPuP==4vy2&y z-#YWMn2Z;%pU#+@x&HkwS4(EsCK>GQEG1t-G4_MEbVO~4!+MQ&)thtdfoNx2(O`iS?i*8Nv?Zq{ZzURqRGMh*hEX8>b3x2aF_ zo-&@3s$#5P?Byr3U6styjHNRZX59b2WQpuV#`?v&neo4QOw=%zu`0K|`6tQZb^~KV zd@1?0mn6$1>BbR1@3;^8NBhl^th<=Qn3G!3_vE#b?Ih*}nBPyHWh`JUYrme@$&m5t z?Zu4sjrqO+XUS>|cMjE6KRo0R87~!I$r$vPUz5T+!;B?bE_-ZJUm4G^o@30)-aoDG z3CY}CE28pFcMeUtZ+3x*I|2&_aFXGMq%Djgp!}=G{zIA`c_KMy}Z-hX_=2CpBIv0A`X-tUCW ziqn2{1b)F^<1QbtKKMJOWijI2v0vf@$!6Hg!4{#$5u-xx-dE(?jw!$QpZ6o-Sm(Yy z!t+`EV)MaNnSB>|cOU%FtA99;3v8`dW=nCl?EF7fjFrzzWamEP=Wl^DLp#en+>WyT@jDM~Qf$yG(2-Z3-w~EO z|C-A$l`PZL=}oi)U1U5A3B;o3yLtWveT}z$U+^%_(fwr48wbdEuCs_S+x6Fo`o@+j zhVopgo!i?9XZo(t*eb?cXN_W*2m1x=^X?^Yx$1fA0_>XoKE7WvthF-cnrn|6`cKKQ z*2-8S>G#1bdkbSu>Wb!Hc)p-}OuXag{Q;aQ+I7qHZ%CQ=oH6W?$e#z{I=vXn8o#>z z>##1;Q6klcF_FAv^3zv)GSh`mYL>1pzLmYrlQ)x7kywVp3PUqfTKtH}A@lvBL%Cf>DVOo+*2PaEvz zPt0e`cKtOs+g-@nh5k7_>4qg5TY(e$UqAV83#3ffT&}TS<4m;)BTt_%8Sdj_%r$+M zv7XY{&qO>vVZ_&lQoPRM>~Zv)8sBQ1r9KB|w9>!nr?W5|`rK!^k8^*}nPxp0Yf34K zDw*?1e!NKvL1x!jCI02JmR!3?Um(_>F`GWl{g6!ZJAS+=d7+)fsF78Sjm+hVB6b!d zr&Kd`_IUc7eu$01Z(n9!BpB|Oy~&}?3wz3Z2YZWG4YQ(3%`r}#1_O`6WwsF6Oyd(e!fO`qX>cE;HAGA)d$ zSW*vj7<08ebdSyDjMcIEjOA6E)9nJr#-F2}NIF`?Sl*O!@s=>=pS@4^xr{L-QRZQV zVmQzLavwpa>on}_+vggbv#BtpCC!+n<=siqeQipAYqa|tDc&5$^msVCnXx9#M`He( zF`V1v{gBKBjJb6>Tf~?y6LXr3WlcYx>nvl;NNB8X1!H}+cGGoNF{WZsS!1sXV>nCQ z`+>jCu47CQikCIkGuEW#-4+`dv$Q}H=e+m(#9uz39$YfAd@n%qH*)!RNZtSZLhn*Okt zkg=v(Kc4N5VN4OqyK7J6>^VhIE}5x}Wi)?=aW7-FnxD7q2FCn5U8u~`jAgX^+08AC zsgzJUu{Ob&rIi_c2xEtcDz4CO&6O_tzD%9*pVn5~*H{F`w*IGNz|<(4hW|sgy`N8^oCY zyrigNOxJDJsbI2TVW=zjtH!+bh-6j&|RL1mlqW&?a%fwzn#`L_qPMR@252o9~ znEt#}c1}?icjhvt+aT&6V|qK?FSdX)TRjmUi$#oCj4fd-!E9+6V|stEKDmN1^)%AE zWv?pAvJGn)!`zAY(^;gAb&M%OGBN+h7}L>=4UFmW`o%UerrTgfY-UWan|6FFW4cWE z;4XUoLw)pqP^as(8+0d~&}|>uru#F$DYl_%Oi z#`Nb2QO#JQMa4uvt8NTqijYjyKgKLuQS_nBsf_9EU&@@$*i5ZohxU)L+_lO%v7K=T zWSX<3{`2T8JH0&hvKC?vV=9&`m${7T<$^g}#&lak`^T7`cY%9h^t9-H!m^hzrjP${ zhbUuuIvs08QHJ`*SXS%XV4j(=l-3`#>~)OsJgnzT>nA6Y8yM5mi8)oqbpP2+Y-Wr< zZ>wVHD?SRJqNJi5Taa?TodZ2F7$h(Jz)}tXa!@ozudY9M~|$QJ<{V*wsoPe#0iRQ#8h(*Duzfu}4{7$}(qb>@ktf7Yylr zzQ%YuCm6JY6j}72`)bEn}u;pJoD=$!aq7c)070v7uVLgu9M0JuPTc z8LQRmH1@YLHbIk#J}qO$SS6L_95*wj&jC&}wiacO&`r;uK5v8d6vp(tV=j*|ORIkv zQ!=K{SsB?%#`HNyjEfmlxg%S`KF6XA_qH&WHy6aiTpnXzVdXi7v5cjjNaaZ)HINTxA)5o3Bi#`Jlcgj>y+F4Goc7}N7mpPa~;9FZD35F!|fYOGlqA+ydRolX<vs)H1 z#$+a!FlN@Pn3T?CjOk-v^cfiA{rOdl@wvmbjOlu}jdhHvlu()B{bI)0c+=RR7;OGA z*000b?jF9)^Lb&Mv7{K{UFkm#&%@fhVwg`}&DPj4mSK#S%R0tVwh~L_xt=lIcDu)D zhmi7vt8s3OA1`ZcVoVWfOPd+f`?T=8jKx_$OH}C3)6?Q6x-!O}*Ml)V@8+ytjOp<@ zi%Q1yu?6})jOClnTwNK&Sc>JLiZOldtb44QF(ai?LwXp)n4X6wcOqw6JjgfV?>zS&;Jn4X8ax)qG+HgB1$7}MLazOl88>FIRq)-k5XOD5JcrrUfXvw<;H zDzc7kVocAUX>DdqkLRSf7G>G2*i)~6dc0=4D`R?@p$%tD_n&5cFUByj;Qe&QzPL)p zEUjNKL-c1%Uq`_E4vgt*M7CSS8LOMsjOk^aHpeigQYp)NB4duW24;+%%9uWf>pIgJ z*dj7J;+M+CxT*sKodCm{kt!K>8Y_Q4Q zz?dE{D>gBvrxR;gj5RnaCgwcSTNzVC+L`E~*FRk*K4(mix4Y=Um~KluiC&y(X|df( z#*&)f#aT&=(Fp?br!(%2AH0_r!V;3-{Vv$UvX%S<5jJHHF zq~&Uig;h-I+lamVwA{+(uN#}XGNxkD^GvHpQI^T}Vodi1c%PCn-LBEEV=Q%%dLpHB z5Mz3u2xCLW^ye9NHDgL*uFMi+7}LjNxLcetJ)W7Ksu;@iHlgPMdl|u?dd#U-u9_px z9IIl|I?y`CbUk#9Z2;?@kEi=O*M1v}tV_yN5-AUO#{euh51o6S&dfx&z4f%r(Au%C zvHcm-_vlVEjs)}5a>_U*wKHyQJ`T)Ji#|t&^s#t4>lz!!o_CH`E?r|ajOptgwN4TY z-6AjVdR-CXBC!4QZ1SmoIOQF*4azXJ2~t~0}?o1ReIURreh zCEWF3emZp~#G8yYU8tm@-X^v%nTk+ac8zs`Vtw7}^PeN9><{4E*{Rw%AmJX#;^}Fb zG-)`Cr_V?38XFJh=TCp0F>X4OxhwM_S;q7{j2t%?tXICwc)Ud{p01-*b~%`@hX$>$ zXq>$Y%(uZaC#omHe~Kr-{5)i`KI`r|%iGl2g*z0A_$BQRgLNo^i1Zgl&S zo)+C-+eS|?U#4!myT&TP{B-JNop1(&`MOm(Ae(TSP66}N($c6X%|T3L&(rf@WNM1a zoHQxP;^{UqYGezGH$}5Ej2prHI##Rc$V_|>%+H^t`JM)I8JM33J)K=+4}etp-=)2MqJ%(pXDD$+-GLLz;cMxCOa#ew(s0`t>iXtuO#>~JtY4^uRsg?$Mu z9?!#RU^)8~m6%gCwSIZRod~9Mdj)HYF&7J#vlqnU^GjJfsTlk`UrVlQY5|k|i6Beb zbBe}u?Rj9T%&rpWPWH>iuokO$NDJ>XnAS2dRsU`c>=*tOm@3a(@vfIIGm%;grt*HP z0{Goo%uK9j@qCCrt??#{r?>BD|G@mT7}|U!_E_%gmkWPhzgSl=EnZSR5k5J+7nq+; zeJ;pI9?F=CMR~BZgNrhw{uK2*l;>@DcTdIaEM|ytV9HOd#`$tSYqqDVc+fkTR-XN0 zwP4tOkn?A&v4_@=moXZ^lufK=bDZcyGp6@xclFH0< zZ!XFv7`KBd9jz9pPEs*xU&3O>6d{@YV)rqo`+3V=!I<9W7{;TF>GMmj^Awn}YwTsz ze28Ja$l~eaoK#{XV|qF*`(4H|4T^TgU$!!)+o0XNGb*iLF5)>qp6hgHO!qxa?ml3? zP3Uc-5C<`)BvN?_aX4dkMp5Wb9L=7m+e`OY6^o~j;~Jc57EiZpAqRxm)SQ~2c~>E-;0{CT39???`ii6#&qA4NX=tRm5MC0Z!(r?QWSGRVi9Bde!h(T zBQRe_DwdS_GZs&`Gu#~n=KGMdPggPF&#bjzzU}IBa)$LhdtRMp*Gcmg#*{=#OEU2$ zm~Vr6x!|1x#`L-(#0QM&_Ja39_tRzS`b(rL7}L{&_fr`&wf>pw9LkuX^_Q{@bnfn>_MvIMraj-__S2%7eey0QQ%{R!EMqdc zUs}oH>0?U6dYr}MzTgjFT3R%_#vM_NnOT(@@^!DX=W)A!o5j=h*O1x5n370!#Wg`E}-UUcR3>X?+0yFssg88`8J^lrL%8rA28pa>3yl)MJ1SDE*7iP zgTefA(dQgd{*3AIn%wd1dAe?~R}-uck|*_NX=5OqSp%l>w}$Nl#GD6Xx{hpvZqe)Q z$;3N;nt#FiG>gacK)2GX{H=lCSEU9UYC(xTN( zBT)(FKTpLX9a-klU{G(aT-M-yIYo($0mJ_u)Atvc^>G0Ic`6pk6gZUG*X&C^Ghrq*ZT)x z_}?oR{dtD9&w+Zm@b^~^XH1_T#61IG%4Y?2JB~434^3_@n6E#5Y>0E}!E*V7k9m;7h1b=}$fUZ?zLYrE{^ebzbu+4l|>UfeGE z&;Hy=c;DMK|Jmpxk)E9?1tR|$rRg_fUC+a4|~nrZ_9qE{r|qd zeZb!juzSDOd)k379C+42FB~-a;6EHZq4LSfF^By6kdqHxap=&)?mO(5K1=%?-uI5a z2ONIu;T8R^>({COy#Bi$G3SU~kG$!~-Hy89sLlf}9q`eB=7H}Gyx{0Jj;=Z8kH?H3 z^wgl!j$L)^DT7xIK7PmpLk17MZ)m?S-}&Xkj=STyLy!N#@%vYOt7@+k=AF>(#H&x- z>7+|f+Io^Z?C-gTIZ9{HV-{~0;;lpmk6(kGO8UDLOTqe8`1>r}Rw932gx~bvY%wSIo$K)D#fVSeyI5S0K;N56(i;S0Kzniby(rL;gqqmh56Ml1SgV6w>D)%)%#> z4$6m23CW-sbIBOn{Id_*sQnQ35nsY2Oi%B>eem~Qxqt5iLX7@J|MkrMdw)?c&c_|F zCidc^ z1z{aRZ`8v$!cv4zXauGq{1Rac!b#}ZUxM%y!U5P4F%{vv2!BS{51of30=+ZvH-sh z{21XwgeuIB&Ovwkytoh@p`gk8m5p>j+1}pI?Zu4B?*$N1;P{6~YS$z2O^E2+I)OMHo~m zL^Hxu2;C0Bek+8z2x}3#94f?Egc}iFMA+{z=nmmdgtrie^bx{Epc}{b?~AfScmUyJ zgs&WqGDmm@fqqU$xDtVEWi@`2t?b=T+D%(+Mz<5vcOg4bHsV0`g9xO?vqVt=Z9EkXEv#gO8N;zBQZD?dhxdKH1bS@O!VL z5Ent&7TFN}oQ|OEi)@SRL)jIT;kNvdZd*Tq{Gk6)cC`si*%Rqc`5)b$TJtw#d%Dk2 zc0@KrzEIiFkO98WA-gQ(cS!f-dr0TXj;O4*<%7r`$q$h}NEhUfs7{hkB0t_1zeILi zs!b_-BHJQ+BDVx>YDOh*PxtQv$<{gF5S+Qjr{>Km3^UD zK4n|Vu1c{f-JVFFlx}L*lwEykpl?^D+Eg5I$;PRkE8C(nrZ$brShq1MUu9$M)ut8l zNu}Bj)qQ0@WUFL9WUI<{$X@P8IZzv?`y{d#YU8M_C}tT^&# zNA-&AnSO%)s4X@__Dy{wvTxlV>9(WW%n$H<<%>$S8D%GABf5RGw`~O5s#5Jj*@WIc zku8u9CtLUn%1GHmCDtVI2fV!q*kV@tOSDu+VjqEh_><(=}~7Mmd7Nq&?1xMYtzYK&CKF3PnD z>f@=gQP4k7+eLOkZ5P=E)hGHXr@f%ILiZ7*KiwW$U;}!4@k|*uLH0oUq_HyTRQDHT zlLH60z5SSj?|xp!%t3n~Uq`wly^+r#+aTQ)>r=EgZl?NN$Uf9~mHMI7k0(2!I!^V1 zY$Z(Jf^3DJOZm`khI|R-L$@2qvu$tUQoY- z>V;}!s7?fJN7+j`wo=GW$Uc-GA^T9iBq~2r%oYwCQl2e@wShwV-_g1c_BVs$4)PCC z>bp>%vKji=9(~G3+n{Ii`!rWZev0N*sjjzWzKrHMij6V!zGc+&ss|4J^t@P9V~wEh z$)|3sPf6qO*4l_-^*)JwwAQyI|GqtJVl|!{YzN547n=8?^pQ=FUkqy#YOE2pJ#4RW zXV4b5We4Th0M(O1{$P9QexEP5UH98sV`)qKzdilH=UMNq)qAS*G=EykxKi&27Hjhx z3h2I2osUBApZB^Rw#}#ccp5L#oV>o4M)OpvzW)OHpr0tli^X*Q$qv#v&5?EV^@N~x z9n!ZN_kHEKw(Fe6ABEQ2$%fie-*3jVg6(`qeQ%#J9j&RUdfwJLPHR4e^sVcfp5`Ug`em`TOX^d%whm5nh}&8RFSWl(*Xv?+`r92k-eKeJ*HHFK z&ork%b8z&tJ?C5do>bU}M_H$7o~WZ<7p~XT7f?Fi-nw?$LDwC6F0AKLb^HtHiuUOT z=T^E5ll!#wc{SR{I1qax$fuLv(BEBCd;BLOp58a7IZb+Ztu6EGw0}Y0M??GJx3zbB zF`lPvf!+t8{US66L+=EreR#AFp)G4J|AMR?IqydMOvo40_$+}6 zd2Fx!bmX^+?WJnZy1k|yb^ck`_x93tF+J<`n%@1{o_+bfMzmku?$9&$;kur;r;ab^ z(D4o%pHuy9FFilfq38b>dfuzL!)NcPeJ(VXZm;@$ZV^4xxH8JQwkXC}^e%gQpA*v_ zYu_{n5k}u?PF9^Gq|d<=8&}_5MDH~JLVBn95PfZw=2o`%er9@)G zB6|O<)%DLpJ*W9W+Q&w9q1gOcx$i7dJquIkOVRmPMiy?%KZ`z|e86Wx_fhX()P4Nz z&a^BC_V8V#e|wz|NAu{#`g&APX-=K`WGT#}>u1Cj^9kj=zee--Jo#1BQ<(>;q^&eIY*( zh2A@K?w|jtw*lm1>4)^L>zwL;)bA_aSVZq_(K-3ww(fVO{Hbx?=V6V7`fmEXJDtT+ zsK5U_$}j5vfZG2`=bKRdr*?*ZbX$np4vrjMxc;}r4%%u1O8*`6@H=K6erAV`i}vLT z?Tv`C54Rd+-(F+7eNSz_x=d@)9rc;lXMLTV`tI~YZFjl;`+VrLE%SE22%&cx!<6I4 zsa-FpA4mI++Usm@>Tl?6Ikl&S+VXPSaT;H%bNTc&b=nU{=MqpqNuBde^F=$Nf8X`A z_VWoH{($=f8po0Er~Z6^VA-;S37@eJL{R|U(50J?d9inA0MTE*L}Kv z&diSR<8MW*bMi^8oiX=$_vO^~mfNlu(|dca&m4zNW5*t6c}ENBvc2p0Y?MFw^C$3| z+U^6!$o_n}efhTZ<1fTBI&}W&dwJT!r_)%WSo=*jK=W>718upVpsnvQtmx2p!TuWU zU2G4X)B0gCoku;-y7$GLw=#dRM}?>$7V>uE)FP3M2nygJPp&>3K~ z-lOlQ+SXnwI{!;QTZH-}!83w`@2}GSxX)AHo$6#Ed!Vs2&C621HL5#E)Ot&MjLm;i z#3nk{Sqker$~kzlnfCJYozLj-^Hhg-l&`108tIz)YVA?4r*!B$w-4+8i@xvb(Dx3j z+wY?6+sls+|4N4+-%)kC)VXwO-;3R!+?IKlE83uInuAhz-nO;}j{5ehk52vjLUXK7 z;CcF<80yD|?W5Dabafvotu=-{-<9@3ZR@_|D97k@cK3nfuxA-(su!DoZO{Jt1xQPK z&Bc+ue_rO>>HG(}D?3Wv7t?oZ?2mNlyWqX(w126PzNx-aT`l))NSb%i??w-v z1sYcORHsULA0~EY`_*?F&!YNH{h6?SU-|s7{=PkZ{b!-RFKQ;n zyp;OgWqkY9@Bh#G-rjz_6rE3MN1cCO`fr8W^6gQ#OC6_EohkP`xbL^4o@pG|p=-X+ zF>GILTXmXzihkGbTkWXt4qbCyx3*8Btz)vG6Fz+|XtDPbufliRYaISX&^67WM7efG z>(r(C@^bz7Z##6o!{*j?A5QNz(2u@PqOEm1xc7N%Yq5taUn>HgPc=)REN>CTV;uR1S9 z-!yklb8J62inr%<9*ENW_SX5HXO&*x3+cQ=-$LAodj2B9eutqig>WZAYjZ8R^(*X) zXpcP+Q#OZNGEfVw2mi&u!va+k5_u#@%1!v2`iqtl&Ndea{k|wGrjqO0lu^F9SNK z_qWv@In+O-cPZ$-1JYZu_fKe^cYBY$=!}#Pdt%+^OY)o)b;cu|pF!`AlOJmDbN*<) zD$2c0G%r=m-_t%l{rtD>J^tQp%J%mK9e$wjoocjSirRPDGu0kr@QEF|{!I1PZ-qV% z@ZR|=XD*%m@k!W|Tg>Ob5klYOhx9X`sEwj_qOJ36^j;&a6O}usPVY6A;^*mn#LM;* zVkH9k>z?}yQH!t`;Vpy{4iMrxgr^YneQh+yy}kSQ#e97!X8}<IPQ~wA z5MDy~Je=`Qbz%_a%So5icPh5dO8vZY&U+?XZm%)mrERc>w!H69s{Tto>$?=cpnO7G z{lSj%1^aakr)O#lwzX%5_RG*-eRa;1E$bMo=Ue0w>1roD~r<=2f4J@2qSURWKI|JD0+t@Y;?7tu5I-8#;cko~h4 zuqURi_jAw~q^!CW+-NA=Cy`}~m0I&}TH zZLix}pP%Z`@fTjll~X%>_Kxz|?bR+j9XkHP*W+Jy==ck-<4@Y4W7;zj<$M^;?W;AA zjydoha~I0w^E%q-9o0s+=X-?T?$GlN^Wn6vTdY4ud!5?4_hAEc*w*pYfUmZ#Uei7W zdiR*twrRdEc#a#*@zDFT`d)}I>zlMj{CQd1j(W|bJ?s1IHtN5%Jq@&SHGz1m~h$9j85Rv`?A(F!U3}SrEnct}ZO1bG6T| zV|{b`uWz>JdkF6p(RYWQx4)j-tNlK{hPU5Tm(@E+h4f7Qx8Qgzs&UvCxo=MXxwUg2 z^nD97=H1@D{HhMUi}Afh!LyX3JbQ6R>7AZitQ}t$(7mefWP?=a$^N$I7>#^PsdMY( zcfN>w%=Px1%B7ro-`0KRYLEGW)40!9`Y+_~!}@y4-+;Z^x9?82ALiWxss}V?qk2%v z-o$eDCFU?|G_b_$6J?3V@ z_T@`ChxPpqJ(skm7WFx-ucN1UPq34q7c9idi zZI6Chv9|iRt>~HTZChhA@-gi-CqwHFw2nsiczzMbXY`&{vG$wZ1B=?1A7pg+@*TDJ zsWo4|J#>9hhpyYzpOas#@9VFjwWjZ=>-F;;x-NSEFx9R07>Bj@8u{VVJAC<$^5yM$ zUV64e&+Y2RbsyfIdVaJ+&pS-d#roh;x6`|s9X@+U`E30R*6lqXKA}U;JFG6#I|EVI zXSxfA&buo%r*cax`lh)Znp2@W;pseWIxmmjDWkdEDE6(=`t0X%-jv?MQ0KDHoc6Zv zpQJMnX$_RlJS=wa37vmP>#D(htaO&*0~niqj6ioJDf^&vSmXVLpnIa$?IOfR=<#0s z`+bBXYUTNAGx3}DE7RGnY7fzmd&={Q>1@f{u+M{h8l7QC&p7fx`F)+Ofed;E$s|tS zeKRKI2W9rKgrH}tyR|7@ltz^g46rL!E_#qvdE zpg)(=sGdvdJjM3Qpip@iN(<$Y@)xwh1)409t)3e!2VJIadqH`xMJ(^AIzO*bq%Rv% zUa%aL{X7J@ditnbsBV#+?OOk7yHfg8wp>i^*@zpIOV27rHpM6X-ve1>!&Ik~o|XQn zUa9>Tlx9j7*#P+_Iw!S|52C!2E$C?{+g0_7p1T##B)ij}r`s&0OUb4(QRP8tpfsuU z(X;5^r#ATC(aWW+_L{3pNF&9)9kM8`Bv(%#rGwH~tPCh^D$kUD@+TyZ@~+bV7syuM zA+GXFap{?QnUW0s`MESA4V12++!GSf$h|QjN2QCNP3fWMZp$AAZJ6Rv+!rBxd)V2w z{9>OA{PI`jt(UW|50zg^Zy~=pOOr+U`VIa~GD%OAj#Ap^pbhUm!%t__vdw^OWmj#j zACw+t`;2-?;{Mp5a(zIs;im|HMd&>fYpDox5mq5=ML3{Eh!F^B zgu4+oBJ4K{>z@c$B0P%lUxXnSVZ8z2`v{LBY(*G+F+M}M0pZsOA0iw)TZmBzEeO9r z_z>aCm*7lbge3@1BJ6&t5N9G>itsChjR?D5Cd6q7vk`uVuo2-)b5PF^u0U9U@CL#m zm!n(|ZbDd%@F4XNav(yUB{%~%OQj8L+OXgm&%QFOJz*Dro52-knK6LV*bVYh1J0p7{osj*I&69pf|D+qTfpW?{SmvZtD(}0r@@`96lTN6-pG7>XS5&4{ zx2W7zd4C9|%AE8-WlrU-%2_XC(gBq->4D0h%9+Yol{=L+l~vgCrgEh6R%N-Zawj_t zQ{IK_{GcnPeXFt`i+?vFD0^>9`IlnrWUpcDy*+H5>`Axxn^7KxY`#=KQ_S8~S^pf* zDW|-ZjVt?Bc0}b&{+8-6*?cj3CtFv3rmuZ9)sWHpXcE>`RH}{ z-SZmkFGX00@L9FzSCKZoy(F7H>{`5=j8I4iWXq~;yaH_-=_)FpF$2$3x+ukG6lxpE zHz?mxs9hxAp!y%wCX&BUeuCOW^2yX6DWwlW?PsxmNU80j@*`1|tt!_ADC1JfHrVG- zW%_ya$B!WIdYhp7KJVf4L+1){9>RQtsLOmUWd46Ga~g~M8~LX?c=&a)4^HEYVq*$w z*QwuHNKe%NuYn9TW}rGw;~nbT(O8tmI5d7yeR}FA6swPg+U`psTh%-AZMq#$|B1$R z+ZuNT+ZoEo8{QZ|^}SVH+?Gv{eNtOPekj-~MtV<;AOlAL; zs^gBRnVCq%otc@+8HsGBrt0WpYZ56d*%Y^Hni^{|vocw`G3%tAq*Fi3Oec-5ZB2#b=k`1M5f71 zR%WtI@q|-(?BJsZ)ihiA>YbSh(@SORj!vYKWW%9kW#h?2t*i@SsC>-e@EO@JClusEtZcL=0<}wq3#+_^=8NRY5 z8qIneHLT7FU7(p}YER23ia6Bi`Rwqv)?AM|m~*;ETjeAs;pAO^8ChvCQ*qVZDI@v? zPA#5ZUMbFWW*#>*pZ0Jb&2(LJRycz|i;{HAxb4aeg-efXTaFt~r1HA;+k`So8GVF| z6W*(`jcL;EdvF$4Msbdefpox*WEI?E0aMFkTK_MzVLHI^@24E2ES!89}{_ zyaj}q31~EvNypNZ7S0(pn3)DmSQ&YP1-Ld@WT|mIH(lS9@YNNjYBZYJhBA_Y?j$^N zuJ0nfLukXvq|H=FmkftzyU_CtJ05}2Kw9WbH8x@5NwbuYb=1scY&VKwo|{Eo_l5#t ztS4h8%P=0#hP{cb!LpRYBm-kA%m%r3%9>SPisb0138fo8G0o`0s3~NTAB%+H7tnOA!)GTtxKeUWO@+6@9 z1RJU|8xzS{p-aomI?#D!g`|dFp^GUKpAnDGkPB(0`KENDrO`~)uwP{qHY}12al&*khHiz09l> zR>#Yl|K+~;*z(NRpNv2v^3xC@T2QP9r<<@Qmc=ATW4O|#{!YRp$DH z*WIzpTIx|x$3BhRgiINh6}M}fXwI(uyvxO=@)F=>AlH@6%^sFB^!T(8gQg-aYDCH? zkw&}Gam(D%QXnZ!W$MNgm3Gp!hog+Fcmm?s%7TW&8!VJs9x6leW+R*+II&v0F`~Nv z=}E)VdOgAIKT4jJOr+BhE=7<$%{7HfWUbS}Rw6=oX=t_{b`>sFmT5Iaw-}LW4l&a? zBioo;ttr2*pdrYu9)&IyO2?3a^~qW3hUmLG@j4|FtI*-J$LHW9+C!1{6UdD}OwV~H zE#gP9At@&(^!67$H6c1NR8$T;4hEL4KBXN_t2qTUn7K7=e{5Nr%!{zbUPFJBTo+_a z%mjvCBBHfnCzHU2988vE%~U=1rgD=CQTEE|)2=FSCmk!SFxH9%sT$>rN-OtZ(*#{g z4TMP!oLY*8ogtHwAGU?|JL$Zr$kdseHjc`Jg`ZfSpIiDL#Df$h)4 z4w@)CJaM}@fw{!Ul9?;S@P>Qe~lrN!U!xNq7rsWm)s5(-oEJab;j_JBuF?LJ+e@kAz_#D2Y~9GPm;Biy1DH*@<;!)yN2xeuS~0y1-N&Xnws{K}a7 z+rZq|GIV?Q>EvO%5!Qlazsqq$Clh;Du+|xYY06xyo|;ov2d5T+*iRRLY{NoiypTvt zvW1W+^NuODByCQYQ=U>>80Txb*_m$m^?Gfz5k5_I*w> z3zLhiAhBrRzs?eF3PKfOXv51DU1%wpBqmNHE2pe8OS(gPqc(Kfa(#15=?;YJPSH!{ zP$@PXhn5SGg9mR1p^=NEx%%?FuK!NHsuSKERb=w~`QGS6dT$d)CQuG^+HvSy|w4i8TRCbmXo!qV=PY?h^(2*y3Pz5 zz|O*GCA5E#!s2+tCQ4b6H7S@kqmulB!4?SyhIZxHzCJPlS@l=@^$dgQgIH{ta?oJ;@qL82zt;;T<%3ZY|8Z}$wEvj zcoIWr6utQ@iY~G`m$p-((-f5wsk&mPGTs=DE_<{wJF1GG+vSaMJar->8;)|Jn0JUm z9oY6IlNq(yMbv}WGo9O57-goTk(EecLw_5xF~|@#HfcyI3dDKw1h6c z%aE@FMy3I_PdaqsJZZTOctpbJ_>+i4MK~kS&=f&aNk^!J&YC>eFSHoHgB*z{8f%9a zL`Oq9=`6O{gm1QU=S=2K70qHB%Rro-XGW92yv*ptg_lI9X@!@fw%}Hg=lHfw+bxodSL3X^p^gdC+ zypbeSsnXxID=sbKN?(WhLz+x1eNLrd66WK4f>VpV;tI1AWH;hWDlA2K@3w^z)e@bk2qopt zC`Tu&?!=mSyapGR;Xqh3cdeAVvyFb&CY$UU91ThLI@S0mv})T1{-Co7cp$hw4oka!6x%^l(3A3}%(zmk`rG!MBxs(97w$qsB@Qj5z8J z)zV_&No^S;<*(drHQnCjQYEAS_Tb%JQ9`6b_l=hj-9LUja2Hw$GLUW*TmCAE5@PE2 zGn5c5SN-){s$|@P6+zvaP=a``3E}s1mk?k1*ucfwMHA_D;1a1s7Sn*VgVmr7a3#7+ zegk*Whhb6z3+)Cr&AN$Nf1F>q?7ZVKOUSz_JN=fLQliV7*=eDygjg^@bxwULvE8B<{&O*c%yqs$&Vr}OUBFyWTYaHk%>S?HUb&x2xRDsFXie* zUv(*0Mg&RoGfI44+s8-GH6J%*#1M$es|>a8@5oH#a9bFS>h)9+LCm8Kb)Tzs6>ue@;E zqP3J2tH?V0Axpb68z$qe+CPl1x94TRMO=~awe3YDJ<~K zT#G|*aKo?T=YRkB-#>Q3@1^vQwiF@K6ttrPPbr!M?UlZBCLcSvW}@p{fHY@nPETaV zG}YFOA5v9SWlXZ`#$t1ZJhZQd4w1_BN#(zfPRDCSCnPscX~qwwe=x!>2%qGCx@mt0 z==kXCU`b4$?4kMLw7`XV9c5`VCL%!^U8;I1g zS8%xDWYG#=boZ6y2EAo(c$R0H=1g^|z&s@|`U zD%+nvM+=S!8(bSJY4Rmg*&jQzkEp>r9avy1iAvCs_e@{3bf>vbA4%{g|bp_{lsORXz1i_kTT-3ts0?P%7Jit`upNq z*_4qkf8R-|k=13aa@mH~_)C?5BIPRsWeD)5hxvkCsdBumsC|5;Mn^s{ns0Kky)Cfr zSB50)e&EY_WyoNAlwoXPT3NO-5LTAjXBbjWeic4kMf#Kz)DMyiQ)X(TP^qd@Hw*il z7^2BwK3}CKNIE@lXH=WtR7R$5it#6esBYOTVgEHds-SgpWIQIg1xHc}Z5jtFYK0R~`Q@iqe-AXNGR=GkC^yo+w zdI3FLIm2c8i|D0hh#Jw{hOhhvgEAz@t(0X%^j`&nb%b&K*kxh5{SVji? z4H|*XT;cO0-`*)BP3U&hWSCr;4_E8tD!OK#;l$DTX_~My@`gqQ??sl;>GdkEzn?aw zg78{vLmA0{xnc4&*G9;#kD+}?CU+>mKkh4|P;(1_`sTiHTFxEssi`?+Nt@VOjwR^a zEO96ok$biH z?;y9Jh06{G=NWpbzVxBBXD$3~#Bhm`wJFls$2!~0Ho4f{UwQ^%d@z1`-9xr~8QIE| zsw=OY{C6m$C?i@#<8CL!u|;t^jV>o<^W)`}5=_zCSspHHVHb+H{~B6GW;_YV5Okg2 zavm;M@|3H{l%?kA%Wnm}OzOMiOUq%QgAK|kY}7BmFOL+2X=&6x{O}nW=zGMFX+l3e zzvLJuZzRVlw|xDVj!N}gP*33Pn=&NGJ?*7wC9q~bFnFq(R+Y*~k(x#&e_WnJ_X-A` zQLB6j+OF)y}Vnh1mwUU%%KqIHsrFTz)`AKBT7w!a<%d`iBe-D2VUDOU&Smn zzIwVkIHJ_}c)s@bMX9m9r|ZW{lqo_xWT6ZVdg;)F_$M`#njn-24)S+gtWVI3-=#(` zkQ8<3Lz$xd7XZr?z)z4UQ^==}g(y`J3RZt*C!8Bg6 z?kqM2ly89AtM#QS%J(ViMX7M5l8)2W-npwFL+^>xWJOlaIhhSOTr5=|nM|4`b~1RI zD0g5l4*I~Joyde!f^o~CiypZfoz(miA8uhUv~eU%*UvjuD4ZS9czVdd`sA!MuE#2r z!VqJcdk@Vf68* z+dyl7SKnaH>~1fnh}(P|5p;El-V~lYxi;3(1jqQ&)EaTzS)-40BF4Hiof-shP2zR@ zQ~K?L7wyFXw~-1wMfK7cl0A~JSKgyy!C;YN3xoGL!E>@42N~Xn#AV&?-;nKpFQ|q;Lad~$0wj9W|iR?OaX@Ajwe1*9!xH2YpRgHFs z+_myK5S*E2Z$whr?WQ?Ref9<9^5R2#q;C!ks(DE+bjeZ6>>950#*NH;`=Tlp^$oy^4HyMxB!jm$_S3^rg=jWhIMP{3?W7ps)v>X}DRruo< z*FV%AELhuQ$X&$aa>uQw|GAKU0% z;8^?qwuZC0*vS}gl@uC$+_4(s(vx)C*l*vku?oLu|`kRoBZUNDfk#tTJvX1KrFA=gdxn>20<; zlv`KFty}P!?Hh129wHYk$n|C7Z-kzdjd2^%l?k1r%9%WAq;j-0<5YCtN#;yPJG{xA zI9ILYsO}5n9hx#%m5h^|R*lDP0$QY&0ghqIwSqb8g}NB)7slg`u*w^^oWXWRnmJx_ zqCrn@k^$_t?i|z)R#;nnv;O!-K&qg~9Jc|PkmKCV9EjmOey?MdvnJ2($j@PqEf6^V z_)5Dzekq;J^bUHO2R3=88^6@(yp?gw>L2WL>q5f7fAm=@E?%uei>h0g`{b(D? zK@ZxA3%>cWC+>}NeV7%nL86?q5|^v%&imSPVEh~_Ktk787-lb0SJc?Bf^2z=pl?a=-fco9*BzSy=;_GsrfUIUG{doErs0nYj}; zeo0-!d^bJbQsZWVbJKy1vT@W=Kj{4Riug23CC^x;7h*oO9{3nj$4e5 z(Q+Wieo2!ae-rO2bN{299O&1b3)N&>V6Ijxf)!W0Z*lz56UA~iZWm#>8DUEt#~(TQ zUT?fo#_Qi2gb_Ydk2#s#%Z-6s(r>_8cuRZlV0ZhrIqAW{p61@(;Nv*%y5_pG@t5vw zvUNs#{7Dqod;IeFXn)z_*yh!7Y!Qy97dP}DLNV+hk26cE{s{J zZ0CgRbtfR3u-s@Q&6}J|IOY#EvZ*wuxm8XK%8h1L7R}^XHx7=XnJUN^u({E(h0BcQ z1cScZ$RjnlRIYuY9zQmQ{F^n>cB*^qpW#7@-8$T+u~AIqjN^AW{2@aFL7z`p5CuH z`mM!!0l4fRlf{IQFRE0=;p9!>S+A&U>+I`m8paC~en zB9n(>Fk6PYy4#xCJDY}k+Q>fb1W9kSt+4gvlMC&w_Ctemjg%WS6bADT1bU)swnv7H zj%Kz>?2)JF0P!(+irv$Z8Dsf;laKNPtJp)u#~?dAzkdvV!qetP(IvWd%Q6kJmuP_V z*0!{DZIP?Fn%df0m<0)rD;-17tVNKTbgD)PIy@wJ403zAdiO+hYyS|R?(f{h>@XvAM9=IZg1|D3%$n#K?s{au+{wMV{=!JloRV~S=e zIOK4t8p60_WuXMn;|qEADD~}?F=Nr!J4kg5-ZGCi9)o91f4O9D48Fq4h490)ZF7GY zN9}X<{E|ie?Ss_Mtj$Skw>I~-bxFA%;C5Bpos)hX4YnNWFt#8!c134ek3rMm^oZ!l z<}vsrkJ~$Q#^5J*yMy)TBJNeyolQLqM!LrqfA7k!F(@R_Z|m#o+lz`J-G|vmZAN7H zpa;Q@K_&b&cXxHj;W18 zJvy#Care>~WS}=?F}&4a3_ks<0>bm;l$~;r<*QLR-PxCWVY^N=YSW8N#^T-H z$SP}eWAH@=bf?9S#g{!HehfbBr2}K|;2q^Y24DWE++*;D73|KuG1)Gv0BrARY?haK zhwW*$i;Q&u7G2OWwiwb29h-&}=DiBbyGJ3_P@5_#s;n$7Dmgn2gZIz0oeOT5EM+r1` zH|}VBdP&HLEK#@&zV|4?`rG?Bu3?OxL zi{!1e4hQ!t7%IkbtGYD@GJ10$V;~1I26G^zF9$OGRVzx|UZrhwT#u3Rke~h|@zArj zM-7iy`oqekw|Q`2uz3%PT3@^F(cHbvVEEW1K~Oe#TZSz+|0BPHvFAXKR;Ojd@=bbk zcTsJ{K+`(gXP4jN?xFT3dbGhx!lr@1|6E3+WAZkTa*4qs>A|5>fz?L){S!N zr#0IiO*cp-Nz9{Rr3*ub+*?|4R)$f#l|cn*wdmkxi{3WbA?NgP620mv$Oc1wO@rM7 zq}!fwTH&pon+66qdFkfM4j1HTNA`L}&KHQnvfd@)r1`aZGMxX*!WlGSa^?iJ`y=_r zOgY1tzjheYG}D+xml*TToyPodzA?8J8MC&}m?bsFY_2ut-b0Le{v2aIbe=Kq*<#Gn z%Z&L8bkjUz&O64K8~cqp6~8ry8uQ!=V>YZZ=BoXTS#hN?7hY$~=PxI$vyA!rKE~t~ z7}LARn3s|Du5M#i?l5M~W@DZqylj7K@h5+$A7#w4b;g{y)xOLBU%JMajdP5-^ju@k zML+jf+HRi~O?HSe-#gft6D~C7qt(XTUuf}L(f!ykH6AHr5| zT4v0TN{o4Qr7?x1!yN}1b9lWm^%IQwO{X#IPBNw^ZA@1$dauXc*P`=6V-CFD%J=~` zNdBEtYRoUt-~GJ}o)7T;1nGGd>9+9%Vl{vKpsWz1tcjrj)Yx{-9q_V+{5^(T{z zsU^-|CI0uGXv{;z@z12qz#3z&J;j(KE;i;&s1@CxBfg7C^K0;vhb{BbS^j>7dnxHq zL|m>u+L&{ijrk>UKAF6DYbW^z9nM0ZmgVHVrN%r-T0b>x{mTD`lGa-;H0ER2_4B71 z^SKUVK8$^Sv4nh)hYa#k>SSXcuElP+U3`%-cMTe|hBTge1@R-C$=Ls{1C9AMZtdhx z|L>yn$TpJB{9jtB!=9vhgGG&au49-;)K{yTU#f9AnJ(`Nk~A-<8Dw=Ie~P2a><%Nvlt;wa@PV z&&`6Dc%4SNpSlln$ZyT?Or_l3MZUOqG36fFpC+ukk2U52;_*fDRmIg-LLTL2&QxQD z4j~Usp>9Bz7vb%$B+p$y{y&?1OZxrt02d__<_ zpWjB_T8vJA+(Dd>wfwDw2Ynx#PCJ3TOy2z_@ACIswV6DBCf}GpV3V>H#{3?;{D{nQ zQwccnI`l-!1mWyUo&46-#{3SO|Ktc`7U2Iq&DfvxFF=O{D~ySNNXW+g6YuwGzWX_8JB7O8KJxPS78>*8lhA#N<=ea- z9p+;1gQ;IAbMJ<)Y6*75e)Z>3H;|_vK}Y{@J9WyU1C3eONLnE8F?5%|gUKh`O3{6r zeV>Cq&)LWD|9?3e+g@s4KTF<`zxPhWw&#=Ys7v0VWv%pj%Je46!UoH;ANgQ-fiXX$ z{C@fz>ezaoCtJ4zcz-QTyMtXG+Mm31ICa-4#=KB$%L&Ux&G;==Z`_ zbVKG>u-$!>ttRYJg1m#LArpK3hWAgOWz0#~{NOW5bEq(d9a@aJfI2Xb_^cowKSjPi zbGtGBT}0kG2zz3mYIHe*d^CYP^T;AFYGt^>vuWovKM3+9x=-5=o01nlM!s5gwB<|w zKl@aR%+>PzAog>AsS5kleJ1uhiny&YW+!=e+dkNJzIAJzWq((lO?f1ZCb!x5spNn8 zJN^*+ySxAYmGqLoEu_2r-9(Z$ft(N0n(*8Ac`kR&u-{0E?kcAD8L(dM% z!1*T{vm+0i9!HrzjJ!&?ldq=ky^JzVo`0P5mA`uQ|JH@UqxqHU^i(Nzg4)}}_5Z&Q8~$~IkJ#tcoz#8A`7RRsAn1vu-X9}AXHBH<1%BXi^4tRI8_GvH>3$csIfb(GZqol`+Kzw0 zZRRFpeoa|yX38OdB@aoT_hfK~y$U8{iiIBb zcQEn$ALL!fH;sHQ^*z;Xi0unT@iJF<*#2PB)=;&Dd^5qM-$IcKu|vV6KK8>s98Ai~ zDv$3-#kxG~STJd0C zc>29Z`S$bp-ly0DDsQEk6trI6{_nN*^A|ML_NOmmp>LpRb=TmUp_ZoVh0B&LOVzb+ ztl%>dds$W!dw@)J5YShYr6)9n!5|@2Zy*d zym0=4x$~OVmNXStR5$5-OZQwB9n4`W&z{b}m8srW^k+q3xzF#$qAPPu^B2sU+t=1Y zy)Ze?#(Pe0x;x#GE}Tm6tU6VU%Q7Q|E3A&t|@^Y1!QQ;kHkE;clSbSiKJQ?3Fj>PWuP(*-%nAXFX+T z!XcB)24ZzCbRN_MT?pCs@PpI=GH0|IJ4{ea=22vP{#g&Z2TbP3=<M4|`bo zKI&oLQF&K+*gq@ZtseGWFqyOP^VJW)B#l0}kJTk!zX#WAh4&T2^X(NG`F7L6cAR$$ zVNTS1+oRa3sS%b|?5ceuY_not@%#>e$-LDf4;uoLF*w7)AdG~*;SI4YBijMRlQ4Qczstd7 zE?xSGj_-7^D&DUm9EYt?zgs-MGr?p|aGr-1fyo>a!>rJ637F`2sHaPr%KL)Hcb4+~ z*^5V|@?GrlRV&uxVYQ0A%flMMByQ5DcJWxJeDmo0IP6?7nZuA_w8PF44LEnGWM9FdVUj3=9U+cE)M&N@(p80hdrm*^VF3N z`@Ld+@~~<2BBhV}nX-s)7MO&4Hn{V9HkgF#hjE_r{nC@SNwH=R>rw2;eIt2kFqsQm zi+x-eo0acmk8eP+>lvdtKABgRIruMnezz%K308D`I}|&{lXoeY#N&L=?`0})t%qH% ze)~MXS1R8JJie=y?+h>8Yn887`DSZ=rL|wU;8dFff@gPOE&aK8UU&#;@wWeA4d-p- zv8kFDehwycUC(;hbIMmto^gDyfr+i9UUAs#%6Ee2H}6oJ?zbHf@l8-{3wgo$out^k z9-quXOBh#pVN3;+bYjXd^gB(lvpj4%n9Lcyq}bdM?Zv`r^19j#+dY$EyEBk4>mU8d zpQg6k04D3Ki#_Z-Fv<6i5HH8q1SWByDGad-!DK#*e<9YQ*c=brsPdLm7M#2eFp2Ab zdwe}$V!ID}SXwdZM>xNmRo;A0UO$-VSD}0-jcB{f+j!%7?q@N(jhttr)6wGopWRdc z!OrE(cK8=D|1$scLE6Jn2n$=IxgvLt-j^md1p zX4VP&WQ6;32@*C%Sx&&fMRv3H@j!%k6* zslX7M2PV2yd)Pw7p7gNA>KE3~?=t0U@UYVqTjOD8sNYo{cBb-u*29Vwd(^{975k`S z3EOAf2pcbVZ_coN4f14PND1-|Rokyq>^cv-K(Q_lyF#&T9(JQ*>lKUV%j`GI#&tX< zL&wh`Q`YwekU2|rd{{9F+hNZrHiQ0;!~UXJx5t-vn3Z>hV)1$_cE4<*zB@TXw`s_d z`S@#*^(NKraK+x`VMi)c@Mud`it1hNjqP|PqrkeEI5c4Z>dM`T2UXY)m!%-Tidlb8lcslF_ z#a{9FUQuj`$M@q6d@pRg3^r%j=Vau{{tKDgovrqnr`Q7?wpg)SJ#3j`HN?mHJx#GMdwgdowp6jW z?jzhin~`6;GIU>q+;5`0%o!i8x>qXppoi5c_AGijzH=12)8ngGY@uR_vY6&>Gd^18 zIQCxZVzyIf_I3I)bUYWCGB@)wbPPHs%7DGkHY2VBF*)%v;I6%iuCI-!@lecfJPyup z?5f&Co3}OQU&_#}#NpLd)LrDq-mSP9Y4`S+ z{j>Y`djA>zZ;JWPp7zllweh_C&X`|G`=^PIr1Sep=TkK8p8=D-1s5n5FJmK(<8F@0 zPUscCPc|b?x5WI4UjKy-vbR#&_POX4Z-@03IKBQg9>))4$oh-M@f_lFs>X5uBW=7J z6-&g?T?v~gJ0H%FeK>Mt|Fg8y^HlapVA7uN@UZ2IUG8Bk)US-4#cv`n^u_O!%~lV5 zBBoC=4*1W~ANbU0e)LY)WIy0DF+cJ4hB=C?H@GHcd@d$K()gpqU%pp(FYU-8wcVXy zvN!X5Y~rxH6|EbR ziT9FBIqqWCME-stLryVrWDlg&cS|+SRf?_fuo}grE^&P4C|2oV^@^RMn42@S^F^cH z^qSCBW~8I}n|QkV*SaQc_3fBH$%l8LlkDLl85v*LeFgU@Cb~Q9KE*bA*w+-3{Ob4~ zP)x>#4tr2B8G}3QAu!pqD|4@c#mj%T3uTjWc_tQ@c)7Iqk7ZsTo0Re0m<+MUF7%S` zqGq7i>1vNZDt4cTO)a#1^NEw=+fT729=1X;=?^%*GZjmFSdn7qd02^JQqG;Y75 zY>i@)Cmr8eiWPfUrDDyB#oH-&n{9YGZX(Y;n_;U)S(nmN$ZM9CZRf@&a)rAp! zAgCW~Ce!3s8R2Y0rtHO+x?+WfbFpHp6pPmt(Zwk7dhNFvvfqImDYq@8?MjvXZpFGn zEVfn~+=UyL`}+*J=Nx6n>Q@(o=8Kg*^F|vXT0{Tx~FEw#8~DM%eLS zvQI_E0K%6g4(=-2L>(ZzsN?oH8CmkZ(;Q^2)-X?1?8Ay>l^+}tk+iq$$d1deLY92< zD(SjL<<~2AqlY~SCg0bb>S0fVJ;(d=*u(jK229HPx0NrWT*{I28MZz+L$B{5N50)W z895c%Z5Uos8_x%_b37i$myjjj=7_Abkd@4*iA!p;^lJ~xka_UY?CD0P>}fe$?RJP_ z$L2@aEX8^W+wmQy*bT}T&zH%IXp?DJ7}F)5_M?prXUF`-!%W^Xn+)@qnBRDsx;tf) zevXUzkve1<@s@9@>6Wv`Z2Ll|D<*Ba!&WM`KlX8$e6u8er7Q~;Ps8jt(#G?}DH-~l zk4*W_RK5$ZRejnNTQMQRHi1cd@T|wz118@zO1Tuj37gp4Y%}t?d^Hfyo7W*nzQK_? z^c>aU2E|zZ4zPr5dqHhR{kJ4T_KnDq{i~D7qjf6#D`2hljAImww{1NmUNRfE1LzmZ)CwmcY zM_z;Kl7EcFzM@#drp>hE!>Ff9|QcT8%4(n0B1C$?!rNQKTAz6mp7v>Kf z_Ep8Ed4BI!Y^GxII?l#x^!25djQBl)O!;>3B=k9#_{H^JMi>xO}te~HKS#6!L@{xM~$S@Y)Nk5mz{3OzWlek(q6g7TbZ#*5YjQNj;X%7I*)br|5 z{EW1}?3$P#vC}iyNxpfOzIF$;h^GbnzM6-+2W4rC%xbZfltjd>vk&L9i_JZ4_t==2+6Hl99Z8uuP$OuoqDvZKQ#8obd4KFf^r|Ab` z{<4G_4dgSzl&_egFeROuk7M1RNyTQ$;pU*M`Tdn34sO7nu=z(~vJ&>PH`8W>f7@t& z^dj1%jXxgqv!B0yo{@h(8RM1soxvbM&KP01V1|gFV5=09^$>>@D<<i1R;yI=X<;bC7_Y}muTq1crk_D#hYCWrBOSh3qY>=DI2 zuUNb+k8mMxMn3y`h8_PMxpJmR1#*Ygjz3jwrHB28VkI8-tYQm1>=%m3o=}k&Uth>} z4{vnGZ#?gOD?`^;kS*tch_2gI*FP&Jc~-F9hZo)Z8xQZXjPUkj03&CXT#W4P8s7ej zHG9|rimg^GQARTE2abpPR7SXmBJYF?WnEpu&M0$<`+<{X<(Uk5ha+zb@?>sjM^<_M z4Z%ry-;2qM*Jt5;Xh9BPdVg#;`tsD zrj>Z^)bvUzCUXaZ#rrr}uK&#_Ge6A;#~&lUSHto5=R3^b@9(fH(MQe{xrO@AVg6X$ zVef%&VGDWPcZ10sfXs6^zxOKNyF9-86_dG6 z$M@3%c%DcbIW@wbPzIykaenV>`?senfyP(-x&bQ`WpQAI5MFLriY$EQWk{76XR@xZ@bccmhLA_?XWm zu)g=wTa)u$TFU|7MXSqJSYXcl!Z{8~tu3pouc)bB;X%cXtLw^YYw8+Sh)rM7v`QRA zQQBBvma4BWTQK&s4#E=+{G$x^^2CKV>QIE}Jcg+U@qHT9j~%A-8#_g0#FG|sa$JJ8 zgOdnV&P$lg?-WQ*FtB~>d6X+TJMB5@&Rf7-d#dRi-mGr>2u{v^F*&Xci}{INf9%?D z=f5E4U;6r0=pkob$@=a4(Zh|iRA%hP^SCYt#bhP?F{tEZXSvxtoF{fV%#8UH9d@9D zod0zJI^2p5uHU3OsI2hn@Put=Wyrf)>#TLuV;@9b!cGjXllO)v?R0odW+H9u4dG$` zz{Ts$qxsRxz?0#;Wi&tb+V6~TjvCF6z2Q5<&(SeIV)L7^k+gTer%kvmGymxY-${Ls zi^)l(Q^w`n@%(Z^%&+M1I6BA~tv{yi`#3rX_LO4(p;#hc`Im7g@`0S%7B6EzK$e_e zEc51{Kz>42bQ5=my-tnEO5~r+OSd!p&yV>}{7W3)i|%qR@G-0_d_m*rpWh)^A|Kg# zsNfRpq<&=?@*nr)-#(J8pxR8zS`(9%&>?o&b=wP||UR zhxzL>j?Z83ahSg@Bv>Nt^y2Jfe9npKmGI-P$WD}z`j{Vy%dzM!XDc5~Ui-4fr3p;V z4wtzqhqZvo8LowjCBoBtrjt6Z&j{}j#yfJJ?J-L@15?A>h-^9clqua1J5u>RP!wTZ z@QL4Ll@Zph*eVa}QLNa*(qMAd?%`e-!(c^VvPR%^*{;~79^Z~E*dG- zS|DjIXYx6027cvSV5S}e%*|D0UKbJG31BbjCcnjb?e&6mNK*E|JFaM<+tpN3Ik#+m z8T-QQTy>^gy&53nYS5QL;tpxR14RK*Oyh6rI1>};1 zP-%O=xYcZ!J1$b`mW$-NaW2y6+S1Ndq)l^W@qwfLf&=uT^Yi2&w@jr&xz-q#$0-?I z#JIM-f1oSfn^lCyyK^*0d-d6FI8Z)=qmmg#F5qxSwpsT~{Q_&sMI9wsFN!3MU(z%f zMM8gbEjN*HIa|6nxbwr^=D@WVqxfp?A30nScJF<1t5kQ-#>`~v<$~7Eu0An|70xv* zLHy;e67I@uD(UVQN3-kiu{e9TwfJ6LEE9JkhoY12dgo^79t*m>S-rLO zyW_ACA6Wu}jg4I$BfC>#gZR7oitM^>8K9tys_B-2?vVrG64{X*w+y(ORz~J&waJuS zIWc7U`p9!;miN;zmIjgaWWHj$&e?>)*y@eN;I^)K1oq^)M_ghNzLP-()25!#V@&Gqvt}~uxpaBs>T|293n!|Q1I0(J zdQ3+7?;C3A?rLpHH*Z2;YL9c5MiY7K78cG~x85GDTC;5q6JV)2Ii|8SRaKm-DymJD zR@9Z1Gzd^q*HBzpYMn~z<+rr5k{@t=C`r|o)i=~tlr%7zma4BUD_J44Y$YWrsUX&` z58hJTwO6w)RaIXi({8D%iu$UehLSZR&$`q#RyR~sm8B{xitCE%He}(bXeg^IYN)A8 zm6kD0m#QpVTUHsean7(!Z;^;@Fx8*kP*cn6x{B(B3t%s*P8C%XLmoh@YwFAD)>f31 zS&q_$%;pK}l12QMmaUyX&%OtEbwjGLHi!o!*xHPxjRfx*_GRAoi=YAZEW+*narT2)lCrlPtmm0D3(CdRIAC@rlB z=PUKCqQ0TXcyp9kvZ|Dhgs5Sk>MN=mD+7~d!)nXw%01?FHFakf)zvg&BH>2uz!ZTb z0qW1Ls7+Orr{Y3`w7|KvSR+tfwk}m)dUg<-n)33Bl8T~A8>t}P#bpge!9)4_AS2Y) zRje&)AVG$vldi{4SsfmRGd3wKQ|LY1>?SQRNi6bGxCwWr!+=wgD1o+x+6LUL4vM zoZEFWzS|cqoF~%T7cHK*JosHYPo%dmS}M}3D68&_*8Wpp?A(w)_PSFs zf1Ks8uj|-L##s*Y`{9DQb@MFU%=EyZ?YR#3wDHZ}Zu-#S^>E(BnxyZR$e*hZb6f9f zCpzARercEMM+Ao<6FC=nR2h%fKjt`&DDGjq z)I|yH@js|r61J;3?w|a_cT2Q*aBib(SG8-F>{ke!nH_fDW1-UfN9>Wr*Zp$TJCXMD zAH7pTo$mFaa@0SOi2tMaN(}2;6Azg}U*ex=DWxxQ6Z8(~ozT0WcSBMqzK368l#@P8 z?)xIrA)zxuM zc0RvOUb$jz9_HIs_;x!l8usbv?eH9}VY@sdr|XZLXYS6DXB_6+#bLgFg6&p6ccFK9 zkGNa6aQfYup`UO2dsIK)rVjIM?=ZjL?Jz%YILyx*4)f#dFh9*5=G(ww^`zlhSMkju zbNhnrv0cI|(UW$0FvBi>-0sbiZVvO~;jk3?y%+st55L2j!Q`&mDd_AlS&x$Y9A!Pq zVRC+!l%tm^gAVg;;4t3?4wJPkxqGcp8UdEMq+yPZ+DeJ?|AU&s4Z?+(&LY<(CD=??Stc9^fX!+O;3!6dT7HY@f| zp1iG!J?-&rSFFUtb~rxIuWuU(!<{jnIX2bNS5W@LTgDS<`5!TxoMtA;GLzn^?FK^L zNG`1F>^hCS+N;QuW#{KHxw7`^+xh{u^%cZV?h@UfFdgRG+F`z}9p>9Xu-)bn@80g{ z_VA?Mzs=CwZ?C?gdi!y4n6J0P{5sBIa?+LLuR~c!bl6)porm^|Fu4a=?z=9>HjdA? zgTwr~+F>{0SMJ7Ti9YoEZVh9*7sk!XSK#sa^{tclA@zInsz}~P!9+jVv+DRhrPv2N z>~=7@qnBuhd|y_1ANO>*SN(q4 zzw`alsJysQVQ%MbRLiW>H`H%0Y503Nf78$WVi&8jkuAbmi!5dTjadivDwjP7fV6UP z9!*tNW#70pR~xWP?`W!wS%5cWp_Mqt=cuvcH4SzTFmPe2CfWZ#2wg{>t9d9(JRJ62bbj?p zdmf0x{5_lw^Y?H%%-_T5Fn>>@!({(r>GgL1qQhkWqF@h^e;g+J7X_33iw=|hi-O7i zMTg1$MZskMqQmluhhW{FJlVe}*o7YE+ur&0_bLh&-+$=$DZ_qv|6ps-3EzF%31?R? zSDkVz@Lalg$bZB4A4-_o`A%*?4Dat{<$SdLhZ;f4l-XGtZGlw>@O#iN&Z>fXe?vRN zChU*zQ8y;k^Z$d+ODru%N{-zx<@x(DPN23(?#DP0EV&=!B(UAK0%NY!?Gi}CKh%DV zV~MHM{m1cpJajVj(k`lv|6l!;)pI`%GyrXbwnGm?k3(OAz5~4mO>N+OYp4_|hSosk zP$hI0bSm^VXaL#aLioeq^jCD3ZoKE1^*x(2!fx*fU``Z9D6bQknB=sxIv=$p_tphuv`p{JQMzu|EBX0c|; zB-xS*avcksCtqgF57u(O+d;%1zK5X4pg%%?gO=j90xE)*>+@=UtDvi)9ndw4?~YaPeR{;UVvVK{s#RWnzWAJbNG&=nYeRs)FqId^LaUR8FV%D z2io5sqyK9>FQ_FB(3wyfR035%tD!3BY-lr-hK8Um&<)&ugHq&^7vd3BMOZmqV99S3}o9 zH$vA#H$Y#4z6gC4x(8Z(i822+0o(Ar3;GMRZyjH@Li3?hp~cWbXc@E|S^}N0jh-Xl zR8{hP9dr$JBh&}=LjBMHbP04ZbUAb>G|al5FaW+nZC#PebGzu$Q5~Kr2ZD(eXu| zUxoe(nI`fBv=~|e6+tVZQm6u24OKyBL1}0Rx*8d;W9#iaUjf|!eG&RP^a5p}eluyp z^Yc*N`IK>J9#nV<@ge^$+z;2bN%;l@Px>z_vp>p`~m129$Nxt50Hl!beQE zgFOsQAkI^umwA2#`WrNj_ZiT1XdWbXSpuzr`X=$bm3oiz`jcM502_kd23-%`0bRQf zwz-%-HSYV9o)3XN4*eCHfX$~tGoVu`Ys;af&&qYuvQ~|Aqs-VX@ zImZZ|Z9HEBZHIP3mqHULzdOi7*YI4o09&BzKNJ3M4>#rm^q&tpfjouVo6!A-1$>)B zzJBj2$`pC$66j*+Qs^q^3g}wst!Chq2pWL4L0h36LTPm9;2u6?eU*6sl00|D zAhyIUZv*uogTyBZDJQqu$_G z?veZ0JiaF{LI!#JwleGu&m+)7(4)|k&@SjG^tpqyeu?KlL$5%uLV4#>zwx{IQt}J3 z&ftC7a_)nrPD}H=1KJMlgf4~lBVS)tN*SC%ejvX+4E8wmZRjcJ31}De0`#9p5O>n} zD|4_7agzf~Cqhfei)TP*Lsd{3+6)asTcBZRJM{5WNe|NHN}jKV4nxF>9i%7E*FhbW zm0LDpPo5uwZXzweM7?nt`rU>-xc5aGI=u}+jbFl_0iZ6d?D|Pp)@*ll0TR8yaIY1ov&L&-r@Oj z=&#VL(BGl1H{q9GSqyp+ef!((^CytY;ghBqyc8;j)<9o7kntPw`x@cj*^hqYqwi0r z{yB|a8F3N53aAq5g+5tDo<#2(cBjR!%Ex4A8uUTxk1Eo6U!LckNj^h<3Hfdj&r6}=4(cP~zJlj8^p0W5<1wTo&)cD$ zP%pFv8ip>0E`i=gI{k(6xC5QuOFsJ&*j><9p}V1bA-N0dVdxR)yOi%=iyxjpxj*09 z^^y1RyYh7M&4oO7bIx!Nx*x&$KjhsZ+*jH}koY%w9DUUXf z{F$aq|876>I^n-adOuB`d<*$*5FM{U=G~;%S;g2F>VsY+?$R&1n&(#y<+_$Q@O&5a z0Q4aA5cCN2ZRm062}pQefH>sEybS$j4)X&k(x3df5411zJot;ychTv3+MtPGlc6Qp z_}zz-{%2F3p_S0R=K)Yq+OSG{tht7gAeih7$kY>UViU`z6CuB2`>HNKlA%nD6f+GADRkHhh6}a z{P!Zi{|&tcN&i*y>15ocFCl$b;avnt-%s-V5}svGc@b0sN#D2@TU>q;`do(1`28H^ z_$bo7p17O|&!gnE&6KGY!uZ>9gaLNxOxj2C<1?h+qGKteV1FizdrqOR%=0%Ww|6e1 z9w%>n0Y6Jf2f6FBA3t5VA4uLBg#Qtqe@cEly@@zu`}O3HSHS)XedKs-y`8$M3Vmri z9xJCVynr&(jBbVS@Ovh1UpbHXts`%f2fwtKG7fecv>9qAz23?1ZEfg;O%9_Dc)Sxk zgGpbvyW5yH>akaNU$>cf%^@ESaA)-r+VE=XR!GXPlxHc|A3K-*h~&*J$dI%07T|sZ zv>Ezm^1^S(t1@O9;$6l{Tll>g+79i2u7R$D#LxB6SD|~L2cU05PeEVNUk(&9FGH_E z)6i9(UxlXfJfHlt9FlQ?j7LuAxruyw=^*Kk-Se@>=crfya|pZe{71^`?^3kw1*8jD zF=g)8o9K&8AiwX6P3o=QqO*+8L}n#6kdgCLY`qWI8HCY6*)2xSTI9TdO&8DQoOI;< zt|RVW@~-4Z$%7)R6J6HyTD`?S63!Cj$sI@%UJ1XY&>AQW4M0PX_?0s@{)B($&*}Fp z>2dCxtzYpYejSg<7Cwa(S!-5au?(DXm=S!ihpzEL;AmM+FaN9_?bI7w#Tx$J&2{-3Ycs`YfAIgo`#DypE zkg@Yu`Mn!*w)zIo4?~YY633^Y+o3z5uS4I29)-j%BKt*ti^&&fknTUBu3Jc&AB9dQ zP^PcjNIlWYFXe9o&ySP;izs(rnna$W{u3QVpVyG#Z2u^6_~K!ao_TBHd0q1EX!%xj zl05q_==1#Xw1p>AR%^*uheIn3=o#H@QqPz*wl$xJt*^_;8 zi+QGcGVh=c&DZs&^T4XWX5-+n4zLe^EruM{rG9sKSTERfyg%q+GB%Ph3Q)-TeIM9~ zfHVOi_EGgKckVd82f##^UwV8`Dc{_EBECO^$(;*S-=W`$)GZ>b-NOzB6aC)fg&}K# za$oE*)JrbhS<3gCXP3hin@QX1_>NF)*|Z3gbw`mW=c_orqro% z%e}(R?@sl5hUfPxFp2Mf(T{U{?^VC6z#S%g5rt3oB0B6gFp1krFN{xuNxIQh4Eba| zR{TmI*ZGy({Y1aFdw!n)`vP(E^^@D{B#d59-uJ=&3Lni?DDPjv&O$do5B(I(ogwPN zl^fokg^%clet)6z=(2{`@4)1)$weOa2QazIe#pb*HZ#$s&%^#({a)!|uYgHB{^VhQ z2FoWy9$-p}D(Y(Z&bO$cv7V2i`Rul$G_|&(zL6mT-(JFVV4SDCqOvSiUDJ>%moJl* z=b$)`lT%t$za|Lh;1S&U_`Ia1s;aEI!31H=%+6O)UCOK#dkICKL*hIom3##)`fyAn zpS>fhsJK$@`x4$m5x(i*=v$9bIYC6$f! z4VRaOR|&(}^~eyYi+bLIk z7ZT*#MFGF~k*@6kIVw;|u7pYr2AU=?)pIlaPR}LC@XO~?-i2KGwDy}|mVt@=mMgz+ zKgmDES<^Dg)otn4p&m}r57f$p(ahEtXQ+G$YlS`^M!uy>5ZK4n15y@NLZXMQLnfIs zd3Wi5wD3!Lq#Q_WivqX&f?|HPJOyPz+@ti!Go{K`mf#azqOkJJYThLsMl0Wa%^mHD z_zD!pwL-%XxguZm6uI&)_IK~+x;n1F)^XJJ4Ky&+`IR*7w#_nyakrw%+BHSaZC>0h z@WmoB2atDkGY9iQZF$K&cs z$9E2HlHPCTSJKASW8z*9iA-Bo^G$>DN?G%H#jniG`Mm3R=R2eem+Xj^sV6OXX^szV?3KyS5c6 zbqe!P6Jd)Tid`PjwvN7EWvZ@`4j`xLlyb(8<^|UlM(&(tRGq3Rr9W_**B)MgTs6wZ zE{^}}ALMIDMz0sGif1%8MG=LSyr(3qNwNuBk4weUW_CJ#t%J zSG2*pO~`PoZ!E5@SYK9Y-6v+am(!K8Zj&~NfZ0_+AZb@TZozzaXHQ+)2%h})Kb76B5S6#(=%^NN)vhdkxE8i4NGmo#jk?bCX zSXLK=IW?2Vg(>5muslo~nXk5}VNI&Eh?B0=hSM{7>&l8sb%sj=pIjGm)(rhJwLl0 zt7r0Nj@LaNXP@1U**!m_j@v!H*w|g_kG9Nm+gM%SSSy!|xbc5`CQoVE>auD%@6gQ& zZOr7sf}9e#I@M58_q3b8my$IPP#TJS9@x0C;CWVhWXo|U%QdERQodY_p;4jL@+Hl z+h^=}%=W=u&#S9VP@$`OCMqq+$O&>Xw#)# zmvLG&_!(_{AbkN@Q;@!Zj7j`{w2a$jTqq=bc8oUBY~sB|b(j7IyLE=0Zt_0WY>T}Y znBi@{`z*69_Fia)=lSj@m~Fwk^r;y(9oR#7?r)y6u)QI`@48w9!_wC&kp8n9d!~8z z`|vUr>jR7WNcm1>+rjoE%#QADeVthX4RDS74h?gJ zxfYulgIg_P(^0Ot^e|p^4q-elRhh1z>&HXNhENorNoFVf)uWBWJYx}9%Ru``rc_sr z+ZC#Z8!ukTyBp8jvXgJF0=slVydPb|$BV(yq$Qlps&nJ64;{MI*EH6Z*!f=9cMjcZ z*3!$g{XN%T4&5rMgZj<&jYGVqF`R>T{o&9JWolKP>jQ^w9471fSFYb1b4vxv1buwh z=Z(9gkoNanUpMY9irKih{%zbnP%e<~`nI9_dZr&#w(HY|ZbghJ)y?%|L$`X?V7&Il z^;<)Cj*e}psAZe1)ywr$L-+cUy0S8BXV*6k-NYP~j2bm;*C!3#ON;8xR=;k&Cv>Zn zMF1StuUqR0-R;ClX-(MIY?Br7rhFiahxmPw;Rq&N`MZ<<*j)^TrL0kM*%A-~;9Aw+i!K=YEM>wtEK#F)c zzb<3rYappp+&s{=yk~D0R60|kaw@oAJu0O2SYE;P$Z&1Z4LnO5;p%1==8YPztxqPH zx9PiWbM1Ux_Bovv?)c$Gfkr?7s#Np;!JOqf|nU3xUcT1aRQ znHQ73MpVb0DBK|nOp9c zZ*wJ{=#hUjnERV$vPUMcdv>QFp01x_({pQA+hC^=9prtY>1^-n=nUt;1)FMmhk8=ZGGyUgi}zPEV#hVyf_&6BxuKZ`^tTDrU-ws!eJY;Mzj zf_Xo<&*QIaIi6eLaqW||lR?_?e*w>^WJBZRjIqYBuxt%%uf+ z*4go6xJi7a4=epyv8%Po6!UT3N9`}5db+=jJnFh8eiCLlhWdOGxqg3B(&JOHu=CBQ zc^`GoxLK~g^}`E*FpSS?7}D33_`CY$^AR4bJA8q6iL-<+T(|Q(Y9B4QB}x`}lC@gQ zA=Kjz4bSy?#qM8%Brl8IBYRIYUj}o1IpLGEaeR_K5$~j6kJPC7#NDu#P1U3u+KQd- zA`EAzyLpy0a{7oK_dqg!5xwKOPcrx7HmcpiFb4+HeSW&d974O@ui<|vHje6VmvgD4 zezN1Jj{f%c-k@yCdx2@;^c!1W%KI$S+}+pN9Jn9Fdm&$lw50|*)BS@XHroU;6t%L2 z_n1JI!dfp2ew>vV@=M(|mE!Yt^mTtHxH8|G?oRhJ&W%SnLW%9D>zxs&Z?Fgr(k;K> z8)_?AyOFlkFI$ps--IOZ*t#&^JjDB`X=QJ=%a(KEE*k!~G)$LQB=0^VVM4BM@$>GZ z;G>3bZ=K5)e%wXFe++qkUX}14heitjJGfm$zLGwb+pkczo(^Xz+j>|85!{VK6lbeX zS&{3XyKzY9R$j^Kxb5e;afrIr7O}n|`!}Rr5L-M+*jkgf53{t_CMg^Cx-3MrnEM!I zy{xsXzm?!>|@gr*}@w#ZT z`7YS#sqj?xW_3SU19tV9X)R6VD>guO}paKL-*@t#V zL#ya_yD<8Qn_!}c{6%q`Xr2d?dh-Q-#U67>8@8Zkq|NTrcDmVxjO=|DJG~Rk2kFow zh6MR9zu;xn!S&PpIR7_pk}fh&6_5KA^GC2>Xgew631egyEX71=G@h7f?1YY>Zj3S2 zVOFuO-nRB|UQ)uEVY&uVc1|epBUpi8LHB=v@sw?A1wUBuZZ4(k_1oX!RCC*w=HAx! zz`x|3LbEM~iQf~<(BQ^pDFpO1v)&$?-#x_)anrC&xbV1I7JUa&65ZJD}d0;Trlit#v>I=4B*nA>x>~R|E?`LGE zE|ORN0$yM`n@RW#x4#B%z3uI7q@D;IOb2QGx6n_}rZG^oVZ0jR$g=D~f9|ya*9L){ zAhnhZf7_e;19^WB+=I;y30Euk^~k-ad0R_60y<>lpy)4$tQHvOx4oxt(2nQwzz;TY z{qn(1Fjx+KrEfNa{5Ap1{hg4n?MPtz(f6W_+9n2hFx@A&4+fhU8da{3YrQau@RN1* zWH716qz5B)^%UNv9+NuG@=h(77U*r~&U+L6o!X++71b;)aT!)kX&JX-1#3C+eGCa6 zCc8?*`Bv8lO7MiMM#bKKrhU*Ov|2|OCr8l@?~yX?_kCD}@tlZyIL{*W;EY6k_tkf) zKcvK#5^ov9$h(wZnX?gFNWK3UZGpT`)Av=pKjiGO^L4u^%dVii4e3E2(De<~si85Koz^zy=w_|QK+86kyggzHh zcgK=BP)JZTV$3=>vEJgAXM;^E!78syb8Ewxdo3p?Aj8)!?r!(`yF49pTh9%CiM$eu1>f4tt<}VMh_2}9)@ovIt1AOHw@wptE3KS5-RyZjC19&YgrsY8SUg6L)Vc*7rb1w@wq|DXAd_(%w&* z$*1^1**`ogYi?R~a9dxz#qu4b4#?N?M!i#0rMoC9i&pcMQ)Nvxt7u|B%6Z&v;ez6d zhPtwI8o6#$_d?Ph#Ca+z-JO_$4Dxi`on1>c)vK$E*v(S0x*9RI+>+LDJ{o-ao`+q5 zbsOxqz@U6j+$n8lf|s2lC1(d$I|f_tobKF{$Y(xs%V$;5SzN@qc7e?^60d|?peyCu z$61OB_XP&mcvhB4A4F8=dd}+A4Qo_)i6ioYFPK(St@|9JOPr+vk@_OL6 zqOz*2VNDHJN-{Z<;;vD4CRV{G(FwLEX?tfANR9jnGQ^k`jGm-~FnS98B4Qlwbh>jdNLGxRo7Y}B+&Pp|`X{G5- zR>Hof`XC*gY>U^DPh`W8q>$NFM;V%>W$4Y6p}O|I?&j9^fs%CpnzsIGzCGygYAtQw zNPDV#cSqx}?U?l4j?}&z^Cq#rU18!Kwq2jpzJY81>xnm+Y<1;^+BJ0W%4JWkTvqGa z0N3_r^0}JBmM7Ow%jAKnV0#SO~s!dTep&~a|$ zYHcKa|E)w``u-=4GXEw01s!VOQO2kF1;-M$8#5fobJU;CFF0P^++2$E#j6QN`foxq z29dQiSuH#fUXgcF7C-Vmb2dMxsGm9NNBZzGH)Y4*`30vc?$+)k{CQv!?qxx^`DVV# zSdfKRc!bx^zvY`n%DXt^b^5#cuKa?f>Lzg!|6&_?4#puoyR}AnUk>kSkc45^%_f-B zc^CdORF2Ot^2DF;+p*gOvr_rbRDN-@Hg)5g{DLBN6S)_8I{ngno*MeM-@{2bGM^FY zmT$^6tkufv&#$@kaletjNv1;mou&RnkN@(*{=N77lK1={-t$kr=U2Sv{Z(f6xehy1 zHpnoY)%&3Vmfd1gXmJP4(|HB;$aHzALFJ#6s23WTq^DX7zFbYQLvnRWHaxClV~Amm zeag%{t;g2lU&pVp&^C5Acf>zH$aF>_?%>Hgka>jIoT7|P#m;VCuaPk1eI3781p8D#!3Xm3fceu7OUevt=&i1TgkK_O~+#XC9BQ zi-yDX{gZK<<=h6kdb+xqd{KXMaVt!?rGiy@8`eVHPcY2iF#+V`OTgzbhbJzU-RiLn ze3=!JvR2`~hBdtIcD8h6aWBTb)`TBG2JtNcTW`3m zc^k_~dYj7Jj8_AS*&&1ih@5BcE zn^J9E{e#xgli?MTH&L%Zr9|`8JEKe=( zpSE*Z%4qF*4)`55PC?V)=G*GP?+NDag7^j*R2c&MoQwN|)?bF(dAL0m#9c2vlWCi- z9_IMSVgph}Ce7psp8O{G+}|^J9clw4{e^8nxp#D{$M`+}$k(u(?=fHG{m(JcxuXX;a7?d|w|c(gRH5GRMGb zI6v%TRiBcMGVd*OCL7^*f8iQ)q+Y_TUQ6%AA;A>beq&-TC76}a?ow?{^yQfCciXvw zB#+zY=K4|@?i{WteM2|5(n(yjPVE;1+PQiromp0JQ=(y?Co2c4lUDCf=+16<`8aC> zAKbYQ-dtZi_%7XZ57&B~&YoMn-5F^6eQu7!bFV5Zt!S*$v5M;#dhX?X2NlfSxVf&2 zqWE^&UGBOT8b&gLiPkdsLH_sGvujA81&daE`Ta1J8KV7C^{NEedL-+awwO(wx&36!cB=aI8 zYKCv6sanQk$vH{qR#jAgcG3pUO@{SnGp6$6@7(0OQRmOa-MQ7Tsacl_Iyb?Pr(XDE zKHlZUKH_G3RV?K7G*kGbLbtuDb&ImO*s_+)lflPO!Iwkqo8bF1cYcc-cX{p=4Sa-J zqG{psqvu{zTv>4ryJ3UxMO>cjkJ7-d*md)PXDkIGSnNOQUYdY)BSTTYUJOCJi;d!C zF3`_@@#G>HD{sDgaZP2g&)PrBVkn{iR=bfkM!0y0v^d9C$P_0miWcbrMS;Ct)28Xg7lVkq|1V^C49+CV~nw#w_d=v}1;&kyU8w`?^$&D{imQpA=7gZG%9sQXQ6hufQOicGity{c;h-?s+t(K!7^-r09y$K)*4N>%F0b~*YKn6`Eq>}|s?lGon}KjVw& zgSV9R>-@Y2_rhS@CUttd9QVS;95zFcKC+)%()Q*+2hmgN1wVzQ2}sGHB{6CX+e+sc zq|*p{?J6snWDeFDY%)jh_!2wbLil3;*=m#b1^Se;g1IRu&+5*L6 zS<*?upO~nZ1v}VuGr3~xs1Ndff_;yDOEE9_&LZH8;fn%X6dMTaWZV7VJvGp^J)BGV zFmhL!i0>o3ud(l`_MVpZwl=%ZO1|BZBOyPEyZd`=g2ulu-My{Dp1$SA?h1{T_STl& zT?4Vt9OPYXxk1a`+tqd-3&IYPIXWkFWAKt+DUki zu)OME(?j+F7JBXG#|ifY6ZsWeNIUom&lchSGPl>tueKaUyyj+a`xHTCEkcxu?Bt&R}!L${>z0gt#54d0zBkM{h8LEOo`b zfgHx$X0n`RH2FT>v&d^m%6lj#Pp{3>cH+~>n9AOqbhnM$XL)Bmkm=Ljp}y5js%YQv z3*fAadw7ZL+3YUSIVfiXv45edqkSml*m_&0zKGuwOp$B`3fhgQ_ilg z?yl|D)kzF&eLwEYSfP-4MEQo|YrMO^RVL-xw5_e8xmd`W7eXHMwr+~S8^a=8= z%tiCfWqR0ahYN$YD8e3x=Y+)AP1@^uvR7Jla{Yuw#aBd$P`b8cb~V&&qq;2yOT?xXT$EcK+L* z!I4jV{sr9q&2sT^diY80Fm!WaTpy%MG!G(cq{Gag_Xo2U_PbaK<9l8hJ6#xV;+rJQ z_;OE=&QvEtwBrxymxw)FAN2=;++JBR3-W-xa|T_1`xcvC67~tdj3PLwkwt0Db)8zs&Dpo-Foh6Y0WA$h9gnZ_}^6CNt(t#4&sJp!PmOB z{{MHdsYZQcH!0I%ho1zzHl+(p6dOJQ3Zs*O67HyVLQtIzHYYxMictI?rn*WwliVTY zOP(j1Z9yF&y8VZz+fX))jG=YsH^_sG-Q+{RU>-%} z|J;)w)`zjr9Q}+Qa|ptdx_xt?v(1OUM4sfs?ENdRmC!0H)))o#aOj}&^9z2aGV8Lo zahh-aA*QSLJqu-V4)y;H@?G2XTMg?-U8jB{+9nxupJ3AcU9yRsc})2LCa4xPoy46v z(-4+?K?OzsBf#{u9Gj;F@07D%NqgawIfPpnH`s+Ki~R+jJ4~>*sWaUzGkq49?;-9m z0`W0KzpW?aTZlV!9iCBFAXCD)$ByBHJSy+MweR5xvl6!CxmkHV&BOLXoPhT~(Wfvk z-aZMoCU4_FxO}bgJ`uTnc|Aic?goB;Epf@y6=3C&dhR0@3)Vp0m`lpd9eJ(It)1#Z z1^lq62V!jH5O)a6DEfqDbQgL_9do39Cp1zSeGxwDdtDv0@f3`5#0NkMYrc}Xj!x4O zu8Z?ZjU4|bOt9^VZ^C5!z9ZPP5HvJ_EoI--POq&O`>q9({S>ZGCjEh%NaN(81j73g z0o}qpT9_wOo7&xcn)Go#;=5`3Nk0CxkCTrjkM2u4zATFC-#xAk(aac>E=n8 z%!Du-el73BQF$9UASpUEPU1Id_xzFKVmpi zo(r^}B6Y=|ygbIftl-f9AaBJQctr^25UrP_{1|UMC;iMkqIPf(u{6d$5sT%DWG=Ak2f}}3r3^D(NRr7=3O<&hA z`vY_j9zDMX9|-tmobWnfN!yXV?{4GnJ{h*hOf@D!mBpMri*~Nxn9sAweRQI&FDLH2 z_S*bH4x46IMXGsO|FVu{E$-Vo+@^+Z!x?VZPKf-q;IH5J7rG52FYb2jROipSH2eM% zZo{72wbPtGt7Xhz!p-xyadH%g`HT9ObS!CEqIK`i&rXlr7WB`b*D-%y%lzOwK&dw; z?)>aYp?h;y_vukQ7vK~BNRj;P{DJqAJUiPbO>lS%c)!CNXNLUE^ZOTfEXIe^y)lwCoZ&Vzl-E2T ziHngK`3v2KlWwJ@QFx2`7j-OZSrqy!ofx_eXSkJyGMn+!fxG7~bQ?~(QI$;%^S0Vz z!GwH=^)KvL*s>tRCpf%iLC3=Wg^JIf9rBY07IZAYhl}g%*`XiO7q|Y%jq$OQ*Sbt) zaW}TZIznt!sN?XW<|tmC|KUZgJ|4;##uA|}G!+wFTo-A0N9E-^tbab5+dE?>?mQ}Q zg2P+D`yGD30UZfy=U3ad?VJF-1gos>sdM?uB>Y&XRv>(@JI!pTu)E&AKpLGmxNc08fW0@Osf60x} zv2i_HCVX>*+onO(v$}C^O$QCwG>|>j)VIjiP+YpEaeZ8~QI{sr`kVUMF50#8en;Y? zq+k6z0}{&}5}SFZQW$yVfcfQ84B9@A2mQCodpvxxhev#x{!wW2gSzkIy(Q~9uyeLL z;S=lu<$7DLp^{5l!P1|;FF@NXSe@mzS06=~J|0oEIcQ*_fU?adKo52E4COv1DL3DX z@P&q}xCw`rqH=zE3F=IKTJ|i!w_p-{1~NRgj>mx>*TdG}H*pS_Zp!nbbbUb{sybJq z&fXr1XGj+SS66a|bh+xQ+1jN3ZjX|TA)#w_nezD#4ff*my?_S78#D3wAy1}|M)LmV zY<^}6{!ZN|%`nn+XZgb+GLCrG)0gSKK6P4%wCuu!zJB)s!hX??Oj)4E=`W*Q53>!MYueOLU?Z1rRlfO`!L~d2W@z0AI&J$;flDn>`d&ZR}|xR^z0iP z+}X1S_AslYejG!csH3fQZ5W|ixqZ5VP^kyMuuMOkD<5!g1-2M=D5dgd2C$9E{iVl) zo@-1dxSaS?^w(xRo6BVfX}@0m)3{&KhI;r+6{wxj!`XJw=8eMwt49 z?9Zzq?=Ex$(SufNS|)E`jqu4?x%Mr`{|s6Cu+DpgsWp-SHhau zgMf!zu_2)EzsnMO7QK&Li04<<5|YYs(ogkue*oN1LY)qV@Svadm(N8xmoA2B)U#+m z^<1lmek{ZA0PPeRm$DtmS`Eic{ z#LDN;A!s{lov%NoAIM`rjxx!M-Y48wE}zd|fiyU092>X2A%;5xj)UO7nDu(T$Q!kH z_BrP%NnK#qP+7j);8R|pRU3z(@6ai;&nMWIX@PZ=^sRJ%#`ATR_Q8oC?>gkZ(TtDR z{6s<{?6pN7DQ@S>(5{Lo@UgZThrW&_j+>4^&!ka@S_^xI`T3dL54Fq*0aqE3hV}^L zt}RkNKv6*x;QKAnVUhE>zPl(Z}#P~ zwmdk(nZzBHL{cim_~Gg2gkzZRX%uh>#BltS;oy8n&5aa38GJ>4`)P}Not7rl6=PbaR zc=YFZDej!k;#oW|^9IndA&hEejSjA(VUwVj!YRlM&U0&=kIP+g-~Z;hwb&}b*(_LD z*7Nk=w^4L08B2aBE^+kXw^8pPS>?4}TnE6;uV70?Sbvb)#QAz24TSST&DxMyqR9Fm}BNl zl-Rz!x8ypvw;ku9@|q03yYnX=nT~#eyP%gOj)bKRxz6k78o{2%WLnyK94Og(a9%iA zF)t84AvRo-GYjtRR9_Ji{N%f4g^dW?{glGjY7VYFy!@#pboiaX-|hA@4eX7MP33n7&Y+G5J*zS_K_7QwPKC=4kqW)jlZrgFe|6ufB_%Wm-5qB3B1pyq`)Uwnv#(C0?=Ay9t+IX!O36{_ zeffo)9FzNykFuS%iI*V1>umcCUQJh{F*VWvi^EqvjmV{11(481{5KmO(s&8lm^5w# zjqkC!gySVpH%j)u+4gM#CGhBkrU5oy2}d6jJ_W5CqpK-nmT>g5Q3Rm%)ey?Y+7aoI z`0xyF1ZZEg%zFhsHF;a2bAJi;u5^VAch&iR(mZIs4{6bMeBcGMk&|k;5P!zv$t`)b z(ZKxoTl|rk>6ZALK;r`%FLh!1hau~sP+k=iYguf+0J+aNuj2vaZ?824=&&^yw;g~@ z;i78_>jZ2ef!%_L}q0 zw`bA5UzmmlneXw`P{y;8GTM9`9G4)k8o}}4t@GG&G=f3SJANf5W`Psf>NKc+RZ2u?lKbC!dm_(Rm zKO6s99^=*{AF7%A6q~ZR^iD0)033KO$aQeUxgty(&Kb*>)}Q$n3hC?NIhKCb(x>Hc zP0o5SU%8xl%eP?p(!09=RnXQJj#-{X%k$sHE9JYpyq~K+wv=~9ksf}5M&vO{U*g+c z&)X2!8D#ec+W^Hi{t?7=g@uv1Ys7(8eowy%IPQne48uvs?7|qwbVDuRb*#@J9&0qF zXGS6r`7nS!-z<9r$EW8f#^xtSl)j@#k39oVuM~0N*bcVADJ&lmE{QQja0=kLR$mK3&Hr^I9 zV4O2LN^>5^XlFQhs=ZRQz#q1!VXS$#(4bP1vXa1B8?O1OpQ0XBI z?*J6ugd?mIXDf@1qFpcHT>>xeX<`p~&5IIRH`t!0tYE8bmx~cXciGR*uHLP9uwBm8 zDt$gB@hv`|k~o;*4)io&vH`c-a-QaAZAqH#I|t0x#?I4H!ohu8gqjAPSH_uPW!*|?a(gU4KP<&>*6|a1y>+*yLbs*=IHgn+ZDF) zzGtsE2r<2j@JmCl?!y6EEZbNcMm$Y3`OTY7^uWy@24-D zrg!f?xV=I@stP+j8?P7Iq$xnqYV1ryf8cvxi3~7i2BSb!`TjcSk~Ft_v2P z>q_U2LIfzKU9S0p5;D1hICOkIxqGVmYSbyL-0am!x$Wus(K-53_4{si+AHAxvA-hS!%c3QO*j+$}3(7FaKa7eu0t$0!viE+S1ec-jAh5CT+0}M;w7WWcQ zB8|L&8B7KXC>t=?zZl;gyV!!F0)$66aNwm587~zSxbJtzB3F9)QV+Gp!x?DD?pGZ6-k$a54s-d=(HJdw&aZeS0gy1K+ckvsb z%}Q>LjyK$ZE1gslI2r`~QFmRE_ zxEI25d@tnfIXvrlhy8Y%eiLEpZYfRg1kCL#oL;WSi19AO`Fe=;;rQb>=C6l$YyOT^ zh<6&^1DMe!b{p?SIPIhNA$-<$-~os@=1usIt?h8Mgwy>t!~cH#Clw#Se_yu?D8&1+ zF0X%ABbWi>FzMx)L(j&9UT%JcqD-FybiIy)FZ4OGC$h?aK=5vj|14Sf*yxGC7wtfrxX-qcE3LuhY+c+_EjcfCAVSE)RJhlV6st^H>(X zgfzEQ>jTMHDR6D82bWg9*EFan<@HxkhRe#oDAC0JVV}jm%)(zH?EKF7DmnaB$)kR% zndT~oKg z(Qg_~4Y$_Q$2QAln~=tT#DA9yUZ&4i-x7S0rs9~$!nYB>#2G>C+hxWw+vZ<@BW)YD z)kfnX$|=tCSSX;aln(MQztW$Wdl~;-#1q%|@V|`9Wu3Rl_bn}XhH1U-46RUHdObldM<>%ogbJ_YULNo$ z-B}0s`uW@G6uyHYRt?|cera3C087)6cliA~<1?>M8`3R12f5J?EuPFvOG0mJtkJy^ zcuDKE=tsVrz&0hlY}d!*H{}KUU1X`z#&bD-i!`nd?ZEW~TRZ8U_PEDK9&Zb(M{r%k zJ!;si7wl@*BTYwy;Zo`JVZU!qI`Hl(mw#}Jr+&eRhj933g!`b8$tfHXxqp9-BiOH+ zkrXC5%x|7Py`#bWmzMU~&Yk20?w)*_thH5{8hCX4O9B3y{HoO_Ae=iW~IW;tp9ac*Q= za_(RoJsxRdnJdFZ2s>TuZ^jqPs)vguPn?Gwhs*RQmg0-~v(SZjmwjm&q$l!HTUd{D z{*HIbd&KAR(q&T2*B&lKzO>ya|B0LPXpxo`;WDJXy|kWISJyiS8+-eE=rEmowZ5L# zxW1mj2Cjba^+-6_?(gf7G`=4k)5JL63)VP1{k3QB{ypH~^nI!gpv5#koo5Qy?!c7! zo_1?ASPT0RwKdrL7g^3av#u`7WBaTKm!q8LFIDH>y}S0>{&lg=XpbEOJvYn4T)HP& ztS{ns@7=Svw-1l1X`5Bn8U8L=0DZVqMzLS6DAzmR7c5oSkCZURQy!(vBu~dW*29&+ z={gE|=VOKVENm>r|3N8!lf*|I{T}G(-0!Q{M~k|Z&?i>{((z9b5@SpTJQes;U4b-S z3mCse9&HOhX|zyIP}joSZ&)wrUM1@taDHW*2{P9`4e7BDNq<@ST81#(;UG-bGo0I? z3uV^10i*DJzyvp!9^E4yJVPeK+t#D<>oLrbZ`^npYtEjhD_d<;?>g`=A~cBpl~Mtc&uq0H-mg&%z?of5qkj zwZ+gUQ^ba?u`oZrS;r6K+5;}kCH67Y>Fj=2!Pc`A_XCdLEe)=TC_}n%A0Q2HU_8tP zJ$@tOlkn!yYJbsPvcDibeWmf;UmD+RckJ0^x1)~!IpCUGY~fS~h)}fqvU}fRQCQJ) zDct(*xhTJiSDq(*<>MOn@(}(`p)a^TR|9-$E9nC<;VraxN2$F#OYP13b!q$ZZe1GQ zSkc~_E7}`

    `p6SR?Xb7ni7{aXlJ(SE(Ny-XEYSPvUliXMldlHs+nI6IFebwq@E& zDI9IQ#_VGM|HQwXpU%d=(r!q1fOkExHa6?&yzkl82gNqCHJ;}z^u6`Mq+KVR_jBvH zR>4z>LhHt}M6Ol1E=}dfi-m{dobc9C{7Vt<^P0!`ymnIZ#(9qWrs=%)GT`z#HI~^H zUQx)W;WQufRONdW@-2G~lHV!B4uyFKD;$JW#iNBNpYH%}j&YwmC~JS&==AmWs}a7T z;8V<&B<2AGyKS&`mU&>PG6rRh8?VcrWoiG3?bZ4glC3ywzvT?lTr56ARIW381;_e4 z9lJ&QA;Pc69aua^2t#AlsR-MJ{Xd72KRK`8O4~{YCgtFcksVMB^X-)e?0|+{-y^Q3 z(9xJnVntVb4ch61=k>iF!^^lk;R6vs0AUD3Aa*FblADg~unyEomQppHA^F(44QsrU2jo_arRC!C+T z*H_$|&%*0a26_MW_@B;io|f&+am#y~)cxLQ>EC4OV_d{_Y6)EAccyn8@hyhyt(M-$ zzn9JQ+=F8t9V>0&?Uv^qmghY-*S=ini+kaF5T?CrdLNbi`rOj~=Whbf9l_q{wK4KG z!0v>8D(~_d?9G6k%I`etxcd#j-ib1r=BMcm2)kcoA0uqqGvDV(;hrtnY-{ zytnw+zSHf|q#cAXk!#FzPkQGvzvip;rhbjPFSvjc^=aI9L0ElclJ<7^7+bWfUzBr% zt>&FZxrVQ8PFRQB&5L$(OiTQo<_{Y;;b7SeKP1*>??!)gmHcND&zTEw&LP`A*kj|< zuGWskb^is`_s||t_(*yW?RyF<+(Uc#g4TOzEHkWSnepBk_W=1G^KU0(rG0ISM4Xu| zOz=@4B0~829X8*R_W#Wp3D@QDk3e%4Irdd+ILvdzvWud*YqpW~SZ2^2k@Gvgp^H;d>b_@t5e-^|%gXTenM?O1$z8 z@7;9Ni+sa$opst~7UAP;kGdIL+PG%g4U)DMeubxP=nM0to%fVC){~nQ;797aSm0;x zP5OIt{&pASR$@FDi^w(PNG#^Orru#YH?dLPl6c~xu@b5~vP`>Etm{L}L2yvaY zN^P9PFR7<<9wc9L9>o6#Uv71{TguY0PvJv;z6*3O>b`nD#tFM42xk^x@AR`(pA(Vp zwC~3zF!*%PNi2aqAoIwatbusG`ujo)+mLfaA{%pYCF*;Nge*l%AJNv8b>aScI%Ym0 zVLhO5`E`%L)F&cgZ&Z1Lr~5NRCaJe#kKF z($)IJ=0t$dM)1io3+EsDDvi{G_~26wzVI-C+MQYQDfQ9LfTu~!5gPlScOY1gPbBr| zI)``c+>WA(c9sJ>k%Hb!81B=L9pUvoIyJRARMA9QRfi~^9nyY)e!BQR7Sph7yjwlj zxNRDjec;0le9roCoPR2*Pyad8=d9|kNhZO@2*vxgeLOw-dg2ZWI_JkuYUJ!VOWnXEC2Ya+IZz_m>BN;9Jm zlE&~+Y_{@&C@P*J$xZe#&Aiadr`IgX$~lF&#f*LF*9^2h$zRXSd>r9?PZ!6+d&GAF zap`)QuopWlFGXpj&G5<0OI8^1-%+OypL-4x;|Z5vjDJnt_M81>0;Bnp;O{%@q`5er zJ`MQYb)Bs&M(E{R3GHp}NLK5257KtF6?j-=9p63Z>RkHWgG)Ohm*~jWIHF-DPIJRY z^L;bYzM&KTn@aB^aBOhT?ut&Azdo?ynBJJjc>x&XqVlM%f{!1TaZR39%@~+cJZU6z z-sV!8S@Yq-@z-67I}9I$?k8BrXDR;B)Iu(!8Q))uPyLQkPd<>eqwBhyJ2pT@eI}7n z2Rjp8#1obzje$k?psqz5aOzs!vS(Fa_gUa$IKU4J<9P}WuUY*>-ANu z7i~gVhM(jAO%BJqcJ|x%aQ_xzw|%cmzhu~};U2Eq9XPG$gKlE{I^sMp>%w+O>++3K zJoBaT-%N0OoSxCuun(kr$Nz}`>>t(xKl6HgE5gMl;-3*FZqNU1gxL{ss3 z*VbyAX86zaURTmZ+Xkl9z5Fb+Ax#V`t(3D(U?N`VYGR*Ju^%uwle^TCpE*yrTe;4U z=UEx^#0PrLN0@#7C`%XnCdNJ5;`}^-`@*D$U&kl(VMXy+!`G4H({oJLw|sA94bpgf z%mWv{vF)<3R^r<`*si3NeV4Y!CdkB<7-x)?e4vY;PUK^q9*_Sz4zdoGpZ1rJy(d^1 z^O6(xy$E}sQqKA}(p3*nL>l5J4&uDrY{FOu&u7F&9JEj_xQ%WX^7wrX?eFu#C4hOG zdS2ozo(Z*uCm~&02G5LXb5>Oj?}d<7FXPF`>-F(6{0!$XaF9oT6lr4pYT-SAd%t*| z7@vj93+Xk#+wd_x^)I%Aw*~WRSu4U*3VAiW#M%gY77ysfK+UyK(O4=Xa(>?k{5sCs zJGdqy-&_I?N!x(!S8S(xxElH5SzKd^0Zupy2;pai1H$XkS`l_4ZQ5>W+L*2_JOk;L;P0fDp&5h2OR5+BF?&SL-@Ab?m1C^? z9>DmGb*YEF2&etQ^R#lBXC`SJM>)-);EghT3(AZ2%fdd1udgFroC8ilCa3Mf^z+sq zF<)Cafb=PSo-U@Thg*<_a+Z6`*_1!te=!|ygd<%Hx5}?HU$Kl8 z;gIBw?eWXj9xC6mFe>r&b<`Qz9z5?~);>nJIPh%V=`PFlRHVI6XPp;HgNeT`rDAF5etMA77DG= zLZ`nW@M!c!x`$2KjQ5lm=9}17OV(HLK@XqFM+$4MYur{#TP zxC4?+CG>X(OYjKhk;`mNdA4;H%geyV(@A-`e-|uX;_xlBR2m^|r-PT!{YsCloXnb6afudvRp*Irg%Zf_C3yZJV$?yd?yQTOYs%^zvP^OV~IuwUW( zx3C90kDfnJ8*BQ$(;lR`75f3{-WJ>XVDgR^!xN=#R@x~!cJPcP08B*m6pz7+z-Y3p85^~_CuX!;yhiWorGy0G~2YrwbStl+6eer z0Qcsx*st1G;=ai}d0OF;{M_IHu@|6F&^8g4pSa_~*!I4O!1d!LXu(fz^*W?9{7Ze(_{iTBPZNnmx9Y-bi@(CXA9o(Fu?Bese92H)0gjh?~YojcJ^sh*$4Z`rx0XW(Ya+PIJP0^rq-wqlPYPc2qNfSi0k zi*-MN{IT9y_<4kVz0P>XF%8@KMfmSJ4&x|GDJ%J9I`S+}_Ff`5vJUzp*Y%L0+ zF>Mx3A}zzd58+{^_4SkYC1LY`GQIXw7G5d&6+ic4iu*BHcvTWFI=YodJYc(U2g0;9 zso2-B*3;d)#nYHj5gwKVy(!p#yMApd`W4!fR zE6@Ap`3SRbUWWhP-oJ+5?3+9Be_5R{F~eyzXD5$RaHn;KXTmW!5ChwLbYAb*0e9Np zuSb}+J!yZv0kCClQ>=z%cNqydFYirO-m-pGEaN0BmM8HZ+A;&SoFp&jl$GQC`DTP; zooeAN2vd$#@DMK0(b=>#p#HW#dz;~O-hMm6>(N6IZx-GG82O2DX}d~VTeJGO`7KGS z@{#coPc6L5!m5+k@OC}p>+2Y%-hMyU30^n8LC3tF_Pq&SuHn^Wp_e*JcC)a7GulqFZN0Kth|BU0Ba=!W`@TC1p8oAzQS>CUoma<4;TR-sT?vXQg;=XOI7L#5)cBkiq=U8x8!=`SgoO z`>zq_Widb3-!X3%zLvzx{zEDL4B|Ic_PwcJe6^FqKL+#u|2p!L{_6_%fB9Je-l~xM zt$Kl^6`bSwhT-vgkjGu_`#kwgz^Z)|`IIs}+?<=hwM-IQf}td~_x+`E*j~R`YL9;c z?Ac~xOJ0U{V(SvuZ&f!WAGhUk#W!xq6F5(_e68>2!2ZYLioP#t6Wf``McY{3G3kqN zHJz|E0M}dx<9Y~(psM%VTFlD9x@+b(9L?x6o78t1e>%@6(_z5|oNwqnP>e6UrNeo# zJ@a}bldhFd8{m#S9<~Bz+c=N5+1w^;D|v&Lb06=8{WIF#KizFbZJ|7|sWd7mhvg)~ zTh34HXMWRh@g0OAA3L58I{j?y0l-pu_87!HSjzX1gzM|NKrH7TbabwdvJCDQvmD>k z`d3LG<)8Dl$NyU?eiiyU&HwKbAMvH*ndSNUspI9@!e3S!`mTveMjy4 z-iUCghI6}!c{F{O+%=SR1^A@`7iwh9PC31SwrJ{8c6e&?@HCdRvc@BQ*f(QUavXKQ z`tUB) zeaMlTLqYc6OgeoorNMrxSHcb`*Uji-I8ED$ zw2p^6UDLi}zDo_axBHV3_H`HAooSetZ=A4BnyxMUXhk~SvseJdX}TXnIxlk`aojKA zm}eTyI{4JXk0)tZCflEB(=<;(8umpKaOMXuqc5_KH?fYW7vs7tE<+q`@(cDfJwtui zmAGkJV`wk;$kRQEe#Y_r?Ig~95=mU|z5&gs`P?6o#_ifWxDA&jhx#BRqc5UOptn`U zp?fy)W3i?5V&3PR@Pu>H9Ny+ymze)VUa@ze0h4M#3(Y zxlP{Qmbr>)y6mk_*2D9`R}Ah%&(6@sj(aZ{R@r7Lk7aTWGw!pNIApJ$Cew2<2BeqA z%;3=8-e)xS_wB@adpceezGYWW?=uAMJg0Cx%&}*%A5Y!y8L~F^@uKm2_U%^RU4yI- z-?Znv#D2XF^qUqpk49?9Wa%gPIMOAEW5mytxR);P##wuE{n?@S*04lXf5aJZU!SxK z+wEND2ez(0|bT)wayebsvxWw4{@|Oh8%K;uT(Mpbeo%z>kN9Nek8^ z^6ZA!YpuPvMIDfR)t%6j>kz8UoK**OyGxx%ihABZp#RzvA0A2z@90rP2JniWsctEh z9~YuB)yE)M<)H^ZYV}?v{TS=XJ0#%PrVOsKjJQ=@RYa7 zJvBG-)^w!xb2ac5T%EZ;0>WUkU$`s6wcvfFv$->+vpMe1-CrA#cPcox={t05Qs)gT zi|e6t*;n;3bG6`!GKn-ox6bdX@J66HZS|?nT@X&+bHy(I8bcOWXoOM4? zy30e@tpN@%@VsxspZm4@4~#pgZzkKJtoA+Eg%hPaG$+*>`wYg5v-(dc3s)M2}EFOkQ|Yw6sPTV)c`_2pb8uc!~ z;19X*ZucN?b(P*b|1qT75RNS1kWX+e0DHfN@u+nZ+cHs}4JB`k`(3Re;PlS{Z!@iL zYdulFHCB&Q{&L+`L;K&9;OefG_UHs#2`258b-WQg!#29saI?QtJ%GOIJHl;ae*fSA z%Aqel*O%Nj=jNn*p7n~MLb7$`2SRDZDxyJ^+6^s$3a(8+8hA|kdp*N=o7V5CFpPb| zyf1$SG_>QceAC+f?WkM3z0u4w7|yr1CUkbx8kJ`-am|$l+O_-on`N@H9vabmbA>EZ$AI8Ja0N(V1mkapwbUDVoZ0vF7{wz4gG88tN(jJzjFX;%G9&%k{h$+EieT>vGq-tgUrvRJPP{Aaz~f9Ryp0MiZZ36Nxt zp)$RMQI6xC2GFSb2J3(|YW8f&&w7)O7%#Y5t55`^2GKVaX<(VLPFa`&ta=ZFWq?~3 zaBmCZT==gD65OooG;px4q&47{n^Nh2h1Qv4xLKUP#h4?TEy973_?m{#+j<7!=itls zChceseClBqFy}F*aURq7EX)%IeB>eRiz@mWgWHB~+}+>UzH4vK&{dl@>qsjB^ST}b zPU7-%7ZIKZHIXjZLRh)CTUy_fA&oIzEj$t#7%vy*gX!{Y~-I{k=hEZq+~pYYz3Qy^iozqW zLJ^$z!ySgt`TLgFKd4(`O00Am|3X>m6)s_U)aZ z$3G@-i?S*_{PHVBY?eCzM6h z-#8{*e|r<*(#ADuZ-<}C;aSJaEbr2?KjGWFt_ciOu-vyM<-W~uvTtRKT0b+5(g~X_ z`@J+zm*hrXb_s6f|5j4|U51nWdv|Q#yJu*>l$nI3 ztgPcbhTr-9y$F-vkBRPA3-3d?+GeGXXd4Z|YrhTW`%5@KP{R2^3D?&>2h7O&bc3I^ z+gY$ICBxKspT4jwV}dZOrN{S+Rk-TWgkg;|z72|FQywT+*+@9vw;$g-JBd|^y1wIB zAsjZyAuADN5U@zd=Qr0w~g(ELAcUE_zwZz z3xmc%`118}iF34Zr0R!5$;mmoS4_t7 z&6(x*fs6eAVf;_^1oBF;Z?o_bz_`B_T688`2OOK6zIv0|g^h!5VV~+KaFhC|`>2)c z>ymll&A8`89>%(K=CCX-wJk~49brNsq^FKHISrV9?(}uZBc$iD%DVM!?e&qsUp5Xt zZgjg|#r5(Z1IF>Cx=j{7Az?jpVw|@<|AXZ4DZtqFpT_^R?U|PSLtNTVS@?{l{S!;; zW18hM9ohh&TKF8|8SY8KECU0iPzLk;nWfddS-2Nr`n789UtQ*DbEc~~J(^uI*4pX| zz{vVl+ed+a4{YCyV;b&vcp&GGFIir1XVfHo8L(LAEPTbn+E&^I-acQnIPH^K_)CPp zQ;=@;+wihZRUGf| z_Z%IgSW&TO@`G}Wclmb@FIL9!PJb%nn7#|Jy>RORMd7f^A;Ni=f9vF7JR^Pk*l5pO z6YeYyr12YC<8Su(F66%g@!NTFPD&Da_!Pi*;WZ=yCvxvf;u{+uUYOD-mz6&O_!j76 zx0Ud01iUPpuL3NW&1PFbS~dX=*}O1vTTwP&4S1F8WS(mf$08}WsWYs_fcq-?-anfu zH;1+z7}~vUXkce=k8@uF5+1D9H_k0D$KBtc%<|a&n(?HM?Y~8sY0p?%w~?b9SPz2v zrOe=e@;(3aj^fuX-``t4A0y=X;@NW+{sFM+xgJhw58xzEb{pkqH)XT$#rz-S3t?>c zRafa8%y1jS@Ug%?X1E>UO-cM}h7nJB%DtHT1qboSKJ@OMp-oyGf1$J`Hj;Z6#38)dc)naj+b~=!! zcWi2E=k!QERtR4c;W9?JugA6Jw~~6T4eGO3*=bPgCtiFF0?K_Y#eOA?{JIT?@xchY9`Noo`MnA> z<1F;{-odS2ioAIXw#nKN=bzVv21wmDFt~H?o}GKP?^S_Zf}sbh`@WP;M_&;i^0E)k zw|4fvdQ_oJYhg9QO!sI@$M)_rBH712h8FP@|odOJ~Qm{nf=Bv-T>U{J`@>V zi!k?_D3?*a^M45C`3L&RGWuGrgZi4wkH=g6y)LZBMN&8C;Ve7>VYc_hd0KA=9UH!W z@x0`-*w*#%BbL9*@)OqwP)<7MaxAS!d~D+^JW2A^WR2|fJ~_vscH);=9^zxIepK>g z9UCm2(?8A4CMpn;@pP=^Zz9HkFw+vbh5WA|5LZvWO%MNJk|A3&0mibdA2rYXA>20 ztH)CfpSRt$2z&dn9=aC6xv7+|{lGM_?`q*`2v_Se;LU+;y}8Q3-%@U^H2xAmCd>PyP(tSxZU6`d$u9Wb|zh3za4<_ccgDs=mX6C z+A=+S@y6R;Hg~X%@RsQ4h=qBM3f+l1RpD$Ec0-Fkr?8xEp1;DEr^_0`wuULJCIGUv z1Yvy&J5Ct+j{Yuh1YQ1t9grM5o-5y_@`v?jefb|~!!F=uAMVEgRA#V_3znAunRc(G z?YFc`>JR#Q!?v6cJ>1K+f8JL7on#T>5;ug%eJM$f2oG!q7rVmGd{w(KK#%`hwp+{Kdhs=k zYt9eCa7K(=r0cDojDJHZesAKZnDKA(cv!x;yQA(ZtWVdo9j( zsij_o-zV@vJ{2KZJpCC>zc4i=V3F@#5FF1&Kl|r?tOZ*1pk?%C}Y`vPAY7VXMNSU1Rguixtb` zSSD?Cd)A_iS24pYtAd{b}nX@&v5J4-HLB=5rHaZDD+>XJiCk zPqj@5gFTXLj?E1&G}#+|$BS{R!^i-(nZ-_$ZF>x5bp#ms5(Hi&&E)OHq>k9@9zN{) zk5|*f-QCau>g&j#q?x{|HW|&Tt0)_@EQaw~DVSJg^X(|3EeuPTdjjO=pG(Tc-n{ek zvim^~*;&9M#%XF($#bVOwc@!`7gAiGVOEqAJZ&@TKiwJ9O+rm>h^{PrM|fX^Q(+Ju zLxaKRx2K24bF%|v9T|55wx~xZ;Zzz?mP+tZR=+Q!!~3z>qj+`=_vmu?2eY|j!_6Y> zZiN-}>W?T)^lFwz8c%17Ms=*uJ=yUBjAh@O(Y3v51kC#Zw9kE+tqt@jPU=VanQURY z5My$Pc<#?|htRC?h=;I$CX5CVwuemE189e-F)Szxh?GXge=pwjhVHiYqz~GV9Bb%| zu65&D9B1E6oOE!)$DxkG7XZf@cXRJ7&aMqcT_0!BO>Evs+cVsSa4*!hc}(O!CvZOA zKsc6K?oW#4;9Rw-gI)74fTGP|+CZ_buMg8WlG=`&qpqD zz|a<4bG{U1>E1&n|FoPtbG_rXO59Vv2{cn;NY(N`h3x`(Z<)p`kg$wgYD1x%!f1QB z(MCF{gO}IFuLLYzzx^V@O#7-lpYGkf!qP#y;ZuV@s}PXjBobL%Umg%s}md~#v zo^^X&jzib6#N#%cug7n4)Eg}A8}qb&@4OaHCN{=w7r#@^dNc1Sz}UF6m=DeV#J^dZI&_ziIe z?m|BDh_@l}vz&JU&bEFx{<95#+tT?Sg0ur*OzSkf7h!J)>et+ZBc8P0zk@LGy&wNm z-XuPMlh*Nl(9&|f#k9UpN8HYTA3~alzb*Wp<+&UGnJ1;k^ThP^@L@~;2bSLVXGjmn zYz^(co=k7;ul>0q{2}72_f{cCw(K0*-P6zGkm3PZ8IE449v8qduw%#BcV?b&w_SeNm7l-aqC4v|;@e@+~0!dVFL5Jvw|E zaPreVhPS#s8?Y6?Ar-dmg~%9`_GJD)vHZ^8pGEjI`k!T~49vpk0P}eA$0sdbc_Is+ z2dsK-Y3vy2*}4^VJ@$Se*!M{&$o=m z>M;gc;5aMFpd9!%@;h&Q$8ZtOdO7?7gS#AN9KZhpIRC>*w2aCBga6!7cnJSV+jsGw z?Z1aH^b(r%4@ z6S|j7OUaiDJ-JJNV#&0cvPSLzyw_gR^L=BMzt+m%c?7P2lXY1q;0O9~C82+87RMd=T9ou%jJTUC z;)t({Ozmgp!jdJyMJJ-nCca0)rEZjmNb?3;kf6( zHfj$8g?mNkhaH7`MXSRW9*ZUI*E7|e7#2MXVl9JVc>cjXh-LMHn+kiSc&|=S>sq%9 zSZV<);EtgX_QGJQ%p^cgTw@)^nWpc> z=a&3+Q+A#}dZ-&?IG@S)vQM4q&9yo2k*`eK&F_&Xn#3brn=i4~RH+Ye9Y;N;v@f;f zI*$BQkv^`aWj;>U+TGolw{)G)wHD_*`fejfKMM8sIgc=|ff(<)&7%>24*M6QlXK0f zVQfb(wS7@a0E%=y`dHxSJf5!gcz(ma=a;nTUP@bd9MUee=9Lwgt6I8}$?pJMU}Y?! zqwU|b)icV^oVInA&)e=ogh>x|1Ge1{AxwRs)6y|+Eq+r1_&W2VJWh37;$VKJW&P0Y z;bOpu=Z7t=>u1&N09z_aZ~cki#HIa(H*6%VWp&{9bJ3QJ_civD0IP1p#=wp}TYHAg zpw9w%TRa*0RNsnrj39l9cc%J~-P=@t=6E(39_oR_>3ZPh2KTyOgz>u`t@Go6ll~vW zf41ut_|LX_N+~_tlxdu2v~BC*CoKI&OYgky>C=ALWNELqw62pfE%Bw_m~TaRs^z=Z z^10s0_GjL-A74XUrf+MXtO}cvE?wjEd}X;c{&h&7uJQMn?0-7o{@EC{Axz3ueofTj z|5#&mqyhIYw%32%b(<(FGFij3zteT8ugUp7m9I_N4$AW@!wo2(d4C%JnU}v;q96JD za>yU-M^~=@)AnVb$F@B$Y%!d@hBNIywlCBA+IJhmE=SV7;%}x?9%>6a3}>I=tlrlt z?9aA(fzY`@;oxr8^+vE{;ZFLM!SS%`PD6lo!7s;@`J&v9@P@=*jqfQ?r#k?+ ze>R$p8D4y7(xw6nW!{j`W1t8W`7>V7@3z1((CA)2%jg0^cp4yV`_wR=iAnUiEDVYt zS{!i0Fm8HYHO#0N;)ISm=XNzXP+g4r-Yp58u+ftB*!F#UdWT>;EmRgkLgNy8L**Q` zEZ>d}b4AeVxHN?u-~KG<&`v&-;;egumf}?^D(j_nQj7PdBUYQ`!Hd zJ>zgvkIk+ZD!r{W0PRcc2ikO+EQx%&Rgm;O=YS??=N=FAy9fPDY(!|79d-XTqX>6} zEeqpt_Qv{gKF>hwSVAk_@~|?MObbXkOYoRX)RJ1KZ%MmEea?xOH$moOjd)g>&;H_f z0`y1O|EMsDFy-pA@t^$Z>&3FKE1vHh2uJ27j~vFv-zda~j!nv?gSf|^O9mU$w*lWo zkQb60c%oZ;pK&a4%uXTBKh5I()U(b3?>D|JucJ6WPSor$-DqHan>C!Lk51+`K}@$; zlh>;`D_aJw3w7WVHF=g>);A2pw-z2ar}smZxt!nbsKGjJeiAkg^!3)5J)GDQ-ifu; zXamjE#Jl8-MmtfrhrW?bC-u(XShhLtf1}$UvbI<+jX8QO-6J8aEli3PlCNjm!*t7@ z$LcUWaClmB%ACUUP1v!FY{BLT*VW`r+Oaef+TrWyoW>f*48~Z?nro?b1o@JB3P-?V}{hJ57vMa%CxG50xn zj>%6PC-rcTP;b|5eP2)oWkpOM8nWZ@T)wtCGZzVJbwQ0sx5&R;@4_J4KW zk(uW4hUfKw<*jx6GV=P`=+%ZNmxZ9WdQX0#IW>bJ?pR|m$NQ@Z-q+@MbuC#ubFPIu z5%2v=U7P&k?W{ZkA9sMSx3R9{BidMU4+ge-vM1wn)EkiAKOLg$<BGn}D0`9s617yWQwJBV#A}S|?xQtfXLj1v|KWkBaqyZ#7snstjhhE6mOM zeG1N3Sci?fj=_0lV`*MtJ*Y>#IjQ$%%t=f2z01x2S6X=n%e`EujXd3N{zu6>2xf0h zXgUxgvj{iGpzw~bt5QDbLi@$GZVPV*zBu-adl6g*Iq&!wd?(WT-ioi2*eB%ty9Aex zU&gur1dY$ayAi*|`c+|g)-Rb`Var(vw}-_|Y5eMNT*5r(=DhzN;PVgsq)jd!8J;Gi z!HF~16DdI2!*w$iYje5XAj56+$v=Rb{Mgs09dQQy?@RDwU8ML`jit^)AFxR|g$OCH zT4t8;RG~ob>#Uv5)!*X#K`V4@s16T3$o9eBQucv_{@kCSso`=ZU8T1|P$u(1V?ou^ zPuh$rvC_~|&+0o@rFx!2dr=;I2sBe3cwhal)FIkgXMO3FhhgJVnITGM%yVa{tDFM4-b<@hszk8!R8 zd{n|ZmZ&4T?H0<$Ckv+mb2-oW^?+U`d0Z!{hmRx7HvMD#XPZ{{lkJ(n$`jX%1UDNKiP?s zCo0=w*;dlMa?-=Lua*VaX%R0bpw-`jD}tmw*xsKvJl^Nz6Y>$ik#FkZUZi9CKezPf z+qq{K(yO0sn2=bTFmHPpK8nROfugUIk6_6>dBcNeLQ^;W%}nph|E{Ti)#w=)#$>JBgdsL zYrym61P|6m=hT<%s~#!59-g>%Df=|zw&v(~V-D*-nkpv(I|1kXaUW4$DGO&bZ^y-$M7_+f14dfB zOs4&N!|VCJQNrtbtjB*7@y_c`v&$EyyB_XG8rJt?NqzqbFfF^jj`xo#L%Ojq!!g0P zU>WCn(YHwh^h??Y@tiT%yDfZ2am$@YNtd@*Ej)lYr;TxU0WWzp=C6l`h#Pw;8Orx^ zVtf|9SBfVMY5ey~@m_bA{|`%iJVPqe#64;5CljaZ{r`zPDc#(&_WtxV|COX+o!mF2 z(1tK-8vX}q*q#so(w=_i!g`kX!ejX>LWcCdmi4rxG2J_l=~sp}q`w?($TJA0cROa^ z>)wa{WxMRhf7dm&9_NLX$jiOwR(+;%YzB|9)6>4s5HhsNP>d|rvEAzE?RFl*Ye2L2 z2miB8&IjE4n>^+5{LQ&=HR7x1fCh(i$+oWm%E$O)j218Fu?TbR%Qo||+yPk1-|P?a zR`Jcjwy*~2+}DrNsPmx9SLWea0Biu_!xAQYi3|57Z~+x^%HDUn8RftyAn%(WnZYF* zT(MC{`H8%~SpBFk9FppWd@pD%Xz>s9)I#M|?iE1N9%VjCdC2X?l^0fq3xVJJ&&T2d z3KX7}g6p9ZY0`G&_WfM0uY+0p(IArSx44 zn2$@Bbw6C9kMbeS!}R4mU6LotAmUByxIT$zf4dA)p3cIhh)>J#@fUH_!)2v39Gk^* z>R|)Y_x`FHAunte^EYwW7kr-} ze<|AZd6v;v!}%;b)Z{L8p8gu;r@VH7vsS&^2mu}rtg{|~tRA&D<=MX{*YPcxh8|oP z9@>@Nu`a$v!~P~;Z2_JBIpz5N7ya#g_B@nNIrAcX$r;M*AksH~ zr-W+_>|LUr#80Y>38ur^1#k9G(b-F(+!gb#b@{v%<1cvA~wu>pHP7}V+diFNe7Jzu*V2>RX(j(ZBe#BSAf zjzB%_LB97iiIt8fmOUS?ZMG-zLVlBM>1q^)Gf#+(kNfNtN@??YJ}pMFNqI?>ku z5Qs|eSF#`56^@g;!}*&YOpm_FeONGEC&CR&#kvx9G2an^&ok~%aczEMQpc`ys3T>` zGmKWAjj&I+E;x;Kf$xLw7Mxg@;$Y6pJsswRHkO;A+&xLT_nbqy={d~7q^$mmvJRHY zdS+7A=sA>?nI9F78}vbx4W^v9JlFxeI!2Ta*}lz+@v#%>785%Twh7O?PAIG~4Zq2L z-}Nq(dD7B0hG*rC0H!DWRGQu*y?yVNa>+08zV%1^9UTSBp2RNDg1(69FwXDsbdzv6 zy-0PlIKC+h;Xgz6cD(MS=RVAs%H@Ajy{kSnVcKC?B3*_yzu@sle z2j<;e8yj038_BbJzV0Givl)Ht_pPOPoNPm&P3Gqh#N7v5VmzRL=XrFGhp_$#Yj_=q z??6sxlwX$seyf$k7jT@mgGjrG+#`IEDxqmq;6>eMFZv&6@$`zwjWUc-m8}DSZ_Ju= z27Hin63WX40r$_HZvUZOl&I^ep578EGLGZ72}G0?PqaOR$3kb&H%xWkmh)Ad*P)G~ zZ075-eBG9B5o3q>s`Vt(He1LzJB^fWKZ7z;J?U12Tj$Su_*tP%*8@z$K8v*D9Uh6V zuR9N8fOUQ>Xm=fkgo}9i<%j9nUaa@L;aW&=sV?yC_e(n^l!2~KTqNn`Q+&Axqs#K(OF@`meZ&O5BD^Mux?Exa(n%X!xI zYyKwQ7bBkS`V#zSKcsz1T#nQK$97m5UM9HXm_&Bj*E?yrT*vozB#xIO?!3Yt$%^m_ zz`T8!hVz=&L)oPsei3O%=c^3&Y+)Z5a}gH&*dWK;qw@&s*B;^{Lj+Z=I|VQPIDj5L0~akgrnX1g>L%)^Od*GQBA}>GgQL|LbEY~ zWdYv07{jVT%Ru@;z|l^PL#StScqE@6iE9XNs8{9L2l!HXZX!NZ0^Ks_XFtTXpLt5~ zOVG}EM{j?rDW!iHcaU+#rp)6e7+3B-o76CS@r`6n4) z?6y4b9gHh>-Gi4wU$_Y4>(`U|d9(oWqi24Oe*J7uDm-5ud>zfg#4iL-E!dn1aVoyA7 z#ayLp=j6C4Y9%O*GVyIzmY*51ES95lOD((uVWxY#rE^(Jdfo|`%Ua)0`7Oz>bJ4qy z#^V)V7TzWC^>tlnVzx8ZfZ{`6_XhR)XK!E6fbQkV+vH+L!g#;uTZ$JulJtG;_n-`I zgea-yWKo5zzxvz~i6+VW+-ZNW(Ch6{5AQ3{55H%!maRCOfHGS?3P>Q<{vQB7_O-V^ z%T3$=cMpZo<@JnsKiT8it@)ZqEv&sSLERREu2a)>;B&F(RkaR0A@H~kq}+mjl6?|=;vdNSbCz4Lb^WcP zAF21i)-2!qV;Ht(g>XmG?u=iXv^&GFg(&O=5_WNEFOYo>9VXWVxqrgBfVSM9PU^Ke ztye+Zm)C=ZNSh0EeZ}^sOyGacRG$HU=X+mY@IT`|i#Xc7RLCQ1-`RyR4r$*@N+*Y6 zl+loN{3&pz^U>!KF3(4Qme9obREGUI!ai?s9IXeX^wY*PDhul2i%4^2HQn>jA^C`{ zP-=mkwl55ULyUJAO4MHw1uxCE%gib6X!O_ z%Ywc3=293YqPg$Mzd>G{Vk}H^d(`~<5ld1|OP~33MtbdMMMaG?_pk`-L$0hT&QIVeqT!tAL#k zJEo(<({NTv@fz2aOuw3Ml46-Sj+5uf(XqxMY|wEL<@g>W@#5pJn80*x;xKvEP|M0l zAKt~Jhr`AkJzh6v>GC?KeQhxgF0YkezJ>O>FtM|8I$-xDPP_FWq3GL}{kUHCe*_i2`p;U~@DdYYYgF++=G{*5};&WEMU^t@D!hSPA+Kp4%LgM(8}W zSf9fIQf`|}`1uiDNRPf5hQCrI*0y0<^oPJUB{100%auj871OM#I3r@c(B?SK;|@aP zwF`4t9G?_~N&TM~;dy;nKKjtpU+wcd;p-#(niPI% zGLJIdWyw6saC)Z3@a4%o%67N{ZH1le+{Z9sSK^JrV|Xnc&s>i*nsBROXK2j7QO^Kz zkr1}q9Fh}QfLc2qf%92&=?z#F zN1PW*+$1jK@+EP0mPF?=uhVd1hrfY~$vg%rw82FhkHdw=3|-RZc#`^pzrDWG$X|&E zyk1D-@BOmhF(qUVB>mnc{f_iemter=DAlz%uW-K6H3)VE5O&>yahyZwLm{vd7XBOYX+5}y zyuOeIB|Uyg8&;}aIp4|YTt0M4aI_}p=M1030nbQaq;Z;V3Exw{gx}y9xO8cIqXpGzlt6kx=ZS^ zoHpsZ+#qwjF+Yr}tKzOf=DG@fd&#+u?bB}cT3Y8_icj%2m*tH-*vhBuTkl_88`Q(2 zkV-X+G}3lm8xvG(|pK5!P6~{{epHbG@16v5d8d zXStF0+rm1)oHu=K;b~ki{2`=qT)u`NzT!HfEj%9Ss_(w|kt&oh8~=7ZOF*~VK|BHZ zNw=S6{FSv6>G7|xEtIyE;fIlDX+Gz2g0megRdYs9U?`dG{3BNGQa%MhBNhjfJYsE# zCwaxig;5a>e6j`sz9)g^CiGpmi%>qmsVg2g;M~A4-ayOmUuTe)PeMNbv}5hsf`6HE zxd+=i4rHK6F8O8jJ=y4c0Q7yu*7JJqAOlSnWTcTW*sjirk%H+0q`S%vh-Z{|$1r?FqQ@|dJB2O#0oRoF1IQbjOL`yqkUrXeG-=cBR=KmUD0h~! z?fcu8`$)W4XjTs z+OS=YaCc1z%jfuigpBAznvvU-zu1?=*I$eFTbTA6^8U5qW&BVr*U|Mv&f>V=a-de+ zha#*=8#y`$b184>*8|tdn%FRFjPVZPuT=OUUSl7gH9H3I&K>ZRh9jwYTA*m->UxRe z{7#gU`oSQrZ=nAGTHB#au9b1dp8Yu6#yu5dHc59v^x#tZpX2^1 zD4*k=K8)PADRqr}O=aysSXR-uS0X>}zwj`Wa}(x+>?e{stri`sdOwEcH-Xp7_j`}j z&2e7|e3Wafq9R!Pbw z55TYM%!s{-;x=K|BxQ+>8_$K88E+zIfs6Ic(BAHULfgA_jhqFu9x@(fx;EcyNcv@E zz|17x7!Ks?H>L$m*c}*|kjF)m^yfo{&(9v$x3J)V$Mycz`sT>s#3URSTAA0Pj*p?t zS8oq;cELT%pG@iwKaI)MsI8m;q>YQb1>bY>nrYng$ao%()ux{Z>s(_)5wwuc*}qRq z%Ef#`J(E+;vV87$J=u?#m52R48g&bt+s{tI36jej+$F{X4-d)tAj^AtQXb#vgc8>> zH*qdzpTaNUgU>QvTDnik*E+qs+|+(mxin{j$=m;@fSdahR0o)zV~po2Hzahek#>+N z&__B0((WnGkv?w=qpz?J0gDtF$83vk;Kv@;EIccT?@+cyPf{lO{1NH+M+@z8_Wsv4 zfwR@a3tVL8>%^5o>Y0bJf2L-o$rw356!`|CI_phnSD8dS%j;RxImHJh`Zj%s*lpm^ zCiviPEpYoDB;zRSqrRGjKE%6z$avRBd1k}37ei-^y7|g*BhoJ+*L9JB$)@F`)?w&% z>W904gY)_eZC?MF2-P?Tvs}n+7-h&2R?h$Jgyl;#ZFiXcBB3KYU-1V zeaX3g4`BZ3_qWMByNbUg}!0Bf@e#W9_B(*SrxTV$y^3bQL zLNXf^%2yRh;Kolwz(s!YyZL2)QoUOdvd>v=hC1Jr)EP3v>X+bOrd*B*_9Mp_-?{KL zCEIpApw;7NMYtL9%brDenlr z%epg6TKSuKi3e7FVHp3N?+J@|YheW80q|dF@n=z{A7{){x_4Y)LuY~*4NlPY(im`a z9H4BGv3~FQu))2)Tz$lv;M;v}H&gTTymG$)RZAi!bx^J*5Oi6y-cO;I8 z8|ycOeSG-*!o3deJ#d{H@vI0iV_;Jz(`+lB@kgS|bwwr%x$ero5F$L-wRziV63 zN59AQ?%mzLcMx|3(O+BOZ=QM!X*rIva^{r_n{uc<&wh6UA05H^`dNcVkr=DaW49aa z>?_KnpF@~-p;ffQYyGyK-oD1ZJyr|gN$ruGR!^7K)!!T_r`b1%TaUmqkksjUEp@^g zVr+N>*LHbeUs<%rJ-|DM<)fQfW@I|Iea1Sr&x+`D5lh4`{dBT48x2tgw zncr#BJr_R0mrto8qlgo4tO+n*POE$|!Kw2q@xtEI=j%ki#eD+TIhb~1epf_gA?tIE z+@*{@DmkxiRvpBIICP@KPao&p?#g(0<(q*EZRn?zHu6~u3t`Iec<~*KPFN*U`&y1*}aq){bn4VH&HxTQFyh`T^(PzCj%Q| ztp8$_oo`-&{Ql|B`9_PA9Zn^-U=eE6q|q4A59KzA^T~b6*zd4!M_J3RFGj}4Th*IN7&&e}L$Lls!??4{kbJMb9?bkeR z)=O)Ine6N4x zwYKnXq)Y3Xrcqq=@Sai{-g%(hBOXulKBQTO=SC+-aApYkG3;KerK$z6@m#Ir{lMjN z`vdr`V;K}Ln8KtfS%w^SQfVbT5e`00nep41cE8*Bb<#F?;h`-$WhjF1~k4t{X z+B83(Al(_-_0N#cKUk}mNL-F?U6ZiAB7fGxp97!Ev^#`mx8JOVFG^h2!S-i;FSm6d z(-Du1cf@@eVaif|(|%AHc3$|3;MKNZUZx=p8lQ#xB)-0`3l*b|GYTEYWsa8>Y0kn| zOX=4lJ;&ph09U`WE-$nW++TIvyeI1X<+wQ(1n^)AZj3jA5;l_Cs0+-braKr!9OR`37uU zbg}waM?BlkKNzmjb}|WP6+Ri54mU)_a>Um))N{Be|1j|T2k!?gtLLPAvq5+=`YgM& z6h=3RUGTpEKY6&{;yv7F;jdXd@!hae<@4Fjb9wGcp8)B(E60%g*rYrrpTVy#ZylPT zR^6KEVAF1QK$`QuH%#~jP0zzznFC$}+BRBy`udEzldZdCQ=erK)?GTkColHFw_sC5 zlHwz*Kj6{GqjX$JQKj&^z$*tJ+jz!1XDdhICA^v1-)0T)JwU?lAq-RFv@Esan&orcuPgZtVfuSh zIuA__`xz4BzLd}@QC3b5;_id}!T9jP)O=!3O!%2FJp-;s#iN}uW%B)Dd~^PQ@UY6JJ_c|I$vrFe$K{@n;00>7b)1Cf^dy-Xv%b%du{`ovH}E{h-anX(fdzs@5Z^6HlW_m z47Y~~@rmL#AMI&-*pBkTIhNIfapJls%jY-Jl7&Z=!mMMOp1hH!e~hIkoL$BIu5TA{ z*TUlpxNBhrXz{ezx=HZX!dgkIIwa$Y@maVK@#oT)-u`y#Vx0-7^+6}_INja{+ArV* z+k;>jZ-~I`{~_2X={n^i$;Z6ZKU%O?Fp!qHEX~S(C6aSs&VLstG%rg}o;4*W2O2(Y zW7d(pmh$(H0JiKNouVoZ7l%pvM%>9O1inVC1 zC8%}R|Mz>&J->T?zxR8S(0~7ZpS;Yw_ndp~x#ymH?zubHs!l-M;>eTD#XJFF;-47P zT00<*Cq>-4aGQmb5jOwd*1kyd!-ahnjc{tD`NRsEOG-4Kgs{E!Mw*lr+u0b}B>T3l z@$WWiqc)!F4u2B!IK3i|KP}~P2EsPhF}`g)XL48?={==_-kBwOPZeApi&IXlQ_6}X zo2NxwmeYsHlMj=o536m_^mCpQm6~@m(q8S$Fwu)z&vN8tb7U*phd$ zV| zaz^ql?x|T4#u)qP_0C!Pg<@^u68JuNTY0}36^Rs+XA>vMZ{=xywMk)J(~iN7n7 z=lbu3Z=`;|tj)wTf9ku#u!f#YPXVep)JNgCpwHs>L`d{~2wQ0|+)=_63hOTk8_ag@ zz|`jOABd=X+XO4(dAJp5rOZxK%;; zp^kI?Nq5KF^>Lbp?E(Azc;CGN#DAtfag0Cc_)UG!|C>IUZKI8`^9k0c4LC`SW`>_=?SqD~M+YshES&1j?@j#rx-vyq&8~IW@mW4|Ix4nQ| zS4I&F-(wL@^l%~&_^kgO_{+R)&&VXgO#jA`jEd>I!W8gKo>gg5UL9c?xF=TH&5f8h zz-6g4kNPv0$xP(S^pZSXi8Av}e|tYj=lQU68MrLVZl=M!pp}JqzK;Fx#9vp~E9q-J ztOx5io<~{;S^m#Qn6jomm~L7AF92*#ACNUacG)Dx@UA1sBl9x9DCWsIJpQKdhMwkt z?T^rQnC92n57bak4ZKx}QCU77XWcEt`EOjfo5!*2O_^sY#{UZCIUe(sdpB~^s=THt zw(Qpu&ygDjAvlGuyP4F!|3+XKyUO`ko--evHe3B$592P|i3B4Li-iYi3i-JBWZpZA zRwLUvVt=p?<;R+C8&<+P=EN6`)TY`%C<#j#ZBlqaQFwzNB#_X+XD5#o7e!0g(1a-DX~1 zM~$aZ#P3HM>a6PA{P5Dq&&wh|7<2Vpg|=b(`|_BF*WXtlj%952DlN0?uZ*-VMm~OC zojPx6n77KJ9$tlbvo+Q(jBm58seN^Z*8tzvgNctFQ!Q_Ck~Y?a^L-e6+pj0S!Ajdf zf99_xEz`peWYxCgG{}^1jT&EOH`>Y8-bGirJ}mqV@?afZgTJh!ayd!wb%60p*(AAi zhHDYF^(K>@;a2g%v|0!A!W)qG4Db$JF6cuQ-zIDJjr@|1^1mRw33SN+oAH-*X=4q~ z&)mFphqoZD$&t8HHx;_so{xuxw?#g#k9>H!ke-)|FQduSvckmQzy8vwU{ zsLI|G*ZTDvfotO;(t4HaOEkZFcqih0ofF6NYVub6&hT#F8-JA5=g_`VePrP#z*!&f z#b4G(8{Z*6)2x<|>$&kJMr$hAcPBgFVT8%kM@S2DB#e4Pi+2&~$m)Q$-1=wg zC(K6pIMO`SwnbesI@Y#si9FmIc`&_Wz4K0guYZa6j_}Et?jK`1(=TgVmY21sl(sW` zI;Q6v3!fLb*$T8B_udD2AU*aqDgS!-65`mm&>ykBWx8h6kpMO@0;e@ioc*w!*Az&8YsxL7;Le4C)x(WXHpknnr3c8iz9HjU5h6>3uEl#K`FW&b94 zq73c59G1PRUu+__8+%sFzoO1#4K?p48D8k#BBi`=9%g!zyHD?U3G4aNe!v%lo^Xrt z2g}9r@;^BlEy??5T#E4!%2l?l9{^3SOZOn`{SoRgam=P_J8Oh*A+Aj8LnT_@LAYA~ zlHj>UQmP9^<#q5~&|n=@@6Aedcu^g-q(sZ2b9(nhdVFJszInSkWu19nN9#1bC(AmN zI(2n;w5!9W)UoOWd58JQ{uO!KXR)h4V{&fZbU=>eZrtPS&5<0$uk7cR8WsJx7wK^?^&Wj9LEoC^e!E{FU;993 z=PIq%&s-RghuIeDG0Pxtx@_p2iN$lE~hUi7J+Q4EP%fJWQvGqxHgl~g>S-+*@i+X4v zo^7%t;+vn+i7@URn4B5klD{ebHZA}74%krhQ@R9COU(VJqV5loU(Ov}2;Pn(8O$BM zHTFg7KNaVWI8VfT0?YG6+OAvUdu8sXc#l}@t9XA_1ZbUK586$fdB^NgJ_j`qYX0lt?z8{-E!L>as*)O z(ckKO^J(u+58^k3E#ngt5j)Pm{SY$RruPx%v)RVu!;uDi-mG7e{`V1x+k^Hz9q*fb zB*Oa=P9(17=ml)QgQ*9vFkX^(RRI>OKl1e`z^^IurHe4Ro*f08>l_X3H?^IiX=Dol zx6ci+-_gOfmFZCC?bT8ftGf2mkUO zu=$XtM^6RJ>WQ$jjyw%;qfdC1o;^e9_i!%NiS zoTENGzrGH7pih`-4QoKp=5ffcm5F*$Y#SY65V%HzsHR&T^9(#XOv;@D4d zo{;rm^q4otFy~8po1?+Yq7tqjNgw(+vfQ1{0$3W(-FO}@k~CTe!D1f{xNlppi0Q75=`1gQY#PJ(O>QxeDO3wZnY;sZ$dCD&HyB-#Mf~4MSoR;qS)R^5t*V(R=ZiX*8^S%u)U+bP_o; zc=Bj`8XWmNNZ<1KK+NNV_-neX`LHN@FFwQFfnmHz5q0?=BpvyqO(sloYRNa1wH}y9 zwfx35;|@Aj8Gq#R`v~wUKhOI|5of%s?$pD_5LexX{o-3%b)#;6BGNV=^%jK7b#p7? zOjig`Wx@MJ2peC7d6}wB#F=GDqxwV~@}6j9;WG%67sf}u?0FMxqS@xp#dx33=Mh&f z{}&KfZ6|PZ6<^cKTZ9Y8Hu0sDw~W8OjBw(y7VeO+mVta)8TglN@hkXi{4tKc%p$Oq{#O;PrZa5v(u-iXI`lX%X;KO@Y!#8&&T zbz+>8Mpb=AH7M7`e*sP3mcNB?Szo@5IMWxx6Hm2pFTy4#!m9M;dnKHzy8gb<)%sxB zi@JdKSP*A^Cgnokoc6Rezm9M};;Dc1RlV$uKTDg+fpf~h<=iU!7us+f0m$FX(LN=f zSB?E3Wz-!m-fnZ?#KHRP@3@VOHkE{{v~TmWwl-*kU&k4$y{h z-Q*{Tx6e|{rwLJTy?)nbrs_miOHSuo2)jJh!y#jA{<@*yCU{AMr zzIfmSmrst`T0G0cHB9)wfNUG%s}>%HcUCZmi`()X%mEy%=k^7~ z`uQTltRLDH%JsKGABgzexuDv3NJ*+edD-YAi2i~1cKY{w;8f|~9~=)$>jiDA)IYAB zv0j-cX0`d=is&1|ynA;XZHsW~!4jT3---F(s9$(+4LoQ+FAWWH;25ihc>7G%1)ldd zc?hLtJ<^7||LE=d^;h zU5to0ASu=dpJIx3H%6OP?YGAM+d^Jy^S$%crn;2C3H| zJDEkN7={m7u{g&_^ z@tJWP-$}Gi7dxo^7xp`6hq*GMeYg0)w%3C6{nzFx*)NZZK6i#AKx+uHYxQ}e-e9PF z8jfqX9V}PD(QfG`dGyx5;6yhiwA;F&K*I`ot1wC>0`5x&0c{7srFtFG`kq%rxM@}5$^ye;}(xxGi&>~U2;eKPVY z_tU2!?$%O2O?fU}K)b2^_Nl;GqTv?*h;m$V_@08#bvnZ4a}mDu@M52T7Q)u&&w~t} z=w#4$cy-7AkotVcpzx?dOQy0rP z_OBZb*Z!3@k^DW`@wdVH(kh!L9M54hQ3ku?h+_xuM=^}EIk`-!Q&Xir)%uYc-b<5r z5!&yuojt|zx#u8#?X_+CJ=!b0(Sv?9^*udp`mNqlzqPQ`Z?T^|I*tMO8~tJ4hq8Ql zo2SrUE{Xjm?FQS-Q(bwg`Z(@SoU6~8yT>X)V}JED53`4+e+wKaat!ldih_}zu?t{18i(~y#&i~Wn#k0Xn)p+q7$K%TR zHh$vNT$(>CjLGH~$7K6q`^~nm5?V$>eWhn2Zsq*q7>u_4&iTbL7;XE~!-}@OPs5eA zz3+&kZC`<~x9uyBDBAYb2z%T9ELZNqBmVog-NrbBN3^$X=OV8v+qUh9R@*jlM5}F^ zIznw5+YW8p8pr!oPqJO5)={!-CFnuyT3^Yo?Q3J#u4rS|1|5(44`SEa`SbrkCxKTTjF*(xKbsxhtUR2C z_Z-oObzTS@taq;NA3A3MJBNn{&cWU4Fd@UmC}j-;H&oemCAd5L_Lfyax5dz2!`+aJ;Zo zg4?+%gKsUtvr_u;61=?E=@NlkezkBlc(6W>{5%Ct{F(TYCtHKqfixcHMaYxmw8S^= z1O$$aJ4lE7=3kDl<*&4`nh87`%Xz$3+>S5<+*7fqi|2YhZq>N~&XpANnjdx{{W7G- zyDo+F9Q(4(Fb!!LuXo`$<;kzXi!_f2dqC692b6j8bc^Y_!(~W!26*9_RG*IPugm;0JXk2F|6dcFj214z20ccz!b zLy5y*l;E9F2Tbo?EO4Wzdc(HS4?M2pn||De{8^Vpy{v~TOZ4wRi%t5Ig_lP9T+b&z z)Kk+FmVx!*zo~2;;pL7tajng0*|YFU2d6v@Zh2kh;7r4>=k3*iv#ck^vhw#S?)Nj@ z?{4?|@$q-{*(%<_f;VpQ1o9qi#*vP-7$vridA$z#(@xnqPs@cTKeysa%Qzp%_SnsH zAt1&4G6?bYNM|4H!#Sk`jvQ&gM01s;&`vJ3_}5!_f0Wx@=iNIf9G+?-*`U@&I}(1FZ1&LgYmL? zY}a@jR!X3}J$|r)mlyY{T+KH#UySugUJ2)TwsoA!b0pgO@gvXUBQX#2F+PfLvPre@ zF@(83*GkXMhRIe4Jtr1r_=ytDTS_!iRQfsSMOhqHbl>y;Vq)#xp)_y=k>jqm#s0}hcMeE+mqU? zEPNkv*47C3ZS4mVR^N$z+I!-CQrfn0KRe)Nhp7J^NByUI_>rT*KF;zt8b5Y4sPi7j zX#B*{pdMSlWIoyh4o-VPJDJLng$Es+ZQsr)Tl${~yt{|Cls?$Ydy`Dw8(|;9U)r-@ zNLXb;*f-$o_`H6FxaxBsSk97no6?S=LJVq+_Wn0W&%S2Pxjk3eygw;_ja@sCKm_O5bigQ>3#Xbb*ffLS;H~?iVGru}CrPyf6=GO^$3gOz-9RFu<*CP{!1E z(|yzH!yFEE(%%_nI7a}->Vx@^R#kl{erI?%@a?WIj)_23{AC`o;Mr;Oo5@SVV0!6t zzHW;*)HO|9&bE1XytA6W!AlVRabZvcwn3VaZGP*qMUxNHleiU zhetc5OxJ%nOf=bS{kJLTfji1K@}4hB`po zyC~uwhrizErk$s?|zU*;-e9sB(&>CGX6Mx!Aw4GVLH2W zQ|V^mbl{`E?xFu_e4l|hFDs^_Y@aN&ZO*G6md3R7H7)I#F|C)?Qw!;`a8^u5pVHDj zy&~N+O6mF}tbHYUD%;3q5nsnOdUv<>R}+JVY?nW9{z^dNio`cu#M5#X2BObyK^L- z1&@2t=%eF}c=6w9`{-l$)zTdr^pW>x;y(*L`nM0%qyHOi@wX9oRY%c2-w4^=+Bt(W z{&=?}&Y`~pad&q{=L2c!vvMB)T*${h_ja~g&Nc=WV&NV7>AgqDx)26ig)sJb9r$vT zqv}Gk@hm&rB=$_q0JTgI>B1Yfd~ITw26)2^8?(68v7%LZw(jYeipTzY`~oacpb<-%GS6|B=aRf1r5TU&t|*n)!Cq$ zw~`o@LgZuq=yPBPY`(|ltac!+hkpVx^giDd;5Mhl^a)lA(=ILVG_Z5acabJlYv~&p_VKyJT#y?Hg@OI!a{G!OqE5R$v zaavxERA%B3*Z95>X^H!%5!aW&@@vhrBfJagmc>0Al%L`Hxlr0Gi*GlFlge>Kcu(Zz zTS!MeIu-P}r^M6e+|t2m%@6MbE!+Q5PVadv+UoA`0i-)4?*H)V*e0l>Hg|Ne{U0BS zW%;jI7O%%udv`t@@z09&;PF{!)&|kH;e&I~5&sz#_~g3}`b60p{w=`w`b(W7oVe8A z+XSB4w6+D^8)Z79?Y$O074zO5%SJkC@6q@7rZ)Q^cq89s-fxe2ss8F+*1o)^Go-6| z*25Q&W@Ge0ZUxOPs$cR#2zY-hM13~{)pck@``-Z1Jv;<3=GI>+=2G!B0JG+w|3D2`Q_ zFLaOicn}a%aE0-L(vgRmWBefcu%_UrdlbowzHLH$ji;PBF8?9QVV@;719^yYHl3S7 z{rj)^zABfF@bAc@dhOEcZ;FGoLXApHtjqsE`lyRNPsToA^ArCw#+x3p?UIiN5TDuy z4)G#Pop>2X*18E{OGn8tLW2YIp0{1@VE+{OD%F&2`! zLH@=&)A?_l(aL|rzKO2$e9147-ahV5BpJ9~f~#2zZ?x?c$&5%m(Jm@k6HLV;3jLzfpEj=k#eJT;6Zr9F}U3)rfsJlGT_YJ&RrQ> zwIVM&>$Cw{)D5ej4utvj)&gk2Xy8d zC&}rM{8rY&U8Q9Zv{&z>d<1CvI(#I;9QRh9c5wTl|M$9YyYDtJKHbyR^`wL#{kAOk7XM8@78vhhB&_M92;>L zMO9mVKORmn;!Ehl{mg5BS2Cd*c(G<#h94ifH z!FI*ASw6?8_j%jCK5b8=fx8!Zdslu}@8c2Ihk0_lgJChkE5pXwEw0~Q+0Avc$moRj ztfoD1)`$td+>V)+JPZGHKpIDPF;TQXVtSvjZwa=uFSvUjmWwEX(bKFOc z%1QH-=tFr4wTu_Y1NzZ?Ji##bhv1IyaDaNp{&cC(ARUe)V*6?@(f_vIN&A63se{r! z@cW-*Im&lz(+67;woHs-rIYr)C))M$-PVUAzHg3uvR9()<$JOZLz+Qb!{QU3agN{m zAKrJp9_hAEP3|0@87tg(eI{hJA>QAJF^@bXO8%aT_-!ekiwt7-x$btBlkb%6sOE|9 zhhXwgZ0y}?#i@sjN_p9No+4f&JR5kY z#`!1GqMydE%>&K-cJ=)5T%@P`E@oXzUubWFn|zWy%5$U}k=B=!^C*

    ^I;|{<;D&>|V7w;U|5n0H}F5 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�|C*DR<;tS1uwF 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ℜ%+Wm z?;SnQ)|jKw^?7~fq6BsG6J-OHYoX?epUX6tfn)WT%B$=0&Ej0l=hcjavCMF8Z!gkB6BbN6|5xi~Sd)k*{5+!a6GS@V9u4S;1KS~-dae}^@C>0QQdx5WIT zvg$&;UMjlEvc8(py_q;6vY^RWK{EPwi*Flt_j;G{k;)@VB&Y({wL%TpU0IqNKgM+h z(8%o^vs=wUMy{*1&YSZKDAo8<#1rFF%s;$KtjP3_DN$&mG^i8lO<%-ps;i2XHyeGs z_&Ot$zvU8ce1vk@?_dPS@4y!Of(FwfR}gvGYb1O4_rGf7KCxCSbXFbFpO(+(F6fVR zsPs7vgvGCbu03lHJ_&r?e`ru{SmC3*$5&gSO7JdJp)CpB>mMa73-TS54n_E~Cmv)N z!Y_@l;i;`9s4zCz=;4aLjG+8@ynxExaeE&OhGkb28DPc2StM zcE&1rhb=wY>kaLSjzNp#`E=+GCK=>zzx_wXMCU?5&B{<(nnW!{P|z;t!FqzTQ;3ZSsB$Bn?fnUG6!h7>!#+sPFR6B)*KJkV3xdoJary4m zhU>9wgzHBlx1~c*LoC8&->kc|%0IC!;`-a={D3lDV~n{)G}ojW_m1fl=#Md7#(Y_= z!F3j|0~#o9KZ^IJvP%ZXrzc3#q4l)DS@f{pCxaL}IKw=|v-jx`#@}<_Cc<}oX7_oh zcG5kISFQW1S9*v}zF!ifRz=L4z=D95LR?;ND7A);Vu1|6jIj6^d|3uxT|TF${^gcm zb>L!M@Ev->Yy6jB?2h{5LnIdInEvWba}Mx3xnrQWMmmS2^{IH>AVkD39%O(M8|Gip z%etG{?;^tEb`9ZC-o`%)H+;muO67G=^Dj;6FU{v}dX1Xz`|wxNuSqZRMvcy@P3-G4 z4~1@5O+&q@J!;A_$e%K7aLjBaxfe|$RS|o;8G63m<=>%o#1_?{(H7Ie9$oAm^ znrk%Fy_NFNHzxlg+vy0qk~u5q6?y#%OKW*&^v(^hADbKH8r&KN^hgGiw zD!*LEe;q(&o!BrrQwQZ6%=#!(EJX!?N7$P|A<{$6{))n0NLyh&l^PnqLUrs=TbS`XQ!N*lma7bU$GpW4`sb*~Tr5-{fKo<5&M9!uV+`u2Guk$aIttddWtkGbypI zC~*W#j0a!_t!N&~A{)g;tRmvYoW<%O;04X9i(@!^L@^n^PSzst$-c7sE)kisP-2|M zk!;jL?Z*YIPQD;kDw15KMJoA(s1Ipc6eGzOR&epY`7Segi)^tQ_Ayqe(Bt3narJR@tv0Jd;KN*Zc&$XXu%)V1$XOZIAm(((>6$$OVVaY+xD5F?hlYF9eQ1sQh>dcT<9ij z`M8U=#YBBovaeKal{_*_<+7$s=IUKrAV9Zx6CJKIcE;R}>eQU=$HY=sl+0Wv!KO59 z`x(7LfF)O{7KbyE<2%VcDx7Xf4j^%KBw4vXoYNXhT~?SJ|5+^ka(n|WuCS>iHzB`c z-Z5F5`sLRlbmp9?VBhOXnOxDM_D_xPo;iF!_#^kfnxL5 z=jzcqQ)6+JO^2Scq~*q1`gzfB zkd|1h8I@J{b)S_ZIL&09-Q_j~ea?^W^qD)qz#L8vIz?Zmv*T>m>{;)5RtfW6O}lZ0 zka4O7Bl&86t(!FE9o4IeY>eKU4mDvsad(ByFHVg-%324dNr(Q-D+r40Iy~)=mBmMG zo^Ip`B@lyjB7?Mi27~nchtP}HE$?#Pu0Ea?d*3@2-2FXwLOytmV$i9CV^m!=J-J-n z;2$4E`UqyOx=#OwuWLzIpK+f|h&piuU`{+N=Up+vLbSg;skWmZ+y+an57VK4ki_W~ zkRapl)1mJvPj|5$LtHDC!m`6oWMk5v5(l#5Ffd|r)YAXv8#zY=U3}=hs^q(8K=0lJn1|6rYE%6myQsL0I|eh4ol_mzdv>NbCfV&jX$W>+DKT5d z9;M67Vjbn;dDcvhH#&B)5dT%$XAtn zj@o(4`yFSIA4URz7`I8oR3J^2;;bo5?lIX}yCFOmm z`{~r098SV)qgT_HTd%H^p0M#>6qycHQ_`4Ju7)A2G3Sw>}i*;_&JgA&l=&|>*y ztyTMo@5qv7(zxU)^hBM%Ro|NQ9()qKI9olHTq~mLZtUp4x{%tvaYu@IkW&e??D6I5 z%lrM)DC##XBts7s(E6Fnir+aXt0MTjgsaP+()4%Jy9Z_66Z}2E^-=zmroV1^KI0mS zL}+|kI+P`{hQI>yAFjo=@d)u};*9;cfbBb6t=ijIxHa8Ny+;X}Cg!W|SR2iq5DRy+ zNHD~s>!XMHNF-!S%aRHj%zxT$%ovvj9=Ql-l1psDCzlwq1kth=6Td%c7Cvvy&UD%| z;9|qh`PkU76Q}lM!&cra@HTtf4pUEdL4hm+@6%H_rW1@_nIMqyPZXC5xk0X|JI)`G z#>4&gqgnK27mC6A?-h39bUQCHr13%N&}U|5?F2R-4_KYUzfpIJDT*KBtM0#R1$xUU zpyPZrT^2KzoQ~y$zx0$jKOH)hgbsRgTRJp8^KPdX!@3enuCxi3T%m4iS*SkKKdUHR zHvlh3tq0c{IOfFI1-)#c(xX@_GIBr{K433N?9H2ZNYum<_mz>G$XL=|{29G&`1$Lh z)*DLPn*74|%FTRDf0}=z@d+|iqXX@adB%iJv#4bBWyVx~bjH54Y56o-51-xRA+86J zFTIKNcq6DUYv0I+ew~3o-ZsmccYaY9``Sc`FD2GDtEbqAR)y8g{o@v! z>zd*fFy=POZeHE7LCc~QG50wY!6tH1U7e==BTq%bp!rReSgGStypNECB@z`O93d;8 z*45UVHj}OpWn}eBQ@zbNuwgZADpgk3jsqpd@o5G)8>WTeokZ znVbnHE@!j%&jL&Xe;`Hd_ewf9^G17;rt>UQR4rF;135F@HjCK{(ft-gH{4hVtm)8V zNT$`Q5MVuPRX30F^EX@m!Ipm_`K$5YrD%=aETVt1|HF(91&^`NQVP-O_(h_1CVcFN zAn1zvg>?I+l<2}QB@`SY;;*8K?6-voJKpVw;wSFjRy1;V7=uqAn2Nt^^T{_;=jS3X zgrDn68uq%!#1wAilrOzJZkc>!!tOS9c(Ew6xi;6|36mVSEK)wU=!P~mw=h^GSa@eT zmokf6uyKUT=9b346?InK^#Fs-s{Uiyytv*a1uLFVW*%$IO2aKg%3J3Y^%(3SGs7H& z+sLb|@X5{D+p=3D*-g$fo5UN)koHc#{0i0$Xk`Ly0ePkp8ws5a)=iWltYN3HMe!K@ z(fMmHwZS?A%SO2IdBgFY%y8DPfsG>SI9FsDi#2v&WPk_LR(FcR$k-2zbm(UP`_H5g zY}{hsui*QRfzM|_UN|o_t4QjLDQ6P`vnV`(LliN%ND*))T2r=*y`Bzj`<0}r0HN3| zBZLYF>|pTdaAu(wK~irQ1C&{DMML}Yp(v|z9jRQ$DAzvw+{B4==nQ3H^))R6CIYD# zQh6ty1WKn0&b3S4PIyFG^8I04SpO_nk$3RzGN)KEI;`$U1ckD*e`dhbiJ! zyhH1bqW*B=*3wM9@d4~BC1d;B6rT>=(*4a8eKSzs_~gWzV&pj;I;T6^MauTyZDebv z1i(o&Q3Y3bTX$2f6}_NTBNDCT=xT<$lc!#JP>~lV+A?{nRi^jlJhk@y1kTIGEJJIh zWqtoLK)MK!I=&u+*vmTx%E&5gZ7@?@;t_Q{s)Vb!sdE2BJY?6JN{zvcU5?xOjqOx`@aYt3mRMfCWd;+U0~A;{<~@#pcTojxFIeD% znfL35Me<9t;^_3W#CkucRvpqDzb>dL9r_)4^yd*K$}FN)+ltx<+$E8lXn55wnv?O3;ZD!Zh^ktk>pnq5iFq8h)}@`nXIM!k9@p z{*t2Udao;Q0(UCIQZ%O<SZgczBs7fX(Qe%Sfu~Ym8 zo@MoyO2n+-z<2;umQn^sUE%{P)pH4{Mc$mgK)r((0m_JTso>EW_N?JKTe24w7mt{h>lz=lu>Cg)lKtDUSl+%Okn>_QW zBI-Ie%e|!YOC5gc5k6MLui@kll`~l742~AzTR>M{lF!c|@99CBpsXU|S*DxK6eDQ^ zwKLP_Q8u%?@N2X#6?#k;ruKAy!@{_m`O+Uqyg|zMJ4@%o#%o7DI>2C_9itZ0I)gwP zR@E~Gi6ViP@{qK48(eH_^?M4${Z83$)C=)x;j-&WT~Ja1t~?6CkeTJ!!+)kyKoA!Gx_tB(-jpeLrgA>v zFM@N*mii%XnC<5-B5(bMS~UhwvR(&021@|UK)=EsJ5~aDM=Xzo`aEyEllCLi`3_{f zpUfih$3p^&K&Od?CVoE}I3V4~Z4 zR}4-gs_GS1X`Zl=~KOJTSAcH#Y99cv^w9opTUg6rUu>ClHHe9Cbb zUrf-kK7}<;@-y*S=d@zq3#(M{S}rwh~UbXiwYPc`vK=BU1?X@sePgT)$k zkkX#!#<&E%d$#Lcz!nrnnc{3h~CmuvcY z=ko$lrZtEL%vgoA4m=5lYXzdS`e(C6vx^WzIto@_zAkQa_5` zdAH|vE#U-(N{!*X=Dt9v0LdTB=i_dzfd~hN(2Np^ zg9u7>=)+ETAJgqpG_~0sekM0vq?pya!j01FWLW-4rzasuF zLc|~`+zVXWpOk2;V0=Qh7WL5MB&5VacR26w?!~1t|3VI|kVIKw{E*a`S^u85&)jnv z4&@~vNtZ%M1+{m;DY9YovlI5GSAQ4aXn%Bzi}O#fY=P&Gv{|Oh=u#u8{r>!u(WKNi zrlsyv2l~f;)O{@&e{GU4F-~-^*(U;|_>2c31sf}*mBE)rPTT3wZ)Kl>F{^-Fx9SWr z786M#_j3>Fp2%J@NcTT=aZL*c&j20qmd3kARUA&7Vvsve;#3fEWCyB^Bb$eUFWi_g z;p<4~)mZbozuR{u;?dFcV{Ski9$w-UnpeV&i6c~=~@SDDicj?eO zG9t8qBJ?`{XgP+-F8@`iSgTUqyc-8~aZ^t!WyaIC?#jAV!ne_p9}=}Ra8`XsD;)wE z%C1P+W1mwkXB6=S+P0BiJY>C<}20R?d@M6buwVj(s{5IRqoq0!`~0iFNnIi4CJEX zh17@P$43j6w^1=MTMb%=kR6M7o8^@bkcrS3$aOr!*8Y}@t?lcFCdYf62!6{Gs$$g0 zw?=Lc*Pok4L*V>)z3O)Ex|_VX!B?f`4F$7GgZeRAIwPCvziC;2*i^p0?y}enEE5A2 zr}m(lR4#E}d=4v>+o}KoTZvc<4IYldZvuOnz~XSa8Tre1zNmRMolZ^a1C+F(w7he{ zVEk?U!hgKJBUgz5Pf4hagbE%dn~{1d(Wv3g(whFV_va$H?qErn`V&yweGz54UV2~P zQX#gxi3joZhCoo?iMN1z^&5m?ei*yVkt-Ysbm@s~Q5IEw+?9TBA7zWE`PBH2Xt`-qgXTQ zg_K;AE4bQ%jhPA#A>7EQ_Lh{3lzkc5Od2lHN22$=r0HViS((W*LU}~^l_!{x+`>(Z z&9Gw5NQd%%)TKiBb`{kBi)~Q44xt9*07ZifDTkaR6|1S3n z(r&q5kp8>e-v#2O)XuUXxj!8P#7hCuKT}IHpRv91CV}@AzHp*bMz4)jOa996L}IZk zQj_vg$`C~k5kL-UhZVxc-Xh1dG*%e=#`@RWp{xtLyJJm0_x3Rhs2w70Uk>g1^2J_X zX3_mVsZWT?3m(&lmudybz+!VGD6=AWO-N+{ji@{H+%K;xv#78_)GBYxzFKoQnSIer zL_i`M*O;&e|3?4QLF|LC&AFv-!rD@y^(LcxHh4IW*PD;i(-8gEGk|mQa*8o)~h4f0lf(J zuF>1_N824f0>z56_?LVf-eYBHASsT*Ifh-{IrDvi`4bYV-I^6DAaLQ}IFDs(43!ov zvq8#?Oggmk2ZmO^DT^qQI(5jk&VD zp4?Q{V9-9T*HXF%_sDQpRqm?pb4Ky5OEKL3OY}bsL**GR^8Z zrYwGscHwj-0KkHWC=H~n!}Z`T*13DuL+BUZ4?H$LWlze9%30(ZfD1Jm?lO%J&OR&O zF(1<4jNHdajHOcBtlh799fwP8u~?6+Z!TwMZ1Gw+MpJz0t;)(WGN0zwdVLO4&S-7w z;%ss%--G1SEBs=-%7OdSQDo}H^Fa;HkBGSOr5$u4lRBw8QrFc{HdBECrV>mqHVJJvv=ulx+bIl#oLzXYud=HO3mErljB=On<+=wLpsOW4>X%EsHwd4{gdyP~qHH7r^ zHO!<$2kMgwy&Ix;v7YaSDw(ZIA5#g0_67*;>%i!J%#H?pm&)luExN>$z8mRr}JWMGlXqMa6Ik0N34X8OcuBkr_Dh+szuPr&I^9&zs#3=#K1 zK_Bsb1tUIgLPDnZ-0ujDX$`xtM4cy0rBy2?7}b|`qVvS7+A>`MF9z#jXJXUX62Bns zSX8Dj)j-#shu`vFouyYH>!~4b%|ecj67WkU{<#yEcA;P2R2TZ0L~{}au;9*af140b zpv&9g0a@*T;y&#DSNmqJBj0M@!G#4z=k*dHyDD{c18d778WCehSR7ay(F?omlqnp`e7nFDUKYq*q2M*^ z8o>7z-kd!~95v%Q&$SuX=f|3HVaP)|6j}xjrj|DVj|@%_7)&zWv3uoRz#VgBmB*NI zePNfbL}I+VGq_oz)xeGj+Txw_`MxwSr*6?t3qiuMv6VEjMQV!upb44W?5(%~Xea%R zY2D-uzLGGC7R*s0965xD{Oo8efsZWN#0#`RMb4z7{{^hxL;r$q`p`{m@*!N%DHjKy zHA|V|0pK;G8+y*@m83)$YFa<3cguRd`>o!s&^xpH>CpSwM9|_bwNu|s zomXg0e%1srXoL)EU#oydyu1;9@luxA04Oc|%hajZf3*l}O`j!MM|4bbQw7&_=$ll4 ztbr^zmjj(r=k@70m5CQAp4BzIF8{vGSWP-eXIJv$v;B#TA$I<7OsZR>?)wqviM9yl z!bmtZwKzMKdt_`zYpnU5+;r$9s77qYW**qE=V{%mO@|I9kqBYcZj%yXS~Ko~p0jWw z`^9F!7$RZTq%O=SQX#w!+W}xyy5eUtQ?3ao$LtTg8}AG6NxN@GaD>_JEUpJRq@qgf z&5j?L8dzHY4n^u@qD_fS2h!|IubREc zJ0S@RDQ{+!0LRX%$SWl?!^fjTOoj*P>Ez5)p`J!$o(}Ffl?~dv^*x*T!UxEYf8VM; zT*v4pOq}fGm|WfE>h7R$YRJe)sL7Y?E^MBw-p0z0A2V{ z5er~BB7Ri;yFnvgO1yL+y$)8YUlh`9={&2!Ur-<)Ked8q12(1Gw-u;?dlW72fQ=P@a+$CW>BP@ur$unZ^6Gt zkZvQ@IQG|81Ev~L!O;6?SD6}J>?}SLkgI0=^?8AnXd%}3QAe@|7m+-#%H2%E>7NNN zGrW=@Ny@=)i3X>Oy-to>?@OzlH8e<$q6L`XO87JpWo_|{-o5E3?c)rj?`O) zXRpdiMqai>f~HJ(d7vJ1>4OO`=kr_ra(|NRULI7L$~}ut2`6)Rrkko}yiT^Al7wf8 z2sXcyr_GqEdQ37hOv4w=XMbj77^i=%iuSkL{<ea#?qmmLj-JpH136`x?jud&0fZcC zD%g@(kmTOILzaEm1?hxZS#)9;Vl zxHB_kA)i#cA4OozOP$m(l3B{n`4(In^%myMZ#IC>V49UWlXer!x_pC^+AZdISuk|z z(ABqFCc?bcAi6Mya+L}@PqYB_HkykZgE?ogmW>nAc~`O7TfLm~js{ z4OoI35QTe0srGS?ju^n%AX{%57msmYna{(oU*7+LTcv|p6=sPJSAdIczh zkC0b|5tefVuhXGix?jAVpWQH}mXBy|lV1$KFzen@3hDJ}*8qN-%Kh)GukFO@uF6%8 zdfhLDUmUu{_!^i`HMhqhY?^7P6>QGX6<^E`Erg%b1DpnaR0V z_!8egS^7#yeBSl{3g|x+gPkgY78lxYI0pXRs=mXdu+_T~BEU*pUF|N}W%b+kvLN4g zWkz=ImE|R{&jg##{%!@_tuOFf)w_Os72D_R>SLPS11VOkb04639c{H7ACP0{Zx`T!`v?QESJTFb;d^KHaF zG(e4b(P*jiCyN-d|5Veu&4hjsoIu3%h+RX{UlQaYt)VN>O)f zfF0pRFoDthjf_eRVNIJxaN-O`FtK6Qzi~_%|7?v#uYm|gp>87W%@(C9?a^B_C-0&= zwVXi~D#)R(N9hpsecoA_cctFujtt2Fg*h1p@>kJ;24qaGdvKTrH1DGg0rK39mBx^# zd&go1KD6ci{zs5rfSdVGAU%?KSL%)WzXl1qoeoXu36&2IW+IEq#nqyBasA=X=yp2M zS#_rzc6}Stzxm~6+;UHD?rA`hW9~XX(?@CBoj891Cjf-(;$QiImAy~ zh2ka91IW|$=$kFG=5Fr}?6N-<83Cz6(+;iEV3m5yCZf4hJd^P@)4jI!#wwn8>xmfU zZ`D>SZG{W1KGn$Y=_o1j05;@$U9RphenK(rZJB^-t2MR?FBS za_)~M9~4RUe$a6MSFt6&s}85b*j|+p6z-b}x8wJZchKjP*@gV3#x7X5*{^(~u}1Wm zk;&u|ZPcT!#mOa-I=Cwt&f1(@B9%8!BY5K7bXEGNUuj^rVgXAosa3*&zgvPg=f6!= zR(y(rHvdjzOUDnF9>r4b_fzT)r>P~RU?ygtQILqYXd3zw+BzHu&(&(9dBbe=es`rJ zh2VPB-|ss76IlT)?w)Ez8h6L>Y)9{(%W&!pH| zg(YWoSMSymW(_*CS?L$4O8kuJ>O^PS6iQ#GeD9X0(`miugS;n8skdxNE8SSvfA!&v zk#{tE7o1hloG;gvK{B>uO4vwU>>g3()vvsNvexh5v_Cqc0 z(B12EyVAbHb_McDh@(;9cV=5tmti-kFsSdEj8jM^esK+_%DA2C&UUZiYwAuRv~}lw zYF4V?tV*yf(uSf6=!5OM^a+B(lVwXQ&$>T=5uisvQ|>d5nB2dDBb6%i?0+_P6( z{-&6%YH96P21UqpE?4Ocp=-PG5E~&vZhtG%b-7|dWP5FcLJZle!Dtjg&UnZFN=+xgcErXLf4fl5qoGRn&YTH6uI5+ynS|a}V2#cS)q2 z#@w#+6gp0ISzK1-p0BzV0$Q?9$B}gE&%sA8_xEH7oG2RKwT`nw_s_RN)1gnf0YBMa zY&Z0|?0&QPzMsfdSwl~Rno9{Xqa_ISVUCqLRoTqW{`x7BU_LcQ7nojeco%cD0e#pN zZ;HZ8%WU=obqUYlAAOr0%jPy8(|^hm^XmGAGpz=2Ow->#Nf1!s+$ZJQY~Ah0BzJc=_Pu^af2 zMG&99tFUBB4*U%&s@?mR@rC@R+?PgfC-6rNcyyyexxp|M7MuvPh|t@7)6DplO615x zJxz{ZVo!z6q)nDEHXgMEN!86amBr7try_eA9v@~;lAfDyIy!!&8!kmnwr3~op=l1h zWw_ogZmM#kOma-`-0^Sbe6oZ6Hf3 zUq6=?bMqKJ;Oq~;SV&Csta-;JZp-ELc_Yl5z0;$VUEacBoc?x&b>pPZD7cKm{WU^7 z4@Zz)L_OUEv*HpoeK=Ln`!GBYydN+;K~NYe^s3NR5_6I9GkpNUr+3&5nhPkv_==vQ z=@W`eRv*h#d9y-nY*T3%Qy${#T+l3Knsr|c_lD6>qZaS6N$Mbk{*fQfOkOjZ%|at- zm3w}LVnygP%?CRE8ZmHwfv9pTmVw@!Hj}UWXX#M)ywNJWl;@~$Ki#T`)>RxMM&N2G z-kcv3!4Hi4GaN%z@*pAoQa|1eLPy&r0D+;G>cW=?5r5<~{SBSqNu%Tevy)ns<|Nkc z5>nR@i>&c_0q@G)L$65rl~U+m&L`0NZur1y(vpM|>j>$^5y#+Y@ zmggZnPv^Oq=h-0oI5c{LlMAWG9W%N*S+7Zvv@?@q?D`j7n3=eRo%69&MW6U*kyI{w z;=N%F+GTNZq3>t|%Q)0e7=kiFCAE5el^{ML*;i2Z+;Z%WsVECq#Ao4Q78wClh$8p=R?z|Gd*?e~8ZEVrKb%e45ncGPh*XuXrKK+u?I;vG@hk6(=aPI#u&%)ZGx~Y+bE~tFN=Q{$MH|M8)25zh+N) z{82uDx14aI7ATGEKNqA;BQqj`hwfqakyLa1oP}*LbRx+x_;@JRf*=D zWX%&4Je-0v9aZ2n;Va&RU95S+jjp9RZqP&4)IB?;oNuBOdI;5X*;7x`kh*WuX%koR zv(t?}#iq`acey%(b~~-!rbmy5x11NE942^O8&^(ZzWfdTJpMlJ7)|OleZ9?X_CNLu zv9DB2@P%x}`ns8~+WAARa``K~|C>hVZGPhP_2q5kYT{uc<1=_#3-5WloNo#X7Q$$f z_#H-LaP*_Hry2$O5NFaG&ZKuZa_p~}chg#=22?A{o)VRG7JX(de#MzYIaB{^pYtp#qJ?B0r0<&!s~{AP(LY=jh0590TxYLc%D(fyP_AV{f|s=lP6L;)P$(l0F%i z2EU#0i@hm|%NiVZ&eaY-*M6RRH6)lVIOU*CgFpuj6Oa>NY#w8*^QyA@pekkLy1Tt`~h)*uq`P< zQ`*F&zRX$g^k4d7(tR*BMhKp^{ZDenSV$ic&lP&0Qt&#rU=@XG{3W;GYqXtVDzJB|7?wI}Ij@9AIowP#UIRn7sCh1t|9o85G-vE+hX)#ZDf z#A-%^PCD~xHi~jRXY>*@OS`-I@vuuku#Mu3I45JETajOt^H*fKN~zvf%TR=de9{E2EvO+2_}CGM3g-HENVVC|2G^D z{yFG&Hu&s!2e{jOh}89&di?=_v=6S)PzwMqHsb%@dbioyAykM3xbZ&@eua0q4+Y5L zcK~Nr>{JN2+3v*7OlR2MOI*$HiB(_7fLn^og{FoZUBRWuyS=OnE&dKOVFR6L$!2&9 z8SU~;XK4`*EA6-NPWvY0v~yl|x>aZ}leAcB&OqD0g4J0Km@GT`H_z1;HfPa~$l#v$ znR|Zc|1xG2yoQlhfcahF4obJ8R_Gpc@Sk3mv;Mx}>s~=o z*5*bZ%4rE6ywt!W8!urmQA9$STo+3Av`5^RQUlMmWP*7d8_9WT&o#x9{cP@=Y(*jI z&1lXW%DFDc=8?9JY*T}5+r!QOAZdFvXIpsBht=-2PjaY9`?2;m=Ox1JMcs8$9DrKk zJs)t=hj(nwHfjp9QEL5JUFdrf1ly26Tb0wTjJdNE#dEq{#(+{uw3*k5j=HgGg z*ovCe85>zs23D8H+nn1Ygt!8KcWKtGJR?&?k=Cr+XWDhywwRXD?B$TK{z>F@!BRqmzlK839kcqrE83yy_n ze=e<>c&lYvLvgt_t_J~LTn{`}t$3{OjWr(YAr*fG-qqd0Aa|xOQ@lQ@ZM!xOAG9N2 zx3sbTrdjCGV6zsd=jS!2^E(Oy=L)Sy!bqLu|BccUhH%)n!R}Y zt^Lw3VbM#k>*%}ZO>Xw!A9-G#G;jlPy^_6;FgP9k!+Unx{hpnX;p>O*@b$Id|D%+z z#GuRDL+qV!>OyPV#U-_v4- zUAErbHYf`HfYnKXmI;}phi1S>GvQaEX34o zI?Pz~5UmI|E~4ktq3?fN8UmAq<7Wp_aNVhaH1!&5r#P-th4`t7*m98g(}2%dn{31& zZ|@ir#BStUNhs`Z_TEC;CK<$(lhT*^SSL3KZC}($JC?xbd{@N!J0@0#)uMfw}kZ!WUU=>JA9df3z4eX8tZZ{k#07CB+>s4Qpk z462B@J@))0(s}+|MSJ#}$EA|(^mEG0f@VHawp@E1oV$+X*AJbT(Z`3~bu`L(A|V1A zo3YJZVmCRth3d`Vn&@X11JXJ9DJ|utWC4@tYIdn44gf}@lee>KpvW+Qp zCamMBb?!`_vV(_tQ}k+R=4pIOy(S_3z=X|?CF`ZsVyhO~n$u2q?rlmYq$t5R7Q0|V z+8}##!%)3)rT_pEsgXxOvr8}fVB4b8E- zDdmR3mjA=ro4{99UH#vIBqRv&2K6e=QBk9)jUq}Khg?bEMiY!8ii%2$BDPjh6Ttx_ zy@_ypxI(QKwS%RIco5Oo@}Uc% zCS_O<_n(iKp5UBfeoiYSq((id7W<(%A}&=*DOync8uyG0J%sbw$+X14Q`O#gPA1gn z?v)Qmq~%86qX&EgPanN7iruSJYux-l;S1!xJys1G_JCTahW$XRii+hlq!<)uTPLKi zn6pZrmxCh36ELO)^Z1xB6m}^dS3+kO`;?_z+^621gu`+yqZ`1p3jrcNEsKB>OX@XyM=&rF26C8!Z@ ztxcY{$W?#ZlTMwA6I9(JuAKYYY3E%tD$QoE$aOM5OX<>1t7?PBS()eoQi8XLy$S|&F~jrK=hdF!n4Ka+Ph@f%XJ;~P3t?X*Y1Xs_FnMf7 zXd_pVV@f-|TNJq-9nfg*Vpd(Y;)>R$b*2PAAfn9u|CMe(5`3n$6~y*pk8 zw5vpL8d?3Kt&{&|nHwGpHY=8pARzf!kjZT1mr_yCGe1nh#OnX4zqu7Zm-9dFk!$fI z?rhxz)u*+50ZLr5Ehu00`FBjy8&_)cv2B&J%?4*qLUV=_MX0Cjk3Eu?L)Vx}*q+)> z42-r?SaCho=eUnPR8J!<@-&a9CKSu+EdLrr&8cptHETktSmp-zQ=Wne9G*BX9-LY! zEn0Yp>V(3WMOxLDrSV=a-*t+nAEg0G{IH6W#i00fEyi z2Xbk?G1YuNF?N^)TEqO^Uqcw9+^KSKTdazb`Gdo>?WyY@Mbx!;#~tm=h(u5Rtig>N+4565;L?}O8YW|8Ci}!b z+55ByOdntd>)OWSxsMIEhhrO$)8E#XLqDB{rYz6V z`UK6lrV9Qq5T{V(ZTUWLCEt4TDK^rud7JF+MD}Ma*lf27j5IH2px&RzKIH|)cFUH^ zVe?A3rBf#&O$=L5#zQcEaxyW7oA|UrwBr)3?+;JKk4I8d$p0LwW))Ed=nv0nsByzh zHg7mk*@z}ip5@z=sEw~;5GLcUWGoxlxXr!!3ldsvb4{r0o=eQx)W{wA;c5XT`;nvplQ=4Hy1nSWo( zr09#-nh~>50qg^$F+@5~bgEy;#0G!a#3gB-9+8Jn++|Fl_B9kXuWlStKB%#vHhG)n zEBDzkjgR3Bc;cPJgO_pDB(K}}q}&2dkzKvRoo%NT0kUIQXuLgmNKT!?9z0_zblXQ| z%d--kmq1XYqB3C>2tmA91ZOXGo5}@<;|g@$}4IM;o|a za*t81-7ld(eDIipoa^{o!r#*Hnz=W60MQ{nNz;c$SA+bopUuw7dEgbtda1);mPwB- zf90MiBf_SjNf<$p5#bZmYdFln=I^hV-lMsd+Lr!vEd%cfGB$th)`XI>fekKbL15skRP=tZpoH_nX zUZBR++&$r<^i-v=S}%#qVXEmwYNUbMG&@NRyeU9;b{KikP>45>XJ7gvnZz>9P^Qb2 zsmKZ=UhII5uz7AG) zJw^Ut{1g&B)~BO;=!MPfFdz%|TpLdBwHNrw0m#cVR{Wr9A*UbQK!eMvue=!5s`vGJ zKUE`kIDbdswWSdwe>muY2A#1xUYTb?T>PjIhfEMkCInakN+bD~Lb`DAufmbkoA0@o zG#$=Y;W@B6_S_tX;BRq8Z8Y(wms6-!2#$;c(yn0Pma1>H^({HaEfwX$5AVOnlzl6n4On{3m*!**-xsB zqWhT1_-8UGwwU(c3mVo3hNSE;uMtr%(TJ4P1V1lDBXTyLv7IWtlXI(<%S9p`T`P?B z^Kl!QOyZvv^>=+Eht#mMHu+*LJn>9F=06ECYre3=ER8?G({-x*mUok&5L>reDEG3$x1H zt36)Xc&}2R>t&3o76z4^*IXk+F#EZdp%3M&22;0Wi@dWXojKcpuP&7C_Hw>5g|n#j za=vlRWYSsPo?uVV`<310q55+FuR>CeOfWonIUPO1YE|xZbZ?)xDBN84IgcVK)bpK& z*r*wOi;}m7yf}#1JS6U4j z(wP|5?d-+xFHAbQPW zE%5OeNB&Gle{IzoPdzjpJ(H)zn4t~ZrB1}dlMMdLyZF*N+$ZfOU)rH`Oi?7D4AV`S zZM=3L%3+wc_2+vHaX%+B9;qskE~+(sW{>r646O(Lhh*FAj#LHm-<39`M6R8sM(pXr zhg9meKr-z8bI&1O*Onh&czJns@Vpd_VzD!}y_wmov z%H`vK4FISN?uN#p9&M&PxHX;3jR(VqxT$=ZbnmSBf`6Qi1*VeW{N}AwK^0!i9-b@qgMJL7JSX6 zfM`ct(yoksgM?jYqEMLvNhm@JL!B>M;}mR8V42kFGw-tvvQm!W!(pUjEHmfiCf%7 z>2j`YcMps-EH4b|KIuBvN}aTma=W8Cl*d2l42Menu-~kDPtAO^Qq`a1%CyB(omBN# zc#uUrO?ZKNDUJhOTRvif2i2cz0~&HXrCxqM@2WqiR|K2n`QhnmqpyV{L_~QKmkiXr z^Y6!5{;v`}#bE(0nS{bQKF8q~4b0h6{W*j+9hP}LWtPv`Gc4h~U#Nz<4<1cZxOen* zm6jHEbnNs0Upv}$@xYwK9Pq1UE7%{@eV&Sad#4%_X>lZo{Ekd)9b}TiztfBY`(9WR z#g;VzmUQ$C%)1!sPmdFpI2;-__O#{5>E;O+I)gCF%6xeKo6Kw0H#Emk0iYbtV>5C zi9NVa<^7v7fqJAl5`OX!pU9moS)H~|X0sZ{9~ZCM-SEt1J<3t@!HV>Xc<%bDT$ZUr zpRJg*<e{nC|}ea6xCg>Dcd!h zA<`7~bMc&eY%VU)`>1EGwLYnlB-{-OP!Ov}n2}jGTCs5W+1%8YpZ5V<5mI1Zs_p|8 zj_#cmf>kwhH(u;Rkrx|%`2C2b28m}8VF|c?S*13bYZJ~C`2vXk^s(pppv90I1xq=J z@gb&5ZO{>tVjA&3RdhRd^T?itQ82o6^l7YyOhY+{r=!Q(LqmskMZ^xlD6>(n>r%*6 zZyF*AyboQauRptA4*rgu4Sz(x(B&>F)~rLC+Sm~D`=tonkF7my53qReIJKuIK5~N& zAESYfkwDwQiM8&U_XLs+aGb_{6j;p~lof=m{^dgej(g=F;zG9ec3-|ZAj51VZ}e}U zM1>M|a9AtR$9)EkdYb>wv;O+z16(dvH4R*_|3OaB>8eWYSY@4yG@*wx<>`or_ zLa;Ixtj4eI`L6K`YIAd8vKO?9Tyk9BmQP2$fQXPAtn^1aeCI_~?f@8PpG2gHTm+UC zc~n|kaZcf-^VRh4@J<0lEi2J^EHKRFFw9o!W42a57_LaGk0m_mPPIwqaI&rd8n7pG zCZf#)M3-ya;(k9|llN7HmMBV1D00vJ9Yx9>bV-uqj>gIABIWnV>Kkc(AA(zcpP8zg zU+3PfOF~4_&bun zy%JvzY}n49PB%2HF-o?lv|LG@)6-q0qKqvDZ@Qns4Z9C}3XwS{c(eNeyGfn%r4E&- zd&{2O2hCrm9|OWU@syeheN#k6{-z0cXlQ5#n51>ld>W{xM{FQ-{rJ@sV5yPbH zW_$?NPk(WfvVw#^n$FItWc88!jpA=Ke}}r0e(rNCkE=qQNPIP@aXUT1Zq9{qxVIR9 z?h%Qv25R%VC7;Eye6C&N!ZX3!@bPhXo@?cRMU*pTt=>&a+ruIWV<{eB8E(aD`)W%% zT8izL_iwplkMQW#UF6B)Q+L?-G9c6^pPCML^?~rTYG_Q|vC>)IaQG0mXk+yF*%!v!W2gaM9zLovY+H?iWL1CC$unwYPbEdyK9Gi!$gY9+!%R zh{guG44!Fon~1&`S6pZ#?RZecYS~mu+3daE zC2KMn@8?}Gt{8;b%-tQ84LjX2pkbdoARob?@^OXej>hGcj~m)hEG6Z7w}~Zz;ldoh z!14MgH~4@sd3xCH$)#b!q!4EYfiruWY7?AU^S;NKcP1O$vN*$*R91dWSoXJa_>zEN zXi{1Q%`9=F{?HdWZs%hm2f!A-&!hRm4>0BTK7K&Pn{wf95FoFyMyNeY`^tNfMe;#Y zTc!n(mi6~4Tu8t77LO=q_8%4NHDJr{*j|m3;s~3 z3tNVQmL5xIKT_RNMVIH$!a5=W-Gubfo}4tVHrd#zV12W3kzfPC2d;Ig$HkYSeKC)W zAYsgtJ7Hmsr*`rTsizWogs3w$p5URtH?NQ~lDJuD0jJzol^Lu&nPRmQ>&~70a79|A z1%;Tm2b1RM#k^xOFZQ>rFDvoPQJKW;NDOmM-!GH+jVcRLo2;kR_hPivN0*mp-v5*L zaLQJx5=JWC#C}zQ1@lH{uAD=U)%yuE6lfHziG77!anpO+R8Tx$RFLbU$wn0GHsSoZ zN$CnPfHy?89Jik;ry(TjEHT|$Rsd|}v`7I{Jv=)J_D)^)}kkohw zFq*p;E4+JY?=m>*9jv#?XO}d@Vok>gw=Vw$FBcfJD*mBQBQ0zArMBz8R)-m%9Czls znr;(jxX)g|&4}<8%Snv|J4&5OaG$!xp|WD1yD=$?(3er$;-+Ow$)-wX{Vr2`4WZJ~ z&&WZiR?*QeWntfS6+c#z`^{ZMTPNzf2C-lg!@bhnZ-jjE(-B_EPe*vl3y+NSsaR6N z2g7ZWN@VJ_O5==0Pab?jJ>doMdEQZ2c;<(|Q$FX8$aTVCe2t3p-}g>O#YNSCxu5@J z%nnG)^iqTJW5tRy&R?a^8Rb19r7z<7^h%@@ugp_)_|}iwX6>vuAjI0{1-*=R_)+t8PC@lRWwv_`b>+ zViRCcbug}{8?}4&V*H3zuDikKTwIf?n<4NJp?lH-`cPR)f3@kVI9_HTn(YpNLg1>_ zxB!F}HgiwN`q~OGYT;TGM?#Wk?)+Nbcnt@sh3<7fPAwQlqu0=eNYw_n4;6OrQyYBH zy`B%czDE8I!SoYygp==0rnQbe_(W=*ps}@f+U?@B%#%)NU!+-v|2j^AZLZ@+!rH2u z;0^X~%-uiZuNP}NYL(W=*Ffm-6<=NbR@mrP(!+Un03UZ>Ls9oC@2)&4kGp@J zMtQS}9n-ttkYOImdcj6i^hN_r8kKVQ6K!vJ{mpD;DCO6=TVBh|jeCkoSQhq>uNdU^n7Aee6P)F;(KxvI!%7#d0%U1!|#ja>I} zJZ{>+n^_}uw@G(M;x%$f83LhAsY-SOZG zR_?D=OVB0i`6d=qqrPyzxJe>K!%!CEhYh8zi`0F(IJ5kLc5WLd3N*uy1{odMh&r?0 z{p=Q$kZWD8vY$zw+F&f~@;7P_KHSu?O-)nlO^kg!8ADUZ&Li&Xxf@tZ7iy9yAw87K z4{g}LT5TcX!Ygj#Z?u-&EI)trl+-hjdeColZ2?;05s2$GlO+y%5m#KcOgpDDffU$j zt4$TmYouE@0RE0p#erMyx7ZUCbF|mskCdi9HOJsBP2Va)Zi5W3?}1Dh8&?abNG>5) zq^iBUfLBkD7F3sjQ?s^6b-tdVEtU191aWo-&3F5=3p-I)mIt~NuCmBj03&Br%X3_G z7f;>ze*qr)KImrkojpK|L~V+&TIgbNCAh4N6aUc3hWc0urdoD&?ay{&DYy7%`aU1; zCUvtJIvMctT^nk`^SFqi7!OYBj0dp|@kCcyoFR!bB+0??WDR3?65KvUWTjZWCpHyIWIwh6yPSY31gPSGKrlZ^Ieb6C~jc&3m76N#^RhZ$kLwYkL zu9=!6L&=FV-0#>e%W!*5qg1Sfz*$9B-<{_aZ*G%tK1)N6p}9*4sbZn?qJojs7#PrHD77^=N`SC_vnbNxPl@vTj^p-MHAgahBD2t6^jL zu94<-)R>q%Ij51O+4#bEzRlb6`K^>DRg!VprjMb+RSZ)%G;zHlrQ#(3(wI|R9a01NEuPvYMdFRV=tNIa!kM>?=* zz*~BJN!X3Q{SWP&!+vCT;~|2a$hffj{E+>>YRWoy{f#urrra3s_+a|}(Emm1yqZFH z%x^?48&PN2F1j)|2bG~YUeeAJqz>5z7}Qgf75)kHQt9ppl@0P-9l8bd;$#2v-@N`i zzF|Uz92T72(7WmM@%OdS57eG0SFeijXp!?wFJCW|V5@TeXpvM*v(^@S9G< zCE9Arw1gf*W!hLN)1co%$T*s$Cl6!s*aJi^5lx*rI0VKt!qv&R(c$XK!le4}d3g9- z8Ny4dfTf>@@Op|k0{ZIJIK}tj#gW=ztrh9!;GUaN33a%8$d~ChJHv5>h@jAE5Qti=a0vke&9|C~pe-;AhkD674 zctict;bKxy3iub4Kj7$r&G|Rpw>f_vU&NNJW3l7lNnoZH)TC$YXhMy-=oJu-> ze1CZFkb$=VQQ~GS=?nB9li35kUci{FnKl)8ml30jB^vN%qOzaNHgS4fR^AcLd6 zSX_Q&<4>9hiw2M`8yn{cz1rX{G^n*B*;J-@7uCTj+ZVFCu5pPL1{%*M_2>WqL={WEiA)2!f zINp7H)sW6{$y4SRrpM>S*h^KFTTqqTR!w-zL*jUqB$uhIWZA09Jg%T%d?@E!F8iAM zRh4>`<9@phfK47D4=D(YH&+6M$_&D>uo%E!bO-na4*n~y4EF^TWyC9K4|wH5RvOT zEwvRxKy29tBdG1}zQIDGXzM0@*WvEqbv%_Y-jIaLNavd{;u}6CubQ!H>`cJJSAH{J zHe0)j^iQkC$`(V37##&WqpyZ9US3&t%gy??{8&xXRf^Njm$5=LV~Mum$t!x?(yd>o zQzs5^cbud4oDfGvHsq#njy6{(iIWm)=D= z$;S$*Df!qKd{_FkD+Av??F+6bHUhHV9SJ}*!EdCARl!(7%bYj^cy+QasYa3>zV1sb zJ`+dOrsgl89z2cutdEd}^M$Lm6`hw3t4l2qTGa&u>KL4NyN|6NSM+gv{D zrZqLG9p>2_cyZH~&b^Lf`+GdEad;h))%G>PJbhflkt#`cmtDWFMr*xWbDd_@QX z6`dHe?R}R5MleYd8@SrM`BB@YmndNq2`rD=E}f<&CS6?b{+^b%Ys1Of6Owby30w}( zxuz=fHP@m8j+Ia6WYjY(3rbOZmzLwzeRWBu!0){~Dw4XL=BtVl;r|Snu)1+QiJtVn zPcM`*kCZRQ7Z*yg@p}-9UsX^Y6-+rC$Qsn&QrBosG$JKEU z%&j2>*+CTKm4%i!{SA2^BQI@RiDIr=&K6ji@L%2rVKwC7$O)J0w9HU!NJZ~Jsp1l) zBrW4x{%w9r-urZii^d#WX&8+_%6tPqeNr$U3C1!pZl|#nW^?Ol(V_$C^JztcxVW~x zq^+kK=Synm!bS!Ay;n)lCVN9Qm4)t?rfmpm5rRV~^+C*grH6j&sepMjP1{&9Vseux zigDfPZ;4ltTNaQZ9evi!qGHkc zmn~*~rK0aqlz6nMFjlS3?0gNWW`;VceVOs~L^Qa7Nl2j6hrA?zpPJZcv9+^3%+lSm zc=-{LW{qDjeToNrB(5SZXR}O$@urowcdX*ANVB%pB_0zrb0RJC?ZE`?#<7XV1Zlr= zI_pgX#J2CKZxsfJf0bxOFcv(n6Or7WSMG~;;c#Yo+>JWa-tA%#ul1+65knM--)M$v`rQf@~w{J>J~lO?@Nxx~NKp+&+?S3m$5 z?w9KROjHxyhpCmHnyI7C7FOFq8QBdStyWccbRhLbcsiCREv_D67j>=HYpEsH4MFGs zRqc`$S^6VFFDltx?@~ed1ci+iit?Al@T#)aA;jJ`E}>QEga1r^;lH8u_E3HBe-Hej zvDF$0sf;v#0GLs6wwywz%O5ELu90R*!dV!;zz1wKN!~h~cW_ju_^?MxxldYdO$I>l z;L{ow%0U0W2Fm|M!|An9w|G_Ra@*JJKP;Z4IW+aBw2IHXcKw%ZRgP7>c^QH=YrjXD zefJvAqjA~^Jzt&RT2v2P^dL};dWf?3o`d;$q z4NMawWJ-?DzG7ApQCkb4+V6GE0{^8pUIr899CUN7yfhETe-w45WJv8`9+sSUvl|^q znvy|cV3COUu=%(y9YGP_>c7ObwB>h{@Ajs=nCUc zjpdJh2z*8Vbj_%5%YEiEHdyS{TcYH@yU^(0gCZnZ`uB7O;6FhBGV2ZDE8`)3 z%j-r0uk|Fb7fV}TvsMnaRz6UmitAKyYSA5_Y-|~8RqA}v?FIxyE?Rhw6ys#o5g9gL zSvV<;4X}%r+3i?7Eata!>k4tI5tl{`83D2kHZDK_+Z^{X6V+piM-uRZ{nk1!ig7(t zOpMLa(H_WNuN}p-nq;9SL<-kI)B_1;z5oidBC@kq3|js&#@BnbO&e&J;{UAuvzJtJ z0CT7Zx%)l34A(H_b=>`2zX@*Y>0OBPRCyKrX|pcG;D~ zhJ)r$Zpw{jiaduR-QHHv*gRW=SImDyJ}6O?i53e`AvXvO^ZvU%dYd5%+_ zmwle%iuo>^XJ&7nBb4Vp=C^z5)va+4f?Qi(j%$=uJT|)!J))6d)}Wa!L=R}(Uk`pEx?AHedML3sk;WoD z_zmg<8%jg!ITRr#wrqzC^~`@pW6`l{5O|j3PP;}=nf0;ZEUvqTv#ci!S1aR4D&8L! zxL*6bof6>QOk*Ht8tqvXRML0jw&OrS_e`rzByc|_!PZ=2JKR%f_{r@LFaHvQRz512Kll19X*U8^q?EZ{^MelS5x*-$>?ngYL}+<%#9Ex0-HPC@R9ww~PXu(a-@ z{JY%N?!)|DDzCD8e}CJyX<#=Y8lro=Y(rXrzBIN>=hAZy(@uUrR^1HRFg0?|wQ8Ym zy-6|AGdyzbpEL}})o%c)tBhXM&2Za2K+~|p5#BFYgOhPvS8=Rq6Gi4!4QV5e-#f)k zgggQ^c-RhEV;y~l|MoQo17Z>x=mXec**?=wvj1tqA!s0k`#aqv_(6dy>_gW zyKpp`4ciHY4F9)+*16?HI>e?HFAc0i=;orEp7Gc;ub3qUGRVxFhST*qJ5-+G6*;b@ z6nDv!!crRI?(1Q_UWNMy@R}KRaFmsfKlbBVUq)IM3dZC{Fk>Tj^c0m4Ay2=WPbF14 zyg|J+qgc0^D|p3sL-pMjdT2FY^g}f-Z`0cj*JL$oOMkZ3H({ObX5NdIf#s4saDM>R z#TIO81gpB=!!M+GPC-sSf1h7nkn!PhpFiyEBJ*(^rR+Wk%d^UV&Wg78tbT{PbnUb5f2VXSZ7X(U#Ggt0LXFZq8Fy z_z@QR=-n)}HGOAFrkml`1A$Q=mESdDDS0B-zHew?1b=rCg?oAJ{fVYiF1BbK_aiO% z@aJ#@%k1LFb%BbW_Ex;@-MpIIvkQYEs7-3ps~e8ujDqtZYIpz?pNYMn!%0I%^6yuF zh!w->#fmGbulrz{`4qWi8jSvxoBn0=@^Lqe?73Iv#VY0&M;10BX9+WEQQ42$*k`?! zYW5C{sfDHv;K&y1lBYO_JmKN>F&&{EA9a8m|4rED(`f{sS~m9&%kw0 zs1<{K2RYrZ|DUeUpIvWsHS&_^>d#C*ow%LkQ!U3NpX!=O?{4e!n|NR!E@U%#l78oxf@pB{MW;s@nZ6c-n=|6M{_b}#-*i9TvHSYfrcC%zs}wV2Q< zn{BV$TId^e5>>{QO)$Cj#$kqd<^l(_qqpxAs+%V@PULxhJ)A$IaXzlGQc06ZGLC*& zqXuaHRR5gOJDb;>z2B~}Snp?M@((l>M`E3Ua0^x0kmrlU#R3Qlq4Gb3q5Pi>1MtM%9xY-d$SogR*iaaZ%_|=}R5scdMYy$8QT+CE8xO}71x{Bqac@oX z{13T=^E$so_o?Us`v|Hi)(9#@bVpz9++fki$9tdqB(Bgq||D82IZNmwaN3ZE9zFQxY&#C2F_H} z(AHauyPZcSe;ESAF>vN7Xlzeu*o(W#+|@ViB(`N)r?P=z#>+@L4%9oWPYKf~fh0n8 zP=ky5rxL5&{nu+fLa+A#nosyG30*Jhkw9xcF4E&83c+h3R4WY!!AAdyITjCLFzSo) z%Zle-F0b9O*ins`?FDrK+olxc@mpIkl;0f+6v30fjr=Ljd{qI9zSB7g;&k)*^WJSd z>73$LaHWHLg6vJvp$WajbJaso$YY#akPqKh@5bmFw+(^{aU3v|OZrKb7xnA$MMv8wa|7O+;LaoE0roHpP^V7`_ zO3*nCv8%&15VL61M~SP(MfMoeTTbj3qg=R z?vA>ju@XnxpGXstC4N4pGIGN+A||I9F*$){Fn;2$>OF;MXslHwhhJ*#lbOTA!xCmuLg)$j5_6xk z+NNE0cr5YlAmclGtv13kaE&s}q;;J0IAoig6NBb08}gzVKu%Mu9)3VeUD}N=!z3y| zMpUz_)$Hw*q0x$uPdjsrgaDDPmF-sgxl|Hc_7f|;p3+&MzqPEl^xgIGWJ=Ez%9m}% z2mxP?+e5{+vh^tyz08+4g_R~MA6tFqP+s=5F-BE;Z6ubS1GnxZM)D;K3UXfOI)dvA z{$}%M`ioH2CVr188P7$?07iOOY-rY#^P)Z^%Rb_EeNzAbGf@};THJy zTVjR=*ALq^;+{t9=H2hd(rvlj3;dOmY7uSQwW2xhVZH5e+uUb_BLrzB;U}XJig0`L z-ZS~IVk3F7kD+)fF`X!MOAu-3gw z<(N<+-b`=i3{`==2K9}0!O3IGU|c{5518X2E?P{)>0H>B3^C`b{WFsgTkd5o2tD8Z zsw_QUY$;N=eOVh2z$e<)MjzotJ8$-j_+9-X-e}{YFin>OWFfmlBrhQNZ=wJxeD50J zxGTR^DBrjrl1C*sxb@d-457C(c^etl99|cWn8$N)+760bp=HQAH(W=f2F@TDY56^v zDrdZ4{0<76c?Y=_GIJ@{qs`rKXV~JuJ@&rN<>;Ieazv`yy4miT->Da#o;N*5n`?=O zYR_ybK2S3s`dz#|^SqcIpHGfn8sI1Xu6)qVnNiU*co|Oi513FYBxc(Mc{h%C9LMR_ z*$Z~Zt#gUJ1mFoXs#D{o_&;2g-(#;Q71pL65?8JXwyg=q6~>!Zn2;FSLjwFNXW{@g zs3v(T4p4{Hr2Zgjmficku85(~v~v1l4(!AAnZ{o~PY95jrwf5|=HVK>lr3Xqh~LZe zQl49RzL)1to?Cg|#B(Rln|ap#<~Zx9yE7$9OFEETCA=vnR~fle{5^1&(8jfR>UX|9N#CBav?sPSGVBD}Q$u^k(wRB zc|=|EauTXTpSYUx7Fp6v624-k&E*wL>DaPcsUjU6G$@NTfst=giGK;ctB&E+;g2>F zGHN{|)Ym>GA-=e?%_X?=#~&DX)?|yFWhzRek5X$9geV(sf61)u;(;}iO+lF@!&Q9N z{N9;j3kD>#Bz)81K4#X7_idng2vQ~N!!LhqvxJ4_l_Z%qhLxWsxs%vKYJ?MwT%=`@ z-iI}~XDK;b=oQXKH%f##N;S|gg*kZWaHn+{b3M;D#$v@g<%Zy$WZnp&-(eyP3uJ=&Z8zDj_a~g zd}p(vRE)~?fp2*9Ze^``N`JaM&UY53?@Qu~S>;B~&35wgFEa7-Qbn)*Go2=iqXqc_ zco%ZU6u#jz+z#w3FLRk%VJE)XJ!zKVg@+AHS#FN{wQELHt z@Y)#R9(W!3MMCYiq7Kn_{8NJuobcCNT#}#ZKHppg*sr;rG?M2wo`Nq5)u=Wt@F=PV z9tiKl5hQv)BpBLttH>(XC2_7IS*%7_9P-dh$wDnc{oe&oVnK?PPp!2rmS}ZBIcZsq zv!h7w=YE7gGC}hu)1Mhgl{1M9nfP$3RK2luWhvWPVw0$Toj1|OnqaH;u$)w> z-_wb+H>}?AGkH^FSY>BjvS}%K%;QEYtKwK(s`*rO8`zgMm0Yd*W|{l1ziFZ^nP>Ss z+)WeitqYexsVhg;H^*aeYB-^?4|7 zxI^P)Tr6amERo|V#$N5izl>32`Bw~nA^ueZzYza|cNqVIcNqVIcNqVIcNB|%iFee% zzt&{=S7g`#&%A2j6JlPm60($ud`*5${Oh{K^dOEi%kmP>!|H?0Y7d|N|HZ%JefU>Z zYW!dZGOt7Hnjd6gf~H%@9JPfx=o2VpOEF9H;cOKsVXJ`1oq56b3Un4vIBSBzyY8cE z+goo^+^0tFbrvzZu5E&!EjEN#XV3{zw+*@O$7gF}-=^{zB@Nq)tFcM9e^zMV6tvPZ zz_@=x1FM2>s#`vaH17g}EDm;*fIl9pQG)|lCTH-Ptcu&=ZZC4}7;>T~KDzu{M? zh!8i|yZPZa4VNW)_KPfR@6F)_F6Eh)$+NBH`3rfvuH}an6JR-8tWA}wH zLazIMXp7bBLJK1sP&w&`*o`kE9>*kO_+=NOXn6wHrd(oRZ3_daDT2SwP2 zk@?TkJ@@EKgnaUbL=3q>C$V8QHD!6%)Rg!ZD~Ttsoq^cGMQTcSE#Dx~W!BjjBRzQI zq`MGW(tQb=NMh92Tl*+IWt+DzPi6<$K3p^Ih=|wA4&C^_P>ABS_L2Vm;_@46>dolM z*UsdY^%GKTP9&TVWU~neY2qg(J{&_h6YOs6Tw(oHIK8U;m)evRN!-TomdYJ$jdFS9 zkzWe^W4LxecGGM^g<Mf*Zo_FN=_m=A$%f-R(6|J-6Uwq3vlDVEd8x@JiD|4Tj z#E^csy%*eO>?=XMK)$%%lR3-1XPCRwRrlrzTQa>EiN-j?G<;}Rm#$Mf#hCPmL2XS zmNg_yHmSM8-T$FI*8H$QTjiUQdQ44u!+)XvxnwFjegP!x%a}r6nLP6OttvuP%gyFxrIIW?dM+39sbl zK_C9UfEDJ#Ydg8tO>hWg^5%%B~`Qjkia=+Byqp0Bc@X9IE5o}}ZC?2~E5`e?hJbrT` z4|l}V?QLJ>&U?FHUR&9M+PoOcmqr)Lf-J33t+-P)p|_X$3me`awXVPn{F9}C4S4*r z(0rnRM>v5EzP}?|$h9;YXPwzKj6xP~3jn_UT|v$U{&wg7UtIU(dJum(0|pMt%^UO| z|K;cZ$5;RHMSf-?gx7FBd{>^d4WHh1uTs9*HapA+0!En+YoBRy$AdOaK3%3B9uF|n z(b0ffh|DZKGUIvDyE>cYKWMcN9%6o^qj`LQb)z`{MMx)nYiBzwW=eiDd?Rv7{-kdQ z%hK|r*2`sEvH;-7lFwc_5aeVEU^HRMKaiuTmWt*q*N9~N_SXDSvoTl5k@|JASiLBE)+KLC9t z)9*E+R9WcP(geSW?lc+7&nboS$(re2d|5*A6q#}^4A0^*E0$5LnNlc9D5?LB`03>l z#a}b$(nn3lC;z6dcu)`&C%)Xa;jF}$#SIlw6-?D+g}knJ`*nCBkt1PHc#^c%J+RTM zK&jtnLWLVaQ>tJ=ue$1Ple9KA?BoR`ud+2scD-AGV@+^vt%ze#$7##gRdI`(PNk*P zXu(_>T&wjl;P?&5XxiiBey_p6`0bf_7`DphpHbu>hS#O-vF=qfUgsyuWnB8J886Ta zFG5_&t^4oa+4}4^8>kd8=l}a)*kR<5P9}(Cr{8TNo#zca%YU_x9fT&If?5z^@oGGc(L;_0MLnWO~NnzU#;W-qf_PJFq+wHW2|9m+` zQTzKaratt@+mpP~DpabJ#DgA>=m7F!U2}KEB&1z>$!Z*s_#SfUB_7qWdoq z7L7*=V^0b~c2V;{QG%kiJx~HR(0DSu*<;mr$*__ck{S`KEFl6jH4)n zRad>RXKFfnJHu)LJ&8vwpXIa8(B>vy0k}Se5)vR&Xr?f&vl@0rcSihED};}r1)0x6 zRm9P(bof$+mKkp9O^WKnqWV=raza(`kNH1!otxaxb#Ahczu`WynZ$mv9Tk4o%rziL zyR1zw*((~iQ3hF%>Nmd?eC1!2WRcYqzP4sDBu_$&Y>E2N66L1R28=%a zg07aP+X(+V>umC0cLwM`tql*w&9`G~(~&o9F)0?`Na&2ERQ}LD_l14#^ZvvA*Y{<= zjn2HwupuF;pc_AZ3oc@*~Dt{P0fTi#LM zDQ{s|UUUEQqW`HpV284#xTxxL)2BrL0&jypb9AQP3vw(kW5~!;bc&@!xR5 zWZ`q%q^db3ns`F(@l+nB;GyO5ik?}6Yb!b;iGT1qcxGQH*}ORg>GnkX*C<{h7w5*!w=JU<(wIabyA_z}(B zVN4Z=z5Y2~@$#JG*sNch%G;%O08J}lmycUeH7JccY-2~Qe1uSOu60L?zT^@jImkcx%p#WdTRf08E-kmA zs6@v1@K+EwjY-$ph#kQ{G?Dx%XJdI7| z9Z@@t69d;GNzL8cEc+;EU#T5QNVP`@I-IH*IK8d4aC$QKtGsCAdMhf)RC}pXYh1fD(@kUxCdD6v`y8iGkWOHs26bKi(Dt%!qo?CyiIqh zalKd=fQ5^Cu`r?c!L#2(!-F>?jSJ-u^3hw$z5$i+hwpN4oFSb-o8L^(wyC)7Uxh>3+BOvq>5L`o0U`L6QK7GO|GXZi zXVVr`5P-m$mJL#Xi+%3-7vr^sUk!%W?rYm0?!t&GPd1Sd1#1;ak%yZ|j9it=fSV!- zL7sk1Rwg#)^fJA~0(@&b1gq(3kv$(r5VZ|H5YOFJkTZ?HSN>j*GyHD_Iooirw2VAr zM6xBkc9BWXt0Im1KK^KhZ=uDr=wo7f;RlFjTVC0bsA!2G4Vr zT*L0m_f|_UouGb&{--ZL3(!#~;3rj+hkfep;5gi+{6=KV=!r4Kd{(5-D*Ar*$LwdJ zkUtY`yO>?$?x>$Dxrr42s-BB^CYbtOB1TzovfPVmf;H~(R&}_?duI`59ABLd_eh?G zO|tsY8&OPP9>Z-n+tvfJmD2AZHnUfF;yHOz|7XclK;xN7{h<+pVmA+pB~Plp5EN^k zF;GknA@L5e(de9QB;AeQ4VUkTm_%>{ehG=w+p(}i-A}1QVOeuCWo1W5NN(p{O{G;o z>TMN6W@E&3&=?K%4f_^6?!MR$$!EdwyD>7|Qra+@_!oOCI8o+S!AL>bgW-U+oWyuq zYdj_QY}wXHLfev&3QfR^^IJ8dGMGph8d#H}R=d&GYG0sQU$5!i`m|sXw&s}d1&Pk_~Gt#0M)C$&Rc|VuhI#pC^OSeOWCB%?QN*#N zHg)YCbj{YpmY}=RI<~zxU!*(?cBMHP##2w;L`KDPBZ~0wQLEz>s~XswI&pYBvpOQc zUWL{?011Vnd`^Y}DGTsZDDu@T?iWSPMJ! zFbIK4Y$QBoYXg3h_}(RmS0;=4FYjQfwKF$KZrp_nSYgqn3BrXXe0>57xTV_mH-e14rb1wbuP?_srvQ@c_w@OsVK-%yF)MKDyuXhbEH*E@a;w zpm&G!t~Y5vCGF*tq;YqRwcqNsNUK}kVp-$d(-8IuZcay!{-=OtwYi&l&x?5K32C79 zK3;xo!;#)UFdppr9gt_@)to>ve|(c-Qo6fAcjd=6u8*fu3NGMo8x76$_b8jDZE$;E zhSNVr^PYgSGB(ad5?8#bnqVj=8l0-H@vyJ>{OXT01)O}TREMcCD(qBWnC^XHFY6`C z6Rn0e&fU(JQry23`*Nr+MPjil_ND0Fm$Jx8(Q!3%ch1IV9QrN$;RPNakX7xmuUA}R z?U}8T_WN%yH-K0dN}Xu7D#a{=S|Svfu;b%GrJFVb_ue4pz47Ln+EkRqI?Z=4zb9w~ z3sm^cAAT#lCXq7&jUU*s9;>B0j$r~(DZcLsbmmW@eNDqny2<}~LUwJbO$fEYeJZ0? z(K4~q)&=dsztF0gpERl-Sgku_7r#Y)xz$xQ;zAge+=Gkl^JmR()CgEr`J(?JPvcPc zDsET7hOWzaavj{u_f7P33kxJ@;!SwE5q*TkVLE!@8$c2su~~gpeRBF(6;+j-oUpMw zAK5?`E7-u(MO%I=90V^Q3H+SWiX++|=%G!${JvS!(py zCchoDpqbq)>+^SU#*CnO_0G>E%q5STnCpnrj{IG2glqC81fs)j1`({Qx=MH#+_BTB( zgwQ^F4vp&b&*O_}BT78Rtf}pXG4TLTZyWmM!W>RyFrH-?gwM(kVbD!Gc?{AjEb)|Z z1o#P3V3DDv^viaLfX5~<=tgYqV9*ZabxH0s81xX9IWTBPIv!g#+c4u$hu~y_?e2c z5RZGzhFBwL){EXjw(-rJSKstuy&vQEkI#;AnWZ$3*uYf_x@C5Ke8jzW<){+9XTaFO zf9{B~y5Q5Az}YHHs-V&k4cbE*!hD_Tb`FPM=ca(X%_G`X1PD;i;UZq(37#faBbY3V z@GeV8m?iFF7W6{?NXt_OcU1oBd8NB{TaiON1@t)8jUNsmEZ-8#*E~WVFVHCzCpPi= z(We4;Bmu*^f8olwWDskLxBPy?_5xf{46&YnRrCB5Y#EGn)oI~SAhG-6t7xuwnxA}7 z_>K?(MrrDT=WsX%c@&Mh#4Y<+bjLUK>S38NQ$OQOO9MF5^7`dAW*QN{7}nVr{U;~$ zRQo;r7HYl_(D@0=-eZcW3%2S+O^K6z#>7I3Z54F~ZuRb-?fk_2oRJA`7_pe| z7@!+Q+{BIT^Ra!#zaLS_v%4SFKo;g@F1N@J0l2QBp58Gt1YWpp9NQM% znB<2d(vquW7{QQJJtKHhm=T1VR-)Bc!7+>H%68st{SM1j$k4$rWr`Nog?!=IKGS;? zv+*F`yl=XCr}v*;w&{JO5Ja618G+*QcJGE=BTOa;n|~vr+bx{n8{BwmZ{rHDq;Z$c z5x9M4_kaJ}boc1*72w`FAp96>?Dx8H*t>>x>|zjX{V09AZ3g=^q{2SK8L)4MM-2Of zRGwmlT;Yf5#lz#WNN4Cv?d^P71-)qHT8jcGLpL^AMVz5x=C$S#PS2ps+|mF-`>6dzcTCZLW+PKwiM>TS=@mrkq;C+r{^|G0 z#G$3(XpIA08w_0Rx)r$SU!|ZxdZ&TMhMg3oAtRFzMkX?cvj{jP?)(pW3Cc(s;hBKO zPD5%V!jQ%u`ad8j7z2MYwkRhY?a&|9d$1*zOT41U*OI>$({32ay2k{mo!-&vAtQa3 z&jMYazEbEK=nGf+x|e>-B#dS)=U&LLr6&F*1ir^GZ97`)(J>4(dy_VVqZcVY`W1;- z7A8uzDC|M2+`;sQj3*4`{Uas^RYeZkB*lbzGM&D@D*2ZYOKC4wmo}Gv(A=F4a(ptj zFk8q3l2u3^k@~gEoVZ=5uSX9eS5ChBl%m{$bwDULEaa=#nd!V%qbMZs)kir^ld!4V)AK#MDDwO zFoKCCzfN*XE63>YA{MFoFdZ!nU$(SXN2)4ZqyWBs^?6L+!-_n z-Tj#Id$iEhaWm`P5#z`KmKUY!2Dl4;jG5_ceUt6!<OQY-$Ix~x>!UPEU>%Y&)O&?(MOR8}5^wSX%#Z40F-QD-e>UdCV za=bkIY?rLNg*4Ma`xpLXiR{es`l@gyRVJ3p#FuMo@h;m8*NpxNN_V@dq4uB;>FCyV zLhzIfojHIl8IO_aF7=b-qm(?YMF>-yyE&F#A8GONOw1QU z%}YfWgn5g7$C|>&0eTd3&hCpQVs_VKjlIf2$zSXz_R-v?qJX{o*pLqr_#m;ohf0n2 z-OIHmc#RmYc-jP?Hf*0*E&`gI`QO8 zk==%u5?7TCXrwt~XD3+cG(PQ3b?T&!-(>dPzv|isva00Z#InTJ0g;w(xySWEUld1L zHuIFYW=w9Rbv@>G%OsF-qX!JdTs z&fzUD%pMHG*AeaAkwkks#@|R{aursMY|TY7z|0j{w1&)N%y0X$u)D}IB-W(KGqRKN zs$#jTE1r)mx}8kRE}((kCndfa(6~)}%f?+>6PwQMJ}wnY+u7R<2dXzEQss$$9sO0B z*yZQ*1@jCfM=_s&Glrwc*tYI%y+u)gMiU1(5muzm{`4PAMAX=}XwK+ZDkp~MFavbB z_2?`*AdP+&oQyBWr|C73=08(T;>)~-J;A=uq;^gft$a(8<0}Xy>FD_#gmg5475Edo zqto3!KtnXahNw(Kv_qL6B2viW_GJjQjI6X3>N4eZ}|RDR!~eD*kv4U6LHyr2r-I;OyCntBQ*o&k4Qnc51lX_DhcX2$NLPR=EQ< zqU`K&&u&$2Cy-VeNZZ|uAE*Uu+33EyP3)f?i3$?7N#&BwB)UrXi-8y<_EO7BZ9G(1 z*HUDr9uSl@cUz6`PbVGma|aop$@Q( zFuT&F?mY-7XS1lW;3*9OVNl~Itdab+=z`4LLzyaok!JIfbzh!wQeVDrLi3c~xD z9sBFtzQDH|^U{Rbi7SeW8;WW*6C@!X^$?9;l{I;+{k!4F4B?2O$anO=M)_-lUllTM z%0@(6%#$3LS(MLsD4myGz764m!;uE}=Vz@w|3ddaf zjuQW7;9l!aZWY+g`f(wmBxV_WZ?b$MqvH9Y_9T{H&Ag>O_sP;r(C`H~R$9dHFHLP% z>CL{Mf;GWnPor#t7hZ&6Wp z!~e}p*BLi5_EDILBe!MN`PH-HteJj%w-;(Z{;Q!=+El2k1wLPX(~j^G#7Ep8KjTET zbaaSX=$&CAa)w!Xs1~SQ`wH;vzr2yYEYB&EmY@}zs;jyO=p`SiR5N={rQyl>am^w6 zbTIL?F&QSt3~d;;d?&EU&GKb+l0jNg&hPRGI+9q0&A*TWf_BQNC&kUaIHSgB(PP)) zbTB#JP=MkisS^gceSHDv@%~Z%RElQaOt;%;Kn8>sEhZUSm4DR$+u&6+aV^y9v=@^1 ze9eob$!45VBc#{&nCP(J@e75Il)lc*Q{vQIz3l9FLhX65M#yVXks}#(WQpr|ocyJW4N7k3(^Z`1)$KD}9v?r{)*aw&XpV z?ftE?0i-5jr=hEuB8m6?&Y9AmFB;=txEK9nefan^k4%-+4cp{As@6co2}L}Ex9&9) zzr?hY^B02#!Q|c08Dpth?~XA$zNK~_jku;Zx+_NYif&KXNG;M(r=xMRSK_Jgfy}PV z`dfJmfm#NE5=P=6?Jb-V^6DkzX@2$JLM-_pyS8ciaFdN?{3ak)@m-Mm`5&Es;6ikI_5~Sk6LOT&zoPW#h;6u~Xo2Viq z(TCytGy6CD+xINu41q1{aRYh{LP{Lf2JkVdF?MUJRd`P~#yzvWEU%>4bo9)XS$Z{0 z^lJNqF+`@0ZWx3$bU)&SP19$@r)1?7lB`32ZU&#^tkQULd|7flKBJt+N+MV2%AW4t zvtryXC|5rNwGs zuf%#+9)5KwSJA?q58@=4lR|&&PBmn_uPYs$umYaEt#5%|9AYolxi4l=Bzr-w6X%iN z$7pNsdiPIW(7mb+8rc3k1)q?<2ML4>vU1|GvSLQ*+`lj!BR3(`tr?Y_yCuA_fCouW zF!pTK<~N)zj4S+PB<%(cfq(gDUe@{tp=62Cb+(pLMmjpDO<&GEVlml82}~HOo!086 z{6ZUtt%&b`HQv6urXyR&AD>b&k(R5>kc~D^4FqAw-DU`@o@4~oZ2$0RDWMa!TIVH= zXs4p55{%2Wl^F{^km5gRZ{mfA$iKmV{0#MPaND`%q+=&=>-R+Bzf{LW;&6U@PTD%Qkw^hiJ( zYFCef;0ppf<-z}p$5nFFYrRy0Mm|$@OBG^B(^+n=#kvlwUP`{HO!j-ZZ*?R0*K!u2 z%4Fn8zOsj500a-T%GLnmkdtvn>C!lbx>ri|(S$LP)4qtY!eH@s`9;Av$mg~5G>_U9 z4T3QpS{ct>jsM>vdF@voNjQtr{I%>UHSd{NVrwqmm^Sp$w{Ed67PG>RExXZbJ%w7k z4&^m08=9^H^V;n`-X)DUqJRYu;krmWS^b=l=BH^&sP<0 z>h{^JMGwMD@kMQ~VpB^G&~)$a^JQ8)3|CRW+3mCPh{f1LnY5bUDI=(#W0rC9@SQy! z(b$xpQU}5tXc5*We$}J}Z1ksW-yd^$RrPXsRp;%4%Gy*lBJ(;obYCLRQs_(`>`mNl z9RXt)HwOPZ z>Ey1S$J+GSS-Ga=ES_`|Pp{~S4Ve@d7Gi)=5Sf2crIl{wsVD)Bg|F4C#7?)fwP*}8 zDARy6Uo|RT?v7xf+j?$z7_r8j-B9dGd*#Y~8u#M5`#&MTSMDT(eCFF+eex`ybmP=$ ziM?GBztZdf;&tyAe^Sy7y-9-F;dHcBJ-R~;Ws*e`NtJr-9>fniC`Boj0w8>j|8`w5TZQtCucIESGG} z_piZ-YmVN=j>K%zCfM%6QLEF@J02YjFGe^Y{cNBK%>1b;|GQK&)xm#j_HeT9jZeoC zPY)#7vrNa2b-w^y&H?kkP$?a6jmF+XA!rrrn47J6ZA4~U*xUM zG@VFlZR#-z)v;9dfI3`qF02WTMQfb+q_{RUtGKRWOT!r%{=)7zMa5pn$8Kl7j0OKT z_&u+LLK1@UL#u)l3v2%$&fWw*sv_(A4_PE4*g=h=qDDoHiW{ljhdE-fWan^_R`9X8#6D?Fpdl3ilc)86@zS16cAi+XVlS(85MO#L6LsHzp8uF z2|CaF{QrDN-+OC4RdwprIj2sY^04X;s%jz9(tyt{ma_SbP9?`5LTD2YANIa5n|h1u zvY)b>*<#Kcq4NVjSrzto)6Ne|E<*1veIKgq9hn-YT}bswTYAqOz;`J%I#bnj;rY#0 zmAwNUb|~^yy6|kett#0c>vAqa-Z5nnI_Zw9zw>aU>hf8CMFAGtc+q*<)EcZsw9<4)i!>b;_|Se;2vvTaKCbeEuA z?jY#T3QBnraLfY*blG^VI#*}F+44J5-IPg%$#1XWoqO`QOXqa$zca>?qkFE764-7onHYX<`(U zPC_tiPZf1%>l0Xz2IQIhRde}$LPwVZRbPq=+JvoT|Eb%b zb1QXwm#qvnK1t$m;sr_IS)s;9_|>`-W7AHSBK@!tP^aVog}uCHz;`N5M_1q8whd-t zv$q~>I9%F7wI=;Cy0=u}O2!Rk;oT?*!_9xQR-~u0QycdFs7^}tynuT(J zd)c;}_PKtjx28Q+IsU@|-$C~(5$0-ij%O%Mj*XwvFA^KivT3jQ5ak+e?ITeV?Mls| z8NKcJu8a=YP&s~Wn2Qo>34rCT%9$x@?Oy?r6ThZ&bI5qxI=Z7OXPu)TIzJOmznETC zm8$6WzdT42ZVK-GVgU$^l=zAV4x5v#BcQkLnn3_qJuk#Ky0xz@@Kun`RV-+hT8Zpb!~JNolO0`Go?g{{8eg6OtkhpMyRMD-+PNP~L7pF?5m z;wjF3i|@1ij)a1OZzJ0=dOrO;KB8=~f_Kkqx{;-YPRXj9P|?Ac3>L{fb}TC!GN-hN zF{@vEGvcjbK1M+IB6B8gTAkgHh;kuB!1tO~fo3odKJ|w7}!z^-&L8(aiEq%(VV2Dh8|(4lEy<#pqDYE9Yxb>s3e$&D_r=P)p_h zG4ElL1YIMd1VFZj1cL1fCln{PXNMwOaZ)&q^kRmBnytF%a;o^n25%;{ZSY%AY%_>t zv{cmqQ0_hIL3p#gU3jDDJ@p7hmvwZRy;=eJrc>$h6Qr{m=@11h>9E(_`%B#p5#Yjn zWE&Qi*T#Si+334;hW%-FX)EcuT4~)e=k8U-;*c-$zGMOF(K6f)>ho3e2%p|^Y5IzR zRGPmMK`b*J`^2BF4G(zP*^Y;Wf4%k&%fFTrE&kPs)aB=7uJgz{=um&HhV^vj6M?tp zt7w5UV3M= zthE+`Co;{c=dzCD6K&abeR;{pTXI{g8j(8Y3x)QK=TP-Ad2{Udm$&l`D;0cy z&bL2zLo>G8dE`17sl8dBsluB`qO+Zy?PJYfhWW~{O~#yORaUqIS!orkPS=-J^!E- zslrpH2$k0|?r)P_S*H_WbxT_DYBiFAQMy}!E|z1l{SMG(CE6)7&t?vSmMSPo5FI{N zxCf=Oaq8R>W=Sy-BdL8QleN-YX=myf()*p35vooM=0cg~!pS7jAdbu=xKiN2lGz5ol!R^Fb6`^nhM=<Z$`SckWBop7(ESZf39WhG)qTR=xMn-VLNH=v@OR+5~CigvBJ+*Ts= z>}5_LX|+#nvQCs2Y)ve)HD*zj!wcqg(vq-`^7SUISjk=eJhzZm-#5}uszTZ_yOSK6 zLyjKiqjPN0?c-wJsAsCYm8Ki?N(AX8B1nO_zSca?yUO^xeXcc+`I(MX;Cw!4&FME< z%ty~*KA>u4n@Nm+Rz%CTB?ll&3lI@pmya~wX6^JkjKnJEfqs7?yVwtOB!ThR{l6!C z7U5o$%c`oDN4)3@eym0Rs8+Tk$ZS!690>5bS{OThNx4{4RRla|AF@KKd&n9l<@@hy6IGkU}j-71m|qwP+>j2_kQ(;mqqR>8zh^kWsw zXRRJiXC3oqXP4X1CY#k&qk`*gXn6yss684glI2Z$Y2pRlQl!TmUgmZx!xourvYCQ1 zB0Uz6YJrk3@ zvaTmv$WN4epn6%Ms&?dZ^QEK<%c z`TtktOY!C~+X2jxlb&Uf2%VR9y8@wEcQT{|?~mH{fCa-*&dz)gSQ6W^b;3D^J;&~H zoyv1W0m-;`l-D6e?Kg*tm*awftIt=(Ks0Pqb8-GT&Z?r9=kqDoe`5$5&5N?|Sx~v0 zGREpc%`x0lGn$v6+>y)s5OWScV>S}Q3o+JVTx5BXO5?|s<^zBSt~B@D6y)_~YXU%G zt68gsZ+l4{ox9OBBb=C4noWnMdN#z1*r3=53>)zSn@jZtk&Q)cDXamS-jOv$?UPVo zhl)R>vRpuLE!ntpOO#YC8M#p{IY%wA@T!oJDvI*el3{9zZ6hyK!msMvsU^1J^eTZb zPK zyv@goQ1RyYo>s{}b|pi!p1)1}ZKfhz@%FxmZs~nl0e1`)SEOGFHBMkwitmK`bq%O+ zr#T_Fi{Z7+iB)W-3W2yEH+33=c5LpCpceGh)k3>&L65tjVYrCeFL|YY) z6K*Q+9W}&7epFty<_Cld)0-5qIryE^ZmDmI zq0Ix4Ywae9E^8A(v>LOe9?sThG6wf7*9BUxKWMbebu|f`7WHQbc4A&vfBT(mL&PFbg+#RQ$r|@uJdtNC^`zi*8~}TA(`#*D z;r{r}j}G{b^|&6YSLJOEdtVa0JAdb5JX9vUd>KxVW*KQb!IDf&;ny@gwL=JJ&6Y7uf>GqF*TW06i{=kf z-gBJyFgtys?0 z2|I(~OUyqi&_h@p0IMoI*vWO~iqQ_L)#4RD==GD7tt9tgI*~gv3 zNQ)B_I~8zZ8y8~Bht*^JhD=-cS6e4j4T&^*<^x8_&k#vI;?SV?Qw|M!TW5+~Soaqt z^+$$J+a&YvC+WnFJ|!3g=q&{3J+8=nrbs5mL33qAI?wX&IwXDqA#IO$z)r1qNZt&R3%|>S z-!b9$9I*&I$M&n`cY+iac^B=`p}!dIP5))A|Et4#{Jy*mB3rEI`DgV3BXGc57%)22 z7Z=7vAhL>`=z>u~{tJuDBM;D}-YywbTIx^<#nL6P>5o zl$oGj`m7())2ID^oGC-exzkK}hH^S)3R{Bo)QZ)eC(4%+DO0_k_(T)sIy+Iuvpd^% zhd)ugP7~$f$NY&R)0%3!gkk=s5omu!Ex|9DO*3s)scen-}t&=77p7nNUKUt`u{eoGUE^L~I-h}xg8O=&&odhtfk+jgC zUC+-S8W?t-w~9_$AN-d(-}~2>PPYeJvPx|HeWIuEOt14N$Az!N`;aRye4lWB?21m@ zQ!C+z-N^FJ^O(0M%G)ZO*VyHukvP*j&fL)7eJ=~XamHc$+^P>~%~7LhT}ygA#H{hs+sCPh8Ft*yRDk|S9xY+Q&)h$g|{+)s!;XZLVjFB zUn$HW`3S+U!ayeMM2*T0;PWHb^{ldT~wTkb0Mqt?*XHeh0B2?w0&h( zkXkjwr~!?5P*OLQv_NqkL7Ka0*v;>{guXX}o(4lEy1i)-P&)3mt4P!dTm18hUFS&J47-nrniX7o2$RWlUZ1H`?y9-x1W-j3=_PM6t5Gd z4Xshk!*~+5=R^sp#mMVKyB)w@`Z`fL^X}#jpD}DAYr<4B>fCeaz(gO)K(qQuCECma z7^7YmxEa1FO5RPo1&RgO-$Cd;hcfjztGx-e<)-L>Pjm>2kZ)qi3mbIAp1Xshn@Cv$ zT{66HH8*B;Xhk2avy-hmOisA@{hpd^`~RNJiQy$tyf{g%IhX3S2C4bjEWw7=xX0-9 zOQ9KxO>D~z%_!gnTs+s6cLXwQa5iPlTrG-PrM;)LAVs`qwZ$UwA(D*GjU=Zw#czrX z9FK=)3Mh01?2TiMaPz+`K(|srrB~G;(=IN)J*(X5NBB~A+kG%aL3^<1hLw-Wa*G!b zHab@?MdqOm^3S_j>+HLTA`y>zy{S!7{7;k>p07^{bSaIrYz{E0h1dGeO8+Tl7C5iE z-gev>kE)^lda2_+x`%g+()iob_K8hag|1_x*>|m0;89Jof+JMRG~8fIyj9J8CYa{s{J|(LBAW+Q|>fQ4G@T4)V9sh zIgH>m&NabloH#ckJZ168dsgjfn?y2>knVIi=g3vkD`L_xYOb$@KIQ2jCFw|m+yA!h z(%i;RaV@HvYu=%G^ynOV^v<@!C{ZF`y||oOZGQ~AN)Gd6;x^+y_E^ZOw!fnbkUvOx zmaRO`NqfNf4A{|JDHI{IV=C`WJ zN7gQuiWVCb5uMBZvD+kUjB4Ts>``s&Anl{(@*^Zigr;IyUtYb6mll6jcnykghSb9@ z6>nj%Gi2%6X;7*ir=y6T)dGyG?JqA`$!HUlpc-Sr_{n~9x^?;sfm~pf8dyyhfmUxK z0ATagVkxs(sM5&FHX;j`24#6w<0t5xoC#r7D7qrTjuyu($!!ino9QF@r_}4oelZ}U zCj(s4LS!zW&`iWJf;!eE=xl;Q#UF%<-^#2H<}i{-S>xx7A2x*X8G98e{^vBL=b!RK&^BiFr@IEEN{IyHaw+gyj zLD0LvV%O0)YnAJ0++9Cfn-~}kQI!|2v2&&951Or4*x7pGoy?U~)dJ)FpxIcp05rHq z^oi-)YG$T80t<(7+?B{)hmhOcyJMTC>jJQUlg-}qCzn!q@|N;~D;vyNO4Ru7S9W3m5V;YC)!V>}pJ8vtEkK{bil|Wp{PLZwU(23xT>Jrllx` zy-}XIv#JAcE zepSWblBm~n7cM=kJ6*jun;kKta=R*HUrqD?tPS*yk;^mPJX=~WepRk_o5 zWYM7Oo^G!mczx*&!(^5OGt*K2PDK{Vu?zR)P=*ROpAV!|IpDdL5aP_+1f*A$U0-_L zi+B<(^#LNmL{s4hw^*I}~*(Q5Mt8>;ojVIvkQr zG0)ivOkW{<1X;Cy;;+8r1}VHj6ptfANmpEDopSJUuO!rib6~&CBWiAXeMBh zPW2N6$V4FeP5V)ifeH*&>X%77fmi(wBtaxJg5QB83yt6h8VA6)oR6N)!eYuBr8<*U z(5DH#xvo{e=h5%&Q?McTA%P=&mvJf8B@C%T!z9!C`nrC;($A-?vPyu;e#`;Oj<;6; z=zO29ANYi@!Z+^HqCMuA2Z-Z&*h>4&9RreTCvaY$lMGG>H$zXb?I#AENqo{}NZa0~(WP=ubU4)5R{r42#Kl z_419SIUVY3rJ-hSYvQ0y;!ZX>XUNz3ENTgd_K#rB+=5Dw{SRyFv&KZ?a2IGU>lm^% zX75|1)M`J&(%6{yhKcw3k!9s2i2_C8)UV(h*TBV&)Fz=)N{h#`F|JPIfg^dK zsPSwIqF9O*zi|XYeNQ*5E%wNT+Yjl(uDhI4&LIP30)kXXe%Jz zRHnk5j9687lJC#cTXl3e|Mvr4Jo-hf6{d!~l}Cqr2A@+dsqpfZ(a#j$pu?@t^=nm| zQoT+etqHrlGIhYNi|)UJA`K3Dgf{mlE<*L zUrzhSC@>!}*oT<6}vdT`Y+G{$n0a6r%i}D^&YDAGa?+aZx;Y3qQlO^Kj03 zdqZxgT{RznG(YA8Ci`cGt%Xfs%^^Q@U`=f&&59r|XR#L>jZUhAu=hLq#PQM?7iE_FyJO%*(!JDRANYNaXG+eoXOFh9bY z$PgHXqE%RpLYfhUs-!7AU>UU-v#-%7d2*7K`eEfI#i0L2C+9p zQ>*g$wy?F=w}1&CPt8`x<{Qo8Nxn0w5K_?>E8X4Q2{~zf%{=+H-W5 zN-SP$=KRa45a$ySZH4;kOl?&QKbJJ~bJaqAE?hAAsCY4PANrL0E1zQnA@KILBR zD7T#wwi86TSv0#)?l<9t37%jnw@#p>jzm&u%mPKL8oxlu6i>{dLbSR-zO-E@iI z(5*3O5Yx7J*7nRE68nwCUbuwvk4B?ghyGOVzE6?ocI^b;G*^hJKeq3Nq%>CsNDW_2TM{OlUH>P63bl+RN+qOIb~g- zfFjFXnO{94QrBTVP-I$~b)$9NDV{ay7|6VeAMIHK72b>E2YCq@vGCq6zNfQm;k|#n zy9JGtDJ>G#$~7=2|5`+Xodp1{?yPRG`i3s@&bwGegH5>}4BnbB_XI8bDBm2;$x$HD z+#PVf?V&qosE5kz++8q@EvNJBH3{AtCEw?gj^w#6`6V{_nKt>2B&UX+G7PXan9n%C z?HB(#tTd$IB%6M)O<&Qu`0w9Q1&cBn{^By^+6+T%hCXBv`CN~ImtX8um+AwEJXa{& zRNqW>ebRML+WFs4+^FO6Z`UD&SFpGjE@d*Ae;g(%I;@yJ#I?m=`118NLH}*@UAfG$ zB|8TvI&T?6KI9&^xzXi zi%8$FZCV`p*QKfU)7;jP##@!vv4m?vi@K`lRa^`!Hd_zXz-hNu9q9bB zIckKyO=o)C9avxP9_fbUvRDMC*=ySJ2*xzK` z+Bs(Tr_veHWkGiJaUYbea=-?^(r-h>KbVGtIx5ZURO#Em^7BeR9`)ZU{r%rMRT|8P zzM2o*Ttmlv7cR-J+jlXOD9c>+38ww)nQU%Sd~n(Jv`HSTX&2wu-S;$%6vUIrPMhaQ zp}9FyuE)GquevV>&tCYh90wVXF%0hyVHgH>i*xqqw-dE6q^1|?!L2K}dzfD8-s2o0 zn=a2_vE+1{N=3Ud*$LjnPVheeaTj=x6})c)N(SElLyAuD_VnSsAI9_-;60`TULVkb z79b0t1$Jiuwf?#LR1-II7T6(r zvjy=%K>T;afw(M@&YrqUvRQ5eGFdb9<(J^Qt}}e?n|}`9d4eyy3w$d`wljPsK76fW zLhVG%z&A30FWGFnu%q!A&>THd-_>Y*tRF_-1*2#nTFFr3Apv3^>U#5Z3&uJR!*@yG z&_E$}%|&hZj|b!tbQE2Bu#kJt|CVwxDM2|Qc)jTb=p4xN5&WS5!Fvh8U;A)tx=jQN z^llvN(7UG_twlt&PlmnE>yMop&tADxtOX@pq(l()dM%7Pbei7|W96k*5gF=jO+<-^ zz?HxIuA~ktv&T|*E3;{usXeOO-FuivRN zI(MwP%lF&$lP0eYkbVH(NX(jjEi_E zv^mv@I|obLIhF)x*zM0=r=aN!H~+_qJMUhHka(QXX9|~Ls8{yoq+k18SY-ZKNeG) zNX3S9DgAEw3d$=9C(kOe=dDdT*DX@IrR=soLLbFL3rfrvIkfFxY$OS3-V>KPe^KL1d zG9|QALPnQhMpBRlr|<1S_Mh04a>&)^5z%^Ewb|Z>q4<)h%=~m0$S^?{QX$&iYCBKz zKKdw_pe4d%&z_s+ejjX8?Z|byM#dUh`qQ<>EVh^)YWxOxy;;GOjZrEy>59r!)jVdZ zCMy0|4Hp z#xP}GvF-bGn{G?gG~PqC%uTskLXE=+?gGH`U`8;J!CnzXaWAT&VGNA5}p!jsciW4@j`*)PMv1NXVN@_h^t# z_?g|2{jMO`W&eHG?B_q>vd6DgnKf$gGr}Qij*oM_HcOLJ-w;aM7(3zc&&j1|+(3(^ zHh!B&%~RIj9H+6?iT1iFndw8fabMuau03_93egS~DYjj|cmV*g7R<9(H9=V|zCc;m zS6j*|d=h2VeqSs#oZ0@SdE+BjR{UvII%_f;OlP5liKBp8Yg%!i={7JA+@!X(--93E zj_Ij|zQj!E7IfM*kUUS*@Ak|L)$|+Gkz$lhQ9_EY6SSx!g($2F$fcP>r$S8aupK}s z2EQe^2QTvNI-rr+SSFi)7Bbyz>z{o{lgk=?m_HHP_AO+}pIkgT?0j+;=Q`G381hRF2D4a!N&ANfNy`FkZ$;FCyLh-o3-v(9fgu@| znG!MulksU(@vN#pVNV}!4)3Q`^;dQa`QCC1KW$`ejKQ zF1zr|&IJgc{GZecQ2MmV=Dt z=BbY8PniK>J7YT*%yN3a+|21nvRspdC0Fxt$&CSX^BAFBm(d$ItIC$UId>11(et&8 z#++pngJ`}^1mjYt;?zN|t6agjz|f&R%VZorJ*cC?CS7Y@pA}?2#liwUz4n*PGWvIX z7Pl1>4>o!@J6zR-Vh8U$7n?F@;F{ z3#!v`7i_-y4;&Fz*D((1U4aOr=fyt9g?BHEdv=pz@v9A6Ay_um3c)XupNV}f6MOhQ zDz34XabsfoJju0ed1K$?ZLzxxIo2z45SOxXtIQV#qI)SjFbCJ~u=l`nwun1m%||Sa z6xISJ`>sHwOY3Q_;Hrioz)Q6f?ZVH_geRV#OK=uW6}`rVN|0<6Oo`{4JA&6|f_;ch zZ&v_)Ve9|qATp*>StK-PZU5easrOUedx_qUb?@Ru%pvYwOM=VP|Si(A6B?)JDiMejqBtut+_ZnMyaLd~-FpymYz8Z7HeIo0j#`^>S;@)V+MTR!wBxGx+ z@r!s5ETp`F(dX(;V_CbanGZ>6I8l3D2fX)0wQ5;0$23it*M;XgOpB7%xC5O~$=i88 zW9U=$zp&;w8M4N_^(VK4IS9n*2qKx52@;0WHjt(5gCTZlQwO-Et+O=QJK;!5{Nb)O z4Wy=E*?ZpYH|?Tx1I=sfvUmO^l=Q3AG@x5orTF7GuOs;S@>46i{}=u zqcRIu?X-Z#6%r`1arm81Y;>}fqra!t1+?)itymo*%pN`9gWm6{UbYEwe2Q;N^X|n# z@)nW@f+lAQq@S>Y<}pl%H{3SRT9kf)pn2T{1kGbuj_0`**gQE2_J0orWW>y$ZVW)C znohv{Gaq281&lA}?8STAX{5mv(3Jq8*HKA$aLY*f%YBKf%q;^q?-`VyOHO7Jx<|W` z|Hsa>QS(d{M6R=_IrUXm@;B@X5r~?MQH%ti~6qpM`F4`K2tWrKZM@3N?Qnl5b-jU=4 z3#1#;%dQK?s4t;im()XVbW3W^ZY-%7s{*kvnf`f7&^w=6(X#WXzfl{M__E?);_qk( zQaAg8XpOmjUSWJft#EP0KN7^V=y9IrFcPm$s1lNs(w?U_XZG-y z=aLRD`9KrHR4e)0Ii!t1HtGE$Hs`FekMrgd%Jp7i_PCmY5-VbzwRQh*{(oaYBSp{? zi!Cz^snjY~=~>2~OVzdr8@$K1@(?8;PWU>Sboqh`;~T7#HajVti0aUcX(S!6p@NO& zAB}XVFr$9RTGQr-oKFZ$faHO2*_KeFb=xY$(mDb!35(4a;s$q)aq*@VG-P)$25Knk zd=MEWRg9HXQD6ZUBP!8C;C09q9K*7j(I@+Y>{hVaNT+p@En4sHEL+?w!(HL9M)ftTVe%wJJnDYxf)b%8>F|0ct$5U6`2vC0Dx}fWV5~8Zi#OlWo4J?nB|3= z??+@v7v6P|w5GnSL8&Tlr;-soq!Uq0k@*iNs9n<@0zW%S{-Z1T2wU<(TXGpCYnDdr zEEQ~KYrV@HzuI!d5m-Z4w)r5487X#{v9cm>aP6{Xkuf zhX7Mgb=!+`GlK7fyFe^B`9<&}1bfTd^X$!bv5eHWyxcC06Ty=%QeQ??wr^Go-DwI* zes(@mq(Yu3A~yYBb2S6Jyz=$I+inTmuNr9Pb_4G}fOp zjKmy_=WAo$U7Ajnb~vzAB)V9I^IhsLp0$>3$*Lx)yCzzH*3Rl4n<4rQ;e)P~sAV?% zUeh8zM2w1v1&jQ9$QUwhY~s_~h*Bp!(5kTGgG^)(f+Qf%H#goBa2GZkb~Q>5)M}Lk z=B6`k*QwRcjK)gK*_05l4KvTN7`Kkow&CWVEM6RXp=BFtR0g$(YiPK8tB!}F+QB~m z!}dH(hU0rxbV$te%|#@j3Hw%LB<9)d2|30=Zous1rtjVZ+0;i?VjgW>T4R}nxHRs3zw8UOX!{jUZ_SY0cggCLhn$k>rC~x4G3IJe@YDL)Y(}%KeGCTTdm_9Udm==pGWgVeMVcd^oE&G7mRzp<}d>-CVd=gKoD;4p!l_y z2gQG6*$6CcIV#?yf|$9sjnGZ6QH{|Q#oJ>8&BcxwT=WZZS0azRIw%RBHt@FSQ$_o> zYT=q`84_k*`VM*1cZ%_ky8-p2pYbE?6<+&t&&++u$=_;;&Jd`?vTqXGb`Q#HkK(L=e(KGgfcm_b zPj@BkfbaYpVI!&2vct>LIRpPL{aNU?8R}V(HYVLjHB?cdPpplNe>;|QZw(*Z7cy;l zg_jP=A4OC)+hiO&jywKZh zc@Jn=d;kp?u;JTBVyR*ErtcThD0p*hnAzQZEpT61?yJRpee*Aya+CY|#C>hCUxLS( zskOaAc;_Ybzto?q&i4WETtNcBx^Xj;U4US40hhagmX3hYE5FmT5s+t z)#WcQ>2{Jkm+8`E<@1K-5*8j9<9ee^Xy^XXc=drnuIyLfUmRN$OD$H*tE9+VXS_$b zn)Y2eT$olIItZ>p1kj#3``Uc3{Xv*Xe-l5u?nKTdelX=-AvQW7_SZ-PeGTb-5Cx@M z!^vG}6XR8Fah6S)<>BOkHoz$+wNH~FZ~pzp&U=@2R+IPgDxd3u{^DaL)l_eRHQqPo z!$$-w8c6R)z&%#>g@PB#oKhlmvZn*kKqQHH4-Odi56$=s*pprz=Khv9Ni-T}Mf}oS zLe1|e%=?j@K#Dr9@ocW9tqVlYQACj|g zW&ERarLwO91%7tNG}lvJ8t^NFPTT1t%He{ z)Oqft<=WNJt>8+Q*;t0cmdqTQtbYkEC>@^~@rIok!x@Eae;GgId+|S7^`r`7{bTBj z- z3AmV1xBya^!%jntU=y&)nx8*&0w^be z+KD8`bC#iPkffqfoOv#oCDjto;Ot+NGbp{QTB`7;&MhkRxmVU!*JT zEy%S(p`B&)70AXR}wrR!v|nCi8$e}+_r*m<^>xoiE5C8xe%P9MVkG-C9F2wJI*gpu)Zj%I@ew-0zX*$q{BQN;T; znaxYTaFPwzf+5As&2H_N2y+gd3g$3?ah(!eSA}?rtMoY4e^+;EST~LwRV6wcohABR zsHN*4i?|}$yJVKm7ZzbfaUgWww!XEJ1B8=~W3KLogE0f5#|k4{j#Ri*p2g z)C=m~GwEJr^Tx|SCP}4@<9JC8E9IPTC6)Piwrb}wPF)ZoZ)>`62~pnawv$LIAO6Yf z3o4W2^OJ*fX?(xr;Jv))Wy!%13HSmpD=7yqbc)_!5us~rHHUf+E>;8gQRDW&ix7aj z9=@%{_VD1`WDZFGj6godf_wzi`U#Hxt&aW)5kD)oIx4*x_UKGQC-h+hl%*AF9Z3L< z{k)-!| zeYOl~s?wrezdJ@fV%p9Y#{Juo~0&9576g}$s4*skHQbWE;Y~4LH^AEfy(%s_g2i{Z? zzfPoF_ua>71-i;L=8qeGNH11NOD^XJ>Joj~Th?|BrHTzG5*tur_C46Ckm6W?W9seQ z*q6obAan8Utc;8}2tX(}~Y6Gh0v6V$oJ?fwT3TOg#fOEWWH$B|V7c*hjZe z;|@Y`t5Ywpf1ySRCHULP2{nGGaP+-Y@TQr-pxLP7CL}RQ6iv_ESmJtZolZ zc2x^&#vU!K(aA1my{_}?dL6kt-}OuO2K3T97~Kv?n{6C}i1ibHM!_q=UGyo)f|31%K8}^p%WyqLcv9pJ==H1e)&tyMVl`9YzY+0 zM9-6-BvDH&gV&f#CyTnoxxULLvK~0!GPO8h+8I+4I~|EDcV{^k&xPsk2CHb5R_C2& zS%ac-u?Dr>B@F#Lx+^zNHH$U3NltW0rk%9Ax|-YDHus|lJ@Tx2q?=80h)eRUO|pkg@&ZYM@!fM|pm5dQMZ$>k0bdM!WC~!{ z6*Jx~6lBKfjJD^s@=kLnp2wPpG4Ufd?st%#n0Lo|8)t_(mb^n!ylJAdxy*HwV!S(C z=EP>cDt(9Mu$SEJnuQDkvhY!qd_-`Y;~Riet)Xg_2FdY(5Tchm z@&nQbHZ)Mt4g;EUOJn>FgkHw;o!Z1{{z{-c!ge(uW6de(6@NT?M>?@|0o7!Artajx zK4ByPV63>1aNSC0wd=9u-D+!q$_(%EfZ_Y=x^<^)7Pp)BPIg8uJIV49qSGs7OnB zS8{NNXRpDrzy&({14vHp&`vD*jJlZb7h>-Dj5DvdJJbg)U{IVG=oFpf)Pbqn=abY0 zRJnj=1(d4x(_DZo!Ip^CGDo`r>8Gr2)a>U1MDLfNk!C${0V1-l(5-LUTC^^?LO*i> zT1%D`Da)HSpw~rQ#AZ(I36RNIR=|M1^c17|ovhzCwbu!FGMVqVAjv$5y(9_kIvyl^ z)g?UBxB6-|uRKm7m|`p60zj7ep%NZ=mW~0DsaB=WwV5C~D#{GCIc`_|=4!#>I?QZ% zUC74Kzs1_=WmvEM3|v`bZrxwJE+Zzis+C`^2C9)xp^4|tN1d2WsoUMTn8Nw^WL`b1 zo{9w6>RF;CdW)@|)t|oR3ly0pBMu&#D#=-z_I!w-@UWyJX^$WzXNeOw&qul8z%?Z1 z-6K@MqmNLBTJ175yPAoYD$Jv&{UCPW%y%}_rm#I{-l)P0d@66pfF4;(gqWhtzy8_| z%xLQIFDT|}FLjAoeX_b>mSWnzCalv6+LeDVa{7!VrND2M0_nnp-Syifsct_F#%_O= zUnPIp)9FaN;`u9rIp)nyiVT=rh+(-Y-GC}%1L9_`_u|i08H0-``cM_U5JP^;9(>Q% z<p*aAL}{Cjf}w+Y<9&`KXcjm)M;9qc5>M`u13z= z;s=TegTJ(D^izdKhzTW7$lZw-2b*!v*t1B;{9oNO>b!l2s-(lu;X_Y!G@^mhE4?3J zN-Mk=&cj~DM~vYz;D*zBb7U5JW`4kKDD0ibv4{}`%Rb7EcrE5Lf~k*2!%35e`BsHj;83+L&ZKIZzs28oS@J3;qVpkC^0-i^x zS!LV?*q1oEQ_>p=RG*UeEp3dQJU~VGr+UT`NucZ^<^#O>y`Yg`+)GGTh9zd(@is{m zh;232a)((s1lZ&qRZF_A8QrSvSA3$ntL%xUYiF3g#77GP`&kmJDnL5^J7`U@?}CL88AwAgRauPB^uEWP2hPX092 zhA<9vQiTuO&i|!m^dVz7y&_t6S?P7_G7ziXX8S)_#IPY-Yfc#bi(p(}!B_0?jTj#TJp&%^cJcMaqR`{ zzd&5iJ>?gO>ywxLoVdP^XdMvOUlHGxxIVGp|4dv1`O-<1-rMZT>e3B*iEcdst%NyX z0cDDoRKwZ(5&I4n6~I65Lw?+enYdnuxVV);9E!*w-`5AbxR-34A8syqK=$?tm92kv z@q#4z%a`tpl->a?`6jgF#h@xGxQFmz6&rwy&L|S_-PqxL134DJN8{Yho?fczC2@ zJo^D1O=k%hvjr|tl_Q80RH;#Q*5j9;S#uBmmE>qm)ylb+SX{Y*S3^n8s>M#kdJ53V zhly%E3uzHgQ$Ek`F|j{Nie@pI#}d*po_m3D*^_Qy)GoWmAGLOMB`}$<_FfRW@k&a6^lF};s7dzhp)!dD3=?HiU)~Zy7hj#-TZW6?_5^BKo~vy zrB1@=R+Cu6?gSW}?9O^HGU}aGO#hU_mwdjb$fe!aw6^-AnG3e>*cxrt3uV$Db|{xd zfehn8Dfc-z+}};G`lIXwdlH2Ox*Lm*g(r&Aa34pxRypWJ5Ahx^+{<=C4HQxJ-a@?s zNF}?9eb%Ey75fmmx*b48=1i&w^8QHA*1(qgldo1+X$Qr!049Yu2%QtL;|9IfxQU(A z97fS^M6>@|Xlb@+hdU(ONj$Ln%|5a?E$F-{hlxCzo4`9ZYMfNz&Bd%G!&P1C(t5TO z?EZOW>hU>r4O<)7QJ8Xe)CYWlc?K3!H|H~=x4ljzgsxoB;E!KL>_!pZPXmvwD*~Sm zd|Luc5MN4sr5rS@HvfD_vRMpg`ib-bQ(p6ak`Y$9Z=X^tCh!&Wt5q8CAoKoY2HEV~ z=sni=*sP-dV2hI3#&Q+&-L#{W{Z(_w>dx7>AEDKr-flIQ`x&qq$rL~KU|=6XjMaNr zrWP%*?Otn!C7t$l+Nez8)f8q9A+h%p^&RPW*1vTD_vuW1+ul}NF;Rgk2d#NPC2S@_ zcW%~Kq;7AaI`bj+4AxR-OeSSQDHoB_)^&`Z6wU9TF7^E;Q(rQu5Ah_Z??Z1!i^+C@`-q{T*l9C`npz`Ka(@Pvh1rVYcfUNbr3~1 zS+~_e(>Lr#P}~O1>(@Zpti2@xb7Or-cb+fuf96}$bS%ex?(5)jL{t+?v}|z=>H$CQ z4yhTx4W}bA0H0`YS;8XOT6tH(0wo<|#qt5~C+6Ur@bhHNy5TC{nO z8MgS6|07ZY`a-F;pHBK49_v#xtjlp(gn68|UTfCvE7g?~U18vBAHphu?bfTwtX*Q( zj{`;nVj`V4=^(nY_77|`&R){ziVn-t1Hwd0gs!od5CEIDqx)Fb3{WI2hbz&*jK()X zTQP-NDeTdH^`z5cVi%DsueCR;cY-GaT<05Tg{E0pBDmPPCsQx_$Y-na%;pXu7Tgpr*(Fp%CecQtiKYUauAwiL= zJ3=#RdBI99>{&bV+H~QS6e?ksfv85=fdw=v24JuLMR?#+X9@ayThmHR*q5SyW`q2R znY99P{HBT=>xi`Ri_mRn6H+;Tb!E;ni~nJ7rbb)K*Q?|SEgGCNgTh7lLW_oVi-Z=f zCoFrwhN$=Qi~ z_lb|X=diPfrj^cVRmbd^>6l1aYbbFgOr<(wJWrw96s~&u2K`Xi;#}t{|He%IGSmJ7 zOk135JQrP%9a?l{x6q-!z86I~bzd`71L9@ZwjST+bmw00XpO1F3~!yl40NohO>&?L5N*dHSUIDq2_6 zwpF+-&L_AM`|90r4jg%z#<7X2jpK<>lybXd1AyQ|rO`|xYN;ZjW`eySkyyJ1r+O_p z(%nyKepSY_xL<(o=pN4vuM%dyTi4TDEA4L9hRxx8yd#E^vX@D(wis8DZfRSm@oDOl zUagN8ZCCsfp#6XW5COqL3BbPqXy|_g^v?mH3s6y6J7g;uA1e(B5uQ1#aKZw_Qdhd$_)PgjrQzxl@{AiIA2Gz?z5(RF-`w-?8vVhp_c- z6=0&2;!bw!mElh8^{#T5cADAbuEV5K)DT>FyJn`bAfcZMB@dsyKG8>KxY<=Q;VxA}rEEfjK_?qkX z0`s3lsoTK2-j(=zzL-E~saQaXnq;x|{VTi*YpKW)C`@I|4Oz}oQCbL03Hl`J`((wr z=ug%;#EWzMnEr4#`{LkE_A4%2Y0NWZb8&~nykRcR3-^g&H^@~1+T#GDi%bpc9m&eN z#nFcj%WuDkUz~Y|t*74M*08QW6n8OeAcjkSL&^vY>&`t=)*(M{vS9xM{qjq3G!R5V zE>@xk_Hy=jUHim_*Z1V}p7MfrYW(pY86tUg?+OYiaDOy?SJ|qipK+ zukO5XL20jVc_IG<=5sx~iXA85DJ5)dESS}NaKNMmthXI}^C_15KG0Q6!)d+S7A<^T zoZ&ii`X`zrT3SKvk{()e<~e&^tOVst)!K{K&=(*7zN0TjyCbMzvaHC}E2UHW_~+Yb zoQnGAt`wD6QF8&;KR|KRW3;^RyML*MR`VbxFdB$*nT@R!cnB481$26a`XydLNF^;j z7G_B;)#2S@!eX{@c1zRTcXFn2aQ`aIXQWCus&Q*f&Bv~B7NT=HAnME>Nna7>Sk-U( zEk<1-PK~B+og1ht_NnwPE|TlDRMls(FoBL!gT`)Mp+cjSI$z(3cV?y`}*S zk|q0+YzE2HQRc@%x^H;uhkg&B*Dq#gH*blUd6xsp?&RlC{i4ZEc1QPL>_?z^?vBKD z;b+!O810=y{nEx@V;B8iFU3Shzp|>5BC`iIMh8ynADXdQq~8bay=Q+m0Bz5>0eDOl zaj6}EA;AD}a!u!RgCRa}s2k!zO8Sd~k}A9csQfWO9Mm9~S+CGX>h|L+ybrqe_;VrG z<2kO!FC=9+&CSLa(Btu+_4o}Kf0}_R%??DS$Me>A?(u#0C)pk(vpt>+%dEuqt$BaR z&zk@FBG>%KL6cv=KM}r;p7)Ewx=2X6>U1?)(zB5>k3&HTDb z?VSoyrT7&li}ez+iiX))!>Yd7epl@yqEwv+^_jjxvphT&lR;-@{PJv+9#01i{MXB< z@E>$B3l;OXF66@5i%I_~E!f%l{Pf5;H+Jr7341ce0P|d2&C@iWDVT;7#m2`~ibt*ZHzbxcLYUPq!cA8~FTlPd->!Y3~}d;B&4jIo|&mh9yyZzi{)ZB&VEt zxG-dOxC`}Sy70_HxNQbngTDnVPq_{RFa8w3ggD89fUe40-PMQkMer`80iuS#tNg#o z{AhY@XipCksNR&Wv&24qtx;;U zZUTs=ru6HU_$fDZ%N8P2(e2?S)f(St8~CkQyN1mEdGyB0qu;GO`r~v9QduK$ zkmA8G8-{&oB^{R9E4M1u(84S0VL^UHvZ<7;eyoDHtEZ{FYfvA8VwoU7juaH3-|XF> z!@+1nQP11b!=XXn$Go1|q%X;&SE;20P3#&}PEc*vpcp~*nIKzHwJIua_*pHL1tp}e z$)r{_6DyLjxt$tQ%lG_F-}QVi@V_a2MuGaoRv?3YnsK`V)QpOpmxp>Yx~V5BlI3$c z%9vd+mlPD!+9_zh3tHbPXn_lY<+eRzD_cmIt!(qpDqGX3vX+YUtN1KL#?S>a<+=>I z?A7aUL~ND;TxzfK*s_muqelmw9!s4KUr<@F3H;kHs80c#6|lJjrpf}NfB+M0=Wfv= zu-}%ScWySC*2?|XSEO6xbG;FzBtEIFpDb(Asc<@6wmLLRQaQo0A_Bki(em5-J!bmtn&TLIs11csZ-cdYKLtFHc1|!8RK5ol9Fb=f-lDb6YQ^joU@A4h{(pBTcM1xL?wZk@$ z7wS+usBWi**oxCDfj+hvX!*D0Oxv9~EwN-zI<6o`Elc4cB4+P^sHq*dMhglpq%9jxLhm5hqyARL8Wn7 z(;WMRxz{icq8T3-D0;phtz}5bTJ)sYBN0xNlE!huNuRZ30zC3;CJi5vj}`m0{Zw!k zsMe82lgOn})Oxmgyb$WzoMih~iwv1%J;c+`Jw5VcwfBLqp0`3#!0wXJDr3)+jXjywgx|VQaY9I8~ zRedb!M<)k`hM!R=Htl@rF``i-n!&Tj>2g=|Dx$B(AM$=-Iw8MyCsLXV3U zOn2nQSn6?^&aJi%Is`(D(LeS@nKAe57e?I5g}I;zRF=S0i3-4Z8q`@jkd%?nc@bq= zUy`&aNq!D=d98~b+p18_VmaKt`elVm%qy`Ox%Bi?c00UpdYx?vZr>ke~{97D>-HB^r~6o4 zvw~kH1Jg`%r_(gEKA`M=!br}+*)2D$BCHpxuyuo6>3w9L!@W3&-DHu_S!~pp)ek!n zVLGASp8^rpnpjFiy+Vn7{T&856Lq??HWC;{rV5*wi(D*CN4lHf>tB$t;`Du~!b7wl zatT4u(R~v}fDyL|e+*Iq;>M1LuYC`#SG$^*Yuyz*2Tf3i?lmpXN->QvPkav>u-&Paw|#)usj`?*u~VYKNFF8?v$>`=p#Hva(f6CFLl zvv;1NCod^DzBGP)1krXVt7uc}D9{|qgrdWqr_?0nFlFs;9Z?)gVjWTRvYAlcUfome zmGX9=t`mWrHpskSVz~HTdpvMU0RKzVA@P9l{LQIQ^-% znUQf^!?*T19Unz97pdxSv8R!kfuQmH%*z+LR%S#ov0dJ|G`1?MZ4X{h*o=sB*dsJQ ztElaW*pGWgyM$iJDiT}1cj~wxt0=K{YPKz$_J$HG!vk#D(;p{8b*2ql9UkDuX~D<# z?0}mZg>`Hhnr^1io??I(AVa!;g}4K91M3Dgl9NP;2}^z~J_5QV+ypb3kzq626B61; zrU>8_2(Ppnog^-5S7f>@Tgo|^d=*3D5a)zfvZfG`c2L@jO7*@Mi_e7^@5B^~Pd=L2bbtwLFJ<5u3< z1%H9!SzylZ>1v5rQ5cF3N<0Sp&w0{FfGGpfKXndxXaByJ~+h{b;mXp z<&FD?dq9cFg2Ix*xe5dx; z1BA9gSTVPlNFOWNo#rc?o8~-gDs^QV{rzb<8b{YZ2d=ZDZLN4werPdY9c{DzE}it< zXGl7Pq<)a;%DcB&bZwpv1S$a{p9tR|mY>E4hUII=xUHnR(-6zbwp6 z-;`hr3CiPB3bo&Ul#c856BF?d;?hCi>>}uKfIDSb=h*A(UJ*XP%+~=lzf63QbCa00yUGmt#b-Ad@|R8N^*j7Q5wvDGW=SV zmfNAU9qccrvkh|WU45z?PTjPurGRl!h&{ITiRJzlYp$;m^RiofJ6AGRuqb%qw(oZS z1-OS@m~hsYwd^Ly+ODkiWo>iB?v;6y0Nd7n?}C7kuGL?((CpR31tzf>MVa*%;Tdde z{YACWvr*AnQWhVYg96t=@m?r!l`QjhwxqvR>+@vN-?AEBd1m(Wa$t7Td@ovyaX&C| zQA2%nP1|VPq2h(3ydgqy$Uaywcq7q@;zFd7(&1dtRs<{!uL` zphm47^Z1LYdIarXf?&mCaptL^IV!hc26hjRs!vb^O%b_h~?Fan-vsHQzgX7(P7tcD)cCx&&zGThi z;lQ<9^t18bC4tZ1)z2HP!d91;1g`y15&vu#aWfHGCvzhHGUGxoCQIWQKPSkbFGT}! zK5M9CDL+=jG5RRyHjiq$3oJ8Ccyzvb?HYH*YArBdvJ_ru1B}lIa*io^6p_tFu|i_c znjGU)xskxv0|l$hBVT8$M;rOyOheAmsPCkzoqUYsTxvwNLOGTy?`*-vt=?icbfB{!h$ z$)IpnSzbDcfV;p zIaKQvBymSRb|;LzgF;@Ca9NOq)PlNvL9iqn0%`GC0&#)-kFXJHuYbOoG>P0_ve~TPf$I42Z_Ytr>rN+v~=AVlLkJl1S*Im zd1l++IV;)Uj|AXVKph2`w}}vo`Qghlhlz6Az0GfKB|PHAg~xOr)7XYI2N}>t#szk> zmPb2w(_zZgehXughf`m4(&X0$U4mIMe}it&HK{+E#l79w9-*>QxctnXw5F6=i^mSs z1&O&`a=T^}j}2QUYcJmYq~<8wGPeb=8M2ykcahin8L}RSOlCSo=p_+KB>9FU#bbkk zx@CNay(vZb<|rAkqa-l2$!uDtZ4!}Nse0?R`Sd>;H77M3HmB{p9iOcHqRUn5#t+yM z>D9ZVG*zLc@JlmkemK<#?2n?$BQqi7tQChK^(#;?T6`ab^V0PX$_198ag-A0eAL zi=@~^#a_-14fr51`$p);)@Nw1cWqGuHCQ;=Z)`k|6ROY3H=|bTzyL{-wPu!r zDx{q}I>&HQ$d=t_wCfA+{A@HLO}X6GT1&Ep zSpo?hj>+l!ki|0n2+X-rfl!(?I>nl(vM_j)s$l`|mY?fj`j$ZM7V<_EVa}B_efyH2 zcBXF&Q}%9?b(q=F-tCZYoV}Y@(g-IR?;e!&2@5uqp~CYo+iutF)iCZN&8zpZjWuHy z$q1!&72^eFZp70Ks@?uNc)=dHg}j$En&x8`fYhqGA_KHM5-1DQX`S7+nBnNT*>Zbv zbJb0L;fdRA;TMrzIhQfNHYW~~87Q-rXgTJIT!&SYOgtr4MpxTb&nCJJco`0r2Ebc{ zBgKR~2F~2@R{;)1$Ooadd7EGsp%kVem-}wf^%Iiai04K`=?(VtOi1JwFm!B9+M9FA zA1x`q%wj zMsUQjX}Z+bKu(5mN+blizLyT{kJr{J3gP&bO6icS?YCx0#Wb7S{vrj0%ff-WPiP8; zTZJzrcxi72*CI1Gyai6)W|dpbACBlah^o^c$V@Jt!m9qQY*p7kp}uO@z$Er=-0lIe#(j?T!C4*~fId+Z$K^H+$n< z_Q2#<_Qr!VMEC7xZ~Wr&Uz^0SZY|=Jz43-u)x8KOJ{uJZjd0&5jz+LF!>l!13GQ&k zH}XcGcLG~CD3jNvDBTB%u$_0_QtvmdjTf9OlsgiXdrlJNP9>-v%1vS1PU=wyjJx3A zd8$!H##^v^!N_=Ib_Cm!`H$q^LWDVyb3=RnRyPOi7V^r=!0r*Iw<3OUR~EV@u0RfX z7G1AIOeJ(p37MPCY8Ha<+1cd8;y4K16lDG^E_^yan^*4{i%YV+CcP8uPfaVhtq_11f+B>cK;LHtrlfqu&i{jwl3tAuu!(i)cL zssG~o`6S{L4%}?>6zSEsHfGzlCG>WfRz>C|a|qSqTpU(ZxE3yKfu(_!ve6cllSbHZ z#H1EJ_K+wts6;i=6G+_>O8}$)^=I(o1<9_OhZnI5eL5J&PjB8~HOz|Y_u!t9u%(oD zY*yxEwFj-G@E)2{uPOFXo-lkeyHLD&>QBN^4E=t|VDKl&xgSpR=@Z&?UY==*;{IA7s{-cjiF9)BdyHcXkUm#99z(nCN&ASz{rxWEX(Oo1; z2Tjc&s7_^iL+Fq7ipvnz@M*1r#o0_xo)nB(xFeA~J>GV?9R4|Amwyc{8sQcp1>u(9 zhZZdgYxv%1Q({>wo6(Pz&s+d**{V!lm-nvy|H6+KLnVe$@P>7JhaN?MMai|F5Avhw zPvjo?6P35ekM20#{M7Vo6uCb_U+n-wkxvlc5k*e@;D14p?mR{v5JyP|4oY|6Q9@9n z;X0SV1(@KxhhGNVnEyL46Y7ayw|t5(EQ;dxxm8AtqJ1HJ<+N7#*qqC`funvuQ{l`( zBhQdGvq+?xaEx{Ee^?-PR~PAg>D*LEt!_S_Qu><9AV}#;(`ipot|OwX{xA8O6L&d4 zAU0Te2mWmHqEC5>@*;9S%jPu^PPc1`v)OwSC)@7)IEcF6RMCc)IKYGJl zxJ@2jcB;;*;>v@ohgp4uo|Fd5n#kRo7jGyE46YH{S{o@|Tdg`III?>YaHR1Q9PND1 z!jT4;?R5-5#H!o$M^%qwpk`CB<7Z&^KcV7_ivn|pFmRBr)tsP<9Usp7)k0i+PvE1Z^%kvR!m@6Qcz0;y z5WQR_>94@gJo7D3WQ+NyI>9#4Z@DAj19R38f>W}-oEXpNmGonHUEp3Tc@-oRTEXjL z_d2|7yj=T@(aNr*Cl%ph2R#H14+qNJN4VG(Lx6iJcI1I@_L#uA?t_dfG)x7Rfpgu5 z#z$i%Z`L!50<-^xfV3@-y0rNW7dElY2{V$aAMoWl#`f5Z-X@=&)d$#F?)#%Z%SZ77 z+tbUQIlX3j38r=mGMfRNH0qh#UHH4v?D3$m&wHA|DShOAB!v&tX>Yb^SDSa_rU&hT zi>*7qBp$CO*1SZNpTR7;wZk@AMT@J4x$ymv5ofW(72QQ3V%ikN6$8#^Iw$Y(QenSxOz03bs{C`UP@ciLyS%-WK`Ni{u|G5uU*Ji6U4Bbtd zHyAph=^(rfvbs@6HQ1E zBFO`_-~5jgGjPAsrn1lck)m%VNd7RAJ71mMznn{q#r7QxD94|tq zL4E)YVw!X}3u;#<@Z}CDH(d-v)r(Z_bB#U&e5Q6j_u}Ml625V+?P2fnts81xi-qmR z;Y9~lA0iWvB7sQ|>4p&A1>ZUIAuVKIv6_+2Wg^TA_p5^>1z%SSXB5H051di1^M1&} zpTdD>vryhh>i%D^JoCu|-5sCVc>vYkL^S!^I4UHI$d_c|hzNzzwt{5PWA~CjVuLuD zp#MK)`<|Sv|ICi}Q*fk&LJNuy>&<5?5}Z$tkAg(33ifATx$m;%_YU_x(Elz0dn*0$ z{`VihbKg3J{qYNNLfyZUptfNH@|Q&Jo!=*$;jXPni=Z^RIXaI^`tJ;~XJ2u-PjtXC zMBS4>?M(}nQ3T*b0GrQYexR%3pEXSPPyr$c{|WFs?N`g>N0@*>H?f{emMOD znFr}ihK=iY{}ix}K_(2=kfI2u)5yaZ-h#Gw-25l+i%1&Rn|E*4I`-ykOOeVJi?7gp zK390F+V}l8dNo=Ov=NsA^`2fNY4Z=f)BTf{gtfH7EAJ9^F}lQ|w{bf3Ru!+Y)ehWq zxWo)KoB^%DeHZ`E_MI>~tG4@HlFx0DGi{RoBuQEV_3hYLhh&RgW3%w58Q86%^)Y#x zLrnyCzed1h7wz2^LN>3a1PD!Y;IIZv|}?aupr&L zkuKuBr9*?lKn|e0-kl$O%J{Y6Fx#eu^dpVn?lpp`zK<8v#-6qVf99^eGU{WJkeg}u zXa!koaC4@8PfZ{~P8~*8wBwM|<8A%2*gI?NXqQ3)rTtxwFm|ZV0aQZ`o6(|3FEziN8zv=OR!Ebdj&`0COJ23I;VC_udU{%w1Avc!7Fv zGwGVF<4Y=IPS{mm3G8EiV{#gXRK6&J>#Y|~W~^TRGiF|h!N`LhFsL;>w>qiv;2-<42zz9W{I|lM$9M;p#s99Q6dxvR zZO)vdJ<}mCtTwKrHT8S84feI{%*A};$|1S-^2kC1^UM`7zk%-p(Z4nUyO|37Qq94( zgKUGzynSrmz?{oS^c&Vo=Mao9i)wJQZIX;6Fm`K0M7N|pQMlpwhyY*L=n(m|%{Tn2gWBeY7Tvn{;1jCY4# z&LlCY`&k~Lh6xtt-{s&n;?1=rweO}>D$v$7X{7#d3OD~sh{bT@b?@#2l1% z@$#WY>lFs8+W9Z9Xz$eo*TK0jvk38CZlaVLn^~9<#dd875|Es++5GfMBaEKkJF;bq z)tvCr&k*V5123nmO&BC`eE=ppj?9lDOQB-F1P&mV*r-ez6W_?CJ@97p+YhN&iY}+ z2;rr^qmE-zZ?w*G%gg&E~lk#p_f3b;D$jwNeSlrmKR7 z=?v19i;&PyXVl`i$OKkIi8X3B=gp9hIM+ll^f(BeAe`V)>ZG4AD7L{AkdOp}BwLN= zK12m=N74T7IW*CdwNkVmcZWU8K18H@kYtNU=C@VOfK03CuOZ9P-`1)2mQ|o?#ooe{O&eXMESUNGLE4TP*#nr5^ zMnNn5YKFxa_C8R1D@nWK%G1aAa8|N2Hm!)uEFfzkZoiEVM!B$4loQ%PR_ma;pWqG6 zJ*fo%acJzg+jO8Z0izT|RylC2x)Zkhe9|Cvk>Z^4>J0#L*_Z=A8zThQs7T5TyV46~ z9#|k|KM&Cuoa!p1G56i$q}DgHnI^$nBH=tBFM`&QU`(fSRwYRE1v)hi4%$&X*{5W) zxw#?*>$iSrM{r3$!Ftq=;PI`Z%`B{A{xE?8q?yC%N&}_OrvTi>&8@NJ;yG>~yv7}P zzScqcd>~-Bh4}JXGjg~KlhO)3L?_ADd1;iYy*Zs|lArM*djrqh9oS*o;tN{L*(^of z%b-zrcQRD(4^zuhRSIQ?gJUJf2@qJ22XtXOq9`KKEDMhK{Qaj?AvT zj;rpXZ!Hte{1JIItM2<-ZF@6VNOm1oneWcjn5S6b(~MppT&U7pRVOn-`&G|wHFxlxobS`a66A!v(uZAq_k z!&terN8gabnY?uzM3wu$Z{aQn(V_ED!DV|-eJ;LxW2v{UHJb~jOTDvd%Dt7P-lo=L z-}oubW!wE;gdx_!NME-Mcuo{i_36Ijbo1&DRvg^!hJcf8|C-FCTYgN`uTbiyx)maY zX?My?aV+Wf-=`;-GD*}@Or?~JOW0<-ErB@~s>AVV2w;(}mh%yNPInGuRR0bznpMOr zbG4^XxxRz$duaBwyy&3{i1-0H(*n`%;o|yJ_zu*06p-vgw(Ub;&i*u#92aNvvp@es zbJ9EL)!($IR{$yPf49Z~vedpif+T3v*nPX4cQesO?+F8;Mncd)IK|XHUUS0rPpKt@ zsDUwijY3BCK2#g4Ab>6n?G5yuN5Hwg1*HJidUMmQ4joD7+~-0}>Gy6ktRzg>pM*(L zV8homqjiB=IkY!bspO`ZMvt@^tq1Z;`CXbo;|zwsSSZ1~Jiy(=0n>h32YI4e0`|3c zS+HIXsqxp#1iM}eX>nhCuln0o{a5rdlU}O#6VtulN_cWYzEqkIz4r65$~QxpvVddfZk2g+Me9(ssH zgNQwV(Az5LPv8QnpYc^6ag*Ks9ivS^1S?Z6m@kQeMnbsm6=EkVSj93`@{O`>=8-k&8ge26KRit-f27q17 z(rPL+vk=~@s-)?G9pE(ni9M%zr$t+;i<2w&9F7T~j3COA5Wiq9^Sq;8{jhw$dE&dD znO%!8?Cjb?cuS6W3KO-PPlxZA_H|SwZq}4c5##GLFF53yg6cF^TG@%|Sb*AVuXf6_ z!a8exW`;`BI;|k@WK!o>YoMwF$i~npki62C^ebKYYDl_U<=#J8KYH%l-JTMlpB*y$ z=YhKO0$2h7UHwfrsDA6%Q&Zuj25(I6Sih#Z5aHVH{5d2qvd@Tl=qp)e?lkwE-l%pYkSeP;W@4rckDU3wotd zgis?|%2q3PrB&bs#&2p-@{+feg2-(IML#rCk(~-TNf{0`iz4a5Z4{*W0&D5RE#X_| zewJb1j0+3=+>xiQPU(EOi03|82k=dsCsF&zqK;Jb;Yljmd&};{bw~k|RCEF7ylt2( z3}L@%F;^m*Z42njirv5;-@Ep$5Q zYz>gP;%?oad260s_9Lz%yud5r5xtHZ-ObeNk?VR}fo=M;!8|@sHo0qB|6^0%>R6i* z*VSKiojI438u^ci;!bmlbfgfmCD)mg{MgmR>gMuv-%o_M5lt1C3r#fvy};|#fBJ6z ziriZz-m1#nSV0Lx#Wq3)<&X_?f4)$Q8`F|z+t9ukgPxnuv}v54nIkZ6F*kAIpz?la z8$V*E!bUA|VLI(%n%E6TV0P7FPT~#=={_m6e$aR`jg!pb!-`r`NBhLi+LJnd{+0u78^PNGAd^QZ?OIAEC*=BMu_9oigLYz*!AUTua?-C9YcY-eDaP5R$j%dD67XmR*vDS;)-+ewW>IB^IlK@nMtjd)^_A`T**d2O61U0mmoe>Xtz17eC1(E17DlI~ z7WyHXez8?*flLq%=E$}|b^P@zx0r9CM%|e==>hJcvgBT>q)S!O9F^oE&>2$J-3l7- z7bF)6QY*4an6qw++}b|DhTmdGenKs4${Jj1oo+A_Z~~}d*o!onW4NqI0^}2%9BMDf zqy?#h{Z6>F#$4$-u~yBZyd}4}^5lReDF%P!+IA$8YhH2;9<$k_f!$6Y5O6e70LO0o zO9A-E5Cz22R~K`{;LX)(oewme9XKM+Hk{44$c-0o>>#2stK?6{lFsF40?X41yv_T@1S;;JC*-LaJz3mX}-hWGK&iYaamV@dS zhjtKfOJ(3&ug&`@t)IxS8})R}@joR7Y@Wnr%=YF-^R&Lrq@H|d2s=EY@122IZ#zdW z%|e@I@{soT|7d*j{6a9i_-ca29d1a|C`pds+NwCYdJ-?2vs_K6#<-UB*Z1bh!Sr}X z{3yozew7Ed0kvW8{XY(_=c=JBgFXk%lJRY*bMoIofc_8Nk zxj)b}>W8+^$^-6ib9M7+=<_{5e_U@^W9d`6?cZBxG7 zG`vGEhqwdf>Ppg@Q* zHVBJVyjY%}41WY7(Fn~mUwr;^f+O2_Y$I^Yjf_j}!zx5X;=_V|0ghdGv6Zy@%lQO} z+QphXwukd@Tt#9XVC99q?B_9PWpJ8XbVO@w^3g+Xxrz)@q`jE-c@*Q4 zIxqvCQsR^fMMvqAB^7sECQjLrP{ezk$NF5pntx z&;6fQEEGI}Ek~%KM~*sr?#9&d&~4gK8A_>SXF_E2^`7qW-Ch3b*;v=#N+?t8rIA@Gtf zaH-b9;eydB9D{6%zv2=WL#Md!dV^X23RD$pu~tn{ry!uNXa6qw=o&T9=?_SKz&iBh z{Nxz{(FU_f`K+NTXP)Q_@{TgrrcnK!rf5%g&BnGT`fb;AgKcwfSz# zN)U!cJKzNEp3Eg0P-f${ol@GWK7hzV;Ng@|eXme`pnh0({n_1G$AZ6Y0m(v3XD|Wu zvbDKgc|F^exA1FQUUZp{AQwK3>M2*NSl7s{Jt)r`oUNu0X85F2{S)JrBrN==&u>i6 z&j~&E+|<+mAg?)Fyj>;U>#<$k0<*OpHavkJO_`5o;!g;-EQ9yp=j=U8W2?KZ{3tut z^nE7YYnBiGkq`H_Gwhzf5E9PBOndp+iB#mzski@xGda#$K6txLwo=JZ?fnjP-fj2}iEGnR0dx9J}4*I3eLV@O%L zmGpUC>C=gGIwtPYE^+3s5_j#GI6&eEmov=yfsu?4O@uR7$98rN%yV+>+;fZMWOeqM zX22_RUE(A4uItLJz5R~vwQ_5Y|C+5vyYBC46WAf#!zQq=U2FpTn&l5?rcJm}g?6?H z?Q18SP_LQc%#Fe`5v-|U(9G@|>lFi8qpLuq_oUIGb1(E@=`m_RzA%3QxqBL#;+b!;t>AfBD zlZL2J#Nxj)hgNtks>ctUnF>s;BH>p&$kUu_bjE&ctnn96>69vv!u8O@XhK|xG%(a~ zNN*v~9_v#GG~$KanK;63YN`olROg$&#dd)qGN&9)_LE)qJ~n$-o4sXSDtj7LrPvQh=Q0>4@8PVOzX>z6XW-c`b9lMDerQ%PMa~F&??=2J+VKmNT^Wg=+l9TdiiGF~ciST} zZuRrhfQV#L**idK;$;~u#iw*0KpEVh6F)cM+uPSp?Zl*)c8YGNrhBhbO&HkOCLK(mmutcy!J0{4$ zDD6$)-ZpO6>uHpI;JQFu>jeN7$&UaOhVPYhNuelN7KISgPmfx} zR3*Yi-UN0tA!|RLv%Xv^p!K@kRpbw;(_+If9-}G@Vn-GF={xhtA$C+Dn`T_UJHK05 z8ox!U8Q-5riQW_$HQ=1=XvoP52Mo!<11asE7#T36cNDTqiaG;^X3Nt=U4E?^F<@v; zbYFeVcVE2&b?bSvf36F(?1h%wprLaF zllVVB&7Z)M3~5q?ye%QCPR&e$r+UM$(OdwmeBtxsDLuL;q5TO>O9q#)h%d5-WrqLVHoAD&2JqFzDGwU0P5B%n-WIX09y@ZT;@q6k1}Owc8R3_#MxLzx#&c>*aLL2NcAO z#X}0Kd$8$_V9?C`t2nVZRx9@p5yoFHb44`}Urv1cC4Lb}rAU3*OjoLaGzrazqn(`u zErB%9TxpIUY0(N!#FOW;DM+p!U*g>&HT*RE_MkcmL$_aPZG-)_Vdh=X?&9HXreTyS z$~}q1^-0%(zDCkN$e3);EZ&nSrQ~>lrnA<6>=6r=0yXJUOY128XZZumkH)4RoFRiv zG zsbm95CPkPxtJ%3K4(0-zhV8+^&e1N>dd5__s|qg|fYOwL@&W+WM$$wdp^fxL6l?3!_w1^`%bxfz}JtDPgeeJ z`;Jp8=<3D3eeM?aQq|?miOjpm4I~798%RTq#r8Lzdz2LWMQ)ouR|rC0@Q)5{d>I6| zBt)B(qCm%f=9xpCC|Opp$z8LIt)!N3NdRh+Mf;f?);{cH<%(XIjKrVwr{J>&2228p ziGFw)N>Yy;At_`^tKDzrly@Z|TWgk|+P?9_2{n@`qyxE*L;j_wue(HR2`|JHb7kWuOxTR1LR1M`~5P>%F@&WpTw^%`u+ zqNO5$*66X4J#SW-@!StMTw{3OMvjL}57Tb^AHN`;vegNv?SPu1aTe|6n-eeAsGtcH z6MUH9c#DS)^asl1kggy4DK=N@V^qQ6+4Zwl1l0oshEWNO@72!9bCCuhJ?dGsq@BPx zm!ctfC-|Te-P0VY8)+)d!90?{k>^_fBZo>jTC}bI2M4r1T+G>%UH7NBUVZXvnV%PDrsNtf8l^cl(IH#d9HVoww1P8OC%rK?as&$iscgdeet| zAbXcdR(l?TtaYZRQohBf=}Lm+i1ffTg!%jzDhi>7i|vR!@w~vvQ`^GD4=?3Wy%#TP zRrL|xPz1qQ)d#}XNB7W$8r5703d%pStoW!weY&~po1goqEp)aW<|L&_w3LMglDuJ5-z^1QVe-{A)xoLtXTS9ifU$w+Qxbv zI>jv#{WRI!7hP`WsL*996PQ0WO9ylrOe!l8UxJa!_XaFe7 zd$}x7(rj8Nr;Njy2F98}K+|$VYV~Vp$uk#mMK+;U@ntV_E_HcLZBr>`SAXtJh0oL>nZ>VA91af>y#?B8LvoKWisID@N3Fp-^){ zx!2;Oc(73(t)u@3Y1&;M#ZpZai*U%jWOipCzs(|~>|@QzCs6^7=q`B+=wfv1#3Mvs zS+Cl5qs*YSU?Ih&_HW6n%#K2rwVTUY(0Up4Ulg@=i~H0zT_b40rDr8YCJa~`w9^l z<_C+3EOwVcki+~;wU6RS!!l=N&B1*vejkx8zlOf;8!?hl6D7Y8x;?6vu!@b3-EaDCyPxDI*0-+CKehpdAddr&O)=k%g!p5p zP2HLgfley?Q@voso29h@LXjC~#A20?)vrpsk5DBWXIHcpTTi4UnPP0_X?8+gC&&9g zXvr|%pV{%=WXJn%9n_9{IzLD?s87$-Nx;7>blUw?3;O66-SBTzFze3P;@ZMvu? zT55VxR6it=G;hY#NUSM4C9e#7Ly=GDY(|`@T}u)#aO)%{%#o^8b&nkNvpriGp*rR8 z6ys-^`=d>mrU^hCW2jDSeV%#fBGz)^WiGFaHT5p#dWFU5Mtv=9q*)|jsI-lyW8PHE z70SxwM(_u1|MB0jJs5_b&0Il`)$mpR8!+DI${c-u@v(qi!s)+Bz?yKc64 zs6-@F5gOI>N~gpiB$og`@FDL_7+9S)dFxZ1zI8j?f}aLSV17kH6+(PsPNmPx}_Net$$0!1p(!Ak527_MefwzXmo(Rz?^zJ zOjbc&%&y>ZDk~q9&?Y}kV{xth8` zL%=1_ec)u|Kp?Z(L}<4SR!CkS3WHkfCx;xzGblPQ$G@E|(U;i2c873{bp4U#i=eXj zvx>gN=w+ne8h>@Y)8XW;8k^c26iW8MKrv>a)C3{JPIU^?5k8rTSb*pHYl;eI7`k zi)^2lAFomLo3~|gvUxuJXy*@X)#cXwRG-0MyE^o_?GiP5i@EVHfTz1xR=aP+9!Acy_=rw-4V3u|L)xs8vB3sZZkMty^C1+=OQwoU5y6>IRuJbos#-3(|NoDHOt>8hOitJoi}3i2P}zry?=^Ey$^ zgA2`Gqga-RtD|}5gH&*l`L5ChSC>S*vy05?3zXyRLi4=GwT+iDZTDryV;Gq%h_*I<4VM2x@wrPh z9@sk*r=9fLV^YbFA;|P4WyrflOna$!r?y=#laJK1Iz*$3Y1w86bPRhuQ&A(8{aPEs zPFq$#o|Ab09&zvEeu?(?i=f;maD{}N$Wdswe0yJbeC*Wl?^kw)jr{%Vd6W~HwKeDP z&Ka{l4%Xq#eD77E-{);5xVaje#M(&aMy{Z>EQk6fwoF$xmU%SZ5e(pC+QMjC zl?1x#S2uMXBh-zGBv9=6r=Q4!z@Q&9=XB$$LP+K;8imAgDk3ro;bQN17)A3?j;^4> z1Ivt}DOYOrBAQ3)9D*^%5WEMUhVN$Vnb%9C*y0^O--6wJBZZ6Er9url;qu;6^lsNwfyKy)CiY3ibbDu9=464F;GDl90tCN=ROKUqp_$-Gn^5GVi5EeezgTiMm)wE zo1)8S=E*eOJGY9w3pnVPyrkzL*vQ&d+{=%dKwUo|Qjjpg(ytM3z9n?=dBbjVw3+4VJS5`1WZ&Abm}`Bd72hx>aEtCFpiM{m6%V80aPc!rJ>~aWsuS(` zFXw7nSTMKd^`PW(xt(1G9bF!#JYFV&Kgf!Po^`j)KRa7J3!P&-{hc569k>%$V&MU{ zj!A#gisHy3_haJQ`g3l2re7E8u$Q~49&lO19I#W{-!1ZWWq(#~%icq022^{ejq*(b zISk3Y->>v08*y%t$(NNjL(cew1L2*fC*Qo2*?xB6Q_G>ok8c{+FsM{Pu`4)bYj2HG)!-TN`<1STCXJa>d?Y{h9m?aLtE6wH{e`=zcPxvK8u)U{R}c_VRo6Zmt)Wpn*p4c)Kn^wB{RD5Vt9?^GWOm{pHhh zQvUqSQKEOb2cmGt^N@Y*le45k%9P$QJ+v;x!BPa8+k5)$CZ2YKruJ@!FYwR*GV^tf zZGmu{Pcb`w{C}(ep8s+6-)^7(z5adwkNU4v{a>+WExaV_k3F|kfL7+j_=t0ytTnoa zCD>Mnyr7l%d@G61o*~?kbgup^WMw{iHbrdL0XOxHj9Vv*_L`V5CSRcyRX*#SBwGAlz*3A#GwvMZ(ssT@18(wWhyXo3Ez2 zop{&zXH|c#E3qIOkR>{wdz5A;btSwn(3VK#9-!l1M`iXDMtwa8Dze$^n)OqnHB53E zF}6{g@oTmh5R1UI_NhuU(dKea^RSCneBsKCi_Ye1~ljq03P3^er!L&qy}%r_{9&idJkZqZ7z zL&qgHsO)OIR&@~Aju&!vNlbxXUi4I8Xf$22zQxMwpAu17|3pwtSOZ<-O*|MkPFU2l zAFeki-!G!!<+hWP#jGr2BF@c@?j!D^=T04jq4(PMM~xy>@W;G>s#nx1n?{PCO2^wV zUlVqxhb{H%mR8f znxi;qmlo64#d(_(xtYY`Ek=hRMJw5r;@ww1E-C#$cy#W2(;2OfGpI*>uCYi^IzB;R z!Zd_hNB4KBm2BDV*CZedV84Stm|K&+z7lGK#~<*cYjmwc!3|}7n#?7v z%t-vkPPGG$W}Bm3r?6z~O(y+#F_&sc603FV*7I61g(_j6NS_b=5;(R#OeN4-x0rTc zN_K{jx2OH7TZYr?VscY#Y87Yip&&n{%(uJ5RB{c=C7}2%Zbmd*O_}$+lbmglkfcz# za7_eR%T18no}s`Bv$3mxei6@o>m@tHV;|EHe*@*4$er}ChIn+1U~?qU3J~nA_b)6R zwmAZw;&UUjitG|OF%o}Du+88ka^GC4+`Fr1|1wZ#mPG&6MsL!s6le7mx~9$Ir#3KC z^lK}R*e{9dQg>A#*FtJZGUR_{q^*pzMNn$KKFdi?ga;?FAj_E-irf=f8zCD>tj}gr zVX}}%(93?%GXzmV^eAL-+@PUUw{wCnDU8aR!EpFxtvG1)TvT4Z~atNnfJ0&bNRilqVSS^j_tadApSRzqo`;2BZ>RAX@UezINYoQVaXKJK3raA`oD-tYP8Mqqp~BohxuCEY z#NI&+&DX`?^G_9$r?s3Td;eKgXqW(yV_lsQAqrkZ2pH9r2ot{doezv>z*>9g$B0{R_R61@avc=a{sM7D)C)VpNo;w|?hHbc! z!(mCEx~p^ETunx-hJ&eMR6nY@4zA1M9LvhZU$l)b^RjlDkA||Pw3vHN&}aI(7p~h^k<*xATPkEVSpD_lGbB7l2>SF61W8?um6A#W44fjPF*){nYTNSdU%c5C zrH=#k{%C>WwAfFbt52fBc|9yJRH8ErBy2WsmoN(J&B8t@NGO*&Ex_>)VjNB9({cY_ zZIO+hQ=tT65fvj5*GwS)peyS+0cwUeYF*FxnHP8Qw$g$_&OIUv0gu~7CNc|? zK>cY3#yl0?eP#XZR#yM+b};+dmARhrG-e)Y5efv4OO5AIF4kN_j4XNWva&)h78Z7f zKhOpsq?me7wp-46Gl-X;P6I#KF z>y!EqzJJOf>x-=SlC>1d8po9H4OU@xoLC*e#=V%FLFhkiA6?%6mO+c>j>I1W;NVC- zXf;L^s>HlBIkha;JWFfh-OEATp@y$4&2@>+V(E`<=LR!LHMv$grI+-10ykg`!uAn2 zUGHFL6`1!5qe0H#9x|R?JbU3T4&XB12qivddb*qi#*<3ny|tP*UWOqw;PQ?x#e%7L z?xhyA)<*&*8(~}F#$oJ9Sir6=6C-$WqaAbcb{W+We zO8zhN|C4K&`^+po7l~h;|2kN7EBU=?HP)TpGTuwPR$R?t&hcHD_Ytamlg^HUPG{E= z6)5O(<{CQ$&jKldoT?m#%lRG9K&bC1g^t>42Z5+yp6xe^yyGE_Higvf)-Tw9TxsRw4Z^X>x z{k+&HmBq7w6C!&^THj;C-s>;csZL6s-C!CW3Poto63GK;^2oQJm@ZS(#{7|0%B=^QTmigGjkbRt%9YD&c$F(R zP|)=2qPwZ+b*KZ&%qMHTH>1X0`P~wjeHRnQF{=DJYJbLg(20$crXiXO)J1Avxnd{HzIYoyL$g^JeV!Apd6lX@0Qf$)zz65o4)ln+z))D_ zMhl{*^mibNSQGaVZ-_2y)gA3X|APFbw1gLT>jZ77?u+9ZaMruMq-VH-0?W+^OE=tiL>L~rdS9GuSe6pY(3iOCAZSj@cII|O`=gHPwFe1 zmuFqL!sMy(n!8Xa%_+Z?bPwol#GeVg>;cANt%$vN?(G(-zABGOoLkVTulfI+&rur! z1@Aj2J6dUW1YA!qJ`)-sP~hLH5h!q-q_vaB+mGKPtjQ!xR#&U)wm@~2o51bK^+l(c3{9YFqFYz}M)|}`0k86H zJ8SJ~a+S<)SILv4z33%=Mrb_Cn<(+Qbcu}6Kl#TUNKQ$6|3mHZaeqpaZL=Ve1r^;R zTzt*UYEEsCY4qT17o?TTRMVM2-N6!>#fPwE^<<&FL9yL7VYu@8v~X0bVUs3(Q|}}c z_;b9;&b!rwemyuL=j!!21dS=%M9`S= zn+O_n^(F<4(n9-$|2AbAzFzkQj%DGEWj`DHh4KvFq_9exwNjY^l@!1VbqxyX!^y5~AUaO>5y)7fo3^t1eCI+C2|bRIny>~a9E_gcS8-6FdcKFK*1JjkZjtnZpzAn9#9a( zr;Eum*Y_6zl;$IDd&aVqrXDRLpEEe;DL8{t(&=K?Cb}2(o+9 z;8;##tZJcu>aGqXa&!(c>I43h%PQCo-_Tgg0a-HVlVV9UIFXtLf>rg&W#cMxt7ptc zl{|c-iZ0u@d)eWQzbc%b-%KB!_U}OWc7i0 z3n&=xcqhIRm^+JCig5fnl_X+6caGArQD=<2D?39M*lQ;X6zpJ|)ay1J6q&>%jver! z^{Rf}!tq`S4vo|#`OF*jHpOfvW^9Xov<%1UvT|1iUt7j~H`-Q?OkuJZ~{+u$AI zK6zTRNG@@|j~$Ln-0$FFD&k7@w$7XX_&3>?p<03Kq3HhRp9>Y!Vm>%kBS@IM(zTet z9H}(C(t0>$#$H^)Z$@+=g*&q>-zp0SRyywB;s<_}#0PW-CGYo)=s_sRmrw<=J_kKvMinRS{+eo+K7> z#^I86EEVrTf8Zlp%&@wj{EckOcCHA##Jf{R;~Z1tz}fl*=a~AX!zCUb#@u1na{h@9 z(y9HrM`=)JTT6>scZ$MWP?OG}NJyS6?-eV*Bt(}n@i*BZtXe%xEbIJlc`Upyt0Xs$j@KPu>KS5Vj% zG}IPkJQc)AM;puS)DOt2GERMs7bc&bHFxCSCHZ-cVbRHpMKT-B>-{uP2ppVeTC_Gw zy*H7#Tdv;>v#w|Yb6T0;Qg5Cn+6t8hgkrzw8i070lm4@}rvA9cwY*!-@v^p=859{} zW=}gnvutII2f1i7j;Pp;c^QGZ(;dj{Vy$c9&myAV_TtHTQwBlr;)K07g?4FCms)6k z&utFt97!^$dzu%|y^*mRFgb4$z07SAHrsLVZsL3NEmlwM600?#Wo3{Ek!LgE(b9e`BO zfyfiMGJ#ScUTHfmyO*?T>}S`WZ&dxKtAu~i|G<$|9!{)qX7!0XQ}fqLQvOut-6qIM z9T$dh$>?2(ruKz}W!}2@V8ndeLJg$I2-OclxnWQZgO?QOq38v=g@j?u^DuGAP_w(3 zA8`#xdnLTO9pGZySi}R}l6dZ&ykN-*a?##lzA0=ssqKVN?UuOcT`8Y8&;+R5%}}|` zOzIuG{7J3LuT|r?6NUc>W2OlfT~)z%5N?}O8+}g1ph#yx!%?+>46VSIyqWmzPHA=^ zsN=W$rMF100X>fzI28Db9Mp06OVJOaiL`z;rD8yEaL4|V7Gw)ff=@d+)9{S$z*>Bjim(t7RWgMJ7 zX*ezxF4TP5^I#z7M{^DmPT!5fI0^!`bE&|b-ZweU@=8&7@oE7rL&1-=MikU~^DGm< z$_etB4}Gisz)r6jdZ3JaIm@N2HjXER%&Z99xw)XgNc{s!-tXP|2UJY)nEd=Hhsf?x zBmt0+d-X#=ZGv`SAy4F_e^GTUDa~lMTJJ8al;s-3K61lB4*jzjQ#JT7;rvGc0gHB~ zmNi{Z`cq*oHk&0_xX|3OoYUlG%)Ed{e#XoSbXqL6ozs2ut=So94K+e>;;8vV>t$t9 zp^ZPjeYhx!NohYS_R6=i2_Qa%xuaJ*a>oXqo(gpHVf88Ov5Wj(dGC1VW%v6kgd(LB z4Y6>)J}0&-bMi6TJofj_$>z*D5+B_u^R>jwgXU+Q6vB@m3Kc`R4X#x#C9P6lS^SKZ zf7mNyAva_zZy&2;TpI7ztIsNLW4rrKRaRnkqGdihA*G%0?Gyc~{@QF*NPF-rp==+blj_U}r5=BvX&cu2mXn(t47= zk^AlkrT+i>8+rNI)I#ZROLqQ7dLXv^wZDT*sZ~Gew z7NjbDnTl9V0Kh@!ZWisYD}8wE|5EAp_mh=cd~TIzQ}*o98{6Bm_xTDRP8+F9qgSYb zySVi(_BS&KsvR`#+p=eoj6_PAN;Z*XTJqVa(ZJno*{knkypy)8f-VlQ=T<-B->3QnE*ViLGb74v&zW}) z)ho6?@MM&W0)alwgD>c5^P}HqN7A>?&(l%wpdpH0R7rD`dh$Q)=SKf?y!+HbQ0xfz z`Dmv59O6Eg`Jborxg)0Q6{MKKVUy>sFd*ZY3%S_&VMQhIHs~kH^Aq*<^Y5UgexeU` zUgXsUewuh3F<%w45^7-dFu3z>J7N}g+?a8HEzFYY>qq5q%T_ssjCsn}xplg&)t1-yH_BUK>FM?66SNW>IMu&Qn{;ipD=oTTx{g1z5Y>mMR1p0c zdiJFpiazx^Q8_kO`T3D?g#3LIA-@0mGxTly+fS98{Q;k-2d*{0e2=3JJAXNWx_=^C zmC_vG0>FtT0s0)hke3pfT6iUYhBGlJ*gi|RBq-<&!VC)B@}Qie1?FT1VEa553wyem zicbV?+XexlXNruMenHzQwa+aECNruJ-#$x3OXsNAq3w$Q_Aq9A-oeDy&&#uL+hX2- zn6S-Z?^y-oO>BrrgNRm2g&c|nVckBI*#EFn50QUZz`mc=o@_ClwNB%svvus!Dy_6P zEk|rE71U3fueQh56kwjv9^VD(w9?eW-pTc;RjD&G>o?ghQ@ciIb`eHcZ;naOO1suD zjIqP(FPJMI?G&iHkkXQ?H~Z1ffx2P>9?iCA;IIAJt)3B#jawjD?!w>U{j~f8buq>Y zFYPJ#HUs{hS_tPRmz1Q{k7i*b-ke?US8rE)yOlD09pG0%I)B06oi1?;#!#)N+9<8c zz?@@wZ;I8>O8vD)?IO}bZol-7e3hsK=M%20fw~CEQiZ0L;qgK=n{6_G86L;MN9!v# z#9xL*T9|SuOi^wb9{naE57`iZ84d>qTNm08e;GdXAt5u8AzEU~J|pC6m&+}~7e6NC zLL1^Q!)~7v60sq68Fn=Xvd~&jvmtgRb~QzB5t8q6X)$&+uW0e^YeVdM>}s+=8?9U! zN}KJH>}tOIijc2aQ~s*#YVugKt?$_oyD+<&9!y^Ax@5@jDfw!UO=|-oTAmlPs#~An zqy8z4zP}{x;*^>ad&))f#9Cw7U-ZNFV|(E{;(r(Fd$&Kkej8Z|*depoR6zOP{bh>s zkNC?ubs2B8i7Q0#B}N>!#mQ46_tcyTUI0G6<9+u2unFw#O_E2-Mxc2PNG>NmgUR-3gZ4 zl?(XB5Yb!-uZ%)MHyVm2|8J#j(pCzTAKH5FD zqBoyi0!>KAW zlT|{k-|Oe@*w&bzv5zwD-M-4qft_)$=&I|yTXp4rt{=cS*8PL)VW;R`u7{l`7yf!! zdi$9gm1(IRcJ&U_B!{_fKfs=3eV}fMM#ozeAr{AwCa^JZxL`u~)MtkE|GJo*=m_GZ*{=n~) zKr4HBMt_0>bH3oshra4zXw$0D(Ds#`tB3eNH*k;1z5R~c$_2`i#42-tqnr7TbJxV~ zA7R&V<_7<4%hN|7gkMdc0{)XtkVu9h;)Whl7|;HYAimpg3D5SUDhv1CB25Y@5*x+z zTjSP4M_F#ULI&9^^wT8-ScmG4R{bPCRNnLc_aH_7)&IE0kGx;szZ|$%M&E<>%D966 z2l;=8|D1#OvbaL@J(Oos$u7CQTQN}dKywWs;}%z%F=^ciVM7CseUJ+O(_IPDJPSA` z@@sAcog#7lk)%H^c{`|87~sNeBBOPz3vUx0|8h!^%9R>Tbq%O7&A4n9JmiUS`I0w% zG}XSxgFP$JRBL$4wqc+07O-zy{jf+=?SE3y+jw(XcBT@3@5h=8?o;KvaY7EUYP`<0 z{GtYpw!;cpKIkyb#V`GpF~#}3MEwf>^OJg}2dN#7cJ@LM?>6CR$c)RIW=S*wT_KTX zq-mDI^=B?!rUZ+cm5w;BYM~x`owIV9}ZORd>U^m1T#5Z1~&_w~;|pANNB?I=O=QeA;$-kr0Gp|L8s| z{LeexXQlr+&wW<;pEd4tg8%t@`?=n{4zi+#&FUdVp6^m^^*;x@&kp?8iG;NqYrWe2 z@I19y^qnTMaQiGVCLlm7`m8&ZkHE9D=2Ls|EX!kc1K9tv6ktDhZ}LfN2)vlFgTo26 z5P~#VeUQ%;5fFtXyX#SnIgLDoy8!xqRs7^)z5}(*<|TI@W% zaIc&)udG)Ac(Ye_ay9fSMAXhiTC94>aZuAGHODGN4r1?K*;2S|yYOlp!`Swtst~#32 zvZV|6R!P#+v_erv>GB5{rDH(}sZrN@IYSnVdETr%JE2>OX9>|wJ|grS4=0i^xq^5+ zS;Ssd7=LE<66)>BH7Np@4fA~?hR%n^@p&eF7tMTi&uyN3CtC#6I-G7 z!+G?L7Syf~$&wL0%%6YuFuD<_dx}sK1e7SUR7Ea-YB52aW45_;j^!04}On?-(-8YR)X^enj~8U}ZtT`J`o~=6mg6qW~TDBqc)CIbhe_a+C^J?uJ4W@^ejT@o`}i7a_?>)-lBYd zAtH+izmHd0#q-&Jep!C;_Ez2oI65*#MXs_`Zr08}}N3QW0k`d>{!nX4)weul{&ZjjTjZvVEeG?KXOpE$k z8rK~b_P0bvV9xtwNs=#zB*_js!|$uSg5=hb`OD&U8RI`zjW(c=)_fVok|_&jJgE65yM| z`Ebs9o+ycNg{-6}lyNFsB_boJBa-JTERj*ec?c!{`(Bpt<*atm7>7zq$v}+M_rh&Q z?v>FML~sKCL-@ap{~7$>&wp~kTl{)~`jEu0L2G5k9tr<^3K3=$KidaqX9w!;WIS-F zjb)NIj13F>H(?Z(ZAHJYNP&z3PAp@`JhwY>kW;65s=e{3%)lJb1892K5#DQa-k4Dt z+m$nE7z8PlZict&r~s*M+B4A{Yu=VO6EDMtq6F5?&VeY1SAIooQq)26>F}g|HK3pV~1tYHb3T5bRKpL z&IV0paA7EG={+L2xMedBZxQUW&Hwe$E){5~`fPwn@-NaJU?2aFwYPzfs=D_6lbJ~v zLhu9xMT?qZ5G1x@Q40oZPBM|1kSKyEYE?8geetzq27IBCFiD;1F^bi;wzv1zd)s?! zYg_GGKxj2D3IUYYR#5wb+SUo96>SSafqA~aea=iKsO^28|DO+;bIyKQd+)W^UVH7e z*IxU<2|N&f1LhGIC`~LgNf-3qr|WQmcqbJf^k9BviVL$^C0kt&GSNu%*K(h=LA7#H z^Rv$|HE(q*mm)8f`x6i6!9Dyc$r$D@HGxi#o#^>Za#zGv2B?o|7@DfGcd z%;O*KEIaF;&a$3ez>8ki^Ykx_Lb6>kMTRIMT+k4dlmUU)rR&G)B>ae&7k8y zPod{dY-UepyodaQ@tWP%xT(rvEv>si;ksM0Yu%- z1&ofZsnu*FW)%&_qt$U__DB{isdu!crUM|NTkI#qjLnq`;ii=ofM$H3yJaGso+136 zJw@IM;#=kF1%F?-YPS`?N7ah=m5B?^#9k!S-V%&nLPf}rJ=EFKj}%6$_t*ZdJT{iA zA)=#c?^*Gu%c+MSn}K+h5kSXJ{F>Wm-!2iVMm0FK7(cr}MoLm|x=+=jq;f2>i^83? z`@;VFOhu}CmV8A-N6Wpvnrclh+WBVBaA;-V5*$L<)B{E*jC6x*Nm5N6m_nhcNw9h3 z?Y#K%Z2SntOFuh2zN{cR#iPzvI&W`1(|I# zHfF|;x*?dGOhK_*e={yyLB&Vx_@HljX%^$O=o1Fxb>t_i@Jq*Jqsj|n$D}`!{i-g& zl0jXAO;$n5Tso0zqtNG4cjiq#&S#it)RVg0F~bM&ibe02WKrC+gbnL z@qaVF>MP`9 zLE_RA3eA_Is`>JnFF#)&89aLtISw^z7Ycyxh<^pDSVQ1co|qhp;GVsM>CQ+4QCm zu65#s$WzaIg9Qv<@BqfgFpZIR)yr1rQ&hy}2-wExHT+%5-+BB^=dXyRcls849rLwZ zBI8eNedNF^VQ$dkVANMRz|&B*F*^5Yy1annTkFJ`A`aTrO<0pedIrFGV5*()r7OL- z%q9;4XYq%Cge!YwOA;g{wr80>_(4(ZRJ&?-?Bs^37nV+fI!6N2Uhn&Ox>VI3;eJgg z*1AXjv<#NCaF`HbWP`VIp=_$0$z|V(7}_iY6T+XFtR{HJq+Nlv=y=lh}2EX*lNYh4lW*f&f zY>K^QDYynQC>Fv}3UvsoK^uG0_kx4?`!JUN?5htLb1U@o5tn$p%_0uMlR=?!;2?(c{Vbhfz1ws z7&nEa$RC+bGq_7X<*oIYF=8v+QmQsbV}xes5$Q1d@73JK{z7Ja?9(EzqArDWjvvwK z5>ICQX9&-Xznou!7jX)~rJRct@ULZ;i?4#RB2`pwn#K%%F5D7Rl9xpb5C*0{><=JI zx*aC@2FU@2rJky9J@3@m8N=j<*=0t2C@VZ#eE72wAD~NhhNjBVk)~}C|8|Kv;mjV< zb2*oph5bzAU#4PI=aZ(n-b8*UVVUtaxiL52<~G%3bOyrYE7Y3K8r%qvSoW!grhe{` zK~!$=!_zf>PqSy1!AP8qk;?vX{M}Pp#%qrZ0)n5^BtnH5yOksTf40{L#tga7HU6M! zb2TGu%vNuNv1E!gamk`=8?kA7`Hteqf$eOki92BK%wS6`#PE{{#3K#8s-C6A;Y|Pf zf{$_0Sp49KWmOGL8?)8h68)I4aVoVt1uNZ#O0Z4sjM)@h(fGHHxY1soH1VpXM`?yesA08EnhA8MYJDm~7b= za+Yv1fh;8hPaCP{u@k+ zrad9&`U!U1Avar?K&O5pd?IoFP=;qXa((~D_%@!Yu$eyRXQ-}>hblhKznKra@&FrR z*6FnmbAG9;X#RD<0>0)Z^fme>li+Z)o~iUgOmesIw?Rg^{Bi#J3QiDQqeEefx>I+Z zZ_Waq*>A1<32QMddDmMjzsDOFPp}k8K2-52NKKDO-fLbQKh43dsus?5l?S3Bh^!ju z{c#&*?e6-GyE|(XQM8c`v4#Cp~vI|dIdtJn#s)pEw7D__ST@x!= zPP=$PFyX!d8^!XxGhCaU&ypv^300-#@UwN_Wdu--I#oj#(NT>LMcJRLa;=(>tHm*H zEe3Jp8{op?LC3vphHbzLnH3GnHb$!e+RLB(J$^uU-#Y|YlBV0dU-G8r4K;_h7*T6i zs;$y(&cmefT4Sp<3BGNV5pNUEVHjsH^*V3Pmde4@A9$%8WDMNbq)f+R5NMkrr!!t> zdGNxDTEKOQje%TzYMd7-W4^T-AVdd=t~}NSP`MzG+BeOu5LRUXKn>nl%3{WiPwn&~ z_kwh10n=S0wvO4zE-&(VBD2u(^01|HL1`9zF!g|!NZsb>1Wn@v`$<(r4u7Lwq+=pE zy4yH$DDrX>8C{YEUG7FzE})DJl?%#J=b8lSrvffd;uIkp7sgqeaoff>TwR)Z{FdPx zN$PpD^-*nQ{i>psOmd?2h@P(BEKYH)fg%dhzclPH{S)``Yxl9veLU$tR=W>3U2qSk9(H~OxAY(Ug!LsyLcdi%D0^7cmCzcGV{LGc_I0W zihjKlh9oO&Yp<<)fqtr$M$4eD|K?}ss~Wj{mMWo zn<7l^jwI^}mM&qS;0IqNUaliuGxom|wx%6q=$Iq8@8s6Y>p87L>-KPl*1th%y2U|L zU7w^xbE+3!+LJnSCc*^18Tx!AIitHdS$m}Ih-A7YPtkQkM*3{ToaR-|^XNr(?(uJs z$A@D+-<@IqV8#yH|BQWLKiZJyq+dYnwn3A5yEc5D4OShoR-T4L1)(+)8)qMtsc`&?u2&@SEgNoN4#@&IO&S@?#$PwFZEN}Z>{dJR`;(d zY%OTDt;e5h>nUhOyZB1aUMtgEwYOz9jIQ#xjm`^^oqKV`1Rnf6Hx1nn%OU~!9H}pI zYHxVw-mnwc(43q&FT&A_KV{aN`rB3et(75lAFVR@>Uo{rrMFtD;oWMb0Iw4v*gKDe zDi2c#UdHR37o@rQAowA#fY-DHVkmL2iGC9)xKvRNEzHZKg{-Wk1&g7F+agpJU3p}>26&M>({(;5h{n!-bE*@u`G7HUY%N$^V6|UJ z6c{nNz+cg`l;II7lG&o7j>|b0{pt)Mr)=~iL^4hHFOdhBq95|Lq*$^|+Q%}y^FiI# z!Th4yoklT^V=A@r?h&cWE2vJf!_`gUQfRY*Y(((&kUU)|jjAH@ovbw-=+6 z***^lE-=d&Nf0y6f$S~dA&|>UVTqDLmtvBuaM7Q&x z_G;T+WqTz}R&g6-1V~#fh6H zbl=VGytkOz^X$(PXNrD_*_tcGE-Jd>GH})P30GX|c9GNpP=loI^hjsJP?xAzvu4zr zQ?KJDEq&JedhxbX^Luf4mOtTRZKxxocjb3t0fpvwV)sHSc2cfl$Ef$-KtHntzuRXZ zH$GSZ?hvw!we;px63}^__pM38I&W}T&95e{J0Ong%Ip}IYS`0fvdk<$&^D9&{3|z_ z3Ha07-1=qqYbL7}=j$gnQHsADU9d9uwhfrvV~twtqQqDZ91Wi7QiIO4<6AJ32{9D@ zD5vMYwYe@)7n4TVJ$3q>zOX+Pt{jZLA}Pk*NJ`#kARJXtmLCn%XS+LRC}N!f_RY-D z#9_2H06)$GKDCj9JDqoP@z?&C&VHZg=@@=SuuXW?&zD2?OErQo@S?s!l+mt+s(#*@ zjjZ<~@61NF$!cna$#|I;cTG0V&WpUli?p+mZAb3QWKLPC3SRBSO(rgWxNKR;n&X(l ztna3ls6MxPu_LlM!Opz+kz$fvO&?j`-Di@0&P%rEuU@s|NBpr7@x#Ft$EBxsUU=jO zC<8LFlVL~E6A1m1Kws+R`B5$phi!e!74=0g>Vdqd#V(7x+lyM7jq=Qx7|_uP@pbMN zu-f&H+l}fd)ks2&G(QJTEX*3ed?Y?t9XoC)XRJhZ#HU=wu+bW?jIke3#uz|nLp;L%-)3HQ4_&5Dv)8l( zA$>B(*Y!NkWoGGPc*5$^#rB$V!eK5pH}i2YH2&&rJKl3B$#_(EyuUDgCL7T~6A151;vHFVt*j}uXyNR(a`G$z7?(72n-7tZ}1%CZvyW-coyU@cIORuMx^4OVjq^i3{&RwZ{dT79wRQ#0; z4kP046|!LU#-mud!7C}>Xp=(+%`HlNnU~o2L5bbLOlGqZbs@N&!EeZ^pAd2`!RH>% z0J}p~+pK$E1t^Xc3-xio48TY;ku($Y(rB+Om*%G?O-V@OKLZWN0g`TgUTB^zg?j!u?tleac*R5umxcPcNpaV59Oal=jZy+z458`k9c^$JKkL|fdwg4AzmLtctpb)KtMU8-B3Jd2hHt5(O`aM=BAHRy&p ziuWfz*g@b!6`$vP^9=Kff=mUEzb{=Uy06+)o;#atnQzZQ}w0s?GjKUZWY&gM0GDe#}?uP-0|!aVr11pn(p@Huy4;9qCp@8b*jyICj!-@0cH z-|VP3e=sWS9ehPEF(trm@)gKM@3ap!;e~pNm@!lYTU4fqBc!obcJc*M&e(_aq(YXh zuscgn_HSuBSjg9kFSZ?2=-ow}n@NxO(j>zks{XcOv|aUwyux8HNkln5#_*eWHzVZumo>sfpVdQ)ufF}gKDKH)r3oGV=P!z#-cZ0= zaxaS$#`v+J&T1b3(m+&&{|1cxwQPug&hbNCjiN5~JgcFiTjQonimo-!MMW1x=$3C! zc4vVr2^^XQZs6;Evw(bre`NU(L&si@(paNiM75YmF6ZGCwej1WYzc4h-w(&N#?%H# z(V!G#=8hxPCFZrZg3q&)wV^ey(;BfGm+c?bcyRTfl*k_BT0I=xta05rs;1Q5vFg9! zs2Up2NAXJy&~o?kGc0DWthb*QahQu}>8zJ9H)yWw_+zXJd+&L^FI{Nw@AE~g!|~pL zi)?YpJGHge9h=x(H|mez;laCv@8_FC$*by9*Su(0;}T^r;L<}nwjh0jRaR`3T?Es= zu$&CjZUZfLe6!D9lVULiNRwCi!G%t-ki+vLoHgc9lPWf4Mn@=Lb$aBQr&0bihfdvX za(c6>*d41SR!=BiMCYyr-Z1M6=v8LbU!z)FDLx3bwKKL$f;OzLuOkJlvW}uBz zT!>f%FI$5gt7 zs4GafC>woc_T?%!on>`Mmq@a!N%rY%>^0e!Yu#iQ2doaA_9WePq+6VgzCQcX?LaS?r)pcWa&tHN)e-8Th5#;0Dy!f*(wm(I9jS}dk*1S|L8;o6Mt)6pC zRVsE7tT#3h`D?}w4g(L4)y{)vV>ISz^D!8zTCp#N-HJZ}=U}G@RS!eF$o>ERxF`2_v_kh`=a&U0{MSMA`1dkBv;)$p&5n1B zgr%bAkr*F%sokf@On^;@x*2b>Rd4)Hy|AIg<#vLUuAKU?M_vSf+XC_rskXCQiA+$vPN7QP+8xYb0-G^;5_F zp)g1pfcydaGoaV1da0jrAhrST9*XKSQAKB>v}{Orr1&ED%y6LU%S?peb?k8? zaaX^M>(p@tM5%e_BdoGQF56)V5o1H^~?$D-Z0J28-ihCoGe(B)XzogZR)cY)GzCOv9{o()dL$ z)=tI?T%1|yNG-YZ)o{~0XnH4Q&mVA}!N9>E(71O~&o2dLW<$8@$nrmjb5W@-f`RL% zH2PO*X&+Hy$LMYOBwmWy)K}cJ(&kc!K_1b$rVf##>u@smO5|4(@|*G-hnMd~rOtI> z>JymK@kJw*kEuNXt+u+@&G}2DX+J8oyHU0nePkBmd$D0HQeM^lPXtqA_tQ+y^25Qb zB+<(73(ua1mBu0u<2v&b#bbw=$xf8BptHjpr~@6yoMNxZtPt#-si}kv4e-sWB@;Ek zjiLR`stp6(ThMF1!>(#PLuY7Di;YV4u(`&H8UJlFC8nvjvvQ)w6ykfB?mo5KTD#|% z78|V$CpdN1H|%`n5sKF0zB1C(6TWefv398yRJA8aGUAIw=iE@L(05#!Il}Mt2SkBNj+@9KB#?gWlQqe))dS<4O>XA zGl`PsZnrFe_HHZrO#rIz&0|Yyp$kG9D1o@pd>XqlK$t{H*LIG!UD>)$2Y?EeRyl92 z!eX>@_OpDEZyb)1wxmji@}lWiO3s6B2v|ykC$%k14D)36_n@)TBg2a=WOj}ARPFaz zlzJFJVWoDq8t7Y6Pbi`DV8Z+SPd=3aak1r~zalKQsJ=5YO>QZ0X#+CRdJB3@gfzNg{}NSgS8cSy{MJ&HkI zs=xcAj86lv+~hIv8a#MPWZ-!fO+6@h8-3n*Ud8QqXt zGGJBR7+CT`j?N4miu)>_Jt2$WeOotc*QJjzBOb06e2-^15Pl(8t=Z^LX=7RA~Yi6@3>ooK(RC0=403KkNtE%s@5E45w)^%~9Ju##R#xh4HaAtjyam4wcc;ujUoQb}J|ph}X-oeHtK zdiif&-M#ZU9|F7NRu^`SU~f3id=&lT78myK5lB+!WnsI3SG!P$<7-BDTaUJsy{+VL zOX1BlI zx84AsEThbh@!RYRAfO_vkHY0zR-pG~U;O69#uDEOIl6!6r?;?{kJA&d#WuQ|P0v;y zJ+B7++7n%w_a4u_x4m1xaN&6Co(ssvlN75)6Wkp;0)PHjU~(G$EzCsNWJl5u2#lzD~CcMBUs zVP)Ae#%5oR^$NSfo~60K-E*mT`( zEm0KGqLFh*Nya=hRl5B=p4yJfR`R&)%kf@q%PB5;JZQS|ibYv+D{(=k$E*Pt9Aw1I zgaR6Fk~#v1dR~`5XL{~v0Spha+3^&AW2W79upJOBBAVxJq${baQLWss%<*St_Tl@+ zuQRwszs`@oEgNlWU=o_~#D4OnI^@Cr#c=x}MwV-UQs=zV=&-2u#>r!?29N)yTCmEM zvcABqd5>flzZv(XU2+nu#E;Vp?s*OkP>yJ_n!YQ*^RA$+HTCO3w0}hTY?;mw;(q#v zUW@!1+r>niml4^Qks4?ik8npTdTVWacxj2)?4R2}wdZlg}$0`qp& zp=IaT&NG#m{|+vzG!|Z^RsXP7E@TpMu>=NMl?!`{p=Akfx^PQAd4RRvTdDP(m+XnZdrio? zu!mWQ&`=^YyM_dWS6f}{y*QwdU2*sfyAbR74V=4am_3^^E+|h&hV0(a3))&n7o;xT zlxq-&X!_lXpW?P?-simL=UP;3T7;{J)3QQTzVJ!6vJvXO@AK6}|P(-gtI#x&(7!QOa`+mw5T!G7SwU<->`|4J`r)oR~o zicQ9iEsAO25UR}^o57d(dj=;YwD~(&maxq;n6P~=ho!zVQOGR(_uT$59(y+FKE~v{ zi{|jG7+rE=NhCfPTxz?P0vwj$fJS|1K*zv>OGmn)4VCWE*@%B5XI4@JT(Kv{GgXu~ zRUcy0fGKQw+PD?-qDE(~Y7<)Zk(w6+3p#~qmbhB@+LrUXfuJwYmVx_Gs zeCNiBTUYo$9=#bx^yTZ_kytK9)JoB*<=(h0hY@Lbn!wKzNb1|OsdEt*4W(w#dZ}lb zKq?(dW{i_wqM9iOu#=1?rEqM%UE!FEPVM@$T?R&IzPPo5l~w5l8aY0Jmt! z?a{oDbETesQ*VYh^DP z)tXAuSSx=a)Tl*sf@y#9)}XPIzqoYBj=zEBm6l(wo&1E5zo|6jzpKpl@26hnT)9vd z^1tKS+*7fMWK5l4vP3`aEI{_Wc-#=I0yhFK*#w}wCIW;6m`L{Sh-&MhXSq|}B^Pa?ERvZ$yWHSMO!sr{wjrZ!IxLQ2> zH6!AKBdvQxVQhV!`PKcI@WZzAQ0wgoe-Zz-%&UkDPf|oU*`{plSQc#>{<(Ab=Wm98 z{(ku9Uxt6aHT-km@Xx}5{2gH)_$<#oJm2E4^^P%R zoYsvYV@HB0U!2|s|0Z(`tyf0U+f$LM?G4tP9$6JmgL6g>yl4z~v-%j$=Z3i}DBL;U zmk4KY&|ip0oh3S}UO(1eUo!@wqNjV0-%ivVi@kOUr_+)(!L0DhFc&{WRLvPda+kQ- z3SdIM0`rB3cO#xRItgiB8=W;$x;8pbNKf17JThn=k4ndBJ5NYk+TiSP#+c*DHzK%k zG8vPBIT%UVPOCU#Piiz4RpF)-G4PE`q?&Ghuh{B%zN|o)V3X)_!IaCm%Sq1>RIB|W zUJyX6_Bvj)d-n*5wE@W4!QPPbPN?(RHkw=Gt3Gc->@>Zxty0S6d0jp`QJ;OUDYO$M z3Li+3lQXMRNznR3N&__+z5mF(`}Fz~H@I-1o3vKfKEi4;&Mr=im(FZv9$3w>p~tr% zN<7~B3z9bbIn(9ejA^{n-!s5cwdWu@(Klnlz4GWf1XC9SK)IE(OF0GRf04VUP+3;3 zG4(2O>tV8P`WFQ!>I?Az5Qt>9SRK1i&I~l6rxX&e;+aJvtXxPm_Ni*B?|+M)hd~cm zx8nEnLQY|O8w#Z6P~|2YbkIC1NLz*H_q9_gz?3?Pyd~T;_IN^=H#yWBCi~IYQ3VT4 zwi4n&rN4*2K5KRN5b^wp=GGGbJ~sEh$soaUr`M+gU0)se4U?lP^Bhl88K!tuh5~AEyfD1jbKtct({(I_ z;+IO=oE&kT^U1IjA4bpq*He`=8E&be8H z-XZ`Z%i%zV#%ilj%hppRg!}k*WXK|MAirs8858b6miuh~AnsEN_knIpTuQ6SxKko? z!^br@;Lg$Xf!s75-S$;fY`(Da1r2Pqyqk`{}Y-z22R0T7u`*3n=C>p2> zxXKmg2W`?leMW$&dNy`9F=A}Bg;~P3s}crNHxO#rRjofS%AhSmRCXRVXmbThGrxNi zF)S{N%~}nd>^yAdWN#k!r*DdITs|j2c=P={JF!63B-gPXlT;zKg$y$#VZh`B2T!t4 zX|;ZD{$>_*We_tA7x+CGKISRhVQjTJ-V)Qi1Y;OsEW-0BD#~K4Ud2K?p2Q<+T26>q zB$8<^)J50zgx0HdHSa^$96~*G)#Rber7~A;F=+9KFArTcCfr3=4HIo|F?42iEY`?a z6_Ah~8ACw(@x1HV3%iI9u==fT^0x$!ZGIZ%yVGB*B8lbj{Wz*E(#RpxAGL` z-3n|nSkL3PN27Uj?0DhP<)gz2cR_EAZ5mh(NO(l_Q-Xi%aQI}_FzXvWxo}32@yr;` zu<+a%dud>nSG%*^+zHjr9lpxl6VqVH&WL2vIDBm&phQ}%b%R`c9hfyOd{aE1(dfc> zC(m9AAm{P78LVyCk*cuRc5P-fp1wv|*IKMn>`HblHRYMYcD`#nn|JJ~p0ulEo1GY& zo<+u8_LEAubFbWwkbW~x*zBDLolU4DUkQXJZRG|z9DSWY&hAuT$DUA0e_f)auH$9e zV5&&<(*Zl44j575^CGG$)!4uj2DKTPB@tFjdG&`jPNZ&OUU;mz?>c4Tv z9(&SGQ-8G7RKk?wRbqfjY>quTAQy)Qlf4F$urq_n?-HDcNzG6B`19xRrwnT^xIp;$ zXZWjg@u!5~Pnit<{NS&%^lNsw*=L| z7A{}Wmp9zNrF$GXH{OoIr`sOkGp{}W8lQO;8K5HIGkvrDB-11~j5g(!zUrv*3Jv~L zo)WKJu|oLx*X1d(8jgd;jVkU3(v_k2&Ylv@?R0V9G#ayVqg@F(BeAcBHF2d)fz@S? znH`KRYIIf^U5hYfdL9dG_hg;x%dXC<+ii1X9PfZ(|8~g7YJZ&UjZGXJ*ZES$wgl5M z1~T_QGA93us*U}K*=4b%z?RC!b{^iwqtT!O@N1BJuuIk032{p*=TMI1php){)t7M# zmE}j`__~I5XA1t${L;%L6wuO3{pA%++zFsV*1iQqJds82P;EqRWamGaMLQV)^^1KfVK( zaRZ>$aX#T(XdnNx)zEn*>zsb{PHq!#d~*zUO-8m4H2D93duz09VdoFh4B+LppjqQ- z41fJQ_rgS2#dhxrl(2C1;~X#$<4&+{n4``x3R`e-b@p=uTlp}h`E#ZDZ9}m)zPZrf zjY~q`(WU9Ql}JCoJcyn0d?k55Zpp>DlHpR_nmttRGwCZEI_qg;VTi(YVGxf7|CZ0c znE`l%zc;>T#9C2i<+cVjFwiAVHw_r`YBa-RI;huQECMS03 z)*JO9KgR~8Gc@-&ED-rX0wUFh&cL~iD!B79PFXc@AkgaiJv7N4q|mv_G|-f%xu$5n zkK;1yebRieWwMFlAQU|}#$HZ0L!Q?=&k9te^P&t?R1Giy?v6MV?cavqN1GOW3g8r< z5kz{&$0OLh!KS_GVm)P1&9)I^KHhsIQ7B^77rRm_=UG#AT2vO`XROcHJ#aOhJ{x+u zlP4-xtNn|-cw_N)ctcn>m@eXALf4{V+#+&C=%&uVFKHV1wS$nff4drs_dDjsE#MdP z<0G-Mx|xeItRQDjcz?U&DStwfHiuQ>d;JL`*i;uXb~J(Z46Ft8>@ut4XFOHDU*$_d zun6Ms`kZp!j_|fA?7t)!0sEb$|4?l>R4KK?1XACQ^RDO@IhSVmL1rHy+N{mS%c-}=%uPL0_1X7LMC0zWHmJ*5f^WJ z;tJu;z{MIFR#!uzFHx@rO_=SCz{LtEOqi8LHlUPmsBd%ZM_wWJ21qX$C>K$suL*Td zyoyr?5&uq#4Y~89DX4S);l|EtYUx7#Uly}5)+_kFpnpOm?H1AUqm!r*?F7$HZuP>; z*h0aGUc?h|p4hFa%iS@lbJl3ybxt?x;gK3XWdvwu1d6PhN|@`s+Db*r+*TEXRj-- zC2!`kDT~~!zyxd1s#V=hx48P2H#ZZ)P{0TQW zd)3glA*{}YSXN7LWh$xe*^4+J`M41U%FTs3m+fqP0IKyrSjbnZW`D7HnsAr+g*5$!!=2F?bbh7}Y~!MsZ+zMPCVG$_5oeM0k{W8+w=|-6gy2#MPR% zt&X#p-ehKm6&}qq61qIcA-r;B&6wGN*k^@@O*AG1BJAyZZQ73vB7&p&=C1O|k}~ma z%4g4>fT?UZm36f@fwQPfAOap(W}4#ng-RqBLlK)|zs#qt3fv(#L079h@OhLoM9&CC z7m%*%gXvk@N6_;>>GFJf&RTScEphO_!Pz)FXs!HjGqXj?xY~~!V)%gRbZGK{{AYu- zI;S_{-%;OLI=@Z}k}8uNd_)d|lT5;995CnF3`aeTAn?Zl>E0zPH99X{+!>fRw{zSo zllw4mC0}EDH~(Gu?~z1JF`p8CB;Zv05;YRE^ewKhZzCv4I1-b8W?&r<#08CXL=_v5 z1m;6e)D(Lmw~pT+P2T!k`{VHxM~3Ggam5z|7KtxB^2L|k>FbB8yvnO`^dfgYB=aEk zJ(Q>ks$K|flEqZN|Ev1{!fv(4szvr#yERhgv-f{~jEzjL?MYQyN#d{GJRsRhrhg{Y_>0UgVa9Pq5?+0!M$2w!*<>q^1lW?)LD>q zjj!z$oqUm;4EvfwVRDtMua8Oh8(}7zM?H zytw5>=R}4{e}VHU3B2dhd`vC${ch?gFSEISd%5xi&~1-yXa;C zWOZnX!&;ZM$+30q8}A6?{A1~95(e|=FO;~1X#xJMMTy3Y86*P=?kxRCv%R5qtgkGR zoSPLVD7cS%6IA8w{Dqt{pTEcvMp!5@MzhPnhvty1CUvLN^l6P!&&YhJVpE1{d`^WcUG#EgvAV zHT|Op#shIwOSSa+K^{h*2BWI+b%^;_B0w^}{i^)*&berxrQZl8=4%Ow@D|@2@EF7q z2Ipaz1mOi*RBnvDsATyiOC%hIW8nupd))`Rr@8RG_Q2n~_IUhFYe*0Izx$_v)d4Sv zFggQQsVO(ol$uEAxJ7EmrL@CUcxCk|)rmXlkNMJuS7#D6OzT~!U*da%9y64n`tAoX z#G$tSItwC=hm&zNY83rWi)>dOH2w1~?HNqiD0ypG1|f9U_!D*!58B04rAERPkLtU= z&eGr05)3k+(m?f57<4(3Mv3m|evWi76-_Q9?bg9yY!ZC``E{@$~6jfx8UfNX#H?+1Q?Z@Esp^>|Hw33 zb0seOSq78)wQRxBsVdZrpKN)Dra=KUey==DwQhNCd&j89bn4L*JxBHD?iw?T>l|2} zvnflz;22&~FCK8nPE?E66>6^Jo%xmJe>L12tB8%U-@?~ezx#Wsi-Gh9gA7jroP{U) z*B}UMl+QcD{Ah;zAz%*jVaAD{*-9U-)WC}?Ht-_3p@1jlMkp6vxjFV@;n3~8Glv=y zZE92_pdT46)fn`t{**(Zrow+>X0hq(-Ud_QD3@rw1iuTzH0R+|ka0>WWDXy~0*?kq z_`Zbk8aY%aF26ap6CyJ6iLstF_oY4%7H`J5SmM;xEZbb)g65=c@X>0k{W23Kr;vn| zwk&8}QN}#R{i>_XLL@oCEQ#7$1%^!*?}oh7I3t>#(j0$Msc>RI-V<6zHgvX?lRWL0 z3BO64>fEanm>&4CEvL43-+qeKHK**1z@vv_<2m4{`YAa^K-|W7q#Wn2CV4@@;)3Yq z-sRTr4LjH;rhX56sPR)S%=Piz^Aa2#1z^7PPXi9g7N~ZeF+e} zBC4tS$(~<4bkg`k@GggRD`Wpdmv5`?t(Ml)=ivbS9Uc4PZ?o;Lj#lQ{?Z|Ti{qZOduXFc+pm2PJ?tMIi)_D+lI~wBm z-^kVGD4ZXi@_F33x;QUCI_j$@aRkkD2W}O!)#{9oR(;$q*@yDkP4T`K$7r!3?Qz*# zJ~?A(u5DWPk!+^Iqf30`#9X5a3g6eL9n{Bbaw|>#s8=O8eEbn`z(tNSLG@5Iet!-F z_+~k}pb^+Yd!U$_j*fkiShrbReCL(owfMd~YT&Lh{D8*8DwH8I_UN&b*~a;=#l&*I zia#-jbAs{fa$jQ^lwNy)T5(1 z$A_wP8ucO9dD9$yto1(T^Pyq+L+|?w-uJiko%?5wvMrQNu=cIslx6bdvA4l_`_V$H zL%yRl`%mL3PFJmy6%(x0KQ)e|v?8%qKdD4ciEQqJ4awORaL&O<&s#qGR|WJFhvXK8 zD*s}~UoQ+*zV50LC1XdNFKZvnc<0#6n2F5#$v(cVb{&r6ZX|7d=~`o)RywJ?`INP? zw9sJ*gVpS{cl$%K9cA@YBDicmpCyUia1|4(7U?h&ueW| ziuB*3hmx_9FT*zVIh58R|3>Ta4Mhdj%=><ZTctz#l_8|uso~U6r0h^ z&&L~``}P3OSlxBgTUb4j^1f|^4KoYv8Tb!kBhG)QdZ@FWQVNFaCjMUJdxx`C>9HY2 z(-C$8^cQxdM0{D)6|x>z1$x+A%f{DW4-+P=FVd3^3R59W7-h_=%tVe`q|72m42Qi= z#ABspt!5}@3xY_5A<#{(9$DBRB68oivCK_ecqDOAM%b1KMuCE9zmH%(k>A-3%RJA~ z1?+0v{{FFPq3Q4c;g$YYKKeUcs7^Q9?V@IcR)fZni{L{F$RhZN`54vTTnBE8n>iaD z^@|o{!l@JFy}le-V76IpFqtC`s@`nm+9RxW^Qw&nimGjlaJ1~8+K}mWkSQAcMRsf5 zST(3_jNST~vcvZNn_*tFD|8YB#>1fY6yA(?J5dLN+Q#15E35@hhc2nIj2Og@24m?!rz(Y_69;%1bCpxd9?I09jFS3M>v-Z%k zgRLo?-Z?t?qCdT$ZU$eIPmBY*ai=5c85oB84>L7_;*N$^CjMM`sX3|{twyi*~ETo zV{Y@vt+6(HwCy9%?v60)!>L+748i-5{hm#+-;ri6xUC(+ZSApAw>aPo^wz4YvnbA< zA1rG6Ozy;AS);QXB%`B({JDeGY9DJxIyPIG_{4v(h4Fg z&4-Vv0%xRr>0otQthtudbYKBNB;4PPZ$X6y8k>6EY}_oBEN$m9y{4CNk?C-W#18Ae zRb+8W+u57KbK=G?1znez9M78F&RM=lRp0Vg%wkRA0?u!k-ahKSvHh~1(sW;5^m=|- zrAqr2cCKQT@KU&Hrxib&?*>eBbNxlT4FT6Ur4QLKQf7t_WV`cVW7WE>qN;7E+!Qv)fVLW@Dsux)+HguYa^PtD8P;6VZM8EC z>`XOQp$nMLnvh-fz*vgg5aG7k-woUc0H>4zT^q!7N=@2%5YnJ7%&h3O8!C6eir7iz zWH4_&dgD*?`EPU?K@)Ux+J2Tym~MjSpJ&b_K4OH_#Dgd zs!q=QkyFmtc#ra;R=~dNoK;FC8n>;rufi(i=1#ArR@|)nF-Uuq($Tq8NBpZ=c?CDk zcCuAApjrm&U6zczn{Z>j2!La)xVB6L>jZ1%O7psUm0E(|tc!Isdp(vqYRU)Q%$`08 z-;$duS^T$>lY3x$bRRn&wA~BYx%$AnkiCqlV)-6j>&R{F+-#N*#8vM4A5=^Wjl_(X zAEK8J%BiZI`umftWwgYcw*w2T&GJ7n&VCl z2C0SYf0VX4>WYGL(v-A)*K{5|mRszNZ7F9NJ8^R6$cn>l-_3StbMogxY0|7v+yYbI zS*tq5#(6-XfT8qRd4F+1lu2%L>Ti$c6%lM1aRR};00L4NX~p9tZQpUn3ci9% z?r2^2Fc8Y3w|RvWwGqwK$1hFd?3#VM&9 zM<8hxeW15Mw^1ynDxWr0xy-9dtkJ8=lZCVjyWgJSweUg=&AYYmLR1P_1>6hKE63vF z8bMx+Ih1R5Byp`7{}~ZFo?A^3vi+BJ%S>uB+FJQ{3a5?*^weqIeIo1Em{YVJFB0YT z_0PSa^#r-Awbp2jm;4)EoZPy2$=ki4ZxGbF?!PF}A3N4@zQ;@Ib6%XTe$J9fYeAG~ zQEDpUMSoh*)`>i;+cQ>jA``9G>o_aq1Ag^ytH{8V@LlyC&&Px-7KY*;d_E{dg%aPZ zXr&`Vi62$8@x&S3M-vtXhx;qtwe6OBGnrf;To2}0WUFr*oPTpszIt6kpDbO=Q8r)A zYJRu6z*_CNJ>(8AE%8bSGu>l#Rg6iryB8B_X~?_lY%ac!tQT5cXX|GiQf2^s^DinA z;M+K(2Kkr{&Eszxe*x#MbiGGlyYS5A-mc;XIH}aQrwAHMPxUDFmw71+OHQTUQP3dQ z);uOEgah|rSSekcS9vbjTk#8!xY{rPXO~y!)EC@9wZ#Og@~MRcLV$bH6=29C&hILT zmy1x5s@GQM`P8LuVc~3HzfFzJE9|!h@%0@L) zXgD8Um-Oi#sne!f*#!;N&igPWnD@k}Txa3BGxIDM_D8A?TlYSKoHS#BapV@n>p)nK8eiX zzNFy+-lWPyw7TA~ltKzyqvXlBIoX|z>$L2^anO=#HwPtySF;FZQ&){AH-s!oo0{%M z7-Bb#@L;8mcWW!~YRg=5n=y*<3oSkPL>@eakWJC4J#K^x&x=s0sSQMsND*G;(_i%1 zWbAWB#%&qtvC|li;#WIjk`Rn|CM%G;XEJ4pPip1jZJzi=;tZFXLy7wLvhRm6K{M~z zpJ@wdC$Qfc9ZDL;?HH+Ue^1bAmuPLReWlb|sijShVfQN7yIyPcgQ`RPl>@Fjn54_LdA|L6~t$Zp^Ll zrxA`nv>eVy;>_*`2EUuys6ZpxGO>O&6BkM{`{m-0O>+SI@D{*7BRtY%| zD4{xzb;_5)n%jpf@R%RFlfj#O7?AX1n@jHx=ok(b`q7j0V`+^WJEiW%?lCv+7?VDZ zmxVX(SePDN=L(yj-(lEVDA^`@!Q*Q*;{<;lnqyNa^(&lU)Oo(f4AFbjBP2Yc+WJ5CMwyZ zfvEpT&FPA>T8?F3&how{cz96ExR%LKTATI{X4X`+u$Rj^wJUiY-@rJ1X8q|_4Y)jA zAN#*hk*HyY#R}W;abuQihut4ZCT|0A;beW;uuX*gaC4vgGOipZb2CfEpthl@ke=^IpgAHVi8F`-CH$@e9%27Kn8DjGrL)c#*fW-Khdc_ z5aX@(s>NQU0vIa76zHx6iFI?kX>!{YA5h;Pew6xlctz%b`Mmmi0knWi>%+9AZwQv& zv{`Ue`vvcu;qbI7Ek3hmZ|!Pr$8Huz$bWjLT64OEFnpCa{; zbSiWq{L&bY?v)J$JMiBlnUc%Y3inQ~y+bxVBLZG)jCqy*U|H;TQ@{*lz+2b{Fc}~Q zv%l@90E`L_QWmOUcChO)DtXt-{<0}9Hj9ksxEY7^S9$r-P#qw@7(AhaiJC#!yR4C3 z&chj8CMix$!)v5uwVnPoqL7_9+3&YH=kd-B6KpwL$Qz03k8R9u^48#6>hTi$z>5)7 zQSnzs7;UUpJ?5oDFPuz>o};5UuKg;SC+o|H72!O1FNGR>2CFt%7jMUPIsIXzlrgoV zO8R5Z->eli`x?<2{-vR+r{&g2W&eJzDVT3gtNcTj6`wXHA}IMVi(#xZV#5>OK7g_f zkj$SZwNHjUCiTaq?~hH*ralF7QwESl4%KA;{EW#GP?mT4p3`_@8)7inaTdm4965o->YG`x&RN_$ZcqpC&kjQ1w+>T9U#Taq?fN1d-oS2M10 zVMC7#aWpq!tL*QjZjI5``cSi^Xw6`#c>Wue1zguD%Q28)IX}!3F#*Bqou>^ z%z35SVnMR=_G{hhgRO2(8F5me{$L_3_VR8bj9q*Edu}0zhBs}K3Yo5^nR7<|SdrS~ zqiwlnWx2Sax9JekSnKgZ+BMm*UGSb8U*e~(|17aakN;+~8~%USfi|PYYh~siiEQ%- ztR{Unv#%sIcJEJ^?K3mu8VGXWBTF)w^=;oKCXg=kJX0_Em>c42bEiuH!NdwNh95(r-o7wK@npZQayO784lH z?J@Gie6|sA?Dhb-VUku&BAioYA%fSp>8e*}(L&+~WH05(nS?Nz8!*x1!DUiKY-ls# zL=8N7XC7J^-*6)r3}ud>VpA!XY$uW})!CA73_*+k*X_L#OnpFmZ}8fCwg=cNUzJmv zk1l`o2bI6j$X6~>ZW2B~@CH~0ANs4uLd0WD$Z!bpon?SiRK`Q)ph4& zJBb^@nm}Dr))n;?p=2;QE6i4b=24-vm_c}2k}dapjdCX&G{p^S%}X^kSqOyFNIwNo z^QYpdc_tfz(?j^|n###!XD6EC^3-nuHJlscbDyPSi|Eo`MQrCeYLFEywyvsS-sSrUT797wJb4ePv3uIMWWVSV&o2b zZZ!uzw+`7R&1C~vcgxAGBxvA*Ij_BYz4mg5K_}_dfv&w#r0MNO-6F?~tIJWWc3BZ~ zIUcyS?$IV1qU7B{NHcm2Z?Tj1x6KT&X%y2nzE?u??rlq{*KcOOr3FEbt1DQl$lc-e z)T`ghWY)^`1lz6De;=b~DxADWIu5RR;oNv&DYp;l0;ST`BiPB&wF$}{pBtoKZe+a= z6z|3n{Za77iMWOTNNWC4QJ`@Hz}jE57*^lg*Yu@6d26oAMSoL7f0NXT zleC=GQnotConYlhtz|`+hCVc152ufE?z_xGlZGG{la)VdmhKsx)b-HHWp{uAt|kkn z{(}B|ZGreKZT|s{VzCfT#`g&>8)RDMU3H?!b8EW6T0OTsZdxA%*^_2;vj;mQFJd4w z9sP>0xhC0Aa6}4^H$f216_cl!JL`7swM`Ef(U@3s$jyWpc-r?RH%?lkZo zO0JY~MPj8ym{9U7yLq_7)ZpV>lLW$TfPyDnX0Ebg%zzV|`C+PNNGC`l!^DJ>aQs(B zgJ0nK4KQX1VdqyBj}WIlsPd5WBQvJzI^Mi{q&fR8!!sd$aX7x2tq)Iruv?c;C}ak@ zsxbCFZpNQ%=M8~9FYFvx6?Tp>O?aN#h2xu0 z8TE!{R*Z=qNKJx+iRb>D7_R+@uMgT)Z!X^|q~dOU0jCZrUC0dCiZH@KmXrxhya9e=73{%Ix&%B7y$Y7s)D&ein>| z5B$N%)n5OE9j4U0{u=78T>XA9n)*54Fh%%Z;C_|!sHQIF;f7Zsr$04HRm(ghzw32X ze_sBW-F9)X07hfC-7l`7h7YVl5eNFuQ011p@2$tXT@k*K;ZEENg9md*nG;q+hLZ5;is{TE2(lTj6kjWMN~s z&OV_aw%;5FJ3~2JXMN0SpQJR-P7Zmb7IwJAtV`RptvgQ&(Z%MxvoUqaYyiZk3G5h2bAJ6|(dh&qR@cy6Q9r~c7dJC76p+mdo_6QSweE?63TO>CSYqzO#d zcwMa_G>6j65PJ0qW{SpOK{c~fr1z_pMF;aU&&ncnv&z3)@>J^Y_x z4s!aV{+e*P$J(aXIR{-2DemJmi+Kq-D`zUN^Hqs{nq3!#<$JxH zHl_-N4(ItWGl$3Xw^EM*^*r{lZU(076buD3lP?R99luYlD%ahHkz|)ia)5e8nKI4rO7@OsdToNCv~soYYZ+kV>TfP9foBF*UK;SCS*_T%O7fzk45t zF&%HOp^sGIRM4co5SM@5(Tf}_dC`P$6IXLxKG@J1NYd$z+!C;eJa*ef!GdyXoiUY% zg_ftaJ6vGU{e0@S8yK?j4du3cq1D1r(kxDnQwgU9RT7P7>*j9V_WI^{QN#1z?aANx zjAk(*6G~t{aIdm3PAfEiuhn?GQsZ%hRu@R?0GoP6_Rz6CzwI+NZK<^wvl*tX|?0D9RTaC|rN6rY1<&h?+ zWS@}>bP0ylu6a}SvRzpS+@xM+S+%x60BH9$m??ljM1eJ=WJqbxv~y18e9dIbMqzQr zT#-8TW5$#j5^P2-!8ou&LwdUX6i`sby|D9D!Y1PsKWMGKFj&>Q;v}>su_=7`_`oFm z!T?W27FYG&tsXgfoI!8uWLk$=NU`#D@HQsiEs$2|h=w52R=l5Y?$VmXmfA508fBhb zR<3#*Su5*uN#m0q2|Le(lHu}jGR$2p_Cm0-7*RUnq>K^!b~C(YNC*^qrtxA1(MNeP zgUDE0I4d8b)NpbU_`Q8kLvrzMXQi1Sbpd<7bzdv7Y*A)bIDNJobbkq`;QsR9`P}!q z;!DMyi-Pgj1{sErkTm3MHiK{`?{$^^sXGkP2My_OA}r#3P06$tYUP>wW)Udx*h#fS zHFqC8lKk}}MBB-KS6ybjtUd_KOr{!2n2uMP`^-7e__Lh+Y%0u-&qz~;X^hjjNB8$d z{04|Y!xrl7EZp5$Qz#qFdw$Gk1P&j`Y^Z6SJqzC4v17$T?&_9hSY66gcR3}u&Mb&7 z)8IDxAtr;?*%Jz42a?C9Z^>5G{*@?$etuz$W<-vaKa*N;J(sIG&kV@m26*Dg(XvQ< z3+1h+yy=vugG(w4#bS3f878iIRXDTWL>?Ge2FB%W{^gDxwsr9{$q_gm3CPt0C;0p? zMEtu_kAS!^p7%{vN11XK?%`5V%?mRh6AjP7jY&W+oT$k3#J{w=;O_c}e`_PxJtQwi za#~oBvfPAIai~MuVx>hv&=c`48dgc+QX3E~B%RVyvla#~NzfecVZNSs76=W$xB zZPoVlUp=;`wzjqX)5Fzj!YzTwT?Di$;_V3|f?7fVVczd=?`I|n+V?&G_kHtPK*9Y)z7f|%lk3I^9fEH>5YNpcl2H_bh`+W{1^&bt@Yd zOAZZRmK^vmyAiX}#7df#Ca%k@v=ScJu7;aw`f-_l==kK$?Me<(#2cCjw~4`o`-aaP z{4$+)OXzu96P;v7*OyuaQ{8Wfd`>sfj=j~R40f()>X)YeWHSzeb`#pP%X!AR?huWn zeBp-si~UP)D|L@!TGuds2;3kYPhiG!KUOUF_s@(IPa+2;Q7J&Pf#!PjHF~6Xv+iO; zDT~8@vNH+g);%LMA-3Xpr0Z+SvZiNQ93eHA)weHvNFWE==75~rRfwb0mDr2k0~C&* zxp+FbD>6sp4T(XcU$ZfO!O6~JSMpfltPt|8D8SPyD$Z`r^gnxk6WSVLppBe;^W$& z!~OxZ5Gv!P7b3T!jC2KZ7P5$vTT$VLf2)DhH4h{lcH{CswZnp@H9L6uT1qI>Jxv?} zbl407#pD$xvFfUJHp(IMp65@`N zm^X#9&iUMV8mP{IUav3-cb%q5XmyW#JwFMoE=bb`6c8qBW1kqEzA+br<4`o%GIunN z5n8zXDV#L|zP%c^5qVtbhbb|o7d0rZe{JFH z<=XkhosSBv2_9N_S9;KB_#}6S&VU@Ln3Oo$=~&RLv4?~>mRs(MU(-7U#MZ*|Ket7h zQQs!_wFP~Nu~(&c@bnS*!a@gTP*K`YEpkpP2=@st5*Je3k+TEKhs zLtd*OB16pKkAMfxBaaJr*%gdlBD5rTOVm+3^*Kj9;yIM1y{ z9Y(%V8fb zOe~FIXpsP#GX04;U+sDV&c@6e7B_f23v)ebI!}&sa3?&)3b5kTcMl=b76tA2|@43 z^6FlH6MMho-ApfI9k8PV?il2l8X5Db?wL?m5MS&p(cMs}eLboTve5}8vpxMuSt0A1 zZ=f!;{Pj;MS=ZsOdt4BV4I5xkJF3~&K-O4JQqCVf9M6hmp|s@xzsv(yLCc( zV$)aaWKW>b=(hb_{Cw#`LIU}=Aqii+ z_07`@+I~cHpZAgZBHiP_h<0pY2Hl|Y6_n3>Q_WoVd0%vE=D+#QYvv#NOjGumj(KgQ zy0pv{&n1c}eXcGY+SI;nXrJCq_!IZEb`s$7=PXaIk$2 z{({6zJ0BSrxP%=v1$MkE?2*Zvgpd0DmG@hviB6vE?@vn6zkLl8+d&_R0Ljybf^hqK zp58He>v(#Vr}j0zL_$F#6W`~xFYzxG?dyDr>CVoG+It1#zasQAVor-Ba%;G-ZZ1xZ z|5VOr5(fwo`OqI|3VWcRQdL3VupN~;zo{Gi1Tl#hiJ?LOg^$|i@KwHvZTlBfzr=re z`K*5#=YreOuUS}h59+;g!;{FUxvTk*X3}4}nE>CnsiCzrwD{Eejs7Ob0gnd#s-!?4 z>%1IxPB5Op;g~NQ^Swz0woKT6T{|Oocl|FFo%?2+1lRthB@MVKxsGlZ@>A3>zDU)q z;1vQG-_fXVPvG$97MlB3oBS(vj;Bja!NYUzbJht~9e^u&vT*KOrjE?r=7-m}pHe#= zI+&RN?m}(|GG$BxF(1wN*@#SJu4H40GQHsrWDLZKs2)^-6+md{f%dJTp~dADz1M{r ziZRFX1R#?|G9?8u^03ey@T`#GU!Z25IMeD_;5>rMvy> z+@B4#9o>GUR=WuQ%3yp~F%JdRXINFUVY zzp~9+^$R$c+O-;x&L-kFuI_Rk(P1;>?2f3zI-0m=(c`dA6Kua*-1K+E6`372e@N*z z-xW7|o2$-^x`}v_dD0Olxq*HAF|i;KXK&cqA2S~2J`yhy^H10~x{;mnr>Nu(D#oDA z|KMQ;8YO&Du-9yCj(a(e2?pvx>*cJu-G~|Mmr*3{{Af8???Y`P_X48yy3mo5sxrW04^ zI+3`ImZD>A3yJYuO+86dY%_$2D_&oGDVz2?@?P~POnOzJG77vi4I^JnVx>2*_ez@7MvSEUT>fv}o~e1;ug*uRoR_=ETg=B^oQFoZBD^;!#6wGH z=z#5e6(V6km~ap+Xg`VnX&rha71p{ z8Lh9&XwQiFUW@n|UxfMZGS(4htjhB>=Ej&ynIWdX*OOtU6Q63NQ)#gCKD_IAeV;d8 zRpiBG`2S_R=B|u+4X5wJv-3e8zU~=l*Fm0Rrk$DmS~mH12@ojZnD-(=XAt|t%!Sa= zRVJ}qe|gKSQXdcAgr>h&Vn(Z7>U&^1?vPqT+cTk>w+lN5n8Qa?i5E9P;{zW5lL>8M zK1=L$7In_%kNG+>5SOh;sE|i`l1bT5SXmiYh*9q8CI1ekrW6x;)?PJ%?%;Np_)s(alt>4;1tvUVe-G72vEuIk$FszRi0MadI)AX}c5i z^i@8)1$RFFrFWEnEt;}>w|{AM`5n49p6OpYzx?)aDrpYLDMvaI;Ra*US<$dW2hD~@ zrBGSXuxcC>CEW0fdHmEIE2fXg;T zLhbt-l0T=cK?=xJ9xqx9ULX^*c%ciEFkH(RX!R&VZgq{INl#dEgOf@aCsXHj2K6=ly0eiA`SOz;TNpS5LGrU-!}%Dc$v7#m$OK zJ(XPt6ghWjo?RS8P7X^D*9c4MwgGp%FV(-I-{R^^K~4AJ!$OO}Q|O6M;v(9Y08^i< zzb77{zqM;s|6RAQNwyTV8zok(A%s+k0jeTqtGJ9RGONH1an$}r6}(^m?C*d7`_PfS z+xFuTI2>%Un#p30CR1klty88<2_12r{Y?kXWd}R3;0Hp2D6iuDR`AQ&G@7n1zpRs9 z8fMnUtXF>zykfDstTXFtNSuX&WwNSjn1FI{xct0^31|n0%ZD~hz^H3;VnrNIQ4MH< z)SwmWEQFtmBYGYc<{V^Ca1XO=a{k~%JJj*Hek0j?8NRvwy3+pD=Z$XUrcstja>by{gDemB0Q5N@UI?=b2+*&ZE?#qtp2=iHDSMYxMV&fB2ifE$Vy#O{oB3K0Mb$ zm`Ddavy;-K!iTpvfh}u!Zg0YJBF%$;=_0K)tgw2?_jBD3R1o@pc6()M8P1K=(Jk(^ zbd)YU`9A%ZUIE2RjF2qT2lc_^-XbWIuaT1BU?Z+qz@2{fi+c+B;!4$-o^nWs7Z%t& zjxVR}RE5goK(NJK_;pLLwzxZCB6Tj9CqB7nw+?P2CbyOmk+C|6 z_ToLL>Lb4&d=iMYHA5W9lS7WE@39)Q_Br%NxQ)gcM=J6Tze>NCnHMI7$yH=u=3iC2 zx&K}t*(>ApjjX7pk&hDP1age0BYWX;?@3j;{Qn;Rzr+9g)b;RgCTp5PW-g6+C-Dg| zYXUfpAubcxV?-sE^Sur@^9)3BMYEL`5qw;0=P-F|BF-U`2S0kq zyLlN-P5Fa)`)cl!*K!Z9=L_Qjr|R#faMhnp;Wu(+-ZT&Sf=wXgUz5k6W|F&wlE-F3RcfVdX%mH4tSBRz8kY>d1+ZuPy-KK-<0^~GySX2xu;K) zCAJVzy>%OA7{vbS+iWOf?n$=vkES2(U~gw3JQ-TSVi!W?3ZI2ufJdt*^PN%H@weOE z>@FhwhzW#!@-W73%1{Ot$$5_1+vo~=n^`A!9fo#Z&qtk$#K@Dn@OQ>5tJzI=@*S&T zs8+*-4^5B#d@n41ze0VIjK{EbjJ?>FJI9ur`>9lALO#GnkxQ)+gigI+=EP8A=RzG_XaeQHz!s}v)5D$ z+Nc>zk-mW!RG{A9a0pRH?4J9}?ZPm433WnzlYYUibqxl$1UFbcMy|qTRKVbWaLmqr z(>0*0D3@DeUu^x@Lgg8~_zNYskm0T*)rpT4Q|w(55o4lh#2&|~vi5^{EF1BEL%jK^ zpT=^r(}VtSM6uDBBvdvLF>o9bGZ^8M95G*%F&&$1+TY?1r^U8n-h;TkW}A8YmM!td zUiEN`+fya>(FR7;T^DpUw$p|a_zLCQnkW!W{YQC=ddH0ER$TZoo%|PW)C{GksJd_v zKb4hi^6TBRH>oF6VEho8ZgGEzd^a2*%J|=-=}3V*Dj-RN0S~@0dun)0S@q30+6!); zeSLV$w8H9e@Riv?o-p}LUtdV}2ok>P^V8QCk@y0M;_3m()kLUj?2%m4BYEtmS<5m5 zxLU~c#Y07=1VzNgT2(sOh~@XNQ_Q z#HRdl*f~yydH%#axG$B{VF%6&z07ibJ)B`mC>51(3#}%JrwmX4gtRY)SJfEpi{X*Q zs9Thgeliadqk}O#@@MH`@S>6QWdHEUR?^c*?16^Xx=Q}~p8(n}Ah08swtbmKkFUs?MhoT!wVWE~Y1*vvJV zib_!M8(sr#cU@4Y0q(W8xUar10r`)_o_kYh#IalG<7CzBuD~?T1nEYSjFf6aOr&ZH zb{zfPbF{OvAxT4({#e<-h9#=ckKDw?Bh1jG~O70($jxtss=ngKX zXjSSrM#Ia>d{-6ld1j#bVL-RPUQ%#RuV0BO*oNH|9LUhzPF&V0pKX)AFNI%tl`VcS z55xE>QxbQUJN28L0_J=3u|CLG^E^9@`;^qhg zwJlVfIE%htW&3{fYue?uxUXHwP9S|wgI7DbQq3`pz_Ec2kGXufF}@9e8f`K!s6!p}r|a1P!p__5D+3{ezD+e_G2K-&O=>2) z2155w-{E2>(L4CY-1@*L&MTRlgKzkgbD7e3`r+~?nGepc<}NGRTxZg}%Cc6=Xd3$_ zMy*Ll@##6u0@T!w_LmBGAZITyatQD$+r=v6+I#R9ycxaV3eAz7 z14&Y6O7bDx(&7-VS*E%ZiFL>vx}QbRk1so!6`sUDmx+I#41coF@9`($@`@bum=jK& z$DqMl!)+Ylnw1(G+k{}P?&Dtph1%3S%;c~mmBz%&mfU1ZUd#wo@_Q=zA|=JS*b>j$ z62%`09b4VFO8ioFS>_tkfCBfoYt^1%wv|@7L6dUK_IIcNw(nkTuQ1#3^2-re#>=nZ zFRB@wMx9;AMTZdV$MD?56Y-fxB9`^{9!Gn>UolxQ=Nx!i`Nk8LUg`agVXDg93pZ%h ziEV)7Jg`9BM$W-WV)9)A^D4=A{_FA_n2o=6BLfskwm{`R6=qNLp$9w(Ks}est*5zH z<@0;_TsTs@R^{)yy)8&pg6nX>6$~_m=h(u#cAirBG!^#fj5xX)>JYt|5qAs`8GRr< zyAWD03S-F0oS;Z+%FrKv423x=nVne@?!`z&;>MnYU}1)qJh5Ty4?DV_MY8G*tzqB z=^d<4x)Y|M?}+|0g3rLWi~e~R0`)O8N=F`sTVM{P0&q`UwC-?^i1C2_BLLE*K7NTB z?ydwPP>)2eP-H$>Z$G$ToBiP1pYuV@3JI`%%b|z`)%bL*)x}V7x4-_kWF(Il`xnXK zsQ?{C0FCVV$1hm8lQhC-JkEGDXezCVRY~$eyE#uG0%j!f^rBL#4>c6X2Uxf~*087- zX+2)wut-ke^f)o|g@#26J8Iu{zKB_(*s!QCFWsBL@y`qzyTJV=1@0nNk;V5-hFd!Y zH0i-V+s9ngQVRKvBn3$ObC8D_&270?0s*r-yyDiYp7h{Jd?!TwGM}>JVDpReM1FUu zFuTJm?o?ZN#THxm=tW%$Cr=j7J{Ky12zQ5I| z!MJtw$B1#_PJ6ha{2KRB?&#RohoJg~VO`;zkqrM@gK(|x1@u<*bd-0AM|VYdCC;-T z(Xnry*s*DL&cs{k#E5j_?(%7FGpM3NVVwIbt=qV z@s;uP4aUmVa2e&WJZ(cnjMIY~RI=DU$MxKC(&R7RVkd9NNYKq_Lw|h_U%hYNUWP2l zJ)2kE)_XuJ?iti$fvMQt-A+IB=SkH(9!8C#TK_IwLT71< z$f6j}S^PauHLg{e^x*WHmI8b$(Df5Bq0=nZ*`tu)KNH=PQ_n*n+|H;y5AkCVZsKNY za?IvZvqg_O5Bci~XuJEF2qjK^O@D_lI?JtyzY(SQfQbz?Tz+v(WnQlslPIV@4HZqp zudx4)hF?iGB70mD^|3YXo+GYhwKtTj;JMnKr2>K-P-2CwV#bv=AVM-xz5QVnH>RkYdMR1Ktw# zZFgT_@W#~xn+d}jIJ@byp( zg&co^hj5XePMW7;p0ehtXXb1ErQ8vYFO)oX1M*n1`%-eEO8dHG#`XO~ec7X1E;$o% z3NyYWmrKK?R1z;D*VN3aORmNl)f$}Z=i7)Eoea|b2YSa@M5EfcA2S!gWw~>e1P4N# zGWY4#ntZll&F~d3*?TyHo-y&W>A~N8NvmaxyMMR}io&sFu`cC)!O#t%I^~Z29qfLW zLT26k^ZNzqP3P_x-m@Ikb9^fDyvQ`s^?sqy-Y>jh%YES;yKwL7Ue4npn4bdouglbF z!&NA)TF(pRxQe+{!)$-%y5?qfi%ULpU9)GB8UOFS&h5WILcW_7ZYmc*hIY- zWp;n1FFT6@oY!9iI4#tWBPxOq9$wIkGnRqVy2w;uAof62rs({9CM2K=wiJ*6vk89}k1Q;e3@yl!C`q_NNWs*}om9ry?ZW@^Wp2L!qbR?PP0ZCe-Q zwyp6RUURKBBmLu1ltlmB6XtMdwy(=tHF&#y>B!oB`!XUD1Ek(dwFbS-%$)}EkhAtQV zL<^urIU_^~HAiY?+lzuDH+~Wf-2FXu@eZgAw8hYs|3vELrpr$Oq0#rK{Xmjo0C@6* z2f(^=iOljkAIKPN$2m5pdfk%4RM*U6JT6A!C_%XOpF`oC@MN~r3fSM}wl zR#U&JuCw~D0CY8TCH2cKv61$8O)7sZ`Q={zn9i=qpRrEwHgv7gl34+#J?{q-1WjT6rJmy>9k`Qt~}&l@+67|1tzxSbc}C zJ)dkg6s&HC<}LlG3>|{88QH zyzeDHEMtrzY~~U@ofRsb%=)U&;_F1;PCJl9Z#DiXtWBn`p1x?hQ9W5@2dM0XBgPVu zcFU@-avZU-P7~M81BmiA?YkLYYDadxJHfm~z-na!qlhF{?RLPPqimO7k=)P5i>u#abBy9)6eWD*UrSX)9r0FT)uYQEze=$-b)_!{?tr15!1b* zJ*dBPi+qcoN-QYFT3yLM$#0xriHf^X+WbufB1dx#;Ry+&x`yzMf-AIHx-YZOn6p)@ z+e>is*zT)MOWrweiAv_~5?bB2{^V_xW*TlDlcUMMgIN<3E(uP^$?7uUfI8}|Lth{~ zW(&$~|;(gc$rl=MNY530PoXxzQ55Y6sb7vA4QE z6Yr58{9KdW=dL_Q5VrG{Q;?36*8JtBT&(N0NV41uDcrfM4 zVmQ$v4GVz`%VeFhn`>+MtAEY4i@hfaolCgG5*ZCWPgzc$9n7z9mC7btvc^UVCMeL6 zN-E1q>eHz2kgg^%`i5GrC{X`WN!7t=36fp8*=b5SreNSub@Ax!nZ8B|f$Q0jKk{-k z?WjNQim80yLXRJbb5Sx?J%!a7E}6k7s#o_XlZh|WW>dMk?mVh$ZTF(SkE@GgBQ7tO zP1HI`!YQXE3%J%(ay zR=BOaBjZCRzUet~;O-n4;Lv#JfyW&z|{~(C$AB_6xm?{onf|OSwG< zkOl5cubRY)q=~^>lv<*WW&Y|kt*oFxJl*eG$exnl8T9~FX0<^c466LBPUXJQ5 z{1Tbxq1mm^cs$>oa=s8A-E6Iu8E183u;P~)0oicJ7z*Op%rZm3V{EOy_tzVu!}-vh z0457@r|Ov<%C?i2rnYkHTZWewXH?75sJ?|$CJ{BY*AxC!2*BuJ152Z?E zxM%niL%N3iUN`)3D<<{toU?5WNVbG-sU^Z+(*}X6c_ffn%sCBY3AW5Ga<)0EQwF!9 z0bKT<7Q$D|oUWLA0LY9-Q5~2K5O}S`Oa_w*gh(^`D$J$M&U~2wlCoR#F=t<66K5qtj z-6wgHQU*FBDKx}Fho|k3j3HK}i5CM+Lpb%6fD-eEKMnm&69EM&%iF_-$389S`Rlhb z1QPS$m=Yt6WYDcKBG*<|Y-sJOG5ozH6pp2mD&w!$9X6=_a@bkYLMI%Pjb{N7rf~2O zcD#qMkFhqGK_h~k!)Z)ALOk`frCv{q0J=vZ)!y7*Ob2t;dy>(ddIn^*n^RZMX9VP2 zY93O(@Q5YqRy4IlC=s?ep@^+#5NapnZ1Pub=_FkpnKMM-%Dl;=6S>7}7xw7wZu`v) z36JO5>QXz^nbRzVv_vt`g4J<2^|T<14~^=8!XHYjz5ZF~PUgG9gnyf=!Ps5LX;oD> zv>D;L32Ikr*D`l)Pn%h?^DwuUHwSa1?Q*Ti88!X(3)IB-gGf+M;yb(x^3MGsFGNk} zX$bt_eTAt z)Kipl*QyBrbpAY*pY^2HA$Stmtm6M7OZf2MBbwbgV=?K4`lZbApC2>jJy!}eW-5bb z_I2#9{&If04JUIdkH<1f$|qU!M9~9p)32EAEsRr%```36v)TP$XV_kkp z!+$7G-_bXN`q^MOx_B`*&F8TO+~5C3XDvf7xvJ0Wj}6T~oo}9MkF%7p`FWCWbRsfG z*I`^R^)ZK~FXx{wFi)u;Y5nMY@am0>oyN;OB1YD-i$&lTsf5vA=wjc8y;w^qedCMC zV`Jw=dH7B8SdTf^5`PlEAjzY}3*KyABx~#tz0kEx9DxS&ed}G?QSLy2DrrKTrw9L` zMN_-Q{nVS(a?u~s_YUq3F*CnLzc)Vpj`GPdU7a5bp;v+ff83hQ{T^Pjchg`&0=xen z3p6J1h%{5Hd@@%kGgZ6SrY72VE-74m$fAfM_h{KPl_cNlz?44f53i1;9y~+|Z0fCS zd3^RKuWnTZhR-+CZs(JmmpwZ-KNL|A^%d;9C{PE zz_%GMap{{1tDKLj((?+d0v}few>9*R`>*>%?ACl8^N`KqeYw*p!)xl<62WM1X?F<&H+GSZi|VkN#EYHo=S#!bEPcAd64$ zKvm!i3MsT6ki>(V83HlT8>_#dcuz>k2!h^ZfkL>Bt+UXT4VA_Mc-T2aVSjR=nNuT( zyqESZ`%2TXBX0uQk>`T6qlr>9$S>Cw&c-VIO@ssM0-G4_6V7g@Y4ocaaYtpkxN!8b zz%eu8;PD4~IB!OrSAxVTkME=dk%AkuG&k!H`Ku=esP-7@5H?aXNQ)1#Qadu#rPIX( z)ZH*U5W{LFusRypX53li_d8~ui_69;yq|@*>{mSB4?3Zx{WexQdV~Bh&50@G$4xPU zR59uJsA#J4ZHorC&h1eZ+&cTJn1cOoGa*2>c3H2Vg#6zxRS*!4D!3_IjZ3~p0)c$m z!eQn5L$Tn-S+A>mUnItFJg~vwYjJ-C1SwDu@ePTCT|2`pcCN?K*>>ZQp%e<62w)Jy zF7?I{I1$5>;sQw9$TOvh{z-3tLEX)~s$C_vOwUN@W4q*=r%>4UQ- z>2ih4P5KWK*2jD7B4>Cb52Y&nJu8~b7SFyuo}Tcj zir_&0C>I3CP%p@Qg;&1Wy=!ey-2Q4?Ez(z{Aa__Ph|#}%f3@Am{ioX4t>-QGT zf+8*Fr^`-KW>B{}h-Rm$BQUZUJ^}$~i&!DZnGj&T#yF3Y;ji3=G0%%-%C3E@fU#FY z){>qL-sw4u#FaxR;E(LeT!p-KAU>bs+j6g}FYs;8oR417x%r&I>ApXuyfwT$(&nsg za?kbQ*QfDU3V3~@^#M+EXchg0 zJ!A`+v?kMUWYM_7xxJjG;4c59X2-O1+UyDW-jt}}zOycpv~GBAY{k`Q^ZmlUW?3LZ^I zA^J^tD}>xeQ;!-`6gY4KAEg{ombjA?#fc?5PR^Z*IH{A`Ja(%Xp+}diuP^~a#EhzS zaiRPu-~GXJc<>c@)aw7>pjm7~Eq7kgg&e}?yt&q{t7WHYUFBJO_qR&he{8aFO3~V5 z1r@+*k#4w0Gcm^t@bFmc7knMWucE!nZpSslmY;0@dM6R?YT z8cNOi7`k_TAu313%j^3SVFM-R+PC&nL8L)$CQzn>5bmW`_!!p*1{Z&~@!T-66)$Y5 zX*w51p|JagBL6VRrbdAty8n2m^B_si=+{Owl^@~0Bb=Uy>IwcjLk+;Jt(690LU6ft zck=iRv#(1>--Jo1IeO=u3&%Y*`^!SvA))mJWsrEBnHwHkz=Xb=Yv8`wy><|IRKe+D zoDphNIjary+-CBP9Li)P1Yt|q;ugZ%63FT%eQZS?o873C{5mw^txYqwXQK_cp0B|Ixu3C=}82j_OJF4hGFIV42Gz*UfL32FaJRXV07R3bQe zS!rBSO<6gUQM}Bbd!N;5UXquoD_Hc|#gf~#q44joT$htt1>BU8_#yY$>An+&)I0hp zoHE}=eQnO6@YrV;la-hqbyjH*obm10noHZ0GKwxvd?`HU*?BCV#6Wd_9d0=|PDHsr zIQA(b24^!qS90TVe>)I_H@jA`$ER>WR|AL|FE#x{fatHEOoubYfbwjUhe+IC&+Swe zPkC5L)dFsNem;qZhd+_B`M>7L>z?gwz*HTsTcwUB&d&8yhiCU}^)rpPVmf*w9mV%N zZcsModwSyZTu=J~4|Oq~de%x&o}H-_JML5obta24OcSG|1GTvV>ZAvc^|t%&i)$>s zSfsQ)?%sj$s0-!zSH0=_Px2nwOBhkJ)8o#!@(Z+vak58yLdpFSO3HBo@*c#*_YZMa z={geEI%Q$!Y1ce{*G1H`m$~~pNe~&gI=jQps=cIYk6C`u3N#B5ax9TfPUg~@RX>B0 zmWG_ea@CbNkFO8$g3pAJ&Z-WRc=}T%mK2ES;^3eH9{}g4Z^)X}xMN=|-Oy9-SIdEF zpKbfITg>B}!=CuG`o{3sCB=N37#beCs#FhO9J{Koeg`1_=&y&;u}cQ=i%h_iDTgWz z$0o5z2LgRf=BWPMAUr*TrcQJh%zCKYIdyg-M@Sm|Bw(z*(;Z5663zPS9wNhvXB#I- zn)1An!%C|1IB%r(znfo4S6Wokh;O%=oQKP6^a~Mr?*>CeG--(U&?p!)Rd3Qg&ig_s zu;W6L>x>8-f%6JWbGWqD%G}?CY!?!>IkB!mv9=$8^3LjpTgt~H*nJpQ2*K_>)ET}? zV%!R`DgAi}LH#Od1wjB5ZzDOCh<)85JWS{!|HZAPWX zyz6k5(767(?=v^%;axh4;d4>-onhzFN)(&})82zO|2W$8p)cy3z$QuON{JNd=JO+G z@Y2eMogMgedL`=H84Vt*#(}=MvtBg`TP)w3QQyfB<|u#H<-+8)g?#Lc&DR~_tnTcz zGM2EjA-Kh#yps~V|BryG_w+m1UYk}x#tO;{8}}An$T6WQy3Li9%#Qt7-zN9@ckB!I zc@_7N34f&FOb+1Tbf}ohGsU5#TO9VahJ#yXtw3d>xUGX~KBote9B{z&;58n*^Z?pR z`x}f7Zp~Z13!5bDahi&7Lh2TE>4Wcc`p`4iha#^J|4koyX6AmT1CjLj64U(bY5AtR z$tRkOSIhDeJ9v2fE-e>+PRk`~*$0o}HT=BM7x4id=C01n9a4b0k(%MWB-~v7%+Oh7 znoccKIfpqdoDH0kY>PR|0f^fMBKog6RyqqM)QvfwG?s!|BgG2c#md4tB@w`kN9LSY zqAqVmM=Ol%iU5;Q=XB(H+I7oyh8`7_kV@D(B-x}XNEPs;IF?FsvQ8_(XU*IySRq55HQo-o2K7RL~rk+D3=v?5p;)}w8D5*y9> z#lWg?L9a;q#%yTYu}sg9Ji$r<-ei82%;RLPGMR{&jQ3YguE~9cPV=^ofENpPALpv% zzLFjAeXYof(zj-PTXz_jXHw2d9xt8ck78v73~@z?qf=zpf*P*e8u5nf`e?6c0d5ku zb?<}8+talRoKlW#wVlAt*|uYWjh0 zzC)~h{Elha`_sh`H6a81j}ciZ*oGD}(BjBS1W*5S>+W1*E^+Sc%CT15jH_VH>8L8F zqspnE*Kg^h`Z8x4@kgRCF$bscxbuxU--kiU5hqxsd3u??ZqVrL3k9rkL#Ygz^4O?& zddXIbq^uCcunndMSYv=`m78>9Al4`vaC0|HafDW1M!hM!aPB;L2o$&CJZhLD4i@75 zzVmBP3)#X~qp2}5BC@2Tr84PBIbtImM@8)ws_&zfbPC?_fVanSaCL79s*oCOHcT1? zxRhGI@`t#V)jKCm#pP-WCTMvy-PIfG?^_-oFTKt0Ws$`939>;$i3(jv<4b8x^$-{m>#WPvl_h{ z)NcO7??5WGGCU~~bFl>BMt43d$WmalpN(d-VS{Q;N@D#W17lYjmD|oP1x4AAM#^Cv^y{1AH!z9SkRNfE2jQ1LdTp< z+!oBkhi&!kL~g&D|IZV4);Fr7=}^b-kf*_jHj&IZ$ofu~d`Y%*{<3ZYuS@-lmXftx zPHw~gr(0%S(e_{6Yx-^e3ty&;FZ%lz{n~y}Xuj|p0gA1&P`Eo!{vK-RcGzP;u%^V% zWP0$^%%L{xAe%K4-kux-5Q{1FB!#QbI%3#z2}TnBbmZjkbUTsgkvv&ZJ(vpQ#QopB z3Xb(;O4}W4P{iGpQG8B&FJI@SS>ha8jUTWI|I%hWib)1j(eSL~Ee*!0H7>{GWh~V0 zh8vdX91u>el3<8CG11K~zQe5JFr0A{&rpAJj>B+h&7u&g4L2nJgCFrOD5+U5ZQ#Ig zl@P}CUwKnF8lwRj(DMTSg6flEu!{Lmr%A^VMw`Q=)6@_zKi?wv zsW`3cchkywy3Sw#!swyywttsoMC>)&qMc+d*LjJdHLHv*PW9A}Er&WgZuCQTeV%&yIS-fc@Qj(p+dNpo{|u9q(H(r^B^eShSHeg9i8 z{l1r;>!o*j>1(}ov(omT+3SR;*7dy?Fw&?9$c!e@LyojdZHUP^gFPc7uUkp8B_fl?hRC}-5%;u3*NY92_eo*+*~S`+yyLWl8>-%G zh_sRR@U)@IO?)ZTdqb#qi?OkI)5EvNis+LR#7r+j%f$h!@hxWcOnIj>=Whs{Z7PGG zvXsaSdYhG{W+Xe_=c912dH!jPca1RR8Y<2#K-xuz-ZhoePpc-Yv3@^aKM$tGJ5Bv2 z1q{@OiO9fn(>-M`%ed<8&s)V2UTG0W-pWsPWS@H))!|d@kk;SFA=V#Qi@?!tiWOp9 zG{0tPuvhl@)wcX@6eWUzbJGy9q@2fwyTzB&jhk5l@$!-G5mZ_n^q0_Ob~AduxmbzI z-8W1EuO_T{cbiG{RbrgG)+D$&;&A6KGYPOFULJOTPeM2F_phwFDLUPH78A?M6_X)d z(6llG9sJWhWS2#ktdX3l9pkFI%f@{^-;2nZtL6v!n6*%r+qloO8+Tcb%03^pbqZvA3KaYT8#C?z2@c<%mM;^OE`r_1SK`(tGp<@nBd$HJqJ^ z<%=x?$5N<`LLp(WkEC#*TTQEk2r(k(&F(#j`7B!xMUk1BLYdk1r+C%Wd9CwECwF4+ zXf!ZK=Wg~0t@eM)nv`mU=2IfV89 z+LEzKGwI--=H)Bb+IjI51T1Xy*No@aDys2x68e||CW<=6JQr+>YA6(On%rZ$FM~3l zC#35VDP&(#GXl{uY922maL6q?xV$b@cJ!%Kc2thaUYcKeqTxTLzEjC7bfNW+(1kA_ z$x&GkRr31QUckpPXI6jIRK)Eg&WNVJGia4g1ote)JH>Txgq=^Me_IA7eaV`w#aJ-s z(O_q4AOi?|LTngDiC3pz8J0iIfy22rvl2Nb@r!f?2bauJuQu9V5)E1#r-$gIs$9^X z>t_z)#$SOabjf*cH{2{z#=k_1MAj<@`j`GiTmag_75uP#p3<2t?tDkr-k}#^^%joK z>YfJO8xBI|;K_LjXCWN8a0axTsS2a4_-B44vl&y-zP{97w~u5+%}JhitALaBia5J) zms5R-U-oz$@8V|^)*h{)#Qa{y7$eZ+aQCu0>^m9@?ws{TuHu?i+FN0!>nIxWFWVAo zI@p`_7^;20F?%hj(o86X1*785qm7iS95e3p#92tTTSyQDd2$#VH2z1ir45^G7n_~c zvEa+|xh+cWrU<*j7}!26)fzd#UacDEl-i+ZPQzFD(Wbq52Z)(Koj?3^lLHd zEWM*>vV<-Smu9^_XPDkHf8B8q99&tVX>oQ%oHs)?Cz+l%Na8<$8R9Ow8F2UJ_EPZF z^jsEqexd0ZPY}W)I5ch^NL4aH6->@HO;V_7KNHke%3V%XaP53_GVuv+CTME09Dg&1 zxf$|5Bqv}YG`zA4+wS3!j`jD~bubs7(=pwZ{f{~ZBlLgRv7%Et2I`nj8Ps{zppM+2 zv#s2#3w1{*0*kJ7Bj*g+rZ|Sz_`rqCT^YuqX*c;+ZO7-;6AJE_+XvYrl~K>E zjhe~CeAdLqrv1HZ_i6UR>Iy6jX3nX{g||SQVU! z$~P;FjCgRnbaK|QIIK>NC*S>lUSCz{u#~t*;7y-5snikLXFv&eqM^>4C7KuHB#dc8@N&v?aoQZGA$d6S{5bbbg&{h2!+iP-*NrM5v1s z$h5l?YF4V~H2-;ITKlNTw0~K&RLgk3ulAV8hX0`~;0T!&-d3b0{m<>!B0u2sxkg}1 zTY_HPs#PF25>+I~Y)tBi$TyBu!QsJ(U*&vEe;9f%{x9OK;DsXQYJ08GF!8fEh4O;H z*cuBSo_%{&;3I9cfjt6yUSCi30mb6ethy$T@!nYvn*OER#y8y3CtG{W&`ggzS}lB+#Ol!e+78vo{vtv0!ps0T zWT2TVVcf}>g%b%jqXcLX6U&@1T$<(1Ad{U4T;s2Q9a72M%`j5{0?X#U%&`uFm<4mQ zsO$FhWXR~(P}<8D+O&ipaj}+plxwJo}LPb=kWgz z3Zu?JosBAl_%UaHH-5lp7DsdF!s}>sjiINLJ`eXd2=`H$FwIz@&)> z-Wfmu^H9fRhl6h|>=6#`UC;;8ScZS$Ngx<-V+3m|E?iI7p;n_mx9^eQ#<_jrjbe29 z!Eb}>-9T#ud83hbnj=Bt{*Zqe^r#!Bc?p!*90Y2{l@#mrlsgH`^Y~1U%_RO~Ecoes zSTk>Hh?ZI|w2k%FL<|jYy-8(+^~OcCU2pKIZOmqindNZsVY|Hil~|wE8ACqf3G@|R zDRF>?O1g!A*C@&#gZFWUcf# zxx&;>o5qKVZsGF7*~Q)7)EqDIC);@oxB8kxnG1Ug|pY)Ba)l8g%_8o zBkEz)6!r>oo;Kfo=7ULm5HgAaR`dGhJysggS*M*BdmkoVd=E08pcUVY$%${q>Or>w zR|&)BtqfI#zHLPz?vevki0o#JO$*PSob{QkG~(ngViczdG4*Ks1x4&UBGo(~f=JZoYS6V(eX+DwZ8glt7R^D=RY=#gj>Yn(3 z%Or_^7EG}E8vbSR2aK3;vK7mk9^S}k?6@bpt^Z~R<-ON9mmjBoY>tB`=Qnl^uA+;K zXng0$EJQ1EG9qX|zVb@mJqw6z@LIrMiuZGjA zdu}7bkxw4;McCKuKA7Pp603kDQm9G&q+C^dV*YQ<6qLJV-Grdd$PNYaoy?nl5A4^k zwMdqV(_X5GvPB3uk`wj|ASbL{E9luPrg6UnA(p+37z^yUL5bgciLWW~OD|DRLiMLj z+G@tRHA=YuIkKdnlY|NX6y(141FQ1elSi5KH|jTibr9b!xi7)w`U6$Y`*DBd zUE^kkP=n(I6le9#wQW zs{Ms zo_Y%o+FRYqx{cv&bG`~M;lck<+UwPHfLcvSwQL2V#PH*6E=jC_}P z>i^11u&qnhJ4j@)&@^5tTiq*Mox;`|2iUFda8h`(E)#~xy&LjiHw+?X`pN6m7y<{o zJt(5SR+$eyaHEQ6zz@C(?7|13i174V!wsHpC5gz@+Sm@B;UQru{xF5EGre@jUZp$L zHC>bLe7{?1_t*&V)cuG4cKIjya+zWV*_*q+Ez1k~5l><&?HUV6>AcKmWP>AG6b*QY z)7{K){73XXQ=sC~$Jyx?@N6!t1=#yn&Ym#g`=RAIhr3U|uY$MeRyvop_}FhFj*?*{+$x+bVfb9c(;Twt#S=0QJAupGs^ki(4H4_d$s2$pT33lC3LKC6Wds)Euy?ZR(E%RcDAZtQ4<(O|eu3 zRdt z1Q>8xW6;6<1j9@?Q$aK5YFe9k1^Nq@s`j{t403m;x|3er;72ZNCe`a6qsvVU(%Dvb zDn-poHL2?<1x&(K&WWh=VO8MdL}%QUG3N?3^5xIF$oXRKb3xhd!{@Q&dd}9H5-e|1 z<&_K6fc1|d9a}SVTBYhM)mC=y>X_WJMhhGOrlvD+( zzxHSBPda?YTdbIFP60&`ymr>fYiIbXM*pH(J;-1sQn#UcZuqK}xwA;#M5*o7Gs0JG zojX0uyoYoRS`mgnt_+z|QszuOWVC_gk?Q4pwQ3$Op=6$*M{!5h& z;l34|?hQ3rc}uKvwp%Fx!rRNR{feJ5T?6*99F)-&19JQZ9)O@`C;yV4_G!^%D^8R@ zlHI6tJnnpC`B~@hOq`#=07DqQxUnZJ7Q87mf3L77z&0n(BWUgjpWmpz) zgpZe>CsTvoLxD4ip}L~>apr%;J#t=&p@n7KD~OcL#&frcr>)7ECNzJ967(NmL}o*? zqY(aD|9?jB&4j(Vw|oNx`bl8VkOH|OMJ|X>|K^aI`$|jW>HCnsW0`-t(ZqN`^a7DP zBAcWB@F5OJ@44^F0S-ZbcZ(z|uyX`5U9=MYo7u>$+%xbuPVfNk-QhJS!BybiZptpt z5%AG(2~G3K{Rc&bveg&J8-0BC^a9z{qmZ zKU6LlzzX+?yEQje7YHXFI9FI>g;=qn zzM#m~LG-ci4gJOzlAwQmfzKAgYkT)XHMYeJRo$zHjJK+)5PS_dkr6HTj5I$U+Oq$*_OXOMHMHdm)FONOjn^#yuB_AZhtp z(?PP)a(AQT(F|%<_zk-pa_Nuui}1ZxeVWljf?3+)Uh^77__i{)_}Lipt6vOIUZcwL z3f&nXLja^X`q(t8L3C|-@J_R%@1F(s)~*$Bj0IYHaKFXke73lQU$&gkVA5`>65cqb;0=g+TNfTF&HH6-I8p4?rZ$@=%U|F0}iRF$&J8pol5GYti(FbcG{3S4{kFps&{ zee+K>Z<7*R^B}6rfT;W z8f32aKYg)F<4-+|2ff=Nwy64l!&8Pta6Y-zNRW5z1s=hzhI;>2CFLW|k-FM2D`^AJ zrUgOT{g%X&kZM3lCk!ZW`non>rP|W`Np>I&d5;I0s3>x_^4TywqW#&3=$+&RB&Ghz z1X7XIKf~o;=Km306hI-Pi8E0D?7h*1=bA*v=w{nbsn>L-Q`2+D?tG7O>Y$Bx=9E88 zS2f>%+e!&9=?-?bb;?j4wL)$O$tTKcG+ZMhR1C2& zsAz;X_en%}*DhW{k-CcrJ)un{rX)ELp_g^ZdjJQlDbrN^Z%r7#8xdx9iU>PJgCCz^ zh>wnQ3W|^(+$8w^#}-R?UM8WhA2w-E0Ju;I_bH&Bhqu{pYkn}GlpsBE_SpIxLF<|y zoQ{dF{I3&=&e#vGU~D{8-zmw8zdl3KDMUnvxxEp}i|)T-#*b!75gH&n_J;d3qC4F` z(x6+woa8>^OSTnDy@IQ^SMZ5Xbf zeJodd&*}-(oC$@UUXnztUS6YO2>vgTVS7=Z7K$dZ{3_nok?9v|&{e%DLWnv%!MtWP zitu~bAO(c+r-vGDAJCo&HH;rP&REEC(dWx?AhFa$Zn5B82(5{8cUe>A*^th60y>-^ zhrJ#>ev_wOWl;LB_Q&Qw?raFv9QXO_zN&p1RGVyM{6@gYDXgfPP%1YLpfAxv{&1(^ ze2jQ!P@pMrB=n+>p@Epiys0P(Y~^tXUOG!NDnHNXU;1wYLPn=Ma0Gc}|J3E>=3J-C z#>vI8>CLdt_0%87p_c`n0%%*HpYxA^(SlXH&I`e z^KYd!M+*~u6glW`Q^?K?99Nv^{Wp1DsX6Ma?(w%QPY7Q9b)vDTdW4R=X7pdqWagY# zLcvcKd>K>l(2+gPn)>YvdO90-?9G&foDDnN^VbD-fliS?D>^U>_u_iNTxoAkG?|EL zA!kHl4tf&@N4I0LUiT^OfJ`^<>9_a&Az&!@%^z?Fs?(UK&xYNUknob3hs9 zWCVp6`t)Pnt5@j8b&LcGoUk=vBqy6o8QJN=+QYKzDD%HhH?(@CYJ9XkRV2?T zObip1Sw@eX7As#^E-b|#RPlwCS)*mNA@RW)75cIAotE7D(hDn30(g_`EczC4t`gt% z>c-q|BRuOJZ0Mc(2`EKSJ0479MfuM|Y6%A%_&=jOA@f=~%jepoKcCy49gn~MFLcjq zHwLLwkIy#Cti`DFbX^a4-a@HLV{E9DmPSPp%4a;E&@){*Deq>?+{VyG(N9wdRVOXUlvXn zeH|N8A$RaRV(#Y^5!HJ0$Hc*@oeVH#RoWNtT2bgTdqsBZk)&?&3u-U`WZ4>LU!2(V znlk{5TL~Ks2D}*R7P_-1XR}^;=mY1Wd_fAiJ8#f2QneLVqfBP%U=1W6w{@w=O&z%+ z{ZIXR*NwSXrPXM1n6GgK-jCHvNAz+1(azS3KGXU#bewX1EB(yd4Vb&yz7?L@@Mc_N z*;i$!z8XDAY>O`a&0#Y;>^|-tv%~H+e}88FPBwpUGJo$jfA2AWXPCd=F@NWqzu)7p zWmycrqCLp7jqvOXI0OFGSeu3sdyAC_J2to+w(=1lXTd$;)TQCn4~oO78%vQgh7o5! zL$R3C5%F!o#*>~**`Eh#xmh&q#| zN)6$=POWMSJCp7XI}@gfy>x2To^i$4O1jKV{J?%^V&YKGyI%TAQ_rnallPSu$Yrms zLUz#XA)zC?)#kr=ZT6vT@`3UK_JeuV7bhPWSx`MZ`M_|#!^#4!S%hq*;Q&V|TqNqd zOTF)mJA7vfecfI?&NOsI*ojOFJ5_h*ibs6w0b}w$sys7!A5{)g7gWgy;GhOI%k|OpZS)0CjhyuHziKL}u8KOhnO*$c@|2BEySk5Oz(!AeIONgH%M zCoGSr?!<99`@6qhz5sFT_9Q={+GA?epT0tUND8^Gwi(07Xiuu9!s-e28|GEkZ=ZJ! zs$>hthJ%d@FAvrFMa>MHbdRJabo8*&AKL|S7n8dTJ34)QIN8zDzi5L{5xdAo4`-c+ zAAIL~y>FTkRNV@n=RO+`7Rmf+~=G%HFsWL2VWb!DL%$ zG>Q5xcZX<8mIBCViXthBq$rZAIz-%bGrp#1Q%C>$#(A(ttG&lzx`iM&n0%5V51bK0 z9&D0=#t2@|++r-|m5OCw#a&DM+ zd*jpBd$}=Ri*hfHOfx72aD(IEZ)W{i-vdP{pMw`Rp2wFi@QD&%U+mjFc4F}Zz7+Qm z{}*lV0v}a*CjKXxNf?sg8IWjH)L5d8ju$GlC63lP$r*D7CJ^saGd$K6h4DS!_--$0PDKcy0T)f!XaVaJmWOh>G;EW{5 z5UnFz;XJ`4bIex+r1)=%$zD|dEmf%GB6*O`!qKo7WB?AjQn84H#|a3JvpHAs zI19vf(^fGY1)rj6SP-^OZTz=c zRZh7Wr%^%r{LFBxjNMt9K)hG15O!|X4;}CidZN`!;g$&O3}Rkp`xhr}nL-mt&pbi` zT*ZxOXv16y)h(U2o}~|Tnd||SnrK<_P0;2l9$zW83pNC2SGvK~>cHr9IfE zm-3cTHt<58M5|wq276-<)ZhErE@t4?U#C(>Qju%PR1moWE99prVwOK7mq>+G87Qv` zL@v@Ncaxv0?n1-=v`l2=Y{UOcnZig(^O0p9S4m{dD;W90EX!?9Nn|Xyt}J%gt%Q}` zoA}`!44_S*!mxfPH5=B;E4grXEu&|1thQ&klcH!dcu-@t*$YHCB}umukVUfEq-lOl zK^tWtd?2#foh;6q2b6_b>$f-{RcoJqN1#d4EL>GOU-L2{Yjt0jHr^!9uUW zu#GjY=imHnqx4RS2ovM$;%0&UnqPH^{!i_?_ppX``)oF{s0ClwA=adRBpa%)x^InC z#_CCZc3H|ueZvJ*m5)1BK1!8Pl|AtDXD;H;Laipp8PVz< z>+097j*Nl?SvpgS*yYA(FT6i4dNm23gFRuZ=!t)218*?54w_qs%*lXpu=mWY5-_O> zW@{n~tPL(T<3kvY6*d#H=fJ%Lj?-38$~K~NmlMA{a&lrT5@@i2#F8XT2=zY{uremlJa}cJ*>tZbl2Kw@ELoJT&`&F zzj?)DS6388wzCxLEHG;G8ri`kM)6R;=}j-JS;;j-1iCuSnT4%#!@9+5Shr8qTb2Y66Wv{G zTDP;S_t{x5OdyR3nHNNOx9m3zH0WRT3ocshNf|ZhW`3~k-NhHl83iOV>emK#8U6wI zt|QP1u}SKjVw)t+rgH{So?~vG;d)OFhXtx;+{IT?mEnJ<@teBu4?&>cdfo7o4}6Qs z=~c!%BzfUKO5qYE^8QIXkHjE!p5gnL`W~;YT_-e2cPQSMlZdDCcuBwd&#Si7^Vih# zU-P{GE${skDoQ#-T4o)ho_4=q+xrue%wpx*hHt2>e!t>VwKm*49L8=6OYkGs*15IapXD)ngv=A z0cCm?ZX}#M)Rs)~X7$NU=}*@6_XMp?V($mY$q^uu@iJ*T@yzK=sZ^^(oupHBrc^2$ zfycC1$F#2VNc}^p%L8zZ#rkv0mgSV#Ja!_;`CwXA%<8bj!mdHtD{*8AisoFcjyXq` zeS8|$7ng7-kby~E=jdUJiXZM33Yv`bR}0ac4}=KF(zMv)#Z%dR+ry$@dH^}>$%dM+Mvx4e&V4Y54Qwbg%jME z+O5ZC!o|%E1Y;Gc_z)8`=naY{TBL7=6_a}PmP6T*$+~}igXZ|>=)U#bHV(F}UwoAa z26fl^`a}I83g$$Lc<7$GzTb~#ib73O5!m;iUlp4;mKPIHVZ&;xZ5H~NizTZR6 z2Yw@7r~Wa9Z>t`gL5E_$NH_e=pg-Q=3Hst(8wWAo)}sH)yPzvxe~6gU)@!LBb#t#~ zH4LttWA!E{Fi6#znUr6Ay0ujadX7~xfli%{Qg_pp6cY=hV-<^2OokxU6)^^U*@ISx zbR2gbfEwEkPS{>5gF+pFC%;*<&@NVjZ)4$NKCb;n&>a9Q1@VCjR8z+6ySAM=4 z8RyiU$#ZyM1q1dn8J7B7kG-gP_Siql#dx9nL0;Feh1x?Y?1Q> z8xE~?7wav&Uz2~RA0%G|C5CHX{UP1IH~n7s?d6W|aq^u+!@6s4{h{Op)rFkMH8kv=n(7~m zorQm}DF-d_P9E%JlF4!4@8wCa)SOGixBh&>Df;&{5rTgokH$>>RE6bcNoYWOJ1d#Q0#p+X4u|lG4+ojPT?x4hw@2%8E zN_Wa{>n)iOipPDOu{kN}j|~_I?eFSRzZx1EiYpjt{oc1N`>Qc^cSG#LH zQ8}_eZ}_33ftE<`css@kk0d{}RXfl=1$~`C-*zZEA0%tnnNk|0qOE=noDZJW;~#o; z>ut1s?alAVOKsH#zTALQB($0;PS^lmcksmdp1V$YPt-r6sle{ZQ4KTk5mkjCNeT(hOZ2-NJC~cGc2@R93+b zy#NOwjuVCW6u*}|0l8|}`mSmHR93`#Ss_yEYIo2IBG259G?PzLF}TiDDt^$rb%;zq zAbqxM&^m-n-0%&WwZQ9LH{8w_EX;JEr`^7?~Ul! zf>t9-ycuYa5a_MfQ3hsNYh~0Jz=EZ|>HoOFWB7=Jwo$Om`o+11Yonl`fd&v#mhVmf zo8Yf)T2vH-w=H+QS${bBko|E^q|C-0>-+Pu?82oF+|e!jSMuL|o8+G4X=|Em_4HpC zD?EkA<5??01+N$wGJG32E7UgS#@ayZ4P!V9jaVp!3*e(QGHi))d zFuc6PE>qMcdh4}r zJ+%pizxHq=7J!Bbanz!v81y=|W(JG-a3wE!K1~_bD3G%Wj@XJUAPczSuK=04JSG=8 zZU#AVywDd8CLg2w|A0Q{4;-gr;KS`2Zr3=Z1Gk&F-PE>CtqHfUbNjjia?*?y^va(d z^5-oD{rzVW6a4W>BCls&w}UJb`B*rN>#(a^JT8jmANis+>o3?a7}s;(y6Rr zm~=|D8?GHeS5F49Cv+HTk+g?@0b49y9V@eBn>hp+Vy-@QpAL&o4BrvYj6d#&F=<}& z6eX0+`fbZM-j|>CaD)9X{d?uo{H(`XY?-aZyNBISE}DD=iTj-ghDlth$FOuL?7J~w zhrGS67&{dqQR}VCy&_2j8-k?T)!ak#D*DodV(u7?&ER+70)TO>gfv| zQFW-=q}qOTZ95?Yry{`yYg{Gs8m1Lf_#j2&E)eU-N8T-DtPr;e>Jwsjue$zs>7csW zk-E&-c}@3yl9J?Q1-eb&-o$5OurL{6YN(bl;eB3ng*h-p&cskH8UyDxZ1wf$PW@E! zLZ*q~y#;jq;kJ4IAjI%%sog=VIuL6jE6k0hDWRJVK?`F?AzB1)Ou}POkb!T6@EEj&@BlS*>Chdt^9yONg?3K! z?`X&u`pUP%zXN=>b8(|XkL{qnyPfuI+NhTHc7V2a^k1ji8zEhKReK|(%b@iZ^-eW> zojQa||2bgTWx|x|_8G3le#Q;Uu}n#3iP6iA-O105>ZS)rg!2FGm8RqTn9)6+?zr}t*i(XJ3R&vAdS1{MycNyqS^niK8DS&2 zs@m&MGW<&w1j6+@z-M&>a2yBgIo1I=1zR{w8U=ldUd?P|7`|r+eDhj0k*Y6qK)ghn zI3?Z01R-`m-^jX=M)ny6du1p5KC_X*^hiwEKqO~iC=BDP&M;1A8=c~8BO%z2)kN1w z6GKM9po}A<2@B1v+NN5o7tyos`|dp57rC|V!}^Q-PpPT85Gvz*|1)Z$u({*wj8?49 z%niDupf|YzxU@Q_u1~jW$;03AklkMggRy`v-zf~n->Yq(IoRQ4oBg+2Hk$|eu>OAC z|Fjy;LfXH}L0paB{^AL*{##AB;%fwrHUfAK8f~m&QWxkB>BdaJ3uVs4Fl^2K+rgIf z17pkjbJ8<$hR~AfKES?>f{WxkqD$Th1yl;Q#h>wYo59*+Gg$5LSc<`d{C@`q3%foE zVkit&chJ|XqM1P1jxbo8(hQbjhT@dorueF1HVhIJHmb+!RNrt1nbiZgvrdnH1id0+ zQ(>w^@sZ}V6d$Fn?u_?)wbdWn44ZuD@LkRCs=gM$->urqzg~hBd4*NthH9JttX^xY z_UJCiO=_0sUBup$=Y)sD;)rubcm0um#A#V>hVx-6>M53N2;~zt^qt7Wtq5K#et$>oJ>xiou%3F18sg-Tx8N4IjB=jv%K= zEzZ?lN9qp+{qHs8V;}6>rTce@{6~u}6PS1HLVnZ4FFqCqOHQMd$ZIYm?vzMyL{}gp zoVmJUu=<*=f+nx2j1_)^vd1AjvxZ=>6jd~alLGn5L0WFe^=*kQPEicr>Rl<UF*=5jw4uKNPAW+VBu=g3DiBlcSTBI;l2G(=V2&fb1h!D~Q z%C<&v48nq*Q`1b{pUWNwg`lh;{Lgih1A~qQ9lG zFM3U=c3ClP)qdAz1yllDyybwFs;ClBh7;^gtyLhY0Efi8+QVI-3yFrJ0905hT{y!v z3i1RTAAXPm%*piFZ?l%d31WA{-$&KoAIM+eUiiQvVFmS9*nxzu2PiNk(*2*p;C(v6 z4X)#M-3T|hncK}H+~6DBzA-`p5`U&(ul(63fA;sE4mY>~ZbfGP4WJ?M8Q`soTYEY9 zu`0Ax=)w;!koBBKuTkj;-@+t_vBFi+Y0b?X0{aXLX3{RJQs6_gt{vJ@G1F;_U@H;6@RGcGm@s=(7C*~ z4PNje`(OI^5K4|GAG7&GYetEvxyzRBE;eJi=Of=IrQevlv#{we4rxZa8LcSe#V=uR z_&EhXl-#qSlAXt=DK?A8X?4u!>=iOJg^EsJfLJh8E0#ir7}}9HeS$y0SpMz)zXQqs@rBc+0QoT&*e^o72(@&cj)p0IC^!C2 zj#;}s@ma>pb5XQoaG|YQXV!Kb<-aLiN(FV}l-?;-bie5K@=`^W*(gB8F6R*aQa(d< zvbZZ+_PAo_=EOhC>31vr9_B_$vSCDlit{RMx` z=#w(OaP-w@)MeFP`ywkET_vj(j;?x~OX3o$R30<>i{`;V(P6M2wh7VwPd}p}byhH?7~URGs;)j9Pnj zZoc+v@Hp+&MnX8g`t2O?d{8M{gVuJ#*DGNeecRP&QR8gy)3=KNarnB-N(CL)N(xO=(m zvMEBT_j%6~6Hc*EL@X-;j?{YfLvD>!h`*oFE)jpTBh~&tru8QVLR9}7BKh3r=vUs5v-wE+J)w(qc`p*s z|CC8^@gAY0%#5{7DFdi7Cvqtwg0eLVZJ zOe7Mc1f-&X8KldZ5>mUfWJrCUsQ{UGiIK*}lpS_bRI6%RIuIrPnF%i@s2qGy6C8wi zd&yGRaxar3$37WLqyWxfI0DGg$XO}W@3|a~5Uj}jdz|&rUEKmHq79aI=uAHnF8e0c znc9MD^us|Bg)*FB@ZjVy73`pXN_7c%7=BJv?ctsF(O3#xmDuK{LHm5PyBD+6`KW}X zLO6;d_62o7wnKPXaXBG7IP^M1(k=Q_?y+#6y@B=TeyiMX<9?e^4*8^B4*EN=lPBn- zr+`SSo`Mek=ml{Q(lMhZvI)GTjKb`$CT(w*6sdZFZ3MsE)mwkq{wX@I+m`!!;qDH$ zJin5eQ3;xq@0qE!t>yueIqW*gPmDMkvklY*sUP+6TxbVDmu9Ua8jbIEo372Kf1lRk zXNj?ZGJTs(aX**;PM1u^u_mwb=9`S^ZQjS`FO`l^jGv_& zvwHfA(xr0c1eYd7^)4v8ZJYkGK&A4vGPGbq7_Sub)wYtS%Uy%a*YD&fds61>2vqbz z-+pZC+_3{k|+K<|~3PFOwm+J_JUv;ds)$kpO z{G(WaOAn++OVyQri`gZBmp1p45PzfoOP<0cWjqmk7S4!<(qidRiJd4cWF^%Bf6y8t zo@Ct_pK^e@#8sl`?JIFxjg33!DqLCj%@=Fkq&TW$mjxys^pKAl-%`<*#RuKaui*#9 zXzfp=jv>2_KXXYut?Izy7d%;$xFAu&$Q80`6aH*G>Ag1ZCgWy zu@(`d6fAtCR2c?QL2-Uqi*b^&b72STsUNp9exjPBh1ZZkt9UXaRw%Fp>0r|-GR0Fu zq|GY&=Rs&Z37ODd$AK$~G2dOc27R~9Q-_G6M2DM!*jHmrEpMkTV6o{u6+D3i2Ww5= zc8S*zbF(ftxGUBfm@ir+zouYn?99VvYD)wH?X^@)ck~%rPJBY{6Gyl^P^xIc(TD53z&@QIU;>g`;5qIwUPzNp?OZht$&=oY_%@1*2v zk&aTEYjeoA!*Y{2F652sd(G6w$UZ37RME~)WdLHS^hD`WH2@i2#?;!`cZmI z%0_^8`<(xjb+;D-J;S;it;%95FUNL?twE>_`a~dmz^f$nlOEMzm6F6y@_p}C-@WrF z1Qe-qcA@1`C{?Mk3^0)G&41>6%8K_D7f_AL&_)~BnSyI%(TCG2rI&Y;bo5j@dVE+;0N4p$J2ctbB3%`QPlx~ zJ%vAKOJ2>y=5Gm#?y58pSh43SOZW%YtehUL3~=H98vf0RR?g?LfPeJ_$yrL-u1dGG z1{UqAoT7d)7&%Mq_EI4zT!In2s>^B2v@XUwgYZOTJK(xvul$i)pTM{`cou}1N zcY=}{Z9wjt$|Auag=|J2l~;-Lw+rOU=doPLEo4Tk7DS&E7*aJ4gQAUi16PMFeY#DM!LPm` zhDzcxl#iHWOjc4UVq5BqvtG#Z;>&Q4-cmm)EAqWyc}+>=cHIiNd7dL+dZu0;D2$x0 zH%|uwQxSyf^?Z;@J(uPEN|t8yV11w8|4qGx$bDa@5^q-I9NjVtFHxln;VB{~Q`H2b zM8I!Ej^ne6ED=MH{?))?dU{rqi$rvMS(p`ZQ`v-2?d?X(XZRWZkdcLBr@nJNMikb= z|Gt+PF(EN8ZQkJaK+)dMHOrIrX-9Tl9^V!8e@A;^&-g{R(z+*T&6$W5S3#%tY&&D9 z8R*E$T96evF<9=6R5C_y&=9k=0}M<==pv_v3kG{O*Jr< zzb6xVWCMmz*9F9b7gktpj@7O5mJRd77D?D??UA4Jw;cYIrL2HG8ihPQbvY1Bvh1-zTEU;xa zf*dISHlsW%;w9ZkOFN6VvEeUCRs9S5$0Y?v+m$B&TYe7nYUHnrXxz#nnJtM)cSZ_= z)?-d{Ck3r$`3V+`A1Z8lM~j>$+%%ygR(BI42BU;~#?h-WGMO?l<3cUZ@1=ZJB%fb{ z@~h6(vS%0Bwgt|;OTNkHXJ%=F3W0+qWpXPYT(XouOHSgpRJ+)-1W4@z%y65d4g$?m z$E($rK8HHxjw%xuX)dsU4+PuJ|@^(k1Fxp+|K3a5E$k{=U@8w)7<}p ze{z6?Yt;mD49WswoD-NCb6*jT6+VC>JciLa;c;Ntdo(598XABdz@M`E~ix%jY{K zpbRf3#dPyhXsg3QjJuU1h6l34=Olz0Z*p_UmRu^IvX6@>T80-|%J2!Mw;! zL`x>J)2cjOz0kM!X{%=o8qdnwz6S|YJMVJzmUcJ7Cf(JJsbQUP$G*$d0n}}906lu0 z96Jai8+OyC^2-A?c?0d5*X+^82NL_a>C?uWgZsJj&@MgjZ)hxznhCy%njfeN zz${X!r~kxgO@cz|xjccJl12xaks79_m}uHs8?l2ixU3VsijuA}l_9Gub9y%kf7R45 z!arwhTG`2fB{CsQpR{M+CxmgRb_ij;?TKDD*{Uoquk_ZPVpTHdR~{&@9Bk6id#pts zC!VbpLc6temWf~m*LPLfoltdjh!s7?)=_xPp*Pd~{78SM2>QUWkZy=#LSp0ZP5ewL zR(oYvml&wJvD46=#efH=Dg&rGo%2C~=RJRBN6-Ztz7zOK&&eF1Y)aF<~`WOp&5&VM}_nNhXA#D|E#Z(i@z^-s@r@10DfGK)6kGoAD zGc}`-U$~O!(fdkd?gPQ-LIfj##?cM!7T+V8-!2ppI@Z}hI?AEyS`vJ&+9j|vr&?R} znz+1~$U2)&CzQldErxx3?zFgr;g$xY*H7}@Svn6#QS75Y5X4wd3Wv>#Te>G)d-+6S z#evqdvkmJcOi|fhJ*1j;hh06e{^wz_+H_sGR`-T*VhOoA)bQj)z*UI&H*PB=!_!?G z_2}46DFqXJz{Q%9JO8ypU}J4E#f+ ztQU$O9RK54uRPK9a^1aTEWy6SjHRDwQI|uN>l`^Kf@VNK=M(o;cWoD2fGMtxA{IqB zTM~3hPIZKS1n&O6g5eR-tF8SEIC71#)geLavL*-I6vAn8KYxVHJswyq7nq-HUv&Mw6pRp-05`&2U z&)ZZlQb!?Vuy+x;>`HzzbjhC}6s4iP^2!gm#tMt4qSSg5C4t$U*vJzsb0B`ZtpwT_ z|0BQPNdo~U9+V%-z#1J7*(|N@#Ls{NtJlA_;d%pLoDz=B_6X}e5Aho%91n1$m5FZ) zDvQl#bfT<0`fZhZ3*)a`j}3{mu^H@DlKAKuIrZ&9h&Xp8JrENE>Askt%ZN?uVWk!j zdxE>xfG2D&Ubnq2)p-X&gZ4pi(G=O+9@L?VE(u33E)`=ZvH5?CP;L9rB}Fi`*?=`Y zxqtDL>OTpe24@pn9oze2CPm};M8H8$g}G!i%QnUn%W7A504XO;JJNgSvvipuod068 zQm$_GK*yC`d%S(c0Fof>@wnlSM=)x}*>H60CzBxZ3z|>Y`}wv%->_tEvC9vTWkX!a zl0TQ31KX9TRwvqHX25FL`!Qeb2Lg`KHb*3b-)AMiO#7)6lfwu0)T}Uk@qr_4_6?)& zS`l>N{L)2~q=6Js<((dqg@SI;O_Fn17h{vcf(b6O4qAIvXFYaj;nasaxc$A<7EBqe zuK%G|xVxn10nL(V?K9?_7Ic#6oHSA`Mpx-2w}z~JUr>2$His0T#j>lZA0F=jsxIJ8 zFtDpV=KIC%ZK4z9a`*i zP-VJ(8+deXVbNFFbLop)8&xNK_I+yo3IXk@>oZ^*Q?R(+axi&k(xj>*AajVnTC=gM6{_pjRL$=l;#l8y|f_Um+r0DwkT>s)yvRUU@&1*6~pr) z=ng7FcVIuW<8k`j+^+z$01qVaIZYj#~(mV-07%8ynJqWy;JG+n= z38EkKf>*71i{O9l+1Yv8vty9mqTz2QAw^b-kets}i+E{l&;&!PamRm7{i>NCY@(rDd zD|rh4G8`752d!4({IDu|;;5pkrdaMm<_NCy6sb)MN{A(=DjN|ve>3@e4rYiGCo)F! z2Yb~>au0@wNt9=JB7RmVg{|AYDB~b)g8{Lo3YfK_Vwge_{)A%}TcWU52ft9v(-YrB zR7kieJ^p8}9Sll|b@k?TSxeFA*vB~HdLc~==oXbb5(#}j) zn^dBmO^Q3NK1rH-uH%3duIEL|72*CN&V|9sJv9;#NqZ zIa=#GP-Mz_$>0ZRTD5CG4YhQ+Lh-*~gn^7rJ+P0Nak*S>nyQdtgq`-ddx-O@~@@hTz*aDTc@7HeJN2T(NVeoXre(k0> z*S$PC_YJkCiKl=AF&1SSnN+bBH6^Kg4YAKguZ6P!x+@WcS8=^ANgOc_b5=aP)XvI> z{3-2$iSSN_R%VZ0E3>C1c{Ot=He@1LW{yt%$=5w1I(9l59~nGOZ<}R8m9-vCH_2E+@dSlw^dx)TSn@T@_&Thy&KkOPI|#ZHUN-*xL`rrHH%RjTR25-V}fDuLB4rf(w>J7tLz^6xUWsx1QG_hsti znW8B1YHx6pD0$)j{+j?DVhUOV#{!l!NF?(z`_o-le97$=u-iZlVrPf;(tLupZ|Owx{N23$u5DurW5EZkeO13;4nua zaK-N{eU-#A*^zjH==VpXEz=rI)K!6&02ina^K;fqtLN^{vA_(0}WFx%6f#2 z`x3dFZ;qz>6xgSb7(sL=PJcJU66lKGD@&kLO`s#%BGbWv$uGfkT`qPM_v)l)3GVzt zIgT=@jpd#>hT^etAAzjw!=%D7s#WVPR3tprC?hHkcgU_m@=Ap{$gl1j?(gY>I_4;k zWa;xAq~&6-c$Hk|XRk}2mCB~e1%8K99m6iSyRVDj>_vs9uWgT7g6xAGv}1H@5|2`Z z6t1lVo0JW|;Wq7jHu`w0n_~B&DwEZ`HX$$|_;7qn56@Y9n0^QVwefR3U-R&Kd`mB{ z9M~4Mr^si7Yq4d^NADLbkF~QAp=oEsGHBPPw6c9#Ss$%;aS8~I)yg`x@5iW8YkNqw zdH$CB^0ZbtSIDmTIFAG_i~5h3#&6mhnF_qUsXZV{0O|9;yk|q8_J9Nxk?_YxZk%y7;h5dq5T= zvHEwI9yp!T%9zJFn<=#yy&ne&f4U6>DR{!7eW?8TMO(Bi~dbIL!abb@kCZU9S$FnC092`g-0oqM#_VlSAa!_ck z56TLrsiA);5Ne3%vg{KKs*s}0gTUnf1%=`?g|-86pdvwT$a+ol3 zD3Q+;C6Yr$LW#6fj>){__CMt*f=D18qXOs;mz*ThrsS=X4n?`L34T$!k}~}Gp(4TP zIV9I~t&EV(nC^(|Ru0E){Ck%|&&r16s(cE#u4?C=cRTs_DgQp?S)6M-;M~pchgRC} zxxY?O?ryD&GyBFqc_m1|E_&T-yxPfg0@B{~kZgYE`F@^n;~y}3-Mc{IUdHy2Y*Bu{ z&UVGHNS<`tPdMmr+|K=zGHR_1upN)|A#pV^#zkysM)Q(CW;*p3Z3g=jL?$)%bX$LN z=2$eW+3eQkNU?adl8UgTmY!DE?({t>_gLJ^#i#lou3aCs-j}An8fGlXK{>!50I}5--YK&~hzrwXC+n!uS2(5E7 z^|BElf3yeALR2e6rgT%NAX#%g6`TlLF^UZO>N7SO)W`e(febpD{(0$(=pSVn_Idh8 z@r!U%=;hy1>3x*u!>koOxLEwwRv=M@gHf9*F^djCDEZNJJ5g)pT%BUp#_hQ9(JMVB zqQp~h+z9#GBgadOUCdbu(yBeOS}8J$YX(1vyxcj@ORgT~2MI9V{J~P%1LeI(qO2NOJtqMM;3W|Mts;Gg2;qpZuRnZpvy~igNZCCGal#0sl_o(kz+3)A5 z_pht>7u(-^)%TCu@1Iid1%gvWlkD%k>ih56?+4ZUH`M#X8>wFm@+5)Il_2n|pMrcv zHk`nv2i=u~TPL`s_AH^fQ@n0`CWLce2&Y!bJvX<9Bq*L2g_3dNA5_;?42Ej2I9y$u zFKR8Tt2%arw>ox3A$wCulMTX#*xOkBT1$GK1gt~GYtvdMyIfvJXDZ9veNROCLXDN;vsJrc}3c5`;9xm}%Rj&sTLv?2d34N0B2nuJ~vbr}CG2}=vE zt9!$=61~QQ$w^agIQotLal|s`#?(w?6nQAin}~pak0*HzZE8_TZJ4Z*=HV0KgC*h^ zInX1+5rmER6j4py^M+&9Pm$PJjgABz&-O^dDwGxE{prShf}bTS_=&5B6wuzpn{KJ^ z>Ze9J2PI1Fm$EtPj;9Mu_={lqEaZAvI`_L&Y)XlmdYo$Ms3v-k(L|lo#7Mr$%x zT;<8{@D$~U10Si5t%(TPNuF)jUt*Qersx(_IC&m z)Hn{OFkc+Aq|o-k{=Am>-q7~Gkc&L5XLLh*x__LuQPw_fvY32i?Jw~Dmcf4DK94#*Sgj?K2~?vYu*5FZ6#!cyeNU!Tja z;L4HNR3H|`ax}9yz4T_nz%CqhX_lT!p!-Yv&oz91;Ww5fubDW=rF&Fp_}=5$repR= zc!~i9FS1k9tE#oN$Z0%xr5T;&Y1=ux1+*V_p&BK4?4YQNF8wzf&o5=Z!1MSkEP~~| z-%Mvvh20&ABx@r~hyQW(+Zps>%LntolrNV%m{M4tm#J3aN!g=alUF!jV%Ij@oD!{Glp%qbfK@3YOnt>x9>!kigHjbQWzkgl5pQqmU%KJz61}SqA;VN$YFo{>e?BHL$wnWniPkFjx>IRpxFf4 z`+b-!0wM%QX{`{XAkB5W?BcFkp~OVBgBJfwNSY~`=uA#f+?|Bd8T}ZGQ*l{qpv z^gbtRLNH{_XN}5wUE4c@ra9zYoxY6PW-jxcWB_P(7+Ci8OZ2X=cz_TPRrLJVY-PMY`WqGR>mA-R(C%n zLU-7|KC+oFI*oF@Fs#j9FTd@2(|;9wusg8O4tYiTSAfo6jMV<6Q#MiVRbS6n?tfP9 z_53o)ivWW<9>&XdKlm%_i_{DU-M!)3{m8%F)*sn^y6=yK&a{X(x`SgaRy|*#;4DhaW7ezBUF~WQ#jfz+c3f#09fgo6#MkdJ6|VLfz6Z} zJ1Ba$J4`k$%Tt~o`6lMedU;`XjiP00UgBo`g;lKhbWlgI>Io15_B!_hN3ONrBJOtOU&aANk` zFk}#35Kgna{e@Vc*Ny24Kw(IQlqhaevHmtEUQz0#2$|h*CAmBhk zJ5@J9_{;L|skdG7BtkUUkF-Zt(ienFJzTQ1))P2_g8om4X|B!wNH70RA#S8I3Jrf! zYsD&F&5xY31WiRU;#Ncp=xTGKQz?_QRxw$TNknxagOm^hBwF!p_I1EGogt~7DEuJo z|Hug8)}?6jpH%(naf>=bJ#OW3;}Uw<%MWr%>HZI~ST(fS9~$Kg3!UE8-6V}VJ+tQ1 zF{qHuiSwLZc|O-GYpw4!)hC?b2+_Vdu^-OT=}G?>R4UT;NFR0UBi6An#O5<&GYW-W zoM(YgILUPXT0;vb4F88s_edu|d6Jd^59N&c;Q>b_hMRbq3#BbQ{~|?JeZf?r3RF{d zLq@ke={XtcmwlFU(9Sc;%fgzm-6%iX)C^={0)C=d1H!b{vshICNo#wU6LMs+H6Du{ z)-d!e$NF*vdN|lF^Xh)A**dLy*0G|HS;v+4wGdGuF(E>@m)JPL9?ZW|l@ymCjxu$E zGrN3SbYGlx$GQo+kdWG&6PCyyd|-ydZiH!=>{{1=x6wq<4c)cLpWlQ&|8*&;Gd(g* zVO8@iZ*}b&iQbOgo0w@!)OZ_lcBhK+UJ_(aUHiV7s#P-nO8CJ$r8YlS*m+!7})-kUYTlZ?Q-_d$o%YzjGmv7=}FJc zs`2&+zOO*(f1aD~k+ly6RVbcfZqQ|Z4L)!5{A^)mY-8>GLCD=!MQm0p<##Y0h6Go!Qd7iD0%3yIPw4*t=b)X|B&iW0H%<6CSDXGLB8W+ZTImL;M8ofd z(|w#0#o@G}syE6n_cU>0j9-!vYO-k$f89&|01+BFQG~8zG%s1%#%HHRd3+~xD|QKt z3^{Jd+MYNcoBoi$v+kFMKj3b7((rp5{?YK)cpAnFg~pr6pVN&>oq50|#AZg7iry^7 z|6M_&keCu+mnl3EJuF#giufF$!A2doiJNilR(6zz6~cb(9K-)w(=Mw#XkG8oN!9VX zbzNbQp%M?VsoM%+OnV=`T3Z@l5<{kM_&-~6dJxa8ldx@$kxdf+vs=tLO$mKLd^_uiZvD})-ZuT~IOYKtp(li3Ujp^0^raekhMf0TDa%g0^86c{F0?pTwl|GU7r1~^$m8GII95@PNXAYxNZLT`v_N6d z-_?lu$=fo+R33>jv6FeIYfr2rb__;7blKJijv5_~F7G=0n={$SL2xVCKVx&k*k`INd&tTm<6L=moeO6wtHM*Rdm^6zQ|yh% zha70^l*pgLR4II5o(`1t=c=GN&cxN_i2*@>p040j+)AF6lGu6c3Nt9?0Aqp>-s2%( z&uyeuQuXN6V{c1;kHqH4A1v1gwKh>aSnm9C!sOm5KaKpu<@#Z*?PmK%x}~*U!Hu2* z1;xGn&!|c=c*0T6U5qb19fiUcjxkebTFlv~^0{C8Y8rW8z%MhZbJ}I6iwyIZm&GRL zN5@M#S;x_#M&kI)WXEl5JOTUS#^cPcN|7*T*}Nssm*n!iN!XdDBE=|HYS8Zar2=5N zFP@cd^?82D>SVH|4tBHQmvc}|$;5~+REwmG<7-DtDm(Hu?BCqhWo(XF9%}+7f`-q| zG*!h64X<^LY!KziA;6JaIoz(U+Et@P3SGC^dNZ+^ypp!@fFOm;?}nE^{#Zc0(i^QOP9t_i%XJu$$c4BZGjKVJ*P}p{Y=dy)VE9A3aAFqlrAk zx;DEfdb~BuT|V2b&BnR|H>p{k^4T6OJlhkU>9J-Nmd}P`nq3IsDzu{J4$tXS(W3tp z?sj;xl5eWY+aqTYUTn!3LI2ixqJe!QCxmU|~Q_;wwcQ>S0hKu+?5={Z218X3i6}uZ1j=q$PLGt8WrC>}X z9Uz*5NVl@eD?HjGkE!1QPkD|OYqNj5 zkz6&AK`~HRUg2(BgkN6-ihlHAb3TgQ(QERDGcp!HW*W&zY}|t$Y^In(YL;sWK%SMj zF9^{BX$_;cFA(;43*b=BNras{(r1uwyoToDWF&aa)^qxP+H`t zs+BsVy5w%+JSlptMB)*#@E|29EpW>YS4YrAjGMQxWWoU}X!Yo>&gl5+T3orh@o|z9 zKo?J`kmqGk?Gil9bfFuTT5F?=3qx4!za~M#3c6>;+$CJF4EPF{hAP2fEP~ehF(c-v z7n_d+KV`iT*&`1!vWtyuO!Bhlc(@{K2zXQLBUrf*(w=UYU?3>*e(>NSU{goP*KJq- zRW3Ak2A3t%WT&91CXsoeAfNPxdF(&bb+UV&L2tv>HkdL;D=fXS-@ZfhXol8zLHw2_);kiBj?#nusTBujPkL9LZ>{<1gD9BqZVvq;_nIt^<^%j?D&!M z!#>|_O%{p;S}RQxSr;f|aJK2s{n2UpS#|ypx#wHI!9+8)8ORK%zBySSEQ-i%S^3N4 z*og#8|G2q)2cKi1As@zls`yLd5kT^l*7um2W4#xWp5x^!f*Ep_;Pe4fsPHtvG(sC! z;M*rl1Zrq}UXB2rFgN8{OD=+xB&LR^;cLR55MpCV8N{SS*=RUDgkyT6>iFk6Gn>Z1 z4%5Xr(%LKtf-#ODh(L0LItkeLTgK37X}B?m3!=wmcn{BVTeCgoGd*6c#^ zL~~OZoyAd+o&$wA1skN%zs;XzhHon|5cn?OC=XiuOy7Q$5&nIYaDpa+{!I-+-f4x3 zyt_3Q^3HcMQkhScu)4&4TrH0$@>n*EP*F8PDyRSyh;mHwS?hjKu86s;kJwO=xv{&l zvBCbbGKrs~WyOX9<^m}=7*8Ze4^dfHm0PAy^FpTybs6v^_i(S|3Nw*;P<)ishj#GAXgPxRfG}T< zEJ14(;bF)c!VDopo{$oG0$~@GJRv3Wgf8R>guO?eumUZj>Qs|dBRyoe(K4CsP^{4t zf>8^JiUPrfQnd8M++Wk90g>x@!oK&dF?zXi>Y!T4ALpxu{3jPH_IJf{9EMLN0PLc} zB2UL~#L|pt?E%!Gp%@zOmM#?k8$*l+%8#Q0|tK(*)`7`DGI!LVto_ z<_L9JBM>=Hq4%3beUOnN^eFw~h(8I(RoE7JptA{K&r}^-$QTc*F`_AU?ZrrLDKk0@(h~>T*R>Z~}1rD|`4)NQqiXNPa!bZ!Pi|<(DG)y|nyZ zD9L+0#F%WnA05BKF=K?1cSp(;0|;tQeE$R4rCRIbvKmrI9F=1vFlF+kR}!Hx`Yj!k z6g_&G+v#MeWu2E>V(bOIDVB!sRK1FOGVN~VO1Czhz=-bkL<9o7*fGfuQFVM)HpF3rSKNm0=*}yJ`-omsK?N!>Je$@OLEKR+2QOMfIt``FXD{1)cn1^aYi#=*W zzne|JrqM5FLU+l89#9zI8hgrTN{I=SIM#g3^7yxKf-wQfYXt@5`MZ`(w1)iPuGlwu zpx#^}Z)SQ(6BYX<^Xj+3^_tkvm&eQkuQ>lFQQ?q$>YDD{)$1h>aW;W`?oaRry4s}k8X8(bn;*CQKbOMm+I1F zyGwnkF5;VwWw@u{bjM`CEF$(qQk2G?^6!9T;M5kA2!a4h92=T#NKV7^F+tf` zR4f*%tv);D{V-m*ob$~dLWcD% z!A&(vA0rA~gwN;!h?I^Kp#HhQ zOXrdktjj!vKUOKBh&w2I;EK49NjW`i;hsDbOTG}mTi&y~_Amwi23<4ku4PNt zx?zfg*0<6#t04NzE3?{50*+H8h;=t>6)o*GkYL+(G`6i>&V!@O$}bOC~r& zYF0x^-k0w1$b^qT|I@^$go%9NZ!n^TZUs~q9A-qHA~+kFY&D=-z+Xi={K6SNL-j># zJ%^HigZ}K{&}SPwd5HepMt?G9SSGgZS4wp@3M-5pdO!M;z1lxZ7ZO?RUkAi!6&zHM zVDkZ#)zx0Iy#zT()q!`d-Ia;bm7T*p@RvdXX?f-4P(h*$vBS!>T$B|VZ)Hby4??r3 z4zDBTFVN<~sZ9}bbb1Q=pZli~Fy*mSe@eSEgU*4w}@vF5ebj{sTCdmJ>g1neau%-e)B zLY7Ee8qMoohpti^U${;@nyeEr?#{YyKTX%IGAzo2Ch|O6Y&AxOPhv^TZG^C4yE$-(_o$769%2XIM~9 zvnKlEOU6cu(0iBXH62HNnpbIRwecuQftD#5j%ZA$;&B4-Hkkd?BY;6ra+lW;bG4S% zs3-fxqQMlgivAK<0zucUrPGA5gA-qq^yTtZ^oi2PrL5AcN5&&g^N%~CLE!$VJt?8z z0G0B*#yd&F89BwV#X9k4!WfH{w4kIl$(^v@|0mt>e>|Z`{j_da>UxyARPYt)6OmV* z;wrJ!7sx$!0@ij3-7;T2eW`RF*Tho@=&-Zbym@#<%pzV(L+Si*3^H69_ToK(>yY@0 zao}QC5ws4-EZ~1#k30jjDpB3aTO%sQ2D$r>OB45d`Q<3fV~a>Zr#&KG%QnEJ;U!3n z62ikH8-5#cNqx{Dj+K;1zZau;_GPL&jEjMyn92HGQy398TVm7H-OcSpE!N3YLgJJl zNm;y6%y`;_M09;foUdBk7X^5TVj2$(>_xj?qO~cr;uyUS`x9E5F#D;Z`7)a-ysy@J z2V$S<+I9GwV|Pcxxrud6d09y@+J{H=mTSZD?N=a!7gLUT}?S49o`#O|@51mccglmdVjuoD$pvE;M z{t*MaOzb`5@8zmzKJ1HcIUJ7NF09;O#`r?9Y2QL*(}vV39IJv$Le~Fz$<2d|0<)ZH zDmV=tGrFy+K`_lUe;!9go>fIeI`_qmZawP07=GOEzO+exUuspMM>a0WYRc84Trgy? z4KW&Pp#N8eQkwQ?uL z3r#$!YQP7qwn7Qu0CcVhs*o%a0PtGc0oO=GB!x)u!&m49D?mXvDsqw_814nZNJJ%t zA~A(hXcaxcwEO95^BTds!rjaHH$7B)ge=TWB}C){Ul*t~bw>85$7N)ljBHEfUDdmh z-mI5*pm)$TofJTDK6*yI$h{>$jgbDHU&GRdq}aAN@wO9RUraY+e?QblL~ zL^Xz}rf&Z5`T0T#P19DY=pRLKD4G#pXa59~TsTTzOn$7T7rU||0|<-dp}NnLdw*Bt zc%^+LD>G~K?>|x@AWLxR!01|AU72cakNn(L_HYmm+u+chrE~{CO%*+)dXzRhNect* zgVGt&Uy;8oAYzMB@j;D1Y9af6l(8592`1iLUs4&m46n2l!iB&ZA7#gPLe{_?}C zla_}Qk6$UhRl0~wp-c_&+=67gP%~b4E0Zi^XU;`z$i94ri!8xY>iSaYO0Jv|WisXG zG0Op_dpdJW{*O(h-k?Xa0A;cOC2H!h!}?+AGWC@`g>icdYn&-$`i}BZuw{SF6sGBK zL-K(W63>Xv;4llLJ468iW~w1NB9}RclcE*HLSGO?F&xdIT!|6AzBF1f$?U3_PWviM zH}+k*L;pO8V7H>oCW(XAQpHlT?-xP;hO8@!g%C13cNUeevR0%WH zXO|oXmrc;)%{74N7p8&fn*i1wsJr~Zd~q1a2lJaggN>BAgS|O)|6rE_SfWhMdip_ z5!JZQoWq0)T*%5w0{VI|!UEeRY?iCEM@O{BK3d9K0#uVz+&UQIOd#%J9P5?xngbDE z`JBPXS>;nAUopzbhc>Bv{^7`pMtQwEGTta(Pzdg9sh^mowS7Pp_)F+Gezdet3AG&b zG_)(^@BlB!4+Ozud0K`pt-DjFaW6&vfOOvoRDQ~ zDhox4-m|mrcl{;l^7@Ntd7xXcKe9h0xm-yoinw0IQzulRJ0#3j$h9VuJ|+xo4>4i; zV7huxX-wh1gs`vye%FxJDYDB%1I1=WZg^v9p)P`5oefTIdaN@-Q8&Rh!=;mgJSquU z_%onmN=}l4(fN-^jbg>M#PD@s!KVF$5YwanL&fgNe5Acn;R?gLTg#qfINB=RyF!oe z&S}{*#?=uYbSVY$L`e{9O76LkYq>&9(GWVI%f%=_!LPDUYq{hvaAWyO&OFpOIaT!A zN5Gu1qKjBAVyuu2094UMz8@Z^a@Ppwrg*$GXJ>blfJ{@jsS)S{d#7$=2tVksI!1b| zyno~%g)_hy?Q`$Nv-Ocv1uE=~l@3JmvF0rb7-I+m;63%g0RsKh4u-}0)7m$6C$8wj z=lREkq7Mv8gqB=_VDx*m3%c)d5kcZ(?Yhp7iSg5`3P9_2l1R-sr}v9X_DD%~V}~l( z^Th?bRh5v=aaFSW*d-wfM7xV?|GC|&z*Y+q22y=hhxRU(hYCDAR3M6kCNBihr1+3=sk7 zmX1NJ8=j{9tl6=N-w%_)nX^XrdNI5V!GElc+Y_8Z%=OZ8L$!NMS{Vd(|yA1pAmub6uxNWoL{XnSY zeeai<`NDL28GZ1kpQZaSF(d)Cvtg>zk&m@yPXZHRC>*>x<6;aV*gWiNSKgu()Plkk>ZvN_a}7}Z-MhuUDW{r$;rhEnV4NGEt;d|_h>bWE1D0px|olfY;f#080UD@t#>1WIYwZV*_A z3p#1HdbYoRo6knFqwuf4d!blxf&RO(JRQQFZWEU3P-|sS$f5*a0@Bh4_WQdRoj{=t zzc(MtQp&HVyrei7^&g!pdhT0e2(cKaf7iAvy%Y#|`<~Q>$sKBkFmN^-!?saAO*VD4ZwI#TBl1!LH&@3( zZo$g9AFpO{K)PhS%#q}mEq#}QQn?{Dq8{%n8_GuOp zVpeRLESUDldgrW$S{Et}^gUhV`2q4v_XypL<3%R@1pHJEz98pCVmx9{Zf712Uf7N! zx&B)?ZX!UaB&Km!T!l2{jv_`ZOSXUvt{X{|5;fb}I`IesS@u)4L7jz&86?qu@mFgXft#p52*~q?d z%r0q<{D17d4SZa6o$sIIOxm;wPLZlvtrBg}XjrYbyPGxLHK#p8XUYW1gIb`gUBlL@ z+}$pw8nD!aG?3ZDU|kVm*WKHDum4@WtFm|91$0$1=|j?%wn;0{qDWd)l18AQwgF1# z|Ni`b=gdQzq%9QJ|9$;=(afAP=i&GGefWHzwz1svZPFG)`FsxJ)~b!PplW^sWsL@r zeU~xIj6~eb;b|H&3WPFTZsrhXYLPXsk{0oWu^G^KL*x!s+cA&i$DBJ2{nMQqb3Mac zoxAds<83>el=OLxVN+^xL9g>HLES3wU(wdLMP=pz3Yuii!=3^Lo;6kNwpmU3aX#Gp zuRzz%zV1^Srj>k;ZzWXD`v7rXK^8>F$(718-zN;`NrF?1D?eH1h41R6HQ74{G^~Q| z{)lI&d1fWYwTPEl-zGfkax2-kIZy8=CH5bYtT`{9f+(|;0zQ4ss+K8A%b{~V2 zLpi8N%wowLtk$wI>qYgMSu#){#=f$@a)(>FeNifT9*k$_T40Dgr61p(srb+5?CNPD z$H+pM&^nsu95DL(MSkQfQulqNeYGWQ2pf-cYRutj+I}>a)ns-bTk=qZt;MfeWiTcb zM%Bl2D>I9_z4HuH`scW>H)$UQoXNI#Dtch~)0yq50#Ej?rs>ye zGH831p{z8->YU(WPQoHQWD~B|vu-JR7C-Y_ELG}XVWqDLAM$Fvk+LpVRGdL4)qWO! z*uDe-JmP@kdviLSb;q!aox!UOFL`C->x#!jyDkWrGj0HnMmsy1XzKGKY*xZ6=+SR` z3Xao^>)S;Ssy|Y+WwrhT0Xi|6^n9`M{aK-Yb_XR_#C$Cgg@;v~it!rRlnk1T%g(hK zHK7myJ1zbzMA1@E?uN2Y$$ue<;=f|NhGL!>^M!kh`I?6q=4%C>SHOU;o{|A4TT%l4 zL~^!6X!tzm2Ydp*kPsQ0FCu$?AhJv6#Z>x!aM#?D2I7jOq^12Ty4)(0Q|(}Lb@X2H zBNyBt^vgcOh~3MjYKejf=t8`zELH$dga3Z`^!Tq;08xF! zEFaoG0FCQv>yq+DQDhCE9C0bh^aW3j00^Al&N?K4&zz%ZTjb@&1*%yI7lug}_DnTA zjS1>8s@GrkN3RiJvSVU>PwVNnQ|o&SssVE&8#KH|-*clYs&o|Sd#HLG^cKI9GvgJ$ z(|jRcgPOzlq+~Vz4nYX>uk)hO84UCCc9dPgcAO@R@K`oUHFz`RjLuMsBwD3%i~tyKJC9a5ig03Cr#sU>J?;-m#rUopnEJ+r3x!XiJ+_~E_PDQ(B4oYQcGd8z3YBb$Y7yY*lNpTBQwHy&^T=d{iN%f)A zq{kXO#t}jc3(1pZsYRm4MT$_K9^0uq2@kvk;n)t}I|Sh(JnT(4`$R8%u!n4qv~-I0 z9*lM;%gBh)yY9(g(CqUjUcY_>{A}Em2TTM0K?QT8>1Xm_7<*!h=SA<0$YKI9NAnti zqGyJxH;3}bWMIJhzc^ETBBli*y-qMEislgC57|)_)U#b9+wWHHFiUjL+8-LFEkGy2 z_MbGjm!xMKy!Fov-s+_zUuFfB9D6i#sLa46IlKfxf@FElB04+kXm6yooW)9=;h`x1 zOAhTk9AN<5&Yprna8s^PcQ-R9O;?;^b6%^>iA;ueW7O@12KG(V<3Ia6^9^1TU^VJ1 z)W>n&$nqBm#MS1O?T7%yD@DtW3=!+Ej;B!6 z)v)wzGcvjHSmalIDcRD?`XeJQI13r}z}N3BVJT{O%z`*ba)}F$FrJkeRP)Z>h}%ub z!QeW)uEwkXQ?0K6@0C7Xyaw!=m7bzxPUgBCw$%|;B|iQvHcV%{(2;sYP#mhY47U;hP<2epI57*dQsy5`tvpGF`DT9)9D6FA)W5%wG z9xg2v046C8#lW%9-=gC>)^}hzCZCxPbOk%*1!TJ4l4-VpV3vO=80T>P8GLS%1_Bw< zKrKKaEBO{`CxEZ~cT_I53fe(4MB|DGTtPFoyWLBVvt37KsfFE(UgG#fvhm03zMETx z5~F4X0vOAWL{KNOEiFO=t=}Q4j+{li@FJvss#%J(=uRv2BKCY@;P;Wy%pvXQ`9%NS z+(RpSoWW1^zd!EZDwha~V6<$H3shjfI}T+(k22}(q!Sy;A|P+kdrM{Yb&qButuyq6 zsSXw}t4iP!`@Fj}iK(J9FhQdR1{B8bZpd@-Mluj_y6Up%z23Q{yeWAuSf!av2+6tm zd7WrZX?`Z4#RZ0mV8xxrdi(TQSZ^#zLBVDoMR8evd7+?qwSB8#wFUkZ!Jv?pb-YR( z?upA!rn`1OOiFKYsrEZHn@0Ojc8l_g?7FFhS@h&5k!E~4>wVRku6LMYe#z&@VbbMJ zcuq)k&t$!SYr^$j%#WbIcN&IBgL?doAqy2UF<^b*Oy|M#Sx~IbzQj&F87`o|_8f zZ8sLZF9dwbjNPG%DoK64;8C+i{v4HfN()}B=XQ< zEH|4Yorg*@ho<{G21hCf{T+Zp_9Id`NH2Hz1D!*qgNHLivWU%+q36)F;;a1r!4a

    KP@_hiunH2mnv3o}nIr@}j+2pG)*ktdn1atq`gW8cQ+US>ce zv+aPCC5+0bpxs6zIWRV-AyRv5$vfv3Bx$i5YlHu%_`sUHwzcX%r3MQw> zOTZf0yg(+?8`Cp9h(4j0>U z%d8Lw$+41M!L}{bb+sx^hrX*P zF6_s_!>oD{7ii3XHGQ#4?<=M+0c{zoJc+#AKM8qx(9F+Sp)VpXqA_d$O9UBP=Oh~Q zUqD}8y(Q1)Je&08)Wiir4&uUfA}%5_4Ch4N3ooC*d1u~GEd7^A776GfDm=I(m|1`KqHy7YR9_2c5$Hn33FshzJpizlH8XQZk><}Ri zd6l@iNFWNoz!i{?#8vQSISpBM z;Rm79;!S3qg!lo5c{eXF2L2gfSV+IZ9<7*SoJAlgR*^Tub+8mkrSlLA09begd2l9L zC$=qkGA!$SL-LGO3z=#$sKUN=|0}O%sj22aGv7nG1+3W(CS5aa5?GF#X*n)En-_Q& zwvY3diu|K(II7726KiN7@RugmoPjDHo^JN6vBa6pVEj#xo9Q8&SppXj#7?hrua&t5 zecY5GNvY?@KM#Phy#JHpt(>tjx7LpuaFXeRPyQ%d@Y4ybflK#^By#9EmH1r&{ z3nm`xVK9;Y_*IJDW<|98{w4@Py7UPvLH`G9Q-ZP&pf|<_4UsX^U+#3BmMK> z*{7F~Mu`2y^peRe3uva9Y#dGu>4g5DC4%{xNeSje^rw(sT2bZI*q;XZaE5-IXm(vGb-`wWWt#lnOUS8pDFPy z5I|Q>Ab=Lodr-Ft`fO|+>oL(|*mw}&Z@rppG8DL`XfLw1#t5$f(8GPh!U%_^ONX#9YaVTtT|bns z3)b@l6JvvzUIsq(%JyK908@-lnf986Vn;&I_XKt+DR`(3>ld4SSdd?Z&8RI&xdS#M z6K4107ub)1Im&EHKe-V@RNQPpQbS`RFw2Kg%hS85`2X3#hj2>(d&cB5^Cb2^DL!QO zo5rWw4R)P2-J=*(PBIGQLY|anBM(t~zR{3Cf>76{w#NqM76<)zr|hvb)|z7hl&mcl z^McLv$iif!9_=Y@PFLMxHmljF(u?Mv>t;7=qoN!=z7D6{ykex_i(>!WDb|08Pcv#~ zpDmar$^6^*PiUV)YYw&``!B{e42FlmTLJcqe6Jm=)a3pJIlShd&VXMkz6P_v;VMDi zs8Kjz!54|=fS-h6H9CWelt;YL$K{*AKM4i}PFqG=isZrW&>~g96hAisQw)g-pRX=| zQk)746YUY2kBI|(0rURBD*7YE&EO02qQc}y_fCgD$$#`iOiGQN*!fR|uu)-XgLVp` z4GESmkw1z0qnO5=c;@M{WaG2(=#t;WNnEwTRNKRv*reST7rj_1&(dW|heoRTz6$sI zStd4_{*&$pvv*!IePm)2P0`5BvT8gv_~i$7ZQKCO6B~53tkJw++>)W_#FSsH6vnNGx(g6!QD6|gFAclNfqDDls;YZ0CfWcS`$*CvEc^J zYN3s%PBom*jB5EkZs--88TUw&pJR3@0T{voLe!1$i{Y@3A-$Uv9C;c3{-@Em$^HH1uV|EYljJPf z^0!i^al7urCf@!5w3Hu8yd_w2KrxffK-|As`ArN1Sme*yXeE-lyNAn2m{UNK=I)k` z5g8sO+1aYOKMlEzPF4&*%t>v4+lf9quNFJa`%Q{m8? zCr-7#gZO+CLowNyvZ69tGhsl1DEP_a$FMPkCl8u5gK*H^GCXjfM$C*aQk_)=%&<)# z{txq$IRzhH6%OV@hRZ{icd=V6KDkrQMySZiAGSA5@Z$ruvN+jB93pOWzNt=K4D`F zLKpeljEnrD?xd1}46gg1abMbp-Ww(bG4okSS}ke#u7Pe&BC5*!WatCg7pqsz?H~Tu zca*og{GYx>Ou8@{_7bTn&c%fx(yf{)1-K2zAgpFf&Ew~G>Q|^D*f^Rx1w8<$Rs7#X z+n2fO38-EsL@w=mnCN-(*FgRvCT?~GvGrQ|zPB-Amij6A`?W@LJ5BzM^r?sd<7GI4 zLmW1QB{kz5A{M6U@+uSk`Z+U@5eZw1&8ocyX z*<<_N!50U|yy!jqWAz6{DFk~U7QN?yE;%=bFUa$*uF&t9(djXNGif8sVh+LHq+9Jx z_^j7Gab+7#M{bP|J`bIoT@7DN3_c$pd|?&d@v|Oi=e=Bl4^VF+9qHhb2$yW;aFtiz zr&D++SG&;%dRNu&`NY6G>Pt(a4-f$MK)?5i{&)XfX~`#go+I;*_leBSe@|MV`kwhc zp401nV(@=XD=YDwy`Hn9?Tv27^Sq|?rWtMr#{Db_e%9u!~IiqBE7fG2_s=d+i;X%Nj|Lz|y8U7M8A4!pM-X zn*D7%H>o_cWO8|ik;F-bsBM!%Lo2*Lzp{epk}&w4WaZjv%tbJ zX^xB_|KU11p-C`lWf1i>TVUl{F-_=8O!`H3fegR(n`XUC3zo~+@GMS*%jKeomdlBM zVR7t<-Zvl{M&{s5Vd9lL`GU)A>O%zi>{|P6HMuF!EA(2kG>oxAYobtom_Txn{Bp$^ z$uE<|{^i6M?7eex=_?D~Kb8Lfu~(i?6J{9Z)KvB|$nfIsAfe`e7PM$edSded6mJ1b zOeT>A&Xk^fHCP-?T2`l`C#CVED*;F%yL;`Or$bFnVc)X(9)C-F)Ka+9p>OMo>020Xs05Fh;a4eHYUnPy zaU4+$`9G_FGI|`nUCZM1=;2hv@NDMR3<+ZUc!GF_^l<(9$!TFby)LAO=l=6JdRW4V zVtV-WKS|>?)KH`_x2hirso}p)O$|j4zpG3P40mSjXE?yhR8q3`IzMI1Q|a<=-Z{PG zd&-X<)TBogm3%POGegiVi%h>`I!qOsQwAkYl*q+ zg|C^*Zq;R%a9N`Bd!|Qg=kv{W=bf47tFzl%-`F|gv{E1?vXav+u74n@r17&{Aa_bn zMeo@boBuOa$Fa$R;^_tVQ>)wcUt6v)>yBRib))eg5&H1_tj1mI%KfeAF^#?J*CA5# z9My%|p}N8N7d?rqTGj38s)l0+@QrD$i20AX`$k8dnEw-gYkjl7$MqlDcZdwuuj}j? za{6v~jXQTAm67;;6erpr;Wfi=)7=^8DoUQxA+v}{QI(vn{tg^zzWA$uQPOWGHskl) z#>ZQ)as5Se+*0hmi)!7{MbL{y+_OIF)-R%HgE_7;KR0m|J!;}ApbZL-+pC(m${cf5 zNylc**wXZZdq-X}x%-sz4&DrdHV`08+a&s?xN>gr;nz)9e8`lS@$4v*G1c=;MmH+M zD@vIMFh(ZZRfMR@+R(fhXFU%IJeQ%C0SevdiIoS5bMM-nYRjrqIzerzOt;kj}Z zj1Rt;dFh;l^Ak6EU%$PUDI7lE88&wx8}ZT$&qZ?F?q;&*^c-Y3`}oy!#-jH+dxyiM z)3wp2cWw0=ar{tPi%2yMaxAv{yB;x&bjKK;j$`FQPrPW%v+$%(sVeG|28@1dguYFYPr)U?2e zZOi(u>d1cZq1F$xZmR7vs+n>bE#@j#>0+*0%raUWEThFNBXi6$ayt4x_`#Brkw0Jw zo$l&f%<9x*S)G$UmJ#jf`w&lVPSIKUany|~P&y3b*rf_{O2S@h&?Ph&;mvnbzx~bK|+H|2HW@XwHcOR-twle%R zSakQ7a);I=i#PKU<$twQJ!jZ!+`aZ4%`F)v;F{;w@3Ad%on4A+ZrtNWFYR009ho;W zAZpn%==s~gcdFi(yRtKLE|=+IuB1d~te#}Kk@vZsW0C0XmvR%7<%V-&{sE85URy`j z=uG2|X!=DBSmUpvw>`&~SmVz1f0}67M}K4Wn-k8%-lrZr7dWD|HuOg!9S*6%N?o!F zHL?;(Rd?y0?xk6mI!4r4I566H(;w41fERA239a=uJw`5GKe)fMht`h2-)nq${U5|z zc&b{zlgvDSLDYcV4WsaUwJK0lStE$S4kG5XX`BHT4 z>lv*?%TCvSq`9RxK@rv;R!%D!eRuI_p3i=oYCPS}9T1VHVwI1Y&c|D}HK!NcGIGOl z%8&A*WfQ*WgL=^)6u;=?`F5QN){8{p)y8iQfWi`#VrMP*oqw|guapa0G^t1W+*dsUL+5pqtx&iN|Gb-mHLM>$$dqT{RHMDEkYRs6XIw?V3S zgqcveisLJ)bsgD*mtQf*z;7ly^76&A)!TXewvV4w=t3oCE+jQ7c~qmz58yImQZVZe zX=T6&l@ztIm-CoSEr?5)<2dvhdDY(%Pc5hKtLgiiYRLv4qF$~B&Hu!Lr2p4-(RZ%d zAAM&V?y2u=x}QJsuP6N-$do_SIC8w~F8(a<=FhdYHT*@iZh&W68Q`Je$Go7`eDA zPDSEh3b9SkZgSI$Sz_z%{I#l!Lbphl-mJ+YJ-O>A?>wGJ&%QH}p7W1-Ino7Gub;O$ zW3ID(lnOu2+IM?hyIX(H-&UXTch~Rnks^ED`Xg}?ha&CJwBlP{-}Thm*FtF5Qd@T4 zXhp2?>Ur^~$4t&Df6w1BulFsUw#tkC<#zoU(4S+``<$4vje60m&Z*!M4vz9~uTK2I zvAd_2=ql2L)|pENctRQJHdpM9zUQ2u2fq$+{g3$}qDzN$7h*XFAiPGegn) zNMm-*Q

    gR}6E7PEcs#FOTSg9!^B;1pt9p4bu!hjzq7a1jbckpE*}uxRw`^_cVH| zct(d9W_xtQGx|H)EkLy3yro-11+?QXi}4-z@%B#8Pjgo5TD&qTgQPnWQ_{W2*G` z`q_GG`Tbwf5Pf7!Z(J174>!(<)~%~u<3;Nh)F#tkHAUmx)QvT6YAHq8KGr~=KYb(? zty?_6pNo4aw^)<#KUGJ$#d(~#;$Qi5%_jb|Y~;_U+EvB!BgjmJ!aVeiT5PUA3ngS( zc1NqrzxVNPE`_rCZlYl2j@Bv^zy0)Wr1NjFNTy%+O@05Yz7uia_m8Z&B=_~NkE;5q zIeW{JZ1$*IQ)3UKU3b2X;`Dlveqt@@XaU`XLgBR(&~09J-;l zhhKck-F<8pWYhCM+d%QT74SShT47qMAJ!K4mtxkqyqa^Xk9Ksk-kSU+b@9|~we5W8 z?6v-q3*#wUa*xC7{3ZCPe6zNPP0!&Pf5`$qR{Bd8@^PifL&}%st+mZvKWnXYk8Usp z5Sv;JdTo~ma1d`{B*kM} zRZOs*H&R)hInRDss{0+aE9ph_-Z_k{hB##h!C%r8_h)qOtf^c+&!A4`0jBHdIeuqmGFQ(W`d`z1qYf znf)qC{Ut(St_)tavU7V=41WsUg`;IKH*ib9!BX?S3YEK&+D7;!P=X9D~ z#s$fLXZ>iDa*H6P=+V~aLxhzckVGrJ_Zp-#HrAGg-7 zj&67}U(F^O`8~ctUcd{akwG}--Z8yo{`TPqyERe$bbGiIT!(Tf!&iN|i~%Ws-JfH_{Ue#DsM>EzTqOC3sEGS9!0>*RON7u zsMP9$__Tz-CE=fNvwM=x!KCw?tFrb_MK?Iy8Q=xcEVU~?U)uhBHrl0!cf2Idx^{YM z-iRDdJfBW)!#d1&_t*e|lXy>8-~a&#hh+>4@FDY+Z2BFU_L6oah~I&*zW90JqIa@2kBJM1N%e4^#|O{DAzxsMtYLc3j5pf1ZT5Bmt&RtW#DH_Gz|1# zJ-4q7dXIO4-%Ah8`|L2;_n8Pc_1g?%@fGIvW{fmgrX9)#lOGG*3A{?8fYI*p>>R21 zo|zi^DEqe_8M?x)96*d#bE%byLrPDi>&MZqD)vd-*J|@wEm}og2hhwUtgoC%H3{%H z$=K}-Ivn%SbS~9)8_cpIsj9>+*Rvh2U+6*(HgOpex9cYsfMc4FCH92p`t9KcsP7#d zgGuS);8gUUovi*uOM<#RF!XM%!+3h(Wjv(jZkzwFBg1kkaVR)+W$kKq56@hf;0d}^ zYo1GMVUTOAwgivmHhT}hUYDTD4a1jyFq_qW{1_gMl)bH`%^Hc+H%(dUWJ@*0f0L>2 z8}cX$e4U%!?uq5Fe+1R6=A~4D=7;8%J4{Ctr0$mQ$6V56lG8t4Pm1~e_}z(PFUH}e zjoa2w^Pir7baYz%kn5^En4k1-d6iH+7?a!8%H8k z3zeI7WxQoOnSfJWPpxnA(#MVsMmD(PIbF3oi}q6YSTR^CRlnMAREnSo@LN?KzHJUwgHjbVB^HDmJ$- z=2zX`ap?RKa5uJC`6{n6!@ph^`lZ9z+&x^o%EKC7d=&~*_pr# z6_94ftzS+$UKSr5@iWKv$I_9e`8}yJjjw7e|AwLMG1INU*j8^g$H$r6NmMzxv`RF%o;5Z77i0+=1o*%IqS>)p6)QK zESma(K}v(w8C5$o zz9d_2Y;gTsHt__gOd)k4_>HB`k0(>3^qSQ!GdD399DAzg_ddkM)e(b%^hw)$jjes;9Ns~^MuGyiAMmgbf%$$EsWST;!~<|QDOcXJ1{ zBvIcl?DcW&>>AznrbJ7hs7X0F6h>$07Yr-)2Sn^@KsKWH>;i$v?v_*t!KjUPe;7&< zhrl^K8t;`kJT>V*5(lpEw|dTXwF|+kMM0K9WV?k^x{bG3+VQW3b}+Kq@XO-yRH%VTM;_Bhrzt?jq6IwSIoQZjayC+@Txg>`jiDzrF%t>w)EEo+@A!9=Sz6VZZ| zyX`!YlTub(t$5n)Khqetm<1C{fA%d^**59VL zEx5(VL*O=^^O&k~lKTK)=)S5Y!6|zfDL9PYH@oPlYKcg~7=ISOuqt)M@m0_V3D5t+ zj;=F}bdPQ;Ypu&au=ok0T6$r4FIUqyR(R`cxJB)W-WTClN91Lh2g|Mj>xtg}KTK!) z5>8JnO*~~f!qE1#&CQLb-R#}-w}XeqDHq>Kt>0igp~Pl9HJpYD7y@v`s#L}3C5zLM zId1yH$DM(;cchmxR3l}gI_cRr&j+>%;zJV@knil}dE4#$9PKSbkL_c%Fagk|qrIiA z5i)w9S4)Xvexz=#v`Z_bA9iEJbM(V*kR1KE>o{+A@X1MSI+aaJktAKc;m(U=a~ODoJ__2?hE>6`!lg_q=O zaw5C7F3&>{Dn---GEPWoIrcw5Lzsw1F}W{Ewh07!vEv3@B&$U>A*Xwg3)$^;9MueO zf98adzn00+guVwDuL%}X+?01@3wk_}eqwqm?c+u`-t~3pCFm&E^O}z}_@6B7Hmz7a zJo9{YeOPkPX139UdWnB)Aec?0n>>uc>Wc+hOg}L}h`)P`{_+LU&A7ug3%@8uVEeV27*mFq1g&|SFDA{$7Whogtmz7eP0jvnbI%p{U` zpqn_PqrwKPTmZo-$7EW}iQR+#9`f_?R=u1TVnOZ?6oK4(TD*g>*>7o&iFCDUEeonCK29QGfh{Z%)(snGK;bN%{S-Z zu6A?g`U-y$3{@ih)dE%OESHt!PKq4X=V}S^{7@*shZ-zi4St@>Y5|NF;V=B+BqID8 zE5fr&Lr#kxY$W)$P=a4p$Z1>SKAiUUgypn%Mzpmor(ILXScO-Ju>vi^aR0q_zd2q5 z|J?Sfh z#hk~jEbaPpkfjTc7vApg^pBBgBJ*@L00N*v^@wB}xYC9mGxW2L4qBDm?$IJ;ItLt_ ziQxU@jmGW_wdRm4m}gC(H8-_G@+(qpk&&J1 z6*OqG>D97G)6s_mOvC~NbZ=Yuw3pp4w2evo^^E%Uq=8O$cuwCd>K9U$kpXr^yXF}B z!8SL{N2}32x}`L_;V}J7w2*~I>Wi6nW?55Q;W5V#@~cFTU^rflNoJuQQ<`S_Edc>l3|a z=$A%r5$OfIv_gycH!|{dwbl4FNlxKqmy=+4DSFPMZuEyYe~GJI|5Io*7uUx8f4kot zetIGNmZYPofP9!l*+8TRCS67A6V6W)P8Jb%*to+8C5mgI;KIFy zOiCa92=!Fx#|QHa=KG(^F_>;%fJ_oHm}JW*#b9duTQ~7T$Y8KI1q`O?WF0OihD@x& zEy&?RR)uRTP~jF*%tSqeaJCu7V(ktgZz)2D*2Vox8;0Mv*z%UY7WMR(7%dKCM4;QY zK$yQ~W?U;|otu4d9ETA#UuXS!TE3zlikUQodR+YkdYsXu;)%wsQs%bedLd09#K&rNFB;v}LXGY*&mRdix>^sVs|Il=de1{H+a|li z1AMCC9}tnT^`O`>weyNy(DwGU{c%n?2~@pMpTLK1niRfODR+#2 z=us|ul#3p2t_MycYN9pDO@R`q-_Zh@ zGHHQ!eiiii*`UX<^u@=U(~*m`CI~)DN0tbjd#{_m%<9)hBdkiX-x;zv>5h6B@Hhh= zXTakOIOiB}60Bv)TJc@9*D%`lH^FzTl~yuj@e9hLA(NUN4ee@C(}r-BMN``iMii_m z$fd}pbiE!vLvkvzY3K!H^BYg*$fo;eMamxX>;(GHJbw{*>5bL?)zIwgiQ}^>5GERQ zpIb$gQ+D%*7Mib`SFy0$hF>~Y%FvKM>}GyxOf?yHe~#=FDmghp7i~u0Lyls z4`?0tjpma~NAju>3PPwB-7Z>$zZQkezi13FSMi<%70r>!Ama)2q9of56C4|}(4Pz4 zDe3ek@zEug7_i9ym1qNW$-Y@UxSU7j^l{h!BQQFJJ9M59w$E#E;R-A|btB&{lY9)n z+j{mbI_O^#PvF|8WzpF+nH&aCc`B7?aO4TpK4nRJj8DJ8-;GxGFv^+d|Fq*5YK0Lu zkrMn}%)zg%hSsr7YM=B&t`77=-GeeG(3eWGp=M|WNWf>=xOgbypp1{&%rQFI#V^rax7j%u{ zJnk`6TVlb~^o+kJr+=CI?R$INdNXgZE^E!3Cd55%TYS-bFm3y1f zq3t_^p$Ud`k5PSl1J$=j<709>(^K1?7$u!3RUb)n0430BHxIdYrg2ULUR*uMbZy zuAEXA&WS7N&sJ1%4D{RhO*U)L}Ro5@Mhap+ zxvCuPeh1{%sLAdR1pi4{-YNjO))U?K`&=ih7vF{2bW3=|rjFmm(yt~k{}$W=p00MK zOTEkW_o2$jAcd{zv0{VJ0c=c8a! zWWF^9Loi#|Zcz&*{1t;5$J`{u%Ab7;&^HW}4KQXlfL5J(VQlVT;R~q`#0D5-1DrP^ zzb4WR*!hXxcb*at~#$rkbFEf(a@buV8}CGs7NP9Mktk^_miAdo&z%idAx=kt0p84ID>^ye*dR(7TjgnCeRKRRm))tfjrRh z{r}tq%>iMSO#t#fPZ+@6nI~1~G4PEV${8jQ;2t~)T9yrhnlAgb8mR~KkSgn?^zX|)5RO;-W z>@Jw3C%bA>wEJOxmc>5FwwRa5{H#p;tJbT}=Ho&9-Oh8kjH5R8g``7_Dy)Z5|ljC=|DtOLLDR4@_;cw@_g0(mu z_yi8R6bEoS`gv~FQlZqcF)!6*vaW(f(>(brw4Nt?f*W;taNVrzE_ilLGzI34L}f=q zwtdq`*48p%T*nWvERe)B(nwq@gTRJdT!X>8J{F=m5EI5KGd#_faz<<>>Bd2RE>SU7d4h>T zAEfOg6_x$5%Kp@)V*v&7QkRmxV0X0ZQ)aZ)RGChfGAd_dG`!UGgul2#f^k@x+RDS4 zm3XNekNd7k#HIPFmef=OI@xj=`&YkRRpI}B@5kBItn+IBhU$2IZ|5@+_lKIEX!q7| zbkm=;2KC+Y$oYb?-x1B``4>k#{|c-o*Hjg8?QL4Nb01>tXF&;0a=)=s(QY_E)7adH z!YhpH4FZH=8%Az=m@DEh)YojJu486U6r7RYe+162R4(^PsnK$h&nD*A;rqtgBrKRRUi=*<&WO`c4eDPU?;q z=r2u)DIwQ2g*10vLXhhNzi(;oaRY_~kZVqVG46OpXsd2%5z0N^`2Cf zT4T8@^v08CJ3uSxnw|nHoes>3&kX)}yAmLjaEN)cPiAQ6R_nq--z(Ei*YP9eo z@HhVpUo#VQ%z*Y=Jm*?0b!@Zch)Z2PK&m}Js@sW5zBD5(#i%Bb?KQYZb{lU!gLZzK zXT;KfcB0weji%6cV=R4z>Re&8 z3i(V}j26$F4|(Yio&Yc)LjG2-9u6pxuUlzy#c~(M(pQ(|o&GjU<(j={BUCr$>=F4k zN*D5_J;PDhg7{sl=04(~c%9UadQHPSn?MLceaN@m>BE$4!&NpB^f*rEBC(T=Gs!-jp`;!mNqp%>oe< zJ&mRq5%Zj!h*{;QDvWSh8%?b!5H2N0w$mL6nd-F^n7D+@uk2w>bZ%KTUbqbOkBX_{ zH9mHsFIT7=7g&2hLAVCig3Buysnx^BoHLjd$J`%S5_-d1GNE% z6;RB;UpWDy<^LLFKk2;C>R3l&YuYy z{q@q3Kj7N0m$tqJTxeNo^j>7kLlvV{zz)mGqW9@&7FzTx!27M9jOdy}9d_x!Xs@|b zd3XVU2an@Qov$`Q9zS7wyxjKq z33^O?@m@KENz=A4S3!tJq5qXaLUyUKIg|xiUw0K;uPVlGyj{B1L$uAxMH9q)$+9&V`w~t|MqSCKtSQFW zsgHp_K%qbP|Gp+iq1*5^lShCB1a54Ix4et3FfUJ@Mb|DIPoU#17@Gt7Oc>MzP{5>K zW~+0^dgu(WIv~$$Lh@YX32>e91gM*9$@4z|A6ZWT8YvnrHPZ7dfCI8@XNKdtoUn?R zXVgw0Yr-vLTBm2%dHz33y7T}0CjKT{K8y7BfH<2(*ab#v~QP;&yJL@&}tp6igF#5j5=_+gjJvYqm?9aN2j?dhE4F7TJ684YIKtb(@ zckBDTv`gZ3LF}xh3*`a6lANdbC*UM{bLaDA(c3-->kvmG0EI6a2K7FQbvx3ybKQTNpB?GsD%(9yOsn77xbvnL&E3yP$3g=!`i=eT-|P2}{=S#4dK0H#OTX%c*WK+Nd%k{0b~}c|jK2Fjc<6NY zp_@)*6X^}LZO2}EJZ@Zr@pW+hg}1Jq*0F~cWYsJ}@q60JJ@P!?grEJ0TzgE*-l|jQ zSpB$uGY59`m!l8hvc~vdVjB2{-1z?~P1NZBp+^6`wDHt~uUCYFU))f}9^1sNYp1&% z@@mV*kw=$1(XRgmZIz2#A1D1jlc5-#_Feta4gbcOm_HLMV1Sy!@t~Oj=4t3q0GE~* zA*H}6T$Uqj0lVnO2Za5_3)>kmWuGOn}lW%p`n zWOTZ^mAX1&z3#!`4`c9@mW+S{7;kixAaV!SP$PnTiHR-PKe$;t&kBHKg`N{^oWD>U z$W3N(&Mw+E$y08aNa2R*XOoN-Y?!fd!(`laoOu3Qi}uU7W%v?{@Da_7ycz~4o3*pK z49!5gBA*Sn7?6h%g*w;R zG~&K*=saA6O&;xfk=z!clc5A;@gRB4h}-BM6Jhn4Ekv;LtLrE%# z8Ne}*mxgi8H^QMWuMo4rk0&QB5B~_)^MZ)xk4r$#MKmj*lW1ntX<^xGK$b8wP zfy~X$Z%iO_wI0VCn}KOmN#iMDGHcxL8GKQ2H^kf0|7QOuHlDfJ`FYZL*55DIIZ!As zPq*>R3lU#xS@>Z%v%hUbsY38ra{Pxa86(v-2*+Fy^CC9)N$)9_;TK1!iwJQbI zq>Qzsn&R+O(R@v1u7Lb2rGwkda+-)r%I;=KtQOlg4j_JoM9Cahv%uRdea=v-h4 zVNZeSlOXGSprbW?;zTy`dB$i1WB6GGJZBK5*Q5-nQWyki~5ob;qbUSHh zIP{FH-O*>qSeJX8HPZzX1oN>@FJ{4xGpQC@?DiI7E+G_l9!`H{ki4!YN!#oKZEG8v z{hG-IZ3~AOf4Eu7_tXR!@_}VJQG1?Ga;O%Ndj9~fwtb*;M&KpTv8Ega#K0oHJDUs} z{2ZQv2qhYZ-&rm3xAn8>$W18cS(CY_YS%nAPxf^WJqDp6vjo3?m{!)vjU}5+#cMgJ z4G(JiWCqFhHO(^jr{lP_#Vg|JCFQuk;qg*_D~=5D)KcsWi|aUSAl!$qz#vyNjlP}S z4ex24PWbmZ|NckQONKv}qzUQrT7C2_ZlD#qwoYR-PuRfc9#D%`;HlcVrRk%Xm40%C zNeX3D5D`npHgmK`A7S%g;A!A#5cI3b%I%CSS&Nx*%!Mb2_>*bWqut3F48dJO)7K~*m05|WHq^G$ogCgp z{9LpDG*M+a7iEyL2Bip{7fAetKFZ0!N0~H?wH;FDx_Oqs>F>i-(rZD~AH(~sTZwkk z>#-d^V?Bj03h)^`8fxVQ;6IA2oEfcNNQ6WTmj$woS(k8*3Iw~B#0nb>HlIw-?xKGs&CWw^XWxlv z_peyx(j}I;>Ax~zV8*j;;gY=kg_s<3euCPKKN}8iMTZM-@i!9<#y)u345XWS&?06-OFOm;VyOuLvo1t-JIew273_jn zT_IkY*BBd&@?j~R^u^^aE+EkjKVhnZICJ?fN}&xm#2ZKKhF~IX|7V`niPWnmBLSMq zv!XlCR46?F8Z1kQ#~LhfKZC>vyMy0q6X^>#h$UfwTa7g&*cy*@ZewRWItl&vW5>}V z_A3N()W*k2s5a4p2-TYz(wKkVs}Td)Z^c?k)=wt)S0XpvREqc3thoPd%Edd46kMLc*dch>qk?zsTB)EB#>;Hzd{MZC8q>;oC;t7Im(N^y@e&uVt@20oe zXTxx_Cg8Qxk#0H0GZUp$$<7ITc=mTc@< z`?lcQ{Q-h%-v3rlBp~_;|GQawaLnYupZumD%h~?{J>$Ll$8M zaMeh(Z1bF#JZD7Xp^WR?cKt&mZ{$AnfOE|Q+I6|4nAA(U4~1`;;@RYXjQkPvS9C_m ziADBi9TMW$5g}vAjF?PteLOxUlkL4COH>CFFpPD}R5Clk(~Jw&Pz4Fw;5}Y_ukaED z$^u~Z;>^?U!E~Tyz<=guy1);?ITM;wqA(mi-hdcb3*{~RDEQrlAVP#E+H7#b@@k#_ zn6pn#(#vTE@6j!Mx|KUjTqc9z;+0JI8l2}+7ax~mt1)4CG#EF(0Flx-Nn%^$`R$w3 zeD;UiF)Wo)GqJ#o+P^bu8)J=Q(e(erH@9mko@h6vZ^0IvUzHj8Q+dxHJGvK!MG~tYDO8XDHwX>xK5#=skyZEC0sKbZ+Atx7wL; zo{>1zrdia?E$H}#xj*=@^ZK0gG^A8H8-C?FPs`Cd&dZq3%3V;`g-m6tQd1aAXwh=l zw3?~Zyk2gY4|8g#lo@3v7n+%r4|1SidYaGI=I8TCUZt(DTwB4c`#BWpk~1!Qs&WOg zjX62HgZAT!Le3K0MVN7?C!AddnVfPNCfF`rz&-f(J(|fFwz_%+k(pfs?8xS@(*uRJ zQ>TzdxjPIv1K|bDkOYzgH`JgDu!=E(1e${iYfJA!Ns zjUHRsd5+DX!J|`Vgl_&hgD0X!c8<;DDZyMF&kUC_c=70xUZGR33&xMM+$oC5ToWNS z`ugXL)+1IY`Y$(=Av2s!6=HW{Q(|}T{FV@|;<=a0ETuF$`NHv9bo zBHFoy*i<~V2u>|`jfa)R5AjKTLh!H>)(z#5C=L$ZZK3%7yhD?sRfE`C8?b7+Ss1W- zSuV^~`2B6x^+phW`s=hH2wIg6_aFp3h*@>^h9RpM#;>fc%i;6congf4vqY={!vuZD zdM;o^ajO~>g>J6paT{I#53{>e&CP_X8iYPT>}TMRP%|P=9Q;@y=~mE$G~uH?mte?4 z!t9N!1zy?6Yq+`iSOCu-5_vRHP#hjo2#9>g4>|abR}wG6Wr4%R849Xwrkt2Mv4m>2 z+ZlMijQoaut&w;?dI+8LpEq5DYSA+ySu;=4vC)c3tj@MynJ3H4LC`CHH=UB|IXJ>E zyE{zmYY?hQbJ%OYvAZlE`^v6Vpe8X}_BvcjPAB%28DP&oW}ti|cDG}*HT7CC-w!A# zgd|LY3kQib$C9N%5>f2&_>ccrm;`c&ph`IbFnc3QQZt$)C3KTBAcjz3$zMmXl#@ zZQtzhsu46Gh=2{>i1j5@bc!Bs!`m!|mLDW2@03Aqn+pv%AYbfvO2Vd)sCvp2`TBn_ z1Vgs8&2rhOA#2)haH$&cdR%m2O|msy$;C1&w)3lybL+)(vcIM9^be`Xg2B@_>1x0H zkw41G_If%|_r|3sho|47>+(M5ioB3J%(C%#dXNY<7g|4&-#J+NL~*mo{yi2;Umk?b zqS?W(43^$+vGfhK?X;s1PTyj}X5%DslM?&MsM@Zu*?>Tz7z}VnJWvSW54Uj$kWTt! zejDZ>*`jogT%ccss+-}qDWvG)mBmPUE^%W*X&8qETa)nPR7koqe~=wJNy1i}MoQv- zh@{(ejwJs$GbCO490Mf10S#hBwEN1}(9^quSXvrp@N}m~ZEVZqef}PY)aA|oPYr%9 zP~Bv7L_tE_U#XK#6M*W=4XAEY6bM%ro-W1)o-Q!`F!ZhnOwYehc)FAjlHmwQ9L>cE z+MO?db-N7+P~0v(ozTRj5+P;-9Sb7yGXrk*(w4gV4yD>2;Y7n8P3>zcl z6DVCg0zsE^#0W~78Oy#Jk%A$_W$DJa@W32WkJC|jp=;rsfKQziDQKQBX(VT%*>QqE z!2s2%x4dww08C5(Wg`@swj(Ril##un%#7>NeP(1WC3`vJYjQ4ZXDbnZJeg0Cfvw6d zx5?vElbI;95JwDve;UxLMimX@b4Asq*psIwJ48;`xWG70^s}ZWGXNpWe4dyiHly?%H%8@Ce z`ClQOl87BdYW`nCs0xGmUk9BsTgGf2YY+Mqi}RJm?b~&Z+y3w1I{%#u+?RQ(smMI_ z>UM8ctzKTPIx3BQDzs7_yu;v7ndES1}4}v zU>z`-Fb!oM84LzHfI@_1^h;+%2StPx$icKqd@ag9vibi@`A6)qq2z~ING9M3MG{t3 zk%T4loz#c_U&4Z6Po_A$VhIa-B6ufK76R2u85QFKR@o`Tz@Rr0rr<>$;z3<$!|R{i+K=9JXrBEXYTAE)PP8R$7z+TqAd< zG;0&#`E%T*wV%I-rmF}~Sp$~K@Tf-Hk`RJ;|CJ;8+pI9odYCbdiq56Hk&0ma(A@H6 z-4enIifoVjIatBegBVkt86w+HP-td4g=UCs&w?Pt{awv1j~5^a4aOHQEC{jl1}exr zjQ(EBZEwVS5F`)XOU5_zWHgPpoWr#`g>RBf^cXX zjJc`HOnQ|qGVhu6Dr}RQ*4f0}$T(weu_|wBhGZ_qxv&3NqQ$f_mR@=ynU3&miU})o z=Pk+fK{c5Z1qIUgtSe!>Q|GnK@cloQ0-Vt6te zkqYguzjR!*^?ujyFxzcN(bm>^c4<-FCx!DZt<6~_uosz_zoj*##!2|8ud8{a{}FO7 zQ?pW*;9hWp zu|1D-ePF;mWYmt>T+FuiVr$2UF*Ic3A)f7%EKWOMcqO)~S4vFf&%V7tD4Z~*$ZWzF z4D%s3f@mGYt2Q_2sqdJz9t<}kisoL#Pt-(oZn@~(yT4%Q+)4#e*^KSB{vGiZl1CnY zOK$Zek6d0XkKDY;JdyBhEq9`G$u>==LRy#;Dp^NWg4tZp0!|(@xVYk2mwt#pJie`a8LTV`THJc2fYE&qn$gPUK zu|oSm5{dGi$>krR@2qSpzA^a2lRCPjX5@sSG2WP;iX2 zJ7-Y-j`FoZ!74GfT3U;UvX@P!PS)hY1Q66#ZEW_pkeLD7i8hn-JVd=a&XsOsr(~08 zx{(9zCR5}t9>0qkcSs~h*T-Y&OOQzV#f{$`a$_TrRJoKxV)Ja^eleqby((GU=GmfE zl)Ec4<*DiE-@yGeHg5P37N+lWANnMa8`Q{0X`H%1@{pAUrUIlC16 z2~A*MaA4#SD~=$IP_7vXjCoon}+sW#0}3J&J7wv{v-Hfv3UOUo3Dc>B$2H*@3k zB5$-Sft}WyE;`&i$h>hUoQ8TIu521IbKXihUQEyK#yJ{N^zvEX7xOO2j)x6>g z*%D?dOsYCbG)AVf*%Gc^IHg==xN0a@gII`#{k6g>vSI^KIXGzeg-fRQd zOn(dJgX}%0Hy_MJ{gRsc%_q->L#^&9=VD=gF6tQWn&CehnQ}g=O+LH=7uR-HFzjHU zI>!!3j$zePJb`Q>R3iYp{y%KuS|uJDBEdU~vbe+Dh(ckaOG+q(>Zd9do>2{@m9P>V zgv4a>+Ud%G8>|*LfDsspLXNJ6S6pkf(J>5@fBL{_}u!p40FMEe@|ArS4op?ssWPx8>?1@h4297-Pg zaUc&p-u7Zpr4&)jxk(*>gSV= z$4En6n`mwz3NuQ^-pObY|ir>`w9`dpWm z-BAKj;n`Nsl9d0bQafV=vNe$2V{0Hi71ls{!>i%{pU=Vr*j4QRpLvSnI2}Ki%?7s> z6xN&{4tXmqVrZOMCI|>Pxdzf3Tw4R_vq23clrCvQp8sKLFBaE8BB%5#uYt5Xhw7f( zucy^7QT*y8k`kfUfx6T>?GY#-38yOSGp)vo; zbV)uyz)QWMIMmPcqh~oZ=2ef5OGPE8NDqt~t}EfYRy;VjO;evS-a?irNLXGYVYzfe zIePe4Yui~43ICd=g#W2{!ha&~D=7*e-~%vRNz43OinHX&7(s2Jc${q6KM_V?)&HP2 zw801#7=<#24_FW(#0M@DKJabCIk6bX$vV_r@BxAZF03V2SF=Cb?EFmVfI$sH{)MLt zB!>zb&aV^BQz1T(l!*9!ljJYJ2ZRO)tcNBToWNEm#4`d^EdU1sSH%Z^`>u*K>hxl2 zAOqGq5<0V4Z@$9(T&GSlkSVZlY$>#dg!T<53~+zINO0^bfe(Lc4wwtJ84Hi;k%TZ0 zk*J~=e=y0V^YwwRKDU_b7D5m|*u+|th*bzd1YDOD2Hy%G2o{*dd?zjsjL*_!5QLa6 zZz#Zni#V=fw}twb<+u;+w;cDJX?c#Tcx`c6zXED=ZFWa?xA<t;$GuYaWR5yN@|{oQ$_?YP@`EXRM{`ePj4G}d+Wh8eovb&d&-KbqeSC@+kZ}ybAnl|;&0s#__6!T&ON}xae8vV)NMg|#Wpt=_AlebkAyr$f|LOK+% zE{H_eCiA?0tDG0{;19$74dI=D2RB$eBFA$>e4@|b6Ry9ah#%Xt9>odugKVF!KZ-}S zDYNiV5~huoTfAZ}F6e;=nFSyKD=4$zrru)u*VO(Jc|$&~?Vc~q;LZJU;j#|!4S$qlN+5n&(mzq!RJo(`Z0#PTnH=la^$R2cd#_l3K%(g|0@bY7m{t1cz z6GwSsLz>-fP3dpl~R*eqIWKznd5*4gcm?y^v+y;g#e5X^-ciM z3H8oA3V*WR2@9MIf(%gj+A~Ap_YPVX_;)O%gsHFS)q=u*Gl#;9PiOndgbEMZ#4rej z=bX6EI269Fadcf(fLD(;j>7+*x*_C$qtZWnbNnw>Pa48rn_ti3@x9VNcSXC)Xa}k% zXqC}CN74Ig4EGkB%;8nd)H@Vjh~X~-$J3+1-}BD|f9HYXc7#JthQDtm+VkV-8^Ob# z@%Mz-yTuCw{&s5oJxta|f)!9Rx*`a)I4&#F^0OS zQuhse15j9$CtD9S%jkk;x%}>(rOTwwi`Q^MswNlUDO-<83$>XuaYm@WQz-O$rI zXJNMWb)1?-maA3HAjR5OAt@i-KeN~EE=gp2KzG;f5?b|jd1F;e7X+1=kgs4})3Rg(J9{!g=e63#OT6&U%cYNu^j!u@u?$eT+E(yl3!1|x57 z7%!=Wd#H_sgk0=#B#+&G*e<0uLKmZ<3cQZ2&@yv%na*=!WlT#{5id?k+Rq zMb1kKmo?7{A9Rq|COypPD%N@$q|X>K4*1lm+7YYlw;Vd>dPyqYT>ZF^3lk_BCPFKe zN&K+19APqnb=LaR*JpUKOD;9=5u$JlbEHjB9tw~gv>l)vyQ%aSrladCMs?Bnvp@{f z#bP15DHU;ZnfL5AvGIaeLb;ou-2WKKQEmc6m43@a#K&7cQSA~HA4bHp<}Pheh_CEO z{vi|nPE3(7Jh`OQNW(G0d0&v%Yk2L0mbfa1hhp5dUD~8haEl13=eJd1`WD)+-7eIg z=v^L_@PEnnpjb-0epDNapz_vfoeS$rT37gA*u}5O4X4wzVONJ#oUa;?6)281GkYOjX95hl8~JvQzwx!t}M{+Qb&y zbt4Tl>Ak-CX~<9~@kx*#SfVZ*Jybw}f_O~EcMaqFr%rBsSK9G?Z_@t+k<8)v9xxdP zfDw~YH!p!S4b9^JI0jSbf5Z5ZUM9*mkKta%NG}(ns$su!c-l@o+;<@TD}o3WuBnP= zVu4iZD)8dV%CU$hdzwq2<2fhgIx}XEA^399SJ9}$W0>ihgh>hXoNp~&@v_+sz2q2xC5 zyD*wO2v=4(K312lCU`k|59t8Lhx5~Lg2@T-SA@TbCFikQiB#umd$ElqC#2G}ipxz5 zId??wc`kp4xtx}B5z2us6_<_U^ReF^y3Vg`Fgo`<>ikOC0iySqIP(VQH$0p>D|d^% z%p-K%O*NaPUnj?@T944HnndT;2$nLlqM}_-;q4f(al4Mhx6N|#o7h2ip^Zi;U{#?l zv{E?TRcp)^T4VBp<}-KLO=RwEx+W;(RhT^QaJGW5=q>TohF}#3WJ}xX zud9>(v!YyVE67e<;l15-Df&QsTJ(YCq}*X&-C+cb=mS_2S<@?{4>Y}o+|QnWh)uG9 zU3cMkXK{-^Sl{pZ7tJD*K;~yqzMpGfaz%}3p|&Yk&MVxXZpSaPS}z?>=|k~=?%;8E z@FlW?^hjh_O#+cE@}WyAi}aPG66x0l9$wmK_wHh2dRWrn-(lPm6$JQIwZm*>XaQ}l zi~HNOt7QOhQsdiXy`9O8nlFo@+|NFQ>m9*a4Ts%*+lZ@GE|L}QzFvJJzk=v&ox87x zy4UggT_PZ;XdbkJ!D{E`W_I<=&V}z}Q-2O}0V5&%K(D{s-8ZJ{UQFWxcON1s)l#<& zj_rFPHvg!Hr4gdE@6g~F?~UHKpJ@DjFLGrK*}RczsCF%@@5+5+vHFJ~?#R_R1xD|& zm<+cr7bzEoAb(11{?EvPK!A%wU2v-C;7%4%D?K;8pc+3u^*$a?M{bTa4o1^&p}z(G zRQL+$dJWDR2;PRL=@46$2O1Q&M=nQ~r04vd*SIa3mhCsu@}}nWHF87R@b?^ACKEE0 zN*IdYV_AwVj3dewfpGDQ@)pp7ODVf-YA~pr0-Pn$(w`(8Cm+!sy=SZESA8*I8Rq}X z-ub{uRi5{rWfojqbcm9MMpHL+P1g)!U-iN zfbsWiI<}|KMw?fWchcx6DGh{Yz3N6tJw;DK*+d)YiLZJNP$0l~T{5?#R$Fy4mveu< zu0QGAt@=Z2a3ZNz8=ro}#D!O8TjzxO_W0%P0XcF){pR@Pn}b)MP~RKByf@l(Pa?B7 zl9=LcOiJySZbR2R=jroow%OElbCjtloCO`!%{F~m&)fiC0D{_VCbp(cYAqp1nMvT8 z#Ocz0Se*E_qT(%cP5!t91|A}3pfbabtb1!ekhB^2jPnXeDB%^rGx?c@jQ?5l42bG0 z-L^!B5UO?lZgT=FEwMS~Z=UVa3w!=^0Npyd2ZX6p1UC2~bA}@s|H@hZB~x_*ww<}^ z4^N3*R>L6rbE>f6nTwwK8}xSKqS{2Kd4>b-%w@UC2LGb-81;7POHCKaRUcFhWDC>A z&a|%Sn?){a;kyQjX%93~;nyCtRn!txha}L?c`H=(h$JV!unUQ1 z;U7mgkId5vD4Tx`tx_(4q|r;lTN z9;A++NPQgsH2U}_Uzt80Uw7tZk**$kh0(+-{%qKxU9;xMr`VO709$f)&uaF5dQ_93OQYQj!Vo!-SfqwsC)i0qp#rON=!KgQ{ zbH$~g3(cA4HQi`}0UwfD2{s9G9kBRDh(Q?L-9-AVk!)=N-H-ZoEt0To#q*Cx_oKkn z!h79l{Udl{gzy97`#H|H1keq}^fQ8=Bm0rq%b0#&)hmw1^xGXU{hlf^{eB*XAN*|e z@Po$yN`t}=&_Bq0qVR)<1xB2bn)H9_Vi2sTrxaiiReYs6cl~zFLQ^&or@|p~C3ix9 zu5z*fqtDCwuE1W)H#K64NI-obCKO>t5Q+fcQ7FRCZ~0)Fq-tR-!n;CFTo8+ZerC}K z#Xy8#8rVD7R~e5H1}QgAnkEStLRH0X9h5Jxu%orTU_ngKksm z!*Y`ii%yM#4n+5>5H6r_%OkgZGzvGkGz>RT+DlUExqyR2NO7d*Y&u84L9stwyg@P2 zV82BgOjM*nYn9$!sAz6DQt{TC%~&#)D1+}c+43xlGAPFi|bs19(b+SfSM9)>o-Pg3pI z39AFRB<&^cu+4qfP*AABi$pRv7ljRO?Mo#9u}Q?RCt;F8LezkvU)udRhHdKzYcGk|rG9U$#vJ|wlXvV~D9*I5OWU`~LQ z%yQjimc!&>s(nHTev2S`kXsG~9yn*I zBhKvhn_2%a1N*>X>A7n-BRhdDL}w5%lfi|aR;V))g>B|ZQ$L`Hb5;N zwD{x?S$8aA5_6>q0P5{D+W>Yy*#=)y@r}XL(1)v2r~J- z7m@HaNt~@@GGO{Adk^=ZC7|~2;jYx^()>=dRIBh9qW#*VLWKP4*>U7kKqY;<=f;wPy5!3`yj${@g()MEgg!>AiM)=7jK! zc_%FEo4=ku0!PV6F+;rjGn=s;O!4X;jOUb*G}sR_O{bgrfTRL4F*X7mXJ8gpGF6L7 z_}p*T|A!>$=Ll)^4HdX5@W4lWA{%{@vW}nGmc_mTaSJz4Pa|?npQ}pk1!fM|%US$H z3hClI|FIMAOT`XrxocfFV1=+{?$qm^K?)td19Z0f_!FC`~6~*Vw zM-*K!5WxdBR+%Kt7tYw{GBC{G!C4NXA zGf{(N7!YQjoAnD$DqtmGRn+1eT75w<`|BjA<=$5J(dp+29^B4n!2>M`!2?F3k8)fv zzY+s1krekPcje?{^U`-P<5y^fr2KEJ;g5gsH~E)Hmz4h?i}qqRO_}c)c-7#;>z1(k zbfmIH+ZveUs?}KyKFYwQ6J2T5;LA*cfMtQFGpau>6+K<^DG~cOZ_QL_C!-F3Q{5_ZTM+1&1EgA68 z-*dR=@9|3fJz4)b4gB1}15b!H@wf~;9~RZtG5QNar_a@WZ~4BP0_WKNP;~m#IAn-D zSGn~-hLzd`0#sOA>ixMojC~ULnV<1Hk|8!UClI+z%dnyJ82{ci^p?L?qffy$p~Gp+ zjH?YDzL1s!=mEKYlI8+Zi1HS5{@?^+nj~|dsz}M(Lgs3wipm-${hc;d4kdOKHV;tT zOcmSwT~PKxS8a**-24K58HF!uVv!6u$>l2UxC_6riaXjje^;vhv87D2B=rmVNy)Ur z46a+I65G)M22OU<3i}+!Tc(z{6S=ts2pgx{?KdVi*xfNvtH`2#f!tlcRmBT8rl_*0 zNmA#3$;omf_xeiT3-Y_G-TY451w&&!AX(f@AXrRy=6%8=h0|%7oKAS5@H?UY;B=~t zoK69@1b|*(h?BQLyoJuEPW(@AEXNaX3`Uios>JIA>eMR463phVSr@pS+@B&y1z3Wy zfi5_txX~`0P_gG_)huyCS@L4__YC7Zxa_<8(y`sF_zmVGFM6T0;HH(3>_+2c^(RF8iJwH?n)oml&@0S4wsFuS`+mXyZNOYG_U_-6gdR>i}5G6u6|H*56r4 zf0?C(^l#H2j?B=`lJu{V&88;fpWOHCW6JgWbxA?z^-$5EqtluX*Ti#oaWHq`p>IEp z+>E#UBj1{jPK&S5KH)Xrr$6K3Ennncc)U|sIEfBc4MKlC!u}-RzN{xQ1tdqp=+93Q zN@*_CEPc*zM~2PN&%In@cm7Z;#H5|fflksUyC{2+z>U^SIj)v&UCj&B^gaF;$Edy4 z*xk2~7!cmQTZfmJ$7^5$m6~R@v2}3>)p-#~BAZ@}ue^XkVnH-;UmR(^<~lBLS7TKjrV?^)z)Bq!N3{i7`O7%lq$q@jgjG9EXkC zi9e~0md;yzbC5oNW*dSa${N7?DF!IY#y@$bWrGu+(bfBM`|Zr_Ep4~_PKGSWXD#FA zt;p1=u{>fL6 z81wxD^ih3)Pqdy1i;(r?hGb$_s`aYdJJa8#SI5;q7Qg(l)=zw^a8*~uC+?{D#G1tO zP!3uSejdkVx~`D^`$GDgHl|3btFwN(tu=iIXJ#Y|_mfa&UTb;{B`J_B6la+`ZV{FT zCf?`%nu+J0VlK4l)81zEZn}ucoi2BYia$zfTJ5d?~E6M^RYQ1n?tKmPo_|3hU2J zVKra3(^u;}zft;XLx4xjv27l0eA#%lO-~Ko+1Ey%>}B6_fMk;a62kbtVmg&P+25tX zp~7n73C{{G0Msf~JPNBYnBeMaVUQP57j|K*)Jf(Uive8~C^Ti}K_#DwJqC4! z)=yU}=U<#d=fZ`}Zi9f&)~2M@Hb)I9b2F z1iZHhGD)#RpW}@wtm={2hgS}edupE>`yCd+)L#ML&g3b~6k z$U=vl4~)aAR3A1TF}?V(Z(e>ild&q%hOq*v1Na^Cbzb7!CwTRxF!@tIJFw>$uSUq7&& z-W=-AIJe5VG?00Jmvu^U8@D{ZQXKdLr62*2Cj9QtA_ZwinSvB*#G%2ws1c8ia9H_G zCwpF|RnmvW4~Phd@&}4<__!p@_qjq7uvWbZ5PC^=C-DuBYJCKJ!?VUMy2)R?hD-gg zeUpF7_=a!{BR+R3k>_iX&kZem$x%qzR8wEZ@5Uw8!}dM`ry}HouU|qw6C`*boQGKc5*al@SlMhk+hk>FGv7C?i@4KSz zUl18a9dSy#i|3cU>2j~j`%mnr{sqj7se7@d>-z2X!+q! zuza};WF-;CQ1icpcw5n@g&+(eYCb-|r5N>$m7k$nhZ2xweF86rF!KM7pP79ppyOAf za4u~=R9Lhq?Z1V|y6Ae0(v;coDH*Lme#ec^M|ClRBx6Q=XZtPI0xzS$Q^&_5^+uq; zTiGj7;BgI$%VH#VT zki_6kkiClh(Tlv$?eU8Eqcx-QM{(6Snm6*a%>Vmp`J*TQgOjy?Y^WPE;K=+@(2Y!Frg5310fJLo?+~SXJ8;w6YeJFnvPqbt7mGDRZ4k>KgEVl;r;bj6M8f_FZ zDZEh!y=5f`2&CpM!c)`*`rZcm#;v5SI)LB11k)Cz6OS5y^yh-Ris==IbKo1t(|*0& zY^1?@q3@$p1h-Ry%*ogz7v^S90gJObFql++AyxlKJoiE1afv=Um_K@oKsYfZ1dnjb zEWV}Y^$emPa&8PDwwR!tF~XPVwlY)>TyaGxG`6hp?o0qCXBlbN}03Xg$aS~qrjY3L#nd=6bi z0%Czfjcs66(xG7qm*b=12VA}<%cm4284|}7n_;6rXI8{9g}pLW)+5IuO{~Xup17>0 zly92Yrt^-2+GX5=2ABVdodKK^yNIMi1i1v%(rm7BuBfFVbt_p^bNi5 za17HT|D^$0`pNDHPX=)Q1jP@%?+z!__FBh}8b9k&T`B$pZ# zMYKYi)9_J5AGsg^?L(r7%Kb^lwnqIM_>-)EvjjRgydJ7c$UIi73rvs~(c$&beiKD% znLnwHVdeutxPbNrA!xt4FaI^y=j{k>Q7WCi2I))UTYiG`5QB{zCqRD%4&#R0KMSIW?0buWuo@+sg5%>`fM`wyVF zk&GN5cibTd>32F*UZ+SSeyX5`f!K>mu!5&YJ4izbN^h+;#WoeY9{rq{qZ;{q0&foh zg9#XK**I2jk0do#PNDTD>utde_V$d*CkpW5&6|h8i!8%8YrN4e65YsOaf#u@R}pXY z7U9L$C*J4_2o|=TH*&m@k}Qpa7hhnBjTmnvflv}}^iOOGT#dnO1o!kB|o7lDm!j2 z-r-r=xr;>7uJ&>hUh3qh+Xw1~p=oz=1EXnMVfToueQD@grR|EAso5%mwzGU%Qt~^0-xeSlScaBo4eC+L-LnAw@I&j1>rYe| zR9s6A^y%5dW#^YpGDC@hm>?zD`Ab3%x0=~AiDVTz)SfUR(~A$waLj(?FtNPxC#qfXg#6b z9E-2~5I>f8DO}=N|Cz?v{#4><^ZH{fW{xvx$-6CqV`uCzNgmmrssE7ncla=&BsN49 zkte%pnGHwGzBVX*zLMvEm0`)v8Siqecs+f7*NYG5&b(yd?bOdq$9}3PXG{i`IKOhW zJ0|)a{A^b$iZc}LR$TJxVX~pgNT+1@WKJPF9npjrzEpnIMw04p;`pTm7|^4iAy0u1xW*zoUDmr z)PKq0C1%_e0b*`B(_iFW$DU{y#P&DsJLNxVc?6>D0C$J>Uds?b6u?Uo_se)V_r`6F zmsueJVKjge2h8vLt=rt>{ET7uQ9}Z-^#-{DWdCdp7#1k+?{V-Qb1XnRq+dlL0d#YN zCh;&a0Wz$5D%iXPq7cymAuk2adlV9I2iuTt+~DE@dJii!z@h>a9k5xN=`cY750nH2 z%uOaJgECA^0HQL83Ghl|0@#r(CO~NeqKE(_UKkNTs0tAQDaNp_JS^ZmTi{qgg0O(w z>H3AY4;K&cUz~w9T8sy%859q29~T7sb4fga=y8e%c%R|{W`ywozZ1j*oHbHBz$yH! zaKeHD>Vlwvx{{!P`C$3ThKajCZyp5&K(#a$jruJL3ZPm8E7MKSUtL^4jbIYEjiq4I zPL^mhOiu^XGk;5i0<=$s{D)zJ0%X8V#NrpeOSv^WTKsuQACUak7Jix#6 z{%`zvfKbaoat(?Kcn=HV6+{KBIoGzHQKJIN?YAHLVKm^S@c>2pZHfNjg^t0Z{q~i` z15_+`Q{V#I97^H=oc-3t1DO5x9ohoea!t)Ujv?19xPfXiG$5cX9zgm?V7~n;Q%C-P zJb?00jS>%ly;vj;3kR58F|ygXRKW>N$XoH;l|-Z}R6r^Y4)!1_wfBu@Hg+0LfMrV= z9Ff6T(=t$$oV|Fb)Et|rL3jY)kHlVdrehhPrTABm8-{$;-j~UO~`+%qvK>hKs~EhzPwA{)C1O1e+aZu!?8~C0VLM z3|cpc!D|>4e@Xy4jmw*VYKk&cwLzQ6Q5VsMz2z;i(R) zDg!D;O@&TW88aw`x(hp7(!aFGD;%~C;H4$jwzSJ1oVENwmrfTU5!^98ww`D$1Rt!# z{!G)QbzZEW`_^V+-~JYzZ^ucCcd5%X{6!thlFi#FS+nznx00{8j<|O7zzqK4HBc?f1Ys z*ROSR_e=L^3vS0o!nv^FgRW4sV&p}(w#Xvb9%YwLy^5MkWMF8sLaorcu^eb%*pKJR zQZQem*s{=$GgcB#Sm&%_ilU%`tntN|>2m$(x4s*Rhd@6Xfj?xEp~!Cu;-z01zh%#7 zoya(ZZX(MrE|-XuE)KgRrQ-qH!3860MU4uR4oK;y9A%4P(jukXG>!Ie7hmUs2`v^W z=>n$TQ=%Y6{1!)0j{>HZ4WpEyUQPYhUk^XsB~SJ(sBi52^#9kin^>3FUZS%cpA=(W z8FAU?TKKcEV#K(si>NX35S6JngGn*4*SX#~2V1@}R>kHbc9eh=(>-mdVxxOjiNrod zB*kfR$<(l+xa|ZeL}iCLBrm&!K#K24ok{yY)E~ALa_c9l%}7NcZ3P_)Lvy+F{W;Ua z^!ffW;dV}UQq7Ums3})gd9eeT*!Q(7^c|a{kmTK@Jeo$P{m(WwJw_03^1fx93+$_& zzb)%;Rk_Ebnb^S;sT21vx){RnPqPWD2a3O~auOhZI}xiD3lXUcld&C2IMa=^jCIG? zLUcV+wUAH6T>C4N1yKFs`^mGvCSW~YFA+xoyJ$-D5ok3Q)_HaNX!_pwXeIjICI1rX zdwQqH&i7{Jm;dXZJF)pGQ}(Xhw#h)l}lcKetD@jCXRW)E{9Vd1!qyfL55D<-;6XxaC(r?S#S}Yw@W3Y`LmS^{xvpxUoZduRXJBPJHcoRq?gcPv*nylk-nZ%Re8eRC{`WulD`JF!<_C%*VduPu#M;)bQ1- z;A5XAe6`5otD0i`p0lREw)zjv2oiSaH!>glU8CbGWpN*okFC&*5WXGEre`^!y1Cp-s&Kf8>zvB?0s(>1ZCcy*M*Sn9T!18F=j(3(>jOUaO!(OE3HaE*Gl-Av z=A%u`CIWvdPtNb2)*2foiM{c$15>nXqs8ecwC0Od0azL~iM_+4As_qq?ufdxoR2+B ze#C~d{1cWRu`FKND4s+4*hjB%9s5&5Nl@gbs1z1nWz2n8=P)OeNI*RI|B!5>L(R7= zv?O23aKvoPeWfIbj51~iWZB&NrvCSd@UzLc7V@*dvqnpH^g5KtIj+I20#p_W)12W88_ z#V08n_Q8Qu<7+>FbeaJ+!j?15a%JZO?ltFbtcb6@u0q)9Nnxi+M6{hYCi=C~WMekP zZ55=+hN%!_$fkH!($&pULTYmNlu)m&u{z>n+f0izrnG)=0_oQ>#??6vcEG-NHoR=^ zedpadQTD14sn|kWv$$X&_OjzJlvA-I7PieYO*fg9pkw!=3_G7(n1o_|fT0>hw9^QN zRM=6d*r!ggwO2yL9)*w4tyw|-gReyRsf{Cp_^?_3O_Lw{Emymhe!T&wQOU44CWgR6Anj)6=QXHF6@}{WB(MSng!XX;Q zeE4(mxL;p;wS~`ZQ5oqU2l@MzS`j)B*NSO%HUHJbS1vIrwk?&rjQY=e#;3?*Ogl&i zNDUwJg*$!|n|U_&ELoMo4y1oqD)YIP`AgGwXN7WgMIq>U*fP|{iCG2K*o zzW>YpNRl-~e!mmL@2~xE0CsG%9);g8f0K5s6T$EQH(LzfSi_%RZ@zzQC|#bb@heae z81>z2A|%ba&&U$tSeo>IhEb@-ob*3`n89woe^h$^VEcb-G~j{#KcKe_qt9ZaiRwGQ zs(k;`3_4i+ zu8pQhtHSg~snd8HP`#VlY0!}R%Lp&d#KgTxdE8zJ+CgU?l==S?V|6@~ z@cAEp!Pfb!<@0~KC0O%s`h4BpStn4sO`yCIB7YD~3YY&Yk~NT?A4r z?tc)z9!tLNk8t70{Qc>i9hSfUJfi1U$=}aO_^`ot(6_?0r#M+F>)<`j)1Fyaj0ALsQuLRzN4r zT}#$MlbVExk}&fYTk2J@80C3DVf4X_<)7QJWq{q z>H`f^Z3nVm6cvC$@eYljj{srdFFHZ-4z(9MSv{Wijvnu@mKQP&#~4*3=QqFQR}k+I zV)kLkID^6+t~IQFQPuF_4)1!#w(Ozd4q-mc>qS*vR9o}WlHdn$@r|%m$vATJlx)+D zb^fQPdrddb@c$5b_Qy==TW{CULqL@!rmuP0v4U@T*;9TWnYU%i*gq|P*JiKjVQQEd z{EK}<@DJ;Z7kivaCIosl9m>S+)4>e6S(d*H@0YqbU*KOAK3(w+33{1?nznmQ&!%&q zSbjUnTC@H(O2}klyS&)3l;1|c+9k#OvG7+Z%iYxodv!(I;>wld2i`fmu;?A}wI@^Q z06uFMeAdnJb$Kfh80*R(u3CArS6EM3y~X$IQL1_R-}{wJ(OU4|`JlsI({sdTB!9Gw z@3uffK4F%6#r_W3l%(G~{YBbQ!9xm(^?^dM@t)0o0RTQ$p61Dg{VMD(lwk;gn>#5WTh`25y+7dZ% zjay^o@dD5Mb+o)n`BvTt^>(9tn6D~c;QJT4CD(_pGitm*Cl`!Nw>mNL0%!3I$G1us z^I^VW;|1JuaZD}KmNqeW+O%*=v?VgwN7_>F{~Owpa}kajB~Zf9I)02mnYuJ;e84xy zswhbW2iC9e^$k^&M)5B?%h`lWmPGoI1Y=|ed(-mYFK}YuI@6L~1^?X=?z}$y_ccfb z+vbs@Z&3dGh3tW&@ZV48^vL{oMfaEExgq@bZ*$2B=f6W74xx+RYuZc+>0OFV#Cq3u z=Mt{J68ii5L-H2mhFy@P_BM)wZRPa$Eod>?AOEk;vL3n^S2C2Li&0{zm}UK4KX=-T zM9gT~OW8JDqDMfLNsz^* z=u_$UyR~aLAm<`39{CcJs@b~@e+K#II2d0!&3?Q!oxA8IFSaq27?2yWMsCDe8UOxl zY>)X5F{lwZ>mP{Ug$*6&p|iI&wd(GH1CfMtXI=rgT=M6zk}AFYGvocOavh$xGV>`cu_;%E2UEgi)$BmX7U6#~yHrU^mBG>W!PBMEdFh9CXWg0XI`2 zAD*&1R17T_r9wIe_7 zIko&rO)mmJdiwKElE2{D>OLme@~3o^_|yE8FBX`bVm}mOt%&lJDuaTM(jJ z-CuoxnW{;ce~MphOjh?XTUEBDhuhijnXmlTCMtBN;I~Qtk?Low4?zp4evTGA9ph@w zs$%V4*o~UnPv~jk1b6A0diq^8fa=55M@Y})iUQ=H7_TKk765;9uv~&)?X;V=yH-3A ztL{>yN))A{RYlVtRzU%B6IAbViKFzoLEK6T76-YYP&cqhDF3Y^U6m zMtwKNA2(UOBhiwGz~Z5i)!)G7kHn!LAqlq=L_LD9j}Ttxv2cIiR` z7Hb4ng1N)^j*hUmV3c#DON@akAn*h-p-{cq0;r3rpav^MB)zqOX{#d8YbMi_jC*0t zui(J1;*n+d83ANWk94+*|FeW)~E#UtsHc6jB1O8$6?J}Hr?(nMWM z1`KkJ2I-)dg!NrhL4DWj;`cS2y1ZYxn}Y46=WyEpCE1xJ)yFB?QG^M_O{Cy|S?hWPHS88Qv%K9Ba z8U;rTXCIqIf~GZ`;%TZnE&f!4>V~Y~m)fePC(Z1tRp&pK_ILFXrSbsgyK9rZ?GTPg zbVG?(6+&Gg3qD0+=V3!*2Pg3;bsD#*!|verZhzaZoO9>0zdehHKcGAJ9`id0 z)JXO|rPQMj5P!;qTHxxtB3K@ab#qmkWTU-DX;N6>b-U2`b*aQWy05S`sPIay(k|Jo zRL%9m+<70OTqK32n690wL4t{z+@m7%CS%ke#$iQD5>=p{Yp9C@^Nh-M85LPm^}X?2 zE1P;~f6FwzN52d+@vxz{09QnzD(fn*Q1L7M zUm1LNYpU&$fa}>u2+R29z3lDWt4q=cd1GRCPb?6v)jd7?$P}Ee?!wL(WMHA!6@+Ga zR}?CPeXt~2hEDBH#h%mY_}YyaLo7FnJKCR$?G;Bn9XniTtM7=f5}aei=eaRs`T~)| z6lT^z#{XeJk_94ldgH6ef^Xg<`c9A+*>OWMx6K4SBtGvv98%uZjUajW>+1 zYcBhU0Q~-@XuuX|C(Zir4J)N<`}F*W**E)hm!}D$po4Vz zZ>bMx$_&TnP5QU4;YiZ)>%xd3RdhIJi2c!IP|@M&q&)vW;sS=A_%xUpWjHwSE}p7}-phYcMTc%MCgs7q zvaz1V*w@rd#Sc-8M!0!aVyHCGk`Q>FWX%aYfKit?DTdf}=0cu+IQ_rDo z;IGNWa+=gaw`rU+?vO-5tU9kFXYDq*U|;rX>i|&i7ND-iU$E{iJ^lW^>O90DeiPmR zcwgO7-5>q>Nsv5W!e2k>e$6E9ul{Ay*#%WVBENXj%)-or{mW<_x4v?`e zI#x{u^Po-W2l^7;)j+5B2(np4%s-23>?Eq}^>{#2~`+34p_jkho1&!37K^=viU z60rS@+|)Btq@Q{?%rC! zvJaBqt4+oNSGfzD3tQ%0J^ogA9iB^$u((YJ;Ec+m^UH0j`Xx2PMsTwo+X}Ad`dAOf zOscHwVmrPiRlPmFw%gQ(kiWH0r$v72=D#*~ONY|=-X9Z)4{l1&=#Aoc9gTI`L9@oh z?|MGgVR^#T2nxxnC5W5q?a9`+Md4EB`iSs*or{#Rq7}2^EnP+E?iQRPBWy3DXoZJa zM{`g`D=y?)7T+RU+|RcK&>f?W%4CNkW)%G1&0P>VH(wLs_co3U!tatg)QpYLx})Ed zyLCxeKw$nz1q8Ci0s1HTO`%fRQfPloyGBwcwd4y0oh`$yP z|Fd^F>Go5Emo_HSzdQN0qV@;;)Nx7?lt?-@cLhyZqylIMzGV?WG^~2aZ@;v+&4q?GkQC8XkJ)900c3=1j?(1Kmg;%ad(i-b#}K+6o3_c z?@spa;jS|uaTNsSIT+6+v2L(@PdX8l5J>r=A7%yX2iFiVI3E@fAQtf$S?%(bnWlpQ zl=toc#Y@$g4Vpltov-#z2izxfmA?UquL;Tsq)N&NJQvU9Y==j)C@mvU^q+f8=jt(1 zSu`t!@5RtA3!gf#SWX}#xgF<%qJD5jWA5WhzPI8*ey{kc|Hdw{s zRkxkO?SqO0?TmPhk569!eo&yh4p*_x&x7al5uU%=HvOPXLAWY-u^FtB`L@69RuQ0uU1ClMUkfD@+o3F@clukyqUXqf_+3BEHi?CZ z`)vX&>mV1*Wx3ifm_eZzGn}?RrYoIx!}7!WwD>bxba$|(7>?^2{T_7c3@A5)`OQC~ zKu&*0VN1%N)EGO`7<)pil^xgb4DeY2Ld@dHoYo1;Q=M$dF9P-ceyq)FUQdnkw#B;u zJ8S#j$0PKp-{o(k-|yX#!9Hm@P3fm4VSKo?;b$42)W$OlTN-08XJfll{&uPOvS$=F zQ*3?lDV)?1XD3OuJQQEy(%8n6z)CB!{vz}{(vS96Sta)TzGt}7VYKAzX$0^yUn!E zDLb0z0=86xq<8?e+`C%i>DYD;8wWD1+>^{TJPyh(gJJP%Gg7ajrp+CoFFfF9JPXTEH^qTBHADVQXPqHt|FwX$h-I z^?4>hzMnGzZ#U)tgJiY;P|Du{mInzc55N?p%<0Wttd@LY{hco!2I4^h8>sT_3x#Lu z^Gi=kCc09&WZ`1KBQxZtw{m@wtCKH+Mj6{gPhk`2iJx#JS>L<#q*P*4GIvG6Ycd|M z$GSlVD?dPPvKMf5$Lh5St?4mAHhFCjS2gCjkr}1TdqV)uA?Lf<8gDts;ASWtCVaMx z_ZIBKhvRzI(4e4MrXx@UuYp_1(CZfi58JPoje^oRGuFLv2LQ|a`gp4MAi&bKD zYoa8_n4mZXAd_tgDV$~Fas-dh{sZ;mr!X|U*ZZ3@&1&1NhT)?Poj6{t72KPzj zE;{D6_hM~{UTqZ9xpIb#uHM4iJ@~S*zNEhaO97j%e?&$hG~MfKWk0zeeJ|5w z8feYOY!_bOGy31p`m#7gNmB4jEP0Sr z$XF!0KrlV~oQ{@0`$519j*#&w3=$5(l))EH#hm?dd%7BwNO-D=uB01=5r$I_SC$(4F;V+-gz<`&$WeX%g#mCUPBwarcRZ;OH=ob)KH8Tv;L6HdWA*XQ&ML?RQi+@ zb?}(J4BhGdA`2tg<13UBG`{Zi5b(iYFtqJKT12n869e@FpF7gB|E81O z_t?Oam(um?m&OBpn@#{%)_?AhG^Hx?m8WCtmmFm~i?2Lj0H8DX5%L@C9-kOsld3V# zpb`8+eYeqn06>hsN^*UzC2mbwqvAa$*bU=%vHRNIb(?GXkzntdp#qsCh2Fm84|6w@ z>EM_Cwih2x zi75CGaE%Q4wio>qH!$;#WuuvgF-36K!bysJl@RVSNPxO1zBtG)`pW8u<)^v{^S(+U zwW8s>W=Q?8)44(&p(!;=fUyx*HjGF%VKhtOvpsb&+%2m5^RD9&=Xu zz#i{ntp~Uc&P>dxGIL9*GP8{n@(%gFEK-5`F&o_V$y# zK<2HeZDVc>^7489v$CbG;fyoA@AF!}Vr&ph@EE_mpG@JD2s82f=7xNk*?~p|ktXEJ zr2M@-hs~hwZ0=Y4TM~W7l+nI~IGrJ#jdP{8gXHpGh%h65jn(UQWJIxL*f_0Rujn%i zsFc=bMuoqKJBfN4^3q(1Uoj(l*6%c%f)~_VW5aELG4nkd&Vyz7pDX1}riPu!K^Z%- zxZ%eRX){pBpjqxt93l?V-)QFbN7IR4IF?M7h_2p4_)@v| zlEfkpY+vMz($Jpjvn*BbfMo4o!LrDV1ekY z^q||M>wgi?E#ssGR6m++y1w>$gByUC6?C^S`+KMqR4KdN46aK%m!S+ZXrMPu!S&`g zgoK%7*dE$#dnmKXr2VgblUre$Ij!a3O{Y=vxZEr=(eH3pneCBP2Blj9Ut0Wm)v}3ib|5<$1T}H2AY(wro(+tKvb43$OQ+T>;_S+cS zRWt2cZWnTTL%V%$+%m20FY8a*v2p-{Z1yx(G@KumSnVg&x5qDU4{Y`m>Nm$P-yB%% zCqVbPyjLjH@o!S~@JcUlr@dJz3=3>gDeuo6!7zZ2RkoVtgebfrGS&+$>&trHVy-jR ztH9by4pU$a{Np8K>j`y~htg4S(=xkCQ=QLVI~ChS?rogZ`Is4>T`zEK`;eNlfv4Ons%CE%1mzeub{ zyEwwIhWf|)CE$09+ckZlja8(?|8s-*osuO4hAH8>&=(@Qyn15#Z-ejUZHd?|%WPzk z)iP=>`hH;4blaaUG-A5xmml@~OE6o)R+}>|<+nOXaOG_O=2_D2*{}2XC@7Cpla1|E zxt-XZ5_Cy_rLN=(E}&GKE3dON6T3ra&2%7ckPLjTc#kZfHOYII>0r~dnWld9G0$&r z#ClcOM7(b{_GrrQY$+_dxMC%HNO4Ex`x@x03CH!>an#KiNS!!tq!=XmwMk|YIA)psp@)%CyXcNW*r&ib9K zpGTtgvvbKy&_E;oJ(cL;tJdFk)87&NOOE=Z)&GjLlT1@S&`unQ|JS9RIIZDVrK3dJ z2`WiIp$oK`|4-rHMYYNu8-D5ecZqSz-y#GZH`d zjkkPbtcrO=SbQ({Wd^*MUzG zm(`T>T@%}ij8{i>6$=86l95~Sb%SPN7u6~icXvQ-&E_g^7qt~X$;j+h`Q7WpvFrOi zs2PJ9t|7C@{T)T$YSX^pPx!kJMEaIAkO)RZ@!FvdAw)4KKH(xb381?Z9iMPn$b5Q5 z@d*{w`HuZ6j87Z5PQ@oIt$l6r35Um< z-c=Hx&^bzc!b8RQgd?&LndXIEN-OHRRO0H9;}d2RpRhTKPdHi@pYVtgoJNaJcqE?t z5{gi$9}N?qpz_n$cS!smzso`tx-;+~F3U~*a;pBtcy1=AOXCyXPVSJ(G$tg!T`Z

    To){nyxJ<>8P;m0rPFLk~7Kk;4|@WaO3 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

    cn;!XgPxf}w#fw%dk83QmY( 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

  • !D(%i1~&H6Pt-het{&I>w1Wl!86 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%0Dv&cBZ8)WX87%l6;V{pB#v$CmQ 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%0DOfpd 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�|>G+HJC}J1l_Rq{>hwhBDaq=IA+T5u_z)bOwN?3C1dC7sh@}p9~B|pvW#y$7l_8tzi*{Sp%UI(sh%<% zw@<0^A80Ok1F z`YQa5{$c_C@?;G5jAsx!UD=$|CE4&{2~WPzN_)EWvJvy6qS_^)Jl7TLKt|UV9Jv0x z09#&|GJ5gD_X=ROSi)ed1yv|h#nY}Wj~6lSr*_0)`8%1|MBOy(9!p=h?SUzybPl`k zO`wd&%|@2quleY zsRAS+NwDliJ~KnXhzyJDG%c;y3zVY_DP)4M9sraRdT-obNbL%hCRR-zBX=sz$(Z=; z!d!H&WRbn8GFXYr5siN~bR=}k`QxvQP?)?1)m(%AM{#6Y1V!ooda7kS)C%BL+_hAN z`VX(1)Kn6p(sS-^rS!y0B8^G=Rj?SEe|uAdJ}AYV^Z~lETC9N54uhR;aBZF40yPu5 zG*R`Anl(4-$Ol*9%2C z1yg-_Tahqp?SBAbuW6FfR=AMLl}8I7!Vm4l!uaLYlg0R@xc-iyPrwQv_4ir~XG?(` zGoairwVrQduGPQ9U%Z9oT0>P$W3o-|X4K(|#9ee4h5JxYg1g#&jKo>7;d)n$7Q1`e z%6Wr>J}2F?z?j^Pb>gqG0Sv1UVsH`CEc&e9aU3wgiaY{>_u9IQO#1qMD3;I?@3aAe ze}S$BHSslo7cmF$_l0zfZX=Roy9#;o2G!TYNm`5%44qAbqQIZJ9Y+hE`J7TGgT)fG zGPqEJr(c4EX;=fDKv>`Xc&^evw)QupqAWaD;0rBo;166@;)l1r`Pl%L=|Iwx2-C;> zqxeOXC;4b$34-;|k$&bdx;sEXVZo>37gexm1=aEEQi#C$+>swmbl1c#%yY#yB4SV5 z43_4W0cRax1`}%-M2eYYRhhqzs1S0`VD6Vs1Al9@-LS$6bYfMmhTFJ$^}f5clJETj z%x>SlH66(>Sz)&u=*D#9qq7CbWw;vPMELeq${uk|2h!ZGfKGdL|KVkJ?d^1q?YH>q zgfWr&dP{o^2i$1M^i|-4%0?`rG3`YtUyOd2a0uaR=VKC!>zcxME%-*Ge#cQ`@?C2- zBNg;slAho@=-=mB_YA&KvLtE0!pz-#0`m@xsKzh>(Rcg6ps}9eUj_WVWWV6^Duu7u zt`cRHO)@M(fo7l(^z!KmC{YY|98XFnXQO@)0n8p}4T?NIFbPz;Q6nl513H^_0i=!k z{$Bt)e)!M1utj|my=&B8LPXP`q`ko45efbWf*Yo6p6LE8{+Yj|&(Z#~$b1UPd|ime$mKyFvd7Mv!rS z_u@Uq2ahw}#CaP0W#}Bb7<f6bql^FuNCjYhe$1$udzPI5kw!M&J|OE z*YiDUg`cGzz|MDYBM`4-Va1PijI&Y0SD3Vm={D;5T|y=jkwqj3G>k`_R(=_w&%*&+Y?l}J_z5FK;@ss0xZpqp zfrSX1y?hT5fF}7VCISmv1tzr;)!w#foD^x$`@f8N9O6z8by5J^S#K zMkMV*J}T);8uY%`rD;IpcEGks2>CV62K6gi`3>5=T*^O*WnT3jiu<)Jjo;@`6!}Zg z0E*_vcH1efc_VvKa}nB)3(Qga*3nDW|NfvdA1wiNK&6csHJ5sjS=Ty}84<6usaiHQ_AhNhd zlG&GP7vuez-;W@(Ag-Yb&5_I&A0U~vBYh;9ome}P%m7{7cXE*My{9{K!Vmq_ftwoP zG3{{*R1kGN?bF+^FnTx}%DGKf6OSGMC-Modpz2WoYP zzl})m@^7>w2^}AcUvK;&oRH!z2(e~L=S%f>*xL4nZ@XFATkc1y;}={_@KAWz(>~AM z_ImjGn>VmC%dd_va5^gMLAlQQrUkcGEv?hvmBG1jd&|+;v;k{pojx7QC_W{M^HXaw zk7_7e78EYvQ179Xgx4QVf-yK7;VavCv0mdnx4BkqLgf+qvoMLYy%#%QvFw_rIHoeB zzlOyal@m`eSJl9ke_KOv*79!RLJZym3fhw8X(u4Zrf9*{~QrqYf9=! zxJyI&)#yIzX~z5*s5jfF&cv`-{{z|nFO)0N;nH`+R&GVK#qQ7oPPuUM?_#0&d?&dD zS}3R+j$kpE1NQ`(1^!<-p-7H(bV!TfZNn&DdG!ytV!y&%#`f5w zGaV5;YE?5t7~z)&372EXjvx5QsUhA>b#0vk?LRO8&u8%n(wkm@s3D2ETt#^haX})c zs)#ABtrJF-L53WOxJqTXGE?g(R0LVnG%%a1I1@ZJz5?T5n8UsWCv-6|n}9R6XI#=5 z)dG&Bvo={Xumh1Vo+_$A&n*3%gBpZ_}tnu}{Gt@3mP0?E;FAnM7T+Ox}iM7XKh%M|?@2lfi8Bwtvqp2_0~GUX_k#=Q6cE73>0guA#xIZhaYsh`YnJ)>-p5hK zX}Tp?<=gEaSpN6PfR&6Qd{-dcsQ>eOGRFa-oIZ0Er>zZNA*Ea+@nDB|gu=drx5kl^{}MiIbh`4s%yEB1x? z?O)D`o_D&|ZNhM(=i%RlB4GO?w&?IQmppSC9kwo66@A1$b@{{5N5+&dU+UTl+glLf zc*O>s?NxMK0To5nW%!-gUNr{PG$G!MB^F2FpsKlxa+?Cd+rtg|zhEHZ>5B$ZC+dw4 zZu`b##JK+`0|iwP<1xB*t2jD$XVW3I{{LKv6^R}ZbeoK1^7zs8hxseuqDU&CO;m*H z2KeY*=`)o9-Kz@f=QYirGY{SBm1fR(qXBBa$VS8Ozu z|ItQ6y;8jM$I@xD_=`sIkw!z(3&K!e_AX#zzB{tF&iJ53NIz_c8uT$p#~No=_I0B& z+~s$zF$}Hp|6dqd6^Ol)Lv=l4CpFljh7Ln31-LFKb~1)mSF*dNq17$Y-9}OTWDTvh z8Wl7xl=?US2vTX*o@$ekDogf9>O0yBjcq#B9^9vlRC~Y;Nu+R*Wj+)apBW;U)Jt*nWF;2i&UyQzSRxNGF2TvLZVW2Y(WUB4(77Vf_1RHbZ>fs_G)%F z?c2wVfg9qFTXwRKP+L#{W?zUB7QNGmYf2pvg91d*{o&@!5SktZjl(}AP_yY-2|5upH60d&^>^9~O^1?z zD5yE2En^+(O`T}VI9$-0Kn98K<01*Jrtm24#Aj>Of7}1$i|U zeDiBk18#6+YM|t0)R3cU7!$q~rTtoqrF1V@mUePm6q&#}KgFAgIeFbxxM;T0eqb;? zE9A2nrQG3Qa|Kv1>~p$H$}03P8S)#{|E`37;iB6$Nc_ECDfYY_{y_>cVOC59I-l zmEoT^3@54(p_mDkZY;wZRhFpUSX71jc0t*y_<*8fo31vwUywfYu4~H|O5f3X{JU53E{g}3 zI`_e|x&2^odd!)(4(gxm@?o0t4*P$z>NwKf93rcTPn&f+Am=7=L|($Jb#kyWkmY|o zOqNpKsZEG9!!4k^G{jt9zP`&#Y^MDMZ_Rw+47fR(=b&-Ddt=d=cUd7ibJYgz4fulT zKu?aP?dZt~A69_8xBa_U{Q-S|n~G_(02bw@;>8i|UuU#Gvh6}h=HZtpJ+V<28-;7a zSK$v@4(DNtg|pv{MQ~w=K9s=@U~AtQ9-tNYPp-UD+pYZyr@({=`=R@=Z2>$^q92`H zFmnMGo^rWGAAxR3Lpc2?T=E^+3*iDY;F4US;9_8--0!isSIPs6y8)I4?WXqIIlYn3 z!})!#LZR`vPQKeqWs zb^wE#(VmmMJqLM{^Ky{AidD^tAiGA-8&ix1E~(6z0rn4UQuWZa=4k+yEkthBco^@| zPEtqyC&Xs>V~sVr%-%j{C^^p_ufkKI*s4{1h@atj)rI&S!*e4?#1)Shti_XMuO_|| z*2z_l_PK+}Wsdg7v+AAk(a zJW(*|Pr&I&O3yvhgV)I6sM5%z4^@fGD>cEJ;KXdo5=n7D)VGJPfY*E4YmX>6SzU@k zvU_By{A$+6QjV}Uxt8zMjwm$YT(&j5FEgSwJC;?HlYTfxrQCr7K~G zXlJEF!*F)^x*7Iq?&0f7*^0!R>mdoD?`CBc2>*Vij{3XOgTE7;UQKtn< z>a|euJS|X!a3R742JEwrj?{#>5%;E%o6HK3IUf z`6%Z_*n_YeVHk%79rb#Xl&_NVg_oA!_IszrVn(CBZG&A`yGMMtwm2-7G4AkK3FJB< zO?9N5&z))+;P<3^V+x6IYF=ysS8*e1w;y@{<^?D&|@Ld8Z*g%y^*w7q3=lplFa9&f~0 za-Gt93j(gT0X6h%ueCX(_YAn&-ZoA*+dP8EZ;5%Zk+aTz|o&*UGd zn6F)yP#S2>EF9s}#<; zF_bYVbe)R*+GRGgSsP+`tyG%j2VGy{BZMrjwhu73eLO^G%;k*vo%*P*=EoaM=9OV2 zKR70*K!(DAtBo=~V&je+C|4=E%7+af-)Es8m@&-znELqfIDV{Va+{g#C|Gryl*Dt! z-$dZY<7@@1K4ApHUt&@`ryyJ>d29vYS?SqKoQ`0*BqC6nE|cI`RWcqQTM(WmF{pG3 z0}jNDPfwD#aRp(#3@-OiXcVda9&`bEiuEs6BI#~WMXbd$W@UjE@YF4G>-P&uf><`j zS~glDxo{6c(-5pB!6y^Jja>nr-&oRPwa^o>oz_I?2`%u1Kj3L;)`Cx@j@l6odUw6z z>Cplk6CTIt*abZ~j9%cdkBZ;Apa(k2jkZj7$uqhv@{D1gY+1?V?8D`YVJ*1vQWo_& z^fR{0lL%}`2A-T5*a$aj$TocW_MB;MFbFNMK?@F*zNUZc+qm{lxS0P5d@8c=A=A>g z-YRTG3&IAVehiQ>$vKO9s1zLF(VeReGw0I$Ui!>g24D0VhNHJpBj1Fw$gNsA{89 zbVUJ}a`L3mr)vv)e+u5}{r#(2XwiY6w+2eO30%hr^d6;d(pxdavfd063P^Ao;yh`%V;f zljCc(E9&(>%34~G-Y6qUbg&P0!OK4S_Tb{8|Mja9n+P0=wH&etPjBf8kRsW~;Ne)x zng|}&LWlh!PYY^33|Bd}fHx61t_6>4q2rnUsSnk^8k|w@+8QdE=Xxbj zT<3ZvSXA$NB~-}I0)FQ6(~Hh?Ufl%QJSpFZ-8(vgvBX-A@c?Cv*jR(59s;(2;{YkRY`B2NIzuAg9$XOaynew)6GeN1X5oJ?K1sQ6U}*-J zF{zjJl_Q)C9In$3{aRJ#NCf-g$uAKa&}tDrrPVnTp+SgczJON?_WQb-9xC>Q^0mMK z{4E9sv|y1h=+#1}d5 zk47C)3k>$~7ouxud+V{N#bKp!qQi=d+JWukIq|>-E!c5!=8lUqcNm#FwBRlfMF*PQ zu1L34sK%WLJeqvG84CeM+J+S7iXvAB!aWFYM|eNNkJjsdu~Bf{i!FH!b`Bvxb^`{1 z?VG*FxQ~6Ik!MV=ZxutBtp!z(6#IE$HZ1CfY&;zEDvj^bE7s+HJu?U$8h4+|0Z=iNLeWRF8>%f$0d> zIeZfnp%=|Br;mx-l7UCj_qO_B86rA`;<26XMCec-jJt-VyJe72xTpy)__wAEFW{Oc z{K^dp7-*6};UZh8gz|75BJf$9sK;VhYzxf5XQI*xt^+DsIgSM!iQrHgd}j#51+w61 zb10F6Y_W&!mX&#osImhcm}OA1u);y95S4o{AbMAU;%E!nItljh4%WU*`L2XS13Es0GZ_>#MB=;uxQ`)#w!l_PbFaqHTuo_7)J7 zNF`w{SPX`O%thcbsEHd$fc7Vua@@Af2hS&5!vSOfOl1r+xex>jeO0qrhsZ`+puks! zo)#IORn@Atdq>rFnaC8E$aA+iKD-)t6vyfJV@L1saP^nLCW)JKY91$02T>FKIZyynfB|`)n z%*Jmdn%i8;HV|2NnGvA1Q)EV98E9`vbNGXU@Kr0LAvvGY>K)nCS|+aqp>nW^Di9~q zAq#qp(zSLL&!mIrAl*44-8rf}um`Xh%8;sjC{mp)*f1XZDbN9sm@-Cs82~p=f1+C= zK^$X%B7dJ=NX&v$(H3}5^@28p9^67682Ta{u3%Z?s9B{TXU%qrLk&c-;t}OND35#; zzEJi?vn*)pTGgsK5ypl9^MRUUD~c>(NTHyyLhOswmg=eziV@1+Qe(O3c{1t>#eeS^ zB|K@4)KPb9$`U22yoeElkEVL@=shC>F9P5>^5%E z0xxdDP!d+*xi3h#(jlz!S@q#g)MLP#)rU7xpRa`OAA(_Y1#k+D#}EQANx=o=(Edbd zmk2%G#?GKC(2FUFVpos|ZpQ{75$fm)^dn044E?fa=#RDZ+g-`2!hrf?N9mj{^di>0 zH1=!HCIZjMan3gn04JYGR9`*-2_|+lhnZf$+Qv+q6M=1#DRmTU%(ldW@dMlJXyZU{ zSM_BB^xlyS4k*xCmvB-=7zV!l4w)q9H@l&l9zU=Nt92rDSX9=jV~Dz(QO6S@9eV|T zpnKJnW?=Ine{k1Qta8YT(H>3&y0xJ05B5lE=(s<$AE_u6*pK)`5F#n|8y(G4R)Iwv z@&~pr14bVbcpL^iw1Dmp^h#>*xIcIVsUfs@1o4SLZ{Hih1NlnB?3eJ7xYrm{} zJzQ;>xIIx1Zr72h^vLItL_Ki4H&LnPN-gSp7MhDX@UgXj1IC_3sRqG@acXLRi7Ugz z7e}lQ*SsyTrf6PD6w8U})?0>GSuCp_5CpSBprK0Vr3SbDhQ@HS|47_idrad zv_2AMxS3^!F!f-HknxF2vrsFfk>*>`Tx^Bi()@XL1S@}~!(X*{RgwAS^jC#fT}kLo zY~2TxMHTLZTfyVUtdYGagQOK}c>!LKu3#SmFTj-A@-`eHF|i!7T?Uy#-I{&er-^!S zCAN2%5^zTbt$;92(jimN#`X=$996K24X#yM5tc`y;I<# zkRW5Pqtq!`a1_!UMhBp!K!rbb>#st-UDMHgC#X~l>4^BHintjY83>Aq_z@-Gpu=Ce zxaB$xvSw%yksBEq0^WpMKy7Z#(TW8!iYRvi!tRkzBa9FB7@5DWs{AV2FcNf?Fh?ca zfwqKQqe1i*B|evJ^V4Y4NaRqE=>4d+Emos#&?zA z7>S9;;q_%W_A>vXnQPdLyY*!zsg|gs)h;d?cp?#cGS>1WTKWsJv85+a0xk98lO5B# zwUf4B|K!L3uq5^d;$0m^Sb{Q?7nj9H4Ti&i(4nCcTJQHhqX1Mu_t5D==wzLGo``;?E zArTSfYBO9yw6<(uE6XUODADyk#qQtyvSRl*ublVBME4BipBetjZzj6;^Pk$^QHtDJ zF(x(WNcBQTfRBl(a}*%*cFI?M4g^tv!Thu%HE*Y(<-vNw^N~9JXXpwfF-VZDEpE}R zEMfq+plqUw2*)paT(`Lpi{BPAvqdydKKt z!I3pMB45bVkUD|&)T{)Kgff-zO^^}wct4_^v5~14)dO$blFt|c)EU8{RNpjim7$uK z;USKj1}}P*E<~IF0h5h@%^jJ9&eZ8^{wmOh{|>cVKx86ER;)|q&qY>fW9qQI0M8w9 zigxU3ibLK}+B(_qa|iGd`TzUl^26j!)?6s+u-(C~ej#?~-1grEAFdF3hj2?+dO3u} z7~TeqO+=W(Y`qz$R+dOLBWvxS#BLxoP)TK-qxFj>H`WX(*~PU&UtF z$rNXLBfh(;3Q7)6%4~|ss#%L5}@n!_0sl7 z;g-QaF#k$~yqa=WnFW6TA!beVhuk8QLDsSKy@x*#Gp&)&abmGabT_*=896?zr9o%H zn*Jj`fgdd{$zY>o>r9MG_w_xaisnQBOjh4A*3cKhWp&Vvl?@qZj)Ou8iUY29Lur5l z?USgv)gI&*^hy)c_Zk&kgK`IsO7mw9ql^}DANa$jGZ)~BmFwiGG`eJF*mUNsXhnf6 zr>Orzm;C{E^CUBeZybAo$xwdU?z@Qm6#h9#w}DxC%)~*P;(F9npe)i+k5e&v)YEU<2Y6nmk^;J|8wi|99JKAD zQa5l4oYgX%C;AK^R;mwVP7tL|xDx2AYj6;EwJ46AB4;1Ad*5b4@le_@{f9>LyiDVniq81IfA!asnRp+Jz)lpIw&7$@lD$0gmhrFC!e{tQ1 zh^<>wg8(sMo88xP-`ls45I5#eQQPGvL2Z zrErLhlp=M*P+;zIr>CSnSWhmA&kRuDHAA%_ntxOYjjc|0R3A>@oGsuKnOODI)JQI=1BbIYcKtNl-=z&Y3kC?ex zZ#MT~GxzA|-t;{H=SS9VM32sYn7KcyQ6qYE?p`g_gAVRTPkJ$tM-V=Y@S%D=A|vx= zrfoF7uaNmG2T*0-`puodgaOTCg+__{)^kwM$d)zLdr896*}d!lwyuJbPi7S~nYbqe zA!f)v1^Bo)5qwn84=VdO8iS;a)`9s@Gx$Q!$eed84(|&*Ew%2)*@}&J1skAzvW2h# zfPujfrXNcv*go}^f-r;F9s&k9pr$Z#M9zV+7d+w*ZFD8iN%n4NTbS4@iGW(KKeWM> zRQpEo=^jyH9RlQe@^YMqtgg0aQ8daC8KQb0o`jy=)?&P*sfR6^$u2k}#iosZj z3vma4U`byMa}hG>m5ABJ05o%Ka~D-tRC9HJV?xy@MX-jcBK>BO?Pd`SZ#xxQp>5cm zVF8S_3`&s~%p!wkkr&M(SQ}pymEj9e$$+Pj3$SCG%_67FBF~ydfELecp=T4J&7wZU zLN+8DpMGda^HLZ#-GuJU0|qJmd}}{N5R)VT7jj9_{DGw{PCWh)z$vNWMDhWIvozBW zni1$7&yq_fZokAG=mpr#Y|k3RV}o|XAf7eNsPPv(w(45L%v3kZ0@naL zsUh(=x5N|;RMe4!gNZfwAWAI8wcxV{k3o6>lkZQ?-r&|AXA&azC+**X%?Oq{EKR;7 z`zc8FDB324Kh9nXq+Zklk3uPsSi}9l7JShL%a`Orgu4Q#IHg$rM+kP9eK3g^!9_s6 zrcwjO9)2m}O7i|1a8S#EDz_~Wieqohmv_(;+4Yk+0P19QJNWr_9Fyh+X9FX6287YUEPsJuGBhGD_<^ESDx-ykWGMA%gHk!wPiujvVTGjy zH$a+*wG50V?g8c`*LlJ$GN7!=5`oQHaI;7SiiOAqh>R-3LY^^;fPFs0^M$~Z8kZBW z5XIXvTqncZHkw6-u-MQTji)Uykhca-k%fc?46Vr^bpxq9>{>_Kh8g=M>PxiRG898g zW0tSL@;_Yocws-cp61z-lKAwiPZLwz=?1vVzj*)tPe$6!X&9kocb8yK^YqWlg5yqK z4GHq%I;YFh?=~&^pdi|r2hC1~yt*6Yl{mB}L$vo9NfnZ@Y%)G>JFxcuUC9BO|bF0q6c zCPe_!wc3(;J=s7hn`b(PK|vo6HG%C&{Uwj;A-mYR&DJz01jWNZaILE37fi*Wku9ZC z_gOTL11y!cLsbagMp`+u z%rl&fu!exzpU9TthW~L(K^+6V?0o#L0_!v;j_3NWwxs0bhR#=CD;qio3i@hi!xT}P zx>k^&+StH&WCH_j4W=7$ZhvjK8I(ClAf}7K=)upN7&{itYO*$3KxDTw+z#+~+$;M6 zsOi8lp~mOFAa%@}_puu^8NcBYfcB^jtQiOju%jP9&<+zp!JN_Nr3ea%Lm}u9@ZHgf z2;@-+x@~m)$02CHAm}3sLHh+k`{$boicQ*)zOTvJ(Qo1(PBv{jGiRK3tU_2L`*Gy8 zO|Y}qV(U??17^fq3-_l<#O6W)a@bEaYV}>L#TlB2V!vVXbe^do(GQc zyc3Am70_9P!muvFFbG}uhqk+t6sQcG=57u+-D(Lh6MMr7AoV7kQ#?Hv7z#Bz&=@OH zL%seyUKt_b2M#m2_2T3WlH5&-JH%GI0^R&+>irY-ZQVeUL%^5*dc8}oMIa6hA4%B1 z0|DJMFFkCdq1|DS6eWe=@xI%DIDoXF34iUji-<FI-tKOC#NXsE&_ zq<;nE56~@Oq(Kkq@+O%{QYXbpvB0t;pwv)g*N?g?a<7W4dXS)w!_~P!H zqwO_8)GHu@?fdgs9w-3j*X#FH3iL0MAY?wBoKKjp$$Z*s!-=3LEetQ2LQlkA5Fog>I?04YY@ zoKjMX^jFlJV0vJ!YEixvepqJ|{J=%XmkAa<13IO98`Qodb4vn6jFM71fsIs@9L>S? zj0bFTJtL!|`A;TNInod7KbbakVZc{ETTGNGjVMXXoC4+*)4)LpDI*BoP%Lp-9Fk=b z3&W5&Ms(_Bb=L<)9D&f*3H70Yd`o zpg?WaLyhYxl56D$Khm)9O;sz~hD1XQNdA$r+DylyX1_Ld`gOOaOyM!*ogrrn4lOHo?%ofg0@ytf%pA6_j#UqMv|2*WxM;w7haL)xj)W5_uO;OJ@?#m z&qdE>?GOP+A)u^*6a1FJP||Ly@aa&(k>UvWr$#`GAF(I_y`x|H^>-w^C+^qFzI;`HAc^AjdQ&16@?&`%=|U2xOU@s!9T88TJ4cb5hVxlvDw`IMs9 zXf&JGt+V+J6(;d1H3fABh-j}35Mrv{VZputEb?s$jqdF8_vgZQ-!BSZ12h-D+RSk? z$9gWAg^y+TQ=0E=yzC7A(_#}MSA9+gQd65>1)H>cJHjG5%J`_Ldi+(+cr!RTPdg2c zzMny>)nsA_xDD_l9E%-PRpF9F3cCdQ0Xu)rOi(x&X%4!z4s|b))pP<5S!Z{$;-zG1 zk>o}w1p;~5?si9r_iG+EZTiBGxoCYw=jx$XraJfV$Gh-dYnI)S1jaRwXTRn;%=isH zm*53)rX5ZXx${Ym#q={4{Iq{t2752>+$U&bg7#Mdw9@-~aPjLR=mn|*gJDQzoo zx*;*yxQwbQDdO4ay4MV@Sfn*$<-^V#olJp zy8Tg#*efSREJhGTu-B<_X#&~lpFo5~~}7Mt*Qub9MB!FkfS zZ)~1;;yeZy-=01G#E7kZV@M2?iBUEVBmHaZV%MeXnd?U%VRl~6A8#R69YhRsU3cUN)qZGNzt%)Aj=>nu8;{wU|N#a$5PNw>bsfx}IOR%7*27 z1>quP-Sy=;Mg~hqzV&(y5U%j;EG&#k-Aipu9R7iwFc^>J)5e2o#dtjJ*tv2%WKXmi z#_U7#CUVzRb-%1L@hCmsz#s1lHwlYhR(~JQe#(OyW7XDq#Xl$APm_Z>mnr5I zO`wBz>)MudqWd;uS~6f+r4`mS%Im>?=hrnF->u!~?KVv^X0YC%`QhE-QYesLv$kAU zHbTLnE}l1;sgrBgfCnELnssp2%AwvbQ`R%lUV_Kz{cn^KBQnV>>9r zwP7j8UxNQOYo8mpiQI@5xWf9*!RO*Ec5=dSU$MxS{S3i`0;CMj^`~=M5%MFWVe+O- zFHU*ez4bkAa66_>wl;z-6h>$^*)Oria{HxR6Qq`VZJ4_Xe_`#LPPSfeX{x(A%r&;M z+_o?`W-E;#Z?ZJiT^8ov6xRJfn5$5MRps@zj6YXfIK48KMT14I$EuQjY=l4vzl)oy zh&du&{Q&a9?M>I+Bn1;@LKT899?rS0OJ1z3lozenx0P2BfoAqGN}4ro-s{c0Pm{1} zHS$K6?g*AdW4To|+0{z_`0Z#&8pqb#b6z3}3+MSwBl8!hx*IzG3RF8AB^p=r=i<^% z+dfI#6N6k~aC#)r1gEDABvcxFqJ-Sw#<%k@aKkk#So{HtRx@S0Nt6^{fq_3Hc(+~N zIW7gNK_a^In<5J$y7ZgO$dS!h(Nnp>ns)D^yH^Q1`PSQo<(Au>Z2l$ja{KMMiF5`Kazd^-m;>qTbBddJ-uEg zUp$TQCXEU5z*^rV!;!SFldD(Ie+i9X)Sw=t_IWmlGq%X;|Je0Nn%t^bmMP0sI*cY$ z#bbhC{%+aLr0)2*c^73bFR!GO+)|Lqc&hYnzl1ItUpc)*%_5D4ifM5GkX&fdDLE5v z-IDwwmx(Z!O_dN4rS+D0Yun~m%N=NQHUIZ-y!WS1I0?Ig3ldy@-CWh*abn}ej!|*5 z({9JAx)=0wd-ftHA)-%;^IUh3n0vm4H-K;ln{+3Txyc3H+zF8{uG<!Pjt5W$e6p_;1ZdIZ|Ur4XEO2$p^o04M2S)%Ll8Pn@hV z0&!2ntL_@YCOZ@H3Lz5AKa;s`{_#ZZ4WVZbb6z^JxaX1TDvlR2Q^l)lMCmE+?xfgh z(Sn4oJN`R;zV=b4L7uA0U0;WIR=Anj3Ji`=pqc{rsDQ+YJA^qs;-A5serCt@sKY8^ z(KD<;2v*r(`Mi-sBDKitF=cc}tHdXJOC+~kmtQ+Trt0Fw>>DGvfTNEL2bYEo1w>O_ zTWWHcOf9O4*?zP50K*fh4BOP6_O)p+TR=Y){M%&v^wUtooja2spA|cD3$Z%0s)uAM zqt@l0RgLbzf}|e2Y)9{?=!ST6n5KkjiO@CVlU#546y$&c?5kEwp3H^#)}YJP(}+Kl zygtZS2yzuCV7cBAu5q0*Mi}85S5s;+^AU!MpXi>Ap!VSRt7^aU5Cc?o`ul}M-NM95ophr5_Px0b?hZab zrJbXl#t+XyvJw#=n!cT8M(>bm-P&x%XccLl0-hy{;m2w2dr zD80}`MF&0xmfb|1~jtib1>TV zFq-W)5$C#R)Bf9jEFjmbCZMFJihro`QXV+7;f^qRMt8NYeb7Fxyl&IaMLgMYY`Me6 zscBP%Ka!g^orBLOFid5C#fXVk@B0wuo}1Twjg0_Wf3OtCx|^&=^in;t_Gl)Gk&t;{ zKlxP>Hu2np2lSi!%xob?zB{c|9&FmSHfUJe31We73tNq`*T_xAx4p(850)x#_SFXjEYCm85EXxy){Ja1O^IidsqL~@-j;mxJnu_artYjMbq2Yj8pyxb37RGw6;2{4 zZI_P6&6jIjZFh{fw0HKtt}Bf`AUfWj{LY8} z1%If^tLE{nv`||$U!&p}RXWFxXSTUs2p&7@)?2Obto^)>t5JZKF=f@YUM=2-ux z>Wh7k%RAJLXEmxUOj7q;OWs`gctIOp-+(}jSYben2n1(6+~iL7=_3GlZZ2@h2G{7> zxk{Z4N}ZXj)R~}^mb6O}^c21m5mKFHg&B#;ri}S8OuX4k70PxCiEfdmt#af38ydgHrqEDzz^twP&tUdkUEY zkulj{F(!qf)6W&M`yyT2L)U5_yDl@8{M2rS9doWWs}`I<;)@e{xbfpb%e&`ld3R81 z*IcD`6*9Xc`0c8|@3aohzya4;#F!mgPA*JOnS?fZ+xZ_MZ?%+R)Xh#r=!872V1eeL zk3$|OCz&(o@8vl&x10_*ZOl!(N&(DKe@l8a*{2cC?T^66wg{X&tGMZinWY%ZGy2 z=a#@+hKS7ggVSdGb?K>O|Nmet0@+iwUFx-O=O}Vy6LQwvB0NCmKTaSQGWSP1cA%nT zPSoy?(0Lzpu6@jQ7L)G&SfzlA*z)w#0(g>^^wv zc`1#Bp~6$9DA(g|`s?l9_{(2XRXe`q`FwUf-zzP%ss{(viK?F8-bV1J@v4szj)9$c z%8$q}z64oUtj;~{Hoqz7v-)pW$Y+%ePF&<#BS%B@?XhQe3B< zk&kBSlZGfxkz70RHV`?tUL&E<7n&`^~BgPej-n@2}e zvm7S1^Rq1irVwo7^(rKnh2+k+nUtHX>UoP*PiSrkzYD$EZpwz}f6#mzyV5CoX0$0? z3q~hbC$IqGk~;}Gs3M!BU&$p1YgMCB!z^IviMi(B1hsMlO>I=m4K}m~GaV-+owxm_ zowvzJ-F746b3uBs`wX?W%(aLAq*-r+RylGW!gk8dY(>1|c<=}Fp&fp{c*|RyR8U%G z=N|Fs&=}|2_;BjUt#3^E}+gWv9b&k$;yj*#IKiSKOvx$u2Exq#RO z`IPP<(e}Bp&3+DT6IkfEc0**?l=b2O*x9wrdfV^S=X!U;Mhh7QxlykJmjlGH{5Xrz zL2+53V?Q_^Z1WEMSk2JEgE-a}+UsjO4!Em1SSwo6dwSsWJy3@^o6p?uYTb|jqTPd` z*8K>kmdwHAE(@{P(NJiuuT39-5WphD+&&udTZa-2qS8Jx5Av~}E5B#jyi?|x$#J&d zxT}z=&Fr%Zt?>{XbQQRR)Zfnqu0tEWJ$~Kv{RUHMf(gmmz4#&p4CO!@-*G&q8;a-b z=9DgVym9F?r){G@@gyci8Qni~*PQVxoova}_qKI)OcH_#N=oNhb{%WE*AaCtmEGq^=H>vApQi~bzFW}$K{W} z>kLy-Cnfk#e8;BTnNi0gM0el}D@4kD1xUFsAvLe~Pa1jg5#G!D0O5i^=hI>yn*#fF z7{ws%habwkk~u&p4&s0IFCnieQV8Kuxw-{Y=&Eo_$3A!^y$@!zh!8M_YTdul`&+wW zXS|ZWza@RJ=RcQSz==MllRWXm0mkl7n|G`8)U7De5Gex7yfY|rzoDfe@6R0KH&eb2 zjyESj4fNV2ZlG;^mq+PaU$(_nL+7KS^AXYcLm2Qy=WjSVeLk$*k?bPLQ;wdrtoumzZUlh>g=T--w_b?PBKI6K%X{D3 z)iDB}t*{IGqj;*8htz!qL+ZXlK9huOqWkhb1+Bj|A(JW{D5k)=A17zRd6Kn)V)CMa zN?q7ap%UIx^NJ-9-+WOH;FHbn4t}#$!6E0`2Q=O+SQt*uRZ;d~%9i7MNAG@u{;zj+ zoOS4Xx(kLwP{@()D?s0Uh3Jo4Xvi@O4e5dBIqq}Y2&YQ>nSsqFL?@cf;dPmlvQ6B| zw&39S&exi!Z9}a&-l~7+fFUPYgutKOuMVtKn)jP$-DI(QU02sdMF9MPe}U+;oclAj zj=-*LyQivnrP8MF^3%FPrpTxYi`vNV27U*36g0^p>mH;0as)y7*j{tp!50_Tw|noc zgulYUuQ&K9MI!gFA^xVh@n~s}I4Okwhdk-W{?yd5XKf-&9pm=Thv*nfnuSk^`?{Q2 z5YWhO_BApgTWFPj6?hPPpGc|NtQt^KqzV-02HTBl9Jy zndUNV^N*Z(?)ttvIL0+UmT_^zkR3;b3vUYGl1GO4XXd`Lv5N1>MWT+Ena2|e1ixbM47e^7rM3_uWkD3>+gTy zIZYU1`n9yjvaj~PQZ045>O2MG*cGWM{)G>xN_cQU zk6+1lY&73%_X)Pu^{^2et-5QrZcN*_`1?XPUu`?+CcCM<+N{{^H&FFsy8HtqXSKw^ znWGQ{0f=%{oryJW+Vmu%a-z-q<47spb|07fggWd*iS8WvC3y-RcnO2&mjtRS2~@Uw z69xP(NNaak<{`c$C?#ho=e-e$&fIC7}p*Qi9KUaBXt1*D? zq%fM&{^4N#WIEziLi_9kD)B&)1gHy-5|Oim))WyfL_^Xj?326Q9f6f%|Heyt#$z^K zak*G-6Pw?#xee}Z^U}DQnQG4wk?&92;@di=U#f}s5=U(6^hnpxasm>xcXdoP)JolX z*6pB5r-fA|Ki7MGPjdbg@v(nDAWl|kKPg6bog^4qXMWA?wmhcEk(ZJjQ}0lU;sANS zW2sC%F8Op9QbgV5k|qJ}+X#w`;UJ;WWh}zRoxOq%{=4EQ=EmyF`ru{_S@KKk=C^xm zK4&z0@`Ga}c92-p=DjgU8z&9($d}q{HhK*~;zUq8*6!5?iEI&(C$rxnm6(xs`WNv) z2XW))y$uZ|N>4(kxln4sg~`b_Z;fd&%#fKE6yBsZ9mC-Fd`EtLw;0heA3jc7@@+jd ze6m_{s*<9#ucGVJ4i0LmHchp5=^-S>EfF%@W&?%N*o_w}`3<@A_(4i>#Oe3}(8~KPjYEopRkvF=~i!PUULT~uXBpnYmpEN>wB7sNjMlp((V{xAkQ(T zBa9@9@Vj0TtQ{VS!Ck!3Ht)4$I8)x4eD7I8&n(QGHHr*F?q`!%ryHJ4-aK#jz?G@s z-vH$TVZWtL`b|8WtV4R%{Hhk5VESc&@2HJUD$(tmFaNN ztZ_Ncx|twvG8g)QmblXLV;+^a6*-K}@q6<$-IW`74VGhbxRxLH`IK$t*?{XAuW}d! z<9ayJas6lnTGZ7q4$DJ+KBbV!ipqX2!p}qb zj$z`!!_TK+wlfg+)JE^OV*x)8lQ=};Fa?I#pOfMEc_80=fka3311 zO7IjI5-%>pE8c0HFr`=RiLgn$)%3;w;~E00cDqL{{LE3I${(RBX2dF*SDZ7fI}#41-NhfVq(s=LPob#*0iwy= zr&-z^S`Q-tImA-z45qS1S}^Uw`}`Uz7gm zlzl}V+9pK?_jbYJ_{73bOtpDGqnK^7vKW^p%f=;YWK^SL@??!&@NqcQ<=gI1d(w#5 z(V$fFJB2=}{fSMT^*#Pi_DjFN-MEsR`n<*LV5L>=nx5v?JNTX7ac@vys$hki6+d|@ z|NFa?F4$9r-8=c++`fg+{BH9VA#sO(NX`K59u+n@HdWXzfF^(ZGMsQ-x|DZ-(lQAS zc^{UX%1psaJNA(XT-fOz{k$#tCX@Jo@~eo`AF&0VMW++uE!el@|eYFD>z(PY|= z+_%zo+jYni?wJDpI;#AxZYe9jBdrnT*X?hl@&knxqmw|?W6iu*RiuccFR?7TVM#IFqN(ao9V&n9n@+{j4N z%dB)?b?M3PM0bC_y@ayVkCH0+`?}ktWHhca1wSEPY+{`yXWkZD8gG^=c}to$0iNr< zzAF1pRhtamOIN6@C@$4)^3GRSu2*+)KC`@#Ue)G3$*WKblOwN<(wi(>U0JU3D}(aS zFwe9wt!nrF$}casC(!vc|2Pr^OM7gYfHbiD%o};&%9Lf+#g_SW5~jgNxkj0YVW#yd zw#>WFEEy}m^T82;9SJ&?yk}|Ha+)mad5uUuRJQMY@T`i`(oJc8*|5~5$NjVqMA9(p zK(V`(GadlGQ#1%EHh$-;EZ6%k9H7atYNPj;Z2UyA&oD-%Rm%3l%5R8P_U?SS<$8bW zDvR8kUFFgTN;etc2(23}!OObBqV+rd!f!4$8=y#GAM&~~TD&MAv~+_p+~b=*u1!Zo zAD2Lls^j|ub$m~tj_(ZA@pGn*A7ta8JyCimYGt5~@8@{Rq9X=cmu=6|dn%IAbR&Yk zyx;P5`GaU3*RuGud0K+Oo#tj&#y?_5;?Y2P_s^GD_`hEn_gA-E&pau~zshppYYsc4 z9HY!9``%7suy(T27B*X6kyTc^<8T#agT%Uspbt{COrjqZwg)nu`a1%d&Y0a3 z$aKoA-hwy}7GQfcYGYg2uG@EdU$t0eD~XKA2Ene+T>_x;3`Msem0lWf0{XQ+y=?)k zd-EN;gyf4rK>c5{J5&gbVlp^wyMlgM7t`;CgE0K9YnCz}^r zFIIuH)cv7aMYA1VlHSGBQ|^(U+ROkO(j|mk=8aiB@-tAIKEivZOEO1A%*+Y)T&91X zE9z2S@l&?nJjbhK$=p4%nQ05c!H&J1up52K_6%%6h)s7?OZo8o3j0bD(*=y%9~2LcXp{jg0)q+h{y z7Cs9BmznCz<~-w=O4p~(orDpzF7T!|8^&{iL<+{Su!%j!rbR9c>NMGEWhBg^`w%2g z#Af7kkOXuHg@-WsEZ&KE->swNcuDB_Yhu2EtoGT;jY|1^DA=#G+pYLZ?pI#JCAL}j zEA5*t*dIHd(vO*yCjuwT$iW21@3p;4x;myfWX702buxC3R-V$+p`PHQrap3Z6d2F2maq{R`(J|t(l6gzl6^UGjgn5afLZqLkQpL%rOc#{5fI)?nP+*3 zS#`7ACC0KjVD)~<@35p$&?GOUq)$l7Ww62_)=pThr5Je-gI0^<#1W*Cor;d|FGL>k z*=G1(D%r;Nr~fC$=PG+XNv9>+gS-@U|No(?9I99UsB)+Rdqi$5I$k&W!ENQUbjt4Y zoyzr|s!jHv0-7I4Rx|gEg_+}O)EV+P3u7nkjHoC4u(%R;!)7!a&h-x0_HOJ-pGwp+ zJ2S(D*u8ef-PJM7gl8XprVzUa)dQ!NT_EY081^;w9oBWB);~JQ-Zy<>iPmHBYw1rE z{(W1co`XAqWZ!l-Z@digCY>dK(e}G^M9Ky46I~sr68&qJG7ZiU8nE~-N*7Jp~c%Q`T zEQ6CPKOIAOtWNSRxPKq|ep!+m#tg^lw_E(>e6MADA{ScAI(mDSzO$eEa;;`y5YQmpR%iryYt=FJPqWI!^R*mp=+4`EV;y@s9Cgo;3nI zTwIJb=3kc?AlYC5yLEnXkQrd>4rXTjM7Dl^I*S{BNBkoIgvdYA?tOT^gnGQc;|RVr zN7}r9aNoYzeuc`I-rB{PusbE5F3#&_H0I<{`{tTi1PTEtHU?8BSjc2qNL06bfB9y$ z!E8_Nyp_S-JX1ImUB5k;S+x-vAH#|Hx5~9&W3@3!NNg$mMP!MsUw}VDShVi~B{tV! z;<2K{UWqKavAQ;INmz8}uwQgKR5@f2^{V)$5c@y%OHLP??8FLc|Dm90_b0=)S&@Ps zS(uKE-oCI@M_3AHkZIk%Gc5IHm71m_IM#3THiV^S^XZ$hJ<@u|_{}6sFjP}-3_9EQ zt3I)(j|;1Z2HQIw7Tww87oARQVy}qSe_1a1uTfe9DHxWZ{ho5suU>-KTH-Y>?P1Zr z1D7c3kKpTrlHH$B->pMs)gTzW>af(NkV55Q33~nQ6+VHw-!w}pe}umn6tdgQ5U0Xn zG&(A7JUX=&PbXeLlHUq|C3k+{1%~8Z<)UwyYe+11M4Oi^7w1gGri-!JEaNijwzrzX zdRS?5jiEe!9t1=4#d2w#1BFC~YlA6kL*s()w0plBl<)2h%g!92Tf5m}ROqX?BHfwu(v3|%AlaoXYeX--1nCwJo-T{u$bksF|chZhu zbdqyWK2O4_-I6$U@y{%8n%DWLb6*+v&2E?tF}qz{y4po?_Wu5#=Ce9uXu*CHk`5S#n%ou8!Tq0ifYWyA7^gA$7X+Na=IYx#H{V zJI3yXOl6hsh8yW*a1xik|77|w*>-p9u+jE#uJV~|UF8qb%TER)3a z{l%-PWXUtmR4-@xl4CAzI!>h`6;7rP`J~_(c)gCq)#*c!LLsRxMW!!IBNHxehai*D zEVCa+n?h`_(M(=&hoGi?bR6hP?-RwkGJ8Z0?(`M1n0HgLQ|j`Mr{^9hWcQPsP;TPK zfq{9uIocdjtgprD=k^Fq(%Y3nziv)%@5&r%KzlqwarzlMUR)&>eHniqz~_w(`;nO& z_Fw+a^rgcsjc3}zw6sG@xL`H9Lkd*eaPg2KM7Y7;wA>oC#2u zK2SQTl5ARzFncKAjy+D73dPOSIX18^edej4Q;f&a1~5fQk*XxIf?gmfHpbNtSfq{g1G#a5?$p5+&ixG0h8QFUXnY>>d6>h#+Pm z^gnE#EVGT%C(HMaK2VXCmWj%0!?~ zY$>ll!C<4V><^SnGxi`1uO5)dSrCjjCcXWEe#sJ^e0XDxPP0`eJ_C%Cvyafj7c3hzF!k^5OTW9XSHTYD_32(F|kcbec_TB?@L5&3LtzH9(qPW}hwo`*OYeuupDA zm+tD=*C5!o*Ym#hKeW#a?33?}N>P@^rmguO+gPu8R$o{-N|& z6}ns$vgu=lknX;R=2B*PgWA(Ni6(T3uDuvtrxg!d{na zdp)k3-PzEo+iIO3_$nbLw(}>9_#fzX%%!}&&YkbGcf;*n?t;B5zN04+^t5MtjD+(5G~D8#J{u?uv(u986&*KDamD;Qiy*VRgO79P8h(XxPjQUH@8@kG&+xVk6Im2bcY@%@eWjlVLLyN+O%Lrgw)qbP=|7OC&nZ<{Po5tYzSbz7@ zVTaVD9lr#YSB++@?!Lm=!tp4#^u?h{8S{F>ykMzqzwXVWz1rBjmTY=gtc=>w;P+|e zZNvH4W%*5)#mdc^HDvGy6{OO#fFDlSyGs(7Ja6-TTaAkjt{8 zjS58el8w&RSF=Z#yNV?cPU(wP^z>@vDt^+IN>8t(>1d-k;LOqJY(1rwpria$Kc|p; zv-b0EzovdFJKE%I{WO2A2UD;sXMK^8eZZ2QVMQ1YNgJ}?dszg0!1?r1&cgx#oKuFS z>*IP#5&Ex<$8sZ8x8Vi4qxYx`)XBboqP<-2F@7mPUh+$s6Mc^)`@YU^gT!Lh-#yQP z>Uyr6rt>;&;vB0vuZ>N0G3U1NAnI|nw?<&RB8-O&EY)Uo5t^uvHptRr5;g7uWnoi| z;1&j%ZMRN?Y;+7EyImy?7$;-Uj7OW-B4GJn@iEInnocvTrfJ zSqNAgs*Z}vY{~n(7rCBwJzq|HA+#R(#{aGk|IReXGds)($#0@xH>dLEnpoH?`);96 zDLJh%Ju6wc?2=z$uO%XJKh{_lXV7Z_WiOuO0Sx}xR(fwFkKkl^yN*@xFShN;X+hl9 z%!;tr`C9HVQTuWyHc%h^0f4q{0Jevm$dgZdW!cO3e}umUyNp=qSBe2OMEANZOGJc! ztT9r1c0^6<#pJs?Z#No!*yo$PXP=OUbtKn&q)JaSAGz>27bEqR?E3=M{BkMpdCJLEJNc#biTmVpowqw} z`7hiA9-Eu`_pamLjs1Ps^G};iXOwJo(ee!46pw90q|D5eHqKin?S=Z(M(>%=wWr6_Z^2zf4`apQFQ|B z)d|qq;1Z2sg+6tHM0KLw+j&{E6CDF|K#}2yL*{$=I z3RLWYCdRxOFUZ3tl$y&|PWuT^XQQd>HOFY_Xq&gpA?_+=4!8I3T?Sqp#qXOrY-;z# zjp<{qSN(kruCFQewczff7W$UEL^Z^iDX8DRHt&;*d_o+={O?Bd5IF~-RHLgcSR1_$ z8^W`U=7ZL6>#ZQSskfn6z9d^lhg%1%2#Yqt8}Jg8--W%_Y@ttG0GEWrMO|Qgts%ws zD-h?;)A=2oOdL9OAw9r29wO%;1=R&=3s$>#z(CJ3mi{I)5H)34pX(i{(k|g%&1=P@ zzn6cRs`n}wj(J=p{*l=lIr6goNMwJ{=AbP8hzM|hK68M%LMX&gyMEm^jzdVi-&d{Q zPh*{jPoZO;;!mh!M)v>&(@P(NmkR0qrUgr3eVyVjlDOa3_;nWCdF^Sy+{B*{Oj-Vc z&B1(zLlQ0_9IV8K#DhLI9~77Yff7J*s& zIAA*Y6Jleuky9CmX9K#}p^ym!)~D5I_9Bg<4-WWhy&m@IJS8aOQ7G0Yr>u1x&S#EF zmSzrzs=RRFHc9%hx`YyctDtOp0w`Pf6XJ3yCH}+zi%R@U(Fje6uQ~y5`~sEu!}#b- zgZJ-L;yI%WmA{SXmI$cy9+cX5)6xu`>yn!EY)Y+UR-o1DH)?J6-dT0pr;gLB?7h+E zRN)t(xTklOd)Gbedbf+-b<$$AxnF?Fp4~lb-+nfzzU_`SHe26{dc*za*O2#pb(a1F zi)|>1r*8s4j2~3X4sp7$b4g7h^4&^SiZiKOEh-R|wT{MKDvawQ&ZQ(z7V%s>=Og-{()Y)=Avc8pXCRh{7aLiJq& zvrH?+y68$Vo1+kyHDq;g%9t5t+0+-X&Osgshp?BrLlWR{X2{3ks}I2%>9b2Z&drXA4=AMgB@7-r4b0Gzj$wDx zb2>h5(>DC!P4#*KH&;K{gnXi@^}V?jZNgfFnt5gA$VCTAP?Go?;<-2S`vCpaUgrT zn9syZKRDWi($cW1e2LgpIuuS@wXLvQkKA;En2a`17vmGn4b z4Q&1-C?AROp|~F2UxZjGGXD&$E|Bf_I%s-R0LpbN<$VujXO56rD* zZ2C!4tMu%atWeqd-1n<$2bX-4a3+3uS?lZHsg!6lox~54;b>!h4FmN0WL_9HsQbt` zmoT~>@r@r82}~yIDXGRg-*Gpw`3TF?aOX-b567zsBbhr@MPN&dgE_u1Gm*WV5Ws~R zoJt5CnL~nhH05jTO#+RFV`JmT`jCSgtF|pu49o5aO>|T?=_eeK9Q0K@}2$*#+k-5M??p7zrOnJTKR))CGco)`RQ? zL_I$3_%2N4evISLRKJCz4@PKO$l}2%3@h4ZjnPR9c)XfrZee;{4Nq9Zlh&|{*g2tw zC;f&eczg_=Rm01DxbV)$;ZjC^qomB5@&HQ53G`+o~D^Od#gflI_NrD+>nsP-h zcUY0eS&D?tD#7`%Ul=UEi~#cowFc;AwTmnr=8Lr(Eoec+K&uJN0}a zd)o9D{9#!mv;&UYhUF38);LPMg0Q9aba(-WK*g^~L$RWET0K@hc8& z@n&uOrarC!m2js;?rG^rZDX@MDXjb_`LtP%L<2SWpPl;FD^sxQB?5Sov9#*!D|yIQ zQ66plX(VBfV}P~0Tv4m{=LvKQCaGFQS$2_Kg;-%h%euItwAzO~(9qN3e<^EQMb_5E zorxzU_W9%e!TV)MfNK!va%jb>qo9+#ks*7oQNqpF8@OgyoxL+K^9HKB*5+)2SAP@D z8|KHH6$FcFV5FlL%I10B=Gf(-nTNH-jB+6mO4U~*^SSu)Gv{bvXQ0LN(3Ot1dq*ub zrmKG01upL^%CqMqsI~mn)(!u<%zt;)avx7=szH_3l)X|h1`|LwbkzDG;M04p2fJIt#p<|w$60d}Q$ zCcZj*b1)pWItjisuNqnP3aH4+Lkz~)?Wv9B$KgZvv3B&xH!rEkkja3>gX{c^+J9Z8 zQR6y&S-ElYKnwy;1eCN7M@bh+*k!@iuAF7T)+@x;>%`VaZ*pucj_NTX9xJ_0Ai;W8 zA`7wBkmVz@-}i^TiQsr}6{j6%tseq>l>7bqk6x#)h4MK z!?=3-8^Pxp+G+Fd2tE&6;T`VtzTElR+T(+h#1T2!9vG)5hIy93JQwmN?dS{;uZ&DOwTAO z61{ifbl)S{8a(6UJd$3;uZR6vE379CYocgPHue4vyV0xCN4pzTHA`pD5zU#4|H0#+ zX#>eJqpl*2&efuXx)`u$F;kE5TRJO}@~_ew8T0~OQqa>6AGd=rbEu$^(;lj0>7L>> zkWkmYpLtbs=K=MB2(*lWM_(*{;n++>x!9c>dDV64$=*BZny43G+i|WIC*O`4*rrF( zwm?mt0Xsc&aTbfT!r4l{gHQi$?KEt^3Mc#SA2gyZgID~7guh72!r}K{nABQqTm^KP zMuNYX4)kLN^aR~xeLi(Dx%0c~aeAPc-C24lx$~4hdHggpGWZ;VY~Z@gP_pmumDq90 z#2=dGIOP$^wP>9((H_ZXhIt-N^A7!}rQ^t5|H;JaFp{B;x4R``hY5v^z||wf)^@3$ zG8#*n$?HL>#yr6Us}W{mIo%>M^a{S};Cc`$IkvuU(0h&rbj?H%7+H3h zcwV{yu^D+1g7h=6pT)Qco*7%s`$MW=;guC?!|5jqOzvt76P80`qzshTQSOuR7DdL( zJ$aGYugBN;%%06XeR1LOg^xW54{mGjIQNifb!B!Wk~Zw8ol=_2?>u6)#n;%=lCGV|iL%N74& zRD*FBS8yG(ZZBQQrHZParQ66mr;+&>cX?SQp0y1Kxlg2s-c(Q9>IRw?xI=t~D7o`zOcR$HJgT4<4yF&*SY)uqsC9$Y znwr7BlWyo{u(fF>`Mkc{DqAug6(Jy50Y)K(TEP;UYV79selBUYEm@MA=Gs!dF_?qh8%&-N5 zXk$2yg!2M6DeGfWN7u)7CuL*e#q*)BaPgpoR;l!BV8$8BV4x4iThfU@^KaI0&#B8L z#AA9eo|yWn+;!5B9pC9yGVvT~=&jbNwzA&JJYqY8cD*L$G~_|ZMR!f(C1$coX&P=% z6{=cVW4#{<^5)itg#=8#(L2voEV@W7TJSN_GDh!T@3Klz*WkOEu`y=1?N#43{vIQ> z`>nVNI1CuZY;RBjO!q$?XN~BztBdY&pit2JTCK@@wg(B5lcrm{eMC2Mg~bNSkqE}N zx#)hosK_VFY~9v3_#dX3W3F*Iy!RH{>XdP%c?B5KPmZkd2YEdmL(oZfu5g0)MOiF|Yh=(%mpB-~($dY|O(D>#ZByb14U28HphZYC)N_lDt{ZS{)FFO`j_Y%n83J zO15pK*dFp)hhG$GCH$fs0gwAdF)g65(EfP7{lyA$e*zVsv!2<|WnlxDCBY*o9?G^4{%;3( zW$m^fJ>W787R?`PAR~$-{=*7-m21D6kf4&`{x$RAVgpM0+aQc zISqcO2Fzwmnfh1SY_gdeRe?hORvX0R@ze6AK0nQ`SiHm=;b;wO2KnGJO3+NPcxB~RsebDApla_cB zXdl;?`k?;U(7>X$;ufsyo|0&oD<{0IgdR46~x1=%%h%8RCJ2`P$nwWx_&RHiJ`= z21Ly^u}vxWT9KlKxLL~7(jcH-Oj=3adBFwO09sGX^}f)mS?U)>HN-3gP%c%5P}MQN zsAj2O6kigyD-<0^QI9gA@n1vPS>E5|(GA=B)!UXiWiMs|fCoX@M^5x-^zMg0Fz+*x zAy^dPh4ZO!%G7}h0sxVDe3LHOUQ`X1vxdRa#!4JL())B2{nqR-j#f2ql#(erd;htDq zi+}1w7NP^*8+1{0iv1*(I_MaznMM5kJC>$!rLiF|y&ZW~-8t}&FtW)7pLFZYhpsHI zgv>{-D9fwpnmltnXA;kP%uEj!VOsOeV=Tht{dwuhh>7)w$H$l>YnU_>J_|*tm1ythl!>uu^ImR_c9qn6dqbI8ZX)dYZ;r`~ zUWg_)i0B7Wd)z)xCU`S7*`7{TADLREE=j;{ZBp5~mX5@>%QbV?B{1P?Vv`?3wr`ct z`A6tNz3S|WTyK3mGQ!J zV@@jL8>>R!lPZ=#pKpny@3{{fG&y9PS(4Z@dXTuh!N*qbC3k9rD|)t~eN1j!#yBBz#e!39-mknR7#jwH(%AGY z?1PHK84k5|m~oGdt#I?!X~h9niIZN9y}=>~G0 zkgV$#bMB!Bev&g7D$%_GV&zQPx01T-7?hN*ZiyW((N?u+C&$%E8#x-YeIoNh+ZWq1 zj45}_XeaySn1Na_6O{GH^Lym6WZT)X+r`?x%IEM=if|N+msEPxgsK}L)Eu4%)M+*o z%C^4RRJvU!LH^6LT(V{)xl?f-sDhM&yk>BmEMzANiFixm@@@s#V88Fur?AGtaLV0O z7jM}#KW_Q!nKPE-U|9aznpn%)%VL&)^(@dg#1kzWE>Bqgg5rAk)Wqks!ymWb&yB4r z>rXZotWsEcb>hQl>D4|4#^m)+W>VAEg0t%NStGrk9~+S^E6aSh9jC-ucBTJe=cU=# z=*teYG`lqkTI@_#(?HK?*zxWV|H2zX#a>d1TlfRm>TJNqDmxsM9d>1hi|s1Afj@u^ zI3!#x&iF@?XB21E##MXLF*>NFbDj2*vJ`9PkMMH15q*@)04@pBzf&ra-seiZGK%G% zMFsZof}C^qHvKt0QJwtMy+U7SC|-DEY#;8(STo{&zXSqn45g80s?oF2=R6Z>6MCuF zV>N~Olt)Vvfw7)9M8C2e_*tGLTMyK91+@#Y(f?%&og^Zolh$RgwlU?+;5ZdEKI1^t z=8$~JFH!YWKvkV0FaoDwFm&S`pNZ(5zIbu=Z^WdpAUV4Ps*|Zii#zw}knn^K3IE^g zCG+DPt$p2u<)x1XZBD&_>FDGdbUvM!oBsPEG|Z*u6aYV8%7#{0WQN*x<)f7sBonKX(%HqqWWj2Y?T(k4u04>kdTxGcvp1}-zxneIGkkRD0*-T+NmCb;e<4 z*N+FRAJ5bdhW%hVO-vghqc`bB@9b}B-O}2@QpQmYvRbpm>E7Wk^V# zCfB@lqk#&h*;~U?5SYktYC=k^F@tb>qNvNsele`E@3N-OICvVGvNhB-b%o#5->RAk zW18Z3RdE-8P#voMcS_yvKCz=WAq8kFB0urG>Nx)BNYqLrW5dtU_-h?ZGzM)8%GwRe z702o?ak*`76@YvR7yKSXI8Ad5pd{`Z_#R*JVv->y2rT+wdOtFCX zudQ<;8TXJ0d$K*&ZFSvBKViz_xHKh}6aVbgemhl&Gx${L{pO=0%Rhze3{<`;b|yBJ zJuw^lW-qmKP*wF@RWNWC%qf;DsF(eobk-U63t ziqt~|oTdaGko{i^4P z7=fo+ZZhb1gV}fevq!u?zDl;O+G10gEdOvCBQalhjO{e8)=7f1BFe9cO|Ney*K^0P z=Xndr5-S!tbrw_|f<)EF?Y{cBolpd}g3r`gcT1k`wprb=+n#JW16lA0;)I*seW1Un zY142IsJx7mG39YvTaM=D z%ox5s6(cpu%i*%;6>8Ouymh6i39pAnN_(t5y-(&udl_B#!1m#l!+rvCBKPom6lo5q z^F!+V`D?;S0i>3+NHeV53FV&fb05h7;?yRp)F zCc|)m#koKZXdlv&8K#a@J~qMUsKe2{Tq->3JWic7&Oqmq{my98z)|dB!+f+QGqRQC zU^L%xuLd6q-%F@Ra}WYE*!&zPAjl$ZY7eReS04@*G6(HRpkpl^CpdC+GF$?jsdR!R z`xtY13{p?<8*V>hMsi-1e5C!Tjh>%hVrDfeiSS;07s<(z+o~F+PTvN_~tWvWP@_}?%}y* zc1T>iY3Vq+^^QuykI>LjaFv}z-caoI&0{*=cCn)#A1EXLZ?HH+&t|z%nB;7WHFr$4 zJPNk;+lHgP`wkva+lcz^_4})N~hRZ{)sZ9^K-z_y;A?tu+fH&J~Nm|(E6`#ar20z1a za-#B4wc&6|%6c6bOM56E5Qk%3D}Ox`mhG`?i0q&^j76E^e46i+DbCG^j8c7(^}i-8 zY-aisnn%7gqj)+jvs0Xk_t#E0m*AD1l@sGpBbuYL^t=}_F@DeJ;?p@YF@~En9{y*( z`w(>Y4JOVYEOoNBW5`j0Gh!y&5U60HJ~?4$Ax7tqf&z?t!a0cfs2UFivd7mXSOWZm zcz;?*JsEPpQ7En

    ASE49p6*E^Tc@rL!zzRas7KUc_dyyuKB`YO?EWb@mtUsd1O1 zOrh@d^VfBp?Y-4~=B|6|Rt{Hq-(&E{ZpUZQh5W~vrD-1lrK-})UDP2lE}I9s9O~E> z6rvm5|A-!^w0#86;kBlqa=&Rq(zq*$)aFf$yRAx8w+!`dWVPGhU=lTcRg)~_Zr=a` z(|xCkBcSN_$2TTdOdZT9mAW^&Tpb>>3^~6TF2b_vH%oauaLeMi?+&9b2L^}{UBg~> zh82793b&pQWX}PlB{O+9&X+89m;~H;C%wQ8&DSPzw9)bFRph; z$x(XTHU}J3PA2Y<1Z(nX|}bVIW5AUpGEI|FgMZ||m9V@q1Y*7OY; zU&|lw@7~}VH-*rE!8ZcNu&q<6?JCtDmU_zX;I!4k^sit%dmG&bN2|0OF?Mf$FPPxr z2)iL#AO^|>Z%-Bht6hRH2xG$C(3x5=)##c;H`H!Z?DN&>0n^5Bwub+h)bkh_+O#^2T zaFZaU#xXYVPWB{szT5;lZ-TaTh)={p9EpiC0ZTf{On2O~K5KN0PozHocq~epL&lpG zQa=>=umWr`p|y#hjlsqq7ci5>T!NLiwl9kjwWoaM#7CUFkT#=KXS&#ePnsY~XQL=n z`#MLN$FtwMX29nYI3Ft~8%MVOkOjOId%VZ3JTiIACK~@Y@x@W~ z_=tL3x@rbrL>B^E&u=Q9mvK`sQIqV`nyT?ARgl=F1D@pK^<8H*Y)hC zz2*BydC9&{ksVy+GguZW%*xc)wbakwdPmTL-l%|4kD2GkfJy5U=J_#X^?|M6ihgt4 zXf@r*X-!UF;;P%agcWcB3D`ADC=Zyc_6b{)hw|$a#rH5tqi~oMTmeB_K4lZ+jGdNY zhDw~CG{aRqz+aCLNR^U{X-s8No>nJJyeCdS$3#~bh@F5sa7yND&f_$<&*s-80uUk} z!Nl^JLjeY2h2C#@8CRcuVP2`wa*yc}d(J2|Vw4&+N_hkh^78|vFLg=vXh5TLqS1)aXw+!rK_lzc z(d4cwRGff18fRLa^)%COH6ZOAqZ77ks@k}<>-=fCJ59TZW}`{&x$3Q)A10bRj$*WC zS9TO~yRNl)XU%YrUUw92OXmm4Klmm|{(}kc_(b#=(d?~jG1!%-)XBa9Ocw|~%^)cs zfh+pA@H+E_0*4-bXJp{`vi?@-5LAN2cU+bp^4Ao$iCa9NY7mDKI@V71>wLsjtj=EJ zxA8)^IZwL#ip4*0Xld7|ec4_$-*j(bZS<}hl~e=GV}_>wR%H_>`-b&{ z|CL@*u&kLIG%J$(vK8!R8>b(Iel_GaYnEX9wPfE%VF1_52XQs?+xD>;WX;Vu-`4)U zQ>wmqoWCdgPVsj&D4gsYW%v8L@%Bi*ef+l5b`Y9A=?G=Iuwpis%5xekAXG zMEZ@D&G${JcEA0_dCq;pKx<;o$-vG*`p>D*UbSB6v)^XBPWG9%a9=y5K24s zUV3R1cEoc_j-O&gWtYD-6_l|QEl_(kif)_=>l>Qa)%zt-KU~)8SaWMb%TV@BZomue z4TSx(O6%$gedy@&yGECUE0SMRk9SBE@VbWl`g-;=pAI|eXY2ZTgCn46NsZ;!-Nx5- zfRm@V4TJFz?->%BBp8O}*scNnU<9<0fewV*Z^zWLYXO&Pk==GtlrApOW}sg(qorSy z!NuDx>{ZI?^LhKX%VbJpzVC!lQ-7~{{K6MhBsbaEJ+F8VQ>(vULg+dZ8`-smy()!W z%6Ct2^D6gckye*{+o;iH0*Y`URtIV;lUEkIEp$MsxnS)D*<}-#jZYcWJk4vX>m;BL zw${XnYqwxs)6u;BaHUVSnizD$eR8!)KcAFtbZ5WZZh8KC;Y3ZX_2a$^Ul#oc?W}IJ zdCz>eJc|FBePU5}92_F~eiJw*8S@4Yf#Z5L0F{mXtccVT`;ol&bv9j;mG{}+_y9Q* zFcA!afC`LHZk{-)OvNpz=+Z$SrGjANa z>l*y=E40=#V#1C4^&=ud!XKPg%^SaS2DrU}cb3@SeL4h=b9*)S%S=|7UE+5Z zFK`->7T7Qp;T}?SBEpWE9!|BuMC%qCD(g^*d43xNL7^ zXJohMFi14EbeP>y_ej?29tn<_fArm>=e_$#&f zVfc1Y4)zIjBqLmXakH6eFeS^2`<LQ4qnJ9* zr6bvYm8PB&CR^&TqwW-@hlFVtGS~SDj)3V4*$)2rDUmNQKzoMlTsEc2={6-9$#I;T z%>>P^&Op7e3Hq?GpA`0gV|S`#{x=i!JIn+f+SxE#;bR$xW?b2kGpROISZXz7=3OqD zg{1!%&37}hLHp#VPU`c8DN-_Hb^)`OtZ4hph(nxX1Z1WYcHB4aop%S z+xX-CkzKY8NphW$@KKerpz;#nNa5~aIriyr6Hl`VSqWj0=- z>DHIfzfwoZ3jG=-n{hgwjNPYo&+Xft?<9w49E5Cbz=w#PsULym4;eF->C)wj_n~xi zsNCpnbLmlsGw?CA^Tc&Z5`)vO+?)g zw-YI(UJtHNfJbzIV=j44Tscm*Bd8Yt2QUp;QHvnUM$Ze)eysDtGN1cSzh*zQ`xx1! zo0oO&Q~aSJ{)C}kJL71pWv$q`^LD@6k~bp&xZ1S#w_NBfJG~5y<7}zKlGyXhK2GjV z79`-M%0ABblwPjC&Nh8u4D?4GGtran?w#33oKYwy@`JPwoL_{e1!QY;wPgjv)S zI|3VuTtmAu6U&fj{lr$syF{^FblodUcD%&fv>Hb=SpPaDd+bkJD)#N9$a#8xdmP{-r7PqOE^>G|FWKxZ>6xa9oA;*=e+yEq@;RJwwuc^tl(qbP&uaow&fJF%=b3v=MNR^9d7 zvfAFs2QVX5{p8O}Uw?2JKkT^T;iPjdHrAC$-WB{_&hKUXZsK<%zZE1FTSVk;w_Bz!p30rLwr`-@ zzlp|m0Bocf@8hNY*9=7Dk=kQU(jIp(-%-dc2i7v+HUYPh-&j1-?Aan$ZVgiX#m93e zmPO%9)MBuYmkw3HAA>!Sxhe5Cv|MH)%OtQLrvVYnCs~N#lnG}}F*Kococ23B@glE1ICs#K$iQoTT$x=NFtsk+Wj^n2G7nX<`nc$;f6cH)`6$>wA1s>}+TtFi2_SOU{~xh2H2Z#O*gN=fD0 znu6c;`8EXARBj9R?$AZFj_R_q#K^_dD6FMaX?vMn+9bf7T-JK-UAP0*N>6nj7V~Td zYjz0i1L^Hlo45IH`*zE9yH}WBqilWRtLSZbY51wanewMrj$bQ(s_>hM=;7C;x*=fe z0eTfJUtBunc2K|;mnU~>54D*-PO-b%AGqvWFd@RfWG0&B+UC&pWuf6!wJdf?Z%bd>>0&_CQqx$m*dnqKL^o2pYH&cT$$W7ENK@*!mTI4P{m zNX1<5cvZ6RHYgamg&WK!^Vf)8x6yr>>E9u*suua6MG&sY{1`I<;IANs)-C2$GgbKX zcE~Y!zQ(^EfZNRH6q#y5>{>H83ERe#pKFa15AY?52UuG>1myg>m6|*RmutUP6c@eU z8UN`kb;{vgMBV)}eSB7b3w^-%rZuc!UY24HZ%U3jg=iD^}-^w?q zh3LoTF75mG^q?qOvzECIpUUeud>yC_zA*0j^aVD$1F#1(jF|niZ{n&UmN(T zz4D&k|7`Mo>HR-R-kcs1V&_VWXm#G6?_6nko}(qx$m67@&ru@A(ux*w;)x$#)iHoS zrr@6CNO;gQxc?Zy-6Obr1os$%mE9~nMs>6i!|SNIFb)jvZ3z3F)EQvF@3e>j3e z-P)99Wg&A&?H}ZXTlH~3IyJrhovOc6^&woe{Y3F0*|s9g>f{M8qWS?DpsxacG0rqZ ztglqE|A<7YS~g-N+BGsFP;8m^c{C7~ihI)+DPUm^kSr=dS6zue2ul2n5^3$@7%3}J zEs_A^zXTt3ipWJnKnaZm9-G0B5&GQW0=HNYn2^V|NuG3bE4z)i28zCtTZJl{7?5_VVqrnX+O8Jo0z zZuH*h&L=Tx^I1yt_v!6H_l5nQ-&I*1=B8-iWZ$H|`Jaq;`fbKL{lH|(UyOJBP4-)e z2rDdtSjoa(wV!-A@hGNde&rK2*hKj;qr`?sYy2WS5O&Ejv9L`1l4a(HWfH{=qL`M! zul*{9 z8~QB_1_Lnlu)ylRniybwqxbjE`3bf;H0pjHnqJ}}@w; z4DDdjQRQ!{#Xsn4NY}}-X_YOVf0dp7qI0#0>C-;Xf1K{nWw!+S`8*YgvGu#r99vGb zKIY!JY4Vk+1--ZeB;Z<9kfWx8T;i_kXH}X>{Ac<%TxT6LTR*_%ed+jZ$v4}x<{zsN zd!R@juT3xVzH}vzf4_OisdwAj6RxlpC` z>xmyO)Wrl8$b_z-C2)2p=B#X8l&}@<32&jyCn|jU85~!z$30Ey{|Fc~8jPd*PmcyC zQ9$Uu;WOn{XO`rbCV%f%Ey*2I7nkk5>AUPE(+$DCzh1%3l$Q#EekWX3@ja@NX$bPA zx=^nc`pE{?5$7t5CDkh_vQ7;H71x1Bj#8S{jH+9i%pkW%# z>+7(^ZPuc7ty;BerFE?k*i@1dX<#EH5H+k(rZwmrX3$Ybnby$!zTb22oq03!k|u4^ zpY11pY?$}%efQ6~=bZb!=bn3RoxGCgIzCrh<%u3PkNN7z7W;$sJ%#z~`SqA^Yb7!^ z4Ve3}l7M|4+0ZJKfrjc<*@5~;S?0XtEx7`F4w^D+baQkICn*-!GoV;Sk9?U6V7{+g z`3JOipRs?mi07u7 z&r+*(32F!OKlyBvGY_C&RNPqd49SD3To$MX0c#1U69{+?8Fayual1G8zUE}?_C$DfI%_&-sIIn^BUZ9%qAYH zpch(A!^%iyd5tv7IZrhSSB`)dcH_-bx+)~!Aj6Rdf;r()~;x`AAQo{hInW!@l}3- z4ExKY`zxBU#>I*F@}5I}WDMS0jSpe}$t0n43*TcrW#xo5(OB|&WJbj5;JsW@C*Os< z{QAD?20s4%O_3T?TJGnSHE>%9R6TkV4EUg3@ZRO+lev zA{A@%iW$JJA1mr;*}dq%=`~m4UkCnu1^@mV|3>leclhT!<&?5hPC2C<|M)+@`p+p9 z`oEPTZ|CQ2ZkW;@QH6`8Ly?)2r;wSp5s+Dq_C+!vbL}%i=Im&m%+)bAd=#BP=z3Y+ zar)v^43cv<)qztdyOjdzFY{sLjjc;QWR%%4)OS9}gV_{9(4cD`LqPR>&C7*JYm@t2b?N>QZ+P}@OqHZ8mkrQF zjn21ay(UI%etk^z3DB%kNT0Xs;%AvYQgb1F7Rks=n?5YbO`n*YDxVqpwEIiw^IBc} zEYnA7E~HO|jLfv@!;;+e`LL`$XNEq3Qu>^xi=SosNX>=x8I_u+O&^xzrVn= zJ~y0FDqp{rv)!|;e^kwd^y!t3O_x4WlAAsk>JFIY(lP1hK#6=kCI{JPn?CLBthtar z+oWUDrH_>4rq8Lm12aLNKq-Ch`GaE5*_N+T`mB?VO`AUKgPT6jNo0W;k+1f^i%a6MO6pFSwbO`i*O2WDV?kDO7;KaV|kJmz;*b0K}UNyny3A1TRA zpHp=QW`aH*@^z1dFqm!rp&hW8f7VIIrcED~R!ukCpy7*b9kB9zQE+aE-`miK7eZHNTG5oW9d8z(+ zyDolq>7!~c=x>6MO6n?5Yb zO`i*O2WDV?_pL31*}G6bKPEvNW_x~DH5bxnn{;ft^pTR>^f^^`U?%9}t0nhWW(Tt;TP^pTR>^!c_NSf3&K_)F-c&cn~Pe7)Y!nhWW( zNJeJ*^g&5(`ox}|G5Pw7zbNIO*XrVDmw!~vh4iVAfuAmYq$D?eKK%0;q)#dToTiJP zZTgh*TqefkvfPxxmuMjzj0rSto*M^y2%OCMEpA^-GB$EHgkDap-07wQho#Qc6) z8QsMT>|>Ap^f=K6H5bxnn{@0b=mWQ6Ia$>p{t2h*4$K67e3d2ixkthc%(i~U{9Zzz zb<(kE(}yLw>GRxEGbdlZiW2(Vsf(Xw`I4Fo`R95Wnd#F9eQ?v~hr=^QpI4RP06~#_ zeMA>OyYx{t7t&|BjLdZDBPF@%^X;F^AbtEL^m)53ezxhunhWW(NJeJ*^g&5(`ots} z!HnR;`SVNp=e4@{*`<%FxsW~;GBVSpkCf!5&xe0BWBfCJekuQ)ri-6#`jqm|sMI`t z`V{d`cxcAx6MO6mp)RGn}06U9hjNC^ad=&{LpbOvX;V$~br*v-Qqp)vXG z@SsQ}jmIS+Cm7vGFI=9`m!sFX-Aj(Y<8Jt{oN~+dJX@!H>v7)b5soMvcr#C7Pd}S; z3c+;|b880Rma4XAIBRdvO#y-V(v$o4os?dP0P9k(m)kYKoJ36hmgT#sW9 z?*3goQUB7?zqIrzEB(vLZ}c1eqjNNF0u4qbKnYIUsbJ(dF)GLCc_8boi=MD>+mS@_ z=y7V#9mna-iynddwp=Nc>3Mb@I>C21K|5r@H$0rd=>xvNcl|ikx~e>QUud+!8SPVa z36DMXvQ_hf_eDmUoB{nVH1^b06?_>UYIOcbzl@AM^_~DgMhCY>K`a-Q6$870^Gkw)kH`enZJ zLk-S1^h=P=-T8OqnLxQl=l!FPKR@(a;Q_Gtx%fgnim9g+&(TX8u;l;5C^E8^YY z{^))vOe8FyS9T#!DIg8UP?+DH<~M2C;Dh0@8wdZgzRVYVFqFNq@3o&R!!agkmf(Yt zu^acQgmCu8!QbJKQ2kzH&)hh8+x7g7(<=C8?8ZKoDU!Ky@0SsU#E;WBaRwGzb6zX{ z`g~9dK##`k$jiZJS$7~pXq~(F6Tr)amyi2^P~|Aq*?BD9DoLwuMqFd^_6_$=OuFeI2{`q z?KxDgp6pP+1hPj7WR|#`7usQmcd6ev(=&JwXQ&1b1$RCgt7wP-;m89Ci&)5AkGH3Q-V(_tut0p9P1>ky*SO%-Z4YeB1i$T2K%P8I_p{+X@oE zTQ2U%-ndtI3*0eM%yhzAgUFt_u}^pl3^-iCfM7b|Eil~>uhm|2ZY%zB%yCKN$hpE= zxd8@ig;7lx$GZ!ez*@t?CByOsxMUbdNLvq(pKwADb$3#=9Dtm4&L?jt^le>bcp`tRa=umsQ$=Rk8O zixB@#oh-rtQW9(;A)p_p=h@o)G&X{;8<4D?#Jv3U$H^V+mz(>Btnjc)uZ2=(mVdTe z6x&npOPkqz*u2T`4JZAF%^QFeV5bxg)B;@rC*ks*W!O8&;&KR?(;0%`#+SQ75J>;t zcr^VxiI3;k6S*W~>r2bli8%(Oh$-xrxTxgq|;_caA_{r!b`GnM{+s;;2F$I8D7 znNH5XM6{m#`x?{mT<7Y{n_TBkF>j{Qxo@0lI%m$aEtn?%GPDLHG`HyZ^d3#^l<=)O z%AZ>wRkTXT1o=d-Ib*&z%*~c!!1d?JS%H8 z0G7aKX`I|`h$f)yx#+4MJPJRs^G^8n_^lt2lddnJ^Jq@cN>uAvU7 zbmRPO^U6>)-6Iz?H_!)AfkGcR36AS00{|e@_XdFA_Y?q#3BRBKhzvv_00FYl>VBXq z)SrV5LhmaCFJKx)EK1;oQE1SK@B%_p7UG2=;sx-H#tTD;U<4u+;RSxB@dAQK4G=Fl zf*1J2D|I*lX}mBByZ|7G89I=g(2+VCt8GOsoV{yUR8Oq-4opUaI1FB0o*P??I{d(gF2rvSg7Zl#<{*DvJpgwJVneinO4fT(qcIE=wAdEuvqY1=9gySJfh1 z)P12$PkbK2Mco%kGhEat;ynWC_8=m_XyUcw3R??37EDAB&;a^~>?WuO^l+_+aE6_s zv(n&fp~q)P541Ba^hl8&%WHIGtY_{kAV^vWqO#1>VS@JNvIs%aLJ*auOvlFhVlGPt zokH}YT67X&w&qn0p!b<7M161=tpwL}qmxeJYTe1)=$m*v6ZLn-#{b@e?s|@YE(_+( z3C2H{W#aMAWnoOAKjZQLo*@Xkf~W@!6IV3;xhxZpe=f_|F^zxiMB|UO7x-P-J24l7 z-!l`0ii7-rm;BDTUidvzApg6iy9gCW8z=iJ$vNTwqj>LDz2D1 z;3Y3|!_=FV01<$EuwvDT3A&x(e_#jJ;b_`nil>!N!^rjs#y6ug!kS-XsK2`MN-^zU zRoNi_y`UQm!wrD~jOmpN`vl<^j+l!zLM1SQ;JAq(c-TY`e1TI!9hsv}n4>NcC}9qR zzcHxDSCd;6=j>wyp|sC)egOUQhW>Ujo+C<#?!3rB0??0Bb~}0)VN??Sj&PS_ya0@s z^mqUp9tB$(gzR3qK$n6Y6YpHC5yA367Y10Ysp?T776Vm#N!F?!H)@!CepEUlB}RiZ z0NkYd;xKs$!TA6_s|PR#+gA=C+z8OJlwD0q*!g_1wu zTvzZOoHnX=MV#n<6o6hv#u2m*0pYH$yaEgc1;r4QpL~XL3f&_l)lu!-8Ll=Ngv*ej zr>KNWO$Js04HQDy#u`k);M|`5fvQ0cLe&75La^{;L}oIH=MI+|^9+C0xz~5@$kx?% zdpoGc5X}g|obRr`1{#HdS^|jD zHH_Z@`>suF1A=SUP!D)q=(ws(1@v-of6TYE7IdKIV2l|F6jn=piy$?D_h73FiWF+M znLB5&>Xa>6wsQ3~tPiq-`xINL?95}pYE_$TDz(~bC0$Hvjn&E~n#WqJmCDvU)>*Ba z@t8zNXav|^zz|LAax9MaX!U>Q%C*$|yYR>P_&w}JKmrIMGT+a{B)&2qg{!Q&c4a4X z?`G~5DtGc-$oeB>jXtmi^)cEYCYH{v{Ea|sqNW-DDNkVMzru_@Sepa@E!FrAkvvih zVrYpxUiL1ArK4RG!ML!X>*n~kuSGppxL4YG3s#}T-3Otx_^Mlsw8I!#ZsI}aWGJzu zb$l&YyK;RB*@TU^W=Ujd4H`ZKmR1pffti+NkpCs`k@46dsw~e45GzP#-ATJhZ!lUhY{=RqCeLEw(4OCBqbllA%>xJ zdre}6M50QspAUW8i5u#C^&xy0c|lij2w|!Gd!ckFy6W8nQo(`epEw6vky4JSL|5=* zvBQH!nEBg)*P0 z@ZI(oGJ#gxmsixUs9|2(ba9J`_Tx$&;8m}v1Ms7$gEU(snmv+k-OJd3;@gm_l%H7kb4v+YA`OCpV$>>2 z!ozE@CpZjPCG7)8q=R?HSSWP*ngRH;`^o?=fsHkSPX0t9 zmt)Ha(7K9^&T``~uH@=I*7j%2nDN%VFn!VPX>)gEM22uAaSuYe<@nM-4De@bO91-8 zcUwjEI6ZH4AY`3^=_&4w2@8*c_9PT8n^FH!6O)?eI&LKi^D|w$VeL(rq7-Yl+mcDR zdpq_AWmbZa!Xbs5b!1}N;6Pmno3uZUX>3Vo6Q;cICSYNSk_amZCZv(zo&N?$6*1Of zrUL_0eu#gt&nMGZJ1)ez`~Dy%3QlhuFn(U|H)3$Hmg2=ym?NNE1OD*F`tXKECk{x+ z;MTcLHhPuz-KOG@MJa$Fyb zzkB$ID;6-?()x9c&bg*leVqIHq)C0rhX8=S=57O!1yq7B@m*02h%i5P+e)O@Q%bf- zSH~d1H-%Ai>=vnWi`CH}!@NZ#XiIbtAAQZ|Lb`+Z&i8jPTa)uu@ES=M9$;|B0hwtB zlHG{HxE0byh{t-CM8;aKg)r7LjPwqe0sKts-q*Ggh2WMmK%N~|$5m3_4ykWPbPpe; zzHX_HS(}_oOnu#~uUqQtHub?AnrZn*Xp?#d!`v$U!UzmYzrt(n$X2Ukg;cUtD%l#{ z!$(pyJj_ZWYvJz$#+M!qvxZ@*VHgzc21R*ELxw%V4P`0zC{<6eu}ylEfv(-x){FvG zkG5GIYoxMmQrWiX9zIHshNMT#+T{F`sc(q&4M}}Nrbn7{lGj3s*OR9`4a*Aj8@Laz`^Tj@+t$R;rQ@K|KA4?4UXD1!_oR0byup7}^FZSUoJAANo;oWpN1saK9^%`IE>f15PRWAvReC%vVUW8=vVPNv` znzMBB(8mDGTm*kTYNP!YD~52jbKMJ-K3p%r8xJb45$h!Px}`g1c!%HY`c=!gzXJoH z(CIR~VG46ywG?|cSMxF)+(w|fy$oK=OlIDzF00KYr&O^^>r}ETcR?=M!GN%w0xK!s zrCsm(U{mC~lPpxnz~UDOoWOG9d|7Vbmb1lWtFcdBjWVF6flQJJERK;|>|ebIL{`cZ zLLphme$7>Icq+r<9IAUv0w{}=Wyz%UK?HmTA^{2Em%O{>B{zk$7_VWfh>CeF<;n6S zmNZ$2_DzFe#bLV|a19IbEM}*h_5$Gz$F3}c$uV_P2;YT=?OGI;)(R{WmD| zZnUw!&t6^gir-;Ax!d3Kk{=US6(yu~LR!TlhxzA|=-p^bF1_J?=@PxccRe6K zc@q=XT)PxVv%)(t%ZgEE2bQHeH>NCDK&RUTx$_V8`&KVNKy}}02m*kJlZ4+Rz}N28 zr`WvYDTTMe`&OJ{OqzEed@r_C^S)aZ0|`(TQuDqOl?3lw z#^ObM%=;m1Oa||pUtCN-HZ9Q_7B7ZYlf73J!{Q5y>B0-jLtZXN_y*FDe?w255dK^f z8o{+EH=}o|Q-%JxDVKgf^!a zVO=Oxj8L%dbZCg0&;Z0PH1zx6`zxV{x`sqUn{&-kHGm2=q}Mg1oI6>SS;J&hdkx9wPF95Fs6w!eF-_lURD>4FKj*?&B2t9J;m4FeV8@k zmQO$esi;f8xdzz*6wr+KBvhWub6;)8HBJ2L(%e_){R5jCNS?Q{`sc7(Uw}W(XFe;v zNuIuPG2b=t-EHa}wLI<=c{y735BT?C{Ch9{-Hw0gPv?T`d_L!$zpHfJu?2014#q~l z$khN%XjWSne-n2EtPY32X#}jcV*Mshjn%f%%ldljnS^Eo<^zV08@RcdTs;e{stf-^aT6xAEHOfyE%^ z7ug-stYz0mHLov(7~L#63_rPFa~7#?7Ixz^`f^61BJUv=$G(mHO*&hJ z+tcv3eD(Wq;~0MEf_U?al-1~5_#46G1q9(;D{U;Q!8uJQOWT7xW29Fjk~>&#Ii_)lZ3 zWAwk6lTz8}BrHQp4dTWEPxq4sQE@UQ$B$1WB znbnT*mlf+~L3{XDvhLQ&%*x-wIFyo$(MsK+su)wy2NI{G58Kqs9rzDEA>*PC3*@Eh z!@0T-EcMb{sh8OuBgh1=xX71Cy}m{}M(Uy((g@XX`HkFtyJFN z{6JLS`FhOR|30Le{`0r$KYyWgb{(aU;6G4X0egOv^ZQSc%8>c3c)71_0Dt)j?#`3n zGz!QMJI16XF*Yz5;Jo%byG%JmF@EJ2e zbkA~~(6#_S8pb>LED3AygI_4Zj(6}G39*hb{CI=NC(PC&ySO;DOWkz~rH@_I|4dfO zJtDIHXKNZ@kX=sK@c2d$#XvSOdl| zLRbup0in~00avkAR_VLRaMZA}O2D|e+zt94K4*cRxc^+DayVV#ekR<#^CEZ=+=m;L z4pd?(fufi&co4-x_f!qSvp^Dg*1?xmU+wpE1@a?btS_+` zLB==CyR8bFEMkxwOUiN_=4ZkPF)U*dleOk2-=_L1uug#Yk%VzkmuaEsG)6zy#FW1W<^i=LMk5?Qddh<#(&TW~k9&)-+{}>4$9+bI z)X}kAQK|!BQ?I&A8xs#r9%!C@lHHG)Iv(J)9dyhCuMX%ggA<)03=Co-WVjlGa#G zFS5OPYA_m}+b=ISg^0Y>V)&lN z#lE-^jr=A?3y~QfELaV!!S`(-&e&QAQnQFW?dO186; zPB2+92}%oFKS-*@?wlmSvb_(&RAzSW2@ne?S?aU8P4c5 zoS|3^oZ+Bd*sOs0p_l8U1}FI)8WXCmP&fM3lK`h-t{st)#2}5Bk<`p1hTmcEOs7A* z+aKNqt1*V|F&qIBcH4%%TElMOgB@}+;1ISSF`I7pN4EK~RT_zdzaDFC>62--?LiJO z?;PBMv6OLw_XbD)OH3e3WWW;Qfre=SjDX1{?&mS@&>4%!H~;P0YWFwZXrj7x)*Nt(RP?H5<6Q zUsw(L017SA=a2OId0LvP>@n^HP?bTI4jWb0g>64kWm+F~`a`?@wAiPVDg#UHaIw@5 zjLDZlK($j3h2p1^6F3oS2yE#1>6+v~J<2G9XQ97yYHXXY`Fe1!9?ZD#Pn?6<_5=ng zlzAAds8I3{n7x`rSi~x$F=|iQpMOFpdBtbU>ySOMW^L@)#nSKb!UV zY!XUie3Uu}NW=;?^FWN$%mY?b;>2)b7dElhd_>D%sS$84VG6C zF(CI_ggdY`y@|6uJpxCR^1qKoz(o>9fPUZ>0Rjjo(T~#alq82qonUlX5h&==pIZy? zeZt#_;3|hB25STnmORcBIp+2Y}%-vWOpp9jZs2Um5p3 zAghN#U3$UCk3(PuPvgsefy1d>Qz24j>5TO`YQ-J9K*`XVx${E+*m}8+H3{Z0EONw3 zlE>Iw!stbi#@Jbi`RC!&WAexpnuP;V(fX)UTD{kp1I7$S=l1|8IEEIe5*Kb_bP2se zFqG!94en4CbfjC16-dGke zJZ2gAb#_D0b51w5Xd;=CcUa;I2W%-K3x7VkyP>TAU|G-ySk|PW4rD~T;n_UC`gN@> zom%-)hYwrjP`*$-^P!rCvA>3GVc1xS)yfiYK`C^H4z9aI${S^Qn0JPaq(hv6*Bk&2 zC7+lpTue`?&`ghr3OU;sm>!0*ER?rldSv8kQpD0MEVEjYxUlS3Og|#hfZEa!PC-h# zHaoN#-_lg37QYT{tvr{$85XWwgQ{q{V^x(RYFsfPBAuL4!^&8Giy1)9s?k0`y!3g< zgRIN@(Pys9E66(R^$=8=k}56$R3snMp%jpIzC--!&JPzxbf_DpNWuVCZqq3!pC4hy zR6zqG&R7Lt?HO!)ADf8aMo$Pp?3GzsDb=_l2J~E>UQl-WOh5E$A-%L)hNf46R)l-H z3<8vK&Yr@h4CpmtbWH}6gP-mn)VYQn6B%RpF^n<2QYyYwiWTTbHPsIHDHao}1ZvGq z0ev$t1&p{XKdjQvsi>g8lg|PfSc9v$9P7QPTdPw7h+Z6Q2#v~oH=1}mmct1@{uHlw zOYmr)s6v2|A)`rC28?W!Bv?W=ND}a)f*V*b>@o_p(fP^s54n$^wU>%XK0r{w8J0T4$f2y499{-&94}VJLsoEEku{59O4A%fSSjO z5z-i^r!fs7BVs2R5e*2$!PT-Hc8Lt@MaHl!GT?h`R(`8Ptu32H2?j)zv&p{@Wcf3> zh6-~Tl@kb*Zg4J7>OCiF3x!Xgmt2A5GPSg9hR-5U>6g^E4Xj0d`i_)*+Tfg0TE=%( z8DO<&w;zl8#3hi~#P4bI%UeUVJ>>r{8FTSlF+ z>SfAG@(|gBOIJYYA+vPFY`0t1D*Z4A0OoR`;^#V2tR!L>+2%5gkWT_^hc=90!Hak+ zm&*)_Wy!GU9{|a?9oj0krx7u%jL593S>++}S!h_VRkSC1ey#GhJg3m6mQ9`q)dRON z@CXeAjm}fQ;3!u#Kw~vI3*@9els%`J2B$@(fj@4*Qs(V?Df4$2_27LpIn$cbgO+infq{!f70aFg>Uxi+Q(rta-hz^%puztb=b7E2omyz2K30#j_Z!<#V~ zud@ZAV%kHVkFptNPV(;+GY!Jl#$UK1?d*1 z?2hgsR7F_>L|o9k;1g&-cxA(tvkSI@@zqVOExSc|Rbv%)1MuMu7QLS$abZhrScg-M z&N8`ChHMEsw*6AGQ40FM!TDueSQd&DY?-)PKwbt_zC%D>K{0<)S-HyK8j#{F2oSpz zoZk$bP-oE%{OUFEYqStfWTyweFqaZe3U;B zpa^01K>`)rbPCGn$0Ax41S4OdindeiyJ*lC$~=$pfo%!P!4XhQSqKH|L9w{V1pqZ- z$OROt0yiAZ8hS*LYe4ly)#oQXo(g*6$5=zB%$^hiZ9sPd{^+LKkv_#?h^;AW=(Ju= z^c5~A#>6Nv*1qB(&+0CALB#&Q%|w_3&$O0~v-Jm5bC@`%^8LeATZ zyAA&9)2bNSQ{%t1x4js~i-MgnE^VMk@jZ{uik-0?#!Rr?gIN5D2Hjm?J}%u#6U#Fi zxmy$`Hq>CHaxmPmQh8XDw+Pq+(?W~^dR0gss2oS;?g2=aC{DmvU`8yD0SkcxMnz>} zYYaB!tDpaR?J742IpGQm;tXammml_m|ml|c@bxa2s<%Kwl zXvPchMW#*-Y;=)!p6`+ga(KCv`#TN&dOm+|T% zeR4q)1j4(vK8K;*q0rDs7?U@`Bqrm<4RwqcPA_7#b7y>a`iPN5QvwSvBHMV4j=qaVKNA)P{5FWo(0Cf6bK3HnKnKp_u)9d8wsl& z7NP$wn*PwzAeUQSHXHgwO)L6$8T$8166n84l0g5BhW!iQy5!tGW&eOw2 zebH#R3nQOL~^(FW*x4ztrB3>cu(_yvXgBB4ufUuhI3tjhHS(yQ`Yq`P_ z@7W)TTw&-qK?T=!Aqxf&^V5Jyfsn~|2rZ*fbTEV|ccwH{%#@+m5c&-0m3Ivi=tcmh zaWKRQ=aM%a4J3jc5((!0c zPRE1q06$>t0N>^IV99rM$}Q3JitQdp5`K*b*DX@71rye!cqn@r1Fp<+~?kdr$2^2(v{nT_reH~PPfIB{unTt<}9Wu6%27ZOp<{n z=i->Qr9iiCQ!}}+55Q*5i->%MC6zMgT%`}*wa(G-VtuVO#W^haKIFy3I z4*-3b)y_BLj`=A| zz&LXL4+L&wO61XAG=gzJ`V*ar(a1JH>+reIY}0qbF^QJm4oF$iU3z%s2Z zTV*q|t(PNAShB?hOSrx9H70NojKM{dRK#ZRct!>qb>x;{5a|@08Fcuc++AIL80rTw z$M~K+AWWSS+i6O81Ir9Z`%+F7tLvcZx#tUpKrq1yfB~HL;CGm8&WU831EPONsDHDA zswkj+EXmTzZzh&faK)8~Ga1%hIaNfD!0)jXt%`tRMui-sXu2Q{$dsmr_ys~F$2duW z&&Nd1k6}MB&#urlV)DYwnsaX5=xc7!eJK9c^dS^KCzPcPAT2h4kp}0QL0QO9h=5ay zyY%_Q>+`HF3P|Rcblx`o5r=~$qB4L550dmicxDcjLjI|6I@gd8p|2*I`=3oGIBvv)o!2obXebOPol zh+)oSa5uO`_An?4X<~btg8;i7nsR7pBnmd_4|5v8dJ)$uZYkpU9pD+m@vus~bxIr$ zTSXc+_g>iC3mAke+~oGeTgdYa<0aw=UEs1&1=kUHL6l|s#pD3LI_yQ zQjjx5moA6qNwy~HiljmBS6)ocRl*9*4P}5y3F;a89+MJy8u}jQXCy)2=jLN{9!Zdd z0i*9R%=ikDFlr>hF_MsyBuE0dVN5CcjAH+KEGNW&8x0+6{lrRMVY#{rBh~Zl+0b-J zaP(N~tt)+N%K~^!pAS@-O}+*k)B4GkAFM2|X|7gTK3M6mS&f5b*y6i)pAaH=pLmyG zV-G~Yyplqd4t|f~H)6OVU@D`Uj;YxLX=vH4jm|gT%oZ(FHV>H(uh8`AmhON)IlO`i zr-(j~CJ+I51cNhh!`+4yej<3nwCr8yV0G!4!<)GuY;+&Y+zvLWOTBac^ zmNR0s%Fx5H`Fu!>rWp3r$G)QuJ9B}lCNWq<;^6q?LwVDX(XY|eii^6ND-+LF@~*|^ zQ^wCoya#-d~0a;Xg-J+v%Ci-Lg= zjK<|!@KP-08l1Pvm3$RAB!wNe4`asUbt>AP5Ro&+uTnW=^s!%ex_Lx+Ft{oFjtD?J z_Mt7n1PnWhO(#LJW&?_ddrGH$AX`Iv5yxdePWueW-DW_uIk&5vTMpPF3wbd{1#Viw zEl2HUVZ6ClW706UaVrjcVX!w%>9i2$cLottJ;9uU(?X;EP`B`8-WMz9Ya?5C1v_&v zS*V@4A*g@u%>9%ry|B~h4EAbm6`;*AASeVU+`@;IANgvWOv6s-w{$MoxNy}gb{;h@ zmdYXHGTi8V(mc|A3lcS; z$7Mi`%YeuMq&8=W$&Cx<2o_>!k8R2PxS;akT};<96keix3*8y@l)m*mA@=|<<3 zUTGj|qvQ8VNt{CODV#FiUlv^Ve-J8&t^{3$wt?hV+q8RQmnyjKD@>%PErgRnpY(|j zFad@0YkO6bTue|ToaSh3KL+~ z$hq#p)sajv;z#sAnpo&@S;Pcs)kfWRy_Gv6OweD<1Q+*sF~Q4)3F^Gk^gMw1(he=c zthx}h#{$f$g>l235eZ$lz#K1C{w~{~I^7}O2}WY#&%&7#^R0ppz#|G{1CQ*GNfn;T zYY1u7l&d{IWY&$*ZADMKd2eQ5lZ|@r&3i&)`h_&9>3190&0cW}BCSGk$0Cml0@?vs zV1)sqcW4l;oRj5m;bL(M{D9#@e7)37G;N1Bisf-D#{FJQhVRELw*YHQ1%b9J2z36x z2?S~nJ9_z~5j+#QILjniv+b zocrH~k`oD?H{sq!9Qc!6CwkfRDX$y!y0yo**5`Ym0t0f>UY~VEW!jF>pQbRW=Kzw< zNOv;ZV0_>5$~5DK#T3S}mo08^&h2EE0&U&&>gEKD_B1Z;tY*1=xHnZk#V@;do@hT1 zeenZKMbZ98CABB+v#ZOL|Bz{rjRs)>U>@1N``L(|{XYB3Q@LYlKDDmYNjDAp?B!>` zylFv7%p>MRpxx?`(*xVxCAxDLfs8`6H#w4f{SA~c^CtX zjD_Q1aW3M9!0zbYEltj8A{ljU!tug>$jpiWC z6XG*~qduEt^S0Zdqi(;%FvW%@Sm$)C{7`W>8@YFnG?EbKIgmgYx4AJE>1$e5?tE1x zV%ri8fu`lj5qQQhuJmnhScS}^2!yjr=3(KPTL2HmKBBn4ynYai_9jlivd%aUY8;T5 zSBu@Y1fL6nmaf;MBuqtwiU{MaO2Ib{<^+_-ul=Bv^9j7`QIY2y-eNI|KtLc5ny$Xa42NB! zCg+u=ADR%-`!1vn)#Dq?!Kj3+0Gxm#@!kO>SHDL55vR!+Ig}^FC8#Mk5WS76Ci4ZR zXKXo;Abz^fqUB#wpC*?THyiYn%Da$zs9wekUZB=w=$4;;)r4+2 zvGIHK0TOmH{C=IvVIV@2dGvq?bNHQrKg4a;iShgV`xV6_lj8SeXUVt};rB;W4ujtx zFpqQiJ%5sII{5t)_j!zq#_#X*N)!D4R=u;rFY&(&q3x>}f}b-&g+gNr&G*xFe6>|LcUq?_d9KGQS(Ycc?e_13UWK zjsW8SLBwN15dZHp3F2S)j{B8}NJdApQ#)eTOg*dN8Jg9}++iL)Aj2GbvI{N{f;>F|7qoC;U=_!AG$|Kw|Aem9=~fqF9~ zJpTz1kK=>qFI4Rkzoj-$%Y2pY%M4lO7aS|7|Ea;jM-S>ZYal*-%lz(R!t?U=al!La z)A7dhOYfW<&u1p`ula+ge~sqJoX5;moovLx81Y4C%+uznFRQ6+V(@UE%3+ZGcJt@~ z9_En!6p;OgzT^QON<3|r>RhgIDMI#Vs~iT|*O3sJ|hws0)>CfI?Z*auo37l?z_c_Xe8|25;n*Ip&rKaPJ@2|UKa(w@ziSYf;Jn{W3_|GF&WpLeJqqc_; zn)~6=N^Hr#5G$YitIrV{&2VQ($9Gl z=Z;|`3L4vJoVoRV1fvqFXc%ZFeNW_tj=`ARTV)M zqk@13IF*!vr+uk|a-o-t4tStO1$DckKXv82-|6EoqeAy~Jt_r-;{ZG=l7om6OO@;u zhtDfU1#Wd+%16I+RB%j<#h6i{i#-m<$4%7M!clqACXZ18j;HJTpKwu_@k`5%7&_D7 z?DtAZ)WV>H>xXdTPjKCnlp}rW1?OPks90^&Q87ii+=4{PB?T!r`jE->x>(of6T!Pi z|0y3$ir~8NAxr$lOt;MNBoQdT;SoKlS#M>vluh_^sUF}kI3lb zfNtUFzxXpABbjQ$IEd8D}k{E_f`Y7W1b;P>p?PCESl2LyCKasB20=HJQXZs>ll zdUGV`{&NwJ38DLp`pbXjPHCjKtIcYaI8&}RC$_)*8aHa6w!gf5ZBYBH`pZjA6QlOo z@t6PB#|u!qoDWw1H75XG|A?)oqlvM>8&wX24c=rPOR>QmUZ-)-+#fapUVqN=nE#9M z`moOA8kHiv{xy}u;PtPY$2q)?b7wX6xHM&2c>Ue&9;2f1`rEwH1h4;pl8hwT2qh4ulB%jm& zbMb1X8L#Hni%&W{zxtzp_IUnC{xkpmuM`G1sNbsI9LWfOwMfb=;dz6S-2O8G-7Zi6 zndHY+H|G3j;6JnDnDD%OeO&Oo)O5V@{Hs1NA)Ys~QWb4k=tC&V30>vWp3r_4Txo`L zOV}yKqx|l_g0!+-sqoi3FH-Jwk9_7-HDT))mO&pK%6*`y8 zLAuCG{@_QY92pk`Mts&h&UwinotOMKaGwA%e!;kCFL~bjU6Q8Gzj~!4%82oGJj$o( zUE>vxQfrSR1*M#?YjANwk*oY~{yEPHkkGh!^pMawS9#+7(BwgFzW5Q3(T1lD)nC*r zZTfh>YtG-M#NVd<{F4svw;}xBiR*8(?iFISKInlOIxZ*~IAK zJ1U34_g^-T9_Rsn*13?@a6g}mHy@~q3>Am8zU~GO^iXmNc8SjA8kZt`|1y=s;QM*z zaSq=f9ln1A=Eo8Yukro2z0w5V|A$w~jN<#h(lxj^p$OjxRSqMeKJ(}yp>z0t3i$rP zfAr!6h3~)Ol{Sa(XCnUm_5~*$zW?ggd3=B3`RDxV1C#?dzWle^&i-q^60H{_ObYH2!@7($DSB;y$U9 z0Pp|ey=rco7)|u390pDNw|VqH6LWZ9(8T2N=|B1&4>VDN_ur;-xyGdk@4s5*FnIsv z=5Y@1A06I*>MDlXzX>)jgCh&e|%}Iy%zZX7{@&5Dgq#U^M{xj;$l<@xDA}PlQ?}t^pa?T8; zH&4~;zRVElKe7Gs+m8wF%h$&R?@LX`8}DDYWXgE|@IG zHOozmEB2`z23K^NM-N;vhy162{Qvds9=M_e`8VoZu5l?s{;yLx4Dw%S9_Nt%(INk* zukaWbjr2M^M9H-PoBTmHMlsT2>G9@au^AHsd@B}&^hEk1?2yu%e^>3 zA^-cm(hTxHQoNiw|DDqNW&0{lI=ugbrGNH#-`FfCig#JQf+FAs{pr7#H%D^f`G&~H zEa80vo!tKVSLt?ndh#q$iF4;~dDHB+W5WCL^>M-bQq%Fq`yYMXgm@oUAXg^-I1$MI zy(h?@4JUo>V_hz_A>3SDJ0nvL%a!zp#i#xd<5jLcQzE;)^Q~$I3kPnn$`bz!Ut$&e z@`K`490=Z5-rzj0@)*<*H;*2uVGh?%0oOmh)S!kNw2MCOctQBf@Zr{jdT4NCwbQAy zxrc_x-aRxIFO#ASv=5obIcR@$(0=)4UPF`oYw^wgOV30B_tl1$LAjF2udj~+rg2koZ-?f>@8o}BOs;e=OuCK_;$ zE#D*I`;#%Aef{1+1OYCNt#i2@-WaQ0VMVqgUg-k>h406VSK^zW%DzAp*&cd4`DQ!3 z-EO?q>bP~BA!N7P?Q1bzS>d&IWNpuZax1dQ4s8nVY`Yf8{x)Xvx2?oqE3_N2R`(** ztG(=2E3^&+W#1*AMmE@?4TU=noi~L#A#m$rwXIfU7h2Y5^9=rY&;FX$9v{AXpaPZN zwAW`{QJJ=5%_T`a2at3|x|7)k{(lWrRH*~`yBFxVk?PAk$4yfP82uYV)i-wo?urrsP0);}SlF(Irk z_03-@tkE2_!@I380^IKQM>biJ-FB$ECtG8M`s{GGUnpROyTLkcME|KJ(nxQ&of}o+ zOd{lm z%mq@w6mO`4;KU&~ED5ou5pcM{`I;&sG5s5=I^Br=1G*R-9vQbIoxz<9$-FDZkjw+o z7RPtnIjazrd$ehlZxsa4X;>*=8$|yq(~s%hINJdFjQAP+JANonh~gV(r6!H&8|+9t zR?!IBI(`PZ9%*#Gsy;oY8)vUmWh6fI0xfT27yZ!r;yERV-W3n?#KQB@zaepXMg7Eh zeq7}-P@(2h`NRr&K!rIxKLtD={A)$?2xzX3+(I(m6ao1w6m%^`4xd z@O;=aaSqQPHJ)Ga+)0P$U-p_joDlA2ne3=t2FLG#U@V1f&NexbBZw(M4POd~2$>oDB6XS=PMf zwLs-qbqFetIQ~f7Ph0&;H?oiDvaX#fvX`$7vOm*w=4g@qk0(L)Qq#o9{_`_{?BA`C z{XgcA{SVI6$o_=I^WUvMGE{io1(L@=h0DyN2UM8D^Had{Z+VTP`4RAZozCW7Y8B)8 zO)8JU^ItWOb9nyf@cg#(y@p2P`A>T$3ZB2&Gij#q{As#$HzyS1`SmJ~5z^0_M-L&L z!}C+X^PfActo|l@AH=h4PRVkkL zo#OLhQ|grQGt%W}*VvJo=(E@)tO>Ti;OTE;Ji}(kseT%sH&30dCa}psLu8@kF`(fF z^XLH@=8*jqko^bGQZzpTvVXJA<{p}2WdDH5W03v-n#Vb0e{{(H(FI;Zqmli$Jrf1l zf5tN@k%0m>5i*a#^X6h*x|FJB)Qd@nT}Z+w4-uN2=0C&KqHg4>%N zsx@9>wf=CO6|ObhIT60U!LGRc1}l^`7t;44cD6rKXGLm_G@38Nwe{fzC^7jPJJO3g z>u<2D8*Z?|88Z3Xv9{o?^$&**yKb(p3*HybHabt&x+bv1$FZ*yyf2h(gPZRvar1>& z{ro296DpS#8f9vObEA4@+u#a5-uhd*g13j^p*3nnhM4DEx%fR4x5Go~O7|(>8$Xl_ zrir4|z41fvshZ-w@k8p~_|YCGV1?rBW6!~Wxm3OzURvr(dfXy49^5%#Mbf-;zGtm( zExa}hE~fWK(ml@xtVrAr#Z716v$+RF_#@r?FqB3ml61dZq|{dxPOC!9wfAu}|8cm+ z_3RH+g@@$g+F;x8VY-TrHaP1}SELubhEVI#y;uvvwLWzCP2yS45y~_=Z+eNx2xW># z=qIW$HA0yNXPEeJIp#iwO@xw?8L{n*4ydMMmJYXgZ@t2)=t={4j(gB}F5YQmr)2A5kMTA|o_VJVFO* zyhbQ_sS<*1^Sx3@+6JfHGcEBfk$$Kq8ZQg3`-R9?ZO_3PE8J((te*Xj`&|+{Y=`@E`~VpNKR9r#)cgQPQOCs({B4E% z?MS~NXuslzet&qFA4Z%~esE;<;TV4Cck{z=k;Hb|k>MOaD2ZhgjKmgH0EbPH*kL;~ ztodPB@x!n`(uvTt=tc=YII5MV`NN7IhJ_#ci}~S+)4WDJxj^y5rl4193EV%Tzx|Gr zFdqJ~;Qcj^91py&TA25>hgS%F?fYlk*S_VHJl6lhpQo?AK^KeV96)o=ff_5anR8Yw zJVXTjKs7ntjrF&yH%G$y*NKQsi1qI*2TF=;wIUELYc!&YeDxBL`g|;ZQvs^#P~Q0~{~81@}V6s_AME#XPKjDX06ND&LrB3-&aMo$jS3 z^F^uC{Z{p9q0>E^jp3BayHNR1y&Q;$qb)edatqK5h>7>ZXv;{GbB!t^@lQF|oY!P3 ze0e>t{Bw+qnES3KH0@_SP5ZNPlvWGCl+V-p1Fi{cg7dVut31YFxY0a%7!2pE`cts# z|NAM5=0~vVuhiMxw%lT?{;0}htona2k8@W2qqFK~D!hh9TlIh9nJ8BMF3+UIL1KM< z@0DQvN$> zKQc14H8B?mSQD$211iri7_CUBS;^6;5Zu{gg}5Yd-79O+f)%%47T>tM$_|g1g~SLJ z65p2-Y@PftoX#y&9+0Id?xsttHo8`ek3;4690*iJ`it+bc&6Nw9h7Om&ofcY5l1>t zJ7>?|VXs(;xpq4y;6Q`3WzX@z_t67>|K6S~PCMl>e(P+Vr@i|SyA){aUR{|u@y^r! z)JM*D!}~|nnWFo%6KsaNN*dHe^p4e1Fau zEe(^Oul=IRV^G5`^XP#Z=J5R#@cqt1isnba_w72H8_*Tw`-(qFQ3l_iVIJr3{n6q3 z+Jjz0qw)RoS+7LF_amN3Gm7s&p{sDSLovSpgUVwh^%T_`&y(w&|MXum(o^R>6Sjrh|(Un^f5 zq(7_YYo(@%k^bzQul?YNM*1fWzJF_4O;VGgh6hz1gBk|R;~c)vgUGBE$=W%WrO9u& zdi>X3z@Q`^=60RUJv7Dme$j8FD1+}WF^_ZjK0h=WE0VEuzDjWzn_;kxi@_GIK@P%E zw*8cwl-QzmE`H8yXf(b*(=$=<{aDKDyBWpzck3$L>`;vF&rmHil6szb^pMm!d_M(z ze{RxiST(*6cqY!_`=i14BVRq~@cmN`g72lK;zmVa}321xx-j2fXk@3DW<*&gLGPVx<4K zzmTE~(tn$IoJ0CYhx9Ms?=>_U>0juXC`kWw&!og}X3$e-XZ*;LTCbX6B=wEv(L++_ zkp2{q{*tFX*+E(I&+<&ndvhK+{{5Ukexbik>h6;c?BAqXwwF~{Z7al3SZy~3td4*j!mPGeR9mqD zlc&aNTVV3kS{;3Sk78ETS+R8{&jPD$Eq{km&O+S#Ve%}pVrxvE^Q|^q_pS0=V0F~t z_x(YhK3QEI+p__=e*aY|cX8|fU)?@F-uj4-$4_JZNQv%Y%Y4nRv{e(AU2nCGv0T=7 zvDJaAN5+%2`{W%;^zCco8{a~oFV>dEFPzW`z_St^zO=zsJ!`za$(CGr!J-=N4%UR1 zLXZ{LOa5|fO9gBk^}X{wl+N=_>dKyj=>7%lP6zWxKY7c-VC*^^PK@s1+l9?9RX=K) zPgOqx!M0^cRs}?Fz1bIRdp)0Hq^%WO&O-L^udk)vZsU*VhoerJ9b@r#KmUnaOx3s4 zKZ?skte6k)lP^{2>I3GoI{4m}zg7o}QE7gmy(IvJfPrhaI{4m}zg7p|M)%a>FJj7n z6GE)nD%dv2o@ySw)ryUvn|iqJSc@d9EyXwTx8S}U867*uv4O7w%eOoDaSSW=wuN}a zCc@YEwOz(4Sw#nbE$QGWx4d^>+Z*-!!;u-Y>C zfu4QK?%*%0VRN>eFeRYvBAXUU3NS{5pDDbm<6 zR)Qb}OK-5&MWmnKNp>WL(Y2f^_+R!@3j*#*a?mzirn)LAHq192{L2fIM5Ju#C?t=A z=WpXTR@*54qJQ7DJNRqT{=Mhu`v<+tKKb=1a-i4GYu`{Qo!gz`<9G-4J)F#KDXCuPXK8lZHYE9_OiO;-u^oIP^;`0LpD0Ln zByk1Zc?wjD2qpPmq=!>aoz=lI?Y8Z#lu7(yWY-5fL;?>bvF z-Ur^VF0*-}tHk+M-A5Kp!DG25>Qq=E1joCdbPUtdhM7&r#2CX16+{CuF?tRmd+zjn zE=Yz7xPeCAVAq00xszDy57k+r+TzmEuF?WG*r73AjuH+;d&(`$ity#c_HgN|OzEq% z`&9y$)c}3eL=TiVzo)n{V-q%p;XX{)rq&qLP}cksQv(`IDlNmMIVFx z?|VpvqvHAW*3>r8JddX|nz}~%BWQ{t9Rx~6whNZ2w!%9EcK}4KVK$}$L^bob22m@` z=KxXHnmh}w$VSNk1f?9yQ2zOd-617hU`4hWulyPu$B#uGmw*pgk=|;B+wI5>Th9i! zu)sF{&FRadyx*-_m~^)9cROz9%}?#iuWkS1&-1+bBzL>Lyhl7zILA{GO1=k6 z|94WQeQfbTij?*r_D!O+hgISXDeY;UAM{e%Q@f9IQl)L~<2*{&;#F?VJ?;1)^0m?2 zvl<^nYMNMc&rW=hdAr=}m?P=$1;3xu-){ZA<@S?Ge}AFtMAqL=?=9BfKU8m~q`zB# zaQyW5C8}LH-?38U{Sw_5*8!1ZK;F|jAL6CNr*=MMQYC)$@tr<)O!`~CJ}&xOYC7Kf z`|@v==M_4i@1GErD0@i%DGl#Mt(x4O$SOKwV zi9M^&!=4p}+nzFJjcQ|7$7Qr4(Od<4))r&W60?`KXNhe~+q0B;4<*2!^+uOHYlE?8 zt>8;m0ejXiW6v65Y&%-7HrtUc#(E`|uQvWI*vklY+F{&z9#aKv#ukPh-Vm#8M=T2v z=3ZQ}XgA(!Mb;ryovrQZ%UNd|{}z_C{ieuvu--aeoi10@gE1bo+t|0BcuggCAbs~^ zyU2IbpwC)GU&X>QJpZaPf?AfTj zV(|mjEOxKY-zT5qmt9?Eg%ON*)Lypuex{;me~+a09Prr{up!cJXxd|=D(q32M>bD3 z-Fo6a`-;jmHoVNI))iu(P@lB$Vlf>ebtPh!non4`73xA%I4jm5 zpA1ExEko$x=pH^oX8#VRBD2Y7UwJBG2q9oymxOZOir~2-6rB>x4z8U8cBIQMR!=L^ zWw)^r&?H--Nf24?j{nh`WHk&py=AM8S;fj0YBUj}om720Tr zHzIj=lXI4Q9l+aYH_Y`g3nRoX472ShWk-WEE?+}bQ_-FZkSe(xA)lYOJJX~0*7GzgeZZj(;_C3_JQ8+8Z&qA%MToQsP4axVMQaTPMyZTyQew>3Iz zG(}9067NJ(;`2E>&&XHYvyJ$lVZUQvXbg?^C0~r)2X3&0u){I7B)p*I-F9R_eFWPD zHL)vd#$|4(4(^PM`JwtEnSG(G`7A4+Q5`P{*I_@B`yJ`^f%bX$#SJ}q_J=T%>EvK? zb53i@{4{a>@3A9wATO#!?C~0ZWK3dcp$VZee~2?gz6s$h_Yp;bFNv@ToIcX)=eJ{f zCL^umbA7lLy+9K>R1*s7*M;p1r7uIjFjYq5Z)tun_hRD2Q89fY)Po@wo_~d zQ6B?&Fg#jidb0jf=-3AJcKEo#c3 zCcLV~E3_cfRDEUydCF^T`jrt<1zo^q~%YRYV)ijW>?ZHi+V_}y81{~4{e@u&+2N~ZlD8DPIn*WVrL3N(Y#nXMY?$m2nq$4 z)D;kXLdw0qkaDOgQy)r~Py_UPr)pMmPqbys*Q_Z%rs*eR3n*4k6;_SDa4Z{~vr8!` z{B{-RXdtcK1_D6b)PB}3Gyj89n7Y9%Ly}Z0VQIx3NN;s5u%Mdx751zj z%vgg5Fg;d|-;OymTjTGm4`(dE7)U|m;!c@K<39g@%#?%s?b>;*dnM~3$nB67LEOGE zX-OZ;RvTxb0nB0262L2vJ%UhveYmX|)0b*V2K4L(Jvq%YifanLI~$z86O~+-(;|BF z(D3K%(-*1)qz8SwkA}WEg5A{T^AF1OJ{Y(EA9e2oA6IqWd5<(BqgX>`4056*4miOO z64As7q`^^0ZP(K}lzA&TC?zcA{A72)$AQc-Ks<>f(rb8f6qDh&WvP(hqY-ppCI2k_uTX6`G21C zoaZEKdjc= zNV1E>D#`2i8Pf}1Ky+WkI2gvw`C4rqXQyrZo03M5Z=X&T4;Q!1!}u$V=a!QGkPbsQ zx6k$^+6)|M5ee{mMXu=oiTqfsw>3BQW7n*{3KciDXE%H zQAz-dV=yA`V<=Ms_jR2U> zr<=3L!fYc3g@A*o;XT!b^|oN42l2zEh~8Uifmol2=}fx$fd9}BzAYFz8BZI0ulsk` zN315oKr^%AnLfH~oavJ|u&;5gQ%&D_ZB>&=P8a=VDP1K#S;yF*4%(okr5MyHwA7T@ z;+0zJHG=mm>8I0%_iL}JB7mD6#u=m`8)G(B)Th>0Zv*W}@O-V;R;({0ZN-OE#lI>3<~(gxl4qwFPsbd6waxU^ zJ#+LGr$5UEHfQ0(N&@Up}Zjx}>jea`JVc5PpBU z3ah75VF8p1g~jjr3adv7>z$#((yswsQaewkziN#o$3aPB^{fm2?({TPPld+1t2Oxj zlWVLHo^$k789e{fTzJl#+{umJ&h&g zyjqQQSB1vf))v%PXe@6`gllHgSVZ5>S6O`dH}h21Ya~BkY5nBnXB3oQsk88tqOWtpH)9J0pPN}yBO8^JnZN1$|+=vQ1-YYw|Ig<<>a_J2p>FsWebzWc_ zkC@U&j^iD}KsDnmt)Vn8M~3tuMaA z4gj*!KQgYrCUl2fUbAh%Tm7dvcQUiu4axFp`G{@2ta+2+q8&F8 zYm%kf_u`hrc7Q1N9$RWN=1ZKh0Z(Gagae+8b-u48x=XH4Tgjb^7YKLYU6~VGYm3L3 zk@*p4ijRb2DDS^yiQ#FbqowTYF$%7B1a4XcLhCcOre>YOn);+;x$=}_LHo0)nYkIj z+?-3c7XM!6lr_kdi+}D$WaGgHs7aUbXUM~vSYnu4qBBGp0M3&0r%SHv?5sJ28LJj( z-LID?MJCA7Tw_o1m|;)kfQzyCt#JBUZ?@5!V>muRDW%IOT}lmUcM(&X=j6Je!6;%$ zu{EE$l+tCCE~SS2xlKGfmvZoFU+Y~j+vE3qt;FU1#X85bIB&Oon33MZe|PcUZvOi| z|HTsazZ&;XqSpT#{u6iHfgpbIY-~2>5*-W_>Ke2+M8%1L zXX+YsRVcN%l5asnCh&ERrF)LCj}FHMBzfyO&SR|M5L!%rJA~O zGO9Tcq)YWi%{m)nkGM2XczLv}pwK9}n4Ri9R?~@~oK8Jl%l(bN>p+C}LGl%VN8~B` zG-OmjT*z3J2=|+NC*c=%`QsOP#la1l00J=4`K-+z9}!kOd-rt>nOV^~|95VFOtFPHw;hZng;~>X?kSb7SKW!wA7b4Wc$n$Wj_NTkzdr( zKGk`#4MdWC7>pi5Etv_bONvUw4^#CpRdq#Oz_Xo(j=Ab3 z9G5m{0sCxATRPSELEDR;%&$eF&gK&%xeQB}Ne|X**wof0Q{ds+IHb4$wtrmhH6uvU z-T7?)Kmk@BB6win8Q}3iJ~K2h4#7RpoE^f*o{n=D670Fh-X2ugKmZ7LvY0UZ?`&>A zD37r44}tYxEF*!NZrHJL2172pgG~iQYCf~0+2Y}*g?|WWPgr3WAqSW^`jEJk%r5Ky z{^sniuzycMP@_b!E=C@^ShCt~VH!16AR$b8D|Ss7sI!-dq(BukWX2jYqYc_h1Kgsp zT;i_6p8#F4Qf(L|GH^T=KNQ7w;B#1)jyGcY&E#6s`f^p77!K8AB#$p^JF$3Q?S*Mn zTlsdW-uF&6l^n_<)_pe#FJaq81||7 zlu~i}(Rw~n2u*f!Fi`_jo+vBnySAojuT>aA4NT^)txr6npM=-I0)vT#sxRWpPWD|p z;HoN!h7PZ-fqLr)S1;}VpV(BH`oWc#uG}r_3NoL}wOv-cq~ki&O~*F=1nb`^=7g50 zwsiTC^Hgnc)ur@ATRO_}{GDYX4#0o@c|w>m*LS^!Bkfx6Lq0?t$=r5}hB6djK2jlf zHMY7#+I?0ZrkTv!=g|9LW`}wn%J&$PMKi6B2|;llrypc`cPDTADb5kt0bJc?A9 zhiNZD2s~{hpT9 zog3ajxKS>9bTBhv;K+>XpCX|us*rlnc70K$`L^5p5_j6>c3>mux8R~(YD-#aSIb(p zrQ2AC1~cQXtzqAmRfu%qSbnwBg~+eK1VcaKT}$Y$^9D0}^-W)&Vs3KTWbqtIgdJL5 z(SEe+U45AyD>6e}Z_j7%!#~=l#oFY$Akkx?P{R7kL}59xWW`@*&^=%1Q2b@rO8+$u zvV&@VFe7d|QM|;r=F3mG@>ucpuAcvWBK+;YgJ>bENhJtSAlPI}cHigL^mGTbc%r*S zoI?bd5FLd$MZs2V+mD(VJ08yr8#?!*L#?G`5ge(lRPXQbbuaCu`tDIX*uO8pV@LDX zY)dp~BY2Z^vx#q|*5INSGVa$9yK3m+E?ih^%rrG>!DWp~p?OFN^s1Pqy=C9^x# zXNF}q*}DR-$mWVUB)8cVHqW2c-KANn(&1coTdBmRPSL$)N9MM>NxEafnx_R{p^X)c zwvB1u&GY7U!EILYRnGOIXs(qLebA8WCi?q&wuyG$T$+-bq($MCrr;*kr$|Mc#KC+0 zBsN$-nuMN2(iRXXjBWW0C9T0Xt?H|s2A9HvvdNarzRxv+^w5dp5nr5eOydOcZQW&p z*lSFa$KvFYO8gk#m>Ng^eh4`b%1SKDd}5&qoZTk9Op`=q_vN#@r6dcIlq1jQ`m|ig zx8Enh`izymklX$t%DmFV51VhSF^lhB-$lIC#gF+f|xt$L7Hw zbCNh!JW1un4Dgges!Wa`)fevyrFdPTp-ya#W;sQWYM;deOV-bgQ@!<2EZ;~Xp)14L zp;=sT=mX_q9J?!&L9fH6w)Meb%+eOTDSdqjiG?Mx&P7m@_^<%@fSktM#pUAu> z;%ZTDyP|2aOl|45t9QSCB9FeO3Vn)e#ZpCjjrOg%%NfU;F}>C39&2=u6yz2SKh^g; z*62<(dc8He(;CH~-eWPmD8r%N{dz?Qx2SSv*}zP)cRbaZ9JDxXO}Mx)dL~>|Rts66 z_}klkX^gci8h7<=ME?#WyDnW9Z2k?&2P_$+t-FI<{-)qpeK9K80*2U#0X9Qai?`k` zQ{2A4f8B}pr5GO#7MG3MF8)ey_i$_jF1MlBhBuhX9#)1HX9*0+5_sKU=BN#Gx%7QC zjk~z;ujYsH&$<}qudZwTSX=PEFD7CZDc<`;>`&9dMVk}0$SAY+8TsD0i~tDWs0;3o z#aM0bjb|ou1ZHQCYCWo=?B2M@WzyCP1V8G#akNt*%c7w0V;pxZ8>}-U%W>l6oG~tf zlrv+(nRO;jka?4(x>(oav2O6B&|L$-yL!6E^|X<~+bGmCgb@W0n?}u9sBhlBf_9~_ z)rgG9u#q5aMAl5$NRTt*CcoWG95Xue_7y&@-tLK5H+a})ExeY9nl6BImS- zj~m~H$^%$hBk0>r_U#2d-IMk$C0p%7;$H#aRzj^^Jhd%~#|Mrzp^cEh<~Cyy*D%x| zC?j>6a>;EhDdQ&9a@hy+?K|Qoz;f+73ZGyD#HVFx`Sl8=Ve6+2C1qi{0#wdfAF(LO zVYuQXsb<}@dUd@1rq z8`rp@2cA#%9!qtC@B54bu$=WE1#9|n2+@M4T%zTjc`sTHQx>?g#bKH1c@b0-mZ{!R zSMQ(h^56O+Bv|2arx+}LHK$ZqHB`J{)b7PNqsA~BYx9CBb5Pc^d0oa@%gS~`rt~x( z3NY1sz`0w-%fIa}^hnOOFB^EF$<8le;S60#ZxBF;?GALm5DuM(uB!W=5#OV+|JR3z;UG0WIQuw=1&>ScZ4w4 z12AVDv=haRvRsh~)YZ7_%9c0ty29t-x&lgbyBfE3LRnY$hh6D`uI^{sTGLi9`}A%w z^MF;+Ru(5VLg4NM;FM%bVB9OvqPd=_S*&9++Q=lwFXoypw~ z)*j$_H*nn77W^b9IzhO=3{APjJ*d^VL=S3pS3Gk!ioEa#vq)`o0L*;0BtlGnteGP} zj-EmJ(abiFTbI`r{<~;MZiG|GkN%gH9|tSt$5^HO825&bf^Jz0!m*POx55v&Cmm=rd`VdHFa=h^0 z9n0hI>@$BSX2_4ivZLiJgJL~uEW^53a%Eq{#Y4=Ty*Au>_74Gd z(l!K;=}B+}7ILeS>uWo(SEtu%D5(*!)$^JxCxm9~MnOwFwf zeUE3d{T(yf&NzGRr=P8|{aAJISqjHjHU28w-}KzsZGUR2%J$>c!6#;6B~{?J%Jy&k z*RwnR;eW2O{hI3FGyeS9ZGYuY&Tjj=|96$`BY$vUcEk>zp8V;574o5)_Lokd-SKbx zrz+b=K2$UQ9j`(@RMURUa!zg3R^w#h2tgM6rF{F`2de5j`V@qanH<8Lii**@~8 zn(^QGD&#{o?e|x!U#cAc@@J}qPi;qRQ%!wG`ZVRw%If7qRqgMnR=-p^{&b;A_{6G% z&(iAULsjtERIPrga{N>Ot4jF9tAkIhTKlug_HV3Kzf{@&@QcdD)_{z z)h|_!|F(aq5T=W{)ssUT{QXNs${FZ2xD!%KdHjU6!~|E+#?WDv0Ym?;ZHNqP=cUO z9&%SF6f|i8yVSRQ^$KZHd@uf^gms4(k}q1=ly$3oKFguyQn%Pb%5{u5S#&b4Pe6NiT|6rfRM&e4p*N-sm z0*qS~bevyHU(@;4q@4pGh+_P6#8k3BGlu6oEQo=vdM88yN3rM!-Y;8M8Jnl(fKj;xHi$(cn=S`R=Ejz z-?2wwY=8c|NFzZ!*IU=8f=?6VW4}66RBa7DJyN6JI#QEyiNs3qwg{$>Xbk_2CHQ~z zV|`s3!R3#qelNEm_lZRA|EbS?ELn=FNaoj^JDIDEe9P_WvI3qwlvj{G%? zCv)|mAQ6tj>wf!J%7JG6Us~#aFhk^0EEZ^coVhXlpm00x>AuVayFTN%d`Cg)SnK+l zU=>w*4-!Q}n6UPT!ao{ijRq(||h)Qk&fczd`T#g47m$w*K7pG3{an=QAZpU+(C>%sAteyLya} znSelGjd6XVkE~Qy_t-C6T}rI>RBQ0PsKn++u9*FbjW=(y^|_;KTIr``7bhuues^7yE{OUX-bC$<%kT`!}mHIrTX}fD{VF zj;BWN4=M>ogk$S8x z(Q<$dy$p|QIo-@Zs~5BkZTMMxi2zY~qGjX`_WbnDf3%?Gz{c}BCjWte)cOfH`N@|| z$Wy&FxXNfcQCvt9gRANVv&sP*zchY~BW^Wa8=`Po4xK-?X5j*hmn90A!KWU(c2O-k z9OhJUA+=$Z#zpgM)V4;gu!-?lQo-o;>w=?>mP~dOz6(-qxL>i-gbv(wEp+exRPXF? z5??*NRANb+p*Yd^}4gdpzYZ1yM>)^uC& z;4iswN@;|8n$E3FL0ILbxof_kAdQUVGUHFE+@5p9h1&poZ%@R! zKEUjHzrZx#;tQ{gbwaP2@wzC^+aP$2abLnJL9W)w zvEE?F9iaxp52|q+MJb4!x`V5Yeq7UUy}X~=&~M`MC#b7bG)gme)s?0jn02>`3sU;|jf9@7@+ZLZliQJ)dGAJzwmIrE6-acBQIys@l)`YHwGy{;nsPY+La4 zx0%wlSOL!7JsAFE$2{2@^oKupTjde=vvltO)A<7>!mIb#g)6c%-JfM@f?haU?Gn#$G;8i?vlB$aFf>hu(M>RL>Hcw^ zm7oBE|Kl}tMvG+@jg}J@_ zHWSr~818RYiqE0cW*yl!F-E9%yt%!9Mf*@{i^WCjDARafpy2&5$2r|71e8QhvU&c#f31$v17$AadgvGy<565Puh!*?=;LCNVF!LHUhoP!$T;Ym1JURhcp8()0U-m+K%5+cRbd)hPQ57klxL?h4yo8 zE#tG_SEEsQzc#_VT>&#tfo9+e78Ji;xEJn*cP&Cvw!R%|Y8ddto@zMoh)p0HGz{F) zDgi6Bnivg#tR*Gf)w0`qzi2Aiu*hiuw5G{p4mbIuSDIXCC>GvA$32`y-o!zQbNA{W zUUO8mxLDDQfNx{c2B8iyGIi!cRbT&zRW(UotGW}eu0h;dFdI^1No{@@_TqbIOt7jJ zj8mJx5tSMbv5@4z?aW+g!x<5@$N1_T`^rPy2#K@to{%Ul5t5F~dqSeTL`al}gcPE| z2uaO&LYfQ-$p^4TgftZqQqXYd4$mnVNKUzFo!yowd z!3d%r_!O=xhp2}>#S$2#Z$;kB6n=nBN&_wJvz^yF(Dr@-duoltwIJP^q&!?0oQ|31 z4HIrnlteGQ-E1bu@@6lw*hz-=?}fqw1ieV-{gh6_oCrxHJ?u>KY~sF%b$#%3$x(+| z3I3^f*7bnnNgMR}enxbLM2xkpPITWykEbyq4FcS(3%-87n~K7VwEEE~yGV3^mi_U0 z_DaIi+IK{{E+NN=eQ&Ij|40IJJOpiG;8+}mr4b_)r2iNh(jS|*!_GD)Z5EO6V-05V z59>8)7A*i)XT1pS&QB_%hn5Nyro+OksVR}ck`DtEJ97nJn03!@t+l!@^)@IUiRM{r z5nrxvFit6vahkfjrwoj*V4^b#OWkOzN&C@;IDy~{3N7bq-N|YOH^}PxmOA|+Gq%Kt z9$9a)?#UoXpdBD+%hlZ4`od31sI?naq_#N5waKQoykJ9%=2YJ@vXQ8Geq(=0;A&bN zDxak}*ch?uEp^m#IAOZ73Cj;g{$$OXk7sP~;;hh=cThANUx1e_FUKBonori^Qkw>` z@IF^X>Rh!dFm1hK5zvjyrermKlqoG&)%gN5A~Y`4*V@ySxPF~mc#}AXd@7>B8?7HV zHPDP;w+>Jcni+WB@L@kOH!kpe$7OzOeq1cX-^@$sk%efxtrqGFj{@C-;!0^q#MQ;Y zJX(aN89%VT<7)Rc)76An-*33mL(})iU@n;piw!smbP5}`nY5Ux`r@_4EVWv)=`P+W zVHod*{ktojcd}z?a&ek|#4)bICl`z7npiF?0|y6dkTzes!1&M@C$cgk_eqI=S~5m> ze!ib}T@`*ybmp1MbF!GL>*pv$2srZXT4XS);hJxJhK2uZ-yqY{olvr0|2O&uMaxbU zwOBRBqBI?{sG3gCZTb&h@0va*Y&xl?{a7DynaK;!fPdHYxG2FR=vU_;h>Uw8yD|j* z!aM{yp-@Jw8{WYTTiVrYm|**7eXpHSuj|X`?^oy0-wmD~TvwvMUzkUKB=9lba08Sh zh)nGDkN~}gboVHwm zW2==5T=842T;P*ek_+XuZ1SHQU*&Z}(2!`5^g#a#yyERm+5aY*K%g^#B`1PXqu*stYPyM_F zrqvhU;@y&cmO#V5{38<;NzZF;e7@f4471OYcX)=rz|bAGC9XAlVZO5a6#y_#*@;Od z?Tpf-?A~8S0H*Agd00E@l(J(@rf*8hZo^MI-fS_21glFDy`jPJqh0bG^5J_e9Id|a zn@}1DmNQ9-6s?s`!=k`1cPcem(t3vX;!m?P1GT>$YA;WC|EaWwRFZv?+IPIkhH2k< zqru^W!G+L@>;=gk2Q2{Lp+$kr6{j+~fffZ?(otfj0npMnCBM}MEGV^D0j=P54qDrc z1=Dj(yVF`#cpc{;AkksIFDM=z?TM=lEJ?NzlrjcVy~c!cC0II|N?@6*5)3}_1{!?4 zmzCu*UC9e?t{_{h&6uO}J;+5#Qw-RR7ttZ`LQLM#L<7KO0m4iCtSTfNNpF-OlJ?}= z8eIcIDmgTmGNs7aZ8T%o=2*B(uqt`GSRb;vNa}2|pG-lJ=)5U(-fU~|Z|~D&Sjn1k zLna)IcrAF84h58IAyT^{n^uwlo@-ZRlHIk%pThEydS20<+)!KOlz;ymgRyGIQTfmgTLNyknuK`yratuYSJ~vcbID> zZ@kR0E!mkn;2ycS0_c)NbZg!l zqRns>;D#Ggj}Bqf-}r7%ZA#~bt4P?hZ50oby25>>`Zh3CfDk9{s4Lti-u4zh*CC_2Pijz`{JbEvjuz}{XOwtLMm>ngh7?X|-Te9H?9 zAA@6zGAq&N)(5PN9RB#L zCZ}Dyu85FMiNqdhQLGKQJ3Lxj>a+_hW(b5hVKCrdFc=i%^eWuXAK192>k^Me)tw0I zPPn=gg)Y^-jX!gSYuaNRM6#)*Tp^rRgyUySKatDHOBj_u4BbWoH;Y#i zi)z!tIH4pCeM&*egw$7d*>Djs2p}i1Y==w|$NMw2LuL|RHBD(@mL6>x=w>ZGd$aDR zP$nr8QP{1cEyFDES;*s%!QdS=;UM?#SA472?e%9Wz-aC z!L5&2c^JujwD2B?LVX)%Xshd|`8DeB1Q~R_gP-4bKlQeWpFeazX+w}#;DBMtHivXh zKT@P6`QwDBla(jmFFdc~c5Mdk)MjAu@68rxb8b+~JZGE!bWBa}jdL>7$xjn#FS{MO z*n$G)Y&b^#mYKbGc7VUM~r!P_7Beq^ZCA$yu)FIxZ!f zgcqrf$zXIO;b}-x?RibNb?hRZ;l$#lxcMGkN(&>$;|K7oFEh8F>`~FDd@+(hd?6W8 zi#fr+^=%#fFY|FzNfHZ0oLfb5B5S9+e-S<~S&K}h>F`-6BE#p}=s7vu)-n2W-4u6p z1kw9PY!1ib1JNAVSD2oM9q+%?o`XoHix8)z9go){cwO)_E+2V-3yhH+Yh9Z<(_+=Q}cC2CppP#_uHSx0Zh8_LuN8EG*%rlCdK5}WPXM~!*2 zfR+UTIaq;g;53gmV(_49Q88<|iDxa6LF8xrt?|*4?ewGH8o6U! zl(EMRS?6^O>)njr-Rj@|28T5w4cT*d&n@*E5vR&m%`&{nkQ+wvd=nBPAmTuX zI)mk^MBgV|)gnZ`v-3J;HJ)WeYy^MzWH{C*nJqQV+m6IQBgz>h zRR}jzycYeay;)vl@C|7l?^i4+lkZT)6t_H9a=YeFNl!hKo0$UjBQNC~|Gjg(K5M?4 zMB&E-rOdHE4YQkMW)L{KiA-ijM9I+V)cyyfC1scloNdO{?b|GuB#M99Hrt0mVQ7ZS zb!yh+4%Odb^_2z>O>N$AhG#BS>vosAWkYxunG4Lip_a=kdYHCbvcrVJT&hr*RzbIW zG=%PP=&L1jn77yJ?FPO5q<{N(*Kwb10erLm?^3FYnmc3z$_Mn8-tN(wjea$gQ!1qT zNOO`=p{4z(ZZ9H9AhSEFyst7iqOGK;YO%@DmI886T_SrgmO_R++OlZlr39u(Kah{o zd1&!}Hj>@56gP#X`pI*IKx5a)P{O@w%t+wkecHo-Ki6_w#eJ4>WIS9E>&_&BXp?~O zfPnDJKM2LfaoTEW7l?N0?NPn`kbm3Xbv$Z*g079$CW(gu;+=0~-xO(}oUDqFCPoHU zm@FQHE)PWm8KZSuYz0`mV1lo*fwW*t`xsvllPbG2;H$^^s(pguRNtV<>n3)0|IBE1 zf)M46NKIBKTSW*Y9om}DY_-&Xl0*ymN`78}W&v4pRASFb*7?&w0BtB}` zV*NBlpGpd?yO;;9_q~Ph+u+B5PpVG=B1%o;r<5II*~FAI%$@oan|)_KyOSJh4z&yT zO1K4|+F-h0btZCLL!7-|w+FWGYiZY%O6m-0agcHCV_ZrZp#XKL={q()H>GnlB?a|O z`Oj7nPBPmv%#0&~D{7w9m%ttKZ@TXfx*lPIap*CUg9yG4fUcye=Q-vJHcv>bjU(k_Y- zGB5%pcVR7jL;8BJ5?`NBx0U8Hp4pU*6#LLzuPg`0)T%v5Gg?+IL8p-aQ6$A zW9b#i@t`@g=fh#RS$T`%T)f!Z-5=}x0+=u{Ov)0oL=+9t@19#~H$vk5j(i&JEV4`U zG{ia?N;t?%?0P>`^IEtzu1?6%C~bO2*pBPEN9jv~AufL+wdGf_=?k9{L>kTd*&UU>nxE>@# zteGo9pN|uKrW|j;+4~jPjQ7LircU>a(5KBI$8)>v%&vp;jSK-H0*@;K%n#MZ;@WUV z2P+^STo8#h?x=Ln*d82YFgRDJkZ2H=Hg+_I^Wt2*oasLQcOExcV}eXBX#(bebNm;k;^v(j&C@PeJ{3=gG*_NH6k z)D@N*U8?E5N1ZQONPX=t(eN7`jG@{mh(FH3P^hdq&vSGg7OEK_oude0H*O1 zh9tUxPPATN<}Be{VWY{}Mz@GS8MZfa_e*LEnR`#_UUmLebmo$lj4&A+r~7663F5wc zY-^SYE$zZ&rjZLf!Q`c?b)#xMbvUF|Io@PlxrsUzViLR@zuZb5;@6|o6nD}9l`JkP zL%Ctu76^@|9k8J_iqz&-i^0%HQk&Q4*)PucfR$~kuSpzkfdvr29jpS4NZ2sJf9bYT z>9Zh*AR{)f{P`8+EkqbyXzBQr9q|q6;w9NIr(gw<0D(pbD^UP+VGF;T(N&O0!jTAc z;nu_!a*7li@<3ag!0Y0kZMkX0;yPNFK);;V(IJrEB#^KFYX|cFt{+G@7+v@{ifKPt zzeAv2lB)AhV83v_!38Lxbqy{?HXbfKi+N5PE`Mo9dqcSVNH)#C4_tN&E;EA5x7OfTbr!G#dAmmmz{VALfTp;7@0)Ujv@FrD9v;#;GyO{$hPvkhCmI-oe7A6W> zHk5Vk8z2*_?Z+iY6or~^9LTfp>8d?$tv0?sx90UQUvlIHVU6nSpAv>~&2VDwWHDFD zMxJ^sv5->`KJEb_V}|B5jr1is`Z5zbT`)B9*|2$ljK@os>?9^YD`15A)CO$>Vgulb znUW`lXTtU-H+%=lQPI#d&U@^Avi_qL?Nb}%T$4e%BC7_}Fo7zQ8~)n*n(bbRYSXls z)3w8>iKA|xuLKI}3AT-YlUwsQl2-oeOaGA5Amn(EV*i2Jyv>vBG>V&|~%8ycD$NA1YW3L8jwmn-T0 z;QKbN&s$Mz@L|hg>r#myp`>HSe4%WR`JBa?P^WrR?qnyOc)&O>^iNkuWT%TO}btxtuIjR?e48*H2e=&$xo zw%fyg{blq0*JMC$QTH;_?IGW%`RDp3`0IMiZJ*}3n96U_zrFp9IeW-k6vO zWl>n&-1ZrLy~X~rPIEua)!E0DSX;*Q*5)oLk+QB0+ubV*z<6)eTq0^tYtKek%Y78CKnpqRL!&c$dr4`e&Ugt2j-~r%7GyU3 zb-{nK^fXe7b%h-ZY}4jZ*R6}!>$B;8q(1*Gd-!~P{_~04wf|C|Tk|i;5(u1W9YO?i zs_>7%t#Bt47tNsr5@H`xci*gc_Jyp!2qZcz-{^;KV2alEHhu$ZEdFh#YNTb(56 z!xM-#-_l{M!*rN-TBl8mh7{)cMO@I%Y;;?VFW1SL(M5j1=PC>OLfm+zA-XfZxW zZTX(jib_U~=eFzLTTNEL1qb<&x4)M^@!Yrcs&}Tbv#!t!SM~KtxUA@#;x9g}?W&6_ zDZKQ{vC@74NGERF_~KR*JdJ==-*`B$3u>C|w0^PK^%TA?d8OtwwLmQGxlj%HX5%Kr zLe3S7YhT^w=xPtHHu2_AH@MQIS_O3*cJ1_)wLZ97MicBfN?UOo`&XaauZCM)8?C|e zaeA?A1$BjAV@X!%Lh!zN`SK290~>~8pO8&U%!N%}k}t-ECM0goug1;AF+rnPc_+$+ z1We@HlRycDgr{>)s_EvnWjyRyU}d6tb(*-IcY9{h#euH++9c>x_v?bY4F)iljeC`t z!+q^*rn$}xFY`T-2(rU8L0MH~R){Q4Mw2qZ;o4gD z&dn`qQd+}7#B5Kl2=G$IS^@94K3CC{t1G-~1adAoPq*xy3#!;l8O;{ zx2b(;%c-}yKAayHEZG~Dz@@{@1#af@pl{wTxaJ%h_S?)k>Hmv`3^hV+@8BpqsD_33 zs)U?2A0fL@ecyJIEM^Q4EpB{WMhgbW!fyl0L1Rt96bzdgU@SjM*LgDoT5JH_KYy!L z1aguWy&GycBlzB1tp>AJnVBmP-&^LDmZn#{{}l!%x90zTQW7EIuNE0UFU*1yh5I`H zA7(Xce^&e~HR%il_K=Uff5vW=>s@Bn{7K@RSdpU5y zU_0O^AehGc^a^*%hKU>qD|sPl;rv&k8gdzISb}Bm9E8pfq0B}M7bmeDDfa%H!UxR3 z!uPn~crA)c^<5@@wDxi0;NQGS1HM}WzQ_;w@vgrI>96Dm{M#Q2kl_;jC3WQ%=g!?S z$2Wo7W{w{a$L7u9q3)AU_s>ldlo%pKh`@vllv0zC^V!U14$z&f_Wr#h1Avyf~Df1I)@zJbgf z(Wxtradf-#XgKbC8k+;$0PRk)H?c*P>T}L-t#Os#sPhVk(HGbo>AIA$ATC~_9#MtH zH3S+p-jQ~7*np$0BgPwLWNo_yEi6{FOYrdb%TfDBQC*l$u}(Ob>`QIZk-e|4al{2B zf@T85r~+awA`AyGkL_{*QWvgLm3=;H855 z*b-y}YFjbd+Kdc2A(IRPeM|AsZ90u%XEuMtOdPti$s@Wcg}i7=$!BU{g8jL5ba-QF(!DCU^C3;)`+Dw+;k!8Sf7AX=-IU=J3ik9(iV6un=MI5AZFvI^rYnu2@D(&*nLx$#a0Vy^oBC1Vj7e|8!Xs zgSI|S1@?szTYqW|H@e)0ldU>f+h?ICL?dr^?-1mSBC!pHJB7 z{QT3ri*}sct}5Zv*5DEAzzZVaS=nCKNBNKo+Fg6MjM(-F_l^ej#-O(h z{S=%LA3?I(?^}mH7#|sUhM*&k=OQ-MEuWI@CiT$f`UH#h;;$4xZZP+Er1!p%zyX^{ zw|2DGksMn$6a|;KA>|O)GG;$xt-CgAtqo1Ws3^J4eKGB*XpS`X@!!dh!B%jI?XAt2 zG*J}#g`qT=Nj-Gu()TP*pIEjf!9VMf-06Ym>lh`M84Dfxd+vuDl%E#in@*M(}954wdvwTFIx$6ahnWCJc~Y; zj!Tlm3DT&~Z?(ooXiS|elzKf;ENM{Imu#KWooakpHEM1}OwAuoe#*VkG}kPwnKMsa zo~R0$bR2@>a&o^6=Qbca1#{WcLNvbre_jSPv z*S3)Dv93KE!@BY#f%WCK>X`=X!|ye$@8O?voU@VT@N9RuN}UD>2T-nXnn1C+2&YM4 zi@KR)GiH4P7+ChUN>T})8@Xrzp5K0tC&|M02mYs&wLDH{=6 z7^CAQPslb|SU0I~-Q-`@nBBeYE@VXQ^2O<|^50|p7w}&W3i>Ahoff^K;Uq_*w9d#$ zcZYmVd;sm4b_3MfoVZXyMgoguiZHFrUA^ z?wdcm^2haD37>=^zFPQLOXcu+%C5jVBk8bUHG`3E8#O?n5h;%)>1iq z_FFjpnSoFJeE59AH-DDlV?9^G=b&MxYWS$7a`=4BuE07&@Oj-l`uVVL{%pfXJy*hK zr(vdg_|Q^0e7fxltTO|jt@Gh?fp7jS!^e8AgwJNfOx5sFOXcvn!A@qJ8Ti!K;#Znu z|5#Z4+1Fp{xe`7%8D^@6kLFMgpR4=?&WwJa2cM_yhOM&?pZGlZtTDt_45rNX9hke z;jd5l=Fc*GtmjJj95l>S4Ii~s4xg`C==_<1&*J&~^VZ)lc9|z-P^T z`SWeN;q|P;$9k@W&oV=N)$mbEUmTR8X`fzSKm zwe#R}fp7lo!pHSo37^e|nQGx1iq-s&fCM&L7_e!e~S+Q4T% z{VX%YR}Y^#^z-81oiYB3t(>plzwVnqyZq&PuB4xYA--DpSWD&f^OVKapAq>?+r&*( z`ky!Y=Fd8O=(!R;6NZ^r0UsSAC%D4LC+xT2`ZEKcSlvAMe8M+>mf>SPSHkC@VWw*M zsHJlFe9eOD&k%eP^WgJg-~8Ezk9w|z&rZWk_3)vka`<%r;Ec(ix7F0ngUKPd`r|eJ$YQdai`e8bf@w@UfQ4;qz8MfinW1`SkPcBd-m7)N>_#mKox!htC}P zdGU!eCVzCp^<4e_b>IBil|QcMO86uU@zuh|S}LcXr$){kd}4L;;Iq*;f0p56Jy*hK z!Z1@ceAH4oeD)8|hfmvIWnPN?Rfc254`ui-`%?2j?@Z0c5AgG))I;qj;s@+d+1AX9 zl)RWfciWejq<@@BCwfxv$<%+o{;u{Hx3-@sF1Rc6;?~Sd#Ybu3M1FBt>8>BAuIEe@ zO+_DO>nTg}_0Z?fxhr#`SXYeS#cRj%7B9NwR1v3>Ooo)QeaUT>)`vWbv-TY5;El5P z5?dRjdjAIj$}k}J_$ZX!M{1Wv+Rs=#vP+0MMRfjpmb)_pg(e>!9ekkM4kD6e=Sgm^ zof!z+SqNq2v5DmqciO2zzNvTLQ1u&{az440BhJM04m=Yhj9TL$!;pb2-*^v+B#71S z?N1XOUid}AluL24{4CyRW~s6#$SY)d z%cn24-+VWe%N|}|n|hc#&Vv(Qa&XJcKH0Q>Vd`P-J`ak%tbO*$UrwknGu#?{-xp?Q zpZs{e3Q6}G43xgUj$D-Fa_8Ra*}^+2;AHf%{QnR>y7d!`pDuhFqsc}G`z!+@}9`}VMU<|Jd_V_|TSq_X3RsbW62mg;kFGE}r z50ktsy^NCkE2Nk2ePKSm{Dm*8pqD@Jg(VO{FZYzbE(g(nBzhs^*imDum!lU_Fi#-4 zPDU?(a{Ec><*UB11Pth9voAb-dfB=OE=WDdDKeewa_1Guo2FABF`ZYKvJ)G~R4&tM zO!Zk>YPkcDL6fP65?A*Ix}sBOQ7Ica)_aWe1-#(o(NC#m-YI?NoOki?9VyYWv$u@A zgY1X8tn-$kcmH+`$IdvI!+o8zw;XUUvNN}gJUh(A^arRueapzkoAk_S9=@5qWyn=( zpT6b5?=7f}#Sum0z1=}YJQl0zCNo0NbBq%@F{n;we8%)_x#frTlctr(d?L2t zQtoB9PdG0!!6CqlbvT9lp;T*B&&rsbJ*=NP$InOOu?_F+;jj8xL?Z2h7yJP@1f;4R zb<&?priS!$NMGf%!#$7l?}>)&;RYq8Zqi}qrrv%Ik~I~!a!PKlMlgAIJ@SsL0GLd^ z?RHC?7vv3nq@dR=RNW+Nn|kht%9R)7*LHF=YUKIUgCot#+&j#*KsxO-m3nY>CueUM z0+QaodUM5B_DQ^bBG-PH%c&4EB7tmH2b%&S(pwJKEbl7Ta)f4}XPo?nxTE*hnivFr<~Gn|;FfJ}N;aqedm8_61Zj%0c9w z<3?NU2UYE$(N^Z5t`OkoUiZ~e`|7CwDtk0K|C!77t6IO&Ry!(skACjaS6td~F8`cp z$n0%Ug75MpM1|i7Nz3Tzic)euV8}tc=;RVtl{iUYmXmk^`-1aH$+BaQjuHn7jU|=m zvN;9=!NN#Yx)g*#Nl)swwK5r(nKY$1))qYeITLbE-Y{jBz+uk+hb7Z0;r@@{e}p9< z8}n*X`9P**gOSQwi9Kg>t1zuF<7O}aZm{;d@hG8!&G$oRWWE>3{5hCYntEnhG73ng zKMsoxJX0p*;TSj#*%O*gO7SSQ$5j-;=x6k7 z@&(``ECI1h%ubX?>%c^hK4TdJ|4x$PfLrLU=G5&p*(PP2b9+L_(7*n8G(ji7^yXyt zi(en59!j?M7Em5K^Ozht-g}&-(NyZ8Ytl76g-r-a-mnI$coUD_pgt-s5K|v0fXTUf z#ni_T)v-WKeIWd?U&;&{^opqu^a?t6(oB;{1|ZX)9 zP|K5Me_*Xnp3451oNIp^mHjap*&j!_5(*&Au|M>cw?6{S1p6Z}`$NB!omL9X+aD8V zb0pFD^^t+V+lju$9(s{AkXBOzeT{db+(yU+kgSbx3)ZoPq|~r|WG|(u@ZfM?@*a`H z3)r=bUeQ7wpGzMnvrsWL%50D_3w6{iM=VtE?JU&s&_WHZOIfIgxsk>+y(0q*4=hw? zc%YTXN*1a&E=2{eYun$8bB7@L9;rtWJ$iHxM21F6Uw&UiM zzy`!A5tIzR%%o*p79F)`++ix`)$sz)cKz+`|gE`e8 zskE!|*{BLq6N(%d$LZ>-)Zk%KE58_3nW0K~KP1C-RW6IFu#zF$_1O9Z-iTQg^~}Jy zTo}^>#~M=)cTEla=z@lSX_#tw_G9kIJ@elIZtUzo*0Q-%CJIfg&!b$(0-Ev9(o=y8 z5CJZcBRpZ?DqDfcQ$$V*jApcG^Pw(lLm~m2gaw@hwu_GvQq{xS7o6G#_Fhw zfI-Rt!OK;t@xZt+s)F2v^~MDZQb;|FckGzFG}8me8yiL%bXkHY4E_UYx*w}kUQCB3YUs?2KsC!?1OqbjGQm)VZ6qv`*f>E->=Gz5&3(#v^K zl~dBoKmV5!FwP{sG@VkuV1Gbq&H;?FN4{_|_Y907mxV6Hf??1AGsZAlX=BOYjFo(u zE|)LwcO%~_{{^(Ibwq`5`9}+9PT=#VRpS)*K9nqf8NPq1qWMUy{EzTGX;P-l&nQp2 z+~DM4!9)Jyz_E1dp|071A2mf%#rtWEqm)quPB*DCRZyCDFIC_tA~W!f8bG=-#gEC0 zCdtc_<w-#PeNiK7<*Tr~ttwX{uPc!n8BJ1Ek#NYkb{J&PTshP6iy| z&Pdvt0ckify(zmj3y!D5irND?QDMSo!5vSGGEDmFZ1=$@<=yDJs@ zDJQR`9%l!}o3yV2)iex1NiPi?uWvXYI%*gY7m%(jbRs<)uJoPCHh6;Mlf!dbq{7>2 zAnLGwzsDH=FNR*YZeH# zzw}C#wEgtrD^)7Nr~Smh@w9>ErGaDh2B;Ss4pdUC!DHzu<%^Rkljaqf!lHax`O+w2 z)0JhD+~go9fG%^8FBdCl;!m4`9fNVV0oO`ITFU|*9W&%l)pr|TQK3S zJ4OQn*^56;z3YJJ`+1Z9fglmec2>e-W(_BV#qR zzb-BBKTZFZ$&1W#Byv(RuzNKIj2Mzh${*PZ7N>Om4~xWBQXI{!uj$Ju;at!b+<$|Y znt|(f?9s|@nQt3;?pimp7l`0ROm|XI0=1@Pbw}6r=DwQEuTJE8Bpkz^^|_vHWj~X- z9>FDio6hxUh~dx1T#tlv__Hb3b00s8-1Wwu*%B7L#my1XGai7~8r*~mA#-u1uyydU z{61?t2A*%?Q&dGw=j-{K=)8o#^_?FsUWbGMSLJx4!6WD%ltb}@PN66dSP8NLj!}EN z;=@jJ8}SAt+)>h-+11$-m~Abr(!a9Rl7_L&$n$Y6jS&Uoz2q2|pEuM-=jGtbOq{HIh!1sb@J7fv zGvz4E#H!NGiN`WS&6#1?%GAuU+9NNJC@_8iA-cXsd?)2|toG3qQ#f+`xhF0{&bNzm zUm}O(<^S6JFAd*Uf=8=#MZ@whW-DQBYDlS1Xg=XoU z!X!iOj+?W8Ogl?swzD*5mysS$_2v0Y8NR0GXrQf`e`7fR<_9St^&Y6(+Wvw;$ro2b ziS>K-g>aOw2qnfnXOx8-;gXXN<#~qkeA!UAt#qpd1F-SMl|#Ypfc89Hgt0bN>fE|Q zm)S3qMpjp~bEi#e^B)5qqjSV%ycJ7|^ra>yk%P(js--+Dw>l|k$;7+y?W&3pf(b31W_>=}3Bh@yig zj>a?_#1UlgHA(wa&jIDiw6e)Md&CQ(Ejy%?ZMDj|@qD@^JGueR7)8*WNSVwBk6Ot{@9_(Jhfd@V9SM+X@;ceRsM{&TBH%TN`boKXOx2E% zcrf%-X?Se(;LZzTo$q#4eJ?1ZX568(UwETW`-(^5BJD2X5Sm~dEE;ARv8_({`2Ci0 z(Oo=TX0bPvt|QLhxr48?B7rs{Bc2?{d!=XtqzuYyZ>;kjyv=3z&>q&zo;i{cqrnBf z6c1|KxAQWW>Cy7UmL&ykQ0_;UJvM)jb?aOl8A(uu4R?5m)WmCv1ccXG0t8B_!CF7PI`RoqUvPdVkO5_$5Q;gFW zz(vZ~J=b_T(=D01QQ_IUS^Zen&oNX;OZ#~0EB}ZMf|YEV8-^G&M#0{}ZkD>`p7%QBKkSJz{))mdTG-eX1udE>WN{jgJ zHyd$dPm-lnc8NJWf*@FciDIeh#S4NJy?|6ew$%x zS8mIdddTiFu|UEK)! zCAE*Ct_Aia;t10WnHDR2O2(H4Je&H88NTf^&B|wfuOWaD58s+)pnV@;PP!kOB!4Mys`D$ z*!s)IhR=LD)#rdU-7EsQ&wvG3ha9l3(>U7i%WYq41G>)!bYJg&{fq{r{>qaW$G7OS z*5Jn|LBpyl*yZaLG&y7g8mbr&>mv^=ZX=uwfd$b{=Q8&ju%>g_y@Oji>A(T&{@nK4 zZEW}3*zWJ$ubi;ml;t--+;%4ES&H|`w}gx60;t^cD8 ziTnISTaj>?oZDb#YiscN^45?n`1pjRvIbeRG^MuuvymKEC`_j|Kg~0GH$_5k39Z@O zmh0)qhbJk#=CF<7Fj^VbTG4*^b8lN;(;-Qpx0>*6V zyG=yFmiz55va1ebA8w9p?$Z(Y$hzv+xmoW&zBN42b6^pKg&U}_+idy&xYqDQ&%k*aYIXvDu#wcW^GIrq zk<>oQk@F<nB zx6hsk9qGD^)ZIyfp2F-1edjZ+!PltVv7 zODs9Ka%t;tF0Sy%+j^*}ce4K3R64^S9FG169m)IHi~|hM*;6-6sRnOOmg|8kN&gIpGikj>AD zeC9qDXJ$M14`zmBw`fjo0E;sBhZEFfww3?bB)lBdTsscAxgJ%??(&kc@}>@B$>rBx z0r_rS*Jn0aYjDy3bdE+AS6^6;;QOqkN&7(-h#2>qxJL$CQ};sWu03}OL0nnR-Osse z>!u!2osnaMYtCh3SUzo5HYG zzb5Vor^K-8?H&U5&+~#c41KJ+tu(H57PLA-Jc_T8x2rqL--2TI7Ec%J`TkVzF4~b8 z=zOF16xUcdfb|s)|^RmP$Y9RDAcTSs5TrPkl`m6vVW}{rhn* z3oh&b>blmx?N{=0UGRs0>}hFI_rpxu3V4!lGPHG_2zim7(i!@>PNcjjGggq%SZFg9 z<_4eP*#`d>Klq(xgWn013d~Ne9KJdAZsYvl{nvwQzO>Z$^NGx1HT;0@$N$_@d?N)` zTW|O1Eq|zYGI;Z`gD5&=KD_zPz1@S&;J~=D0*q=nf+=kYj7!Y41dLkS(7Ua1ByXHZ zbztlh7~6sy|Hy$6+Z!hu!7P#(8u8Inf>Cdo_jQ>~n$+RKgW8?ba+w?WSZvm72ZNtD z>1-3@E5BE{o8a>AYl9V!``c`&2(VdeA?+WN^!6FlTcE?=Ywk& zHr=>maXRED8X8zms22fnFWhqzqDT2DU^ z6)gyhz8MvrCJ}_@eYBzQ=)MAvz*t-#YX*4|~ng zlLSsv+FEGX_C*)@qLuG_Ls$!UmesnkRCICpVX5d6U$moC^bTLtUn;uP7mb&S-sy{C z?}~bSmoHjcDr)vcD@#SoebJ_GMH70jFWS97Dtce|;lZfra$hulC@Q)lY-=PcdcQBa zZ8R$SXA-PB9Cg#G zJAPS2%3L=XmfrTBsB}T8w10V2dQPdd^?ea(#!DmHad|XeoZsPim%l$MCE6`4-SL5_ zR2GY$Tl#}hDaLGAy6rF%q1sm1e9YH$#AJRGpu!_qS7oL5#F%E?;~oL?$k z{&P_a#L9#%s5jp(S6hXpt);qeD3#t;D#bDg>uxKRHkC?umrCDMDjhDB;vx)Nm@1W` zw8PT$&-;-L952JB;NT_L+e&y79DM29%SuaP@}g2{`kJWjvQp{tQt8E|($-SxC8g5a zN~P~8m2NAQURo;MT`GNNsdTth`mR#xRH?MNRGQ94<6T}VUHM2P$=_Ql-PRwKzOPie zbTBIA#xvk++|vKusPu|b>5WID()X82TmLR9{pnKa^5aqI2TG+=K~#EWsr1HwiAq4z&z{jPzn7eNzl54PD9^4>+Hd%e5DvG4-I zgwOPjtGgyoaQC={VfhU#t|-&OoZVtJm(vY|d03dfR_nEeZ|hrL6q;OIKTBg7)^-|c z%*7sI@w+%JPNFHq%OB8U1rl9&M__n^oVmn*&Ga1D#7fFM?LL(0L=5jgQB5xRNsZdc zLGJeY9R^`90&Un8n80Y%8(we=)FF^ujfF=JwVfBnOEI7Zd6yZ}Or7=W!>cUFjBXWb zMWZ$>&W-C-K!7*ycQkflnX+SmLcYWVmZ%^IZ0coJIm}8FsyAyH?=8z zgDy%-Q_~|`E$m!|QyXV$-v)~IVgj4ny|55y!BF4(@lN5<^+9nOub$0yG$D{{yc3Lf zKTX(p$HBhFd!3CJ!%WdTVY~;Hj?ss%Z>yk>H-clzPO!(86uKR$Oxi>l3bX-ur$S`w zqB7PThHUm1rU*LG2|OU_Z#Oh#a!T)7TN*hXv#%8)wC1Uhk{)@1iIHZ z*iM&rXg(=QV$&6$*rJlt$K*|;txK0^+noxHJp^_#E)za-)@eO&@9KHSz*IZ6`S-1K z%846K_76g)iq?8rYLR#fsRf?w>UTU=E;9&HI*o=5v|h%{xQ2)|b}|qUq_*5(%rjM* zt*r<1nI&9L8D3HPhxf|=7F|0GJm&7-vJ}=mtX(W7?8DGw8QknXE&hz(p~u6^9=bxP zMXoK`CEeKhv$%}hWsJc#+qooA4=Dw01MHbxa$E7xobmNeen$PJw)`F}Tslx*ahzdE zs_zalxTvHtuj3DgIrCz8+tt&(%gC2S88RoWvoMW4g8$d}i1C z^?@Bc-e-dOaL85=vt+Xo^8=pIJuwT-WyGv!JJsjvb6C|8;b>eGC{_-o#v{1W(#=B= zFNJ-L!ouIfM{c~0%wjs8RdVh3moe4pj3Z*gh^Z#y?f0MFI40dVI5Pvkj}jpwIec7> z2M^DEg6C%_C=hV^G8p=%Jc7bd6Bt785>?UDy~jlEmO0oPV$aa9x3i~vXC?NAO4ySx zZ4UPK<}*7z_IBj6do9joD1<0+eMdv=?KlllbTq8b9-qVB(YRc>(z^4oH&dx?k2Ep;u8hwTG+q5c;$@*^YEkyx-g z8H^CdLG=9Gh%r7}gg)ZLV@H-zL;{?fdlgD^8e7|mN@utr2z0x>NrgP)EOSi&8JH%bmmM$TO%f82AbM}47l!JOsqoGoLTaKxrX%l3akr=<;Vsqoh0!(fz zGQ&UJ{KMh(_UW9r4LgP zb{63OE(&>F1zb#CEIYOQ9+P4(m*4+p7xO_MC7JCsyYUOUCoolIncSdoG!!woFjmC= zUiO7+ypx*6^V#24!xFkmJs|7Y>*NYCN`$eQQ{`R_Ep-2X_Pz%`uBys^+9WWv>CRMB zj9Q^;l`du1y7&hLcFUhZu#B4ohNTd&B9>SXy3lq}T1icd4b#!+3YMkoW)+o1T%uc{ zXk8|?La2eALWER;OfkY8Ch92B1_<=`{hoX8dvE5wm!v>`%g`E)XK-u-v(J?DGQ zJ@>wQ;aFhzF&wb6${d?4Gxnr2Bj+3oHkqI=KH#8~33KJPA^)=4FyvqeqATMWjv<6F zEQTPmLDe6@=|eBiaKOonZKMYdU=qw!G#oJ!%C|F^_w5ft9*QNS9~JU|V>>V@9)O!? zQR#WtpBD;biEqrsf{)Rq}f8y{VCj@jDBh?dzS541x>E0*~m zQ4qdsZyfF)%FTf25LgtrmwE!!FS8A-G_bAxf|xjqWJF@@cVTb%?${T0qi1Zqo)bkIk*0CAy-{UW834``j?pu} zvA*x>C((g0?r>W>kn;p{} zCeBqn&4&)TlgycHVKU*FuOKkMN#B6XGx`vkqs84*!qjVm}Oj4)bz5{9p@9IsG_!$QVm_EG6T1@4~u{xS2Y1 ztQ;p|*Z58Z7LQDN%(1l-;rL;Qh0u9ANIwjLB}_yoqEIHV#NiP)uq3l-z`xUiT`#Kz z1A27f31-Ll!XOYPJ$wg0I zD?JsI&++uPr1e+Fq}zFfDwI~QAb@2@fr)u#-flLN?7@)&eNE~-x#=q^5z&5}nYDk9 zs6#(H141L}U`7x6hz`}GhghCD`{Ly+?{RGaqlb8|Aiwnc#5BfDkBFhxnEr{|$lAns_R1z#Gl0IBFParKM=Hme zFKU$NHxXv>oG24Oi9Xpg;Gl%kBQMcq4@$hUJp%?M7*m(pbVmRsOl_4Y0kiOGpaenQ z*)sr?7^K&vQNqU65sWvh{5Z@VJIbqQ>Ly~}ccE;oOn5`$$d9<37bS9n5)-lSIc?u_ zf)cyL99a9VQDT57@d7rzdgsKz2N-EYEo-r%2|>HMDl9nTcPhGYC)`3%YOxZI-*r{H z?StL4sgVdoF|#2m-<0!`tKiN2G5p2v@f{>NL*Mv|*9(4B_={*U^rc>({BvM`jt58K z{qRCPP7lJ#0Wa-;NX{5StYrW_D1MWUr<-UlPV$kx8xkoQV_QmPBoli#jQPg-3==AW zE}}IOjI5vpygjCOR$%9Zan>DVAJMB;2HCkVFFqO9O5t}p`$p_q0FIBadNk%fmr7LQ zz7gFj^cEP=+jqt+BEYQ$NMH$oedq|K0}^88^&v%ASm9-*46X#~m(!bI zzHx+u`P$=3(6$*OLBEaS=&q{O15AVWHe9f5!if+sHOSx_C!4*N(tr|PLJ4`(LUw&JP=or7yaj+_;aEc4+uw72 z;e*KRdc-2%3&xP|cZfm7#D|N#;uhe$HmDG4?}P~cfLFj@%HTD{46l8N%H3nIs03RP zZ;Z{*{)a?Fa6}4p&j=mO40b4Cgy5P9-f_MYmn7)$nS4!CR%pz6TG>$A4JW|p5hIU- zkjJg)JH41DM0TgGWXv620g5m!2F1cwG^W;IX5-BC;g@m47PJO4xw5XFkk$+u(>g;OaKayD6~iblqWKY` zIg-TchX}v%HK;z6cT7|4V-=ORW3~E-s)@mYqUe4Q>7g1?5v|ioHOk5RrpO01vThEF zmWj1iC2At)y--8-b)C8jQ`CD!j`b{4tkAtsGp$q5r$%f`+k=xJYOlie0`WcjU~@2| z8ZF`wejKFE_w{NQG6nY8ETl#1UI+s_irprh@WTu}15FvtY>3MbCA;EW2l(La(et8x zQ}$@e9!=ODz2DlG3EHDWZTfNT(c`ZLdvvwj@-}6UrtHz=*rO3^SLk=it`t3k9M2wQ zZN3TFqc2a?9$|kcOb(_*@pkUXgbkuSiozW{K85?)V6EVB6%T=}5-abajv8u(aT*CT zPBy-JQ1hkp`rHjh$_7}c=1a1(4Q|`ie91pwI?CFc3EHRq+Ukg-H}-t#f!Bh4>hGmS zOxdR?`!qTBNm)B{koKv|=9`dx`rNB#pJ2DdKEY~X7HaJisA8Wuw<@1Jy}I`4hYw8I zC(KEw;&~H~=lz-6r{nIOvQJa-yvd8_y~ga*Ic@83B2X<}6ucGTxxzQ_fe1L}Q+Uf( zNAQxh$9G>j-wE&WS#6C8-(@yTH{Xhv6<6pStH)2fxXAaXQBa-Ea_mFGw?8yD57&dG>CLomU;?d~BJ`H=+61-%NBqhRZghSiQOuX96H<2!oTtpH!W* zI+fWl+gh~G7T0Q1h}{+vS6qnQ7EB#Ke&>~k;8e>Cis!eji$_-Tdt>qMZHZz&S@1&c z#n=fewi<6tr&lBEY8W^g(8{N!_4i7xzr`kvce^(3;O*NpqRmtGZOXn)*uFh&?bQVB z+g&#Oxb`jcTCi^|+o$Z?lzp2#`*y3fQwM3^R@!_MvTr9Jgnf&1e@5L^f9dScKv;3l zldxOSAS-u9@k5T4t6i9k?%9W_-a_sw+zopth7X$xY0LIJnU-l;?2bnk2JI>|lQMTZ zhk1W*jQv->{e?&0O>LdBUsLvL!uHGApD{uE<;>^CwO`+TE!eMHzc*#SrtH_`*{>dJ zhYr$y>H91uy1($EiQ2EWq0?p0#wbn{H^-73i6f+|AIQGQ)8v=d+$u-m&*mHdwb(Dq zWZV1HV_+FnXDwQ=LJ{Vk0Y&Xu9h?WmnLuu ze>~Zb6a0JDtl&}CdGFERpP5aPLW>i~G#fXIo#Z9NlX)E2o#bNj9@vfdLoAK3YQ+$@GGl@Ez zlc>`)C9CgINFn2eDK>M?_6o|mb4H$!(b$cl(QPZ9S5~&>EH4L<&#s-%=5JRE&*W)s z(Z?^yGA%xu*_eQKpvZV~JIY4OW+!t@jSn14UdJ0A^vwe5muFNS7ydH*jURSR`5RN~ zp9l3mgT9Yx;_ovYB`4Qwpd5RD&Wn1h_y2A@__+U=@;9dZjmh&j>gC8atv&~{e>5*g zgH6=m_`Xg({`(BFe^izt`DTuOhfeRgIX*RV6%P0wSx7fzWTAdJz2Zf>;=JM!*q*bH zXA1G2Ja?tiu8VqK-+LMM=}osy*{3P{bWrx`&wPK*mak9Qrz!h1dG_fwwm--JzBl5q zT!RdHwL}?9Y__IVk({p@V#X;s3Gsz3aD5*`F!+94eSe^KdlXH8I((% zxX@XfuAb4(yGe0DDQb zSOD9H0w%ltxGvK+TiPm3iKCMdaYh^0G?YD+zHlGTu@5cBxcjpBI=9!55*@Ga&AgT0 zwiG`iS-ST{9LCsJtZdfcnmOf7V2;+}>mr&B;fb^21uE&PTLTu&+G;o?_YKAWVu zK*0@VPjy+&!#Vb$&cf0*1=PBUb>RaS<`zF9Sum0wUNsjr;KJJk4&&@ZXYqBCgMz4K z12mS04}AfzzPc1abNAxm-q>}APSYy}l(F)=Nk4O%R4wY{EFVyQa7a$xh-1&7T#@Ip>~?&?GQ~tZ|s6@2KI)&E0=n{)UIqa^Vh_?Wg;bv*+1hHP}WhN z4lp3+U3byf`u!oIE?k857rbm;{cexQNI#b^)ciNEQSN>!qW-EpgDc7b>GwRPUV4`; z|3aJ$dF%t~@?$C&d}KaT?=epHwpXuhSPjb(J-+tv*mYSn#N0|4@t6Q4sGfd&^8vPoS_^m<&4)KC%h?6dP&y&oHQ?nw)Bkeu2_u zuNLx(wf(=BI_U+RIfrH9)HK^ewnVJ|)^=EqFgUymvU)w)Exy;1aeZNR+}i^v>b~k3 zq&USn6eEsL{AHy$>iKp3Ic}CZ_!n%iFiAIu`ZC*TGmo0$scrhMOmcza3Tky~*@xxL zP6Bezu%)}DctqfIq0)*`>$HpG$oK1=W*Bd4w5V&=LrwpSFPq{x%i?KLONi*}axk#g zff^~gZPqRo&#}UJT4k*<8EkW|I^8x$>f(_>!bsihh+dQTgR}k4xV9!lVpph z*`5e52aL$&Xwz`mUr}G}tLv*H1&6@NF@-}5lM16zkCT+5IL-pMPTwqRceS>m(6&pf z<44F(&CR8?Gmba6tD_T>wU^e-o>_%0-*;b(?%)4=j6Dv{OX04ZR9s4g05qy^$}J9Y z_nb1jWlr#{!NoIk8#_<(-61FW?!XOOa+2>-Ik;>G$}|V_{r*cPP?JsbQZRjxGrZv} zW-6Of4`Jc)As)=PJDuDn2lG9Q(-$7*!F)eUC$_-_hWCr>iI83niQHvR6WcAPiNTxi zvj;Z!;Rs24q-vFX#dN^A5=mcigk$x3Z3#b{Pzk-};98ze$I~NG!mg@BFOE~y$7og@ zxr(D**$$}#)$8-fx+GA8BQ7!Bz}xlPog%?1_`pGA%u}PUPbw?7${f|%i+juLv9P`R ze6a1#!F*t30!3_3r?%T7w(BB#tIXA2eQ2P5<{UAG(>U1@dnO@S$H9EPa;*wZB<|uF zzdV>vrZwi2Fsm8uXV1b>a~NPhy#7j1fndo3DG^ zO{ZVcr+z&X?S8VpD%EBANW*|?4Z9yOKC9#&H|QK#$-@J4j@sGuRKc+HQIj4JXp`e> zaO$cY)Qa=kx=n>IW6z&;qI_$gEKFk_F zzRN@Hzj*MShK0wnx%h48h~ck%s4`hFp2_+A}+|Eb(M@#^CH?9Eg7K85cR{sQh#;rlDc_al!8 z!gt3gr3gZk<-5bFy|jA9D|RHCpCKs3ojY$|f&ciu&rjjY6u$f~;mZbj(c;g{f4t|7 zW8+Ji^A`{scqP6gR$t2TrLJP4TIZjr#{Co3(O$-DwRIclimp9=* z1n2*oY;oS$`S<5gg3XVrqsMozt=8F6wV&KAcLD`eE7@%Li}6#b-{#lN9xH$OJE!9R zoDg#VRb4Fe7^2cRZyixHfL*e-QT^z%29*%)$lLJqfZXfB)BbTy4lcUhl)x<($@;c^ zRqe_Cwsrl}R@LEi`l_SxS+#2Mu@B**G*vta{qvGOh+VBh#0D?AERWrplV|VnJlj(7 z?6B?Z8{C$rbS1S2Q?;$@t7avAQC8AdYbqI%N)G5t6BIAZbSoJuvJ(63*otRPB}1rW zAa+*@QFOCOY&p&yM9x9n&W7M;H^O7mnqedw>3%-SOWvw-@&&i6J;&d}RXzApwFj(~ zkPH7)B_udDyKv{sp4grD%grhS0K3?oJMkPdi zPNfokzrdReH7OY%4HCPHmo`9+`9nr!38J!Zm%Bx$RBA>{oH67uFhBhz-2*ZU8n?IOHXAN-jCW~_xxL-FFdTOj#Wp?$^~4z9y?k~R zF8aBMgo?{=_4uuro=(g~M{`l4PJl}tuA{A(^pBK9sR7h6)Sw={ z!qhRaAD1uY+t%e_Ueh+GUbuxjire~N0=1QqdyZ(T#lo3emC*c>xm5{P$lMnMUu$MU zE)LZA!_tDL6l z`;^&axd(`Mkm;-ba3#B0w}dM?GbtA!Cq|*|XtH_n-(1ILuc(%Tu+62NytEuw{S7(h zSJzpUQsw+Qmwr}Uu+04M5Ju#J<&wE7@bk373Eb=iHwP{YjPnqU^Bl)G%lN-1{Cee& z%ltyw<#$XZ2Fyj{oHt;YPhpEyAB{vo@s%rU`O%9wZ^q`dAv+y#rlLTy}`ZcpWGZMfH!4iBr<7nYUQ zKdCP)!$n^&|H3l*aa-ZX$)$(5whXtr#x~aQ5^LUE2W@d~$A#KxaYO(f_o`8Wt+Ple zKx?(DS0&%e?q3~3B{-*VXu?+m^Nvl3g6<0pJ7+G|k;G;K<19|B9cZ^skL$m6J8e!j>f{QEFG;xt z8v^}CnHt{*GpRw~`#^*G2i;9trrXvH9f)ms2lAO72LU(`wFT*cfd-c3R_!6tUAZMY z0PfYR0{6Un+quFSNI?vR9r7TyzF*OY*tn$83ppD?bGrBw07M7B@m-G%^cCNYZwa|KxK0EjV5@)pg!VG&fwZTvzYER< z%t*h)Ljw5_fZp$`>IBXI{VvJy8XZ&UIn;mq;m?ZXqtH^01n zaha93DTK2~{{Jn){kwNsEne#+t!TE~0FEN=ciXOB)wUx7gZDg8I+uOf$GZ7kCY3hf z%b3l_E8sn*`Aizre9%43AAFUYA8$|fp!xZ-=5x(envXAIHoqS4jF{##X;AY)_cTBM zDmTBrJ+%v(Ff-9RGto1X@6Y5AZ=|dCX#~ri7lTAU7l){4T`cnhyyPWnh`nMRvIy>| zDsTzk_4{-^@;*H`G-MJA(}Uhd)wI+YPxy>jV@lMw<*U#sZR>VTTQv`#(_GOaf-@D}ACye;Fy5rj z@;rnr<=uz%P3nD~hZv~=Eac8i4$e&GXC?=*Iim1+v;(yt;7cgLjB+!IIcX~wk})Ep36pU&t+?E&-HtIZiqd1ph-2@D%f*63S*wU&v~MIP9Db1!#8>! zvghPsy?HqLm>rGoyuauAZO;v{=MFTeS+*?poEbO$9! z59`gtyFCy6J=f2k>o+~ugHiAIZVo}m^rHSgM4t3ZLx6h#G~(CXcaj>Z+HE$V7@V%! zi7!<>FdZ}(vKPgRveK_T8jI73eyruk?(B)(VO~f=*@%euLRJMeV6X6H5AJKR#$#fp zL3Y0gOnXd&z$;8$52lr!|$-HfQ1)Uxwc)bRTlD&+*zV8LhPIUkT_!h9icMw#_#Stj1mOF#kJ@Z_bFUKLAMrf&qm&QdpSH<;`2K+N zBmm#LJP&>N{?DF=ew2Du@V)ei?Se{tf5dqbfbVyE9{TWotLLG==Y077U7Os8@Bi#P z3BdO?o`*hsU+Q`2@3|>_pThTp#CQLGmZ!Y<7_k5C-m>R@{Qp+jb3guHSN7bG|I5ps z`|f*^3U>Clts_t)Na5>cKqSswL?AJLtW!g-{7JClS8fdP_K5VZ}d<) z#!$QWc}H`tGj4D7jN3Yg`Zf>svkvv`9_qCYb-st%>QLX|p{{qR@AObV=TMLGP}>~p z0uObAL;Xt+b)!Q)+C#n0p)T}LKkrZ%xzyG#IMjE$)Q&GY)W315ogEJKSeM%MC5MX8 zh@(SacBt=lskwi4sMuj<)8@b8P~Y!TOE);w<6LUws}A)8E;YWzp?=V%&b!H>9`8~c z{@tOT;8It9!=aw&QairsQ2*AYc75BSBBnqtY7zYF@PUy~E5S&JJ}?rh4~&HB10$jO zz(}Y*FcPW{jD+d~Bcb}hNT@zA5~>f3gz5t$q58l`s6H?fst=5W>H{O8`oKu2J}?rh z4~&HB10$jOz(}Y*FcPW{jD+d~Bcb}hNT@zA5~>f3gz5t$q58l`s6H?fst=5W>H{O8 z`oKu2J}?rh4~&HB10$jOz=+fa9~hCk%m+rKuJnNssjWURBDKQ@Mx=K7z=+f?9~hCE z^??zoxf>lIFknP#-i0UwMx>Tph%#U#D}2|EgJ*t;pKb)OYND@Ac1V^jXxWUS9d&%a}g088%10dzfZlsnuH##zhJWw z3G1UIWStzRcGQxvU9#Y7y!v|nMid7*`1{oLQUrn-Sj7=ShZKR}Eh-Vh_4u5f*wKj8 zi9vj=o?rPj?^5;G1F5-qgI`y&ckX&g-|Hswl+xo;ZPt0rD$Uv3+)*ugce$xNd9yCH zEU&bDZ}at0$-Bc%<;lCgQi4`2x- z)5XPJJ07}ovEbzlM>VQJte4!#_~_26*k}*DPMW~&4zNNrVvd~PT}L`r+IpIS^8$1>ck4NN&QZnIrgra%RW9gzUD2g z>s)-pk*D!Bv9g+rtMHQrUMR{oi;d(xb}@T=EKilq7fTznl=6qzc?kjs82ns~^Z?#X4rpU-U>m{Rg@U%hZOrL5+Eig}?9gp= zld)wTY$HCP+H7M^xAB))QzJj<58aRR@XPJT*YTG-f}4#nXo`%{SY4Vep6%v$Q-?LX zv-sxVagaQ%A4;dXY)&J zK0api`0eu&UAp zOOv3T+YRmE;FlYR;UcXYwb+-QEDrC*Wv^fn_PV76J1ifS>wGJwsjbhlfphKagM6QQ zjPwz8nLm9v|I^e1`^V?sCYe0`5y5FG;UkFuKLqd}njZZ7(}(kq@&D5}{7+N2*(8(4 zKVnraC42<&|N8*`L(_wQfBJC#G5-2=$#D6vR=3$ClgB?M<1Hn81o2-A;6F4y`1hv| z=f6fhAm<#9q5l|vn`H9%M*y;=gpVNpe;2@iXnOGPPan>Im3lznVhsKx>NcBX^7u!n zwWWlQApYf`(hB?wO%MM4>BISl{tH};!T)r1n@uu#{3EE`Qo=_N|GxxA z{1*fG4^0pL{prK`hyDv(jLpAIGI{)CNu;HOk0Ac#{Ll*h4^0pL{prK`hx`j%jKM$j z-zJ$n{;~MeQo=_N|Am0@4^0pL{prW#U*KX4{vrQ1$>i~mWv-SIK7#mH0sM!i2mk)` z;rzq@5x5wGf7pMUWb*jOf?i7rA3^*-9l(ERdhqX0AI|?_>H&d^vH7=2CXatCUAC0) z5ybyf0sM!i2mk)`;rs*t1un+mANJ2CnLPfnNZV4vM-cyVzG(&ig{BAp{`BGeL;eLW z#^&E9nLPfn9NkjFM-cym0plN<9{l^$hx3o|7q}RMf9StWGI{)C;k~7Vk0Abk6~KRJ zdhqX0AI?9mo(DdNnpFW&_;Ge+782n@WZIa33 zADby!O85xke_sIqq3OZDKYcj=wdw(Zi!t~I{@Emx$3M1>w3P4>#D6}3|IqZ{-=995 zf9Su!#Tfk0Qn%S8lgB?c$h4I35ybx!0sM!i2mk)`;rv7X1un+mALDP6OdkK(3e-}< zM-czN4B$UBJ^1&h59c4_FK{si|G+<+Wb*jOrl*z?K7#m{cfcy_e`tE}?@u4jKlESV zVr>3xlF8#A+q+sy_z2=(UI44$KQuk~_ool%AM!77F$Vw8f170T_{T=JmJ&XK_?MT} zD)$K+q&VhsKv|2E0w@sBNgEhT&e@&Ahe{SQqK{{890`G@`sT#Ug#@Xsch zJpQjC|M&>ve{TT)q3OZDKYcj=@c#rZ#^&E9nLPfn4YQ?$k0Ac#9j*%b4^0pL{prK` z$M_3ejKM$rKbvIo_{WCRmJ&XK_?OqfD)!}-Vf3tWuB{|t4TO)`1>V{2_o z2_HfH%gbC9{D-Co|Nivh{LfSm2waT8KgQoCnLPfniMXYNk0Abk9-#lB>A}B0eK`Mz zss{uv#^4|LXOm1G|JW|wQo=_N|9FYrxBeZP9{l^$hw~5p7q}RM|3lPmHp%4ikB#9i zC42<&|8M~Rq3OZDKYcj=kbi-TG5E*$+a#06KeoWPl<*P6|3d-%ho%Sr{`BGeWBdg! z#^4|LXOm1G|Jdx`Qo=_N|9b-X4^0pL{prK`hyDv(jLpAIGI{)OApiIX;y)L_e`tE} z?@u4jKjdHFVhsMF|2E0w@sAfcT1xl`;{SgF_zz7F{{894BFW^_OhxiO(*+#CU*OTtFo=>+Mv`4rh@hy# z3zbdqN@rZ8lV=|l9@gnV>BWgkjUxR`A7qb27O17!3?@GDblEfx7kIqr^ZWYWWDx2IDq zWW02*k6667n}Nx+c{K)DU)7H1Xn*3^AZeIB*SrJe*}t31zDn z;prplc7J+l?`x$$dPm0Zk33!{ZRx^CK!5b!>+g^7^bxhypZ+z~AEW!n?~f8*q;1LK zBcMNa{M6qc;pro4vp@Z7sy{B9Kz~H=vT#cd?-2*|$L+iP{Slr%qSpG;zozz~G# zk2qeFZpoul0{Ua?PyGE6o*w?MKmBW}KYIT-et*ov3*s#$bV@*fY~JbbkMQ&n)$C9I zn(B|O6X=gccs0Hyf{%dySljLIkMQ&nb*4Z4YpOqvnLvLm#-RW$aeM^y$7NZ6e}t!x zs1y9@UsL_Db$EPzX~1y^E%WdZ&>zkB`1>O~eMBAOPyd?gj}s;!AIoqMM9U(41oX$5 z|LyOO@bnQi*Ps41)gPNDARjAn1V+nZd<68z2|xDtM|k>(s`aOr{$Pk9x`vLpjysGN zXYe~6>avK7_3tr3P1H^-JzidC6^pe;j)S)N>m;6^P|X9N_-nd$)~`4~W~%qjov$vI zuTeKpVJ7vcf8yo+y<6U?;pH`=K(qm`pDwK#z!VQH#LqL(z@@YDGUYoLw|$ZJVSFr| z)o*B(T_Y`&`3wds+MpUu?Plts8OK2hO1-4nykHn*ayrti&wD7Fh`Ic>4ON!MqSV)& zQqZ_2^(*_cghI`W$%*0Eb@!SHw9NNVAsQgH+8E5=F}a!2kF0sO?hAXQ01g@;-}dK8 z)w&<-?~|j&6;9{L98=zvypUC#%VQ3ZdG<7&=VbI}KoXI*#nrl=laM|j4f}rf$!rKt z;Dy-5u6xWd1zye6ww$RClrgnXw^4-Ia3tR?JM!b?XkjBtEoVofK+Q??-BQeR$L1>} zZ7_o&i4CXDY~04L&??B&i$-jOS4=3){9X5Re46faDFP?jvbz?e&z*6w+_ED{)D6?e zvgmoUh*er@iP|PO@~lTF5_{K4)oVV9A=NcZkG*Sgbj{!4py_R`%pEt5kS-oAi&uHM%wfN4S(&Cr_!2vIDUf!^RhMsoWTYAb9xc- z2JToKifYEVETx29h$ssa&c@)#2(r^5j!b9sPP5%^wBH^7I$auKGH5h1qEeEmRirsm zMk3XSL@P~++6Hy;3r2X@R0e;RChCE_gkXXRFQCLByf|d2Nfn;=${CvKBxTlmDcfYF zSe_>WQ)^l-@&YjcbAqV2>%z8|B;8(~Q;52$_9W`|QVKvk8JX)E)Hd4)x4jZmGwuC^ zky5tz12(Dj>bUK_ZItYJ+6(-DrM-KnM41rbb6abA*Vkq2?W5c#pubT6EA6fK`Rg~m z6HS7sUkVPmCGTIZ6IG%V-K4o&4^RJ+G$O8N_=U??o4*oVL1>r1s5=<(8o{KPkN2$K99uJ}neL=I@Fo}WpT zn&f9MiowssAZ|41Z&WK~*vLB*o}0kqcoN^1Ch@HqK7wxbZ1#*B&tw7~)#V(w!PHBW zC6oZ0a&DsEGB;aJ5Ua?jd>PSjopHeS+iW>$tRmx(FC#QVXT-tnrllB>!t0^>IEm@l z2h_?hO^;Lp(3E^==^37Yd_+X8{(R-5;fqu9;lRnuz>f|==|5ljSd^KPk5?ieC5gTN z`N~H;9Vj0_*7M-U4@Gg55LWD3I;LZ_Gzwp;Y@>%eA8u@^--KB@eb3Lnb(C%^{FatT zWF#UVs=bNJts!^Uuzjflt z3U=Coi29&Q?qY@!b~HcKJoiZhn}>7Z=E;XT#C@_1PwvK(h#Vk4df%z>`bGCTCyV3s zc#vk)uLQ}Q=ZeF|g_P}aNH{lMNFBQ!5)O?QQrClq)SbtP@gPmBU)Jj!>yG2%h19Xf zA>pieAuaB6NH{27NTo*{5>AQNW$krHI3iw1osSt(_meyy6er@>p|d-G>71dCbMh^< zlrQIW!wjZf_A7@CVOCRD{@S4mznU6X4pmsz)UIdBx!y31<+lFDX{<1=sqx=CRN-Ay z8-^XKu&=2d`yHzEfTk{b9-&8c_sQ|>S#N;ijo!DoF7h^fLx-GHdvzz3QO^57&||ZO0&*0dzz5PyTm4?7 zNk@-Q#@EI$c}`DX$O(FF`?TWI_}TWs$hw#$sN(hGwe2&Cg~Ba5>-5zp>EhQNW^a#t zC(aFSD_~|{`+*ssorxJxo0^8MDMqD!eYK<9*;|X7Bim;eFE9nX75Vn;lj`^PBTssD ze9u$3PHy3Dl!hyki)fNfaMS+h5Qbr!lEdws@2969pNOx0olUWD23wG*ZI5n;L`9r? z;%q)X*?$hwd}>d@_nA+1gkTz6Gcy?!-VFfDj|156Sc$Qq_g z;~=B$t4G_`jYh70%i2S5Y0TjAyG&xZ z0V9JO?`mvu-5VM?dEM5kg4p=h&lAKgM~p>&p7$QH~4 zD@jD(Ax6@(;J<1H$W;)D`TRCF9bdQye~_+h3liG9JodXR8nZlhdC&6LGW@@y+f|^m z(gU#MZG$Dm@l)wbtJ^P|U(GF+aoDRwiCK|8i7(4~(x*h9ja`d!99m0HdPyy4hoR2& zug>Qt#jx_0u{@T=k1I+YTI~wwcM*$1Ufoyt z@-cM$wd_cT@=2jc`%7vUM8K&%uYO>D=F_LtHl&wC8-*wJ5fPMV`mDO9^eOQMX`1?g zAv$B=wode&`mdtz0M0U)-d(6!zb}6%P`DcbyzXbJ+MYbp1Gr)1H;=7HTix!xB#{s3 zkl_65hgzXpEF#My&>dIsE&0LHvduP+#zl zIx2chJYd$9HO;=VB*LGACr5IZB~!K^tD)~pa;HO<)FngiAQ>eUnNRcuy-+@AVeO5l zPr=0IifDRC9Dk;%`7pofv!Lu(%m5CsP6WiR!1^TUsD*-kNq2eCB8Fk*FJckW3;0;Y zZ$>QSXKs1y(d;`mZHh!r3^=a*6CD6V{yH7j- zAA79g53;<2ZnL(}4eD$i6ki@&nLX7-=Wu+9%Mkn_wlYyV@GLU%{zP_1SbG;Ez0qHt zNjjWg^MX5B6q3jt&=`+pkd+A(Dd5gE4!5HxT7JYWU%u+{Bi`~O2UGq$;2m&~vba3< zb1AX}7z8|03_+UC3iCz}9+#;WDUeHnZtzNU`J?w(+3aGY`y{)m-!{uIb$&3r+PHR&+jcKr9BP;R$;bnKXnM zB1f44bXU5=^=%pXg)l+JGKnsH*NEWYcMN=fP9NlTQiKaCtm((FGE^0o{wC0rgkl}ewD{br5(PgdC_y%Sp8rAe~4yFDb);{UJ61%Si z8A4xH4wMm4TmI$QiIgXzT2>PB<9=ay>JQ7to@%7Xnx;t&VeOkodB}5&bt8d5L>~(? z21v?fiv@<3r;!YTEf}XZh+ReLz!R_hUuNj2OWYdbg}0Wl@;&|OsJ%Cz>CVvh>HJ#N zy%mPlw+LO6V*hBR$w_n7h0^*fV0x)FosblKOXA@GNeAOUz#gz)pwq;K!=Tq3i#)zh zSEr*~jTh`r86(iAsYRx~66#9j)k$cKmz6Qcdl^|lL#@-IK8}s~QZ#uXdx8ZilwF)- z)xVR^q!YT3G?i6fGcCxfTYyu{ga=ooI>q1jwPh@MiJQ8ex!5J>!O!;i$_N{ucKS*s$^zK}&Ic^ri$ZKu;c6{~V*7s}BXS*jPNX?V4z0)oEf4 z^?BKhhSJbsqr>@f+^rCD(p~B>gw^ql5+MdXl~XsOx76>^dBrMZa$6IwPizmT=%a1d z)J9gF4f#k3)tEPMrB$0?u6x#_wj`_&fm+4e5ASXvvUm87j8 zv7{CnB1{b35r>PC+9z8%qqYp2&6*pvUbfEHGlwvmRlmd7knb+3&)e-5E<*5P{ZJN6 zv|UpdS#>c6qAed=)eM#pkwGv66IU7=brQN!F9tArvkGyS5rjiV8`KuD;nZEkU(Uid zpz8LsqUbs9Z@}m;iE|&)k~omD?U`xqXVn#NL`~JP&8?UsuyplRy}iP1y889A?BLkO z_b>@7U*#qdEyc%U=+dO5TXi@Y?i7JNUneX)&rvxAhT>=^=f-6~5N)YDr1!hjcjfTf zC=EOfq7@>XQ5&m~ zYSk&G(2WfsH)Jx4@y8wQoO%|Vpm#H=)~3uxW8XYMz^+Q{GU_4qs)FJX0kF07i@^`u`e+U2*7|Mn2?c+8CvDqc@;%#l$#35@hQXJ00 zZl;B@2p4?WV8Npy-_s*PH(kX|fMBCDz( zPcq^wbW23vFyhcRY`VjUBkB}ydj_f)FFYp$jm|wC%&;>@1Yh0JMK~0Z%qI1q=*n25 zt2_1k&Y;2{lf6Q??sjeiLZB!Iv91J^`pYsv@gjC9V&-J2qkHFE`w z;s%W328`+fMsjW! zB|$yGXf6b#k0Xm2iIo17E=p{OIMKh>-X;l{Ptf1*60pdrOXc`m3?3mMOR#_donwfY zb!1Y4HQF>~RV_q|YHrHVqSJx$XcMwcYO9>4?}B=ldJ{xPP;$L)17<~S1>h;>Ms;mF zq0yLB8)Y}FEvXj)s4u(?f+qdg3?>-(9>F{dvx2%NwMuY8c7p=Ku@KOx_K1vAY}%(w zkpKzchv_!VI|RMwno3To7kIBPmMeJJc+P|5!QU_v7%EE zIZ3x#Z5Pq5h3cTU)iZLwEHn+~UA+Z;pteBbeU62(aAEbso|ns$=?DEjp7aBl71glv z^ltVZr>?I+o}dT%egq9TPWNxreN7ItUgMKjZx(iqJmtjrug7gBIwe$j=tUey3JcW&?eqRjjq2D5Q!@-A-SvRG8JnKY` z>qM>CurcugVPxGoC-tzM8=YIulvJhrC)M$K!hO!9u|_YbY2-(Bqj?b4_vw zA2h7!*?L!#+ANv8`0zX=K*sZ9x?!(uJevh%r2q7I(rwoGfW08150f&Ug7>ivUlJ51 z=EpY3>jD<9c4_yBc<<3ub3Sdg+6cf^UFZN>0**qb`u-rBE4b0AehvRfErY<9YjXvb z`N6L62@Rnz5Wn>rh@a}_$asr^*d=-b-_2u%DwY+qp|o zK+sWW&y#LBXx=GEn+)rOb~UPh6r&@ektJeusV8tWv9#_q-8yKjc!dyl_~g*}xJTHb z`SoHgsriMdF&!1daH3!a#ADbD1NPhxH>uO)4BTq<62MFSC4Esu1KBwpYN38aK04He zXouR%VX6RCqlBh81RPj6ganPvDf}avG&eXQd;*X5k<^0D&BzYHDdg!O zPNgHm*xnWuNxQnC%P6_Vs~oqjRd&JS@75)CNQf`e?kV? z`X;)cjx|Jak;VGiNp`_tWBFXkcrU#cO*!QfG);E0z%KQ5V>yiq=&2LuV6>q0*qu4K zZJpp_+pY!3Z_)R=7*CP#I?c^NNO-?YvM?f;O&jMjraiVYqh&_oE5XjlIC5LzY>$C| zT3-M2abp9my#A|8F!H(tI_(kF6Yx`A0_KC|^*4eEaWw~W`)bK+LEE*UUJ8-d3A$`$ z^7?uKRD@71!oE&`(TlKFUbhSc$ZMM+x?)7J5kuRd-Y2#JMw`=hnHgGvnrog&h@ebf z{~(6Z6H98fp#fK9IeoN2fsRJ?F3IAR*B3FKBCi*V^dAf&2gvJ3^|Uo;BtqnMypbrM z9F8lmFa4rIUVq~fL|#kkW@xCo7u?E7YApFYY2PFn48mI}w88U5 z9S?;!L`Mgv1=o?ERo9+^k-`iX_k<5KG=Y%RKE_EU3|eYXZxzS@?&5W-QBH-1urUm- zvuad_7~I8fF}$5PDldNV6-K>(Fr6wf7J*OfhC^rqHSo=_5rihz4a4(nAnr&;{?0rhQfstNwjvw6zB$%O@xk;97%K)qWERVT(s|v5R3q~?2FfNh zs`pARk$h3PoT_>ZgUOiH3Q>w`cnEYgumFc~fp5zj10XXvbAHE8j%Deex%l3 zYp}ev4J{f|*j5-}yT}o?Z6edQ3 z-N!z(fAwg09y=c1q>E4wL4eVV7!A6Or=s`R$$9>S+xR$WU6Aa`Mu)X`aY%e?v-X!N z<~i(RH4U2e^5a|2+r^vR0s_)UZan0hx>|Ci^_7d*eCvVRJna`;TcastKv z(&&EK>>{XGrHchzym&JQ7!zXh&Y@G z2__@>XXbRCxi}&PdM?hHU4bEdK`TswOfau)T|TnvENLu*f^YCNR)T_V5NUI85Gf=! zzok= zefMz~zy&ZqArs7ETCW~-QPa6D(JOAE(FSf8`;kj9D+jG+<>1{?k(tPM((Xd%=Nh7{ z9(BMx=3!cC61AyRoBP>Z(V#Bo=upo;EUjx)AJaAYmjy5%(F+33?7VOqb)OOOPoaBs zn3SstjK{*q(Q$CQLLy*s@gChxP&jmxUUY2GG&DmT2GxoNs23nl5T>#v1S2KIjBhwY z#(zLZ0hWYK2S4YW6y1Eg+}z|3m&v=ul=M5U8ISqI80IcZea~X^7>M8L>TG z>XSb=#c$a+JSgBT}hZi8B)n=h_I#VVJHO*#vz zg}f_=z(KuU>MVca1txm6Zfsgy5KI8Hq6X9HpKxPB-HK%h#*HhhiHAT}+w z;mg|05M=;6R8%WQp-|W^RST0!FiB_Fr44kDD0WzIgWJ^zv)d$6j1&fz%ntFpy!p<>8 zZ|pVVH3XdpVoXT9`iyv)G1Vf5_`*0MhDilh=YMs-9><#j-83v1wvCI>`D(X*KoB6U zfwVg{4Goq(MCvJxOc}|r7eCb5P>Zp~bUeIr<&*DQTKU{^kn%a)pk^ArenN$HE)9>%7l8FZpAmeOf1p;Jp~ z2bw@Q`zNX2Na zdavf|?chs&glz}lqwN6E2K~r#E24RVrjc9u&HH9JF0JY!d{d7@roz}tIzswBE2Nj_ zj2bY0PwV_Cm(VHJx!EOjl|$)6KV@DBX(ym`r4`an^+Q8vVA+LIte+UV2&qWA1-o-C zC{scuNN(fae_d|uHLOx0V8NYgRlnq~cf;CQ5nF4})pq^d5#OA8CqzQL$c#9u6Z0ao zj`)7#;D>p`EkII2*nGsr+dDk+>|xaB55RFO_Y)bkY*07d5ZHQ$)=R=0*PFpBoo%q0{d80+}JVctH+iDTpDv^4d7$(OrU}j_dk26k(z%U#Y zXT_2FfmxA~!flj`PVqUA6+J%%iqKuKK^BOI-iU$NN#(5Q-XM9N=rC{V*28=mHOUOK zi0#e#0f$+B|BSe{2K{Y?Tg$JTN`8Nnspe4_LNNK@=UV1o}38{oK= zFz|Y^q3UE{;_3v*vsW*}^pOD{nX*>K2M%_=_83PQ$0Y{$tBns_XLYApWKVQQ#|O@L z3EFM>uuFjMP_}J+AbSt1(r$~MuP8M&btaQsB2smv=O(`{lVY2T&Qe5^WK(jp|$FNm#h(URLc8`-PG0r(hj4MtddR=wzB+5%3I)R-(`rfdU%NA+fxkQa|?hD*rlc!zfT zv#NE6(H|NO8(+KB5G6pXqqsSBjv*S+zJW+9DkM_er4F%HtkvV2S*NNXplIU4gefEH z5+8wiX_w5SzHh~BEJ#E_eHSVUCZ-8LE%y%j@AffuSv ziWDspQ0-8kg>;D){aO@kVp_DKQi~3D$o2cRp^#aoMPd50Ozh7We(2~A;(gGcbuIx8 zH|)=4E!UyJvSD{B74a=!PAgYR)bXmOvsY|e# zBc^VU{)?+0(_DMs^9*kP`l0{J_UBtxe+I1o$Ms;&NFH+u+Wzcz2^IEd@!dv$C|fd* zfNQkS5XVYck#t2OQjupqmY~RVc%AHkjG*682abo7s^|DnR&VsZGt8=6>uYH;i zxr0y8sM4Zz)#z*S59=6eF>iMHR&^R&&C;tnc+aPNRR{Z6;Adi)ryk{SnMd|paubOJ znI1IuDP;YoOtZ9w8c#lB8zd%V;+LDd#ZURgEgk*M!^@}P`J8TdiO_`d%=au^m&&d2b-{B?gm$Khx=ZB5QvTOGw77o2Bt`ELB*ga7@@ zV;Akke{|eMzd%ENa-sLImNDkr#8;RIs>oOPvfRnovC@wvp>!k8#oxjwr`O7E0zATQ zm#y*$Tf{cYqx$w_hvdQrvQ6@6UVCal9?fr00yvRtL3^TC9vvfRvJItAZ-GbCkJoCj z@nlZ)1t`gA^aM=F<2^kix~(y4(=^_Q@(>Dc>M-;+)aHmMH^wrZKC=ys{oL7}PYM1VjJ zBscrg+Sc_!T2ibzg)`?6KgeS@Tc&P(dkWj6da)Nl_Sht$o7@SPzzmXWBqiCsbL@YK z#GnTBy_t7+sde{2NctfZNL#iQZbY`ijTFC&BC(jz!S3hs>1B@pDnjS@`&PrWC_eRl zRu;8TD^X&gZKpA?v^Q{^7XOH;s8SZkbvSwZHfc|jI#O4L=%nmW;%*+jm8`HF@+-`i zGx-sz7kydA4bHK_bhPtF>bBC7APuEn)=HKGPK#aM_ zW*1W%*}OfSxSg`OaOa*8M=tx)iLMOJNK0+cR5xNz7v%CMB9~vcFm9&yS=9v!<+1~N z*Qk9-B|@Uw*7ZX!dqggWtXvLd>Q0g^mjhNV&ogq_gke~op1vG=jBs!zLe(4}S>@HE z)`8(eWa&u&t~wEq8q`1OVP!req_Xsftz92H{`EnNL5d!JC_G#v~H?Ty1s!IY> znWe4_OKwy@5q*pky@}Me9in7M>GpfJ?txPv-$>#0NQ$MG_S7~}3LKXSo!=H&bq4x& zd3yG8Ko^b^MOg7vtEXjs`UPm5DxhN<)Z2w$+(>~w)%z%?W9W)sFC1B>3SsgudtgQW zGiS0*29kFf6-f12`G?ys^1pE{lM%4%+HaW4@5F2X^L8Wui5@Hb+pO^Ku)=?f6@F~t z&1>P`rG-GO!|vjE|AVtc0cbL~lW>_e;X;XxGX z#6UwjIUo^T#==#8gu(-pctwW4aVBIphoADm;n#n!-B{uPq@YO9-67f4idVY3pkbGb zUf&{4BJdyU$^Ejg6O8m{s;?K7?1gEN@6bx_-}@$YLhM0o!%de)He6o)9j7mrq5gDouu)y? z(#$yc#-qzS9;*bqugGX3#^YBQAdGsM(KmiZ;R4iB`1FfN;GO!8X%ANt{WTsmvyBE1 zvf+4e0+Sg$Sj+E~c%ZQaj@pFqAgl4i@$q0+I@vQJJje}m zTr2Uwh?P3|4y{%kawBNhiU3m%HE|5ASoJcnLgpa`D`aK}h|&I|7b`9-!-|1h9oeMD z2v+pCw8fyARZT~;h!;?|2p%=4W|^SG)!C5GFnG8SDK$J)iPsHy_@j07t`*%Q+@f1D zRQcsGKRkTL!h_alI@=pNkv1dx0B!GJo7k}|K^-LwL^B)XY-2`1jMGQSqYg7qZ{Slf zLWo16F8r}2Wn_RrC%MzJc-S;2De53kn$I)SMfgV0kf$vCQ z^^=E8B!>&nB7=sHi4M^RzU?2Pceu21hv;tYsi^PKEe}EP6=0`uRRCgy`41f~UaUf1 zix-0yFR}s$@Sg|d5&A&82bj`nIDqqfwap0USrCM10=(EEc`>ouW&MX+t^WY$c_4lI z)$PgKF%e6Dt`&08o`9Y0D!1%?(DT?G$e+3$#x$MWk*V7RXZF}E=4^ODf|I^m(y*4s zvEG_aY%MRqO#0xZ-6Fn4kN6fP`W7vlHcg+GM)*M{mOGv^c(py9+}>TNZ&d$Mvcr{V zm3bcA3?*&=OnNVD-J_z~L-Ixqy!RngAn(WEEOEF5d6;mS62he1>TKixZz_OM?eFuu zR&Dt3j%w3~Z4sdS|F8DOHIorA~k<@$jHMniK5zb`!Ru z-i(+@w50*5MW-d(d!@yguu>b)wt4s?a|7m4Z!k|a5M*v3NDwV#Lcyw8nCeE=ob;CY z`BwK0h?uZc3Hfdat@dac= z8QHM!KeesP+40pcRBeIx+oay|4W}EInVR`m{S+9-Azg`5(HuR#9r%$>Y-vzWf8EK| z1zIKcF_XnUbq&lIH+f&xCAgbmLOcLH!uMZDKtlYDW8I9c@(A%DJ-6_}hMtiuXisPl1o0p}?Eq|`L-Q6kpxoQawcfx+54u)h1JeS) zMoGg)zrY5trr*K_rYD~H_y7FiXci*VL*zHCCD#MCI-YFr1Q2N!n;*TI-(X}6! z$n+}L|6GaD6FI~3%mofv+!)XL*4rUz;v#=oClQMV5k486z5&@m!Ia-B#eY&)Z6hvZ(2XFRr9;`)3$?EQk267uZOE)L=m4o%`ABAN5B zAKoF;8bVSQHK`HTzcir5v+0ZSKAVWx(>8&Q?Ksb5R@SH-|5R|z1F#c$)|#Akd0%=3<)>{*weEDXkFXU6L1q ze2W$2?LI*U#yNuQ_n+W|P>^p)r{MU&f7<02WcW;uAX^}GgXXRvZ}r4xBxr8@r(P5P zDH;DMmrmxye>(4J!3S6`fgm}xTTGe26qEpg8Al1SP=asjaOnh;V7uc_Z6kabf9h6# zr#~giAOU*^RmGLM72af{`u@$fT^s3C(8v=x*|doKHCC41Q95;NlUna)$b;rgG?)Mr z4Q7I;!m_YFA#xd4v!E`O>S#o)a56GLFcD>W0WC)TT4Bs`(IPxmUxUM;BeBM{DN2N@ zQM@*^IzpxZIQw_R_i}6RCsd=npw|QzqsC=roJGeUoon-|o z6L@9$O=_jMVd5sSWY)*bY7;Di=>6{`0b`n>(U%uc616k7LG~fj!e|YZ0H1?ga$dj| zMEn}m^Ea73al9dC+&WMgTA{t8F8oL*w_rb&n;{390RDsyz}_m4 z#1rBpv1EJ%0Dw<|T(D%@Bo{2%sH{G~6M}}8tR;i#$d`LUIC4P&0Fa-NNyxtdKvsJ~ zL+Q#@vs^lnD=z?Vp%226p^@5>?Gj72LkDNG0-ZacjqEc-kOAI&V;yIbZjY=w4t`m~ z3aBSv1mf{7T@6@{Y*hOs?pF`%2Ad<6ZiFC~7?$tD#s7lO5PJW^JejTi_N!JFa5MW| zJaA~h(Fpyjcu8FkFA73|5G8g;;sYmTbN-;NM9KzryA}@Xo`mi%UgXY?7hwD?zV`_b zN84|3B4*wxvi4UowpbjOvCSM~^8(_V`Q1SL?H1y-8zUoZd=>PFo+4*GQ)IXuJscpt zbOgr$ZU$VS6da5Xr<1p5>Q2|wzd^!3?VO^ zz)lxc18oFkAy2UDdpj@#D@<*6`nkH(3W7k8Owt-%n&>^_%X(XlhN(R_NFAAqxKRYd zVj&LVq9ahhzL9C;&OC7$6XB^i)Yx&5659|3ZwM4Msi*#}tT`sQ=1jPW?JyNA1Wjs1 zK&qoj?G$ex`>89Md9-b&HD) zU&G>8o_P0MaAWmT&l50($cchMIqej5YpkV?7w_SOZ+g0xrwEWd{`2qW#u%aw~2~Z%_8Xy@M9-s!HvsN^Qdg2=M+O zngNv>YEplAT)LY6jrb2Zdq;gl##$VIM2uiKRWm3|LSYjMe^7n!!w|3C*u^nVVycU% zof4!+DC~CN!q12ci2+#!!>kEgE3gVS01T3OWnWdQhtsk|r<}r4LWY|?e%lwtZyUaT z`liJ5l%;Oo9T>Ya_58+%R(%xy1TAWwzY%{CIhL?-1BVe?Kh=|8a&(T0Wn;b8>0z58 z<7A~#t@)bBxVrq`kXbLflmy>OL@AjQ6wXH>Sp0!|_76lEyim#ox%KO|$W;JGV&BPu z)o*04NN?iJJQdk0Ehrp{^xT#b+wh{W1V`fLUGOQ6}9x&F?33a%B6 zbRtz*B$AjoOHi+u+))!6%g9QcxO~j7{@B5$MD4P<4(_9|vYN(5Q{~kGLA7Xk4do?f z%#ykZ(+OC$HmTJDI^y~fLs%l4r!rqAb6EEqmIQG9N)jiByMy_h4xtar!rE}*-;jZ; zYq1S7^2y=rXKzZqK&;8a(qQD1FKoOYBd?c2G4jb58r594BW2`iEYugJ-zljw@;2Dd z1OT}%)B`}w;ZK8FD`ON_s~|xbYc92yM1o6bwlr+Ca0&7i<^}^$F#h0tA{-PSUHuQ( z1P5J~bD`t0JC@9?T2foJ1R#K8RRAOkkLB5d_4_DAo07O)B6Xnq$tdn@IWRMa?E)jP zfg|1faGgbJWajSnB?}5)MM4xFUyZ}bS-7_O*qwL^YB*&sAPhS@(x=pCYERbn?0Hhx zv?uS>g~~p;XBzHjY(Hy3@eGtUZ}kbLG-r-iUgCNw5wOFScRz`}2yDFOt;lOgyQ%6+ z7T~n(1x@P4y&`TH0pQaq^SN-nWIi{8;8PUg3rx+Z*)S%1RpMd>1%O8>2TY=s#QlI{qpoF3%L7)0tW1ZfDO0pL^Fqr zebm~u^C?I;=VUJOppCp|5-JW~94ZcM!L)z4_{jQorB-xrY_mPv9*)p3;vp6m@dAy= zBX%~v-AiK$2!_PGG}ez`$P3mbwRsmKKI^41Z$qPc*h^#HWlicHFO7Pz67Q#L8XCR6 zn{5>&EvzNbos4``TLy!N9|LTN7c=XlFueb^`aaW9Sa&1+JB@1?OmL{yG<>XV2H z!hsly#d7#sY2I3WIu81zLA}nK*;Mk907|ut1>_xrjXs~J(LTQR?Yf2BV)S!QLZE_9 z2&tevRIeRt%zi17Fn25oK#FN=$B?DMQs}l^FYCDdPJky^zt<1t(e-p8qV1Vx^tkme zZZZD9iP6BnfWFAYZsWO3X8em2_+3u{T>oOLJViI@*bw}StmIw5kcI2~4{87679C%i z`-Jf?IHME)Vtd;<6c|8f-C7#U=1edI5bGweGbEz;1$0WJ6 zD!HR7xlOw=4zW$3E}peqXbj(G6&8f zz$L3}nEJx~z&v!ID%m3w<~}XEkyR~3cp$ei9WZ`dI*b=Ro{Gjtz46$ch0N?RU805R>Pa5Q^oU__y_|&p74LQbTGE( zWA@>0;V(ZK(accPagx^Ebiwlejp`U(IvURjydI3>KvVyPX_2^Y7!2G9jxIx| z(HOvM)ZPXv8ZG`yAzNn1!}MF$ zXOm7Cz${<96qYcr{RV*qrkUR^I}wb!Z)~yU=oy9HQ75}rwWc2Rm<_6O*${JyPvJs) zNW7@*X09=t6$qnoCM?jGPGQwtj`2t*Hgi*{v_RIe2BEY+w$l;lr=5=6a2eYo;b$8A zL~lBYxroFDp-@#BvZfUnCnn|^RPE*p5j8QuI?(BmEkb$@oR(QV_26$!zgE0PdIB0% zo!P{X39``f4V*Ml`9~SZNDU&qA-m!RWUY0eD%Hz<qo2@E#GHvAjE!>PIx ztN;`c2j&JCxL>;flZ{eSM>FqOR}IEvFw1FAOuMO;!f4l{M}1C~M{h@yj!M zO-)#&0B&0XVqXMZQ+Fz?q|W(0z4Q zcInK@T!3lRhpuBaafH!0N75^JT+YyeRoO;Fi=Evdt)Z9JWw3P&lW%R z9(s6tI}CWHZZ*zPW)zLI$T^o;G;*31V7N$|4Q3{8mq!51envLAg$QBiJ{uG1GFymr zd=%aR!kfs;P4$S6-XihQL4-#TAMF(sg-_FKQFNE@oe>jRfk%`T#|L`>@XiSL=HCMh zmEGU{5ZMcCDMWZG7PcMNFRUlRQhNuyK|CpuICLWC%f{&6Ny6v17K2KpK|Ul>9M z3p&=b__!0PS&0@9)KKPog~6y@jK0ySH-Q6q2O_H$IJ*}kCX*OcWY*X;N4r18V|eoB z>UWmMG?1!1^`knquKG=0cGk&{yg4e`gEbxM%h$5?QQMpx`on^puY&6Y7NTx*m>N1s zETqp?-kj5QbDV`Lrb6O*Ol;N}Rh^)L2AWOUP2{|mZzX8_$GiffW_EBC-j4bxW~){k z#8uL@(9jVIguJOxqDQW7{;VBy0Z9qTtLvB|g=yUnV_IVFF)*o*oC?mBg?FA--TCG4f;L~>b!c&= zdug&ccpqV!+OW)Ry+w-4THV8$s{8Q*Q{9PLw6J@DOh3=m38epJTTodo!;yGPGU`R%ad(>O-ruV z*J({hDemc#ihT$ZCH0*CYTt`J=0-rWGK z?(x2}F9ekUZ7yFWJ{DX#g0a*1ST;dFT_kfNg?%qU2nU6$l<+Elm{rgO>YW>IXL!`c z^Nies+52JH$lR%>3E8}OhKn6CZ+D1Z03*i5kRqJD=B|*~EX-XYJ%5MWM_s%kWYt3` zme{2HX`XGcY*L^Zc2~H+@wi_0q4s)BACD(HQR!YI`=6lu@5oc(F27ldvm)J`S)n{> zp=Jnyq9>;8T_LCq|3j7{q^7Hy2I(VWn)7c%GOP*JSyKk%lNSVbdXCa&HpyE6smM}3 z=y8_M-o&OsZJ=O6qB4BQUWkRcZ`{b(LaRAkm8_T1i{Z6_C8qXc#uF6Nqb%MTVU~p= zImUKpp$=O3JQj<(0-wiAaZbjRrURaRXO`y7(dH!URacC+kz*fF6YIqi&w9P;#SvUz z>7JFQQfwZIz{N*AfR2{fU(nE-N>OiVIf;F}$F$I~F$5QS*W#%gfdSS}u zLiy?j5s0D(R-noI<*SoaQ*rZ=r^3BZ+4R7C^?8(=xWAv;kWHQiJ$Yuf2&ux%v)tJ8 zqsg-u5N4iL2Et6$fsuCO0!_hl{;HfC6AgLJ-wtT@vh#>z!L~b(d$7F_Z>(Bhs#p4} z8t%WCnkw8NqTnY76tYV(ISK&6H_`wfe}WJU$ zmbuO%5tpL9x(o5ceGU8xL9#?|xuRH{VX|l9z{X@u98UGF7X8;kj{$v%MdPa68AEW27r$l-b47!rOmMeoSaKxtKs2^TVt1i>cW!;wk?8!-!~;n!BB`-w zn|~>I5KUHDx10au`R#s}@2mCTQ~J&OkX{eMV0i0*;19A#ewOMin&i3Ws1u?T?$OgdGzMEEkKYE^t4K zPfjJM@4Mu!CA$_c*d^xsVTtcT%y5#_orhtnEeUf`PI4v&5j0rph zMG@N*oE_K=rV^>F)2!JY4ZYd@5k|Q0%mP#cZ>4wMkK!<`Zc{5mr90lLm5Nr9t`qA8 znr5j4J_660mSPK3EV*X9uSLiv-hrep9s%>AC6#WM%mc7_${NIT**ytv>!gc)y7uTUqPX6xD`iMzq@o{1{Stozwt!WVA#m*sl%BxQ4%)6Lsfu1eWfuEbeA;n!_2Bk9qdRXDw)`$+Js?jxbSrtBlDH>EBXSSjNE z5Dr3fO!a{X6SW}!tgKA7ki-~nDU{Sh+$x<%KBfE zDR~j$XGtZtjP#`$^|oYK5MiF4Rf->?_A#YfAXS@7yQ}9)4}gDSl$Yc!&=kkkU+KqAj70_^5x?br%WHihDC`Y>? z@@1l3e<0;(<4mCtCmmZP>d%83mK=tisFB0KSQ&;L)eyhXHuK3L&VdJbV~!xNYS@oW67u)ZN*}e zsu}IvuV(bn8Z(KYXZFZT+(a9Jd8QJ4w|GI1s6*$^;0Fa5wlz?Ac>JWJ0!k3NA|NgJ zO&tyAEpJpM=yY-|N_?RNbEl;vcyc?InU?1ZPu_fTbq|%`>K=fStrHY8&ekRrF2_f@ zWWg{R6HiKDG-c!9`gz_1dhs^9eYwC)&obStpgi1}QNTNFNfthd;3YwC31VUj=ibhB zoLKWeDr?SLJ>6M=^0<|05ym{zD%zep14#^ZW>;s6Fk=}~VcFD9Br9z*oMc|)hdShp zV{hk^iMMmoTJM^A#3qMRMCSfTlf6H3r$j+5 z!B$ZY9h9%J_eY?3AeS-=jvGLYZi51A_plh1_S8M>CLG-LS8sswscN)deT4DNyD=8W z)dNvWwqaw7J?t9jB>oT%|MLz3)RHbyOT24dR7*|~3FgXP23kuuvSNS2MA5 z#$iRjZCOZH0hEOOn7<9~TIe@;vm^8yviwY}aK~eqg5vGy zm7NOi48?u5mx4$Xdo&n(cY}7xg;_LZmsm`3XmE|(D_V`QTZM6K#yDbI_Xr$Q7{ktc zNzZKZxW>riHFmSAa2Bw9tI&l!#<5W)@hW5XHnt$hW6$R8?NoP&6vs|g4+o{nV{rB^ znPQ;+uH+Q!d&7zn8YJ#;s&T9iSF~UjUZNY<$IxR(Hm+^DaedpvMm&qj4pR9N%q3Wb z_tkx97Bm3z^fu6<19aI@HLH~M%K;($-X)vT7r(0V_#~NweE%tAB#_O@np-}yi@S(I4I9<-A?oPR*oj>T%B884KAOyLRkeU|Yf(f2 zWG|JM|AG>rTU(nCvX>iyyEFpjC-0!}{k1)vh{rsQb7Bbqov_e2lqN^^!Mb)4unplN zkaGXG^RdJU>0;Ph&@=PT;;vFsPL}kT_!Y@2Sk;wPz(qI)t#1 ziI^fia|cb4UlUc^m2DtojsZs#t0l}Z*q_4m0r``>B66#6p7=3u2LJMU$QxX~?e&m1 za6RPTFrE&k{&QDLpXD4Ubv-K8ZbCF!7^~HJP0iEYjW7fxweD-N^8#n3xi-xNNI*4& zs>w5*<7K|=B7bjE@E6g;$(?_)8l}BH48XbaP2$EAjdPMVjg_j7sbF)WpVJ=+Yd_)? zH02|bw$L-HQ`?rUE;W4j3=_+9SvbClT;c?UQ}x_0vHRHRYI$O~NqKXJx)4^h5 zkQi0&yS`usFZ4P{p}sVCoF!|@;9Y<)w8dcAVas$cHdR>$uQQyeOV!mg&u7ukM^2bj zTFa{q{|6QY@^P^48fQ|m=X0D?>`W?2{wi^%6yt`+7|dRtDVj1`&J=Yc4Q^$WIa7ji zD`T9!m2sZAl~K%F8O6?&lFiTKrLmniqn^?_zGO7bJ?Yiu9T%8X;!H(-Q^!DT@VLO# z(Ry3}C7~5%&eR|mjVa?~(dcp}orm(MOHC=JA~&VjnOZ{qY-)*I-YDWEoOFTQ)3|^# zbIJvJPvif{;O0mHG;gXh{wead;p#5`)DqcTVD8dZlt2H26veoX@jgo0P>&o|J4uup z-orqMoN}byNS%hA8-p*em(?q?Y zfg)iK^5hx>5>+W&Znz;C22B(SA1*gslMHK?wv^#KW-_datd0V(+nj7e0dp$#;s)n= z$uQ)Gx?Wo0mL|iRq*GFj^ z*`NysMw83&)7LOF`rLyM{j<#IpSsCF$rwXul33QTKIpQB)~IsSVf9Ze_`0BNl_)G| zpswnlP~s4U1+B~KpWRmf1e@^XoV@m{?~}*!gzp_tVS2sW3qA0Fwe*xAU9Y#X?D15Z zUaB-?BwlO?VNERQr64(v>R;CLMNP@|`znl&tikALTvljwRM%i=f$b87E#7jg1?t%$ ztlWAX6dl#&87ub+S=7-{UDU@!Lk*G(8!fD9x_;h~vVLM?)(5g^13Vbe0-^ceAzC1A zfG*K}7qq}ObTL}Jj3))mf$t?w^%B{4t${L(eOHq|v`oyw#&;N(OBr|KN=WuKA38a& zn_?}$Q`Y?DvgU8o>!uyi&{8bUqF2G0xD+e+-PAB>M#k7}f=(#PI2dE6a6QxmoYKa% zPw46JWnjc{N*fk!Y)=}zBihe+YkHtTck{SiIUIpF6NLRA7I(-1aBP?OxWIi~vfQIE zQR%39R=O{LM%D{16%#Rp#wvk#&v2G))kt^EHC!tcDuS*W_m|0B?O2*TKY9&*RL!Wt zE7x>C2=VvV2V-6+s$M@Z`qNQhZmv*D-YH0mAap4v+{7M zm4|nV&`aIP+#ykrhfP)N`#CoT?UPL0cun?u8JN%&~{!lXnlA5Aci%49K9gY==_w>7gAIEty zWQE*ZE+P?^XRr-2B5?<$dif3!iP&{DfK%SbLu*DPLhbiNBBUo&oK0BIL?mLZ+$kav z*4GW(A`3Y@saPl?LocrMTHZTofhd;&*C^-Si`xmR0sy%ZU!pkgSktK2jX(AX_MCSV`75K}ohCIS0 zGP$460Fj~7G)v+WEQ6+obCYGXqt1RZ^c$6i3UdV|$jZ`^SD==SbP4i8-XH2S-X3&i4`z%5UdG-B12122y5`+)9tiUx=#(>4vkg1XUi&A z=wX{kP2PTzNg!$BtlnGl`?MKPSOyqI7_k3IhSf6+h86clQ@|oqz(hnC z!Hglr4~!1OK*LgeRJiXEMhd#4Fb%SC_3KEP_|+RokhJz^m&Zx_Qu!TL7Tji7|X#YF2{cO|#O2KQ?A10DIte@vy`v zxMM_pR6yIA+DKdIecRHuuF(4gDXI-3S3;=S|CPi8A@Yti0c*)*o+XhEXkk(3N9T zi7Mlsgh6({1a>w9*CRH0-6dg-?d^0>DHOV=MQB15do8I!a!%NTU&eqV)8qze5ezt- zJYW{iT$##cI+)6Fq|F9Pbth z%X0I<*rFKC)b?_(OzlUv)|j)siFYHNQ1m*Pah2{5VVE?|2@k8&{d=xSO zKZKGdl>iC3aj0VMJ3vmOq?n^e94&!V>HK!$WE6Bz{NGL{fQ7U$n)W`6A*qjq>eFWk zwn$J+@Rp>|5}6@5ypG#sR8JnmQP6*adh#Bto^(U6Igok+{($C$D{IS$w<^#`5D+jd zK+h3>f!O&24gZk&&}}X+bc;gT&29LpBC{dH&6Q4!KND?*2$th?&{4WjRv#UuOT_wc zCWeFIRF&qu-T2qbg(uxt@X1--P8O2=-zPn0rA)@5xhnS$$uJ6NdWhVgngZ@O1vDW7 zr-<;xtYT@HRSe^D%|Q1`Sz?231tyMRWh`!#1)iizbRi`zGl8XRL|kFndD#H7oCRJKZePvx76`+l*2cr^13o%rz1o$eVC5dL@Lpa;mfe82Xf8%gtA9%B> zsod-lk{j+?&sT43YBGwDgu4`aTA`!-ZA~=6ipDKaYHvr zaZ=`=NQl`yh^f7pqG3`Y-GMhbQwqff!m*(>`n4c*7VL&9+*4)YD&#hH zN-PW8wtCqyfCF}?@! zy{N)n(@S!U^xmq7^ozUh0pai3`Ik|_@sD#+fpHva4z>_jZPbknaijM36=FGuroYnI z+tq-=SlnExWfrx%s~4KtanqF|-rC+_Ef(9mqDwQu7+jRI=69Grp!nASa14umtopZN zlvyc8nI$-WV~jE~evUlTH5nL4?gTmr45euL60y!K6YES9{J#&4-&p&F@mqkvh0FTl zvt9w3V34o;j%+TLgnrxkFF1L_Jw+o9J)$cs?6$%);w*PU%L6}`9{D3o!StTksTuujrjxq5bJH8w8|VyJFL%i0_{zKvclZt>Ooe2+pu^37i7i(WRY z+li5?=}|2&AZkSSY9`y<(R%5yZl5pD7gMi=a|s+v)laiag^@V6O3TFqkF8SK>LQlg z=JRistoY^>pCo9iAbQ!Oj78D@CndI}!{-#`=_?3rgB&ynTO<3E?R$icXnEe}Tt1v8 zKbtjrxrv&++2>q30>`_zrl!OJoAL45GTFh^w!8rCAKK?mOv$a4v+~@pUqmJ?g3keB zC0>D$It{@Hmc^S4pIY2XERqfooF8nCYd7-bfd^j5ey-|3k z#wl+X%bs$7{@Bg%HsVEyc)cjz66d~0W^F0K0~Ss|cJWC`*TI8oE9|t zF}I%=dH;;H6!sIIomqI179jP5mOA6$1mYry2BA`!IJo+`geCby9XQii;r>{QNKC{E zHhyEE;qT})Z;W7le`5?R38=LrnLty-{A}K9~kKy!a$h8I21|V`}Gt_UTMmjcCeCMa$8A$y6w#2O7boH zk>pZSc1ix-BOuAA8cBYQC&@4VWtt>cfqo!)KJMk5JnyTIx7~Kk$@9lshq651^TEFI z{LdP4Q1U$Sp@Ea<<=U=CWu3{WnU6JnIYL5xd<@r}1JPdh$RcB6~_m$^84ab~3-`z6k<+&WBh3T~{i;?B5aeak)P(u!6 zWI5xUf1*4$k~_`PGHWbh9a0=mDi)@53wU(RlsfFT(t8h=bk(@~(nLxuvngXX33E1;m ze#borx^RNx!s*3NKV3;B;af^*Ih#~6c2a3{Qc34a;!wDeP9gZFVYPziut`{3N^hp8 zq}lxxlovYL=zJC5iFn*-s-^?F#!D}!GCY7Tajn_|Vsv<%AUo`!yAPkJ5iYo?MZDdB zOJndt0iR`3aRQSZ4vk{CtnLFToGB&ZDGQ2&2?u{l{Pa=TZcHs1i}#7(GRI5kk@&WP z;@jGVpMLtNY{DreW2cnzq6vIksf6jyPMGwn;oHhuHQfj}q}}b*@dhDXR!`#pX8hmQ z$7S^cI)FexJwP(%Ty==w$MKp3C&|6%*ybl>}a#>1!71Y@w=cv7El zz=Wq^H_@%MjDr<-A45gVXZ=v(+JX}*ExoPHy=y#E)3eM=-vp_A3rnhvE3Ln3 z)dBof<#1y5cUCRgud`}JinGd%(Q&W?_a_|OUN_#aRR{7{HNgpC{Z)-KNGsm7T_P^4 zd*B#qwi~Ruc3p(?3N`S;Lmx-ho$#4h zN7k>-B6q`)btha_8|cVdsUfOkwIP&FFFLaDzP1!c)`K_-CpJ*rawnjYI_{yI;X57Ag;V8TW^=ds7Jfu?OXcNlNSWpW z!{G(Gz)&C#%Oeurmw;wYd;}}n__+G*cx@I7F&bXIX+ovCu+Ste6u=Mg{j^oiD5PR# zy>V@Oqz8%FG<=qWDm+mSBzGLWfC~#$p$iKOvXlYOkmi;v@NgsDrn$wJ$No#FRwX)UUkI)(Yh z%1DqG)9AQOD}GuWPo;?)JbP#5PcrCJhj^ag*q6_5)E(3Ex$A+XeE!Celh32hG@{Lu z&qW$y*IhWOvJ2_pDCUNvDzlKTKf*%#t0Secp4+Csr2e#~z^RBMBB?uG5jp2csza01 zKeo9KM^b-DGarVeE=rZuqf9Z=4^~o3ZY!xfUQX}-p-Ji=+uRu>wN#TyQh!-9y(vlk zJ}o2hRZmji+vG{=oP6%1KYy;~n3m6%-8Yow^TM}@$V<^w=V-`5$>*99<{mKly!oxt zSe}jQFPc|r(imh=X{$xgM5~1GRfzsI;Hb(N8N!uNCX8QkOpa#BD0#xG|b)AD)c zy@OspXL2N^8abXhRpefZkZ#qG0~tBmPh-Y^o_w~8M5?7@oNZbrAsw(iIWqcl(_chb zc=GAcg!DBw_u&ZXvo-T!=+DKe^7*+Jr3ZpzzmxL zk4=I_pD=_eq4lt#59??e8Kfg=8LoEic?MU#_H4&(qdnW4x}H7H1s>+@8z81^2=(OQ zxh`M6`tgjzL4?p@cs}tK`FaA2f!z-!0C)n0zz8RW0(uLjwY-?`Ea=(u$Ckh3N7urU zun)iF`&Ihg#9Zjb1Rma^9oZ0P-7T#93BMCzUVM!gIC5EpQNx@@=EK)@Y)dPf5}DY` z5Wb~m5w3gk%1j=*#amK&>?i?m(bu}(@Dq9LDbkTX8$!KaZJ}QFbe;6HH`&u(>1hXj zX#nyQH&vl{-lp?=b+3BfUJWcPfCC0s({w{5j;vya-p0^&hN1#OHuloP!DM&~X$Woj zU8spk=*3_RlX@}rjN#cw#%PMY=C_w4)Ga2-4u zu#ZL_;kFsqneb|sQ{e^GOKxz$(F{GMB++TKK)5GK|~Q!Yj~#qw@dN;`mZI;k&CS?!IrF_GfnvJh-SxNrqyiv&lg%}?|(OY+OPi= zq)KZ4nat~@^uOKI#iU-0^uNNyXo|gZ<&>>AIWqOXOp5QT-++rT;Y=^hHQmto z>r6aQs#qSRPcx1+vONBV6hao9Q!v*r6Ag%jJ3HKwA82@phF0Qi<9enD9+B(Qn9WQ_ z5j-M}CNi|T*I(TOzzLSlWFC2i@ExXIOzOo5;p6t8@^i7tVQe%Yl6HSb!*c;K` ziUJ41Wg`7FDWo6iHRl{bs^H++lJ#?@3Ev&j>|PBf+>pMs59#@vq}NaHoRj%|U6yc= zp6{kJ9Bk-*wLLLnF4iUQ*DdZU8J2qAc`EdFz4GkhPKUYj9N}dfbL+Wr4!`r-a#1u^ z%kMlY5{yQQY#Q8sF12a!?y&Q08r*#@v}sDCjU#QE(b3pAn`TTjvdN|y7j3*2-&-R- zJn^?E7AeNJXrzlNv~J!`9?hQ-X^P?=#ex#TXWCuk$V7%W@`>{vQfGvjdEP^s!y_M& zOA&%oA3wwm*K9_ue^#w9(wx@FWMqK7#@9I=d;DuOAum2h$`Iki=I|+R z+=w>zlBN+p(;LPj94QFbsf9=}W~RqJLi!QmE>?pt!2SH8qr<_IHDj2sv4hWB>(K`t;Fk)b^1W5QqjH}UW3|y3tMkf_u>>5IVy%9y%*I9aCmY{| z>^9gmDH_{}EMB|tk{5J{LA=8~YTrL#fhuw$4EUbY?Y!>DWW*WB?>TMGc1MQgdsP)v zfnWchc|L#l>90FaIKRI?=>EsDJRe`05-ISC58qrfalxgnku?ZmN5X6QZQ_En9SNEs zNf*7%jB+C*{gpLQ`O>+iHF6;WXa?;(!}3v0G{#gK#UdR^%nS34O^9$J*W$?&oAM>F zWH>-;o!F%ajK*9hkg4y;4Ck>OiONVJ%>8!(Qh_;*w3#gV86p#hUw~79Clsw{tW9G1 zv&!A`50bGU8rgxL;kA7FYR_^aOd~YffG>~Kqy1xJjEu(G@$5XyX=I9MBcod-^F;Ph zzC|NUqZRsN8;04SlvK<6r?Nq_ z@(jcGVK*{7IGxEb%~>XRkPPFoTjgKTtPNl{Ce6rh64964RvSq_!m*~eHjJ=6u%%emav~&{PI#v2H?;tn?DO@TUu@U@J3K96I?SXQJ1i0D z9d;rNghbqi55G+9s65To58VDOP(s?MOTN>%6DdJ#G7(y71kff8WY-Wl10Q__P>ZY0 z6Llh^0Ad+^1ds{~=&sT{sX8jp@Y=uu24WF;IJ6D%csF~Z7hB0)&@?Zw`JYv)A9=3eH)9kO}av7J1L85VS9)V9g z9?8Wy&wT)INEBVG14TM1i*ug)T^qFuQT-R^JDDNN;@p6^@Y)OUgbQE|h|(IV=MNcQ zew!e=*Mgf{BTGzp=O`z}?}YG|FHR#966#mJSb51b6DHRzfcnaKM+$Ia(wc(B(T2ue zhQ=hWk%^rMTjLZji!P7#!XDE3-NZa>;_Up7Eg#Mt(MFb#8i=IPMrO5vs^vKmsp|4& zy;yy^uz|ACmMu*J(Hs~r;beYM8XYOpQEuLq5^dSWBoNWXct<8?G`1Qo39sc7vnxbZ zOLR@J@lJ&C5c^+V)uEILK(m`@rC5z7JPB(QZ5fd!Bps`A1iJK|wVb}93U0+0C&K51 z2XD*>=DQNzFq!d(dH>4;pcP z&K`7V_Ml&UHE9o8Jk;z#N9>T$@aHHHO9%BKq1Uz>&Ez0VLFLz^nS%ahPRg;_IXz2Q&pO*_>sC&U3$PqcX41IaAOeJ1MmGw>p%A-V`)CZsyoPnS$>A zjZ$VvnS%cDD_LZR4;uFFoIU8!>_K;5J@o8BNA$i} z{w4~~aUG?r*H>d8UagD$E_vj=_P-*fgLYY$o{WIX!zptrZ0;p}e@+V_Ns z%B*c32lk-h51R%5sM&*@hqML9qdn*w4@%z?v_PXf)u9~p_MqaQnTa+~_MmUCQOXP{d(i)_G}8GPu?LOP{-oQ3W?r0P56a1PfF)F)D85TJlg4|EP|>KO%m;XY`fJYis&_+UrW{d%@HjzQAsmb(PP6_$he>tu1yPPtaw`d9|Ym*Ue zOzOoPFUX*2W01oKZRyF69w~g#5yNu+-b3^E{^H`KzxTMr2R-d)Gb+h->2K|=)}^oZg?yb`4>9JupAhm8mE%zqlq17ix>-%Er~ikRW-Zv}d(!9--!-&|ZVidGuZ)e9Li+54tD?A2f#t zAvmD+WtMmc>T+z4k2o}F(eVZi`i{X34LUyu4Vr2N`tmUX4f@{(8uXy>AZ9GcvO?#% zE4{p(+9Q3B3g7^UAL4lF^ zHmMX52uz76liQnfhjlcK3^HLUemmtod!BKsd-iO1LOpx7IdwgIo(nv@5qVpt2R4Ly z^6*@jFJJw5#tY=@Fg%}li+nwSB~4>VETrXye3aADkuT-8JfDvOTVBj}7WC}-W6NLi zqYLiDSNXCg8Ma!(0uOJ|zHErI))viO+a}Q@)0Q!<_2X_*}=zTcz%0a_#UX zbahcEj%$s$AcKCC_u^IT>{&0~!H&+=^@g9wW7m+5WZ4kv^(qPVvTN(4YrV;?^|JU- zNBEW!yas-83KB$JMkI)7gd-^L<*Uo57QY%;Sa2ID)4@@7(dDyGu= zv~wl37pcRwD56)$=bA)&&2KML@=|_`13Ephw+%(cI)p598N1hFHSot=lYfpWFIm3U zGt-3QYPOW%)nmfH)_w}f(uBQ2WRKqb3^f4{f)50v0zR%w|G98ow0hV0cp&mPa)cM` z^3|S+`>M{V(dr#eXh(%pzN^x`;_DPng@lC2=e=t;FFL8jyVaVgW6oPj3Ia=iG%OPk zM?53>OZ$?a$vg^krjYzT`J5YJYA@1~zg|0O677xXZ!c38@;6CQnaHpC=a}*qneyhE z&zUBCcSK9@>M`L;{>U^miX*TKpZ3yjkW9CX{ox(m{;XKvmljOsb=T6O#?XSPy+})o zCPNENv^S!^7e!2_EVS@trG@67WAdZnrhNUJX~K6$v;?mn6K-g+48>=sg^v{KH!b6& zQ0lZ~GOxQq!xtTz&1(SK*wY2Cq-DPSo($b>YL~5eF5&gX=Vlri+MY9x@ zX^v?AIVQh{KVr(AX~K6$v;?mn6K-fxgW@eMMDj`_XGfMvwOF)Fqbp1}({uLdZ%Aqh zzs~$#6j_GfF!Dv}u~}ky{OwM>=^y(d5Nxl)O5g?lavlR~&#(cwpkLuW0Z<#fwmL!J z8;G?^w^0M6N>m+dEJcA;vB*SxRM@O;pjO0UELMi#%2;ENi5OdfJnqZaYiy(pzi>4v zh>uFd##k0pu`u`hXe2~ytdV7)29|-u%)=7#fk5U!ATw0DXUu1g5|+d~EQy)iZ$b=1 zLRYyxvMDMML0w=4buc=mF!7n!MNnhS%)Cw-fSx|6G}aqm{7}`6Vdz-KBj#AoN28!nFn*Wv^JXKY7D?SOfiX~FRbHGiI>KP0ZpLCr5Ue#C#a zYq3QkADl*E_=t;YV@1oNF@71prFMi9k%(9qBZ?PC8~G)?mN@Oc!0mgnHCYX;P2cP` zfF=yLjeb;u)_FMjPU8%ucM9^OnnpS`do!|(u>Mk8ieznh!RJJ#F-uWlbg877<(uVm z8n+>=N*AKD>1VBQVmlCo>+0Tw+}OxgJfrg6iSc{j=OWVl(vPS-okm7v6rK{%S9mrdHKZ~{V&$wn_na>% zWrmbj@eYI15ECj1Wuo$3i4pj@EKYvuQ&gUgkW$wjSvo1<$H%dzN^VD%(pbT5QCXl8 zKZ8}Rvj(eN%ttzzXxMXl!pI|ODD3{Hsa@!P7A@STR zH2-`KR^IVXx&A+;colQ_10?R7IBy<#AZHIcG<(pyUn0c{Bk{UniQ^Z4V8Q1oABO<` zz_nKzmE<5SL#zLoW*PcvVlY~Ujt>67MMB1bu?!s$e_+`aW=uP{dQ7gxHj2wj)vSEC z&PM676Or{LCd&?YhVz&qV&Y^;O2%D|xbWIIp4cmOrtBJ%`#s4n`@PGM%!b>2p|gAh zgQLrb^TUSPR8E8y=x*`K%()qi-2C7^P4;Sic4urJ{8~%`ZH4tG-DacA0^DbD&Y6b>nR#eTxen!^ zHxK>j=>awmopPB{W=NTbZZaqh$BKFAr<+yRdM4F8w6k5!L%H)ohjl)vt|?~^Iy8IG z>3>MtgN6$JfOm!eLFnhP#(Su!#6&^Crg9U0VMk4M5rN!r!d$zJfwGmIz0T(>9oEg? zPNQtVFR7_;zx+uG#KC-i;I>Q6 za0(NqS%K!-sLYDyJTUJuZUu@xd9rgL^eeyh`p6rBn_C2TD zdEJT7_=TO(_nbCoyCX;GzgJZ;wbK0oHaRJm#%_N+XAiRWptFRGN8cWF^M}lE_O}OJ zZKE=4o5z7YXu)c;;K#X9JQ{B$dE;Si!SQGh+V_yEC$tAq*5*t>sRpCvU`g7qQVd2m zXjYy%2G{2f6}fo-cc_*=XxL2{K9glcBGM1Z4CPB>-(O`qJUC53y}!`rOl!K?O|m z@F=?hU35h7C__z$2u68_2S&MeJ{om!c$9YlG!l4}jm$y($Rs4C0_**=At}rAF-B7g z!_Nl-4HxtK)S|#c`O(lWXG#&kFQa$@X))07N=CR!0o>|`i`R@>i)k=i8IiUWXL7EA zUo$XVI+{tCECWVqV6zl$l&Du7(*s{^Kat2{9B&I(sUTVk!=>1fNH^DHo+D7D1WN0R z!KIZXF}Q5Y^fMKM>vcu%BHq@4F}S*kRoN!&*xiySiI%Tkj9nr0?z*=wUa(8P3B9 zdQ$LC1$vT)opAZoU)~cf7rav@>xUQU)0rP(YA@0SBSYES@_Nvjlq5uu}=usnMAYG?3vN*BK2q{ArLbYqB|oYDj1qd z2qyFTY6;O{`WhY&ok z(tm2i`*H-6^&`YY!x2pFMOs2EGlbAYdj*1$Y-BQJAw*MVLTF)09AI0xekO5%HM>_y z8V<0)8C#B^z@8>8oGqNfmg(=gkunoLP1*vPXnLaY*O}i6zDeQBlQED!`|94$QY(-I@qF98&K7w|OE0sMAj&U8${`fvB`RgrAhQm1?G$iv?eh&C67DT#5VevDJBrkg5Js6-AWTHaLg!~ zNU|(hYGN6z%6$Vp%T$AaaY{{0b-t_=K=Dki$pChG;GrF;0LudFL3Qj8+QdpK-2aw+ zNGWS)2`smRZCv{8YVWmu0zNXSW#}shBDWC(1!H-q2jeqDd=S3UGFmptj zvZNj=Wi(bKA$$T*|9jyV{Qh+Rw*(v zjv?|)?=THrvjrUm2S1rjU{;#(1wFjaX&jAjEiVKYuk)cCdzl=!!@Cjg$S9`A9-5c> z^DC2H>e~X4TIMK!*&{_D7jVz~>nsAAQveRy##+rG)Uwq~gZljK_SmOWd{VSAh%~mL zjy81hUo*7cyAj_of}J^sNo+wtUt?IGB+ag%{+c7Alk_9PJ}i1rGlt@ZE~-D- z_%39(!R8Ky1uN=6e&>>!mX07gv=cuFLbPH8+jwxOroDHjIjH~k6XT#B$%18Y!#CGV zTySZt$USyM&+krLaJJ&-O^7h*qPLk*7P029tcl8(&MmEx3lI&3#MgO-<@cJXyxvZu zSfn1j1z$!Rn^>=)$jL!tN{hgf(&3~ZXR)I9>4bM=UJIljqcT!R0wY^$M>!GBIxA@S z-7gbVXQLws57@QnA!$eWrovq$gzV>{jtqO8b`q6syU~J7?`wjPsi z6(ojxPq5_zw75atu6Y*06N9*PuBrWiP~VI*4QY@1#l9x zcz8+CNDY5x#8QezDi9Z5OAZ8Z#oy3CJ9A|+VxBrN$zFVFbosE!NM^%rI;TN`qYWb% zYeQ`+C&mgK$$fd|+zdu;et5tYeLQw-9$1@6FjrX*5G%SEXi*Pmb)g#@#yMsNx`^{& z9_{d-rg{7k7N<;L;0+hvB5)Z818vCepjOhPFL=g_25K^smrCe@734Gp-0+Jd+k#Er ziNZkr7P5yPzMotpjTW3pA^&AddI1#4p4*6|u#{j3cgAMOF9V?YNx%&GWdxQFPaA?Ihc#%mk5Uir4y79l*P>6^CdpNZ^Crn!J4sreCno3;#396! z&A72(gJjS()w2GnY*02gHMtbDW->56%k0babp|~0keQy#4;an|iEJk@sPCzJ0}YR79PPSZSoS!Sb>-;o761BjgmaJn30*sq!W8n{W@ z!rr0Pq)XohcKk&pk?Okw%IbmR^=lxDvkm0;j163Y2!kq=KD{vpPNR&?Ww${*2;bR3 zOBv4$nPhY{6KS22i9gBC{Ya5z#Mrp~kJxWtGz4MNK4^jc2*NZND`!f29WgV^NlsI?p}L zMy*0^{a5Nc5SmR0)gvyvmWmV%32V^Z*2sMRz@HQ2w+W(9Ex5Tg(qO_nM>&oBjyHZq z<%=U(@ItVte6i{p(@dzWS@1E9cVY~18l^Qww?&smda=FKBYTb%?!?#{r(kikp|Ka= zI=`Ekhn<`i1F?n?%n^;Sgw#O%jLPd`Y@mf-mZ~mY+zUmZ3!5YxEyE{Dh$Ij-g7J1( z?PV=#&E?B_u?p@=iMD+0NSz9w#drlOjyA4Fd%|n^1fPA9dRL?gKT@>lYfjRkOgd!a z%;V-wXb(j4X=0NcV-+kJXFvC>-Npo@@K$_LD9j0RRDNNRBQ-_^T@*l=TAA5yD5CP> z7dWC2Ej!o_4_BE*K_Ig2XdEffcln*EaF@=TJd`hlO%W3 zGk|Ze5p5rSlnGA;8vYKp^hgUVJk#5Ad{}g{Q%h(zL9SnbTGE%OIFt#FE!FF}TCN1!=Ex4wYh zl=^7nDttg3Y`}-7xF>_#`UH33H@fNKqspC&r4&6%{5loM;_bJC;`a54n{xJ`!?Fkc z_vdr=Ad$qIpNFE`4Q}J?g%O>6XSIs5O1J#KlJ=nQ4H0{gckusF$fj81o$S(^GYZ}N z7K+1ERMRymbP!sGZuhI)7J+nts|zpOmS!1x8d|cfZ6ndOL1P&@`zTq4z9fVk7|YOV zTF>xay{zV;)p=$$?%>c=)`FY4n$U9e0~=*lnY88PxG)b**{-YpA@7vAJo}D}d8pMu zO&*`-p^b_=nKKU!oO$R910H$EOuv#$KQzrl*C^2B;584m{Lbt@C|M3<4PhF)`QrCu z(LB_=)evOGK@fy#2CaGMMFo;Ppn2$&*Y`qE#P+uDN}cDv`kIN#yi(sGB+9f`RI5tP zJhXh+fSQLU_2_sFdh^h~Dct2inup%I$MEt{G7p{AZln>7f`@G2gWqCze7Vme#tDteRa)z_vHoao%}| zp?hfP{5DzBW)@knKkawaLZkJ``HT;Q6nSScV zJIRpwxEyn4IXN`p@x$c&m2Az>G!1=XKLDEj+}`Y`wY>0qM$3zcfxzuY>g3Q**6X0; zP7WE*cH=rjkRfjx`n3W}9?&%O>R+-f*LeSpjmo@S=S)L`?Bvjx7j-BHy=my&$8?qr z;K`w)KN~h5N~WO`er2T5F=HA!f35T=-89rOGtD$4FG`4w58e6) zvl92W4_#-YGAo?NfqiI%B5xkmOJ(0QP?X1~edybYODXmtO5B`j=$~#HDm7S}hinub z!lt2d`vKG(6s95PezW(W$tibgsLH*$*$`yNn}(VdV>0m_Tqg4l`JR#GX4%uf%d%YO zxvOnd=H)tP9~xx#p~9^?l!M+r6i_(Kfjm0YwZ*XcP_hsG<$sPf`_KsOQM!F7{+a&v zp=@}lJ^q8jLnWY7Mm*FCL;(ND!$U2@?<0bT8VRzb>YhE@TVBX_LOnp&k#bv}&v)v2 zT3*ce;7=E9Q0&v_g0^JXrv2lgZUFdcyuc}MQ#{n_P3d5$3Mi;xsO>=f!iAbW+koZ; zFp)ja0QU*Eb@yy{>UzUZonrY^fWTm<#_ZaL1fNV0Tu!Ym=B&O#sOP$|Y_Tck(hT@T6Vp_L9{8Py(Pi-XB24W?>hLB31vSxL132j6>!m=EkpV0~ zY6pO{EI5{or*vLG+yvSziR0HHzX9$hpGh1)Ey1fN4aYCkoB~A_Y9>Z19*g*x%g1%; zKZ!cF3p3R+!+$@ChOa6 zgPNNJhHj@&v@FnWn&?xh=AkF*Zy96*44o?XmPtLCSU}55Li^hC^)m_Wt0iQC_N_qi zmIXLwHPXo00hC13Dbq82n(2(j1D#QRqY`{lFg9Z6Dm;MS?mHj~ahWlKH=`>^ z>3=~68WC590%HPjN)d-#Z5ys(cXyu##m~mEE8>+6qSk5H2)lv9}9*lUq5G>@ZEyxEj(iyr}gQi z3oRp85H}el459zC`B=n<{Jbvx=fZVB-zH!7SzxCW5|>*LZQb8(^q8m{1IVG_r@P>{ zy17Q|c%^%1GGh(GVvT%)8<+sxP=*ik6UwS`%Y;*d?wH?aUtr&cUM0~u zHyz&j`Z+Z97(C8eem8iWMf`5?I7@9B;BlU3(*TdN(53+%r(D%$Il$u_XVdh-9Ih-0s3Ay!Vkus`l~CG?$jHP&~f_`)a`-p z9AS9Q`6!#l{Ui1g$ul3P95C+GI7;_7uE0~#D4obX3=#aWsC;jg?_?^+AciruJ#Xm< zs?rgM=R9#8+jwyBoS*+>nkV&BQ;jFJ0L@GXVOWC@c0>OfFOYz;pbBYuY7+is3WRyo##Whs` zQvmY5%Mp-DD{>|ysnb}4r%W7vQHU#`3`GsP<$MHIxi7Sc$d3wMQh4nS1o~{pQPA9`-PPhzoyA%u6qSG*(SR&G2nCS>CHYDOUWb(_AqNqGQOwMm%U_|5`3^MODl!6hM zfseid=ql5^Oou3-MvhQCK!tLXc5^&5Fyq1hm57E!PM~>KKUBcp*+k@I3mgU4T#Bz& z+5)?hKgnzvGO_h06B#QdlgExAMH>2D7DP@q4t&XM5X-C*ROw=%MT{%o4~FXaILIMt zkP2~GfSEhI_8vUZ>liv9YN#UHvI6!=T8#b!71jo&q_UkzNo9kwO*2-v|7jLcsMSP_ zc$`?AN6>3(0F;x9bDsNy)mawjJoi=`wFU4FRZBr1lbDlR9@3#4^skOg?8Gp?d7MdI zEw++3`U=k`1Y&;d#0T;IS3jtfN&1u5AV!f&8+L&yJ;MG)IF#AX**_YmAa5Q#b}96| z9c+`Q8M4_3jlNkr0W$2}!8*PO$>HzSZlRlDW89MLc!Dtye?WkCW+Jub#PS}h28WndarpLtK;G59|j+btsvKrYqFy0nI}Tf0AW! z&U636MrB@{xuwmShcY>qgfilm8c_4lFYeKy9Q5X)C$|i+dFXq0D`ke1dFY-agIYRh z%tKq-Wz-YTq?(83j_GS2%GrmU!#^+7y{Cs;t=xH`gFY{G`*}(G(Bh$HA39=(hTJ9! z$iaPRXe(axeXxgy#+;pI8am_LoM}kkU{~edCuAHL)6o774Gp`~3}=6<&|klAqB1L< z^Y){7UXHk9;Ly;DjYr!m^d8fKO4LzWMsK<|KsKp|Y4o=h1S*Ce8(-645$~}EQ7^*|bG&Dt_Ru56jNXyU5_Zk$upZh93Eq^e5dkbopD=G?Y6pboln5jz8z@L5Fr;XyI8y&mMF{ z?~ncAb_&FSGX;4YtV4z4+~64XnoSxE~T*^A`ibwM^Kv@7hQ*j=3u zNIT8}7^idU;wPm6q26dvvJ}`XXo+UYW0t4btBVUj7w1o(TQBdc$wr@PmOfpUB)cq0 zx>G3@&qSXtU+u;0Ht6$Fr@DK(lRup#E$qUAw)40RE-BK+%ISZ+ul-&Aw%PZ?A_9?LbNOKCBQzRX+HF< z96dXAx=^?~90zzMdRE?3>0WS)_N;nW6o{!Pnd9Y@cL^JGVT6UrQb$3CVn5@txT~IY zuqc@)IWdhROSopOQCLrw%d7m1;#d+e>btmlEzGqu_yYF*fxO!dCr|m|TLKGZ4xed>v zx)brcV9)c2p1S9GslE_J7yH?e!adLXpZ=VeQ}b8GE*o7iw(TA9J?-yqb2gmq>jvgh z+t*HVT0Xnn@kI+puRq5Z#0@cDX9Bb?5vq-pXQ@0#%X5r8$Kfdk!B+yobH>~?GT1rt z5hA4VXBmGEe*~z?@{_UC0}JD46SVCjpRayVAbc6FqP-gU_jvfV{JIk488KNBoxARa zlO9DAeC|a^FgFVz%J1a1vT++4_+>t6=9UcWgn{90b^$5_lnP4wiA z5n>yh^FNc)>W!%wu$ zXZlbM$~(JI%KOSW)8un*_bY*QFLS0~#-H)IeR|;49r(oe zHxM@W_3449G0CPsH9c_6Mr3+sdf<=0MaExaa{diz5(xVZ!geFYm>hB&2YB|^Fp^&F#KS^sDuf?PgqpTb?G?04Ydg3;mE3u_A- zZv8a+Q1_l^&Z)s?w0LwYxCiM$+f%_W@(hCUOWbEqfz5S8>H5CI%haHW9bRDarVOu) z#xrb8n;qwFjPtdW2(RS@8ctUP#gsAQa9to|J@?5Q&JDj-Q2SQd*tnM-0fdOo3FyC z&HWRoxeJuPek&deJ5G*UYCj-Z$%@~>H|900xGr#O1Iu2E+xx(;9`Q=x{VgqtcOpg6 zQ{7EupetL}0~Y)28Pd(KoHIv1&%ahbTM+jo_@ZTXDf$&y`{Y=LV8CBphxTkkQ(hg9 z$J2Ps1;1S1J{*tkJa7{@?3!o6Jt*CB)*HzC#w$qhcd+BuC)PVHEj{m?u&!+|G!fjnzPl1`NGm&$XpJTJqO5+!`m z9lfK1zS?u(_zQOxhIjV-VdUsn0^0XX_Gw968s6Fc zO#B(h(Lc@~9sJ`Q$Xa}d;0i|KwHH2@h-|rO)H5STJ4K@xzYN;cFUFfm_bm#y`zTb= z^v-c6R>QYx_;z1sF%#^;8(H@)s$2ccRijJzeA#J~0o>$8ADtS)BQ|05-&&YBR zv?9MKDe{95`9)|R#QuWQr3!DQC_xlfkh*t3D2u$8)!@?6MUeID#&7xbO`qzVDhmRe z#wDew&w|hfsa^6-5#72P1hE>Ng4LkthQhH}UETr8;Ijyy!B5|07ly0*N_W9)*f-*` zymtogUW#!6*hULIeGq047 zVVBFt*%k6}&Sm(x^BcqJ@!^Dgch|~i!QJ!l84DHO-N4_G9Y8j19TtCWR4~t%=evuM zchASK)?qbxviYsUY9-d^YaLc^zKP{?_GVw}tqlm_;^e`{jG$r>y?l6&guw6U40joF z*|44&wU{36{g~I>!YE^yC+IP&(0vOE(g>l?NTtuCrwM(AIpu`|O`V;f&Y{u-ED;s5 zXm^3~*uT4azoXQQ|EWi0?}p*w1>oxwT0=z`ARmHGx#2_r(2C+;1XNnW z7mXlqcwA6j82u($qczmaES)EcmJ5{}+oj$Kj)>28oEG7M0z4Wgmeaq|bWQLyg_~NW%j^!q8pYs2E-P0ZGo%Zo@CV#<{ zKlKWgXrjm_MHlr)3NI?MZO&B?YF2I~Ha{zh>_#ZEuZkjDB8qIWr^r%tQIRb&itHCs zrPNduOi4+-Sp=bxl!YoOJ1e9*t^^ddg`3l>qnIqFm<$@FxyXpgLJ^Zeh{xiw$cE1% zt2|Qy-govLLd84f*(A?<hXQwh><8bya5{~@>a#Z5tmY8U$7T~ZaAOO;bZU& zFX#m`%bS)u-w!ryrTp@_uYtK|1V4R7(Ea1dBHL$F@W&SYF+QFqvrzxFcaW$PqbelI3q)Q;-qsLNnS3tZ{{%2m7&msb zhPE-psowEOF_1qu_o-`kE0rRUv`deE|hBCHG`k-Lahm91)b_3Ff6zX?i<0lS$X?LjFwR-aE43&Tk@jv zC2<#8L<$8W-^I7qP&exFxl{q23K&VYwuUw_#3|qUsMqMm^v zygz^!bkJ!Ff53eP~CHVe&=k; zxI(Wf?Ow|2-e~^5>h`Q0z-VY^c)?CzZERem|JnNvz^IC~?b(vBgd`kV3^Bq1L5hG85Gl!KDWNDOQUq*dv)L5f zBx?%I76cW<61!MqztAstQbLrP!HPI8`=Na~f4Hu^9@F`UZ68=3z5D{_^2x5{XUFO%@GB-pp=Z=` zFa1vPm`?Sljq?|kYfD$hiiw@-7w;`7@=s{SNMmw~N3>X#dIZpNTMV>*TO;1$#3>KAWjsIoFWQ9Do6 z5+Q^L*!60=bTN__l}N2mtA8i2|H$afRd%+?R#a&5CP*k{ql7pbH^y+@20n5v=MOyc z=k;JRv}BW7)>%ZP9TYvHDk2W5LDQaec+jWY8u8=2+WOMPTWu`=RQP8{{+Y->X*to@ zlSb0Uo;0b6wr;fVSafgne8>3I<&zF-O_p|~UmAr$=HPYHZHYKA+1Z}&mD525a$oXx zZ?V6NNYTSG_LrWBKnzqP&WbHbpt)i^*3*X_XSjx8jU0u5oz9(aMXWuv{4u^NA4ZO^ zwJnaXM5QslHe_zwiU3TS7=9A8My`z#D>Bw?f0ihm?Q8MPQoA>yEkW)+SM z>X%$v&&oS!leQuE$<9kLC9OEC2h}~Rpl-B5??$vQh#_&q@{H9+{M9=rY0o>y7{l4B z#h0!^4c3@T9dtsmGRjylhPE0?%Sfe$dMO{@jvmT*rSb8I>Px(Vw0)`F;@>BogU0I| zRI_sg5syD$#_JIkxOjMGh6btpyepAc-hM9C2BqOrQTkL#Z?Z`LtR-nQnX|IiOVVhb zW#vP(ka9hwtVez|=7RjP2e4*kb2IWQ=)vCDX($@kl2wUI4%*6X*!vObkZKd>PRifF zBh7WrRk6h45j%=fV4Ywta69n@E??hh3tU>B?rejyeL!4c_tLV074vh-QSE0}Gwlbp zNNI#GS7<_QEN@SfA2i{bIkzuEG`!0D(9_YhP%9+2f@^22yBhdH#8~#!UpJ}#tm|ep zXtOnyDRbL!oKp zF)4~JfR>8I0Cq*GDRHIID)fB{-hMiUPfLr_XdyFstLL?{u6(BJiC2(DtW^2g%CDa< z=Nli}??hVH;drjG(_mU6X6zT0H)zs9j0C891P;PU4l?hQYCK;zV;2O)+?`>pwU; zK85l4jXis#RW$bOhfke(;eyZnDojP&W`iB@AF&-o{b@x;M=UbUWn6yk;Lb`uslTl+ z7fOT>_EvcggZU?QqsE@pM;d#2_~&^3Igx+f0XFd#&p#{q=e7KE8UI|$KP&j>CH!*% z|D-y=$rt|&@XvhynZrM`_~&{2a~A)c&ObBxCv6xu_8iYYsZ~QO{z>)R*pq6$vFBiX zhI1o*k^#wpWI!??8ITM}1|$QL0m*=5Kr$d1kPJu$BmHoQ;{_t*@N`Dj83V=~yhDJHp-p><(b9{(_!WGleNuOZkzX zT;15T2gXhML7fRnIf%sc(2% zp>*;SXH(XF+VA`h8Eze)xFhiR36D=T{QGvVbona1hX3HXo^3UsUS#+ar#;l>voDtz z{%iX6tQ~J(Y52eG8*|;ok3VbpA0AV9_1$YeH~e+|6B@fk|7Q5Vxn|R^J2srk^&_2f zPPzY$r3Y>@{Q2Dftl{5s>ADL?jazH@>qB?XJLULwhX3j@Kc0~|v(E4*_8&9-P`9rQ zzvuqfMs$5;gW>m=_8&U+?Rvv6(rYmMLVmm97x4w3r0)!Felc(n|2M-=abP_B6CVO^ zZTLmF65&rY{33qmNdHJ7chqNv7Q$VsZ@r)B?#NN2$7GBhH-5qyXHJ|nc}nJ4Q>RUz zarVqvv(NEn`*QrbdHDr%FANkG6$dXWDJ?6XH-EvxMJcBa95nc}A*T-=cJe7&`i7(D z5$TEuK@Yh)M$e5fx-R6m8p3F-Y041hXbM0WVa^t?s1~s37O++=V6GOh)-7N$Ensb0 zz-XLp%23(kngS3;SbPgu+ZM3q1|v$dT?=yUTfjQBfYBV%l%f1OH3cAyu!I({<66KH zTfjQEfF-qn9p3^bX3e7`P#I1*I+%wL)};lkYYUj#0@kesta}UCi7j9~TEKcXgZ*C& zzH=p+S0cv$9v&*IJ`P&Pzoy!+HJ%<0qV$0a8|-CQ zs{7iN%9HI%ML)Yz16PHc2^+$54csiaDX_JO7lL2uZ&y696|hyXS+F&*Y=B*X|g z%DjOBpCw`wj}&iOp*IldKiV5C6%lgaOwTW{X2Dh?Y(}80#M^&jL0*0tk4Rw|3&O+t zAwe?+kH#)R*r?*-3x!X7R#L_hhQg-$^U4F>5(C+fuu1-$g7QKmh|NNQr}+yD`j09O zkgjAXY)nMh>j<+%;qg?waEWr52!)Aqm|;s1Hs0@@w~$MT4+fQ7S9g(%*#sW0;9!c+yoWqO-K`$~P z9_hW&;)RbfdS4Xznh3ooin5qt6!-sE^Zo00E;xH|cVpbUxZ_jfHZ59e_>(`l2>+ij z{9^y(OT#b9W$vd4{D%m9TZDhAN9RMVpFey{_Zv+=u`jdRSz;YS;|{R8KqCI*f%#|6 zV!YDu0K-^cW^=H*eTY{VVEcG%iqx!OO5X;gtkgAdiH1U@E}%5{XR$5=e76IFiVcnXen`aiqsVUyuFW_jTD9NZv;Tu-?c5swVVC2CT66Hec@_dNuTH@SV`0 zvRLK=e(214Fkdg$yRr9SKXdlo46dBu%KnY7@tejv zdz~-3F6w)>8HB}yFguH16JHp=#&@Xx(4qKvGjwl!AzS0?u(87tMxhL%!*-Oa2NZW8KGN*5CIJ0d zGFqFHi8@6Ewx$Z)35Hrzm308a$vb_?bsbQ-89c6owcEFm6}H;wYx7;(Z`#!b+A*F8 z__imBWbE}m`$ju8horisjY;*sq|Kdwj5&bn3nYukXl==LTY1Uq0!ej&_^rN9Ta&k< za+6s*7RP)p=4fOGdBPyCV;5@W9a*3wHS|CiUdgk#I+PHvWb_heUBJH07xhC-LtKMT zX-ID1=_!<648ss8(nH=!BJacvzJ#x+WK`;}*lr(dY)z5dv!p+ge)c8pIc{s*R$t6k z+cvh3t6~s^4wqaPaPi(oYFG-7)S~L_>+KtT_C3k<$-kJbAFb{eAFEH=leE#7wEj4Q zQPO8;2sM(_;OiWU!#|%Z#CEeSKDN_V z+Hns)I`r7jdz~dZ+YnIq(3r(AnxTEiCh|dp)uT+TE|$uaxG}Nbm$)TyTkNht?7qTS z7KjZSy;xt2Z_!=q>UZuvzzVx;^(AjgtnXCsi>Z&<9<$pQ^K+X69S-=q97x{TrQUb^ zfi4HSAMo`#(06y=9lpLByVrH%wYrho@~u*3dP4w7Qhgwvcl+n zfh0?#a-dP|(1+jlbw0ID-O+wWfb9sh-{Dhts2I;O^ih^|;T@<8FCR2XLe5H^&tAv2 zP~Jadyk)*lEQxhFAli@}iR)>jv2?5JhMs07m&DaeqWsY@Xk=%BB*fnlP<9Z@+%QWl zF-auVS)*{JFrtfg)tpwztjlj*LV=DUUVAhU=mn=-3(>-pdB(}en9nwLj17G1Kt-{R zJbuSIG+cDcjt6`l9q42S&_P8xDJ@{U1e6wLsF-bh0I*DOym*PC-g(W~Q8N(Y6Q9BY zDpikBY>e!rrIo>Cj45?`1fGHuDbUDrR3&s_>d)#D z6=1tKCu(0O`uv|sZ&Le%fi6x_@+fLPq=F^YuA%`I#_u2sP>DQ$ec;6e+WD(aG!p3( z=ua5EXy)ud!*DAa4bgN_c=V-seXtJ1BMTadM7A0&pme_vqk}UU(>AEF(u(<>IOTlN zBnc{eiz)F>d1Z}cywr}=DZI0S#--yB_VkC94L@|vtV6j!0xWm`! zhxRm$U@5Yj?ZX&i7c)br#za&EwO~lpHBcoJCFp!U$JXeEHVwXnhQ!^8Sf%`$z}hfh zG;D5m$iLVH8N9__QoHO3#r z>dG*T@^dicClbV08EYD>cRT)o1CUB2VD z^!vWwu0TI(?g@OZO$dwZY)IHB$})>3@fMWC**vPzB(kJmllJ+Nc2k99aAtXHLy;(F zd>*sy#EbTcxKtJRJVpyrxIPNkM=M>(XaAv91D5-|FiwWTpsghA@Fo19P_uP5u&q#p z{em^|Z@vU9!+7gueBhz>;uP%#lVx2X`k*iRhzm2D-duEosQD4^J{H}cB^)eFXyEiy z>vy0v2^dp-B3?VtJ5?U8YT+(S$JG4-Dn~`#a&_%cm#3Tnm8rJ;vyM;;B_641AkSFz zTKe=w$FcY$7(7TNqnLacB1t`Ert}kCU>)9iFj=hg#jK02i{223#h-=Cb#*r`yl7 z7uoN$KWDGE$2$5r&U4)EsCMjf^m5K{UgNya`HFLm(-k!*>awV(qrQzg64fJmO!WNd z+oB(hem8nk^l#B8v>MSWuhoiHZ?yWcRg!D4E7O(ly4LlOtH$-c>!2&9^@*)Vw4T)Z zqSg<#{<5_#W>AbT=E|7&W46Y`v>DQ7dK-V6o7+6s=KD77Vn@ej#oiqIeC!voJ7e3% z^@zqmY-61V+gU-bla+qzV$ZE?$IcymB8$o! z%NBlmE&F9UX?r8eEBi`vf zn9{WiQ>LgQya0ZRdn{wtsZ}GAI+mZ}RHxFXZfY98_vp{U4e|X@J*E1_pE$1jaXT`i zz1K$gT@mRGjPO@P_^XZdDG#fKm(?$DD#}8q;(-mqR>4v@89lD>nV+VvW*9xS3HKU4 zJ-!VoSKaDV)cc)E%`Ij=6tVs`=y5y3VMA3;CF@@3aCw5oir> zN*_J0j**`yss}Xd>isD)!e130nJyDYq(<;xmCwJLj-kN+i3h#@n{s>4y|Z=SHE$UG zSgZ@S8vfUw{p8KzV|N*TO5-SlzSLAZyOlrkdkTNI^3xn{HGjAAM}FVr?^gcE@6`O=${+bXp1)i9Bfm5DcPoG79?{>e z{E^>P`@5B2wN8F`{=1dG``^6$C;rXLpYt~_f9~J4{1N4rUde!DpalkMN<4(>`*Hd+ zxpb0UU++>vj@C-bCYMqRt8R8FnXn;yYehwP1#C5Jy$x{?Rsma082nkVo^39rVwX$7 z)oCSbFI+NzXfF5Q1EHSpTuKnO61EnWZH$Pc$BlG7H+ZZ;{!c$0Y4w}WAs%imC*@l| zxV6y9jL4s=PHU~y!e$K#$E!7eCa?&Rf7wgAkfC?AdN;Tl58l#SD?!*A*c1=A%xJAB zV`0a^56cDcp&~p;*ciycW+ARJ68w*XEL@70Iogb`%QfZdoJ6`5m(Dp`+MlQIYPE#Z zZ!xrlcRdCUm}Txm`+`mR`Pk)YstmUOaAQA)aYPuWW};xCqiuRKBP##2At8Ea@Z1-} z+fvnC!qwj+s&0)@Ja@(@H7iBo7uXJQWe!k z$%<*CRKnK8!!{AG7I7}{|&z%GEj7xpgL2VpOUeG2w**e77CVV{J38ul94XJB7| zeHQjP*ymwifqfD7CD@l??}U97_D$H=U|)xQ3-%4zf52V`y9)Mg*mq#xg?$h99@tx9 zKZacm`yuS7uphyG0$T~Y26ip%XRx)fpTpL{egV4<_Dk4DVZVa?7Ir=C*RUI4zk$6E z_GZ{kup42&hpmU*4Eq4=7TEt^%;A6TT{|f|GoAFYX_lT-{!J63rDgsmmH6E%O1oL( zxuHhKNEdFzm&g4Jd;xDEyQsXl%%77TU`6GH+5VE!g1jP@Qyic#R|owiK7Uae^A_T% z6kq=pkxTeDyMx{me^J1nTgLd42=tbg`AZ5)FJ!?$c`5T17Z!S1{=#6szlahmD9&M} z0dHwOTjVb(X2nH*RyMzwmF1WC{Vcb*yoBWz%=5F-f(5M9KMyi~o>Nf)BKnF0#YG4% zED%ote`zW6UsUc5u)Gq#7uiBNe`#3(VtLEhNH&U%W@A_e8_UMA@wo4J20N2YWRuur zHic!fv)EKNjZJ4W*x76*o5g11rgU}*zO(Hw<7LXmqfk`~)ywBADDV}O`0zdRa(o@S zq|{ej;uo}VIWKy?54|4cLI2OkI5HPwO#oNbi!hD^F%FfWKbNs`j85~>ix*-_{t3wm*D&OrG63QD=$GE`4$TO zN)bJv>5BU18RnH2;GwWs6q6x@GoG3w?eP41T7-F1nmjUy3Fh2^yL&lO-dDX<$=*0(14a&UXBL({-4Sh#)qDSjYX9&p*A(>&3%rHbIh&U5OoC%gV z6O1?+W%+Ef$ZLv-K1D>IVu?OQi(p6hLD*dWM)`oW*CuY3vhaVaS28i zA>b8ZUWE1nYChzv0^O77~xQr0%Q_ zJC%*V$ehW}#aLN@k#QbYJ4@Iyb}d#5w_#ONg;mgFSjD`6mB@QoNz`IRun8-zt!x|H z!FI7dEX4M){pu5``CE9w}2G~Z}#@VLY z&a+)$%d%zLa%{P_eA`@Gz*b}n+DdF?wt2P%wner}Y?s+8Y**Np;@dLIY}eSXwOwzk zwB2dD*Y;0i^87alV9(p$vaPaxYOAw-W7}lgZrf)&VrygXZ0}_sVjpH_EY&{ReujNI zo_zK~dzpQSz0!WK{Ym?a2zdwgGy9kJZ|z&{yX-&Pf3xH3YAn{#4xgPJCpr2%2H~k? zGaNC}j93#KnU0x`a|}OLtlINj?v^?hITkzU*G&Ez6JG!OZ2!~s|C#;YtN$CoM49~? z+Y;0W)zi1Ams=d2?K2U67iVdzZ3H`Ft3=(U+6Otd+8=N{;pk;w4D30_tN0Z4za90z z%CX7jaIA5pIojCQ1KHx(W#8lY#nI?!^oORCcoDI&9^H--WD$@}Y)h;SA zsz=m-sMDgBIz~i|ikc8LBkH`U+^9T9AgVm-lBgw7H$<(Bs)~9v>ba;lqTY^L9ramM z9li&RsgDe9cLr_nh8+&OQI) zOH-}7xE+Mf!lg1jd#R>^{`fh8d&Ubx3fK-c5C-7i%A z`hK-rkFSU8e%+;T4CY~X#A*1TFv4_8ezIhaB_m>qPd%=lo)v5QxgJ}4KaC_z&zsy< zmdMJvv5E?t0;>mG<5C#;$&g(AHKIPMm&YoZc&=X&t0>pSDs&I}juV(Nty}nai`pu} zUxPT+Hz1!IW0eZnTG*7EM4lCz%QI==gY?M!I#vmNYwD_Oh*fBdsAj#;D+Je?1nFh< z)3aw)tU`JP-!tRZXwTKFQKnBtc;y!+ULBEcWSWM*zSu+0q$|}^O1n5EB_WRMP>JUn zJXakTr&K4!Da!G2N40fJW`nGnu2mqaecRGi0<=5$5rbtJf(# z$HP|K636>hO{Jb6Aqc-YPN{`efmc0*=i8vu?XYi#$7A=PT=&M|yGOttFtK{bR6H;I zR4(0A-z36n;ZpvgB2z|>^S|xx&EK-@g@X-Y{8e22ZjG)Naad!ISE|m9SCsSOd7Xyl z#Pj;|u=pm&sixXr2x+jb;4M?6LFub!#Vc9U;uUoU>`XJfes;VPf~`cJ6pwVcWKb9E z!7_Go9O?_tw_*k-|57|Z;>7+X{LAos1_mGUUyJ8ys0{K~;`t#YLjGIu{54z`;@p8} zC!WcFH=c9gCL;brcqVr>;yi(8a=BlN69U$N=WCHB$%OEn47V2cuomYZh~pgGMaf23 zES?oS6Hc;!h1uSw+mC-Vn!jtA%gr#4o;GnthFtZvc%}M$^nRFHJZHTguki4f|9t(` zMzvK!OXC$!v`B~23c1@VRihC;zO7O-sjZSZO<*ZA+bSN|DlJcn+ngai^s^Xxrs+|6 zs_ma@SD6nZ57>J^$6e zt50bk+syV*oa{5ljbXm=Qzx;!k&{NUg3+ThS?Q<=(^=`%aif4wD!}$jQJy+s{Ftd~ zwm%oUb?SsMBd3$Bj%7}qo)L*nFD_QGL9>uYE>*EPiQP|_U{T&2Y&Yi2DG%mg({WBg zQEu@m6j)k@oe}{R6ngXg!_}PfAbwU8kyLET(0M^q(YS16f=$RyD4K^K>C92RWo7=t zV3}H0tdf*kQaoRUB3{xh8-8z&H&}*ER5iCCfQ=g!QvBCGOR<%M&A9?^fQuB*^Os<= za6T)b4Z9+QMnotrSj6?lUKVyXii=c#Nl7ssLcmNQ8T>k>U(LrB7VSc+rP!GZ{kYOt7-qhdczojhaWL`%GEY_AoG%FZn*E=1+$6ci6fIkZYD z$ty3UjdN?-&B|a0xda=wD!%bPXTqeB<1*%)oiTOVgejA$93|N;rGZLDLu(@27If8R zn$MOutZe^6{HUmk{a)gVH!(dQK^$*?E#xC&HKm=&cO)mKO!L|?Y`psy1i=`Z8Fsge zd6VgFG-TdTc^jaEf|CA)-k{dNw0bY`7UlVgTk0<@CE!)*6d=ud8hZds^G{L*xp3(8N>MdIsM9ZLdK@DCl#!!lZtl74O86v3aL#f(()W|VtY1(+I zHA6~E8>(nzYc@rSXK8I>L~J7C@}diia0n#w;bX9=vr$%Sj!mQyC`KbD0?~M>T~S}K z^eLR$1&eV;!zkVs;i7lxTBxL1n9icbm(E9hM5c6fzIwff$HWPfF%RV8 ze5W*@5Af$2te!s{Q-Rs&tmCpJeiH*;lj&lP_tLzU)AYDMv!tMm8Vntj_7C`r@-WNk zb??JD72RK$gm#;Yqt9|2WvLi)_)LYRM)7>4T2Q2VDQVu4OUuAwA+LjyVwwQZa?5=A z5Tj+1nvDr@zLp`apdgIHBQGs@&gQEQy*HI$6;XggC9H=^^w}F(Q8~~uCKqd~B}%Id zlRr8`F)c*UmS&dVlvx)6(9(oYd{Gi&b*0Ytma0WKzANGDC}gfJ3%`@C>Ey!%Q(UM=6Dm>JbX?0N-(QYn_A-=8i!!Asun=vt zFo?ELN`uyXa9ljUR837&2MxTCPgtU-WiO;=L1{KC<4#ito;Kvq$!M$%rS+NFosCS) zwl8Wla`k0aqBbZPl}L+bv(BtNkJpybErZn9sRi=>tF;^Q4@ZYFH45+SmcA||%8Hv` z#6_0D8n>l&%KWgkn~@K7h$cn}>v(ch+?KMTs)SKJ+`$LE8(NLIM=RdcD4y|W&F~zF z=N2pgr+oQq&Tbe_NN!?5Ht10276#{Jm*=8G;NTpCbD)@BbTD9yq;(OVsRFxPI z9e?3xU-YNH=GdF1;#AUyyBRBR=jb`y4f~euWiFd)8)lnsE5?c7Gq3deJf9~_C!NzSFt*PREP1EY$go{ZWZbxL$;^vlslqQ|wmvDJ62 z`nndmK60JVx}^2$)@sbcm@i`nwz;v*zBV&rUyW7cmc{LhyCD9P_|&#fwe6zUpc_Zi!_p4@i?)C1@ zcIVva-97hyz}s?yWhWc^-Uk$_{lA6R@UCX z_Q`dx)qS$Q{+nMnwEKR*rpa3_`r-B;Yqsy&dHkM9p)2;iy8o90gMKSJ^zt8#jTP)b z^yzUu+Mk^8Q0F(2uj!iH{fZuMpY(n2O?^M=ci(`l6lLHugGQaUddR4u&kXA{;-b`5 zY4Pb(J=cwVXVl)&Nf~Kl&ly)T{;CPLo^juq4^Mn_(!-PQn{r#`^0O9B^-r5J{j?dK z&;IS~uVy|sYsKvBbB3JT>b$Scd+7Y)3x>{VoUPs@$xbAzMEGz zKW0JIg24+{FFbeA?nRef9Dm8Zm-N5%)l0`+w(hbym+!c|tm2P~s}{#!aqAVyOYUFN zYw6=lPr35hD^I)X#jA#1{qohrmc6{}^yM!sA9PLiHT_rob48D9@4GhXx?8S`yZ)-{ zk6b_RhTS*hRDN4|){XDqIO3+KZ|ZUL?Kj8Va_KEU-QvAhGAm^7WN{?!4_z`&~tMeREgF-PLy=f6tZo{B+Okd*8YDwtF2x;@3rdJqF$f<`jfBQ-kAQzKi)X>#^g8ee{=tvW8b>tt(|YB)m&dw zUo-ISC2y~LyXQOe-g*C>YrApeR$1>UwwGuN5PL?|ETrHGd{lm2>(}=F;-W8J`NFnt!nzyR zeZ5ZoGXKk`zdZ0|THVsRkL%ihHT$dkzWU*-e(Outzr6m)`Y~TG|N679JAQM{H}`$h z@J*j@i@tsC+h4y;-B7XNy$!9uoAlj{-+lRA=Z)uWtlGF`W3TV$e*fh6q3;LP&#Ql> z{!qPpQ^lrtH$`n8w|V*Ik2l9{nX;vF%i1j+8fG-y*6>wB;t#Wbxbuf^e@NbX-qw4z zez*06A20av-XAyq*k#)V+wR%+-L@09pSS()?cZ)s+A({_9Xr0-k+5^d&Rce_-Pvx} zlwH^F`eawk?(w^?+P!MGeUE3)WqV%R^V^;wKb8IT%ujoMIysaddN{N>)OGK9d+*r$ z<=%GtChxmu-~0O)yzl1$`{(X|WdEl9C;T$&mz#h2?3b7W83!s3ymsKg zfm44C{QAhRn|?k1;MoT&4}N?w>bLaY7XJ3!Z@Yi%^}F}?yMAByd;FpChZY}t?a=;1 z{SW6Jt~&hn;r4%=`Nz^fUjO5lKL#AhJ#ycXuZ}2<;~N(@zS8*FhxabNDCeB1lg5wn zq>UIlWbnXKPZ`kv7beRhG}OSCCs#qF!4v5xTZ~Pi>A$=F){z5Y5i{+*ME~~^2>FRIO3Y~x39e6 z=eXsLfp62_;<$fIw?Cd*U!0P<2lulF{odHwRN?GXMZ)lYE7TB&aXxKM;jYE^z+hRr#?I&aXcMlMj9k= z_~$zug;Vd{*EDWpXW*|vjrC`eI2sXe*mgnK``~=w)Um4!x=HYK7 z`IxZ>p1rUPuZr}JL@$(dLzusGk_wr4trOeI#y$vEinL;0#8-v18*5z?X5)$}UN&jd zRxI(b>f-O8CFMo5(i4#7eFt|J=~c7Dix&+%X^GSJ%$!`ppo4lc-8jI$bY2l%f6YTA zu@75TQ0O;yz>PH}-q-jWl4Xln?XRNHe!Bmx4oc~#4oo?9kjl+y{dT3=+t)`ub=a_> z{W&-e@8m`5RQi)hC8hl{{rM%OSn)P3GNeD`PFF`3<=`#6R2@?g!0pdw;+{rvhp6Mq z7pfU0c)gp3jh6uE?x&8!K4efGJg}cSp~#0-EXu7dlK*6Z_$>;{KF=bEV-uG)?D6JE zw*#&Fs(jmb;yGC1^R0tI?HmOmIR*T7v6t_i^F$_0F<#X8ewSWbv}3PQ44nCCn;m9~ z^uAtNo|}tnj%Y#pZhRTqf%Yl^eazQ4o{v^gD!WBjOF6KY>cy3FQRiw-Fl?ZfjoGQ1&SKat)c)n3TE7v6;OVfB3Yehzk@(JVzzAf*sbI}Qui zH8LL3Hp(S-hUj=p+tyRj?QwdBH#jg#il`c` zM2KJJ1qax0rxUJX6<jI)mFDa8d>>^1TiOBK6`Vvk>!wGLXDqo=8O zZ7s)jXfHCt#sxK!F{fb&VYD5_w-!|XB?*q;u5=-7Xz^1m+AzhXY|zhlQO3dBvH+zh zHe7UFCX60UJG8tGEqNK`q;V(*e`-w~nT_6u>;0-l0yAu1grE>!g9uWu{&NqdW3- zfHqcQct;)ZbJ!p@jc`1m=VfgCo9Y^vX!CS#VS>7xiJf95fql(v^i{s8q>~8U^gU5t zAN(vt+l*`?j&*A^GM1i>wznDy8+soL=XVVFNh#Jm(?(C2fPtY%pPaEhn*THyeXZwx5Rc5}yT}U< zDjf+RoX%^kw@7IBwBmHoV@0)2Z_M4=>P!^iWRv}q ztqLMdy}V`&t<2)+lF{V~ek(=v5%g;uztL3{J|T(29jfD;;yIR-F%HqWd=WN;X%6P& zk7x^shp#B%tprzC#QGKmK{EU`CM|`x7sTOnn12qhOgbwtngrD~wJTw=JX(Kxn^kyf z)T*p{r82WNr8*dLEgQeO_doKtCEhV>{m_>e9CR)nv#Q5KISn0enZ9oD^JV*Eubucw zzb68_lJ7omL+b079JXIE>YeTnWN&VN)6}&CpDo!JbIlna^?hvaj-)%!`DXa5i++#3 zYV7+bJ(9aM;kL8uhP*iMK>YQS*9>^7Xit}WFWBgQ^Rgqh#UtPDcE5L1yBp8?{M2VI z+S_{hgb(}tvtWDYm9xJd_R7NFqOQz%ujj-5A3EJSrvVy!UT9^`d9?MrB<2UZ)wie%aIi@DHbzzwk@z3Cln1JbUHWeG2}$eb~ZRev6xQ z-KQsf0ZE>4UF+{MD7% zd+7LC`3sia@sF2RuitjCb>}|ACd@8axP0Y5U-|Is?Z3q&^&Ni3Idd0XbLV5Pe)P?b z-`gC2@`y9fz3}1{cRl{v$KUQe6r0>Hb>ew}ORl~9iPt~bu8IAiB$Me2WLt{IKK zOJgJ-Q}{8Onu|9|S~}ni8p}VtR_hnp#QaACdUi3EX?)@m8w)r)$Iv29;q(v;&@^+E zVkJ#4#pOOacgH!fB|l2R%ud{K)3PfaJ#wO0df{D+p2bp&4>7Ah9KZFXhn(q;#Ek7( zZoe}<;!b1!glW^o#m0i^v+%vtv13bF5J|A$_}Qh}Wk>Rs;vOR_ot`mOyzG@_AadD+ zNf~SriNWx->?q8L>TJvNEb%;!PX@D%c)~x+@K41U3Y4co&p`O|%zPr%loS4NIV_0v zw!?2}BGC!jx>LVdK=%#%sZ><`G?7jaOD`-4;(V9KKWeXlFGRV7_AW}-AdPg1WBU3k zUo?u=6^5BxO8j+`%Bkbxm6s<^Je#{uE$AU4mY0Z|Gn7`-`to??nBMRr(PA8~AFZcb zNXICHsXK35l)j}r*0!gY(b@(l@r#gF-gCX!UqA=Qr)>spg-?qNl8VSnd&SXLtxcqF zY#ivAUg!FrKt#Av4+V4;<>-Zblbl%IM1+`jN2V$MBI9bWk)3kjRS`_ z5~J)K{Zf^o5A}YFK6-znVDqv8A0qfbq3b1XT$=q8iqZYDIlN2J#t7~y^2?UEVMN<% zxPr{j`e{5Z(E6|*fPr1r^9@hO!kY%@s)l)wro_l2ES{-?F|J(b_Xp>MXKEIkKya_? z)?{3|V8XYw0@%nqMqGn*!4lQK&V{wPYOj1Ww6W2areO)km8K%ve8QDdG3n9mCZ88? z`zpQZ(+o?m{+OnI!<%kgD%$kR+bgzIG8W5gZ05?Ux@!YcMb-=;83U>wEWpolxt znqLeRRA4gr1K$ki4leu^csu^esvdw-9SYFB&EoWPPIUN1XJKPtX23iKLw_|G|M{;W z(a!!Lm``BZ@=V(@`bQsRLNFCDbdt0TraKI!L21>n8Z6ye4H-HdqckY35KkwBZ;;~& zA7u2jNDq?7U%70gyh()8OJGR7~>t zeH?z%)tF10n6IFpA*k=$>D|?+6VV<;NsaNIF1<$FhYiD;`QlGl98tl%_*5>vO>i2F zdzNBHM!)?{W0k+CxEx>J5!=vO1IlP-yqHewENa)5*i)f8EsTu5E6$}cT=7|pUM5i) zM)y7D{PVBQU)tG~-WX_@F7z&dg5UrLPdH`pXW+F_TRivHhO$0PZ(rJI$o1zP8gily z(VHf<3~!N-eu$_9M@rQ0s99)jR+DAgxP!~h<~gYz*4=Yz_u<%$q{f6JSbRaIMD3Nb zz%vjBg%h;3n)!x~)@T`GInB_g>3DS5B4RX+Yb$#FB5t$k7(=@DU67X2M4ltHOfBhg z39v#ZS=6#II^ef-a`9ChQ+J&+dV_2(4(3UsClWTw&)d84{R(R?W7g^3AsXyuGwbrvSt-b5ryEiRVu{Ul#)#Kl@qJ*uB zZ80;7`K_sNy$#X#G{yK}QQA`1Cck`8!8FAW*s1Pu*W6O?v}WMl$NX}n*!r=&QGr79 zZHn5y`4%;yS@~0ki0`+UFJ}BpjfN<#(1&W@1+e5OCSPnK@pA%N*yF1+X1!VV!Sz>R zeM&~@5${;~@CA-&Kuzh>yu3xQB|fyV!sI_6??m)#Q-%7M)~xh1+G%R4o<%r+Gd9*R zv=?Q@jqIsdQ-@4xhpJQVEHl0LNEXXvB%A%4Zl=nGsI+VeBwK^<=B zU5kEx)?stl=;bUb%4UnUN84NBZoCWsT1Po-G0tdvn^rDH?=*4z1x}a7cj7g9y2(hl z8tHx`-E^cYk97Bu?m*%yWD;G8G^NZZUH(Lv9xy#&PJ-zL(;KD_OkbFjVN5CUMDJmz z!VH9=cdfxNr@;(?IUQyw%rKbYFe6}6VbWmSFd~I0))fz)U)m|Pu#819yJBaaUF{Ul zCgG=e^?P)`kUIL4-r%gJWj~?1jg-xxvT-IltzqGE*VVIy2>#c;dAhTB{f!?4C1 z#_SbCQ4vFzEwihhAKEKwuMUd3wY{R8+(D^^zw)FG$}*Q-%|aMqo*xBP3qQw}In)Y- z5tg-0U?KR0oI|Zb7-1FL1*X6iaxS%ghrnuf3M><@kaMYQm%!@bk}g5GLaw#y*&{IZ zCxKPNFXURQ>TZECgpph&{DkF3+tnK6O}bPeU&2!0iZo-?Ai^sZl({#;Pk`G8I``yd zPs~C-yzC(%R|~($&yiSxFkbe(0t>-Um_N#{R3VI)eV@P-xB_!1HF)N_{H*B$m#`U~ z>`FbJ39H#JuuQldLz?Utfz`w1yucN54n;j6F!rm!D&ZG$4#k5oN>e>3uxj`T8#BhP zWFd?&&u;>&g`Z9Lk4h!m17nECnuMtitB1 z$1`Cye+VoSE@1;5c9(}iM_{V01211S`~q{hvJgg?$1bp1_zCOY-R`PD7-3lsfra1~ zn8Q_tFv2RF0#o1;hL<20J0f(chs*hdE3hb++9)sv9e7)U|KF1H*jzQpn{=s)5^1Ku zsp=DNqz>EqUh3o1*QBofwJtTj_WRUVzT1}CuiL)Vx9>cZTJW$v zZNnX{(i$F(O?zr>yEI?tx&Psdfq&aCvw))d@-V3BD@06zX{BBX2zs=&bn_pU*HlTD_+IaW1 zY5Nl^(?&aPNgMyi?P(ob-JSM|T9r2bjEB zn`t+syqi}4?FVVk-~LHja?a;zeMi=%?HcfHT6zEav@cSBNJ}_>N7~fue@eTtc7NIr zC;pyx!Lr7*=*#Wy%ST1IABcCk=WU5`JKv6TPkmHz7u?ptoq2tNJN|~w?#J&)b`N;G ztGnv`?rzu4p6?ABJ{s+Am@v-$ z)Y>!L@8nE&_hM7sTOXR?c1)Y?z9!~;_az@^x$AGualciN?^eeJ+^zvZ_vKy6+}9>9 za1Tzt#9h;|!aYpA!o4D8sr%)OtK9F-S>~?3>>Bst2d;Gw|M+_M_XjK8B`4qPK9GH@ zyZFA_-Szb=-IIIW?S8rBUU&C*tK2swKInFpKJ30`?W69*(;sucRP}_rpzYJ{flHoo zCmepx-D%N_?!kY&?4Eb!YwnHh-*gu}T;uMW_O83*H}APqE?MoaIPqh*tM*g(M~iFS z9}fM(?fT_Q_cbrBcTc_aTX*&ZT%$?an`{Ci+^&zTC&eQ zuizK=E&hY<C=yoNniPVoAmoK z<#i##Nsidc#);>LRLx=RfS9MDNWZ-e>r*BS7FT5owJvbpbJ>AwNedB9g(_ej6$os-f>t>~Tp#o2w+(|YzxuQ<>@{hp6bNx${}Q`6^OJSe@(tkcq; zIsNqX9!bN}7c~w~fA+`J^xC!V^tCmf^w*ymm45xhW6~$wJvM#Mt>e=xZaO2q@y3bi zfmgglCm7nU5 z%yg{$WLm>5{Dds&TluN|*i6UDPtY1}(MPd_TloonVy0u|r_vg3;U`54r}eRwA7zb5 zM}(XFRDWs-x9F2;3Agf-@|hXm%1^B&{jm093Agf-S!981q$9#jep0OA7Jh2A^eMiTpXx8nbgcYjTEl0V?Kxyg-^x$z zIx`(BKS67_MIXfyZsjNRrJ0VEpGs@Eg`X5HT#Qmje>!-OjsLA3YD;-B6-*x^Jvkke zrf~-!Lz}}f1}4&2s%AGWzs%)m8ONAN@|822lRpNIy@!_No5As(LglBio#ffY5&7#l z#+VjyE&t}_MgGmTHl4peO7I_vliqo)P5o=n3zs)=P5?@ zc@1~9jO+UA>C>E<=c>RmNVGrl6Tiw?BLAaslrtPhzG3nre^WjJ*XqZ>ksg<)I)~Bg zUkzyaN8*}(&EYzKnZ>%imcK|I=?nc#`3PL&uQ^=jkJ67tnv|bae?9-25*>F$;G+HL zIByrkpJw#(r<4nM($|{4uD_1+db7xrpXx`wNXRqlH&z^e!m}1?I5rw{;Wyf+R=<_A z!*RWR=;>F?@4$awmUfIuUN^e_p^9d3t^S(Dwfbom*XpM^oXSh(YZlk|X%5%xPsfe+ zuN6=)Uu~f%AI8%r>&L*GX}`)9ntUX#@o(VZ%UXX%|1{(y^4It=>hh8L zA0_V!mv_0s<(Ea^@Q0@#fk((U*MD^VslQqE*ZZH2gO5ZjPX6%x9TB*g|8)5o5&f6^ zR(aa{wWc45H`o6teg0-fFsZZhU@)@;$i;N`&Y^|y?tT4jYYU-^!g7jH}ORi zZ92?!JmppsFZtwXoZWBYi|9wLBhs&bLc^&&wv<2c7V`(*V*VuGQvTE)!}1sH*DSvy zB7cFK<#$BnFL1N`kPpjW;AZ*ZZz+HDr||Mev;WC6SvmCj@MjZ;@0}t@#?wO{-aH<)E>3= zk#((xFC+b0z+J?j6&L)O^2fj_KdU_DhvZE8W8jhbYy6t>5&2ti-v1)=C%=}z**~r2 zi@+oECx4iHME;R@Wd4@&H<^DV9-05LW8`naX;nr2Dc4nL6j1M9)%TnApX;hQ3RfSr z;ud)-4`Mefui=I~{9*Y=%5&V3e}p`>XREy4zS&(uKY^R_Iv%`R;Iy8#%IoXf;4N0% zl-KdvTRSQqMkb0~Ucv0<8BG+U@_T|E|Ali7aYjPl0U?uuGY0WwqlEcBe@$ISB{IA_ zFwa+JIMtnguA!{&s8m9R($VX5B%Udp(#eFY_w|g3aFS`tkS^A8ia0{|3gq=)J=Y=q zLZ^08LS>zl+JT)EWnm{J3vL$tq@yxOU?I4KRlwyK+H%TZfhng6tO|Z1=TI{dMro!D z5m*iULe8aDo-VN9P=PVHLe8aD`gdKJuG~vd!(JRLzIKl$SkGNfmM-xV-FeMShON zlr(`UZh=+7PZ+iFOoZ{WrwgnGet|iZAi}sV9!(ec38Qz(N`w&>94Rmcmt#n?8qb7P zjuMy(SI9Y(T09e0Jz8KMxI)gMgz!vQ?HGY&!6l6D5h)o03&G{(gUd18BT5-7FlC&; zs^AxL4kZ&|lxE6!fz`k-vjkQHKVfu_s2X__R(YntRJa0* za@FFQuxjW;`FY^}TXG(oD+nDZ&CIDH&3gEGnz%<)i7>)~(*(xg5=QrkLNf$bd$z!` z;0ny)RAve+1efyymoU0Vlrl?T%4~sE!7ng}GZSHyU&=WGtAU>|x<^zyU0~J7mzN!` zz@nVh(2L|M5r;4pF2}I17DQUSeCGlL#24ZEKM$7!!9B@fmM1ntUzF%5^|%Js%)W4)`glbln^(q zVl#6DRvU=K^f*ns@*a`AM9W7d+@9~P#}StXWX6}cYqL&!mGS$2{~ zj2yi+H$`*Z!mXI(d1~CIv^!U>bf?7}2N@5-D_}iXHdc^*iygzz`-*YiqU{&!>+PC8 z$F+D~d=#$brLSE>hZDl(bzFNNXb#u&uV`#qUf-|RalVGO?1$_5tBFGYqi`*M6L0!F zqgkBZ-%u744?j=Q^{?-&=O3QFuD^~)@~`V(aYEDl>+b-~;@bOSv$&?ej_dqz*K%H- z>DTqw%BQstJ^z~Xn!)jIK>V1vR(?ZX@YgJ^>2KhuFMi%($ZPMbGqwC9aV`I918+M2 zW^pZl6W8k(=aP2w-HdgN$e+$#2!}pYeiPU0UzZoJ4MewJbhh%9jEqWJ@3=o zSN+*S{;2a}Eq}tr^-;7NYLA-H$Cu3P=5Vciz{NJ7kdLhY3cH3=zqE|M`hH8+83N~W z7F^FiYod-j!ppZz}{w^>}% z|0q0S{0dEp$X~~`{F}wK{F}wK{0XQ1!btvf{_A@-gKO=-SzJrMSzOak$0O_CX#Z_R z{*m`ljP|eN5$*pddE{qpf5(#7%kOEYcg78E>Hc7_>I(GmpAbUd7a

    5b<55msd#Q0$15%QECvN7=p`DI7TThD9s{8^cqe>g7WO}y#z zE)$P9kJIuu@rd&8wiAS8bY57-OZsu=2kJ9ru z@d$Y>e-m%|Jk7-Q`U_v*gqG>~>->h}DYuxo;3pifyk5uk`qy#6pP9a1KjFBUzRq7b zZl)ihzs8@LeuVxSZl-DFXPxPPKl_r0p z{&ieye+C{Quj${cyxx8x|Nq!~8vwbIs$RSrQI`=U2r4Vta5u}W$+Gj6k7YL`*`3Tx zlG&Xkvon+3EJNZclfoKa!dK0G`jMsEA+u@$nbYr~DtNiz1@(6crw*`xF$v zK@b-O0Y$z)Nj?zufPnFQ@l&fI(JyH1@tb?Q{rDa}8TAI@Z0_F(zz z@Xv()4~{>@dIxJG)4w13*WT0Wf5)$d{tte8tN%+r8u~}_x9!s|f8*aaf8*aaf8!tI z&u_Q>#y_Y(z9aQF{z3luj?~}y2l+F;TYuvp@pyY)Bz zVg9l9e}(RU(_c39$?$IZUZL?5`p4Se#DB>%o^AFs#mZ;mhyF48F!8H5gz+QgH}UBo ztarQRGxYWT+e7~-{&f95mk<4;_|yK6-yQl#@;B+Li`GAeAL5JSV~~Gx`-S<(@MGeK z`6stun16Enh55(&ufcDae{%bU`6sten18JPrhUTvWA!)wVg9lD8~-r>SpAKEn7^%m zbo{#GleT?q{iFWXr(PS-k8b~{|MZuf_|ku({x9EQT?f78BU{;~QS|1f{s{w96nALeh{Kk6UmAFIDT? zf8!tKZ|ZO7uh-xk{qHTWcG_Xl_YYqy>mD*Eb===FqTPi?9QQl+ z8uxg@v2UjDLe%?nqx#+#Z9Nw|YOMFm^^5&}{N4Kd@iG1U9G{>2@|Qn*Oh2D)w)?zf z;u;;r$gH39_CnEiJC$wM-~>4CU%vgBSZDs19oyasU|I_Y&J_yhF6LnbtW-ajuQdpl z_U<`Xz?~`$+>66+ybtCXTHy}nEdEtgS@~*36;(sc<82XdW#wUa(INajsZOgY{PWa} z_~*66@DaAq5_&gW9>za!jXVx@l}9x6ZmC1RqD5K#TTlnoIh3Y=zZY@0G;H|eUkM@3 z;j4yk`@E#~sy!06B>u3)3hm_rTyhdC#K<6G^0zi_bBzkFHYqkNb~UX$330y)AUe_v zQ&Q@7$3C%R+xy?W-RRubl|(O64+A|6^f1uFKo0{w4D>M2!$1!MJq+|P(8E9v z13e7%Fwnz54+A|6^f1uFKo0{w4D>M2!$1!MJq+|P(8It+FyK9RTkeMEZhQ3;JGMRV zm!4xb1KhEZ6#v7-otYhg@*PqxUBj2CAp7O%<*esE2_b26`Cy&w_z}$3{Qa_5J1_^O2w#Ke&jYOcTbywI zUDs}VC4lj*|9c&Oy1(f}y8Va@`=9OiMDDL=Sm!T%V7u(ayZ}Lg@QUBruBP6cl_B(edIc&{u%ozpNtzd zU-(T*oy7aoz5#cW!~HPeF|^i2#I5YWow4xyy=NiM>y=u?@OTTtKkHkR`VKt574VC2 z8%Nwrcz-eS{4mOKXFqm>BJLj|ot<#M0c99N{+~gbA47VtL!4K_ZxGM#M;ZPb+&_;z zKDbkPUQDTNaKU>|0SgVPw=}1 zZoi55FTm~T$k)U3<8WI*y_OOG2axWc!Tmm@{RHxR8{Y3h-j5>A>rmz=Bg}Urub)9$ zKMeR2yg!7zcH?~jaj!$(+mPq?Al&nTleYri3%vdW@+kl>(|`jvD)k2l_vi5YdF1hP zaJvo94D5P{vJp8*TC=daK9dTejD)kZj|jO5a-wNdkjz;1IqJuJpT;& z%p>l*STFdULV4~$ef|;Y76Jc=G>-zFjP&*}Eb?7M`0Ek>9eD0U`q#kiwTS;Jl;c|D zvmN=qAAWmL{;xu~bExkRBkf;?+bsy6MSA}VJpUiS-Ef~nIo^V@y$a>L7J2*#^G2Ar zA+2{J?(ZPo1=Rh!058M)4vg|?nKGM$O z`_m}*9Pn`y!v8P${VwYN-6%sp(maZEK8i4>;eHWrzk#rCgWHdxJYxv|X{7N1z`Kz4 zcO%~$5#|=u;Zyj|BJURfK7zb|A7%JU_>G`FehBgQAiYB<_b&qOgxgb)-ZavEDscjM zH~g1Sre7!iQJ!Ul`77l8?|8l$-`67S$MJp?WqU84?;&20{}S?k8S?r*gxQYoQ%LvK zD9c9?{xH)07x=#dVc&@`ReZk$?@z+}Aky{$7ZLVnk?+%y?w67GD*-P6{5jJ4N4OmX zJR51g0O^(CemnA6gx?pC*5APGgTx`i{0h>22mJ0qo4y<2&ZF+HL7jd9^zt&`^)9%5 z5&3)j#miLK&Wi=dU5JeMsXmgt-eahwsnf`6$ADHS&KFp8t+?8wmSG_;tXa06qzL0`QE-x2v6iTLE_ge85A1R|0+%@biG*1pGPRGk`Ax zwtaNF+66caxDW6M;C}$#3-}b^n!nnvz7=p3Pyo~bF9&=-;Prr?0=xt8dw@>?p7ht- z)wcj{0o)0A37`S^PQV)h?*V)W@Fl=EeQdkh3pfM#FMu}y-U;{+;GY1``S^A<1}Fg@ z1bi3Zb$~Ykegp7_fR6*d=5J63z$Cy2ybSOofL{mv8Q}APul>Y!brWC;-~(O?cs<~k z0UrQ-3Gj?hg1!Jp051ky1biRhO@Ma+{sQm?z*9a2JOhpbN`UVK{3PHP0Ph2Q6!0a$ zH~j5(wI6U6@G#)DfVTqv1n?QaHGhXT2D|`}1$-~yt$+^#p7d#y7jOpf2;dEX_W?c) z*!K6JLBKd52e<(EUcj3HzXA9oz~=$mAXM}NZUx*8C;|Q};0=IZ0sJZ8?*W<5Zdcz7 zcmd!fAP0CU;QIhS4fr*{?*l#x_yRzEZo7IK;MsuZ0S*D~1zZ4p58!72?*n`e@J*lJ zu5JU&0UCf;1Kt97Kj2eUzL_z&PLxpal3f zz-s|-2D}sS$AC`(z699zMf5MgZGbxgSwIu;D!@+wehKgx-~)h90=^7*>OUe5U>Gm~ zI18u)UITa=;12*_1oZtAcnV-I-~?a+@Ew3h0ly3Q1mG$Ecf0Zc2LV~YgMc3b{1V_V z0e%0BHUwk=uK>Ii@E3q50N4J@b~OUH8*mBmLx7(H{5IgjfPVvg^Ov@(J%BmD1AuP_ zyb17ofWHNN&A)C}I{+hqQNTICLx9%;-VS&S@BzRV0pI)tXdX}jydLl_z^4J%{u}rg z;5^_Vz;^*&5BN>MX93Uscl1wy5BMR#y8xdCZ2L0$5#SV{4tN!SCt#k0(=ShkE#$9J zUyEZ)Pf>m9>(o=#)700ir{jdwGt@VzXR2qZZ&cr;zF9q6U5laTIcmGQPVIm&!ZS!a z)eRU<`f>K?TXB|Xx4KC^U)`(*)Swzt!)gSlc=oD&YQMTgy+GZHE65M17pj9eRdg6v zXWpSk)e$wO#?^#6s*d5@&7`_h-G$RkCvdLml$us|s~I(`=5WU89(AuegPR;*q|T~y z>b!a}PCC5=r-9~i{-=ObQ42U1wS<#V_p1kRVrUtso+_%UF5pyA9VdpGIB#?bXQ)=y zgX$smuzEzjRJ}~ST>TgIZR)?OZ&&|KeTVu^^$PV}>buqVs8_1*Rj*Rtr@mkPfcio8 zL+aJ)|52||Kdk<{dae3@)sLvxsUKCZS3jnHT>TIA6Y3|`8`S@&{-=7QdXxGo_0#HS z)T8Rn>Sxu@skf+~S8r9npx&l_QT>woW#~Bnm--d;tLh!<*VM18-%#&V?^6F;y<5FU z{igaY_1o$(^?%gwsNYrZRqs>3r+#0(U;TmlL-j}MkJX>3KUIIGKA=9R{#<=XeOUd4 z`iS~V^|<<|`YZL<>SOBT>TlF1)F;)a)ZePVQ=e9UuRfzbt3IbbufCxEL48sEqxvWH zf7L&$e^Fmj|Eiu)|EB(3eHqQ4$vi3ZRhcJezB=-rv*_pW^^Sn%d=Elso zW_D$EXKuHMCNGbSmtCMCN4XRAxGJcV;Fto0-d;&fJr^H*+R)U*<)b zvzc?5^O+ZCvYD4;a+&!|K2yl}nT5<^W+_w5+@E0nh~AzAdb{2dCTUi zRli)wR&$Ld>r%^yZ`rcHm}?X-`o<|=DpsA>tiRIm%ZMtY6Ai>wY0xfxvg6SSqa% zWU;hbU8=7UXgODZV2vQvT(R6(D@+Yx+7y-8eZWsnAi!NTZp|5K$kf*neinyo!1!k3$A0-zfd7gBArB>7IL72C`EZyb@KPZHW3Ul()YT&XsSm2w@#T(!L?>h5;Qh)+VbZDRg~W-h=mQD;4fl3ck_ z%$15c+klZo8DNP7xa>D-#eC;5^~P!`Xw!H$_2zuFxZ;M!tCfMy`rRvvkj@r@*vk3ZFOWo`FT*)s0 z%>ff+_DPs{(RIt&d4Cbj0NF8bCAMYP8(htm8zX*3Mox}M zQplrE*D9q5ON^wT1J%mlA^A!PjJCEoZ-vm7fKtW?`$!6sSc@3(xD{Nkw5=b9jy0>G z14XM~3B}DPDO^z1NEyohC71E=69bs*BvPfxL`#^Lije(trRtJRQYHgYp+cOZY!6OC z1i3=NG(f#k!5m}}^JVVCVWw>YI2lO@&EtfTMLVNS!USMbIzlQaw$nBvHYTJ6o|4V?i8Jc0))5*qMpz0T}=}#j40O zHO6!&vLc)tQTOtMh#G0xe6f}<`AIR82W2#kFZw?%?;;y}*uQ4dZ1?#Szg!E77DQXV*}*gO)l zU~%ik2kn5u1WbV#k0}HaKown8ggl#!{g#lf09CC^%}V}7zZBG~o|W&`Wb3hN+2rHy z3DpgQ6zch4Y@sORH=0)DL}@JE!cZLoQCB-gE(B8&*dL*WwZ{V!UZn@g9lC>#8xw#xh zh}EJE?jys2Nd}@9gzI>jtZSG*X;uOSZ)9Rp&jqS$cXHxP-LsJn<$6RZ#`TGI9@mFNl5g1Q zYurcFNRDPC(LW*!B!-A;OyWTT5@*R~s;z1mVDDD*(OCtWFfM}1RpnQg$ z+_>a`ozjlbxf`*8{9-(<#T!zH){X}m*NRm%m&B7Rb&h(^f-yHtZh3oY&n9CawvA+@zo9m){bU$R_|zK@@A)tfM?0BxT#YE_BpO%vF>ni&FI6tZ$dfM4(isGtOIgynP1%0OqPe<#-CtS+ z<%oVtf5bbFUcQN~e^@Eitl9w4BrxOYS6nig$1;1g8zaQj4@DEN=>e`B!x=o zF{T2-ONz@_V+xl#-I4_?HOlgx*e)-3oLi{S_)%vZ&|8eYOpxUqRP>d^R#?u}FbOEu z0>Q?XHS}mpAC@q()a(cgva)y#WwC%O{))Uz?N}YPk)q(ytxK3AwrK&d^zO$hVHoYPC{p z)OAh?#N8~DK9g949w*+!0v5iK4GvV;@Ho%S20iESK& zYNtjKp(hV|rWP@_Ruu7bmWL7qC2@jY%W5zimDNyYh>Ay1FS4bD99XrTz_fZ}i6PK` zwEA9h7i5B!08{h$OhgDLkY%Ffiuti%Ttmq&G|P7TOF|H=dSXpjv$r*Z3XTE+a*e>4 z8Ra4Qkv*E_xwge%k65Fm43e^>44S&6(izt(DXI_|_5_Q8V|+~~O1hS8BdWhk#q!=g zE#xJ=V~LGx8oxuZQe}|=FQpHeZB1GDVq3L}&fSp^vjy1JmQqJ@bwfCU0PurC7QwnZ zhBjeHCJ`LB<}TyE-U&hJJ6xb{4eH4J(aa6!jIb#aJ>sQxg9RL0)(a^e!W5Ik2qtW| zi$<4@$rWbo&FuYp80cZ3hk+gjdKlL$NR8Ysq{5qG^$5 zKZx3G?Drs|yLjR4g2WeFjrgocuVd?#@lTHkHRQ~bwvB|W)2B6nR>R6aQqk1VM4qgn z&V%_cz>h5&=4X4Az45S{vUkp}fn0LnG8_dDn^7#ee7e$`RnM!1XRN0_MYI_EqVKd@ zCp<>OClHTuny;+*b#KM%FC6f8^)KA)^)Kwkr+w{XFwaA%v;BqhVUU}nA;R>db*q4H z_|ncSyB<;Mh7vXH-H*PeNAo=BzbT=@)bv}Jrj8SpjoQmUymga2%as$N*mW5^{B`O6Bth^>11VuJ#FNn<5I&c zM%;KfN{ct5o;pwVzXik%TS4C^8pi|6vz7TXzsvm#>o_3oo(I3R5;^_!H+hvE2Q1AF zOVQHDUjVj!{Nq^S;@XbYo0*;mdl23IqV*uZshSZ&r?a{3uG6>D=8_qGlBlp#xjOk> zx$^3|xf0SmxSQsME^i^dMe%IE+r=$cJnl3VzRZ^c9v0dM_*V4`a1}Q^JF-l2fk$GCnKYxKxJcZeATo5~Jx z6yXtEI3MsxIZ{}@T!CK_eGI^giERx%qHqor&a7?kcIhWNZnX0Eq^c$7T}9s111#cc zr92(mw!NLF?h2@b)Szc&OBm1eP0}`WGNowlom49AhMjTwB^q`Bf3rFY^8OOQ%7wHx zLw;pBU;*FpUpziXd5+^Y4PuqDh%P1P5shHP4<*ZZpCD$U>Fk1~8}ebMR)#jgO^;<- zs~m1@+R>qm&(Y7#iD`y;tevKwXCWMx|FJFefQLP1*x-uobkZZ(q2v&09iQHi?o=&( zY7;sKWH$a^CLYXt$$8hl`fpy`mteO~`mW&-hpf04?cgp>IR~6ayDpj$VWa)!ELcsz znV79+Oy^lXqNG|Wtu9u|2P_+FQ$+A6`5o}&=zKybk!|}B&hWCct#v(5?o}1OHD75o zD$DYU#zebqLi4an5&G2jlXAdj2~^H8KvSXa9hxI;6u**b>`zjkXIU|zigE^yOT@ZatQ>#$hRsGX^ghUN8__8F0(kF3e`MSDJh_vp?CoWP|#)@9mqJFEtG~%LdF- z`&B?2+mf`;KMii!o>#h@EW?%fous)RNFHVztW~c+SFS6l*0} zeDT-0{Wc??`y`+B{28s$EJL)6i@~hKY9nAL*>NMKa#p~xk@9jDz^_GoCrR0E{oQmd zUZeb@b&YMUInY|^yLqzgv>3^`MG>W44aT|=NSLkTog3Gd*LAxR>8+=o)5LM{$Qe%^ zl7OwV{nl+gFWifDrxxKN+MR1Lqy_5nsd;rJi1nn)w&9q_6+zCt79%Mtl_XQzGTJhy zktgGEh^Gc57;2zM)w-q}ef3I=2f5jk`5>|5Vj~R0+EZ#7h4ym>fA2%MDd<7D?l=eQ zr__MjeA}hK@%wVsu_`^cfEux7h-W)94QIwzTbre!-^(4w#Yqt~k`s=n=TW4Xicksl z2UZKAOEitK;*5+A95If{IyA=$>i>^moR|hZ6cAUhgjLZlE0TH{{v4NT^3{O$!S<@X zu(z8`A8E_gu5WaM!zB82^RJ`q)W~!@$6G6n%^WY*%8U4L!yFcwpn$dtXGyL57W9nT zu1XI&ahP5^I!eM~ml6AW@se@Y(?I-sOac_nm zm9rQjbvk;?yA`Q)PGe9wo!w1lDcGI6tR?StgCmA@%R{bRhwboATszd#Q^L`^-85I` zev_Kg7x6OF5`t=ozpTP=UsYMkSw31!2xA{n~F*y zZ0C4fmUNf=)0(D`PkE9mXHw+&mM-{yBY<(jF=AP`d&t|vF=DqPg~oNc?aE_E96N_f zGe4pcOkz#RfEadZpR$Dp=d{mn*eZ zd}~#%v9Ppjw@1ry3Gu+HlA+|dCJ`AD1oT;20% zoFfbZKaJo^OU07!LGGd%H;<-+Ox{$}!P0Rw9BmLV9FPVyo4j=})mZX9ZTrVFRtKc@ z=6%2HX&WaR9}H&$&^7`#A4s`yJ4CI5lh3gFD_CGSZ5f9aNihG%H)=w&pV$k%0|@)5|n;DtkWAptK4nS=W5AlLPa2AU8BFXtR!$=>m}qnlyAE zC$HJGpg*UTb6x{B;3~CTZ553OL+VN8BmKdY6n<=CORaJg{HQl~;xMu}+RY3I;-3VqUIR%dJ9*ZQG?Sow0sd(SolyLW>wDOGU)$ap-Bs^ z;QZ(;mJ6Wcg7liY>4o+T|1nu`@QAXXgU#{-<;tb98C|sXmcz;OZjQEG6Ix4enKWnJ zinyfR-f!zLkkrn+=c?13wHrN0FD;&RTYHb$MqAvK^Qj4KU=GK>JcGxT67FzYHobnM zbChoLvbnd;FmONf$ez9X_TTb?TW`zF=OJGb58RK`O&;76!WA~o&8ah?Jg@iSXYox9 zlFeDKx%Cg;B>D8?Z~x%Pt^BZV-Q?R%Sk6bn(@P5|E7vl0=@#+MxhT)<=y?%$?#-Ih zV_eOlCjW%d;h)C4-VIOv!6a_4qwc`=<94)mX&!;L@aN)&^X)~czg__<2vxS~PuCMC zzHh}%)t(-0&7X77=y^X14ZZxseX^}MOFqrZvsTeFzdS*(@qNb8G+NK1B%g)li4g8v z<~kQOY&=mqzJ*lZKC3uwvB&E@+SHwJMNUg(*GI6|nqE>mR+eMvJh&g%lM84Swu08T zYmJvae-Qd;J*VquwI?=AYyQ?HsT|zT#q~sLs%@F{+A~+|xhvYPQnmIqjgQv&;aY$# z8?~#{>S&sX>xIJFw5COq)&n$hP5ak;!B4MGUj&D3%_$s5n4dmry2oI&bLjN-i}Ej9 zdalJ`rF9;)YhyJ-{}3Zgt*=fj-d&7`LLa>+Xf$ zvQb@MhyqvHqs99X5i;syZtD`8=nTkjvum86s_gp(n7!2Z?!d)_4=-?oo7sQKiok^G z3hpR_F;#5&uH#rreK$5{*Q5W=L&&jXcG|wwZfs{6ztVomb*7A@xkw3AZ+XZ@>98}N zlk?mNu327Mt9StXPM8VfX*F>yvIu8XK;QPFt^$4gz!foH}<%)ldSx-#va# z-Es~)FVLm5m|mNTlH1KKRqM&49NP3S_`h9knGe48DIe`0?vB&`)P$$O%azZM0EwwJuL5||Fu0PHB)KQoo;)mIw{G088~mrKe`wnvMZ29c6NW-l`U;K zs1?>bYQyu;n~9&+a@hSAy6)El^OSTs8f*Ix@qHPVV^Z70-QNtS_v~`-(XL2by(+p^ zo*aGWWiG)zku{N~wUj@Oy^>QX&jjRW>R6^AH=h&~>vA&R0?KOjO>8w=pS8;A#!XjF zO{LsVwIVyG)~c7LT!vpw72b=iTpo}^oE}!@1w2-VXH7g`2QC*HKmSG^8je@m6Twc%T0xw@t z)g0PJuTO6{Pjki`r@VEhYvF!TXp*#{=em@9?EVMt@?MV(EIWVW9&gK^E=NAxnM9ja zqo8;G7H~ZspNo}>tohI5&L@8JPENkg7xm;y!ZfjDTg-{!C5!v@;EMZ@$%*VN-=5>U z9QD0Ycx^u)N!JfNE?Q$%+|s0Hc3~XAG;`65{^vY%t#)wtaK&dR)LWC|TK&g>aFn=Q zLtf)*Afh8xI}0>xl}qUAKTv<_)i+At8^=eeRV;u4TeZX!I151?@JaBsEdFv7=V}SZ zidNeYdTtyoV>>;-T4kr5Gwy@eGVEHjuxNjY&%Q2qS(A8cD<9^XRO`O&B%E=*P0LX_ z{N*lxC;p|&m%P{Wa+j;ezw{}iuT=SGqx7-S_-pYP(w95xZqyz{v@cU~rFN>-V%pVO zuFH+@jdAg{<*>`0ewub`rGbr=>TaWZmd~59ooaG z868H}=apO827emxBIFtGI)i1OK1y|d;!`V1q_|50~X!H%$`U;DHML|3Y3 zD^Yv1p?zbH;heoM$V`NzId^7+a}&EFmwf&ysxxn&A8W`xU0a(M>q0&7V4(ROgqD8~ zzPXY}y-`@MtnIf@^QX@}#m4}b4%*`~v=waE zb7{M*-M*Q0X>Nobl4x=(-7X?nY$);9f8Gc)jO~RLS4vDD&k=)8$2J@eo}Xk7C5Gl(eSB{&Zsk z{_IRrubW&gbz~bx>q#EK{k^X2Y->x7k$jg)d=F|XUXtmyHUFz0&n)v-;;*$2aDRo} z*{#>FEawi-_UrK|zE@GVZ)<#)YU~K@&htBK3)5k>UEkq8ZCdKoHBr#1Ca=ZC@eq#} zt;5FG2Z*b99;_+XV_n>AR0rbb(_RA-9oyYF7H?N$nTW3|Q7-0trG5ohg653QGRrvPPEYo z;Ob4MJl*_gM}@b{P|mWL<4sai*wfKXI+mAh6#rXU?og*?*J5@FHne3gYaO8idZw%u zmW)(xTakJxO)az>r)91y)sMT)H>?q5CVpufsN7wwEm3P4<@gbX)jN>b-l4R{-mYyo zYMC@lD{4=bH&bzU2QBqc+sL^oEgnVbwNqJKzi8Ubll+Ue4{4#IBDZUBvqdycSO!b) zHwI-PCkg%Q>TJZv$}DaOuJv=zeTbjVxQv#?;+grjFaKtb-|fqwxi{r>J^#`aowjai z!}0tM!zNkWZI6ZYIPR1_+pZ$Jjd%*OeQs&%!amn+|FD$LR@b}v9_XqMaAYN|`=EBM zzu|m|+$;&JcFjLof91xB_xtYhVQrFQ5Jze8Y3*>@QojhJ^$Cn>9HF~Ohhg2iMR|oC zt$2T?0~{M zJdHEMs&GxcFN@mHIIl~WR=CE(IhtOTPisFpY{$;!W!a+qwN(qdo^!NUB7fFpvwz8S zPA#H7T~4hLHE7g{Sj}*|b*0Trt5ZFrbnC9u>k>v+P)S>LP`19&o0)PB zrOi-+S*s3gBeyqhTyN*{7Pe&?U5XpWN|je?RJL<^xh`I( zjmwi)BaL0ow$%7uA17{y?X~)HYkex%U(GqZzN6XRHO;d1emx9a?HFiJ@6_>Vy%R0w z+53yGk4Zi@jNSjkog8{MMHrX6$tb^Sm(Kg5I+cfeHF$ETCMP^>i8O|z@^7m&vp#)O zbgXEX|9Z;2S>@fVbk#4(XuJ*t{p;&9I!eD6u21^UOJzVKyUi*}> zfz+rUz-JO+3_-~)ii z0iOhX4)D)_C%@^sZQB6b0lNUhfI9$FfU&8G(HZ1Dd+PMe7`6nRx@Ur)Y7(Z$PMwDB zx4Bc({2rf}owLuZ2}HLn0?LztO}MOybmkPSJB^R4+0nVvGoy2|;poKaskzDNDY?*l zc5G&1g83lNsnPq?_~^`C{GOUTc6<&m#UT)aetGCr`~z&Y@Huu30$% zcN+Vu0zVG}VDoF>LBA%poBfM^d7x4dg^<`pDtWbL$!8Ra^CpCU3*ha5`DR0GSJm{D zMXG+G2_sg_gO{}*knkTsxW@sX1S}Wj+974b&m%M5UG91J<0>pfFnMhMsq3~q4{$SJ zAK(taalkYH*BRuRrG~P0$`)~@4&&9E^HrD#W^!$9Y#9lYkA+blU08}e|fx2DJyp!fvt&IJ6k@9?b4G;4*p@Agl>|ziQ|_*Og@dp zEqG-yQnwy{T+QLKwF5A~*TkJu;7Mo8m4Ql?{Pkwfb$K@>ck>Tx_$V&oMUUGt|sW0t*PTl z*-Y9x9i222XWFokR%)MiovjqXp-tPCSI3X037Ure@b;<36OE^7<69)yvRW!^hY4IH z6)9{yT^m21E^*ZR^)QfxflhoWuE`0tYt&70k2%lOwCY^7HSg;&JL;^%&>G8lE_P0( zQ|~;h3TxE49z4Sp)o|FlL`%rMWn8c3oeOs6$8WuxfjiP^p_?URDQ}cj%bJ|<&=#(E zqRMJYxPD<{a`##dtDU+w>n$s5OWn4cV^p8cwg_#DChgWdjWc3A`^1}uc@M;Wux!gW z+L}8ee?x!fx8AZ|3B0nrm;2WVAD5)PdGAW7S6FL2j;>(EE&g@Je=omQeMk?Vp$(HL z#~Xk?m;C4}n?5gh|K9BMU4CITg#+Nx91rX%I^K0cokiK`|FkV1JwovW6g7`_b?!!l z)GpjzM{dvdmMNqZeWUqV3pq^NwMnEc7r4IKdJ!|V`vmyD(fqsF54IkBwo9L7zZ}0i zoEXrWcQz;2k2IhJQ|8l*tbrc?j1%f%8XXF`s{+)${ z8CqSYdbQw99k80^n*$xQH)MxA1kw!IjQGy3d6?G#oj2o|m&a-n*)?5^|LF z;5wu!=Cd|cttXEwjnB=@pJ{!i{ze8z_6&~PBE@&xF^_S40eynnq1{LKk>xn;>E7mGUaaGGee-r;z{Cl)enTN_$O%`zNeNoi*YNDyvPqwP;{Uz4C z^X|O$@S#rl>gC6gnEIX0cSfb9fvv`;m4V4kec2ISL2dMHB-Wx0Ira%tN8aziy3RoE zIH``|J$>Jz_O6@z!_(r748pavvkP3IDSSY$JL?<2)8x*5-0f4^lb~PRNZ;5hnz>r? zVLSDHoiQ+2t~9Wot(xUx|M0#uYOx>IcL8o+aL)z1vs-sOv~vyDE$i4NqV}EVDk!_@ zT^!VqP!nSB$)vu7T*0+e6k5BowRqIiZ{LFF4`!6wf#;0?4{$x;x1OZbFrF`g-)(r# z;K|=3=E?VGdrDmk*bcZ3uoLi1z_S1!M*N-EV_t;t2k<>>;=L5l6~OxO;*OJ>J8$Tw zecE9?>72Tipxeda>I&CY!WPqwxa`I-Ljt$NXvxv{yh8&&8jyvT`OM9HGJEY3QN;~+m$0$M+kfj`)D8s#vix$PkH88@L6K))P)2?TRw$vL%q{!gqTkRpMttm) zS%ABT8uxJzUIZ<289EWvhkMbnqoz?|5YdTfJ&OE|(W<^(a71*AdgrQLC$#IHYsqol zjLEi7bjmNf9>_IJ>Q7dUEJyq4Tv4?rLBn%F)RPy%Fbu2a1FV5&+N)4HTn&Id$ghATAdnd<*e%M#L`zh7me?4h z@z1`U7v2!?0ODAp963^1@g7o-M7@V5%K1uxEN0LCTfAHiJMQ|1k<*_2`_Z!vK8521 zh!Q5TP^tAP_EcbtMQ6tizKKF{K;CJ>1iXOtGptV9jEo|}`pDr@sX1Bg{}exm9CSOA zYog}jZr*`bHFUaMywLO~$LV+Gw0=5n50opH%J3s|^%ioay6;8O2-1`0W{PNArfUg^ z>Du@85EIjDLr<2zTslGUmi$e8cHp`Pf8Ia~Hw9WmpC7zQdcF1%zabf}bUF~t)zEBn zzJ|?{_Q|*|FJYeX?_k)8`JrQA9IDhYYL(a?q*`ZOihm1H^Uu)0!wUb^!vg?*&x|Yl zS0@SB%^a6`e0B+hlP3~jo3!Km?i|97Z)s-JTB@cscAfr1XMx+&g6BZUVDTk8BH1xasH!to>sJZJ3DN=C^TZS+Ccz(%`&XcQ@k?PJsgaUFv4 zj-4B~TbsNWWw`ey@&T_*WN&8Lo0%3G{u0Xv#&xH8-p?nx8O~TNsPm+eLZ5>4jbWZ| z2)p2&@bGL$KRlJ;-L3f!b$gpxUh@8hn~2xGO-=U*(mjH7&-LdO{^L2kmj@U6hi_WJ z19GoY2l%-pR!`_kcF}BOZ33)`uwabk&=6eo*_}t9Cqxl{=UGL{&Ac-#PVtdKn zL8T=Yy;973A-JysLK}W*<1%bCP3lFp1Z3^@hcoW8iq_mcj5}OQ;NBWrlFqS)C6>O= zd0g&b$YSU4G*(!6D+6!T<}YoTyUBU)y2`s}Q_D+>qgrN4Dmh2)96~(54NkQ`Zxx`m zphbkHrMtAaB3|A5M#EiJ8{^h#^LO*k%NiW*a_F0_^zMn|d$n2atMNB7xM%QI6pZ7% zck=Yq6qq4|{({GYYxSEwImpVBO>lC6EK}jMRpI;r{EhnY_*KhqS=Q>7(cXJ;#|-x8 zm8wg*Bbc1&?k#7Nvi4w`iH#F?-s!T;TD@cAlb&CzRci2~dp`soeY+sj8;a0R=$5D%h+An ziJGWBO;erTC(C<&HTR?(ol_S?PtRI%y@=4iR=aKxEpLp53&nc1lv@pGd7;#-V}Og$d73cw+(lmRS>%D|EYH(! zUi(D(hu!~YIR~+BZqg_g3?rtMUD58O_i!fvM$y5zF>FX} zT{GN$Z`c0@)v(M8<1;dC<^z*4EjUd3VARQBW<}UIHGe-uj`m^V!+&yG_ZG25f137f zlKpjFV~~y|5O9T?R@eko?)JNF6ctZ}?E&u2|X4f0otc9U&(NC5fN!`6)4+EQn zfi!&AYWnORiL~cxvz!JkmMZg@l`mkI7L+Kd_((iI*3`O1&%}lr?XXN*!(0RB4^JUm ztw{Ihjg#t-U8250?_R;iv@A@)m3TBt!q!*o4SzXsi>U1KIjH0`D(ZTgNwh$m<&@Ko z0?_ZfYQDB{8jxbEOT~O03>$hQ;yRYMl~dN!#_ePgJ7z?R)yQIBYpIZh%{DW=4aSyO zIF3;~M&<@h3M;kIahHgrc43<3x)Umf$%L{p-B_GsJ{6{%VNiE^!pBa+JkInQEvr-h zO^&ODgUK=sXUgc0@pz4f4+<_ANhj0WeiQax?j>nG1>ZLB26t>`8$eCAQLzT^fU{$z z)#?&UkImHBSh5}(+vt3GJ$Wu+X3<^!BQ;-FJ-g1cnXm67wq^V7ffi(MX1zBvt+q5o z)vP9+?6U4(tQ2=8LuhR*?ZqNjR&>9HzQFIZg<8(8Yh){Bt64iR3)VY6wmy1m*A82R z18l`+qq1>X{i9%O*l>#N#{LZSps-Te0e_nqH`;OSxvVY0ffyR376)^bcD&9BvpEt@ zFO{vvz{ub&gSXE6jok3wK(`jIBXj;lZM`0m+Q}JOU#r&@YV%6DXcs50zR|H1#$dUtQgFw*bFU>gj@$pRIc!!)Jn;h_5S$@VUfGa& z*5i8}F^qOvzI8YqRENVmf?|V2li^L+;A!1odYI{IuySm-IB7>)=UD(J@A$W_w8B0h z1E!wm&68!5@(uB*2N&Q6C?5?7>%!iU^V-dRwtR1Pefm%v0xkNoRh<7Q3Mp8Q$1sS5 zld!t%@Wh6EtR>hqqJF3q&zzX_`Ruk0xWCETowTc_T;HcHpo`GK>AfQEinm^%uoDHh z{3yO^=e||t+Nyk{-r7*F-ao{4biZ{YFB2#I*N<_=IGe8(t2lPl@@)u$OC8)l9skec z63WB6d%vfF84}*`)jPI53OIUd=3baKJP8l zJIF{8ult%E+ui_p6!12{9|JxBcpUIaz!w2e0IvDk9owD-cs5`=U>9H?;2@v@cpKmy zfG+}`05q=IvF+OduLk@$;7x#c0Nx82>tIhGyxqklr*IJB#5+uHB8Ev#++_4duU zP5*B5Pr3sjx}KC|PnSEgv~H&e?y)MIBWafl$4ZWh=usaa zlXH`!Qot2y7tW=8LG{bx@fnVvi|felxYcA<{Y3VxCFgzQs> zm2TnWEnOqpcG8Zz^F;9)?Ly~yq)28Fw4PEKUUMyIn!PR|ji!S~Fm z(>y;Ke9zu}8r{6>@?P`w9ovor&H%V$m{#reIMzKMm$KY>YVu_E#3Y!L>Ti1ZuZ8sD zaU!_D52=9j>h|(PxLbvGg$5;sGVX8IvP76R zSAo}_r(N-${3ZJr(vkrsWM?qI#O5(9n|4+lcTAcj<(@vkZs$ydf9|D9vL7>p;!N zrqO1jSSg!{IQ0kKP{F^5HIjkK!UCpnfsc0>iX^>--|fb#oqN7gT^-=2093?%7wv;_ zci+3kG0!~c+sN4?C}HbeSj2k)6Y9_ucjKpg`49sp7t=22F)HJSiRD zSa06lwnb1@sD(-cybg_b^11q%c;B;osJgEc=VU9gH_PqI>rZdJI70s>0W~TmG*3Ct zF1BUu6W}|z8Vq#0MRaNE&86=F;dEO_mqEQHcif?eye-r2Y1 z?IKqQ4wNAMLBf-L(8LkVA>lcsb%B%xBJW#8JKg5f%0rU%G@-PmZCco!J9OvI<7I8A zzkPC@Le?rUFnja|$Z`aGbRk#gV9;$@*ULv>fDZS&afHEm<-Cv196Q1_Za#+Lhv%Ms z`Z;n-cK*|evfY}8O_yw)CA3fQfE=<{cn1G#i}Tiv z$9h6Pc<}qN=RijU_#)t%?K`&J0kE^s?5UY?=vIP>Y|I^1hy6h_V>Mxq9GhuzyN3Z| zI#w37P#DNpN|o9`y-^W@h^2K86I()g9tOM;@HW6>fa8-V=d!bN_f1WNWpmtQlI?uY znyX2}x+8ae3ITe*Fs&04bc!kULS6bu}W+-h$K9e}w(zh*s_eV(pkoFy<3pl}uD6Upd8 zH?uuMyNWD|ZY1;iN|ll=R=2o@-B2}L<*7+S(!i>fEu8|MydiF5^7ifV zhV<-f7;<|lwT|!D{?e*MSY9@mdC*LfcV1~zVWsVEkm_{dI zj*|Ye7OH5s4RzA_?`0%@Su{tqVEqfCMxno6I@I>(Oq_JZP%>@-Pj1Sbhn&S9f`^p~ z5QXq4_nmVzSH6yaZxs)P3;@h^&$Dg3_3~~IZl1d{rAcLmZ7A8cCorZ-o9*s|g*&PL z;K2^<3VJ?IZ`dqlcYFwO-1gDre%=eVPs0BZ)A{fkdG9_i-Ag3x5>7HBL3e%LeMb?K zip2_>6=Z#PYM)a$8IGNA=_8hYA)K)Mo4wx6wzjgO`>yw1=shFs^JexAi;Q;mj#r+( z%;`Bk`XRS=2y56CMBWWjkc(nH?rzXLKs-HErR94U+z3{;l`dbC0peNPPSmInHXB!D zYQor%cJJ52Ko0{w4D>M2!@z%547hTvzJV;NnXvmQJFlbYwWH7ui@S?WuZ?VUKc-{m zxo>E6c5HI;*8SrU-3z{_H|%*sM=8$5+-Ce{JvU$SdE`I09P#W^eM7QOY#duzgJ}xo zGs-N}+M<9M+TH^}&>Nav!Xf$cA_7>M1d^nJ4}%*|3Eqzlg7O<0IAr0L->lmH-AJe!}_2o{(I#%=3)|a-b z)3zb!g;%Ox-L~Uy)QkJO`Al2CE7@+{)~}m(d)=NL+otydX1yu@qF?fOKFz@jZJb=K z{V^!>UZqN?1II3FTiu>b@uAh{`Grv|MsUqx6!jZL_)#oMjAAk32%bmqobqX9NU1qU z6qRBD--Shf_v1HB`vjt@)w;wfe=)}m=JY$l`+68))^9Yius7Slh`x-W8~zh=Cr|Mr z?*KRoi(0g2eRq@B(;zOi%Ok@pBgh`PxF1GfH_HjP@7#g;tAEBPj?M5*S0 zH-;N_$}fPV(#N!|Su-IXB1y`1{q*dB+@{IYP*#SNGr*PF0WZ%D{HTGqYpKzw9vB)D zhedP3d$3Yl+#N=M9v;~e{dFe7deF+JG=yAL5i6s?kCglQUMO!MJ6-Q#Z`W@8M=>2L z=Q%Cj(3>nDw;Q+F2%vzLc5+=@Y%@<*0_`zYStdqhi9y^n9YOnFp%e-o8_s_A?T5j4 zUJNBG5U`zHGB)H&(o-)j`8B`qA*u(xsLvzbL$JI3h*w9Y3R6Ly688G z`5ffxazV80BYQki@X7}SI(Z`B{ll=yUqR>!1jAi(OGVuCLd$R7{gru8&4ngTa@W0_ zH(jYW^kEFol7e9*$W>zawZYwTNC*jW*G?5p=plYX3dqV1T|nU$Sz|cKZC2cFG;}vz zkqb7FL_PA$@G&>mcscE_WwJ>8O9+J;aV1M@N8QBl3_Y!x>^UaUXGCqC2k@fzTaIpI332Sq_#q%KoCa z7ws>bxi?a@1vpaUUZrag0&D7)^x`qn6^iGq;NqyiK8u1 zq+Tb2z(X*G?-ihbKt1^O6YEGahntBM>n+>tm*Vxb8yQz zcPG|)JOR1cPB0-$4MQLnjA8QbUoe;@7XUgQ@&@$HRm;s12v280{*%=!FkT^8B=TxO z_c2KHkN}o9upbeLnn`DyqGAarWGbd2VueI_9cWHWkhmG=G%@I<7a<&q{85f0bqS+t zL~2VXlCJiWB4t-h9{OuFi5JYV3z4i$yGa^$J(C@7aw_l28w_sgp(82PxS$JT^Ax0j}<2s!E=EaFyI zy<71j94^{ENjS5`H2Jrb%Z<}zi55{H3^tHrRwF2{84qkHk!G0Hg^+xcVdeOaFPlWUwMVd;uk4}_a*g7Bs@KN+d zxrmWRf5l}w>4Lfw=0Z9QIqW9-uemIeNgUzrb7#em{>G>EzA(umxPZgfBgDEs2Zh6g66$aVLIVtLk&{(MPJ-C_TkP- zjZ^-+)uaQdh+Qyn*K#49oMcB#vT(dtZ|Rm{N@79+)LXk9C&|59p@Nk{IonxMOwdJ! zo>uS37#8J9qOovB^~o`Tzi3m$K6T4*_53M`Z5EBJLyvHCloaMEN#0R650?onLSP!f z9`t!{k$Y0)haoZ=(4i4fSW%qN8(aFK<^%DbIMlu$ zg7?TG36%9gFC-5`3$quiC>8477$y0(eNm7c4Xe9Hl3Umv87(P9)GfJ3rsa@zZ@T#jYt#;XMvJ+7=2o2-$Z$k$xg`)x^=UZ<20B$HPm^ znEvpvUYp^!eK#Yiy=lu-KxQngE^3L%r3jJ`ERjfBU1zw~$MX-gs+Rr^k5L6B8-CL1 zjNN?MFBTc1$b*CaARocNBwrEc1#%XRJ0G}MMgmyMM|ac?Exlxf^dDiv4{_U?hqB@7 z@)bVKr#k#dpR9bjW4V-HHhl38@Te@{_J0#+?8JR{F&v5*KwJh9La~Eo`>_W)r8wW& zEC$npB*Q6)r&d-1{JEppe`x+OJ~n4C;124b5#S&~jMBWrJcH6HdMYN}+ z&-7+-!dKt#Xzjqd_m54(D$_B!eT_GeP2dinEN&w^h35p`MzKR+6u0}_r(T5b^zze2 zX~3>wZWZn|PFE~iRUOwA9fFF3gx_CS=`SoV;|W$SVwfCP2^sko;w5oY5>Il-Zk(-a zpY-h#-rGS*nwA%6jliDsb189FomQ~419}@1+6!+7oRs_VU{MB`4%ai&mZ2R_)bi)F z-U%nCG}zYd+t?Y6TK3S5h)5pl2KDz`5erR=BB>Zz{LE~_uX5+i(0%5uk9*BH_7CZS z)X4c(%9kXe`oxMDv%pU#lBU$g>8!|N!yY6WQ~+|1Sqe-F8kOEU22G!8JR^-NbRLw~ ztrt6v?4gUfQ$7mZohnBvOW`POn{Sl=B=$4Z$JzTw#RwMgp#H*HVbq8FB#$=Bd7hio zN=(x_L*tcYD2+w`JL1V)jny9;hD$IWht4C3&L=$~Dbh+yMtg<$T5}1CV`Xt|CLh^8gItU^&)6wZ>r(-!itX<~? zE?V1k<8%pn#BXRqjH;p$Wv`C;%l>Bf3nP1lfUK6g&sw%+Gl7oVtYr_ikcbE+y0+5I znI?V#6VSZWQWXgxIbY!>jM#m?VeXQ(Q+MvA!huKpNiLh#kC|AujCzW1xF}21%Hm9n zfc`BTW$1vH*<$Iy^s+e+aglzd`xAnY$!Yw^TUy#=oZhd8fgT2W80cZ3hk+gjdKlq4LQ z>9hFt@(4wo*7M~)S7F% ztu>@AcPnl-u7@(*RBZ93F9++$laFzI?V@Np_1a<(v2iv8h8r-pX^t*+=MZDuZMRM8|C__0ExU0>Hn%L@7hwew4^v~9RuQI+{1O#jhC<23*uel& znO-1#*-RZ|gVs^Jj{YuAkIS#k1_&Enrlcn)w0%&|M$&bnE7 zZdN)$IYU|3om2!AWn{Isw1aBmH*}X4*kzr?vM)uC*4ath>B!~jacFOpBi`wR?h{z* zrqM>)G1cX(Y3V#_DP50)+#xXq`J{C}PJ6i|Z5cO9ZfdRHqFCN!$q*r%)t+tJ zz|KfT?V%^-LAy9^>#zUiZI_MWdp&(|UhL|u1oE;wUXhRLVcBKTSDdpZuvI(YZ{8S7 zUBy<=iQ7lkpWpiV8TB!&YcMXOpVDo!<%gkp;g3j}woLRMU(sw}ZzEbyi>8%IL~@=i zFTgHIpzMNOd)R7OsbL#EC7f_Ka9X?td;?{eITpXKDD2xVH>OmlZ!F?0vxqOPAK=(g z#a9ikzRWjwfxo#iY1N5w`K;rOetCpVYwZcNyyyiwGsDLOe?{GlD&<^U*x$1;&_ z^!t8Qg8K^K+W|->a{frp^585IO#i4(`ogsB8n=&R$4<93u4Fp~eTxKd%`>QvjP)au#27fO)i(5dP_d%(S9C#wbKRVI*!R~Jhpv1zGwYq0Se)U#wN!n%P+^=8kJbk!$4=y`+USWkU^iKS#uRIz1Be!e5OUUr zI!5%Nf1bn_s~=eD)#e7e*0CJqYWrdDAo|t5-QNGgMN=$QW8h^O(RLBuYa#^d5$HL_X7uk>2BeJzpzUd1oS1 zrIWS3^L!Dwt?SVoF3DYmD2JTFg&UnGS77Siz90pwg@nNxOkx7i%Q2IU92U<<%Zs=h zX;`9+*7LHQfcXw{W0BnNv0T;iU=sodd6w_-Zq>2*aom2e{LsYvdwIEU%l-j}X)5NV z(U3Ur566de{8+Dur)9&;JhCq#QTAhH1S3J4N?VK5kzC!UKkWyxp_t;)Vy)hg^S^ub zo`EUYDU@$B_hf{y!R@S*Q3GovFpy9lE!T_IK@t`eK=>q$xov;d;FGiuN@MvvbUAFn zQK%IfxN^E&6mum){xhK6wDOQEOS^Nqt9?9d)6b)HO=)HA|B|Yz@2pFdiBa{=#)rflA0f2AJ4U4CvEJ_zpFgY7NS&nU}oJEA;IfkUIhs%$m>pz=e|AP#! zl_A9Y`H5z!QLL6$SqIog_WiO_r!K<8A8Z7U=V}k|J053>cKP5T{dl|rTp47rtyG1wD)>ts=4p( zyP(Z9@%*x22z57@z-Kg|Hk@RwI&}zW%mUz{^J^OvzNDVO zKjAK!;14GLdV@LKY~MphQGL23xE4MgxmwS_l5lzz$knnyrcne^Q5qAZ9W#dl9?aHF z!Gjl*zti%`Ba?kYlP9!Zb?9ESN#D?M`Fmt~3|sGq#>IFTrQWpkx^?n4$S6El;@~Jk z2X+g&a8=#nttY0F>`n}gwHlomqQwc997($l+eP~blTBzhgk$GMV+k%1k5R3SMjZh@ zB>0W3!|3%BBrbhtavVCmiOJUX>kcnkFJv*Izglq79`ABiAmL<%^!>=e^MKBMEFL$Uki!JU;$jT?bo)94A=#3BldYZlr`WR zLT9XB5VA%|G2o<+kjYa>1NEL_v>Mxhk+gjdKl5ACG;K%T252XN2UuKtDo z{+ok8yI&~Y72L>#ZCnTX7hbq?h+1;!z9Z=kZz#FN8g7usRv9t$f!nE;Thia`@@{r| zBO9uJy^7gh;e_8b6+Uo##wl{^TE2hh~3D^_7c`w%bCTBV<#I1 zZ0Uo%@iJG#;cRIluZR+Ar~blDTrsMhu|1_xKeV%1_iMAfz3Wu@blu zJ?7gy+0H}J445bOA66c~njEf^;8nq@zkZ-uEA6_$=DYia(K+$u#KA$u53Q_5s0vx_&l{UTYxMXNPr{-Gu%Mm5@%$)rV|Cx&d2x z<(qeG`y$}wKkJ@Dsg|L3QCrmx@jgdex$KJ#f29EG>^;YD_Gm=u=N|Q8v7D>H zL>4bhhng3s+>|0-9Dgk+F!9hmytvu8AFT2+Wg|x*9Qz4Y$zZKZ58@OR4h}7{8>oZ4 zg%}$GmShCs2lywgTXuqKe=Tc;u*e07UBp>BObrkGDm5($speSdv>P^}9j670*UY zyX!RA>qMj*z8U{^8_6v#Z6B0;Fh~Br<{7H#nqK8Z`v|~*({oiM-26UX+%CAq|yX$!lC$WNh1-mfRTlrO?d z(OZ;y5qwck=`sEFgG2NsN95B~T1NnpL6lF;CpX%+*`Fi)F4EaO>E~(Nk-YKpw^!16 z@C3dsY*sVvmaz|ltLt`nsBHKM=K+{LaTsMfKA|LytZ`!?P3<`tw5N0 z;J^~>2OQdYgA*7RTZ!^QPoS(WVn}C3I=AV(`d4;rdmZ4%0gnRS26zYHF~EBP9{@ZK z_$1(qfPV(4U){0oseoq#Jiso%FyL0eIA9uZ4zL7h0P?tZx`z7JYk9%|>xxf#FJdF9 zxHTK{%t6gUKNx5u1Y!Bku;PZWeA=)pm71zzS1RL)hGw83n_HKiJ+e6VBzt6;H}}XE z%pTd2*%Rx=)9>@LDHal7VL$?*oY)g<-wV#3Slo~o?1?>i`^s|3LnhoKduXRj2(WXu zQoymmLpx8;9UZuJ=k1W;>K7M1ge+rtTWU0_2Zn|&UAi=QY42dAwm7s0XY_^;0-6B^ zIUuc^6maCW+in{Y-=KHkhAm9QYzNU_7mNNSSZjlLf|YCGkUPU7YEkeYPRP|sk6H{3 z=;Pp!@c?eYmlk~-ofP`vyMz}ytv726&}V2e71}yDWI~YE!iX4INY}05nLg``G$Zq7 z@C{yo%}6o|?KC5kQKevu9t1zx)dLKplE4}2+260lF+MHZ7#3HHnGyLE$$G&bqh8N! zHfdmUij_Ig3DJo9ifyPis!PQ@FqbPeaYLLSlL*zjQj*``M;3K(NLPcH0}W#{z=5!m zFPz8Wu3PrqZ0fD&@lF^x1VP-m5qI23wOk#jRMGA0A`?>TA81qt>V65lfyZI#jQ%0P zWTxW=IlvH*r*F(HS2>rt@j|oGz)M=*s&_Tbi%pO+Y=_W(2!98qp3;2s=J0X8+Sb53 z#sHU_A+D=Su=>=r<=N;soHn1f^~MB@H&;o`%{wb>UfU=Ft=t^Nj0arUh*7B%!EMo(t%nV6ZKJasaAV)V{aGj|NOI8UBTb{?BKbqCX(Tk>%|I2KgvoWOYVSg-UB z9r8||o|^I=e%RYpt6ahmP%QY_`PGJxjn*D-@~td*yP7y|ws%jqv3oZo411Syb$!c% zy8ZUs6ae*N z8LHTIzan<2cr#|W1Ah=wE`JOYy7E+N9`fum{?S6-AmZ2XrY-03o?Yq=mc*tL?OcU- zYSMCH4&Ozw8r49!wPLp5y`05G9=T<~{XXycUOBsxg$k|?jNhauG~&1#I%-MU!Fo%Y z*US7V3ri_%$>3w)FlRh$vm=vpvu*+j?WU#q>kUDKO(D1=4rBBq;oIk+ah{M*lmh1N zo1XA?Q6HDJRD$A~F!aohy5(j$qHRr0A?8^Wy2#y+YmgrT`jCQ3c2j}x7L;=le}j+6w5%#l(l#!sqWKPg9!{+6S^{{Sl^T={SGH>AlM`!(YPWS%IO8Ugxdo|KaObeh*&>{|?)~nhXEx z{eLiD{&oe#pZ{b`8z-^-C^Q87`v2i}|78qQI(KfB+O2iV9!U*`WKFpK44G<1&YaTW=)|4;8uz31KJ4WaZ{1jm{XA#_p{{ z2ZtIF$ho``8M#UPKX1g~yx1SP(RRj3P)fX>OFkP`DQ`qV9#WFQ!;(g44IMlhkxW(& zS^jV-MRSsKkIKx-&kTDo1QG4u&d(>paV@y~R_(esZ_%MOJVnNYF@rPhq*fWZgHg1w zS~=O6g6)u_J;M@&;p|x&9=~D3hDj}YrX=w*p5~VaMBR^G%6c?Ze9}C znw%OtZYuTkscAVmSvko`d0Fi6J7ipXLe$qkk9GKjq3{_Mx%@9Sw*MB#7xH=`!*}Ib zXW_2vJqn&x`LB-478?JZ{MX;lxrk}~=QLRNtk4riUrWm5F(e}fXATQ*!;p#miOeRt zXVE=MV(jdsahb8(8~aAc3MNFKsU_4BnvV|WL~OG0q?2)MZIzXiG=#YlQ)f0x${m%F zogHp|%}#N#ZLq_e5uT&@xV#adQ+5IF*ebl&DQWCu9rmJA_m<(`_~&rDiRj;7*4Y&s zdllba#ka9Y=bzyEaGr(jpUj{CY@Bdq9{z`q^IzSse}!58a{d2a-0&wq{IBA%zntU$ z8oo8BR8MS1YfJk}AO2JK=P$>)if>~%zkf2OSMlvteETOz9ogMsf-MXH&1MwjMAJaG z17Ndr$y~|&7R!K+1X&FQ)#ma_I-kuWe>#q*^$h?6D`eTi|HYnp9cIYJ@U8GDf5ct? z)?bam%>Pwb?|PmO4Jfo(l*ex(e~25r2RyTOQ+A!K=+FaTq+S9akw4JmAv@dCAXur_Pl&U4vq&1?Mw6?S!v|+SK zwAr);wC8EtXoqQMX@yJI5-QUEyZ+U!NZ)7|D%28A(hkrz(3aB{(C(z=(MHhv(Av^; zT76mq?M!*bh_;vZ25mKM32hcFlh%vo)Bdyn8vO^yV0@Wc!c^KU+C180v=y{D>9l)j3usGet7+?K zdua!0$7vU7apjojG@aIoHi(u8eeuTdXADi_p_jSBV}(+NWwfD`e1srW5O}s)i_zppdkN9w)zhMEUW=UQ-7<1NUJt2C(^SHd;sL*45Xi4=jNkEdhoQ6UI_Co)= zcfvDuDR?zhWp(3lB@6l+zSloIa_n%iu@Fv$w*Mmniip<1EVnZu&j zGYW-=h<+8`=NMN;A@<6-@TeV;3gmRiU|TAoLO4$-0FAwyRHQeBJh9{V`~9wT37;L7 z#WjwnudTTw(+h`PZIL!9BP}QFee;6r44=@@E^}B$C^+dY9FFcA`z3JDyb+4rTqqij zXZWFLwwI0WWVoLNQ!3nptG6IrAHG)bXE+(z+c76&Xl`@#J6FD2@I=pU;S-OMK$QC1 zQNlA1P0Qsd-$z$DI6E3Np-cFQKOL+=be3qT@adFR?G(AmFt$uAEO7gy?Ha=|6oii5 z+jUGSc&}JAuF>QIS8&8=C3RzbDZ=6RCPiWogzgfS>97)Wa>GYMHy3(#Z{4ln5JCxo zy%RkAtN*TT=Z_sD}S+s(;{ueV6yf(iY&wlLvx1m z)41{pq1lz+3XW9%%8?7cTl&i1;rnu`Flltg5GlI$+lr+k<6$34&QLv`$FYlh2X zp;@`Y{J7zRhcMQ!#tk2nMSs2c?5uoYcziA!aLkKGRwwj{8=98Eh;4}*&bAtY&^{iC zMs$ee_%Uf?hGz3zx*NjZqAR#2esor5`p7Za!kVI~yuxpaARH`|nwpU{BsCPV2*QTA z;n_SoJ8!r!F`fdm(cv7dA03OY34VORo5Ee;yLnlhdvf?&=1|@q8J{~gypC0I?4ZJ4 zAZ_E>TaA7Paj00L>uMc8HaClp_(f7jOw7*Wvs=TSPskSDD4aTcSXMTt8(lbcXt=}# zVO-JF@Rii8+~G0Fgz!w^P-&9M+`m5T(-@Y9@NnGlg3mu0$K&zPp$Nh=al?nl?DzV( z;n7id#|_WVVF3!ldagaQ;4(@uBJ?e7XjbNULAbS0YTKSEt%X`~gTvt$#)elGUYKx# z@8snS8<#EQMz4kAnjQT%g0tNc8v$M%9iNMd$z+eZso`tcLvlt5jpDg^ymB!vBX`2E zjC7X2P%|#Pv76)bhvr7d-yZ%Jjr9{;Ll&Rj6pqW_VM3i^sd*V=*p@;##rLC!jteLG zExG`qJNG+3BOK$q7`1{A3ctpU9+tuNWJWz4%=yNLzZHy4C%zL6oS+v;O&?S6r5f}o zyfYh%q%t?hq=s6MRHj=hC5S^a!n@Hlj(uL}*}k}R)>$}S4S8j7rp$Wn)v}u;i>;y= zy@Go*VQ5-*9uF;=Mz3=6QX@@JdRk8Eh^(wpg0PDj$ICr43xqH{%aD(UX8OI@J3Z2J z#$;r&V8e&VPys32$LlS#v-=Fq4j(hkDi>N6PNggl;n9R}JU=Z$IbAr#Qilym7mhQR zSPs$enT1kY=HP;OAamN#Q7zGDh{mqLlDbgVg5b<}frxXbd3;VvJ z(ERJ0#R|nR%3ojKbj5q{-0t2&LcymPUj8}~v)yB|!#~3Zw{qRbuDljHE&jeW<_X(I zVkV(+(XQjtawc|R_oT3XlxI{%W6hmv@^|mF$w?bKj?H)`3Pp=x(R;-<>1jQox$tOs zj_{^8A2uv3eHDb|MLJ{+=4qHiat7y2a;fnwI7a`)+x37-C)e*Ql0#`@i>IhsNfvY2Mbp-x5i~s_$ zB>M5D`=R@_Tga>AHTLFsuX{fP=YwAZ-e@KWt@u$vtSr_Pr;2xocZ<)8`^9Ia_a#H_ zD)*8H$T!PV^to__B{JZ=QF30YrC!d;r0x-vg{ ziz}qTa-j6p-_tMZ+gxF4Y}_U@Cey{4;%srQI8UsqZM6?N9o_A&Fqf1i-#e|J<@1@Q zusHVl1k0o!Ev;?VSobmafcL3)%$pXTXEnSEKZc2KiMi?-wYSyUzUW={iiP91Q4lKf zqoGvO?qGMdd)sU)zbE$ERPlLnq*P6vZ}Ne|v11gM%gYyxmCkBsjkC_#;B0iZIKr9O zb<7g?Yp3+S#(PG4^9!pxM=umz-$=&2ficlIYE`tGIM;YWVxj1q1N9ZoOKunciLf7H zA$9{1g!AHB<$mpEy|=N!xWP;@mzvL;>5T0y)|=LyPQEKND-_KsTY5%5XIwM{v%T5g zdev%dFR_#TS-#LEcFyOOaFTL^%=F0eyx6k-b^23W!gK!F`ZgSXv>eg z6^p&nFEsTb8c7GFTowANFZ+p>RnF$>KfI1JWbXB*jr5(Po(^tb@+?PKv8~ zo4qf*OJ09}grDQj^>_PU_?P^0L00f-a3Y!~h1dZ`5Q>Ur#A;$av9s7$93ke2Wu(f| zKxu?@yEI2yE1i)l%eFS(>+P@i=Lf>Z*mzgvopj~AGDF{}pEuG2VNYx zx3{{>eBn%?Xda&slNCju<&1Ruc{$z+e?@o<7}T)um!-+_ZSoBHto*u?u8r1mw9EQ+ z)*`F8UEaRWUTC*>Iy*g`7oD}v>yD6EINBMswAxf%r=C!gSlyrLzvekX?(J?<&+_uU+q|{jTb}2q z_{026|3vU}AS4xrQ-wKV6xvJoNNc3c^0kc9c`aKXr{AnEGqxK0jmt(^(_pq|nYWsm z)_E)5Zf5ti1+j3nCgv(TjB=)9b~LNnn%xU~veaH>|ge)2X%u6L8Cwn)L>@t zNpK{b1zieve0NwcLKre#yS*7WYbH)8=@OdrQ3)-n(8y|26;lU_2LKESXazZ_a7Z9|HT4k-emZa6y8fc9)QByTjbG2q#E3K{8LF=OR z(E4Ztv_aZ1Z3K2JTg%fXXp^<6+H@_#IYN5T0K;}^VOQM0&N zig{MitZY^{lgzsKk4C0w_VfmOW4vSj&A}bPqv3dpMIxJ01&kB#DAcIi_qyDgZgi~X#9*p{NJo#0G%raJQ-&AZ_L z;tN61pmT=h4*50 ztWP0!IK{OjC{>kVN}e)ZnWwB*b|@$C6E~@2)Y~LEt6wlv%Q8D#XhXG$+P&IS+MC*kTAWb>Tfg1-+!$frXMSK_H2Ybzt>gHq zrp^rK0e7VvBK#TtBYu2PCA_XZMIsy1MNAVHh_*aJUIae6DA!evD!(e#wT4>Ppns4C z?wA+|hl@l$Jz36@r^)xrOXTzNd9|vM9`^rCY@XZFP0|qX$FuTk`4u@+$yFvQGw_=> zE3uL1dL6vmy_wzt|5N{%-yK8|;WMEq^*e%4jQP_*G{r3N$2vUOX6Ym8kaR?vCJS0I zuC%*0NqbX2XjHHo+RMU+Dgbx#mG1AGS(aWjE}kU7}oU7mS#IM#XAVLEC-gq z&41W`-rwS1@N02BLQ?FzGN|cMaj)1=S*lc0?~nXd5!Sw;bt6idVIH)9bNYC%dGC3R zL7wydoe};m8jZsad4W;M+F_S>-f;Ffao{}q)U0S^hkIK6tU*K>6RauLJ62nJjNQ}? z!g1$N}z|l@<|*@g^MZNVjI&Bx6|HJSHrHDs(T#7lwz^n7tUlHNdN9ly zVU5O?=h2hN#7@(#naqc|);#NBkk(>rDKXGWYqhn;T4!yrHsY1GSv##g*!%<5C)QzR z&PA)7-Q4bEPXNm-v){3I+n->M#=Ez;bMRTAwO!|KaDT$emd3s&dG$S$`#j#e#hd2M z^&a#VdKj(Fg}t7Jadm*hB1x-53#}&)dcO#f9P% z;$2clb*y@`dcWS#xY0Nij(v7fVGBRH;SD=0cYq=uF&;OT8Y_%d#>>orjrg*6@ns(w zhm0e}mj#&T7o)Iw4VLzLv#F_?F$C1!>|*vb`$ zXIVQHty)%HtD)7(>dc7tV-#;?1ZOd7s~EBMR)W(AyKFnRIJ2C2&MVFZr;t0s9SdUk z&^_dS;eO|qi;(6l?*YbPsrL;yn$Axx8is*F8L@&`Mf_MiES8cgNKauY>&Ttt$+D%S zC>@k;%0_JRHf5)>N7<(wP(+Z#TJs)}2h)z0c|jpb_gTROILk^O<)(YYPp zd_0PCibfdqQ!!3@5tMgYIwv)ho64Hp7qtE~e&Ypsle}Brs_s*h!FH95Q^s`jS#v#z zCf%;?T<0V^PcSc5hVy-K(J1zsudUQx&|cAA)AnnhXh*dvdOTQYt-0OY;JoJ?bS^t{ z@Bpv6oxCen`fY5(?%=E7yWq#*0{A9&oK&oChH|?yQ<e8mN9f7VYI&_U$lxw`j_ugxZ?&Jba(WG2)0^vk^)&q!{Vshm?8IB}2sMm4hGJAU zA2D64xs_tQVQsdyLzuY+CbAaM{BO- zbGCGAiJbt7xYN7ed(3;%Tjf>tPx)i$?;XLc;33!?4wG0cvYREuKs+F(O1aW4L=g8X zE0x2_1*M+)4G~>KeXjnXzEGcT-shAgc6~BFSIp~`Z_R^L=D=G%Ew^K3BFexkh=ep_D-`Z5}vXHc;S2e%PzW0U#0 zS;4x&>Iu7ar+v3Q*M88h1uzo{{gYuakzAr4i|UIpUNFs%YBrAtj5JKF`Rd5v6vqf+hX%hh|AOz;|^oK z(VkT(%qL-kPM855?nHR0w?fu|%KDV)0v<6NYJ(<5x;!U0- zYN$o*d!s!Vo^B2i`F8s)BOAVXZ%lsZzGHn>&pq{GAv1FwIXPF1lBsAqtyi4H{kAW^^#eSvCpNzeLODB zlTRtR>UwZar64)z9HfHw<_B+v(c_t7!c4j@i&MlG#eL!@VneBe)I&Nb{UQ~GBibNu zkyXV~0%e*q13R;oh<27*Lu;({)Y7y$+N0Xrtmt30()u^d^Yd0|_=?JQiroYMxW+E+ zRAt6Uu1{3A#C_4-f(`i+|5)4`=#TOb`g4hq40|I{X24Hkk`s#qGLm3^ndE zA2W~G-`Q=QE>2%(h*Qheh(ZUu`Pic?{Okg6wYSZ?!B_lMa69k$hy5S@I1pWZ_yLQ} zBW46EgVn*BU>(uf#%RsQMb|8G#q)?x7fFkyrP6ZPf*tssZ=~;~%UpW`-e;;jU7jh= zmgmYpD!MvC9j#`odFljpfx1C`Li zu&sho)M$cDvy4J!EfBkBwXoV+3z=_1Qd~4&7Rrn9Br$xrMEO`Lp*B*7steWAYGX|% z+NzALtfQAPsvFlC$%byUgyorFOolg@4*T{L{(iNQ!wR*WfzAYHf%B?!i22oz85NFa zoKPH$)lh6Ejumf#l|4<&A19~E)s==yQ$zZPm2HC4^WZqHL!VllR> ze~j(&VHbYU3hQ-PpRu!UF}4{yK^Xgt1IAfmtMSgw&TV-Ahhdl&vx1fr%kHH&$FXQX zG2@H7rQK?760=@+n-Q~)btl0=%_ibs;4XKcgL~Ob9QBoZ#{HSduB2Dds{w|(f%w$- zT6sNS9^UcxU~&5R1N=d7RU`b-em1=H1b?zW)t`>-nGHWU4|Kc8U+gdSm-`)qZb6^$ zo;Qo5QaK;-c8C3~?X| zE3ub2s(`(CQ9LT16JM5YmYb6s_+D*T;I%psIWN)1>htyC#%!YnD_gLtfMa)Avc1nX z!3IA5x0UxO2z(@%F)oTXmx;%v-SR%7vBk=_>JRD#Fi{1qigre;MGj%b-)7|ZdLg46 zbEt?_nW(V^c5)q))RE?FIW{gir*-q@01`lk}{ z@%qNN$oJJ24=A7DYmX}@m2Z?Y%0Xj3%xI0^k?@#%V&{%w(h$9TXU4GSIBOEe8Dggs zOT6I-hvOn2Gs%9MnD+(ypq=V;_flcLMuIgt&Y8H#$E=h7%un>Q;5&r)=z6P)bHox- z8COV*kFMidE8R-vu6|6k+$6{)Mv9NP0z)h-*OMKxJn8Z+@+!G1Ou;#|h*n%H^9N2O z9Sph~yVz1c43G4q@v|X+T8WdyPsLTl<1Ll7+?z4l5dB;I z31g|b91L1H$ijiCx#VGi9;_iZlUvDc z!!2hBn42qBLMOSaMHx`7r z$a}(D=B0zTUJee1=gW@0Umh!ef;>f2^E## zr})C$cog(#nx%^J0Od#JE%hWA$#mPnZ*6gBcssmHenq0G=dR$P#qklYlSEx~#cPB9u39hHvI*KP+U;5{EAw6beLcyjXWU>6Fa{H+Oa=YiZ9Hu}ONOrz@vlL=`jXY z(x2w$U^AUq{88@Pa-za2#D$HcOk#@FpZGcl1U9cACj8JkWc^CN%fU|7hMj6`E4E{| zv%A@S?CEx#Q=3_1l9w2V-*^x__^R_JHtuuh3pmdrZV9)td%fG#eVrM5&_CxF2lF-v zOt4LS6q8jGRmqlal)6eIrE%Il+A>zrc4lX75aF$OsG-FAw-BMuCq{jNNaB!n+WN&R zYuB+wd#C@tA7Q&Q@xnaDB3&Fq#^?d@5xC{mSmzVsw_+2iJ;&}R4aN4&XBIrAtWZ`L zF!~q4U&Yi6wY7eu-W61uu8$#OJB>);5&dcXW&L%13(?F+`X_o(Bf+T8{gtAT?TNpP zG3z&&H=5Z*+IN}{naj-Q%-2D!3+x%;8W4&{wxKv#gbK>d%39@hV!KaZx=t#;DMi&X z%tTl1pmtM-s7KT<$tu)gPBzg7Yw4`}NfA%^1fwA&7LROqnvsQ7nPpVxd@Za5BHWYq zdS{Yb%Dd645uPupICTbsFcL0nl6TtHm$va%U3`kC@IYdKD>s9r}-%2nH|y|HRJ_|-Y!nC0p#>SpzQ*wk-`1><3q zYqJ(Stv&I2nwAS!e2=zJdxnU33z7Th+BZ=yyu4nE^=0TS^v>Y^bbX?JC!;%0e^_6H zcV4P5Ct_T!uOU0Wf!y5|eVe{h-vjnKz?dJ_kLxGNm;Vui6*o#5iAF`EGX6ZtsB1J} zy^S`;!j|0!GqBtElnmxc<5wdACc2)fV5vKS?lZVU#C>p1E3u?oiK361XUt#ClK9a2 zFt5$6PH;;ZRz6(F{nq0k{`Ig%A6mz(GuCfbNut*JwhCv|*&bkzBnG&{z8@6voc)@; z4cmFl{@(u0F6C5#B~YCfSm&FZk*tPkL|F@*r^xrc?(A?rA-XsVpYn?%xJBLKZYej> zt;pJ_4w4FU0*zeJRimsxGq;u7Hp&b1aQnCeqRhYuceI-wh0B!8}~2CaX=fwOYK9AI4r?ibuY6l9)hFZk8$xDlSat5Mi#oJwB?uRv+GGf_6WA z?K*9vc0~JHYpeItCy*UGsz1eD*~eOGi04cvVw-P1!RUVq(^np?z)h^}+fgm7v|h0) zz$ZEM29A|I4w$sq<2o7!N zt)$0iyh?r((Bp?h*lEF%&|^(4E=;D+h2UeS!LywbeJMwpD%~O7%{4tEts`o99M*fE zQcitZU8BAVYW^55y1FKj9qFr$(_ZAt>gkKDC#+@G1NOuAWB8b#+)L<6p7x&gUhs~3 zC-BCziSg$9Yy4OJH#z%3Vwi97dBsBsgpkHLPD^VQLmkAb8l}F#dfLEQK2wjYUovLj zYY(t09@Fa@*BecZL9F&>u%Z8R7xXAoK-S@+7g$!E|S)GuxT#oCd|0VXj&5x9f;ix8rBldV*if zFX`Ll4~j=Vx4zhx9Al<*n{-S%DSam`gH3r6eZdKRq_fU{9d1A;Q_~!8bZ0O-SVnaA zBAiz7h<|7dQZ~i6#U0`vv4xZ(btHp0ni20sc6G4)iTsURU%5e%l-My(V}q-yl9~eN zHA6i})b$1GmUyEyaZ)=Y#k|%MHWrWY$P8@3IsKBp-x$fNtjH>P(EZd+^n^XdBVW>) z^E8p$$W!Ep*nNQ-4TbqOY+;*0UMqS!($nJotm$sq65q z+^EB`wK0P=^s90hHON$K)-pW>&VQ$|7j;QKF;G!A!JXv_XJVgChV%SPJdR#vtu|4g z0$xur_B#{F<4t!Hydbz39+xVphxzXbVj&r8Ed1$ryJy`G3I>p~Pb-&kpEAs_z@ z8RSYZ0dd2!zP68mrs>Zhrovuf}~+5TR?0o?U`GS9FPi6tWc(ph{;w57q)T2Xtne!O+rYymqTF#6 zvgVV?KUCwpkE)(_7z{mMuMA(5PrfLHZ+r}r4OyxC;NOojf15g)&MWR~ZfMgIqr7G# zSgB%uHDB^K`dcHLRU*R3>0%{mt29IIt)!?`$-R%jE>48oeB6E6eV6>`d06`ZW^+`e zhwwm6ZDTgCONq!IPauB2UA!pHh9R6U*&JtpG6ZI=H;8VCHc1}{Uy)%{1*fOmqwO5K z8b~a~>j=|vm%ldjvx7=R9RGa!QC+GnO~!hi0FwxIoLv=sWZJD^ioUfgIyKRVyyt)K z-vfVEBC?^g%mk}z7&lFg{hb5bobIG!BT7W^if0ZpGr2z^U8YH=Gt#2mcBFm{GJlg+WAmFhBy5V zi~N$Y&UnL^;VvY)e%cofmxyvzAIo#F2AkZY#O#&5hv2Txct3fn-`pSQ&q3=EGL~t< zs305WbsCBd;Y{paR}`xf88;9$ILnqqo881=;z-uRWpcMwrB>2p={4zFDHe+~ma~aM zZU&9~EdM4K1$*q)zSNR=cJm3loKuZ#`7sA;&A)``y74j6d7~jHkCze?qU-RbWHp6* z72>3PEf1WKY%Fv3^LVO+XbeulVC->>;QioG@I`PsRKegE6QVi3Uv8o_C+-~#8jC3z z`l&071m~nvm9@&}nk7VjF&+g$4(!YV@-1JZF*!nR_8T(Awe1G>$M$FT@i4yV5%RhFFe{;9V!d4Vl>XVgIueBF@~9ipj#%*w}olHPct=>xnD&TEg6f zh(oAKl+;q3&A7HFv+^4}dJi)CdBk6@>&w6(`{8iDcYbp!gEP{jwRQwGL3J+$b<8Gj z40riOe=C{HYr=Cbj*WLKu;P9t89phVEO3gR@0@UYyA6F|bwV^}*GmVLwR#7lltX;4 zJ99CCy$sQ1h+l|j#iCLp$pPK>m-b4%(fVZl zvNfG(bT(Y|Jbdg5d#hctjm>ephSLiL$Y%EhNT8QD3x1!h zGXF|OcJMK5L?+pYiBi725WM>|i0A|n{q=B(sxb^ZlU1-98xoai<`DA*kkAGg*k7!| z@UI<+u~G_DcloTxbLi)U#MrTmNX<}my(4|dxW=nh&^VrhC-~gF7cJt8@Jz?S28m7* zBiGXLz)(Zo@$OxW!3H-OPw;?uAXF6j75qBB=y&ut_-FiE;73YEYpA4DO}atynX~!Q zE7B(E>Cpa*C8Ig`b$ETvN=E+n8qs5|SAsL`4W?fJr}(2$+N=WR?g#6YNA~d^v#@my zC~q3^*HeW84g)5nv;$y2;!D3oS^=2)oQC5_y))+`HNaeH93_zgdI% z^f+E|ANq_g&O+x|R66IK%`ncp(EN-EuPM7^G@n|c19nh%JOoFUL4@?6@~rZf@+AyU zOSKoV;$&i>8bls_@yczijzp$Qtln;%M+P3dUNW*X>C#rEH?i;*=SOB9c_OmP+ua}B z^Pb_4^S7YaC>iN>LsH%e?dm#49KnmszAQKx@5##ejpzp{yQq)r{s`j zTLJ%*3>)1+8>u~~)g>-lKY6R)z%sI}USU=;%F654~#b?Bq#LeP)c$ef)92yU%VI;aw8iMc+G7c~fg4L3RbX2hTCUgH@55cq3y*)eWR#QmNSqSo0OrXL zqX=0H=hsyks{EpqQKzUg!QzF{2R)<(u~GJm}9bw?oj+-a!s+ zyImPuG#MLx&`BgGGQfSuZRwrx?+-5H6JztQBwW=3GLhH8Y&;^pA$=xgan5JZkGu}I zcOK7oLVZ}X(f6&>zaqO(HoV`gt`7WnH_Dsp@B)j~)nLSB`f5}Fuc2|wC5Q4g`P84R z4MdyC&O~PlI?zMT*UlxUBz*i0ZY945Om=#B&55NV9iB__?}xog19iC~c=Zw~@A}^YXqs z&>QMycnio!FK0D;M)dcM_k&m4cl_Q&f7g?*SR1g;yOa_Z@znqhK3|+cMAea5eLEcd zJq3*9Nc2??fsyy4f%uI~f2i^J9_>sq)E)KVFK#ranKR9Yxle_xa#j+G7z_2yE||pA zsLuN^BX`0BU4uRBN8aXRShpXsh&{=%4Dm+5-sYfNnT)-^6W=t~o98`(-CZ4#=y_u4M#RsfmdD@e&9cLYPZgAgsn{cN? zU-YV17$$tXzYC3U=g5wh5|%S=$G{JP)E4e;2Kl{LrT3&0l84eYA79-`NmA>nifUqg zrocKKBY)XgAF7YQ``@hJ2HGu3g+(to#HHNtm1Nh}fO|Kfr}<;P>l5R!aXey-ZXn-3 z#kvO-Q7n$011J0(3eE*&C@YbT?dA6;Gro+`O9{H59sV+`BAHt%^7AE8y(HrcSBvk7 zNAUTNn=hO1!u6jwOIrcaT0S_WJe=wK#5yOPYw^WP-2FtZC(+aV!YT_{_FK{8&O#fo z&D%+KjEi3!o9hSA&s{6^l+qZ3b<$hX=TdRGoNU17&qn!QQK_QT;tupumy$DThHl1X zb$?D)T{b!y1C0+N3v8GjV4%M@e>S_IpbEY5{aCfFaFs``mi8?Caz9pmf_o-77hDR* ze|4z{Pc{I}_h+RoV5JoY$7M>V;SsM#wbxMXj@6ul&Uh!*zL1^^dV3U2<&XLxBH6S4 zuMuNyMe6>qgEPTT;KEXombSQfMOpbE{J>yo9zOp$IMK53j#c19`@l4=Q+IPUl~Kqk zs6g7_th)vDsY%F(ijh;*O~Es%6gV7+K)FpYW08_Sx%1c7(Tv| z+mamRH1}RIldrg+6CVm*ZL*Og81rYmSEx!j<;Ajo2mGRe9&`+P1VivmV}jS|H)FA< zROIK1iHc|u-%JuaN*N&Rj^OHt(4yb2Pr#PcBwEig*Ko&+qC?8F?z9$w3)Wb#*l*fn zKq&{vZMSe3igHPI#WuR%8zT%iajH40vCKGUL(~Z z|FA?dlpZM2Q z0(<=qxcCq`zDjCqSmDL$hw3$Gg%_a7|4C~Eb6(hJWVA5mU}0O6S$GhYt8MkNQmwsk z_9ajhq}b!ZU**B1^+5DLIlcbEXwHwgs9#wR$=Lt<;qp$9A=Oc&r26CiC&|pdMa_sB zbP8TYoqaYOuf)=k-zmoGn{E?*NHaXYODA@`W0R33?|sE z9Ag~MsH3&9aQ!<`*VfjDq6XM&{82~U-@M&y0hfF;^)nsZp3L8U?nM0IZ2x}$DL6(w zSc+D>64Zpgr|X0$I5u~x&A)wdiph&Nditr@VYZ-EcX+Sl4OV6nzC zPd8#IFOlgC)k<^GAiU_@<=z7VeG;^_&mHAuYDJ{{s{aOR*z>*% zE1449gtF>2qW|B*`!J|<C`CqquO6i;;9)qH+3;nn@pyHDUZB+3*noqfCNR5nRF6_yd^egW zH!-KCNh_uG(p=Q-3*{%#DOQE0e_hF7g-r$&z|BZ-b0g9zBxx>$rnNY|q zwsAUu6=yhoiTJnUbuPQtqH4{-?=JFQ0%eu*tNN;MQl-(1QEcnq7`zm-MN>-)8yLE^ z@VJGgMClr0!ZFg##GA)q2hYpD$_^M{3uyHmp17IX2@U)M>JxC<8`Ujn_;zBWeg@MN zB|o5Q50KA#OdEieO4qZ{3T|bF%)uicGYb)7G8}&xDEB$M$bwp=+kM^qe0jS|l^dYsVW?6-m(fb-rTsy2#k6=K6eq(Xz2m`!?Z%&s_!x{gqmO!`BQ=6&1&bm(4 z2^a8*j~kLX)qIt8*qJ$Bn_9=asN$MOjI|NWyTwiCdcO3&g_+gyJnsjehu5*XbmR}} ziB;tWM5If(it9nPqo_o=hne{edBoysDK!z_Sy`

    Usgqyr37;OR^dV!!CpxpXTPx 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,Ezgf{_!_l46i}m|M~}h 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

    ^$sd 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%0DYGq&z z4Ej7*?4OLdR>1x%ZP;Js$GX=uHPie3KeNB|NAh=TyPAD{_B@JRpU$J+*US13eGiYR z>o>@#_DH^4lMlKmt%=fG?=zW_KAew#v(GfOm2|WCn>@#B{OwV{VAjivhFvNXC(TZ+ zIoH50NB)*w%)26VyAa&gq3Y$|wTqOQ`CgC7ZS?54G*h}c!&>O3t@=Af8MoKrKRDViFqC_-ByW<2h&h+7_qMp|`x#Q#q+IuMld`jlCtDvV z*B?g4*l_fV?H8l^6$x+Sc*1VhHj(try52=5_Z({xDWg?LZR(SUt@MqB5c5Vwt5?M+ zJ)8+^<9I@kW>$TxS*K>xFPm#DQl^;fx%c%Yyv)Iy5{J3JA$3BXGr^L-OF8O)*Ux3| zK>xdbADLM;T6;Y=-2g*`=84qBHkPk!v^DM`Q#($NW@mc)mvAXOuR zsX*L2=pWfHB2eyZl5#Y^DHu<(FD~ohoMW( zlVM>v7fLt}M1Mz^e!sqi%Y(E)ugr+|F zJHKq}L)}yQtcIe`S61QlcXVmmr?|W4dNLm=xpjS3!5RF0H8j)H->;>=izs`zbw;=i zFoJL!t-|T=#$w)udkUGiwi}nlN>6u~m%meYRC=;(t-s$&zmAh|VkdLlkHR0ts`ZD` z&IduU*I;PstG|y*e*=W))6< zAC%Np9J7V1kCWuP0hH?|?q`0KPyL-udY_lf9NIdceT;BnQ0x~DrEljE8WmpZll~4S z{k|y)FZpVO$ielPN|*W`Ux4#|MtHHCJijpj(hOxk{gK@~V)TAj-svOpS(lgCSI$3x zrQk3loRn9T5l-rF_I!L~gqr|Gk0dDhVE*?g-6SJ?X(POKx}O-~r$8tEKGg^(>82Rr zBtO~Hm2#DMW~W5Z!z4kk2?0^Pwc%9N`4Q(a_}IO{2qd|0qrns0l$Tv;dihX zOofr~IE;sBa1uNT=fEG}3W$BR9 zc5@rjbk%n&q<-J!T=c&OE5ZA)9{e3PhNPjsFYy4j@rz-8D0)lT>+dMi-(4hni+Qq!DhE5pJ{*&X=_Hcjl-zuj-wQ zb7Ffr#^X==hmWA-gY}wt=|5?Ms$b??A@OxN{}?uhlcALT6!+iSGw8H$Bc%;0mB66?>qT*Qu^K-rg z7KBTU@KS&DchczfG<*H|!U+E*biglvf0VBNJ{f)OG<&+Mjc{K<3*pwnqHvuNUedJ~ z&(4cp+0)%*gx?Is{#%T2l3!;doTCxWI=?%Na66%-yBkWnUmM{iUH3mpcfS$-0F-nO z8sQ{e4ffRgS-Bb=n0{3rR9@6$;Ayb2}1*P-P1h7n%UP5F~_ZyDj) z|5546cWcc0yzNiYy>En*@7PGX51^#`hY?=VJ@O~%=E$MzofAra?V+SQjdqh^gp+q% zNcl=!iBJv){N;i2ovD(r5OjtXSOpe=wO~;w?YzGRBU&Z66;_7S0qr%2t+dx+;T-e_5FIq` zU61Ft`p#8#_y*_AVGYJ2MGA6OOoLg_dC;hQi3O4vYX);s+j7PkAd5d2B}q0j=uU{M%u zgje-ly<@?+ZbCotFJrnKQAYUppy(HE6;6Log#P{r$(MCFra)@E;q`uMo)Bk*izg2K zoeu0H6Gp;GzaERoF&KZM=Lb;Qay)DWheHpT0Q*B8%Z#4_d8AO)Qyvpi-_sfkcj2B0 zWjr4bOOeI|DDRX=f?~HMM1L;>WoGCh<4^)3$7KA89^AGYUl~q=QV!fgs=h-u14eMp ztvKpCf1kqHoX>%qVKUqg=R=t%FMyXJTPpF)iL^zKIf%9dHiJu{sh9r#1^vAYVjpY0 zsJlw96|g+3xp}rrt7Ix$B>!HkdHoysRBb)`P`)Yo>6^g#w;g4_! zd;oXBhj2F(y^<0AT?=Y%s>-bhZj%u?_Tx|L)gkyQJPd2VZ(&nN+lp@uQ(;$l3#ePzbiHICO z<1aV70?WaxP|Ei@l=^l9N`1QtyTe~$0K5f*;ct*@A?+R<3Gc({@OSt*%z_6XdsOjh z@FDyj(m0fUUi{SGqoA(6lztAlnf-x1{-hn{f=)0uEDar?^b7f*=t-Xx-v$J!(vw9^miE84(DWqD`kYEFMO1qG)9t9&-07DtDfc+E9H3I2v^kzR}D76y}DKScq4oT z2|%Z29sUqqj_7|F7KTS)dH5|9`%3!y^XtZXQMUAJ8tKl@)4Kxfiw2<7^vkyUv8nQz=bP0vrYfJ}xUELyh`^u39}Qh#43zmt zENlk*!A`J0^o4`qQ20KKhlAmGI0Q=nFcdC=A3#ZCINSg~gkQr1co2?&X>cTzer^<$ zeq%Je0mr~BI2KAirXl*X$C~yNzr{|Xx7m*rv)AH_ab60(4ogEf_!1Pmy$q!vDGNJ5 zXBY^}!4Oy;4uURF>{$UyzA8fLrz^pEurmAtR)eB{btw9Ih&~K@K>AFjUnPEXJ*$pd z_!GO=hvMD&YyyK}Qz-p#GbrP13n+PR2|tFd;C9#s9))dTCTtIL zlXgca?-TNbG9T;=E5k03Z(3?yp&RT5Tfy$IGwcETz+RARM$HFut*80JRWJ~8ZKDOj zbFepLF0BPa=BipKbb@^#b4M)k3Ps;* zQ1rb4Mc-eb==&>_dU^|n!8=gKx4Uo&yazYJ`)~(*2rok|m)?%@z#Qn{09jko@b6Cl=>e5E5S&s@cMJNw!_C5;bV>P{fzMajqnbnr$0YSTS6~Mzbx@f-yz3T{E5A1 z!BTKGtPDSe)!`iYCQOFS;aunm=Rq$xA4)x02nWK?U_4w5$HFD>Q@9+;d}9Ta{%j@8 zi!Q5RQMelNjalt0DD7<>YzjBRE^s?!O-I`Scfg%c+Se|~HLDDI0?lb-$Sv-4^Zrp4#gg)pxEO_DE2rF z#U2?@>~R(jfal;)cpgrI7vWrZ1@47c;ji!-lrp&v3!~F7uq?a@%fs7H`lI{MAN~$m zBh#`VYhKy|$eNS(5VH28?ZYgXRFm4wAP1oT>i&so0?eZkrG}R?$wx z4(p-JJ2pVc|3+9FZh>v!*Dw_Bh0EZ6xEdaS((VqyCaW7Bk5+hQ*r8t*y$zc4qt}NU|A^P#Z7-6Qom#4BJ9g9&jP&?cfU79XpLDDkg= z((dJc0I8Se{QwfL{tTJzc-P}!;@t!#-px?r-2x@vZBXLf0VUp@(9~Cd-s^Gxt@Ul4 zM~}A+lz7`hiT7N?$|BZue09iG9MMMPtW1-ZEeo*3- zc=TtW^k<{wycX^xZe z%_R5R!p~tZ z_yzQVd{ZfYBwPz+&3qkXPfXhY=fjO~Iot%-z|BzR16!cXm$t$a@Ea)CABSOCcpMIg zCtw0R1&_cC$l8~d2{YkEDC^6Ypd-8i`@mn}K=>QvT2;FXr@(t~0lW`a!7R8QK7dkg z(-8gHCF0_@l$!<0HJlvw4thPv3oCG*4@$ku52YRygfb2kf>M5kp^UrStgGrDH-)Nl zEDB?BF9m19m*H0U3j78-!*uv6JPXT1(NF4#{_K#hm*^+;)11Fo#vj?yszB+7Ux$U{ z??!l6e(TTq*j}%8HNw|`dGTA*2zQs?`ZGF@=c#3IyMo9;-Ba_C8Bpv+p5mS1Y$$1d z3Z-wH3%kO3@EtfG2Ec_->h&U+02jmQa0&bZE`!@4bz0fwOZXe-jFoD>Mjcnz%d24n zY_bN*_3=6w0yn@xa3lN}Zh}%TH^bc!+s9|X?U21KZ6}m@{4OYV_eJz)fFAb~VxKOE z9FEiY2A6V8I~K*_H+q;6@w;4%0v zJOh2b`2zSBv;eI#-o`xU5J1`#F z(Qgfd`QdO_1%3$GThkI?cQ^vFXQYjU-@s9jwSH|hWNlv?12bSEya>m`JMbfT7fyhG zz==@4!#N4E7Oe3-xcIl>C(s8@fznS-g&)IdFef&j4hzDWusECrS&P$VLudFYtODo2 z>ToV>4d=m5a6aq_7eFb)g^;x+?K2n&mq6B%w551y@0?A+*(SKl}k4-Z36_$_2Ep?wFL zD`-dIP?!qi;W5Y%VEmmqaiy9`M~ zy8_eURY)A#b$A!vfDhoWFc%%#Em#cRhQ;9>_!7i#e0_KiHi!3N2>cyRhkw95@FA?5 zj|P;N_6T#pHZUjjg!ZrtB(3;fFgNsv4sbBc3rE0w@FSQXCcy&mQ&%pxC16qdkCLz%ni;jk2x=lsZv>Tl|yqW;W{-nVBTM?Gk&6tmVD7J=QMH>5As z`zwCy&%n^e_$}c{{?YZWbG`{m|GgP@g4>{^za2{Y zJK-p}8z#d&P|}w%Tz?isf96Kgr@MG`-F6Uva()!uD_!41=Sgl>Znw1dfGL|HeVFOCtOPj)!88kD%CN0+j2EBq(}$Ao{Zc zs?Df!qkDREonD^to^D;M2w#Skq3HD*Yz<$B9bt9o3EzOX;1Sv`eX3@$OTKk?OTM%+ zo>QlyY7Q`IyPKW zntN5TmBnsRj>bPXiulfJwNG#F7H(_5ByY-p<*vRLy8l`yq<)>zZAZU1_6mKnaxdFx z%eYMM>(2fMYfkO>N(yag4Z{ zJTCg%pfAsp=33=HeYe+-4`Q|tXnC*Q?j<8@o}^Dz?or=Y^0-u?>#TR~mG$`S&MMA zHS1iUcI2|%f%#_BnA_7)SnRH4`1{_8IdFbi>+;1X*E*F!nJM>XJ=c|WKQ^G+)?G!G z%na$;i2N$|v7@6`6l=ToYTZ8RWxKh|SVn%C*jnt|JBQE6HELySxnqM)6f0J$CfDi8 zeNn!nANN|2maE6=%72usP+%wZda(F^`RyOBU2qEWpYTq(;P@}2M{w<^{FlwF57S;& zlQ4e|*V@Xxz?77YJ=fRV(0yq8BV7~6^rA0R?u`zQ9zUc0E91L3#wEY+Sv#Dzs@x0D zZe4#y@rD^8OIr1q+F^N1*7OQX{3q}I^3$2ai;Biy+n6}GwybTxuiSrG)~rvHl)*bf zU2?f~U0;++Urp7+v*pMCc;-Q$h`7Zk=Uti>h~F@5VX@2q+RmD9d3<=-DgTs-@w+pw zGp8XB7Q5!NyZ`a~@a7c6 zxr1}hop!0m^pu39DTlnc_EqkVCr&0$YFA{>v1R3Vd)_NvjJ8rl;z@6?v)Alhu_05c z)SmkD-MJ~u#g)6mh?ohT-?}qsiv8gFn+HXleedN^k zT)U&wsaNjGeZ<4iC5;ktCXO#uIXP>>fwGK&%wK6=B|4?QvEyD|x6;3qOo{)vIenJ$ z|3i&YRkp6*)joYkuAOZrl%|v1r`+4mseNkS={!egOjzt)xl`4z8J8ItEOuAEDqF5q zR>HO`uuJFUY%&C<7(j5zvz8m{sRq@-UkIw4d{5EUO4D=Se8qULqe7HBJ<R)tPwz2RxH$JG&p0Bd!ZNG*N-&g56edo43(LpyC5%)gjKdxYz zx;0MSn7pFE(r>e_mGft9oPmRW)ibL28v&X1#w4{}|IY1P-I>eKfm`hIc5*wte@&fr zYm2@VrfuEaiEA$9|Ln#cXG%3Go#)}q`n6jv|Di3{3d()df{IxO8XoWOALiL>Wr<~L zn3F2^L(3=6Qt_N@5LFXex6=*P9Glf*yKr{V4hi`UG8y*A8fT=XREG(ovH?>_hX z@>g;l?U34{R-4J!-Pq$%?ry8>3#TtzR=n?^-RExYI5w90R!ZX8d?;m9{Rx>fch7GU z_Wi@xrgBZF+}l@jo0HM_)Z4wJn&{futE`dm9xnz^?g zPx&$Zx*{Rx~+2hZqcjZ1Kn@UdN=>zIb1_3_o>5MCMNdY zdF;%C^xf6`x9{fKNx2`jJ38lGhY@XxeYY?5^|`fIv&W>|7xebKP!>Etls@pGNH;;^uv_X_LaM7*~~h$E`s@NmDL_*)Q;^HpzEcdCEn(mq_vc zxls77nnM%ExU5WV8pYg4xu;zpciuH*%NM%}%}Tn^GB{4H(GdTY#Xp`-J7iybLdQX6 z4_*wM&sa=bve;eN>hnj1NOvc%=}xC}m-~1UdlTl+Nn7Q@zmVp9JcVz zkw5N!6&U^T(v2?6Rh9pJ6Bo=}vTb+&?bQ?Sw3v4s+vH`UV6hu=KeFrr`+$h*2j1z? zz0vz)SffzxSBKfTZ0P-6-Pfjso~f~B%se$G!~fu1-a{(RaBVmIgT~(v3O|sJot6KB zTMJ&ev~FPHXC6DM<%}(m#Wezbjm0i;X5Znb>Q@^$J*DZv&?Cv;vbLby+gu0;>D7$++2_5xG?>Gx*vL8Q~vkm9dy<`&!z$m>Ie9z z<_O8FyYnJ&a?AGbKLs%Pf7JcqzmHqI*nT193UM-VrW8tWk%#Bs~ zPAyveom}U07WW33IM2 zd#UlY_KQaqpTRY`@}I}Q%E>}`w^h9V`PN>OUh7LaW-0e;O$ID(urRge*Y1=>3p6hg8?Wq$_ud@4JKM+)SSlj@uaM7y1wOLze zCh>pYx_{n5CA#0AljdD4zkBf_^ux40#x+fjF3Tf3{Qu_*VsspHCyKishXI`$y6d2o_ouWvoB83GRXy^A$Fmn|&-Gg4 zoSI{koLXxn9$Ac}B6ksIcifR!WHGWAxrjJ4&8byJS|cIIXkHM%0P$Z{kdacq-QYlp-kvyg2_CgRXGr{;=yAqhwdl7?g< z&Me%uK*Et}$Ppw9soXB7)&)sGRwEfmf%fDH2|*?!yO1l06E`NdK*Et($U!6vaqEa* zWHNFP(L8WNJdk)~9WvUBwFl%Pzqj?I-$w!q=g_*evC|SPIkdPUIkY41P|vv06e^^y>- zL7{sX=|eB-xwAjl43W4qCvU{>b_RdT`}YWoxFQ}%6e5cjyO0;h3k&>Tuz)?8?5Wumk-P>r@a`KL5aJgU?%l0(jhfyb z(UE=l`d5s1tI*ii{rtT<)T&pno{wix?>2p-!o36hLZc(SW1<7R1B3kg1?%V4dPfHZ z1y+lSj0~?H=}-UAKxv#Xx*6EfFmU-U(aT8B&UVCW6-TQ5u zIM!Q#|9|f~-RC(azc1F~UaZHxSdV+L9`|BBjy*v7!~fiR+<*JJ+l%$J|C#l*46dgw zb_=I8$dyq?E4+Kq>7nB;w&I%i#roRwt*_bJu?E3<&0W@OWbH-PC**qFTqBY75m^_J z^$_c|5OWZ(x zglKo|ja}C6X?L-NmQ>0XNjF5P6rz%Zq$m_osZ=VWQYk8x`lyfcf4=6rX7_TOJ%m2r z&;Ro~^YHfCYtG!f=RNP4Yp$91%y{Q5G-qMwE9^Xl<|qQ^Cp0&qISD)Wpg9Nce1qm0 zG`HZLSI}I7cOF4=2zJgOaK1qE1mU>>eIbV3|C$8;iSK{i3+8~Z;F3CDLF)C9VibXElCCmn_iKNSfV#EoG}!{n>q1NqVUt~$5$bqX(j6kq4% zHiU<55KFPXjV531i+1ijG+{aTRAHU-OG;|ER_2#cDCeFw=|VH;63U_j zX@bZ$IV&rN-d%MO`hKX=j-cu~|N6Ndci?U>9>q0zQz1Z&ZQ{Uz1OfVjP3WM__wL1zqmYlmjBquY~@?&}Q z>Wi00*+|P>2Z`Nlp?2^%{~#VUhxhl|(h77`g;GqCJ*>8bJ)v5yf&U-SmIC>)vRMV6B|MgmDnKR;;X`fd9FuQJTT<9;Pg_#kQ+W2Ln(#e5 z;dK^vV0hgd-og!|wx{QQo@dofCtswQe{HYM1h)>-pKm~~k$<5H@9pP|EQ~rQrsw7i zO3Y5Gt9DGlwUek~>tDy6p>9hMjI1Y@4*_J@0bMz_Obu1Iu@&3<=pm>(f() zL-8N`x9e8tRO{U8SnA84pKJO;duI{*yo`I;<&))pUwgHKP<$rm<|bpmAQ^|!zpB3S zQPpx(UVE=tN&g;9?n+CYbqa@43#F&1imxeJ;bw{6c+RipH|gPSWWAkoT+H(Z!*_|^ z2DX2v4{+{G8tW=ZEb-JG=zY2dJxee=AEal8=%+&0i}+Ug)Mu&=Y#R*Z&(8Jhu4#J) zcQ!A^pNZQNa^CgM7~nw!E4~S8oSKOGGP(`3r!p2)nQDWI&nJufZf4&Se=EL3&>51W z+6$$&^}&p?*m3{)`yf2;isM42uwUjTO4 zBAn`_Hz*yTFED%9_}!$#vc1`JMPE^<@+E<7z+@2Kef>c4@}+^|e;nkz7o0QIm7nTs z1SH3&p{d6#unNz7@)^FfLGhgfQg=Q-sQhjOF97qvc#yVd_RtLmk%eyvsQzmx2v6p0 zEIh6eV*YziNBqG znf=WC9ZTg^0=q+Usvq%B*$w}ykJEWZ2BzLrFX*-}9lQ+e5B3CA50cveP;!C~w_i1R zoAwupALTM`CgGINEHD;)3Tyz*1sj7;gDt^lLE4PYqBi>R9C!`S3qW+#oOKV+X0N8o zvjl(D*GpglxC}&QzE{Ah;Brv>#Y0ZthYa{zawrd~Y;vkUwF}iBKlyG0RnMxwnxN`! z4><0G@S5a*>)wIi=p-T|qDH^i`N6B!Y#(vmOXD|W`%$w0)x87ZHOcTEf$$!I@E(Ei z9)bVN9)a+hWZ35aaBTh?Gcb*en73@s)nk7f`Q`7AJ^R<_rH>^2{WZx+Hz=J2XWjI~ z_;<>ddtpb$6Fr~VkQ3euVD|!aj=(;+3wH4wnA;NS1C51dL+hd4P~C3WxkH7Ju|)^1 z9eS|!&4SCy7#r|7J}QpI8s~h{lYMrub?G4A$ z{x>H(zma=M_pw+5wDYxnXwPyTAk7uDg)XnhevmXXuWXEwor}}m%o9^`)41%GU}nCy zqW(D8nK@-UCwW{Hb42d_;+kKbLHLg3dm{Lh$;X+;)tqw4{p5+7YGBS%_XxI%de9AL z=f&+hTU;51GILyp|33VE1^jO-o&Vx{>O=8v*V*nC@41=%GqaPkluv18N}@b9;YDSN zVgs+lsx(5CX@5YOY@IA~%T$*%)I*#JT}heZO}Y_5>V);w{M;O-&`q5H!CY~jsNCK< zk$ii(Jll0l%Zu**kmHly@KPV_3@`ptd2uiQB%J2+fncswUR2+H;r5E76|A>zC;>J4wZOXW>6@}_q9yano# z<$-g_jEm)eE1y2_5Sdw8+b)*RptStl%oG+~jzm6Ij|N%!6sP92HOpT@C5Jz+jQYY~ zT&esO%cwZT!{skfMz+0gaCwM#WpoLs_hW*?Lt>B)P_|2nscGrSgR>58!({tpul{)Z z!Bj0)C{IXrr2bd$rHO~gU)R(V^oZ)Gw0DB77awaRa%{(9!~7W-g5+i9XXa$n!j7&EGihTcVbYPDERRcE9=&o(fyemL zd6b-vn#VwyS(||+4aHw3>-UwT?xTK}nde~Dm7SSIS#-a*pKw3(cTdRqhH$n*=#y=n{Ta z?(UG>Uc!|Fe+Q)}e}Iz1zd_aGKJYy7FHklI`$6f;aS_frvK2t(6AwA#W2fH^tiMwU zC%JHUo{>vU@Km191f>^sK$}j284oz)gurw-d)B1GT_h%*^TF!GzW|i}wFGTCem9+3 z_y?wQIpM?)-^nH&j$kn716~Q%#GiS%;&dju>BI&}=LW(l9nJtZ=_G;Tryr<%Q$Wkl z{1D~JBb?IVZVi*pVDMy~hk`0s0cg|N5Q3lg2&Z)32aW!L;^#w9{BXv2aXPz0@beAf zl+F%N>3j={pPiui*#%mDoUxPB_Xo=PPr@l3?tn4r><7h9L>Y&lGN4Vz8RG=6_o{?b zI=WX>{6vG|hdY}LKPQ7qNA2Gkr#Lz(e!Tr6ZOo)|8CaRHmxJoRI)bqvx@g*GCs2LQ zm7w&UeziD#XB<+Z=ic;byC(gvpyn#Nfv149x59ehwO|vl2Y4}f9Vq>W?_xPPV~XJN zyxo=OI9Hx`xbhqis(y<=D^KVBA6%YO2q$??1trgiK*@7DsQP^vwCOnS@ZkK+C7jZk z2P&PXLDlcGp!nfD&f;{O_iS)}y!Ra|omYq_epZ0uhdXnOtx8YEI{$w;|MLH}{qt=` zYHerG@1utfYyQ@jbEkJ0@XYDY(vZToD&g}i!{=Fs&$A4lXBj@v@@USp4BM)NZB-7( zRwcYo{>b*pPvcvuB^NX&LF1r>&}OLIwVdY&b%(}63!xoQ%^sZH2#tW|L))QfE_RNG z@}b$#c1SiVu{}#{RCcXmKAUHI4&r7$=6u!5_!>Y7P(E}dd-QcS;i2~F2c9t)%!Z{j z`xV))=)6F?U%#|-0)y?_*Li?{ckh1qY(GBy!Y(X|C64alGZ4HXl8b! z)a3kRV+M3A&H-G)M5o;wm|N932QWO3@!xx2N0FJwXuG!T)U}TdefZ};fBLXulbe_b z49{bP=P|@_-Y z{}6Z09iluO$V)2BXR9)C*v*;p{0jERz$dbksn_((w5-&`LCN_k8EJV6C*EaW7sMIf zZQUMEJ?1r0-8%aY%rljzXMQs0ZDplpo9A7~Js-am_jjG+W}b;JU9dX1+vW8J!b^5#5NG(bw%g)sC_5_@&e~27=5P5~{tUk;PtM?c!>{zD zDq)7OZ%5^k?EUk#5Ht{;+9^Ij}stT!lOV9anj{YHPR?6VWoveE{nW#?0?3KvZtrj9rxOwX`-Kpn}J zP-hpa%+f=ZS(#)crzZMy)6z2woOC1``P;HT>6Sf$47_z&P@X`z?;us{4k#Bs3p;!2 z(k*=H{mFs*wEU7?ZjN7yYRm2|lP$aIRlL|XP*cLkVFPUHVH}vRw61d6fch1aZlY1K z!>)@``5}GPmt^Shmz*n^iD$`Ae$plJXwUWA=<;|g;iNXBp~3LzyV~%0V3%b(Krx+` zo1aP3l?+{VBhmrxfIg?B|D)6d6QAPgz_PT8I?m+F0ekQ&9lz0iw)+CFcKeqicOMVS zMn<;Mi=ps6F(}_Mr7vOHIa^UZ=Arf9_L+hF+dea}FAY{M$@>zQ@Ahs7{k+Tfv*0kv z`x+zf6z<3woS$Yk^>AlSVqQve$(|$WSrB(X|5%gWHzl`3PumiKCS-JgrefZWD!2Gl z+iOeZ*-WG-v94cc_7I~dmhZSq{D7MZNoDSbZi4R>A^28%k$(IgzQvdNSMgQg7GJVf z8XiBo;~}ODrc8t#<_W7lMqyn)6INy0jlOy1p?0EY$wPJ2&aET6zh-!ZQ`RA%%9@l= z(k9HVD}P!x+xYYz%VmSEifhW-QGXolg4UC_ydi9Y5 zFmAHt^2o%N-76F2y}}La#4p)1Y~QhcVfZfThvJ-keYPL6?P8x>?u$rE@0(Uo1ICf@CVYhH zKRrAlOAfKd9qQflcgiGPsZXAEgPZE*LbqO8%g7q1@vhqK4Dc4pU+Ce_)~d~KRwUtZuH8hXUWfw4U0}9BJMg@e%-)Z zDQDcZ9=-O+E#8Da=)VKx=I7@jkjfx^mqMrvDks_dH0HB)AwS#4$B6gEP4C-(5jQ!hQYpU7pvl9uc2fD=E` z&3Nh{h`U8&=i_}Bnl@g8T(yr(;o2uUb!(q%7C)Dd`mwk9t#0S5TM@o|)W3_LTbk#m zuD8EmV4fEhKesT?X?^VP=bPsni=UgD=RP;s-(Z=?pXJ$ZuP5xB|ZF93FNT`wcUGO8*Mt`uV*Er@X3tOr&kJ zL{1Eid;_jCbz<`EL%3{5-Wh4h&RNnn{4T}R~**cOF1&yP+X1zBcmO~&%-D~RMd*%XWNrGeU)uv_FX(f z4FOjN(mSa(bOCM5Z}k4)chcbO%oMI5U=HEHc1E;d&h%xay`R)ysZW!hy6GY#r(Zjh ze$CNbhi^NUk5fm0y9^?TnfuUO%nXNL?}pEV=3@9PPs?@BMp56O_(7cE`A~BgcHilY z8saaLGE|Pb9$Bu~8i5?mtGr~mk~lC;1G5^0xf}i8X5!>!ajFBuK|gJ|a?}L9C)lJ@ z#+NsUDWjBRe_ru#6Zx&D`E6)gX8#N)66q=4J^Z$b_Dj6{+%%?0Of2WON&Gg`;&V$nuUJ)Wu(J4ST_)7i&T3#+&Zmumt{g=D&P=!#aBc z^_kTkl6#+UlJAG0>i8p2-w>O?2H?k__Cjt3n}SY{;40@%c38 zqjFcpZyF@`5#f~2#~{N5vzJy)ZVS)K?=w*8Zv(~W=U^821(*kZ4c-Or0O3t@D~0R8 zo!}?nE|56BAHXlc-QbVlPhfd?`32M*)E>~v#hH(B=4k@;;Sa)^J)9}U-2A-O7qlU%BT(z9yd#UOLi z=DhM6;N?7@3`#CBV1MuwFcZ|C-5Wve*&PRJ&#v;--_HDrITPH}$4PjNkUuV#aB4@| z)2n)_3)0+u^+1*PEU-S<091QA8`O8jIiU37Tu^f0-BdUTj01;*O~6s0_Wq6rwfEP` z+nEP#39JNO4;~Lb44wcYdtYVH^6h*NI^T(bd`A*a zd{+Z2gW8*|@@sE)JgB|d-M~}8eDE~zHn1jmA6N@q2F8MGz}nyk;F%zOx33OJ-|MRj za{hp?9#{qb>Vqx72H-{D*n&J8P}X}lK&;(Ibd6`1=t=e z1TP1tf*rxf!A{^iAXBh~n?a@q3tN#U(`H70_{1)xjrsUIEkvh$eDW232r?Wmq;7o- zlMAU6AD>W#$i~+fqzpbjkqSx6$8fOl0Wb-i1#)~{;TvE&7=eQI2it%H!3;1Pd;s)= zkApXYOTk=l8JGvI1&4s;>5zwmiQouuAb2zQ6j%s;3yub>qu67>Q^B!deeiZL4IBr~ z1n&ShfOmo)fJNZv-~=!hMVJUCg7<(AgOk85;JskY3iJ=)_27Nr8{qxmdhkJT6ZjDL zIXDgc6Pym7P?0_9U=8pQ@H}t^m<&D&4gwzobHFFSd=MEH4gqI_H-S%qBf+_#^dkXs zz8Rcxr1XRAeC;8*=Lm=Re2YQp^%7A1(u-gXa4C2OxD2cfz6{!Qow0q%c+i{f>x4tx zW_+r2-{kppa2?nfTo1MZ-v--(?|^&2u+8{?ug&;2V>4c@+^6$fwBA?$xu^a}?Xqn7 zCt;iM6F&;ujE8N;!#3k#oAI#Cc-Uq3R41@1?xal(#b!xZl6Q0KWO5o{%3} z4}Uv|ul@h4pdFCT0oZ}RJqut7&!wFQFd3QtoihRYAjf6UCMcRo-gu}dQ~*te7DDBi zn2m$NX9S>kVfX)>1jbuX@&dlx)=v)Toa0D~F)&!@)YrF}6kgUwP%vN3) z+nEcfkCbn(%+|PkoZ#|N37ifeNx}IjzKr8oKa7|3 z(d2Ek zka#)|dJLX)|5T9nBO~a4geTd8M2ZLa@n&Fc*QCp~@pyHqL3twKE``K@TWBWy?{@e< z$nN9s+D-#*P4Eb%_DXp=7J*0Q~gGY8^+o%+A>X6L2zEZ zeVQ`OKcGy5vya3^RrWM0^K8;PAO-xatmpEZSJt*YHLM`699tjNeLVCmVK;=}%liU2 zRGSXPo88?3!jKAn+0KW9``#|Ee)d^_(^bKkvLla(s8hU8dhEL8c1fJ8BOp<|BZ8_9Eh z@Mci&<3j%Z?4bKzWZjBqtp%M3YQ0j9cc)2@-%NUwK&=H$2G0lY2gTC^pmdsb|H2+1 z>xX8ob_RGO&yRw6;N##J@Ci`w3@}uRKGnW*VE0v7g(L=>p`vM^#P?9d@dWC5ZXs!Tb`3ZrK>u2`b+b< zdyw8y_l45KD?#zs8KgTFKgJfTE2w^#^>CA3Oa6BHsuDTzn(;M+GUa1UlUkP+1w~T_8F$0&jOXs*`U@MWovUW*a(aV8-prm66Ev=*st)n(v_Zc zhvb?PPU$uS*(pj*K|Ha*IlnZ=0~_tFt=4apTTjeAsvG+YZ_m`26#azjUPc=S7 zBP0H~HBIbteKV7}Hy+vpHR#70B2)m)gf>8XpxBhMzK&1<6t^(Kxl^9MSM=sP5h~*2 z$gU}F#&B5cadyqHh>ruU8){8VYlm6~3|v3dT3u(tX$?{9ZdyarI-=Ihv^ExOJyC0k zS_eB8Yl-#@FS~YlxNC;q^}@fiR%p)&_pT3?wl?^8)&&<*Cx^Q(sC8KH+TcdwuF?cV z*o7tVKOh0kk@Ps0>wjDooq7z`{_LEkpGg`!XQ_$0@Lb1^fm<*6@15%yX68B;r?j8_ z%PHqvn)v(HpHKc(dmF-MeuwS1!*dj=+v{CCcElw*BT_SXCO z&egqQM|;+HFq`64{h8x{_Cbd;Hy|5g*$-{c^_dAx~|L&RBjdWOGPF`kyPVQ0P|7FjFOQLU*qq!TqJElN= zola&Bw4K-H%AUGyj*fIV;M`mt%Y3-DcM;4pcw+mkjoRHDa=>X`=FnpK>1@55G1|!- zl-!@GToX>`-Sx-M8nilgnC@BE%p=PUhK_?YjVS)-ACmt;$$9j5|5yCm^TJYPsDir- z690EVSHXYWrH7Kg?A``SM8~`gh}zeL|NP1MQU_B9vSa$t)WI-wD6VW{WAH13UrPQU zY;v75ZQW;`|Cq+n-NrwbaBZRdoUF9mWXFhH;TzzWOnlDm%1qA6OqT80k?2678XWFc zNHQD^B_P8Uhm>J@W)_NntaX4Q9UwoIRq{*Z2j!TUJJ`rj{*qxZ*~H?1G_tY!HH~>9 zxdKSC$%ncjn}qg<(l2vboT}uQ%133Ed;-slRlQ3_d-&1jY~>@Kvj-1y4#7)}*>7d3YouMG4 zbCnC#mkbAOI!=2iITy=Yu3HGFbckcpnFO-LWo$^*p6>Ick-lu)@ z#bk7s3E$w_q;IbKrA0=o7UMdNyYbFlKHmq%zgFv4#&7TQV{E_mO&{oScm567X&$e1 zqW2G<(R^X;>b^%}<}~TMj{Sp+jsND=JwN+1@719le($_`&TUOU<}4)R@BieigzxHI zJMH@4Yb8AS_RW`JKSt{vF@lX=;vbmiR9stW(s z3Cn9w7&YZz&yQ#`_JVmkchEN&|NT#-d{lPNwI}SKRM_FEH*UI+vk#5`^LM^^*4Ws^ ztAFmD@O1TQ^JZY1%or^)Vsy3Ja(?*N#INs;>GWmi_ovLIpEUlr?$4YPwz-RpIQn_$ zadg0u5sl`3+~|sNr^fUcu=vk=3S$~Ep5Z+e88Pn8YYWf&qVY3b=Dt+rt=%_cAe~-D z{=X()RPmFuubr}TMTOk7pJ!n(zSe{9x;KX>)3Y z{SUP||MGdC^5S~f_}@OW{=Rh=eK@4wz^;84)R?=7vnY-Kyer??J}@ORzjyt&eya0R zMF!^K`RVZdba;L`JU{(U&riS37%MX3hMbYl{(N=2XO`93biuwkCo$e@Q%C-zWB!6B@0dENB|E z9x`*^;F8T{e6!hvqdD-RS&V0(ZII5`kPTimA5fKNJ7;;U=eZ?+k9dl4#z5yh3wy3d zBx7=&?Gej6EtN2P_)uxihsG*DbKsEooR2kx(ODm|`?KeLWTb>X^F!x-BthOYKXm4Z zZ1r^Rh-?hK=Y8lL64@M%gJe%A8$Q_++Ijkx%*ls3|3mZjogtlbvH{u-1)c#SJI2k> zJ}7d)foFhd4&R>rQ4U$@{0}>)AMEUp2iZ_%=lJup96LwN^~*+5_KvYoOQ<6>0-6Uc zgEaTA^HerK+o0W$Y$4Y(7K{Nyoeg5o1&LvTE_^l!atpivSqYS*WXIC}&+KzQ2KIkV zea_hhW0^0JV;``O={DbZ=!JUBPqg*U2|By$H8;xZCy1+f(48-5a)-;8CJkRA6Tr^p z5Q%vMGyREKnb~QH+4K>byQ@fQfqU*B#Lo|3-N1=X8YZmn4_X9o>4UTBwVn97YiP0j zGM)R`>^}VcZaljW-_G-ON;_ojQu(?)` zx>M&e&N@-)#COY@TK@J0`L#b7{!z7Rr!-~#!T8TQ{{4IV&fHYK*TM#Wom{W-O7<|^ ztnl-r&aOY;l_6RGdbZ00*OaYuNq8PByhk)VUv(_ztHSeAdtUqCPUc5XQ9twY+w*U4 zHDUWhs~>MO@RR-LJir-X#{a6bnm@Abk}X&E?eu)P3!nX%vHBy%fAW1pP8{;WL+$?9 z*5jANA3kRtW2=)+otn2!fBE}uaq)XUF5kIM5$7xLTV%vDJ)VzwZ`PSv!{YZ$yWxZp zkFY*y{2v(8p{OW*E2_P>cH_B^p1+X0XN>>M z^yF`w=F6t{VSgQvC6)^?eDp?+-W;Ar@#63 z-=CNIyYo-~tMg2ptK+Mj=FBT?ryp#<-`WqVy`W+HN{N}4kP za5QIs+Os!ny5IkN!}`iX9iSzAPe)#4zW<%GKb=ey|IWE@_S^nKzOkL?&bgWwn{=JC z)x2jAPImc-b@{-=!1p42Bn9E4_&`a*XifqM=FEA2!T3uZsMo3A| zHCwA*xf2Nid*u+X!sCWQ$_LXb-%IcmXTnDW=s{LmGWL8&%2Rij2Ycu9JszIK<8=2~ zJbQVxXMf({@<=ytc$^=E$Mmehc}$%j5s%Ut*`9jmrNq~_E?=uyFY@x$$E}#|w9 zb@__C_~15_&f%G2>_~J-JajW@9$bI+49`{MeH^sH<-s3>2k$wFr8J&WbxL-4x|_N$ z?b>_BsCb*<@@DIGYryl5?z7d!Gq}*qtBdwb%Gu>%9w)m#$&*hN-!gPD-h@9;7lR$J zdnB?|ecH1+n@fN=Z=diA`6rc%pAiM+~EPE_? zu{N5Ad#0?d!x&BM;+}<61mUajJ>TKmJ-^d^v83dtCFiFxO1-UI_VbQZExQ}^WB1CW@GC38gQlb&7^D3I(22` z9=>}db*p}j=~Q0=c0u+mSn+k6%fIb!?bu*MB?9AErZaWOvY&4?e60w^m*)^(@fND? zg1wV1ZzZzRySQxBLK4b=kE_UggUhGFO3wNC1)jhAl^Z5--am^nYu;b?I(Ox7zj;o~ z&dlQ2SPiL2tCsuQJm(cg)(cR8KAb85wnsx{ZGEXVOZ5oH3MH zA28=q^66K6uIE~su-fxFP>TE(sIkWeum$)o$hw2?eXs+#5mdVIkTWJ?ZI-_S*D6>y zG3n-lN;e-=x9d_)(is-N;QPKfN9w0*?o$fhU37-&u%>n7Kps3{ZEcHUJ+3TY@t|m0NeIrhrd^ zEE$^FM()h08;5ne)pE@^H`Rd%% zbHMXJ=@-W%neyr!)UG^pA8v7dI%5XPj(=c%au02x`g87~HRsu04Kh{f>jJg{yMkAM z-M}lsYr*Tl>%aoACwME^8+;7p{@TKY;0@pkFbPz-<3(cLW1Tbt^XFbv6Hj->veczJ zT#ejM1NDxs2`Zf=$a&{E??9#F)yrJ;Me;<)3hRJ_LDduE@WLkGFi`DbBq+T=X69Vp z$3Z{OPk=Tb=Y2t4;2)UJQ-o7FSvoU%KMz!Sp8?hW=7ZA5=RoPl^I$yq0;u=VB2f8s zgq;50c`qm*@!uMfTZjDgydG5hdJ9y)@eY^_>dxUo;CtX6FuZ2^-+R_fubVYjSz&9` zLl0b^)1&#bcTYR($BSr;VcY-zjO~Be#{ZMNK~s3AL`x3~MwO{oyUebYQzw)w`Y?Vg z9o3`8zoygK#9b1V42dpf1r(w6O?#@@~NProp&=XY;M zc53$4tOe8Fs7@!k()b^}jemH}G`wcIs_CerJL)dj*p`?1j?<)vn|>VsRb0j^W z+Qe@<^k>lY5bw#zh+VTk+q&uPa_3LDW_YdjJ5m_{oI_t68S%~X#J}q0#K-iU60`NV z+V@U!zLg>)9vm_!b^p@3Paglkmpk+N`aj1`lYwbu#Fl+UXZ?C{mydpHuzXObpN`At zeif6>xV`5<+c+MM@elGaS2 zdC&%E4-}J*y*`u#jfECM+n~z*x$_h11Id1WET}csZBS~JGQJ{c3Do_H2;Vkv7axu@ z?uqbKa&>@!fo2M3wP1 zfD)i2o%;*LZHw^DPsD$ez(_@Ai~^|F*CB{_B76-JYeL!xL!F@3rM`Fd(=+zt@KUNYCb3 z$Ry5Y=y2}q+($T_*Au;i4?i$`W)CmnunSAzZ%UvX;cqyG=l`Upr6&*0%IEkWZ0Za0 zkNWJNtKD_*NV-`$hI~HF6N#SSJ7*&OdC7fiZtfi3V{*qLK-2zO7tc&_u2?+Ox`fu* zF7Y|%^~`qj)O?xp)BMv$CWU7lkSBTM=VqqlCoxnPT*G;X;-24H2rRyZ-#Pr;pLE7J-2#4ZJ zc~&Hx0%t$n^iT0=F70IRrXAinWLX_zdiiorQFQ8aW1UhrR>)NUiJV zC+A{D;q0e6aQ)iRN!h}@fxuFzA*~m8G(4~$3T4%Ek^5}#!?d;wBPxg!pKlbTHZ=lT zOFHvImcd!zE?o~C{%t>E`LgTB-twq@TV9&G!gvK9)RdM&>)<7>s<++)0pd|IeANwOWoX;eCYSFfF5gNhveH@_#B#d z*(@jv$t}4bZ`x$uv{ba@8(8nr)g&wSy^+88?&|hU1$sf^FpDy>Jq2tfT{YoL>=(?) zrFiTh%blFu%>J3#$yte31w-`Xj;s%tUoU?#$BVmz`Aaw?e<_1=x#^titKAlI?Bwa_ zraKOD`8x|9rJH*93`NHNko@H(4@o<={8*i9t$`1&10;SlUJySsLh_?=S`L}@0A0-WYcBazZ=BDdUHVRyvu*$K4-^>^^FEMS9KVL%) z!}CVhzaQ7sr!uONj*6^aR6fZO+%UHe27-N52S!e%wR3-t->m}m>B={V3o8H4EUuG9 zYEHIuc4V-A>P*Tr4ZgD}ziS~yAC{e$o|8K$5%Zng%mQqFPKcUFm{*JC%xRX|kqje} zUlG3r*2{V~O{ZSmgb1&+9^|*u>TEK<**a6dJ`6(v%1~_cW%YT9E6dvarZ%R&GYwh# zO_@uRrTN;*8JufWj3+(T`^**x-fpN(cgebD@@V!-!{=o9;_L5Fo zl6p!;T3%va4%ShMr+ROwKMr;W)w_68Jr|LYttIg$e%nI1=%vC$yU+b|)6#4`vMgc3 z^mD%x6|S!9mz?F#Nak<(NzcbK4o}I+GIz$Stag03PzA(&25H>&36w~^M4qC0JaoMz z=JxNWd{k!f9K@ONS84spu`a8=@4ULL^6R~>y7$Ug<36jml81e_@1PHpdl`~wo`w3U z%^$8jihCYMCh^1%;ttY-Q+-jzr_ek|x z`fl5BNoogwUwHZ5ygyA+Ow5wj^9ZwSYK{+pgD7Ta$cEc!0W_A@>+5-^O5pu zbs!m;mZTP1w%dd7n+?A!4#{uH>B>jTZ{S(Y!Q^Y-9}mi?4i~5kyAR2)ITmGTW~y_} z_R;dJKG2(DFrKYWbd(`3&Z`qQBI8&lLPNJRlS2weE+6q&#Og!}@0pU+LhHodApGXT zZ^Gg6J0OSo-=mdpn&sD|7Mx!@ZeFjK5UwetHr^N-2)~7gc$S2ue0Gzb>CJ zu{Q=%-`or;LSFG9`7+Z_Su7JC@w-jBWykdSEDY+|zMJ*25KQ;% z8fvr#akxO93q$gpmy+zRC99l4+#$a?Ex&mI{N|OyuYLb5bNM}J91)V=+#IdLiq9jh zcklQiKO-$anY4n*)$*CDc7pScktg7{J0zdQQ;|o_XBh@dnI4K)JGV67oVW4TVRh^PsN+*1IU~% zz_cZOXINW?V7&Km*AF+B!uy85!F%A^ykro>9bP|1vvr605Me^8S?xIp>) zVnek%yJB&m{ln4n{&(fyM+=WZc#r!Vy#HUzKc+$OG9-m8!@&k9N7IiSvHq9B`^3M) zyQczu{PE8R51` zyI|VRR&W}1P*^9FekJFo5J&QlRpf)+;meGSbDZ? zC6x|K&$gYU(qZXYZA9%Ybyzc_4<+?n(gAtP2JKL~G_~WS}|? z;tub9LS&kU(Qk&O&Rm82Y~-Qe-S>Bl{oQ@`>Y?<_&I6dka|o+tJ@F=U09pBN2wAR- z{YwTxv+PO>pNXu3lZ>bVC?nX#Dr*n87MdrIh@}~K$gL#ww1aXHicOt7j7t5Vz zy^C#sU|%2dvwe+y^#t|Dmft~ECnmRq z30xpgGY*fZ#B^2@6#rQAX6K9JTPbCw?Z``d`y}$(5R$iKc3ows+79wa`BL3VkJ_t# z-23H&)vXj2JP<2RzJk-4#gmdxYvv-Y0~vytaO z8(CWqSr<8s)&|tZR3EZkj^*H;((Q!?CFc!1aviqilijM5(!t|TZ$DhIwZmiJo{EH! zJhJ~KXCNWAAv(&NIz;EkY$r%>rd~%AbBgUhWogJT)Hcz7QNj}P#nVrXCP-tD~eu*i@0c)aj zrLPS`>8q;?#iNa*(*;u=_&rwR4cmY3a?2K|=Sd;UX6$T=wftD>xa}h*N~v*yIzI7` zeEsM2yJx&%(VS_heylwt{oWRmNAz3bBka-0?O5oy)qyy5`Z(`cTKXN=D3pF19VpiB zqb|!opxbNQas}$PKV-Sg{_uZPx3k(g@($GP8HeQSKd0Nx#T-uEgLGR%73ucwkUXN> z?uNCa)(7%Cn!elW_IkG*fn&b7#-ViEIhVrjy*rw+1il+BUo+KN;Itkf`7*Tesm&#X z@4?Bxzm-f{W@>M}MoPkisEbG}QW z*@=3j^`|kY-f=^j`zT2*_&Ck-8`II@S8Qustfs$EZ7L+cnx81iLHtVWL0rhW34LD# zj*V3Y%|{%n3|b4Q3)9i?ehs}m6ASk3V(Z9%g(KNOd%X=Id6j*c;WsaH_>s3i%d3V3CLu5wuXf%gwv)rF zSFRI~t1m8Oo3y-Iv#TTS!z{mtvWK($ZV1A!?9Jjr@>{I`$Bf^@wK+2fyd%y!klul^ z<68{BNg??y)`c8@er8TKYjsE3$5{E^O&?lsygv<Vg3wSz|psXwk$OCcT-cD^bSMJzPge1ny%_#S&EoOPc~WA3bZi}ECx=i+OX z4m@h7#Jr9+);a19=6-)hCJi9xd_U*hzxfeL(^(@0G%s0L7UX?v?tbXW-_F^5&K|}Y z7`D)4E&N+F`Jrs&3eO20We!{Cg3<1T*a8Ra1BS4$4bFQ894hzh8 z3gOf@O$BA6{*Wi0b2gpB;|`ei@=JRubonTZC0-*pp7?dnm2>PR3y9?9_ie%{op(UV zaRXQfd>0hIitn8J7CinYH~zBYpL*gu=dlHk|Aia>OE>;@H~v?i_|AE0!Q=08 zTahtAw_GY72C^IT9% zAM?O&;L~6x_$-Jn`R0R4e=mx0nJJ{`;*FCD=PdAlh*MrA{eL=O~Brq0C1{;C>K&96ba?bd2<_nab;x~lk(g~;M{-DxB zR_3mt0iccVoWT`5em3D0KL=F&8^Ke+T+qgM&dB24Bm4vNS9@3dp`hXq1J#a(gNiSC zIA>ZpYaD^{7)3b6zZq2g(V*r<#(-yoW5KrIt)S9tK>3~XsLVY=h9C7e_Kwv%2&aDN zPEc~405$;87gPWDfYiNj64({I7nH6}2B{0*eIT+o{gB@6)OF!Va5^{+d>AB*?-6h& z_!zhtd>nikd=jKj@XZFdf=_|F!MWg{;5=|Y_#DW6Qsxez#^6Gpn}aWatw40Ta45J6 zoCU4{Ujx^IYrr?bH^KGbHt-#A7q|h`xn1vqlGi54IXjBF!C&%^!H;;xeLy(L>qAiT z+5$@MpMlc7&%sXM7ho@NJ1DuRpF)P_&ay|r9XwN3b9dQ%@H?I=NuC|-U7 zcY^R%_;2tRP;0w;z)0{{Fc#bgUIrqwLhi3JcYS4mWg@tn3B;zylutZ5=Q%mw9D(|Y z{c2%3!syPg7b7^&H&@V+Mv#IIulfV6hO{7N6z_2%C9nhS&&?P!l}Q|9b@uu2ukj{TdXe_ z2Mz?Ag0sM8pyZA26fOaE*VsDn0`MacT`K$pyb!ecJLd{H=M4qs-&=FL- z?*z60uLRqGox#h&tHF`rHK6)Q-BC6J)E#B>!0zC)pzbJB{;DtMjGo~AQ7^)&zI1n) zsRvMU@9W0z$luOcI?fq8;@{i9_9L90Q$Wct4Xg*IgH1tnsF1$hmkC;aoU?9%>(3y< ziJxpx{P;oX&yAk=&KWe$ISt}R;TuA7gWdQ;-1r4xef(*Q#rZqu!UWHMlpFtMH~wf) z`H%6$cg|@E9{+YX{x~=Ooo@W`p7_qWDZ%-l=*H)&0aN~aLGeG?6W=+*BzXQ)-1t-7 z_|rh~Kiw1GIa4Hf{Kwq*kGt`oaN|GeiSL~8;hg;uDF3J3_|LfUp933{{{l~Z=RA$z z`zerr`gjw6of}_w zy-ABYpStn4xbZ*p#4ijH{|h(%mu~#8 z-1uL6;?D>X|2sGSPB;GdZu}oS@mGY1|Fawa7dQT|Zv5Xo@wbJD|A!m@-){Ur-S~fb z;yZi$gUi1R-(9NzvY`5p@}T5@ocled{?OTjA3Xl?Zu}G6_$RvYPx8cf_R2eJ(}DWK z@qs3P-JPiXIfksT8OTvd#ro^)TMr(e?K&nt+doYFx^Db>p7<+jX|5u8`#Hyrk2#Bp z&(f%AKP)2^=kM(A4&MHox$(JA#l&v`s{gpa6W`f)9Xx((H~z(L{5Ed;{c%hd#CP_Q29H0=jeoNnf3zEaj3>Ucmos?$+uZoKyYcUE9%;p7_pQ#^CX%y73=!<4=;)s6U*j12-8j>Y z|AZTV7Fd(tXM=j5Jq5;rb3y52Jml;FboK@Y>h-gPlRnM|rH>0hrMD2Q1-<|(odn3) zv*+xaQ92dyYY)l2NI3DSc`1#zUIt@9%|oeg(>#>YcoiG~z6RQKo&9pb(|w(AO7{&= z>AnfZg6lw~yB<`!Z-Ywr9Z=~OLe5?_XJ3f;JrO^Bv&el&IHmg$sB|}j`d-}vUI=~$ zYJ9j2Ob0&)M}c30_k-KPXTYz)*THW_|SNI86>xd zaN^@vP<;Fjo&oLy)j$6UUJ3pMrhxmwLeN*%S9lu`0p6`ga4uL5_fUls5oFbZU>@2d*l4ORmug3%!FcwY@r`_4`VZGAcWq=MJiX@paGYJw`y z8DK0}8&rLr397#8f~v22piS4=mlQnRvk9kk&jFQgBQO>`4^+Bwpwev$D&1zF)dOcA zP;foCh;T}`HK=skg3^O_p!DEUPA@AC^x#VHb+9uiJ?H{T54wWl zLp&y(<-8wb`CEFRcGnP+>p?g@Uk4r!_5#%od%N);@gwmog5;72r*b5N zDn}}KK9~kx1ah@l;iX^($Q+L^6C4Z<07rsZ;2dxesPD9Fa3SaicYrs7KY+O)-|D`6 zQ1cgqL0dj&KS}WM!$`uZe4{{>Zwx5?zQq&Y*|*{B=LnR~?QZ;WZu~nzwWINF{0#nf z_Ewm=tAoDZ?;)JzGYOP@?gKTy@c^iLeh^eUn*wUy=OHi?oDL2I9{~q}kAk+m&OQfc zK01)!CkUtVJ_)M4v%y$!jwimeCn0$Jr``C^xbf$^@t^a=clHfvJ?mh7TI9xG?8bi) zJe6=uJ@Fk|{@~-ySKRo^-T1G98t=U3#xLM+$M&8+1zlG8CD$xS?hV3K1J{7kn~M#@_|1U-;gQufE2yA$M$NRDSRK@F&7a-+l%qmtVmK;BR1K z@L!mAej@@x^xzr+@VuNY zS)j@l4>`8N&RnwO?H!*tBAn#Z7?fO^g3_~QV0*ARXyxPB>IRojE5a$A3qhrG2`GNr zc;Y)YvBBkYsT;pNsQ8zGlF#L!@|S!Z+tuLmxsq^_PiIi_xdxPc5Ya20sQxbzES3)+Wr)|O_M&tY&+1aY#{U33gSa1pR*sI%Q*b^$C7k5A8I&A9167W#ZhVdV92+FoRQX$cM1n<- z+;+mLp1%TB&)a5t!S^)omI`~@5b?g2G_{~P!OxEGuY z{tm7H{|&wd?gLdm)88Ar8=voDp2eT{JxC{Q_=^C=UwKe^cpNA_tN^wED}mC-<3TGo z$DSwnd}tKmB)6)dRNW$;yZRL!Siq6 z#y{JQe=ex}8-jblI12j~4Kgxf#-6>e9KWe%*9WFNx8SR&^0zQfqC<>~==kzQKNPGO z-*~~K_>X?O^_4ArLm25u-{xbbz7d*er}jJ{|QmAOfE9xzh8%ATYYghL@5;Lbs-*wr%k8YO#7k6K_s^#~e{l55~$^C!rb}^N+*o5D_y60zq z=Dj+!!|$C}&$+GX$LNCb_kVI$!guwqop$~2wGy6u`{v7d@0_4?ZX1)kv-0IPby&GQ z=bO~Ey?IF$8vk=L2UgxOaO))tZcT`|FLPvD<_3)a=(_z*Zr-k2<@0mqu1-CE`t97Q zj_e{Me%RJ8>9@RfU(M}Ur~2e(TedN-F#hd&FR2y(!O%v_S4GWvDC1gQ8Xp+{JICcd zSFO|H?=KjzxmJ(5Q|D4%KKLUe;=5%{Er0uh{MsK3|EOBEQ<}0SWc+6x|NgywXKpIr zYhi=GPOevZC2hsXVc?zp^E>sPe#xZVlh?&v+`bQeoC#lR``P_(UD%~w-H+yeoKy74 zg|rpp-@kvGA){V7|MA+d?|$K~OZk5CwK_@pE*+mXZse&GDsI{Q@ciq?KK=&ZO2)tP z{qtYy{bJLl*NwVr!?i_s^rg=<{;l5`ch}TbXWZ32x?sjlUC+;AOlbV8Oz+rgYW0h@ zWz4y}*8^A2qcLApMd^S1`%hng{?4qbg+IJhG~)cG=*UgR|EIa_2DF(!;pE%B4HuvIQNL+V#`6ti{NEgTT>s-9eekb&B^aF z<~Hfyv-6pkcb+hF;@W}TKbe<(N>|2#Rh7!|TNF3-UB#e{$U&Nt5*8@qV* z&%G0#u0Czv491}83cu#*U7xjh@V>UMj<0ma{*!N~UMe7?$cWL^Zp-=MUlYH+JEqf@ zo!_5=-o_jMTlZ(qX+5@V(OoAsn6YodIzIB|lu`KT8eKM@_uB83nxFd9$@2^Ey_7MD z3IA!6+s|J9;;O4QzgB+b6%$V7qie14zv_|mx2)Y-;r*!-X7_2(rQz%JvC&Fr*9*03 zU%qebOT+t)srgCXpef8%82^G%W$M)~vuowl3FV4DjNkekV+Z43RH4GRZNA=9cWP1o zqG{2!_G6=H_!%>CXWu@(dOo_k&B@U(Znz=E=i6z*SDbp=Z)eo#(`CyS8*hKTYchT< zt1I8W6<(cs-pW=k)4{oHEY4NH>#tXD~-SZg%hG% ztUPW0sa?-&v!u%YLCk>}|EFGiV&Z#u{`q|MUr&91TKc8GGDc@YATpv!?3j_atjX)} zz|^FNIyI|KzcJeQkGu2Q!t=gp{7jd*FI9PK_sxwNyBhv~O}?n&Cud(fW#x(rxoJPo zBJH&%e8Gt|FKDu5_vGg)KlSduA8PkwuIyx`-?6K|`gtkaTi!9T(~H;tTK+ob5O}df zMpWw3eCwNwS}a*y^|XP$W>io;+ecB1z5#xXR%=-J* zUG(9QegnJqT~K50BKjZWKkv$Swhv5+%@ezO0Z2bg;@{#TvV z{E=;!Y`L;;r{~LE`0U36=m(7d&&cS@q4D-aKea3n5#1W4~*$hRFuB*gU|omyt+}p zS64G;HU95My#L4z6>q(w+Iwp^p8M$e3z-8j{xj2)zp1jkSKeJcyH!urh|DzsCGN-=37U zs_CerJL)dj*w&Bjit*p{bp zc-{5Au4{eM9rTmN|NGGqb(f~UcfmRLXMWyf(H)N=Pvd{$@)N)LZppBsClg+4R5riz zK5Sd)Ya%0x9vU=eORGl1rp#}OS{nMwu3kvYyXe+4O4GG>re|^Y)#awYL8%f78E)Hh8BQ zG4+XqMS3DWU{7d{NJ2&*G~VZW1Dws z`Pv1Kb&B|&Z&&00=*IE2?t15AI;-;=H}359Bx^s$|F@c7bu1VVd*8!ze;N5$%$3NwT789o z?B=Z0sEV0YKDglH=s}ZLO=r%<_#dA#cVqN5kG%Tq1Kl2*vHh}-eZEEQ6#kQrLn;lg zaorz}Z0b|(g!t-=H6AkIcMtk#)XPPy$9$9W#-`lJuYYAcZ~Pm_4PWrb{g;2S{gykP z?^PkIknv<$+7c7ED*Wk55a_0T>jZaA`nCPFKqJy3(2;29bVErfPJ z4Mvpp^@PSj%b?v*T^22RLKC4ikQOgmLVjpAv=J(IGjV#NW8jM3^zl$?l`_5}XxA#f zIj{Hm#?3%C&xr7KB+Mojg*Noz`|$AyUk1a22!zDu>MKLhA`P z0xW`-Kx_U#_Ra>dtLgvaceS1rty+Yz9u>uUP%F_=dXkzX$=KGm+O*niOAnH7NupAS z$kR$Fg(QT~PesU2RD>`IA%u_=|JVDRd$+sqzUzVfe*FI5!|AnqzUSWaIiK@z&-2A@ z!|uXH)2~XvreSAdmtnVJW6*CLwmWt#b`f?tHflKjvH94E*mc-K><+9JOV`0}C%ih{OR3 z*#G<%EfW)RvoGU7zr4h5nfcvE3`*?XDlRTAsc-t=9>a375>rz$bF&lka#Iu2(g%$g zVy~Ncp9esIBzvfWK98B1%Gamz zDY16nni#^EeRtZ6b*6jHe}07ZMH2~E`@M&XQIumFmb-b$oO{ec%Smb3BL;EOp$((5 zy*23H7!!u}N$Gc*t*RCr8>Wq4PC0u^1Yr}D)^t1T8&O6}glQv~lgmkA?#?ys`J!tQ z%9J{jOMABzex+#IH~G2gDU?yURl}`6f%?xj(>cEv<2ERJl<}i;F-z_-Y*(X3RXf)) zn!cC5A>7}+ZqI$Xo*MM~Z1=i8?HtA3`{q5bM`Nxh?$Y-BZ_}$o!jrQ?<>yhXkX^IPg2@w&!o~u&(&V}eA1)?vfat`{ncz-^*rsjyqA)a zp2mR)7{x{LJ<9dt>0^A*bz2r5Dr@O?-NOKgDQ}S~e3%YcsiHkL7ab-T{}FDSOP-&L zmr%y!GcV5Nd9F?f9l_Vmy>!k|I-8RlZ5mx&hD^+r7!xehj1n@HJnJ@;K)4;WOfQrn zQ}+rsgb6@;3Sh4wKI=-zRPtO}yo54k%A|at@?iATLOQa0RLyludrk4NzqhhFJo|`} z>Dtmw*Hx~(bnT72B)dJ+)%f?))tupK@-aV$GW(FVU5%`uu)TekU1}+hWs=K!)zJBP z-}B@E*4CG{9=)B+csOp#^D^;xkzPANs#d2nq==Y(V5$pyaorI1flc9g@DzAHL=|Qq zR~)>M>oedb@GO`L`@u9QIbyN4F171L1C^|P^lX_s@TYoUHe^_#Xdfd@MYld=?H002 zewBUXGUhw{lO3GhQ12c51a5-m;G-}Su7nlgr%?M@et?HT$(4+?b&lhxF4FU>;3nB+ zSgT>=Iua&xeH5g5aaHJz!wr!bLIFYzD!^*5c z{_=1Yl;4-2>V%h}cfT!%q3>Vo-oMVh|1J0a^}hRUnK66BOg#PJzvte+1&$-!tuO%5 zSyA}OZoX6A4wnB5_x>-T^3isvy#F=a33ICcbLMyczs=)x2+;nBXx#nZg?m4GyjJts zkG_@rQ8F1KJdg9=oyR#;^Dkx1vxMhU!t*HyGM^HjHwn+1gy&7d^Co}wyvbxb08tUm z7rooO$K+$`^uO$>y*CBwG!M_4c=IL)J3kUnA0vuhMF(seb}Dumb`y3Nw$6Av7T+3b zEMDX6o9VD<%-S0>-!_OoOe$mYSpWFAH#V;EaE*U!tXt#U-gvfuEIW7{+Z)67#;-MY z?H{++n6<{MHCCO#7_>Jwtubl;c(lf%H3nT78U5qXO&HA4`13rhfBacv&#ke|*6e%S zIXu=(hb?UW=QW`I{~;a!PZ`E>v33IB&y4@KcgO!ZE5jI##qw%!W?|oM#6OW5dn+0v zHlZe^GPdo0*L;6t!y3!&P?NDKbEh5my`9I#5uV1zjx*1fd+=F;#b=~y?6<1xuQLNs z8rvAAVtxp+0>g1Rq+DKReSADh?MbprD5!B*$S zdA>N5JS(s`4wCsySJ#tWnKfpkaVU-9yo<~$Ldl$xmX@SR0*uDu#So^1tbToa0iEK81}L!GTG(fAKx%A6MoC07&VQbI^h|D1?lU+j-E zrUm~hZ_-S0K0wZR4k{>>H>I!K^dX!mdcboRe!0AH{N1b%avx*H_BD5Lq19n}9^rfQ z6#4u;+)W?J?3Jf#75D*jD|tjRb2f?d5i$ot$();>HX_xYhg-+oRqCHI(^ql?%cioV zGdCsg;N0|dEd2Tvq!!1hZQ1ZKF zS!toNT+QAZ{O>-~TKBkRxhNkZqM2hz%^qRSc~zXe?`L`EBZrP>$vHX2`;yAV>85yk z^Bwa|x@9``IcG8n{Vg`vN!~$|_PvlaJdEQ824_K@Q8dFIu`I^h9W4?YM9+nn7deLTdq zp0yB49`xqci}q~4;P@=YpY+X=UbAQHDX98%nR|Z|ixYEDz2*_x-xSqO0QSAmVB>5rPo@hvi&+70^fkya2*^8*TZYz2B>t}2$9vC`G%~{ zJ6yjAH$k4|ybs@ko8i0g1BjbB6YgvH5!XM#EwBc%e*#Z|Tj3e-Q`ixH4hO((Fdcpg zFNa^jtKfDx5q=AG2Eh)fy8JsReP>{8UBx~{{+7NDgNay~Uig!~`oQWi0a9H$ePI)L zK8%I^AbH!&@sX#^S&hBng}6&^1E9jI!}D$3V(T1*7lS)z#Ti3cFyW=aYPh7sXgC!7Ml(s?MDOck%f7d-s6G(K{GS8VA*|q#H@ux3Ly6pM#hm%>tb66Vu|S-gWSMo5FKq;XOuwhdoB&IkE7ZSa?n>JSX;7 z&xsu!ulHs|)1lAqs8wmh(b-d@C$;{#QFu=5kIso{OnC+KU0bnH6UsZSvB}uU*hScN z`kRi;F6iw~(Y#n?4&KtdSg#cN*KOIGg4Mj!!OoLqaGy6=C(U0`Skw|9N|IbRMM4 z3D}C*W5p=OyS`(FrD*=|(Co?a=14f7-58BKmB-R;b++=pjp9J;;xOHqGHaK~;M0N5 zflaH&oQBnrnOoFY7`HoVnVQ7X?2w&@@aDp@%He>~Ii!`K#zCj^jAU09cc9x7MkD#& zHV-3Hw7J{RRRn87^hIS&6JOqp@gyp!V8 z37enI?y{8O%xc+rr%lA60e=rmvHP7gPpUYv4K7n@p?izxEQ}PH>1p;}#b0U1n5CJo z(cIQN22s8FDe0{cw{65LGoMXu?(^2TZi7eU=4UW&J{>~2(-ug5$x!$C^Qh$Z>Xk)GD9l8x{tRFxcfzhvX=W#{O}Y_* zLm~hEWL11r78OUYJW2kZ?plR@sthqn*huWfSmn7wSN@=SF*n_8qx0ti8xP$Z!jzf+ zJh}XJgzC8yez9f6D;r+^SmVmskU%J|X3k1-#vA{o%LZS^H2Mu8lbp(w%bzFnm3c7j zuu5CadnwGEkYNty1!i^O-iGfIrpz!y=|XPGbJCADmo5Fw4$_a84@Xt8VX-&M$f~)Q zuaR|e30eL7U%j`dl{vbEs6`hgWY)gd!R#v5uaZyig5Y;vaJ}!XNyx{q%Czbd)jPV@ z+_hJ^%H1nt{yJB2j^YCtsz1Gbp?CPMm0n⩔aA(FwBuT6|fg!^^RX*{0HZe;#a)N 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

    =IRlkkh!=X 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%0A>UbmU0$+rC!Ixoo_zFA* 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%0Dk6!N5ye>!k^4)>`tY7UnChb?fPl)TE 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 z

    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%0Dvh~i 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 G1^xw~%m9A? diff --git a/io2d/src/win32/DLLs/x86/Debug/zlib1.dll b/io2d/src/win32/DLLs/x86/Debug/zlib1.dll deleted file mode 100644 index 271a04206da955a22ea27d569361114257f408b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67584 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 diff --git a/io2d/src/win32/DLLs/x86/Debug/zlib1.pdb b/io2d/src/win32/DLLs/x86/Debug/zlib1.pdb deleted file mode 100644 index f301bf9f3145585e13623fab7a1429a997b5a978..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 297984 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¬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 K5=jg|KeQXlvqD8TM-xdp zYB#2}Qsq*)sPD$G)07UI8nkx9uvIoJ9Z8R2XWFphM%$dD`m?<@&ewvkW`f{yMzH$obYKF~Yj1Ntv!T$bjIID5eEY!iFB@Uemm9L;;I-3m} zr79>>o>_1dXi#pnD-%bBS_ZcxRr#zVErtwrAn!e-kiW{bf95q}E39A8$a~)!cyF@r zLL2><1B(jUU@RBW;x#7hy}|Mr_c@49;y%~LJyc=hmUqU@{K^RFCT~XdxT!J8~w~zSi9dJ zM^W$R_XXO`_eVY#s=inz=JQ>xx>Ey42lEU17NG`5UdvSP_DEkm+8xhWK{@Z*HbUAq zsAI}o4Xf*h3s&cq;m%s#w3&5?pY+bPvR|wD>E1SA491gph1Pd0)opdq2!EAYzgn?4 zqi7OJ92Gj>NzXJzqjMGSyn};zHqN<_6S~Qn_!UM@=H0}#NKNMP=98O1H>6e#4p24S zugyh!&t=j&^IV3}?2dL@{TQ0m{7cA_hGxqsX*TP$^~5BU>t8@zX04$1p%crP5EqYoXQ z^N#o!2j#{%!j>j&+Km(L`u!Y~o8PH0_2HRX2B@X`eY>yFwlbKPKPy!_j;XnU-pHoG z9;+wPp60qovWe~1=9urQJdCxVpZ8{pyLBU>%AIpR=-1z0l zRvRu1xB03+p6g3_{zz+qN@81+NKbMwtIIp7;}@zehC|ynB+Y8Lx#cR|mcgw*n!Q}& zW?EJ#ezcO>B5q9kD(hy5n)I=~S)(wtz1ijuyw@w860eL}hdMGF>GR69Ce;_s_8BU| zYnyS?tchEvanr1c+eRCKv;KAKD7q;r^%CWjgq>te1RkBV^&gBkhqiO-@~9Ss@V?c=X)7k*KCU$7S6?(S zFpSS3jU}Vow+-iYhf2mb$CFyF+Or+HfL(m6u8#j=r(_9_b|8WsR+v|*V^?) z_*+Fcr+;!W+`6Vhd^V3TeQh)OP7(Qex6`*|riRXHH(*JzJYsJnNJN z56(tjh{Hs!KbBz+&)$^KkytmT^%1&ljwTamzmjjpvuAc+qPH)y1uD)kJlmrf8w|Y> zX_o6z&^Mp!9jp&w`etmG`~9Ud^(MSaTa_5w@r;{1`TizA*5>AhmQL6V!&Itub?tSA)?uo?v97bRUg#aJ-wifZ zbza`QB!7xVQ|!A3VO3! zk45^~QbYsoqGhg2O%3BXwP4#-xA!>u!5{F*agMU8D?n4mJTmxAyJsGtyR?I(jWUEb zh}&kVvG4TD{IzqoIv+H1t905A#HXQNL}xdFkti=rl``EB zDfecoZm*nVoO4vHFCM#Gmy>)y-t^)1JKH4TKs`QRZON;j7pN_|1Qq&dZ;%Nco_Q5* z4Gtc7f6yf-nN zR+}lO>DH#Y6WN?;y9=#O`qNSR^}t5$FQ1PtWvEHGOVt2NdymgiX?<8- zAnv3dN3s6#o@TsR^S&AH`$Jn&naj=l7Q9zaBAEZqH z6REwl`(tm!~0hCEQL$+$`%bZG|$%l%ZwJ_Z_C(2*W+ErCG)W|bptS|`-riv!!-Ee%hh`{J)b}3Yab7(op_gePx$9JZGJi`)J<@6 z;~MU#T-|JGvpr6$3Gzpp`E<+GEdjb57ZV#XGAvggbo?-Vt{?j4c=3lFKO8sIvH;?z zwOri}KP;a=!sn3rO@F4W_Q#NS0cSWvJEZQg;qJ8Ij)lHC4@i0aJ#NPLQTz1co22f7 zo9mb9VSK}7H%Z+CzlF!+dbh8^HVodNi+QPG9kj-d@!pHDSbCw$S;m3!FXln7teB~K zy#AsYmrX~}Jod^ijLUlcSf)9wwnSx~fc(x!&FPf~c*mHm*S}?a7>`Y4;;4CSnL)Q| zl$ z_b<1 zrmRF96;3%%9x;x9fj=__!?Nq+P8?N;qnK`Kr_`&l)3Pd-j?&inlyxs=FU9yK&D}Pv zlv$s~J7wkDZAg6vZj#rDJ%D$n)%R1b9wZ&m`y8J`EGf%$w%2|j2VS4Iejc`dh*1wr z3Fm+q{)-lqGLHQC@sz1Y^t;KM#3)lA52>#(JmM~c`zHfo_XOT0&aX4f5a}4Y3>TEa zqi_=$5NDp{<;PvF{t<4h8^UmBSq>h&vRuOW{zK}U0h)|6Ki+cnWWW#OrObRfSnmV3iWOHqm1|RIh3ECLOT79Lzl8<-Y4z+I;BEA1x#c^{#pJ7?c@856LJ55 z&p_PdS<-FnpV<%R`eizK`Mi~@-&y}J2KCr=K$U5nBmTv zzUbz)kiE!#8sebtr{l>yID^k2EbO#>nz@9{I4C+@oD?+e61s=H@m16Ipd0FNj*SlU zJJ}zn)orb#5l^M+!Pz}VPMl+$sd-_1?30UV%oK|inw68~bBAwlY)?{Fv}Zoa-7%nd zD(We$Khy0^ra5@iMnx8UlB?GsoZAONf9HVME#qOC&NU#6%Y-Rc$0JOzz3Rs0`<$UmOGoXXW{@GI$~ zAKuK5uAkEj_+j33{hSFul$+2Pg4}3RKj(CUt3?>X~t^FdwXOl^VAhzZlaq1MVU6u=wS`B-HDTMfE(tD9Oed~5Ai z%S)#rqV=37E91U=8T4=UU}R<7*R;1bN7lDA*S5fp>K&OGnMCsONP9zPZDUKMwymwc zwHd!e7PJ9q$&~)$?MeG2BpNZ92tngYDQ}CgrKpwAa#mCW@v*7T50e2hM zYD;eoWH!9Ll=qQXV@pS8tu0H}7ep-0dXIn8-fh4;b>^mL4gDZJYpvfNtRKOQZOG^= zkGlVH+RByw(iAMBd+lIwy^3+HDH0s)9r&5Gp?Nx@4e?Aik&^X==YW?A)IF)BX;Ynt zca&wxcywSey*85?v|~24aG#dvUKbsR#glbd6{ttI?RXN?T&3EPh3bz_b^ozIv?+H zg;f!O_*OXlLqG`YCT$a<6QNdw)^ObfU9wtR>+@5PJ+~&`Ves4%>f_w8DFclD*68JG zlugqx*&sSA8)8_qr)Xp4YR=?lyrZlr`~hT;>oM5a;cC(h@@M+T_IDY}GV}Yy5XL}l zI$AYvO{sz2HE561B8=^|Y42(zuBcI|F-G>WtZQ#&C# zT7USHC7JP3ER5eJjj_032_2sYd4q@fIBoZTx|4h}>!+am0$ zP&BK$Q-fIAvT$%9o9N})c~DKW zC02O-wx%_l1YNw4X72cn;Mv%9sHzLU58uIZysV0{756v8{fr^)uE#ecct2Jhru$3` z|0dj1;rmiNd98*_)XZ{qiGDXWQUmwM1-Wh1A8m4T^lchPGS*^`^kPl;LhZB|%lKMQusA;tdEY|<< z%ew-kv>=57^TAt?7LntX`0dJ(*jsTIlH+!`7n36~SB_WV-IXKz5tQTAn#OQB9*l36 zX(KCd97-dp$(%BcvSB(zHgCsoS2o1nf!mdhQ?J-IOg-mG1D|?nfAImAZ5JABg%L`K9d&mNPoA3zUL28as6r8z@LmQe-wU$d?H$0 zA+^i$>B(xyPurcqT%L3g#P#6NLEz|G@Jr{OSl2izhp(f)Wu zHxJ?OFm)H*I>nT+2t1X641#`H^XoH0G*%#t@4=>r@^S{RNZ0cdv7b0F-IRk)$uLyQ zz3gt_ydn|oSXUoU){{ZR!901iIyH2U#hF*}&5tBxSf1=Dn1@%@Wpa)EX?$IVu9qH3 zsE_CH*<|+Il`C8DzFCh*Fn@b*HO0dq>+5{Me0Zp#e=k99;fJr>%)*??{{QSri#mLtg>d^AnT8?1;=2@ zt}o)855I@*hg{i*41t$VIJ{J;NHW=-*c`E~S^EO@@tbg&-@p+QnVkO0j^o22tf3m{ z#pfbOpP6IPpRwAxjDh$dzRcj*6|qTbQ;O@aHtRW;NXYk}T9P{(W3^iGQFaBBhW!?86o@{5cZB4o!R}jll(CFt}H$MS-?2!J^ zYL6!ISutf%p=N|0(r$FuV_FB-#3*FJaT7g`$+lzC$ z@C`l&5ldTNL7xSY=|;p+4L>#M)!hcQ(A#eX!WHqz+Eq+T2gTKW%O` z`u^Ns?Z)J#;+`H~tQ~3#Q%ecrI!F6!+B7QR-#HM{3 zzD-MA{WJKbP4BbMf5meX`sTD{(ihuiUHx;s2ZW*PX!>*Qm;7VBA3D9pcKKeZP)j=V z*>szx1_$L^T*?D`BgN#MvY5%Wez^>$yiGn~m^t`pru*W;@3?=i{ z48w2kBn&N>Vdy?zyZ7Kr5W^?wEYNO3!O$l!*w-V`ji!dgNw?Q>rVyOO?AlPFTdiV) z*&LdomOsX&_s-D;y%|HGJsyqx`>d87h~ZjsQ0pJLJ-&qR9!>i=UOTXDeHML1TNlLZ zQg!$yJL|iJRGf>nINZ<^jl~TB-Wh(fiU$DWj(uaW#$^*%)seLJi~U!c^+pPgTi6Nj zf~1Y_RXo}*F=9jD$?)kSCT>;cW8AmFL}#(`_}XM@Q#9#DX49f7ELM+Zmcyf}j5`vs zbgF#b+M*fQGNj{%skUhifLi7?@y7b5W?gW(yoH9;5VVmR*w&vKbmU(##Bs}bCps56 z($s_?9lAp|>jyBs?9!n-_VZ~N80ZSP^Ef*k1_KZf|(5BwEm!1_q)0lq(vo9!MMhvk|Tmi51c zyQH0Cg#RY*o@`7RIjDGKPUH(G9hF`fbb{gz+y=rM>e?aFq6<>{oQCJEk>mzmE z?M1gt+ZgiD8ZL(L$C2Xoda(xTm78EQ71m~6KsrXk{pQ7yX!8HHcP8L*SJeXlH(e<$ zv~-~xZCYq)3k_MiL!rrJ(hNWs`>@h=A}A zQE&kfQSpf@E<8a%MMP}{5q-$}ox9B3nM~S%@ColV-*@t#d+xpGo_p@O_ny0VOV5}R zPR?n99O3$F8YB%HM$ zM5p%Q&cTW5k0q?NAte8zSNjb;@#&vl<)SWwwjB6==HJeD>T@XR`A%^UGV`5t;aBE6 zUv~Iqy&z+{Q%!v`QFup6XWcDcwRM4-I@uFm8Caq3ZW!R@^kVTDRX6$w5Pk%4op`v6?bvUJ;W1tiE{sq^oJ?;eD>SQINr;9&5=2C%qv!t zF)4BNi^NaQU6)+JrT1{^n7RF+C2i_INKe)$?S4^MR%;Duw_e*5x7d^NXU}ZDVd4s% z*PY*T%2Q}syIu}iNPKnJ0?UA1DJtzjCY;}CW5|5G#MuJJhG=M8nUXugx=l_B@X0#%Kd+ zU7^*KaAxgU^eU}~1H7@yJ#d`hr7psns+&Sf-25rG^%u8IPxcE-n9RM>1HFmFm3&Q- z@B7o~4P{hm{iYZ{*;lIj>rg1!!O^I&zc11HLZS0K8 z+=l3q$YqdM&thgWq0qFO7C+3x5YGxb!t=-Do$(rd;YvE}D2=b@=FPAyxmp@yRhwsm zJG3V#d@8t36M0PGbi^jvnj0@=0aM#;!eg6P&-z-lP`B%{7u(A_mhkqk%i~;84LkI! zSA^#(|vQ~uQqs-uyV)Amy-gs-!WE4-qS)g5y64e>=EP*0@~GesZ#YkmG&by|Xteq*JfO2SUTGx4yob4GN75eUasGy>fYeaf_|1dn*mS%ACu-u{-X>b1WX<`> zyaK}5zgoBC`XTERi7T=$%Ps5PI(q{$4z~XFEZ{T@;1d&!u^*T;5a``Sg#km8T0Nc)q?J{^A zZ*=69IQsP6yuRz3*z7s#XLUoUAyB6EME_o{>-7SoYYR;slltPNbvvWJNPXq3rPdka zBRZM~e~TRc7$c-x5p`~oBak}n-gx-Py-(1gQRiR5#c*}{j8$J1s8-J}f$>S`O z$EAu_b!<)Pe4)x$CC@9iF|^*lPxz5Mo!nQR{sn%%kikQ$?WwZ&fk~UB`rPoAvL^Q3 zOZz6cVbTwWw^XrUl{%NA+pqd$bA1mzOM64CS@(&8AH|s_nl2e+q}s?)UZyQ8;W!r+ z=k~HVM?Ta!;!d?YOVe3M{wJWLZ7tqD(JQehmpL+-!Va*$^h()Hd*u9JPJL|f8)f82 zs+^WX+uD$&CLKG*5L-_B>GN$q+yZGkkek1hTlE(H=a2My4Ri!-x7z(L$95<2^`Zb2W z?1vY9(RoOABoi2w^n*fo00KCJaQ1JI=g`SXSMT$zb@&vUzFyKI%?6X^56l^EPv)W$ zrR)<3+xd9h6>>Ffdaf$5BHF!1ZKW||bcs`+fn)wRkTRfsaZG6@aO<%f>0SNYTP`-$ zVCK*<0K4@}t$#-&byo1q>1%v_w7sdTmHm-vzoE<#N4p!;&No$)RwSAIW@*6i$NaL6 ztAlhg@7BOY?P`CZ&_2wGpZ3)04)>ysO|fn^uVqE{nWKc*4MO8^(rD{UM6*IEd2ug& zcKSk7`HjpRpIjHkD+KW9u5JqJjK{d!P~NDNXILhk7c)ezz zTR}DBA5B=lqZMB?gR-{}BhBKuFP}W=z`~`)PgHm*`poc?6keK0!=H{SJ75)WlhNA* zx*dx+9;S?@unyr{)zp>Z+Tf2-G_71|-I=lvM6|9CeWn`tl zuG(Lf4s6b(A1DNk6g=5>*S34QO&;K_HSG%@{?cyiFZ21fo#xH2)SOe$v_E3sPUp9@ zsWJygI_f@@Jme*QA>%iNY1(vOpzqP>V=Pk<;F1NolvmBSS(j;Rn@zfNOZT*$D5hyDQ7hR9A+-^eb+7*&FM+ z^RwJC@9Fx>+>v!#JE&Fh-(FO_IMhoTb;1#w9JiP6ub{bvZbpH-oZdeqq*D@XX7GgmV#ggZ{Z(%GBzHW_6>{jqMVAJ%R4L)=zBbp2{y zI6ow+pv!%`%8TGcWi)O_3Ws`7KP1mRX&l9=aXZtvR9r0&p%+V~A#?KV3XybE^v+Jj zO{VCblg24}Q;mM?0*@?1P_XK;a6Xc=?O+&x+a8HswHvqCReR*SNBc?Hx^3S3jGvU3 zmzsm=UwH}b_nY{ZhYN70+tvZzh2l@R514RLrnZd6QYIZ{?m%$Zdprn0Z*Sx(IMyRW z;pVo~eZYdlo(qM|9S-8gMhk`GZDCtRg2VPAOjEoyqT5fwVN-?L=jaI29+3wtBPAU+iaJAyE2H#S13t))r0O@+Y@ z2z74j=(Kc1C+OeVV6DgTlGbq&Cfd%HAFXqOn`LmA8mbOnOuX4TUa_SGiuo>;W=C|p zo=ZYE^DYq&^S9g!=?i$uYwAOCrM#}9t9xP5wLa$kbbLl`I=UH|XJeJF=8d|Pv_&8L zSZ~s?YSg4;X;lt}vb>*B;y=(^73=83U+6PFXLi4)#hy_S zx`JnnuJGvrOeACcJ;M02@g+6H(IK>+2#rymnTD)s@iQOaQ!4{OcS*p`^`uri#jWmcn(|6_Y= zW7`TZt><&K><$|4L`_dIXQ|k<3N($JeuX+7lO72*>5(0`SjWxjFZrAAHO4whicK^< z7`5fM*p{D2%#ryi24AV3v`WwME%$tKCw{%$m1cP__fko#dM^4`;W3!;wKCphM_rtm zo*1o+Q%04Bz8aU->8I#i|0>s?5s*v)S)Oatymi^A)~~_wGtpAzycWAe9_Z4Olxh77 znmO;9mbz_Cr5zE`Xc-3z%`2#18`av39hvp0c7Zo<^RC3t{ylBmsI1EGR^TkJ<fTq-fdo{50s=2+iThvyOwL)fpBY#tMSwNnwQG2sT0op{~%AyaIv~6nf9)f z%!hGbk(wrJ=+vXw2KD$)O12}?G}R#2%1?M0Wy+*REh{y(X`M>z4{v8=DT;oR4m%+4 zqmGQnS{aMQpF=1PTFEwZoKf4_lZY{3u}dE5^5?1MSiC#QoC^hyob1~9$4I+BYv)H8 z8$sJoYIv;Vat-l^Q8yE&FO|AD!lq@}aO#AWQ(cpchthMHW7D#?UMaaxaQvd!4Qffo zDbFcsf7<>i+YFh&aQgfFRJqkT(bKvzBjxW#Ps{GO9Azgu&0ElUA9u=bwk^9%&2_6s zrVk}pkYVqeGRh%0-8XrvF6EK#wNAR&qq%xdH(j~xFWuvkZXa`?nvSDnE)fR}1$_?E zwn-lPzll}tB!`y;cfHap>2pj?FghUi!2~a>mf$Bg%|P;XgOjhn*?jfGra7QZ)DN3V z+Llj}wmYAj&){hW`Yg8eRf?}X??3oj`+gAiz06}s+)tUf?pmmOp#ZT-Ynb#M7_|tmR03%H})#pvLEI8F+1h3D+R+)Jou-;qvJR!&|r`wI#MgH{))7HdmplX>HY-D52T> z%(m?pTe&;qJvr&0XisOO-d$PitcBLEv_&pn?(SJ759_7doB5uvzT8UKGNX@5{wf@1Wj}o-Ft3{bt2WXWNk-HjMRC zlaEqPvL?nDFz<83wSSf79!&ODl*@`_MPNm`?I3W%ol}gD>Q(Tv^|+5*Z1OeKiWVrmi7WRl{YQf$EAHvo$7hj z^GIhSe8h1RM&0k8&pEkmI|KQX=2-aJ0ne|%{~Z|P^WbF^^tO@K$mO2bK)Q?YyNZVg z*0t(#{x$gz;dfDx*8plf?`F#DvmMxDBV=(8H2)i#zs`dO{B8wS zP-ZvPdtMwl6~XsKr$c+QyuHf37F)UZC*paBA%l}hdo{m12BJ$PoJr^R)=tlR{zPaH zuZr-`lJ3Lk&)yN}5_8Ru&zVq@f! zKV-1Bh4)dA)j)Vl!0Y{IdEOS}Fa{ld6+Y&Y&ucfKe`825L|EWaCii!3;3NcPG+F2) zm+{AQrg#`-29H1JrhMVOv5jvJ{6T9p<@_)_K6M&-Kf?1agzgn{DEnQW_krEW1l;}b zcq8%eg|`H}?rlJ((u4 z0v98P7e-J|k@eS!7loIJr1w?m4ZwXhb#E)>S;2QH>A!j|^$vMnLO!=2OI@AB4l45T z$l;tJp?uej)%E4>c6cTJ9?EYxI{xz6)Qu|q8aY3^2$}KyGPGv(P)Cr>^V28~c(`>k zFr9jc3>QK_iQi9~&^O9q2!4yH%TI6eyg8KJlhx3qyeK?*_M-M!u*D`?g!3CM_<~`swVIu^m3RE)Mz_wPd^b?8$hzZH>hV-$OnH`4Cu@++&lfV5K~C3`#xTnG zEM$K6aP)}0e-+$*%5dyV>LWa!2<_@A_|c}^T}S&wo-Ty;9MbhhIy(RCnr8gCsU^PhBk-hw3I$=6Qm#B}1e5$A65l24jng5SY}lYO20k--<>^{fJD z9!dEhhkPmHV~SY~qI`b_t&dFf)H`n@k>xGK&xh`Bk^Pxx$=oq()YQux`EfsaoQd3C zfzL;dWzQk<*#>?v-{;8N3Fkr!`CQw8Y>4w3X?>*-9gd?T@b(C0a2>oP>S*JK@h0g| z^q#WZi9Bvui*CX9DB_)lZcHKGbn^Q+_3_S9WH*a?OF2CUul}99nMQei zH{srk{_KI)mB`?`yJ-_?AHG_Ie)0QJd56K zAy13QQ*#7n(2>i@=giZ=pQq+`!GGMLKsv`%Y->hyR;N+Z!{kS#|Vg$(I}5XQGcaZ6c30&kdxTSu)bZYTWw#GnXR^H+H3i8 z#ym2f$Qz}{6S?PXbmaEta5|4SX z?_nE<;J2xqt6#*FybdSc@I3(gN2Zgsy>D@ZgU@&HM;Lr=enX+QaHyN93w_<5+DMXt zQv6D~qYNFj)=J%*K^ha_{SGsaN^`?sD(8A^4~Dyf!s<@JuJl?3O&s$z3g0FNm1W^o z<|+g~LhyiEwE;W9Zzmdeh-0M;iEKc6t*$b|XU4ky|W8jhwZZzSpC2f)0;omMAuo$@@FmF87 zww$(of%nE6B15U#{?3yI81x5uH$Kx z8XjEX86jV3gWq~p*YFfZxi8DFqqD7ZQ)m9XRpt5f8cXu$)f59g^YZ7dk4eNpwJ+2d zs4lGyRFtj?RISUO7np%G--<*aRkga@KjU8@QQAw5}Hkmin-oybdzB5`+65U82TmeJTj@?f{!S<7inXU8%{L zbj!gM(SJ+(HrUXuFm$^d+)8k5gsXROXBb?mg9{p5QwnE!>Sp>lq4YkJC#l7mJavIt zNc(`9#ah+IkbtrbYMM!t=Jh@-MIbWu~>;(4Z;uhLYC!R6T`; zWtnz1ljkW}bewdh)9971jCkF2o$&JTO0V$wS>cC{zYWZFDEcSibGVVo?chWwE~NZ5 z&eGkqbGvL*?nU>wEV}9Na+@i^v+_Bs&+s&m1kaYs>^{SXWz%*qe&%L{A3A;n<+)&* zoZFIlY+d%F4DJ&SZk)l1-s*5RFOg_V&N4VDD=iy791oWi=g5oHxOADN^+MGw&bSe! zmtIJXOvg#L`Au>vMx~OeM+>sT4;{aNd_6UtJtQdPQ6~S34DJ)9Y23-+WRot#j8wRl zCfs7|dmFdf;FdeMdV?!-aI3*Bfga|3DsE#A+&XYggq!Sy3!8Aap`SM0NRGH22Diis zC-qn8B^_Lk3HL<@x5wbV>EJHRLGRKWxLd%9tWI=z{w%ml!PV!bdHx)@yTM5tYx8j* zxSxP~#!2^KgL}vc_qf4raOgd0aCcEhExqRqZi*A`MT2W|=>5guHafUhzzKh~4(?TO zqA!D;viv)^nT(aixR7)?ccko$mZiZ+B)E<9!<}u3U^w0#?21R5ld-l)FxnbySLa-? z_nojhB-ReGg3Ymxps&ig*6oZu~yuaEQFmL?Q52;{}_# z+uB=t7Z$f;C0b)$A`49#ZB|)li)(3DED`jz#l=(dYwhAxK&zr|WQ%J<$W2|bOd&f} z#rh{ZA~G?NqM4C+bvYNVu&UnK(Kmx@>JJt|XT5I<4B~hRxNm>zsYsxA{xf*pmY|9p zkkf66w!RaIc5Lh0b6bM@_0;9`eTNC_g6dn46>HOxv$fqV!His`WyhWkQ|D7j=%y?Z z-NtP@Y1$OBoEMIZ28q_2@qv8HxUM>wh-`V&fr+3grqb?D5~)};c0FC)jK@q^TWr3sGP74=slM8wSM0+NSFJ3A!!-bu2n9z7ost=s@^A$+VcD>kHj|kDutfx zl4uOoak&x)r|jdqIYI;){2b#}FWK@^E>GC5@$luM^fBnjanp)Ce9M7H- zdC)UdT1`&)0k*ov+_|bll$S68P+n16qZlstuPG|DQTa-L98x~9lEn+v54Mc0uC;-y z)DM|4ASM1+H!LgMQMj;BXc%n3FQ_F7r9+6EpdzPqmq|c2!j!9vIYO22S;eIznrf(Q zb)c$zRjH4IxBgIQS)E_*yGoZYM9Rwp_PO9?#>Kh!Qc1nOG9W^zRxb<-qT1gWsxM!u zXxCI!1bhK@v8W^z7iGL}tA13hRfWZsR%@6|Q32QuQ@51yNKzX|YKjQO}a<#8ARKJed6m@|Xh0j%6s}V*1ycO-tw)iViLVqP)+X~cc zeR%11rmNziZuOhnG3vuyw>VGAcP?`tEO~hA7(J{9HUL53OyDda1Z)JFfKSu!H}i#R z9S~u@0U2zM%r9OT=Etwm1$5CUTA-F}xR+e#; z#SLe@O6+GDGg+K#QwuKBCbmX{vPoH4(B>%Cvz$XauuY7$n&{^6Fa}O%M|4L_CMe*y zBOTASdT&>|YK-Dcli1ou)*iNr+NSnE#%`CB<5XwjisapI4fnPUEdMFXB3mLUk8F!G zZE~c9@t!g?yuTXVds{7zcd?;iDulP+;=YiQ(-_=lN|iHlz=g zC5Lydfx$fhsd0c9KNutbf~i4v-;4GI>!E|jGj;E^)0>LD&;fJ;GS9vhhy%A#9};}& z)cbFY5V#J@MXZXq*`nxeNrqPCBDntB80;`$31Ejzx~J?bE3@-R$(32Ay)@3`&$X8@cDnZmiUvEfcKamNwR;^rIN0*BsWgInZ;lf6ok?wL&N z+PJ40T*Se-GL&!!ox4ogX&5v7MuJ&7cUgw~CK){{BkgK?$4f)BS>$eYPw8V*dty^a z>^?7r_Y+55Y$?;A+%0ayuW<43JlCWV5PTp}-Ps{4JaT3(&|z*rQD;3R%^4=FoCgSn z66XAZN`>tX>J-C1&cvuXak|h8mFpMiXv;aJ$I-Q}6dzN>U)p%t=dbia#}mAX#Tui= zRV!M)uCBG=F1a>^ET#MuFS3h2eXuuG|HcuIIZGv%Y}TF ztNrMr;0{{;2`vPfU2f-LzTV}3Q%3n`^L%s;o-NMh+2UND1$R*X+BpIk+>|hd343<@ zWb5~54#?kx9Q;|FTOTdXt&bMx)<=tT+X0Jn^J{T#el4z%GJ19i`}GFMdhVN$K|I>k z8JB@nwhZpckb%{ARS&7wybso#+{88Tp;l^y+)1K!cs+bD#*BBb?r2q)**TYu+Atez zm zwl1l@NZr>(6-Zx^KwMpyZia_Y1v_qP{pMh}+!>u|YaEk94=m1=oyEEBlf}91lf}7h zk;S?8g2lPA6I|bNO0AXhmMBM_&3dWbU)FnB(Uq%Al?Iv4Q@3Nz-(>a#E|6^B-Q&LEcpzSP*qg3zAn&_KLAjeuz4o+F1eW#XR`KzD%WjXPTXqhUb{gr*I>@c4DiiBG><+A->Ay0kJi%rYHqs6&ATAa(H;QBYFQaoaYhg-M6qFxuZ zD!l6xx78af5YM5TO_KY0-Tio50#a0ey%%vo)| z9@$T7aqj*~i@T3-XDruyDJ@R+QVQ-NCtcY~DLC0nX~W50O2NrqN{f@dl!BAJlols@ zDFxT&rEz~TxQ!0ZEgKux-8U(?e(al!cZX#l(2uf}kTN5y2Uzd)en?5p82{NDBKyA| zQfDsHQn1$Bf!2u4$mg9g{@<1jk?H+`Z;M%#DWbQ_n93-_%p`0n^k+fRY$MCG!KmkY z56NiiM)n?(qrheFAsGWsdMv%#^KRZlas-@8KXoKuIXN&E*uRgef9UVuEP;}G)(n73 z;CkBeYuISNW-9lh&gT9Ij_zKyob%&MXx_-#;Znk!1{{WQa8V1Zd;E?A+kx|dOM#sn zLip(h&OY+{V&DV7FF6eKc$l-({Qku<&XH64ca7ux_z2F?AIUjLa9_ah0pR2FS)ZcM zyN|QY^85Fk;ZL4G7-;mcesoF$cTWI*pptXVmo;-9n-1~`=BaPqN_|+!x&N`8_4ny8 zKEka4wgWqX-M|IF`M||MC(sR8Kf&Dv+zrTG9QOeC0S^KX1AhWu2ZkZ1m-)U5ya5cx zJrEcIBsW60fZyb!qJ;Gg&S&4md7vj6u?J7W{tM|lOTLd>535B+oag>KbBE=E8F;>0S&C@t1Hb!OaJX0SSLHP!3cARlw#X$HgD%bYbbFpUDVs}Y4Y$aI%Rot zc@Z8hjq~|^KQ>3{DEN&bgE7bgJ+|>AToOnClHU6O$%DkZ1o#qi`v?p2HoVBd(tZrR z`y2VZ51jQEzpnxh1CIia148dE;C1rdKwWy3Ja5X%ujOBO7gff5l5Pw=`Y>hKiQfEb9^({rRPN{*9YQzB`(@CRyD#QamU3UugmI)#xm-Jo zwN-TZ3F`9=@OJ0foQ0!K)>l(csRKXS;(32Ym)kq(&(N`-c-;R%*<49^-aHVUrH-!% zz!&kao=drqPSFhHO!)n4xL1O@bNg^~nfyLN+b|sec~dAe!hDK)zZ3aBbp*VS)7i%r((#ssex|cSAONPB4Y~x-I(wYPB4^S@i;NfBXzJtCMo=Z8x@42{>$l*%L z?tJ7v4H=b@-yu=*fgENamzm_J1R2%B$C72-^Fds(m3Kn75T5>l%!F12;bRlH6Qh87 zwSjw2pd)wFOsl2sA&u!teXq$#^7k}+%N;(yARoU%#?y(j{YZ3o2kj*?yWn{0A@pAy z>v?}2!0t=*a4~#rAb)S57w4};*T_c!@{x0gPr}zNCm_?UoSA~3-$uAEg7jm^u?_c9 z_EpIe^6Bm+va$e+B)7xR(vl-}}w? zXT{pRj=oX+<=!Xxz5oyMeb9VM=^MnIEZ5&F_$_X^$4kC)7qNU}h5CD)i8s-te=B{t z_}@!EBj4w-ALM(12|tnF;{FtUqI?fC=^bP8^9=oz;2)!7kncR&I{A(~R(~g&cCrGxbM8AJbGlb?}>-wzpj_s`VfZZ+}GF!J;tt?@DXM4|V3zWzRL zB^_}WKcmES!5ooDFo8m!&-8hyOiWAv=l@Nw}n?cZ+X`k=}0<3$?(y7`VXd^~U5j~PA(7(II3#7`Re ztTz08(&+P6Q_i0^a+qo4{E8`G850Vh*BJiqHF9f*4rU+kwP33P!99%6F6CY$LGo7% zEFXiNHX1vu0-Fl=YzRF7fA>`42fw3`MIq(%87kHP@cX;Kj#-2|61$IhpCSGp^!OaY z+(<&RhcP~fzb6Uzz~PJ^30DpuBZxm1cNKNuW^fbGp{MzMIdzs2_j;P=3bz#o8@fIk9%0{#r_1NH-d0bT}P z0sacS3j7Ut4fs3o58!`**MWZmZvY}(xj!)v7zhjk1_MI?*&j9xxQt+*0zM7g0(=Iz z6}S!fEO0yUIp7Z9PT(%!^T6G}J-~kg_X1x4?gPFE+z)&S_%iSS@F4IN;H$vbfUg4& z0S^P;03HFp2|NmnfTxkb5x|kaC}1>j6d-p>js@g#O}WTN?zfu&Oav|>?!~|*zy|@; z#rqI&41Q7$R{&Q69|1lL>;aTe4hk<2K*fO1@KGYDd4|>Uja`8&j7y$o&}x*o(Fyd{1*5f@EGuI z;5)!~fyaUG0sjSjA9w=z0q{dWbnVB$;lK!BBya?9BrpmX4IBlG0mcI3fbqc5zyx3- zFbS9pOaYDorUKJ|d|)~-12`5q4wwnd0*(h}19O16zzM*Kz&xM;I0+~OihyFE1egyj z02Ts^fW^QPU@34ia0;*tI2AYzSPql|Wq=PT2mC+J6ON}vi@1ylnyKrL_v zPzTfl4Zvz(4bTXz1=a!Ufek`CZHJz0}&t!v;docRv-p!2DSigKs(R@ zbOK$#Rv-=}fNmfOYy-9fJAfWwCvY}!4zLS27uXH#0nP*72b>SQAGiRx5Dha_-F0*54UNCJl>a7Y4&BydOqha_-N3H&dH CUa2Gi diff --git a/io2d/src/win32/DLLs/x86/Debug_Clang_C2/cairo.dll b/io2d/src/win32/DLLs/x86/Debug_Clang_C2/cairo.dll deleted file mode 100644 index ef90fabff0d5ffc8542cd5d73946928bf64ff980..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2063872 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

    To){nyxJ<>8P;m0rPFLk~7Kk;4|@WaO3 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

    cn;!XgPxf}w#fw%dk83QmY( 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

  • !D(%i1~&H6Pt-het{&I>w1Wl!86 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%0Dv&cBZ8)WX87%l6;V{pB#v$CmQ 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%0DOfpd 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�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

    D)*4LPUN6D^lZ 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

    m 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

    Y9X1Mp#BbQ6*Xx^T107)2WuI(+J8n-|NDgF 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ℜ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⪻P)tq!*i^2!X*@xLBi_Q`^PYBFyGuyOy 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�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 P-0oS_9v;a5NB{X>cvH<6 diff --git a/io2d/src/win32/DLLs/x86/Release/zlib1.dll b/io2d/src/win32/DLLs/x86/Release/zlib1.dll deleted file mode 100644 index 271a04206da955a22ea27d569361114257f408b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67584 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 diff --git a/io2d/src/win32/DLLs/x86/Release_Clang_C2/cairo.dll b/io2d/src/win32/DLLs/x86/Release_Clang_C2/cairo.dll deleted file mode 100644 index 79c15147e0e290998a73518a8f6cb407955831a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1213440 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Μ!u|)yLEvP-dU7thi9{7RXPntI=LF4{)8eXkMj_~b zD_raV{Q(sLa}r8h!j4vqOT~!UAygl!As79;<=2ny#fhF_EC$X$J270}hu!ovjjqNW$d2DHmIkO zw=diSQ~dybvZi`Mq8PocY_qp29)Jy>sExPc0^6P@t3`qG-n;_2#XG=AtWlHX{cmD{ zGe?hTj}~N7*#8Aq2R{EWJ@fuhbvhl+RCsAzdq5)^$li60+<%7vH zMv;*$3WT>L8r@!anlyuXR9%)nGC$_#dW`FE6C+dmOR=AyvxJNRxCrd-h~kLdi=v(3jpG0Zm~gw*Ny|S+?0dP|3iE(d$d#&js?U!)S@=oaf=h@r~|a8lsa%P zvGEO8KN714o+JX+y3RW+f=Mm+@r;dZ~IP50skqO@^{doh_ z$nVc{h56AR2~&vZ>?F7Y(*CC_Fr?HuVFcqCSPH>s_U4!scc;`pJPw|lKfeC&Jc@{@ zRsRWst+4*_@Z6H0-*zfIlpjJmqrcSnS2!4;8}CLF89a4_TG6d5=oz0QpyPXH^iMG& zd3n#qJL)foB-g($gNG3)#gT5H8Hk8Ec%HI=4N}~Lr;rRG6w2?B2luV~UYyd_$nQy( z5c9*mDNI!+XVszIJjw|)^Y&rJ)nfU{SSEZ04MKgNM!$t3?ao)ELF1WUQ58fzcrM^x zpTtRRF$1b3{E$w<6ugD?M>*DW{5<~sWBKoM_%P+eH;&$S!g$N;MK*u<3evMADkEG5 zC~iX=U`QV5o@is;J8@r0={PovVy=Grzybfq23x5;JQc`FNw(2!dl3`9#&PiNdA|TY z;Dh9s7lZsN)9XO1>2+={VxK_Eq_@Ln9pr(K4){i{4hx^*;>rb!WL4@gu6+ zi8fF#Fu;GY#t|ea=QJ8TLijZ`49=Eu!n?M2;79IYgJXEddrA{Dt{${M3G74X6LO^S z#Ri<8z*W=1?fF9&XCMo{$eBQz9RTuGLvU#66B{3s-|9~S>vj8WbNex8&OgclLKT#< z>bLT9Md4eN?SJ-t$p%+Hj-;|sG)N~^BUkqQRKO=2*EG|yNK!7_B9To91AYma_MkB_ z&Se|YZ~?tzv%BA|G55Ah&EeUp1g)p-);zduD+#(^_B32&AHdBL@m@_ zet*}`%Jp}UPOQ#v%xo_||MqKfHi3noa)F=x_XGFj>hsBY_yfE<3g8{!EeZSX!Jk?7 z9R^G_Cw~)^>Gdl93Gr(K@YpOC_TMqJAD-#?u#UNAL3GS+6L#2CD-Cipm(GrKu)#s} zipvbC7ZO(k@m@9qL0T{MxWe1Vl*eJ1~t7io=toc{|;osxfKT>dHlB)?{o$gs}nJVDPxzN0PNK`O2U`$0}DlnEl4|TvGJhh5#hd3v2 z=DEaVp0fq>OgG#05P>Wn|CY!fGH%BNEpbi(fphet2Km=9(5f@Pg6l;EqF63J8Cztd zjL&{ae)c^6Y3G#EVh6CGQpkz0xNF(q0br9WLSc8)$ln%~~T|)-0LJUm-LlRHl$WiOw2#;@Ex%25k zp%S4V%x>mXQfaP8uKv9I3rrrfRM;!&EY)-QKSPxpkFT;Ei?ed=Ego0?8>cHjj^Dab z=2U)Lm@6rWkZV5=AGP`TxTK)SY4iK?^MAl+6f7~$<%br8i2)BB-)TY!u^68~Ko5z0 zzQ$7leX^jI9K+=5%fs*e;O~48R^|%l@?!@}-uUWkIkin+u2{CgT=_iw1o9i3Tu>^P z-)Guy6bgE<7ja&k7r&qAjx)#$t+-ppk#_^nCNP+*@2Y%z@at9f9o?T_OeitON60RQZK ze8jD6yiw43oDuG3KH-jt7^mfrv{}WnD9XV>)BAT5 zZAJH#_=iU#@55p%dj|u9959Tp6x(o&6%~d{P9+1zlV7Kk->3>Y6UW&FiA}8625~{e zhDO7giD7M(j7cB(P!v~1PBpFK31FJ3xWeIRq0Qor@H)=t!w&*lV6zsaX_Z^C2#N0{ z$43*<2)@ThSB-vLfnX=Ng0r=-#BSjPh0>j8{OSq>5iqt@(1h_bXa=Nn(!#<+xW|fK zET0V1nrAnnQRM)Pmf6ydDYCg8xYBo1HLSy_z)O-u0hBA5Ka=pHh|nc%um(Ajldhqir%n6)Bmw+C?4D7 z;Ps14m|mR}Fn;w#9_2y03ZxU3Mf&$dI%WkX<7C>pzi|#_>$L&kT&(%M`O$H+uvouB z6R_ApLCiv4omiO$r;;|?$vBMhWJYN`1PszyniZWiGl3ZioN$WkK}?5Y3niu^YC-a| zfD>rPkdeYVJ_z}IteFG&_!1~iIb`o8{B%sP$K@LSPHuC z8+6?o!Plpi;RosdV0Zxt+ZezZXjrcIP%mQqpn)rP{M?9xzA=l$m%c)WK9O5AJ6(^8 zYe5K=A~>`@){TS~^PXA_V1+Q9QAP`2v0;geDwhqSFyUNfyMe`XfyLvm7xbkcXJZ(J zNm*S(H>b#Rg;}E|&p#H0EyF3B|NmAzyO!D;Z!uk&Z8Y1S70<332j7%zR^Bgb{;dk; zV1y#u&@Lp!8puMj?V&4Xqm=2*2(&fxK${XLCmgDX^v=)dmd||g=%A^0%7xyUj?<^V z^;eEy@F&gsLA3ctzG)4!ijjzG1HQQl1FiVDFo}Ovpg%KC{uf*F-);QrGg6W1S~>7Wflrt3n$`V_h$7I&?)rO zbKe`MpK|<~XCJOdjrk^9NYq3!mCOGz{u4pO@h0Ge&Y(!q^js~R_4yBQI)47@JJkB# zkDlLpB>z2!C)l_5t2Q-rrSXX$aW5(sRq1pa%sJTl-at^h&$cLU{Q~km_#fuPgVi60 zZMCzHR)vfFT0wrl!_p?(w}ara@vF!9kSEgsjr9bPDOhIm`aE7GeXz#<>qWmShNd)+ zV^7sNP%+MF+(?VjFs9I+Vj2kRu$}I-{++dC2Z+P8v%?l4^xcIzp!7ok|L?q;@Q$zy zu30MbtNa8`j!(jeoyyyh5ic+HtHwh=C1wS*oZsd`WaqU#jsgyr25N3*`*}rg~=v#OZZ3e;=HtiZ0eX0IJo-Boo z=Oq3)))MS5Vq*jy43~?rDeNOUA2dFANOXRs%A=s;Kq&kkI4G&{-I<=sgW}wHJC-u7 z>_5{8cL3LifJB@L7QP~O^32FtIF-^JB~cIh5fYs3c(A_&#FB5FH7k^Ti<$F;lF>h^xSclne5X1=TN^ zJLtsz6&wnmiC)28#VFo*gEm-p_4H*!v=ngZ6XG1@W+yF@3DcGL=S)x zeDoIcRN=YjsvHw7N8oM#$i?F94OQ*tgbbE2}}^DLL~EOK6D z*O^&>7SDV_bC2F9;q-$PItY)e+c_6C!q>MZa9Rix$YwRU26A1T6e@4DF+Jcsf1cBO|Tqk-RiK@U$^X8_l3D zE4Ml(-kdn~%?a!c8~8Q=fCQ7|ehWkb@*%k?vEh`ZXo2BB6vwMxDQcDqET!_}CI^Njh56$u{>O9l-(<&zzPI86%}SBg5Z z=>t2&o1OR!6gCxtZ&q=n(H4BZYu6E5;}i}jQlecz9ge9XMn-k-?_jp9^-2kFtKRncg3xkYP5In379Vfzvag?mndz~{( zU--j;?I8!Y)Z$xpj@W)_*;(d(w+Y^o2u?1+*~%VT4p;=%63IUeC2fO9K8 z$h3&9t$@^d@21}f#k1CWaEI^7-c48jsrf6}T8-zS--w4c<0kxwcZBaH)0KG6!G6il zO!*!Cf<3>F+Dm$Pk9xBGKblSp9YOXZT-lNhM5N@<`-F!Li*T(TVi@3;!&m)685SeN`3}b{QY!8+oI4>~n0F zIs|6Ecb~=7=Ld~l*mi@ylOMibqiR8n+J7NpP>bZ4+p#sH_F?`NZ!R!MqNU}TUs0o3 zn197##(Gmi%^~E`0!9$hgIZfC-zFDfind6;_SJ0dgev}bn*H%KNVE_htFeQO>l&ZM zQ6Z?Cqs{7|5=Z2Vyl4mFh-d$c)vFt09~MP?q`&hHsiANhwv=Q~xS=oNxbmJ|cy{MK zyLq)iV;NV|^tlP^#I{cW{uoYd0~0;w4qy3LQFz8<6R;2xM~0R{*WpA^d@|#_u1@gh z@3~Ej!+5fV_uVfFa|DHqH}I8C;1Wxb%5BOpE#kp#1#WfR@;u{2eZ~!gi-6gN&ZqaX* z_Z$7^jLTxwf1Qs5oEc$mka802U*PiQ14Xeb9LiagB&D93K#;LIRlkeCVjJ}iS}e)! zLE&D^KaFpN@1v~e?gjM8#e87#GJwnV1J%w)Vmgux582Tc`|?cbD5(E*z8ltiiTW+K z#k5aPGv3b?t$fsY|N2|`R2Xna`Cz*MDfr$;Xctm8@|4+>LK(y(jzUnIF}j)g%MUB%&7J`Lx}nkb za+2XA8Bi?*2N;zlNTm>n$xdSjZGYJf%NA(uC66^R%=IL`GK&2mcp!!o1EoP>P>7iu z0(AX1xr*b<4Uy!5#-i_&(|9Op*wxW#glM(*ZZ4I^ojS20Z6QM|Q$u)rJzqR*XS=bV zfiEY-nW3<7LcS0alC$Qfw8@KEk3x zoHE=QjE!h?rXqq66gFcScs1SF%|3(&zL(vFPkI%X)EO} zz2MCs4urCr@+Y#b8hBve)g(8z;=qNii@aI8kRJP@~zJ5u5| zLKbLDBAC03$L=PQVigXO@{UU8BoXorpZ-Gf=}WmskJDZXeE8{bFvE3Rop2AnC#hFh z2S15ppmG9j`bXglhBD;rhi46CC`b^VLEY!pb|`Cfi|@JS?>8oBXnevEIs>rzg2s1u zKx&ad;~=&m5TBICHsK&A$i{8=(1;_p4O{Gm{quZ1xr>#EgIi#JO5zU7Fyvx06|4X4 zICM+AP^m%g(Yvkle|lopN^w))L?&XkrzdGDc$|sQgX4U01P^`d63eZxthdayzlB&7 zU+9dKB$|uhGImyO?Lyd~lJz*iz0l|EQg8V=1G4~?xA7cl;0yqT8+pwnK!h86RKeMP zs`tf#-SD}n8CUHZ=Qe(YHGbT+JTG9R`FcNzD>!~gnhI1k>H<~xxMWeJ zG0~>!Z8)lwpVS4{swjnx>Od~=AOp{np5*qWigV^a@gnsLCtzf2`e2=?slNyZ8zb`q zzM}%inNhIonV@kCfkJ$_$pQh*KWi2OmBztOD6#0Rp}PO|0!Jil1w@oTg$s83yFJ7q_g=L9ZZO}N1Wqzl$+Ma7Q%O0ffQA?h_#}n80xN?1utEJ~@p)^0tg*G{U zjjtrMIz`G4InlTMcXQ>32l_lpHw7Yz*97KQid5pLlH1MLwa*RMY2ve*roj3Wlq5I62PP2ANU$U zNfhL6CqO;>R6d|Uk1ehA7a_WO*Dt7LqAZ}IRkZK?%=A0(>8&og?n> z(UObB9q}ap`rD@g6tNr*4Wep;#(KV}&}0KMHOF1V-}&cJ^P{M%EBBBVsV2Q`*ioK~ zsykr#^6JVN(htRjAbm%Dp$E-pWknL4LZ_{lFOf8r3>q3WZa2 z#NjB;t(cAq@wKGeq{&n>b%jm#%F$9?7RO-Dmc1=97JIZ<&p7^G!bgHyB=fx;M^w^# zyLfJqQCh(XmXyu>>LN~J#2yM&Z7Lq~F2NyDcS02L6>;*@-v?+kg-d50BN~S3OqKW@ z01*ahu#Y;6qDugq`zeY(0rM_I^_;Lv9NF_oAP(1JkwDQQd@rcgz`Q$V5a5Cp9q}fW z*4^m2Q#_A(Q%d_74*!BFMek4GBSY;wXx#SUcnq4TSG|73-?;qLf!`d^w?Em+>6i6n zF5P)j8G7zwY8OYY<%g zQSlFQbx|n>=BK&ai+J=;xjMkC$CDcARPz!vo?1@k28{>K8bB331LbI3p^ve`*@Lq* zEo3zEC5eJL`Fms8PXOL}9%uoCrogkiNZ@(&M8F3G%CS}5wlKCNR|ARi{&PU7*hmY% zNBrBCFO4LR!X6-X;4%X+GEIa4ElJBrfN5ZA1v=2gG7>OZlrs`Y3CaQNK~M7#k39&D ztoGZC0kJ7j)E6@5@HHxkuPx3`&jShef@C!FC5u9d=YBwi%+47OcmzYjle0Wy8^*gRbRm|$&92C_D4FprrJWX_* zvtcnx6=eIJnGJ1ESX~@UPauF>`!EyJhM+7R?N$v_ww4W%i>sHiA#!T5C_>gJz-<~L zM?Xxke76Y?r6R2r=m-D^IJaigPvIndv+0OSgtVwE?US#~RCF5G-ok~B zZ&2|Cj30fG9x>B|@1=omdbQPPgwZr|9+@6qBkg)kSr-P`b2C|GPVll)7xMZX+I)_`65C2nNMZw2)S&~3~QWG!=EGABqdTJ{}8pE zGGRV+Kt@=49Nf^Gr*`(qmFj8 zsfn6Otf4{8gFGs)34tV5UTu-4)C$53LB&9v@EDF`ZEIV5`?B}8_j>R3chy^~v|3CE z8ho{AYl~NHv9*9{D0!Ip$!Y6>i#?wGvOhuAix!3C?92h$ zA>pfU71x`e5Cr~HC#y3vhEotS9>pG6K-plpy-in>DWIdjMqhG+cr4^46 z<%5`BVAok%X=3PE3aCq9I&|06qKN(SUSR}(s!6nq(yM9@#>eMOB2YUF3OPXGDf??T ziO>@~JMkpY9Goc!GtqG!c8`V?U}{sAn|L`);m%jgXehIkh$r!;bo#hcM5!nK`(&>v z=mNJOH=JuWzCyK#n+}d~e4#UjRsHZ@F}d6C;s__KA3*ZpNT@!Btg2625{{qP*}eU1 zq0kC%CK0f|wphF=aXRaqddU79Xn@F@288{CO^5MQt3d^NAu$)3j8+uCobGM9TeGjz z7>`}^gkv$zEBc`YI0l&&i@iw#g}xB~DaA~evO5V6ZjTrVtjC%Zn)Ve#R7DSXBY5T5 z-JcGH?Df*6b`S0kRp{!4*{=je2`=Y$sNjS3=Ps{pI5+X3kRM`G5RcG$vA)QI*fVuYwOSkGLA)k&XS|c53mHId z;$rbuye&zUSQK+4KYAOt#WYG{Ud*8Yr*+@y4T_-(rnGjG$Y883U5>`bha_jejJsc! zjsEg%{gS$zGOuvIfJZo41 z68kt8BYu8socN}vt@uRuZSY<9-TY)D!ffy6X=r<${+8f9)MhrmPQ%LFTxLd=K|v!+v46RPnY{h7*RQJuxRW;tcc+KgCmZtfAphjrNs zo9xy9i1KYnh{oRo!B~{p0}Om#jlBT9f=siWOj&ASZx=+#n8Z~VGUVD}FUVG0qSY=Q zlG5c{`&4!ZaTCS=i}I1``Q2H|iym9v*kj5Qwv%R;b;hTrdvh+V?e@6e3N^&sd}_KG zT-g2{%BWyr+>)yta6nTPAStG*00%vbh**LWKD&e^>vN}-#LrGXv=y9*X=C$7ZesT7 z9QUYWPrTS@vt;F5%zsur^?3WeH1r~s72v1SzSvlcg+mk|+%_1)JJJuz_J)-51k<+- zSUJ)ycn8@R2gV4}sygjjt*UgfE45(j=2F{hwoa!u zOV3b^FaBK2{sKOpEa|Z=AEtNj8Be~;F8t;jpoNivoOG0ov*jRb0ej{c@mnGhV zADWJVNBDs@v$DwSruZRk9z3y-it>3v$~z7}{I^br^4sU|mu!mDKl=^Be)3RFJTWcP zM6J?jqJd6qWa-`-tWpQ4836&J#tTOUH~o^2t>!Kc*H&YQ7)Y91M^3qG3_CWOTUp`# ziJK$Xe;3~>0qh^CCC#6QO|vAy`KiBkG1{jY1*2;+52%F8{Dya(cDMT?Q7kYd=DP^T z(*%SovSH(*Qxx0D9V#c{m!zAo;iWJPFJCD&FMH#jcyY3KohNa!Q^|QRsk-F$e+f5- z*mUVtXg?K#qyte!QiNEP*Ah#bv=Hb5Nwwa@1w3)uTp3mzl53kI30V&2WV&c#ij?a} zm*^TJU5ur*-QN6@F(QhaYZU3AlzQyzNYsAnqW?&iirMSHkYW1Y&|bsz&Bv#~O((w( z4VF4D^Jw5=-N8#>wZRLIWja|ys2;h_q#265KRtf)pi2+&2F}qV;L;=H(j#0zkK3I( zTzVYZejIwdOk$26zTl>3k4q0(2tJk`WpofZ>DJ)!Yg*K?B)Qe>AI>L<^B^c??aNOotN)TlIvF;OOmUdG)Th!IfN?$HjID46sd_QaU7;HUmTb- zV^C~RGdZzP0tl52(L8Pl)h3D0A8C(a2duO|&xBSh!@+Bzm>@CF z_^prWjO|D!QI00k6d_Mpc1n~eYmc!!D_a^qCX=zUWM)}>n9Q=fq10-W6PhN`yrl?) z+3I@dPc=#rXbQ8P1>9lgn+zDvE`@Ve8p8wl>pO6FK}+tEmh?xlD~mxwvWR!iE_u8? z3aNGSFN%jOqR8t`79PU1jG&DVNB5Et>ug`phH;S5T5K%U^N5G4Hnb>kjvM(5pZ$_o z>UTfxHfcF)K1ZOUt~-#K#)h+vEtSSTMMFi237Mm!+{P}|MF!3haT>c+L&ab|0dfIV z^fNl}CD+RITAGPeiL~kMneTCKN4BTZG{}eVR%nl z@xrmKcut+Ka;W%HwCQO5od{CwmJpA;?TG?uyx4%o?vU z_EFv$ZGXw4r$E zXt=>R1~;fIA8rWO2_RRLX*Dvx!gWn6U_XI58%rt>hkR4P;;YhgIbBE#Nw-9XTTD4E zrkuHDsiHiWWsUVO%6q_`L^UWM`K@uz6N8W?_C=rt@q9UkH#+YS2hPg$CtS3|UrS`* zdgh_lo58s~0qf7QJXY@;{DW@+T?j1t%th;MXUTD=?PT)Ccc_yYgNE|sP@g9 ziqmWAlCKWnkU++KGb$$3DV_Ft)Jxm8*L)^qT&{Z$H1{OmZ*IsR#KrrLj>k!#dYx*;kN zwQ188#JLVTVR)^b5|)>LsVgEJMH%7F@S3d!}9@<(4rkQM(Z7EOmo;Ky)> z%5M$>%d*NFi}7Nyzk$&2lteaK4AHj*39^M0!EJoS#tH>4V-Mv~5=8t5``_RW&k!FI z)r$oi!zNBIlZjeHFJu>Q-T@|=owz2|Pys3dMa2EG*hfu7F!8gPd@b_N2Oi66n*zOO zjUqqTR$m~tVJ@+rpZeN}-&*7!{JqcnU+LZutFPy1ds;Y?2(IbzwcE=+D}07#8n7-W z(Yv?yZ;9V#*7^Y_V*eA9aBkQf;P~yZM#h&(jsuII)M4+^3BKVnTvQZBuEXZ^dKYK| zdrlg`KbJ->o-Aiq*`KZ|^4LFpevHTVzwPzdU%7j%$DYV>rS>VmA#MJbCV1?*@^gj! zH1XqP4Q|@b@rW)N0a2{(0<%cvP-az`y}eGD#n{h8zDU|DnnvJ6=lPfQ@=fk}#x%is z?)m$p-oG;H`Ii{?^S?i)yarP~g8&L7V-Xc&ZpAz*V-S5p2O)v%)NABR*Ny3ezu(rL z|Gl(F#}}z4Tjn9%aV4Tj+shtGsj2EylGE>^PRWx0eq+~ryeIGNrai~nx2YezYx%b+ zjtk4@o$L=3`UC`qSznMkazb{;8Vx&;RhK_tHM1dL_5Vis*s~6W#WYpxnX2 zao?8!#QVMf@CUqa$-Nih;O~3v735WieJ0U5JM8QEg$%|DBlVA!w=w%={3w!g-cCM& zT>lojwu&q_pVxXrx5FrSwu1d~5D0L)$? zbp~`bT>0UH>Z|;}t8dX~kEyRpP*gLjeKVweb+qr{&nvx0y`C?xW4!+MabGW!*E0R- zHLtlbBB|1;5@UtuF)HRW6MQZbJ|PA`YR{b_8$U2$O;iV!ITOyILAlMT7p=3Pp#4 zP-)nTigV=l>6_|;wCPkXe}3XyUajbty;>ikKjdCKYF+?Y#6-@VVV8eOR$o{&5>zRg zK$a0qNu4T?GWAtT4bz?XW#}k(fQ%ZA;=)+UQxhUMWE%`go1r%lZFQsy#Tp z!-#Ln5ustYS?3y^_VtmPl$|YE+bHxLQgo`-|_!X)@&-kNk*$*C&{$=YFGm|aB~ z*J-~oPYP!~=&EXpXzAt54+IniBHbrAktZf7W%iZL`*!=vXQj4sPvgA*U z5;37IHqZX2W!mv{QIID1@l(-DA-kyl6>|po+h$0M3-u%6xA%Kb%Vj_b*uQT$HZyfe ze$lIz%@A;WLwyGxhCOnYlkGe~yZ-1dZWw09E@d1P8Cvri(b7k6DaZ=1qJaegV*=xflTRQOZ-g9KAH zg=-^CA_Jf_QMmPyk4tUF5aIBJaPs@`_uo{x&*$$#_|q4D0Q}dO4-EYGED-p|<-TplhdFAN(a3yRg}|7KLGxhssz6GhX3@Bd;t7M%k={T|Lcg~ z4*L_dB8z_o{C($B=Ut+J%QlgGz#aUL?l1Bzb{XBeudbrHBp>O(@GSgrx56Xh?JTMu zyUysaOIHYi;6Rb*6);e@T13;C-0A)KfbCpkDfp7YdwB` zctYoYAp=fMI0J8f{Snii95ao2?>SC>8DPzRd^R)Gu8JjOuRZ%}GHWAKU#ML*KZcv1 z{p%J74~dVbn+e9zQ)X8iSfSg8S#w2vXzF*IR6@>l*nNLsac-{cR7usxFjA_au>ikk zX7M{AX0O&&UtbophRn4682iIrGX)&S{*c#y#XKQ@NQQ)#%qPdoU+TW33Y|Z)e*)i? z4va=zu#TB91{$3VF7FE$j?P|GKvP+7XS%-&EdFU37G zxMZ5N&U>@o3UBJFtg&~wDECEZ;nwm|!2gpvl2$#+)9 zd3xoOq>DSD)f2|Sa}#zQnNNiF%U;w>!ejp#ablv2HPQuxn@%D9P-ApVJg_2QzdRn` z#Q4m}QHoE@br*@#p*TlVSRAL8*dwwiiJXhsKl-LF#70zwN}P(_?e||Ig}RaJY}`Xx z$9z^g5?wLI{sb$WG3Zh$f1U02HsqV0~nwW@di@A3-;HNl8yqk`zDCDx}5{=D%K1j+n)*mBr^TF5r$BwUuR0@wCUk5bx*!*t!_a5iH zat!*AM7U#GDeyZpCqcu1sF-kV%Pu~T15cxat}MRiJNimTw|}e*ITDCV`!OOYjIyze zRQi!Qf}!M#EL?Qoc{MW&`}5qpa_oyU)ujtRlSrx=>!fU`OzB86yjffWVV6RIb8PzTesV}s?-jEsYk_ejX` zJ)|#-GH<@{DS7jl_VI?eA-s87-t5;mw!E=2p!@^9%zVnQ@k#>vZtc=+no`AUvU}c^abl?`Y$^Mi6$XSj(7X}~LSowQ` zKt?x}a@l?q**~;>Kz>);)Lqj(+Q%7|LD&n+Z10zk-u#^>G?|RAas4BIe(pU*z7O~} z#_RJH8f1V+7vS*vfX&Kc<{V6Cc`b8dO&eBUPRDGn7GC3cOqK@_!kb%l^#-O={W811 z;$1lq^XG7hX+hQJ^2Rc)$vFq}F+ziN*h^uMIFzJd=8j^T?nK7sb=k;h4vfOCux60@-lpKlf5+_iFb6aKq_GsW$#h0 zO^}1?J#OC?CUf(jr}{!v3y{e6oK#Fc@dKg|?j%BIovuOVVs}Y?;ZI&qNa7J*jAMbt zw(Q-RoJe-dFF3zs4?q|sj6&Rw7Uh$i_{qX|so<}twEL%7{CV=3B{QemAtCa}C80s; zbdZ{Bv4NMpCZgF7LGc`@(j487b0G4)jTHW7uy^b_uBoOYclLAL+H~}Lw{cw_{8iII zdAU_z+RMLpJ2xGYyl*)NY>$jbx_i=12h&aaaFl^KW0NrYi7RGw-@%97+xf{d3r#K9 zH6wFlLa?WAY!yB5+K+fWnIGOETx)HlQ0rh@W{oeiW>)5s4*R;TUTi2+?Qf`7hbk%} zvM~PzdHKZ=mi(rmykg$oY>Jtu#Z->+7bz_7H|1VOXJVkhW|S1541f%SoJEOA#tezF z0+aoV<$%810s56HQAJTh3cOQB!+)(?U-|LstIVrUCl7h`eE(+Cs`XkAv4)&_3fnW0 z@(b|`*jkia^N{q1q$%$FQN`u0uaB98>5SQ*$gNa;S-L(D8?N_(AJ1^TU%H*WvGLdq z8^_4Q6IaB#r*kr4_j?M%AI}hB*siwSJkD13&GwhYI52dkd;Li~``T1m-3|z*1N#GUa6`XYP-#YytIVDvk*bQFTq2zsXoj;S% z^XKZykPik>=U2|(3+z9s!99P^l^2uo<6x-tOJu>jz#9OnRLGWxWb+Lr2gKjSx4$`; zztg_Hf|F?uc5i&sgL<^S(&y>EQ*Q_5Hu9FFcAW1+w}=(fBam-pZ2Lch0n>vMzNkgw zHA4To&$wL3ZcvHX6nNw|=|T17sWIEdT`_q*k+xrAiE5CPI?{36jr~g%0Qlk*HZ!4Z2iTkI2Jh(}s!q&bUO#T~J>o*m@ZSU;f^#yhg z4)F|7VwLzJx9KKdti5x^lZ6AOtGh?n*#FI+x?<+(1Y^!Zu2(XThuH~ z+B6kUzN>2AU2{Uk;f~G)_P4d-z@lu25&jh%ggCQ2-j2~Gw9Vhop&;8%?teCZ`Np^E z*PpQQtxs<72X{Q49E^;3xo&)065rOuXOlZM@!8rZ;{N1Y=O<3D8}Zh)%t51iaKy*& z2^-M>oH&{&@>xD~J6#)`%wg_P!1jpc2sy%Wy!~U zBVPP9K~j9m0ya;*sl5w&CKkw-jmgKtwR_j^BLoc_W=l*!noq76PgfyMP3FXFL|>z? z2IS+~;rQk0z=gGgi5fN>%dEPRQGZNI;^XN8(N$OtiCjeE0yr?1rG4MDd^h7)n0w7F zCdex_o~e7@y~WM6fp8zqQA0k_?d zeOr@m49VMkZd;grduqCojm(AIcA0r=Os7gxpm)dq4HXHSOB3+N&-Y+9_Z~!w}^?a)#Z;F zXB0E+Zk=(7FSvvIoFQ)U*Z~Sa8jx95Sj8`xj*k_LBjK06R2H>YH{rf8BN}UdX`%QB zV*%(!VrmW^IWBlWYpRV$XRZIbz?q&|9Ncl$SnqCZg|qPCZ%r*JPrg$E)FlXD1NE{T z)H;-uk_TjW%@juqj8$$PvtbFr9@anuuCprbodJz1>M;b8_JRD))pj4H#;0rRA;u=dG% zp0gxr!!N zNt2&xR0+;B8oEHFawQVKR}xV6!ripGcr6|;lO|e(*wv#cO>s2^#nn(;jTCpYTU?zf zu1bsJ_n6{tVr5UF81O-fj$aOp6Y~ltk_uJhfKKssQv8S9;vHyt4NLKxExtsd4Vr3o z{eEFdVMBN&?0g)gWUG0&A?N`Yby|wF#C*I&uu-VH3rRXw)D+NPgDm`u@y2HvMYQ`) z<$-qlFT2$RGG-rPlL$8PV#-c;lqVk&O|2;18wq}QFg1r+tysJ3d~6Hr6iniiuSd+6FQ`E&%*QpJ_@#WXhY!;I z(cOTsJUGeR#7Os0xF)>Fn-0~+cq@?F|ME?piT7nT@&xW@(x31KsX1-nL&L!b!%dN! zh@!uFm7 z+)C?xX(35Cc_Z%9;>c1(yBA`!cu}`|1xBU}_eX_V@(-1zORi3SWR0u|v4YUmD5!3X z$dBN=E)v|)Qk)zvNe=updE~s{mbnZ&7~&2dQA6BrE*<@DPvKDZ9i4dx_`;GiV2w@@*|++PGFb&DhrBbz4Ge-L{so$>Cz+ zSp((q+jKu~*uixNRnfWb;=*^@?tV>-=|&%$Si?>M>l~!8$P|yR<8Qvb%6Zuzy_ft> zW+_TD&$naQ_kv;Py&~H|x|HPX&yc!_&!ugy4(=#vaY(xPd?ZsgE)d0Fh~3Qj7BZrD z*mG`F{Ieds&G6q{bgnjs2F3J32~hN)i+JzHG@$Le8O%E6~E8?JecJnOT<^--+_Ko#_qS(bt-ml=`j__p`{&jpP^X0r8*=FUl#-xg@ z20RsfRs-f7zts@nJR_@tO+6v2fwPUAMIMUx4TDdl3J2oq#cwV~qboR8fqJBDrX|6? zw-f+51cKsoD@LyU<3oM#>IbK-D0TFS-N-!*)#7>5>BKXWFR)D%18TE^+N_|mCk#-V z71U+{)f&tW({6E6*g!(I`i##jZ0LW|6y+yrKYHpUgU|5@2VdqKQFtAkI_-@)?QIqO zauiWr-`m=}nq1r;iFuePw>0KqB4T15vb|Pg9%9?A57jn=*r{6|u5Ad%pK^)j)IZ+T z@5Q|2zRBt%YM;*1J5>0AlYc_?ec%J$`$oMt^z@tdCC2_(ngy`z@0m~^&|ldAG=cqQ z{1W=x;H%BlCuf!ti7VdVpy%TfK}#mGR+}7>=uO3ZR-539JHOQyFn0l~EoAOO)+fSb z_oiB14s!54(J4@l7V)RVQPcT%eExH(^Nf z)?8`zc&jMY;wLiL$aJg6mu?9WqN~JO>+>EOnQZk0245}ddn|J%G0k4}5OyQoj3~ItiPf90+*_m(T~;gO_D|r~T@YA!nSLt&dH<^rBGh zP<*1rzBAQqAFF*c@dmo6FtzM2&8A~qc|)8Sa=4Tt;b&)mWXSCMOEm=8C297{rLOQf zd*s+9X|o*1206K;8nQl$qx=IZi{+UX=oXmr)|g4^zKk|MdUzU3r| zKBxiLgWFOjsZZ2kH}4HS)Y*5$q?o|$S4)bA;n~f3L%XDi89bY-UQ)z#l>O#HNh!@w zIUOTe-4e6LDElJ`w!`@R>V?K_A+2D<=AlaAX*G{VNic#4kL4HuV|L^xqFhJ-pcz6q za^CIabeMsQ%3FdhQnehe$|xi27i(K7h**Pn(kT01zpVpxYO_3zp7H2>hVxfuxRV*Q zBb~_v*e}h}VS+<%ZwfPw38$fLTjpM&CuA$NFFHZJV_2l~TPZ18&RrB*wb>T&j%#*0hCMu$sM9}%c z_{T3Wx|G;$FTplS@+{u+CgQxw(L(MD_q&=vD?sTd5YYpII{Tdo>UBo<6hdP_H$^@p@rJMdx_%EhWg5B;fWCOXu$3!F9k2|4 zn5yqRnbjh5J2t9N5by68e}ozhG1X!JZjU;60qEH{xh?x4B<-}n&0=@b38^i<3a4qE zm25YSB#(??q40<|F;&_dllU30KcHVz#F?5#d@#+Aj|PBC{ue5ZuLF(T$tzN8XuLZ2 z3^=a}@hk07krBoQdpQK*^W=s|5y!c1=%#$du8f!`7!R@azZ4KeC6X?pf{ANUwinB( z;r03Q<^~a9^;ubS!};=Ex!(1QZuL!UG9~#s+o!RGK z4Cr&Af2Ck6YBk5S>N=lbU5?(nx2Ovm}RO_AiNbz#Z{oHUk*Wq|M^2Kg$jf3&T3n zX~#9FPZS-_o9c}LS44^a&f5x1E2=S3p=LA}D zlJGjaw$9y_VZI7WQUI{ZVvh6xJ^_~>24^`V%E?@1e@Lv3O-$A$6u>yh?9+887KL~= z@iW4%|iI(x`;1v zc5>Z1PrPi&_9#e{{S)#%6#S=;$o>f_N_+rBIDJ8~TvnVoMb=DmAKsAruup}D#Db5% zKzo|~aIsGI%wk;kAs;sBRyd&h`}|}VSmk`7_~jfF`l(lBIHIz|w~Wy0zT>MQ&}Jmc zFO){;Q7Kc8k2n*#M{us=n}Pd;vdUnc*DmS1`=ZgfUD1-Se(JFARY#YwCG)rl7(|15Z;pFIz z%~Uq1h&LN{EUP~%KBo+?vU0%2f^TVT8!UxB36g8`PMAYH%Y-=&a7FJF^HC9Fm|RN; zR6mw05fAYYRsL%Z^$%QMGIe18K6r+MnLeF8n2EC^iaD5xlOvjaiJ71jC$5LuwWFdY zt|`r|X~iCd1~c^q29jxLZPr2j)eWh4MPrD^ zDmW#UMWB@X=~Hv%&N^PXe|bcyZOWRl)5y#h5~m>nCA3dufyCNlNq`^w4=f4MHSq;C zxODWRTh0}Z6O6lBu8x2B6UOX|{z`xXB+x(n7FoJ>{&4dw(BrXd5lES}czVs($4YtB zA$hntrYTQgCb4c63r_lL@@r<*DSv8mYM#$wijyYG$a)uVhc}CWmw$GVCf?2M@Md`> z|Lg;k~}|Y1UjPyu##L%WrkjW%S7o`$xKhBYpj3@Erg_ z_G*JD`zQCSM(2R2_&xqO^1bZ^<47?zk7dF$XBKq^tU0q57g}yif1y1(AHj{Rz6%#J z2`g9M%}pKtOe^cx$z3E1t(osp9&&zV-&U|-6wMeKkuI&VSmQYGzdu6uP zD>{;y1vf2Bvl~t$rxU)!9A@81IMvdKsyTSzv8O$=CT4%w*=tcvw=ZQ2|Sr`|RTp!DuE8lR1 zq;zGWmgB?fmuA1Ol*jJu+tcN7RrYbBdLArEZ5FfiVyr~wu24PA#ru{(Q8)Rm2k!(z zB6L@ptvbPewn)q2mH|_mSz1m$B4v6K7o?lewQxd7ZyDe@W-sQ9W;e}MjoFgXLb6DA zmQOop8|d{nV8f~X_4=3jva!%H_-@L(}G=2bq@dt_Wz5?zX;ep$LdDuK#kT#xA0 z0snjfzd!0HhrE-V`Hh%p8j)t2)8>LGDkz7 zV12b5?XNQ3Fb0WPm9CeIh`pMa{g)qmJsg`Q8ZtlFQZ_!M`c<>&SFJQg^eZDSlq&92 zix#iFm=+&oibqcrtCYc}6sxPT4mAz_OkVplKN5v2oGOv8V)iZu@8m9g7DsU0;3R`v zR8e)*taDBmsVjsYk`-!Z3r^TL35T|&3#7@v*syrHc!HB!{7$qq`!^h_C`;2DSmJHz zN**ALTC03I+@i|ZaEl7U;g!dyYKjWbH}vn3J`+vxm|T4p3KWi*#7dOZ<0p zC_0!Q-s0*2s5Dz-OhCnHMhV)mMGTYj5Rr$Fc_@~9F&kvRs>=VWjt8rebMQu)e~rE& z7N3w+l9H$@Eh2`*GlTI??n36kZz#(gJ`%G(zh6c!W?;ch*Gr)-t*PeLOwTNP%yS%^ z)I2NG6SF)2Z48n9*g-qro~5_*4F!R%r3*F{Y634N0Z9?Jr+?;Tsp!&n_tDz$P-b>=}Kr~N%KNPbOeuIhS96>LNC;myY-w4&XNbJV|O zfMNh)v$?L^vd4Kg*OgoLInU<0(xJ)*9kC_9Aa8oJwc_xWsF-atb9katb0GV%g za7yv!O8FqOLyPaYW``B*_k8_fRe2c$BOUgCN=*{~16kzM^6k>calg~GQ(-(Doqo5X_}0Q8#QuQED}wYt zaWP^-NKOKs^hb#;f<%4#$LzS%=`KmLB+0dNc;AwKUOIA`^O~KXv8)l~)x$bhP$Nhk z?4d@G;K^BPIFlbPeFp-Rn&U@VLJ@upbM3Tro^yP5ln-IYpPVFxN*RV76RY#N&H3o7 zxsUR>t-ZrOKLXA73e8_gl>At2PN$}||HXv15=HUf_6uG@=nMhV)V6kKR_{3?tqh5! zM|!X}^1NJC+DO+vS+IUGJH!$S>nCB>Pl)hyQ>nXt!r;!U05NvNX~Kw6J?t8F1Ox+7 zIi%MOt74$!cqvJepJ)tT8002zy@Qzmxw;Arp;el;upq5Q)0P&b)!7Z4%|m6XN(d9` zjz4xB3iF{XjRe(YtbDHo>k_AY6df@hsEvu`6uF+}7@=+xzRH1^l@tMWZ=UmrONFD7}iF8k!;o zr|O~P24=b+vRY)O8;sd6d`pi4C@#zt+)4lSva6I1-B8oK;w*I@w0p0hVg6!B9431zT&U+yDNULw(6gQB(0u zP=UBl@fPA~ufbqDXNKM?Vgr#Eo%(G0n^HO$3Ooskm@P6VqZ2thqCUFm@!s>(Et%Tg zH=Qd)deUESz6weK%{5FPXN@^R!Tcthr@uQgK@%qh#w2%&axR6MqHa9buuaze7fkxl;{0P+Vdbz&#=fPXPK-0;n`>%o)`1c%Yo?a9$g^^Ay*9{L{FXop) zO=I^Vr>WuzAk5h!P2I!I(@l#N)f(eBG=$r1C4T|i8&o%Ru|YB4<#TE7 zT6SQ;_yFAX3^hp7YWAV;zDfu-$0gW`DfT&!DixeUbLvGNKeQ@8NY@E4EKOGBHBKC! zKkYIE)U7hOmCdR>62CZRe+35P{7voKYzCh-%0L&rL&koN%*!*-VQk5Z>}`Nhf1Hr@ zw91k2j!H0)?(9-uu*u0mUvj4}`Dfpn*O@qDsWGzgbkjqz0zUF}Q%Sy5M8j)B(4*0{ zFtV>~k{O>&kybWExRoUM$1y z_5;6GxpwSy(Tq={aCPKs$KndQLUmSs>7dJlVS>4dWWM0r(&MqBxx-H${mPYoGM-7B zQmsVQq@D7tWr=XFLssOqT@Zj`PxlW$B#0NZ@xuf z5tDcjd9!P$)6Kyy^~p?FH4i$AaV1|&N^^muz${6jagK@jQh6-Ret&^HMzU|ul*jVy zW2nIe`?i^?Q;H$^wjAA1^nKp0OB8`MCj7h+mp&FCGKJ!LQ0@*Kg;X+^6 zMeLLDjMAo~kBL>wtojy2;>iuW4uFQ;N6~|QqNC_hNUs9dT*I#}eVtcAYxOfobg)a$ zp1lvll^7!qI`iL!FBVA~bR=h_P3f#yyN5HI&d$1>+4M?x)~&PYQP%6x{1iF{enIIUb&;qTWZZe@`-kT;cf zR`(a{>i#088B!9X-J|1lCdGrhx_=o|(uof;DDT5>Eo^CXUQw}14Ac8C4DOwJHFW8~CR(VGI7 zdPwd)J7)i8H`#Vm3q_WpeM;6FoUF0~piT4(*_=??p5YXXL;xR)k%_DT0YO{4Spkv- zT@LY@!hSN;3MSTJcGjLjX5uMMRz4LZ(oIVq(fOOq*;_#es>#n^R56u)SQE^wO-|6Z zPtutieLJ}6RwyaUmqV*m8yagfngK97Ht3v0QI4!x36SNiuZ`81l9d8(86NuN`7X|D zPMn#<$Bk0XfS}zzbFau*a#p!|XZEPMN@x05|FZPqsGjRf`SS=pM#Uq|lpi*QQ3n_e zJE&o)fNB#y;&qJ#9NZ|5WZk>QDfDi90Ft|iEd~~Ze&*b(e|}UEC6GImsvVSNrdyr# z;j82{m^v6r4~)IKB+FlY2gDHIP63QHM44C!028Y|bBsSqj$_4o0>@6#5~V1YW95Z# z?8%FTU!Bhm6idbW8Jqi^NY*850y*YQoGNP?d0Bp(%OZ&PBSQ0?R&MvX;;X=E1(8uA zM?t5*GXR+ogs>oKEi#%KONp%4Ic5@PRfE&w&UjX^D;pP8e2aQ4hlZDPRoBDmG8M1M z`ZbVa)*i`0tfC0*#cxH7c6<|qJKLVu2{z_>H4sv+OLf*)oViLn-Qfbyoc}lbU#%59Hh+@6;9e9y`nWNucp1`+w>7rwC7SSt`&>#IP7Zw|&qe{pD zIUM5d=n)cy$OpKJaquYD5A-jg*XYX4YH>07GuS=Uz)pmvGy&g`FML$JNviQdD0LTL z;NEik_ImOD5L_mAmEu`4E9X~&VVO0Lm_2x*>CIZu?Nus(WFPgi#OGNk(q-dnIdJ<* zyGYb(T?Uz+++|MNRurQmpk?IMTWQal>(q-+Xc_e`H1!5x1}arG6C%{6qN$8 zoIw&*kCSppxfW6aH~lN*AlF$5In5_j5fV7#VB!2uCW_NVEt%12Pwv+~iXb};ePjMl zw0%p&&s1j5&w9<&hlWY4f2y?e%sElePyh8>y2zZ&Dr&4t1H4v3u1@i#~m{=S2Y z@OOU{EspgcxSG_vxL+Xm>AMEFCFNc&!r^yv1WQ-|Au5m;UInKZZvZ@Rp(ySYMKYHa#2cAIG3H&z`^(OBi}#%wF{g z{fda8fy{Npw_7nrHsXqrMTQMRDy@$$gp;ovyLSouK>N?|1M>XnQYmY)+yeuZV9UDp zh?fGnzKjiz`P;R&wbP3+X5kUuBhp@dg|vfQU*qo(>HC0py`D*6GqpO%(=y$Cd`)x) z_Y5?^z$}AB?;NKg9YV$pf8to3w=Qxx?s=0+I8%TPHD$Rjxa}?{DXaAcx1qP{S6R(B zxb0>qDXaYkx2-fuURPTVZd+th8b!W4zWP@O{CRMe6J+BbXcPr~8)72w*09~qbI>i1(RO8%RgTz4x$Y^{V4NgxVP7d2J;H~G&Ck&b}SXsqx zcq2j&DNT3z1e&SOPCYbjO7G`*8BY5+yu{=2KFW(|Ixv_V^s|y^z?DHRA6#8g1YXDo zypt7P+&eBjxLtZxu<@WcGbUdz9q|Ho11+eXvi?7%LV?0+Jc2TZoX_N#=>@f0$hCT8bxy(t*<16XSU^tIOanh5N zd=`DhNy=l;4XMbzxFek_o9oI0|+RK_6I6*zA8owtxG3 z$Ohn}$u=vGZ1_mwO4R#Ffg84>S6CVPL#{7mp`{;mF>MD(Rwl$-Lp#Xola$XO4*g=h z@Y!mgaFzCn2SnbbePUZhZ!<@)MD4z#6FopKBHLx2bAUo52Zjv9dfXT?zRIw})4Bx= zZQo#uk?xPm$kfi`HXhO55bhBsGExO=s@vcdDbt642h3)t$kbCR?>*eHQa zN@*FP0JHrR*%fI@4wcrPw>}BXb#QQ*)o?WB#igQA_KFr4Nlz^q_MIfSHobJG^wOxb zh?8Z6O!<#hd^P?KHz%=M|8bo6h*>TZ=n&{}#u+9Q2k6QWUw4FLo_v?%c%t?f-X6^pBd0mvPJPV*dgKId9U+S>hbrZ% za?FsO7-8e{W>0;5(`&smv!XKXW4qHzPyK9YGcS~$SDLP~Nw|Wa4GsMC)-iPbszI9E zN~il(ti1N=^-qtCmtxHhSE{`oG&x%6SKpe57AlGo`+1JLzFlZGWY{29WO<7-eH*1I={Ii7oQjm3^#{$EDeiKO&Fa*|(?47tqF=kuUop?d{>7dnSU=>t2d<0R_w!n$q?yagUCh3dG&G*9 zEm!pQ_sU;=ocxjF<=1+}<(&GRnVfxzli9!{m8;9*-<|(KSVMA+%73SFOd<+-*A#>vgtBQ@)6Av z4|hM$2i@zbt@{qC@>e2~AJLq=l*LN(@|W(*%!7g;OCw8Ve$^=%ByO|t;{j~bdU*2p zxi09KddNyjQ!+^@u5((|+6$1gGKXVSy~; zuY#L64##8tyA+j{Rf0FICeJgrwcFbB%zg&7(2vjM&6_{4ENRl|hS+>5RTg;QDNuiB-Tct+IYoAzidf(sVTaFGiIY*`>A3f^cmjJa8 z*m_7HsePTm01QFXl7jExmhZ@$CI}cqBPVWxp`1U}9~GoHq&xNBjOBoJpuSy_K7=xU z$=a#Td_mEXo_?=Ie6*sqlVvJe8nZW{#8^Qv!#S>5-25W*Lm`8+Y-;?JkdP^ZQQ)db z3N})TwUojr1CCRx^meDeCwCZHmv&1)l{{LXD7*qQblA580A4532B`O)nOeWumr-_!nMsN>#Z9QO)&2!1T;_r#>s8eLaW&l5UXsRM=U6@*b&u zXZ4thcc?OA=?)dAf>V|7#fg)wqWn4%-;ywh@eeiCj;xX32jP*QcCXDM_3r#rmD+Y=l>V+~#<@+6dALjw*UTF{WL zW{J+@(YB<07;T^mQ1A`2GU5q%(KWqq(FWL6oVnl-z5qr5ltn~- zq$VJA;OjK70h*9YstDx3OHSWj1bjVXmpI@Brarr%0}u^{52bwyBd{ub-nYF!a{$_% zoL00}A^KDIJAiIjaTG+07cIGJh#!S$w7lv3|GSL%2b%T1GUDW1AH`lJ^GMJBSARf| zAdwR18*zDze7IWd5yAf_@_}{kJPFaJzA_T16T52nH?mxEN50&oGnbnFXyL@Mp7Cnx zv&ylDt+e*aH>}G0l7B;-EzrZ2r7y!#k1mopnZmtuM|Z!F_h9W|`rTn+Tx+8iQg(0h zouajY_6)NQBZ?+8)xN%FqLeW5bFgL&Q65)XAV(qTKj}#3JR!EIfA^?}UjMLaR+%q~ za3r4kzB7ksY!Tt(amKs^`}4oAJ6iEpbqjLJ)5%m`8uCnJSyU#6*MS|86N0jcRIH~1 zek1w267QbDx4kl9r3JxFTJPej;5`d5X!e!|?^(|lgvHg~-bxm~sy1Hl^Q5oyv*%=- zH5j~Sr}s!Yj0C9QUQpGVNxoIm^WjW1y{@q+v~A4Rl96+kTVs}|N=8m+##SMb8})1;L0PnH0MADy_X<7COVhespwM&5hE) zh`Sy?$$BDq4+E~1sIr=X{c!M}VQ-?^+f?cOi+7ObhpllH=96?=Ci%9)`qeuG)`?sF z0_()(DL=4I?2ib4tgzR2HA&QE!3VDJrC0ca4>S@CUfmm>D^bS?RgprOfCHnU5_X1pBW(DnoGqHS#K7daZA6!sd%opbqOe z0`|aSjrCkBIIKah2yVGjvBw^~fg~X(_)6d}vogU4i1#Z^8N9MS{3c$dTZ@}##-{`yXwI}V$$oS{)(V7(^jNaDdf!YwD&&Ylwx0Wi9}$YL z&y1gD=zJ=OZ}ii5#>*3_|) zv(uhSeroi-D{ra3%xbR--t!EtjS{N+BdNy9wD04o#um0$QaQq&fA)@BbbWbv>?@Lq zf5Uh>P7Xy@74g*p?halncYo!s>Snn+!ri{l$lX!y25yi$52e*{w_OU)8%mTZlb4p0 z%6vyStb6+{Ovxm{zW>YWz%o3xj;E?mOF1*LcdgvrcD$WP{3Skdxz$pYp2v9B@a~+%8?&t^ zWw3hE2zs;yI<`#rMoOIVC^ue}#+xX<%=$0OwwlYWag0lpimK)9sH_-_hfRN3Zp|^p zU-51$akeOmapvd1EE2L*I9bM-5F)!=$C;k*xK$gOk!#;6GCs&CAC}%95vjdQx~KHo zjq4c0*ZJd(R>%qhO~n(*w<5h|nYC4e_Lvn#ZSC_o28lKHO8cqv{IGXq38cFGqm%r5cWYBJtPR*07-9ZWj*e2ck-t_H4X?nm*|#;zVhDjpen*R}3bPgnBvX zwMrdYI8vd!jmoH3>s#p5*P^&WPoe3hg0Jz4udP{pO*Z8#x_qfCjjC_V@mQlg_leHIC zgUhA_?|H1^8E;FachD3&w+f9!i;dZ{O|ile&9f6fgOXW}n5i5g3A?3A0&eG2%$&YJ z_#>nJ(Ln4^!A(T}5?A7KimY~Z1*0I8ZL9aCKSvPr=#>6}c#pNfV|}#ZSJN|z$@7p` zM7EFFJAQ9Q!A}Msm|5jL9DHCvGzoVo-a9zr_wLzuKn&=b|8!_$mr|YD>PaE7kZapJv$}^}bV}7wU zmYG9)g;k|Li@pFuw9FKk6F-11qFjoy5H3^}`~{fEDGS`?>-$Ne`21*@k#50FYR+QB z6WCmRT2(r>gLq6RKil?hE}IfEO>4OxtUkE1kMmwVr!b%TeW2|l>rkaTaw z+wt;T`3}7wUG5z!AUDLGo7hLgs{|hDyR(sMRoY9JXL~6mktvv*kq`k$l)hHZRup*A zVw+Wcb(t<7-qp(yQNYOcPMe%SgLPvU~K}={XQx_=FYt>lo1X83! zb|J}`iRox?I)Zav3?bOwwj!b_t|4~lq0z>32LS*`2u78Z4iiMBi zXDA85a<5SLjW&)^m<}u++Pt-oA-7kX~L6&`}QIi^5 zW;i+;e4wSwnp&~u2t7YLBxR+;*4dsWYU;hZ|M5gj+EKBmwsU%K6TPGipvvZTz=>7j zAM1ULyGmT62wv4wPN}6-o#|nd`k}M@9s%P!^8jN4i-495yN5?knG<|qup_p>{_cxr zR`6#^6dxBca7L{ut+!bnV<8~JaGSfWbBqo|SZotjAj*`RHB^EJc=@Auju4y>dW;Il4Y#i@k%xb8ljhWT7 zt%0~XnbkDyG*gRO#sNOSp4_!j`$ugw^kl_0y(?@zksS7`z1BLjV#$$hEl0ODfmMu0 zx61Nv?c(X{KfQ6o(M)0?=kQF`1~yk!JRyhcM7)D-%+Xj(vYH8*hSEpv&81Yr5!x~P zTM=!fW|?~gA+E+M?+}u~%>!cAmap)PTu8P31Bojto~WHOy|+=bh<@8#h5o9D9Lm*U z%9omAb`5n%qxQv2ql9`iYUGre4EF6%@8$o>>I2>p>AXt4U@MKzQqL>Yd%~ffHtyI; z^BXpFrZ#L5Ta5B&><)i734c?Q-)Nta%$lfmp?x_33eFD(ADB!0U%z#-CGNuEinrfq ztWJEP_Bo>0G1aJePPnggUI+7C^FOlLJNzdaRrXjZJ#@>Dz;V^lX^3C}lHdLJcR zTR9(Q)%?ZJ7QK_^!ug%dhkx+A;rzpVrCi@C z<5L!G7lAgbr1sJHJf#=?joOb3;Fs}Nc-G0AVWw&+s`kzfKalo2Oy`Zn{_@K=rx8ko@@b|uueV9)LDy?he+^v)9 zMVir_dryLeeKXrREA;7KXYD@TC*3}ge9YgPC9RwXXBC64IYQd^!q`KE@cKK!x{Xgq zlNAK|kaMd;)(ti6wevR5uRU_p`PQ7)iebb860NG!;B#1|8~9u;#9AHUc=tLjud3kC zFJTD|FO4q};V3;&&E?@vcYN0A+V%eUMbakbXeC0l#;OIT66rY1)}*u0BSnO+L5A%; zP2gtK{ke>|KQ*J7YtIpWL?KUng1TfcsrX?rLvIXOGb=NzVjY=Pt(33gi>`?J@AY%e zqIO$p!+KLTbFfrnjR2LD5=*_qOW0zImcxpm8$aP1*Tox;HDD7dN~l%Y+1Ofc)rs?InGBXNW{j-luI)k*tk^k5JGOl z$XM(7!QcC>xd+Y1kehkkEHafknZ(N=mub6`NrH+3p6sHa+y3=ZzG2^Q83OE555))5 zoTKTndXDzJYu=3Ek$Zi0NMzRBBYkg~SAXP@dwnHd64uFmZ<{wVN^`Go2Ib9OChC3f zn8p~mCilI=Yg%If^BS<`Yh#=S{Fs~@M3N@FqW!RynkkFx~9KA>|f0vqv zX^TtE5ouSa-=*1$^2(vv9&K{SCA5&xCG?Nv)!$3bWrVcNl1WjYB_|t5U}7&whMe=G z-MR1HlbnN)^P22;6O}#SgjM?=113YtiOMCKcpr%{i{Af0fS&6I_ni`tPxetM4RJyH ze@;U&s#HObWq$_^Wr;*ou4^0`u3|489xudlW=}tBZ1&MPNHJ!-$z35ni6#fjU8#{A zmRl7ZG*P6>rbmb>%g1psl|E%(zK0PtKenD|EQRsXWk8Z>ZK#C+A=|_Vm(Ruv9;$eV za+TL%xIL8VAuRT5r+~+nFcuPV%wbpHi*5ozd1y+^eo_*yi7v&tu@ZHh;XlJO_L<(DXhwH_ZCNd6pD|xju9VYtVZA8`Dues+7(+-v;Z^>%i`O|(wHH0wDtCJdXL)>DYCjgw7pn= z{rWpze<$c~Kz~or-zxoOIg{@%(%-52Tdltr>+i?(_Y(cB(cfwM`*HoP)!*s*i#VX1 z%jCCP{QtUl;kM9S;7_t$h%t2AUzZkz4)b>(?fDy5FV}JW1^GLXzti|Ti@y)^cRqhp z`J2Yy<@`1AH@IH>6f;n+~$%lM*sChX?ncOfll!X8$;rMPDdM8;cg z@K2?SQz64K4&;6VdE#s>YQOg!&rt*}<(=v2``r=hn}B&?%mhrkUKlWx&HmI=aBh{T zmL&V--u+`0ed%ag2KQi~p??_nGwZb}Tn6EH@+d<<560?_2QcVnEvGWrZ zIY5=A*3D87y;=euhpmnJ2Wn^?W2QcSs6k(c5K-Y_#0zcl#81IK5g+dyxDZH; z=Y>Sb@{BZ*xf&lkwr2kj^9B1c&qg}z;k^Xtr3d;`VX+Sp){7z%6;)(cMQQ~j;JCis1i>#YMi3{0W9myohGHmcn zggY4`I_yQr6qe5r_;}PyF64g86GrYQZwz?i$IG;v??z{u>|~-;yOd!BRCZaL9RkO! zEppfWzo~ow_^7Kp-#^I=VSvFIG}vhyHPu1Wf*K9BU_isKBwEBlV3KSRaF?Z#WtB=s zP!WhjfZ@Yfx7Y5rTkpNzz20rN>#lZdg>Ji+0Fr2}g0_}cZPB*&Lt`uUhXj8x_xXCC z&rA~h(f0ee|9q3j=QHPXe!kE9ywCf*&pGe&KEY>OesgjYn3clr>7=XQU5{FkOeSkC zK6~n{NbJtpg5_zNYMOX*w8DEW`|{=9?1$D7s}cRD@KkoYV8JLGRLn<%Vm=4XUX6J`V8Y_EDP3BaEm@;-II|~mBZ(NDD2_S=;@%*Y&Y_i^&-8Y2+ zcXo4jPeQm8!WwRi#CGi0WEW)6tm{ebM)be!d&h`gq92BvA@swSOt>-qxLt!di{bH= zLfR zHV@?@lj|-4#Q>?*-?{x4r=VJ)Qcx@d3iVjLw&6w1*o|JBz}_Bd=o(-O6aRGH2@CuW zQ8}>lS7yu%wY?$Od11f9juCpx)K=(TyDr=%ixsk9|F{|IFPEC{} z-PAFilMJuw0iW=no(WEAk~o{i-Pa&D(EP+t&ZZBv^rl$8CJ2on0g zke_3-9FjV?W3W+(%`7nuM` zD$)9}Y@9Hs{wYuxXH#_EWufv^=M zq%xt}wSsyCZfS^>?^18G<@Ilt#mmcMv+bN()zqwLFjJ4lVw`yKXr}h{tx{+%@6;^@ zlGStqyVe!#f9=;QkJ$w3-4cT*iIfXBb9qH1<=A$n5=~=)u~dh_;g{XAq=MKf56?Bo$_xO zDKbqosBA0`s;nYm1iuDoc0)9DyGh$rvvv?2RfZ1Jz5^#yyA2%|!TW@cs%Yli*Ru{C zXNc8IvgaFu!e8`SfQxIn=UP)zTd^#xjTY8|jI9?Iks(8OGTQU#T0;h+7FHt*Yr}<4 zr2KK@VMC2jp$+&cL3$QhAylDYa)==(gmeq<8tS|BUEY6*sN@#5Jzgo0tZ1X?iNcnR)ld|j=Y^3M`QN|l=9WxdJH)$AwN|9a|;kqyg?HWGY?t`1X7 zbudG@s5C=4QJSIbPsJX|%F3cPlC#C;E_~gZ_x2EM9qxzu1ZF~J^Pu6z$ohZrF2|VU zf1^Q$o()hJra5Gk5i6b;D){DD{zcR;JC4`=&h+3#pWxy(DObJS9s#BpN5w$Bp1O`7Sk z&%X5o$UwQKYVRNJ<-7aoShvoL=ePR2r?!SOqq)`Z&RNzw^Yhq}MSu(Y=R&)P5OBd|HO0ibwSF%8&5V_RRwJS0RbVoe zoRb$=iC)Vy+xb@$hxWv_E!Q+TyCFi2 z?#4U2v8^os*-ey|8N(^2V(WY9>i;^hfJLG=)MC3HyoR->*^lO$BHoRS*+)Yd=M-Id zGitKGc#GaH+`8);X`X3iaiMa5Q=+_oq4UpN5M+PXqVo8E9Zi?YXo`D{ zbJ^6vz-)GRh;x!KkZKV`CPMm1{bT*7ru;HY5!1c5H6 zF_l@wB?PGs$rt|L)zY{7B(~3EktH*UO)~#>66Tv)$P3N$(TiM9;|pH>AC_6zWkwt# z#1?hLZ(^O!PhTWP74@=09BoOYfH44$mTk3`kfUqQ#xgdx9{9}&{XU{Pvw_hc>H3+4_R2SO zsOwSvvUt}Y>G6Xw%Q>{idlnz(KIA=$n<-qvzUdK(kbJzKlFqzbt~%!OQ>_&i%1R}L z4taZv8BIKZ`>-tz9`N>0?D4)khSf1r)$a*X{VX!^HOsK)<;a-dEv@J5C(;*!Q?#5j zpNNw%&q&aH_HsW3wMzMCTx&-9AiG~kG7}G@*OYl%@8u0OXR;g7mo^@14D_nYPGX?1 z94|4@bI36mYO(_nakF?QoUH#`|JJd@M5t%o zUwX{}J6zZ5H4kHj&E9ZU_=!J@u^pXJWNg;byU^pjj9lolq|H z6X#@aH@@rS?+A8mWExuXUc_}i|HVmS0)%Rk>u1qir&#XI8X~PBA0QWa6@S{M3Y~!~ zXgGT3>68>(iQ2l3^v=-k$ELk--i@r#=$k=$qo^NSNW%&PUg$ew{W_AF&sE}pUfHVS z%i-+C>axsbv}f8|8|VH*F5nCGNFyWNQq=cipkv*((p7J$I^CDw5NoMh;x&sQvk2RC zfeC6}b8;yjBe5TfhY2Y2H8atgF+D8djm$rw2K1JO;pd6Y(Mzu_4p-`3(#Jp*vo)RD zK=UMt$e35-ezd1k=FhVOmvIi=Gw4IY#RUEz%<#Gkc$R?PrfMZ%C2sV8?c(0N{H#cS z3vE?x78g!ORR-znO^tYOMl-?fJGJ;`KBU2Ck>A}G+%yu~d* zx}ipcRqHiw#9WH5p?K9C>pnto|5@`H3RA@hm$?XcHCcoQiKpSUDM_D*( zFxhKoiy{6|mRfF3=9*^ve~pvAlWS^3Yo)x&=EjQD>i17H(lR=62?I&k{ZI|N?~(() z`IhpAC)cDmO+gv#?}5$h*^Z9<<5zSYNAsd=?YP*(xu4%&9_OU%A$}VBCv1A-z)g`& zZ~Sm=sIfnhZ>eZ_a_x2Kt5@Vx<*|n==ucyM*fmwIH+>bpu(uVh+lCW22ZO|ty|IT= zsL`~Hgmk0qN`(&QP`^rr@fzVi)3{@~c?`IXp!VaFrJY^OCzy2%d zuVUyE)TZoDtCy_K4F1uc5{o0P`Dx|MjAD0~OkUnFVlfImvFW4P9(B zHH=u!XJ%u%WA!baEApR-a_n;!UCWJMXo;SJT3k803uF3lR1_Ujed*}9c=gILeW52Y zHob{nss-*StMI3H+_b#o`t1G)SqbhHKiBEW*R@ zquDniK|N$=g1U4V@SiW%WtDwy;WN!a?a<@-rVlpstUXUhX90Ia5!}k6W28B{j$bpo z<%-Uc0YMQPI%^uG0j3ynbkQ-!9J$d%iV|sT(f^d9BW4b+I=C_%kZ3TFC_C|H@_uh5 zj_D)a9|6}2HwY;zL;|@-=VnHSpNOaZZND+v+OU7k%?uh<`IZRXx|v=@5h=sQK|U&N zA6VVb91TCrBx4WL-&@Ly0To4ubYjLF3>|2A_NH_HNSr+l`)|6_`e{It)IZDt(+1eg zn)y0>gX(p$MP?RTWTtD82Il>lNwJ4P^UNZ(%`8&eOi>$z_BgR3YbxE;{v_dmGFAUT zo_OtC<9x&8s4cXDY0H!TlDjHc4!3JAn57Go>5d50I^15+sj%MP|CP3>F2MFC)Cw!p zcp>cScj#jQ{^>}$nsnKQCCs}jD1?mqyDSShSw~r&M&ORakZ;=mx;x6s+U&Si|K<6C z*qjM7)f>U3QuM4XTAQqA=cfE3b834_XN6e5j)c6qn4QGBz-; z=nC)giEpfU#t%KcV$9JMY_>7tZ;i(a5d*u=B@kjh;r7C`SbdZ#E`CG$Y;r$X@ zu{}Q<6WeLIa5VO4snqu_QdL)>aq4gD#P3^wFWfbOs$U-4oMGE%x^upX(>w5pbaZ-t zRfR?wD@iXEE*B1H1vZPSS9ovam%PP#-3sr?i9cEK%&$VPuNd>j3bt@L>q+H_Lgf$0 zBO2s0+GR1A+Rit;U;6(P0LtQ&2`XH5H?+O=Zb*yWsS^W+^}~*ez9YD0t6~T#c~xEP zYSub66KSjvrN>VM1hs-?g)0A>@lxxr@Sd_NXWu}E`vuw{D;l24M2~UT1k>xyv+xLX zUo>&;VYaFcQ~$V;pr)~Wn(_?%Y>zTB;*^3L#Cfrk!2{y#I7r9nXu0EL^(5PL$nIIFfRZ+YHN~G9Si_-``r&Ar_2^`|-c0?t}aB zNBQF3H0_`1hQ7mmk{5@wF+{eZ!#TAZ+otXKY@y=ji@OS6{pwdo$Fi7U#sI;_p2HPd z@N3|!xPZh~aoFwN$2OmXKl1rlX%WNG{<8kD{DR8*=fIiQv|1N^hB0H?hWaTgrghLr zU2f(Zgv55vF0a)|^T7SF6*;!{%zF~vMfU~So;p6ciY3~xq~oUhnMBB(--wzl6P3+L zP1;lZO4+7lTAuq!&NnmX1`|?sc0)}CiClC6Q@FWffdQnv+)aN##z$L^5Hcj_02vPn znmZ)u(D0x(7o^DKv6wb)%a~%~+?4-MES1s9{nM;Ct*w?&!nPt193JXrmw7YL%$8c? z!jwPRcFYrYZ^6%r$h`%l7ZgXbu%LY*&j&y@%IFhfHNZuJwQ*5+=OEHNN!oY5Z;V)bVcDi zHh$Us)y`+FpJ8;&Votu4=A`g$TBI1>k!C^VU07vor&&l0xYQQSHROivnJqfGso$16 z1AoT>{eNXu8BSs)!!K^5BIoeDx!pZ6+_QK}?aPE*8@e^txF|jVepT-r@$o$kf_y&5&Wc+6CSjvbyJWC7`s1 z=1%VTIkQyZbqo-NXNWe19K0@VVl*_bBg$E&D1Aet6uu^T%I$p?zNYAfuPI-*aphlz zUZZqws-yy?n()-6{hgQ_1hg6hjoY3$Q+Ms&m6)PjEWlWT$1Jc^g9;EHDRkcgH^6kc zRKG%-CcBT@-7MAo+|=A>q##+Bo1vZJL`T^_l*bq3W<>piAB?cP?{o(zw=VDxj#L|K zfpE+M|2{|4_0M6{OQjd_-}TBSFkKv3P^$7AO9bw7X=Jz-MSwLOjE61$7dD}Zv`QyuB036=el&R`F;s-&WrM%*LKNvkebi-P z=+TCr^)+m*G#uUdLGS9Q`L>1j<2xFiBUAS5k7(;Iu3?NaT2uaqjs$Bynd$7{J#pS( z@2e^HzO#q+zH>=eW4*7|KQTeX8aZ;g8}DY-!MKNCH6cU1v$!&^WbyXaE9BEyvMqb5 zK3htLXk})3)}Yl|+1{QtXtj2%D$lfI?hz&kaON91%`W!JA{3h#`ffDmYB}Y*Ik^dp z`Zt?BDy&69na={N>#f5ssDg&)A|`5FSZMdJ>+s0#l?+OZ(K=3oiDerIV3B<7CZ64j z8sfkRF{a56SSD+HYSe2o<-aU1R^!mLPg%4U|4Sc3V-ZylxQ{fdZh&8-B$Gf%2E!)= z)Zxp1+CqP!3jw8*=mdl`Dx@>n=AV1-DXjY4@Tl^4syG-lmhugQ_2NEakwjzmV*joG zDYYGRDigF4N%jXx)J~k}SM(rmTYrW3Hbj=}SclBA$p85Uo2G%Wjlp#CbDxtB$FH4I zhJQAbyhYwof29X?qPQmNbU180_9LvQVPpB&k667;l;uWuo^_1|ha`5xZi6wXgVU?h z{=9@SJB+gKr^D=^sWeJ3jGYGHUHjB_d$ZrRzM_uZrl)fhWcm$u_4?1U^5#UR&WL8l z7QUwWpMQ@6D!C7ryNO^)P<@A=)8wE>Ti5K!jb-of#1c78H7^L3)Ov?r(n zC;2znP*)8S+xISz7T9^DnhFVao;r2Tq|UL&noT7!)*Zv&8(IHc*A(e-X2!Pqv%WpT zSZ~;S6B9w@O8g5I$Oyo&@lkJF_tWdnnK~o9{!A9k*s$Izw!Lv2;zRw@Ay(A3ikZje z{Wg0`q&%}EdrPz&lMiIGZmM?$?0MbAF2(I1Yxt~U-hTFcWSGm)Qz)*OeQbe$R?d;w zezDm0y~qRO7x<%{r@SD)Bmb(o{Z1Q2c4|Ui*lDB4P8&sbO8vnfkWyhFz>HhqKeo+s zbprsoGP~|0+JcU{Q5Eqc58=!Xd?42SR#015yj}T5n^s$`Cr)h-uRk}awN^*qtuvxl zXB8(B)vN2@Wmc@GHrGoIn5O^)uozHm#~p47zzqIZ579~LHr}q zQFQ2tbw3HDCG6&lNKHcy(6NaGH5_*8@bCUxAr06v8NpSsWt4)go)jK5j6Y}?f6y?# zWw40MhoQu{$Y0sKeY<5-#QnH?v78JvCJ9CwfJ|65Isg$_StDGBa2U!>Id+K-0`1 z6OjzQGSr_^sKsV5w z0B%~woIuP$S(3%aBttc8eEFl3h_wGbBEz_|8z+@@nriL+9GSplsTH#Xyd>eq-Cva2 zZ>_{ZZqcM=p73u9yuSDO^7uiXmw68H{FJ9C8|hc`{|f)+vj(M#KVklVhF~bo|2gdY z@jokl$B^{FdS|fY>HqC*6>J%yndv`sfBE3j=b+8@)}ia41ClH`fx!yKWa|&%rKSnW zekT{|*+|*yzp=Ig#M`=O&Qv!20WN0B?yL5CS<@GRLt)b2P^XBe3JMrJXHuI|NzPe$# zS$>EMO7eRDzuhT{|6W;y|l5 zq1RqSM|9f+4e4m+bQE{E`c9mMwtpP`Cor{S@BGv?{#EwDn*Yig|GKNRB>kno5wc4v zjT$!1B2U!2D(r1h9)*Y98t$DoXk?;21BuuJbIQ0n(v>lUk%qPy6XiZm`rcJ&?S_y2 zhy~Ty4LX{xetzsnB~ifSL&JR9f7r&TDw*+qCw?RTTI@H1oTz`9TR$JNB(I8tlQ1UJ z&gz}1-dxtJ&Rphg6Mto!!`miyo4e92YJoJ1Z%i@jCU`@#bN3~@zNMBV<(;cuZ%UST zu5i_K$6ov|p<(VF0Atx(F_h8$BZ|uYv!b8qwbgnn`wn^3TQ1qdl^5Bk=iYZ(P+#`N zL_H_#vX7PLw#$bt0p^}|9><-+DYf5dR!!~F%j`yGo`2(gR?X00jgdLeb7I2-*co`( zjplm$SAJd$CyI%nPbc4Gm49f)#yO4IQJ{4=6gmqN77}|hD`JYAp%kLq7GA4fs&3ku6 z>VD7A+E}%Qloi6A)t2=ZX)4Kql?JG#< z#YVK?81KpOwrEV80Kk#|ZU`wa2O((W?cJs0se5;Qb+q0(f{M>J+^nPg8kl~`^CHi2 zp5O5(U&eH&TJl*@F~$yjv<*Yqfl#dbg8=A6K|V95XJ0&KKxH3`=PdG4jZxBECFoTn zpzLFjAwg(WYjl@gPSR@1UP?OEk^P-_tIW@epPkG-wPcqQaj^hn@g%D3hL z+o{5y4{;g}WUg=6pZV+j%)<1yiNE$#Z>vy|J^X66FOoC218x?#e>c1k9L1(K;@^!S z>&_Ht#x8?dz>X;eS z(D@GhJk8xlvx@dwVh^{2pU;#x{3P>F;HBYc=1cim?_CoP7lj*su>LV>{@(Dfzvtax zUy^+hz^`?{Ip{^-?C*NU0ll7sevx#pQH#!u{!3Yn_V2PU9%n1iBJI`rTQuiid@~@J ziohRY`4@E)?+)9>%=`^B*O?M^-HJ;3S2YA|nBm=Fr1GCeDzq_lUH>|pd*ikzHb2)n zV$++2o8~q(HXK|3D)p{iGFbogQYuj@`C3;r*SHUaGjRn0X2}!wbh`ZB z4v0Qn3i0j`G>ZLemqYjN4U4>g90V=9H^c>1g$c{7In#+#-8hmx z{ARYVB4=aDjO_k!!&B?O?=lYkqXvjM4gUK7bWxWsIp|*tX3@;E=u5MQ-(HgK10ee} z_)6zs#BZ|OL}lg1MzgPU4$AwhwFb8dNSIfD+xACLX>;7^&MtWXgeEGeV7eHCr3d%FculMib&kR6>~%IK+BSc5>K1hkEgOw= z^+D#)(3MxZJh%MXs&Seb=@Ii~TbM$OHqV3OI&$1)8Eb z(edY_n2_agCCwmR1Db&{DKC)!*J=C+OJjHMX0NusDVaSSzNm?9D4RN*Ynd%` znGI_K!DoHIP&+7|0ut6$$6>O5^_ z!k=&PJr_SXrkLmgR)m@~2Z*c9H5Y|EX0Q~(-JZ96=-8o#LmLvLKFv~J-`1lHYC^*oDR>;3WqGeVWaBqBSU1mAmPR}4 zf0*Hj?L1@{c2mEnglM=x#~q-;RpT&qDHLy;W6?LBy$pfw?+BNVL5aCjtbqB==gG} zX4S(Qs43de6j?tu?QcF|-IpS3wx{FY)XaY(MK?vCeyLQboj@qv+~~@5hro87^SOza z(i5Vlg^=L97b3~ASG}it-WVfWOjr-AfBO2}mz+bF=IWU~7UaVoC|HKBU#zU5x3jtX z>C8F1a=WkXJoakO8_^(*_rvRV*OO-A0c)+;>;s|4yN)ZD^_5*m^xM>R!ag5lcL)mI zyEGs5EbfvVwj}i(_Lk(hntr#GPx#XsKKv%us=Mm74cf-GUhR`OIubar{1;!wcAuF7 z{GRql-A%Xd-q>~w0A9Ff%_-af`*WtaupP}|*}HyRSK8ltIytjpJx(RCp*xO=g2GJ_ zsfm4_dj)Rj)9yeiL2z({b3mFN0GgW*w6nTy9g_!%k?8dU>Mr)Bse041xrz zT*XQ_AL;7AkjbuvD#aUx8-QqU;x_lUrh&msjT=BP}R~DZEXu(yq zv-upwQ@kX1!~tlsh?Lv7So?xL!{-Nya|Ny9(0kjbivhRM)M_ZMSqO4`m9H6!*<%U8 zTl|a%(}sm&=Fb=+l=%UR^KE4=n7&&IaHallqo1O@q59A;L>?PtSSmHPeJj00B}X79 za$7xi2(;&u&Dw9)Ju@Fq} zTwLS`otFV&(@>a^F*dDFhE?~b666MUG&7EnXjx{o>xB+9l$qRa4)7U1$*k1+!e?;H z@oNkt!Up&(>5Ig+KNt84U~Avl_P)SNcn#8i!+FiG!OMvLR?+K>+G3(xM+La5k4E2jr_Jus6B1T|p(`06@(<4&P#Q40X1lagm^Z(C_>&XU#s! zYz7K5dLqCGHA<@`UOb4m(Z#dl+cJ)#IxS4bjRcp=P_gz&XeqOk<#u*RtPE7j`5UYh zQWIsoloZKAP?1G3&L|fLXdNUXU4ktVw}9})4g&8p%HR@?xy2{+SqEGQE4y%CY-=Y{ z0#|sih!s81{V#w9Q+9Mffres%_j9n!{{}BI1+gMzL6)N^kXVY=O$;FNJ$`eJ@v*!_ zZN+EY-jMk7Apa=!vs>%Q*?N@g-PU0Sxyg8i4tB7i#H{={KSQ3jXF|l8AfkPS>JI~I z9}Td5fT`~*Y3TMVRm1BU8h^V!E~TYtP|gh zb0hJSrJiA)&0+ac=5SwCPnLg%`-3-p5A8DCF^ajh69%MHrKG+RtChB zZV)tA`M-0EFm#sFMAx*za^${-+e8H&;@%>~u_8i##|H#xoGG^TMc0>`pwESYmo5TU z@pSK^*S7*MNTKNUmB0&fD0+Q9@PZK(y>udzwU|nz-iVaM7~iyL!|02%TFx4CPVz6a z?MC#*V%?vxJ^+QU2Q4F{*v%wmG0Hx!-ctb1Y5o<14IPc3L#ofq_-*8OIb|+OwUTtT zQ09NnOqAPx|FiI0cn}7Td4nx7r2Fu;E*@W=Oo%h_Ai1=U-A#|>cYN?Gi2+5l_7{nN z3J@H!)U>O7>Hl^3J;QSt#&Nf;eDbk8SxYy^XSpiXE|QUH?h zzSO~Ha=sRvVUvdS3mn*$iM2ASTyWGzfe+&vFxR+VEr*r$j@0`|3v)91c-j1kHrV@7vrb&3kQfxCDyLt*MuL!u!_Cp zapE$^#&@AgYyTk+aLb}L@CXtMZ9j@&;Mo}=02=s@=RonZB$GHIzwp@r;Cutwi zx6}x0xz0$?P37N9HqR6G2G1D^=l2)*|AgP)^85Q0u_{o%k>w8FKu1bc8-aAWq4W>L zp?C5=MmT;JLjG+?Ex2JSB<6Z^s=Y<=1>|{M+`AUN*b83b5RDdXuvC3} zR0JN|{#z@|iTr_h_EYC2k$!>%X%aqfQqOt#jIoJVyD$uiT-bLr1M@h(#*OI*`f-S5 z<3dE^2v8vI-NvBbrU*Q7g4$-(6yw19FW6@}CkZ1XHCj6@dSQ=ctE?+6TZZv*@Jc5m z8km-?ym_2VE+NK_&PgK+B@a%JFnH*6Ak5}2T#RX-?sP{kNOMbq*M&5GFTWq+nJ?^L z1OSLunq{{CfQNZyn>rfYv|S_NIeY`8%?oI-IzH(f79Dmh-fC~i&Va%LdTE1kTlTVO zj~67ydz}@nT-y#Px(H82oEa1`Ja+(T7muN<*<0P=C)pAp(M)si_;PM*9lzM z2o+{xwe+MmpOov9t9jq=+G4jS&Nw?Pj(O;2O?MAjyUW!_$mX!1$Lp{K9>%rDTn8}6 zksU~^*L~5|#?UYHYIBI}GG>0CF1UIMGCh2G-x#P1c5rnlA} zaWpDQY?m7urtK)dKPC(!Hv!~lGz4w0M#pzQU&d$`>z0O9YL51zWnnm6adiZx`0Tzo zX&4n@@~*jfmriZ<_(w7tDB1y)j9B_)0GT|@Mn57>*qS*)1d)L2X_`{wq`QyPk_gTk zIr+v(5#t*9##tvPVtnaO`MLFx5pF$UT$!6>kXUnqAyF-jO}EG>?k86ZRJUHB?+D-I zCQ;qi3>4S`hFizF^&e%Zp=(@AT;OEg9?D?(HZl~e^qw%d_+;Zm0CI9Q7dnDEQh&{$ z#%aM}cx9;p9ZL2^-IBy-#P)wH`i^bi?Ru0g3k74uzd5gu77OFIy@uCybeh&PR4aZb zxZew)lyM3jcU`SAyzK(A{*`r|I8{Z!4ofyaGEFOtTJ=~WQYojcp}TP!E{04RW1g(U zk%0kn>#z*o1mhF9H zOM!0Ta9GH8E6|OS6ijc3&lg=?U*o!ixT6|eL&>;uR~CNlZx0GB;v&AWHiW5LgiBfJ0)EdOoQYiI!@&QR^uH&`B1J zV{I&g##@-ID3kzVke)>`yi+y6!ik*PALB1DzORf3(85~VL4+k+?`Ug>Ls!v0ZSy7A zo20*y@~igq{FvMtm1P^{KLvy8$o_q+tp8b0H;=7&1ZDfgu`!_bAb1`hEWipw z>x63ttN1dpItH_L)!_xoVp9Q^q(MQeZl%GHfa)YML4_KI$jVqrc#ymqcK9-M;sH&! z9d$7|4RqrwW!cu}BvxQ*2Y2lQJckK1e7s6+wW9oeej(qs4rP`CBO5ivSq-pNzrxW` z!bA3zI_fw%*2*lwR)6E`)M|(MvIX-W65Ci}oc>cQfdY1n>nJXhYunu<;b+7PCyQXH z!N1D`2<@m-fD0;)l&&@qoFr`ouvd%mq0P3*YEN*|#=N3!oj^7Wwl%t>db27;1%69V z9lzh>(J`ME1NUyb`xaA><&(agOl%7yaPoCoxL0q#9Pcfr-Bh=MK(c>xt#$UqsZbCbN#inZD zHNH%Ehg{<81a2Q6Kjrr*b*mC)ppAAwZu^6YO=<-^X#ck710=RDx2c7b?=)w_q&A5S z^{#0Q!*u+%Kj058NoY;$usvC=H%Tv&5UE2QiV5^a8omnlQblV)LA*pgMLqMbSN6eL z2WJwt$GAE91fFT;*7|Mrrt5$yQwR>FbG2Ai$A%F5a5dd*Cobbv_+b|NtQ*!TWMe7h zp<)OCaXYz09f}UtZ&We3f`XjyG=EKLJ*uiBTgqiMQxTW{{*JVN;Q$9^2UeD)WjDev z|Em*h@vv7L+x%g`WT(r|??@hCRGD~Wgtp;rjl1Q;fM#51J`{ z8PCmHpCRZdfb?0hPx7^2;4sw2)AWaT1Lp>K(S=7WJ{;-7M-~539N(1=qF@3TxabgI z9xL>ZC&J@v#_~S2W~7n8zKy0d07zxO*l-XeNHpaDDhDlo*y-~B~ zG|jVEapM!>W-URxfu+(Igte5YWE61WyC!_E1g;!|$0`WB3o7@X1t_ws!Jm}EWQ8-z zw!|^`SIEGu<0Jb1G9K5eKzu|5Z{a<5$3N5fs-Lzq=!KJU&!dqg#b^*>?zs?`c=Hlq z)cll*s0bXN8_0{9$znkMeoDw7gSJID-b#@Jbm)C+YRJ5Zin?h zWx&J0*ZvBgcbj<+A|K$x&Bk%8O0IM92*1~I#G&O0AW<8&{g}S>d;4xXn7)QhNOu<= zphyak7=idi8ZnumGz2pW&^i!~dxCn|s1_pn97U7t24I9fRE&0?b8xhrqGy4GwmG~k z76+^4M+>#h;T8CSAvlu!5**#B6^fK43wi!-PP2;pEfD(?k4nKgbfPDnYF*_2lbv;) zawLVEPaZa%qTTjdPuokn>XPx3!uV}&zx+(&zVQup^>hi>n7!Sv)|xraBySvG_cp{tdzr z)!QKtTeC@1S(rWzrlTpXq~cFC0B8mR&0k@Pri8o z9sb6A^ii5X%|8ApXllW6z8w6r3e^5Ha#K|;5ce+z!xu~JCC=g}hQyfuZwDmN6*lyvyP<>A=*znZtpXM5*p8nB+v3>N}$RTKCDnzIB~;C{{ufeAz5dZ=C#-tEA>PF#7iz9a&o{gTtMh#|L-~fIf;`49tr~9QN)*m zfOiyeM-YG*GaRVv2|xtVvCJR{=Fyqr)mCIU+I5nmW=hBGTl}3-V>wMzvim@Le5_OD z2v#|(U?^w-t{cIv5&dJ?dzsjqeX4-A#>66TC`Iff;_E~_5k%adebOQx9gfbv7vBS& z4+H`4sO#UmfOnvC1O7oBThr7@i`l`CYBt$F!!|r?mm<+g&~?Tbwp=Tbu8;4%PjtP4 z$-p7<99H`z&)v<>HzoRFQtP4Q{d^(CMF@D%Iiu95DUxr}B)AWE>L{#wsO%=`PC}iA z-gom)y=TD5VwdHV-Q9Ra<{uC+@1y)dq3@Yta@OO8{y^xfM8>r-Kl>KqpVR2rnAt)_7z^g?AM{0mtG1@Lp(Qy~E=P>@~{4Vne$HRoV-TdO&b{M}#=yI6o z_|n?*@Rm5*B9cu(;4UkgxF`ymcS!LRc}Tp{&WJ?Dm)1(6YdrcVr>Ip4 z28h+me-}VbDnK&npPryrgX+sb_IzyXbUF=*+l0o(5*j6f8ybruc$?5zHi(Fl1TI`z z&5=O@0r^ivqXh6j11U(}e=ZtT!k>@a^ zNi8J-uz@&lHF0(%qx5SE2%wYDCLwzesB~%&1Zw1_6_T`Fl;>61Wn}q%o)=Y#b(U?F z%T{nJYwAFn`-<>5@jkw!(Y&8`6<$I~l<=0zScIO*nP>L7n5p~C&oYDYcYgf zsyN9d6`JqVJOs}j$%TUr2#_{^x-U8Hy9x3ftr%upKSJw&UGk2yDAuUiTyymtZUQ2tY{|VOki# zbl9Q?_*zwhsYrwYde)PS6&t+F61#4&N}b%=Uld()vT1PLiE^(W5R~s|1T~KwL@q zeaX!Z9#th(Lk4^B<OINL4n(aUTfefYT(Mxp z`{iV6H>j$N`;yBon|P|uijlm3U-E9tLTQ+{Z+4h%q;IQUwi82*CcD~@;VNag+5sI; zO|g6y2BAfDk$5BBSjjC@gkq&xhpa5A4*9rRx$j|eelMk^7NHf={-_y3F%ZO0{U_|? z6xR2GDF`{t-nTe^vk*LcU$uR%H@DE%MDN6Vv77_uT;Is)BfTtDa77BYGGMT_CL>xFk3&@O7OiKZ?mO&=QWah zCGQUI%F4b-f&=>7{tvYyyJ{3ew#lk|19nGZc^U1&)^|LX?{?vn7I4;tc*%5YZ07)u zy4cPG{7jDR?2A3{OzeU0#vXXH>t}ZN_0Qs6d&)Mk+S;SH_uHP|#AT2G1(#4y*UOmr zEpS^+SFZxc9QAq?(%bVJ-Evb_z=PeR*aK7$FYc!a0Yz@|SC)KgxJ44%uOG<1vUr8J zsMeb^dBFXT3})ZQrXI4Hu= zt{}Sh(4fSSAkZ?HkPcv*M5cu>m{((*O(d7sLR)kh5|mI83Z~-p&!CuPWK_;qQSaZh zdbGhb#3#jG!?rhQgl0A%8ktAd+=XGhCwm4?!RUF<@fdB|66#~Zcs!Ue_Mi)>nPs21 z*Lx<2_J*RRLI;TUMi6aJ_Hm1LfIcwHLeDkxxw*QKiDTmkb2$E4h-3ghm!9D5DQ8`* zXJCZ)c<5-)aoOIg&AwP3IuLq|?AyR#E!C3&tw|i#v1o@}v^p2*usRf$z&(vk1Yv0serzVhQRtl5K?c0%91{PaMd% z)J!}y@hG7Q)U0c>wg}{s$Q2W@=6alWs4r z(v8=mqLcU+OOBFCSlbgsnBW51$GT<4w&#`K05LUEXi@rlpIB$O&~bl3vUq#KiXS(L zkHwEtB3lwFJ&Xq3`;_@!#aT&F)ay#6RG+fpX70?UC_7$Y`c%?uH$^%vKWSTD9-6?! zX9BGtwMn4{CV9ler|_~|iwWdo3BqHDq@YrY@R*j&msF8#Ph)mZqi(_BnvQL(aM26d zXssbHp}(z>msI8#A0ms*$plS?PvbJ?#;nCFKV-5g&bOu3z8d+`gdZ&mfLj9cNhldW z38@2;T_Aw8wOCk4f06l%D~*-;oV;4UF*>4L_NUXZ4s#PHivF@ zF`W;Jk5=xz#R$8L5w;b5+{A)RHWib!S(1+8CnP}VvSR$N6mw{EK68__B+^}qw=*Jw z<38I`#c{tam*GHpoAg0iO1+~^g z$<^{`T>yKwGPdyv3lGFS7m3-XbKGrfUBugA>u>%YFWH7Of@D^5R@)BS@}-hR;M&$p zlNpstAZ~jox!Xa^zCWJm^25eN|HYcIJ?&6JMym}aZTA=3p@@dI`)r#A7>bd>s6%`k zg9iTOYq_hrN?0rc1h!n8+~x8wrVWr7mf~FLM#`Ca)x5yGHwXO)z(PB`l2#|A7M0{SX+e4{Uy0YZzbY*unIVD;r zVledB{V|KY+WO~o(xj%f`}JE+_5P5bS1$Wo+bf$mfq8u5Yq3W#1hAoyUsTTF{nNaj z{54$BGh$+2?2(y;P~X*=Uw5p!>Xe^tuP z4gc@JR~LtW5!1g}td<<=zbQ}eo1gMOy#Sa8Sg6PNfIos% zI@cV|H%Awxa?KIHN;PYav=%N=?%S#>{eQoPj1FaGPrWnRTDl&gf0Ra6qUOpC>caSG zK*|wnjGMDVIw*ZT@k9_lq$XHE?YQ^$5%H9NFLiNc`IlI=;=LnOG7VBTB;TRg1@=Fx z*M1=O@TTW~rQ6iH5Ab8wQaB2@x8qS-v19X&ci6PknHg-_eVNF8JpabS391TrahTpG z{RI-FweLXnT8yV{YV5c2rtq_iQZQ=Q{qBVU#|MaX2@la^CZVjH|9AXR#?bulb@_i` zF#m7AXa1ij(pt-(D1fd4-tkBNcD}x*{^@l6bM>#cV)^WoG+ojQzvj(-4K?d^S7TcF zlaLoCmOE$Vr^OpEbiMY{(2p88HMaI*GYJcbHP{>W%Rd}qjw@RHP?Pt=hCi(TMguC8 znX!tR85ta)UwMW<>J6huJUBAn^-48T@u1|L;49BAJl!eP5eD|c_$0K`GF|37)}E0M zCuMl(UfPdX8uX#vS|U*D2kLjz5tRXlCN7?(xwZ1%n*XYT=f z*LsSx$=>(b`+0j;(WrZOwb*-=-d-V0eMj@ec~0l4<~f_EmgfSV$vl_xH1ag@%;mX; zr;TR`&vKrXJga$b=2_2k2hTR1J9+Nr`A436dH$K_exCo}*~Rk+&pw{Vc@FSA%kw zI120Kqqiws^O|$&Gv#ZMP~BB_bE>?`wB0S+>i=~q3lPRVayux~%zCLWM$i}))q8h# zGAiV^tmDmnYnAh*$r<+MRkLq9^gEH?QUiAy^h#SqvkC(@rAq@#WNMcR!AwU!Jcq_9 zr1CSk73(b$4jmHJ9%dmSs^ix+t=wpEJy;`(4hjEEwLt_>gVlJCPGn9y(754p*VrF$ zZG#DDcW((RX~p*0(m@qy6pZ;j$4VsV-28i?Gh)_V@>^CBoU=&zEmd;gxf)pWcTSW0 z-#c;VBDpP%e9_qdW1YSqSOD1*{&8(JJpaOFbw& ztdDOTi4~ISvYSTQPCFF(H1;BY9s6QW!@*A7mle%dUD%@W2Mp}>epqyg2E~slFhU_$ zCi0k?@NNn>v?MlGl6SQKqj1S+Zgp5;_a#-ysf3Nj(&>OF{JxgEDV+NN?6k&fN!WaB z>Xi!rt@nm^Dkf-NBW-RZjz?4}5y*TDbDEW)`d@onh0=*z4ZTQUH29smliO>K=dUgI zs=k7Wj;pfY5thol$2(pA49hW(Gsj!y?a83guf3gWLI$)%YGvUXt)ls-LqgCXW+1C+ zB6>q^tKtNibuRV(!IJD$dwbj_`D|xZv3@fnvAGyBKDFW5%kaelZA_ zm9fz+GTlnp?XTtMlyg&7%-cKhQEuJ!|J_K}jCZ&CA7QliwyvU%pdB2Y%Vh$hOGW0| z0#!SNV>V~TyvB$+st$Xfo8Ky^rW(MR(Y;nt(TmrQU=fe)c!9MXS!mLAyhHg}tA~Ej z?v38H%+76@L2aiOtoLaJ=EE*qx6kyG0RhY)j{(pUY3~%g-#&%@N^M zP3+AzMZ8%FuE+I08JRf7n-!fnD@;NiNv+~qpbzynX*N^laf5CmH?KN3uO>GynVVPD zKRac{vgQ+k@G}1*RzGu`_(ojPk+<4hQx%Ks+=`t}k|kiJ{8KDSBD*hjwPpfZFdZ}>k(p+m8kGs5U!VOm@ z)(?22bwR{v*dT!w{o}-d`p0-J;oMZcuGZxn@lZ=tB-PF2C$rYOI+34Mp6%JlYI;N8 zhSgrTcxuDZ*xaLDw^(Y!q1e@j8h)~&$;+!Yd5kYxwY+ZiirnNr=h#2HFI;%{DAhxv zlo`VMM|J5k=}ocOzsnn@yj}>r`(;`UdxBhWGW@ia&L7!P6>psQ8;mI`g3EDVu%dc1 z5{~Jny^C8LW+pa{!RnQ>blzW$p)Ia>Aj3bHc(fs-b6^;ODDVy;fDF*xSYS~KTinF-4e#%@l!%Zd&j*Vc->?0 z(+%NV9Xzncn;(Ry6@G$kjgND^%WI^}MR4o}Jnl7vj4;-9!a%;nHU7($x>2WO@C$BBU0vNX9O-gy+$+C&bG97$z;U; zjwGMGBg~V^7oP2yh6g_j-H#^qd~J3=_qd;j+|Lv4=jZO{E&D0T@kOA6@-ixK%JA~U zmHwZXxANkS14zOr8H8U!QI3(Uy!4NRxBQXtg?}V`+53kZ*NS>0y*jMECG2Lx1#UR; z_CwO%#~XSxzu~TyBHOd2qA0y!h)JkhwfhchNHc}o1x`IANa!!*(yxk45kt86WP%mKjv%_LD?=Uo6cPT<HBEG4WuvWf*cqO7ekPRP zP#$|^WOny~?7*nCq2~VIQnoI&(FAq1l`r8v9HKt;yEk24ml=gNdLxd`W7*x6*@07U zKilBfwTf1S)VtJx4iep785CLG6nmu76?pUSwUr(P;=!V3Xu;7=I5S<-?zVE$nYBFWWQ)c=nf-wczMHwrR=*nGj#HDG@L-bVZ2(pcR_YPhQ_|RN9L~6-XZ_;^EDzxS*$wUlEfj6k*$(6qQoy>8vPVEsuX*c z`%SN`E!hC|j;<_+m&E+$BQ~;Odo<3a)@YsfRxYcoh^K<_xVI_N$Y*a;l-4N=hX260 zq5mm^AtFP;D#6C<>;^ancBjuWEdg#gU$Ce(zai1;pXlMh7#uW}3k50cj$9o%1F6nJ#SOWo# z4iAkc2K6>p$+L*&l^mxZdds46^nW>sUON!kTV5l4&TzTTh?Lov%XNm!b%y1dn<0TI zlAEDBW1<-1@p_5{sWSW-zG=j9E64bof^w>@8CSBPDo6~SgqQovhQP6esvT9ajp5z) z6LCN9QnlRb!Rvkue<13LcjB#LNbY|I-qIaY?u=`WcfUB(Q5uojoL?CK1$E^q(N0zD z%Z&F_V^>hIa{uoG4@a=WYnq^Q-b-RCe4|B+1ay6Jg;!g>|44-$J)bD=oRB>+CNr`K z!Z4~4Zo|VM%B_y~iYlO$ccmO_T%*fk`z1Q0v**ZtnfPCk+`CSwlAV`zolxyNKQ7zd zt(h~tCQUhFZvL!AD$+aSUC0^QMJ7VP4mh@t2`C9nLuk5q|FrbJ z23JwFuZKMyrVI-|3=8B%gUJ9uEXpxANjVovb#0BH5T^|*WueR zkolMrW@n>S;LUv$5Z0lJ0KfLJ+;Rn4&L9_hAj$d4cS34V-SjRI|DS+*B@N)cp=x!Jvp zvhk5N(z-N$+cBH7ANkjzNy^_h$pn|A|29Br3`9t()w4NzZ^KT166BhQ<2}h zioC)P;z|p(#Xc}gcBG0Zb)-<=e|= zn8ftBC?#~9R+|k~$l5WJ-JoGUWVBYrop?iN%ryv0=hEtQduxj)y1g}jRsAVtcZEY0 z@$d26%QKy4HP5L$A*xbV`Dg!?52mOnuMCBQPkE21Dlh9SNO8(-g;$GmEcM27EXg@_Mo_ z#(Mm)BF7${9j+qNIF6_stenieN^W4 zs*5a$+?glKVC<;E>YBnq7^t?{0&F<>fq67@wGiG#MixYcktsd$MamDIV`J9Pw8{hu z3@46Mo_#`>m-6T2`@&iVl&>&ond3eUeYT`@27}*Me`*Z0F&Bg5G2(nuOa~}(93Ug$s?8riL6>NgHuv#}jGhnJ!3*#TOBI2lJM!Dl~jQ>#w zfJ1|gSKggsYTgXivtr$MsTaGOQnY+>I!u+z$rQog$hH@}3why&w0{%FYygvw>w@5W z;jZp#FoEBw)v+e;&S){~%v7#ptH@k5-~U7v_rX1EyJs%rG!t2Ow*=X{l+l7+2a%np z_31&8&)|i)$ST}9D*K4mw#s!UN>u0}zBoArG7W2us8M|l(^BqI#04Xi zQaf)SSbFWQb3g}BmO^-jTS3K&)RPoLLZrV??D@XHCjcBHYTP0^vEJ@oaM0W8q?oUEnFKdJ%bZ` z47RL;!04AEgG-ms2wSY-{S`cw!d;6EhKumYqjcY7!ClbWJyQ7~=BP^q;idZ~gE-e! zDvmB`8S+Q`Np5;97b!Itx4}=}@A|kB&l#)SCJoQ+&$(|hfa;Scw3(DF=0k~f0sM7x z|Ix=m^XMo+gHaOFhP`dp-OIhk<#g~$grRWZaKP9se3SLrh$dCujM~ECA^3ob!rnoz zJUitBnM&{P)cw3WEP9#p(Zcx9=&avO9_$}=>L1gLMYeP#NE*zoj?$%=C7g%cz2nD@ zJF<<|GZ1W}iIVG})f4B4k|*n?#f}yx8EJn*2#zx=vVb*k|F@@Cz(cHNNCP?JV050E z)Pme2)}IcR3kN8ycQ&ImNlOxnwcD3>OQns7=2;~V`^K&Wkr?uV?>hUo1QtG}pZ)q) z|HIdnmsnTCTc>@zi3|KiTrgb{*(0s~AC8?=my3hCh`+HIi0=2&USoJ*#cAKigBU}Q zkJI{N*JY|cQ|fz(-0>jp4xd*^vT^r*4$enP@jw4w@r5>vpM51c*j_a%ZBi-q1Mi;N zu}ZV`3K}DZrpYC=apDy;V!$&%BlpLgVyukGy$u2WkCqN%&@unc55eY6weA>^<>VR~ zzx-@9eo}YvCK(X$dG#aCXBdJAX1wT{Dg<%&(ca_uOs6 zlM}i%1zg60_+sBv>$(FpG-4k9ZR~SBoYf%F?1BD?TerTQK?gqe(__!U00159GBus8-k=>Gzz>5o#xK0ebags`uxJ^hezpSj*Z+V4ZXyNDux4Et1&V++*6{bUU7 zOemB9j7ZAR7+ramn^lO=v2R%<8@QJUxpv6t9P8HPc+q_S(J?^blLv};ac>TySSOo$ zZsh%Dh4^6PTJ@}Ivj6g#>PK7)U@UV%@itknFcWPHF$x?~t(_h)^25ZFvXA-s-@kO%0QVq2hFoXLS4{c{vo_H55fhc9OL!A*RZ_mIc;XLGBepatC`@FLmuU?oDwk?Ou+^w=M6# zMZ*_e?5o&;5lXnuEA!Xn#8q%h-X*6+{?|sID5R))jsMHrEGJ=sY1-}$7hu^-nQ0oB z@TcBdt_6u&@}3vujs9e2M03O2>ksMp*V09P1|9hY0bJL!(n5=T>RRZjMjS6)?FdTr zDhfqk1+BdQ%iO!b$5mbT{(6kk zP`JhDIQ(|#zE7`fJNqTN?caTBMWnwj%FkwgQjAVqqvS5);`{8rDu(j3ja&PF0j&E& zca-8J3qFx^*}^i;Y+Gj+n){WrrkgAM3LQ8GoC;jbE)GZlR*`H8-8d`P5}FJqTcQJ% zxt1s~$(G2Cvk}O^HzixD6pE1_{8cf3_B!sd^UFw||DP&l*Vz;?-XerAqX8`;Ye7V> zs?x7QU@iVxTU(;}&SUv6Sumw`1)^M~v5(p38Nz!~*JhGCX>Xn_`(b+XoF0=RcD3ll#>^jt&Pm>!ElLs_h z6&@HdI-elCVDW`Eb`97E)=5X4H)@M5^gOo^r!VZJny2IVY6TIw?(=kd0#RQllBF%v ztMAf~)ruLYTUR*MU=K<63WpljJz?X1KdlEcgBLKN?Jca_yV&(cM%{|+Veh(B^ViBo z*oWuoK0HqbX`?IM+re2Tnq>ab-v`v<=zJIb(Gk{#0?8hXe}^w;F#cm6^8fZ-p7Q^u zr#y!!Tz=8?+$f7J9XeO(-nMUIXKriI5uyl;G3AODp4~mGnBSj-q1Glvdq#lv+*+H* zynW@jRC-(dRdQxAZR7S!+xva3O1h(JUtxFQ$wOAbq3;Mfn**c&7N~qH`C2&p6(Gwp z8+E1}PTVTP!=EDn>0+n~q1-?Khx85s7_CO|bgY$qmHWx7L}{awYZSlpni+Bbw!w@0 z2yua(tB9+^@1x-a?=ihZl))?MT~{h~{bZQb^|h57x$$+{I5?DwfbOgoS$i;TaW?oB96&|KHU=f1Oawsxs7e#{))3(w7+C z(hsp40qJ_539T6^`~cv%JA4M<*pE>mh=2|o(xvdyy=%t&wD%X%S}rog+`CSn&QK*P z(aezBd7^luuUXDB-nB7w{P|Gx69$0?W6;61W4XHG zc~^jvJa+%P-GyvAs?jD)haYohWTf(l{@s!FZ%uW=MDh{scK4#QA@Z$*i|ZB?H#-5p zx^%a+{^o2wmC@1qifGwCy)unVolRtPw4+lEs=V{NYHQHXT&PmdZZ}~a=SCeJO8T?i zdDOc_;&}N1<7Oi&xJ1AWrjU*>bU+wP*CG#E=k2?=@7spLNre$V~dwsqF!8Qlq}%omd7-bryur-97mo zwfW6)TyWL7^InBCh5<$HWM@Snw_Iw|CG#Wu!m`5R$p)0wyVp(_`ZT}$RQV=0!mL5D zvUFX(Et2Z#%&(2FUgbug)lw}H^l8`+e%SreE2<_pPjy@#m~5n^NKfZ#60ee%+C=~6 zbKoZ3fBK;@8W1cwNW^0oD{yfsa3B6Y3>8-s(OQ2A{nP?6BFm;*Z2hBcA^M2V13GxV zYCc&V40Dqtns_rh=)+@kZ6Wz@xjbY>a=LJ)T8l#E94WN5n`))r{F^^ZpjFhD>t?5v zzg9|{=Su0>s9=lKO$(puSs>Ltb&;#vN>si#1h{r)45ld+omXTx62IxpNCg9&o|P6a z{W@-W-5k)EUi{8QQl63K92-K#1RJUfke#L_j%Xh%=T!? zZDRC<1moU~UvisqSXtaG6IW|y6>H`h@{f1WD*+_hu}EuK$oQ~e%3UaE+-5ao+0?^* z!Ige6EZ$3PnZ_LrT<*020+6H{eytIP_T%KS1kh3by8D{+0khakd2ndZ;EwTbp~_AH}S# zYd=wJ?RkD{-TNEfnqsmd3|Z}VdE5m}t5Z@sRpuv~f$qSo8VLTQ$(kt4R^Dq} zU0XsYSkPz z{4W)456=RETUGHB{DG4ckWqjU$8^DOlrN@E1Zto2Eijt;O#&Uo=NFSN8K{kGMPiE*Z;! z=9*BHwUV-Y{O0tMYC}`oK#*Sp5IXE_fC$y3F79G_+@CV)65nA2kvY4O&1m`zW|lTb zDnatZQ@p8ljBlpaleE8NY9TM9>L1Q4R_*O)rZxv%Ex61+?HE1H@enl3=?PTsbuQ*q zpWv#>M^l7hDQKV7C7--bZ4bKlTN&&^OCV(S81jd|I8fOVNI4ai<*BJHLHAXgsG+fU zitjqbAU|gO`-9r7I!|Vwn^QBYnI5S;!oBS>km||@-V_#mo3C9p`(@ZOy7gmuj9vqe zGN&**^|aFt(l^X6&dXmG%UzGv+(o%9p>?^%)z04W#VWjPd@(bTL)OdC{j&R_eSGW$ z1w%TPF(a$0Zf9!(#4_WaI2Spi^qp)AZJ&$QP~~{CExHXJDN;F-$_F@GZKhEL4KMNV z2S+qGrYOILJy#-sc|3P*Aa}Cvd9HIXQ&?UFI3jj~vv`JcWC!5&FXgmVug(Ydr`#2D zg@mE<0omiSmGjRb3$s4^LWmZNENR85V#@H4cDBvD{<1jOAJNZx{p{ukL{GS<*moa_SE6qB?pcQH z+Ahu1-vG@8FYlaMphyVaS{v5}Gaqgo2xTs6T|ybXYC_(f}xbZWvt8?$>SSWJXIm zwXvexeHi*ECqDMe$l@g9rswcnTq%1Z;U5jOY{EWsqfL=)^HuQ9O z=#OYVy*E2xt2ucfJj6jx88V%r4xZp>t#c*nf>q8H5vM1Z{1<0?72HUZv%OkY7}(n} zy5VK7;Ma(^X6$#8`&s%D&cX1qr$}LLyKs|4SQH2}(IUwqAUC+ERYW;_}Ry*|*+GSKr!FamnI}%zUh})8SiNDlb`F znVxgjNOpg@-fnnn2X)sGNW=Deb6&+zSmPE`2^tnyA({$9WG zR#kqQU-`wVJm^)PIp0_|wy-rvsHnOI!vF-QRps2$M$cpLFV#aw({}!RG5_ z=TGIdtv)=sTNG)v!8Q{FL{-k}YGt$RFcGvpL6J>02kA|`h8|IPMDP_1S$1YK>Hli7 z76#+<&d0F8uMH2PzdhxwgGy?=0C$tKPD2y7T;xu^?EH&H=cmd2&MU;%F;FzWI6?wZ z6o11uIMJDd6CV6Br3*&kp@o{4Z@n2F{EUKZpu$5@3w#R&QVZ08g@>ki2X5iPKe0d! z+{6lAi&NEJY?B|#j>nygnWj;H`j*bt65|YVXg(cX3=Nd}7~p|m2hG?BgZWS{XgFP* zd`i!@Dc=&$mF1dww&q%z@-6FgEzL;%4L4fwN#X0-vW3&}1KYO4FORp>DtbO!iL&vQ zdcBXg)K%M~p@9b{5#ud(#x?G#nvb`{2qu*hO>Z)6_iUQ9 zDp@`Dh)Zj8ZMC@V%eB={WooA~Y<|wE;B<6pJ;ueU{L=NQRqlKOvin#!;@L;ykf0wW z9|;fsn8M`Gq;f~Fve&0iy4hwQ;m&yW@SK`sD6HPZdDm1poaIawneb2eEplG%a9-i8 z@ce;+hAiqQBD`ygXMsk`LaBszQ7PoZLc<#sL7%u^r;-EeJuGV=3<=l>DX+0Aoo#Y zue_-}X5qrzQ@wTPj#A8pP58hAMHbD&N>DanI1$T^Ag>S-phC9}?}ClngWJ+~IPF#8 zhXNA%Z*N54zwg2d?3}0A48p*mfIHc0UvdBI!}%qVRDMY?WubLhwq9dZld=AGICzgA zn4y8If)auoJCnBL_TZL3qd8G}c#MN=M#3|j9a}}Ef587W{C}SR(iyAy#F_ZfmPj!3 zZdko~{hLs|fwzWE_bkzZeF)t-;D+r9Z^|Nehezff^>9ZOz^8?Zt1r07Q_sAUJmqczlvk z2JzyhyNSYiDO^=7{Sox}yzMgu);R-go`}#DWjNi5Y#$UROIS^P1Drw7a1!^PAl}%F8noyLVKSXMVnWM`d~DC%bn9DlG)Pu>we_1*4ABiPJXkBL#XySo$OsQ{>AmqrEt2*%Ystg@#!Ta69hXU zhN6w$cE&SDkUefpyiCFlgFMb9rdzG&bzc>}29NGr5208x;9U)kKF`)?5rz-Q)K>jU z9?YDvIC*f(Db7g>!Me68eJaNIM<)X;s&V?cyQ!iqjT(O8gl)?+>TH#k=ub3{~C&3cO`dz z@2V`YR5TqK4h)Z;FkC3^gRH+&mH&dyIALE zBH@fR9{HW{u~w41hVG+FBIRIG1B0A^Pp-|JvbuYf+iSbUkeT-)q;ns%Z`%|tIft+XK%I2{o_|e@&Xgz5)Nz)IZxDJ-!F!6Nzl0=SaW%(=8b!dls+na z(rbhBD`)f`{7xKj#_4?ZJ)M}SYSQgxrJ8drsIX!O|REW2TB^tpgI71$M|8`=H;`abXZ@cZ_w zuer-3M@O5}=U^)`Z}92NoQIe%Ww885N1va)=%wuQ&5K^jZH+jWM+P6e?md_%g(w{R zGC$SG=;1kwM$g?%9$1uJ04t=s!ZpVx2m*gW*rJ`oAM^c5qtDH5Fqhl4B4<8+ir9U7%E>9!w3ME_Q zzv=18S>|?R^k=gceNXJy_ws>Lvil!?-(Gmg?4^h=#BsjGhK6t22oq|;eW{~}JN4L7 zrkXJjHeXsI_f>cc%;7ilotQU9?n7-Ry%2R7DbA>0E$SB}P>M6^T1(aBd(l)GI6K!8 zo2)A8w`j5{5ur52?@4p|J-aU{%go<>U8rmZNM|n^%N}lCG^U1DY%E`C>NXq8I+?KU z`+jXe@>*G3ZhZX?wfExtV(ANiA8ag7Y-4B{hd}u9W78w(Hh&hkm(*v`00Is_8o}QH{riQj_ad*zK`DNj+ z9t>8(ut*FsHu|gJJYRf=6j zY@M8jEDiawe@U!gOD!If@=N1HAbq_e(mWaTx370B`cdP$NO;fJh3u8=$Gk44-{Z7P z+HNZJ`T9f7Y*m-?3#1q+byb5KiSp2)n|8+Q1&{RmyiA(5F=c8CDA$=Kx!6`%w%YP# zhXU*zG~?b+(C(%~Wto$A?>vOYN9mlJt$ju_GiqssSzfm!Nn3AT!=gZEJT|h45B4MC zi_OR>A1cc}rYXHNO69pLBJN)t^}rzTNufU~@|9c4UZdIv)DAy|hC_W@%7*&7xk_Rn zt)^;r8&%X%-K}wS+x-mP26Gz~62w%Tq7&2Q)e^?xMSWRrY3xRd)Z)h|Y5g`lF@61R zXLEvGLH6~EE%VqGtYuS>9XT?Flro^DqpW7Mu|2Z2s(%0=dtCOB8N$ltk;)Yjpt!D( zb9y=y`PcGHXk)-V`EPA|fPLw5iCJS#cd&9ar8kMi^>~M`Zuc{jns3!Jx!EHBiHQ!y zfBkQ)c=)IgkO={3krYG=(q;}!j2vUEc!6K_((n5H=_BmcvM;nwpQkiyDlWrQf@WhE zi$Tl|ak*!D)NaP!sZaDB{Leq-)4#haB1Hk;Q#pDAk=Y;uPd^0rv5_{dH1Z?sDO77C z(PpbsF~}yvD)(1v)xM}nN}G|CcDynlzNmE!#eqslxEU0z_RfgVoh#9{kh=L2)54e$ zoN#Zs#XQ-Pm%0ktbPNVfupNyTrs2s|+9t(x>2hpS$)Z9{y<1h*re;=IuUKDSyrd;@ z_q0Nl^=x%!)QT22wc?MrSZg$=dk#6X(tO|}l)a(841o;T=v>|mKe{B^ZO2y49AS&M zgO4X6&EbIXHl;#j#Rihxk=*6c+~w6eIKZXRl30F;4j)53CG_amjei0?+FzhY&b8I~ zreE__R{5H`t6s)abZfTMSr{@jJ4$*c9hJ7X!#M87hkY2=X6=Gn12YW+3FsMx(CH!| zXlY$ePB_Hqh+06mI;)+)CCE#)Y-_<=q6KdWcK(+H-oBVGP11>*b$&t*ZTo=0GCcHd z0$>?~>(VRfMo4{W)y|{Q40OF-xd{t!J7%c4DXcgQc*yVaA@TD=)pL5m|oV_$Jdb+VQvaOZfR(b6~{q8&%aMr>OX(4H0AvtIZ$-%cRBt9q67FnF^jBI(B zlAV*1`!ioh&Q*SOw0xkd{Oan$;!!?;53PvKrFFh%`od}uOh}LO(d0O;fy$lPlXATT zJENmPxeOZLW#YWHz&bc7)ba2cwAg;HP4 z-Sl>+I`iv-t0XIe0GQ6gv48NDSe)6pN>*7YLFOC>Rb3LP)S!2a(+Up!?Tf;Jjxok% z4*5fc)AN-3y}vhImp+EjJKEUoCoO3#ue3(&bfD8IpW0HL=ZWJZ zUcBHIbh>M^Zv?h{B>Tqf?G4WIrrkJgtJ{4Y;)(NjUx#=izWX}F6X%d-+eNpw1lUlX zj(o-8Fm!eXIa)l~7D(IqSW{)@7=>i!-P$sXJz;=v*I4l4vP66EpVS#}t_|Ta?i}%d zEfI?IL>ni2q79G5U==j+#wp2bqnY_|#gc8zYV52|V=PxFP-76(SxtCI4z9ESnR~LT zai|%z4bdd?KXBv8&X_`&fK$#-9M_rG?QD-EpQQOq0?GDhy2)8xMuT9_?DGQ*SL4#a z&W(*r0=w#yPY%pZKC`Pf`Q(j(v5JNJat|VFFO`q0q4bB;1zKyAM6LFKjafG zeA}(`0}0^mHw$_=vmB^yoaa=8m(6RuqAa}ZiZXMJms}oU?=VMOg?3IowHIP&h0=#6 zJ(OO_H92+xdH?2CsdoJggoZ&umUc1NJ{xSGR`PX!`87qFR+nGQpZUcwg^}7)4W9Av z8sSw%HP`y_GpBTGCaXrZsU@;&|Zy}3gYBWOoL@|XICc+d<_17(tG*v$ukN*4l>2zu*qLD_p7yP7B#U?*|8VQ8`Aq`@cA%Syh z&BZlmWP-2#RQ}x1M1OM8fg5L|UAmWdobtg`)QrCNtJP41H<&5Bzlh9gUh<91Nq8C6 zCOi4Yu9J5LlI~XdLghBqPmJ-jZraxNrWewz{DmcAFus{D1_lc@UYx=BZar{O!9!|p zck-0lj)JGQC8oB;3ltwco6ix*YSJ2yW8krhD?zi^m5*dTnf*?@fhdU`8OQstsEB;~ z$R}_$)Ee)^|)6HN2RwtG%nqp*aR%_qV-e3{-9d+Nl!Dr1dTPU(-P$edp z$P#?5BiAnUm<<~IE;F2hJyxICdJj1N-8Y>e6~hXa*Jh#iFrT&^z??F zZYWGPtXMVCH)S8XgRy4EBa^=DL&7__fp6N!o!*Cp=h*>?(Lci*V72Sos5Z(`)wWs# zX$U<=wZz+T#AMl4EwKsD7@5l4zdX~jwqg=ThqL=QP(u2|JCv9a^GG;DE~}ONo?ECn z<^Jir4Aq-hg0@gbc3*-Cy_`H+l-Ap_qWwdY-)!9K?s1i|+g)PG75VP$L)HyNe%6b8 ze=#RI4}fcf^zPRELiBdSv~0{{rT@G}ygGHg&#*_?H;Aq&Jgx-*n*xGLOpTBKK( zDfi6so&y_LG$`uF0jwXm?SokX%qX0QYPXxkgsM~7eL*^M*U!}vPpNyRKCYE+QU(+7 z*K7QHjScTv#aNV#!+IMB_HKQvT^Dm9`Z$Lg)@S$8t6gkPuW47i+XRJn1-0>WO}oI* z#?L@IO?#%T8POm|4`(~@Of7-TX`X1Ga%2(zo1dwfNcqe2-4Pwpixq%Ds99Q8KAVr4 zrGaubruL0c*ZYn-my6C^Bs#NlYO6y3xR z-RU{*xtt+kGd8}* z<}3KUXk^?<;k9hs%F){le(a_f?j@)&~@CLm!T0rkq$3?0{o4CJN5?^5#IA(-%Zn3<5tpL`W2r!aU<$uf$BeLi zA8ylDRSEZH14D$B?*y>BpF9R* zk7^fT_fMx9>^yKiAaHf}xW{O|fh&_Nf^>u{Y4 zi=~$O)9)KU6_au=0b|*R{Us~SX{cAh_^^UJSo?5-9aG8 z_ZO>pYAg~wCq6Rsh?Vhhz&o+YC>tZ8?V-j>Hql}>PP@MwuPziZhrlHfUPL4Zmc%Hn zJ!TkK2h`dda@!NRcCa|YeR^x=dlzJ{71FLCzV9G`Tza?Wv;;RH@@>Tu+0*QPpif#Q zaBDcVfd7HL32~|Uto=B!l}m~C4zH5%XGXyBTsz!BKf&JO+OE2VLJ1c7tm)IQ$Qe@R z3|zTk(UrU*)T)%b<;$i=+6=uKZ|?=rW#hxWKtz8a#VHc(Nk=8#uKrHGYy)|f#iCJ45saY)1`m+3G zQrAmm_saeup@jlNsv4u-qS0m-QcsFr=ErsAWs4p&A{+kfDCx}T3Q5QuG!0whDVFbL zc<4f_8M7pPmq~ll-q6Ke9Dof13T($Z%HZVEZFKd6ko~UCo>H#w+W>;lUXn;nq_;Hg z^NORjl!?0xwQ91NQl#0_W&b7Ic+B|*U6TxAMM>WBc7gOVch%;pDdHrZ>3th@X(h%p z*esN4h1Ju-W?`xEgppz@J zemP9%*JR)kJV8>GF0|wdNL>cIhU@0-rbx==Yn*>3AkJF&vWvW}3<0O>H2H}pwE)Pv zR^mDOAl_@9rS|V_Ii2_)lD|v&*IG+@e=x~mL*FwNN_z;Ul-}<%o?XH>U{Jw-hn-&l zB6*DQ3Gf2}fCb)dO?>WBcU^wwIA4lN5$^8QVZ}IsXM%3Ll z$Fu?_=Pr7T&qu;{jdIWO8VcaoAk+6e;fJ^R=aF+4jqtfIeAh^aeEy#Y@uacl6M?Or zaF5Tk>r16S0?zi?mI+%Pf7Qf8M_CWi z>r3}V%#n}T)+Y^n_4FYzhdah>)@d)P1#b!2Gy_yHzO1LWREm5*kHUA z*_{^YWh_2BiZjf8RoY2Wo@aNQf1nSln z@z>>GAQKJ^%NV#feQ+4`=3ya>F$^x8T|T^l@)<{Qp8PKyUe9;=a6i8?q4ZB>um_{^ z!jj}&dCF-7mx&WBw)Y^<{1?R7dVIFp>YVC?QNs$EteX|05w=y!)PWkVDxrbQ4*bbq z%{;sMpg^I?EV3nn#VYU3W&)wYczvQXYfkgc*U>N_%-ha&p>25fr;NBsA#k5I)SUGm zvZLP*(q~NH`97%cFkZGqsxLeUIoQ8Vw+$PYFnOKc4i0i>+BLi(a3#lnE8!ecv++zE zwAAy(s!U!^n)#Nxg@Llx0o(<+NH}eU0A#sR&Q44;(J>8;WxWYPWmsOOlncfe#Pqj%1%b$ zgFPNeLF>KW7r&>m8}s-28Q4Tv$a-%Jq+x>JvfaOhx9ZE|>`2w6FOR?DYlFVT<-wf6 zmB5|t5wBGqUn!(e*@p;#q*Q9^ zEVXKF_P#?k+3nxmtB1^Ew*a7l)SX{Hal}k=2 zob`j5S|ml*GE1?{BAbvX@>Uc;Ztz-aDY}U3@;AFQy+1rCzg>uIYa1WX_9YW+d_V)8 z(E&tXDnG12NV#)Q*9H(7LU{0Y(pxpr{GjdE)rrmi{DYaI6G4lYge`zn4S709pj12Y z$$HpS%xpsH?x;rF3#4Tty@}d{`6NodY9~LMwYp2q+b~RIDaPM-Wj16VRx``epRftE zX}o0fRoG-P>2@+%hL2Hb>2w6O|<4uUr=k*`5~D$ zdYvn|TI7av3Xte=TkLGc(k>>g-Q{6*{{xL3FWrq>UoC1MQEEkTmVe(5D9-X<_yNUP zu4$!qYL-u)=SvL`gckt#k8ZKa|AV9+0IlJ*-d?M4f{}8+eviN8)qztiVjKLP8H$4; z1q8o=Z6hSNb>bY!F+FifdbwY9W~mh(&HLMLj~br<8&4juwd+j&_0OVPMpH`I2T%T$-y@Mu%Dv{Z<#-y%6~+N?%H9c}$;HHh z?YRx0!I14SBBlUQuoH{5ro~>R0S<~R<3kj3OhGjMHh~iEZBcU25-UsL?PYvTB^0Jc&cQn{s`&3rFxOKRNLI1 zxm0r~;w{xtmg;I-s`ZP{Gx`!Yal3T@qQIiuv&zNSCA1{w3&>H!sbJjtgMZE$<_3O> z4q2(&);XS^9$|z400f+0_U2GG=w+m>StNE_d;TF24%NpY+}Hly$9=8@d`NRD&l$?3 zd~d{4ojv(I_Yx#HFM|QNU+>-Syjf}z#?*p7KXz!^obrqPnhNPz?GEwC$~}s)>YF{L zIGtX@q)9MKcJQp_xszuk=TSXgqr47+4ivlD+djZNBciq(CaP41=IIQreul}7Z%frM zovP`C#fn?s;Wg|XN~NwkvI^VNuW>tyjWdecz_8BXN+e!_(Yg{!B>@xf;&vp4 z=T)qZ|G>AyhdA&UH+P_+^xO1?aJHpHzqV#u^BShZC z5qp(VUwt_ij@PSMi|Z^;tzH`-Jd3L!Lvl1w*db(J@Wgtch&e4uz>Ju(1*ei&W?2gW zgmQ~8%zckx_t@<#NW`Y8$bPFGb+EMoim-jEHb_hv=FWoI+vbznWHS>v zMy3E*1sZq0oj2$Xg&FsM{RMu;IonPyWK=Pes|q=$OCaFLu<3-*cE)C3rR4{h5 zm0y!Vq8P|vK;-O80-Qp-gX`?z9$4AlPIRB5wKoj+Off*7Skx(B?VQiOe%;QZ8U!v8 zBc7OpV90d!VZcrLx|(sQ=`RRyIp28%)cP6Uzvg>{1T_-R{EC1P0`_}k*F-i44E&(M znn$3H$V9+65#v`S0s%O$dEB4b|2$grMh&U1{#Ww4gL|y0F9z#^ZcBgYh~& zZi_eQac8`l2S$)zjkof`cKbVV%)ZL<;43sJPI85#onPg1|M_)dC1g}C`={FUhn(_8 z<1WLu-$TlzZKcDv=Xqy1JXSw^`+!CDvqFS#-@-dbII{59Ud~%G>PnXklrFkRBw8C4 z9k=--d2!vU@ZdG@WA0ymf#R3xNGO`!)m!F?lRP>bcZ?b*ut|%iHv_#`K6I&5r+WdH zMA6canRRt#{eHbxdbVJuIh!DyP51ULr@e3pA0CRZR!~G0b?H=J4kTpCop44aQe}IA z*4pI}dsls#J4mSAY#b5ObV<&!iAMwvdLsFlJO|f|URPPU1gB3Gx+VAnA3@73y!H57 zf{!4qho{$tott->`uM~ym9wq15hVTO+`|&yXKSg8z*kY|D zOMgf8+)~;M6!M|{PI>v#V+>F^;dJDk`tzNM{Q~!U0e2D9ysHTY4iD5SSq(^Uq^y{8 z5juumMJEO~n+bvO1mONlDx&4QnKY!O)>_prMT|rNwbJ30s|&d%&L_|6mBmjvF*HeEJpiJ{2CuhGj`gvNXFpXy)LaZ-X1o;x%dt>t=1fYIvP#JRKf9gRplR+4QCUsQzb$bkSoP z)DysLua24oH#!%1#`^Y5U@<-nPIKDVuar~2M2U-`QOzTP1vl=BWr55gR4t0OfXX0?pjfc%AGBPg~2-@8dN;7+3XZ ziXR;-?4brH%GV`YBE2NX-GJ<)?9Qr&u+U*m%utadoG1L~$au%2IQ%5{l?0 zRBUb#27##2+@0}Sy>LujvzO31KJtONyfx@;&|*`od))B})1v|xqy5=pmp5CN)m^Vm z&R*ec%_#X*Y(B7{P}88-DjMk5;zPK`3puW~H6^tP9;uW>?xHZ-7s_C@(+@y+8% z0sv>3sB_f)+#EZll-0vRxO!}H#QVp2PxHRhunBC7ruvU;M(?j~JF0&7Z>xxGEHg#F z$n~f|xDPx$t>`EH!Dy-x={af}UtsA#ZQ}vzlU|(&`9(d5A)a~qP16hv5fEeW#KPxq zGxj|>nw|?;@GrYtG%|VK?~CtoZ}^qqjrJXAyNr7LDf#rnnvz1#8SKD!{p-x5&NZ8y z?VFP?W^Qy=r1R}NDvzS zc~!oCw@A`AAW3|(zQe_K9vvU zoW6WyQQuI6u@Ggj% zHWgMg&f7!Ix`;R0RgFE2FSkQcu#Nf@s7Q-(aTJU=6JTUj_LtlM@9EYY9SwvBpQ9C^ zYzMv;U{ez;O{n3*`!>O_j`GG;_D@aRlYOrIwOw-M8p{X%957Pg&B2<`%^rMi4%IBX zS<2Fkqo5O!QbV276$#PAdfpp&HgVtF2cTE6vh+!EfCtYqIlJabr6jbrY#>oS(ekeH#0>a$zE%ah1rWnDZw7X~itbktcr;KWi!s6^mlrpsoh$O*?+m0ef zEycKIALEw&qcE;;_l+nD^I11ZW-;YPAkO$}Yxp25Kik2UNO*Wc=+Xjp;&QiRxVv~( z-{1oRK~gS8X5z~NZ{<1{WnN6qLXb|7G#ny=_`hrm;(M?gfk6a4fiAnPnk{BI|Fb-m zq0%!^^5N%5;>X3v38qtzwcCWtKR#y%qDcdtn z7;iIOAY=eR)VcNR5nBIOic#1ERoS6$G{3bfIVUaE%4B;06N$&bH;+F&Sh`nqW}}^R zvX?4@b%E>#_*(QBxx#mjW*-Z5_TYD->~)suaCTp0+ST&-k_1JT+0tPxnCWj>fb5cf zYad)ggWw<^j%R>-2#2aw`d|)XkUXF^>YFycaN;&*2YRK-EKad3oy7T3V_P35WNjOE zy`QX&ZR>ZPlWgnX^)6?QB2H1neD-XLm_@{Z9HQ1+3)-p|J&o-IW6`b9YS60~Y?rvg|-ZS^7%oRDD@Sb}>kI+xk-O zMcncLK9RA7j%gE0pB9anQ0>A|RN7!^=Izzq0dX;9A}oIKsP+Za6&@O+y&7bV&!m8D z!%aan6QJ86FYAoTZlMc=%b)5VNem%|6)$|zBLKp5sG)Iayop^kecTyRtumqeC z479~K5CG|k;C?T!9uAHzsR?^gOt6o4R6)Hn{v8syU%qH+3b}E@`jIe&)bYXiVWRZM zR5FcJrYx?NgS2KpF&S>_4V9;7%Z?<|ZcWe-=Lh2liCyi4ZM3jhay>N ztA>aEjlvQBs2-HZwX_29UTS_7-z56mSf1jmgJSi^>oGsV4RqL@WxGM0jZ-Q2-`n5P z={KU8m7CzXnFH*2x zyWI=kn402h-Oa+tZ``4fChJy{sTrm??7RN!T2{Ky1G1K+&&Us}VCvehx_aEdr8vgh zug@>*Dl6+qtA;M*_XxlH-PNmB=f9Yse~vdsT>t1ESmF)v0zg=q3rt9Xz#E|M{BRX% zspKe~Ewpp4m3^m`U3KLr^4k-Im?PNMb-ULS!#cEqnr&fx@M~TVyn$f+@t+vVKDb^` z7WWzJ&fkA80N_+(UgIqr2oB%AllqdkY_j*wygQc%8gJ>hPx-b>-m=-=SM#2I@P0Du zU_(BG`uD-w_s=}oV3Q)c5L}J%9kf{If_3`u_8e-u-)3-W7M@3<2-G9tL2VOQBI@P8 z(@9FI-WGLM1z_3aw>etbwBH__V<-scwIx#~ib2Yb#nV%!NmB-f&YLnwP;gz`7q4wj za@&-N)?=zO^I6XUPiV|d4pBKW! zrNq=M)tLG7LR&OqGx>A+B73@CIHL^6qM^>R8`d=@KktGp*`2nE#!S zZ&ugAoR0}eq~?s7ub@T?>IP@Wx#-&s>#8`*!>~>U6euzf_yR& zZ2Ic)OquO>@>!dxtK19B5CRr9JOm*xYs_lyr$649)nrSrbUngQMU|DoB20>%fh zQpR-GeMD3IhD6WQH*M}7WzEZf(`LLM@(V(G+^ZRbZnxh?0zR&kcZwg6Sy_BpAwq0 z`+_Vt9EeAla{O*Em3!kie$p!-_7b{aJ-2)Apl>87XP>**6k@LCt0h>XwRL@;LW&#V z>veYC!sf(J|51I?G~eyfh59Ti)m*R2@6z&yA|Gwl!R~hp$KMk&S5+K=w~7I};@Pkk)+o7t{MA+fNQr8t8o@tp`dFZ;CuXg~8ylXmZH;EiI_- zYU-h2rU013iw7NM1MhYY-)oMWjDa*oh~jCnlp847jD6p(0-+iu2%#iT1!7wHq3%Ca ze)u>G|AId}UhN?^gQd9X1;}v;KM&d&BQGJm82K;p6eIsto?_(noqgDdZyJ3zk=s=F z>iqCQAd3;v6;N9M3tb4qz=ut1CpaN_diUy8UMgGkHuWF=jGSD&iB=yhK6}7}02L3h zc~7{``lJ$5Zj&ufk;3xTOe(B@h7Vih)KV1Cf0Tbflglg?tHPfhTg9sE{_-T6Ls}e2 z^|(P6Jl6P$C#>zZJp0PTk?~=D(mdt{x`@0(kDw>|(mH2fDA(*7ZYX>;>#M`QP`QDW zJTu(O*Z8pJyh_TqC!AEZvn7z+A}$7W!eH`CO&&FkvPw!09(ajIJlFb?u|jumpo!kf zT#_$BzD+aoMZA1)K$g#1C$Av%biJA-Kv*C|bJy^p!dHX7+`?CfzQib-&QPy95TpZO z>hNxG8Jr1lSeM;sc88o&2o-$3wDv3FONB87BoaL|{}E9g$ z3|5huEY;wYpHqHjZmCKB%ZIo}hSx<-WD>Oj zk&oG}U+1UtCxFS5y4?@qAyDv%>vKmXwVrpAIvG)aYWCtXrJ5PaeI*nwg z$EWcdp)#d*c81FIO5=<3PNiSR>+C|AzDcF0v3H_0B@zy_Z;M)ZtOrcapTPMeqcnZC z1ybts^zpp!u-9;pe>Ql=1F9n?V@p42a+23?{iz0E{;FbJu@ z0<}6k2>H-bu_6Yiw49$vJ7c`YZm8^p+bLL{_L{*F-v=aU^{h=fx)&=cq4k*puGmoC zw@6VC{_g4>l7V*%Wmd3$J^v&Ae@zME$z0x#@(+`><_P>67LjX?A(8&28la}g((`Bh zOEd2|A`TOw8#IfCo@#5aLM{36W}fZT@13F0+=C3vb5!#EExRa5R-WBtUaOX2<9VZB za%8zWZl$eI%znaex`hRl5=O&&4nZ}wRm3e>(0}5y#ceX9DEVHkWeG~K!ZG*p+Z`U7 z3v{5iH`E(x@GyYtWlq|o>U&hl_W)B{ke}th&x#a?&9EZnh=%U`m{9Z_7qIfpup*tL zhX25d)Ko^XB4vR4q#}7}rWNT}!HV=;L=);7E%mh_d(V{#DZ&{lh7qRELAwKy&kej1 zluM6dG(Gw|4(8Y8>T)T$RID0vt`EG8u1(L1!fIaBN2Q?Zp8WNZe2bRFAX8%wQv)Y? zn0=pOcd}s0=$U(`L2|f&IBad2<$qSbEioBlPKEM&g#Y-plI^vaGdm}ilYEIU!2W1> zP#3o{&X+MDYcAy{vRFva!jETr?b}_S2>T_70{dkS^=^_Euz&ju?C(@bm;G0;f3cc! zBJ6KbM8V8iZ8hw-__z)#J*Jskn{Q#uhe2(=MMkyPn-!JLvg0LeKE@BDbvAR?T1Jo; zdE!et?eTbZFPQbQcbfl`Z_Eus!}UF2=RDjkJ;#CwOY#LVA^C^2%i-(GK3l)XXW{Si zn0NdSp@9)kAStOUbvgvw24}xVJpF5j;9oXKVhXvT!F*vx#Ft#O)J_XWp79O|I0h>$ zmYzI>-3@}09-F(%_$8S|)G;?=?rsj>eAf$1BCLS9rD?V|i*U(#CEf>L2^Q_~Q4+Z7OK`U& z;+G3(iqJ@393 zHhw+(kc_3u((lbaw8389l{fP&kfWb(5aQpN?C{8w-0e7*;*G6eucZ9Ryw39TKEB5a z;LShOE%^H@^?J67yX!dFz~NsdYE+ypJw|%YmatZ2VtVfT#Okrvrytcg%<_(hptIhI z(h^u(XhpUA(b~e15+vAjQEhIynmxB%INYNgQr2_+Bheyx3JIA#9i+18TB2(SSY`?a zZ254uV(JA7?1Ip8dii6=#c)nk4qU|3>7jR&g|?C zPNtgau-uadBo;{Nll!Ge zL(>XaON5WEdn`u~PA^puB>5~I{&|4`0)qd49qwtJXR#aDpxp^e9%xsvS8KN5YWHdL z$oBU3#tXy46=mfo<1ep#d8E8eD98m6QpSwn-pIT%FAk(v>!{&?`9uprm)bm(g&X(MYu=bX z3L}aLLG71B4X%PsCX<7$B@da#$SGcfd&i;zrWKsxRewfQy!1*JqgOtx9WNA7sXV)8ddyO)SxV__ucv9fDnf08l^Jh0-9#0!gAf&Qi}$?!vpiMAeLO)J$tX;w|Mit7 z)6Z?Mhv6s@>#x4ODAu3pA6>L;+BfJNfy(HBo@4lhYmZ+x%OujZ=fo7pXb=WG(;Fr$u)m3Cc!%$&#JoABY@5;AY`q$M`A&)H=4Ghipl(Njcprx5Q9ovy@LsFF65f2t<@7H zG&mJAB7ik(_lvfE%(8c>rpm6tYuY+T^=f zsz}>%rzEF?aW$Jhr&(K<3CZ2}KJC-K@Sv2r)C8xk9_~x0XFR$H1X6$8z|T51eCGPC zrGb~no!M|>m(~%H5?|&EAqpm}@8tZgQnkQI0BClQ{DRBSPB7{D5lWdpCD!KNC@O2# z^CQL>VX)2`Sxn;{+PN#D8a2>XFq*daSsm*=) zJw9oy%kC3V++;#61c4AndTpXW7A?N9x!~7!j`)GwNjpy@A3?ZJOhG^bqXz{&Og<~) z1b*O}P9z}=-+V8l~z;i$7^d)5S`J8U_fn7-mhQf%iix ze{h4VF{C@uWE1jvJn2rKC*7pQFh$fLQB&I*-0X$0rk?u*EtQZoLu3zedEJ2u2<{jt zpVlgMAQjX_ zkP1@#9zkmQQ?&3n0jjWK8CW59l3CFO9pRtAlzBkkz&CE*_{J7mGKck|K795<*!qm{ z6nx-;Mw(F#?g+OxPKwqYk8~naX^|-nvxwN+>DDGIVeJPzj?i;3VcXY}a#~A-V8+>_ zFU)I!KBHvG7mLrAc!)&n*^|FZ>&N&W?NAu4GN-Ze5@@Wh-s33ab%k*53DS^&&{i#$Y*BuIDFI9P(vuiVU`M4VV25s6=q3r6{aL5uELa` z5qxJ?VRFVZ0s(y60uf^Oaw;5nNNl)P?q8l|Uf^pKun3H}m*^m@g|eSBcv;CYl7fpo6Uf4$5r^Y#c&QETQM>x66~ z_It0)V&9)wvoNs%7j-xrQp14+lM zw#a4#AG~?7H1hspi!D(v(Y@J+gEUVH%>SS+4Bi1YV}W>K;{*58XE_zq=wo={^$|q? zjabV422vdWrA^M2WTE-%Q>6J0g{UuR*%UrJuZgH}hP}h9?86?jd>$ztwB!YT`D!zE z2#pV00-`1c`SID~%*O1)YD!u94?uY@>kL+S_(2+MQTs{7gc#mm2sq>i6lbC92e_7k zS$K?q0^2;fpwKe(TM;nRO#^45LK1Hy8+5FtB=J<2h zTXGa|OQC&YF%{s?V6^xB=G;e$$@di?c4l#BF-Wb`U@A1Qt{|dZ?SAG8-ElKEgMQ_ih4}~iX$?w=65FhD|NaQd!#(b; zb~|g;bidI`z!#X23HbuktX&Ho5`dvY@&$HoR&?l90>*5=-|hZ44n(3 zk3D^4R)CeJ0F`!Pfuu+ODYGD&G>MQePtZ(ExnT^ZyWNFeUFZY^|M%9V3Xw0UN-$+a zyB!$1$mu})AWzJ%SawZ+!4B`G3TSgWhAzYPc!}{HZw8-zQ74tLX>UKLle?gpz{>9_ zCd9@RDpiDn_M&3E0#P=I70U2S6&<4$3+8MqEv=}MpxQiD*FveJrJ1E_3o*2hB36Og z9sRGXB*eym&yK=kE*`=6?_FfVg53=JymE=$HS<}bIoTfLjY;$sO&<>j`MQAr<*b1N zZOydUlynJM8)Fu2m~pQ4W4N?|!vwP-VuHiq&{OG?z{c45)~4z6En@bP5@jXU8J%%? z@?)K9;RlEuO(_b)Y(WVT^!)@|C<91}-@Z64f%G!FNFv!U`oKos zK8uGLs%P6IgDE;e2|K-G9M3DiVD2k9i7D~D@;B>M1H=*p+}oPPfz<5M#(PJR{g8cZ z6rCRpp&TYbp*;DgCQ+R!t>iAwtqY8|2WguY=xMcJIiuCVv9IO}S6-?U`~iK!ZTosT z=jbz5Oe|B#X`SF3DswAv1SWwQdw^WKHjzbpDfHhv7}xgLs@yf~ojtevRVG2xLcKDkirW=tp%t1b@_G=ahO$+c0ggWmT&fG zc{MX8*(m00Nz9q#$K%BE!y;-NKfT_Dy5v$Mh{2pWztoCcNfricX+U5E@r>hb6??&` z4A&~-)Wz;D=%EpFetH$Dz)P0<3rBx}aiB$j#TpF&d{)CkgzZ#g1*%|)+ZNhy`EV=m z;8n-M;bz{-hdcPCo(3@oaQ|LqzorFNFncj=tEQbcd-Vam#OkK%h}hEsGu2K_O$O*~tfkOfaNTB_G&Ijbjgb$9*&0f)_K5RN2E$f1vT| z05-i>hX(%8`Bn1q8)qy1ZIM^Fdzq_(WG4qvh&*%1MCD9|6HZ;(CkF}b`w2b(w|(~pPqH4tgpL!7EMuo zBaSjI-|Vd3%$NqGw-@-JY1-A~7Y8dJMFB#;ZdJJ*l8YyA&puk0yrF-~V~mrH#3#mh zQ;B|swtjQ-CC2gTv$Mx4IUHSq4MhL`yEz=){}%-%E$B5hj}7@VC71npVq~a-}Q5-(!TALCJl^yOIgDS z{QS=h|Jo4?|K)Mvea{epAmqZmDge#7z9$HHeB$S%hVJ_fiP&`rtN`YEa*v9#hAD-% z>xu!`kuUqL{K8?YY@Y;^6enFH=>U$Z4)#NlPpgqcP7v`cA|6o$E&(If%Hsnc65AP0 zaKpjO#NSfY;lzu_h4+0~?IZAKC2;BcR|5WpfH74ChV(s2z>G#Qu4?19Ygr)nLt~hE z)o83<6^=so*NmD^bK}k;Id_Fk+Flc35d-`E=_T_&ea@; zs{)VS7edVv6D>mns?!Y_H{B`*yJJ#lwY+f{iIy#qV{h_mT(?|a1Z~mrY zYgInbJbF053_jU+7$nAh|6~PnwaYi7#`B(y<(+xB|I0U}a+mkJvomi_;V$TlAJD{) zc;ytZKk1elcB~j{hEWSn|`;tf!CEUZr#?-DKe(JLG<(={(3}%W&qakQ!w=r z&7fa|scvC7F|@1thl0g1y{BXuBgaEtS&^?D_8@SVC?4To@K97bm5~pLTV}L>LN9CA zil~E5BJ7Xz#cwksdf`*%nU==(O4wDV+0slV`)Zc! z7wD1PMrlUeq;A3^+^nbAgc~Z+(^AA?KSEFAAO20D9^Jp-W<4$RDTN9qDnw5U{U7j8 za_$qDNa5qc#-}Gcu!9Sp`@fHRfX6xf!%zvxvyb+7yYH)jNje4@8=A^g;=t_kf~{o-|gpiRB_dS^=>`uzA8h zS+*`bY;T7JFME3`I}*7x^VnsX(VHH<7YtvKxsPFmP72h#u`yYYPzcW$Pwh%0hN@$* zpqt{M>?8fF-9IR&2W+Qsxi;G0>8|9HnUFkG%A)-!U5_{HGw4^(YUhZ1GB4oxKYor% zz55TGlas;Bnb}7J*^xl@SAng+X;1!k%Xi<2J7YXsi%L>%R zL*s*=zXPE0R%WYVfxZ5&7{j2`-k)sWwB=nr?v?XJjkVB*fYukeSQEH$>3L88Drep1 z?nOs&2BZ~D!#*Z^ao&Y`qub}ULHd#}Z+UU@-8IkTL)%853sgRy53FR_MscwPuHv-M z;hzssTK0Ipej6{~R^?Goh`8(((2arxsQ?tihvBkU#8TSf=z`W)fbD{1uf&uj?ndaN zr2|&2uOz&{-@fbz0;twk&i4YJF9ZUm)>mr1z^4eLcM7>+s=a@$u4gY<|7V4VyMWhJ zd?>xQLQUJV8|X2?_D|?a;p{+v`PQob;o=mp`drBrce*z_%lpZ+IHnxg*ULFMC6}!t zm(K8C6zPhP=E4KpW|Q*3Ct?tcXVd zX7(+$;+|qFI!aqX{lh{n{2K79hO8Sp>iIFAoL#(sgmv;nwUarewebWEQxr0mcZ%9^ z;;32o(un1m{N(%k|Lq{P(gkXUZL^h+M&#yv|eq ze?01a3#onnEj~0d@NV{S1GBQnxYyO3h28XPaf8C`(;q~#r_~?wMJq&|U=W9To*5-IJkgSm1bbZm{5n1Lmh`XiZ?0e5rU6&NM6ad#Kekbrdk>4r&g8ZaO zEZw^b<0H4M#o4zn@rB^$PV^PTi|zY9m&r6X16VnOLfd5R8-&`;`pkGDXK5X-ha~fW z4@1BuTpJ7A2Eat8s~|oW?Z(q=e?{-vbnBh$4kpc`SqmR5+T|4eAD>c$C|qrQ6yk2S z_bW4UN~b89ql-LGT<_w%65*vH*%LR&7t)kt(rB2Vs;|kqDi~fGWR<_BJUq2L#=%ev z`x={DIKnWTx}oC1auTJks}On0HZ*U~ulW`kly)TsT&o7GnoxLZ$lLQHf~}g;@YGUo z&p%6&4~y4yWI{jt=8h2v%lWCP(S;~`?o>^bhwH%YTwhM`!kj|Tg+eeSVCGrEfAdoO zjMK5Kny57=%0#Q7WYX5~WhL{y-vnAKDU?OP*X2nj4UKl=z-L6$VDG~Qh?gd!&(NlK zw~z2m14JLcPx1RKzj^$m2XuVM7BBn8ub^yT4cP8#V2rGp20{CFj__qxNA1Jv>%?iL z=(>!KQcm0p_s2ffCR$GB9635RRTnkqaLxEK49VWmA#^~7TlP}Vi_Y&bPZvd+o;QCJ z2bT@nC!zvP%-iysjIwr}g1~imGB^RIcJ~OG)-Gn@K5ED7Rk;vTqpWp8#nA$9_gm(5 z8LzgyGIQ|u+|HZK6j(+73m%yapcRlPbhEgq7kXL3JYWxj%NXsXDnf@{&Rl!>@0lC0 zRa4LNmz{jC@Wa&FirOjHFvK47PU>H%mlUWmzS7U@9;tI%5E`NC8>PTT>3C zv4bEj5RmF(0@2K60Mxuf;i+4DU>SSSn(beq+bEOr_DmqxWcI1_JO)hz?VX~x^2{0} zWG|sJyOY}%egAmK#NWSPpK?Z)Pt6gqb!^lvIo-J^DOVR4ZD`deQqMy|0=eW^@ zSZ!PDZ@pZx>uq(692fppOc8Q>0J^%YD)E-4UM=-irLKXRa;}w>)x%eby-qY^X@p5y2nG zp1CMa2y)~gZ!049rSI!mV{=0>5~J8Ln{-TQbF)*=C3>VA%T&+{6S-C_#)f)Y+0~>t z5Or5WL8xeOgb$n_JsJ5hoLf;zUUAF`DT->vff$0~T_7{_O=w}K;(opa=Sbs*8SbuG&y^b?)TMC>euJ#?ws3;=znTt&S1Kz=!M^LghdR39rx+qhOnF{>rXz zmWRu?ChPem5m!p1&6W2i**Gg}bKm%~q4!%pziWiA4LNZ}{|MjAGzXsZeF9IB7>R?m zgYu%9n=sk;Akv~0yEOX`Z-(X#+wbO$yVsEwyV$s($ADWWBqsaf%d;IEh-g;^2Rpc8 zu!F1Ze}8MRgBKsagXv1W1=NQ(0%{hc6}2>e3c()sQ|`S3g>Mx4T!}hwx%IHj86uf? z+u#2?X=`oYZavAv)AAb`!PfF+;lFrieOQ!9d^n=xB&2M*PHreDSd^^82->!=Z}Rf! z>XPU!xfy3gzU2ntOqND0r(al~Q8Ve^rd(adOxog@Nd*sbu6ljSa}5RSx#}+NeO=LL z*C|MzfzzDKA(J_KkUAu3?IY*dWE-%|Pj)V2;@CHzKj~UjNXj};UBYQkbckCz1eL&@ z>hr#>$mp(DPlm18GMV33~avu+F<=7&> zomB){Sec(g>_vHPlkwIf^E;Unx7h1-gPBnE=d4*lOdOp2Vy(gS*7`l%o|5%Z`>spj z#Pv~djk7c}Q^r?(bc?-@ZKMnzF}LL73v>;~*F*C@F}{kJ-RDy?JQ?nerqxv!<)vD5 ztvWnoJFAghPjA>rWzsb1FP3s$Vy<0Da}DRPS?$e?U!x2T>?W}WVSzWdUSQJq#?7kEyxVKd#TdbZ0}q!ma8L}-4X^jc(PTvfpDYD z`PA~}6WBKR74SZa-#C7Pf7qBSv9`P*{#Ce^@T+?G)hk3kkfE3>!y82+p0>4`Q|+0N z9))Wq*2W4r)pjkG%}Hiw$!BHdVX=B!{b`1wmXprzh5O^@KB3M{{s9$Gk`urxRP3DcEVO z2l{dwJDsDid?aAZbx)zHv-!<)emC$e=O?hqKZCDeK}>A@4-|l;D<|i0M7*v~>Ur>~ zuazWhS89bTd^i>qD|d<5H=7zGRsokVjsz9i==iG(k?Mv)v2d?SNo9-G7V3Gv^X$a? zVsv_+JB~R3yT$fA?`RcfYuE)hs15ggGr*D#W$+ddy{p>QjV_mr>$B27nMzG zsI@hUmnQ&LXEP;74vdj+ z89(cc891N?l@2W^L_r}bXo*wMQl7~=muMh}E6s}8UXUS5t`@-r23BZb(WNBTyeOtz ziWxo6z;iamWHYhZRf=N`y-UKF%xE!}99v8!#Z*c$+geRAzr*4#yJSaxh7GfIuFvo) zeI@;q4NKQ~q~QE0C2jqq{0kcz7Ou9wkCol|3ecaLM1-#!=O{pf#W~{zL*96-&*BN- z;e5PTC7nkJ-t51(rgO=JDEvB62yKj1kL_5};5`8_Frd!hxcMUGPS`Z@Ace+{DW|2)6 z9~YK`0x=-RD<_HNz&Q3W$Kk*&5^prE@ZB!ZgMtHuturlDQ_U?->-G@7#X;HKf-=$$ zP#o$sf0yVy>M&`(0vJrMgGBG=vk7utAhri-!gzMe^Z7F23uRWmj~Crlz*GDKB{5C~ zrBCrL<%nHKR$9kjp%J{`+o`r4i5V|tz=tB<(#IvAMmOkvl&yQPX*j2dkwS;BS@Wla zYHz7{=Lk@9Lo2|kG!2NoH+~BgcuQqbcqjRb#U=t_*sScnN@DeG)vsmJTD~jDsG%1w zlN(s+g_TV_@OGtCV@g>VSUFWwRS=}^l9Ec!U0o)=p9D!E1O;+uXf)e%%+_Z$X&`8= zBS5i}CJNuh%n0yeI#NQWh~AYk^--2u-M9wYSTCeA|Mz7 z5fBcCh=M*2qQ!X-l^+Kp!BVaE&TyDwz=SK5gCwev)n~ybFv&%x(vAg!Ge~m?jtoRq zilZgkv-=fn2S@o3{WGfoLvX~0LUUX!Ei`m1w9R34QM0ARbg}aR6>4Wm_h@_gs#~Xw@=GdRI+}{>$hr_xfhezmNoT)g;D?j7Z3bKRVKV${Y;M7+0ZMajSr{4ibxY zLaX=2(XbQ)9+YGH#o&(NBz;8RsnZ2CML!YJ2CB5LvIA9-Q%9iFODiv?oxxJ03Gnj*cV&>&4d88n~?n)MBgq$r+X#kqMW zp(4yTya88tHJ?P5OTK5 z`D)cjNOEv|tX$zO-L0%^9;N9pU>Gw-1b+3hA8T%~f`^dNzsvBEEbBPWG-KR=j7*m8 zQD2YKf-Laa-ZhO7`W4EdKMk*xmYVS=VG6DedD<8m0`pf%s6*uy-~^qm`v*bZPtZ9I z$Vv$QS5$n>8wT>Hb0BY5kUyWlZq8;3d9KcK~2{&;Psu(?N&##{0=jFOK$(KZ7-sKQ5#Pv?u#kkAYmAFdEtB z_HOvP)-%4%olB`EOL7>VDR~hK)F`7I(XUvWw;h#;Z_7uVWg=L*Qa~0( z&G>z*s;7D#eBLa`scn7UUT-PIw?eNAggrgNb1wi+(EG7&>{Tsmo4t0nPD@k=D?I{W zs7Hup&|#!UD`MHVM3lFAF9=$QqojE_7+<)1r9;5wguz; zN-=~x^dt#+MNpO^13=gcvam)eSZlok?IA}svT%7$KGkfur_TCcNHv3~ff$58C~X+J zcqSi1^X96u1I8AJ6TOjZH_9$lQuW%?XF81!@;NwU{;cS3rQAR8hKn@#WJiMk6;g@N zV6(u5k7ddIlkwGKhKy{v+`006!-yv4*o%miZOVw8Furp`$E3>E5=5hw~k*s=azkoHJ%Y0g_%APIQYOSZOK+he# zB;G8vI^5P{i8n^D*~yo3-Nt%YQ5s_+7oYxf_MPnno3rl$t1oe=kgNMrfr{RjT}3aE z&z}nTihB8yL@#M}-Ni(kixP)M(D}t%(elYubcmvTa?fqiHkw+}`zKe?VJ%wxA0Nk1 zE_%BcA{s+P!tq`U;5C66MTkC{)5wCR#_4Rz`jC5nPA)7U~@>dAFGP zh1V&2nmY>)8QE3XE`-`TOG5LjQLpH!;z<`+BpLE*t0Qe|wMMnE&_1NbOSK%Q$_BRx z$}HuXC!RPy+3e+tpG5tPLq^C}Jh6?X*|bmiITYNh6m2~Hh434UFlcZ>OnHsg>2i0w zAsJOiaI`GIhU3b)41V+5*m$1AG$RYYcutmbIqy~6mpAMJr(Y2Ua@4DKPZ zzeHN>Vh#44hf=gL##{ga7<+>T0{=xE1%ztWyQn3*=J71w$X#_;gK99foi z&5=;SanV-ZZq4<{tCl_Vbuw%zGpJ-m3Ym;aYD(e`SXq|8P>ya7*@IuaqR= zqVkz=Y9d_flW-Fu8U@y#@K>tyopQHt4Ve+V}D3g@I`~weadTb@>PaWGHF-O6W;C# z@=>?qAz4C7Y`x&h$rWo(su6eYhgZIphXUE5GMoc^Tz`Bgw{SCL@mjkD9`+x4d$#cgr0Va{Y^Nn$ddS=JZ&HfsiQD8=cL`Nwk^Wcj66!#VG59gZ zgG8(jYo-XfhHyo4b_kU_NQ|+AYQ;mczGM)%@)IIZSSLkh9j$cp6yI56@j5XMGvn!{ z!ab{H%w-Ma>%@edi#g`p;VhSCpt1_1+p+bISI4sq!+xb5dDL+!i(N#)t`J;86)7`! zrpEp?I+|scPmDMw^{*Kzw`m6Zlq}>WTaoj0+M}C9DfAp?U0|bQqV@F=;0d87CTW!ktsUmWYhJ~p|!4bq7>NKc07;;^;w)Wel4Nw#Q#^0uc4?wV!KtPWK)GTQmyVNF;1|Q}lN@KSVG~J0)}D3W(!`}9iQ6V| zA$xu{jym1A4Mw@c)V}|7l0kg(J-8;W{iD#4o26@#B*lxVokQX>=?&|sPX47gbek96 zHs;hmu$O#ehFTLSb^TOMAoHzAE$hC+2g=r8+5ts&@EDdV0$C?KHNO!;B zqpdB9pDZnEu@7CWElTDht-5yE2mSlRk)!dmp;mf}{g5igR4j=Crke#nKS~%5C#JS% zI!dBH#ggl+l;4`?Cy@A}I1&6T7r8$_GE;|tbGz2zOZlrU*SFeHS1r%CX7EUPHd=LS zi*`wE{k$1a1de_;Dc6~l5gv(cMH(4AZkAG$CGno8qk?>EO}+*mnyKQrnW{`C$Kxi4 zU!@oPHw=1DGxT!jWbOC1H1x+pLBWA9uw9_V>RihV=Cq|DoZvQ@6pJ)TNRpgN5^H9A z;@zY1fT67DF=^g;gL2<3>R5gYo0#bWgLS#}PI7Md*CgI`bzGkK)y+yN@fw!0ZxT+D zawS>K?oP|Qgvp)&4KOdAHw6j6-J?4#FX?X0&l`yt)7WBv zN8N1Q(-J#eEaJESdA*jMx=kwnHSiQ9!Uge9FCAeQ^$IFD-a>s$M)6b^6WMfbTukbN zi9U7|lwJ|vom{?lp*Tu0EET`Zctm!Iz|zs^VGO=?NXu*M6K6VqB2%<_?9vJL3nrAj z_klx}0LA^MZn1H-a2Y#52yn>7;S zqDH1Vqb>GGQ&YB^ukg^zC)3N1X@=;K46|G8UwjtyeNOin?OW=}JT04vJaXJ1!}4VI z?fjEwyJ$$ZsE&ww_la~WIoM0)O0JRJIA^qECdd{K@-5PQ?*;{U*3^D~!eo*1s~C_nX+Jc}+jF_-!m{TpZT#z< zW@kHD>>0A-C^Z%7oOQ( zQS4>mis)TP9$dBaB@c=hl4p+nD^Mfa2WggwJ>yc#(=!+BG1uH~xq7;JO&pY_oNi|H zY`Q3LLuETkFg3 zA30|>zkmM1IHAssPPxL1*+5yedg9UvqVepJ=n3{!CR%vk4I*Em&R5YQ?~4g7(P9fIWmS zk;FeUhOi7Mf$22-%H~&+!<~5lIjaDYN#C7l?hKT(LK?O6Y00 z<_BBs5Bp^Jxe`Z<+Z;8IuY84Ao35jk6Caxa4JR z>2UU>`ixaQC~_5F)q^+6i2UV9QM%>JNZt{OwGva7nn&mg4`irk(NLc(ov0Z_!uEp! zCrr-P({#pers;(JYSDkyHoSvnuY&|0G{#qDmA7@G$xQ`5$CzCvFOLl^nB_hEmaigpP$U8nF8=NCBiHFl0 z5*=yviU|_6vLH4N;=1ei+6W2bq|=hb)~KAn?Uz43`Qzav?#u6DuEYVQDAm-%a*P^2 z6~W~Mj3Gd|k%m;{LWH2Cvnq2TLP+e-m&$U`8GUzf`~X>@lE4H5*|7sh+GFMQkRyL% z?h3u}-vj?jMByW$H_nMkhvns47A1deF%IICE zXC!)EiEXaL>zx17ws4W$fK~y|TmBj0jFocaT+!0P7D%}s62EpDl-*SijbA%0C~pz_ zZyw8JBoQpML?|A$JDU!jIh&A9w;z2#UD>4*Ip5|t@LKq6+d?X=(vza!FEv%>dQ|!+ zQI(0)Nv=N5{nBkI_2+!3i`%3!=Lb!Cp83A7=bg?r%#s;hL7vjp`{yDnGtIh!lX5m6 zJ_=v-vvij7_gb!TWiD^BcAU?u9p@^m^}4L1eEF>rWv+3&$i-P@#PI4#?362D{1hI3 zvHjkmNB1aP&SxFod(@iFEM#@c)eo@ZzaOxZJ4BmhRA2A1UK|)<9ktS_$}`LQ z_8v_fDeQXu*bJ??45RBffFkbm)*b>6*c?|&fyoNVA{AiSD9@(t`jWNKSM*|P${Bkz z))hW09e%fcL|Ly~E$5_GaDw)G+Z}K^UDiv0bC`pKrc5f^xi=%=Y`3QS!biw?gc?K1 zDs8g7a@VfhQvVU{1uho#4M>}_6?|NK^D{(q8IEc1U|SvNr)1NvJ$`!yL3wQkLu0Zz z{#)%8`r|}ct^(o&jxmD=aAbK7`jK+1N?{yqLTV4qki9l|5WvP7c&l^UxBlR$EMf_- za>+JxR3iq8>>^?|oZMFO~tDw z>Q><*Mv=$aXH3ZhFzcku5tuL++M(YmXOg4sP;J<~TgOrfwN$ZYs)r-=`VVhHJA#d*q^pyY#3YJB2()&Q324FV&k%2xaJ!(MX$a19C6>7$LQ7u z1hrYEc2h1`xdMMeG92b=qL4lJmxCLT5Jb+Qzd)4eEfK&p83U9XRYz%wu=~8zg2hnj zW(uao zcg73CZS{553vAj8iQ5kV`X?_e5aH8xvh-nix^!4=*O=MOEps9VjtE_oF6^WkM=%6Z z9ceo7f{7x#TeFWR3bF|iJtcBL98wSjlXiutx`;0I-qs6)JXKP9Z`&H~_4dFHwMpQ) z-DRZ*&Wp?;`wUy|5fJ)orEOxoX|+#OH-nP!bWtn(9fj55oz`QZ8|o_!zuR#NiRMyk z)$Eo?Q={E2HMh$(fF;&+cj^lFWSZ6GvUUz!K&u-fOe`pCPrpt*6IRi&ilTY0=~!D0kZNQ;N*Cqg*Po zFC&B$Qit4IT+;bbEvc9d?i=l23Wl;RDWDEP)XstPrPLYnv*m{3p>_NTxTFHbRY`}o z;&JaRgR3_>bGT}rEx2lx8rT{rIgZBUoYA@3iF4(x(Vk2+QPAsL$S4B(0;CR3PwezT zr~x6}@YSW>O*Py~A>wDqAl8kc!fQ)f!f$ihKq-(#_v4ZkE%=wbwLlukwUy=J`il7Y z7W@BdSEJYBY9SbIDYxqN-c3ZsZ-J(u>|rd2*t>xTb*-FRvdEOitksppAy# zKz}J2IKS*NxoIgB3t8?mT3Pmpwe#=+&Nz6ObfL|2BD0(ADM7Yb0!7h23Z#lfE-90z z2YdyrHC&ew-bqFEp3WK8JXd%i_Id6<4j-U`5d&q`i44wQ*|V`T%eIvrIQ*KH-DgVv z!*RKc$z3) z$CP;9kP<1+omlHD?2`S&Rs#xlE3n3x#69ormNUYdS|+_V`D&N<=5>6a->!A1{IBs^ zU=`saxR+*4zD`cb_s6aneD54-?K%7sj24HU*xAx!GfO(p7sSq#sZPgPEwlNU9pT=n zuf3Pa40u~ID_ohCE(utwH$s+JC!}0jPf`DLfGi1L?P|Z#nlEtmEJZFYT4;?FS2s+P z+TVCjS}R>vtE)x5?3ftL>KtYDCmzpO+W^m}pm1ZnE8JYtIZ?X0E!Z)xWlp0|$vb+& zNr^R*)sa4hB2CN@`Qi7w zikW_MxO=Yt^8^pY;ksb^$Tp2)1P3|Wo%?BN`3j)W+S(S)mm}kXsmq9w%e9)ba7c_) zoBOBq&`_D!T6KJVs*yWr8N7b$TCPc`vSwALDt{)u$0;k*)*lUB`uDC?_$s|EL1jB} z07VB{JnXEMNXnxfQTAx>??=qetf_3Yp9{#e!ZYwGr-<|Oix__5iZ8jSQYC$IO@*qz zs8hdvLe(j=;)ohN*dFW+jA>V@rYa3u0Vyzl_f9ef`+?+1gxVZ!gHj`IgKS*SDCKULK7KZ=k%24i^-W4>)-wR(4`|* z1yZg@C3RVE@BZUzhRmGRLOjN43bd18kt{9SrU9?cfLCY0t5fheF+_??o1 z9Ag_3X?K&XFIx3SnAn$Ci$3_JG~c>bcwY%WAF|VjG7ykk62dRUsyjzR-4AC7E>YS( z9oi4Km2{qKUF8Zd4|be6r?E+B_*4$<8}QDN0cMDLG$Rg@wnmwXTuwzF{IwO`gZIvm zif%WfDv|bO*h22@Vcj*eaJ~#OL6qsHtp9V!Sz+$*NcU(z9n(qN8J>8Tek$7aU+kun zptvvZF%&05T-JS4^`TGRRe~Ckc2nt-NlzdXe3K(?@6DoOs^0IKbJU zJV-SA60I0v;|B=pN6^mm3j8M2JN_JAZ2))(+7eQ70GKM3CwfJr^)ZP3VUVz2DXGm{BLuRbd4FJ zHKj6A9eX7575uuBHKF8eoNi-RVuE2x*Hz=kE4#C`(V7=vLMw-KUe;_~=WnsDmpe@K zybUXIB>Z$ovGr#1I=>b9Ap8vP?DlG|#_jUl+Uf1tb^Yi?=1vtZ zLD-6)LA;jbXIBWbpa7RUUuXIGo|UlEuc;}W|vdEZijt8kI`o6JtKX}FhV z>)9Vs#;wE3kniDTNEpYq@i!kGA}>-dommHvzyW*rcqJ)#y*i5e`kdGjdmEGt{0PiH zWpmhf=E9zU1Ot{UgyO4|<8tP@S-zL8R4Lw?h_Ar;)=ajJpcr0HAFLkNY>zi)c5Ba~ zfeF@ZPti7%=CV#t@_P580kqTPNHTfgY{^HIvqAM3NU63YDf1Rza;gxmKRMOMEp2Eh z-2OJzo!TIm70!v+-Rc2|k7E`P=b1R@5e=rq>O*n(wRCgJvu?|*gWG2o?K=E>Yg?~9 zB5`DNY;5Aln3x*_mv`!pf#NOfFenJy@ESjcP~Hnp+jaQavOVws;RPkJHB3r^sVO}Y zRrH~??7jl)OeSPy)7+@6(_LlLWP#xvrp{$W@qqQ{mY@9i$LEzjf+kD>d*72<&oui{ zpr{jRRZuBLix1qLyiiK7OQc;K*ZqBIv%*a)aHaD0OhM|HX^))vp}Lr8L`-K~;W`%% z^!4s=ojcCACtT;@h~0W0#t*bsu!+!Qjkjb>mInNMJ%@18eh2irlCpYq!#pIeKloF3 zK|$7J%$1LPSzHmwqsjVd=vO>tQYII)ZIO5JVB=sljJGGA>6Gj3`J>EpyF=Sappi}X z+h^n=`-x=ns~o@CG1hc!{PEM7Vu?Dr(AuQ+VQMZqNp1)fP;gueREVreeKWKb^wS?f zB!OIp=1;tTR%h*c%sZJvZ=#(@>ya&@y!8HlWLYnV=&rsRLw4-S+0Jq-4s9;U4hNiL zJ;H{dvPV*$uS-Fbp649yoA*<~q}Ng_U9`~W?AJ)ueUNl*P8R?)x(yfjl=_m;d3|Nk z4)~rB2d5mLWR(tF3MK!hUn%*(%g~(_@eosNMco4zlto-tDQN@rO0~NT5--~UaU4;_ zKOhsO7Q698reo-MMK(m^pOzFef)8myy;3n8+a(wJ$PquCwWXNoo~{d6wWTGA9f4#W zsz8M#bTl(Z^GNKRA}t9oD)(-x1TU0Wn&>Dm$l8j$dU7q*1+Djc|LmIdPTBiRwoAZS zYRUsn`vsU(eI5>`gM*R2{|3*>riS_Xt#ia z@dmjZ?q!w2IO9P{*3S8It>xYH(4vKqY=lh%4$0>6r1b~)U~Cv1PrLbIXzb(BXniO2 z3Qu7>GPdMh#?^kFJwsS_hFIp$jGa)#u97{EzF$-&wIDggqdhaJ#ZJlb%ZCW4jM#5zI)9qxfuo%?`**yyfdQKS z=D5M8Zyk6!hhf=sXqaINlgKQ05yzXl!jHu3zCgF1x#~hQB`nQO3B|1v##0h4pno|q zeJ{n*vsiA#JS-A*KBL1Nr}@VA4>P8e(s>K5m|0lP3q8yv$|*xmhGZ znRZ*{iH2lh{Dg&Rxoo(gVE(*5ox3!HPfuzkh8*vvTL}+e)Pfaf#=S1fe=k~a*;J7- zdV@90@>Hv^Y()ITvWHd396pc}FRUjO)>%{TrT@#OOOAS1*>sUhr(2`Srn526dfdpR zM~7z8p~QwwxKhzOK;lbINrW%*-h4d>T-25<|A&RZiJFD&!1>5;pppM0xi{S<`?0Q3 z1wv~5N@gU=R-<(WG~y8}9o)Jw*3g33wBBb)s`7y{q?Srg@xG3KN~GsV#F-;KA5-b+ z&u`wCWaVb-CC)C5|8h~Xe6w6jl`py!EQQCAM6;)igVSbt%4WIHG)5hMc9GTF#ywW? z;ziarw2j_L+uGk|n3UDK55L-I?X%vq>U;oo_&|7Hd`$SgxO+ZAsjV;kUf0-mS9ss5 zQS%p}P_|*qQe{Z%#+t83$g-L;=`}`xTmtBkOC8pV445E$Cq*9#v^e|}d3Xk=-k%!X z1_>B06c8@-1XO5}TO(6w4Jprht1eJjs5@YEBaFWwex**YB35T6Ke{nj$Xu~@ zY9V#y;l7S@KzL|rVIvzvT#+VwB6svI%`|3Km#6CGd!*jkTk41lYjsE<-VW&aq$(^QB&zkbobPZ~-zfDkLJB(d@C42 zYsItY*vkwQ65I?>3$s8;fPj=Z7~3N5X4w5KbB%3_%qy0A!jH0#{9Vy!21Z&R!c=^S z&rJe&qYJZY_{okjFfYA-bHI(hs6qpVUH)!FW+(|NCVR16x2|k8+R0 z$TgR9OzFPQ6#1;)TrE4YZ-<|k!v$qUBi3j2P1@1^ig4lZyYU*KH_Y{-A@&`9J$xiS z4i$^DKeMUB4|~5+Loa(boyXts5pQCW^!Z@x0QeR`&d#!4R4ocYX`dr98$sJ}NUplF zx?*Lk{~{aUf?0U1 z9f$W#>a}{ko4y1bWxvwO55KPK4e7(Lg%2IC0qf{|@20Ex8$RSstQ1nnYe4TLShRN& z*B)j7p4(c$MYon)h8}WwVBp7sB&VI5Vc!p1JLv^qS(*+g5&hEIvAL0{;=hd=%Z!nx z&yCnu0Jg56lh?mlhjO>}Y#tg)8#gzRZDlswl88N#Y=RC^`(%m@3JR^=gcPK@L)~Ce zyj-~7@C`vq2vAXlfBr9LXNzE&DO>g~P*e92C28IdrzSJj*=c8Dt- zsrKDm_FF`%X?B=my}QdF{a!Ave=trMXooOV&Jl$-a{Q-ZqMcuWsU|tXv);!M?!M%z zQgK<4UP0&tS($vyupi7343FkUyDbY#d}Q+Ka?%TZ=Qo$m=Xi7Yp$d*mMQ zh(~B$Sx&jdaS#WrYG0YyF{Ut7gkixFt4M-LkJNjuR!`ZJe6ohc3DD|f!dIxQ-`YmP z8Jn#m@YlK6`WCR7zk{gAX38qJdWkJHqlG=!n;R`MV4EjF1M#(Xy=yEz3G5YoiruM- z3?aLM;LpeyMc+RK-dx7GZQjhHvpta*IMAEK1PKk85mz9gXai+Opcdb0Z}z;_b!t1O z<*)LGUvEFP%N2fUC2E#oIcxh^?j6~6DE$7agH%{aNdZcdrTi(3Jp1QGV`VM9l(G1p zQ;S^mDDzJHR^rNbp7u;$`L9y`55oI~l>b}Gza`waY7_ZOU_n#JKZB+V)U|vE%X$?% zwV{U7o~FSSgoT{=Qr>5j_0z8l1WTvA**seyLt3=TQ+^RzU=LF$&RXrVs?c)laK5g9bDAj`6Gxqr1(-OF9Go{YBg>nOtvwMi zq!#Y;)``1oU`)c4>aq^YeBvBbM$u;`&veHoGzt9&>_^|E183r#qKu2hV!OcGy&mi} zc)P{$+TiUG1tQhyftLK(*~_JneK0~JqGzF* zmc5GSK)t8z;hZnR4$%gh?L$XB;){SXLE*A~734NbaWtwFlgMYeI6`XjOHEfvP4)Oj z$c*Ha7NP8lh@FuIZj$ICzHD`uX8xD~*xYhJwr`@Q!W&AhPG52)L%lTI5ppgnV-|(f z@WoDOp50`(>av$drJa`yCCyBErkOzN3au1h{^a$c0T-I6-%N{&l2PPLC^(x$(3%y(a9W(aOu#~<2yWhqVP*&>>w>t91(=Q02bswi37D{Bb`x}`C>bMm zcMs3ma}1mh(9$dxySacgV|6P{rZ$D9Ku<%hY-A~o*mW!sU=ON=WJP0Ar5U5p3m>!avH2er9HsSkRw_ zY^B@rrR3|@?1ds2+tq?jk)y4@FjHmI)t$+BD7ieC?Bv7SeJ7Yst_dQwlB1u@NdnZ|SAu;9FaT5`?h!D6E zQ!8Fgq>g=6{S_sD>~kau@8~#tX<<`Dth5#O^cO@;ZOW`J&8#*TI8P!3EmiV6MHRJ` z^z4hD!j2ai!%U0!j~4QgnorPb6sX&v*6_~QLPBe(bsWcdY{{mJ*IM;b@uwiFpj6({ zXg~5hQ}deA%$iW6{VP7HHeIjKQ^2`2aZRp(k;!XI=>x*OR%cLZ1#dmiz%saXQ1MZg>qNrX5+g~dmMASs=Bd-dMjC_z%9r^G% zSo`GV?%0_k88SZ)Eg(vKB?Im-m=HurxCcIEooQr*`&b#V`-sR0;X0tD)R7O|!Vs}feA%!q zl@Heow`V;9O3lg#EZt{1!b;^sGf5!&(W22F_@M|1O05LgcO`FDid4vlq)3P!r#!gA znrY-mMR-;aXEBLr30T+3x)tmOF;cnBnG0?Ao$-qdu-vhSP&bsm+qH{?Cdd59=2Ft<3?L=_m_ks zMuo-JZsxC;9MuHLtXWKu3`iAvf9sM4XNBIREC?d>{AKlQEVzEH%25$Ckxx>fZ%BcE zV6bSL@(RpJvAb1@1yqWmVnG4PHGx4%#xy#nb<0k}PgM6ei}D+D<*{`e2}*f!>JF#` zm%@>tdD2@Ys1CR~*SM!g5i{S?oJyA)Xv) zI1-Iw!JWxcC^AW*3Kps;rw8 z@lsLOTkIOLGD>iLhEMoq1*#@_1}nn|UY}r{`rAy)^R&7-YozS1KFc%(WP!P5ye6yKEvWlx5zJTaEIR)w^=5QJ%6o*MDg>O8u?m z0FuqkYJHRq3qD$e<+JfQET3YSTmp6pS|HL$o~+*z1v14?c(`@5mb)_5BDwu{YT6WA z1!YvV5eO3s)6I4xBGIsSZh)21$YskebO^D#!->N$v@K+fg;0~( z$1Il6Sz;W}@bJSO6B?mfvB$tQowXO#=qCK1pB^5VHRoYZ%-QqYRz&8tIdh&%%z2)V zFz30&n&(z)UPx?v)#54HAd>rd*1X#PiZ$>0L!RSV^Zt(D&p=Lee{iTZuYnlHnincV z#WmKv&q^qo&0k^76U|<&d4KwgXSg*_EPZOtdziTYQEOf(XU%JHta&rA=9Q|o4@;kp zo+*r;DEuqWns*~U?un1K=1qF$lNh-Ew^;MOrF-gzm@f0Jd38^JlE(h;v*tPetdVwD zxNbOM(G-V*qEy2&v2S@YcMBFGvJme$N-|np)$`@Ae9+G~yslQv}7392V0b%f*jH&k> z&4{+>YeEy)xPcsu-jbfz*0O^MD-^oWR}ZH%k7qLRMa@xhQ$gRHu#QW=9gmo}7Y*S2 zE*S(aaoXuyT8uwP5(x@RpuNcrN+COwozY}lj3fBWaT@8mWt4^I+6sA?j9&YXom!3- z6SSW(Ut*I$72rIjU@=}TAWUXNR!ut&qj=Ep;kMSVqm<-`oPICuXV-tR-ZyBi6A*H7 z!i0y#3*J92UOMvQ;swz|2AK_;Z*JkL z!hfk^ZjtJ#3QBdT~4y|-uyafB9o8(Se09t-yd;#Z~8uA ztd$2EinzKMo8KQyryr1T4cJRSYJ*IeBlZrBbRQ5h)ySXcMV9`NvwJo~n6O0b_WN=4 zUaU#}PhOH@k^tAhr5dw_n9TiBa^}g*{n7?`Ry)rbJngwFrP2O@lBhU$Myvl7_rW1| ziDp&@?3ZS9jbG+TdNNQ?>ERE(n*x+fO9Kv4?4SPrgN$|GV#;8cU>5o`K1XQfqa*ge zpRHj`uFUuM%s1tc(zvA)Px z!B4oBP@dsla{7mzrRP~8Sq&dy&cb9{v7={gUxA7FT_#Y zwmVxATu0yRbD46vSsY zbNpv2D7T2qe~t2|#X4j!JsA_2b;LgLDW3N4o)DPI+h9-QSkKij_W90VB;Mq{B=dog zKMNCqyVoE50pJY!W8Th}IAV%_i!8~=Qx;@?&QlC-zv9W9Q08dYPJT#8A@*WNfkz!|)9vPcx0< z9%t@Kk4Np)M2QI~(X*6~mJz@p`8O+MUIkLTJzuB3s8Z?#bH1dI(ev?f@ZOs5=^3SptG9n@C}M83W?Ykn)l3_fc?}J9K@TCHV{#LwSi^lA_s2W;bEflRaGJgzb~K#t2xgM4v6Uf1-HBwBhY(qx~&WyJ$FG$Aj0WHamDdAj6lk z0+HsWBS6pl++FOT*4rba!=QI=PY%7_o|g#*#U-hm1jP}%Wj`a|;NIKwOA`tHg@ZTQ z7vEzF#Oc4g$=#ugaqXA$daw-aiN(NcTbqPmNQo205=pQ)lVmBgW5ea(%@3$#OBqkMNW1 z`1vyXl%4VOJ22iHjnc+r&#gQ7PX^W_2Yw`dDFeD?X%Vh6C!I=-3^WwOcso**A+#bf z$XBk?A#|r1LTkWHmf_TbZGl$tyN8#gN@_w4C4%k^t$>o;uvm~TD;Q4J7^Cfq7Yvp~ zLFip=u#Din@-h*;c}$AY_QY2W{%`y9M%(hS+9pQZ4>WZa%empkc$2|2 zINpR40jmJccoUF8yR=8f+kT$Hwq!KQc#~9u{ttMH3Pi?3ye^dwp}Hd`yqs4Tjg2(U zX_<|AN+y@JWRtWl%@GEx>~^VTcuuiDh)SziyJMFPV<#Hn&#}Gs`G3sz+C64;meXr4 zSvm{aUn(&erQ^IkosykURfFzcpX)zwkLVld{iR9OxRQ5@PM6#ux>54BDf%w@QSu?t zGjM3GXfjYR1WXPjxbWYfehW+dkptq;D{DJoy6q(o=DUWmf z^eM&a$3JCP@@A=#dC<>I8nIjjX4|JaWgxGB885?2SJku#iQ7iaF*urEdlQ)T2<(?nBSAJ7#SOlfH4t(|Bg&t*oy4tg}AR1L|?z1ck!u~dh&bO3v)4TKpcM0(k zBH!kD?S`Q9El}Xr*B&9gr#qa@+RGszDcM> z{-tjcB%3!urF__Xp7}tIBu(-z(m)o0Pi(Q@>j!xI2S@=h!(riVoKk9ZQyHZQ16N{8 zh2+;M9`LVIIBVq$zAoq9qrvg4_Sj~7!oxc7xrbweLTf+uluT6EdOMg@-;6!ck1mx> z`SqvK;BOPM1fEInfZ!4_oqt21#>vgNLyFznoVVk;+j4VS{+cT?p;TaQkuNgG?uVz5 z7e#FbUk@|#&DSM-wIgKAR|Q{f6l%WC;!AqkeEFj*NtZVZ5g$nyu~^Cdb>O5V{8oE6 z1fzCLwM_R}neR3h`R?NPYkrULdzRm98rX6i-Y;jz9{N8H7ZJ*14+u*YoPRPBzY6iN zq>{98HUsC=JdT|moa1k~PWeP#P!z}?U-DrlSrABtuq0SP793KvmLcgawS!Z-*fl2AMySN|>H~?+NjslXxd;Y0+^ZK3Te8~8wEp;-SR(y zp^aY{ilHs24-UjA{8VZZ+4{Ie1=%90zDGiPEKwTK7p zAXgUcZDJPg19BvFOXgnf0lV*6!wesi0^xI)IOmITx?GoG(CmMc!iF*DpPBeb=3eRd z+4k46rOTC7JM->g1YvRxjT^!-%y_DTI}hc_ zLM^x7Y^ddsGoBD-Vq&vKCP%R}k*s&8>){N_mFqld<59wRs`pquI-cr-A|}4Xl`0IT zWPJc#6TQICA(|Udg@i8Ic@&rPt$e9}l^$)huW=$!p5x~?i8q;j>W=IHF?JgJ*~dYU z$s9Yk(O!Cu4hmId+su1zBEzP~VFSdpS1LQUy?5jNCB%~7UPkLDXm28~y-T?zMjCr< zsdNwXvG`zH&u`Qw)o;%>$?5Zvc}+U4$^NHh+N6(ZMy?M{du$ks)1JK1zJJsI#AyF# zZd=LchYzC~oHU zP7W`YSNq;=!}?_9ql0|-^I7xU3*Qrw=4!HIdk5LFjk5@WAIFw+{e}H9tDG|j75jCm zSR%87|Aoh>^g*E}5uAraLWCa_KC*g2=3e1W*-3*-S=5=UPENVdi&T#sewL!LRn*!5 zL;1H~S5jct66UV}wvRba3F{2@CAIWPyPB+@ILxmuk#Vi8ywZE^*vRb|%hO=WdZuiT zwL|p-tgF4LYSyk-Y%O5H{z~uBUiz&15Ldmu5`KKu=;Vx4K~4Dam4};Kn(Qx50LRk{ z*7u1d63+pvazm=lgKy*87{!vSN|=s4NK`@i{ncM|&eN#<7j?q5D%VR&I3rWaG^u$D zMMN74Hrs2M29Z^!D75d?X*k-a7wX{>PU~V%n%3ovmBs4K&3O-G5aZ?BOjifHj9e8m z@F|aC#56R?DZs3UCmxCl>b>3K+0bG=w3sirb0zyUOmROl#opD4-Vk;2FWA; ztcR8i&mA3>yY<-Il1Kg-rB2+t?%fTgJmgTyq$heZohPY(rstNa&Y3FVXWHLLZ&1jQ zQqHLfdHQF(yf{d)GO_U3OEBa~`(<2ijd`)|5z79f#X{z655U3pVb;V@c@lV#`R$B|J^NZ&By?NiZAbBc zzf3+|1D_XLsFRh%4feY`k7fo=lYE(9h+>lYg|sH~3snK8d=WfTwvVze#5x}uIYckc zZg;8+<8#(AjvlE!a0!UdRE1%dbsu)mTjAAQ_ZnFW@ou`h!> zznYlEyYe$Moz5^b9YPD0I0xfL=f`L1@8<+&8{Qql^u-lj0hke|tt=GAQN=mIa>tT+ zEs+C9Wp7Ybd|aXdVrFO<<;P5iQm{Rm%@ zQi_X3>;<2e;`H#Xc9D?Ag2D!^LC!O|AI{S+9myUahI4gzn!9~89}B|MJRRp!P6X%W zgg8FpFFA>|Wx?{4uomV0mTui*Pb@)`p5P!8Jl^FfQ!bn#xg3R2#loo9P?1%6E9t5@ z<@qf(me#( zlx0@S!T^nbs7zYx!{BqSBqG+V*9|6G!Tnm`J+a+Sq7fz$OhuK5)CS=snfpb5fU!6% zMfDdM5rp!P9${CzskB?S^+xQc31tgdDcYEWOJ5BFwLQFJCO=``B0^5@&KfxDY)c@kK5>71}opDRr|}KimG{4&mdl zc5nAT5{t!ORPzfzFXXDB>m+n_AjdD2NoIaAq-oObR_UstT$7cA%oxKo&*2j1~3>M#P}=7$YuS^jrLzD@k@ z;ph5tk?)En`TT!zmJKpMMc-T@%ik+R3an6d$lJp%;4C|ngK}9291#n^&2C?(+zew1 z;4Xlbolb>`?Th=YkuBC2WEZWlEq`=8D@?|=qipLL-~@I*Eb9_Z?1R9|%*vcX`*)c_2N}%1J{9$r=MJk-Mf=&(SD~IwUu6Ve7f97WaM#HQMm7B4T&Y1u z@I*;O?0Pfea)~(b-NdYJ~K*6RqqX9$_6*00r}yWWi8;pMS6@ML(V z8NS~gEKf&*Go@xzIn!QIg zh&J{is>TsqZ%( za7)FNMZTH*R`KiOS19;qQszkF5|z8MT{d8U3r|y($=NtUOXO$L*zs(B2V975SsIM#c?2ju@F;?u@+(>M7HZxw7%iE z*1~jMKoVqraVz7##lDUuROP0euXU3IF>6lii==WYR{wVP9+eU79%{B9xEC`r z4g$Scy{&pQa1WE3ivOCafm9slgD{y zj7!S#B9mvjyfbFHiEA__4veQxGl5*gSCM>Sy|x}s+#uIfhPVJ#&XaW~uIIBR6n~q&c5;GcGY8g*S$k=~ zvCyD8$^A&DW8)Y_FZp$JQ@@tgDRV_ofYmPt10`qr z2lo9Z<@g8g&!cx8kETsbgW0$b8V9Gvj8gd?v}7E+zJLVL0i!!Ye79KjLZ#!aiCp!R z9FrJ{XKx7d{fjjV_+y{3ia6A(<19`f57&4)PQ?@-F6=zXnkGkob<&fw?Vo6s9;-_{ z_Rb)Ey}RRNNzcJvUP(WSGfYTd@9O%8A(U+z1p>Lx$89zEWMP0R7emiM>lAA?CosCL z3&Jm0+?%o5?VT}TUFr!xBOAw%e?jkz_c*?4)*+9VlbQQP$Uc)ZKf8T~@vC zy1jSxTRY0qe0uNVP!fc*coGK&WJaK!#3YvLuBIxf&{TJ+XGo3zNp%lX9d*9zwtg$M zK0}qg@3Exoz3XYtt^&}7WqT*X@8)wi0MyvG2z_}g0UlhqZ`;ZiZyX|rQB}N9{D@o* zNjc;MfruW7H(!Y*)|$e+MI&(6n7<^))KvU)CO~-KT`RZCK99agOg|47srlOJcx6*tLU;((0L65%?0<#h=oe+U9X-z+7hbXcQe^JiP znuP9C<%^dm9uRq7z;UJYAUIqvnLwkMNY@K0d9U_uku-fv$Jz&1E4Rq`-43-kQbsB6 zlOlvFL=BuG>|lzBzDfvOcHH~L3Y+NiORuRUF^??=pg`;AbMZ z_StS!3Tu@Lu6N>}ZfXZj;p7+(ckH5L4s zaCfs@pL@Z!e|=|r?F|bgxJqvnyr5S@E|ZXI5}41hd^Y6L%WXR~_^mpzr^{z+?sJ?~ z6Sd#~iOD`TX^8i8lyzDIfaOhkZlr{gq*uzRPNZGozLgJ9m>eq=>UmAU^!7A^ zK0z)*I*;4Pd0CvXN6m6f{#%-stGWl<^Jeesn2V%6N2NVSY0ujO#SdwFUKeY)HK47K z^KOCJSN3}B65t4={P$RIsQe9VupY54E_)oP%{j-(DI1cfN?K0M;cqn;g@t#ld zJX5Z9#zbm4M=EpE&#+MJHH_F}gQYwf#6!!d@xW%G1cetKXN~CH@77yNHY zsGlpqoVCgwewxS?64~gP9FfQfk+MIVV^h6UiHmFI1 zns5nGxl9bXQ03BdC>^71sm=ge2yi9|j$a0ST5CN|t)+KQ+tYfUW0m$;4GbE*qqUZ5 zYq2-K7+Ps<0TrF+{n`6FlL=~{{(i6Lj|ZK6zu$e|Yp=cb+H0@9)|uBvX%eETaLL+o zR_1VDl`(*5K08s=#L$>KpecXyI6wu>adrwnOVEuQSuq6`gzfDtIE`<7}V(aXX<)bJT z#hA?2xEK&>mpw74fb5=DyY2tYdb)=j8xL#M)>^KMi|$7VhDhBK1OM0hC2DHrO?x>3 zo@bR(g-K!2IM>s09{r<(e4ATq&eyinF8JnOD;En1glW&-#K3#I=T- z4mrcY1&@@?^Otq_n;s)50zVy``wXWsWlwP}7D6aLUE7=f0;3LPZ`!r)q?+f`$&#hO zd7f`cdUn8!Xu1ehX=o5cF$n(o?!oWwuYH4YfboV{MEnAV4Sz~mTUF5)aFfZxs|W(rfVvb6NC3% zE)M(?BjbN0o~Y@XNU}V5-^>tb_1P+?1HS!@;C+ud+rg{g4~Apgl&EIAUb*4898odk zpeVtiJw-|QAkig8o?PWM`((_l4myKsp7Y?{G`?)8Y52NNHXUAFUWQ4-Rc|_5wi22d z+zM%ucNp$6>-q@Xgr`r!VQpUN@94wYL1ks*6oK)s{-j|+Ha_w_!Z09md=Iyl(xyu1 z`+|mr6xOhY{u?-LXxbO-XY*g8^$)*eiP=qu6D`gb!PogYz0b6irVX?mQ%kyXmwkC; z)~@kT4yM#uyKTr#3wNPYWQ#9b7oeQWy>foN{Vg03J!!_JrPTJ+D|EI$?VD)x@Qmvn(2HJe^0@IDz4C5cAeMs#Izh_9Jhz7Ou35|! zOXH28)t9F1F36v6X(sS&#&=WZvQioFvh&XD?~!1Ln~`{3@}5cH)N@9CTF$CO!mz*L zbXhCMjh!XI1)U}7ZcMa>8|Sf6p65?5z!rSpQl~4_*y-ya+6Tc-cZZ(RF8|;PjI%gzZIcxdI2*ZSM~*RgLU)-OUPAUs7!j z@RVwEn5W~YQsgDmoXbPb%m^-q-thO9&@c|tIhJnk%z~5%Fl+N{=cNOs-m+T z#UxM1_TqI&^WkBNQ%xF8)t%u=`NlU&pkr(2fH4;V|I@BNITOf;Mna}Sd8_{3pnQ-) zxx^~gL(!4zdo};)e-&!(%5+q6*8Oba6nIT`{xkf2lhT3vn_E-cqfImXYhQPc<6h@) z*-BkNL%TaWhJE*Ig1TQ6Yl9+CnB5oNP!khJ6%nW?L}Jcgt$O)oqtzLh8vJ3=$1PA` zxIDBL1yJOm%{<+fgG|`gI!_b|C@@-(LB!cw-9V-3*4kk+xN5<${*-8$()y(NAXe(X zM7wpVeYkI`Q{K47zxL8wx#Dl$F3G=K;JvK-{YZ@^YZ&!u>ht$`{vhqg6ff`?p3Jhf zE-8Zj{ZyJui9lyQe~0Rt$e^Exudq(1*Vi=9zv|d4+?w@dc7k?hz8CGsGS9Xn5G(hc|IFJ_dN@6>M)Z2%CjKI1{o!Vw>Dm36 z*_*qapY-z)ORwADz6}y0Tm^O01N+fwL0)X$5AdEDXdoFVolb6ccT=)4LX%#6lMKWy zg-$x18=QHYohw4D3F$Am%H9Yok|u0%zq2~h^p`{f_0{|(=FUcbpZj4Q#*`#o3P0wO#F=L*E~Ta z4+E{g*gdx}7%3x>>0NmtcL99w?%jIw-ujR9<|d8Z|FJg%AEr0^&Ziru2`Ogl{{g_< zJg_*!Ee5d|&g?s!j6n;W49>4i&cTlFKhi$kIwG&2y%J61VE=1^iYbX=5)U}DH?*W} z!OaoS6>c;01WC+#-&fi6hDEzKV(wFT+&Ze!-A5xun+7cpa?{m2-ks~+(3bT6AM8(L zY=1EMQs~Rjd-P>CK5ox}jkezs4^I8A#DnGrxjMn7)v0h$ zd1%WywS#F~ZY3+0a^Qpq(rutlNr%;G+_mF{079(EBGeS6ZicNrI^rg)i#&aCz|%e>aqE_atJS+mdE9ZdX~S-?;z&df^Zv1i_JrrlE0T6qJWD8A@CBTnX(bmbTGzD>2@|KF0wJ&Q`<5t6wl z$4cg&_1updSt6#XiAC2$yUE^gX3I35-15?2Lbc{|rX1nHzYW8K(|KcZu1|02;mysh zMit#`&xQxJfzxbAn>`UL7AMd)AKELS;lY)KLN<88!-M_2skmX>9I?W92gDfc9&Q$w zCx%DuGsmL=4DL9aR4rz5nx08q-dBwQs>aLwYg=%TYTqs_yq%qYTlX8x{gpJf`PZFf z@8g*FV{K4{d8{45fDT3#&*K5sVF?fWSNEF^K8Vs4T`A&`y9x(H@PoPrauHn3@DhVU z7_&|I+Y-@~JCy^UIdNAq#xbfcr2UdjyX^@gam`>jL%%hJp$`uRG57k9mNQ3mbUnp8 zJ|y!Jli5G=1^7+Nn>+ZrkktYLQ$t)9PO$lC$r; zMdc;-zSSC^y=;{lk|vsO-xn7XWB;i=-soATHJ@gRa(n(S02}=Gl5FZ7srB4isJHIw zqIxOG-v!en<=jWU!O4ibY_Y%$)V#X%NbL`g(npClBPq3Ra{Um~CIqed(YHiv!r4q9 zN>gN|MOKASVtIC9xjFx!M3Q~ZOE$JVVIRKE)<&Z^@GD82;5qZ~ieBR7LA;OntlJ0U z%l-g%5?6N!s`$``!H>3@U$ZjizDAXxQ(NN1w&cA_4Q*TEm33UcECfa({WK}}P22LK z-g4iM#^|2@q||yERAJBvrGulfvf@GE*T{*P`F; z`=6brbzt1&E;kC{C7DH2j480cF<^gpO&%uG$vp0QHJxs2Dxj+A$NT2jaC-%KvtcFf z>-=*2T1VM2_b**)UU+PA+|Tv1{mP?2e^gsc?N_xa)7tVtw2HS3hreS$#7Y+OChx>6 z|MAKD(nn2N)8&yG+fJ|1a!d4K)KF+^?t1?BT>0{ub>%`_vFZQkTOSk>IU$$UPu8j$~C8xQ}Ov+ZVzTj@d3i8 zSmJ^}&eEZWI?82wqy}HMjhn zW78Aa4y7;ivG~*+o4!m!a%}S9nlev>#+095x8AdSXqn_AZf_4Yz(@f{RkZyNzOn;F z6}9?n%5il0u8O=)2|oA&>&kpa{L5@g2;e0hSR5-N?T7C8_T7OO3!HMNw)(W#lQyyfy&t}wbC;EGBpKl)n{|il(qwwEktE{qB=HdS_GC^F5 z;lKGS?+5>6AP>wJD0~#?{|G$%2tP*g@uUJ{WAX9TI}JQio&Oi%@kne8JiZO@fjU9~ zA6MHdL$=C1Jle^06g<}6bu>K2&JSbys#-WzjkF}Q#K%#pL^)d^D2|-(B~D?+`H@~Q z+eQ2Vm+po{y>c~+u#dffiXV{zZn!J;ut@SM!zf5);!K}9Tk zc!Dl)bhuytk^$rNg?5e|wneW~(Twph6-T|*=i6T{>QrifZGQ1YtAkY2j7DO^ySiiN zd~|fq|1(8XNfq`?3hi&`(k`$z=Kc_Zkdm2-#D`28TKqK=lG_{JH#LbQV;cOL&VfR0ab_i)~~~eN4{0W zTxPzqmIRF_C;rL#;s)M0E>9h{~o>g_?@NI}Cls?>zswQ2JsR0#!cTYW6v~){rVK z(l?lecz*k4s?=fysN}A>G>uE#aV(eV$@%fH`|oWJf4OqwgLSko(_J0BZ(`<((yNC) zUs_UHzkPo4wM=)9jpMxSU6EH0m1@toYx};6`dt~{qk5an+oqc+&H3~8Ka4N?bNy

    Rg9tx&9G=@jf}cwBW=hLEhlRo!>0N3FGol;vYZ!*0T5mY(Z_R{Y#2cb;R#wlOOyX)J{IF2>PK;U zleWb@s1(jyuYYrC`WoMoqC%W3`9_y&^9BRp+qgsH;EZe9!95=~9_)4#6P%K!9m&55 za}gpUiJs#4C15|+nW&NWn~`GSkN2D2sEurke6Du!G~Wvr>W;0^te^SY3J;oD#*Kxm zk*Hc&&DAW^jfK>M2IGnBEkxc_h}^Q3dVF2(Vg$~)`_|BW_cvc>v%RXy{RlHkmuWt1 zW>zR;ZhFEEPopiF2i4QYOOOIpbRk&^NO0_Lyd-&mb7W$mHk+Me`L3MP9x(d1K{=Fy{ zAjD3dA4);9a`QvUOT76fK-#G}JibZ;tk5=|qoH?up(<)L^mBYU>oBzdWJ|b6Xp!QcF_4`tji{JZq}os)ss0UmQ80kK z{em~#Xz_PBTClm&z6GhF>db;1DVqr4@4>np~vLr%PYxuD*SY4sA0TxYTDAU&%`Ut}><9N+YZ&=N!Kq zQzeUzuB0Ko+BYVt8}_OI%cMPndToQLg}YIWqZf8N>jJ^svg1W~iCingRBKUd?T@0b zs_W=6_pYUg>bcv*%p*sFJBaE2Xg{$IQ!_YlEeM-h7b-Q%w`-ZDZrI$> zmb*~4%4!Z=(mS_t=0>wK8H3=frWFFLX_Z?$u z@@iQ~Ex#$Qy0;1W-e-oEkA!ZdVwZv|W5EH|m_!rnrneMn-CBwY4&9Js(@ce|&Sv>bpq{*V? zx)X#~V76L|yl0QuM2wuq1Xw;s!a7!tLA0G&h!L4e56~{lDBtrxY%O*j$^XsM|7je^ z`ZMhE9r)G&@3a!J37hp<8&=TjEo;VNxNs<>p$-Lru*+%HbiXhxg^ zG$iEA^Uq8TN1AB-=J`5_oaeWfGuz!9XLDxMlN0RCbBL3MKO8@5_yrgZy?kO%+@f*+ zMr&c*Eg|*>KmzHA`-qWj!?y$nv@HNJ(eWUrD)rT^H1M6w4b?h||4a|f=Mq#EZhm;n zyN0ab>VmO z!Tzb1*`Lx5Q$XgyJw!8No0RX11|xtwVD@$2(8%bwulf>cw0U}Pa#3vB*+ZjMEeXTtTE7PUE{uql&;I2Wj)TN z%Zr7Bv`NxHoW+sOEgKv}s&&J|~Y{3rPLRcl~Rbjvg8CYHm#qTqq$`?PX8s=4$yi-|yUnHw(YhH=fKRjMdrzs^% zy|Se6m>+oWX=5zsGfC+=9RFlIKojg{lYV{O1P>*q#g~1pEM#TR?q6kh(`3-pX@RsP zYe)5GN2~VA_x7mow3u1Iu5oyyff9{#wima_?w|1f#Tp$-evFkh%($Bow(!*WURE@| zq=;k|csOt=nyAE|RTK|iSLO%*X(OQ2;J@$vVzWQ*lEG1!)l3qp4M$i;h>MP_H*j0O zT{LiA?$tLL8A(x3GsXZrvJitwcBj?pe#UIuinqQfAei$u)CWYGbupl;c%#qSr6b_r zlBMt^K9PWZ4>V&gTlQ-#R?q2)WsE%stSn7NEH4!@uJ0z#O_?2VX_xyVcSh6YU)30P zaoFXK+|Iy}N(NF-?Q%DB>x)`ExeXT4N2rF_D>;uV?opn^s7F^aU-Bk0jf4_i_VX2y z88CzhN*YFa<|l@bIj6|*0BidNh25mt!((+mkot+Ca712Mh%|e6McSS1^O*s=l@9jb zNB_H>24~KZ)NB4T$5+#%?%erC9Ch%23a|WLm6Z2*VV1RhgTWeG*%O7x4f)9W7aNy` zR!z;Uj-WPY#06icNEB-BWG2jH@!$B!R;q7W8oKT!?kQ)`zMbLgwvvwH(pUKGq_cgs zEe5EKCBcEYtnf>n^M(Ijhd{_s?)m&w#Oz~{yvOLzJ}8+_?t;U!+>@44TXRllP1@}qc-yon>TQh4X(w-1Qt zsJmEDKl;2}{_eD*7#HSvwKRG=tOgaFQ?r1qH)ds650QX=6)O-a*2!Mvb1q@buK~?!Qbp*)$ zc_>@pPxG5qHqe+Ff?L%pv`*(c)#fPt{ly`hyw%st09d2pO?d_tjjmjMx4Q?Hi@GQ( zs%d_Z;mF*g`P=S3iO`P5dRr=X;i2QT0pmH-pIMnZ^wP-(TNB*&>DgiTWE79Uph^OR zerL=cDW8?S5rGgg|HX)xsHzGpp^ z)I+{%=GWgZd&ae(cC{_dnUOFr;+E@T?zbK{n~QGu6nafVnn7xDCwAwsYG8EdVC7F% z@P~|NYJo0{5wGWke`goX0E_rXUa`b@RKzvPMp-^-l)+-huX#C!17SW|iKRvpEDm(J z|Ayn{VhVcV=b)hHi>gUs-X)k6}Mp*a{hxM?e$Elq~waztt)WBEu!kGn;W zn?#QdeJHH?&u2W8dcND8ZsZoli^kX~EPlz;*UsF38x=NQ!0rC>j_$nlGSGNI@-^({ z|MdI*5@*u}Qc#cBAMAUr)Q8X6)K91l`tn-C^g3pFAqYF?6F&nlaKF&iefrZTH=|Zq zvbA1@HE4lhd(DW09U*xoGpy0DvW(*YC`dEMjADoE#YbYEe0B#mV+Bw@*Z8VrYcfTZ zB&gzqYw!imSg1L?BQ=pGn-HOa6LBMdi1XMd)B(qKJDn)w|;{rwr z*x7?4LfmA#9mZ*_e`JPN{ZDVP>mpSo0$j+b_u@b3ELeN!nKRIlOU$xD;C4zgI)~mW z8cDsiJQ2Y7#XT&*wBOmY6iGU3yEA9)q1^-QqY@LBUb$r3a@w{yn_h7X^uXqryXkv{|!HkMj07zn}7T z6~1p-RLYI!DBqZfWO-@UMx|AY0HRiXYpc=<4J4k|_02s_zbVtC=rQ3j^LH74p_ZAR z>df7DQ>h0q)o9}5*8U~bv^69&*3zP-E*$HCjFyvzfmf_zb`aFcl0{h5oq%^-B8WEB zBXN=mxAKSv6G0YI){Qjt#Z6H5x4Tx^67|jveebJ~npA8}3#s&u;MYr~QVMNEQfFJ) z`R-P7vRd5E(~lP|fW9R@LUN1n6*9Cr_X6@?PMLMl$#0FD+=n2u}-Jl1-Kv_c;Om!2C zW|qjBsjWIQr_L16z+QqEpoJiNH_63E&>TQ?l?q)Dit)EQ(#{x8o>N7f!Ie_IXn;!G zK-df(H)*WkImUB?sb_Njg`_c{%lEBBxGzjGIgH#1F2GbzEj_zPGB>)?d`s@aThFfa zoOn_2veDpci-P0%VDiq2t|6b1+NS4Fgo?D$V9*+Pg*EUB={X6v6DsL0;SZVeEw%Yp zq~}nE*L;Mq>W&zUGf2#obkEdt!P-*N-KhDV+PQLc%A57t85~_fu3TkT5HKN~4=zv5 zU+Y61bH&=X#w@mwIxoMbwOww$g#LT(KC|2`yV@)_bcdq66eHrg0|I+eg=*+CK|>zGZMO3*FtXjjlj3XEn}yf&;HZz&e=L4VpF6SZ&lk z1NV6Si{_+dy0b|-1p?s8e@p$QAW|&b!Hv$tWw3q$=Vq;m&cBBF3%Cu^F?`F3 zV;*s2)1ZNrbkfAO8GjPWu{PS%d1?J0kr~(FFEXo(_K*>EkcGB?GD+G9sJ*$gg(O@p zVAJ}rf8RbJ61;EdzXgJ;ca8J&cc_YwjW35zA6GK9x!+%M%&x1qmzH9r@<~|5?QW<{ zPC!^UDJDEpZs}XochtFH=5~td&nDJWZM010RdGeS_g@j=u}5Y95FF6WnwU8_>2|v} z6-9iF2onzQE-sEp+Z+)7Zg=WvL^9Fse(N)~0PTK14!xXvv5S8WA|mc+S|k*Si|i2p^B#aFn#PiV+cPC~gpwR2Wh zg%kY86(;yfoz*KC{m-2glHVL~45T9Q$ijoIFRoa4sejQpKjKaLpnG|0AYg>xWGXQ{ zP{ol=co@LZVVNp58#1u<*qHmrUz_dszE)VocK6qZ-_F5fLxn+%T24$^I)-SaNZ$3w z_l|cTtdnZyHj~M}Z!(#>-S7OJOxHc$={|C+P^chpwHC|!r zCbuNc7GDdz3~t>)dzl$k`Ck|IMkxW2Ev@eZ$f3pvi~K}iev#j;1Nff_`e4Pu4O_{N zyR!H(g#=X+o#YcV_V|*OM&a&5tB)3;?9&zvJC#27B!^ka91&+2VQ@pk6%;E=MpaBn z{K9w*q;cntpa?b#m%_?--JtqineWRK%Huv!zENl3|AelXNv+hgOlmo~rRT|C?E4*6 zq}KRLR_IcX}FQ5tDY{_$!nwutg+1+pgfr_0MiQc90a}1QUp796p&n}(W!~2 z1yH2Gft+#ruMEPD+(AapCqvxDMTjp=2_EP~0|%FeIwqqm&!-rC@!Iv>p52(WEzc+qkj{Y|{;1%X9V= zV_RyQw&ijdxTTQ5NTTxSnA(xF37nHg>O53c~E`f+#*ml*f^Q$I*GoL zKIA?JxYPzKcY@_G+oo#jVD>1V#23QwxbL5J}v4mjFoIhYE28__?2F7i~ySIDTd! zx>AZ8s;6;@KWH|m+|Q?$yGxUa##0k3?;e-@)W(O5q?nSEbDX9A)MpW+hvOF&%4p7) z(V+p@&pgiEq8yHyh~6~R9P}n2)XPSt6Px@wlgJ87$6>bkr6Pm_PeUE%%@w{=&eu&X{)&`c17FmHjoxvcfc5E(yNDdqQ4eOezy6$cm%Kq6ey5}ephmuT z7%fz`v5XGWAsI%A*05N0=5Hi8xtv9rb6ohG$*mz4ZBFzI-w)Gal2kR`;7gu>SP(iH zyy1-AO85LT&HSXq6~QnkoaM@?T;PW}(O!&vJ?ZPM7 z*<*vgZG$=v6aEPhu&3M4pELM9#_yMy9ypub>#Ou=c{CEN<~Viowb43rvyWFKd~9t| zYM>@I5mh5Hphi5r$E&L**nE5vNJ;`9Q=rP=lR&5-flsWWN)H250Q3(UuNm)|aZOS;1~r_5ko&Kv#R_ zpnoNmwX1-jsdMstI?FJ-3&)f=I)Tl8MA{8?P+Ci9|Ni+=w|nNN423o7q2_)88ioZ7 zZZ{JS{Dh)`GrCnJL)5}Vj+*r!t8j!Kwet+O_vUb!U=F0a+;(NySx3s#n2A$d0}DZz z)JxdQicE=0Ez&JP8IF>MCi2clIb=2=o;93s@p*AUUe58D?m0L6Xj`?~CY+UVSZ7{T zTbF=dXIE?8DAj9crIV}z2dh)>LJ(u)y$2XE>T_ta1l+`K^5<`NT9m+&z|9|w~aIN_bgE3*`} z53DLAE8U7#W5ilL{xDI}1KIh!<~Z66vPJ=0O5J{(nbACBfpnUxbP%KctD#WMsHq40 ze@<8~ISrJXjlX(6Sha1r*^U^}JOh-CX0Kamz z6@mp9c ze>=l#=E!QLOP2$$vl=Uu`mD3fl9VpSK%D(#$SJ!ILZh6I!1u$(kaP%1B*?^40=eopk*xNmemd`e$I+tyv zWWy(W+mAA6^R%Yn#4*^%CzXhM6R_~R-}#-HXdbO$NG8yMk%_>ugcq<`I5MwVm(Ye8 zB7%v|NFJ z|KiU~Z{~TWHingrbNlO(=aIJmNP~*(KO#O7V!1O|z1IXc+i%HeKOR7#cHd^2$r=`F zzao$Sq1SI&!fRRdZE#vnco;;Y>Q;#>tzHsBsh+O_z~pu?&(0nX%ymPU-Nh13n^4 zT3LabfY|2UEImfaZ5rTaY)~0}ym$1d$_!JUzle5p)gP2sl86EJQ>tZM6*_OJVR00d zz`QCZ+VK_*prNw^rL(n(&~h?ItIllW<%F*aCnXxu!M2R;R43yguvcRxAh>0wioM>) zces9tzfnnERub5l5?jt*{C$pEs6LGQJR|B~v>G(@4qBv1y^hEbHeXMF5)#J7&p1LJ z)BwPJro;W~ZZiu;TD(dVtEki#&hZNVhrRgI z&GAa=<hQ7av=uvfU&83uyQz_JI+ zK#Tz`uLN{JQxr7REKHbfgh&bsi-ycOz|f!Ilp;~6O;qgZfFu2yqd*rzCm2IsDOG>;yITG{bE3_y`wW**3$>BXGFPf^xz#3u5S1BSG|2$@|bS-L-?N)8997# zHcsGA?~dQ`1@3_05M+98RYRwH|F%b&{7P=6;1XsUB{q1P8uF8lf52%Py<{lUk=A zLNo7ELynZi{xEcC51{u&saSy|Txjhw5*Bm+fC4NRVF?A@B`RxxWssHh5sEe;rjUaBi}YZvQ&{I6HoVJara*aKKQI^Js>dw7&Tn9_I?B(XoQ{-cI|4P`o} z%(X`keHZ;K9{QzYhW>EDo(Mx<^W@(h`UhBm3qvpW=o;~F@MMTZZz_)(=4-uSj{cot z-bVdL4|9ZJj*b5ZhPkI`m~(&24|A;@=IP!rH`Bm(4|7%PQNvsrd+%XBG<$TI@c`|A z>!@M=HeUJ|-A?ydc;fspZ;o!DQZv$jTdt8_E2f*#H~aZCw*3vuJ>23anJk5chS7d& z34|WkBV6(*PB)%FKCFqJM~VLE2EK|=fL9$!3qd@r5Q1nXf*?rPdX#vp{q!eK_Q-^7 z8t8Hr4coX=H5`pG(T`A15wQ?uA0-x#{K0e>4hoEUO%g-YjvW26gL$84V5$9Fskwg1<)7lh)>kKDnHocl` zVR`!iEAtfS+cCykk@d99-h_=s(#Oh$or?PGT3`Ls>wb$hTfAdnra|V9;PTAKIU=|u{s1?1##)$3_4&1- zYV{30Sr$t76`QWH{iXcW;Sa5@#Q#s?8Sb54`5uJ~kH59yxR9#brkCOIxA9j64v)Ws zH#IlgJ1+hlx@+#0Y)0Wpw&^3=TNdA|Kv_Iipgyv_zW9Cxp63PXBilPZeprE(UZ6g* zz2$M=g#@xZne6(=_EyA03j7O;yvo!^w$~r8RN$|?Kz(F;C&a52xXTOFN49rje3}CP z%L~*;w)dELvjXq(0`-yY4aDavFzp5E0}J-?9t9@6Kz(F;kBu)^;8HJ8AKBhue5C>} z^8)pe?G44(Do|$R)OdYldndLc5GN<5-K zwyY*lAKBhh<52|$y+D0rdrynkDUeH&CZ#^Iy`}N#3jDnnsE=%KRlH4sFbgK7KC->1 z#}_IPzY-=;AKBgy#+NDZTV9|(vb|@-uT|jx@B;Ob?TyCQC~&P8sE=&#)Of!FKj8)H z1HbBZPnCs!y}K-QHP1eNpXYZszn}1XmftJpCxbNN($_59lSE#{|o8Sxb4 z>iFLGq83maWW$DHG+T5t02;3WX(H5RXqNxn%)1NhX}y(xXH;T1zN%77IM*aZd$KF6!A&uNRmaQB_ot_u4N98@l57q(o^GJV)& zNPgUKFLw#LiK-5_YzTOxtdus}1bl}7#zNeF1J1*?9ollJNio3q6$3{6ys4-}*c+-h zcAAwnZHhK6cQ3eD9hRAi%~2tSce;7em0E0tKm~c}82)Ydb7Ix}_7RFbYxuWiKePNB z-8KB%bUHAKe+_)ezEc}d>c%P!xM!|-{+D{1TNTNz0^%RvL~mKLhg-t}VXUKj*t)iI zM@Z#-UTN8X(VA)L%fdXWm!>a^(E4T~j3i;>N7Z&!UTC`((2e_lNq0uuqux6GW)`Sf z`}vgGfpD|y;7pE_Ei~2268KfaO7us4dX@44O$_#LpoKIRy!h1Mm`U*!vyFVONzs7) zGP-CdMO}bwwywDk;X={F7&<(M-wRG~nuX__D0qE#fr6$NNypEY5m1cqfVwH}Y!IhXgeV^I! z`v=VIXei8%ofhnMMP`n2^_z@J53}N6(HIw~w72z&g@oXUAqsB!|7(aaxZs zOz2dEVdDQ%YpO~Td3#4|Le|zEW*j28r9RkqlG7Y^+5*S4`HyMy9pmqRG#Q+c8VWT% zzjmKtBnzgB48ON=|7{4zM)CDlzJ#dX;0aX1Le{Ok3qkMZiJa+%e>HO_iU{(Z->Nel zX5gb2Bx&TjS99Z>o=aYzW%|C=u0s0$2y|L2Bz=3# zV1u8PZfYz>upzdj{#-fedw>8fZ!!0`Siz+}{XNeG=+)QN|*?7?{XK~rD_B%qklI= z`tm7kTTG&Jy+r4!YYDE@jL5q(wqp)%FeqO&JZBayKxw^ecuuq4+_{VjGk`I8j_SOb z`|*Vu1OXm@I@9vNhpvJb4R$vvmA??5bGz-T>70{!a03MrTq(^nI?n@Ty~$9q5n{WLh@$;N6UvWR@i;e5`03lycE^6=v?s z;ei%2RW6yF&v|3yLdhT#lT&YuON>vw5lBuo8rUOMoI9RGVDk7(>s3tk>>)@hHGvg4 z>*Xkp#v?aOPSSxJX~$#f`8@9*tQKk8|?og%~PSC zFv#_rI}#vUVvUi9o&`EYddIo3UuZaeF-oZHW!Y@5)H#}=Hd=R6^P)bbbk}g=i5M7{ z#EjOoSnm3`n>B9*19pYC7}KH6&7d$3I`MTqt+nM z^z$08!jMZ%V^3A`L#iY-6gMaBrZKE0vma}xJ)I~DHkd|@oXpYW2cgWRNr~yWhNfxs z)FfdCi>g^iuV!58Uo>vbrOsGO716}`nZ5=O2aE=n`#;&h8-~^Mc-~Gf=Mo85etl?< z#}w2;wjhrKUlSxDMq0r5(|TFq$-_-W!drLK=;Ru@BblP1bEO+hs#8pV+o6!mNHCFyyCgfAlJX zL^D_N%=AZ_86Yi-`ZVliLgC3a#wOGiLtnJg9lQn%!?~9uIvUXd*ef!UU38IL=Fo0&-qE=3&ny&Y+ zec3q~Tzvu!#IQs_MxCHPx?By6Idkf)I-hjePM|ecsWps6Wh}Q)_xAmc>xC-uG$Dy} zS=e%E3WFIBL)EUOZyum-SsRU*U;c?9|jDKp{hjrQpd&BpyY8yq{r{{S)30Q?=EC}MJJ%%dxM_1~@ZRt~AQk?4Ll8Mv<(Y1u;3r?JfNfLLd*>bbs z&1Ajf1~E7^GKX&Dj|bJpyV+>O-1DCsEvq`;IG%SXw!^*PE$w9Z-fB|6V#*EW)45-? z>e^;IZqLSz+5PWdt_d#u8=c@A_kV+Cj^d+esPOS#p2Ej_cnTl4@x)$mnrKz`;l^}f{s5`J$5+gKX74-N(<2W$^o(e2Ww-m%1sW@vFvVyTE%Zpp z!R5K;{>q8P{fqFW{zZ9G7`8PaSiFm1=_#}hc~sOg|1az^gk4-bJedv?R0h1o zQd5hH&(g+gVH6?t`_EOIp|o_gPYAn`@EB{9_Tp7B_s$EvKCM-_`*y9z{wCYIND#58 z(3QK8oZ{GH?&HD)4{~Qyjv+UCs&Fy)phI^aP&UgRb80Hqn<@JxY7l{?nFdl;PvYyB z3PPssc3sT>wfbWl_x}~nW)v$9@Fj&ZXE6fBWS~3s*%0az(uk0c+km(hB#g@}c?x}p zsh__|2-aWCRvP8@KyJ0)9Hn=;ubgI91|ha~1R%os86yesHb1ny4SVEj`DfK%D3~-& zHdQmC5|d@-a1+}cOn-fDCQxzm=~>)3)S|a7nf;qGVah$@kG~6jW$zZ-4NSLT{6&=I&SD zyb|(_yNJdC4Kr)B-(>vHvTG;snO$gKp*;gDS(AWSB{rq;(dU%%NBxYsGwT=;O_91- z{u~k63)KxlKVt4QNR9v>72x+XKRpzWb_kT;QyN05-3PFJYg%)!$#xMNd&)!>RA$;$ zsqA9B;e-04l7)EH-%GRudO=j6#m%9{o6LA_6C8uLZHF({Qej+UH{PPC;D9*_HO9rz z39-mRRYtBliZItU0z!io224i})X1mC49YpQqEME_ly?ovNh;Bz;QI{9-FOljJ1FI6 znn5vY|K?_v&~|iCs5NKIq$SqA=h%E3933+@x*s<>Hg_=py|GCyBu0YsqsJu*OI0*3 z-{iE^j>|RGY8vB`{1EWhO<$;o=06nglenZb2KfvrYcVOcMGLu|?8my?hfV<1H%EPT zzh@~;qnF1cFk}5IuqBgQy0x&YH&&GmS83H{P*t6Mxu|y0N+>d6e6QS7wQ! z$D;$}8`)3q8KP|d)HbQPl_Y;UUP}Csl;hqOZ^r>BAe4uPd%SFX<~=NY*$c`OKb}X~ zLk9gjIw2kbV9~6GHj9!7p0V8hu4eYR?!FK5*h5v$Ozm+in`ZkHA6PoNd9SAOdQ(%a z+8hvuBe~ji57}d`la;2WI2ifz#hFe6HB=d`(8{tMT^tgl>9$oh&6&={KH0{r4Q@8F z&IQff2&|%Ib!CqcRgEwt)U<2;Drdp0vIWvYo>ul0O|C5)CUjZZLX1BgA~dWmyaa2y zs?l{t@^nV9irWVr)@`30*#RT9dfiMxx>owfwNA5yuTh&QQk1C2OGKUqs~=${Rn1;_ z5pa2>kAB+l{{EGH_<}2VSI$~{mFQQBZjP=;Mq#lNJ>1ZExi)vuDw~H^;ioS1p@Q&e z+80Gdi-k(Ptg1gqL=`vnc6IY|COx{P$Yd0WmkYH84O6`+S~=+X5&PxH^0ku#F)vg-9& zbHVx?3hsH5vW+^gqGK#wZe8QgRlxkjtbcY?bKb%b84k+nZEd!q z(MorF79M3?^E+%C zk_@%sCA9S1Y;f>aQ-S)0#Y7f1^{aK?jpp4J1>}BfQ03<3CUnVTRHo)V9vr;F=6)kM z*k*HcmEEApzJ{U__MuFkdq1=}Y!Jkt&G~jXE$SHH{XRG-t@rl;-pYw~2axu-{~}?sT7kVi~Y=r$=Ci91G}FH`SYN0{PkA#IYcsL?iaE zLg9V#a$s2u?p5_fxvS2$U>?C1h6U}7Co>=gu&z=8Z1;S*s=0Z15$YKM{oG zV#LAV7D0ywoUc3R`TO5|&pNV_zmwD~nhU{^3E)NespIPx{Ft_ju*tYcGkGuHB0u^* z+tQvzy9q-Vd=a)y`HSKwe+>yETv)m=I*q?`qt}9|npV3AXHt_A`%jCmjZXK%pi+b_ z=kN09EW)@4Bn|MM=lDIv54r_Ok|vedaTt2&lrdw;R~>6&tvJRI!l{T^50l)CvVEP? z^iFW|6fvqSK)T{Fnhb73`g_J-($mwA(*4%TliDB6FB>eY(uR<@($~c0vye%k2%LSE|{J?*_nfI z$CsR9j5pi$_>WC?J?82XuEa^~d5M9kaB$&1T?Y$un(3cEhJAFdTbf204oJ)S_r2^S z2*EhL47Ux}(w#qF?Q$20?=*drK0m-v%0fK%w{1MVtTPZ_>=jtF#1rQ;H)On(xdo5x z7?nM*h9%%rd!3d*%?_=neC&2wLN$*7?!5#&OTZqdC0wJWW;X%Y3;EP8rzOItSw4C0 zYC4dd(9~WT?0*8#nF4WXRA~y-8h@B<5Vb`I_#F;bt7s~%evK!;9@hqerL3h~**6id znh4zzJon-2&oQ0WZGQKw{yvSbs6aGa}qd?+fes`wQe+E_)yZirt`!%tPprjN1l zR3+4^a>|-2xZFI`*EGkM3_Il*T$C@@rWw9uxizK9AcZsyJ8|<0FN)nDu0kuCW|P(pTV&)|aeptVjkLyM4(D&qJmu zE0k`jqpX^iFrn#|X`a5MiNhMMjjJ3JSHMUQADvQrELVqZP&6A(XlnJZpUj@OvDLSJ zLQ`uXxMdqS1#?=B8-+srjH38E6n`yz@N9JK*B_?>CONZBg7Fm4_gMy^4$v3kW{$=! zHFwTJ)W@U^n~#Y7kUTkrDB|~jHMS0)$1l9_OdV$PVj-bREr&=KiJB{`&`>gMox65jtd8h1p|1)ovb%dUIql^SsR^pWW+GymNx61aw7^B)MfltlD zHP1hDxa{F)-lS8Zvge(BI6~cC^BQ5>pLrX&SC_qp@98&dIJl_!8-?>sx69{MR9L1} zpe2-UOfL#k-{0^};mlw#BhC!)QOiQaIu@x+-^iQN zPhaDVNbn0oy1|BjZxsc)QdE>lJ)^3f3DgpC*_f6T8P^3%$nUFvw9D`@jS~~BeWAT^S z<8cq?QYzekV0Af9L=tvs2pF{+w{)kmg@_?9;6rYjv4p=YdlVr1kjB8%Rnh8I=Q#@^ zo;@z20@@vH_n@~O<@4KyTAe*WZ*^sG)&XT({R@V-VYq~bvd#6U+>&6w4BE6M+S(E| z@i{a*J`Jg2k*YHpnrQ~b(;m}=$)S7mc?ei{Nj>S1&n!87avB+-j{9&r#bnAOc_b?8tGWm3YA=6vde`S@$6G zAYG5PxX}b?Fgc`&$di@U;w#JtP)*^VI9Xml#5iQRk3(Mps1So_;VL(O5}bT**f8Kv9v95Mf}$^=jgGem!t;F zFFW&LMAVyu+e;JwTtB3X%Z3nlu_}j7HSGz7wYz!2?m5lX^{HZoM}T^0s)lvsN8X6- zY^L?Pm&l&CdRNo->v&h;qYXx}VO5jU7x6CLhfdIp56x=O{M>C&LHx6z=~x@1gA`3Y(C_obESUDoz_dWgf;GZn5&r%~J;5K;o z(6COYx$ctpT^O-nm3q*IQ9~1615Ev53p{+ET+RebxBBr?il1Fdmtj_HBVf@Po8p|V zB5w1VX!<^6()AKneOHShI@Q+{7c?oy< zvuM$h8qt5G-Ho4T_EvK&xu8H9(1(Aq=M5NtNbQI94ox!dEpG6S>q>%**j;7(Qa1!j zlBXf#IoQlW=m`Y3(B?(sw{gVCxNKjAX?f^YsMJX+e0vuSX1=-~`+>Q`OlwbcW(!}~ zW)Q_e1{7~{iSdX+Xluyut7K7)B797~-g$0g*%>sP-s$h~a?c$wX{;Ya50 zwjw84X1;Z~57(G8czP&+^iivKeqNnC3*Iof;GLA498b! z#Wqd+CG9k#jK;fmL!yZLL?O=q-(H;48tTk^DkNL(r_+OQJPq7!{-FoFG@b5O&oVGg zJ*a|87RzGQIYyyR7Xl-h&+j2LJ@_1dGh6oR-PFj&1-IU%nT=J@uXMXFJu!2WVw)aI zM4VG^ZH(XAZNRBtlhL zryNr+n&ea3J3D0N?QjY?P7Wy&TYZAu<(RQ1Cu901HzJ561?ZZb4pH$Z%aIaPBu->A zigLTV?E^+PqLLy12?u{9#=*)EBgR6hwXWN}?-T{=-bAgFS7(oTP4Nh+_dx%gjQKA1 zn_IR{zq#>@>~1S@_*}Y^hZHgNlp@AGJW=E7a$lmq=4>_9CoOK;=jUXv=W%ngr!P*< z(J-j^!I7K}ihWIo(JO1m9yJ5*fdHSE?)`MR+x?imT_zl-YO#?J`R3X$#O`x&o zlNyU?29cJA!bn%D+nsXEOIzJ8W>{r!mAmUDLzr|_YL6OcQzYPFRM5U;P=XW@z<3O# zpA*95v9w&oIQDNE6Zz??Ojis;@@RC0N@=Sdqd9Q%$d;X-mV{!C!YGv)LcLXlI;MA4~ARHRl!-^#UCf;0Okm|-s%nSYnP z1I;1OTZbBH&Oz-|lg86dg@7FdNwH1y%_L&Z6LhbQt>kqZuL75mRaHQLDh0Sx*_=DA z(YwbbdVt)|UMzy#3H1l9y^Xn1*-)4>RoK5aI~I^-X9$pACSL)Nnl8$4f|p_ATL!A= zDiTnN0 zuz7@axfkJ@+6;?l&#fG4bT{QYZ40&6{H|Wv%6D*?Kr@2V0^PPZ=LK;-jI$+dIO|mh z@zumwlM_m5k~NGbYct6*h&oJ64@l4-eU4(y*n&*T8`TLFrd?qLF>Fk1 zI|%FP?8-fp+Br*lX`k|1ZA#cm2_3~51UE7W+Zr(EiA@l?90e0EH0gyG`TiBEL3KyT z`Kb}Y$!T1&xa1fiA4aampyVR>Q7F-3u&$r7AYhE?j5F-GnfccZlFyHh!x$MfqsCjF zd|WIzEtOlrEri^M)*X*>VOV-lFIFAF-f+@f4G4Ku!s@`nKuJ~0vJ}&P;_-!S#q+bqWT=S;rBJjqj0L!Y`+3!&3d`v0h`j!6%-u<-33LN*ZPAQtvMNR#SHGQDp}Jb|7E+s3V^|eb@QQ4dIeZ zOE`Jb!4}xc#@>M7_Vv?nogHwe@39k%iSF5~9cE051O`TYV5G%ar?mcAjSu=&)3j!E zu{m+f8ue^40IrT-xm9`$>&u-Tg>8zZr{zX|6^VbTuoVeBRJ43>8b+xsljcH4@pWQj zzXP;8-X5ZcTG}`k-Juib8xfp^T4F}RJ zJ;5LNbsiZeZ#Z4=PI~@GEo6WK;)<{I=# zc?njJZwCCClqgr4xfqtqx|BK@oSeExkLvL;Qt&lok`SNzm*}A-!>Rl_pWoIPe85H& zyn*D#cCy{6-AbM}V7cRr$TBv^;HA)GY9`{HV*Ra#p(&np7GFl!-``PxVg0>@YkOkv z{?7XQ1U+W|L&Czck!Ag@ELwjx2$db~bvw|*H_s_q`iy6wVGz+zu>dH>{ z-2uty95<1KZ#?3W|4%#7G?5_+ZP8C9QYI9@)iLk zA4znki^zW-BTaQp5Wh=2Epx%sx&lOs(f=Kl!KO3wRbJThcDt)j5>O}GON;cO%RT>q z2NF2vE_ai1NOe#$zrwh|5GpJeH#eMESyle6RRKX)4_O#sW+{IKK7I*qOB*x#B8Zv9< zw@*}mTI?-=u|qNjp2@yZSbmPJ!F#~cvUukL%)g*ypP!tG+0@&jdZ!xzUSKNRZPf5l z5zWGUNxF4nY8SHQXlBr*OWe%+0cJWZ98-G_5uuc`SiiWXmb4lMNKhwl5QVaU)|c4N z(N*<5HUF$hCismZ(i&?N-{8gYtJZg}nA@#3CvQC!PqfFFO;GqT^|F0ik2yJIo89#kYnGb#2E3BksgoQ?mZc% zCrC~T98hw}PrcQu?VIDR8HKuTm}zqoKN$BfVbYL{+}# z_et2|w5Wl)TBu9BLaw9QiON-hseV@rQ#uDYko(@lJQZ)Px~oc zTQBbh%FKv_3bzt4ipqvWn)z6?AAOu8h4pZ~ckTV}tOpMqFRbe_2Gff6qtl931G^v1 zGFEn#yT;p(zHG#I-hOnJwT}$m%mp+YZbIh_oA2#M=Q0(|A*A^K!q03*%n%&C30P>D zX_3tQN?@PwWq-}gSiwfJo;!FtOR@VE9C(P=#--@@+^4YFB~EjMp*u14ke|MkBtzXs zK^fDr%b7QX=*CPH@}T&A?{JP8nzNE`HdVCS>|;W6;=^dONv>i7xexbk9jDfAQk_r> zR0C=^ZME;*{Etuzp|#E?IfCI$N@-DS3cD4ziWKrSy$eI&%wHy=u`M$<<~Dur9R}q0 z>qY6NElI6sMLS*M-sH*M?gBRJ-ER7Ic~E&BE~48#8#2Po>UMQ^gWA_E3d7UV0orFz0I-mr39OYvq+juu<4(<^_Di}v zgz!y2X506`TdhhFO7y{`egHVyZuAs0sYXt-blV0`ifn|!1~L|&63R`CxeILbvIdem z-g(EG;In zctini&H=BDGFxrixVE^Bh}st~y)wI)W+LUr&GEJkv@_3$d*f)}DJ~`qPI6Atky)a1 zl3;%s-`KxA1(KZW7(RtvNg%_!dg!$p~Nxrc)VlSq#CXBC-1Ja zX!HJHA$DbcYflqah2ukoh+X*z&l@gygrmN(81KO=@lUBfGZVc|Jq)+g<>p??F;}lP zf3YA#d&lVJ2;?Tekv5-Z0CFPwrtUu(07$Mn5sbgu+(!0xwc=-xycZf_zT0HBcmk}2 zZ{KvTg(LSUj+elf37wb#&1#85nj~U^EZcyU3MeFhf~b6Yoz`z0Vnm9vm@x4)`CP(T z4waI>_69zArFs--Yz<@9*PUXy-;Z)1=_S_(zMgVAbQaYS4F(y6|XO#MXZXLw54fLp&&v*(W)q?ra}Rs<#qm_ z@7`x#(iScLxp|(~BNB`0; z{Yw-2m*d1NJKR&De?-T-x2lI>GCNql&XqrV6_NWRS4cK5z(8$mb?i4BWS=Y)*4Zte zNb~$w^o9e<%KeOem{g zueAxU~_wOKRbq{~fy@BU-K~%x0euo%Wss)Y~-5 zJViop5;=W_)+*D@T4g=R>vH4PJ%eeOPJ{jTQ37M(5ZTxFusclIrT<+n$5ctAT{%wv zlIh>QO!>y~9NRu~n@>y)%+6!=+CZN@{^zl3w3P2DtOLie-rjTRM?bFB^8E-6yhQb4 z{m-fyTEJ?Y(kJ|1F^#(@SOrk3~KU4 z7&4Q7;rE+L(WA`)q33IP^!%4aPq%vl5k+{qK_3zEnL5zzT#G6luF>-fa zzW_9l!i|1miP0;dU3de9Fyo9(|O?PC7}6Z3+~!Tpy? z;P?18%adnsKf~-Q4YNKo%uYQ*eg3KOex^QKQ+VctrOg;=(XFKoUGDwAD+NQ$@{j@; zn8OB#XpjYi?9K+a@i`A?u@Xmz18~^!?neq$h#*XVkc-63$HO$|ZAKaj($-p&4AIkY zQoFb?h&+bKw-E^*zG80k39|9egv8Y>?(fWDOilFKpIv35ndqfWi|AhBwnbd%H5Y#z z+FWJ>!`#!i9nXrSo@EP@M8aUH$V}I^Yb-N8$Rj>75mr!^na}x*FgmqdY8B=aT1|0D z3c}Oi1OU4eVxf*>xnnm)6)5j=MgtI3k*MyBs6%0XryV_A4(CoykBLq1Q^;4ZhH6hMLf zKO~fLr|Dv9e9jZE{bcxya}=Cq7u+eF-%lP{KjrMOCoy!CpPiJ%FpRP5K@vj<2lnZ$ z_-5|=xha31*#sH0SxozlM&G!4iDWN{U{fns%NM-Z!bIc8c|FFV@?Z2p14sqD+nGQc zPvLr+zIWg}U$m?WhWz>%HX!s1o!Fmhac(1-y5}CLFxVD`;JuLJ`794IDBzE!ASU2DI=oaGERyV zFl{l;%_ppGiuN6H(V$IQozs^VPL8}dI}qR`ZZO@Cb?MsyzP1XLkSX=}iCXchjLlMD zMUXVM`(Dr0{)YB9%!`Ju(-NfiZ-8BLi0?HWYB~#lJ}NoNl<~03G@N@ zP%cD%)kNwDyp24sG*T;VJX4rRN_}rJu5YpGOS*TzYVXB>`uZ-^CQnQH-f)73UHeHS z24+W`GNElCaU6~Z%ks-ZtTWAzuEMAc@c($@IH9A0PS?{<{F8CJI9)$!LZR!nt|ca& zfAo?3V6x*WC>|Fyg1s{+xF&{sLmi0WyJ&$xFw}Q??k@R2fN>5AuGu!(n48Ar?vkb< z=}h;Vof_nru?RH$lbaagml@g|VJ;EJEwrFR1Hx1uK?@L2Y_7K3oo14YQBDwNx^T0% z9}!JuNRhgj&8F0irCWk?oT{!he`C_fp*6f9nm9k&ce&FY;kGw+y3)J-mmg>E>*V;& zguXBrb~026UiwV>rB{2;SU>LU34K%3FTK`#%KEA0XSbF2otb{=_10(Yr1#N|S)FuOdZ04*O0!aAIX}9ELr-AYVBAAB(wG)UD60D24P%&~CH;k) zaV_;Hs}>~uXy*bc$0sK{I$iEg63T2U0omH`<5d92M#sU>_MtpnP#vi@{7?ed0v9w)f1CpU196mK>o zydv%Vv2c|r;~iKSNssW#^veRe5}zKlePuff7q1q6gZQu>G#e|ecHTBlxtg3 zJCqw#@2Q`oIy%}nMM7}T%wgi7YV@}e` z?7!x6?n%_aTKu`H2Fj+ zB8m039RRGP+kVk(<$23)HhaN4_>&HvndqIZxe zy(J0Pw}bANXB=wKef>2{O!@g|2!CH-ra1rX<;yr#VG4?yDToULWeJFzm0bEpNR&Yp z)s!@l-XVe=aIW|3@gKcBJV@anjHbnbqg>tAlf8x^Sx3%R_uguyPPdX8p1=gj&>Pr( zrCjnhzBnA~t=56B$cw|{aBgUB5YT}ooo7DA8Rp>MU0hd%CJ@aa%f89Z@UZJk?rZM#=V0#6MF+MX3}kCRNlhJKbmw^rkKQS zJS~&Zo0!BMJiYpJpu-MLO~565LTSV&Hk#)Y^DIvb6$L)=3qCBLkT~(rTXdb0iBIg} zY59cSa)bN%HC{t{23=m&4z*^A_tkTqKqy9|Crm-`F!OPlX-+;wY{E|nDC*(9%+ zQpgPIX*Y9q54=fp^;|vO`Hvg+aT`-MMCmS}ep9!zpBcN!&e+a#%-QvZNr;Wq7Zw6) z0<(^3il%CB^7+Z}ULk3=y4m4`u^fKpellm%do8c|*y$Q8^=5+CJZmTThL;MwrXcUW z0lx{uUFdy~b9dr7_LX}AYmhR>YdL9dR>ZdxmiQ~=<&VSo)jZ;e!}TP9%P^?ZTX;qF zFLnhcV(^6ztuWFn+_NkB97yjX6jlTu0tykf2W|`ZPTWX0I4xVsUS1_# zHZ8R($M#>3ipc6UEC=pc!h^ikESYK1;H&y<4)FG*d86vVy-Jy9GI953rzzuL)Km=% z9Q=n>57w#b!6p2H#8}c@rP{I7731KkU3$$LvQoor*u(E{t`V_TS_YD&*+?~%FouDA ze&0V}AOTXBGLZVWfPtt?F_17%%Ruxd1|nD#7)YfFJV?+`8ZnTVc}_9U@^lSf1qLEe zSq9Ps$g}^HrCq0FVj%52Ed$Y8Zcwv{$3T+278!{B>bXvbwZuU5%(IKn!!A;M8-d=i z6fuy+gjfc0)(Xo&Zl7yWsX?s4s@*1!fwblsh;fQdoUm(VhP)i|eWR$W79)8QDus0F z51Wy^?GeLB<{Ncv*gcJQm^K{5Na_qPFcek7NLp!&{?#_i+e$=`o@Ap8%}V`z>P$yi-H7=>W#E>+fS2iKQs_jrzt*@at5jhRz*4?aBQKF;7Ob03vZ99Wd?5hcKGcK|;V4mUW-RBQ)Z`>fD?;bH<0#onR{4xN`U@pB$7< z;|qnp_6$e^#NouDf%lqFNCF#_=O*J{y~j|5w%s(IG^w@P+v7z6kX%pRLBE~D4LP{G z7{$6sI%PKu7;Gtqi5S9Tv|D4(v82qJpRanAN|T$6WFbX|Bn#;{%G~h}8HO+u0mFSe zjq$Vq%GQWH(Q4R$CKoj?Km6_c9U{%~QWhlL6Cq=16jRxjCK0jLCJXpq?ETw!kC>l5 zM#FkRcCai!-Y)m#lg$h)#{g0!dF1@kUQ5pGbT9aZ0W@)1tyuBmaWC4Ae)RXo`AOLM zVSqxjU(s*k`QDQY=g)GV<}_s>_d_)rji~bhv~h{&`&=3rv7v6m{SvRx+RGHjge%Vb zPu;Ld#=9xG2SCZdzNNEHWofqp(6if*!aTRj)1F&UGW z!;AM+w2G%~ft*2udy#E>QGbgtqWGZxF^b5o4%66NQ+w`vYPI|2VWW>MrZ?$Y%^Aa> zSLW%^22iqT#uz&?f<&{_V)K0(W8!=hpUtsx3Y)S*2q}Gss=r^iHC#?|GmIvo8+!A@9q{T znR}4k-%_p=uK6BXeK!%O5>c=tDjrcO&`;RVkA4r2ehfvq=TmKV?Kabz;iqWL4|l3H zA0U`k7}CzS#8RyKt2VLKRG_0EP(4EB;=!|6a`<3;jisO0eyPkQr%DYziu82`EN4u7S1L*ey-iVBV6abe zG-LHnz{`1+TLgWe+nwqe3bR@DQv%efY+F;(U7(e@?OHEgGrOMM?j)Os){7S1pZvEO z^qICs)1$n9i8>)_MWEaL7S1}^aS>;AKf}9oQP4@RgFpDvO(H($THcRwr0n#ygpWBd z;!E#kC3lSTcYb~8>tXohtvSZIfwzt%gjwgF)oJ|k$RUXY7&$n)aQx1DjTaVwJQdy& z#)9*?pK_kKHWf1;f7ZuRf2ziOJ!-xJsV4Ka-F!uIOT+H(W*I&|7Y`xQ5W}!l@(xO- zuNO1@VZ!bHh(soGF;hJ$YmAqsn%q*kEs-LFf<8~0F>Xfk&4az0ykzPr`rN3;#ZCPa z6>;|&*kx(Hd3onDd7D`TP%C+E*w4I>TN+LEm`?cV1bT?{)zPxhz^MXkiz@1@!IjRY z+|n6&&HS)?l5wZf6TEkq0oXh_se+;K8;PgxgnM?oKfL?3T&jArUcb#NcY>DH;B=xT z$)?sTh>xkBk16hYC0j@Jsgy~(itn^E%3EmKqCn~nGLd6@F~>aRSY{G;s^AH!CslBI z7a2(Tm14>|qJb!|%x!2CZ`z;@0{3sooy?(tDs{c-caU^hvy|d|(=!mP*S5d^g#1Xr z?D>8ZVKBW#to^9eZ6?#BL_+qt4Whc-2GODWr=&rBCD2E<2lf0GP!G0%QN4Q)iA-cY z$w0(B&|yn43D5KT#NDpkqKzdI`VO_#X>+8e-V6+`QSHn!}=pZ~VAG4`1Rn zPY>x;6a?B_vJkZ4hH~Z=87;q_mVo2a}RY$&->PYX-^wMN<0O zp2H@k+u*gi4cAk7YQKTS4>qb>kdne6C7srE(o(mGly2i`Nok9DdlRHImx4Xk(!pzi zl(tb2$oq1%0QUDQWeF*rVwwbZX{515Qo5v=qf9xL81C`{S1Ks0KxRIg=Pkz(R+DshiVe6xz3n7Y9fyVw@{SG;j}l(JGOEphhd zi@jdOT0Tb`ep*aCixjyHMY73l*hA9X2A5xVJn1~*tb|Q-9)Z-^4N}cQoD(5kugaiG zvBWuyIpkPA_sm@$acVBjZP2{xzH;7S5a%N#I+!?BN}f1PS+|qyUnI^6e?4sCY-i%n zZP-ucsYU~fsOc8OsW6E1Plh;SeoLHTo|ZVP&D)zG&Y%4N{MmW$PF@SdSwle}uZ+W| z9@syxlqJNuhHt~?c9OJ6ocD9O)64Pyl*1BdkIK#y=ihDFw-!@2D5a&h_n2ZK&bw8t zB|I8(MKN(uiCYbEmaAA_YPliKTWzuD7gPT6PEyV=DIew4(EJ@L)|XmmX+Bm=`~xMn zl>EQE7A9&b@o2z{tRuaCIYj3+6bTHHHuze{ulqsLdDHb`gSv}Io!yWm4l-^k!gHER zv1I%*Lcmxut|Zd%Sc!nJDV1FJ;lm)~5Qz>ZW0jI8V^fyf{x6g9hn_lYGG2y4BDdj2 zDo+g;;VKxSkcm^QcilzGA8xn41!na^Th zZfLh~InfD2xz^Q@^w9XiT3#4P@3}ay=538Hke{1X56Kxn`#lG2Qw zTEIFfRk%aXmO~-B$Cya!eyM=St2}1>8xV9z{(OKYLxC7nN}oS~^=kgq%9>y`A@VgNqu2-j6UP z9)t^VE{h9sFAo=$g0MK2fwz1H4PKxBlFI?Jb7A7-cVJLT_wt)H;Q++cl<$f&dbs$( zZ-k4v!bN(|>>~V=fc|1qF970mg$wYoIKEtL>SEcOE)(Q6AO<`b%bqIk!L*T4P?H46 zjc#`dY-4W>+a`2tNdoIv;~_f-_c4mAoSB3ndCO!g3I zI7pIjgF3@O7UaJS2U(K;N(qsx_$t3y>o9P+Y|3{ff_tOj|EcZ zC&up>&^A|KGyeBi*XtZX->9>G2L<`oYmMVv^DytnTvNxpZ@re}$6WIZetqj#K{dx* zGr+I!+~hG+XD2({@1J9&W)z1^cieWtONkQp2^5ynQ`0t6f5X`Nn+x^lzNZ>;-&1Yw zyu&I}az*~{Fv?e-a^F)g-Paorr_K4Y^*oI71(n?Q1R?k4|AX>BH9PmIBsbO^UdzSC zu*LHu#hrs=c#GxU;G$F9O^y|iHyeLgW*&^X-}xG1_XSPPUc3f1yE?b>^RG*$<^nm( zLl2|>qL$qEL_hA$iNkAU5yIlVT$7_21AhebtTz+SAHmU!f^LvjC*3v^u47KxO~I5< zclx-or#Ruk{)Fu>N5b3_ZGQG9SVfd`JBK!09$Tl52knN7>Cctn9H+CIaR6Gry57ey zz*p~)?pN0v0B!DC6wZE6a=5o@!0(byB?Z|v>9Wqp4z zc=r0ICDp<8-D8uyHU0ZkX?qR;{BLwWIE?te?1eW(6vdtTrEcm6f`~qoy=_VK6 z=LX1s3;+Ma|F`-7KL15-#(7tDAncr#*w=faB=)dp&|tQxIErKq8usv6B4oVd$4OFUI08$~9T`#L%cD<$y-lp01mhG>=cq1I&3YPW08=vH5 zHH2OjL@{Cvh{U;#D-ORiJa6;Jsu{Faf2Ayx%}N9+v(fH0oe9k&X`ynKUk!L~$rfED z)xv?@6G&ttCFqb6P_j$MZ^?FRnBBIpcH36{%Bb%IZj+|4+opK_nFvdnIf&-Ia>3NC zJvv;wB{L8gu_MSz#?}p1cg7`|vtb=0u+F|#XsvACp^WtFP0ORHYVd8P`(4IdWq~n2 z3fBInb_j78wNn2H-uc;dwvJRi z-P@X-je%<9`%J^(?8Wgi=WJ*0K&2DBrz&{!n(h5ljGNBP@`1|C@yapkXFx@oIRBTp z_wrwnsRA00n&#libIqj~br{DXO&SH+OL9Lx5rwleel7z zK9hzM* zj^*=cYbkZNiCmYD#2K_LP@71pZ6@-Pd}K{NQoBc~-T6cUEG;NHSoqE-zpJ2-2SU)sB7D5O3zW`e?t$C{jw7An^PL9sVOh6|V zMzQ%pD`z2$8SAM`oAs3178pHhq|Fa1f&DJG}xE73XHH}SG zVN#tNexoxPQv-={tk0$fb?x0hIW%HMXHy2(6K%bSPzNw|n&Y zX6~cy6E~XS@g8S7YiaJ=fW4KC#`0RsiH4PrqTbzcuE}AKs*H!QlbMU9CGx+NpWO+X{~ z`sB}mVWh1_??q5dobhHsaqou@07bh6#f(FMV&ZlS3N!7c_eAr|u$2Lb;#0F;Tr^fA z8k5O%(4(^^1D6PN_Q?N~!iAfSL}xLsJvs!P)mb{L#iyH9Beq4{ckxjKQaIBV9ceQZ zH_~PR^beu4+oJtV5Xv{&4}eaqg-&}ZbYhlJc8>@;g=yn(=%v0uFZUP^kJ2+A_V_zt zUnwXK9)pJikw-1|-vmTHKm7oRG+Kx>l|sZDI*)E0Lobmcy_l;H59UX+3-I{vt)+Al zJsf^C8Sh^V8p#%z+7!l(ajqYdk7$X z|6U6ujh;aIC)$@N>%D?5NF8{YMv^XiTi$Jm2 z>qhF#ZBQZZ=*zF0RdDC`1j@=aFV3HbC!O&KwI%AsyeA#QI6sOwT<~(YdQUHsZysd> z@g;moai_<%aUH+Y&J7RaG*T}Nc->*3b%C?9i!a^Ng^P&@@ z);U3FU_YI9HccK54HzBb*JS_3GjICOvAG!m%aBBk{=)y6nI)V&h;cq`XlV127_rxy?=yAuzMQNn>Nc;;7 zsnPz?aRlwt4M{W3Ff`)as~s=O@&ul*ZI-|z(2t$Y?fD7LXZ6z260GoL&QAoK^NmY1 zoD&$vJ52|+0?stmx24z*pyUyRp6m-ulBs__*Sjs17 zK>^YoC*6-%YF{sgaJvLIb~5PWbZb_3>2b|u%=vl2-kgA@{oD+xs|NL=#g@4iv@AUo z{czu|(EvlQh8iMLn>AUZ|4w7=KP%TK#eI*v-^^w;&dvn#u#kF1l|icKD9G6i#>c?( z-r<7HeDyMmf5s9ZBNgEOA1_)H?CL#9tE;K0Hyq>`zr6w@Z@`Ympa3s!?~BAZuivFiwLoUhmmAJ zFRpX1g81@tLgJGhX57>Wks52Mr2Ch5nZp-mDAj=!^)2b{AT+(D8l=o1Y&KzbKy@W& zF=EuXPIvKFHDV&b(hQF?APb;p+_0*%-tZV0((n*u4j3N5OT<}(R})_VN~>c4)x$%8 z(n?c+QX9G~kiq~7Y54B=VkI>|T2la0?+OE;*`)v)SLp!=rj!SeU4$M8p!TEzkhwqI z90p9f_r5bvpY2`hyejQY@$9em^4Gi)sTPh&5i-#bj81^B`=5(>wz;0PLA5CGv zQ-K=585Q$z_L-=~EJ-UBEAc#Pf|m2id5ehoU`Oh*=CFBXJLYUoY_`20+x97{Cb>g2qy#*5{($xRp$vKks%9Ixy>VvhS`W1;G| zB=rO^%#)NT!Xv4=pNgbJNe7N6Ngjdj+MF|})i<&TK9}nMmnGkI`tES9jJPk|W`wlt zb!7_49b2cfH{3dAiZUJ-gWcJi71^0Pwn>rqMEQ^_W;n7O)_&s0QWW`#ZX}v+=)R`^ zvfBGEn$nH-UP6h}nmGYhp3xLa8l77n*WN;eD+3tnf9X`+Q!`X&pnOU#n9055|-yT3AN9)#!L{qkpW zIpZEJ!uHB{K4l1zUOOo8WCDji$=B>Xb+~xS_{TgIDGRl6I$J zU}P-tkEM!pZ57-MuiBSWM<>#$w1Je>?Vd+jx^s9-7>|5eV=$G>9a|3_u*dvE;bz46 z`(~V!x%UVI4EX?l__#r2B@=I_d%Bv9`&%du{?gW-8tTJ$A6#a7JIw1cbL+!&Hc&4! zw?0f~^YpT|Ws2tKGUM2XkG1P4U*DENtTaBz-FvQ8(Lq^Nc}VK8By<2lU#E8Jh*>2t zIh);IZAREqAWZsDhJ)x_w<4C|oAc9avPhQ7b- z&|%67Qr0Qm?g#0AcUNZ6#H}{MWzZWnhz=KOdn}T~v2Al@Zigt&K_3<8z^qAM{v~xL zoV$X%&!(BYfy_M`#Thdm?Y+aLrAhuU^uw7glDT16OYW|SUdP*oYN@7HsqOf5)+xEb z5k&t|z8MjOBX@_24<8gicD;<;6_pOg9!v9;XPC9F@l&`D|G|)x+z7NH-!{wJKro9m zlKZ}C>aTAEZkz~)E)b~ZY%Humi~Pf+d+ioOJ4OC+K>e80Xhl{bFjRIs#^(}MMVxey zR`3=zDC^*$W(1__z-ClWcQ*IJKmtkklJ_xdIchV@GRctj`yT6X9I-=QavMxD+E~PE ztMY><8-uzgtr<8UCSmZV9~Rm!2p-hF%7VTnrbgCuJ8QHbqNX`(yheJCVDpXRSz#J^ zJNK-ZMsBU4-fX^+QnNIvmDzkNe_&d<j~d+WVRO>a*+YfQsgTG)o4h1W-c_xC56h9|N3 zD>S^pYq%v(;2X;eQ$R`U7AQt8BW9={jeu2az&h!-^bvNh5wr#Qc0OZ{IY`M{T%))f z=esO;fp=W+=2>areiqlW7`V@Tuh*|0^-IzZOLxxdJFA5YdbV$;>04K)=6Ttl)F?XX ztj>4vdj>NvdYE~gyUHl$;xtG5^O))RfiM&ENc;eO9jzmMo%&X1yHd~&>r{QT&>urW zwm(t&Vd#fv%=G6IT(x5Q)Bhgo*O)ckXm{2dk}_vX_dRAiF=OA(j{GQnuZNfEw%M~w z@$%I>)$D>E%|lPg{BJsb#^(+izX$p2c8oogQty#A4z9w zleLq}yWzfbgE||RpY%99m0|zi`Hma$?uQ11_kGrY5Sb>({AVU$=EDizgqPmaTO1Edv@%#l zO?Pv>z0#^6r-W}9Eojx29EBWS+7f~UMu<_q`e?P zL-Pt3c^ATx?t~Uh&6ThcpwB=|Ts*GrHmHS-+Xf79Pp

    D)*4LPUN6D^lZ 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

    m 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

    Y9X1Mp#BbQ6*Xx^T107)2WuI(+J8n-|NDgF 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ℜ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⪻P)tq!*i^2!X*@xLBi_Q`^PYBFyGuyOy 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�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 P-0oS_9v;a5NB{X>cvH<6 diff --git a/io2d/src/win32/DLLs/x86/Release_Clang_C2/zlib1.dll b/io2d/src/win32/DLLs/x86/Release_Clang_C2/zlib1.dll deleted file mode 100644 index 271a04206da955a22ea27d569361114257f408b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67584 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 diff --git a/io2d/src/win32/include/cairo-deprecated.h b/io2d/src/win32/include/cairo-deprecated.h deleted file mode 100644 index 7a56aad..0000000 --- a/io2d/src/win32/include/cairo-deprecated.h +++ /dev/null @@ -1,123 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2006 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_DEPRECATED_H -#define CAIRO_DEPRECATED_H - -#define CAIRO_FONT_TYPE_ATSUI CAIRO_FONT_TYPE_QUARTZ - -/* Obsolete functions. These definitions exist to coerce the compiler - * into providing a little bit of guidance with its error - * messages. The idea is to help users port their old code without - * having to dig through lots of documentation. - * - * The first set of REPLACED_BY functions is for functions whose names - * have just been changed. So fixing these up is mechanical, (and - * automated by means of the cairo/util/cairo-api-update script. - * - * The second set of DEPRECATED_BY functions is for functions where - * the replacement is used in a different way, (ie. different - * arguments, multiple functions instead of one, etc). Fixing these up - * will require a bit more work on the user's part, (and hopefully we - * can get cairo-api-update to find these and print some guiding - * information). - */ -#define cairo_current_font_extents cairo_current_font_extents_REPLACED_BY_cairo_font_extents -#define cairo_get_font_extents cairo_get_font_extents_REPLACED_BY_cairo_font_extents -#define cairo_current_operator cairo_current_operator_REPLACED_BY_cairo_get_operator -#define cairo_current_tolerance cairo_current_tolerance_REPLACED_BY_cairo_get_tolerance -#define cairo_current_point cairo_current_point_REPLACED_BY_cairo_get_current_point -#define cairo_current_fill_rule cairo_current_fill_rule_REPLACED_BY_cairo_get_fill_rule -#define cairo_current_line_width cairo_current_line_width_REPLACED_BY_cairo_get_line_width -#define cairo_current_line_cap cairo_current_line_cap_REPLACED_BY_cairo_get_line_cap -#define cairo_current_line_join cairo_current_line_join_REPLACED_BY_cairo_get_line_join -#define cairo_current_miter_limit cairo_current_miter_limit_REPLACED_BY_cairo_get_miter_limit -#define cairo_current_matrix cairo_current_matrix_REPLACED_BY_cairo_get_matrix -#define cairo_current_target_surface cairo_current_target_surface_REPLACED_BY_cairo_get_target -#define cairo_get_status cairo_get_status_REPLACED_BY_cairo_status -#define cairo_concat_matrix cairo_concat_matrix_REPLACED_BY_cairo_transform -#define cairo_scale_font cairo_scale_font_REPLACED_BY_cairo_set_font_size -#define cairo_select_font cairo_select_font_REPLACED_BY_cairo_select_font_face -#define cairo_transform_font cairo_transform_font_REPLACED_BY_cairo_set_font_matrix -#define cairo_transform_point cairo_transform_point_REPLACED_BY_cairo_user_to_device -#define cairo_transform_distance cairo_transform_distance_REPLACED_BY_cairo_user_to_device_distance -#define cairo_inverse_transform_point cairo_inverse_transform_point_REPLACED_BY_cairo_device_to_user -#define cairo_inverse_transform_distance cairo_inverse_transform_distance_REPLACED_BY_cairo_device_to_user_distance -#define cairo_init_clip cairo_init_clip_REPLACED_BY_cairo_reset_clip -#define cairo_surface_create_for_image cairo_surface_create_for_image_REPLACED_BY_cairo_image_surface_create_for_data -#define cairo_default_matrix cairo_default_matrix_REPLACED_BY_cairo_identity_matrix -#define cairo_matrix_set_affine cairo_matrix_set_affine_REPLACED_BY_cairo_matrix_init -#define cairo_matrix_set_identity cairo_matrix_set_identity_REPLACED_BY_cairo_matrix_init_identity -#define cairo_pattern_add_color_stop cairo_pattern_add_color_stop_REPLACED_BY_cairo_pattern_add_color_stop_rgba -#define cairo_set_rgb_color cairo_set_rgb_color_REPLACED_BY_cairo_set_source_rgb -#define cairo_set_pattern cairo_set_pattern_REPLACED_BY_cairo_set_source -#define cairo_xlib_surface_create_for_pixmap_with_visual cairo_xlib_surface_create_for_pixmap_with_visual_REPLACED_BY_cairo_xlib_surface_create -#define cairo_xlib_surface_create_for_window_with_visual cairo_xlib_surface_create_for_window_with_visual_REPLACED_BY_cairo_xlib_surface_create -#define cairo_xcb_surface_create_for_pixmap_with_visual cairo_xcb_surface_create_for_pixmap_with_visual_REPLACED_BY_cairo_xcb_surface_create -#define cairo_xcb_surface_create_for_window_with_visual cairo_xcb_surface_create_for_window_with_visual_REPLACED_BY_cairo_xcb_surface_create -#define cairo_ps_surface_set_dpi cairo_ps_surface_set_dpi_REPLACED_BY_cairo_surface_set_fallback_resolution -#define cairo_pdf_surface_set_dpi cairo_pdf_surface_set_dpi_REPLACED_BY_cairo_surface_set_fallback_resolution -#define cairo_svg_surface_set_dpi cairo_svg_surface_set_dpi_REPLACED_BY_cairo_surface_set_fallback_resolution -#define cairo_atsui_font_face_create_for_atsu_font_id cairo_atsui_font_face_create_for_atsu_font_id_REPLACED_BY_cairo_quartz_font_face_create_for_atsu_font_id - -#define cairo_current_path cairo_current_path_DEPRECATED_BY_cairo_copy_path -#define cairo_current_path_flat cairo_current_path_flat_DEPRECATED_BY_cairo_copy_path_flat -#define cairo_get_path cairo_get_path_DEPRECATED_BY_cairo_copy_path -#define cairo_get_path_flat cairo_get_path_flat_DEPRECATED_BY_cairo_get_path_flat -#define cairo_set_alpha cairo_set_alpha_DEPRECATED_BY_cairo_set_source_rgba_OR_cairo_paint_with_alpha -#define cairo_show_surface cairo_show_surface_DEPRECATED_BY_cairo_set_source_surface_AND_cairo_paint -#define cairo_copy cairo_copy_DEPRECATED_BY_cairo_create_AND_MANY_INDIVIDUAL_FUNCTIONS -#define cairo_surface_set_repeat cairo_surface_set_repeat_DEPRECATED_BY_cairo_pattern_set_extend -#define cairo_surface_set_matrix cairo_surface_set_matrix_DEPRECATED_BY_cairo_pattern_set_matrix -#define cairo_surface_get_matrix cairo_surface_get_matrix_DEPRECATED_BY_cairo_pattern_get_matrix -#define cairo_surface_set_filter cairo_surface_set_filter_DEPRECATED_BY_cairo_pattern_set_filter -#define cairo_surface_get_filter cairo_surface_get_filter_DEPRECATED_BY_cairo_pattern_get_filter -#define cairo_matrix_create cairo_matrix_create_DEPRECATED_BY_cairo_matrix_t -#define cairo_matrix_destroy cairo_matrix_destroy_DEPRECATED_BY_cairo_matrix_t -#define cairo_matrix_copy cairo_matrix_copy_DEPRECATED_BY_cairo_matrix_t -#define cairo_matrix_get_affine cairo_matrix_get_affine_DEPRECATED_BY_cairo_matrix_t -#define cairo_set_target_surface cairo_set_target_surface_DEPRECATED_BY_cairo_create -#define cairo_set_target_image cairo_set_target_image_DEPRECATED_BY_cairo_image_surface_create_for_data -#define cairo_set_target_pdf cairo_set_target_pdf_DEPRECATED_BY_cairo_pdf_surface_create -#define cairo_set_target_png cairo_set_target_png_DEPRECATED_BY_cairo_surface_write_to_png -#define cairo_set_target_ps cairo_set_target_ps_DEPRECATED_BY_cairo_ps_surface_create -#define cairo_set_target_quartz cairo_set_target_quartz_DEPRECATED_BY_cairo_quartz_surface_create -#define cairo_set_target_win32 cairo_set_target_win32_DEPRECATED_BY_cairo_win32_surface_create -#define cairo_set_target_xcb cairo_set_target_xcb_DEPRECATED_BY_cairo_xcb_surface_create -#define cairo_set_target_drawable cairo_set_target_drawable_DEPRECATED_BY_cairo_xlib_surface_create -#define cairo_get_status_string cairo_get_status_string_DEPRECATED_BY_cairo_status_AND_cairo_status_to_string -#define cairo_status_string cairo_status_string_DEPRECATED_BY_cairo_status_AND_cairo_status_to_string - -#endif /* CAIRO_DEPRECATED_H */ diff --git a/io2d/src/win32/include/cairo-features.h b/io2d/src/win32/include/cairo-features.h deleted file mode 100644 index 9eae639..0000000 --- a/io2d/src/win32/include/cairo-features.h +++ /dev/null @@ -1,17 +0,0 @@ -/* Generated by Makefile.win32.features-h. Do not edit. */ -#ifndef CAIRO_FEATURES_H -#define CAIRO_FEATURES_H 1 -#define CAIRO_HAS_WIN32_SURFACE 1 -#define CAIRO_HAS_WIN32_FONT 1 -#define CAIRO_HAS_PNG_FUNCTIONS 1 -#define CAIRO_HAS_SCRIPT_SURFACE 1 -#define CAIRO_HAS_PS_SURFACE 1 -#define CAIRO_HAS_PDF_SURFACE 1 -#define CAIRO_HAS_SVG_SURFACE 1 -#define CAIRO_HAS_IMAGE_SURFACE 1 -#define CAIRO_HAS_MIME_SURFACE 1 -#define CAIRO_HAS_RECORDING_SURFACE 1 -#define CAIRO_HAS_OBSERVER_SURFACE 1 -#define CAIRO_HAS_USER_FONT 1 -#define CAIRO_HAS_INTERPRETER 1 -#endif diff --git a/io2d/src/win32/include/cairo-pdf.h b/io2d/src/win32/include/cairo-pdf.h deleted file mode 100644 index 1bc8524..0000000 --- a/io2d/src/win32/include/cairo-pdf.h +++ /dev/null @@ -1,94 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_PDF_H -#define CAIRO_PDF_H - -#include "cairo.h" - -#if CAIRO_HAS_PDF_SURFACE - -CAIRO_BEGIN_DECLS - -/** - * cairo_pdf_version_t: - * @CAIRO_PDF_VERSION_1_4: The version 1.4 of the PDF specification. (Since 1.10) - * @CAIRO_PDF_VERSION_1_5: The version 1.5 of the PDF specification. (Since 1.10) - * - * #cairo_pdf_version_t is used to describe the version number of the PDF - * specification that a generated PDF file will conform to. - * - * Since: 1.10 - **/ -typedef enum _cairo_pdf_version { - CAIRO_PDF_VERSION_1_4, - CAIRO_PDF_VERSION_1_5 -} cairo_pdf_version_t; - -cairo_public cairo_surface_t * -cairo_pdf_surface_create (const char *filename, - double width_in_points, - double height_in_points); - -cairo_public cairo_surface_t * -cairo_pdf_surface_create_for_stream (cairo_write_func_t write_func, - void *closure, - double width_in_points, - double height_in_points); - -cairo_public void -cairo_pdf_surface_restrict_to_version (cairo_surface_t *surface, - cairo_pdf_version_t version); - -cairo_public void -cairo_pdf_get_versions (cairo_pdf_version_t const **versions, - int *num_versions); - -cairo_public const char * -cairo_pdf_version_to_string (cairo_pdf_version_t version); - -cairo_public void -cairo_pdf_surface_set_size (cairo_surface_t *surface, - double width_in_points, - double height_in_points); - -CAIRO_END_DECLS - -#else /* CAIRO_HAS_PDF_SURFACE */ -# error Cairo was not compiled with support for the pdf backend -#endif /* CAIRO_HAS_PDF_SURFACE */ - -#endif /* CAIRO_PDF_H */ diff --git a/io2d/src/win32/include/cairo-ps.h b/io2d/src/win32/include/cairo-ps.h deleted file mode 100644 index 33d0e0d..0000000 --- a/io2d/src/win32/include/cairo-ps.h +++ /dev/null @@ -1,116 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_PS_H -#define CAIRO_PS_H - -#include "cairo.h" - -#if CAIRO_HAS_PS_SURFACE - -#include - -CAIRO_BEGIN_DECLS - -/* PS-surface functions */ - -/** - * cairo_ps_level_t: - * @CAIRO_PS_LEVEL_2: The language level 2 of the PostScript specification. (Since 1.6) - * @CAIRO_PS_LEVEL_3: The language level 3 of the PostScript specification. (Since 1.6) - * - * #cairo_ps_level_t is used to describe the language level of the - * PostScript Language Reference that a generated PostScript file will - * conform to. - * - * Since: 1.6 - **/ -typedef enum _cairo_ps_level { - CAIRO_PS_LEVEL_2, - CAIRO_PS_LEVEL_3 -} cairo_ps_level_t; - -cairo_public cairo_surface_t * -cairo_ps_surface_create (const char *filename, - double width_in_points, - double height_in_points); - -cairo_public cairo_surface_t * -cairo_ps_surface_create_for_stream (cairo_write_func_t write_func, - void *closure, - double width_in_points, - double height_in_points); - -cairo_public void -cairo_ps_surface_restrict_to_level (cairo_surface_t *surface, - cairo_ps_level_t level); - -cairo_public void -cairo_ps_get_levels (cairo_ps_level_t const **levels, - int *num_levels); - -cairo_public const char * -cairo_ps_level_to_string (cairo_ps_level_t level); - -cairo_public void -cairo_ps_surface_set_eps (cairo_surface_t *surface, - cairo_bool_t eps); - -cairo_public cairo_bool_t -cairo_ps_surface_get_eps (cairo_surface_t *surface); - -cairo_public void -cairo_ps_surface_set_size (cairo_surface_t *surface, - double width_in_points, - double height_in_points); - -cairo_public void -cairo_ps_surface_dsc_comment (cairo_surface_t *surface, - const char *comment); - -cairo_public void -cairo_ps_surface_dsc_begin_setup (cairo_surface_t *surface); - -cairo_public void -cairo_ps_surface_dsc_begin_page_setup (cairo_surface_t *surface); - -CAIRO_END_DECLS - -#else /* CAIRO_HAS_PS_SURFACE */ -# error Cairo was not compiled with support for the ps backend -#endif /* CAIRO_HAS_PS_SURFACE */ - -#endif /* CAIRO_PS_H */ diff --git a/io2d/src/win32/include/cairo-script.h b/io2d/src/win32/include/cairo-script.h deleted file mode 100644 index b5a8cf3..0000000 --- a/io2d/src/win32/include/cairo-script.h +++ /dev/null @@ -1,98 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2008 Chris Wilson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Chris Wilson - * - * Contributor(s): - * Chris Wilson - */ - -#ifndef CAIRO_SCRIPT_H -#define CAIRO_SCRIPT_H - -#include "cairo.h" - -#if CAIRO_HAS_SCRIPT_SURFACE - -CAIRO_BEGIN_DECLS - -/** - * cairo_script_mode_t: - * @CAIRO_SCRIPT_MODE_ASCII: the output will be in readable text (default). (Since 1.12) - * @CAIRO_SCRIPT_MODE_BINARY: the output will use byte codes. (Since 1.12) - * - * A set of script output variants. - * - * Since: 1.12 - **/ -typedef enum { - CAIRO_SCRIPT_MODE_ASCII, - CAIRO_SCRIPT_MODE_BINARY -} cairo_script_mode_t; - -cairo_public cairo_device_t * -cairo_script_create (const char *filename); - -cairo_public cairo_device_t * -cairo_script_create_for_stream (cairo_write_func_t write_func, - void *closure); - -cairo_public void -cairo_script_write_comment (cairo_device_t *script, - const char *comment, - int len); - -cairo_public void -cairo_script_set_mode (cairo_device_t *script, - cairo_script_mode_t mode); - -cairo_public cairo_script_mode_t -cairo_script_get_mode (cairo_device_t *script); - -cairo_public cairo_surface_t * -cairo_script_surface_create (cairo_device_t *script, - cairo_content_t content, - double width, - double height); - -cairo_public cairo_surface_t * -cairo_script_surface_create_for_target (cairo_device_t *script, - cairo_surface_t *target); - -cairo_public cairo_status_t -cairo_script_from_recording_surface (cairo_device_t *script, - cairo_surface_t *recording_surface); - -CAIRO_END_DECLS - -#else /*CAIRO_HAS_SCRIPT_SURFACE*/ -# error Cairo was not compiled with support for the CairoScript backend -#endif /*CAIRO_HAS_SCRIPT_SURFACE*/ - -#endif /*CAIRO_SCRIPT_H*/ diff --git a/io2d/src/win32/include/cairo-svg.h b/io2d/src/win32/include/cairo-svg.h deleted file mode 100644 index 592c645..0000000 --- a/io2d/src/win32/include/cairo-svg.h +++ /dev/null @@ -1,84 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * cairo-svg.h - * - * Copyright © 2005 Emmanuel Pacaud - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - */ - -#ifndef CAIRO_SVG_H -#define CAIRO_SVG_H - -#include "cairo.h" - -#if CAIRO_HAS_SVG_SURFACE - -CAIRO_BEGIN_DECLS - -/** - * cairo_svg_version_t: - * @CAIRO_SVG_VERSION_1_1: The version 1.1 of the SVG specification. (Since 1.2) - * @CAIRO_SVG_VERSION_1_2: The version 1.2 of the SVG specification. (Since 1.2) - * - * #cairo_svg_version_t is used to describe the version number of the SVG - * specification that a generated SVG file will conform to. - * - * Since: 1.2 - **/ -typedef enum _cairo_svg_version { - CAIRO_SVG_VERSION_1_1, - CAIRO_SVG_VERSION_1_2 -} cairo_svg_version_t; - -cairo_public cairo_surface_t * -cairo_svg_surface_create (const char *filename, - double width_in_points, - double height_in_points); - -cairo_public cairo_surface_t * -cairo_svg_surface_create_for_stream (cairo_write_func_t write_func, - void *closure, - double width_in_points, - double height_in_points); - -cairo_public void -cairo_svg_surface_restrict_to_version (cairo_surface_t *surface, - cairo_svg_version_t version); - -cairo_public void -cairo_svg_get_versions (cairo_svg_version_t const **versions, - int *num_versions); - -cairo_public const char * -cairo_svg_version_to_string (cairo_svg_version_t version); - -CAIRO_END_DECLS - -#else /* CAIRO_HAS_SVG_SURFACE */ -# error Cairo was not compiled with support for the svg backend -#endif /* CAIRO_HAS_SVG_SURFACE */ - -#endif /* CAIRO_SVG_H */ diff --git a/io2d/src/win32/include/cairo-version.h b/io2d/src/win32/include/cairo-version.h deleted file mode 100644 index 107df30..0000000 --- a/io2d/src/win32/include/cairo-version.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef CAIRO_VERSION_H -#define CAIRO_VERSION_H - -#define CAIRO_VERSION_MAJOR 1 -#define CAIRO_VERSION_MINOR 12 -#define CAIRO_VERSION_MICRO 16 - -#endif diff --git a/io2d/src/win32/include/cairo-win32.h b/io2d/src/win32/include/cairo-win32.h deleted file mode 100644 index 3d2e1c6..0000000 --- a/io2d/src/win32/include/cairo-win32.h +++ /dev/null @@ -1,112 +0,0 @@ -/* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2005 Red Hat, Inc - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is Red Hat, Inc. - * - * Contributor(s): - * Owen Taylor - */ - -#ifndef _CAIRO_WIN32_H_ -#define _CAIRO_WIN32_H_ - -#include "cairo.h" - -#if CAIRO_HAS_WIN32_SURFACE - -#include - -CAIRO_BEGIN_DECLS - -cairo_public cairo_surface_t * -cairo_win32_surface_create (HDC hdc); - -cairo_public cairo_surface_t * -cairo_win32_printing_surface_create (HDC hdc); - -cairo_public cairo_surface_t * -cairo_win32_surface_create_with_ddb (HDC hdc, - cairo_format_t format, - int width, - int height); - -cairo_public cairo_surface_t * -cairo_win32_surface_create_with_dib (cairo_format_t format, - int width, - int height); - -cairo_public HDC -cairo_win32_surface_get_dc (cairo_surface_t *surface); - -cairo_public cairo_surface_t * -cairo_win32_surface_get_image (cairo_surface_t *surface); - -#if CAIRO_HAS_WIN32_FONT - -/* - * Win32 font support - */ - -cairo_public cairo_font_face_t * -cairo_win32_font_face_create_for_logfontw (LOGFONTW *logfont); - -cairo_public cairo_font_face_t * -cairo_win32_font_face_create_for_hfont (HFONT font); - -cairo_public cairo_font_face_t * -cairo_win32_font_face_create_for_logfontw_hfont (LOGFONTW *logfont, HFONT font); - -cairo_public cairo_status_t -cairo_win32_scaled_font_select_font (cairo_scaled_font_t *scaled_font, - HDC hdc); - -cairo_public void -cairo_win32_scaled_font_done_font (cairo_scaled_font_t *scaled_font); - -cairo_public double -cairo_win32_scaled_font_get_metrics_factor (cairo_scaled_font_t *scaled_font); - -cairo_public void -cairo_win32_scaled_font_get_logical_to_device (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *logical_to_device); - -cairo_public void -cairo_win32_scaled_font_get_device_to_logical (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *device_to_logical); - -#endif /* CAIRO_HAS_WIN32_FONT */ - -CAIRO_END_DECLS - -#else /* CAIRO_HAS_WIN32_SURFACE */ -# error Cairo was not compiled with support for the win32 backend -#endif /* CAIRO_HAS_WIN32_SURFACE */ - -#endif /* _CAIRO_WIN32_H_ */ diff --git a/io2d/src/win32/include/cairo.h b/io2d/src/win32/include/cairo.h deleted file mode 100644 index a2f5aa3..0000000 --- a/io2d/src/win32/include/cairo.h +++ /dev/null @@ -1,3117 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth - */ - -#ifndef CAIRO_H -#define CAIRO_H - -#include "cairo-version.h" -#include "cairo-features.h" -#include "cairo-deprecated.h" - -#ifdef __cplusplus -# define CAIRO_BEGIN_DECLS extern "C" { -# define CAIRO_END_DECLS } -#else -# define CAIRO_BEGIN_DECLS -# define CAIRO_END_DECLS -#endif - -#ifndef cairo_public -# if defined (_MSC_VER) && ! defined (CAIRO_WIN32_STATIC_BUILD) -# define cairo_public __declspec(dllimport) -# else -# define cairo_public -# endif -#endif - -CAIRO_BEGIN_DECLS - -#define CAIRO_VERSION_ENCODE(major, minor, micro) ( \ - ((major) * 10000) \ - + ((minor) * 100) \ - + ((micro) * 1)) - -#define CAIRO_VERSION CAIRO_VERSION_ENCODE( \ - CAIRO_VERSION_MAJOR, \ - CAIRO_VERSION_MINOR, \ - CAIRO_VERSION_MICRO) - - -#define CAIRO_VERSION_STRINGIZE_(major, minor, micro) \ - #major"."#minor"."#micro -#define CAIRO_VERSION_STRINGIZE(major, minor, micro) \ - CAIRO_VERSION_STRINGIZE_(major, minor, micro) - -#define CAIRO_VERSION_STRING CAIRO_VERSION_STRINGIZE( \ - CAIRO_VERSION_MAJOR, \ - CAIRO_VERSION_MINOR, \ - CAIRO_VERSION_MICRO) - - -cairo_public int -cairo_version (void); - -cairo_public const char* -cairo_version_string (void); - -/** - * cairo_bool_t: - * - * #cairo_bool_t is used for boolean values. Returns of type - * #cairo_bool_t will always be either 0 or 1, but testing against - * these values explicitly is not encouraged; just use the - * value as a boolean condition. - * - * - * if (cairo_in_stroke (cr, x, y)) { - * /* do something */ - * } - * - * - * Since: 1.0 - **/ -typedef int cairo_bool_t; - -/** - * cairo_t: - * - * A #cairo_t contains the current state of the rendering device, - * including coordinates of yet to be drawn shapes. - * - * Cairo contexts, as #cairo_t objects are named, are central to - * cairo and all drawing with cairo is always done to a #cairo_t - * object. - * - * Memory management of #cairo_t is done with - * cairo_reference() and cairo_destroy(). - * - * Since: 1.0 - **/ -typedef struct _cairo cairo_t; - -/** - * cairo_surface_t: - * - * A #cairo_surface_t represents an image, either as the destination - * of a drawing operation or as source when drawing onto another - * surface. To draw to a #cairo_surface_t, create a cairo context - * with the surface as the target, using cairo_create(). - * - * There are different subtypes of #cairo_surface_t for - * different drawing backends; for example, cairo_image_surface_create() - * creates a bitmap image in memory. - * The type of a surface can be queried with cairo_surface_get_type(). - * - * The initial contents of a surface after creation depend upon the manner - * of its creation. If cairo creates the surface and backing storage for - * the user, it will be initially cleared; for example, - * cairo_image_surface_create() and cairo_surface_create_similar(). - * Alternatively, if the user passes in a reference to some backing storage - * and asks cairo to wrap that in a #cairo_surface_t, then the contents are - * not modified; for example, cairo_image_surface_create_for_data() and - * cairo_xlib_surface_create(). - * - * Memory management of #cairo_surface_t is done with - * cairo_surface_reference() and cairo_surface_destroy(). - * - * Since: 1.0 - **/ -typedef struct _cairo_surface cairo_surface_t; - -/** - * cairo_device_t: - * - * A #cairo_device_t represents the driver interface for drawing - * operations to a #cairo_surface_t. There are different subtypes of - * #cairo_device_t for different drawing backends; for example, - * cairo_egl_device_create() creates a device that wraps an EGL display and - * context. - * - * The type of a device can be queried with cairo_device_get_type(). - * - * Memory management of #cairo_device_t is done with - * cairo_device_reference() and cairo_device_destroy(). - * - * Since: 1.10 - **/ -typedef struct _cairo_device cairo_device_t; - -/** - * cairo_matrix_t: - * @xx: xx component of the affine transformation - * @yx: yx component of the affine transformation - * @xy: xy component of the affine transformation - * @yy: yy component of the affine transformation - * @x0: X translation component of the affine transformation - * @y0: Y translation component of the affine transformation - * - * A #cairo_matrix_t holds an affine transformation, such as a scale, - * rotation, shear, or a combination of those. The transformation of - * a point (x, y) is given by: - * - * x_new = xx * x + xy * y + x0; - * y_new = yx * x + yy * y + y0; - * - * - * Since: 1.0 - **/ -typedef struct _cairo_matrix { - double xx; double yx; - double xy; double yy; - double x0; double y0; -} cairo_matrix_t; - -/** - * cairo_pattern_t: - * - * A #cairo_pattern_t represents a source when drawing onto a - * surface. There are different subtypes of #cairo_pattern_t, - * for different types of sources; for example, - * cairo_pattern_create_rgb() creates a pattern for a solid - * opaque color. - * - * Other than various - * cairo_pattern_create_type() - * functions, some of the pattern types can be implicitly created using various - * cairo_set_source_type() functions; - * for example cairo_set_source_rgb(). - * - * The type of a pattern can be queried with cairo_pattern_get_type(). - * - * Memory management of #cairo_pattern_t is done with - * cairo_pattern_reference() and cairo_pattern_destroy(). - * - * Since: 1.0 - **/ -typedef struct _cairo_pattern cairo_pattern_t; - -/** - * cairo_destroy_func_t: - * @data: The data element being destroyed. - * - * #cairo_destroy_func_t the type of function which is called when a - * data element is destroyed. It is passed the pointer to the data - * element and should free any memory and resources allocated for it. - * - * Since: 1.0 - **/ -typedef void (*cairo_destroy_func_t) (void *data); - -/** - * cairo_user_data_key_t: - * @unused: not used; ignore. - * - * #cairo_user_data_key_t is used for attaching user data to cairo - * data structures. The actual contents of the struct is never used, - * and there is no need to initialize the object; only the unique - * address of a #cairo_data_key_t object is used. Typically, you - * would just use the address of a static #cairo_data_key_t object. - * - * Since: 1.0 - **/ -typedef struct _cairo_user_data_key { - int unused; -} cairo_user_data_key_t; - -/** - * cairo_status_t: - * @CAIRO_STATUS_SUCCESS: no error has occurred (Since 1.0) - * @CAIRO_STATUS_NO_MEMORY: out of memory (Since 1.0) - * @CAIRO_STATUS_INVALID_RESTORE: cairo_restore() called without matching cairo_save() (Since 1.0) - * @CAIRO_STATUS_INVALID_POP_GROUP: no saved group to pop, i.e. cairo_pop_group() without matching cairo_push_group() (Since 1.0) - * @CAIRO_STATUS_NO_CURRENT_POINT: no current point defined (Since 1.0) - * @CAIRO_STATUS_INVALID_MATRIX: invalid matrix (not invertible) (Since 1.0) - * @CAIRO_STATUS_INVALID_STATUS: invalid value for an input #cairo_status_t (Since 1.0) - * @CAIRO_STATUS_NULL_POINTER: %NULL pointer (Since 1.0) - * @CAIRO_STATUS_INVALID_STRING: input string not valid UTF-8 (Since 1.0) - * @CAIRO_STATUS_INVALID_PATH_DATA: input path data not valid (Since 1.0) - * @CAIRO_STATUS_READ_ERROR: error while reading from input stream (Since 1.0) - * @CAIRO_STATUS_WRITE_ERROR: error while writing to output stream (Since 1.0) - * @CAIRO_STATUS_SURFACE_FINISHED: target surface has been finished (Since 1.0) - * @CAIRO_STATUS_SURFACE_TYPE_MISMATCH: the surface type is not appropriate for the operation (Since 1.0) - * @CAIRO_STATUS_PATTERN_TYPE_MISMATCH: the pattern type is not appropriate for the operation (Since 1.0) - * @CAIRO_STATUS_INVALID_CONTENT: invalid value for an input #cairo_content_t (Since 1.0) - * @CAIRO_STATUS_INVALID_FORMAT: invalid value for an input #cairo_format_t (Since 1.0) - * @CAIRO_STATUS_INVALID_VISUAL: invalid value for an input Visual* (Since 1.0) - * @CAIRO_STATUS_FILE_NOT_FOUND: file not found (Since 1.0) - * @CAIRO_STATUS_INVALID_DASH: invalid value for a dash setting (Since 1.0) - * @CAIRO_STATUS_INVALID_DSC_COMMENT: invalid value for a DSC comment (Since 1.2) - * @CAIRO_STATUS_INVALID_INDEX: invalid index passed to getter (Since 1.4) - * @CAIRO_STATUS_CLIP_NOT_REPRESENTABLE: clip region not representable in desired format (Since 1.4) - * @CAIRO_STATUS_TEMP_FILE_ERROR: error creating or writing to a temporary file (Since 1.6) - * @CAIRO_STATUS_INVALID_STRIDE: invalid value for stride (Since 1.6) - * @CAIRO_STATUS_FONT_TYPE_MISMATCH: the font type is not appropriate for the operation (Since 1.8) - * @CAIRO_STATUS_USER_FONT_IMMUTABLE: the user-font is immutable (Since 1.8) - * @CAIRO_STATUS_USER_FONT_ERROR: error occurred in a user-font callback function (Since 1.8) - * @CAIRO_STATUS_NEGATIVE_COUNT: negative number used where it is not allowed (Since 1.8) - * @CAIRO_STATUS_INVALID_CLUSTERS: input clusters do not represent the accompanying text and glyph array (Since 1.8) - * @CAIRO_STATUS_INVALID_SLANT: invalid value for an input #cairo_font_slant_t (Since 1.8) - * @CAIRO_STATUS_INVALID_WEIGHT: invalid value for an input #cairo_font_weight_t (Since 1.8) - * @CAIRO_STATUS_INVALID_SIZE: invalid value (typically too big) for the size of the input (surface, pattern, etc.) (Since 1.10) - * @CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED: user-font method not implemented (Since 1.10) - * @CAIRO_STATUS_DEVICE_TYPE_MISMATCH: the device type is not appropriate for the operation (Since 1.10) - * @CAIRO_STATUS_DEVICE_ERROR: an operation to the device caused an unspecified error (Since 1.10) - * @CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: a mesh pattern - * construction operation was used outside of a - * cairo_mesh_pattern_begin_patch()/cairo_mesh_pattern_end_patch() - * pair (Since 1.12) - * @CAIRO_STATUS_DEVICE_FINISHED: target device has been finished (Since 1.12) - * @CAIRO_STATUS_LAST_STATUS: this is a special value indicating the number of - * status values defined in this enumeration. When using this value, note - * that the version of cairo at run-time may have additional status values - * defined than the value of this symbol at compile-time. (Since 1.10) - * - * #cairo_status_t is used to indicate errors that can occur when - * using Cairo. In some cases it is returned directly by functions. - * but when using #cairo_t, the last error, if any, is stored in - * the context and can be retrieved with cairo_status(). - * - * New entries may be added in future versions. Use cairo_status_to_string() - * to get a human-readable representation of an error message. - * - * Since: 1.0 - **/ -typedef enum _cairo_status { - CAIRO_STATUS_SUCCESS = 0, - - CAIRO_STATUS_NO_MEMORY, - CAIRO_STATUS_INVALID_RESTORE, - CAIRO_STATUS_INVALID_POP_GROUP, - CAIRO_STATUS_NO_CURRENT_POINT, - CAIRO_STATUS_INVALID_MATRIX, - CAIRO_STATUS_INVALID_STATUS, - CAIRO_STATUS_NULL_POINTER, - CAIRO_STATUS_INVALID_STRING, - CAIRO_STATUS_INVALID_PATH_DATA, - CAIRO_STATUS_READ_ERROR, - CAIRO_STATUS_WRITE_ERROR, - CAIRO_STATUS_SURFACE_FINISHED, - CAIRO_STATUS_SURFACE_TYPE_MISMATCH, - CAIRO_STATUS_PATTERN_TYPE_MISMATCH, - CAIRO_STATUS_INVALID_CONTENT, - CAIRO_STATUS_INVALID_FORMAT, - CAIRO_STATUS_INVALID_VISUAL, - CAIRO_STATUS_FILE_NOT_FOUND, - CAIRO_STATUS_INVALID_DASH, - CAIRO_STATUS_INVALID_DSC_COMMENT, - CAIRO_STATUS_INVALID_INDEX, - CAIRO_STATUS_CLIP_NOT_REPRESENTABLE, - CAIRO_STATUS_TEMP_FILE_ERROR, - CAIRO_STATUS_INVALID_STRIDE, - CAIRO_STATUS_FONT_TYPE_MISMATCH, - CAIRO_STATUS_USER_FONT_IMMUTABLE, - CAIRO_STATUS_USER_FONT_ERROR, - CAIRO_STATUS_NEGATIVE_COUNT, - CAIRO_STATUS_INVALID_CLUSTERS, - CAIRO_STATUS_INVALID_SLANT, - CAIRO_STATUS_INVALID_WEIGHT, - CAIRO_STATUS_INVALID_SIZE, - CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, - CAIRO_STATUS_DEVICE_TYPE_MISMATCH, - CAIRO_STATUS_DEVICE_ERROR, - CAIRO_STATUS_INVALID_MESH_CONSTRUCTION, - CAIRO_STATUS_DEVICE_FINISHED, - - CAIRO_STATUS_LAST_STATUS -} cairo_status_t; - -/** - * cairo_content_t: - * @CAIRO_CONTENT_COLOR: The surface will hold color content only. (Since 1.0) - * @CAIRO_CONTENT_ALPHA: The surface will hold alpha content only. (Since 1.0) - * @CAIRO_CONTENT_COLOR_ALPHA: The surface will hold color and alpha content. (Since 1.0) - * - * #cairo_content_t is used to describe the content that a surface will - * contain, whether color information, alpha information (translucence - * vs. opacity), or both. - * - * Note: The large values here are designed to keep #cairo_content_t - * values distinct from #cairo_format_t values so that the - * implementation can detect the error if users confuse the two types. - * - * Since: 1.0 - **/ -typedef enum _cairo_content { - CAIRO_CONTENT_COLOR = 0x1000, - CAIRO_CONTENT_ALPHA = 0x2000, - CAIRO_CONTENT_COLOR_ALPHA = 0x3000 -} cairo_content_t; - -/** - * cairo_format_t: - * @CAIRO_FORMAT_INVALID: no such format exists or is supported. - * @CAIRO_FORMAT_ARGB32: each pixel is a 32-bit quantity, with - * alpha in the upper 8 bits, then red, then green, then blue. - * The 32-bit quantities are stored native-endian. Pre-multiplied - * alpha is used. (That is, 50% transparent red is 0x80800000, - * not 0x80ff0000.) (Since 1.0) - * @CAIRO_FORMAT_RGB24: each pixel is a 32-bit quantity, with - * the upper 8 bits unused. Red, Green, and Blue are stored - * in the remaining 24 bits in that order. (Since 1.0) - * @CAIRO_FORMAT_A8: each pixel is a 8-bit quantity holding - * an alpha value. (Since 1.0) - * @CAIRO_FORMAT_A1: each pixel is a 1-bit quantity holding - * an alpha value. Pixels are packed together into 32-bit - * quantities. The ordering of the bits matches the - * endianess of the platform. On a big-endian machine, the - * first pixel is in the uppermost bit, on a little-endian - * machine the first pixel is in the least-significant bit. (Since 1.0) - * @CAIRO_FORMAT_RGB16_565: each pixel is a 16-bit quantity - * with red in the upper 5 bits, then green in the middle - * 6 bits, and blue in the lower 5 bits. (Since 1.2) - * @CAIRO_FORMAT_RGB30: like RGB24 but with 10bpc. (Since 1.12) - * - * #cairo_format_t is used to identify the memory format of - * image data. - * - * New entries may be added in future versions. - * - * Since: 1.0 - **/ -typedef enum _cairo_format { - CAIRO_FORMAT_INVALID = -1, - CAIRO_FORMAT_ARGB32 = 0, - CAIRO_FORMAT_RGB24 = 1, - CAIRO_FORMAT_A8 = 2, - CAIRO_FORMAT_A1 = 3, - CAIRO_FORMAT_RGB16_565 = 4, - CAIRO_FORMAT_RGB30 = 5 -} cairo_format_t; - - -/** - * cairo_write_func_t: - * @closure: the output closure - * @data: the buffer containing the data to write - * @length: the amount of data to write - * - * #cairo_write_func_t is the type of function which is called when a - * backend needs to write data to an output stream. It is passed the - * closure which was specified by the user at the time the write - * function was registered, the data to write and the length of the - * data in bytes. The write function should return - * %CAIRO_STATUS_SUCCESS if all the data was successfully written, - * %CAIRO_STATUS_WRITE_ERROR otherwise. - * - * Returns: the status code of the write operation - * - * Since: 1.0 - **/ -typedef cairo_status_t (*cairo_write_func_t) (void *closure, - const unsigned char *data, - unsigned int length); - -/** - * cairo_read_func_t: - * @closure: the input closure - * @data: the buffer into which to read the data - * @length: the amount of data to read - * - * #cairo_read_func_t is the type of function which is called when a - * backend needs to read data from an input stream. It is passed the - * closure which was specified by the user at the time the read - * function was registered, the buffer to read the data into and the - * length of the data in bytes. The read function should return - * %CAIRO_STATUS_SUCCESS if all the data was successfully read, - * %CAIRO_STATUS_READ_ERROR otherwise. - * - * Returns: the status code of the read operation - * - * Since: 1.0 - **/ -typedef cairo_status_t (*cairo_read_func_t) (void *closure, - unsigned char *data, - unsigned int length); - -/** - * cairo_rectangle_int_t: - * @x: X coordinate of the left side of the rectangle - * @y: Y coordinate of the the top side of the rectangle - * @width: width of the rectangle - * @height: height of the rectangle - * - * A data structure for holding a rectangle with integer coordinates. - * - * Since: 1.10 - **/ - -typedef struct _cairo_rectangle_int { - int x, y; - int width, height; -} cairo_rectangle_int_t; - - -/* Functions for manipulating state objects */ -cairo_public cairo_t * -cairo_create (cairo_surface_t *target); - -cairo_public cairo_t * -cairo_reference (cairo_t *cr); - -cairo_public void -cairo_destroy (cairo_t *cr); - -cairo_public unsigned int -cairo_get_reference_count (cairo_t *cr); - -cairo_public void * -cairo_get_user_data (cairo_t *cr, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_set_user_data (cairo_t *cr, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -cairo_public void -cairo_save (cairo_t *cr); - -cairo_public void -cairo_restore (cairo_t *cr); - -cairo_public void -cairo_push_group (cairo_t *cr); - -cairo_public void -cairo_push_group_with_content (cairo_t *cr, cairo_content_t content); - -cairo_public cairo_pattern_t * -cairo_pop_group (cairo_t *cr); - -cairo_public void -cairo_pop_group_to_source (cairo_t *cr); - -/* Modify state */ - -/** - * cairo_operator_t: - * @CAIRO_OPERATOR_CLEAR: clear destination layer (bounded) (Since 1.0) - * @CAIRO_OPERATOR_SOURCE: replace destination layer (bounded) (Since 1.0) - * @CAIRO_OPERATOR_OVER: draw source layer on top of destination layer - * (bounded) (Since 1.0) - * @CAIRO_OPERATOR_IN: draw source where there was destination content - * (unbounded) (Since 1.0) - * @CAIRO_OPERATOR_OUT: draw source where there was no destination - * content (unbounded) (Since 1.0) - * @CAIRO_OPERATOR_ATOP: draw source on top of destination content and - * only there (Since 1.0) - * @CAIRO_OPERATOR_DEST: ignore the source (Since 1.0) - * @CAIRO_OPERATOR_DEST_OVER: draw destination on top of source (Since 1.0) - * @CAIRO_OPERATOR_DEST_IN: leave destination only where there was - * source content (unbounded) (Since 1.0) - * @CAIRO_OPERATOR_DEST_OUT: leave destination only where there was no - * source content (Since 1.0) - * @CAIRO_OPERATOR_DEST_ATOP: leave destination on top of source content - * and only there (unbounded) (Since 1.0) - * @CAIRO_OPERATOR_XOR: source and destination are shown where there is only - * one of them (Since 1.0) - * @CAIRO_OPERATOR_ADD: source and destination layers are accumulated (Since 1.0) - * @CAIRO_OPERATOR_SATURATE: like over, but assuming source and dest are - * disjoint geometries (Since 1.0) - * @CAIRO_OPERATOR_MULTIPLY: source and destination layers are multiplied. - * This causes the result to be at least as dark as the darker inputs. (Since 1.10) - * @CAIRO_OPERATOR_SCREEN: source and destination are complemented and - * multiplied. This causes the result to be at least as light as the lighter - * inputs. (Since 1.10) - * @CAIRO_OPERATOR_OVERLAY: multiplies or screens, depending on the - * lightness of the destination color. (Since 1.10) - * @CAIRO_OPERATOR_DARKEN: replaces the destination with the source if it - * is darker, otherwise keeps the source. (Since 1.10) - * @CAIRO_OPERATOR_LIGHTEN: replaces the destination with the source if it - * is lighter, otherwise keeps the source. (Since 1.10) - * @CAIRO_OPERATOR_COLOR_DODGE: brightens the destination color to reflect - * the source color. (Since 1.10) - * @CAIRO_OPERATOR_COLOR_BURN: darkens the destination color to reflect - * the source color. (Since 1.10) - * @CAIRO_OPERATOR_HARD_LIGHT: Multiplies or screens, dependent on source - * color. (Since 1.10) - * @CAIRO_OPERATOR_SOFT_LIGHT: Darkens or lightens, dependent on source - * color. (Since 1.10) - * @CAIRO_OPERATOR_DIFFERENCE: Takes the difference of the source and - * destination color. (Since 1.10) - * @CAIRO_OPERATOR_EXCLUSION: Produces an effect similar to difference, but - * with lower contrast. (Since 1.10) - * @CAIRO_OPERATOR_HSL_HUE: Creates a color with the hue of the source - * and the saturation and luminosity of the target. (Since 1.10) - * @CAIRO_OPERATOR_HSL_SATURATION: Creates a color with the saturation - * of the source and the hue and luminosity of the target. Painting with - * this mode onto a gray area produces no change. (Since 1.10) - * @CAIRO_OPERATOR_HSL_COLOR: Creates a color with the hue and saturation - * of the source and the luminosity of the target. This preserves the gray - * levels of the target and is useful for coloring monochrome images or - * tinting color images. (Since 1.10) - * @CAIRO_OPERATOR_HSL_LUMINOSITY: Creates a color with the luminosity of - * the source and the hue and saturation of the target. This produces an - * inverse effect to @CAIRO_OPERATOR_HSL_COLOR. (Since 1.10) - * - * #cairo_operator_t is used to set the compositing operator for all cairo - * drawing operations. - * - * The default operator is %CAIRO_OPERATOR_OVER. - * - * The operators marked as unbounded modify their - * destination even outside of the mask layer (that is, their effect is not - * bound by the mask layer). However, their effect can still be limited by - * way of clipping. - * - * To keep things simple, the operator descriptions here - * document the behavior for when both source and destination are either fully - * transparent or fully opaque. The actual implementation works for - * translucent layers too. - * For a more detailed explanation of the effects of each operator, including - * the mathematical definitions, see - * http://cairographics.org/operators/. - * - * Since: 1.0 - **/ -typedef enum _cairo_operator { - CAIRO_OPERATOR_CLEAR, - - CAIRO_OPERATOR_SOURCE, - CAIRO_OPERATOR_OVER, - CAIRO_OPERATOR_IN, - CAIRO_OPERATOR_OUT, - CAIRO_OPERATOR_ATOP, - - CAIRO_OPERATOR_DEST, - CAIRO_OPERATOR_DEST_OVER, - CAIRO_OPERATOR_DEST_IN, - CAIRO_OPERATOR_DEST_OUT, - CAIRO_OPERATOR_DEST_ATOP, - - CAIRO_OPERATOR_XOR, - CAIRO_OPERATOR_ADD, - CAIRO_OPERATOR_SATURATE, - - CAIRO_OPERATOR_MULTIPLY, - CAIRO_OPERATOR_SCREEN, - CAIRO_OPERATOR_OVERLAY, - CAIRO_OPERATOR_DARKEN, - CAIRO_OPERATOR_LIGHTEN, - CAIRO_OPERATOR_COLOR_DODGE, - CAIRO_OPERATOR_COLOR_BURN, - CAIRO_OPERATOR_HARD_LIGHT, - CAIRO_OPERATOR_SOFT_LIGHT, - CAIRO_OPERATOR_DIFFERENCE, - CAIRO_OPERATOR_EXCLUSION, - CAIRO_OPERATOR_HSL_HUE, - CAIRO_OPERATOR_HSL_SATURATION, - CAIRO_OPERATOR_HSL_COLOR, - CAIRO_OPERATOR_HSL_LUMINOSITY -} cairo_operator_t; - -cairo_public void -cairo_set_operator (cairo_t *cr, cairo_operator_t op); - -cairo_public void -cairo_set_source (cairo_t *cr, cairo_pattern_t *source); - -cairo_public void -cairo_set_source_rgb (cairo_t *cr, double red, double green, double blue); - -cairo_public void -cairo_set_source_rgba (cairo_t *cr, - double red, double green, double blue, - double alpha); - -cairo_public void -cairo_set_source_surface (cairo_t *cr, - cairo_surface_t *surface, - double x, - double y); - -cairo_public void -cairo_set_tolerance (cairo_t *cr, double tolerance); - -/** - * cairo_antialias_t: - * @CAIRO_ANTIALIAS_DEFAULT: Use the default antialiasing for - * the subsystem and target device, since 1.0 - * @CAIRO_ANTIALIAS_NONE: Use a bilevel alpha mask, since 1.0 - * @CAIRO_ANTIALIAS_GRAY: Perform single-color antialiasing (using - * shades of gray for black text on a white background, for example), since 1.0 - * @CAIRO_ANTIALIAS_SUBPIXEL: Perform antialiasing by taking - * advantage of the order of subpixel elements on devices - * such as LCD panels, since 1.0 - * @CAIRO_ANTIALIAS_FAST: Hint that the backend should perform some - * antialiasing but prefer speed over quality, since 1.12 - * @CAIRO_ANTIALIAS_GOOD: The backend should balance quality against - * performance, since 1.12 - * @CAIRO_ANTIALIAS_BEST: Hint that the backend should render at the highest - * quality, sacrificing speed if necessary, since 1.12 - * - * Specifies the type of antialiasing to do when rendering text or shapes. - * - * As it is not necessarily clear from the above what advantages a particular - * antialias method provides, since 1.12, there is also a set of hints: - * @CAIRO_ANTIALIAS_FAST: Allow the backend to degrade raster quality for speed - * @CAIRO_ANTIALIAS_GOOD: A balance between speed and quality - * @CAIRO_ANTIALIAS_BEST: A high-fidelity, but potentially slow, raster mode - * - * These make no guarantee on how the backend will perform its rasterisation - * (if it even rasterises!), nor that they have any differing effect other - * than to enable some form of antialiasing. In the case of glyph rendering, - * @CAIRO_ANTIALIAS_FAST and @CAIRO_ANTIALIAS_GOOD will be mapped to - * @CAIRO_ANTIALIAS_GRAY, with @CAIRO_ANTALIAS_BEST being equivalent to - * @CAIRO_ANTIALIAS_SUBPIXEL. - * - * The interpretation of @CAIRO_ANTIALIAS_DEFAULT is left entirely up to - * the backend, typically this will be similar to @CAIRO_ANTIALIAS_GOOD. - * - * Since: 1.0 - **/ -typedef enum _cairo_antialias { - CAIRO_ANTIALIAS_DEFAULT, - - /* method */ - CAIRO_ANTIALIAS_NONE, - CAIRO_ANTIALIAS_GRAY, - CAIRO_ANTIALIAS_SUBPIXEL, - - /* hints */ - CAIRO_ANTIALIAS_FAST, - CAIRO_ANTIALIAS_GOOD, - CAIRO_ANTIALIAS_BEST -} cairo_antialias_t; - -cairo_public void -cairo_set_antialias (cairo_t *cr, cairo_antialias_t antialias); - -/** - * cairo_fill_rule_t: - * @CAIRO_FILL_RULE_WINDING: If the path crosses the ray from - * left-to-right, counts +1. If the path crosses the ray - * from right to left, counts -1. (Left and right are determined - * from the perspective of looking along the ray from the starting - * point.) If the total count is non-zero, the point will be filled. (Since 1.0) - * @CAIRO_FILL_RULE_EVEN_ODD: Counts the total number of - * intersections, without regard to the orientation of the contour. If - * the total number of intersections is odd, the point will be - * filled. (Since 1.0) - * - * #cairo_fill_rule_t is used to select how paths are filled. For both - * fill rules, whether or not a point is included in the fill is - * determined by taking a ray from that point to infinity and looking - * at intersections with the path. The ray can be in any direction, - * as long as it doesn't pass through the end point of a segment - * or have a tricky intersection such as intersecting tangent to the path. - * (Note that filling is not actually implemented in this way. This - * is just a description of the rule that is applied.) - * - * The default fill rule is %CAIRO_FILL_RULE_WINDING. - * - * New entries may be added in future versions. - * - * Since: 1.0 - **/ -typedef enum _cairo_fill_rule { - CAIRO_FILL_RULE_WINDING, - CAIRO_FILL_RULE_EVEN_ODD -} cairo_fill_rule_t; - -cairo_public void -cairo_set_fill_rule (cairo_t *cr, cairo_fill_rule_t fill_rule); - -cairo_public void -cairo_set_line_width (cairo_t *cr, double width); - -/** - * cairo_line_cap_t: - * @CAIRO_LINE_CAP_BUTT: start(stop) the line exactly at the start(end) point (Since 1.0) - * @CAIRO_LINE_CAP_ROUND: use a round ending, the center of the circle is the end point (Since 1.0) - * @CAIRO_LINE_CAP_SQUARE: use squared ending, the center of the square is the end point (Since 1.0) - * - * Specifies how to render the endpoints of the path when stroking. - * - * The default line cap style is %CAIRO_LINE_CAP_BUTT. - * - * Since: 1.0 - **/ -typedef enum _cairo_line_cap { - CAIRO_LINE_CAP_BUTT, - CAIRO_LINE_CAP_ROUND, - CAIRO_LINE_CAP_SQUARE -} cairo_line_cap_t; - -cairo_public void -cairo_set_line_cap (cairo_t *cr, cairo_line_cap_t line_cap); - -/** - * cairo_line_join_t: - * @CAIRO_LINE_JOIN_MITER: use a sharp (angled) corner, see - * cairo_set_miter_limit() (Since 1.0) - * @CAIRO_LINE_JOIN_ROUND: use a rounded join, the center of the circle is the - * joint point (Since 1.0) - * @CAIRO_LINE_JOIN_BEVEL: use a cut-off join, the join is cut off at half - * the line width from the joint point (Since 1.0) - * - * Specifies how to render the junction of two lines when stroking. - * - * The default line join style is %CAIRO_LINE_JOIN_MITER. - * - * Since: 1.0 - **/ -typedef enum _cairo_line_join { - CAIRO_LINE_JOIN_MITER, - CAIRO_LINE_JOIN_ROUND, - CAIRO_LINE_JOIN_BEVEL -} cairo_line_join_t; - -cairo_public void -cairo_set_line_join (cairo_t *cr, cairo_line_join_t line_join); - -cairo_public void -cairo_set_dash (cairo_t *cr, - const double *dashes, - int num_dashes, - double offset); - -cairo_public void -cairo_set_miter_limit (cairo_t *cr, double limit); - -cairo_public void -cairo_translate (cairo_t *cr, double tx, double ty); - -cairo_public void -cairo_scale (cairo_t *cr, double sx, double sy); - -cairo_public void -cairo_rotate (cairo_t *cr, double angle); - -cairo_public void -cairo_transform (cairo_t *cr, - const cairo_matrix_t *matrix); - -cairo_public void -cairo_set_matrix (cairo_t *cr, - const cairo_matrix_t *matrix); - -cairo_public void -cairo_identity_matrix (cairo_t *cr); - -cairo_public void -cairo_user_to_device (cairo_t *cr, double *x, double *y); - -cairo_public void -cairo_user_to_device_distance (cairo_t *cr, double *dx, double *dy); - -cairo_public void -cairo_device_to_user (cairo_t *cr, double *x, double *y); - -cairo_public void -cairo_device_to_user_distance (cairo_t *cr, double *dx, double *dy); - -/* Path creation functions */ -cairo_public void -cairo_new_path (cairo_t *cr); - -cairo_public void -cairo_move_to (cairo_t *cr, double x, double y); - -cairo_public void -cairo_new_sub_path (cairo_t *cr); - -cairo_public void -cairo_line_to (cairo_t *cr, double x, double y); - -cairo_public void -cairo_curve_to (cairo_t *cr, - double x1, double y1, - double x2, double y2, - double x3, double y3); - -cairo_public void -cairo_arc (cairo_t *cr, - double xc, double yc, - double radius, - double angle1, double angle2); - -cairo_public void -cairo_arc_negative (cairo_t *cr, - double xc, double yc, - double radius, - double angle1, double angle2); - -/* XXX: NYI -cairo_public void -cairo_arc_to (cairo_t *cr, - double x1, double y1, - double x2, double y2, - double radius); -*/ - -cairo_public void -cairo_rel_move_to (cairo_t *cr, double dx, double dy); - -cairo_public void -cairo_rel_line_to (cairo_t *cr, double dx, double dy); - -cairo_public void -cairo_rel_curve_to (cairo_t *cr, - double dx1, double dy1, - double dx2, double dy2, - double dx3, double dy3); - -cairo_public void -cairo_rectangle (cairo_t *cr, - double x, double y, - double width, double height); - -/* XXX: NYI -cairo_public void -cairo_stroke_to_path (cairo_t *cr); -*/ - -cairo_public void -cairo_close_path (cairo_t *cr); - -cairo_public void -cairo_path_extents (cairo_t *cr, - double *x1, double *y1, - double *x2, double *y2); - -/* Painting functions */ -cairo_public void -cairo_paint (cairo_t *cr); - -cairo_public void -cairo_paint_with_alpha (cairo_t *cr, - double alpha); - -cairo_public void -cairo_mask (cairo_t *cr, - cairo_pattern_t *pattern); - -cairo_public void -cairo_mask_surface (cairo_t *cr, - cairo_surface_t *surface, - double surface_x, - double surface_y); - -cairo_public void -cairo_stroke (cairo_t *cr); - -cairo_public void -cairo_stroke_preserve (cairo_t *cr); - -cairo_public void -cairo_fill (cairo_t *cr); - -cairo_public void -cairo_fill_preserve (cairo_t *cr); - -cairo_public void -cairo_copy_page (cairo_t *cr); - -cairo_public void -cairo_show_page (cairo_t *cr); - -/* Insideness testing */ -cairo_public cairo_bool_t -cairo_in_stroke (cairo_t *cr, double x, double y); - -cairo_public cairo_bool_t -cairo_in_fill (cairo_t *cr, double x, double y); - -cairo_public cairo_bool_t -cairo_in_clip (cairo_t *cr, double x, double y); - -/* Rectangular extents */ -cairo_public void -cairo_stroke_extents (cairo_t *cr, - double *x1, double *y1, - double *x2, double *y2); - -cairo_public void -cairo_fill_extents (cairo_t *cr, - double *x1, double *y1, - double *x2, double *y2); - -/* Clipping */ -cairo_public void -cairo_reset_clip (cairo_t *cr); - -cairo_public void -cairo_clip (cairo_t *cr); - -cairo_public void -cairo_clip_preserve (cairo_t *cr); - -cairo_public void -cairo_clip_extents (cairo_t *cr, - double *x1, double *y1, - double *x2, double *y2); - -/** - * cairo_rectangle_t: - * @x: X coordinate of the left side of the rectangle - * @y: Y coordinate of the the top side of the rectangle - * @width: width of the rectangle - * @height: height of the rectangle - * - * A data structure for holding a rectangle. - * - * Since: 1.4 - **/ -typedef struct _cairo_rectangle { - double x, y, width, height; -} cairo_rectangle_t; - -/** - * cairo_rectangle_list_t: - * @status: Error status of the rectangle list - * @rectangles: Array containing the rectangles - * @num_rectangles: Number of rectangles in this list - * - * A data structure for holding a dynamically allocated - * array of rectangles. - * - * Since: 1.4 - **/ -typedef struct _cairo_rectangle_list { - cairo_status_t status; - cairo_rectangle_t *rectangles; - int num_rectangles; -} cairo_rectangle_list_t; - -cairo_public cairo_rectangle_list_t * -cairo_copy_clip_rectangle_list (cairo_t *cr); - -cairo_public void -cairo_rectangle_list_destroy (cairo_rectangle_list_t *rectangle_list); - -/* Font/Text functions */ - -/** - * cairo_scaled_font_t: - * - * A #cairo_scaled_font_t is a font scaled to a particular size and device - * resolution. A #cairo_scaled_font_t is most useful for low-level font - * usage where a library or application wants to cache a reference - * to a scaled font to speed up the computation of metrics. - * - * There are various types of scaled fonts, depending on the - * font backend they use. The type of a - * scaled font can be queried using cairo_scaled_font_get_type(). - * - * Memory management of #cairo_scaled_font_t is done with - * cairo_scaled_font_reference() and cairo_scaled_font_destroy(). - * - * Since: 1.0 - **/ -typedef struct _cairo_scaled_font cairo_scaled_font_t; - -/** - * cairo_font_face_t: - * - * A #cairo_font_face_t specifies all aspects of a font other - * than the size or font matrix (a font matrix is used to distort - * a font by sheering it or scaling it unequally in the two - * directions) . A font face can be set on a #cairo_t by using - * cairo_set_font_face(); the size and font matrix are set with - * cairo_set_font_size() and cairo_set_font_matrix(). - * - * There are various types of font faces, depending on the - * font backend they use. The type of a - * font face can be queried using cairo_font_face_get_type(). - * - * Memory management of #cairo_font_face_t is done with - * cairo_font_face_reference() and cairo_font_face_destroy(). - * - * Since: 1.0 - **/ -typedef struct _cairo_font_face cairo_font_face_t; - -/** - * cairo_glyph_t: - * @index: glyph index in the font. The exact interpretation of the - * glyph index depends on the font technology being used. - * @x: the offset in the X direction between the origin used for - * drawing or measuring the string and the origin of this glyph. - * @y: the offset in the Y direction between the origin used for - * drawing or measuring the string and the origin of this glyph. - * - * The #cairo_glyph_t structure holds information about a single glyph - * when drawing or measuring text. A font is (in simple terms) a - * collection of shapes used to draw text. A glyph is one of these - * shapes. There can be multiple glyphs for a single character - * (alternates to be used in different contexts, for example), or a - * glyph can be a ligature of multiple - * characters. Cairo doesn't expose any way of converting input text - * into glyphs, so in order to use the Cairo interfaces that take - * arrays of glyphs, you must directly access the appropriate - * underlying font system. - * - * Note that the offsets given by @x and @y are not cumulative. When - * drawing or measuring text, each glyph is individually positioned - * with respect to the overall origin - * - * Since: 1.0 - **/ -typedef struct { - unsigned long index; - double x; - double y; -} cairo_glyph_t; - -cairo_public cairo_glyph_t * -cairo_glyph_allocate (int num_glyphs); - -cairo_public void -cairo_glyph_free (cairo_glyph_t *glyphs); - -/** - * cairo_text_cluster_t: - * @num_bytes: the number of bytes of UTF-8 text covered by cluster - * @num_glyphs: the number of glyphs covered by cluster - * - * The #cairo_text_cluster_t structure holds information about a single - * text cluster. A text cluster is a minimal - * mapping of some glyphs corresponding to some UTF-8 text. - * - * For a cluster to be valid, both @num_bytes and @num_glyphs should - * be non-negative, and at least one should be non-zero. - * Note that clusters with zero glyphs are not as well supported as - * normal clusters. For example, PDF rendering applications typically - * ignore those clusters when PDF text is being selected. - * - * See cairo_show_text_glyphs() for how clusters are used in advanced - * text operations. - * - * Since: 1.8 - **/ -typedef struct { - int num_bytes; - int num_glyphs; -} cairo_text_cluster_t; - -cairo_public cairo_text_cluster_t * -cairo_text_cluster_allocate (int num_clusters); - -cairo_public void -cairo_text_cluster_free (cairo_text_cluster_t *clusters); - -/** - * cairo_text_cluster_flags_t: - * @CAIRO_TEXT_CLUSTER_FLAG_BACKWARD: The clusters in the cluster array - * map to glyphs in the glyph array from end to start. (Since 1.8) - * - * Specifies properties of a text cluster mapping. - * - * Since: 1.8 - **/ -typedef enum _cairo_text_cluster_flags { - CAIRO_TEXT_CLUSTER_FLAG_BACKWARD = 0x00000001 -} cairo_text_cluster_flags_t; - -/** - * cairo_text_extents_t: - * @x_bearing: the horizontal distance from the origin to the - * leftmost part of the glyphs as drawn. Positive if the - * glyphs lie entirely to the right of the origin. - * @y_bearing: the vertical distance from the origin to the - * topmost part of the glyphs as drawn. Positive only if the - * glyphs lie completely below the origin; will usually be - * negative. - * @width: width of the glyphs as drawn - * @height: height of the glyphs as drawn - * @x_advance:distance to advance in the X direction - * after drawing these glyphs - * @y_advance: distance to advance in the Y direction - * after drawing these glyphs. Will typically be zero except - * for vertical text layout as found in East-Asian languages. - * - * The #cairo_text_extents_t structure stores the extents of a single - * glyph or a string of glyphs in user-space coordinates. Because text - * extents are in user-space coordinates, they are mostly, but not - * entirely, independent of the current transformation matrix. If you call - * cairo_scale(cr, 2.0, 2.0), text will - * be drawn twice as big, but the reported text extents will not be - * doubled. They will change slightly due to hinting (so you can't - * assume that metrics are independent of the transformation matrix), - * but otherwise will remain unchanged. - * - * Since: 1.0 - **/ -typedef struct { - double x_bearing; - double y_bearing; - double width; - double height; - double x_advance; - double y_advance; -} cairo_text_extents_t; - -/** - * cairo_font_extents_t: - * @ascent: the distance that the font extends above the baseline. - * Note that this is not always exactly equal to the maximum - * of the extents of all the glyphs in the font, but rather - * is picked to express the font designer's intent as to - * how the font should align with elements above it. - * @descent: the distance that the font extends below the baseline. - * This value is positive for typical fonts that include - * portions below the baseline. Note that this is not always - * exactly equal to the maximum of the extents of all the - * glyphs in the font, but rather is picked to express the - * font designer's intent as to how the font should - * align with elements below it. - * @height: the recommended vertical distance between baselines when - * setting consecutive lines of text with the font. This - * is greater than @ascent+@descent by a - * quantity known as the line spacing - * or external leading. When space - * is at a premium, most fonts can be set with only - * a distance of @ascent+@descent between lines. - * @max_x_advance: the maximum distance in the X direction that - * the origin is advanced for any glyph in the font. - * @max_y_advance: the maximum distance in the Y direction that - * the origin is advanced for any glyph in the font. - * This will be zero for normal fonts used for horizontal - * writing. (The scripts of East Asia are sometimes written - * vertically.) - * - * The #cairo_font_extents_t structure stores metric information for - * a font. Values are given in the current user-space coordinate - * system. - * - * Because font metrics are in user-space coordinates, they are - * mostly, but not entirely, independent of the current transformation - * matrix. If you call cairo_scale(cr, 2.0, 2.0), - * text will be drawn twice as big, but the reported text extents will - * not be doubled. They will change slightly due to hinting (so you - * can't assume that metrics are independent of the transformation - * matrix), but otherwise will remain unchanged. - * - * Since: 1.0 - **/ -typedef struct { - double ascent; - double descent; - double height; - double max_x_advance; - double max_y_advance; -} cairo_font_extents_t; - -/** - * cairo_font_slant_t: - * @CAIRO_FONT_SLANT_NORMAL: Upright font style, since 1.0 - * @CAIRO_FONT_SLANT_ITALIC: Italic font style, since 1.0 - * @CAIRO_FONT_SLANT_OBLIQUE: Oblique font style, since 1.0 - * - * Specifies variants of a font face based on their slant. - * - * Since: 1.0 - **/ -typedef enum _cairo_font_slant { - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_SLANT_ITALIC, - CAIRO_FONT_SLANT_OBLIQUE -} cairo_font_slant_t; - -/** - * cairo_font_weight_t: - * @CAIRO_FONT_WEIGHT_NORMAL: Normal font weight, since 1.0 - * @CAIRO_FONT_WEIGHT_BOLD: Bold font weight, since 1.0 - * - * Specifies variants of a font face based on their weight. - * - * Since: 1.0 - **/ -typedef enum _cairo_font_weight { - CAIRO_FONT_WEIGHT_NORMAL, - CAIRO_FONT_WEIGHT_BOLD -} cairo_font_weight_t; - -/** - * cairo_subpixel_order_t: - * @CAIRO_SUBPIXEL_ORDER_DEFAULT: Use the default subpixel order for - * for the target device, since 1.0 - * @CAIRO_SUBPIXEL_ORDER_RGB: Subpixel elements are arranged horizontally - * with red at the left, since 1.0 - * @CAIRO_SUBPIXEL_ORDER_BGR: Subpixel elements are arranged horizontally - * with blue at the left, since 1.0 - * @CAIRO_SUBPIXEL_ORDER_VRGB: Subpixel elements are arranged vertically - * with red at the top, since 1.0 - * @CAIRO_SUBPIXEL_ORDER_VBGR: Subpixel elements are arranged vertically - * with blue at the top, since 1.0 - * - * The subpixel order specifies the order of color elements within - * each pixel on the display device when rendering with an - * antialiasing mode of %CAIRO_ANTIALIAS_SUBPIXEL. - * - * Since: 1.0 - **/ -typedef enum _cairo_subpixel_order { - CAIRO_SUBPIXEL_ORDER_DEFAULT, - CAIRO_SUBPIXEL_ORDER_RGB, - CAIRO_SUBPIXEL_ORDER_BGR, - CAIRO_SUBPIXEL_ORDER_VRGB, - CAIRO_SUBPIXEL_ORDER_VBGR -} cairo_subpixel_order_t; - -/** - * cairo_hint_style_t: - * @CAIRO_HINT_STYLE_DEFAULT: Use the default hint style for - * font backend and target device, since 1.0 - * @CAIRO_HINT_STYLE_NONE: Do not hint outlines, since 1.0 - * @CAIRO_HINT_STYLE_SLIGHT: Hint outlines slightly to improve - * contrast while retaining good fidelity to the original - * shapes, since 1.0 - * @CAIRO_HINT_STYLE_MEDIUM: Hint outlines with medium strength - * giving a compromise between fidelity to the original shapes - * and contrast, since 1.0 - * @CAIRO_HINT_STYLE_FULL: Hint outlines to maximize contrast, since 1.0 - * - * Specifies the type of hinting to do on font outlines. Hinting - * is the process of fitting outlines to the pixel grid in order - * to improve the appearance of the result. Since hinting outlines - * involves distorting them, it also reduces the faithfulness - * to the original outline shapes. Not all of the outline hinting - * styles are supported by all font backends. - * - * New entries may be added in future versions. - * - * Since: 1.0 - **/ -typedef enum _cairo_hint_style { - CAIRO_HINT_STYLE_DEFAULT, - CAIRO_HINT_STYLE_NONE, - CAIRO_HINT_STYLE_SLIGHT, - CAIRO_HINT_STYLE_MEDIUM, - CAIRO_HINT_STYLE_FULL -} cairo_hint_style_t; - -/** - * cairo_hint_metrics_t: - * @CAIRO_HINT_METRICS_DEFAULT: Hint metrics in the default - * manner for the font backend and target device, since 1.0 - * @CAIRO_HINT_METRICS_OFF: Do not hint font metrics, since 1.0 - * @CAIRO_HINT_METRICS_ON: Hint font metrics, since 1.0 - * - * Specifies whether to hint font metrics; hinting font metrics - * means quantizing them so that they are integer values in - * device space. Doing this improves the consistency of - * letter and line spacing, however it also means that text - * will be laid out differently at different zoom factors. - * - * Since: 1.0 - **/ -typedef enum _cairo_hint_metrics { - CAIRO_HINT_METRICS_DEFAULT, - CAIRO_HINT_METRICS_OFF, - CAIRO_HINT_METRICS_ON -} cairo_hint_metrics_t; - -/** - * cairo_font_options_t: - * - * An opaque structure holding all options that are used when - * rendering fonts. - * - * Individual features of a #cairo_font_options_t can be set or - * accessed using functions named - * cairo_font_options_set_feature_name() and - * cairo_font_options_get_feature_name(), like - * cairo_font_options_set_antialias() and - * cairo_font_options_get_antialias(). - * - * New features may be added to a #cairo_font_options_t in the - * future. For this reason, cairo_font_options_copy(), - * cairo_font_options_equal(), cairo_font_options_merge(), and - * cairo_font_options_hash() should be used to copy, check - * for equality, merge, or compute a hash value of - * #cairo_font_options_t objects. - * - * Since: 1.0 - **/ -typedef struct _cairo_font_options cairo_font_options_t; - -cairo_public cairo_font_options_t * -cairo_font_options_create (void); - -cairo_public cairo_font_options_t * -cairo_font_options_copy (const cairo_font_options_t *original); - -cairo_public void -cairo_font_options_destroy (cairo_font_options_t *options); - -cairo_public cairo_status_t -cairo_font_options_status (cairo_font_options_t *options); - -cairo_public void -cairo_font_options_merge (cairo_font_options_t *options, - const cairo_font_options_t *other); -cairo_public cairo_bool_t -cairo_font_options_equal (const cairo_font_options_t *options, - const cairo_font_options_t *other); - -cairo_public unsigned long -cairo_font_options_hash (const cairo_font_options_t *options); - -cairo_public void -cairo_font_options_set_antialias (cairo_font_options_t *options, - cairo_antialias_t antialias); -cairo_public cairo_antialias_t -cairo_font_options_get_antialias (const cairo_font_options_t *options); - -cairo_public void -cairo_font_options_set_subpixel_order (cairo_font_options_t *options, - cairo_subpixel_order_t subpixel_order); -cairo_public cairo_subpixel_order_t -cairo_font_options_get_subpixel_order (const cairo_font_options_t *options); - -cairo_public void -cairo_font_options_set_hint_style (cairo_font_options_t *options, - cairo_hint_style_t hint_style); -cairo_public cairo_hint_style_t -cairo_font_options_get_hint_style (const cairo_font_options_t *options); - -cairo_public void -cairo_font_options_set_hint_metrics (cairo_font_options_t *options, - cairo_hint_metrics_t hint_metrics); -cairo_public cairo_hint_metrics_t -cairo_font_options_get_hint_metrics (const cairo_font_options_t *options); - -/* This interface is for dealing with text as text, not caring about the - font object inside the the cairo_t. */ - -cairo_public void -cairo_select_font_face (cairo_t *cr, - const char *family, - cairo_font_slant_t slant, - cairo_font_weight_t weight); - -cairo_public void -cairo_set_font_size (cairo_t *cr, double size); - -cairo_public void -cairo_set_font_matrix (cairo_t *cr, - const cairo_matrix_t *matrix); - -cairo_public void -cairo_get_font_matrix (cairo_t *cr, - cairo_matrix_t *matrix); - -cairo_public void -cairo_set_font_options (cairo_t *cr, - const cairo_font_options_t *options); - -cairo_public void -cairo_get_font_options (cairo_t *cr, - cairo_font_options_t *options); - -cairo_public void -cairo_set_font_face (cairo_t *cr, cairo_font_face_t *font_face); - -cairo_public cairo_font_face_t * -cairo_get_font_face (cairo_t *cr); - -cairo_public void -cairo_set_scaled_font (cairo_t *cr, - const cairo_scaled_font_t *scaled_font); - -cairo_public cairo_scaled_font_t * -cairo_get_scaled_font (cairo_t *cr); - -cairo_public void -cairo_show_text (cairo_t *cr, const char *utf8); - -cairo_public void -cairo_show_glyphs (cairo_t *cr, const cairo_glyph_t *glyphs, int num_glyphs); - -cairo_public void -cairo_show_text_glyphs (cairo_t *cr, - const char *utf8, - int utf8_len, - const cairo_glyph_t *glyphs, - int num_glyphs, - const cairo_text_cluster_t *clusters, - int num_clusters, - cairo_text_cluster_flags_t cluster_flags); - -cairo_public void -cairo_text_path (cairo_t *cr, const char *utf8); - -cairo_public void -cairo_glyph_path (cairo_t *cr, const cairo_glyph_t *glyphs, int num_glyphs); - -cairo_public void -cairo_text_extents (cairo_t *cr, - const char *utf8, - cairo_text_extents_t *extents); - -cairo_public void -cairo_glyph_extents (cairo_t *cr, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_text_extents_t *extents); - -cairo_public void -cairo_font_extents (cairo_t *cr, - cairo_font_extents_t *extents); - -/* Generic identifier for a font style */ - -cairo_public cairo_font_face_t * -cairo_font_face_reference (cairo_font_face_t *font_face); - -cairo_public void -cairo_font_face_destroy (cairo_font_face_t *font_face); - -cairo_public unsigned int -cairo_font_face_get_reference_count (cairo_font_face_t *font_face); - -cairo_public cairo_status_t -cairo_font_face_status (cairo_font_face_t *font_face); - - -/** - * cairo_font_type_t: - * @CAIRO_FONT_TYPE_TOY: The font was created using cairo's toy font api (Since: 1.2) - * @CAIRO_FONT_TYPE_FT: The font is of type FreeType (Since: 1.2) - * @CAIRO_FONT_TYPE_WIN32: The font is of type Win32 (Since: 1.2) - * @CAIRO_FONT_TYPE_QUARTZ: The font is of type Quartz (Since: 1.6, in 1.2 and - * 1.4 it was named CAIRO_FONT_TYPE_ATSUI) - * @CAIRO_FONT_TYPE_USER: The font was create using cairo's user font api (Since: 1.8) - * - * #cairo_font_type_t is used to describe the type of a given font - * face or scaled font. The font types are also known as "font - * backends" within cairo. - * - * The type of a font face is determined by the function used to - * create it, which will generally be of the form - * cairo_type_font_face_create(). - * The font face type can be queried with cairo_font_face_get_type() - * - * The various #cairo_font_face_t functions can be used with a font face - * of any type. - * - * The type of a scaled font is determined by the type of the font - * face passed to cairo_scaled_font_create(). The scaled font type can - * be queried with cairo_scaled_font_get_type() - * - * The various #cairo_scaled_font_t functions can be used with scaled - * fonts of any type, but some font backends also provide - * type-specific functions that must only be called with a scaled font - * of the appropriate type. These functions have names that begin with - * cairo_type_scaled_font() - * such as cairo_ft_scaled_font_lock_face(). - * - * The behavior of calling a type-specific function with a scaled font - * of the wrong type is undefined. - * - * New entries may be added in future versions. - * - * Since: 1.2 - **/ -typedef enum _cairo_font_type { - CAIRO_FONT_TYPE_TOY, - CAIRO_FONT_TYPE_FT, - CAIRO_FONT_TYPE_WIN32, - CAIRO_FONT_TYPE_QUARTZ, - CAIRO_FONT_TYPE_USER -} cairo_font_type_t; - -cairo_public cairo_font_type_t -cairo_font_face_get_type (cairo_font_face_t *font_face); - -cairo_public void * -cairo_font_face_get_user_data (cairo_font_face_t *font_face, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_font_face_set_user_data (cairo_font_face_t *font_face, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -/* Portable interface to general font features. */ - -cairo_public cairo_scaled_font_t * -cairo_scaled_font_create (cairo_font_face_t *font_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options); - -cairo_public cairo_scaled_font_t * -cairo_scaled_font_reference (cairo_scaled_font_t *scaled_font); - -cairo_public void -cairo_scaled_font_destroy (cairo_scaled_font_t *scaled_font); - -cairo_public unsigned int -cairo_scaled_font_get_reference_count (cairo_scaled_font_t *scaled_font); - -cairo_public cairo_status_t -cairo_scaled_font_status (cairo_scaled_font_t *scaled_font); - -cairo_public cairo_font_type_t -cairo_scaled_font_get_type (cairo_scaled_font_t *scaled_font); - -cairo_public void * -cairo_scaled_font_get_user_data (cairo_scaled_font_t *scaled_font, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_scaled_font_set_user_data (cairo_scaled_font_t *scaled_font, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -cairo_public void -cairo_scaled_font_extents (cairo_scaled_font_t *scaled_font, - cairo_font_extents_t *extents); - -cairo_public void -cairo_scaled_font_text_extents (cairo_scaled_font_t *scaled_font, - const char *utf8, - cairo_text_extents_t *extents); - -cairo_public void -cairo_scaled_font_glyph_extents (cairo_scaled_font_t *scaled_font, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_text_extents_t *extents); - -cairo_public cairo_status_t -cairo_scaled_font_text_to_glyphs (cairo_scaled_font_t *scaled_font, - double x, - double y, - const char *utf8, - int utf8_len, - cairo_glyph_t **glyphs, - int *num_glyphs, - cairo_text_cluster_t **clusters, - int *num_clusters, - cairo_text_cluster_flags_t *cluster_flags); - -cairo_public cairo_font_face_t * -cairo_scaled_font_get_font_face (cairo_scaled_font_t *scaled_font); - -cairo_public void -cairo_scaled_font_get_font_matrix (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *font_matrix); - -cairo_public void -cairo_scaled_font_get_ctm (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *ctm); - -cairo_public void -cairo_scaled_font_get_scale_matrix (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *scale_matrix); - -cairo_public void -cairo_scaled_font_get_font_options (cairo_scaled_font_t *scaled_font, - cairo_font_options_t *options); - - -/* Toy fonts */ - -cairo_public cairo_font_face_t * -cairo_toy_font_face_create (const char *family, - cairo_font_slant_t slant, - cairo_font_weight_t weight); - -cairo_public const char * -cairo_toy_font_face_get_family (cairo_font_face_t *font_face); - -cairo_public cairo_font_slant_t -cairo_toy_font_face_get_slant (cairo_font_face_t *font_face); - -cairo_public cairo_font_weight_t -cairo_toy_font_face_get_weight (cairo_font_face_t *font_face); - - -/* User fonts */ - -cairo_public cairo_font_face_t * -cairo_user_font_face_create (void); - -/* User-font method signatures */ - -/** - * cairo_user_scaled_font_init_func_t: - * @scaled_font: the scaled-font being created - * @cr: a cairo context, in font space - * @extents: font extents to fill in, in font space - * - * #cairo_user_scaled_font_init_func_t is the type of function which is - * called when a scaled-font needs to be created for a user font-face. - * - * The cairo context @cr is not used by the caller, but is prepared in font - * space, similar to what the cairo contexts passed to the render_glyph - * method will look like. The callback can use this context for extents - * computation for example. After the callback is called, @cr is checked - * for any error status. - * - * The @extents argument is where the user font sets the font extents for - * @scaled_font. It is in font space, which means that for most cases its - * ascent and descent members should add to 1.0. @extents is preset to - * hold a value of 1.0 for ascent, height, and max_x_advance, and 0.0 for - * descent and max_y_advance members. - * - * The callback is optional. If not set, default font extents as described - * in the previous paragraph will be used. - * - * Note that @scaled_font is not fully initialized at this - * point and trying to use it for text operations in the callback will result - * in deadlock. - * - * Returns: %CAIRO_STATUS_SUCCESS upon success, or an error status on error. - * - * Since: 1.8 - **/ -typedef cairo_status_t (*cairo_user_scaled_font_init_func_t) (cairo_scaled_font_t *scaled_font, - cairo_t *cr, - cairo_font_extents_t *extents); - -/** - * cairo_user_scaled_font_render_glyph_func_t: - * @scaled_font: user scaled-font - * @glyph: glyph code to render - * @cr: cairo context to draw to, in font space - * @extents: glyph extents to fill in, in font space - * - * #cairo_user_scaled_font_render_glyph_func_t is the type of function which - * is called when a user scaled-font needs to render a glyph. - * - * The callback is mandatory, and expected to draw the glyph with code @glyph to - * the cairo context @cr. @cr is prepared such that the glyph drawing is done in - * font space. That is, the matrix set on @cr is the scale matrix of @scaled_font, - * The @extents argument is where the user font sets the font extents for - * @scaled_font. However, if user prefers to draw in user space, they can - * achieve that by changing the matrix on @cr. All cairo rendering operations - * to @cr are permitted, however, the result is undefined if any source other - * than the default source on @cr is used. That means, glyph bitmaps should - * be rendered using cairo_mask() instead of cairo_paint(). - * - * Other non-default settings on @cr include a font size of 1.0 (given that - * it is set up to be in font space), and font options corresponding to - * @scaled_font. - * - * The @extents argument is preset to have x_bearing, - * width, and y_advance of zero, - * y_bearing set to -font_extents.ascent, - * height to font_extents.ascent+font_extents.descent, - * and x_advance to font_extents.max_x_advance. - * The only field user needs to set in majority of cases is - * x_advance. - * If the width field is zero upon the callback returning - * (which is its preset value), the glyph extents are automatically computed - * based on the drawings done to @cr. This is in most cases exactly what the - * desired behavior is. However, if for any reason the callback sets the - * extents, it must be ink extents, and include the extents of all drawing - * done to @cr in the callback. - * - * Returns: %CAIRO_STATUS_SUCCESS upon success, or - * %CAIRO_STATUS_USER_FONT_ERROR or any other error status on error. - * - * Since: 1.8 - **/ -typedef cairo_status_t (*cairo_user_scaled_font_render_glyph_func_t) (cairo_scaled_font_t *scaled_font, - unsigned long glyph, - cairo_t *cr, - cairo_text_extents_t *extents); - -/** - * cairo_user_scaled_font_text_to_glyphs_func_t: - * @scaled_font: the scaled-font being created - * @utf8: a string of text encoded in UTF-8 - * @utf8_len: length of @utf8 in bytes - * @glyphs: pointer to array of glyphs to fill, in font space - * @num_glyphs: pointer to number of glyphs - * @clusters: pointer to array of cluster mapping information to fill, or %NULL - * @num_clusters: pointer to number of clusters - * @cluster_flags: pointer to location to store cluster flags corresponding to the - * output @clusters - * - * #cairo_user_scaled_font_text_to_glyphs_func_t is the type of function which - * is called to convert input text to an array of glyphs. This is used by the - * cairo_show_text() operation. - * - * Using this callback the user-font has full control on glyphs and their - * positions. That means, it allows for features like ligatures and kerning, - * as well as complex shaping required for scripts like - * Arabic and Indic. - * - * The @num_glyphs argument is preset to the number of glyph entries available - * in the @glyphs buffer. If the @glyphs buffer is %NULL, the value of - * @num_glyphs will be zero. If the provided glyph array is too short for - * the conversion (or for convenience), a new glyph array may be allocated - * using cairo_glyph_allocate() and placed in @glyphs. Upon return, - * @num_glyphs should contain the number of generated glyphs. If the value - * @glyphs points at has changed after the call, the caller will free the - * allocated glyph array using cairo_glyph_free(). The caller will also free - * the original value of @glyphs, so the callback shouldn't do so. - * The callback should populate the glyph indices and positions (in font space) - * assuming that the text is to be shown at the origin. - * - * If @clusters is not %NULL, @num_clusters and @cluster_flags are also - * non-%NULL, and cluster mapping should be computed. The semantics of how - * cluster array allocation works is similar to the glyph array. That is, - * if @clusters initially points to a non-%NULL value, that array may be used - * as a cluster buffer, and @num_clusters points to the number of cluster - * entries available there. If the provided cluster array is too short for - * the conversion (or for convenience), a new cluster array may be allocated - * using cairo_text_cluster_allocate() and placed in @clusters. In this case, - * the original value of @clusters will still be freed by the caller. Upon - * return, @num_clusters should contain the number of generated clusters. - * If the value @clusters points at has changed after the call, the caller - * will free the allocated cluster array using cairo_text_cluster_free(). - * - * The callback is optional. If @num_glyphs is negative upon - * the callback returning or if the return value - * is %CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, the unicode_to_glyph callback - * is tried. See #cairo_user_scaled_font_unicode_to_glyph_func_t. - * - * Note: While cairo does not impose any limitation on glyph indices, - * some applications may assume that a glyph index fits in a 16-bit - * unsigned integer. As such, it is advised that user-fonts keep their - * glyphs in the 0 to 65535 range. Furthermore, some applications may - * assume that glyph 0 is a special glyph-not-found glyph. User-fonts - * are advised to use glyph 0 for such purposes and do not use that - * glyph value for other purposes. - * - * Returns: %CAIRO_STATUS_SUCCESS upon success, - * %CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED if fallback options should be tried, - * or %CAIRO_STATUS_USER_FONT_ERROR or any other error status on error. - * - * Since: 1.8 - **/ -typedef cairo_status_t (*cairo_user_scaled_font_text_to_glyphs_func_t) (cairo_scaled_font_t *scaled_font, - const char *utf8, - int utf8_len, - cairo_glyph_t **glyphs, - int *num_glyphs, - cairo_text_cluster_t **clusters, - int *num_clusters, - cairo_text_cluster_flags_t *cluster_flags); - -/** - * cairo_user_scaled_font_unicode_to_glyph_func_t: - * @scaled_font: the scaled-font being created - * @unicode: input unicode character code-point - * @glyph_index: output glyph index - * - * #cairo_user_scaled_font_unicode_to_glyph_func_t is the type of function which - * is called to convert an input Unicode character to a single glyph. - * This is used by the cairo_show_text() operation. - * - * This callback is used to provide the same functionality as the - * text_to_glyphs callback does (see #cairo_user_scaled_font_text_to_glyphs_func_t) - * but has much less control on the output, - * in exchange for increased ease of use. The inherent assumption to using - * this callback is that each character maps to one glyph, and that the - * mapping is context independent. It also assumes that glyphs are positioned - * according to their advance width. These mean no ligatures, kerning, or - * complex scripts can be implemented using this callback. - * - * The callback is optional, and only used if text_to_glyphs callback is not - * set or fails to return glyphs. If this callback is not set or if it returns - * %CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, an identity mapping from Unicode - * code-points to glyph indices is assumed. - * - * Note: While cairo does not impose any limitation on glyph indices, - * some applications may assume that a glyph index fits in a 16-bit - * unsigned integer. As such, it is advised that user-fonts keep their - * glyphs in the 0 to 65535 range. Furthermore, some applications may - * assume that glyph 0 is a special glyph-not-found glyph. User-fonts - * are advised to use glyph 0 for such purposes and do not use that - * glyph value for other purposes. - * - * Returns: %CAIRO_STATUS_SUCCESS upon success, - * %CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED if fallback options should be tried, - * or %CAIRO_STATUS_USER_FONT_ERROR or any other error status on error. - * - * Since: 1.8 - **/ -typedef cairo_status_t (*cairo_user_scaled_font_unicode_to_glyph_func_t) (cairo_scaled_font_t *scaled_font, - unsigned long unicode, - unsigned long *glyph_index); - -/* User-font method setters */ - -cairo_public void -cairo_user_font_face_set_init_func (cairo_font_face_t *font_face, - cairo_user_scaled_font_init_func_t init_func); - -cairo_public void -cairo_user_font_face_set_render_glyph_func (cairo_font_face_t *font_face, - cairo_user_scaled_font_render_glyph_func_t render_glyph_func); - -cairo_public void -cairo_user_font_face_set_text_to_glyphs_func (cairo_font_face_t *font_face, - cairo_user_scaled_font_text_to_glyphs_func_t text_to_glyphs_func); - -cairo_public void -cairo_user_font_face_set_unicode_to_glyph_func (cairo_font_face_t *font_face, - cairo_user_scaled_font_unicode_to_glyph_func_t unicode_to_glyph_func); - -/* User-font method getters */ - -cairo_public cairo_user_scaled_font_init_func_t -cairo_user_font_face_get_init_func (cairo_font_face_t *font_face); - -cairo_public cairo_user_scaled_font_render_glyph_func_t -cairo_user_font_face_get_render_glyph_func (cairo_font_face_t *font_face); - -cairo_public cairo_user_scaled_font_text_to_glyphs_func_t -cairo_user_font_face_get_text_to_glyphs_func (cairo_font_face_t *font_face); - -cairo_public cairo_user_scaled_font_unicode_to_glyph_func_t -cairo_user_font_face_get_unicode_to_glyph_func (cairo_font_face_t *font_face); - - -/* Query functions */ - -cairo_public cairo_operator_t -cairo_get_operator (cairo_t *cr); - -cairo_public cairo_pattern_t * -cairo_get_source (cairo_t *cr); - -cairo_public double -cairo_get_tolerance (cairo_t *cr); - -cairo_public cairo_antialias_t -cairo_get_antialias (cairo_t *cr); - -cairo_public cairo_bool_t -cairo_has_current_point (cairo_t *cr); - -cairo_public void -cairo_get_current_point (cairo_t *cr, double *x, double *y); - -cairo_public cairo_fill_rule_t -cairo_get_fill_rule (cairo_t *cr); - -cairo_public double -cairo_get_line_width (cairo_t *cr); - -cairo_public cairo_line_cap_t -cairo_get_line_cap (cairo_t *cr); - -cairo_public cairo_line_join_t -cairo_get_line_join (cairo_t *cr); - -cairo_public double -cairo_get_miter_limit (cairo_t *cr); - -cairo_public int -cairo_get_dash_count (cairo_t *cr); - -cairo_public void -cairo_get_dash (cairo_t *cr, double *dashes, double *offset); - -cairo_public void -cairo_get_matrix (cairo_t *cr, cairo_matrix_t *matrix); - -cairo_public cairo_surface_t * -cairo_get_target (cairo_t *cr); - -cairo_public cairo_surface_t * -cairo_get_group_target (cairo_t *cr); - -/** - * cairo_path_data_type_t: - * @CAIRO_PATH_MOVE_TO: A move-to operation, since 1.0 - * @CAIRO_PATH_LINE_TO: A line-to operation, since 1.0 - * @CAIRO_PATH_CURVE_TO: A curve-to operation, since 1.0 - * @CAIRO_PATH_CLOSE_PATH: A close-path operation, since 1.0 - * - * #cairo_path_data_t is used to describe the type of one portion - * of a path when represented as a #cairo_path_t. - * See #cairo_path_data_t for details. - * - * Since: 1.0 - **/ -typedef enum _cairo_path_data_type { - CAIRO_PATH_MOVE_TO, - CAIRO_PATH_LINE_TO, - CAIRO_PATH_CURVE_TO, - CAIRO_PATH_CLOSE_PATH -} cairo_path_data_type_t; - -/** - * cairo_path_data_t: - * - * #cairo_path_data_t is used to represent the path data inside a - * #cairo_path_t. - * - * The data structure is designed to try to balance the demands of - * efficiency and ease-of-use. A path is represented as an array of - * #cairo_path_data_t, which is a union of headers and points. - * - * Each portion of the path is represented by one or more elements in - * the array, (one header followed by 0 or more points). The length - * value of the header is the number of array elements for the current - * portion including the header, (ie. length == 1 + # of points), and - * where the number of points for each element type is as follows: - * - * - * %CAIRO_PATH_MOVE_TO: 1 point - * %CAIRO_PATH_LINE_TO: 1 point - * %CAIRO_PATH_CURVE_TO: 3 points - * %CAIRO_PATH_CLOSE_PATH: 0 points - * - * - * The semantics and ordering of the coordinate values are consistent - * with cairo_move_to(), cairo_line_to(), cairo_curve_to(), and - * cairo_close_path(). - * - * Here is sample code for iterating through a #cairo_path_t: - * - * - * int i; - * cairo_path_t *path; - * cairo_path_data_t *data; - *   - * path = cairo_copy_path (cr); - *   - * for (i=0; i < path->num_data; i += path->data[i].header.length) { - * data = &path->data[i]; - * switch (data->header.type) { - * case CAIRO_PATH_MOVE_TO: - * do_move_to_things (data[1].point.x, data[1].point.y); - * break; - * case CAIRO_PATH_LINE_TO: - * do_line_to_things (data[1].point.x, data[1].point.y); - * break; - * case CAIRO_PATH_CURVE_TO: - * do_curve_to_things (data[1].point.x, data[1].point.y, - * data[2].point.x, data[2].point.y, - * data[3].point.x, data[3].point.y); - * break; - * case CAIRO_PATH_CLOSE_PATH: - * do_close_path_things (); - * break; - * } - * } - * cairo_path_destroy (path); - * - * - * As of cairo 1.4, cairo does not mind if there are more elements in - * a portion of the path than needed. Such elements can be used by - * users of the cairo API to hold extra values in the path data - * structure. For this reason, it is recommended that applications - * always use data->header.length to - * iterate over the path data, instead of hardcoding the number of - * elements for each element type. - * - * Since: 1.0 - **/ -typedef union _cairo_path_data_t cairo_path_data_t; -union _cairo_path_data_t { - struct { - cairo_path_data_type_t type; - int length; - } header; - struct { - double x, y; - } point; -}; - -/** - * cairo_path_t: - * @status: the current error status - * @data: the elements in the path - * @num_data: the number of elements in the data array - * - * A data structure for holding a path. This data structure serves as - * the return value for cairo_copy_path() and - * cairo_copy_path_flat() as well the input value for - * cairo_append_path(). - * - * See #cairo_path_data_t for hints on how to iterate over the - * actual data within the path. - * - * The num_data member gives the number of elements in the data - * array. This number is larger than the number of independent path - * portions (defined in #cairo_path_data_type_t), since the data - * includes both headers and coordinates for each portion. - * - * Since: 1.0 - **/ -typedef struct cairo_path { - cairo_status_t status; - cairo_path_data_t *data; - int num_data; -} cairo_path_t; - -cairo_public cairo_path_t * -cairo_copy_path (cairo_t *cr); - -cairo_public cairo_path_t * -cairo_copy_path_flat (cairo_t *cr); - -cairo_public void -cairo_append_path (cairo_t *cr, - const cairo_path_t *path); - -cairo_public void -cairo_path_destroy (cairo_path_t *path); - -/* Error status queries */ - -cairo_public cairo_status_t -cairo_status (cairo_t *cr); - -cairo_public const char * -cairo_status_to_string (cairo_status_t status); - -/* Backend device manipulation */ - -cairo_public cairo_device_t * -cairo_device_reference (cairo_device_t *device); - -/** - * cairo_device_type_t: - * @CAIRO_DEVICE_TYPE_DRM: The device is of type Direct Render Manager, since 1.10 - * @CAIRO_DEVICE_TYPE_GL: The device is of type OpenGL, since 1.10 - * @CAIRO_DEVICE_TYPE_SCRIPT: The device is of type script, since 1.10 - * @CAIRO_DEVICE_TYPE_XCB: The device is of type xcb, since 1.10 - * @CAIRO_DEVICE_TYPE_XLIB: The device is of type xlib, since 1.10 - * @CAIRO_DEVICE_TYPE_XML: The device is of type XML, since 1.10 - * @CAIRO_DEVICE_TYPE_COGL: The device is of type cogl, since 1.12 - * @CAIRO_DEVICE_TYPE_WIN32: The device is of type win32, since 1.12 - * @CAIRO_DEVICE_TYPE_INVALID: The device is invalid, since 1.10 - * - * #cairo_device_type_t is used to describe the type of a given - * device. The devices types are also known as "backends" within cairo. - * - * The device type can be queried with cairo_device_get_type() - * - * The various #cairo_device_t functions can be used with devices of - * any type, but some backends also provide type-specific functions - * that must only be called with a device of the appropriate - * type. These functions have names that begin with - * cairo_type_device such as - * cairo_xcb_device_debug_cap_xrender_version(). - * - * The behavior of calling a type-specific function with a device of - * the wrong type is undefined. - * - * New entries may be added in future versions. - * - * Since: 1.10 - **/ -typedef enum _cairo_device_type { - CAIRO_DEVICE_TYPE_DRM, - CAIRO_DEVICE_TYPE_GL, - CAIRO_DEVICE_TYPE_SCRIPT, - CAIRO_DEVICE_TYPE_XCB, - CAIRO_DEVICE_TYPE_XLIB, - CAIRO_DEVICE_TYPE_XML, - CAIRO_DEVICE_TYPE_COGL, - CAIRO_DEVICE_TYPE_WIN32, - - CAIRO_DEVICE_TYPE_INVALID = -1 -} cairo_device_type_t; - -cairo_public cairo_device_type_t -cairo_device_get_type (cairo_device_t *device); - -cairo_public cairo_status_t -cairo_device_status (cairo_device_t *device); - -cairo_public cairo_status_t -cairo_device_acquire (cairo_device_t *device); - -cairo_public void -cairo_device_release (cairo_device_t *device); - -cairo_public void -cairo_device_flush (cairo_device_t *device); - -cairo_public void -cairo_device_finish (cairo_device_t *device); - -cairo_public void -cairo_device_destroy (cairo_device_t *device); - -cairo_public unsigned int -cairo_device_get_reference_count (cairo_device_t *device); - -cairo_public void * -cairo_device_get_user_data (cairo_device_t *device, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_device_set_user_data (cairo_device_t *device, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - - -/* Surface manipulation */ - -cairo_public cairo_surface_t * -cairo_surface_create_similar (cairo_surface_t *other, - cairo_content_t content, - int width, - int height); - -cairo_public cairo_surface_t * -cairo_surface_create_similar_image (cairo_surface_t *other, - cairo_format_t format, - int width, - int height); - -cairo_public cairo_surface_t * -cairo_surface_map_to_image (cairo_surface_t *surface, - const cairo_rectangle_int_t *extents); - -cairo_public void -cairo_surface_unmap_image (cairo_surface_t *surface, - cairo_surface_t *image); - -cairo_public cairo_surface_t * -cairo_surface_create_for_rectangle (cairo_surface_t *target, - double x, - double y, - double width, - double height); - -typedef enum { - CAIRO_SURFACE_OBSERVER_NORMAL = 0, - CAIRO_SURFACE_OBSERVER_RECORD_OPERATIONS = 0x1 -} cairo_surface_observer_mode_t; - -cairo_public cairo_surface_t * -cairo_surface_create_observer (cairo_surface_t *target, - cairo_surface_observer_mode_t mode); - -typedef void (*cairo_surface_observer_callback_t) (cairo_surface_t *observer, - cairo_surface_t *target, - void *data); - -cairo_public cairo_status_t -cairo_surface_observer_add_paint_callback (cairo_surface_t *abstract_surface, - cairo_surface_observer_callback_t func, - void *data); - -cairo_public cairo_status_t -cairo_surface_observer_add_mask_callback (cairo_surface_t *abstract_surface, - cairo_surface_observer_callback_t func, - void *data); - -cairo_public cairo_status_t -cairo_surface_observer_add_fill_callback (cairo_surface_t *abstract_surface, - cairo_surface_observer_callback_t func, - void *data); - -cairo_public cairo_status_t -cairo_surface_observer_add_stroke_callback (cairo_surface_t *abstract_surface, - cairo_surface_observer_callback_t func, - void *data); - -cairo_public cairo_status_t -cairo_surface_observer_add_glyphs_callback (cairo_surface_t *abstract_surface, - cairo_surface_observer_callback_t func, - void *data); - -cairo_public cairo_status_t -cairo_surface_observer_add_flush_callback (cairo_surface_t *abstract_surface, - cairo_surface_observer_callback_t func, - void *data); - -cairo_public cairo_status_t -cairo_surface_observer_add_finish_callback (cairo_surface_t *abstract_surface, - cairo_surface_observer_callback_t func, - void *data); - -cairo_public cairo_status_t -cairo_surface_observer_print (cairo_surface_t *surface, - cairo_write_func_t write_func, - void *closure); -cairo_public double -cairo_surface_observer_elapsed (cairo_surface_t *surface); - -cairo_public cairo_status_t -cairo_device_observer_print (cairo_device_t *device, - cairo_write_func_t write_func, - void *closure); - -cairo_public double -cairo_device_observer_elapsed (cairo_device_t *device); - -cairo_public double -cairo_device_observer_paint_elapsed (cairo_device_t *device); - -cairo_public double -cairo_device_observer_mask_elapsed (cairo_device_t *device); - -cairo_public double -cairo_device_observer_fill_elapsed (cairo_device_t *device); - -cairo_public double -cairo_device_observer_stroke_elapsed (cairo_device_t *device); - -cairo_public double -cairo_device_observer_glyphs_elapsed (cairo_device_t *device); - -cairo_public cairo_surface_t * -cairo_surface_reference (cairo_surface_t *surface); - -cairo_public void -cairo_surface_finish (cairo_surface_t *surface); - -cairo_public void -cairo_surface_destroy (cairo_surface_t *surface); - -cairo_public cairo_device_t * -cairo_surface_get_device (cairo_surface_t *surface); - -cairo_public unsigned int -cairo_surface_get_reference_count (cairo_surface_t *surface); - -cairo_public cairo_status_t -cairo_surface_status (cairo_surface_t *surface); - -/** - * cairo_surface_type_t: - * @CAIRO_SURFACE_TYPE_IMAGE: The surface is of type image, since 1.2 - * @CAIRO_SURFACE_TYPE_PDF: The surface is of type pdf, since 1.2 - * @CAIRO_SURFACE_TYPE_PS: The surface is of type ps, since 1.2 - * @CAIRO_SURFACE_TYPE_XLIB: The surface is of type xlib, since 1.2 - * @CAIRO_SURFACE_TYPE_XCB: The surface is of type xcb, since 1.2 - * @CAIRO_SURFACE_TYPE_GLITZ: The surface is of type glitz, since 1.2 - * @CAIRO_SURFACE_TYPE_QUARTZ: The surface is of type quartz, since 1.2 - * @CAIRO_SURFACE_TYPE_WIN32: The surface is of type win32, since 1.2 - * @CAIRO_SURFACE_TYPE_BEOS: The surface is of type beos, since 1.2 - * @CAIRO_SURFACE_TYPE_DIRECTFB: The surface is of type directfb, since 1.2 - * @CAIRO_SURFACE_TYPE_SVG: The surface is of type svg, since 1.2 - * @CAIRO_SURFACE_TYPE_OS2: The surface is of type os2, since 1.4 - * @CAIRO_SURFACE_TYPE_WIN32_PRINTING: The surface is a win32 printing surface, since 1.6 - * @CAIRO_SURFACE_TYPE_QUARTZ_IMAGE: The surface is of type quartz_image, since 1.6 - * @CAIRO_SURFACE_TYPE_SCRIPT: The surface is of type script, since 1.10 - * @CAIRO_SURFACE_TYPE_QT: The surface is of type Qt, since 1.10 - * @CAIRO_SURFACE_TYPE_RECORDING: The surface is of type recording, since 1.10 - * @CAIRO_SURFACE_TYPE_VG: The surface is a OpenVG surface, since 1.10 - * @CAIRO_SURFACE_TYPE_GL: The surface is of type OpenGL, since 1.10 - * @CAIRO_SURFACE_TYPE_DRM: The surface is of type Direct Render Manager, since 1.10 - * @CAIRO_SURFACE_TYPE_TEE: The surface is of type 'tee' (a multiplexing surface), since 1.10 - * @CAIRO_SURFACE_TYPE_XML: The surface is of type XML (for debugging), since 1.10 - * @CAIRO_SURFACE_TYPE_SKIA: The surface is of type Skia, since 1.10 - * @CAIRO_SURFACE_TYPE_SUBSURFACE: The surface is a subsurface created with - * cairo_surface_create_for_rectangle(), since 1.10 - * @CAIRO_SURFACE_TYPE_COGL: This surface is of type Cogl, since 1.12 - * - * #cairo_surface_type_t is used to describe the type of a given - * surface. The surface types are also known as "backends" or "surface - * backends" within cairo. - * - * The type of a surface is determined by the function used to create - * it, which will generally be of the form - * cairo_type_surface_create(), - * (though see cairo_surface_create_similar() as well). - * - * The surface type can be queried with cairo_surface_get_type() - * - * The various #cairo_surface_t functions can be used with surfaces of - * any type, but some backends also provide type-specific functions - * that must only be called with a surface of the appropriate - * type. These functions have names that begin with - * cairo_type_surface such as cairo_image_surface_get_width(). - * - * The behavior of calling a type-specific function with a surface of - * the wrong type is undefined. - * - * New entries may be added in future versions. - * - * Since: 1.2 - **/ -typedef enum _cairo_surface_type { - CAIRO_SURFACE_TYPE_IMAGE, - CAIRO_SURFACE_TYPE_PDF, - CAIRO_SURFACE_TYPE_PS, - CAIRO_SURFACE_TYPE_XLIB, - CAIRO_SURFACE_TYPE_XCB, - CAIRO_SURFACE_TYPE_GLITZ, - CAIRO_SURFACE_TYPE_QUARTZ, - CAIRO_SURFACE_TYPE_WIN32, - CAIRO_SURFACE_TYPE_BEOS, - CAIRO_SURFACE_TYPE_DIRECTFB, - CAIRO_SURFACE_TYPE_SVG, - CAIRO_SURFACE_TYPE_OS2, - CAIRO_SURFACE_TYPE_WIN32_PRINTING, - CAIRO_SURFACE_TYPE_QUARTZ_IMAGE, - CAIRO_SURFACE_TYPE_SCRIPT, - CAIRO_SURFACE_TYPE_QT, - CAIRO_SURFACE_TYPE_RECORDING, - CAIRO_SURFACE_TYPE_VG, - CAIRO_SURFACE_TYPE_GL, - CAIRO_SURFACE_TYPE_DRM, - CAIRO_SURFACE_TYPE_TEE, - CAIRO_SURFACE_TYPE_XML, - CAIRO_SURFACE_TYPE_SKIA, - CAIRO_SURFACE_TYPE_SUBSURFACE, - CAIRO_SURFACE_TYPE_COGL -} cairo_surface_type_t; - -cairo_public cairo_surface_type_t -cairo_surface_get_type (cairo_surface_t *surface); - -cairo_public cairo_content_t -cairo_surface_get_content (cairo_surface_t *surface); - -#if CAIRO_HAS_PNG_FUNCTIONS - -cairo_public cairo_status_t -cairo_surface_write_to_png (cairo_surface_t *surface, - const char *filename); - -cairo_public cairo_status_t -cairo_surface_write_to_png_stream (cairo_surface_t *surface, - cairo_write_func_t write_func, - void *closure); - -#endif - -cairo_public void * -cairo_surface_get_user_data (cairo_surface_t *surface, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_surface_set_user_data (cairo_surface_t *surface, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -#define CAIRO_MIME_TYPE_JPEG "image/jpeg" -#define CAIRO_MIME_TYPE_PNG "image/png" -#define CAIRO_MIME_TYPE_JP2 "image/jp2" -#define CAIRO_MIME_TYPE_URI "text/x-uri" -#define CAIRO_MIME_TYPE_UNIQUE_ID "application/x-cairo.uuid" - -cairo_public void -cairo_surface_get_mime_data (cairo_surface_t *surface, - const char *mime_type, - const unsigned char **data, - unsigned long *length); - -cairo_public cairo_status_t -cairo_surface_set_mime_data (cairo_surface_t *surface, - const char *mime_type, - const unsigned char *data, - unsigned long length, - cairo_destroy_func_t destroy, - void *closure); - -cairo_public cairo_bool_t -cairo_surface_supports_mime_type (cairo_surface_t *surface, - const char *mime_type); - -cairo_public void -cairo_surface_get_font_options (cairo_surface_t *surface, - cairo_font_options_t *options); - -cairo_public void -cairo_surface_flush (cairo_surface_t *surface); - -cairo_public void -cairo_surface_mark_dirty (cairo_surface_t *surface); - -cairo_public void -cairo_surface_mark_dirty_rectangle (cairo_surface_t *surface, - int x, - int y, - int width, - int height); - -cairo_public void -cairo_surface_set_device_offset (cairo_surface_t *surface, - double x_offset, - double y_offset); - -cairo_public void -cairo_surface_get_device_offset (cairo_surface_t *surface, - double *x_offset, - double *y_offset); - -cairo_public void -cairo_surface_set_fallback_resolution (cairo_surface_t *surface, - double x_pixels_per_inch, - double y_pixels_per_inch); - -cairo_public void -cairo_surface_get_fallback_resolution (cairo_surface_t *surface, - double *x_pixels_per_inch, - double *y_pixels_per_inch); - -cairo_public void -cairo_surface_copy_page (cairo_surface_t *surface); - -cairo_public void -cairo_surface_show_page (cairo_surface_t *surface); - -cairo_public cairo_bool_t -cairo_surface_has_show_text_glyphs (cairo_surface_t *surface); - -/* Image-surface functions */ - -cairo_public cairo_surface_t * -cairo_image_surface_create (cairo_format_t format, - int width, - int height); - -cairo_public int -cairo_format_stride_for_width (cairo_format_t format, - int width); - -cairo_public cairo_surface_t * -cairo_image_surface_create_for_data (unsigned char *data, - cairo_format_t format, - int width, - int height, - int stride); - -cairo_public unsigned char * -cairo_image_surface_get_data (cairo_surface_t *surface); - -cairo_public cairo_format_t -cairo_image_surface_get_format (cairo_surface_t *surface); - -cairo_public int -cairo_image_surface_get_width (cairo_surface_t *surface); - -cairo_public int -cairo_image_surface_get_height (cairo_surface_t *surface); - -cairo_public int -cairo_image_surface_get_stride (cairo_surface_t *surface); - -#if CAIRO_HAS_PNG_FUNCTIONS - -cairo_public cairo_surface_t * -cairo_image_surface_create_from_png (const char *filename); - -cairo_public cairo_surface_t * -cairo_image_surface_create_from_png_stream (cairo_read_func_t read_func, - void *closure); - -#endif - -/* Recording-surface functions */ - -cairo_public cairo_surface_t * -cairo_recording_surface_create (cairo_content_t content, - const cairo_rectangle_t *extents); - -cairo_public void -cairo_recording_surface_ink_extents (cairo_surface_t *surface, - double *x0, - double *y0, - double *width, - double *height); - -cairo_public cairo_bool_t -cairo_recording_surface_get_extents (cairo_surface_t *surface, - cairo_rectangle_t *extents); - -/* raster-source pattern (callback) functions */ - -/** - * cairo_raster_source_acquire_func_t: - * @pattern: the pattern being rendered from - * @callback_data: the user data supplied during creation - * @target: the rendering target surface - * @extents: rectangular region of interest in pixels in sample space - * - * #cairo_raster_source_acquire_func_t is the type of function which is - * called when a pattern is being rendered from. It should create a surface - * that provides the pixel data for the region of interest as defined by - * extents, though the surface itself does not have to be limited to that - * area. For convenience the surface should probably be of image type, - * created with cairo_surface_create_similar_image() for the target (which - * enables the number of copies to be reduced during transfer to the - * device). Another option, might be to return a similar surface to the - * target for explicit handling by the application of a set of cached sources - * on the device. The region of sample data provided should be defined using - * cairo_surface_set_device_offset() to specify the top-left corner of the - * sample data (along with width and height of the surface). - * - * Returns: a #cairo_surface_t - * - * Since: 1.12 - **/ -typedef cairo_surface_t * -(*cairo_raster_source_acquire_func_t) (cairo_pattern_t *pattern, - void *callback_data, - cairo_surface_t *target, - const cairo_rectangle_int_t *extents); - -/** - * cairo_raster_source_release_func_t: - * @pattern: the pattern being rendered from - * @callback_data: the user data supplied during creation - * @surface: the surface created during acquire - * - * #cairo_raster_source_release_func_t is the type of function which is - * called when the pixel data is no longer being access by the pattern - * for the rendering operation. Typically this function will simply - * destroy the surface created during acquire. - * - * Since: 1.12 - **/ -typedef void -(*cairo_raster_source_release_func_t) (cairo_pattern_t *pattern, - void *callback_data, - cairo_surface_t *surface); - -/** - * cairo_raster_source_snapshot_func_t: - * @pattern: the pattern being rendered from - * @callback_data: the user data supplied during creation - * - * #cairo_raster_source_snapshot_func_t is the type of function which is - * called when the pixel data needs to be preserved for later use - * during printing. This pattern will be accessed again later, and it - * is expected to provide the pixel data that was current at the time - * of snapshotting. - * - * Return value: CAIRO_STATUS_SUCCESS on success, or one of the - * #cairo_status_t error codes for failure. - * - * Since: 1.12 - **/ -typedef cairo_status_t -(*cairo_raster_source_snapshot_func_t) (cairo_pattern_t *pattern, - void *callback_data); - -/** - * cairo_raster_source_copy_func_t: - * @pattern: the #cairo_pattern_t that was copied to - * @callback_data: the user data supplied during creation - * @other: the #cairo_pattern_t being used as the source for the copy - * - * #cairo_raster_source_copy_func_t is the type of function which is - * called when the pattern gets copied as a normal part of rendering. - * - * Return value: CAIRO_STATUS_SUCCESS on success, or one of the - * #cairo_status_t error codes for failure. - * - * Since: 1.12 - **/ -typedef cairo_status_t -(*cairo_raster_source_copy_func_t) (cairo_pattern_t *pattern, - void *callback_data, - const cairo_pattern_t *other); - -/** - * cairo_raster_source_finish_func_t: - * @pattern: the pattern being rendered from - * @callback_data: the user data supplied during creation - * - * #cairo_raster_source_finish_func_t is the type of function which is - * called when the pattern (or a copy thereof) is no longer required. - * - * Since: 1.12 - **/ -typedef void -(*cairo_raster_source_finish_func_t) (cairo_pattern_t *pattern, - void *callback_data); - -cairo_public cairo_pattern_t * -cairo_pattern_create_raster_source (void *user_data, - cairo_content_t content, - int width, int height); - -cairo_public void -cairo_raster_source_pattern_set_callback_data (cairo_pattern_t *pattern, - void *data); - -cairo_public void * -cairo_raster_source_pattern_get_callback_data (cairo_pattern_t *pattern); - -cairo_public void -cairo_raster_source_pattern_set_acquire (cairo_pattern_t *pattern, - cairo_raster_source_acquire_func_t acquire, - cairo_raster_source_release_func_t release); - -cairo_public void -cairo_raster_source_pattern_get_acquire (cairo_pattern_t *pattern, - cairo_raster_source_acquire_func_t *acquire, - cairo_raster_source_release_func_t *release); -cairo_public void -cairo_raster_source_pattern_set_snapshot (cairo_pattern_t *pattern, - cairo_raster_source_snapshot_func_t snapshot); - -cairo_public cairo_raster_source_snapshot_func_t -cairo_raster_source_pattern_get_snapshot (cairo_pattern_t *pattern); - -cairo_public void -cairo_raster_source_pattern_set_copy (cairo_pattern_t *pattern, - cairo_raster_source_copy_func_t copy); - -cairo_public cairo_raster_source_copy_func_t -cairo_raster_source_pattern_get_copy (cairo_pattern_t *pattern); - -cairo_public void -cairo_raster_source_pattern_set_finish (cairo_pattern_t *pattern, - cairo_raster_source_finish_func_t finish); - -cairo_public cairo_raster_source_finish_func_t -cairo_raster_source_pattern_get_finish (cairo_pattern_t *pattern); - -/* Pattern creation functions */ - -cairo_public cairo_pattern_t * -cairo_pattern_create_rgb (double red, double green, double blue); - -cairo_public cairo_pattern_t * -cairo_pattern_create_rgba (double red, double green, double blue, - double alpha); - -cairo_public cairo_pattern_t * -cairo_pattern_create_for_surface (cairo_surface_t *surface); - -cairo_public cairo_pattern_t * -cairo_pattern_create_linear (double x0, double y0, - double x1, double y1); - -cairo_public cairo_pattern_t * -cairo_pattern_create_radial (double cx0, double cy0, double radius0, - double cx1, double cy1, double radius1); - -cairo_public cairo_pattern_t * -cairo_pattern_create_mesh (void); - -cairo_public cairo_pattern_t * -cairo_pattern_reference (cairo_pattern_t *pattern); - -cairo_public void -cairo_pattern_destroy (cairo_pattern_t *pattern); - -cairo_public unsigned int -cairo_pattern_get_reference_count (cairo_pattern_t *pattern); - -cairo_public cairo_status_t -cairo_pattern_status (cairo_pattern_t *pattern); - -cairo_public void * -cairo_pattern_get_user_data (cairo_pattern_t *pattern, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_pattern_set_user_data (cairo_pattern_t *pattern, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -/** - * cairo_pattern_type_t: - * @CAIRO_PATTERN_TYPE_SOLID: The pattern is a solid (uniform) - * color. It may be opaque or translucent, since 1.2. - * @CAIRO_PATTERN_TYPE_SURFACE: The pattern is a based on a surface (an image), since 1.2. - * @CAIRO_PATTERN_TYPE_LINEAR: The pattern is a linear gradient, since 1.2. - * @CAIRO_PATTERN_TYPE_RADIAL: The pattern is a radial gradient, since 1.2. - * @CAIRO_PATTERN_TYPE_MESH: The pattern is a mesh, since 1.12. - * @CAIRO_PATTERN_TYPE_RASTER_SOURCE: The pattern is a user pattern providing raster data, since 1.12. - * - * #cairo_pattern_type_t is used to describe the type of a given pattern. - * - * The type of a pattern is determined by the function used to create - * it. The cairo_pattern_create_rgb() and cairo_pattern_create_rgba() - * functions create SOLID patterns. The remaining - * cairo_pattern_create functions map to pattern types in obvious - * ways. - * - * The pattern type can be queried with cairo_pattern_get_type() - * - * Most #cairo_pattern_t functions can be called with a pattern of any - * type, (though trying to change the extend or filter for a solid - * pattern will have no effect). A notable exception is - * cairo_pattern_add_color_stop_rgb() and - * cairo_pattern_add_color_stop_rgba() which must only be called with - * gradient patterns (either LINEAR or RADIAL). Otherwise the pattern - * will be shutdown and put into an error state. - * - * New entries may be added in future versions. - * - * Since: 1.2 - **/ -typedef enum _cairo_pattern_type { - CAIRO_PATTERN_TYPE_SOLID, - CAIRO_PATTERN_TYPE_SURFACE, - CAIRO_PATTERN_TYPE_LINEAR, - CAIRO_PATTERN_TYPE_RADIAL, - CAIRO_PATTERN_TYPE_MESH, - CAIRO_PATTERN_TYPE_RASTER_SOURCE -} cairo_pattern_type_t; - -cairo_public cairo_pattern_type_t -cairo_pattern_get_type (cairo_pattern_t *pattern); - -cairo_public void -cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern, - double offset, - double red, double green, double blue); - -cairo_public void -cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern, - double offset, - double red, double green, double blue, - double alpha); - -cairo_public void -cairo_mesh_pattern_begin_patch (cairo_pattern_t *pattern); - -cairo_public void -cairo_mesh_pattern_end_patch (cairo_pattern_t *pattern); - -cairo_public void -cairo_mesh_pattern_curve_to (cairo_pattern_t *pattern, - double x1, double y1, - double x2, double y2, - double x3, double y3); - -cairo_public void -cairo_mesh_pattern_line_to (cairo_pattern_t *pattern, - double x, double y); - -cairo_public void -cairo_mesh_pattern_move_to (cairo_pattern_t *pattern, - double x, double y); - -cairo_public void -cairo_mesh_pattern_set_control_point (cairo_pattern_t *pattern, - unsigned int point_num, - double x, double y); - -cairo_public void -cairo_mesh_pattern_set_corner_color_rgb (cairo_pattern_t *pattern, - unsigned int corner_num, - double red, double green, double blue); - -cairo_public void -cairo_mesh_pattern_set_corner_color_rgba (cairo_pattern_t *pattern, - unsigned int corner_num, - double red, double green, double blue, - double alpha); - -cairo_public void -cairo_pattern_set_matrix (cairo_pattern_t *pattern, - const cairo_matrix_t *matrix); - -cairo_public void -cairo_pattern_get_matrix (cairo_pattern_t *pattern, - cairo_matrix_t *matrix); - -/** - * cairo_extend_t: - * @CAIRO_EXTEND_NONE: pixels outside of the source pattern - * are fully transparent (Since 1.0) - * @CAIRO_EXTEND_REPEAT: the pattern is tiled by repeating (Since 1.0) - * @CAIRO_EXTEND_REFLECT: the pattern is tiled by reflecting - * at the edges (Since 1.0; but only implemented for surface patterns since 1.6) - * @CAIRO_EXTEND_PAD: pixels outside of the pattern copy - * the closest pixel from the source (Since 1.2; but only - * implemented for surface patterns since 1.6) - * - * #cairo_extend_t is used to describe how pattern color/alpha will be - * determined for areas "outside" the pattern's natural area, (for - * example, outside the surface bounds or outside the gradient - * geometry). - * - * Mesh patterns are not affected by the extend mode. - * - * The default extend mode is %CAIRO_EXTEND_NONE for surface patterns - * and %CAIRO_EXTEND_PAD for gradient patterns. - * - * New entries may be added in future versions. - * - * Since: 1.0 - **/ -typedef enum _cairo_extend { - CAIRO_EXTEND_NONE, - CAIRO_EXTEND_REPEAT, - CAIRO_EXTEND_REFLECT, - CAIRO_EXTEND_PAD -} cairo_extend_t; - -cairo_public void -cairo_pattern_set_extend (cairo_pattern_t *pattern, cairo_extend_t extend); - -cairo_public cairo_extend_t -cairo_pattern_get_extend (cairo_pattern_t *pattern); - -/** - * cairo_filter_t: - * @CAIRO_FILTER_FAST: A high-performance filter, with quality similar - * to %CAIRO_FILTER_NEAREST (Since 1.0) - * @CAIRO_FILTER_GOOD: A reasonable-performance filter, with quality - * similar to %CAIRO_FILTER_BILINEAR (Since 1.0) - * @CAIRO_FILTER_BEST: The highest-quality available, performance may - * not be suitable for interactive use. (Since 1.0) - * @CAIRO_FILTER_NEAREST: Nearest-neighbor filtering (Since 1.0) - * @CAIRO_FILTER_BILINEAR: Linear interpolation in two dimensions (Since 1.0) - * @CAIRO_FILTER_GAUSSIAN: This filter value is currently - * unimplemented, and should not be used in current code. (Since 1.0) - * - * #cairo_filter_t is used to indicate what filtering should be - * applied when reading pixel values from patterns. See - * cairo_pattern_set_filter() for indicating the desired filter to be - * used with a particular pattern. - * - * Since: 1.0 - **/ -typedef enum _cairo_filter { - CAIRO_FILTER_FAST, - CAIRO_FILTER_GOOD, - CAIRO_FILTER_BEST, - CAIRO_FILTER_NEAREST, - CAIRO_FILTER_BILINEAR, - CAIRO_FILTER_GAUSSIAN -} cairo_filter_t; - -cairo_public void -cairo_pattern_set_filter (cairo_pattern_t *pattern, cairo_filter_t filter); - -cairo_public cairo_filter_t -cairo_pattern_get_filter (cairo_pattern_t *pattern); - -cairo_public cairo_status_t -cairo_pattern_get_rgba (cairo_pattern_t *pattern, - double *red, double *green, - double *blue, double *alpha); - -cairo_public cairo_status_t -cairo_pattern_get_surface (cairo_pattern_t *pattern, - cairo_surface_t **surface); - - -cairo_public cairo_status_t -cairo_pattern_get_color_stop_rgba (cairo_pattern_t *pattern, - int index, double *offset, - double *red, double *green, - double *blue, double *alpha); - -cairo_public cairo_status_t -cairo_pattern_get_color_stop_count (cairo_pattern_t *pattern, - int *count); - -cairo_public cairo_status_t -cairo_pattern_get_linear_points (cairo_pattern_t *pattern, - double *x0, double *y0, - double *x1, double *y1); - -cairo_public cairo_status_t -cairo_pattern_get_radial_circles (cairo_pattern_t *pattern, - double *x0, double *y0, double *r0, - double *x1, double *y1, double *r1); - -cairo_public cairo_status_t -cairo_mesh_pattern_get_patch_count (cairo_pattern_t *pattern, - unsigned int *count); - -cairo_public cairo_path_t * -cairo_mesh_pattern_get_path (cairo_pattern_t *pattern, - unsigned int patch_num); - -cairo_public cairo_status_t -cairo_mesh_pattern_get_corner_color_rgba (cairo_pattern_t *pattern, - unsigned int patch_num, - unsigned int corner_num, - double *red, double *green, - double *blue, double *alpha); - -cairo_public cairo_status_t -cairo_mesh_pattern_get_control_point (cairo_pattern_t *pattern, - unsigned int patch_num, - unsigned int point_num, - double *x, double *y); - -/* Matrix functions */ - -cairo_public void -cairo_matrix_init (cairo_matrix_t *matrix, - double xx, double yx, - double xy, double yy, - double x0, double y0); - -cairo_public void -cairo_matrix_init_identity (cairo_matrix_t *matrix); - -cairo_public void -cairo_matrix_init_translate (cairo_matrix_t *matrix, - double tx, double ty); - -cairo_public void -cairo_matrix_init_scale (cairo_matrix_t *matrix, - double sx, double sy); - -cairo_public void -cairo_matrix_init_rotate (cairo_matrix_t *matrix, - double radians); - -cairo_public void -cairo_matrix_translate (cairo_matrix_t *matrix, double tx, double ty); - -cairo_public void -cairo_matrix_scale (cairo_matrix_t *matrix, double sx, double sy); - -cairo_public void -cairo_matrix_rotate (cairo_matrix_t *matrix, double radians); - -cairo_public cairo_status_t -cairo_matrix_invert (cairo_matrix_t *matrix); - -cairo_public void -cairo_matrix_multiply (cairo_matrix_t *result, - const cairo_matrix_t *a, - const cairo_matrix_t *b); - -cairo_public void -cairo_matrix_transform_distance (const cairo_matrix_t *matrix, - double *dx, double *dy); - -cairo_public void -cairo_matrix_transform_point (const cairo_matrix_t *matrix, - double *x, double *y); - -/* Region functions */ - -/** - * cairo_region_t: - * - * A #cairo_region_t represents a set of integer-aligned rectangles. - * - * It allows set-theoretical operations like cairo_region_union() and - * cairo_region_intersect() to be performed on them. - * - * Memory management of #cairo_region_t is done with - * cairo_region_reference() and cairo_region_destroy(). - * - * Since: 1.10 - **/ -typedef struct _cairo_region cairo_region_t; - -typedef enum _cairo_region_overlap { - CAIRO_REGION_OVERLAP_IN, /* completely inside region */ - CAIRO_REGION_OVERLAP_OUT, /* completely outside region */ - CAIRO_REGION_OVERLAP_PART /* partly inside region */ -} cairo_region_overlap_t; - -cairo_public cairo_region_t * -cairo_region_create (void); - -cairo_public cairo_region_t * -cairo_region_create_rectangle (const cairo_rectangle_int_t *rectangle); - -cairo_public cairo_region_t * -cairo_region_create_rectangles (const cairo_rectangle_int_t *rects, - int count); - -cairo_public cairo_region_t * -cairo_region_copy (const cairo_region_t *original); - -cairo_public cairo_region_t * -cairo_region_reference (cairo_region_t *region); - -cairo_public void -cairo_region_destroy (cairo_region_t *region); - -cairo_public cairo_bool_t -cairo_region_equal (const cairo_region_t *a, const cairo_region_t *b); - -cairo_public cairo_status_t -cairo_region_status (const cairo_region_t *region); - -cairo_public void -cairo_region_get_extents (const cairo_region_t *region, - cairo_rectangle_int_t *extents); - -cairo_public int -cairo_region_num_rectangles (const cairo_region_t *region); - -cairo_public void -cairo_region_get_rectangle (const cairo_region_t *region, - int nth, - cairo_rectangle_int_t *rectangle); - -cairo_public cairo_bool_t -cairo_region_is_empty (const cairo_region_t *region); - -cairo_public cairo_region_overlap_t -cairo_region_contains_rectangle (const cairo_region_t *region, - const cairo_rectangle_int_t *rectangle); - -cairo_public cairo_bool_t -cairo_region_contains_point (const cairo_region_t *region, int x, int y); - -cairo_public void -cairo_region_translate (cairo_region_t *region, int dx, int dy); - -cairo_public cairo_status_t -cairo_region_subtract (cairo_region_t *dst, const cairo_region_t *other); - -cairo_public cairo_status_t -cairo_region_subtract_rectangle (cairo_region_t *dst, - const cairo_rectangle_int_t *rectangle); - -cairo_public cairo_status_t -cairo_region_intersect (cairo_region_t *dst, const cairo_region_t *other); - -cairo_public cairo_status_t -cairo_region_intersect_rectangle (cairo_region_t *dst, - const cairo_rectangle_int_t *rectangle); - -cairo_public cairo_status_t -cairo_region_union (cairo_region_t *dst, const cairo_region_t *other); - -cairo_public cairo_status_t -cairo_region_union_rectangle (cairo_region_t *dst, - const cairo_rectangle_int_t *rectangle); - -cairo_public cairo_status_t -cairo_region_xor (cairo_region_t *dst, const cairo_region_t *other); - -cairo_public cairo_status_t -cairo_region_xor_rectangle (cairo_region_t *dst, - const cairo_rectangle_int_t *rectangle); - -/* Functions to be used while debugging (not intended for use in production code) */ -cairo_public void -cairo_debug_reset_static_data (void); - - -CAIRO_END_DECLS - -#endif /* CAIRO_H */ diff --git a/io2d/src/win32/lib/x64/Debug/cairo.lib b/io2d/src/win32/lib/x64/Debug/cairo.lib deleted file mode 100644 index ca8e7c1b68e8c78f4af52580be6238ba5af2471e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94764 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�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 YuEbjjblC%Yn)B!E$Hp_L{toH?15M0p6951J diff --git a/io2d/src/win32/lib/x64/Debug/zlib.lib b/io2d/src/win32/lib/x64/Debug/zlib.lib deleted file mode 100644 index 462495c799e70b7919eb61fcabd69ec9fa3026d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270780 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 F{|^Koq+9?1 diff --git a/io2d/src/win32/lib/x64/Release/cairo.lib b/io2d/src/win32/lib/x64/Release/cairo.lib deleted file mode 100644 index 31fa453d8cad5f6c5984e919cb620e67874880fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94764 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�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 W@dUc;fnCk{bM|8s8B~9V^#1`Y#gm=@ diff --git a/io2d/src/win32/lib/x64/Release/zlib.lib b/io2d/src/win32/lib/x64/Release/zlib.lib deleted file mode 100644 index 462495c799e70b7919eb61fcabd69ec9fa3026d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270780 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 F{|^Koq+9?1 diff --git a/io2d/src/win32/lib/x86/Debug/cairo.lib b/io2d/src/win32/lib/x86/Debug/cairo.lib deleted file mode 100644 index 1414584e6155f1803f6d8389ec01e4f6e7744ab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96594 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%0D44l{D&WS*4Fe_Sh0gR)~_}P}(IaXMIYySVs}J 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 K(@8L5`~Cy&%`0aB diff --git a/io2d/src/win32/lib/x86/Debug_Clang_C2/cairo.lib b/io2d/src/win32/lib/x86/Debug_Clang_C2/cairo.lib deleted file mode 100644 index 1414584e6155f1803f6d8389ec01e4f6e7744ab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96594 zcmeHwdAOZbb@$p~4gr}75FpHR2$={FLx2DQLVys$%;DtTb8`>56X)IxP^*?&YOS>` zwUkn8t+v$KmRd`xwboinsilaD5fKp;5fKp)5fK%>wf4C7c-}YX#y`HNd7hQ?-o4je zzdes@uYJg(W~Xm(@zfJ%`u|Rvd&=wubLY-mu+Vp(t^b@ef8p#o^85O!08_pV@ZdoJ z4=n-s>;%9UH%Jo4o(V*-`94KIyd8k(M-NC67fuC9C*K8vXu)Phhdc^`=uiw#bihN3 zW-J6jbl$6q&VLL9(FIF2-GjeK%a7D_C;lQW{gk4!?*Kux>?4ZKMY%-FPE~aFEc8b@ z?^Z?YhCmQ4oTljH#TZYdb)e|H{gH2ffLGQ?5@T-xMbG2!^8jCaho+bD_hk?}U8QKp z7eNs1biX9{`4~w0;**$fNS~Xn3G?c6w}Y7fnx=Q-FVR7Yj=2s55`1BqB(d|&AZh9x z5R&f1-#bzEn=$-mEW1HT@Ok8y^cemU-Js|T_h3A+e3mX(bnZ2n|48R-k_6ws3y8!y z&q;z8rUQ{UXGcl!{RQa10Ly$p61+4Gh{TFjiY~1oM^Xi`y%D_&xw6aS@gy(J>E7g3ZgY9U*=7 zlZw7P06_G$y%c@vcmSd&u>6P~eT$}P_>1(V_bGZ5v5CHnWkdAD`xQMk1%T)qGc~;z zf03SgNzpeEN76g-7wIX?52A0O3`za?i}dsgMbAwKAo|XS6+L}Fx+8sOo}y=G01$n9 zp`!2J4nXt_mJ88$F)YzD$WQd_9g4nv5Aq|uvRTn{??D`-pPaAg)z1SE{S@sPc5wlSh@u|Fo- z<~Bv!V}B+I)3`m-4%ogWVb~pzb{tZ)FQ$QLkJlCLgLy!-JGv3=d!(X0FdjsEVK_-o z;xE$fGZgLieoP0_9=9mkvxDhD+78o0wEeb)zoZZ2FVaGc57A=myNMP)tLU`*KoFgNxS~b) zP4wo4iWXy7qEj&KM5o`O=*{<_Khlyt6rGCsCJEDXD$*&N6)jqd@{mr`v=U_#U3#jb zD<1?w)c0;h4g4lrb*!RGKaPAzmtkHLUH-J9H6H*$bj2D)mrX@~q$?1YsEKhSx*Y2p zQ4{lns1M7JX!T2qR$(0_x@w6g409FI^@|l<_A<&vy8aW2R*zvgq)RZriPjvi=*s1o z4y2XK6kYoe2ub+&wMbXbQFI-aKhZUq2a+&O*C1Veuc8L}5ncC~BzPSAOrpnDD0+M; z{*CmN2NXT_8FWYbD)wtcUpYsTxCHZ%s69i|ZTO3H!!%8|;xE!V#333P(1iIrf;4)A zrkC&+Y3O22592S=@G4DD;4jjR7+%un@fT?mmWw2my$NZ<^NKd2yQHV^7ioO6qRxFF zBw;ypkj633h&Bugd9){hT1)^3%orUqhkS>b4crW_`kt6Qe_za8~ar5OWOqn`)tjxm?eg zhnc`EA0J{}5_8~u<9$t*bLtQ7-x-}?Ld;*BLkb=k?F^fEF$c~^xi;LK=(IN(M()Bn z+x^&v+Y>hh?2$7MBYP-pnEkB{ZC5`-*L;XZe|vm_*HS+y^X4)X8nt?2H|Yvp^C6g6 z)vx+NnKzd)(%RS^x1FQlvXC8*SdBdo_ zLthq96`~v&90=#{8y&j|3umpxW)7Thd~lQ+pyOi>oUc97@RQ9P0zRG)$NcR!R4GTy$~)*{L@DMvXb`Qw36hA_@N z3{CJoPgSoYXCB5zVRUSwJvw50l-QkzvLb^}u{#fCW%}8sBdr`czm>-M14qtJ^5v|h zUuJ`8{*f~eL*f!)B4-{(HtGqiVitj#y>f{7)(+h?Ht4dIIE_=pOCqeVDm;s2-FYY( zfDic0f%8d3Z*<` z$S3h7)tk+D=vpU=P(SdhvF>`?wSf=8ZAXAUQv;& z>04Pe^y(y(H__~104~wEgq(8IqG5cUWZ#{K(o+mKnP(13zQzEq>P%cLvv%bnnqy#X0=36qi{vt+1O^IbSZJzqMxlTHLjg9W^4f`@9{fthXL%2T{q+GkDxZ5M`m|Z(2_=A$wDX^}I5R|Vr=lzz-vN+<%NRsPrzBS2Y zFuz1-s#uIewLTp>@Z+K7$V77wmk5)&Nw0KRn?VZJg|r^&aD~isGLlSbd8TfL(J=1m zP+`;Xp;e>Fhm11a56-;PGJ?X1qVAV#Bty?mgDrR&htMk@78ea(soRj!BOA_^E{n7Y zYW=dIO`#+L8?S8G;T8@`$tY`|Y{=G)>zi)XObZ+nW9^d-i8CA9@p$>GJhI`afY~f6 zm0X`AD~T#3F+;T4XsXGV#+bW zKfHcuqCGZbM|PcO&N&fArjObHJACotmtrW&@iqr^6r2$4%O$9-mFCdUXdgR!3ti(7 z1D%$g5h!lu!a3zGPam!z=r}Qi$arSMb3iX_jH~7|@_ZaS*paoS1;y?hO`dqzd6X&! z-!0(ARN+Rs)WzT@;ut3KDTic7Bw^6tbUcuaRmTiLCXFSILM&*TrfClq10lw<5Wdsw z$Ak1tB#dVv{BX<7_5yU}l?rQ@c_A+INQH|FSr(XePKBY-%8KqeK3tv?nLQ)kR`w1cwV%Z&;N{2n`u)$+Z=ztKdu@ zObJsXY}oy9A08)D`KUFeLvo)~NRliMJNi?Y#wQh$Bpd&@`!GJKkc5fb{@83%n8qg+ zk}!>bjA?vwA(d`e94^)w>#l zRKSpvqekLJU%S&c)Jh5pIk+URrBLBw4Eloek}^*>Y3a^bL!oCeeBY?wA=mHtc&BLX2cyK$UQ9DJQx}i1AzIEQxy)t`u44KU8 z7zy_77?cish@rA3p90I+T`on&vX|s~jNRo@e8)$cV|cD^my7ubJI?NsDI$))Ta+DV zcgeD@ux;pkeCgEBZ+B^4S=3!6I<9JQ9Pkd5(#Vt+!`EFZ#lUcP%TdGUNo`^0(T|Ht zv+xS`{_u1%<6oB29$6Qv;Kiamrm{RrrySLtN?$C`WAf##Mb(`sX`W-2AJ<7%AyH>B z&bF;M?p;BK9i=*HA?Tly!mFYV7}sRwVV8Agexs3?dji3(7QG}|*F*^KEJR}@PC>Mf zSq^&QjblQ(SC(EN&nFRbWc{!!lQ6qO&qR2VpDXgfFA=&u-e?VvP1t=ioqXq<2ty++ zYLkvq6Phz5 zt22)6GpOs#y%dT|_fl-bbB=_h^&{931lZaw$IT^rm@*vqO-R_}?!f3WlP+maF3Us0 zFx-!amK)AWJ22=jQ$D$ntgBJLJTUXjg}2>K9NK#2!m1{!?~CCimfi2-u}HGzWSV{| zj*jukg(Mih(-cM_-fapwqJ6FcLoOCHrzpw^7;ww^EXl3`D?@2Mk0(uClQ1U}<9Lm0$ZhTG{gKGGy9DIm*AS8@h9@O$xH(2g zGD#`EUn=za5#mV(_PkPISqG}?zm7cfNQE==e?O3MO@*+XtslfXr@~NmSDItCtabFb zPcEcQLeO(F5fMvDmg$%Mh#S{b2#TH8Q!~g!FU@>uX2ovKnkq>Gtyc~)?vK}XHv0BvZZ9o66`KB%a)Rc9o3BE<<*oxESexv#Vs%(qGrACOhKoDqT%Ht4WV|yGob6RyE-vYj@dl6SJc5 zkhds(47FRL&dXLj?OT-48p4h1mOV{0jls&W{#=Ub^K?tXo0KdX8P8I93!<8KD8YJ{ zWT?hyS<{jNrjk6_th$Kvc}mh`Q|cnk=P60kji-yekgFt7H<&IGLoP1S)EwQ*l4er0 zCs^j;(k4c4a%;q3UnT9A53PncTm;!IMqdK=FH1oi7p}R*LbP{T#zs#MH5Ow0xfD4q zwM*t8J2IYy@HE{ZZPdoV`VngyArKSrbdiSl5>cmJ?G1F3n&9ms-QQT~CO^sD1p#*w z`$ka_+w5<2!^rR#P^gl1%kzMzi?l>Os!lH`Ns^l2?IJyyi&^2h_Oy?(v){Iwv|l;2w}%l6(B63&s)sc*H(!A9 z>lRv>;pp$TW}H%D7*j=g?JDw!DV8Va5cy+O6~8P~EHCUX>8e3vXml;PZ}c;-3u{H$ zgCwScV9i%is)=!RG0;y#7(NcNJ#@m&RDivZ$r$t2bm7gIP1v zm6Z%g>64cfZ+GdKS8WtR-M*T0=JS96671bE^kfzxbnr4pf}LZS8PvuOn&_fs#vd6c>^RhDOCphkzHSj)?$kN0)jW4OEM z8BPowv;4B_2(pRG^ZXN1R9^Ot4iEE9PbDGnON6GG*f35`Ouf;ucFu_~vN^@#%mC0v(0wot%glnMB~Kf0}X1>h}X0-i^D$Jg-v0i>&T67b@V0`AA( zv7h5x9T>OSpTl?|y*6LKyO9n;y6zYO%f0|`^Ueb1OhtU8$B}=@F94=pEZ}LR5qzKI z%&!B?dIaBM!1Qd3{&)TirhOW|r?6^;fSXb7r}6irg92{(G2-FxT`vQC3~`UfynHM2t;YP^ z@q74w2KsNp-v^#Yo9I8lcS=y^4fuQSi^zj+&!gY@`28G)c^CTKiSgbZ(|_N?0CO%9 z@F1lb%jlC|#W;K!U@y$Cyv^++r)bbk_m&&R)?M)xO=Mt7v$ju-HDq}Px>c$|Q}P7*M20`ef; zir*_|33%UZOcVYdi@!%A&)vtO{~Q6Yp#LELE;%!r$F6%uA~=Pch7rtI!W= z@$~{;M&3{0?-=^6z68q;Wh_UGWr+9CwfKuP=W0yr~cxFBJ4@i&T_mqC@Cy*Y* zc5ptngZE&bzK-LEgT1>& zA^1=DEc_#U2L1>B8U6|W0q%zf;6At)?tx)(gIFhq#Hbh%yTY4bjp!2%alL4ZL9te} zL{s#O0Wl4Bfk*LioyXw`cnrP-Uxcr~SK-U>HTXI_2`9k_YzNc5e z;8}PMeh4qY_u#wmG<*ks058G|@FRE`ehja`Y&a2S!C9~~91K(8AovOV6yAXC#5Q7E zv4eOGwiiE#U*N+%ufpqqgP52iE*Dpb>%`UKDshdtR$M8T!9H*R>?n2;yNX@J{$fw@ zCUKCMDfSclh~2~#PMR9I8Yoc_7!`JL&ff5 zy4YD%!)35QoGccKQ^ZU-5Ka}RizVU=ai%y;ED~=Pi^XAZ zIGiPxisj-0aiKV0TqIVCOT@)ug*aC%6X%Ju#W~{tYWV-v@c+MS_%^ujU;8~2@2DVa zQ?iR;cfKegYs~%uM8Ujs$xgJhuI`D)TSjS%&=Hri>YZ>V1D#3dgyl`MUFY#zyZGF- zqR~s-7$RGnen@Ev(_WrT_$4)5^=5WTVb*vl^O6aHw5lvBu4)Oy7i*g`Pk9`wELkOB z>M6QZSJ5b`O6bU0=;~@DHS|{!%0D44l{D&WS*4Fe_Sh0gR)~_}P}(IaXMIYySVs}J zZzyaMRQoZDNj%!sc=?P6qt@(WKGzIF;!30kK^e=;GG>v8PZ}Uh+V6`* za$AK(nW53eEOQq_mEBBdQh8NLC-GHGr)Aal9kWp<#>(kTHDoesmNan4Aqyo*UV-8A zFl5@&cF9(^>Br-Z{8F)`AYjd-AtW_v5|oi77s~a zE|Nu)=gu5{2xWT|bG0O7V8{A#+Kq9GFi`5Sk0M{Nl%MJQGywMXtejYZbv3ArDF3Zz>Eh(|T^ zQi_PHo^8#1I!IQc>L=f)LC1J5fR1X?kA&<9UbH)#`}z7XqC z!DeUC8YSv$%J!B;Ze(tqt6l*kho>#5pp=MS(MDw;wcNGr$P&{ z$y;;Fm4Hl(YFO5^WEb;km94hPB_G~~Nky0-aY&JN@N)ht`>ma}99wFlW(u5ON=Dc` zKJ(0PYKG=9M(?b0-(tn0_{57-9y~KWGc0x*na)<~21?mZ{-tau|5AREf0r1h7BFL7 zbxn+}NNNX;Li_%nPKQ@77;9HO3@(=v7QgaF9I;x3U!lzl!a;!;XQ>{h-yHU0T2Heq z2rgQ!|2`(p6SV%87N%m~EuPRS;^m#WFn9BBUN$#-Ep>*6ho0QW2IU zWr~XxrH_vV^rzX}3g+Q?luB0tPicf0WI4`-b^}8CW zrBbM!S{bNfYKgacYGtLc_6B(ci1cKw!gHBRR_N3YX)Lg0fzG^28-OWi`7CC7R+Skb zs+-}WiXNH+^CO|m&&9=|EN`WHaD%RHg|n-SDZv2~Dl8_rlJgl2li2grK83Q8i6Z}U z?5t_7WUQ=jH!0RkTOw%{jKq}-IW+?73^0bxlCd|QT_T@Z8EXW*Sw_Yd66umYU1V3Z zC+17X8~DjHI(kkzxojhk{)v5wus^xMdc{Mb7k`{5{$(}kk4I|~<-SMj(^UBV!^~IAa zw?s56RX}y;CV@s7llKhnn54pcEHc)qJ#ihC(gmUD*=P?9qnSBAq7=lZC*+zrA(38m ziWi@dSg&LoBa!U%FDO{!8?RzWs_X}&;}PqlUV;r%ECVI>h$&buhS}p03Y0z`As<$M z<8-A?KV%@eu2N57gmG74$S>FnVgZv&b@I;~pO9Cs6&D|lj+IlaC7vL)=B4U%<4v3= zt1g3ILh^D#Y9$01T2mo4N7Y&kV>A$UqM^*RHPXsSB*}QI2^?J!&djC!)oa7(ZUoWv z#aYXHUh@we6+tDo5txt8gaOmuprL)}mcdMkPc1kN%vP(D1 z*R;I9!t_aYTTBvqzNv$MIGP{A@hwsxko zmwIiZt)&grrRq7cRc>9x+|9lqvUI8NT`aaGXM?(}RJBdm)to24o1V@;&XGLrrt5Un zk?5V$V8I?=whLgQyMFn(Cu8ONf*LrM+hy-oPN(B1^?2>@SYkDY{DfTk;I4geI^^3Z zO6`^S9F(sEO=WM%iddC7Qb2+#CNyWQp4m8TaYwrSy^#fx7J2UoIPARwT~^bh7#Iy zDZ_ZyX%eh@U`cgJ+C+@Uv1Rs*^0<@>WD2Uxp=b8$(zADgK|6Jy61Zh^!CsKFp`(3cRjtJe3`f7wk< z^>_Blf$^qkmo>|$tD!xaF--FEfn5c8u4eh;JE}_so*R{wophNcLByff0+F-qb@*f0 zW^QH-VA}bh7t~G!x^m&;bwX`j#VAr(*Uq#987M88g!;E8M+_0ro$zwmGuO0iy8k|7jisL~jTs7GY)p2sl;vR1jHihVP zzWdwQ!Le4M0UU$(DjWAz>fjom>lAy6;0b?s>Yngq%HIiJssVx8ca|$s_|9-*d#&<* zE^f#q1cX(J=Yv%hNQ9%or+Y#am!FViG*XQ2<=xQ@WTw&tbgJ7bUcS<{a?|SC><_hW z(~8>0ovUawx1giM43_G`vAVU1Ql7&m!mzM@Pw(S~LNo`JjC*k@2(HwxZIroYwo$y! zcvg5bn3S#4q2-~X?-k7SOgvRZ4^^xEpaDgx4&aHigajt&ure|GLQyoX1CJlEZdAU4qS;@gZS#p)-f`C zX?@ITO^|S>Rm^(?&x~$hVbTmsm25s@24sy)TGiwzj#LlR#x;4qYjxx(G-Y}^bW|Kx z$=GJObx|F)RXbKFd6nH@qbJX3PUXD$Ux8ifd3Hnhw~q4CoMLfFB4tyh^bli>^hoxu z=^?Hv=^?%-J=q7Vb$TOzS=Ib~7Ti<}UcL4dg{>r`A{;mb%E880ze#E;npW4e+P>cO zF!Z$BoKa|c&)gueXQ`8p{G>e*#(7&Cr8*wL*s5K<{S)n$%*~W)uZM5dc7teJcNevg z!z%K60z(yE&odgYblm+h#5k6pH_k?ko!)uiT0J**%SuW<`kUhBYPd!|Q^0jj!F-x@ zjj$O@rCYm?6D+c3l(Z(uVA{%CjSnmF(D71W`%yyG{l1E{gYC0T1e* zwa2*r3918UTCGXP#7wJ;lB>a%lBsGGP0D-R=~k1HE>Wg&4z)NpfSg%GL;S*4Ol0gq#v-%%@dLBj#XfLwHP`)Un5{fUA&dK5|l; zmdt@Fx{XhyFsd27a}3p}xRR*hBBNDSR-hQld7^V4TUW!gPV13W1JyG9qhxcoXCvZ! zTh-5GVC{?N#)$`&gPDVgn?Jp?uKcLeILe+MD>i>^LPw9h)ahFoapz+dI{mm4LsHo+ z!Io-OECx&sEe>q^;$XmF;k|)?xySWWd#2SieQaMrGxY2JaBV!lFy&$DN=hBm#|bzC zMa&X!pn_Ro)d$UH4HDJ^FA9O$WkG7Fa9Lp0r^{U<5F9^8xvAAFeI#3Z!gNumW{&N% zZ~j)O-y|nnf5|gj37P7oALn5HpzCZ(UD6NdDN6cYTmdr73GNr1xWsCaS}fCI^fyCd zRms%cgazlj5mr&lp=5V@*h3}49IvN7=rQRo)^F-vR0i_`)V61T z?(svJAy&uFN0BX7&H~@2%w8~e z?z{yH)!*j-+4^JN!uk5^`l-vsHt_T2w^rh_5NMlT{u8sLO5Wj@sy_iO(gRw&_x~+{ z-OilVrnC0L=NO;8@Z*1xzOEg%!QUk?`_r0lfp$jg?tqru9Ur+bftjC1GyZ6)eJA=8 zcCv{&3ijM>2XrB6^luu{E-UxAu-(@g9UmQ-n0fTdV`eTtZ^Z@DH~5d3DIf^|dQD`tB5TM$W0X`> zAz4HEUHs)2t08lZ7uAptnLqR|)sU@F@>NRoK#W48A)8Z_)wNsIoRjB8tqLEoDdt(B zRn0fqM3s()Qeu|2W zdMdp;&vm6O1k|qY^G-^m?TuK1p`jXf4=D3Z2RzeH6LkhtJQSzl?cnTJ#Wp-|PC8Bd zAlfz#O>R(I*)Dk%QA%mr)I43Oonor9{MqXn#;A}m~g^?)@$ zlcO^+T~iZS>e7M(v|klVaGn_eg4!}2@pfi-O0U{VcS)>@vmjkw`yce&1iJC2!(L-uo6VY4)pP>6P$y zi}1`&uSIc5t%{c^L+UekkMQ&svV*H#a-|Vrj~GvGPCGdJRWWr7GHvd7Ox>Ol8ZD*l z?w{T}wutp}c5b>I9)j3=C9&nEv;(Z4x0&(iNJQK_i759Xq)N1dwO>{9I8%eD7uY94 zwVT6cZ`Q)qZ<`A;J>4us-ZzgdkNjeI8>hm)_ z+M$SlV1#dbGgrRut71JbjYtP25QkdL@s>kzUsdrk?TUJ_gCjh-32Sc$x`MS|RZ%m& z7>$E7V^np}Y(eVxU8P(-B*MdOQ0l5(Ub?S}=_}3E4$a}Y&FLOeT3Try=8&mZcByh- z71LLmR~+u6Y~_{a5dqp{tTaohJCfnisku3;az$pps^(>8c6}JOg`)yA@4~AEs^1<; z-Z@J>|aJ5KeZeFR;}Zw70@TKju*y{MY$M+17-c5CA0FP{i8Q?)bw+Z zwt{cLc$q<_HQ!=~oa@4Cr?k|EobKcK7B_lGV1E;P4ec$Roj^4Ab{wSr zs#<3Xi0Al-o~;*)Q+pm&T1lVlBihRvJ)jlp=&}TwyawXn>h~~(GtKi7c7&J7-&tHNVi-FA1=$ zH75sGzvK#dD}B7l*)uBiEtfJpc~jEbpmGVcUlq%)l%K0Yym-^Ic7B%X%4H#*ydhvy zG^zD+b%-S|8f-aMY1VnU!-|c4Imp_1S?a5=aG0STv0e}hyHHm$#FU9L2W!77*3r_g z%vEJndC4U>das?&CH$+q;TyYZHqrI_a;wxDjQ^zbd`(4sbAiZ3!+upQh0Hj8G{)lE zTr6l+7i52J+)R&1I(gTXaFrcK*K4@1swplYH%iFbfSpb0q#|EmLZ%BWXd15vSGo1 zujR1hdJ8SR^^$*?c0pRr0}e^rPINH#t77Xbts&R?DAp>Y#c;{1h*r{dALMA(xTAxp z-=ohjjHB%&TEmRu4A!Q$VjAaXcB$y}^@cR6wiaoT9C}sEOs%9-?saKQxdL)PTade% za}3g28cJh2n>H?~wOe3mE%tUb`Jl)}*nF{(WEb2KyOpxYW_ z5nfnvY(gv6)diXSJPy%rjL@9PFZ_c*qklk0+JjjfBq`iDoAr815U@iV` zc@C6n+|6ZlUeRmUxYGRMS2DQq#L%X@VqTX}-;zN!2HPxF{Swa1rASx!S2L(|mOg2< zJhNh=3%74A;`_DSCA|LVQEF*#s}YA@T3TuS_I4HrZE4ySc?$DIsZ7aNfZ7GfU?+9?XO>YNjza}9c ze}f}3YvC5dHH=9>yEQBE^52Tl zxe;b%*u$mQeO1i$(#ZO*EH;gCXz<--cc8_QC!jjV_0Yepj2^SJiq|sLSt7W8&sB zJ-y%(YQHLCmi9CLFpa4?Nb{(J1>Ax;Mj^eor?Gq1T`7%6f0V`yUZQXbwqI5AI1a7EkZhMHT{X(IIeu&}Wb2T)l(1sVsS+%W=Sg5ss;UgN;wA!Aa zMRMpBQ(4jo`O6X}H@fQJYtLX7WYz<8Q|GQUe#)L}4>2h1_5D>k2Gn0jQ|%7cepSr( zQY-qfk7`VM;-zj}KiplwOm`G@Q(WpN{yvG`Ki=0c zr)~BXEDKw|<&@^+AMFwY>@e_wEeCGDDwcQY-0dH-*yiaji{@fb5w|qI_*fE`hC+JQ zYs)c9>-m37V)6k&JvX-H=%p0jlSG%3$DUGL>L>pxix~_+wcB$^fB9a9YTsJxrA#v? zOQehU&nYbbT{l;pwNrU=2AR&ZKJJk7kFl92)_RFUW+(0xjKjZFiGz8#AXGrDog1Zd z^iNcZ2|Wzwvci5<>`zY4oI;V&=YOq&9~qRZ9fQm&f==>3StSPcF*}Rw@}p`l6zb%^ zb&CUaH(R+*eyU0wekpbG-z&vr>($9mSHa(^b@D%|#9$KYWJ#ClJ{E`Q)y1v40{zbt zvYcw@Mc}oX=VKxj-_7W#H-iM_Q<$8C~#eQecaL+#sB1S-K(KJq`9Q?{a^yy z8^mk3n9>USe`Bikgug)@v~i#dszjQtRp-eA;-t4HqjMZXz7l^ z=OVmbEhCjyS)Y&4(j9&66lS#R$WG)Jl9;KcSsS&mi~LB0YTwdj9Z_Ax(mur(^N7g? zQy05*`oB5GHtzyknEJhLski@9gcv+I+zW1@Tpx{aQ-@j>ylM;0tQyGr%$FlX{lc3C z*@B$S=c?U{^8|Abh@}zqD_O*3#jQW470UDR2s?Gj#wNUKd1ltaq>=g62vI#r zZ82Q`P!X*(^LrwVmdscigNnGNU8b)^xb%#+MQ~pgu}UX7Po}UYC55Gt^XnXyJ^j7q zX)Mk3zTuZn07pMs-}6pH zX&?UCG-f>Uu3bM$sNYSa#;V?viuzm{m8Ri+6T_}su0N+Jjqu;gquR$vd&16~nUY@H z^IfnbrJ36KT{_kJei!uK?WUDZPhZHR+i7d>dVQtz{~#X&c@fsUW54CSR%vGNVjjIm zjk{89|6v|=QnaN?*e_+Ur6s1x=vy*6J#=gRM`>(Z(|T&*nX!p(J-?jBrJ2N}lnt0A%(3&Os{${x}V4dd2EEc6$GBc_d#*RI2*JH1nUyk0FR7gDy3kF?b- z8gComZEcIj+a>UNpQV@X6K|hD?0sflI!oIjf!M3oS82CuM;}k_AN4hR(OWE~Zl?s= z*0g6lHGvnJdaK*Fly*0F_VJ?1Sr@A`8cz$bw!S^%U3|pJuxFf^z0-Nau0Gl?!Lsn1 z0>oY|3zyDwcS~V4@NQ@?v*bcwM)m0ltT-#{*2~h{ z-TN`bUUvXWDce89k=JX&3q+HdvI96`XLKDu0H}*o>Mv)6IFs>)VWGb~Fv6RZHyShh z(R45NAckm`oT%lBW_i}~Os(A#O1rQJCotvaiCk_@hAvD=k85TY-Mj$ZOAk;w{XQg% zJl-B|4|zsb>ek{?ejnNmx6vl!<1E>A(MvPN!(#NwILpfHmCeLDeRz!6v*vVZeQ`tr zFL)llcKa!v)g2k*$rCeN3Hw_n^-(i7@5p-0QEAlv)`oUpFLkGMesFXNvoSg_fE#nH z+SX2Q>9p#YH1+^KAhD*|w+=Tz$47_OPqarzdWu1&9@C!hv6&dqj>jbI2Nd=rk4qyD zw})H3-weu(MszxQd>YrD+4O!oSenP2kVfzEY_6m?I4g}fDKq-gh;U+zORsE<)9hXz z-1L5SQrPpI9itC7$7s^n^Eg!KzfMY_cGlrb;+=_JZkmNr^+DJQj9|gEZHfio~Rr$0=Q6q28BBMWb$cl+Mpj zEySWV)Epac^rLFfINogKls$DZi-89J1vTF?Fi4hq1t6#nn}Jn#-u}CHGAF4 zGs(qi>`9(UmgX6!r(-ZF^SKi4k~Hq5%x_9H?2H61&24(!)hO*1otePwb=R$={c=_U zZ~fTVXlG))Aq%$Gd22=|gsgfljj`8{&>SwDz}0TUCH=XxV^pOqfHTK2&sb62-l}9< z^PDnj{76{+G#4}#&SmHu*8Vc=e=YM7vu1s2=W(V!(e3B+N|f< zv~8?j#-~zGd4V5;NwvgP!d>og<-)HIXToSfwUKxxvv!V`dgu!?xWV(4^)U-~omK>x zu>xw{I$b))x+p*k4BgjHSz$$eF~b_Y2^)-li51YwesarTNkl^2Szs?O-pn=2CrH#gIGAk#Tyev6tScgmqbf6+B;5 zJ4Z`B&}xSz=Y@sJTN}5uH*XiW{YW3n;<|08v=?wi5xs*?8DS?ZHw1c) zMP^TIA-1C{i?NUcf>osMIUbq*>r{-#RmFJVjnqC=_oWTONy(8?t++ZH6Iw2A?OJh7 z5&f4{E3PfZ;+Iz|t}Di4vTH?YZPy55f;F-CbFaeqc6|;HcdPNf{fKwqR=Za$-AHXZ zvMP;+aq)5M6)Eh&KRWOrZAW&gB%Z+5$1j{Wt_|^-zGtI< zbfhIKNlzt_S@n`d#=#OgO+xhUB=$B~DcX2av$bNP9>h=|-dbzF?3wC3K!Pm}((oWYY-_MnW jYp1%D>m!x$+dbiza(y(1FWX`-D}jNyC#g@AN1|QR)??&zQE+h<6kv zeaZ1@-Dis8OFLr~g|vU}e;XO*u2nqr;snKTqI7JFVmLtxOWm%tE3F=)g#D%8DU)&F zD~ca2n6DUhTG?GON=iv7O1Bmb8InG>aBNy?cDgmCe`=~#(b&UtQgdvD`Kh_q#FSw} zQ-+Q7i%mhfHmX|ont163Y7WfO=tOZ$FW76`|ZPxP2TBqG! zUQ%9G=|~wqr)*ADpm3%&eN1Lydb%wO!X;I6s*4@vGb+kbhR-dlsfBhw)p^#;v8e^= zX$4un&_emSxnm3S$7Fa@<2_l?LK_20(ZV9=pHn*%zLMgKimDQN z>@{U&z>4x2>9}U3BD11+X07B*l2@)2IYoxll+_}lsIWF)e=inwD?P%*@OyOiN4m%2$*-%4&)$QW9mFLmgIN zwWXulq0)E{a(qxS-H7mvIX=+Bl2w?QmgaK|s&rcOXv%OjSZH1KJD_&KoEe@*Iz7{xk(H63nvw2PiDfpXjKUvlTy1&fOxZGysV)IXS8R#xrdj1QTd@e3-^ifS4eD6A^4^lF`0i5qZEd8PNPX=pk;2Qc7! z$qe&yiu85@d7PhDI3_bAKi^tYcD1vt*1`Txzky1t%1{+5t56N?tc&H9-qOjoX4q_5 zso6Pcs1IoQD$(?5{Yw(cv`jQxxMj88tHg6;fi-RH*z~kK+gNLr6G~BVe*I<9%!MTt zRkdYB^AvbRBTr9t4NhYhKBohD0*;d{|ICHR=IY{_;yEHP*DE)#1}(CFrD$5R({t1E zbFwq7`Yj^5_Ex%1+=uCzIXM{x=<}SFW%H}ia8aJUut>7#P<;m#X@$74a&xls)6=~d zR#R1luG@izy&9brn#x&7DKymt+$A_$VL@JwEtl<5P;P4F@0XjnaG6c$cxNswEoaM0 z-^?ep?UfFSy}0+W2`AC zQoq}JL`Ke-LR(J3Sp6_@Y@mV*ZE0h3$7YV9R7SqN6l!o1v_}~QQX7)PF#`t=GZ)J7 z2Yn?KWyLk%(_dOuU4{;S=EAZnQTiV7D!X0WU^5p=--uz9(xr)Bj;u>HW$e}{Ra;hu zyF{Xta+Fn6kVBLlk-JKfR+BxRv??ccXl&WKXaRAnX@0%c@Cl+cv{0c|UG*R;6&f;c zv}{MTSgjrL4atT>;{-GuUasDbX`BhD#-3APMCBPlp!-fj%On8&IWt6i;ujP-Qif4k zO-Yd)Xi!k}GdNK5QHSQ$GO4(8bflaRPLDEU8aSqpqP#Og zQI@1D%4h2oC3dHx%-ydjYv&r22`?IyEyoPX_S7(C$m%eq-(SL%R|XoD`3sCn_mxIY zAr*rXg+Ki_LgAkQf5eVTI7ss3Z@38QToYnVLYhYy;5P>RnHBzZ7Jr=-{>2>kuaihk zloBm8cho{W5C51_`Denp$kjtcrp1KxMT$S)R0sPz;L18EVLoX$=q+X|bEi{mFpfXv zYNzHzA4Z<=1nz&zF!_(0NT&V4Bk+^$R!?@Ob@JWtzvl#}GAB5t`Rsq~R3h!a?+;XI%JyZ*+^vj_9cNo@UtoS1wtDb^yB_NGr!>8^vtWYS$lx#R+~QgTD;qA zKVRr{lvfO@nlW3OM0r-whWW3cB@P)fV#ElGWyGjao)xq_Lr>+ysh^MA6|X26m zn4gx|!s&ta08?+}XUJ^j#2l^z$Qp}!5TLI+_{SjAg#``Qnm!XE`a-6EoRo_Mgwn_8 z+4#9elWR@i5y;g;Wx)42%bJXo41K-Z5&0_QZtNs?oG`LNr^kxmD$*)pj&OrntKx zT_go@d>3$@mkFpTvzNdi=n&_q=0U|p6OMaQDW?ZySH_nthocC`yjtr<`_O+_~59 zDHuNVyr*;ejx17?)q?+1pO;3NZu+_K>=$Qb?X2we2AXogf9k?}AHODV;Wv|?c=F+o zOPh{TH|ey$xPR@nVw-LD)0G!G`hNRoMVT!4113)Y*W~X;%o;VKVNAo-D-S8k-GV=L z{Jb|KnkJ`RQ?z-jdh^F0E6Nvw->`CG-Qdp#{q536pEtj8cq{En9n`(*30 zBi66$(&sAWM?GqL9^Pb$6iwDsA#*I@+zrAZ%^jdqCLU&$@XMsxnmaElS>&tL06Cbf$iv~umBXF=^$F2c9Zl@-@$1%0x)D_iT5w$>43F6NN! zkSp`#3};YzWd+l8YL_Fb{7E0`Db|xdvZSiA9j?6sonU)Z^pY9}%A!5$RdGAq_Q;zO zCpLUkmMo}k4}Dnpt89nccrNy=h&<{)VTff=P4RdvHI~e>Tx{uIR$gr(^GXq@m4RWF z1OyfG`)Gmj;lL-g%y;6ED_t=zBqqOb&`DC3lF-7Xl= z`=(o;+FS7KWtaB4?1h`kIC?&nTY>etx^#xZ&1)9#-Ze$8#apo2s3`1LEOISXXNz@M zPQWz2@0K=;+|j1UHCm4V*Zbr)HjB244M{$6$9YDCxO~oNB1A?ZkKl{JF9*pHVh+f8 zLWIJBZZF~MiQm4$$KNxA&w^hLr6QF6_?22Fs)tmYX#?|rt461tnw9b+^g!Ys<^pn*!37$UjcB995@Y*gI zHb%!Wc@7X4yu*}&xNqSf;t^8BbvGf*bLeSZsVH>}t3aN26_9y08WgE;eobGrGF9_M ziHawA_j`CEe`3s!+hPk_I9F6$o5QDVVp&`Q3Y|kN3p$>SE-;5~1Mh->9O5xdEpsZ} zCx^6Mg2&III4z5WVWGMhn^aJ`(Q!OK2iVx-ft?>_aHyCZ4!M!BqvB{5pxcNTW~>sJ zvrJbL$Tw$)8D!302xNLk0(q_!kjz>7WX{qTrM#@gMk|{%UzD=j!`tKGA-7wcF+Lg1 zg2(W;m5kQw7^Ua}Guj1SU{&NXyco6|IldV!c43}$KC^c6+L`s$jvA4voO9A`ZY@)p zh9;12re3UN>Loy?&8lUp6@Hni^vO)6FG_h7zw|{bk88dtWwVF3#lu@a5#CKmpYlDZ zKS+0aLiMm6w=x}NzX4qi8WB)Y^)G<48NMQrdIR9@O? z++L-ng*k4uWAEgkAwzCNy^|bY6DM=dXc&xNf9Gq~!c-J8G;q@Ab-t!emaNgh#@FBZ znk!lRj0Qb3bFSWx`LeE&adgBm#rG)I4WmJC&%Upk`?~k23wQ_|W&Dp~nHvqfI5|s`*I+%Or!dg4%Ce-34bsDbg;AITsb|jH zgPsi5!$F$Sa0I`)o-RRpSW-rV-U2k2!9 z(+2A4A@s0+(Diip_@+`AuDfE<%CKDH#0!r8AOmGOdt|QBWXP2zf1Mx4^RNTrV>LbU zsRtg>MR0uY<(}Yrb7RuI8(@jjYt*fpX3B&qPa&l5U^vk&O((DtKP2=+F?rS#cv$3k z&w*%3&9naQb17*jv)}22o={0Uv8QW%A5p<9N$uBJ}N`7}#p-wXNK{#wy_N> z7cQK}cIqn^KBd;SwF{0bUjxzl-w!D4`gROkOmP+j(-vSuI&J=XK&~!W&|oj*8U~*8 zs>aye6gR+!Bb0FjuB}JJ1;iKCiiLvb5 z$zs}^Oll5RG5psf6tVKaK7utV)(~vz&lCJ$OaCo`A8gU*WGL3~#p(AhyZ_UNzvzGQ z_0@e7S3-F&P^=-?az9@1gDv;h3x2TW{yo7Dw%nhA1~!!CzEtpoE%#3gerOB*#~kLh z)k6Qr*nr!%Xy7&Eo~#{Izkh@^`D72~dtDoKUluV(gYD2a3 zA399fS4Rx7Tp%p2r)-W5Rs~LyP=4VET{&)Vw&U#SXtjM8?ImYqp)9lS5Prlj}EwV=$PK1*4wpw=hRn*KfZ#BV3EOD-M(T+LcA>Kc;QEa{aF@ zEiJ;U+V;33eUFh6=i*$P2Sf;~17{!c%2@nz&J(W`f65ZsU--rkXB#VG6(tM4NdfV7BHlzHQC80YhXhzJcuwm63uu>qV#T1f zReaQ##tWWRcT%4S!8A*gA~_Z$vJ?--AseJMte?in!*fYAPEvO?erl_nH6>-pi|9Dc zc=~}POBdXNyk^fXdwLA;VUkpYb>w!S?wIau5Y?{In5QX99p_JH0(ng+mAcb`7XZ_M zgMgX9A;8JNMBr55P~a?J5^z3nIB*dV7Nojmz+u4aw6F@i5aHFpQ9$M!SDCLi~!f+P*%)QuLW5HTrW{estj;nZA;NUmoQa))Gd&IMqiAoekn^=Mlv1c$z&PViLeb3;~Q5Po37jkf>lBj%unTiW_%dI6Z)J)}t zNG(!_5HppBFx5E-xtse)q22&%D>Iebyg4X@g{s?0MsPI-^XxYUPT*$J;g3%&aHm?tsh_oI=92rf)jpK8H*?+7dce>`?kR zEw~CYwP5O#9Gz20MS!487UcB9~-*2AlFgrF6?nU zCp8%%h@VjU`a)l47+ufj>Hu78`o2coRLJCx7GlC|7fK(?<3`9BxD*K2n!aBkmjszX zRv{+jLg|Y^!B2-wMVePG)E>?sQJ{Z;%&qLt;LtRLyk6@22r~c57GkZYZxNz<xQ;wc=6L$@AUCl8CoCf--nReN-5V``|=Rd zR|A>e(~qw&3<=NEWTa&1{ENkT$CfF|l{1g852saDYcj{v*M!I$A$KYIXgWRr(69eD z><#veHri%ilcW84D3e~;8~k9Lyfp63^?6TF4@5oSjq<)usHYMWcdsV`Tia`}Sy#M2 zh%xsB#FUDdUWmCbAZCUi>;#BOVyfUA&;lks=p*HL*6R&EL z##d&CmXp!|>_BpHLc6f%IuX#ehBKS}vI;8oV!%5?gv~Y&>OI9!EwZl~8n~ZbDyO~> z7F;IQuLzYM;DjnbQ9evBPU%&d!+OBPSQt}+rsN1bb!da|4~uGRd(kibb=xHacTC^f zwW-{)<)%N~rzp#XeDEIf?Sda{S?+-o#2SJv%SD3!La%8Pr}qDC$M>^;Xu9g%D=Dlsau$4M zA$P9ki&8Fv52wemc(z0MqLhj7(J&RQT&DS=lxq082%bapMJe3*h1EaEaX%M*QOdpW zbr-w`HD8qS5_~-b?-k7#rF;lqPr>`U=4<^qI&GSKva=|$F^SL7DTXj(c!!8clc{6J zsHo`Z7`RSwo#D)Iv6_q1To=uC)m(gl>lWa;2e=*quIKN#Uccjd|BmZ(eAic8e|U!u z5pa=kCe3x!TvULI4sgt`<2mN#@f`EHEskZ>7KeHr*QHC>t}I3tonBmeF$ES+U~&9T z_V+%1_V?-2w~g+!Hags9$91>?g*{M5n8d^~uZ}QbDZa!dWnbdbgfAh;99K+{9V4PT zM2E*1JB4*Nu;uZ0f#=iDq3hOla_0nzONk`5o1~5!$<~tXkR-N>B(@u*wmRkm)5det zVV5m-_L!7B(00&3&|{zq&>>J?&|RRZpgo|`pcg=kK*vB~pld;CpjSZsK=*=XfIb5u z=aid3<3MkNhJv01)quVQp>fF1@EYPf;NKA1l2 z8gB}2tf&Kx)dt9&| z&ZJBPy$c!+dIsbKeGkF{h0+Mh2fYEh0Q8@rIiN2=ct4HuAE0TVk3koMUIZ-${R--e zE9h$IsN4*^88{v|9=Hp*3z!5<0zL(N3RnxQ1%3zo4#<}ZM*~%$3d{xO0=EIT0TX}; zz(;|P0C-4g36~K>x9|4nr$-w7<&jYUkUIY9E_zN%+7zw-% zcpWecm<4PGHUrNEo(udd@UOs`z?r~*0sjT;0qg<14R{-HGH^2Rec=1R3xO8`*8$f7 z=K<#de+2#rGy~1R8-O8oun1TL z`~>(3Fa?+bd>QyMa4B#pum#uxWJ_QLSwPc4v7kcG5KuM91j+^t0L=pR1Wf^r1kDG9 zgEBzA3qT-Wgr-KZjI8aAWFA)E_fjWUs0~tYGLD8T-ph!>;5FOiWy**?*O|ITH zGi7Xx+4gem$#G>oh~vDzAPZ;!Xb5N|$OOgBiO`yFXUl({@o|EU}xp*F) z!vdmiD`+~X4%7rBFEk*^zUwR3b=3Bq-Mx+nUU{(Rdg_BVO;uy6(Je&eX_K0~ zQLdjlF3HD9kqYgElaGJKq$ZqGp72NeuKjkmNacQXg~|$(#57{F9-XWL_DjIoQxF%2M26H z<~ga4X~|+~3TNQQisW~U0w152>Vy<_AjfDskk7%PwYY0M+l8lSng~3{d=L-K1JNxp zDs?>XQs5F`9q?Y@a^PNIJ@7M){|}ANG?LG%#?@rG-IqSO-Iu;7WuF!sEjFM_-U0A< zi)h85UvPi2HOIT0j&XF%d^!R%-VPcTka_ws#0>w;^ZD{qU=Bi9cdg{$w}>C0%K)jL z8OVywR))@jj37F-4B^_nd>)@Z`4l>RQOZO3mAuC^ALhU6p-ab4Qk~q@Z)&z3Lxkdb zc{yRp6!i?(H3P$(F_ZTT_U3SR`oPBPdZIQJN><}_{k;LnQg3(&RnWCLUcK!xdNxM6 zUWwXxz_{@XquX{Y`K@`82aS!BI;dM4GsBZN&g-Mv@LYf+UY!;{ev+ouwK?`c4hqTj zas$pAZeIR0Ao(rxawc2eybx!zaVc7a#@cYZXf(9jT(%Hw0*-$RhiWtqc5h4%_cjaO z7Q=STTBu$(02fQ_D^SmZ2K17Jjo00R#Ca~D?*S$~L|VhzHLYPG(mD$#Mpq1{7n`^I z>OXRH)VbkBS6;#AD$a%EwV-(MUV=r!mxW*H%ZG2N;H}2*T;anTGDMY&S1yHbnc(e$ zPqz2F;o~h3q0rhPWB&yo>utPp1U}ZTcyT{{51*)OKss&^4hQPD5br(qvgEPu|AeD` zHXl|sQZv*1PMEAvJMBdwX1BVCP+e{PF@EeZJ))S_PhEcn> z@$$o~a65L1l?kCT*;z}U5_EIx?<(O-81a@O3`pdY8U1j8_W3t#s6u}$pU&VtTfuLt zd0q^&ThmNn`k1#pLEFiITaC7W`Ee@{8%~tlfoB8n044(O0$u`K1Iz_J0=yLXpTNt3 ze*;zlp9aeM+&C3RAlFiFTYCgMr85<7wGL9tN`KD>2zo0D; zVbrkE_@#9(0`p0k;}PPuMY3+Q_*tX-gLF4t^XOHBHQERs!{30Wg9ZiEIPxe%9OGZ( z%K4eVlkG>?i--mRNH-nC6th-O1<@_V+eUcKYk@2Q7qBm|9ykEl02~HXfvhR3fRlkY z16gBk0dlu0!#w_KknDx%lf4jq^5ssFcfTelO3;5iSjO?7>Wr7I<;f2R^|9ctuk_*I zY(tAP7Vk9Do4;5L((nkIVEeVAkdXs7U&%R0>IzUiCUUxuMabeV1?lb{&7+rE;K=RH zfcU_X8=G4?{rJF<+Zx0Lz6gltWLnsGW$FjY2FmYSl7ZF61bNN1YYWBdR;X(RGJULW zY-=+>bave6O!G`&39tgl24)U$p2lZGLq4yId{!%VKytK4pB(Mc7o}Lx97tY&%_kd% ziKg-DwAe}N$~E0ld#}Bpzs?xDdsw!5tzfOZ9ju1Fh87X5|G^n$Z(06lwj~EgwOqRv zkz>uzx)4;rzxH;ddf9IrLe_RPKg%ki9E{rdRV4jjQiKhTy7Dd@nADUrN}Tsf^DRwR zOxu(TY2I`ZFn=-i^i_I%%#XnOv>H4*UOOG@6OW@T^Yc0oogU9Oj)aR?DaWpxPLIz; zyc~ba=4Tl~finS~ljpb|wAH^p$uE(fOhsZJ#*?#f#a7@>T3<&-MTzfBfptW8OasF_ zv_fP4fI7e?3Qt|s@!F39lYn>yZrz2zUw|pVW5874ufQx|3osiP9xj`#4nWqe-auaC z89<(=1|;hieX?%Rhs7F{tmJX2N%AmoMgwJ1SBNR>(OBn5b!@yk3G>Gl`q(oQ;dpf{ zS=xlPB{M#$$t@1CyM^49(>A$|niica4_>Jss~rM)mykZ{71ygt29l<`1)7I(bb-wd zdr>+){yyQ6p>M#S4jQCn#sNHzIw`^1@l9_vm{Bf2W*gKC>AE2v)SPhO@+~5Ki~1@+tl>;k+MI1>0L;6=dOfL7q2fh^Mh0FD9TuBp`?jNnf-W?HPPB%B@}SRA}Jh6EG`b@JG=KyUaJM@<>uXIXZ<0$J&O zM3}n82aEMVs2E*hwCOWvXV&VD=VgYm;o$Ixt{&ORJ8=b&NofGGxK;u!Ko!Vzt^zXK zT_Bn5^vP_ePriFl^7d$QBHMlMEYp&HzjtRHjID24(gimk1UFwGd?mB8*ytXmM#wN|U#c(~15^QVt z8$&U}f|=RDEU3V`1_y!Xd3+<_TO@eQPFhGKu(qQ6*!D=C+v5v|FR;P*8az72(FIn) z1Cs5D4{R`a#-xBMNS)M2Q{xt&D(Eb);Mc`r*uzskfnB+t0336?YWNW1b;t9t8nQU= z(wJu%Wi>n($i{8}@B&~0@M7RFU?Ffg@OCY{1~?MowZMykPXZbLjK+Ue<2P&kts4JB zjlW0Zf2{F&-PFTs&0&zN*7V70O<$D4$}D-?HJ_-~u0t^}OwllAQhTaa(`46<7Wd*~ zs!1)3apxaNdfh$oX!DA~cpL-QykY`;7h@t`|Mrp*tL?7Qs^U1KMZ~K=sRG@rR!l|x ze{Ff<6drXj682|zh8mWdymir=Q0;n&+QJr3cn(7h#nlqFxI>n@<6v0Q>zW>4EvoH^ z-5syKw!E`Y)*`Am%xKZ(br}s|=dBQyH>q&Z(@eK5#yvk=CghHUSJb0#wYXXgi+VJQ z`N-t)@(wM)J37E#{IwKRUz&~t&o+!#my4vkS1{aiJ<}-CGApCi|JN)LA%P-+2tXw6oR7uSI$N;NZ+F#-^cJR6tQ2zca8ArxASs@bjRn6S?x?3 zgSRuTL)?yR*LbvVd^1ubw*;|rqH+YpcY$z6O&j%m8W3MaWkRDI)pNKPIDTN7cq~n1 zuLd>;p0+?JqB1xie^6VX59^nreH9Pmc}!DB<-y{Y=Va5+7j#JDSA<3&3v;waIa@4*EI2E`USPEPMv;&s{=Kv|su}lMyBM3L}Uf?R=Ya0J;;0*}x2I8Tp zIxcSA2|N#Y7jP&LpVzIs1b8p70(d`gIq(4>j2X(`fKLL~0$&C`3ET!;2V^-s2V|Z; z4`hxl0!h;qebRJAUz8FLDaq@p`Q#AOW^x^hO?rF$q{f=q$)i?tQfgj~mP zZp=Mw5InnkJr6vp zrYw1@I`P<&V$8tJ>t6U%I3-Roi86I+{!!P)!&=g0I@QHT4qDLQ+0|QCixZ%|@nnGU zO}DrhHUF48tdZ$;JCD@=U|!CCJz=!qJjaXIGV(oS2!; zp`~Wx;beL9T>ILwmKNR?xASH&uiFrYdY15`dvQ$i-k{e@^wOg;~N|{Wt=JF=;iXB0OvIK?8W+Osb4Ijr)5lVO5O>7$Rc>s@Z z6MUTn?``bqC{!FdpiSH@hB=fhkMgzXIZ;kqmtWh5A1Uh@XUbeFcSj zJ`9L|ikG2v72m+O5;QDeB+4}L*zbVbyj_p}0d@>V^#v49q(>(_A%>#*OZ68(t$bXa z93D-Md`ex;XTJq+FGzPx3%jIVpm#Lp08DNTo9cePot+n#7H@Z zjP}I)8a;~;$Fir>kH1cg)8rk)I(#cAaQMVDF%2C4?bHuc4E%(qPyI!t$LV(<7(v4) z-S(m{05VLa9MEv(kFRRuV2xKI-)G=!o|yu!?wBstXI?^{#(WO-foXjn*ctdDkh8Ft zfWv?<11|?Q17`rY0C`u-VN zLk35L-8D*aW~RNh-?cH^_464^4%%HWtw)^V90A`8!Z#4UEyCAtg9X^Qf`cTxYoy|g zOLaAcFZ+p|-=eRQnlN`?4=?BNtODPIGC;b!TJtcDj#Y+!ovspG8K(C>At-*tGTbci zMg%ll)Jcgd&~|T;mzFv3aY6C=h9Z6&>!jzA#tw^o{ z#v@z-%i6(e?B;uB1pp zb7RZ~<5741Ud(BeTHLlhY9jji#_(sT$8Fn>>8~lwye@AUrq$b)L}aPkFjiKlVJ?p? zT6sOg)M-bPorjlB!7|MlrYqTbXi;Z%+U^ABA$8bOh{b&S2ee$~b>Sm1j>MZS8^b%R z`R|w?-)Oj2>}y%PPjU28r|pAAoJ?pmz9ynM=T`IgqPDl>??DpH^+lMAa%9wu#5G>i zvTV~|a91`CyIh@i#O>U}(fy7_kv%XNWGju~+0Lj&>u))%{*E8)uH|DcK@!8(^CJ*; zgG{jNV3^$yQUB4>%}A`e_!yen3iG-MO#P>-`G*_Vz0bTF_M~Q1D`=d1jI;ksl7Ct{ z7#W3}*$|ez&2fghE8#5>j@e*-96pobMqV9Qb~h#xP?b&PP0kll%&K#b>#H!NIM;cL zHpF4oAsMg}@%baX`FiPfU7y1F`bYH;vR`rC+fC zR{_rj{t1ZDO5Gj6^ML=Mh1UYlM|cA;0r(n1!OR{yqR0Pg6C zd(^{L*qJ8oNoopS?}5eYc^sUTe00fHOq7bQOnT#r{Y(cpQlY*o4WI~Y)|M-?p@%oO zA(oXxuWGze*rxMVhy!sd>KlIq6}yQ`0laUPM|kDg=JYHhNAEH@-Q$Jv}OTMTsEPq0IAKf!j{ z{RFomxSybD2wRk}I@;Peh&KowB!pw#!VE!#d2JPv?THT@2hBiy;Lw*kse}2w(OWmT z6{(e>uYPtM5Y&izr)5(RtvjBB`dM-EH0GTKIW5Ddd&QV%4UmoIJ;3q6`+(GOKd=<| z0FXK!1oB$xmt!0Hg{n zCbLKw7S#OME8VMvsATxXvRneY?S0^p&m5y;jp1EI9!q1l=GWu7IXNdg>4ks&RU^ z?P-v>SDjiNpsUbgdG@L|=<0w>1M3JUP@H7Zp=+z-S+{C6Y&$R!;T^zg;7;Jxz+J$* zf%wEj-QR#805l zsvGqfFLlq4Rkx*yn%O7${l(!JHQJNkTO4IK+|s~C>)_z}*B#xH^N%@97)%S6y`}C2 z#&mQ29JRC~LQM=s!m}Bkq_<(OL@J{6R2=M{ybYlUrfJ@<2Td=t|AfzFi@^vw)>(I) zu_iN%1)&!^D=q!x;aqr9&Oe@&HcZ4a8!__@i03|GgH~y&=hcAtFs4mA8!PQ~pujGa zY2vXg(AT_`wzj0W(!18m1nN#tJi@%-a1$YI(pMizI8kEYVz&hY~ASTNq+zB`tVN7lnn9=Kay;FfqX&p#581%^o zgFgA7f#hXCpX6cUiE83H6mMRa9fn>On?jO4YMf_koZO-Qb*Jg2l{m6-ayTkZeUrK2 zbrdYcn<7M)8f(Q=72$Lk!_4bot%^lAoBa319h388&C9V>PD%dI-1whVv6{8DaXtIl z#`u+uqi?`+FAQ0$&FhBxEl#?fN3px48!Vs9iRmVI2Rx_k^yEk^1_0Y|=++{vq|J`nR1?vaK3##3+0#Lg-GE#z`23 zzr^7od~y_i3{wSjebz7d?vi|15Uo^D-^RDbvpv^)2KH_2PAJRS(_wgg@z~#RY;!>0=GpATMCndXJi=`qjPKWV0+|l> zVH{-d(fHqDuu6N%55TU#AA#L~M}a+oKLPsyj{(mG{sv3~wg7EF7-Q0!S1L73Ub@sI37>63jZeR9w(c^q_0-XY)jw z$;0veY!dD}T-Rv)(pP-r(oX=ITdtvy5&oO;%htflxfdbU3d!;P&=Q+Uqv1#VG6!mJ zUbaq7zkR3f9w0$oS?n-=X7QUTi;%25!}5%=mc?n1TeR zhux9U5aUyS_^us)J$;1?_g67J_TnKa!Fo;$(!+Q7`0HVdVl*tmFH^Dn)fbVef$2Fz z$gI}Vi~ts|0`*vg%+-v9dw1e94+rZx6EQ|ZwvQf5ke+@*hO4@CFMOHxZm^!S5Mwl8 z;Yl1#xqd-<`U{!c@Jm$#hbEv(242_MLT0T`din?HIY-DW#4p_$4|azIK2Q&b4Mu}+ z{W&K{4_h~*VIP&i?XUefIatqmh%p)-^GVNuAU)>`nfIv#F754i(}VS}PcRy|=Z&RA zcYctbf#4bqob;m#DM=4z?he*-fslE~Cp`m$^b8U*9C*=nt3OsAtYYQecgU6RO8C>8)1hvU>Z13et>l%(tH;oPcmEFR8ZHBP*T^OVNv?%}+oak_Xo zTQtt;9?m-&M*#=L2=}#zqkzNSv&iqmOhrZBZ!s15ett;{l!`AdX#wpcOMI$Iepg8! zg37(AdPwd|E%NqdG|`x25K#3{t{7Daq9lNjL&pL{S|czs_=;>##^ z)Z!XFuX7S!zxM+$PWx7pRP3|DTjaC$R^+pNM);*!uV{vNvP{gbioB~HMZ%saxl#g` zpb7a~8nN0xr@96oyVX{eaiIY_?XYR5NPpUue(hOGdc{>MP~q8+X)VI3OPn?3js-;} zv&u@YLS)rdqazZBj*=1l z#wcFCh;NL}Ls!LanJ&~fM!9Ri&qc-hb^DB4jWHiyzTxMrt$bs&E5~&{PRRKTF&Q-k zqq(afcPGbOaBLnzeRD1zE!YOgyrIpCkqkwA^U!Cqz~k9HpUZKMkF&-OvHE@@mQk=t zDYg@kFl#92hDY7fsdQqdaMR;?SvuHC3~*b+dMAR=FeFIb-VB zq>&>>7L6;j=gg_Dn95fuPxYwUR20!^p)2j}BwxB7x* z=jYMv_(HD`>In|k0IEtPi=Pd<2v?zfPFOS(W!S@G64$14=U}H0F4z?3M3S{HhVj#4 z7vo5_5up$8lVAb^J|M<;Dm-(!eYDz0Ld|6cZIriWS ze(<-zRtWx~>t1qicwy_RFYEqlu3vI3MnszhKlocMz)%jvgu25d4j>V!;nT z_REIi%lh6jZu8DxyPe&Fxh)=NgM9F}!1x>izJ2!Xdym_GoxktfhABx&x2<{;8_m!T z#2SLX1$LR>2Y(CfUcnFk7MOUR#1Q-~FgzOp{h_}Fwu6JEQ}`6UeshZNJ+woUI#PlX_ZY`QTXuBNQAWI=6v==1xUSpTva)s~Ab z{maU$#Rs>BSrRN)3I_Q6RFw?W%D_m(UTkUmM@2@o-&a07syrX!7}0)T`8bYp&sRP! z^nT@o;~iQw`HhbkF?c}puZ&Z=b-Q3d@0)IYYHz`_mtETHvKMYDqm}U#ntspsEyUjM z(ckDx;JH1z87FQxpr%v3%%Q(uDZaffc+^EJ}t8T=3p#YCFBRc|hI9}MepI3sD;8F(4 zq#^x2SM$4Ta)m?$}9t(Wz1}d$Z;MycxCd&+Khya3Hket zw%tOaFyVuQ-}sKGl^GXGDLh6bG$n7UO;Wcc?AEq_`|0Vf>F?sNU;QoNXV))bbB8wO z{<{9rM;>|P$4}q-B29Z%;n^&M>!7hA(_nr!E6mjlUzqDPyfGuPA!3a4Q#=n8hf^S( zu3rpuBUWaG!K*Ibr%pSTJZ-1hbq6jq*}2{9S`81%;J|3SI!ApoVe7#NU4N>fF^Bqb z7W1>IExLXKRff&`1ZQ}1WvYILzphN>84li!6a4Us#SxACY{p~kv z*#RG>B=E77`X00#q&rTSMT!JI%JGo>%0p%G~kV(OcNyr0v|-{DxE=}c+qeno@8RWbtg575LUF!N(WvtU1=2` ze8NJBmmv&L`hy!5oB-3qIS}!_yAOt;8u$hm$QkZS?e!12JVftLYmfJMMs;7p(c$eIdMx!5-ft9RXhAiN0pI1oEJ z#e0I50$)UU8Squ$wLscdUBKY?z~_Nkz!!kIK;&UvA@C*ObRhDmt_1i2@G9Vkz#8C3 zz`4LZ!1=(x1D63Y5v^Me{1mtX_&IPTa363L@E<_FKjfdl+kyWA{u%fMa1HPP@UL3< z5#T|D{}Xr!_zdt%AUnygfK9-|K3I6L1i)Bk)2Xo~f&w z07REkHywy=7%x9MA&X3_KIq3`8BRdmY$>>v<2j5x574x><+UUn&;^JA}jf0gM4!fo!Kz zfoB2JfNWb}?XQbLc97(j4*KMl4*EiWf2{>EorRncb&^##7H@2p$Cg*l#is;H zEo^OyD@)2Oj;bn)y|~6QqqyWM*p>ofg~>?gR+Kx+YKkicqv@LIm}L=hf84$b8e#q2 z3GJ)!F})%)u` zxx=5Wh2;1eU>R>ToGzqLi*`if#%49AJ5Pep5vKSa6^R(5freYUwSQWI+f+ZQL^8$N zuK!W&C$ZM3#fL9=2MdDwQD_&1qf8jS--J~bzdozK=!^O%4jHb%%X$I-2qh(@DBW5# zB(1<|OE1h%Ey&8UYV{yxxL$cuhNJeR3`g}z8P58X(myrT>NzsYnwOTFGd3r;Fw~K( zJ^u3f*38Vzyu!4!bg#Tta<8^R5<*94^^h zEr?KdW3^xzdcs~Ze?qPnpb_$SAyx|pAZO7CDOYGUh#7BfWwoG6uVtE6As1lXM+2iY z2gzBjz8epCI9_?8{1}CX$t;z@8*)`41C{$`$h@zuDsT|MRR!e5saW@y5#M5I+dO?P5ys-8&Y*6xSW5;`ZRuvn@>Hyp;x!b0cJ!cF`7F>Z6fgd15iWW3o%n*g zH$Hyb_Wt2mhKsXe{od7o4MVpBF5hN+26jK zJs;a4)(C#ErF*~N2V1(&LLCof>7FL|!Io~0GeTLq_X>WnrJMbHtRdLaT`Bm%mTr6t z0rH_O-Ba1b!`#s}vuaIw<*A!h|7RPk+mw37VUfK?1wqFq}BQPSUk51 zKZhdGVx&x8>t9-?t)?xOXp7c=TM`Ei9W>ICuJ_`W#8IP$Uodn?Vv;4lxaKNLYH3AT zjRj+5jMMpjLVh!`BhnR(?%fPKR9D!i`rtc_XJO}bl9H^XE8}4=sa0IC3T(m*It=|F zU2MQ#9FFB*7wxYrH1RK9`|F0!3h^%%-)9_);|&;r%QQsd{GD)QFXc=nQAt&bm1USQ z8Vt(}hA@NC5N?RT7T*{{tf8mDVi;nu8m9Z6Uq7dQE}o-1{(9iAC;ocjuQ&es;IA+K zPQ#xSf3VyyJ49p7J=7*%+@jk0suSb!`j(hUc<{ET+qM>8NBEEVc(lwt@hQ)>b1-UmEn2)s zaYhv2O~$p~CO4b2n(JGf!_=r|+j=XqQnjrwavNM>;cC>CSGWyoejWVy8jyk6jCZ;u zy|JI^;|pE*@C4pdb${|NbGxW`zxbkQP~0Is`IDOO$ldguIAp6iZIj!!1`p?DwNHh*Kc9YvoEHZY3}JoR|+fd75*77R#w!Bx2Vq5D>t2Qd%D54 z0ja@5lj@e_Hy1~|W?Qcu?2Q-x+m^2k&u*}-S8cc3)$r_tjG2!2_H0AOK9`XHwAdQB z>z``=)9zaxNQdV|VXIWzL%a5?`HvZ2X^dHhDuJhw6Y^KN4GHf#e{9Tc5f{4aGd2IA z`nMc0(lY+m7xiyBf5vNqI^r$UXKgg@#Jj@YMzS{WRSKw??uifC4SCb{pcXrOCVygH zj@dJwhE&u>R%pE4BNdfKwXI3sZC+tvem%piIqO?or`x$I`5ES;d3i_1OnkcjZ6wZ| zu~V&Qx)VNhPkh?A3rQ8Z<<5Uh-L`9Q^82;@8u1>nVUy&`^VfAw*of~SM5m>@UJEle zCBI*DNOj^$8`N!{>oFO%vT^-na7KzEIT+>oDa;uy3dDTfRe0_lCG8f;Q4I}!*NSpQ zwQ9&)ixR#|MfrA2*tqd1-^Tq!*nufH0GZP3{Ao`k=kp&!5m+0hZD0u?U)|w1ienl! z?hPw4@NPp6@V=w0@4bc)s;d7BmBfv>ovnCJP=uIq(Rv)O(1zMc@VHfu7N-b>?}}ra z9-;ghK3be26wVdo5#2FimA>;mKD^Hp?IrcWBh~@#2kMSfTsBucHyvMRdaSZl z6KR0uggeZF0_CwSE5Bd6=aoAz3`S8Y~VO_@mb9!0LK9JC;v?UXyuYg>S zK;G0n4Ez@O6!1G>6YvP|H6Ze=ZYz-M4}60!*B|h160z=pcctJ<^mw!q$n^%UL;ME( z64(O#9*Bmat^?{0On!Ce10#SOMBoYLx?~{N7py?8FHF?<(}A%FmjSunP!8mJ1ML)C zZw#F?s(TUG5BL%ATp-{4d>-&K;Q7FPK(0d^1#lx$0c$<1gdri1I8w;2WZGP)u;cLDe9khYak( zk+1yoau|OYBsspOU7D-#92_Fp>puM3dQ?~@#rN4p_DeEwtdB=d!2q;ZS^+eh@H>>xbTz1h4%xMKt-=l*E)2-MA{c z7prxYb(E4)frh@-$WrzUt;ZhcP&`dgQ&wG7<0z^ruAEsWo;9!+msdE^i+GkhWH)#6 z&m@Sgnc5=5@2)Z=jYt|c3Z`|7g{uss#VW%v^ciSQg$wmef}^7rsY8fWhCDNtr~~Az zt*kP9&2HSs2|1q%&Zq}*n`G%rADXOH30`IBkGL<-L`CZ-g;?oBJ-dKqa^-Buq@E?^ zm{jrXg3p2+WBTKMxf3!kUnJ$m148NBgX{hEVk~>-d*wpuv*WxyF2yzk-eYjBrLR9C zZiLJ;6Qmr6siE|7sBqRqDWm^}N?$h4TM4;mCrPQ+uD1lyv6C^p0MWIUzSYoo9b|f3 zCgpfLhf3dI@N+a7DH%HdSRV5scgy9+*Y^yfUxUmwS4cTFVWF;<`F96oUYsW7TDx9W zy&hMhy8_W686ov?Wo;B>E-n&cqTva3y}Z;aO-4$F)`xCb*#f!U(~qxjCZeN?bxjgO zUGH7ccQxcXu>j#(D-X1rN(yA0nj8)bdA&^EQpns;N^Py{dlGRQA%kJFaINV(jEKdM znZpZ$iv)$rzct`LrOCi6T&U}1eHlLsd0j4LTDx8hHjA4D!W0XYu*?l=LtUXc6G6Og06*G@pLE95>r z0lCv4_vH!5u^)_DfFBjpW~Lj3r+Q2ESydRhoM47^TdSAz@c+V;$%K1yuUrUvn*ojY+4 zpX9Cv{SimJoW+KR8hJFIcr+-Pd8t`)PXxnZ%7mPJ8zyHm+Nc!B4HAqCS8P+TW5RQ6 z2ZSe#OT`RN3P&hoQ*msp7L3Gpi~M}s*a;p1laif2E*%yjDc=zrF48CDWO(AE1j7^5 zp2pP0W5mOm83mr>J1OHQ6pXWZFQzljSa?~HM}b*{J?V{ACZwk2c@r4N{U2frNSv0U zE@Fp>VCfgtl|n_ZRLV5RGw4Y{H-?Z2o-=kAdq_N4&_e_%pyzi_B|mjSdbUSjFC{O> z8{1n+&$gxKdi3|9{;Ubv9{qiljDoR&52)&CJ6*}Q<$FZWP{v<2HXW9=|G%DI4cb!^ z^7&W4Z8*R8IBSqfKJeQQ&4Dwos&Xa@J0OSUE}pgMp79Us&;OR^TQj#^wCu5z2j;mC zJ~;Ka9ZpQEPVM>DrS~1^89u#_z31!Q*3E9*G*rA<82J$V+$&yY27d5vpaQ`Ue(v=) z!4KXIv{&$hcLSXrPW{2VfoQ;PZ8wmO^OjRsa)vEKyqe(O&%OHXK&f3&JC!RA+9s6$ ztXR+Jg?KX5-uBH$|K7xOB3r%wTc4Uu(w@!L zcKozqkCDG7&vv5rcx3i>RC_l#wZ~p5d9wCPwyw#OBZ=*w%3$5zJn`)2YD3w|{bTL- zXtl1%lWske+Wr7|tEzD>S+wnv|1w9~^MPWT1brE6p|{IL0$Mk2gZiHpSa*96vIR9Dj!!~Hb z;Jf2yoF9uBrWqhiTRPqkgssnXEhr7)eK;N&Xo8L31fx^OTX6n#_+dLSU4-yEI6sVK zrrDtL5q=uT{9FkdgYXd?4`ZeY>l~);iWQgAH8KhQxu6k<-;VQ};kSd%LHIEs^Lqs- z6X8QR9)oTZZ2cw}fjZuW^OwNC1at|)dvJaj6HS#M7;ihi0PGC99yAu=V~Q;QOA(I4 z^}Dq4zZ&60#J>XlOm8vhOoZP1LHJu7&+?oI!cI<8m_e35Y^kQU}oH;YktoO__Zv9u{X0xutJ)p{KEw&K% zC&X9%^SenRn~fc=ck6!z?vru9>DE7c+lhT~KL$#k>afMQe;~fHCE zp~G`-{i{s7gGTmNU_My@-o2PIE7b~Ns9 ziLdwJx2eQ~qw0St?i2BU$*up{xR1qsKd9$jh%LhX58|sl`E4eVcH7~%ZvC&qJrwsl zZvC?tpLjg(r$EWmrPy(}e{}1Af9-!G>8t*yV>1YUD`;W;SRd~9@K^nxhE2nLxm*9| z;LgGQvRnUiaQDLfM^N>(4m$$(7sOZn@2~wo@78|>VR{h$ZcyRZV29yuB)-y{icQCT zom>Cs;U0qf4Y&U1whl(z48AusQd=8BXNI4eAVav+W%I!{woR7lkoR~ zDzCNJLfm_Zulg^=9*+A4xBge)J{k90Zv8L7-52-c-~re=Y%%VC5?}SdzxH46)_*x+ zx)c6RP~ijE0^A=HU-f?`_AuPnxb=T7?p)ljyY+t-?o8YdgUMJMI~wwh+3jwSp9pq_Ujwg~s<#8-KS+W*aN{fFBByKen2BFyoGe;Q1|UWy%uyV*)j@K^^Y zcsyPB?(wh$Pip6c1nZClPkgt8JnQfTk1v(aw$c(jaa|LRveFYg83!hGuntY|Bp#Ho z+VYY0RIWKaIAJyM4^jNI&I#=mzg@S48HztWm1Eh&_jXO_ulQL9CLEyn9S=&_=)^Z) z_>&!eWbMFgM|!)H*)Q+NkCg|or{0O3z!ZI3Z`5nhX8AJPH;H!!=(Pl=kqxVKlX%D~ zX&lU7N*M~-GT*)S07E83%TGpE1W>0Y>=)n_*#0qBWh;)t&<9wzrSiuZkJ%b9U%s@y zM<^5sL=nHf5k*j~<2&=~a}Daq_%OF)=b^Y9!-u3K#+O_jJD(C}>L{?d&WD*_5|TbM zY?PuF zaRtul$a#SZQQU)`6gVdy-87Ts9GqO+uHK`J*(Dt(+NZ^zYM(tMIJv@W=b>U}3#xCDorg4TAZXyn)at%#-%45YcjN#yGxkg9IeIQ}G$~5g(bq*veZ^ja zRlR|hAG>hNU2!#|SO0J%ZMe2zo~3`gP3px>^WuVeX?2CWN@mp;?mE(LK07Vsll=;J zYmrj+x5{Z=nsXeZaVQzE^D^r5j7)Ltp?$qCi;r@fzs*bZq^#LYx+&{lu%FrZUSjqu z=o9j8eDp|o-+e(&_=JA)zLd4M;I^OXkuoH)rdvb>O}&Ti&}w{_MzQge_`pBnb!K5- zpdp3F2R0-Imi6Ee#FpAI!Mq-J@fP#dy-{N1yiYK%YbfJ^&8QVhB*(%0ES|UVlf>^{ z3A`T{c%ehEbM`B|jw$=bB|IoMug8)wW8p@_bF#%kb8;?^(yNg_`?JA-2-NtE2~#6W{5*zP-uIF8^M>n87_hUUfbCMD}8 ze;8FqyejXR{Yt%ufR?GOJqdvyGpdhO2A_iIW^i;^Fc1_Y8yQt^OE&T{s6ubBBtG=C zEc+RrM;_J{eyF^pt}FaVPmkaDNg7Z8xXq`l0Xt7`r!wkwnI1p%ryif`Jl?$X!71yX zv0n%dPekj~#>Pb3mk}Jn#jQ=DEd8tkpeb-;uT!^*h`XjnnaPw6DCI|AukN=v-2CKa z1jo|{s6@K{{KtRGrJg+ALQ?m1a*C8zVH!xixlY2(P|BLi2xaH_ayQxAQHz#Rv;%!+ z9M!0DA`P|ANnP6#Dyn9{16=mj!Sj79g*JI^NxSmvV-yMg@F=lS?+)$4*gOGzM%DQi5G7K)`- zWWS>FOIaU(Qa(9$^4Z;9oF1&*iMSqOpY6+CoKfA`F5PZFXV>mrm)@>9&u5o@O;#z# z_}m>;o7`;KbR(0u)Ep9;v?(|a zvDh6PmueU94HltWYF{uVaBeRvSUtq9eLGl?Q+ssoQf_Wbrs!>Npy}|GI)*VT&~)f| z9RfeZr>yxh1&`-4i&9IPmv)?D3XdkFr|rb2-php4;{4M-+NyJRuW26CB{TJ?f@+UL zFGboZYc9ee@hTw_g>^>{1#MMcJ)+C2*Z-ir)^6w2Pn7hTY|#DHqX^r{t@@HP)FS%W z&C2l2MELjpSIWbAX}R0m=(A3sg=I%czCAtzNj}KVOWoMiK^<6rAEbrB0YNfDPGr!D z?xE{F8kHMAqzh5Ub)0juOZjU?588g)tGX|ZG7YJ#-_tky-Yur%WYp;?C!G~q?TVYc z&xD5pZoAcBR_|c|vjWRBpxaD1S`LTNIWvW)%<0C!rUYgJWGK+oE@e%nh-L9s&EfV- zf%n>@J5ZyW)A!VSSXEh#Y36;r)qNxHbNo-ekJsrBpLzKc6KU!VaA_AWiwoe6CG zBrfm|Z@ouzB5v=Q)$iJZF-bS3(e4wV7nrd%EDL9ppqOV&h#%cPKFg zIF#6I5{n)5!jb6M8iy-@UN`d#DHqiIMHSX3JRXiC;h&PH3}z$r^Q+&}>Adf@GqePY zx8!c2fYx9w0aMXR^6!@@W1H2ayO+EZOSd&ol>M3 z7t^McHIEUlWJ+^wgVR$MZcz;vH)ZbZUAWuZvAs>x%e*GCuSCL4%3Dkjc~yOgj>fvxS*%zB z8|Me}#{@lf=kG-pO6u|_)#p!AUsy7JUYEN3#U;@#oTJ09G5`#Tl_^@4?a{3Ffg;HUUpX1G&9-O=#osof5@(@0$YZty~4piEjL+p5e zRCm4l7(4zldkZs)l=aUe4!JKaDOA65=l9`qG;utI`$iMLNHZfd`uubvOCPtlZ~P>6 zR^W%!>Z6z^NqOjkeWnLs45PGX1)b7sJcD|ztq$dY)5DVYFRFXG@^z%i$HC0r-yiLn zyf5tA%bmhF!0Yc(>2GrW>hn(%;#5zv?-# z;)Tvm0=1*+^1OQP-s;|Z`FoneFF%@Tw0C4cyE;;5q{FclqFdeb4cly=3@$-YIrH!jw?MQ##BxW-u z6PnMSUYCdHdz=oYxJj!fBl;;3(QmZ$h{;>%lr_n+S#*_z(>blg&YMm;6@d*ob@6#6 z^WuIoslU+8GAVL8_P`GeM_p-yX0Xz_Iq=VRRn@Ck?3Rv#s(E_d6%EZyj?Q5kwL5rD zDkT@p37!^T5*(isJbQ@qsKUg+=0uxGcMdDqAakt|^vxW`ZelJb`52rmrMp_#s@qRl zdlGr5U%i?2Iknl`n5it~jd3{SfrIHUGFdchG`oXVY1`45i;mh*Tc9ZxNgC6?jYy+e zp{O155CqaRO&;GyW8__(MxFc8(nr_O$v@5`@7kNPmc2U8qZ=IoT1RY8S^qsvf(Gi{ z#%QzS1AE(O>a2U|z8!nWl6R*af1R77?`?&9-ur#-k4w&=eKPUX=&_0}$}ZhIBFH@S zrKc%Ti=3fHxIp@Q_oX~s_(HIBZ_4_2Sn+zd?)cc=IMgupy-{9g=atyS?0@_Wk?0Vc1G{j;Pl-f{>Ev68 zghYXD%U?kh%0fDLU3pma)i03;vbsNc(45L+>i>Yt=1E+H)$5kr`XycL`aLOjDHAy6a_A8EA8wb1vWCojBc$^=K6#xdZ(Qwnrupqvmq*XN%*T>=8kwl~s4H!p2wC!or=od1-BQ7?bIoBl~6b9#xw2p4yt!(^A%)>%Q@E>O98o z{W&k3J3hVUl*rKNj={Ut(@Lxx%-+xL;0PA^O=hHeL<4ylW7RZwatysK+|X&HyGTUSrnhSG}Tj-=vms;Q=J|-H<8W6&B5BYYkISb z(bF#KcxvWzfpb;R)iDJfEJ$O`5G=~Fy99pdQo}|aQo-go2a>}s6MDI)9joyMG!J;9q@|)kSmJ z+6~iEhHZ5A8VX-^Z*(?OVrjdvSt$MgkNFK*sm8X`nS1Gr*4{rw;83feertT6g{m;V z(q?n3;Ym}#4Th?Ly2DTpLOF5!u~>E}=>~Tw>1lPSN1>`rdb$eP;Z-GssBfVb8{gZQ zS~dRK>fk+K7ev^ z@IJw{+0U;&1b3*BPz&I7wWdR94${uL2(4vh9&jqehu zmkgE4Zx>FugQ1*o*Fx18-y5N74Rs6D5<}eqwbW2|L7ii$`=FK?>Om-eLFO$Vg5tMK zs7IjqRTt_Bs8xpA0OdE-W~kMM+5&aHpCuLp4Cv z8EO~QC5GA!b*Z5~g}Tg8d!a5j)Yni~7^(^CN<-~~l5`_L43k$GDjw=;L-Cn|b&a7q zLS1X9RH*X|)fH-uq0*q%8Y&&?0z+j$U1+Fy{(gg1*pSiTXCDrP&lvr#hp3s~^@_lJ z^5p|V{{0N0lq_pB_T(6U1|f_S`b?-kG5&uuUXohpYptoYw!Sg?YLqACK^Q>R923%4 zgYvKgQ+**W=p<$ssI)(T9|NO2W1JC9HPR?BsD=qX) zsN-`ktdz#0(y$aemxn6aF2?Iw@aN2|on_M50wb)ONFhRu`MUcdbdP-lBSFZhP2GiK z86)JYE`NHQ^ZR!#m?J;109+21g6DzdAi8k;bHG)gdP{WB``3Xd#an*$Y~rhLS`FR? zo)79-0q_stTJT-)LU0eb4*VVrg6O8PE&{uQHrN}y800s1>rzmgPM3iN;8kEb$nAFi zvqA0(F!w0j00vxs5WETZCE(5AZ@^o?+rV2vX_UDQydS&^)QbHcP@BH@g3>d5ANVE6 zT?78_Ky?53_knkS?c&g-1$G2~4|WEx26f}kHQ-SoI)?qnfXp)dXMleMOTj;Zv%rVJ zg&?y_)D1HBf|P;vB&hok`0>;aZ9NTQtqtG{;4@$oxCv|qH-mBXqtAlU3-la#GFT6e z0G|h?_lLOtmEcxT_YS-WUIlVDf?xWI(NW~z0B#3g0=X-}|2l}SBELR3LRXQ$GsxWu z{;uHb;K|@la3uI9I01YMJRN)+ECb&G=Y#Kpi@*l(Jn%ix4}Jjt2HXYS1bz%Y2R4G+ zz)!&U!9C!|;HTiHAi9$LUxJ^5`@kCQ+-+~z+W#{h&{u9gt z_kk0@e}SdokKlZevh}Y8`H01TA?N`w1u1L)O(1#mKL)-G?g3u`6BxjEfCqrDf?dE} z;K5)#@s0rbILO}UBSPA-N1*zgTSZ3gTZ?65O6zqDEKCL7}x+F4mN^EfQK?$<&F#g(O?F6BG>~g z0FMDjfyaWUg1ta}340v49Lxm$U>|TTh^{LCLtqy80oWh>1RMbF1qXsZfH~m7i6|=o z4+oK9{{Rpf_UC}7fO+6humtphlfiuOLa+b~g2TYe!9wsha2og!$X62nN5K;CNpKAK z2FR&D|GO^#J#aj3eFiZB{2Ww#4-*l^ZwH6SOH!I&H=9l&jN1-7l3~O7lDt1XM<0HRp4`AHMkY50bc`a!M}q`z>h)Nw*NEm zT+qwv;5<+tOr8&(2nN8x;5u+NcoDc7yc}EyUIAVL{sz1nq)+f~2CoLUf!Bcl1g``2 zQ|a|!I(Q@47rYrP25$q;0B;2=z<0m};40eDa`0K&fgjujt^sZQuLge)-UQwW-VWXk zZUFBE-vI9ecY}Wb`!d^m0L%d&1Pj1Ff|I~MgQtTJfoFn$0j~hpgExW?gMR>@03QLL z1fK+-0-p!z`}}_cH-ep5DLn(Gf}6oK@L8}sSP%9Dw}7XE&x2=zTfuVhMesb3KGc6L zxC6Wmd=>mNsQ0S}-vGCRZ-Z}we+PGg?}CjWI@$c6f{%h8R$tq|gTN2Lbns&^6Kn)W zfS-bs!98FZ_!(FMeh$tC_kz{nm*AD)H{dPc*Wf+ix8MWd58!5SANT_JBe)Z62Hyc$ z9Qc0(J>U`i{uu{mgI@4tFdobY`RLd`8|(m9gGu0HU`Ox;5M6Qp??J{Ce=4(~1Hsu~ zH*f`*23`Rk0$vXu3f=@B0X_&G3H}8<3Vamo4sHT_fX{*x32qp@DkkJ*ekdcJQTbf>;YZ@ z_64s52Y^?BKJXfF6nHJT9J~(ngV%#W@CNV_@J8?|@VDS*@D9++{=@IUH1KZlXz&kU zFYp0y2>2j)7WhYSG59BNEjS4IzY#nEya(I`|9)^i_%Qew_$2rQxEW+E?SCG88vHx> zH}C`Sb?_r_C)fzS0e%X;34RW~1vZ0!2Yax7ZU9Tc_rO))F0c+<5=Z-R-E>>l=~(A} zCQ;7!rlOLp&-fcKyf0iTNw-~@y)-&j=CswglJq64*`r9dl3glES|ZKI(tsc;$&!j^?FA)U&$v{QwH->kLdll4YDFbk z??Y*SDB1eRrIM_#p|n$!Y&E%5lGTn`w%_oQTq?;*gIaBP=`NLI9S3#3;q`MV?!1Cp zV|YH7O0vd6tu;L9BNdfoO^3R`@G4v?$*O|7(D0~hLnT>jpw<~4>nB4cY2{(|s*<%9 zGE|aQHD=c;S?d@>C0UO_*(R<&%oLTRRe;&GO4hvJP)VAxoBgX~>wT9>vi3qF zOC?!Tpsq1I=3j>C23}0wuh267cdlZ59PEEi#3DO zKKS-}JX`;#PSG!}qo{Vfw&U7w`F>R7%Jj9U;2tP)c!mOKZ5mj~7l~`6wRGZ~7Z0QF z^fWK&)x6!_$wocjEan7O4dh1wwK1#aM0;Eh^F#EGhIyV6!jVq%cJ1gF?qgRz%^u!k zqKVBf;AfVZPyeQA@BOQkMeWFyNq@@3uToZ7aE7Ns`1rGEc!ntctQ?*-E9Gy#tlfH= zJ#I|hh2~S4%^h>MROQrN_ypO@-LkY_=C-=k+xZ0+CEW>Q$ar0RAXqTQE-J~a@2dzc z_$7AHe7kmETVC_|x#Hl+EAbuUz*Ehm^<7h8Vz7E(@U-;o4QG~_mnbtoB^a`v>{VgA z>Sj5Yq6%8=NlJmD_)Ni#p&t$JNs6bBTB7}RxW{8SPB`^7(f$+g52bc8R9cMx{l;HC zsIw<|H`qUBPf~eeifzpVA7aknn9!c2u6Z!~l6q{&I0+gT`;yVyK4`nHVZ!0uqiObm z7S&djS8{A)aOWa7dKwRrTLmT)a;vkDNyk4*_w-JOYyK*)cR{6LUv&AmCTJLE%masj z4}fFA2f+#8pTIKkAy7T%UqJPY>%oh_hruhrt)N=y6W~qYli*hHY4AgE1NcvHBd9%{ zO(6FfTAM-i0$b05+RJ$k90@)TP5@s3r+`X-DtHg5vX)x~ISuQKZK9m9O;nP!92?(c z-JfWvB;A1M@_L4O(kAT09TeuN892O>Fps|AR4z+E$aC!B>HG-V-yYjz?ejIq*}j3e zI;a6Rzf4nYUXo7B4K>{Q;pt?@%HA-obdw|UrJGdX-(ZKy$2Fr}3`vTFTXe`4#`u40 z0-8VOc(dw1D@Hh#rb3Lwp5ID13l~-x*~Bw!ob-${MmEisqy(>r8(4xS_kbvOl;BNw z*#hN5f~STu2`jUk$%>x#33v$j8Q2^A2Y4d*Id}^A1(*kZ2^N5RK)sLL5`Z(X?ah!c zD%o`PqLOqysqsy=Ho8=j_17@(gKGALs>~kG1WwSp*s1yksEPG}k*{zw^CSnO&TUkR;%zYYd`;G1Ol=y_#CXDTleJ1VVY<2Og-f^bkh@aiC;09vlU>1IL3L74)A9as<+^(Vm?_|CylT>%HYxnNP*G zH?s;+$-0%-@RD?|s-cpt9xjz+&ejztQsYP1Bh!I{IeQdW)0ywIgLxTzaZY6V0=FxO z^aMS`cg^uGh6+*@&fLUQh^Fc1VNZyuFvU@rzE~}R9TOUcsIU>0Gb$>pTDA93NU*KS z(%_^r7(x-dvg35^WySYU5r4ul9W=V~t9G?dV1VcT(& zlhKV2rMdldY~-$yHMm0NFD?r8b6K8G9mxy9zhabVtgb1(LI9JPHHVOq4+nL z9>eK>B!FA7v3H3mPhRYwv1>ySt&jkYTsXI8Kv^s4bCM)R+tL^6Dr)dwI(K2kqNVv< zB8MhHr>pSrm?f1})$~JL2aw#EmAqMAGE!B}SWs3yceyijs#N-z&`jwD#~GO^NuVEb znF76w1X>B+hn0C0dD8nm1s(-%041nzgK7ZJfJ4CNzygptt?6xE09D>Efm6Vj!TI1T zU@fTlD)YaAmw~T?zX5lGw}5YecY<$$%8SC^4?Yd5tmRfQ&c-_PAW_adNK}$lK;Pu> zid-tmthybZ=2lL)`QdPj!#o;Pb8RZ(JujuXHqi)nU~_8erWE&y5&1L?1+Gk*1K|-V zT0SK|S7KxDtXCYB??Kpm+mxTy;zQ7oX{+;+oTzAGJw-ns4ZM1z}5yaTO{Xe&#x%NoVe zYf5C-x2g`^RM)C86EbAlstspqs3M*d3I^&qD&i#URIE$`eZMJUP-Dl(;4$ECu$Sx3 zbKM25yTo-*06!p{@~!Zy|Cv~)YD76zBZ{pM*O#pjmvRR1$%%Z~f2utp9T;a9cU=4Y zvIFb$a|pxOU7tThMCqnerv$!FU3H9IHKcAxr$BSY(!QCxZ%i8mMqu;mJK6RQf6d zxmA8Mu+FSclr!rSm1Mpvba<&AC!8ZRg=)_|Ih?P_Uwxh=m7`OpPU`cr%h`Ys?&McwtLYN6cV$)W~-Wutxd&IZ4Sh)X;qsODyu7NeyZJ~S|NHn!Yuj1J>wkG z3>iH~H5J`#1C*SeeF3PNS_i78f}m;&=`+pP27BYa7(5P?TO+9ADc|C&2FkEbvlZnu zTTxE4b$Iu=;YM%Y^*X+eh}g6z+G%H{w4F|Bx#kD)g*S{Efz6K~eh_<4 z+tM|lm3TQx65~Ib<7s1Ix``CEqeWY{Hn>cI@^crq8}=cr%;iXr@_04KsA*jfb_Z_& zC2co?s-@q8T7lmTo(SFws^7Q`917kE7K3+#r-S!^mEgVLeDDFV3ZyK|JnoO6R?_6j zPg<7Tq+#5|HThAw$zMe>9qY{3L^<;{QAxUm%lIanTd*8nR+y*lW``G=LvS*Nc&6V; zS>uPS&r<~>ja?luRqP(eu*Yj?YZrLm6D-Mc&ybNKtu&7#WF?#;V}Q$(fRT);y867X zmS3(6ctDN=Dl4mgwT??De&noAs}Zh;Lb~P_7tI5pqer+eaG!;ZUE1CP&x@tTth?Km zy3v)Di(3gE!9!-h^N}wJu{ab8yag+XO2$@TWoV;*J%0gs2)GE8$ zd~i9a>Bma&8gLb;9!c@_4sxqxN!RV)L^=JND1NzeeUnW~b9mIYZoQ>{t66C;)sEEC zz{*66+i+8BQUa$W)uiwXfzGRHU3*GW?XgjZ$F)8UZ%E}1Ppe5Htd1fOmW_#t-c9Zv zmX@^}YEsWEt8aG%d2oJlC}p);KfI%A+3a71A0tUnAvqgZ4mAU}3N$jLt-%#C>hffa zV1conTAlHY_-ld_+Q3(%W{5B*6yGPN+XZT;oPK z_6O5JiRj_rNbm@7EO;b%DyZlEqT?xyq=BJFo?0{Bo-#xyjoa5t)uy#$c24HY+0O^33<>;@Se0%s&AF&3C-6z) zx?u+-=572(VsL2=9@U=^V0>M1VttWb*QzU;Gd|QnIyP6w*DamXobCK})w>{`R>3{j z1&M)E;%$cg!o->+hI6$aGGSMDow!?RFezZL4_0?&YCs<(^C86KkE>Ibg|crx;nQF}=Q<(7RDD--h9Bp}{(DcpAB8}W~x1ZXC6bBurNBwz{t zu`9y{cuM;n?4Me*L)F}g?kaGsp{Ea5y;UTBmdQ)@b(VouX5oc7Q7KH$XMBH^B_>ZBWCG{FQIHRn&8_PEm_;ids~XnY}x_&2BiS zsEhf;!d{V@{jKd`f-`brpeerkL^fUmO>u|4vif}weeFf*omM~7OstgkTXSEi_4@X7 zUh@{G9XIUh@TlZCbBn!kcycUbVV%MpgNo zpV_zSSF|}gdZfNp8PF6&eXHC`w-$?*M7OUs(r_)TkWoG)4GMa(%N$GXN*eeg-mg4P z0@WE$2DO4Z6+8)?0-ge*tAmA&eRXYl}j6Y3+dSN76unHhKPyH(w%WY+VG|G?eG zXLv6r3Blog82Fti<_Dh4m07v}Oey+j=B6p3--=Ce!e+i(bF>o6+!UM0v@Da3Nx-u* z%O2Zn@YpQ<6lJo)&&atOs}sES1Uj?K%*WN9SbH$7Pz^fN{b340XeIfdz>`s_%EU_k zdk#D7A1nEPkMWO|eAVPdG5)cVuY3-Ok$mMzQl$d=gT&4lPwnCg)O$KV{`^eY&mgw@ zu|h=lEBV$zTU$z5vaef!&DRSWGGz4Qkj5gd2(_;lGRoIo*dwv=E}!$nrX>VG<@o~e zAds^~<~N~>z(KetITvb`EU-U8-RMyN{RAJ3s$d2*ciVQ~tGR%*9q2O*B zv*yp3U7ew=%}}CMcCD(bt8?;pO#=Nog4(e5Lp#@iho}J<;<;Cv?B4`$5(1c|E#0TIR*C zvqn0U{>o3rgfY}n`b*ddXDAG{ZHLqP((@kpE3X;b&!FY&&7$9;9d55jGxiQpGR~#v z(dlT4;q~a)rMiHOE%PV0PDk1IdUU_E!pO8IC7u;^Q?;Jp_2|<+)2vWjeGFn6|k_bekW#gxJ|Ij*}R1-$!tk^Ofv*mAe`E&s0kCD zpF>)uqlJOjqv1yB>|Qc#S?hGtO_;p|ko3zO)+(LD;d(u{$P+U-rLn4YI!EB+w69S4 z9NsD&4cK1KmHLaF+3?A0t<%XcVI-)bbdGG5&QT^zgZ^S4JAd~Ft*Lm6r0;y;V9rO_<(F1T*&Uzunt9on!E6DL*}1rE{zaQ=vpK z6aReS9j(*pg^$;>A?m%3ZIzC4;`L~nr1B{qKYMxWbdED&Mo`Y7dhc!0DMLqsF0{iN zpA6GuINuzIlN{!h%ZWKM%t5$}IUvlr)a4u%=G^FVI)piQyPQM9oQGY`VPVd5F6ZDd z=T(=}EzEh(<)j!+*^G+$l~vgT9H!o)th}l`a5!ke zFo#YeVbFqM>A**XgBA=OpNw#%1;f%|@^F}Jv|#AtO_!sbT|}O53UkOIY9EjA{4onh&4a)g8K3`@t4qd1h94j@Nycncjlj&RVOVd)TY6o+T&IB|r7?hJF2 zN|-YU7Zhmqeodf0vO>amM@y43|cy_7Y>8k4SL!Z9A4eh(K{zh^o)^Vn0|~(G3Ko< z1w=+Xjk(U1d4-9yqGR=e<2CBX6fp6o?lU8?UT|Y6Ov_k(O)N5RO!~MN`Hds=tY$Zs z!nBN~vBT>*#EE1*_3lwjwL-D_x`e{CjCH(;6?)bs+xPx95^IJVOJQ2ZQdxRERDm(K z_p77}4?PRD8^$P1%UCo9Vrc}I$?kY>ek9i8ZY+gq8B4XzOjuDcxd(3hJ`(FIHvWi-t$6gB)*b@uClMBe6IrZH&US zjHUJwc~<mq38DJpV5>0-(=yf&IFVL)dhs`JMPenE2KJ5fJ~ zg&gKMSjgdgjn%?6ARN;9@Gj(OzPAiHA|LaIIQqJ}EF9JS);i>=3^>2cggB8O6G9x5 z74s2Ah*M_n;R&Z%rW>WLvZyk(%35sAl|^k)_Xumg>M=O$L~H2KvI1XOR{jXzn34I# z#UqRIeBlj+p@W<)o1ufumcq~;d3nBYgfYI6BSseu%PTDOxjQ}ti|h~$9pr2gwTx8g zD=Z#YR4}G!98WP@M?(iWdq+bDY4fOM=uy7>G5Prgc9udls*;XP_WlhUCg}$P3 zV@HoEEGhPdf->DBH|~y8%h1DoC8G-RM-Cen$&T6U89GQ?Q7yxc^^GaY%NtfSZgeED zvqv>_kQ>R}5o!^yfE-b*!%On>eQf5C6Sl904swDH9ki%w=%COR5U;})R-}kW`9=&Y zEGa1(HzM*x?Hz?;SGV#0qkYt3$?$wCG+e@b<{64Ibda;-)iR62eZz`|73U2rh$;u? zK|=@gPlc!Lu%Uz44;wmo(X63^qjFj78#%JLC~xH0g2)ry4X>g7LnYF>qKYV%VZ#gZ zi%KHVLIu&*ixvBZ4<9~;Qr!PzB!HAo3o$M7jmaN9a_q>_Z9Jx}@Z)@i1trCKh;1n$mxCr; z)DEDy+W$M2*=MxzSw3I%evJHjVE>xNhmTkpjY}D+CDWt#^u#wiO-#U!I#e!ax5$@D z{-XBd#MiBW=MpB+OD^Z4v$oP(%nbYW-YEXilmjyo+g5s-B^;$eKgzU~o>qoa2xn`k z$7q(@R(jjuzf720G`M5-_rBT@dx$VQH85ks>BW?@=7~pW7>+W&)GS~0Oj%x<8TS7f z;Zz@Ee?~Z}!m9ci;Z$Ar&j_a(-tT@!xOBq3@H4_`7WdK52&eS+{fux*FO7BTuWl17(l{QF>ghFk`o~kgI$_S>6V{DdclJe}vSnrX zQztHcsojPt`RA5xe!;%-?|(PH^Ai5j!xH}b)x2Y_J^${>?GNkfnaNo|6Mo%All{lP z-|znM_dcHT*S)J)$sdZWr+S`z^u>SyB%M?D<^o_ zs7KHICSi)vXG!?@egAxP#_8$5nXq~Lzq<8oewSsg316}EcWKG5jr*ps*9E(_{^^LW zY(X*9rh1aT{M!SC|2k*am+MZ;&c5d2myG^9_+6Wq-!kx_qqs?B=kl`LXBVcPcEbUsk6nMtfo~LA)>oACT#YgR#TD$xm)0o# z<|y*wsztM_W-Q2jFG$+>FH+At(iklx6t%-Rh6^mM)!1_J*}+%uVb49*01pn z6?DA6LORQ;r>YhI_b;T~{a+y;H5D_e{`)#HbKCM?E*KRRm9zf4s$E`NGk5-f88uv! z|EV-CFJH9K&F?R15c3&`Yg`HVCFzt`)lh!FLPFIu+@kzNxmmQZyp~T<7M3sjRnl9+ z=Pc&sdQ8g7=utUyamLBO+{GDk56sBSm}VI8#c&+ejw1)(lQXRUHeyB()?&_6`kI7) zNlN71 zR>}M*H>UGl%)&J1pI~+C*0jpAAiW{Ph3&S??wO3u&f0@zr__Zt?3%q z6HBnER@X$7IOw=W;$mzT>*x*Kyv|xUaXK~w_bs5p`>{UU4fyj*T;ge1*61BBv%0ir zVwQLgmUV20?cD6nBr|aimNj>W2SE}@T!$TjdoS^MvqW|f61!U65HdUK3=6u`)ueX z*c0%7k>|6Yk~j-{4DS0tmG=eM;kZ8~J`#{P4a?%P!;L(@9C{^|*>s1udH!M0OcE3O z;eG<_guMhi7WY24{+TQ$cIN#9ZvCH)yFdQVkiPOe1A7$i+dwA8iL0@BxZlTL`8gfS zqQAoxZv8LAJs9^ZZvD^2-5d9xK;<`x9f|u(;;TL4#NKhxBe?} zvkB1Q9#G}A7F&q>6XL7>OR6}V5v{ia+03vl2rJ{(<ie-ZBEaX$r0o-W0X!~NsGY5yBZU-ds7n?d+nK@020`f$I8zv}-qY#Q#% z-TFTVcMk5C-TI${yBF?1f~v1|*b%tDAinB#(}VDLg9^U}I}CRt@s-|G zY&!1i-1BFFUNfn?$_Mwf|6zPKL;55U%8i*f&x_^SW?wf}mz z{>ur|o$z;p3Ln50;QpBSs{b>whvB})t^adz=i+|dt^c!dXX1VsOvc*S(YU`OzTRhl z?SGqF|Fa2mEa4vj^}GwQMYumFzREMy{%>~cKh*x;b?bi-VU8#K(_jkrQtUX~%~ooH zhhwT9PZ#c1IV{1G+BqS?IwZjp-z_1JW2qirYJ!*JtDd;72}f~U)st~xLI>;61W)2Y z39Bt1Sx-%fBmQdQAENkaofFzCe!Ff7GZcS%YC^o?d%Gs|SNyC46An=Pjt3=dbmFr! zcA&ZxwjMh$+ezXBv}9&G9r*y~05-rov0Id4w72Q1U)n6kK77ul)jnn|a+yo3OE*yt z#MX@IVE$6dP{@`!Wzho+nGh{Mnb<>iSHSBZa|%LnsCSD#z`8A!KgM{Xe|Oa_M*m)=}$MEY9iE&n>W9L)CO!tRzN-Sez4KO3gVDCMwCg-TW2rPM1nD zy0}!X&Itoijus^+?oQlJTt@>!;8PScrmVS_eAp%F!O35*eI;ehO}Hk8uAq!l67~7< z`~~_5>@;pi4VE^c+4n7!GcJzb6UX7R{DB-DF5H#fZ0Gk17Vfs=0=tug#ruLQJ`FS- zm~!Dgyb4#YhHrLGS?^a`?k(tn<=ncSW^b#HV}!6ck*uqizb9^^?i>g-d#g`g`)%!^ zb%jkO(y2AMqrF!u;?O31mPwcESH1SO9SsF`@xDNPqIV0~8_Uy)S@oPf`D=UQ%Z<8# zJwM*w7-%pTu#a{hT_2}P*fXR)e~dE3)z=cz`g})l^PSt)<5WR=((2}Drtxo@PbS)&Y7L1*~L z&EahnX_|6FnHBElY*$Zv6sNrgj;GwY|9BVI2M0&>X`bBGs5?km8?Ug1yK~=3DS9V& zXG#&*PVPcwLX&eMoKy&hf96-7(x%K!p3+^t&p>s|?%LI=YvSs)mD3gU3W4TM)j9hq zp*8qNN~nNadMTx`)H0E(wko%!`vRYLvNx%)xTSrMdvSaIbbFKI_674RM5k=r6R%s_ zOZTl_?%dj*&#mqMLcjydb!+=qQ1$t9$eOiw!;-Tkdna*K`hN2DDZ+wp%KA8oUp|=% zPHr0O-6_F)QQ69$V{b(YHtz9CJW3@Vk?YvUnQE{Haw}1(tJT`_b-ArZBUg zj}561RUg)!FU`{K9qo0aba{K-_0lBH74G?y0?#a-sEgYt%tL3=&fR(sQw?cor|1?d zxQ+Yh@a+5w_l2Fx@a9kFie%E`3Q==iv+ipCy6xN7-wqZwgrc#p*0NEL6g6ZT+sf#in#by%5_%IDbGgTKgG?# zDQmCR%exountR$`&HcW*aF16vwYM$%=}vwX+wD9!@UQlj@t_l!u4qFVuCdh5PI+0q$|%9mhTH!NPr9M;rJ&uJK)R#Z~U_cP5S6 za&wRStGP|4b7-qM2ANDygi%@Ib-mleSyET53*MWmo{G8Py}`NQeTKQ<{ihyr%+Gp6 z`^Y0!g)V+?a4&v$%E8-IU--6>xKR}ph z>&{Rk33}@;QZpG(D=C@STs6HeKYYPE+J>dIilnH{7F}s0C%3uy{A=6m-tvyBpSsJH z&V;(W({#r>_q$Kzn)m2C-qr7=(N&YCZgp;vp!2Scw%V{6R~$y*$95^_+ho?g5QN4v65pDSpMs38}85A0s&b2PY_vr^|_D*vhF^Ox>-5wzRvQU$v;h(;r zcF#3kZMXZcBkf+TW`7AUy;B#!Yr3LazqhL-VlRMyHRb~N26F*Cx4(0#yKjsgf32HM z?tmw#?ttfc^u8A?AvN_^N47Ecr91hyCpYNAZtj2&jmY#|1zZgO{#bJTG>zP%C@I0V zFNt?Dz@^|k&$-f`d*Zh(wHc(iCw|AC%W;<{Wse?-lhbVet0)BS$B$nOcPoEI|cF~!-@K#h8Lj>XN$-jut11T(Ht zBaAYQ9StM8Z`!fPlka0PXU0D6<#r@$^l5fMNt+T?cLP~c|9o&8^>dzicoQ=#4gb{U z`nY^FMbfuUZu;qjm;OPLw27quGfCoh_x(uHk_Gz_{@2a;)1Xc}lusivNK=8ytON=9 z*{|?8H_EpZo-2P^c%0&Gvv$*zov8ccM-5Xg&!m=zQEBdcV?UMM(Y(rkR@uYCl|8B# zeG`|rAGV?UrpzsaM-5w|9=1hq*vK}FrSbT!+GC>yy>wTstY4?9b7fs2M-9u|m|M8J zx`SQ3+q*M!%btYHHz0FI`BI8T`Fiuec(*-ySLT~$ytyd8%euJyk+s|mzdJa27YPj> z<*N<40}qpGtyi>CxnSm3&CO3s8<<_V7kwD0!Kmk!^7v`aZQjKwD0*5-lv?o(mjaFP z$nRz9UOC%ReP8BA)F%w2C5PHD5o)gEG5bkVnv%#z%QTIyGF@gux&5SR=V{k2u3fu! zUaU-f!ez1H12B%kapDuM`FcB}6Zu3#y$X*VG%(b`#W zL3M}fY8}LMjXflIab%O-5~v2UIl)jX$q2hv@V2nV>t(1Hq1a`Er(5EVH`J?8S%%sP zHNa4BL$SN8^q>YBstM{iL+yjgG!&a3My(I~7*Kr;k1?c`-Uw~!^?|R2q>OenG&ND! z46N?7i}rW!SCOxyQ>Hq`|0YUJJ2Enb*o86vKNx=s0P_X*U`jq#9hLH=JP2>s%GQ{W z-kf~CYBg#jl&z3)5;QJU=EPhC{nO5tw+Ckr$oV-JK4)_rE+%4D?DfUjS+Q3oXScfW zdBEUSS0!^&s%6UkIR(|pioU;iP>fsG8OK~Sd;km;it~{g+hmTO41HC`H)~uZ6v;A z5EIJZ6RtaypML6rqWtfTahIrHit<0q71B_8ce(CRdS=&+@N$P$Xg%U)QVFR&Yye-y z-WTF~oL#%l;F0jTf5+%;LgT2>Tf!h~H1Kk>o1a}}>rhbb@-VOjJOVreJQAD^b_Xv3 zj{$!J9t&!@ias8r`?NQBAMQ->A7CGFFW47s0{ej-sMrBu3YZO&H){|`7%K;aXAK77 z=_WaUE_ezEEhU2fA}|ju28V$aAPNf1{m&!8$8qyLp8q9qG`JHS1HJt6?w2mh7e9B?~07v!#F zYa!@G5LsaR4+oclJ;3E)FYsJ&Hh3Pm2wVYP39bTf0sY|PAdSJl5e$Gj47(Qm6kG># zSEqF$s7_h#c3==p2Bm+d2Y5MnGI#~Zos!m-;QioLAa@j6*MK^bbshKtcso1?}GP&pMZY=KLy$I z@aG__4}d3ue+2WvKY`Q0hd|wP{3z%L9|JFO-M<0#ez${6R{WCrXTbH~CU66|8GH_W z7TgN{7JLo78GH-81#AGff**l@1-}8efd?{PZwC(oUj`2WUjciAJHUS6YhX6`H}GT- zS@V~IZ-M3D+u%I#O|Zu0>waYMb*%VZ@N)12@J?_S_$>G#xE=fm+zEaRz6;H~P= z;w=B~K-z}?6_B4~{5wHzLG-@^wg-2C{B-GW1UrJdf4CF)6-cM;Zvwl3`@pVXJ37K{ zU`OyEurtVaul_?p?o9WmgWRL&F9i<==YdCnOTiwX4k^<{{kMP|C-;8^_5yV;aUW3k z5OX-zUkLUC{{&`%8^J-~o8Uljm+SrnJOTITU=H{NmHuIFP}{KMFhroB|F7 zE5Lm49Iya99~=g*0}H{+z|r7S;27{Zuo&D5jssr-$Ahne-2G_o8>X-Ezkz!)*Z`gi zegN|Qum2D$h?(!dW`H#5#C%^;A-$vI>w$1Sn zN57O-^vhrIIv?nR#=v#xFx9X(VDM zsb^%lRFb)!^f<#SgeS_mCneMH7z@m7ImxPo>SK8H>xN3QmO}M4Jo<1$C8^gnv-D)E z&ZUyngPQqzviclDC8_r_GxucmcZNz*4`$}@$?Cfdm84$C%;uBT-x$idLsTV~Z21^p zL?!7~ZBvrTR=}l_tV_c@jZ03M-W=v>vgGg{2=o3N<~<$eZ3^?Yg?T%|ym!OA55m09 z!@RG;yyh@ZW1;h0?dph1Hn)U2yd%TB?%{C9hk4my-q0|wAj}&V=1mOq%EG+zFi)eb z^W5q%PpdzN7YOq%4f8Y}JNdgg%)33zdnC+zBFvNKZs*>>?#{h|>CU}@-NF|J{@g19 zPoRWk7>bS2`b%`kYW*h@@{hhBhO*>*H1e69Q&hl=m|t( z3Ds&rp&7UeNhan#%F`UK`KxDdz%ulhRWV>Kqt8(4%R#>Mu-Gi~9}TVm)$Uh;YJGmN zA9yaPyvr^5=j#-H;XlWvoa+F^OR_eGdC$63l5S5jF_Nu@Fwgv|+*Ln>JOENm9_O{@1=bG5E9Szfh`Mt6?1kV^)pYN#U&o`Cs{;I9(C8n936)5+5 zF>M}XVA~nBtVbD21+0!#nGTt4F45IR2^TVKDXc2s4woPD*F-QRYTco3it)e5_^WE2 zF8SIR{|}A7s?1s3zYNBz{#TxqhreQPZBsa%qwlfe>7+`ew#74~m%Rr6sC&h9@v0t@ z!7IBOC$$vT3wz*4Up1BnPqCd-T9K>9v=Jy1(k2P1&nX@h&oz3d4cIQ&P?=J`e!VBd znO`-8pqqskg6`KgP!@PP*dLq@4g_a`Ip6}2#hQOLI0Ur8;b0xer&;Dwu{`ir+=ZZ4 z*7Dx~GRXO#bKP4&hEBiATK+0SEfSppS(Gy%i%QZ`$oM8(r7o3Z)r5KHgn1#Yg^rHJ z|I@x0Dv!`P^o$nT7k%abD~*aeS>4h^pQ)DY{eMNHqBcI%UyZnR3jH^NXhommR)6I6 z=-l;4D4G3fR16KaS7(m>XX|uGfOH0ue0!6MHX+raMV|y$k$XLA?{U~qM%49aosL== zx^D;&O2^Tt2s^BRy1kWQQi$A~)*;N%Kqr%II6qex*hNkx{)ST44-<|FaWvA&BoM}H zwW;T8;0c3Sq#oep-RQ9zltmY%jcUD(;b@Q4Tpllu(epJ(I=r+E9SI|SVI4dU$Armd zgVbE$9FC<8Qf&;GSZ)~7IXRl64N`5sM8XV^Dk)8Q!|7;))Y2l`;phz?!fJUG4nuAz z>u3(Cu)Pt@;XRo;ggMbC-CfdEr>Q36^FxhpMR7A%@Y>5?`HMP{8^tl^LVOqvY zF|iOVV_ND?I+l`bSJS`H%4Jv#_9$q@~oD+lNP$M z6sBb?Jtd;2sip3u-?_0Are!RBGV1kcLMqczchYNaEQN`)Qs|U_ReeVKEu^JRBlGJ> zNaK$j(MpcwZmC%4-|Ga5()=@s_8QXs^M5*UqyVYl|8(GlCE`EVfs-_Q`O+%XV*h*{ zH7E4X$B)17b{CE7|)TUHYpmj2;(TAJ0gm7eA>Q&}ANk8;w}d$g6_z3}6XX44-l(+=BK zdTb6`jfDA^JGkvHe=~@GCBw_t?hr$?Hq)ELd+2P-)ME*N(QK`){Hgc7gfPEz!x62` z^mfC4fH2qeg23!Ay*u%Ho-m8Gdx6BVnFD-UQokdYa+O-y2x?%^5N*`KtYYv!DLW8Mj?*0%iJ0EvT_@Q{Cfz*#Jgqu6l0cag7ezSA>WOf;1*@`Z;f(oi zL9|xCBdtM?6Ofpw4=G<%i&eN@SNIF>sXzB57O3>6sh&Tdc-sT#j#>W2 zlt2FI?!Q-TXkzF!{8RVrTXf#>*Dt8e9em2S*Ue-&-eCBL|2FuqLoV1_IPal_C)T8Y zc|F}Df{^NIt$Rnm-=}(7>)yG_@LTKN`Oxs&*1e+xEWcb!N<@9mFVW92t9)V2ub}2* z?xO#fYF(+W`E^wI{94*us(+a(pwM{pYiQvKs{;BZ@{}o4auS zf1@B{_VU@azlL_5%Bre`uB`u}*Qr4#)-PAs^nbd3934Ra16@D=r=h2X+N7|an}Hd> zT(M9~JxXDPIU$8TzeKUpze$>BITib>=qz#`)<3N0=NGG%3MUmV6SDhjmG@619xfI% zI{jLY3#AlJ`+risPHl#g4j0?6QoSwH{v}e`G9_~9O3tsRkSeMKV$zP3Nmx#qero$l zOML00x}KE>(^XDFwAM$ZF#m;`$gn;teU-zNvx$LK=~ms+irP+7c9WvT72biS=9;3w zsyYi=FD;Na}LZM9$$MvS^aS3%rZA{I^NA$4wlSo4yBb^7TD6v zt)kf*CI(ifassnsO(zbJ76!hLuT2Ovd1`a*X&vpN_{^O(hfFMqdC-{LO|>I*2QD#d z36&lko@y8M3J&jR5APT(inphwj(6@T=agii>BpLrGpD82UK3c+F}}7#$RpmpBy|5- zB!}j%(K&jZc|V4--Z8}27N!<+UCrleMNsXmvHTrms8jh{U?|phMs0+14XG1u3p{PL zbhX~&FFyoAse+xj-$OZZrAT#z@#T|1qeZ-(`E1YOsi42XuEBjx9kBYc-J=~J zg_Y&gM`J?%=dhjQF+NVXqhkD@(RPoU+G41`nAjl>pM13!L%-HKBKjKGH%57f@}xZI zcehIrUB`G>TkB{2R^L!LiJ3rAiaWF#cQ#O@%0pplu(RgZR?jg98{AzwD~|_|Id)e-{30s6}7p6{S0sv?(;!q9r-a|vP=Qba`_9uX}A}I<=};21$Zeq z3%m!M2R;ZA$G;w&59-U7h2S$_75FSz4Q>M|ME|ScGVpb9Irs*+0(=)-3GN10gP(!Q zpNeWW*nxLm3hLuh@jHV{K*`Ym!`{09Mpc~s|7Y0{ViMgT5m8ZAK}Cbg{UR!XkPQfg z02)v(0ZAZWAeig|-oj#t5>|RqYwg>cw)XAq?cI8*tp-tp)~Xe?-db(#MU8K(wklL? zexL8mIVYRl4O+qf`~H4^Cz<`uJoB76bLR5Q<;*-sbd|U0`S9!6?2Z|^?2Z|^a-Bor zvNT<9X~+6B#bs%y`Lq!}O>epFwUd3?ET1;Vr)e*a{v=_(HI9A}^1K~H%NWabv zVT7L*4vA+FeyvqQIK?=imLxl?_azI1swM0xlUNM3s35q~UZ#u6hN5L-&^${>xwZg7 zVy<01-h{MA!iu~-GQ`4ALFa~o5o^Jm}Q%-Ar<(t%?{sbxC)KvDK#{zsWa8M zsDO^;qsqC$X(KKwIM;ra-^tiQ=Lh`SEAGZ+uh@yp#+-%gZR{4TXCwe+6ec6lCFvu- zYzJ1x3tvHaFV~0D`HKnd3jZO*fGfHb&!1Al^_jC|(e)F2siI415}T_0_5yy4k?2~* zw`KMxy4e2d=^W}3T@pkgHI9DE$qbx(kFh4J5k+&lhz@JvwU zs*QZFfoFp%3-L>=r~|fQMJ_8=*NJInnaf6JI1FC@@Yjr?F^qb z(Wg!FX?k^L@4LXKAwrs8&v%DVwHiW22ds8Hfx&pBlTEC7ZA)~-mq85re$Fq*yKi25 zX%101t+V!^s42817mqzFpQswhzShP2Cf>Ix`-(#*KD)km;#pKXOeoEX9x-n<0%FK3 zT*vqPmr0xS%n5?-;u(ES*StzN6{}6JII9Q z=bXIzloKucIIV5QYRWJxNHYy6?WjyVwIn)uytdGcH5Ec7H*&sEy`M7+YsX|N!a}25 zs|;7R^De*Ebt1(u)`V8!lDy4!R^n2V$Tr`AwBqb4XlfQ5w8mv=5>u%nPVbCWZDnO7 z;#6qj?SuVHO87R2-sntxiIniCbdf9K)NB`~gzM{y-rXb?GKn~)No*W$b3TpCu|^{9 zvYLi^BjUW|Dk#a_gNU=EGbD|JQZ*yuZntszV>4xoj5qdD_blU$)pU|XMq@Q!#7Rte zMrm%tgZMHZArO5lBEjSln1}yU;1KZB;85^u;4tudumb!XxDuqc$Lqk)gN%OkHBPf< z_&>lc_`e9Yf?onZ1AZBt!2Rj!;v9%{ZUMFHSMlpX6s}`0UjeUl>6=~p^)6j`Eq-O@ z46GGla#;~3mlao*CUIqH$GEOM9X54o5?7W_;>z+(^l1`TmL_p!`6R9^P18N?+8@=4 zl88g9%pQ3rW}BM|esn1>yZ$<%X+iYp&h_WDHZAB}U*Wafe2KAOqG{3UERSR)n@G(~ z1D$z^V|fB6I;gp6m=o)}JyLCThIOtV+PRxqS?Bs8!mQPdS8W8H>j!l1?p*K9C?D#a zxT7*Ob+5PvB-+hHY&bD0(S@e@Y3Np{;j=r+SdB|fpwNsdrWx0D{6?@{dI(jZp82lp zP~($HZj7RR!%(}%6PhYz@h78-cC#E9@A~Aa(tPNuWHMfO>Qw1A!p=xJb)qyW?r&qy zFW|=*8sqZ1`o@~74IeP#@D7~lJ+Z#=U|QcLZY=9T!lZ;Lz>bXw zG1fLdxoqQ;E7#e_uUvWNRjypQjufU?T7m1zHJ`q+w6IUpDLPBjbWtu&r1`XBpQZ+B z`P3jSpW7g5joI{RNlkH5bJHRxHbKi68%8xZEpVd8&@S5}3y9uHX`9jeJ7f8_VI?Aq zXmG^iHEo7cZZn#R%Qhnwm4xzCtY?S6{=-l3`!> zLsg1X*Q+Q$mt4K=JU;cfidbDkUz1k3(-#7~>KXSg19i_f?4ektN#;ooSSs>oKnmF5 zCAg`kIuJ~)cYX_o!QX=?fqw#rfqwzZz}LYFkPRMjHFaGlQN-bSQ%&Vp^-@)~hpyzZ zhpyzZYCA3M8J90tN>;a*7NCqVpE2SqkTt4Xyz?*|Q?P|5>r_lbu%1zCl1VP6Abvfb zib1X8^ps-IHR4f=ydk+5>?^x8Ap@IdGL?hQ2kB`8M75&6Va>9rV|s17VB%c~>b`AQ z-P?PH7+EF%WuVeSmua$2(!gp)mCI^ImCI^DwX~n(x3nHx&6}pxbbL^Id04&H{OIUJ zWi6-7vJ;UZt&!?Pd3B;`NYP`#hbNW~Y(%?J{?@EeXQZ|{k`t(EuFRKOEgIIm#Nzzz zrFp9Z6_r~T=XvGEDrPjtjy)Ie4BfudbYWvi@Cl`+o!b*>0647G0iJWmF$rlc~z& zC#~UGB`Ru$d9=NYVk>OzQ8)9r7YC^Ow_#O@?#IgPacn#81Qh{;Wz&vN0M(9rgJF=B zD$|ac0LCZdXQe4V4b(wvbu%1_j-L+}f>q!VU^Unu)WG6Ma1A&BRD(JS)L2pXQGRlO zIvxiZlf^#|(iOxR2b%D&g2&@mzKLHs!}QhdcI2|%j$FCA(uC%j6-7&HkNfH#SH1%nDCmOW9#vo$rUcaV7@yuw~;g!E+dmm_7SYc60 zcyj%cP`Lz~T0a!0t{sWJE~S1nrqvJK$u*hkht%qLB88o2t~@aUrP#X;)IHmvroJ0ZlM8W%t|IEm+TZLd0vT zsU7?mT}CfFxe_Qt)evO7aB0r)M9QhSR7qsKaH*s9e5yoBU8>e9rAcX3qq#A;67jX+ zb<6m4S$a+KqUVZCH7R+JP*=0Qrp~BnQq&p@P`A(pzVg!K3id6+*u$s-@ij{er z3Zyhj3y6fydthI10Aot=5tkX$W`X1IO6!NIM4$$1dEjDD{1<^CuomnKHi3tODkp_& z;@J8NHt_bzWl0!1+?~9m{`kYOvFpr)i-2 zd?&G|`Tl~I&Zd(lzIWvbXaR^{k=Nk=xV_IdMXpVFj?wF7&7a^+v&!??`5IsBQbeuihVhqyDurpF8iT?ml4gLDK;G6E)md}Fb@=Cl z%0HHX;@5$z!CS$4Q1@O3{usOj{28eD?g1|bm2dJZTQp#{jX^Hk805+|%1$he-q`Tv zN}-l<<(X-k<)eYjL7*3Cd4%;>y4Jzos)*Y}TAshueIfL|*G}^FT19J((RWM(I?M|& zZ_oemL2YNp{E15jHdZmxY%MM5J{FBs7e$67ng#~%E7~*hy-?YE!N?FbCfgeXnri6~ z0!=v@mIkgYD0(qEyL$_a{m{JfQQ9&#(BJE(OVru|OZZ%p;_=e1rJd*wG+y(%O4pxE zK5Dj;tz~?7wR0LS+ZI>hvTgC(xMpGtod@`}t@4k)D~mk0G}Zak&Pk^mL|0kLsC^y+ zil*M45nQ+MRRm@kisjQ(J^A{d=wf%gtB&g{*yQj~uEOoz)Hz*+O`W|eO^Sw5q4SyK z_Gu1anIVp%^o*Bu{Fz#(H^kA-bq#vuSEMnl7EZg`BBM^XTkDXvc7El?xOHn14HA3P7-1zrd~3@Wc412=;G>_yR~8oZo_ytG@&91z!YrgD-)^Wzxg7dQoT8 z;k^d##oqz$178QV@Iv{-RR&7GGI=7_wspB|TbC=>jG--UDEyX&R>pAsitw76HT4ab zIwMXWdHQ(&WI~wTqV)}DhS>qD4|IkZ9@H#b6V^B4W9y<$L(L_zn#O2Nb=ZC^K3rYT zXH?hLNBN*?G`wmp|54}T(^a4ocHPZ~(p8Xju1?i67|_0jLvhWnz82w+r<*1KwXR@5 zr|LAQk;yVGF8Kt1Hq>B1?L_&XJ1qbD^mzIho~gv6enBQXEuI{x!GKotHITY>>^E1X z$D`D2frwIm@@e7;t z)e}#rxunLUR0IQBy3^G%`DyW}pn`!T`PJ3uZhrZn>G3EP!N4p0dhwv26kl?BBoBgt zZ}O}3)ZHC!NRLOQ6b!tPlpZvnLQ9V4aKod1Sm}BEuB*nU$0LbB{v^e7cv?J#hUXUj z%8tA9{q%T_Fg!0M#Z#CTPk+PXjdw;J_sFL7c$9ngxm1&6`lrP+04gW%xtD5E>G0Q@ z)8jeH@aPnrm(K%ySF*TP4%;O$bQ=g;JI*JK)x7hBgmChr1i zIT%@`!to{`?k&|Vs-yJMw1RJYd+s&M>NpMO`OIr8&tr#4DrqLohJ>MJh|9A8$V|HXi1E6$Bfoi(f2@8Bnmu{}Ij(#202 zLmxkB44wR>F{{=VJDj=KnM?o3eR#yE3B$*Z8aZP0gm5=AV)*c}W558^=Dt6}k&8_ktN(4NSsq?QTY?^=s+;Ld@wEgz0M8r=a*UFY>5MY7Ij0$(=OoNA>Zdcs_Y!>PAk2?b zgT(X{-xk6u;Ca&J3*yfdUp4W)1y7|K9j2%FBo(*9^N!1>{vcC)uM^*KG{xLOip`Ez zGCi+GG8^IPcf94(cp_7LPtwd2@Kg=4eCoq9#i!B1Aty4T!OHaXyti`S&`Ip?a79p0 z&l@L>KfzNoRI%B7$&@}lug>o`pKAFuR>_n;M5=RC5wkq343}km-hl*E!qYI!u=Q9T ziwV9Jp1^6Auc!F5jFkt^q|^5wpT>@tz;l_)*He5?!nXyU1#U;)Q~n)B1l!=bX}G;_ zPxWOW<=Y0&3nML`MlhN3uafvqAQLx^?&8Z-9_xtj9(Yb4XZdYxD5PT9pKmQPXYCcbV z2tGCMcQf!Ix<868f~$ybsuM8tsHtZzTC-|-?XsG>MV0eLj9gUFP`?_P-?*r3RdibH zqDAGS#*ZIgHMeHP^fl}17U?*~qOM+sHQTfLI$=$7HIzSeZotP`tCly^H`cF+hKJ5Q zB|Ljwbk&+wm#td6GF-ymdbWTxz^{p#iahNo{J)`#K#B$QQ3G?xp6ObbngMg*{u9jv zv9)@UnXZ{Y>pA}estEqUZFf=T{BsWe|8_kD7xgcl_Q2j!#$^XV7s>Mawaa4-4K-_*UwTmDTfdCyej`o% zqaN@6$QSxYr@gb(2QMc746=7{_+yN^>jd(_IPcv3g#UpgyL(K2Di2$OX|=GsvH*r?ns4P` zbyojc7IhiYIhoGtYgynx&+4-~f!$#o3FQNq??v6cJk3qTC@PzuXsT`Lj2_8`nnYza z-;>VXRWf?b+3a+7-URtg>6~Fk#-j+q-^;30FSa9F2mfryMQU zJ;lEkyMdgxMu(S{tzWjPE^XVPjm>anJX@}p@Z!;=ZDqaP$NU!V#x2q*AUt9ab{5T%(W9()Rc?wzf3Cp2OyroJ2{qa{l(l zYCi5es@b5oWRt4)-sS{*{Q3bh=`G_v_}RjNc&7Ims$V#bg}{|xo1g!+_K zktm@)WmVYERkO8=>J-|toBNw8l|^vk%6+Zbx=-|MZ=Z@bf#r~f=FWeGw%iDFb7!y6 zmhHx|FS@q5^ZjT<=L)08GpfwLw5Jfv$OR`{% z^=U6r-a7sUm_%g2T_W%;lhR#tR=@9GZBI>WkBg0WUymXG@anbn4NIIePBg=VM10z(_-)7VpGPA_CT5uc{Y{x)_C)-zgV zSEW^$j2d1DlwXx`W=i-#h&e9zVT4ak313OLcW_$q=mc4E{P!zT^XA_+OjXP?QW~bx zq-*DamllX$Mh&yN#@G6wNIj!k>>75UCj;$YuAl$d&8l zz-4LquFISn(H6BtWO(x{PITzB=pcTWchmhzzZ4jjVfxt6dc?v7_wimV&Q?Gr;%2Mc_X`34ie|19|TFrQqMeO>VfJRpF{P^RRYDyIgih zyIi^Eyo9Cga`{ZXQ4c`fDb$|z_H06&M0-(o1v>$Q*%h6Q-eF9>ywui|6Ud%$PQ!~W zZI_;qb_&~*g}zD)okeIbDW;BEp}TmeYRD{XwmGnKmT^txce-&Y#L7YCqw2~QtY_A` z4zEa6SMX)T|7tBTmuh|QjF5SG%fMK2|(`G=OeJkYR7~!?ccu}l_nS)Jy)D!M6 z|Cz4eJ4VeQ!Wi!uwd(R#mnP6Nv|$g!UV)W4%CV=Y2ZBf7KMouQ4g!aR$Acrm6Tq<` zX)t>Uhk)ndr<~2+!Bauy>&f6!a45J6JOxyqDO{N%31MZOTvpb}Wj{q|X~U^UmZn3L zmZrL8Y3ki9t-_~O`?Ol0#-PX4_vXt{Y}HsDYWXd(}Th!vXj3`{iEvpArww4TRZ{9+HOnbAJ$?eV8T9VUV zQfq=t&3Z*nZFp~sF6wOT(&N(DrN?DndkH0AM2T3X&P8fwxPpfHG$*GSLUnme+^f3= zD`rH3dWi_ay;tK=Uh_1f{$;4%V{k@o{i%uU`1nDw!SRiOMC@2k!e=pL>c#!rOH}v{ zLY})fU(R9fqq`J*xh=dsC>FvKB|{l;CCal<Eu-brj!h8O}C`!R&D9c4*}$^aXw`?T20854w2a5;oq(WAS||<$4Jl8-x8Y7!Ao7 z@A_0>vy;$NVWTuD?k|8FQ-n>u{f@hh)c&enxhCUKO0pvCGVCBa`AbvGqiz4ST#=>N-M5>xB%4iAux>4VZdxQE?0qPKwk>Z z1ZzPx^?GnFxDLD#yac=jYykfgjDo)aW8i(@H^BSBW#BIGBJfdgIrtP<4QhZ_19pHb zz&Ai$r{}l~{3m!hs3F*uAV&tBR`5h{8^|#;9qKgSMyW1#4!k>e+LRBs+ zROPZ-aV)LV<+ExgEGjCX zP@cp5kwXeadz+tkUcH7Z&A>HR1J}@&&5Fs6h)BDKs$w7ywjI{8sENV z#>68uCLU&@{(%`2f4k$j9tOmB*#WV6l$J@%PF)>a8p^7+7McO0p4}dZP)+VyN!fzW zGq1P~uOUkY9Re-OwSPznuOYm*3AJ)Uby>!{UNXp=&?z1!D#m!>sWPaM&{P?uH0jzu zV=qT&SfdGDpKunEo6@nGZf2iK^Kv&Tj02Df|Crp zqH_+eLNh(EJ>@d|Gfn7fel4H!^lhw{&p4g9elQA?Nu8u27me}4RS!Mx<8dL+jq$>h z`@*4wDF0-<@YH&E8)2!3s#r0;3TjwI2Y^(mVi_jrwlw5 zoCb~pr-Q2J=YqwczL~BP)Hl=TgXN&|eKuGFR)Cj)`i8oZM4+;y6l?3VT(&;TWi_8z z8bZVHS; z{|M~n!{%VsOl3}_*c8_(psLHMpyq8-jH6_n z0S*Bfwa4{bQkHZ9xeL0Y0#{^* zZZFMa2C=Ji@y-b3Vr*C6Hw2$&7Q2ot7gcCM-15JPy#$-8dO+8RXCd~= zz~q@sMWU&=a=4o^3Uk=ZiF?<9x@Q~qP;3+{(?VaNbR@uB@U!3`kTIG$5q=}6D*JhG z7$VH%o(rFU8bjuzlgBZ6Op<`4=iM5-Zcygl<`&nZqA#=U{-jCdr^UkyA7-R48h8L zjf{~0R#55vx|=a&xNXMBWiv*uTyuEe(!Pb?(%jb|Mpt7CFDO*K(BPo2mj7AKSV8l@ z0-&3_~@HcNl8PlN74d=C&nP%L%p~BO*C`DZ9Vjr^GSW(wQzm)9+6O;_wr=5i z1L3J|%^_Tq5utZ|@*4=1|NAN7sc#@YOL(eKP?~gYE@(s~Zu16$x@omY=#HN8?u@@D zp&%BWn@?V!Q_J_X9Dd7)qv&F={Enmln1Z#W0B3U1EX&qqgU>yZcSLO%XIoMC?G~Mm!+ij8>=2SlNs%5&Sn+wg8RxNCg zn5ORfyu27mB3ELw&5L$B5m<%)JZzz~U%HE8PvNptQ^`X+an%6NN`y?UU#A#E_u7zJ zKmUd%)H|-^@KHGs4aKYjn|Ghd;a8e)^P?pfy>IJw{j(;>-c4!zG&Z&MD^0pLJLR1# zl6xj?b2J^3?&ujW<@op4`nCT(x%J23SL>HHE2T+(_u&3pI5ph$jMCGF=R~aPyvz_< zj?#E4s1&fkVg%LYU?Khypoacq!4cp%a56|sF;iRdY3R>VlUW`+8?3-Dx=NM%o3;2U zppsSw#=&#Jt3g)I&AEN);J5{UIrt5bJTvb>F909FzZ`rRtOkD%t^(CTUJSkp)`61H zYr$STTRo^{vKXj0-0Q*Pz=hx$;0EwaQ0Y`2@$SJT`A$ovz}>$ZA=L-Q|DxQ=dJ;G>a0ljRQ!)%Hzl{W*xHOka4&7J z)84%1qbFQ$X6Pz)ohUInOq2T3JY48aCG&QIbHE3{TJS+odHxVs2mT6d1Rn*P!N`tUlw+Y#nCRKqgT($M%ZYR%9Y+3x0}Y0X$iBx?Rcw_kp@b-D4V zV>EqDFmNpllISu$Y0a1qPcGrLH+B3yJsvw+ro8=ldeWM)g*bxPj?XrKJ3SsX+F$^Q z?Z?xT){M1qs?DrevYjf&1>LlPs1*eRuS1qgrYEf#UxY_>^u?TS&_q(>Ih2rKK<8f7 z4rO}Mn(+!@dalZMuK8zrJZjCsz^z2@<#SJ3GvaWH=d-S`0|S%N)05VW#cn+FfA=gRA~k=GF!87t^Pa0Gtr;p=T|MV-#SG_C z<2lmA^CZ7sJUwa6IE+hG?t5-|t$%tv>;uqqQC_N%GFEFwvQ`nzVuAsUY{c`0GY)w% zJ)UC>&pP7q(sQ(NCC4KP9t=pHtK8o?YwH)&<2lyws2+Op4D?-k3eTVw!j)Z?5_Y&X z=5Xuf*P|TQje=GJGcpwMXu|`=%oIf#kVIK70wZQGo?*tXe#oPE%gKlPlwy~sz^BY` zDKaW1q|GtwpsI$pz0?ih3l^SjtyDFK8*>^(lG^>1Z(f zSfJ*T9+gYix1X{M#q#j_8I$kx+$%4}>h+N8Vf|oo{Hx3hBPfSiN}67eu`61Afx<*G0gtF=cgL;v)fZ+W?6UJr>#ic_yT9!i() zk4>NcGedBjr)+8n5Qq^^_Y|H0B^aRL8MFH84JUS8#WJEX;^}_XU?@Fl4Ed>hm3X>e zHN;${=apGAX$cwTrSNa=RpRL-b?lz94o|I!+nS785!dai6snuL$Vb#8Vj8NdpR0rfm)-3xn!CMJPP^;xU}_neGOf5IGJX2g+2>9z z?ixvZZl1wQpo>nqr%B<E-8-dgM_MKwC|W1%W-{nNS;Y8mMhahX z4?0l3sctsO7`_x8D8D6KE3PlNjZ^(iCY=n7)t$rWZeJTgPla7a6gy#af(~H#2 zVbp78itly0u@!W4bJgrIW3ZXxtA}1qbKR{bi%|p46yHn&ehbejn($zhMVaC|6MDVN zBR-i-@o9|nZTKEI+43k~GR1cR^mpN@7;5=?N}pa3UI@>&Q!HOk>6=aPcyiVJ)W_;c^2)hKnWv5xDo}Rai;OpUe&gGM2&6IybN#9@L z>3_!l)vbFa(SQ+&k)JOs}n8t`Izicd{w zHayiXUr+J<5x%wX%pI-R?6@sceNlW{;Q4~fx4-zl4$n1e7?_^QL-E}O&!aBi{^ENE zo}atJwVvXeO?-ca=j?I1tL-^6m9NI`bKq$iZ~1!4zu^S`5}x;5zMj&j_R)I+azG6f z(^LAs2j5C~3eU298mnbW-)&UPk?{Qa9LuM9M5gk%MD$6P$NS9`-&x%ENAUf3vE}M1 zeM<=*G}-caznS72LVTOx`#ODsj2~Z$P8vPmQ!bBT*2m##BM_2aD!d~}{4Mc2$`qANKNT{CWP&f9?lQ8i=U(LX|79f2y8 zaRn?EuVsB_?XtQm@8hjGeFs98%DAc((wWj1#sN@_-Z)E=u9*{fp4iO#wJTW=%<20* z7#PvnIQ|W-H3zJxMmHbI&2?|aookr1na7bH00b=vQxSVw~_zLr>Qw^EX3J*CjKNwx3Ct%mzbG*Clh0p{MJT>7Au`4w*Ch z#fNVnd*>a8A9JyD?=R-?g2vF(b;(?B=;^v-UN-d1x?~Ep2Kk9D8R^+F6PenNbP^lY z6`$ymL2p@#&J^_}pQw^a%a%`6$$X+pMmlLmhl|2X!e@tv)LgVKEQ0kkTF-bw&klEK z_W0kZgC$wJ$!PNkACGDc8@H!5_C#;Jtn_Wc**`4 zqxQ4NFY5!jnN^zNN7a?xW5cJJ>i@Au?mx@_cBMFOTRM16-m55n4(zW8-egFqX|wd! z#Fz#!d}IUI5l5Uh^yuq8_mh`q-+sZIqb~UQbv4;`=;-M)UEhd4Q*;tqeWoi{MQhP# zy4L73?KUnjc2_Im-@u=lsz3a_(HuJm0xPHd(7UOE?_Zs8+HNO?crEGp1D-O?S6f*i;Q}!=~=?QJR#7=dpEE z4{LM;%)W?8{d}vJHuy5?SMUzKM`0ia=D79?I052b)3_4rM0y4eA)t^=Ixv{n^|>`#_R!|Uwbomv$a%8cCyrh{sJj6tDwEiyq0J$ z3p-&>WtT0544BewFPlb_=xi^WX^F!G+X7qIz@EUxPT8}DUlBTM!lt~?J#Ede3~w!) z*0D;?wx^o+%-XOdbbDM^bPj0|5UIA|b(G=Ix5Yco!9mKMjxlV<;xKLLzK$a9Wk@IB zV3O^09EC$GY8|9>rV33v*_B1kw#jPcp_Yv#F;S+&^oO2p_W2EJ-ZadK9zNe|mRVKq z9$@!EcJ}2rzxS`$Q79f-?PbdwI;irm&RG9Z?{pl#z1$Nd?w2;-+#U&Z$*0z`0VufW z*L4F9u~*q$#zcE88~6)}VNPOJ&K&=u{EmSSlK3M=hXF?Mw4h5`2IVdvBHbxAnm|%WuiRjgFE>k` z-nrR6t&dzehiFfLmAz`AtFYNdJ=SXD3XxljjcW|9MaETy%U-e0552(;{U)xBhVRF? zDvaw8ie;&B@##iqnQ@(r%f^gUaHxa1Nj7zKgYmMtpTruNPb4l%2^fpp-$t4-}EBqUp z@M^A34!7Se6vcjdw=pF=qSpv+zj6{e!(QQT*Bh0^?%mX{ zU#VZm?rL=_HUT1cB^@W5M-O%K`x>(SN%4l9-d^aCndM_fvzVMr7&$JLFgBGiCY3NU zl`tZeFg%4YVnQlmd@4cduzSeQA_LYfi`MdB_Jp+R%Zh3fuDmgwV|}&N0Apk~M6WkI zl-!r`ddpF+znv@9n=W?!9{<`D{_9fsf9U$vyXyKrl%C9^uAeg|#{Am#YyXIhcmLB< z{1>?XC*kip?N#hjb*1V+8(4}R?b2yQan%p%eEe`wN4|OSZqz`W46cKI26#D$Tm8KG zhUAstX8cWHGsxH>{v{Av{OjOV;5Wb)@V~&T!S92NAI$#uR`3q|p9k*+ZvuCK^!4T> z4RM)$@m~Rd4gIU&ZtxcHIq+-X3*fEb%OLlP{|Wpi_&TWc{te{b@jc)V!A|gYFgsxN zmF0tX;_naM1s)CR`L&<^Zv1L+S_yl+}$TP>k20jhm1^yNM2Z-#6 zA4?g&1D*iB3!Vn@tnpFcUT{39`<(^8hkpvV59FA$PKCue4z2eN@fwgWFMcK18l zj6pmB>UznuTC5#s$z{h`a^*Vz&9C}^Jo9==E_=*by#f0KNUL1AI{a_sbDopux^m5- zeo5OrsRS@`H`h4@SDm4q=DKp7GjT~~=Q%0^xpK|^FG=M*XErpsa&@}FNc22ssq4yh zR0^uOdHSxYapgKqxGpiYt6W#E`3{tNjXdXiXmaH`DgpHxc{&YgT)EC4aM?Wgv+K%r z-tuYh_%zOxxqR8KD_5T%c4?dpGp<}mrDx+i$)}CwVf)KJ99scAZbV(Wj|LwD(YtD3>|*s!67MaLi61V@I?{iV1bx0~YO(;qoyL zZI3LFYd_ObW{BcwkK|ZTjl-v#>7d3Gz;^uVtJLjI#d=0vxQxPN)a}acSyf3HFWhQM zu)a5;s}o37cc(bTp{lm9fFEPjZL&q5?|!9D$Go^uyRe;BWbHE|sT(Af{A3PmA4;*VmLw#7S@XDUmj-!txh40q6D%Q8ryc)QA~tgpu} z)HUK6k6o5rRvaf=!8ck`%L+EnP*&d9;G0}&j%$dZB8Xx2Z4uL%zJ zM6)N+<;qj{WkUTX$pmReBI1_8VYUp;v~#z^y0_2$FA%vclEycgTlC!cE+AA!1tgQ& z_~u!%AD-Iyl*_}N?ggqi6`v~Z#mNP_ysl=MzK)kxq~6`RAXAZQcr}SI84aJ3PCY4m zJ)`@!VI_oSVr7_f#1%WEuQB7h5JW=92ZQvr<{Tm8DRYhxd2LjMj007OG(5L~ z$z>auT)ECK+|WFYEev0-zVd5adFBMO(@9asAs}GX# z8m8)pWTX6VVwYlzQkuQ45zjE}s^s#msb7)S;^Fa3rWWt@uN58>sQBBkeXvupG69;Y z?%5lZ%+`VYW5IlID5!(~r@DTnOMaDw%GSzexvXrKiyw;uh+)bB+J}&+`}`vZyQ#!wHhnak4#ot zq%}c>BCQF^bVkbY!@#4#L7=oHoCFR6HTXFm91DtXyzAHV$gk_q$J#=Z%NCkkxuzSn zG!1(!jYeQ}n$G7XMxW+KJM;e4F*8xpt!It8^wD-D&sQFncq8%8#G_iyd#rhHXDmDK z&Ah!GAx}wJc2Q$(^NUX6!7ogFBbGPupRqnwi3g=v%u|&op-_d*HqGU2TwAc7xy*H_ zbiOobeWfY2H@u3cd%bw(SFz zFY+sm@+%D&V(qL}E<3B0%PMoUG-k?%&nly{v;l}p%jfpaybq8%jl9R{Vg2EkI|TlV zTRYafs^t>9R5Ko?W<($HRBvP#MQWR$(_H5aZr8o=r$X_JQb4Fd4u2tiqOBOEtf`ZyQ!kd=XaWB??Bd z{|S^xV2W)HmovdOn%iChhd_TF)L7-e!AT%Tt;}KbH$Xjy_*K9)SUbOw%MQQfvcoS+ z+u`!r;g_Yo;L|8z234y&S^s|pqLgke-l?edD4DfA9U(qUjs?>~CC~I=YC#RyRGk{S zMm+tni@Ozqw@gbwCX>{DG?+2Vo8A=0AKi4V2M$k)L-%aM>b}ZU8CLI&>@5J5mcDLA zYAkMLr(9Nc%4H`bmZrYS(msYvQ}ay~JIR^0BsJ4A)LWwP%!kf4iJcG1v?JY2LoAp~ zJIc+pi@4Tinp`&1We2UMeNd(?P0h5b4QY*?^m!&J)3Uj;=eqV` zGL17Grl#?h$Yk1BH`5k!H=Aj4*-VqmW}2lb(=5%GztM9%Svn?37s)BSgj|1C=lb!T zp7b4jAJSKvf)4YQ{g`=?RQW94DY0dx@7cIkV!N97RD7P1jFC~3mPwVv(=FK#PnE-& zI#I=`_%!CfD7j!7YBsD|o38iXyEp7f1>>({ND6CIB;!kA70gmmT%&uoVbyt`hm|>> zf>7KnXU8Rjd3hHPgS>t+-_NN5r{Z4$mVqllJugeHX1*f71mrxdmA!IV*(+DB7S~N^ zo^!A3$~B*Gv3$??GzwRmoH}C#Uzn>GutoqUb|v2W0%eGDm_sJM73-bYLAlw|>&unP zv6;)vYsE^NjLJ-78$GM=WUP!Ao?2$t5SA*o6{oJ%+@d0oCwr2 zFTmRJlFOEtT)9S9u%*53@|ige-#KzsiRId{kKRis%Dow5jyq#SE55JZ@;8an!g=$V zSssh#%1}!d<0xqhl9uYl1<}G_Q$@ce=XK=cFKWtxbj*@`clFp#J3}qEkOGvJa`ESJ zB`WziOMdV-{dTsN?h9?*0%=oL%M%SviN_KRL~Xot()2Q2M#06FYh+i6$?d)~1TqCFhYiQWk8l>bKkKE&CBc zR;>LMmtEFjnQ}jR$G%6X#xGu-PHilDCzTvtO=I%J;Y3_(Qo@Ie*&Pw7g04yl-)_Qf z)6*E~+t}3ZUTIQe`!=}TOPJnetFgJ=y@>`M8LuJZ%p@Sa=GKq!q~=zLH>tTvjQ#+U zjKrw?Y6UVW3qiG{%QH%A8y+<@y_J&Tjc{D)kAj-V#z5WeHgEvQdqOjhy&N2ee-kLd z+5)OmxEfU1Z2?z-*MRH51o&0(TJWdfc5o-id#w0_;HSYyz|VlYL8(rC4&;q={P&>v z_JN-RJHZ>lT+%E$<3HyHkRgpp=ds{_;6EAsB6tSK`%0sl|101m{5OLvYCE@pbSCCH zIuqv`_%8y#39bhz$2iYwG)wVJ&Uf**fl_c4rJd-ya;5RjrH%1vEWx|93ZG^=ogB$FeQBrpq0YQFJEnB4gN3YAW9n~0 zhBj|p;LMNaBq}Nr8_(-FEHuAuMW`RT!mr$yIDb!KT25kJe(>Rb?^Y#te1RS-j~=TJ zJ(e1}`YfS(g}1TQSkGL7Lsi-9G1UAtPm*7#hf5AmZhoT)8=Mlp*ECPtIMlqBVN?4u z-BWR|!LCSdUeTI5`?bI1#+BsG)VO+BV%I&|u)2CCR_1AnGYCEls{fK->5yO3iRZu? z@Oe1Y3ir|h!!+D9h`Td?Y1qP8~#&1h{)*ixR``kd4kVtF#^h4+S3vHDLKQ*dKfZJQ;i(oaE9=T))yPK9yQE){ZvhvZD>TtkP^t+vW1* zIwv+dXRW9{^Tg_NobH;}oHN4&>hEJzb0#$y-OWc+bM{*zQA0fMfiJybc1Cnl2d0o< z-~|McM%^+!sX5a|o}&r>Y5)7alOB({7}RfNSv41mrzbUM^@MRdC;tz<8G6f=taeSM z9t=oCDn^-})SR7ZgPk`{DcF`CkDjKx8n2$zoT-H>6>qkWSehP>YFjWcJSjarsX5cE zM!8x0y%%EX@q|n~>TtY#?n%v=M#nNI-2U`m(&On%NH9P_ntO?_CpBkfg!RG>9oK(D zdOR9`1Os~eqBP6&q~`20!jwPXe0Xg|dOSxE5)5dt;gwfUYR=}k@jNm8x9qP{jLGGG zq=~0EDW0Cxoav6b`X}4oc_KZYqf9)11n?j|-)2+M)8y;;^Rg0B5AuXOEP=kR>Oeh1koaG%hNQ)FlHpm(ugn?a#=e^#&&h-Y14EMHImv%QgpzNJDm44<7TRG>*yOpi8(1Ud zXetH!Z7<<*hJyMjy%98~z^9nkRL~ChuR6uDFbz;VTxDJpi#Wiem|40gVUJ?QI-(3Q z6uHLe2UF-%)UU}5^eNLV!Tj1ZOO|=YQffReXeo_plr3qL>(VGRS!0g&@BS^9a)M9! zu}eA0r~KTd^!F+1U1hR-3XRy994JAfsLso>Y(rt2@8}6|{G8-#q!x6v@pl|9ZNBy? z?EE#~+cK1F@r=}Kxo=>_V=2m28dnl!B)&VkQAXg~(T$=O^>8wU{l8|DWLG>R#zT3b z8;{cSr(_D7mFe{YNp~Ni6u$2BB&*3A3N;u|`;$56`!~?t+4AdBG%ud+is4lIf`J@e zg2{Wk&+}bZ?Xg6&@1pxvrxMbWO1?1Zl@U+(tBRlm18%TbFkTAFT(Wq&U!{>}*K_@G z>PD)FchwU2D)Dr`>NIne*TdA+=3m%#)urxL;_2ml6pc3lJ7N>->+x!baE zxeJ@P{GB~&ruLnoT)g{WMcR#I!}7*x{hEs!J-^hPcrT>!XZQcP+TBJ@ol!Dl`tjwkryEx~rF=$t zhyCfN~h0O0!-q%eiVVLPSDpfH)7O;;bTXQ95H%) zxSR2G%#9i|e1Z*-j=A1O$J};C@)}ObWYRIGX4uW-7If>n6m}cEmUaXuo8lgH%-x%t z%;h+SFGa_ks_c=B>`L6xovL&uok&^Sb3Qx^c?Ox@Sm|uy89$1Spk^*FJrEs1M!BO( zGq z!#evP^Sg7(FS-20uYGr2h2t!vjb_pj^ld{=*Aeulp{MHzI-5>9la8QE4Lw~)P@AEr z>j>(@Fg25opbA4z*AetNLr>Qc^e02ltRrZJE{a~duBP$ykEA)t>)Aii67-3dpz&i*S%fZ$hWf_(718keRgM4u(-LGi zU1=sJ-5VFuy&{&KOu9E*k$fP!H_X0iHt_z7lk>dG-Dtn?cnBIa>~{ivhgOlaqFLx@ z?x+Rku3Za5@OehVSsA5S<}?yXw`Keq>s=&T%1&xsBc8$7c|5N*yeKte%n!N4$KOcO zwRvo*7Zs>`v|$;&`|k#Lp1AJY7t~1oa8T0&Rszi~K2~@?e;AQ4WO0tY(;gc^OLB#L!g_v}UC^yCz_kax@h0$||(MyOA)B&aJL7AD&5{@r~;?;S2jSzOkdn zj5I--@r`wMqgDJno6T8WbK^`izAfI0hvDES!;J5K>cvms+n|+Qv0%+iuDa%;*vcW^ znMZzT)EK1zFLLA-@*03cOKm52Fd9nHi?cAS2Y_ zKf^Oj?FXX@mx=Fc+T^Y9oT?U#QB}{xw~1$MgJ+V~v&17?P_Z<5(OvW_SRLEMDwwCe zSc@!~vAHWctz;+o`S~V63f+7d?#|>i>I>47_oeMj!f}gLAl)r&pGE> zKEzPQ^c@fV6?hJrVfjc##`xII>GXrAXr|@sDgXXK@M3u8%(8qcw@m4KiTFMb&xYCi zkB=gAzU}f@&dl+RC%%{AJ7&)QQ!A|TJz-d6()T6!_P}$)1(r`; zXQuepk?^0xGi=fRWJ@cC5g)c>}vH!+7{vz^kx#i0NGUdyi@b#}oM?ua0<9l8Ozk-bzwU$qE zH&c8=;hVIIb&iWu;!Amso8kKcJQLRLpYILQcQHH**QM~KJg@Y{Y=`Hz2FtfUx%LJ; z=f(CPUpc{7!}Fxer^nCqyf=})SKx_n*nfOKAo$1dEZf+{mnpsq;=3N6moM$&%OrQ% zU*;TfndR|*GsX7;e9f0LOt^CY@oCudS(j&j@eL!sU%>Zj)BfY*md-Jo*k6W~L0o6d zKgprn;Mus@u=#T6e`aMiY1DM!E3;F1=A)cL`+mV6l~?hR)0NTMs^vO`dSv&Y>Q#+V z8*m%}H~H7NNg`<7r46fA)=I5;pT2fWMGtI)Nqu<(gMy!Xgj~Ss=9uy?qG?% zIPAW5Rb#ExzBlm2LS`Q}Am{}c_AnZNKI7k48ktwEj5REauBu;K6H(q+jkx);9kGvb4&tT3&^I_ZmJQ)VQ3K=Jb_D1r|MPQR-gPfSUHBdSE67ra4qbfy7_es*gil3eJ%_q zaJyKYH0I^>y-X>IR_QZACS^gomi6_ks@G-IJ}-^$m0a;r)buN{Np~YB3f zN9f8Q*pvasljMr}#uX-w5?0b<;3~gQ%`lb6jU>`9A>z_?bnz!N6?6&z+F0Z=(;l%a7{jGhEn`s4l z2sbDQ{A%M#Ctv&Ov(Ntbg}?aQ-zs+g0g-L!=_}LPo>~yN;uX- z)lPGc4SLqT_wHJD!N42l-v9XfN1WLCqB*h(z51DN49I(G_S>aHum0mNe|%gaT^oH1 z&-K>RKPY{F;~(GJx?t3(&tLl}qSMd|J1@I=^lir<;e2(#w?{1gC0*g~3_V?|{mICi zf?%8#~U>-8}QW5t%Z4lEHLY0devSaen0N4xL;_$LDDR;^hTb=TStqy{W+ zh?4mSA)>}*ZdM*pYUG#1)ldlBY(+YhcQGbk@$*r<*FDHFn;Rhqt9}u;lL%y2qk1>l5?#=)g0{kBW5KCmDG#irZGw{Y37U!Kj0wbKTzVpnM7;C91A$86G}xh4~*Cxt}e5 z)*W~eAH4GPV)8TPAlB)gXsQtLo}5 z4KG_;9iFwU;o|V*>bjbSFe&J6vPf-?NwIxP$_j&F$RfwW{K<%?fIpcW(4)&8=g-o^ za*+oP;c=%|fQyW~R{*!U*d*KN#nZ$$+nlshK(nkOzYx(daL3Eqp0p zBXPi*Xyh>Q>3*U@WK+iIui z;W-svTm&ylWV08wxrv$$v$6V2cAv zZ~_bR162iq1%;<9C^)66FqWMt%V{kuNMtu}EO0_wCMs!*_a(|n+Az|1S~i5DhbQg| zU3EHJBT^Fdu_x!hl$T7vB(3Cu7fpP;X+%pKc}`5b z6cc&=_}q-qWD||DESg`nL@!<(6HV0;z8#?WPKA=d7CP(sy~en<@w?TyzQgbJ#?_lk zZRksqZ5(hL?yJdxM*tVj!2z?S~{c0+1gX|n5jGycWpRyzD)+7R%neZ zZEji`3|)07$y-4|ttg7DOML2PigR1#($F1y;;#i0SKo?vMeAA9Hn*!`C9YO*;!`*A zyR|UTX}qD^?{mMUv7&R!)i)sp?vz+qF>z1mj`qew+^~+^9k29}TS4$`WoO8!=Mz_d ziKwPcu<=HghHlt-N+de*>Npv^p}e^%8f=(0jg)rMKyAL1F9_X!UY}lx$h5&tqj$fg zTzPzOrO6fLKvo5hekqxelo6ffOJnzRTxuHm_#iQrFK|EN6S}>im8)(q4($Gei3VTC zJTh%mCuK0|`E7*(nzDNNl0=b$+iiuD$%;h|PA6pbDwe&Nf;Ktm|x^$F^R+gX6Z| zOK{oN`;;I02VA!G4rHO$UU3R8OY^%C(|k?0vH#Yq4IOH|RYWnWQ|-6Rt*5Gi3wHm( zHs7YvUL~czs>XTswCC1~a^cp<#zbUYYowam%6%LfbVVYv(YB7p($uy+x_jH+(|f}S z&G$%-1)_(OvREN)oF;y@y4&@A+&GDku+UYvlBW}Bf7g5w2QhDZTq2=)$NNZyYDt2o z=n9hkOmJ^cJXFB~4~)|8B758be%brxOX#-bg8NOb$; zf00EJ4NK}KzPRBmiOr@iu{ogE?!QPp>>1p2-r(I5n@!62jR_?h$(bS}HpYHRRLxiJ zV?a_A|LI}rHw+>d!6&~k~_aMhbNH`OvW_#LI{NvUn; z1v-<l~^UV}~Uwf}vQbovJlamdwJo*m_M1o0%Y$#Ddv8Su1xnopehy|xXY z45*IIt5JgV9Fm!$KkSa@Is%q(x*u_R?esK==)sDbEtqD2DZEt+Oj~-(){Kt<>Y|-TcSvH&uy>z5`l0ym3*LR^=(Zuf zdhJR~8EBk2a$0IuuU*Y&I*gPdk?wqx?n)kXAP>$ECTnX}uI`gW>YYx?c1c_Xqq(q; zOZo`Ux!eA|CxPdAJbKIghsXDBfpqf zNLKH7DLZdhb5orY4K_a%zO$uZN{(9$@BY5%;a|TRe0ayJS(6hxcD&TPXooA)877-6 zjtbpTHqxcx9PS4fBvnM4?&hYf(ooATB{wqA&g5>x6S|{V)v|R~&V)#~u})LcC5020 zicECBoeNSo@|RgQBjbHgtuk&+M1=R z)fowkJ}XCe728|U5On2EdXBkZ0V+?n|iXfiy)b6gf3YSJH06b}sDo|VJ=dHdu5 z>2B2nP`}k^_$bB~`J`TH4(-I|CmCg)V<*qC(>zD&jhe5_agrZlp?!pfp_U(ekqqGx zz9P>-dxRke{}C9WWv#SnUm08MW$`QukqSLAlE3~CTPu{Gm4(}?`7RV}+( znVNao2#?aOkr_GE+*Ig92l>%8Z$c<9ZjTH_8h0-AzE3DYt`5A6Z~oD=_GbM|d;3GP z@7rE@$f$>k9%lw|r={%Lo^?#oj*0he8VD_Vq>=6mQ^Y%+eE@!)7Pg!)*V@YOyh=oFtdDuDj^i}ab=`+2j7Zy_Rh-Cb$$_);aW&{Y zy`sGh7a6PsX#9Q&6^sC;;l_b(MD5y}_)IL%n=fZ|ENp(Sca(23>d&JVG`|;&O<`;~ z>WM`8%oVNYP5W0OGIM)YsZOs{Al0UtWFZ>NLkwt-)DbUIZIJ~K^#`em(xrVb?gN2d5krTBA_{kVzZ5dV7X z&rR{?S${{*a?zDokpWcCmbRwe?>^HS8Ngysq;O$X=!Q0{zKwboYWX6=TYcfy)He59 zm^#6$0YQ~H1!S0&VOn?Pd+JMVm(S*wm zcAoZWW3s%^$+&FjSA5zY-<8$d3tfiG#&?5Hd)TMF?9B=CH$&9E%@pR%U7Qg{s`e-Y}!TpGO0|Ce`vnK&5v29--0jo z$DqB+9!AF1{mq+ z)7h-Ia4*mUyGChPiu+sGnJ%5rU&eLWE#Odvf#-wY1y_TQ2c0ex#*cootO1L_C^!tf z3}h-7-wd7xeil3f{1!MI{65ID$A1cr1%D2X2Ok6{fV;sn!KXp;CjL8c64(Jw276KG zr+_(N30MG51&;uygG0e{!ExXW@NBRYoC?ka&jZWBi^198CEz@8BX~a81XhCAfb+rY zK*}WkMeqXfKfw#Z?}3ZJC&6Xl^WX~b_uxwKHLwTiJiem zcf69njWn+D;VR_9=KCYak1NRjIJfr(B#U71) z0V^|s`i9tbO2ARzG%x}#2lbqDzze~-;8JiNxB{e4Gdgk42iM_W0IJ{SW597e`-R|U zkUlS-0GEIoZ=rD|egjwq>Miw3@K%szw|E=42D}fP1wICrgTDsP1)lQ=|nW2X}A5ZY5ynHSCokSGo z>Ur~9n+BQ!S>3C1!?4zI9;@}1@vR7Zsr)lr%l;2>Zvv0i)Bca&H?r?hib~NcMM_GA zvQ;EeN@OQX$dX7>H-$TuR_)r;qE#tcXi=%qCM~2zv}w`4_`k1n?)%P%KF{-gp6By> z{pa4#scjir#qcfhIb!&0p<=Yumam6G!CjJ$c~ zXtOjr;?1)JMdeCQwgJeu=_`JAd{d-}Ba;E4)4VChT)?nn{4JYe*l(|<82P41OfCt| zJ{YCUJ8z&jN}BH?EndW5O1a@jLU8jnZAf#bLt`u z3~tjG(QnJtMY;?fFH5umXrr?p)QW{)g%X&}#f)_mSkss<7!V}Q*a_EV;BK@wa-LtBo?NVC8pxj;04X`5?X_>)`^j@>C7RF^YG7{9q((1VX( z3;&jK;WEM)wvY>yCrU31Xwph9(DId5niKwBEMTuw6!y-r<9B92&xi$P08b5>j0SE( z1NvmvDRQrB;oi~0O_huc#cw8KzOY>8O3&g6N(=TC!@<}ReHqCZF$q@df;5oIN*3q^ zlmi9=6@asW822SE0%D3ik*4fbfxCbh2PU2bwgdvtyc#b08L=i7U#0wYk zAlKLfGL(`86ObeaNHVzaXG`#!`b72NHCaV<=QWLv(&jZyjnd>b1w^&uHO-7tncqaS zJ5e%%Nd$Di=F&JfLw-CXdUTn|Aew?SxBMg5{Eu9dmfWUUm^Rf#l1zHV)>L004^CiK zqY2sYP_m@cRoHoq-#xr9g%X%D0aD8)BLRYFp}oRzSvQfxnSjiNqX{?FC^9Su`oS53 zZP)L>&xLJyKrG#pf?bDghep5};a9fRANp^hoIuDweP~lFoGM603ki~&esPcyx~VCU z5xO_BPLX?WGk3FAnJHisP`*83Da(st$=pV(q-VJc>ykR09GaAsIbQ%n% z-;_Z+NHj52N`|oG@aF28C?$V_ANw;8hbN|6|D+Ru=4o?^Z8Q*v=Fe@ki72+|MZlY< z%ZZjMw$UXA2EKWc#QfTX!MK`|B{TTGA1i6}>GS=U3cT-13DWdM&*8mP=38ml^1etb zEsDqecypDdm6B=MWcsKtyf0Epi~NcERYqx%JL9b-p|ptRE|@_EGnvf$E*->eis_|f zd6#d4u?USsAOL9KlWL=dUm@Wd%u}XLHsIgASn?j&jc1yJydy&ox0}G6@Dr6!Xqvgg_>JwB*f4<5PJwo)85+LM{w9cymlR{IXOh>2&#A3Y
    ds`lq$NOyYCFxt!&LPdfdegK$Zh*k^#=E94r)@$5{j5c%q ztMCc}kEX21Xfs!Q=2FdT_Ict1f1?(|5XzGjLg@helB8gaP`Hf_4U8J#@gEFCT1_N| z_|5VQVTLA@I1TJ(_(e?*^TkeXITbYliw+zMiy4V+aahzUr$TRr4LQS(iB3$aq{PG> zyrTR9VzD1vPDL9GE)t&Q7ZHg~;+%Hi>HZGr=QYEFIaIwpHkSWBvTsJLhcE((-n)oE zMmRtkDkw&wdrS+rYYTUBGdClOX^M2VfJq5c8G8cz!cxag2Gf1mEh4+a+ffyPk zl1MfNssJgRI#3m;DR6fJzC?LY9VUP3XcoY-!!x4T;Tch~blwoD{sNDNbwtV1SwKt- zIXVr9p|J2>#5*J6m56wyBHn!wuUf==DdN$yvGQB$DkzXb|aZ=vZbAgF1PA%P-J2unRC4dq+TM^GFJ(*;&d7*X`k zfEs-3_Ku)J^QZAl^B)Ind#AQZX}4^fYTyYPv8Zh}8@(6^?*gQJdcsm(h0lzUL?XG% zfRz6mKziBpVOb4sM6nv&h+@x@V|lLx;g~|Fqn3?s;H+h(q)PDlbF}E2odzlxLCf=S zC}x}V2+5Z!m={RN0hjknMrkRPCf^FDIilxX3)*y13a-&w{6$H?bop7of1a93q)USr z)n$m2bX3QnHcr%}(5=xg)ouhah6QLI7hL1xW9K4AntdLVyy|K!^`!PE86(a~=?i ziF<&uz&xNF@FGwiSPoPK-UliH>ED<#@Con-(yte|UjgaYw-OkfRLziYox-@wp-RxcZYh2~EZjpP?) zA{uwbsQ^q8bj&gHy210Np$aRwsO+W-(*ja{JYlK+xxtdTh%%-;76Vm)mw+VMF9Ye_ zUjb4%pnFN|54;LA1YQFg0Vy6mAGs-8@vyACBZ`%GM9DJWd@S#lARP0K*m;4dX#OlL zLyQW=nc-L$Glbc&5Gl>9B*Y+>{ua2V3<@tLB(~pQPmQonPvYJp@<$ zZT)qultKE-EX+f|bcvy<3n>OG<4Q5kzByM}uR8j;$5iI5TjBRS&Gw|g{_e|?;1U}0 zA=CWbqohT0gnB_TLjUH2V`?`O7~kLi^uJ6vNH$CTESay&_6e}x;lI8S8wPATAHCP_aPtj+zV7bd%TJ7>FTA?Y1 zogRmie~~`WsO9ir)tDI@YV*Hqj4xb5(@Q{536PlBb?QxaN6Vv zBlK@M7Zd=$mNkOzNpX9?_HR`qCiq4AMYXCC(g-Usf2t9p9>Z1`3P|_ygq4IH21{l? zN}cX~5J)}AAz*vpVIV#05g_I3D3IRHY*==#g(!Beg(!AZ#PVJV!il7W3;hbo1ec${ zjEQLc!AsEQC?(M=;U(yDqUIJ`tAWPCEau6ItuI9L#+)2^C@g~LG7R)2f`r@i1`SZ z2&={jm3a)c9#^WMf37fx;6q0E!l}a0BaoY{a86C=PZfr?caouSTNvth{FW6a82-jB zx+l6P#XSJq@6Q!xte;=_e_d(lRS6B<%M-S_h)6?apeI-Y)B`RD4gszJngdq?ZGf3T z5|Q{ON~F2T^*~SHMqn5aQ~Zg`f!lye`tnCfq*}e@i%&|mYD}FYkt!#s)e_7mJs<3I|NBksdOw}gZApN8}(=>4!aM>pD!_+-M(lG2JIml)nxx8`og5tX|xTOT3z$> zBePI^{BcoS+6>F=w?!tF(9ToAp50>W*%U{xSx2ySCsmwp^)_{s1PaB2S$#N-*$^uD zB}cmqJQ0U&Wg9`QgjHjHsPh?W2)z`BqT1H-BVhx4sa8^rAVV!rju4h+pE6qb2cr)V zwmb^AsD=MA>LZwT#diEOAZ?z0TZ$yO+dEK{%| zq2q5OHm zp#w{ExMXb5s;Ioi0jXnm1k!+U0?-jS3Fr!R0fqx71F1uw3Z!A78!!>*4%`Kt2Bc3u z4`43P6L<#b4LlFTjA3FiFaUTBh^EKv4z&Z`9$f3RLPJ`Cqp$^oDi03 z8kKU(K7is-80wr2MAfKSO|xZGQ?}{@5L{^fRLg`zNz#`{$}O3SM4uy*g|UEiZ%d5W*y#9P-7p! zv8H-0GL$EZYY7}7ddb2D=;7~$)e|jWKb3~S;PuPnMNuAlAa*3Wn&0o^&vu0JsgI3Ktlm;^iy zOaTtV8%YCN0W*M3z~w-61DusWh_Y!5sL+y*=e+yOic#JX(G5#TA{Q6SbAGydO!$KjShdEj>_v&Q%Y zklqKyr?RFpVMRDmtOzGcmZO1OuskgR#RwHvbwv7hT?ArAe9>)1Yl@fwU{VD<_yYX| z80}EF|5`}__So8D_bs+N4`K8#M5q7D{ms~S#SFdX2(_FzU@w=N=~$>Z8LNyvY3Ox& zJCc@@$iHYg870rPQRa?P>pe=jw@pheC&}&cGg7FPzzY9%quv*bHpP%e5ewnY+~#|e z{{xL8zts|${wbxu?sER4W`b!<4)gGuIGBAV$wpOIjk6xtMGUnM*A#}jiYrZIs&Nbv zp7k98Y8k`B$UwkL5%EZbv=le^4q=Q?T(lH7n_Kv|6gM=AAR~<5QrzG>=`a5O7jZ** zB5{LnC5{EvT*ipR&Gcx0|9?!}WC>Cyp!<3PN%pOTC6gh=iksEIc5tr&b^&Grdjq!u zX9Bka=L2^De*q5wIY@6UPztyUr~=##YzNE+(uj@1k(k*B#ORT;AGi^i1El9Ce`?+| zkH9u>qS)q56x+O69yM>4hpD2!YKBROn%^V_?-*USjYGu(W&{L0MmJ0oeCa37FQA~Y z^O~TnVHIuyAwVCFX+%yl5wBD_CZ}}FsVRL_lWBQ$l+rOw=TC8MK3>__)YUM$pOhh!RjQ}Gn zWR01Rg+3XmkobdQ0;9`+r$R>Q82ZTHnqvN<3IeJzpa?=xAW#gbwn)hPl6JAj~F8q zbS(uX_AdR!e-RRCJ}#sEMP!8WTMEj{E&N*w%4ozjY%wmQJdvQR1e&)Nlo3$)|4$6d zm``hEYGMLI_w@u#f>1)hw}qghEKC4u0wgM7yzsUP6s{(h5=syBY-ql6$Km*oCTzDS`5$w7zf-3oC7=nj0YYD zCIC&5{}kYGU?R{4I3H*STma+?{OMP6GTf_y3xTvZY!Q&ko8psTUJT0$W};ZZOcX1a zSsn>ymiMQcwGd3=3u^||Ec!+v9tozoE&N^Z%7ryc68^JV_-}!~aKumP%xvNRld23x zEi!D1jPpMl@zVfBXz0G4aP)(X7w|7&giBc{ z1Ja1U9Hs(6*vG`1vCO; z9V%xKun}ks#42*mU?A-_ru2pYhXO|eO@Z;iVL*D%%Nji!_ZZkh zR#KiQE`56q|3i(A!XYfa|3ICl8gv&{Xz0G4aL{1>s({%AHH%tq51=+sAJ_{x07y08 z2sjKl95@m<0yqU|4x9?K0D1vO0`CEBfOKD5pg-Qs7$Bw;nRGB!$QcVarUE&3Kx%FF zz+#{ikd|a&k76SAoQ^! ze+`(m?>#NN_q34S)7;YK$15GT_?15T7e<8=dgn;nihnA1OmsczCA^s~KY7{T`A?J< zzsVm#Y95r5)Q~&O@r#cO5g%v5w~;U{!oLJ1o1#?vFHjDGPs8#2i9g0S4c04jOm&f{ z!?WSfoEGK9T!a3HC}WjbQ}h?1=9HIhNi75xqBUmZy>Wg*lq58vIjlgSG~&l#SG)SlFfJV zLYHPSxu=^&qd~$7ST)W$5mgOp9>Z(IHIbnzkrnznQ{%Knm1LzlqDg@*3o2}f^OX8}LF4H`DwQ9xB7AE*yZ2h#Lq zCeQ-77C0V=&C$#%*$qHnxHkd=fLnm!z-_=7;C5gVa5s>K-FtwGf%|}&zj6@GOu7L?KWQSOgpnya==e76WN;cNrK4ECG@ry9$g0UIQiquLG9>Dc&039Uu+* zs(~kfkAU=T2;~@w=YVySGl~da0$;(6P27oZfvT;92|v3@C6VbIOk>SaM$_)$(lkpnhsB*kKUTR3 z%G^0>z2_+RPM`@aYv?FaW;XmO;yx*`Y8*XW*_J|eyXB0|IPl1j9~r9mG~y#SSzA~# zLjOe|n%DbLthdOYK2*4Z&X>}$XyM=TLuESrjaqcRlqZU72Rpb~y{EZf58(o_fAOi3 zri#9sok7+{bY_)2RetL9mca@Q-NzG_I{GA7GD%|WAN++tdWR`MY6Gc2>Xg%fU4R($ zGgJN;^fUhimjDNWzZ7T!Tn41Jk^vk6Tn?nNSOKImTM4A+!^Z-1AIcY7SBPTk3Q;(& z3pIr0QJY|Sw73TyBvkuA0rNOJ@w2Jc&@qX>)qkVqhgCO3(pTPGwCHtVBGMNvdR@3! z;G#F3x{&Teel+k%wT^G`51v&={rl7Zk3YGKt(nS$#Up)@2rGKcL8-w?a;WfGivF&! zRFH_GOi)#|gcX_t0)qU=P*o*bXtNpa@2c8-%^H2Vc);qnsA`lZ#orG*R2dh>a6@Kz z-~_$azbPoF!2G>G| zusB3bAd#G~$ReH}8N#148w)|w(`YQlA7vtb(e&Lc1->%}m1;*X8uub_;ZmZ#dkQnD$>a*x!BZw3Dt z_)aF`G=|Q{0;%!SSrnAv#f>KX#zb6}}T1 zoctIlfiSgioF&s_|3xXeE2gOUR3_GsZxoqF?K0@T5g z5yq!ZUFaf7O46w1V3qDk_viy_{JUm^M@KnL4~vMhcN)pm3;2qRFnKUq)eHIsOa({v z!kfeX@MUHesdE(?x~C^BJ(KX6W5ihLid9!kM;!~KJjDSi!KJY55;>ySC2~Z`GUraR zyf1=q%$s1pM8`?+zna=(BsLc#v1mzBJ;<)%)+=?v&$)3Df=wsTtSS2J({gcYn#C@I zdlIbB zP=h5yk4Z)XfvAirELkc`GD3gqASDK0XQ?sFPR2CGD$}t0$6%0hNf`KSmW(fn!BZ0&6%;{{^eu2IU6CQC$vAH?j<8m1Wm8LlNBCaF`^yW#P1qclJks%c0^lNsOH%S(8E=_yUThM&|=mwi> zIB?D|Yua$Mk%Q*3B;g^>r3D{UhEHCcuKpdXry!POt60>(iE|es6H1_l6kWrZhf0Xd zAQtd0=w4(-!P1*%o{Jbv{XYw2InDD!HC&ua%K5ZGh2I_bj7__0{^ZUqO?wj%1N9{6K@oojBKlPs8qzcTk&vIQp0XqAZPTX&GVzc zgz-f>R2pRDTcx82t~j@h@r9x9l3S&@vWb`KY!^hg!Ngw-Hx*7aQyL>}s8k zIuqtmvvky2rGsfKq%#y(GO>BxR<%xtYOy%iq**%cTBW1Ggh|1bo@>jXE0wL&>A-|J z-z*)CR_V|W4{>fUTv5~<=RSo+t<%wD!WcA5r(>&hNCJv;578Ai|7eI!>vZVXsyH{P zSvp#+(&@~E*?=(AW+LC5$4Cc`ztqDnOqg&%-GBod5nHwkZ6*vo7nx_#$+oT2=?Wil zE=|=6-@A6Jbhf|mKwfsZ&hq**%M*mRo7OkF07ZL>T}wz^k$CJe0- zkp}hda)N*Bd-Y(#&$>Joje8WHk#T z)hZ0c4bq{xEn$Azw91bj6NcsuNw&CLDI3;0KYf`nBwK{(=(S2mp9wP#R|Mk}?>w-e zbvpf+Ftln&n2vs{bow)44&X{*^sL&QZJiGF;Nslz&C==LDjh>641Hvf5qG5aMvmq( za{&2pA2dtHuvI!nOc*KwGBqaEsNgNr83-S7Zr^6<7_~}=dL(f!ja{e>j#OE;xOFZVA>uFv1+F&3@$jO9;*6-!8J-x&!zaQ==%!Fqa~SOe zEQ&bVT!w)jL>Q*OfTP85JmP%3LPElP*iaM(9RCPEKb9eiWg&?5`(9&Paok#QNOt^A znW&gn99m~jMvtQ{7;mf=aC(Y3+XS5M497z_DTP@5MPUvJ!WfA-^ply4zKC;8z!@as zR0ueR498=J-wYpUKw}M48sO08y5Ah4Y6Y=~W=ozVh0w5^Uw`3XyEI2w7d?E0hXnp+ zMY8`2Di zx(8{D5~ldqZ6-o4qy0_jU^f*CU4qT)LMO9wUFcwyNeW%#1^bpoZf3ix(1jZdb{z;g ztm=p6E@*xcI+;u`8`V5Kq9WL-NQPpTKYMti<_2?`GiZY}UPLP?M2-|HUi?SwP#9-@ynkH60Mc*J@5MMTVq48V;;m|Zq_X}(C>!#5C< zLJZ9`+075l5Qf}j zm~hR$co?QO?oGqwX2zUjZr*%UPhK>d?2qoulDae)Y9`vs<2{@AF2twV{&5I1i5>`s z`ZRN8j5Mq##VXKswS$;!o*4MS3#mZeCM&0`qt2QE%4;-H8cxDKLMRzaQ`$ zi7+DuGr|64df^C@DhT(l(p!NrOHKZDdQh~$DMXlSf(k&d`cKcRjc_j!Mouuu`@82Y zM7ZGy^UI9A@86Z*C1gC#0?$0^U+0g;LQx14CkXd<&wB~sk`Ttu@?WP%*-sFJVMG4; zd8gw>`3R?D{jby0hWA84n17X?1k#H}xLC9`GQ#ph`|NLNWoYdj#zy&JEcDyqkI|E~N>_NrVEa%6g5sE373wL&qau6*{r$mF0EZHz2`NEZX@~q3qIUeV)@K-#1$m$$c=DtsFcP!!8wQt`P<_FEq?5fKs znnF4$X%iFsKkk>~xHn(v+S_>$Gc;GN%xyd5a&MCxQ^th8`quSaRQWMxV>0-*6T;Q| z`#d#CT{h;#)Q@dk7##-SOZ@nL!fT4w$_eMoeyVqG!sH7ng;M7F-rb=gciZ8kRj-9l zOAdEd!{-6RmwkWdfYs00Pv56ZHZoeX_&W1D6yepH;<5%F?W)e%tdVW#UJ}aa?gwAS zabWe8W5#*MRW*Y-XHGeydW%!~kMoOaI+%5oYFa;Jkj=jPW3bMX;qMz;`ZU-_Im)%i zwRbx2q*2&;3_rue^g^iefC)bTot+c|_1Ip7~3KtxH93BxC0Npg&=oHm8=zNqK_ zKsvFJZc(w}evxca|LM8TY&-iWp2jOeP%8gj7JUAJ0>xnPzbl2f=%~Pu|1zrRE&iv^ z9Y^Ea|Gff)KwRg*8}GNxs*gF)0=4P zGY|X!FlpRtpf(k%;edbOW^7UejQ@#@w@gb^-~$H#zsTwzk{7*)0fUYIfx`J~brBW( zKT%fyCTY=w{C>&kUTN${)1HzXI~5&_x3WOv%M0VG?E;Ej!99VauCCv!@cP{7OH~(6&?@7qr z0nu*NR;3De9!wctzIUHNWsjkpD#t{}ic9Uh%Fg6A9_^}g{>Y@Yt4@|G?KqXUDNn4I zbV?hK!{yp^% z@i!Oy+1>g++3T?Vb;sPHQJjKpj}7u~S?s7DQ?csq@EPaJw|{TEb2F$uaMX{=(1F$| z0sG7HJnu#7OISYZByQwkC%flzyu!m_Guw>cVxy5ire$8P?A=;b=cow^PUWhnzgC&C7dz?8upQ@{f;+ zue)(5YKYD47YAZ)Y*g=YUxL@}L8Pjj&yyrm-<2bRW+?1-4T_U1ReZX!NoGaQ9FFXv zO;U3$S17%`u}yl>^!MD(zltOS-Cevtmjw7F&NL3`@LV!Dbe86=Uyt-|rn<)6Q@%Rp zVL({*iLYN9PA?gC`gr@>OAdP0ZM$Td>PZA0aog2YQDj(JmdoE%*|$?p)zpJU zzUzCu_j$EpTTry@iWy?rk}@02j1^xd2S`PXyGFy_oEwYa>;IeLfYm}nl8U%%wW za)r~kpB-;_5Z|@>zTB-FHy4h4eCyqpBM+yC^6quH*6#HDsXb17s);!m7GrZ58eOzndIarD>Dj(!d<=FE^Wly{t+@+Rc6}oAu^~LWMI=VqDP?@gZJ40(O0F z=UHZN6FB;QOz4O)LFG9QT<=u+%T=4dHN897DW@R&!lwMHd8LPK>YH*6wBDaOl~#1} ziouE_PCK_9)oo*3c5;Pe#kJlpRnBJuDs}qB`5(y}<8@w4bGrLVy|6xmPs<(MvPAxz zW_26a^ae5dufVY|)auQ>1KH2?Bx~>UK1;F`l;3C4z9?})LNay zYcnNNbAd)SXZ`(e`UlsQ7-ze?$JAYEp9TOZ!#6_b5> zXHDI^=Vc%2ba_?h{0?8Zw2WToTkzB>MkSCp9Osm)adSiQ)YHlpQpMxN=~jiWSWIt}WhD)GL+Y3z}7e2Z53#Tqswc>elO`}|DN&tLHwWw(cC zm0bO1oW{$S%2+qsx!}+czg@e>X7WsBvopJ0{+26~Qj(+W;NIY&7}98c&8%|9V#T7U zQL3&V#B?lP6o!WsCR)VYwW%;(BU!7zdH^`1yVV? z)3uHVR~c^T)6ggRb!_mJeYW8@!!+H$^y_0?Q)67^pCxr+o{w{#b2q;a_Rl^X7TaEw ztr?J!WY8mPbML&I3s1jpuKGFj>W4dXe%6&11ZOAybUnOwgv{o{^GuTV9@N$9`%YbI z&;aW`og-rmrHZGeY3ceC@>dVcsLStC zR+%OF>O;b`{Y8E@p&7Oz{j;2+>x@;0W=qNF1Uc(U>-m|fJdNG8dWUVnQh&{i?LGUX zoqAMI@_tKt*-P)LpJ#O%YAa9G6sY|u+ofQ}OY4zvIK%9OZdv#j^^!nS>)MfVF+Zo~ z2Kzl|bWON0SjOqiEEC($hjL`{-fmXiVszCkE#jx{3Tpp@gNnGJx01xCoVFHwuv-Z0*v!lV|6Ba{V>ed%f;hRJ~W@V{TxFOYaA%Hf4TpyR*k3l?=N`Wi{7f>N*C$ z)Z&)pwX=U3*Zz^Uy-7vir9+l1zifKqi`>v*Z!FE^k`|7bF!by&zwu(jC%2zw95#2u zVB>T5263}B1}2?xF+6g6mBEYPn*$zlRg9KB3)bDWG`ssR!-k%hr|S2xv-j4S(=)4E zx3#s}>K}Bw_BuMdPnW8bde)vlde4*{(W_BwrvABENBXY2^s(Rmt%LiYOHNoN7*m>=w73OyJE{)$Fl^DCC^T^p( zvLxbuUb#5uV84QpMV1LOs=k?o)i3)N8nQ4qcf@l|+ zJI5z2KKsQff6vefkJaMG-%dE~SU2RcYqgX1)P=A8ryN?eee%GJm+s=g-x5$ zf4@hf=AfG6Ge19iQ+nue<&MZFZbydI23P)iJ|H0PSsR78rzT^1G$?65eKTp()>mGQ zp0A%i?q7E^<#m0U@!prG+yY;`&1?I!_(u7UO(AQ3WlK(M>Z{!Gn`YeI?<3D|`Wl_% z_QkfI^I;yZ=zWjjNpDqLtlzD)kZIheSMu@Os`Ss-njAiPy3ek38GQ1tV(O23L!OMd zU+{5e6@T-Q>Kk1@K72NI@PoVZ!4(bu*>{fJZMZf6u>Ng{?cQZZ*R#rl!fS83chtS1 z{A=2Uo+~$;Pv~>+;%IY?;;WNfioOq9b#Ci|n}w_DRL<@`U|+KN!cx4c%a`7%$X$+- zvb;KK#=>hIZ=NmHKOuJAeD#5hm>)Bi^&6?TyhE@06&ptET)o%Xcg_13-Bw*le6;dQ zalz)&{Rx{^w>8$J%KeznDI)g!}=~5nJ7f-8ESQ5xDUHWQc zV%q)BBl!zPOQh!NTue#vUB^44IC(+s!On^0_a4l5zPcjGXQyNGP>uGB6e4af%qn}F zz2>C$?&}i%d%lKl-y1*sWzJaD-Un3oh3)TtasNJz`R{i1e`&OH*2L)T7G}qHobUZ5 z>%*v_TlV~n-?nkh>8)jv=X0NTkUV;Nm-(^OYYUFc-@kU)^pMgKZ>7axar>43LY zgCBSVcRyiLv9Y1o(F*`?9yTUH-jB@ zYMYh6&HS=&C-1&!64v*z{b*}>-L$#`uGvE@q}l|R?n?jAl_ZT)1k-8#pX zbuzs9c}r?g=`1y+-B zoM79Sb6b@ZN{Xi+itJr1;boVVSNSnB%yL=N%^wNl{oiN~zBkFf=LyAL=53B$Y&f`m zTZ+6^$AkCh&#MR+k}>;+USpTg72=f8uj1pAA`N!C#AcH``A)E{sr0 zi!B-K{xoNNjhlIs^SJJrb)OUFy49%$~URKn3(AA9OP^ zJvQa_wDM;Y4k9i@9Sf&(!oS$){ewz|BH8(xpAJqa!MoCUyi)e?cH`4 zo7EZ(*+cgKygE(AO7e~UET7bO*VB7gKB%+!;_DdO|LefcD=h9E>fv<*>Ncs)bYC3Pu4dr%e#Y5* zN2jS+)tZTG&*$aO%6Rmo?I*XXKd01>&KxoEU02BkA(mbvZtc0wzgU_*IKjkX-W~TI z=R%L9&WgYD=F0i7JDsM;9@}?~UkN71nq3iJL3m&XkC{l>U^^ z@8>?kqoK)rZn6q zU0UIzX{h!kyFle>w>>SMZVi|jF--hv`B;ftHa8TKf9{aY4IY%c``gIFnIZS{FW=c$ z@YQ_4-H<0%)o#%b?kJS*EgwFmN2S3&$12XyOBIfZXUe?Vbv@dcJL$-Iozj!5*5;ks zq0~z(Z<9xx6zPldm4^?>)$8^Ti(fQ(x}8d)SEs$l{Pl;=dSJ1Pdw-^6<_+zFhTF=0 zW*$mTl{}W)W%HS*JL>Xo8O@fuyj6+wb>M25-Aif|Gd1P~DdbDf7_Oh;8?vU>$Bi2t z?AWLk;^m#}XK?quH)mXkhb#V{L^_aew;{&_kP%^ zTK%5>=*2hVKYYJs=VyP|Yx2-s$Lre)I8nFq4IYoF-eEEP?y8FI<>zPIywmu7RA7D3 zz|hJc`vX#}?|J5xSxV?f8i{v$wnx^^ss%YAkTUKh=w{jDI zYE@3B^}a<1U-`W65goK`gV>A}vKwS1vtKG2n?*xacXl8>E*~D z(==IrW6Anww@)j?KWI2EcfY#p!kag4y}R{zYg_K%l$v&Q4p>X5PI0>Hf5b+~L zy8?Q6m3g-NJUYKurSlAOo9a)U zdarfmWKo*akrf8IN4M=fS!UekT7~2a=PH-pI+X!uj`+v*JMT3n&waY4Sf4Pxl}F`H z4?ZWqWQ%K?YE6ByhIDHG9W)Is1{ixU(9?H1=NocCVs1>M)g;$l3mq(07hkGOlP)jH zAN{SNF6~KUWy!u=2l?Eb1p7@q{UwVswMxensX97U>L|}{48Q5sV6nVkPQ}E*xwUFq znYk5hcuA`lXl71X&&k#}sQ>MLwsFb2+8B5DrjQV=TNY;3*IX4htxD3}x_GntlU;|c zwNGcqc)hEu*;)6Y?D@GWp6eTVhm{b;- zWL;3`n%`(AyL#8sw&|;{yItkTSXCI>hJN$r$J97oIhpV7ye%t4Jtf`jPR44*HB}Xv zk`)o&6>h2 zog-CHe_Shl_XfkN;ABhyTnUbSeKXv4-xqhyuo~+={rszpYvx^$%EITrkNpR~ZeoW& zJk!iB+HR1P5zu>cR*$C_a`JvwZT@=a!_}dsbwB4MW(OCnJ?#4P@Mf72dy`D&_0`fn zI7mwUUFSa51EdUNB5lKKjyeXHeT=i_8T+^&jw$(8G44i9tU?6Ayc;?K}{NZ5eTH)=z_Ij+--O)7;?ZA9t&Y#dF zzb->EtFmlb!iQHjentC3Y%@ZmowE85RW+{Dk&()l)^!e2G4s<~y({+V(gNEZ+cPx% zPo?$g`M#v!(aW;*EoXmLc~{mp=%^LcoKo0T_M=A{&&(|2a6)*Q?uoz>^)Dl9txc!? zjEQ^T7o2+`!L{*?lg!}HwkEUkWO5E|QQiDD&Fret3f-T~dJk?<&|vYTTcKjsr>98C z?0z6wQuIANeOWH;%{%DLGL*Xpq? zywlUmHeI&Hbnfigskdf-xqTg9d#%^lTV2#4F!!VCp!b*Be$H%CIn-mPa->~``Y=~D zwON!Wdc5Sz=x*yd0%s$#n?_^b%-akC8dySBtsXtSzvG0*t=lXrTw66c)t^32*rJtQS z`T6I_&Qo$C9vH2SSJ#XwWhq(&U?cz(lyT&F)ZJ#}| z^NKi$tSfUaUileP(C^@k1j|KXCf}+;zb&f|&RrN16!U88bi)Z^fgel;c^{Z3?K4B& z%u8>tzh`}+quRQmiA+vx{Mo>5gqGL+$9GnGbhZpI?`0Bl-4#mHD_&mJ4(XEv^l)G*_A&IdXJupHck9ot)oIA3xDZEWjnY zV8o>3cVwKtoLxL&=$`!X@oJA9Pbb`VeLSRYs&3pT!{6_JwH6fdtCQ4?1>!{rK``tLruba+~ z{Nk1q{ee?&`@V=b?`_iX9`CGOR2pS0R(>qe+x9tq)wfR$P1h=CyL;X}IoRdik5t9` zBc2SYn)$Jy`p9Pf!;f8WJQzIoSw*n?-8qa+g!-H<< zc67fm?U(ZT4J&(Iyw@k8Si^jDk;|m3=T;5-UU+lC*0U;gt4iz-?7p(}!sbht=Uluj zr}FNqrBu|lg)>H#p1s-ey4VT*j03C9m(BPQvs`avzZLbpI;`F~V#69==e?`Cy?DR! zQR0Qo1;t-BCG0QVVA6K=#&5A(GIPUp*T%GIyWTK=%(@TdbJJ4?87v;_A+SYxej{T;IDr^lQ$`+3^Q@tB&0twoi56{)^pry_>JG)97XY?a>ow?Ko~` zk@cnb`7J|7eb^TNbI;b(Yc}Sdk1RVX+2Q#y^IfNpFSwR^_}YE>BT9!%4~hXB~+CIH6VIg|H3=h(z>2o zBbSamcu{+wbezrQtN{l`Xe_xjRn{~h_wXW4S^x1SfoooQ$R|&E`*`@XHH-WfE-HUG z^wH7Mr4Ft!M!n2lJXKyeVRFn9^VfG3zBrzl{#NhH7TYzO&%1Ur=<|4!i^IIpVV{aW zO0T$WzH9D`A7?cNZ7v&^u5(;(^Je$O7nI#kAa_a|A=U7*kVFDnf+VF*e&!nZ@?tJxH7qm%23KIZlxP^E39}P8DmzHtr z6fthyj_bXfj?Y=BqEuWHwOqOKTAzKVcbjxju}<7EOXu!I|7g!Ru5v_a&aW$xm)E;& zf7h)+W3|oC{X?>?RHj{>W&cL<`ny!02bMk3eZN@LeeECXXtAR6K&Kvu?!8=h=gg6> z7whG$wk+=OR?&NlU7*yk^^T{LdK%wfy?pJUe*J!p@8Nu6?WVe_AB){*st&Aa7n5z= z@48Cb=)K}*wO0AO`Pxq&Wz3rD_NndY`YAu(O&pOKvOu!ytr1?97x~xsBn-|jy))0k zB=lSl_xM?-===?%4TlO9CtQ#wZ>>QMAR4n{aW+hU{O7 zy6S768D|;GEzxoeUFhF#*NA&Fi~5FD^<8=M#Aq3b`EL*9)vns6FnW&Wp?;l5-56o} zJ#>nG{rykp90M|TUOkxIB})E!oc{^0l~rvd-$6MFl-}cj5i$33saEpt^^gb5p27jZ z-)GfeRiwzM3n+O3>SO&XEkgh>OBv0L2)Py#px(oQp#nP(zV*^jxa)lt?smo znN~;8LQsTf+>{KRU_rZ@$)8fBRiju?&k?CZumwYC=>D@|Y2`7tU@@kQ!z!pR2hws2 ztQ1Y8gfS zyb$n6y0BiFjx(EILmuLVg)cO)X700!2DAY4%iuH0s2nkjBvxVJ zEN5Kwlk_=1c)zrj7SP5K{`JE8Hc*uzPyu3OBf&4@Un+c|j2p~+bqPQON{1X1T)^TwM=DuuP1i(!NanFhFtNcIQS50tVWS7ad@Ol3)_tjwTTd$04 zv(cCo_<#Gnyf@m-A6bi6to`5Ly*?=f} zu$%1Vm6BDUQibN64kC`f5j#^hQUHBM}L2eK6a=hwk;ziK6 zF%Ff9nwF$MM=MeE%aP@66;atDikAGdzNI4SzKD7zqG;(o8%|C{wHHxcMU=USvJp{E zB8s%yvZ=(2D4vK~Dx%hkDB6C?#vtWqEL9?+?usZ%c6bq0qt25+Q3;%=gl4jPfvFTiF;V(x!A_S??DmNZ%{}xIwC{L6JaiA8eIBVFh z!NWVS^#Pf}%pu_a(mk9N+=+nlK-~j%6Gw>w0}VEbU^B-@D*$`JO=Z*@NE=T204D(T zfD?h(G|4EnFaUZ9+~Gh&xJywR1^_)!J_CWYfqM{eF3=cAr&E{!^MR(ov%q1%3LupC zCEf#$06qYk0jaD|vzcy*w$QRlF^FQ7Vi3hD#b9~JJG2uKkLmA~*G?G!m*bq3-Oo|U z({`pm_xZHriHxx9TlV>B@N0S0EybY%Y!9p5^2I_ohj-xr`DmMNNCJJoA+#p2nr;M) z0StrER)t0HKY;E28Ra(yUvr{BFE^e&+#ecX7Qo+?4^t#0e%xw6OQ3t ziqjdl|8ai!Ou6ujc#pWeOPr|AMwio*DKp9Uqm=ngpU%Gz$--MjbhCXzrq)A3AhzJLF7?tjlc@BhE|{zrEY_N#M{j&m6CBgEO` z?+`N-V-2GU2L^+r`28Y2i_u0kjz=8v7gM9K&2T&M%jqARdE&Ldz_}Ocj5+$P+}WNv z(?Jil_#MqdU%4jt6v}ik2Dlz{VV=S!F%g%qSpzMJS`+Jtj8zL08?%&pMy>@m0H*;Pffc|oa2{|Ckma`)xE1(4U>h(B#LOtR z(W6he4ftIJ+z4C*#HareoNHi#8m0{a24 zgIpK|A{D?KAeHF;z=wgkz!qR0kYzs*xC@vMWO)n*vaCyZ4TF<8DLHMB@=*;`yekyt z6X}e7_^H|iYnKa?LL54XiqSuaOr(IS@mw5E4N9NGHORSEO&N=8;3vfT8vlYWHwU$> zp+%6P1Ld;h?b^_8lsx1219`na0a+5oIHWd2N-o|>`HY8EtaJ-1c~mcF$PFoCug@Lv z*6so%ig`=Ly4WA0#5n*0u16glujk2?llAVQ=+MP;=Rf^K z8crb0#gubqVw7{{hl>Hz!v&1aPd`D~od{)%G+NG)_t$K4%VGT|%gJ`h;k0Xds8_KL zd|NY?xaDwUF+BxHqw~|>CC4w)Z~|rd?AZ7Edbb?5SJTsKD<8j0POeD98eysA_4({G zx12mF2mf_`a$Rz$5t<%7R)0RFq}?qiU!+-L%g;cU9JU- z>*{M78nojw%WD}tl-Yy!S~jZqTcwguuVp^tWq2(+i5_yHDv(rO%O3UEN{eI)uVqWn zo?mgKD^KIKY^5vE5}wCl8gg5=x}NnP&k!Zgh@K#ugXYvUPWhBd~mTg z1P?|v)hp^SLS*F*w{e6p6Z7DjRkaK27GX?Djt@0pz{twwzC5)n8*A!URxgLFYPiXw zY(DLxAI;FB@X7_^+#%oyUz?J}yoH(76wa`O2Y$|?Y>uhCTTK^yw->7i1mEqg>J7o4 z)^S;I-0*duZ@K5xsd+cHVAwkk7f9u;>Sn=rd#i$F4(Z+As$LU(x3{VS42-F~RZ+DK zc--Eq{vi0Ny;X6q#$G!`O7;%b8;?8dtHIeOA{S4Nl#7SyWBRF_0DaRYmXXkQRJ`9IsF`?cSqzGIcn7^qwn8!lJoM=epcoLBL4g$Fh;R0PM!K9=TOv+~* z!GFnnPf^0O5dEku7UUD&oaSI_ESTRMd=$D?xp*&Tk^6u>5v&j?wNo}zMl_5Sh zjs@Rn&a@|y>~BEy1voNzYocoMg{xZ@S-!#5KJ}G+u^X7AQ2xS#wGgNSmwRP6coqYj z16O`bOWcIR9zTX1EGS;v9^WM5vzSOUC$4F(ax^Dild`wq2(Z#cu$oheXipTX zgA^xzo$>Y*Kr0&p(TzBk)mp9k|(97VPhcs-UsuUV-0 zGf+PKJqyTuRH*V|70YfdMIa{CmGi@9)T&Iv}`WRLCuX8E9&|6a<4HCkxPy!2uB9q<8OZV{O$A>1C zhl)mDKjHdd#f%Bl%8SR3Dj7ejY<%H_3FU@QZI7Uh69wH_C&mVZ#eMmP62sR~k1$U83Ldtl zk8M2N5XE}td~Ca|5QVr#!1LtTKi+)rfD5nh*!<%2!$xiyk7^Zsw{?P#{8RbTeoye- zzO;v;xg-BBU)u8p-))`vwcxw06UPMK?MwSAlk(lxiFJaX+B#9lf$;y^mv%3$9G11@ zbgd1#e|_x|yN5p7zjlc&w?*jMlYNp)?Eki%rBoPiMx6mOOR^+bS)|+IGvNTa8_|}z zDB%E^7O9>TrIqb7Q6etC&GJ6ZM2U1GIz@@JW18Syrc@D^|IZ}=|k z8uG^ej{B&M=+W~;i@1gA~BF?tOxQGfHVe+4&*67%2tAc)v2@nc^3wr6JaIOP7X zZ>dq_(ovP_9tH5WUKTg{!pWnydlc;>BpV1D@#i?!= zA~NXsJS^h%9?VR~%6{H;TrZCQP#P1OCGBrCH7xh;2d)J!07ifdfiWP`MriDy{9giVfqQ^Ufd_!gfQNvP6`6*6TM5K# zRK_acd|(}L8E`dlBQOlaOaI0iU<>dLAQ$&{0%6E4mb%I!Cy6S zJ&<+Ee6d1kkdiOJNz>FW#gm`SN#1Z=kCgf_Al+wkw2`EK6hLK~LAMe%aQqow9BhD_ zadh>S7Zq_CbOY3{X9x?fj&vXzqV;YeqC`V17A)ptm}aH_fUm{`7Xr4 z@Hh&Qzkdg$CG-hZs7xzufTW}ikd)6jg#VKFs-i@prg*-hzD4Z5P<7cj3-u?sz}1dk z%}X=G%&e(Tw0gBJ)NVhXJH29s^&#;Ao!hv|JXJA2ICQ~oR|WffRj^O1f@M#a1xrd6 zEGeJC;*`9@ic+mLpKb*<>{*wCkL6A@WJFs#D{tF()7+)T5>DL}b3Q3V})}FWG^B< zCSq-)H6uinVLjz(1L#K%31MdfNNZSfzi9ZCq z9QZI0PeP2J0?UBE0AlDhFoZ{$-o#Tn!IMu7LLt26w6GR)Is@fg1Ju&>aO`5>9YwVc K(@8L5`~Cy&%`0aB diff --git a/io2d/src/win32/lib/x86/Release/cairo.lib b/io2d/src/win32/lib/x86/Release/cairo.lib deleted file mode 100644 index 60a9a64bbda5735051f510fbb66612bace98cfe9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96594 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%0D81H3l|^#s+P-KSr#c zI}bJ79A9gSNqvXDSb4nhfVi9+=cYN$TGvJEzhaKY7)}XVSceR-3do#!80zK?qxueg zSwK~Ya%6BIoWE~$>?SOnH5QvWaK7=uQEGsWk2!F@_DI7|HggF0ctVgXP76Br4YlnM zWdG!HbXEnmCUoT?WM%~Xz8mMJl9}+L!Cg2fkE;3(eWP+AHs%=d2eFjw*3ILlQk34d z5#qQxZih`-s7Ze=WxO?nO}H_D6Uv4^;|bmUP&&wX`(|5y^frD7#oGrv5EHRi0x5gcOJ@$3_`{3Jd~B`XPb_+a^(D08s`rjIX}slvzC6D z4W{`=&O8i>ON5D>c^KKKC$NfH1ZwumA>vyzbko?N%U0qvP7yDOu)eDBES7cWp=1C) z;4=r#ClS5Tg}ZQ0DZsWK6$jsqb1NwUd*I0VW$g^ueK*ccg%GZde7BI>tb|;}H!dM3 zTV^9QK^UFti?uw>Y?KDuijY6rp%UMXsiA zWzo>9lThA7vx5P+MB@^2%1w)g@pY1YcOFVlG2CRHIVAZS1GuU)ak0$Wm4|4KjkQMl zz3#ws;=H)@nONt#FZ~zi@W)bIX3@05Zc^oZxrF}K>UC>y*GhKOh|uoycA&D}z6@I3 zxvejg4|>^Tx5WJY3++pVK5^5S9hW2L1d^XII)rgd@HhKzT-SEnTRMPsO@zSJN~<{@ zM#{P-LJSPy{#cN5?Uv$hkF;ZU?U>*XN>-=9x+X$UzS^AkTPn-qh$ACOuDkixB$L7X z5}~PLF%H%Gbm+j3hn6D~%{^QqOy(xN(qU}|DOeZMdZfb@GSA6KGNt92x*0~pxTiyf zO~Z#)jV2#5%5*_uY6csGYkRa7>J~Pc|gZY;4El<*)L{hNA*zv#3;Z zeU7Xos;Fg20Y_F6#R<2$#@ZWk2Whm^@3!x}l%?3RG6}na%oJNzCPiS7c4@{ZZgTre zQ5-o-Ru%zs#zaAcELmALUc)Wi)9tg9hjh#=Q&ye@wydStStc&8J&b!YX8S4V4$^)+ zG;LuwDVsaE(Tq#Wj(7}WSALbCXH;h1|OR4R)3*co^az&IwPw@22uI&q09#{~cI zx}k~o*pMCBb)GrrL>QSqY6I->#fx8xp(w}O9MDm4LbNZJpte?;Lqnr|?CdRcjYAA{ zT6RXDxRnd%l)F5AxPqYL#1JCmnGMeYy|6K^n$O7daqM76)|eI)yK^*o;$i1esu+B? zfE!bV8|6|LgP(|Fn8>Fbk{ywRL4(urKsHt#GX$A5mN*KrplzC_JyZ;Y7|%lZPO~2m z(le1To`vwkEjQZ>(3MvztX<}XxXdFJE-qwQVAeSmhDIwZ)?av<_$FCWvdnzj)-efh zTvH)PG+WyE0Rzuec$z?E!v~(J@C3oPGkB8Y6`S#G_V;5>4N)bXK&=&~HB#b8;m4Aq zHj`xGvZx->4wcO8)vYyntc8E|*+oX)KPyG=d1YiU->d|8#H; !ck!4KKG>-7&eB z2J4p%9UNwRp{-vwG}RkYg6fP8`J2+7oCH@FiJcJ~E>yi?RVE=cWUM9ER-mqeGkq{6 zOpUN%_rra7oJ{4T)|3v(eNrJwvOMhQPhlFLR7jF+{NwJ!_@qJ-CT{yuFL6)a7nGvRWa?;cYtXi2}{c=$O zLr#twi5q?GPTx=~DJbONlDw8eg^Mxh3(iZ*Jl&+FJ7W!np2hHeqke~A3owdPg0qX{ zZoM2uG3X1qL{n5|w%C+YVsnz{*YPwDm)7CI?T|+86m{x`RyX_BdQ11p?A60<|FJlyGy2sIR0)?cAVWM z%eun0q4V*jQ$N4mrFmshca`Y4s>N}@J5Wj^Q(6pPcc~Nu!`&@M4WB2qg`Gz~E-KB! zE7<$P)5(l~SxS3kZK#45i}IMt@+h5hRCg+Uu{@8-m$wF0ccP?uj#++OCs~C=oy9oY zw&J*V1sQgf>ZFCBe@Y6kiaKCila+^E)|vT@Mq=&>1iM=Fl4xBMA-uB?jgdG7(LQE5 z=!rLu3F%&0dVxHjM97hK!>&xi><&E>;Yoh3$OFGb==OM{H9R(9_sw+jopT}#jkKsu zI-Z41F_h$Z+h#fjRz_miOtY~4NiWBldjb_tZIGeQ4Hl{zI_E-|Y>G{2&XACUhdZs# zIJVEAt~2*iC@$Sgu?^2T5|Y-9U`G&OYquOXm*`>2aNIW`VWYbPqsvUXq&c}P4++C? zKOS0cI4kYIpu0@@b~|xs>y-PfF6XPlpsk|RgaHJ$rO8g$gk4)^J zlHw_cntVuThZ?WpW(Rks+8sC9Px+*fTu43-^W&W6NlBx6pmjAz2L|x3u;C>bQgSGl zigFSRDLDi;V0P6|X?b*L9o?Ks#VW~`k||5DyUZ+GN~YETcdCG<_?Sm39J{jS7a8+N zg`>+2@og1fM4BfhP4BCYu9jE+>|usYgF47}-YFTzw?U_k>O!O0at%wX$l6u5yxdqx zbimnFG9J4O*?r<-qyx^bl1WQ{ZL6B>h_|bBHSw$_J>u;uUG`elgomu%Wy?*>io!$Q zqVzG;ZizZCTk*7SQ9^47H?CXuG|@B$E5rJ8DW=cUEeUT@vS?&HOW`euYTBU$>s^we z8lz=ROA44u@?^8>BF^V2Ns~>fi!`67BuzJ-F7iUIl0@BLx=0MUxI|NPbT3PqNztBQ znTJc87`@4@5rch|v|m278scyfWVaZ73EaOd1#Mio<`xUl-enmZJU!G{i1FuA~yD5#q| z&gRYb&jgQDy?2_Sn$^1U5F6SfbLZI8KFZF1+iKE&<rDI;TQ3!SWYR;L@0|H2}cgN6^S%lER%NPlEj$vj{8#-vBi{d@z`mnTL zx6st(wVH0{TkocE0L#K<$!^N_ie}c=86D

    cUi6o{fPT9g1QtFPA>v*J+R8?xJTn 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 K(@8L5`~Cy&%`0aB diff --git a/io2d/src/win32/lib/x86/Release_Clang_C2/cairo.lib b/io2d/src/win32/lib/x86/Release_Clang_C2/cairo.lib deleted file mode 100644 index 60a9a64bbda5735051f510fbb66612bace98cfe9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96594 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%0D81H3l|^#s+P-KSr#c zI}bJ79A9gSNqvXDSb4nhfVi9+=cYN$TGvJEzhaKY7)}XVSceR-3do#!80zK?qxueg zSwK~Ya%6BIoWE~$>?SOnH5QvWaK7=uQEGsWk2!F@_DI7|HggF0ctVgXP76Br4YlnM zWdG!HbXEnmCUoT?WM%~Xz8mMJl9}+L!Cg2fkE;3(eWP+AHs%=d2eFjw*3ILlQk34d z5#qQxZih`-s7Ze=WxO?nO}H_D6Uv4^;|bmUP&&wX`(|5y^frD7#oGrv5EHRi0x5gcOJ@$3_`{3Jd~B`XPb_+a^(D08s`rjIX}slvzC6D z4W{`=&O8i>ON5D>c^KKKC$NfH1ZwumA>vyzbko?N%U0qvP7yDOu)eDBES7cWp=1C) z;4=r#ClS5Tg}ZQ0DZsWK6$jsqb1NwUd*I0VW$g^ueK*ccg%GZde7BI>tb|;}H!dM3 zTV^9QK^UFti?uw>Y?KDuijY6rp%UMXsiA zWzo>9lThA7vx5P+MB@^2%1w)g@pY1YcOFVlG2CRHIVAZS1GuU)ak0$Wm4|4KjkQMl zz3#ws;=H)@nONt#FZ~zi@W)bIX3@05Zc^oZxrF}K>UC>y*GhKOh|uoycA&D}z6@I3 zxvejg4|>^Tx5WJY3++pVK5^5S9hW2L1d^XII)rgd@HhKzT-SEnTRMPsO@zSJN~<{@ zM#{P-LJSPy{#cN5?Uv$hkF;ZU?U>*XN>-=9x+X$UzS^AkTPn-qh$ACOuDkixB$L7X z5}~PLF%H%Gbm+j3hn6D~%{^QqOy(xN(qU}|DOeZMdZfb@GSA6KGNt92x*0~pxTiyf zO~Z#)jV2#5%5*_uY6csGYkRa7>J~Pc|gZY;4El<*)L{hNA*zv#3;Z zeU7Xos;Fg20Y_F6#R<2$#@ZWk2Whm^@3!x}l%?3RG6}na%oJNzCPiS7c4@{ZZgTre zQ5-o-Ru%zs#zaAcELmALUc)Wi)9tg9hjh#=Q&ye@wydStStc&8J&b!YX8S4V4$^)+ zG;LuwDVsaE(Tq#Wj(7}WSALbCXH;h1|OR4R)3*co^az&IwPw@22uI&q09#{~cI zx}k~o*pMCBb)GrrL>QSqY6I->#fx8xp(w}O9MDm4LbNZJpte?;Lqnr|?CdRcjYAA{ zT6RXDxRnd%l)F5AxPqYL#1JCmnGMeYy|6K^n$O7daqM76)|eI)yK^*o;$i1esu+B? zfE!bV8|6|LgP(|Fn8>Fbk{ywRL4(urKsHt#GX$A5mN*KrplzC_JyZ;Y7|%lZPO~2m z(le1To`vwkEjQZ>(3MvztX<}XxXdFJE-qwQVAeSmhDIwZ)?av<_$FCWvdnzj)-efh zTvH)PG+WyE0Rzuec$z?E!v~(J@C3oPGkB8Y6`S#G_V;5>4N)bXK&=&~HB#b8;m4Aq zHj`xGvZx->4wcO8)vYyntc8E|*+oX)KPyG=d1YiU->d|8#H; !ck!4KKG>-7&eB z2J4p%9UNwRp{-vwG}RkYg6fP8`J2+7oCH@FiJcJ~E>yi?RVE=cWUM9ER-mqeGkq{6 zOpUN%_rra7oJ{4T)|3v(eNrJwvOMhQPhlFLR7jF+{NwJ!_@qJ-CT{yuFL6)a7nGvRWa?;cYtXi2}{c=$O zLr#twi5q?GPTx=~DJbONlDw8eg^Mxh3(iZ*Jl&+FJ7W!np2hHeqke~A3owdPg0qX{ zZoM2uG3X1qL{n5|w%C+YVsnz{*YPwDm)7CI?T|+86m{x`RyX_BdQ11p?A60<|FJlyGy2sIR0)?cAVWM z%eun0q4V*jQ$N4mrFmshca`Y4s>N}@J5Wj^Q(6pPcc~Nu!`&@M4WB2qg`Gz~E-KB! zE7<$P)5(l~SxS3kZK#45i}IMt@+h5hRCg+Uu{@8-m$wF0ccP?uj#++OCs~C=oy9oY zw&J*V1sQgf>ZFCBe@Y6kiaKCila+^E)|vT@Mq=&>1iM=Fl4xBMA-uB?jgdG7(LQE5 z=!rLu3F%&0dVxHjM97hK!>&xi><&E>;Yoh3$OFGb==OM{H9R(9_sw+jopT}#jkKsu zI-Z41F_h$Z+h#fjRz_miOtY~4NiWBldjb_tZIGeQ4Hl{zI_E-|Y>G{2&XACUhdZs# zIJVEAt~2*iC@$Sgu?^2T5|Y-9U`G&OYquOXm*`>2aNIW`VWYbPqsvUXq&c}P4++C? zKOS0cI4kYIpu0@@b~|xs>y-PfF6XPlpsk|RgaHJ$rO8g$gk4)^J zlHw_cntVuThZ?WpW(Rks+8sC9Px+*fTu43-^W&W6NlBx6pmjAz2L|x3u;C>bQgSGl zigFSRDLDi;V0P6|X?b*L9o?Ks#VW~`k||5DyUZ+GN~YETcdCG<_?Sm39J{jS7a8+N zg`>+2@og1fM4BfhP4BCYu9jE+>|usYgF47}-YFTzw?U_k>O!O0at%wX$l6u5yxdqx zbimnFG9J4O*?r<-qyx^bl1WQ{ZL6B>h_|bBHSw$_J>u;uUG`elgomu%Wy?*>io!$Q zqVzG;ZizZCTk*7SQ9^47H?CXuG|@B$E5rJ8DW=cUEeUT@vS?&HOW`euYTBU$>s^we z8lz=ROA44u@?^8>BF^V2Ns~>fi!`67BuzJ-F7iUIl0@BLx=0MUxI|NPbT3PqNztBQ znTJc87`@4@5rch|v|m278scyfWVaZ73EaOd1#Mio<`xUl-enmZJU!G{i1FuA~yD5#q| z&gRYb&jgQDy?2_Sn$^1U5F6SfbLZI8KFZF1+iKE&<rDI;TQ3!SWYR;L@0|H2}cgN6^S%lER%NPlEj$vj{8#-vBi{d@z`mnTL zx6st(wVH0{TkocE0L#K<$!^N_ie}c=86D

    cUi6o{fPT9g1QtFPA>v*J+R8?xJTn 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 K(@8L5`~Cy&%`0aB From aac917f24baabf349c3e9697767f132e8adff086 Mon Sep 17 00:00:00 2001 From: "Michael B. McLaughlin" Date: Thu, 25 Feb 2016 17:13:05 -0500 Subject: [PATCH 09/30] Bug fixes to surface::mask_immediate. --- io2d/src/surface.cpp | 16 +- tests/sample-draw/sample_draw.cpp | 786 +++++++++++++++++------------- 2 files changed, 458 insertions(+), 344 deletions(-) diff --git a/io2d/src/surface.cpp b/io2d/src/surface.cpp index e2c1198..4a4173b 100644 --- a/io2d/src/surface.cpp +++ b/io2d/src/surface.cpp @@ -991,6 +991,12 @@ void surface::mask_immediate(const ::std::experimental::io2d::brush& maskBrush) cairo_matrix_t cPttnMatrix; cairo_matrix_init(&cPttnMatrix, _Brush.matrix().m00(), _Brush.matrix().m01(), _Brush.matrix().m10(), _Brush.matrix().m11(), _Brush.matrix().m20(), _Brush.matrix().m21()); cairo_pattern_set_matrix(_Brush.native_handle(), &cPttnMatrix); + + cairo_pattern_set_extend(maskBrush.native_handle(), _Extend_to_cairo_extend_t(maskBrush.extend())); + cairo_pattern_set_filter(maskBrush.native_handle(), _Filter_to_cairo_filter_t(maskBrush.filter())); + cairo_matrix_init(&cPttnMatrix, maskBrush.matrix().m00(), maskBrush.matrix().m01(), maskBrush.matrix().m10(), maskBrush.matrix().m11(), maskBrush.matrix().m20(), maskBrush.matrix().m21()); + cairo_pattern_set_matrix(maskBrush.native_handle(), &cPttnMatrix); + cairo_set_source(_Context.get(), _Brush.native_handle()); cairo_mask(_Context.get(), maskBrush.native_handle()); path(currPath); @@ -999,12 +1005,12 @@ void surface::mask_immediate(const ::std::experimental::io2d::brush& maskBrush) void surface::mask_immediate(const ::std::experimental::io2d::brush& maskBrush, const rgba_color& c) { solid_color_brush_factory factory(c); brush(experimental::io2d::brush(factory)); - mask(maskBrush); + mask_immediate(maskBrush); } void surface::mask_immediate(const ::std::experimental::io2d::brush& maskBrush, const ::std::experimental::io2d::brush& b) { brush(b); - mask(maskBrush); + mask_immediate(maskBrush); } void surface::mask_immediate(const ::std::experimental::io2d::brush& maskBrush, const surface& s, const vector_2d& origin, extend e, filter f) { @@ -1020,6 +1026,12 @@ void surface::mask_immediate(const ::std::experimental::io2d::brush& maskBrush, cairo_pattern_set_filter(pat, _Filter_to_cairo_filter_t(f)); cairo_matrix_t cmat{ m.m00(), m.m01(), m.m10(), m.m11(), m.m20(), m.m21() }; cairo_pattern_set_matrix(pat, &cmat); + + cairo_pattern_set_extend(maskBrush.native_handle(), _Extend_to_cairo_extend_t(maskBrush.extend())); + cairo_pattern_set_filter(maskBrush.native_handle(), _Filter_to_cairo_filter_t(maskBrush.filter())); + cairo_matrix_init(&cmat, maskBrush.matrix().m00(), maskBrush.matrix().m01(), maskBrush.matrix().m10(), maskBrush.matrix().m11(), maskBrush.matrix().m20(), maskBrush.matrix().m21()); + cairo_pattern_set_matrix(maskBrush.native_handle(), &cmat); + cairo_mask(_Context.get(), maskBrush.native_handle()); cairo_set_source_rgba(_Context.get(), 0.0, 0.0, 0.0, 0.0); path(currPath); diff --git a/tests/sample-draw/sample_draw.cpp b/tests/sample-draw/sample_draw.cpp index 8ba3c26..8aa77bf 100644 --- a/tests/sample-draw/sample_draw.cpp +++ b/tests/sample-draw/sample_draw.cpp @@ -16,54 +16,85 @@ using namespace std::experimental::io2d; using namespace not_proposed::test_renderer; // Declarations -void test_stroke_rules(display_surface& rs); -void draw_radial_circles(display_surface& rs); -void test_draw_radial_circles(display_surface& rs); +void test_stroke_rules(display_surface& ds); +void draw_radial_circles(display_surface& ds); +void test_draw_radial_circles(display_surface& ds); wostream& operator<<(wostream& os, const vector_2d& pt); vector> init_sort_steps(int count, unsigned long mtSeed = 1009UL); -void draw_hello_world(surface& rs); -void draw_test_compositing_operators(surface& rs, compositing_operator secondRectCompOp, compositing_operator firstRectCompOp = compositing_operator::over, bool clipToRects = false, bool clipToTriangle = false, bool strokePaths = false, bool mask = false, const rgba_color& backgroundColor = rgba_color::transparent_black(), const rgba_color& firstColor = rgba_color::red() * 0.8, const rgba_color& secondColor = rgba_color::teal() * 0.4); -void draw_sort_visualization_immediate(surface& rs, double elapsedTimeInMilliseconds); -void draw_sort_visualization(surface& rs, double elapsedTimeInMilliseconds); -void test_compositing_operators_different_pixel_formats(surface& rs, compositing_operator co); -void test_paint_surface_extend_modes(surface& rs, double elapsedTimeInMilliseconds); -void test_fill_rules(surface& rs); -void test_paint(surface& rs); -void test_mask(display_surface& rs); +void draw_hello_world(display_surface& ds); +void draw_test_compositing_operators(display_surface& ds, compositing_operator secondRectCompOp, compositing_operator firstRectCompOp = compositing_operator::over, bool clipToRects = false, bool clipToTriangle = false, bool strokePaths = false, bool mask = false, const rgba_color& backgroundColor = rgba_color::transparent_black(), const rgba_color& firstColor = rgba_color::red() * 0.8, const rgba_color& secondColor = rgba_color::teal() * 0.4); +void draw_sort_visualization_immediate(display_surface& ds, double elapsedTimeInMilliseconds); +void draw_sort_visualization(display_surface& ds, double elapsedTimeInMilliseconds); +void test_compositing_operators_different_pixel_formats(display_surface& ds, compositing_operator co); +void test_paint_surface_extend_modes(display_surface& ds, double elapsedTimeInMilliseconds); +void test_fill_rules(display_surface& ds); +void test_paint(display_surface& ds); +void test_mask(display_surface& ds); +void test_extend_none_on_boundary(display_surface& ds); +void test_clip_transformation(display_surface& ds); // // Drawing entry point. // -void sample_draw::operator()(display_surface& rs) { - static auto previousTime = steady_clock::now(); - auto currentTime = steady_clock::now(); - auto elapsedTime = currentTime - previousTime; - previousTime = currentTime; - draw_sort_visualization_immediate(rs, duration_cast(elapsedTime).count() / 1000.0); +void sample_draw::operator()(display_surface& ds) { + //static auto previousTime = steady_clock::now(); + //auto currentTime = steady_clock::now(); + //auto elapsedTime = currentTime - previousTime; + //previousTime = currentTime; + //draw_sort_visualization_immediate(ds, duration_cast(elapsedTime).count() / 1000.0); - //test_paint(rs); - //test_stroke_rules(rs); - //test_mask(rs); + //test_clip_transformation(ds); + //test_paint(ds); + //test_stroke_rules(ds); + test_mask(ds); + //test_extend_none_on_boundary(ds); - //test_draw_radial_circles(rs); + //test_draw_radial_circles(ds); - //draw_test_compositing_operators(rs, compositing_operator::in, compositing_operator::over, true, false, false, true); + //draw_test_compositing_operators(ds, compositing_operator::in, compositing_operator::over, true, false, false, true); - //test_compositing_operators_different_pixel_formats(rs, compositing_operator::out); + //test_compositing_operators_different_pixel_formats(ds, compositing_operator::out); //static auto previousTime = steady_clock::now(); //auto currentTime = steady_clock::now(); //auto elapsedTime = currentTime - previousTime; //previousTime = currentTime; - //test_paint_surface_extend_modes(rs, duration_cast(elapsedTime).count() / 1000.0); + //test_paint_surface_extend_modes(ds, duration_cast(elapsedTime).count() / 1000.0); - //test_fill_rules(rs); + //test_fill_rules(ds); } -void test_mask(display_surface& rs) { +void test_clip_transformation(display_surface& ds) { + ds.save(); + image_surface imgSfc{ format::argb32, 500, 500 }; - imgSfc.paint(rgba_color::white(), 0.5); + imgSfc.paint(rgba_color::green()); + imgSfc.immediate().move_to({ 0.0, 250.0 }); + imgSfc.immediate().line_to({ 250.0, 0.0 }); + imgSfc.immediate().line_to({ 500.0,250.0 }); + imgSfc.immediate().line_to({ 250.0,500.0 }); + imgSfc.immediate().close_path(); + imgSfc.fill_immediate(rgba_color::white()); + + ds.matrix(matrix_2d::init_translate({ 0.0, 0.0 })); + //ds.matrix(matrix_2d::init_translate({ 100.0, 100.0 })); + ds.immediate().clear(); + ds.immediate().rectangle({ 0.0, 0.0, 500.0, 500.0 }); + ds.clip_immediate(); + + ds.matrix(matrix_2d::init_translate({ 100.0, 100.0 })); + //ds.matrix(matrix_2d::init_translate({ 0.0, 0.0 })); + //ds.immediate().clear(); + //ds.immediate().rectangle({ 0.0, 0.0, 500.0, 500.0 }); + ds.paint(imgSfc, matrix_2d::init_identity()); + + ds.restore(); +} + +void test_extend_none_on_boundary(display_surface& ds) { + image_surface imgSfc{ format::argb32, 500, 500 }; + imgSfc.paint(rgba_color::green()); imgSfc.immediate().move_to({ 0.0, 250.0 }); imgSfc.immediate().line_to({ 250.0, 0.0 }); imgSfc.immediate().line_to({ 500.0,250.0 }); @@ -71,124 +102,195 @@ void test_mask(display_surface& rs) { imgSfc.immediate().close_path(); imgSfc.fill_immediate(rgba_color::white()); - rs.clear(); - rs.immediate().clear(); - rs.paint(rgba_color::red()); - rs.immediate().rectangle({ 0.0, 0.0, static_cast(rs.width()), static_cast(rs.height()) }); - rs.mask_immediate(imgSfc, rgba_color::blue()); + ds.clear(); + ds.immediate().clear(); + ds.paint(rgba_color::red()); + ds.immediate().rectangle({ 20.0, 20.0, static_cast(ds.width()), static_cast(ds.height()) }); + ds.fill_immediate(imgSfc, matrix_2d::init_translate({ -20.0, -20.0 }), extend::none, filter::bilinear); } -void test_paint(surface& rs) { - rs.save(); - rs.clear(); - rs.immediate().rectangle({ { 50.0, 50.0}, {500.0, 500.0} }); - rs.clip_immediate(); - rs.matrix(matrix_2d::init_rotate(half_pi() / 2.0)); - auto lbf = linear_brush_factory({ 0.0, 0.0 }, { 50.0, 50.0 }); - lbf.add_color_stop(0.0, rgba_color::red()); - lbf.add_color_stop(0.5, rgba_color::lime()); - lbf.add_color_stop(1.0, rgba_color::blue()); - auto linBrush = brush(lbf); - linBrush.extend(extend::repeat); - linBrush.matrix(matrix_2d::init_rotate(half_pi() / 2.0)); - rs.brush(linBrush); - rs.paint(); - rs.restore(); +void test_mask(display_surface& ds) { + image_surface imgSfc{ format::argb32, 500, 500 }; + imgSfc.paint(rgba_color::white(), 0.5); + imgSfc.immediate().move_to({ 0.0, 250.0 }); + imgSfc.immediate().line_to({ 250.0, 0.0 }); + imgSfc.immediate().line_to({ 500.0,250.0 }); + imgSfc.immediate().line_to({ 250.0,500.0 }); + imgSfc.immediate().close_path(); + imgSfc.fill_immediate(rgba_color::white()); + //imgSfc.matrix(matrix_2d::init_translate({ -50.0, 50.0 })); + //imgSfc.matrix(matrix_2d::init_scale({ 0.5, 1.5 })); + surface_brush_factory sbf(imgSfc); + brush br(sbf); + br.matrix(matrix_2d::init_translate({ -50.0, -50.0 }).rotate(half_pi() * 0.25)); + br.filter(filter::nearest); + br.extend(extend::none); + + //radial_brush_factory rbf{ {250.0, 250.0}, 0.0, {250.0, 250.0}, 250.0 }; + //rbf.add_color_stop(0.0, rgba_color::red()); + //rbf.add_color_stop(0.5, rgba_color::lime() * 0.5); + //rbf.add_color_stop(1.0, rgba_color::blue()); + //brush br{ rbf }; + //br.extend(extend::repeat); + //br.filter(filter::nearest); + + ds.save(); + ds.clear(); + ds.immediate().clear(); + ds.paint(rgba_color::red()); + ds.immediate().rectangle({ 0.0, 0.0, static_cast(ds.width()), static_cast(ds.height())}); + //ds.matrix(matrix_2d::init_scale({ 0.5, 1.5 })); + ds.mask_immediate(br, rgba_color::blue()); + //ds.fill_immediate(br); + ds.restore(); +} + +void test_paint(display_surface& ds) { + ds.save(); + ds.clear(); + + image_surface imgSfc{ format::argb32, 500, 500 }; + imgSfc.paint(rgba_color::green()); + imgSfc.immediate().move_to({ 0.0, 250.0 }); + imgSfc.immediate().line_to({ 250.0, 0.0 }); + imgSfc.immediate().line_to({ 500.0,250.0 }); + imgSfc.immediate().line_to({ 250.0,500.0 }); + imgSfc.immediate().close_path(); + imgSfc.fill_immediate(rgba_color::white()); + auto m = matrix_2d::init_scale({ 1.5, 1.0 }).translate({ 20.0, 20.0 });// .invert().translate({ -10.0, -10.0 }); + auto scsm = m; + auto ucsm = matrix_2d::init_identity(); + auto bcsm = matrix_2d::init_translate({ -10.0, -10.0 }); + auto invScsm = scsm; + invScsm.invert(); + auto invBcsm = bcsm; + invBcsm.invert(); + + //auto pt = m.invert().transform_point({ 0.0, 0.0 }); + //auto pt2 = m.transform_point({ 10.0, 10.0 }); + auto pt = m.transform_point({ 0.0, 0.0 }); + auto pt2 = invScsm.transform_point({ 45.0, 30.0 }); + auto pt3 = vector_2d{ -26.6666666666666, -30.0 }; + auto pt4 = vector_2d{ -16.6666666666666, -20.0 }; + auto pt5 = vector_2d{ 45.0, 30.0 }; + ds.matrix(m); + ds.paint(imgSfc, matrix_2d::init_translate({ -10.0, -10.0 })/*init_identity()*//*init_scale({ 1.0, 1.5 }).translate({ -20.0, -20.0 })*/, extend::repeat, filter::nearest); + //ds.paint(rgba_color::red()); + //auto br = brush(solid_color_brush_factory(rgba_color::red())); + //br.extend(extend::none); + //ds.brush(br); + ds.paint(); + + + //auto lbf = linear_brush_factory({ 0.0, 0.0 }, { 50.0, 50.0 }); + //lbf.add_color_stop(0.0, rgba_color::red()); + //lbf.add_color_stop(0.5, rgba_color::lime()); + //lbf.add_color_stop(1.0, rgba_color::blue()); + //auto linBrush = brush(lbf); + //linBrush.extend(extend::repeat); + //linBrush.matrix(matrix_2d::init_rotate(half_pi() / 2.0)); + //ds.immediate().rectangle({ { 50.0, 50.0}, {500.0, 500.0} }); + //ds.clip_immediate(); + //ds.matrix(matrix_2d::init_rotate(half_pi() / 2.0)); + //ds.brush(linBrush); + //ds.paint(); + + ds.restore(); } -void test_stroke_rules(display_surface& rs) { - rs.save(); - rs.clear(); - rs.paint(rgba_color::red()); - - rs.immediate().clear(); - - //rs.line_width(40.0); - //rs.line_cap(line_cap::butt); - //rs.line_join(line_join::miter_or_bevel); - //rs.immediate().arc({ rs.width() / 2.0, rs.height() / 2.0 }, 200.0, 0.0, two_pi()); - //rs.matrix(matrix_2d::init_translate({ rs.width() / 2.0, rs.height() / 2.0 }).rotate(half_pi() / 2.0).scale({ 0.5, 1.0 }).translate({ -rs.width() / 2.0, -rs.height() / 2.0 })); - rs.dashes(nullopt); - rs.line_width(2.0); - rs.immediate().move_to({ 0.0, 199.0 }); - rs.immediate().line_to({ 1280.9, 199.0 }); - rs.stroke_immediate(rgba_color::azure()); - rs.immediate().clear(); - - rs.line_width(40.0); +void test_stroke_rules(display_surface& ds) { + ds.save(); + ds.clear(); + ds.paint(rgba_color::red()); + + ds.immediate().clear(); + + //ds.line_width(40.0); + //ds.line_cap(line_cap::butt); + //ds.line_join(line_join::miter_or_bevel); + //ds.immediate().arc({ ds.width() / 2.0, ds.height() / 2.0 }, 200.0, 0.0, two_pi()); + //ds.matrix(matrix_2d::init_translate({ ds.width() / 2.0, ds.height() / 2.0 }).rotate(half_pi() / 2.0).scale({ 0.5, 1.0 }).translate({ -ds.width() / 2.0, -ds.height() / 2.0 })); + ds.dashes(nullopt); + ds.line_width(2.0); + ds.immediate().move_to({ 0.0, 199.0 }); + ds.immediate().line_to({ 1280.9, 199.0 }); + ds.stroke_immediate(rgba_color::azure()); + ds.immediate().clear(); + + ds.line_width(40.0); dashes dsh(vector{ 40.0, 50.0, 40.0, 50.0, 40.0, 50.0, 40.0, 50.0, 40.0, 50.0 }, 150.0); - rs.dashes(dsh); - rs.line_cap(line_cap::round); - rs.line_join(line_join::miter_or_bevel); - rs.immediate().move_to({ 700.0, 200.0 }); - rs.immediate().close_path(); - - rs.line_width(40.0); - rs.line_cap(line_cap::round); - rs.line_join(line_join::miter_or_bevel); - rs.immediate().move_to({ 200.0, 200.0 }); - rs.immediate().rel_line_to({ 0.0, 100.0 }); - rs.immediate().move_to({ 200.0, 335.0 }); - rs.immediate().rel_line_to({ 0.0, 200.0 }); - - //rs.matrix(matrix_2d::init_scale({ 0.5, 1.0 }).rotate(half_pi() / 2.0)); - //rs.matrix(matrix_2d::init_rotate(half_pi() / 2.0).scale({ 0.5, 1.0 })); - //rs.immediate().rel_move_to({ 20.0, 0.0 }); - //rs.immediate().rel_move_to({ 0.0, 10.0 }); - //rs.immediate().close_path(); - //rs.immediate().rel_line_to({ 5.0, 10.0 }); - //rs.immediate().rel_line_to({ -20.0, 0.0 }); - rs.stroke_immediate(rgba_color::black()); - - rs.restore(); + ds.dashes(dsh); + ds.line_cap(line_cap::round); + ds.line_join(line_join::miter_or_bevel); + ds.immediate().move_to({ 700.0, 200.0 }); + ds.immediate().close_path(); + + ds.line_width(40.0); + ds.line_cap(line_cap::round); + ds.line_join(line_join::miter_or_bevel); + ds.immediate().move_to({ 200.0, 200.0 }); + ds.immediate().rel_line_to({ 0.0, 100.0 }); + ds.immediate().move_to({ 200.0, 335.0 }); + ds.immediate().rel_line_to({ 0.0, 200.0 }); + + //ds.matrix(matrix_2d::init_scale({ 0.5, 1.0 }).rotate(half_pi() / 2.0)); + //ds.matrix(matrix_2d::init_rotate(half_pi() / 2.0).scale({ 0.5, 1.0 })); + //ds.immediate().rel_move_to({ 20.0, 0.0 }); + //ds.immediate().rel_move_to({ 0.0, 10.0 }); + //ds.immediate().close_path(); + //ds.immediate().rel_line_to({ 5.0, 10.0 }); + //ds.immediate().rel_line_to({ -20.0, 0.0 }); + ds.stroke_immediate(rgba_color::black()); + + ds.restore(); } -void test_fill_rules(surface& rs) { - rs.clear(); - auto prevFr = rs.fill_rule(); +void test_fill_rules(display_surface& ds) { + ds.clear(); + auto prevFr = ds.fill_rule(); bool clockwise = true; auto rect = rectangle{ 10.0, 10.0, 120.0, 90.0 }; - rs.fill_rule(fill_rule::winding); + ds.fill_rule(fill_rule::winding); clockwise = true; - rs.immediate().clear(); + ds.immediate().clear(); rect.top_left({ 10.0, 10.0 }); - rs.immediate().rectangle(rect, clockwise); + ds.immediate().rectangle(rect, clockwise); rect.top_left({ 50.0, 40.0 }); - rs.immediate().rectangle(rect, clockwise); - rs.fill_immediate(rgba_color::red() * 0.5); + ds.immediate().rectangle(rect, clockwise); + ds.fill_immediate(rgba_color::red() * 0.5); - rs.immediate().clear(); + ds.immediate().clear(); rect.top_left({ 10.0, 150.0 }); - rs.immediate().rectangle(rect, clockwise); + ds.immediate().rectangle(rect, clockwise); rect.top_left({ 50.0, 190.0 }); clockwise = false; - rs.immediate().rectangle(rect, clockwise); - rs.fill_immediate(rgba_color::red() * 0.5); + ds.immediate().rectangle(rect, clockwise); + ds.fill_immediate(rgba_color::red() * 0.5); - rs.fill_rule(fill_rule::even_odd); + ds.fill_rule(fill_rule::even_odd); clockwise = true; - rs.immediate().clear(); + ds.immediate().clear(); rect.top_left({ 190.0, 10.0 }); - rs.immediate().rectangle(rect, clockwise); + ds.immediate().rectangle(rect, clockwise); rect.top_left({ 240.0, 40.0 }); - rs.immediate().rectangle(rect, clockwise); - rs.fill_immediate(rgba_color::red() * 0.5); + ds.immediate().rectangle(rect, clockwise); + ds.fill_immediate(rgba_color::red() * 0.5); - rs.immediate().clear(); + ds.immediate().clear(); rect.top_left({ 190.0, 150.0 }); - rs.immediate().rectangle(rect, clockwise); + ds.immediate().rectangle(rect, clockwise); rect.top_left({ 240.0, 190.0 }); clockwise = false; - rs.immediate().rectangle(rect, clockwise); - rs.fill_immediate(rgba_color::red() * 0.5); + ds.immediate().rectangle(rect, clockwise); + ds.fill_immediate(rgba_color::red() * 0.5); - rs.fill_rule(prevFr); + ds.fill_rule(prevFr); } -void test_paint_surface_extend_modes(surface& rs, double elapsedTimeInMilliseconds) { +void test_paint_surface_extend_modes(display_surface& ds, double elapsedTimeInMilliseconds) { static image_surface imgSfc{ format::argb32, 120, 90 }; static bool imgSfcInitialized = false; if (!imgSfcInitialized) { @@ -224,48 +326,48 @@ void test_paint_surface_extend_modes(surface& rs, double elapsedTimeInMillisecon imgSfcInitialized = true; } static double totalElapsedTime = 0.0; - rs.compositing_operator(compositing_operator::source); - rs.immediate().rectangle({ 400.0, 0.0, 100.0, 100.0 }); - rs.fill_immediate(rgba_color::orange()); - rs.immediate().clear(); + ds.compositing_operator(compositing_operator::source); + ds.immediate().rectangle({ 400.0, 0.0, 100.0, 100.0 }); + ds.fill_immediate(rgba_color::orange()); + ds.immediate().clear(); if (totalElapsedTime < 1000.0) { // Do nothing. } else { if (totalElapsedTime < 3000.0) { - rs.paint(imgSfc, { 0.0, 0.0 }, extend::none); + ds.paint(imgSfc, { 0.0, 0.0 }, extend::none); } else { - rs.paint(imgSfc, { 0.0, 0.0 }, extend::repeat); + ds.paint(imgSfc, { 0.0, 0.0 }, extend::repeat); } } totalElapsedTime += elapsedTimeInMilliseconds; } -void test_compositing_operators_different_pixel_formats(surface& rs, compositing_operator co) { +void test_compositing_operators_different_pixel_formats(display_surface& ds, compositing_operator co) { image_surface srcSfc{ format::a8, 120, 90 }; image_surface dstSfc{ format::argb32, 120, 90 }; srcSfc.clear(); srcSfc.paint(rgba_color::blue(), 0.6); dstSfc.clear(); dstSfc.paint(rgba_color::lime(), 0.4); - rs.clear(); + ds.clear(); //auto data = srcSfc.data(); - //rs.paint(rgba_color::white()); - rs.compositing_operator(compositing_operator::over); - rs.immediate().rectangle({ 10.0, 10.0, 120.0, 90.0 }); - rs.fill_immediate(srcSfc, matrix_2d::init_translate({ -10.0, -10.0 })); - rs.compositing_operator(co); - rs.immediate().clear(); - rs.immediate().rectangle({ 50.0, 40.0, 120.0, 90.0 }); - rs.fill_immediate(dstSfc, matrix_2d::init_translate({ -50.0, -40.0 })); + //ds.paint(rgba_color::white()); + ds.compositing_operator(compositing_operator::over); + ds.immediate().rectangle({ 10.0, 10.0, 120.0, 90.0 }); + ds.fill_immediate(srcSfc, matrix_2d::init_translate({ -10.0, -10.0 })); + ds.compositing_operator(co); + ds.immediate().clear(); + ds.immediate().rectangle({ 50.0, 40.0, 120.0, 90.0 }); + ds.fill_immediate(dstSfc, matrix_2d::init_translate({ -50.0, -40.0 })); } -void test_draw_radial_circles(display_surface& rs) { - rs.paint(rgba_color::cornflower_blue()); - rs.fill_rule(fill_rule::winding); - rs.matrix(matrix_2d::init_identity()); +void test_draw_radial_circles(display_surface& ds) { + ds.paint(rgba_color::cornflower_blue()); + ds.fill_rule(fill_rule::winding); + ds.matrix(matrix_2d::init_identity()); auto radialFactory = radial_brush_factory(); radialFactory.add_color_stop(0.0, rgba_color::white()); radialFactory.add_color_stop(0.25, rgba_color::red()); @@ -286,9 +388,9 @@ void test_draw_radial_circles(display_surface& rs) { rectangle drawArea = { { 100.0, 100.0 }, { 500.0, 500.0 } }; pf.rectangle(drawArea); path p(pf); - rs.path(p); - rs.brush(radialBrush); - rs.fill(); + ds.path(p); + ds.brush(radialBrush); + ds.fill(); auto dx = 500.0; auto dy = 0.0; @@ -298,14 +400,14 @@ void test_draw_radial_circles(display_surface& rs) { radialFactory.radial_circles(center0, radius0, center1, radius1); drawArea.x(drawArea.x() + dx); drawArea.y(drawArea.y() + dy); - render_fill_rect_radial_gradient(rs, drawArea, radialFactory, extendMode); + render_fill_rect_radial_gradient(ds, drawArea, radialFactory, extendMode); } -void draw_radial_circles(display_surface& rs) { +void draw_radial_circles(display_surface& ds) { // Clear to background color. - rs.paint(rgba_color::cornflower_blue()); - rs.fill_rule(fill_rule::winding); - rs.matrix(matrix_2d::init_identity()); + ds.paint(rgba_color::cornflower_blue()); + ds.fill_rule(fill_rule::winding); + ds.matrix(matrix_2d::init_identity()); auto radialFactory = radial_brush_factory(); radialFactory.add_color_stop(0.0, rgba_color::white()); //radialFactory.add_color_stop(0.25, rgba_color::red()); @@ -335,19 +437,19 @@ void draw_radial_circles(display_surface& rs) { pf.move_to({ 520.0, 10.0 }); pf.curve_to({ 480.0, 60.0 }, { 560.0, 60.0 }, { 520.0, 10.0 }); path p(pf); - rs.path(p); - rs.brush(radialBrush); + ds.path(p); + ds.brush(radialBrush); //// For debug inspection testing only; uncomment if needed. - //auto fe = rs.fill_extents(); - //auto se = rs.stroke_extents(); + //auto fe = ds.fill_extents(); + //auto se = ds.stroke_extents(); //vector_2d pt{ 110.0, 300.0 }; - //auto inFill = rs.in_fill(pt); + //auto inFill = ds.in_fill(pt); //// End for debug inspection testing only. - rs.fill(); - rs.brush(brush(solid_color_brush_factory(rgba_color::red()))); - rs.stroke(); + ds.fill(); + ds.brush(brush(solid_color_brush_factory(rgba_color::red()))); + ds.stroke(); pf.clear(); pf.new_sub_path(); pf.arc({ 900.0, 200.0 }, 50.0, 0.0, two_pi()); @@ -360,33 +462,33 @@ void draw_radial_circles(display_surface& rs) { pf.new_sub_path(); pf.arc({ 900.0, 200.0 }, 150.0, 0.0, two_pi()); p = path(pf); - rs.path(p); - rs.fill(); - rs.matrix(matrix_2d::init_translate({ 0.0, 310.0 })); - rs.path(p); - rs.fill_rule(fill_rule::even_odd); - rs.fill(); + ds.path(p); + ds.fill(); + ds.matrix(matrix_2d::init_translate({ 0.0, 310.0 })); + ds.path(p); + ds.fill_rule(fill_rule::even_odd); + ds.fill(); - //render_ellipse(rs, { 200.0, 600.0 }, 250.0, 100.0, rgba_color(0.0, 1.0, 1.0, 1.0)); + //render_ellipse(ds, { 200.0, 600.0 }, 250.0, 100.0, rgba_color(0.0, 1.0, 1.0, 1.0)); //radialFactory.radial_circles({ 200.5, 300.0 }, 0.0, { 300.0, 300.0 }, 100.0); //auto radialBrush = brush(radialFactory); //radialBrush.extend(extend::repeat); ////radialBrush.matrix(matrix_2d::init_scale({ 2.0, 2.0 })); - //rs.immediate().clear(); - //rs.immediate().rectangle({ { 100.0, 100.0 }, { 500.0, 500.0 } }); - //rs.fill_immediate(radialBrush); + //ds.immediate().clear(); + //ds.immediate().rectangle({ { 100.0, 100.0 }, { 500.0, 500.0 } }); + //ds.fill_immediate(radialBrush); // //radialFactory.radial_circles({ 115.2, 102.4 }, 25.6, { 102.4, 102.4 }, 128.0); //radialBrush = brush(radialFactory); //radialBrush.extend(extend::pad); - //rs.immediate().clear(); - //rs.immediate().arc({ 128.0, 128.0 }, 76.8, 0.0, 2 * pi); - ////rs.immediate().rectangle({ 0.0, 0.0, 250.0, 250.0 }); - //rs.fill_immediate(radialBrush); + //ds.immediate().clear(); + //ds.immediate().arc({ 128.0, 128.0 }, 76.8, 0.0, 2 * pi); + ////ds.immediate().rectangle({ 0.0, 0.0, 250.0, 250.0 }); + //ds.fill_immediate(radialBrush); // //radialFactory.radial_circles({ 400.0, 200.0 }, 100.0, { 600.0, 200.0 }, 100.0); - //auto color = test_draw_circle(rs, { 400.0, 200.0 }, radialFactory); + //auto color = test_draw_circle(ds, { 400.0, 200.0 }, radialFactory); // //{ // auto linearFactory = linear_brush_factory(); @@ -399,81 +501,81 @@ void draw_radial_circles(display_surface& rs) { // linearFactory.add_color_stop(0.5, rgba_color::blue()); // linearFactory.add_color_stop(1.0, rgba_color::white()); // - // rs.immediate().clear(); - // rs.immediate().rectangle({ { 200.0, 280.0 }, { 602.0, 520.0 } }); - // rs.fill_immediate(brush(linearFactory)); + // ds.immediate().clear(); + // ds.immediate().rectangle({ { 200.0, 280.0 }, { 602.0, 520.0 } }); + // ds.fill_immediate(brush(linearFactory)); //} // //radialFactory.radial_circles({ 600.0, 200.0 }, 100.0, { 400.0, 200.0 }, 100.0); - //rs.immediate().clear(); - //rs.immediate().rectangle({ { 280.0, 80.0 }, { 720.0, 320.0 } }); + //ds.immediate().clear(); + //ds.immediate().rectangle({ { 280.0, 80.0 }, { 720.0, 320.0 } }); //radialBrush = brush(radialFactory); //radialBrush.extend(extend::pad); - //rs.fill_immediate(radialBrush); + //ds.fill_immediate(radialBrush); // //radialFactory.radial_circles({ 400.0, 450.0 }, 100.0, { 600.0, 450.0 }, 100.0); - //rs.immediate().clear(); - //rs.immediate().rectangle({ { 280.0, 330.0 }, { 720.0, 570.0 } }); + //ds.immediate().clear(); + //ds.immediate().rectangle({ { 280.0, 330.0 }, { 720.0, 570.0 } }); //radialBrush = brush(radialFactory); //radialBrush.extend(extend::none); - //rs.fill_immediate(radialBrush); + //ds.fill_immediate(radialBrush); // //radialFactory.radial_circles({ 1000.0, 200.0 }, 100.0, { 1000.0, 200.0 }, 20.0); - //rs.immediate().clear(); - //rs.immediate().rectangle({ { 880.0, 80.0 }, { 1120.0, 320.0 } }); + //ds.immediate().clear(); + //ds.immediate().rectangle({ { 880.0, 80.0 }, { 1120.0, 320.0 } }); //radialBrush = brush(radialFactory); //radialBrush.extend(extend::reflect); - //rs.fill_immediate(radialBrush); + //ds.fill_immediate(radialBrush); // //radialFactory.radial_circles({ 1000.0, 450.0 }, 20.0, { 1000.0, 450.0 }, 100.0); - //rs.immediate().clear(); - //rs.immediate().rectangle({ { 880.0, 330.0 }, { 1120.0, 570.0 } }); + //ds.immediate().clear(); + //ds.immediate().rectangle({ { 880.0, 330.0 }, { 1120.0, 570.0 } }); //radialBrush = brush(radialFactory); //radialBrush.extend(extend::repeat); - //rs.fill_immediate(radialBrush); + //ds.fill_immediate(radialBrush); // //radialFactory.radial_circles({ 105.0, 100.0 }, 0.0, { 200.0, 100.0 }, 100.0); - //rs.immediate().clear(); - //rs.immediate().rectangle({ { 0.0, 0.0 }, { 520.0, 200.0 } }); + //ds.immediate().clear(); + //ds.immediate().rectangle({ { 0.0, 0.0 }, { 520.0, 200.0 } }); //radialBrush = brush(radialFactory); //radialBrush.extend(extend::repeat); - //rs.fill_immediate(radialBrush); + //ds.fill_immediate(radialBrush); // // //radialFactory.radial_circles({ 200.0, 200.0 }, 100.0, { 400.0, 200.0 }, 100.0); - //rs.immediate().clear(); - //rs.immediate().rectangle({ { 80.0, 80.0 }, { 520.0, 320.0 } }); + //ds.immediate().clear(); + //ds.immediate().rectangle({ { 80.0, 80.0 }, { 520.0, 320.0 } }); //radialBrush = brush(radialFactory); //radialBrush.extend(extend::none); - //rs.fill_immediate(radialBrush); + //ds.fill_immediate(radialBrush); // //radialFactory.radial_circles({ 200.0, 450.0 }, 100.0, { 400.0, 450.0 }, 100.0); - //rs.immediate().clear(); - //rs.immediate().rectangle({ { 80.0, 330.0 }, { 520.0, 570.0 } }); + //ds.immediate().clear(); + //ds.immediate().rectangle({ { 80.0, 330.0 }, { 520.0, 570.0 } }); //radialBrush = brush(radialFactory); //radialBrush.extend(extend::pad); - //rs.fill_immediate(radialBrush); + //ds.fill_immediate(radialBrush); // ////radialFactory.radial_circles({ 200.0, 450.0 }, 100.0, { 400.0, 450.0 }, 100.0); - ////rs.immediate().clear(); - ////rs.immediate().rectangle({ { 80.0, 330.0 }, { 520.0, 570.0 } }); + ////ds.immediate().clear(); + ////ds.immediate().rectangle({ { 80.0, 330.0 }, { 520.0, 570.0 } }); ////radialBrush = brush(radialFactory); ////radialBrush.extend(extend::pad); - ////rs.fill_immediate(radialBrush); + ////ds.fill_immediate(radialBrush); // //radialFactory.radial_circles({ 700.0, 200.0 }, 100.0, { 900.0, 200.0 }, 100.0); - //rs.immediate().clear(); - //rs.immediate().rectangle({ { 580.0, 80.0 }, { 1020.0, 320.0 } }); + //ds.immediate().clear(); + //ds.immediate().rectangle({ { 580.0, 80.0 }, { 1020.0, 320.0 } }); //radialBrush = brush(radialFactory); //radialBrush.extend(extend::reflect); - //rs.fill_immediate(radialBrush); + //ds.fill_immediate(radialBrush); // //radialFactory.radial_circles({ 700.0, 450.0 }, 100.0, { 900.0, 450.0 }, 100.0); - //rs.immediate().clear(); - //rs.immediate().rectangle({ { 580.0, 330.0 }, { 1020.0, 570.0 } }); + //ds.immediate().clear(); + //ds.immediate().rectangle({ { 580.0, 330.0 }, { 1020.0, 570.0 } }); //radialBrush = brush(radialFactory); //radialBrush.extend(extend::repeat); - //rs.fill_immediate(radialBrush); + //ds.fill_immediate(radialBrush); } wostream& operator<<(wostream& os, const vector_2d& pt) { @@ -522,17 +624,17 @@ void init_mask_surface(image_surface& imsfc) { imsfc.fill_immediate(); } -void draw_hello_world(surface& rs) { - rs.render_text("Hello world", { 100.0, 100.0 }, brush(solid_color_brush_factory(rgba_color::white()))); +void draw_hello_world(display_surface& ds) { + ds.render_text("Hello world", { 100.0, 100.0 }, brush(solid_color_brush_factory(rgba_color::white()))); } // For testing purposes only. -void draw_test_compositing_operators(surface& rs, compositing_operator secondRectCompOp, compositing_operator firstRectCompOp, bool clipToRects, bool clipToTriangle, bool strokePaths, bool mask, const rgba_color& backgroundColor, const rgba_color& firstColor, const rgba_color& secondColor) { +void draw_test_compositing_operators(display_surface& ds, compositing_operator secondRectCompOp, compositing_operator firstRectCompOp, bool clipToRects, bool clipToTriangle, bool strokePaths, bool mask, const rgba_color& backgroundColor, const rgba_color& firstColor, const rgba_color& secondColor) { // Parameter validation. if (clipToRects && clipToTriangle) { throw invalid_argument("clipToRects and clipToTriangle cannot both be set to true."); } - rs.save(); + ds.save(); auto backgroundBrush = brush(solid_color_brush_factory(backgroundColor)); auto firstBrush = brush(solid_color_brush_factory(firstColor)); @@ -558,27 +660,27 @@ void draw_test_compositing_operators(surface& rs, compositing_operator secondRec pb.close_path(); auto triangleClipPath = path(pb); - rs.brush(backgroundBrush); - rs.compositing_operator(compositing_operator::clear); - rs.paint(); + ds.brush(backgroundBrush); + ds.compositing_operator(compositing_operator::clear); + ds.paint(); - rs.brush(firstBrush); - rs.compositing_operator(firstRectCompOp); - rs.path(firstRectPath); - rs.fill(); + ds.brush(firstBrush); + ds.compositing_operator(firstRectCompOp); + ds.path(firstRectPath); + ds.fill(); - rs.save(); // Preserve old clip. + ds.save(); // Preserve old clip. if (clipToRects) { - rs.clip(bothRectsClipPath); + ds.clip(bothRectsClipPath); } if (clipToTriangle) { - rs.clip(triangleClipPath); + ds.clip(triangleClipPath); } - rs.path(secondRectPath); - rs.compositing_operator(secondRectCompOp); - rs.brush(secondBrush); + ds.path(secondRectPath); + ds.compositing_operator(secondRectCompOp); + ds.brush(secondBrush); if (mask) { static image_surface maskSurface(format::a8, 200, 200); static once_flag drawMaskOnceFlag; @@ -602,37 +704,37 @@ void draw_test_compositing_operators(surface& rs, compositing_operator secondRec //// return move(imsfc); ////}, // //move(maskSurface)); - rs.mask(maskSurface); + ds.mask(maskSurface); } else { - rs.fill(); + ds.fill(); } - rs.restore(); // Restore old clip + ds.restore(); // Restore old clip if (strokePaths) { - rs.compositing_operator(compositing_operator::source); - rs.line_width(2.0); + ds.compositing_operator(compositing_operator::source); + ds.line_width(2.0); - rs.path(firstRectPath); - rs.brush(brush(solid_color_brush_factory(rgba_color::teal()))); - rs.stroke(); + ds.path(firstRectPath); + ds.brush(brush(solid_color_brush_factory(rgba_color::teal()))); + ds.stroke(); - rs.path(secondRectPath); - rs.brush(brush(solid_color_brush_factory(rgba_color::red()))); - rs.stroke(); + ds.path(secondRectPath); + ds.brush(brush(solid_color_brush_factory(rgba_color::red()))); + ds.stroke(); if (clipToTriangle) { - rs.path(triangleClipPath); - rs.brush(brush(solid_color_brush_factory(rgba_color::yellow()))); - rs.stroke(); + ds.path(triangleClipPath); + ds.brush(brush(solid_color_brush_factory(rgba_color::yellow()))); + ds.stroke(); } } - rs.restore(); + ds.restore(); } -void draw_sort_visualization_immediate(surface& rs, double elapsedTimeInMilliseconds) { +void draw_sort_visualization_immediate(display_surface& ds, double elapsedTimeInMilliseconds) { static double timer = 0.0; const double power = 3.0; const double lerpTime = 1250.0; @@ -644,20 +746,20 @@ void draw_sort_visualization_immediate(surface& rs, double elapsedTimeInMillisec const static auto vec = init_sort_steps(elementCount); const auto phaseCount = vec.size(); const size_t x = ::std::min(static_cast(timer / phaseTime), ::std::max(static_cast(phaseCount - 1U), static_cast(0U))); - rs.paint(rgba_color::cornflower_blue()); // Paint background. - - rs.immediate().clear(); - rs.immediate().arc({ 100.0, 100.0 }, 50.0, 0.0, half_pi()); - auto initLineWidth = rs.line_width(); - rs.line_width(8.0); - rs.stroke_immediate(rgba_color::black()); - rs.immediate().clear(); - rs.immediate().arc_negative({ 300.0, 100.0 }, 50.0, 0.0, half_pi()); - rs.stroke_immediate(rgba_color::brown()); - rs.immediate().clear(); - rs.line_width(initLineWidth); - - auto clextents = rs.clip_extents(); + ds.paint(rgba_color::cornflower_blue()); // Paint background. + + ds.immediate().clear(); + ds.immediate().arc({ 100.0, 100.0 }, 50.0, 0.0, half_pi()); + auto initLineWidth = ds.line_width(); + ds.line_width(8.0); + ds.stroke_immediate(rgba_color::black()); + ds.immediate().clear(); + ds.immediate().arc_negative({ 300.0, 100.0 }, 50.0, 0.0, half_pi()); + ds.stroke_immediate(rgba_color::brown()); + ds.immediate().clear(); + ds.line_width(initLineWidth); + + auto clextents = ds.clip_extents(); const double radius = trunc(min(clextents.width() * 0.8 / elementCount, clextents.height() + 120.0) / 2.0); const double beginX = trunc(clextents.width() * 0.1); const double y = trunc(clextents.height() * 0.5); @@ -675,16 +777,16 @@ void draw_sort_visualization_immediate(surface& rs, double elapsedTimeInMillisec linearTest1.add_color_stop(0.8, rgba_color::green()); linearTest1.add_color_stop(0.8, rgba_color::yellow()); linearTest1.add_color_stop(1.0, rgba_color::white()); - rs.immediate().rectangle({ 400.0, 400.0, 200.0, 200.0 }); - rs.fill_immediate(brush(linearTest1)); + ds.immediate().rectangle({ 400.0, 400.0, 200.0, 200.0 }); + ds.fill_immediate(brush(linearTest1)); - rs.font_face("Segoe UI", font_slant::normal, font_weight::normal); - rs.font_size(40.0); + ds.font_face("Segoe UI", font_slant::normal, font_weight::normal); + ds.font_size(40.0); auto str = string("Phase ").append(to_string(x + 1)); - rs.render_text(str, { beginX, 50.0 }, rgba_color::white()); + ds.render_text(str, { beginX, 50.0 }, rgba_color::white()); for (size_t i = 0; i < elementCount; ++i) { - rs.immediate().clear(); + ds.immediate().clear(); const auto currVal = vec[x][i]; if (x < phaseCount - 1) { const auto i2 = find(begin(vec[x + 1]), end(vec[x + 1]), currVal) - begin(vec[x + 1]); @@ -692,35 +794,35 @@ void draw_sort_visualization_immediate(surface& rs, double elapsedTimeInMillisec const auto yr = y - ((i2 == static_cast(i) ? 0.0 : (radius * 4.0 * (normalizedTime < 0.5 ? normalizedTime : 1.0 - normalizedTime))) * (i % 2 == 1 ? 1.0 : -1.0)); const auto center = vector_2d{ trunc((x2r - x1r) * adjustment + x1r), trunc(yr) }; - rs.immediate().change_matrix(matrix_2d::init_scale({ 1.0, 1.5 }) * matrix_2d::init_rotate(pi() / 4.0) * matrix_2d::init_translate({ 0.0, 50.0 })); - rs.immediate().change_origin(center); - rs.immediate().arc_negative(center, radius - 3.0, half_pi(), -half_pi()); + ds.immediate().change_matrix(matrix_2d::init_scale({ 1.0, 1.5 }) * matrix_2d::init_rotate(pi() / 4.0) * matrix_2d::init_translate({ 0.0, 50.0 })); + ds.immediate().change_origin(center); + ds.immediate().arc_negative(center, radius - 3.0, half_pi(), -half_pi()); } else { const vector_2d center{ radius * i * 2.0 + radius + beginX, y }; - rs.immediate().change_matrix(matrix_2d::init_scale({ 1.0, 1.5 }) * matrix_2d::init_rotate(pi() / 4.0)); - rs.immediate().change_origin(center); - rs.immediate().arc_negative(center, radius - 3.0, half_pi(), -half_pi()); + ds.immediate().change_matrix(matrix_2d::init_scale({ 1.0, 1.5 }) * matrix_2d::init_rotate(pi() / 4.0)); + ds.immediate().change_origin(center); + ds.immediate().arc_negative(center, radius - 3.0, half_pi(), -half_pi()); } double greyColor = 1.0 - (currVal / (elementCount - 1.0)); - rs.fill_immediate({ greyColor, greyColor, greyColor, 1.0 }); + ds.fill_immediate({ greyColor, greyColor, greyColor, 1.0 }); } - rs.immediate().clear(); - rs.immediate().change_origin({ 250.0, 450.0 }); - rs.immediate().change_matrix(matrix_2d::init_shear_x(0.5).scale({ 2.0, 2.5 })); - rs.immediate().rectangle({ 200.0, 400.0, 100.0, 100.0 }); - rs.line_width(3.0); - rs.stroke_immediate(rgba_color::red()); + ds.immediate().clear(); + ds.immediate().change_origin({ 250.0, 450.0 }); + ds.immediate().change_matrix(matrix_2d::init_shear_x(0.5).scale({ 2.0, 2.5 })); + ds.immediate().rectangle({ 200.0, 400.0, 100.0, 100.0 }); + ds.line_width(3.0); + ds.stroke_immediate(rgba_color::red()); //auto radialFactory = radial_brush_factory({ 250.0, 450.0 }, 0.0, { 250.0, 450.0 }, 80.0); //radialFactory.add_color_stop(0.0, rgba_color::black()); //radialFactory.add_color_stop(0.25, rgba_color::red()); //radialFactory.add_color_stop(0.5, rgba_color::green()); //radialFactory.add_color_stop(0.75, rgba_color::blue()); //radialFactory.add_color_stop(1.0, rgba_color::white()); - //auto radialBrush = rs.create_brush(radialFactory); + //auto radialBrush = ds.create_brush(radialFactory); //radialBrush.extend(extend::reflect); - //rs.fill_immediate(radialBrush); + //ds.fill_immediate(radialBrush); //auto meshFactory = mesh_brush_factory(); //meshFactory.begin_patch(); @@ -744,7 +846,7 @@ void draw_sort_visualization_immediate(surface& rs, double elapsedTimeInMillisec //meshFactory.end_patch(); //auto meshBrush = brush(meshFactory); //meshBrush.matrix(matrix_2d::init_translate({ -200.0, -400.0 })); - //rs.fill_immediate(meshBrush); + //ds.fill_immediate(meshBrush); auto imgSfc = image_surface(format::argb32, 40, 40); imgSfc.immediate().move_to({ 0.0, 0.0 }); @@ -757,48 +859,48 @@ void draw_sort_visualization_immediate(surface& rs, double elapsedTimeInMillisec auto sfcFactory = surface_brush_factory(imgSfc); auto sfcBrush = brush(sfcFactory); sfcBrush.extend(extend::repeat); - rs.immediate().clear(); - rs.immediate().rectangle({ 500.0, 450.0, 100.0, 100.0 }); - rs.immediate().rectangle({ 525.0, 425.0, 50.0, 150.0 }); - rs.line_join(line_join::miter_or_bevel); - rs.miter_limit(1.0); - rs.line_width(10.0); - rs.stroke_immediate(rgba_color::red()); - rs.fill_immediate(sfcBrush); + ds.immediate().clear(); + ds.immediate().rectangle({ 500.0, 450.0, 100.0, 100.0 }); + ds.immediate().rectangle({ 525.0, 425.0, 50.0, 150.0 }); + ds.line_join(line_join::miter_or_bevel); + ds.miter_limit(1.0); + ds.line_width(10.0); + ds.stroke_immediate(rgba_color::red()); + ds.fill_immediate(sfcBrush); auto linearFactory = linear_brush_factory({ 510.0, 460.0 }, { 530.0, 480.0 }); linearFactory.add_color_stop(0.0, rgba_color::chartreuse()); linearFactory.add_color_stop(1.0, rgba_color::salmon()); auto linearBrush = brush(linearFactory); linearBrush.extend(extend::repeat); - rs.immediate().clear(); - rs.immediate().move_to({ 650.0, 400.0 }); - rs.immediate().rel_line_to({ 0.0, 100.0 }); - rs.immediate().rel_line_to({ 10.0, -100.0 }); - rs.line_join(line_join::miter); - rs.stroke_immediate(rgba_color::red()); - rs.fill_immediate(linearBrush); - - rs.immediate().clear(); - rs.immediate().move_to({ 430.0, 60.0 }); - rs.immediate().arc({ 500.0, 60.0 }, 30.0, pi(), two_pi()); - rs.immediate().line_to({ 570.0, 60.0 }); - // rs.immediate().new_sub_path(); - rs.immediate().arc({ 500.0, 130.0 }, 30.0, two_pi(), pi() * 3.0 / 4.0); - rs.immediate().new_sub_path(); - rs.dashes(dashes{ { 0.0, 10.0 }, 0.0 }); - rs.line_width(5.0); - rs.line_cap(line_cap::round); - rs.fill_immediate(rgba_color::blue()); - rs.stroke_immediate(rgba_color::orange()); + ds.immediate().clear(); + ds.immediate().move_to({ 650.0, 400.0 }); + ds.immediate().rel_line_to({ 0.0, 100.0 }); + ds.immediate().rel_line_to({ 10.0, -100.0 }); + ds.line_join(line_join::miter); + ds.stroke_immediate(rgba_color::red()); + ds.fill_immediate(linearBrush); + + ds.immediate().clear(); + ds.immediate().move_to({ 430.0, 60.0 }); + ds.immediate().arc({ 500.0, 60.0 }, 30.0, pi(), two_pi()); + ds.immediate().line_to({ 570.0, 60.0 }); + // ds.immediate().new_sub_path(); + ds.immediate().arc({ 500.0, 130.0 }, 30.0, two_pi(), pi() * 3.0 / 4.0); + ds.immediate().new_sub_path(); + ds.dashes(dashes{ { 0.0, 10.0 }, 0.0 }); + ds.line_width(5.0); + ds.line_cap(line_cap::round); + ds.fill_immediate(rgba_color::blue()); + ds.stroke_immediate(rgba_color::orange()); // Reset dashes to be a solid line. - rs.dashes(nullopt); - rs.line_cap(line_cap::butt); + ds.dashes(nullopt); + ds.line_cap(line_cap::butt); - rs.immediate().clear(); - rs.immediate().curve_to({ 610.0, 400.0 }, { 660.0, 300.0 }, { 710.0, 400.0 }); - rs.immediate().close_path(); - rs.stroke_immediate(rgba_color::yellow_green()); + ds.immediate().clear(); + ds.immediate().curve_to({ 610.0, 400.0 }, { 660.0, 300.0 }, { 710.0, 400.0 }); + ds.immediate().close_path(); + ds.stroke_immediate(rgba_color::yellow_green()); //auto radialFactory = radial_brush_factory({ 115.2, 102.4 }, 25.6, { 102.4, 102.4 }, 128.0); //radialFactory.add_color_stop(0.0, rgba_color::white()); @@ -808,15 +910,15 @@ void draw_sort_visualization_immediate(surface& rs, double elapsedTimeInMillisec //radialFactory.add_color_stop(1.0, rgba_color::black()); //auto radialBrush = brush(radialFactory); //radialBrush.extend(extend::pad); - //rs.immediate().clear(); - ////rs.immediate().arc({ 128.0, 128.0 }, 76.8, 0.0, 2 * pi); - //rs.immediate().rectangle({ 0.0, 0.0, 250.0, 250.0 }); - //rs.fill_immediate(radialBrush); + //ds.immediate().clear(); + ////ds.immediate().arc({ 128.0, 128.0 }, 76.8, 0.0, 2 * pi); + //ds.immediate().rectangle({ 0.0, 0.0, 250.0, 250.0 }); + //ds.fill_immediate(radialBrush); timer = (timer > phaseTime * (phaseCount + 2)) ? 0.0 : timer + elapsedTimeInMilliseconds; } -void draw_sort_visualization(surface& rs, double elapsedTimeInMilliseconds) { +void draw_sort_visualization(display_surface& ds, double elapsedTimeInMilliseconds) { static double timer = 0.0; const double power = 3.0; const double lerpTime = 1250.0; @@ -830,19 +932,19 @@ void draw_sort_visualization(surface& rs, double elapsedTimeInMilliseconds) { assert(phaseCount > 0); const size_t x = min(static_cast(timer / phaseTime), max(static_cast(phaseCount - 1U), static_cast(0U))); auto cornflowerBlueBrush = brush(solid_color_brush_factory(rgba_color::cornflower_blue())); - rs.brush(cornflowerBlueBrush); - rs.paint(); // Paint background. + ds.brush(cornflowerBlueBrush); + ds.paint(); // Paint background. - auto clextents = rs.clip_extents(); + auto clextents = ds.clip_extents(); const double radius = trunc(min(clextents.width() * 0.8 / elementCount, clextents.height() + 120.0) / 2.0); const double beginX = trunc(clextents.width() * 0.1); const double y = trunc(clextents.height() * 0.5); auto whiteBrush = brush(solid_color_brush_factory(rgba_color::white())); - rs.brush(whiteBrush); - rs.font_face("Segoe UI", font_slant::normal, font_weight::normal); - rs.font_size(40.0); - rs.render_text(string("Phase ").append(to_string(x + 1)).c_str(), { beginX, 50.0 }); + ds.brush(whiteBrush); + ds.font_face("Segoe UI", font_slant::normal, font_weight::normal); + ds.font_size(40.0); + ds.render_text(string("Phase ").append(to_string(x + 1)).c_str(), { beginX, 50.0 }); path_factory pf; @@ -865,22 +967,22 @@ void draw_sort_visualization(surface& rs, double elapsedTimeInMilliseconds) { pf.change_origin(center); pf.arc_negative(center, radius - 3.0, half_pi(), -half_pi()); } - rs.path(path(pf)); + ds.path(path(pf)); double greyColor = 1.0 - (currVal / (elementCount - 1.0)); auto greyBrush = brush(solid_color_brush_factory({ greyColor, greyColor, greyColor, 1.0 })); - rs.brush(greyBrush); - rs.fill(); + ds.brush(greyBrush); + ds.fill(); } pf.clear(); pf.change_origin({ 250.0, 450.0 }); pf.change_matrix(matrix_2d::init_shear_x(0.5).scale({ 2.0, 1.0 })); pf.rectangle({ 200.0, 400.0, 100.0, 100.0 }); - rs.path(path(pf)); + ds.path(path(pf)); auto redBrush = brush(solid_color_brush_factory(rgba_color::red())); - rs.brush(redBrush); - rs.line_width(3.0); - rs.stroke(); + ds.brush(redBrush); + ds.line_width(3.0); + ds.stroke(); auto radialFactory = radial_brush_factory({ 250.0, 450.0 }, 0.0, { 250.0, 450.0 }, 80.0); radialFactory.add_color_stop(0.0, rgba_color::black()); radialFactory.add_color_stop(0.25, rgba_color::red()); @@ -889,8 +991,8 @@ void draw_sort_visualization(surface& rs, double elapsedTimeInMilliseconds) { radialFactory.add_color_stop(1.0, rgba_color::white()); auto radialBrush = brush(radialFactory); radialBrush.extend(extend::reflect); - rs.brush(radialBrush); - rs.fill(); + ds.brush(radialBrush); + ds.fill(); auto linearFactory = linear_brush_factory({ 510.0, 460.0 }, { 530.0, 480.0 }); linearFactory.add_color_stop(0.0, rgba_color::chartreuse()); @@ -900,25 +1002,25 @@ void draw_sort_visualization(surface& rs, double elapsedTimeInMilliseconds) { pf.clear(); pf.rectangle({ 500.0, 450.0, 100.0, 100.0 }); pf.rectangle({ 525.0, 425.0, 50.0, 150.0 }); - rs.line_join(line_join::miter_or_bevel); - rs.miter_limit(1.0); - rs.line_width(10.0); - rs.path(path(pf)); - rs.brush(redBrush); - rs.stroke(); - rs.brush(linearBrush); - rs.fill(); + ds.line_join(line_join::miter_or_bevel); + ds.miter_limit(1.0); + ds.line_width(10.0); + ds.path(path(pf)); + ds.brush(redBrush); + ds.stroke(); + ds.brush(linearBrush); + ds.fill(); pf.clear(); pf.move_to({ 650.0, 400.0 }); pf.rel_line_to({ 0.0, 100.0 }); pf.rel_line_to({ 10.0, -100.0 }); - rs.line_join(line_join::miter); - rs.path(path(pf)); - rs.brush(redBrush); - rs.stroke(); - rs.brush(linearBrush); - rs.fill(); + ds.line_join(line_join::miter); + ds.path(path(pf)); + ds.brush(redBrush); + ds.stroke(); + ds.brush(linearBrush); + ds.fill(); pf.clear(); pf.move_to({ 430.0, 60.0 }); @@ -927,10 +1029,10 @@ void draw_sort_visualization(surface& rs, double elapsedTimeInMilliseconds) { pf.new_sub_path(); pf.arc_negative({ 500.0, 130.0 }, 30.0, 0.0, pi() * 3.0 / 4.0); pf.new_sub_path(); - rs.path(path(pf)); - rs.line_width(2.0); - rs.brush(redBrush); - rs.stroke(); + ds.path(path(pf)); + ds.line_width(2.0); + ds.brush(redBrush); + ds.stroke(); timer = (timer > phaseTime * (phaseCount + 2)) ? 0.0 : timer + elapsedTimeInMilliseconds; } From 76cd02dd43d388f71ba9a9e291c9637f0f08ab92 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Fri, 26 Feb 2016 22:03:14 +0100 Subject: [PATCH 10/30] P0267R0: A Proposal to Add 2D Graphics Rendering and Display to C++ --- doc/p0267r0.pdf | Bin 0 -> 1599877 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/p0267r0.pdf diff --git a/doc/p0267r0.pdf b/doc/p0267r0.pdf new file mode 100644 index 0000000000000000000000000000000000000000..07d943d1718c6bda95777e63e57a43ada4364aa0 GIT binary patch literal 1599877 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%0A`Vz^e8pvl%keu*Y$= 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 IM{VskyXgazWO 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

    Zdx}y-qx@)4;t5;Hn&Di8=XCUUC(bb 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

    SN$rvxy`VaR{pu_9Max;uhCGBG|`wR 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%0AI;}Pa+i}=|`sZ=+? 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 ^ix3rxl%3XP#{3uCl{nCsI|nweCji+s)Kgv= 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 +; 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Ã=~n)Ucjx@jJtDkeXRY7IfD`YAZC|=`K>7BJS-d-EBb6a?O(-im zHPIP4B;Fmm=;RaGZbwId!D_MJE=_-FrRQ1r>PmBWUrG_q*>iotc75&M(uFy=@>Hjn zoLfAM;ZvqYWYZ^s)BK)*W7b3PZgl}}uAIL*W5oWr*mh{;T-ZIRd|~S3@CI?P{46UY zd-~cVt$dMB9o<`ae|`0i%j9{$wl`OBXTg@Gg}#GDplhK2;iUY|iUpm2c24cFnm^N&{wX=*M2jyX=Ks527lYQ`wW*`!wMA!nu9oL%C*pnTKN`^WZMdSP(Vux=JJKt9enLQxTiz znhUE?%ZW7mTvbf;I=y_N*Ev0MUh+ET++wIzPGPm{1& zqbm&D`F;^zUHV-ZC(lV4+w&Kt;s?=xDE<-}b)RDuFCS1@b2i?!BN<<6jV{@7djcL- z{nSZO8c-;AuTmMZme==a_lKTDIRma2aONgaEAOg@SXoEgjXV%8>-y@ukZ-7qURg}d zNjyNu*2Dv(fJc|7{Y73mDso0SJ#tp)i<7g0muqw1+}^EQ&g{W!7rAqDqC`)mAw^D_ zZESI_;pl`{*S7rZ&4=ge`x3{_zPvs$%R|@eW%rRNarTiocKky+IYu|*WzGIT=J2FA zcKk>e$6nqLN-dq!pPymHxXOCiAI0__)O$B|sj%dbI`Ot|k9RK#a(Tmttq6@${@%HzG z?T4Q|m-;s@%k2w+ejFj8i$2F0vr?lxM|Yh4b|c>N4Ys||eOChS?4!$GTb&>FFkcCo zSzpPG86QO~^Ptqso~D8D=qyd;cx7&_AN+c)!pIF+>T6*JGv5%m-!uN)#j88Qwnv@= zPy5sT?)4ifmN*z?BX%gvDZ1mcXO;%4U_w(_)@ze+ac_S@V`fKXe7wH9ZoDn4hk2L8 z-|-2N=J(|J?*66GY>dSLpK~9U7z->h0?Nkr^Ed@0xpc7jXkn?1bi#KZkyhE$y$jKI z-I9@YORtD~E_LOw#hR2YvkI3eq;MVnFp16_dbtr z_YAi{_(~swe8YL!-%FjL?`~fv4hqHfyQk$EtWDy%?J;xjCLRh)j0Ki_LRjkLVDU3Z z`j5XDmU;+S^cPs-Ww7W?u>vsg;IFLEZ0?;~5Jvlzl{wXCIN{*+=Af z_5wMc-$Uj;mwFOfrvr1x%%_m=o|7Wa#jfSt6)4%~xP~*nO9Ibx@s;|$}00ySz&gTiT1VN2eCa zUwhiSl0Sx~m)N&w*`<-?IfvA)k*HeqH6GRMeWBFYLQJNd$r7u=r>xM(=gaNM_~bKW z9wwJHm${Vn<)_K|w%-i}xbo_fSo&`5P)Q=OFMW1n6C`_lGO&lWbb;CGYnOnqd&^yo zrHkVAtmPG(FK@6BLsP-+(Ed~McQ0+EJSi0-y!(ja2>vPGE5bWU`&hJ&% zb4=$rw?f_LVjYhNbKz&m8u! z7u>yYIh$|INSt<9~j6?{j~A_sw5_{q^_zr=9fvukXJ3=l}fs zulHYz_VvF%z5loGe-xVe@Ry%HeEjjJPk;XNPd|S7@|U-t?v~KEpVejk`123%|Nlq+ m{rwL=y!)@;|MuJO|NYx9e}9Jpl0d(G_lH0H)4%-u?tcNMvqN|Q literal 0 HcmV?d00001 From 5d46cef96cd4acf0ed312404f6be7b925e3030ed Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Fri, 26 Feb 2016 23:51:03 +0100 Subject: [PATCH 11/30] Added CMake build support for pixman --- io2d/src/3rd-party/pixman/CMakeLists.txt | 47 +++++++++++++++++ io2d/src/3rd-party/pixman/config.h.cmake | 2 + .../3rd-party/pixman/pixman/pixman-version.h | 50 ------------------- 3 files changed, 49 insertions(+), 50 deletions(-) create mode 100644 io2d/src/3rd-party/pixman/CMakeLists.txt create mode 100644 io2d/src/3rd-party/pixman/config.h.cmake delete mode 100644 io2d/src/3rd-party/pixman/pixman/pixman-version.h diff --git a/io2d/src/3rd-party/pixman/CMakeLists.txt b/io2d/src/3rd-party/pixman/CMakeLists.txt new file mode 100644 index 0000000..e577716 --- /dev/null +++ b/io2d/src/3rd-party/pixman/CMakeLists.txt @@ -0,0 +1,47 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(pixman C) + +set(PIXMAN_SRC + pixman/pixman.c pixman/pixman-access.c + pixman/pixman-access-accessors.c pixman/pixman-bits-image.c + pixman/pixman-combine32.c pixman/pixman-combine-float.c + pixman/pixman-conical-gradient.c pixman/pixman-filter.c + pixman/pixman-x86.c pixman/pixman-mips.c + pixman/pixman-arm.c pixman/pixman-ppc.c + pixman/pixman-edge.c pixman/pixman-edge-accessors.c + pixman/pixman-fast-path.c pixman/pixman-glyph.c + pixman/pixman-general.c pixman/pixman-gradient-walker.c + pixman/pixman-image.c pixman/pixman-implementation.c + pixman/pixman-linear-gradient.c pixman/pixman-matrix.c + pixman/pixman-noop.c pixman/pixman-radial-gradient.c + pixman/pixman-region16.c pixman/pixman-region32.c + pixman/pixman-solid-fill.c pixman/pixman-timer.c + pixman/pixman-trap.c pixman/pixman-utils.c +) + +add_library(pixman ${PIXMAN_SRC}) + +target_include_directories(pixman PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/pixman + ${CMAKE_CURRENT_BINARY_DIR} +) + +option(USE_SSE2 "use SSE2 compiler intrinsics" ON) +if (USE_SSE2) + list(APPEND PIXMAN_SRC pixman/pixman-sse2.c) + target_compile_definitions(pixman PRIVATE USE_SSE2) +endif() + +include(CheckIncludeFiles) +target_compile_definitions(pixman PRIVATE HAVE_CONFIG_H) +check_include_files(pthread.h HAVE_PTHREAD_H) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake + ${CMAKE_CURRENT_BINARY_DIR}/config.h) + +set(PIXMAN_VERSION_MAJOR 0) +set(PIXMAN_VERSION_MINOR 33) +set(PIXMAN_VERSION_MICRO 1) + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/pixman/pixman-version.h.in + ${CMAKE_CURRENT_BINARY_DIR}/pixman-version.h) diff --git a/io2d/src/3rd-party/pixman/config.h.cmake b/io2d/src/3rd-party/pixman/config.h.cmake new file mode 100644 index 0000000..7c76f3c --- /dev/null +++ b/io2d/src/3rd-party/pixman/config.h.cmake @@ -0,0 +1,2 @@ +#cmakedefine HAVE_PTHREAD_H 1 +#define PACKAGE 1 diff --git a/io2d/src/3rd-party/pixman/pixman/pixman-version.h b/io2d/src/3rd-party/pixman/pixman/pixman-version.h deleted file mode 100644 index 4e53ce1..0000000 --- a/io2d/src/3rd-party/pixman/pixman/pixman-version.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright © 2008 Red Hat, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Author: Carl D. Worth - */ - -#ifndef PIXMAN_VERSION_H__ -#define PIXMAN_VERSION_H__ - -#ifndef PIXMAN_H__ -# error pixman-version.h should only be included by pixman.h -#endif - -#define PIXMAN_VERSION_MAJOR 0 -#define PIXMAN_VERSION_MINOR 33 -#define PIXMAN_VERSION_MICRO 1 - -#define PIXMAN_VERSION_STRING "@PIXMAN_VERSION_MAJOR@.@PIXMAN_VERSION_MINOR@.@PIXMAN_VERSION_MICRO@" - -#define PIXMAN_VERSION_ENCODE(major, minor, micro) ( \ - ((major) * 10000) \ - + ((minor) * 100) \ - + ((micro) * 1)) - -#define PIXMAN_VERSION PIXMAN_VERSION_ENCODE( \ - PIXMAN_VERSION_MAJOR, \ - PIXMAN_VERSION_MINOR, \ - PIXMAN_VERSION_MICRO) - -#endif /* PIXMAN_VERSION_H__ */ From 13965a739c47555ca3c1e6571fa03fb3250d46e8 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Sun, 28 Feb 2016 17:24:08 +0100 Subject: [PATCH 12/30] Removed unused zlib and libpng libraries --- io2d/src/3rd-party/libpng/ANNOUNCE | 63 - io2d/src/3rd-party/libpng/CHANGES | 4750 ------- io2d/src/3rd-party/libpng/CMakeLists.txt | 364 - io2d/src/3rd-party/libpng/INSTALL | 170 - io2d/src/3rd-party/libpng/LICENSE | 111 - io2d/src/3rd-party/libpng/Makefile.am | 331 - io2d/src/3rd-party/libpng/README | 202 - io2d/src/3rd-party/libpng/TODO | 27 - io2d/src/3rd-party/libpng/arm/arm_init.c | 232 - io2d/src/3rd-party/libpng/arm/filter_neon.S | 246 - .../libpng/arm/filter_neon_intrinsics.c | 372 - io2d/src/3rd-party/libpng/autogen.sh | 224 - io2d/src/3rd-party/libpng/configure.ac | 285 - io2d/src/3rd-party/libpng/contrib/README.txt | 4 - .../3rd-party/libpng/contrib/conftest/README | 49 - .../libpng/contrib/conftest/read.dfa | 58 - .../libpng/contrib/conftest/s_read.dfa | 35 - .../libpng/contrib/conftest/s_write.dfa | 33 - .../libpng/contrib/conftest/simple.dfa | 36 - .../libpng/contrib/conftest/write.dfa | 45 - .../libpng/contrib/examples/README.txt | 24 - .../libpng/contrib/examples/iccfrompng.c | 180 - .../libpng/contrib/examples/pngpixel.c | 368 - .../libpng/contrib/examples/pngtopng.c | 92 - .../3rd-party/libpng/contrib/gregbook/COPYING | 340 - .../3rd-party/libpng/contrib/gregbook/LICENSE | 50 - .../libpng/contrib/gregbook/Makefile.mingw32 | 130 - .../libpng/contrib/gregbook/Makefile.sgi | 104 - .../libpng/contrib/gregbook/Makefile.unx | 132 - .../libpng/contrib/gregbook/Makefile.w32 | 113 - .../3rd-party/libpng/contrib/gregbook/README | 186 - .../libpng/contrib/gregbook/makevms.com | 132 - .../libpng/contrib/gregbook/readpng.c | 316 - .../libpng/contrib/gregbook/readpng.h | 88 - .../libpng/contrib/gregbook/readpng2.c | 505 - .../libpng/contrib/gregbook/readpng2.h | 116 - .../libpng/contrib/gregbook/readppm.c | 179 - .../libpng/contrib/gregbook/rpng-win.c | 728 -- .../libpng/contrib/gregbook/rpng-x.c | 904 -- .../libpng/contrib/gregbook/rpng2-win.c | 1253 -- .../libpng/contrib/gregbook/rpng2-x.c | 2107 ---- .../libpng/contrib/gregbook/toucan.png | Bin 12901 -> 0 bytes .../3rd-party/libpng/contrib/gregbook/wpng.c | 853 -- .../libpng/contrib/gregbook/writepng.c | 401 - .../libpng/contrib/gregbook/writepng.h | 133 - .../libpng/contrib/libtests/fakepng.c | 57 - .../libpng/contrib/libtests/gentests.sh | 102 - .../libpng/contrib/libtests/makepng.c | 1486 --- .../libpng/contrib/libtests/pngstest.c | 3807 ------ .../libpng/contrib/libtests/pngunknown.c | 1245 -- .../libpng/contrib/libtests/pngvalid.c | 10281 ---------------- .../libpng/contrib/libtests/readpng.c | 104 - .../libpng/contrib/libtests/tarith.c | 999 -- .../libpng/contrib/libtests/timepng.c | 303 - .../3rd-party/libpng/contrib/pngminim/README | 5 - .../libpng/contrib/pngminim/decoder/README | 10 - .../libpng/contrib/pngminim/decoder/makefile | 151 - .../contrib/pngminim/decoder/pngusr.dfa | 40 - .../libpng/contrib/pngminim/decoder/pngusr.h | 24 - .../libpng/contrib/pngminim/encoder/README | 10 - .../libpng/contrib/pngminim/encoder/makefile | 150 - .../contrib/pngminim/encoder/pngusr.dfa | 39 - .../libpng/contrib/pngminim/encoder/pngusr.h | 24 - .../libpng/contrib/pngminim/preader/README | 15 - .../libpng/contrib/pngminim/preader/makefile | 166 - .../contrib/pngminim/preader/pngusr.dfa | 40 - .../libpng/contrib/pngminim/preader/pngusr.h | 24 - .../3rd-party/libpng/contrib/pngminus/README | 153 - .../libpng/contrib/pngminus/makefile.std | 65 - .../libpng/contrib/pngminus/makefile.tc3 | 38 - .../libpng/contrib/pngminus/makevms.com | 92 - .../libpng/contrib/pngminus/png2pnm.bat | 41 - .../libpng/contrib/pngminus/png2pnm.c | 431 - .../libpng/contrib/pngminus/png2pnm.sh | 42 - .../libpng/contrib/pngminus/pngminus.bat | 4 - .../libpng/contrib/pngminus/pngminus.sh | 5 - .../libpng/contrib/pngminus/pnm2png.bat | 41 - .../libpng/contrib/pngminus/pnm2png.c | 599 - .../libpng/contrib/pngminus/pnm2png.sh | 42 - .../3rd-party/libpng/contrib/pngsuite/README | 105 - .../libpng/contrib/pngsuite/basn0g01.png | Bin 164 -> 0 bytes .../libpng/contrib/pngsuite/basn0g02.png | Bin 104 -> 0 bytes .../libpng/contrib/pngsuite/basn0g04.png | Bin 145 -> 0 bytes .../libpng/contrib/pngsuite/basn0g08.png | Bin 138 -> 0 bytes .../libpng/contrib/pngsuite/basn0g16.png | Bin 167 -> 0 bytes .../libpng/contrib/pngsuite/basn2c08.png | Bin 145 -> 0 bytes .../libpng/contrib/pngsuite/basn2c16.png | Bin 302 -> 0 bytes .../libpng/contrib/pngsuite/basn3p01.png | Bin 112 -> 0 bytes .../libpng/contrib/pngsuite/basn3p02.png | Bin 146 -> 0 bytes .../libpng/contrib/pngsuite/basn3p04.png | Bin 216 -> 0 bytes .../libpng/contrib/pngsuite/basn3p08.png | Bin 1286 -> 0 bytes .../libpng/contrib/pngsuite/basn4a08.png | Bin 126 -> 0 bytes .../libpng/contrib/pngsuite/basn4a16.png | Bin 2206 -> 0 bytes .../libpng/contrib/pngsuite/basn6a08.png | Bin 184 -> 0 bytes .../libpng/contrib/pngsuite/basn6a16.png | Bin 3435 -> 0 bytes .../libpng/contrib/pngsuite/ftbbn0g01.png | Bin 176 -> 0 bytes .../libpng/contrib/pngsuite/ftbbn0g02.png | Bin 197 -> 0 bytes .../libpng/contrib/pngsuite/ftbbn0g04.png | Bin 429 -> 0 bytes .../libpng/contrib/pngsuite/ftbbn2c16.png | Bin 2041 -> 0 bytes .../libpng/contrib/pngsuite/ftbbn3p08.png | Bin 1499 -> 0 bytes .../libpng/contrib/pngsuite/ftbgn2c16.png | Bin 2041 -> 0 bytes .../libpng/contrib/pngsuite/ftbgn3p08.png | Bin 1499 -> 0 bytes .../libpng/contrib/pngsuite/ftbrn2c08.png | Bin 1633 -> 0 bytes .../libpng/contrib/pngsuite/ftbwn0g16.png | Bin 1313 -> 0 bytes .../libpng/contrib/pngsuite/ftbwn3p08.png | Bin 1496 -> 0 bytes .../libpng/contrib/pngsuite/ftbyn3p08.png | Bin 1499 -> 0 bytes .../libpng/contrib/pngsuite/ftp0n0g08.png | Bin 719 -> 0 bytes .../libpng/contrib/pngsuite/ftp0n2c08.png | Bin 1594 -> 0 bytes .../libpng/contrib/pngsuite/ftp0n3p08.png | Bin 1476 -> 0 bytes .../libpng/contrib/pngsuite/ftp1n3p08.png | Bin 1483 -> 0 bytes .../3rd-party/libpng/contrib/tools/README.txt | 26 - .../libpng/contrib/tools/checksum-icc.c | 102 - .../src/3rd-party/libpng/contrib/tools/chkfmt | 137 - .../3rd-party/libpng/contrib/tools/cvtcolor.c | 188 - .../libpng/contrib/tools/intgamma.sh | 110 - .../3rd-party/libpng/contrib/tools/makesRGB.c | 430 - .../libpng/contrib/tools/png-fix-itxt.c | 153 - .../3rd-party/libpng/contrib/tools/pngfix.c | 4037 ------ .../src/3rd-party/libpng/contrib/tools/sRGB.h | 48 - .../libpng/contrib/visupng/PngFile.c | 451 - .../libpng/contrib/visupng/PngFile.h | 30 - .../libpng/contrib/visupng/README.txt | 61 - .../libpng/contrib/visupng/VisualPng.c | 970 -- .../libpng/contrib/visupng/VisualPng.dsp | 147 - .../libpng/contrib/visupng/VisualPng.dsw | 29 - .../libpng/contrib/visupng/VisualPng.ico | Bin 766 -> 0 bytes .../libpng/contrib/visupng/VisualPng.png | Bin 208 -> 0 bytes .../libpng/contrib/visupng/VisualPng.rc | 152 - .../libpng/contrib/visupng/cexcept.h | 248 - .../libpng/contrib/visupng/resource.h | 23 - io2d/src/3rd-party/libpng/example.c | 1061 -- io2d/src/3rd-party/libpng/libpng-config.in | 127 - io2d/src/3rd-party/libpng/libpng-manual.txt | 5288 -------- io2d/src/3rd-party/libpng/libpng.3 | 6154 --------- io2d/src/3rd-party/libpng/libpng.pc.in | 11 - io2d/src/3rd-party/libpng/libpngpf.3 | 18 - io2d/src/3rd-party/libpng/png.5 | 74 - io2d/src/3rd-party/libpng/png.c | 4324 ------- io2d/src/3rd-party/libpng/png.h | 3320 ----- io2d/src/3rd-party/libpng/pngbar.jpg | Bin 2498 -> 0 bytes io2d/src/3rd-party/libpng/pngbar.png | Bin 2399 -> 0 bytes io2d/src/3rd-party/libpng/pngconf.h | 617 - io2d/src/3rd-party/libpng/pngdebug.h | 154 - io2d/src/3rd-party/libpng/pngerror.c | 953 -- io2d/src/3rd-party/libpng/pngget.c | 1177 -- io2d/src/3rd-party/libpng/pnginfo.h | 260 - io2d/src/3rd-party/libpng/pnglibconf.h | 211 - io2d/src/3rd-party/libpng/pngmem.c | 281 - io2d/src/3rd-party/libpng/pngnow.png | Bin 2069 -> 0 bytes io2d/src/3rd-party/libpng/pngpread.c | 1291 -- io2d/src/3rd-party/libpng/pngpriv.h | 2051 --- io2d/src/3rd-party/libpng/pngread.c | 4010 ------ io2d/src/3rd-party/libpng/pngrio.c | 118 - io2d/src/3rd-party/libpng/pngrtran.c | 5110 -------- io2d/src/3rd-party/libpng/pngrutil.c | 4479 ------- io2d/src/3rd-party/libpng/pngset.c | 1597 --- io2d/src/3rd-party/libpng/pngstruct.h | 489 - io2d/src/3rd-party/libpng/pngtest.c | 1973 --- io2d/src/3rd-party/libpng/pngtest.png | Bin 8695 -> 0 bytes io2d/src/3rd-party/libpng/pngtrans.c | 841 -- io2d/src/3rd-party/libpng/pngusr.dfa | 14 - io2d/src/3rd-party/libpng/pngwio.c | 166 - io2d/src/3rd-party/libpng/pngwrite.c | 2335 ---- io2d/src/3rd-party/libpng/pngwtran.c | 637 - io2d/src/3rd-party/libpng/pngwutil.c | 3023 ----- .../libpng/projects/owatcom/libpng.tgt | 383 - .../libpng/projects/owatcom/libpng.wpj | 112 - .../libpng/projects/owatcom/pngconfig.mak | 160 - .../libpng/projects/owatcom/pngstest.tgt | 219 - .../libpng/projects/owatcom/pngtest.tgt | 179 - .../libpng/projects/owatcom/pngvalid.tgt | 210 - .../libpng/projects/visualc71/PRJ0041.mak | 21 - .../libpng/projects/visualc71/README.txt | 58 - .../libpng/projects/visualc71/README_zlib.txt | 44 - .../libpng/projects/visualc71/libpng.sln | 60 - .../libpng/projects/visualc71/libpng.vcproj | 419 - .../libpng/projects/visualc71/pngtest.vcproj | 267 - .../libpng/projects/visualc71/zlib.vcproj | 391 - .../3rd-party/libpng/projects/vstudio/WARNING | 27 - .../projects/vstudio/libpng/libpng.vcxproj | 234 - .../vstudio/pnglibconf/pnglibconf.vcxproj | 61 - .../vstudio/pngstest/pngstest.vcxproj | 219 - .../projects/vstudio/pngtest/pngtest.vcxproj | 220 - .../vstudio/pngunknown/pngunknown.vcxproj | 219 - .../vstudio/pngvalid/pngvalid.vcxproj | 219 - .../libpng/projects/vstudio/readme.txt | 65 - .../libpng/projects/vstudio/vstudio.sln | 109 - .../libpng/projects/vstudio/zlib.props | 45 - .../libpng/projects/vstudio/zlib/zlib.vcxproj | 169 - io2d/src/3rd-party/libpng/scripts/README.txt | 86 - .../3rd-party/libpng/scripts/SCOPTIONS.ppc | 7 - .../src/3rd-party/libpng/scripts/checksym.awk | 173 - io2d/src/3rd-party/libpng/scripts/def.dfn | 29 - io2d/src/3rd-party/libpng/scripts/descrip.mms | 52 - io2d/src/3rd-party/libpng/scripts/dfn.awk | 203 - .../3rd-party/libpng/scripts/intprefix.dfn | 19 - .../libpng/scripts/libpng-config-body.in | 96 - .../libpng/scripts/libpng-config-head.in | 24 - .../src/3rd-party/libpng/scripts/libpng.pc.in | 10 - io2d/src/3rd-party/libpng/scripts/macro.lst | 3 - .../3rd-party/libpng/scripts/makefile.32sunu | 241 - .../3rd-party/libpng/scripts/makefile.64sunu | 241 - .../3rd-party/libpng/scripts/makefile.acorn | 57 - .../src/3rd-party/libpng/scripts/makefile.aix | 121 - .../3rd-party/libpng/scripts/makefile.amiga | 56 - .../3rd-party/libpng/scripts/makefile.atari | 63 - .../3rd-party/libpng/scripts/makefile.bc32 | 151 - .../3rd-party/libpng/scripts/makefile.beos | 215 - .../src/3rd-party/libpng/scripts/makefile.bor | 161 - .../3rd-party/libpng/scripts/makefile.cegcc | 116 - .../3rd-party/libpng/scripts/makefile.darwin | 218 - .../src/3rd-party/libpng/scripts/makefile.dec | 202 - .../src/3rd-party/libpng/scripts/makefile.dj2 | 62 - .../src/3rd-party/libpng/scripts/makefile.elf | 263 - .../3rd-party/libpng/scripts/makefile.freebsd | 61 - .../src/3rd-party/libpng/scripts/makefile.gcc | 87 - .../3rd-party/libpng/scripts/makefile.hp64 | 224 - .../3rd-party/libpng/scripts/makefile.hpgcc | 230 - .../3rd-party/libpng/scripts/makefile.hpux | 221 - .../3rd-party/libpng/scripts/makefile.ibmc | 82 - .../3rd-party/libpng/scripts/makefile.intel | 110 - .../src/3rd-party/libpng/scripts/makefile.knr | 109 - .../3rd-party/libpng/scripts/makefile.linux | 239 - .../3rd-party/libpng/scripts/makefile.mips | 94 - .../src/3rd-party/libpng/scripts/makefile.msc | 95 - .../3rd-party/libpng/scripts/makefile.msys | 204 - .../3rd-party/libpng/scripts/makefile.ne12bsd | 50 - .../3rd-party/libpng/scripts/makefile.netbsd | 50 - .../3rd-party/libpng/scripts/makefile.openbsd | 82 - .../src/3rd-party/libpng/scripts/makefile.sco | 218 - .../3rd-party/libpng/scripts/makefile.sggcc | 228 - .../src/3rd-party/libpng/scripts/makefile.sgi | 229 - .../src/3rd-party/libpng/scripts/makefile.so9 | 239 - .../3rd-party/libpng/scripts/makefile.solaris | 236 - .../libpng/scripts/makefile.solaris-x86 | 236 - .../src/3rd-party/libpng/scripts/makefile.std | 124 - .../3rd-party/libpng/scripts/makefile.sunos | 107 - .../src/3rd-party/libpng/scripts/makefile.tc3 | 93 - .../3rd-party/libpng/scripts/makefile.vcwin32 | 108 - io2d/src/3rd-party/libpng/scripts/makevms.com | 142 - io2d/src/3rd-party/libpng/scripts/options.awk | 898 -- .../3rd-party/libpng/scripts/pnglibconf.dfa | 886 -- .../libpng/scripts/pnglibconf.h.prebuilt | 211 - .../3rd-party/libpng/scripts/pnglibconf.mak | 54 - io2d/src/3rd-party/libpng/scripts/pngwin.rc | 112 - io2d/src/3rd-party/libpng/scripts/prefix.dfn | 24 - .../3rd-party/libpng/scripts/smakefile.ppc | 34 - io2d/src/3rd-party/libpng/scripts/sym.dfn | 15 - io2d/src/3rd-party/libpng/scripts/symbols.def | 251 - io2d/src/3rd-party/libpng/scripts/symbols.dfn | 58 - io2d/src/3rd-party/libpng/scripts/vers.dfn | 19 - io2d/src/3rd-party/libpng/tests/pngstest | 13 - io2d/src/3rd-party/libpng/tests/pngstest-0g01 | 2 - io2d/src/3rd-party/libpng/tests/pngstest-0g02 | 2 - io2d/src/3rd-party/libpng/tests/pngstest-0g04 | 2 - io2d/src/3rd-party/libpng/tests/pngstest-0g08 | 2 - io2d/src/3rd-party/libpng/tests/pngstest-0g16 | 2 - io2d/src/3rd-party/libpng/tests/pngstest-2c08 | 2 - io2d/src/3rd-party/libpng/tests/pngstest-2c16 | 2 - io2d/src/3rd-party/libpng/tests/pngstest-3p01 | 2 - io2d/src/3rd-party/libpng/tests/pngstest-3p02 | 2 - io2d/src/3rd-party/libpng/tests/pngstest-3p04 | 2 - io2d/src/3rd-party/libpng/tests/pngstest-3p08 | 2 - io2d/src/3rd-party/libpng/tests/pngstest-4a08 | 2 - io2d/src/3rd-party/libpng/tests/pngstest-4a16 | 2 - io2d/src/3rd-party/libpng/tests/pngstest-6a08 | 2 - io2d/src/3rd-party/libpng/tests/pngstest-6a16 | 2 - .../src/3rd-party/libpng/tests/pngstest-error | 14 - io2d/src/3rd-party/libpng/tests/pngtest | 2 - .../3rd-party/libpng/tests/pngunknown-IDAT | 2 - .../3rd-party/libpng/tests/pngunknown-discard | 2 - .../3rd-party/libpng/tests/pngunknown-if-safe | 2 - .../3rd-party/libpng/tests/pngunknown-sAPI | 2 - .../3rd-party/libpng/tests/pngunknown-sTER | 2 - .../3rd-party/libpng/tests/pngunknown-save | 2 - .../3rd-party/libpng/tests/pngunknown-vpAg | 2 - .../libpng/tests/pngvalid-gamma-16-to-8 | 2 - .../libpng/tests/pngvalid-gamma-alpha-mode | 2 - .../libpng/tests/pngvalid-gamma-background | 2 - .../tests/pngvalid-gamma-expand16-alpha-mode | 2 - .../tests/pngvalid-gamma-expand16-background | 2 - .../tests/pngvalid-gamma-expand16-transform | 2 - .../libpng/tests/pngvalid-gamma-sbit | 2 - .../libpng/tests/pngvalid-gamma-threshold | 2 - .../libpng/tests/pngvalid-gamma-transform | 2 - .../tests/pngvalid-progressive-interlace-size | 2 - .../pngvalid-progressive-interlace-standard | 2 - .../pngvalid-progressive-interlace-transform | 2 - .../tests/pngvalid-progressive-standard | 2 - .../3rd-party/libpng/tests/pngvalid-standard | 2 - io2d/src/3rd-party/zlib/CMakeLists.txt | 249 - io2d/src/3rd-party/zlib/ChangeLog | 1472 --- io2d/src/3rd-party/zlib/FAQ | 368 - io2d/src/3rd-party/zlib/INDEX | 68 - io2d/src/3rd-party/zlib/Makefile | 5 - io2d/src/3rd-party/zlib/Makefile.in | 288 - io2d/src/3rd-party/zlib/README | 115 - io2d/src/3rd-party/zlib/adler32.c | 179 - io2d/src/3rd-party/zlib/amiga/Makefile.pup | 69 - io2d/src/3rd-party/zlib/amiga/Makefile.sas | 68 - io2d/src/3rd-party/zlib/as400/bndsrc | 215 - io2d/src/3rd-party/zlib/as400/compile.clp | 110 - io2d/src/3rd-party/zlib/as400/readme.txt | 115 - io2d/src/3rd-party/zlib/as400/zlib.inc | 451 - io2d/src/3rd-party/zlib/compress.c | 80 - io2d/src/3rd-party/zlib/configure | 831 -- .../src/3rd-party/zlib/contrib/README.contrib | 78 - .../zlib/contrib/ada/buffer_demo.adb | 106 - io2d/src/3rd-party/zlib/contrib/ada/mtest.adb | 156 - io2d/src/3rd-party/zlib/contrib/ada/read.adb | 156 - .../src/3rd-party/zlib/contrib/ada/readme.txt | 65 - io2d/src/3rd-party/zlib/contrib/ada/test.adb | 463 - .../zlib/contrib/ada/zlib-streams.adb | 225 - .../zlib/contrib/ada/zlib-streams.ads | 114 - .../3rd-party/zlib/contrib/ada/zlib-thin.adb | 141 - .../3rd-party/zlib/contrib/ada/zlib-thin.ads | 450 - io2d/src/3rd-party/zlib/contrib/ada/zlib.adb | 701 -- io2d/src/3rd-party/zlib/contrib/ada/zlib.ads | 328 - io2d/src/3rd-party/zlib/contrib/ada/zlib.gpr | 20 - .../zlib/contrib/amd64/amd64-match.S | 452 - .../3rd-party/zlib/contrib/asm686/README.686 | 51 - .../src/3rd-party/zlib/contrib/asm686/match.S | 357 - .../src/3rd-party/zlib/contrib/blast/Makefile | 8 - io2d/src/3rd-party/zlib/contrib/blast/README | 4 - io2d/src/3rd-party/zlib/contrib/blast/blast.c | 446 - io2d/src/3rd-party/zlib/contrib/blast/blast.h | 75 - io2d/src/3rd-party/zlib/contrib/blast/test.pk | Bin 8 -> 0 bytes .../src/3rd-party/zlib/contrib/blast/test.txt | 1 - .../3rd-party/zlib/contrib/delphi/ZLib.pas | 557 - .../zlib/contrib/delphi/ZLibConst.pas | 11 - .../3rd-party/zlib/contrib/delphi/readme.txt | 76 - .../3rd-party/zlib/contrib/delphi/zlibd32.mak | 99 - .../zlib/contrib/dotzlib/DotZLib.build | 33 - .../zlib/contrib/dotzlib/DotZLib.chm | Bin 72726 -> 0 bytes .../zlib/contrib/dotzlib/DotZLib.sln | 21 - .../contrib/dotzlib/DotZLib/AssemblyInfo.cs | 58 - .../contrib/dotzlib/DotZLib/ChecksumImpl.cs | 202 - .../contrib/dotzlib/DotZLib/CircularBuffer.cs | 83 - .../zlib/contrib/dotzlib/DotZLib/CodecBase.cs | 198 - .../zlib/contrib/dotzlib/DotZLib/Deflater.cs | 106 - .../zlib/contrib/dotzlib/DotZLib/DotZLib.cs | 288 - .../contrib/dotzlib/DotZLib/DotZLib.csproj | 141 - .../contrib/dotzlib/DotZLib/GZipStream.cs | 301 - .../zlib/contrib/dotzlib/DotZLib/Inflater.cs | 105 - .../zlib/contrib/dotzlib/DotZLib/UnitTests.cs | 274 - .../zlib/contrib/dotzlib/LICENSE_1_0.txt | 23 - .../3rd-party/zlib/contrib/dotzlib/readme.txt | 58 - .../zlib/contrib/gcc_gvmat64/gvmat64.S | 574 - .../3rd-party/zlib/contrib/infback9/README | 1 - .../zlib/contrib/infback9/infback9.c | 615 - .../zlib/contrib/infback9/infback9.h | 37 - .../3rd-party/zlib/contrib/infback9/inffix9.h | 107 - .../zlib/contrib/infback9/inflate9.h | 47 - .../zlib/contrib/infback9/inftree9.c | 324 - .../zlib/contrib/infback9/inftree9.h | 61 - .../zlib/contrib/inflate86/inffas86.c | 1157 -- .../zlib/contrib/inflate86/inffast.S | 1368 -- .../3rd-party/zlib/contrib/iostream/test.cpp | 24 - .../zlib/contrib/iostream/zfstream.cpp | 329 - .../zlib/contrib/iostream/zfstream.h | 128 - .../zlib/contrib/iostream2/zstream.h | 307 - .../zlib/contrib/iostream2/zstream_test.cpp | 25 - .../3rd-party/zlib/contrib/iostream3/README | 35 - .../src/3rd-party/zlib/contrib/iostream3/TODO | 17 - .../3rd-party/zlib/contrib/iostream3/test.cc | 50 - .../zlib/contrib/iostream3/zfstream.cc | 479 - .../zlib/contrib/iostream3/zfstream.h | 466 - .../zlib/contrib/masmx64/bld_ml64.bat | 2 - .../zlib/contrib/masmx64/gvmat64.asm | 553 - .../zlib/contrib/masmx64/inffas8664.c | 186 - .../zlib/contrib/masmx64/inffasx64.asm | 396 - .../3rd-party/zlib/contrib/masmx64/readme.txt | 31 - .../zlib/contrib/masmx86/bld_ml32.bat | 2 - .../zlib/contrib/masmx86/inffas32.asm | 1080 -- .../zlib/contrib/masmx86/match686.asm | 479 - .../3rd-party/zlib/contrib/masmx86/readme.txt | 27 - .../3rd-party/zlib/contrib/minizip/Makefile | 25 - .../zlib/contrib/minizip/Makefile.am | 45 - .../contrib/minizip/MiniZip64_Changes.txt | 6 - .../zlib/contrib/minizip/MiniZip64_info.txt | 74 - .../zlib/contrib/minizip/configure.ac | 32 - .../3rd-party/zlib/contrib/minizip/crypt.h | 131 - .../3rd-party/zlib/contrib/minizip/ioapi.c | 247 - .../3rd-party/zlib/contrib/minizip/ioapi.h | 208 - .../3rd-party/zlib/contrib/minizip/iowin32.c | 461 - .../3rd-party/zlib/contrib/minizip/iowin32.h | 28 - .../zlib/contrib/minizip/make_vms.com | 25 - .../3rd-party/zlib/contrib/minizip/miniunz.c | 660 - .../zlib/contrib/minizip/miniunzip.1 | 63 - .../3rd-party/zlib/contrib/minizip/minizip.1 | 46 - .../3rd-party/zlib/contrib/minizip/minizip.c | 520 - .../zlib/contrib/minizip/minizip.pc.in | 12 - .../3rd-party/zlib/contrib/minizip/mztools.c | 291 - .../3rd-party/zlib/contrib/minizip/mztools.h | 37 - .../3rd-party/zlib/contrib/minizip/unzip.c | 2125 ---- .../3rd-party/zlib/contrib/minizip/unzip.h | 437 - io2d/src/3rd-party/zlib/contrib/minizip/zip.c | 2007 --- io2d/src/3rd-party/zlib/contrib/minizip/zip.h | 362 - .../3rd-party/zlib/contrib/pascal/example.pas | 599 - .../3rd-party/zlib/contrib/pascal/readme.txt | 76 - .../3rd-party/zlib/contrib/pascal/zlibd32.mak | 99 - .../3rd-party/zlib/contrib/pascal/zlibpas.pas | 276 - io2d/src/3rd-party/zlib/contrib/puff/Makefile | 42 - io2d/src/3rd-party/zlib/contrib/puff/README | 63 - io2d/src/3rd-party/zlib/contrib/puff/puff.c | 840 -- io2d/src/3rd-party/zlib/contrib/puff/puff.h | 35 - .../3rd-party/zlib/contrib/puff/pufftest.c | 165 - .../src/3rd-party/zlib/contrib/puff/zeros.raw | Bin 2517 -> 0 bytes .../zlib/contrib/testzlib/testzlib.c | 275 - .../zlib/contrib/testzlib/testzlib.txt | 10 - .../src/3rd-party/zlib/contrib/untgz/Makefile | 14 - .../3rd-party/zlib/contrib/untgz/Makefile.msc | 17 - io2d/src/3rd-party/zlib/contrib/untgz/untgz.c | 674 - .../3rd-party/zlib/contrib/vstudio/readme.txt | 65 - .../zlib/contrib/vstudio/vc10/miniunz.vcxproj | 310 - .../vstudio/vc10/miniunz.vcxproj.filters | 22 - .../zlib/contrib/vstudio/vc10/minizip.vcxproj | 307 - .../vstudio/vc10/minizip.vcxproj.filters | 22 - .../contrib/vstudio/vc10/testzlib.vcxproj | 420 - .../vstudio/vc10/testzlib.vcxproj.filters | 58 - .../contrib/vstudio/vc10/testzlibdll.vcxproj | 310 - .../vstudio/vc10/testzlibdll.vcxproj.filters | 22 - .../zlib/contrib/vstudio/vc10/zlib.rc | 32 - .../contrib/vstudio/vc10/zlibstat.vcxproj | 473 - .../vstudio/vc10/zlibstat.vcxproj.filters | 77 - .../zlib/contrib/vstudio/vc10/zlibvc.def | 143 - .../zlib/contrib/vstudio/vc10/zlibvc.sln | 135 - .../zlib/contrib/vstudio/vc10/zlibvc.vcxproj | 657 - .../vstudio/vc10/zlibvc.vcxproj.filters | 118 - .../zlib/contrib/vstudio/vc11/miniunz.vcxproj | 314 - .../zlib/contrib/vstudio/vc11/minizip.vcxproj | 311 - .../contrib/vstudio/vc11/testzlib.vcxproj | 426 - .../contrib/vstudio/vc11/testzlibdll.vcxproj | 314 - .../zlib/contrib/vstudio/vc11/zlib.rc | 32 - .../contrib/vstudio/vc11/zlibstat.vcxproj | 464 - .../zlib/contrib/vstudio/vc11/zlibvc.def | 143 - .../zlib/contrib/vstudio/vc11/zlibvc.sln | 117 - .../zlib/contrib/vstudio/vc11/zlibvc.vcxproj | 688 -- .../zlib/contrib/vstudio/vc9/miniunz.vcproj | 565 - .../zlib/contrib/vstudio/vc9/minizip.vcproj | 562 - .../zlib/contrib/vstudio/vc9/testzlib.vcproj | 852 -- .../contrib/vstudio/vc9/testzlibdll.vcproj | 565 - .../zlib/contrib/vstudio/vc9/zlib.rc | 32 - .../zlib/contrib/vstudio/vc9/zlibstat.vcproj | 835 -- .../zlib/contrib/vstudio/vc9/zlibvc.def | 143 - .../zlib/contrib/vstudio/vc9/zlibvc.sln | 144 - .../zlib/contrib/vstudio/vc9/zlibvc.vcproj | 1156 -- io2d/src/3rd-party/zlib/crc32.c | 425 - io2d/src/3rd-party/zlib/crc32.h | 441 - io2d/src/3rd-party/zlib/deflate.c | 1967 --- io2d/src/3rd-party/zlib/deflate.h | 346 - io2d/src/3rd-party/zlib/doc/algorithm.txt | 209 - io2d/src/3rd-party/zlib/doc/rfc1950.txt | 619 - io2d/src/3rd-party/zlib/doc/rfc1951.txt | 955 -- io2d/src/3rd-party/zlib/doc/rfc1952.txt | 675 - io2d/src/3rd-party/zlib/doc/txtvsbin.txt | 107 - .../3rd-party/zlib/examples/README.examples | 49 - io2d/src/3rd-party/zlib/examples/enough.c | 572 - io2d/src/3rd-party/zlib/examples/fitblk.c | 233 - io2d/src/3rd-party/zlib/examples/gun.c | 702 -- io2d/src/3rd-party/zlib/examples/gzappend.c | 504 - io2d/src/3rd-party/zlib/examples/gzjoin.c | 449 - io2d/src/3rd-party/zlib/examples/gzlog.c | 1059 -- io2d/src/3rd-party/zlib/examples/gzlog.h | 91 - .../src/3rd-party/zlib/examples/zlib_how.html | 545 - io2d/src/3rd-party/zlib/examples/zpipe.c | 205 - io2d/src/3rd-party/zlib/examples/zran.c | 409 - io2d/src/3rd-party/zlib/gzclose.c | 25 - io2d/src/3rd-party/zlib/gzguts.h | 209 - io2d/src/3rd-party/zlib/gzlib.c | 634 - io2d/src/3rd-party/zlib/gzread.c | 594 - io2d/src/3rd-party/zlib/gzwrite.c | 577 - io2d/src/3rd-party/zlib/infback.c | 640 - io2d/src/3rd-party/zlib/inffast.c | 340 - io2d/src/3rd-party/zlib/inffast.h | 11 - io2d/src/3rd-party/zlib/inffixed.h | 94 - io2d/src/3rd-party/zlib/inflate.c | 1512 --- io2d/src/3rd-party/zlib/inflate.h | 122 - io2d/src/3rd-party/zlib/inftrees.c | 306 - io2d/src/3rd-party/zlib/inftrees.h | 62 - io2d/src/3rd-party/zlib/make_vms.com | 867 -- io2d/src/3rd-party/zlib/msdos/Makefile.bor | 115 - io2d/src/3rd-party/zlib/msdos/Makefile.dj2 | 104 - io2d/src/3rd-party/zlib/msdos/Makefile.emx | 69 - io2d/src/3rd-party/zlib/msdos/Makefile.msc | 112 - io2d/src/3rd-party/zlib/msdos/Makefile.tc | 100 - io2d/src/3rd-party/zlib/nintendods/Makefile | 126 - io2d/src/3rd-party/zlib/nintendods/README | 5 - io2d/src/3rd-party/zlib/old/Makefile.emx | 69 - io2d/src/3rd-party/zlib/old/Makefile.riscos | 151 - io2d/src/3rd-party/zlib/old/README | 3 - io2d/src/3rd-party/zlib/old/descrip.mms | 48 - io2d/src/3rd-party/zlib/old/os2/Makefile.os2 | 136 - io2d/src/3rd-party/zlib/old/os2/zlib.def | 51 - io2d/src/3rd-party/zlib/old/visual-basic.txt | 160 - io2d/src/3rd-party/zlib/qnx/package.qpg | 141 - io2d/src/3rd-party/zlib/test/example.c | 601 - io2d/src/3rd-party/zlib/test/infcover.c | 671 - io2d/src/3rd-party/zlib/test/minigzip.c | 651 - io2d/src/3rd-party/zlib/treebuild.xml | 116 - io2d/src/3rd-party/zlib/trees.c | 1226 -- io2d/src/3rd-party/zlib/trees.h | 128 - io2d/src/3rd-party/zlib/uncompr.c | 59 - io2d/src/3rd-party/zlib/watcom/watcom_f.mak | 43 - io2d/src/3rd-party/zlib/watcom/watcom_l.mak | 43 - io2d/src/3rd-party/zlib/win32/DLL_FAQ.txt | 397 - io2d/src/3rd-party/zlib/win32/Makefile.bor | 110 - io2d/src/3rd-party/zlib/win32/Makefile.gcc | 182 - io2d/src/3rd-party/zlib/win32/Makefile.msc | 163 - .../src/3rd-party/zlib/win32/README-WIN32.txt | 103 - io2d/src/3rd-party/zlib/win32/VisualC.txt | 3 - io2d/src/3rd-party/zlib/win32/zlib.def | 86 - io2d/src/3rd-party/zlib/win32/zlib1.rc | 40 - io2d/src/3rd-party/zlib/zconf.h | 511 - io2d/src/3rd-party/zlib/zconf.h.cmakein | 513 - io2d/src/3rd-party/zlib/zconf.h.in | 511 - io2d/src/3rd-party/zlib/zlib.3 | 151 - io2d/src/3rd-party/zlib/zlib.3.pdf | Bin 8734 -> 0 bytes io2d/src/3rd-party/zlib/zlib.h | 1768 --- io2d/src/3rd-party/zlib/zlib.map | 83 - io2d/src/3rd-party/zlib/zlib.pc.cmakein | 13 - io2d/src/3rd-party/zlib/zlib.pc.in | 13 - io2d/src/3rd-party/zlib/zlib2ansi | 152 - io2d/src/3rd-party/zlib/zutil.c | 324 - io2d/src/3rd-party/zlib/zutil.h | 253 - 525 files changed, 180198 deletions(-) delete mode 100644 io2d/src/3rd-party/libpng/ANNOUNCE delete mode 100644 io2d/src/3rd-party/libpng/CHANGES delete mode 100644 io2d/src/3rd-party/libpng/CMakeLists.txt delete mode 100644 io2d/src/3rd-party/libpng/INSTALL delete mode 100644 io2d/src/3rd-party/libpng/LICENSE delete mode 100644 io2d/src/3rd-party/libpng/Makefile.am delete mode 100644 io2d/src/3rd-party/libpng/README delete mode 100644 io2d/src/3rd-party/libpng/TODO delete mode 100644 io2d/src/3rd-party/libpng/arm/arm_init.c delete mode 100644 io2d/src/3rd-party/libpng/arm/filter_neon.S delete mode 100644 io2d/src/3rd-party/libpng/arm/filter_neon_intrinsics.c delete mode 100644 io2d/src/3rd-party/libpng/autogen.sh delete mode 100644 io2d/src/3rd-party/libpng/configure.ac delete mode 100644 io2d/src/3rd-party/libpng/contrib/README.txt delete mode 100644 io2d/src/3rd-party/libpng/contrib/conftest/README delete mode 100644 io2d/src/3rd-party/libpng/contrib/conftest/read.dfa delete mode 100644 io2d/src/3rd-party/libpng/contrib/conftest/s_read.dfa delete mode 100644 io2d/src/3rd-party/libpng/contrib/conftest/s_write.dfa delete mode 100644 io2d/src/3rd-party/libpng/contrib/conftest/simple.dfa delete mode 100644 io2d/src/3rd-party/libpng/contrib/conftest/write.dfa delete mode 100644 io2d/src/3rd-party/libpng/contrib/examples/README.txt delete mode 100644 io2d/src/3rd-party/libpng/contrib/examples/iccfrompng.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/examples/pngpixel.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/examples/pngtopng.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/COPYING delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/LICENSE delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.mingw32 delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.sgi delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.unx delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.w32 delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/README delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/makevms.com delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/readpng.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/readpng.h delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/readpng2.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/readpng2.h delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/readppm.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/rpng-win.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/rpng-x.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/rpng2-win.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/rpng2-x.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/toucan.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/wpng.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/writepng.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/gregbook/writepng.h delete mode 100644 io2d/src/3rd-party/libpng/contrib/libtests/fakepng.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/libtests/gentests.sh delete mode 100644 io2d/src/3rd-party/libpng/contrib/libtests/makepng.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/libtests/pngstest.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/libtests/pngunknown.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/libtests/pngvalid.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/libtests/readpng.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/libtests/tarith.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/libtests/timepng.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminim/README delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminim/decoder/README delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminim/decoder/makefile delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminim/decoder/pngusr.dfa delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminim/decoder/pngusr.h delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminim/encoder/README delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminim/encoder/makefile delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminim/encoder/pngusr.dfa delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminim/encoder/pngusr.h delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminim/preader/README delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminim/preader/makefile delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminim/preader/pngusr.dfa delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminim/preader/pngusr.h delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminus/README delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminus/makefile.std delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminus/makefile.tc3 delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminus/makevms.com delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminus/png2pnm.bat delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminus/png2pnm.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminus/png2pnm.sh delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminus/pngminus.bat delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminus/pngminus.sh delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminus/pnm2png.bat delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminus/pnm2png.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngminus/pnm2png.sh delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/README delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/basn0g01.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/basn0g02.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/basn0g04.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/basn0g08.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/basn0g16.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/basn2c08.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/basn2c16.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/basn3p01.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/basn3p02.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/basn3p04.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/basn3p08.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/basn4a08.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/basn4a16.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/basn6a08.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/basn6a16.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/ftbbn0g01.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/ftbbn0g02.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/ftbbn0g04.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/ftbbn2c16.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/ftbbn3p08.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/ftbgn2c16.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/ftbgn3p08.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/ftbrn2c08.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/ftbwn0g16.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/ftbwn3p08.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/ftbyn3p08.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/ftp0n0g08.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/ftp0n2c08.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/ftp0n3p08.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/pngsuite/ftp1n3p08.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/tools/README.txt delete mode 100644 io2d/src/3rd-party/libpng/contrib/tools/checksum-icc.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/tools/chkfmt delete mode 100644 io2d/src/3rd-party/libpng/contrib/tools/cvtcolor.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/tools/intgamma.sh delete mode 100644 io2d/src/3rd-party/libpng/contrib/tools/makesRGB.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/tools/png-fix-itxt.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/tools/pngfix.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/tools/sRGB.h delete mode 100644 io2d/src/3rd-party/libpng/contrib/visupng/PngFile.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/visupng/PngFile.h delete mode 100644 io2d/src/3rd-party/libpng/contrib/visupng/README.txt delete mode 100644 io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.c delete mode 100644 io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.dsp delete mode 100644 io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.dsw delete mode 100644 io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.ico delete mode 100644 io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.png delete mode 100644 io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.rc delete mode 100644 io2d/src/3rd-party/libpng/contrib/visupng/cexcept.h delete mode 100644 io2d/src/3rd-party/libpng/contrib/visupng/resource.h delete mode 100644 io2d/src/3rd-party/libpng/example.c delete mode 100644 io2d/src/3rd-party/libpng/libpng-config.in delete mode 100644 io2d/src/3rd-party/libpng/libpng-manual.txt delete mode 100644 io2d/src/3rd-party/libpng/libpng.3 delete mode 100644 io2d/src/3rd-party/libpng/libpng.pc.in delete mode 100644 io2d/src/3rd-party/libpng/libpngpf.3 delete mode 100644 io2d/src/3rd-party/libpng/png.5 delete mode 100644 io2d/src/3rd-party/libpng/png.c delete mode 100644 io2d/src/3rd-party/libpng/png.h delete mode 100644 io2d/src/3rd-party/libpng/pngbar.jpg delete mode 100644 io2d/src/3rd-party/libpng/pngbar.png delete mode 100644 io2d/src/3rd-party/libpng/pngconf.h delete mode 100644 io2d/src/3rd-party/libpng/pngdebug.h delete mode 100644 io2d/src/3rd-party/libpng/pngerror.c delete mode 100644 io2d/src/3rd-party/libpng/pngget.c delete mode 100644 io2d/src/3rd-party/libpng/pnginfo.h delete mode 100644 io2d/src/3rd-party/libpng/pnglibconf.h delete mode 100644 io2d/src/3rd-party/libpng/pngmem.c delete mode 100644 io2d/src/3rd-party/libpng/pngnow.png delete mode 100644 io2d/src/3rd-party/libpng/pngpread.c delete mode 100644 io2d/src/3rd-party/libpng/pngpriv.h delete mode 100644 io2d/src/3rd-party/libpng/pngread.c delete mode 100644 io2d/src/3rd-party/libpng/pngrio.c delete mode 100644 io2d/src/3rd-party/libpng/pngrtran.c delete mode 100644 io2d/src/3rd-party/libpng/pngrutil.c delete mode 100644 io2d/src/3rd-party/libpng/pngset.c delete mode 100644 io2d/src/3rd-party/libpng/pngstruct.h delete mode 100644 io2d/src/3rd-party/libpng/pngtest.c delete mode 100644 io2d/src/3rd-party/libpng/pngtest.png delete mode 100644 io2d/src/3rd-party/libpng/pngtrans.c delete mode 100644 io2d/src/3rd-party/libpng/pngusr.dfa delete mode 100644 io2d/src/3rd-party/libpng/pngwio.c delete mode 100644 io2d/src/3rd-party/libpng/pngwrite.c delete mode 100644 io2d/src/3rd-party/libpng/pngwtran.c delete mode 100644 io2d/src/3rd-party/libpng/pngwutil.c delete mode 100644 io2d/src/3rd-party/libpng/projects/owatcom/libpng.tgt delete mode 100644 io2d/src/3rd-party/libpng/projects/owatcom/libpng.wpj delete mode 100644 io2d/src/3rd-party/libpng/projects/owatcom/pngconfig.mak delete mode 100644 io2d/src/3rd-party/libpng/projects/owatcom/pngstest.tgt delete mode 100644 io2d/src/3rd-party/libpng/projects/owatcom/pngtest.tgt delete mode 100644 io2d/src/3rd-party/libpng/projects/owatcom/pngvalid.tgt delete mode 100644 io2d/src/3rd-party/libpng/projects/visualc71/PRJ0041.mak delete mode 100644 io2d/src/3rd-party/libpng/projects/visualc71/README.txt delete mode 100644 io2d/src/3rd-party/libpng/projects/visualc71/README_zlib.txt delete mode 100644 io2d/src/3rd-party/libpng/projects/visualc71/libpng.sln delete mode 100644 io2d/src/3rd-party/libpng/projects/visualc71/libpng.vcproj delete mode 100644 io2d/src/3rd-party/libpng/projects/visualc71/pngtest.vcproj delete mode 100644 io2d/src/3rd-party/libpng/projects/visualc71/zlib.vcproj delete mode 100644 io2d/src/3rd-party/libpng/projects/vstudio/WARNING delete mode 100644 io2d/src/3rd-party/libpng/projects/vstudio/libpng/libpng.vcxproj delete mode 100644 io2d/src/3rd-party/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj delete mode 100644 io2d/src/3rd-party/libpng/projects/vstudio/pngstest/pngstest.vcxproj delete mode 100644 io2d/src/3rd-party/libpng/projects/vstudio/pngtest/pngtest.vcxproj delete mode 100644 io2d/src/3rd-party/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj delete mode 100644 io2d/src/3rd-party/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj delete mode 100644 io2d/src/3rd-party/libpng/projects/vstudio/readme.txt delete mode 100644 io2d/src/3rd-party/libpng/projects/vstudio/vstudio.sln delete mode 100644 io2d/src/3rd-party/libpng/projects/vstudio/zlib.props delete mode 100644 io2d/src/3rd-party/libpng/projects/vstudio/zlib/zlib.vcxproj delete mode 100644 io2d/src/3rd-party/libpng/scripts/README.txt delete mode 100644 io2d/src/3rd-party/libpng/scripts/SCOPTIONS.ppc delete mode 100644 io2d/src/3rd-party/libpng/scripts/checksym.awk delete mode 100644 io2d/src/3rd-party/libpng/scripts/def.dfn delete mode 100644 io2d/src/3rd-party/libpng/scripts/descrip.mms delete mode 100644 io2d/src/3rd-party/libpng/scripts/dfn.awk delete mode 100644 io2d/src/3rd-party/libpng/scripts/intprefix.dfn delete mode 100644 io2d/src/3rd-party/libpng/scripts/libpng-config-body.in delete mode 100644 io2d/src/3rd-party/libpng/scripts/libpng-config-head.in delete mode 100644 io2d/src/3rd-party/libpng/scripts/libpng.pc.in delete mode 100644 io2d/src/3rd-party/libpng/scripts/macro.lst delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.32sunu delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.64sunu delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.acorn delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.aix delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.amiga delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.atari delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.bc32 delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.beos delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.bor delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.cegcc delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.darwin delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.dec delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.dj2 delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.elf delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.freebsd delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.gcc delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.hp64 delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.hpgcc delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.hpux delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.ibmc delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.intel delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.knr delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.linux delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.mips delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.msc delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.msys delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.ne12bsd delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.netbsd delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.openbsd delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.sco delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.sggcc delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.sgi delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.so9 delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.solaris delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.solaris-x86 delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.std delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.sunos delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.tc3 delete mode 100644 io2d/src/3rd-party/libpng/scripts/makefile.vcwin32 delete mode 100644 io2d/src/3rd-party/libpng/scripts/makevms.com delete mode 100644 io2d/src/3rd-party/libpng/scripts/options.awk delete mode 100644 io2d/src/3rd-party/libpng/scripts/pnglibconf.dfa delete mode 100644 io2d/src/3rd-party/libpng/scripts/pnglibconf.h.prebuilt delete mode 100644 io2d/src/3rd-party/libpng/scripts/pnglibconf.mak delete mode 100644 io2d/src/3rd-party/libpng/scripts/pngwin.rc delete mode 100644 io2d/src/3rd-party/libpng/scripts/prefix.dfn delete mode 100644 io2d/src/3rd-party/libpng/scripts/smakefile.ppc delete mode 100644 io2d/src/3rd-party/libpng/scripts/sym.dfn delete mode 100644 io2d/src/3rd-party/libpng/scripts/symbols.def delete mode 100644 io2d/src/3rd-party/libpng/scripts/symbols.dfn delete mode 100644 io2d/src/3rd-party/libpng/scripts/vers.dfn delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest-0g01 delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest-0g02 delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest-0g04 delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest-0g08 delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest-0g16 delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest-2c08 delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest-2c16 delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest-3p01 delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest-3p02 delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest-3p04 delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest-3p08 delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest-4a08 delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest-4a16 delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest-6a08 delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest-6a16 delete mode 100644 io2d/src/3rd-party/libpng/tests/pngstest-error delete mode 100644 io2d/src/3rd-party/libpng/tests/pngtest delete mode 100644 io2d/src/3rd-party/libpng/tests/pngunknown-IDAT delete mode 100644 io2d/src/3rd-party/libpng/tests/pngunknown-discard delete mode 100644 io2d/src/3rd-party/libpng/tests/pngunknown-if-safe delete mode 100644 io2d/src/3rd-party/libpng/tests/pngunknown-sAPI delete mode 100644 io2d/src/3rd-party/libpng/tests/pngunknown-sTER delete mode 100644 io2d/src/3rd-party/libpng/tests/pngunknown-save delete mode 100644 io2d/src/3rd-party/libpng/tests/pngunknown-vpAg delete mode 100644 io2d/src/3rd-party/libpng/tests/pngvalid-gamma-16-to-8 delete mode 100644 io2d/src/3rd-party/libpng/tests/pngvalid-gamma-alpha-mode delete mode 100644 io2d/src/3rd-party/libpng/tests/pngvalid-gamma-background delete mode 100644 io2d/src/3rd-party/libpng/tests/pngvalid-gamma-expand16-alpha-mode delete mode 100644 io2d/src/3rd-party/libpng/tests/pngvalid-gamma-expand16-background delete mode 100644 io2d/src/3rd-party/libpng/tests/pngvalid-gamma-expand16-transform delete mode 100644 io2d/src/3rd-party/libpng/tests/pngvalid-gamma-sbit delete mode 100644 io2d/src/3rd-party/libpng/tests/pngvalid-gamma-threshold delete mode 100644 io2d/src/3rd-party/libpng/tests/pngvalid-gamma-transform delete mode 100644 io2d/src/3rd-party/libpng/tests/pngvalid-progressive-interlace-size delete mode 100644 io2d/src/3rd-party/libpng/tests/pngvalid-progressive-interlace-standard delete mode 100644 io2d/src/3rd-party/libpng/tests/pngvalid-progressive-interlace-transform delete mode 100644 io2d/src/3rd-party/libpng/tests/pngvalid-progressive-standard delete mode 100644 io2d/src/3rd-party/libpng/tests/pngvalid-standard delete mode 100644 io2d/src/3rd-party/zlib/CMakeLists.txt delete mode 100644 io2d/src/3rd-party/zlib/ChangeLog delete mode 100644 io2d/src/3rd-party/zlib/FAQ delete mode 100644 io2d/src/3rd-party/zlib/INDEX delete mode 100644 io2d/src/3rd-party/zlib/Makefile delete mode 100644 io2d/src/3rd-party/zlib/Makefile.in delete mode 100644 io2d/src/3rd-party/zlib/README delete mode 100644 io2d/src/3rd-party/zlib/adler32.c delete mode 100644 io2d/src/3rd-party/zlib/amiga/Makefile.pup delete mode 100644 io2d/src/3rd-party/zlib/amiga/Makefile.sas delete mode 100644 io2d/src/3rd-party/zlib/as400/bndsrc delete mode 100644 io2d/src/3rd-party/zlib/as400/compile.clp delete mode 100644 io2d/src/3rd-party/zlib/as400/readme.txt delete mode 100644 io2d/src/3rd-party/zlib/as400/zlib.inc delete mode 100644 io2d/src/3rd-party/zlib/compress.c delete mode 100644 io2d/src/3rd-party/zlib/configure delete mode 100644 io2d/src/3rd-party/zlib/contrib/README.contrib delete mode 100644 io2d/src/3rd-party/zlib/contrib/ada/buffer_demo.adb delete mode 100644 io2d/src/3rd-party/zlib/contrib/ada/mtest.adb delete mode 100644 io2d/src/3rd-party/zlib/contrib/ada/read.adb delete mode 100644 io2d/src/3rd-party/zlib/contrib/ada/readme.txt delete mode 100644 io2d/src/3rd-party/zlib/contrib/ada/test.adb delete mode 100644 io2d/src/3rd-party/zlib/contrib/ada/zlib-streams.adb delete mode 100644 io2d/src/3rd-party/zlib/contrib/ada/zlib-streams.ads delete mode 100644 io2d/src/3rd-party/zlib/contrib/ada/zlib-thin.adb delete mode 100644 io2d/src/3rd-party/zlib/contrib/ada/zlib-thin.ads delete mode 100644 io2d/src/3rd-party/zlib/contrib/ada/zlib.adb delete mode 100644 io2d/src/3rd-party/zlib/contrib/ada/zlib.ads delete mode 100644 io2d/src/3rd-party/zlib/contrib/ada/zlib.gpr delete mode 100644 io2d/src/3rd-party/zlib/contrib/amd64/amd64-match.S delete mode 100644 io2d/src/3rd-party/zlib/contrib/asm686/README.686 delete mode 100644 io2d/src/3rd-party/zlib/contrib/asm686/match.S delete mode 100644 io2d/src/3rd-party/zlib/contrib/blast/Makefile delete mode 100644 io2d/src/3rd-party/zlib/contrib/blast/README delete mode 100644 io2d/src/3rd-party/zlib/contrib/blast/blast.c delete mode 100644 io2d/src/3rd-party/zlib/contrib/blast/blast.h delete mode 100644 io2d/src/3rd-party/zlib/contrib/blast/test.pk delete mode 100644 io2d/src/3rd-party/zlib/contrib/blast/test.txt delete mode 100644 io2d/src/3rd-party/zlib/contrib/delphi/ZLib.pas delete mode 100644 io2d/src/3rd-party/zlib/contrib/delphi/ZLibConst.pas delete mode 100644 io2d/src/3rd-party/zlib/contrib/delphi/readme.txt delete mode 100644 io2d/src/3rd-party/zlib/contrib/delphi/zlibd32.mak delete mode 100644 io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib.build delete mode 100644 io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib.chm delete mode 100644 io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib.sln delete mode 100644 io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs delete mode 100644 io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs delete mode 100644 io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs delete mode 100644 io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/CodecBase.cs delete mode 100644 io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/Deflater.cs delete mode 100644 io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.cs delete mode 100644 io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/GZipStream.cs delete mode 100644 io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/Inflater.cs delete mode 100644 io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/UnitTests.cs delete mode 100644 io2d/src/3rd-party/zlib/contrib/dotzlib/LICENSE_1_0.txt delete mode 100644 io2d/src/3rd-party/zlib/contrib/dotzlib/readme.txt delete mode 100644 io2d/src/3rd-party/zlib/contrib/gcc_gvmat64/gvmat64.S delete mode 100644 io2d/src/3rd-party/zlib/contrib/infback9/README delete mode 100644 io2d/src/3rd-party/zlib/contrib/infback9/infback9.c delete mode 100644 io2d/src/3rd-party/zlib/contrib/infback9/infback9.h delete mode 100644 io2d/src/3rd-party/zlib/contrib/infback9/inffix9.h delete mode 100644 io2d/src/3rd-party/zlib/contrib/infback9/inflate9.h delete mode 100644 io2d/src/3rd-party/zlib/contrib/infback9/inftree9.c delete mode 100644 io2d/src/3rd-party/zlib/contrib/infback9/inftree9.h delete mode 100644 io2d/src/3rd-party/zlib/contrib/inflate86/inffas86.c delete mode 100644 io2d/src/3rd-party/zlib/contrib/inflate86/inffast.S delete mode 100644 io2d/src/3rd-party/zlib/contrib/iostream/test.cpp delete mode 100644 io2d/src/3rd-party/zlib/contrib/iostream/zfstream.cpp delete mode 100644 io2d/src/3rd-party/zlib/contrib/iostream/zfstream.h delete mode 100644 io2d/src/3rd-party/zlib/contrib/iostream2/zstream.h delete mode 100644 io2d/src/3rd-party/zlib/contrib/iostream2/zstream_test.cpp delete mode 100644 io2d/src/3rd-party/zlib/contrib/iostream3/README delete mode 100644 io2d/src/3rd-party/zlib/contrib/iostream3/TODO delete mode 100644 io2d/src/3rd-party/zlib/contrib/iostream3/test.cc delete mode 100644 io2d/src/3rd-party/zlib/contrib/iostream3/zfstream.cc delete mode 100644 io2d/src/3rd-party/zlib/contrib/iostream3/zfstream.h delete mode 100644 io2d/src/3rd-party/zlib/contrib/masmx64/bld_ml64.bat delete mode 100644 io2d/src/3rd-party/zlib/contrib/masmx64/gvmat64.asm delete mode 100644 io2d/src/3rd-party/zlib/contrib/masmx64/inffas8664.c delete mode 100644 io2d/src/3rd-party/zlib/contrib/masmx64/inffasx64.asm delete mode 100644 io2d/src/3rd-party/zlib/contrib/masmx64/readme.txt delete mode 100644 io2d/src/3rd-party/zlib/contrib/masmx86/bld_ml32.bat delete mode 100644 io2d/src/3rd-party/zlib/contrib/masmx86/inffas32.asm delete mode 100644 io2d/src/3rd-party/zlib/contrib/masmx86/match686.asm delete mode 100644 io2d/src/3rd-party/zlib/contrib/masmx86/readme.txt delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/Makefile delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/Makefile.am delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/MiniZip64_Changes.txt delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/MiniZip64_info.txt delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/configure.ac delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/crypt.h delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/ioapi.c delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/ioapi.h delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/iowin32.c delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/iowin32.h delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/make_vms.com delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/miniunz.c delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/miniunzip.1 delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/minizip.1 delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/minizip.c delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/minizip.pc.in delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/mztools.c delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/mztools.h delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/unzip.c delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/unzip.h delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/zip.c delete mode 100644 io2d/src/3rd-party/zlib/contrib/minizip/zip.h delete mode 100644 io2d/src/3rd-party/zlib/contrib/pascal/example.pas delete mode 100644 io2d/src/3rd-party/zlib/contrib/pascal/readme.txt delete mode 100644 io2d/src/3rd-party/zlib/contrib/pascal/zlibd32.mak delete mode 100644 io2d/src/3rd-party/zlib/contrib/pascal/zlibpas.pas delete mode 100644 io2d/src/3rd-party/zlib/contrib/puff/Makefile delete mode 100644 io2d/src/3rd-party/zlib/contrib/puff/README delete mode 100644 io2d/src/3rd-party/zlib/contrib/puff/puff.c delete mode 100644 io2d/src/3rd-party/zlib/contrib/puff/puff.h delete mode 100644 io2d/src/3rd-party/zlib/contrib/puff/pufftest.c delete mode 100644 io2d/src/3rd-party/zlib/contrib/puff/zeros.raw delete mode 100644 io2d/src/3rd-party/zlib/contrib/testzlib/testzlib.c delete mode 100644 io2d/src/3rd-party/zlib/contrib/testzlib/testzlib.txt delete mode 100644 io2d/src/3rd-party/zlib/contrib/untgz/Makefile delete mode 100644 io2d/src/3rd-party/zlib/contrib/untgz/Makefile.msc delete mode 100644 io2d/src/3rd-party/zlib/contrib/untgz/untgz.c delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/readme.txt delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlib.rc delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.def delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.sln delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc11/miniunz.vcxproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc11/minizip.vcxproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc11/testzlib.vcxproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlib.rc delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibstat.vcxproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.def delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.sln delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.vcxproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc9/miniunz.vcproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc9/minizip.vcproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc9/testzlib.vcproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc9/testzlibdll.vcproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlib.rc delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibstat.vcproj delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.def delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.sln delete mode 100644 io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.vcproj delete mode 100644 io2d/src/3rd-party/zlib/crc32.c delete mode 100644 io2d/src/3rd-party/zlib/crc32.h delete mode 100644 io2d/src/3rd-party/zlib/deflate.c delete mode 100644 io2d/src/3rd-party/zlib/deflate.h delete mode 100644 io2d/src/3rd-party/zlib/doc/algorithm.txt delete mode 100644 io2d/src/3rd-party/zlib/doc/rfc1950.txt delete mode 100644 io2d/src/3rd-party/zlib/doc/rfc1951.txt delete mode 100644 io2d/src/3rd-party/zlib/doc/rfc1952.txt delete mode 100644 io2d/src/3rd-party/zlib/doc/txtvsbin.txt delete mode 100644 io2d/src/3rd-party/zlib/examples/README.examples delete mode 100644 io2d/src/3rd-party/zlib/examples/enough.c delete mode 100644 io2d/src/3rd-party/zlib/examples/fitblk.c delete mode 100644 io2d/src/3rd-party/zlib/examples/gun.c delete mode 100644 io2d/src/3rd-party/zlib/examples/gzappend.c delete mode 100644 io2d/src/3rd-party/zlib/examples/gzjoin.c delete mode 100644 io2d/src/3rd-party/zlib/examples/gzlog.c delete mode 100644 io2d/src/3rd-party/zlib/examples/gzlog.h delete mode 100644 io2d/src/3rd-party/zlib/examples/zlib_how.html delete mode 100644 io2d/src/3rd-party/zlib/examples/zpipe.c delete mode 100644 io2d/src/3rd-party/zlib/examples/zran.c delete mode 100644 io2d/src/3rd-party/zlib/gzclose.c delete mode 100644 io2d/src/3rd-party/zlib/gzguts.h delete mode 100644 io2d/src/3rd-party/zlib/gzlib.c delete mode 100644 io2d/src/3rd-party/zlib/gzread.c delete mode 100644 io2d/src/3rd-party/zlib/gzwrite.c delete mode 100644 io2d/src/3rd-party/zlib/infback.c delete mode 100644 io2d/src/3rd-party/zlib/inffast.c delete mode 100644 io2d/src/3rd-party/zlib/inffast.h delete mode 100644 io2d/src/3rd-party/zlib/inffixed.h delete mode 100644 io2d/src/3rd-party/zlib/inflate.c delete mode 100644 io2d/src/3rd-party/zlib/inflate.h delete mode 100644 io2d/src/3rd-party/zlib/inftrees.c delete mode 100644 io2d/src/3rd-party/zlib/inftrees.h delete mode 100644 io2d/src/3rd-party/zlib/make_vms.com delete mode 100644 io2d/src/3rd-party/zlib/msdos/Makefile.bor delete mode 100644 io2d/src/3rd-party/zlib/msdos/Makefile.dj2 delete mode 100644 io2d/src/3rd-party/zlib/msdos/Makefile.emx delete mode 100644 io2d/src/3rd-party/zlib/msdos/Makefile.msc delete mode 100644 io2d/src/3rd-party/zlib/msdos/Makefile.tc delete mode 100644 io2d/src/3rd-party/zlib/nintendods/Makefile delete mode 100644 io2d/src/3rd-party/zlib/nintendods/README delete mode 100644 io2d/src/3rd-party/zlib/old/Makefile.emx delete mode 100644 io2d/src/3rd-party/zlib/old/Makefile.riscos delete mode 100644 io2d/src/3rd-party/zlib/old/README delete mode 100644 io2d/src/3rd-party/zlib/old/descrip.mms delete mode 100644 io2d/src/3rd-party/zlib/old/os2/Makefile.os2 delete mode 100644 io2d/src/3rd-party/zlib/old/os2/zlib.def delete mode 100644 io2d/src/3rd-party/zlib/old/visual-basic.txt delete mode 100644 io2d/src/3rd-party/zlib/qnx/package.qpg delete mode 100644 io2d/src/3rd-party/zlib/test/example.c delete mode 100644 io2d/src/3rd-party/zlib/test/infcover.c delete mode 100644 io2d/src/3rd-party/zlib/test/minigzip.c delete mode 100644 io2d/src/3rd-party/zlib/treebuild.xml delete mode 100644 io2d/src/3rd-party/zlib/trees.c delete mode 100644 io2d/src/3rd-party/zlib/trees.h delete mode 100644 io2d/src/3rd-party/zlib/uncompr.c delete mode 100644 io2d/src/3rd-party/zlib/watcom/watcom_f.mak delete mode 100644 io2d/src/3rd-party/zlib/watcom/watcom_l.mak delete mode 100644 io2d/src/3rd-party/zlib/win32/DLL_FAQ.txt delete mode 100644 io2d/src/3rd-party/zlib/win32/Makefile.bor delete mode 100644 io2d/src/3rd-party/zlib/win32/Makefile.gcc delete mode 100644 io2d/src/3rd-party/zlib/win32/Makefile.msc delete mode 100644 io2d/src/3rd-party/zlib/win32/README-WIN32.txt delete mode 100644 io2d/src/3rd-party/zlib/win32/VisualC.txt delete mode 100644 io2d/src/3rd-party/zlib/win32/zlib.def delete mode 100644 io2d/src/3rd-party/zlib/win32/zlib1.rc delete mode 100644 io2d/src/3rd-party/zlib/zconf.h delete mode 100644 io2d/src/3rd-party/zlib/zconf.h.cmakein delete mode 100644 io2d/src/3rd-party/zlib/zconf.h.in delete mode 100644 io2d/src/3rd-party/zlib/zlib.3 delete mode 100644 io2d/src/3rd-party/zlib/zlib.3.pdf delete mode 100644 io2d/src/3rd-party/zlib/zlib.h delete mode 100644 io2d/src/3rd-party/zlib/zlib.map delete mode 100644 io2d/src/3rd-party/zlib/zlib.pc.cmakein delete mode 100644 io2d/src/3rd-party/zlib/zlib.pc.in delete mode 100644 io2d/src/3rd-party/zlib/zlib2ansi delete mode 100644 io2d/src/3rd-party/zlib/zutil.c delete mode 100644 io2d/src/3rd-party/zlib/zutil.h diff --git a/io2d/src/3rd-party/libpng/ANNOUNCE b/io2d/src/3rd-party/libpng/ANNOUNCE deleted file mode 100644 index 39fcbd9..0000000 --- a/io2d/src/3rd-party/libpng/ANNOUNCE +++ /dev/null @@ -1,63 +0,0 @@ - -Libpng 1.6.8beta03 - December 1, 2013 - -This is not intended to be a public release. It will be replaced -within a few weeks by a public version or by another test version. - -Files available for download: - -Source files with LF line endings (for Unix/Linux) and with a -"configure" script - - 1.6.8beta03.tar.xz (LZMA-compressed, recommended) - 1.6.8beta03.tar.gz - -Source files with CRLF line endings (for Windows), without the -"configure" script - - lp168b03.7z (LZMA-compressed, recommended) - lp168b03.zip - -Other information: - - 1.6.8beta03-README.txt - 1.6.8beta03-LICENSE.txt - Gnupg/*.asc (PGP armored detached signatures) - -Changes since the last public release (1.6.7): - -Version 1.6.8beta01 [December 1, 2013] - Changed #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED in pngpread.c to - #ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED to be consistent with - what is in pngpriv.h. - Moved prototype for png_handle_unknown() in pngpriv.h outside of - the #ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED/#endif block. - Added "-Wall" to CFLAGS in contrib/pngminim/*/makefile - Conditionally compile some unused functions reported by -Wall in pngminim. - Fixed 'minimal' builds. Various obviously useful minimal configurations - don't build because of missing contrib/libtests test programs and - overly complex dependencies in scripts/pnglibconf.dfa. This change - adds contrib/conftest/*.dfa files that can be used in automatic build - scripts to ensure that these configurations continue to build. - Enabled WRITE_INVERT and WRITE_PACK in contrib/pngminim/encoder. - Fixed pngvalid 'fail' function declaration on the Intel C Compiler. - This reverts to the previous 'static' implementation and works round - the 'unused static function' warning by using PNG_UNUSED(). - -Version 1.6.8beta02 [November 30, 2013] - Removed or marked PNG_UNUSED some harmless "dead assignments" reported - by clang scan-build. - Changed tabs to 3 spaces in png_debug macros and changed '"%s"m' - to '"%s" m' to improve portability among compilers. - Changed png_free_default() to free() in pngtest.c - -Version 1.6.8beta03 [December 1, 2013] - Tidied up pngfix inits and fixed pngtest no-write builds. - -Send comments/corrections/commendations to png-mng-implement at lists.sf.net -(subscription required; visit -https://lists.sourceforge.net/lists/listinfo/png-mng-implement -to subscribe) -or to glennrp at users.sourceforge.net - -Glenn R-P diff --git a/io2d/src/3rd-party/libpng/CHANGES b/io2d/src/3rd-party/libpng/CHANGES deleted file mode 100644 index b20a168..0000000 --- a/io2d/src/3rd-party/libpng/CHANGES +++ /dev/null @@ -1,4750 +0,0 @@ -#if 0 -CHANGES - changes for libpng - -Version 0.2 - added reader into png.h - fixed small problems in stub file - -Version 0.3 - added pull reader - split up pngwrite.c to several files - added pnglib.txt - added example.c - cleaned up writer, adding a few new transformations - fixed some bugs in writer - interfaced with zlib 0.5 - added K&R support - added check for 64 KB blocks for 16-bit machines - -Version 0.4 - cleaned up code and commented code - simplified time handling into png_time - created png_color_16 and png_color_8 to handle color needs - cleaned up color type defines - fixed various bugs - made various names more consistent - interfaced with zlib 0.71 - cleaned up zTXt reader and writer (using zlib's Reset functions) - split transformations into pngrtran.c and pngwtran.c - -Version 0.5 - interfaced with zlib 0.8 - fixed many reading and writing bugs - saved using 3 spaces instead of tabs - -Version 0.6 - added png_large_malloc() and png_large_free() - added png_size_t - cleaned up some compiler warnings - added png_start_read_image() - -Version 0.7 - cleaned up lots of bugs - finished dithering and other stuff - added test program - changed name from pnglib to libpng - -Version 0.71 [June, 1995] - changed pngtest.png for zlib 0.93 - fixed error in libpng.txt and example.c - -Version 0.8 - cleaned up some bugs - added png_set_filler() - split up pngstub.c into pngmem.c, pngio.c, and pngerror.c - added #define's to remove unwanted code - moved png_info_init() to png.c - added old_size into png_realloc() - added functions to manually set filtering and compression info - changed compression parameters based on image type - optimized filter selection code - added version info - changed external functions passing floats to doubles (k&r problems?) - put all the configurable stuff in pngconf.h - enabled png_set_shift to work with paletted images on read - added png_read_update_info() - updates info structure with transformations - -Version 0.81 [August, 1995] - incorporated Tim Wegner's medium model code (thanks, Tim) - -Version 0.82 [September, 1995] - [unspecified changes] - -Version 0.85 [December, 1995] - added more medium model code (almost everything's a far) - added i/o, error, and memory callback functions - fixed some bugs (16-bit, 4-bit interlaced, etc.) - added first run progressive reader (barely tested) - -Version 0.86 [January, 1996] - fixed bugs - improved documentation - -Version 0.87 [January, 1996] - fixed medium model bugs - fixed other bugs introduced in 0.85 and 0.86 - added some minor documentation - -Version 0.88 [January, 1996] - fixed progressive bugs - replaced tabs with spaces - cleaned up documentation - added callbacks for read/write and warning/error functions - -Version 0.89 [July, 1996] - Added new initialization API to make libpng work better with shared libs - we now have png_create_read_struct(), png_create_write_struct(), - png_create_info_struct(), png_destroy_read_struct(), and - png_destroy_write_struct() instead of the separate calls to - malloc and png_read_init(), png_info_init(), and png_write_init() - Changed warning/error callback functions to fix bug - this means you - should use the new initialization API if you were using the old - png_set_message_fn() calls, and that the old API no longer exists - so that people are aware that they need to change their code - Changed filter selection API to allow selection of multiple filters - since it didn't work in previous versions of libpng anyways - Optimized filter selection code - Fixed png_set_background() to allow using an arbitrary RGB color for - paletted images - Fixed gamma and background correction for paletted images, so - png_correct_palette is not needed unless you are correcting an - external palette (you will need to #define PNG_CORRECT_PALETTE_SUPPORTED - in pngconf.h) - if nobody uses this, it may disappear in the future. - Fixed bug with Borland 64K memory allocation (Alexander Lehmann) - Fixed bug in interlace handling (Smarasderagd, I think) - Added more error checking for writing and image to reduce invalid files - Separated read and write functions so that they won't both be linked - into a binary when only reading or writing functionality is used - New pngtest image also has interlacing and zTXt - Updated documentation to reflect new API - -Version 0.90 [January, 1997] - Made CRC errors/warnings on critical and ancillary chunks configurable - libpng will use the zlib CRC routines by (compile-time) default - Changed DOS small/medium model memory support - needs zlib 1.04 (Tim Wegner) - Added external C++ wrapper statements to png.h (Gilles Dauphin) - Allow PNG file to be read when some or all of file signature has already - been read from the beginning of the stream. ****This affects the size - of info_struct and invalidates all programs that use a shared libpng**** - Fixed png_filler() declarations - Fixed? background color conversions - Fixed order of error function pointers to match documentation - Current chunk name is now available in png_struct to reduce the number - of nearly identical error messages (will simplify multi-lingual - support when available) - Try to get ready for unknown-chunk callback functions: - - previously read critical chunks are flagged, so the chunk handling - routines can determine if the chunk is in the right place - - all chunk handling routines have the same prototypes, so we will - be able to handle all chunks via a callback mechanism - Try to fix Linux "setjmp" buffer size problems - Removed png_large_malloc, png_large_free, and png_realloc functions. - -Version 0.95 [March, 1997] - Fixed bug in pngwutil.c allocating "up_row" twice and "avg_row" never - Fixed bug in PNG file signature compares when start != 0 - Changed parameter type of png_set_filler(...filler...) from png_byte - to png_uint_32 - Added test for MACOS to ensure that both math.h and fp.h are not #included - Added macros for libpng to be compiled as a Windows DLL (Andreas Kupries) - Added "packswap" transformation, which changes the endianness of - packed-pixel bytes (Kevin Bracey) - Added "strip_alpha" transformation, which removes the alpha channel of - input images without using it (not necessarily a good idea) - Added "swap_alpha" transformation, which puts the alpha channel in front - of the color bytes instead of after - Removed all implicit variable tests which assume NULL == 0 (I think) - Changed several variables to "png_size_t" to show 16/32-bit limitations - Added new pCAL chunk read/write support - Added experimental filter selection weighting (Greg Roelofs) - Removed old png_set_rgbx() and png_set_xrgb() functions that have been - obsolete for about 2 years now (use png_set_filler() instead) - Added macros to read 16- and 32-bit ints directly from buffer, to be - used only on those systems that support it (namely PowerPC and 680x0) - With some testing, this may become the default for MACOS/PPC systems. - Only calculate CRC on data if we are going to use it - Added macros for zTXt compression type PNG_zTXt_COMPRESSION_??? - Added macros for simple libpng debugging output selectable at compile time - Removed PNG_READ_END_MODE in progressive reader (Smarasderagd) - More description of info_struct in libpng.txt and png.h - More instructions in example.c - More chunk types tested in pngtest.c - Renamed pngrcb.c to pngset.c, and all png_read_ functions to be - png_set_. We now have corresponding png_get_ - functions in pngget.c to get information in info_ptr. This isolates - the application from the internal organization of png_info_struct - (good for shared library implementations). - -Version 0.96 [May, 1997] - Fixed serious bug with < 8bpp images introduced in 0.95 - Fixed 256-color transparency bug (Greg Roelofs) - Fixed up documentation (Greg Roelofs, Laszlo Nyul) - Fixed "error" in pngconf.h for Linux setjmp() behavior - Fixed DOS medium model support (Tim Wegner) - Fixed png_check_keyword() for case with error in static string text - Added read of CRC after IEND chunk for embedded PNGs (Laszlo Nyul) - Added typecasts to quiet compiler errors - Added more debugging info - -Version 0.97 [January, 1998] - Removed PNG_USE_OWN_CRC capability - Relocated png_set_crc_action from pngrutil.c to pngrtran.c - Fixed typecasts of "new_key", etc. (Andreas Dilger) - Added RFC 1152 [sic] date support - Fixed bug in gamma handling of 4-bit grayscale - Added 2-bit grayscale gamma handling (Glenn R-P) - Added more typecasts. 65536L becomes (png_uint_32)65536L, etc. (Glenn R-P) - Minor corrections in libpng.txt - Added simple sRGB support (Glenn R-P) - Easier conditional compiling, e.g., - define PNG_READ/WRITE_NOT_FULLY_SUPPORTED; - all configurable options can be selected from command-line instead - of having to edit pngconf.h (Glenn R-P) - Fixed memory leak in pngwrite.c (free info_ptr->text) (Glenn R-P) - Added more conditions for png_do_background, to avoid changing - black pixels to background when a background is supplied and - no pixels are transparent - Repaired PNG_NO_STDIO behavior - Tested NODIV support and made it default behavior (Greg Roelofs) - Added "-m" option and PNGTEST_DEBUG_MEMORY to pngtest (John Bowler) - Regularized version numbering scheme and bumped shared-library major - version number to 2 to avoid problems with libpng 0.89 apps - (Greg Roelofs) - -Version 0.98 [January, 1998] - Cleaned up some typos in libpng.txt and in code documentation - Fixed memory leaks in pCAL chunk processing (Glenn R-P and John Bowler) - Cosmetic change "display_gamma" to "screen_gamma" in pngrtran.c - Changed recommendation about file_gamma for PC images to .51 from .45, - in example.c and libpng.txt, added comments to distinguish between - screen_gamma, viewing_gamma, and display_gamma. - Changed all references to RFC1152 to read RFC1123 and changed the - PNG_TIME_RFC1152_SUPPORTED macro to PNG_TIME_RFC1123_SUPPORTED - Added png_invert_alpha capability (Glenn R-P -- suggestion by Jon Vincent) - Changed srgb_intent from png_byte to int to avoid compiler bugs - -Version 0.99 [January 30, 1998] - Free info_ptr->text instead of end_info_ptr->text in pngread.c (John Bowler) - Fixed a longstanding "packswap" bug in pngtrans.c - Fixed some inconsistencies in pngconf.h that prevented compiling with - PNG_READ_GAMMA_SUPPORTED and PNG_READ_hIST_SUPPORTED undefined - Fixed some typos and made other minor rearrangement of libpng.txt (Andreas) - Changed recommendation about file_gamma for PC images to .50 from .51 in - example.c and libpng.txt, and changed file_gamma for sRGB images to .45 - Added a number of functions to access information from the png structure - png_get_image_height(), etc. (Glenn R-P, suggestion by Brad Pettit) - Added TARGET_MACOS similar to zlib-1.0.8 - Define PNG_ALWAYS_EXTERN when __MWERKS__ && WIN32 are defined - Added type casting to all png_malloc() function calls - -Version 0.99a [January 31, 1998] - Added type casts and parentheses to all returns that return a value.(Tim W.) - -Version 0.99b [February 4, 1998] - Added type cast png_uint_32 on malloc function calls where needed. - Changed type of num_hist from png_uint_32 to int (same as num_palette). - Added checks for rowbytes overflow, in case png_size_t is less than 32 bits. - Renamed makefile.elf to makefile.lnx. - -Version 0.99c [February 7, 1998] - More type casting. Removed erroneous overflow test in pngmem.c. - Added png_buffered_memcpy() and png_buffered_memset(), apply them to rowbytes. - Added UNIX manual pages libpng.3 (incorporating libpng.txt) and png.5. - -Version 0.99d [February 11, 1998] - Renamed "far_to_near()" "png_far_to_near()" - Revised libpng.3 - Version 99c "buffered" operations didn't work as intended. Replaced them - with png_memcpy_check() and png_memset_check(). - Added many "if (png_ptr == NULL) return" to quell compiler warnings about - unused png_ptr, mostly in pngget.c and pngset.c. - Check for overlength tRNS chunk present when indexed-color PLTE is read. - Cleaned up spelling errors in libpng.3/libpng.txt - Corrected a problem with png_get_tRNS() which returned undefined trans array - -Version 0.99e [February 28, 1998] - Corrected png_get_tRNS() again. - Add parentheses for easier reading of pngget.c, fixed "||" should be "&&". - Touched up example.c to make more of it compileable, although the entire - file still can't be compiled (Willem van Schaik) - Fixed a bug in png_do_shift() (Bryan Tsai) - Added a space in png.h prototype for png_write_chunk_start() - Replaced pngtest.png with one created with zlib 1.1.1 - Changed pngtest to report PASS even when file size is different (Jean-loup G.) - Corrected some logic errors in png_do_invert_alpha() (Chris Patterson) - -Version 0.99f [March 5, 1998] - Corrected a bug in pngpread() introduced in version 99c (Kevin Bracey) - Moved makefiles into a "scripts" directory, and added INSTALL instruction file - Added makefile.os2 and pngos2.def (A. Zabolotny) and makefile.s2x (W. Sebok) - Added pointers to "note on libpng versions" in makefile.lnx and README - Added row callback feature when reading and writing nonprogressive rows - and added a test of this feature in pngtest.c - Added user transform callbacks, with test of the feature in pngtest.c - -Version 0.99g [March 6, 1998, morning] - Minor changes to pngtest.c to suppress compiler warnings. - Removed "beta" language from documentation. - -Version 0.99h [March 6, 1998, evening] - Minor changes to previous minor changes to pngtest.c - Changed PNG_READ_NOT_FULLY_SUPPORTED to PNG_READ_TRANSFORMS_NOT_SUPPORTED - and added PNG_PROGRESSIVE_READ_NOT_SUPPORTED macro - Added user transform capability - -Version 1.00 [March 7, 1998] - Changed several typedefs in pngrutil.c - Added makefile.wat (Pawel Mrochen), updated makefile.tc3 (Willem van Schaik) - Replaced "while(1)" with "for(;;)" - Added PNGARG() to prototypes in pngtest.c and removed some prototypes - Updated some of the makefiles (Tom Lane) - Changed some typedefs (s_start, etc.) in pngrutil.c - Fixed dimensions of "short_months" array in pngwrite.c - Replaced ansi2knr.c with the one from jpeg-v6 - -Version 1.0.0 [March 8, 1998] - Changed name from 1.00 to 1.0.0 (Adam Costello) - Added smakefile.ppc (with SCOPTIONS.ppc) for Amiga PPC (Andreas Kleinert) - -Version 1.0.0a [March 9, 1998] - Fixed three bugs in pngrtran.c to make gamma+background handling consistent - (Greg Roelofs) - Changed format of the PNG_LIBPNG_VER integer to xyyzz instead of xyz - for major, minor, and bugfix releases. This is 10001. (Adam Costello, - Tom Lane) - Make months range from 1-12 in png_convert_to_rfc1123 - -Version 1.0.0b [March 13, 1998] - Quieted compiler complaints about two empty "for" loops in pngrutil.c - Minor changes to makefile.s2x - Removed #ifdef/#endif around a png_free() in pngread.c - -Version 1.0.1 [March 14, 1998] - Changed makefile.s2x to reduce security risk of using a relative pathname - Fixed some typos in the documentation (Greg). - Fixed a problem with value of "channels" returned by png_read_update_info() - -Version 1.0.1a [April 21, 1998] - Optimized Paeth calculations by replacing abs() function calls with intrinsics - plus other loop optimizations. Improves avg decoding speed by about 20%. - Commented out i386istic "align" compiler flags in makefile.lnx. - Reduced the default warning level in some makefiles, to make them consistent. - Removed references to IJG and JPEG in the ansi2knr.c copyright statement. - Fixed a bug in png_do_strip_filler with XXRRGGBB => RRGGBB transformation. - Added grayscale and 16-bit capability to png_do_read_filler(). - Fixed a bug in pngset.c, introduced in version 0.99c, that sets rowbytes - too large when writing an image with bit_depth < 8 (Bob Dellaca). - Corrected some bugs in the experimental weighted filtering heuristics. - Moved a misplaced pngrutil code block that truncates tRNS if it has more - than num_palette entries -- test was done before num_palette was defined. - Fixed a png_convert_to_rfc1123() bug that converts day 31 to 0 (Steve Eddins). - Changed compiler flags in makefile.wat for better optimization - (Pawel Mrochen). - -Version 1.0.1b [May 2, 1998] - Relocated png_do_gray_to_rgb() within png_do_read_transformations() (Greg). - Relocated the png_composite macros from pngrtran.c to png.h (Greg). - Added makefile.sco (contributed by Mike Hopkirk). - Fixed two bugs (missing definitions of "istop") introduced in libpng-1.0.1a. - Fixed a bug in pngrtran.c that would set channels=5 under some circumstances. - More work on the Paeth-filtering, achieving imperceptible speedup - (A Kleinert). - More work on loop optimization which may help when compiled with C++ - compilers. - Added warnings when people try to use transforms they've defined out. - Collapsed 4 "i" and "c" loops into single "i" loops in pngrtran and pngwtran. - Revised paragraph about png_set_expand() in libpng.txt and libpng.3 (Greg) - -Version 1.0.1c [May 11, 1998] - Fixed a bug in pngrtran.c (introduced in libpng-1.0.1a) where the masks for - filler bytes should have been 0xff instead of 0xf. - Added max_pixel_depth=32 in pngrutil.c when using FILLER with palette images. - Moved PNG_WRITE_WEIGHTED_FILTER_SUPPORTED and PNG_WRITE_FLUSH_SUPPORTED - out of the PNG_WRITE_TRANSFORMS_NOT_SUPPORTED block of pngconf.h - Added "PNG_NO_WRITE_TRANSFORMS" etc., as alternatives for *_NOT_SUPPORTED, - for consistency, in pngconf.h - Added individual "ifndef PNG_NO_[CAPABILITY]" in pngconf.h to make it easier - to remove unwanted capabilities via the compile line - Made some corrections to grammar (which, it's) in documentation (Greg). - Corrected example.c, use of row_pointers in png_write_image(). - -Version 1.0.1d [May 24, 1998] - Corrected several statements that used side effects illegally in pngrutil.c - and pngtrans.c, that were introduced in version 1.0.1b - Revised png_read_rows() to avoid repeated if-testing for NULL (A Kleinert) - More corrections to example.c, use of row_pointers in png_write_image() - and png_read_rows(). - Added pngdll.mak and pngdef.pas to scripts directory, contributed by - Bob Dellaca, to make a png32bd.dll with Borland C++ 4.5 - Fixed error in example.c with png_set_text: num_text is 3, not 2 (Guido V.) - Changed several loops from count-down to count-up, for consistency. - -Version 1.0.1e [June 6, 1998] - Revised libpng.txt and libpng.3 description of png_set_read|write_fn(), and - added warnings when people try to set png_read_fn and png_write_fn in - the same structure. - Added a test such that png_do_gamma will be done when num_trans==0 - for truecolor images that have defined a background. This corrects an - error that was introduced in libpng-0.90 that can cause gamma processing - to be skipped. - Added tests in png.h to include "trans" and "trans_values" in structures - when PNG_READ_BACKGROUND_SUPPORTED or PNG_READ_EXPAND_SUPPORTED is defined. - Add png_free(png_ptr->time_buffer) in png_destroy_read_struct() - Moved png_convert_to_rfc_1123() from pngwrite.c to png.c - Added capability for user-provided malloc_fn() and free_fn() functions, - and revised pngtest.c to demonstrate their use, replacing the - PNGTEST_DEBUG_MEM feature. - Added makefile.w32, for Microsoft C++ 4.0 and later (Tim Wegner). - -Version 1.0.2 [June 14, 1998] - Fixed two bugs in makefile.bor . - -Version 1.0.2a [December 30, 1998] - Replaced and extended code that was removed from png_set_filler() in 1.0.1a. - Fixed a bug in png_do_filler() that made it fail to write filler bytes in - the left-most pixel of each row (Kevin Bracey). - Changed "static pngcharp tIME_string" to "static char tIME_string[30]" - in pngtest.c (Duncan Simpson). - Fixed a bug in pngtest.c that caused pngtest to try to write a tIME chunk - even when no tIME chunk was present in the source file. - Fixed a problem in pngrutil.c: gray_to_rgb didn't always work with 16-bit. - Fixed a problem in png_read_push_finish_row(), which would not skip some - passes that it should skip, for images that are less than 3 pixels high. - Interchanged the order of calls to png_do_swap() and png_do_shift() - in pngwtran.c (John Cromer). - Added #ifdef PNG_DEBUG/#endif surrounding use of PNG_DEBUG in png.h . - Changed "bad adaptive filter type" from error to warning in pngrutil.c . - Fixed a documentation error about default filtering with 8-bit indexed-color. - Separated the PNG_NO_STDIO macro into PNG_NO_STDIO and PNG_NO_CONSOLE_IO - (L. Peter Deutsch). - Added png_set_rgb_to_gray() and png_get_rgb_to_gray_status() functions. - Added png_get_copyright() and png_get_header_version() functions. - Revised comments on png_set_progressive_read_fn() in libpng.txt and example.c - Added information about debugging in libpng.txt and libpng.3 . - Changed "ln -sf" to "ln -s -f" in makefile.s2x, makefile.lnx, and - makefile.sco. - Removed lines after Dynamic Dependencies" in makefile.aco . - Revised makefile.dec to make a shared library (Jeremie Petit). - Removed trailing blanks from all files. - -Version 1.0.2a [January 6, 1999] - Removed misplaced #endif and #ifdef PNG_NO_EXTERN near the end of png.h - Added "if" tests to silence complaints about unused png_ptr in png.h and png.c - Changed "check_if_png" function in example.c to return true (nonzero) if PNG. - Changed libpng.txt to demonstrate png_sig_cmp() instead of png_check_sig() - which is obsolete. - -Version 1.0.3 [January 14, 1999] - Added makefile.hux, for Hewlett Packard HPUX 10.20 and 11.00 (Jim Rice) - Added a statement of Y2K compliance in png.h, libpng.3, and Y2KINFO. - -Version 1.0.3a [August 12, 1999] - Added check for PNG_READ_INTERLACE_SUPPORTED in pngread.c; issue a warning - if an attempt is made to read an interlaced image when it's not supported. - Added check if png_ptr->trans is defined before freeing it in pngread.c - Modified the Y2K statement to include versions back to version 0.71 - Fixed a bug in the check for valid IHDR bit_depth/color_types in pngrutil.c - Modified makefile.wat (added -zp8 flag, ".symbolic", changed some comments) - Replaced leading blanks with tab characters in makefile.hux - Changed "dworkin.wustl.edu" to "ccrc.wustl.edu" in various documents. - Changed (float)red and (float)green to (double)red, (double)green - in png_set_rgb_to_gray() to avoid "promotion" problems in AIX. - Fixed a bug in pngconf.h that omitted when PNG_DEBUG==0 (K Bracey). - Reformatted libpng.3 and libpngpf.3 with proper fonts (script by J. vanZandt). - Updated documentation to refer to the PNG-1.2 specification. - Removed ansi2knr.c and left pointers to the latest source for ansi2knr.c - in makefile.knr, INSTALL, and README (L. Peter Deutsch) - Fixed bugs in calculation of the length of rowbytes when adding alpha - channels to 16-bit images, in pngrtran.c (Chris Nokleberg) - Added function png_set_user_transform_info() to store user_transform_ptr, - user_depth, and user_channels into the png_struct, and a function - png_get_user_transform_ptr() to retrieve the pointer (Chris Nokleberg) - Added function png_set_empty_plte_permitted() to make libpng useable - in MNG applications. - Corrected the typedef for png_free_ptr in png.h (Jesse Jones). - Correct gamma with srgb is 45455 instead of 45000 in pngrutil.c, to be - consistent with PNG-1.2, and allow variance of 500 before complaining. - Added assembler code contributed by Intel in file pngvcrd.c and modified - makefile.w32 to use it (Nirav Chhatrapati, INTEL Corporation, - Gilles Vollant) - Changed "ln -s -f" to "ln -f -s" in the makefiles to make Solaris happy. - Added some aliases for png_set_expand() in pngrtran.c, namely - png_set_expand_PLTE(), png_set_expand_depth(), and png_set_expand_tRNS() - (Greg Roelofs, in "PNG: The Definitive Guide"). - Added makefile.beo for BEOS on X86, contributed by Sander Stok. - -Version 1.0.3b [August 26, 1999] - Replaced 2147483647L several places with PNG_MAX_UINT macro, defined in png.h - Changed leading blanks to tabs in all makefiles. - Define PNG_USE_PNGVCRD in makefile.w32, to get MMX assembler code. - Made alternate versions of png_set_expand() in pngrtran.c, namely - png_set_gray_1_2_4_to_8, png_set_palette_to_rgb, and png_set_tRNS_to_alpha - (Greg Roelofs, in "PNG: The Definitive Guide"). Deleted the 1.0.3a aliases. - Relocated start of 'extern "C"' block in png.h so it doesn't include pngconf.h - Revised calculation of num_blocks in pngmem.c to avoid a potentially - negative shift distance, whose results are undefined in the C language. - Added a check in pngset.c to prevent writing multiple tIME chunks. - Added a check in pngwrite.c to detect invalid small window_bits sizes. - -Version 1.0.3d [September 4, 1999] - Fixed type casting of igamma in pngrutil.c - Added new png_expand functions to scripts/pngdef.pas and pngos2.def - Added a demo read_user_transform_fn that examines the row filters in pngtest.c - -Version 1.0.4 [September 24, 1999] - Define PNG_ALWAYS_EXTERN in pngconf.h if __STDC__ is defined - Delete #define PNG_INTERNAL and include "png.h" from pngasmrd.h - Made several minor corrections to pngtest.c - Renamed the makefiles with longer but more user friendly extensions. - Copied the PNG copyright and license to a separate LICENSE file. - Revised documentation, png.h, and example.c to remove reference to - "viewing_gamma" which no longer appears in the PNG specification. - Revised pngvcrd.c to use MMX code for interlacing only on the final pass. - Updated pngvcrd.c to use the faster C filter algorithms from libpng-1.0.1a - Split makefile.win32vc into two versions, makefile.vcawin32 (uses MMX - assembler code) and makefile.vcwin32 (doesn't). - Added a CPU timing report to pngtest.c (enabled by defining PNGTEST_TIMING) - Added a copy of pngnow.png to the distribution. - -Version 1.0.4a [September 25, 1999] - Increase max_pixel_depth in pngrutil.c if a user transform needs it. - Changed several division operations to right-shifts in pngvcrd.c - -Version 1.0.4b [September 30, 1999] - Added parentheses in line 3732 of pngvcrd.c - Added a comment in makefile.linux warning about buggy -O3 in pgcc 2.95.1 - -Version 1.0.4c [October 1, 1999] - Added a "png_check_version" function in png.c and pngtest.c that will generate - a helpful compiler error if an old png.h is found in the search path. - Changed type of png_user_transform_depth|channels from int to png_byte. - -Version 1.0.4d [October 6, 1999] - Changed 0.45 to 0.45455 in png_set_sRGB() - Removed unused PLTE entries from pngnow.png - Re-enabled some parts of pngvcrd.c (png_combine_row) that work properly. - -Version 1.0.4e [October 10, 1999] - Fixed sign error in pngvcrd.c (Greg Roelofs) - Replaced some instances of memcpy with simple assignments in pngvcrd (GR-P) - -Version 1.0.4f [October 15, 1999] - Surrounded example.c code with #if 0 .. #endif to prevent people from - inadvertently trying to compile it. - Changed png_get_header_version() from a function to a macro in png.h - Added type casting mostly in pngrtran.c and pngwtran.c - Removed some pointless "ptr = NULL" in pngmem.c - Added a "contrib" directory containing the source code from Greg's book. - -Version 1.0.5 [October 15, 1999] - Minor editing of the INSTALL and README files. - -Version 1.0.5a [October 23, 1999] - Added contrib/pngsuite and contrib/pngminus (Willem van Schaik) - Fixed a typo in the png_set_sRGB() function call in example.c (Jan Nijtmans) - Further optimization and bugfix of pngvcrd.c - Revised pngset.c so that it does not allocate or free memory in the user's - text_ptr structure. Instead, it makes its own copy. - Created separate write_end_info_struct in pngtest.c for a more severe test. - Added code in pngwrite.c to free info_ptr->text[i].key to stop a memory leak. - -Version 1.0.5b [November 23, 1999] - Moved PNG_FLAG_HAVE_CHUNK_HEADER, PNG_FLAG_BACKGROUND_IS_GRAY and - PNG_FLAG_WROTE_tIME from flags to mode. - Added png_write_info_before_PLTE() function. - Fixed some typecasting in contrib/gregbook/*.c - Updated scripts/makevms.com and added makevms.com to contrib/gregbook - and contrib/pngminus (Martin Zinser) - -Version 1.0.5c [November 26, 1999] - Moved png_get_header_version from png.h to png.c, to accommodate ansi2knr. - Removed all global arrays (according to PNG_NO_GLOBAL_ARRAYS macro), to - accommodate making DLL's: Moved usr_png_ver from global variable to function - png_get_header_ver() in png.c. Moved png_sig to png_sig_bytes in png.c and - eliminated use of png_sig in pngwutil.c. Moved the various png_CHNK arrays - into pngtypes.h. Eliminated use of global png_pass arrays. Declared the - png_CHNK and png_pass arrays to be "const". Made the global arrays - available to applications (although none are used in libpng itself) when - PNG_NO_GLOBAL_ARRAYS is not defined or when PNG_GLOBAL_ARRAYS is defined. - Removed some extraneous "-I" from contrib/pngminus/makefile.std - Changed the PNG_sRGB_INTENT macros in png.h to be consistent with PNG-1.2. - Change PNG_SRGB_INTENT to PNG_sRGB_INTENT in libpng.txt and libpng.3 - -Version 1.0.5d [November 29, 1999] - Add type cast (png_const_charp) two places in png.c - Eliminated pngtypes.h; use macros instead to declare PNG_CHNK arrays. - Renamed "PNG_GLOBAL_ARRAYS" to "PNG_USE_GLOBAL_ARRAYS" and made available - to applications a macro "PNG_USE_LOCAL_ARRAYS". - comment out (with #ifdef) all the new declarations when - PNG_USE_GLOBAL_ARRAYS is defined. - Added PNG_EXPORT_VAR macro to accommodate making DLL's. - -Version 1.0.5e [November 30, 1999] - Added iCCP, iTXt, and sPLT support; added "lang" member to the png_text - structure; refactored the inflate/deflate support to make adding new chunks - with trailing compressed parts easier in the future, and added new functions - png_free_iCCP, png_free_pCAL, png_free_sPLT, png_free_text, png_get_iCCP, - png_get_spalettes, png_set_iCCP, png_set_spalettes (Eric S. Raymond). - NOTE: Applications that write text chunks MUST define png_text->lang - before calling png_set_text(). It must be set to NULL if you want to - write tEXt or zTXt chunks. If you want your application to be able to - run with older versions of libpng, use - - #ifdef PNG_iTXt_SUPPORTED - png_text[i].lang = NULL; - #endif - - Changed png_get_oFFs() and png_set_oFFs() to use signed rather than unsigned - offsets (Eric S. Raymond). - Combined PNG_READ_cHNK_SUPPORTED and PNG_WRITE_cHNK_SUPPORTED macros into - PNG_cHNK_SUPPORTED and combined the three types of PNG_text_SUPPORTED - macros, leaving the separate macros also available. - Removed comments on #endifs at the end of many short, non-nested #if-blocks. - -Version 1.0.5f [December 6, 1999] - Changed makefile.solaris to issue a warning about potential problems when - the ucb "ld" is in the path ahead of the ccs "ld". - Removed "- [date]" from the "synopsis" line in libpng.3 and libpngpf.3. - Added sCAL chunk support (Eric S. Raymond). - -Version 1.0.5g [December 7, 1999] - Fixed "png_free_spallettes" typo in png.h - Added code to handle new chunks in pngpread.c - Moved PNG_CHNK string macro definitions outside of PNG_NO_EXTERN block - Added "translated_key" to png_text structure and png_write_iTXt(). - Added code in pngwrite.c to work around a newly discovered zlib bug. - -Version 1.0.5h [December 10, 1999] - NOTE: regarding the note for version 1.0.5e, the following must also - be included in your code: - png_text[i].translated_key = NULL; - Unknown chunk handling is now supported. - Option to eliminate all floating point support was added. Some new - fixed-point functions such as png_set_gAMA_fixed() were added. - Expanded tabs and removed trailing blanks in source files. - -Version 1.0.5i [December 13, 1999] - Added some type casts to silence compiler warnings. - Renamed "png_free_spalette" to "png_free_spalettes" for consistency. - Removed leading blanks from a #define in pngvcrd.c - Added some parameters to the new png_set_keep_unknown_chunks() function. - Added a test for up->location != 0 in the first instance of writing - unknown chunks in pngwrite.c - Changed "num" to "i" in png_free_spalettes() and png_free_unknowns() to - prevent recursion. - Added png_free_hIST() function. - Various patches to fix bugs in the sCAL and integer cHRM processing, - and to add some convenience macros for use with sCAL. - -Version 1.0.5j [December 21, 1999] - Changed "unit" parameter of png_write_sCAL from png_byte to int, to work - around buggy compilers. - Added new type "png_fixed_point" for integers that hold float*100000 values - Restored backward compatibility of tEXt/zTXt chunk processing: - Restored the first four members of png_text to the same order as v.1.0.5d. - Added members "lang_key" and "itxt_length" to png_text struct. Set - text_length=0 when "text" contains iTXt data. Use the "compression" - member to distinguish among tEXt/zTXt/iTXt types. Added - PNG_ITXT_COMPRESSION_NONE (1) and PNG_ITXT_COMPRESSION_zTXt(2) macros. - The "Note" above, about backward incompatibility of libpng-1.0.5e, no - longer applies. - Fixed png_read|write_iTXt() to read|write parameters in the right order, - and to write the iTXt chunk after IDAT if it appears in the end_ptr. - Added pnggccrd.c, version of pngvcrd.c Intel assembler for gcc (Greg Roelofs) - Reversed the order of trying to write floating-point and fixed-point gAMA. - -Version 1.0.5k [December 27, 1999] - Added many parentheses, e.g., "if (a && b & c)" becomes "if (a && (b & c))" - Added png_handle_as_unknown() function (Glenn) - Added png_free_chunk_list() function and chunk_list and num_chunk_list members - of png_ptr. - Eliminated erroneous warnings about multiple sPLT chunks and sPLT-after-PLTE. - Fixed a libpng-1.0.5h bug in pngrutil.c that was issuing erroneous warnings - about ignoring incorrect gAMA with sRGB (gAMA was in fact not ignored) - Added png_free_tRNS(); png_set_tRNS() now malloc's its own trans array (ESR). - Define png_get_int_32 when oFFs chunk is supported as well as when pCAL is. - Changed type of proflen from png_int_32 to png_uint_32 in png_get_iCCP(). - -Version 1.0.5l [January 1, 2000] - Added functions png_set_read_user_chunk_fn() and png_get_user_chunk_ptr() - for setting a callback function to handle unknown chunks and for - retrieving the associated user pointer (Glenn). - -Version 1.0.5m [January 7, 2000] - Added high-level functions png_read_png(), png_write_png(), png_free_pixels(). - -Version 1.0.5n [January 9, 2000] - Added png_free_PLTE() function, and modified png_set_PLTE() to malloc its - own memory for info_ptr->palette. This makes it safe for the calling - application to free its copy of the palette any time after it calls - png_set_PLTE(). - -Version 1.0.5o [January 20, 2000] - Cosmetic changes only (removed some trailing blanks and TABs) - -Version 1.0.5p [January 31, 2000] - Renamed pngdll.mak to makefile.bd32 - Cosmetic changes in pngtest.c - -Version 1.0.5q [February 5, 2000] - Relocated the makefile.solaris warning about PATH problems. - Fixed pngvcrd.c bug by pushing/popping registers in mmxsupport (Bruce Oberg) - Revised makefile.gcmmx - Added PNG_SETJMP_SUPPORTED, PNG_SETJMP_NOT_SUPPORTED, and PNG_ABORT() macros - -Version 1.0.5r [February 7, 2000] - Removed superfluous prototype for png_get_itxt from png.h - Fixed a bug in pngrtran.c that improperly expanded the background color. - Return *num_text=0 from png_get_text() when appropriate, and fix documentation - of png_get_text() in libpng.txt/libpng.3. - -Version 1.0.5s [February 18, 2000] - Added "png_jmp_env()" macro to pngconf.h, to help people migrate to the - new error handler that's planned for the next libpng release, and changed - example.c, pngtest.c, and contrib programs to use this macro. - Revised some of the DLL-export macros in pngconf.h (Greg Roelofs) - Fixed a bug in png_read_png() that caused it to fail to expand some images - that it should have expanded. - Fixed some mistakes in the unused and undocumented INCH_CONVERSIONS functions - in pngget.c - Changed the allocation of palette, history, and trans arrays back to - the version 1.0.5 method (linking instead of copying) which restores - backward compatibility with version 1.0.5. Added some remarks about - that in example.c. Added "free_me" member to info_ptr and png_ptr - and added png_free_data() function. - Updated makefile.linux and makefile.gccmmx to make directories conditionally. - Made cosmetic changes to pngasmrd.h - Added png_set_rows() and png_get_rows(), for use with png_read|write_png(). - Modified png_read_png() to allocate info_ptr->row_pointers only if it - hasn't already been allocated. - -Version 1.0.5t [March 4, 2000] - Changed png_jmp_env() migration aiding macro to png_jmpbuf(). - Fixed "interlace" typo (should be "interlaced") in contrib/gregbook/read2-x.c - Fixed bug with use of PNG_BEFORE_IHDR bit in png_ptr->mode, introduced when - PNG_FLAG_HAVE_CHUNK_HEADER was moved into png_ptr->mode in version 1.0.5b - Files in contrib/gregbook were revised to use png_jmpbuf() and to select - a 24-bit visual if one is available, and to allow abbreviated options. - Files in contrib/pngminus were revised to use the png_jmpbuf() macro. - Removed spaces in makefile.linux and makefile.gcmmx, introduced in 1.0.5s - -Version 1.0.5u [March 5, 2000] - Simplified the code that detects old png.h in png.c and pngtest.c - Renamed png_spalette (_p, _pp) to png_sPLT_t (_tp, _tpp) - Increased precision of rgb_to_gray calculations from 8 to 15 bits and - added png_set_rgb_to_gray_fixed() function. - Added makefile.bc32 (32-bit Borland C++, C mode) - -Version 1.0.5v [March 11, 2000] - Added some parentheses to the png_jmpbuf macro definition. - Updated references to the zlib home page, which has moved to freesoftware.com. - Corrected bugs in documentation regarding png_read_row() and png_write_row(). - Updated documentation of png_rgb_to_gray calculations in libpng.3/libpng.txt. - Renamed makefile.borland,turboc3 back to makefile.bor,tc3 as in version 1.0.3, - revised borland makefiles; added makefile.ibmvac3 and makefile.gcc (Cosmin) - -Version 1.0.6 [March 20, 2000] - Minor revisions of makefile.bor, libpng.txt, and gregbook/rpng2-win.c - Added makefile.sggcc (SGI IRIX with gcc) - -Version 1.0.6d [April 7, 2000] - Changed sprintf() to strcpy() in png_write_sCAL_s() to work without STDIO - Added data_length parameter to png_decompress_chunk() function - Revised documentation to remove reference to abandoned png_free_chnk functions - Fixed an error in png_rgb_to_gray_fixed() - Revised example.c, usage of png_destroy_write_struct(). - Renamed makefile.ibmvac3 to makefile.ibmc, added libpng.icc IBM project file - Added a check for info_ptr->free_me&PNG_FREE_TEXT when freeing text in png.c - Simplify png_sig_bytes() function to remove use of non-ISO-C strdup(). - -Version 1.0.6e [April 9, 2000] - Added png_data_freer() function. - In the code that checks for over-length tRNS chunks, added check of - info_ptr->num_trans as well as png_ptr->num_trans (Matthias Benckmann) - Minor revisions of libpng.txt/libpng.3. - Check for existing data and free it if the free_me flag is set, in png_set_*() - and png_handle_*(). - Only define PNG_WEIGHTED_FILTERS_SUPPORTED when PNG_FLOATING_POINT_SUPPORTED - is defined. - Changed several instances of PNG_NO_CONSOLE_ID to PNG_NO_STDIO in pngrutil.c - and mentioned the purposes of the two macros in libpng.txt/libpng.3. - -Version 1.0.6f [April 14, 2000] - Revised png_set_iCCP() and png_set_rows() to avoid prematurely freeing data. - Add checks in png_set_text() for NULL members of the input text structure. - Revised libpng.txt/libpng.3. - Removed superfluous prototype for png_set_iTXt from png.h - Removed "else" from pngread.c, after png_error(), and changed "0" to "length". - Changed several png_errors about malformed ancillary chunks to png_warnings. - -Version 1.0.6g [April 24, 2000] - Added png_pass-* arrays to pnggccrd.c when PNG_USE_LOCAL_ARRAYS is defined. - Relocated paragraph about png_set_background() in libpng.3/libpng.txt - and other revisions (Matthias Benckmann) - Relocated info_ptr->free_me, png_ptr->free_me, and other info_ptr and - png_ptr members to restore binary compatibility with libpng-1.0.5 - (breaks compatibility with libpng-1.0.6). - -Version 1.0.6h [April 24, 2000] - Changed shared library so-number pattern from 2.x.y.z to xy.z (this builds - libpng.so.10 & libpng.so.10.6h instead of libpng.so.2 & libpng.so.2.1.0.6h) - This is a temporary change for test purposes. - -Version 1.0.6i [May 2, 2000] - Rearranged some members at the end of png_info and png_struct, to put - unknown_chunks_num and free_me within the original size of the png_structs - and free_me, png_read_user_fn, and png_free_fn within the original png_info, - because some old applications allocate the structs directly instead of - using png_create_*(). - Added documentation of user memory functions in libpng.txt/libpng.3 - Modified png_read_png so that it will use user_allocated row_pointers - if present, unless free_me directs that it be freed, and added description - of the use of png_set_rows() and png_get_rows() in libpng.txt/libpng.3. - Added PNG_LEGACY_SUPPORTED macro, and #ifdef out all new (since version - 1.00) members of png_struct and png_info, to regain binary compatibility - when you define this macro. Capabilities lost in this event - are user transforms (new in version 1.0.0),the user transform pointer - (new in version 1.0.2), rgb_to_gray (new in 1.0.5), iCCP, sCAL, sPLT, - the high-level interface, and unknown chunks support (all new in 1.0.6). - This was necessary because of old applications that allocate the structs - directly as authors were instructed to do in libpng-0.88 and earlier, - instead of using png_create_*(). - Added modes PNG_CREATED_READ_STRUCT and PNG_CREATED_WRITE_STRUCT which - can be used to detect codes that directly allocate the structs, and - code to check these modes in png_read_init() and png_write_init() and - generate a libpng error if the modes aren't set and PNG_LEGACY_SUPPORTED - was not defined. - Added makefile.intel and updated makefile.watcom (Pawel Mrochen) - -Version 1.0.6j [May 3, 2000] - Overloaded png_read_init() and png_write_init() with macros that convert - calls to png_read_init_2() or png_write_init_2() that check the version - and structure sizes. - -Version 1.0.7beta11 [May 7, 2000] - Removed the new PNG_CREATED_READ_STRUCT and PNG_CREATED_WRITE_STRUCT modes - which are no longer used. - Eliminated the three new members of png_text when PNG_LEGACY_SUPPORTED is - defined or when neither PNG_READ_iTXt_SUPPORTED nor PNG_WRITE_iTXT_SUPPORTED - is defined. - Made PNG_NO_READ|WRITE_iTXt the default setting, to avoid memory - overrun when old applications fill the info_ptr->text structure directly. - Added PNGAPI macro, and added it to the definitions of all exported functions. - Relocated version macro definitions ahead of the includes of zlib.h and - pngconf.h in png.h. - -Version 1.0.7beta12 [May 12, 2000] - Revised pngset.c to avoid a problem with expanding the png_debug macro. - Deleted some extraneous defines from pngconf.h - Made PNG_NO_CONSOLE_IO the default condition when PNG_BUILD_DLL is defined. - Use MSC _RPTn debugging instead of fprintf if _MSC_VER is defined. - Added png_access_version_number() function. - Check for mask&PNG_FREE_CHNK (for TEXT, SCAL, PCAL) in png_free_data(). - Expanded libpng.3/libpng.txt information about png_data_freer(). - -Version 1.0.7beta14 [May 17, 2000] (beta13 was not published) - Changed pnggccrd.c and pngvcrd.c to handle bad adaptive filter types as - warnings instead of errors, as pngrutil.c does. - Set the PNG_INFO_IDAT valid flag in png_set_rows() so png_write_png() - will actually write IDATs. - Made the default PNG_USE_LOCAL_ARRAYS depend on PNG_DLL instead of WIN32. - Make png_free_data() ignore its final parameter except when freeing data - that can have multiple instances (text, sPLT, unknowns). - Fixed a new bug in png_set_rows(). - Removed info_ptr->valid tests from png_free_data(), as in version 1.0.5. - Added png_set_invalid() function. - Fixed incorrect illustrations of png_destroy_write_struct() in example.c. - -Version 1.0.7beta15 [May 30, 2000] - Revised the deliberately erroneous Linux setjmp code in pngconf.h to produce - fewer error messages. - Rearranged checks for Z_OK to check the most likely path first in pngpread.c - and pngwutil.c. - Added checks in pngtest.c for png_create_*() returning NULL, and mentioned - in libpng.txt/libpng.3 the need for applications to check this. - Changed names of png_default_*() functions in pngtest to pngtest_*(). - Changed return type of png_get_x|y_offset_*() from png_uint_32 to png_int_32. - Fixed some bugs in the unused PNG_INCH_CONVERSIONS functions in pngget.c - Set each pointer to NULL after freeing it in png_free_data(). - Worked around a problem in pngconf.h; AIX's strings.h defines an "index" - macro that conflicts with libpng's png_color_16.index. (Dimitri - Papadapoulos) - Added "msvc" directory with MSVC++ project files (Simon-Pierre Cadieux). - -Version 1.0.7beta16 [June 4, 2000] - Revised the workaround of AIX string.h "index" bug. - Added a check for overlength PLTE chunk in pngrutil.c. - Added PNG_NO_POINTER_INDEXING macro to use array-indexing instead of pointer - indexing in pngrutil.c and pngwutil.c to accommodate a buggy compiler. - Added a warning in png_decompress_chunk() when it runs out of data, e.g. - when it tries to read an erroneous PhotoShop iCCP chunk. - Added PNG_USE_DLL macro. - Revised the copyright/disclaimer/license notice. - Added contrib/msvctest directory - -Version 1.0.7rc1 [June 9, 2000] - Corrected the definition of PNG_TRANSFORM_INVERT_ALPHA (0x0400 not 0x0200) - Added contrib/visupng directory (Willem van Schaik) - -Version 1.0.7beta18 [June 23, 2000] - Revised PNGAPI definition, and pngvcrd.c to work with __GCC__ - and do not redefine PNGAPI if it is passed in via a compiler directive. - Revised visupng/PngFile.c to remove returns from within the Try block. - Removed leading underscores from "_PNG_H" and "_PNG_SAVE_BSD_SOURCE" macros. - Updated contrib/visupng/cexcept.h to version 1.0.0. - Fixed bugs in pngwrite.c and pngwutil.c that prevented writing iCCP chunks. - -Version 1.0.7rc2 [June 28, 2000] - Updated license to include disclaimers required by UCITA. - Fixed "DJBPP" typo in pnggccrd.c introduced in beta18. - -Version 1.0.7 [July 1, 2000] - Revised the definition of "trans_values" in libpng.3/libpng.txt - -Version 1.0.8beta1 [July 8, 2000] - Added png_free(png_ptr, key) two places in pngpread.c to stop memory leaks. - Changed PNG_NO_STDIO to PNG_NO_CONSOLE_IO, several places in pngrutil.c and - pngwutil.c. - Changed PNG_EXPORT_VAR to use PNG_IMPEXP, in pngconf.h. - Removed unused "#include " from png.c - Added WindowsCE support. - Revised pnggccrd.c to work with gcc-2.95.2 and in the Cygwin environment. - -Version 1.0.8beta2 [July 10, 2000] - Added project files to the wince directory and made further revisions - of pngtest.c, pngrio.c, and pngwio.c in support of WindowsCE. - -Version 1.0.8beta3 [July 11, 2000] - Only set the PNG_FLAG_FREE_TRNS or PNG_FREE_TRNS flag in png_handle_tRNS() - for indexed-color input files to avoid potential double-freeing trans array - under some unusual conditions; problem was introduced in version 1.0.6f. - Further revisions to pngtest.c and files in the wince subdirectory. - -Version 1.0.8beta4 [July 14, 2000] - Added the files pngbar.png and pngbar.jpg to the distribution. - Added makefile.cygwin, and cygwin support in pngconf.h - Added PNG_NO_ZALLOC_ZERO macro (makes png_zalloc skip zeroing memory) - -Version 1.0.8rc1 [July 16, 2000] - Revised png_debug() macros and statements to eliminate compiler warnings. - -Version 1.0.8 [July 24, 2000] - Added png_flush() in pngwrite.c, after png_write_IEND(). - Updated makefile.hpux to build a shared library. - -Version 1.0.9beta1 [November 10, 2000] - Fixed typo in scripts/makefile.hpux - Updated makevms.com in scripts and contrib/* and contrib/* (Martin Zinser) - Fixed seqence-point bug in contrib/pngminus/png2pnm (Martin Zinser) - Changed "cdrom.com" in documentation to "libpng.org" - Revised pnggccrd.c to get it all working, and updated makefile.gcmmx (Greg). - Changed type of "params" from voidp to png_voidp in png_read|write_png(). - Make sure PNGAPI and PNG_IMPEXP are defined in pngconf.h. - Revised the 3 instances of WRITEFILE in pngtest.c. - Relocated "msvc" and "wince" project subdirectories into "dll" subdirectory. - Updated png.rc in dll/msvc project - Revised makefile.dec to define and use LIBPATH and INCPATH - Increased size of global png_libpng_ver[] array from 12 to 18 chars. - Made global png_libpng_ver[], png_sig[] and png_pass_*[] arrays const. - Removed duplicate png_crc_finish() from png_handle_bKGD() function. - Added a warning when application calls png_read_update_info() multiple times. - Revised makefile.cygwin - Fixed bugs in iCCP support in pngrutil.c and pngwutil.c. - Replaced png_set_empty_plte_permitted() with png_permit_mng_features(). - -Version 1.0.9beta2 [November 19, 2000] - Renamed the "dll" subdirectory "projects". - Added borland project files to "projects" subdirectory. - Set VS_FF_PRERELEASE and VS_FF_PATCHED flags in msvc/png.rc when appropriate. - Add error message in png_set_compression_buffer_size() when malloc fails. - -Version 1.0.9beta3 [November 23, 2000] - Revised PNG_LIBPNG_BUILD_TYPE macro in png.h, used in the msvc project. - Removed the png_flush() in pngwrite.c that crashes some applications - that don't set png_output_flush_fn. - Added makefile.macosx and makefile.aix to scripts directory. - -Version 1.0.9beta4 [December 1, 2000] - Change png_chunk_warning to png_warning in png_check_keyword(). - Increased the first part of msg buffer from 16 to 18 in png_chunk_error(). - -Version 1.0.9beta5 [December 15, 2000] - Added support for filter method 64 (for PNG datastreams embedded in MNG). - -Version 1.0.9beta6 [December 18, 2000] - Revised png_set_filter() to accept filter method 64 when appropriate. - Added new PNG_HAVE_PNG_SIGNATURE bit to png_ptr->mode and use it to - help prevent applications from using MNG features in PNG datastreams. - Added png_permit_mng_features() function. - Revised libpng.3/libpng.txt. Changed "filter type" to "filter method". - -Version 1.0.9rc1 [December 23, 2000] - Revised test for PNG_HAVE_PNG_SIGNATURE in pngrutil.c - Fixed error handling of unknown compression type in png_decompress_chunk(). - In pngconf.h, define __cdecl when _MSC_VER is defined. - -Version 1.0.9beta7 [December 28, 2000] - Changed PNG_TEXT_COMPRESSION_zTXt to PNG_COMPRESSION_TYPE_BASE several places. - Revised memory management in png_set_hIST and png_handle_hIST in a backward - compatible manner. PLTE and tRNS were revised similarly. - Revised the iCCP chunk reader to ignore trailing garbage. - -Version 1.0.9beta8 [January 12, 2001] - Moved pngasmrd.h into pngconf.h. - Improved handling of out-of-spec garbage iCCP chunks generated by PhotoShop. - -Version 1.0.9beta9 [January 15, 2001] - Added png_set_invalid, png_permit_mng_features, and png_mmx_supported to - wince and msvc project module definition files. - Minor revision of makefile.cygwin. - Fixed bug with progressive reading of narrow interlaced images in pngpread.c - -Version 1.0.9beta10 [January 16, 2001] - Do not typedef png_FILE_p in pngconf.h when PNG_NO_STDIO is defined. - Fixed "png_mmx_supported" typo in project definition files. - -Version 1.0.9beta11 [January 19, 2001] - Updated makefile.sgi to make shared library. - Removed png_mmx_support() function and disabled PNG_MNG_FEATURES_SUPPORTED - by default, for the benefit of DLL forward compatibility. These will - be re-enabled in version 1.2.0. - -Version 1.0.9rc2 [January 22, 2001] - Revised cygwin support. - -Version 1.0.9 [January 31, 2001] - Added check of cygwin's ALL_STATIC in pngconf.h - Added "-nommx" parameter to contrib/gregbook/rpng2-win and rpng2-x demos. - -Version 1.0.10beta1 [March 14, 2001] - Revised makefile.dec, makefile.sgi, and makefile.sggcc; added makefile.hpgcc. - Reformatted libpng.3 to eliminate bad line breaks. - Added checks for _mmx_supported in the read_filter_row function of pnggccrd.c - Added prototype for png_mmx_support() near the top of pnggccrd.c - Moved some error checking from png_handle_IHDR to png_set_IHDR. - Added PNG_NO_READ_SUPPORTED and PNG_NO_WRITE_SUPPORTED macros. - Revised png_mmx_support() function in pnggccrd.c - Restored version 1.0.8 PNG_WRITE_EMPTY_PLTE_SUPPORTED behavior in pngwutil.c - Fixed memory leak in contrib/visupng/PngFile.c - Fixed bugs in png_combine_row() in pnggccrd.c and pngvcrd.c (C version) - Added warnings when retrieving or setting gamma=0. - Increased the first part of msg buffer from 16 to 18 in png_chunk_warning(). - -Version 1.0.10rc1 [March 23, 2001] - Changed all instances of memcpy, strcpy, and strlen to png_memcpy, png_strcpy, - and png_strlen. - Revised png_mmx_supported() function in pnggccrd.c to return proper value. - Fixed bug in progressive reading (pngpread.c) with small images (height < 8). - -Version 1.0.10 [March 30, 2001] - Deleted extraneous space (introduced in 1.0.9) from line 42 of makefile.cygwin - Added beos project files (Chris Herborth) - -Version 1.0.11beta1 [April 3, 2001] - Added type casts on several png_malloc() calls (Dimitri Papadapoulos). - Removed a no-longer needed AIX work-around from pngconf.h - Changed several "//" single-line comments to C-style in pnggccrd.c - -Version 1.0.11beta2 [April 11, 2001] - Removed PNGAPI from several functions whose prototypes did not have PNGAPI. - Updated scripts/pngos2.def - -Version 1.0.11beta3 [April 14, 2001] - Added checking the results of many instances of png_malloc() for NULL - -Version 1.0.11beta4 [April 20, 2001] - Undid the changes from version 1.0.11beta3. Added a check for NULL return - from user's malloc_fn(). - Removed some useless type casts of the NULL pointer. - Added makefile.netbsd - -Version 1.0.11 [April 27, 2001] - Revised makefile.netbsd - -Version 1.0.12beta1 [May 14, 2001] - Test for Windows platform in pngconf.h when including malloc.h (Emmanuel Blot) - Updated makefile.cygwin and handling of Cygwin's ALL_STATIC in pngconf.h - Added some never-to-be-executed code in pnggccrd.c to quiet compiler warnings. - Eliminated the png_error about apps using png_read|write_init(). Instead, - libpng will reallocate the png_struct and info_struct if they are too small. - This retains future binary compatibility for old applications written for - libpng-0.88 and earlier. - -Version 1.2.0beta1 [May 6, 2001] - Bumped DLLNUM to 2. - Re-enabled PNG_MNG_FEATURES_SUPPORTED and enabled PNG_ASSEMBLER_CODE_SUPPORTED - by default. - Added runtime selection of MMX features. - Added png_set_strip_error_numbers function and related macros. - -Version 1.2.0beta2 [May 7, 2001] - Finished merging 1.2.0beta1 with version 1.0.11 - Added a check for attempts to read or write PLTE in grayscale PNG datastreams. - -Version 1.2.0beta3 [May 17, 2001] - Enabled user memory function by default. - Modified png_create_struct so it passes user mem_ptr to user memory allocator. - Increased png_mng_features flag from png_byte to png_uint_32. - Bumped shared-library (so-number) and dll-number to 3. - -Version 1.2.0beta4 [June 23, 2001] - Check for missing profile length field in iCCP chunk and free chunk_data - in case of truncated iCCP chunk. - Bumped shared-library number to 3 in makefile.sgi and makefile.sggcc - Bumped dll-number from 2 to 3 in makefile.cygwin - Revised contrib/gregbook/rpng*-x.c to avoid a memory leak and to exit cleanly - if user attempts to run it on an 8-bit display. - Updated contrib/gregbook - Use png_malloc instead of png_zalloc to allocate palette in pngset.c - Updated makefile.ibmc - Added some typecasts to eliminate gcc 3.0 warnings. Changed prototypes - of png_write_oFFS width and height from png_uint_32 to png_int_32. - Updated example.c - Revised prototypes for png_debug_malloc and png_debug_free in pngtest.c - -Version 1.2.0beta5 [August 8, 2001] - Revised contrib/gregbook - Revised makefile.gcmmx - Revised pnggccrd.c to conditionally compile some thread-unsafe code only - when PNG_THREAD_UNSAFE_OK is defined. - Added tests to prevent pngwutil.c from writing a bKGD or tRNS chunk with - value exceeding 2^bit_depth-1 - Revised makefile.sgi and makefile.sggcc - Replaced calls to fprintf(stderr,...) with png_warning() in pnggccrd.c - Removed restriction that do_invert_mono only operate on 1-bit opaque files - -Version 1.2.0 [September 1, 2001] - Changed a png_warning() to png_debug() in pnggccrd.c - Fixed contrib/gregbook/rpng-x.c, rpng2-x.c to avoid crash with XFreeGC(). - -Version 1.2.1beta1 [October 19, 2001] - Revised makefile.std in contrib/pngminus - Include background_1 in png_struct regardless of gamma support. - Revised makefile.netbsd and makefile.macosx, added makefile.darwin. - Revised example.c to provide more details about using row_callback(). - -Version 1.2.1beta2 [October 25, 2001] - Added type cast to each NULL appearing in a function call, except for - WINCE functions. - Added makefile.so9. - -Version 1.2.1beta3 [October 27, 2001] - Removed type casts from all NULLs. - Simplified png_create_struct_2(). - -Version 1.2.1beta4 [November 7, 2001] - Revised png_create_info_struct() and png_creat_struct_2(). - Added error message if png_write_info() was omitted. - Type cast NULLs appearing in function calls when _NO_PROTO or - PNG_TYPECAST_NULL is defined. - -Version 1.2.1rc1 [November 24, 2001] - Type cast NULLs appearing in function calls except when PNG_NO_TYPECAST_NULL - is defined. - Changed typecast of "size" argument to png_size_t in pngmem.c calls to - the user malloc_fn, to agree with the prototype in png.h - Added a pop/push operation to pnggccrd.c, to preserve Eflag (Maxim Sobolev) - Updated makefile.sgi to recognize LIBPATH and INCPATH. - Updated various makefiles so "make clean" does not remove previous major - version of the shared library. - -Version 1.2.1rc2 [December 4, 2001] - Always allocate 256-entry internal palette, hist, and trans arrays, to - avoid out-of-bounds memory reference caused by invalid PNG datastreams. - Added a check for prefix_length > data_length in iCCP chunk handler. - -Version 1.2.1 [December 7, 2001] - None. - -Version 1.2.2beta1 [February 22, 2002] - Fixed a bug with reading the length of iCCP profiles (Larry Reeves). - Revised makefile.linux, makefile.gcmmx, and makefile.sgi to generate - libpng.a, libpng12.so (not libpng.so.3), and libpng12/png.h - Revised makefile.darwin to remove "-undefined suppress" option. - Added checks for gamma and chromaticity values over 21474.83, which exceed - the limit for PNG unsigned 32-bit integers when encoded. - Revised calls to png_create_read_struct() and png_create_write_struct() - for simpler debugging. - Revised png_zalloc() so zlib handles errors (uses PNG_FLAG_MALLOC_NULL_MEM_OK) - -Version 1.2.2beta2 [February 23, 2002] - Check chunk_length and idat_size for invalid (over PNG_MAX_UINT) lengths. - Check for invalid image dimensions in png_get_IHDR. - Added missing "fi;" in the install target of the SGI makefiles. - Added install-static to all makefiles that make shared libraries. - Always do gamma compensation when image is partially transparent. - -Version 1.2.2beta3 [March 7, 2002] - Compute background.gray and background_1.gray even when color_type is RGB - in case image gets reduced to gray later. - Modified shared-library makefiles to install pkgconfig/libpngNN.pc. - Export (with PNGAPI) png_zalloc, png_zfree, and png_handle_as_unknown - Removed unused png_write_destroy_info prototype from png.h - Eliminated incorrect use of width_mmx from pnggccrd.c in pixel_bytes == 8 case - Added install-shared target to all makefiles that make shared libraries. - Stopped a double free of palette, hist, and trans when not using free_me. - Added makefile.32sunu for Sun Ultra 32 and makefile.64sunu for Sun Ultra 64. - -Version 1.2.2beta4 [March 8, 2002] - Compute background.gray and background_1.gray even when color_type is RGB - in case image gets reduced to gray later (Jason Summers). - Relocated a misplaced /bin/rm in the "install-shared" makefile targets - Added PNG_1_0_X macro which can be used to build a 1.0.x-compatible library. - -Version 1.2.2beta5 [March 26, 2002] - Added missing PNGAPI to several function definitions. - Check for invalid bit_depth or color_type in png_get_IHDR(), and - check for missing PLTE or IHDR in png_push_read_chunk() (Matthias Clasen). - Revised iTXt support to accept NULL for lang and lang_key. - Compute gamma for color components of background even when color_type is gray. - Changed "()" to "{}" in scripts/libpng.pc.in. - Revised makefiles to put png.h and pngconf.h only in $prefix/include/libpngNN - Revised makefiles to make symlink to libpng.so.NN in addition to libpngNN.so - -Version 1.2.2beta6 [March 31, 2002] - -Version 1.0.13beta1 [March 31, 2002] - Prevent png_zalloc() from trying to memset memory that it failed to acquire. - Add typecasts of PNG_MAX_UINT in pngset_cHRM_fixed() (Matt Holgate). - Ensure that the right function (user or default) is used to free the - png_struct after an error in png_create_read_struct_2(). - -Version 1.2.2rc1 [April 7, 2002] - -Version 1.0.13rc1 [April 7, 2002] - Save the ebx register in pnggccrd.c (Sami Farin) - Add "mem_ptr = png_ptr->mem_ptr" in png_destroy_write_struct() (Paul Gardner). - Updated makefiles to put headers in include/libpng and remove old include/*.h. - -Version 1.2.2 [April 15, 2002] - -Version 1.0.13 [April 15, 2002] - Revised description of png_set_filter() in libpng.3/libpng.txt. - Revised makefile.netbsd and added makefile.neNNbsd and makefile.freebsd - -Version 1.0.13patch01 [April 17, 2002] - -Version 1.2.2patch01 [April 17, 2002] - Changed ${PNGMAJ}.${PNGVER} bug to ${PNGVER} in makefile.sgi and - makefile.sggcc - Fixed VER -> PNGVER typo in makefile.macosx and added install-static to - install - Added install: target to makefile.32sunu and makefile.64sunu - -Version 1.0.13patch03 [April 18, 2002] - -Version 1.2.2patch03 [April 18, 2002] - Revised 15 makefiles to link libpng.a to libpngNN.a and the include libpng - subdirectory to libpngNN subdirectory without the full pathname. - Moved generation of libpng.pc from "install" to "all" in 15 makefiles. - -Version 1.2.3rc1 [April 28, 2002] - Added install-man target to 15 makefiles (Dimitri Papadopolous-Orfanos). - Added $(DESTDIR) feature to 24 makefiles (Tim Mooney) - Fixed bug with $prefix, should be $(prefix) in makefile.hpux. - Updated cygwin-specific portion of pngconf.h and revised makefile.cygwin - Added a link from libpngNN.pc to libpng.pc in 15 makefiles. - Added links from include/libpngNN/*.h to include/*.h in 24 makefiles. - Revised makefile.darwin to make relative links without full pathname. - Added setjmp() at the end of png_create_*_struct_2() in case user forgets - to put one in their application. - Restored png_zalloc() and png_zfree() prototypes to version 1.2.1 and - removed them from module definition files. - -Version 1.2.3rc2 [May 1, 2002] - Fixed bug in reporting number of channels in pngget.c and pngset.c, - that was introduced in version 1.2.2beta5. - Exported png_zalloc(), png_zfree(), png_default_read(), png_default_write(), - png_default_flush(), and png_push_fill_buffer() and included them in - module definition files. - Added "libpng.pc" dependency to the "install-shared" target in 15 makefiles. - -Version 1.2.3rc3 [May 1, 2002] - Revised prototype for png_default_flush() - Remove old libpng.pc and libpngNN.pc before installing new ones. - -Version 1.2.3rc4 [May 2, 2002] - Typos in *.def files (png_default_read|write -> png_default_read|write_data) - In makefiles, changed rm libpng.NN.pc to rm libpngNN.pc - Added libpng-config and libpngNN-config and modified makefiles to install - them. - Changed $(MANPATH) to $(DESTDIR)$(MANPATH) in makefiles - Added "Win32 DLL VB" configuration to projects/msvc/libpng.dsp - -Version 1.2.3rc5 [May 11, 2002] - Changed "error" and "message" in prototypes to "error_message" and - "warning_message" to avoid namespace conflict. - Revised 15 makefiles to build libpng-config from libpng-config-*.in - Once more restored png_zalloc and png_zfree to regular nonexported form. - Restored png_default_read|write_data, png_default_flush, png_read_fill_buffer - to nonexported form, but with PNGAPI, and removed them from module def - files. - -Version 1.2.3rc6 [May 14, 2002] - Removed "PNGAPI" from png_zalloc() and png_zfree() in png.c - Changed "Gz" to "Gd" in projects/msvc/libpng.dsp and zlib.dsp. - Removed leftover libpng-config "sed" script from four makefiles. - Revised libpng-config creating script in 16 makefiles. - -Version 1.2.3 [May 22, 2002] - Revised libpng-config target in makefile.cygwin. - Removed description of png_set_mem_fn() from documentation. - Revised makefile.freebsd. - Minor cosmetic changes to 15 makefiles, e.g., $(DI) = $(DESTDIR)/$(INCDIR). - Revised projects/msvc/README.txt - Changed -lpng to -lpngNN in LDFLAGS in several makefiles. - -Version 1.2.4beta1 [May 24, 2002] - Added libpng.pc and libpng-config to "all:" target in 16 makefiles. - Fixed bug in 16 makefiles: $(DESTDIR)/$(LIBPATH) to $(DESTDIR)$(LIBPATH) - Added missing "\" before closing double quote in makefile.gcmmx. - Plugged various memory leaks; added png_malloc_warn() and png_set_text_2() - functions. - -Version 1.2.4beta2 [June 25, 2002] - Plugged memory leak of png_ptr->current_text (Matt Holgate). - Check for buffer overflow before reading CRC in pngpread.c (Warwick Allison) - Added -soname to the loader flags in makefile.dec, makefile.sgi, and - makefile.sggcc. - Added "test-installed" target to makefile.linux, makefile.gcmmx, - makefile.sgi, and makefile.sggcc. - -Version 1.2.4beta3 [June 28, 2002] - Plugged memory leak of row_buf in pngtest.c when there is a png_error(). - Detect buffer overflow in pngpread.c when IDAT is corrupted with extra data. - Added "test-installed" target to makefile.32sunu, makefile.64sunu, - makefile.beos, makefile.darwin, makefile.dec, makefile.macosx, - makefile.solaris, makefile.hpux, makefile.hpgcc, and makefile.so9. - -Version 1.2.4rc1 and 1.0.14rc1 [July 2, 2002] - Added "test-installed" target to makefile.cygwin and makefile.sco. - Revised pnggccrd.c to be able to back out version 1.0.x via PNG_1_0_X macro. - -Version 1.2.4 and 1.0.14 [July 8, 2002] - Changed png_warning() to png_error() when width is too large to process. - -Version 1.2.4patch01 [July 20, 2002] - Revised makefile.cygwin to use DLL number 12 instead of 13. - -Version 1.2.5beta1 [August 6, 2002] - Added code to contrib/gregbook/readpng2.c to ignore unused chunks. - Replaced toucan.png in contrib/gregbook (it has been corrupt since 1.0.11) - Removed some stray *.o files from contrib/gregbook. - Changed png_error() to png_warning() about "Too much data" in pngpread.c - and about "Extra compressed data" in pngrutil.c. - Prevent png_ptr->pass from exceeding 7 in png_push_finish_row(). - Updated makefile.hpgcc - Updated png.c and pnggccrd.c handling of return from png_mmx_support() - -Version 1.2.5beta2 [August 15, 2002] - Only issue png_warning() about "Too much data" in pngpread.c when avail_in - is nonzero. - Updated makefiles to install a separate libpng.so.3 with its own rpath. - -Version 1.2.5rc1 and 1.0.15rc1 [August 24, 2002] - Revised makefiles to not remove previous minor versions of shared libraries. - -Version 1.2.5rc2 and 1.0.15rc2 [September 16, 2002] - Revised 13 makefiles to remove "-lz" and "-L$(ZLIBLIB)", etc., from shared - library loader directive. - Added missing "$OBJSDLL" line to makefile.gcmmx. - Added missing "; fi" to makefile.32sunu. - -Version 1.2.5rc3 and 1.0.15rc3 [September 18, 2002] - Revised libpng-config script. - -Version 1.2.5 and 1.0.15 [October 3, 2002] - Revised makefile.macosx, makefile.darwin, makefile.hpgcc, and makefile.hpux, - and makefile.aix. - Relocated two misplaced PNGAPI lines in pngtest.c - -Version 1.2.6beta1 [October 22, 2002] - Commented out warning about uninitialized mmx_support in pnggccrd.c. - Changed "IBMCPP__" flag to "__IBMCPP__" in pngconf.h. - Relocated two more misplaced PNGAPI lines in pngtest.c - Fixed memory overrun bug in png_do_read_filler() with 16-bit datastreams, - introduced in version 1.0.2. - Revised makefile.macosx, makefile.dec, makefile.aix, and makefile.32sunu. - -Version 1.2.6beta2 [November 1, 2002] - Added libpng-config "--ldopts" output. - Added "AR=ar" and "ARFLAGS=rc" and changed "ar rc" to "$(AR) $(ARFLAGS)" - in makefiles. - -Version 1.2.6beta3 [July 18, 2004] - Reverted makefile changes from version 1.2.6beta2 and some of the changes - from version 1.2.6beta1; these will be postponed until version 1.2.7. - Version 1.2.6 is going to be a simple bugfix release. - Changed the one instance of "ln -sf" to "ln -f -s" in each Sun makefile. - Fixed potential overrun in pngerror.c by using strncpy instead of memcpy. - Added "#!/bin/sh" at the top of configure, for recognition of the - 'x' flag under Cygwin (Cosmin). - Optimized vacuous tests that silence compiler warnings, in png.c (Cosmin). - Added support for PNG_USER_CONFIG, in pngconf.h (Cosmin). - Fixed the special memory handler for Borland C under DOS, in pngmem.c - (Cosmin). - Removed some spurious assignments in pngrutil.c (Cosmin). - Replaced 65536 with 65536L, and 0xffff with 0xffffL, to silence warnings - on 16-bit platforms (Cosmin). - Enclosed shift op expressions in parentheses, to silence warnings (Cosmin). - Used proper type png_fixed_point, to avoid problems on 16-bit platforms, - in png_handle_sRGB() (Cosmin). - Added compression_type to png_struct, and optimized the window size - inside the deflate stream (Cosmin). - Fixed definition of isnonalpha(), in pngerror.c and pngrutil.c (Cosmin). - Fixed handling of unknown chunks that come after IDAT (Cosmin). - Allowed png_error() and png_warning() to work even if png_ptr == NULL - (Cosmin). - Replaced row_info->rowbytes with row_bytes in png_write_find_filter() - (Cosmin). - Fixed definition of PNG_LIBPNG_VER_DLLNUM (Simon-Pierre). - Used PNG_LIBPNG_VER and PNG_LIBPNG_VER_STRING instead of the hardcoded - values in png.c (Simon-Pierre, Cosmin). - Initialized png_libpng_ver[] with PNG_LIBPNG_VER_STRING (Simon-Pierre). - Replaced PNG_LIBPNG_VER_MAJOR with PNG_LIBPNG_VER_DLLNUM in png.rc - (Simon-Pierre). - Moved the definition of PNG_HEADER_VERSION_STRING near the definitions - of the other PNG_LIBPNG_VER_... symbols in png.h (Cosmin). - Relocated #ifndef PNGAPI guards in pngconf.h (Simon-Pierre, Cosmin). - Updated scripts/makefile.vc(a)win32 (Cosmin). - Updated the MSVC project (Simon-Pierre, Cosmin). - Updated the Borland C++ Builder project (Cosmin). - Avoided access to asm_flags in pngvcrd.c, if PNG_1_0_X is defined (Cosmin). - Commented out warning about uninitialized mmx_support in pngvcrd.c (Cosmin). - Removed scripts/makefile.bd32 and scripts/pngdef.pas (Cosmin). - Added extra guard around inclusion of Turbo C memory headers, in pngconf.h - (Cosmin). - Renamed projects/msvc/ to projects/visualc6/, and projects/borland/ to - projects/cbuilder5/ (Cosmin). - Moved projects/visualc6/png32ms.def to scripts/pngw32.def, - and projects/visualc6/png.rc to scripts/pngw32.rc (Cosmin). - Added projects/visualc6/pngtest.dsp; removed contrib/msvctest/ (Cosmin). - Changed line endings to DOS style in cbuilder5 and visualc6 files, even - in the tar.* distributions (Cosmin). - Updated contrib/visupng/VisualPng.dsp (Cosmin). - Updated contrib/visupng/cexcept.h to version 2.0.0 (Cosmin). - Added a separate distribution with "configure" and supporting files (Junichi). - -Version 1.2.6beta4 [July 28, 2004] - Added user ability to change png_size_t via a PNG_SIZE_T macro. - Added png_sizeof() and png_convert_size() functions. - Added PNG_SIZE_MAX (maximum value of a png_size_t variable. - Added check in png_malloc_default() for (size_t)size != (png_uint_32)size - which would indicate an overflow. - Changed sPLT failure action from png_error to png_warning and abandon chunk. - Changed sCAL and iCCP failures from png_error to png_warning and abandon. - Added png_get_uint_31(png_ptr, buf) function. - Added PNG_UINT_32_MAX macro. - Renamed PNG_MAX_UINT to PNG_UINT_31_MAX. - Made png_zalloc() issue a png_warning and return NULL on potential - overflow. - Turn on PNG_NO_ZALLOC_ZERO by default in version 1.2.x - Revised "clobber list" in pnggccrd.c so it will compile under gcc-3.4. - Revised Borland portion of png_malloc() to return NULL or issue - png_error() according to setting of PNG_FLAG_MALLOC_NULL_MEM_OK. - Added PNG_NO_SEQUENTIAL_READ_SUPPORTED macro to conditionally remove - sequential read support. - Added some "#if PNG_WRITE_SUPPORTED" blocks. - Added #ifdef to remove some redundancy in png_malloc_default(). - Use png_malloc instead of png_zalloc to allocate the pallete. - -Version 1.0.16rc1 and 1.2.6rc1 [August 4, 2004] - Fixed buffer overflow vulnerability in png_handle_tRNS() - Fixed integer arithmetic overflow vulnerability in png_read_png(). - Fixed some harmless bugs in png_handle_sBIT, etc, that would cause - duplicate chunk types to go undetected. - Fixed some timestamps in the -config version - Rearranged order of processing of color types in png_handle_tRNS(). - Added ROWBYTES macro to calculate rowbytes without integer overflow. - Updated makefile.darwin and removed makefile.macosx from scripts directory. - Imposed default one million column, one-million row limits on the image - dimensions, and added png_set_user_limits() function to override them. - Revised use of PNG_SET_USER_LIMITS_SUPPORTED macro. - Fixed wrong cast of returns from png_get_user_width|height_max(). - Changed some "keep the compiler happy" from empty statements to returns, - Revised libpng.txt to remove 1.2.x stuff from the 1.0.x distribution - -Version 1.0.16rc2 and 1.2.6rc2 [August 7, 2004] - Revised makefile.darwin and makefile.solaris. Removed makefile.macosx. - Revised pngtest's png_debug_malloc() to use png_malloc() instead of - png_malloc_default() which is not supposed to be exported. - Fixed off-by-one error in one of the conversions to PNG_ROWBYTES() in - pngpread.c. Bug was introduced in 1.2.6rc1. - Fixed bug in RGB to RGBX transformation introduced in 1.2.6rc1. - Fixed old bug in RGB to Gray transformation. - Fixed problem with 64-bit compilers by casting arguments to abs() - to png_int_32. - Changed "ln -sf" to "ln -f -s" in three makefiles (solaris, sco, so9). - Changed "HANDLE_CHUNK_*" to "PNG_HANDLE_CHUNK_*" (Cosmin) - Added "-@/bin/rm -f $(DL)/$(LIBNAME).so.$(PNGMAJ)" to 15 *NIX makefiles. - Added code to update the row_info->colortype in png_do_read_filler() (MSB). - -Version 1.0.16rc3 and 1.2.6rc3 [August 9, 2004] - Eliminated use of "abs()" in testing cHRM and gAMA values, to avoid - trouble with some 64-bit compilers. Created PNG_OUT_OF_RANGE() macro. - Revised documentation of png_set_keep_unknown_chunks(). - Check handle_as_unknown status in pngpread.c, as in pngread.c previously. - Moved "PNG_HANDLE_CHUNK_*" macros out of PNG_INTERNAL section of png.h - Added "rim" definitions for CONST4 and CONST6 in pnggccrd.c - -Version 1.0.16rc4 and 1.2.6rc4 [August 10, 2004] - Fixed mistake in pngtest.c introduced in 1.2.6rc2 (declaration of - "pinfo" was out of place). - -Version 1.0.16rc5 and 1.2.6rc5 [August 10, 2004] - Moved "PNG_HANDLE_CHUNK_*" macros out of PNG_ASSEMBLER_CODE_SUPPORTED - section of png.h where they were inadvertently placed in version rc3. - -Version 1.2.6 and 1.0.16 [August 15, 2004] - Revised pngtest so memory allocation testing is only done when PNG_DEBUG==1. - -Version 1.2.7beta1 [August 26, 2004] - Removed unused pngasmrd.h file. - Removed references to uu.net for archived files. Added references to - PNG Spec (second edition) and the PNG ISO/IEC Standard. - Added "test-dd" target in 15 makefiles, to run pngtest in DESTDIR. - Fixed bug with "optimized window size" in the IDAT datastream, that - causes libpng to write PNG files with incorrect zlib header bytes. - -Version 1.2.7beta2 [August 28, 2004] - Fixed bug with sCAL chunk and big-endian machines (David Munro). - Undid new code added in 1.2.6rc2 to update the color_type in - png_set_filler(). - Added png_set_add_alpha() that updates color type. - -Version 1.0.17rc1 and 1.2.7rc1 [September 4, 2004] - Revised png_set_strip_filler() to not remove alpha if color_type has alpha. - -Version 1.2.7 and 1.0.17 [September 12, 2004] - Added makefile.hp64 - Changed projects/msvc/png32ms.def to scripts/png32ms.def in makefile.cygwin - -Version 1.2.8beta1 [November 1, 2004] - Fixed bug in png_text_compress() that would fail to complete a large block. - Fixed bug, introduced in libpng-1.2.7, that overruns a buffer during - strip alpha operation in png_do_strip_filler(). - Added PNG_1_2_X definition in pngconf.h - Use #ifdef to comment out png_info_init in png.c and png_read_init in - pngread.c (as of 1.3.0) - -Version 1.2.8beta2 [November 2, 2004] - Reduce color_type to a nonalpha type after strip alpha operation in - png_do_strip_filler(). - -Version 1.2.8beta3 [November 3, 2004] - Revised definitions of PNG_MAX_UINT_32, PNG_MAX_SIZE, and PNG_MAXSUM - -Version 1.2.8beta4 [November 12, 2004] - Fixed (again) definition of PNG_LIBPNG_VER_DLLNUM in png.h (Cosmin). - Added PNG_LIBPNG_BUILD_PRIVATE in png.h (Cosmin). - Set png_ptr->zstream.data_type to Z_BINARY, to avoid unnecessary detection - of data type in deflate (Cosmin). - Deprecated but continue to support SPECIALBUILD and PRIVATEBUILD in favor of - PNG_LIBPNG_BUILD_SPECIAL_STRING and PNG_LIBPNG_BUILD_PRIVATE_STRING. - -Version 1.2.8beta5 [November 20, 2004] - Use png_ptr->flags instead of png_ptr->transformations to pass - PNG_STRIP_ALPHA info to png_do_strip_filler(), to preserve ABI - compatibility. - Revised handling of SPECIALBUILD, PRIVATEBUILD, - PNG_LIBPNG_BUILD_SPECIAL_STRING and PNG_LIBPNG_BUILD_PRIVATE_STRING. - -Version 1.2.8rc1 [November 24, 2004] - Moved handling of BUILD macros from pngconf.h to png.h - Added definition of PNG_LIBPNG_BASE_TYPE in png.h, inadvertently - omitted from beta5. - Revised scripts/pngw32.rc - Despammed mailing addresses by masking "@" with "at". - Inadvertently installed a supposedly faster test version of pngrutil.c - -Version 1.2.8rc2 [November 26, 2004] - Added two missing "\" in png.h - Change tests in pngread.c and pngpread.c to - if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA)) - png_do_read_transformations(png_ptr); - -Version 1.2.8rc3 [November 28, 2004] - Reverted pngrutil.c to version libpng-1.2.8beta5. - Added scripts/makefile.elf with supporting code in pngconf.h for symbol - versioning (John Bowler). - -Version 1.2.8rc4 [November 29, 2004] - Added projects/visualc7 (Simon-pierre). - -Version 1.2.8rc5 [November 29, 2004] - Fixed new typo in scripts/pngw32.rc - -Version 1.2.8 [December 3, 2004] - Removed projects/visualc7, added projects/visualc71. - -Version 1.2.9beta1 [February 21, 2006] - Initialized some structure members in pngwutil.c to avoid gcc-4.0.0 complaints - Revised man page and libpng.txt to make it clear that one should not call - png_read_end or png_write_end after png_read_png or png_write_png. - Updated references to png-mng-implement mailing list. - Fixed an incorrect typecast in pngrutil.c - Added PNG_NO_READ_SUPPORTED conditional for making a write-only library. - Added PNG_NO_WRITE_INTERLACING_SUPPORTED conditional. - Optimized alpha-inversion loops in pngwtran.c - Moved test for nonzero gamma outside of png_build_gamma_table() in pngrtran.c - Make sure num_trans is <= 256 before copying data in png_set_tRNS(). - Make sure num_palette is <= 256 before copying data in png_set_PLTE(). - Interchanged order of write_swap_alpha and write_invert_alpha transforms. - Added parentheses in the definition of PNG_LIBPNG_BUILD_TYPE (Cosmin). - Optimized zlib window flag (CINFO) in contrib/pngsuite/*.png (Cosmin). - Updated scripts/makefile.bc32 for Borland C++ 5.6 (Cosmin). - Exported png_get_uint_32, png_save_uint_32, png_get_uint_16, png_save_uint_16, - png_get_int_32, png_save_int_32, png_get_uint_31 (Cosmin). - Added type cast (png_byte) in png_write_sCAL() (Cosmin). - Fixed scripts/makefile.cygwin (Christian Biesinger, Cosmin). - Default iTXt support was inadvertently enabled. - -Version 1.2.9beta2 [February 21, 2006] - Check for png_rgb_to_gray and png_gray_to_rgb read transformations before - checking for png_read_dither in pngrtran.c - Revised checking of chromaticity limits to accommodate extended RGB - colorspace (John Denker). - Changed line endings in some of the project files to CRLF, even in the - "Unix" tar distributions (Cosmin). - Made png_get_int_32 and png_save_int_32 always available (Cosmin). - Updated scripts/pngos2.def, scripts/pngw32.def and projects/wince/png32ce.def - with the newly exported functions. - Eliminated distributions without the "configure" script. - Updated INSTALL instructions. - -Version 1.2.9beta3 [February 24, 2006] - Fixed CRCRLF line endings in contrib/visupng/VisualPng.dsp - Made libpng.pc respect EXEC_PREFIX (D. P. Kreil, J. Bowler) - Removed reference to pngasmrd.h from Makefile.am - Renamed CHANGES to ChangeLog. - Renamed LICENSE to COPYING. - Renamed ANNOUNCE to NEWS. - Created AUTHORS file. - -Version 1.2.9beta4 [March 3, 2006] - Changed definition of PKGCONFIG from $prefix/lib to $libdir in configure.ac - Reverted to filenames LICENSE and ANNOUNCE; removed AUTHORS and COPYING. - Removed newline from the end of some error and warning messages. - Removed test for sqrt() from configure.ac and configure. - Made swap tables in pngtrans.c PNG_CONST (Carlo Bramix). - Disabled default iTXt support that was inadvertently enabled in - libpng-1.2.9beta1. - Added "OS2" to list of systems that don't need underscores, in pnggccrd.c - Removed libpng version and date from *.c files. - -Version 1.2.9beta5 [March 4, 2006] - Removed trailing blanks from source files. - Put version and date of latest change in each source file, and changed - copyright year accordingly. - More cleanup of configure.ac, Makefile.am, and associated scripts. - Restored scripts/makefile.elf which was inadvertently deleted. - -Version 1.2.9beta6 [March 6, 2006] - Fixed typo (RELEASE) in configuration files. - -Version 1.2.9beta7 [March 7, 2006] - Removed libpng.vers and libpng.sym from libpng12_la_SOURCES in Makefile.am - Fixed inconsistent #ifdef's around png_sig_bytes() and png_set_sCAL_s() - in png.h. - Updated makefile.elf as suggested by debian. - Made cosmetic changes to some makefiles, adding LN_SF and other macros. - Made some makefiles accept "exec_prefix". - -Version 1.2.9beta8 [March 9, 2006] - Fixed some "#if defined (..." which should be "#if defined(..." - Bug introduced in libpng-1.2.8. - Fixed inconsistency in definition of png_default_read_data() - Restored blank that was lost from makefile.sggcc "clean" target in beta7. - Revised calculation of "current" and "major" for irix in ltmain.sh - Changed "mkdir" to "MKDIR_P" in some makefiles. - Separated PNG_EXPAND and PNG_EXPAND_tRNS. - Added png_set_expand_gray_1_2_4_to_8() and deprecated - png_set_gray_1_2_4_to_8() which also expands tRNS to alpha. - -Version 1.2.9beta9 [March 10, 2006] - Include "config.h" in pngconf.h when available. - Added some checks for NULL png_ptr or NULL info_ptr (timeless) - -Version 1.2.9beta10 [March 20, 2006] - Removed extra CR from contrib/visualpng/VisualPng.dsw (Cosmin) - Made pnggccrd.c PIC-compliant (Christian Aichinger). - Added makefile.mingw (Wolfgang Glas). - Revised pngconf.h MMX checking. - -Version 1.2.9beta11 [March 22, 2006] - Fixed out-of-order declaration in pngwrite.c that was introduced in beta9 - Simplified some makefiles by using LIBSO, LIBSOMAJ, and LIBSOVER macros. - -Version 1.2.9rc1 [March 31, 2006] - Defined PNG_USER_PRIVATEBUILD when including "pngusr.h" (Cosmin). - Removed nonsensical assertion check from pngtest.c (Cosmin). - -Version 1.2.9 [April 14, 2006] - Revised makefile.beos and added "none" selector in ltmain.sh - -Version 1.2.10beta1 [April 15, 2006] - Renamed "config.h" to "png_conf.h" and revised Makefile.am to add - -DPNG_BUILDING_LIBPNG to compile directive, and modified pngconf.h - to include png_conf.h only when PNG_BUILDING_LIBPNG is defined. - -Version 1.2.10beta2 [April 15, 2006] - Manually updated Makefile.in and configure. Changed png_conf.h.in - back to config.h. - -Version 1.2.10beta3 [April 15, 2006] - Change png_conf.h back to config.h in pngconf.h. - -Version 1.2.10beta4 [April 16, 2006] - Change PNG_BUILDING_LIBPNG to PNG_CONFIGURE_LIBPNG in config/Makefile*. - -Version 1.2.10beta5 [April 16, 2006] - Added a configure check for compiling assembler code in pnggccrd.c - -Version 1.2.10beta6 [April 17, 2006] - Revised the configure check for pnggccrd.c - Moved -DPNG_CONFIGURE_LIBPNG into @LIBPNG_DEFINES@ - Added @LIBPNG_DEFINES@ to arguments when building libpng.sym - -Version 1.2.10beta7 [April 18, 2006] - Change "exec_prefix=$prefix" to "exec_prefix=$(prefix)" in makefiles. - -Version 1.2.10rc1 [April 19, 2006] - Ensure pngconf.h doesn't define both PNG_USE_PNGGCCRD and PNG_USE_PNGVCRD - Fixed "LN_FS" typo in makefile.sco and makefile.solaris. - -Version 1.2.10rc2 [April 20, 2006] - Added a backslash between -DPNG_CONFIGURE_LIBPNG and -DPNG_NO_ASSEMBLER_CODE - in configure.ac and configure - Made the configure warning about versioned symbols less arrogant. - -Version 1.2.10rc3 [April 21, 2006] - Added a note in libpng.txt that png_set_sig_bytes(8) can be used when - writing an embedded PNG without the 8-byte signature. - Revised makefiles and configure to avoid making links to libpng.so.* - -Version 1.2.10 [April 23, 2006] - Reverted configure to "rc2" state. - -Version 1.2.11beta1 [May 31, 2006] - scripts/libpng.pc.in contained "configure" style version info and would - not work with makefiles. - The shared-library makefiles were linking to libpng.so.0 instead of - libpng.so.3 compatibility as the library. - -Version 1.2.11beta2 [June 2, 2006] - Increased sprintf buffer from 50 to 52 chars in pngrutil.c to avoid - buffer overflow. - Fixed bug in example.c (png_set_palette_rgb -> png_set_palette_to_rgb) - -Version 1.2.11beta3 [June 5, 2006] - Prepended "#! /bin/sh" to ltmail.sh and contrib/pngminus/*.sh (Cosmin). - Removed the accidental leftover Makefile.in~ (Cosmin). - Avoided potential buffer overflow and optimized buffer in - png_write_sCAL(), png_write_sCAL_s() (Cosmin). - Removed the include directories and libraries from CFLAGS and LDFLAGS - in scripts/makefile.gcc (Nelson A. de Oliveira, Cosmin). - -Version 1.2.11beta4 [June 6, 2006] - Allow zero-length IDAT chunks after the entire zlib datastream, but not - after another intervening chunk type. - -Version 1.0.19rc1, 1.2.11rc1 [June 13, 2006] - Deleted extraneous square brackets from [config.h] in configure.ac - -Version 1.0.19rc2, 1.2.11rc2 [June 14, 2006] - Added prototypes for PNG_INCH_CONVERSIONS functions to png.h - Revised INSTALL and autogen.sh - Fixed typo in several makefiles (-W1 should be -Wl) - Added typedef for png_int_32 and png_uint_32 on 64-bit systems. - -Version 1.0.19rc3, 1.2.11rc3 [June 15, 2006] - Removed the new typedefs for 64-bit systems (delay until version 1.4.0) - Added one zero element to png_gamma_shift[] array in pngrtran.c to avoid - reading out of bounds. - -Version 1.0.19rc4, 1.2.11rc4 [June 15, 2006] - Really removed the new typedefs for 64-bit systems. - -Version 1.0.19rc5, 1.2.11rc5 [June 22, 2006] - Removed png_sig_bytes entry from scripts/pngw32.def - -Version 1.0.19, 1.2.11 [June 26, 2006] - None. - -Version 1.0.20, 1.2.12 [June 27, 2006] - Really increased sprintf buffer from 50 to 52 chars in pngrutil.c to avoid - buffer overflow. - -Version 1.2.13beta1 [October 2, 2006] - Removed AC_FUNC_MALLOC from configure.ac - Work around Intel-Mac compiler bug by setting PNG_NO_MMX_CODE in pngconf.h - Change "logical" to "bitwise" throughout documentation. - Detect and fix attempt to write wrong iCCP profile length (CVE-2006-7244) - -Version 1.0.21, 1.2.13 [November 14, 2006] - Fix potential buffer overflow in sPLT chunk handler. - Fix Makefile.am to not try to link to noexistent files. - Check all exported functions for NULL png_ptr. - -Version 1.2.14beta1 [November 17, 2006] - Relocated three misplaced tests for NULL png_ptr. - Built Makefile.in with automake-1.9.6 instead of 1.9.2. - Build configure with autoconf-2.60 instead of 2.59 - -Version 1.2.14beta2 [November 17, 2006] - Added some typecasts in png_zalloc(). - -Version 1.2.14rc1 [November 20, 2006] - Changed "strtod" to "png_strtod" in pngrutil.c - -Version 1.0.22, 1.2.14 [November 27, 2006] - Added missing "$(srcdir)" in Makefile.am and Makefile.in - -Version 1.2.15beta1 [December 3, 2006] - Generated configure with autoconf-2.61 instead of 2.60 - Revised configure.ac to update libpng.pc and libpng-config. - -Version 1.2.15beta2 [December 3, 2006] - Always export MMX asm functions, just stubs if not building pnggccrd.c - -Version 1.2.15beta3 [December 4, 2006] - Add "png_bytep" typecast to profile while calculating length in pngwutil.c - -Version 1.2.15beta4 [December 7, 2006] - Added scripts/CMakeLists.txt - Changed PNG_NO_ASSEMBLER_CODE to PNG_NO_MMX_CODE in scripts, like 1.4.0beta - -Version 1.2.15beta5 [December 7, 2006] - Changed some instances of PNG_ASSEMBLER_* to PNG_MMX_* in pnggccrd.c - Revised scripts/CMakeLists.txt - -Version 1.2.15beta6 [December 13, 2006] - Revised scripts/CMakeLists.txt and configure.ac - -Version 1.2.15rc1 [December 18, 2006] - Revised scripts/CMakeLists.txt - -Version 1.2.15rc2 [December 21, 2006] - Added conditional #undef jmpbuf in pngtest.c to undo #define in AIX headers. - Added scripts/makefile.nommx - -Version 1.2.15rc3 [December 25, 2006] - Fixed shared library numbering error that was introduced in 1.2.15beta6. - -Version 1.2.15rc4 [December 27, 2006] - Fixed handling of rgb_to_gray when png_ptr->color.gray isn't set. - -Version 1.2.15rc5 [December 31, 2006] - Revised handling of rgb_to_gray. - -Version 1.2.15 [January 5, 2007] - Added some (unsigned long) typecasts in pngtest.c to avoid printing errors. - -Version 1.2.16beta1 [January 6, 2007] - Fix bugs in makefile.nommx - -Version 1.2.16beta2 [January 16, 2007] - Revised scripts/CMakeLists.txt - -Version 1.2.16 [January 31, 2007] - No changes. - -Version 1.2.17beta1 [March 6, 2007] - Revised scripts/CMakeLists.txt to install both shared and static libraries. - Deleted a redundant line from pngset.c. - -Version 1.2.17beta2 [April 26, 2007] - Relocated misplaced test for png_ptr == NULL in pngpread.c - Change "==" to "&" for testing PNG_RGB_TO_GRAY_ERR & PNG_RGB_TO_GRAY_WARN - flags. - Changed remaining instances of PNG_ASSEMBLER_* to PNG_MMX_* - Added pngerror() when write_IHDR fails in deflateInit2(). - Added "const" to some array declarations. - Mention examples of libpng usage in the libpng*.txt and libpng.3 documents. - -Version 1.2.17rc1 [May 4, 2007] - No changes. - -Version 1.2.17rc2 [May 8, 2007] - Moved several PNG_HAVE_* macros out of PNG_INTERNAL because applications - calling set_unknown_chunk_location() need them. - Changed transformation flag from PNG_EXPAND_tRNS to PNG_EXPAND in - png_set_expand_gray_1_2_4_to_8(). - Added png_ptr->unknown_chunk to hold working unknown chunk data, so it - can be free'ed in case of error. Revised unknown chunk handling in - pngrutil.c and pngpread.c to use this structure. - -Version 1.2.17rc3 [May 8, 2007] - Revised symbol-handling in configure script. - -Version 1.2.17rc4 [May 10, 2007] - Revised unknown chunk handling to avoid storing unknown critical chunks. - -Version 1.0.25 [May 15, 2007] -Version 1.2.17 [May 15, 2007] - Added "png_ptr->num_trans=0" before error return in png_handle_tRNS, - to eliminate a vulnerability (CVE-2007-2445, CERT VU#684664) - -Version 1.0.26 [May 15, 2007] -Version 1.2.18 [May 15, 2007] - Reverted the libpng-1.2.17rc3 change to symbol-handling in configure script - -Version 1.2.19beta1 [May 18, 2007] - Changed "const static" to "static PNG_CONST" everywhere, mostly undoing - change of libpng-1.2.17beta2. Changed other "const" to "PNG_CONST" - Changed some handling of unused parameters, to avoid compiler warnings. - "if (unused == NULL) return;" becomes "unused = unused". - -Version 1.2.19beta2 [May 18, 2007] - Only use the valid bits of tRNS value in png_do_expand() (Brian Cartier) - -Version 1.2.19beta3 [May 19, 2007] - Add some "png_byte" typecasts in png_check_keyword() and write new_key - instead of key in zTXt chunk (Kevin Ryde). - -Version 1.2.19beta4 [May 21, 2007] - Add png_snprintf() function and use it in place of sprint() for improved - defense against buffer overflows. - -Version 1.2.19beta5 [May 21, 2007] - Fixed png_handle_tRNS() to only use the valid bits of tRNS value. - Changed handling of more unused parameters, to avoid compiler warnings. - Removed some PNG_CONST in pngwutil.c to avoid compiler warnings. - -Version 1.2.19beta6 [May 22, 2007] - Added some #ifdef PNG_MMX_CODE_SUPPORTED where needed in pngvcrd.c - Added a special "_MSC_VER" case that defines png_snprintf to _snprintf - -Version 1.2.19beta7 [May 22, 2007] - Squelched png_squelch_warnings() in pnggccrd.c and added - an #ifdef PNG_MMX_CODE_SUPPORTED block around the declarations that caused - the warnings that png_squelch_warnings was squelching. - -Version 1.2.19beta8 [May 22, 2007] - Removed __MMX__ from test in pngconf.h. - -Version 1.2.19beta9 [May 23, 2007] - Made png_squelch_warnings() available via PNG_SQUELCH_WARNINGS macro. - Revised png_squelch_warnings() so it might work. - Updated makefile.sgcc and makefile.solaris; added makefile.solaris-x86. - -Version 1.2.19beta10 [May 24, 2007] - Resquelched png_squelch_warnings(), use "__attribute__((used))" instead. - -Version 1.4.0beta1 [April 20, 2006] - Enabled iTXt support (changes png_struct, thus requires so-number change). - Cleaned up PNG_ASSEMBLER_CODE_SUPPORTED vs PNG_MMX_CODE_SUPPORTED - Eliminated PNG_1_0_X and PNG_1_2_X macros. - Removed deprecated functions png_read_init, png_write_init, png_info_init, - png_permit_empty_plte, png_set_gray_1_2_4_to_8, png_check_sig, and - removed the deprecated macro PNG_MAX_UINT. - Moved "PNG_INTERNAL" parts of png.h and pngconf.h into pngintrn.h - Removed many WIN32_WCE #ifdefs (Cosmin). - Reduced dependency on C-runtime library when on Windows (Simon-Pierre) - Replaced sprintf() with png_sprintf() (Simon-Pierre) - -Version 1.4.0beta2 [April 20, 2006] - Revised makefiles and configure to avoid making links to libpng.so.* - Moved some leftover MMX-related defines from pngconf.h to pngintrn.h - Updated scripts/pngos2.def, pngw32.def, and projects/wince/png32ce.def - -Version 1.4.0beta3 [May 10, 2006] - Updated scripts/pngw32.def to comment out MMX functions. - Added PNG_NO_GET_INT_32 and PNG_NO_SAVE_INT_32 macros. - Scripts/libpng.pc.in contained "configure" style version info and would - not work with makefiles. - Revised pngconf.h and added pngconf.h.in, so makefiles and configure can - pass defines to libpng and applications. - -Version 1.4.0beta4 [May 11, 2006] - Revised configure.ac, Makefile.am, and many of the makefiles to write - their defines in pngconf.h. - -Version 1.4.0beta5 [May 15, 2006] - Added a missing semicolon in Makefile.am and Makefile.in - Deleted extraneous square brackets from configure.ac - -Version 1.4.0beta6 [June 2, 2006] - Increased sprintf buffer from 50 to 52 chars in pngrutil.c to avoid - buffer overflow. - Changed sonum from 0 to 1. - Removed unused prototype for png_check_sig() from png.h - -Version 1.4.0beta7 [June 16, 2006] - Exported png_write_sig (Cosmin). - Optimized buffer in png_handle_cHRM() (Cosmin). - Set pHYs = 2835 x 2835 pixels per meter, and added - sCAL = 0.352778e-3 x 0.352778e-3 meters, in pngtest.png (Cosmin). - Added png_set_benign_errors(), png_benign_error(), png_chunk_benign_error(). - Added typedef for png_int_32 and png_uint_32 on 64-bit systems. - Added "(unsigned long)" typecast on png_uint_32 variables in printf lists. - -Version 1.4.0beta8 [June 22, 2006] - Added demonstration of user chunk support in pngtest.c, to support the - public sTER chunk and a private vpAg chunk. - -Version 1.4.0beta9 [July 3, 2006] - Removed ordinals from scripts/pngw32.def and removed png_info_int and - png_set_gray_1_2_4_to_8 entries. - Inline call of png_get_uint_32() in png_get_uint_31(). - Use png_get_uint_31() to get vpAg width and height in pngtest.c - Removed WINCE and Netware projects. - Removed standalone Y2KINFO file. - -Version 1.4.0beta10 [July 12, 2006] - Eliminated automatic copy of pngconf.h to pngconf.h.in from configure and - some makefiles, because it was not working reliably. Instead, distribute - pngconf.h.in along with pngconf.h and cause configure and some of the - makefiles to update pngconf.h from pngconf.h.in. - Added pngconf.h to DEPENDENCIES in Makefile.am - -Version 1.4.0beta11 [August 19, 2006] - Removed AC_FUNC_MALLOC from configure.ac. - Added a warning when writing iCCP profile with mismatched profile length. - Patched pnggccrd.c to assemble on x86_64 platforms. - Moved chunk header reading into a separate function png_read_chunk_header() - in pngrutil.c. The chunk header (len+sig) is now serialized in a single - operation (Cosmin). - Implemented support for I/O states. Added png_ptr member io_state, and - functions png_get_io_chunk_name() and png_get_io_state() in pngget.c - (Cosmin). - Added png_get_io_chunk_name and png_get_io_state to scripts/*.def (Cosmin). - Renamed scripts/pngw32.* to scripts/pngwin.* (Cosmin). - Removed the include directories and libraries from CFLAGS and LDFLAGS - in scripts/makefile.gcc (Cosmin). - Used png_save_uint_32() to set vpAg width and height in pngtest.c (Cosmin). - Cast to proper type when getting/setting vpAg units in pngtest.c (Cosmin). - Added pngintrn.h to the Visual C++ projects (Cosmin). - Removed scripts/list (Cosmin). - Updated copyright year in scripts/pngwin.def (Cosmin). - Removed PNG_TYPECAST_NULL and used standard NULL consistently (Cosmin). - Disallowed the user to redefine png_size_t, and enforced a consistent use - of png_size_t across libpng (Cosmin). - Changed the type of png_ptr->rowbytes, PNG_ROWBYTES() and friends - to png_size_t (Cosmin). - Removed png_convert_size() and replaced png_sizeof with sizeof (Cosmin). - Removed some unnecessary type casts (Cosmin). - Changed prototype of png_get_compression_buffer_size() and - png_set_compression_buffer_size() to work with png_size_t instead of - png_uint_32 (Cosmin). - Removed png_memcpy_check() and png_memset_check() (Cosmin). - Fixed a typo (png_byte --> png_bytep) in libpng.3 and libpng.txt (Cosmin). - Clarified that png_zalloc() does not clear the allocated memory, - and png_zalloc() and png_zfree() cannot be PNGAPI (Cosmin). - Renamed png_mem_size_t to png_alloc_size_t, fixed its definition in - pngconf.h, and used it in all memory allocation functions (Cosmin). - Renamed pngintrn.h to pngpriv.h, added a comment at the top of the file - mentioning that the symbols declared in that file are private, and - updated the scripts and the Visual C++ projects accordingly (Cosmin). - Removed circular references between pngconf.h and pngconf.h.in in - scripts/makefile.vc*win32 (Cosmin). - Removing trailing '.' from the warning and error messages (Cosmin). - Added pngdefs.h that is built by makefile or configure, instead of - pngconf.h.in (Glenn). - Detect and fix attempt to write wrong iCCP profile length. - -Version 1.4.0beta12 [October 19, 2006] - Changed "logical" to "bitwise" in the documentation. - Work around Intel-Mac compiler bug by setting PNG_NO_MMX_CODE in pngconf.h - Add a typecast to stifle compiler warning in pngrutil.c - -Version 1.4.0beta13 [November 10, 2006] - Fix potential buffer overflow in sPLT chunk handler. - Fix Makefile.am to not try to link to noexistent files. - -Version 1.4.0beta14 [November 15, 2006] - Check all exported functions for NULL png_ptr. - -Version 1.4.0beta15 [November 17, 2006] - Relocated two misplaced tests for NULL png_ptr. - Built Makefile.in with automake-1.9.6 instead of 1.9.2. - Build configure with autoconf-2.60 instead of 2.59 - Add "install: all" in Makefile.am so "configure; make install" will work. - -Version 1.4.0beta16 [November 17, 2006] - Added a typecast in png_zalloc(). - -Version 1.4.0beta17 [December 4, 2006] - Changed "new_key[79] = '\0';" to "(*new_key)[79] = '\0';" in pngwutil.c - Add "png_bytep" typecast to profile while calculating length in pngwutil.c - -Version 1.4.0beta18 [December 7, 2006] - Added scripts/CMakeLists.txt - -Version 1.4.0beta19 [May 16, 2007] - Revised scripts/CMakeLists.txt - Rebuilt configure and Makefile.in with newer tools. - Added conditional #undef jmpbuf in pngtest.c to undo #define in AIX headers. - Added scripts/makefile.nommx - -Version 1.4.0beta20 [July 9, 2008] - Moved several PNG_HAVE_* macros from pngpriv.h to png.h because applications - calling set_unknown_chunk_location() need them. - Moved several macro definitions from pngpriv.h to pngconf.h - Merge with changes to the 1.2.X branch, as of 1.2.30beta04. - Deleted all use of the MMX assembler code and Intel-licensed optimizations. - Revised makefile.mingw - -Version 1.4.0beta21 [July 21, 2008] - Moved local array "chunkdata" from pngrutil.c to the png_struct, so - it will be freed by png_read_destroy() in case of a read error (Kurt - Christensen). - -Version 1.4.0beta22 [July 21, 2008] - Change "purpose" and "buffer" to png_ptr->chunkdata to avoid memory leaking. - -Version 1.4.0beta23 [July 22, 2008] - Change "chunkdata = NULL" to "png_ptr->chunkdata = NULL" several places in - png_decompress_chunk(). - -Version 1.4.0beta24 [July 25, 2008] - Change all remaining "chunkdata" to "png_ptr->chunkdata" in - png_decompress_chunk(), and remove "chunkdata" from parameter list. - Put a call to png_check_chunk_name() in png_read_chunk_header(). - Revised png_check_chunk_name() to reject a name with a lowercase 3rd byte. - Removed two calls to png_check_chunk_name() occuring later in the process. - Define PNG_NO_ERROR_NUMBERS by default in pngconf.h - -Version 1.4.0beta25 [July 30, 2008] - Added a call to png_check_chunk_name() in pngpread.c - Reverted png_check_chunk_name() to accept a name with a lowercase 3rd byte. - Added png_push_have_buffer() function to pngpread.c - Eliminated PNG_BIG_ENDIAN_SUPPORTED and associated png_get_* macros. - Made inline expansion of png_get_*() optional with PNG_USE_READ_MACROS. - Eliminated all PNG_USELESS_TESTS and PNG_CORRECT_PALETTE_SUPPORTED code. - Synced contrib directory and configure files with libpng-1.2.30beta06. - Eliminated no-longer-used pngdefs.h (but it's still built in the makefiles) - Relocated a misplaced "#endif /* PNG_NO_WRITE_FILTER */" in pngwutil.c - -Version 1.4.0beta26 [August 4, 2008] - Removed png_push_have_buffer() function in pngpread.c. It increased the - compiled library size slightly. - Changed "-Wall" to "-W -Wall" in the CFLAGS in all makefiles (Cosmin Truta) - Declared png_ptr "volatile" in pngread.c and pngwrite.c to avoid warnings. - Updated contrib/visupng/cexcept.h to version 2.0.1 - Added PNG_LITERAL_CHARACTER macros for #, [, and ]. - -Version 1.4.0beta27 [August 5, 2008] - Revised usage of PNG_LITERAL_SHARP in pngerror.c. - Moved newline character from individual png_debug messages into the - png_debug macros. - Allow user to #define their own png_debug, png_debug1, and png_debug2. - -Version 1.4.0beta28 [August 5, 2008] - Revised usage of PNG_LITERAL_SHARP in pngerror.c. - Added PNG_STRING_NEWLINE macro - -Version 1.4.0beta29 [August 9, 2008] - Revised usage of PNG_STRING_NEWLINE to work on non-ISO compilers. - Added PNG_STRING_COPYRIGHT macro. - Added non-ISO versions of png_debug macros. - -Version 1.4.0beta30 [August 14, 2008] - Added premultiplied alpha feature (Volker Wiendl). - -Version 1.4.0beta31 [August 18, 2008] - Moved png_set_premultiply_alpha from pngtrans.c to pngrtran.c - Removed extra crc check at the end of png_handle_cHRM(). Bug introduced - in libpng-1.4.0beta20. - -Version 1.4.0beta32 [August 19, 2008] - Added PNG_WRITE_FLUSH_SUPPORTED block around new png_flush() call. - Revised PNG_NO_STDIO version of png_write_flush() - -Version 1.4.0beta33 [August 20, 2008] - Added png_get|set_chunk_cache_max() to limit the total number of sPLT, - text, and unknown chunks that can be stored. - -Version 1.4.0beta34 [September 6, 2008] - Shortened tIME_string to 29 bytes in pngtest.c - Fixed off-by-one error introduced in png_push_read_zTXt() function in - libpng-1.2.30beta04/pngpread.c (Harald van Dijk) - -Version 1.4.0beta35 [October 6, 2008] - Changed "trans_values" to "trans_color". - Changed so-number from 0 to 14. Some OS do not like 0. - Revised makefile.darwin to fix shared library numbering. - Change png_set_gray_1_2_4_to_8() to png_set_expand_gray_1_2_4_to_8() - in example.c (debian bug report) - -Version 1.4.0beta36 [October 25, 2008] - Sync with tEXt vulnerability fix in libpng-1.2.33rc02. - -Version 1.4.0beta37 [November 13, 2008] - Added png_check_cHRM in png.c and moved checking from pngget.c, pngrutil.c, - and pngwrite.c - -Version 1.4.0beta38 [November 22, 2008] - Added check for zero-area RGB cHRM triangle in png_check_cHRM() and - png_check_cHRM_fixed(). - -Version 1.4.0beta39 [November 23, 2008] - Revised png_warning() to write its message on standard output by default - when warning_fn is NULL. - -Version 1.4.0beta40 [November 24, 2008] - Eliminated png_check_cHRM(). Instead, always use png_check_cHRM_fixed(). - In png_check_cHRM_fixed(), ensure white_y is > 0, and removed redundant - check for all-zero coordinates that is detected by the triangle check. - -Version 1.4.0beta41 [November 26, 2008] - Fixed string vs pointer-to-string error in png_check_keyword(). - Rearranged test expressions in png_check_cHRM_fixed() to avoid internal - overflows. - Added PNG_NO_CHECK_cHRM conditional. - -Version 1.4.0beta42, 43 [December 1, 2008] - Merge png_debug with version 1.2.34beta04. - -Version 1.4.0beta44 [December 6, 2008] - Removed redundant check for key==NULL before calling png_check_keyword() - to ensure that new_key gets initialized and removed extra warning - (Merge with version 1.2.34beta05 -- Arvan Pritchard). - -Version 1.4.0beta45 [December 9, 2008] - In png_write_png(), respect the placement of the filler bytes in an earlier - call to png_set_filler() (Jim Barry). - -Version 1.4.0beta46 [December 10, 2008] - Undid previous change and added PNG_TRANSFORM_STRIP_FILLER_BEFORE and - PNG_TRANSFORM_STRIP_FILLER_AFTER conditionals and deprecated - PNG_TRANSFORM_STRIP_FILLER (Jim Barry). - -Version 1.4.0beta47 [December 15, 2008] - Support for dithering was disabled by default, because it has never - been well tested and doesn't work very well. The code has not - been removed, however, and can be enabled by building libpng with - PNG_READ_DITHER_SUPPORTED defined. - -Version 1.4.0beta48 [February 14, 2009] - Added new exported function png_calloc(). - Combined several instances of png_malloc(); png_memset() into png_calloc(). - Removed prototype for png_freeptr() that was added in libpng-1.4.0beta24 - but was never defined. - -Version 1.4.0beta49 [February 28, 2009] - Added png_fileno() macro to pngconf.h, used in pngwio.c - Corrected order of #ifdef's in png_debug definition in png.h - Fixed bug introduced in libpng-1.4.0beta48 with the memset arguments - for pcal_params. - Fixed order of #ifdef directives in the png_debug defines in png.h - (bug introduced in libpng-1.2.34/1.4.0beta29). - Revised comments in png_set_read_fn() and png_set_write_fn(). - -Version 1.4.0beta50 [March 18, 2009] - Use png_calloc() instead of png_malloc() to allocate big_row_buf when - reading an interlaced file, to avoid a possible UMR. - Undid revision of PNG_NO_STDIO version of png_write_flush(). Users - having trouble with fflush() can build with PNG_NO_WRITE_FLUSH defined - or supply their own flush_fn() replacement. - Revised libpng*.txt and png.h documentation about use of png_write_flush() - and png_set_write_fn(). - Removed fflush() from pngtest.c. - Added "#define PNG_NO_WRITE_FLUSH" to contrib/pngminim/encoder/pngusr.h - -Version 1.4.0beta51 [March 21, 2009] - Removed new png_fileno() macro from pngconf.h . - -Version 1.4.0beta52 [March 27, 2009] - Relocated png_do_chop() ahead of building gamma tables in pngrtran.c - This avoids building 16-bit gamma tables unnecessarily. - Removed fflush() from pngtest.c. - Added "#define PNG_NO_WRITE_FLUSH" to contrib/pngminim/encoder/pngusr.h - Added a section on differences between 1.0.x and 1.2.x to libpng.3/libpng.txt - -Version 1.4.0beta53 [April 1, 2009] - Removed some remaining MMX macros from pngpriv.h - Fixed potential memory leak of "new_name" in png_write_iCCP() (Ralph Giles) - -Version 1.4.0beta54 [April 13, 2009] - Added "ifndef PNG_SKIP_SETJMP_CHECK" block in pngconf.h to allow - application code writers to bypass the check for multiple inclusion - of setjmp.h when they know that it is safe to ignore the situation. - Eliminated internal use of setjmp() in pngread.c and pngwrite.c - Reordered ancillary chunks in pngtest.png to be the same as what - pngtest now produces, and made some cosmetic changes to pngtest output. - Eliminated deprecated png_read_init_3() and png_write_init_3() functions. - -Version 1.4.0beta55 [April 15, 2009] - Simplified error handling in pngread.c and pngwrite.c by putting - the new png_read_cleanup() and png_write_cleanup() functions inline. - -Version 1.4.0beta56 [April 25, 2009] - Renamed "user_chunk_data" to "my_user_chunk_data" in pngtest.c to suppress - "shadowed declaration" warning from gcc-4.3.3. - Renamed "gamma" to "png_gamma" in pngset.c to avoid "shadowed declaration" - warning about a global "gamma" variable in math.h on some platforms. - -Version 1.4.0beta57 [May 2, 2009] - Removed prototype for png_freeptr() that was added in libpng-1.4.0beta24 - but was never defined (again). - Rebuilt configure scripts with autoconf-2.63 instead of 2.62 - Removed pngprefs.h and MMX from makefiles - -Version 1.4.0beta58 [May 14, 2009] - Changed pngw32.def to pngwin.def in makefile.mingw (typo was introduced - in beta57). - Clarified usage of sig_bit versus sig_bit_p in example.c (Vincent Torri) - -Version 1.4.0beta59 [May 15, 2009] - Reformated sources in libpng style (3-space intentation, comment format) - Fixed typo in libpng docs (PNG_FILTER_AVE should be PNG_FILTER_AVG) - Added sections about the git repository and our coding style to the - documentation - Relocated misplaced #endif in pngwrite.c, sCAL chunk handler. - -Version 1.4.0beta60 [May 19, 2009] - Conditionally compile png_read_finish_row() which is not used by - progressive readers. - Added contrib/pngminim/preader to demonstrate building minimal progressive - decoder, based on contrib/gregbook with embedded libpng and zlib. - -Version 1.4.0beta61 [May 20, 2009] - In contrib/pngminim/*, renamed "makefile.std" to "makefile", since there - is only one makefile in those directories, and revised the README files - accordingly. - More reformatting of comments, mostly to capitalize sentences. - -Version 1.4.0beta62 [June 2, 2009] - Added "#define PNG_NO_WRITE_SWAP" to contrib/pngminim/encoder/pngusr.h - and "define PNG_NO_READ_SWAP" to decoder/pngusr.h and preader/pngusr.h - Reformatted several remaining "else statement" into two lines. - Added a section to the libpng documentation about using png_get_io_ptr() - in configure scripts to detect the presence of libpng. - -Version 1.4.0beta63 [June 15, 2009] - Revised libpng*.txt and libpng.3 to mention calling png_set_IHDR() - multiple times and to specify the sample order in the tRNS chunk, - because the ISO PNG specification has a typo in the tRNS table. - Changed several PNG_UNKNOWN_CHUNK_SUPPORTED to - PNG_HANDLE_AS_UNKNOWN_SUPPORTED, to make the png_set_keep mechanism - available for ignoring known chunks even when not saving unknown chunks. - Adopted preference for consistent use of "#ifdef" and "#ifndef" versus - "#if defined()" and "if !defined()" where possible. - -Version 1.4.0beta64 [June 24, 2009] - Eliminated PNG_LEGACY_SUPPORTED code. - Moved the various unknown chunk macro definitions outside of the - PNG_READ|WRITE_ANCILLARY_CHUNK_SUPPORTED blocks. - -Version 1.4.0beta65 [June 26, 2009] - Added a reference to the libpng license in each file. - -Version 1.4.0beta66 [June 27, 2009] - Refer to the libpng license instead of the libpng license in each file. - -Version 1.4.0beta67 [July 6, 2009] - Relocated INVERT_ALPHA within png_read_png() and png_write_png(). - Added high-level API transform PNG_TRANSFORM_GRAY_TO_RGB. - Added an "xcode" project to the projects directory (Alam Arias). - -Version 1.4.0beta68 [July 19, 2009] - Avoid some tests in filter selection in pngwutil.c - -Version 1.4.0beta69 [July 25, 2009] - Simplified the new filter-selection test. This runs faster in the - common "PNG_ALL_FILTERS" and PNG_FILTER_NONE cases. - Removed extraneous declaration from the new call to png_read_gray_to_rgb() - (bug introduced in libpng-1.4.0beta67). - Fixed up xcode project (Alam Arias) - Added a prototype for png_64bit_product() in png.c - -Version 1.4.0beta70 [July 27, 2009] - Avoid a possible NULL dereference in debug build, in png_set_text_2(). - (bug introduced in libpng-0.95, discovered by Evan Rouault) - -Version 1.4.0beta71 [July 29, 2009] - Rebuilt configure scripts with autoconf-2.64. - -Version 1.4.0beta72 [August 1, 2009] - Replaced *.tar.lzma with *.tar.xz in distribution. Get the xz codec - from . - -Version 1.4.0beta73 [August 1, 2009] - Reject attempt to write iCCP chunk with negative embedded profile length - (JD Chen) (CVE-2009-5063). - -Version 1.4.0beta74 [August 8, 2009] - Changed png_ptr and info_ptr member "trans" to "trans_alpha". - -Version 1.4.0beta75 [August 21, 2009] - Removed an extra png_debug() recently added to png_write_find_filter(). - Fixed incorrect #ifdef in pngset.c regarding unknown chunk support. - -Version 1.4.0beta76 [August 22, 2009] - Moved an incorrectly located test in png_read_row() in pngread.c - -Version 1.4.0beta77 [August 27, 2009] - Removed lpXYZ.tar.bz2 (with CRLF), KNOWNBUG, libpng-x.y.z-KNOWNBUG.txt, - and the "noconfig" files from the distribution. - Moved CMakeLists.txt from scripts into the main libpng directory. - Various bugfixes and improvements to CMakeLists.txt (Philip Lowman) - -Version 1.4.0beta78 [August 31, 2009] - Converted all PNG_NO_* tests to PNG_*_SUPPORTED everywhere except pngconf.h - Eliminated PNG_NO_FREE_ME and PNG_FREE_ME_SUPPORTED macros. - Use png_malloc plus a loop instead of png_calloc() to initialize - row_pointers in png_read_png(). - -Version 1.4.0beta79 [September 1, 2009] - Eliminated PNG_GLOBAL_ARRAYS and PNG_LOCAL_ARRAYS; always use local arrays. - Eliminated PNG_CALLOC_SUPPORTED macro and always provide png_calloc(). - -Version 1.4.0beta80 [September 17, 2009] - Removed scripts/libpng.icc - Changed typecast of filler from png_byte to png_uint_16 in png_set_filler(). - (Dennis Gustafsson) - Fixed typo introduced in beta78 in pngtest.c ("#if def " should be "#ifdef ") - -Version 1.4.0beta81 [September 23, 2009] - Eliminated unused PNG_FLAG_FREE_* defines from pngpriv.h - Expanded TAB characters in pngrtran.c - Removed PNG_CONST from all "PNG_CONST PNG_CHNK" declarations to avoid - compiler complaints about doubly declaring things "const". - Changed all "#if [!]defined(X)" to "if[n]def X" where possible. - Eliminated unused png_ptr->row_buf_size - -Version 1.4.0beta82 [September 25, 2009] - Moved redundant IHDR checking into new png_check_IHDR() in png.c - and report all errors found in the IHDR data. - Eliminated useless call to png_check_cHRM() from pngset.c - -Version 1.4.0beta83 [September 25, 2009] - Revised png_check_IHDR() to eliminate bogus complaint about filter_type. - -Version 1.4.0beta84 [September 30, 2009] - Fixed some inconsistent indentation in pngconf.h - Revised png_check_IHDR() to add a test for width variable less than 32-bit. - -Version 1.4.0beta85 [October 1, 2009] - Revised png_check_IHDR() again, to check info_ptr members instead of - the contents of the returned parameters. - -Version 1.4.0beta86 [October 9, 2009] - Updated the "xcode" project (Alam Arias). - Eliminated a shadowed declaration of "pp" in png_handle_sPLT(). - -Version 1.4.0rc01 [October 19, 2009] - Trivial cosmetic changes. - -Version 1.4.0beta87 [October 30, 2009] - Moved version 1.4.0 back into beta. - -Version 1.4.0beta88 [October 30, 2009] - Revised libpng*.txt section about differences between 1.2.x and 1.4.0 - because most of the new features have now been ported back to 1.2.41 - -Version 1.4.0beta89 [November 1, 2009] - More bugfixes and improvements to CMakeLists.txt (Philip Lowman) - Removed a harmless extra png_set_invert_alpha() from pngwrite.c - Apply png_user_chunk_cache_max within png_decompress_chunk(). - Merged libpng-1.2.41.txt with libpng-1.4.0.txt where appropriate. - -Version 1.4.0beta90 [November 2, 2009] - Removed all remaining WIN32_WCE #ifdefs except those involving the - time.h "tm" structure - -Version 1.4.0beta91 [November 3, 2009] - Updated scripts/pngw32.def and projects/wince/png32ce.def - Copied projects/wince/png32ce.def to the scripts directory. - Added scripts/makefile.wce - Patched ltmain.sh for wince support. - Added PNG_CONVERT_tIME_SUPPORTED macro. - -Version 1.4.0beta92 [November 4, 2009] - Make inclusion of time.h in pngconf.h depend on PNG_CONVERT_tIME_SUPPORTED - Make #define PNG_CONVERT_tIME_SUPPORTED depend on PNG_WRITE_tIME_SUPPORTED - Revised libpng*.txt to describe differences from 1.2.40 to 1.4.0 (instead - of differences from 1.2.41 to 1.4.0) - -Version 1.4.0beta93 [November 7, 2009] - Added PNG_DEPSTRUCT, PNG_DEPRECATED, PNG_USE_RESULT, PNG_NORETURN, and - PNG_ALLOCATED macros to detect deprecated direct access to the - png_struct or info_struct members and other deprecated usage in - applications (John Bowler). - Updated scripts/makefile* to add "-DPNG_CONFIGURE_LIBPNG" to CFLAGS, - to prevent warnings about direct access to png structs by libpng - functions while building libpng. They need to be tested, especially - those using compilers other than gcc. - Updated projects/visualc6 and visualc71 with "/d PNG_CONFIGURE_LIBPNG". - They should work but still need to be updated to remove - references to pnggccrd.c or pngvcrd.c and ASM building. - Added README.txt to the beos, cbuilder5, netware, and xcode projects warning - that they need to be updated, to remove references to pnggccrd.c and - pngvcrd.c and to depend on pngpriv.h - Removed three direct references to read_info_ptr members in pngtest.c - that were detected by the new PNG_DEPSTRUCT macro. - Moved the png_debug macro definitions and the png_read_destroy(), - png_write_destroy() and png_far_to_near() prototypes from png.h - to pngpriv.h (John Bowler) - Moved the synopsis lines for png_read_destroy(), png_write_destroy() - png_debug(), png_debug1(), and png_debug2() from libpng.3 to libpngpf.3. - -Version 1.4.0beta94 [November 9, 2009] - Removed the obsolete, unused pnggccrd.c and pngvcrd.c files. - Updated CMakeLists.txt to add "-DPNG_CONFIGURE_LIBPNG" to the definitions. - Removed dependency of pngtest.o on pngpriv.h in the makefiles. - Only #define PNG_DEPSTRUCT, etc. in pngconf.h if not already defined. - -Version 1.4.0beta95 [November 10, 2009] - Changed png_check_sig() to !png_sig_cmp() in contrib programs. - Added -DPNG_CONFIGURE_LIBPNG to contrib/pngminm/*/makefile - Changed png_check_sig() to !png_sig_cmp() in contrib programs. - Corrected the png_get_IHDR() call in contrib/gregbook/readpng2.c - Changed pngminim/*/gather.sh to stop trying to remove pnggccrd.c and pngvcrd.c - Added dependency on pngpriv.h in contrib/pngminim/*/makefile - -Version 1.4.0beta96 [November 12, 2009] - Renamed scripts/makefile.wce to scripts/makefile.cegcc - Revised Makefile.am to use libpng.sys while building libpng.so - so that only PNG_EXPORT functions are exported. - Removed the deprecated png_check_sig() function/macro. - Removed recently removed function names from scripts/*.def - Revised pngtest.png to put chunks in the same order written by pngtest - (evidently the same change made in libpng-1.0beta54 was lost). - Added PNG_PRIVATE macro definition in pngconf.h for possible future use. - -Version 1.4.0beta97 [November 13, 2009] - Restored pngtest.png to the libpng-1.4.0beta7 version. - Removed projects/beos and netware.txt; no one seems to be supporting them. - Revised Makefile.in - -Version 1.4.0beta98 [November 13, 2009] - Added the "xcode" project to zip distributions, - Fixed a typo in scripts/pngwin.def introduced in beta97. - -Version 1.4.0beta99 [November 14, 2009] - Moved libpng-config.in and libpng.pc-configure.in out of the scripts - directory, to libpng-config.in and libpng-pc.in, respectively, and - modified Makefile.am and configure.ac accordingly. Now "configure" - needs nothing from the "scripts" directory. - Avoid redefining PNG_CONST in pngconf.h - -Version 1.4.0beta100 [November 14, 2009] - Removed ASM builds from projects/visualc6 and projects/visualc71 - Removed scripts/makefile.nommx and makefile.vcawin32 - Revised CMakeLists.txt to account for new location of libpng-config.in - and libpng-pc.in - Updated INSTALL to reflect removal and relocation of files. - -Version 1.4.0beta101 [November 14, 2009] - Restored the binary files (*.jpg, *.png, some project files) that were - accidentally deleted from the zip and 7z distributions when the xcode - project was added. - -Version 1.4.0beta102 [November 18, 2009] - Added libpng-config.in and libpng-pc.in to the zip and 7z distributions. - Fixed a typo in projects/visualc6/pngtest.dsp, introduced in beta100. - Moved descriptions of makefiles and other scripts out of INSTALL into - scripts/README.txt - Updated the copyright year in scripts/pngwin.rc from 2006 to 2009. - -Version 1.4.0beta103 [November 21, 2009] - Removed obsolete comments about ASM from projects/visualc71/README_zlib.txt - Align row_buf on 16-byte boundary in memory. - Restored the PNG_WRITE_FLUSH_AFTER_IEND_SUPPORTED guard around the call - to png_flush() after png_write_IEND(). See 1.4.0beta32, 1.4.0beta50 - changes above and 1.2.30, 1.2.30rc01 and rc03 in 1.2.41 CHANGES. Someone - needs this feature. - Make the 'png_jmpbuf' macro expand to a call that records the correct - longjmp function as well as returning a pointer to the setjmp - jmp_buf buffer, and marked direct access to jmpbuf 'deprecated'. - (John Bowler) - -Version 1.4.0beta104 [November 22, 2009] - Removed png_longjmp_ptr from scripts/*.def and libpng.3 - Rebuilt configure scripts with autoconf-2.65 - -Version 1.4.0beta105 [November 25, 2009] - Use fast integer PNG_DIVIDE_BY_255() or PNG_DIVIDE_BY_65535() - to accomplish alpha premultiplication when - PNG_READ_COMPOSITE_NODIV_SUPPORTED is defined. - Changed "/255" to "/255.0" in background calculations to make it clear - that the 255 is used as a double. - -Version 1.4.0beta106 [November 27, 2009] - Removed premultiplied alpha feature. - -Version 1.4.0beta107 [December 4, 2009] - Updated README - Added "#define PNG_NO_PEDANTIC_WARNINGS" in the libpng source files. - Removed "-DPNG_CONFIGURE_LIBPNG" from the makefiles and projects. - Revised scripts/makefile.netbsd, makefile.openbsd, and makefile.sco - to put png.h and pngconf.h in $prefix/include, like the other scripts, - instead of in $prefix/include/libpng. Also revised makefile.sco - to put them in $prefix/include/libpng15 instead of in - $prefix/include/libpng/libpng15. - -Version 1.4.0beta108 [December 11, 2009] - Removed leftover "-DPNG_CONFIGURE_LIBPNG" from contrib/pngminim/*/makefile - Relocated png_do_chop() to its original position in pngrtran.c; the - change in version 1.2.41beta08 caused transparency to be handled wrong - in some 16-bit datastreams (Yusaku Sugai). - -Version 1.4.0beta109 [December 13, 2009] - Added "bit_depth" parameter to the private png_build_gamma_table() function. - Pass bit_depth=8 to png_build_gamma_table() when bit_depth is 16 but the - PNG_16_TO_8 transform has been set, to avoid unnecessary build of 16-bit - tables. - -Version 1.4.0rc02 [December 20, 2009] - Declared png_cleanup_needed "volatile" in pngread.c and pngwrite.c - -Version 1.4.0rc03 [December 22, 2009] - Renamed libpng-pc.in back to libpng.pc.in and revised CMakeLists.txt - (revising the change in 1.4.0beta99) - -Version 1.4.0rc04 [December 25, 2009] - Swapped PNG_UNKNOWN_CHUNKS_SUPPORTED and PNG_HANDLE_AS_UNKNOWN_SUPPORTED - in pngset.c to be consistent with other changes in version 1.2.38. - -Version 1.4.0rc05 [December 25, 2009] - Changed "libpng-pc.in" to "libpng.pc.in" in configure.ac, configure, and - Makefile.in to be consistent with changes in libpng-1.4.0rc03 - -Version 1.4.0rc06 [December 29, 2009] - Reverted the gamma_table changes from libpng-1.4.0beta109. - Fixed some indentation errors. - -Version 1.4.0rc07 [January 1, 2010] - Revised libpng*.txt and libpng.3 about 1.2.x->1.4.x differences. - Use png_calloc() instead of png_malloc(); png_memset() in pngrutil.c - Update copyright year to 2010. - -Version 1.4.0rc08 [January 2, 2010] - Avoid deprecated references to png_ptr-io_ptr and png_ptr->error_ptr - in pngtest.c - -Version 1.4.0 [January 3, 2010] - No changes. - -Version 1.4.1beta01 [January 8, 2010] - Updated CMakeLists.txt for consistent indentation and to avoid an - unclosed if-statement warning (Philip Lowman). - Revised Makefile.am and Makefile.in to remove references to Y2KINFO, - KNOWNBUG, and libpng.la (Robert Schwebel). - Revised the makefiles to install the same files and symbolic - links as configure, except for libpng.la and libpng14.la. - Make png_set|get_compression_buffer_size() available even when - PNG_WRITE_SUPPORTED is not enabled. - Revised Makefile.am and Makefile.in to simplify their maintenance. - Revised scripts/makefile.linux to install a link to libpng14.so.14.1 - -Version 1.4.1beta02 [January 9, 2010] - Revised the rest of the makefiles to install a link to libpng14.so.14.1 - -Version 1.4.1beta03 [January 10, 2010] - Removed png_set_premultiply_alpha() from scripts/*.def - -Version 1.4.1rc01 [January 16, 2010] - No changes. - -Version 1.4.1beta04 [January 23, 2010] - Revised png_decompress_chunk() to improve speed and memory usage when - decoding large chunks. - Added png_set|get_chunk_malloc_max() functions. - -Version 1.4.1beta05 [January 26, 2010] - Relocated "int k" declaration in pngtest.c to minimize its scope. - -Version 1.4.1beta06 [January 28, 2010] - Revised png_decompress_chunk() to use a two-pass method suggested by - John Bowler. - -Version 1.4.1beta07 [February 6, 2010] - Folded some long lines in the source files. - Added defineable PNG_USER_CHUNK_CACHE_MAX, PNG_USER_CHUNK_MALLOC_MAX, - and a PNG_USER_LIMITS_SUPPORTED flag. - Eliminated use of png_ptr->irowbytes and reused the slot in png_ptr as - png_ptr->png_user_chunk_malloc_max. - Revised png_push_save_buffer() to do fewer but larger png_malloc() calls. - -Version 1.4.1beta08 [February 6, 2010] - Minor cleanup and updating of dates and copyright year. - -Version 1.5.0beta01 [February 7, 2010] - Moved declaration of png_struct into private pngstruct.h and png_info - into pnginfo.h - -Version 1.4.1beta09 and 1.5.0beta02 [February 7, 2010] - Reverted to original png_push_save_buffer() code. - -Version 1.4.1beta10 and 1.5.0beta03 [February 8, 2010] - Return allocated "old_buffer" in png_push_save_buffer() before - calling png_error(), to avoid a potential memory leak. - Updated configure script to use SO number 15. - -Version 1.5.0beta04 [February 9, 2010] - Removed malformed "incomplete struct declaration" of png_info from png.h - -Version 1.5.0beta05 [February 12, 2010] - Removed PNG_DEPSTRUCT markup in pngstruct.h and pnginfo.h, and undid the - linewrapping that it entailed. - Revised comments in pngstruct.h and pnginfo.h and added pointers to - the libpng license. - Changed PNG_INTERNAL to PNG_EXPOSE_INTERNAL_STRUCTURES - Removed the cbuilder5 project, which has not been updated to 1.4.0. - -Version 1.4.1beta12 and 1.5.0beta06 [February 14, 2010] - Fixed type declaration of png_get_chunk_malloc_max() in pngget.c (Daisuke - Nishikawa) - -Version 1.5.0beta07 [omitted] - -Version 1.5.0beta08 [February 19, 2010] - Changed #ifdef PNG_NO_STDIO_SUPPORTED to #ifdef PNG_NO_CONSOLE_IO_SUPPORTED - wherever png_snprintf() is used to construct error and warning messages. - Noted in scripts/makefile.mingw that it expects to be run under MSYS. - Removed obsolete unused MMX-querying support from contrib/gregbook - Added exported png_longjmp() function. - Removed the AIX redefinition of jmpbuf in png.h - Added -D_ALLSOURCE in configure.ac, makefile.aix, and CMakeLists.txt - when building on AIX. - -Version 1.5.0beta09 [February 19, 2010] - Removed -D_ALLSOURCE from configure.ac, makefile.aix, and CMakeLists.txt. - Changed the name of png_ptr->jmpbuf to png_ptr->png_jmpbuf in pngstruct.h - -Version 1.5.0beta10 [February 25, 2010] - Removed unused gzio.c from contrib/pngminim gather and makefile scripts - Removed replacement error handlers from contrib/gregbook. Because of - the new png_longjmp() function they are no longer needed. - -Version 1.5.0beta11 [March 6, 2010] - Removed checking for already-included setjmp.h from pngconf.h - Fixed inconsistent indentations and made numerous cosmetic changes. - Revised the "SEE ALSO" style of libpng.3, libpngpf.3, and png.5 - -Version 1.5.0beta12 [March 9, 2010] - Moved "#include png.h" inside pngpriv.h and removed "#include png.h" from - the source files, along with "#define PNG_EXPOSE_INTERNAL_STRUCTURES" - and "#define PNG_NO_PEDANTIC_WARNINGS" (John Bowler). - Created new pngdebug.h and moved debug definitions there. - -Version 1.5.0beta13 [March 10, 2010] - Protect pngstruct.h, pnginfo.h, and pngdebug.h from being included twice. - Revise the "#ifdef" blocks in png_inflate() so it will compile when neither - PNG_USER_CHUNK_MALLOC_MAX nor PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED - is defined. - Removed unused png_measure_compressed_chunk() from pngpriv.h and libpngpf.3 - Moved the 'config.h' support from pngconf.h to pngpriv.h - Removed PNGAPI from the png_longjmp_ptr typedef. - Eliminated dependence of pngtest.c on the private pngdebug.h file. - Make all png_debug macros into *unterminated* statements or - expressions (i.e. a trailing ';' must always be added) and correct - the format statements in various png_debug messages. - -Version 1.5.0beta14 [March 14, 2010] - Removed direct access to png_ptr->io_ptr from the Windows code in pngtest.c - Revised Makefile.am to account for recent additions and replacements. - Corrected CE and OS/2 DEF files (scripts/png*def) for symbols removed and - added ordinal numbers to the Windows DEF file and corrected the duplicated - ordinal numbers on CE symbols that are commented out. - Added back in export symbols that can be present in the Windows build but - are disabled by default. - PNG_EXPORT changed to include an 'ordinal' field for DEF file generation. - PNG_CALLBACK added to make callback definitions uniform. PNGAPI split - into PNGCAPI (base C form), PNGAPI (exports) and PNGCBAPI (callbacks), - and appropriate changes made to all files. Cygwin builds re-hinged to - allow procedure call standard changes and to remove the need for the DEF - file (fixes build on Cygwin). - Enabled 'attribute' warnings that are relevant to library APIs and callbacks. - Changed rules for generation of the various symbol files and added a new - rule for a DEF file (which is also added to the distribution). - Updated the symbol file generation to stop it adding spurious spaces - to EOL (coming from preprocessor macro expansion). Added a facility - to join tokens in the output and rewrite *.dfn to use this. - Eliminated scripts/*.def in favor of libpng.def; updated projects/visualc71 - and removed scripts/makefile.cygwin. - Made PNG_BUILD_DLL safe: it can be set whenever a DLL is being built. - Removed the include of sys/types.h - apparently unnecessary now on the - platforms on which it happened (all but Mac OS and RISC OS). - Moved the Mac OS test into pngpriv.h (the only place it is used.) - -Version 1.5.0beta15 [March 17, 2010] - Added symbols.chk target to Makefile.am to validate the symbols in png.h - against the new DEF file scripts/symbols.def. - Changed the default DEF file back to pngwin.def. - Removed makefile.mingw. - Eliminated PNG_NO_EXTERN and PNG_ALL_EXTERN - -Version 1.5.0beta16 [April 1, 2010] - Make png_text_struct independent of PNG_iTXt_SUPPORTED, so that - fields are initialized in all configurations. The READ/WRITE - macros (PNG_(READ|WRITE)_iTXt_SUPPORTED) still function as - before to disable code to actually read or write iTXt chunks - and iTXt_SUPPORTED can be used to detect presence of either - read or write support (but it is probably better to check for - the one actually required - read or write.) - Combined multiple png_warning() calls for a single error. - Restored the macro definition of png_check_sig(). - -Version 1.5.0beta17 [April 17, 2010] - Added some "(long)" typecasts to printf calls in png_handle_cHRM(). - Documented the fact that png_set_dither() was disabled since libpng-1.4.0. - Reenabled png_set_dither() but renamed it to png_set_quantize() to reflect - more accurately what it actually does. At the same time, renamed - the PNG_DITHER_[RED,GREEN_BLUE]_BITS macros to - PNG_QUANTIZE_[RED,GREEN,BLUE]_BITS. - Added some "(long)" typecasts to printf calls in png_handle_cHRM(). - Freeze build-time only configuration in the build. - In all prior versions of libpng most configuration options - controlled by compiler #defines had to be repeated by the - application code that used libpng. This patch changes this - so that compilation options that can only be changed at build - time are frozen in the build. Options that are compiler - dependent (and those that are system dependent) are evaluated - each time - pngconf.h holds these. Options that can be changed - per-file in the application are in png.h. Frozen options are - in the new installed header file pnglibconf.h (John Bowler) - Removed the xcode project because it has not been updated to work - with libpng-1.5.0. - Removed the ability to include optional pngusr.h - -Version 1.5.0beta18 [April 17, 2010] - Restored the ability to include optional pngusr.h - Moved replacements for png_error() and png_warning() from the - contrib/pngminim project to pngerror.c, for use when warnings or - errors are disabled via PNG_NO_WARN or PNG_NO_ERROR_TEXT, to avoid - storing unneeded error/warning text. - Updated contrib/pngminim project to work with the new pnglibconf.h - Added some PNG_NO_* defines to contrib/pngminim/*/pngusr.h to save space. - -Version 1.5.0beta19 [April 24, 2010] - Added PNG_{READ,WRITE}_INT_FUNCTIONS_SUPPORTED. This allows the functions - to read and write ints to be disabled independently of PNG_USE_READ_MACROS, - which allows libpng to be built with the functions even though the default - is to use the macros - this allows applications to choose at app build - time whether or not to use macros (previously impossible because the - functions weren't in the default build.) - Changed Windows calling convention back to __cdecl for API functions. - For Windows/x86 platforms only: - __stdcall is no longer needed for Visual Basic, so libpng-1.5.0 uses - __cdecl throughout (both API functions and callbacks) on Windows/x86 - platforms. - Replaced visualc6 and visualc71 projects with new vstudio project - Relaxed the overly-restrictive permissions of some files. - -Version 1.5.0beta20 [April 24, 2010] - Relaxed more overly-restrictive permissions of some files. - -Version 1.5.0beta21 [April 27, 2010] - Removed some unwanted binary bytes and changed CRLF to NEWLINE in the new - vstudio project files, and some trivial editing of some files in the - scripts directory. - Set PNG_NO_READ_BGR, PNG_NO_IO_STATE, and PNG_NO_TIME_RFC1123 in - contrib/pngminim/decoder/pngusr.h to make a smaller decoder application. - -Version 1.5.0beta22 [April 28, 2010] - Fixed dependencies of GET_INT_32 - it does not require READ_INT_FUNCTIONS - because it has a macro equivalent. - Improved the options.awk script; added an "everything off" option. - Revised contrib/pngminim to use the "everything off" option in pngusr.dfa. - -Version 1.5.0beta23 [April 29, 2010] - Corrected PNG_REMOVED macro to take five arguments. - The macro was documented with two arguments (name,ordinal), however - the symbol checking .dfn files assumed five arguments. The five - argument form seems more useful so it is changed to that. - Corrected PNG_UNKNOWN_CHUNKS_SUPPORTED to PNG_HANDLE_AS_UNKNOWN_SUPPORTED - in gregbook/readpng2.c - Corrected protection of png_get_user_transform_ptr. The API declaration in - png.h is removed if both READ and WRITE USER_TRANSFORM are turned off - but was left defined in pngtrans.c - Added logunsupported=1 to cause pnglibconf.h to document disabled options. - This makes the installed pnglibconf.h more readable but causes no - other change. The intention is that users of libpng will find it - easier to understand if an API they need is missing. - Include png_reset_zstream() in png.c only when PNG_READ_SUPPORTED is defined. - Removed dummy_inflate.c from contrib/pngminim/encoder - Removed contrib/pngminim/*/gather.sh; gathering is now done in the makefile. - -Version 1.5.0beta24 [May 7, 2010] - Use bitwise "&" instead of arithmetic mod in pngrutil.c calculation of the - offset of the png_ptr->rowbuf pointer into png_ptr->big_row_buf. - Added more blank lines for readability. - -Version 1.5.0beta25 [June 18, 2010] - In pngpread.c: png_push_have_row() add check for new_row > height - Removed the now-redundant check for out-of-bounds new_row from example.c - -Version 1.5.0beta26 [June 18, 2010] - In pngpread.c: png_push_process_row() add check for too many rows. - -Version 1.5.0beta27 [June 18, 2010] - Removed the check added in beta25 as it is now redundant. - -Version 1.5.0beta28 [June 20, 2010] - Rewrote png_process_IDAT_data to consistently treat extra data as warnings - and handle end conditions more cleanly. - Removed the new (beta26) check in png_push_process_row(). - -Version 1.5.0beta29 [June 21, 2010] - Revised scripts/options.awk to work on Sunos (but still doesn't work) - Added comment to options.awk and contrib/pngminim/*/makefile to try nawk. - -Version 1.5.0beta30 [June 22, 2010] - Stop memory leak when reading a malformed sCAL chunk. - -Version 1.5.0beta31 [June 26, 2010] - Revised pngpread.c patch of beta28 to avoid an endless loop. - Removed some trailing blanks. - -Version 1.5.0beta32 [June 26, 2010] - Removed leftover scripts/options.patch and scripts/options.rej - -Version 1.5.0beta33 [July 6, 3010] - Made FIXED and FLOATING options consistent in the APIs they enable and - disable. Corrected scripts/options.awk to handle both command line - options and options specified in the .dfa files. - Changed char *msg to PNG_CONST char *msg in pngrutil.c - Make png_set_sRGB_gAMA_and_cHRM set values using either the fixed or - floating point APIs, but not both. - Reversed patch to remove error handler when the jmp_buf is stored in the - main program structure, not the png_struct. - The error handler is needed because the default handler in libpng will - always use the jmp_buf in the library control structure; this is never - set. The gregbook code is a useful example because, even though it - uses setjmp/longjmp, it shows how error handling can be implemented - using control mechanisms not directly supported by libpng. The - technique will work correctly with mechanisms such as Microsoft - Structure Exceptions or C++ exceptions (compiler willing - note that gcc - does not by default support interworking of C and C++ error handling.) - Reverted changes to call png_longjmp in contrib/gregbook where it is not - appropriate. If mainprog->jmpbuf is used by setjmp, then png_longjmp - cannot be used. - Changed "extern PNG_EXPORT" to "PNG_EXPORT" in png.h (Jan Nijtmans) - Changed "extern" to "PNG_EXTERN" in pngpriv.h (except for the 'extern "C" {') - -Version 1.5.0beta34 [July 12, 2010] - Put #ifndef PNG_EXTERN, #endif around the define PNG_EXTERN in pngpriv.h - -Version 1.5.0beta35 [July 24, 2010] - Removed some newly-added TAB characters. - Added -DNO_PNG_SNPRINTF to CFLAGS in scripts/makefile.dj2 - Moved the definition of png_snprintf() outside of the enclosing - #ifdef blocks in pngconf.h - -Version 1.5.0beta36 [July 29, 2010] - Patches by John Bowler: - Fixed point APIs are now supported throughout (no missing APIs). - Internal fixed point arithmetic support exists for all internal floating - point operations. - sCAL validates the floating point strings it is passed. - Safe, albeit rudimentary, Watcom support is provided by PNG_API_RULE==2 - Two new APIs exist to get the number of passes without turning on the - PNG_INTERLACE transform and to get the number of rows in the current - pass. - A new test program, pngvalid.c, validates the gamma code. - Errors in the 16-bit gamma correction (overflows) have been corrected. - cHRM chunk testing is done consistently (previously the floating point - API bypassed it, because the test really didn't work on FP, now the test - is performed on the actual values to be stored in the PNG file so it - works in the FP case too.) - Most floating point APIs now simply call the fixed point APIs after - converting the values to the fixed point form used in the PNG file. - The standard headers no longer include zlib.h, which is currently only - required for pngstruct.h and can therefore be internal. - Revised png_get_int_32 to undo the PNG two's complement representation of - negative numbers. - -Version 1.5.0beta37 [July 30, 2010] - Added a typecast in png_get_int_32() in png.h and pngrutil.h to avoid - a compiler warning. - Replaced oFFs 0,0 with oFFs -10,20 in pngtest.png - -Version 1.5.0beta38 [July 31, 2010] - Implemented remaining "_fixed" functions. - Corrected a number of recently introduced warnings mostly resulting from - safe but uncast assignments to shorter integers. Also added a zlib - VStudio release library project because the latest zlib Official Windows - build does not include such a thing. - Revised png_get_int_16() to be similar to png_get_int_32(). - Restored projects/visualc71. - -Version 1.5.0beta39 [August 2, 2010] - VisualC/GCC warning fixes, VisualC build fixes - The changes include support for function attributes in VC in addition to - those already present in GCC - necessary because without these some - warnings are unavoidable. Fixes include signed/unsigned fixes in - pngvalid and checks with gcc -Wall -Wextra -Wunused. - VC requires function attributes on function definitions as well as - declarations, PNG_FUNCTION has been added to enable this and the - relevant function definitions changed. - -Version 1.5.0beta40 [August 6, 2010] - Correct use of _WINDOWS_ in pngconf.h - Removed png_mem_ #defines; they are no longer used. - Added the sRGB chunk to pngtest.png - -Version 1.5.0beta41 [August 11, 2010] - Added the cHRM chunk to pngtest.png - Don't try to use version-script with cygwin/mingw. - Revised contrib/gregbook to work under cygwin/mingw. - -Version 1.5.0beta42 [August 18, 2010] - Add .dll.a to the list of extensions to be symlinked by Makefile.am (Yaakov) - Made all API functions that have const arguments and constant string - literal pointers declare them (John Bowler). - -Version 1.5.0beta43 [August 20, 2010] - Removed spurious tabs, shorten long lines (no source change) - Also added scripts/chkfmt to validate the format of all the files that can - reasonably be validated (it is suggested to run "make distclean" before - checking, because some machine generated files have long lines.) - Reformatted the CHANGES file to be more consistent throughout. - Made changes to address various issues identified by GCC, mostly - signed/unsigned and shortening problems on assignment but also a few - difficult to optimize (for GCC) loops. - Fixed non-GCC fixed point builds. In png.c a declaration was misplaced - in an earlier update. Fixed to declare the auto variables at the head. - Use cexcept.h in pngvalid.c. - -Version 1.5.0beta44 [August 24, 2010] - Updated CMakeLists.txt to use CMAKE_INSTALL_LIBDIR variable; useful for - installing libpng in /usr/lib64 (Funda Wang). - Revised CMakeLists.txt to put the man pages in share/man/man* not man/man* - Revised CMakeLists.txt to make symlinks instead of copies when installing. - Changed PNG_LIB_NAME from pngNN to libpngNN in CMakeLists.txt (Philip Lowman) - Implemented memory checks within pngvalid - Reformatted/rearranged pngvalid.c to assist use of progressive reader. - Check interlaced images in pngvalid - Clarified pngusr.h comments in pnglibconf.dfa - Simplified the pngvalid error-handling code now that cexcept.h is in place. - Implemented progressive reader in pngvalid.c for standard tests - Implemented progressive read in pngvalid.c gamma tests - Turn on progressive reader in pngvalid.c by default and tidy code. - -Version 1.5.0beta45 [August 26, 2010] - Added an explicit make step to projects/vstudio for pnglibconf.h - Also corrected zlib.vcxproj into which Visual Studio had introduced - what it calls an "authoring error". The change to make pnglibconf.h - simply copies the file; in the future it may actually generate the - file from scripts/pnglibconf.dfa as the other build systems do. - Changed pngvalid to work when floating point APIs are disabled - Renamed the prebuilt scripts/pnglibconf.h to scripts/pnglibconf.h.prebuilt - Supply default values for PNG_USER_PRIVATEBUILD and PNG_USER_DLLFNAME_POSTFIX - in pngpriv.h in case the user neglected to define them in their pngusr.h - -Version 1.5.0beta46 [August 28, 2010] - Added new private header files to libpng_sources in CMakeLists.txt - Added PNG_READ_16BIT, PNG_WRITE_16BIT, and PNG_16BIT options. - Added reference to scripts/pnglibconf.h.prebuilt in the visualc71 project. - -Version 1.5.0beta47 [September 11, 2010] - Fixed a number of problems with 64-bit compilation reported by Visual - Studio 2010 (John Bowler). - -Version 1.5.0beta48 [October 4, 2010] - Updated CMakeLists.txt (Philip Lowman). - Revised autogen.sh to recognize and use $AUTOCONF, $AUTOMAKE, $AUTOHEADER, - $AUTOPOINT, $ACLOCAL and $LIBTOOLIZE - Fixed problem with symbols creation in Makefile.am which was assuming that - all versions of ccp write to standard output by default (Martin Banky). The - bug was introduced in libpng-1.2.9beta5. - Removed unused mkinstalldirs. - -Version 1.5.0beta49 [October 8, 2010] - Undid Makefile.am revision of 1.5.0beta48. - -Version 1.5.0beta50 [October 14, 2010] - Revised Makefile.in to account for mkinstalldirs being removed. - Added some "(unsigned long)" typecasts in printf statements in pngvalid.c. - Suppressed a compiler warning in png_handle_sPLT(). - Check for out-of-range text compression mode in png_set_text(). - -Version 1.5.0beta51 [October 15, 2010] - Changed embedded dates to "(PENDING RELEASE) in beta releases (and future - rc releases) to minimize the difference between releases. - -Version 1.5.0beta52 [October 16, 2010] - Restored some of the embedded dates (in png.h, png.c, documentation, etc.) - -Version 1.5.0beta53 [October 18, 2010] - Updated INSTALL to mention using "make maintainer-clean" and to remove - obsolete statement about a custom ltmain.sh - Disabled "color-tests" by default in Makefile.am so it will work with - automake versions earlier than 1.11.1 - Use document name "libpng-manual.txt" instead of "libpng-.txt" - to simplify version differences. - Removed obsolete remarks about setjmp handling from INSTALL. - Revised and renamed the typedef in png.h and png.c that was designed - to catch library and header mismatch. - -Version 1.5.0beta54 [November 10, 2010] - Require 48 bytes, not 64 bytes, for big_row_buf in overflow checks. - Used a consistent structure for the pngget.c functions. - -Version 1.5.0beta55 [November 21, 2010] - Revised png_get_uint_32, png_get_int_32, png_get_uint_16 (Cosmin) - Moved reading of file signature into png_read_sig (Cosmin) - Fixed atomicity of chunk header serialization (Cosmin) - Added test for io_state in pngtest.c (Cosmin) - Added "#!/bin/sh" at the top of contrib/pngminim/*/gather.sh scripts. - Changes to remove gcc warnings (John Bowler) - Certain optional gcc warning flags resulted in warnings in libpng code. - With these changes only -Wconversion and -Wcast-qual cannot be turned on. - Changes are trivial rearrangements of code. -Wconversion is not possible - for pngrutil.c (because of the widespread use of += et al on variables - smaller than (int) or (unsigned int)) and -Wcast-qual is not possible - with pngwio.c and pngwutil.c because the 'write' callback and zlib - compression both fail to declare their input buffers with 'const'. - -Version 1.5.0beta56 [December 7, 2010] - Added the private PNG_UNUSED() macro definition in pngpriv.h. - Added some commentary about PNG_EXPORT in png.h and pngconf.h - Revised PNG_EXPORT() macro and added PNG_EXPORTA() macro, with the - objective of simplifying and improving the cosmetic appearance of png.h. - Fixed some incorrect "=" macro names in pnglibconf.dfa - Included documentation of changes in 1.5.0 from 1.4.x in libpng-manual.txt - -Version 1.5.0beta57 [December 9, 2010] - Documented the pngvalid gamma error summary with additional comments and - print statements. - Improved missing symbol handling in checksym.awk; symbols missing in both - the old and new files can now be optionally ignored, treated as errors - or warnings. - Removed references to pngvcrd.c and pnggccrd.c from the vstudio project. - Updated "libpng14" to "libpng15" in the visualc71 project. - Enabled the strip16 tests in pngvalid.` - Don't display test results (except PASS/FAIL) when running "make test". - Instead put them in pngtest-log.txt - Added "--with-zprefix=" to configure.ac - Updated the prebuilt configuration files to autoconf version 2.68 - -Version 1.5.0beta58 [December 19, 2010] - Fixed interlace image handling and add test cases (John Bowler) - Fixed the clean rule in Makefile.am to remove pngtest-log.txt - Made minor changes to work around warnings in gcc 3.4 - -Version 1.5.0rc01 [December 27, 2010] - No changes. - -Version 1.5.0rc02 [December 27, 2010] - Eliminated references to the scripts/*.def files in project/visualc71. - -Version 1.5.0rc03 [December 28, 2010] - Eliminated scripts/*.def and revised Makefile.am accordingly - -Version 1.5.0rc04 [December 29, 2010] - Fixed bug in background transformation handling in pngrtran.c (it was - looking for the flag in png_ptr->transformations instead of in - png_ptr->flags) (David Raymond). - -Version 1.5.0rc05 [December 31, 2010] - Fixed typo in a comment in CMakeLists.txt (libpng14 => libpng15) (Cosmin) - -Version 1.5.0rc06 [January 4, 2011] - Changed the new configure option "zprefix=string" to "zlib-prefix=string" - -Version 1.5.0rc07 [January 4, 2011] - Updated copyright year. - -Version 1.5.0 [January 6, 2011] - No changes. - -version 1.5.1beta01 [January 8, 2011] - Added description of png_set_crc_action() to the manual. - Added a note in the manual that the type of the iCCP profile was changed - from png_charpp to png_bytepp in png_get_iCCP(). This change happened - in version 1.5.0beta36 but is not noted in the CHANGES. Similarly, - it was changed from png_charpp to png_const_bytepp in png_set_iCCP(). - Ensure that png_rgb_to_gray ignores palette mapped images, if libpng - internally happens to call it with one, and fixed a failure to handle - palette mapped images correctly. This fixes CVE-2690. - -Version 1.5.1beta02 [January 14, 2011] - Fixed a bug in handling of interlaced images (bero at arklinux.org). - Updated CMakeLists.txt (Clifford Yapp) - -Version 1.5.1beta03 [January 14, 2011] - Fixed typecasting of some png_debug() statements (Cosmin) - -Version 1.5.1beta04 [January 16, 2011] - Updated documentation of png_set|get_tRNS() (Thomas Klausner). - Mentioned in the documentation that applications must #include "zlib.h" - if they need access to anything in zlib.h, and that a number of - macros such as png_memset() are no longer accessible by applications. - Corrected pngvalid gamma test "sample" function to access all of the color - samples of each pixel, instead of sampling the red channel three times. - Prefixed variable names index, div, exp, gamma with "png_" to avoid "shadow" - warnings, and (mistakenly) changed png_exp() to exp(). - -Version 1.5.1beta05 [January 16, 2011] - Changed variable names png_index, png_div, png_exp, and png_gamma to - char_index, divisor, exp_b10, and gamma_val, respectively, and - changed exp() back to png_exp(). - -Version 1.5.1beta06 [January 20, 2011] - Prevent png_push_crc_skip() from hanging while reading an unknown chunk - or an over-large compressed zTXt chunk with the progressive reader. - Eliminated more GCC "shadow" warnings. - Revised png_fixed() in png.c to avoid compiler warning about reaching the - end without returning anything. - -Version 1.5.1beta07 [January 22, 2011] - In the manual, describe the png_get_IHDR() arguments in the correct order. - Added const_png_structp and const_png_infop types, and used them in - prototypes for most png_get_*() functions. - -Version 1.5.1beta08 [January 23, 2011] - Added png_get_io_chunk_type() and deprecated png_get_io_chunk_name() - Added synopses for the IO_STATE functions and other missing synopses - to the manual. Removed the synopses from libpngpf.3 because they - were out of date and no longer useful. Better information can be - obtained by reading the prototypes and comments in pngpriv.h - Attempted to fix cpp on Solaris with S. Studio 12 cc, fix build - Added a make macro DFNCPP that is a CPP that will accept the tokens in - a .dfn file and adds configure stuff to test for such a CPP. ./configure - should fail if one is not available. - Corrected const_png_ in png.h to png_const_ to avoid polluting the namespace. - Added png_get_current_row_number and png_get_current_pass_number for the - benefit of the user transform callback. - Added png_process_data_pause and png_process_data_skip for the benefit of - progressive readers that need to stop data processing or want to optimize - skipping of unread data (e.g., if the reader marks a chunk to be skipped.) - -Version 1.5.1beta09 [January 24, 2011] - Enhanced pngvalid, corrected an error in gray_to_rgb, corrected doc error. - pngvalid contains tests of transforms, which tests are currently disabled - because they are incompletely tested. gray_to_rgb was failing to expand - the bit depth for smaller bit depth images; this seems to be a long - standing error and resulted, apparently, in invalid output - (CVE-2011-0408, CERT VU#643140). The documentation did not accurately - describe what libpng really does when converting RGB to gray. - -Version 1.5.1beta10 [January 27, 2010] - Fixed incorrect examples of callback prototypes in the manual, that were - introduced in libpng-1.0.0. - In addition the order of the png_get_uint macros with respect to the - relevant function definitions has been reversed. This helps the - preprocessing of the symbol files be more robust. Furthermore, the - symbol file preprocessing now uses -DPNG_NO_USE_READ_MACROS even when - the library may actually be built with PNG_USE_READ_MACROS; this stops - the read macros interfering with the symbol file format. - Made the manual, synopses, and function prototypes use the function - argument names file_gamma, int_file_gamma, and srgb_intent consistently. - -Version 1.5.1beta11 [January 28, 2011] - Changed PNG_UNUSED from "param=param;" to "{if(param){}}". - Corrected local variable type in new API png_process_data_skip() - The type was self-evidently incorrect but only causes problems on 64-bit - architectures. - Added transform tests to pngvalid and simplified the arguments. - -Version 1.5.1rc01 [January 29, 2011] - No changes. - -Version 1.5.1rc02 [January 31, 2011] - Added a request in the manual that applications do not use "png_" or - "PNG_" to begin any of their own symbols. - Changed PNG_UNUSED to "(void)param;" and updated the commentary in pngpriv.h - -Version 1.5.1 [February 3, 2011] - No changes. - -Version 1.5.2beta01 [February 13, 2011] - More -Wshadow fixes for older gcc compilers. Older gcc versions apparently - check formal parameters names in function declarations (as well as - definitions) to see if they match a name in the global namespace. - Revised PNG_EXPORTA macro to not use an empty parameter, to accommodate the - old VisualC++ preprocessor. - Turned on interlace handling in png_read_png(). - Fixed gcc pendantic warnings. - Handle longjmp in Cygwin. - Fixed png_get_current_row_number() in the interlaced case. - Cleaned up ALPHA flags and transformations. - Implemented expansion to 16 bits. - -Version 1.5.2beta02 [February 19, 2011] - Fixed mistake in the descriptions of user read_transform and write_transform - function prototypes in the manual. The row_info struct is png_row_infop. - Reverted png_get_current_row_number() to previous (1.5.2beta01) behavior. - Corrected png_get_current_row_number documentation - Fixed the read/write row callback documentation. - This documents the current behavior, where the callback is called after - every row with information pertaining to the next row. - -Version 1.5.2beta03 [March 3, 2011] - Fixed scripts/makefile.vcwin32 - Updated contrib/pngsuite/README to add the word "modify". - Define PNG_ALLOCATED to blank when _MSC_VER<1300. - -Version 1.5.2rc01 [March 19, 2011] - Define remaining attributes to blank when MSC_VER<1300. - ifdef out mask arrays in pngread.c when interlacing is not supported. - -Version 1.5.2rc02 [March 22, 2011] - Added a hint to try CPP=/bin/cpp if "cpp -E" fails in scripts/pnglibconf.mak - and in contrib/pngminim/*/makefile, eg., on SunOS 5.10, and removed "strip" - from the makefiles. - Fixed a bug (present since libpng-1.0.7) that makes png_handle_sPLT() fail - to compile when PNG_NO_POINTER_INDEXING is defined (Chubanov Kirill) - -Version 1.5.2rc03 [March 24, 2011] - Don't include standard header files in png.h while building the symbol table, - to avoid cpp failure on SunOS (introduced PNG_BUILDING_SYMBOL_TABLE macro). - -Version 1.5.2 [March 31, 2011] - No changes. - -Version 1.5.3beta01 [April 1, 2011] - Re-initialize the zlib compressor before compressing non-IDAT chunks. - Added API functions (png_set_text_compression_level() and four others) to - set parameters for zlib compression of non-IDAT chunks. - -Version 1.5.3beta02 [April 3, 2011] - Updated scripts/symbols.def with new API functions. - Only compile the new zlib re-initializing code when text or iCCP is - supported, using PNG_WRITE_COMPRESSED_TEXT_SUPPORTED macro. - Improved the optimization of the zlib CMF byte (see libpng-1.2.6beta03). - Optimize the zlib CMF byte in non-IDAT compressed chunks - -Version 1.5.3beta03 [April 16, 2011] - Fixed gcc -ansi -pedantic compile. A strict ANSI system does not have - snprintf, and the "__STRICT_ANSI__" detects that condition more reliably - than __STDC__ (John Bowler). - Removed the PNG_PTR_NORETURN attribute because it too dangerous. It tells - the compiler that a user supplied callback (the error handler) does not - return, yet there is no guarantee in practice that the application code - will correctly implement the error handler because the compiler only - issues a warning if there is a mistake (John Bowler). - Removed the no-longer-used PNG_DEPSTRUCT macro. - Updated the zlib version to 1.2.5 in the VStudio project. - Fixed 64-bit builds where png_uint_32 is smaller than png_size_t in - pngwutil.c (John Bowler). - Fixed bug with stripping the filler or alpha channel when writing, that - was introduced in libpng-1.5.2beta01 (bug report by Andrew Church). - -Version 1.5.3beta04 [April 27, 2011] - Updated pngtest.png with the new zlib CMF optimization. - Cleaned up conditional compilation code and of background/gamma handling - Internal changes only except a new option to avoid compiling the - png_build_grayscale_palette API (which is not used at all internally.) - The main change is to move the transform tests (READ_TRANSFORMS, - WRITE_TRANSFORMS) up one level to the caller of the APIs. This avoids - calls to spurious functions if all transforms are disabled and slightly - simplifies those functions. Pngvalid modified to handle this. - A minor change is to stop the strip_16 and expand_16 interfaces from - disabling each other; this allows the future alpha premultiplication - code to use 16-bit intermediate values while still producing 8-bit output. - png_do_background and png_do_gamma have been simplified to take a single - pointer to the png_struct rather than pointers to every item required - from the png_struct. This makes no practical difference to the internal - code. - A serious bug in the pngvalid internal routine 'standard_display_init' has - been fixed - this failed to initialize the red channel and accidentally - initialized the alpha channel twice. - Changed png_struct jmp_buf member name from png_jmpbuf to tmp_jmpbuf to - avoid a possible clash with the png_jmpbuf macro on some platforms. - -Version 1.5.3beta05 [May 6, 2011] - Added the "_POSIX_SOURCE" feature test macro to ensure libpng sees the - correct API. _POSIX_SOURCE is defined in pngpriv.h, pngtest.c and - pngvalid.c to ensure that POSIX conformant systems disable non-POSIX APIs. - Removed png_snprintf and added formatted warning messages. This change adds - internal APIs to allow png_warning messages to have parameters without - requiring the host OS to implement snprintf. As a side effect the - dependency of the tIME-supporting RFC1132 code on stdio is removed and - PNG_NO_WARNINGS does actually work now. - Pass "" instead of '\0' to png_default_error() in png_err(). This mistake - was introduced in libpng-1.2.20beta01. This fixes CVE-2011-2691. - Added PNG_WRITE_OPTIMIZE_CMF_SUPPORTED macro to make the zlib "CMF" byte - optimization configureable. - IDAT compression failed if preceded by a compressed text chunk (bug - introduced in libpng-1.5.3beta01-02). This was because the attempt to - reset the zlib stream in png_write_IDAT happened after the first IDAT - chunk had been deflated - much too late. In this change internal - functions were added to claim/release the z_stream and, hopefully, make - the code more robust. Also deflateEnd checking is added - previously - libpng would ignore an error at the end of the stream. - -Version 1.5.3beta06 [May 8, 2011] - Removed the -D_ALL_SOURCE from definitions for AIX in CMakeLists.txt - Implemented premultiplied alpha support: png_set_alpha_mode API - -Version 1.5.3beta07 [May 11, 2011] - Added expand_16 support to the high level interface. - Added named value and 'flag' gamma support to png_set_gamma. Made a minor - change from the previous (unreleased) ABI/API to hide the exact value used - for Macs - it's not a good idea to embed this in the ABI! - Moved macro definitions for PNG_HAVE_IHDR, PNG_HAVE_PLTE, and PNG_AFTER_IDAT - from pngpriv.h to png.h because they must be visible to applications - that call png_set_unknown_chunks(). - Check for up->location !PNG_AFTER_IDAT when writing unknown chunks - before IDAT. - -Version 1.5.3beta08 [May 16, 2011] - Improved "pngvalid --speed" to exclude more of pngvalid from the time. - Documented png_set_alpha_mode(), other changes in libpng.3/libpng-manual.txt - The cHRM chunk now sets the defaults for png_set_rgb_to_gray() (when negative - parameters are supplied by the caller), while in the absence of cHRM - sRGB/Rec 709 values are still used. This introduced a divide-by-zero - bug in png_handle_cHRM(). - The bKGD chunk no longer overwrites the background value set by - png_set_background(), allowing the latter to be used before the file - header is read. It never performed any useful function to override - the default anyway. - Added memory overwrite and palette image checks to pngvalid.c - Previously palette image code was poorly checked. Since the transformation - code has a special palette path in most cases this was a severe weakness. - Minor cleanup and some extra checking in pngrutil.c and pngrtran.c. When - expanding an indexed image, always expand to RGBA if transparency is - present. - -Version 1.5.3beta09 [May 17, 2011] - Reversed earlier 1.5.3 change of transformation order; move png_expand_16 - back where it was. The change doesn't work because it requires 16-bit - gamma tables when the code only generates 8-bit ones. This fails - silently; the libpng code just doesn't do any gamma correction. Moving - the tests back leaves the old, inaccurate, 8-bit gamma calculations, but - these are clearly better than none! - -Version 1.5.3beta10 [May 20, 2011] - - png_set_background() and png_expand_16() did not work together correctly. - This problem is present in 1.5.2; if png_set_background is called with - need_expand false and the matching 16 bit color libpng erroneously just - treats it as an 8-bit color because of where png_do_expand_16 is in the - transform list. This simple fix reduces the supplied colour to 8-bits, - so it gets smashed, but this is better than the current behavior. - Added tests for expand16, more fixes for palette image tests to pngvalid. - Corrects the code for palette image tests and disables attempts to - validate palette colors. - -Version 1.5.3rc01 [June 3, 2011] - No changes. - -Version 1.5.3rc02 [June 8, 2011] - Fixed uninitialized memory read in png_format_buffer() (Bug report by - Frank Busse, CVE-2011-2501, related to CVE-2004-0421). - -Version 1.5.3beta11 [June 11, 2011] - Fixed png_handle_sCAL which is broken in 1.5. This fixes CVE 2011-2692. - Added sCAL to pngtest.png - Revised documentation about png_set_user_limits() to say that it also affects - png writing. - Revised handling of png_set_user_limits() so that it can increase the - limit beyond the PNG_USER_WIDTH|HEIGHT_MAX; previously it could only - reduce it. - Make the 16-to-8 scaling accurate. Dividing by 256 with no rounding is - wrong (high by one) 25% of the time. Dividing by 257 with rounding is - wrong in 128 out of 65536 cases. Getting the right answer all the time - without division is easy. - Added "_SUPPORTED" to the PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION macro. - Added projects/owatcom, an IDE project for OpenWatcom to replace - scripts/makefile.watcom. This project works with OpenWatcom 1.9. The - IDE autogenerates appropriate makefiles (libpng.mk) for batch processing. - The project is configurable, unlike the Visual Studio project, so long - as the developer has an awk. - Changed png_set_gAMA to limit the gamma value range so that the inverse - of the stored value cannot overflow the fixed point representation, - and changed other things OpenWatcom warns about. - Revised pngvalid.c to test PNG_ALPHA_MODE_SUPPORTED correctly. This allows - pngvalid to build when ALPHA_MODE is not supported, which is required if - it is to build on libpng 1.4. - Removed string/memory macros that are no longer used and are not - necessarily fully supportable, particularly png_strncpy and png_snprintf. - Added log option to pngvalid.c and attempted to improve gamma messages. - -Version 1.5.3 [omitted] - People found the presence of a beta release following an rc release - to be confusing; therefore we bump the version to libpng-1.5.4beta01 - and there will be no libpng-1.5.3 release. - -Version 1.5.4beta01 [June 14, 2011] - Made it possible to undefine PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED - to get the same (inaccurate) output as libpng-1.5.2 and earlier. - Moved definitions of PNG_HAVE_IHDR, PNG_AFTER_IDAT, and PNG_HAVE_PLTE - outside of an unknown-chunk block in png.h because they are also - needed for other uses. - -Version 1.5.4beta02 [June 14, 2011] - Fixed and clarified LEGACY 16-to-8 scaling code. - Added png_set_chop_16() API, to match inaccurate results from previous - libpng versions. - Removed the ACCURATE and LEGACY options (they are no longer useable) - Use the old scaling method for background if png_set_chop_16() was - called. - Made png_set_chop_16() API removeable by disabling PNG_CHOP_16_TO_8_SUPPORTED - -Version 1.5.4beta03 [June 15, 2011] - Fixed a problem in png_do_expand_palette() exposed by optimization in - 1.5.3beta06 - Also removed a spurious and confusing "trans" member ("trans") from png_info. - The palette expand optimization prevented expansion to an intermediate RGBA - form if tRNS was present but alpha was marked to be stripped; this exposed - a check for tRNS in png_do_expand_palette() which is inconsistent with the - code elsewhere in libpng. - Correction to the expand_16 code; removed extra instance of - png_set_scale_16_to_8 from pngpriv.h - -Version 1.5.4beta04 [June 16, 2011] - Added a missing "#ifdef PNG_READ_BACKGROUND_SUPPORTED/#endif" in pngrtran.c - Added PNG_TRANSFORM_CHOP_16 to the high-level read transforms. - Made PNG_READ_16_TO_8_ACCURATE_SCALE configurable again. If this is - not enabled, png_set_strip_16() and png_do_scale_16_to_8() aren't built. - Revised contrib/visupng, gregbook, and pngminim to demonstrate chop_16_to_8 - -Version 1.5.4beta05 [June 16, 2011] - Renamed png_set_strip_16() to png_set_scale_16() and renamed - png_set_chop_16() to png_set_strip(16) in an attempt to minimize the - behavior changes between libpng14 and libpng15. - -Version 1.5.4beta06 [June 18, 2011] - Fixed new bug that was causing both strip_16 and scale_16 to be applied. - -Version 1.5.4beta07 [June 19, 2011] - Fixed pngvalid, simplified macros, added checking for 0 in sCAL. - The ACCURATE scale macro is no longer defined in 1.5 - call the - png_scale_16_to_8 API. Made sure that PNG_READ_16_TO_8 is still defined - if the png_strip_16_to_8 API is present. png_check_fp_number now - maintains some state so that positive, negative and zero values are - identified. sCAL uses these to be strictly spec conformant. - -Version 1.5.4beta08 [June 23, 2011] - Fixed pngvalid if ACCURATE_SCALE is defined. - Updated scripts/pnglibconf.h.prebuilt. - -Version 1.5.4rc01 [June 30, 2011] - Define PNG_ALLOCATED to "restrict" only if MSC_VER >= 1400. - -Version 1.5.4 [July 7, 2011] - No changes. - -Version 1.5.5beta01 [July 13, 2011] - Fixed some typos and made other minor changes in the manual. - Updated contrib/pngminus/makefile.std (Samuli Souminen) - -Version 1.5.5beta02 [July 14, 2011] - Revised Makefile.am and Makefile.in to look in the right directory for - pnglibconf.h.prebuilt - -Version 1.5.5beta03 [July 27, 2011] - Enabled compilation with g++ compiler. This compiler does not recognize - the file extension, so it always compiles with C++ rules. Made minor - changes to pngrutil.c to cast results where C++ expects it but C does not. - Minor editing of libpng.3 and libpng-manual.txt. - -Version 1.5.5beta04 [July 29, 2011] - Revised CMakeLists.txt (Clifford Yapp) - Updated commentary about the png_rgb_to_gray() default coefficients - in the manual and in pngrtran.c - -Version 1.5.5beta05 [August 17, 2011] - Prevent unexpected API exports from non-libpng DLLs on Windows. The "_DLL" - is removed from the test of whether a DLL is being built (this erroneously - caused the libpng APIs to be marked as DLL exports in static builds under - Microsoft Visual Studio). Almost all of the libpng building configuration - is moved from pngconf.h to pngpriv.h, but PNG_DLL_EXPORT remains in - pngconf.h, though, so that it is colocated with the import definition (it - is no longer used anywhere in the installed headers). The VStudio project - definitions have been cleaned up: "_USRDLL" has been removed from the - static library builds (this was incorrect), and PNG_USE_DLL has been added - to pngvalid to test the functionality (pngtest does not supply it, - deliberately). The spurious "_EXPORTS" has been removed from the - libpng build (all these errors were a result of copy/paste between project - configurations.) - Added new types and internal functions for CIE RGB end point handling to - pngpriv.h (functions yet to be implemented). - -Version 1.5.5beta06 [August 26, 2011] - Ensure the CMAKE_LIBRARY_OUTPUT_DIRECTORY is set in CMakeLists.txt - (Clifford Yap) - Fixes to rgb_to_gray and cHRM XYZ APIs (John Bowler): - The rgb_to_gray code had errors when combined with gamma correction. - Some pixels were treated as true grey when they weren't and such pixels - and true grey ones were not gamma corrected (the original value of the - red component was used instead). APIs to get and set cHRM using color - space end points have been added and the rgb_to_gray code that defaults - based on cHRM, and the divide-by-zero bug in png_handle_cHRM (CERT - VU#477046, CVE-2011-3328, introduced in 1.5.4) have been corrected. - A considerable number of tests has been added to pngvalid for the - rgb_to_gray transform. - Arithmetic errors in rgb_to_gray whereby the calculated gray value was - truncated to the bit depth rather than rounded have been fixed except in - the 8-bit non-gamma-corrected case (where consistency seems more important - than correctness.) The code still has considerable inaccuracies in the - 8-bit case because 8-bit linear arithmetic is used. - -Version 1.5.5beta07 [September 7, 2011] - Added "$(ARCH)" option to makefile.darwin - Added SunOS support to configure.ac and Makefile.am - Changed png_chunk_benign_error() to png_warning() in png.c, in - png_XYZ_from_xy_checked(). - -Version 1.5.5beta08 [September 10, 2011] - Fixed 64-bit compilation errors (gcc). The errors fixed relate - to conditions where types that are 32 bits in the GCC 32-bit - world (uLong and png_size_t) become 64 bits in the 64-bit - world. This produces potential truncation errors which the - compiler correctly flags. - Relocated new HAVE_SOLARIS_LD definition in configure.ac - Constant changes for 64-bit compatibility (removal of L suffixes). The - 16-bit cases still use "L" as we don't have a 16-bit test system. - -Version 1.5.5rc01 [September 15, 2011] - Removed "L" suffixes in pngpriv.h - -Version 1.5.5 [September 22, 2011] - No changes. - -Version 1.5.6beta01 [September 22, 2011] - Fixed some 64-bit type conversion warnings in pngrtran.c - Moved row_info from png_struct to a local variable. - The various interlace mask arrays have been made into arrays of - bytes and made PNG_CONST and static (previously some arrays were - marked PNG_CONST and some weren't). - Additional checks have been added to the transform code to validate the - pixel depths after the transforms on both read and write. - Removed some redundant code from pngwrite.c, in png_destroy_write_struct(). - Changed chunk reading/writing code to use png_uint_32 instead of png_byte[4]. - This removes the need to allocate temporary strings for chunk names on - the stack in the read/write code. Unknown chunk handling still uses the - string form because this is exposed in the API. - -Version 1.5.6beta02 [September 26, 2011] - Added a note in the manual the png_read_update_info() must be called only - once with a particular info_ptr. - Fixed a typo in the definition of the new PNG_STRING_FROM_CHUNK(s,c) macro. - -Version 1.5.6beta03 [September 28, 2011] - Revised test-pngtest.sh to report FAIL when pngtest fails. - Added "--strict" option to pngtest, to report FAIL when the failure is - only because the resulting valid files are different. - Revised CMakeLists.txt to work with mingw and removed some material from - CMakeLists.txt that is no longer useful in libpng-1.5. - -Version 1.5.6beta04 [October 5, 2011] - Fixed typo in Makefile.in and Makefile.am ("-M Wl" should be "-M -Wl")." - -Version 1.5.6beta05 [October 12, 2011] - Speed up png_combine_row() for interlaced images. This reduces the generality - of the code, allowing it to be optimized for Adam7 interlace. The masks - passed to png_combine_row() are now generated internally, avoiding - some code duplication and localizing the interlace handling somewhat. - Align png_struct::row_buf - previously it was always unaligned, caused by - a bug in the code that attempted to align it; the code needs to subtract - one from the pointer to take account of the filter byte prepended to - each row. - Optimized png_combine_row() when rows are aligned. This gains a small - percentage for 16-bit and 32-bit pixels in the typical case where the - output row buffers are appropriately aligned. The optimization was not - previously possible because the png_struct buffer was always misaligned. - Fixed bug in png_write_chunk_header() debug print, introduced in 1.5.6beta01. - -Version 1.5.6beta06 [October 17, 2011] - Removed two redundant tests for unitialized row. - Fixed a relatively harmless memory overwrite in compressed text writing - with a 1 byte zlib buffer. - Add ability to call png_read_update_info multiple times to pngvalid.c. - Fixes for multiple calls to png_read_update_info. These fixes attend to - most of the errors revealed in pngvalid, however doing the gamma work - twice results in inaccuracies that can't be easily fixed. There is now - a warning in the code if this is going to happen. - Turned on multiple png_read_update_info in pngvalid transform tests. - Prevent libpng from overwriting unused bits at the end of the image when - it is not byte aligned, while reading. Prior to libpng-1.5.6 libpng would - overwrite the partial byte at the end of each row if the row width was not - an exact multiple of 8 bits and the image is not interlaced. - -Version 1.5.6beta07 [October 21, 2011] - Made png_ptr->prev_row an aligned pointer into png_ptr->big_prev_row - (Mans Rullgard). - -Version 1.5.6rc01 [October 26, 2011] - Changed misleading "Missing PLTE before cHRM" warning to "Out of place cHRM" - -Version 1.5.6rc02 [October 27, 2011] - Added LSR() macro to defend against buggy compilers that evaluate non-taken - code branches and complain about out-of-range shifts. - -Version 1.5.6rc03 [October 28, 2011] - Renamed the LSR() macro to PNG_LSR() and added PNG_LSL() macro. - Fixed compiler warnings with Intel and MSYS compilers. The logical shift - fix for Microsoft Visual C is required by other compilers, so this - enables that fix for all compilers when using compile-time constants. - Under MSYS 'byte' is a name declared in a system header file, so we - changed the name of a local variable to avoid the warnings that result. - Added #define PNG_ALIGN_TYPE PNG_ALIGN_NONE to contrib/pngminim/*/pngusr.h - -Version 1.5.6 [November 3, 2011] - No changes. - -Version 1.5.7beta01 [November 4, 2011] - Added support for ARM processor, when decoding all PNG up-filtered rows - and any other-filtered rows with 3 or 4 bytes per pixel (Mans Rullgard). - Fixed bug in pngvalid on early allocation failure; fixed type cast in - pngmem.c; pngvalid would attempt to call png_error() if the allocation - of a png_struct or png_info failed. This would probably have led to a - crash. The pngmem.c implementation of png_malloc() included a cast - to png_size_t which would fail on large allocations on 16-bit systems. - Fix for the preprocessor of the Intel C compiler. The preprocessor - splits adjacent @ signs with a space; this changes the concatentation - token from @-@-@ to PNG_JOIN; that should work with all compiler - preprocessors. - Paeth filter speed improvements from work by Siarhei Siamashka. This - changes the 'Paeth' reconstruction function to improve the GCC code - generation on x86. The changes are only part of the suggested ones; - just the changes that definitely improve speed and remain simple. - The changes also slightly increase the clarity of the code. - -Version 1.5.7beta02 [November 11, 2011] - Check compression_type parameter in png_get_iCCP and remove spurious - casts. The compression_type parameter is always assigned to, so must - be non-NULL. The cast of the profile length potentially truncated the - value unnecessarily on a 16-bit int system, so the cast of the (byte) - compression type to (int) is specified by ANSI-C anyway. - Fixed FP division by zero in pngvalid.c; the 'test_pixel' code left - the sBIT fields in the test pixel as 0, which resulted in a floating - point division by zero which was irrelevant but causes systems where - FP exceptions cause a crash. Added code to pngvalid to turn on FP - exceptions if the appropriate glibc support is there to ensure this is - tested in the future. - Updated scripts/pnglibconf.mak and scripts/makefile.std to handle the - new PNG_JOIN macro. - Added versioning to pnglibconf.h comments. - Simplified read/write API initial version; basic read/write tested on - a variety of images, limited documentation (in the header file.) - Installed more accurate linear to sRGB conversion tables. The slightly - modified tables reduce the number of 16-bit values that - convert to an off-by-one 8-bit value. The "makesRGB.c" code that was used - to generate the tables is now in a contrib/sRGBtables sub-directory. - -Version 1.5.7beta03 [November 17, 2011] - Removed PNG_CONST from the sRGB table declarations in pngpriv.h and png.c - Added run-time detection of NEON support. - Added contrib/libtests; includes simplified API test and timing test and - a color conversion utility for rapid checking of failed 'pngstest' results. - Multiple transform bug fixes plus a work-round for double gamma correction. - libpng does not support more than one transform that requires linear data - at once - if this is tried typically the results is double gamma - correction. Since the simplified APIs can need rgb to gray combined with - a compose operation it is necessary to do one of these outside the main - libpng transform code. This check-in also contains fixes to various bugs - in the simplified APIs themselves and to some bugs in compose and rgb to - gray (on palette) itself. - Fixes for C++ compilation using g++ When libpng source is compiled - using g++. The compiler imposes C++ rules on the C source; thus it - is desireable to make the source work with either C or C++ rules - without throwing away useful error information. This change adds - png_voidcast to allow C semantic (void*) cases or the corresponding - C++ static_cast operation, as appropriate. - Added --noexecstack to assembler file compilation. GCC does not set - this on assembler compilation, even though it does on C compilation. - This creates security issues if assembler code is enabled; the - work-around is to set it by default in the flags for $(CCAS) - Work around compilers that don't support declaration of const data. Some - compilers fault 'extern const' data declarations (because the data is - not initialized); this turns on const-ness only for compilers where - this is known to work. - -Version 1.5.7beta04 [November 17, 2011] - Since the gcc driver does not recognize the --noexecstack flag, we must - use the -Wa prefix to have it passed through to the assembler. - Also removed a duplicate setting of this flag. - Added files that were omitted from the libpng-1.5.7beta03 zip distribution. - -Version 1.5.7beta05 [November 25, 2011] - Removed "zTXt" from warning in generic chunk decompression function. - Validate time settings passed to pngset() and png_convert_to_rfc1123() - (Frank Busse). - Added MINGW support to CMakeLists.txt - Reject invalid compression flag or method when reading the iTXt chunk. - Backed out 'simplified' API changes. The API seems too complex and there - is a lack of consensus or enthusiasm for the proposals. The API also - reveals significant bugs inside libpng (double gamma correction and the - known bug of being unable to retrieve a corrected palette). It seems - better to wait until the bugs, at least, are corrected. - Moved pngvalid.c into contrib/libtests - Rebuilt Makefile.in, configure, etc., with autoconf-2.68 - -Version 1.5.7rc01 [December 1, 2011] - Replaced an "#if" with "#ifdef" in pngrtran.c - Revised #if PNG_DO_BC block in png.c (use #ifdef and add #else) - -Version 1.5.7rc02 [December 5, 2011] - Revised project files and contrib/pngvalid/pngvalid.c to account for - the relocation of pngvalid into contrib/libtests. - Revised pngconf.h to use " __declspec(restrict)" only when MSC_VER >= 1400, - as in libpng-1.5.4. - Put CRLF line endings in the owatcom project files. - -Version 1.5.7rc03 [December 7, 2011] - Updated CMakeLists.txt to account for the relocation of pngvalid.c - -Version 1.5.7 [December 15, 2011] - Minor fixes to pngvalid.c for gcc 4.6.2 compatibility to remove warnings - reported by earlier versions. - Fixed minor memset/sizeof errors in pngvalid.c. - -Version 1.6.0beta01 [December 15, 2011] - Removed machine-generated configure files from the GIT repository (they will - continue to appear in the tarball distributions and in the libpng15 and - earlier GIT branches). - Restored the new 'simplified' API, which was started in libpng-1.5.7beta02 - but later deleted from libpng-1.5.7beta05. - Added example programs for the new 'simplified' API. - Added ANSI-C (C90) headers and require them, and take advantage of the - change. Also fixed some of the projects/* and contrib/* files that needed - updates for libpng16 and the move of pngvalid.c. - With this change the required ANSI-C header files are assumed to exist: the - implementation must provide float.h, limits.h, stdarg.h and stddef.h and - libpng relies on limits.h and stddef.h existing and behaving as defined - (the other two required headers aren't used). Non-ANSI systems that don't - have stddef.h or limits.h will have to provide an appropriate fake - containing the relevant types and #defines. - The use of FAR/far has been eliminated and the definition of png_alloc_size_t - is now controlled by a flag so that 'small size_t' systems can select it - if necessary. Libpng 1.6 may not currently work on such systems -- it - seems likely that it will ask 'malloc' for more than 65535 bytes with any - image that has a sufficiently large row size (rather than simply failing - to read such images). - New tools directory containing tools used to generate libpng code. - Fixed race conditions in parallel make builds. With higher degrees of - parallelism during 'make' the use of the same temporary file names such - as 'dfn*' can result in a race where a temporary file from one arm of the - build is deleted or overwritten in another arm. This changes the - temporary files for suffix rules to always use $* and ensures that the - non-suffix rules use unique file names. - -Version 1.6.0beta02 [December 21, 2011] - Correct configure builds where build and source directories are separate. - The include path of 'config.h' was erroneously made relative in pngvalid.c - in libpng 1.5.7. - -Version 1.6.0beta03 [December 22, 2011] - Start-up code size improvements, error handler flexibility. These changes - alter how the tricky allocation of the initial png_struct and png_info - structures are handled. png_info is now handled in pretty much the same - way as everything else, except that the allocations handle NULL return - silently. png_struct is changed in a similar way on allocation and on - deallocation a 'safety' error handler is put in place (which should never - be required). The error handler itself is changed to permit mismatches - in the application and libpng error buffer size; however, this means a - silent change to the API to return the jmp_buf if the size doesn't match - the size from the libpng compilation; libpng now allocates the memory and - this may fail. Overall these changes result in slight code size - reductions; however, this is a reduction in code that is always executed - so is particularly valuable. Overall on a 64-bit system the libpng DLL - decreases in code size by 1733 bytes. pngerror.o increases in size by - about 465 bytes because of the new functionality. - Added png_convert_to_rfc1123_buffer() and deprecated png_convert_to_rfc1123() - to avoid including a spurious buffer in the png_struct. - -Version 1.6.0beta04 [December 30, 2011] - Regenerated configure scripts with automake-1.11.2 - Eliminated png_info_destroy(). It is now used only in png.c and only calls - one other internal function and memset(). - Enabled png_get_sCAL_fixed() if floating point APIs are enabled. Previously - it was disabled whenever internal fixed point arithmetic was selected, - which meant it didn't exist even on systems where FP was available but not - preferred. - Added pngvalid.c compile time checks for const APIs. - Implemented 'restrict' for png_info and png_struct. Because of the way - libpng works both png_info and png_struct are always accessed via a - single pointer. This means adding C99 'restrict' to the pointer gives - the compiler some opportunity to optimize the code. This change allows - that. - Moved AC_MSG_CHECKING([if libraries can be versioned]) later to the proper - location in configure.ac (Gilles Espinasse). - Changed png_memcpy to C assignment where appropriate. Changed all those - uses of png_memcpy that were doing a simple assignment to assignments - (all those cases where the thing being copied is a non-array C L-value). - Added some error checking to png_set_*() routines. - Removed the reference to the non-exported function png_memcpy() from - example.c. - Fixed the Visual C 64-bit build - it requires jmp_buf to be aligned, but - it had become misaligned. - Revised contrib/pngminus/pnm2png.c to avoid warnings when png_uint_32 - and unsigned long are of different sizes. - -Version 1.6.0beta05 [January 15, 2012] - Updated manual with description of the simplified API (copied from png.h) - Fix bug in pngerror.c: some long warnings were being improperly truncated - (CVE-2011-3464, bug introduced in libpng-1.5.3beta05). - -Version 1.6.0beta06 [January 24, 2012] - Added palette support to the simplified APIs. This commit - changes some of the macro definitions in png.h, app code - may need corresponding changes. - Increased the formatted warning buffer to 192 bytes. - Added color-map support to simplified API. This is an initial version for - review; the documentation has not yet been updated. - Fixed Min/GW uninstall to remove libpng.dll.a - -Version 1.6.0beta07 [January 28, 2012] - Eliminated Intel icc/icl compiler warnings. The Intel (GCC derived) - compiler issues slightly different warnings from those issued by the - current vesions of GCC. This eliminates those warnings by - adding/removing casts and small code rewrites. - Updated configure.ac from autoupdate: added --enable-werror option. - Also some layout regularization and removal of introduced tab characters - (replaced with 3-character indentation). Obsolete macros identified by - autoupdate have been removed; the replacements are all in 2.59 so - the pre-req hasn't been changed. --enable-werror checks for support - for -Werror (or the given argument) in the compiler. This mimics the - gcc configure option by allowing -Werror to be turned on safely; without - the option the tests written in configure itself fail compilation because - they cause compiler warnings. - Rewrote autogen.sh to run autoreconf instead of running tools one-by-one. - Conditionalize the install rules for MINGW and CYGWIN in CMakeLists.txt and - set CMAKE_LIBRARY_OUTPUT_DIRECTORY to "lib" on all platforms (C. Yapp). - Freeze libtool files in the 'scripts' directory. This version of autogen.sh - attempts to dissuade people from running it when it is not, or should not, - be necessary. In fact, autogen.sh does not work when run in a libpng - directory extracted from a tar distribution anymore. You must run it in - a GIT clone instead. - Added two images to contrib/pngsuite (1-bit and 2-bit transparent grayscale), - and renamed three whose names were inconsistent with those in - pngsuite/README.txt. - -Version 1.6.0beta08 [February 1, 2012] - Fixed Image::colormap misalignment in pngstest.c - Check libtool/libtoolize version number (2.4.2) in configure.ac - Divide test-pngstest.sh into separate pngstest runs for basic and - transparent images. - Moved automake options to AM_INIT_AUTOMAKE in configure.ac - Added color-tests, silent-rules (Not yet implemented in Makefile.am) and - version checking to configure.ac - Improved pngstest speed by not doing redundant tests and add const to - the background parameter of png_image_finish_read. The --background - option is now done automagically only when required, so that commandline - option no longer exists. - Cleaned up pngpriv.h to consistently declare all functions and data. - Also eliminated PNG_CONST_DATA, which is apparently not needed but we - can't be sure until it is gone. - Added symbol prefixing that allows all the libpng external symbols - to be prefixed (suggested by Reuben Hawkins). - Updated "ftbb*.png" list in the owatcom and vstudio projects. - Fixed 'prefix' builds on clean systems. The generation of pngprefix.h - should not require itself. - Updated INSTALL to explain that autogen.sh must be run in a GIT clone, - not in a libpng directory extracted from a tar distribution. - -Version 1.6.0beta09 [February 1, 2012] - Reverted the prebuilt configure files to libpng-1.6.0beta05 condition. - -Version 1.6.0beta10 [February 3, 2012] - Added Z_SOLO for zlib-1.2.6+ and correct pngstest tests - Updated list of test images in CMakeLists.txt - Updated the prebuilt configure files to current condition. - Revised INSTALL information about autogen.sh; it works in tar distributions. - -Version 1.6.0beta11 [February 16, 2012] - Fix character count in pngstest command in projects/owatcom/pngstest.tgt - Revised test-pngstest.sh to report PASS/FAIL for each image. - Updated documentation about the simplified API. - Corrected estimate of error in libpng png_set_rgb_to_gray API. The API is - extremely inaccurate for sRGB conversions because it uses an 8-bit - intermediate linear value and it does not use the sRGB transform, so it - suffers from the known instability in gamma transforms for values close - to 0 (see Poynton). The net result is that the calculation has a maximum - error of 14.99/255; 0.5/255^(1/2.2). pngstest now uses 15 for the - permitted 8-bit error. This may still not be enough because of arithmetic - error. - Removed some unused arrays (with #ifdef) from png_read_push_finish_row(). - Fixed a memory overwrite bug in simplified read of RGB PNG with - non-linear gamma Also bugs in the error checking in pngread.c and changed - quite a lot of the checks in pngstest.c to be correct; either correctly - written or not over-optimistic. The pngstest changes are insufficient to - allow all possible RGB transforms to be passed; pngstest cmppixel needs - to be rewritten to make it clearer which errors it allows and then changed - to permit known inaccuracies. - Removed tests for no-longer-used *_EMPTY_PLTE_SUPPORTED from pngstruct.h - Fixed fixed/float API export conditionals. 1) If FIXED_POINT or - FLOATING_POINT options were switched off, png.h ended up with lone ';' - characters. This is not valid ANSI-C outside a function. The ';' - characters have been moved inside the definition of PNG_FP_EXPORT and - PNG_FIXED_EXPORT. 2) If either option was switched off, the declaration - of the corresponding functions were completely omitted, even though some - of them are still used internally. The result is still valid, but - produces warnings from gcc with some warning options (including -Wall). The - fix is to cause png.h to declare the functions with PNG_INTERNAL_FUNCTION - when png.h is included from pngpriv.h. - Check for invalid palette index while reading paletted PNG. When one is - found, issue a warning and increase png_ptr->num_palette accordingly. - Apps are responsible for checking to see if that happened. - -Version 1.6.0beta12 [February 18, 2012] - Do not increase num_palette on invalid_index. - Relocated check for invalid palette index to pngrtran.c, after unpacking - the sub-8-bit pixels. - Fixed CVE-2011-3026 buffer overrun bug. This bug was introduced when - iCCP chunk support was added at libpng-1.0.6. Deal more correctly with the - test on iCCP chunk length. Also removed spurious casts that may hide - problems on 16-bit systems. - -Version 1.6.0beta13 [February 24, 2012] - Eliminated redundant png_push_read_tEXt|zTXt|iTXt|unknown code from - pngpread.c and use the sequential png_handle_tEXt, etc., in pngrutil.c; - now that png_ptr->buffer is inaccessible to applications, the special - handling is no longer useful. - Added PNG_SAFE_LIMITS feature to pnglibconf.dfa, pngpriv.h, and new - pngusr.dfa to reset the user limits to safe ones if PNG_SAFE_LIMITS is - defined. To enable, use "CPPFLAGS=-DPNG_SAFE_LIMITS_SUPPORTED=1" on the - configure command or put #define PNG_SAFE_LIMITS_SUPPORTED in - pnglibconf.h.prebuilt and pnglibconf.h. - -Version 1.6.0beta14 [February 27, 2012] - Added information about the new limits in the manual. - Updated Makefile.in - -Version 1.6.0beta15 [March 2, 2012] - Removed unused "current_text" members of png_struct and the png_free() - of png_ptr->current_text from pngread.c - Rewrote pngstest.c for substantial speed improvement. - Fixed transparent pixel and 16-bit rgb tests in pngstest and removed a - spurious check in pngwrite.c - Added PNG_IMAGE_FLAG_FAST for the benefit of applications that store - intermediate files, or intermediate in-memory data, while processing - image data with the simplified API. The option makes the files larger - but faster to write and read. pngstest now uses this by default; this - can be disabled with the --slow option. - Improved pngstest fine tuning of error numbers, new test file generator. - The generator generates images that test the full range of sample values, - allow the error numbers in pngstest to be tuned and checked. makepng - also allows generation of images with extra chunks, although this is - still work-in-progress. - Added check for invalid palette index while reading. - Fixed some bugs in ICC profile writing. The code should now accept - all potentially valid ICC profiles and reject obviously invalid ones. - It now uses png_error() to do so rather than casually writing a PNG - without the necessary color data. - Removed whitespace from the end of lines in all source files and scripts. - -Version 1.6.0beta16 [March 6, 2012] - Relocated palette-index checking function from pngrutil.c to pngtrans.c - Added palette-index checking while writing. - Changed png_inflate() and calling routines to avoid overflow problems. - This is an intermediate check-in that solves the immediate problems and - introduces one performance improvement (avoiding a copy via png_ptr->zbuf.) - Further changes will be made to make ICC profile handling more secure. - Fixed build warnings (MSVC, GCC, GCC v3). Cygwin GCC with default options - declares 'index' as a global, causing a warning if it is used as a local - variable. GCC 64-bit warns about assigning a (size_t) (unsigned 64-bit) - to an (int) (signed 32-bit). MSVC, however, warns about using the - unary '-' operator on an unsigned value (even though it is well defined - by ANSI-C to be ~x+1). The padding calculation was changed to use a - different method. Removed the tests on png_ptr->pass. - Added contrib/libtests/tarith.c to test internal arithmetic functions from - png.c. This is a libpng maintainer program used to validate changes to the - internal arithmetic functions. - Made read 'inflate' handling like write 'deflate' handling. The read - code now claims and releases png_ptr->zstream, like the write code. - The bug whereby the progressive reader failed to release the zstream - is now fixed, all initialization is delayed, and the code checks for - changed parameters on deflate rather than always calling - deflatedEnd/deflateInit. - Validate the zTXt strings in pngvalid. - Added code to validate the windowBits value passed to deflateInit2(). - If the call to deflateInit2() is wrong a png_warning will be issued - (in fact this is harmless, but the PNG data produced may be sub-optimal). - -Version 1.6.0beta17 [March 10, 2012] - Fixed PNG_LIBPNG_BUILD_BASE_TYPE definition. - Reject all iCCP chunks after the first, even if the first one is invalid. - Deflate/inflate was reworked to move common zlib calls into single - functions [rw]util.c. A new shared keyword check routine was also added - and the 'zbuf' is no longer allocated on progressive read. It is now - possible to call png_inflate() incrementally. A warning is no longer - issued if the language tag or translated keyword in the iTXt chunk - has zero length. - If benign errors are disabled use maximum window on ancilliary inflate. - This works round a bug introduced in 1.5.4 where compressed ancillary - chunks could end up with a too-small windowBits value in the deflate - header. - -Version 1.6.0beta18 [March 16, 2012] - Issue a png_benign_error() instead of png_warning() about bad palette index. - In pngtest, treat benign errors as errors if "-strict" is present. - Fixed an off-by-one error in the palette index checking function. - Fixed a compiler warning under Cygwin (Windows-7, 32-bit system) - Revised example.c to put text strings in a temporary character array - instead of directly assigning string constants to png_textp members. - This avoids compiler warnings when -Wwrite-strings is enabled. - Added output flushing to aid debugging under Visual Studio. Unfortunately - this is necessary because the VS2010 output window otherwise simply loses - the error messages on error (they weren't flushed to the window before - the process exited, apparently!) - Added configuration support for benign errors and changed the read - default. Also changed some warnings in the iCCP and sRGB handling - from to benign errors. Configuration now makes read benign - errors warnings and write benign errors to errors by default (thus - changing the behavior on read). The simplified API always forces - read benign errors to warnings (regardless of the system default, unless - this is disabled in which case the simplified API can't be built.) - -Version 1.6.0beta19 [March 18, 2012] - Work around for duplicate row start calls; added warning messages. - This turns on PNG_FLAG_DETECT_UNINITIALIZED to detect app code that - fails to call one of the 'start' routines (not enabled in libpng-1.5 - because it is technically an API change, since it did normally work - before.) It also makes duplicate calls to png_read_start_row (an - internal function called at the start of the image read) benign, as - they were before changes to use png_inflate_claim. Somehow webkit is - causing this to happen; this is probably a mis-feature in the zlib - changes so this commit is only a work-round. - Removed erroneous setting of DETECT_UNINITIALIZED and added more - checks. The code now does a png_error if an attempt is made to do the - row initialization twice; this is an application error and it has - serious consequences because the transform data in png_struct is - changed by each call. - Added application error reporting and added chunk names to read - benign errors; also added --strict to pngstest - not enabled - yet because a warning is produced. - Avoid the double gamma correction warning in the simplified API. - This allows the --strict option to pass in the pngstest checks - -Version 1.6.0beta20 [March 29, 2012] - Changed chunk handler warnings into benign errors, incrementally load iCCP - Added checksum-icc.c to contrib/tools - Prevent PNG_EXPAND+PNG_SHIFT doing the shift twice. - Recognize known sRGB ICC profiles while reading; prefer writing the - iCCP profile over writing the sRGB chunk, controlled by the - PNG_sRGB_PROFILE_CHECKS option. - Revised png_set_text_2() to avoid potential memory corruption (fixes - CVE-2011-3048, also known as CVE-2012-3425). - -Version 1.6.0beta21 [April 27, 2012] - Revised scripts/makefile.darwin: use system zlib; remove quotes around - architecture list; add missing ppc architecture; add architecture options - to shared library link; don't try to create a shared lib based on missing - RELEASE variable. - Enable png_set_check_for_invalid_index() for both read and write. - Removed #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED in pngpriv.h around - declaration of png_handle_unknown(). - Added -lssp_nonshared in a comment in scripts/makefile.freebsd - and changed deprecated NOOBJ and NOPROFILE to NO_OBJ and NO_PROFILE. - -Version 1.6.0beta22 [May 23, 2012] - Removed need for -Wno-cast-align with clang. clang correctly warns on - alignment increasing pointer casts when -Wcast-align is passed. This - fixes the cases that clang warns about either by eliminating the - casts from png_bytep to png_uint_16p (pngread.c), or, for pngrutil.c - where the cast is previously verified or pngstest.c where it is OK, by - introducing new png_aligncast macros to do the cast in a way that clang - accepts. - -Version 1.6.0beta23 [June 6, 2012] - Revised CMakeLists.txt to not attempt to make a symlink under mingw. - Made fixes for new optimization warnings from gcc 4.7.0. The compiler - performs an optimization which is safe; however it then warns about it. - Changing the type of 'palette_number' in pngvalid.c removes the warning. - Do not depend upon a GCC feature macro being available for use in generating - the linker mapfile symbol prefix. - Improved performance of new do_check_palette_indexes() function (only - update the value when it actually increases, move test for whether - the check is wanted out of the function. - -Version 1.6.0beta24 [June 7, 2012] - Don't check palette indexes if num_palette is 0 (as it can be in MNG files). - -Version 1.6.0beta25 [June 16, 2012] - Revised png_set_keep_unknown_chunks() so num_chunks < 0 means ignore all - unknown chunks and all known chunks except for IHDR, PLTE, tRNS, IDAT, - and IEND. Previously it only meant ignore all unknown chunks, the - same as num_chunks == 0. Revised png_image_skip_unused_chunks() to - provide a list of chunks to be processed instead of a list of chunks to - ignore. Revised contrib/gregbook/readpng2.c accordingly. - -Version 1.6.0beta26 [July 10, 2012] - Removed scripts/makefile.cegcc from the *.zip and *.7z distributions; it - depends on configure, which is not included in those archives. - Moved scripts/chkfmt to contrib/tools. - Changed "a+w" to "u+w" in Makefile.in to fix CVE-2012-3386. - -Version 1.6.0beta27 [August 11, 2012] - Do not compile PNG_DEPRECATED, PNG_ALLOC and PNG_PRIVATE when __GNUC__ < 3. - Do not use __restrict when GNUC is <= 3.1 - Removed references to png_zalloc() and png_zfree() from the manual. - Fixed configurations where floating point is completely disabled. Because - of the changes to support symbol prefixing PNG_INTERNAL_FUNCTION declares - floating point APIs during libpng builds even if they are completely - disabled. This requires the png floating point types (png_double*) to be - declared even though the functions are never actually defined. This - change provides a dummy definition so that the declarations work, yet any - implementation will fail to compile because of an incomplete type. - Re-eliminated the use of strcpy() in pngtest.c. An unncessary use of - strcpy() was accidentally re-introduced in libpng16; this change replaces - it with strncpy(). - Eliminated use of png_sizeof(); use sizeof() instead. - Use a consistent style for (sizeof type) and (sizeof (array)) - Cleanup of png_set_filler(). This function does very different things on - read and write. In libpng 1.6 the two cases can be distinguished and - considerable code cleanup, and extra error checking, is possible. This - makes calls on the write side that have no effect be ignored with a - png_app_error(), which can be disabled in the app using - png_set_benign_errors(), and removes the spurious use of usr_channels - on the read side. - Insist on autotools 1.12.1 for git builds because there are security issues - with 1.12 and insisting on anything less would allow 1.12 to be used. - Removed info_ptr->signature[8] from WRITE-only builds. - Add some conditions for compiling png_fixed(). This is a small function - but it requires "-lm" on some platforms. - Cause pngtest --strict to fail on any warning from libpng (not just errors) - and cause it not to fail at the comparison step if libpng lacks support - for writing chunks that it reads from the input (currently only implemented - for compressed text chunks). - Make all three "make check" test programs work without READ or WRITE support. - Now "make check" will succeed even if libpng is compiled with -DPNG_NO_READ - or -DPNG_NO_WRITE. The tests performed are reduced, but the basic reading - and writing of a PNG file is always tested by one or more of the tests. - Consistently use strlen(), memset(), memcpy(), and memcmp() instead of the - png_strlen(), png_memset(), png_memcpy(), and png_memcmp() macros. - Removed the png_sizeof(), png_strlen(), png_memset(), png_memcpy(), and - png_memcmp() macros. - Work around gcc 3.x and Microsoft Visual Studio 2010 complaints. Both object - to the split initialization of num_chunks. - -Version 1.6.0beta28 [August 29, 2012] - Unknown handling fixes and clean up. This adds more correct option - control of the unknown handling, corrects the pre-existing bug where - the per-chunk 'keep' setting is ignored and makes it possible to skip - IDAT chunks in the sequential reader (broken in earlier 1.6 versions). - There is a new test program, test-unknown.c, which is a work in progress - (not currently part of the test suite). Comments in the header files now - explain how the unknown handling works. - Allow fine grain control of unknown chunk APIs. This change allows - png_set_keep_unknown_chunks() to be turned off if not required and causes - both read and write to behave appropriately (on read this is only possible - if the user callback is used to handle unknown chunks). The change - also removes the support for storing unknown chunks in the info_struct - if the only unknown handling enabled is via the callback, allowing libpng - to be configured with callback reading and none of the unnecessary code. - Corrected fix for unknown handling in pngtest. This reinstates the - libpng handling of unknown chunks other than vpAg and sTER (including - unsafe-to-copy chunks which were dropped before) and eliminates the - repositioning of vpAg and sTER in pngtest.png by changing pngtest.png - (so the chunks are where libpng would put them). - Added "tunknown" test and corrected a logic error in png_handle_unknown() - when SAVE support is absent. Moved the shell test scripts for - contrib/libtests from the libpng top directory to contrib/libtests. - png_handle_unknown() must always read or skip the chunk, if - SAVE_UNKNOWN_CHUNKS is turned off *and* the application does not set - a user callback an unknown chunk will not be read, leading to a read - error, which was revealed by the "tunknown" test. - Cleaned up and corrected ICC profile handling. - contrib/libtests/makepng: corrected 'rgb' and 'gray' cases. profile_error - messages could be truncated; made a correct buffer size calculation and - adjusted pngerror.c appropriately. png_icc_check_* checking improved; - changed the functions to receive the correct color type of the PNG on read - or write and check that it matches the color space of the profile (despite - what the comments said before, there is danger in assuming the app will - cope correctly with an RGB profile on a grayscale image and, since it - violates the PNG spec, allowing it is certain to produce inconsistent - app behavior and might even cause app crashes.) Check that profiles - contain the tags needed to process the PNG (tags all required by the ICC - spec). Removed unused PNG_STATIC from pngpriv.h. - -Version 1.6.0beta29 [September 4, 2012] - Fixed the simplified API example programs to add the *colormap parameter - to several of he API and improved the error message if the version field - is not set. - Added contrib/examples/* to the *.zip and *.7z distributions. - Updated simplified API synopses and description of the png_image structure - in the manual. - Made makepng and pngtest produce identical PNGs, add "--relaxed" option - to pngtest. The "--relaxed" option turns off the benign errors that are - enabled by default in pre-RC builds. makepng can now write ICC profiles - where the length has not been extended to a multiple of 4, and pngtest - now intercepts all libpng errors, allowing the previously-introduced - "--strict test" on no warnings to actually work. - Improved ICC profile handling including cHRM chunk generation and fixed - Cygwin+MSVC build errors. The ICC profile handling now includes more - checking. Several errors that caused rejection of the profile are now - handled with a warning in such a way that the invalid profiles will be - read by default in release (but not pre-RC) builds but will not be - written by default. The easy part of handling the cHRM chunk is written, - where the ICC profile contains the required data. The more difficult - part plus guessing a gAMA value requires code to pass selected RGB values - through the profile. - -Version 1.6.0beta30 [October 24, 2012] - Changed ICC profile matrix/vector types to not depend on array type rules. - By the ANSI-C standard the new types should be identical to the previous - versions, and all known versions of gcc tested with the previous versions - except for GCC-4.2.1 work with this version. The change makes the ANSI-C - rule that const applied to an array of elements applies instead to the - elements in the array moot by explicitly applying const to the base - elements of the png_icc_matrix and png_icc_vector types. The accidental - (harmless) 'const' previously applied to the parameters of two of the - functions have also been removed. - Added a work around for GCC 4.2 optimization bug. - Marked the broken (bad white point) original HP sRGB profiles correctly and - correct comments. - Added -DZ_SOLO to contrib/pngminim/*/makefile to work with zlib-1.2.7 - Use /MDd for vstudio debug builds. Also added pngunkown to the vstudio - builds, fixed build errors and corrected a minor exit code error in - pngvalid if the 'touch' file name is invalid. - Add updated WARNING file to projects/vstudio from libpng 1.5/vstudio - Fixed build when using #define PNG_NO_READ_GAMMA in png_do_compose() in - pngrtran.c (Domani Hannes). - -Version 1.6.0beta31 [November 1, 2012] - Undid the erroneous change to vstudio/pngvalid build in libpng-1.6.0beta30. - Made pngvalid so that it will build outside the libpng source tree. - Made builds -DPNG_NO_READ_GAMMA compile (the unit tests still fail). - Made PNG_NO_READ_GAMMA switch off interfaces that depend on READ_GAMMA. - Prior to 1.6.0 switching off READ_GAMMA did unpredictable things to the - interfaces that use it (specifically, png_do_background in 1.4 would - simply display composite for grayscale images but do composition - with the incorrect arithmetic for color ones). In 1.6 the semantic - of -DPNG_NO_READ_GAMMA is changed to simply disable any interface that - depends on it; this obliges people who set it to consider whether they - really want it off if they happen to use any of the interfaces in - question (typically most users who disable it won't). - Fixed GUIDs in projects/vstudio. Some were duplicated or missing, - resulting in VS2010 having to update the files. - Removed non-working ICC profile support code that was mostly added to - libpng-1.6.0beta29 and beta30. There was too much code for too little - gain; implementing full ICC color correction may be desireable but is left - up to applications. - -Version 1.6.0beta32 [November 25, 2012] - Fixed an intermittent SEGV in pngstest due to an uninitialized array element. - Added the ability for contrib/libtests/makepng.c to make a PNG with just one - color. This is useful for debugging pngstest color inaccuracy reports. - Fixed error checking in the simplified write API (Olaf van der Spek) - Made png_user_version_check() ok to use with libpng version 1.10.x and later. - -Version 1.6.0beta33 [December 15, 2012] - Fixed typo in png.c (PNG_SET_CHUNK_MALLOC_MAX should be PNG_CHUNK_MALLOC_MAX) - that causes the MALLOC_MAX limit not to work (John Bowler) - Change png_warning() to png_app_error() in pngwrite.c and comment the - fall-through condition. - Change png_warning() to png_app_warning() in png_write_tRNS(). - Rearranged the ARM-NEON optimizations: Isolated the machine specific code - to the hardware subdirectory and added comments to pngrutil.c so that - implementors of other optimizations know what to do. - Fixed cases of unquoted DESTDIR in Makefile.am - Rebuilt Makefile.in, etc., with autoconf-2.69 and automake-1.12.5. - -Version 1.6.0beta34 [December 19, 2012] - Cleaned up whitespace in the synopsis portion of the manpage "libpng.3" - Disassembled the version number in scripts/options.awk (necessary for - building on SunOs). - -Version 1.6.0beta35 [December 23, 2012] - Made default Zlib compression settings be configurable. This adds #defines to - pnglibconf.h to control the defaults. - Fixed Windows build issues, enabled ARM compilation. Various warnings issued - by earlier versions of GCC fixed for Cygwin and Min/GW (which both use old - GCCs.) ARM support is enabled by default in zlib.props (unsupported by - Microsoft) and ARM compilation is made possible by deleting the check for - x86. The test programs cannot be run because they are not signed. - -Version 1.6.0beta36 [January 2, 2013] - Discontinued distributing libpng-1.x.x.tar.bz2. - Discontinued distributing libpng-1.7.0-1.6.0-diff.txt and similar. - Rebuilt configure with autoconf-2.69 (inadvertently not done in beta33) - Fixed 'make distcheck' on SUN OS - libpng.so was not being removed - -Version 1.6.0beta37 [January 10, 2013] - Fixed conceivable but difficult to repro overflow. Also added two test - programs to generate and test a PNG which should have the problem. - -Version 1.6.0beta39 [January 19, 2013] - Again corrected attempt at overflow detection in png_set_unknown_chunks(). - Added overflow detection in png_set_sPLT() and png_set_text_2(). - -Version 1.6.0beta40 [January 20, 2013] - Use consistent handling of overflows in text, sPLT and unknown png_set_* APIs - -Version 1.6.0rc01 [January 26, 2013] - No changes. - -Version 1.6.0rc02 [February 4, 2013] - Added png_get_palette_max() function. - -Version 1.6.0rc03 [February 5, 2013] - Fixed the png_get_palette_max API. - -Version 1.6.0rc04 [February 7, 2013] - Turn serial tests back on (recently turned off by autotools upgrade). - -Version 1.6.0rc05 [February 8, 2013] - Update manual about png_get_palette_max(). - -Version 1.6.0rc06 [February 9, 2013] - Fixed missing dependency in --prefix builds The intermediate - internal 'prefix.h' file can only be generated correctly after - pnglibconf.h, however the dependency was not in Makefile.am. The - symptoms are unpredictable depending on the order make chooses to - build pngprefix.h and pnglibconf.h, often the error goes unnoticed - because there is a system pnglibconf.h to use instead. - -Version 1.6.0rc07 [February 10, 2013] - Enclosed the new png_get_palette_max in #ifdef PNG_GET_PALETTE_MAX_SUPPORTED - block, and revised pnglibconf.h and pnglibconf.h.prebuilt accordingly. - -Version 1.6.0rc08 [February 10, 2013] - Fix typo in png.h #ifdef - -Version 1.6.0 [February 14, 2013] - No changes. - -Version 1.6.1beta01 [February 16, 2013] - Made symbol prefixing work with the ARM neon optimizations. Also allow - pngpriv.h to be included for preprocessor definitions only, so it can - be used in non-C/C++ files. Back ported from libpng 1.7. - Made sRGB check numbers consistent. - Ported libpng 1.5 options.awk/dfn file handling to 1.6, fixed one bug. - Removed cc -E workround, corrected png_get_palette_max API Tested on - SUN OS cc 5.9, which demonstrates the tokenization problem previously - avoided by using /lib/cpp. Since all .dfn output is now protected in - double quotes unless it is to be macro substituted the fix should - work everywhere. - Enabled parallel tests - back ported from libpng-1.7. - scripts/pnglibconf.dfa formatting improvements back ported from libpng17. - Fixed a race condition in the creation of the build 'scripts' directory - while building with a parallel make. - Use approved/supported Android method to check for NEON, use Linux/POSIX - 1003.1 API to check /proc/self/auxv avoiding buffer allocation and other - library calls (ported from libpng15). - -Version 1.6.1beta02 [February 19, 2013] - Use parentheses more consistently in "#if defined(MACRO)" tests. - Folded long lines. - Reenabled code to allow zero length PLTE chunks for MNG. - -Version 1.6.1beta03 [February 22, 2013] - Fixed ALIGNED_MEMORY support. - Allow run-time ARM NEON checking to be disabled. A new configure option: - --enable-arm-neon=always will stop the run-time checks. New checks - within arm/arm_init.c will cause the code not to be compiled unless - __ARM_NEON__ is set. This should make it fail safe (if someone asks - for it on then the build will fail if it can't be done.) - Updated the INSTALL document. - -Version 1.6.1beta04 [February 27, 2013] - Revised INSTALL to recommend using CPPFLAGS instead of INCLUDES. - Revised scripts/makefile.freebsd to respect ZLIBLIB and ZLIBINC. - Revised scripts/dfn.awk to work with the buggy MSYS awk that has trouble - with CRLF line endings. - -Version 1.6.1beta05 [March 1, 2013] - Avoid a possible memory leak in contrib/gregbook/readpng.c - -Version 1.6.1beta06 [March 4, 2013] - Better documentation of unknown handling API interactions. - Corrected Android builds and corrected libpng.vers with symbol - prefixing This adds an API to set optimization options externally, - providing an alternative and general solution for the non-portable - run-time tests used by the ARM Neon code. It also makes those tests - compile and link on Android. - The order of settings vs options in pnglibconf.h is reversed to allow - settings to depend on options and options can now set (or override) the - defaults for settings. - -Version 1.6.1beta07 [March 7, 2013] - Corrected simplified API default gamma for color-mapped output, added - a flag to change default. In 1.6.0 when the simplified API was used - to produce color-mapped output from an input image with no gamma - information the gamma assumed for the input could be different from - that assumed for non-color-mapped output. In particular 16-bit depth - input files were assumed to be sRGB encoded, whereas in the 'direct' - case they were assumed to have linear data. This was an error. The - fix makes the simplified API treat all input files the same way and - adds a new flag to the png_image::flags member to allow the - application/user to specify that 16-bit files contain sRGB data - rather than the default linear. - Fixed bugs in the pngpixel and makepng test programs. - -Version 1.6.1beta08 [March 7, 2013] - Fixed CMakelists.txt to allow building a single variant of the library - (Claudio Bley): - Introduced a PNG_LIB_TARGETS variable that lists all activated library - targets. It is an error if this variable ends up empty, ie. you have - to build at least one library variant. - Made the *_COPY targets only depend on library targets actually being build. - Use PNG_LIB_TARGETS to unify a code path. - Changed the CREATE_SYMLINK macro to expect the full path to a file as the - first argument. When symlinking the filename component of that path is - determined and used as the link target. - Use copy_if_different in the CREATE_SYMLINK macro. - -Version 1.6.1beta09 [March 13, 2013] - Eliminated two warnings from the Intel C compiler. The warnings are - technically valid, although a reasonable treatment of division would - show it to be incorrect. - -Version 1.6.1rc01 [March 21, 2013] - No changes. - -Version 1.6.1 [March 28, 2013] - No changes. - -Version 1.6.2beta01 [April 14, 2013] - Updated documentation of 1.5.x to 1.6.x changes in iCCP chunk handling. - Fixed incorrect warning of excess deflate data. End condition - the - warning would be produced if the end of the deflate stream wasn't read - in the last row. The warning is harmless. - Corrected the test on user transform changes on read. It was in the - png_set of the transform function, but that doesn't matter unless the - transform function changes the rowbuf size, and that is only valid if - transform_info is called. - Corrected a misplaced closing bracket in contrib/libtests/pngvalid.c - (Flavio Medeiros). - Corrected length written to uncompressed iTXt chunks (Samuli Suominen). - Bug was introduced in libpng-1.6.0. - -Version 1.6.2rc01 [April 18, 2013] - Added contrib/tools/fixitxt.c, to repair the erroneous iTXt chunk length - written by libpng-1.6.0 and 1.6.1. - Disallow storing sRGB information when the sRGB is not supported. - -Version 1.6.2rc02 [April 18, 2013] - Merge pngtest.c with libpng-1.7.0 - -Version 1.6.2rc03 [April 22, 2013] - Trivial spelling cleanup. - -Version 1.6.2rc04 and 1.6.2rc05 [omitted] - -Version 1.6.2rc06 [April 24, 2013] - Reverted to version 1.6.2rc03. Recent changes to arm/neon support - have been ported to libpng-1.7.0beta09 and will reappear in version - 1.6.3beta01. - -Version 1.6.2 [April 25, 2013] - No changes. - -Version 1.6.3beta01 [April 25, 2013] - Revised stack marking in arm/filter_neon.S and configure.ac. - Ensure that NEON filter stuff is completely disabled when switched 'off'. - Previously the ARM NEON specific files were still built if the option - was switched 'off' as opposed to being explicitly disabled. - -Version 1.6.3beta02 [April 26, 2013] - Test for 'arm*' not just 'arm' in the host_cpu configure variable. - Rebuilt the configure scripts. - -Version 1.6.3beta03 [April 30, 2013] - Expanded manual paragraph about writing private chunks, particularly - the need to call png_set_keep_unknown_chunks() when writing them. - Avoid dereferencing NULL pointer possibly returned from - png_create_write_struct() (Andrew Church). - -Version 1.6.3beta05 [May 9, 2013] - Calculate our own zlib windowBits when decoding rather than trusting the - CMF bytes in the PNG datastream. - Added an option to force maximum window size for inflating, which was - the behavior of libpng15 and earlier. - Added png-fix-itxt and png-fix-too-far-back to the built programs and - removed warnings from the source code and timepng that are revealed as - a result. - Detect wrong libpng versions linked to png-fix-too-far-back, which currently - only works with libpng versions that can be made to reliably fail when - the deflate data contains an out-of-window reference. This means only - 1.6 and later. - Fixed gnu issues: g++ needs a static_cast, gcc 4.4.7 has a broken warning - message which it is easier to work round than ignore. - Updated contrib/pngminus/pnm2png.c (Paul Stewart): - Check for EOF - Ignore "#" delimited comments in input file to pnm2png.c. - Fixed whitespace handling - Added a call to png_set_packing() - Initialize dimension values so if sscanf fails at least we have known - invalid values. - Attempt to detect configuration issues with png-fix-too-far-back, which - requires both the correct libpng and the correct zlib to function - correctly. - Check ZLIB_VERNUM for mismatches, enclose #error in quotes - Added information in the documentation about problems with and fixes for - the bad CRC and bad iTXt chunk situations. - -Version 1.6.3beta06 [May 12, 2013] - Allow contrib/pngminus/pnm2png.c to compile without WRITE_INVERT and - WRITE_PACK supported (writes error message that it can't read P1 or - P4 PBM files). - Improved png-fix-too-far-back usage message, added --suffix option. - Revised contrib/pngminim/*/makefile to generate pnglibconf.h with the - right zlib header files. - Separated CPPFLAGS and CFLAGS in contrib/pngminim/*/makefile - -Version 1.6.3beta07 [June 8, 2013] - Removed a redundant test in png_set_IHDR(). - Added set(CMAKE_CONFIGURATION_TYPES ...) to CMakeLists.txt (Andrew Hundt) - Deleted set(CMAKE_BUILD_TYPE) block from CMakeLists.txt - Enclose the prototypes for the simplified write API in - #ifdef PNG_STDIO_SUPPORTED/#endif - Make ARM NEON support work at compile time (not just configure time). - This moves the test on __ARM_NEON__ into pngconf.h to avoid issues when - using a compiler that compiles for multiple architectures at one time. - Removed PNG_FILTER_OPTIMIZATIONS and PNG_ARM_NEON_SUPPORTED from - pnglibconf.h, allowing more of the decisions to be made internally - (pngpriv.h) during the compile. Without this, symbol prefixing is broken - under certain circumstances on ARM platforms. Now only the API parts of - the optimizations ('check' vs 'api') are exposed in the public header files - except that the new setting PNG_ARM_NEON_OPT documents how libpng makes the - decision about whether or not to use the optimizations. - Protect symbol prefixing against CC/CPPFLAGS/CFLAGS useage. - Previous iOS/Xcode fixes for the ARM NEON optimizations moved the test - on __ARM_NEON__ from configure time to compile time. This breaks symbol - prefixing because the definition of the special png_init_filter_functions - call was hidden at configure time if the relevant compiler arguments are - passed in CFLAGS as opposed to CC. This change attempts to avoid all - the confusion that would result by declaring the init function even when - it is not used, so that it will always get prefixed. - -Version 1.6.3beta08 [June 18, 2013] - Revised libpng.3 so that "doclifter" can process it. - -Version 1.6.3beta09 [June 27, 2013] - Revised example.c to illustrate use of PNG_DEFAULT_sRGB and PNG_GAMMA_MAC_18 - as parameters for png_set_gamma(). These have been available since - libpng-1.5.4. - Renamed contrib/tools/png-fix-too-far-back.c to pngfix.c and revised it - to check all compressed chunks known to libpng. - -Version 1.6.3beta10 [July 5, 2013] - Updated documentation to show default behavior of benign errors correctly. - Only compile ARM code when PNG_READ_SUPPORTED is defined. - Fixed undefined behavior in contrib/tools/pngfix.c and added new strip - option. pngfix relied on undefined behavior and even a simple change from - gcc to g++ caused it to fail. The new strip option 'unsafe' has been - implemented and is the default if --max is given. Option names have - been clarified, with --strip=transform now stripping the bKGD chunk, - which was stripped previously with --strip=unused. - Added all documented chunk types to pngpriv.h - Unified pngfix.c source with libpng17. - -Version 1.6.3rc01 [July 11, 2013] - No changes. - -Version 1.6.3 [July 18, 2013] - Revised manual about changes in iTXt chunk handling made in libpng-1.6.0. - Added "/* SAFE */" comments in pngrutil.c and pngrtran.c where warnings - may be erroneously issued by code-checking applications. - -Version 1.6.4beta01 [August 21, 2013] - Added information about png_set_options() to the manual. - Delay calling png_init_filter_functions() until a row with nonzero filter - is found. - -Version 1.6.4beta02 [August 30, 2013] - Fixed inconsistent conditional compilation of png_chunk_unknown_handling() - prototype, definition, and usage. Made it depend on - PNG_HANDLE_AS_UNKNOWN_SUPPORTED everywhere. - -Version 1.6.4rc01 [September 5, 2013] - No changes. - -Version 1.6.4 [September 12, 2013] - No changes. - -Version 1.6.5 [September 14, 2013] - Removed two stray lines of code from arm/arm_init.c. - -Version 1.6.6 [September 16, 2013] - Removed two stray lines of code from arm/arm_init.c, again. - -Version 1.6.7beta01 [September 30, 2013] - Revised unknown chunk code to correct several bugs in the NO_SAVE_/NO_WRITE - combination - Allow HANDLE_AS_UNKNOWN to work when other options are configured off. Also - fixed the pngminim makefiles to work when $(MAKEFLAGS) contains stuff - which terminates the make options (as by default in recent versions of - Gentoo). - Avoid up-cast warnings in pngvalid.c. On ARM the alignment requirements of - png_modifier are greater than that of png_store and as a consequence - compilation of pngvalid.c results in a warning about increased alignment - requirements because of the bare cast to (png_modifier*). The code is safe, - because the pointer is known to point to a stack allocated png_modifier, - but this change avoids the warning. - Fixed default behavior of ARM_NEON_API. If the ARM NEON API option was - compiled without the CHECK option it defaulted to on, not off. - Check user callback behavior in pngunknown.c. Previous versions compiled - if SAVE_UNKNOWN was not available but did nothing since the callback - was never implemented. - Merged pngunknown.c with 1.7 version and back ported 1.7 improvements/fixes - -Version 1.6.7beta02 [October 12, 2013] - Made changes for compatibility with automake 1.14: - 1) Added the 'compile' program to the list of programs that must be cleaned - in autogen.sh - 2) Added 'subdir-objects' which causes .c files in sub-directories to be - compiled such that the corresponding .o files are also in the - sub-directory. This is because automake 1.14 warns that the - current behavior of compiling to the top level directory may be removed - in the future. - 3) Updated dependencies on pnglibconf.h to match the new .o locations and - added all the files in contrib/libtests and contrib/tools that depend - on pnglibconf.h - 4) Added 'BUILD_SOURCES = pnglibconf.h'; this is the automake recommended - way of handling the dependencies of sources that are machine generated; - unfortunately it only works if the user does 'make all' or 'make check', - so the dependencies (3) are still required. - Cleaned up (char*) casts of zlib messages. The latest version of the Intel C - compiler complains about casting a string literal as (char*), so copied the - treatment of z_const from the library code into pngfix.c - Simplified error message code in pngunknown. The simplification has the - useful side effect of avoiding a bogus warning generated by the latest - version of the Intel C compiler (it objects to - condition ? string-literal : string-literal). - Make autogen.sh work with automake 1.13 as well as 1.14. Do this by always - removing the 1.14 'compile' script but never checking for it. - -Version 1.6.7beta03 [October 19, 2013] - Added ARMv8 support (James Yu ). Added file - arm/filter_neon_intrinsics.c; enable with -mfpu=neon. - Revised pngvalid to generate size images with as many filters as it can - manage, limited by the number of rows. - Cleaned up ARM NEON compilation handling. The tests are now in pngpriv.h - and detect the broken GCC compilers. - -Version 1.6.7beta04 [October 26, 2013] - Allow clang derived from older GCC versions to use ARM intrinsics. This - causes all clang builds that use -mfpu=neon to use the intrinsics code, - not the assembler code. This has only been tested on iOS 7. It may be - necessary to exclude some earlier clang versions but this seems unlikely. - Changed NEON implementation selection mechanism. This allows assembler - or intrinsics to be turned on at compile time during the build by defining - PNG_ARM_NEON_IMPLEMENTATION to the correct value (2 or 1). This macro - is undefined by default and the build type is selected in pngpriv.h. - -Version 1.6.7rc01 [November 2, 2013] - No changes. - -Version 1.6.7rc02 [November 7, 2013] - Fixed #include in filter_neon_intrinsics.c and ctype macros. The ctype char - checking macros take an unsigned char argument, not a signed char. - -Version 1.6.7 [November 14, 2013] - No changes. - -Version 1.6.8beta01 [November 24, 2013] - Moved prototype for png_handle_unknown() in pngpriv.h outside of - the #ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED/#endif block. - Added "-Wall" to CFLAGS in contrib/pngminim/*/makefile - Conditionally compile some unused functions reported by -Wall in - pngminim. - Fixed 'minimal' builds. Various obviously useful minimal configurations - don't build because of missing contrib/libtests test programs and - overly complex dependencies in scripts/pnglibconf.dfa. This change - adds contrib/conftest/*.dfa files that can be used in automatic build - scripts to ensure that these configurations continue to build. - Enabled WRITE_INVERT and WRITE_PACK in contrib/pngminim/encoder. - Fixed pngvalid 'fail' function declaration on the Intel C Compiler. - This reverts to the previous 'static' implementation and works round - the 'unused static function' warning by using PNG_UNUSED(). - -Version 1.6.8beta02 [November 30, 2013] - Removed or marked PNG_UNUSED some harmless "dead assignments" reported - by clang scan-build. - Changed tabs to 3 spaces in png_debug macros and changed '"%s"m' - to '"%s" m' to improve portability among compilers. - Changed png_free_default() to free() in pngtest.c - -Version 1.6.8beta03 [December 1, 2013] - Tidied up pngfix inits and fixed pngtest no-write builds. - -Send comments/corrections/commendations to png-mng-implement at lists.sf.net -(subscription required; visit -https://lists.sourceforge.net/lists/listinfo/png-mng-implement -to subscribe) -or to glennrp at users.sourceforge.net - -Glenn R-P -#endif diff --git a/io2d/src/3rd-party/libpng/CMakeLists.txt b/io2d/src/3rd-party/libpng/CMakeLists.txt deleted file mode 100644 index 9b7f444..0000000 --- a/io2d/src/3rd-party/libpng/CMakeLists.txt +++ /dev/null @@ -1,364 +0,0 @@ -# CMakeLists.txt - -# Copyright (C) 2007-2013 Glenn Randers-Pehrson - -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -cmake_minimum_required(VERSION 2.4.4) -set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) - -set(CMAKE_CONFIGURATION_TYPES "Release;Debug;MinSizeRel;RelWithDebInfo") - -project(libpng C) -enable_testing() - -set(PNGLIB_MAJOR 1) -set(PNGLIB_MINOR 6) -set(PNGLIB_RELEASE 8) -set(PNGLIB_NAME libpng${PNGLIB_MAJOR}${PNGLIB_MINOR}) -set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_RELEASE}) - -# needed packages -find_package(ZLIB REQUIRED) -include_directories(${ZLIB_INCLUDE_DIR}) - -if(NOT WIN32) - find_library(M_LIBRARY - NAMES m - PATHS /usr/lib /usr/local/lib - ) - if(NOT M_LIBRARY) - message(STATUS - "math library 'libm' not found - floating point support disabled") - endif() -else() - # not needed on windows - set(M_LIBRARY "") -endif() - -# COMMAND LINE OPTIONS -if(DEFINED PNG_SHARED) - option(PNG_SHARED "Build shared lib" ${PNG_SHARED}) -else() - option(PNG_SHARED "Build shared lib" ON) -endif() -if(DEFINED PNG_STATIC) - option(PNG_STATIC "Build static lib" ${PNG_STATIC}) -else() - option(PNG_STATIC "Build static lib" ON) -endif() - -option(PNG_TESTS "Build libpng tests" YES) - -# Many more configuration options could be added here -option(PNG_DEBUG "Build with debug output" NO) -option(PNGARG "Disable ANSI-C prototypes" NO) - -# SET LIBNAME -set(PNG_LIB_NAME png${PNGLIB_MAJOR}${PNGLIB_MINOR}) - -# to distinguish between debug and release lib -set(CMAKE_DEBUG_POSTFIX "d") - -# Use the prebuilt pnglibconf.h file from the scripts folder -# TODO: fix this by building with awk; without this no cmake build can be -# configured directly (to do so indirectly use your local awk to build a -# pnglibconf.h in the build directory.) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt - ${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h) -include_directories(${CMAKE_CURRENT_BINARY_DIR}) - -# OUR SOURCES -set(libpng_public_hdrs - png.h - pngconf.h - ${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h -) -set(libpng_sources - ${libpng_public_hdrs} - pngdebug.h - pnginfo.h - pngpriv.h - pngstruct.h - png.c - pngerror.c - pngget.c - pngmem.c - pngpread.c - pngread.c - pngrio.c - pngrtran.c - pngrutil.c - pngset.c - pngtrans.c - pngwio.c - pngwrite.c - pngwtran.c - pngwutil.c -) -set(pngtest_sources - pngtest.c -) -set(pngvalid_sources - contrib/libtests/pngvalid.c -) -set(pngstest_sources - contrib/libtests/pngstest.c -) -# SOME NEEDED DEFINITIONS - -if(MSVC) - add_definitions(-D_CRT_SECURE_NO_DEPRECATE) -endif(MSVC) - -if(PNG_DEBUG) - add_definitions(-DPNG_DEBUG) -endif() - -# NOW BUILD OUR TARGET -include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${ZLIB_INCLUDE_DIR}) - -unset(PNG_LIB_TARGETS) - -if(PNG_SHARED) - add_library(${PNG_LIB_NAME} SHARED ${libpng_sources}) - set(PNG_LIB_TARGETS ${PNG_LIB_NAME}) - if(MSVC) - # msvc does not append 'lib' - do it here to have consistent name - set_target_properties(${PNG_LIB_NAME} PROPERTIES PREFIX "lib") - set_target_properties(${PNG_LIB_NAME} PROPERTIES IMPORT_PREFIX "lib") - endif() - target_link_libraries(${PNG_LIB_NAME} ${ZLIB_LIBRARY} ${M_LIBRARY}) -endif() - -if(PNG_STATIC) -# does not work without changing name - set(PNG_LIB_NAME_STATIC ${PNG_LIB_NAME}_static) - add_library(${PNG_LIB_NAME_STATIC} STATIC ${libpng_sources}) - list(APPEND PNG_LIB_TARGETS ${PNG_LIB_NAME_STATIC}) - if(MSVC) - # msvc does not append 'lib' - do it here to have consistent name - set_target_properties(${PNG_LIB_NAME_STATIC} PROPERTIES PREFIX "lib") - endif() - target_link_libraries(${PNG_LIB_NAME_STATIC} ${ZLIB_LIBRARY} ${M_LIBRARY}) -endif() - -if(NOT PNG_LIB_TARGETS) - message(SEND_ERROR - "No library variant selected to build. " - "Please enable at least one of the following options: PNG_STATIC, PNG_SHARED") -endif() - -if(PNG_SHARED AND WIN32) - set_target_properties(${PNG_LIB_NAME} PROPERTIES DEFINE_SYMBOL PNG_BUILD_DLL) -endif() - -if(PNG_TESTS AND PNG_SHARED) - # does not work with msvc due to png_lib_ver issue - add_executable(pngtest ${pngtest_sources}) - target_link_libraries(pngtest ${PNG_LIB_NAME}) - add_test(pngtest ./pngtest ${CMAKE_CURRENT_SOURCE_DIR}/pngtest.png) - # - add_executable(pngvalid ${pngvalid_sources}) - target_link_libraries(pngvalid ${PNG_LIB_NAME}) - add_test(pngvalid ./pngvalid) - add_executable(pngstest ${pngstest_sources}) - target_link_libraries(pngstest ${PNG_LIB_NAME}) - add_test(pngstest ./pngstest - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/basn0g01.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/basn0g02.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/basn0g04.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/basn0g08.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/basn0g16.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/basn2c08.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/basn2c16.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/basn3p01.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/basn3p02.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/basn3p04.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/basn3p08.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/basn4a08.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/basn4a16.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/basn6a08.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/basn6a16.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/ftbbn0g01.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/ftbbn0g02.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/ftbbn0g04.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/ftbbn2c16.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/ftbbn3p08.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/ftbgn2c16.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/ftbgn3p08.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/ftbrn2c08.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/ftbwn0g16.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/ftbwn3p08.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/ftbyn3p08.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/ftp0n0g08.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/ftp0n2c08.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/ftp0n3p08.png - ${CMAKE_CURRENT_SOURCE_DIR}/contrib/pngsuite/ftp1n3p08.png - ) -endif() - -# Ensure the CMAKE_LIBRARY_OUTPUT_DIRECTORY is set -IF(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY) - SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY "lib") -ENDIF(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY) - -# Set a variable with CMake code which: -# Creates a symlink from src to dest (if possible) or alternatively -# copies if different. -macro(CREATE_SYMLINK SRC_FILE DEST_FILE) - FILE(REMOVE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${DEST_FILE}) - if(WIN32 AND NOT CYGWIN AND NOT MSYS) - ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${DEST_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${DEST_FILE} - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${SRC_FILE}" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${DEST_FILE} - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${SRC_FILE}" ${CMAKE_CURRENT_BINARY_DIR}/${DEST_FILE} - DEPENDS ${PNG_LIB_TARGETS} - ) - ADD_CUSTOM_TARGET(${DEST_FILE}_COPY ALL DEPENDS ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${DEST_FILE}) - else(WIN32 AND NOT CYGWIN AND NOT MSYS) - get_filename_component(LINK_TARGET "${SRC_FILE}" NAME) - execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${LINK_TARGET}" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${DEST_FILE} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${LINK_TARGET}" ${DEST_FILE} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - endif(WIN32 AND NOT CYGWIN AND NOT MSYS) -endmacro() - -# libpng is a library so default to 'lib' -if(NOT DEFINED CMAKE_INSTALL_LIBDIR) - set(CMAKE_INSTALL_LIBDIR lib) -endif(NOT DEFINED CMAKE_INSTALL_LIBDIR) - -# CREATE PKGCONFIG FILES -# we use the same files like ./configure, so we have to set its vars -# Only do this on Windows for Cygwin - the files don't make much sense outside -# a UNIX look alike -if(NOT WIN32 OR CYGWIN OR MINGW) - set(prefix ${CMAKE_INSTALL_PREFIX}) - set(exec_prefix ${CMAKE_INSTALL_PREFIX}) - set(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}) - set(includedir ${CMAKE_INSTALL_PREFIX}/include) - set(LIBS "-lz -lm") - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc @ONLY) - CREATE_SYMLINK(${PNGLIB_NAME}.pc libpng.pc) - - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng-config.in - ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config @ONLY) - CREATE_SYMLINK(${PNGLIB_NAME}-config libpng-config) -endif(NOT WIN32 OR CYGWIN OR MINGW) - -# SET UP LINKS -if(PNG_SHARED) - set_target_properties(${PNG_LIB_NAME} PROPERTIES -# VERSION 16.${PNGLIB_RELEASE}.1.6.8beta03 - VERSION 16.${PNGLIB_RELEASE}.0 - SOVERSION 16 - CLEAN_DIRECT_OUTPUT 1) -endif() -if(PNG_STATIC) - # MSVC doesn't use a different file extension for shared vs. static - # libs. We are able to change OUTPUT_NAME to remove the _static - # for all other platforms. - if(NOT MSVC) - set_target_properties(${PNG_LIB_NAME_STATIC} PROPERTIES - OUTPUT_NAME ${PNG_LIB_NAME} - CLEAN_DIRECT_OUTPUT 1) - endif() -endif() - -# If CMake > 2.4.x, we set a variable used below to export -# targets to an export file. -# TODO: Use VERSION_GREATER after our cmake_minimum_required >= 2.6.2 -if(CMAKE_MAJOR_VERSION GREATER 1 AND CMAKE_MINOR_VERSION GREATER 4) - set(PNG_EXPORT_RULE EXPORT libpng) -elseif(CMAKE_MAJOR_VERSION GREATER 2) # future proof - set(PNG_EXPORT_RULE EXPORT libpng) -endif() - -# INSTALL -if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL ) - install(TARGETS ${PNG_LIB_TARGETS} - ${PNG_EXPORT_RULE} - RUNTIME DESTINATION bin - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - - if(PNG_SHARED) - # Create a symlink for libpng.dll.a => libpng16.dll.a on Cygwin - if(CYGWIN OR MINGW) - get_target_property(BUILD_TARGET_LOCATION ${PNG_LIB_NAME} LOCATION_${CMAKE_BUILD_TYPE}) - CREATE_SYMLINK(${BUILD_TARGET_LOCATION} libpng${CMAKE_IMPORT_LIBRARY_SUFFIX}) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng${CMAKE_IMPORT_LIBRARY_SUFFIX} - DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif(CYGWIN OR MINGW) - - if(NOT WIN32) - get_target_property(BUILD_TARGET_LOCATION ${PNG_LIB_NAME} LOCATION_${CMAKE_BUILD_TYPE}) - CREATE_SYMLINK(${BUILD_TARGET_LOCATION} libpng${CMAKE_SHARED_LIBRARY_SUFFIX}) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng${CMAKE_SHARED_LIBRARY_SUFFIX} - DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif(NOT WIN32) - endif(PNG_SHARED) - - if(PNG_STATIC) - if(NOT WIN32 OR CYGWIN OR MINGW) - get_target_property(BUILD_TARGET_LOCATION ${PNG_LIB_NAME_STATIC} LOCATION_${CMAKE_BUILD_TYPE}) - CREATE_SYMLINK(${BUILD_TARGET_LOCATION} libpng${CMAKE_STATIC_LIBRARY_SUFFIX}) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng${CMAKE_STATIC_LIBRARY_SUFFIX} - DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif(NOT WIN32 OR CYGWIN OR MINGW) - endif() -endif() - -if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL ) - install(FILES ${libpng_public_hdrs} DESTINATION include) - install(FILES ${libpng_public_hdrs} DESTINATION include/${PNGLIB_NAME}) -endif() -if(NOT SKIP_INSTALL_EXECUTABLES AND NOT SKIP_INSTALL_ALL ) - if(NOT WIN32 OR CYGWIN OR MINGW) - install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config DESTINATION bin) - install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config - DESTINATION bin) - endif(NOT WIN32 OR CYGWIN OR MINGW) -endif() - -if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL ) - # Install man pages - if(NOT PNG_MAN_DIR) - set(PNG_MAN_DIR "share/man") - endif() - install(FILES libpng.3 libpngpf.3 DESTINATION ${PNG_MAN_DIR}/man3) - install(FILES png.5 DESTINATION ${PNG_MAN_DIR}/man5) - # Install pkg-config files - if(NOT WIN32 OR CYGWIN OR MINGW) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config - DESTINATION bin) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config - DESTINATION bin) - endif(NOT WIN32 OR CYGWIN OR MINGW) -endif() - -# On versions of CMake that support it, create an export file CMake -# users can include() to import our targets -if(PNG_EXPORT_RULE AND NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL ) - install(EXPORT libpng DESTINATION lib/libpng FILE lib${PNG_LIB_NAME}.cmake) -endif() - -# what's with libpng-$VER%.txt and all the extra files? - -# UNINSTALL -# do we need this? - -# DIST -# do we need this? - -# to create msvc import lib for mingw compiled shared lib -# pexports libpng.dll > libpng.def -# lib /def:libpng.def /machine:x86 - diff --git a/io2d/src/3rd-party/libpng/INSTALL b/io2d/src/3rd-party/libpng/INSTALL deleted file mode 100644 index f987378..0000000 --- a/io2d/src/3rd-party/libpng/INSTALL +++ /dev/null @@ -1,170 +0,0 @@ - -Installing libpng - -On Unix/Linux and similar systems, you can simply type - - ./configure [--prefix=/path] - make check - make install - -and ignore the rest of this document. - -If configure does not work on your system, or if you have a need to -change configure.ac or Makefile.am, and you have a reasonably -up-to-date set of tools, running ./autogen.sh in a git clone before -running ./configure may fix the problem. To be really sure that you -aren't using any of the included pre-built scripts, you can do this: - - ./configure --enable-maintainer-mode - make maintainer-clean - ./autogen.sh --maintainer --clean - ./autogen.sh --maintainer - ./configure [--prefix=/path] [other options] - make - make install - make check - -Instead, you can use one of the custom-built makefiles in the -"scripts" directory - - cp scripts/makefile.system makefile - make test - make install - -The files that are presently available in the scripts directory -are listed and described in scripts/README.txt. - -Or you can use one of the "projects" in the "projects" directory. - -Before installing libpng, you must first install zlib, if it -is not already on your system. zlib can usually be found -wherever you got libpng. zlib can be placed in another directory, -at the same level as libpng. - -If your system already has a preinstalled zlib you will still need -to have access to the zlib.h and zconf.h include files that -correspond to the version of zlib that's installed. - -If you wish to test with a particular zlib that is not first in the -standard library search path, put ZLIBLIB, ZLIBINC, CPPFLAGS, LDFLAGS, -and LD_LIBRARY_PATH in your environment before running "make test" -or "make distcheck": - -ZLIBLIB=/path/to/lib export ZLIBLIB -ZLIBINC=/path/to/include export ZLIBINC -CPPFLAGS="-I$ZLIBINC" export CPPFLAGS -LDFLAGS="-L$ZLIBLIB" export LDFLAGS -LD_LIBRARY_PATH="$ZLIBLIB:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH - -If you are using one of the makefile scripts, put ZLIBLIB and ZLIBINC -in your environment and type "make ZLIBLIB=$ZLIBLIB ZLIBINC=$ZLIBINC test". - -If you want to use "cmake" (see www.cmake.org), type - - cmake . -DCMAKE_INSTALL_PREFIX=/path - make - make install - -You can rename the directories that you downloaded (they -might be called "libpng-x.y.z" or "libpngNN" and "zlib-1.2.7" -or "zlib127") so that you have directories called "zlib" and "libpng". - -Your directory structure should look like this: - - .. (the parent directory) - libpng (this directory) - INSTALL (this file) - README - *.h - *.c - CMakeLists.txt => "cmake" script - configuration files: - configure.ac, configure, Makefile.am, Makefile.in, - autogen.sh, config.guess, ltmain.sh, missing, libpng.pc.in, - libpng-config.in, aclocal.m4, config.h.in, config.sub, - depcomp, install-sh, mkinstalldirs, test-pngtest.sh - contrib - gregbook - libtests - pngminim - pngminus - pngsuite - visupng - projects - visualc71 - vstudio - scripts - makefile.* - *.def (module definition files) - etc. - pngtest.png - etc. - zlib - README - *.h - *.c - contrib - etc. - -If the line endings in the files look funny, you may wish to get the other -distribution of libpng. It is available in both tar.gz (UNIX style line -endings) and zip (DOS style line endings) formats. - -If you are building libpng with MSVC, you can enter the -libpng projects\visualc6 or visualc71 directory and follow the instructions -in README.txt. - -Otherwise enter the zlib directory and follow the instructions in zlib/README, -then come back here and run "configure" or choose the appropriate -makefile.sys in the scripts directory. - -Copy the file (or files) that you need from the -scripts directory into this directory, for example - - MSDOS example: copy scripts\makefile.msc makefile - UNIX example: cp scripts/makefile.std makefile - -Read the makefile to see if you need to change any source or -target directories to match your preferences. - -Then read pnglibconf.dfa to see if you want to make any configuration -changes. - -Then just run "make" which will create the libpng library in -this directory and "make test" which will run a quick test that reads -the "pngtest.png" file and writes a "pngout.png" file that should be -identical to it. Look for "9782 zero samples" in the output of the -test. For more confidence, you can run another test by typing -"pngtest pngnow.png" and looking for "289 zero samples" in the output. -Also, you can run "pngtest -m contrib/pngsuite/*.png" and compare -your output with the result shown in contrib/pngsuite/README. - -Most of the makefiles will allow you to run "make install" to -put the library in its final resting place (if you want to -do that, run "make install" in the zlib directory first if necessary). -Some also allow you to run "make test-installed" after you have -run "make install". - -Further information can be found in the README and libpng-manual.txt -files, in the individual makefiles, in png.h, and the manual pages -libpng.3 and png.5. - -Using the ./configure script -- 16 December 2002. -================================================= - -The ./configure script should work compatibly with what scripts/makefile.* -did, however there are some options you might need to add to configure -explicitly, which previously was done semi-automatically (if you didn't edit -scripts/makefile.* yourself, that is) - -CFLAGS="-Wall -O -funroll-loops \ --malign-loops=2 -malign-functions=2" ./configure --prefix=/usr/include \ ---with-pkgconfigdir=/usr/lib/pkgconfig --includedir=/usr/include - -You can alternatively specify --includedir=/usr/include, /usr/local/include, -/usr/include/libpng%NN%, or whatever. - -If you find that the configure script is out-of-date or is not supporting -your platform properly, try running autogen.sh to regenerate "configure", -"Makefile.in", and the other configuration files. Then try configure again. - diff --git a/io2d/src/3rd-party/libpng/LICENSE b/io2d/src/3rd-party/libpng/LICENSE deleted file mode 100644 index 20098d8..0000000 --- a/io2d/src/3rd-party/libpng/LICENSE +++ /dev/null @@ -1,111 +0,0 @@ - -This copy of the libpng notices is provided for your convenience. In case of -any discrepancy between this copy and the notices in the file png.h that is -included in the libpng distribution, the latter shall prevail. - -COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: - -If you modify libpng you may insert additional notices immediately following -this sentence. - -This code is released under the libpng license. - -libpng versions 1.2.6, August 15, 2004, through 1.6.8beta03, November 30, 2013, are -Copyright (c) 2004, 2006-2013 Glenn Randers-Pehrson, and are -distributed according to the same disclaimer and license as libpng-1.2.5 -with the following individual added to the list of Contributing Authors - - Cosmin Truta - -libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are -Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are -distributed according to the same disclaimer and license as libpng-1.0.6 -with the following individuals added to the list of Contributing Authors - - Simon-Pierre Cadieux - Eric S. Raymond - Gilles Vollant - -and with the following additions to the disclaimer: - - There is no warranty against interference with your enjoyment of the - library or against infringement. There is no warranty that our - efforts or the library will fulfill any of your particular purposes - or needs. This library is provided with all faults, and the entire - risk of satisfactory quality, performance, accuracy, and effort is with - the user. - -libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are -Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are -distributed according to the same disclaimer and license as libpng-0.96, -with the following individuals added to the list of Contributing Authors: - - Tom Lane - Glenn Randers-Pehrson - Willem van Schaik - -libpng versions 0.89, June 1996, through 0.96, May 1997, are -Copyright (c) 1996, 1997 Andreas Dilger -Distributed according to the same disclaimer and license as libpng-0.88, -with the following individuals added to the list of Contributing Authors: - - John Bowler - Kevin Bracey - Sam Bushell - Magnus Holmgren - Greg Roelofs - Tom Tanner - -libpng versions 0.5, May 1995, through 0.88, January 1996, are -Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - -For the purposes of this copyright and license, "Contributing Authors" -is defined as the following set of individuals: - - Andreas Dilger - Dave Martindale - Guy Eric Schalnat - Paul Schmidt - Tim Wegner - -The PNG Reference Library is supplied "AS IS". The Contributing Authors -and Group 42, Inc. disclaim all warranties, expressed or implied, -including, without limitation, the warranties of merchantability and of -fitness for any purpose. The Contributing Authors and Group 42, Inc. -assume no liability for direct, indirect, incidental, special, exemplary, -or consequential damages, which may result from the use of the PNG -Reference Library, even if advised of the possibility of such damage. - -Permission is hereby granted to use, copy, modify, and distribute this -source code, or portions hereof, for any purpose, without fee, subject -to the following restrictions: - -1. The origin of this source code must not be misrepresented. - -2. Altered versions must be plainly marked as such and must not - be misrepresented as being the original source. - -3. This Copyright notice may not be removed or altered from any - source or altered source distribution. - -The Contributing Authors and Group 42, Inc. specifically permit, without -fee, and encourage the use of this source code as a component to -supporting the PNG file format in commercial products. If you use this -source code in a product, acknowledgment is not required but would be -appreciated. - - -A "png_get_copyright" function is available, for convenient use in "about" -boxes and the like: - - printf("%s",png_get_copyright(NULL)); - -Also, the PNG logo (in PNG format, of course) is supplied in the -files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). - -Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a -certification mark of the Open Source Initiative. - -Glenn Randers-Pehrson -glennrp at users.sourceforge.net -November 30, 2013 diff --git a/io2d/src/3rd-party/libpng/Makefile.am b/io2d/src/3rd-party/libpng/Makefile.am deleted file mode 100644 index 5ac0423..0000000 --- a/io2d/src/3rd-party/libpng/Makefile.am +++ /dev/null @@ -1,331 +0,0 @@ -# Makefile.am: -# Source file for Makefile.in (and hence Makefile) -# - -PNGLIB_BASENAME= libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@ - -ACLOCAL_AMFLAGS = -I scripts - -# test programs - run on make check, make distcheck -check_PROGRAMS= pngtest pngunknown pngstest pngvalid - -# Utilities - installed -bin_PROGRAMS= pngfix png-fix-itxt - -# This ensures that pnglibconf.h gets built at the start of 'make all' or -# 'make check', but it does not add dependencies to the individual programs, -# this is done below. -# -# IMPORTANT: always add the object modules of new programs to the list below -# because otherwise the sequence 'configure; make new-program' will *sometimes* -# result in the installed (system) pnglibconf.h being used and the result is -# always wrong and always very confusing. -BUILT_SOURCES = pnglibconf.h - -pngtest_SOURCES = pngtest.c -pngtest_LDADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.la - -pngvalid_SOURCES = contrib/libtests/pngvalid.c -pngvalid_LDADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.la - -pngstest_SOURCES = contrib/libtests/pngstest.c -pngstest_LDADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.la - -pngunknown_SOURCES = contrib/libtests/pngunknown.c -pngunknown_LDADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.la - -pngfix_SOURCES = contrib/tools/pngfix.c -pngfix_LDADD = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.la - -png_fix_itxt_SOURCES = contrib/tools/png-fix-itxt.c - -# Generally these are single line shell scripts to run a test with a particular -# set of parameters: -TESTS =\ - tests/pngtest\ - tests/pngvalid-gamma-16-to-8 tests/pngvalid-gamma-alpha-mode\ - tests/pngvalid-gamma-background tests/pngvalid-gamma-expand16-alpha-mode\ - tests/pngvalid-gamma-expand16-background\ - tests/pngvalid-gamma-expand16-transform tests/pngvalid-gamma-sbit\ - tests/pngvalid-gamma-threshold tests/pngvalid-gamma-transform\ - tests/pngvalid-progressive-interlace-size\ - tests/pngvalid-progressive-interlace-standard\ - tests/pngvalid-progressive-interlace-transform\ - tests/pngvalid-progressive-standard tests/pngvalid-standard\ - tests/pngstest-0g01 tests/pngstest-0g02 tests/pngstest-0g04\ - tests/pngstest-0g08 tests/pngstest-0g16 tests/pngstest-2c08\ - tests/pngstest-2c16 tests/pngstest-3p01 tests/pngstest-3p02\ - tests/pngstest-3p04 tests/pngstest-3p08 tests/pngstest-4a08\ - tests/pngstest-4a16 tests/pngstest-6a08 tests/pngstest-6a16\ - tests/pngstest-error tests/pngunknown-IDAT\ - tests/pngunknown-discard tests/pngunknown-if-safe tests/pngunknown-sAPI\ - tests/pngunknown-sTER tests/pngunknown-save tests/pngunknown-vpAg - -# These tests are expected, and required, to fail: -XFAIL_TESTS = tests/pngstest-error - -# man pages -dist_man_MANS= libpng.3 libpngpf.3 png.5 - -# generate the -config scripts if required -binconfigs= libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@-config -EXTRA_SCRIPTS= libpng-config libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@-config -bin_SCRIPTS= @binconfigs@ - -# rules to build libpng, only build the old library on request -lib_LTLIBRARIES=libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.la -# EXTRA_LTLIBRARIES= libpng.la -libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES = png.c pngerror.c\ - pngget.c pngmem.c pngpread.c pngread.c pngrio.c pngrtran.c pngrutil.c\ - pngset.c pngtrans.c pngwio.c pngwrite.c pngwtran.c pngwutil.c\ - png.h pngconf.h pngdebug.h pnginfo.h pngpriv.h pngstruct.h pngusr.dfa - -if PNG_ARM_NEON - libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES += arm/arm_init.c\ - arm/filter_neon.S arm/filter_neon_intrinsics.c -endif - -nodist_libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES = pnglibconf.h - -libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LDFLAGS = -no-undefined -export-dynamic \ - -version-number @PNGLIB_MAJOR@@PNGLIB_MINOR@:@PNGLIB_RELEASE@:0 - -if HAVE_LD_VERSION_SCRIPT -# Versioned symbols and restricted exports -if HAVE_SOLARIS_LD - libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LDFLAGS += -Wl,-M -Wl,libpng.vers -else - libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LDFLAGS += -Wl,--version-script=libpng.vers -endif - - libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES = libpng.vers -else -# Only restricted exports when possible - libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_LDFLAGS += -export-symbols libpng.sym - libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_DEPENDENCIES = libpng.sym -endif - -#distribute headers in /usr/include/libpng/* -pkgincludedir= $(includedir)/$(PNGLIB_BASENAME) -pkginclude_HEADERS= png.h pngconf.h -nodist_pkginclude_HEADERS= pnglibconf.h - -# pkg-config stuff, note that libpng.pc is always required in order -# to get the correct library -pkgconfigdir = @pkgconfigdir@ -pkgconfig_DATA = libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.pc - -# Extra source distribution files, '${srcdir}' is used below to stop build files -# from those directories being included. This only works if the configure is -# not done in the source directory! -EXTRA_DIST= \ - ANNOUNCE CHANGES INSTALL LICENSE README TODO \ - pngtest.png pngbar.png pngnow.png pngbar.jpg autogen.sh \ - ${srcdir}/contrib ${srcdir}/projects ${srcdir}/scripts \ - $(TESTS) $(XFAIL_TESTS) tests/pngstest \ - CMakeLists.txt example.c libpng-manual.txt - -SCRIPT_CLEANFILES=scripts/*.out scripts/*.chk scripts/pnglibconf.dfn - -CLEANFILES= *.tf? pngout.png libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.pc \ - libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@-config libpng.vers libpng.sym \ - check.new pnglibconf.* pngprefix.h symbols.new pngtest-log.txt \ - $(SCRIPT_CLEANFILES) - -MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess config.h.in \ -config.sub configure depcomp install-sh ltmain.sh missing - -# PNG_COPTS give extra options for the C compiler to be used on all compilation -# steps (unless targe_CFLAGS is specified; that will take precedence over -# AM_CFLAGS) -PNG_COPTS = @PNG_COPTS@ -AM_CFLAGS = ${PNG_COPTS} - -# DFNCPP is normally just CPP - the C preprocessor - but on Solaris and maybe -# other operating systems (NeXT?) the C preprocessor selected by configure -# checks input tokens for validity - effectively it performs part of the ANSI-C -# parsing - and therefore fails with the .df files. configure.ac has special -# checks for this and sets DFNCPP appropriately. -DFNCPP = @DFNCPP@ - -SUFFIXES = .chk .dfn .out - -$(PNGLIB_BASENAME).pc: libpng.pc - cp libpng.pc $@ - -$(PNGLIB_BASENAME)-config: libpng-config - cp libpng-config $@ - -scripts/sym.out scripts/vers.out: png.h pngconf.h pnglibconf.h -scripts/prefix.out: png.h pngconf.h pnglibconf.out -scripts/symbols.out: png.h pngconf.h $(srcdir)/scripts/pnglibconf.h.prebuilt -scripts/intprefix.out: pnglibconf.h - -libpng.sym: scripts/sym.out - rm -f $@ - cp $? $@ -libpng.vers: scripts/vers.out - rm -f $@ - cp $? $@ - -if DO_PNG_PREFIX -# Rename functions in scripts/prefix.out with a PNG_PREFIX prefix. -# Rename macros in scripts/macro.lst from PNG_PREFIXpng_ to PNG_ (the actual -# implementation of the macro). -pnglibconf.h: pnglibconf.out scripts/prefix.out scripts/macro.lst - rm -f $@ - $(AWK) 's==0 && NR>1{print prev}\ - s==0{prev=$$0}\ - s==1{print "#define", $$1, "@PNG_PREFIX@" $$1}\ - s==2{print "#define @PNG_PREFIX@png_" $$1, "PNG_" $$1}\ - END{print prev}' s=0 pnglibconf.out s=1 scripts/prefix.out\ - s=2 ${srcdir}/scripts/macro.lst >pnglibconf.tf8 - mv pnglibconf.tf8 $@ - -pngprefix.h: scripts/intprefix.out - rm -f pngprefix.tf1 - $(AWK) '{print "#define", $$1, "@PNG_PREFIX@" $$1}' $? >pngprefix.tf1 - mv pngprefix.tf1 $@ -else -pnglibconf.h: pnglibconf.out - rm -f $@ - cp $? $@ - -pngprefix.h: # is empty - :>$@ -endif - -$(srcdir)/scripts/pnglibconf.h.prebuilt: - @echo "Attempting to build $@" >&2 - @echo "This is a machine generated file, but if you want to make" >&2 - @echo "a new one simply make 'scripts/pnglibconf.out', copy that" >&2 - @echo "AND set PNG_ZLIB_VERNUM to 0 (you MUST do this)" >&2 - @exit 1 - -# The following is necessary to ensure that the local pnglibconf.h is used, not -# an installed one (this can happen immediately after on a clean system if -# 'make test' is the first thing the user does.) Only files which include -# one of the png source files (typically png.h or pngpriv.h) need to be listed -# here: -pngtest.o: pnglibconf.h - -contrib/libtests/makepng.o: pnglibconf.h -contrib/libtests/pngstest.o: pnglibconf.h -contrib/libtests/pngunknown.o: pnglibconf.h -contrib/libtests/pngvalid.o: pnglibconf.h -contrib/libtests/readpng.o: pnglibconf.h -contrib/libtests/tarith.o: pnglibconf.h -contrib/libtests/timepng.o: pnglibconf.h - -contrib/tools/makesRGB.o: pnglibconf.h -contrib/tools/pngfix.o: pnglibconf.h - -# We must use -DPNG_NO_USE_READ_MACROS here even when the library may actually -# be built with PNG_USE_READ_MACROS; this prevents the read macros from -# interfering with the symbol file format. -SYMBOL_CFLAGS = -DPNGLIB_LIBNAME='PNG@PNGLIB_MAJOR@@PNGLIB_MINOR@_0'\ - -DPNGLIB_VERSION='@PNGLIB_VERSION@'\ - -DSYMBOL_PREFIX='$(SYMBOL_PREFIX)'\ - -DPNG_NO_USE_READ_MACROS -DPNG_BUILDING_SYMBOL_TABLE - -if DO_PNG_PREFIX -SYMBOL_CFLAGS += -DPNG_PREFIX='@PNG_PREFIX@' -endif - -.dfn.out: - rm -f $@ $*.c $*.tf[12] - test -d scripts || mkdir scripts || test -d scripts - echo '#include "$<"' >$*.c - $(DFNCPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)\ - $(CPPFLAGS) $(SYMBOL_CFLAGS) $*.c > $*.tf1 - $(AWK) -f "${srcdir}/scripts/dfn.awk" out="$*.tf2" $*.tf1 1>&2 - rm -f $*.c $*.tf1 - mv $*.tf2 $@ - -# The .dfn file for pnglibconf.h is machine generated -pnglibconf.dfn: scripts/pnglibconf.dfa scripts/options.awk pngconf.h pngusr.dfa $(DFA_XTRA) - rm -f $@ $*.tf[45] - $(AWK) -f ${srcdir}/scripts/options.awk out=$*.tf4 version=search\ - ${srcdir}/pngconf.h ${srcdir}/scripts/pnglibconf.dfa\ - ${srcdir}/pngusr.dfa $(DFA_XTRA) 1>&2 - $(AWK) -f ${srcdir}/scripts/options.awk out=$*.tf5 $*.tf4 1>&2 - rm $*.tf4 - mv $*.tf5 $@ - -# Symbol checks (.def and .out files should match) -scripts/symbols.chk: scripts/checksym.awk scripts/symbols.def scripts/symbols.out - -.out.chk: - rm -f $@ $*.new - $(AWK) -f ${srcdir}/scripts/checksym.awk ${srcdir}/scripts/${*F}.def\ - of="$*.new" $< >&2 - mv $*.new $@ - -# used on demand to regenerate the standard header, CPPFLAGS should -# be empty - no non-standard defines -scripts/pnglibconf.dfn: scripts/pnglibconf.dfa scripts/options.awk pngconf.h - rm -f $@ pnglibconf.tf[67] - test -z "$(CPPFLAGS)" - echo "com @PNGLIB_VERSION@ STANDARD API DEFINITION" |\ - $(AWK) -f ${srcdir}/scripts/options.awk out=pnglibconf.tf6\ - logunsupported=1 version=search ${srcdir}/pngconf.h -\ - ${srcdir}/scripts/pnglibconf.dfa 1>&2 - $(AWK) -f ${srcdir}/scripts/options.awk out=pnglibconf.tf7\ - pnglibconf.tf6 1>&2 - rm pnglibconf.tf6 - mv pnglibconf.tf7 $@ - -$(libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_OBJECTS): png.h pngconf.h \ - pnglibconf.h pngpriv.h pngdebug.h pnginfo.h pngstruct.h pngprefix.h - -test: check-am - -# Extra checks -check: scripts/symbols.chk - -# Don't distribute the generated script files -dist-hook: - cd '$(top_distdir)'; rm -f $(SCRIPT_CLEANFILES) - -# install the .../include headers as links to the new ones -install-data-hook: - cd '$(DESTDIR)$(includedir)'; rm -f png.h pngconf.h pnglibconf.h - cd '$(DESTDIR)$(includedir)'; $(LN_S) $(PNGLIB_BASENAME)/png.h png.h - cd '$(DESTDIR)$(includedir)'; $(LN_S) $(PNGLIB_BASENAME)/pngconf.h \ - pngconf.h - cd '$(DESTDIR)$(includedir)'; $(LN_S) $(PNGLIB_BASENAME)/pnglibconf.h \ - pnglibconf.h - cd '$(DESTDIR)$(pkgconfigdir)'; rm -f libpng.pc - cd '$(DESTDIR)$(pkgconfigdir)'; $(LN_S) $(PNGLIB_BASENAME).pc libpng.pc - -# do evil things to libpng to cause libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@ to be used -install-exec-hook: - cd '$(DESTDIR)$(bindir)'; rm -f libpng-config - cd '$(DESTDIR)$(bindir)';\ - $(LN_S) $(PNGLIB_BASENAME)-config libpng-config - @set -x;\ - cd '$(DESTDIR)$(libdir)';\ - for ext in a la so so.@PNGLIB_MAJOR@@PNGLIB_MINOR@.@PNGLIB_RELEASE@\ - sl dylib dll.a; do\ - rm -f libpng.$$ext;\ - if test -f $(PNGLIB_BASENAME).$$ext; then\ - $(LN_S) $(PNGLIB_BASENAME).$$ext libpng.$$ext;\ - fi;\ - done - -uninstall-hook: - cd '$(DESTDIR)$(includedir)'; rm -f png.h pngconf.h pnglibconf.h - rm -f '$(DESTDIR)$(pkgconfigdir)/libpng.pc' - rm -f '$(DESTDIR)$(bindir)/libpng-config' - rm -f '$(DESTDIR)$(libdir)/libpng.a' - rm -f '$(DESTDIR)$(libdir)/libpng.la' - rm -f '$(DESTDIR)$(libdir)/libpng.so' - rm -f '$(DESTDIR)$(libdir)/libpng.so.@PNGLIB_MAJOR@@PNGLIB_MINOR@.@PNGLIB_RELEASE@' - rm -f '$(DESTDIR)$(libdir)/libpng.sl' - rm -f '$(DESTDIR)$(libdir)/libpng.dylib' - rm -f '$(DESTDIR)$(libdir)/libpng.dll.a' - -# The following addition ensures that 'make all' always builds the test programs -# too. It used to, but some change either in libpng or configure stopped this -# working. -all-am: $(check_PROGRAMS) diff --git a/io2d/src/3rd-party/libpng/README b/io2d/src/3rd-party/libpng/README deleted file mode 100644 index bd73611..0000000 --- a/io2d/src/3rd-party/libpng/README +++ /dev/null @@ -1,202 +0,0 @@ -README for libpng version 1.6.8beta03 - November 30, 2013 (shared library 16.0) -See the note about version numbers near the top of png.h - -See INSTALL for instructions on how to install libpng. - -Libpng comes in several distribution formats. Get libpng-*.tar.gz or -libpng-*.tar.xz or if you want UNIX-style line endings in the text files, -or lpng*.7z or lpng*.zip if you want DOS-style line endings. - -Version 0.89 was the first official release of libpng. Don't let the -fact that it's the first release fool you. The libpng library has been in -extensive use and testing since mid-1995. By late 1997 it had -finally gotten to the stage where there hadn't been significant -changes to the API in some time, and people have a bad feeling about -libraries with versions < 1.0. Version 1.0.0 was released in -March 1998. - -**** -Note that some of the changes to the png_info structure render this -version of the library binary incompatible with libpng-0.89 or -earlier versions if you are using a shared library. The type of the -"filler" parameter for png_set_filler() has changed from png_byte to -png_uint_32, which will affect shared-library applications that use -this function. - -To avoid problems with changes to the internals of png_info_struct, -new APIs have been made available in 0.95 to avoid direct application -access to info_ptr. These functions are the png_set_ and -png_get_ functions. These functions should be used when -accessing/storing the info_struct data, rather than manipulating it -directly, to avoid such problems in the future. - -It is important to note that the APIs do not make current programs -that access the info struct directly incompatible with the new -library. However, it is strongly suggested that new programs use -the new APIs (as shown in example.c and pngtest.c), and older programs -be converted to the new format, to facilitate upgrades in the future. -**** - -Additions since 0.90 include the ability to compile libpng as a -Windows DLL, and new APIs for accessing data in the info struct. -Experimental functions include the ability to set weighting and cost -factors for row filter selection, direct reads of integers from buffers -on big-endian processors that support misaligned data access, faster -methods of doing alpha composition, and more accurate 16->8 bit color -conversion. - -The additions since 0.89 include the ability to read from a PNG stream -which has had some (or all) of the signature bytes read by the calling -application. This also allows the reading of embedded PNG streams that -do not have the PNG file signature. As well, it is now possible to set -the library action on the detection of chunk CRC errors. It is possible -to set different actions based on whether the CRC error occurred in a -critical or an ancillary chunk. - -The changes made to the library, and bugs fixed are based on discussions -on the PNG-implement mailing list and not on material submitted -privately to Guy, Andreas, or Glenn. They will forward any good -suggestions to the list. - -For a detailed description on using libpng, read libpng-manual.txt. For -examples of libpng in a program, see example.c and pngtest.c. For usage -information and restrictions (what little they are) on libpng, see -png.h. For a description on using zlib (the compression library used by -libpng) and zlib's restrictions, see zlib.h - -I have included a general makefile, as well as several machine and -compiler specific ones, but you may have to modify one for your own needs. - -You should use zlib 1.0.4 or later to run this, but it MAY work with -versions as old as zlib 0.95. Even so, there are bugs in older zlib -versions which can cause the output of invalid compression streams for -some images. You will definitely need zlib 1.0.4 or later if you are -taking advantage of the MS-DOS "far" structure allocation for the small -and medium memory models. You should also note that zlib is a -compression library that is useful for more things than just PNG files. -You can use zlib as a drop-in replacement for fread() and fwrite() if -you are so inclined. - -zlib should be available at the same place that libpng is, or at zlib.net. - -You may also want a copy of the PNG specification. It is available -as an RFC, a W3C Recommendation, and an ISO/IEC Standard. You can find -these at http://www.libpng.org/pub/png/documents/ - -This code is currently being archived at libpng.sf.net in the -[DOWNLOAD] area, and at ftp://ftp.simplesystems.org. If you can't find it -in any of those places, e-mail me, and I'll help you find it. - -If you have any code changes, requests, problems, etc., please e-mail -them to me. Also, I'd appreciate any make files or project files, -and any modifications you needed to make to get libpng to compile, -along with a #define variable to tell what compiler/system you are on. -If you needed to add transformations to libpng, or wish libpng would -provide the image in a different way, drop me a note (and code, if -possible), so I can consider supporting the transformation. -Finally, if you get any warning messages when compiling libpng -(note: not zlib), and they are easy to fix, I'd appreciate the -fix. Please mention "libpng" somewhere in the subject line. Thanks. - -This release was created and will be supported by myself (of course -based in a large way on Guy's and Andreas' earlier work), and the PNG -development group. - -Send comments/corrections/commendations to png-mng-implement at -lists.sourceforge.net (subscription required; visit -https://lists.sourceforge.net/lists/listinfo/png-mng-implement -to subscribe) or to glennrp at users.sourceforge.net - -You can't reach Guy, the original libpng author, at the addresses -given in previous versions of this document. He and Andreas will -read mail addressed to the png-implement list, however. - -Please do not send general questions about PNG. Send them to -png-mng-misc at lists.sf.net (subscription required; visit -https://lists.sourceforge.net/lists/listinfo/png-mng-misc to -subscribe). If you have a question about something -in the PNG specification that is related to using libpng, send it -to me. Send me any questions that start with "I was using libpng, -and ...". If in doubt, send questions to me. I'll bounce them -to others, if necessary. - -Please do not send suggestions on how to change PNG. We have -been discussing PNG for eighteen years now, and it is official and -finished. If you have suggestions for libpng, however, I'll -gladly listen. Even if your suggestion is not used immediately, -it may be used later. - -Files in this distribution: - - ANNOUNCE => Announcement of this version, with recent changes - CHANGES => Description of changes between libpng versions - KNOWNBUG => List of known bugs and deficiencies - LICENSE => License to use and redistribute libpng - README => This file - TODO => Things not implemented in the current library - Y2KINFO => Statement of Y2K compliance - example.c => Example code for using libpng functions - libpng.3 => manual page for libpng (includes libpng-manual.txt) - libpng-manual.txt => Description of libpng and its functions - libpngpf.3 => manual page for libpng's private functions - png.5 => manual page for the PNG format - png.c => Basic interface functions common to library - png.h => Library function and interface declarations (public) - pngpriv.h => Library function and interface declarations (private) - pngconf.h => System specific library configuration (public) - pngstruct.h => png_struct declaration (private) - pnginfo.h => png_info struct declaration (private) - pngdebug.h => debugging macros (private) - pngerror.c => Error/warning message I/O functions - pngget.c => Functions for retrieving info from struct - pngmem.c => Memory handling functions - pngbar.png => PNG logo, 88x31 - pngnow.png => PNG logo, 98x31 - pngpread.c => Progressive reading functions - pngread.c => Read data/helper high-level functions - pngrio.c => Lowest-level data read I/O functions - pngrtran.c => Read data transformation functions - pngrutil.c => Read data utility functions - pngset.c => Functions for storing data into the info_struct - pngtest.c => Library test program - pngtest.png => Library test sample image - pngtrans.c => Common data transformation functions - pngwio.c => Lowest-level write I/O functions - pngwrite.c => High-level write functions - pngwtran.c => Write data transformations - pngwutil.c => Write utility functions - arm => Contains optimized code for the ARM platform - contrib => Contributions - examples => Example programs - gregbook => source code for PNG reading and writing, from - Greg Roelofs' "PNG: The Definitive Guide", - O'Reilly, 1999 - libtests => Test programs - pngminim => Minimal decoder, encoder, and progressive decoder - programs demonstrating use of pngusr.dfa - pngminus => Simple pnm2png and png2pnm programs - pngsuite => Test images - tools => Various tools - visupng => Contains a MSVC workspace for VisualPng - projects => Contains project files and workspaces for - building a DLL - owatcom => Contains a WATCOM project for building libpng - visualc71 => Contains a Microsoft Visual C++ (MSVC) - workspace for building libpng and zlib - vstudio => Contains a Microsoft Visual C++ (MSVC) - workspace for building libpng and zlib - scripts => Directory containing scripts for building libpng: - (see scripts/README.txt for the list of scripts) - -Good luck, and happy coding. - --Glenn Randers-Pehrson (current maintainer, since 1998) - Internet: glennrp at users.sourceforge.net - --Andreas Eric Dilger (former maintainer, 1996-1997) - Internet: adilger at enel.ucalgary.ca - Web: http://www-mddsp.enel.ucalgary.ca/People/adilger/ - --Guy Eric Schalnat (original author and former maintainer, 1995-1996) - (formerly of Group 42, Inc) - Internet: gschal at infinet.com diff --git a/io2d/src/3rd-party/libpng/TODO b/io2d/src/3rd-party/libpng/TODO deleted file mode 100644 index 6e1f028..0000000 --- a/io2d/src/3rd-party/libpng/TODO +++ /dev/null @@ -1,27 +0,0 @@ -/* -TODO - list of things to do for libpng: - -Final bug fixes. -Better C++ wrapper/full C++ implementation? -Fix problem with C++ and EXTERN "C". -cHRM transformation. -Remove setjmp/longjmp usage in favor of returning error codes. -Add "grayscale->palette" transformation and "palette->grayscale" detection. -Improved dithering. -Multi-lingual error and warning message support. -Complete sRGB transformation (presently it simply uses gamma=0.45455). -Man pages for function calls. -Better documentation. -Better filter selection - (counting huffman bits/precompression? filter inertia? filter costs?). -Histogram creation. -Text conversion between different code pages (Latin-1 -> Mac and DOS). -Avoid building gamma tables whenever possible. -Use greater precision when changing to linear gamma for compositing against - background and doing rgb-to-gray transformation. -Investigate pre-incremented loop counters and other loop constructions. -Add interpolated method of handling interlacing. -Switch to the simpler zlib (zlib/libpng) license if legally possible. -Extend pngvalid.c to validate more of the libpng transformations. - -*/ diff --git a/io2d/src/3rd-party/libpng/arm/arm_init.c b/io2d/src/3rd-party/libpng/arm/arm_init.c deleted file mode 100644 index 0987717..0000000 --- a/io2d/src/3rd-party/libpng/arm/arm_init.c +++ /dev/null @@ -1,232 +0,0 @@ - -/* arm_init.c - NEON optimised filter functions - * - * Copyright (c) 2013 Glenn Randers-Pehrson - * Written by Mans Rullgard, 2011. - * Last changed in libpng 1.6.6 [September 16, 2013] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ -/* Below, after checking __linux__, various non-C90 POSIX 1003.1 functions are - * called. - */ -#define _POSIX_SOURCE 1 - -#include "../pngpriv.h" - -#ifdef PNG_READ_SUPPORTED -#if PNG_ARM_NEON_OPT > 0 -#ifdef PNG_ARM_NEON_CHECK_SUPPORTED /* Do run-time checks */ -#include /* for sig_atomic_t */ - -#ifdef __ANDROID__ -/* Linux provides access to information about CPU capabilites via - * /proc/self/auxv, however Android blocks this while still claiming to be - * Linux. The Andoid NDK, however, provides appropriate support. - * - * Documentation: http://www.kandroid.org/ndk/docs/CPU-ARM-NEON.html - */ -#include - -static int -png_have_neon(png_structp png_ptr) -{ - /* This is a whole lot easier than the mess below, however it is probably - * implemented as below, therefore it is better to cache the result (these - * function calls may be slow!) - */ - PNG_UNUSED(png_ptr) - return android_getCpuFamily() == ANDROID_CPU_FAMILY_ARM && - (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0; -} -#elif defined(__linux__) -/* The generic __linux__ implementation requires reading /proc/self/auxv and - * looking at each element for one that records NEON capabilities. - */ -#include /* for POSIX 1003.1 */ -#include /* for EINTR */ - -#include -#include -#include -#include -#include - -/* A read call may be interrupted, in which case it returns -1 and sets errno to - * EINTR if nothing was done, otherwise (if something was done) a partial read - * may result. - */ -static size_t -safe_read(png_structp png_ptr, int fd, void *buffer_in, size_t nbytes) -{ - size_t ntotal = 0; - char *buffer = png_voidcast(char*, buffer_in); - - while (nbytes > 0) - { - unsigned int nread; - int iread; - - /* Passing nread > INT_MAX to read is implementation defined in POSIX - * 1003.1, therefore despite the unsigned argument portable code must - * limit the value to INT_MAX! - */ - if (nbytes > INT_MAX) - nread = INT_MAX; - - else - nread = (unsigned int)/*SAFE*/nbytes; - - iread = read(fd, buffer, nread); - - if (iread == -1) - { - /* This is the devil in the details, a read can terminate early with 0 - * bytes read because of EINTR, yet it still returns -1 otherwise end - * of file cannot be distinguished. - */ - if (errno != EINTR) - { - png_warning(png_ptr, "/proc read failed"); - return 0; /* I.e. a permanent failure */ - } - } - - else if (iread < 0) - { - /* Not a valid 'read' result: */ - png_warning(png_ptr, "OS /proc read bug"); - return 0; - } - - else if (iread > 0) - { - /* Continue reading until a permanent failure, or EOF */ - buffer += iread; - nbytes -= (unsigned int)/*SAFE*/iread; - ntotal += (unsigned int)/*SAFE*/iread; - } - - else - return ntotal; - } - - return ntotal; /* nbytes == 0 */ -} - -static int -png_have_neon(png_structp png_ptr) -{ - int fd = open("/proc/self/auxv", O_RDONLY); - Elf32_auxv_t aux; - - /* Failsafe: failure to open means no NEON */ - if (fd == -1) - { - png_warning(png_ptr, "/proc/self/auxv open failed"); - return 0; - } - - while (safe_read(png_ptr, fd, &aux, sizeof aux) == sizeof aux) - { - if (aux.a_type == AT_HWCAP && (aux.a_un.a_val & HWCAP_NEON) != 0) - { - close(fd); - return 1; - } - } - - close(fd); - return 0; -} -#else - /* We don't know how to do a run-time check on this system */ -# error "no support for run-time ARM NEON checks" -#endif /* OS checks */ -#endif /* PNG_ARM_NEON_CHECK_SUPPORTED */ - -#ifndef PNG_ALIGNED_MEMORY_SUPPORTED -# error "ALIGNED_MEMORY is required; set: -DPNG_ALIGNED_MEMORY_SUPPORTED" -#endif - -void -png_init_filter_functions_neon(png_structp pp, unsigned int bpp) -{ - /* The switch statement is compiled in for ARM_NEON_API, the call to - * png_have_neon is compiled in for ARM_NEON_CHECK. If both are defined - * the check is only performed if the API has not set the NEON option on - * or off explicitly. In this case the check controls what happens. - * - * If the CHECK is not compiled in and the option is UNSET the behavior prior - * to 1.6.7 was to use the NEON code - this was a bug caused by having the - * wrong order of the 'ON' and 'default' cases. UNSET now defaults to OFF, - * as documented in png.h - */ -#ifdef PNG_ARM_NEON_API_SUPPORTED - switch ((pp->options >> PNG_ARM_NEON) & 3) - { - case PNG_OPTION_UNSET: - /* Allow the run-time check to execute if it has been enabled - - * thus both API and CHECK can be turned on. If it isn't supported - * this case will fall through to the 'default' below, which just - * returns. - */ -#endif /* PNG_ARM_NEON_API_SUPPORTED */ -#ifdef PNG_ARM_NEON_CHECK_SUPPORTED - { - static volatile sig_atomic_t no_neon = -1; /* not checked */ - - if (no_neon < 0) - no_neon = !png_have_neon(pp); - - if (no_neon) - return; - } -#ifdef PNG_ARM_NEON_API_SUPPORTED - break; -#endif -#endif /* PNG_ARM_NEON_CHECK_SUPPORTED */ - -#ifdef PNG_ARM_NEON_API_SUPPORTED - default: /* OFF or INVALID */ - return; - - case PNG_OPTION_ON: - /* Option turned on */ - break; - } -#endif - - /* IMPORTANT: any new external functions used here must be declared using - * PNG_INTERNAL_FUNCTION in ../pngpriv.h. This is required so that the - * 'prefix' option to configure works: - * - * ./configure --with-libpng-prefix=foobar_ - * - * Verify you have got this right by running the above command, doing a build - * and examining pngprefix.h; it must contain a #define for every external - * function you add. (Notice that this happens automatically for the - * initialization function.) - */ - pp->read_filter[PNG_FILTER_VALUE_UP-1] = png_read_filter_row_up_neon; - - if (bpp == 3) - { - pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub3_neon; - pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg3_neon; - pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = - png_read_filter_row_paeth3_neon; - } - - else if (bpp == 4) - { - pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub4_neon; - pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg4_neon; - pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = - png_read_filter_row_paeth4_neon; - } -} -#endif /* PNG_ARM_NEON_OPT > 0 */ -#endif /* PNG_READ_SUPPORTED */ diff --git a/io2d/src/3rd-party/libpng/arm/filter_neon.S b/io2d/src/3rd-party/libpng/arm/filter_neon.S deleted file mode 100644 index 0d7b710..0000000 --- a/io2d/src/3rd-party/libpng/arm/filter_neon.S +++ /dev/null @@ -1,246 +0,0 @@ - -/* filter_neon.S - NEON optimised filter functions - * - * Copyright (c) 2013 Glenn Randers-Pehrson - * Written by Mans Rullgard, 2011. - * Last changed in libpng 1.6.8 [(PENDING RELEASE)] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -/* This is required to get the symbol renames, which are #defines, and also - * includes the definition (or not) of PNG_ARM_NEON_OPT and - * PNG_ARM_NEON_IMPLEMENTATION. - */ -#define PNG_VERSION_INFO_ONLY -#include "../pngpriv.h" - -#if defined(__linux__) && defined(__ELF__) -.section .note.GNU-stack,"",%progbits /* mark stack as non-executable */ -#endif - -/* Assembler NEON support - only works for 32-bit ARM (i.e. it does not work for - * ARM64). The code in arm/filter_neon_intrinsics.c supports ARM64, however it - * only works if -mfpu=neon is specified on the GCC command line. See pngpriv.h - * for the logic which sets PNG_USE_ARM_NEON_ASM: - */ -#if PNG_ARM_NEON_IMPLEMENTATION == 2 /* hand-coded assembler */ - -#ifdef PNG_READ_SUPPORTED -#if PNG_ARM_NEON_OPT > 0 - -#ifdef __ELF__ -# define ELF -#else -# define ELF @ -#endif - - .arch armv7-a - .fpu neon - -.macro func name, export=0 - .macro endfunc -ELF .size \name, . - \name - .endfunc - .purgem endfunc - .endm - .text - .if \export - .global \name - .endif -ELF .type \name, STT_FUNC - .func \name -\name: -.endm - -func png_read_filter_row_sub4_neon, export=1 - ldr r3, [r0, #4] @ rowbytes - vmov.i8 d3, #0 -1: - vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128] - vadd.u8 d0, d3, d4 - vadd.u8 d1, d0, d5 - vadd.u8 d2, d1, d6 - vadd.u8 d3, d2, d7 - vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]! - subs r3, r3, #16 - bgt 1b - - bx lr -endfunc - -func png_read_filter_row_sub3_neon, export=1 - ldr r3, [r0, #4] @ rowbytes - vmov.i8 d3, #0 - mov r0, r1 - mov r2, #3 - mov r12, #12 - vld1.8 {q11}, [r0], r12 -1: - vext.8 d5, d22, d23, #3 - vadd.u8 d0, d3, d22 - vext.8 d6, d22, d23, #6 - vadd.u8 d1, d0, d5 - vext.8 d7, d23, d23, #1 - vld1.8 {q11}, [r0], r12 - vst1.32 {d0[0]}, [r1,:32], r2 - vadd.u8 d2, d1, d6 - vst1.32 {d1[0]}, [r1], r2 - vadd.u8 d3, d2, d7 - vst1.32 {d2[0]}, [r1], r2 - vst1.32 {d3[0]}, [r1], r2 - subs r3, r3, #12 - bgt 1b - - bx lr -endfunc - -func png_read_filter_row_up_neon, export=1 - ldr r3, [r0, #4] @ rowbytes -1: - vld1.8 {q0}, [r1,:128] - vld1.8 {q1}, [r2,:128]! - vadd.u8 q0, q0, q1 - vst1.8 {q0}, [r1,:128]! - subs r3, r3, #16 - bgt 1b - - bx lr -endfunc - -func png_read_filter_row_avg4_neon, export=1 - ldr r12, [r0, #4] @ rowbytes - vmov.i8 d3, #0 -1: - vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128] - vld4.32 {d16[],d17[],d18[],d19[]},[r2,:128]! - vhadd.u8 d0, d3, d16 - vadd.u8 d0, d0, d4 - vhadd.u8 d1, d0, d17 - vadd.u8 d1, d1, d5 - vhadd.u8 d2, d1, d18 - vadd.u8 d2, d2, d6 - vhadd.u8 d3, d2, d19 - vadd.u8 d3, d3, d7 - vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]! - subs r12, r12, #16 - bgt 1b - - bx lr -endfunc - -func png_read_filter_row_avg3_neon, export=1 - push {r4,lr} - ldr r12, [r0, #4] @ rowbytes - vmov.i8 d3, #0 - mov r0, r1 - mov r4, #3 - mov lr, #12 - vld1.8 {q11}, [r0], lr -1: - vld1.8 {q10}, [r2], lr - vext.8 d5, d22, d23, #3 - vhadd.u8 d0, d3, d20 - vext.8 d17, d20, d21, #3 - vadd.u8 d0, d0, d22 - vext.8 d6, d22, d23, #6 - vhadd.u8 d1, d0, d17 - vext.8 d18, d20, d21, #6 - vadd.u8 d1, d1, d5 - vext.8 d7, d23, d23, #1 - vld1.8 {q11}, [r0], lr - vst1.32 {d0[0]}, [r1,:32], r4 - vhadd.u8 d2, d1, d18 - vst1.32 {d1[0]}, [r1], r4 - vext.8 d19, d21, d21, #1 - vadd.u8 d2, d2, d6 - vhadd.u8 d3, d2, d19 - vst1.32 {d2[0]}, [r1], r4 - vadd.u8 d3, d3, d7 - vst1.32 {d3[0]}, [r1], r4 - subs r12, r12, #12 - bgt 1b - - pop {r4,pc} -endfunc - -.macro paeth rx, ra, rb, rc - vaddl.u8 q12, \ra, \rb @ a + b - vaddl.u8 q15, \rc, \rc @ 2*c - vabdl.u8 q13, \rb, \rc @ pa - vabdl.u8 q14, \ra, \rc @ pb - vabd.u16 q15, q12, q15 @ pc - vcle.u16 q12, q13, q14 @ pa <= pb - vcle.u16 q13, q13, q15 @ pa <= pc - vcle.u16 q14, q14, q15 @ pb <= pc - vand q12, q12, q13 @ pa <= pb && pa <= pc - vmovn.u16 d28, q14 - vmovn.u16 \rx, q12 - vbsl d28, \rb, \rc - vbsl \rx, \ra, d28 -.endm - -func png_read_filter_row_paeth4_neon, export=1 - ldr r12, [r0, #4] @ rowbytes - vmov.i8 d3, #0 - vmov.i8 d20, #0 -1: - vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128] - vld4.32 {d16[],d17[],d18[],d19[]},[r2,:128]! - paeth d0, d3, d16, d20 - vadd.u8 d0, d0, d4 - paeth d1, d0, d17, d16 - vadd.u8 d1, d1, d5 - paeth d2, d1, d18, d17 - vadd.u8 d2, d2, d6 - paeth d3, d2, d19, d18 - vmov d20, d19 - vadd.u8 d3, d3, d7 - vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]! - subs r12, r12, #16 - bgt 1b - - bx lr -endfunc - -func png_read_filter_row_paeth3_neon, export=1 - push {r4,lr} - ldr r12, [r0, #4] @ rowbytes - vmov.i8 d3, #0 - vmov.i8 d4, #0 - mov r0, r1 - mov r4, #3 - mov lr, #12 - vld1.8 {q11}, [r0], lr -1: - vld1.8 {q10}, [r2], lr - paeth d0, d3, d20, d4 - vext.8 d5, d22, d23, #3 - vadd.u8 d0, d0, d22 - vext.8 d17, d20, d21, #3 - paeth d1, d0, d17, d20 - vst1.32 {d0[0]}, [r1,:32], r4 - vext.8 d6, d22, d23, #6 - vadd.u8 d1, d1, d5 - vext.8 d18, d20, d21, #6 - paeth d2, d1, d18, d17 - vext.8 d7, d23, d23, #1 - vld1.8 {q11}, [r0], lr - vst1.32 {d1[0]}, [r1], r4 - vadd.u8 d2, d2, d6 - vext.8 d19, d21, d21, #1 - paeth d3, d2, d19, d18 - vst1.32 {d2[0]}, [r1], r4 - vmov d4, d19 - vadd.u8 d3, d3, d7 - vst1.32 {d3[0]}, [r1], r4 - subs r12, r12, #12 - bgt 1b - - pop {r4,pc} -endfunc -#endif /* PNG_ARM_NEON_OPT > 0 */ -#endif /* PNG_READ_SUPPORTED */ -#endif /* PNG_ARM_NEON_IMPLEMENTATION == 2 (assembler) */ diff --git a/io2d/src/3rd-party/libpng/arm/filter_neon_intrinsics.c b/io2d/src/3rd-party/libpng/arm/filter_neon_intrinsics.c deleted file mode 100644 index 64f12fc..0000000 --- a/io2d/src/3rd-party/libpng/arm/filter_neon_intrinsics.c +++ /dev/null @@ -1,372 +0,0 @@ - -/* filter_neon_intrinsics.c - NEON optimised filter functions - * - * Copyright (c) 2013 Glenn Randers-Pehrson - * Written by James Yu , October 2013. - * Based on filter_neon.S, written by Mans Rullgard, 2011. - * - * Last changed in libpng 1.6.8 [(PENDING RELEASE)] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#include "../pngpriv.h" - -/* This code requires -mfpu=neon on the command line: */ -#if PNG_ARM_NEON_IMPLEMENTATION == 1 /* intrinsics code from pngpriv.h */ - -#include - -/* libpng row pointers are not necessarily aligned to any particular boundary, - * however this code will only work with appropriate alignment. arm/arm_init.c - * checks for this (and will not compile unless it is done), this code uses - * variants of png_aligncast to avoid compiler warnings. - */ -#define png_ptr(type,pointer) png_aligncast(type *,pointer) -#define png_ptrc(type,pointer) png_aligncastconst(const type *,pointer) - -/* The following relies on a variable 'temp_pointer' being declared with type - * 'type'. This is written this way just to hide the GCC strict aliasing - * warning; note that the code is safe because there never is an alias between - * the input and output pointers. - */ -#define png_ldr(type,pointer)\ - (temp_pointer = png_ptr(type,pointer), *temp_pointer) - -#ifdef PNG_READ_SUPPORTED -#if PNG_ARM_NEON_OPT > 0 - -void -png_read_filter_row_up_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_bytep rp = row; - png_bytep rp_stop = row + row_info->rowbytes; - png_const_bytep pp = prev_row; - - for (; rp < rp_stop; rp += 16, pp += 16) - { - uint8x16_t qrp, qpp; - - qrp = vld1q_u8(rp); - qpp = vld1q_u8(pp); - qrp = vaddq_u8(qrp, qpp); - vst1q_u8(rp, qrp); - } -} - -void -png_read_filter_row_sub3_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_bytep rp = row; - png_bytep rp_stop = row + row_info->rowbytes; - - uint8x16_t vtmp = vld1q_u8(rp); - uint8x8x2_t *vrpt = png_ptr(uint8x8x2_t, &vtmp); - uint8x8x2_t vrp = *vrpt; - - uint8x8x4_t vdest; - vdest.val[3] = vdup_n_u8(0); - - for (; rp < rp_stop;) - { - uint8x8_t vtmp1, vtmp2; - uint32x2_t *temp_pointer; - - vtmp1 = vext_u8(vrp.val[0], vrp.val[1], 3); - vdest.val[0] = vadd_u8(vdest.val[3], vrp.val[0]); - vtmp2 = vext_u8(vrp.val[0], vrp.val[1], 6); - vdest.val[1] = vadd_u8(vdest.val[0], vtmp1); - - vtmp1 = vext_u8(vrp.val[1], vrp.val[1], 1); - vdest.val[2] = vadd_u8(vdest.val[1], vtmp2); - vdest.val[3] = vadd_u8(vdest.val[2], vtmp1); - - vtmp = vld1q_u8(rp + 12); - vrpt = png_ptr(uint8x8x2_t, &vtmp); - vrp = *vrpt; - - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[0]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[1]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[2]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[3]), 0); - rp += 3; - } - - PNG_UNUSED(prev_row) -} - -void -png_read_filter_row_sub4_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_bytep rp = row; - png_bytep rp_stop = row + row_info->rowbytes; - - uint8x8x4_t vdest; - vdest.val[3] = vdup_n_u8(0); - - for (; rp < rp_stop; rp += 16) - { - uint32x2x4_t vtmp = vld4_u32(png_ptr(uint32_t,rp)); - uint8x8x4_t *vrpt = png_ptr(uint8x8x4_t,&vtmp); - uint8x8x4_t vrp = *vrpt; - uint32x2x4_t *temp_pointer; - - vdest.val[0] = vadd_u8(vdest.val[3], vrp.val[0]); - vdest.val[1] = vadd_u8(vdest.val[0], vrp.val[1]); - vdest.val[2] = vadd_u8(vdest.val[1], vrp.val[2]); - vdest.val[3] = vadd_u8(vdest.val[2], vrp.val[3]); - vst4_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2x4_t,&vdest), 0); - } - - PNG_UNUSED(prev_row) -} - -void -png_read_filter_row_avg3_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_bytep rp = row; - png_const_bytep pp = prev_row; - png_bytep rp_stop = row + row_info->rowbytes; - - uint8x16_t vtmp; - uint8x8x2_t *vrpt; - uint8x8x2_t vrp; - uint8x8x4_t vdest; - vdest.val[3] = vdup_n_u8(0); - - vtmp = vld1q_u8(rp); - vrpt = png_ptr(uint8x8x2_t,&vtmp); - vrp = *vrpt; - - for (; rp < rp_stop; pp += 12) - { - uint8x8_t vtmp1, vtmp2, vtmp3; - - uint8x8x2_t *vppt; - uint8x8x2_t vpp; - - uint32x2_t *temp_pointer; - - vtmp = vld1q_u8(pp); - vppt = png_ptr(uint8x8x2_t,&vtmp); - vpp = *vppt; - - vtmp1 = vext_u8(vrp.val[0], vrp.val[1], 3); - vdest.val[0] = vhadd_u8(vdest.val[3], vpp.val[0]); - vdest.val[0] = vadd_u8(vdest.val[0], vrp.val[0]); - - vtmp2 = vext_u8(vpp.val[0], vpp.val[1], 3); - vtmp3 = vext_u8(vrp.val[0], vrp.val[1], 6); - vdest.val[1] = vhadd_u8(vdest.val[0], vtmp2); - vdest.val[1] = vadd_u8(vdest.val[1], vtmp1); - - vtmp2 = vext_u8(vpp.val[0], vpp.val[1], 6); - vtmp1 = vext_u8(vrp.val[1], vrp.val[1], 1); - - vtmp = vld1q_u8(rp + 12); - vrpt = png_ptr(uint8x8x2_t,&vtmp); - vrp = *vrpt; - - vdest.val[2] = vhadd_u8(vdest.val[1], vtmp2); - vdest.val[2] = vadd_u8(vdest.val[2], vtmp3); - - vtmp2 = vext_u8(vpp.val[1], vpp.val[1], 1); - - vdest.val[3] = vhadd_u8(vdest.val[2], vtmp2); - vdest.val[3] = vadd_u8(vdest.val[3], vtmp1); - - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[0]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[1]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[2]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[3]), 0); - rp += 3; - } -} - -void -png_read_filter_row_avg4_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_bytep rp = row; - png_bytep rp_stop = row + row_info->rowbytes; - png_const_bytep pp = prev_row; - - uint8x8x4_t vdest; - vdest.val[3] = vdup_n_u8(0); - - for (; rp < rp_stop; rp += 16, pp += 16) - { - uint32x2x4_t vtmp; - uint8x8x4_t *vrpt, *vppt; - uint8x8x4_t vrp, vpp; - uint32x2x4_t *temp_pointer; - - vtmp = vld4_u32(png_ptr(uint32_t,rp)); - vrpt = png_ptr(uint8x8x4_t,&vtmp); - vrp = *vrpt; - vtmp = vld4_u32(png_ptrc(uint32_t,pp)); - vppt = png_ptr(uint8x8x4_t,&vtmp); - vpp = *vppt; - - vdest.val[0] = vhadd_u8(vdest.val[3], vpp.val[0]); - vdest.val[0] = vadd_u8(vdest.val[0], vrp.val[0]); - vdest.val[1] = vhadd_u8(vdest.val[0], vpp.val[1]); - vdest.val[1] = vadd_u8(vdest.val[1], vrp.val[1]); - vdest.val[2] = vhadd_u8(vdest.val[1], vpp.val[2]); - vdest.val[2] = vadd_u8(vdest.val[2], vrp.val[2]); - vdest.val[3] = vhadd_u8(vdest.val[2], vpp.val[3]); - vdest.val[3] = vadd_u8(vdest.val[3], vrp.val[3]); - - vst4_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2x4_t,&vdest), 0); - } -} - -static uint8x8_t -paeth(uint8x8_t a, uint8x8_t b, uint8x8_t c) -{ - uint8x8_t d, e; - uint16x8_t p1, pa, pb, pc; - - p1 = vaddl_u8(a, b); /* a + b */ - pc = vaddl_u8(c, c); /* c * 2 */ - pa = vabdl_u8(b, c); /* pa */ - pb = vabdl_u8(a, c); /* pb */ - pc = vabdq_u16(p1, pc); /* pc */ - - p1 = vcleq_u16(pa, pb); /* pa <= pb */ - pa = vcleq_u16(pa, pc); /* pa <= pc */ - pb = vcleq_u16(pb, pc); /* pb <= pc */ - - p1 = vandq_u16(p1, pa); /* pa <= pb && pa <= pc */ - - d = vmovn_u16(pb); - e = vmovn_u16(p1); - - d = vbsl_u8(d, b, c); - e = vbsl_u8(e, a, d); - - return e; -} - -void -png_read_filter_row_paeth3_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_bytep rp = row; - png_const_bytep pp = prev_row; - png_bytep rp_stop = row + row_info->rowbytes; - - uint8x16_t vtmp; - uint8x8x2_t *vrpt; - uint8x8x2_t vrp; - uint8x8_t vlast = vdup_n_u8(0); - uint8x8x4_t vdest; - vdest.val[3] = vdup_n_u8(0); - - vtmp = vld1q_u8(rp); - vrpt = png_ptr(uint8x8x2_t,&vtmp); - vrp = *vrpt; - - for (; rp < rp_stop; pp += 12) - { - uint8x8x2_t *vppt; - uint8x8x2_t vpp; - uint8x8_t vtmp1, vtmp2, vtmp3; - uint32x2_t *temp_pointer; - - vtmp = vld1q_u8(pp); - vppt = png_ptr(uint8x8x2_t,&vtmp); - vpp = *vppt; - - vdest.val[0] = paeth(vdest.val[3], vpp.val[0], vlast); - vdest.val[0] = vadd_u8(vdest.val[0], vrp.val[0]); - - vtmp1 = vext_u8(vrp.val[0], vrp.val[1], 3); - vtmp2 = vext_u8(vpp.val[0], vpp.val[1], 3); - vdest.val[1] = paeth(vdest.val[0], vtmp2, vpp.val[0]); - vdest.val[1] = vadd_u8(vdest.val[1], vtmp1); - - vtmp1 = vext_u8(vrp.val[0], vrp.val[1], 6); - vtmp3 = vext_u8(vpp.val[0], vpp.val[1], 6); - vdest.val[2] = paeth(vdest.val[1], vtmp3, vtmp2); - vdest.val[2] = vadd_u8(vdest.val[2], vtmp1); - - vtmp1 = vext_u8(vrp.val[1], vrp.val[1], 1); - vtmp2 = vext_u8(vpp.val[1], vpp.val[1], 1); - - vtmp = vld1q_u8(rp + 12); - vrpt = png_ptr(uint8x8x2_t,&vtmp); - vrp = *vrpt; - - vdest.val[3] = paeth(vdest.val[2], vtmp2, vtmp3); - vdest.val[3] = vadd_u8(vdest.val[3], vtmp1); - - vlast = vtmp2; - - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[0]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[1]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[2]), 0); - rp += 3; - vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[3]), 0); - rp += 3; - } -} - -void -png_read_filter_row_paeth4_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_bytep rp = row; - png_bytep rp_stop = row + row_info->rowbytes; - png_const_bytep pp = prev_row; - - uint8x8_t vlast = vdup_n_u8(0); - uint8x8x4_t vdest; - vdest.val[3] = vdup_n_u8(0); - - for (; rp < rp_stop; rp += 16, pp += 16) - { - uint32x2x4_t vtmp; - uint8x8x4_t *vrpt, *vppt; - uint8x8x4_t vrp, vpp; - uint32x2x4_t *temp_pointer; - - vtmp = vld4_u32(png_ptr(uint32_t,rp)); - vrpt = png_ptr(uint8x8x4_t,&vtmp); - vrp = *vrpt; - vtmp = vld4_u32(png_ptrc(uint32_t,pp)); - vppt = png_ptr(uint8x8x4_t,&vtmp); - vpp = *vppt; - - vdest.val[0] = paeth(vdest.val[3], vpp.val[0], vlast); - vdest.val[0] = vadd_u8(vdest.val[0], vrp.val[0]); - vdest.val[1] = paeth(vdest.val[0], vpp.val[1], vpp.val[0]); - vdest.val[1] = vadd_u8(vdest.val[1], vrp.val[1]); - vdest.val[2] = paeth(vdest.val[1], vpp.val[2], vpp.val[1]); - vdest.val[2] = vadd_u8(vdest.val[2], vrp.val[2]); - vdest.val[3] = paeth(vdest.val[2], vpp.val[3], vpp.val[2]); - vdest.val[3] = vadd_u8(vdest.val[3], vrp.val[3]); - - vlast = vpp.val[3]; - - vst4_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2x4_t,&vdest), 0); - } -} - -#endif /* PNG_ARM_NEON_OPT > 0 */ -#endif /* PNG_READ_SUPPORTED */ -#endif /* PNG_ARM_NEON_IMPLEMENTATION == 1 (intrinsics) */ diff --git a/io2d/src/3rd-party/libpng/autogen.sh b/io2d/src/3rd-party/libpng/autogen.sh deleted file mode 100644 index 9af34bd..0000000 --- a/io2d/src/3rd-party/libpng/autogen.sh +++ /dev/null @@ -1,224 +0,0 @@ -#! /bin/sh -# -# Run 'autoreconf' to build 'configure', 'Makefile.in' and other configure -# control files. -# -# The first time this is run on a GIT checkout the only files that exist are -# configure.ac and Makefile.am; all of the autotools support scripts are -# missing. They are instantiated with autoreconf --force --install. -# -# For regular ("tarball") distributions all the files should exist. We do not -# want them to be updated *under any circumstances*. It should never be -# necessary to run autogen.sh because ./configure --enable-maintainer-mode says -# what to do if Makefile.am or configure.ac are changed. -# -# It is *probably* OK to update the files on a GIT checkout, because they have -# come from the local tools, but leave that to the user who is assumed to know -# whether it is ok or required. -# -# This script is intended to work without arguments, there are, however, hidden -# arguments (a) for use while testing the script and (b) to fix up systems that -# have been broken. If (b) is required the script prompts for the correct -# options. For this reason the options are *NOT* documented in the help; this -# is deliberate; UTSL. -# -clean= -maintainer= -while test $# -gt 0 -do - case "$1" in - --maintainer) - maintainer=1;; - - --clean) - clean=1;; - - *) - exec >&2 - echo "$0: usage: ./autogen.sh" - if test -d .git - then - echo " ./autogen.sh generates the configure script and" - echo " Makefile.in, or refreshes them after changes to Makefile.am" - echo " or configure.ac. You may prefer to just run autoreconf." - elif test -z "$maintainer" - then - echo " DO NOT RUN THIS SCRIPT." - echo " If you need to change Makefile.am or configure.ac then you" - echo " also need to run ./configure --enable-maintainer-mode and" - echo " use the appropriate autotools, *NOT* this script, to update" - echo " everything, please check the documentation of autoreconf." - echo " WARNING: libpng is intentionally generated with a known," - echo " fixed, set of autotools. It is known *NOT* to work with" - echo " the collection of autotools distributed on highly reputable" - echo " operating systems." - echo " Remember: autotools is GNU software, you are expected to" - echo " pay for support." - else - echo " You have run autogen.sh with --maintainer enabled and you" - echo " are not using a GIT distribution, then you have given an" - echo " unrecognized argument. This is not good. --maintainer" - echo " switches off any assumptions that you might not know what" - echo " you are doing." - fi - exit 1;; - esac - - shift -done -# -# First check for a set of the autotools files; if absent then this is assumed -# to be a GIT version and the local autotools must be used. If present this -# is a tarball distribution and the script should not be used. If partially -# present bad things are happening. -# -# The autotools generated files: -libpng_autotools_files="Makefile.in aclocal.m4 config.guess config.h.in\ - config.sub configure depcomp install-sh ltmain.sh missing test-driver" -# -# Files generated by versions of configue >2.68 or automake >1.13 (i.e. later -# versions than those required by configure.ac): -libpng_autotools_extra="compile" -# -# These are separate because 'maintainer-clean' does not remove them. -libpng_libtool_files="scripts/libtool.m4 scripts/ltoptions.m4\ - scripts/ltsugar.m4 scripts/ltversion.m4 scripts/lt~obsolete.m4" - -libpng_autotools_dirs="autom4te.cache" # not required -# -# The configure generated files: -libpng_configure_files="Makefile config.h config.log config.status\ - libpng-config libpng.pc libtool stamp-h1" - -libpng_configure_dirs=".deps" -# -# We must remove the configure generated files as well as the autotools -# generated files if autotools are regenerated because otherwise if configure -# has been run without "--enable-maintainer-mode" make can do a partial update -# of Makefile. These functions do the two bits of cleaning. -clean_autotools(){ - rm -rf $libpng_autotools_files $libpng_libtool_files $libpng_autotools_dirs - rm -rf $libpng_autotools_extra -} - -clean_configure(){ - rm -rf $libpng_configure_files $libpng_configure_dirs -} -# -# Clean: remove everything (this is to help with testing) -if test -n "$clean" -then - clean_configure - if test -n "$maintainer" - then - clean_autotools - fi - - exit 0 -fi -# -# Validate the distribution. -libpng_autotools_file_found= -libpng_autotools_file_missing= -for file in $libpng_autotools_files -do - if test -f "$file" - then - libpng_autotools_file_found=1 - else - libpng_autotools_file_missing=1 - fi -done -# -# Presence of one of these does not *invalidate* missing, but absence -# invalidates found. -for file in $libpng_libtool_files -do - if test ! -f "$file" - then - libpng_autotools_file_missing=1 - fi -done -# -# The cache directory doesn't matter - it will be regenerated and does not exist -# anyway in a tarball. -# -# Either everything is missing or everything is there, the --maintainer option -# just changes this so that the mode is set to generate all the files. -mode= -if test -z "$libpng_autotools_file_found" -o -n "$maintainer" -then - mode="autoreconf" -else - if test -n "$libpng_autotools_file_missing" - then - mode="broken" - else - mode="configure" - fi -fi -# -# So: -case "$mode" in - autoreconf) - # Clean in case configure files exist - clean_configure - clean_autotools - # Everything must be initialized, so use --force - if autoreconf --warnings=all --force --install - then - missing= - for file in $libpng_autotools_files - do - test -f "$file" || missing=1 - done - # ignore the cache directory - test -z "$missing" || { - exec >&2 - echo "autoreconf was run, but did not produce all the expected" - echo "files. It is likely that your autotools installation is" - echo "not compatible with that expected by libpng." - exit 1 - } - else - exec >&2 - echo "autoreconf failed: your version of autotools is incompatible" - echo "with this libpng version. Please use a distributed archive" - echo "(which includes the autotools generated files) and run configure" - echo "instead." - exit 1 - fi;; - - configure) - if test -d .git - then - exec >&2 - echo "ERROR: running autoreconf on an initialized sytem" - echo " This is not necessary; it is only necessary to remake the" - echo " autotools generated files if Makefile.am or configure.ac" - echo " change and make does the right thing with:" - echo - echo " ./configure --enable-maintainer-mode." - echo - echo " You can run autoreconf yourself if you don't like maintainer" - echo " mode and you can also just run autoreconf -f -i to initialize" - echo " everything in the first place; this script is only for" - echo " compatibility with prior releases." - exit 1 - else - exec >&2 - echo "autogen.sh is intended only to generate 'configure' on systems" - echo "that do not have it. You have a complete 'configure', if you" - echo "need to change Makefile.am or configure.ac you also need to" - echo "run configure with the --enable-maintainer-mode option." - exit 1 - fi;; - - broken) - exec >&2 - echo "Your system has a partial set of autotools generated files." - echo "autogen.sh is unable to proceed. The full set of files is" - echo "contained in the libpng 'tar' distribution archive and you do" - echo "not need to run autogen.sh if you use it." - exit 1;; -esac diff --git a/io2d/src/3rd-party/libpng/configure.ac b/io2d/src/3rd-party/libpng/configure.ac deleted file mode 100644 index 3ef41e9..0000000 --- a/io2d/src/3rd-party/libpng/configure.ac +++ /dev/null @@ -1,285 +0,0 @@ -# configure.ac - -dnl Process this file with autoconf to produce a configure script. -dnl -dnl Minor upgrades (compatible ABI): increment the package version -dnl (third field in two places below) and set the PNGLIB_RELEASE -dnl variable. -dnl -dnl Major upgrades (incompatible ABI): increment the package major -dnl version (second field, or first if desired), set the minor -dnl to 0, set PNGLIB_MAJOR below *and* follow the instructions in -dnl Makefile.am to upgrade the package name. - -dnl This is here to prevent earlier autoconf from being used, it -dnl should not be necessary to regenerate configure if the time -dnl stamps are correct -AC_PREREQ([2.68]) - -dnl Version number stuff here: - -AC_INIT([libpng],[1.6.8beta03],[png-mng-implement@lists.sourceforge.net]) -AC_CONFIG_MACRO_DIR([scripts]) - -# libpng does not follow GNU file name conventions (hence 'foreign') -# color-tests requires automake 1.11 or later -# silent-rules requires automake 1.11 or later -# dist-xz requires automake 1.11 or later -# 1.12.2 fixes a security issue in 1.11.2 and 1.12.1 -# 1.13 is required for parallel tests -AM_INIT_AUTOMAKE([1.13 foreign dist-xz color-tests silent-rules subdir-objects]) -# The following line causes --disable-maintainer-mode to be the default to -# configure, this is necessary because libpng distributions cannot rely on the -# time stamps of the autotools generated files being correct -AM_MAINTAINER_MODE - -dnl configure.ac and Makefile.am expect automake 1.11.2 or a compatible later -dnl version; aclocal.m4 will generate a failure if you use a prior version of -dnl automake, so the following is not necessary (and is not defined anyway): -dnl AM_PREREQ([1.11.2]) -dnl stop configure from automagically running automake - -PNGLIB_VERSION=1.6.8beta03 -PNGLIB_MAJOR=1 -PNGLIB_MINOR=6 -PNGLIB_RELEASE=8 - -dnl End of version number stuff - -AC_CONFIG_SRCDIR([pngget.c]) -AC_CONFIG_HEADERS([config.h]) - -# Checks for programs. -AC_LANG([C]) -AC_PROG_CC -AM_PROG_AS -LT_PATH_LD -AC_PROG_CPP -AC_PROG_AWK -AC_PROG_INSTALL -AC_PROG_LN_S -AC_PROG_MAKE_SET - -dnl libtool/libtoolize; version 2.4.2 is the tested version, this or any -dnl compatible later version may be used -LT_INIT([win32-dll]) -LT_PREREQ([2.4.2]) - -# Some awks crash when confronted with pnglibconf.dfa, do a test run now -# to make sure this doesn't happen -AC_MSG_CHECKING([that AWK works]) -if ${AWK} -f ${srcdir}/scripts/options.awk out="/dev/null" version=search\ - ${srcdir}/pngconf.h ${srcdir}/scripts/pnglibconf.dfa\ - ${srcdir}/pngusr.dfa 1>&2 -then - AC_MSG_RESULT([ok]) -else - AC_MSG_FAILURE([failed], 1) -fi - -# This is a remnant of the old cc -E validation, where it may have been -# necessary to use a different preprocessor for .dfn files -DFNCPP="$CPP" -AC_SUBST(DFNCPP) - -# -Werror cannot be passed to GCC in CFLAGS because configure will fail (it -# checks the compiler with a program that generates a warning), add the -# following option to deal with this -AC_ARG_VAR(PNG_COPTS, - [additional flags for the C compiler, use this for options that would] - [cause configure itself to fail]) -AC_ARG_ENABLE(werror, - AS_HELP_STRING([[[--enable-werror[=OPT]]]], - [Pass -Werror or the given argument to the compiler if it is supported]), - [test "$enable_werror" = "yes" && enable_werror="-Werror" - if test "$enable_werror" != "no"; then - sav_CFLAGS="$CFLAGS" - CFLAGS="$enable_werror $CFLAGS" - AC_MSG_CHECKING([if the compiler allows $enable_werror]) - AC_COMPILE_IFELSE( - [AC_LANG_SOURCE([ - [int main(int argc, char **argv){] - [return argv[argc-1][0];] - [}]])], - AC_MSG_RESULT(yes) - PNG_COPTS="$PNG_COPTS $enable_werror", - AC_MSG_RESULT(no)) - CFLAGS="$sav_CFLAGS" - fi],) - -# Checks for header files. -AC_HEADER_STDC - -# Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -AC_TYPE_SIZE_T -AC_STRUCT_TM -AC_C_RESTRICT - -# Checks for library functions. -AC_FUNC_STRTOD -AC_CHECK_FUNCS([memset], , AC_MSG_ERROR(memset not found in libc)) -AC_CHECK_FUNCS([pow], , AC_CHECK_LIB(m, pow, , AC_MSG_ERROR(cannot find pow)) ) -AC_ARG_WITH(zlib-prefix, - AS_HELP_STRING([[[--with-zlib-prefix]]], - [prefix that may have been used in installed zlib]), - [ZPREFIX=${withval}], - [ZPREFIX='z_']) -AC_CHECK_LIB(z, zlibVersion, , - AC_CHECK_LIB(z, ${ZPREFIX}zlibVersion, , AC_MSG_ERROR(zlib not installed))) - -# The following is for pngvalid, to ensure it catches FP errors even on -# platforms that don't enable FP exceptions, the function appears in the math -# library (typically), it's not an error if it is not found. -AC_CHECK_LIB([m], [feenableexcept]) -AC_CHECK_FUNCS([feenableexcept]) - -AC_MSG_CHECKING([if using Solaris linker]) -SLD=`$LD --version 2>&1 | grep Solaris` -if test "$SLD"; then - have_solaris_ld=yes - AC_MSG_RESULT(yes) -else - have_solaris_ld=no - AC_MSG_RESULT(no) -fi -AM_CONDITIONAL(HAVE_SOLARIS_LD, test "$have_solaris_ld" = "yes") - -AC_MSG_CHECKING([if libraries can be versioned]) -# Special case for PE/COFF platforms: ld reports -# support for version-script, but doesn't actually -# DO anything with it. -case $host in -*cygwin* | *mingw32* | *interix* ) - have_ld_version_script=no - AC_MSG_RESULT(no) -;; -* ) - -if test "$have_solaris_ld" = "yes"; then - GLD=`$LD --help < /dev/null 2>&1 | grep 'M mapfile'` -else - GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script` -fi - -if test "$GLD"; then - have_ld_version_script=yes - AC_MSG_RESULT(yes) -else - have_ld_version_script=no - AC_MSG_RESULT(no) - AC_MSG_WARN(*** You have not enabled versioned symbols.) -fi -;; -esac - -AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes") - -if test "$have_ld_version_script" = "yes"; then - AC_MSG_CHECKING([for symbol prefix]) - SYMBOL_PREFIX=`echo "PREFIX=__USER_LABEL_PREFIX__" \ - | ${CPP-${CC-gcc} -E} - 2>&1 \ - | ${EGREP-grep} "^PREFIX=" \ - | ${SED-sed} -e "s:^PREFIX=::" -e "s:__USER_LABEL_PREFIX__::"` - AC_SUBST(SYMBOL_PREFIX) - AC_MSG_RESULT($SYMBOL_PREFIX) -fi - -# Substitutions for .in files -AC_SUBST(PNGLIB_VERSION) -AC_SUBST(PNGLIB_MAJOR) -AC_SUBST(PNGLIB_MINOR) -AC_SUBST(PNGLIB_RELEASE) - -# Additional arguments (and substitutions) -# Allow the pkg-config directory to be set -AC_ARG_WITH(pkgconfigdir, - AS_HELP_STRING([[[--with-pkgconfigdir]]], - [Use the specified pkgconfig dir (default is libdir/pkgconfig)]), - [pkgconfigdir=${withval}], - [pkgconfigdir='${libdir}/pkgconfig']) - -AC_SUBST([pkgconfigdir]) -AC_MSG_NOTICE([[pkgconfig directory is ${pkgconfigdir}]]) - -# Make the *-config binary config scripts optional -AC_ARG_WITH(binconfigs, - AS_HELP_STRING([[[--with-binconfigs]]], - [Generate shell libpng-config scripts as well as pkg-config data] - [@<:@default=yes@:>@]), - [if test "${withval}" = no; then - binconfigs= - AC_MSG_NOTICE([[libpng-config scripts will not be built]]) - else - binconfigs='${binconfigs}' - fi], - [binconfigs='${binconfigs}']) -AC_SUBST([binconfigs]) - -# Support for prefixes to the API function names; this will generate defines -# at the start of the build to rename exported library functions -AC_ARG_WITH(libpng-prefix, - AS_HELP_STRING([[[--with-libpng-prefix]]], - [prefix libpng exported function (API) names with the given value]), - [if test "${withval:-no}" != "no"; then - AC_SUBST([PNG_PREFIX], [${withval}]) - fi]) -AM_CONDITIONAL([DO_PNG_PREFIX], [test "${with_libpng_prefix:-no}" != "no"]) - -# HOST SPECIFIC OPTIONS -# ===================== -# -# ARM -# === -# -# ARM NEON (SIMD) support. - -AC_ARG_ENABLE([arm-neon], - AS_HELP_STRING([[[--enable-arm-neon]]], - [Enable ARM NEON optimizations: =no/off, check, api, yes/on:] - [no/off: disable the optimizations; check: use internal checking code] - [(deprecated and poorly supported); api: disable by default, enable by] - [a call to png_set_option; yes/on: turn on unconditionally.] - [If not specified: determined by the compiler.]), - [case "$enableval" in - no|off) - # disable the default enabling on __ARM_NEON__ systems: - AC_DEFINE([PNG_ARM_NEON_OPT], [0], - [Disable ARM Neon optimizations]) - # Prevent inclusion of the assembler files below: - enable_arm_neon=no;; - check) - AC_DEFINE([PNG_ARM_NEON_CHECK_SUPPORTED], [], - [Check for ARM Neon support at run-time]);; - api) - AC_DEFINE([PNG_ARM_NEON_API_SUPPORTED], [], - [Turn on ARM Neon optimizations at run-time]);; - yes|on) - AC_DEFINE([PNG_ARM_NEON_OPT], [2], - [Enable ARM Neon optimizations]) - AC_MSG_WARN([--enable-arm-neon: please specify 'check' or 'api', if] - [you want the optimizations unconditionally pass -mfpu=neon] - [to the compiler.]);; - *) - AC_MSG_ERROR([--enable-arm-neon=${enable_arm_neon}: invalid value]) - esac]) - -# Add ARM specific files to all builds where the host_cpu is arm ('arm*') or -# where ARM optimizations were explicitly requested (this allows a fallback if a -# future host CPU does not match 'arm*') - -AM_CONDITIONAL([PNG_ARM_NEON], - [test "$enable_arm_neon" != 'no' && - case "$host_cpu" in - arm*) :;; - *) test "$enable_arm_neon" != '';; - esac]) - -AC_MSG_NOTICE([[Extra options for compiler: $PNG_COPTS]]) - -# Config files, substituting as above -AC_CONFIG_FILES([Makefile libpng.pc:libpng.pc.in]) -AC_CONFIG_FILES([libpng-config:libpng-config.in], - [chmod +x libpng-config]) - -AC_OUTPUT diff --git a/io2d/src/3rd-party/libpng/contrib/README.txt b/io2d/src/3rd-party/libpng/contrib/README.txt deleted file mode 100644 index bcd433d..0000000 --- a/io2d/src/3rd-party/libpng/contrib/README.txt +++ /dev/null @@ -1,4 +0,0 @@ - -This "contrib" directory contains contributions which are not necessarily under -the libpng license, although all are open source. They are not part of -libpng proper and are not used for building the library. diff --git a/io2d/src/3rd-party/libpng/contrib/conftest/README b/io2d/src/3rd-party/libpng/contrib/conftest/README deleted file mode 100644 index 0f47279..0000000 --- a/io2d/src/3rd-party/libpng/contrib/conftest/README +++ /dev/null @@ -1,49 +0,0 @@ -This directory contains test configuration files, currently always '.dfa' files -intended to be used in the build by setting the make macro DFA_XTRA to the name -of the file. - -These files are used in release validation of the 'configure' builds of libpng -by building 'make check', or 'make all-am' for cross-builds, with each .dfa -file. - -The files in this directory may change between minor releases, however -contributions describing specific builds of libpng are welcomed. There is no -guarantee that libpng will continue to build with such configurations; support -for given configurations can be, and has been, dropped between successive minor -releases. However if a .dfa file describing a configuration is not in this -directory it is very unlikely that it will be tested before a minor release! - -You can use these .dfa files as the basis of new configurations. Files in this -directory should not have any use restrictions or restrictive licenses. - -This directory is not included in the .zip and .7z distributions, which do -not contain 'configure' scripts. - -DOCUMENTATION -============= - -Examples: - ${srcdir}/pngusr.dfa - ${srcdir}/contrib/pngminim/*/pngusr.dfa - -Documentation of the options: - ${srcdir}/scripts/pnglibconf.dfa - -Documentation of the file format: - ${srcdir}/scripts/options.awk - -FILE NAMING -=========== - -File names in this directory may NOT contain any of the five characters: - - - , + * ? - -Neither may they contain any space character. - -While other characters may be used it is strongly suggested that file names be -limited to lower case Latiin alphabetic characters (a-z), digits (0-9) and, if -necessary the underscore (_) character. File names should be about 8 characters -long (excluding the .dfa extension). Submitted .dfa files should have names -between 7 and 16 characters long, shorter names (6 characters or less) are -reserved for standard tests. diff --git a/io2d/src/3rd-party/libpng/contrib/conftest/read.dfa b/io2d/src/3rd-party/libpng/contrib/conftest/read.dfa deleted file mode 100644 index 21e88d0..0000000 --- a/io2d/src/3rd-party/libpng/contrib/conftest/read.dfa +++ /dev/null @@ -1,58 +0,0 @@ -# read.dfa -# Build time configuration of libpng -# -# Author: John Bowler -# Copyright: (c) John Bowler, 2013 -# Usage rights: -# To the extent possible under law, the author has waived all copyright and -# related or neighboring rights to this work. This work is published from: -# United States. -# -# Build libpng with basic read support. This enables the lowest level libpng -# read API - the one where the calling code has to use a loop to read each row. -# At present this is the API used by most programs. -# -# Support is enabled only for those chunks and transformations that are -# typically required - others can be added easily. -# - -everything = off - -# The sequential read code is enabled here; the progressive code can be used -# instead but there is no point enabling both. - -option SEQUENTIAL_READ on - -# Likewise it is pointless enabling both fixed and floating point APIs. Choose -# one or the other for both the API and the internal math. - -#Fixed point: -#option FIXED_POINT on -#option FLOATING_ARITHMETIC off - -#Floating point: -option FLOATING_POINT on -option FLOATING_ARITHMETIC on - -# Basic error handling, IO and user memory support. The latter allows the -# application program to provide its own implementations of 'malloc' and 'free'. -option SETJMP on -option STDIO on -option USER_MEM on - -# To read the full set of PNG images correctly interlace, transparency and -# 16-bit support is required. The application can implement interlace itself, -# but very few do and it's no longer possible to disable it when READ is -# enabled. -option READ_tRNS on -option READ_16BIT on - -# Everything else is application dependent. This file assumes the app handles -# all the native PNG bit layouts, so it doesn't need any of layout change -# transforms, but needs libpng to perform gamma correction. It doesn't do any -# colorspace stuff and ignores the 'significant bit' information. -# -# If your app always expands the image to a limited set of bit layouts you -# probably want to consider using the simplified API instead of the low level -# one - see png.h and s_read.dfa. -option READ_GAMMA on diff --git a/io2d/src/3rd-party/libpng/contrib/conftest/s_read.dfa b/io2d/src/3rd-party/libpng/contrib/conftest/s_read.dfa deleted file mode 100644 index cb1ce0b..0000000 --- a/io2d/src/3rd-party/libpng/contrib/conftest/s_read.dfa +++ /dev/null @@ -1,35 +0,0 @@ -# s_read.dfa -# Build time configuration of libpng -# -# Author: John Bowler -# Copyright: (c) John Bowler, 2013 -# Usage rights: -# To the extent possible under law, the author has waived all copyright and -# related or neighboring rights to this work. This work is published from: -# United States. -# -# Build libpng with simplified read support (only). This builds a minimal -# libpng able to read all PNG formats and convert them into a small number of -# well understood memory formats. -# - -everything = off - -option SIMPLIFIED_READ on - -# It isn't necessary to chose fixed or floating point for the APIs because the -# simplified API doesn't need fixed or floating point numbers. It is necessary -# to chose an internal math implementation. The default (because of 'everything -# = off') is fixed point - turn the floating point implementation on if you have -# hardware floating point or prefer your software floating point implementation. -option FLOATING_ARITHMETIC on - -# This is not strictly necessary, but without it the message strings in the API -# will not be filled in -option ERROR_TEXT on - -# Switching these options on enables the 'AFIRST' and 'BGR' formats - you don't -# need this if you don't use them, they just allow the in-memory layout to be -# changed to match common hardware formats. -option SIMPLIFIED_READ_AFIRST on -option SIMPLIFIED_READ_BGR on diff --git a/io2d/src/3rd-party/libpng/contrib/conftest/s_write.dfa b/io2d/src/3rd-party/libpng/contrib/conftest/s_write.dfa deleted file mode 100644 index e540a46..0000000 --- a/io2d/src/3rd-party/libpng/contrib/conftest/s_write.dfa +++ /dev/null @@ -1,33 +0,0 @@ -# s_write.dfa -# Build time configuration of libpng -# -# Author: John Bowler -# Copyright: (c) John Bowler, 2013 -# Usage rights: -# To the extent possible under law, the author has waived all copyright and -# related or neighboring rights to this work. This work is published from: -# United States. -# -# Build libpng with (just) simplified write support -# - -everything = off - -option SIMPLIFIED_WRITE on - -# It isn't necessary to chose fixed or floating point for the APIs because the -# simplified API doesn't need fixed or floating point numbers. It is necessary -# to chose an internal math implementation. The default (because of 'everything -# = off') is fixed point - turn the floating point implementation on if you have -# hardware floating point or prefer your software floating point implementation. -option FLOATING_ARITHMETIC on - -# This is not strictly necessary, but without it the message strings in the API -# will not be filled in -option ERROR_TEXT on - -# Switching these options on enables the 'AFIRST' and 'BGR' formats - you don't -# need this if you don't use them, they just allow the in-memory layout to be -# changed to match common hardware formats. -option SIMPLIFIED_WRITE_AFIRST on -option SIMPLIFIED_WRITE_BGR on diff --git a/io2d/src/3rd-party/libpng/contrib/conftest/simple.dfa b/io2d/src/3rd-party/libpng/contrib/conftest/simple.dfa deleted file mode 100644 index 0419333..0000000 --- a/io2d/src/3rd-party/libpng/contrib/conftest/simple.dfa +++ /dev/null @@ -1,36 +0,0 @@ -# simple.dfa -# Build time configuration of libpng -# -# Author: John Bowler -# Copyright: (c) John Bowler, 2013 -# Usage rights: -# To the extent possible under law, the author has waived all copyright and -# related or neighboring rights to this work. This work is published from: -# United States. -# -# Build libpng with just the simplified APIs (read and write). -# - -everything = off - -option SIMPLIFIED_WRITE on -option SIMPLIFIED_READ on - -# It isn't necessary to chose fixed or floating point for the APIs because the -# simplified API doesn't need fixed or floating point numbers. It is necessary -# to chose an internal math implementation. The default (because of 'everything -# = off') is fixed point - turn the floating point implementation on if you have -# hardware floating point or prefer your software floating point implementation. -option FLOATING_ARITHMETIC on - -# This is not strictly necessary, but without it the message strings in the API -# will not be filled in -option ERROR_TEXT on - -# Switching these options on enables the 'AFIRST' and 'BGR' formats - you don't -# need this if you don't use them, they just allow the in-memory layout to be -# changed to match common hardware formats. -option SIMPLIFIED_READ_AFIRST on -option SIMPLIFIED_READ_BGR on -option SIMPLIFIED_WRITE_AFIRST on -option SIMPLIFIED_WRITE_BGR on diff --git a/io2d/src/3rd-party/libpng/contrib/conftest/write.dfa b/io2d/src/3rd-party/libpng/contrib/conftest/write.dfa deleted file mode 100644 index 3319aab..0000000 --- a/io2d/src/3rd-party/libpng/contrib/conftest/write.dfa +++ /dev/null @@ -1,45 +0,0 @@ -# write.dfa -# Build time configuration of libpng -# -# Author: John Bowler -# Copyright: (c) John Bowler, 2013 -# Usage rights: -# To the extent possible under law, the author has waived all copyright and -# related or neighboring rights to this work. This work is published from: -# United States. -# -# Build libpng with no read support and minimal write support. -# - -everything = off - -# Switch on the write code - this makes a minimalist encoder - -option WRITE on - -# Choose fixed or floating point APIs and arithmetic. The choices are -# independent but normally they will match. It is typically better to use the -# floating point if you have floating point hardware. If you don't know, or -# (perhaps) to make libpng smaller used fixed point throughout. - -#Fixed point: -#option FIXED_POINT on -#option FLOATING_ARITHMETIC off - -#Floating point: -option FLOATING_POINT on -option FLOATING_ARITHMETIC on - -# Basic error handling, IO and user memory support. The latter allows the -# application program to provide its own implementations of 'malloc' and 'free'. -option SETJMP on -option STDIO on -option USER_MEM on - -# Everything else is optional. Unlike the read code in libpng the write code -# does not need to deal with arbitrary formats, so only add support for things -# you really do write! For example you might only write sRGB images, sometimes -# with transparency and never write 16 bit images, so: -option WRITE_sRGB on -option WRITE_tRNS on -#option WRITE_16BIT off (this is the default with 'everything = off') diff --git a/io2d/src/3rd-party/libpng/contrib/examples/README.txt b/io2d/src/3rd-party/libpng/contrib/examples/README.txt deleted file mode 100644 index 0525c9d..0000000 --- a/io2d/src/3rd-party/libpng/contrib/examples/README.txt +++ /dev/null @@ -1,24 +0,0 @@ - -This directory (contrib/examples) contains examples of libpng usage. - -NO COPYRIGHT RIGHTS ARE CLAIMED TO ANY OF THE FILES IN THIS DIRECTORY. - -To the extent possible under law, the authors have waived all copyright and -related or neighboring rights to this work. This work is published from: -United States. - -The files may be used freely in any way. The intention is that appropriate -parts of the files be used in other libpng-using programs without any need for -the authors of the using code to seek copyright or license from the original -authors. - -The source code and comments in this directory are the original work of the -people named below. No other person or organization has made contributions to -the work in this directory. - -ORIGINAL AUTHORS - The following people have contributed to the code in this directory. None - of the people below claim any rights with regard to the contents of this - directory. - - John Bowler diff --git a/io2d/src/3rd-party/libpng/contrib/examples/iccfrompng.c b/io2d/src/3rd-party/libpng/contrib/examples/iccfrompng.c deleted file mode 100644 index 6767621..0000000 --- a/io2d/src/3rd-party/libpng/contrib/examples/iccfrompng.c +++ /dev/null @@ -1,180 +0,0 @@ -/*- iccfrompng - * - * COPYRIGHT: Written by John Cunningham Bowler, 2011. - * To the extent possible under law, the author has waived all copyright and - * related or neighboring rights to this work. This work is published from: - * United States. - * - * Extract any icc profiles found in the given PNG files. This is a simple - * example of a program which extracts information from the header of a PNG file - * without processing the image. Notice that some header information may occur - * after the image data, textual data and comments are an example; the approach - * in this file won't work reliably for such data because it only looks for the - * information in the section of the file that preceeds the image data. - * - * Compile and link against libpng and zlib, plus anything else required on the - * system you use. - * - * To use supply a list of PNG files containing iCCP chunks, the chunks will be - * extracted to a similarly named file with the extension replaced by 'icc', - * which will be overwritten without warning. - */ -#include -#include -#include -#include - -#include - -static int verbose = 1; -static png_byte no_profile[] = "no profile"; - -static png_bytep -extract(FILE *fp, png_uint_32 *proflen) -{ - png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,0,0,0); - png_infop info_ptr = NULL; - png_bytep result = NULL; - - /* Initialize for error or no profile: */ - *proflen = 0; - - if (png_ptr == NULL) - { - fprintf(stderr, "iccfrompng: version library mismatch?\n"); - return 0; - } - - if (setjmp(png_jmpbuf(png_ptr))) - { - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - return 0; - } - - png_init_io(png_ptr, fp); - - info_ptr = png_create_info_struct(png_ptr); - if (info_ptr == NULL) - png_error(png_ptr, "OOM allocating info structure"); - - png_read_info(png_ptr, info_ptr); - - { - png_charp name; - int compression_type; - png_bytep profile; - - if (png_get_iCCP(png_ptr, info_ptr, &name, &compression_type, &profile, - proflen) & PNG_INFO_iCCP) - { - result = malloc(*proflen); - if (result != NULL) - memcpy(result, profile, *proflen); - - else - png_error(png_ptr, "OOM allocating profile buffer"); - } - - else - result = no_profile; - } - - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - return result; -} - -static int -extract_one_file(const char *filename) -{ - int result = 0; - FILE *fp = fopen(filename, "rb"); - - if (fp != NULL) - { - png_uint_32 proflen = 0; - png_bytep profile = extract(fp, &proflen); - - if (profile != NULL && profile != no_profile) - { - size_t len; - char *output; - - { - const char *ep = strrchr(filename, '.'); - - if (ep != NULL) - len = ep-filename; - - else - len = strlen(filename); - } - - output = malloc(len + 5); - if (output != NULL) - { - FILE *of; - - memcpy(output, filename, len); - strcpy(output+len, ".icc"); - - of = fopen(output, "wb"); - if (of != NULL) - { - if (fwrite(profile, proflen, 1, of) == 1 && - fflush(of) == 0 && - fclose(of) == 0) - { - if (verbose) - printf("%s -> %s\n", filename, output); - /* Success return */ - result = 1; - } - - else - { - fprintf(stderr, "%s: error writing profile\n", output); - if (remove(output)) - fprintf(stderr, "%s: could not remove file\n", output); - } - } - - else - fprintf(stderr, "%s: failed to open output file\n", output); - - free(output); - } - - else - fprintf(stderr, "%s: OOM allocating string!\n", filename); - - free(profile); - } - - else if (verbose && profile == no_profile) - printf("%s has no profile\n", filename); - } - - else - fprintf(stderr, "%s: could not open file\n", filename); - - return result; -} - -int -main(int argc, char **argv) -{ - int i; - int extracted = 0; - - for (i=1; i -#include -#include /* required for error handling */ - -/* Normally use here to get the installed libpng, but this is done to - * ensure the code picks up the local libpng implementation: - */ -#include "../../png.h" - -/* Return component 'c' of pixel 'x' from the given row. */ -static unsigned int -component(png_const_bytep row, png_uint_32 x, unsigned int c, - unsigned int bit_depth, unsigned int channels) -{ - /* PNG images can be up to 2^31 pixels wide, but this means they can be up to - * 2^37 bits wide (for a 64-bit pixel - the largest possible) and hence 2^34 - * bytes wide. Since the row fitted into memory, however, the following must - * work: - */ - png_uint_32 bit_offset_hi = bit_depth * ((x >> 6) * channels); - png_uint_32 bit_offset_lo = bit_depth * ((x & 0x3f) * channels + c); - - row = (png_const_bytep)(((PNG_CONST png_byte (*)[8])row) + bit_offset_hi); - row += bit_offset_lo >> 3; - bit_offset_lo &= 0x07; - - /* PNG pixels are packed into bytes to put the first pixel in the highest - * bits of the byte and into two bytes for 16-bit values with the high 8 bits - * first, so: - */ - switch (bit_depth) - { - case 1: return (row[0] >> (7-bit_offset_lo)) & 0x01; - case 2: return (row[0] >> (6-bit_offset_lo)) & 0x03; - case 4: return (row[0] >> (4-bit_offset_lo)) & 0x0f; - case 8: return row[0]; - case 16: return (row[0] << 8) + row[1]; - default: - /* This should never happen, it indicates a bug in this program or in - * libpng itself: - */ - fprintf(stderr, "pngpixel: invalid bit depth %u\n", bit_depth); - exit(1); - } -} - -/* Print a pixel from a row returned by libpng; determine the row format, find - * the pixel, and print the relevant information to stdout. - */ -static void -print_pixel(png_structp png_ptr, png_infop info_ptr, png_const_bytep row, - png_uint_32 x) -{ - PNG_CONST unsigned int bit_depth = png_get_bit_depth(png_ptr, info_ptr); - - switch (png_get_color_type(png_ptr, info_ptr)) - { - case PNG_COLOR_TYPE_GRAY: - printf("GRAY %u\n", component(row, x, 0, bit_depth, 1)); - return; - - /* The palette case is slightly more difficult - the palette and, if - * present, the tRNS ('transparency', though the values are really - * opacity) data must be read to give the full picture: - */ - case PNG_COLOR_TYPE_PALETTE: - { - PNG_CONST unsigned int index = component(row, x, 0, bit_depth, 1); - png_colorp palette = NULL; - int num_palette = 0; - - if ((png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette) & - PNG_INFO_PLTE) && num_palette > 0 && palette != NULL) - { - png_bytep trans_alpha = NULL; - int num_trans = 0; - if ((png_get_tRNS(png_ptr, info_ptr, &trans_alpha, &num_trans, - NULL) & PNG_INFO_tRNS) && num_trans > 0 && - trans_alpha != NULL) - printf("INDEXED %u = %d %d %d %d\n", index, - palette[index].red, palette[index].green, - palette[index].blue, - index < num_trans ? trans_alpha[index] : 255); - - else /* no transparency */ - printf("INDEXED %u = %d %d %d\n", index, - palette[index].red, palette[index].green, - palette[index].blue); - } - - else - printf("INDEXED %u = invalid index\n", index); - } - return; - - case PNG_COLOR_TYPE_RGB: - printf("RGB %u %u %u\n", component(row, x, 0, bit_depth, 3), - component(row, x, 1, bit_depth, 3), - component(row, x, 2, bit_depth, 3)); - return; - - case PNG_COLOR_TYPE_GRAY_ALPHA: - printf("GRAY+ALPHA %u %u\n", component(row, x, 0, bit_depth, 2), - component(row, x, 1, bit_depth, 2)); - return; - - case PNG_COLOR_TYPE_RGB_ALPHA: - printf("RGBA %u %u %u %u\n", component(row, x, 0, bit_depth, 4), - component(row, x, 1, bit_depth, 4), - component(row, x, 2, bit_depth, 4), - component(row, x, 3, bit_depth, 4)); - return; - - default: - png_error(png_ptr, "invalid color type"); - } -} - -int main(int argc, const char **argv) -{ - /* This program uses the default, based, libpng error handling - * mechanism, therefore any local variable that exists before the call to - * setjmp and is changed after the call to setjmp returns successfully must - * be declared with 'volatile' to ensure that their values don't get - * destroyed by longjmp: - */ - volatile int result = 1/*fail*/; - - if (argc == 4) - { - long x = atol(argv[1]); - long y = atol(argv[2]); - FILE *f = fopen(argv[3], "rb"); - volatile png_bytep row = NULL; - - if (f != NULL) - { - /* libpng requires a callback function for handling errors; this - * callback must not return. The default callback function uses a - * stored style jmp_buf which is held in a png_struct and - * writes error messages to stderr. Creating the png_struct is a - * little tricky; just copy the following code. - */ - png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, - NULL, NULL, NULL); - - if (png_ptr != NULL) - { - png_infop info_ptr = png_create_info_struct(png_ptr); - - if (info_ptr != NULL) - { - /* Declare stack variables to hold pointers to locally allocated - * data. - */ - - /* Initialize the error control buffer: */ - if (setjmp(png_jmpbuf(png_ptr)) == 0) - { - png_uint_32 width, height; - int bit_depth, color_type, interlace_method, - compression_method, filter_method; - png_bytep row_tmp; - - /* Now associate the recently opened (FILE*) with the default - * libpng initialization functions. Sometimes libpng is - * compiled without stdio support (it can be difficult to do - * in some environments); in that case you will have to write - * your own read callback to read data from the (FILE*). - */ - png_init_io(png_ptr, f); - - /* And read the first part of the PNG file - the header and - * all the information up to the first pixel. - */ - png_read_info(png_ptr, info_ptr); - - /* This fills in enough information to tell us the width of - * each row in bytes, allocate the appropriate amount of - * space. In this case png_malloc is used - it will not - * return if memory isn't available. - */ - row = png_malloc(png_ptr, png_get_rowbytes(png_ptr, - info_ptr)); - - /* To avoid the overhead of using a volatile auto copy row_tmp - * to a local here - just use row for the png_free below. - */ - row_tmp = row; - - /* All the information we need is in the header is returned by - * png_get_IHDR, if this fails we can now use 'png_error' to - * signal the error and return control to the setjmp above. - */ - if (png_get_IHDR(png_ptr, info_ptr, &width, &height, - &bit_depth, &color_type, &interlace_method, - &compression_method, &filter_method)) - { - int passes, pass; - - /* png_set_interlace_handling returns the number of - * passes required as well as turning on libpng's - * handling, but since we do it ourselves this is - * necessary: - */ - switch (interlace_method) - { - case PNG_INTERLACE_NONE: - passes = 1; - break; - - case PNG_INTERLACE_ADAM7: - passes = PNG_INTERLACE_ADAM7_PASSES; - break; - - default: - png_error(png_ptr, "pngpixel: unknown interlace"); - } - - /* Now read the pixels, pass-by-pass, row-by-row: */ - png_start_read_image(png_ptr); - - for (pass=0; pass -#include -#include -#include - -/* Normally use here to get the installed libpng, but this is done to - * ensure the code picks up the local libpng implementation: - */ -#include "../../png.h" - -int main(int argc, const char **argv) -{ - int result = 1; - - if (argc == 3) - { - png_image image; - - /* Only the image structure version number needs to be set. */ - memset(&image, 0, sizeof image); - image.version = PNG_IMAGE_VERSION; - - if (png_image_begin_read_from_file(&image, argv[1])) - { - png_bytep buffer; - - /* Change this to try different formats! If you set a colormap format - * then you must also supply a colormap below. - */ - image.format = PNG_FORMAT_RGBA; - - buffer = malloc(PNG_IMAGE_SIZE(image)); - - if (buffer != NULL) - { - if (png_image_finish_read(&image, NULL/*background*/, buffer, - 0/*row_stride*/, NULL/*colormap for PNG_FORMAT_FLAG_COLORMAP */)) - { - if (png_image_write_to_file(&image, argv[2], - 0/*convert_to_8bit*/, buffer, 0/*row_stride*/, - NULL/*colormap*/)) - result = 0; - - else - fprintf(stderr, "pngtopng: write %s: %s\n", argv[2], - image.message); - - free(buffer); - } - - else - { - fprintf(stderr, "pngtopng: read %s: %s\n", argv[1], - image.message); - - /* This is the only place where a 'free' is required; libpng does - * the cleanup on error and success, but in this case we couldn't - * complete the read because of running out of memory. - */ - png_image_free(&image); - } - } - - else - fprintf(stderr, "pngtopng: out of memory: %lu bytes\n", - (unsigned long)PNG_IMAGE_SIZE(image)); - } - - else - /* Failed to read the first argument: */ - fprintf(stderr, "pngtopng: %s: %s\n", argv[1], image.message); - } - - else - /* Wrong number of arguments */ - fprintf(stderr, "pngtopng: usage: pngtopng input-file output-file\n"); - - return result; -} diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/COPYING b/io2d/src/3rd-party/libpng/contrib/gregbook/COPYING deleted file mode 100644 index a3e9774..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/LICENSE b/io2d/src/3rd-party/libpng/contrib/gregbook/LICENSE deleted file mode 100644 index d956717..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/LICENSE +++ /dev/null @@ -1,50 +0,0 @@ - --------------------------------------------------------------------------- - - Copyright (c) 1998-2008 Greg Roelofs. All rights reserved. - - This software is provided "as is," without warranty of any kind, - express or implied. In no event shall the author or contributors - be held liable for any damages arising in any way from the use of - this software. - - The contents of this file are DUAL-LICENSED. You may modify and/or - redistribute this software according to the terms of one of the - following two licenses (at your option): - - - LICENSE 1 ("BSD-like with advertising clause"): - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute - it freely, subject to the following restrictions: - - 1. Redistributions of source code must retain the above copyright - notice, disclaimer, and this list of conditions. - 2. Redistributions in binary form must reproduce the above copyright - notice, disclaimer, and this list of conditions in the documenta- - tion and/or other materials provided with the distribution. - 3. All advertising materials mentioning features or use of this - software must display the following acknowledgment: - - This product includes software developed by Greg Roelofs - and contributors for the book, "PNG: The Definitive Guide," - published by O'Reilly and Associates. - - - LICENSE 2 (GNU GPL v2 or later): - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - --------------------------------------------------------------------------- diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.mingw32 b/io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.mingw32 deleted file mode 100644 index e70a59a..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.mingw32 +++ /dev/null @@ -1,130 +0,0 @@ -# Sample makefile for rpng-win / rpng2-win / wpng using mingw32-gcc and make. -# Greg Roelofs -# Last modified: 2 June 2007 -# -# The programs built by this makefile are described in the book, -# "PNG: The Definitive Guide," by Greg Roelofs (O'Reilly and -# Associates, 1999). Go buy a copy, eh? Well, OK, it's not -# generally for sale anymore, but it's the thought that counts, -# right? (Hint: http://www.libpng.org/pub/png/book/ ) -# -# Invoke this makefile from a DOS-prompt window via: -# -# make -f Makefile.mingw32 -# -# This makefile assumes libpng and zlib have already been built or downloaded -# and are in subdirectories at the same level as the current subdirectory -# (as indicated by the PNGDIR and ZDIR macros below). It makes no assumptions -# at all about the mingw32 installation tree (W32DIR). Edit as appropriate. -# -# Note that the names of the dynamic and static libpng and zlib libraries -# used below may change in later releases of the libraries. This makefile -# builds both statically and dynamically linked executables by default. -# (You need only one set, but for testing it can be handy to have both.) - - -# macros -------------------------------------------------------------------- - -#PNGDIR = ../..# for libpng-x.y.z/contrib/gregbook builds -PNGDIR = ../libpng-win32 -PNGINC = -I$(PNGDIR) -PNGLIBd = $(PNGDIR)/libpng.dll.a # dynamically linked -PNGLIBs = $(PNGDIR)/libpng.a # statically linked, local libpng - -#ZDIR = ../../../zlib-win32# for libpng-x.y.z/contrib/gregbook builds -ZDIR = ../zlib-win32 -ZINC = -I$(ZDIR) -ZLIBd = $(ZDIR)/libzdll.a -ZLIBs = $(ZDIR)/libz.a - -# change this to be the path where mingw32 installs its stuff: -W32DIR = -#W32DIR = /usr/local/cross-tools/i386-mingw32msvc -W32INC = -I$(W32DIR)/include -W32LIB = $(W32DIR)/lib/libuser32.a $(W32DIR)/lib/libgdi32.a - -CC = gcc -#CC = i386-mingw32msvc-gcc # e.g., Linux -> Win32 cross-compilation -LD = $(CC) -RM = rm -f -CFLAGS = -O -Wall $(INCS) $(MINGW_CCFLAGS) -# [note that -Wall is a gcc-specific compilation flag ("most warnings on")] -# [-ansi, -pedantic and -W can also be used] -LDFLAGS = $(MINGW_LDFLAGS) -O = .o -E = .exe - -INCS = $(PNGINC) $(ZINC) $(W32INC) -RLIBSd = $(PNGLIBd) $(ZLIBd) $(W32LIB) -lm -RLIBSs = $(PNGLIBs) $(ZLIBs) $(W32LIB) -lm -WLIBSd = $(PNGLIBd) $(ZLIBd) -WLIBSs = $(PNGLIBs) $(ZLIBs) - -RPNG = rpng-win -RPNG2 = rpng2-win -WPNG = wpng - -ROBJSd = $(RPNG)$(O) readpng.pic$(O) -ROBJS2d = $(RPNG2)$(O) readpng2.pic$(O) -WOBJSd = $(WPNG)$(O) writepng.pic$(O) - -RPNGs = $(RPNG)-static -RPNG2s = $(RPNG2)-static -WPNGs = $(WPNG)-static - -ROBJSs = $(RPNG)$(O) readpng$(O) -ROBJS2s = $(RPNG2)$(O) readpng2$(O) -WOBJSs = $(WPNG)$(O) writepng$(O) - -STATIC_EXES = $(RPNGs)$(E) $(RPNG2s)$(E) $(WPNGs)$(E) -DYNAMIC_EXES = $(RPNG)$(E) $(RPNG2)$(E) $(WPNG)$(E) - -EXES = $(STATIC_EXES) $(DYNAMIC_EXES) - - -# implicit make rules ------------------------------------------------------- - -.c$(O): - $(CC) -c $(CFLAGS) $< - -%.pic$(O): %.c - $(CC) -c $(CFLAGS) -DPNG_BUILD_DLL -o $@ $< - - -# dependencies -------------------------------------------------------------- - -all: $(EXES) - -$(RPNGs)$(E): $(ROBJSs) - $(LD) $(LDFLAGS) -o $@ $(ROBJSs) $(RLIBSs) - -$(RPNG)$(E): $(ROBJSd) - $(LD) $(LDFLAGS) -o $@ $(ROBJSd) $(RLIBSd) - -$(RPNG2s)$(E): $(ROBJS2s) - $(LD) $(LDFLAGS) -o $@ $(ROBJS2s) $(RLIBSs) - -$(RPNG2)$(E): $(ROBJS2d) - $(LD) $(LDFLAGS) -o $@ $(ROBJS2d) $(RLIBSd) - -$(WPNGs)$(E): $(WOBJSs) - $(LD) $(LDFLAGS) -o $@ $(WOBJSs) $(WLIBSs) - -$(WPNG)$(E): $(WOBJSd) - $(LD) $(LDFLAGS) -o $@ $(WOBJSd) $(WLIBSd) - -$(RPNG)$(O): $(RPNG).c readpng.h -$(RPNG2)$(O): $(RPNG2).c readpng2.h -$(WPNG)$(O): $(WPNG).c writepng.h - -readpng$(O) readpng.pic$(O): readpng.c readpng.h -readpng2$(O) readpng2.pic$(O): readpng2.c readpng2.h -writepng$(O) writepng.pic$(O): writepng.c writepng.h - - -# maintenance --------------------------------------------------------------- - -clean: - $(RM) $(EXES) - $(RM) $(ROBJSs) $(ROBJS2s) $(WOBJSs) - $(RM) $(ROBJSd) $(ROBJS2d) $(WOBJSd) diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.sgi b/io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.sgi deleted file mode 100644 index 6c3bdf1..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.sgi +++ /dev/null @@ -1,104 +0,0 @@ -# Sample makefile for rpng-x / rpng2-x / wpng for SGI using cc and make. -# Greg Roelofs -# Last modified: 7 March 2002 -# -# The programs built by this makefile are described in the book, -# "PNG: The Definitive Guide," by Greg Roelofs (O'Reilly and -# Associates, 1999). Go buy a copy, eh? Buy some for friends -# and family, too. (Not that this is a blatant plug or anything.) -# -# Invoke this makefile from a shell prompt in the usual way; for example: -# -# make -f Makefile.sgi -# -# This makefile assumes libpng and zlib have already been built or downloaded -# and are both installed in /usr/local/{include,lib} (as indicated by the -# PNG* and Z* macros below). Edit as appropriate--choose only ONE each of -# the PNGINC, PNGLIB, ZINC and ZLIB lines. -# -# This makefile builds dynamically linked executables (against libpng and zlib, -# that is), but that can be changed by uncommenting the appropriate PNGLIB and -# ZLIB lines. - - -# macros -------------------------------------------------------------------- - -PNGINC = -I/usr/local/include/libpng16 -PNGLIB = -L/usr/local/lib -lpng16 # dynamically linked against libpng -#PNGLIB = /usr/local/lib/libpng16.a # statically linked against libpng -# or: -#PNGINC = -I../.. -#PNGLIB = -L../.. -lpng -#PNGLIB = ../../libpng.a - -ZINC = -I/usr/local/include -ZLIB = -L/usr/local/lib -lz # dynamically linked against zlib -#ZLIB = /usr/local/lib/libz.a # statically linked against zlib -#ZINC = -I../zlib -#ZLIB = -L../zlib -lz -#ZLIB = ../../../zlib/libz.a - -XINC = -I/usr/include/X11 # old-style, stock X distributions -XLIB = -L/usr/lib/X11 -lX11 -#XINC = -I/usr/openwin/include # Sun workstations (OpenWindows) -#XLIB = -L/usr/openwin/lib -lX11 -#XINC = -I/usr/X11R6/include # new X distributions (XFree86, etc.) -#XLIB = -L/usr/X11R6/lib -lX11 - -INCS = $(PNGINC) $(ZINC) $(XINC) -RLIBS = $(PNGLIB) $(ZLIB) $(XLIB) -lm -WLIBS = $(PNGLIB) $(ZLIB) - -CC = cc -LD = cc -RM = rm -f -# ABI must be the same as that used to build libpng. -ABI= -CFLAGS = $(ABI) -O -fullwarn $(INCS) -LDFLAGS = $(ABI) -O = .o -E = - -RPNG = rpng-x -RPNG2 = rpng2-x -WPNG = wpng - -ROBJS = $(RPNG)$(O) readpng$(O) -ROBJS2 = $(RPNG2)$(O) readpng2$(O) -WOBJS = $(WPNG)$(O) writepng$(O) - -EXES = $(RPNG)$(E) $(RPNG2)$(E) $(WPNG)$(E) - - -# implicit make rules ------------------------------------------------------- - -.c$(O): - $(CC) -c $(CFLAGS) $< - - -# dependencies -------------------------------------------------------------- - -all: $(EXES) - -$(RPNG)$(E): $(ROBJS) - $(LD) $(LDFLAGS) -o $@ $(ROBJS) $(RLIBS) - -$(RPNG2)$(E): $(ROBJS2) - $(LD) $(LDFLAGS) -o $@ $(ROBJS2) $(RLIBS) - -$(WPNG)$(E): $(WOBJS) - $(LD) $(LDFLAGS) -o $@ $(WOBJS) $(WLIBS) - -$(RPNG)$(O): $(RPNG).c readpng.h -$(RPNG2)$(O): $(RPNG2).c readpng2.h -$(WPNG)$(O): $(WPNG).c writepng.h - -readpng$(O): readpng.c readpng.h -readpng2$(O): readpng2.c readpng2.h -writepng$(O): writepng.c writepng.h - - -# maintenance --------------------------------------------------------------- - -clean: - $(RM) $(EXES) $(ROBJS) $(ROBJS2) $(WOBJS) diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.unx b/io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.unx deleted file mode 100644 index d5e4f35..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.unx +++ /dev/null @@ -1,132 +0,0 @@ -# Sample makefile for rpng-x / rpng2-x / wpng using gcc and make. -# Greg Roelofs -# Last modified: 2 June 2007 -# -# The programs built by this makefile are described in the book, -# "PNG: The Definitive Guide," by Greg Roelofs (O'Reilly and -# Associates, 1999). Go buy a copy, eh? Well, OK, it's not -# generally for sale anymore, but it's the thought that counts, -# right? (Hint: http://www.libpng.org/pub/png/book/ ) -# -# Invoke this makefile from a shell prompt in the usual way; for example: -# -# make -f Makefile.unx -# -# This makefile assumes libpng and zlib have already been built or downloaded -# and are installed in /usr/local/{include,lib} or as otherwise indicated by -# the PNG* and Z* macros below. Edit as appropriate--choose only ONE each of -# the PNGINC, PNGLIBd, PNGLIBs, ZINC, ZLIBd and ZLIBs lines. -# -# This makefile builds both dynamically and statically linked executables -# (against libpng and zlib, that is), but that can be changed by modifying -# the "EXES =" line. (You need only one set, but for testing it can be handy -# to have both.) - - -# macros -------------------------------------------------------------------- - -#PNGDIR = /usr/local/lib -#PNGINC = -I/usr/local/include/libpng16 -#PNGLIBd = -L$(PNGDIR) -lpng16 # dynamically linked, installed libpng -#PNGLIBs = $(PNGDIR)/libpng16.a # statically linked, installed libpng -# or: -PNGDIR = ../..# this one is for libpng-x.y.z/contrib/gregbook builds -#PNGDIR = ../libpng -PNGINC = -I$(PNGDIR) -PNGLIBd = -Wl,-rpath,$(PNGDIR) -L$(PNGDIR) -lpng16 # dynamically linked -PNGLIBs = $(PNGDIR)/libpng.a # statically linked, local libpng - -ZDIR = /usr/local/lib -#ZDIR = /usr/lib64 -ZINC = -I/usr/local/include -ZLIBd = -L$(ZDIR) -lz # dynamically linked against zlib -ZLIBs = $(ZDIR)/libz.a # statically linked against zlib -# or: -#ZDIR = ../zlib -#ZINC = -I$(ZDIR) -#ZLIBd = -Wl,-rpath,$(ZDIR) -L$(ZDIR) -lz # -rpath allows in-place testing -#ZLIBs = $(ZDIR)/libz.a - -#XINC = -I/usr/include # old-style, stock X distributions -#XLIB = -L/usr/lib/X11 -lX11 # (including SGI IRIX) -#XINC = -I/usr/openwin/include # Sun workstations (OpenWindows) -#XLIB = -L/usr/openwin/lib -lX11 -XINC = -I/usr/X11R6/include # new X distributions (X.org, etc.) -XLIB = -L/usr/X11R6/lib -lX11 -#XLIB = -L/usr/X11R6/lib64 -lX11 # e.g., Red Hat on AMD64 - -INCS = $(PNGINC) $(ZINC) $(XINC) -RLIBSd = $(PNGLIBd) $(ZLIBd) $(XLIB) -lm -RLIBSs = $(PNGLIBs) $(ZLIBs) $(XLIB) -lm -WLIBSd = $(PNGLIBd) $(ZLIBd) -lm -WLIBSs = $(PNGLIBs) $(ZLIBs) - -CC = gcc -LD = gcc -RM = rm -f -CFLAGS = -O -Wall $(INCS) -DFEATURE_LOOP -# [note that -Wall is a gcc-specific compilation flag ("most warnings on")] -# [-ansi, -pedantic and -W can also be used] -LDFLAGS = -O = .o -E = - -RPNG = rpng-x -RPNG2 = rpng2-x -WPNG = wpng - -RPNGs = $(RPNG)-static -RPNG2s = $(RPNG2)-static -WPNGs = $(WPNG)-static - -ROBJS = $(RPNG)$(O) readpng$(O) -ROBJS2 = $(RPNG2)$(O) readpng2$(O) -WOBJS = $(WPNG)$(O) writepng$(O) - -STATIC_EXES = $(RPNGs)$(E) $(RPNG2s)$(E) $(WPNGs)$(E) -DYNAMIC_EXES = $(RPNG)$(E) $(RPNG2)$(E) $(WPNG)$(E) - -EXES = $(STATIC_EXES) $(DYNAMIC_EXES) - - -# implicit make rules ------------------------------------------------------- - -.c$(O): - $(CC) -c $(CFLAGS) $< - - -# dependencies -------------------------------------------------------------- - -all: $(EXES) - -$(RPNGs)$(E): $(ROBJS) - $(LD) $(LDFLAGS) -o $@ $(ROBJS) $(RLIBSs) - -$(RPNG)$(E): $(ROBJS) - $(LD) $(LDFLAGS) -o $@ $(ROBJS) $(RLIBSd) - -$(RPNG2s)$(E): $(ROBJS2) - $(LD) $(LDFLAGS) -o $@ $(ROBJS2) $(RLIBSs) - -$(RPNG2)$(E): $(ROBJS2) - $(LD) $(LDFLAGS) -o $@ $(ROBJS2) $(RLIBSd) - -$(WPNGs)$(E): $(WOBJS) - $(LD) $(LDFLAGS) -o $@ $(WOBJS) $(WLIBSs) - -$(WPNG)$(E): $(WOBJS) - $(LD) $(LDFLAGS) -o $@ $(WOBJS) $(WLIBSd) - -$(RPNG)$(O): $(RPNG).c readpng.h -$(RPNG2)$(O): $(RPNG2).c readpng2.h -$(WPNG)$(O): $(WPNG).c writepng.h - -readpng$(O): readpng.c readpng.h -readpng2$(O): readpng2.c readpng2.h -writepng$(O): writepng.c writepng.h - - -# maintenance --------------------------------------------------------------- - -clean: - $(RM) $(EXES) $(ROBJS) $(ROBJS2) $(WOBJS) diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.w32 b/io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.w32 deleted file mode 100644 index 41cfb23..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.w32 +++ /dev/null @@ -1,113 +0,0 @@ -# Sample makefile for rpng-win / rpng2-win / wpng using MSVC and NMAKE. -# Greg Roelofs -# Last modified: 2 June 2007 -# -# The programs built by this makefile are described in the book, -# "PNG: The Definitive Guide," by Greg Roelofs (O'Reilly and -# Associates, 1999). Go buy a copy, eh? Well, OK, it's not -# generally for sale anymore, but it's the thought that counts, -# right? (Hint: http://www.libpng.org/pub/png/book/ ) -# -# Invoke this makefile from a DOS prompt window via: -# -# %devstudio%\vc\bin\vcvars32.bat -# nmake -nologo -f Makefile.w32 -# -# where %devstudio% is the installation directory for MSVC / DevStudio. If -# you get "environment out of space" errors, create a desktop shortcut with -# "c:\windows\command.com /e:4096" as the program command line and set the -# working directory to this directory. Then double-click to open the new -# DOS-prompt window with a bigger environment and retry the commands above. -# -# This makefile assumes libpng and zlib have already been built or downloaded -# and are in subdirectories at the same level as the current subdirectory -# (as indicated by the PNGPATH and ZPATH macros below). Edit as appropriate. -# -# Note that the names of the dynamic and static libpng and zlib libraries -# used below may change in later releases of the libraries. This makefile -# builds statically linked executables, but that can be changed by uncom- -# menting the appropriate PNGLIB and ZLIB lines. - -!include - - -# macros -------------------------------------------------------------------- - -PNGPATH = ../libpng -PNGINC = -I$(PNGPATH) -#PNGLIB = $(PNGPATH)/pngdll.lib -PNGLIB = $(PNGPATH)/libpng.lib - -ZPATH = ../zlib -ZINC = -I$(ZPATH) -#ZLIB = $(ZPATH)/zlibdll.lib -ZLIB = $(ZPATH)/zlibstat.lib - -WINLIBS = -defaultlib:user32.lib gdi32.lib -# ["real" apps may also need comctl32.lib, comdlg32.lib, winmm.lib, etc.] - -INCS = $(PNGINC) $(ZINC) -RLIBS = $(PNGLIB) $(ZLIB) $(WINLIBS) -WLIBS = $(PNGLIB) $(ZLIB) - -CC = cl -LD = link -RM = del -CFLAGS = -nologo -O -W3 $(INCS) $(cvars) -# [note that -W3 is an MSVC-specific compilation flag ("all warnings on")] -# [see %devstudio%\vc\include\win32.mak for cvars macro definition] -O = .obj -E = .exe - -RLDFLAGS = -nologo -subsystem:windows -WLDFLAGS = -nologo - -RPNG = rpng-win -RPNG2 = rpng2-win -WPNG = wpng - -ROBJS = $(RPNG)$(O) readpng$(O) -ROBJS2 = $(RPNG2)$(O) readpng2$(O) -WOBJS = $(WPNG)$(O) writepng$(O) - -EXES = $(RPNG)$(E) $(RPNG2)$(E) $(WPNG)$(E) - - -# implicit make rules ------------------------------------------------------- - -.c$(O): - $(CC) -c $(CFLAGS) $< - - -# dependencies -------------------------------------------------------------- - -all: $(EXES) - -$(RPNG)$(E): $(ROBJS) - $(LD) $(RLDFLAGS) -out:$@ $(ROBJS) $(RLIBS) - -$(RPNG2)$(E): $(ROBJS2) - $(LD) $(RLDFLAGS) -out:$@ $(ROBJS2) $(RLIBS) - -$(WPNG)$(E): $(WOBJS) - $(LD) $(WLDFLAGS) -out:$@ $(WOBJS) $(WLIBS) - -$(RPNG)$(O): $(RPNG).c readpng.h -$(RPNG2)$(O): $(RPNG2).c readpng2.h -$(WPNG)$(O): $(WPNG).c writepng.h - -readpng$(O): readpng.c readpng.h -readpng2$(O): readpng2.c readpng2.h -writepng$(O): writepng.c writepng.h - - -# maintenance --------------------------------------------------------------- - -clean: -# ideally we could just do this: -# $(RM) $(EXES) $(ROBJS) $(ROBJS2) $(WOBJS) -# ...but the Windows "DEL" command is none too bright, so: - $(RM) r*$(E) - $(RM) w*$(E) - $(RM) r*$(O) - $(RM) w*$(O) diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/README b/io2d/src/3rd-party/libpng/contrib/gregbook/README deleted file mode 100644 index 7b1f6a3..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/README +++ /dev/null @@ -1,186 +0,0 @@ - =========================== - PNG: The Definitive Guide - =========================== - - Source Code - -Chapters 13, 14 and 15 of "PNG: The Definitive Guide" discuss three free, -cross-platform demo programs that show how to use the libpng reference -library: rpng, rpng2 and wpng. rpng and rpng2 are viewers; the first is -a very simple example that that shows how a standard file-viewer might use -libpng, while the second is designed to process streaming data and shows -how a web browser might be written. wpng is a simple command-line program -that reads binary PGM and PPM files (the ``raw'' grayscale and RGB subsets -of PBMPLUS/NetPBM) and converts them to PNG. - -The source code for all three demo programs currently compiles under -Unix, OpenVMS, and 32-bit Windows. (Special thanks to Martin Zinser, -zinser@decus.de, for making the necessary changes for OpenVMS and for -providing an appropriate build script.) Build instructions can be found -below. - -Files: - - README this file - LICENSE terms of distribution and reuse (BSD-like or GNU GPL) - COPYING GNU General Public License (GPL) - - Makefile.unx Unix makefile - Makefile.w32 Windows (MSVC) makefile - makevms.com OpenVMS build script - - rpng-win.c Windows front end for the basic viewer - rpng-x.c X Window System (Unix, OpenVMS) front end - readpng.c generic back end for the basic viewer - readpng.h header file for the basic viewer - - rpng2-win.c Windows front end for the progressive viewer - rpng2-x.c X front end for the progressive viewer - readpng2.c generic back end for the progressive viewer - readpng2.h header file for the progressive viewer - - wpng.c generic (text) front end for the converter - writepng.c generic back end for the converter - writepng.h header file for the converter - - toucan.png transparent PNG for testing (by Stefan Schneider) - -Note that, although the programs are designed to be functional, their -primary purpose is to illustrate how to use libpng to add PNG support to -other programs. As such, their user interfaces are crude and definitely -are not intended for everyday use. - -Please see http://www.libpng.org/pub/png/pngbook.html for further infor- -mation and links to the latest version of the source code, and Chapters -13-15 of the book for detailed discussion of the three programs. - -Greg Roelofs -http://pobox.com/~newt/greg_contact.html -16 March 2008 - - -BUILD INSTRUCTIONS - - - Prerequisites (in order of compilation): - - - zlib http://zlib.net/ - - libpng http://www.libpng.org/pub/png/libpng.html - - pngbook http://www.libpng.org/pub/png/book/sources.html - - The pngbook demo programs are explicitly designed to demonstrate proper - coding techniques for using the libpng reference library. As a result, - you need to download and build both zlib (on which libpng depends) and - libpng. A common build setup is to place the zlib, libpng and pngbook - subdirectory trees ("folders") in the same parent directory. Then the - libpng build can refer to files in ../zlib (or ..\zlib or [-.zlib]), - and similarly for the pngbook build. - - Note that all three packages are designed to be built from a command - line by default; those who wish to use a graphical or other integrated - development environments are on their own. - - - - Unix: - - Unpack the latest pngbook sources (which should correspond to this - README file) into a directory and change into that directory. - - Copy Makefile.unx to Makefile and edit the PNG* and Z* variables - appropriately (possibly also the X* variables if necessary). - - make - - There is no "install" target, so copy the three executables somewhere - in your path or run them from the current directory. All three will - print a basic usage screen when run without any command-line arguments; - see the book for more details. - - - - Windows: - - Unpack the latest pngbook sources (which should correspond to this - README file) into a folder, open a "DOS shell" or "command prompt" - or equivalent command-line window, and cd into the folder where you - unpacked the source code. - - For MSVC, set up the necessary environment variables by invoking - - %devstudio%\vc\bin\vcvars32.bat - - where where %devstudio% is the installation directory for MSVC / - DevStudio. If you get "environment out of space" errors under 95/98, - create a desktop shortcut with "c:\windows\command.com /e:4096" as - the program command line and set the working directory to the pngbook - directory. Then double-click to open the new DOS-prompt window with - a bigger environment and retry the commands above. - - Copy Makefile.w32 to Makefile and edit the PNGPATH and ZPATH variables - appropriately (possibly also the "INC" and "LIB" variables if needed). - Note that the names of the dynamic and static libpng and zlib libraries - used in the makefile may change in later releases of the libraries. - Also note that, as of libpng version 1.0.5, MSVC DLL builds do not work. - This makefile therefore builds statically linked executables, but if - the DLL problems ever get fixed, uncommenting the appropriate PNGLIB - and ZLIB lines will build dynamically linked executables instead. - - Do the build by typing - - nmake - - The result should be three executables: rpng-win.exe, rpng2-win.exe, - and wpng.exe. Copy them somewhere in your PATH or run them from the - current folder. Like the Unix versions, the two windowed programs - (rpng and rpng2) now display a usage screen in a console window when - invoked without command-line arguments; this is new behavior as of - the June 2001 release. Note that the programs use the Unix-style "-" - character to specify options, instead of the more common DOS/Windows - "/" character. (For example: "rpng2-win -bgpat 4 foo.png", not - "rpng2-win /bgpat 4 foo.png") - - - - OpenVMS: - - Unpack the pngbook sources into a subdirectory and change into that - subdirectory. - - Edit makevms.com appropriately, specifically the zpath and pngpath - variables. - - @makevms - - To run the programs, they probably first need to be set up as "foreign - symbols," with "disk" and "dir" set appropriately: - - $ rpng == "$disk:[dir]rpng-x.exe" - $ rpng2 == "$disk:[dir]rpng2-x.exe" - $ wpng == "$disk:[dir]wpng.exe" - - All three will print a basic usage screen when run without any command- - line arguments; see the book for more details. Note that the options - style is Unix-like, i.e., preceded by "-" rather than "/". - - -RUNNING THE PROGRAMS: (VERY) BRIEF INTRO - - rpng is a simple PNG viewer that can display transparent PNGs with a - specified background color; for example, - - rpng -bgcolor \#ff0000 toucan.png - - would display the image with a red background. rpng2 is a progressive - viewer that simulates a web browser in some respects; it can display - images against either a background color or a dynamically generated - background image. For example: - - rpng2 -bgpat 16 toucan.png - - wpng is a purely command-line image converter from binary PBMPLUS/NetPBM - format (.pgm or .ppm) to PNG; for example, - - wpng -time < toucan-notrans.ppm > toucan-notrans.png - - would convert the specified PPM file (using redirection) to PNG, auto- - matically setting the PNG modification-time chunk. - - All options can be abbreviated to the shortest unique value; for example, - "-bgc" for -bgcolor (versus "-bgp" for -bgpat), or "-g" for -gamma. diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/makevms.com b/io2d/src/3rd-party/libpng/contrib/gregbook/makevms.com deleted file mode 100644 index f32bcab..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/makevms.com +++ /dev/null @@ -1,132 +0,0 @@ -$!------------------------------------------------------------------------------ -$! make "PNG: The Definitive Guide" demo programs (for X) under OpenVMS -$! -$! Script created by Martin Zinser for libpng; modified by Greg Roelofs -$! for standalone pngbook source distribution. -$! -$! -$! Set locations where zlib and libpng sources live. -$! -$ zpath = "" -$ pngpath = "" -$! -$ if f$search("[---.zlib]zlib.h").nes."" then zpath = "[---.zlib]" -$ if f$search("[--]png.h").nes."" then pngpath = "[--]" -$! -$ if f$search("[-.zlib]zlib.h").nes."" then zpath = "[-.zlib]" -$ if f$search("[-.libpng]png.h").nes."" then pngpath = "[-.libpng]" -$! -$ if zpath .eqs. "" -$ then -$ write sys$output "zlib include not found. Exiting..." -$ exit 2 -$ endif -$! -$ if pngpath .eqs. "" -$ then -$ write sys$output "libpng include not found. Exiting..." -$ exit 2 -$ endif -$! -$! Look for the compiler used. -$! -$ ccopt="/include=(''zpath',''pngpath')" -$ if f$getsyi("HW_MODEL").ge.1024 -$ then -$ ccopt = "/prefix=all"+ccopt -$ comp = "__decc__=1" -$ if f$trnlnm("SYS").eqs."" then define sys sys$library: -$ else -$ if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").eqs."" -$ then -$ if f$trnlnm("SYS").eqs."" then define sys sys$library: -$ if f$search("SYS$SYSTEM:VAXC.EXE").eqs."" -$ then -$ comp = "__gcc__=1" -$ CC :== GCC -$ else -$ comp = "__vaxc__=1" -$ endif -$ else -$ if f$trnlnm("SYS").eqs."" then define sys decc$library_include: -$ ccopt = "/decc/prefix=all"+ccopt -$ comp = "__decc__=1" -$ endif -$ endif -$ open/write lopt lib.opt -$ write lopt "''pngpath'libpng.olb/lib" -$ write lopt "''zpath'libz.olb/lib" -$ close lopt -$ open/write xopt x11.opt -$ write xopt "sys$library:decw$xlibshr.exe/share" -$ close xopt -$! -$! Build 'em. -$! -$ write sys$output "Compiling PNG book programs ..." -$ CALL MAKE readpng.OBJ "cc ''CCOPT' readpng" - - readpng.c readpng.h -$ CALL MAKE readpng2.OBJ "cc ''CCOPT' readpng2" - - readpng2.c readpng2.h -$ CALL MAKE writepng.OBJ "cc ''CCOPT' writepng" - - writepng.c writepng.h -$ write sys$output "Building rpng-x..." -$ CALL MAKE rpng-x.OBJ "cc ''CCOPT' rpng-x" - - rpng-x.c readpng.h -$ call make rpng-x.exe - - "LINK rpng-x,readpng,lib.opt/opt,x11.opt/opt" - - rpng-x.obj readpng.obj -$ write sys$output "Building rpng2-x..." -$ CALL MAKE rpng2-x.OBJ "cc ''CCOPT' rpng2-x" - - rpng2-x.c readpng2.h -$ call make rpng2-x.exe - - "LINK rpng2-x,readpng2,lib.opt/opt,x11.opt/opt" - - rpng2-x.obj readpng2.obj -$ write sys$output "Building wpng..." -$ CALL MAKE wpng.OBJ "cc ''CCOPT' wpng" - - wpng.c writepng.h -$ call make wpng.exe - - "LINK wpng,writepng,lib.opt/opt" - - wpng.obj writepng.obj -$ exit -$! -$! -$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES -$ V = 'F$Verify(0) -$! P1 = What we are trying to make -$! P2 = Command to make it -$! P3 - P8 What it depends on -$ -$ If F$Search(P1) .Eqs. "" Then Goto Makeit -$ Time = F$CvTime(F$File(P1,"RDT")) -$arg=3 -$Loop: -$ Argument = P'arg -$ If Argument .Eqs. "" Then Goto Exit -$ El=0 -$Loop2: -$ File = F$Element(El," ",Argument) -$ If File .Eqs. " " Then Goto Endl -$ AFile = "" -$Loop3: -$ OFile = AFile -$ AFile = F$Search(File) -$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl -$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit -$ Goto Loop3 -$NextEL: -$ El = El + 1 -$ Goto Loop2 -$EndL: -$ arg=arg+1 -$ If arg .Le. 8 Then Goto Loop -$ Goto Exit -$ -$Makeit: -$ VV=F$VERIFY(0) -$ write sys$output P2 -$ 'P2 -$ VV='F$Verify(VV) -$Exit: -$ If V Then Set Verify -$ENDSUBROUTINE diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/readpng.c b/io2d/src/3rd-party/libpng/contrib/gregbook/readpng.c deleted file mode 100644 index f5e1fb1..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/readpng.c +++ /dev/null @@ -1,316 +0,0 @@ -/*--------------------------------------------------------------------------- - - rpng - simple PNG display program readpng.c - - --------------------------------------------------------------------------- - - Copyright (c) 1998-2007 Greg Roelofs. All rights reserved. - - This software is provided "as is," without warranty of any kind, - express or implied. In no event shall the author or contributors - be held liable for any damages arising in any way from the use of - this software. - - The contents of this file are DUAL-LICENSED. You may modify and/or - redistribute this software according to the terms of one of the - following two licenses (at your option): - - - LICENSE 1 ("BSD-like with advertising clause"): - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute - it freely, subject to the following restrictions: - - 1. Redistributions of source code must retain the above copyright - notice, disclaimer, and this list of conditions. - 2. Redistributions in binary form must reproduce the above copyright - notice, disclaimer, and this list of conditions in the documenta- - tion and/or other materials provided with the distribution. - 3. All advertising materials mentioning features or use of this - software must display the following acknowledgment: - - This product includes software developed by Greg Roelofs - and contributors for the book, "PNG: The Definitive Guide," - published by O'Reilly and Associates. - - - LICENSE 2 (GNU GPL v2 or later): - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - ---------------------------------------------------------------------------*/ - -#include -#include -#include - -#include "png.h" /* libpng header */ -#include "readpng.h" /* typedefs, common macros, public prototypes */ - -/* future versions of libpng will provide this macro: */ -#ifndef png_jmpbuf -# define png_jmpbuf(png_ptr) ((png_ptr)->jmpbuf) -#endif - - -static png_structp png_ptr = NULL; -static png_infop info_ptr = NULL; - -png_uint_32 width, height; -int bit_depth, color_type; -uch *image_data = NULL; - - -void readpng_version_info(void) -{ - fprintf(stderr, " Compiled with libpng %s; using libpng %s.\n", - PNG_LIBPNG_VER_STRING, png_libpng_ver); - fprintf(stderr, " Compiled with zlib %s; using zlib %s.\n", - ZLIB_VERSION, zlib_version); -} - - -/* return value = 0 for success, 1 for bad sig, 2 for bad IHDR, 4 for no mem */ - -int readpng_init(FILE *infile, ulg *pWidth, ulg *pHeight) -{ - uch sig[8]; - - - /* first do a quick check that the file really is a PNG image; could - * have used slightly more general png_sig_cmp() function instead */ - - fread(sig, 1, 8, infile); - if (png_sig_cmp(sig, 0, 8)) - return 1; /* bad signature */ - - - /* could pass pointers to user-defined error handlers instead of NULLs: */ - - png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png_ptr) - return 4; /* out of memory */ - - info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) { - png_destroy_read_struct(&png_ptr, NULL, NULL); - return 4; /* out of memory */ - } - - - /* we could create a second info struct here (end_info), but it's only - * useful if we want to keep pre- and post-IDAT chunk info separated - * (mainly for PNG-aware image editors and converters) */ - - - /* setjmp() must be called in every function that calls a PNG-reading - * libpng function */ - - if (setjmp(png_jmpbuf(png_ptr))) { - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - return 2; - } - - - png_init_io(png_ptr, infile); - png_set_sig_bytes(png_ptr, 8); /* we already read the 8 signature bytes */ - - png_read_info(png_ptr, info_ptr); /* read all PNG info up to image data */ - - - /* alternatively, could make separate calls to png_get_image_width(), - * etc., but want bit_depth and color_type for later [don't care about - * compression_type and filter_type => NULLs] */ - - png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, - NULL, NULL, NULL); - *pWidth = width; - *pHeight = height; - - - /* OK, that's all we need for now; return happy */ - - return 0; -} - - - - -/* returns 0 if succeeds, 1 if fails due to no bKGD chunk, 2 if libpng error; - * scales values to 8-bit if necessary */ - -int readpng_get_bgcolor(uch *red, uch *green, uch *blue) -{ - png_color_16p pBackground; - - - /* setjmp() must be called in every function that calls a PNG-reading - * libpng function */ - - if (setjmp(png_jmpbuf(png_ptr))) { - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - return 2; - } - - - if (!png_get_valid(png_ptr, info_ptr, PNG_INFO_bKGD)) - return 1; - - /* it is not obvious from the libpng documentation, but this function - * takes a pointer to a pointer, and it always returns valid red, green - * and blue values, regardless of color_type: */ - - png_get_bKGD(png_ptr, info_ptr, &pBackground); - - - /* however, it always returns the raw bKGD data, regardless of any - * bit-depth transformations, so check depth and adjust if necessary */ - - if (bit_depth == 16) { - *red = pBackground->red >> 8; - *green = pBackground->green >> 8; - *blue = pBackground->blue >> 8; - } else if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) { - if (bit_depth == 1) - *red = *green = *blue = pBackground->gray? 255 : 0; - else if (bit_depth == 2) - *red = *green = *blue = (255/3) * pBackground->gray; - else /* bit_depth == 4 */ - *red = *green = *blue = (255/15) * pBackground->gray; - } else { - *red = (uch)pBackground->red; - *green = (uch)pBackground->green; - *blue = (uch)pBackground->blue; - } - - return 0; -} - - - - -/* display_exponent == LUT_exponent * CRT_exponent */ - -uch *readpng_get_image(double display_exponent, int *pChannels, ulg *pRowbytes) -{ - double gamma; - png_uint_32 i, rowbytes; - png_bytepp row_pointers = NULL; - - - /* setjmp() must be called in every function that calls a PNG-reading - * libpng function */ - - if (setjmp(png_jmpbuf(png_ptr))) { - free(image_data); - image_data = NULL; - free(row_pointers); - row_pointers = NULL; - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - return NULL; - } - - - /* expand palette images to RGB, low-bit-depth grayscale images to 8 bits, - * transparency chunks to full alpha channel; strip 16-bit-per-sample - * images to 8 bits per sample; and convert grayscale to RGB[A] */ - - if (color_type == PNG_COLOR_TYPE_PALETTE) - png_set_expand(png_ptr); - if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) - png_set_expand(png_ptr); - if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) - png_set_expand(png_ptr); -#ifdef PNG_READ_16_TO_8_SUPPORTED - if (bit_depth == 16) -# ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED - png_set_scale_16(png_ptr); -# else - png_set_strip_16(png_ptr); -# endif -#endif - if (color_type == PNG_COLOR_TYPE_GRAY || - color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - png_set_gray_to_rgb(png_ptr); - - - /* unlike the example in the libpng documentation, we have *no* idea where - * this file may have come from--so if it doesn't have a file gamma, don't - * do any correction ("do no harm") */ - - if (png_get_gAMA(png_ptr, info_ptr, &gamma)) - png_set_gamma(png_ptr, display_exponent, gamma); - - - /* all transformations have been registered; now update info_ptr data, - * get rowbytes and channels, and allocate image memory */ - - png_read_update_info(png_ptr, info_ptr); - - *pRowbytes = rowbytes = png_get_rowbytes(png_ptr, info_ptr); - *pChannels = (int)png_get_channels(png_ptr, info_ptr); - - if ((image_data = (uch *)malloc(rowbytes*height)) == NULL) { - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - return NULL; - } - if ((row_pointers = (png_bytepp)malloc(height*sizeof(png_bytep))) == NULL) { - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - free(image_data); - image_data = NULL; - return NULL; - } - - Trace((stderr, "readpng_get_image: channels = %d, rowbytes = %ld, height = %ld\n", - *pChannels, rowbytes, height)); - - - /* set the individual row_pointers to point at the correct offsets */ - - for (i = 0; i < height; ++i) - row_pointers[i] = image_data + i*rowbytes; - - - /* now we can go ahead and just read the whole image */ - - png_read_image(png_ptr, row_pointers); - - - /* and we're done! (png_read_end() can be omitted if no processing of - * post-IDAT text/time/etc. is desired) */ - - free(row_pointers); - row_pointers = NULL; - - png_read_end(png_ptr, NULL); - - return image_data; -} - - -void readpng_cleanup(int free_image_data) -{ - if (free_image_data && image_data) { - free(image_data); - image_data = NULL; - } - - if (png_ptr && info_ptr) { - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - png_ptr = NULL; - info_ptr = NULL; - } -} diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/readpng.h b/io2d/src/3rd-party/libpng/contrib/gregbook/readpng.h deleted file mode 100644 index fad9fe3..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/readpng.h +++ /dev/null @@ -1,88 +0,0 @@ -/*--------------------------------------------------------------------------- - - rpng - simple PNG display program readpng.h - - --------------------------------------------------------------------------- - - Copyright (c) 1998-2007 Greg Roelofs. All rights reserved. - - This software is provided "as is," without warranty of any kind, - express or implied. In no event shall the author or contributors - be held liable for any damages arising in any way from the use of - this software. - - The contents of this file are DUAL-LICENSED. You may modify and/or - redistribute this software according to the terms of one of the - following two licenses (at your option): - - - LICENSE 1 ("BSD-like with advertising clause"): - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute - it freely, subject to the following restrictions: - - 1. Redistributions of source code must retain the above copyright - notice, disclaimer, and this list of conditions. - 2. Redistributions in binary form must reproduce the above copyright - notice, disclaimer, and this list of conditions in the documenta- - tion and/or other materials provided with the distribution. - 3. All advertising materials mentioning features or use of this - software must display the following acknowledgment: - - This product includes software developed by Greg Roelofs - and contributors for the book, "PNG: The Definitive Guide," - published by O'Reilly and Associates. - - - LICENSE 2 (GNU GPL v2 or later): - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - ---------------------------------------------------------------------------*/ - -#ifndef TRUE -# define TRUE 1 -# define FALSE 0 -#endif - -#ifndef MAX -# define MAX(a,b) ((a) > (b)? (a) : (b)) -# define MIN(a,b) ((a) < (b)? (a) : (b)) -#endif - -#ifdef DEBUG -# define Trace(x) {fprintf x ; fflush(stderr); fflush(stdout);} -#else -# define Trace(x) ; -#endif - -typedef unsigned char uch; -typedef unsigned short ush; -typedef unsigned long ulg; - - -/* prototypes for public functions in readpng.c */ - -void readpng_version_info(void); - -int readpng_init(FILE *infile, ulg *pWidth, ulg *pHeight); - -int readpng_get_bgcolor(uch *bg_red, uch *bg_green, uch *bg_blue); - -uch *readpng_get_image(double display_exponent, int *pChannels, - ulg *pRowbytes); - -void readpng_cleanup(int free_image_data); diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/readpng2.c b/io2d/src/3rd-party/libpng/contrib/gregbook/readpng2.c deleted file mode 100644 index e179db7..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/readpng2.c +++ /dev/null @@ -1,505 +0,0 @@ -/*--------------------------------------------------------------------------- - - rpng2 - progressive-model PNG display program readpng2.c - - --------------------------------------------------------------------------- - - Copyright (c) 1998-2007 Greg Roelofs. All rights reserved. - - This software is provided "as is," without warranty of any kind, - express or implied. In no event shall the author or contributors - be held liable for any damages arising in any way from the use of - this software. - - The contents of this file are DUAL-LICENSED. You may modify and/or - redistribute this software according to the terms of one of the - following two licenses (at your option): - - - LICENSE 1 ("BSD-like with advertising clause"): - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute - it freely, subject to the following restrictions: - - 1. Redistributions of source code must retain the above copyright - notice, disclaimer, and this list of conditions. - 2. Redistributions in binary form must reproduce the above copyright - notice, disclaimer, and this list of conditions in the documenta- - tion and/or other materials provided with the distribution. - 3. All advertising materials mentioning features or use of this - software must display the following acknowledgment: - - This product includes software developed by Greg Roelofs - and contributors for the book, "PNG: The Definitive Guide," - published by O'Reilly and Associates. - - - LICENSE 2 (GNU GPL v2 or later): - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - ---------------------------------------------------------------------------*/ - - -#include /* for exit() prototype */ -#include - -#include -#include "png.h" /* libpng header from the local directory */ -#include "readpng2.h" /* typedefs, common macros, public prototypes */ - - -/* local prototypes */ - -static void readpng2_info_callback(png_structp png_ptr, png_infop info_ptr); -static void readpng2_row_callback(png_structp png_ptr, png_bytep new_row, - png_uint_32 row_num, int pass); -static void readpng2_end_callback(png_structp png_ptr, png_infop info_ptr); -static void readpng2_error_handler(png_structp png_ptr, png_const_charp msg); - - - - -void readpng2_version_info(void) -{ - fprintf(stderr, " Compiled with libpng %s; using libpng %s\n", - PNG_LIBPNG_VER_STRING, png_libpng_ver); - - fprintf(stderr, " and with zlib %s; using zlib %s.\n", - ZLIB_VERSION, zlib_version); -} - - - - -int readpng2_check_sig(uch *sig, int num) -{ - return !png_sig_cmp(sig, 0, num); -} - - - - -/* returns 0 for success, 2 for libpng problem, 4 for out of memory */ - -int readpng2_init(mainprog_info *mainprog_ptr) -{ - png_structp png_ptr; /* note: temporary variables! */ - png_infop info_ptr; - - - /* could also replace libpng warning-handler (final NULL), but no need: */ - - png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, mainprog_ptr, - readpng2_error_handler, NULL); - if (!png_ptr) - return 4; /* out of memory */ - - info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) { - png_destroy_read_struct(&png_ptr, NULL, NULL); - return 4; /* out of memory */ - } - - - /* we could create a second info struct here (end_info), but it's only - * useful if we want to keep pre- and post-IDAT chunk info separated - * (mainly for PNG-aware image editors and converters) */ - - - /* setjmp() must be called in every function that calls a PNG-reading - * libpng function, unless an alternate error handler was installed-- - * but compatible error handlers must either use longjmp() themselves - * (as in this program) or exit immediately, so here we are: */ - - if (setjmp(mainprog_ptr->jmpbuf)) { - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - return 2; - } - - -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - /* prepare the reader to ignore all recognized chunks whose data won't be - * used, i.e., all chunks recognized by libpng except for IHDR, PLTE, IDAT, - * IEND, tRNS, bKGD, gAMA, and sRGB (small performance improvement) */ - { - /* These byte strings were copied from png.h. If a future version - * of readpng2.c recognizes more chunks, add them to this list. - */ - static PNG_CONST png_byte chunks_to_process[] = { - 98, 75, 71, 68, '\0', /* bKGD */ - 103, 65, 77, 65, '\0', /* gAMA */ - 115, 82, 71, 66, '\0', /* sRGB */ - }; - - /* Ignore all chunks except for IHDR, PLTE, tRNS, IDAT, and IEND */ - png_set_keep_unknown_chunks(png_ptr, -1 /* PNG_HANDLE_CHUNK_NEVER */, - NULL, -1); - - /* But do not ignore chunks in the "chunks_to_process" list */ - png_set_keep_unknown_chunks(png_ptr, - 0 /* PNG_HANDLE_CHUNK_AS_DEFAULT */, chunks_to_process, - sizeof(chunks_to_process)/5); - } -#endif /* PNG_HANDLE_AS_UNKNOWN_SUPPORTED */ - - - /* instead of doing png_init_io() here, now we set up our callback - * functions for progressive decoding */ - - png_set_progressive_read_fn(png_ptr, mainprog_ptr, - readpng2_info_callback, readpng2_row_callback, readpng2_end_callback); - - - /* make sure we save our pointers for use in readpng2_decode_data() */ - - mainprog_ptr->png_ptr = png_ptr; - mainprog_ptr->info_ptr = info_ptr; - - - /* and that's all there is to initialization */ - - return 0; -} - - - - -/* returns 0 for success, 2 for libpng (longjmp) problem */ - -int readpng2_decode_data(mainprog_info *mainprog_ptr, uch *rawbuf, ulg length) -{ - png_structp png_ptr = (png_structp)mainprog_ptr->png_ptr; - png_infop info_ptr = (png_infop)mainprog_ptr->info_ptr; - - - /* setjmp() must be called in every function that calls a PNG-reading - * libpng function */ - - if (setjmp(mainprog_ptr->jmpbuf)) { - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - mainprog_ptr->png_ptr = NULL; - mainprog_ptr->info_ptr = NULL; - return 2; - } - - - /* hand off the next chunk of input data to libpng for decoding */ - - png_process_data(png_ptr, info_ptr, rawbuf, length); - - return 0; -} - - - - -static void readpng2_info_callback(png_structp png_ptr, png_infop info_ptr) -{ - mainprog_info *mainprog_ptr; - int color_type, bit_depth; - png_uint_32 width, height; -#ifdef PNG_FLOATING_POINT_SUPPORTED - double gamma; -#else - png_fixed_point gamma; -#endif - - - /* setjmp() doesn't make sense here, because we'd either have to exit(), - * longjmp() ourselves, or return control to libpng, which doesn't want - * to see us again. By not doing anything here, libpng will instead jump - * to readpng2_decode_data(), which can return an error value to the main - * program. */ - - - /* retrieve the pointer to our special-purpose struct, using the png_ptr - * that libpng passed back to us (i.e., not a global this time--there's - * no real difference for a single image, but for a multithreaded browser - * decoding several PNG images at the same time, one needs to avoid mixing - * up different images' structs) */ - - mainprog_ptr = png_get_progressive_ptr(png_ptr); - - if (mainprog_ptr == NULL) { /* we be hosed */ - fprintf(stderr, - "readpng2 error: main struct not recoverable in info_callback.\n"); - fflush(stderr); - return; - /* - * Alternatively, we could call our error-handler just like libpng - * does, which would effectively terminate the program. Since this - * can only happen if png_ptr gets redirected somewhere odd or the - * main PNG struct gets wiped, we're probably toast anyway. (If - * png_ptr itself is NULL, we would not have been called.) - */ - } - - - /* this is just like in the non-progressive case */ - - png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, - NULL, NULL, NULL); - mainprog_ptr->width = (ulg)width; - mainprog_ptr->height = (ulg)height; - - - /* since we know we've read all of the PNG file's "header" (i.e., up - * to IDAT), we can check for a background color here */ - - if (mainprog_ptr->need_bgcolor && - png_get_valid(png_ptr, info_ptr, PNG_INFO_bKGD)) - { - png_color_16p pBackground; - - /* it is not obvious from the libpng documentation, but this function - * takes a pointer to a pointer, and it always returns valid red, - * green and blue values, regardless of color_type: */ - png_get_bKGD(png_ptr, info_ptr, &pBackground); - - /* however, it always returns the raw bKGD data, regardless of any - * bit-depth transformations, so check depth and adjust if necessary */ - if (bit_depth == 16) { - mainprog_ptr->bg_red = pBackground->red >> 8; - mainprog_ptr->bg_green = pBackground->green >> 8; - mainprog_ptr->bg_blue = pBackground->blue >> 8; - } else if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) { - if (bit_depth == 1) - mainprog_ptr->bg_red = mainprog_ptr->bg_green = - mainprog_ptr->bg_blue = pBackground->gray? 255 : 0; - else if (bit_depth == 2) - mainprog_ptr->bg_red = mainprog_ptr->bg_green = - mainprog_ptr->bg_blue = (255/3) * pBackground->gray; - else /* bit_depth == 4 */ - mainprog_ptr->bg_red = mainprog_ptr->bg_green = - mainprog_ptr->bg_blue = (255/15) * pBackground->gray; - } else { - mainprog_ptr->bg_red = (uch)pBackground->red; - mainprog_ptr->bg_green = (uch)pBackground->green; - mainprog_ptr->bg_blue = (uch)pBackground->blue; - } - } - - - /* as before, let libpng expand palette images to RGB, low-bit-depth - * grayscale images to 8 bits, transparency chunks to full alpha channel; - * strip 16-bit-per-sample images to 8 bits per sample; and convert - * grayscale to RGB[A] */ - - if (color_type == PNG_COLOR_TYPE_PALETTE) - png_set_expand(png_ptr); - if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) - png_set_expand(png_ptr); - if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) - png_set_expand(png_ptr); -#ifdef PNG_READ_16_TO_8_SUPPORTED - if (bit_depth == 16) -# ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED - png_set_scale_16(png_ptr); -# else - png_set_strip_16(png_ptr); -# endif -#endif - if (color_type == PNG_COLOR_TYPE_GRAY || - color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - png_set_gray_to_rgb(png_ptr); - - - /* Unlike the basic viewer, which was designed to operate on local files, - * this program is intended to simulate a web browser--even though we - * actually read from a local file, too. But because we are pretending - * that most of the images originate on the Internet, we follow the recom- - * mendation of the sRGB proposal and treat unlabelled images (no gAMA - * chunk) as existing in the sRGB color space. That is, we assume that - * such images have a file gamma of 0.45455, which corresponds to a PC-like - * display system. This change in assumptions will have no effect on a - * PC-like system, but on a Mac, SGI, NeXT or other system with a non- - * identity lookup table, it will darken unlabelled images, which effec- - * tively favors images from PC-like systems over those originating on - * the local platform. Note that mainprog_ptr->display_exponent is the - * "gamma" value for the entire display system, i.e., the product of - * LUT_exponent and CRT_exponent. */ - -#ifdef PNG_FLOATING_POINT_SUPPORTED - if (png_get_gAMA(png_ptr, info_ptr, &gamma)) - png_set_gamma(png_ptr, mainprog_ptr->display_exponent, gamma); - else - png_set_gamma(png_ptr, mainprog_ptr->display_exponent, 0.45455); -#else - if (png_get_gAMA_fixed(png_ptr, info_ptr, &gamma)) - png_set_gamma_fixed(png_ptr, - (png_fixed_point)(100000*mainprog_ptr->display_exponent+.5), gamma); - else - png_set_gamma_fixed(png_ptr, - (png_fixed_point)(100000*mainprog_ptr->display_exponent+.5), 45455); -#endif - - /* we'll let libpng expand interlaced images, too */ - - mainprog_ptr->passes = png_set_interlace_handling(png_ptr); - - - /* all transformations have been registered; now update info_ptr data and - * then get rowbytes and channels */ - - png_read_update_info(png_ptr, info_ptr); - - mainprog_ptr->rowbytes = (int)png_get_rowbytes(png_ptr, info_ptr); - mainprog_ptr->channels = png_get_channels(png_ptr, info_ptr); - - - /* Call the main program to allocate memory for the image buffer and - * initialize windows and whatnot. (The old-style function-pointer - * invocation is used for compatibility with a few supposedly ANSI - * compilers that nevertheless barf on "fn_ptr()"-style syntax.) */ - - (*mainprog_ptr->mainprog_init)(); - - - /* and that takes care of initialization */ - - return; -} - - - - - -static void readpng2_row_callback(png_structp png_ptr, png_bytep new_row, - png_uint_32 row_num, int pass) -{ - mainprog_info *mainprog_ptr; - - - /* first check whether the row differs from the previous pass; if not, - * nothing to combine or display */ - - if (!new_row) - return; - - - /* retrieve the pointer to our special-purpose struct so we can access - * the old rows and image-display callback function */ - - mainprog_ptr = png_get_progressive_ptr(png_ptr); - - - /* save the pass number for optional use by the front end */ - - mainprog_ptr->pass = pass; - - - /* have libpng either combine the new row data with the existing row data - * from previous passes (if interlaced) or else just copy the new row - * into the main program's image buffer */ - - png_progressive_combine_row(png_ptr, mainprog_ptr->row_pointers[row_num], - new_row); - - - /* finally, call the display routine in the main program with the number - * of the row we just updated */ - - (*mainprog_ptr->mainprog_display_row)(row_num); - - - /* and we're ready for more */ - - return; -} - - - - - -static void readpng2_end_callback(png_structp png_ptr, png_infop info_ptr) -{ - mainprog_info *mainprog_ptr; - - - /* retrieve the pointer to our special-purpose struct */ - - mainprog_ptr = png_get_progressive_ptr(png_ptr); - - - /* let the main program know that it should flush any buffered image - * data to the display now and set a "done" flag or whatever, but note - * that it SHOULD NOT DESTROY THE PNG STRUCTS YET--in other words, do - * NOT call readpng2_cleanup() either here or in the finish_display() - * routine; wait until control returns to the main program via - * readpng2_decode_data() */ - - (*mainprog_ptr->mainprog_finish_display)(); - - - /* all done */ - - return; -} - - - - - -void readpng2_cleanup(mainprog_info *mainprog_ptr) -{ - png_structp png_ptr = (png_structp)mainprog_ptr->png_ptr; - png_infop info_ptr = (png_infop)mainprog_ptr->info_ptr; - - if (png_ptr && info_ptr) - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - - mainprog_ptr->png_ptr = NULL; - mainprog_ptr->info_ptr = NULL; -} - - - - - -static void readpng2_error_handler(png_structp png_ptr, png_const_charp msg) -{ - mainprog_info *mainprog_ptr; - - /* This function, aside from the extra step of retrieving the "error - * pointer" (below) and the fact that it exists within the application - * rather than within libpng, is essentially identical to libpng's - * default error handler. The second point is critical: since both - * setjmp() and longjmp() are called from the same code, they are - * guaranteed to have compatible notions of how big a jmp_buf is, - * regardless of whether _BSD_SOURCE or anything else has (or has not) - * been defined. */ - - fprintf(stderr, "readpng2 libpng error: %s\n", msg); - fflush(stderr); - - mainprog_ptr = png_get_error_ptr(png_ptr); - if (mainprog_ptr == NULL) { /* we are completely hosed now */ - fprintf(stderr, - "readpng2 severe error: jmpbuf not recoverable; terminating.\n"); - fflush(stderr); - exit(99); - } - - /* Now we have our data structure we can use the information in it - * to return control to our own higher level code (all the points - * where 'setjmp' is called in this file.) This will work with other - * error handling mechanisms as well - libpng always calls png_error - * when it can proceed no further, thus, so long as the error handler - * is intercepted, application code can do its own error recovery. - */ - longjmp(mainprog_ptr->jmpbuf, 1); -} diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/readpng2.h b/io2d/src/3rd-party/libpng/contrib/gregbook/readpng2.h deleted file mode 100644 index 6b3660d..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/readpng2.h +++ /dev/null @@ -1,116 +0,0 @@ -/*--------------------------------------------------------------------------- - - rpng2 - progressive-model PNG display program readpng2.h - - --------------------------------------------------------------------------- - - Copyright (c) 1998-2008 Greg Roelofs. All rights reserved. - - This software is provided "as is," without warranty of any kind, - express or implied. In no event shall the author or contributors - be held liable for any damages arising in any way from the use of - this software. - - The contents of this file are DUAL-LICENSED. You may modify and/or - redistribute this software according to the terms of one of the - following two licenses (at your option): - - - LICENSE 1 ("BSD-like with advertising clause"): - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute - it freely, subject to the following restrictions: - - 1. Redistributions of source code must retain the above copyright - notice, disclaimer, and this list of conditions. - 2. Redistributions in binary form must reproduce the above copyright - notice, disclaimer, and this list of conditions in the documenta- - tion and/or other materials provided with the distribution. - 3. All advertising materials mentioning features or use of this - software must display the following acknowledgment: - - This product includes software developed by Greg Roelofs - and contributors for the book, "PNG: The Definitive Guide," - published by O'Reilly and Associates. - - - LICENSE 2 (GNU GPL v2 or later): - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - ---------------------------------------------------------------------------*/ - -#ifndef TRUE -# define TRUE 1 -# define FALSE 0 -#endif - -#ifndef MAX -# define MAX(a,b) ((a) > (b)? (a) : (b)) -# define MIN(a,b) ((a) < (b)? (a) : (b)) -#endif - -#ifdef DEBUG -# define Trace(x) {fprintf x ; fflush(stderr); fflush(stdout);} -#else -# define Trace(x) ; -#endif - -enum rpng2_states { - kPreInit = 0, - kWindowInit, - kDone -}; - -typedef unsigned char uch; -typedef unsigned short ush; -typedef unsigned long ulg; - -typedef struct _mainprog_info { - double display_exponent; - ulg width; - ulg height; - void *png_ptr; - void *info_ptr; - void (*mainprog_init)(void); - void (*mainprog_display_row)(ulg row_num); - void (*mainprog_finish_display)(void); - uch *image_data; - uch **row_pointers; - jmp_buf jmpbuf; - int passes; /* not used */ - int pass; - int rowbytes; - int channels; - int need_bgcolor; - int state; - uch bg_red; - uch bg_green; - uch bg_blue; -} mainprog_info; - - -/* prototypes for public functions in readpng2.c */ - -void readpng2_version_info(void); - -int readpng2_check_sig(uch *sig, int num); - -int readpng2_init(mainprog_info *mainprog_ptr); - -int readpng2_decode_data(mainprog_info *mainprog_ptr, uch *rawbuf, ulg length); - -void readpng2_cleanup(mainprog_info *mainprog_ptr); diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/readppm.c b/io2d/src/3rd-party/libpng/contrib/gregbook/readppm.c deleted file mode 100644 index be9a56d..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/readppm.c +++ /dev/null @@ -1,179 +0,0 @@ -/*--------------------------------------------------------------------------- - - rpng - simple PNG display program readppm.c - - --------------------------------------------------------------------------- - - This is a special-purpose replacement for readpng.c that allows binary - PPM files to be used in place of PNG images. - - --------------------------------------------------------------------------- - - Copyright (c) 1998-2007 Greg Roelofs. All rights reserved. - - This software is provided "as is," without warranty of any kind, - express or implied. In no event shall the author or contributors - be held liable for any damages arising in any way from the use of - this software. - - The contents of this file are DUAL-LICENSED. You may modify and/or - redistribute this software according to the terms of one of the - following two licenses (at your option): - - - LICENSE 1 ("BSD-like with advertising clause"): - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute - it freely, subject to the following restrictions: - - 1. Redistributions of source code must retain the above copyright - notice, disclaimer, and this list of conditions. - 2. Redistributions in binary form must reproduce the above copyright - notice, disclaimer, and this list of conditions in the documenta- - tion and/or other materials provided with the distribution. - 3. All advertising materials mentioning features or use of this - software must display the following acknowledgment: - - This product includes software developed by Greg Roelofs - and contributors for the book, "PNG: The Definitive Guide," - published by O'Reilly and Associates. - - - LICENSE 2 (GNU GPL v2 or later): - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - ---------------------------------------------------------------------------*/ - -#include -#include - -#include "readpng.h" /* typedefs, common macros, public prototypes */ - - -ulg width, height; -int bit_depth, color_type, channels; -uch *image_data = NULL; -FILE *saved_infile; - - -void readpng_version_info() -{ - fprintf(stderr, " Compiled without libpng, zlib or PBMPLUS/NetPBM.\n"); -} - - -/* return value = 0 for success, 1 for bad sig, 2 for bad IHDR, 4 for no mem */ - -int readpng_init(FILE *infile, ulg *pWidth, ulg *pHeight) -{ - static uch ppmline[256]; - int maxval; - - - saved_infile = infile; - - fgets(ppmline, 256, infile); - if (ppmline[0] != 'P' || ppmline[1] != '6') { - fprintf(stderr, "ERROR: not a PPM file\n"); - return 1; - } - /* possible color types: P5 = grayscale (0), P6 = RGB (2), P8 = RGBA (6) */ - if (ppmline[1] == '6') { - color_type = 2; - channels = 3; - } else if (ppmline[1] == '8') { - color_type = 6; - channels = 4; - } else /* if (ppmline[1] == '5') */ { - color_type = 0; - channels = 1; - } - - do { - fgets(ppmline, 256, infile); - } while (ppmline[0] == '#'); - sscanf(ppmline, "%lu %lu", &width, &height); - - do { - fgets(ppmline, 256, infile); - } while (ppmline[0] == '#'); - sscanf(ppmline, "%d", &maxval); - if (maxval != 255) { - fprintf(stderr, "ERROR: maxval = %d\n", maxval); - return 2; - } - bit_depth = 8; - - *pWidth = width; - *pHeight = height; - - return 0; -} - - - - -/* returns 0 if succeeds, 1 if fails due to no bKGD chunk, 2 if libpng error; - * scales values to 8-bit if necessary */ - -int readpng_get_bgcolor(uch *red, uch *green, uch *blue) -{ - return 1; -} - - - - -/* display_exponent == LUT_exponent * CRT_exponent */ - -uch *readpng_get_image(double display_exponent, int *pChannels, ulg *pRowbytes) -{ - ulg rowbytes; - - - /* expand palette images to RGB, low-bit-depth grayscale images to 8 bits, - * transparency chunks to full alpha channel; strip 16-bit-per-sample - * images to 8 bits per sample; and convert grayscale to RGB[A] */ - - /* GRR WARNING: grayscale needs to be expanded and channels reset! */ - - *pRowbytes = rowbytes = channels*width; - *pChannels = channels; - - if ((image_data = (uch *)malloc(rowbytes*height)) == NULL) { - return NULL; - } - - Trace((stderr, "readpng_get_image: rowbytes = %ld, height = %ld\n", rowbytes, height)); - - - /* now we can go ahead and just read the whole image */ - - fread(image_data, 1L, rowbytes*height, saved_infile); - - - return image_data; -} - - -void readpng_cleanup(int free_image_data) -{ - if (free_image_data && image_data) { - free(image_data); - image_data = NULL; - } -} diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/rpng-win.c b/io2d/src/3rd-party/libpng/contrib/gregbook/rpng-win.c deleted file mode 100644 index f53ddc8..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/rpng-win.c +++ /dev/null @@ -1,728 +0,0 @@ -/*--------------------------------------------------------------------------- - - rpng - simple PNG display program rpng-win.c - - This program decodes and displays PNG images, with gamma correction and - optionally with a user-specified background color (in case the image has - transparency). It is very nearly the most basic PNG viewer possible. - This version is for 32-bit Windows; it may compile under 16-bit Windows - with a little tweaking (or maybe not). - - to do: - - handle quoted command-line args (especially filenames with spaces) - - have minimum window width: oh well - - use %.1023s to simplify truncation of title-bar string? - - --------------------------------------------------------------------------- - - Changelog: - - 1.00: initial public release - - 1.01: modified to allow abbreviated options; fixed long/ulong mis- - match; switched to png_jmpbuf() macro - - 1.02: added extra set of parentheses to png_jmpbuf() macro; fixed - command-line parsing bug - - 1.10: enabled "message window"/console (thanks to David Geldreich) - - 2.00: dual-licensed (added GNU GPL) - - 2.01: fixed improper display of usage screen on PNG error(s) - - --------------------------------------------------------------------------- - - Copyright (c) 1998-2008 Greg Roelofs. All rights reserved. - - This software is provided "as is," without warranty of any kind, - express or implied. In no event shall the author or contributors - be held liable for any damages arising in any way from the use of - this software. - - The contents of this file are DUAL-LICENSED. You may modify and/or - redistribute this software according to the terms of one of the - following two licenses (at your option): - - - LICENSE 1 ("BSD-like with advertising clause"): - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute - it freely, subject to the following restrictions: - - 1. Redistributions of source code must retain the above copyright - notice, disclaimer, and this list of conditions. - 2. Redistributions in binary form must reproduce the above copyright - notice, disclaimer, and this list of conditions in the documenta- - tion and/or other materials provided with the distribution. - 3. All advertising materials mentioning features or use of this - software must display the following acknowledgment: - - This product includes software developed by Greg Roelofs - and contributors for the book, "PNG: The Definitive Guide," - published by O'Reilly and Associates. - - - LICENSE 2 (GNU GPL v2 or later): - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - ---------------------------------------------------------------------------*/ - -#define PROGNAME "rpng-win" -#define LONGNAME "Simple PNG Viewer for Windows" -#define VERSION "2.01 of 16 March 2008" - -#include -#include -#include -#include -#include -#ifdef __CYGWIN__ -/* getch replacement. Turns out, we don't really need this, - * but leave it here if we ever enable any of the uses of - * _getch in the main code - */ -#include -#include -#include -int repl_getch( void ) -{ - char ch; - int fd = fileno(stdin); - struct termio old_tty, new_tty; - - ioctl(fd, TCGETA, &old_tty); - new_tty = old_tty; - new_tty.c_lflag &= ~(ICANON | ECHO | ISIG); - ioctl(fd, TCSETA, &new_tty); - fread(&ch, 1, sizeof(ch), stdin); - ioctl(fd, TCSETA, &old_tty); - - return ch; -} -#define _getch repl_getch -#else -#include /* only for _getch() */ -#endif - -/* #define DEBUG : this enables the Trace() macros */ - -#include "readpng.h" /* typedefs, common macros, readpng prototypes */ - - -/* could just include png.h, but this macro is the only thing we need - * (name and typedefs changed to local versions); note that side effects - * only happen with alpha (which could easily be avoided with - * "ush acopy = (alpha);") */ - -#define alpha_composite(composite, fg, alpha, bg) { \ - ush temp = ((ush)(fg)*(ush)(alpha) + \ - (ush)(bg)*(ush)(255 - (ush)(alpha)) + (ush)128); \ - (composite) = (uch)((temp + (temp >> 8)) >> 8); \ -} - - -/* local prototypes */ -static int rpng_win_create_window(HINSTANCE hInst, int showmode); -static int rpng_win_display_image(void); -static void rpng_win_cleanup(void); -LRESULT CALLBACK rpng_win_wndproc(HWND, UINT, WPARAM, LPARAM); - - -static char titlebar[1024]; -static char *progname = PROGNAME; -static char *appname = LONGNAME; -static char *filename; -static FILE *infile; - -static char *bgstr; -static uch bg_red=0, bg_green=0, bg_blue=0; - -static double display_exponent; - -static ulg image_width, image_height, image_rowbytes; -static int image_channels; -static uch *image_data; - -/* Windows-specific variables */ -static ulg wimage_rowbytes; -static uch *dib; -static uch *wimage_data; -static BITMAPINFOHEADER *bmih; - -static HWND global_hwnd; - - - - -int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode) -{ - char *args[1024]; /* arbitrary limit, but should suffice */ - char *p, *q, **argv = args; - int argc = 0; - int rc, alen, flen; - int error = 0; - int have_bg = FALSE; - double LUT_exponent; /* just the lookup table */ - double CRT_exponent = 2.2; /* just the monitor */ - double default_display_exponent; /* whole display system */ - MSG msg; - - - filename = (char *)NULL; - -#ifndef __CYGWIN__ - /* First reenable console output, which normally goes to the bit bucket - * for windowed apps. Closing the console window will terminate the - * app. Thanks to David.Geldreich@realviz.com for supplying the magical - * incantation. */ - - AllocConsole(); - freopen("CONOUT$", "a", stderr); - freopen("CONOUT$", "a", stdout); -#endif - - - /* Next set the default value for our display-system exponent, i.e., - * the product of the CRT exponent and the exponent corresponding to - * the frame-buffer's lookup table (LUT), if any. This is not an - * exhaustive list of LUT values (e.g., OpenStep has a lot of weird - * ones), but it should cover 99% of the current possibilities. And - * yes, these ifdefs are completely wasted in a Windows program... */ - -#if defined(NeXT) - LUT_exponent = 1.0 / 2.2; - /* - if (some_next_function_that_returns_gamma(&next_gamma)) - LUT_exponent = 1.0 / next_gamma; - */ -#elif defined(sgi) - LUT_exponent = 1.0 / 1.7; - /* there doesn't seem to be any documented function to get the - * "gamma" value, so we do it the hard way */ - infile = fopen("/etc/config/system.glGammaVal", "r"); - if (infile) { - double sgi_gamma; - - fgets(tmpline, 80, infile); - fclose(infile); - sgi_gamma = atof(tmpline); - if (sgi_gamma > 0.0) - LUT_exponent = 1.0 / sgi_gamma; - } -#elif defined(Macintosh) - LUT_exponent = 1.8 / 2.61; - /* - if (some_mac_function_that_returns_gamma(&mac_gamma)) - LUT_exponent = mac_gamma / 2.61; - */ -#else - LUT_exponent = 1.0; /* assume no LUT: most PCs */ -#endif - - /* the defaults above give 1.0, 1.3, 1.5 and 2.2, respectively: */ - default_display_exponent = LUT_exponent * CRT_exponent; - - - /* If the user has set the SCREEN_GAMMA environment variable as suggested - * (somewhat imprecisely) in the libpng documentation, use that; otherwise - * use the default value we just calculated. Either way, the user may - * override this via a command-line option. */ - - if ((p = getenv("SCREEN_GAMMA")) != NULL) - display_exponent = atof(p); - else - display_exponent = default_display_exponent; - - - /* Windows really hates command lines, so we have to set up our own argv. - * Note that we do NOT bother with quoted arguments here, so don't use - * filenames with spaces in 'em! */ - - argv[argc++] = PROGNAME; - p = cmd; - for (;;) { - if (*p == ' ') - while (*++p == ' ') - ; - /* now p points at the first non-space after some spaces */ - if (*p == '\0') - break; /* nothing after the spaces: done */ - argv[argc++] = q = p; - while (*q && *q != ' ') - ++q; - /* now q points at a space or the end of the string */ - if (*q == '\0') - break; /* last argv already terminated; quit */ - *q = '\0'; /* change space to terminator */ - p = q + 1; - } - argv[argc] = NULL; /* terminate the argv array itself */ - - - /* Now parse the command line for options and the PNG filename. */ - - while (*++argv && !error) { - if (!strncmp(*argv, "-gamma", 2)) { - if (!*++argv) - ++error; - else { - display_exponent = atof(*argv); - if (display_exponent <= 0.0) - ++error; - } - } else if (!strncmp(*argv, "-bgcolor", 2)) { - if (!*++argv) - ++error; - else { - bgstr = *argv; - if (strlen(bgstr) != 7 || bgstr[0] != '#') - ++error; - else - have_bg = TRUE; - } - } else { - if (**argv != '-') { - filename = *argv; - if (argv[1]) /* shouldn't be any more args after filename */ - ++error; - } else - ++error; /* not expecting any other options */ - } - } - - if (!filename) - ++error; - - - /* print usage screen if any errors up to this point */ - - if (error) { -#ifndef __CYGWIN__ - int ch; -#endif - - fprintf(stderr, "\n%s %s: %s\n\n", PROGNAME, VERSION, appname); - readpng_version_info(); - fprintf(stderr, "\n" - "Usage: %s [-gamma exp] [-bgcolor bg] file.png\n" - " exp \ttransfer-function exponent (``gamma'') of the display\n" - "\t\t system in floating-point format (e.g., ``%.1f''); equal\n" - "\t\t to the product of the lookup-table exponent (varies)\n" - "\t\t and the CRT exponent (usually 2.2); must be positive\n" - " bg \tdesired background color in 7-character hex RGB format\n" - "\t\t (e.g., ``#ff7700'' for orange: same as HTML colors);\n" - "\t\t used with transparent images\n" - "\nPress Q, Esc or mouse button 1 after image is displayed to quit.\n" -#ifndef __CYGWIN__ - "Press Q or Esc to quit this usage screen.\n" -#endif - "\n", PROGNAME, default_display_exponent); -#ifndef __CYGWIN__ - do - ch = _getch(); - while (ch != 'q' && ch != 'Q' && ch != 0x1B); -#endif - exit(1); - } - - - if (!(infile = fopen(filename, "rb"))) { - fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename); - ++error; - } else { - if ((rc = readpng_init(infile, &image_width, &image_height)) != 0) { - switch (rc) { - case 1: - fprintf(stderr, PROGNAME - ": [%s] is not a PNG file: incorrect signature\n", - filename); - break; - case 2: - fprintf(stderr, PROGNAME - ": [%s] has bad IHDR (libpng longjmp)\n", filename); - break; - case 4: - fprintf(stderr, PROGNAME ": insufficient memory\n"); - break; - default: - fprintf(stderr, PROGNAME - ": unknown readpng_init() error\n"); - break; - } - ++error; - } - if (error) - fclose(infile); - } - - - if (error) { -#ifndef __CYGWIN__ - int ch; -#endif - - fprintf(stderr, PROGNAME ": aborting.\n"); -#ifndef __CYGWIN__ - do - ch = _getch(); - while (ch != 'q' && ch != 'Q' && ch != 0x1B); -#endif - exit(2); - } else { - fprintf(stderr, "\n%s %s: %s\n", PROGNAME, VERSION, appname); -#ifndef __CYGWIN__ - fprintf(stderr, - "\n [console window: closing this window will terminate %s]\n\n", - PROGNAME); -#endif - } - - - /* set the title-bar string, but make sure buffer doesn't overflow */ - - alen = strlen(appname); - flen = strlen(filename); - if (alen + flen + 3 > 1023) - sprintf(titlebar, "%s: ...%s", appname, filename+(alen+flen+6-1023)); - else - sprintf(titlebar, "%s: %s", appname, filename); - - - /* if the user didn't specify a background color on the command line, - * check for one in the PNG file--if not, the initialized values of 0 - * (black) will be used */ - - if (have_bg) { - unsigned r, g, b; /* this approach quiets compiler warnings */ - - sscanf(bgstr+1, "%2x%2x%2x", &r, &g, &b); - bg_red = (uch)r; - bg_green = (uch)g; - bg_blue = (uch)b; - } else if (readpng_get_bgcolor(&bg_red, &bg_green, &bg_blue) > 1) { - readpng_cleanup(TRUE); - fprintf(stderr, PROGNAME - ": libpng error while checking for background color\n"); - exit(2); - } - - - /* do the basic Windows initialization stuff, make the window and fill it - * with the background color */ - - if (rpng_win_create_window(hInst, showmode)) - exit(2); - - - /* decode the image, all at once */ - - Trace((stderr, "calling readpng_get_image()\n")) - image_data = readpng_get_image(display_exponent, &image_channels, - &image_rowbytes); - Trace((stderr, "done with readpng_get_image()\n")) - - - /* done with PNG file, so clean up to minimize memory usage (but do NOT - * nuke image_data!) */ - - readpng_cleanup(FALSE); - fclose(infile); - - if (!image_data) { - fprintf(stderr, PROGNAME ": unable to decode PNG image\n"); - exit(3); - } - - - /* display image (composite with background if requested) */ - - Trace((stderr, "calling rpng_win_display_image()\n")) - if (rpng_win_display_image()) { - free(image_data); - exit(4); - } - Trace((stderr, "done with rpng_win_display_image()\n")) - - - /* wait for the user to tell us when to quit */ - - printf( -#ifndef __CYGWIN__ - "Done. Press Q, Esc or mouse button 1 (within image window) to quit.\n" -#else - "Done. Press mouse button 1 (within image window) to quit.\n" -#endif - ); - fflush(stdout); - - while (GetMessage(&msg, NULL, 0, 0)) { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - - - /* OK, we're done: clean up all image and Windows resources and go away */ - - rpng_win_cleanup(); - - return msg.wParam; -} - - - - - -static int rpng_win_create_window(HINSTANCE hInst, int showmode) -{ - uch *dest; - int extra_width, extra_height; - ulg i, j; - WNDCLASSEX wndclass; - - -/*--------------------------------------------------------------------------- - Allocate memory for the display-specific version of the image (round up - to multiple of 4 for Windows DIB). - ---------------------------------------------------------------------------*/ - - wimage_rowbytes = ((3*image_width + 3L) >> 2) << 2; - - if (!(dib = (uch *)malloc(sizeof(BITMAPINFOHEADER) + - wimage_rowbytes*image_height))) - { - return 4; /* fail */ - } - -/*--------------------------------------------------------------------------- - Initialize the DIB. Negative height means to use top-down BMP ordering - (must be uncompressed, but that's what we want). Bit count of 1, 4 or 8 - implies a colormap of RGBX quads, but 24-bit BMPs just use B,G,R values - directly => wimage_data begins immediately after BMP header. - ---------------------------------------------------------------------------*/ - - memset(dib, 0, sizeof(BITMAPINFOHEADER)); - bmih = (BITMAPINFOHEADER *)dib; - bmih->biSize = sizeof(BITMAPINFOHEADER); - bmih->biWidth = image_width; - bmih->biHeight = -((long)image_height); - bmih->biPlanes = 1; - bmih->biBitCount = 24; - bmih->biCompression = 0; - wimage_data = dib + sizeof(BITMAPINFOHEADER); - -/*--------------------------------------------------------------------------- - Fill in background color (black by default); data are in BGR order. - ---------------------------------------------------------------------------*/ - - for (j = 0; j < image_height; ++j) { - dest = wimage_data + j*wimage_rowbytes; - for (i = image_width; i > 0; --i) { - *dest++ = bg_blue; - *dest++ = bg_green; - *dest++ = bg_red; - } - } - -/*--------------------------------------------------------------------------- - Set the window parameters. - ---------------------------------------------------------------------------*/ - - memset(&wndclass, 0, sizeof(wndclass)); - - wndclass.cbSize = sizeof(wndclass); - wndclass.style = CS_HREDRAW | CS_VREDRAW; - wndclass.lpfnWndProc = rpng_win_wndproc; - wndclass.hInstance = hInst; - wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); - wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); - wndclass.hbrBackground = (HBRUSH)GetStockObject(DKGRAY_BRUSH); - wndclass.lpszMenuName = NULL; - wndclass.lpszClassName = progname; - wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); - - RegisterClassEx(&wndclass); - -/*--------------------------------------------------------------------------- - Finally, create the window. - ---------------------------------------------------------------------------*/ - - extra_width = 2*(GetSystemMetrics(SM_CXBORDER) + - GetSystemMetrics(SM_CXDLGFRAME)); - extra_height = 2*(GetSystemMetrics(SM_CYBORDER) + - GetSystemMetrics(SM_CYDLGFRAME)) + - GetSystemMetrics(SM_CYCAPTION); - - global_hwnd = CreateWindow(progname, titlebar, WS_OVERLAPPEDWINDOW, - CW_USEDEFAULT, CW_USEDEFAULT, image_width+extra_width, - image_height+extra_height, NULL, NULL, hInst, NULL); - - ShowWindow(global_hwnd, showmode); - UpdateWindow(global_hwnd); - - return 0; - -} /* end function rpng_win_create_window() */ - - - - - -static int rpng_win_display_image() -{ - uch *src, *dest; - uch r, g, b, a; - ulg i, row, lastrow; - RECT rect; - - - Trace((stderr, "beginning display loop (image_channels == %d)\n", - image_channels)) - Trace((stderr, "(width = %ld, rowbytes = %ld, wimage_rowbytes = %d)\n", - image_width, image_rowbytes, wimage_rowbytes)) - - -/*--------------------------------------------------------------------------- - Blast image data to buffer. This whole routine takes place before the - message loop begins, so there's no real point in any pseudo-progressive - display... - ---------------------------------------------------------------------------*/ - - for (lastrow = row = 0; row < image_height; ++row) { - src = image_data + row*image_rowbytes; - dest = wimage_data + row*wimage_rowbytes; - if (image_channels == 3) { - for (i = image_width; i > 0; --i) { - r = *src++; - g = *src++; - b = *src++; - *dest++ = b; - *dest++ = g; /* note reverse order */ - *dest++ = r; - } - } else /* if (image_channels == 4) */ { - for (i = image_width; i > 0; --i) { - r = *src++; - g = *src++; - b = *src++; - a = *src++; - if (a == 255) { - *dest++ = b; - *dest++ = g; - *dest++ = r; - } else if (a == 0) { - *dest++ = bg_blue; - *dest++ = bg_green; - *dest++ = bg_red; - } else { - /* this macro (copied from png.h) composites the - * foreground and background values and puts the - * result into the first argument; there are no - * side effects with the first argument */ - alpha_composite(*dest++, b, a, bg_blue); - alpha_composite(*dest++, g, a, bg_green); - alpha_composite(*dest++, r, a, bg_red); - } - } - } - /* display after every 16 lines */ - if (((row+1) & 0xf) == 0) { - rect.left = 0L; - rect.top = (LONG)lastrow; - rect.right = (LONG)image_width; /* possibly off by one? */ - rect.bottom = (LONG)lastrow + 16L; /* possibly off by one? */ - InvalidateRect(global_hwnd, &rect, FALSE); - UpdateWindow(global_hwnd); /* similar to XFlush() */ - lastrow = row + 1; - } - } - - Trace((stderr, "calling final image-flush routine\n")) - if (lastrow < image_height) { - rect.left = 0L; - rect.top = (LONG)lastrow; - rect.right = (LONG)image_width; /* possibly off by one? */ - rect.bottom = (LONG)image_height; /* possibly off by one? */ - InvalidateRect(global_hwnd, &rect, FALSE); - UpdateWindow(global_hwnd); /* similar to XFlush() */ - } - -/* - last param determines whether or not background is wiped before paint - InvalidateRect(global_hwnd, NULL, TRUE); - UpdateWindow(global_hwnd); - */ - - return 0; -} - - - - - -static void rpng_win_cleanup() -{ - if (image_data) { - free(image_data); - image_data = NULL; - } - - if (dib) { - free(dib); - dib = NULL; - } -} - - - - - -LRESULT CALLBACK rpng_win_wndproc(HWND hwnd, UINT iMsg, WPARAM wP, LPARAM lP) -{ - HDC hdc; - PAINTSTRUCT ps; - int rc; - - switch (iMsg) { - case WM_CREATE: - /* one-time processing here, if any */ - return 0; - - case WM_PAINT: - hdc = BeginPaint(hwnd, &ps); - /* dest */ - rc = StretchDIBits(hdc, 0, 0, image_width, image_height, - /* source */ - 0, 0, image_width, image_height, - wimage_data, (BITMAPINFO *)bmih, - /* iUsage: no clue */ - 0, SRCCOPY); - EndPaint(hwnd, &ps); - return 0; - - /* wait for the user to tell us when to quit */ - case WM_CHAR: - switch (wP) { /* only need one, so ignore repeat count */ - case 'q': - case 'Q': - case 0x1B: /* Esc key */ - PostQuitMessage(0); - } - return 0; - - case WM_LBUTTONDOWN: /* another way of quitting */ - case WM_DESTROY: - PostQuitMessage(0); - return 0; - } - - return DefWindowProc(hwnd, iMsg, wP, lP); -} diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/rpng-x.c b/io2d/src/3rd-party/libpng/contrib/gregbook/rpng-x.c deleted file mode 100644 index 6d10e1b..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/rpng-x.c +++ /dev/null @@ -1,904 +0,0 @@ -/*--------------------------------------------------------------------------- - - rpng - simple PNG display program rpng-x.c - - This program decodes and displays PNG images, with gamma correction and - optionally with a user-specified background color (in case the image has - transparency). It is very nearly the most basic PNG viewer possible. - This version is for the X Window System (tested by author under Unix and - by Martin Zinser under OpenVMS; may work under OS/2 with some tweaking). - - to do: - - 8-bit (colormapped) X support - - use %.1023s to simplify truncation of title-bar string? - - --------------------------------------------------------------------------- - - Changelog: - - 1.01: initial public release - - 1.02: modified to allow abbreviated options; fixed long/ulong mis- - match; switched to png_jmpbuf() macro - - 1.10: added support for non-default visuals; fixed X pixel-conversion - - 1.11: added extra set of parentheses to png_jmpbuf() macro; fixed - command-line parsing bug - - 1.12: fixed some small X memory leaks (thanks to François Petitjean) - - 1.13: fixed XFreeGC() crash bug (thanks to Patrick Welche) - - 1.14: added support for X resources (thanks to Gerhard Niklasch) - - 2.00: dual-licensed (added GNU GPL) - - 2.01: fixed improper display of usage screen on PNG error(s) - - --------------------------------------------------------------------------- - - Copyright (c) 1998-2008 Greg Roelofs. All rights reserved. - - This software is provided "as is," without warranty of any kind, - express or implied. In no event shall the author or contributors - be held liable for any damages arising in any way from the use of - this software. - - The contents of this file are DUAL-LICENSED. You may modify and/or - redistribute this software according to the terms of one of the - following two licenses (at your option): - - - LICENSE 1 ("BSD-like with advertising clause"): - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute - it freely, subject to the following restrictions: - - 1. Redistributions of source code must retain the above copyright - notice, disclaimer, and this list of conditions. - 2. Redistributions in binary form must reproduce the above copyright - notice, disclaimer, and this list of conditions in the documenta- - tion and/or other materials provided with the distribution. - 3. All advertising materials mentioning features or use of this - software must display the following acknowledgment: - - This product includes software developed by Greg Roelofs - and contributors for the book, "PNG: The Definitive Guide," - published by O'Reilly and Associates. - - - LICENSE 2 (GNU GPL v2 or later): - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - ---------------------------------------------------------------------------*/ - -#define PROGNAME "rpng-x" -#define LONGNAME "Simple PNG Viewer for X" -#define VERSION "2.01 of 16 March 2008" -#define RESNAME "rpng" /* our X resource application name */ -#define RESCLASS "Rpng" /* our X resource class name */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/* #define DEBUG : this enables the Trace() macros */ - -#include "readpng.h" /* typedefs, common macros, readpng prototypes */ - - -/* could just include png.h, but this macro is the only thing we need - * (name and typedefs changed to local versions); note that side effects - * only happen with alpha (which could easily be avoided with - * "ush acopy = (alpha);") */ - -#define alpha_composite(composite, fg, alpha, bg) { \ - ush temp = ((ush)(fg)*(ush)(alpha) + \ - (ush)(bg)*(ush)(255 - (ush)(alpha)) + (ush)128); \ - (composite) = (uch)((temp + (temp >> 8)) >> 8); \ -} - - -/* local prototypes */ -static int rpng_x_create_window(void); -static int rpng_x_display_image(void); -static void rpng_x_cleanup(void); -static int rpng_x_msb(ulg u32val); - - -static char titlebar[1024], *window_name = titlebar; -static char *appname = LONGNAME; -static char *icon_name = PROGNAME; -static char *res_name = RESNAME; -static char *res_class = RESCLASS; -static char *filename; -static FILE *infile; - -static char *bgstr; -static uch bg_red=0, bg_green=0, bg_blue=0; - -static double display_exponent; - -static ulg image_width, image_height, image_rowbytes; -static int image_channels; -static uch *image_data; - -/* X-specific variables */ -static char *displayname; -static XImage *ximage; -static Display *display; -static int depth; -static Visual *visual; -static XVisualInfo *visual_list; -static int RShift, GShift, BShift; -static ulg RMask, GMask, BMask; -static Window window; -static GC gc; -static Colormap colormap; - -static int have_nondefault_visual = FALSE; -static int have_colormap = FALSE; -static int have_window = FALSE; -static int have_gc = FALSE; -/* -ulg numcolors=0, pixels[256]; -ush reds[256], greens[256], blues[256]; - */ - - - - -int main(int argc, char **argv) -{ -#ifdef sgi - char tmpline[80]; -#endif - char *p; - int rc, alen, flen; - int error = 0; - int have_bg = FALSE; - double LUT_exponent; /* just the lookup table */ - double CRT_exponent = 2.2; /* just the monitor */ - double default_display_exponent; /* whole display system */ - XEvent e; - KeySym k; - - - displayname = (char *)NULL; - filename = (char *)NULL; - - - /* First set the default value for our display-system exponent, i.e., - * the product of the CRT exponent and the exponent corresponding to - * the frame-buffer's lookup table (LUT), if any. This is not an - * exhaustive list of LUT values (e.g., OpenStep has a lot of weird - * ones), but it should cover 99% of the current possibilities. */ - -#if defined(NeXT) - LUT_exponent = 1.0 / 2.2; - /* - if (some_next_function_that_returns_gamma(&next_gamma)) - LUT_exponent = 1.0 / next_gamma; - */ -#elif defined(sgi) - LUT_exponent = 1.0 / 1.7; - /* there doesn't seem to be any documented function to get the - * "gamma" value, so we do it the hard way */ - infile = fopen("/etc/config/system.glGammaVal", "r"); - if (infile) { - double sgi_gamma; - - fgets(tmpline, 80, infile); - fclose(infile); - sgi_gamma = atof(tmpline); - if (sgi_gamma > 0.0) - LUT_exponent = 1.0 / sgi_gamma; - } -#elif defined(Macintosh) - LUT_exponent = 1.8 / 2.61; - /* - if (some_mac_function_that_returns_gamma(&mac_gamma)) - LUT_exponent = mac_gamma / 2.61; - */ -#else - LUT_exponent = 1.0; /* assume no LUT: most PCs */ -#endif - - /* the defaults above give 1.0, 1.3, 1.5 and 2.2, respectively: */ - default_display_exponent = LUT_exponent * CRT_exponent; - - - /* If the user has set the SCREEN_GAMMA environment variable as suggested - * (somewhat imprecisely) in the libpng documentation, use that; otherwise - * use the default value we just calculated. Either way, the user may - * override this via a command-line option. */ - - if ((p = getenv("SCREEN_GAMMA")) != NULL) - display_exponent = atof(p); - else - display_exponent = default_display_exponent; - - - /* Now parse the command line for options and the PNG filename. */ - - while (*++argv && !error) { - if (!strncmp(*argv, "-display", 2)) { - if (!*++argv) - ++error; - else - displayname = *argv; - } else if (!strncmp(*argv, "-gamma", 2)) { - if (!*++argv) - ++error; - else { - display_exponent = atof(*argv); - if (display_exponent <= 0.0) - ++error; - } - } else if (!strncmp(*argv, "-bgcolor", 2)) { - if (!*++argv) - ++error; - else { - bgstr = *argv; - if (strlen(bgstr) != 7 || bgstr[0] != '#') - ++error; - else - have_bg = TRUE; - } - } else { - if (**argv != '-') { - filename = *argv; - if (argv[1]) /* shouldn't be any more args after filename */ - ++error; - } else - ++error; /* not expecting any other options */ - } - } - - if (!filename) - ++error; - - - /* print usage screen if any errors up to this point */ - - if (error) { - fprintf(stderr, "\n%s %s: %s\n", PROGNAME, VERSION, appname); - readpng_version_info(); - fprintf(stderr, "\n" - "Usage: %s [-display xdpy] [-gamma exp] [-bgcolor bg] file.png\n" - " xdpy\tname of the target X display (e.g., ``hostname:0'')\n" - " exp \ttransfer-function exponent (``gamma'') of the display\n" - "\t\t system in floating-point format (e.g., ``%.1f''); equal\n" - "\t\t to the product of the lookup-table exponent (varies)\n" - "\t\t and the CRT exponent (usually 2.2); must be positive\n" - " bg \tdesired background color in 7-character hex RGB format\n" - "\t\t (e.g., ``#ff7700'' for orange: same as HTML colors);\n" - "\t\t used with transparent images\n" - "\nPress Q, Esc or mouse button 1 (within image window, after image\n" - "is displayed) to quit.\n" - "\n", PROGNAME, default_display_exponent); - exit(1); - } - - - if (!(infile = fopen(filename, "rb"))) { - fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename); - ++error; - } else { - if ((rc = readpng_init(infile, &image_width, &image_height)) != 0) { - switch (rc) { - case 1: - fprintf(stderr, PROGNAME - ": [%s] is not a PNG file: incorrect signature\n", - filename); - break; - case 2: - fprintf(stderr, PROGNAME - ": [%s] has bad IHDR (libpng longjmp)\n", filename); - break; - case 4: - fprintf(stderr, PROGNAME ": insufficient memory\n"); - break; - default: - fprintf(stderr, PROGNAME - ": unknown readpng_init() error\n"); - break; - } - ++error; - } else { - display = XOpenDisplay(displayname); - if (!display) { - readpng_cleanup(TRUE); - fprintf(stderr, PROGNAME ": can't open X display [%s]\n", - displayname? displayname : "default"); - ++error; - } - } - if (error) - fclose(infile); - } - - - if (error) { - fprintf(stderr, PROGNAME ": aborting.\n"); - exit(2); - } - - - /* set the title-bar string, but make sure buffer doesn't overflow */ - - alen = strlen(appname); - flen = strlen(filename); - if (alen + flen + 3 > 1023) - sprintf(titlebar, "%s: ...%s", appname, filename+(alen+flen+6-1023)); - else - sprintf(titlebar, "%s: %s", appname, filename); - - - /* if the user didn't specify a background color on the command line, - * check for one in the PNG file--if not, the initialized values of 0 - * (black) will be used */ - - if (have_bg) { - unsigned r, g, b; /* this approach quiets compiler warnings */ - - sscanf(bgstr+1, "%2x%2x%2x", &r, &g, &b); - bg_red = (uch)r; - bg_green = (uch)g; - bg_blue = (uch)b; - } else if (readpng_get_bgcolor(&bg_red, &bg_green, &bg_blue) > 1) { - readpng_cleanup(TRUE); - fprintf(stderr, PROGNAME - ": libpng error while checking for background color\n"); - exit(2); - } - - - /* do the basic X initialization stuff, make the window and fill it - * with the background color */ - - if (rpng_x_create_window()) - exit(2); - - - /* decode the image, all at once */ - - Trace((stderr, "calling readpng_get_image()\n")) - image_data = readpng_get_image(display_exponent, &image_channels, - &image_rowbytes); - Trace((stderr, "done with readpng_get_image()\n")) - - - /* done with PNG file, so clean up to minimize memory usage (but do NOT - * nuke image_data!) */ - - readpng_cleanup(FALSE); - fclose(infile); - - if (!image_data) { - fprintf(stderr, PROGNAME ": unable to decode PNG image\n"); - exit(3); - } - - - /* display image (composite with background if requested) */ - - Trace((stderr, "calling rpng_x_display_image()\n")) - if (rpng_x_display_image()) { - free(image_data); - exit(4); - } - Trace((stderr, "done with rpng_x_display_image()\n")) - - - /* wait for the user to tell us when to quit */ - - printf( - "Done. Press Q, Esc or mouse button 1 (within image window) to quit.\n"); - fflush(stdout); - - do - XNextEvent(display, &e); - while (!(e.type == ButtonPress && e.xbutton.button == Button1) && - !(e.type == KeyPress && /* v--- or 1 for shifted keys */ - ((k = XLookupKeysym(&e.xkey, 0)) == XK_q || k == XK_Escape) )); - - - /* OK, we're done: clean up all image and X resources and go away */ - - rpng_x_cleanup(); - - return 0; -} - - - - - -static int rpng_x_create_window(void) -{ - uch *xdata; - int need_colormap = FALSE; - int screen, pad; - ulg bg_pixel = 0L; - ulg attrmask; - Window root; - XEvent e; - XGCValues gcvalues; - XSetWindowAttributes attr; - XTextProperty windowName, *pWindowName = &windowName; - XTextProperty iconName, *pIconName = &iconName; - XVisualInfo visual_info; - XSizeHints *size_hints; - XWMHints *wm_hints; - XClassHint *class_hints; - - - screen = DefaultScreen(display); - depth = DisplayPlanes(display, screen); - root = RootWindow(display, screen); - -#ifdef DEBUG - XSynchronize(display, True); -#endif - -#if 0 -/* GRR: add 8-bit support */ - if (/* depth != 8 && */ depth != 16 && depth != 24 && depth != 32) { - fprintf(stderr, - "screen depth %d not supported (only 16-, 24- or 32-bit TrueColor)\n", - depth); - return 2; - } - - XMatchVisualInfo(display, screen, depth, - (depth == 8)? PseudoColor : TrueColor, &visual_info); - visual = visual_info.visual; -#else - if (depth != 16 && depth != 24 && depth != 32) { - int visuals_matched = 0; - - Trace((stderr, "default depth is %d: checking other visuals\n", - depth)) - - /* 24-bit first */ - visual_info.screen = screen; - visual_info.depth = 24; - visual_list = XGetVisualInfo(display, - VisualScreenMask | VisualDepthMask, &visual_info, &visuals_matched); - if (visuals_matched == 0) { -/* GRR: add 15-, 16- and 32-bit TrueColor visuals (also DirectColor?) */ - fprintf(stderr, "default screen depth %d not supported, and no" - " 24-bit visuals found\n", depth); - return 2; - } - Trace((stderr, "XGetVisualInfo() returned %d 24-bit visuals\n", - visuals_matched)) - visual = visual_list[0].visual; - depth = visual_list[0].depth; -/* - colormap_size = visual_list[0].colormap_size; - visual_class = visual->class; - visualID = XVisualIDFromVisual(visual); - */ - have_nondefault_visual = TRUE; - need_colormap = TRUE; - } else { - XMatchVisualInfo(display, screen, depth, TrueColor, &visual_info); - visual = visual_info.visual; - } -#endif - - RMask = visual->red_mask; - GMask = visual->green_mask; - BMask = visual->blue_mask; - -/* GRR: add/check 8-bit support */ - if (depth == 8 || need_colormap) { - colormap = XCreateColormap(display, root, visual, AllocNone); - if (!colormap) { - fprintf(stderr, "XCreateColormap() failed\n"); - return 2; - } - have_colormap = TRUE; - } - if (depth == 15 || depth == 16) { - RShift = 15 - rpng_x_msb(RMask); /* these are right-shifts */ - GShift = 15 - rpng_x_msb(GMask); - BShift = 15 - rpng_x_msb(BMask); - } else if (depth > 16) { -#define NO_24BIT_MASKS -#ifdef NO_24BIT_MASKS - RShift = rpng_x_msb(RMask) - 7; /* these are left-shifts */ - GShift = rpng_x_msb(GMask) - 7; - BShift = rpng_x_msb(BMask) - 7; -#else - RShift = 7 - rpng_x_msb(RMask); /* these are right-shifts, too */ - GShift = 7 - rpng_x_msb(GMask); - BShift = 7 - rpng_x_msb(BMask); -#endif - } - if (depth >= 15 && (RShift < 0 || GShift < 0 || BShift < 0)) { - fprintf(stderr, "rpng internal logic error: negative X shift(s)!\n"); - return 2; - } - -/*--------------------------------------------------------------------------- - Finally, create the window. - ---------------------------------------------------------------------------*/ - - attr.backing_store = Always; - attr.event_mask = ExposureMask | KeyPressMask | ButtonPressMask; - attrmask = CWBackingStore | CWEventMask; - if (have_nondefault_visual) { - attr.colormap = colormap; - attr.background_pixel = 0; - attr.border_pixel = 1; - attrmask |= CWColormap | CWBackPixel | CWBorderPixel; - } - - window = XCreateWindow(display, root, 0, 0, image_width, image_height, 0, - depth, InputOutput, visual, attrmask, &attr); - - if (window == None) { - fprintf(stderr, "XCreateWindow() failed\n"); - return 2; - } else - have_window = TRUE; - - if (depth == 8) - XSetWindowColormap(display, window, colormap); - - if (!XStringListToTextProperty(&window_name, 1, pWindowName)) - pWindowName = NULL; - if (!XStringListToTextProperty(&icon_name, 1, pIconName)) - pIconName = NULL; - - /* OK if any hints allocation fails; XSetWMProperties() allows NULLs */ - - if ((size_hints = XAllocSizeHints()) != NULL) { - /* window will not be resizable */ - size_hints->flags = PMinSize | PMaxSize; - size_hints->min_width = size_hints->max_width = (int)image_width; - size_hints->min_height = size_hints->max_height = (int)image_height; - } - - if ((wm_hints = XAllocWMHints()) != NULL) { - wm_hints->initial_state = NormalState; - wm_hints->input = True; - /* wm_hints->icon_pixmap = icon_pixmap; */ - wm_hints->flags = StateHint | InputHint /* | IconPixmapHint */ ; - } - - if ((class_hints = XAllocClassHint()) != NULL) { - class_hints->res_name = res_name; - class_hints->res_class = res_class; - } - - XSetWMProperties(display, window, pWindowName, pIconName, NULL, 0, - size_hints, wm_hints, class_hints); - - /* various properties and hints no longer needed; free memory */ - if (pWindowName) - XFree(pWindowName->value); - if (pIconName) - XFree(pIconName->value); - if (size_hints) - XFree(size_hints); - if (wm_hints) - XFree(wm_hints); - if (class_hints) - XFree(class_hints); - - XMapWindow(display, window); - - gc = XCreateGC(display, window, 0, &gcvalues); - have_gc = TRUE; - -/*--------------------------------------------------------------------------- - Fill window with the specified background color. - ---------------------------------------------------------------------------*/ - - if (depth == 24 || depth == 32) { - bg_pixel = ((ulg)bg_red << RShift) | - ((ulg)bg_green << GShift) | - ((ulg)bg_blue << BShift); - } else if (depth == 16) { - bg_pixel = ((((ulg)bg_red << 8) >> RShift) & RMask) | - ((((ulg)bg_green << 8) >> GShift) & GMask) | - ((((ulg)bg_blue << 8) >> BShift) & BMask); - } else /* depth == 8 */ { - - /* GRR: add 8-bit support */ - - } - - XSetForeground(display, gc, bg_pixel); - XFillRectangle(display, window, gc, 0, 0, image_width, image_height); - -/*--------------------------------------------------------------------------- - Wait for first Expose event to do any drawing, then flush. - ---------------------------------------------------------------------------*/ - - do - XNextEvent(display, &e); - while (e.type != Expose || e.xexpose.count); - - XFlush(display); - -/*--------------------------------------------------------------------------- - Allocate memory for the X- and display-specific version of the image. - ---------------------------------------------------------------------------*/ - - if (depth == 24 || depth == 32) { - xdata = (uch *)malloc(4*image_width*image_height); - pad = 32; - } else if (depth == 16) { - xdata = (uch *)malloc(2*image_width*image_height); - pad = 16; - } else /* depth == 8 */ { - xdata = (uch *)malloc(image_width*image_height); - pad = 8; - } - - if (!xdata) { - fprintf(stderr, PROGNAME ": unable to allocate image memory\n"); - return 4; - } - - ximage = XCreateImage(display, visual, depth, ZPixmap, 0, - (char *)xdata, image_width, image_height, pad, 0); - - if (!ximage) { - fprintf(stderr, PROGNAME ": XCreateImage() failed\n"); - free(xdata); - return 3; - } - - /* to avoid testing the byte order every pixel (or doubling the size of - * the drawing routine with a giant if-test), we arbitrarily set the byte - * order to MSBFirst and let Xlib worry about inverting things on little- - * endian machines (like Linux/x86, old VAXen, etc.)--this is not the most - * efficient approach (the giant if-test would be better), but in the - * interest of clarity, we take the easy way out... */ - - ximage->byte_order = MSBFirst; - - return 0; - -} /* end function rpng_x_create_window() */ - - - - - -static int rpng_x_display_image(void) -{ - uch *src; - char *dest; - uch r, g, b, a; - ulg i, row, lastrow = 0; - ulg pixel; - int ximage_rowbytes = ximage->bytes_per_line; -/* int bpp = ximage->bits_per_pixel; */ - - - Trace((stderr, "beginning display loop (image_channels == %d)\n", - image_channels)) - Trace((stderr, " (width = %ld, rowbytes = %ld, ximage_rowbytes = %d)\n", - image_width, image_rowbytes, ximage_rowbytes)) - Trace((stderr, " (bpp = %d)\n", ximage->bits_per_pixel)) - Trace((stderr, " (byte_order = %s)\n", ximage->byte_order == MSBFirst? - "MSBFirst" : (ximage->byte_order == LSBFirst? "LSBFirst" : "unknown"))) - - if (depth == 24 || depth == 32) { - ulg red, green, blue; - - for (lastrow = row = 0; row < image_height; ++row) { - src = image_data + row*image_rowbytes; - dest = ximage->data + row*ximage_rowbytes; - if (image_channels == 3) { - for (i = image_width; i > 0; --i) { - red = *src++; - green = *src++; - blue = *src++; -#ifdef NO_24BIT_MASKS - pixel = (red << RShift) | - (green << GShift) | - (blue << BShift); - /* recall that we set ximage->byte_order = MSBFirst above */ - /* GRR BUG: this assumes bpp == 32, but may be 24: */ - *dest++ = (char)((pixel >> 24) & 0xff); - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); -#else - red = (RShift < 0)? red << (-RShift) : red >> RShift; - green = (GShift < 0)? green << (-GShift) : green >> GShift; - blue = (BShift < 0)? blue << (-BShift) : blue >> BShift; - pixel = (red & RMask) | (green & GMask) | (blue & BMask); - /* recall that we set ximage->byte_order = MSBFirst above */ - *dest++ = (char)((pixel >> 24) & 0xff); - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); -#endif - } - } else /* if (image_channels == 4) */ { - for (i = image_width; i > 0; --i) { - r = *src++; - g = *src++; - b = *src++; - a = *src++; - if (a == 255) { - red = r; - green = g; - blue = b; - } else if (a == 0) { - red = bg_red; - green = bg_green; - blue = bg_blue; - } else { - /* this macro (from png.h) composites the foreground - * and background values and puts the result into the - * first argument */ - alpha_composite(red, r, a, bg_red); - alpha_composite(green, g, a, bg_green); - alpha_composite(blue, b, a, bg_blue); - } - pixel = (red << RShift) | - (green << GShift) | - (blue << BShift); - /* recall that we set ximage->byte_order = MSBFirst above */ - *dest++ = (char)((pixel >> 24) & 0xff); - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } - } - /* display after every 16 lines */ - if (((row+1) & 0xf) == 0) { - XPutImage(display, window, gc, ximage, 0, (int)lastrow, 0, - (int)lastrow, image_width, 16); - XFlush(display); - lastrow = row + 1; - } - } - - } else if (depth == 16) { - ush red, green, blue; - - for (lastrow = row = 0; row < image_height; ++row) { - src = image_data + row*image_rowbytes; - dest = ximage->data + row*ximage_rowbytes; - if (image_channels == 3) { - for (i = image_width; i > 0; --i) { - red = ((ush)(*src) << 8); - ++src; - green = ((ush)(*src) << 8); - ++src; - blue = ((ush)(*src) << 8); - ++src; - pixel = ((red >> RShift) & RMask) | - ((green >> GShift) & GMask) | - ((blue >> BShift) & BMask); - /* recall that we set ximage->byte_order = MSBFirst above */ - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } - } else /* if (image_channels == 4) */ { - for (i = image_width; i > 0; --i) { - r = *src++; - g = *src++; - b = *src++; - a = *src++; - if (a == 255) { - red = ((ush)r << 8); - green = ((ush)g << 8); - blue = ((ush)b << 8); - } else if (a == 0) { - red = ((ush)bg_red << 8); - green = ((ush)bg_green << 8); - blue = ((ush)bg_blue << 8); - } else { - /* this macro (from png.h) composites the foreground - * and background values and puts the result back into - * the first argument (== fg byte here: safe) */ - alpha_composite(r, r, a, bg_red); - alpha_composite(g, g, a, bg_green); - alpha_composite(b, b, a, bg_blue); - red = ((ush)r << 8); - green = ((ush)g << 8); - blue = ((ush)b << 8); - } - pixel = ((red >> RShift) & RMask) | - ((green >> GShift) & GMask) | - ((blue >> BShift) & BMask); - /* recall that we set ximage->byte_order = MSBFirst above */ - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } - } - /* display after every 16 lines */ - if (((row+1) & 0xf) == 0) { - XPutImage(display, window, gc, ximage, 0, (int)lastrow, 0, - (int)lastrow, image_width, 16); - XFlush(display); - lastrow = row + 1; - } - } - - } else /* depth == 8 */ { - - /* GRR: add 8-bit support */ - - } - - Trace((stderr, "calling final XPutImage()\n")) - if (lastrow < image_height) { - XPutImage(display, window, gc, ximage, 0, (int)lastrow, 0, - (int)lastrow, image_width, image_height-lastrow); - XFlush(display); - } - - return 0; -} - - - - -static void rpng_x_cleanup(void) -{ - if (image_data) { - free(image_data); - image_data = NULL; - } - - if (ximage) { - if (ximage->data) { - free(ximage->data); /* we allocated it, so we free it */ - ximage->data = (char *)NULL; /* instead of XDestroyImage() */ - } - XDestroyImage(ximage); - ximage = NULL; - } - - if (have_gc) - XFreeGC(display, gc); - - if (have_window) - XDestroyWindow(display, window); - - if (have_colormap) - XFreeColormap(display, colormap); - - if (have_nondefault_visual) - XFree(visual_list); -} - - - - - -static int rpng_x_msb(ulg u32val) -{ - int i; - - for (i = 31; i >= 0; --i) { - if (u32val & 0x80000000L) - break; - u32val <<= 1; - } - return i; -} diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/rpng2-win.c b/io2d/src/3rd-party/libpng/contrib/gregbook/rpng2-win.c deleted file mode 100644 index 223e737..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/rpng2-win.c +++ /dev/null @@ -1,1253 +0,0 @@ -/*--------------------------------------------------------------------------- - - rpng2 - progressive-model PNG display program rpng2-win.c - - This program decodes and displays PNG files progressively, as if it were - a web browser (though the front end is only set up to read from files). - It supports gamma correction, user-specified background colors, and user- - specified background patterns (for transparent images). This version is - for 32-bit Windows; it may compile under 16-bit Windows with a little - tweaking (or maybe not). Thanks to Adam Costello and Pieter S. van der - Meulen for the "diamond" and "radial waves" patterns, respectively. - - to do (someday, maybe): - - handle quoted command-line args (especially filenames with spaces) - - finish resizable checkerboard-gradient (sizes 4-128?) - - use %.1023s to simplify truncation of title-bar string? - - have minimum window width: oh well - - --------------------------------------------------------------------------- - - Changelog: - - 1.01: initial public release - - 1.02: fixed cut-and-paste error in usage screen (oops...) - - 1.03: modified to allow abbreviated options - - 1.04: removed bogus extra argument from usage fprintf() [Glenn R-P?]; - fixed command-line parsing bug - - 1.10: enabled "message window"/console (thanks to David Geldreich) - - 1.20: added runtime MMX-enabling/disabling and new -mmx* options - - 1.21: made minor tweak to usage screen to fit within 25-line console - - 1.22: added AMD64/EM64T support (__x86_64__) - - 2.00: dual-licensed (added GNU GPL) - - 2.01: fixed 64-bit typo in readpng2.c - - 2.02: fixed improper display of usage screen on PNG error(s); fixed - unexpected-EOF and file-read-error cases - - 2.03: removed runtime MMX-enabling/disabling and obsolete -mmx* options - - --------------------------------------------------------------------------- - - Copyright (c) 1998-2008 Greg Roelofs. All rights reserved. - - This software is provided "as is," without warranty of any kind, - express or implied. In no event shall the author or contributors - be held liable for any damages arising in any way from the use of - this software. - - The contents of this file are DUAL-LICENSED. You may modify and/or - redistribute this software according to the terms of one of the - following two licenses (at your option): - - - LICENSE 1 ("BSD-like with advertising clause"): - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute - it freely, subject to the following restrictions: - - 1. Redistributions of source code must retain the above copyright - notice, disclaimer, and this list of conditions. - 2. Redistributions in binary form must reproduce the above copyright - notice, disclaimer, and this list of conditions in the documenta- - tion and/or other materials provided with the distribution. - 3. All advertising materials mentioning features or use of this - software must display the following acknowledgment: - - This product includes software developed by Greg Roelofs - and contributors for the book, "PNG: The Definitive Guide," - published by O'Reilly and Associates. - - - LICENSE 2 (GNU GPL v2 or later): - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - ---------------------------------------------------------------------------*/ - -#define PROGNAME "rpng2-win" -#define LONGNAME "Progressive PNG Viewer for Windows" -#define VERSION "2.02 of 16 March 2008" - -#include -#include -#include -#include /* for jmpbuf declaration in readpng2.h */ -#include -#include /* only for PvdM background code */ -#include -#ifdef __CYGWIN__ -/* getch replacement. Turns out, we don't really need this, - * but leave it here if we ever enable any of the uses of - * _getch in the main code - */ -#include -#include -#include -int repl_getch( void ) -{ - char ch; - int fd = fileno(stdin); - struct termio old_tty, new_tty; - - ioctl(fd, TCGETA, &old_tty); - new_tty = old_tty; - new_tty.c_lflag &= ~(ICANON | ECHO | ISIG); - ioctl(fd, TCSETA, &new_tty); - fread(&ch, 1, sizeof(ch), stdin); - ioctl(fd, TCSETA, &old_tty); - - return ch; -} -#define _getch repl_getch -#else -#include /* only for _getch() */ -#endif - -/* all for PvdM background code: */ -#ifndef PI -# define PI 3.141592653589793238 -#endif -#define PI_2 (PI*0.5) -#define INV_PI_360 (360.0 / PI) -#define MAX(a,b) (a>b?a:b) -#define MIN(a,b) (a> 8)) >> 8); \ -} - - -#define INBUFSIZE 4096 /* with pseudo-timing on (1 sec delay/block), this - * block size corresponds roughly to a download - * speed 10% faster than theoretical 33.6K maximum - * (assuming 8 data bits, 1 stop bit and no other - * overhead) */ - -/* local prototypes */ -static void rpng2_win_init(void); -static int rpng2_win_create_window(void); -static int rpng2_win_load_bg_image(void); -static void rpng2_win_display_row(ulg row); -static void rpng2_win_finish_display(void); -static void rpng2_win_cleanup(void); -LRESULT CALLBACK rpng2_win_wndproc(HWND, UINT, WPARAM, LPARAM); - - -static char titlebar[1024]; -static char *progname = PROGNAME; -static char *appname = LONGNAME; -static char *filename; -static FILE *infile; - -static mainprog_info rpng2_info; - -static uch inbuf[INBUFSIZE]; -static int incount; - -static int pat = 6; /* must be less than num_bgpat */ -static int bg_image = 0; -static int bgscale = 16; -static ulg bg_rowbytes; -static uch *bg_data; - -static struct rgb_color { - uch r, g, b; -} rgb[] = { - { 0, 0, 0}, /* 0: black */ - {255, 255, 255}, /* 1: white */ - {173, 132, 57}, /* 2: tan */ - { 64, 132, 0}, /* 3: medium green */ - {189, 117, 1}, /* 4: gold */ - {253, 249, 1}, /* 5: yellow */ - { 0, 0, 255}, /* 6: blue */ - { 0, 0, 120}, /* 7: medium blue */ - {255, 0, 255}, /* 8: magenta */ - { 64, 0, 64}, /* 9: dark magenta */ - {255, 0, 0}, /* 10: red */ - { 64, 0, 0}, /* 11: dark red */ - {255, 127, 0}, /* 12: orange */ - {192, 96, 0}, /* 13: darker orange */ - { 24, 60, 0}, /* 14: dark green-yellow */ - { 85, 125, 200} /* 15: ice blue */ -}; -/* not used for now, but should be for error-checking: -static int num_rgb = sizeof(rgb) / sizeof(struct rgb_color); - */ - -/* - This whole struct is a fairly cheesy way to keep the number of - command-line options to a minimum. The radial-waves background - type is a particularly poor fit to the integer elements of the - struct...but a few macros and a little fixed-point math will do - wonders for ya. - - type bits: - F E D C B A 9 8 7 6 5 4 3 2 1 0 - | | | | | - | | +-+-+-- 0 = sharp-edged checkerboard - | | 1 = soft diamonds - | | 2 = radial waves - | | 3-7 = undefined - | +-- gradient #2 inverted? - +-- alternating columns inverted? - */ -static struct background_pattern { - ush type; - int rgb1_max, rgb1_min; /* or bg_freq, bg_gray */ - int rgb2_max, rgb2_min; /* or bg_bsat, bg_brot (both scaled by 10)*/ -} bg[] = { - {0+8, 2,0, 1,15}, /* checkered: tan/black vs. white/ice blue */ - {0+24, 2,0, 1,0}, /* checkered: tan/black vs. white/black */ - {0+8, 4,5, 0,2}, /* checkered: gold/yellow vs. black/tan */ - {0+8, 4,5, 0,6}, /* checkered: gold/yellow vs. black/blue */ - {0, 7,0, 8,9}, /* checkered: deep blue/black vs. magenta */ - {0+8, 13,0, 5,14}, /* checkered: orange/black vs. yellow */ - {0+8, 12,0, 10,11}, /* checkered: orange/black vs. red */ - {1, 7,0, 8,0}, /* diamonds: deep blue/black vs. magenta */ - {1, 12,0, 11,0}, /* diamonds: orange vs. dark red */ - {1, 10,0, 7,0}, /* diamonds: red vs. medium blue */ - {1, 4,0, 5,0}, /* diamonds: gold vs. yellow */ - {1, 3,0, 0,0}, /* diamonds: medium green vs. black */ - {2, 16, 100, 20, 0}, /* radial: ~hard radial color-beams */ - {2, 18, 100, 10, 2}, /* radial: soft, curved radial color-beams */ - {2, 16, 256, 100, 250}, /* radial: very tight spiral */ - {2, 10000, 256, 11, 0} /* radial: dipole-moire' (almost fractal) */ -}; -static int num_bgpat = sizeof(bg) / sizeof(struct background_pattern); - - -/* Windows-specific global variables (could go in struct, but messy...) */ -static ulg wimage_rowbytes; -static uch *dib; -static uch *wimage_data; -static BITMAPINFOHEADER *bmih; - -static HWND global_hwnd; -static HINSTANCE global_hInst; -static int global_showmode; - - - - -int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, PSTR cmd, int showmode) -{ - char *args[1024]; /* arbitrary limit, but should suffice */ - char **argv = args; - char *p, *q, *bgstr = NULL; - int argc = 0; - int rc, alen, flen; - int error = 0; - int timing = FALSE; - int have_bg = FALSE; - double LUT_exponent; /* just the lookup table */ - double CRT_exponent = 2.2; /* just the monitor */ - double default_display_exponent; /* whole display system */ - MSG msg; - - - /* First initialize a few things, just to be sure--memset takes care of - * default background color (black), booleans (FALSE), pointers (NULL), - * etc. */ - - global_hInst = hInst; - global_showmode = showmode; - filename = (char *)NULL; - memset(&rpng2_info, 0, sizeof(mainprog_info)); - -#ifndef __CYGWIN__ - /* Next reenable console output, which normally goes to the bit bucket - * for windowed apps. Closing the console window will terminate the - * app. Thanks to David.Geldreich@realviz.com for supplying the magical - * incantation. */ - - AllocConsole(); - freopen("CONOUT$", "a", stderr); - freopen("CONOUT$", "a", stdout); -#endif - - /* Set the default value for our display-system exponent, i.e., the - * product of the CRT exponent and the exponent corresponding to - * the frame-buffer's lookup table (LUT), if any. This is not an - * exhaustive list of LUT values (e.g., OpenStep has a lot of weird - * ones), but it should cover 99% of the current possibilities. And - * yes, these ifdefs are completely wasted in a Windows program... */ - -#if defined(NeXT) - /* third-party utilities can modify the default LUT exponent */ - LUT_exponent = 1.0 / 2.2; - /* - if (some_next_function_that_returns_gamma(&next_gamma)) - LUT_exponent = 1.0 / next_gamma; - */ -#elif defined(sgi) - LUT_exponent = 1.0 / 1.7; - /* there doesn't seem to be any documented function to - * get the "gamma" value, so we do it the hard way */ - infile = fopen("/etc/config/system.glGammaVal", "r"); - if (infile) { - double sgi_gamma; - - fgets(tmpline, 80, infile); - fclose(infile); - sgi_gamma = atof(tmpline); - if (sgi_gamma > 0.0) - LUT_exponent = 1.0 / sgi_gamma; - } -#elif defined(Macintosh) - LUT_exponent = 1.8 / 2.61; - /* - if (some_mac_function_that_returns_gamma(&mac_gamma)) - LUT_exponent = mac_gamma / 2.61; - */ -#else - LUT_exponent = 1.0; /* assume no LUT: most PCs */ -#endif - - /* the defaults above give 1.0, 1.3, 1.5 and 2.2, respectively: */ - default_display_exponent = LUT_exponent * CRT_exponent; - - - /* If the user has set the SCREEN_GAMMA environment variable as suggested - * (somewhat imprecisely) in the libpng documentation, use that; otherwise - * use the default value we just calculated. Either way, the user may - * override this via a command-line option. */ - - if ((p = getenv("SCREEN_GAMMA")) != NULL) - rpng2_info.display_exponent = atof(p); - else - rpng2_info.display_exponent = default_display_exponent; - - - /* Windows really hates command lines, so we have to set up our own argv. - * Note that we do NOT bother with quoted arguments here, so don't use - * filenames with spaces in 'em! */ - - argv[argc++] = PROGNAME; - p = cmd; - for (;;) { - if (*p == ' ') - while (*++p == ' ') - ; - /* now p points at the first non-space after some spaces */ - if (*p == '\0') - break; /* nothing after the spaces: done */ - argv[argc++] = q = p; - while (*q && *q != ' ') - ++q; - /* now q points at a space or the end of the string */ - if (*q == '\0') - break; /* last argv already terminated; quit */ - *q = '\0'; /* change space to terminator */ - p = q + 1; - } - argv[argc] = NULL; /* terminate the argv array itself */ - - - /* Now parse the command line for options and the PNG filename. */ - - while (*++argv && !error) { - if (!strncmp(*argv, "-gamma", 2)) { - if (!*++argv) - ++error; - else { - rpng2_info.display_exponent = atof(*argv); - if (rpng2_info.display_exponent <= 0.0) - ++error; - } - } else if (!strncmp(*argv, "-bgcolor", 4)) { - if (!*++argv) - ++error; - else { - bgstr = *argv; - if (strlen(bgstr) != 7 || bgstr[0] != '#') - ++error; - else { - have_bg = TRUE; - bg_image = FALSE; - } - } - } else if (!strncmp(*argv, "-bgpat", 4)) { - if (!*++argv) - ++error; - else { - pat = atoi(*argv) - 1; - if (pat < 0 || pat >= num_bgpat) - ++error; - else { - bg_image = TRUE; - have_bg = FALSE; - } - } - } else if (!strncmp(*argv, "-timing", 2)) { - timing = TRUE; - } else { - if (**argv != '-') { - filename = *argv; - if (argv[1]) /* shouldn't be any more args after filename */ - ++error; - } else - ++error; /* not expecting any other options */ - } - } - - if (!filename) - ++error; - - - /* print usage screen if any errors up to this point */ - - if (error) { -#ifndef __CYGWIN__ - int ch; -#endif - - fprintf(stderr, "\n%s %s: %s\n\n", PROGNAME, VERSION, appname); - readpng2_version_info(); - fprintf(stderr, "\n" - "Usage: %s [-gamma exp] [-bgcolor bg | -bgpat pat] [-timing]\n" - " %*s file.png\n\n" - " exp \ttransfer-function exponent (``gamma'') of the display\n" - "\t\t system in floating-point format (e.g., ``%.1f''); equal\n" - "\t\t to the product of the lookup-table exponent (varies)\n" - "\t\t and the CRT exponent (usually 2.2); must be positive\n" - " bg \tdesired background color in 7-character hex RGB format\n" - "\t\t (e.g., ``#ff7700'' for orange: same as HTML colors);\n" - "\t\t used with transparent images; overrides -bgpat option\n" - " pat \tdesired background pattern number (1-%d); used with\n" - "\t\t transparent images; overrides -bgcolor option\n" - " -timing\tenables delay for every block read, to simulate modem\n" - "\t\t download of image (~36 Kbps)\n" - "\nPress Q, Esc or mouse button 1 after image is displayed to quit.\n" -#ifndef __CYGWIN__ - "Press Q or Esc to quit this usage screen. ", -#else - , -#endif - PROGNAME, -#if (defined(__i386__) || defined(_M_IX86) || defined(__x86_64__)) && \ - !(defined(__CYGWIN__) || defined(__MINGW32__)) - (int)strlen(PROGNAME), " ", -#endif - (int)strlen(PROGNAME), " ", default_display_exponent, num_bgpat); - fflush(stderr); -#ifndef __CYGWIN__ - do - ch = _getch(); - while (ch != 'q' && ch != 'Q' && ch != 0x1B); -#endif - exit(1); - } - - - if (!(infile = fopen(filename, "rb"))) { - fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename); - ++error; - } else { - incount = fread(inbuf, 1, INBUFSIZE, infile); - if (incount < 8 || !readpng2_check_sig(inbuf, 8)) { - fprintf(stderr, PROGNAME - ": [%s] is not a PNG file: incorrect signature\n", - filename); - ++error; - } else if ((rc = readpng2_init(&rpng2_info)) != 0) { - switch (rc) { - case 2: - fprintf(stderr, PROGNAME - ": [%s] has bad IHDR (libpng longjmp)\n", filename); - break; - case 4: - fprintf(stderr, PROGNAME ": insufficient memory\n"); - break; - default: - fprintf(stderr, PROGNAME - ": unknown readpng2_init() error\n"); - break; - } - ++error; - } - if (error) - fclose(infile); - } - - - if (error) { -#ifndef __CYGWIN__ - int ch; -#endif - - fprintf(stderr, PROGNAME ": aborting.\n"); -#ifndef __CYGWIN__ - do - ch = _getch(); - while (ch != 'q' && ch != 'Q' && ch != 0x1B); -#endif - exit(2); - } else { - fprintf(stderr, "\n%s %s: %s\n", PROGNAME, VERSION, appname); -#ifndef __CYGWIN__ - fprintf(stderr, - "\n [console window: closing this window will terminate %s]\n\n", - PROGNAME); -#endif - fflush(stderr); - } - - - /* set the title-bar string, but make sure buffer doesn't overflow */ - - alen = strlen(appname); - flen = strlen(filename); - if (alen + flen + 3 > 1023) - sprintf(titlebar, "%s: ...%s", appname, filename+(alen+flen+6-1023)); - else - sprintf(titlebar, "%s: %s", appname, filename); - - - /* set some final rpng2_info variables before entering main data loop */ - - if (have_bg) { - unsigned r, g, b; /* this approach quiets compiler warnings */ - - sscanf(bgstr+1, "%2x%2x%2x", &r, &g, &b); - rpng2_info.bg_red = (uch)r; - rpng2_info.bg_green = (uch)g; - rpng2_info.bg_blue = (uch)b; - } else - rpng2_info.need_bgcolor = TRUE; - - rpng2_info.state = kPreInit; - rpng2_info.mainprog_init = rpng2_win_init; - rpng2_info.mainprog_display_row = rpng2_win_display_row; - rpng2_info.mainprog_finish_display = rpng2_win_finish_display; - - - /* OK, this is the fun part: call readpng2_decode_data() at the start of - * the loop to deal with our first buffer of data (read in above to verify - * that the file is a PNG image), then loop through the file and continue - * calling the same routine to handle each chunk of data. It in turn - * passes the data to libpng, which will invoke one or more of our call- - * backs as decoded data become available. We optionally call Sleep() for - * one second per iteration to simulate downloading the image via an analog - * modem. */ - - for (;;) { - Trace((stderr, "about to call readpng2_decode_data()\n")) - if (readpng2_decode_data(&rpng2_info, inbuf, incount)) - ++error; - Trace((stderr, "done with readpng2_decode_data()\n")) - - if (error || incount != INBUFSIZE || rpng2_info.state == kDone) { - if (rpng2_info.state == kDone) { - Trace((stderr, "done decoding PNG image\n")) - } else if (ferror(infile)) { - fprintf(stderr, PROGNAME - ": error while reading PNG image file\n"); - exit(3); - } else if (feof(infile)) { - fprintf(stderr, PROGNAME ": end of file reached " - "(unexpectedly) while reading PNG image file\n"); - exit(3); - } else /* if (error) */ { - /* will print error message below */ - } - break; - } - - if (timing) - Sleep(1000L); - - incount = fread(inbuf, 1, INBUFSIZE, infile); - } - - - /* clean up PNG stuff and report any decoding errors */ - - fclose(infile); - Trace((stderr, "about to call readpng2_cleanup()\n")) - readpng2_cleanup(&rpng2_info); - - if (error) { - fprintf(stderr, PROGNAME ": libpng error while decoding PNG image\n"); - exit(3); - } - - - /* wait for the user to tell us when to quit */ - - while (GetMessage(&msg, NULL, 0, 0)) { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - - - /* we're done: clean up all image and Windows resources and go away */ - - Trace((stderr, "about to call rpng2_win_cleanup()\n")) - rpng2_win_cleanup(); - - return msg.wParam; -} - - - - - -/* this function is called by readpng2_info_callback() in readpng2.c, which - * in turn is called by libpng after all of the pre-IDAT chunks have been - * read and processed--i.e., we now have enough info to finish initializing */ - -static void rpng2_win_init() -{ - ulg i; - ulg rowbytes = rpng2_info.rowbytes; - - Trace((stderr, "beginning rpng2_win_init()\n")) - Trace((stderr, " rowbytes = %d\n", rpng2_info.rowbytes)) - Trace((stderr, " width = %ld\n", rpng2_info.width)) - Trace((stderr, " height = %ld\n", rpng2_info.height)) - - rpng2_info.image_data = (uch *)malloc(rowbytes * rpng2_info.height); - if (!rpng2_info.image_data) { - readpng2_cleanup(&rpng2_info); - return; - } - - rpng2_info.row_pointers = (uch **)malloc(rpng2_info.height * sizeof(uch *)); - if (!rpng2_info.row_pointers) { - free(rpng2_info.image_data); - rpng2_info.image_data = NULL; - readpng2_cleanup(&rpng2_info); - return; - } - - for (i = 0; i < rpng2_info.height; ++i) - rpng2_info.row_pointers[i] = rpng2_info.image_data + i*rowbytes; - -/*--------------------------------------------------------------------------- - Do the basic Windows initialization stuff, make the window, and fill it - with the user-specified, file-specified or default background color. - ---------------------------------------------------------------------------*/ - - if (rpng2_win_create_window()) { - readpng2_cleanup(&rpng2_info); - return; - } - - rpng2_info.state = kWindowInit; -} - - - - - -static int rpng2_win_create_window() -{ - uch bg_red = rpng2_info.bg_red; - uch bg_green = rpng2_info.bg_green; - uch bg_blue = rpng2_info.bg_blue; - uch *dest; - int extra_width, extra_height; - ulg i, j; - WNDCLASSEX wndclass; - RECT rect; - - -/*--------------------------------------------------------------------------- - Allocate memory for the display-specific version of the image (round up - to multiple of 4 for Windows DIB). - ---------------------------------------------------------------------------*/ - - wimage_rowbytes = ((3*rpng2_info.width + 3L) >> 2) << 2; - - if (!(dib = (uch *)malloc(sizeof(BITMAPINFOHEADER) + - wimage_rowbytes*rpng2_info.height))) - { - return 4; /* fail */ - } - -/*--------------------------------------------------------------------------- - Initialize the DIB. Negative height means to use top-down BMP ordering - (must be uncompressed, but that's what we want). Bit count of 1, 4 or 8 - implies a colormap of RGBX quads, but 24-bit BMPs just use B,G,R values - directly => wimage_data begins immediately after BMP header. - ---------------------------------------------------------------------------*/ - - memset(dib, 0, sizeof(BITMAPINFOHEADER)); - bmih = (BITMAPINFOHEADER *)dib; - bmih->biSize = sizeof(BITMAPINFOHEADER); - bmih->biWidth = rpng2_info.width; - bmih->biHeight = -((long)rpng2_info.height); - bmih->biPlanes = 1; - bmih->biBitCount = 24; - bmih->biCompression = 0; - wimage_data = dib + sizeof(BITMAPINFOHEADER); - -/*--------------------------------------------------------------------------- - Fill window with the specified background color (default is black), but - defer loading faked "background image" until window is displayed (may be - slow to compute). Data are in BGR order. - ---------------------------------------------------------------------------*/ - - if (bg_image) { /* just fill with black for now */ - memset(wimage_data, 0, wimage_rowbytes*rpng2_info.height); - } else { - for (j = 0; j < rpng2_info.height; ++j) { - dest = wimage_data + j*wimage_rowbytes; - for (i = rpng2_info.width; i > 0; --i) { - *dest++ = bg_blue; - *dest++ = bg_green; - *dest++ = bg_red; - } - } - } - -/*--------------------------------------------------------------------------- - Set the window parameters. - ---------------------------------------------------------------------------*/ - - memset(&wndclass, 0, sizeof(wndclass)); - - wndclass.cbSize = sizeof(wndclass); - wndclass.style = CS_HREDRAW | CS_VREDRAW; - wndclass.lpfnWndProc = rpng2_win_wndproc; - wndclass.hInstance = global_hInst; - wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); - wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); - wndclass.hbrBackground = (HBRUSH)GetStockObject(DKGRAY_BRUSH); - wndclass.lpszMenuName = NULL; - wndclass.lpszClassName = progname; - wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); - - RegisterClassEx(&wndclass); - -/*--------------------------------------------------------------------------- - Finally, create the window. - ---------------------------------------------------------------------------*/ - - extra_width = 2*(GetSystemMetrics(SM_CXBORDER) + - GetSystemMetrics(SM_CXDLGFRAME)); - extra_height = 2*(GetSystemMetrics(SM_CYBORDER) + - GetSystemMetrics(SM_CYDLGFRAME)) + - GetSystemMetrics(SM_CYCAPTION); - - global_hwnd = CreateWindow(progname, titlebar, WS_OVERLAPPEDWINDOW, - CW_USEDEFAULT, CW_USEDEFAULT, rpng2_info.width+extra_width, - rpng2_info.height+extra_height, NULL, NULL, global_hInst, NULL); - - ShowWindow(global_hwnd, global_showmode); - UpdateWindow(global_hwnd); - -/*--------------------------------------------------------------------------- - Now compute the background image and display it. If it fails (memory - allocation), revert to a plain background color. - ---------------------------------------------------------------------------*/ - - if (bg_image) { - static const char *msg = "Computing background image..."; - int x, y, len = strlen(msg); - HDC hdc = GetDC(global_hwnd); - TEXTMETRIC tm; - - GetTextMetrics(hdc, &tm); - x = (rpng2_info.width - len*tm.tmAveCharWidth)/2; - y = (rpng2_info.height - tm.tmHeight)/2; - SetBkMode(hdc, TRANSPARENT); - SetTextColor(hdc, GetSysColor(COLOR_HIGHLIGHTTEXT)); - /* this can still begin out of bounds even if x is positive (???): */ - TextOut(hdc, ((x < 0)? 0 : x), ((y < 0)? 0 : y), msg, len); - ReleaseDC(global_hwnd, hdc); - - rpng2_win_load_bg_image(); /* resets bg_image if fails */ - } - - if (!bg_image) { - for (j = 0; j < rpng2_info.height; ++j) { - dest = wimage_data + j*wimage_rowbytes; - for (i = rpng2_info.width; i > 0; --i) { - *dest++ = bg_blue; - *dest++ = bg_green; - *dest++ = bg_red; - } - } - } - - rect.left = 0L; - rect.top = 0L; - rect.right = (LONG)rpng2_info.width; /* possibly off by one? */ - rect.bottom = (LONG)rpng2_info.height; /* possibly off by one? */ - InvalidateRect(global_hwnd, &rect, FALSE); - UpdateWindow(global_hwnd); /* similar to XFlush() */ - - return 0; - -} /* end function rpng2_win_create_window() */ - - - - - -static int rpng2_win_load_bg_image() -{ - uch *src, *dest; - uch r1, r2, g1, g2, b1, b2; - uch r1_inv, r2_inv, g1_inv, g2_inv, b1_inv, b2_inv; - int k, hmax, max; - int xidx, yidx, yidx_max = (bgscale-1); - int even_odd_vert, even_odd_horiz, even_odd; - int invert_gradient2 = (bg[pat].type & 0x08); - int invert_column; - ulg i, row; - -/*--------------------------------------------------------------------------- - Allocate buffer for fake background image to be used with transparent - images; if this fails, revert to plain background color. - ---------------------------------------------------------------------------*/ - - bg_rowbytes = 3 * rpng2_info.width; - bg_data = (uch *)malloc(bg_rowbytes * rpng2_info.height); - if (!bg_data) { - fprintf(stderr, PROGNAME - ": unable to allocate memory for background image\n"); - bg_image = 0; - return 1; - } - -/*--------------------------------------------------------------------------- - Vertical gradients (ramps) in NxN squares, alternating direction and - colors (N == bgscale). - ---------------------------------------------------------------------------*/ - - if ((bg[pat].type & 0x07) == 0) { - uch r1_min = rgb[bg[pat].rgb1_min].r; - uch g1_min = rgb[bg[pat].rgb1_min].g; - uch b1_min = rgb[bg[pat].rgb1_min].b; - uch r2_min = rgb[bg[pat].rgb2_min].r; - uch g2_min = rgb[bg[pat].rgb2_min].g; - uch b2_min = rgb[bg[pat].rgb2_min].b; - int r1_diff = rgb[bg[pat].rgb1_max].r - r1_min; - int g1_diff = rgb[bg[pat].rgb1_max].g - g1_min; - int b1_diff = rgb[bg[pat].rgb1_max].b - b1_min; - int r2_diff = rgb[bg[pat].rgb2_max].r - r2_min; - int g2_diff = rgb[bg[pat].rgb2_max].g - g2_min; - int b2_diff = rgb[bg[pat].rgb2_max].b - b2_min; - - for (row = 0; row < rpng2_info.height; ++row) { - yidx = row % bgscale; - even_odd_vert = (row / bgscale) & 1; - - r1 = r1_min + (r1_diff * yidx) / yidx_max; - g1 = g1_min + (g1_diff * yidx) / yidx_max; - b1 = b1_min + (b1_diff * yidx) / yidx_max; - r1_inv = r1_min + (r1_diff * (yidx_max-yidx)) / yidx_max; - g1_inv = g1_min + (g1_diff * (yidx_max-yidx)) / yidx_max; - b1_inv = b1_min + (b1_diff * (yidx_max-yidx)) / yidx_max; - - r2 = r2_min + (r2_diff * yidx) / yidx_max; - g2 = g2_min + (g2_diff * yidx) / yidx_max; - b2 = b2_min + (b2_diff * yidx) / yidx_max; - r2_inv = r2_min + (r2_diff * (yidx_max-yidx)) / yidx_max; - g2_inv = g2_min + (g2_diff * (yidx_max-yidx)) / yidx_max; - b2_inv = b2_min + (b2_diff * (yidx_max-yidx)) / yidx_max; - - dest = bg_data + row*bg_rowbytes; - for (i = 0; i < rpng2_info.width; ++i) { - even_odd_horiz = (i / bgscale) & 1; - even_odd = even_odd_vert ^ even_odd_horiz; - invert_column = - (even_odd_horiz && (bg[pat].type & 0x10)); - if (even_odd == 0) { /* gradient #1 */ - if (invert_column) { - *dest++ = r1_inv; - *dest++ = g1_inv; - *dest++ = b1_inv; - } else { - *dest++ = r1; - *dest++ = g1; - *dest++ = b1; - } - } else { /* gradient #2 */ - if ((invert_column && invert_gradient2) || - (!invert_column && !invert_gradient2)) - { - *dest++ = r2; /* not inverted or */ - *dest++ = g2; /* doubly inverted */ - *dest++ = b2; - } else { - *dest++ = r2_inv; - *dest++ = g2_inv; /* singly inverted */ - *dest++ = b2_inv; - } - } - } - } - -/*--------------------------------------------------------------------------- - Soft gradient-diamonds with scale = bgscale. Code contributed by Adam - M. Costello. - ---------------------------------------------------------------------------*/ - - } else if ((bg[pat].type & 0x07) == 1) { - - hmax = (bgscale-1)/2; /* half the max weight of a color */ - max = 2*hmax; /* the max weight of a color */ - - r1 = rgb[bg[pat].rgb1_max].r; - g1 = rgb[bg[pat].rgb1_max].g; - b1 = rgb[bg[pat].rgb1_max].b; - r2 = rgb[bg[pat].rgb2_max].r; - g2 = rgb[bg[pat].rgb2_max].g; - b2 = rgb[bg[pat].rgb2_max].b; - - for (row = 0; row < rpng2_info.height; ++row) { - yidx = row % bgscale; - if (yidx > hmax) - yidx = bgscale-1 - yidx; - dest = bg_data + row*bg_rowbytes; - for (i = 0; i < rpng2_info.width; ++i) { - xidx = i % bgscale; - if (xidx > hmax) - xidx = bgscale-1 - xidx; - k = xidx + yidx; - *dest++ = (k*r1 + (max-k)*r2) / max; - *dest++ = (k*g1 + (max-k)*g2) / max; - *dest++ = (k*b1 + (max-k)*b2) / max; - } - } - -/*--------------------------------------------------------------------------- - Radial "starburst" with azimuthal sinusoids; [eventually number of sinu- - soids will equal bgscale?]. This one is slow but very cool. Code con- - tributed by Pieter S. van der Meulen (originally in Smalltalk). - ---------------------------------------------------------------------------*/ - - } else if ((bg[pat].type & 0x07) == 2) { - uch ch; - int ii, x, y, hw, hh, grayspot; - double freq, rotate, saturate, gray, intensity; - double angle=0.0, aoffset=0.0, maxDist, dist; - double red=0.0, green=0.0, blue=0.0, hue, s, v, f, p, q, t; - - fprintf(stderr, "%s: computing radial background...", - PROGNAME); - fflush(stderr); - - hh = rpng2_info.height / 2; - hw = rpng2_info.width / 2; - - /* variables for radial waves: - * aoffset: number of degrees to rotate hue [CURRENTLY NOT USED] - * freq: number of color beams originating from the center - * grayspot: size of the graying center area (anti-alias) - * rotate: rotation of the beams as a function of radius - * saturate: saturation of beams' shape azimuthally - */ - angle = CLIP(angle, 0.0, 360.0); - grayspot = CLIP(bg[pat].bg_gray, 1, (hh + hw)); - freq = MAX((double)bg[pat].bg_freq, 0.0); - saturate = (double)bg[pat].bg_bsat * 0.1; - rotate = (double)bg[pat].bg_brot * 0.1; - gray = 0.0; - intensity = 0.0; - maxDist = (double)((hw*hw) + (hh*hh)); - - for (row = 0; row < rpng2_info.height; ++row) { - y = row - hh; - dest = bg_data + row*bg_rowbytes; - for (i = 0; i < rpng2_info.width; ++i) { - x = i - hw; - angle = (x == 0)? PI_2 : atan((double)y / (double)x); - gray = (double)MAX(ABS(y), ABS(x)) / grayspot; - gray = MIN(1.0, gray); - dist = (double)((x*x) + (y*y)) / maxDist; - intensity = cos((angle+(rotate*dist*PI)) * freq) * - gray * saturate; - intensity = (MAX(MIN(intensity,1.0),-1.0) + 1.0) * 0.5; - hue = (angle + PI) * INV_PI_360 + aoffset; - s = gray * ((double)(ABS(x)+ABS(y)) / (double)(hw + hh)); - s = MIN(MAX(s,0.0), 1.0); - v = MIN(MAX(intensity,0.0), 1.0); - - if (s == 0.0) { - ch = (uch)(v * 255.0); - *dest++ = ch; - *dest++ = ch; - *dest++ = ch; - } else { - if ((hue < 0.0) || (hue >= 360.0)) - hue -= (((int)(hue / 360.0)) * 360.0); - hue /= 60.0; - ii = (int)hue; - f = hue - (double)ii; - p = (1.0 - s) * v; - q = (1.0 - (s * f)) * v; - t = (1.0 - (s * (1.0 - f))) * v; - if (ii == 0) { red = v; green = t; blue = p; } - else if (ii == 1) { red = q; green = v; blue = p; } - else if (ii == 2) { red = p; green = v; blue = t; } - else if (ii == 3) { red = p; green = q; blue = v; } - else if (ii == 4) { red = t; green = p; blue = v; } - else if (ii == 5) { red = v; green = p; blue = q; } - *dest++ = (uch)(red * 255.0); - *dest++ = (uch)(green * 255.0); - *dest++ = (uch)(blue * 255.0); - } - } - } - fprintf(stderr, "done.\n"); - fflush(stderr); - } - -/*--------------------------------------------------------------------------- - Blast background image to display buffer before beginning PNG decode; - calling function will handle invalidation and UpdateWindow() call. - ---------------------------------------------------------------------------*/ - - for (row = 0; row < rpng2_info.height; ++row) { - src = bg_data + row*bg_rowbytes; - dest = wimage_data + row*wimage_rowbytes; - for (i = rpng2_info.width; i > 0; --i) { - r1 = *src++; - g1 = *src++; - b1 = *src++; - *dest++ = b1; - *dest++ = g1; /* note reverse order */ - *dest++ = r1; - } - } - - return 0; - -} /* end function rpng2_win_load_bg_image() */ - - - - - -static void rpng2_win_display_row(ulg row) -{ - uch bg_red = rpng2_info.bg_red; - uch bg_green = rpng2_info.bg_green; - uch bg_blue = rpng2_info.bg_blue; - uch *src, *src2=NULL, *dest; - uch r, g, b, a; - ulg i; - static int rows=0; - static ulg firstrow; - -/*--------------------------------------------------------------------------- - rows and firstrow simply track how many rows (and which ones) have not - yet been displayed; alternatively, we could call InvalidateRect() for - every row and not bother with the records-keeping. - ---------------------------------------------------------------------------*/ - - Trace((stderr, "beginning rpng2_win_display_row()\n")) - - if (rows == 0) - firstrow = row; /* first row not yet displayed */ - - ++rows; /* count of rows received but not yet displayed */ - -/*--------------------------------------------------------------------------- - Aside from the use of the rpng2_info struct and the lack of an outer - loop (over rows), this routine is identical to rpng_win_display_image() - in the non-progressive version of the program. - ---------------------------------------------------------------------------*/ - - src = rpng2_info.image_data + row*rpng2_info.rowbytes; - if (bg_image) - src2 = bg_data + row*bg_rowbytes; - dest = wimage_data + row*wimage_rowbytes; - - if (rpng2_info.channels == 3) { - for (i = rpng2_info.width; i > 0; --i) { - r = *src++; - g = *src++; - b = *src++; - *dest++ = b; - *dest++ = g; /* note reverse order */ - *dest++ = r; - } - } else /* if (rpng2_info.channels == 4) */ { - for (i = rpng2_info.width; i > 0; --i) { - r = *src++; - g = *src++; - b = *src++; - a = *src++; - if (bg_image) { - bg_red = *src2++; - bg_green = *src2++; - bg_blue = *src2++; - } - if (a == 255) { - *dest++ = b; - *dest++ = g; - *dest++ = r; - } else if (a == 0) { - *dest++ = bg_blue; - *dest++ = bg_green; - *dest++ = bg_red; - } else { - /* this macro (copied from png.h) composites the - * foreground and background values and puts the - * result into the first argument; there are no - * side effects with the first argument */ - alpha_composite(*dest++, b, a, bg_blue); - alpha_composite(*dest++, g, a, bg_green); - alpha_composite(*dest++, r, a, bg_red); - } - } - } - -/*--------------------------------------------------------------------------- - Display after every 16 rows or when on last row. (Region may include - previously displayed lines due to interlacing--i.e., not contiguous.) - ---------------------------------------------------------------------------*/ - - if ((rows & 0xf) == 0 || row == rpng2_info.height-1) { - RECT rect; - - rect.left = 0L; - rect.top = (LONG)firstrow; - rect.right = (LONG)rpng2_info.width; /* possibly off by one? */ - rect.bottom = (LONG)row + 1L; /* possibly off by one? */ - InvalidateRect(global_hwnd, &rect, FALSE); - UpdateWindow(global_hwnd); /* similar to XFlush() */ - rows = 0; - } - -} /* end function rpng2_win_display_row() */ - - - - - -static void rpng2_win_finish_display() -{ - Trace((stderr, "beginning rpng2_win_finish_display()\n")) - - /* last row has already been displayed by rpng2_win_display_row(), so - * we have nothing to do here except set a flag and let the user know - * that the image is done */ - - rpng2_info.state = kDone; - printf( -#ifndef __CYGWIN__ - "Done. Press Q, Esc or mouse button 1 (within image window) to quit.\n" -#else - "Done. Press mouse button 1 (within image window) to quit.\n" -#endif - ); - fflush(stdout); -} - - - - - -static void rpng2_win_cleanup() -{ - if (bg_image && bg_data) { - free(bg_data); - bg_data = NULL; - } - - if (rpng2_info.image_data) { - free(rpng2_info.image_data); - rpng2_info.image_data = NULL; - } - - if (rpng2_info.row_pointers) { - free(rpng2_info.row_pointers); - rpng2_info.row_pointers = NULL; - } - - if (dib) { - free(dib); - dib = NULL; - } -} - - - - - -LRESULT CALLBACK rpng2_win_wndproc(HWND hwnd, UINT iMsg, WPARAM wP, LPARAM lP) -{ - HDC hdc; - PAINTSTRUCT ps; - int rc; - - switch (iMsg) { - case WM_CREATE: - /* one-time processing here, if any */ - return 0; - - case WM_PAINT: - hdc = BeginPaint(hwnd, &ps); - rc = StretchDIBits(hdc, 0, 0, rpng2_info.width, rpng2_info.height, - 0, 0, rpng2_info.width, rpng2_info.height, - wimage_data, (BITMAPINFO *)bmih, - 0, SRCCOPY); - EndPaint(hwnd, &ps); - return 0; - - /* wait for the user to tell us when to quit */ - case WM_CHAR: - switch (wP) { /* only need one, so ignore repeat count */ - case 'q': - case 'Q': - case 0x1B: /* Esc key */ - PostQuitMessage(0); - } - return 0; - - case WM_LBUTTONDOWN: /* another way of quitting */ - case WM_DESTROY: - PostQuitMessage(0); - return 0; - } - - return DefWindowProc(hwnd, iMsg, wP, lP); -} diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/rpng2-x.c b/io2d/src/3rd-party/libpng/contrib/gregbook/rpng2-x.c deleted file mode 100644 index 7f24b63..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/rpng2-x.c +++ /dev/null @@ -1,2107 +0,0 @@ -/*--------------------------------------------------------------------------- - - rpng2 - progressive-model PNG display program rpng2-x.c - - This program decodes and displays PNG files progressively, as if it were - a web browser (though the front end is only set up to read from files). - It supports gamma correction, user-specified background colors, and user- - specified background patterns (for transparent images). This version is - for the X Window System (tested by the author under Unix and by Martin - Zinser under OpenVMS; may work under OS/2 with a little tweaking). - - Thanks to Adam Costello and Pieter S. van der Meulen for the "diamond" - and "radial waves" patterns, respectively. - - to do (someday, maybe): - - fix expose/redraw code: don't draw entire row if only part exposed - - 8-bit (colormapped) X support - - finish resizable checkerboard-gradient (sizes 4-128?) - - use %.1023s to simplify truncation of title-bar string? - - --------------------------------------------------------------------------- - - Changelog: - - 1.01: initial public release - - 1.02: modified to allow abbreviated options; fixed char/uchar mismatch - - 1.10: added support for non-default visuals; fixed X pixel-conversion - - 1.11: added -usleep option for demos; fixed command-line parsing bug - - 1.12: added -pause option for demos and testing - - 1.20: added runtime MMX-enabling/disabling and new -mmx* options - - 1.21: fixed some small X memory leaks (thanks to François Petitjean) - - 1.22: fixed XFreeGC() crash bug (thanks to Patrick Welche) - - 1.23: added -bgpat 0 mode (std white/gray checkerboard, 8x8 squares) - - 1.30: added -loop option for -bgpat (ifdef FEATURE_LOOP); fixed bpp = - 24; added support for X resources (thanks to Gerhard Niklasch) - - 1.31: added code to skip unused chunks (thanks to Glenn Randers-Pehrson) - - 1.32: added AMD64/EM64T support (__x86_64__); added basic expose/redraw - handling - - 2.00: dual-licensed (added GNU GPL) - - 2.01: fixed 64-bit typo in readpng2.c; fixed -pause usage description - - 2.02: fixed improper display of usage screen on PNG error(s); fixed - unexpected-EOF and file-read-error cases; fixed Trace() cut-and- - paste bugs - - 2.03: deleted runtime MMX-enabling/disabling and obsolete -mmx* options - - --------------------------------------------------------------------------- - - Copyright (c) 1998-2008 Greg Roelofs. All rights reserved. - - This software is provided "as is," without warranty of any kind, - express or implied. In no event shall the author or contributors - be held liable for any damages arising in any way from the use of - this software. - - The contents of this file are DUAL-LICENSED. You may modify and/or - redistribute this software according to the terms of one of the - following two licenses (at your option): - - - LICENSE 1 ("BSD-like with advertising clause"): - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute - it freely, subject to the following restrictions: - - 1. Redistributions of source code must retain the above copyright - notice, disclaimer, and this list of conditions. - 2. Redistributions in binary form must reproduce the above copyright - notice, disclaimer, and this list of conditions in the documenta- - tion and/or other materials provided with the distribution. - 3. All advertising materials mentioning features or use of this - software must display the following acknowledgment: - - This product includes software developed by Greg Roelofs - and contributors for the book, "PNG: The Definitive Guide," - published by O'Reilly and Associates. - - - LICENSE 2 (GNU GPL v2 or later): - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - ---------------------------------------------------------------------------*/ - -#define PROGNAME "rpng2-x" -#define LONGNAME "Progressive PNG Viewer for X" -#define VERSION "2.03 of 25 February 2010" -#define RESNAME "rpng2" /* our X resource application name */ -#define RESCLASS "Rpng" /* our X resource class name */ - -#include -#include -#include -#include -#include /* for jmpbuf declaration in readpng2.h */ -#include -#include /* only for PvdM background code */ -#include -#include -#include -#include /* defines XK_* macros */ - -#ifdef VMS -# include -#endif - -/* all for PvdM background code: */ -#ifndef PI -# define PI 3.141592653589793238 -#endif -#define PI_2 (PI*0.5) -#define INV_PI_360 (360.0 / PI) -#define MAX(a,b) (a>b?a:b) -#define MIN(a,b) (a> 8)) >> 8); \ -} - - -#define INBUFSIZE 4096 /* with pseudo-timing on (1 sec delay/block), this - * block size corresponds roughly to a download - * speed 10% faster than theoretical 33.6K maximum - * (assuming 8 data bits, 1 stop bit and no other - * overhead) */ - -/* local prototypes */ -static void rpng2_x_init (void); -static int rpng2_x_create_window (void); -static int rpng2_x_load_bg_image (void); -static void rpng2_x_display_row (ulg row); -static void rpng2_x_finish_display (void); -static void rpng2_x_redisplay_image (ulg startcol, ulg startrow, - ulg width, ulg height); -#ifdef FEATURE_LOOP -static void rpng2_x_reload_bg_image (void); -static int is_number (char *p); -#endif -static void rpng2_x_cleanup (void); -static int rpng2_x_msb (ulg u32val); - - -static char titlebar[1024], *window_name = titlebar; -static char *appname = LONGNAME; -static char *icon_name = PROGNAME; -static char *res_name = RESNAME; -static char *res_class = RESCLASS; -static char *filename; -static FILE *infile; - -static mainprog_info rpng2_info; - -static uch inbuf[INBUFSIZE]; -static int incount; - -static int pat = 6; /* must be less than num_bgpat */ -static int bg_image = 0; -static int bgscale, bgscale_default = 16; -static ulg bg_rowbytes; -static uch *bg_data; - -int pause_after_pass = FALSE; -int demo_timing = FALSE; -ulg usleep_duration = 0L; - -static struct rgb_color { - uch r, g, b; -} rgb[] = { - { 0, 0, 0}, /* 0: black */ - {255, 255, 255}, /* 1: white */ - {173, 132, 57}, /* 2: tan */ - { 64, 132, 0}, /* 3: medium green */ - {189, 117, 1}, /* 4: gold */ - {253, 249, 1}, /* 5: yellow */ - { 0, 0, 255}, /* 6: blue */ - { 0, 0, 120}, /* 7: medium blue */ - {255, 0, 255}, /* 8: magenta */ - { 64, 0, 64}, /* 9: dark magenta */ - {255, 0, 0}, /* 10: red */ - { 64, 0, 0}, /* 11: dark red */ - {255, 127, 0}, /* 12: orange */ - {192, 96, 0}, /* 13: darker orange */ - { 24, 60, 0}, /* 14: dark green-yellow */ - { 85, 125, 200}, /* 15: ice blue */ - {192, 192, 192} /* 16: Netscape/Mosaic gray */ -}; -/* not used for now, but should be for error-checking: -static int num_rgb = sizeof(rgb) / sizeof(struct rgb_color); - */ - -/* - This whole struct is a fairly cheesy way to keep the number of - command-line options to a minimum. The radial-waves background - type is a particularly poor fit to the integer elements of the - struct...but a few macros and a little fixed-point math will do - wonders for ya. - - type bits: - F E D C B A 9 8 7 6 5 4 3 2 1 0 - | | | | | - | | +-+-+-- 0 = sharp-edged checkerboard - | | 1 = soft diamonds - | | 2 = radial waves - | | 3-7 = undefined - | +-- gradient #2 inverted? - +-- alternating columns inverted? - */ -static struct background_pattern { - ush type; - int rgb1_max, rgb1_min; /* or bg_freq, bg_gray */ - int rgb2_max, rgb2_min; /* or bg_bsat, bg_brot (both scaled by 10)*/ -} bg[] = { - {0, 1,1, 16,16}, /* checkered: white vs. light gray (basic) */ - {0+8, 2,0, 1,15}, /* checkered: tan/black vs. white/ice blue */ - {0+24, 2,0, 1,0}, /* checkered: tan/black vs. white/black */ - {0+8, 4,5, 0,2}, /* checkered: gold/yellow vs. black/tan */ - {0+8, 4,5, 0,6}, /* checkered: gold/yellow vs. black/blue */ - {0, 7,0, 8,9}, /* checkered: deep blue/black vs. magenta */ - {0+8, 13,0, 5,14}, /* checkered: orange/black vs. yellow */ - {0+8, 12,0, 10,11}, /* checkered: orange/black vs. red */ - {1, 7,0, 8,0}, /* diamonds: deep blue/black vs. magenta */ - {1, 12,0, 11,0}, /* diamonds: orange vs. dark red */ - {1, 10,0, 7,0}, /* diamonds: red vs. medium blue */ - {1, 4,0, 5,0}, /* diamonds: gold vs. yellow */ - {1, 3,0, 0,0}, /* diamonds: medium green vs. black */ - {2, 16, 100, 20, 0}, /* radial: ~hard radial color-beams */ - {2, 18, 100, 10, 2}, /* radial: soft, curved radial color-beams */ - {2, 16, 256, 100, 250}, /* radial: very tight spiral */ - {2, 10000, 256, 11, 0} /* radial: dipole-moire' (almost fractal) */ -}; -static int num_bgpat = sizeof(bg) / sizeof(struct background_pattern); - - -/* X-specific variables */ -static char *displayname; -static XImage *ximage; -static Display *display; -static int depth; -static Visual *visual; -static XVisualInfo *visual_list; -static int RShift, GShift, BShift; -static ulg RMask, GMask, BMask; -static Window window; -static GC gc; -static Colormap colormap; - -static int have_nondefault_visual = FALSE; -static int have_colormap = FALSE; -static int have_window = FALSE; -static int have_gc = FALSE; - - - - -int main(int argc, char **argv) -{ -#ifdef sgi - char tmpline[80]; -#endif - char *p, *bgstr = NULL; - int rc, alen, flen; - int error = 0; - int timing = FALSE; - int have_bg = FALSE; -#ifdef FEATURE_LOOP - int loop = FALSE; - long loop_interval = -1; /* seconds (100,000 max) */ -#endif - double LUT_exponent; /* just the lookup table */ - double CRT_exponent = 2.2; /* just the monitor */ - double default_display_exponent; /* whole display system */ - XEvent e; - KeySym k; - - - /* First initialize a few things, just to be sure--memset takes care of - * default background color (black), booleans (FALSE), pointers (NULL), - * etc. */ - - displayname = (char *)NULL; - filename = (char *)NULL; - memset(&rpng2_info, 0, sizeof(mainprog_info)); - - - /* Set the default value for our display-system exponent, i.e., the - * product of the CRT exponent and the exponent corresponding to - * the frame-buffer's lookup table (LUT), if any. This is not an - * exhaustive list of LUT values (e.g., OpenStep has a lot of weird - * ones), but it should cover 99% of the current possibilities. */ - -#if defined(NeXT) - /* third-party utilities can modify the default LUT exponent */ - LUT_exponent = 1.0 / 2.2; - /* - if (some_next_function_that_returns_gamma(&next_gamma)) - LUT_exponent = 1.0 / next_gamma; - */ -#elif defined(sgi) - LUT_exponent = 1.0 / 1.7; - /* there doesn't seem to be any documented function to - * get the "gamma" value, so we do it the hard way */ - infile = fopen("/etc/config/system.glGammaVal", "r"); - if (infile) { - double sgi_gamma; - - fgets(tmpline, 80, infile); - fclose(infile); - sgi_gamma = atof(tmpline); - if (sgi_gamma > 0.0) - LUT_exponent = 1.0 / sgi_gamma; - } -#elif defined(Macintosh) - LUT_exponent = 1.8 / 2.61; - /* - if (some_mac_function_that_returns_gamma(&mac_gamma)) - LUT_exponent = mac_gamma / 2.61; - */ -#else - LUT_exponent = 1.0; /* assume no LUT: most PCs */ -#endif - - /* the defaults above give 1.0, 1.3, 1.5 and 2.2, respectively: */ - default_display_exponent = LUT_exponent * CRT_exponent; - - - /* If the user has set the SCREEN_GAMMA environment variable as suggested - * (somewhat imprecisely) in the libpng documentation, use that; otherwise - * use the default value we just calculated. Either way, the user may - * override this via a command-line option. */ - - if ((p = getenv("SCREEN_GAMMA")) != NULL) - rpng2_info.display_exponent = atof(p); - else - rpng2_info.display_exponent = default_display_exponent; - - - /* Now parse the command line for options and the PNG filename. */ - - while (*++argv && !error) { - if (!strncmp(*argv, "-display", 2)) { - if (!*++argv) - ++error; - else - displayname = *argv; - } else if (!strncmp(*argv, "-gamma", 2)) { - if (!*++argv) - ++error; - else { - rpng2_info.display_exponent = atof(*argv); - if (rpng2_info.display_exponent <= 0.0) - ++error; - } - } else if (!strncmp(*argv, "-bgcolor", 4)) { - if (!*++argv) - ++error; - else { - bgstr = *argv; - if (strlen(bgstr) != 7 || bgstr[0] != '#') - ++error; - else { - have_bg = TRUE; - bg_image = FALSE; - } - } - } else if (!strncmp(*argv, "-bgpat", 4)) { - if (!*++argv) - ++error; - else { - pat = atoi(*argv); - if (pat >= 0 && pat < num_bgpat) { - bg_image = TRUE; - have_bg = FALSE; - } else - ++error; - } - } else if (!strncmp(*argv, "-usleep", 2)) { - if (!*++argv) - ++error; - else { - usleep_duration = (ulg)atol(*argv); - demo_timing = TRUE; - } - } else if (!strncmp(*argv, "-pause", 2)) { - pause_after_pass = TRUE; - } else if (!strncmp(*argv, "-timing", 2)) { - timing = TRUE; -#ifdef FEATURE_LOOP - } else if (!strncmp(*argv, "-loop", 2)) { - loop = TRUE; - if (!argv[1] || !is_number(argv[1])) - loop_interval = 2; - else { - ++argv; - loop_interval = atol(*argv); - if (loop_interval < 0) - loop_interval = 2; - else if (loop_interval > 100000) /* bit more than one day */ - loop_interval = 100000; - } -#endif - } else { - if (**argv != '-') { - filename = *argv; - if (argv[1]) /* shouldn't be any more args after filename */ - ++error; - } else - ++error; /* not expecting any other options */ - } - } - - if (!filename) - ++error; - - - /* print usage screen if any errors up to this point */ - - if (error) { - fprintf(stderr, "\n%s %s: %s\n\n", PROGNAME, VERSION, appname); - readpng2_version_info(); - fprintf(stderr, "\n" - "Usage: %s [-display xdpy] [-gamma exp] [-bgcolor bg | -bgpat pat]\n" -#ifdef FEATURE_LOOP - " %*s [-usleep dur | -timing] [-pause] [-loop [sec]] file.png\n\n" -#else - " %*s [-usleep dur | -timing] [-pause] file.png\n\n" -#endif - " xdpy\tname of the target X display (e.g., ``hostname:0'')\n" - " exp \ttransfer-function exponent (``gamma'') of the display\n" - "\t\t system in floating-point format (e.g., ``%.1f''); equal\n" - "\t\t to the product of the lookup-table exponent (varies)\n" - "\t\t and the CRT exponent (usually 2.2); must be positive\n" - " bg \tdesired background color in 7-character hex RGB format\n" - "\t\t (e.g., ``#ff7700'' for orange: same as HTML colors);\n" - "\t\t used with transparent images; overrides -bgpat\n" - " pat \tdesired background pattern number (0-%d); used with\n" - "\t\t transparent images; overrides -bgcolor\n" -#ifdef FEATURE_LOOP - " -loop\tloops through background images after initial display\n" - "\t\t is complete (depends on -bgpat)\n" - " sec \tseconds to display each background image (default = 2)\n" -#endif - " dur \tduration in microseconds to wait after displaying each\n" - "\t\t row (for demo purposes)\n" - " -timing\tenables delay for every block read, to simulate modem\n" - "\t\t download of image (~36 Kbps)\n" - " -pause\tpauses after displaying each pass until mouse clicked\n" - "\nPress Q, Esc or mouse button 1 (within image window, after image\n" - "is displayed) to quit.\n" - "\n", PROGNAME, - (int)strlen(PROGNAME), " ", default_display_exponent, num_bgpat-1); - exit(1); - } - - - if (!(infile = fopen(filename, "rb"))) { - fprintf(stderr, PROGNAME ": can't open PNG file [%s]\n", filename); - ++error; - } else { - incount = fread(inbuf, 1, INBUFSIZE, infile); - if (incount < 8 || !readpng2_check_sig(inbuf, 8)) { - fprintf(stderr, PROGNAME - ": [%s] is not a PNG file: incorrect signature\n", - filename); - ++error; - } else if ((rc = readpng2_init(&rpng2_info)) != 0) { - switch (rc) { - case 2: - fprintf(stderr, PROGNAME - ": [%s] has bad IHDR (libpng longjmp)\n", filename); - break; - case 4: - fprintf(stderr, PROGNAME ": insufficient memory\n"); - break; - default: - fprintf(stderr, PROGNAME - ": unknown readpng2_init() error\n"); - break; - } - ++error; - } else { - Trace((stderr, "about to call XOpenDisplay()\n")) - display = XOpenDisplay(displayname); - if (!display) { - readpng2_cleanup(&rpng2_info); - fprintf(stderr, PROGNAME ": can't open X display [%s]\n", - displayname? displayname : "default"); - ++error; - } - } - if (error) - fclose(infile); - } - - - if (error) { - fprintf(stderr, PROGNAME ": aborting.\n"); - exit(2); - } - - - /* set the title-bar string, but make sure buffer doesn't overflow */ - - alen = strlen(appname); - flen = strlen(filename); - if (alen + flen + 3 > 1023) - sprintf(titlebar, "%s: ...%s", appname, filename+(alen+flen+6-1023)); - else - sprintf(titlebar, "%s: %s", appname, filename); - - - /* set some final rpng2_info variables before entering main data loop */ - - if (have_bg) { - unsigned r, g, b; /* this approach quiets compiler warnings */ - - sscanf(bgstr+1, "%2x%2x%2x", &r, &g, &b); - rpng2_info.bg_red = (uch)r; - rpng2_info.bg_green = (uch)g; - rpng2_info.bg_blue = (uch)b; - } else - rpng2_info.need_bgcolor = TRUE; - - rpng2_info.state = kPreInit; - rpng2_info.mainprog_init = rpng2_x_init; - rpng2_info.mainprog_display_row = rpng2_x_display_row; - rpng2_info.mainprog_finish_display = rpng2_x_finish_display; - - - /* OK, this is the fun part: call readpng2_decode_data() at the start of - * the loop to deal with our first buffer of data (read in above to verify - * that the file is a PNG image), then loop through the file and continue - * calling the same routine to handle each chunk of data. It in turn - * passes the data to libpng, which will invoke one or more of our call- - * backs as decoded data become available. We optionally call sleep() for - * one second per iteration to simulate downloading the image via an analog - * modem. */ - - for (;;) { - Trace((stderr, "about to call readpng2_decode_data()\n")) - if (readpng2_decode_data(&rpng2_info, inbuf, incount)) - ++error; - Trace((stderr, "done with readpng2_decode_data()\n")) - - if (error || incount != INBUFSIZE || rpng2_info.state == kDone) { - if (rpng2_info.state == kDone) { - Trace((stderr, "done decoding PNG image\n")) - } else if (ferror(infile)) { - fprintf(stderr, PROGNAME - ": error while reading PNG image file\n"); - exit(3); - } else if (feof(infile)) { - fprintf(stderr, PROGNAME ": end of file reached " - "(unexpectedly) while reading PNG image file\n"); - exit(3); - } else /* if (error) */ { - /* will print error message below */ - } - break; - } - - if (timing) - sleep(1); - - incount = fread(inbuf, 1, INBUFSIZE, infile); - } - - - /* clean up PNG stuff and report any decoding errors */ - - fclose(infile); - Trace((stderr, "about to call readpng2_cleanup()\n")) - readpng2_cleanup(&rpng2_info); - - if (error) { - fprintf(stderr, PROGNAME ": libpng error while decoding PNG image\n"); - exit(3); - } - - -#ifdef FEATURE_LOOP - - if (loop && bg_image) { - Trace((stderr, "entering -loop loop (FEATURE_LOOP)\n")) - for (;;) { - int i, use_sleep; - struct timeval now, then; - - /* get current time and add loop_interval to get target time */ - if (gettimeofday(&then, NULL) == 0) { - then.tv_sec += loop_interval; - use_sleep = FALSE; - } else - use_sleep = TRUE; - - /* do quick check for a quit event but don't wait for it */ - /* GRR BUG: should also check for Expose events and redraw... */ - if (XCheckMaskEvent(display, KeyPressMask | ButtonPressMask, &e)) - if (QUIT(e,k)) - break; - - /* generate next background image */ - if (++pat >= num_bgpat) - pat = 0; - rpng2_x_reload_bg_image(); - - /* wait for timeout, using whatever means are available */ - if (use_sleep || gettimeofday(&now, NULL) != 0) { - for (i = loop_interval; i > 0; --i) { - sleep(1); - /* GRR BUG: also need to check for Expose (and redraw!) */ - if (XCheckMaskEvent(display, KeyPressMask | ButtonPressMask, - &e) && QUIT(e,k)) - break; - } - } else { - /* Y2038 BUG! */ - if (now.tv_sec < then.tv_sec || - (now.tv_sec == then.tv_sec && now.tv_usec < then.tv_usec)) - { - int quit = FALSE; - long seconds_to_go = then.tv_sec - now.tv_sec; - long usleep_usec; - - /* basically chew up most of remaining loop-interval with - * calls to sleep(1) interleaved with checks for quit - * events, but also recalc time-to-go periodically; when - * done, clean up any remaining time with usleep() call - * (could also use SIGALRM, but signals are a pain...) */ - while (seconds_to_go-- > 1) { - int seconds_done = 0; - - for (i = seconds_to_go; i > 0 && !quit; --i) { - sleep(1); - /* GRR BUG: need to check for Expose and redraw */ - if (XCheckMaskEvent(display, KeyPressMask | - ButtonPressMask, &e) && QUIT(e,k)) - quit = TRUE; - if (++seconds_done > 1000) - break; /* time to redo seconds_to_go meas. */ - } - if (quit) - break; - - /* OK, more than 1000 seconds since last check: - * correct the time-to-go measurement for drift */ - if (gettimeofday(&now, NULL) == 0) { - if (now.tv_sec >= then.tv_sec) - break; - seconds_to_go = then.tv_sec - now.tv_sec; - } else - ++seconds_to_go; /* restore what we subtracted */ - } - if (quit) - break; /* breaks outer do-loop, skips redisplay */ - - /* since difference between "now" and "then" is already - * eaten up to within a couple of seconds, don't need to - * worry about overflow--but might have overshot (neg.) */ - if (gettimeofday(&now, NULL) == 0) { - usleep_usec = 1000000L*(then.tv_sec - now.tv_sec) + - then.tv_usec - now.tv_usec; - if (usleep_usec > 0) - usleep((ulg)usleep_usec); - } - } - } - - /* composite image against new background and display (note that - * we do not take into account the time spent doing this...) */ - rpng2_x_redisplay_image (0, 0, rpng2_info.width, rpng2_info.height); - } - - } else /* FALL THROUGH and do the normal thing */ - -#endif /* FEATURE_LOOP */ - - /* wait for the user to tell us when to quit */ - - if (rpng2_info.state >= kWindowInit) { - Trace((stderr, "entering final wait-for-quit-event loop\n")) - do { - XNextEvent(display, &e); - if (e.type == Expose) { - XExposeEvent *ex = (XExposeEvent *)&e; - rpng2_x_redisplay_image (ex->x, ex->y, ex->width, ex->height); - } - } while (!QUIT(e,k)); - } else { - fprintf(stderr, PROGNAME ": init callback never called: probable " - "libpng error while decoding PNG metadata\n"); - exit(4); - } - - - /* we're done: clean up all image and X resources and go away */ - - Trace((stderr, "about to call rpng2_x_cleanup()\n")) - rpng2_x_cleanup(); - - return 0; -} - - - - - -/* this function is called by readpng2_info_callback() in readpng2.c, which - * in turn is called by libpng after all of the pre-IDAT chunks have been - * read and processed--i.e., we now have enough info to finish initializing */ - -static void rpng2_x_init(void) -{ - ulg i; - ulg rowbytes = rpng2_info.rowbytes; - - Trace((stderr, "beginning rpng2_x_init()\n")) - Trace((stderr, " rowbytes = %d\n", rpng2_info.rowbytes)) - Trace((stderr, " width = %ld\n", rpng2_info.width)) - Trace((stderr, " height = %ld\n", rpng2_info.height)) - - rpng2_info.image_data = (uch *)malloc(rowbytes * rpng2_info.height); - if (!rpng2_info.image_data) { - readpng2_cleanup(&rpng2_info); - return; - } - - rpng2_info.row_pointers = (uch **)malloc(rpng2_info.height * sizeof(uch *)); - if (!rpng2_info.row_pointers) { - free(rpng2_info.image_data); - rpng2_info.image_data = NULL; - readpng2_cleanup(&rpng2_info); - return; - } - - for (i = 0; i < rpng2_info.height; ++i) - rpng2_info.row_pointers[i] = rpng2_info.image_data + i*rowbytes; - - - /* do the basic X initialization stuff, make the window, and fill it with - * the user-specified, file-specified or default background color or - * pattern */ - - if (rpng2_x_create_window()) { - - /* GRR TEMPORARY HACK: this is fundamentally no different from cases - * above; libpng should call our error handler to longjmp() back to us - * when png_ptr goes away. If we/it segfault instead, seems like a - * libpng bug... */ - - /* we're here via libpng callback, so if window fails, clean and bail */ - readpng2_cleanup(&rpng2_info); - rpng2_x_cleanup(); - exit(2); - } - - rpng2_info.state = kWindowInit; -} - - - - - -static int rpng2_x_create_window(void) -{ - ulg bg_red = rpng2_info.bg_red; - ulg bg_green = rpng2_info.bg_green; - ulg bg_blue = rpng2_info.bg_blue; - ulg bg_pixel = 0L; - ulg attrmask; - int need_colormap = FALSE; - int screen, pad; - uch *xdata; - Window root; - XEvent e; - XGCValues gcvalues; - XSetWindowAttributes attr; - XTextProperty windowName, *pWindowName = &windowName; - XTextProperty iconName, *pIconName = &iconName; - XVisualInfo visual_info; - XSizeHints *size_hints; - XWMHints *wm_hints; - XClassHint *class_hints; - - - Trace((stderr, "beginning rpng2_x_create_window()\n")) - - screen = DefaultScreen(display); - depth = DisplayPlanes(display, screen); - root = RootWindow(display, screen); - -#ifdef DEBUG - XSynchronize(display, True); -#endif - - if (depth != 16 && depth != 24 && depth != 32) { - int visuals_matched = 0; - - Trace((stderr, "default depth is %d: checking other visuals\n", - depth)) - - /* 24-bit first */ - visual_info.screen = screen; - visual_info.depth = 24; - visual_list = XGetVisualInfo(display, - VisualScreenMask | VisualDepthMask, &visual_info, &visuals_matched); - if (visuals_matched == 0) { -/* GRR: add 15-, 16- and 32-bit TrueColor visuals (also DirectColor?) */ - fprintf(stderr, "default screen depth %d not supported, and no" - " 24-bit visuals found\n", depth); - return 2; - } - Trace((stderr, "XGetVisualInfo() returned %d 24-bit visuals\n", - visuals_matched)) - visual = visual_list[0].visual; - depth = visual_list[0].depth; -/* - colormap_size = visual_list[0].colormap_size; - visual_class = visual->class; - visualID = XVisualIDFromVisual(visual); - */ - have_nondefault_visual = TRUE; - need_colormap = TRUE; - } else { - XMatchVisualInfo(display, screen, depth, TrueColor, &visual_info); - visual = visual_info.visual; - } - - RMask = visual->red_mask; - GMask = visual->green_mask; - BMask = visual->blue_mask; - -/* GRR: add/check 8-bit support */ - if (depth == 8 || need_colormap) { - colormap = XCreateColormap(display, root, visual, AllocNone); - if (!colormap) { - fprintf(stderr, "XCreateColormap() failed\n"); - return 2; - } - have_colormap = TRUE; - if (depth == 8) - bg_image = FALSE; /* gradient just wastes palette entries */ - } - if (depth == 15 || depth == 16) { - RShift = 15 - rpng2_x_msb(RMask); /* these are right-shifts */ - GShift = 15 - rpng2_x_msb(GMask); - BShift = 15 - rpng2_x_msb(BMask); - } else if (depth > 16) { - RShift = rpng2_x_msb(RMask) - 7; /* these are left-shifts */ - GShift = rpng2_x_msb(GMask) - 7; - BShift = rpng2_x_msb(BMask) - 7; - } - if (depth >= 15 && (RShift < 0 || GShift < 0 || BShift < 0)) { - fprintf(stderr, "rpng2 internal logic error: negative X shift(s)!\n"); - return 2; - } - -/*--------------------------------------------------------------------------- - Finally, create the window. - ---------------------------------------------------------------------------*/ - - attr.backing_store = Always; - attr.event_mask = ExposureMask | KeyPressMask | ButtonPressMask; - attrmask = CWBackingStore | CWEventMask; - if (have_nondefault_visual) { - attr.colormap = colormap; - attr.background_pixel = 0; - attr.border_pixel = 1; - attrmask |= CWColormap | CWBackPixel | CWBorderPixel; - } - - window = XCreateWindow(display, root, 0, 0, rpng2_info.width, - rpng2_info.height, 0, depth, InputOutput, visual, attrmask, &attr); - - if (window == None) { - fprintf(stderr, "XCreateWindow() failed\n"); - return 2; - } else - have_window = TRUE; - - if (depth == 8) - XSetWindowColormap(display, window, colormap); - - if (!XStringListToTextProperty(&window_name, 1, pWindowName)) - pWindowName = NULL; - if (!XStringListToTextProperty(&icon_name, 1, pIconName)) - pIconName = NULL; - - /* OK if either hints allocation fails; XSetWMProperties() allows NULLs */ - - if ((size_hints = XAllocSizeHints()) != NULL) { - /* window will not be resizable */ - size_hints->flags = PMinSize | PMaxSize; - size_hints->min_width = size_hints->max_width = (int)rpng2_info.width; - size_hints->min_height = size_hints->max_height = - (int)rpng2_info.height; - } - - if ((wm_hints = XAllocWMHints()) != NULL) { - wm_hints->initial_state = NormalState; - wm_hints->input = True; - /* wm_hints->icon_pixmap = icon_pixmap; */ - wm_hints->flags = StateHint | InputHint /* | IconPixmapHint */ ; - } - - if ((class_hints = XAllocClassHint()) != NULL) { - class_hints->res_name = res_name; - class_hints->res_class = res_class; - } - - XSetWMProperties(display, window, pWindowName, pIconName, NULL, 0, - size_hints, wm_hints, class_hints); - - /* various properties and hints no longer needed; free memory */ - if (pWindowName) - XFree(pWindowName->value); - if (pIconName) - XFree(pIconName->value); - if (size_hints) - XFree(size_hints); - if (wm_hints) - XFree(wm_hints); - if (class_hints) - XFree(class_hints); - - XMapWindow(display, window); - - gc = XCreateGC(display, window, 0, &gcvalues); - have_gc = TRUE; - -/*--------------------------------------------------------------------------- - Allocate memory for the X- and display-specific version of the image. - ---------------------------------------------------------------------------*/ - - if (depth == 24 || depth == 32) { - xdata = (uch *)malloc(4*rpng2_info.width*rpng2_info.height); - pad = 32; - } else if (depth == 16) { - xdata = (uch *)malloc(2*rpng2_info.width*rpng2_info.height); - pad = 16; - } else /* depth == 8 */ { - xdata = (uch *)malloc(rpng2_info.width*rpng2_info.height); - pad = 8; - } - - if (!xdata) { - fprintf(stderr, PROGNAME ": unable to allocate image memory\n"); - return 4; - } - - ximage = XCreateImage(display, visual, depth, ZPixmap, 0, - (char *)xdata, rpng2_info.width, rpng2_info.height, pad, 0); - - if (!ximage) { - fprintf(stderr, PROGNAME ": XCreateImage() failed\n"); - free(xdata); - return 3; - } - - /* to avoid testing the byte order every pixel (or doubling the size of - * the drawing routine with a giant if-test), we arbitrarily set the byte - * order to MSBFirst and let Xlib worry about inverting things on little- - * endian machines (e.g., Linux/x86, old VAXen, etc.)--this is not the - * most efficient approach (the giant if-test would be better), but in - * the interest of clarity, we'll take the easy way out... */ - - ximage->byte_order = MSBFirst; - -/*--------------------------------------------------------------------------- - Fill window with the specified background color (default is black) or - faked "background image" (but latter is disabled if 8-bit; gradients - just waste palette entries). - ---------------------------------------------------------------------------*/ - - if (bg_image) - rpng2_x_load_bg_image(); /* resets bg_image if fails */ - - if (!bg_image) { - if (depth == 24 || depth == 32) { - bg_pixel = (bg_red << RShift) | - (bg_green << GShift) | - (bg_blue << BShift); - } else if (depth == 16) { - bg_pixel = (((bg_red << 8) >> RShift) & RMask) | - (((bg_green << 8) >> GShift) & GMask) | - (((bg_blue << 8) >> BShift) & BMask); - } else /* depth == 8 */ { - - /* GRR: add 8-bit support */ - - } - XSetForeground(display, gc, bg_pixel); - XFillRectangle(display, window, gc, 0, 0, rpng2_info.width, - rpng2_info.height); - } - -/*--------------------------------------------------------------------------- - Wait for first Expose event to do any drawing, then flush and return. - ---------------------------------------------------------------------------*/ - - do - XNextEvent(display, &e); - while (e.type != Expose || e.xexpose.count); - - XFlush(display); - - return 0; - -} /* end function rpng2_x_create_window() */ - - - - - -static int rpng2_x_load_bg_image(void) -{ - uch *src; - char *dest; - uch r1, r2, g1, g2, b1, b2; - uch r1_inv, r2_inv, g1_inv, g2_inv, b1_inv, b2_inv; - int k, hmax, max; - int xidx, yidx, yidx_max; - int even_odd_vert, even_odd_horiz, even_odd; - int invert_gradient2 = (bg[pat].type & 0x08); - int invert_column; - int ximage_rowbytes = ximage->bytes_per_line; - ulg i, row; - ulg pixel; - -/*--------------------------------------------------------------------------- - Allocate buffer for fake background image to be used with transparent - images; if this fails, revert to plain background color. - ---------------------------------------------------------------------------*/ - - bg_rowbytes = 3 * rpng2_info.width; - bg_data = (uch *)malloc(bg_rowbytes * rpng2_info.height); - if (!bg_data) { - fprintf(stderr, PROGNAME - ": unable to allocate memory for background image\n"); - bg_image = 0; - return 1; - } - - bgscale = (pat == 0)? 8 : bgscale_default; - yidx_max = bgscale - 1; - -/*--------------------------------------------------------------------------- - Vertical gradients (ramps) in NxN squares, alternating direction and - colors (N == bgscale). - ---------------------------------------------------------------------------*/ - - if ((bg[pat].type & 0x07) == 0) { - uch r1_min = rgb[bg[pat].rgb1_min].r; - uch g1_min = rgb[bg[pat].rgb1_min].g; - uch b1_min = rgb[bg[pat].rgb1_min].b; - uch r2_min = rgb[bg[pat].rgb2_min].r; - uch g2_min = rgb[bg[pat].rgb2_min].g; - uch b2_min = rgb[bg[pat].rgb2_min].b; - int r1_diff = rgb[bg[pat].rgb1_max].r - r1_min; - int g1_diff = rgb[bg[pat].rgb1_max].g - g1_min; - int b1_diff = rgb[bg[pat].rgb1_max].b - b1_min; - int r2_diff = rgb[bg[pat].rgb2_max].r - r2_min; - int g2_diff = rgb[bg[pat].rgb2_max].g - g2_min; - int b2_diff = rgb[bg[pat].rgb2_max].b - b2_min; - - for (row = 0; row < rpng2_info.height; ++row) { - yidx = (int)(row % bgscale); - even_odd_vert = (int)((row / bgscale) & 1); - - r1 = r1_min + (r1_diff * yidx) / yidx_max; - g1 = g1_min + (g1_diff * yidx) / yidx_max; - b1 = b1_min + (b1_diff * yidx) / yidx_max; - r1_inv = r1_min + (r1_diff * (yidx_max-yidx)) / yidx_max; - g1_inv = g1_min + (g1_diff * (yidx_max-yidx)) / yidx_max; - b1_inv = b1_min + (b1_diff * (yidx_max-yidx)) / yidx_max; - - r2 = r2_min + (r2_diff * yidx) / yidx_max; - g2 = g2_min + (g2_diff * yidx) / yidx_max; - b2 = b2_min + (b2_diff * yidx) / yidx_max; - r2_inv = r2_min + (r2_diff * (yidx_max-yidx)) / yidx_max; - g2_inv = g2_min + (g2_diff * (yidx_max-yidx)) / yidx_max; - b2_inv = b2_min + (b2_diff * (yidx_max-yidx)) / yidx_max; - - dest = (char *)bg_data + row*bg_rowbytes; - for (i = 0; i < rpng2_info.width; ++i) { - even_odd_horiz = (int)((i / bgscale) & 1); - even_odd = even_odd_vert ^ even_odd_horiz; - invert_column = - (even_odd_horiz && (bg[pat].type & 0x10)); - if (even_odd == 0) { /* gradient #1 */ - if (invert_column) { - *dest++ = r1_inv; - *dest++ = g1_inv; - *dest++ = b1_inv; - } else { - *dest++ = r1; - *dest++ = g1; - *dest++ = b1; - } - } else { /* gradient #2 */ - if ((invert_column && invert_gradient2) || - (!invert_column && !invert_gradient2)) - { - *dest++ = r2; /* not inverted or */ - *dest++ = g2; /* doubly inverted */ - *dest++ = b2; - } else { - *dest++ = r2_inv; - *dest++ = g2_inv; /* singly inverted */ - *dest++ = b2_inv; - } - } - } - } - -/*--------------------------------------------------------------------------- - Soft gradient-diamonds with scale = bgscale. Code contributed by Adam - M. Costello. - ---------------------------------------------------------------------------*/ - - } else if ((bg[pat].type & 0x07) == 1) { - - hmax = (bgscale-1)/2; /* half the max weight of a color */ - max = 2*hmax; /* the max weight of a color */ - - r1 = rgb[bg[pat].rgb1_max].r; - g1 = rgb[bg[pat].rgb1_max].g; - b1 = rgb[bg[pat].rgb1_max].b; - r2 = rgb[bg[pat].rgb2_max].r; - g2 = rgb[bg[pat].rgb2_max].g; - b2 = rgb[bg[pat].rgb2_max].b; - - for (row = 0; row < rpng2_info.height; ++row) { - yidx = (int)(row % bgscale); - if (yidx > hmax) - yidx = bgscale-1 - yidx; - dest = (char *)bg_data + row*bg_rowbytes; - for (i = 0; i < rpng2_info.width; ++i) { - xidx = (int)(i % bgscale); - if (xidx > hmax) - xidx = bgscale-1 - xidx; - k = xidx + yidx; - *dest++ = (k*r1 + (max-k)*r2) / max; - *dest++ = (k*g1 + (max-k)*g2) / max; - *dest++ = (k*b1 + (max-k)*b2) / max; - } - } - -/*--------------------------------------------------------------------------- - Radial "starburst" with azimuthal sinusoids; [eventually number of sinu- - soids will equal bgscale?]. This one is slow but very cool. Code con- - tributed by Pieter S. van der Meulen (originally in Smalltalk). - ---------------------------------------------------------------------------*/ - - } else if ((bg[pat].type & 0x07) == 2) { - uch ch; - int ii, x, y, hw, hh, grayspot; - double freq, rotate, saturate, gray, intensity; - double angle=0.0, aoffset=0.0, maxDist, dist; - double red=0.0, green=0.0, blue=0.0, hue, s, v, f, p, q, t; - - fprintf(stderr, "%s: computing radial background...", - PROGNAME); - fflush(stderr); - - hh = (int)(rpng2_info.height / 2); - hw = (int)(rpng2_info.width / 2); - - /* variables for radial waves: - * aoffset: number of degrees to rotate hue [CURRENTLY NOT USED] - * freq: number of color beams originating from the center - * grayspot: size of the graying center area (anti-alias) - * rotate: rotation of the beams as a function of radius - * saturate: saturation of beams' shape azimuthally - */ - angle = CLIP(angle, 0.0, 360.0); - grayspot = CLIP(bg[pat].bg_gray, 1, (hh + hw)); - freq = MAX((double)bg[pat].bg_freq, 0.0); - saturate = (double)bg[pat].bg_bsat * 0.1; - rotate = (double)bg[pat].bg_brot * 0.1; - gray = 0.0; - intensity = 0.0; - maxDist = (double)((hw*hw) + (hh*hh)); - - for (row = 0; row < rpng2_info.height; ++row) { - y = (int)(row - hh); - dest = (char *)bg_data + row*bg_rowbytes; - for (i = 0; i < rpng2_info.width; ++i) { - x = (int)(i - hw); - angle = (x == 0)? PI_2 : atan((double)y / (double)x); - gray = (double)MAX(ABS(y), ABS(x)) / grayspot; - gray = MIN(1.0, gray); - dist = (double)((x*x) + (y*y)) / maxDist; - intensity = cos((angle+(rotate*dist*PI)) * freq) * - gray * saturate; - intensity = (MAX(MIN(intensity,1.0),-1.0) + 1.0) * 0.5; - hue = (angle + PI) * INV_PI_360 + aoffset; - s = gray * ((double)(ABS(x)+ABS(y)) / (double)(hw + hh)); - s = MIN(MAX(s,0.0), 1.0); - v = MIN(MAX(intensity,0.0), 1.0); - - if (s == 0.0) { - ch = (uch)(v * 255.0); - *dest++ = ch; - *dest++ = ch; - *dest++ = ch; - } else { - if ((hue < 0.0) || (hue >= 360.0)) - hue -= (((int)(hue / 360.0)) * 360.0); - hue /= 60.0; - ii = (int)hue; - f = hue - (double)ii; - p = (1.0 - s) * v; - q = (1.0 - (s * f)) * v; - t = (1.0 - (s * (1.0 - f))) * v; - if (ii == 0) { red = v; green = t; blue = p; } - else if (ii == 1) { red = q; green = v; blue = p; } - else if (ii == 2) { red = p; green = v; blue = t; } - else if (ii == 3) { red = p; green = q; blue = v; } - else if (ii == 4) { red = t; green = p; blue = v; } - else if (ii == 5) { red = v; green = p; blue = q; } - *dest++ = (uch)(red * 255.0); - *dest++ = (uch)(green * 255.0); - *dest++ = (uch)(blue * 255.0); - } - } - } - fprintf(stderr, "done.\n"); - fflush(stderr); - } - -/*--------------------------------------------------------------------------- - Blast background image to display buffer before beginning PNG decode. - ---------------------------------------------------------------------------*/ - - if (depth == 24 || depth == 32) { - ulg red, green, blue; - int bpp = ximage->bits_per_pixel; - - for (row = 0; row < rpng2_info.height; ++row) { - src = bg_data + row*bg_rowbytes; - dest = ximage->data + row*ximage_rowbytes; - if (bpp == 32) { /* slightly optimized version */ - for (i = rpng2_info.width; i > 0; --i) { - red = *src++; - green = *src++; - blue = *src++; - pixel = (red << RShift) | - (green << GShift) | - (blue << BShift); - /* recall that we set ximage->byte_order = MSBFirst above */ - *dest++ = (char)((pixel >> 24) & 0xff); - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } - } else { - for (i = rpng2_info.width; i > 0; --i) { - red = *src++; - green = *src++; - blue = *src++; - pixel = (red << RShift) | - (green << GShift) | - (blue << BShift); - /* recall that we set ximage->byte_order = MSBFirst above */ - /* GRR BUG? this assumes bpp == 24 & bits are packed low */ - /* (probably need to use RShift, RMask, etc.) */ - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } - } - } - - } else if (depth == 16) { - ush red, green, blue; - - for (row = 0; row < rpng2_info.height; ++row) { - src = bg_data + row*bg_rowbytes; - dest = ximage->data + row*ximage_rowbytes; - for (i = rpng2_info.width; i > 0; --i) { - red = ((ush)(*src) << 8); ++src; - green = ((ush)(*src) << 8); ++src; - blue = ((ush)(*src) << 8); ++src; - pixel = ((red >> RShift) & RMask) | - ((green >> GShift) & GMask) | - ((blue >> BShift) & BMask); - /* recall that we set ximage->byte_order = MSBFirst above */ - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } - } - - } else /* depth == 8 */ { - - /* GRR: add 8-bit support */ - - } - - XPutImage(display, window, gc, ximage, 0, 0, 0, 0, rpng2_info.width, - rpng2_info.height); - - return 0; - -} /* end function rpng2_x_load_bg_image() */ - - - - - -static void rpng2_x_display_row(ulg row) -{ - uch bg_red = rpng2_info.bg_red; - uch bg_green = rpng2_info.bg_green; - uch bg_blue = rpng2_info.bg_blue; - uch *src, *src2=NULL; - char *dest; - uch r, g, b, a; - int ximage_rowbytes = ximage->bytes_per_line; - ulg i, pixel; - static int rows=0, prevpass=(-1); - static ulg firstrow; - -/*--------------------------------------------------------------------------- - rows and firstrow simply track how many rows (and which ones) have not - yet been displayed; alternatively, we could call XPutImage() for every - row and not bother with the records-keeping. - ---------------------------------------------------------------------------*/ - - Trace((stderr, "beginning rpng2_x_display_row()\n")) - - if (rpng2_info.pass != prevpass) { - if (pause_after_pass && rpng2_info.pass > 0) { - XEvent e; - KeySym k; - - fprintf(stderr, - "%s: end of pass %d of 7; click in image window to continue\n", - PROGNAME, prevpass + 1); - do - XNextEvent(display, &e); - while (!QUIT(e,k)); - } - fprintf(stderr, "%s: pass %d of 7\r", PROGNAME, rpng2_info.pass + 1); - fflush(stderr); - prevpass = rpng2_info.pass; - } - - if (rows == 0) - firstrow = row; /* first row that is not yet displayed */ - - ++rows; /* count of rows received but not yet displayed */ - -/*--------------------------------------------------------------------------- - Aside from the use of the rpng2_info struct, the lack of an outer loop - (over rows) and moving the XPutImage() call outside the "if (depth)" - tests, this routine is identical to rpng_x_display_image() in the non- - progressive version of the program. - ---------------------------------------------------------------------------*/ - - if (depth == 24 || depth == 32) { - ulg red, green, blue; - int bpp = ximage->bits_per_pixel; - - src = rpng2_info.image_data + row*rpng2_info.rowbytes; - if (bg_image) - src2 = bg_data + row*bg_rowbytes; - dest = ximage->data + row*ximage_rowbytes; - if (rpng2_info.channels == 3) { - for (i = rpng2_info.width; i > 0; --i) { - red = *src++; - green = *src++; - blue = *src++; - pixel = (red << RShift) | - (green << GShift) | - (blue << BShift); - /* recall that we set ximage->byte_order = MSBFirst above */ - if (bpp == 32) { - *dest++ = (char)((pixel >> 24) & 0xff); - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } else { - /* GRR BUG? this assumes bpp == 24 & bits are packed low */ - /* (probably need to use RShift, RMask, etc.) */ - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } - } - } else /* if (rpng2_info.channels == 4) */ { - for (i = rpng2_info.width; i > 0; --i) { - r = *src++; - g = *src++; - b = *src++; - a = *src++; - if (bg_image) { - bg_red = *src2++; - bg_green = *src2++; - bg_blue = *src2++; - } - if (a == 255) { - red = r; - green = g; - blue = b; - } else if (a == 0) { - red = bg_red; - green = bg_green; - blue = bg_blue; - } else { - /* this macro (from png.h) composites the foreground - * and background values and puts the result into the - * first argument */ - alpha_composite(red, r, a, bg_red); - alpha_composite(green, g, a, bg_green); - alpha_composite(blue, b, a, bg_blue); - } - pixel = (red << RShift) | - (green << GShift) | - (blue << BShift); - /* recall that we set ximage->byte_order = MSBFirst above */ - if (bpp == 32) { - *dest++ = (char)((pixel >> 24) & 0xff); - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } else { - /* GRR BUG? this assumes bpp == 24 & bits are packed low */ - /* (probably need to use RShift, RMask, etc.) */ - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } - } - } - - } else if (depth == 16) { - ush red, green, blue; - - src = rpng2_info.row_pointers[row]; - if (bg_image) - src2 = bg_data + row*bg_rowbytes; - dest = ximage->data + row*ximage_rowbytes; - if (rpng2_info.channels == 3) { - for (i = rpng2_info.width; i > 0; --i) { - red = ((ush)(*src) << 8); - ++src; - green = ((ush)(*src) << 8); - ++src; - blue = ((ush)(*src) << 8); - ++src; - pixel = ((red >> RShift) & RMask) | - ((green >> GShift) & GMask) | - ((blue >> BShift) & BMask); - /* recall that we set ximage->byte_order = MSBFirst above */ - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } - } else /* if (rpng2_info.channels == 4) */ { - for (i = rpng2_info.width; i > 0; --i) { - r = *src++; - g = *src++; - b = *src++; - a = *src++; - if (bg_image) { - bg_red = *src2++; - bg_green = *src2++; - bg_blue = *src2++; - } - if (a == 255) { - red = ((ush)r << 8); - green = ((ush)g << 8); - blue = ((ush)b << 8); - } else if (a == 0) { - red = ((ush)bg_red << 8); - green = ((ush)bg_green << 8); - blue = ((ush)bg_blue << 8); - } else { - /* this macro (from png.h) composites the foreground - * and background values and puts the result back into - * the first argument (== fg byte here: safe) */ - alpha_composite(r, r, a, bg_red); - alpha_composite(g, g, a, bg_green); - alpha_composite(b, b, a, bg_blue); - red = ((ush)r << 8); - green = ((ush)g << 8); - blue = ((ush)b << 8); - } - pixel = ((red >> RShift) & RMask) | - ((green >> GShift) & GMask) | - ((blue >> BShift) & BMask); - /* recall that we set ximage->byte_order = MSBFirst above */ - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } - } - - } else /* depth == 8 */ { - - /* GRR: add 8-bit support */ - - } - - -/*--------------------------------------------------------------------------- - Display after every 16 rows or when on one of last two rows. (Region - may include previously displayed lines due to interlacing--i.e., not - contiguous. Also, second-to-last row is final one in interlaced images - with odd number of rows.) For demos, flush (and delay) after every 16th - row so "sparse" passes don't go twice as fast. - ---------------------------------------------------------------------------*/ - - if (demo_timing && (row - firstrow >= 16 || row >= rpng2_info.height-2)) { - XPutImage(display, window, gc, ximage, 0, (int)firstrow, 0, - (int)firstrow, rpng2_info.width, row - firstrow + 1); - XFlush(display); - rows = 0; - usleep(usleep_duration); - } else - if (!demo_timing && ((rows & 0xf) == 0 || row >= rpng2_info.height-2)) { - XPutImage(display, window, gc, ximage, 0, (int)firstrow, 0, - (int)firstrow, rpng2_info.width, row - firstrow + 1); - XFlush(display); - rows = 0; - } - -} - - - - - -static void rpng2_x_finish_display(void) -{ - Trace((stderr, "beginning rpng2_x_finish_display()\n")) - - /* last row has already been displayed by rpng2_x_display_row(), so we - * have nothing to do here except set a flag and let the user know that - * the image is done */ - - rpng2_info.state = kDone; - printf( - "Done. Press Q, Esc or mouse button 1 (within image window) to quit.\n"); - fflush(stdout); -} - - - - - -static void rpng2_x_redisplay_image(ulg startcol, ulg startrow, - ulg width, ulg height) -{ - uch bg_red = rpng2_info.bg_red; - uch bg_green = rpng2_info.bg_green; - uch bg_blue = rpng2_info.bg_blue; - uch *src, *src2=NULL; - char *dest; - uch r, g, b, a; - ulg i, row, lastrow = 0; - ulg pixel; - int ximage_rowbytes = ximage->bytes_per_line; - - - Trace((stderr, "beginning display loop (image_channels == %d)\n", - rpng2_info.channels)) - Trace((stderr, " (width = %ld, rowbytes = %d, ximage_rowbytes = %d)\n", - rpng2_info.width, rpng2_info.rowbytes, ximage_rowbytes)) - Trace((stderr, " (bpp = %d)\n", ximage->bits_per_pixel)) - Trace((stderr, " (byte_order = %s)\n", ximage->byte_order == MSBFirst? - "MSBFirst" : (ximage->byte_order == LSBFirst? "LSBFirst" : "unknown"))) - -/*--------------------------------------------------------------------------- - Aside from the use of the rpng2_info struct and of src2 (for background - image), this routine is identical to rpng_x_display_image() in the non- - progressive version of the program--for the simple reason that redisplay - of the image against a new background happens after the image is fully - decoded and therefore is, by definition, non-progressive. - ---------------------------------------------------------------------------*/ - - if (depth == 24 || depth == 32) { - ulg red, green, blue; - int bpp = ximage->bits_per_pixel; - - for (lastrow = row = startrow; row < startrow+height; ++row) { - src = rpng2_info.image_data + row*rpng2_info.rowbytes; - if (bg_image) - src2 = bg_data + row*bg_rowbytes; - dest = ximage->data + row*ximage_rowbytes; - if (rpng2_info.channels == 3) { - for (i = rpng2_info.width; i > 0; --i) { - red = *src++; - green = *src++; - blue = *src++; -#ifdef NO_24BIT_MASKS - pixel = (red << RShift) | - (green << GShift) | - (blue << BShift); - /* recall that we set ximage->byte_order = MSBFirst above */ - if (bpp == 32) { - *dest++ = (char)((pixel >> 24) & 0xff); - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } else { - /* this assumes bpp == 24 & bits are packed low */ - /* (probably need to use RShift, RMask, etc.) */ - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } -#else - red = (RShift < 0)? red << (-RShift) : red >> RShift; - green = (GShift < 0)? green << (-GShift) : green >> GShift; - blue = (BShift < 0)? blue << (-BShift) : blue >> BShift; - pixel = (red & RMask) | (green & GMask) | (blue & BMask); - /* recall that we set ximage->byte_order = MSBFirst above */ - if (bpp == 32) { - *dest++ = (char)((pixel >> 24) & 0xff); - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } else { - /* GRR BUG */ - /* this assumes bpp == 24 & bits are packed low */ - /* (probably need to use RShift/RMask/etc. here, too) */ - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } -#endif - } - - } else /* if (rpng2_info.channels == 4) */ { - for (i = rpng2_info.width; i > 0; --i) { - r = *src++; - g = *src++; - b = *src++; - a = *src++; - if (bg_image) { - bg_red = *src2++; - bg_green = *src2++; - bg_blue = *src2++; - } - if (a == 255) { - red = r; - green = g; - blue = b; - } else if (a == 0) { - red = bg_red; - green = bg_green; - blue = bg_blue; - } else { - /* this macro (from png.h) composites the foreground - * and background values and puts the result into the - * first argument */ - alpha_composite(red, r, a, bg_red); - alpha_composite(green, g, a, bg_green); - alpha_composite(blue, b, a, bg_blue); - } -#ifdef NO_24BIT_MASKS - pixel = (red << RShift) | - (green << GShift) | - (blue << BShift); - /* recall that we set ximage->byte_order = MSBFirst above */ - if (bpp == 32) { - *dest++ = (char)((pixel >> 24) & 0xff); - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } else { - /* this assumes bpp == 24 & bits are packed low */ - /* (probably need to use RShift, RMask, etc.) */ - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } -#else - red = (RShift < 0)? red << (-RShift) : red >> RShift; - green = (GShift < 0)? green << (-GShift) : green >> GShift; - blue = (BShift < 0)? blue << (-BShift) : blue >> BShift; - pixel = (red & RMask) | (green & GMask) | (blue & BMask); - /* recall that we set ximage->byte_order = MSBFirst above */ - if (bpp == 32) { - *dest++ = (char)((pixel >> 24) & 0xff); - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } else { - /* GRR BUG */ - /* this assumes bpp == 24 & bits are packed low */ - /* (probably need to use RShift/RMask/etc. here, too) */ - *dest++ = (char)((pixel >> 16) & 0xff); - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } -#endif - } - } - /* display after every 16 lines */ - if (((row+1) & 0xf) == 0) { - XPutImage(display, window, gc, ximage, 0, (int)lastrow, 0, - (int)lastrow, rpng2_info.width, 16); - XFlush(display); - lastrow = row + 1; - } - } - - } else if (depth == 16) { - ush red, green, blue; - - for (lastrow = row = startrow; row < startrow+height; ++row) { - src = rpng2_info.row_pointers[row]; - if (bg_image) - src2 = bg_data + row*bg_rowbytes; - dest = ximage->data + row*ximage_rowbytes; - if (rpng2_info.channels == 3) { - for (i = rpng2_info.width; i > 0; --i) { - red = ((ush)(*src) << 8); - ++src; - green = ((ush)(*src) << 8); - ++src; - blue = ((ush)(*src) << 8); - ++src; - pixel = ((red >> RShift) & RMask) | - ((green >> GShift) & GMask) | - ((blue >> BShift) & BMask); - /* recall that we set ximage->byte_order = MSBFirst above */ - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } - } else /* if (rpng2_info.channels == 4) */ { - for (i = rpng2_info.width; i > 0; --i) { - r = *src++; - g = *src++; - b = *src++; - a = *src++; - if (bg_image) { - bg_red = *src2++; - bg_green = *src2++; - bg_blue = *src2++; - } - if (a == 255) { - red = ((ush)r << 8); - green = ((ush)g << 8); - blue = ((ush)b << 8); - } else if (a == 0) { - red = ((ush)bg_red << 8); - green = ((ush)bg_green << 8); - blue = ((ush)bg_blue << 8); - } else { - /* this macro (from png.h) composites the foreground - * and background values and puts the result back into - * the first argument (== fg byte here: safe) */ - alpha_composite(r, r, a, bg_red); - alpha_composite(g, g, a, bg_green); - alpha_composite(b, b, a, bg_blue); - red = ((ush)r << 8); - green = ((ush)g << 8); - blue = ((ush)b << 8); - } - pixel = ((red >> RShift) & RMask) | - ((green >> GShift) & GMask) | - ((blue >> BShift) & BMask); - /* recall that we set ximage->byte_order = MSBFirst above */ - *dest++ = (char)((pixel >> 8) & 0xff); - *dest++ = (char)( pixel & 0xff); - } - } - /* display after every 16 lines */ - if (((row+1) & 0xf) == 0) { - XPutImage(display, window, gc, ximage, 0, (int)lastrow, 0, - (int)lastrow, rpng2_info.width, 16); - XFlush(display); - lastrow = row + 1; - } - } - - } else /* depth == 8 */ { - - /* GRR: add 8-bit support */ - - } - - Trace((stderr, "calling final XPutImage()\n")) - if (lastrow < startrow+height) { - XPutImage(display, window, gc, ximage, 0, (int)lastrow, 0, - (int)lastrow, rpng2_info.width, rpng2_info.height-lastrow); - XFlush(display); - } - -} /* end function rpng2_x_redisplay_image() */ - - - - - -#ifdef FEATURE_LOOP - -static void rpng2_x_reload_bg_image(void) -{ - char *dest; - uch r1, r2, g1, g2, b1, b2; - uch r1_inv, r2_inv, g1_inv, g2_inv, b1_inv, b2_inv; - int k, hmax, max; - int xidx, yidx, yidx_max; - int even_odd_vert, even_odd_horiz, even_odd; - int invert_gradient2 = (bg[pat].type & 0x08); - int invert_column; - ulg i, row; - - - bgscale = (pat == 0)? 8 : bgscale_default; - yidx_max = bgscale - 1; - -/*--------------------------------------------------------------------------- - Vertical gradients (ramps) in NxN squares, alternating direction and - colors (N == bgscale). - ---------------------------------------------------------------------------*/ - - if ((bg[pat].type & 0x07) == 0) { - uch r1_min = rgb[bg[pat].rgb1_min].r; - uch g1_min = rgb[bg[pat].rgb1_min].g; - uch b1_min = rgb[bg[pat].rgb1_min].b; - uch r2_min = rgb[bg[pat].rgb2_min].r; - uch g2_min = rgb[bg[pat].rgb2_min].g; - uch b2_min = rgb[bg[pat].rgb2_min].b; - int r1_diff = rgb[bg[pat].rgb1_max].r - r1_min; - int g1_diff = rgb[bg[pat].rgb1_max].g - g1_min; - int b1_diff = rgb[bg[pat].rgb1_max].b - b1_min; - int r2_diff = rgb[bg[pat].rgb2_max].r - r2_min; - int g2_diff = rgb[bg[pat].rgb2_max].g - g2_min; - int b2_diff = rgb[bg[pat].rgb2_max].b - b2_min; - - for (row = 0; row < rpng2_info.height; ++row) { - yidx = (int)(row % bgscale); - even_odd_vert = (int)((row / bgscale) & 1); - - r1 = r1_min + (r1_diff * yidx) / yidx_max; - g1 = g1_min + (g1_diff * yidx) / yidx_max; - b1 = b1_min + (b1_diff * yidx) / yidx_max; - r1_inv = r1_min + (r1_diff * (yidx_max-yidx)) / yidx_max; - g1_inv = g1_min + (g1_diff * (yidx_max-yidx)) / yidx_max; - b1_inv = b1_min + (b1_diff * (yidx_max-yidx)) / yidx_max; - - r2 = r2_min + (r2_diff * yidx) / yidx_max; - g2 = g2_min + (g2_diff * yidx) / yidx_max; - b2 = b2_min + (b2_diff * yidx) / yidx_max; - r2_inv = r2_min + (r2_diff * (yidx_max-yidx)) / yidx_max; - g2_inv = g2_min + (g2_diff * (yidx_max-yidx)) / yidx_max; - b2_inv = b2_min + (b2_diff * (yidx_max-yidx)) / yidx_max; - - dest = (char *)bg_data + row*bg_rowbytes; - for (i = 0; i < rpng2_info.width; ++i) { - even_odd_horiz = (int)((i / bgscale) & 1); - even_odd = even_odd_vert ^ even_odd_horiz; - invert_column = - (even_odd_horiz && (bg[pat].type & 0x10)); - if (even_odd == 0) { /* gradient #1 */ - if (invert_column) { - *dest++ = r1_inv; - *dest++ = g1_inv; - *dest++ = b1_inv; - } else { - *dest++ = r1; - *dest++ = g1; - *dest++ = b1; - } - } else { /* gradient #2 */ - if ((invert_column && invert_gradient2) || - (!invert_column && !invert_gradient2)) - { - *dest++ = r2; /* not inverted or */ - *dest++ = g2; /* doubly inverted */ - *dest++ = b2; - } else { - *dest++ = r2_inv; - *dest++ = g2_inv; /* singly inverted */ - *dest++ = b2_inv; - } - } - } - } - -/*--------------------------------------------------------------------------- - Soft gradient-diamonds with scale = bgscale. Code contributed by Adam - M. Costello. - ---------------------------------------------------------------------------*/ - - } else if ((bg[pat].type & 0x07) == 1) { - - hmax = (bgscale-1)/2; /* half the max weight of a color */ - max = 2*hmax; /* the max weight of a color */ - - r1 = rgb[bg[pat].rgb1_max].r; - g1 = rgb[bg[pat].rgb1_max].g; - b1 = rgb[bg[pat].rgb1_max].b; - r2 = rgb[bg[pat].rgb2_max].r; - g2 = rgb[bg[pat].rgb2_max].g; - b2 = rgb[bg[pat].rgb2_max].b; - - for (row = 0; row < rpng2_info.height; ++row) { - yidx = (int)(row % bgscale); - if (yidx > hmax) - yidx = bgscale-1 - yidx; - dest = (char *)bg_data + row*bg_rowbytes; - for (i = 0; i < rpng2_info.width; ++i) { - xidx = (int)(i % bgscale); - if (xidx > hmax) - xidx = bgscale-1 - xidx; - k = xidx + yidx; - *dest++ = (k*r1 + (max-k)*r2) / max; - *dest++ = (k*g1 + (max-k)*g2) / max; - *dest++ = (k*b1 + (max-k)*b2) / max; - } - } - -/*--------------------------------------------------------------------------- - Radial "starburst" with azimuthal sinusoids; [eventually number of sinu- - soids will equal bgscale?]. This one is slow but very cool. Code con- - tributed by Pieter S. van der Meulen (originally in Smalltalk). - ---------------------------------------------------------------------------*/ - - } else if ((bg[pat].type & 0x07) == 2) { - uch ch; - int ii, x, y, hw, hh, grayspot; - double freq, rotate, saturate, gray, intensity; - double angle=0.0, aoffset=0.0, maxDist, dist; - double red=0.0, green=0.0, blue=0.0, hue, s, v, f, p, q, t; - - hh = (int)(rpng2_info.height / 2); - hw = (int)(rpng2_info.width / 2); - - /* variables for radial waves: - * aoffset: number of degrees to rotate hue [CURRENTLY NOT USED] - * freq: number of color beams originating from the center - * grayspot: size of the graying center area (anti-alias) - * rotate: rotation of the beams as a function of radius - * saturate: saturation of beams' shape azimuthally - */ - angle = CLIP(angle, 0.0, 360.0); - grayspot = CLIP(bg[pat].bg_gray, 1, (hh + hw)); - freq = MAX((double)bg[pat].bg_freq, 0.0); - saturate = (double)bg[pat].bg_bsat * 0.1; - rotate = (double)bg[pat].bg_brot * 0.1; - gray = 0.0; - intensity = 0.0; - maxDist = (double)((hw*hw) + (hh*hh)); - - for (row = 0; row < rpng2_info.height; ++row) { - y = (int)(row - hh); - dest = (char *)bg_data + row*bg_rowbytes; - for (i = 0; i < rpng2_info.width; ++i) { - x = (int)(i - hw); - angle = (x == 0)? PI_2 : atan((double)y / (double)x); - gray = (double)MAX(ABS(y), ABS(x)) / grayspot; - gray = MIN(1.0, gray); - dist = (double)((x*x) + (y*y)) / maxDist; - intensity = cos((angle+(rotate*dist*PI)) * freq) * - gray * saturate; - intensity = (MAX(MIN(intensity,1.0),-1.0) + 1.0) * 0.5; - hue = (angle + PI) * INV_PI_360 + aoffset; - s = gray * ((double)(ABS(x)+ABS(y)) / (double)(hw + hh)); - s = MIN(MAX(s,0.0), 1.0); - v = MIN(MAX(intensity,0.0), 1.0); - - if (s == 0.0) { - ch = (uch)(v * 255.0); - *dest++ = ch; - *dest++ = ch; - *dest++ = ch; - } else { - if ((hue < 0.0) || (hue >= 360.0)) - hue -= (((int)(hue / 360.0)) * 360.0); - hue /= 60.0; - ii = (int)hue; - f = hue - (double)ii; - p = (1.0 - s) * v; - q = (1.0 - (s * f)) * v; - t = (1.0 - (s * (1.0 - f))) * v; - if (ii == 0) { red = v; green = t; blue = p; } - else if (ii == 1) { red = q; green = v; blue = p; } - else if (ii == 2) { red = p; green = v; blue = t; } - else if (ii == 3) { red = p; green = q; blue = v; } - else if (ii == 4) { red = t; green = p; blue = v; } - else if (ii == 5) { red = v; green = p; blue = q; } - *dest++ = (uch)(red * 255.0); - *dest++ = (uch)(green * 255.0); - *dest++ = (uch)(blue * 255.0); - } - } - } - } - -} /* end function rpng2_x_reload_bg_image() */ - - - - - -static int is_number(char *p) -{ - while (*p) { - if (!isdigit(*p)) - return FALSE; - ++p; - } - return TRUE; -} - -#endif /* FEATURE_LOOP */ - - - - - -static void rpng2_x_cleanup(void) -{ - if (bg_image && bg_data) { - free(bg_data); - bg_data = NULL; - } - - if (rpng2_info.image_data) { - free(rpng2_info.image_data); - rpng2_info.image_data = NULL; - } - - if (rpng2_info.row_pointers) { - free(rpng2_info.row_pointers); - rpng2_info.row_pointers = NULL; - } - - if (ximage) { - if (ximage->data) { - free(ximage->data); /* we allocated it, so we free it */ - ximage->data = (char *)NULL; /* instead of XDestroyImage() */ - } - XDestroyImage(ximage); - ximage = NULL; - } - - if (have_gc) - XFreeGC(display, gc); - - if (have_window) - XDestroyWindow(display, window); - - if (have_colormap) - XFreeColormap(display, colormap); - - if (have_nondefault_visual) - XFree(visual_list); -} - - - - - -static int rpng2_x_msb(ulg u32val) -{ - int i; - - for (i = 31; i >= 0; --i) { - if (u32val & 0x80000000L) - break; - u32val <<= 1; - } - return i; -} diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/toucan.png b/io2d/src/3rd-party/libpng/contrib/gregbook/toucan.png deleted file mode 100644 index 03960d4939938541ca3f8efee4bf13ffdecbb2f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12901 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 z916my -#include -#include -#include /* for jmpbuf declaration in writepng.h */ -#include - -#ifdef DOS_OS2_W32 -# include /* for isatty(), setmode() prototypes */ -# include /* O_BINARY for fdopen() without text translation */ -# ifdef __EMX__ -# ifndef getch -# define getch() _read_kbd(0, 1, 0) /* need getche() */ -# endif -# else /* !__EMX__ */ -# ifdef __GO32__ -# include -# define getch() getkey() /* GRR: need getche() */ -# else -# include /* for getche() console input */ -# endif -# endif /* ?__EMX__ */ -# define FGETS(buf,len,stream) dos_kbd_gets(buf,len) -#else -# include /* for isatty() prototype */ -# define FGETS fgets -#endif - -/* #define DEBUG : this enables the Trace() macros */ - -/* #define FORBID_LATIN1_CTRL : this requires the user to re-enter any - text that includes control characters discouraged by the PNG spec; text - that includes an escape character (27) must be re-entered regardless */ - -#include "writepng.h" /* typedefs, common macros, writepng prototypes */ - - - -/* local prototypes */ - -static int wpng_isvalid_latin1(uch *p, int len); -static void wpng_cleanup(void); - -#ifdef DOS_OS2_W32 - static char *dos_kbd_gets(char *buf, int len); -#endif - - - -static mainprog_info wpng_info; /* lone global */ - - - -int main(int argc, char **argv) -{ -#ifndef DOS_OS2_W32 - FILE *keybd; -#endif -#ifdef sgi - FILE *tmpfile; /* or we could just use keybd, since no overlap */ - char tmpline[80]; -#endif - char *inname = NULL, outname[256]; - char *p, pnmchar, pnmline[256]; - char *bgstr, *textbuf = NULL; - ulg rowbytes; - int rc, len = 0; - int error = 0; - int text = FALSE; - int maxval; - double LUT_exponent; /* just the lookup table */ - double CRT_exponent = 2.2; /* just the monitor */ - double default_display_exponent; /* whole display system */ - double default_gamma = 0.0; - - - wpng_info.infile = NULL; - wpng_info.outfile = NULL; - wpng_info.image_data = NULL; - wpng_info.row_pointers = NULL; - wpng_info.filter = FALSE; - wpng_info.interlaced = FALSE; - wpng_info.have_bg = FALSE; - wpng_info.have_time = FALSE; - wpng_info.have_text = 0; - wpng_info.gamma = 0.0; - - - /* First get the default value for our display-system exponent, i.e., - * the product of the CRT exponent and the exponent corresponding to - * the frame-buffer's lookup table (LUT), if any. If the PNM image - * looks correct on the user's display system, its file gamma is the - * inverse of this value. (Note that this is not an exhaustive list - * of LUT values--e.g., OpenStep has a lot of weird ones--but it should - * cover 99% of the current possibilities. This section must ensure - * that default_display_exponent is positive.) */ - -#if defined(NeXT) - /* third-party utilities can modify the default LUT exponent */ - LUT_exponent = 1.0 / 2.2; - /* - if (some_next_function_that_returns_gamma(&next_gamma)) - LUT_exponent = 1.0 / next_gamma; - */ -#elif defined(sgi) - LUT_exponent = 1.0 / 1.7; - /* there doesn't seem to be any documented function to - * get the "gamma" value, so we do it the hard way */ - tmpfile = fopen("/etc/config/system.glGammaVal", "r"); - if (tmpfile) { - double sgi_gamma; - - fgets(tmpline, 80, tmpfile); - fclose(tmpfile); - sgi_gamma = atof(tmpline); - if (sgi_gamma > 0.0) - LUT_exponent = 1.0 / sgi_gamma; - } -#elif defined(Macintosh) - LUT_exponent = 1.8 / 2.61; - /* - if (some_mac_function_that_returns_gamma(&mac_gamma)) - LUT_exponent = mac_gamma / 2.61; - */ -#else - LUT_exponent = 1.0; /* assume no LUT: most PCs */ -#endif - - /* the defaults above give 1.0, 1.3, 1.5 and 2.2, respectively: */ - default_display_exponent = LUT_exponent * CRT_exponent; - - - /* If the user has set the SCREEN_GAMMA environment variable as suggested - * (somewhat imprecisely) in the libpng documentation, use that; otherwise - * use the default value we just calculated. Either way, the user may - * override this via a command-line option. */ - - if ((p = getenv("SCREEN_GAMMA")) != NULL) { - double exponent = atof(p); - - if (exponent > 0.0) - default_gamma = 1.0 / exponent; - } - - if (default_gamma == 0.0) - default_gamma = 1.0 / default_display_exponent; - - - /* Now parse the command line for options and the PNM filename. */ - - while (*++argv && !error) { - if (!strncmp(*argv, "-i", 2)) { - wpng_info.interlaced = TRUE; - } else if (!strncmp(*argv, "-time", 3)) { - wpng_info.modtime = time(NULL); - wpng_info.have_time = TRUE; - } else if (!strncmp(*argv, "-text", 3)) { - text = TRUE; - } else if (!strncmp(*argv, "-gamma", 2)) { - if (!*++argv) - ++error; - else { - wpng_info.gamma = atof(*argv); - if (wpng_info.gamma <= 0.0) - ++error; - else if (wpng_info.gamma > 1.01) - fprintf(stderr, PROGNAME - " warning: file gammas are usually less than 1.0\n"); - } - } else if (!strncmp(*argv, "-bgcolor", 4)) { - if (!*++argv) - ++error; - else { - bgstr = *argv; - if (strlen(bgstr) != 7 || bgstr[0] != '#') - ++error; - else { - unsigned r, g, b; /* this way quiets compiler warnings */ - - sscanf(bgstr+1, "%2x%2x%2x", &r, &g, &b); - wpng_info.bg_red = (uch)r; - wpng_info.bg_green = (uch)g; - wpng_info.bg_blue = (uch)b; - wpng_info.have_bg = TRUE; - } - } - } else { - if (**argv != '-') { - inname = *argv; - if (argv[1]) /* shouldn't be any more args after filename */ - ++error; - } else - ++error; /* not expecting any other options */ - } - } - - - /* open the input and output files, or register an error and abort */ - - if (!inname) { - if (isatty(0)) { - fprintf(stderr, PROGNAME - ": must give input filename or provide image data via stdin\n"); - ++error; - } else { -#ifdef DOS_OS2_W32 - /* some buggy C libraries require BOTH setmode() and fdopen(bin) */ - setmode(fileno(stdin), O_BINARY); - setmode(fileno(stdout), O_BINARY); -#endif - if ((wpng_info.infile = fdopen(fileno(stdin), "rb")) == NULL) { - fprintf(stderr, PROGNAME - ": unable to reopen stdin in binary mode\n"); - ++error; - } else - if ((wpng_info.outfile = fdopen(fileno(stdout), "wb")) == NULL) { - fprintf(stderr, PROGNAME - ": unable to reopen stdout in binary mode\n"); - fclose(wpng_info.infile); - ++error; - } else - wpng_info.filter = TRUE; - } - } else if ((len = strlen(inname)) > 250) { - fprintf(stderr, PROGNAME ": input filename is too long [%d chars]\n", - len); - ++error; - } else if (!(wpng_info.infile = fopen(inname, "rb"))) { - fprintf(stderr, PROGNAME ": can't open input file [%s]\n", inname); - ++error; - } - - if (!error) { - fgets(pnmline, 256, wpng_info.infile); - if (pnmline[0] != 'P' || ((pnmchar = pnmline[1]) != '5' && - pnmchar != '6' && pnmchar != '8')) - { - fprintf(stderr, PROGNAME - ": input file [%s] is not a binary PGM, PPM or PAM file\n", - inname); - ++error; - } else { - wpng_info.pnmtype = (int)(pnmchar - '0'); - if (wpng_info.pnmtype != 8) - wpng_info.have_bg = FALSE; /* no need for bg if opaque */ - do { - fgets(pnmline, 256, wpng_info.infile); /* lose any comments */ - } while (pnmline[0] == '#'); - sscanf(pnmline, "%ld %ld", &wpng_info.width, &wpng_info.height); - do { - fgets(pnmline, 256, wpng_info.infile); /* more comment lines */ - } while (pnmline[0] == '#'); - sscanf(pnmline, "%d", &maxval); - if (wpng_info.width <= 0L || wpng_info.height <= 0L || - maxval != 255) - { - fprintf(stderr, PROGNAME - ": only positive width/height, maxval == 255 allowed \n"); - ++error; - } - wpng_info.sample_depth = 8; /* <==> maxval 255 */ - - if (!wpng_info.filter) { - /* make outname from inname */ - if ((p = strrchr(inname, '.')) == NULL || - (p - inname) != (len - 4)) - { - strcpy(outname, inname); - strcpy(outname+len, ".png"); - } else { - len -= 4; - strncpy(outname, inname, len); - strcpy(outname+len, ".png"); - } - /* check if outname already exists; if not, open */ - if ((wpng_info.outfile = fopen(outname, "rb")) != NULL) { - fprintf(stderr, PROGNAME ": output file exists [%s]\n", - outname); - fclose(wpng_info.outfile); - ++error; - } else if (!(wpng_info.outfile = fopen(outname, "wb"))) { - fprintf(stderr, PROGNAME ": can't open output file [%s]\n", - outname); - ++error; - } - } - } - if (error) { - fclose(wpng_info.infile); - wpng_info.infile = NULL; - if (wpng_info.filter) { - fclose(wpng_info.outfile); - wpng_info.outfile = NULL; - } - } - } - - - /* if we had any errors, print usage and die horrible death...arrr! */ - - if (error) { - fprintf(stderr, "\n%s %s: %s\n", PROGNAME, VERSION, APPNAME); - writepng_version_info(); - fprintf(stderr, "\n" -"Usage: %s [-gamma exp] [-bgcolor bg] [-text] [-time] [-interlace] pnmfile\n" -"or: ... | %s [-gamma exp] [-bgcolor bg] [-text] [-time] [-interlace] | ...\n" - " exp \ttransfer-function exponent (``gamma'') of the image in\n" - "\t\t floating-point format (e.g., ``%.5f''); if image looks\n" - "\t\t correct on given display system, image gamma is equal to\n" - "\t\t inverse of display-system exponent, i.e., 1 / (LUT * CRT)\n" - "\t\t (where LUT = lookup-table exponent and CRT = CRT exponent;\n" - "\t\t first varies, second is usually 2.2, all are positive)\n" - " bg \tdesired background color for alpha-channel images, in\n" - "\t\t 7-character hex RGB format (e.g., ``#ff7700'' for orange:\n" - "\t\t same as HTML colors)\n" - " -text\tprompt interactively for text info (tEXt chunks)\n" - " -time\tinclude a tIME chunk (last modification time)\n" - " -interlace\twrite interlaced PNG image\n" - "\n" -"pnmfile or stdin must be a binary PGM (`P5'), PPM (`P6') or (extremely\n" -"unofficial and unsupported!) PAM (`P8') file. Currently it is required\n" -"to have maxval == 255 (i.e., no scaling). If pnmfile is specified, it\n" -"is converted to the corresponding PNG file with the same base name but a\n" -"``.png'' extension; files read from stdin are converted and sent to stdout.\n" -"The conversion is progressive (low memory usage) unless interlacing is\n" -"requested; in that case the whole image will be buffered in memory and\n" -"written in one call.\n" - "\n", PROGNAME, PROGNAME, default_gamma); - exit(1); - } - - - /* prepare the text buffers for libpng's use; note that even though - * PNG's png_text struct includes a length field, we don't have to fill - * it out */ - - if (text && -#ifndef DOS_OS2_W32 - (keybd = fdopen(fileno(stderr), "r")) != NULL && -#endif - (textbuf = (char *)malloc((5 + 9)*75)) != NULL) - { - int i, valid, result; - - fprintf(stderr, - "Enter text info (no more than 72 characters per line);\n"); - fprintf(stderr, "to skip a field, hit the key.\n"); - /* note: just leaves len == 1 */ - - do { - valid = TRUE; - p = textbuf + TEXT_TITLE_OFFSET; - fprintf(stderr, " Title: "); - fflush(stderr); - if (FGETS(p, 74, keybd) && (len = strlen(p)) > 1) { - if (p[len-1] == '\n') - p[--len] = '\0'; - wpng_info.title = p; - wpng_info.have_text |= TEXT_TITLE; - if ((result = wpng_isvalid_latin1((uch *)p, len)) >= 0) { - fprintf(stderr, " " PROGNAME " warning: character code" - " %u is %sdiscouraged by the PNG\n specification " - "[first occurrence was at character position #%d]\n", - (unsigned)p[result], (p[result] == 27)? "strongly " : "", - result+1); - fflush(stderr); -#ifdef FORBID_LATIN1_CTRL - wpng_info.have_text &= ~TEXT_TITLE; - valid = FALSE; -#else - if (p[result] == 27) { /* escape character */ - wpng_info.have_text &= ~TEXT_TITLE; - valid = FALSE; - } -#endif - } - } - } while (!valid); - - do { - valid = TRUE; - p = textbuf + TEXT_AUTHOR_OFFSET; - fprintf(stderr, " Author: "); - fflush(stderr); - if (FGETS(p, 74, keybd) && (len = strlen(p)) > 1) { - if (p[len-1] == '\n') - p[--len] = '\0'; - wpng_info.author = p; - wpng_info.have_text |= TEXT_AUTHOR; - if ((result = wpng_isvalid_latin1((uch *)p, len)) >= 0) { - fprintf(stderr, " " PROGNAME " warning: character code" - " %u is %sdiscouraged by the PNG\n specification " - "[first occurrence was at character position #%d]\n", - (unsigned)p[result], (p[result] == 27)? "strongly " : "", - result+1); - fflush(stderr); -#ifdef FORBID_LATIN1_CTRL - wpng_info.have_text &= ~TEXT_AUTHOR; - valid = FALSE; -#else - if (p[result] == 27) { /* escape character */ - wpng_info.have_text &= ~TEXT_AUTHOR; - valid = FALSE; - } -#endif - } - } - } while (!valid); - - do { - valid = TRUE; - p = textbuf + TEXT_DESC_OFFSET; - fprintf(stderr, " Description (up to 9 lines):\n"); - for (i = 1; i < 10; ++i) { - fprintf(stderr, " [%d] ", i); - fflush(stderr); - if (FGETS(p, 74, keybd) && (len = strlen(p)) > 1) - p += len; /* now points at NULL; char before is newline */ - else - break; - } - if ((len = p - (textbuf + TEXT_DESC_OFFSET)) > 1) { - if (p[-1] == '\n') { - p[-1] = '\0'; - --len; - } - wpng_info.desc = textbuf + TEXT_DESC_OFFSET; - wpng_info.have_text |= TEXT_DESC; - p = textbuf + TEXT_DESC_OFFSET; - if ((result = wpng_isvalid_latin1((uch *)p, len)) >= 0) { - fprintf(stderr, " " PROGNAME " warning: character code" - " %u is %sdiscouraged by the PNG\n specification " - "[first occurrence was at character position #%d]\n", - (unsigned)p[result], (p[result] == 27)? "strongly " : "", - result+1); - fflush(stderr); -#ifdef FORBID_LATIN1_CTRL - wpng_info.have_text &= ~TEXT_DESC; - valid = FALSE; -#else - if (p[result] == 27) { /* escape character */ - wpng_info.have_text &= ~TEXT_DESC; - valid = FALSE; - } -#endif - } - } - } while (!valid); - - do { - valid = TRUE; - p = textbuf + TEXT_COPY_OFFSET; - fprintf(stderr, " Copyright: "); - fflush(stderr); - if (FGETS(p, 74, keybd) && (len = strlen(p)) > 1) { - if (p[len-1] == '\n') - p[--len] = '\0'; - wpng_info.copyright = p; - wpng_info.have_text |= TEXT_COPY; - if ((result = wpng_isvalid_latin1((uch *)p, len)) >= 0) { - fprintf(stderr, " " PROGNAME " warning: character code" - " %u is %sdiscouraged by the PNG\n specification " - "[first occurrence was at character position #%d]\n", - (unsigned)p[result], (p[result] == 27)? "strongly " : "", - result+1); - fflush(stderr); -#ifdef FORBID_LATIN1_CTRL - wpng_info.have_text &= ~TEXT_COPY; - valid = FALSE; -#else - if (p[result] == 27) { /* escape character */ - wpng_info.have_text &= ~TEXT_COPY; - valid = FALSE; - } -#endif - } - } - } while (!valid); - - do { - valid = TRUE; - p = textbuf + TEXT_EMAIL_OFFSET; - fprintf(stderr, " E-mail: "); - fflush(stderr); - if (FGETS(p, 74, keybd) && (len = strlen(p)) > 1) { - if (p[len-1] == '\n') - p[--len] = '\0'; - wpng_info.email = p; - wpng_info.have_text |= TEXT_EMAIL; - if ((result = wpng_isvalid_latin1((uch *)p, len)) >= 0) { - fprintf(stderr, " " PROGNAME " warning: character code" - " %u is %sdiscouraged by the PNG\n specification " - "[first occurrence was at character position #%d]\n", - (unsigned)p[result], (p[result] == 27)? "strongly " : "", - result+1); - fflush(stderr); -#ifdef FORBID_LATIN1_CTRL - wpng_info.have_text &= ~TEXT_EMAIL; - valid = FALSE; -#else - if (p[result] == 27) { /* escape character */ - wpng_info.have_text &= ~TEXT_EMAIL; - valid = FALSE; - } -#endif - } - } - } while (!valid); - - do { - valid = TRUE; - p = textbuf + TEXT_URL_OFFSET; - fprintf(stderr, " URL: "); - fflush(stderr); - if (FGETS(p, 74, keybd) && (len = strlen(p)) > 1) { - if (p[len-1] == '\n') - p[--len] = '\0'; - wpng_info.url = p; - wpng_info.have_text |= TEXT_URL; - if ((result = wpng_isvalid_latin1((uch *)p, len)) >= 0) { - fprintf(stderr, " " PROGNAME " warning: character code" - " %u is %sdiscouraged by the PNG\n specification " - "[first occurrence was at character position #%d]\n", - (unsigned)p[result], (p[result] == 27)? "strongly " : "", - result+1); - fflush(stderr); -#ifdef FORBID_LATIN1_CTRL - wpng_info.have_text &= ~TEXT_URL; - valid = FALSE; -#else - if (p[result] == 27) { /* escape character */ - wpng_info.have_text &= ~TEXT_URL; - valid = FALSE; - } -#endif - } - } - } while (!valid); - -#ifndef DOS_OS2_W32 - fclose(keybd); -#endif - - } else if (text) { - fprintf(stderr, PROGNAME ": unable to allocate memory for text\n"); - text = FALSE; - wpng_info.have_text = 0; - } - - - /* allocate libpng stuff, initialize transformations, write pre-IDAT data */ - - if ((rc = writepng_init(&wpng_info)) != 0) { - switch (rc) { - case 2: - fprintf(stderr, PROGNAME - ": libpng initialization problem (longjmp)\n"); - break; - case 4: - fprintf(stderr, PROGNAME ": insufficient memory\n"); - break; - case 11: - fprintf(stderr, PROGNAME - ": internal logic error (unexpected PNM type)\n"); - break; - default: - fprintf(stderr, PROGNAME - ": unknown writepng_init() error\n"); - break; - } - exit(rc); - } - - - /* free textbuf, since it's a completely local variable and all text info - * has just been written to the PNG file */ - - if (text && textbuf) { - free(textbuf); - textbuf = NULL; - } - - - /* calculate rowbytes on basis of image type; note that this becomes much - * more complicated if we choose to support PBM type, ASCII PNM types, or - * 16-bit-per-sample binary data [currently not an official NetPBM type] */ - - if (wpng_info.pnmtype == 5) - rowbytes = wpng_info.width; - else if (wpng_info.pnmtype == 6) - rowbytes = wpng_info.width * 3; - else /* if (wpng_info.pnmtype == 8) */ - rowbytes = wpng_info.width * 4; - - - /* read and write the image, either in its entirety (if writing interlaced - * PNG) or row by row (if non-interlaced) */ - - fprintf(stderr, "Encoding image data...\n"); - fflush(stderr); - - if (wpng_info.interlaced) { - long i; - ulg bytes; - ulg image_bytes = rowbytes * wpng_info.height; /* overflow? */ - - wpng_info.image_data = (uch *)malloc(image_bytes); - wpng_info.row_pointers = (uch **)malloc(wpng_info.height*sizeof(uch *)); - if (wpng_info.image_data == NULL || wpng_info.row_pointers == NULL) { - fprintf(stderr, PROGNAME ": insufficient memory for image data\n"); - writepng_cleanup(&wpng_info); - wpng_cleanup(); - exit(5); - } - for (i = 0; i < wpng_info.height; ++i) - wpng_info.row_pointers[i] = wpng_info.image_data + i*rowbytes; - bytes = fread(wpng_info.image_data, 1, image_bytes, wpng_info.infile); - if (bytes != image_bytes) { - fprintf(stderr, PROGNAME ": expected %lu bytes, got %lu bytes\n", - image_bytes, bytes); - fprintf(stderr, " (continuing anyway)\n"); - } - if (writepng_encode_image(&wpng_info) != 0) { - fprintf(stderr, PROGNAME - ": libpng problem (longjmp) while writing image data\n"); - writepng_cleanup(&wpng_info); - wpng_cleanup(); - exit(2); - } - - } else /* not interlaced: write progressively (row by row) */ { - long j; - ulg bytes; - - wpng_info.image_data = (uch *)malloc(rowbytes); - if (wpng_info.image_data == NULL) { - fprintf(stderr, PROGNAME ": insufficient memory for row data\n"); - writepng_cleanup(&wpng_info); - wpng_cleanup(); - exit(5); - } - error = 0; - for (j = wpng_info.height; j > 0L; --j) { - bytes = fread(wpng_info.image_data, 1, rowbytes, wpng_info.infile); - if (bytes != rowbytes) { - fprintf(stderr, PROGNAME - ": expected %lu bytes, got %lu bytes (row %ld)\n", rowbytes, - bytes, wpng_info.height-j); - ++error; - break; - } - if (writepng_encode_row(&wpng_info) != 0) { - fprintf(stderr, PROGNAME - ": libpng problem (longjmp) while writing row %ld\n", - wpng_info.height-j); - ++error; - break; - } - } - if (error) { - writepng_cleanup(&wpng_info); - wpng_cleanup(); - exit(2); - } - if (writepng_encode_finish(&wpng_info) != 0) { - fprintf(stderr, PROGNAME ": error on final libpng call\n"); - writepng_cleanup(&wpng_info); - wpng_cleanup(); - exit(2); - } - } - - - /* OK, we're done (successfully): clean up all resources and quit */ - - fprintf(stderr, "Done.\n"); - fflush(stderr); - - writepng_cleanup(&wpng_info); - wpng_cleanup(); - - return 0; -} - - - - - -static int wpng_isvalid_latin1(uch *p, int len) -{ - int i, result = -1; - - for (i = 0; i < len; ++i) { - if (p[i] == 10 || (p[i] > 31 && p[i] < 127) || p[i] > 160) - continue; /* character is completely OK */ - if (result < 0 || (p[result] != 27 && p[i] == 27)) - result = i; /* mark location of first questionable one */ - } /* or of first escape character (bad) */ - - return result; -} - - - - - -static void wpng_cleanup(void) -{ - if (wpng_info.outfile) { - fclose(wpng_info.outfile); - wpng_info.outfile = NULL; - } - - if (wpng_info.infile) { - fclose(wpng_info.infile); - wpng_info.infile = NULL; - } - - if (wpng_info.image_data) { - free(wpng_info.image_data); - wpng_info.image_data = NULL; - } - - if (wpng_info.row_pointers) { - free(wpng_info.row_pointers); - wpng_info.row_pointers = NULL; - } -} - - - - -#ifdef DOS_OS2_W32 - -static char *dos_kbd_gets(char *buf, int len) -{ - int ch, count=0; - - do { - buf[count++] = ch = getche(); - } while (ch != '\r' && count < len-1); - - buf[count--] = '\0'; /* terminate string */ - if (buf[count] == '\r') /* Enter key makes CR, so change to newline */ - buf[count] = '\n'; - - fprintf(stderr, "\n"); /* Enter key does *not* cause a newline */ - fflush(stderr); - - return buf; -} - -#endif /* DOS_OS2_W32 */ diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/writepng.c b/io2d/src/3rd-party/libpng/contrib/gregbook/writepng.c deleted file mode 100644 index 0dda62e..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/writepng.c +++ /dev/null @@ -1,401 +0,0 @@ -/*--------------------------------------------------------------------------- - - wpng - simple PNG-writing program writepng.c - - --------------------------------------------------------------------------- - - Copyright (c) 1998-2007 Greg Roelofs. All rights reserved. - - This software is provided "as is," without warranty of any kind, - express or implied. In no event shall the author or contributors - be held liable for any damages arising in any way from the use of - this software. - - The contents of this file are DUAL-LICENSED. You may modify and/or - redistribute this software according to the terms of one of the - following two licenses (at your option): - - - LICENSE 1 ("BSD-like with advertising clause"): - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute - it freely, subject to the following restrictions: - - 1. Redistributions of source code must retain the above copyright - notice, disclaimer, and this list of conditions. - 2. Redistributions in binary form must reproduce the above copyright - notice, disclaimer, and this list of conditions in the documenta- - tion and/or other materials provided with the distribution. - 3. All advertising materials mentioning features or use of this - software must display the following acknowledgment: - - This product includes software developed by Greg Roelofs - and contributors for the book, "PNG: The Definitive Guide," - published by O'Reilly and Associates. - - - LICENSE 2 (GNU GPL v2 or later): - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - ---------------------------------------------------------------------------*/ - - -#include /* for exit() prototype */ -#include - -#include "png.h" /* libpng header, includes setjmp.h */ -#include "writepng.h" /* typedefs, common macros, public prototypes */ - - -/* local prototype */ - -static void writepng_error_handler(png_structp png_ptr, png_const_charp msg); - - - -void writepng_version_info(void) -{ - fprintf(stderr, " Compiled with libpng %s; using libpng %s.\n", - PNG_LIBPNG_VER_STRING, png_libpng_ver); - fprintf(stderr, " Compiled with zlib %s; using zlib %s.\n", - ZLIB_VERSION, zlib_version); -} - - - - -/* returns 0 for success, 2 for libpng problem, 4 for out of memory, 11 for - * unexpected pnmtype; note that outfile might be stdout */ - -int writepng_init(mainprog_info *mainprog_ptr) -{ - png_structp png_ptr; /* note: temporary variables! */ - png_infop info_ptr; - int color_type, interlace_type; - - - /* could also replace libpng warning-handler (final NULL), but no need: */ - - png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, mainprog_ptr, - writepng_error_handler, NULL); - if (!png_ptr) - return 4; /* out of memory */ - - info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) { - png_destroy_write_struct(&png_ptr, NULL); - return 4; /* out of memory */ - } - - - /* setjmp() must be called in every function that calls a PNG-writing - * libpng function, unless an alternate error handler was installed-- - * but compatible error handlers must either use longjmp() themselves - * (as in this program) or some other method to return control to - * application code, so here we go: */ - - if (setjmp(mainprog_ptr->jmpbuf)) { - png_destroy_write_struct(&png_ptr, &info_ptr); - return 2; - } - - - /* make sure outfile is (re)opened in BINARY mode */ - - png_init_io(png_ptr, mainprog_ptr->outfile); - - - /* set the compression levels--in general, always want to leave filtering - * turned on (except for palette images) and allow all of the filters, - * which is the default; want 32K zlib window, unless entire image buffer - * is 16K or smaller (unknown here)--also the default; usually want max - * compression (NOT the default); and remaining compression flags should - * be left alone */ - - png_set_compression_level(png_ptr, Z_BEST_COMPRESSION); -/* - >> this is default for no filtering; Z_FILTERED is default otherwise: - png_set_compression_strategy(png_ptr, Z_DEFAULT_STRATEGY); - >> these are all defaults: - png_set_compression_mem_level(png_ptr, 8); - png_set_compression_window_bits(png_ptr, 15); - png_set_compression_method(png_ptr, 8); - */ - - - /* set the image parameters appropriately */ - - if (mainprog_ptr->pnmtype == 5) - color_type = PNG_COLOR_TYPE_GRAY; - else if (mainprog_ptr->pnmtype == 6) - color_type = PNG_COLOR_TYPE_RGB; - else if (mainprog_ptr->pnmtype == 8) - color_type = PNG_COLOR_TYPE_RGB_ALPHA; - else { - png_destroy_write_struct(&png_ptr, &info_ptr); - return 11; - } - - interlace_type = mainprog_ptr->interlaced? PNG_INTERLACE_ADAM7 : - PNG_INTERLACE_NONE; - - png_set_IHDR(png_ptr, info_ptr, mainprog_ptr->width, mainprog_ptr->height, - mainprog_ptr->sample_depth, color_type, interlace_type, - PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); - - if (mainprog_ptr->gamma > 0.0) - png_set_gAMA(png_ptr, info_ptr, mainprog_ptr->gamma); - - if (mainprog_ptr->have_bg) { /* we know it's RGBA, not gray+alpha */ - png_color_16 background; - - background.red = mainprog_ptr->bg_red; - background.green = mainprog_ptr->bg_green; - background.blue = mainprog_ptr->bg_blue; - png_set_bKGD(png_ptr, info_ptr, &background); - } - - if (mainprog_ptr->have_time) { - png_time modtime; - - png_convert_from_time_t(&modtime, mainprog_ptr->modtime); - png_set_tIME(png_ptr, info_ptr, &modtime); - } - - if (mainprog_ptr->have_text) { - png_text text[6]; - int num_text = 0; - - if (mainprog_ptr->have_text & TEXT_TITLE) { - text[num_text].compression = PNG_TEXT_COMPRESSION_NONE; - text[num_text].key = "Title"; - text[num_text].text = mainprog_ptr->title; - ++num_text; - } - if (mainprog_ptr->have_text & TEXT_AUTHOR) { - text[num_text].compression = PNG_TEXT_COMPRESSION_NONE; - text[num_text].key = "Author"; - text[num_text].text = mainprog_ptr->author; - ++num_text; - } - if (mainprog_ptr->have_text & TEXT_DESC) { - text[num_text].compression = PNG_TEXT_COMPRESSION_NONE; - text[num_text].key = "Description"; - text[num_text].text = mainprog_ptr->desc; - ++num_text; - } - if (mainprog_ptr->have_text & TEXT_COPY) { - text[num_text].compression = PNG_TEXT_COMPRESSION_NONE; - text[num_text].key = "Copyright"; - text[num_text].text = mainprog_ptr->copyright; - ++num_text; - } - if (mainprog_ptr->have_text & TEXT_EMAIL) { - text[num_text].compression = PNG_TEXT_COMPRESSION_NONE; - text[num_text].key = "E-mail"; - text[num_text].text = mainprog_ptr->email; - ++num_text; - } - if (mainprog_ptr->have_text & TEXT_URL) { - text[num_text].compression = PNG_TEXT_COMPRESSION_NONE; - text[num_text].key = "URL"; - text[num_text].text = mainprog_ptr->url; - ++num_text; - } - png_set_text(png_ptr, info_ptr, text, num_text); - } - - - /* write all chunks up to (but not including) first IDAT */ - - png_write_info(png_ptr, info_ptr); - - - /* if we wanted to write any more text info *after* the image data, we - * would set up text struct(s) here and call png_set_text() again, with - * just the new data; png_set_tIME() could also go here, but it would - * have no effect since we already called it above (only one tIME chunk - * allowed) */ - - - /* set up the transformations: for now, just pack low-bit-depth pixels - * into bytes (one, two or four pixels per byte) */ - - png_set_packing(png_ptr); -/* png_set_shift(png_ptr, &sig_bit); to scale low-bit-depth values */ - - - /* make sure we save our pointers for use in writepng_encode_image() */ - - mainprog_ptr->png_ptr = png_ptr; - mainprog_ptr->info_ptr = info_ptr; - - - /* OK, that's all we need to do for now; return happy */ - - return 0; -} - - - - - -/* returns 0 for success, 2 for libpng (longjmp) problem */ - -int writepng_encode_image(mainprog_info *mainprog_ptr) -{ - png_structp png_ptr = (png_structp)mainprog_ptr->png_ptr; - png_infop info_ptr = (png_infop)mainprog_ptr->info_ptr; - - - /* as always, setjmp() must be called in every function that calls a - * PNG-writing libpng function */ - - if (setjmp(mainprog_ptr->jmpbuf)) { - png_destroy_write_struct(&png_ptr, &info_ptr); - mainprog_ptr->png_ptr = NULL; - mainprog_ptr->info_ptr = NULL; - return 2; - } - - - /* and now we just write the whole image; libpng takes care of interlacing - * for us */ - - png_write_image(png_ptr, mainprog_ptr->row_pointers); - - - /* since that's it, we also close out the end of the PNG file now--if we - * had any text or time info to write after the IDATs, second argument - * would be info_ptr, but we optimize slightly by sending NULL pointer: */ - - png_write_end(png_ptr, NULL); - - return 0; -} - - - - - -/* returns 0 if succeeds, 2 if libpng problem */ - -int writepng_encode_row(mainprog_info *mainprog_ptr) /* NON-interlaced only! */ -{ - png_structp png_ptr = (png_structp)mainprog_ptr->png_ptr; - png_infop info_ptr = (png_infop)mainprog_ptr->info_ptr; - - - /* as always, setjmp() must be called in every function that calls a - * PNG-writing libpng function */ - - if (setjmp(mainprog_ptr->jmpbuf)) { - png_destroy_write_struct(&png_ptr, &info_ptr); - mainprog_ptr->png_ptr = NULL; - mainprog_ptr->info_ptr = NULL; - return 2; - } - - - /* image_data points at our one row of image data */ - - png_write_row(png_ptr, mainprog_ptr->image_data); - - return 0; -} - - - - - -/* returns 0 if succeeds, 2 if libpng problem */ - -int writepng_encode_finish(mainprog_info *mainprog_ptr) /* NON-interlaced! */ -{ - png_structp png_ptr = (png_structp)mainprog_ptr->png_ptr; - png_infop info_ptr = (png_infop)mainprog_ptr->info_ptr; - - - /* as always, setjmp() must be called in every function that calls a - * PNG-writing libpng function */ - - if (setjmp(mainprog_ptr->jmpbuf)) { - png_destroy_write_struct(&png_ptr, &info_ptr); - mainprog_ptr->png_ptr = NULL; - mainprog_ptr->info_ptr = NULL; - return 2; - } - - - /* close out PNG file; if we had any text or time info to write after - * the IDATs, second argument would be info_ptr: */ - - png_write_end(png_ptr, NULL); - - return 0; -} - - - - - -void writepng_cleanup(mainprog_info *mainprog_ptr) -{ - png_structp png_ptr = (png_structp)mainprog_ptr->png_ptr; - png_infop info_ptr = (png_infop)mainprog_ptr->info_ptr; - - if (png_ptr && info_ptr) - png_destroy_write_struct(&png_ptr, &info_ptr); -} - - - - - -static void writepng_error_handler(png_structp png_ptr, png_const_charp msg) -{ - mainprog_info *mainprog_ptr; - - /* This function, aside from the extra step of retrieving the "error - * pointer" (below) and the fact that it exists within the application - * rather than within libpng, is essentially identical to libpng's - * default error handler. The second point is critical: since both - * setjmp() and longjmp() are called from the same code, they are - * guaranteed to have compatible notions of how big a jmp_buf is, - * regardless of whether _BSD_SOURCE or anything else has (or has not) - * been defined. */ - - fprintf(stderr, "writepng libpng error: %s\n", msg); - fflush(stderr); - - mainprog_ptr = png_get_error_ptr(png_ptr); - if (mainprog_ptr == NULL) { /* we are completely hosed now */ - fprintf(stderr, - "writepng severe error: jmpbuf not recoverable; terminating.\n"); - fflush(stderr); - exit(99); - } - - /* Now we have our data structure we can use the information in it - * to return control to our own higher level code (all the points - * where 'setjmp' is called in this file.) This will work with other - * error handling mechanisms as well - libpng always calls png_error - * when it can proceed no further, thus, so long as the error handler - * is intercepted, application code can do its own error recovery. - */ - longjmp(mainprog_ptr->jmpbuf, 1); -} diff --git a/io2d/src/3rd-party/libpng/contrib/gregbook/writepng.h b/io2d/src/3rd-party/libpng/contrib/gregbook/writepng.h deleted file mode 100644 index 78b966b..0000000 --- a/io2d/src/3rd-party/libpng/contrib/gregbook/writepng.h +++ /dev/null @@ -1,133 +0,0 @@ -/*--------------------------------------------------------------------------- - - wpng - simple PNG-writing program writepng.h - - --------------------------------------------------------------------------- - - Copyright (c) 1998-2007 Greg Roelofs. All rights reserved. - - This software is provided "as is," without warranty of any kind, - express or implied. In no event shall the author or contributors - be held liable for any damages arising in any way from the use of - this software. - - The contents of this file are DUAL-LICENSED. You may modify and/or - redistribute this software according to the terms of one of the - following two licenses (at your option): - - - LICENSE 1 ("BSD-like with advertising clause"): - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute - it freely, subject to the following restrictions: - - 1. Redistributions of source code must retain the above copyright - notice, disclaimer, and this list of conditions. - 2. Redistributions in binary form must reproduce the above copyright - notice, disclaimer, and this list of conditions in the documenta- - tion and/or other materials provided with the distribution. - 3. All advertising materials mentioning features or use of this - software must display the following acknowledgment: - - This product includes software developed by Greg Roelofs - and contributors for the book, "PNG: The Definitive Guide," - published by O'Reilly and Associates. - - - LICENSE 2 (GNU GPL v2 or later): - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - ---------------------------------------------------------------------------*/ - -#ifndef TRUE -# define TRUE 1 -# define FALSE 0 -#endif - -#ifndef MAX -# define MAX(a,b) ((a) > (b)? (a) : (b)) -# define MIN(a,b) ((a) < (b)? (a) : (b)) -#endif - -#ifdef DEBUG -# define Trace(x) {fprintf x ; fflush(stderr); fflush(stdout);} -#else -# define Trace(x) ; -#endif - -#define TEXT_TITLE 0x01 -#define TEXT_AUTHOR 0x02 -#define TEXT_DESC 0x04 -#define TEXT_COPY 0x08 -#define TEXT_EMAIL 0x10 -#define TEXT_URL 0x20 - -#define TEXT_TITLE_OFFSET 0 -#define TEXT_AUTHOR_OFFSET 72 -#define TEXT_COPY_OFFSET (2*72) -#define TEXT_EMAIL_OFFSET (3*72) -#define TEXT_URL_OFFSET (4*72) -#define TEXT_DESC_OFFSET (5*72) - -typedef unsigned char uch; -typedef unsigned short ush; -typedef unsigned long ulg; - -typedef struct _mainprog_info { - double gamma; - long width; - long height; - time_t modtime; - FILE *infile; - FILE *outfile; - void *png_ptr; - void *info_ptr; - uch *image_data; - uch **row_pointers; - char *title; - char *author; - char *desc; - char *copyright; - char *email; - char *url; - int filter; /* command-line-filter flag, not PNG row filter! */ - int pnmtype; - int sample_depth; - int interlaced; - int have_bg; - int have_time; - int have_text; - jmp_buf jmpbuf; - uch bg_red; - uch bg_green; - uch bg_blue; -} mainprog_info; - - -/* prototypes for public functions in writepng.c */ - -void writepng_version_info(void); - -int writepng_init(mainprog_info *mainprog_ptr); - -int writepng_encode_image(mainprog_info *mainprog_ptr); - -int writepng_encode_row(mainprog_info *mainprog_ptr); - -int writepng_encode_finish(mainprog_info *mainprog_ptr); - -void writepng_cleanup(mainprog_info *mainprog_ptr); diff --git a/io2d/src/3rd-party/libpng/contrib/libtests/fakepng.c b/io2d/src/3rd-party/libpng/contrib/libtests/fakepng.c deleted file mode 100644 index ba360d1..0000000 --- a/io2d/src/3rd-party/libpng/contrib/libtests/fakepng.c +++ /dev/null @@ -1,57 +0,0 @@ -/* Fake a PNG - just write it out directly. */ -#include -#include /* for crc32 */ - -void -put_uLong(uLong val) -{ - putchar(val >> 24); - putchar(val >> 16); - putchar(val >> 8); - putchar(val >> 0); -} - -void -put_chunk(const unsigned char *chunk, uInt length) -{ - uLong crc; - - put_uLong(length-4); /* Exclude the tag */ - - fwrite(chunk, length, 1, stdout); - - crc = crc32(0, Z_NULL, 0); - put_uLong(crc32(crc, chunk, length)); -} - -const unsigned char signature[] = -{ - 137, 80, 78, 71, 13, 10, 26, 10 -}; - -const unsigned char IHDR[] = -{ - 73, 72, 68, 82, /* IHDR */ - 0, 0, 0, 1, /* width */ - 0, 0, 0, 1, /* height */ - 1, /* bit depth */ - 0, /* color type: greyscale */ - 0, /* compression method */ - 0, /* filter method */ - 0 /* interlace method: none */ -}; - -const unsigned char unknown[] = -{ - 'u', 'n', 'K', 'n' /* "unKn" - private safe to copy */ -}; - -int -main(void) -{ - fwrite(signature, sizeof signature, 1, stdout); - put_chunk(IHDR, sizeof IHDR); - - for(;;) - put_chunk(unknown, sizeof unknown); -} diff --git a/io2d/src/3rd-party/libpng/contrib/libtests/gentests.sh b/io2d/src/3rd-party/libpng/contrib/libtests/gentests.sh deleted file mode 100644 index f0f8d23..0000000 --- a/io2d/src/3rd-party/libpng/contrib/libtests/gentests.sh +++ /dev/null @@ -1,102 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2013 John Cunningham Bowler -# -# Last changed in libpng 1.6.0 [February 14, 2013] -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h -# -# Generate a set of PNG test images. The images are generated in a -# sub-directory called 'tests' by default, however a command line argument will -# change that name. The generation requires a built version of makepng in the -# current directory. -# -usage(){ - exec >&2 - echo "$0 []" - echo ' Generate a set of PNG test files in "directory" ("tests" by default)' - exit 1 -} - -mp="$PWD/makepng" -test -x "$mp" || { - exec >&2 - echo "$0: the 'makepng' program must exist" - echo " in the directory within which this program:" - echo " $mp" - echo " is executed" - usage -} - -# Just one argument: the directory -testdir="tests" -test $# -gt 1 && { - testdir="$1" - shift -} -test $# -eq 0 || usage - -# Take care not to clobber something -if test -e "$testdir" -then - test -d "$testdir" || usage -else - # mkdir -p isn't portable, so do the following - mkdir "$testdir" 2>/dev/null || mkdir -p "$testdir" || usage -fi - -# This fails in a very satisfactory way if it's not accessible -cd "$testdir" -:>"test$$.png" || { - exec >&2 - echo "$testdir: directory not writable" - usage -} -rm "test$$.png" || { - exec >&2 - echo "$testdir: you have create but not write privileges here." - echo " This is unexpected. You have a spurion; "'"'"test$$.png"'"'"." - echo " You need to remove this yourself. Try a different directory." - exit 1 -} - -# Now call makepng ($mp) to create every file we can think of with a -# reasonable name -doit(){ - for gamma in "" --sRGB --linear --1.8 - do - case "$gamma" in - "") - gname=;; - --sRGB) - gname="-srgb";; - --linear) - gname="-lin";; - --1.8) - gname="-18";; - *) - gname="-$gamma";; - esac - "$mp" $gamma "$1" "$2" "test-$1-$2$gname.png" - done -} -# -for ct in gray palette -do - for bd in 1 2 4 8 - do - doit "$ct" "$bd" - done -done -# -doit "gray" "16" -# -for ct in gray-alpha rgb rgb-alpha -do - for bd in 8 16 - do - doit "$ct" "$bd" - done -done diff --git a/io2d/src/3rd-party/libpng/contrib/libtests/makepng.c b/io2d/src/3rd-party/libpng/contrib/libtests/makepng.c deleted file mode 100644 index 9f11b29..0000000 --- a/io2d/src/3rd-party/libpng/contrib/libtests/makepng.c +++ /dev/null @@ -1,1486 +0,0 @@ -/* makepng.c - * - * Copyright (c) 2013 John Cunningham Bowler - * - * Last changed in libpng 1.6.1 [March 28, 2013] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * Make a test PNG image. The arguments are as follows: - * - * makepng [--sRGB|--linear|--1.8] [--color=] color-type bit-depth \ - * [file-name] - * - * The color-type may be numeric (and must match the numbers used by the PNG - * specification) or one of the format names listed below. The bit-depth is the - * component bit depth, or the pixel bit-depth for a color-mapped image. - * - * Without any options no color-space information is written, with the options - * an sRGB or the appropriate gAMA chunk is written. "1.8" refers to the - * display system used on older Apple computers to correct for high ambient - * light levels in the viewing environment; it applies a transform of - * approximately value^(1/1.45) to the color values and so a gAMA chunk of 65909 - * is written (1.45/2.2). - * - * The image data is generated internally. Unless --color is given the images - * used are as follows: - * - * 1 channel: a square image with a diamond, the least luminous colors are on - * the edge of the image, the most luminous in the center. - * - * 2 channels: the color channel increases in luminosity from top to bottom, the - * alpha channel increases in opacity from left to right. - * - * 3 channels: linear combinations of, from the top-left corner clockwise, - * black, green, white, red. - * - * 4 channels: linear combinations of, from the top-left corner clockwise, - * transparent, red, green, blue. - * - * For color-mapped images a four channel color-map is used and the PNG file has - * a tRNS chunk, as follows: - * - * 1-bit: entry 0 is transparent-red, entry 1 is opaque-white - * 2-bit: entry 0: transparent-green - * entry 1: 40%-red - * entry 2: 80%-blue - * entry 3: opaque-white - * 4-bit: the 16 combinations of the 2-bit case - * 8-bit: the 256 combinations of the 4-bit case - * - * The palette always has 2^bit-depth entries and the tRNS chunk one fewer. The - * image is the 1-channel diamond, but using palette index, not luminosity. - * - * Image size is determined by the final pixel depth in bits, i.e. channels x - * bit-depth, as follows: - * - * 8 bits or less: 64x64 - * 16 bits: 256x256 - * More than 16 bits: 1024x1024 - * - * Row filtering is turned off (the 'none' filter is used on every row) and the - * images are not interlaced. - * - * If --color is given then the whole image has that color, color-mapped images - * will have exactly one palette entry and all image files with be 16x16 in - * size. The color value is 1 to 4 decimal numbers as appropriate for the color - * type. - * - * If file-name is given then the PNG is written to that file, else it is - * written to stdout. Notice that stdout is not supported on systems where, by - * default, it assumes text output; this program makes no attempt to change the - * text mode of stdout! - */ -#define _ISOC99_SOURCE /* for strtoull */ - -#include /* for offsetof */ -#include -#include -#include -#include -#include -#include - -#if defined(HAVE_CONFIG_H) && !defined(PNG_NO_CONFIG_H) -# include -#endif - -/* Define the following to use this test against your installed libpng, rather - * than the one being built here: - */ -#ifdef PNG_FREESTANDING_TESTS -# include -#else -# include "../../png.h" -#endif - -/* This structure is used for inserting extra chunks (the --insert argument, not - * documented above.) - */ -typedef struct chunk_insert -{ - struct chunk_insert *next; - void (*insert)(png_structp, png_infop, int, png_charpp); - int nparams; - png_charp parameters[1]; -} chunk_insert; - -static int -channels_of_type(int color_type) -{ - if (color_type & PNG_COLOR_MASK_PALETTE) - return 1; - - else - { - int channels = 1; - - if (color_type & PNG_COLOR_MASK_COLOR) - channels = 3; - - if (color_type & PNG_COLOR_MASK_ALPHA) - return channels + 1; - - else - return channels; - } -} - -static int -pixel_depth_of_type(int color_type, int bit_depth) -{ - return channels_of_type(color_type) * bit_depth; -} - -static unsigned int -image_size_of_type(int color_type, int bit_depth, unsigned int *colors) -{ - if (*colors) - return 16; - - else - { - int pixel_depth = pixel_depth_of_type(color_type, bit_depth); - - if (pixel_depth < 8) - return 64; - - else if (pixel_depth > 16) - return 1024; - - else - return 256; - } -} - -static void -set_color(png_colorp color, png_bytep trans, unsigned int red, - unsigned int green, unsigned int blue, unsigned int alpha, - png_const_bytep gamma_table) -{ - color->red = gamma_table[red]; - color->green = gamma_table[green]; - color->blue = gamma_table[blue]; - *trans = (png_byte)alpha; -} - -static int -generate_palette(png_colorp palette, png_bytep trans, int bit_depth, - png_const_bytep gamma_table, unsigned int *colors) -{ - /* - * 1-bit: entry 0 is transparent-red, entry 1 is opaque-white - * 2-bit: entry 0: transparent-green - * entry 1: 40%-red - * entry 2: 80%-blue - * entry 3: opaque-white - * 4-bit: the 16 combinations of the 2-bit case - * 8-bit: the 256 combinations of the 4-bit case - */ - switch (colors[0]) - { - default: - fprintf(stderr, "makepng: --colors=...: invalid count %u\n", - colors[0]); - exit(1); - - case 1: - set_color(palette+0, trans+0, colors[1], colors[1], colors[1], 255, - gamma_table); - return 1; - - case 2: - set_color(palette+0, trans+0, colors[1], colors[1], colors[1], - colors[2], gamma_table); - return 1; - - case 3: - set_color(palette+0, trans+0, colors[1], colors[2], colors[3], 255, - gamma_table); - return 1; - - case 4: - set_color(palette+0, trans+0, colors[1], colors[2], colors[3], - colors[4], gamma_table); - return 1; - - case 0: - if (bit_depth == 1) - { - set_color(palette+0, trans+0, 255, 0, 0, 0, gamma_table); - set_color(palette+1, trans+1, 255, 255, 255, 255, gamma_table); - return 2; - } - - else - { - unsigned int size = 1U << (bit_depth/2); /* 2, 4 or 16 */ - unsigned int x, y, ip; - - for (x=0; x> 3; - - if (offset < rowbytes && (bit_depth < 16 || offset+1 < rowbytes)) - { - row += offset; - - switch (bit_depth) - { - case 1: - case 2: - case 4: - /* Don't gamma correct - values get smashed */ - { - unsigned int shift = (8 - bit_depth) - (x & 0x7U); - - mask <<= shift; - value = (value << shift) & mask; - *row = (png_byte)((*row & ~mask) | value); - } - return; - - default: - fprintf(stderr, "makepng: bad bit depth (internal error)\n"); - exit(1); - - case 16: - value = (unsigned int)floor(65535*pow(value/65535.,conv)+.5); - *row++ = (png_byte)(value >> 8); - *row = (png_byte)value; - return; - - case 8: - *row = gamma_table[value]; - return; - } - } - - else - { - fprintf(stderr, "makepng: row buffer overflow (internal error)\n"); - exit(1); - } - } - - else - { - fprintf(stderr, "makepng: component overflow (internal error)\n"); - exit(1); - } -} - -static void -generate_row(png_bytep row, size_t rowbytes, unsigned int y, int color_type, - int bit_depth, png_const_bytep gamma_table, double conv, - unsigned int *colors) -{ - png_uint_32 size_max = image_size_of_type(color_type, bit_depth, colors)-1; - png_uint_32 depth_max = (1U << bit_depth)-1; /* up to 65536 */ - - if (colors[0] == 0) switch (channels_of_type(color_type)) - { - /* 1 channel: a square image with a diamond, the least luminous colors are on - * the edge of the image, the most luminous in the center. - */ - case 1: - { - png_uint_32 x; - png_uint_32 base = 2*size_max - abs(2*y-size_max); - - for (x=0; x<=size_max; ++x) - { - png_uint_32 luma = base - abs(2*x-size_max); - - /* 'luma' is now in the range 0..2*size_max, we need - * 0..depth_max - */ - luma = (luma*depth_max + size_max) / (2*size_max); - set_value(row, rowbytes, x, bit_depth, luma, gamma_table, conv); - } - } - break; - - /* 2 channels: the color channel increases in luminosity from top to bottom, - * the alpha channel increases in opacity from left to right. - */ - case 2: - { - png_uint_32 alpha = (depth_max * y * 2 + size_max) / (2 * size_max); - png_uint_32 x; - - for (x=0; x<=size_max; ++x) - { - set_value(row, rowbytes, 2*x, bit_depth, - (depth_max * x * 2 + size_max) / (2 * size_max), gamma_table, - conv); - set_value(row, rowbytes, 2*x+1, bit_depth, alpha, gamma_table, - conv); - } - } - break; - - /* 3 channels: linear combinations of, from the top-left corner clockwise, - * black, green, white, red. - */ - case 3: - { - /* x0: the black->red scale (the value of the red component) at the - * start of the row (blue and green are 0). - * x1: the green->white scale (the value of the red and blue - * components at the end of the row; green is depth_max). - */ - png_uint_32 Y = (depth_max * y * 2 + size_max) / (2 * size_max); - png_uint_32 x; - - /* Interpolate x/depth_max from start to end: - * - * start end difference - * red: Y Y 0 - * green: 0 depth_max depth_max - * blue: 0 Y Y - */ - for (x=0; x<=size_max; ++x) - { - set_value(row, rowbytes, 3*x+0, bit_depth, /* red */ Y, - gamma_table, conv); - set_value(row, rowbytes, 3*x+1, bit_depth, /* green */ - (depth_max * x * 2 + size_max) / (2 * size_max), - gamma_table, conv); - set_value(row, rowbytes, 3*x+2, bit_depth, /* blue */ - (Y * x * 2 + size_max) / (2 * size_max), - gamma_table, conv); - } - } - break; - - /* 4 channels: linear combinations of, from the top-left corner clockwise, - * transparent, red, green, blue. - */ - case 4: - { - /* x0: the transparent->blue scale (the value of the blue and alpha - * components) at the start of the row (red and green are 0). - * x1: the red->green scale (the value of the red and green - * components at the end of the row; blue is 0 and alpha is - * depth_max). - */ - png_uint_32 Y = (depth_max * y * 2 + size_max) / (2 * size_max); - png_uint_32 x; - - /* Interpolate x/depth_max from start to end: - * - * start end difference - * red: 0 depth_max-Y depth_max-Y - * green: 0 Y Y - * blue: Y 0 -Y - * alpha: Y depth_max depth_max-Y - */ - for (x=0; x<=size_max; ++x) - { - set_value(row, rowbytes, 4*x+0, bit_depth, /* red */ - ((depth_max-Y) * x * 2 + size_max) / (2 * size_max), - gamma_table, conv); - set_value(row, rowbytes, 4*x+1, bit_depth, /* green */ - (Y * x * 2 + size_max) / (2 * size_max), - gamma_table, conv); - set_value(row, rowbytes, 4*x+2, bit_depth, /* blue */ - Y - (Y * x * 2 + size_max) / (2 * size_max), - gamma_table, conv); - set_value(row, rowbytes, 4*x+3, bit_depth, /* alpha */ - Y + ((depth_max-Y) * x * 2 + size_max) / (2 * size_max), - gamma_table, conv); - } - } - break; - - default: - fprintf(stderr, "makepng: internal bad channel count\n"); - exit(2); - } - - else if (color_type & PNG_COLOR_MASK_PALETTE) - { - /* Palette with fixed color: the image rows are all 0 and the image width - * is 16. - */ - memset(row, 0, rowbytes); - } - - else if (colors[0] == channels_of_type(color_type)) - switch (channels_of_type(color_type)) - { - case 1: - { - const png_uint_32 luma = colors[1]; - png_uint_32 x; - - for (x=0; x<=size_max; ++x) - set_value(row, rowbytes, x, bit_depth, luma, gamma_table, - conv); - } - break; - - case 2: - { - const png_uint_32 luma = colors[1]; - const png_uint_32 alpha = colors[2]; - png_uint_32 x; - - for (x=0; x 0 && gamma < 1000) - gamma = PNG_FP_1; - - if (gamma > 0) - real_gamma = gamma; - - { - unsigned int i; - - if (real_gamma == 45455) for (i=0; i<256; ++i) - { - gamma_table[i] = (png_byte)i; - conv = 1.; - } - - else - { - /* Convert 'i' from sRGB (45455) to real_gamma, this makes - * the images look the same regardless of the gAMA chunk. - */ - conv = real_gamma; - conv /= 45455; - - gamma_table[0] = 0; - - for (i=1; i<255; ++i) - gamma_table[i] = (png_byte)floor(pow(i/255.,conv) * 255 + .5); - - gamma_table[255] = 255; - } - } - - png_set_IHDR(png_ptr, info_ptr, size, size, bit_depth, color_type, - PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); - - if (color_type & PNG_COLOR_MASK_PALETTE) - { - int npalette; - png_color palette[256]; - png_byte trans[256]; - - npalette = generate_palette(palette, trans, bit_depth, gamma_table, - colors); - png_set_PLTE(png_ptr, info_ptr, palette, npalette); - png_set_tRNS(png_ptr, info_ptr, trans, npalette-1, - NULL/*transparent color*/); - - /* Reset gamma_table to prevent the image rows being changed */ - for (npalette=0; npalette<256; ++npalette) - gamma_table[npalette] = (png_byte)npalette; - } - - if (gamma == PNG_DEFAULT_sRGB) - png_set_sRGB(png_ptr, info_ptr, PNG_sRGB_INTENT_ABSOLUTE); - - else if (gamma > 0) /* Else don't set color space information */ - { - png_set_gAMA_fixed(png_ptr, info_ptr, real_gamma); - - /* Just use the sRGB values here. */ - png_set_cHRM_fixed(png_ptr, info_ptr, - /* color x y */ - /* white */ 31270, 32900, - /* red */ 64000, 33000, - /* green */ 30000, 60000, - /* blue */ 15000, 6000 - ); - } - - /* Insert extra information. */ - while (insert != NULL) - { - insert->insert(png_ptr, info_ptr, insert->nparams, insert->parameters); - insert = insert->next; - } - - /* Write the file header. */ - png_write_info(png_ptr, info_ptr); - - /* Restrict the filters */ - png_set_filter(png_ptr, PNG_FILTER_TYPE_BASE, filters); - - { - int passes = png_set_interlace_handling(png_ptr); - int pass; - png_size_t rowbytes = png_get_rowbytes(png_ptr, info_ptr); - - row = malloc(rowbytes); - - if (row == NULL) - png_error(png_ptr, "OOM allocating row buffer"); - - for (pass = 0; pass < passes; ++pass) - { - unsigned int y; - - for (y=0; y 0) - { - /* Round up to a multiple of 4 here to allow an iCCP profile - * to be padded to a 4x boundary. - */ - png_bytep data = malloc((total+3)&~3); - - if (data != NULL) - { - size_t new_size = 0; - - for (;;) - { - ch = getc(fp); - if (ch == EOF) break; - data[new_size++] = (png_byte)ch; - } - - if (ferror(fp) || new_size != total) - { - perror("temporary file"); - fprintf(stderr, "temporary file read error\n"); - free(data); - } - - else - { - (void)fclose(fp); - *result = data; - return total; - } - } - - else - fprintf(stderr, "%s: out of memory loading file\n", name); - } - - else - fprintf(stderr, "%s: empty file\n", name); - } - } - } - - else - { - perror(name); - fprintf(stderr, "%s: open failed\n", name); - } - - fclose(fp); - } - - else - fprintf(stderr, "makepng: %s: could not open temporary file\n", name); - - exit(1); - return 0; -} - -static png_size_t -load_fake(png_charp param, png_bytepp profile) -{ - char *endptr = NULL; - unsigned long long int size = strtoull(param, &endptr, 0/*base*/); - - /* The 'fake' format is *[string] */ - if (endptr != NULL && *endptr == '*') - { - size_t len = strlen(++endptr); - size_t result = (size_t)size; - - if (len == 0) len = 1; /* capture the terminating '\0' */ - - /* Now repeat that string to fill 'size' bytes. */ - if (result == size && (*profile = malloc(result)) != NULL) - { - png_bytep out = *profile; - - if (len == 1) - memset(out, *endptr, result); - - else - { - while (size >= len) - { - memcpy(out, endptr, len); - out += len; - size -= len; - } - memcpy(out, endptr, size); - } - - return result; - } - - else - { - fprintf(stderr, "%s: size exceeds system limits\n", param); - exit(1); - } - } - - return 0; -} - -static void -check_param_count(int nparams, int expect) -{ - if (nparams != expect) - { - fprintf(stderr, "bad parameter count (internal error)\n"); - exit(1); - } -} - -static void -insert_iCCP(png_structp png_ptr, png_infop info_ptr, int nparams, - png_charpp params) -{ - png_bytep profile = NULL; - png_uint_32 proflen = 0; - int result; - - check_param_count(nparams, 2); - - switch (params[1][0]) - { - case '<': - { - png_size_t filelen = load_file(params[1]+1, &profile); - if (filelen > 0xfffffffc) /* Maximum profile length */ - { - fprintf(stderr, "%s: file too long (%lu) for an ICC profile\n", - params[1]+1, (unsigned long)filelen); - exit(1); - } - - proflen = (png_uint_32)filelen; - } - break; - - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - { - png_size_t fake_len = load_fake(params[1], &profile); - - if (fake_len > 0) /* else a simple parameter */ - { - if (fake_len > 0xffffffff) /* Maximum profile length */ - { - fprintf(stderr, - "%s: fake data too long (%lu) for an ICC profile\n", - params[1], (unsigned long)fake_len); - exit(1); - } - proflen = (png_uint_32)(fake_len & ~3U); - /* Always fix up the profile length. */ - png_save_uint_32(profile, proflen); - break; - } - } - - default: - fprintf(stderr, "--insert iCCP \"%s\": unrecognized\n", params[1]); - fprintf(stderr, " use '<' to read a file: \" 3) - { - png_uint_32 prof_header = png_get_uint_32(profile); - - if (prof_header != proflen) - { - fprintf(stderr, "--insert iCCP %s: profile length field wrong:\n", - params[1]); - fprintf(stderr, " actual %lu, recorded value %lu (corrected)\n", - (unsigned long)proflen, (unsigned long)prof_header); - png_save_uint_32(profile, proflen); - } - } - - if (result && profile != NULL && proflen >=4) - png_set_iCCP(png_ptr, info_ptr, params[0], PNG_COMPRESSION_TYPE_BASE, - profile, proflen); - - if (profile) - free(profile); - - if (!result) - exit(1); -} - -static void -clear_text(png_text *text, png_charp keyword) -{ - text->compression = -1; /* none */ - text->key = keyword; - text->text = NULL; - text->text_length = 0; /* libpng calculates this */ - text->itxt_length = 0; /* libpng calculates this */ - text->lang = NULL; - text->lang_key = NULL; -} - -static void -set_text(png_structp png_ptr, png_infop info_ptr, png_textp text, - png_charp param) -{ - switch (param[0]) - { - case '<': - { - png_bytep file = NULL; - - text->text_length = load_file(param+1, &file); - text->text = (png_charp)file; - } - break; - - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - { - png_bytep data = NULL; - png_size_t fake_len = load_fake(param, &data); - - if (fake_len > 0) /* else a simple parameter */ - { - text->text_length = fake_len; - text->text = (png_charp)data; - break; - } - } - - default: - text->text = param; - break; - } - - png_set_text(png_ptr, info_ptr, text, 1); - - if (text->text != param) - free(text->text); -} - -static void -insert_tEXt(png_structp png_ptr, png_infop info_ptr, int nparams, - png_charpp params) -{ - png_text text; - - check_param_count(nparams, 2); - clear_text(&text, params[0]); - set_text(png_ptr, info_ptr, &text, params[1]); -} - -static void -insert_zTXt(png_structp png_ptr, png_infop info_ptr, int nparams, - png_charpp params) -{ - png_text text; - - check_param_count(nparams, 2); - clear_text(&text, params[0]); - text.compression = 0; /* deflate */ - set_text(png_ptr, info_ptr, &text, params[1]); -} - -static void -insert_iTXt(png_structp png_ptr, png_infop info_ptr, int nparams, - png_charpp params) -{ - png_text text; - - check_param_count(nparams, 4); - clear_text(&text, params[0]); - text.compression = 2; /* iTXt + deflate */ - text.lang = params[1];/* language tag */ - text.lang_key = params[2]; /* translated keyword */ - set_text(png_ptr, info_ptr, &text, params[3]); -} - -static void -insert_hIST(png_structp png_ptr, png_infop info_ptr, int nparams, png_charpp params) -{ - int i; - png_uint_16 freq[256]; - - /* libpng takes the count from the PLTE count; we don't check it here but we - * do set the array to 0 for unspecified entries. - */ - memset(freq, 0, sizeof freq); - for (i=0; inext = NULL; - cip->insert = insert; - cip->nparams = nparams; - for (i=0; iparameters[i] = list[i]; - - return cip; -} - -static chunk_insert * -find_insert(png_const_charp what, png_charp param) -{ - png_uint_32 chunk = 0; - png_charp parameter_list[1024]; - int i, nparams; - - /* Assemble the chunk name */ - for (i=0; i<4; ++i) - { - char ch = what[i]; - - if ((ch >= 65 && ch <= 90) || (ch >= 97 && ch <= 122)) - chunk = (chunk << 8) + what[i]; - - else - break; - } - - if (i < 4 || what[4] != 0) - { - fprintf(stderr, "makepng --insert \"%s\": invalid chunk name\n", what); - exit(1); - } - - /* Assemble the parameter list. */ - nparams = find_parameters(what, param, parameter_list, 1024); - -# define CHUNK(a,b,c,d) (((a)<<24)+((b)<<16)+((c)<<8)+(d)) - - switch (chunk) - { - case CHUNK(105,67,67,80): /* iCCP */ - if (nparams == 2) - return make_insert(what, insert_iCCP, nparams, parameter_list); - break; - - case CHUNK(116,69,88,116): /* tEXt */ - if (nparams == 2) - return make_insert(what, insert_tEXt, nparams, parameter_list); - break; - - case CHUNK(122,84,88,116): /* zTXt */ - if (nparams == 2) - return make_insert(what, insert_zTXt, nparams, parameter_list); - break; - - case CHUNK(105,84,88,116): /* iTXt */ - if (nparams == 4) - return make_insert(what, insert_iTXt, nparams, parameter_list); - break; - - case CHUNK(104,73,83,84): /* hIST */ - if (nparams <= 256) - return make_insert(what, insert_hIST, nparams, parameter_list); - break; - -#if 0 - case CHUNK(115,80,76,84): /* sPLT */ - return make_insert(what, insert_sPLT, nparams, parameter_list); -#endif - - default: - fprintf(stderr, "makepng --insert \"%s\": unrecognized chunk name\n", - what); - exit(1); - } - - bad_parameter_count(what, nparams); - return NULL; -} - -/* This is a not-very-good parser for a sequence of numbers (including 0). It - * doesn't accept some apparently valid things, but it accepts all the sensible - * combinations. - */ -static void -parse_color(char *arg, unsigned int *colors) -{ - unsigned int ncolors = 0; - - while (*arg && ncolors < 4) - { - char *ep = arg; - - unsigned long ul = strtoul(arg, &ep, 0); - - if (ul > 65535) - { - fprintf(stderr, "makepng --color=...'%s': too big\n", arg); - exit(1); - } - - if (ep == arg) - { - fprintf(stderr, "makepng --color=...'%s': not a valid color\n", arg); - exit(1); - } - - if (*ep) ++ep; /* skip a separator */ - arg = ep; - - colors[++ncolors] = (unsigned int)ul; /* checked above */ - } - - if (*arg) - { - fprintf(stderr, "makepng --color=...'%s': too many values\n", arg); - exit(1); - } - - *colors = ncolors; -} - -int -main(int argc, char **argv) -{ - FILE *fp = stdout; - const char *file_name = NULL; - int color_type = 8; /* invalid */ - int bit_depth = 32; /* invalid */ - unsigned int colors[5]; - unsigned int filters = PNG_ALL_FILTERS; - png_fixed_point gamma = 0; /* not set */ - chunk_insert *head_insert = NULL; - chunk_insert **insert_ptr = &head_insert; - - memset(colors, 0, sizeof colors); - - while (--argc > 0) - { - char *arg = *++argv; - - if (strcmp(arg, "--sRGB") == 0) - { - gamma = PNG_DEFAULT_sRGB; - continue; - } - - if (strcmp(arg, "--linear") == 0) - { - gamma = PNG_FP_1; - continue; - } - - if (strcmp(arg, "--1.8") == 0) - { - gamma = PNG_GAMMA_MAC_18; - continue; - } - - if (strcmp(arg, "--nofilters") == 0) - { - filters = PNG_FILTER_NONE; - continue; - } - - if (strncmp(arg, "--color=", 8) == 0) - { - parse_color(arg+8, colors); - continue; - } - - if (argc >= 3 && strcmp(arg, "--insert") == 0) - { - png_const_charp what = *++argv; - png_charp param = *++argv; - chunk_insert *new_insert; - - argc -= 2; - - new_insert = find_insert(what, param); - - if (new_insert != NULL) - { - *insert_ptr = new_insert; - insert_ptr = &new_insert->next; - } - - continue; - } - - if (arg[0] == '-') - { - fprintf(stderr, "makepng: %s: invalid option\n", arg); - exit(1); - } - - if (strcmp(arg, "palette") == 0) - { - color_type = PNG_COLOR_TYPE_PALETTE; - continue; - } - - if (strncmp(arg, "gray", 4) == 0) - { - if (arg[4] == 0) - { - color_type = PNG_COLOR_TYPE_GRAY; - continue; - } - - else if (strcmp(arg+4, "a") == 0 || - strcmp(arg+4, "alpha") == 0 || - strcmp(arg+4, "-alpha") == 0) - { - color_type = PNG_COLOR_TYPE_GRAY_ALPHA; - continue; - } - } - - if (strncmp(arg, "rgb", 3) == 0) - { - if (arg[3] == 0) - { - color_type = PNG_COLOR_TYPE_RGB; - continue; - } - - else if (strcmp(arg+3, "a") == 0 || - strcmp(arg+3, "alpha") == 0 || - strcmp(arg+3, "-alpha") == 0) - { - color_type = PNG_COLOR_TYPE_RGB_ALPHA; - continue; - } - } - - if (color_type == 8 && isdigit(arg[0])) - { - color_type = atoi(arg); - if (color_type < 0 || color_type > 6 || color_type == 1 || - color_type == 5) - { - fprintf(stderr, "makepng: %s: not a valid color type\n", arg); - exit(1); - } - - continue; - } - - if (bit_depth == 32 && isdigit(arg[0])) - { - bit_depth = atoi(arg); - if (bit_depth <= 0 || bit_depth > 16 || - (bit_depth & -bit_depth) != bit_depth) - { - fprintf(stderr, "makepng: %s: not a valid bit depth\n", arg); - exit(1); - } - - continue; - } - - if (argc == 1) /* It's the file name */ - { - fp = fopen(arg, "wb"); - if (fp == NULL) - { - fprintf(stderr, "%s: %s: could not open\n", arg, strerror(errno)); - exit(1); - } - - file_name = arg; - continue; - } - - fprintf(stderr, "makepng: %s: unknown argument\n", arg); - exit(1); - } /* argument while loop */ - - if (color_type == 8 || bit_depth == 32) - { - fprintf(stderr, "usage: makepng [--sRGB|--linear|--1.8] " - "[--color=...] color-type bit-depth [file-name]\n" - " Make a test PNG file, by default writes to stdout.\n"); - exit(1); - } - - /* Check the colors */ - { - const unsigned int lim = (color_type == PNG_COLOR_TYPE_PALETTE ? 255U : - (1U< lim) - { - fprintf(stderr, "makepng: --color=...: %u out of range [0..%u]\n", - colors[i], lim); - exit(1); - } - } - - /* Restrict the filters for more speed to those we know are used for the - * generated images. - */ - if (filters == PNG_ALL_FILTERS) - { - if ((color_type & PNG_COLOR_MASK_PALETTE) != 0 || bit_depth < 8) - filters = PNG_FILTER_NONE; - - else if (color_type & PNG_COLOR_MASK_COLOR) /* rgb */ - { - if (bit_depth == 8) - filters &= ~(PNG_FILTER_NONE | PNG_FILTER_AVG); - - else - filters = PNG_FILTER_SUB | PNG_FILTER_PAETH; - } - - else /* gray 8 or 16-bit */ - filters &= ~PNG_FILTER_NONE; - } - - { - int ret = write_png(&file_name, fp, color_type, bit_depth, gamma, - head_insert, filters, colors); - - if (ret != 0 && file_name != NULL) - remove(file_name); - - return ret; - } -} diff --git a/io2d/src/3rd-party/libpng/contrib/libtests/pngstest.c b/io2d/src/3rd-party/libpng/contrib/libtests/pngstest.c deleted file mode 100644 index ff9eadf..0000000 --- a/io2d/src/3rd-party/libpng/contrib/libtests/pngstest.c +++ /dev/null @@ -1,3807 +0,0 @@ -/*- - * pngstest.c - * - * Copyright (c) 2013 John Cunningham Bowler - * - * Last changed in libpng 1.6.8 [(PENDING RELEASE)] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * Test for the PNG 'simplified' APIs. - */ -#define _ISOC90_SOURCE 1 -#define MALLOC_CHECK_ 2/*glibc facility: turn on debugging*/ - -#include -#include -#include -#include -#include -#include -#include - -#if defined(HAVE_CONFIG_H) && !defined(PNG_NO_CONFIG_H) -# include -#endif - -/* Define the following to use this test against your installed libpng, rather - * than the one being built here: - */ -#ifdef PNG_FREESTANDING_TESTS -# include -#else -# include "../../png.h" -#endif - -#ifdef PNG_SIMPLIFIED_READ_SUPPORTED /* Else nothing can be done */ -#include "../tools/sRGB.h" - -/* KNOWN ISSUES - * - * These defines switch on alternate algorithms for format conversions to match - * the current libpng implementation; they are set to allow pngstest to pass - * even though libpng is producing answers that are not as correct as they - * should be. - */ -#define ALLOW_UNUSED_GPC 0 - /* If true include unused static GPC functions and declare an external array - * of them to hide the fact that they are unused. This is for development - * use while testing the correct function to use to take into account libpng - * misbehavior, such as using a simple power law to correct sRGB to linear. - */ - -/* The following is to support direct compilation of this file as C++ */ -#ifdef __cplusplus -# define voidcast(type, value) static_cast(value) -# define aligncastconst(type, value) \ - static_cast(static_cast(value)) -#else -# define voidcast(type, value) (value) -# define aligncastconst(type, value) ((const void*)(value)) -#endif /* __cplusplus */ - -/* During parallel runs of pngstest each temporary file needs a unique name, - * this is used to permit uniqueness using a command line argument which can be - * up to 22 characters long. - */ -static char tmpf[23] = "TMP"; - -/* Generate random bytes. This uses a boring repeatable algorithm and it - * is implemented here so that it gives the same set of numbers on every - * architecture. It's a linear congruential generator (Knuth or Sedgewick - * "Algorithms") but it comes from the 'feedback taps' table in Horowitz and - * Hill, "The Art of Electronics". - */ -static void -make_random_bytes(png_uint_32* seed, void* pv, size_t size) -{ - png_uint_32 u0 = seed[0], u1 = seed[1]; - png_bytep bytes = voidcast(png_bytep, pv); - - /* There are thirty three bits, the next bit in the sequence is bit-33 XOR - * bit-20. The top 1 bit is in u1, the bottom 32 are in u0. - */ - size_t i; - for (i=0; i> (20-8)) ^ ((u1 << 7) | (u0 >> (32-7)))) & 0xff; - u1 <<= 8; - u1 |= u0 >> 24; - u0 <<= 8; - u0 |= u; - *bytes++ = (png_byte)u; - } - - seed[0] = u0; - seed[1] = u1; -} - -static void -random_color(png_colorp color) -{ - static png_uint_32 color_seed[2] = { 0x12345678, 0x9abcdef }; - make_random_bytes(color_seed, color, sizeof *color); -} - -/* Math support - neither Cygwin nor Visual Studio have C99 support and we need - * a predictable rounding function, so make one here: - */ -static double -closestinteger(double x) -{ - return floor(x + .5); -} - -/* Cast support: remove GCC whines. */ -static png_byte -u8d(double d) -{ - d = closestinteger(d); - return (png_byte)d; -} - -static png_uint_16 -u16d(double d) -{ - d = closestinteger(d); - return (png_uint_16)d; -} - -/* sRGB support: use exact calculations rounded to the nearest int, see the - * fesetround() call in main(). sRGB_to_d optimizes the 8 to 16-bit conversion. - */ -static double sRGB_to_d[256]; -static double g22_to_d[256]; - -static void -init_sRGB_to_d(void) -{ - int i; - - sRGB_to_d[0] = 0; - for (i=1; i<255; ++i) - sRGB_to_d[i] = linear_from_sRGB(i/255.); - sRGB_to_d[255] = 1; - - g22_to_d[0] = 0; - for (i=1; i<255; ++i) - g22_to_d[i] = pow(i/255., 1/.45455); - g22_to_d[255] = 1; -} - -static png_byte -sRGB(double linear /*range 0.0 .. 1.0*/) -{ - return u8d(255 * sRGB_from_linear(linear)); -} - -static png_byte -isRGB(int fixed_linear) -{ - return sRGB(fixed_linear / 65535.); -} - -#if 0 /* not used */ -static png_byte -unpremultiply(int component, int alpha) -{ - if (alpha <= component) - return 255; /* Arbitrary, but consistent with the libpng code */ - - else if (alpha >= 65535) - return isRGB(component); - - else - return sRGB((double)component / alpha); -} -#endif - -static png_uint_16 -ilinear(int fixed_srgb) -{ - return u16d(65535 * sRGB_to_d[fixed_srgb]); -} - -static png_uint_16 -ilineara(int fixed_srgb, int alpha) -{ - return u16d((257 * alpha) * sRGB_to_d[fixed_srgb]); -} - -static png_uint_16 -ilinear_g22(int fixed_srgb) -{ - return u16d(65535 * g22_to_d[fixed_srgb]); -} - -#if ALLOW_UNUSED_GPC -static png_uint_16 -ilineara_g22(int fixed_srgb, int alpha) -{ - return u16d((257 * alpha) * g22_to_d[fixed_srgb]); -} -#endif - -static double -YfromRGBint(int ir, int ig, int ib) -{ - double r = ir; - double g = ig; - double b = ib; - return YfromRGB(r, g, b); -} - -#if 0 /* unused */ -/* The error that results from using a 2.2 power law in place of the correct - * sRGB transform, given an 8-bit value which might be either sRGB or power-law. - */ -static int -power_law_error8(int value) -{ - if (value > 0 && value < 255) - { - double vd = value / 255.; - double e = fabs( - pow(sRGB_to_d[value], 1/2.2) - sRGB_from_linear(pow(vd, 2.2))); - - /* Always allow an extra 1 here for rounding errors */ - e = 1+floor(255 * e); - return (int)e; - } - - return 0; -} - -static int error_in_sRGB_roundtrip = 56; /* by experiment */ -static int -power_law_error16(int value) -{ - if (value > 0 && value < 65535) - { - /* Round trip the value through an 8-bit representation but using - * non-matching to/from conversions. - */ - double vd = value / 65535.; - double e = fabs( - pow(sRGB_from_linear(vd), 2.2) - linear_from_sRGB(pow(vd, 1/2.2))); - - /* Always allow an extra 1 here for rounding errors */ - e = error_in_sRGB_roundtrip+floor(65535 * e); - return (int)e; - } - - return 0; -} - -static int -compare_8bit(int v1, int v2, int error_limit, int multiple_algorithms) -{ - int e = abs(v1-v2); - int ev1, ev2; - - if (e <= error_limit) - return 1; - - if (!multiple_algorithms) - return 0; - - ev1 = power_law_error8(v1); - if (e <= ev1) - return 1; - - ev2 = power_law_error8(v2); - if (e <= ev2) - return 1; - - return 0; -} - -static int -compare_16bit(int v1, int v2, int error_limit, int multiple_algorithms) -{ - int e = abs(v1-v2); - int ev1, ev2; - - if (e <= error_limit) - return 1; - - /* "multiple_algorithms" in this case means that a color-map has been - * involved somewhere, so we can deduce that the values were forced to 8-bit - * (like the via_linear case for 8-bit.) - */ - if (!multiple_algorithms) - return 0; - - ev1 = power_law_error16(v1); - if (e <= ev1) - return 1; - - ev2 = power_law_error16(v2); - if (e <= ev2) - return 1; - - return 0; -} -#endif /* unused */ - -#define READ_FILE 1 /* else memory */ -#define USE_STDIO 2 /* else use file name */ -#define STRICT 4 /* fail on warnings too */ -#define VERBOSE 8 -#define KEEP_TMPFILES 16 /* else delete temporary files */ -#define KEEP_GOING 32 -#define ACCUMULATE 64 -#define FAST_WRITE 128 -#define sRGB_16BIT 256 - -static void -print_opts(png_uint_32 opts) -{ - if (opts & READ_FILE) - printf(" --file"); - if (opts & USE_STDIO) - printf(" --stdio"); - if (opts & STRICT) - printf(" --strict"); - if (opts & VERBOSE) - printf(" --verbose"); - if (opts & KEEP_TMPFILES) - printf(" --preserve"); - if (opts & KEEP_GOING) - printf(" --keep-going"); - if (opts & ACCUMULATE) - printf(" --accumulate"); - if (!(opts & FAST_WRITE)) /* --fast is currently the default */ - printf(" --slow"); - if (opts & sRGB_16BIT) - printf(" --sRGB-16bit"); -} - -#define FORMAT_NO_CHANGE 0x80000000 /* additional flag */ - -/* A name table for all the formats - defines the format of the '+' arguments to - * pngstest. - */ -#define FORMAT_COUNT 64 -#define FORMAT_MASK 0x3f -static PNG_CONST char * PNG_CONST format_names[FORMAT_COUNT] = -{ - "sRGB-gray", - "sRGB-gray+alpha", - "sRGB-rgb", - "sRGB-rgb+alpha", - "linear-gray", - "linear-gray+alpha", - "linear-rgb", - "linear-rgb+alpha", - - "color-mapped-sRGB-gray", - "color-mapped-sRGB-gray+alpha", - "color-mapped-sRGB-rgb", - "color-mapped-sRGB-rgb+alpha", - "color-mapped-linear-gray", - "color-mapped-linear-gray+alpha", - "color-mapped-linear-rgb", - "color-mapped-linear-rgb+alpha", - - "sRGB-gray", - "sRGB-gray+alpha", - "sRGB-bgr", - "sRGB-bgr+alpha", - "linear-gray", - "linear-gray+alpha", - "linear-bgr", - "linear-bgr+alpha", - - "color-mapped-sRGB-gray", - "color-mapped-sRGB-gray+alpha", - "color-mapped-sRGB-bgr", - "color-mapped-sRGB-bgr+alpha", - "color-mapped-linear-gray", - "color-mapped-linear-gray+alpha", - "color-mapped-linear-bgr", - "color-mapped-linear-bgr+alpha", - - "sRGB-gray", - "alpha+sRGB-gray", - "sRGB-rgb", - "alpha+sRGB-rgb", - "linear-gray", - "alpha+linear-gray", - "linear-rgb", - "alpha+linear-rgb", - - "color-mapped-sRGB-gray", - "color-mapped-alpha+sRGB-gray", - "color-mapped-sRGB-rgb", - "color-mapped-alpha+sRGB-rgb", - "color-mapped-linear-gray", - "color-mapped-alpha+linear-gray", - "color-mapped-linear-rgb", - "color-mapped-alpha+linear-rgb", - - "sRGB-gray", - "alpha+sRGB-gray", - "sRGB-bgr", - "alpha+sRGB-bgr", - "linear-gray", - "alpha+linear-gray", - "linear-bgr", - "alpha+linear-bgr", - - "color-mapped-sRGB-gray", - "color-mapped-alpha+sRGB-gray", - "color-mapped-sRGB-bgr", - "color-mapped-alpha+sRGB-bgr", - "color-mapped-linear-gray", - "color-mapped-alpha+linear-gray", - "color-mapped-linear-bgr", - "color-mapped-alpha+linear-bgr", -}; - -/* Decode an argument to a format number. */ -static png_uint_32 -formatof(const char *arg) -{ - char *ep; - unsigned long format = strtoul(arg, &ep, 0); - - if (ep > arg && *ep == 0 && format < FORMAT_COUNT) - return (png_uint_32)format; - - else for (format=0; format < FORMAT_COUNT; ++format) - { - if (strcmp(format_names[format], arg) == 0) - return (png_uint_32)format; - } - - fprintf(stderr, "pngstest: format name '%s' invalid\n", arg); - return FORMAT_COUNT; -} - -/* Bitset/test functions for formats */ -#define FORMAT_SET_COUNT (FORMAT_COUNT / 32) -typedef struct -{ - png_uint_32 bits[FORMAT_SET_COUNT]; -} -format_list; - -static void format_init(format_list *pf) -{ - int i; - for (i=0; ibits[i] = 0; /* All off */ -} - -#if 0 /* currently unused */ -static void format_clear(format_list *pf) -{ - int i; - for (i=0; ibits[i] = 0; -} -#endif - -static int format_is_initial(format_list *pf) -{ - int i; - for (i=0; ibits[i] != 0) - return 0; - - return 1; -} - -static int format_set(format_list *pf, png_uint_32 format) -{ - if (format < FORMAT_COUNT) - return pf->bits[format >> 5] |= ((png_uint_32)1) << (format & 31); - - return 0; -} - -#if 0 /* currently unused */ -static int format_unset(format_list *pf, png_uint_32 format) -{ - if (format < FORMAT_COUNT) - return pf->bits[format >> 5] &= ~((png_uint_32)1) << (format & 31); - - return 0; -} -#endif - -static int format_isset(format_list *pf, png_uint_32 format) -{ - return format < FORMAT_COUNT && - (pf->bits[format >> 5] & (((png_uint_32)1) << (format & 31))) != 0; -} - -static void format_default(format_list *pf, int redundant) -{ - if (redundant) - { - int i; - - /* set everything, including flags that are pointless */ - for (i=0; ibits[i] = ~(png_uint_32)0; - } - - else - { - png_uint_32 f; - - for (f=0; finput_file != NULL) - rewind(image->input_file); -} - -/* Free the image buffer; the buffer is re-used on a re-read, this is just for - * cleanup. - */ -static void -freebuffer(Image *image) -{ - if (image->buffer) free(image->buffer); - image->buffer = NULL; - image->bufsize = 0; - image->allocsize = 0; -} - -/* Delete function; cleans out all the allocated data and the temporary file in - * the image. - */ -static void -freeimage(Image *image) -{ - freebuffer(image); - png_image_free(&image->image); - - if (image->input_file != NULL) - { - fclose(image->input_file); - image->input_file = NULL; - } - - if (image->input_memory != NULL) - { - free(image->input_memory); - image->input_memory = NULL; - image->input_memory_size = 0; - } - - if (image->tmpfile_name[0] != 0 && (image->opts & KEEP_TMPFILES) == 0) - { - remove(image->tmpfile_name); - image->tmpfile_name[0] = 0; - } -} - -/* This is actually a re-initializer; allows an image structure to be re-used by - * freeing everything that relates to an old image. - */ -static void initimage(Image *image, png_uint_32 opts, const char *file_name, - int stride_extra) -{ - freeimage(image); - memset(&image->image, 0, sizeof image->image); - image->opts = opts; - image->file_name = file_name; - image->stride_extra = stride_extra; -} - -/* Make sure the image buffer is big enough; allows re-use of the buffer if the - * image is re-read. - */ -#define BUFFER_INIT8 73 -static void -allocbuffer(Image *image) -{ - png_size_t size = PNG_IMAGE_BUFFER_SIZE(image->image, image->stride); - - if (size+32 > image->bufsize) - { - freebuffer(image); - image->buffer = voidcast(png_bytep, malloc(size+32)); - if (image->buffer == NULL) - { - fflush(stdout); - fprintf(stderr, - "simpletest: out of memory allocating %lu(+32) byte buffer\n", - (unsigned long)size); - exit(1); - } - image->bufsize = size+32; - } - - memset(image->buffer, 95, image->bufsize); - memset(image->buffer+16, BUFFER_INIT8, size); - image->allocsize = size; -} - -/* Make sure 16 bytes match the given byte. */ -static int -check16(png_const_bytep bp, int b) -{ - int i = 16; - - do - if (*bp != b) return 1; - while (--i); - - return 0; -} - -/* Check for overwrite in the image buffer. */ -static void -checkbuffer(Image *image, const char *arg) -{ - if (check16(image->buffer, 95)) - { - fflush(stdout); - fprintf(stderr, "%s: overwrite at start of image buffer\n", arg); - exit(1); - } - - if (check16(image->buffer+16+image->allocsize, 95)) - { - fflush(stdout); - fprintf(stderr, "%s: overwrite at end of image buffer\n", arg); - exit(1); - } -} - -/* ERROR HANDLING */ -/* Log a terminal error, also frees the libpng part of the image if necessary. - */ -static int -logerror(Image *image, const char *a1, const char *a2, const char *a3) -{ - fflush(stdout); - if (image->image.warning_or_error) - fprintf(stderr, "%s%s%s: %s\n", a1, a2, a3, image->image.message); - - else - fprintf(stderr, "%s%s%s\n", a1, a2, a3); - - if (image->image.opaque != NULL) - { - fprintf(stderr, "%s: image opaque pointer non-NULL on error\n", - image->file_name); - png_image_free(&image->image); - } - - return 0; -} - -/* Log an error and close a file (just a utility to do both things in one - * function call.) - */ -static int -logclose(Image *image, FILE *f, const char *name, const char *operation) -{ - int e = errno; - - fclose(f); - return logerror(image, name, operation, strerror(e)); -} - -/* Make sure the png_image has been freed - validates that libpng is doing what - * the spec says and freeing the image. - */ -static int -checkopaque(Image *image) -{ - if (image->image.opaque != NULL) - { - png_image_free(&image->image); - return logerror(image, image->file_name, ": opaque not NULL", ""); - } - - else if (image->image.warning_or_error != 0 && (image->opts & STRICT) != 0) - return logerror(image, image->file_name, " --strict", ""); - - else - return 1; -} - -/* IMAGE COMPARISON/CHECKING */ -/* Compare the pixels of two images, which should be the same but aren't. The - * images must have been checked for a size match. - */ -typedef struct -{ - /* The components, for grayscale images the gray value is in 'g' and if alpha - * is not present 'a' is set to 255 or 65535 according to format. - */ - int r, g, b, a; -} Pixel; - -typedef struct -{ - /* The background as the original sRGB 8-bit value converted to the final - * integer format and as a double precision linear value in the range 0..1 - * for with partially transparent pixels. - */ - int ir, ig, ib; - double dr, dg, db; /* linear r,g,b scaled to 0..1 */ -} Background; - -/* Basic image formats; control the data but not the layout thereof. */ -#define BASE_FORMATS\ - (PNG_FORMAT_FLAG_ALPHA|PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_LINEAR) - -/* Read a Pixel from a buffer. The code below stores the correct routine for - * the format in a function pointer, these are the routines: - */ -static void -gp_g8(Pixel *p, png_const_voidp pb) -{ - png_const_bytep pp = voidcast(png_const_bytep, pb); - - p->r = p->g = p->b = pp[0]; - p->a = 255; -} - -static void -gp_ga8(Pixel *p, png_const_voidp pb) -{ - png_const_bytep pp = voidcast(png_const_bytep, pb); - - p->r = p->g = p->b = pp[0]; - p->a = pp[1]; -} - -#ifdef PNG_FORMAT_AFIRST_SUPPORTED -static void -gp_ag8(Pixel *p, png_const_voidp pb) -{ - png_const_bytep pp = voidcast(png_const_bytep, pb); - - p->r = p->g = p->b = pp[1]; - p->a = pp[0]; -} -#endif - -static void -gp_rgb8(Pixel *p, png_const_voidp pb) -{ - png_const_bytep pp = voidcast(png_const_bytep, pb); - - p->r = pp[0]; - p->g = pp[1]; - p->b = pp[2]; - p->a = 255; -} - -#ifdef PNG_FORMAT_BGR_SUPPORTED -static void -gp_bgr8(Pixel *p, png_const_voidp pb) -{ - png_const_bytep pp = voidcast(png_const_bytep, pb); - - p->r = pp[2]; - p->g = pp[1]; - p->b = pp[0]; - p->a = 255; -} -#endif - -static void -gp_rgba8(Pixel *p, png_const_voidp pb) -{ - png_const_bytep pp = voidcast(png_const_bytep, pb); - - p->r = pp[0]; - p->g = pp[1]; - p->b = pp[2]; - p->a = pp[3]; -} - -#ifdef PNG_FORMAT_BGR_SUPPORTED -static void -gp_bgra8(Pixel *p, png_const_voidp pb) -{ - png_const_bytep pp = voidcast(png_const_bytep, pb); - - p->r = pp[2]; - p->g = pp[1]; - p->b = pp[0]; - p->a = pp[3]; -} -#endif - -#ifdef PNG_FORMAT_AFIRST_SUPPORTED -static void -gp_argb8(Pixel *p, png_const_voidp pb) -{ - png_const_bytep pp = voidcast(png_const_bytep, pb); - - p->r = pp[1]; - p->g = pp[2]; - p->b = pp[3]; - p->a = pp[0]; -} -#endif - -#if defined(PNG_FORMAT_AFIRST_SUPPORTED) && defined(PNG_FORMAT_BGR_SUPPORTED) -static void -gp_abgr8(Pixel *p, png_const_voidp pb) -{ - png_const_bytep pp = voidcast(png_const_bytep, pb); - - p->r = pp[3]; - p->g = pp[2]; - p->b = pp[1]; - p->a = pp[0]; -} -#endif - -static void -gp_g16(Pixel *p, png_const_voidp pb) -{ - png_const_uint_16p pp = voidcast(png_const_uint_16p, pb); - - p->r = p->g = p->b = pp[0]; - p->a = 65535; -} - -static void -gp_ga16(Pixel *p, png_const_voidp pb) -{ - png_const_uint_16p pp = voidcast(png_const_uint_16p, pb); - - p->r = p->g = p->b = pp[0]; - p->a = pp[1]; -} - -#ifdef PNG_FORMAT_AFIRST_SUPPORTED -static void -gp_ag16(Pixel *p, png_const_voidp pb) -{ - png_const_uint_16p pp = voidcast(png_const_uint_16p, pb); - - p->r = p->g = p->b = pp[1]; - p->a = pp[0]; -} -#endif - -static void -gp_rgb16(Pixel *p, png_const_voidp pb) -{ - png_const_uint_16p pp = voidcast(png_const_uint_16p, pb); - - p->r = pp[0]; - p->g = pp[1]; - p->b = pp[2]; - p->a = 65535; -} - -#ifdef PNG_FORMAT_BGR_SUPPORTED -static void -gp_bgr16(Pixel *p, png_const_voidp pb) -{ - png_const_uint_16p pp = voidcast(png_const_uint_16p, pb); - - p->r = pp[2]; - p->g = pp[1]; - p->b = pp[0]; - p->a = 65535; -} -#endif - -static void -gp_rgba16(Pixel *p, png_const_voidp pb) -{ - png_const_uint_16p pp = voidcast(png_const_uint_16p, pb); - - p->r = pp[0]; - p->g = pp[1]; - p->b = pp[2]; - p->a = pp[3]; -} - -#ifdef PNG_FORMAT_BGR_SUPPORTED -static void -gp_bgra16(Pixel *p, png_const_voidp pb) -{ - png_const_uint_16p pp = voidcast(png_const_uint_16p, pb); - - p->r = pp[2]; - p->g = pp[1]; - p->b = pp[0]; - p->a = pp[3]; -} -#endif - -#ifdef PNG_FORMAT_AFIRST_SUPPORTED -static void -gp_argb16(Pixel *p, png_const_voidp pb) -{ - png_const_uint_16p pp = voidcast(png_const_uint_16p, pb); - - p->r = pp[1]; - p->g = pp[2]; - p->b = pp[3]; - p->a = pp[0]; -} -#endif - -#if defined(PNG_FORMAT_AFIRST_SUPPORTED) && defined(PNG_FORMAT_BGR_SUPPORTED) -static void -gp_abgr16(Pixel *p, png_const_voidp pb) -{ - png_const_uint_16p pp = voidcast(png_const_uint_16p, pb); - - p->r = pp[3]; - p->g = pp[2]; - p->b = pp[1]; - p->a = pp[0]; -} -#endif - -/* Given a format, return the correct one of the above functions. */ -static void (* -get_pixel(png_uint_32 format))(Pixel *p, png_const_voidp pb) -{ - /* The color-map flag is irrelevant here - the caller of the function - * returned must either pass the buffer or, for a color-mapped image, the - * correct entry in the color-map. - */ - if (format & PNG_FORMAT_FLAG_LINEAR) - { - if (format & PNG_FORMAT_FLAG_COLOR) - { -# ifdef PNG_FORMAT_BGR_SUPPORTED - if (format & PNG_FORMAT_FLAG_BGR) - { - if (format & PNG_FORMAT_FLAG_ALPHA) - { -# ifdef PNG_FORMAT_AFIRST_SUPPORTED - if (format & PNG_FORMAT_FLAG_AFIRST) - return gp_abgr16; - - else -# endif - return gp_bgra16; - } - - else - return gp_bgr16; - } - - else -# endif - { - if (format & PNG_FORMAT_FLAG_ALPHA) - { -# ifdef PNG_FORMAT_AFIRST_SUPPORTED - if (format & PNG_FORMAT_FLAG_AFIRST) - return gp_argb16; - - else -# endif - return gp_rgba16; - } - - else - return gp_rgb16; - } - } - - else - { - if (format & PNG_FORMAT_FLAG_ALPHA) - { -# ifdef PNG_FORMAT_AFIRST_SUPPORTED - if (format & PNG_FORMAT_FLAG_AFIRST) - return gp_ag16; - - else -# endif - return gp_ga16; - } - - else - return gp_g16; - } - } - - else - { - if (format & PNG_FORMAT_FLAG_COLOR) - { -# ifdef PNG_FORMAT_BGR_SUPPORTED - if (format & PNG_FORMAT_FLAG_BGR) - { - if (format & PNG_FORMAT_FLAG_ALPHA) - { -# ifdef PNG_FORMAT_AFIRST_SUPPORTED - if (format & PNG_FORMAT_FLAG_AFIRST) - return gp_abgr8; - - else -# endif - return gp_bgra8; - } - - else - return gp_bgr8; - } - - else -# endif - { - if (format & PNG_FORMAT_FLAG_ALPHA) - { -# ifdef PNG_FORMAT_AFIRST_SUPPORTED - if (format & PNG_FORMAT_FLAG_AFIRST) - return gp_argb8; - - else -# endif - return gp_rgba8; - } - - else - return gp_rgb8; - } - } - - else - { - if (format & PNG_FORMAT_FLAG_ALPHA) - { -# ifdef PNG_FORMAT_AFIRST_SUPPORTED - if (format & PNG_FORMAT_FLAG_AFIRST) - return gp_ag8; - - else -# endif - return gp_ga8; - } - - else - return gp_g8; - } - } -} - -/* Convertion between pixel formats. The code above effectively eliminates the - * component ordering changes leaving three basic changes: - * - * 1) Remove an alpha channel by pre-multiplication or compositing on a - * background color. (Adding an alpha channel is a no-op.) - * - * 2) Remove color by mapping to grayscale. (Grayscale to color is a no-op.) - * - * 3) Convert between 8-bit and 16-bit components. (Both directtions are - * relevant.) - * - * This gives the following base format conversion matrix: - * - * OUT: ----- 8-bit ----- ----- 16-bit ----- - * IN G GA RGB RGBA G GA RGB RGBA - * 8 G . . . . lin lin lin lin - * 8 GA bckg . bckc . pre' pre pre' pre - * 8 RGB g8 g8 . . glin glin lin lin - * 8 RGBA g8b g8 bckc . gpr' gpre pre' pre - * 16 G sRGB sRGB sRGB sRGB . . . . - * 16 GA b16g unpg b16c unpc A . A . - * 16 RGB sG sG sRGB sRGB g16 g16 . . - * 16 RGBA gb16 sGp cb16 sCp g16 g16' A . - * - * 8-bit to 8-bit: - * bckg: composite on gray background - * bckc: composite on color background - * g8: convert sRGB components to sRGB grayscale - * g8b: convert sRGB components to grayscale and composite on gray background - * - * 8-bit to 16-bit: - * lin: make sRGB components linear, alpha := 65535 - * pre: make sRGB components linear and premultiply by alpha (scale alpha) - * pre': as 'pre' but alpha := 65535 - * glin: make sRGB components linear, convert to grayscale, alpha := 65535 - * gpre: make sRGB components grayscale and linear and premultiply by alpha - * gpr': as 'gpre' but alpha := 65535 - * - * 16-bit to 8-bit: - * sRGB: convert linear components to sRGB, alpha := 255 - * unpg: unpremultiply gray component and convert to sRGB (scale alpha) - * unpc: unpremultiply color components and convert to sRGB (scale alpha) - * b16g: composite linear onto gray background and convert the result to sRGB - * b16c: composite linear onto color background and convert the result to sRGB - * sG: convert linear RGB to sRGB grayscale - * sGp: unpremultiply RGB then convert to sRGB grayscale - * sCp: unpremultiply RGB then convert to sRGB - * gb16: composite linear onto background and convert to sRGB grayscale - * (order doesn't matter, the composite and grayscale operations permute) - * cb16: composite linear onto background and convert to sRGB - * - * 16-bit to 16-bit: - * A: set alpha to 65535 - * g16: convert linear RGB to linear grayscale (alpha := 65535) - * g16': as 'g16' but alpha is unchanged - */ -/* Simple copy: */ -static void -gpc_noop(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - out->r = in->r; - out->g = in->g; - out->b = in->b; - out->a = in->a; -} - -#if ALLOW_UNUSED_GPC -static void -gpc_nop8(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - if (in->a == 0) - out->r = out->g = out->b = 255; - - else - { - out->r = in->r; - out->g = in->g; - out->b = in->b; - } - - out->a = in->a; -} -#endif - -#if ALLOW_UNUSED_GPC -static void -gpc_nop6(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - if (in->a == 0) - out->r = out->g = out->b = 65535; - - else - { - out->r = in->r; - out->g = in->g; - out->b = in->b; - } - - out->a = in->a; -} -#endif - -/* 8-bit to 8-bit conversions */ -/* bckg: composite on gray background */ -static void -gpc_bckg(Pixel *out, const Pixel *in, const Background *back) -{ - if (in->a <= 0) - out->r = out->g = out->b = back->ig; - - else if (in->a >= 255) - out->r = out->g = out->b = in->g; - - else - { - double a = in->a / 255.; - - out->r = out->g = out->b = sRGB(sRGB_to_d[in->g] * a + back->dg * (1-a)); - } - - out->a = 255; -} - -/* bckc: composite on color background */ -static void -gpc_bckc(Pixel *out, const Pixel *in, const Background *back) -{ - if (in->a <= 0) - { - out->r = back->ir; - out->g = back->ig; - out->b = back->ib; - } - - else if (in->a >= 255) - { - out->r = in->r; - out->g = in->g; - out->b = in->b; - } - - else - { - double a = in->a / 255.; - - out->r = sRGB(sRGB_to_d[in->r] * a + back->dr * (1-a)); - out->g = sRGB(sRGB_to_d[in->g] * a + back->dg * (1-a)); - out->b = sRGB(sRGB_to_d[in->b] * a + back->db * (1-a)); - } - - out->a = 255; -} - -/* g8: convert sRGB components to sRGB grayscale */ -static void -gpc_g8(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - if (in->r == in->g && in->g == in->b) - out->r = out->g = out->b = in->g; - - else - out->r = out->g = out->b = - sRGB(YfromRGB(sRGB_to_d[in->r], sRGB_to_d[in->g], sRGB_to_d[in->b])); - - out->a = in->a; -} - -/* g8b: convert sRGB components to grayscale and composite on gray background */ -static void -gpc_g8b(Pixel *out, const Pixel *in, const Background *back) -{ - if (in->a <= 0) - out->r = out->g = out->b = back->ig; - - else if (in->a >= 255) - { - if (in->r == in->g && in->g == in->b) - out->r = out->g = out->b = in->g; - - else - out->r = out->g = out->b = sRGB(YfromRGB( - sRGB_to_d[in->r], sRGB_to_d[in->g], sRGB_to_d[in->b])); - } - - else - { - double a = in->a/255.; - - out->r = out->g = out->b = sRGB(a * YfromRGB(sRGB_to_d[in->r], - sRGB_to_d[in->g], sRGB_to_d[in->b]) + back->dg * (1-a)); - } - - out->a = 255; -} - -/* 8-bit to 16-bit conversions */ -/* lin: make sRGB components linear, alpha := 65535 */ -static void -gpc_lin(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - out->r = ilinear(in->r); - - if (in->g == in->r) - { - out->g = out->r; - - if (in->b == in->r) - out->b = out->r; - - else - out->b = ilinear(in->b); - } - - else - { - out->g = ilinear(in->g); - - if (in->b == in->r) - out->b = out->r; - - else if (in->b == in->g) - out->b = out->g; - - else - out->b = ilinear(in->b); - } - - out->a = 65535; -} - -/* pre: make sRGB components linear and premultiply by alpha (scale alpha) */ -static void -gpc_pre(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - out->r = ilineara(in->r, in->a); - - if (in->g == in->r) - { - out->g = out->r; - - if (in->b == in->r) - out->b = out->r; - - else - out->b = ilineara(in->b, in->a); - } - - else - { - out->g = ilineara(in->g, in->a); - - if (in->b == in->r) - out->b = out->r; - - else if (in->b == in->g) - out->b = out->g; - - else - out->b = ilineara(in->b, in->a); - } - - out->a = in->a * 257; -} - -/* pre': as 'pre' but alpha := 65535 */ -static void -gpc_preq(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - out->r = ilineara(in->r, in->a); - - if (in->g == in->r) - { - out->g = out->r; - - if (in->b == in->r) - out->b = out->r; - - else - out->b = ilineara(in->b, in->a); - } - - else - { - out->g = ilineara(in->g, in->a); - - if (in->b == in->r) - out->b = out->r; - - else if (in->b == in->g) - out->b = out->g; - - else - out->b = ilineara(in->b, in->a); - } - - out->a = 65535; -} - -/* glin: make sRGB components linear, convert to grayscale, alpha := 65535 */ -static void -gpc_glin(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - if (in->r == in->g && in->g == in->b) - out->r = out->g = out->b = ilinear(in->g); - - else - out->r = out->g = out->b = u16d(65535 * - YfromRGB(sRGB_to_d[in->r], sRGB_to_d[in->g], sRGB_to_d[in->b])); - - out->a = 65535; -} - -/* gpre: make sRGB components grayscale and linear and premultiply by alpha */ -static void -gpc_gpre(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - if (in->r == in->g && in->g == in->b) - out->r = out->g = out->b = ilineara(in->g, in->a); - - else - out->r = out->g = out->b = u16d(in->a * 257 * - YfromRGB(sRGB_to_d[in->r], sRGB_to_d[in->g], sRGB_to_d[in->b])); - - out->a = 257 * in->a; -} - -/* gpr': as 'gpre' but alpha := 65535 */ -static void -gpc_gprq(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - if (in->r == in->g && in->g == in->b) - out->r = out->g = out->b = ilineara(in->g, in->a); - - else - out->r = out->g = out->b = u16d(in->a * 257 * - YfromRGB(sRGB_to_d[in->r], sRGB_to_d[in->g], sRGB_to_d[in->b])); - - out->a = 65535; -} - -/* 8-bit to 16-bit conversions for gAMA 45455 encoded values */ -/* Lin: make gAMA 45455 components linear, alpha := 65535 */ -static void -gpc_Lin(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - out->r = ilinear_g22(in->r); - - if (in->g == in->r) - { - out->g = out->r; - - if (in->b == in->r) - out->b = out->r; - - else - out->b = ilinear_g22(in->b); - } - - else - { - out->g = ilinear_g22(in->g); - - if (in->b == in->r) - out->b = out->r; - - else if (in->b == in->g) - out->b = out->g; - - else - out->b = ilinear_g22(in->b); - } - - out->a = 65535; -} - -#if ALLOW_UNUSED_GPC -/* Pre: make gAMA 45455 components linear and premultiply by alpha (scale alpha) - */ -static void -gpc_Pre(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - out->r = ilineara_g22(in->r, in->a); - - if (in->g == in->r) - { - out->g = out->r; - - if (in->b == in->r) - out->b = out->r; - - else - out->b = ilineara_g22(in->b, in->a); - } - - else - { - out->g = ilineara_g22(in->g, in->a); - - if (in->b == in->r) - out->b = out->r; - - else if (in->b == in->g) - out->b = out->g; - - else - out->b = ilineara_g22(in->b, in->a); - } - - out->a = in->a * 257; -} -#endif - -#if ALLOW_UNUSED_GPC -/* Pre': as 'Pre' but alpha := 65535 */ -static void -gpc_Preq(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - out->r = ilineara_g22(in->r, in->a); - - if (in->g == in->r) - { - out->g = out->r; - - if (in->b == in->r) - out->b = out->r; - - else - out->b = ilineara_g22(in->b, in->a); - } - - else - { - out->g = ilineara_g22(in->g, in->a); - - if (in->b == in->r) - out->b = out->r; - - else if (in->b == in->g) - out->b = out->g; - - else - out->b = ilineara_g22(in->b, in->a); - } - - out->a = 65535; -} -#endif - -#if ALLOW_UNUSED_GPC -/* Glin: make gAMA 45455 components linear, convert to grayscale, alpha := 65535 - */ -static void -gpc_Glin(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - if (in->r == in->g && in->g == in->b) - out->r = out->g = out->b = ilinear_g22(in->g); - - else - out->r = out->g = out->b = u16d(65535 * - YfromRGB(g22_to_d[in->r], g22_to_d[in->g], g22_to_d[in->b])); - - out->a = 65535; -} -#endif - -#if ALLOW_UNUSED_GPC -/* Gpre: make gAMA 45455 components grayscale and linear and premultiply by - * alpha. - */ -static void -gpc_Gpre(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - if (in->r == in->g && in->g == in->b) - out->r = out->g = out->b = ilineara_g22(in->g, in->a); - - else - out->r = out->g = out->b = u16d(in->a * 257 * - YfromRGB(g22_to_d[in->r], g22_to_d[in->g], g22_to_d[in->b])); - - out->a = 257 * in->a; -} -#endif - -#if ALLOW_UNUSED_GPC -/* Gpr': as 'Gpre' but alpha := 65535 */ -static void -gpc_Gprq(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - if (in->r == in->g && in->g == in->b) - out->r = out->g = out->b = ilineara_g22(in->g, in->a); - - else - out->r = out->g = out->b = u16d(in->a * 257 * - YfromRGB(g22_to_d[in->r], g22_to_d[in->g], g22_to_d[in->b])); - - out->a = 65535; -} -#endif - -/* 16-bit to 8-bit conversions */ -/* sRGB: convert linear components to sRGB, alpha := 255 */ -static void -gpc_sRGB(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - out->r = isRGB(in->r); - - if (in->g == in->r) - { - out->g = out->r; - - if (in->b == in->r) - out->b = out->r; - - else - out->b = isRGB(in->b); - } - - else - { - out->g = isRGB(in->g); - - if (in->b == in->r) - out->b = out->r; - - else if (in->b == in->g) - out->b = out->g; - - else - out->b = isRGB(in->b); - } - - out->a = 255; -} - -/* unpg: unpremultiply gray component and convert to sRGB (scale alpha) */ -static void -gpc_unpg(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - if (in->a <= 128) - { - out->r = out->g = out->b = 255; - out->a = 0; - } - - else - { - out->r = out->g = out->b = sRGB((double)in->g / in->a); - out->a = u8d(in->a / 257.); - } -} - -/* unpc: unpremultiply color components and convert to sRGB (scale alpha) */ -static void -gpc_unpc(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - if (in->a <= 128) - { - out->r = out->g = out->b = 255; - out->a = 0; - } - - else - { - out->r = sRGB((double)in->r / in->a); - out->g = sRGB((double)in->g / in->a); - out->b = sRGB((double)in->b / in->a); - out->a = u8d(in->a / 257.); - } -} - -/* b16g: composite linear onto gray background and convert the result to sRGB */ -static void -gpc_b16g(Pixel *out, const Pixel *in, const Background *back) -{ - if (in->a <= 0) - out->r = out->g = out->b = back->ig; - - else - { - double a = in->a/65535.; - double a1 = 1-a; - - a /= 65535; - out->r = out->g = out->b = sRGB(in->g * a + back->dg * a1); - } - - out->a = 255; -} - -/* b16c: composite linear onto color background and convert the result to sRGB*/ -static void -gpc_b16c(Pixel *out, const Pixel *in, const Background *back) -{ - if (in->a <= 0) - { - out->r = back->ir; - out->g = back->ig; - out->b = back->ib; - } - - else - { - double a = in->a/65535.; - double a1 = 1-a; - - a /= 65535; - out->r = sRGB(in->r * a + back->dr * a1); - out->g = sRGB(in->g * a + back->dg * a1); - out->b = sRGB(in->b * a + back->db * a1); - } - - out->a = 255; -} - -/* sG: convert linear RGB to sRGB grayscale */ -static void -gpc_sG(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - out->r = out->g = out->b = sRGB(YfromRGBint(in->r, in->g, in->b)/65535); - out->a = 255; -} - -/* sGp: unpremultiply RGB then convert to sRGB grayscale */ -static void -gpc_sGp(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - if (in->a <= 128) - { - out->r = out->g = out->b = 255; - out->a = 0; - } - - else - { - out->r = out->g = out->b = sRGB(YfromRGBint(in->r, in->g, in->b)/in->a); - out->a = u8d(in->a / 257.); - } -} - -/* sCp: unpremultiply RGB then convert to sRGB */ -static void -gpc_sCp(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - - if (in->a <= 128) - { - out->r = out->g = out->b = 255; - out->a = 0; - } - - else - { - out->r = sRGB((double)in->r / in->a); - out->g = sRGB((double)in->g / in->a); - out->b = sRGB((double)in->b / in->a); - out->a = u8d(in->a / 257.); - } -} - -/* gb16: composite linear onto background and convert to sRGB grayscale */ -/* (order doesn't matter, the composite and grayscale operations permute) */ -static void -gpc_gb16(Pixel *out, const Pixel *in, const Background *back) -{ - if (in->a <= 0) - out->r = out->g = out->b = back->ig; - - else if (in->a >= 65535) - out->r = out->g = out->b = isRGB(in->g); - - else - { - double a = in->a / 65535.; - double a1 = 1-a; - - a /= 65535; - out->r = out->g = out->b = sRGB(in->g * a + back->dg * a1); - } - - out->a = 255; -} - -/* cb16: composite linear onto background and convert to sRGB */ -static void -gpc_cb16(Pixel *out, const Pixel *in, const Background *back) -{ - if (in->a <= 0) - { - out->r = back->ir; - out->g = back->ig; - out->b = back->ib; - } - - else if (in->a >= 65535) - { - out->r = isRGB(in->r); - out->g = isRGB(in->g); - out->b = isRGB(in->b); - } - - else - { - double a = in->a / 65535.; - double a1 = 1-a; - - a /= 65535; - out->r = sRGB(in->r * a + back->dr * a1); - out->g = sRGB(in->g * a + back->dg * a1); - out->b = sRGB(in->b * a + back->db * a1); - } - - out->a = 255; -} - -/* 16-bit to 16-bit conversions */ -/* A: set alpha to 65535 */ -static void -gpc_A(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - out->r = in->r; - out->g = in->g; - out->b = in->b; - out->a = 65535; -} - -/* g16: convert linear RGB to linear grayscale (alpha := 65535) */ -static void -gpc_g16(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - out->r = out->g = out->b = u16d(YfromRGBint(in->r, in->g, in->b)); - out->a = 65535; -} - -/* g16': as 'g16' but alpha is unchanged */ -static void -gpc_g16q(Pixel *out, const Pixel *in, const Background *back) -{ - (void)back; - out->r = out->g = out->b = u16d(YfromRGBint(in->r, in->g, in->b)); - out->a = in->a; -} - -#if ALLOW_UNUSED_GPC -/* Unused functions (to hide them from GCC unused function warnings) */ -void (* const gpc_unused[]) - (Pixel *out, const Pixel *in, const Background *back) = -{ - gpc_Pre, gpc_Preq, gpc_Glin, gpc_Gpre, gpc_Gprq, gpc_nop8, gpc_nop6 -}; -#endif - -/* OUT: ----- 8-bit ----- ----- 16-bit ----- - * IN G GA RGB RGBA G GA RGB RGBA - * 8 G . . . . lin lin lin lin - * 8 GA bckg . bckc . pre' pre pre' pre - * 8 RGB g8 g8 . . glin glin lin lin - * 8 RGBA g8b g8 bckc . gpr' gpre pre' pre - * 16 G sRGB sRGB sRGB sRGB . . . . - * 16 GA b16g unpg b16c unpc A . A . - * 16 RGB sG sG sRGB sRGB g16 g16 . . - * 16 RGBA gb16 sGp cb16 sCp g16 g16' A . - * - * The matrix is held in an array indexed thus: - * - * gpc_fn[out_format & BASE_FORMATS][in_format & BASE_FORMATS]; - */ -/* This will produce a compile time error if the FORMAT_FLAG values don't - * match the above matrix! - */ -#if PNG_FORMAT_FLAG_ALPHA == 1 && PNG_FORMAT_FLAG_COLOR == 2 &&\ - PNG_FORMAT_FLAG_LINEAR == 4 -static void (* const gpc_fn[8/*in*/][8/*out*/]) - (Pixel *out, const Pixel *in, const Background *back) = -{ -/*out: G-8 GA-8 RGB-8 RGBA-8 G-16 GA-16 RGB-16 RGBA-16 */ - {gpc_noop,gpc_noop,gpc_noop,gpc_noop, gpc_Lin, gpc_Lin, gpc_Lin, gpc_Lin }, - {gpc_bckg,gpc_noop,gpc_bckc,gpc_noop, gpc_preq,gpc_pre, gpc_preq,gpc_pre }, - {gpc_g8, gpc_g8, gpc_noop,gpc_noop, gpc_glin,gpc_glin,gpc_lin, gpc_lin }, - {gpc_g8b, gpc_g8, gpc_bckc,gpc_noop, gpc_gprq,gpc_gpre,gpc_preq,gpc_pre }, - {gpc_sRGB,gpc_sRGB,gpc_sRGB,gpc_sRGB, gpc_noop,gpc_noop,gpc_noop,gpc_noop}, - {gpc_b16g,gpc_unpg,gpc_b16c,gpc_unpc, gpc_A, gpc_noop,gpc_A, gpc_noop}, - {gpc_sG, gpc_sG, gpc_sRGB,gpc_sRGB, gpc_g16, gpc_g16, gpc_noop,gpc_noop}, - {gpc_gb16,gpc_sGp, gpc_cb16,gpc_sCp, gpc_g16, gpc_g16q,gpc_A, gpc_noop} -}; - -/* The array is repeated for the cases where both the input and output are color - * mapped because then different algorithms are used. - */ -static void (* const gpc_fn_colormapped[8/*in*/][8/*out*/]) - (Pixel *out, const Pixel *in, const Background *back) = -{ -/*out: G-8 GA-8 RGB-8 RGBA-8 G-16 GA-16 RGB-16 RGBA-16 */ - {gpc_noop,gpc_noop,gpc_noop,gpc_noop, gpc_lin, gpc_lin, gpc_lin, gpc_lin }, - {gpc_bckg,gpc_noop,gpc_bckc,gpc_noop, gpc_preq,gpc_pre, gpc_preq,gpc_pre }, - {gpc_g8, gpc_g8, gpc_noop,gpc_noop, gpc_glin,gpc_glin,gpc_lin, gpc_lin }, - {gpc_g8b, gpc_g8, gpc_bckc,gpc_noop, gpc_gprq,gpc_gpre,gpc_preq,gpc_pre }, - {gpc_sRGB,gpc_sRGB,gpc_sRGB,gpc_sRGB, gpc_noop,gpc_noop,gpc_noop,gpc_noop}, - {gpc_b16g,gpc_unpg,gpc_b16c,gpc_unpc, gpc_A, gpc_noop,gpc_A, gpc_noop}, - {gpc_sG, gpc_sG, gpc_sRGB,gpc_sRGB, gpc_g16, gpc_g16, gpc_noop,gpc_noop}, - {gpc_gb16,gpc_sGp, gpc_cb16,gpc_sCp, gpc_g16, gpc_g16q,gpc_A, gpc_noop} -}; - -/* The error arrays record the error in the same matrix; 64 entries, however - * the different algorithms used in libpng for colormap and direct conversions - * mean that four separate matrices are used (for each combination of - * colormapped and direct.) - * - * In some cases the conversion between sRGB formats goes via a linear - * intermediate; an sRGB to linear conversion (as above) is followed by a simple - * linear to sRGB step with no other conversions. This is done by a separate - * error array from an arbitrary 'in' format to one of the four basic outputs - * (since final output is always sRGB not colormapped). - * - * These arrays may be modified if the --accumulate flag is set during the run; - * then instead of logging errors they are simply added in. - * - * The three entries are currently for transparent, partially transparent and - * opaque input pixel values. Notice that alpha should be exact in each case. - * - * Errors in alpha should only occur when converting from a direct format - * to a colormapped format, when alpha is effectively smashed (so large - * errors can occur.) There should be no error in the '0' and 'opaque' - * values. The fourth entry in the array is used for the alpha error (and it - * should always be zero for the 'via linear' case since this is never color - * mapped.) - * - * Mapping to a colormap smashes the colors, it is necessary to have separate - * values for these cases because they are much larger; it is very much - * impossible to obtain a reasonable result, these are held in - * gpc_error_to_colormap. - */ -#if PNG_FORMAT_FLAG_COLORMAP == 8 /* extra check also required */ -/* START MACHINE GENERATED */ -static png_uint_16 gpc_error[16/*in*/][16/*out*/][4/*a*/] = -{ - { /* input: sRGB-gray */ - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 372, 0 }, { 0, 0, 372, 0 }, { 0, 0, 372, 0 }, { 0, 0, 372, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: sRGB-gray+alpha */ - { 0, 18, 0, 0 }, { 0, 0, 0, 0 }, { 0, 20, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 897, 788, 0 }, { 0, 897, 788, 0 }, { 0, 897, 788, 0 }, { 0, 897, 788, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: sRGB-rgb */ - { 0, 0, 19, 0 }, { 0, 0, 19, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 893, 0 }, { 0, 0, 893, 0 }, { 0, 0, 811, 0 }, { 0, 0, 811, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: sRGB-rgb+alpha */ - { 0, 4, 13, 0 }, { 0, 14, 13, 0 }, { 0, 19, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 832, 764, 0 }, { 0, 832, 764, 0 }, { 0, 897, 788, 0 }, { 0, 897, 788, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: linear-gray */ - { 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: linear-gray+alpha */ - { 0, 74, 9, 0 }, { 0, 20, 9, 0 }, { 0, 74, 9, 0 }, { 0, 20, 9, 0 }, - { 0, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 0, 0 }, { 0, 1, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: linear-rgb */ - { 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 }, - { 0, 0, 4, 0 }, { 0, 0, 4, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: linear-rgb+alpha */ - { 0, 126, 143, 0 }, { 0, 9, 7, 0 }, { 0, 74, 9, 0 }, { 0, 16, 9, 0 }, - { 0, 4, 4, 0 }, { 0, 5, 4, 0 }, { 0, 0, 0, 0 }, { 0, 1, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: color-mapped-sRGB-gray */ - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: color-mapped-sRGB-gray+alpha */ - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: color-mapped-sRGB-rgb */ - { 0, 0, 13, 0 }, { 0, 0, 13, 0 }, { 0, 0, 8, 0 }, { 0, 0, 8, 0 }, - { 0, 0, 673, 0 }, { 0, 0, 673, 0 }, { 0, 0, 674, 0 }, { 0, 0, 674, 0 }, - { 0, 0, 1, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 460, 0 }, { 0, 0, 460, 0 }, { 0, 0, 263, 0 }, { 0, 0, 263, 0 } - }, { /* input: color-mapped-sRGB-rgb+alpha */ - { 0, 6, 8, 0 }, { 0, 7, 8, 0 }, { 0, 75, 8, 0 }, { 0, 9, 8, 0 }, - { 0, 585, 427, 0 }, { 0, 585, 427, 0 }, { 0, 717, 409, 0 }, { 0, 717, 409, 0 }, - { 0, 1, 1, 0 }, { 0, 1, 1, 0 }, { 0, 1, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 13323, 460, 0 }, { 0, 334, 460, 0 }, { 0, 16480, 263, 0 }, { 0, 243, 263, 0 } - }, { /* input: color-mapped-linear-gray */ - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 282, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: color-mapped-linear-gray+alpha */ - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 253, 282, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: color-mapped-linear-rgb */ - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 265, 0 }, { 0, 0, 0, 0 } - }, { /* input: color-mapped-linear-rgb+alpha */ - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 243, 265, 0 } - } -}; -static png_uint_16 gpc_error_via_linear[16][4/*out*/][4] = -{ - { /* input: sRGB-gray */ - { 0, 0, 7, 0 }, { 0, 0, 7, 0 }, { 0, 0, 7, 0 }, { 0, 0, 7, 0 } - }, { /* input: sRGB-gray+alpha */ - { 0, 15, 15, 0 }, { 0, 186, 15, 0 }, { 0, 15, 15, 0 }, { 0, 186, 15, 0 } - }, { /* input: sRGB-rgb */ - { 0, 0, 19, 0 }, { 0, 0, 19, 0 }, { 0, 0, 15, 0 }, { 0, 0, 15, 0 } - }, { /* input: sRGB-rgb+alpha */ - { 0, 12, 14, 0 }, { 0, 180, 14, 0 }, { 0, 14, 15, 0 }, { 0, 186, 15, 0 } - }, { /* input: linear-gray */ - { 0, 0, 1, 0 }, { 0, 0, 1, 0 }, { 0, 0, 1, 0 }, { 0, 0, 1, 0 } - }, { /* input: linear-gray+alpha */ - { 0, 1, 1, 0 }, { 0, 1, 1, 0 }, { 0, 1, 1, 0 }, { 0, 1, 1, 0 } - }, { /* input: linear-rgb */ - { 0, 0, 1, 0 }, { 0, 0, 1, 0 }, { 0, 0, 1, 0 }, { 0, 0, 1, 0 } - }, { /* input: linear-rgb+alpha */ - { 0, 1, 1, 0 }, { 0, 8, 1, 0 }, { 0, 1, 1, 0 }, { 0, 1, 1, 0 } - }, { /* input: color-mapped-sRGB-gray */ - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: color-mapped-sRGB-gray+alpha */ - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: color-mapped-sRGB-rgb */ - { 0, 0, 13, 0 }, { 0, 0, 13, 0 }, { 0, 0, 14, 0 }, { 0, 0, 14, 0 } - }, { /* input: color-mapped-sRGB-rgb+alpha */ - { 0, 4, 8, 0 }, { 0, 9, 8, 0 }, { 0, 8, 3, 0 }, { 0, 32, 3, 0 } - }, { /* input: color-mapped-linear-gray */ - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: color-mapped-linear-gray+alpha */ - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: color-mapped-linear-rgb */ - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - }, { /* input: color-mapped-linear-rgb+alpha */ - { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } - } -}; -static png_uint_16 gpc_error_to_colormap[8/*i*/][8/*o*/][4] = -{ - { /* input: sRGB-gray */ - { 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 }, { 0, 0, 9, 0 }, - { 0, 0, 560, 0 }, { 0, 0, 560, 0 }, { 0, 0, 560, 0 }, { 0, 0, 560, 0 } - }, { /* input: sRGB-gray+alpha */ - { 0, 19, 2, 0 }, { 0, 255, 2, 25 }, { 0, 88, 2, 0 }, { 0, 255, 2, 25 }, - { 0, 1012, 745, 0 }, { 0, 16026, 745, 6425 }, { 0, 1012, 745, 0 }, { 0, 16026, 745, 6425 } - }, { /* input: sRGB-rgb */ - { 0, 0, 19, 0 }, { 0, 0, 19, 0 }, { 0, 0, 25, 0 }, { 0, 0, 25, 0 }, - { 0, 0, 937, 0 }, { 0, 0, 937, 0 }, { 0, 0, 13677, 0 }, { 0, 0, 13677, 0 } - }, { /* input: sRGB-rgb+alpha */ - { 0, 63, 77, 0 }, { 0, 255, 19, 25 }, { 0, 220, 25, 0 }, { 0, 255, 25, 67 }, - { 0, 17534, 18491, 0 }, { 0, 15614, 2824, 6425 }, { 0, 14019, 13677, 0 }, { 0, 48573, 13677, 17219 } - }, { /* input: linear-gray */ - { 0, 0, 73, 0 }, { 0, 0, 73, 0 }, { 0, 0, 73, 0 }, { 0, 0, 73, 0 }, - { 0, 0, 18817, 0 }, { 0, 0, 18817, 0 }, { 0, 0, 18817, 0 }, { 0, 0, 18817, 0 } - }, { /* input: linear-gray+alpha */ - { 0, 74, 74, 0 }, { 0, 255, 74, 25 }, { 0, 97, 74, 0 }, { 0, 255, 74, 25 }, - { 0, 18919, 18907, 0 }, { 0, 24549, 18907, 6552 }, { 0, 18919, 18907, 0 }, { 0, 24549, 18907, 6552 } - }, { /* input: linear-rgb */ - { 0, 0, 73, 0 }, { 0, 0, 73, 0 }, { 0, 0, 98, 0 }, { 0, 0, 98, 0 }, - { 0, 0, 18664, 0 }, { 0, 0, 18664, 0 }, { 0, 0, 24998, 0 }, { 0, 0, 24998, 0 } - }, { /* input: linear-rgb+alpha */ - { 0, 181, 196, 0 }, { 0, 255, 61, 25 }, { 206, 187, 98, 0 }, { 0, 255, 98, 67 }, - { 0, 18141, 18137, 0 }, { 0, 17494, 17504, 6553 }, { 0, 24979, 24992, 0 }, { 0, 46509, 24992, 17347 } - } -}; -/* END MACHINE GENERATED */ -#endif /* COLORMAP flag check */ -#endif /* flag checks */ - -typedef struct -{ - /* Basic pixel information: */ - Image* in_image; /* Input image */ - const Image* out_image; /* Output image */ - - /* 'background' is the value passed to the gpc_ routines, it may be NULL if - * it should not be used (*this* program has an error if it crashes as a - * result!) - */ - Background background_color; - const Background* background; - - /* Precalculated values: */ - int in_opaque; /* Value of input alpha that is opaque */ - int is_palette; /* Sample values come from the palette */ - int accumulate; /* Accumlate component errors (don't log) */ - int output_8bit; /* Output is 8 bit (else 16 bit) */ - - void (*in_gp)(Pixel*, png_const_voidp); - void (*out_gp)(Pixel*, png_const_voidp); - - void (*transform)(Pixel *out, const Pixel *in, const Background *back); - /* A function to perform the required transform */ - - void (*from_linear)(Pixel *out, const Pixel *in, const Background *back); - /* For 'via_linear' transforms the final, from linear, step, else NULL */ - - png_uint_16 error[4]; - /* Three error values for transparent, partially transparent and opaque - * input pixels (in turn). - */ - - png_uint_16 *error_ptr; - /* Where these are stored in the static array (for 'accumulate') */ -} -Transform; - -/* Return a 'transform' as above for the given format conversion. */ -static void -transform_from_formats(Transform *result, Image *in_image, - const Image *out_image, png_const_colorp background, int via_linear) -{ - png_uint_32 in_format, out_format; - png_uint_32 in_base, out_base; - - memset(result, 0, sizeof *result); - - /* Store the original images for error messages */ - result->in_image = in_image; - result->out_image = out_image; - - in_format = in_image->image.format; - out_format = out_image->image.format; - - if (in_format & PNG_FORMAT_FLAG_LINEAR) - result->in_opaque = 65535; - else - result->in_opaque = 255; - - result->output_8bit = (out_format & PNG_FORMAT_FLAG_LINEAR) == 0; - - result->is_palette = 0; /* set by caller if required */ - result->accumulate = (in_image->opts & ACCUMULATE) != 0; - - /* The loaders (which need the ordering information) */ - result->in_gp = get_pixel(in_format); - result->out_gp = get_pixel(out_format); - - /* Remove the ordering information: */ - in_format &= BASE_FORMATS | PNG_FORMAT_FLAG_COLORMAP; - in_base = in_format & BASE_FORMATS; - out_format &= BASE_FORMATS | PNG_FORMAT_FLAG_COLORMAP; - out_base = out_format & BASE_FORMATS; - - if (via_linear) - { - /* Check for an error in this program: */ - if (out_format & (PNG_FORMAT_FLAG_LINEAR|PNG_FORMAT_FLAG_COLORMAP)) - { - fprintf(stderr, "internal transform via linear error 0x%x->0x%x\n", - in_format, out_format); - exit(1); - } - - result->transform = gpc_fn[in_base][out_base | PNG_FORMAT_FLAG_LINEAR]; - result->from_linear = gpc_fn[out_base | PNG_FORMAT_FLAG_LINEAR][out_base]; - result->error_ptr = gpc_error_via_linear[in_format][out_format]; - } - - else if (~in_format & out_format & PNG_FORMAT_FLAG_COLORMAP) - { - /* The input is not colormapped but the output is, the errors will - * typically be large (only the grayscale-no-alpha case permits preserving - * even 8-bit values.) - */ - result->transform = gpc_fn[in_base][out_base]; - result->from_linear = NULL; - result->error_ptr = gpc_error_to_colormap[in_base][out_base]; - } - - else - { - /* The caller handles the colormap->pixel value conversion, so the - * transform function just gets a pixel value, however because libpng - * currently contains a different implementation for mapping a colormap if - * both input and output are colormapped we need different conversion - * functions to deal with errors in the libpng implementation. - */ - if (in_format & out_format & PNG_FORMAT_FLAG_COLORMAP) - result->transform = gpc_fn_colormapped[in_base][out_base]; - else - result->transform = gpc_fn[in_base][out_base]; - result->from_linear = NULL; - result->error_ptr = gpc_error[in_format][out_format]; - } - - /* Follow the libpng simplified API rules to work out what to pass to the gpc - * routines as a background value, if one is not required pass NULL so that - * this program crashes in the even of a programming error. - */ - result->background = NULL; /* default: not required */ - - /* Rule 1: background only need be supplied if alpha is to be removed */ - if (in_format & ~out_format & PNG_FORMAT_FLAG_ALPHA) - { - /* The input value is 'NULL' to use the background and (otherwise) an sRGB - * background color (to use a solid color). The code above uses a fixed - * byte value, BUFFER_INIT8, for buffer even for 16-bit output. For - * linear (16-bit) output the sRGB background color is ignored; the - * composition is always on the background (so BUFFER_INIT8 * 257), except - * that for the colormap (i.e. linear colormapped output) black is used. - */ - result->background = &result->background_color; - - if (out_format & PNG_FORMAT_FLAG_LINEAR || via_linear) - { - if (out_format & PNG_FORMAT_FLAG_COLORMAP) - { - result->background_color.ir = - result->background_color.ig = - result->background_color.ib = 0; - result->background_color.dr = - result->background_color.dg = - result->background_color.db = 0; - } - - else - { - result->background_color.ir = - result->background_color.ig = - result->background_color.ib = BUFFER_INIT8 * 257; - result->background_color.dr = - result->background_color.dg = - result->background_color.db = 0; - } - } - - else /* sRGB output */ - { - if (background != NULL) - { - if (out_format & PNG_FORMAT_FLAG_COLOR) - { - result->background_color.ir = background->red; - result->background_color.ig = background->green; - result->background_color.ib = background->blue; - /* TODO: sometimes libpng uses the power law conversion here, how - * to handle this? - */ - result->background_color.dr = sRGB_to_d[background->red]; - result->background_color.dg = sRGB_to_d[background->green]; - result->background_color.db = sRGB_to_d[background->blue]; - } - - else /* grayscale: libpng only looks at 'g' */ - { - result->background_color.ir = - result->background_color.ig = - result->background_color.ib = background->green; - /* TODO: sometimes libpng uses the power law conversion here, how - * to handle this? - */ - result->background_color.dr = - result->background_color.dg = - result->background_color.db = sRGB_to_d[background->green]; - } - } - - else if ((out_format & PNG_FORMAT_FLAG_COLORMAP) == 0) - { - result->background_color.ir = - result->background_color.ig = - result->background_color.ib = BUFFER_INIT8; - /* TODO: sometimes libpng uses the power law conversion here, how - * to handle this? - */ - result->background_color.dr = - result->background_color.dg = - result->background_color.db = sRGB_to_d[BUFFER_INIT8]; - } - - /* Else the output is colormapped and a background color must be - * provided; if pngstest crashes then that is a bug in this program - * (though libpng should png_error as well.) - */ - else - result->background = NULL; - } - } - - if (result->background == NULL) - { - result->background_color.ir = - result->background_color.ig = - result->background_color.ib = -1; /* not used */ - result->background_color.dr = - result->background_color.dg = - result->background_color.db = 1E30; /* not used */ - } - - - /* Copy the error values into the Transform: */ - result->error[0] = result->error_ptr[0]; - result->error[1] = result->error_ptr[1]; - result->error[2] = result->error_ptr[2]; - result->error[3] = result->error_ptr[3]; -} - - -/* Compare two pixels. - * - * OLD error values: -static int error_to_linear = 811; * by experiment * -static int error_to_linear_grayscale = 424; * by experiment * -static int error_to_sRGB = 6; * by experiment * -static int error_to_sRGB_grayscale = 17; * libpng error by calculation + - 2 by experiment * -static int error_in_compose = 2; * by experiment * -static int error_in_premultiply = 1; - * - * The following is *just* the result of a round trip from 8-bit sRGB to linear - * then back to 8-bit sRGB when it is done by libpng. There are two problems: - * - * 1) libpng currently uses a 2.2 power law with no linear segment, this results - * in instability in the low values and even with 16-bit precision sRGB(1) ends - * up mapping to sRGB(0) as a result of rounding in the 16-bit representation. - * This gives an error of 1 in the handling of value 1 only. - * - * 2) libpng currently uses an intermediate 8-bit linear value in gamma - * correction of 8-bit values. This results in many more errors, the worse of - * which is mapping sRGB(14) to sRGB(0). - * - * The general 'error_via_linear' is more complex because of pre-multiplication, - * this compounds the 8-bit errors according to the alpha value of the pixel. - * As a result 256 values are pre-calculated for error_via_linear. - */ -#if 0 -static int error_in_libpng_gamma; -static int error_via_linear[256]; /* Indexed by 8-bit alpha */ - -static void -init_error_via_linear(void) -{ - int alpha; - - error_via_linear[0] = 255; /* transparent pixel */ - - for (alpha=1; alpha<=255; ++alpha) - { - /* 16-bit values less than 128.5 get rounded to 8-bit 0 and so the worst - * case error arises with 16-bit 128.5, work out what sRGB - * (non-associated) value generates 128.5; any value less than this is - * going to map to 0, so the worst error is floor(value). - * - * Note that errors are considerably higher (more than a factor of 2) - * because libpng uses a simple power law for sRGB data at present. - * - * Add .1 for arithmetic errors inside libpng. - */ - double v = floor(255*pow(.5/*(128.5 * 255 / 65535)*/ / alpha, 1/2.2)+.1); - - error_via_linear[alpha] = (int)v; - } - - /* This is actually 14.99, but, despite the closeness to 15, 14 seems to work - * ok in this case. - */ - error_in_libpng_gamma = 14; -} -#endif - -static void -print_pixel(char string[64], const Pixel *pixel, png_uint_32 format) -{ - switch (format & (PNG_FORMAT_FLAG_ALPHA|PNG_FORMAT_FLAG_COLOR)) - { - case 0: - sprintf(string, "%s(%d)", format_names[format], pixel->g); - break; - - case PNG_FORMAT_FLAG_ALPHA: - sprintf(string, "%s(%d,%d)", format_names[format], pixel->g, - pixel->a); - break; - - case PNG_FORMAT_FLAG_COLOR: - sprintf(string, "%s(%d,%d,%d)", format_names[format], - pixel->r, pixel->g, pixel->b); - break; - - case PNG_FORMAT_FLAG_COLOR|PNG_FORMAT_FLAG_ALPHA: - sprintf(string, "%s(%d,%d,%d,%d)", format_names[format], - pixel->r, pixel->g, pixel->b, pixel->a); - break; - - default: - sprintf(string, "invalid-format"); - break; - } -} - -static int -logpixel(const Transform *transform, png_uint_32 x, png_uint_32 y, - const Pixel *in, const Pixel *calc, const Pixel *out, const char *reason) -{ - const png_uint_32 in_format = transform->in_image->image.format; - const png_uint_32 out_format = transform->out_image->image.format; - - png_uint_32 back_format = out_format & ~PNG_FORMAT_FLAG_ALPHA; - const char *via_linear = ""; - - char pixel_in[64], pixel_calc[64], pixel_out[64], pixel_loc[64]; - char background_info[100]; - - print_pixel(pixel_in, in, in_format); - print_pixel(pixel_calc, calc, out_format); - print_pixel(pixel_out, out, out_format); - - if (transform->is_palette) - sprintf(pixel_loc, "palette: %lu", (unsigned long)y); - else - sprintf(pixel_loc, "%lu,%lu", (unsigned long)x, (unsigned long)y); - - if (transform->from_linear != NULL) - { - via_linear = " (via linear)"; - /* And as a result the *read* format which did any background processing - * was itself linear, so the background color information is also - * linear. - */ - back_format |= PNG_FORMAT_FLAG_LINEAR; - } - - if (transform->background != NULL) - { - Pixel back; - char pixel_back[64]; - - back.r = transform->background->ir; - back.g = transform->background->ig; - back.b = transform->background->ib; - back.a = -1; /* not used */ - - print_pixel(pixel_back, &back, back_format); - sprintf(background_info, " on background %s", pixel_back); - } - - else - background_info[0] = 0; - - if (transform->in_image->file_name != transform->out_image->file_name) - { - char error_buffer[512]; - sprintf(error_buffer, - "(%s) %s error%s:\n %s%s ->\n %s\n not: %s.\n" - "Use --preserve and examine: ", pixel_loc, reason, via_linear, - pixel_in, background_info, pixel_out, pixel_calc); - return logerror(transform->in_image, transform->in_image->file_name, - error_buffer, transform->out_image->file_name); - } - - else - { - char error_buffer[512]; - sprintf(error_buffer, - "(%s) %s error%s:\n %s%s ->\n %s\n not: %s.\n" - " The error happened when reading the original file with this format.", - pixel_loc, reason, via_linear, pixel_in, background_info, pixel_out, - pixel_calc); - return logerror(transform->in_image, transform->in_image->file_name, - error_buffer, ""); - } -} - -static int -cmppixel(Transform *transform, png_const_voidp in, png_const_voidp out, - png_uint_32 x, png_uint_32 y/*or palette index*/) -{ - int maxerr; - png_const_charp errmsg; - Pixel pixel_in, pixel_calc, pixel_out; - - transform->in_gp(&pixel_in, in); - - if (transform->from_linear == NULL) - transform->transform(&pixel_calc, &pixel_in, transform->background); - - else - { - transform->transform(&pixel_out, &pixel_in, transform->background); - transform->from_linear(&pixel_calc, &pixel_out, NULL); - } - - transform->out_gp(&pixel_out, out); - - /* Eliminate the case where the input and output values match exactly. */ - if (pixel_calc.a == pixel_out.a && pixel_calc.r == pixel_out.r && - pixel_calc.g == pixel_out.g && pixel_calc.b == pixel_out.b) - return 1; - - /* Eliminate the case where the output pixel is transparent and the output - * is 8-bit - any component values are valid. Don't check the input alpha - * here to also skip the 16-bit small alpha cases. - */ - if (transform->output_8bit && pixel_calc.a == 0 && pixel_out.a == 0) - return 1; - - /* Check for alpha errors first; an alpha error can damage the components too - * so avoid spurious checks on components if one is found. - */ - errmsg = NULL; - { - int err_a = abs(pixel_calc.a-pixel_out.a); - - if (err_a > transform->error[3]) - { - /* If accumulating check the components too */ - if (transform->accumulate) - transform->error[3] = (png_uint_16)err_a; - - else - errmsg = "alpha"; - } - } - - /* Now if *either* of the output alphas are 0 but alpha is within tolerance - * eliminate the 8-bit component comparison. - */ - if (errmsg == NULL && transform->output_8bit && - (pixel_calc.a == 0 || pixel_out.a == 0)) - return 1; - - if (errmsg == NULL) /* else just signal an alpha error */ - { - int err_r = abs(pixel_calc.r - pixel_out.r); - int err_g = abs(pixel_calc.g - pixel_out.g); - int err_b = abs(pixel_calc.b - pixel_out.b); - int limit; - - if ((err_r | err_g | err_b) == 0) - return 1; /* exact match */ - - /* Mismatch on a component, check the input alpha */ - if (pixel_in.a >= transform->in_opaque) - { - errmsg = "opaque component"; - limit = 2; /* opaque */ - } - - else if (pixel_in.a > 0) - { - errmsg = "alpha component"; - limit = 1; /* partially transparent */ - } - - else - { - errmsg = "transparent component (background)"; - limit = 0; /* transparent */ - } - - maxerr = err_r; - if (maxerr < err_g) maxerr = err_g; - if (maxerr < err_b) maxerr = err_b; - - if (maxerr <= transform->error[limit]) - return 1; /* within the error limits */ - - /* Handle a component mis-match; log it, just return an error code, or - * accumulate it. - */ - if (transform->accumulate) - { - transform->error[limit] = (png_uint_16)maxerr; - return 1; /* to cause the caller to keep going */ - } - } - - /* Failure to match and not accumulating, so the error must be logged. */ - return logpixel(transform, x, y, &pixel_in, &pixel_calc, &pixel_out, errmsg); -} - -static png_byte -component_loc(png_byte loc[4], png_uint_32 format) -{ - /* Given a format return the number of channels and the location of - * each channel. - * - * The mask 'loc' contains the component offset of the channels in the - * following order. Note that if 'format' is grayscale the entries 1-3 must - * all contain the location of the gray channel. - * - * 0: alpha - * 1: red or gray - * 2: green or gray - * 3: blue or gray - */ - png_byte channels; - - if (format & PNG_FORMAT_FLAG_COLOR) - { - channels = 3; - - loc[2] = 1; - -# ifdef PNG_FORMAT_BGR_SUPPORTED - if (format & PNG_FORMAT_FLAG_BGR) - { - loc[1] = 2; - loc[3] = 0; - } - - else -# endif - { - loc[1] = 0; - loc[3] = 2; - } - } - - else - { - channels = 1; - loc[1] = loc[2] = loc[3] = 0; - } - - if (format & PNG_FORMAT_FLAG_ALPHA) - { -# ifdef PNG_FORMAT_AFIRST_SUPPORTED - if (format & PNG_FORMAT_FLAG_AFIRST) - { - loc[0] = 0; - ++loc[1]; - ++loc[2]; - ++loc[3]; - } - - else -# endif - loc[0] = channels; - - ++channels; - } - - else - loc[0] = 4; /* not present */ - - return channels; -} - -/* Compare two images, the original 'a', which was written out then read back in - * to * give image 'b'. The formats may have been changed. - */ -static int -compare_two_images(Image *a, Image *b, int via_linear, - png_const_colorp background) -{ - ptrdiff_t stridea = a->stride; - ptrdiff_t strideb = b->stride; - png_const_bytep rowa = a->buffer+16; - png_const_bytep rowb = b->buffer+16; - const png_uint_32 width = a->image.width; - const png_uint_32 height = a->image.height; - const png_uint_32 formata = a->image.format; - const png_uint_32 formatb = b->image.format; - const unsigned int a_sample = PNG_IMAGE_SAMPLE_SIZE(formata); - const unsigned int b_sample = PNG_IMAGE_SAMPLE_SIZE(formatb); - int alpha_added, alpha_removed; - int bchannels; - int btoa[4]; - png_uint_32 y; - Transform tr; - - /* This should never happen: */ - if (width != b->image.width || height != b->image.height) - return logerror(a, a->file_name, ": width x height changed: ", - b->file_name); - - /* Set up the background and the transform */ - transform_from_formats(&tr, a, b, background, via_linear); - - /* Find the first row and inter-row space. */ - if (!(formata & PNG_FORMAT_FLAG_COLORMAP) && - (formata & PNG_FORMAT_FLAG_LINEAR)) - stridea *= 2; - - if (!(formatb & PNG_FORMAT_FLAG_COLORMAP) && - (formatb & PNG_FORMAT_FLAG_LINEAR)) - strideb *= 2; - - if (stridea < 0) rowa += (height-1) * (-stridea); - if (strideb < 0) rowb += (height-1) * (-strideb); - - /* First shortcut the two colormap case by comparing the image data; if it - * matches then we expect the colormaps to match, although this is not - * absolutely necessary for an image match. If the colormaps fail to match - * then there is a problem in libpng. - */ - if (formata & formatb & PNG_FORMAT_FLAG_COLORMAP) - { - /* Only check colormap entries that actually exist; */ - png_const_bytep ppa, ppb; - int match; - png_byte in_use[256], amax = 0, bmax = 0; - - memset(in_use, 0, sizeof in_use); - - ppa = rowa; - ppb = rowb; - - /* Do this the slow way to accumulate the 'in_use' flags, don't break out - * of the loop until the end; this validates the color-mapped data to - * ensure all pixels are valid color-map indexes. - */ - for (y=0, match=1; y bmax) - bmax = bval; - - if (bval != aval) - match = 0; - - in_use[aval] = 1; - if (aval > amax) - amax = aval; - } - } - - /* If the buffers match then the colormaps must too. */ - if (match) - { - /* Do the color-maps match, entry by entry? Only check the 'in_use' - * entries. An error here should be logged as a color-map error. - */ - png_const_bytep a_cmap = (png_const_bytep)a->colormap; - png_const_bytep b_cmap = (png_const_bytep)b->colormap; - int result = 1; /* match by default */ - - /* This is used in logpixel to get the error message correct. */ - tr.is_palette = 1; - - for (y=0; y<256; ++y, a_cmap += a_sample, b_cmap += b_sample) - if (in_use[y]) - { - /* The colormap entries should be valid, but because libpng doesn't - * do any checking at present the original image may contain invalid - * pixel values. These cause an error here (at present) unless - * accumulating errors in which case the program just ignores them. - */ - if (y >= a->image.colormap_entries) - { - if ((a->opts & ACCUMULATE) == 0) - { - char pindex[9]; - sprintf(pindex, "%lu[%lu]", (unsigned long)y, - (unsigned long)a->image.colormap_entries); - logerror(a, a->file_name, ": bad pixel index: ", pindex); - } - result = 0; - } - - else if (y >= b->image.colormap_entries) - { - if ((a->opts & ACCUMULATE) == 0) - { - char pindex[9]; - sprintf(pindex, "%lu[%lu]", (unsigned long)y, - (unsigned long)b->image.colormap_entries); - logerror(b, b->file_name, ": bad pixel index: ", pindex); - } - result = 0; - } - - /* All the mismatches are logged here; there can only be 256! */ - else if (!cmppixel(&tr, a_cmap, b_cmap, 0, y)) - result = 0; - } - - /* If reqested copy the error values back from the Transform. */ - if (a->opts & ACCUMULATE) - { - tr.error_ptr[0] = tr.error[0]; - tr.error_ptr[1] = tr.error[1]; - tr.error_ptr[2] = tr.error[2]; - tr.error_ptr[3] = tr.error[3]; - result = 1; /* force a continue */ - } - - return result; - } - - /* else the image buffers don't match pixel-wise so compare sample values - * instead, but first validate that the pixel indexes are in range (but - * only if not accumulating, when the error is ignored.) - */ - else if ((a->opts & ACCUMULATE) == 0) - { - /* Check the original image first, - * TODO: deal with input images with bad pixel values? - */ - if (amax >= a->image.colormap_entries) - { - char pindex[9]; - sprintf(pindex, "%d[%lu]", amax, - (unsigned long)a->image.colormap_entries); - return logerror(a, a->file_name, ": bad pixel index: ", pindex); - } - - else if (bmax >= b->image.colormap_entries) - { - char pindex[9]; - sprintf(pindex, "%d[%lu]", bmax, - (unsigned long)b->image.colormap_entries); - return logerror(b, b->file_name, ": bad pixel index: ", pindex); - } - } - } - - /* We can directly compare pixel values without the need to use the read - * or transform support (i.e. a memory compare) if: - * - * 1) The bit depth has not changed. - * 2) RGB to grayscale has not been done (the reverse is ok; we just compare - * the three RGB values to the original grayscale.) - * 3) An alpha channel has not been removed from an 8-bit format, or the - * 8-bit alpha value of the pixel was 255 (opaque). - * - * If an alpha channel has been *added* then it must have the relevant opaque - * value (255 or 65535). - * - * The fist two the tests (in the order given above) (using the boolean - * equivalence !a && !b == !(a || b)) - */ - if (!(((formata ^ formatb) & PNG_FORMAT_FLAG_LINEAR) | - (formata & (formatb ^ PNG_FORMAT_FLAG_COLOR) & PNG_FORMAT_FLAG_COLOR))) - { - /* Was an alpha channel changed? */ - const png_uint_32 alpha_changed = (formata ^ formatb) & - PNG_FORMAT_FLAG_ALPHA; - - /* Was an alpha channel removed? (The third test.) If so the direct - * comparison is only possible if the input alpha is opaque. - */ - alpha_removed = (formata & alpha_changed) != 0; - - /* Was an alpha channel added? */ - alpha_added = (formatb & alpha_changed) != 0; - - /* The channels may have been moved between input and output, this finds - * out how, recording the result in the btoa array, which says where in - * 'a' to find each channel of 'b'. If alpha was added then btoa[alpha] - * ends up as 4 (and is not used.) - */ - { - int i; - png_byte aloc[4]; - png_byte bloc[4]; - - /* The following are used only if the formats match, except that - * 'bchannels' is a flag for matching formats. btoa[x] says, for each - * channel in b, where to find the corresponding value in a, for the - * bchannels. achannels may be different for a gray to rgb transform - * (a will be 1 or 2, b will be 3 or 4 channels.) - */ - (void)component_loc(aloc, formata); - bchannels = component_loc(bloc, formatb); - - /* Hence the btoa array. */ - for (i=0; i<4; ++i) if (bloc[i] < 4) - btoa[bloc[i]] = aloc[i]; /* may be '4' for alpha */ - - if (alpha_added) - alpha_added = bloc[0]; /* location of alpha channel in image b */ - - else - alpha_added = 4; /* Won't match an image b channel */ - - if (alpha_removed) - alpha_removed = aloc[0]; /* location of alpha channel in image a */ - - else - alpha_removed = 4; - } - } - - else - { - /* Direct compare is not possible, cancel out all the corresponding local - * variables. - */ - bchannels = 0; - alpha_removed = alpha_added = 4; - btoa[3] = btoa[2] = btoa[1] = btoa[0] = 4; /* 4 == not present */ - } - - for (y=0; ycolormap + a_sample * *ppa++; - else - psa = ppa, ppa += a_sample; - - if (formatb & PNG_FORMAT_FLAG_COLORMAP) - psb = (png_const_bytep)b->colormap + b_sample * *ppb++; - else - psb = ppb, ppb += b_sample; - - /* Do the fast test if possible. */ - if (bchannels) - { - /* Check each 'b' channel against either the corresponding 'a' - * channel or the opaque alpha value, as appropriate. If - * alpha_removed value is set (not 4) then also do this only if the - * 'a' alpha channel (alpha_removed) is opaque; only relevant for - * the 8-bit case. - */ - if (formatb & PNG_FORMAT_FLAG_LINEAR) /* 16-bit checks */ - { - png_const_uint_16p pua = aligncastconst(png_const_uint_16p, psa); - png_const_uint_16p pub = aligncastconst(png_const_uint_16p, psb); - - switch (bchannels) - { - case 4: - if (pua[btoa[3]] != pub[3]) break; - case 3: - if (pua[btoa[2]] != pub[2]) break; - case 2: - if (pua[btoa[1]] != pub[1]) break; - case 1: - if (pua[btoa[0]] != pub[0]) break; - if (alpha_added != 4 && pub[alpha_added] != 65535) break; - continue; /* x loop */ - default: - break; /* impossible */ - } - } - - else if (alpha_removed == 4 || psa[alpha_removed] == 255) - { - switch (bchannels) - { - case 4: - if (psa[btoa[3]] != psb[3]) break; - case 3: - if (psa[btoa[2]] != psb[2]) break; - case 2: - if (psa[btoa[1]] != psb[1]) break; - case 1: - if (psa[btoa[0]] != psb[0]) break; - if (alpha_added != 4 && psb[alpha_added] != 255) break; - continue; /* x loop */ - default: - break; /* impossible */ - } - } - } - - /* If we get to here the fast match failed; do the slow match for this - * pixel. - */ - if (!cmppixel(&tr, psa, psb, x, y) && (a->opts & KEEP_GOING) == 0) - return 0; /* error case */ - } - } - - /* If reqested copy the error values back from the Transform. */ - if (a->opts & ACCUMULATE) - { - tr.error_ptr[0] = tr.error[0]; - tr.error_ptr[1] = tr.error[1]; - tr.error_ptr[2] = tr.error[2]; - tr.error_ptr[3] = tr.error[3]; - } - - return 1; -} - -/* Read the file; how the read gets done depends on which of input_file and - * input_memory have been set. - */ -static int -read_file(Image *image, png_uint_32 format, png_const_colorp background) -{ - memset(&image->image, 0, sizeof image->image); - image->image.version = PNG_IMAGE_VERSION; - - if (image->input_memory != NULL) - { - if (!png_image_begin_read_from_memory(&image->image, image->input_memory, - image->input_memory_size)) - return logerror(image, "memory init: ", image->file_name, ""); - } - -# ifdef PNG_STDIO_SUPPORTED - else if (image->input_file != NULL) - { - if (!png_image_begin_read_from_stdio(&image->image, image->input_file)) - return logerror(image, "stdio init: ", image->file_name, ""); - } - - else - { - if (!png_image_begin_read_from_file(&image->image, image->file_name)) - return logerror(image, "file init: ", image->file_name, ""); - } -# else - else - { - return logerror(image, "unsupported file/stdio init: ", - image->file_name, ""); - } -# endif - - /* This must be set after the begin_read call: */ - if (image->opts & sRGB_16BIT) - image->image.flags |= PNG_IMAGE_FLAG_16BIT_sRGB; - - /* Have an initialized image with all the data we need plus, maybe, an - * allocated file (myfile) or buffer (mybuffer) that need to be freed. - */ - { - int result; - png_uint_32 image_format; - - /* Print both original and output formats. */ - image_format = image->image.format; - - if (image->opts & VERBOSE) - { - printf("%s %lu x %lu %s -> %s", image->file_name, - (unsigned long)image->image.width, - (unsigned long)image->image.height, - format_names[image_format & FORMAT_MASK], - (format & FORMAT_NO_CHANGE) != 0 || image->image.format == format - ? "no change" : format_names[format & FORMAT_MASK]); - - if (background != NULL) - printf(" background(%d,%d,%d)\n", background->red, - background->green, background->blue); - else - printf("\n"); - - fflush(stdout); - } - - /* 'NO_CHANGE' combined with the color-map flag forces the base format - * flags to be set on read to ensure that the original representation is - * not lost in the pass through a colormap format. - */ - if ((format & FORMAT_NO_CHANGE) != 0) - { - if ((format & PNG_FORMAT_FLAG_COLORMAP) != 0 && - (image_format & PNG_FORMAT_FLAG_COLORMAP) != 0) - format = (image_format & ~BASE_FORMATS) | (format & BASE_FORMATS); - - else - format = image_format; - } - - image->image.format = format; - - image->stride = PNG_IMAGE_ROW_STRIDE(image->image) + image->stride_extra; - allocbuffer(image); - - result = png_image_finish_read(&image->image, background, - image->buffer+16, (png_int_32)image->stride, image->colormap); - - checkbuffer(image, image->file_name); - - if (result) - return checkopaque(image); - - else - return logerror(image, image->file_name, ": image read failed", ""); - } -} - -/* Reads from a filename, which must be in image->file_name, but uses - * image->opts to choose the method. The file is always read in its native - * format (the one the simplified API suggests). - */ -static int -read_one_file(Image *image) -{ - if (!(image->opts & READ_FILE) || (image->opts & USE_STDIO)) - { - /* memory or stdio. */ - FILE *f = fopen(image->file_name, "rb"); - - if (f != NULL) - { - if (image->opts & READ_FILE) - image->input_file = f; - - else /* memory */ - { - if (fseek(f, 0, SEEK_END) == 0) - { - long int cb = ftell(f); - - if (cb > 0 && (unsigned long int)cb < (size_t)~(size_t)0) - { - png_bytep b = voidcast(png_bytep, malloc((size_t)cb)); - - if (b != NULL) - { - rewind(f); - - if (fread(b, (size_t)cb, 1, f) == 1) - { - fclose(f); - image->input_memory_size = cb; - image->input_memory = b; - } - - else - { - free(b); - return logclose(image, f, image->file_name, - ": read failed: "); - } - } - - else - return logclose(image, f, image->file_name, - ": out of memory: "); - } - - else if (cb == 0) - return logclose(image, f, image->file_name, - ": zero length: "); - - else - return logclose(image, f, image->file_name, - ": tell failed: "); - } - - else - return logclose(image, f, image->file_name, ": seek failed: "); - } - } - - else - return logerror(image, image->file_name, ": open failed: ", - strerror(errno)); - } - - return read_file(image, FORMAT_NO_CHANGE, NULL); -} - -#ifdef PNG_SIMPLIFIED_WRITE_SUPPORTED -static int -write_one_file(Image *output, Image *image, int convert_to_8bit) -{ - if (image->opts & FAST_WRITE) - image->image.flags |= PNG_IMAGE_FLAG_FAST; - - if (image->opts & USE_STDIO) - { - FILE *f = tmpfile(); - - if (f != NULL) - { - if (png_image_write_to_stdio(&image->image, f, convert_to_8bit, - image->buffer+16, (png_int_32)image->stride, image->colormap)) - { - if (fflush(f) == 0) - { - rewind(f); - initimage(output, image->opts, "tmpfile", image->stride_extra); - output->input_file = f; - if (!checkopaque(image)) - return 0; - } - - else - return logclose(image, f, "tmpfile", ": flush: "); - } - - else - { - fclose(f); - return logerror(image, "tmpfile", ": write failed", ""); - } - } - - else - return logerror(image, "tmpfile", ": open: ", strerror(errno)); - } - - else - { - static int counter = 0; - char name[32]; - - sprintf(name, "%s%d.png", tmpf, ++counter); - - if (png_image_write_to_file(&image->image, name, convert_to_8bit, - image->buffer+16, (png_int_32)image->stride, image->colormap)) - { - initimage(output, image->opts, output->tmpfile_name, - image->stride_extra); - /* Afterwards, or freeimage will delete it! */ - strcpy(output->tmpfile_name, name); - - if (!checkopaque(image)) - return 0; - } - - else - return logerror(image, name, ": write failed", ""); - } - - /* 'output' has an initialized temporary image, read this back in and compare - * this against the original: there should be no change since the original - * format was written unmodified unless 'convert_to_8bit' was specified. - * However, if the original image was color-mapped, a simple read will zap - * the linear, color and maybe alpha flags, this will cause spurious failures - * under some circumstances. - */ - if (read_file(output, image->image.format | FORMAT_NO_CHANGE, NULL)) - { - png_uint_32 original_format = image->image.format; - - if (convert_to_8bit) - original_format &= ~PNG_FORMAT_FLAG_LINEAR; - - if ((output->image.format & BASE_FORMATS) != - (original_format & BASE_FORMATS)) - return logerror(image, image->file_name, ": format changed on read: ", - output->file_name); - - return compare_two_images(image, output, 0/*via linear*/, NULL); - } - - else - return logerror(output, output->tmpfile_name, - ": read of new file failed", ""); -} -#endif - -static int -testimage(Image *image, png_uint_32 opts, format_list *pf) -{ - int result; - Image copy; - - /* Copy the original data, stealing it from 'image' */ - checkopaque(image); - copy = *image; - - copy.opts = opts; - copy.buffer = NULL; - copy.bufsize = 0; - copy.allocsize = 0; - - image->input_file = NULL; - image->input_memory = NULL; - image->input_memory_size = 0; - image->tmpfile_name[0] = 0; - - { - png_uint_32 counter; - Image output; - - newimage(&output); - - result = 1; - - /* Use the low bit of 'counter' to indicate whether or not to do alpha - * removal with a background color or by composting onto the image; this - * step gets skipped if it isn't relevant - */ - for (counter=0; counter<2*FORMAT_COUNT; ++counter) - if (format_isset(pf, counter >> 1)) - { - png_uint_32 format = counter >> 1; - - png_color background_color; - png_colorp background = NULL; - - /* If there is a format change that removes the alpha channel then - * the background is relevant. If the output is 8-bit color-mapped - * then a background color *must* be provided, otherwise there are - * two tests to do - one with a color, the other with NULL. The - * NULL test happens second. - */ - if ((counter & 1) == 0) - { - if ((format & PNG_FORMAT_FLAG_ALPHA) == 0 && - (image->image.format & PNG_FORMAT_FLAG_ALPHA) != 0) - { - /* Alpha/transparency will be removed, the background is - * relevant: make it a color the first time - */ - random_color(&background_color); - background = &background_color; - - /* BUT if the output is to a color-mapped 8-bit format then - * the background must always be a color, so increment 'counter' - * to skip the NULL test. - */ - if ((format & PNG_FORMAT_FLAG_COLORMAP) != 0 && - (format & PNG_FORMAT_FLAG_LINEAR) == 0) - ++counter; - } - - /* Otherwise an alpha channel is not being eliminated, just leave - * background NULL and skip the (counter & 1) NULL test. - */ - else - ++counter; - } - /* else just use NULL for background */ - - resetimage(©); - copy.opts = opts; /* in case read_file needs to change it */ - - result = read_file(©, format, background); - if (!result) - break; - - /* Make sure the file just read matches the original file. */ - result = compare_two_images(image, ©, 0/*via linear*/, background); - if (!result) - break; - -# ifdef PNG_SIMPLIFIED_WRITE_SUPPORTED - /* Write the *copy* just made to a new file to make sure the write - * side works ok. Check the conversion to sRGB if the copy is - * linear. - */ - output.opts = opts; - result = write_one_file(&output, ©, 0/*convert to 8bit*/); - if (!result) - break; - - /* Validate against the original too; the background is needed here - * as well so that compare_two_images knows what color was used. - */ - result = compare_two_images(image, &output, 0, background); - if (!result) - break; - - if ((format & PNG_FORMAT_FLAG_LINEAR) != 0 && - (format & PNG_FORMAT_FLAG_COLORMAP) == 0) - { - /* 'output' is linear, convert to the corresponding sRGB format. - */ - output.opts = opts; - result = write_one_file(&output, ©, 1/*convert to 8bit*/); - if (!result) - break; - - /* This may involve a conversion via linear; in the ideal world - * this would round-trip correctly, but libpng 1.5.7 is not the - * ideal world so allow a drift (error_via_linear). - * - * 'image' has an alpha channel but 'output' does not then there - * will a strip-alpha-channel operation (because 'output' is - * linear), handle this by composing on black when doing the - * comparison. - */ - result = compare_two_images(image, &output, 1/*via_linear*/, - background); - if (!result) - break; - } -# endif /* PNG_SIMPLIFIED_WRITE_SUPPORTED */ - } - - freeimage(&output); - } - - freeimage(©); - - return result; -} - -static int -test_one_file(const char *file_name, format_list *formats, png_uint_32 opts, - int stride_extra, int log_pass) -{ - int result; - Image image; - - newimage(&image); - initimage(&image, opts, file_name, stride_extra); - result = read_one_file(&image); - if (result) - result = testimage(&image, opts, formats); - freeimage(&image); - - /* Ensure that stderr is flushed into any log file */ - fflush(stderr); - - if (log_pass) - { - if (result) - printf("PASS:"); - - else - printf("FAIL:"); - -# ifndef PNG_SIMPLIFIED_WRITE_SUPPORTED - printf(" (no write)"); -# endif - - print_opts(opts); - printf(" %s\n", file_name); - /* stdout may not be line-buffered if it is piped to a file, so: */ - fflush(stdout); - } - - else if (!result) - exit(1); - - return result; -} - -int -main(int argc, char **argv) -{ - png_uint_32 opts = FAST_WRITE; - format_list formats; - const char *touch = NULL; - int log_pass = 0; - int redundant = 0; - int stride_extra = 0; - int retval = 0; - int c; - - init_sRGB_to_d(); -#if 0 - init_error_via_linear(); -#endif - format_init(&formats); - - for (c=1; c= sizeof tmpf) - { - fflush(stdout); - fprintf(stderr, "%s: %s is too long for a temp file prefix\n", - argv[0], argv[c]); - exit(99); - } - - /* Safe: checked above */ - strcpy(tmpf, argv[c]); - } - - else - { - fflush(stdout); - fprintf(stderr, "%s: %s requires a temporary file prefix\n", - argv[0], arg); - exit(99); - } - } - else if (strcmp(arg, "--touch") == 0) - { - if (c+1 < argc) - touch = argv[++c]; - - else - { - fflush(stdout); - fprintf(stderr, "%s: %s requires a file name argument\n", - argv[0], arg); - exit(99); - } - } - else if (arg[0] == '+') - { - png_uint_32 format = formatof(arg+1); - - if (format > FORMAT_COUNT) - exit(99); - - format_set(&formats, format); - } - else if (arg[0] == '-' && arg[1] != 0 && (arg[1] != '0' || arg[2] != 0)) - { - fflush(stdout); - fprintf(stderr, "%s: unknown option: %s\n", argv[0], arg); - exit(99); - } - else - { - if (format_is_initial(&formats)) - format_default(&formats, redundant); - - if (arg[0] == '-') - { - const int term = (arg[1] == '0' ? 0 : '\n'); - unsigned int ich = 0; - - /* Loop reading files, use a static buffer to simplify this and just - * stop if the name gets to long. - */ - static char buffer[4096]; - - do - { - int ch = getchar(); - - /* Don't allow '\0' in file names, and terminate with '\n' or, - * for -0, just '\0' (use -print0 to find to make this work!) - */ - if (ch == EOF || ch == term || ch == 0) - { - buffer[ich] = 0; - - if (ich > 0 && !test_one_file(buffer, &formats, opts, - stride_extra, log_pass)) - retval = 1; - - if (ch == EOF) - break; - - ich = 0; - --ich; /* so that the increment below sets it to 0 again */ - } - - else - buffer[ich] = (char)ch; - } while (++ich < sizeof buffer); - - if (ich) - { - buffer[32] = 0; - buffer[4095] = 0; - fprintf(stderr, "%s...%s: file name too long\n", buffer, - buffer+(4096-32)); - exit(99); - } - } - - else if (!test_one_file(arg, &formats, opts, stride_extra, log_pass)) - retval = 1; - } - } - - if (opts & ACCUMULATE) - { - unsigned int in; - - printf("static png_uint_16 gpc_error[16/*in*/][16/*out*/][4/*a*/] =\n"); - printf("{\n"); - for (in=0; in<16; ++in) - { - unsigned int out; - printf(" { /* input: %s */\n ", format_names[in]); - for (out=0; out<16; ++out) - { - unsigned int alpha; - printf(" {"); - for (alpha=0; alpha<4; ++alpha) - { - printf(" %d", gpc_error[in][out][alpha]); - if (alpha < 3) putchar(','); - } - printf(" }"); - if (out < 15) - { - putchar(','); - if (out % 4 == 3) printf("\n "); - } - } - printf("\n }"); - - if (in < 15) - putchar(','); - else - putchar('\n'); - } - printf("};\n"); - - printf("static png_uint_16 gpc_error_via_linear[16][4/*out*/][4] =\n"); - printf("{\n"); - for (in=0; in<16; ++in) - { - unsigned int out; - printf(" { /* input: %s */\n ", format_names[in]); - for (out=0; out<4; ++out) - { - unsigned int alpha; - printf(" {"); - for (alpha=0; alpha<4; ++alpha) - { - printf(" %d", gpc_error_via_linear[in][out][alpha]); - if (alpha < 3) putchar(','); - } - printf(" }"); - if (out < 3) - putchar(','); - } - printf("\n }"); - - if (in < 15) - putchar(','); - else - putchar('\n'); - } - printf("};\n"); - - printf("static png_uint_16 gpc_error_to_colormap[8/*i*/][8/*o*/][4] =\n"); - printf("{\n"); - for (in=0; in<8; ++in) - { - unsigned int out; - printf(" { /* input: %s */\n ", format_names[in]); - for (out=0; out<8; ++out) - { - unsigned int alpha; - printf(" {"); - for (alpha=0; alpha<4; ++alpha) - { - printf(" %d", gpc_error_to_colormap[in][out][alpha]); - if (alpha < 3) putchar(','); - } - printf(" }"); - if (out < 7) - { - putchar(','); - if (out % 4 == 3) printf("\n "); - } - } - printf("\n }"); - - if (in < 7) - putchar(','); - else - putchar('\n'); - } - printf("};\n"); - } - - if (retval == 0 && touch != NULL) - { - FILE *fsuccess = fopen(touch, "wt"); - - if (fsuccess != NULL) - { - int error = 0; - fprintf(fsuccess, "PNG simple API tests succeeded\n"); - fflush(fsuccess); - error = ferror(fsuccess); - - if (fclose(fsuccess) || error) - { - fflush(stdout); - fprintf(stderr, "%s: write failed\n", touch); - exit(99); - } - } - - else - { - fflush(stdout); - fprintf(stderr, "%s: open failed\n", touch); - exit(99); - } - } - - return retval; -} - -#else /* !PNG_SIMPLIFIED_READ_SUPPORTED */ -int main(void) -{ - fprintf(stderr, "pngstest: no read support in libpng, test skipped\n"); - /* So the test is skipped: */ - return 77; -} -#endif /* PNG_SIMPLIFIED_READ_SUPPORTED */ diff --git a/io2d/src/3rd-party/libpng/contrib/libtests/pngunknown.c b/io2d/src/3rd-party/libpng/contrib/libtests/pngunknown.c deleted file mode 100644 index a21c9d7..0000000 --- a/io2d/src/3rd-party/libpng/contrib/libtests/pngunknown.c +++ /dev/null @@ -1,1245 +0,0 @@ - -/* pngunknown.c - test the read side unknown chunk handling - * - * Last changed in libpng 1.6.0 [February 14, 2013] - * Copyright (c) 2013 Glenn Randers-Pehrson - * Written by John Cunningham Bowler - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * NOTES: - * This is a C program that is intended to be linked against libpng. It - * allows the libpng unknown handling code to be tested by interpreting - * arguments to save or discard combinations of chunks. The program is - * currently just a minimal validation for the built-in libpng facilities. - */ - -#include -#include -#include -#include - -/* Define the following to use this test against your installed libpng, rather - * than the one being built here: - */ -#ifdef PNG_FREESTANDING_TESTS -# include -#else -# include "../../png.h" -#endif - -/* Since this program tests the ability to change the unknown chunk handling - * these must be defined: - */ -#if defined(PNG_SET_UNKNOWN_CHUNKS_SUPPORTED) &&\ - defined(PNG_READ_SUPPORTED) - -/* One of these must be defined to allow us to find out what happened. It is - * still useful to set unknown chunk handling without either of these in order - * to cause *known* chunks to be discarded. This can be a significant - * efficiency gain, but it can't really be tested here. - */ -#if defined(PNG_READ_USER_CHUNKS_SUPPORTED) ||\ - defined(PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED) - -#if PNG_LIBPNG_VER < 10500 -/* This deliberately lacks the PNG_CONST. */ -typedef png_byte *png_const_bytep; - -/* This is copied from 1.5.1 png.h: */ -#define PNG_INTERLACE_ADAM7_PASSES 7 -#define PNG_PASS_START_ROW(pass) (((1U&~(pass))<<(3-((pass)>>1)))&7) -#define PNG_PASS_START_COL(pass) (((1U& (pass))<<(3-(((pass)+1)>>1)))&7) -#define PNG_PASS_ROW_SHIFT(pass) ((pass)>2?(8-(pass))>>1:3) -#define PNG_PASS_COL_SHIFT(pass) ((pass)>1?(7-(pass))>>1:3) -#define PNG_PASS_ROWS(height, pass) (((height)+(((1<>PNG_PASS_ROW_SHIFT(pass)) -#define PNG_PASS_COLS(width, pass) (((width)+(((1<>PNG_PASS_COL_SHIFT(pass)) -#define PNG_ROW_FROM_PASS_ROW(yIn, pass) \ - (((yIn)<>(((7-(off))-(pass))<<2)) & 0xFU) | \ - ((0x01145AF0U>>(((7-(off))-(pass))<<2)) & 0xF0U)) -#define PNG_ROW_IN_INTERLACE_PASS(y, pass) \ - ((PNG_PASS_MASK(pass,0) >> ((y)&7)) & 1) -#define PNG_COL_IN_INTERLACE_PASS(x, pass) \ - ((PNG_PASS_MASK(pass,1) >> ((x)&7)) & 1) - -/* These are needed too for the default build: */ -#define PNG_WRITE_16BIT_SUPPORTED -#define PNG_READ_16BIT_SUPPORTED - -/* This comes from pnglibconf.h afer 1.5: */ -#define PNG_FP_1 100000 -#define PNG_GAMMA_THRESHOLD_FIXED\ - ((png_fixed_point)(PNG_GAMMA_THRESHOLD * PNG_FP_1)) -#endif - -#if PNG_LIBPNG_VER < 10600 - /* 1.6.0 constifies many APIs. The following exists to allow pngvalid to be - * compiled against earlier versions. - */ -# define png_const_structp png_structp -#endif - -#if PNG_LIBPNG_VER < 10700 - /* Copied from libpng 1.7.0 png.h */ -#define PNG_u2(b1, b2) (((unsigned int)(b1) << 8) + (b2)) - -#define PNG_U16(b1, b2) ((png_uint_16)PNG_u2(b1, b2)) -#define PNG_U32(b1, b2, b3, b4)\ - (((png_uint_32)PNG_u2(b1, b2) << 16) + PNG_u2(b3, b4)) - -/* Constants for known chunk types. - */ -#define png_IDAT PNG_U32( 73, 68, 65, 84) -#define png_IEND PNG_U32( 73, 69, 78, 68) -#define png_IHDR PNG_U32( 73, 72, 68, 82) -#define png_PLTE PNG_U32( 80, 76, 84, 69) -#define png_bKGD PNG_U32( 98, 75, 71, 68) -#define png_cHRM PNG_U32( 99, 72, 82, 77) -#define png_fRAc PNG_U32(102, 82, 65, 99) /* registered, not defined */ -#define png_gAMA PNG_U32(103, 65, 77, 65) -#define png_gIFg PNG_U32(103, 73, 70, 103) -#define png_gIFt PNG_U32(103, 73, 70, 116) /* deprecated */ -#define png_gIFx PNG_U32(103, 73, 70, 120) -#define png_hIST PNG_U32(104, 73, 83, 84) -#define png_iCCP PNG_U32(105, 67, 67, 80) -#define png_iTXt PNG_U32(105, 84, 88, 116) -#define png_oFFs PNG_U32(111, 70, 70, 115) -#define png_pCAL PNG_U32(112, 67, 65, 76) -#define png_pHYs PNG_U32(112, 72, 89, 115) -#define png_sBIT PNG_U32(115, 66, 73, 84) -#define png_sCAL PNG_U32(115, 67, 65, 76) -#define png_sPLT PNG_U32(115, 80, 76, 84) -#define png_sRGB PNG_U32(115, 82, 71, 66) -#define png_sTER PNG_U32(115, 84, 69, 82) -#define png_tEXt PNG_U32(116, 69, 88, 116) -#define png_tIME PNG_U32(116, 73, 77, 69) -#define png_tRNS PNG_U32(116, 82, 78, 83) -#define png_zTXt PNG_U32(122, 84, 88, 116) - -/* Test on flag values as defined in the spec (section 5.4): */ -#define PNG_CHUNK_ANCILLARY(c) (1 & ((c) >> 29)) -#define PNG_CHUNK_CRITICAL(c) (!PNG_CHUNK_ANCILLARY(c)) -#define PNG_CHUNK_PRIVATE(c) (1 & ((c) >> 21)) -#define PNG_CHUNK_RESERVED(c) (1 & ((c) >> 13)) -#define PNG_CHUNK_SAFE_TO_COPY(c) (1 & ((c) >> 5)) - -#endif /* PNG_LIBPNG_VER < 10700 */ - -#ifdef __cplusplus -# define this not_the_cpp_this -# define new not_the_cpp_new -# define voidcast(type, value) static_cast(value) -#else -# define voidcast(type, value) (value) -#endif /* __cplusplus */ - -/* Unused formal parameter errors are removed using the following macro which is - * expected to have no bad effects on performance. - */ -#ifndef UNUSED -# if defined(__GNUC__) || defined(_MSC_VER) -# define UNUSED(param) (void)param; -# else -# define UNUSED(param) -# endif -#endif - -/* Types of chunks not known to libpng */ -#define png_vpAg PNG_U32(118, 112, 65, 103) - -/* Chunk information */ -#define PNG_INFO_tEXt 0x10000000U -#define PNG_INFO_iTXt 0x20000000U -#define PNG_INFO_zTXt 0x40000000U - -#define PNG_INFO_sTER 0x01000000U -#define PNG_INFO_vpAg 0x02000000U - -#define ABSENT 0 -#define START 1 -#define END 2 - -static struct -{ - char name[5]; - png_uint_32 flag; - png_uint_32 tag; - int unknown; /* Chunk not known to libpng */ - int all; /* Chunk set by the '-1' option */ - int position; /* position in pngtest.png */ - int keep; /* unknown handling setting */ -} chunk_info[] = { - /* Critical chunks */ - { "IDAT", PNG_INFO_IDAT, png_IDAT, 0, 0, START, 0 }, /* must be [0] */ - { "PLTE", PNG_INFO_PLTE, png_PLTE, 0, 0, ABSENT, 0 }, - - /* Non-critical chunks that libpng handles */ - /* This is a mess but it seems to be the only way to do it - there is no way - * to check for a definition outside a #if. - */ - { "bKGD", PNG_INFO_bKGD, png_bKGD, -# ifdef PNG_READ_bKGD_SUPPORTED - 0, -# else - 1, -# endif - 1, START, 0 }, - { "cHRM", PNG_INFO_cHRM, png_cHRM, -# ifdef PNG_READ_cHRM_SUPPORTED - 0, -# else - 1, -# endif - 1, START, 0 }, - { "gAMA", PNG_INFO_gAMA, png_gAMA, -# ifdef PNG_READ_gAMA_SUPPORTED - 0, -# else - 1, -# endif - 1, START, 0 }, - { "hIST", PNG_INFO_hIST, png_hIST, -# ifdef PNG_READ_hIST_SUPPORTED - 0, -# else - 1, -# endif - 1, ABSENT, 0 }, - { "iCCP", PNG_INFO_iCCP, png_iCCP, -# ifdef PNG_READ_iCCP_SUPPORTED - 0, -# else - 1, -# endif - 1, ABSENT, 0 }, - { "iTXt", PNG_INFO_iTXt, png_iTXt, -# ifdef PNG_READ_iTXt_SUPPORTED - 0, -# else - 1, -# endif - 1, ABSENT, 0 }, - { "oFFs", PNG_INFO_oFFs, png_oFFs, -# ifdef PNG_READ_oFFs_SUPPORTED - 0, -# else - 1, -# endif - 1, START, 0 }, - { "pCAL", PNG_INFO_pCAL, png_pCAL, -# ifdef PNG_READ_pCAL_SUPPORTED - 0, -# else - 1, -# endif - 1, START, 0 }, - { "pHYs", PNG_INFO_pHYs, png_pHYs, -# ifdef PNG_READ_pHYs_SUPPORTED - 0, -# else - 1, -# endif - 1, START, 0 }, - { "sBIT", PNG_INFO_sBIT, png_sBIT, -# ifdef PNG_READ_sBIT_SUPPORTED - 0, -# else - 1, -# endif - 1, START, 0 }, - { "sCAL", PNG_INFO_sCAL, png_sCAL, -# ifdef PNG_READ_sCAL_SUPPORTED - 0, -# else - 1, -# endif - 1, START, 0 }, - { "sPLT", PNG_INFO_sPLT, png_sPLT, -# ifdef PNG_READ_sPLT_SUPPORTED - 0, -# else - 1, -# endif - 1, ABSENT, 0 }, - { "sRGB", PNG_INFO_sRGB, png_sRGB, -# ifdef PNG_READ_sRGB_SUPPORTED - 0, -# else - 1, -# endif - 1, START, 0 }, - { "tEXt", PNG_INFO_tEXt, png_tEXt, -# ifdef PNG_READ_tEXt_SUPPORTED - 0, -# else - 1, -# endif - 1, START, 0 }, - { "tIME", PNG_INFO_tIME, png_tIME, -# ifdef PNG_READ_tIME_SUPPORTED - 0, -# else - 1, -# endif - 1, START, 0 }, - { "tRNS", PNG_INFO_tRNS, png_tRNS, -# ifdef PNG_READ_tRNS_SUPPORTED - 0, -# else - 1, -# endif - 0, ABSENT, 0 }, - { "zTXt", PNG_INFO_zTXt, png_zTXt, -# ifdef PNG_READ_zTXt_SUPPORTED - 0, -# else - 1, -# endif - 1, END, 0 }, - - /* No libpng handling */ - { "sTER", PNG_INFO_sTER, png_sTER, 1, 1, START, 0 }, - { "vpAg", PNG_INFO_vpAg, png_vpAg, 1, 0, START, 0 }, -}; - -#define NINFO ((int)((sizeof chunk_info)/(sizeof chunk_info[0]))) - -static void -clear_keep(void) -{ - int i = NINFO; - while (--i >= 0) - chunk_info[i].keep = 0; -} - -static int -find(const char *name) -{ - int i = NINFO; - while (--i >= 0) - { - if (memcmp(chunk_info[i].name, name, 4) == 0) - break; - } - - return i; -} - -static int -findb(const png_byte *name) -{ - int i = NINFO; - while (--i >= 0) - { - if (memcmp(chunk_info[i].name, name, 4) == 0) - break; - } - - return i; -} - -static int -find_by_flag(png_uint_32 flag) -{ - int i = NINFO; - - while (--i >= 0) if (chunk_info[i].flag == flag) return i; - - fprintf(stderr, "pngunknown: internal error\n"); - exit(4); -} - -static int -ancillary(const char *name) -{ - return PNG_CHUNK_ANCILLARY(PNG_U32(name[0], name[1], name[2], name[3])); -} - -#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -static int -ancillaryb(const png_byte *name) -{ - return PNG_CHUNK_ANCILLARY(PNG_U32(name[0], name[1], name[2], name[3])); -} -#endif - -/* Type of an error_ptr */ -typedef struct -{ - jmp_buf error_return; - png_structp png_ptr; - png_infop info_ptr, end_ptr; - png_uint_32 before_IDAT; - png_uint_32 after_IDAT; - int error_count; - int warning_count; - int keep; /* the default value */ - const char *program; - const char *file; - const char *test; -} display; - -static const char init[] = "initialization"; -static const char cmd[] = "command line"; - -static void -init_display(display *d, const char *program) -{ - memset(d, 0, sizeof *d); - d->png_ptr = NULL; - d->info_ptr = d->end_ptr = NULL; - d->error_count = d->warning_count = 0; - d->program = program; - d->file = program; - d->test = init; -} - -static void -clean_display(display *d) -{ - png_destroy_read_struct(&d->png_ptr, &d->info_ptr, &d->end_ptr); - - /* This must not happen - it might cause an app crash */ - if (d->png_ptr != NULL || d->info_ptr != NULL || d->end_ptr != NULL) - { - fprintf(stderr, "%s(%s): png_destroy_read_struct error\n", d->file, - d->test); - exit(1); - } -} - -PNG_FUNCTION(void, display_exit, (display *d), static PNG_NORETURN) -{ - ++(d->error_count); - - if (d->png_ptr != NULL) - clean_display(d); - - /* During initialization and if this is a single command line argument set - * exit now - there is only one test, otherwise longjmp to do the next test. - */ - if (d->test == init || d->test == cmd) - exit(1); - - longjmp(d->error_return, 1); -} - -static int -display_rc(const display *d, int strict) -{ - return d->error_count + (strict ? d->warning_count : 0); -} - -/* libpng error and warning callbacks */ -PNG_FUNCTION(void, error, (png_structp png_ptr, const char *message), - static PNG_NORETURN) -{ - display *d = (display*)png_get_error_ptr(png_ptr); - - fprintf(stderr, "%s(%s): libpng error: %s\n", d->file, d->test, message); - display_exit(d); -} - -static void -warning(png_structp png_ptr, const char *message) -{ - display *d = (display*)png_get_error_ptr(png_ptr); - - fprintf(stderr, "%s(%s): libpng warning: %s\n", d->file, d->test, message); - ++(d->warning_count); -} - -static png_uint_32 -get_valid(display *d, png_infop info_ptr) -{ - png_uint_32 flags = png_get_valid(d->png_ptr, info_ptr, (png_uint_32)~0); - - /* Map the text chunks back into the flags */ - { - png_textp text; - png_uint_32 ntext = png_get_text(d->png_ptr, info_ptr, &text, NULL); - - while (ntext-- > 0) switch (text[ntext].compression) - { - case -1: - flags |= PNG_INFO_tEXt; - break; - case 0: - flags |= PNG_INFO_zTXt; - break; - case 1: - case 2: - flags |= PNG_INFO_iTXt; - break; - default: - fprintf(stderr, "%s(%s): unknown text compression %d\n", d->file, - d->test, text[ntext].compression); - display_exit(d); - } - } - - return flags; -} - -#ifdef PNG_READ_USER_CHUNKS_SUPPORTED -static int -read_callback(png_structp pp, png_unknown_chunkp pc) -{ - /* This function mimics the behavior of png_set_keep_unknown_chunks by - * returning '0' to keep the chunk and '1' to discard it. - */ - display *d = voidcast(display*, png_get_user_chunk_ptr(pp)); - int chunk = findb(pc->name); - int keep, discard; - - if (chunk < 0) /* not one in our list, so not a known chunk */ - keep = d->keep; - - else - { - keep = chunk_info[chunk].keep; - if (keep == PNG_HANDLE_CHUNK_AS_DEFAULT) - { - /* See the comments in png.h - use the default for unknown chunks, - * do not keep known chunks. - */ - if (chunk_info[chunk].unknown) - keep = d->keep; - - else - keep = PNG_HANDLE_CHUNK_NEVER; - } - } - - switch (keep) - { - default: - fprintf(stderr, "%s(%s): %d: unrecognized chunk option\n", d->file, - d->test, chunk_info[chunk].keep); - display_exit(d); - - case PNG_HANDLE_CHUNK_AS_DEFAULT: - case PNG_HANDLE_CHUNK_NEVER: - discard = 1/*handled; discard*/; - break; - - case PNG_HANDLE_CHUNK_IF_SAFE: - case PNG_HANDLE_CHUNK_ALWAYS: - discard = 0/*not handled; keep*/; - break; - } - - /* Also store information about this chunk in the display, the relevant flag - * is set if the chunk is to be kept ('not handled'.) - */ - if (chunk >= 0) if (!discard) /* stupidity to stop a GCC warning */ - { - png_uint_32 flag = chunk_info[chunk].flag; - - if (pc->location & PNG_AFTER_IDAT) - d->after_IDAT |= flag; - - else - d->before_IDAT |= flag; - } - - /* However if there is no support to store unknown chunks don't ask libpng to - * do it; there will be an png_error. - */ -# ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED - return discard; -# else - return 1; /*handled; discard*/ -# endif -} -#endif /* READ_USER_CHUNKS_SUPPORTED */ - -#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -static png_uint_32 -get_unknown(display *d, png_infop info_ptr, int after_IDAT) -{ - /* Create corresponding 'unknown' flags */ - png_uint_32 flags = 0; - - UNUSED(after_IDAT) - - { - png_unknown_chunkp unknown; - int num_unknown = png_get_unknown_chunks(d->png_ptr, info_ptr, &unknown); - - while (--num_unknown >= 0) - { - int chunk = findb(unknown[num_unknown].name); - - /* Chunks not known to pngunknown must be validated here; since they - * must also be unknown to libpng the 'display->keep' behavior should - * have been used. - */ - if (chunk < 0) switch (d->keep) - { - default: /* impossible */ - case PNG_HANDLE_CHUNK_AS_DEFAULT: - case PNG_HANDLE_CHUNK_NEVER: - fprintf(stderr, "%s(%s): %s: %s: unknown chunk saved\n", - d->file, d->test, d->keep ? "discard" : "default", - unknown[num_unknown].name); - ++(d->error_count); - break; - - case PNG_HANDLE_CHUNK_IF_SAFE: - if (!ancillaryb(unknown[num_unknown].name)) - { - fprintf(stderr, - "%s(%s): if-safe: %s: unknown critical chunk saved\n", - d->file, d->test, unknown[num_unknown].name); - ++(d->error_count); - break; - } - /* FALL THROUGH (safe) */ - case PNG_HANDLE_CHUNK_ALWAYS: - break; - } - - else - flags |= chunk_info[chunk].flag; - } - } - - return flags; -} -#else -static png_uint_32 -get_unknown(display *d, png_infop info_ptr, int after_IDAT) - /* Otherwise this will return the cached values set by any user callback */ -{ - UNUSED(info_ptr); - - if (after_IDAT) - return d->after_IDAT; - - else - return d->before_IDAT; -} - -# ifndef PNG_READ_USER_CHUNKS_SUPPORTED - /* The #defines above should mean this is never reached, it's just here as - * a check to ensure the logic is correct. - */ -# error No store support and no user chunk support, this will not work -# endif -#endif - -static int -check(FILE *fp, int argc, const char **argv, png_uint_32p flags/*out*/, - display *d, int set_callback) -{ - int i, npasses, ipass; - png_uint_32 height; - - d->keep = PNG_HANDLE_CHUNK_AS_DEFAULT; - d->before_IDAT = 0; - d->after_IDAT = 0; - - /* Some of these errors are permanently fatal and cause an exit here, others - * are per-test and cause an error return. - */ - d->png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, d, error, - warning); - if (d->png_ptr == NULL) - { - fprintf(stderr, "%s(%s): could not allocate png struct\n", d->file, - d->test); - /* Terminate here, this error is not test specific. */ - exit(1); - } - - d->info_ptr = png_create_info_struct(d->png_ptr); - d->end_ptr = png_create_info_struct(d->png_ptr); - if (d->info_ptr == NULL || d->end_ptr == NULL) - { - fprintf(stderr, "%s(%s): could not allocate png info\n", d->file, - d->test); - clean_display(d); - exit(1); - } - - png_init_io(d->png_ptr, fp); - -# ifdef PNG_READ_USER_CHUNKS_SUPPORTED - /* This is only done if requested by the caller; it interferes with the - * standard store/save mechanism. - */ - if (set_callback) - png_set_read_user_chunk_fn(d->png_ptr, d, read_callback); -# else - UNUSED(set_callback) -# endif - - /* Handle each argument in turn; multiple settings are possible for the same - * chunk and multiple calls will occur (the last one should override all - * preceding ones). - */ - for (i=0; ipng_ptr, option, name, 1); - chunk_info[chunk].keep = option; - continue; - } - - break; - - case 7: /* default */ - if (memcmp(argv[i], "default", 7) == 0) - { - png_set_keep_unknown_chunks(d->png_ptr, option, NULL, 0); - d->keep = option; - continue; - } - - break; - - case 3: /* all */ - if (memcmp(argv[i], "all", 3) == 0) - { - png_set_keep_unknown_chunks(d->png_ptr, option, NULL, -1); - d->keep = option; - - for (chunk = 0; chunk < NINFO; ++chunk) - if (chunk_info[chunk].all) - chunk_info[chunk].keep = option; - continue; - } - - break; - - default: /* some misplaced = */ - - break; - } - } - - fprintf(stderr, "%s(%s): %s: unrecognized chunk argument\n", d->file, - d->test, argv[i]); - display_exit(d); - } - - png_read_info(d->png_ptr, d->info_ptr); - - switch (png_get_interlace_type(d->png_ptr, d->info_ptr)) - { - case PNG_INTERLACE_NONE: - npasses = 1; - break; - - case PNG_INTERLACE_ADAM7: - npasses = PNG_INTERLACE_ADAM7_PASSES; - break; - - default: - /* Hard error because it is not test specific */ - fprintf(stderr, "%s(%s): invalid interlace type\n", d->file, d->test); - clean_display(d); - exit(1); - } - - /* Skip the image data, if IDAT is not being handled then don't do this - * because it will cause a CRC error. - */ - if (chunk_info[0/*IDAT*/].keep == PNG_HANDLE_CHUNK_AS_DEFAULT) - { - png_start_read_image(d->png_ptr); - height = png_get_image_height(d->png_ptr, d->info_ptr); - - if (npasses > 1) - { - png_uint_32 width = png_get_image_width(d->png_ptr, d->info_ptr); - - for (ipass=0; ipass 0) - { - png_uint_32 y; - - for (y=0; ypng_ptr, NULL, NULL); - } - } - } /* interlaced */ - - else /* not interlaced */ - { - png_uint_32 y; - - for (y=0; ypng_ptr, NULL, NULL); - } - } - - png_read_end(d->png_ptr, d->end_ptr); - - flags[0] = get_valid(d, d->info_ptr); - flags[1] = get_unknown(d, d->info_ptr, 0/*before IDAT*/); - - /* Only png_read_png sets PNG_INFO_IDAT! */ - flags[chunk_info[0/*IDAT*/].keep != PNG_HANDLE_CHUNK_AS_DEFAULT] |= - PNG_INFO_IDAT; - - flags[2] = get_valid(d, d->end_ptr); - flags[3] = get_unknown(d, d->end_ptr, 1/*after IDAT*/); - - clean_display(d); - - return d->keep; -} - -static void -check_error(display *d, png_uint_32 flags, const char *message) -{ - while (flags) - { - png_uint_32 flag = flags & -(png_int_32)flags; - int i = find_by_flag(flag); - - fprintf(stderr, "%s(%s): chunk %s: %s\n", d->file, d->test, - chunk_info[i].name, message); - ++(d->error_count); - - flags &= ~flag; - } -} - -static void -check_handling(display *d, int def, png_uint_32 chunks, png_uint_32 known, - png_uint_32 unknown, const char *position, int set_callback) -{ - while (chunks) - { - png_uint_32 flag = chunks & -(png_int_32)chunks; - int i = find_by_flag(flag); - int keep = chunk_info[i].keep; - const char *type; - const char *errorx = NULL; - - if (chunk_info[i].unknown) - { - if (keep == PNG_HANDLE_CHUNK_AS_DEFAULT) - { - type = "UNKNOWN (default)"; - keep = def; - } - - else - type = "UNKNOWN (specified)"; - - if (flag & known) - errorx = "chunk processed"; - - else switch (keep) - { - case PNG_HANDLE_CHUNK_AS_DEFAULT: - if (flag & unknown) - errorx = "DEFAULT: unknown chunk saved"; - break; - - case PNG_HANDLE_CHUNK_NEVER: - if (flag & unknown) - errorx = "DISCARD: unknown chunk saved"; - break; - - case PNG_HANDLE_CHUNK_IF_SAFE: - if (ancillary(chunk_info[i].name)) - { - if (!(flag & unknown)) - errorx = "IF-SAFE: unknown ancillary chunk lost"; - } - - else if (flag & unknown) - errorx = "IF-SAFE: unknown critical chunk saved"; - break; - - case PNG_HANDLE_CHUNK_ALWAYS: - if (!(flag & unknown)) - errorx = "SAVE: unknown chunk lost"; - break; - - default: - errorx = "internal error: bad keep"; - break; - } - } /* unknown chunk */ - - else /* known chunk */ - { - type = "KNOWN"; - - if (flag & known) - { - /* chunk was processed, it won't have been saved because that is - * caught below when checking for inconsistent processing. - */ - if (keep != PNG_HANDLE_CHUNK_AS_DEFAULT) - errorx = "!DEFAULT: known chunk processed"; - } - - else /* not processed */ switch (keep) - { - case PNG_HANDLE_CHUNK_AS_DEFAULT: - errorx = "DEFAULT: known chunk not processed"; - break; - - case PNG_HANDLE_CHUNK_NEVER: - if (flag & unknown) - errorx = "DISCARD: known chunk saved"; - break; - - case PNG_HANDLE_CHUNK_IF_SAFE: - if (ancillary(chunk_info[i].name)) - { - if (!(flag & unknown)) - errorx = "IF-SAFE: known ancillary chunk lost"; - } - - else if (flag & unknown) - errorx = "IF-SAFE: known critical chunk saved"; - break; - - case PNG_HANDLE_CHUNK_ALWAYS: - if (!(flag & unknown)) - errorx = "SAVE: known chunk lost"; - break; - - default: - errorx = "internal error: bad keep (2)"; - break; - } - } - - if (errorx != NULL) - { - ++(d->error_count); - fprintf(stderr, "%s(%s%s): %s %s %s: %s\n", d->file, d->test, - set_callback ? ",callback" : "", - type, chunk_info[i].name, position, errorx); - } - - chunks &= ~flag; - } -} - -static void -perform_one_test(FILE *fp, int argc, const char **argv, - png_uint_32 *default_flags, display *d, int set_callback) -{ - int def; - png_uint_32 flags[2][4]; - - rewind(fp); - clear_keep(); - memcpy(flags[0], default_flags, sizeof flags[0]); - - def = check(fp, argc, argv, flags[1], d, set_callback); - - /* Chunks should either be known or unknown, never both and this should apply - * whether the chunk is before or after the IDAT (actually, the app can - * probably change this by swapping the handling after the image, but this - * test does not do that.) - */ - check_error(d, (flags[0][0]|flags[0][2]) & (flags[0][1]|flags[0][3]), - "chunk handled inconsistently in count tests"); - check_error(d, (flags[1][0]|flags[1][2]) & (flags[1][1]|flags[1][3]), - "chunk handled inconsistently in option tests"); - - /* Now find out what happened to each chunk before and after the IDAT and - * determine if the behavior was correct. First some basic sanity checks, - * any known chunk should be known in the original count, any unknown chunk - * should be either known or unknown in the original. - */ - { - png_uint_32 test; - - test = flags[1][0] & ~flags[0][0]; - check_error(d, test, "new known chunk before IDAT"); - test = flags[1][1] & ~(flags[0][0] | flags[0][1]); - check_error(d, test, "new unknown chunk before IDAT"); - test = flags[1][2] & ~flags[0][2]; - check_error(d, test, "new known chunk after IDAT"); - test = flags[1][3] & ~(flags[0][2] | flags[0][3]); - check_error(d, test, "new unknown chunk after IDAT"); - } - - /* Now each chunk in the original list should have been handled according to - * the options set for that chunk, regardless of whether libpng knows about - * it or not. - */ - check_handling(d, def, flags[0][0] | flags[0][1], flags[1][0], flags[1][1], - "before IDAT", set_callback); - check_handling(d, def, flags[0][2] | flags[0][3], flags[1][2], flags[1][3], - "after IDAT", set_callback); -} - -static void -perform_one_test_safe(FILE *fp, int argc, const char **argv, - png_uint_32 *default_flags, display *d, const char *test) -{ - if (setjmp(d->error_return) == 0) - { - d->test = test; /* allow use of d->error_return */ -# ifdef PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED - perform_one_test(fp, argc, argv, default_flags, d, 0); -# endif -# ifdef PNG_READ_USER_CHUNKS_SUPPORTED - perform_one_test(fp, argc, argv, default_flags, d, 1); -# endif - d->test = init; /* prevent use of d->error_return */ - } -} - -static const char *standard_tests[] = -{ - "discard", "default=discard", 0, - "save", "default=save", 0, - "if-safe", "default=if-safe", 0, - "vpAg", "vpAg=if-safe", 0, - "sTER", "sTER=if-safe", 0, - "IDAT", "default=discard", "IDAT=save", 0, - "sAPI", "bKGD=save", "cHRM=save", "gAMA=save", "all=discard", "iCCP=save", - "sBIT=save", "sRGB=save", 0, - 0/*end*/ -}; - -static PNG_NORETURN void -usage(const char *program, const char *reason) -{ - fprintf(stderr, "pngunknown: %s: usage:\n %s [--strict] " - "--default|{(CHNK|default|all)=(default|discard|if-safe|save)} " - "testfile.png\n", reason, program); - exit(99); -} - -int -main(int argc, const char **argv) -{ - FILE *fp; - png_uint_32 default_flags[4/*valid,unknown{before,after}*/]; - int strict = 0, default_tests = 0; - const char *count_argv = "default=save"; - const char *touch_file = NULL; - display d; - - init_display(&d, argv[0]); - - while (++argv, --argc > 0) - { - if (strcmp(*argv, "--strict") == 0) - strict = 1; - - else if (strcmp(*argv, "--default") == 0) - default_tests = 1; - - else if (strcmp(*argv, "--touch") == 0) - { - if (argc > 1) - touch_file = *++argv, --argc; - - else - usage(d.program, "--touch: missing file name"); - } - - else - break; - } - - /* A file name is required, but there should be no other arguments if - * --default was specified. - */ - if (argc <= 0) - usage(d.program, "missing test file"); - - /* GCC BUG: if (default_tests && argc != 1) triggers some weird GCC argc - * optimization which causes warnings with -Wstrict-overflow! - */ - else if (default_tests) if (argc != 1) - usage(d.program, "extra arguments"); - - /* The name of the test file is the last argument; remove it. */ - d.file = argv[--argc]; - - fp = fopen(d.file, "rb"); - if (fp == NULL) - { - perror(d.file); - exit(99); - } - - /* First find all the chunks, known and unknown, in the test file, a failure - * here aborts the whole test. - * - * If 'save' is supported then the normal saving method should happen, - * otherwise if 'read' is supported then the read callback will do the - * same thing. If both are supported the 'read' callback won't be - * instantiated by default. If 'save' is *not* supported then a user - * callback is required even though we can call png_get_unknown_chunks. - */ - if (check(fp, 1, &count_argv, default_flags, &d, -# ifdef PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED - 0 -# else - 1 -# endif - ) != PNG_HANDLE_CHUNK_ALWAYS) - { - fprintf(stderr, "%s: %s: internal error\n", d.program, d.file); - exit(99); - } - - /* Now find what the various supplied options cause to change: */ - if (!default_tests) - { - d.test = cmd; /* acts as a flag to say exit, do not longjmp */ -# ifdef PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED - perform_one_test(fp, argc, argv, default_flags, &d, 0); -# endif -# ifdef PNG_READ_USER_CHUNKS_SUPPORTED - perform_one_test(fp, argc, argv, default_flags, &d, 1); -# endif - d.test = init; - } - - else - { - const char **test = standard_tests; - - /* Set the exit_test pointer here so we can continue after a libpng error. - * NOTE: this leaks memory because the png_struct data from the failing - * test is never freed. - */ - while (*test) - { - const char *this_test = *test++; - const char **next = test; - int count = display_rc(&d, strict), new_count; - const char *result; - int arg_count = 0; - - while (*next) ++next, ++arg_count; - - perform_one_test_safe(fp, arg_count, test, default_flags, &d, - this_test); - - new_count = display_rc(&d, strict); - - if (new_count == count) - result = "PASS"; - - else - result = "FAIL"; - - printf("%s: %s %s\n", result, d.program, this_test); - - test = next+1; - } - } - - fclose(fp); - - if (display_rc(&d, strict) == 0) - { - /* Success, touch the success file if appropriate */ - if (touch_file != NULL) - { - FILE *fsuccess = fopen(touch_file, "wt"); - - if (fsuccess != NULL) - { - int err = 0; - fprintf(fsuccess, "PNG unknown tests succeeded\n"); - fflush(fsuccess); - err = ferror(fsuccess); - - if (fclose(fsuccess) || err) - { - fprintf(stderr, "%s: write failed\n", touch_file); - exit(99); - } - } - - else - { - fprintf(stderr, "%s: open failed\n", touch_file); - exit(99); - } - } - - return 0; - } - - return 1; -} - -#else /* !(READ_USER_CHUNKS || SAVE_UNKNOWN_CHUNKS) */ -int -main(void) -{ - fprintf(stderr, - " test ignored: no support to find out about unknown chunks\n"); - /* So the test is skipped: */ - return 77; -} -#endif /* READ_USER_CHUNKS || SAVE_UNKNOWN_CHUNKS */ - -#else /* !(SET_UNKNOWN_CHUNKS && READ) */ -int -main(void) -{ - fprintf(stderr, - " test ignored: no support to modify unknown chunk handling\n"); - /* So the test is skipped: */ - return 77; -} -#endif /* SET_UNKNOWN_CHUNKS && READ*/ diff --git a/io2d/src/3rd-party/libpng/contrib/libtests/pngvalid.c b/io2d/src/3rd-party/libpng/contrib/libtests/pngvalid.c deleted file mode 100644 index c106b2b..0000000 --- a/io2d/src/3rd-party/libpng/contrib/libtests/pngvalid.c +++ /dev/null @@ -1,10281 +0,0 @@ - -/* pngvalid.c - validate libpng by constructing then reading png files. - * - * Last changed in libpng 1.6.8 [(PENDING RELEASE)] - * Copyright (c) 2013 Glenn Randers-Pehrson - * Written by John Cunningham Bowler - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * NOTES: - * This is a C program that is intended to be linked against libpng. It - * generates bitmaps internally, stores them as PNG files (using the - * sequential write code) then reads them back (using the sequential - * read code) and validates that the result has the correct data. - * - * The program can be modified and extended to test the correctness of - * transformations performed by libpng. - */ - -#define _POSIX_SOURCE 1 -#define _ISOC99_SOURCE 1 /* For floating point */ -#define _GNU_SOURCE 1 /* For the floating point exception extension */ - -#include -#include - -#if defined(HAVE_CONFIG_H) && !defined(PNG_NO_CONFIG_H) -# include -#endif - -#ifdef HAVE_FEENABLEEXCEPT /* from config.h, if included */ -# include -#endif - -/* Define the following to use this test against your installed libpng, rather - * than the one being built here: - */ -#ifdef PNG_FREESTANDING_TESTS -# include -#else -# include "../../png.h" -#endif - -/* pngvalid requires write support and one of the fixed or floating point APIs. - */ -#if defined(PNG_WRITE_SUPPORTED) &&\ - (defined(PNG_FIXED_POINT_SUPPORTED) || defined(PNG_FLOATING_POINT_SUPPORTED)) - -#if PNG_LIBPNG_VER < 10500 -/* This deliberately lacks the PNG_CONST. */ -typedef png_byte *png_const_bytep; - -/* This is copied from 1.5.1 png.h: */ -#define PNG_INTERLACE_ADAM7_PASSES 7 -#define PNG_PASS_START_ROW(pass) (((1U&~(pass))<<(3-((pass)>>1)))&7) -#define PNG_PASS_START_COL(pass) (((1U& (pass))<<(3-(((pass)+1)>>1)))&7) -#define PNG_PASS_ROW_SHIFT(pass) ((pass)>2?(8-(pass))>>1:3) -#define PNG_PASS_COL_SHIFT(pass) ((pass)>1?(7-(pass))>>1:3) -#define PNG_PASS_ROWS(height, pass) (((height)+(((1<>PNG_PASS_ROW_SHIFT(pass)) -#define PNG_PASS_COLS(width, pass) (((width)+(((1<>PNG_PASS_COL_SHIFT(pass)) -#define PNG_ROW_FROM_PASS_ROW(yIn, pass) \ - (((yIn)<>(((7-(off))-(pass))<<2)) & 0xFU) | \ - ((0x01145AF0U>>(((7-(off))-(pass))<<2)) & 0xF0U)) -#define PNG_ROW_IN_INTERLACE_PASS(y, pass) \ - ((PNG_PASS_MASK(pass,0) >> ((y)&7)) & 1) -#define PNG_COL_IN_INTERLACE_PASS(x, pass) \ - ((PNG_PASS_MASK(pass,1) >> ((x)&7)) & 1) - -/* These are needed too for the default build: */ -#define PNG_WRITE_16BIT_SUPPORTED -#define PNG_READ_16BIT_SUPPORTED - -/* This comes from pnglibconf.h afer 1.5: */ -#define PNG_FP_1 100000 -#define PNG_GAMMA_THRESHOLD_FIXED\ - ((png_fixed_point)(PNG_GAMMA_THRESHOLD * PNG_FP_1)) -#endif - -#if PNG_LIBPNG_VER < 10600 - /* 1.6.0 constifies many APIs, the following exists to allow pngvalid to be - * compiled against earlier versions. - */ -# define png_const_structp png_structp -#endif - -#include /* For crc32 */ - -#include /* For floating point constants */ -#include /* For malloc */ -#include /* For memcpy, memset */ -#include /* For floor */ - -/* Unused formal parameter errors are removed using the following macro which is - * expected to have no bad effects on performance. - */ -#ifndef UNUSED -# if defined(__GNUC__) || defined(_MSC_VER) -# define UNUSED(param) (void)param; -# else -# define UNUSED(param) -# endif -#endif - -/* Fixups for various minimal builds */ -#ifndef PNG_ERROR_TEXT_SUPPORTED -# define png_error(a,b) png_err(a) -#endif - -/***************************** EXCEPTION HANDLING *****************************/ -#ifdef PNG_FREESTANDING_TESTS -# include -#else -# include "../visupng/cexcept.h" -#endif - -#ifdef __cplusplus -# define this not_the_cpp_this -# define new not_the_cpp_new -# define voidcast(type, value) static_cast(value) -#else -# define voidcast(type, value) (value) -#endif /* __cplusplus */ - -struct png_store; -define_exception_type(struct png_store*); - -/* The following are macros to reduce typing everywhere where the well known - * name 'the_exception_context' must be defined. - */ -#define anon_context(ps) struct exception_context *the_exception_context = \ - &(ps)->exception_context -#define context(ps,fault) anon_context(ps); png_store *fault - -/******************************* UTILITIES ************************************/ -/* Error handling is particularly problematic in production code - error - * handlers often themselves have bugs which lead to programs that detect - * minor errors crashing. The following functions deal with one very - * common class of errors in error handlers - attempting to format error or - * warning messages into buffers that are too small. - */ -static size_t safecat(char *buffer, size_t bufsize, size_t pos, - PNG_CONST char *cat) -{ - while (pos < bufsize && cat != NULL && *cat != 0) - buffer[pos++] = *cat++; - - if (pos >= bufsize) - pos = bufsize-1; - - buffer[pos] = 0; - return pos; -} - -static size_t safecatn(char *buffer, size_t bufsize, size_t pos, int n) -{ - char number[64]; - sprintf(number, "%d", n); - return safecat(buffer, bufsize, pos, number); -} - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -static size_t safecatd(char *buffer, size_t bufsize, size_t pos, double d, - int precision) -{ - char number[64]; - sprintf(number, "%.*f", precision, d); - return safecat(buffer, bufsize, pos, number); -} -#endif - -static PNG_CONST char invalid[] = "invalid"; -static PNG_CONST char sep[] = ": "; - -static PNG_CONST char *colour_types[8] = -{ - "grayscale", invalid, "truecolour", "indexed-colour", - "grayscale with alpha", invalid, "truecolour with alpha", invalid -}; - -#ifdef PNG_READ_SUPPORTED -/* Convert a double precision value to fixed point. */ -static png_fixed_point -fix(double d) -{ - d = floor(d * PNG_FP_1 + .5); - return (png_fixed_point)d; -} -#endif /* PNG_READ_SUPPORTED */ - -/* Generate random bytes. This uses a boring repeatable algorithm and it - * is implemented here so that it gives the same set of numbers on every - * architecture. It's a linear congruential generator (Knuth or Sedgewick - * "Algorithms") but it comes from the 'feedback taps' table in Horowitz and - * Hill, "The Art of Electronics" (Pseudo-Random Bit Sequences and Noise - * Generation.) - */ -static void -make_random_bytes(png_uint_32* seed, void* pv, size_t size) -{ - png_uint_32 u0 = seed[0], u1 = seed[1]; - png_bytep bytes = voidcast(png_bytep, pv); - - /* There are thirty three bits, the next bit in the sequence is bit-33 XOR - * bit-20. The top 1 bit is in u1, the bottom 32 are in u0. - */ - size_t i; - for (i=0; i> (20-8)) ^ ((u1 << 7) | (u0 >> (32-7)))) & 0xff; - u1 <<= 8; - u1 |= u0 >> 24; - u0 <<= 8; - u0 |= u; - *bytes++ = (png_byte)u; - } - - seed[0] = u0; - seed[1] = u1; -} - -static void -make_four_random_bytes(png_uint_32* seed, png_bytep bytes) -{ - make_random_bytes(seed, bytes, 4); -} - -#ifdef PNG_READ_SUPPORTED -static void -randomize(void *pv, size_t size) -{ - static png_uint_32 random_seed[2] = {0x56789abc, 0xd}; - make_random_bytes(random_seed, pv, size); -} - -#define RANDOMIZE(this) randomize(&(this), sizeof (this)) - -static unsigned int -random_mod(unsigned int max) -{ - unsigned int x; - - RANDOMIZE(x); - - return x % max; /* 0 .. max-1 */ -} - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -static int -random_choice(void) -{ - unsigned char x; - - RANDOMIZE(x); - - return x & 1; -} -#endif -#endif /* PNG_READ_SUPPORTED */ - -/* A numeric ID based on PNG file characteristics. The 'do_interlace' field - * simply records whether pngvalid did the interlace itself or whether it - * was done by libpng. Width and height must be less than 256. 'palette' is an - * index of the palette to use for formats with a palette (0 otherwise.) - */ -#define FILEID(col, depth, palette, interlace, width, height, do_interlace) \ - ((png_uint_32)((col) + ((depth)<<3) + ((palette)<<8) + ((interlace)<<13) + \ - (((do_interlace)!=0)<<15) + ((width)<<16) + ((height)<<24))) - -#define COL_FROM_ID(id) ((png_byte)((id)& 0x7U)) -#define DEPTH_FROM_ID(id) ((png_byte)(((id) >> 3) & 0x1fU)) -#define PALETTE_FROM_ID(id) (((id) >> 8) & 0x1f) -#define INTERLACE_FROM_ID(id) ((int)(((id) >> 13) & 0x3)) -#define DO_INTERLACE_FROM_ID(id) ((int)(((id)>>15) & 1)) -#define WIDTH_FROM_ID(id) (((id)>>16) & 0xff) -#define HEIGHT_FROM_ID(id) (((id)>>24) & 0xff) - -/* Utility to construct a standard name for a standard image. */ -static size_t -standard_name(char *buffer, size_t bufsize, size_t pos, png_byte colour_type, - int bit_depth, unsigned int npalette, int interlace_type, - png_uint_32 w, png_uint_32 h, int do_interlace) -{ - pos = safecat(buffer, bufsize, pos, colour_types[colour_type]); - if (npalette > 0) - { - pos = safecat(buffer, bufsize, pos, "["); - pos = safecatn(buffer, bufsize, pos, npalette); - pos = safecat(buffer, bufsize, pos, "]"); - } - pos = safecat(buffer, bufsize, pos, " "); - pos = safecatn(buffer, bufsize, pos, bit_depth); - pos = safecat(buffer, bufsize, pos, " bit"); - - if (interlace_type != PNG_INTERLACE_NONE) - { - pos = safecat(buffer, bufsize, pos, " interlaced"); - if (do_interlace) - pos = safecat(buffer, bufsize, pos, "(pngvalid)"); - else - pos = safecat(buffer, bufsize, pos, "(libpng)"); - } - - if (w > 0 || h > 0) - { - pos = safecat(buffer, bufsize, pos, " "); - pos = safecatn(buffer, bufsize, pos, w); - pos = safecat(buffer, bufsize, pos, "x"); - pos = safecatn(buffer, bufsize, pos, h); - } - - return pos; -} - -static size_t -standard_name_from_id(char *buffer, size_t bufsize, size_t pos, png_uint_32 id) -{ - return standard_name(buffer, bufsize, pos, COL_FROM_ID(id), - DEPTH_FROM_ID(id), PALETTE_FROM_ID(id), INTERLACE_FROM_ID(id), - WIDTH_FROM_ID(id), HEIGHT_FROM_ID(id), DO_INTERLACE_FROM_ID(id)); -} - -/* Convenience API and defines to list valid formats. Note that 16 bit read and - * write support is required to do 16 bit read tests (we must be able to make a - * 16 bit image to test!) - */ -#ifdef PNG_WRITE_16BIT_SUPPORTED -# define WRITE_BDHI 4 -# ifdef PNG_READ_16BIT_SUPPORTED -# define READ_BDHI 4 -# define DO_16BIT -# endif -#else -# define WRITE_BDHI 3 -#endif -#ifndef DO_16BIT -# define READ_BDHI 3 -#endif - -/* The following defines the number of different palettes to generate for - * each log bit depth of a colour type 3 standard image. - */ -#define PALETTE_COUNT(bit_depth) ((bit_depth) > 4 ? 1U : 16U) - -static int -next_format(png_bytep colour_type, png_bytep bit_depth, - unsigned int* palette_number) -{ - if (*bit_depth == 0) - { - *colour_type = 0, *bit_depth = 1, *palette_number = 0; - return 1; - } - - if (*colour_type == 3) - { - /* Add multiple palettes for colour type 3. */ - if (++*palette_number < PALETTE_COUNT(*bit_depth)) - return 1; - - *palette_number = 0; - } - - *bit_depth = (png_byte)(*bit_depth << 1); - - /* Palette images are restricted to 8 bit depth */ - if (*bit_depth <= 8 -# ifdef DO_16BIT - || (*colour_type != 3 && *bit_depth <= 16) -# endif - ) - return 1; - - /* Move to the next color type, or return 0 at the end. */ - switch (*colour_type) - { - case 0: - *colour_type = 2; - *bit_depth = 8; - return 1; - - case 2: - *colour_type = 3; - *bit_depth = 1; - return 1; - - case 3: - *colour_type = 4; - *bit_depth = 8; - return 1; - - case 4: - *colour_type = 6; - *bit_depth = 8; - return 1; - - default: - return 0; - } -} - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -static unsigned int -sample(png_const_bytep row, png_byte colour_type, png_byte bit_depth, - png_uint_32 x, unsigned int sample_index) -{ - png_uint_32 bit_index, result; - - /* Find a sample index for the desired sample: */ - x *= bit_depth; - bit_index = x; - - if ((colour_type & 1) == 0) /* !palette */ - { - if (colour_type & 2) - bit_index *= 3; - - if (colour_type & 4) - bit_index += x; /* Alpha channel */ - - /* Multiple channels; select one: */ - if (colour_type & (2+4)) - bit_index += sample_index * bit_depth; - } - - /* Return the sample from the row as an integer. */ - row += bit_index >> 3; - result = *row; - - if (bit_depth == 8) - return result; - - else if (bit_depth > 8) - return (result << 8) + *++row; - - /* Less than 8 bits per sample. */ - bit_index &= 7; - return (result >> (8-bit_index-bit_depth)) & ((1U<> 3] & ~destMask; - unsigned int sourceByte = fromBuffer[fromIndex >> 3]; - - /* Don't rely on << or >> supporting '0' here, just in case: */ - fromIndex &= 7; - if (fromIndex > 0) sourceByte <<= fromIndex; - if ((toIndex & 7) > 0) sourceByte >>= toIndex & 7; - - toBuffer[toIndex >> 3] = (png_byte)(destByte | (sourceByte & destMask)); - } - else /* One or more bytes */ - memmove(toBuffer+(toIndex>>3), fromBuffer+(fromIndex>>3), pixelSize>>3); -} - -#ifdef PNG_READ_SUPPORTED -/* Copy a complete row of pixels, taking into account potential partial - * bytes at the end. - */ -static void -row_copy(png_bytep toBuffer, png_const_bytep fromBuffer, unsigned int bitWidth) -{ - memcpy(toBuffer, fromBuffer, bitWidth >> 3); - - if ((bitWidth & 7) != 0) - { - unsigned int mask; - - toBuffer += bitWidth >> 3; - fromBuffer += bitWidth >> 3; - /* The remaining bits are in the top of the byte, the mask is the bits to - * retain. - */ - mask = 0xff >> (bitWidth & 7); - *toBuffer = (png_byte)((*toBuffer & mask) | (*fromBuffer & ~mask)); - } -} - -/* Compare pixels - they are assumed to start at the first byte in the - * given buffers. - */ -static int -pixel_cmp(png_const_bytep pa, png_const_bytep pb, png_uint_32 bit_width) -{ -#if PNG_LIBPNG_VER < 10506 - if (memcmp(pa, pb, bit_width>>3) == 0) - { - png_uint_32 p; - - if ((bit_width & 7) == 0) return 0; - - /* Ok, any differences? */ - p = pa[bit_width >> 3]; - p ^= pb[bit_width >> 3]; - - if (p == 0) return 0; - - /* There are, but they may not be significant, remove the bits - * after the end (the low order bits in PNG.) - */ - bit_width &= 7; - p >>= 8-bit_width; - - if (p == 0) return 0; - } -#else - /* From libpng-1.5.6 the overwrite should be fixed, so compare the trailing - * bits too: - */ - if (memcmp(pa, pb, (bit_width+7)>>3) == 0) - return 0; -#endif - - /* Return the index of the changed byte. */ - { - png_uint_32 where = 0; - - while (pa[where] == pb[where]) ++where; - return 1+where; - } -} -#endif /* PNG_READ_SUPPORTED */ - -/*************************** BASIC PNG FILE WRITING ***************************/ -/* A png_store takes data from the sequential writer or provides data - * to the sequential reader. It can also store the result of a PNG - * write for later retrieval. - */ -#define STORE_BUFFER_SIZE 500 /* arbitrary */ -typedef struct png_store_buffer -{ - struct png_store_buffer* prev; /* NOTE: stored in reverse order */ - png_byte buffer[STORE_BUFFER_SIZE]; -} png_store_buffer; - -#define FILE_NAME_SIZE 64 - -typedef struct store_palette_entry /* record of a single palette entry */ -{ - png_byte red; - png_byte green; - png_byte blue; - png_byte alpha; -} store_palette_entry, store_palette[256]; - -typedef struct png_store_file -{ - struct png_store_file* next; /* as many as you like... */ - char name[FILE_NAME_SIZE]; - png_uint_32 id; /* must be correct (see FILEID) */ - png_size_t datacount; /* In this (the last) buffer */ - png_store_buffer data; /* Last buffer in file */ - int npalette; /* Number of entries in palette */ - store_palette_entry* palette; /* May be NULL */ -} png_store_file; - -/* The following is a pool of memory allocated by a single libpng read or write - * operation. - */ -typedef struct store_pool -{ - struct png_store *store; /* Back pointer */ - struct store_memory *list; /* List of allocated memory */ - png_byte mark[4]; /* Before and after data */ - - /* Statistics for this run. */ - png_alloc_size_t max; /* Maximum single allocation */ - png_alloc_size_t current; /* Current allocation */ - png_alloc_size_t limit; /* Highest current allocation */ - png_alloc_size_t total; /* Total allocation */ - - /* Overall statistics (retained across successive runs). */ - png_alloc_size_t max_max; - png_alloc_size_t max_limit; - png_alloc_size_t max_total; -} store_pool; - -typedef struct png_store -{ - /* For cexcept.h exception handling - simply store one of these; - * the context is a self pointer but it may point to a different - * png_store (in fact it never does in this program.) - */ - struct exception_context - exception_context; - - unsigned int verbose :1; - unsigned int treat_warnings_as_errors :1; - unsigned int expect_error :1; - unsigned int expect_warning :1; - unsigned int saw_warning :1; - unsigned int speed :1; - unsigned int progressive :1; /* use progressive read */ - unsigned int validated :1; /* used as a temporary flag */ - int nerrors; - int nwarnings; - int noptions; /* number of options below: */ - struct { - unsigned char option; /* option number, 0..30 */ - unsigned char setting; /* setting (unset,invalid,on,off) */ - } options[16]; - char test[128]; /* Name of test */ - char error[256]; - - /* Read fields */ - png_structp pread; /* Used to read a saved file */ - png_infop piread; - png_store_file* current; /* Set when reading */ - png_store_buffer* next; /* Set when reading */ - png_size_t readpos; /* Position in *next */ - png_byte* image; /* Buffer for reading interlaced images */ - png_size_t cb_image; /* Size of this buffer */ - png_size_t cb_row; /* Row size of the image(s) */ - png_uint_32 image_h; /* Number of rows in a single image */ - store_pool read_memory_pool; - - /* Write fields */ - png_store_file* saved; - png_structp pwrite; /* Used when writing a new file */ - png_infop piwrite; - png_size_t writepos; /* Position in .new */ - char wname[FILE_NAME_SIZE]; - png_store_buffer new; /* The end of the new PNG file being written. */ - store_pool write_memory_pool; - store_palette_entry* palette; - int npalette; -} png_store; - -/* Initialization and cleanup */ -static void -store_pool_mark(png_bytep mark) -{ - static png_uint_32 store_seed[2] = { 0x12345678, 1}; - - make_four_random_bytes(store_seed, mark); -} - -#ifdef PNG_READ_SUPPORTED -/* Use this for random 32 bit values; this function makes sure the result is - * non-zero. - */ -static png_uint_32 -random_32(void) -{ - - for(;;) - { - png_byte mark[4]; - png_uint_32 result; - - store_pool_mark(mark); - result = png_get_uint_32(mark); - - if (result != 0) - return result; - } -} -#endif /* PNG_READ_SUPPORTED */ - -static void -store_pool_init(png_store *ps, store_pool *pool) -{ - memset(pool, 0, sizeof *pool); - - pool->store = ps; - pool->list = NULL; - pool->max = pool->current = pool->limit = pool->total = 0; - pool->max_max = pool->max_limit = pool->max_total = 0; - store_pool_mark(pool->mark); -} - -static void -store_init(png_store* ps) -{ - memset(ps, 0, sizeof *ps); - init_exception_context(&ps->exception_context); - store_pool_init(ps, &ps->read_memory_pool); - store_pool_init(ps, &ps->write_memory_pool); - ps->verbose = 0; - ps->treat_warnings_as_errors = 0; - ps->expect_error = 0; - ps->expect_warning = 0; - ps->saw_warning = 0; - ps->speed = 0; - ps->progressive = 0; - ps->validated = 0; - ps->nerrors = ps->nwarnings = 0; - ps->pread = NULL; - ps->piread = NULL; - ps->saved = ps->current = NULL; - ps->next = NULL; - ps->readpos = 0; - ps->image = NULL; - ps->cb_image = 0; - ps->cb_row = 0; - ps->image_h = 0; - ps->pwrite = NULL; - ps->piwrite = NULL; - ps->writepos = 0; - ps->new.prev = NULL; - ps->palette = NULL; - ps->npalette = 0; - ps->noptions = 0; -} - -static void -store_freebuffer(png_store_buffer* psb) -{ - if (psb->prev) - { - store_freebuffer(psb->prev); - free(psb->prev); - psb->prev = NULL; - } -} - -static void -store_freenew(png_store *ps) -{ - store_freebuffer(&ps->new); - ps->writepos = 0; - if (ps->palette != NULL) - { - free(ps->palette); - ps->palette = NULL; - ps->npalette = 0; - } -} - -static void -store_storenew(png_store *ps) -{ - png_store_buffer *pb; - - if (ps->writepos != STORE_BUFFER_SIZE) - png_error(ps->pwrite, "invalid store call"); - - pb = voidcast(png_store_buffer*, malloc(sizeof *pb)); - - if (pb == NULL) - png_error(ps->pwrite, "store new: OOM"); - - *pb = ps->new; - ps->new.prev = pb; - ps->writepos = 0; -} - -static void -store_freefile(png_store_file **ppf) -{ - if (*ppf != NULL) - { - store_freefile(&(*ppf)->next); - - store_freebuffer(&(*ppf)->data); - (*ppf)->datacount = 0; - if ((*ppf)->palette != NULL) - { - free((*ppf)->palette); - (*ppf)->palette = NULL; - (*ppf)->npalette = 0; - } - free(*ppf); - *ppf = NULL; - } -} - -/* Main interface to file storeage, after writing a new PNG file (see the API - * below) call store_storefile to store the result with the given name and id. - */ -static void -store_storefile(png_store *ps, png_uint_32 id) -{ - png_store_file *pf = voidcast(png_store_file*, malloc(sizeof *pf)); - if (pf == NULL) - png_error(ps->pwrite, "storefile: OOM"); - safecat(pf->name, sizeof pf->name, 0, ps->wname); - pf->id = id; - pf->data = ps->new; - pf->datacount = ps->writepos; - ps->new.prev = NULL; - ps->writepos = 0; - pf->palette = ps->palette; - pf->npalette = ps->npalette; - ps->palette = 0; - ps->npalette = 0; - - /* And save it. */ - pf->next = ps->saved; - ps->saved = pf; -} - -/* Generate an error message (in the given buffer) */ -static size_t -store_message(png_store *ps, png_const_structp pp, char *buffer, size_t bufsize, - size_t pos, PNG_CONST char *msg) -{ - if (pp != NULL && pp == ps->pread) - { - /* Reading a file */ - pos = safecat(buffer, bufsize, pos, "read: "); - - if (ps->current != NULL) - { - pos = safecat(buffer, bufsize, pos, ps->current->name); - pos = safecat(buffer, bufsize, pos, sep); - } - } - - else if (pp != NULL && pp == ps->pwrite) - { - /* Writing a file */ - pos = safecat(buffer, bufsize, pos, "write: "); - pos = safecat(buffer, bufsize, pos, ps->wname); - pos = safecat(buffer, bufsize, pos, sep); - } - - else - { - /* Neither reading nor writing (or a memory error in struct delete) */ - pos = safecat(buffer, bufsize, pos, "pngvalid: "); - } - - if (ps->test[0] != 0) - { - pos = safecat(buffer, bufsize, pos, ps->test); - pos = safecat(buffer, bufsize, pos, sep); - } - pos = safecat(buffer, bufsize, pos, msg); - return pos; -} - -/* Verbose output to the error stream: */ -static void -store_verbose(png_store *ps, png_const_structp pp, png_const_charp prefix, - png_const_charp message) -{ - char buffer[512]; - - if (prefix) - fputs(prefix, stderr); - - (void)store_message(ps, pp, buffer, sizeof buffer, 0, message); - fputs(buffer, stderr); - fputc('\n', stderr); -} - -/* Log an error or warning - the relevant count is always incremented. */ -static void -store_log(png_store* ps, png_const_structp pp, png_const_charp message, - int is_error) -{ - /* The warning is copied to the error buffer if there are no errors and it is - * the first warning. The error is copied to the error buffer if it is the - * first error (overwriting any prior warnings). - */ - if (is_error ? (ps->nerrors)++ == 0 : - (ps->nwarnings)++ == 0 && ps->nerrors == 0) - store_message(ps, pp, ps->error, sizeof ps->error, 0, message); - - if (ps->verbose) - store_verbose(ps, pp, is_error ? "error: " : "warning: ", message); -} - -#ifdef PNG_READ_SUPPORTED -/* Internal error function, called with a png_store but no libpng stuff. */ -static void -internal_error(png_store *ps, png_const_charp message) -{ - store_log(ps, NULL, message, 1 /* error */); - - /* And finally throw an exception. */ - { - struct exception_context *the_exception_context = &ps->exception_context; - Throw ps; - } -} -#endif /* PNG_READ_SUPPORTED */ - -/* Functions to use as PNG callbacks. */ -static void -store_error(png_structp ppIn, png_const_charp message) /* PNG_NORETURN */ -{ - png_const_structp pp = ppIn; - png_store *ps = voidcast(png_store*, png_get_error_ptr(pp)); - - if (!ps->expect_error) - store_log(ps, pp, message, 1 /* error */); - - /* And finally throw an exception. */ - { - struct exception_context *the_exception_context = &ps->exception_context; - Throw ps; - } -} - -static void -store_warning(png_structp ppIn, png_const_charp message) -{ - png_const_structp pp = ppIn; - png_store *ps = voidcast(png_store*, png_get_error_ptr(pp)); - - if (!ps->expect_warning) - store_log(ps, pp, message, 0 /* warning */); - else - ps->saw_warning = 1; -} - -/* These somewhat odd functions are used when reading an image to ensure that - * the buffer is big enough, the png_structp is for errors. - */ -/* Return a single row from the correct image. */ -static png_bytep -store_image_row(PNG_CONST png_store* ps, png_const_structp pp, int nImage, - png_uint_32 y) -{ - png_size_t coffset = (nImage * ps->image_h + y) * (ps->cb_row + 5) + 2; - - if (ps->image == NULL) - png_error(pp, "no allocated image"); - - if (coffset + ps->cb_row + 3 > ps->cb_image) - png_error(pp, "image too small"); - - return ps->image + coffset; -} - -static void -store_image_free(png_store *ps, png_const_structp pp) -{ - if (ps->image != NULL) - { - png_bytep image = ps->image; - - if (image[-1] != 0xed || image[ps->cb_image] != 0xfe) - { - if (pp != NULL) - png_error(pp, "png_store image overwrite (1)"); - else - store_log(ps, NULL, "png_store image overwrite (2)", 1); - } - - ps->image = NULL; - ps->cb_image = 0; - --image; - free(image); - } -} - -static void -store_ensure_image(png_store *ps, png_const_structp pp, int nImages, - png_size_t cbRow, png_uint_32 cRows) -{ - png_size_t cb = nImages * cRows * (cbRow + 5); - - if (ps->cb_image < cb) - { - png_bytep image; - - store_image_free(ps, pp); - - /* The buffer is deliberately mis-aligned. */ - image = voidcast(png_bytep, malloc(cb+2)); - if (image == NULL) - { - /* Called from the startup - ignore the error for the moment. */ - if (pp == NULL) - return; - - png_error(pp, "OOM allocating image buffer"); - } - - /* These magic tags are used to detect overwrites above. */ - ++image; - image[-1] = 0xed; - image[cb] = 0xfe; - - ps->image = image; - ps->cb_image = cb; - } - - /* We have an adequate sized image; lay out the rows. There are 2 bytes at - * the start and three at the end of each (this ensures that the row - * alignment starts out odd - 2+1 and changes for larger images on each row.) - */ - ps->cb_row = cbRow; - ps->image_h = cRows; - - /* For error checking, the whole buffer is set to 10110010 (0xb2 - 178). - * This deliberately doesn't match the bits in the size test image which are - * outside the image; these are set to 0xff (all 1). To make the row - * comparison work in the 'size' test case the size rows are pre-initialized - * to the same value prior to calling 'standard_row'. - */ - memset(ps->image, 178, cb); - - /* Then put in the marks. */ - while (--nImages >= 0) - { - png_uint_32 y; - - for (y=0; yimage; - - if (image[-1] != 0xed || image[ps->cb_image] != 0xfe) - png_error(pp, "image overwrite"); - else - { - png_size_t cbRow = ps->cb_row; - png_uint_32 rows = ps->image_h; - - image += iImage * (cbRow+5) * ps->image_h; - - image += 2; /* skip image first row markers */ - - while (rows-- > 0) - { - if (image[-2] != 190 || image[-1] != 239) - png_error(pp, "row start overwritten"); - - if (image[cbRow] != 222 || image[cbRow+1] != 173 || - image[cbRow+2] != 17) - png_error(pp, "row end overwritten"); - - image += cbRow+5; - } - } -} -#endif /* PNG_READ_SUPPORTED */ - -static void -store_write(png_structp ppIn, png_bytep pb, png_size_t st) -{ - png_const_structp pp = ppIn; - png_store *ps = voidcast(png_store*, png_get_io_ptr(pp)); - - if (ps->pwrite != pp) - png_error(pp, "store state damaged"); - - while (st > 0) - { - size_t cb; - - if (ps->writepos >= STORE_BUFFER_SIZE) - store_storenew(ps); - - cb = st; - - if (cb > STORE_BUFFER_SIZE - ps->writepos) - cb = STORE_BUFFER_SIZE - ps->writepos; - - memcpy(ps->new.buffer + ps->writepos, pb, cb); - pb += cb; - st -= cb; - ps->writepos += cb; - } -} - -static void -store_flush(png_structp ppIn) -{ - UNUSED(ppIn) /*DOES NOTHING*/ -} - -#ifdef PNG_READ_SUPPORTED -static size_t -store_read_buffer_size(png_store *ps) -{ - /* Return the bytes available for read in the current buffer. */ - if (ps->next != &ps->current->data) - return STORE_BUFFER_SIZE; - - return ps->current->datacount; -} - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -/* Return total bytes available for read. */ -static size_t -store_read_buffer_avail(png_store *ps) -{ - if (ps->current != NULL && ps->next != NULL) - { - png_store_buffer *next = &ps->current->data; - size_t cbAvail = ps->current->datacount; - - while (next != ps->next && next != NULL) - { - next = next->prev; - cbAvail += STORE_BUFFER_SIZE; - } - - if (next != ps->next) - png_error(ps->pread, "buffer read error"); - - if (cbAvail > ps->readpos) - return cbAvail - ps->readpos; - } - - return 0; -} -#endif - -static int -store_read_buffer_next(png_store *ps) -{ - png_store_buffer *pbOld = ps->next; - png_store_buffer *pbNew = &ps->current->data; - if (pbOld != pbNew) - { - while (pbNew != NULL && pbNew->prev != pbOld) - pbNew = pbNew->prev; - - if (pbNew != NULL) - { - ps->next = pbNew; - ps->readpos = 0; - return 1; - } - - png_error(ps->pread, "buffer lost"); - } - - return 0; /* EOF or error */ -} - -/* Need separate implementation and callback to allow use of the same code - * during progressive read, where the io_ptr is set internally by libpng. - */ -static void -store_read_imp(png_store *ps, png_bytep pb, png_size_t st) -{ - if (ps->current == NULL || ps->next == NULL) - png_error(ps->pread, "store state damaged"); - - while (st > 0) - { - size_t cbAvail = store_read_buffer_size(ps) - ps->readpos; - - if (cbAvail > 0) - { - if (cbAvail > st) cbAvail = st; - memcpy(pb, ps->next->buffer + ps->readpos, cbAvail); - st -= cbAvail; - pb += cbAvail; - ps->readpos += cbAvail; - } - - else if (!store_read_buffer_next(ps)) - png_error(ps->pread, "read beyond end of file"); - } -} - -static void -store_read(png_structp ppIn, png_bytep pb, png_size_t st) -{ - png_const_structp pp = ppIn; - png_store *ps = voidcast(png_store*, png_get_io_ptr(pp)); - - if (ps == NULL || ps->pread != pp) - png_error(pp, "bad store read call"); - - store_read_imp(ps, pb, st); -} - -static void -store_progressive_read(png_store *ps, png_structp pp, png_infop pi) -{ - /* Notice that a call to store_read will cause this function to fail because - * readpos will be set. - */ - if (ps->pread != pp || ps->current == NULL || ps->next == NULL) - png_error(pp, "store state damaged (progressive)"); - - do - { - if (ps->readpos != 0) - png_error(pp, "store_read called during progressive read"); - - png_process_data(pp, pi, ps->next->buffer, store_read_buffer_size(ps)); - } - while (store_read_buffer_next(ps)); -} -#endif /* PNG_READ_SUPPORTED */ - -/* The caller must fill this in: */ -static store_palette_entry * -store_write_palette(png_store *ps, int npalette) -{ - if (ps->pwrite == NULL) - store_log(ps, NULL, "attempt to write palette without write stream", 1); - - if (ps->palette != NULL) - png_error(ps->pwrite, "multiple store_write_palette calls"); - - /* This function can only return NULL if called with '0'! */ - if (npalette > 0) - { - ps->palette = voidcast(store_palette_entry*, malloc(npalette * - sizeof *ps->palette)); - - if (ps->palette == NULL) - png_error(ps->pwrite, "store new palette: OOM"); - - ps->npalette = npalette; - } - - return ps->palette; -} - -#ifdef PNG_READ_SUPPORTED -static store_palette_entry * -store_current_palette(png_store *ps, int *npalette) -{ - /* This is an internal error (the call has been made outside a read - * operation.) - */ - if (ps->current == NULL) - store_log(ps, ps->pread, "no current stream for palette", 1); - - /* The result may be null if there is no palette. */ - *npalette = ps->current->npalette; - return ps->current->palette; -} -#endif /* PNG_READ_SUPPORTED */ - -/***************************** MEMORY MANAGEMENT*** ***************************/ -#ifdef PNG_USER_MEM_SUPPORTED -/* A store_memory is simply the header for an allocated block of memory. The - * pointer returned to libpng is just after the end of the header block, the - * allocated memory is followed by a second copy of the 'mark'. - */ -typedef struct store_memory -{ - store_pool *pool; /* Originating pool */ - struct store_memory *next; /* Singly linked list */ - png_alloc_size_t size; /* Size of memory allocated */ - png_byte mark[4]; /* ID marker */ -} store_memory; - -/* Handle a fatal error in memory allocation. This calls png_error if the - * libpng struct is non-NULL, else it outputs a message and returns. This means - * that a memory problem while libpng is running will abort (png_error) the - * handling of particular file while one in cleanup (after the destroy of the - * struct has returned) will simply keep going and free (or attempt to free) - * all the memory. - */ -static void -store_pool_error(png_store *ps, png_const_structp pp, PNG_CONST char *msg) -{ - if (pp != NULL) - png_error(pp, msg); - - /* Else we have to do it ourselves. png_error eventually calls store_log, - * above. store_log accepts a NULL png_structp - it just changes what gets - * output by store_message. - */ - store_log(ps, pp, msg, 1 /* error */); -} - -static void -store_memory_free(png_const_structp pp, store_pool *pool, store_memory *memory) -{ - /* Note that pp may be NULL (see store_pool_delete below), the caller has - * found 'memory' in pool->list *and* unlinked this entry, so this is a valid - * pointer (for sure), but the contents may have been trashed. - */ - if (memory->pool != pool) - store_pool_error(pool->store, pp, "memory corrupted (pool)"); - - else if (memcmp(memory->mark, pool->mark, sizeof memory->mark) != 0) - store_pool_error(pool->store, pp, "memory corrupted (start)"); - - /* It should be safe to read the size field now. */ - else - { - png_alloc_size_t cb = memory->size; - - if (cb > pool->max) - store_pool_error(pool->store, pp, "memory corrupted (size)"); - - else if (memcmp((png_bytep)(memory+1)+cb, pool->mark, sizeof pool->mark) - != 0) - store_pool_error(pool->store, pp, "memory corrupted (end)"); - - /* Finally give the library a chance to find problems too: */ - else - { - pool->current -= cb; - free(memory); - } - } -} - -static void -store_pool_delete(png_store *ps, store_pool *pool) -{ - if (pool->list != NULL) - { - fprintf(stderr, "%s: %s %s: memory lost (list follows):\n", ps->test, - pool == &ps->read_memory_pool ? "read" : "write", - pool == &ps->read_memory_pool ? (ps->current != NULL ? - ps->current->name : "unknown file") : ps->wname); - ++ps->nerrors; - - do - { - store_memory *next = pool->list; - pool->list = next->next; - next->next = NULL; - - fprintf(stderr, "\t%lu bytes @ %p\n", - (unsigned long)next->size, (PNG_CONST void*)(next+1)); - /* The NULL means this will always return, even if the memory is - * corrupted. - */ - store_memory_free(NULL, pool, next); - } - while (pool->list != NULL); - } - - /* And reset the other fields too for the next time. */ - if (pool->max > pool->max_max) pool->max_max = pool->max; - pool->max = 0; - if (pool->current != 0) /* unexpected internal error */ - fprintf(stderr, "%s: %s %s: memory counter mismatch (internal error)\n", - ps->test, pool == &ps->read_memory_pool ? "read" : "write", - pool == &ps->read_memory_pool ? (ps->current != NULL ? - ps->current->name : "unknown file") : ps->wname); - pool->current = 0; - - if (pool->limit > pool->max_limit) - pool->max_limit = pool->limit; - - pool->limit = 0; - - if (pool->total > pool->max_total) - pool->max_total = pool->total; - - pool->total = 0; - - /* Get a new mark too. */ - store_pool_mark(pool->mark); -} - -/* The memory callbacks: */ -static png_voidp -store_malloc(png_structp ppIn, png_alloc_size_t cb) -{ - png_const_structp pp = ppIn; - store_pool *pool = voidcast(store_pool*, png_get_mem_ptr(pp)); - store_memory *new = voidcast(store_memory*, malloc(cb + (sizeof *new) + - (sizeof pool->mark))); - - if (new != NULL) - { - if (cb > pool->max) - pool->max = cb; - - pool->current += cb; - - if (pool->current > pool->limit) - pool->limit = pool->current; - - pool->total += cb; - - new->size = cb; - memcpy(new->mark, pool->mark, sizeof new->mark); - memcpy((png_byte*)(new+1) + cb, pool->mark, sizeof pool->mark); - new->pool = pool; - new->next = pool->list; - pool->list = new; - ++new; - } - - else - { - /* NOTE: the PNG user malloc function cannot use the png_ptr it is passed - * other than to retrieve the allocation pointer! libpng calls the - * store_malloc callback in two basic cases: - * - * 1) From png_malloc; png_malloc will do a png_error itself if NULL is - * returned. - * 2) From png_struct or png_info structure creation; png_malloc is - * to return so cleanup can be performed. - * - * To handle this store_malloc can log a message, but can't do anything - * else. - */ - store_log(pool->store, pp, "out of memory", 1 /* is_error */); - } - - return new; -} - -static void -store_free(png_structp ppIn, png_voidp memory) -{ - png_const_structp pp = ppIn; - store_pool *pool = voidcast(store_pool*, png_get_mem_ptr(pp)); - store_memory *this = voidcast(store_memory*, memory), **test; - - /* Because libpng calls store_free with a dummy png_struct when deleting - * png_struct or png_info via png_destroy_struct_2 it is necessary to check - * the passed in png_structp to ensure it is valid, and not pass it to - * png_error if it is not. - */ - if (pp != pool->store->pread && pp != pool->store->pwrite) - pp = NULL; - - /* First check that this 'memory' really is valid memory - it must be in the - * pool list. If it is, use the shared memory_free function to free it. - */ - --this; - for (test = &pool->list; *test != this; test = &(*test)->next) - { - if (*test == NULL) - { - store_pool_error(pool->store, pp, "bad pointer to free"); - return; - } - } - - /* Unlink this entry, *test == this. */ - *test = this->next; - this->next = NULL; - store_memory_free(pp, pool, this); -} -#endif /* PNG_USER_MEM_SUPPORTED */ - -/* Setup functions. */ -/* Cleanup when aborting a write or after storing the new file. */ -static void -store_write_reset(png_store *ps) -{ - if (ps->pwrite != NULL) - { - anon_context(ps); - - Try - png_destroy_write_struct(&ps->pwrite, &ps->piwrite); - - Catch_anonymous - { - /* memory corruption: continue. */ - } - - ps->pwrite = NULL; - ps->piwrite = NULL; - } - - /* And make sure that all the memory has been freed - this will output - * spurious errors in the case of memory corruption above, but this is safe. - */ -# ifdef PNG_USER_MEM_SUPPORTED - store_pool_delete(ps, &ps->write_memory_pool); -# endif - - store_freenew(ps); -} - -/* The following is the main write function, it returns a png_struct and, - * optionally, a png_info suitable for writiing a new PNG file. Use - * store_storefile above to record this file after it has been written. The - * returned libpng structures as destroyed by store_write_reset above. - */ -static png_structp -set_store_for_write(png_store *ps, png_infopp ppi, - PNG_CONST char * volatile name) -{ - anon_context(ps); - - Try - { - if (ps->pwrite != NULL) - png_error(ps->pwrite, "write store already in use"); - - store_write_reset(ps); - safecat(ps->wname, sizeof ps->wname, 0, name); - - /* Don't do the slow memory checks if doing a speed test, also if user - * memory is not supported we can't do it anyway. - */ -# ifdef PNG_USER_MEM_SUPPORTED - if (!ps->speed) - ps->pwrite = png_create_write_struct_2(PNG_LIBPNG_VER_STRING, - ps, store_error, store_warning, &ps->write_memory_pool, - store_malloc, store_free); - - else -# endif - ps->pwrite = png_create_write_struct(PNG_LIBPNG_VER_STRING, - ps, store_error, store_warning); - - png_set_write_fn(ps->pwrite, ps, store_write, store_flush); - -# ifdef PNG_SET_OPTION_SUPPORTED - { - int opt; - for (opt=0; optnoptions; ++opt) - if (png_set_option(ps->pwrite, ps->options[opt].option, - ps->options[opt].setting) == PNG_OPTION_INVALID) - png_error(ps->pwrite, "png option invalid"); - } -# endif - - if (ppi != NULL) - *ppi = ps->piwrite = png_create_info_struct(ps->pwrite); - } - - Catch_anonymous - return NULL; - - return ps->pwrite; -} - -/* Cleanup when finished reading (either due to error or in the success case). - * This routine exists even when there is no read support to make the code - * tidier (avoid a mass of ifdefs) and so easier to maintain. - */ -static void -store_read_reset(png_store *ps) -{ -# ifdef PNG_READ_SUPPORTED - if (ps->pread != NULL) - { - anon_context(ps); - - Try - png_destroy_read_struct(&ps->pread, &ps->piread, NULL); - - Catch_anonymous - { - /* error already output: continue */ - } - - ps->pread = NULL; - ps->piread = NULL; - } -# endif - -# ifdef PNG_USER_MEM_SUPPORTED - /* Always do this to be safe. */ - store_pool_delete(ps, &ps->read_memory_pool); -# endif - - ps->current = NULL; - ps->next = NULL; - ps->readpos = 0; - ps->validated = 0; -} - -#ifdef PNG_READ_SUPPORTED -static void -store_read_set(png_store *ps, png_uint_32 id) -{ - png_store_file *pf = ps->saved; - - while (pf != NULL) - { - if (pf->id == id) - { - ps->current = pf; - ps->next = NULL; - store_read_buffer_next(ps); - return; - } - - pf = pf->next; - } - - { - size_t pos; - char msg[FILE_NAME_SIZE+64]; - - pos = standard_name_from_id(msg, sizeof msg, 0, id); - pos = safecat(msg, sizeof msg, pos, ": file not found"); - png_error(ps->pread, msg); - } -} - -/* The main interface for reading a saved file - pass the id number of the file - * to retrieve. Ids must be unique or the earlier file will be hidden. The API - * returns a png_struct and, optionally, a png_info. Both of these will be - * destroyed by store_read_reset above. - */ -static png_structp -set_store_for_read(png_store *ps, png_infopp ppi, png_uint_32 id, - PNG_CONST char *name) -{ - /* Set the name for png_error */ - safecat(ps->test, sizeof ps->test, 0, name); - - if (ps->pread != NULL) - png_error(ps->pread, "read store already in use"); - - store_read_reset(ps); - - /* Both the create APIs can return NULL if used in their default mode - * (because there is no other way of handling an error because the jmp_buf - * by default is stored in png_struct and that has not been allocated!) - * However, given that store_error works correctly in these circumstances - * we don't ever expect NULL in this program. - */ -# ifdef PNG_USER_MEM_SUPPORTED - if (!ps->speed) - ps->pread = png_create_read_struct_2(PNG_LIBPNG_VER_STRING, ps, - store_error, store_warning, &ps->read_memory_pool, store_malloc, - store_free); - - else -# endif - ps->pread = png_create_read_struct(PNG_LIBPNG_VER_STRING, ps, store_error, - store_warning); - - if (ps->pread == NULL) - { - struct exception_context *the_exception_context = &ps->exception_context; - - store_log(ps, NULL, "png_create_read_struct returned NULL (unexpected)", - 1 /*error*/); - - Throw ps; - } - -# ifdef PNG_SET_OPTION_SUPPORTED - { - int opt; - for (opt=0; optnoptions; ++opt) - if (png_set_option(ps->pread, ps->options[opt].option, - ps->options[opt].setting) == PNG_OPTION_INVALID) - png_error(ps->pread, "png option invalid"); - } -# endif - - store_read_set(ps, id); - - if (ppi != NULL) - *ppi = ps->piread = png_create_info_struct(ps->pread); - - return ps->pread; -} -#endif /* PNG_READ_SUPPORTED */ - -/* The overall cleanup of a store simply calls the above then removes all the - * saved files. This does not delete the store itself. - */ -static void -store_delete(png_store *ps) -{ - store_write_reset(ps); - store_read_reset(ps); - store_freefile(&ps->saved); - store_image_free(ps, NULL); -} - -/*********************** PNG FILE MODIFICATION ON READ ************************/ -/* Files may be modified on read. The following structure contains a complete - * png_store together with extra members to handle modification and a special - * read callback for libpng. To use this the 'modifications' field must be set - * to a list of png_modification structures that actually perform the - * modification, otherwise a png_modifier is functionally equivalent to a - * png_store. There is a special read function, set_modifier_for_read, which - * replaces set_store_for_read. - */ -typedef enum modifier_state -{ - modifier_start, /* Initial value */ - modifier_signature, /* Have a signature */ - modifier_IHDR /* Have an IHDR */ -} modifier_state; - -typedef struct CIE_color -{ - /* A single CIE tristimulus value, representing the unique response of a - * standard observer to a variety of light spectra. The observer recognizes - * all spectra that produce this response as the same color, therefore this - * is effectively a description of a color. - */ - double X, Y, Z; -} CIE_color; - -typedef struct color_encoding -{ - /* A description of an (R,G,B) encoding of color (as defined above); this - * includes the actual colors of the (R,G,B) triples (1,0,0), (0,1,0) and - * (0,0,1) plus an encoding value that is used to encode the linear - * components R, G and B to give the actual values R^gamma, G^gamma and - * B^gamma that are stored. - */ - double gamma; /* Encoding (file) gamma of space */ - CIE_color red, green, blue; /* End points */ -} color_encoding; - -#ifdef PNG_READ_SUPPORTED -static double -chromaticity_x(CIE_color c) -{ - return c.X / (c.X + c.Y + c.Z); -} - -static double -chromaticity_y(CIE_color c) -{ - return c.Y / (c.X + c.Y + c.Z); -} - -static CIE_color -white_point(PNG_CONST color_encoding *encoding) -{ - CIE_color white; - - white.X = encoding->red.X + encoding->green.X + encoding->blue.X; - white.Y = encoding->red.Y + encoding->green.Y + encoding->blue.Y; - white.Z = encoding->red.Z + encoding->green.Z + encoding->blue.Z; - - return white; -} - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -static void -normalize_color_encoding(color_encoding *encoding) -{ - PNG_CONST double whiteY = encoding->red.Y + encoding->green.Y + - encoding->blue.Y; - - if (whiteY != 1) - { - encoding->red.X /= whiteY; - encoding->red.Y /= whiteY; - encoding->red.Z /= whiteY; - encoding->green.X /= whiteY; - encoding->green.Y /= whiteY; - encoding->green.Z /= whiteY; - encoding->blue.X /= whiteY; - encoding->blue.Y /= whiteY; - encoding->blue.Z /= whiteY; - } -} -#endif - -static size_t -safecat_color_encoding(char *buffer, size_t bufsize, size_t pos, - PNG_CONST color_encoding *e, double encoding_gamma) -{ - if (e != 0) - { - if (encoding_gamma != 0) - pos = safecat(buffer, bufsize, pos, "("); - pos = safecat(buffer, bufsize, pos, "R("); - pos = safecatd(buffer, bufsize, pos, e->red.X, 4); - pos = safecat(buffer, bufsize, pos, ","); - pos = safecatd(buffer, bufsize, pos, e->red.Y, 4); - pos = safecat(buffer, bufsize, pos, ","); - pos = safecatd(buffer, bufsize, pos, e->red.Z, 4); - pos = safecat(buffer, bufsize, pos, "),G("); - pos = safecatd(buffer, bufsize, pos, e->green.X, 4); - pos = safecat(buffer, bufsize, pos, ","); - pos = safecatd(buffer, bufsize, pos, e->green.Y, 4); - pos = safecat(buffer, bufsize, pos, ","); - pos = safecatd(buffer, bufsize, pos, e->green.Z, 4); - pos = safecat(buffer, bufsize, pos, "),B("); - pos = safecatd(buffer, bufsize, pos, e->blue.X, 4); - pos = safecat(buffer, bufsize, pos, ","); - pos = safecatd(buffer, bufsize, pos, e->blue.Y, 4); - pos = safecat(buffer, bufsize, pos, ","); - pos = safecatd(buffer, bufsize, pos, e->blue.Z, 4); - pos = safecat(buffer, bufsize, pos, ")"); - if (encoding_gamma != 0) - pos = safecat(buffer, bufsize, pos, ")"); - } - - if (encoding_gamma != 0) - { - pos = safecat(buffer, bufsize, pos, "^"); - pos = safecatd(buffer, bufsize, pos, encoding_gamma, 5); - } - - return pos; -} -#endif /* PNG_READ_SUPPORTED */ - -typedef struct png_modifier -{ - png_store this; /* I am a png_store */ - struct png_modification *modifications; /* Changes to make */ - - modifier_state state; /* My state */ - - /* Information from IHDR: */ - png_byte bit_depth; /* From IHDR */ - png_byte colour_type; /* From IHDR */ - - /* While handling PLTE, IDAT and IEND these chunks may be pended to allow - * other chunks to be inserted. - */ - png_uint_32 pending_len; - png_uint_32 pending_chunk; - - /* Test values */ - double *gammas; - unsigned int ngammas; - unsigned int ngamma_tests; /* Number of gamma tests to run*/ - double current_gamma; /* 0 if not set */ - PNG_CONST color_encoding *encodings; - unsigned int nencodings; - PNG_CONST color_encoding *current_encoding; /* If an encoding has been set */ - unsigned int encoding_counter; /* For iteration */ - int encoding_ignored; /* Something overwrote it */ - - /* Control variables used to iterate through possible encodings, the - * following must be set to 0 and tested by the function that uses the - * png_modifier because the modifier only sets it to 1 (true.) - */ - unsigned int repeat :1; /* Repeat this transform test. */ - unsigned int test_uses_encoding :1; - - /* Lowest sbit to test (libpng fails for sbit < 8) */ - png_byte sbitlow; - - /* Error control - these are the limits on errors accepted by the gamma tests - * below. - */ - double maxout8; /* Maximum output value error */ - double maxabs8; /* Absolute sample error 0..1 */ - double maxcalc8; /* Absolute sample error 0..1 */ - double maxpc8; /* Percentage sample error 0..100% */ - double maxout16; /* Maximum output value error */ - double maxabs16; /* Absolute sample error 0..1 */ - double maxcalc16;/* Absolute sample error 0..1 */ - double maxpc16; /* Percentage sample error 0..100% */ - - /* This is set by transforms that need to allow a higher limit, it is an - * internal check on pngvalid to ensure that the calculated error limits are - * not ridiculous; without this it is too easy to make a mistake in pngvalid - * that allows any value through. - */ - double limit; /* limit on error values, normally 4E-3 */ - - /* Log limits - values above this are logged, but not necessarily - * warned. - */ - double log8; /* Absolute error in 8 bits to log */ - double log16; /* Absolute error in 16 bits to log */ - - /* Logged 8 and 16 bit errors ('output' values): */ - double error_gray_2; - double error_gray_4; - double error_gray_8; - double error_gray_16; - double error_color_8; - double error_color_16; - double error_indexed; - - /* Flags: */ - /* Whether to call png_read_update_info, not png_read_start_image, and how - * many times to call it. - */ - int use_update_info; - - /* Whether or not to interlace. */ - int interlace_type :9; /* int, but must store '1' */ - - /* Run the standard tests? */ - unsigned int test_standard :1; - - /* Run the odd-sized image and interlace read/write tests? */ - unsigned int test_size :1; - - /* Run tests on reading with a combiniation of transforms, */ - unsigned int test_transform :1; - - /* When to use the use_input_precision option: */ - unsigned int use_input_precision :1; - unsigned int use_input_precision_sbit :1; - unsigned int use_input_precision_16to8 :1; - - /* If set assume that the calculation bit depth is set by the input - * precision, not the output precision. - */ - unsigned int calculations_use_input_precision :1; - - /* If set assume that the calculations are done in 16 bits even if both input - * and output are 8 bit or less. - */ - unsigned int assume_16_bit_calculations :1; - - /* Which gamma tests to run: */ - unsigned int test_gamma_threshold :1; - unsigned int test_gamma_transform :1; /* main tests */ - unsigned int test_gamma_sbit :1; - unsigned int test_gamma_scale16 :1; - unsigned int test_gamma_background :1; - unsigned int test_gamma_alpha_mode :1; - unsigned int test_gamma_expand16 :1; - unsigned int test_exhaustive :1; - - unsigned int log :1; /* Log max error */ - - /* Buffer information, the buffer size limits the size of the chunks that can - * be modified - they must fit (including header and CRC) into the buffer! - */ - size_t flush; /* Count of bytes to flush */ - size_t buffer_count; /* Bytes in buffer */ - size_t buffer_position; /* Position in buffer */ - png_byte buffer[1024]; -} png_modifier; - -/* This returns true if the test should be stopped now because it has already - * failed and it is running silently. - */ -static int fail(png_modifier *pm) -{ - return !pm->log && !pm->this.verbose && (pm->this.nerrors > 0 || - (pm->this.treat_warnings_as_errors && pm->this.nwarnings > 0)); -} - -static void -modifier_init(png_modifier *pm) -{ - memset(pm, 0, sizeof *pm); - store_init(&pm->this); - pm->modifications = NULL; - pm->state = modifier_start; - pm->sbitlow = 1U; - pm->ngammas = 0; - pm->ngamma_tests = 0; - pm->gammas = 0; - pm->current_gamma = 0; - pm->encodings = 0; - pm->nencodings = 0; - pm->current_encoding = 0; - pm->encoding_counter = 0; - pm->encoding_ignored = 0; - pm->repeat = 0; - pm->test_uses_encoding = 0; - pm->maxout8 = pm->maxpc8 = pm->maxabs8 = pm->maxcalc8 = 0; - pm->maxout16 = pm->maxpc16 = pm->maxabs16 = pm->maxcalc16 = 0; - pm->limit = 4E-3; - pm->log8 = pm->log16 = 0; /* Means 'off' */ - pm->error_gray_2 = pm->error_gray_4 = pm->error_gray_8 = 0; - pm->error_gray_16 = pm->error_color_8 = pm->error_color_16 = 0; - pm->error_indexed = 0; - pm->use_update_info = 0; - pm->interlace_type = PNG_INTERLACE_NONE; - pm->test_standard = 0; - pm->test_size = 0; - pm->test_transform = 0; - pm->use_input_precision = 0; - pm->use_input_precision_sbit = 0; - pm->use_input_precision_16to8 = 0; - pm->calculations_use_input_precision = 0; - pm->test_gamma_threshold = 0; - pm->test_gamma_transform = 0; - pm->test_gamma_sbit = 0; - pm->test_gamma_scale16 = 0; - pm->test_gamma_background = 0; - pm->test_gamma_alpha_mode = 0; - pm->test_gamma_expand16 = 0; - pm->test_exhaustive = 0; - pm->log = 0; - - /* Rely on the memset for all the other fields - there are no pointers */ -} - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -/* If pm->calculations_use_input_precision is set then operations will happen - * with only 8 bit precision unless both the input and output bit depth are 16. - * - * If pm->assume_16_bit_calculations is set then even 8 bit calculations use 16 - * bit precision. This only affects those of the following limits that pertain - * to a calculation - not a digitization operation - unless the following API is - * called directly. - */ -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -static double digitize(PNG_CONST png_modifier *pm, double value, - int sample_depth, int do_round) -{ - /* 'value' is in the range 0 to 1, the result is the same value rounded to a - * multiple of the digitization factor - 8 or 16 bits depending on both the - * sample depth and the 'assume' setting. Digitization is normally by - * rounding and 'do_round' should be 1, if it is 0 the digitized value will - * be truncated. - */ - PNG_CONST unsigned int digitization_factor = - (pm->assume_16_bit_calculations || sample_depth == 16) ? 65535 : 255; - - /* Limiting the range is done as a convenience to the caller - it's easier to - * do it once here than every time at the call site. - */ - if (value <= 0) - value = 0; - else if (value >= 1) - value = 1; - - value *= digitization_factor; - if (do_round) value += .5; - return floor(value)/digitization_factor; -} -#endif - -#if defined(PNG_READ_GAMMA_SUPPORTED) ||\ - defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) -static double abserr(PNG_CONST png_modifier *pm, int in_depth, int out_depth) -{ - /* Absolute error permitted in linear values - affected by the bit depth of - * the calculations. - */ - if (pm->assume_16_bit_calculations || (out_depth == 16 && (in_depth == 16 || - !pm->calculations_use_input_precision))) - return pm->maxabs16; - else - return pm->maxabs8; -} -#endif - -#ifdef PNG_READ_GAMMA_SUPPORTED -static double calcerr(PNG_CONST png_modifier *pm, int in_depth, int out_depth) -{ - /* Error in the linear composition arithmetic - only relevant when - * composition actually happens (0 < alpha < 1). - */ - if (pm->assume_16_bit_calculations || (out_depth == 16 && (in_depth == 16 || - !pm->calculations_use_input_precision))) - return pm->maxcalc16; - else - return pm->maxcalc8; -} - -static double pcerr(PNG_CONST png_modifier *pm, int in_depth, int out_depth) -{ - /* Percentage error permitted in the linear values. Note that the specified - * value is a percentage but this routine returns a simple number. - */ - if (pm->assume_16_bit_calculations || (out_depth == 16 && (in_depth == 16 || - !pm->calculations_use_input_precision))) - return pm->maxpc16 * .01; - else - return pm->maxpc8 * .01; -} - -/* Output error - the error in the encoded value. This is determined by the - * digitization of the output so can be +/-0.5 in the actual output value. In - * the expand_16 case with the current code in libpng the expand happens after - * all the calculations are done in 8 bit arithmetic, so even though the output - * depth is 16 the output error is determined by the 8 bit calculation. - * - * This limit is not determined by the bit depth of internal calculations. - * - * The specified parameter does *not* include the base .5 digitization error but - * it is added here. - */ -static double outerr(PNG_CONST png_modifier *pm, int in_depth, int out_depth) -{ - /* There is a serious error in the 2 and 4 bit grayscale transform because - * the gamma table value (8 bits) is simply shifted, not rounded, so the - * error in 4 bit grayscale gamma is up to the value below. This is a hack - * to allow pngvalid to succeed: - * - * TODO: fix this in libpng - */ - if (out_depth == 2) - return .73182-.5; - - if (out_depth == 4) - return .90644-.5; - - if (out_depth == 16 && (in_depth == 16 || - !pm->calculations_use_input_precision)) - return pm->maxout16; - - /* This is the case where the value was calculated at 8-bit precision then - * scaled to 16 bits. - */ - else if (out_depth == 16) - return pm->maxout8 * 257; - - else - return pm->maxout8; -} - -/* This does the same thing as the above however it returns the value to log, - * rather than raising a warning. This is useful for debugging to track down - * exactly what set of parameters cause high error values. - */ -static double outlog(PNG_CONST png_modifier *pm, int in_depth, int out_depth) -{ - /* The command line parameters are either 8 bit (0..255) or 16 bit (0..65535) - * and so must be adjusted for low bit depth grayscale: - */ - if (out_depth <= 8) - { - if (pm->log8 == 0) /* switched off */ - return 256; - - if (out_depth < 8) - return pm->log8 / 255 * ((1<log8; - } - - if (out_depth == 16 && (in_depth == 16 || - !pm->calculations_use_input_precision)) - { - if (pm->log16 == 0) - return 65536; - - return pm->log16; - } - - /* This is the case where the value was calculated at 8-bit precision then - * scaled to 16 bits. - */ - if (pm->log8 == 0) - return 65536; - - return pm->log8 * 257; -} - -/* This complements the above by providing the appropriate quantization for the - * final value. Normally this would just be quantization to an integral value, - * but in the 8 bit calculation case it's actually quantization to a multiple of - * 257! - */ -static int output_quantization_factor(PNG_CONST png_modifier *pm, int in_depth, - int out_depth) -{ - if (out_depth == 16 && in_depth != 16 - && pm->calculations_use_input_precision) - return 257; - else - return 1; -} -#endif /* PNG_READ_GAMMA_SUPPORTED */ - -/* One modification structure must be provided for each chunk to be modified (in - * fact more than one can be provided if multiple separate changes are desired - * for a single chunk.) Modifications include adding a new chunk when a - * suitable chunk does not exist. - * - * The caller of modify_fn will reset the CRC of the chunk and record 'modified' - * or 'added' as appropriate if the modify_fn returns 1 (true). If the - * modify_fn is NULL the chunk is simply removed. - */ -typedef struct png_modification -{ - struct png_modification *next; - png_uint_32 chunk; - - /* If the following is NULL all matching chunks will be removed: */ - int (*modify_fn)(struct png_modifier *pm, - struct png_modification *me, int add); - - /* If the following is set to PLTE, IDAT or IEND and the chunk has not been - * found and modified (and there is a modify_fn) the modify_fn will be called - * to add the chunk before the relevant chunk. - */ - png_uint_32 add; - unsigned int modified :1; /* Chunk was modified */ - unsigned int added :1; /* Chunk was added */ - unsigned int removed :1; /* Chunk was removed */ -} png_modification; - -static void -modification_reset(png_modification *pmm) -{ - if (pmm != NULL) - { - pmm->modified = 0; - pmm->added = 0; - pmm->removed = 0; - modification_reset(pmm->next); - } -} - -static void -modification_init(png_modification *pmm) -{ - memset(pmm, 0, sizeof *pmm); - pmm->next = NULL; - pmm->chunk = 0; - pmm->modify_fn = NULL; - pmm->add = 0; - modification_reset(pmm); -} - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -static void -modifier_current_encoding(PNG_CONST png_modifier *pm, color_encoding *ce) -{ - if (pm->current_encoding != 0) - *ce = *pm->current_encoding; - - else - memset(ce, 0, sizeof *ce); - - ce->gamma = pm->current_gamma; -} -#endif - -static size_t -safecat_current_encoding(char *buffer, size_t bufsize, size_t pos, - PNG_CONST png_modifier *pm) -{ - pos = safecat_color_encoding(buffer, bufsize, pos, pm->current_encoding, - pm->current_gamma); - - if (pm->encoding_ignored) - pos = safecat(buffer, bufsize, pos, "[overridden]"); - - return pos; -} - -/* Iterate through the usefully testable color encodings. An encoding is one - * of: - * - * 1) Nothing (no color space, no gamma). - * 2) Just a gamma value from the gamma array (including 1.0) - * 3) A color space from the encodings array with the corresponding gamma. - * 4) The same, but with gamma 1.0 (only really useful with 16 bit calculations) - * - * The iterator selects these in turn, the randomizer selects one at random, - * which is used depends on the setting of the 'test_exhaustive' flag. Notice - * that this function changes the colour space encoding so it must only be - * called on completion of the previous test. This is what 'modifier_reset' - * does, below. - * - * After the function has been called the 'repeat' flag will still be set; the - * caller of modifier_reset must reset it at the start of each run of the test! - */ -static unsigned int -modifier_total_encodings(PNG_CONST png_modifier *pm) -{ - return 1 + /* (1) nothing */ - pm->ngammas + /* (2) gamma values to test */ - pm->nencodings + /* (3) total number of encodings */ - /* The following test only works after the first time through the - * png_modifier code because 'bit_depth' is set when the IHDR is read. - * modifier_reset, below, preserves the setting until after it has called - * the iterate function (also below.) - * - * For this reason do not rely on this function outside a call to - * modifier_reset. - */ - ((pm->bit_depth == 16 || pm->assume_16_bit_calculations) ? - pm->nencodings : 0); /* (4) encodings with gamma == 1.0 */ -} - -static void -modifier_encoding_iterate(png_modifier *pm) -{ - if (!pm->repeat && /* Else something needs the current encoding again. */ - pm->test_uses_encoding) /* Some transform is encoding dependent */ - { - if (pm->test_exhaustive) - { - if (++pm->encoding_counter >= modifier_total_encodings(pm)) - pm->encoding_counter = 0; /* This will stop the repeat */ - } - - else - { - /* Not exhaustive - choose an encoding at random; generate a number in - * the range 1..(max-1), so the result is always non-zero: - */ - if (pm->encoding_counter == 0) - pm->encoding_counter = random_mod(modifier_total_encodings(pm)-1)+1; - else - pm->encoding_counter = 0; - } - - if (pm->encoding_counter > 0) - pm->repeat = 1; - } - - else if (!pm->repeat) - pm->encoding_counter = 0; -} - -static void -modifier_reset(png_modifier *pm) -{ - store_read_reset(&pm->this); - pm->limit = 4E-3; - pm->pending_len = pm->pending_chunk = 0; - pm->flush = pm->buffer_count = pm->buffer_position = 0; - pm->modifications = NULL; - pm->state = modifier_start; - modifier_encoding_iterate(pm); - /* The following must be set in the next run. In particular - * test_uses_encodings must be set in the _ini function of each transform - * that looks at the encodings. (Not the 'add' function!) - */ - pm->test_uses_encoding = 0; - pm->current_gamma = 0; - pm->current_encoding = 0; - pm->encoding_ignored = 0; - /* These only become value after IHDR is read: */ - pm->bit_depth = pm->colour_type = 0; -} - -/* The following must be called before anything else to get the encoding set up - * on the modifier. In particular it must be called before the transform init - * functions are called. - */ -static void -modifier_set_encoding(png_modifier *pm) -{ - /* Set the encoding to the one specified by the current encoding counter, - * first clear out all the settings - this corresponds to an encoding_counter - * of 0. - */ - pm->current_gamma = 0; - pm->current_encoding = 0; - pm->encoding_ignored = 0; /* not ignored yet - happens in _ini functions. */ - - /* Now, if required, set the gamma and encoding fields. */ - if (pm->encoding_counter > 0) - { - /* The gammas[] array is an array of screen gammas, not encoding gammas, - * so we need the inverse: - */ - if (pm->encoding_counter <= pm->ngammas) - pm->current_gamma = 1/pm->gammas[pm->encoding_counter-1]; - - else - { - unsigned int i = pm->encoding_counter - pm->ngammas; - - if (i >= pm->nencodings) - { - i %= pm->nencodings; - pm->current_gamma = 1; /* Linear, only in the 16 bit case */ - } - - else - pm->current_gamma = pm->encodings[i].gamma; - - pm->current_encoding = pm->encodings + i; - } - } -} - -/* Enquiry functions to find out what is set. Notice that there is an implicit - * assumption below that the first encoding in the list is the one for sRGB. - */ -static int -modifier_color_encoding_is_sRGB(PNG_CONST png_modifier *pm) -{ - return pm->current_encoding != 0 && pm->current_encoding == pm->encodings && - pm->current_encoding->gamma == pm->current_gamma; -} - -static int -modifier_color_encoding_is_set(PNG_CONST png_modifier *pm) -{ - return pm->current_gamma != 0; -} - -/* Convenience macros. */ -#define CHUNK(a,b,c,d) (((a)<<24)+((b)<<16)+((c)<<8)+(d)) -#define CHUNK_IHDR CHUNK(73,72,68,82) -#define CHUNK_PLTE CHUNK(80,76,84,69) -#define CHUNK_IDAT CHUNK(73,68,65,84) -#define CHUNK_IEND CHUNK(73,69,78,68) -#define CHUNK_cHRM CHUNK(99,72,82,77) -#define CHUNK_gAMA CHUNK(103,65,77,65) -#define CHUNK_sBIT CHUNK(115,66,73,84) -#define CHUNK_sRGB CHUNK(115,82,71,66) - -/* The guts of modification are performed during a read. */ -static void -modifier_crc(png_bytep buffer) -{ - /* Recalculate the chunk CRC - a complete chunk must be in - * the buffer, at the start. - */ - uInt datalen = png_get_uint_32(buffer); - uLong crc = crc32(0, buffer+4, datalen+4); - /* The cast to png_uint_32 is safe because a crc32 is always a 32 bit value. - */ - png_save_uint_32(buffer+datalen+8, (png_uint_32)crc); -} - -static void -modifier_setbuffer(png_modifier *pm) -{ - modifier_crc(pm->buffer); - pm->buffer_count = png_get_uint_32(pm->buffer)+12; - pm->buffer_position = 0; -} - -/* Separate the callback into the actual implementation (which is passed the - * png_modifier explicitly) and the callback, which gets the modifier from the - * png_struct. - */ -static void -modifier_read_imp(png_modifier *pm, png_bytep pb, png_size_t st) -{ - while (st > 0) - { - size_t cb; - png_uint_32 len, chunk; - png_modification *mod; - - if (pm->buffer_position >= pm->buffer_count) switch (pm->state) - { - static png_byte sign[8] = { 137, 80, 78, 71, 13, 10, 26, 10 }; - case modifier_start: - store_read_imp(&pm->this, pm->buffer, 8); /* size of signature. */ - pm->buffer_count = 8; - pm->buffer_position = 0; - - if (memcmp(pm->buffer, sign, 8) != 0) - png_error(pm->this.pread, "invalid PNG file signature"); - pm->state = modifier_signature; - break; - - case modifier_signature: - store_read_imp(&pm->this, pm->buffer, 13+12); /* size of IHDR */ - pm->buffer_count = 13+12; - pm->buffer_position = 0; - - if (png_get_uint_32(pm->buffer) != 13 || - png_get_uint_32(pm->buffer+4) != CHUNK_IHDR) - png_error(pm->this.pread, "invalid IHDR"); - - /* Check the list of modifiers for modifications to the IHDR. */ - mod = pm->modifications; - while (mod != NULL) - { - if (mod->chunk == CHUNK_IHDR && mod->modify_fn && - (*mod->modify_fn)(pm, mod, 0)) - { - mod->modified = 1; - modifier_setbuffer(pm); - } - - /* Ignore removal or add if IHDR! */ - mod = mod->next; - } - - /* Cache information from the IHDR (the modified one.) */ - pm->bit_depth = pm->buffer[8+8]; - pm->colour_type = pm->buffer[8+8+1]; - - pm->state = modifier_IHDR; - pm->flush = 0; - break; - - case modifier_IHDR: - default: - /* Read a new chunk and process it until we see PLTE, IDAT or - * IEND. 'flush' indicates that there is still some data to - * output from the preceding chunk. - */ - if ((cb = pm->flush) > 0) - { - if (cb > st) cb = st; - pm->flush -= cb; - store_read_imp(&pm->this, pb, cb); - pb += cb; - st -= cb; - if (st == 0) return; - } - - /* No more bytes to flush, read a header, or handle a pending - * chunk. - */ - if (pm->pending_chunk != 0) - { - png_save_uint_32(pm->buffer, pm->pending_len); - png_save_uint_32(pm->buffer+4, pm->pending_chunk); - pm->pending_len = 0; - pm->pending_chunk = 0; - } - else - store_read_imp(&pm->this, pm->buffer, 8); - - pm->buffer_count = 8; - pm->buffer_position = 0; - - /* Check for something to modify or a terminator chunk. */ - len = png_get_uint_32(pm->buffer); - chunk = png_get_uint_32(pm->buffer+4); - - /* Terminators first, they may have to be delayed for added - * chunks - */ - if (chunk == CHUNK_PLTE || chunk == CHUNK_IDAT || - chunk == CHUNK_IEND) - { - mod = pm->modifications; - - while (mod != NULL) - { - if ((mod->add == chunk || - (mod->add == CHUNK_PLTE && chunk == CHUNK_IDAT)) && - mod->modify_fn != NULL && !mod->modified && !mod->added) - { - /* Regardless of what the modify function does do not run - * this again. - */ - mod->added = 1; - - if ((*mod->modify_fn)(pm, mod, 1 /*add*/)) - { - /* Reset the CRC on a new chunk */ - if (pm->buffer_count > 0) - modifier_setbuffer(pm); - - else - { - pm->buffer_position = 0; - mod->removed = 1; - } - - /* The buffer has been filled with something (we assume) - * so output this. Pend the current chunk. - */ - pm->pending_len = len; - pm->pending_chunk = chunk; - break; /* out of while */ - } - } - - mod = mod->next; - } - - /* Don't do any further processing if the buffer was modified - - * otherwise the code will end up modifying a chunk that was - * just added. - */ - if (mod != NULL) - break; /* out of switch */ - } - - /* If we get to here then this chunk may need to be modified. To - * do this it must be less than 1024 bytes in total size, otherwise - * it just gets flushed. - */ - if (len+12 <= sizeof pm->buffer) - { - store_read_imp(&pm->this, pm->buffer+pm->buffer_count, - len+12-pm->buffer_count); - pm->buffer_count = len+12; - - /* Check for a modification, else leave it be. */ - mod = pm->modifications; - while (mod != NULL) - { - if (mod->chunk == chunk) - { - if (mod->modify_fn == NULL) - { - /* Remove this chunk */ - pm->buffer_count = pm->buffer_position = 0; - mod->removed = 1; - break; /* Terminate the while loop */ - } - - else if ((*mod->modify_fn)(pm, mod, 0)) - { - mod->modified = 1; - /* The chunk may have been removed: */ - if (pm->buffer_count == 0) - { - pm->buffer_position = 0; - break; - } - modifier_setbuffer(pm); - } - } - - mod = mod->next; - } - } - - else - pm->flush = len+12 - pm->buffer_count; /* data + crc */ - - /* Take the data from the buffer (if there is any). */ - break; - } - - /* Here to read from the modifier buffer (not directly from - * the store, as in the flush case above.) - */ - cb = pm->buffer_count - pm->buffer_position; - - if (cb > st) - cb = st; - - memcpy(pb, pm->buffer + pm->buffer_position, cb); - st -= cb; - pb += cb; - pm->buffer_position += cb; - } -} - -/* The callback: */ -static void -modifier_read(png_structp ppIn, png_bytep pb, png_size_t st) -{ - png_const_structp pp = ppIn; - png_modifier *pm = voidcast(png_modifier*, png_get_io_ptr(pp)); - - if (pm == NULL || pm->this.pread != pp) - png_error(pp, "bad modifier_read call"); - - modifier_read_imp(pm, pb, st); -} - -/* Like store_progressive_read but the data is getting changed as we go so we - * need a local buffer. - */ -static void -modifier_progressive_read(png_modifier *pm, png_structp pp, png_infop pi) -{ - if (pm->this.pread != pp || pm->this.current == NULL || - pm->this.next == NULL) - png_error(pp, "store state damaged (progressive)"); - - /* This is another Horowitz and Hill random noise generator. In this case - * the aim is to stress the progressive reader with truly horrible variable - * buffer sizes in the range 1..500, so a sequence of 9 bit random numbers - * is generated. We could probably just count from 1 to 32767 and get as - * good a result. - */ - for (;;) - { - static png_uint_32 noise = 1; - png_size_t cb, cbAvail; - png_byte buffer[512]; - - /* Generate 15 more bits of stuff: */ - noise = (noise << 9) | ((noise ^ (noise >> (9-5))) & 0x1ff); - cb = noise & 0x1ff; - - /* Check that this number of bytes are available (in the current buffer.) - * (This doesn't quite work - the modifier might delete a chunk; unlikely - * but possible, it doesn't happen at present because the modifier only - * adds chunks to standard images.) - */ - cbAvail = store_read_buffer_avail(&pm->this); - if (pm->buffer_count > pm->buffer_position) - cbAvail += pm->buffer_count - pm->buffer_position; - - if (cb > cbAvail) - { - /* Check for EOF: */ - if (cbAvail == 0) - break; - - cb = cbAvail; - } - - modifier_read_imp(pm, buffer, cb); - png_process_data(pp, pi, buffer, cb); - } - - /* Check the invariants at the end (if this fails it's a problem in this - * file!) - */ - if (pm->buffer_count > pm->buffer_position || - pm->this.next != &pm->this.current->data || - pm->this.readpos < pm->this.current->datacount) - png_error(pp, "progressive read implementation error"); -} - -/* Set up a modifier. */ -static png_structp -set_modifier_for_read(png_modifier *pm, png_infopp ppi, png_uint_32 id, - PNG_CONST char *name) -{ - /* Do this first so that the modifier fields are cleared even if an error - * happens allocating the png_struct. No allocation is done here so no - * cleanup is required. - */ - pm->state = modifier_start; - pm->bit_depth = 0; - pm->colour_type = 255; - - pm->pending_len = 0; - pm->pending_chunk = 0; - pm->flush = 0; - pm->buffer_count = 0; - pm->buffer_position = 0; - - return set_store_for_read(&pm->this, ppi, id, name); -} - - -/******************************** MODIFICATIONS *******************************/ -/* Standard modifications to add chunks. These do not require the _SUPPORTED - * macros because the chunks can be there regardless of whether this specific - * libpng supports them. - */ -typedef struct gama_modification -{ - png_modification this; - png_fixed_point gamma; -} gama_modification; - -static int -gama_modify(png_modifier *pm, png_modification *me, int add) -{ - UNUSED(add) - /* This simply dumps the given gamma value into the buffer. */ - png_save_uint_32(pm->buffer, 4); - png_save_uint_32(pm->buffer+4, CHUNK_gAMA); - png_save_uint_32(pm->buffer+8, ((gama_modification*)me)->gamma); - return 1; -} - -static void -gama_modification_init(gama_modification *me, png_modifier *pm, double gammad) -{ - double g; - - modification_init(&me->this); - me->this.chunk = CHUNK_gAMA; - me->this.modify_fn = gama_modify; - me->this.add = CHUNK_PLTE; - g = fix(gammad); - me->gamma = (png_fixed_point)g; - me->this.next = pm->modifications; - pm->modifications = &me->this; -} - -typedef struct chrm_modification -{ - png_modification this; - PNG_CONST color_encoding *encoding; - png_fixed_point wx, wy, rx, ry, gx, gy, bx, by; -} chrm_modification; - -static int -chrm_modify(png_modifier *pm, png_modification *me, int add) -{ - UNUSED(add) - /* As with gAMA this just adds the required cHRM chunk to the buffer. */ - png_save_uint_32(pm->buffer , 32); - png_save_uint_32(pm->buffer+ 4, CHUNK_cHRM); - png_save_uint_32(pm->buffer+ 8, ((chrm_modification*)me)->wx); - png_save_uint_32(pm->buffer+12, ((chrm_modification*)me)->wy); - png_save_uint_32(pm->buffer+16, ((chrm_modification*)me)->rx); - png_save_uint_32(pm->buffer+20, ((chrm_modification*)me)->ry); - png_save_uint_32(pm->buffer+24, ((chrm_modification*)me)->gx); - png_save_uint_32(pm->buffer+28, ((chrm_modification*)me)->gy); - png_save_uint_32(pm->buffer+32, ((chrm_modification*)me)->bx); - png_save_uint_32(pm->buffer+36, ((chrm_modification*)me)->by); - return 1; -} - -static void -chrm_modification_init(chrm_modification *me, png_modifier *pm, - PNG_CONST color_encoding *encoding) -{ - CIE_color white = white_point(encoding); - - /* Original end points: */ - me->encoding = encoding; - - /* Chromaticities (in fixed point): */ - me->wx = fix(chromaticity_x(white)); - me->wy = fix(chromaticity_y(white)); - - me->rx = fix(chromaticity_x(encoding->red)); - me->ry = fix(chromaticity_y(encoding->red)); - me->gx = fix(chromaticity_x(encoding->green)); - me->gy = fix(chromaticity_y(encoding->green)); - me->bx = fix(chromaticity_x(encoding->blue)); - me->by = fix(chromaticity_y(encoding->blue)); - - modification_init(&me->this); - me->this.chunk = CHUNK_cHRM; - me->this.modify_fn = chrm_modify; - me->this.add = CHUNK_PLTE; - me->this.next = pm->modifications; - pm->modifications = &me->this; -} - -typedef struct srgb_modification -{ - png_modification this; - png_byte intent; -} srgb_modification; - -static int -srgb_modify(png_modifier *pm, png_modification *me, int add) -{ - UNUSED(add) - /* As above, ignore add and just make a new chunk */ - png_save_uint_32(pm->buffer, 1); - png_save_uint_32(pm->buffer+4, CHUNK_sRGB); - pm->buffer[8] = ((srgb_modification*)me)->intent; - return 1; -} - -static void -srgb_modification_init(srgb_modification *me, png_modifier *pm, png_byte intent) -{ - modification_init(&me->this); - me->this.chunk = CHUNK_sBIT; - - if (intent <= 3) /* if valid, else *delete* sRGB chunks */ - { - me->this.modify_fn = srgb_modify; - me->this.add = CHUNK_PLTE; - me->intent = intent; - } - - else - { - me->this.modify_fn = 0; - me->this.add = 0; - me->intent = 0; - } - - me->this.next = pm->modifications; - pm->modifications = &me->this; -} - -#ifdef PNG_READ_GAMMA_SUPPORTED -typedef struct sbit_modification -{ - png_modification this; - png_byte sbit; -} sbit_modification; - -static int -sbit_modify(png_modifier *pm, png_modification *me, int add) -{ - png_byte sbit = ((sbit_modification*)me)->sbit; - if (pm->bit_depth > sbit) - { - int cb = 0; - switch (pm->colour_type) - { - case 0: - cb = 1; - break; - - case 2: - case 3: - cb = 3; - break; - - case 4: - cb = 2; - break; - - case 6: - cb = 4; - break; - - default: - png_error(pm->this.pread, - "unexpected colour type in sBIT modification"); - } - - png_save_uint_32(pm->buffer, cb); - png_save_uint_32(pm->buffer+4, CHUNK_sBIT); - - while (cb > 0) - (pm->buffer+8)[--cb] = sbit; - - return 1; - } - else if (!add) - { - /* Remove the sBIT chunk */ - pm->buffer_count = pm->buffer_position = 0; - return 1; - } - else - return 0; /* do nothing */ -} - -static void -sbit_modification_init(sbit_modification *me, png_modifier *pm, png_byte sbit) -{ - modification_init(&me->this); - me->this.chunk = CHUNK_sBIT; - me->this.modify_fn = sbit_modify; - me->this.add = CHUNK_PLTE; - me->sbit = sbit; - me->this.next = pm->modifications; - pm->modifications = &me->this; -} -#endif /* PNG_READ_GAMMA_SUPPORTED */ -#endif /* PNG_READ_TRANSFORMS_SUPPORTED */ - -/***************************** STANDARD PNG FILES *****************************/ -/* Standard files - write and save standard files. */ -/* There are two basic forms of standard images. Those which attempt to have - * all the possible pixel values (not possible for 16bpp images, but a range of - * values are produced) and those which have a range of image sizes. The former - * are used for testing transforms, in particular gamma correction and bit - * reduction and increase. The latter are reserved for testing the behavior of - * libpng with respect to 'odd' image sizes - particularly small images where - * rows become 1 byte and interlace passes disappear. - * - * The first, most useful, set are the 'transform' images, the second set of - * small images are the 'size' images. - * - * The transform files are constructed with rows which fit into a 1024 byte row - * buffer. This makes allocation easier below. Further regardless of the file - * format every row has 128 pixels (giving 1024 bytes for 64bpp formats). - * - * Files are stored with no gAMA or sBIT chunks, with a PLTE only when needed - * and with an ID derived from the colour type, bit depth and interlace type - * as above (FILEID). The width (128) and height (variable) are not stored in - * the FILEID - instead the fields are set to 0, indicating a transform file. - * - * The size files ar constructed with rows a maximum of 128 bytes wide, allowing - * a maximum width of 16 pixels (for the 64bpp case.) They also have a maximum - * height of 16 rows. The width and height are stored in the FILEID and, being - * non-zero, indicate a size file. - * - * Because the PNG filter code is typically the largest CPU consumer within - * libpng itself there is a tendency to attempt to optimize it. This results in - * special case code which needs to be validated. To cause this to happen the - * 'size' images are made to use each possible filter, in so far as this is - * possible for smaller images. - * - * For palette image (colour type 3) multiple transform images are stored with - * the same bit depth to allow testing of more colour combinations - - * particularly important for testing the gamma code because libpng uses a - * different code path for palette images. For size images a single palette is - * used. - */ - -/* Make a 'standard' palette. Because there are only 256 entries in a palette - * (maximum) this actually makes a random palette in the hope that enough tests - * will catch enough errors. (Note that the same palette isn't produced every - * time for the same test - it depends on what previous tests have been run - - * but a given set of arguments to pngvalid will always produce the same palette - * at the same test! This is why pseudo-random number generators are useful for - * testing.) - * - * The store must be open for write when this is called, otherwise an internal - * error will occur. This routine contains its own magic number seed, so the - * palettes generated don't change if there are intervening errors (changing the - * calls to the store_mark seed.) - */ -static store_palette_entry * -make_standard_palette(png_store* ps, int npalette, int do_tRNS) -{ - static png_uint_32 palette_seed[2] = { 0x87654321, 9 }; - - int i = 0; - png_byte values[256][4]; - - /* Always put in black and white plus the six primary and secondary colors. - */ - for (; i<8; ++i) - { - values[i][1] = (png_byte)((i&1) ? 255U : 0U); - values[i][2] = (png_byte)((i&2) ? 255U : 0U); - values[i][3] = (png_byte)((i&4) ? 255U : 0U); - } - - /* Then add 62 grays (one quarter of the remaining 256 slots). */ - { - int j = 0; - png_byte random_bytes[4]; - png_byte need[256]; - - need[0] = 0; /*got black*/ - memset(need+1, 1, (sizeof need)-2); /*need these*/ - need[255] = 0; /*but not white*/ - - while (i<70) - { - png_byte b; - - if (j==0) - { - make_four_random_bytes(palette_seed, random_bytes); - j = 4; - } - - b = random_bytes[--j]; - if (need[b]) - { - values[i][1] = b; - values[i][2] = b; - values[i++][3] = b; - } - } - } - - /* Finally add 192 colors at random - don't worry about matches to things we - * already have, chance is less than 1/65536. Don't worry about grays, - * chance is the same, so we get a duplicate or extra gray less than 1 time - * in 170. - */ - for (; i<256; ++i) - make_four_random_bytes(palette_seed, values[i]); - - /* Fill in the alpha values in the first byte. Just use all possible values - * (0..255) in an apparently random order: - */ - { - store_palette_entry *palette; - png_byte selector[4]; - - make_four_random_bytes(palette_seed, selector); - - if (do_tRNS) - for (i=0; i<256; ++i) - values[i][0] = (png_byte)(i ^ selector[0]); - - else - for (i=0; i<256; ++i) - values[i][0] = 255; /* no transparency/tRNS chunk */ - - /* 'values' contains 256 ARGB values, but we only need 'npalette'. - * 'npalette' will always be a power of 2: 2, 4, 16 or 256. In the low - * bit depth cases select colors at random, else it is difficult to have - * a set of low bit depth palette test with any chance of a reasonable - * range of colors. Do this by randomly permuting values into the low - * 'npalette' entries using an XOR mask generated here. This also - * permutes the npalette == 256 case in a potentially useful way (there is - * no relationship between palette index and the color value therein!) - */ - palette = store_write_palette(ps, npalette); - - for (i=0; i 0) - png_set_tRNS(pp, pi, tRNS, j, 0/*color*/); -# endif - } -} - -/* The number of passes is related to the interlace type. There was no libpng - * API to determine this prior to 1.5, so we need an inquiry function: - */ -static int -npasses_from_interlace_type(png_const_structp pp, int interlace_type) -{ - switch (interlace_type) - { - default: - png_error(pp, "invalid interlace type"); - - case PNG_INTERLACE_NONE: - return 1; - - case PNG_INTERLACE_ADAM7: - return PNG_INTERLACE_ADAM7_PASSES; - } -} - -static unsigned int -bit_size(png_const_structp pp, png_byte colour_type, png_byte bit_depth) -{ - switch (colour_type) - { - default: png_error(pp, "invalid color type"); - - case 0: return bit_depth; - - case 2: return 3*bit_depth; - - case 3: return bit_depth; - - case 4: return 2*bit_depth; - - case 6: return 4*bit_depth; - } -} - -#define TRANSFORM_WIDTH 128U -#define TRANSFORM_ROWMAX (TRANSFORM_WIDTH*8U) -#define SIZE_ROWMAX (16*8U) /* 16 pixels, max 8 bytes each - 128 bytes */ -#define STANDARD_ROWMAX TRANSFORM_ROWMAX /* The larger of the two */ -#define SIZE_HEIGHTMAX 16 /* Maximum range of size images */ - -static size_t -transform_rowsize(png_const_structp pp, png_byte colour_type, - png_byte bit_depth) -{ - return (TRANSFORM_WIDTH * bit_size(pp, colour_type, bit_depth)) / 8; -} - -/* transform_width(pp, colour_type, bit_depth) current returns the same number - * every time, so just use a macro: - */ -#define transform_width(pp, colour_type, bit_depth) TRANSFORM_WIDTH - -static png_uint_32 -transform_height(png_const_structp pp, png_byte colour_type, png_byte bit_depth) -{ - switch (bit_size(pp, colour_type, bit_depth)) - { - case 1: - case 2: - case 4: - return 1; /* Total of 128 pixels */ - - case 8: - return 2; /* Total of 256 pixels/bytes */ - - case 16: - return 512; /* Total of 65536 pixels */ - - case 24: - case 32: - return 512; /* 65536 pixels */ - - case 48: - case 64: - return 2048;/* 4 x 65536 pixels. */ -# define TRANSFORM_HEIGHTMAX 2048 - - default: - return 0; /* Error, will be caught later */ - } -} - -#ifdef PNG_READ_SUPPORTED -/* The following can only be defined here, now we have the definitions - * of the transform image sizes. - */ -static png_uint_32 -standard_width(png_const_structp pp, png_uint_32 id) -{ - png_uint_32 width = WIDTH_FROM_ID(id); - UNUSED(pp) - - if (width == 0) - width = transform_width(pp, COL_FROM_ID(id), DEPTH_FROM_ID(id)); - - return width; -} - -static png_uint_32 -standard_height(png_const_structp pp, png_uint_32 id) -{ - png_uint_32 height = HEIGHT_FROM_ID(id); - - if (height == 0) - height = transform_height(pp, COL_FROM_ID(id), DEPTH_FROM_ID(id)); - - return height; -} - -static png_uint_32 -standard_rowsize(png_const_structp pp, png_uint_32 id) -{ - png_uint_32 width = standard_width(pp, id); - - /* This won't overflow: */ - width *= bit_size(pp, COL_FROM_ID(id), DEPTH_FROM_ID(id)); - return (width + 7) / 8; -} -#endif /* PNG_READ_SUPPORTED */ - -static void -transform_row(png_const_structp pp, png_byte buffer[TRANSFORM_ROWMAX], - png_byte colour_type, png_byte bit_depth, png_uint_32 y) -{ - png_uint_32 v = y << 7; - png_uint_32 i = 0; - - switch (bit_size(pp, colour_type, bit_depth)) - { - case 1: - while (i<128/8) buffer[i] = (png_byte)(v & 0xff), v += 17, ++i; - return; - - case 2: - while (i<128/4) buffer[i] = (png_byte)(v & 0xff), v += 33, ++i; - return; - - case 4: - while (i<128/2) buffer[i] = (png_byte)(v & 0xff), v += 65, ++i; - return; - - case 8: - /* 256 bytes total, 128 bytes in each row set as follows: */ - while (i<128) buffer[i] = (png_byte)(v & 0xff), ++v, ++i; - return; - - case 16: - /* Generate all 65536 pixel values in order, which includes the 8 bit - * GA case as well as the 16 bit G case. - */ - while (i<128) - { - buffer[2*i] = (png_byte)((v>>8) & 0xff); - buffer[2*i+1] = (png_byte)(v & 0xff); - ++v; - ++i; - } - - return; - - case 24: - /* 65535 pixels, but rotate the values. */ - while (i<128) - { - /* Three bytes per pixel, r, g, b, make b by r^g */ - buffer[3*i+0] = (png_byte)((v >> 8) & 0xff); - buffer[3*i+1] = (png_byte)(v & 0xff); - buffer[3*i+2] = (png_byte)(((v >> 8) ^ v) & 0xff); - ++v; - ++i; - } - - return; - - case 32: - /* 65535 pixels, r, g, b, a; just replicate */ - while (i<128) - { - buffer[4*i+0] = (png_byte)((v >> 8) & 0xff); - buffer[4*i+1] = (png_byte)(v & 0xff); - buffer[4*i+2] = (png_byte)((v >> 8) & 0xff); - buffer[4*i+3] = (png_byte)(v & 0xff); - ++v; - ++i; - } - - return; - - case 48: - /* y is maximum 2047, giving 4x65536 pixels, make 'r' increase by 1 at - * each pixel, g increase by 257 (0x101) and 'b' by 0x1111: - */ - while (i<128) - { - png_uint_32 t = v++; - buffer[6*i+0] = (png_byte)((t >> 8) & 0xff); - buffer[6*i+1] = (png_byte)(t & 0xff); - t *= 257; - buffer[6*i+2] = (png_byte)((t >> 8) & 0xff); - buffer[6*i+3] = (png_byte)(t & 0xff); - t *= 17; - buffer[6*i+4] = (png_byte)((t >> 8) & 0xff); - buffer[6*i+5] = (png_byte)(t & 0xff); - ++i; - } - - return; - - case 64: - /* As above in the 32 bit case. */ - while (i<128) - { - png_uint_32 t = v++; - buffer[8*i+0] = (png_byte)((t >> 8) & 0xff); - buffer[8*i+1] = (png_byte)(t & 0xff); - buffer[8*i+4] = (png_byte)((t >> 8) & 0xff); - buffer[8*i+5] = (png_byte)(t & 0xff); - t *= 257; - buffer[8*i+2] = (png_byte)((t >> 8) & 0xff); - buffer[8*i+3] = (png_byte)(t & 0xff); - buffer[8*i+6] = (png_byte)((t >> 8) & 0xff); - buffer[8*i+7] = (png_byte)(t & 0xff); - ++i; - } - return; - - default: - break; - } - - png_error(pp, "internal error"); -} - -/* This is just to do the right cast - could be changed to a function to check - * 'bd' but there isn't much point. - */ -#define DEPTH(bd) ((png_byte)(1U << (bd))) - -/* This is just a helper for compiling on minimal systems with no write - * interlacing support. - */ -#ifndef PNG_WRITE_INTERLACING_SUPPORTED -# define png_set_interlace_handling(a) (1) -#endif - -/* Make a standardized image given a an image colour type, bit depth and - * interlace type. The standard images have a very restricted range of - * rows and heights and are used for testing transforms rather than image - * layout details. See make_size_images below for a way to make images - * that test odd sizes along with the libpng interlace handling. - */ -static void -make_transform_image(png_store* PNG_CONST ps, png_byte PNG_CONST colour_type, - png_byte PNG_CONST bit_depth, unsigned int palette_number, - int interlace_type, png_const_charp name) -{ - context(ps, fault); - - Try - { - png_infop pi; - png_structp pp = set_store_for_write(ps, &pi, name); - png_uint_32 h; - - /* In the event of a problem return control to the Catch statement below - * to do the clean up - it is not possible to 'return' directly from a Try - * block. - */ - if (pp == NULL) - Throw ps; - - h = transform_height(pp, colour_type, bit_depth); - - png_set_IHDR(pp, pi, transform_width(pp, colour_type, bit_depth), h, - bit_depth, colour_type, interlace_type, - PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); - -#ifdef PNG_TEXT_SUPPORTED -# if defined(PNG_READ_zTXt_SUPPORTED) && defined(PNG_WRITE_zTXt_SUPPORTED) -# define TEXT_COMPRESSION PNG_TEXT_COMPRESSION_zTXt -# else -# define TEXT_COMPRESSION PNG_TEXT_COMPRESSION_NONE -# endif - { - static char key[] = "image name"; /* must be writeable */ - size_t pos; - png_text text; - char copy[FILE_NAME_SIZE]; - - /* Use a compressed text string to test the correct interaction of text - * compression and IDAT compression. - */ - text.compression = TEXT_COMPRESSION; - text.key = key; - /* Yuck: the text must be writable! */ - pos = safecat(copy, sizeof copy, 0, ps->wname); - text.text = copy; - text.text_length = pos; - text.itxt_length = 0; - text.lang = 0; - text.lang_key = 0; - - png_set_text(pp, pi, &text, 1); - } -#endif - - if (colour_type == 3) /* palette */ - init_standard_palette(ps, pp, pi, 1U << bit_depth, 1/*do tRNS*/); - - png_write_info(pp, pi); - - if (png_get_rowbytes(pp, pi) != - transform_rowsize(pp, colour_type, bit_depth)) - png_error(pp, "row size incorrect"); - - else - { - /* Somewhat confusingly this must be called *after* png_write_info - * because if it is called before, the information in *pp has not been - * updated to reflect the interlaced image. - */ - int npasses = png_set_interlace_handling(pp); - int pass; - - if (npasses != npasses_from_interlace_type(pp, interlace_type)) - png_error(pp, "write: png_set_interlace_handling failed"); - - for (pass=0; passtest, sizeof ps->test, 0, "make standard images"); - - /* Use next_format to enumerate all the combinations we test, including - * generating multiple low bit depth palette images. - */ - while (next_format(&colour_type, &bit_depth, &palette_number)) - { - int interlace_type; - -# ifdef PNG_WRITE_INTERLACING_SUPPORTED - for (interlace_type = PNG_INTERLACE_NONE; - interlace_type < PNG_INTERLACE_LAST; ++interlace_type) -# else - interlace_type = PNG_INTERLACE_NONE; -# endif - { - char name[FILE_NAME_SIZE]; - - standard_name(name, sizeof name, 0, colour_type, bit_depth, - palette_number, interlace_type, 0, 0, 0); - make_transform_image(ps, colour_type, bit_depth, palette_number, - interlace_type, name); - } - } -} - -/* The following two routines use the PNG interlace support macros from - * png.h to interlace or deinterlace rows. - */ -static void -interlace_row(png_bytep buffer, png_const_bytep imageRow, - unsigned int pixel_size, png_uint_32 w, int pass) -{ - png_uint_32 xin, xout, xstep; - - /* Note that this can, trivially, be optimized to a memcpy on pass 7, the - * code is presented this way to make it easier to understand. In practice - * consult the code in the libpng source to see other ways of doing this. - */ - xin = PNG_PASS_START_COL(pass); - xstep = 1U<= 8) - *buffer++ = (png_byte)y++, bit_width -= 8; - - /* There may be up to 7 remaining bits, these go in the most significant - * bits of the byte. - */ - if (bit_width > 0) - { - png_uint_32 mask = (1U<<(8-bit_width))-1; - *buffer = (png_byte)((*buffer & mask) | (y & ~mask)); - } -} - -static void -make_size_image(png_store* PNG_CONST ps, png_byte PNG_CONST colour_type, - png_byte PNG_CONST bit_depth, int PNG_CONST interlace_type, - png_uint_32 PNG_CONST w, png_uint_32 PNG_CONST h, - int PNG_CONST do_interlace) -{ - context(ps, fault); - - Try - { - png_infop pi; - png_structp pp; - unsigned int pixel_size; - - /* Make a name and get an appropriate id for the store: */ - char name[FILE_NAME_SIZE]; - PNG_CONST png_uint_32 id = FILEID(colour_type, bit_depth, 0/*palette*/, - interlace_type, w, h, do_interlace); - - standard_name_from_id(name, sizeof name, 0, id); - pp = set_store_for_write(ps, &pi, name); - - /* In the event of a problem return control to the Catch statement below - * to do the clean up - it is not possible to 'return' directly from a Try - * block. - */ - if (pp == NULL) - Throw ps; - - png_set_IHDR(pp, pi, w, h, bit_depth, colour_type, interlace_type, - PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); - -#ifdef PNG_TEXT_SUPPORTED - { - static char key[] = "image name"; /* must be writeable */ - size_t pos; - png_text text; - char copy[FILE_NAME_SIZE]; - - /* Use a compressed text string to test the correct interaction of text - * compression and IDAT compression. - */ - text.compression = TEXT_COMPRESSION; - text.key = key; - /* Yuck: the text must be writable! */ - pos = safecat(copy, sizeof copy, 0, ps->wname); - text.text = copy; - text.text_length = pos; - text.itxt_length = 0; - text.lang = 0; - text.lang_key = 0; - - png_set_text(pp, pi, &text, 1); - } -#endif - - if (colour_type == 3) /* palette */ - init_standard_palette(ps, pp, pi, 1U << bit_depth, 0/*do tRNS*/); - - png_write_info(pp, pi); - - /* Calculate the bit size, divide by 8 to get the byte size - this won't - * overflow because we know the w values are all small enough even for - * a system where 'unsigned int' is only 16 bits. - */ - pixel_size = bit_size(pp, colour_type, bit_depth); - if (png_get_rowbytes(pp, pi) != ((w * pixel_size) + 7) / 8) - png_error(pp, "row size incorrect"); - - else - { - int npasses = npasses_from_interlace_type(pp, interlace_type); - png_uint_32 y; - int pass; -# ifdef PNG_WRITE_FILTER_SUPPORTED - int nfilter = PNG_FILTER_VALUE_LAST; -# endif - png_byte image[16][SIZE_ROWMAX]; - - /* To help consistent error detection make the parts of this buffer - * that aren't set below all '1': - */ - memset(image, 0xff, sizeof image); - - if (!do_interlace && npasses != png_set_interlace_handling(pp)) - png_error(pp, "write: png_set_interlace_handling failed"); - - /* Prepare the whole image first to avoid making it 7 times: */ - for (y=0; y 0) - { - /* Set to all 1's for error detection (libpng tends to - * set unset things to 0). - */ - memset(tempRow, 0xff, sizeof tempRow); - interlace_row(tempRow, row, pixel_size, w, pass); - row = tempRow; - } - else - continue; - } - -# ifdef PNG_WRITE_FILTER_SUPPORTED - /* Only get to here if the row has some pixels in it, set the - * filters to 'all' for the very first row and thereafter to a - * single filter. It isn't well documented, but png_set_filter - * does accept a filter number (per the spec) as well as a bit - * mask. - * - * The apparent wackiness of decrementing nfilter rather than - * incrementing is so that Paeth gets used in all images bigger - * than 1 row - it's the tricky one. - */ - png_set_filter(pp, 0/*method*/, - nfilter >= PNG_FILTER_VALUE_LAST ? PNG_ALL_FILTERS : nfilter); - - if (nfilter-- == 0) - nfilter = PNG_FILTER_VALUE_LAST-1; -# endif - - png_write_row(pp, row); - } - } - } - -#ifdef PNG_TEXT_SUPPORTED - { - static char key[] = "end marker"; - static char comment[] = "end"; - png_text text; - - /* Use a compressed text string to test the correct interaction of text - * compression and IDAT compression. - */ - text.compression = TEXT_COMPRESSION; - text.key = key; - text.text = comment; - text.text_length = (sizeof comment)-1; - text.itxt_length = 0; - text.lang = 0; - text.lang_key = 0; - - png_set_text(pp, pi, &text, 1); - } -#endif - - png_write_end(pp, pi); - - /* And store this under the appropriate id, then clean up. */ - store_storefile(ps, id); - - store_write_reset(ps); - } - - Catch(fault) - { - /* Use the png_store returned by the exception. This may help the compiler - * because 'ps' is not used in this branch of the setjmp. Note that fault - * and ps will always be the same value. - */ - store_write_reset(fault); - } -} - -static void -make_size(png_store* PNG_CONST ps, png_byte PNG_CONST colour_type, int bdlo, - int PNG_CONST bdhi) -{ - for (; bdlo <= bdhi; ++bdlo) - { - png_uint_32 width; - - for (width = 1; width <= 16; ++width) - { - png_uint_32 height; - - for (height = 1; height <= 16; ++height) - { - /* The four combinations of DIY interlace and interlace or not - - * no interlace + DIY should be identical to no interlace with - * libpng doing it. - */ - make_size_image(ps, colour_type, DEPTH(bdlo), PNG_INTERLACE_NONE, - width, height, 0); - make_size_image(ps, colour_type, DEPTH(bdlo), PNG_INTERLACE_NONE, - width, height, 1); -# ifdef PNG_WRITE_INTERLACING_SUPPORTED - make_size_image(ps, colour_type, DEPTH(bdlo), PNG_INTERLACE_ADAM7, - width, height, 0); -# endif - make_size_image(ps, colour_type, DEPTH(bdlo), PNG_INTERLACE_ADAM7, - width, height, 1); - } - } - } -} - -static void -make_size_images(png_store *ps) -{ - /* This is in case of errors. */ - safecat(ps->test, sizeof ps->test, 0, "make size images"); - - /* Arguments are colour_type, low bit depth, high bit depth - */ - make_size(ps, 0, 0, WRITE_BDHI); - make_size(ps, 2, 3, WRITE_BDHI); - make_size(ps, 3, 0, 3 /*palette: max 8 bits*/); - make_size(ps, 4, 3, WRITE_BDHI); - make_size(ps, 6, 3, WRITE_BDHI); -} - -#ifdef PNG_READ_SUPPORTED -/* Return a row based on image id and 'y' for checking: */ -static void -standard_row(png_const_structp pp, png_byte std[STANDARD_ROWMAX], - png_uint_32 id, png_uint_32 y) -{ - if (WIDTH_FROM_ID(id) == 0) - transform_row(pp, std, COL_FROM_ID(id), DEPTH_FROM_ID(id), y); - else - size_row(std, WIDTH_FROM_ID(id) * bit_size(pp, COL_FROM_ID(id), - DEPTH_FROM_ID(id)), y); -} -#endif /* PNG_READ_SUPPORTED */ - -/* Tests - individual test cases */ -/* Like 'make_standard' but errors are deliberately introduced into the calls - * to ensure that they get detected - it should not be possible to write an - * invalid image with libpng! - */ -/* TODO: the 'set' functions can probably all be made to take a - * png_const_structp rather than a modifiable one. - */ -#ifdef PNG_WARNINGS_SUPPORTED -static void -sBIT0_error_fn(png_structp pp, png_infop pi) -{ - /* 0 is invalid... */ - png_color_8 bad; - bad.red = bad.green = bad.blue = bad.gray = bad.alpha = 0; - png_set_sBIT(pp, pi, &bad); -} - -static void -sBIT_error_fn(png_structp pp, png_infop pi) -{ - png_byte bit_depth; - png_color_8 bad; - - if (png_get_color_type(pp, pi) == PNG_COLOR_TYPE_PALETTE) - bit_depth = 8; - - else - bit_depth = png_get_bit_depth(pp, pi); - - /* Now we know the bit depth we can easily generate an invalid sBIT entry */ - bad.red = bad.green = bad.blue = bad.gray = bad.alpha = - (png_byte)(bit_depth+1); - png_set_sBIT(pp, pi, &bad); -} - -static PNG_CONST struct -{ - void (*fn)(png_structp, png_infop); - PNG_CONST char *msg; - unsigned int warning :1; /* the error is a warning... */ -} error_test[] = - { - /* no warnings makes these errors undetectable. */ - { sBIT0_error_fn, "sBIT(0): failed to detect error", 1 }, - { sBIT_error_fn, "sBIT(too big): failed to detect error", 1 }, - }; - -static void -make_error(png_store* volatile psIn, png_byte PNG_CONST colour_type, - png_byte bit_depth, int interlace_type, int test, png_const_charp name) -{ - png_store * volatile ps = psIn; - - context(ps, fault); - - Try - { - png_structp pp; - png_infop pi; - - pp = set_store_for_write(ps, &pi, name); - - if (pp == NULL) - Throw ps; - - png_set_IHDR(pp, pi, transform_width(pp, colour_type, bit_depth), - transform_height(pp, colour_type, bit_depth), bit_depth, colour_type, - interlace_type, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); - - if (colour_type == 3) /* palette */ - init_standard_palette(ps, pp, pi, 1U << bit_depth, 0/*do tRNS*/); - - /* Time for a few errors; these are in various optional chunks, the - * standard tests test the standard chunks pretty well. - */ -# define exception__prev exception_prev_1 -# define exception__env exception_env_1 - Try - { - /* Expect this to throw: */ - ps->expect_error = !error_test[test].warning; - ps->expect_warning = error_test[test].warning; - ps->saw_warning = 0; - error_test[test].fn(pp, pi); - - /* Normally the error is only detected here: */ - png_write_info(pp, pi); - - /* And handle the case where it was only a warning: */ - if (ps->expect_warning && ps->saw_warning) - Throw ps; - - /* If we get here there is a problem, we have success - no error or - * no warning - when we shouldn't have success. Log an error. - */ - store_log(ps, pp, error_test[test].msg, 1 /*error*/); - } - - Catch (fault) - ps = fault; /* expected exit, make sure ps is not clobbered */ -#undef exception__prev -#undef exception__env - - /* And clear these flags */ - ps->expect_error = 0; - ps->expect_warning = 0; - - /* Now write the whole image, just to make sure that the detected, or - * undetected, errro has not created problems inside libpng. - */ - if (png_get_rowbytes(pp, pi) != - transform_rowsize(pp, colour_type, bit_depth)) - png_error(pp, "row size incorrect"); - - else - { - png_uint_32 h = transform_height(pp, colour_type, bit_depth); - int npasses = png_set_interlace_handling(pp); - int pass; - - if (npasses != npasses_from_interlace_type(pp, interlace_type)) - png_error(pp, "write: png_set_interlace_handling failed"); - - for (pass=0; passthis, colour_type, DEPTH(bdlo), interlace_type, - test, name); - - if (fail(pm)) - return 0; - } - } - } - - return 1; /* keep going */ -} -#endif /* PNG_WARNINGS_SUPPORTED */ - -static void -perform_error_test(png_modifier *pm) -{ -#ifdef PNG_WARNINGS_SUPPORTED /* else there are no cases that work! */ - /* Need to do this here because we just write in this test. */ - safecat(pm->this.test, sizeof pm->this.test, 0, "error test"); - - if (!make_errors(pm, 0, 0, WRITE_BDHI)) - return; - - if (!make_errors(pm, 2, 3, WRITE_BDHI)) - return; - - if (!make_errors(pm, 3, 0, 3)) - return; - - if (!make_errors(pm, 4, 3, WRITE_BDHI)) - return; - - if (!make_errors(pm, 6, 3, WRITE_BDHI)) - return; -#else - UNUSED(pm) -#endif -} - -/* This is just to validate the internal PNG formatting code - if this fails - * then the warning messages the library outputs will probably be garbage. - */ -static void -perform_formatting_test(png_store *volatile ps) -{ -#ifdef PNG_TIME_RFC1123_SUPPORTED - /* The handle into the formatting code is the RFC1123 support; this test does - * nothing if that is compiled out. - */ - context(ps, fault); - - Try - { - png_const_charp correct = "29 Aug 2079 13:53:60 +0000"; - png_const_charp result; -# if PNG_LIBPNG_VER >= 10600 - char timestring[29]; -# endif - png_structp pp; - png_time pt; - - pp = set_store_for_write(ps, NULL, "libpng formatting test"); - - if (pp == NULL) - Throw ps; - - - /* Arbitrary settings: */ - pt.year = 2079; - pt.month = 8; - pt.day = 29; - pt.hour = 13; - pt.minute = 53; - pt.second = 60; /* a leap second */ - -# if PNG_LIBPNG_VER < 10600 - result = png_convert_to_rfc1123(pp, &pt); -# else - if (png_convert_to_rfc1123_buffer(timestring, &pt)) - result = timestring; - - else - result = NULL; -# endif - - if (result == NULL) - png_error(pp, "png_convert_to_rfc1123 failed"); - - if (strcmp(result, correct) != 0) - { - size_t pos = 0; - char msg[128]; - - pos = safecat(msg, sizeof msg, pos, "png_convert_to_rfc1123("); - pos = safecat(msg, sizeof msg, pos, correct); - pos = safecat(msg, sizeof msg, pos, ") returned: '"); - pos = safecat(msg, sizeof msg, pos, result); - pos = safecat(msg, sizeof msg, pos, "'"); - - png_error(pp, msg); - } - - store_write_reset(ps); - } - - Catch(fault) - { - store_write_reset(fault); - } -#else - UNUSED(ps) -#endif -} - -#ifdef PNG_READ_SUPPORTED -/* Because we want to use the same code in both the progressive reader and the - * sequential reader it is necessary to deal with the fact that the progressive - * reader callbacks only have one parameter (png_get_progressive_ptr()), so this - * must contain all the test parameters and all the local variables directly - * accessible to the sequential reader implementation. - * - * The technique adopted is to reinvent part of what Dijkstra termed a - * 'display'; an array of pointers to the stack frames of enclosing functions so - * that a nested function definition can access the local (C auto) variables of - * the functions that contain its definition. In fact C provides the first - * pointer (the local variables - the stack frame pointer) and the last (the - * global variables - the BCPL global vector typically implemented as global - * addresses), this code requires one more pointer to make the display - the - * local variables (and function call parameters) of the function that actually - * invokes either the progressive or sequential reader. - * - * Perhaps confusingly this technique is confounded with classes - the - * 'standard_display' defined here is sub-classed as the 'gamma_display' below. - * A gamma_display is a standard_display, taking advantage of the ANSI-C - * requirement that the pointer to the first member of a structure must be the - * same as the pointer to the structure. This allows us to reuse standard_ - * functions in the gamma test code; something that could not be done with - * nested functions! - */ -typedef struct standard_display -{ - png_store* ps; /* Test parameters (passed to the function) */ - png_byte colour_type; - png_byte bit_depth; - png_byte red_sBIT; /* Input data sBIT values. */ - png_byte green_sBIT; - png_byte blue_sBIT; - png_byte alpha_sBIT; - int interlace_type; - png_uint_32 id; /* Calculated file ID */ - png_uint_32 w; /* Width of image */ - png_uint_32 h; /* Height of image */ - int npasses; /* Number of interlaced passes */ - png_uint_32 pixel_size; /* Width of one pixel in bits */ - png_uint_32 bit_width; /* Width of output row in bits */ - size_t cbRow; /* Bytes in a row of the output image */ - int do_interlace; /* Do interlacing internally */ - int is_transparent; /* Transparency information was present. */ - int speed; /* Doing a speed test */ - int use_update_info;/* Call update_info, not start_image */ - struct - { - png_uint_16 red; - png_uint_16 green; - png_uint_16 blue; - } transparent; /* The transparent color, if set. */ - int npalette; /* Number of entries in the palette. */ - store_palette - palette; -} standard_display; - -static void -standard_display_init(standard_display *dp, png_store* ps, png_uint_32 id, - int do_interlace, int use_update_info) -{ - memset(dp, 0, sizeof *dp); - - dp->ps = ps; - dp->colour_type = COL_FROM_ID(id); - dp->bit_depth = DEPTH_FROM_ID(id); - if (dp->bit_depth < 1 || dp->bit_depth > 16) - internal_error(ps, "internal: bad bit depth"); - if (dp->colour_type == 3) - dp->red_sBIT = dp->blue_sBIT = dp->green_sBIT = dp->alpha_sBIT = 8; - else - dp->red_sBIT = dp->blue_sBIT = dp->green_sBIT = dp->alpha_sBIT = - dp->bit_depth; - dp->interlace_type = INTERLACE_FROM_ID(id); - dp->id = id; - /* All the rest are filled in after the read_info: */ - dp->w = 0; - dp->h = 0; - dp->npasses = 0; - dp->pixel_size = 0; - dp->bit_width = 0; - dp->cbRow = 0; - dp->do_interlace = do_interlace; - dp->is_transparent = 0; - dp->speed = ps->speed; - dp->use_update_info = use_update_info; - dp->npalette = 0; - /* Preset the transparent color to black: */ - memset(&dp->transparent, 0, sizeof dp->transparent); - /* Preset the palette to full intensity/opaque througout: */ - memset(dp->palette, 0xff, sizeof dp->palette); -} - -/* Initialize the palette fields - this must be done later because the palette - * comes from the particular png_store_file that is selected. - */ -static void -standard_palette_init(standard_display *dp) -{ - store_palette_entry *palette = store_current_palette(dp->ps, &dp->npalette); - - /* The remaining entries remain white/opaque. */ - if (dp->npalette > 0) - { - int i = dp->npalette; - memcpy(dp->palette, palette, i * sizeof *palette); - - /* Check for a non-opaque palette entry: */ - while (--i >= 0) - if (palette[i].alpha < 255) - break; - -# ifdef __GNUC__ - /* GCC can't handle the more obviously optimizable version. */ - if (i >= 0) - dp->is_transparent = 1; - else - dp->is_transparent = 0; -# else - dp->is_transparent = (i >= 0); -# endif - } -} - -/* Utility to read the palette from the PNG file and convert it into - * store_palette format. This returns 1 if there is any transparency in the - * palette (it does not check for a transparent colour in the non-palette case.) - */ -static int -read_palette(store_palette palette, int *npalette, png_const_structp pp, - png_infop pi) -{ - png_colorp pal; - png_bytep trans_alpha; - int num; - - pal = 0; - *npalette = -1; - - if (png_get_PLTE(pp, pi, &pal, npalette) & PNG_INFO_PLTE) - { - int i = *npalette; - - if (i <= 0 || i > 256) - png_error(pp, "validate: invalid PLTE count"); - - while (--i >= 0) - { - palette[i].red = pal[i].red; - palette[i].green = pal[i].green; - palette[i].blue = pal[i].blue; - } - - /* Mark the remainder of the entries with a flag value (other than - * white/opaque which is the flag value stored above.) - */ - memset(palette + *npalette, 126, (256-*npalette) * sizeof *palette); - } - - else /* !png_get_PLTE */ - { - if (*npalette != (-1)) - png_error(pp, "validate: invalid PLTE result"); - /* But there is no palette, so record this: */ - *npalette = 0; - memset(palette, 113, sizeof (store_palette)); - } - - trans_alpha = 0; - num = 2; /* force error below */ - if ((png_get_tRNS(pp, pi, &trans_alpha, &num, 0) & PNG_INFO_tRNS) != 0 && - (trans_alpha != NULL || num != 1/*returns 1 for a transparent color*/) && - /* Oops, if a palette tRNS gets expanded png_read_update_info (at least so - * far as 1.5.4) does not remove the trans_alpha pointer, only num_trans, - * so in the above call we get a success, we get a pointer (who knows what - * to) and we get num_trans == 0: - */ - !(trans_alpha != NULL && num == 0)) /* TODO: fix this in libpng. */ - { - int i; - - /* Any of these are crash-worthy - given the implementation of - * png_get_tRNS up to 1.5 an app won't crash if it just checks the - * result above and fails to check that the variables it passed have - * actually been filled in! Note that if the app were to pass the - * last, png_color_16p, variable too it couldn't rely on this. - */ - if (trans_alpha == NULL || num <= 0 || num > 256 || num > *npalette) - png_error(pp, "validate: unexpected png_get_tRNS (palette) result"); - - for (i=0; iis_transparent) - png_error(pp, "validate: palette transparency changed"); - - if (npalette != dp->npalette) - { - size_t pos = 0; - char msg[64]; - - pos = safecat(msg, sizeof msg, pos, "validate: palette size changed: "); - pos = safecatn(msg, sizeof msg, pos, dp->npalette); - pos = safecat(msg, sizeof msg, pos, " -> "); - pos = safecatn(msg, sizeof msg, pos, npalette); - png_error(pp, msg); - } - - { - int i = npalette; /* npalette is aliased */ - - while (--i >= 0) - if (palette[i].red != dp->palette[i].red || - palette[i].green != dp->palette[i].green || - palette[i].blue != dp->palette[i].blue || - palette[i].alpha != dp->palette[i].alpha) - png_error(pp, "validate: PLTE or tRNS chunk changed"); - } -} - -/* By passing a 'standard_display' the progressive callbacks can be used - * directly by the sequential code, the functions suffixed "_imp" are the - * implementations, the functions without the suffix are the callbacks. - * - * The code for the info callback is split into two because this callback calls - * png_read_update_info or png_start_read_image and what gets called depends on - * whether the info needs updating (we want to test both calls in pngvalid.) - */ -static void -standard_info_part1(standard_display *dp, png_structp pp, png_infop pi) -{ - if (png_get_bit_depth(pp, pi) != dp->bit_depth) - png_error(pp, "validate: bit depth changed"); - - if (png_get_color_type(pp, pi) != dp->colour_type) - png_error(pp, "validate: color type changed"); - - if (png_get_filter_type(pp, pi) != PNG_FILTER_TYPE_BASE) - png_error(pp, "validate: filter type changed"); - - if (png_get_interlace_type(pp, pi) != dp->interlace_type) - png_error(pp, "validate: interlacing changed"); - - if (png_get_compression_type(pp, pi) != PNG_COMPRESSION_TYPE_BASE) - png_error(pp, "validate: compression type changed"); - - dp->w = png_get_image_width(pp, pi); - - if (dp->w != standard_width(pp, dp->id)) - png_error(pp, "validate: image width changed"); - - dp->h = png_get_image_height(pp, pi); - - if (dp->h != standard_height(pp, dp->id)) - png_error(pp, "validate: image height changed"); - - /* Record (but don't check at present) the input sBIT according to the colour - * type information. - */ - { - png_color_8p sBIT = 0; - - if (png_get_sBIT(pp, pi, &sBIT) & PNG_INFO_sBIT) - { - int sBIT_invalid = 0; - - if (sBIT == 0) - png_error(pp, "validate: unexpected png_get_sBIT result"); - - if (dp->colour_type & PNG_COLOR_MASK_COLOR) - { - if (sBIT->red == 0 || sBIT->red > dp->bit_depth) - sBIT_invalid = 1; - else - dp->red_sBIT = sBIT->red; - - if (sBIT->green == 0 || sBIT->green > dp->bit_depth) - sBIT_invalid = 1; - else - dp->green_sBIT = sBIT->green; - - if (sBIT->blue == 0 || sBIT->blue > dp->bit_depth) - sBIT_invalid = 1; - else - dp->blue_sBIT = sBIT->blue; - } - - else /* !COLOR */ - { - if (sBIT->gray == 0 || sBIT->gray > dp->bit_depth) - sBIT_invalid = 1; - else - dp->blue_sBIT = dp->green_sBIT = dp->red_sBIT = sBIT->gray; - } - - /* All 8 bits in tRNS for a palette image are significant - see the - * spec. - */ - if (dp->colour_type & PNG_COLOR_MASK_ALPHA) - { - if (sBIT->alpha == 0 || sBIT->alpha > dp->bit_depth) - sBIT_invalid = 1; - else - dp->alpha_sBIT = sBIT->alpha; - } - - if (sBIT_invalid) - png_error(pp, "validate: sBIT value out of range"); - } - } - - /* Important: this is validating the value *before* any transforms have been - * put in place. It doesn't matter for the standard tests, where there are - * no transforms, but it does for other tests where rowbytes may change after - * png_read_update_info. - */ - if (png_get_rowbytes(pp, pi) != standard_rowsize(pp, dp->id)) - png_error(pp, "validate: row size changed"); - - /* Validate the colour type 3 palette (this can be present on other color - * types.) - */ - standard_palette_validate(dp, pp, pi); - - /* In any case always check for a tranparent color (notice that the - * colour type 3 case must not give a successful return on the get_tRNS call - * with these arguments!) - */ - { - png_color_16p trans_color = 0; - - if (png_get_tRNS(pp, pi, 0, 0, &trans_color) & PNG_INFO_tRNS) - { - if (trans_color == 0) - png_error(pp, "validate: unexpected png_get_tRNS (color) result"); - - switch (dp->colour_type) - { - case 0: - dp->transparent.red = dp->transparent.green = dp->transparent.blue = - trans_color->gray; - dp->is_transparent = 1; - break; - - case 2: - dp->transparent.red = trans_color->red; - dp->transparent.green = trans_color->green; - dp->transparent.blue = trans_color->blue; - dp->is_transparent = 1; - break; - - case 3: - /* Not expected because it should result in the array case - * above. - */ - png_error(pp, "validate: unexpected png_get_tRNS result"); - break; - - default: - png_error(pp, "validate: invalid tRNS chunk with alpha image"); - } - } - } - - /* Read the number of passes - expected to match the value used when - * creating the image (interlaced or not). This has the side effect of - * turning on interlace handling (if do_interlace is not set.) - */ - dp->npasses = npasses_from_interlace_type(pp, dp->interlace_type); - if (!dp->do_interlace && dp->npasses != png_set_interlace_handling(pp)) - png_error(pp, "validate: file changed interlace type"); - - /* Caller calls png_read_update_info or png_start_read_image now, then calls - * part2. - */ -} - -/* This must be called *after* the png_read_update_info call to get the correct - * 'rowbytes' value, otherwise png_get_rowbytes will refer to the untransformed - * image. - */ -static void -standard_info_part2(standard_display *dp, png_const_structp pp, - png_const_infop pi, int nImages) -{ - /* Record cbRow now that it can be found. */ - dp->pixel_size = bit_size(pp, png_get_color_type(pp, pi), - png_get_bit_depth(pp, pi)); - dp->bit_width = png_get_image_width(pp, pi) * dp->pixel_size; - dp->cbRow = png_get_rowbytes(pp, pi); - - /* Validate the rowbytes here again. */ - if (dp->cbRow != (dp->bit_width+7)/8) - png_error(pp, "bad png_get_rowbytes calculation"); - - /* Then ensure there is enough space for the output image(s). */ - store_ensure_image(dp->ps, pp, nImages, dp->cbRow, dp->h); -} - -static void -standard_info_imp(standard_display *dp, png_structp pp, png_infop pi, - int nImages) -{ - /* Note that the validation routine has the side effect of turning on - * interlace handling in the subsequent code. - */ - standard_info_part1(dp, pp, pi); - - /* And the info callback has to call this (or png_read_update_info - see - * below in the png_modifier code for that variant. - */ - if (dp->use_update_info) - { - /* For debugging the effect of multiple calls: */ - int i = dp->use_update_info; - while (i-- > 0) - png_read_update_info(pp, pi); - } - - else - png_start_read_image(pp); - - /* Validate the height, width and rowbytes plus ensure that sufficient buffer - * exists for decoding the image. - */ - standard_info_part2(dp, pp, pi, nImages); -} - -static void -standard_info(png_structp pp, png_infop pi) -{ - standard_display *dp = voidcast(standard_display*, - png_get_progressive_ptr(pp)); - - /* Call with nImages==1 because the progressive reader can only produce one - * image. - */ - standard_info_imp(dp, pp, pi, 1 /*only one image*/); -} - -static void -progressive_row(png_structp ppIn, png_bytep new_row, png_uint_32 y, int pass) -{ - png_const_structp pp = ppIn; - PNG_CONST standard_display *dp = voidcast(standard_display*, - png_get_progressive_ptr(pp)); - - /* When handling interlacing some rows will be absent in each pass, the - * callback still gets called, but with a NULL pointer. This is checked - * in the 'else' clause below. We need our own 'cbRow', but we can't call - * png_get_rowbytes because we got no info structure. - */ - if (new_row != NULL) - { - png_bytep row; - - /* In the case where the reader doesn't do the interlace it gives - * us the y in the sub-image: - */ - if (dp->do_interlace && dp->interlace_type == PNG_INTERLACE_ADAM7) - { -#ifdef PNG_USER_TRANSFORM_INFO_SUPPORTED - /* Use this opportunity to validate the png 'current' APIs: */ - if (y != png_get_current_row_number(pp)) - png_error(pp, "png_get_current_row_number is broken"); - - if (pass != png_get_current_pass_number(pp)) - png_error(pp, "png_get_current_pass_number is broken"); -#endif - - y = PNG_ROW_FROM_PASS_ROW(y, pass); - } - - /* Validate this just in case. */ - if (y >= dp->h) - png_error(pp, "invalid y to progressive row callback"); - - row = store_image_row(dp->ps, pp, 0, y); - -#ifdef PNG_READ_INTERLACING_SUPPORTED - /* Combine the new row into the old: */ - if (dp->do_interlace) - { - if (dp->interlace_type == PNG_INTERLACE_ADAM7) - deinterlace_row(row, new_row, dp->pixel_size, dp->w, pass); - else - row_copy(row, new_row, dp->pixel_size * dp->w); - } - else - png_progressive_combine_row(pp, row, new_row); -#endif /* PNG_READ_INTERLACING_SUPPORTED */ - } - -#ifdef PNG_READ_INTERLACING_SUPPORTED - else if (dp->interlace_type == PNG_INTERLACE_ADAM7 && - PNG_ROW_IN_INTERLACE_PASS(y, pass) && - PNG_PASS_COLS(dp->w, pass) > 0) - png_error(pp, "missing row in progressive de-interlacing"); -#endif /* PNG_READ_INTERLACING_SUPPORTED */ -} - -static void -sequential_row(standard_display *dp, png_structp pp, png_infop pi, - PNG_CONST int iImage, PNG_CONST int iDisplay) -{ - PNG_CONST int npasses = dp->npasses; - PNG_CONST int do_interlace = dp->do_interlace && - dp->interlace_type == PNG_INTERLACE_ADAM7; - PNG_CONST png_uint_32 height = standard_height(pp, dp->id); - PNG_CONST png_uint_32 width = standard_width(pp, dp->id); - PNG_CONST png_store* ps = dp->ps; - int pass; - - for (pass=0; pass 0 && PNG_ROW_IN_INTERLACE_PASS(y, pass)) - { - /* Read the row into a pair of temporary buffers, then do the - * merge here into the output rows. - */ - png_byte row[STANDARD_ROWMAX], display[STANDARD_ROWMAX]; - - /* The following aids (to some extent) error detection - we can - * see where png_read_row wrote. Use opposite values in row and - * display to make this easier. Don't use 0xff (which is used in - * the image write code to fill unused bits) or 0 (which is a - * likely value to overwrite unused bits with). - */ - memset(row, 0xc5, sizeof row); - memset(display, 0x5c, sizeof display); - - png_read_row(pp, row, display); - - if (iImage >= 0) - deinterlace_row(store_image_row(ps, pp, iImage, y), row, - dp->pixel_size, dp->w, pass); - - if (iDisplay >= 0) - deinterlace_row(store_image_row(ps, pp, iDisplay, y), display, - dp->pixel_size, dp->w, pass); - } - } - else - png_read_row(pp, - iImage >= 0 ? store_image_row(ps, pp, iImage, y) : NULL, - iDisplay >= 0 ? store_image_row(ps, pp, iDisplay, y) : NULL); - } - } - - /* And finish the read operation (only really necessary if the caller wants - * to find additional data in png_info from chunks after the last IDAT.) - */ - png_read_end(pp, pi); -} - -#ifdef PNG_TEXT_SUPPORTED -static void -standard_check_text(png_const_structp pp, png_const_textp tp, - png_const_charp keyword, png_const_charp text) -{ - char msg[1024]; - size_t pos = safecat(msg, sizeof msg, 0, "text: "); - size_t ok; - - pos = safecat(msg, sizeof msg, pos, keyword); - pos = safecat(msg, sizeof msg, pos, ": "); - ok = pos; - - if (tp->compression != TEXT_COMPRESSION) - { - char buf[64]; - - sprintf(buf, "compression [%d->%d], ", TEXT_COMPRESSION, - tp->compression); - pos = safecat(msg, sizeof msg, pos, buf); - } - - if (tp->key == NULL || strcmp(tp->key, keyword) != 0) - { - pos = safecat(msg, sizeof msg, pos, "keyword \""); - if (tp->key != NULL) - { - pos = safecat(msg, sizeof msg, pos, tp->key); - pos = safecat(msg, sizeof msg, pos, "\", "); - } - - else - pos = safecat(msg, sizeof msg, pos, "null, "); - } - - if (tp->text == NULL) - pos = safecat(msg, sizeof msg, pos, "text lost, "); - - else - { - if (tp->text_length != strlen(text)) - { - char buf[64]; - sprintf(buf, "text length changed[%lu->%lu], ", - (unsigned long)strlen(text), (unsigned long)tp->text_length); - pos = safecat(msg, sizeof msg, pos, buf); - } - - if (strcmp(tp->text, text) != 0) - { - pos = safecat(msg, sizeof msg, pos, "text becomes \""); - pos = safecat(msg, sizeof msg, pos, tp->text); - pos = safecat(msg, sizeof msg, pos, "\" (was \""); - pos = safecat(msg, sizeof msg, pos, text); - pos = safecat(msg, sizeof msg, pos, "\"), "); - } - } - - if (tp->itxt_length != 0) - pos = safecat(msg, sizeof msg, pos, "iTXt length set, "); - - if (tp->lang != NULL) - { - pos = safecat(msg, sizeof msg, pos, "iTXt language \""); - pos = safecat(msg, sizeof msg, pos, tp->lang); - pos = safecat(msg, sizeof msg, pos, "\", "); - } - - if (tp->lang_key != NULL) - { - pos = safecat(msg, sizeof msg, pos, "iTXt keyword \""); - pos = safecat(msg, sizeof msg, pos, tp->lang_key); - pos = safecat(msg, sizeof msg, pos, "\", "); - } - - if (pos > ok) - { - msg[pos-2] = '\0'; /* Remove the ", " at the end */ - png_error(pp, msg); - } -} - -static void -standard_text_validate(standard_display *dp, png_const_structp pp, - png_infop pi) -{ - png_textp tp = NULL; - png_uint_32 num_text = png_get_text(pp, pi, &tp, NULL); - - if (num_text == 2 && tp != NULL) - { - standard_check_text(pp, tp, "image name", dp->ps->current->name); - standard_check_text(pp, tp+1, "end marker", "end"); - } - - else - { - char msg[64]; - - sprintf(msg, "expected two text items, got %lu", - (unsigned long)num_text); - png_error(pp, msg); - } -} -#else -# define standard_text_validate(dp,pp,pi) ((void)0) -#endif - -static void -standard_row_validate(standard_display *dp, png_const_structp pp, - int iImage, int iDisplay, png_uint_32 y) -{ - int where; - png_byte std[STANDARD_ROWMAX]; - - /* The row must be pre-initialized to the magic number here for the size - * tests to pass: - */ - memset(std, 178, sizeof std); - standard_row(pp, std, dp->id, y); - - /* At the end both the 'row' and 'display' arrays should end up identical. - * In earlier passes 'row' will be partially filled in, with only the pixels - * that have been read so far, but 'display' will have those pixels - * replicated to fill the unread pixels while reading an interlaced image. -#if PNG_LIBPNG_VER < 10506 - * The side effect inside the libpng sequential reader is that the 'row' - * array retains the correct values for unwritten pixels within the row - * bytes, while the 'display' array gets bits off the end of the image (in - * the last byte) trashed. Unfortunately in the progressive reader the - * row bytes are always trashed, so we always do a pixel_cmp here even though - * a memcmp of all cbRow bytes will succeed for the sequential reader. -#endif - */ - if (iImage >= 0 && - (where = pixel_cmp(std, store_image_row(dp->ps, pp, iImage, y), - dp->bit_width)) != 0) - { - char msg[64]; - sprintf(msg, "PNG image row[%lu][%d] changed from %.2x to %.2x", - (unsigned long)y, where-1, std[where-1], - store_image_row(dp->ps, pp, iImage, y)[where-1]); - png_error(pp, msg); - } - -#if PNG_LIBPNG_VER < 10506 - /* In this case use pixel_cmp because we need to compare a partial - * byte at the end of the row if the row is not an exact multiple - * of 8 bits wide. (This is fixed in libpng-1.5.6 and pixel_cmp is - * changed to match!) - */ -#endif - if (iDisplay >= 0 && - (where = pixel_cmp(std, store_image_row(dp->ps, pp, iDisplay, y), - dp->bit_width)) != 0) - { - char msg[64]; - sprintf(msg, "display row[%lu][%d] changed from %.2x to %.2x", - (unsigned long)y, where-1, std[where-1], - store_image_row(dp->ps, pp, iDisplay, y)[where-1]); - png_error(pp, msg); - } -} - -static void -standard_image_validate(standard_display *dp, png_const_structp pp, int iImage, - int iDisplay) -{ - png_uint_32 y; - - if (iImage >= 0) - store_image_check(dp->ps, pp, iImage); - - if (iDisplay >= 0) - store_image_check(dp->ps, pp, iDisplay); - - for (y=0; yh; ++y) - standard_row_validate(dp, pp, iImage, iDisplay, y); - - /* This avoids false positives if the validation code is never called! */ - dp->ps->validated = 1; -} - -static void -standard_end(png_structp ppIn, png_infop pi) -{ - png_const_structp pp = ppIn; - standard_display *dp = voidcast(standard_display*, - png_get_progressive_ptr(pp)); - - UNUSED(pi) - - /* Validate the image - progressive reading only produces one variant for - * interlaced images. - */ - standard_text_validate(dp, pp, pi); - standard_image_validate(dp, pp, 0, -1); -} - -/* A single test run checking the standard image to ensure it is not damaged. */ -static void -standard_test(png_store* PNG_CONST psIn, png_uint_32 PNG_CONST id, - int do_interlace, int use_update_info) -{ - standard_display d; - context(psIn, fault); - - /* Set up the display (stack frame) variables from the arguments to the - * function and initialize the locals that are filled in later. - */ - standard_display_init(&d, psIn, id, do_interlace, use_update_info); - - /* Everything is protected by a Try/Catch. The functions called also - * typically have local Try/Catch blocks. - */ - Try - { - png_structp pp; - png_infop pi; - - /* Get a png_struct for reading the image. This will throw an error if it - * fails, so we don't need to check the result. - */ - pp = set_store_for_read(d.ps, &pi, d.id, - d.do_interlace ? (d.ps->progressive ? - "pngvalid progressive deinterlacer" : - "pngvalid sequential deinterlacer") : (d.ps->progressive ? - "progressive reader" : "sequential reader")); - - /* Initialize the palette correctly from the png_store_file. */ - standard_palette_init(&d); - - /* Introduce the correct read function. */ - if (d.ps->progressive) - { - png_set_progressive_read_fn(pp, &d, standard_info, progressive_row, - standard_end); - - /* Now feed data into the reader until we reach the end: */ - store_progressive_read(d.ps, pp, pi); - } - else - { - /* Note that this takes the store, not the display. */ - png_set_read_fn(pp, d.ps, store_read); - - /* Check the header values: */ - png_read_info(pp, pi); - - /* The code tests both versions of the images that the sequential - * reader can produce. - */ - standard_info_imp(&d, pp, pi, 2 /*images*/); - - /* Need the total bytes in the image below; we can't get to this point - * unless the PNG file values have been checked against the expected - * values. - */ - { - sequential_row(&d, pp, pi, 0, 1); - - /* After the last pass loop over the rows again to check that the - * image is correct. - */ - if (!d.speed) - { - standard_text_validate(&d, pp, pi); - standard_image_validate(&d, pp, 0, 1); - } - else - d.ps->validated = 1; - } - } - - /* Check for validation. */ - if (!d.ps->validated) - png_error(pp, "image read failed silently"); - - /* Successful completion. */ - } - - Catch(fault) - d.ps = fault; /* make sure this hasn't been clobbered. */ - - /* In either case clean up the store. */ - store_read_reset(d.ps); -} - -static int -test_standard(png_modifier* PNG_CONST pm, png_byte PNG_CONST colour_type, - int bdlo, int PNG_CONST bdhi) -{ - for (; bdlo <= bdhi; ++bdlo) - { - int interlace_type; - - for (interlace_type = PNG_INTERLACE_NONE; - interlace_type < PNG_INTERLACE_LAST; ++interlace_type) - { - standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, - interlace_type, 0, 0, 0), 0/*do_interlace*/, pm->use_update_info); - - if (fail(pm)) - return 0; - } - } - - return 1; /* keep going */ -} - -static void -perform_standard_test(png_modifier *pm) -{ - /* Test each colour type over the valid range of bit depths (expressed as - * log2(bit_depth) in turn, stop as soon as any error is detected. - */ - if (!test_standard(pm, 0, 0, READ_BDHI)) - return; - - if (!test_standard(pm, 2, 3, READ_BDHI)) - return; - - if (!test_standard(pm, 3, 0, 3)) - return; - - if (!test_standard(pm, 4, 3, READ_BDHI)) - return; - - if (!test_standard(pm, 6, 3, READ_BDHI)) - return; -} - - -/********************************** SIZE TESTS ********************************/ -static int -test_size(png_modifier* PNG_CONST pm, png_byte PNG_CONST colour_type, - int bdlo, int PNG_CONST bdhi) -{ - /* Run the tests on each combination. - * - * NOTE: on my 32 bit x86 each of the following blocks takes - * a total of 3.5 seconds if done across every combo of bit depth - * width and height. This is a waste of time in practice, hence the - * hinc and winc stuff: - */ - static PNG_CONST png_byte hinc[] = {1, 3, 11, 1, 5}; - static PNG_CONST png_byte winc[] = {1, 9, 5, 7, 1}; - for (; bdlo <= bdhi; ++bdlo) - { - png_uint_32 h, w; - - for (h=1; h<=16; h+=hinc[bdlo]) for (w=1; w<=16; w+=winc[bdlo]) - { - /* First test all the 'size' images against the sequential - * reader using libpng to deinterlace (where required.) This - * validates the write side of libpng. There are four possibilities - * to validate. - */ - standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, - PNG_INTERLACE_NONE, w, h, 0), 0/*do_interlace*/, - pm->use_update_info); - - if (fail(pm)) - return 0; - - standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, - PNG_INTERLACE_NONE, w, h, 1), 0/*do_interlace*/, - pm->use_update_info); - - if (fail(pm)) - return 0; - - standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, - PNG_INTERLACE_ADAM7, w, h, 0), 0/*do_interlace*/, - pm->use_update_info); - - if (fail(pm)) - return 0; - - standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, - PNG_INTERLACE_ADAM7, w, h, 1), 0/*do_interlace*/, - pm->use_update_info); - - if (fail(pm)) - return 0; - - /* Now validate the interlaced read side - do_interlace true, - * in the progressive case this does actually make a difference - * to the code used in the non-interlaced case too. - */ - standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, - PNG_INTERLACE_NONE, w, h, 0), 1/*do_interlace*/, - pm->use_update_info); - - if (fail(pm)) - return 0; - - standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, - PNG_INTERLACE_ADAM7, w, h, 0), 1/*do_interlace*/, - pm->use_update_info); - - if (fail(pm)) - return 0; - } - } - - return 1; /* keep going */ -} - -static void -perform_size_test(png_modifier *pm) -{ - /* Test each colour type over the valid range of bit depths (expressed as - * log2(bit_depth) in turn, stop as soon as any error is detected. - */ - if (!test_size(pm, 0, 0, READ_BDHI)) - return; - - if (!test_size(pm, 2, 3, READ_BDHI)) - return; - - /* For the moment don't do the palette test - it's a waste of time when - * compared to the grayscale test. - */ -#if 0 - if (!test_size(pm, 3, 0, 3)) - return; -#endif - - if (!test_size(pm, 4, 3, READ_BDHI)) - return; - - if (!test_size(pm, 6, 3, READ_BDHI)) - return; -} - - -/******************************* TRANSFORM TESTS ******************************/ -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -/* A set of tests to validate libpng image transforms. The possibilities here - * are legion because the transforms can be combined in a combinatorial - * fashion. To deal with this some measure of restraint is required, otherwise - * the tests would take forever. - */ -typedef struct image_pixel -{ - /* A local (pngvalid) representation of a PNG pixel, in all its - * various forms. - */ - unsigned int red, green, blue, alpha; /* For non-palette images. */ - unsigned int palette_index; /* For a palette image. */ - png_byte colour_type; /* As in the spec. */ - png_byte bit_depth; /* Defines bit size in row */ - png_byte sample_depth; /* Scale of samples */ - int have_tRNS; /* tRNS chunk may need processing */ - - /* For checking the code calculates double precision floating point values - * along with an error value, accumulated from the transforms. Because an - * sBIT setting allows larger error bounds (indeed, by the spec, apparently - * up to just less than +/-1 in the scaled value) the *lowest* sBIT for each - * channel is stored. This sBIT value is folded in to the stored error value - * at the end of the application of the transforms to the pixel. - */ - double redf, greenf, bluef, alphaf; - double rede, greene, bluee, alphae; - png_byte red_sBIT, green_sBIT, blue_sBIT, alpha_sBIT; -} image_pixel; - -/* Shared utility function, see below. */ -static void -image_pixel_setf(image_pixel *this, unsigned int max) -{ - this->redf = this->red / (double)max; - this->greenf = this->green / (double)max; - this->bluef = this->blue / (double)max; - this->alphaf = this->alpha / (double)max; - - if (this->red < max) - this->rede = this->redf * DBL_EPSILON; - else - this->rede = 0; - if (this->green < max) - this->greene = this->greenf * DBL_EPSILON; - else - this->greene = 0; - if (this->blue < max) - this->bluee = this->bluef * DBL_EPSILON; - else - this->bluee = 0; - if (this->alpha < max) - this->alphae = this->alphaf * DBL_EPSILON; - else - this->alphae = 0; -} - -/* Initialize the structure for the next pixel - call this before doing any - * transforms and call it for each pixel since all the fields may need to be - * reset. - */ -static void -image_pixel_init(image_pixel *this, png_const_bytep row, png_byte colour_type, - png_byte bit_depth, png_uint_32 x, store_palette palette) -{ - PNG_CONST png_byte sample_depth = (png_byte)(colour_type == - PNG_COLOR_TYPE_PALETTE ? 8 : bit_depth); - PNG_CONST unsigned int max = (1U<palette_index = this->red = this->green = this->blue = - sample(row, colour_type, bit_depth, x, 0); - this->alpha = max; - this->red_sBIT = this->green_sBIT = this->blue_sBIT = this->alpha_sBIT = - sample_depth; - - /* Then override as appropriate: */ - if (colour_type == 3) /* palette */ - { - /* This permits the caller to default to the sample value. */ - if (palette != 0) - { - PNG_CONST unsigned int i = this->palette_index; - - this->red = palette[i].red; - this->green = palette[i].green; - this->blue = palette[i].blue; - this->alpha = palette[i].alpha; - } - } - - else /* not palette */ - { - unsigned int i = 0; - - if (colour_type & 2) - { - this->green = sample(row, colour_type, bit_depth, x, 1); - this->blue = sample(row, colour_type, bit_depth, x, 2); - i = 2; - } - if (colour_type & 4) - this->alpha = sample(row, colour_type, bit_depth, x, ++i); - } - - /* Calculate the scaled values, these are simply the values divided by - * 'max' and the error is initialized to the double precision epsilon value - * from the header file. - */ - image_pixel_setf(this, max); - - /* Store the input information for use in the transforms - these will - * modify the information. - */ - this->colour_type = colour_type; - this->bit_depth = bit_depth; - this->sample_depth = sample_depth; - this->have_tRNS = 0; -} - -/* Convert a palette image to an rgb image. This necessarily converts the tRNS - * chunk at the same time, because the tRNS will be in palette form. The way - * palette validation works means that the original palette is never updated, - * instead the image_pixel value from the row contains the RGB of the - * corresponding palette entry and *this* is updated. Consequently this routine - * only needs to change the colour type information. - */ -static void -image_pixel_convert_PLTE(image_pixel *this) -{ - if (this->colour_type == PNG_COLOR_TYPE_PALETTE) - { - if (this->have_tRNS) - { - this->colour_type = PNG_COLOR_TYPE_RGB_ALPHA; - this->have_tRNS = 0; - } - else - this->colour_type = PNG_COLOR_TYPE_RGB; - - /* The bit depth of the row changes at this point too (notice that this is - * the row format, not the sample depth, which is separate.) - */ - this->bit_depth = 8; - } -} - -/* Add an alpha channel; this will import the tRNS information because tRNS is - * not valid in an alpha image. The bit depth will invariably be set to at - * least 8. Palette images will be converted to alpha (using the above API). - */ -static void -image_pixel_add_alpha(image_pixel *this, PNG_CONST standard_display *display) -{ - if (this->colour_type == PNG_COLOR_TYPE_PALETTE) - image_pixel_convert_PLTE(this); - - if ((this->colour_type & PNG_COLOR_MASK_ALPHA) == 0) - { - if (this->colour_type == PNG_COLOR_TYPE_GRAY) - { - if (this->bit_depth < 8) - this->bit_depth = 8; - - if (this->have_tRNS) - { - this->have_tRNS = 0; - - /* Check the input, original, channel value here against the - * original tRNS gray chunk valie. - */ - if (this->red == display->transparent.red) - this->alphaf = 0; - else - this->alphaf = 1; - } - else - this->alphaf = 1; - - this->colour_type = PNG_COLOR_TYPE_GRAY_ALPHA; - } - - else if (this->colour_type == PNG_COLOR_TYPE_RGB) - { - if (this->have_tRNS) - { - this->have_tRNS = 0; - - /* Again, check the exact input values, not the current transformed - * value! - */ - if (this->red == display->transparent.red && - this->green == display->transparent.green && - this->blue == display->transparent.blue) - this->alphaf = 0; - else - this->alphaf = 1; - - this->colour_type = PNG_COLOR_TYPE_RGB_ALPHA; - } - } - - /* The error in the alpha is zero and the sBIT value comes from the - * original sBIT data (actually it will always be the original bit depth). - */ - this->alphae = 0; - this->alpha_sBIT = display->alpha_sBIT; - } -} - -struct transform_display; -typedef struct image_transform -{ - /* The name of this transform: a string. */ - PNG_CONST char *name; - - /* Each transform can be disabled from the command line: */ - int enable; - - /* The global list of transforms; read only. */ - struct image_transform *PNG_CONST list; - - /* The global count of the number of times this transform has been set on an - * image. - */ - unsigned int global_use; - - /* The local count of the number of times this transform has been set. */ - unsigned int local_use; - - /* The next transform in the list, each transform must call its own next - * transform after it has processed the pixel successfully. - */ - PNG_CONST struct image_transform *next; - - /* A single transform for the image, expressed as a series of function - * callbacks and some space for values. - * - * First a callback to add any required modifications to the png_modifier; - * this gets called just before the modifier is set up for read. - */ - void (*ini)(PNG_CONST struct image_transform *this, - struct transform_display *that); - - /* And a callback to set the transform on the current png_read_struct: - */ - void (*set)(PNG_CONST struct image_transform *this, - struct transform_display *that, png_structp pp, png_infop pi); - - /* Then a transform that takes an input pixel in one PNG format or another - * and modifies it by a pngvalid implementation of the transform (thus - * duplicating the libpng intent without, we hope, duplicating the bugs - * in the libpng implementation!) The png_structp is solely to allow error - * reporting via png_error and png_warning. - */ - void (*mod)(PNG_CONST struct image_transform *this, image_pixel *that, - png_const_structp pp, PNG_CONST struct transform_display *display); - - /* Add this transform to the list and return true if the transform is - * meaningful for this colour type and bit depth - if false then the - * transform should have no effect on the image so there's not a lot of - * point running it. - */ - int (*add)(struct image_transform *this, - PNG_CONST struct image_transform **that, png_byte colour_type, - png_byte bit_depth); -} image_transform; - -typedef struct transform_display -{ - standard_display this; - - /* Parameters */ - png_modifier* pm; - PNG_CONST image_transform* transform_list; - - /* Local variables */ - png_byte output_colour_type; - png_byte output_bit_depth; - - /* Modifications (not necessarily used.) */ - gama_modification gama_mod; - chrm_modification chrm_mod; - srgb_modification srgb_mod; -} transform_display; - -/* Set sRGB, cHRM and gAMA transforms as required by the current encoding. */ -static void -transform_set_encoding(transform_display *this) -{ - /* Set up the png_modifier '_current' fields then use these to determine how - * to add appropriate chunks. - */ - png_modifier *pm = this->pm; - - modifier_set_encoding(pm); - - if (modifier_color_encoding_is_set(pm)) - { - if (modifier_color_encoding_is_sRGB(pm)) - srgb_modification_init(&this->srgb_mod, pm, PNG_sRGB_INTENT_ABSOLUTE); - - else - { - /* Set gAMA and cHRM separately. */ - gama_modification_init(&this->gama_mod, pm, pm->current_gamma); - - if (pm->current_encoding != 0) - chrm_modification_init(&this->chrm_mod, pm, pm->current_encoding); - } - } -} - -/* Three functions to end the list: */ -static void -image_transform_ini_end(PNG_CONST image_transform *this, - transform_display *that) -{ - UNUSED(this) - UNUSED(that) -} - -static void -image_transform_set_end(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - UNUSED(this) - UNUSED(that) - UNUSED(pp) - UNUSED(pi) -} - -/* At the end of the list recalculate the output image pixel value from the - * double precision values set up by the preceding 'mod' calls: - */ -static unsigned int -sample_scale(double sample_value, unsigned int scale) -{ - sample_value = floor(sample_value * scale + .5); - - /* Return NaN as 0: */ - if (!(sample_value > 0)) - sample_value = 0; - else if (sample_value > scale) - sample_value = scale; - - return (unsigned int)sample_value; -} - -static void -image_transform_mod_end(PNG_CONST image_transform *this, image_pixel *that, - png_const_structp pp, PNG_CONST transform_display *display) -{ - PNG_CONST unsigned int scale = (1U<sample_depth)-1; - - UNUSED(this) - UNUSED(pp) - UNUSED(display) - - /* At the end recalculate the digitized red green and blue values according - * to the current sample_depth of the pixel. - * - * The sample value is simply scaled to the maximum, checking for over - * and underflow (which can both happen for some image transforms, - * including simple size scaling, though libpng doesn't do that at present. - */ - that->red = sample_scale(that->redf, scale); - - /* The error value is increased, at the end, according to the lowest sBIT - * value seen. Common sense tells us that the intermediate integer - * representations are no more accurate than +/- 0.5 in the integral values, - * the sBIT allows the implementation to be worse than this. In addition the - * PNG specification actually permits any error within the range (-1..+1), - * but that is ignored here. Instead the final digitized value is compared, - * below to the digitized value of the error limits - this has the net effect - * of allowing (almost) +/-1 in the output value. It's difficult to see how - * any algorithm that digitizes intermediate results can be more accurate. - */ - that->rede += 1./(2*((1U<red_sBIT)-1)); - - if (that->colour_type & PNG_COLOR_MASK_COLOR) - { - that->green = sample_scale(that->greenf, scale); - that->blue = sample_scale(that->bluef, scale); - that->greene += 1./(2*((1U<green_sBIT)-1)); - that->bluee += 1./(2*((1U<blue_sBIT)-1)); - } - else - { - that->blue = that->green = that->red; - that->bluef = that->greenf = that->redf; - that->bluee = that->greene = that->rede; - } - - if ((that->colour_type & PNG_COLOR_MASK_ALPHA) || - that->colour_type == PNG_COLOR_TYPE_PALETTE) - { - that->alpha = sample_scale(that->alphaf, scale); - that->alphae += 1./(2*((1U<alpha_sBIT)-1)); - } - else - { - that->alpha = scale; /* opaque */ - that->alpha = 1; /* Override this. */ - that->alphae = 0; /* It's exact ;-) */ - } -} - -/* Static 'end' structure: */ -static image_transform image_transform_end = -{ - "(end)", /* name */ - 1, /* enable */ - 0, /* list */ - 0, /* global_use */ - 0, /* local_use */ - 0, /* next */ - image_transform_ini_end, - image_transform_set_end, - image_transform_mod_end, - 0 /* never called, I want it to crash if it is! */ -}; - -/* Reader callbacks and implementations, where they differ from the standard - * ones. - */ -static void -transform_display_init(transform_display *dp, png_modifier *pm, png_uint_32 id, - PNG_CONST image_transform *transform_list) -{ - memset(dp, 0, sizeof *dp); - - /* Standard fields */ - standard_display_init(&dp->this, &pm->this, id, 0/*do_interlace*/, - pm->use_update_info); - - /* Parameter fields */ - dp->pm = pm; - dp->transform_list = transform_list; - - /* Local variable fields */ - dp->output_colour_type = 255; /* invalid */ - dp->output_bit_depth = 255; /* invalid */ -} - -static void -transform_info_imp(transform_display *dp, png_structp pp, png_infop pi) -{ - /* Reuse the standard stuff as appropriate. */ - standard_info_part1(&dp->this, pp, pi); - - /* Now set the list of transforms. */ - dp->transform_list->set(dp->transform_list, dp, pp, pi); - - /* Update the info structure for these transforms: */ - { - int i = dp->this.use_update_info; - /* Always do one call, even if use_update_info is 0. */ - do - png_read_update_info(pp, pi); - while (--i > 0); - } - - /* And get the output information into the standard_display */ - standard_info_part2(&dp->this, pp, pi, 1/*images*/); - - /* Plus the extra stuff we need for the transform tests: */ - dp->output_colour_type = png_get_color_type(pp, pi); - dp->output_bit_depth = png_get_bit_depth(pp, pi); - - /* Validate the combination of colour type and bit depth that we are getting - * out of libpng; the semantics of something not in the PNG spec are, at - * best, unclear. - */ - switch (dp->output_colour_type) - { - case PNG_COLOR_TYPE_PALETTE: - if (dp->output_bit_depth > 8) goto error; - /*FALL THROUGH*/ - case PNG_COLOR_TYPE_GRAY: - if (dp->output_bit_depth == 1 || dp->output_bit_depth == 2 || - dp->output_bit_depth == 4) - break; - /*FALL THROUGH*/ - default: - if (dp->output_bit_depth == 8 || dp->output_bit_depth == 16) - break; - /*FALL THROUGH*/ - error: - { - char message[128]; - size_t pos; - - pos = safecat(message, sizeof message, 0, - "invalid final bit depth: colour type("); - pos = safecatn(message, sizeof message, pos, dp->output_colour_type); - pos = safecat(message, sizeof message, pos, ") with bit depth: "); - pos = safecatn(message, sizeof message, pos, dp->output_bit_depth); - - png_error(pp, message); - } - } - - /* Use a test pixel to check that the output agrees with what we expect - - * this avoids running the whole test if the output is unexpected. - */ - { - image_pixel test_pixel; - - memset(&test_pixel, 0, sizeof test_pixel); - test_pixel.colour_type = dp->this.colour_type; /* input */ - test_pixel.bit_depth = dp->this.bit_depth; - if (test_pixel.colour_type == PNG_COLOR_TYPE_PALETTE) - test_pixel.sample_depth = 8; - else - test_pixel.sample_depth = test_pixel.bit_depth; - /* Don't need sBIT here, but it must be set to non-zero to avoid - * arithmetic overflows. - */ - test_pixel.have_tRNS = dp->this.is_transparent; - test_pixel.red_sBIT = test_pixel.green_sBIT = test_pixel.blue_sBIT = - test_pixel.alpha_sBIT = test_pixel.sample_depth; - - dp->transform_list->mod(dp->transform_list, &test_pixel, pp, dp); - - if (test_pixel.colour_type != dp->output_colour_type) - { - char message[128]; - size_t pos = safecat(message, sizeof message, 0, "colour type "); - - pos = safecatn(message, sizeof message, pos, dp->output_colour_type); - pos = safecat(message, sizeof message, pos, " expected "); - pos = safecatn(message, sizeof message, pos, test_pixel.colour_type); - - png_error(pp, message); - } - - if (test_pixel.bit_depth != dp->output_bit_depth) - { - char message[128]; - size_t pos = safecat(message, sizeof message, 0, "bit depth "); - - pos = safecatn(message, sizeof message, pos, dp->output_bit_depth); - pos = safecat(message, sizeof message, pos, " expected "); - pos = safecatn(message, sizeof message, pos, test_pixel.bit_depth); - - png_error(pp, message); - } - - /* If both bit depth and colour type are correct check the sample depth. - * I believe these are both internal errors. - */ - if (test_pixel.colour_type == PNG_COLOR_TYPE_PALETTE) - { - if (test_pixel.sample_depth != 8) /* oops - internal error! */ - png_error(pp, "pngvalid: internal: palette sample depth not 8"); - } - else if (test_pixel.sample_depth != dp->output_bit_depth) - { - char message[128]; - size_t pos = safecat(message, sizeof message, 0, - "internal: sample depth "); - - pos = safecatn(message, sizeof message, pos, dp->output_bit_depth); - pos = safecat(message, sizeof message, pos, " expected "); - pos = safecatn(message, sizeof message, pos, test_pixel.sample_depth); - - png_error(pp, message); - } - } -} - -static void -transform_info(png_structp pp, png_infop pi) -{ - transform_info_imp(voidcast(transform_display*, png_get_progressive_ptr(pp)), - pp, pi); -} - -static void -transform_range_check(png_const_structp pp, unsigned int r, unsigned int g, - unsigned int b, unsigned int a, unsigned int in_digitized, double in, - unsigned int out, png_byte sample_depth, double err, double limit, - PNG_CONST char *name, double digitization_error) -{ - /* Compare the scaled, digitzed, values of our local calculation (in+-err) - * with the digitized values libpng produced; 'sample_depth' is the actual - * digitization depth of the libpng output colors (the bit depth except for - * palette images where it is always 8.) The check on 'err' is to detect - * internal errors in pngvalid itself. - */ - unsigned int max = (1U< limit || !(out >= in_min && out <= in_max)) - { - char message[256]; - size_t pos; - - pos = safecat(message, sizeof message, 0, name); - pos = safecat(message, sizeof message, pos, " output value error: rgba("); - pos = safecatn(message, sizeof message, pos, r); - pos = safecat(message, sizeof message, pos, ","); - pos = safecatn(message, sizeof message, pos, g); - pos = safecat(message, sizeof message, pos, ","); - pos = safecatn(message, sizeof message, pos, b); - pos = safecat(message, sizeof message, pos, ","); - pos = safecatn(message, sizeof message, pos, a); - pos = safecat(message, sizeof message, pos, "): "); - pos = safecatn(message, sizeof message, pos, out); - pos = safecat(message, sizeof message, pos, " expected: "); - pos = safecatn(message, sizeof message, pos, in_digitized); - pos = safecat(message, sizeof message, pos, " ("); - pos = safecatd(message, sizeof message, pos, (in-err)*max, 3); - pos = safecat(message, sizeof message, pos, ".."); - pos = safecatd(message, sizeof message, pos, (in+err)*max, 3); - pos = safecat(message, sizeof message, pos, ")"); - - png_error(pp, message); - } -} - -static void -transform_image_validate(transform_display *dp, png_const_structp pp, - png_infop pi) -{ - /* Constants for the loop below: */ - PNG_CONST png_store* PNG_CONST ps = dp->this.ps; - PNG_CONST png_byte in_ct = dp->this.colour_type; - PNG_CONST png_byte in_bd = dp->this.bit_depth; - PNG_CONST png_uint_32 w = dp->this.w; - PNG_CONST png_uint_32 h = dp->this.h; - PNG_CONST png_byte out_ct = dp->output_colour_type; - PNG_CONST png_byte out_bd = dp->output_bit_depth; - PNG_CONST png_byte sample_depth = (png_byte)(out_ct == - PNG_COLOR_TYPE_PALETTE ? 8 : out_bd); - PNG_CONST png_byte red_sBIT = dp->this.red_sBIT; - PNG_CONST png_byte green_sBIT = dp->this.green_sBIT; - PNG_CONST png_byte blue_sBIT = dp->this.blue_sBIT; - PNG_CONST png_byte alpha_sBIT = dp->this.alpha_sBIT; - PNG_CONST int have_tRNS = dp->this.is_transparent; - double digitization_error; - - store_palette out_palette; - png_uint_32 y; - - UNUSED(pi) - - /* Check for row overwrite errors */ - store_image_check(dp->this.ps, pp, 0); - - /* Read the palette corresponding to the output if the output colour type - * indicates a palette, othewise set out_palette to garbage. - */ - if (out_ct == PNG_COLOR_TYPE_PALETTE) - { - /* Validate that the palette count itself has not changed - this is not - * expected. - */ - int npalette = (-1); - - (void)read_palette(out_palette, &npalette, pp, pi); - if (npalette != dp->this.npalette) - png_error(pp, "unexpected change in palette size"); - - digitization_error = .5; - } - else - { - png_byte in_sample_depth; - - memset(out_palette, 0x5e, sizeof out_palette); - - /* assume-8-bit-calculations means assume that if the input has 8 bit - * (or less) samples and the output has 16 bit samples the calculations - * will be done with 8 bit precision, not 16. - * - * TODO: fix this in libpng; png_set_expand_16 should cause 16 bit - * calculations to be used throughout. - */ - if (in_ct == PNG_COLOR_TYPE_PALETTE || in_bd < 16) - in_sample_depth = 8; - else - in_sample_depth = in_bd; - - if (sample_depth != 16 || in_sample_depth > 8 || - !dp->pm->calculations_use_input_precision) - digitization_error = .5; - - /* Else errors are at 8 bit precision, scale .5 in 8 bits to the 16 bits: - */ - else - digitization_error = .5 * 257; - } - - for (y=0; ythis.palette); - - in_pixel.red_sBIT = red_sBIT; - in_pixel.green_sBIT = green_sBIT; - in_pixel.blue_sBIT = blue_sBIT; - in_pixel.alpha_sBIT = alpha_sBIT; - in_pixel.have_tRNS = have_tRNS; - - /* For error detection, below. */ - r = in_pixel.red; - g = in_pixel.green; - b = in_pixel.blue; - a = in_pixel.alpha; - - dp->transform_list->mod(dp->transform_list, &in_pixel, pp, dp); - - /* Read the output pixel and compare it to what we got, we don't - * use the error field here, so no need to update sBIT. - */ - image_pixel_init(&out_pixel, pRow, out_ct, out_bd, x, out_palette); - - /* We don't expect changes to the index here even if the bit depth is - * changed. - */ - if (in_ct == PNG_COLOR_TYPE_PALETTE && - out_ct == PNG_COLOR_TYPE_PALETTE) - { - if (in_pixel.palette_index != out_pixel.palette_index) - png_error(pp, "unexpected transformed palette index"); - } - - /* Check the colours for palette images too - in fact the palette could - * be separately verified itself in most cases. - */ - if (in_pixel.red != out_pixel.red) - transform_range_check(pp, r, g, b, a, in_pixel.red, in_pixel.redf, - out_pixel.red, sample_depth, in_pixel.rede, - dp->pm->limit + 1./(2*((1U<pm->limit + 1./(2*((1U<pm->limit + 1./(2*((1U<pm->limit + 1./(2*((1U<this.ps->validated = 1; -} - -static void -transform_end(png_structp ppIn, png_infop pi) -{ - png_const_structp pp = ppIn; - transform_display *dp = voidcast(transform_display*, - png_get_progressive_ptr(pp)); - - if (!dp->this.speed) - transform_image_validate(dp, pp, pi); - else - dp->this.ps->validated = 1; -} - -/* A single test run. */ -static void -transform_test(png_modifier *pmIn, PNG_CONST png_uint_32 idIn, - PNG_CONST image_transform* transform_listIn, PNG_CONST char * volatile name) -{ - transform_display d; - context(&pmIn->this, fault); - - transform_display_init(&d, pmIn, idIn, transform_listIn); - - Try - { - size_t pos = 0; - png_structp pp; - png_infop pi; - char full_name[256]; - - /* Make sure the encoding fields are correct and enter the required - * modifications. - */ - transform_set_encoding(&d); - - /* Add any modifications required by the transform list. */ - d.transform_list->ini(d.transform_list, &d); - - /* Add the color space information, if any, to the name. */ - pos = safecat(full_name, sizeof full_name, pos, name); - pos = safecat_current_encoding(full_name, sizeof full_name, pos, d.pm); - - /* Get a png_struct for reading the image. */ - pp = set_modifier_for_read(d.pm, &pi, d.this.id, full_name); - standard_palette_init(&d.this); - -# if 0 - /* Logging (debugging only) */ - { - char buffer[256]; - - (void)store_message(&d.pm->this, pp, buffer, sizeof buffer, 0, - "running test"); - - fprintf(stderr, "%s\n", buffer); - } -# endif - - /* Introduce the correct read function. */ - if (d.pm->this.progressive) - { - /* Share the row function with the standard implementation. */ - png_set_progressive_read_fn(pp, &d, transform_info, progressive_row, - transform_end); - - /* Now feed data into the reader until we reach the end: */ - modifier_progressive_read(d.pm, pp, pi); - } - else - { - /* modifier_read expects a png_modifier* */ - png_set_read_fn(pp, d.pm, modifier_read); - - /* Check the header values: */ - png_read_info(pp, pi); - - /* Process the 'info' requirements. Only one image is generated */ - transform_info_imp(&d, pp, pi); - - sequential_row(&d.this, pp, pi, -1, 0); - - if (!d.this.speed) - transform_image_validate(&d, pp, pi); - else - d.this.ps->validated = 1; - } - - modifier_reset(d.pm); - } - - Catch(fault) - { - modifier_reset(voidcast(png_modifier*,(void*)fault)); - } -} - -/* The transforms: */ -#define ITSTRUCT(name) image_transform_##name -#define ITDATA(name) image_transform_data_##name -#define image_transform_ini image_transform_default_ini -#define IT(name)\ -static image_transform ITSTRUCT(name) =\ -{\ - #name,\ - 1, /*enable*/\ - &PT, /*list*/\ - 0, /*global_use*/\ - 0, /*local_use*/\ - 0, /*next*/\ - image_transform_ini,\ - image_transform_png_set_##name##_set,\ - image_transform_png_set_##name##_mod,\ - image_transform_png_set_##name##_add\ -} -#define PT ITSTRUCT(end) /* stores the previous transform */ - -/* To save code: */ -static void -image_transform_default_ini(PNG_CONST image_transform *this, - transform_display *that) -{ - this->next->ini(this->next, that); -} - -#ifdef PNG_READ_BACKGROUND_SUPPORTED -static int -image_transform_default_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(colour_type) - UNUSED(bit_depth) - - this->next = *that; - *that = this; - - return 1; -} -#endif - -#ifdef PNG_READ_EXPAND_SUPPORTED -/* png_set_palette_to_rgb */ -static void -image_transform_png_set_palette_to_rgb_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_palette_to_rgb(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_palette_to_rgb_mod(PNG_CONST image_transform *this, - image_pixel *that, png_const_structp pp, - PNG_CONST transform_display *display) -{ - if (that->colour_type == PNG_COLOR_TYPE_PALETTE) - image_pixel_convert_PLTE(that); - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_palette_to_rgb_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(bit_depth) - - this->next = *that; - *that = this; - - return colour_type == PNG_COLOR_TYPE_PALETTE; -} - -IT(palette_to_rgb); -#undef PT -#define PT ITSTRUCT(palette_to_rgb) -#endif /* PNG_READ_EXPAND_SUPPORTED */ - -#ifdef PNG_READ_EXPAND_SUPPORTED -/* png_set_tRNS_to_alpha */ -static void -image_transform_png_set_tRNS_to_alpha_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_tRNS_to_alpha(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_tRNS_to_alpha_mod(PNG_CONST image_transform *this, - image_pixel *that, png_const_structp pp, - PNG_CONST transform_display *display) -{ - /* LIBPNG BUG: this always forces palette images to RGB. */ - if (that->colour_type == PNG_COLOR_TYPE_PALETTE) - image_pixel_convert_PLTE(that); - - /* This effectively does an 'expand' only if there is some transparency to - * convert to an alpha channel. - */ - if (that->have_tRNS) - image_pixel_add_alpha(that, &display->this); - - /* LIBPNG BUG: otherwise libpng still expands to 8 bits! */ - else - { - if (that->bit_depth < 8) - that->bit_depth =8; - if (that->sample_depth < 8) - that->sample_depth = 8; - } - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_tRNS_to_alpha_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(bit_depth) - - this->next = *that; - *that = this; - - /* We don't know yet whether there will be a tRNS chunk, but we know that - * this transformation should do nothing if there already is an alpha - * channel. - */ - return (colour_type & PNG_COLOR_MASK_ALPHA) == 0; -} - -IT(tRNS_to_alpha); -#undef PT -#define PT ITSTRUCT(tRNS_to_alpha) -#endif /* PNG_READ_EXPAND_SUPPORTED */ - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED -/* png_set_gray_to_rgb */ -static void -image_transform_png_set_gray_to_rgb_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_gray_to_rgb(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_gray_to_rgb_mod(PNG_CONST image_transform *this, - image_pixel *that, png_const_structp pp, - PNG_CONST transform_display *display) -{ - /* NOTE: we can actually pend the tRNS processing at this point because we - * can correctly recognize the original pixel value even though we have - * mapped the one gray channel to the three RGB ones, but in fact libpng - * doesn't do this, so we don't either. - */ - if ((that->colour_type & PNG_COLOR_MASK_COLOR) == 0 && that->have_tRNS) - image_pixel_add_alpha(that, &display->this); - - /* Simply expand the bit depth and alter the colour type as required. */ - if (that->colour_type == PNG_COLOR_TYPE_GRAY) - { - /* RGB images have a bit depth at least equal to '8' */ - if (that->bit_depth < 8) - that->sample_depth = that->bit_depth = 8; - - /* And just changing the colour type works here because the green and blue - * channels are being maintained in lock-step with the red/gray: - */ - that->colour_type = PNG_COLOR_TYPE_RGB; - } - - else if (that->colour_type == PNG_COLOR_TYPE_GRAY_ALPHA) - that->colour_type = PNG_COLOR_TYPE_RGB_ALPHA; - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_gray_to_rgb_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(bit_depth) - - this->next = *that; - *that = this; - - return (colour_type & PNG_COLOR_MASK_COLOR) == 0; -} - -IT(gray_to_rgb); -#undef PT -#define PT ITSTRUCT(gray_to_rgb) -#endif /* PNG_READ_GRAY_TO_RGB_SUPPORTED */ - -#ifdef PNG_READ_EXPAND_SUPPORTED -/* png_set_expand */ -static void -image_transform_png_set_expand_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_expand(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_expand_mod(PNG_CONST image_transform *this, - image_pixel *that, png_const_structp pp, - PNG_CONST transform_display *display) -{ - /* The general expand case depends on what the colour type is: */ - if (that->colour_type == PNG_COLOR_TYPE_PALETTE) - image_pixel_convert_PLTE(that); - else if (that->bit_depth < 8) /* grayscale */ - that->sample_depth = that->bit_depth = 8; - - if (that->have_tRNS) - image_pixel_add_alpha(that, &display->this); - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_expand_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(bit_depth) - - this->next = *that; - *that = this; - - /* 'expand' should do nothing for RGBA or GA input - no tRNS and the bit - * depth is at least 8 already. - */ - return (colour_type & PNG_COLOR_MASK_ALPHA) == 0; -} - -IT(expand); -#undef PT -#define PT ITSTRUCT(expand) -#endif /* PNG_READ_EXPAND_SUPPORTED */ - -#ifdef PNG_READ_EXPAND_SUPPORTED -/* png_set_expand_gray_1_2_4_to_8 - * LIBPNG BUG: this just does an 'expand' - */ -static void -image_transform_png_set_expand_gray_1_2_4_to_8_set( - PNG_CONST image_transform *this, transform_display *that, png_structp pp, - png_infop pi) -{ - png_set_expand_gray_1_2_4_to_8(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_expand_gray_1_2_4_to_8_mod( - PNG_CONST image_transform *this, image_pixel *that, png_const_structp pp, - PNG_CONST transform_display *display) -{ - image_transform_png_set_expand_mod(this, that, pp, display); -} - -static int -image_transform_png_set_expand_gray_1_2_4_to_8_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - return image_transform_png_set_expand_add(this, that, colour_type, - bit_depth); -} - -IT(expand_gray_1_2_4_to_8); -#undef PT -#define PT ITSTRUCT(expand_gray_1_2_4_to_8) -#endif /* PNG_READ_EXPAND_SUPPORTED */ - -#ifdef PNG_READ_EXPAND_16_SUPPORTED -/* png_set_expand_16 */ -static void -image_transform_png_set_expand_16_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_expand_16(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_expand_16_mod(PNG_CONST image_transform *this, - image_pixel *that, png_const_structp pp, - PNG_CONST transform_display *display) -{ - /* Expect expand_16 to expand everything to 16 bits as a result of also - * causing 'expand' to happen. - */ - if (that->colour_type == PNG_COLOR_TYPE_PALETTE) - image_pixel_convert_PLTE(that); - - if (that->have_tRNS) - image_pixel_add_alpha(that, &display->this); - - if (that->bit_depth < 16) - that->sample_depth = that->bit_depth = 16; - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_expand_16_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(colour_type) - - this->next = *that; - *that = this; - - /* expand_16 does something unless the bit depth is already 16. */ - return bit_depth < 16; -} - -IT(expand_16); -#undef PT -#define PT ITSTRUCT(expand_16) -#endif /* PNG_READ_EXPAND_16_SUPPORTED */ - -#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED /* API added in 1.5.4 */ -/* png_set_scale_16 */ -static void -image_transform_png_set_scale_16_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_scale_16(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_scale_16_mod(PNG_CONST image_transform *this, - image_pixel *that, png_const_structp pp, - PNG_CONST transform_display *display) -{ - if (that->bit_depth == 16) - { - that->sample_depth = that->bit_depth = 8; - if (that->red_sBIT > 8) that->red_sBIT = 8; - if (that->green_sBIT > 8) that->green_sBIT = 8; - if (that->blue_sBIT > 8) that->blue_sBIT = 8; - if (that->alpha_sBIT > 8) that->alpha_sBIT = 8; - } - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_scale_16_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(colour_type) - - this->next = *that; - *that = this; - - return bit_depth > 8; -} - -IT(scale_16); -#undef PT -#define PT ITSTRUCT(scale_16) -#endif /* PNG_READ_SCALE_16_TO_8_SUPPORTED (1.5.4 on) */ - -#ifdef PNG_READ_16_TO_8_SUPPORTED /* the default before 1.5.4 */ -/* png_set_strip_16 */ -static void -image_transform_png_set_strip_16_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_strip_16(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_strip_16_mod(PNG_CONST image_transform *this, - image_pixel *that, png_const_structp pp, - PNG_CONST transform_display *display) -{ - if (that->bit_depth == 16) - { - that->sample_depth = that->bit_depth = 8; - if (that->red_sBIT > 8) that->red_sBIT = 8; - if (that->green_sBIT > 8) that->green_sBIT = 8; - if (that->blue_sBIT > 8) that->blue_sBIT = 8; - if (that->alpha_sBIT > 8) that->alpha_sBIT = 8; - - /* Prior to 1.5.4 png_set_strip_16 would use an 'accurate' method if this - * configuration option is set. From 1.5.4 the flag is never set and the - * 'scale' API (above) must be used. - */ -# ifdef PNG_READ_ACCURATE_SCALE_SUPPORTED -# if PNG_LIBPNG_VER >= 10504 -# error PNG_READ_ACCURATE_SCALE should not be set -# endif - - /* The strip 16 algorithm drops the low 8 bits rather than calculating - * 1/257, so we need to adjust the permitted errors appropriately: - * Notice that this is only relevant prior to the addition of the - * png_set_scale_16 API in 1.5.4 (but 1.5.4+ always defines the above!) - */ - { - PNG_CONST double d = (255-128.5)/65535; - that->rede += d; - that->greene += d; - that->bluee += d; - that->alphae += d; - } -# endif - } - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_strip_16_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(colour_type) - - this->next = *that; - *that = this; - - return bit_depth > 8; -} - -IT(strip_16); -#undef PT -#define PT ITSTRUCT(strip_16) -#endif /* PNG_READ_16_TO_8_SUPPORTED */ - -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED -/* png_set_strip_alpha */ -static void -image_transform_png_set_strip_alpha_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_strip_alpha(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_strip_alpha_mod(PNG_CONST image_transform *this, - image_pixel *that, png_const_structp pp, - PNG_CONST transform_display *display) -{ - if (that->colour_type == PNG_COLOR_TYPE_GRAY_ALPHA) - that->colour_type = PNG_COLOR_TYPE_GRAY; - else if (that->colour_type == PNG_COLOR_TYPE_RGB_ALPHA) - that->colour_type = PNG_COLOR_TYPE_RGB; - - that->have_tRNS = 0; - that->alphaf = 1; - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_strip_alpha_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(bit_depth) - - this->next = *that; - *that = this; - - return (colour_type & PNG_COLOR_MASK_ALPHA) != 0; -} - -IT(strip_alpha); -#undef PT -#define PT ITSTRUCT(strip_alpha) -#endif /* PNG_READ_STRIP_ALPHA_SUPPORTED */ - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -/* png_set_rgb_to_gray(png_structp, int err_action, double red, double green) - * png_set_rgb_to_gray_fixed(png_structp, int err_action, png_fixed_point red, - * png_fixed_point green) - * png_get_rgb_to_gray_status - * - * The 'default' test here uses values known to be used inside libpng: - * - * red: 6968 - * green: 23434 - * blue: 2366 - * - * These values are being retained for compatibility, along with the somewhat - * broken truncation calculation in the fast-and-inaccurate code path. Older - * versions of libpng will fail the accuracy tests below because they use the - * truncation algorithm everywhere. - */ -#define data ITDATA(rgb_to_gray) -static struct -{ - double gamma; /* File gamma to use in processing */ - - /* The following are the parameters for png_set_rgb_to_gray: */ -# ifdef PNG_FLOATING_POINT_SUPPORTED - double red_to_set; - double green_to_set; -# else - png_fixed_point red_to_set; - png_fixed_point green_to_set; -# endif - - /* The actual coefficients: */ - double red_coefficient; - double green_coefficient; - double blue_coefficient; - - /* Set if the coeefficients have been overridden. */ - int coefficients_overridden; -} data; - -#undef image_transform_ini -#define image_transform_ini image_transform_png_set_rgb_to_gray_ini -static void -image_transform_png_set_rgb_to_gray_ini(PNG_CONST image_transform *this, - transform_display *that) -{ - png_modifier *pm = that->pm; - PNG_CONST color_encoding *e = pm->current_encoding; - - UNUSED(this) - - /* Since we check the encoding this flag must be set: */ - pm->test_uses_encoding = 1; - - /* If 'e' is not NULL chromaticity information is present and either a cHRM - * or an sRGB chunk will be inserted. - */ - if (e != 0) - { - /* Coefficients come from the encoding, but may need to be normalized to a - * white point Y of 1.0 - */ - PNG_CONST double whiteY = e->red.Y + e->green.Y + e->blue.Y; - - data.red_coefficient = e->red.Y; - data.green_coefficient = e->green.Y; - data.blue_coefficient = e->blue.Y; - - if (whiteY != 1) - { - data.red_coefficient /= whiteY; - data.green_coefficient /= whiteY; - data.blue_coefficient /= whiteY; - } - } - - else - { - /* The default (built in) coeffcients, as above: */ - data.red_coefficient = 6968 / 32768.; - data.green_coefficient = 23434 / 32768.; - data.blue_coefficient = 2366 / 32768.; - } - - data.gamma = pm->current_gamma; - - /* If not set then the calculations assume linear encoding (implicitly): */ - if (data.gamma == 0) - data.gamma = 1; - - /* The arguments to png_set_rgb_to_gray can override the coefficients implied - * by the color space encoding. If doing exhaustive checks do the override - * in each case, otherwise do it randomly. - */ - if (pm->test_exhaustive) - { - /* First time in coefficients_overridden is 0, the following sets it to 1, - * so repeat if it is set. If a test fails this may mean we subsequently - * skip a non-override test, ignore that. - */ - data.coefficients_overridden = !data.coefficients_overridden; - pm->repeat = data.coefficients_overridden != 0; - } - - else - data.coefficients_overridden = random_choice(); - - if (data.coefficients_overridden) - { - /* These values override the color encoding defaults, simply use random - * numbers. - */ - png_uint_32 ru; - double total; - - RANDOMIZE(ru); - data.green_coefficient = total = (ru & 0xffff) / 65535.; - ru >>= 16; - data.red_coefficient = (1 - total) * (ru & 0xffff) / 65535.; - total += data.red_coefficient; - data.blue_coefficient = 1 - total; - -# ifdef PNG_FLOATING_POINT_SUPPORTED - data.red_to_set = data.red_coefficient; - data.green_to_set = data.green_coefficient; -# else - data.red_to_set = fix(data.red_coefficient); - data.green_to_set = fix(data.green_coefficient); -# endif - - /* The following just changes the error messages: */ - pm->encoding_ignored = 1; - } - - else - { - data.red_to_set = -1; - data.green_to_set = -1; - } - - /* Adjust the error limit in the png_modifier because of the larger errors - * produced in the digitization during the gamma handling. - */ - if (data.gamma != 1) /* Use gamma tables */ - { - if (that->this.bit_depth == 16 || pm->assume_16_bit_calculations) - { - /* The 16 bit case ends up producing a maximum error of about - * +/-5 in 65535, allow for +/-8 with the given gamma. - */ - that->pm->limit += pow(8./65535, data.gamma); - } - - else - { - /* Rounding to 8 bits in the linear space causes massive errors which - * will trigger the error check in transform_range_check. Fix that - * here by taking the gamma encoding into account. - */ - that->pm->limit += pow(1./255, data.gamma); - } - } - - else - { - /* With no gamma correction a large error comes from the truncation of the - * calculation in the 8 bit case, allow for that here. - */ - if (that->this.bit_depth != 16) - that->pm->limit += 4E-3; - } -} - -static void -image_transform_png_set_rgb_to_gray_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - PNG_CONST int error_action = 1; /* no error, no defines in png.h */ - -# ifdef PNG_FLOATING_POINT_SUPPORTED - png_set_rgb_to_gray(pp, error_action, data.red_to_set, data.green_to_set); -# else - png_set_rgb_to_gray_fixed(pp, error_action, data.red_to_set, - data.green_to_set); -# endif - -# ifdef PNG_READ_cHRM_SUPPORTED - if (that->pm->current_encoding != 0) - { - /* We have an encoding so a cHRM chunk may have been set; if so then - * check that the libpng APIs give the correct (X,Y,Z) values within - * some margin of error for the round trip through the chromaticity - * form. - */ -# ifdef PNG_FLOATING_POINT_SUPPORTED -# define API_function png_get_cHRM_XYZ -# define API_form "FP" -# define API_type double -# define API_cvt(x) (x) -# else -# define API_function png_get_cHRM_XYZ_fixed -# define API_form "fixed" -# define API_type png_fixed_point -# define API_cvt(x) ((double)(x)/PNG_FP_1) -# endif - - API_type rX, gX, bX; - API_type rY, gY, bY; - API_type rZ, gZ, bZ; - - if ((API_function(pp, pi, &rX, &rY, &rZ, &gX, &gY, &gZ, &bX, &bY, &bZ) - & PNG_INFO_cHRM) != 0) - { - double maxe; - PNG_CONST char *el; - color_encoding e, o; - - /* Expect libpng to return a normalized result, but the original - * color space encoding may not be normalized. - */ - modifier_current_encoding(that->pm, &o); - normalize_color_encoding(&o); - - /* Sanity check the pngvalid code - the coefficients should match - * the normalized Y values of the encoding unless they were - * overridden. - */ - if (data.red_to_set == -1 && data.green_to_set == -1 && - (fabs(o.red.Y - data.red_coefficient) > DBL_EPSILON || - fabs(o.green.Y - data.green_coefficient) > DBL_EPSILON || - fabs(o.blue.Y - data.blue_coefficient) > DBL_EPSILON)) - png_error(pp, "internal pngvalid cHRM coefficient error"); - - /* Generate a colour space encoding. */ - e.gamma = o.gamma; /* not used */ - e.red.X = API_cvt(rX); - e.red.Y = API_cvt(rY); - e.red.Z = API_cvt(rZ); - e.green.X = API_cvt(gX); - e.green.Y = API_cvt(gY); - e.green.Z = API_cvt(gZ); - e.blue.X = API_cvt(bX); - e.blue.Y = API_cvt(bY); - e.blue.Z = API_cvt(bZ); - - /* This should match the original one from the png_modifier, within - * the range permitted by the libpng fixed point representation. - */ - maxe = 0; - el = "-"; /* Set to element name with error */ - -# define CHECK(col,x)\ - {\ - double err = fabs(o.col.x - e.col.x);\ - if (err > maxe)\ - {\ - maxe = err;\ - el = #col "(" #x ")";\ - }\ - } - - CHECK(red,X) - CHECK(red,Y) - CHECK(red,Z) - CHECK(green,X) - CHECK(green,Y) - CHECK(green,Z) - CHECK(blue,X) - CHECK(blue,Y) - CHECK(blue,Z) - - /* Here in both fixed and floating cases to check the values read - * from the cHRm chunk. PNG uses fixed point in the cHRM chunk, so - * we can't expect better than +/-.5E-5 on the result, allow 1E-5. - */ - if (maxe >= 1E-5) - { - size_t pos = 0; - char buffer[256]; - - pos = safecat(buffer, sizeof buffer, pos, API_form); - pos = safecat(buffer, sizeof buffer, pos, " cHRM "); - pos = safecat(buffer, sizeof buffer, pos, el); - pos = safecat(buffer, sizeof buffer, pos, " error: "); - pos = safecatd(buffer, sizeof buffer, pos, maxe, 7); - pos = safecat(buffer, sizeof buffer, pos, " "); - /* Print the color space without the gamma value: */ - pos = safecat_color_encoding(buffer, sizeof buffer, pos, &o, 0); - pos = safecat(buffer, sizeof buffer, pos, " -> "); - pos = safecat_color_encoding(buffer, sizeof buffer, pos, &e, 0); - - png_error(pp, buffer); - } - } - } -# endif /* READ_cHRM */ - - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_rgb_to_gray_mod(PNG_CONST image_transform *this, - image_pixel *that, png_const_structp pp, - PNG_CONST transform_display *display) -{ - if ((that->colour_type & PNG_COLOR_MASK_COLOR) != 0) - { - double gray, err; - - if (that->colour_type == PNG_COLOR_TYPE_PALETTE) - image_pixel_convert_PLTE(that); - - /* Image now has RGB channels... */ - { - PNG_CONST png_modifier *pm = display->pm; - PNG_CONST unsigned int sample_depth = that->sample_depth; - int isgray; - double r, g, b; - double rlo, rhi, glo, ghi, blo, bhi, graylo, grayhi; - - /* Do this using interval arithmetic, otherwise it is too difficult to - * handle the errors correctly. - * - * To handle the gamma correction work out the upper and lower bounds - * of the digitized value. Assume rounding here - normally the values - * will be identical after this operation if there is only one - * transform, feel free to delete the png_error checks on this below in - * the future (this is just me trying to ensure it works!) - */ - r = rlo = rhi = that->redf; - rlo -= that->rede; - rlo = digitize(pm, rlo, sample_depth, 1/*round*/); - rhi += that->rede; - rhi = digitize(pm, rhi, sample_depth, 1/*round*/); - - g = glo = ghi = that->greenf; - glo -= that->greene; - glo = digitize(pm, glo, sample_depth, 1/*round*/); - ghi += that->greene; - ghi = digitize(pm, ghi, sample_depth, 1/*round*/); - - b = blo = bhi = that->bluef; - blo -= that->bluee; - blo = digitize(pm, blo, sample_depth, 1/*round*/); - bhi += that->greene; - bhi = digitize(pm, bhi, sample_depth, 1/*round*/); - - isgray = r==g && g==b; - - if (data.gamma != 1) - { - PNG_CONST double power = 1/data.gamma; - PNG_CONST double abse = abserr(pm, sample_depth, sample_depth); - - /* 'abse' is the absolute error permitted in linear calculations. It - * is used here to capture the error permitted in the handling - * (undoing) of the gamma encoding. Once again digitization occurs - * to handle the upper and lower bounds of the values. This is - * where the real errors are introduced. - */ - r = pow(r, power); - rlo = digitize(pm, pow(rlo, power)-abse, sample_depth, 1); - rhi = digitize(pm, pow(rhi, power)+abse, sample_depth, 1); - - g = pow(g, power); - glo = digitize(pm, pow(glo, power)-abse, sample_depth, 1); - ghi = digitize(pm, pow(ghi, power)+abse, sample_depth, 1); - - b = pow(b, power); - blo = digitize(pm, pow(blo, power)-abse, sample_depth, 1); - bhi = digitize(pm, pow(bhi, power)+abse, sample_depth, 1); - } - - /* Now calculate the actual gray values. Although the error in the - * coefficients depends on whether they were specified on the command - * line (in which case truncation to 15 bits happened) or not (rounding - * was used) the maxium error in an individual coefficient is always - * 1/32768, because even in the rounding case the requirement that - * coefficients add up to 32768 can cause a larger rounding error. - * - * The only time when rounding doesn't occur in 1.5.5 and later is when - * the non-gamma code path is used for less than 16 bit data. - */ - gray = r * data.red_coefficient + g * data.green_coefficient + - b * data.blue_coefficient; - - { - PNG_CONST int do_round = data.gamma != 1 || sample_depth == 16; - PNG_CONST double ce = 1. / 32768; - - graylo = digitize(pm, rlo * (data.red_coefficient-ce) + - glo * (data.green_coefficient-ce) + - blo * (data.blue_coefficient-ce), sample_depth, do_round); - if (graylo <= 0) - graylo = 0; - - grayhi = digitize(pm, rhi * (data.red_coefficient+ce) + - ghi * (data.green_coefficient+ce) + - bhi * (data.blue_coefficient+ce), sample_depth, do_round); - if (grayhi >= 1) - grayhi = 1; - } - - /* And invert the gamma. */ - if (data.gamma != 1) - { - PNG_CONST double power = data.gamma; - - gray = pow(gray, power); - graylo = digitize(pm, pow(graylo, power), sample_depth, 1); - grayhi = digitize(pm, pow(grayhi, power), sample_depth, 1); - } - - /* Now the error can be calculated. - * - * If r==g==b because there is no overall gamma correction libpng - * currently preserves the original value. - */ - if (isgray) - err = (that->rede + that->greene + that->bluee)/3; - - else - { - err = fabs(grayhi-gray); - if (fabs(gray - graylo) > err) - err = fabs(graylo-gray); - - /* Check that this worked: */ - if (err > display->pm->limit) - { - size_t pos = 0; - char buffer[128]; - - pos = safecat(buffer, sizeof buffer, pos, "rgb_to_gray error "); - pos = safecatd(buffer, sizeof buffer, pos, err, 6); - pos = safecat(buffer, sizeof buffer, pos, " exceeds limit "); - pos = safecatd(buffer, sizeof buffer, pos, - display->pm->limit, 6); - png_error(pp, buffer); - } - } - } - - that->bluef = that->greenf = that->redf = gray; - that->bluee = that->greene = that->rede = err; - - /* The sBIT is the minium of the three colour channel sBITs. */ - if (that->red_sBIT > that->green_sBIT) - that->red_sBIT = that->green_sBIT; - if (that->red_sBIT > that->blue_sBIT) - that->red_sBIT = that->blue_sBIT; - that->blue_sBIT = that->green_sBIT = that->red_sBIT; - - /* And remove the colour bit in the type: */ - if (that->colour_type == PNG_COLOR_TYPE_RGB) - that->colour_type = PNG_COLOR_TYPE_GRAY; - else if (that->colour_type == PNG_COLOR_TYPE_RGB_ALPHA) - that->colour_type = PNG_COLOR_TYPE_GRAY_ALPHA; - } - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_rgb_to_gray_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(bit_depth) - - this->next = *that; - *that = this; - - return (colour_type & PNG_COLOR_MASK_COLOR) != 0; -} - -#undef data -IT(rgb_to_gray); -#undef PT -#define PT ITSTRUCT(rgb_to_gray) -#undef image_transform_ini -#define image_transform_ini image_transform_default_ini -#endif /* PNG_READ_RGB_TO_GRAY_SUPPORTED */ - -#ifdef PNG_READ_BACKGROUND_SUPPORTED -/* png_set_background(png_structp, png_const_color_16p background_color, - * int background_gamma_code, int need_expand, double background_gamma) - * png_set_background_fixed(png_structp, png_const_color_16p background_color, - * int background_gamma_code, int need_expand, - * png_fixed_point background_gamma) - * - * As with rgb_to_gray this ignores the gamma (at present.) -*/ -#define data ITDATA(background) -static image_pixel data; - -static void -image_transform_png_set_background_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_byte colour_type, bit_depth; - png_byte random_bytes[8]; /* 8 bytes - 64 bits - the biggest pixel */ - png_color_16 back; - - /* We need a background colour, because we don't know exactly what transforms - * have been set we have to supply the colour in the original file format and - * so we need to know what that is! The background colour is stored in the - * transform_display. - */ - RANDOMIZE(random_bytes); - - /* Read the random value, for colour type 3 the background colour is actually - * expressed as a 24bit rgb, not an index. - */ - colour_type = that->this.colour_type; - if (colour_type == 3) - { - colour_type = PNG_COLOR_TYPE_RGB; - bit_depth = 8; - } - - else - bit_depth = that->this.bit_depth; - - image_pixel_init(&data, random_bytes, colour_type, - bit_depth, 0/*x*/, 0/*unused: palette*/); - - /* Extract the background colour from this image_pixel, but make sure the - * unused fields of 'back' are garbage. - */ - RANDOMIZE(back); - - if (colour_type & PNG_COLOR_MASK_COLOR) - { - back.red = (png_uint_16)data.red; - back.green = (png_uint_16)data.green; - back.blue = (png_uint_16)data.blue; - } - - else - back.gray = (png_uint_16)data.red; - -# ifdef PNG_FLOATING_POINT_SUPPORTED - png_set_background(pp, &back, PNG_BACKGROUND_GAMMA_FILE, 1/*need expand*/, - 0); -# else - png_set_background_fixed(pp, &back, PNG_BACKGROUND_GAMMA_FILE, - 1/*need expand*/, 0); -# endif - - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_background_mod(PNG_CONST image_transform *this, - image_pixel *that, png_const_structp pp, - PNG_CONST transform_display *display) -{ - /* Check for tRNS first: */ - if (that->have_tRNS && that->colour_type != PNG_COLOR_TYPE_PALETTE) - image_pixel_add_alpha(that, &display->this); - - /* This is only necessary if the alpha value is less than 1. */ - if (that->alphaf < 1) - { - /* Now we do the background calculation without any gamma correction. */ - if (that->alphaf <= 0) - { - that->redf = data.redf; - that->greenf = data.greenf; - that->bluef = data.bluef; - - that->rede = data.rede; - that->greene = data.greene; - that->bluee = data.bluee; - - that->red_sBIT= data.red_sBIT; - that->green_sBIT= data.green_sBIT; - that->blue_sBIT= data.blue_sBIT; - } - - else /* 0 < alpha < 1 */ - { - double alf = 1 - that->alphaf; - - that->redf = that->redf * that->alphaf + data.redf * alf; - that->rede = that->rede * that->alphaf + data.rede * alf + - DBL_EPSILON; - that->greenf = that->greenf * that->alphaf + data.greenf * alf; - that->greene = that->greene * that->alphaf + data.greene * alf + - DBL_EPSILON; - that->bluef = that->bluef * that->alphaf + data.bluef * alf; - that->bluee = that->bluee * that->alphaf + data.bluee * alf + - DBL_EPSILON; - } - - /* Remove the alpha type and set the alpha (not in that order.) */ - that->alphaf = 1; - that->alphae = 0; - - if (that->colour_type == PNG_COLOR_TYPE_RGB_ALPHA) - that->colour_type = PNG_COLOR_TYPE_RGB; - else if (that->colour_type == PNG_COLOR_TYPE_GRAY_ALPHA) - that->colour_type = PNG_COLOR_TYPE_GRAY; - /* PNG_COLOR_TYPE_PALETTE is not changed */ - } - - this->next->mod(this->next, that, pp, display); -} - -#define image_transform_png_set_background_add image_transform_default_add - -#undef data -IT(background); -#undef PT -#define PT ITSTRUCT(background) -#endif /* PNG_READ_BACKGROUND_SUPPORTED */ - -/* This may just be 'end' if all the transforms are disabled! */ -static image_transform *PNG_CONST image_transform_first = &PT; - -static void -transform_enable(PNG_CONST char *name) -{ - /* Everything starts out enabled, so if we see an 'enable' disabled - * everything else the first time round. - */ - static int all_disabled = 0; - int found_it = 0; - image_transform *list = image_transform_first; - - while (list != &image_transform_end) - { - if (strcmp(list->name, name) == 0) - { - list->enable = 1; - found_it = 1; - } - else if (!all_disabled) - list->enable = 0; - - list = list->list; - } - - all_disabled = 1; - - if (!found_it) - { - fprintf(stderr, "pngvalid: --transform-enable=%s: unknown transform\n", - name); - exit(99); - } -} - -static void -transform_disable(PNG_CONST char *name) -{ - image_transform *list = image_transform_first; - - while (list != &image_transform_end) - { - if (strcmp(list->name, name) == 0) - { - list->enable = 0; - return; - } - - list = list->list; - } - - fprintf(stderr, "pngvalid: --transform-disable=%s: unknown transform\n", - name); - exit(99); -} - -static void -image_transform_reset_count(void) -{ - image_transform *next = image_transform_first; - int count = 0; - - while (next != &image_transform_end) - { - next->local_use = 0; - next->next = 0; - next = next->list; - ++count; - } - - /* This can only happen if we every have more than 32 transforms (excluding - * the end) in the list. - */ - if (count > 32) abort(); -} - -static int -image_transform_test_counter(png_uint_32 counter, unsigned int max) -{ - /* Test the list to see if there is any point contining, given a current - * counter and a 'max' value. - */ - image_transform *next = image_transform_first; - - while (next != &image_transform_end) - { - /* For max 0 or 1 continue until the counter overflows: */ - counter >>= 1; - - /* Continue if any entry hasn't reacked the max. */ - if (max > 1 && next->local_use < max) - return 1; - next = next->list; - } - - return max <= 1 && counter == 0; -} - -static png_uint_32 -image_transform_add(PNG_CONST image_transform **this, unsigned int max, - png_uint_32 counter, char *name, size_t sizeof_name, size_t *pos, - png_byte colour_type, png_byte bit_depth) -{ - for (;;) /* until we manage to add something */ - { - png_uint_32 mask; - image_transform *list; - - /* Find the next counter value, if the counter is zero this is the start - * of the list. This routine always returns the current counter (not the - * next) so it returns 0 at the end and expects 0 at the beginning. - */ - if (counter == 0) /* first time */ - { - image_transform_reset_count(); - if (max <= 1) - counter = 1; - else - counter = random_32(); - } - else /* advance the counter */ - { - switch (max) - { - case 0: ++counter; break; - case 1: counter <<= 1; break; - default: counter = random_32(); break; - } - } - - /* Now add all these items, if possible */ - *this = &image_transform_end; - list = image_transform_first; - mask = 1; - - /* Go through the whole list adding anything that the counter selects: */ - while (list != &image_transform_end) - { - if ((counter & mask) != 0 && list->enable && - (max == 0 || list->local_use < max)) - { - /* Candidate to add: */ - if (list->add(list, this, colour_type, bit_depth) || max == 0) - { - /* Added, so add to the name too. */ - *pos = safecat(name, sizeof_name, *pos, " +"); - *pos = safecat(name, sizeof_name, *pos, list->name); - } - - else - { - /* Not useful and max>0, so remove it from *this: */ - *this = list->next; - list->next = 0; - - /* And, since we know it isn't useful, stop it being added again - * in this run: - */ - list->local_use = max; - } - } - - mask <<= 1; - list = list->list; - } - - /* Now if anything was added we have something to do. */ - if (*this != &image_transform_end) - return counter; - - /* Nothing added, but was there anything in there to add? */ - if (!image_transform_test_counter(counter, max)) - return 0; - } -} - -#ifdef THIS_IS_THE_PROFORMA -static void -image_transform_png_set_@_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_@(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_@_mod(PNG_CONST image_transform *this, - image_pixel *that, png_const_structp pp, - PNG_CONST transform_display *display) -{ - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_@_add(image_transform *this, - PNG_CONST image_transform **that, char *name, size_t sizeof_name, - size_t *pos, png_byte colour_type, png_byte bit_depth) -{ - this->next = *that; - *that = this; - - *pos = safecat(name, sizeof_name, *pos, " +@"); - - return 1; -} - -IT(@); -#endif - -/* png_set_quantize(png_structp, png_colorp palette, int num_palette, - * int maximum_colors, png_const_uint_16p histogram, int full_quantize) - * - * Very difficult to validate this! - */ -/*NOTE: TBD NYI */ - -/* The data layout transforms are handled by swapping our own channel data, - * necessarily these need to happen at the end of the transform list because the - * semantic of the channels changes after these are executed. Some of these, - * like set_shift and set_packing, can't be done at present because they change - * the layout of the data at the sub-sample level so sample() won't get the - * right answer. - */ -/* png_set_invert_alpha */ -/*NOTE: TBD NYI */ - -/* png_set_bgr */ -/*NOTE: TBD NYI */ - -/* png_set_swap_alpha */ -/*NOTE: TBD NYI */ - -/* png_set_swap */ -/*NOTE: TBD NYI */ - -/* png_set_filler, (png_structp png_ptr, png_uint_32 filler, int flags)); */ -/*NOTE: TBD NYI */ - -/* png_set_add_alpha, (png_structp png_ptr, png_uint_32 filler, int flags)); */ -/*NOTE: TBD NYI */ - -/* png_set_packing */ -/*NOTE: TBD NYI */ - -/* png_set_packswap */ -/*NOTE: TBD NYI */ - -/* png_set_invert_mono */ -/*NOTE: TBD NYI */ - -/* png_set_shift(png_structp, png_const_color_8p true_bits) */ -/*NOTE: TBD NYI */ - -static void -perform_transform_test(png_modifier *pm) -{ - png_byte colour_type = 0; - png_byte bit_depth = 0; - unsigned int palette_number = 0; - - while (next_format(&colour_type, &bit_depth, &palette_number)) - { - png_uint_32 counter = 0; - size_t base_pos; - char name[64]; - - base_pos = safecat(name, sizeof name, 0, "transform:"); - - for (;;) - { - size_t pos = base_pos; - PNG_CONST image_transform *list = 0; - - /* 'max' is currently hardwired to '1'; this should be settable on the - * command line. - */ - counter = image_transform_add(&list, 1/*max*/, counter, - name, sizeof name, &pos, colour_type, bit_depth); - - if (counter == 0) - break; - - /* The command line can change this to checking interlaced images. */ - do - { - pm->repeat = 0; - transform_test(pm, FILEID(colour_type, bit_depth, palette_number, - pm->interlace_type, 0, 0, 0), list, name); - - if (fail(pm)) - return; - } - while (pm->repeat); - } - } -} -#endif /* PNG_READ_TRANSFORMS_SUPPORTED */ - -/********************************* GAMMA TESTS ********************************/ -#ifdef PNG_READ_GAMMA_SUPPORTED -/* Reader callbacks and implementations, where they differ from the standard - * ones. - */ -typedef struct gamma_display -{ - standard_display this; - - /* Parameters */ - png_modifier* pm; - double file_gamma; - double screen_gamma; - double background_gamma; - png_byte sbit; - int threshold_test; - int use_input_precision; - int scale16; - int expand16; - int do_background; - png_color_16 background_color; - - /* Local variables */ - double maxerrout; - double maxerrpc; - double maxerrabs; -} gamma_display; - -#define ALPHA_MODE_OFFSET 4 - -static void -gamma_display_init(gamma_display *dp, png_modifier *pm, png_uint_32 id, - double file_gamma, double screen_gamma, png_byte sbit, int threshold_test, - int use_input_precision, int scale16, int expand16, - int do_background, PNG_CONST png_color_16 *pointer_to_the_background_color, - double background_gamma) -{ - /* Standard fields */ - standard_display_init(&dp->this, &pm->this, id, 0/*do_interlace*/, - pm->use_update_info); - - /* Parameter fields */ - dp->pm = pm; - dp->file_gamma = file_gamma; - dp->screen_gamma = screen_gamma; - dp->background_gamma = background_gamma; - dp->sbit = sbit; - dp->threshold_test = threshold_test; - dp->use_input_precision = use_input_precision; - dp->scale16 = scale16; - dp->expand16 = expand16; - dp->do_background = do_background; - if (do_background && pointer_to_the_background_color != 0) - dp->background_color = *pointer_to_the_background_color; - else - memset(&dp->background_color, 0, sizeof dp->background_color); - - /* Local variable fields */ - dp->maxerrout = dp->maxerrpc = dp->maxerrabs = 0; -} - -static void -gamma_info_imp(gamma_display *dp, png_structp pp, png_infop pi) -{ - /* Reuse the standard stuff as appropriate. */ - standard_info_part1(&dp->this, pp, pi); - - /* If requested strip 16 to 8 bits - this is handled automagically below - * because the output bit depth is read from the library. Note that there - * are interactions with sBIT but, internally, libpng makes sbit at most - * PNG_MAX_GAMMA_8 when doing the following. - */ - if (dp->scale16) -# ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED - png_set_scale_16(pp); -# else - /* The following works both in 1.5.4 and earlier versions: */ -# ifdef PNG_READ_16_TO_8_SUPPORTED - png_set_strip_16(pp); -# else - png_error(pp, "scale16 (16 to 8 bit conversion) not supported"); -# endif -# endif - - if (dp->expand16) -# ifdef PNG_READ_EXPAND_16_SUPPORTED - png_set_expand_16(pp); -# else - png_error(pp, "expand16 (8 to 16 bit conversion) not supported"); -# endif - - if (dp->do_background >= ALPHA_MODE_OFFSET) - { -# ifdef PNG_READ_ALPHA_MODE_SUPPORTED - { - /* This tests the alpha mode handling, if supported. */ - int mode = dp->do_background - ALPHA_MODE_OFFSET; - - /* The gamma value is the output gamma, and is in the standard, - * non-inverted, represenation. It provides a default for the PNG file - * gamma, but since the file has a gAMA chunk this does not matter. - */ - PNG_CONST double sg = dp->screen_gamma; -# ifndef PNG_FLOATING_POINT_SUPPORTED - PNG_CONST png_fixed_point g = fix(sg); -# endif - -# ifdef PNG_FLOATING_POINT_SUPPORTED - png_set_alpha_mode(pp, mode, sg); -# else - png_set_alpha_mode_fixed(pp, mode, g); -# endif - - /* However, for the standard Porter-Duff algorithm the output defaults - * to be linear, so if the test requires non-linear output it must be - * corrected here. - */ - if (mode == PNG_ALPHA_STANDARD && sg != 1) - { -# ifdef PNG_FLOATING_POINT_SUPPORTED - png_set_gamma(pp, sg, dp->file_gamma); -# else - png_fixed_point f = fix(dp->file_gamma); - png_set_gamma_fixed(pp, g, f); -# endif - } - } -# else - png_error(pp, "alpha mode handling not supported"); -# endif - } - - else - { - /* Set up gamma processing. */ -# ifdef PNG_FLOATING_POINT_SUPPORTED - png_set_gamma(pp, dp->screen_gamma, dp->file_gamma); -# else - { - png_fixed_point s = fix(dp->screen_gamma); - png_fixed_point f = fix(dp->file_gamma); - png_set_gamma_fixed(pp, s, f); - } -# endif - - if (dp->do_background) - { -# ifdef PNG_READ_BACKGROUND_SUPPORTED - /* NOTE: this assumes the caller provided the correct background gamma! - */ - PNG_CONST double bg = dp->background_gamma; -# ifndef PNG_FLOATING_POINT_SUPPORTED - PNG_CONST png_fixed_point g = fix(bg); -# endif - -# ifdef PNG_FLOATING_POINT_SUPPORTED - png_set_background(pp, &dp->background_color, dp->do_background, - 0/*need_expand*/, bg); -# else - png_set_background_fixed(pp, &dp->background_color, - dp->do_background, 0/*need_expand*/, g); -# endif -# else - png_error(pp, "png_set_background not supported"); -# endif - } - } - - { - int i = dp->this.use_update_info; - /* Always do one call, even if use_update_info is 0. */ - do - png_read_update_info(pp, pi); - while (--i > 0); - } - - /* Now we may get a different cbRow: */ - standard_info_part2(&dp->this, pp, pi, 1 /*images*/); -} - -static void -gamma_info(png_structp pp, png_infop pi) -{ - gamma_info_imp(voidcast(gamma_display*, png_get_progressive_ptr(pp)), pp, - pi); -} - -/* Validate a single component value - the routine gets the input and output - * sample values as unscaled PNG component values along with a cache of all the - * information required to validate the values. - */ -typedef struct validate_info -{ - png_const_structp pp; - gamma_display *dp; - png_byte sbit; - int use_input_precision; - int do_background; - int scale16; - unsigned int sbit_max; - unsigned int isbit_shift; - unsigned int outmax; - - double gamma_correction; /* Overall correction required. */ - double file_inverse; /* Inverse of file gamma. */ - double screen_gamma; - double screen_inverse; /* Inverse of screen gamma. */ - - double background_red; /* Linear background value, red or gray. */ - double background_green; - double background_blue; - - double maxabs; - double maxpc; - double maxcalc; - double maxout; - double maxout_total; /* Total including quantization error */ - double outlog; - int outquant; -} -validate_info; - -static void -init_validate_info(validate_info *vi, gamma_display *dp, png_const_structp pp, - int in_depth, int out_depth) -{ - PNG_CONST unsigned int outmax = (1U<pp = pp; - vi->dp = dp; - - if (dp->sbit > 0 && dp->sbit < in_depth) - { - vi->sbit = dp->sbit; - vi->isbit_shift = in_depth - dp->sbit; - } - - else - { - vi->sbit = (png_byte)in_depth; - vi->isbit_shift = 0; - } - - vi->sbit_max = (1U << vi->sbit)-1; - - /* This mimics the libpng threshold test, '0' is used to prevent gamma - * correction in the validation test. - */ - vi->screen_gamma = dp->screen_gamma; - if (fabs(vi->screen_gamma-1) < PNG_GAMMA_THRESHOLD) - vi->screen_gamma = vi->screen_inverse = 0; - else - vi->screen_inverse = 1/vi->screen_gamma; - - vi->use_input_precision = dp->use_input_precision; - vi->outmax = outmax; - vi->maxabs = abserr(dp->pm, in_depth, out_depth); - vi->maxpc = pcerr(dp->pm, in_depth, out_depth); - vi->maxcalc = calcerr(dp->pm, in_depth, out_depth); - vi->maxout = outerr(dp->pm, in_depth, out_depth); - vi->outquant = output_quantization_factor(dp->pm, in_depth, out_depth); - vi->maxout_total = vi->maxout + vi->outquant * .5; - vi->outlog = outlog(dp->pm, in_depth, out_depth); - - if ((dp->this.colour_type & PNG_COLOR_MASK_ALPHA) != 0 || - (dp->this.colour_type == 3 && dp->this.is_transparent)) - { - vi->do_background = dp->do_background; - - if (vi->do_background != 0) - { - PNG_CONST double bg_inverse = 1/dp->background_gamma; - double r, g, b; - - /* Caller must at least put the gray value into the red channel */ - r = dp->background_color.red; r /= outmax; - g = dp->background_color.green; g /= outmax; - b = dp->background_color.blue; b /= outmax; - -# if 0 - /* libpng doesn't do this optimization, if we do pngvalid will fail. - */ - if (fabs(bg_inverse-1) >= PNG_GAMMA_THRESHOLD) -# endif - { - r = pow(r, bg_inverse); - g = pow(g, bg_inverse); - b = pow(b, bg_inverse); - } - - vi->background_red = r; - vi->background_green = g; - vi->background_blue = b; - } - } - else - vi->do_background = 0; - - if (vi->do_background == 0) - vi->background_red = vi->background_green = vi->background_blue = 0; - - vi->gamma_correction = 1/(dp->file_gamma*dp->screen_gamma); - if (fabs(vi->gamma_correction-1) < PNG_GAMMA_THRESHOLD) - vi->gamma_correction = 0; - - vi->file_inverse = 1/dp->file_gamma; - if (fabs(vi->file_inverse-1) < PNG_GAMMA_THRESHOLD) - vi->file_inverse = 0; - - vi->scale16 = dp->scale16; -} - -/* This function handles composition of a single non-alpha component. The - * argument is the input sample value, in the range 0..1, and the alpha value. - * The result is the composed, linear, input sample. If alpha is less than zero - * this is the alpha component and the function should not be called! - */ -static double -gamma_component_compose(int do_background, double input_sample, double alpha, - double background, int *compose) -{ - switch (do_background) - { -#ifdef PNG_READ_BACKGROUND_SUPPORTED - case PNG_BACKGROUND_GAMMA_SCREEN: - case PNG_BACKGROUND_GAMMA_FILE: - case PNG_BACKGROUND_GAMMA_UNIQUE: - /* Standard PNG background processing. */ - if (alpha < 1) - { - if (alpha > 0) - { - input_sample = input_sample * alpha + background * (1-alpha); - if (compose != NULL) - *compose = 1; - } - - else - input_sample = background; - } - break; -#endif - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - case ALPHA_MODE_OFFSET + PNG_ALPHA_STANDARD: - case ALPHA_MODE_OFFSET + PNG_ALPHA_BROKEN: - /* The components are premultiplied in either case and the output is - * gamma encoded (to get standard Porter-Duff we expect the output - * gamma to be set to 1.0!) - */ - case ALPHA_MODE_OFFSET + PNG_ALPHA_OPTIMIZED: - /* The optimization is that the partial-alpha entries are linear - * while the opaque pixels are gamma encoded, but this only affects the - * output encoding. - */ - if (alpha < 1) - { - if (alpha > 0) - { - input_sample *= alpha; - if (compose != NULL) - *compose = 1; - } - - else - input_sample = 0; - } - break; -#endif - - default: - /* Standard cases where no compositing is done (so the component - * value is already correct.) - */ - UNUSED(alpha) - UNUSED(background) - UNUSED(compose) - break; - } - - return input_sample; -} - -/* This API returns the encoded *input* component, in the range 0..1 */ -static double -gamma_component_validate(PNG_CONST char *name, PNG_CONST validate_info *vi, - PNG_CONST unsigned int id, PNG_CONST unsigned int od, - PNG_CONST double alpha /* <0 for the alpha channel itself */, - PNG_CONST double background /* component background value */) -{ - PNG_CONST unsigned int isbit = id >> vi->isbit_shift; - PNG_CONST unsigned int sbit_max = vi->sbit_max; - PNG_CONST unsigned int outmax = vi->outmax; - PNG_CONST int do_background = vi->do_background; - - double i; - - /* First check on the 'perfect' result obtained from the digitized input - * value, id, and compare this against the actual digitized result, 'od'. - * 'i' is the input result in the range 0..1: - */ - i = isbit; i /= sbit_max; - - /* Check for the fast route: if we don't do any background composition or if - * this is the alpha channel ('alpha' < 0) or if the pixel is opaque then - * just use the gamma_correction field to correct to the final output gamma. - */ - if (alpha == 1 /* opaque pixel component */ || !do_background -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - || do_background == ALPHA_MODE_OFFSET + PNG_ALPHA_PNG -#endif - || (alpha < 0 /* alpha channel */ -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - && do_background != ALPHA_MODE_OFFSET + PNG_ALPHA_BROKEN -#endif - )) - { - /* Then get the gamma corrected version of 'i' and compare to 'od', any - * error less than .5 is insignificant - just quantization of the output - * value to the nearest digital value (nevertheless the error is still - * recorded - it's interesting ;-) - */ - double encoded_sample = i; - double encoded_error; - - /* alpha less than 0 indicates the alpha channel, which is always linear - */ - if (alpha >= 0 && vi->gamma_correction > 0) - encoded_sample = pow(encoded_sample, vi->gamma_correction); - encoded_sample *= outmax; - - encoded_error = fabs(od-encoded_sample); - - if (encoded_error > vi->dp->maxerrout) - vi->dp->maxerrout = encoded_error; - - if (encoded_error < vi->maxout_total && encoded_error < vi->outlog) - return i; - } - - /* The slow route - attempt to do linear calculations. */ - /* There may be an error, or background processing is required, so calculate - * the actual sample values - unencoded light intensity values. Note that in - * practice these are not completely unencoded because they include a - * 'viewing correction' to decrease or (normally) increase the perceptual - * contrast of the image. There's nothing we can do about this - we don't - * know what it is - so assume the unencoded value is perceptually linear. - */ - { - double input_sample = i; /* In range 0..1 */ - double output, error, encoded_sample, encoded_error; - double es_lo, es_hi; - int compose = 0; /* Set to one if composition done */ - int output_is_encoded; /* Set if encoded to screen gamma */ - int log_max_error = 1; /* Check maximum error values */ - png_const_charp pass = 0; /* Reason test passes (or 0 for fail) */ - - /* Convert to linear light (with the above caveat.) The alpha channel is - * already linear. - */ - if (alpha >= 0) - { - int tcompose; - - if (vi->file_inverse > 0) - input_sample = pow(input_sample, vi->file_inverse); - - /* Handle the compose processing: */ - tcompose = 0; - input_sample = gamma_component_compose(do_background, input_sample, - alpha, background, &tcompose); - - if (tcompose) - compose = 1; - } - - /* And similarly for the output value, but we need to check the background - * handling to linearize it correctly. - */ - output = od; - output /= outmax; - - output_is_encoded = vi->screen_gamma > 0; - - if (alpha < 0) /* The alpha channel */ - { -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - if (do_background != ALPHA_MODE_OFFSET + PNG_ALPHA_BROKEN) -#endif - { - /* In all other cases the output alpha channel is linear already, - * don't log errors here, they are much larger in linear data. - */ - output_is_encoded = 0; - log_max_error = 0; - } - } - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - else /* A component */ - { - if (do_background == ALPHA_MODE_OFFSET + PNG_ALPHA_OPTIMIZED && - alpha < 1) /* the optimized case - linear output */ - { - if (alpha > 0) log_max_error = 0; - output_is_encoded = 0; - } - } -#endif - - if (output_is_encoded) - output = pow(output, vi->screen_gamma); - - /* Calculate (or recalculate) the encoded_sample value and repeat the - * check above (unnecessary if we took the fast route, but harmless.) - */ - encoded_sample = input_sample; - if (output_is_encoded) - encoded_sample = pow(encoded_sample, vi->screen_inverse); - encoded_sample *= outmax; - - encoded_error = fabs(od-encoded_sample); - - /* Don't log errors in the alpha channel, or the 'optimized' case, - * neither are significant to the overall perception. - */ - if (log_max_error && encoded_error > vi->dp->maxerrout) - vi->dp->maxerrout = encoded_error; - - if (encoded_error < vi->maxout_total) - { - if (encoded_error < vi->outlog) - return i; - - /* Test passed but error is bigger than the log limit, record why the - * test passed: - */ - pass = "less than maxout:\n"; - } - - /* i: the original input value in the range 0..1 - * - * pngvalid calculations: - * input_sample: linear result; i linearized and composed, range 0..1 - * encoded_sample: encoded result; input_sample scaled to ouput bit depth - * - * libpng calculations: - * output: linear result; od scaled to 0..1 and linearized - * od: encoded result from libpng - */ - - /* Now we have the numbers for real errors, both absolute values as as a - * percentage of the correct value (output): - */ - error = fabs(input_sample-output); - - if (log_max_error && error > vi->dp->maxerrabs) - vi->dp->maxerrabs = error; - - /* The following is an attempt to ignore the tendency of quantization to - * dominate the percentage errors for lower result values: - */ - if (log_max_error && input_sample > .5) - { - double percentage_error = error/input_sample; - if (percentage_error > vi->dp->maxerrpc) - vi->dp->maxerrpc = percentage_error; - } - - /* Now calculate the digitization limits for 'encoded_sample' using the - * 'max' values. Note that maxout is in the encoded space but maxpc and - * maxabs are in linear light space. - * - * First find the maximum error in linear light space, range 0..1: - */ - { - double tmp = input_sample * vi->maxpc; - if (tmp < vi->maxabs) tmp = vi->maxabs; - /* If 'compose' is true the composition was done in linear space using - * integer arithmetic. This introduces an extra error of +/- 0.5 (at - * least) in the integer space used. 'maxcalc' records this, taking - * into account the possibility that even for 16 bit output 8 bit space - * may have been used. - */ - if (compose && tmp < vi->maxcalc) tmp = vi->maxcalc; - - /* The 'maxout' value refers to the encoded result, to compare with - * this encode input_sample adjusted by the maximum error (tmp) above. - */ - es_lo = encoded_sample - vi->maxout; - - if (es_lo > 0 && input_sample-tmp > 0) - { - double low_value = input_sample-tmp; - if (output_is_encoded) - low_value = pow(low_value, vi->screen_inverse); - low_value *= outmax; - if (low_value < es_lo) es_lo = low_value; - - /* Quantize this appropriately: */ - es_lo = ceil(es_lo / vi->outquant - .5) * vi->outquant; - } - - else - es_lo = 0; - - es_hi = encoded_sample + vi->maxout; - - if (es_hi < outmax && input_sample+tmp < 1) - { - double high_value = input_sample+tmp; - if (output_is_encoded) - high_value = pow(high_value, vi->screen_inverse); - high_value *= outmax; - if (high_value > es_hi) es_hi = high_value; - - es_hi = floor(es_hi / vi->outquant + .5) * vi->outquant; - } - - else - es_hi = outmax; - } - - /* The primary test is that the final encoded value returned by the - * library should be between the two limits (inclusive) that were - * calculated above. - */ - if (od >= es_lo && od <= es_hi) - { - /* The value passes, but we may need to log the information anyway. */ - if (encoded_error < vi->outlog) - return i; - - if (pass == 0) - pass = "within digitization limits:\n"; - } - - { - /* There has been an error in processing, or we need to log this - * value. - */ - double is_lo, is_hi; - - /* pass is set at this point if either of the tests above would have - * passed. Don't do these additional tests here - just log the - * original [es_lo..es_hi] values. - */ - if (pass == 0 && vi->use_input_precision) - { - /* Ok, something is wrong - this actually happens in current libpng - * 16-to-8 processing. Assume that the input value (id, adjusted - * for sbit) can be anywhere between value-.5 and value+.5 - quite a - * large range if sbit is low. - */ - double tmp = (isbit - .5)/sbit_max; - - if (tmp <= 0) - tmp = 0; - - else if (alpha >= 0 && vi->file_inverse > 0 && tmp < 1) - tmp = pow(tmp, vi->file_inverse); - - tmp = gamma_component_compose(do_background, tmp, alpha, background, - NULL); - - if (output_is_encoded && tmp > 0 && tmp < 1) - tmp = pow(tmp, vi->screen_inverse); - - is_lo = ceil(outmax * tmp - vi->maxout_total); - - if (is_lo < 0) - is_lo = 0; - - tmp = (isbit + .5)/sbit_max; - - if (tmp <= 0) - tmp = 0; - - else if (alpha >= 0 && vi->file_inverse > 0 && tmp < 1) - tmp = pow(tmp, vi->file_inverse); - - tmp = gamma_component_compose(do_background, tmp, alpha, background, - NULL); - - if (output_is_encoded && tmp > 0 && tmp < 1) - tmp = pow(tmp, vi->screen_inverse); - - is_hi = floor(outmax * tmp + vi->maxout_total); - - if (is_hi > outmax) - is_hi = outmax; - - if (!(od < is_lo || od > is_hi)) - { - if (encoded_error < vi->outlog) - return i; - - pass = "within input precision limits:\n"; - } - - /* One last chance. If this is an alpha channel and the 16to8 - * option has been used and 'inaccurate' scaling is used then the - * bit reduction is obtained by simply using the top 8 bits of the - * value. - * - * This is only done for older libpng versions when the 'inaccurate' - * (chop) method of scaling was used. - */ -# ifndef PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED -# if PNG_LIBPNG_VER < 10504 - /* This may be required for other components in the future, - * but at present the presence of gamma correction effectively - * prevents the errors in the component scaling (I don't quite - * understand why, but since it's better this way I care not - * to ask, JB 20110419.) - */ - if (pass == 0 && alpha < 0 && vi->scale16 && vi->sbit > 8 && - vi->sbit + vi->isbit_shift == 16) - { - tmp = ((id >> 8) - .5)/255; - - if (tmp > 0) - { - is_lo = ceil(outmax * tmp - vi->maxout_total); - if (is_lo < 0) is_lo = 0; - } - - else - is_lo = 0; - - tmp = ((id >> 8) + .5)/255; - - if (tmp < 1) - { - is_hi = floor(outmax * tmp + vi->maxout_total); - if (is_hi > outmax) is_hi = outmax; - } - - else - is_hi = outmax; - - if (!(od < is_lo || od > is_hi)) - { - if (encoded_error < vi->outlog) - return i; - - pass = "within 8 bit limits:\n"; - } - } -# endif -# endif - } - else /* !use_input_precision */ - is_lo = es_lo, is_hi = es_hi; - - /* Attempt to output a meaningful error/warning message: the message - * output depends on the background/composite operation being performed - * because this changes what parameters were actually used above. - */ - { - size_t pos = 0; - /* Need either 1/255 or 1/65535 precision here; 3 or 6 decimal - * places. Just use outmax to work out which. - */ - int precision = (outmax >= 1000 ? 6 : 3); - int use_input=1, use_background=0, do_compose=0; - char msg[256]; - - if (pass != 0) - pos = safecat(msg, sizeof msg, pos, "\n\t"); - - /* Set up the various flags, the output_is_encoded flag above - * is also used below. do_compose is just a double check. - */ - switch (do_background) - { -# ifdef PNG_READ_BACKGROUND_SUPPORTED - case PNG_BACKGROUND_GAMMA_SCREEN: - case PNG_BACKGROUND_GAMMA_FILE: - case PNG_BACKGROUND_GAMMA_UNIQUE: - use_background = (alpha >= 0 && alpha < 1); - /*FALL THROUGH*/ -# endif -# ifdef PNG_READ_ALPHA_MODE_SUPPORTED - case ALPHA_MODE_OFFSET + PNG_ALPHA_STANDARD: - case ALPHA_MODE_OFFSET + PNG_ALPHA_BROKEN: - case ALPHA_MODE_OFFSET + PNG_ALPHA_OPTIMIZED: -# endif /* ALPHA_MODE_SUPPORTED */ - do_compose = (alpha > 0 && alpha < 1); - use_input = (alpha != 0); - break; - - default: - break; - } - - /* Check the 'compose' flag */ - if (compose != do_compose) - png_error(vi->pp, "internal error (compose)"); - - /* 'name' is the component name */ - pos = safecat(msg, sizeof msg, pos, name); - pos = safecat(msg, sizeof msg, pos, "("); - pos = safecatn(msg, sizeof msg, pos, id); - if (use_input || pass != 0/*logging*/) - { - if (isbit != id) - { - /* sBIT has reduced the precision of the input: */ - pos = safecat(msg, sizeof msg, pos, ", sbit("); - pos = safecatn(msg, sizeof msg, pos, vi->sbit); - pos = safecat(msg, sizeof msg, pos, "): "); - pos = safecatn(msg, sizeof msg, pos, isbit); - } - pos = safecat(msg, sizeof msg, pos, "/"); - /* The output is either "id/max" or "id sbit(sbit): isbit/max" */ - pos = safecatn(msg, sizeof msg, pos, vi->sbit_max); - } - pos = safecat(msg, sizeof msg, pos, ")"); - - /* A component may have been multiplied (in linear space) by the - * alpha value, 'compose' says whether this is relevant. - */ - if (compose || pass != 0) - { - /* If any form of composition is being done report our - * calculated linear value here (the code above doesn't record - * the input value before composition is performed, so what - * gets reported is the value after composition.) - */ - if (use_input || pass != 0) - { - if (vi->file_inverse > 0) - { - pos = safecat(msg, sizeof msg, pos, "^"); - pos = safecatd(msg, sizeof msg, pos, vi->file_inverse, 2); - } - - else - pos = safecat(msg, sizeof msg, pos, "[linear]"); - - pos = safecat(msg, sizeof msg, pos, "*(alpha)"); - pos = safecatd(msg, sizeof msg, pos, alpha, precision); - } - - /* Now record the *linear* background value if it was used - * (this function is not passed the original, non-linear, - * value but it is contained in the test name.) - */ - if (use_background) - { - pos = safecat(msg, sizeof msg, pos, use_input ? "+" : " "); - pos = safecat(msg, sizeof msg, pos, "(background)"); - pos = safecatd(msg, sizeof msg, pos, background, precision); - pos = safecat(msg, sizeof msg, pos, "*"); - pos = safecatd(msg, sizeof msg, pos, 1-alpha, precision); - } - } - - /* Report the calculated value (input_sample) and the linearized - * libpng value (output) unless this is just a component gamma - * correction. - */ - if (compose || alpha < 0 || pass != 0) - { - pos = safecat(msg, sizeof msg, pos, - pass != 0 ? " =\n\t" : " = "); - pos = safecatd(msg, sizeof msg, pos, input_sample, precision); - pos = safecat(msg, sizeof msg, pos, " (libpng: "); - pos = safecatd(msg, sizeof msg, pos, output, precision); - pos = safecat(msg, sizeof msg, pos, ")"); - - /* Finally report the output gamma encoding, if any. */ - if (output_is_encoded) - { - pos = safecat(msg, sizeof msg, pos, " ^"); - pos = safecatd(msg, sizeof msg, pos, vi->screen_inverse, 2); - pos = safecat(msg, sizeof msg, pos, "(to screen) ="); - } - - else - pos = safecat(msg, sizeof msg, pos, " [screen is linear] ="); - } - - if ((!compose && alpha >= 0) || pass != 0) - { - if (pass != 0) /* logging */ - pos = safecat(msg, sizeof msg, pos, "\n\t[overall:"); - - /* This is the non-composition case, the internal linear - * values are irrelevant (though the log below will reveal - * them.) Output a much shorter warning/error message and report - * the overall gamma correction. - */ - if (vi->gamma_correction > 0) - { - pos = safecat(msg, sizeof msg, pos, " ^"); - pos = safecatd(msg, sizeof msg, pos, vi->gamma_correction, 2); - pos = safecat(msg, sizeof msg, pos, "(gamma correction) ="); - } - - else - pos = safecat(msg, sizeof msg, pos, - " [no gamma correction] ="); - - if (pass != 0) - pos = safecat(msg, sizeof msg, pos, "]"); - } - - /* This is our calculated encoded_sample which should (but does - * not) match od: - */ - pos = safecat(msg, sizeof msg, pos, pass != 0 ? "\n\t" : " "); - pos = safecatd(msg, sizeof msg, pos, is_lo, 1); - pos = safecat(msg, sizeof msg, pos, " < "); - pos = safecatd(msg, sizeof msg, pos, encoded_sample, 1); - pos = safecat(msg, sizeof msg, pos, " (libpng: "); - pos = safecatn(msg, sizeof msg, pos, od); - pos = safecat(msg, sizeof msg, pos, ")"); - pos = safecat(msg, sizeof msg, pos, "/"); - pos = safecatn(msg, sizeof msg, pos, outmax); - pos = safecat(msg, sizeof msg, pos, " < "); - pos = safecatd(msg, sizeof msg, pos, is_hi, 1); - - if (pass == 0) /* The error condition */ - { -# ifdef PNG_WARNINGS_SUPPORTED - png_warning(vi->pp, msg); -# else - store_warning(vi->pp, msg); -# endif - } - - else /* logging this value */ - store_verbose(&vi->dp->pm->this, vi->pp, pass, msg); - } - } - } - - return i; -} - -static void -gamma_image_validate(gamma_display *dp, png_const_structp pp, - png_infop pi) -{ - /* Get some constants derived from the input and output file formats: */ - PNG_CONST png_store* PNG_CONST ps = dp->this.ps; - PNG_CONST png_byte in_ct = dp->this.colour_type; - PNG_CONST png_byte in_bd = dp->this.bit_depth; - PNG_CONST png_uint_32 w = dp->this.w; - PNG_CONST png_uint_32 h = dp->this.h; - PNG_CONST size_t cbRow = dp->this.cbRow; - PNG_CONST png_byte out_ct = png_get_color_type(pp, pi); - PNG_CONST png_byte out_bd = png_get_bit_depth(pp, pi); - - /* There are three sources of error, firstly the quantization in the - * file encoding, determined by sbit and/or the file depth, secondly - * the output (screen) gamma and thirdly the output file encoding. - * - * Since this API receives the screen and file gamma in double - * precision it is possible to calculate an exact answer given an input - * pixel value. Therefore we assume that the *input* value is exact - - * sample/maxsample - calculate the corresponding gamma corrected - * output to the limits of double precision arithmetic and compare with - * what libpng returns. - * - * Since the library must quantize the output to 8 or 16 bits there is - * a fundamental limit on the accuracy of the output of +/-.5 - this - * quantization limit is included in addition to the other limits - * specified by the paramaters to the API. (Effectively, add .5 - * everywhere.) - * - * The behavior of the 'sbit' paramter is defined by section 12.5 - * (sample depth scaling) of the PNG spec. That section forces the - * decoder to assume that the PNG values have been scaled if sBIT is - * present: - * - * png-sample = floor( input-sample * (max-out/max-in) + .5); - * - * This means that only a subset of the possible PNG values should - * appear in the input. However, the spec allows the encoder to use a - * variety of approximations to the above and doesn't require any - * restriction of the values produced. - * - * Nevertheless the spec requires that the upper 'sBIT' bits of the - * value stored in a PNG file be the original sample bits. - * Consequently the code below simply scales the top sbit bits by - * (1<this.palette; - PNG_CONST int in_is_transparent = dp->this.is_transparent; - int out_npalette = -1; - int out_is_transparent = 0; /* Just refers to the palette case */ - store_palette out_palette; - validate_info vi; - - /* Check for row overwrite errors */ - store_image_check(dp->this.ps, pp, 0); - - /* Supply the input and output sample depths here - 8 for an indexed image, - * otherwise the bit depth. - */ - init_validate_info(&vi, dp, pp, in_ct==3?8:in_bd, out_ct==3?8:out_bd); - - processing = (vi.gamma_correction > 0 && !dp->threshold_test) - || in_bd != out_bd || in_ct != out_ct || vi.do_background; - - /* TODO: FIX THIS: MAJOR BUG! If the transformations all happen inside - * the palette there is no way of finding out, because libpng fails to - * update the palette on png_read_update_info. Indeed, libpng doesn't - * even do the required work until much later, when it doesn't have any - * info pointer. Oops. For the moment 'processing' is turned off if - * out_ct is palette. - */ - if (in_ct == 3 && out_ct == 3) - processing = 0; - - if (processing && out_ct == 3) - out_is_transparent = read_palette(out_palette, &out_npalette, pp, pi); - - for (y=0; ythis.palette[in_index].alpha : - sample(std, in_ct, in_bd, x, samples_per_pixel); - - unsigned int output_alpha = 65536 /* as a flag value */; - - if (out_ct == 3) - { - if (out_is_transparent) - output_alpha = out_palette[out_index].alpha; - } - - else if ((out_ct & PNG_COLOR_MASK_ALPHA) != 0) - output_alpha = sample(pRow, out_ct, out_bd, x, - samples_per_pixel); - - if (output_alpha != 65536) - alpha = gamma_component_validate("alpha", &vi, input_alpha, - output_alpha, -1/*alpha*/, 0/*background*/); - - else /* no alpha in output */ - { - /* This is a copy of the calculation of 'i' above in order to - * have the alpha value to use in the background calculation. - */ - alpha = input_alpha >> vi.isbit_shift; - alpha /= vi.sbit_max; - } - } - - /* Handle grayscale or RGB components. */ - if ((in_ct & PNG_COLOR_MASK_COLOR) == 0) /* grayscale */ - (void)gamma_component_validate("gray", &vi, - sample(std, in_ct, in_bd, x, 0), - sample(pRow, out_ct, out_bd, x, 0), alpha/*component*/, - vi.background_red); - else /* RGB or palette */ - { - (void)gamma_component_validate("red", &vi, - in_ct == 3 ? in_palette[in_index].red : - sample(std, in_ct, in_bd, x, 0), - out_ct == 3 ? out_palette[out_index].red : - sample(pRow, out_ct, out_bd, x, 0), - alpha/*component*/, vi.background_red); - - (void)gamma_component_validate("green", &vi, - in_ct == 3 ? in_palette[in_index].green : - sample(std, in_ct, in_bd, x, 1), - out_ct == 3 ? out_palette[out_index].green : - sample(pRow, out_ct, out_bd, x, 1), - alpha/*component*/, vi.background_green); - - (void)gamma_component_validate("blue", &vi, - in_ct == 3 ? in_palette[in_index].blue : - sample(std, in_ct, in_bd, x, 2), - out_ct == 3 ? out_palette[out_index].blue : - sample(pRow, out_ct, out_bd, x, 2), - alpha/*component*/, vi.background_blue); - } - } - } - - else if (memcmp(std, pRow, cbRow) != 0) - { - char msg[64]; - - /* No transform is expected on the threshold tests. */ - sprintf(msg, "gamma: below threshold row %lu changed", - (unsigned long)y); - - png_error(pp, msg); - } - } /* row (y) loop */ - - dp->this.ps->validated = 1; -} - -static void -gamma_end(png_structp ppIn, png_infop pi) -{ - png_const_structp pp = ppIn; - gamma_display *dp = voidcast(gamma_display*, png_get_progressive_ptr(pp)); - - if (!dp->this.speed) - gamma_image_validate(dp, pp, pi); - else - dp->this.ps->validated = 1; -} - -/* A single test run checking a gamma transformation. - * - * maxabs: maximum absolute error as a fraction - * maxout: maximum output error in the output units - * maxpc: maximum percentage error (as a percentage) - */ -static void -gamma_test(png_modifier *pmIn, PNG_CONST png_byte colour_typeIn, - PNG_CONST png_byte bit_depthIn, PNG_CONST int palette_numberIn, - PNG_CONST int interlace_typeIn, - PNG_CONST double file_gammaIn, PNG_CONST double screen_gammaIn, - PNG_CONST png_byte sbitIn, PNG_CONST int threshold_testIn, - PNG_CONST char *name, - PNG_CONST int use_input_precisionIn, PNG_CONST int scale16In, - PNG_CONST int expand16In, PNG_CONST int do_backgroundIn, - PNG_CONST png_color_16 *bkgd_colorIn, double bkgd_gammaIn) -{ - gamma_display d; - context(&pmIn->this, fault); - - gamma_display_init(&d, pmIn, FILEID(colour_typeIn, bit_depthIn, - palette_numberIn, interlace_typeIn, 0, 0, 0), - file_gammaIn, screen_gammaIn, sbitIn, - threshold_testIn, use_input_precisionIn, scale16In, - expand16In, do_backgroundIn, bkgd_colorIn, bkgd_gammaIn); - - Try - { - png_structp pp; - png_infop pi; - gama_modification gama_mod; - srgb_modification srgb_mod; - sbit_modification sbit_mod; - - /* For the moment don't use the png_modifier support here. */ - d.pm->encoding_counter = 0; - modifier_set_encoding(d.pm); /* Just resets everything */ - d.pm->current_gamma = d.file_gamma; - - /* Make an appropriate modifier to set the PNG file gamma to the - * given gamma value and the sBIT chunk to the given precision. - */ - d.pm->modifications = NULL; - gama_modification_init(&gama_mod, d.pm, d.file_gamma); - srgb_modification_init(&srgb_mod, d.pm, 127 /*delete*/); - if (d.sbit > 0) - sbit_modification_init(&sbit_mod, d.pm, d.sbit); - - modification_reset(d.pm->modifications); - - /* Get a png_struct for writing the image. */ - pp = set_modifier_for_read(d.pm, &pi, d.this.id, name); - standard_palette_init(&d.this); - - /* Introduce the correct read function. */ - if (d.pm->this.progressive) - { - /* Share the row function with the standard implementation. */ - png_set_progressive_read_fn(pp, &d, gamma_info, progressive_row, - gamma_end); - - /* Now feed data into the reader until we reach the end: */ - modifier_progressive_read(d.pm, pp, pi); - } - else - { - /* modifier_read expects a png_modifier* */ - png_set_read_fn(pp, d.pm, modifier_read); - - /* Check the header values: */ - png_read_info(pp, pi); - - /* Process the 'info' requirements. Only one image is generated */ - gamma_info_imp(&d, pp, pi); - - sequential_row(&d.this, pp, pi, -1, 0); - - if (!d.this.speed) - gamma_image_validate(&d, pp, pi); - else - d.this.ps->validated = 1; - } - - modifier_reset(d.pm); - - if (d.pm->log && !d.threshold_test && !d.this.speed) - fprintf(stderr, "%d bit %s %s: max error %f (%.2g, %2g%%)\n", - d.this.bit_depth, colour_types[d.this.colour_type], name, - d.maxerrout, d.maxerrabs, 100*d.maxerrpc); - - /* Log the summary values too. */ - if (d.this.colour_type == 0 || d.this.colour_type == 4) - { - switch (d.this.bit_depth) - { - case 1: - break; - - case 2: - if (d.maxerrout > d.pm->error_gray_2) - d.pm->error_gray_2 = d.maxerrout; - - break; - - case 4: - if (d.maxerrout > d.pm->error_gray_4) - d.pm->error_gray_4 = d.maxerrout; - - break; - - case 8: - if (d.maxerrout > d.pm->error_gray_8) - d.pm->error_gray_8 = d.maxerrout; - - break; - - case 16: - if (d.maxerrout > d.pm->error_gray_16) - d.pm->error_gray_16 = d.maxerrout; - - break; - - default: - png_error(pp, "bad bit depth (internal: 1)"); - } - } - - else if (d.this.colour_type == 2 || d.this.colour_type == 6) - { - switch (d.this.bit_depth) - { - case 8: - - if (d.maxerrout > d.pm->error_color_8) - d.pm->error_color_8 = d.maxerrout; - - break; - - case 16: - - if (d.maxerrout > d.pm->error_color_16) - d.pm->error_color_16 = d.maxerrout; - - break; - - default: - png_error(pp, "bad bit depth (internal: 2)"); - } - } - - else if (d.this.colour_type == 3) - { - if (d.maxerrout > d.pm->error_indexed) - d.pm->error_indexed = d.maxerrout; - } - } - - Catch(fault) - modifier_reset(voidcast(png_modifier*,(void*)fault)); -} - -static void gamma_threshold_test(png_modifier *pm, png_byte colour_type, - png_byte bit_depth, int interlace_type, double file_gamma, - double screen_gamma) -{ - size_t pos = 0; - char name[64]; - pos = safecat(name, sizeof name, pos, "threshold "); - pos = safecatd(name, sizeof name, pos, file_gamma, 3); - pos = safecat(name, sizeof name, pos, "/"); - pos = safecatd(name, sizeof name, pos, screen_gamma, 3); - - (void)gamma_test(pm, colour_type, bit_depth, 0/*palette*/, interlace_type, - file_gamma, screen_gamma, 0/*sBIT*/, 1/*threshold test*/, name, - 0 /*no input precision*/, - 0 /*no scale16*/, 0 /*no expand16*/, 0 /*no background*/, 0 /*hence*/, - 0 /*no background gamma*/); -} - -static void -perform_gamma_threshold_tests(png_modifier *pm) -{ - png_byte colour_type = 0; - png_byte bit_depth = 0; - unsigned int palette_number = 0; - - /* Don't test more than one instance of each palette - it's pointless, in - * fact this test is somewhat excessive since libpng doesn't make this - * decision based on colour type or bit depth! - */ - while (next_format(&colour_type, &bit_depth, &palette_number)) - if (palette_number == 0) - { - double test_gamma = 1.0; - while (test_gamma >= .4) - { - /* There's little point testing the interlacing vs non-interlacing, - * but this can be set from the command line. - */ - gamma_threshold_test(pm, colour_type, bit_depth, pm->interlace_type, - test_gamma, 1/test_gamma); - test_gamma *= .95; - } - - /* And a special test for sRGB */ - gamma_threshold_test(pm, colour_type, bit_depth, pm->interlace_type, - .45455, 2.2); - - if (fail(pm)) - return; - } -} - -static void gamma_transform_test(png_modifier *pm, - PNG_CONST png_byte colour_type, PNG_CONST png_byte bit_depth, - PNG_CONST int palette_number, - PNG_CONST int interlace_type, PNG_CONST double file_gamma, - PNG_CONST double screen_gamma, PNG_CONST png_byte sbit, - PNG_CONST int use_input_precision, PNG_CONST int scale16) -{ - size_t pos = 0; - char name[64]; - - if (sbit != bit_depth && sbit != 0) - { - pos = safecat(name, sizeof name, pos, "sbit("); - pos = safecatn(name, sizeof name, pos, sbit); - pos = safecat(name, sizeof name, pos, ") "); - } - - else - pos = safecat(name, sizeof name, pos, "gamma "); - - if (scale16) - pos = safecat(name, sizeof name, pos, "16to8 "); - - pos = safecatd(name, sizeof name, pos, file_gamma, 3); - pos = safecat(name, sizeof name, pos, "->"); - pos = safecatd(name, sizeof name, pos, screen_gamma, 3); - - gamma_test(pm, colour_type, bit_depth, palette_number, interlace_type, - file_gamma, screen_gamma, sbit, 0, name, use_input_precision, - scale16, pm->test_gamma_expand16, 0 , 0, 0); -} - -static void perform_gamma_transform_tests(png_modifier *pm) -{ - png_byte colour_type = 0; - png_byte bit_depth = 0; - unsigned int palette_number = 0; - - while (next_format(&colour_type, &bit_depth, &palette_number)) - { - unsigned int i, j; - - for (i=0; ingamma_tests; ++i) for (j=0; jngamma_tests; ++j) - if (i != j) - { - gamma_transform_test(pm, colour_type, bit_depth, palette_number, - pm->interlace_type, 1/pm->gammas[i], pm->gammas[j], 0/*sBIT*/, - pm->use_input_precision, 0 /*do not scale16*/); - - if (fail(pm)) - return; - } - } -} - -static void perform_gamma_sbit_tests(png_modifier *pm) -{ - png_byte sbit; - - /* The only interesting cases are colour and grayscale, alpha is ignored here - * for overall speed. Only bit depths where sbit is less than the bit depth - * are tested. - */ - for (sbit=pm->sbitlow; sbit<(1<ngamma_tests; ++i) - { - unsigned int j; - - for (j=0; jngamma_tests; ++j) if (i != j) - { - gamma_transform_test(pm, colour_type, bit_depth, npalette, - pm->interlace_type, 1/pm->gammas[i], pm->gammas[j], - sbit, pm->use_input_precision_sbit, 0 /*scale16*/); - - if (fail(pm)) - return; - } - } - } - } -} - -/* Note that this requires a 16 bit source image but produces 8 bit output, so - * we only need the 16bit write support, but the 16 bit images are only - * generated if DO_16BIT is defined. - */ -#ifdef DO_16BIT -static void perform_gamma_scale16_tests(png_modifier *pm) -{ -# ifndef PNG_MAX_GAMMA_8 -# define PNG_MAX_GAMMA_8 11 -# endif - /* Include the alpha cases here. Note that sbit matches the internal value - * used by the library - otherwise we will get spurious errors from the - * internal sbit style approximation. - * - * The threshold test is here because otherwise the 16 to 8 conversion will - * proceed *without* gamma correction, and the tests above will fail (but not - * by much) - this could be fixed, it only appears with the -g option. - */ - unsigned int i, j; - for (i=0; ingamma_tests; ++i) - { - for (j=0; jngamma_tests; ++j) - { - if (i != j && - fabs(pm->gammas[j]/pm->gammas[i]-1) >= PNG_GAMMA_THRESHOLD) - { - gamma_transform_test(pm, 0, 16, 0, pm->interlace_type, - 1/pm->gammas[i], pm->gammas[j], PNG_MAX_GAMMA_8, - pm->use_input_precision_16to8, 1 /*scale16*/); - - if (fail(pm)) - return; - - gamma_transform_test(pm, 2, 16, 0, pm->interlace_type, - 1/pm->gammas[i], pm->gammas[j], PNG_MAX_GAMMA_8, - pm->use_input_precision_16to8, 1 /*scale16*/); - - if (fail(pm)) - return; - - gamma_transform_test(pm, 4, 16, 0, pm->interlace_type, - 1/pm->gammas[i], pm->gammas[j], PNG_MAX_GAMMA_8, - pm->use_input_precision_16to8, 1 /*scale16*/); - - if (fail(pm)) - return; - - gamma_transform_test(pm, 6, 16, 0, pm->interlace_type, - 1/pm->gammas[i], pm->gammas[j], PNG_MAX_GAMMA_8, - pm->use_input_precision_16to8, 1 /*scale16*/); - - if (fail(pm)) - return; - } - } - } -} -#endif /* 16 to 8 bit conversion */ - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) ||\ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) -static void gamma_composition_test(png_modifier *pm, - PNG_CONST png_byte colour_type, PNG_CONST png_byte bit_depth, - PNG_CONST int palette_number, - PNG_CONST int interlace_type, PNG_CONST double file_gamma, - PNG_CONST double screen_gamma, - PNG_CONST int use_input_precision, PNG_CONST int do_background, - PNG_CONST int expand_16) -{ - size_t pos = 0; - png_const_charp base; - double bg; - char name[128]; - png_color_16 background; - - /* Make up a name and get an appropriate background gamma value. */ - switch (do_background) - { - default: - base = ""; - bg = 4; /* should not be used */ - break; - case PNG_BACKGROUND_GAMMA_SCREEN: - base = " bckg(Screen):"; - bg = 1/screen_gamma; - break; - case PNG_BACKGROUND_GAMMA_FILE: - base = " bckg(File):"; - bg = file_gamma; - break; - case PNG_BACKGROUND_GAMMA_UNIQUE: - base = " bckg(Unique):"; - /* This tests the handling of a unique value, the math is such that the - * value tends to be <1, but is neither screen nor file (even if they - * match!) - */ - bg = (file_gamma + screen_gamma) / 3; - break; -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - case ALPHA_MODE_OFFSET + PNG_ALPHA_PNG: - base = " alpha(PNG)"; - bg = 4; /* should not be used */ - break; - case ALPHA_MODE_OFFSET + PNG_ALPHA_STANDARD: - base = " alpha(Porter-Duff)"; - bg = 4; /* should not be used */ - break; - case ALPHA_MODE_OFFSET + PNG_ALPHA_OPTIMIZED: - base = " alpha(Optimized)"; - bg = 4; /* should not be used */ - break; - case ALPHA_MODE_OFFSET + PNG_ALPHA_BROKEN: - base = " alpha(Broken)"; - bg = 4; /* should not be used */ - break; -#endif - } - - /* Use random background values - the background is always presented in the - * output space (8 or 16 bit components). - */ - if (expand_16 || bit_depth == 16) - { - png_uint_32 r = random_32(); - - background.red = (png_uint_16)r; - background.green = (png_uint_16)(r >> 16); - r = random_32(); - background.blue = (png_uint_16)r; - background.gray = (png_uint_16)(r >> 16); - } - - else /* 8 bit colors */ - { - png_uint_32 r = random_32(); - - background.red = (png_byte)r; - background.green = (png_byte)(r >> 8); - background.blue = (png_byte)(r >> 16); - background.gray = (png_byte)(r >> 24); - } - - background.index = 193; /* rgb(193,193,193) to detect errors */ - if (!(colour_type & PNG_COLOR_MASK_COLOR)) - { - /* Grayscale input, we do not convert to RGB (TBD), so we must set the - * background to gray - else libpng seems to fail. - */ - background.red = background.green = background.blue = background.gray; - } - - pos = safecat(name, sizeof name, pos, "gamma "); - pos = safecatd(name, sizeof name, pos, file_gamma, 3); - pos = safecat(name, sizeof name, pos, "->"); - pos = safecatd(name, sizeof name, pos, screen_gamma, 3); - - pos = safecat(name, sizeof name, pos, base); - if (do_background < ALPHA_MODE_OFFSET) - { - /* Include the background color and gamma in the name: */ - pos = safecat(name, sizeof name, pos, "("); - /* This assumes no expand gray->rgb - the current code won't handle that! - */ - if (colour_type & PNG_COLOR_MASK_COLOR) - { - pos = safecatn(name, sizeof name, pos, background.red); - pos = safecat(name, sizeof name, pos, ","); - pos = safecatn(name, sizeof name, pos, background.green); - pos = safecat(name, sizeof name, pos, ","); - pos = safecatn(name, sizeof name, pos, background.blue); - } - else - pos = safecatn(name, sizeof name, pos, background.gray); - pos = safecat(name, sizeof name, pos, ")^"); - pos = safecatd(name, sizeof name, pos, bg, 3); - } - - gamma_test(pm, colour_type, bit_depth, palette_number, interlace_type, - file_gamma, screen_gamma, 0/*sBIT*/, 0, name, use_input_precision, - 0/*strip 16*/, expand_16, do_background, &background, bg); -} - - -static void -perform_gamma_composition_tests(png_modifier *pm, int do_background, - int expand_16) -{ - png_byte colour_type = 0; - png_byte bit_depth = 0; - unsigned int palette_number = 0; - - /* Skip the non-alpha cases - there is no setting of a transparency colour at - * present. - */ - while (next_format(&colour_type, &bit_depth, &palette_number)) - if ((colour_type & PNG_COLOR_MASK_ALPHA) != 0) - { - unsigned int i, j; - - /* Don't skip the i==j case here - it's relevant. */ - for (i=0; ingamma_tests; ++i) for (j=0; jngamma_tests; ++j) - { - gamma_composition_test(pm, colour_type, bit_depth, palette_number, - pm->interlace_type, 1/pm->gammas[i], pm->gammas[j], - pm->use_input_precision, do_background, expand_16); - - if (fail(pm)) - return; - } - } -} -#endif /* READ_BACKGROUND || READ_ALPHA_MODE */ - -static void -init_gamma_errors(png_modifier *pm) -{ - pm->error_gray_2 = pm->error_gray_4 = pm->error_gray_8 = 0; - pm->error_color_8 = 0; - pm->error_indexed = 0; - pm->error_gray_16 = pm->error_color_16 = 0; -} - -static void -summarize_gamma_errors(png_modifier *pm, png_const_charp who, int low_bit_depth) -{ - if (who) - printf("Gamma correction with %s:\n", who); - - if (low_bit_depth) - { - printf(" 2 bit gray: %.5f\n", pm->error_gray_2); - printf(" 4 bit gray: %.5f\n", pm->error_gray_4); - printf(" 8 bit gray: %.5f\n", pm->error_gray_8); - printf(" 8 bit color: %.5f\n", pm->error_color_8); - printf(" indexed: %.5f\n", pm->error_indexed); - } - -#ifdef DO_16BIT - printf(" 16 bit gray: %.5f\n", pm->error_gray_16); - printf(" 16 bit color: %.5f\n", pm->error_color_16); -#endif -} - -static void -perform_gamma_test(png_modifier *pm, int summary) -{ - /*TODO: remove this*/ - /* Save certain values for the temporary overrides below. */ - unsigned int calculations_use_input_precision = - pm->calculations_use_input_precision; -# ifdef PNG_READ_BACKGROUND_SUPPORTED - double maxout8 = pm->maxout8; -# endif - - /* First some arbitrary no-transform tests: */ - if (!pm->this.speed && pm->test_gamma_threshold) - { - perform_gamma_threshold_tests(pm); - - if (fail(pm)) - return; - } - - /* Now some real transforms. */ - if (pm->test_gamma_transform) - { - init_gamma_errors(pm); - /*TODO: remove this. Necessary because the current libpng - * implementation works in 8 bits: - */ - if (pm->test_gamma_expand16) - pm->calculations_use_input_precision = 1; - perform_gamma_transform_tests(pm); - if (!calculations_use_input_precision) - pm->calculations_use_input_precision = 0; - - if (summary) - { - printf("Gamma correction error summary\n\n"); - printf("The printed value is the maximum error in the pixel values\n"); - printf("calculated by the libpng gamma correction code. The error\n"); - printf("is calculated as the difference between the output pixel\n"); - printf("value (always an integer) and the ideal value from the\n"); - printf("libpng specification (typically not an integer).\n\n"); - - printf("Expect this value to be less than .5 for 8 bit formats,\n"); - printf("less than 1 for formats with fewer than 8 bits and a small\n"); - printf("number (typically less than 5) for the 16 bit formats.\n"); - printf("For performance reasons the value for 16 bit formats\n"); - printf("increases when the image file includes an sBIT chunk.\n\n"); - - summarize_gamma_errors(pm, 0/*who*/, 1); - } - } - - /* The sbit tests produce much larger errors: */ - if (pm->test_gamma_sbit) - { - init_gamma_errors(pm); - perform_gamma_sbit_tests(pm); - - if (summary) - summarize_gamma_errors(pm, "sBIT", pm->sbitlow < 8U); - } - -#ifdef DO_16BIT /* Should be READ_16BIT_SUPPORTED */ - if (pm->test_gamma_scale16) - { - /* The 16 to 8 bit strip operations: */ - init_gamma_errors(pm); - perform_gamma_scale16_tests(pm); - - if (summary) - { - printf("Gamma correction with 16 to 8 bit reduction:\n"); - printf(" 16 bit gray: %.5f\n", pm->error_gray_16); - printf(" 16 bit color: %.5f\n", pm->error_color_16); - } - } -#endif - -#ifdef PNG_READ_BACKGROUND_SUPPORTED - if (pm->test_gamma_background) - { - init_gamma_errors(pm); - - /*TODO: remove this. Necessary because the current libpng - * implementation works in 8 bits: - */ - if (pm->test_gamma_expand16) - { - pm->calculations_use_input_precision = 1; - pm->maxout8 = .499; /* because the 16 bit background is smashed */ - } - perform_gamma_composition_tests(pm, PNG_BACKGROUND_GAMMA_UNIQUE, - pm->test_gamma_expand16); - if (!calculations_use_input_precision) - pm->calculations_use_input_precision = 0; - pm->maxout8 = maxout8; - - if (summary) - summarize_gamma_errors(pm, "background", 1); - } -#endif - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - if (pm->test_gamma_alpha_mode) - { - int do_background; - - init_gamma_errors(pm); - - /*TODO: remove this. Necessary because the current libpng - * implementation works in 8 bits: - */ - if (pm->test_gamma_expand16) - pm->calculations_use_input_precision = 1; - for (do_background = ALPHA_MODE_OFFSET + PNG_ALPHA_STANDARD; - do_background <= ALPHA_MODE_OFFSET + PNG_ALPHA_BROKEN && !fail(pm); - ++do_background) - perform_gamma_composition_tests(pm, do_background, - pm->test_gamma_expand16); - if (!calculations_use_input_precision) - pm->calculations_use_input_precision = 0; - - if (summary) - summarize_gamma_errors(pm, "alpha mode", 1); - } -#endif -} -#endif /* PNG_READ_GAMMA_SUPPORTED */ -#endif /* PNG_READ_SUPPORTED */ - -/* INTERLACE MACRO VALIDATION */ -/* This is copied verbatim from the specification, it is simply the pass - * number in which each pixel in each 8x8 tile appears. The array must - * be indexed adam7[y][x] and notice that the pass numbers are based at - * 1, not 0 - the base libpng uses. - */ -static PNG_CONST -png_byte adam7[8][8] = -{ - { 1,6,4,6,2,6,4,6 }, - { 7,7,7,7,7,7,7,7 }, - { 5,6,5,6,5,6,5,6 }, - { 7,7,7,7,7,7,7,7 }, - { 3,6,4,6,3,6,4,6 }, - { 7,7,7,7,7,7,7,7 }, - { 5,6,5,6,5,6,5,6 }, - { 7,7,7,7,7,7,7,7 } -}; - -/* This routine validates all the interlace support macros in png.h for - * a variety of valid PNG widths and heights. It uses a number of similarly - * named internal routines that feed off the above array. - */ -static png_uint_32 -png_pass_start_row(int pass) -{ - int x, y; - ++pass; - for (y=0; y<8; ++y) for (x=0; x<8; ++x) if (adam7[y][x] == pass) - return y; - return 0xf; -} - -static png_uint_32 -png_pass_start_col(int pass) -{ - int x, y; - ++pass; - for (x=0; x<8; ++x) for (y=0; y<8; ++y) if (adam7[y][x] == pass) - return x; - return 0xf; -} - -static int -png_pass_row_shift(int pass) -{ - int x, y, base=(-1), inc=8; - ++pass; - for (y=0; y<8; ++y) for (x=0; x<8; ++x) if (adam7[y][x] == pass) - { - if (base == (-1)) - base = y; - else if (base == y) - {} - else if (inc == y-base) - base=y; - else if (inc == 8) - inc = y-base, base=y; - else if (inc != y-base) - return 0xff; /* error - more than one 'inc' value! */ - } - - if (base == (-1)) return 0xfe; /* error - no row in pass! */ - - /* The shift is always 1, 2 or 3 - no pass has all the rows! */ - switch (inc) - { -case 2: return 1; -case 4: return 2; -case 8: return 3; -default: break; - } - - /* error - unrecognized 'inc' */ - return (inc << 8) + 0xfd; -} - -static int -png_pass_col_shift(int pass) -{ - int x, y, base=(-1), inc=8; - ++pass; - for (x=0; x<8; ++x) for (y=0; y<8; ++y) if (adam7[y][x] == pass) - { - if (base == (-1)) - base = x; - else if (base == x) - {} - else if (inc == x-base) - base=x; - else if (inc == 8) - inc = x-base, base=x; - else if (inc != x-base) - return 0xff; /* error - more than one 'inc' value! */ - } - - if (base == (-1)) return 0xfe; /* error - no row in pass! */ - - /* The shift is always 1, 2 or 3 - no pass has all the rows! */ - switch (inc) - { -case 1: return 0; /* pass 7 has all the columns */ -case 2: return 1; -case 4: return 2; -case 8: return 3; -default: break; - } - - /* error - unrecognized 'inc' */ - return (inc << 8) + 0xfd; -} - -static png_uint_32 -png_row_from_pass_row(png_uint_32 yIn, int pass) -{ - /* By examination of the array: */ - switch (pass) - { -case 0: return yIn * 8; -case 1: return yIn * 8; -case 2: return yIn * 8 + 4; -case 3: return yIn * 4; -case 4: return yIn * 4 + 2; -case 5: return yIn * 2; -case 6: return yIn * 2 + 1; -default: break; - } - - return 0xff; /* bad pass number */ -} - -static png_uint_32 -png_col_from_pass_col(png_uint_32 xIn, int pass) -{ - /* By examination of the array: */ - switch (pass) - { -case 0: return xIn * 8; -case 1: return xIn * 8 + 4; -case 2: return xIn * 4; -case 3: return xIn * 4 + 2; -case 4: return xIn * 2; -case 5: return xIn * 2 + 1; -case 6: return xIn; -default: break; - } - - return 0xff; /* bad pass number */ -} - -static int -png_row_in_interlace_pass(png_uint_32 y, int pass) -{ - /* Is row 'y' in pass 'pass'? */ - int x; - y &= 7; - ++pass; - for (x=0; x<8; ++x) if (adam7[y][x] == pass) - return 1; - - return 0; -} - -static int -png_col_in_interlace_pass(png_uint_32 x, int pass) -{ - /* Is column 'x' in pass 'pass'? */ - int y; - x &= 7; - ++pass; - for (y=0; y<8; ++y) if (adam7[y][x] == pass) - return 1; - - return 0; -} - -static png_uint_32 -png_pass_rows(png_uint_32 height, int pass) -{ - png_uint_32 tiles = height>>3; - png_uint_32 rows = 0; - unsigned int x, y; - - height &= 7; - ++pass; - for (y=0; y<8; ++y) for (x=0; x<8; ++x) if (adam7[y][x] == pass) - { - rows += tiles; - if (y < height) ++rows; - break; /* i.e. break the 'x', column, loop. */ - } - - return rows; -} - -static png_uint_32 -png_pass_cols(png_uint_32 width, int pass) -{ - png_uint_32 tiles = width>>3; - png_uint_32 cols = 0; - unsigned int x, y; - - width &= 7; - ++pass; - for (x=0; x<8; ++x) for (y=0; y<8; ++y) if (adam7[y][x] == pass) - { - cols += tiles; - if (x < width) ++cols; - break; /* i.e. break the 'y', row, loop. */ - } - - return cols; -} - -static void -perform_interlace_macro_validation(void) -{ - /* The macros to validate, first those that depend only on pass: - * - * PNG_PASS_START_ROW(pass) - * PNG_PASS_START_COL(pass) - * PNG_PASS_ROW_SHIFT(pass) - * PNG_PASS_COL_SHIFT(pass) - */ - int pass; - - for (pass=0; pass<7; ++pass) - { - png_uint_32 m, f, v; - - m = PNG_PASS_START_ROW(pass); - f = png_pass_start_row(pass); - if (m != f) - { - fprintf(stderr, "PNG_PASS_START_ROW(%d) = %u != %x\n", pass, m, f); - exit(99); - } - - m = PNG_PASS_START_COL(pass); - f = png_pass_start_col(pass); - if (m != f) - { - fprintf(stderr, "PNG_PASS_START_COL(%d) = %u != %x\n", pass, m, f); - exit(99); - } - - m = PNG_PASS_ROW_SHIFT(pass); - f = png_pass_row_shift(pass); - if (m != f) - { - fprintf(stderr, "PNG_PASS_ROW_SHIFT(%d) = %u != %x\n", pass, m, f); - exit(99); - } - - m = PNG_PASS_COL_SHIFT(pass); - f = png_pass_col_shift(pass); - if (m != f) - { - fprintf(stderr, "PNG_PASS_COL_SHIFT(%d) = %u != %x\n", pass, m, f); - exit(99); - } - - /* Macros that depend on the image or sub-image height too: - * - * PNG_PASS_ROWS(height, pass) - * PNG_PASS_COLS(width, pass) - * PNG_ROW_FROM_PASS_ROW(yIn, pass) - * PNG_COL_FROM_PASS_COL(xIn, pass) - * PNG_ROW_IN_INTERLACE_PASS(y, pass) - * PNG_COL_IN_INTERLACE_PASS(x, pass) - */ - for (v=0;;) - { - /* First the base 0 stuff: */ - m = PNG_ROW_FROM_PASS_ROW(v, pass); - f = png_row_from_pass_row(v, pass); - if (m != f) - { - fprintf(stderr, "PNG_ROW_FROM_PASS_ROW(%u, %d) = %u != %x\n", - v, pass, m, f); - exit(99); - } - - m = PNG_COL_FROM_PASS_COL(v, pass); - f = png_col_from_pass_col(v, pass); - if (m != f) - { - fprintf(stderr, "PNG_COL_FROM_PASS_COL(%u, %d) = %u != %x\n", - v, pass, m, f); - exit(99); - } - - m = PNG_ROW_IN_INTERLACE_PASS(v, pass); - f = png_row_in_interlace_pass(v, pass); - if (m != f) - { - fprintf(stderr, "PNG_ROW_IN_INTERLACE_PASS(%u, %d) = %u != %x\n", - v, pass, m, f); - exit(99); - } - - m = PNG_COL_IN_INTERLACE_PASS(v, pass); - f = png_col_in_interlace_pass(v, pass); - if (m != f) - { - fprintf(stderr, "PNG_COL_IN_INTERLACE_PASS(%u, %d) = %u != %x\n", - v, pass, m, f); - exit(99); - } - - /* Then the base 1 stuff: */ - ++v; - m = PNG_PASS_ROWS(v, pass); - f = png_pass_rows(v, pass); - if (m != f) - { - fprintf(stderr, "PNG_PASS_ROWS(%u, %d) = %u != %x\n", - v, pass, m, f); - exit(99); - } - - m = PNG_PASS_COLS(v, pass); - f = png_pass_cols(v, pass); - if (m != f) - { - fprintf(stderr, "PNG_PASS_COLS(%u, %d) = %u != %x\n", - v, pass, m, f); - exit(99); - } - - /* Move to the next v - the stepping algorithm starts skipping - * values above 1024. - */ - if (v > 1024) - { - if (v == PNG_UINT_31_MAX) - break; - - v = (v << 1) ^ v; - if (v >= PNG_UINT_31_MAX) - v = PNG_UINT_31_MAX-1; - } - } - } -} - -/* Test color encodings. These values are back-calculated from the published - * chromaticities. The values are accurate to about 14 decimal places; 15 are - * given. These values are much more accurate than the ones given in the spec, - * which typically don't exceed 4 decimal places. This allows testing of the - * libpng code to its theoretical accuracy of 4 decimal places. (If pngvalid - * used the published errors the 'slack' permitted would have to be +/-.5E-4 or - * more.) - * - * The png_modifier code assumes that encodings[0] is sRGB and treats it - * specially: do not change the first entry in this list! - */ -static PNG_CONST color_encoding test_encodings[] = -{ -/* sRGB: must be first in this list! */ -/*gamma:*/ { 1/2.2, -/*red: */ { 0.412390799265959, 0.212639005871510, 0.019330818715592 }, -/*green:*/ { 0.357584339383878, 0.715168678767756, 0.119194779794626 }, -/*blue: */ { 0.180480788401834, 0.072192315360734, 0.950532152249660} }, -/* Kodak ProPhoto (wide gamut) */ -/*gamma:*/ { 1/1.6 /*approximate: uses 1.8 power law compared to sRGB 2.4*/, -/*red: */ { 0.797760489672303, 0.288071128229293, 0.000000000000000 }, -/*green:*/ { 0.135185837175740, 0.711843217810102, 0.000000000000000 }, -/*blue: */ { 0.031349349581525, 0.000085653960605, 0.825104602510460} }, -/* Adobe RGB (1998) */ -/*gamma:*/ { 1/(2+51./256), -/*red: */ { 0.576669042910131, 0.297344975250536, 0.027031361386412 }, -/*green:*/ { 0.185558237906546, 0.627363566255466, 0.070688852535827 }, -/*blue: */ { 0.188228646234995, 0.075291458493998, 0.991337536837639} }, -/* Adobe Wide Gamut RGB */ -/*gamma:*/ { 1/(2+51./256), -/*red: */ { 0.716500716779386, 0.258728243040113, 0.000000000000000 }, -/*green:*/ { 0.101020574397477, 0.724682314948566, 0.051211818965388 }, -/*blue: */ { 0.146774385252705, 0.016589442011321, 0.773892783545073} }, -}; - -/* signal handler - * - * This attempts to trap signals and escape without crashing. It needs a - * context pointer so that it can throw an exception (call longjmp) to recover - * from the condition; this is handled by making the png_modifier used by 'main' - * into a global variable. - */ -static png_modifier pm; - -static void signal_handler(int signum) -{ - - size_t pos = 0; - char msg[64]; - - pos = safecat(msg, sizeof msg, pos, "caught signal: "); - - switch (signum) - { - case SIGABRT: - pos = safecat(msg, sizeof msg, pos, "abort"); - break; - - case SIGFPE: - pos = safecat(msg, sizeof msg, pos, "floating point exception"); - break; - - case SIGILL: - pos = safecat(msg, sizeof msg, pos, "illegal instruction"); - break; - - case SIGINT: - pos = safecat(msg, sizeof msg, pos, "interrupt"); - break; - - case SIGSEGV: - pos = safecat(msg, sizeof msg, pos, "invalid memory access"); - break; - - case SIGTERM: - pos = safecat(msg, sizeof msg, pos, "termination request"); - break; - - default: - pos = safecat(msg, sizeof msg, pos, "unknown "); - pos = safecatn(msg, sizeof msg, pos, signum); - break; - } - - store_log(&pm.this, NULL/*png_structp*/, msg, 1/*error*/); - - /* And finally throw an exception so we can keep going, unless this is - * SIGTERM in which case stop now. - */ - if (signum != SIGTERM) - { - struct exception_context *the_exception_context = - &pm.this.exception_context; - - Throw &pm.this; - } - - else - exit(1); -} - -/* main program */ -int main(int argc, char **argv) -{ - volatile int summary = 1; /* Print the error summary at the end */ - volatile int memstats = 0; /* Print memory statistics at the end */ - - /* Create the given output file on success: */ - PNG_CONST char *volatile touch = NULL; - - /* This is an array of standard gamma values (believe it or not I've seen - * every one of these mentioned somewhere.) - * - * In the following list the most useful values are first! - */ - static double - gammas[]={2.2, 1.0, 2.2/1.45, 1.8, 1.5, 2.4, 2.5, 2.62, 2.9}; - - /* This records the command and arguments: */ - size_t cp = 0; - char command[1024]; - - anon_context(&pm.this); - - /* Add appropriate signal handlers, just the ANSI specified ones: */ - signal(SIGABRT, signal_handler); - signal(SIGFPE, signal_handler); - signal(SIGILL, signal_handler); - signal(SIGINT, signal_handler); - signal(SIGSEGV, signal_handler); - signal(SIGTERM, signal_handler); - -#ifdef HAVE_FEENABLEEXCEPT - /* Only required to enable FP exceptions on platforms where they start off - * disabled; this is not necessary but if it is not done pngvalid will likely - * end up ignoring FP conditions that other platforms fault. - */ - feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW); -#endif - - modifier_init(&pm); - - /* Preallocate the image buffer, because we know how big it needs to be, - * note that, for testing purposes, it is deliberately mis-aligned by tag - * bytes either side. All rows have an additional five bytes of padding for - * overwrite checking. - */ - store_ensure_image(&pm.this, NULL, 2, TRANSFORM_ROWMAX, TRANSFORM_HEIGHTMAX); - - /* Don't give argv[0], it's normally some horrible libtool string: */ - cp = safecat(command, sizeof command, cp, "pngvalid"); - - /* Default to error on warning: */ - pm.this.treat_warnings_as_errors = 1; - - /* Store the test gammas */ - pm.gammas = gammas; - pm.ngammas = (sizeof gammas) / (sizeof gammas[0]); - pm.ngamma_tests = 0; /* default to off */ - - /* And the test encodings */ - pm.encodings = test_encodings; - pm.nencodings = (sizeof test_encodings) / (sizeof test_encodings[0]); - - pm.sbitlow = 8U; /* because libpng doesn't do sBIT below 8! */ - /* The following allows results to pass if they correspond to anything in the - * transformed range [input-.5,input+.5]; this is is required because of the - * way libpng treates the 16_TO_8 flag when building the gamma tables. - * - * TODO: review this - */ - pm.use_input_precision_16to8 = 1U; - - /* Some default values (set the behavior for 'make check' here). - * These values simply control the maximum error permitted in the gamma - * transformations. The practial limits for human perception are described - * below (the setting for maxpc16), however for 8 bit encodings it isn't - * possible to meet the accepted capabilities of human vision - i.e. 8 bit - * images can never be good enough, regardless of encoding. - */ - pm.maxout8 = .1; /* Arithmetic error in *encoded* value */ - pm.maxabs8 = .00005; /* 1/20000 */ - pm.maxcalc8 = .004; /* +/-1 in 8 bits for compose errors */ - pm.maxpc8 = .499; /* I.e., .499% fractional error */ - pm.maxout16 = .499; /* Error in *encoded* value */ - pm.maxabs16 = .00005;/* 1/20000 */ - pm.maxcalc16 =.000015;/* +/-1 in 16 bits for compose errors */ - - /* NOTE: this is a reasonable perceptual limit. We assume that humans can - * perceive light level differences of 1% over a 100:1 range, so we need to - * maintain 1 in 10000 accuracy (in linear light space), which is what the - * following guarantees. It also allows significantly higher errors at - * higher 16 bit values, which is important for performance. The actual - * maximum 16 bit error is about +/-1.9 in the fixed point implementation but - * this is only allowed for values >38149 by the following: - */ - pm.maxpc16 = .005; /* I.e., 1/200% - 1/20000 */ - - /* Now parse the command line options. */ - while (--argc >= 1) - { - int catmore = 0; /* Set if the argument has an argument. */ - - /* Record each argument for posterity: */ - cp = safecat(command, sizeof command, cp, " "); - cp = safecat(command, sizeof command, cp, *++argv); - - if (strcmp(*argv, "-v") == 0) - pm.this.verbose = 1; - - else if (strcmp(*argv, "-l") == 0) - pm.log = 1; - - else if (strcmp(*argv, "-q") == 0) - summary = pm.this.verbose = pm.log = 0; - - else if (strcmp(*argv, "-w") == 0) - pm.this.treat_warnings_as_errors = 0; - - else if (strcmp(*argv, "--speed") == 0) - pm.this.speed = 1, pm.ngamma_tests = pm.ngammas, pm.test_standard = 0, - summary = 0; - - else if (strcmp(*argv, "--memory") == 0) - memstats = 1; - - else if (strcmp(*argv, "--size") == 0) - pm.test_size = 1; - - else if (strcmp(*argv, "--nosize") == 0) - pm.test_size = 0; - - else if (strcmp(*argv, "--standard") == 0) - pm.test_standard = 1; - - else if (strcmp(*argv, "--nostandard") == 0) - pm.test_standard = 0; - - else if (strcmp(*argv, "--transform") == 0) - pm.test_transform = 1; - - else if (strcmp(*argv, "--notransform") == 0) - pm.test_transform = 0; - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED - else if (strncmp(*argv, "--transform-disable=", - sizeof "--transform-disable") == 0) - { - pm.test_transform = 1; - transform_disable(*argv + sizeof "--transform-disable"); - } - - else if (strncmp(*argv, "--transform-enable=", - sizeof "--transform-enable") == 0) - { - pm.test_transform = 1; - transform_enable(*argv + sizeof "--transform-enable"); - } -#endif /* PNG_READ_TRANSFORMS_SUPPORTED */ - - else if (strcmp(*argv, "--gamma") == 0) - { - /* Just do two gamma tests here (2.2 and linear) for speed: */ - pm.ngamma_tests = 2U; - pm.test_gamma_threshold = 1; - pm.test_gamma_transform = 1; - pm.test_gamma_sbit = 1; - pm.test_gamma_scale16 = 1; - pm.test_gamma_background = 1; - pm.test_gamma_alpha_mode = 1; - } - - else if (strcmp(*argv, "--nogamma") == 0) - pm.ngamma_tests = 0; - - else if (strcmp(*argv, "--gamma-threshold") == 0) - pm.ngamma_tests = 2U, pm.test_gamma_threshold = 1; - - else if (strcmp(*argv, "--nogamma-threshold") == 0) - pm.test_gamma_threshold = 0; - - else if (strcmp(*argv, "--gamma-transform") == 0) - pm.ngamma_tests = 2U, pm.test_gamma_transform = 1; - - else if (strcmp(*argv, "--nogamma-transform") == 0) - pm.test_gamma_transform = 0; - - else if (strcmp(*argv, "--gamma-sbit") == 0) - pm.ngamma_tests = 2U, pm.test_gamma_sbit = 1; - - else if (strcmp(*argv, "--nogamma-sbit") == 0) - pm.test_gamma_sbit = 0; - - else if (strcmp(*argv, "--gamma-16-to-8") == 0) - pm.ngamma_tests = 2U, pm.test_gamma_scale16 = 1; - - else if (strcmp(*argv, "--nogamma-16-to-8") == 0) - pm.test_gamma_scale16 = 0; - - else if (strcmp(*argv, "--gamma-background") == 0) - pm.ngamma_tests = 2U, pm.test_gamma_background = 1; - - else if (strcmp(*argv, "--nogamma-background") == 0) - pm.test_gamma_background = 0; - - else if (strcmp(*argv, "--gamma-alpha-mode") == 0) - pm.ngamma_tests = 2U, pm.test_gamma_alpha_mode = 1; - - else if (strcmp(*argv, "--nogamma-alpha-mode") == 0) - pm.test_gamma_alpha_mode = 0; - - else if (strcmp(*argv, "--expand16") == 0) - pm.test_gamma_expand16 = 1; - - else if (strcmp(*argv, "--noexpand16") == 0) - pm.test_gamma_expand16 = 0; - - else if (strcmp(*argv, "--more-gammas") == 0) - pm.ngamma_tests = 3U; - - else if (strcmp(*argv, "--all-gammas") == 0) - pm.ngamma_tests = pm.ngammas; - - else if (strcmp(*argv, "--progressive-read") == 0) - pm.this.progressive = 1; - - else if (strcmp(*argv, "--use-update-info") == 0) - ++pm.use_update_info; /* Can call multiple times */ - - else if (strcmp(*argv, "--interlace") == 0) - pm.interlace_type = PNG_INTERLACE_ADAM7; - - else if (strcmp(*argv, "--use-input-precision") == 0) - pm.use_input_precision = 1; - - else if (strcmp(*argv, "--calculations-use-input-precision") == 0) - pm.calculations_use_input_precision = 1; - - else if (strcmp(*argv, "--assume-16-bit-calculations") == 0) - pm.assume_16_bit_calculations = 1; - - else if (strcmp(*argv, "--calculations-follow-bit-depth") == 0) - pm.calculations_use_input_precision = - pm.assume_16_bit_calculations = 0; - - else if (strcmp(*argv, "--exhaustive") == 0) - pm.test_exhaustive = 1; - - else if (argc > 1 && strcmp(*argv, "--sbitlow") == 0) - --argc, pm.sbitlow = (png_byte)atoi(*++argv), catmore = 1; - - else if (argc > 1 && strcmp(*argv, "--touch") == 0) - --argc, touch = *++argv, catmore = 1; - - else if (argc > 1 && strncmp(*argv, "--max", 5) == 0) - { - --argc; - - if (strcmp(5+*argv, "abs8") == 0) - pm.maxabs8 = atof(*++argv); - - else if (strcmp(5+*argv, "abs16") == 0) - pm.maxabs16 = atof(*++argv); - - else if (strcmp(5+*argv, "calc8") == 0) - pm.maxcalc8 = atof(*++argv); - - else if (strcmp(5+*argv, "calc16") == 0) - pm.maxcalc16 = atof(*++argv); - - else if (strcmp(5+*argv, "out8") == 0) - pm.maxout8 = atof(*++argv); - - else if (strcmp(5+*argv, "out16") == 0) - pm.maxout16 = atof(*++argv); - - else if (strcmp(5+*argv, "pc8") == 0) - pm.maxpc8 = atof(*++argv); - - else if (strcmp(5+*argv, "pc16") == 0) - pm.maxpc16 = atof(*++argv); - - else - { - fprintf(stderr, "pngvalid: %s: unknown 'max' option\n", *argv); - exit(99); - } - - catmore = 1; - } - - else if (strcmp(*argv, "--log8") == 0) - --argc, pm.log8 = atof(*++argv), catmore = 1; - - else if (strcmp(*argv, "--log16") == 0) - --argc, pm.log16 = atof(*++argv), catmore = 1; - -#ifdef PNG_SET_OPTION_SUPPORTED - else if (strncmp(*argv, "--option=", 9) == 0) - { - /* Syntax of the argument is *TS2sjBs^v)SGJg_-$$y+3;FN@u#o{#rqd z=-;Zemc);1)~-n;ZNYgD*QCx)qTS?(6>`Yxu0|T02j9{jA-iY!XBs6VtKgN(?M>3M zXitp$#9|Y^aqefnpO5s_bc&VI`Mol8lb36szrH?8J9^Y{Sh=Zut;vy9EAFY*!eBw< zUh1>Fup<1+##XO=O2huD7w?@yH~akK6(i-EANrw@1tl$;?SdE;AJIJyTU&yrti_SX zqL2K}JyH4R*vHyPyly4H@@Qky6>b`Z!-~dp<=^<0ql8jCIzJ{n2`02PuA?k^A&hB? zljJT{WGG{Bb%mft`m0YCNhgQcH?}Ga`o4KT7r9mpTO|G-ajjf)rUae~l{ z0Rja6`T3xspr4_iba{e!dVHCinSz3e@1>=%j($2G9;~mjBv2nTG{hSR28W4<;$UEa zfq+#nVBJJS0RaHmC@AQFfQX5U(+mu00070t%A%vz78nt@y3y1S5N2m)Kc7E!n|s1o zS3*LZ`|ImCIy_xnT}Vn#B_<}-6cj!`B>eC1D=aTfO-&XS7mt#WfPvpvG$H~507gef za(0FG_V)er^K^NAv$WC-3=ME`ynZ!EiHe1F4i6%tFFzXq(o3jLNqluBO@b zVbTT$78e$QPf^Cm#xylL6B84MYEWEsVPscG4Gj%}gp7rShJJ*J1_uTQ1qZgcwgm+R zTU=lS0|Z`PB(t=$0s#U60RaF30IsgC78d%fuB?oX+;MYqIXXKmDvVH6GZr>DJ8*F|pP|?3h={zu&lnR8iH(zuj*X0tj8%hK4-gJ}V^=2} z6>oEP2?_mre}vT-7)}5HC?_Km6cv1ad;tIecYA?^h0qZY6Aum%b9;T@R8)kCkwQa5 zadmqS2M0SlJZ)}m(EtEcS6dMa3_n3bUt?)wWMf%cS%!(3`QP6|MM@eP`5+-7d3AOF z|Nm+%D{E|VNkkrIXlz47LkkNGKtMq3?d<#K=S5UV_RGudo}K{#0%vG&=I7>ARK#Xx zZ!^wXXe#HK_DO?>Sbn6Qdo$IQAs2u8X6iK7#qpU$!=|P zH#j{eCMlYoeM(75KtVqc5c_+8WeN%km6n;gySbjFueP_g0|EoHwX*;K|7dG)!Bu-G z000IGNklHt z*vcw)0ZfC}7KY%R=*angFf7GDQDX{kit>gDqYzS58b_&yP)Sh~f_vJw^;p^2y#yCM zISs%G832=BMOOfjy#g7m@ zt+jh(w*X#u^vDspeASlpa4&Rno;k@j!sy{`WCR+Uq@`vIjHM+IP*3zXu&|I&vvBhr zt5-6<$;<(2f0#8w1lUp z1?ZrY7`SR}R`W7r#`?tgl6cdPoX?M$DvQtWI;4E?_jQN%)H5pc$G$QI+vc!SEpCkx z#+g9_7fww>9KozuLwWI;j6+9TpAhcZ3t)y?l zdFG(xs{LWrE9KT-raI@mim4p&N{FMfnYvkx$&R<(ms07RfJb`ikXw53l+@$=(}P z?MpK-^c){YFoBt|a4?lG5TfY@J<<>?PQod%2Mgco&28>|0SA}+mYBOllOs`!S5By% zPP)yMN8hY0FHucYC;n_6!ovRAX#_Va6gmb@(5FOo!%@D@y8%T(VK`nksAFI>hf954 z%;R4p&z*B}R#o1+ANee}?qI;Zm|;~&O?-uKytC6Dx4SG1Pcbm+Lj?nKq_BGlH;X_Kt|nbMUG0>1pkOx7k6gb9<~7 zEJCZ>+w;OZRw?IW&lmbl5aqEGH3-e+iMsSUx=|fB7lp(Cl}Z05;e)elg=25lhPU3OFC-`X4O~Pp z(+u8SxX6@Nu-gU$cM%?iDf;}>eg@uPwZ7NbAfwc4%LKv$AESApwMAQTgR)Bj)d}7P zwCAfKkJo5opoC@6Lg<3Mcwvcs4!^5<=}qW6{9VgWp{KyaBpI7crIgaZ7IUp RQSJZ$002ovPDHLkV1iCKFfIT9 diff --git a/io2d/src/3rd-party/libpng/pngconf.h b/io2d/src/3rd-party/libpng/pngconf.h deleted file mode 100644 index 5ac21f6..0000000 --- a/io2d/src/3rd-party/libpng/pngconf.h +++ /dev/null @@ -1,617 +0,0 @@ - -/* pngconf.h - machine configurable file for libpng - * - * libpng version 1.6.8beta03 - November 30, 2013 - * - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - */ - -/* Any machine specific code is near the front of this file, so if you - * are configuring libpng for a machine, you may want to read the section - * starting here down to where it starts to typedef png_color, png_text, - * and png_info. - */ - -#ifndef PNGCONF_H -#define PNGCONF_H - -/* To do: Do all of this in scripts/pnglibconf.dfa */ -#ifdef PNG_SAFE_LIMITS_SUPPORTED -# ifdef PNG_USER_WIDTH_MAX -# undef PNG_USER_WIDTH_MAX -# define PNG_USER_WIDTH_MAX 1000000L -# endif -# ifdef PNG_USER_HEIGHT_MAX -# undef PNG_USER_HEIGHT_MAX -# define PNG_USER_HEIGHT_MAX 1000000L -# endif -# ifdef PNG_USER_CHUNK_MALLOC_MAX -# undef PNG_USER_CHUNK_MALLOC_MAX -# define PNG_USER_CHUNK_MALLOC_MAX 4000000L -# endif -# ifdef PNG_USER_CHUNK_CACHE_MAX -# undef PNG_USER_CHUNK_CACHE_MAX -# define PNG_USER_CHUNK_CACHE_MAX 128 -# endif -#endif - -#ifndef PNG_BUILDING_SYMBOL_TABLE /* else includes may cause problems */ - -/* From libpng 1.6.0 libpng requires an ANSI X3.159-1989 ("ISOC90") compliant C - * compiler for correct compilation. The following header files are required by - * the standard. If your compiler doesn't provide these header files, or they - * do not match the standard, you will need to provide/improve them. - */ -#include -#include - -/* Library header files. These header files are all defined by ISOC90; libpng - * expects conformant implementations, however, an ISOC90 conformant system need - * not provide these header files if the functionality cannot be implemented. - * In this case it will be necessary to disable the relevant parts of libpng in - * the build of pnglibconf.h. - * - * Prior to 1.6.0 string.h was included here; the API changes in 1.6.0 to not - * include this unnecessary header file. - */ - -#ifdef PNG_STDIO_SUPPORTED - /* Required for the definition of FILE: */ -# include -#endif - -#ifdef PNG_SETJMP_SUPPORTED - /* Required for the definition of jmp_buf and the declaration of longjmp: */ -# include -#endif - -#ifdef PNG_CONVERT_tIME_SUPPORTED - /* Required for struct tm: */ -# include -#endif - -#endif /* PNG_BUILDING_SYMBOL_TABLE */ - -/* Prior to 1.6.0 it was possible to turn off 'const' in declarations using - * PNG_NO_CONST; this is no longer supported except for data declarations which - * apparently still cause problems in 2011 on some compilers. - */ -#define PNG_CONST const /* backward compatibility only */ - -/* This controls optimization of the reading of 16 and 32 bit values - * from PNG files. It can be set on a per-app-file basis - it - * just changes whether a macro is used when the function is called. - * The library builder sets the default; if read functions are not - * built into the library the macro implementation is forced on. - */ -#ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED -# define PNG_USE_READ_MACROS -#endif -#if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) -# if PNG_DEFAULT_READ_MACROS -# define PNG_USE_READ_MACROS -# endif -#endif - -/* COMPILER SPECIFIC OPTIONS. - * - * These options are provided so that a variety of difficult compilers - * can be used. Some are fixed at build time (e.g. PNG_API_RULE - * below) but still have compiler specific implementations, others - * may be changed on a per-file basis when compiling against libpng. - */ - -/* The PNGARG macro was used in versions of libpng prior to 1.6.0 to protect - * against legacy (pre ISOC90) compilers that did not understand function - * prototypes. It is not required for modern C compilers. - */ -#ifndef PNGARG -# define PNGARG(arglist) arglist -#endif - -/* Function calling conventions. - * ============================= - * Normally it is not necessary to specify to the compiler how to call - * a function - it just does it - however on x86 systems derived from - * Microsoft and Borland C compilers ('IBM PC', 'DOS', 'Windows' systems - * and some others) there are multiple ways to call a function and the - * default can be changed on the compiler command line. For this reason - * libpng specifies the calling convention of every exported function and - * every function called via a user supplied function pointer. This is - * done in this file by defining the following macros: - * - * PNGAPI Calling convention for exported functions. - * PNGCBAPI Calling convention for user provided (callback) functions. - * PNGCAPI Calling convention used by the ANSI-C library (required - * for longjmp callbacks and sometimes used internally to - * specify the calling convention for zlib). - * - * These macros should never be overridden. If it is necessary to - * change calling convention in a private build this can be done - * by setting PNG_API_RULE (which defaults to 0) to one of the values - * below to select the correct 'API' variants. - * - * PNG_API_RULE=0 Use PNGCAPI - the 'C' calling convention - throughout. - * This is correct in every known environment. - * PNG_API_RULE=1 Use the operating system convention for PNGAPI and - * the 'C' calling convention (from PNGCAPI) for - * callbacks (PNGCBAPI). This is no longer required - * in any known environment - if it has to be used - * please post an explanation of the problem to the - * libpng mailing list. - * - * These cases only differ if the operating system does not use the C - * calling convention, at present this just means the above cases - * (x86 DOS/Windows sytems) and, even then, this does not apply to - * Cygwin running on those systems. - * - * Note that the value must be defined in pnglibconf.h so that what - * the application uses to call the library matches the conventions - * set when building the library. - */ - -/* Symbol export - * ============= - * When building a shared library it is almost always necessary to tell - * the compiler which symbols to export. The png.h macro 'PNG_EXPORT' - * is used to mark the symbols. On some systems these symbols can be - * extracted at link time and need no special processing by the compiler, - * on other systems the symbols are flagged by the compiler and just - * the declaration requires a special tag applied (unfortunately) in a - * compiler dependent way. Some systems can do either. - * - * A small number of older systems also require a symbol from a DLL to - * be flagged to the program that calls it. This is a problem because - * we do not know in the header file included by application code that - * the symbol will come from a shared library, as opposed to a statically - * linked one. For this reason the application must tell us by setting - * the magic flag PNG_USE_DLL to turn on the special processing before - * it includes png.h. - * - * Four additional macros are used to make this happen: - * - * PNG_IMPEXP The magic (if any) to cause a symbol to be exported from - * the build or imported if PNG_USE_DLL is set - compiler - * and system specific. - * - * PNG_EXPORT_TYPE(type) A macro that pre or appends PNG_IMPEXP to - * 'type', compiler specific. - * - * PNG_DLL_EXPORT Set to the magic to use during a libpng build to - * make a symbol exported from the DLL. Not used in the - * public header files; see pngpriv.h for how it is used - * in the libpng build. - * - * PNG_DLL_IMPORT Set to the magic to force the libpng symbols to come - * from a DLL - used to define PNG_IMPEXP when - * PNG_USE_DLL is set. - */ - -/* System specific discovery. - * ========================== - * This code is used at build time to find PNG_IMPEXP, the API settings - * and PNG_EXPORT_TYPE(), it may also set a macro to indicate the DLL - * import processing is possible. On Windows systems it also sets - * compiler-specific macros to the values required to change the calling - * conventions of the various functions. - */ -#if defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\ - defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) - /* Windows system (DOS doesn't support DLLs). Includes builds under Cygwin or - * MinGW on any architecture currently supported by Windows. Also includes - * Watcom builds but these need special treatment because they are not - * compatible with GCC or Visual C because of different calling conventions. - */ -# if PNG_API_RULE == 2 - /* If this line results in an error, either because __watcall is not - * understood or because of a redefine just below you cannot use *this* - * build of the library with the compiler you are using. *This* build was - * build using Watcom and applications must also be built using Watcom! - */ -# define PNGCAPI __watcall -# endif - -# if defined(__GNUC__) || (defined(_MSC_VER) && (_MSC_VER >= 800)) -# define PNGCAPI __cdecl -# if PNG_API_RULE == 1 - /* If this line results in an error __stdcall is not understood and - * PNG_API_RULE should not have been set to '1'. - */ -# define PNGAPI __stdcall -# endif -# else - /* An older compiler, or one not detected (erroneously) above, - * if necessary override on the command line to get the correct - * variants for the compiler. - */ -# ifndef PNGCAPI -# define PNGCAPI _cdecl -# endif -# if PNG_API_RULE == 1 && !defined(PNGAPI) -# define PNGAPI _stdcall -# endif -# endif /* compiler/api */ - - /* NOTE: PNGCBAPI always defaults to PNGCAPI. */ - -# if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD) -# error "PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed" -# endif - -# if (defined(_MSC_VER) && _MSC_VER < 800) ||\ - (defined(__BORLANDC__) && __BORLANDC__ < 0x500) - /* older Borland and MSC - * compilers used '__export' and required this to be after - * the type. - */ -# ifndef PNG_EXPORT_TYPE -# define PNG_EXPORT_TYPE(type) type PNG_IMPEXP -# endif -# define PNG_DLL_EXPORT __export -# else /* newer compiler */ -# define PNG_DLL_EXPORT __declspec(dllexport) -# ifndef PNG_DLL_IMPORT -# define PNG_DLL_IMPORT __declspec(dllimport) -# endif -# endif /* compiler */ - -#else /* !Windows */ -# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) -# define PNGAPI _System -# else /* !Windows/x86 && !OS/2 */ - /* Use the defaults, or define PNG*API on the command line (but - * this will have to be done for every compile!) - */ -# endif /* other system, !OS/2 */ -#endif /* !Windows/x86 */ - -/* Now do all the defaulting . */ -#ifndef PNGCAPI -# define PNGCAPI -#endif -#ifndef PNGCBAPI -# define PNGCBAPI PNGCAPI -#endif -#ifndef PNGAPI -# define PNGAPI PNGCAPI -#endif - -/* PNG_IMPEXP may be set on the compilation system command line or (if not set) - * then in an internal header file when building the library, otherwise (when - * using the library) it is set here. - */ -#ifndef PNG_IMPEXP -# if defined(PNG_USE_DLL) && defined(PNG_DLL_IMPORT) - /* This forces use of a DLL, disallowing static linking */ -# define PNG_IMPEXP PNG_DLL_IMPORT -# endif - -# ifndef PNG_IMPEXP -# define PNG_IMPEXP -# endif -#endif - -/* In 1.5.2 the definition of PNG_FUNCTION has been changed to always treat - * 'attributes' as a storage class - the attributes go at the start of the - * function definition, and attributes are always appended regardless of the - * compiler. This considerably simplifies these macros but may cause problems - * if any compilers both need function attributes and fail to handle them as - * a storage class (this is unlikely.) - */ -#ifndef PNG_FUNCTION -# define PNG_FUNCTION(type, name, args, attributes) attributes type name args -#endif - -#ifndef PNG_EXPORT_TYPE -# define PNG_EXPORT_TYPE(type) PNG_IMPEXP type -#endif - - /* The ordinal value is only relevant when preprocessing png.h for symbol - * table entries, so we discard it here. See the .dfn files in the - * scripts directory. - */ -#ifndef PNG_EXPORTA - -# define PNG_EXPORTA(ordinal, type, name, args, attributes)\ - PNG_FUNCTION(PNG_EXPORT_TYPE(type),(PNGAPI name),PNGARG(args), \ - extern attributes) -#endif - -/* ANSI-C (C90) does not permit a macro to be invoked with an empty argument, - * so make something non-empty to satisfy the requirement: - */ -#define PNG_EMPTY /*empty list*/ - -#define PNG_EXPORT(ordinal, type, name, args)\ - PNG_EXPORTA(ordinal, type, name, args, PNG_EMPTY) - -/* Use PNG_REMOVED to comment out a removed interface. */ -#ifndef PNG_REMOVED -# define PNG_REMOVED(ordinal, type, name, args, attributes) -#endif - -#ifndef PNG_CALLBACK -# define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args) -#endif - -/* Support for compiler specific function attributes. These are used - * so that where compiler support is available incorrect use of API - * functions in png.h will generate compiler warnings. - * - * Added at libpng-1.2.41. - */ - -#ifndef PNG_NO_PEDANTIC_WARNINGS -# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED -# define PNG_PEDANTIC_WARNINGS_SUPPORTED -# endif -#endif - -#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED - /* Support for compiler specific function attributes. These are used - * so that where compiler support is available, incorrect use of API - * functions in png.h will generate compiler warnings. Added at libpng - * version 1.2.41. Disabling these removes the warnings but may also produce - * less efficient code. - */ -# if defined(__GNUC__) -# ifndef PNG_USE_RESULT -# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) -# endif -# ifndef PNG_NORETURN -# define PNG_NORETURN __attribute__((__noreturn__)) -# endif -# if __GNUC__ >= 3 -# ifndef PNG_ALLOCATED -# define PNG_ALLOCATED __attribute__((__malloc__)) -# endif -# ifndef PNG_DEPRECATED -# define PNG_DEPRECATED __attribute__((__deprecated__)) -# endif -# ifndef PNG_PRIVATE -# if 0 /* Doesn't work so we use deprecated instead*/ -# define PNG_PRIVATE \ - __attribute__((warning("This function is not exported by libpng."))) -# else -# define PNG_PRIVATE \ - __attribute__((__deprecated__)) -# endif -# endif -# if ((__GNUC__ != 3) || !defined(__GNUC_MINOR__) || (__GNUC_MINOR__ >= 1)) -# ifndef PNG_RESTRICT -# define PNG_RESTRICT __restrict -# endif -# endif /* __GNUC__ == 3.0 */ -# endif /* __GNUC__ >= 3 */ - -# elif defined(_MSC_VER) && (_MSC_VER >= 1300) -# ifndef PNG_USE_RESULT -# define PNG_USE_RESULT /* not supported */ -# endif -# ifndef PNG_NORETURN -# define PNG_NORETURN __declspec(noreturn) -# endif -# ifndef PNG_ALLOCATED -# if (_MSC_VER >= 1400) -# define PNG_ALLOCATED __declspec(restrict) -# endif -# endif -# ifndef PNG_DEPRECATED -# define PNG_DEPRECATED __declspec(deprecated) -# endif -# ifndef PNG_PRIVATE -# define PNG_PRIVATE __declspec(deprecated) -# endif -# ifndef PNG_RESTRICT -# if (_MSC_VER >= 1400) -# define PNG_RESTRICT __restrict -# endif -# endif - -# elif defined(__WATCOMC__) -# ifndef PNG_RESTRICT -# define PNG_RESTRICT __restrict -# endif -# endif /* _MSC_VER */ -#endif /* PNG_PEDANTIC_WARNINGS */ - -#ifndef PNG_DEPRECATED -# define PNG_DEPRECATED /* Use of this function is deprecated */ -#endif -#ifndef PNG_USE_RESULT -# define PNG_USE_RESULT /* The result of this function must be checked */ -#endif -#ifndef PNG_NORETURN -# define PNG_NORETURN /* This function does not return */ -#endif -#ifndef PNG_ALLOCATED -# define PNG_ALLOCATED /* The result of the function is new memory */ -#endif -#ifndef PNG_PRIVATE -# define PNG_PRIVATE /* This is a private libpng function */ -#endif -#ifndef PNG_RESTRICT -# define PNG_RESTRICT /* The C99 "restrict" feature */ -#endif -#ifndef PNG_FP_EXPORT /* A floating point API. */ -# ifdef PNG_FLOATING_POINT_SUPPORTED -# define PNG_FP_EXPORT(ordinal, type, name, args)\ - PNG_EXPORT(ordinal, type, name, args); -# else /* No floating point APIs */ -# define PNG_FP_EXPORT(ordinal, type, name, args) -# endif -#endif -#ifndef PNG_FIXED_EXPORT /* A fixed point API. */ -# ifdef PNG_FIXED_POINT_SUPPORTED -# define PNG_FIXED_EXPORT(ordinal, type, name, args)\ - PNG_EXPORT(ordinal, type, name, args); -# else /* No fixed point APIs */ -# define PNG_FIXED_EXPORT(ordinal, type, name, args) -# endif -#endif - -#ifndef PNG_BUILDING_SYMBOL_TABLE -/* Some typedefs to get us started. These should be safe on most of the common - * platforms. - * - * png_uint_32 and png_int_32 may, currently, be larger than required to hold a - * 32-bit value however this is not normally advisable. - * - * png_uint_16 and png_int_16 should always be two bytes in size - this is - * verified at library build time. - * - * png_byte must always be one byte in size. - * - * The checks below use constants from limits.h, as defined by the ISOC90 - * standard. - */ -#if CHAR_BIT == 8 && UCHAR_MAX == 255 - typedef unsigned char png_byte; -#else -# error "libpng requires 8 bit bytes" -#endif - -#if INT_MIN == -32768 && INT_MAX == 32767 - typedef int png_int_16; -#elif SHRT_MIN == -32768 && SHRT_MAX == 32767 - typedef short png_int_16; -#else -# error "libpng requires a signed 16 bit type" -#endif - -#if UINT_MAX == 65535 - typedef unsigned int png_uint_16; -#elif USHRT_MAX == 65535 - typedef unsigned short png_uint_16; -#else -# error "libpng requires an unsigned 16 bit type" -#endif - -#if INT_MIN < -2147483646 && INT_MAX > 2147483646 - typedef int png_int_32; -#elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646 - typedef long int png_int_32; -#else -# error "libpng requires a signed 32 bit (or more) type" -#endif - -#if UINT_MAX > 4294967294 - typedef unsigned int png_uint_32; -#elif ULONG_MAX > 4294967294 - typedef unsigned long int png_uint_32; -#else -# error "libpng requires an unsigned 32 bit (or more) type" -#endif - -/* Prior to 1.6.0 it was possible to disable the use of size_t, 1.6.0, however, - * requires an ISOC90 compiler and relies on consistent behavior of sizeof. - */ -typedef size_t png_size_t; -typedef ptrdiff_t png_ptrdiff_t; - -/* libpng needs to know the maximum value of 'size_t' and this controls the - * definition of png_alloc_size_t, below. This maximum value of size_t limits - * but does not control the maximum allocations the library makes - there is - * direct application control of this through png_set_user_limits(). - */ -#ifndef PNG_SMALL_SIZE_T - /* Compiler specific tests for systems where size_t is known to be less than - * 32 bits (some of these systems may no longer work because of the lack of - * 'far' support; see above.) - */ -# if (defined(__TURBOC__) && !defined(__FLAT__)) ||\ - (defined(_MSC_VER) && defined(MAXSEG_64K)) -# define PNG_SMALL_SIZE_T -# endif -#endif - -/* png_alloc_size_t is guaranteed to be no smaller than png_size_t, and no - * smaller than png_uint_32. Casts from png_size_t or png_uint_32 to - * png_alloc_size_t are not necessary; in fact, it is recommended not to use - * them at all so that the compiler can complain when something turns out to be - * problematic. - * - * Casts in the other direction (from png_alloc_size_t to png_size_t or - * png_uint_32) should be explicitly applied; however, we do not expect to - * encounter practical situations that require such conversions. - * - * PNG_SMALL_SIZE_T must be defined if the maximum value of size_t is less than - * 4294967295 - i.e. less than the maximum value of png_uint_32. - */ -#ifdef PNG_SMALL_SIZE_T - typedef png_uint_32 png_alloc_size_t; -#else - typedef png_size_t png_alloc_size_t; -#endif - -/* Prior to 1.6.0 libpng offered limited support for Microsoft C compiler - * implementations of Intel CPU specific support of user-mode segmented address - * spaces, where 16-bit pointers address more than 65536 bytes of memory using - * separate 'segment' registers. The implementation requires two different - * types of pointer (only one of which includes the segment value.) - * - * If required this support is available in version 1.2 of libpng and may be - * available in versions through 1.5, although the correctness of the code has - * not been verified recently. - */ - -/* Typedef for floating-point numbers that are converted to fixed-point with a - * multiple of 100,000, e.g., gamma - */ -typedef png_int_32 png_fixed_point; - -/* Add typedefs for pointers */ -typedef void * png_voidp; -typedef const void * png_const_voidp; -typedef png_byte * png_bytep; -typedef const png_byte * png_const_bytep; -typedef png_uint_32 * png_uint_32p; -typedef const png_uint_32 * png_const_uint_32p; -typedef png_int_32 * png_int_32p; -typedef const png_int_32 * png_const_int_32p; -typedef png_uint_16 * png_uint_16p; -typedef const png_uint_16 * png_const_uint_16p; -typedef png_int_16 * png_int_16p; -typedef const png_int_16 * png_const_int_16p; -typedef char * png_charp; -typedef const char * png_const_charp; -typedef png_fixed_point * png_fixed_point_p; -typedef const png_fixed_point * png_const_fixed_point_p; -typedef png_size_t * png_size_tp; -typedef const png_size_t * png_const_size_tp; - -#ifdef PNG_STDIO_SUPPORTED -typedef FILE * png_FILE_p; -#endif - -#ifdef PNG_FLOATING_POINT_SUPPORTED -typedef double * png_doublep; -typedef const double * png_const_doublep; -#endif - -/* Pointers to pointers; i.e. arrays */ -typedef png_byte * * png_bytepp; -typedef png_uint_32 * * png_uint_32pp; -typedef png_int_32 * * png_int_32pp; -typedef png_uint_16 * * png_uint_16pp; -typedef png_int_16 * * png_int_16pp; -typedef const char * * png_const_charpp; -typedef char * * png_charpp; -typedef png_fixed_point * * png_fixed_point_pp; -#ifdef PNG_FLOATING_POINT_SUPPORTED -typedef double * * png_doublepp; -#endif - -/* Pointers to pointers to pointers; i.e., pointer to array */ -typedef char * * * png_charppp; - -#endif /* PNG_BUILDING_SYMBOL_TABLE */ - -#endif /* PNGCONF_H */ diff --git a/io2d/src/3rd-party/libpng/pngdebug.h b/io2d/src/3rd-party/libpng/pngdebug.h deleted file mode 100644 index 45e1276..0000000 --- a/io2d/src/3rd-party/libpng/pngdebug.h +++ /dev/null @@ -1,154 +0,0 @@ - -/* pngdebug.h - Debugging macros for libpng, also used in pngtest.c - * - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * Last changed in libpng 1.5.18 [(PENDING RELEASE)] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -/* Define PNG_DEBUG at compile time for debugging information. Higher - * numbers for PNG_DEBUG mean more debugging information. This has - * only been added since version 0.95 so it is not implemented throughout - * libpng yet, but more support will be added as needed. - * - * png_debug[1-2]?(level, message ,arg{0-2}) - * Expands to a statement (either a simple expression or a compound - * do..while(0) statement) that outputs a message with parameter - * substitution if PNG_DEBUG is defined to 2 or more. If PNG_DEBUG - * is undefined, 0 or 1 every png_debug expands to a simple expression - * (actually ((void)0)). - * - * level: level of detail of message, starting at 0. A level 'n' - * message is preceded by 'n' 3-space indentations (not implemented - * on Microsoft compilers unless PNG_DEBUG_FILE is also - * defined, to allow debug DLL compilation with no standard IO). - * message: a printf(3) style text string. A trailing '\n' is added - * to the message. - * arg: 0 to 2 arguments for printf(3) style substitution in message. - */ -#ifndef PNGDEBUG_H -#define PNGDEBUG_H -/* These settings control the formatting of messages in png.c and pngerror.c */ -/* Moved to pngdebug.h at 1.5.0 */ -# ifndef PNG_LITERAL_SHARP -# define PNG_LITERAL_SHARP 0x23 -# endif -# ifndef PNG_LITERAL_LEFT_SQUARE_BRACKET -# define PNG_LITERAL_LEFT_SQUARE_BRACKET 0x5b -# endif -# ifndef PNG_LITERAL_RIGHT_SQUARE_BRACKET -# define PNG_LITERAL_RIGHT_SQUARE_BRACKET 0x5d -# endif -# ifndef PNG_STRING_NEWLINE -# define PNG_STRING_NEWLINE "\n" -# endif - -#ifdef PNG_DEBUG -# if (PNG_DEBUG > 0) -# if !defined(PNG_DEBUG_FILE) && defined(_MSC_VER) -# include -# if (PNG_DEBUG > 1) -# ifndef _DEBUG -# define _DEBUG -# endif -# ifndef png_debug -# define png_debug(l,m) _RPT0(_CRT_WARN,m PNG_STRING_NEWLINE) -# endif -# ifndef png_debug1 -# define png_debug1(l,m,p1) _RPT1(_CRT_WARN,m PNG_STRING_NEWLINE,p1) -# endif -# ifndef png_debug2 -# define png_debug2(l,m,p1,p2) \ - _RPT2(_CRT_WARN,m PNG_STRING_NEWLINE,p1,p2) -# endif -# endif -# else /* PNG_DEBUG_FILE || !_MSC_VER */ -# ifndef PNG_STDIO_SUPPORTED -# include /* not included yet */ -# endif -# ifndef PNG_DEBUG_FILE -# define PNG_DEBUG_FILE stderr -# endif /* PNG_DEBUG_FILE */ - -# if (PNG_DEBUG > 1) -# ifdef __STDC__ -# ifndef png_debug -# define png_debug(l,m) \ - do { \ - int num_tabs=l; \ - fprintf(PNG_DEBUG_FILE,"%s" m PNG_STRING_NEWLINE,(num_tabs==1 ? " " : \ - (num_tabs==2 ? " " : (num_tabs>2 ? " " : "")))); \ - } while (0) -# endif -# ifndef png_debug1 -# define png_debug1(l,m,p1) \ - do { \ - int num_tabs=l; \ - fprintf(PNG_DEBUG_FILE,"%s" m PNG_STRING_NEWLINE,(num_tabs==1 ? " " : \ - (num_tabs==2 ? " " : (num_tabs>2 ? " " : ""))),p1); \ - } while (0) -# endif -# ifndef png_debug2 -# define png_debug2(l,m,p1,p2) \ - do { \ - int num_tabs=l; \ - fprintf(PNG_DEBUG_FILE,"%s" m PNG_STRING_NEWLINE,(num_tabs==1 ? " " : \ - (num_tabs==2 ? " " : (num_tabs>2 ? " " : ""))),p1,p2);\ - } while (0) -# endif -# else /* __STDC __ */ -# ifndef png_debug -# define png_debug(l,m) \ - do { \ - int num_tabs=l; \ - char format[256]; \ - snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \ - (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \ - m,PNG_STRING_NEWLINE); \ - fprintf(PNG_DEBUG_FILE,format); \ - } while (0) -# endif -# ifndef png_debug1 -# define png_debug1(l,m,p1) \ - do { \ - int num_tabs=l; \ - char format[256]; \ - snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \ - (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \ - m,PNG_STRING_NEWLINE); \ - fprintf(PNG_DEBUG_FILE,format,p1); \ - } while (0) -# endif -# ifndef png_debug2 -# define png_debug2(l,m,p1,p2) \ - do { \ - int num_tabs=l; \ - char format[256]; \ - snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \ - (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \ - m,PNG_STRING_NEWLINE); \ - fprintf(PNG_DEBUG_FILE,format,p1,p2); \ - } while (0) -# endif -# endif /* __STDC __ */ -# endif /* (PNG_DEBUG > 1) */ - -# endif /* _MSC_VER */ -# endif /* (PNG_DEBUG > 0) */ -#endif /* PNG_DEBUG */ -#ifndef png_debug -# define png_debug(l, m) ((void)0) -#endif -#ifndef png_debug1 -# define png_debug1(l, m, p1) ((void)0) -#endif -#ifndef png_debug2 -# define png_debug2(l, m, p1, p2) ((void)0) -#endif -#endif /* PNGDEBUG_H */ diff --git a/io2d/src/3rd-party/libpng/pngerror.c b/io2d/src/3rd-party/libpng/pngerror.c deleted file mode 100644 index 4d694c4..0000000 --- a/io2d/src/3rd-party/libpng/pngerror.c +++ /dev/null @@ -1,953 +0,0 @@ - -/* pngerror.c - stub functions for i/o and memory allocation - * - * Last changed in libpng 1.6.8 [(PENDING RELEASE)] - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * This file provides a location for all error handling. Users who - * need special error handling are expected to write replacement functions - * and use png_set_error_fn() to use those functions. See the instructions - * at each function. - */ - -#include "pngpriv.h" - -#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) - -static PNG_FUNCTION(void, png_default_error,PNGARG((png_const_structrp png_ptr, - png_const_charp error_message)),PNG_NORETURN); - -#ifdef PNG_WARNINGS_SUPPORTED -static void /* PRIVATE */ -png_default_warning PNGARG((png_const_structrp png_ptr, - png_const_charp warning_message)); -#endif /* PNG_WARNINGS_SUPPORTED */ - -/* This function is called whenever there is a fatal error. This function - * should not be changed. If there is a need to handle errors differently, - * you should supply a replacement error function and use png_set_error_fn() - * to replace the error function at run-time. - */ -#ifdef PNG_ERROR_TEXT_SUPPORTED -PNG_FUNCTION(void,PNGAPI -png_error,(png_const_structrp png_ptr, png_const_charp error_message), - PNG_NORETURN) -{ -#ifdef PNG_ERROR_NUMBERS_SUPPORTED - char msg[16]; - if (png_ptr != NULL) - { - if (png_ptr->flags& - (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT)) - { - if (*error_message == PNG_LITERAL_SHARP) - { - /* Strip "#nnnn " from beginning of error message. */ - int offset; - for (offset = 1; offset<15; offset++) - if (error_message[offset] == ' ') - break; - - if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT) - { - int i; - for (i = 0; i < offset - 1; i++) - msg[i] = error_message[i + 1]; - msg[i - 1] = '\0'; - error_message = msg; - } - - else - error_message += offset; - } - - else - { - if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT) - { - msg[0] = '0'; - msg[1] = '\0'; - error_message = msg; - } - } - } - } -#endif - if (png_ptr != NULL && png_ptr->error_fn != NULL) - (*(png_ptr->error_fn))(png_constcast(png_structrp,png_ptr), - error_message); - - /* If the custom handler doesn't exist, or if it returns, - use the default handler, which will not return. */ - png_default_error(png_ptr, error_message); -} -#else -PNG_FUNCTION(void,PNGAPI -png_err,(png_const_structrp png_ptr),PNG_NORETURN) -{ - /* Prior to 1.5.2 the error_fn received a NULL pointer, expressed - * erroneously as '\0', instead of the empty string "". This was - * apparently an error, introduced in libpng-1.2.20, and png_default_error - * will crash in this case. - */ - if (png_ptr != NULL && png_ptr->error_fn != NULL) - (*(png_ptr->error_fn))(png_constcast(png_structrp,png_ptr), ""); - - /* If the custom handler doesn't exist, or if it returns, - use the default handler, which will not return. */ - png_default_error(png_ptr, ""); -} -#endif /* PNG_ERROR_TEXT_SUPPORTED */ - -/* Utility to safely appends strings to a buffer. This never errors out so - * error checking is not required in the caller. - */ -size_t -png_safecat(png_charp buffer, size_t bufsize, size_t pos, - png_const_charp string) -{ - if (buffer != NULL && pos < bufsize) - { - if (string != NULL) - while (*string != '\0' && pos < bufsize-1) - buffer[pos++] = *string++; - - buffer[pos] = '\0'; - } - - return pos; -} - -#if defined(PNG_WARNINGS_SUPPORTED) || defined(PNG_TIME_RFC1123_SUPPORTED) -/* Utility to dump an unsigned value into a buffer, given a start pointer and - * and end pointer (which should point just *beyond* the end of the buffer!) - * Returns the pointer to the start of the formatted string. - */ -png_charp -png_format_number(png_const_charp start, png_charp end, int format, - png_alloc_size_t number) -{ - int count = 0; /* number of digits output */ - int mincount = 1; /* minimum number required */ - int output = 0; /* digit output (for the fixed point format) */ - - *--end = '\0'; - - /* This is written so that the loop always runs at least once, even with - * number zero. - */ - while (end > start && (number != 0 || count < mincount)) - { - - static const char digits[] = "0123456789ABCDEF"; - - switch (format) - { - case PNG_NUMBER_FORMAT_fixed: - /* Needs five digits (the fraction) */ - mincount = 5; - if (output || number % 10 != 0) - { - *--end = digits[number % 10]; - output = 1; - } - number /= 10; - break; - - case PNG_NUMBER_FORMAT_02u: - /* Expects at least 2 digits. */ - mincount = 2; - /* FALL THROUGH */ - - case PNG_NUMBER_FORMAT_u: - *--end = digits[number % 10]; - number /= 10; - break; - - case PNG_NUMBER_FORMAT_02x: - /* This format expects at least two digits */ - mincount = 2; - /* FALL THROUGH */ - - case PNG_NUMBER_FORMAT_x: - *--end = digits[number & 0xf]; - number >>= 4; - break; - - default: /* an error */ - number = 0; - break; - } - - /* Keep track of the number of digits added */ - ++count; - - /* Float a fixed number here: */ - if (format == PNG_NUMBER_FORMAT_fixed) if (count == 5) if (end > start) - { - /* End of the fraction, but maybe nothing was output? In that case - * drop the decimal point. If the number is a true zero handle that - * here. - */ - if (output) - *--end = '.'; - else if (number == 0) /* and !output */ - *--end = '0'; - } - } - - return end; -} -#endif - -#ifdef PNG_WARNINGS_SUPPORTED -/* This function is called whenever there is a non-fatal error. This function - * should not be changed. If there is a need to handle warnings differently, - * you should supply a replacement warning function and use - * png_set_error_fn() to replace the warning function at run-time. - */ -void PNGAPI -png_warning(png_const_structrp png_ptr, png_const_charp warning_message) -{ - int offset = 0; - if (png_ptr != NULL) - { -#ifdef PNG_ERROR_NUMBERS_SUPPORTED - if (png_ptr->flags& - (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT)) -#endif - { - if (*warning_message == PNG_LITERAL_SHARP) - { - for (offset = 1; offset < 15; offset++) - if (warning_message[offset] == ' ') - break; - } - } - } - if (png_ptr != NULL && png_ptr->warning_fn != NULL) - (*(png_ptr->warning_fn))(png_constcast(png_structrp,png_ptr), - warning_message + offset); - else - png_default_warning(png_ptr, warning_message + offset); -} - -/* These functions support 'formatted' warning messages with up to - * PNG_WARNING_PARAMETER_COUNT parameters. In the format string the parameter - * is introduced by @, where 'number' starts at 1. This follows the - * standard established by X/Open for internationalizable error messages. - */ -void -png_warning_parameter(png_warning_parameters p, int number, - png_const_charp string) -{ - if (number > 0 && number <= PNG_WARNING_PARAMETER_COUNT) - (void)png_safecat(p[number-1], (sizeof p[number-1]), 0, string); -} - -void -png_warning_parameter_unsigned(png_warning_parameters p, int number, int format, - png_alloc_size_t value) -{ - char buffer[PNG_NUMBER_BUFFER_SIZE]; - png_warning_parameter(p, number, PNG_FORMAT_NUMBER(buffer, format, value)); -} - -void -png_warning_parameter_signed(png_warning_parameters p, int number, int format, - png_int_32 value) -{ - png_alloc_size_t u; - png_charp str; - char buffer[PNG_NUMBER_BUFFER_SIZE]; - - /* Avoid overflow by doing the negate in a png_alloc_size_t: */ - u = (png_alloc_size_t)value; - if (value < 0) - u = ~u + 1; - - str = PNG_FORMAT_NUMBER(buffer, format, u); - - if (value < 0 && str > buffer) - *--str = '-'; - - png_warning_parameter(p, number, str); -} - -void -png_formatted_warning(png_const_structrp png_ptr, png_warning_parameters p, - png_const_charp message) -{ - /* The internal buffer is just 192 bytes - enough for all our messages, - * overflow doesn't happen because this code checks! If someone figures - * out how to send us a message longer than 192 bytes, all that will - * happen is that the message will be truncated appropriately. - */ - size_t i = 0; /* Index in the msg[] buffer: */ - char msg[192]; - - /* Each iteration through the following loop writes at most one character - * to msg[i++] then returns here to validate that there is still space for - * the trailing '\0'. It may (in the case of a parameter) read more than - * one character from message[]; it must check for '\0' and continue to the - * test if it finds the end of string. - */ - while (i<(sizeof msg)-1 && *message != '\0') - { - /* '@' at end of string is now just printed (previously it was skipped); - * it is an error in the calling code to terminate the string with @. - */ - if (p != NULL && *message == '@' && message[1] != '\0') - { - int parameter_char = *++message; /* Consume the '@' */ - static const char valid_parameters[] = "123456789"; - int parameter = 0; - - /* Search for the parameter digit, the index in the string is the - * parameter to use. - */ - while (valid_parameters[parameter] != parameter_char && - valid_parameters[parameter] != '\0') - ++parameter; - - /* If the parameter digit is out of range it will just get printed. */ - if (parameter < PNG_WARNING_PARAMETER_COUNT) - { - /* Append this parameter */ - png_const_charp parm = p[parameter]; - png_const_charp pend = p[parameter] + (sizeof p[parameter]); - - /* No need to copy the trailing '\0' here, but there is no guarantee - * that parm[] has been initialized, so there is no guarantee of a - * trailing '\0': - */ - while (i<(sizeof msg)-1 && *parm != '\0' && parm < pend) - msg[i++] = *parm++; - - /* Consume the parameter digit too: */ - ++message; - continue; - } - - /* else not a parameter and there is a character after the @ sign; just - * copy that. This is known not to be '\0' because of the test above. - */ - } - - /* At this point *message can't be '\0', even in the bad parameter case - * above where there is a lone '@' at the end of the message string. - */ - msg[i++] = *message++; - } - - /* i is always less than (sizeof msg), so: */ - msg[i] = '\0'; - - /* And this is the formatted message. It may be larger than - * PNG_MAX_ERROR_TEXT, but that is only used for 'chunk' errors and these - * are not (currently) formatted. - */ - png_warning(png_ptr, msg); -} -#endif /* PNG_WARNINGS_SUPPORTED */ - -#ifdef PNG_BENIGN_ERRORS_SUPPORTED -void PNGAPI -png_benign_error(png_const_structrp png_ptr, png_const_charp error_message) -{ - if (png_ptr->flags & PNG_FLAG_BENIGN_ERRORS_WARN) - { -# ifdef PNG_READ_SUPPORTED - if ((png_ptr->mode & PNG_IS_READ_STRUCT) != 0 && - png_ptr->chunk_name != 0) - png_chunk_warning(png_ptr, error_message); - else -# endif - png_warning(png_ptr, error_message); - } - - else - { -# ifdef PNG_READ_SUPPORTED - if ((png_ptr->mode & PNG_IS_READ_STRUCT) != 0 && - png_ptr->chunk_name != 0) - png_chunk_error(png_ptr, error_message); - else -# endif - png_error(png_ptr, error_message); - } - -# ifndef PNG_ERROR_TEXT_SUPPORTED - PNG_UNUSED(error_message) -# endif -} - -void /* PRIVATE */ -png_app_warning(png_const_structrp png_ptr, png_const_charp error_message) -{ - if (png_ptr->flags & PNG_FLAG_APP_WARNINGS_WARN) - png_warning(png_ptr, error_message); - else - png_error(png_ptr, error_message); - -# ifndef PNG_ERROR_TEXT_SUPPORTED - PNG_UNUSED(error_message) -# endif -} - -void /* PRIVATE */ -png_app_error(png_const_structrp png_ptr, png_const_charp error_message) -{ - if (png_ptr->flags & PNG_FLAG_APP_ERRORS_WARN) - png_warning(png_ptr, error_message); - else - png_error(png_ptr, error_message); - -# ifndef PNG_ERROR_TEXT_SUPPORTED - PNG_UNUSED(error_message) -# endif -} -#endif /* BENIGN_ERRORS */ - -/* These utilities are used internally to build an error message that relates - * to the current chunk. The chunk name comes from png_ptr->chunk_name, - * this is used to prefix the message. The message is limited in length - * to 63 bytes, the name characters are output as hex digits wrapped in [] - * if the character is invalid. - */ -#define isnonalpha(c) ((c) < 65 || (c) > 122 || ((c) > 90 && (c) < 97)) -static PNG_CONST char png_digit[16] = { - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - 'A', 'B', 'C', 'D', 'E', 'F' -}; - -#define PNG_MAX_ERROR_TEXT 196 /* Currently limited be profile_error in png.c */ -#if defined(PNG_WARNINGS_SUPPORTED) || \ - (defined(PNG_READ_SUPPORTED) && defined(PNG_ERROR_TEXT_SUPPORTED)) -static void /* PRIVATE */ -png_format_buffer(png_const_structrp png_ptr, png_charp buffer, png_const_charp - error_message) -{ - png_uint_32 chunk_name = png_ptr->chunk_name; - int iout = 0, ishift = 24; - - while (ishift >= 0) - { - int c = (int)(chunk_name >> ishift) & 0xff; - - ishift -= 8; - if (isnonalpha(c)) - { - buffer[iout++] = PNG_LITERAL_LEFT_SQUARE_BRACKET; - buffer[iout++] = png_digit[(c & 0xf0) >> 4]; - buffer[iout++] = png_digit[c & 0x0f]; - buffer[iout++] = PNG_LITERAL_RIGHT_SQUARE_BRACKET; - } - - else - { - buffer[iout++] = (char)c; - } - } - - if (error_message == NULL) - buffer[iout] = '\0'; - - else - { - int iin = 0; - - buffer[iout++] = ':'; - buffer[iout++] = ' '; - - while (iin < PNG_MAX_ERROR_TEXT-1 && error_message[iin] != '\0') - buffer[iout++] = error_message[iin++]; - - /* iin < PNG_MAX_ERROR_TEXT, so the following is safe: */ - buffer[iout] = '\0'; - } -} -#endif /* PNG_WARNINGS_SUPPORTED || PNG_ERROR_TEXT_SUPPORTED */ - -#if defined(PNG_READ_SUPPORTED) && defined(PNG_ERROR_TEXT_SUPPORTED) -PNG_FUNCTION(void,PNGAPI -png_chunk_error,(png_const_structrp png_ptr, png_const_charp error_message), - PNG_NORETURN) -{ - char msg[18+PNG_MAX_ERROR_TEXT]; - if (png_ptr == NULL) - png_error(png_ptr, error_message); - - else - { - png_format_buffer(png_ptr, msg, error_message); - png_error(png_ptr, msg); - } -} -#endif /* PNG_READ_SUPPORTED && PNG_ERROR_TEXT_SUPPORTED */ - -#ifdef PNG_WARNINGS_SUPPORTED -void PNGAPI -png_chunk_warning(png_const_structrp png_ptr, png_const_charp warning_message) -{ - char msg[18+PNG_MAX_ERROR_TEXT]; - if (png_ptr == NULL) - png_warning(png_ptr, warning_message); - - else - { - png_format_buffer(png_ptr, msg, warning_message); - png_warning(png_ptr, msg); - } -} -#endif /* PNG_WARNINGS_SUPPORTED */ - -#ifdef PNG_READ_SUPPORTED -#ifdef PNG_BENIGN_ERRORS_SUPPORTED -void PNGAPI -png_chunk_benign_error(png_const_structrp png_ptr, png_const_charp - error_message) -{ - if (png_ptr->flags & PNG_FLAG_BENIGN_ERRORS_WARN) - png_chunk_warning(png_ptr, error_message); - - else - png_chunk_error(png_ptr, error_message); - -# ifndef PNG_ERROR_TEXT_SUPPORTED - PNG_UNUSED(error_message) -# endif -} -#endif -#endif /* PNG_READ_SUPPORTED */ - -void /* PRIVATE */ -png_chunk_report(png_const_structrp png_ptr, png_const_charp message, int error) -{ -# ifndef PNG_WARNINGS_SUPPORTED - PNG_UNUSED(message) -# endif - - /* This is always supported, but for just read or just write it - * unconditionally does the right thing. - */ -# if defined(PNG_READ_SUPPORTED) && defined(PNG_WRITE_SUPPORTED) - if (png_ptr->mode & PNG_IS_READ_STRUCT) -# endif - -# ifdef PNG_READ_SUPPORTED - { - if (error < PNG_CHUNK_ERROR) - png_chunk_warning(png_ptr, message); - - else - png_chunk_benign_error(png_ptr, message); - } -# endif - -# if defined(PNG_READ_SUPPORTED) && defined(PNG_WRITE_SUPPORTED) - else if (!(png_ptr->mode & PNG_IS_READ_STRUCT)) -# endif - -# ifdef PNG_WRITE_SUPPORTED - { - if (error < PNG_CHUNK_WRITE_ERROR) - png_app_warning(png_ptr, message); - - else - png_app_error(png_ptr, message); - } -# endif -} - -#ifdef PNG_ERROR_TEXT_SUPPORTED -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_FUNCTION(void, -png_fixed_error,(png_const_structrp png_ptr, png_const_charp name),PNG_NORETURN) -{ -# define fixed_message "fixed point overflow in " -# define fixed_message_ln ((sizeof fixed_message)-1) - int iin; - char msg[fixed_message_ln+PNG_MAX_ERROR_TEXT]; - memcpy(msg, fixed_message, fixed_message_ln); - iin = 0; - if (name != NULL) while (iin < (PNG_MAX_ERROR_TEXT-1) && name[iin] != 0) - { - msg[fixed_message_ln + iin] = name[iin]; - ++iin; - } - msg[fixed_message_ln + iin] = 0; - png_error(png_ptr, msg); -} -#endif -#endif - -#ifdef PNG_SETJMP_SUPPORTED -/* This API only exists if ANSI-C style error handling is used, - * otherwise it is necessary for png_default_error to be overridden. - */ -jmp_buf* PNGAPI -png_set_longjmp_fn(png_structrp png_ptr, png_longjmp_ptr longjmp_fn, - size_t jmp_buf_size) -{ - /* From libpng 1.6.0 the app gets one chance to set a 'jmpbuf_size' value - * and it must not change after that. Libpng doesn't care how big the - * buffer is, just that it doesn't change. - * - * If the buffer size is no *larger* than the size of jmp_buf when libpng is - * compiled a built in jmp_buf is returned; this preserves the pre-1.6.0 - * semantics that this call will not fail. If the size is larger, however, - * the buffer is allocated and this may fail, causing the function to return - * NULL. - */ - if (png_ptr == NULL) - return NULL; - - if (png_ptr->jmp_buf_ptr == NULL) - { - png_ptr->jmp_buf_size = 0; /* not allocated */ - - if (jmp_buf_size <= (sizeof png_ptr->jmp_buf_local)) - png_ptr->jmp_buf_ptr = &png_ptr->jmp_buf_local; - - else - { - png_ptr->jmp_buf_ptr = png_voidcast(jmp_buf *, - png_malloc_warn(png_ptr, jmp_buf_size)); - - if (png_ptr->jmp_buf_ptr == NULL) - return NULL; /* new NULL return on OOM */ - - png_ptr->jmp_buf_size = jmp_buf_size; - } - } - - else /* Already allocated: check the size */ - { - size_t size = png_ptr->jmp_buf_size; - - if (size == 0) - { - size = (sizeof png_ptr->jmp_buf_local); - if (png_ptr->jmp_buf_ptr != &png_ptr->jmp_buf_local) - { - /* This is an internal error in libpng: somehow we have been left - * with a stack allocated jmp_buf when the application regained - * control. It's always possible to fix this up, but for the moment - * this is a png_error because that makes it easy to detect. - */ - png_error(png_ptr, "Libpng jmp_buf still allocated"); - /* png_ptr->jmp_buf_ptr = &png_ptr->jmp_buf_local; */ - } - } - - if (size != jmp_buf_size) - { - png_warning(png_ptr, "Application jmp_buf size changed"); - return NULL; /* caller will probably crash: no choice here */ - } - } - - /* Finally fill in the function, now we have a satisfactory buffer. It is - * valid to change the function on every call. - */ - png_ptr->longjmp_fn = longjmp_fn; - return png_ptr->jmp_buf_ptr; -} - -void /* PRIVATE */ -png_free_jmpbuf(png_structrp png_ptr) -{ - if (png_ptr != NULL) - { - jmp_buf *jb = png_ptr->jmp_buf_ptr; - - /* A size of 0 is used to indicate a local, stack, allocation of the - * pointer; used here and in png.c - */ - if (jb != NULL && png_ptr->jmp_buf_size > 0) - { - - /* This stuff is so that a failure to free the error control structure - * does not leave libpng in a state with no valid error handling: the - * free always succeeds, if there is an error it gets ignored. - */ - if (jb != &png_ptr->jmp_buf_local) - { - /* Make an internal, libpng, jmp_buf to return here */ - jmp_buf free_jmp_buf; - - if (!setjmp(free_jmp_buf)) - { - png_ptr->jmp_buf_ptr = &free_jmp_buf; /* come back here */ - png_ptr->jmp_buf_size = 0; /* stack allocation */ - png_ptr->longjmp_fn = longjmp; - png_free(png_ptr, jb); /* Return to setjmp on error */ - } - } - } - - /* *Always* cancel everything out: */ - png_ptr->jmp_buf_size = 0; - png_ptr->jmp_buf_ptr = NULL; - png_ptr->longjmp_fn = 0; - } -} -#endif - -/* This is the default error handling function. Note that replacements for - * this function MUST NOT RETURN, or the program will likely crash. This - * function is used by default, or if the program supplies NULL for the - * error function pointer in png_set_error_fn(). - */ -static PNG_FUNCTION(void /* PRIVATE */, -png_default_error,(png_const_structrp png_ptr, png_const_charp error_message), - PNG_NORETURN) -{ -#ifdef PNG_CONSOLE_IO_SUPPORTED -#ifdef PNG_ERROR_NUMBERS_SUPPORTED - /* Check on NULL only added in 1.5.4 */ - if (error_message != NULL && *error_message == PNG_LITERAL_SHARP) - { - /* Strip "#nnnn " from beginning of error message. */ - int offset; - char error_number[16]; - for (offset = 0; offset<15; offset++) - { - error_number[offset] = error_message[offset + 1]; - if (error_message[offset] == ' ') - break; - } - - if ((offset > 1) && (offset < 15)) - { - error_number[offset - 1] = '\0'; - fprintf(stderr, "libpng error no. %s: %s", - error_number, error_message + offset + 1); - fprintf(stderr, PNG_STRING_NEWLINE); - } - - else - { - fprintf(stderr, "libpng error: %s, offset=%d", - error_message, offset); - fprintf(stderr, PNG_STRING_NEWLINE); - } - } - else -#endif - { - fprintf(stderr, "libpng error: %s", error_message ? error_message : - "undefined"); - fprintf(stderr, PNG_STRING_NEWLINE); - } -#else - PNG_UNUSED(error_message) /* Make compiler happy */ -#endif - png_longjmp(png_ptr, 1); -} - -PNG_FUNCTION(void,PNGAPI -png_longjmp,(png_const_structrp png_ptr, int val),PNG_NORETURN) -{ -#ifdef PNG_SETJMP_SUPPORTED - if (png_ptr && png_ptr->longjmp_fn && png_ptr->jmp_buf_ptr) - png_ptr->longjmp_fn(*png_ptr->jmp_buf_ptr, val); -#endif - - /* Here if not setjmp support or if png_ptr is null. */ - PNG_ABORT(); -} - -#ifdef PNG_WARNINGS_SUPPORTED -/* This function is called when there is a warning, but the library thinks - * it can continue anyway. Replacement functions don't have to do anything - * here if you don't want them to. In the default configuration, png_ptr is - * not used, but it is passed in case it may be useful. - */ -static void /* PRIVATE */ -png_default_warning(png_const_structrp png_ptr, png_const_charp warning_message) -{ -#ifdef PNG_CONSOLE_IO_SUPPORTED -# ifdef PNG_ERROR_NUMBERS_SUPPORTED - if (*warning_message == PNG_LITERAL_SHARP) - { - int offset; - char warning_number[16]; - for (offset = 0; offset < 15; offset++) - { - warning_number[offset] = warning_message[offset + 1]; - if (warning_message[offset] == ' ') - break; - } - - if ((offset > 1) && (offset < 15)) - { - warning_number[offset + 1] = '\0'; - fprintf(stderr, "libpng warning no. %s: %s", - warning_number, warning_message + offset); - fprintf(stderr, PNG_STRING_NEWLINE); - } - - else - { - fprintf(stderr, "libpng warning: %s", - warning_message); - fprintf(stderr, PNG_STRING_NEWLINE); - } - } - else -# endif - - { - fprintf(stderr, "libpng warning: %s", warning_message); - fprintf(stderr, PNG_STRING_NEWLINE); - } -#else - PNG_UNUSED(warning_message) /* Make compiler happy */ -#endif - PNG_UNUSED(png_ptr) /* Make compiler happy */ -} -#endif /* PNG_WARNINGS_SUPPORTED */ - -/* This function is called when the application wants to use another method - * of handling errors and warnings. Note that the error function MUST NOT - * return to the calling routine or serious problems will occur. The return - * method used in the default routine calls longjmp(png_ptr->jmp_buf_ptr, 1) - */ -void PNGAPI -png_set_error_fn(png_structrp png_ptr, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warning_fn) -{ - if (png_ptr == NULL) - return; - - png_ptr->error_ptr = error_ptr; - png_ptr->error_fn = error_fn; -#ifdef PNG_WARNINGS_SUPPORTED - png_ptr->warning_fn = warning_fn; -#else - PNG_UNUSED(warning_fn) -#endif -} - - -/* This function returns a pointer to the error_ptr associated with the user - * functions. The application should free any memory associated with this - * pointer before png_write_destroy and png_read_destroy are called. - */ -png_voidp PNGAPI -png_get_error_ptr(png_const_structrp png_ptr) -{ - if (png_ptr == NULL) - return NULL; - - return ((png_voidp)png_ptr->error_ptr); -} - - -#ifdef PNG_ERROR_NUMBERS_SUPPORTED -void PNGAPI -png_set_strip_error_numbers(png_structrp png_ptr, png_uint_32 strip_mode) -{ - if (png_ptr != NULL) - { - png_ptr->flags &= - ((~(PNG_FLAG_STRIP_ERROR_NUMBERS | - PNG_FLAG_STRIP_ERROR_TEXT))&strip_mode); - } -} -#endif - -#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) ||\ - defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) - /* Currently the above both depend on SETJMP_SUPPORTED, however it would be - * possible to implement without setjmp support just so long as there is some - * way to handle the error return here: - */ -PNG_FUNCTION(void /* PRIVATE */, -png_safe_error,(png_structp png_nonconst_ptr, png_const_charp error_message), - PNG_NORETURN) -{ - const png_const_structrp png_ptr = png_nonconst_ptr; - png_imagep image = png_voidcast(png_imagep, png_ptr->error_ptr); - - /* An error is always logged here, overwriting anything (typically a warning) - * that is already there: - */ - if (image != NULL) - { - png_safecat(image->message, (sizeof image->message), 0, error_message); - image->warning_or_error |= PNG_IMAGE_ERROR; - - /* Retrieve the jmp_buf from within the png_control, making this work for - * C++ compilation too is pretty tricky: C++ wants a pointer to the first - * element of a jmp_buf, but C doesn't tell us the type of that. - */ - if (image->opaque != NULL && image->opaque->error_buf != NULL) - longjmp(png_control_jmp_buf(image->opaque), 1); - - /* Missing longjmp buffer, the following is to help debugging: */ - { - size_t pos = png_safecat(image->message, (sizeof image->message), 0, - "bad longjmp: "); - png_safecat(image->message, (sizeof image->message), pos, - error_message); - } - } - - /* Here on an internal programming error. */ - abort(); -} - -#ifdef PNG_WARNINGS_SUPPORTED -void /* PRIVATE */ -png_safe_warning(png_structp png_nonconst_ptr, png_const_charp warning_message) -{ - const png_const_structrp png_ptr = png_nonconst_ptr; - png_imagep image = png_voidcast(png_imagep, png_ptr->error_ptr); - - /* A warning is only logged if there is no prior warning or error. */ - if (image->warning_or_error == 0) - { - png_safecat(image->message, (sizeof image->message), 0, warning_message); - image->warning_or_error |= PNG_IMAGE_WARNING; - } -} -#endif - -int /* PRIVATE */ -png_safe_execute(png_imagep image_in, int (*function)(png_voidp), png_voidp arg) -{ - volatile png_imagep image = image_in; - volatile int result; - volatile png_voidp saved_error_buf; - jmp_buf safe_jmpbuf; - - /* Safely execute function(arg) with png_error returning to this function. */ - saved_error_buf = image->opaque->error_buf; - result = setjmp(safe_jmpbuf) == 0; - - if (result) - { - - image->opaque->error_buf = safe_jmpbuf; - result = function(arg); - } - - image->opaque->error_buf = saved_error_buf; - - /* And do the cleanup prior to any failure return. */ - if (!result) - png_image_free(image); - - return result; -} -#endif /* SIMPLIFIED READ/WRITE */ -#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ diff --git a/io2d/src/3rd-party/libpng/pngget.c b/io2d/src/3rd-party/libpng/pngget.c deleted file mode 100644 index aca63a9..0000000 --- a/io2d/src/3rd-party/libpng/pngget.c +++ /dev/null @@ -1,1177 +0,0 @@ - -/* pngget.c - retrieval of values from info struct - * - * Last changed in libpng 1.6.1 [March 28, 2013] - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - */ - -#include "pngpriv.h" - -#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) - -png_uint_32 PNGAPI -png_get_valid(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_uint_32 flag) -{ - if (png_ptr != NULL && info_ptr != NULL) - return(info_ptr->valid & flag); - - return(0); -} - -png_size_t PNGAPI -png_get_rowbytes(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return(info_ptr->rowbytes); - - return(0); -} - -#ifdef PNG_INFO_IMAGE_SUPPORTED -png_bytepp PNGAPI -png_get_rows(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return(info_ptr->row_pointers); - - return(0); -} -#endif - -#ifdef PNG_EASY_ACCESS_SUPPORTED -/* Easy access to info, added in libpng-0.99 */ -png_uint_32 PNGAPI -png_get_image_width(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return info_ptr->width; - - return (0); -} - -png_uint_32 PNGAPI -png_get_image_height(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return info_ptr->height; - - return (0); -} - -png_byte PNGAPI -png_get_bit_depth(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return info_ptr->bit_depth; - - return (0); -} - -png_byte PNGAPI -png_get_color_type(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return info_ptr->color_type; - - return (0); -} - -png_byte PNGAPI -png_get_filter_type(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return info_ptr->filter_type; - - return (0); -} - -png_byte PNGAPI -png_get_interlace_type(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return info_ptr->interlace_type; - - return (0); -} - -png_byte PNGAPI -png_get_compression_type(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return info_ptr->compression_type; - - return (0); -} - -png_uint_32 PNGAPI -png_get_x_pixels_per_meter(png_const_structrp png_ptr, png_const_inforp - info_ptr) -{ -#ifdef PNG_pHYs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs)) - { - png_debug1(1, "in %s retrieval function", - "png_get_x_pixels_per_meter"); - - if (info_ptr->phys_unit_type == PNG_RESOLUTION_METER) - return (info_ptr->x_pixels_per_unit); - } -#endif - - return (0); -} - -png_uint_32 PNGAPI -png_get_y_pixels_per_meter(png_const_structrp png_ptr, png_const_inforp - info_ptr) -{ -#ifdef PNG_pHYs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs)) - { - png_debug1(1, "in %s retrieval function", - "png_get_y_pixels_per_meter"); - - if (info_ptr->phys_unit_type == PNG_RESOLUTION_METER) - return (info_ptr->y_pixels_per_unit); - } -#endif - - return (0); -} - -png_uint_32 PNGAPI -png_get_pixels_per_meter(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ -#ifdef PNG_pHYs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs)) - { - png_debug1(1, "in %s retrieval function", "png_get_pixels_per_meter"); - - if (info_ptr->phys_unit_type == PNG_RESOLUTION_METER && - info_ptr->x_pixels_per_unit == info_ptr->y_pixels_per_unit) - return (info_ptr->x_pixels_per_unit); - } -#endif - - return (0); -} - -#ifdef PNG_FLOATING_POINT_SUPPORTED -float PNGAPI -png_get_pixel_aspect_ratio(png_const_structrp png_ptr, png_const_inforp - info_ptr) -{ -#ifdef PNG_READ_pHYs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs)) - { - png_debug1(1, "in %s retrieval function", "png_get_aspect_ratio"); - - if (info_ptr->x_pixels_per_unit != 0) - return ((float)((float)info_ptr->y_pixels_per_unit - /(float)info_ptr->x_pixels_per_unit)); - } -#else - PNG_UNUSED(png_ptr) - PNG_UNUSED(info_ptr) -#endif - - return ((float)0.0); -} -#endif - -#ifdef PNG_FIXED_POINT_SUPPORTED -png_fixed_point PNGAPI -png_get_pixel_aspect_ratio_fixed(png_const_structrp png_ptr, - png_const_inforp info_ptr) -{ -#ifdef PNG_READ_pHYs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs) - && info_ptr->x_pixels_per_unit > 0 && info_ptr->y_pixels_per_unit > 0 - && info_ptr->x_pixels_per_unit <= PNG_UINT_31_MAX - && info_ptr->y_pixels_per_unit <= PNG_UINT_31_MAX) - { - png_fixed_point res; - - png_debug1(1, "in %s retrieval function", "png_get_aspect_ratio_fixed"); - - /* The following casts work because a PNG 4 byte integer only has a valid - * range of 0..2^31-1; otherwise the cast might overflow. - */ - if (png_muldiv(&res, (png_int_32)info_ptr->y_pixels_per_unit, PNG_FP_1, - (png_int_32)info_ptr->x_pixels_per_unit)) - return res; - } -#else - PNG_UNUSED(png_ptr) - PNG_UNUSED(info_ptr) -#endif - - return 0; -} -#endif - -png_int_32 PNGAPI -png_get_x_offset_microns(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ -#ifdef PNG_oFFs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs)) - { - png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns"); - - if (info_ptr->offset_unit_type == PNG_OFFSET_MICROMETER) - return (info_ptr->x_offset); - } -#endif - - return (0); -} - -png_int_32 PNGAPI -png_get_y_offset_microns(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ -#ifdef PNG_oFFs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs)) - { - png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns"); - - if (info_ptr->offset_unit_type == PNG_OFFSET_MICROMETER) - return (info_ptr->y_offset); - } -#endif - - return (0); -} - -png_int_32 PNGAPI -png_get_x_offset_pixels(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ -#ifdef PNG_oFFs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs)) - { - png_debug1(1, "in %s retrieval function", "png_get_x_offset_pixels"); - - if (info_ptr->offset_unit_type == PNG_OFFSET_PIXEL) - return (info_ptr->x_offset); - } -#endif - - return (0); -} - -png_int_32 PNGAPI -png_get_y_offset_pixels(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ -#ifdef PNG_oFFs_SUPPORTED - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs)) - { - png_debug1(1, "in %s retrieval function", "png_get_y_offset_pixels"); - - if (info_ptr->offset_unit_type == PNG_OFFSET_PIXEL) - return (info_ptr->y_offset); - } -#endif - - return (0); -} - -#ifdef PNG_INCH_CONVERSIONS_SUPPORTED -static png_uint_32 -ppi_from_ppm(png_uint_32 ppm) -{ -#if 0 - /* The conversion is *(2.54/100), in binary (32 digits): - * .00000110100000001001110101001001 - */ - png_uint_32 t1001, t1101; - ppm >>= 1; /* .1 */ - t1001 = ppm + (ppm >> 3); /* .1001 */ - t1101 = t1001 + (ppm >> 1); /* .1101 */ - ppm >>= 20; /* .000000000000000000001 */ - t1101 += t1101 >> 15; /* .1101000000000001101 */ - t1001 >>= 11; /* .000000000001001 */ - t1001 += t1001 >> 12; /* .000000000001001000000001001 */ - ppm += t1001; /* .000000000001001000001001001 */ - ppm += t1101; /* .110100000001001110101001001 */ - return (ppm + 16) >> 5;/* .00000110100000001001110101001001 */ -#else - /* The argument is a PNG unsigned integer, so it is not permitted - * to be bigger than 2^31. - */ - png_fixed_point result; - if (ppm <= PNG_UINT_31_MAX && png_muldiv(&result, (png_int_32)ppm, 127, - 5000)) - return result; - - /* Overflow. */ - return 0; -#endif -} - -png_uint_32 PNGAPI -png_get_pixels_per_inch(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - return ppi_from_ppm(png_get_pixels_per_meter(png_ptr, info_ptr)); -} - -png_uint_32 PNGAPI -png_get_x_pixels_per_inch(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - return ppi_from_ppm(png_get_x_pixels_per_meter(png_ptr, info_ptr)); -} - -png_uint_32 PNGAPI -png_get_y_pixels_per_inch(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - return ppi_from_ppm(png_get_y_pixels_per_meter(png_ptr, info_ptr)); -} - -#ifdef PNG_FIXED_POINT_SUPPORTED -static png_fixed_point -png_fixed_inches_from_microns(png_const_structrp png_ptr, png_int_32 microns) -{ - /* Convert from metres * 1,000,000 to inches * 100,000, meters to - * inches is simply *(100/2.54), so we want *(10/2.54) == 500/127. - * Notice that this can overflow - a warning is output and 0 is - * returned. - */ - return png_muldiv_warn(png_ptr, microns, 500, 127); -} - -png_fixed_point PNGAPI -png_get_x_offset_inches_fixed(png_const_structrp png_ptr, - png_const_inforp info_ptr) -{ - return png_fixed_inches_from_microns(png_ptr, - png_get_x_offset_microns(png_ptr, info_ptr)); -} -#endif - -#ifdef PNG_FIXED_POINT_SUPPORTED -png_fixed_point PNGAPI -png_get_y_offset_inches_fixed(png_const_structrp png_ptr, - png_const_inforp info_ptr) -{ - return png_fixed_inches_from_microns(png_ptr, - png_get_y_offset_microns(png_ptr, info_ptr)); -} -#endif - -#ifdef PNG_FLOATING_POINT_SUPPORTED -float PNGAPI -png_get_x_offset_inches(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - /* To avoid the overflow do the conversion directly in floating - * point. - */ - return (float)(png_get_x_offset_microns(png_ptr, info_ptr) * .00003937); -} -#endif - -#ifdef PNG_FLOATING_POINT_SUPPORTED -float PNGAPI -png_get_y_offset_inches(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - /* To avoid the overflow do the conversion directly in floating - * point. - */ - return (float)(png_get_y_offset_microns(png_ptr, info_ptr) * .00003937); -} -#endif - -#ifdef PNG_pHYs_SUPPORTED -png_uint_32 PNGAPI -png_get_pHYs_dpi(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type) -{ - png_uint_32 retval = 0; - - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs)) - { - png_debug1(1, "in %s retrieval function", "pHYs"); - - if (res_x != NULL) - { - *res_x = info_ptr->x_pixels_per_unit; - retval |= PNG_INFO_pHYs; - } - - if (res_y != NULL) - { - *res_y = info_ptr->y_pixels_per_unit; - retval |= PNG_INFO_pHYs; - } - - if (unit_type != NULL) - { - *unit_type = (int)info_ptr->phys_unit_type; - retval |= PNG_INFO_pHYs; - - if (*unit_type == 1) - { - if (res_x != NULL) *res_x = (png_uint_32)(*res_x * .0254 + .50); - if (res_y != NULL) *res_y = (png_uint_32)(*res_y * .0254 + .50); - } - } - } - - return (retval); -} -#endif /* PNG_pHYs_SUPPORTED */ -#endif /* PNG_INCH_CONVERSIONS_SUPPORTED */ - -/* png_get_channels really belongs in here, too, but it's been around longer */ - -#endif /* PNG_EASY_ACCESS_SUPPORTED */ - - -png_byte PNGAPI -png_get_channels(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return(info_ptr->channels); - - return (0); -} - -#ifdef PNG_READ_SUPPORTED -png_const_bytep PNGAPI -png_get_signature(png_const_structrp png_ptr, png_const_inforp info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return(info_ptr->signature); - - return (NULL); -} -#endif - -#ifdef PNG_bKGD_SUPPORTED -png_uint_32 PNGAPI -png_get_bKGD(png_const_structrp png_ptr, png_inforp info_ptr, - png_color_16p *background) -{ - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD) - && background != NULL) - { - png_debug1(1, "in %s retrieval function", "bKGD"); - - *background = &(info_ptr->background); - return (PNG_INFO_bKGD); - } - - return (0); -} -#endif - -#ifdef PNG_cHRM_SUPPORTED -/* The XYZ APIs were added in 1.5.5 to take advantage of the code added at the - * same time to correct the rgb grayscale coefficient defaults obtained from the - * cHRM chunk in 1.5.4 - */ -# ifdef PNG_FLOATING_POINT_SUPPORTED -png_uint_32 PNGAPI -png_get_cHRM(png_const_structrp png_ptr, png_const_inforp info_ptr, - double *white_x, double *white_y, double *red_x, double *red_y, - double *green_x, double *green_y, double *blue_x, double *blue_y) -{ - /* Quiet API change: this code used to only return the end points if a cHRM - * chunk was present, but the end points can also come from iCCP or sRGB - * chunks, so in 1.6.0 the png_get_ APIs return the end points regardless and - * the png_set_ APIs merely check that set end points are mutually - * consistent. - */ - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_ENDPOINTS)) - { - png_debug1(1, "in %s retrieval function", "cHRM"); - - if (white_x != NULL) - *white_x = png_float(png_ptr, - info_ptr->colorspace.end_points_xy.whitex, "cHRM white X"); - if (white_y != NULL) - *white_y = png_float(png_ptr, - info_ptr->colorspace.end_points_xy.whitey, "cHRM white Y"); - if (red_x != NULL) - *red_x = png_float(png_ptr, info_ptr->colorspace.end_points_xy.redx, - "cHRM red X"); - if (red_y != NULL) - *red_y = png_float(png_ptr, info_ptr->colorspace.end_points_xy.redy, - "cHRM red Y"); - if (green_x != NULL) - *green_x = png_float(png_ptr, - info_ptr->colorspace.end_points_xy.greenx, "cHRM green X"); - if (green_y != NULL) - *green_y = png_float(png_ptr, - info_ptr->colorspace.end_points_xy.greeny, "cHRM green Y"); - if (blue_x != NULL) - *blue_x = png_float(png_ptr, info_ptr->colorspace.end_points_xy.bluex, - "cHRM blue X"); - if (blue_y != NULL) - *blue_y = png_float(png_ptr, info_ptr->colorspace.end_points_xy.bluey, - "cHRM blue Y"); - return (PNG_INFO_cHRM); - } - - return (0); -} - -png_uint_32 PNGAPI -png_get_cHRM_XYZ(png_const_structrp png_ptr, png_const_inforp info_ptr, - double *red_X, double *red_Y, double *red_Z, double *green_X, - double *green_Y, double *green_Z, double *blue_X, double *blue_Y, - double *blue_Z) -{ - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_ENDPOINTS)) - { - png_debug1(1, "in %s retrieval function", "cHRM_XYZ(float)"); - - if (red_X != NULL) - *red_X = png_float(png_ptr, info_ptr->colorspace.end_points_XYZ.red_X, - "cHRM red X"); - if (red_Y != NULL) - *red_Y = png_float(png_ptr, info_ptr->colorspace.end_points_XYZ.red_Y, - "cHRM red Y"); - if (red_Z != NULL) - *red_Z = png_float(png_ptr, info_ptr->colorspace.end_points_XYZ.red_Z, - "cHRM red Z"); - if (green_X != NULL) - *green_X = png_float(png_ptr, - info_ptr->colorspace.end_points_XYZ.green_X, "cHRM green X"); - if (green_Y != NULL) - *green_Y = png_float(png_ptr, - info_ptr->colorspace.end_points_XYZ.green_Y, "cHRM green Y"); - if (green_Z != NULL) - *green_Z = png_float(png_ptr, - info_ptr->colorspace.end_points_XYZ.green_Z, "cHRM green Z"); - if (blue_X != NULL) - *blue_X = png_float(png_ptr, - info_ptr->colorspace.end_points_XYZ.blue_X, "cHRM blue X"); - if (blue_Y != NULL) - *blue_Y = png_float(png_ptr, - info_ptr->colorspace.end_points_XYZ.blue_Y, "cHRM blue Y"); - if (blue_Z != NULL) - *blue_Z = png_float(png_ptr, - info_ptr->colorspace.end_points_XYZ.blue_Z, "cHRM blue Z"); - return (PNG_INFO_cHRM); - } - - return (0); -} -# endif - -# ifdef PNG_FIXED_POINT_SUPPORTED -png_uint_32 PNGAPI -png_get_cHRM_XYZ_fixed(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_fixed_point *int_red_X, png_fixed_point *int_red_Y, - png_fixed_point *int_red_Z, png_fixed_point *int_green_X, - png_fixed_point *int_green_Y, png_fixed_point *int_green_Z, - png_fixed_point *int_blue_X, png_fixed_point *int_blue_Y, - png_fixed_point *int_blue_Z) -{ - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_ENDPOINTS)) - { - png_debug1(1, "in %s retrieval function", "cHRM_XYZ"); - - if (int_red_X != NULL) - *int_red_X = info_ptr->colorspace.end_points_XYZ.red_X; - if (int_red_Y != NULL) - *int_red_Y = info_ptr->colorspace.end_points_XYZ.red_Y; - if (int_red_Z != NULL) - *int_red_Z = info_ptr->colorspace.end_points_XYZ.red_Z; - if (int_green_X != NULL) - *int_green_X = info_ptr->colorspace.end_points_XYZ.green_X; - if (int_green_Y != NULL) - *int_green_Y = info_ptr->colorspace.end_points_XYZ.green_Y; - if (int_green_Z != NULL) - *int_green_Z = info_ptr->colorspace.end_points_XYZ.green_Z; - if (int_blue_X != NULL) - *int_blue_X = info_ptr->colorspace.end_points_XYZ.blue_X; - if (int_blue_Y != NULL) - *int_blue_Y = info_ptr->colorspace.end_points_XYZ.blue_Y; - if (int_blue_Z != NULL) - *int_blue_Z = info_ptr->colorspace.end_points_XYZ.blue_Z; - return (PNG_INFO_cHRM); - } - - return (0); -} - -png_uint_32 PNGAPI -png_get_cHRM_fixed(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_fixed_point *white_x, png_fixed_point *white_y, png_fixed_point *red_x, - png_fixed_point *red_y, png_fixed_point *green_x, png_fixed_point *green_y, - png_fixed_point *blue_x, png_fixed_point *blue_y) -{ - png_debug1(1, "in %s retrieval function", "cHRM"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_ENDPOINTS)) - { - if (white_x != NULL) - *white_x = info_ptr->colorspace.end_points_xy.whitex; - if (white_y != NULL) - *white_y = info_ptr->colorspace.end_points_xy.whitey; - if (red_x != NULL) - *red_x = info_ptr->colorspace.end_points_xy.redx; - if (red_y != NULL) - *red_y = info_ptr->colorspace.end_points_xy.redy; - if (green_x != NULL) - *green_x = info_ptr->colorspace.end_points_xy.greenx; - if (green_y != NULL) - *green_y = info_ptr->colorspace.end_points_xy.greeny; - if (blue_x != NULL) - *blue_x = info_ptr->colorspace.end_points_xy.bluex; - if (blue_y != NULL) - *blue_y = info_ptr->colorspace.end_points_xy.bluey; - return (PNG_INFO_cHRM); - } - - return (0); -} -# endif -#endif - -#ifdef PNG_gAMA_SUPPORTED -# ifdef PNG_FIXED_POINT_SUPPORTED -png_uint_32 PNGAPI -png_get_gAMA_fixed(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_fixed_point *file_gamma) -{ - png_debug1(1, "in %s retrieval function", "gAMA"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_GAMMA) && - file_gamma != NULL) - { - *file_gamma = info_ptr->colorspace.gamma; - return (PNG_INFO_gAMA); - } - - return (0); -} -# endif - -# ifdef PNG_FLOATING_POINT_SUPPORTED -png_uint_32 PNGAPI -png_get_gAMA(png_const_structrp png_ptr, png_const_inforp info_ptr, - double *file_gamma) -{ - png_debug1(1, "in %s retrieval function", "gAMA(float)"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_GAMMA) && - file_gamma != NULL) - { - *file_gamma = png_float(png_ptr, info_ptr->colorspace.gamma, - "png_get_gAMA"); - return (PNG_INFO_gAMA); - } - - return (0); -} -# endif -#endif - -#ifdef PNG_sRGB_SUPPORTED -png_uint_32 PNGAPI -png_get_sRGB(png_const_structrp png_ptr, png_const_inforp info_ptr, - int *file_srgb_intent) -{ - png_debug1(1, "in %s retrieval function", "sRGB"); - - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB) - && file_srgb_intent != NULL) - { - *file_srgb_intent = info_ptr->colorspace.rendering_intent; - return (PNG_INFO_sRGB); - } - - return (0); -} -#endif - -#ifdef PNG_iCCP_SUPPORTED -png_uint_32 PNGAPI -png_get_iCCP(png_const_structrp png_ptr, png_inforp info_ptr, - png_charpp name, int *compression_type, - png_bytepp profile, png_uint_32 *proflen) -{ - png_debug1(1, "in %s retrieval function", "iCCP"); - - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_iCCP) - && name != NULL && compression_type != NULL && profile != NULL && - proflen != NULL) - { - *name = info_ptr->iccp_name; - *profile = info_ptr->iccp_profile; - *proflen = png_get_uint_32(info_ptr->iccp_profile); - /* This is somewhat irrelevant since the profile data returned has - * actually been uncompressed. - */ - *compression_type = PNG_COMPRESSION_TYPE_BASE; - return (PNG_INFO_iCCP); - } - - return (0); -} -#endif - -#ifdef PNG_sPLT_SUPPORTED -int PNGAPI -png_get_sPLT(png_const_structrp png_ptr, png_inforp info_ptr, - png_sPLT_tpp spalettes) -{ - if (png_ptr != NULL && info_ptr != NULL && spalettes != NULL) - { - *spalettes = info_ptr->splt_palettes; - return info_ptr->splt_palettes_num; - } - - return (0); -} -#endif - -#ifdef PNG_hIST_SUPPORTED -png_uint_32 PNGAPI -png_get_hIST(png_const_structrp png_ptr, png_inforp info_ptr, - png_uint_16p *hist) -{ - png_debug1(1, "in %s retrieval function", "hIST"); - - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST) - && hist != NULL) - { - *hist = info_ptr->hist; - return (PNG_INFO_hIST); - } - - return (0); -} -#endif - -png_uint_32 PNGAPI -png_get_IHDR(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_uint_32 *width, png_uint_32 *height, int *bit_depth, - int *color_type, int *interlace_type, int *compression_type, - int *filter_type) -{ - png_debug1(1, "in %s retrieval function", "IHDR"); - - if (png_ptr == NULL || info_ptr == NULL || width == NULL || - height == NULL || bit_depth == NULL || color_type == NULL) - return (0); - - *width = info_ptr->width; - *height = info_ptr->height; - *bit_depth = info_ptr->bit_depth; - *color_type = info_ptr->color_type; - - if (compression_type != NULL) - *compression_type = info_ptr->compression_type; - - if (filter_type != NULL) - *filter_type = info_ptr->filter_type; - - if (interlace_type != NULL) - *interlace_type = info_ptr->interlace_type; - - /* This is redundant if we can be sure that the info_ptr values were all - * assigned in png_set_IHDR(). We do the check anyhow in case an - * application has ignored our advice not to mess with the members - * of info_ptr directly. - */ - png_check_IHDR(png_ptr, info_ptr->width, info_ptr->height, - info_ptr->bit_depth, info_ptr->color_type, info_ptr->interlace_type, - info_ptr->compression_type, info_ptr->filter_type); - - return (1); -} - -#ifdef PNG_oFFs_SUPPORTED -png_uint_32 PNGAPI -png_get_oFFs(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type) -{ - png_debug1(1, "in %s retrieval function", "oFFs"); - - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs) - && offset_x != NULL && offset_y != NULL && unit_type != NULL) - { - *offset_x = info_ptr->x_offset; - *offset_y = info_ptr->y_offset; - *unit_type = (int)info_ptr->offset_unit_type; - return (PNG_INFO_oFFs); - } - - return (0); -} -#endif - -#ifdef PNG_pCAL_SUPPORTED -png_uint_32 PNGAPI -png_get_pCAL(png_const_structrp png_ptr, png_inforp info_ptr, - png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type, int *nparams, - png_charp *units, png_charpp *params) -{ - png_debug1(1, "in %s retrieval function", "pCAL"); - - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pCAL) - && purpose != NULL && X0 != NULL && X1 != NULL && type != NULL && - nparams != NULL && units != NULL && params != NULL) - { - *purpose = info_ptr->pcal_purpose; - *X0 = info_ptr->pcal_X0; - *X1 = info_ptr->pcal_X1; - *type = (int)info_ptr->pcal_type; - *nparams = (int)info_ptr->pcal_nparams; - *units = info_ptr->pcal_units; - *params = info_ptr->pcal_params; - return (PNG_INFO_pCAL); - } - - return (0); -} -#endif - -#ifdef PNG_sCAL_SUPPORTED -# ifdef PNG_FIXED_POINT_SUPPORTED -# if defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) || \ - defined(PNG_FLOATING_POINT_SUPPORTED) -png_uint_32 PNGAPI -png_get_sCAL_fixed(png_const_structrp png_ptr, png_const_inforp info_ptr, - int *unit, png_fixed_point *width, png_fixed_point *height) -{ - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_sCAL)) - { - *unit = info_ptr->scal_unit; - /*TODO: make this work without FP support; the API is currently eliminated - * if neither floating point APIs nor internal floating point arithmetic - * are enabled. - */ - *width = png_fixed(png_ptr, atof(info_ptr->scal_s_width), "sCAL width"); - *height = png_fixed(png_ptr, atof(info_ptr->scal_s_height), - "sCAL height"); - return (PNG_INFO_sCAL); - } - - return(0); -} -# endif /* FLOATING_ARITHMETIC */ -# endif /* FIXED_POINT */ -# ifdef PNG_FLOATING_POINT_SUPPORTED -png_uint_32 PNGAPI -png_get_sCAL(png_const_structrp png_ptr, png_const_inforp info_ptr, - int *unit, double *width, double *height) -{ - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_sCAL)) - { - *unit = info_ptr->scal_unit; - *width = atof(info_ptr->scal_s_width); - *height = atof(info_ptr->scal_s_height); - return (PNG_INFO_sCAL); - } - - return(0); -} -# endif /* FLOATING POINT */ -png_uint_32 PNGAPI -png_get_sCAL_s(png_const_structrp png_ptr, png_const_inforp info_ptr, - int *unit, png_charpp width, png_charpp height) -{ - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_sCAL)) - { - *unit = info_ptr->scal_unit; - *width = info_ptr->scal_s_width; - *height = info_ptr->scal_s_height; - return (PNG_INFO_sCAL); - } - - return(0); -} -#endif /* sCAL */ - -#ifdef PNG_pHYs_SUPPORTED -png_uint_32 PNGAPI -png_get_pHYs(png_const_structrp png_ptr, png_const_inforp info_ptr, - png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type) -{ - png_uint_32 retval = 0; - - png_debug1(1, "in %s retrieval function", "pHYs"); - - if (png_ptr != NULL && info_ptr != NULL && - (info_ptr->valid & PNG_INFO_pHYs)) - { - if (res_x != NULL) - { - *res_x = info_ptr->x_pixels_per_unit; - retval |= PNG_INFO_pHYs; - } - - if (res_y != NULL) - { - *res_y = info_ptr->y_pixels_per_unit; - retval |= PNG_INFO_pHYs; - } - - if (unit_type != NULL) - { - *unit_type = (int)info_ptr->phys_unit_type; - retval |= PNG_INFO_pHYs; - } - } - - return (retval); -} -#endif /* pHYs */ - -png_uint_32 PNGAPI -png_get_PLTE(png_const_structrp png_ptr, png_inforp info_ptr, - png_colorp *palette, int *num_palette) -{ - png_debug1(1, "in %s retrieval function", "PLTE"); - - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_PLTE) - && palette != NULL) - { - *palette = info_ptr->palette; - *num_palette = info_ptr->num_palette; - png_debug1(3, "num_palette = %d", *num_palette); - return (PNG_INFO_PLTE); - } - - return (0); -} - -#ifdef PNG_sBIT_SUPPORTED -png_uint_32 PNGAPI -png_get_sBIT(png_const_structrp png_ptr, png_inforp info_ptr, - png_color_8p *sig_bit) -{ - png_debug1(1, "in %s retrieval function", "sBIT"); - - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sBIT) - && sig_bit != NULL) - { - *sig_bit = &(info_ptr->sig_bit); - return (PNG_INFO_sBIT); - } - - return (0); -} -#endif - -#ifdef PNG_TEXT_SUPPORTED -int PNGAPI -png_get_text(png_const_structrp png_ptr, png_inforp info_ptr, - png_textp *text_ptr, int *num_text) -{ - if (png_ptr != NULL && info_ptr != NULL && info_ptr->num_text > 0) - { - png_debug1(1, "in 0x%lx retrieval function", - (unsigned long)png_ptr->chunk_name); - - if (text_ptr != NULL) - *text_ptr = info_ptr->text; - - if (num_text != NULL) - *num_text = info_ptr->num_text; - - return info_ptr->num_text; - } - - if (num_text != NULL) - *num_text = 0; - - return(0); -} -#endif - -#ifdef PNG_tIME_SUPPORTED -png_uint_32 PNGAPI -png_get_tIME(png_const_structrp png_ptr, png_inforp info_ptr, - png_timep *mod_time) -{ - png_debug1(1, "in %s retrieval function", "tIME"); - - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_tIME) - && mod_time != NULL) - { - *mod_time = &(info_ptr->mod_time); - return (PNG_INFO_tIME); - } - - return (0); -} -#endif - -#ifdef PNG_tRNS_SUPPORTED -png_uint_32 PNGAPI -png_get_tRNS(png_const_structrp png_ptr, png_inforp info_ptr, - png_bytep *trans_alpha, int *num_trans, png_color_16p *trans_color) -{ - png_uint_32 retval = 0; - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS)) - { - png_debug1(1, "in %s retrieval function", "tRNS"); - - if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - if (trans_alpha != NULL) - { - *trans_alpha = info_ptr->trans_alpha; - retval |= PNG_INFO_tRNS; - } - - if (trans_color != NULL) - *trans_color = &(info_ptr->trans_color); - } - - else /* if (info_ptr->color_type != PNG_COLOR_TYPE_PALETTE) */ - { - if (trans_color != NULL) - { - *trans_color = &(info_ptr->trans_color); - retval |= PNG_INFO_tRNS; - } - - if (trans_alpha != NULL) - *trans_alpha = NULL; - } - - if (num_trans != NULL) - { - *num_trans = info_ptr->num_trans; - retval |= PNG_INFO_tRNS; - } - } - - return (retval); -} -#endif - -#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -int PNGAPI -png_get_unknown_chunks(png_const_structrp png_ptr, png_inforp info_ptr, - png_unknown_chunkpp unknowns) -{ - if (png_ptr != NULL && info_ptr != NULL && unknowns != NULL) - { - *unknowns = info_ptr->unknown_chunks; - return info_ptr->unknown_chunks_num; - } - - return (0); -} -#endif - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -png_byte PNGAPI -png_get_rgb_to_gray_status (png_const_structrp png_ptr) -{ - return (png_byte)(png_ptr ? png_ptr->rgb_to_gray_status : 0); -} -#endif - -#ifdef PNG_USER_CHUNKS_SUPPORTED -png_voidp PNGAPI -png_get_user_chunk_ptr(png_const_structrp png_ptr) -{ - return (png_ptr ? png_ptr->user_chunk_ptr : NULL); -} -#endif - -png_size_t PNGAPI -png_get_compression_buffer_size(png_const_structrp png_ptr) -{ - if (png_ptr == NULL) - return 0; - -# ifdef PNG_WRITE_SUPPORTED - if (png_ptr->mode & PNG_IS_READ_STRUCT) -# endif - { -# ifdef PNG_SEQUENTIAL_READ_SUPPORTED - return png_ptr->IDAT_read_size; -# else - return PNG_IDAT_READ_SIZE; -# endif - } - -# ifdef PNG_WRITE_SUPPORTED - else - return png_ptr->zbuffer_size; -# endif -} - -#ifdef PNG_SET_USER_LIMITS_SUPPORTED -/* These functions were added to libpng 1.2.6 and were enabled - * by default in libpng-1.4.0 */ -png_uint_32 PNGAPI -png_get_user_width_max (png_const_structrp png_ptr) -{ - return (png_ptr ? png_ptr->user_width_max : 0); -} - -png_uint_32 PNGAPI -png_get_user_height_max (png_const_structrp png_ptr) -{ - return (png_ptr ? png_ptr->user_height_max : 0); -} - -/* This function was added to libpng 1.4.0 */ -png_uint_32 PNGAPI -png_get_chunk_cache_max (png_const_structrp png_ptr) -{ - return (png_ptr ? png_ptr->user_chunk_cache_max : 0); -} - -/* This function was added to libpng 1.4.1 */ -png_alloc_size_t PNGAPI -png_get_chunk_malloc_max (png_const_structrp png_ptr) -{ - return (png_ptr ? png_ptr->user_chunk_malloc_max : 0); -} -#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */ - -/* These functions were added to libpng 1.4.0 */ -#ifdef PNG_IO_STATE_SUPPORTED -png_uint_32 PNGAPI -png_get_io_state (png_const_structrp png_ptr) -{ - return png_ptr->io_state; -} - -png_uint_32 PNGAPI -png_get_io_chunk_type (png_const_structrp png_ptr) -{ - return png_ptr->chunk_name; -} -#endif /* ?PNG_IO_STATE_SUPPORTED */ - -#ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED -# ifdef PNG_GET_PALETTE_MAX_SUPPORTED -int PNGAPI -png_get_palette_max(png_const_structp png_ptr, png_const_infop info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return png_ptr->num_palette_max; - - return (-1); -} -# endif -#endif - -#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ diff --git a/io2d/src/3rd-party/libpng/pnginfo.h b/io2d/src/3rd-party/libpng/pnginfo.h deleted file mode 100644 index 26bf265..0000000 --- a/io2d/src/3rd-party/libpng/pnginfo.h +++ /dev/null @@ -1,260 +0,0 @@ - -/* pnginfo.h - header file for PNG reference library - * - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * Last changed in libpng 1.6.1 [March 28, 2013] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - - /* png_info is a structure that holds the information in a PNG file so - * that the application can find out the characteristics of the image. - * If you are reading the file, this structure will tell you what is - * in the PNG file. If you are writing the file, fill in the information - * you want to put into the PNG file, using png_set_*() functions, then - * call png_write_info(). - * - * The names chosen should be very close to the PNG specification, so - * consult that document for information about the meaning of each field. - * - * With libpng < 0.95, it was only possible to directly set and read the - * the values in the png_info_struct, which meant that the contents and - * order of the values had to remain fixed. With libpng 0.95 and later, - * however, there are now functions that abstract the contents of - * png_info_struct from the application, so this makes it easier to use - * libpng with dynamic libraries, and even makes it possible to use - * libraries that don't have all of the libpng ancillary chunk-handing - * functionality. In libpng-1.5.0 this was moved into a separate private - * file that is not visible to applications. - * - * The following members may have allocated storage attached that should be - * cleaned up before the structure is discarded: palette, trans, text, - * pcal_purpose, pcal_units, pcal_params, hist, iccp_name, iccp_profile, - * splt_palettes, scal_unit, row_pointers, and unknowns. By default, these - * are automatically freed when the info structure is deallocated, if they were - * allocated internally by libpng. This behavior can be changed by means - * of the png_data_freer() function. - * - * More allocation details: all the chunk-reading functions that - * change these members go through the corresponding png_set_* - * functions. A function to clear these members is available: see - * png_free_data(). The png_set_* functions do not depend on being - * able to point info structure members to any of the storage they are - * passed (they make their own copies), EXCEPT that the png_set_text - * functions use the same storage passed to them in the text_ptr or - * itxt_ptr structure argument, and the png_set_rows and png_set_unknowns - * functions do not make their own copies. - */ -#ifndef PNGINFO_H -#define PNGINFO_H - -struct png_info_def -{ - /* The following are necessary for every PNG file */ - png_uint_32 width; /* width of image in pixels (from IHDR) */ - png_uint_32 height; /* height of image in pixels (from IHDR) */ - png_uint_32 valid; /* valid chunk data (see PNG_INFO_ below) */ - png_size_t rowbytes; /* bytes needed to hold an untransformed row */ - png_colorp palette; /* array of color values (valid & PNG_INFO_PLTE) */ - png_uint_16 num_palette; /* number of color entries in "palette" (PLTE) */ - png_uint_16 num_trans; /* number of transparent palette color (tRNS) */ - png_byte bit_depth; /* 1, 2, 4, 8, or 16 bits/channel (from IHDR) */ - png_byte color_type; /* see PNG_COLOR_TYPE_ below (from IHDR) */ - /* The following three should have been named *_method not *_type */ - png_byte compression_type; /* must be PNG_COMPRESSION_TYPE_BASE (IHDR) */ - png_byte filter_type; /* must be PNG_FILTER_TYPE_BASE (from IHDR) */ - png_byte interlace_type; /* One of PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */ - - /* The following are set by png_set_IHDR, called from the application on - * write, but the are never actually used by the write code. - */ - png_byte channels; /* number of data channels per pixel (1, 2, 3, 4) */ - png_byte pixel_depth; /* number of bits per pixel */ - png_byte spare_byte; /* to align the data, and for future use */ - -#ifdef PNG_READ_SUPPORTED - /* This is never set during write */ - png_byte signature[8]; /* magic bytes read by libpng from start of file */ -#endif - - /* The rest of the data is optional. If you are reading, check the - * valid field to see if the information in these are valid. If you - * are writing, set the valid field to those chunks you want written, - * and initialize the appropriate fields below. - */ - -#if defined(PNG_COLORSPACE_SUPPORTED) || defined(PNG_GAMMA_SUPPORTED) - /* png_colorspace only contains 'flags' if neither GAMMA or COLORSPACE are - * defined. When COLORSPACE is switched on all the colorspace-defining - * chunks should be enabled, when GAMMA is switched on all the gamma-defining - * chunks should be enabled. If this is not done it becomes possible to read - * inconsistent PNG files and assign a probably incorrect interpretation to - * the information. (In other words, by carefully choosing which chunks to - * recognize the system configuration can select an interpretation for PNG - * files containing ambiguous data and this will result in inconsistent - * behavior between different libpng builds!) - */ - png_colorspace colorspace; -#endif - -#ifdef PNG_iCCP_SUPPORTED - /* iCCP chunk data. */ - png_charp iccp_name; /* profile name */ - png_bytep iccp_profile; /* International Color Consortium profile data */ - png_uint_32 iccp_proflen; /* ICC profile data length */ -#endif - -#ifdef PNG_TEXT_SUPPORTED - /* The tEXt, and zTXt chunks contain human-readable textual data in - * uncompressed, compressed, and optionally compressed forms, respectively. - * The data in "text" is an array of pointers to uncompressed, - * null-terminated C strings. Each chunk has a keyword that describes the - * textual data contained in that chunk. Keywords are not required to be - * unique, and the text string may be empty. Any number of text chunks may - * be in an image. - */ - int num_text; /* number of comments read or comments to write */ - int max_text; /* current size of text array */ - png_textp text; /* array of comments read or comments to write */ -#endif /* PNG_TEXT_SUPPORTED */ - -#ifdef PNG_tIME_SUPPORTED - /* The tIME chunk holds the last time the displayed image data was - * modified. See the png_time struct for the contents of this struct. - */ - png_time mod_time; -#endif - -#ifdef PNG_sBIT_SUPPORTED - /* The sBIT chunk specifies the number of significant high-order bits - * in the pixel data. Values are in the range [1, bit_depth], and are - * only specified for the channels in the pixel data. The contents of - * the low-order bits is not specified. Data is valid if - * (valid & PNG_INFO_sBIT) is non-zero. - */ - png_color_8 sig_bit; /* significant bits in color channels */ -#endif - -#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_EXPAND_SUPPORTED) || \ -defined(PNG_READ_BACKGROUND_SUPPORTED) - /* The tRNS chunk supplies transparency data for paletted images and - * other image types that don't need a full alpha channel. There are - * "num_trans" transparency values for a paletted image, stored in the - * same order as the palette colors, starting from index 0. Values - * for the data are in the range [0, 255], ranging from fully transparent - * to fully opaque, respectively. For non-paletted images, there is a - * single color specified that should be treated as fully transparent. - * Data is valid if (valid & PNG_INFO_tRNS) is non-zero. - */ - png_bytep trans_alpha; /* alpha values for paletted image */ - png_color_16 trans_color; /* transparent color for non-palette image */ -#endif - -#if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - /* The bKGD chunk gives the suggested image background color if the - * display program does not have its own background color and the image - * is needs to composited onto a background before display. The colors - * in "background" are normally in the same color space/depth as the - * pixel data. Data is valid if (valid & PNG_INFO_bKGD) is non-zero. - */ - png_color_16 background; -#endif - -#ifdef PNG_oFFs_SUPPORTED - /* The oFFs chunk gives the offset in "offset_unit_type" units rightwards - * and downwards from the top-left corner of the display, page, or other - * application-specific co-ordinate space. See the PNG_OFFSET_ defines - * below for the unit types. Valid if (valid & PNG_INFO_oFFs) non-zero. - */ - png_int_32 x_offset; /* x offset on page */ - png_int_32 y_offset; /* y offset on page */ - png_byte offset_unit_type; /* offset units type */ -#endif - -#ifdef PNG_pHYs_SUPPORTED - /* The pHYs chunk gives the physical pixel density of the image for - * display or printing in "phys_unit_type" units (see PNG_RESOLUTION_ - * defines below). Data is valid if (valid & PNG_INFO_pHYs) is non-zero. - */ - png_uint_32 x_pixels_per_unit; /* horizontal pixel density */ - png_uint_32 y_pixels_per_unit; /* vertical pixel density */ - png_byte phys_unit_type; /* resolution type (see PNG_RESOLUTION_ below) */ -#endif - -#ifdef PNG_hIST_SUPPORTED - /* The hIST chunk contains the relative frequency or importance of the - * various palette entries, so that a viewer can intelligently select a - * reduced-color palette, if required. Data is an array of "num_palette" - * values in the range [0,65535]. Data valid if (valid & PNG_INFO_hIST) - * is non-zero. - */ - png_uint_16p hist; -#endif - -#ifdef PNG_pCAL_SUPPORTED - /* The pCAL chunk describes a transformation between the stored pixel - * values and original physical data values used to create the image. - * The integer range [0, 2^bit_depth - 1] maps to the floating-point - * range given by [pcal_X0, pcal_X1], and are further transformed by a - * (possibly non-linear) transformation function given by "pcal_type" - * and "pcal_params" into "pcal_units". Please see the PNG_EQUATION_ - * defines below, and the PNG-Group's PNG extensions document for a - * complete description of the transformations and how they should be - * implemented, and for a description of the ASCII parameter strings. - * Data values are valid if (valid & PNG_INFO_pCAL) non-zero. - */ - png_charp pcal_purpose; /* pCAL chunk description string */ - png_int_32 pcal_X0; /* minimum value */ - png_int_32 pcal_X1; /* maximum value */ - png_charp pcal_units; /* Latin-1 string giving physical units */ - png_charpp pcal_params; /* ASCII strings containing parameter values */ - png_byte pcal_type; /* equation type (see PNG_EQUATION_ below) */ - png_byte pcal_nparams; /* number of parameters given in pcal_params */ -#endif - -/* New members added in libpng-1.0.6 */ - png_uint_32 free_me; /* flags items libpng is responsible for freeing */ - -#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED - /* Storage for unknown chunks that the library doesn't recognize. */ - png_unknown_chunkp unknown_chunks; - - /* The type of this field is limited by the type of - * png_struct::user_chunk_cache_max, else overflow can occur. - */ - int unknown_chunks_num; -#endif - -#ifdef PNG_sPLT_SUPPORTED - /* Data on sPLT chunks (there may be more than one). */ - png_sPLT_tp splt_palettes; - int splt_palettes_num; /* Match type returned by png_get API */ -#endif - -#ifdef PNG_sCAL_SUPPORTED - /* The sCAL chunk describes the actual physical dimensions of the - * subject matter of the graphic. The chunk contains a unit specification - * a byte value, and two ASCII strings representing floating-point - * values. The values are width and height corresponsing to one pixel - * in the image. Data values are valid if (valid & PNG_INFO_sCAL) is - * non-zero. - */ - png_byte scal_unit; /* unit of physical scale */ - png_charp scal_s_width; /* string containing height */ - png_charp scal_s_height; /* string containing width */ -#endif - -#ifdef PNG_INFO_IMAGE_SUPPORTED - /* Memory has been allocated if (valid & PNG_ALLOCATED_INFO_ROWS) - non-zero */ - /* Data valid if (valid & PNG_INFO_IDAT) non-zero */ - png_bytepp row_pointers; /* the image bits */ -#endif - -}; -#endif /* PNGINFO_H */ diff --git a/io2d/src/3rd-party/libpng/pnglibconf.h b/io2d/src/3rd-party/libpng/pnglibconf.h deleted file mode 100644 index 3d74e4f..0000000 --- a/io2d/src/3rd-party/libpng/pnglibconf.h +++ /dev/null @@ -1,211 +0,0 @@ -/* libpng 1.6.8beta03 STANDARD API DEFINITION */ - -/* pnglibconf.h - library build configuration */ - -/* Libpng version 1.6.8beta03 - November 30, 2013 */ - -/* Copyright (c) 1998-2013 Glenn Randers-Pehrson */ - -/* This code is released under the libpng license. */ -/* For conditions of distribution and use, see the disclaimer */ -/* and license in png.h */ - -/* pnglibconf.h */ -/* Machine generated file: DO NOT EDIT */ -/* Derived from: scripts/pnglibconf.dfa */ -#ifndef PNGLCONF_H -#define PNGLCONF_H -/* options */ -#define PNG_16BIT_SUPPORTED -#define PNG_ALIGNED_MEMORY_SUPPORTED -/*#undef PNG_ARM_NEON_API_SUPPORTED*/ -/*#undef PNG_ARM_NEON_CHECK_SUPPORTED*/ -#define PNG_BENIGN_ERRORS_SUPPORTED -#define PNG_BENIGN_READ_ERRORS_SUPPORTED -/*#undef PNG_BENIGN_WRITE_ERRORS_SUPPORTED*/ -#define PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED -#define PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED -#define PNG_COLORSPACE_SUPPORTED -#define PNG_CONSOLE_IO_SUPPORTED -#define PNG_CONVERT_tIME_SUPPORTED -#define PNG_EASY_ACCESS_SUPPORTED -/*#undef PNG_ERROR_NUMBERS_SUPPORTED*/ -#define PNG_ERROR_TEXT_SUPPORTED -#define PNG_FIXED_POINT_SUPPORTED -#define PNG_FLOATING_ARITHMETIC_SUPPORTED -#define PNG_FLOATING_POINT_SUPPORTED -#define PNG_FORMAT_AFIRST_SUPPORTED -#define PNG_FORMAT_BGR_SUPPORTED -#define PNG_GAMMA_SUPPORTED -#define PNG_GET_PALETTE_MAX_SUPPORTED -#define PNG_HANDLE_AS_UNKNOWN_SUPPORTED -#define PNG_INCH_CONVERSIONS_SUPPORTED -#define PNG_INFO_IMAGE_SUPPORTED -#define PNG_IO_STATE_SUPPORTED -#define PNG_MNG_FEATURES_SUPPORTED -#define PNG_POINTER_INDEXING_SUPPORTED -#define PNG_PROGRESSIVE_READ_SUPPORTED -#define PNG_READ_16BIT_SUPPORTED -#define PNG_READ_ALPHA_MODE_SUPPORTED -#define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED -#define PNG_READ_BACKGROUND_SUPPORTED -#define PNG_READ_BGR_SUPPORTED -#define PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED -#define PNG_READ_COMPOSITE_NODIV_SUPPORTED -#define PNG_READ_COMPRESSED_TEXT_SUPPORTED -#define PNG_READ_EXPAND_16_SUPPORTED -#define PNG_READ_EXPAND_SUPPORTED -#define PNG_READ_FILLER_SUPPORTED -#define PNG_READ_GAMMA_SUPPORTED -#define PNG_READ_GET_PALETTE_MAX_SUPPORTED -#define PNG_READ_GRAY_TO_RGB_SUPPORTED -#define PNG_READ_INTERLACING_SUPPORTED -#define PNG_READ_INT_FUNCTIONS_SUPPORTED -#define PNG_READ_INVERT_ALPHA_SUPPORTED -#define PNG_READ_INVERT_SUPPORTED -#define PNG_READ_OPT_PLTE_SUPPORTED -#define PNG_READ_PACKSWAP_SUPPORTED -#define PNG_READ_PACK_SUPPORTED -#define PNG_READ_QUANTIZE_SUPPORTED -#define PNG_READ_RGB_TO_GRAY_SUPPORTED -#define PNG_READ_SCALE_16_TO_8_SUPPORTED -#define PNG_READ_SHIFT_SUPPORTED -#define PNG_READ_STRIP_16_TO_8_SUPPORTED -#define PNG_READ_STRIP_ALPHA_SUPPORTED -#define PNG_READ_SUPPORTED -#define PNG_READ_SWAP_ALPHA_SUPPORTED -#define PNG_READ_SWAP_SUPPORTED -#define PNG_READ_TEXT_SUPPORTED -#define PNG_READ_TRANSFORMS_SUPPORTED -#define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_READ_USER_CHUNKS_SUPPORTED -#define PNG_READ_USER_TRANSFORM_SUPPORTED -#define PNG_READ_bKGD_SUPPORTED -#define PNG_READ_cHRM_SUPPORTED -#define PNG_READ_gAMA_SUPPORTED -#define PNG_READ_hIST_SUPPORTED -#define PNG_READ_iCCP_SUPPORTED -#define PNG_READ_iTXt_SUPPORTED -#define PNG_READ_oFFs_SUPPORTED -#define PNG_READ_pCAL_SUPPORTED -#define PNG_READ_pHYs_SUPPORTED -#define PNG_READ_sBIT_SUPPORTED -#define PNG_READ_sCAL_SUPPORTED -#define PNG_READ_sPLT_SUPPORTED -#define PNG_READ_sRGB_SUPPORTED -#define PNG_READ_tEXt_SUPPORTED -#define PNG_READ_tIME_SUPPORTED -#define PNG_READ_tRNS_SUPPORTED -#define PNG_READ_zTXt_SUPPORTED -/*#undef PNG_SAFE_LIMITS_SUPPORTED*/ -#define PNG_SAVE_INT_32_SUPPORTED -#define PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_SEQUENTIAL_READ_SUPPORTED -#define PNG_SETJMP_SUPPORTED -#define PNG_SET_CHUNK_CACHE_LIMIT_SUPPORTED -#define PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED -#define PNG_SET_OPTION_SUPPORTED -#define PNG_SET_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_SET_USER_LIMITS_SUPPORTED -#define PNG_SIMPLIFIED_READ_AFIRST_SUPPORTED -#define PNG_SIMPLIFIED_READ_BGR_SUPPORTED -#define PNG_SIMPLIFIED_READ_SUPPORTED -#define PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED -#define PNG_SIMPLIFIED_WRITE_BGR_SUPPORTED -#define PNG_SIMPLIFIED_WRITE_SUPPORTED -#define PNG_STDIO_SUPPORTED -#define PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_TEXT_SUPPORTED -#define PNG_TIME_RFC1123_SUPPORTED -#define PNG_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_USER_CHUNKS_SUPPORTED -#define PNG_USER_LIMITS_SUPPORTED -#define PNG_USER_MEM_SUPPORTED -#define PNG_USER_TRANSFORM_INFO_SUPPORTED -#define PNG_USER_TRANSFORM_PTR_SUPPORTED -#define PNG_WARNINGS_SUPPORTED -#define PNG_WRITE_16BIT_SUPPORTED -#define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED -#define PNG_WRITE_BGR_SUPPORTED -#define PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED -#define PNG_WRITE_COMPRESSED_TEXT_SUPPORTED -#define PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED -#define PNG_WRITE_FILLER_SUPPORTED -#define PNG_WRITE_FILTER_SUPPORTED -#define PNG_WRITE_FLUSH_SUPPORTED -#define PNG_WRITE_GET_PALETTE_MAX_SUPPORTED -#define PNG_WRITE_INTERLACING_SUPPORTED -#define PNG_WRITE_INT_FUNCTIONS_SUPPORTED -#define PNG_WRITE_INVERT_ALPHA_SUPPORTED -#define PNG_WRITE_INVERT_SUPPORTED -#define PNG_WRITE_OPTIMIZE_CMF_SUPPORTED -#define PNG_WRITE_PACKSWAP_SUPPORTED -#define PNG_WRITE_PACK_SUPPORTED -#define PNG_WRITE_SHIFT_SUPPORTED -#define PNG_WRITE_SUPPORTED -#define PNG_WRITE_SWAP_ALPHA_SUPPORTED -#define PNG_WRITE_SWAP_SUPPORTED -#define PNG_WRITE_TEXT_SUPPORTED -#define PNG_WRITE_TRANSFORMS_SUPPORTED -#define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED -#define PNG_WRITE_USER_TRANSFORM_SUPPORTED -#define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED -#define PNG_WRITE_bKGD_SUPPORTED -#define PNG_WRITE_cHRM_SUPPORTED -#define PNG_WRITE_gAMA_SUPPORTED -#define PNG_WRITE_hIST_SUPPORTED -#define PNG_WRITE_iCCP_SUPPORTED -#define PNG_WRITE_iTXt_SUPPORTED -#define PNG_WRITE_oFFs_SUPPORTED -#define PNG_WRITE_pCAL_SUPPORTED -#define PNG_WRITE_pHYs_SUPPORTED -#define PNG_WRITE_sBIT_SUPPORTED -#define PNG_WRITE_sCAL_SUPPORTED -#define PNG_WRITE_sPLT_SUPPORTED -#define PNG_WRITE_sRGB_SUPPORTED -#define PNG_WRITE_tEXt_SUPPORTED -#define PNG_WRITE_tIME_SUPPORTED -#define PNG_WRITE_tRNS_SUPPORTED -#define PNG_WRITE_zTXt_SUPPORTED -#define PNG_bKGD_SUPPORTED -#define PNG_cHRM_SUPPORTED -#define PNG_gAMA_SUPPORTED -#define PNG_hIST_SUPPORTED -#define PNG_iCCP_SUPPORTED -#define PNG_iTXt_SUPPORTED -#define PNG_oFFs_SUPPORTED -#define PNG_pCAL_SUPPORTED -#define PNG_pHYs_SUPPORTED -#define PNG_sBIT_SUPPORTED -#define PNG_sCAL_SUPPORTED -#define PNG_sPLT_SUPPORTED -#define PNG_sRGB_SUPPORTED -#define PNG_tEXt_SUPPORTED -#define PNG_tIME_SUPPORTED -#define PNG_tRNS_SUPPORTED -#define PNG_zTXt_SUPPORTED -/* end of options */ -/* settings */ -#define PNG_API_RULE 0 -#define PNG_CALLOC_SUPPORTED -#define PNG_COST_SHIFT 3 -#define PNG_DEFAULT_READ_MACROS 1 -#define PNG_GAMMA_THRESHOLD_FIXED 5000 -#define PNG_IDAT_READ_SIZE PNG_ZBUF_SIZE -#define PNG_INFLATE_BUF_SIZE 1024 -#define PNG_MAX_GAMMA_8 11 -#define PNG_QUANTIZE_BLUE_BITS 5 -#define PNG_QUANTIZE_GREEN_BITS 5 -#define PNG_QUANTIZE_RED_BITS 5 -#define PNG_TEXT_Z_DEFAULT_COMPRESSION (-1) -#define PNG_TEXT_Z_DEFAULT_STRATEGY 0 -#define PNG_WEIGHT_SHIFT 8 -#define PNG_ZBUF_SIZE 8192 -#define PNG_ZLIB_VERNUM 0 /* unknown */ -#define PNG_Z_DEFAULT_COMPRESSION (-1) -#define PNG_Z_DEFAULT_NOFILTER_STRATEGY 0 -#define PNG_Z_DEFAULT_STRATEGY 1 -#define PNG_sCAL_PRECISION 5 -#define PNG_sRGB_PROFILE_CHECKS 2 -/* end of settings */ -#endif /* PNGLCONF_H */ diff --git a/io2d/src/3rd-party/libpng/pngmem.c b/io2d/src/3rd-party/libpng/pngmem.c deleted file mode 100644 index 2bb0f1c..0000000 --- a/io2d/src/3rd-party/libpng/pngmem.c +++ /dev/null @@ -1,281 +0,0 @@ - -/* pngmem.c - stub functions for memory allocation - * - * Last changed in libpng 1.6.8 [(PENDING RELEASE)] - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * This file provides a location for all memory allocation. Users who - * need special memory handling are expected to supply replacement - * functions for png_malloc() and png_free(), and to use - * png_create_read_struct_2() and png_create_write_struct_2() to - * identify the replacement functions. - */ - -#include "pngpriv.h" - -#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) -/* Free a png_struct */ -void /* PRIVATE */ -png_destroy_png_struct(png_structrp png_ptr) -{ - if (png_ptr != NULL) - { - /* png_free might call png_error and may certainly call - * png_get_mem_ptr, so fake a temporary png_struct to support this. - */ - png_struct dummy_struct = *png_ptr; - memset(png_ptr, 0, (sizeof *png_ptr)); - png_free(&dummy_struct, png_ptr); - -# ifdef PNG_SETJMP_SUPPORTED - /* We may have a jmp_buf left to deallocate. */ - png_free_jmpbuf(&dummy_struct); -# endif - } -} - -/* Allocate memory. For reasonable files, size should never exceed - * 64K. However, zlib may allocate more then 64K if you don't tell - * it not to. See zconf.h and png.h for more information. zlib does - * need to allocate exactly 64K, so whatever you call here must - * have the ability to do that. - */ -PNG_FUNCTION(png_voidp,PNGAPI -png_calloc,(png_const_structrp png_ptr, png_alloc_size_t size),PNG_ALLOCATED) -{ - png_voidp ret; - - ret = png_malloc(png_ptr, size); - - if (ret != NULL) - memset(ret, 0, size); - - return ret; -} - -/* png_malloc_base, an internal function added at libpng 1.6.0, does the work of - * allocating memory, taking into account limits and PNG_USER_MEM_SUPPORTED. - * Checking and error handling must happen outside this routine; it returns NULL - * if the allocation cannot be done (for any reason.) - */ -PNG_FUNCTION(png_voidp /* PRIVATE */, -png_malloc_base,(png_const_structrp png_ptr, png_alloc_size_t size), - PNG_ALLOCATED) -{ - /* Moved to png_malloc_base from png_malloc_default in 1.6.0; the DOS - * allocators have also been removed in 1.6.0, so any 16-bit system now has - * to implement a user memory handler. This checks to be sure it isn't - * called with big numbers. - */ -#ifndef PNG_USER_MEM_SUPPORTED - PNG_UNUSED(png_ptr) -#endif - - if (size > 0 && size <= PNG_SIZE_MAX -# ifdef PNG_MAX_MALLOC_64K - && size <= 65536U -# endif - ) - { -#ifdef PNG_USER_MEM_SUPPORTED - if (png_ptr != NULL && png_ptr->malloc_fn != NULL) - return png_ptr->malloc_fn(png_constcast(png_structrp,png_ptr), size); - - else -#endif - return malloc((size_t)size); /* checked for truncation above */ - } - - else - return NULL; -} - -#if defined(PNG_TEXT_SUPPORTED) || defined(PNG_sPLT_SUPPORTED) ||\ - defined(PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED) -/* This is really here only to work round a spurious warning in GCC 4.6 and 4.7 - * that arises because of the checks in png_realloc_array that are repeated in - * png_malloc_array. - */ -static png_voidp -png_malloc_array_checked(png_const_structrp png_ptr, int nelements, - size_t element_size) -{ - png_alloc_size_t req = nelements; /* known to be > 0 */ - - if (req <= PNG_SIZE_MAX/element_size) - return png_malloc_base(png_ptr, req * element_size); - - /* The failure case when the request is too large */ - return NULL; -} - -PNG_FUNCTION(png_voidp /* PRIVATE */, -png_malloc_array,(png_const_structrp png_ptr, int nelements, - size_t element_size),PNG_ALLOCATED) -{ - if (nelements <= 0 || element_size == 0) - png_error(png_ptr, "internal error: array alloc"); - - return png_malloc_array_checked(png_ptr, nelements, element_size); -} - -PNG_FUNCTION(png_voidp /* PRIVATE */, -png_realloc_array,(png_const_structrp png_ptr, png_const_voidp old_array, - int old_elements, int add_elements, size_t element_size),PNG_ALLOCATED) -{ - /* These are internal errors: */ - if (add_elements <= 0 || element_size == 0 || old_elements < 0 || - (old_array == NULL && old_elements > 0)) - png_error(png_ptr, "internal error: array realloc"); - - /* Check for overflow on the elements count (so the caller does not have to - * check.) - */ - if (add_elements <= INT_MAX - old_elements) - { - png_voidp new_array = png_malloc_array_checked(png_ptr, - old_elements+add_elements, element_size); - - if (new_array != NULL) - { - /* Because png_malloc_array worked the size calculations below cannot - * overflow. - */ - if (old_elements > 0) - memcpy(new_array, old_array, element_size*(unsigned)old_elements); - - memset((char*)new_array + element_size*(unsigned)old_elements, 0, - element_size*(unsigned)add_elements); - - return new_array; - } - } - - return NULL; /* error */ -} -#endif /* TEXT || sPLT || STORE_UNKNOWN_CHUNKS */ - -/* Various functions that have different error handling are derived from this. - * png_malloc always exists, but if PNG_USER_MEM_SUPPORTED is defined a separate - * function png_malloc_default is also provided. - */ -PNG_FUNCTION(png_voidp,PNGAPI -png_malloc,(png_const_structrp png_ptr, png_alloc_size_t size),PNG_ALLOCATED) -{ - png_voidp ret; - - if (png_ptr == NULL) - return NULL; - - ret = png_malloc_base(png_ptr, size); - - if (ret == NULL) - png_error(png_ptr, "Out of memory"); /* 'm' means png_malloc */ - - return ret; -} - -#ifdef PNG_USER_MEM_SUPPORTED -PNG_FUNCTION(png_voidp,PNGAPI -png_malloc_default,(png_const_structrp png_ptr, png_alloc_size_t size), - PNG_ALLOCATED PNG_DEPRECATED) -{ - png_voidp ret; - - if (png_ptr == NULL) - return NULL; - - /* Passing 'NULL' here bypasses the application provided memory handler. */ - ret = png_malloc_base(NULL/*use malloc*/, size); - - if (ret == NULL) - png_error(png_ptr, "Out of Memory"); /* 'M' means png_malloc_default */ - - return ret; -} -#endif /* PNG_USER_MEM_SUPPORTED */ - -/* This function was added at libpng version 1.2.3. The png_malloc_warn() - * function will issue a png_warning and return NULL instead of issuing a - * png_error, if it fails to allocate the requested memory. - */ -PNG_FUNCTION(png_voidp,PNGAPI -png_malloc_warn,(png_const_structrp png_ptr, png_alloc_size_t size), - PNG_ALLOCATED) -{ - if (png_ptr != NULL) - { - png_voidp ret = png_malloc_base(png_ptr, size); - - if (ret != NULL) - return ret; - - png_warning(png_ptr, "Out of memory"); - } - - return NULL; -} - -/* Free a pointer allocated by png_malloc(). If ptr is NULL, return - * without taking any action. - */ -void PNGAPI -png_free(png_const_structrp png_ptr, png_voidp ptr) -{ - if (png_ptr == NULL || ptr == NULL) - return; - -#ifdef PNG_USER_MEM_SUPPORTED - if (png_ptr->free_fn != NULL) - png_ptr->free_fn(png_constcast(png_structrp,png_ptr), ptr); - - else - png_free_default(png_ptr, ptr); -} - -PNG_FUNCTION(void,PNGAPI -png_free_default,(png_const_structrp png_ptr, png_voidp ptr),PNG_DEPRECATED) -{ - if (png_ptr == NULL || ptr == NULL) - return; -#endif /* PNG_USER_MEM_SUPPORTED */ - - free(ptr); -} - -#ifdef PNG_USER_MEM_SUPPORTED -/* This function is called when the application wants to use another method - * of allocating and freeing memory. - */ -void PNGAPI -png_set_mem_fn(png_structrp png_ptr, png_voidp mem_ptr, png_malloc_ptr - malloc_fn, png_free_ptr free_fn) -{ - if (png_ptr != NULL) - { - png_ptr->mem_ptr = mem_ptr; - png_ptr->malloc_fn = malloc_fn; - png_ptr->free_fn = free_fn; - } -} - -/* This function returns a pointer to the mem_ptr associated with the user - * functions. The application should free any memory associated with this - * pointer before png_write_destroy and png_read_destroy are called. - */ -png_voidp PNGAPI -png_get_mem_ptr(png_const_structrp png_ptr) -{ - if (png_ptr == NULL) - return NULL; - - return png_ptr->mem_ptr; -} -#endif /* PNG_USER_MEM_SUPPORTED */ -#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ diff --git a/io2d/src/3rd-party/libpng/pngnow.png b/io2d/src/3rd-party/libpng/pngnow.png deleted file mode 100644 index 82793ebddb7863266a66ffc6ab2c01ca32100808..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2069 zcmWkudpuN&7T#yD z0ALXk%;6bOV2GtAMuxod+KXid08{XL`q<{m10|OLLYbYp~ zqD01zCx~Qa;aTH3$83tYNL5@^&dW%qu3E?~lv;*N57-E2|bs(K#(iIEOmeFx% zkcfvMOG`)&LHQ673#pIPl0s5bu0h@0>CO<}7a`Ws2_Xc#K~M$^F+q|Eqco5dLWna2 z#X^t(LKqoD8nRJmzN=KPsmsFupvRG!&XgFV8A;Y6t95Zm1LFa^q z^92erLk2B|aULIYLrE_dC!DV+A~6Qa3B~AUAmL0W(=n6@Y2+%tkPyj9RsagyA*csN zrps7?xTc~3G=mlSYRm(ZDb=D31>#001TxH*!;$k@LY&S-QNy%At*T6qc|mvuj(MT{ zShXyF6!Ad#Eru11piDK&6sbyVIXSpO33CD}%6q-XYOk*K|bUdDgx`AW{hwjYa zM<-xjEZA^`|H~$2a>8bLQKZ} zLB^Jd#VHvwfGx?~A>ERiCUg3J?OJcAAZbdf6Hk&Nk_fY$mS?2o%GPH}1d{E{WQll1 z=-8g42GdW4aQykf``V&Q6W}O#EGzZC`E*NWZcMk35*qfRc}Z6Nnc{k=W$S9olPI;+ z@nk_TpA-koOx36tuc^5+8y2dJKCX$4z2CENV(>!in*_$fq1N2jW1W6k7j=WW!K2we zQx6hfTZ3TdyW^y&(Mek}jvhFo%!~{*FP%!sE17a%?j{}9boS=;RS0g0Vl+OX*4!KG zS9cV3_T@Rcztag#Ba8Akz?VEN{KY|&-cj^8X4hI9rOS7jb^I*rs9{W6y2#E2G^qzi zdmWmqMl3bFs8=?8X$*f<{;;}lLq--wF|=g=DWXjt<5enf565lt)AmHV zIxOb73llA}$8Ct~8-~_=j#_ZB`OnsJr4>ai);+T_!|ZPhrkXB?{B)};+#9l2+7C4G z(7Hc=^#UXHmZ|>h%+um(yvmbWw|yz{+FO@id!cP~py}<7RoWpJ*Fa-`$lS+tJjBR& z6tlD4Ti8JxCZ9NMtT44qLLkP~+BFVn!|dbm^=AtK$C64)M~7nwq6^V!syIo2Oxw z>Q`G3RCIQRk}|{IuYEXq#p2PEEha{j+{?DX0X|%93;f$J-{g|;y0D)gO{G>+cUcD` z4y@ax<21CZK45QAznB)#Ufr}OXGc|jX9Ltdv+b8XbyW6-6`@zUuVY!hSGtpO`!`Qz z&NQEk%buN|_~W2YVMOhus;$a%yh2m*KG^m|>9yn4nuBHYyEpCJ)0$=kK9Wtr0td+%|?D^-C{{MH<3%xF3Nr{}sKhiFd5L0;yj%{mN`D2E@j zb9elGv{mRmpa=e4(SIT%(x!E1a$=RXWcVrny?jLXA=RCjub+PYvh*imzV73lzO2;z z^IhX}vi&XOSKIaiO6bz9{*4VIPX4pcSiyJsOr)&7MIV0tt;fiC&DW%|Q{u`km5!dp z!Uvmke~-D&46c>G#Z1ofQ!2y69!2#V?{T-pgjb1Z<)$Z0{jJ!Cd*WSVOiYG2O~X$e zkOZV!x9`)jqV>P+UU{SXLBcfJe~UZ${fApm5?rT^HZwk-)*@r4(symdMMs05ch4L& zKD%kQ5%->$aqgk4nHpEI84+blJ(2ds3O8Z;4>JTe4@PSyKg=thMLwxcsc|nVEJ)aH z*B04qWpUia=q@`HDRXoAnzt<~x%EzDW7^4`nuh7CO5MicxId`hJsvyinB5bmk2>6A rInt*5>ynshr7qiTo&3Aj@9hWbNS~fK{3iQ`;bQ_J+;C1~K%(-0k;znQ diff --git a/io2d/src/3rd-party/libpng/pngpread.c b/io2d/src/3rd-party/libpng/pngpread.c deleted file mode 100644 index 147de69..0000000 --- a/io2d/src/3rd-party/libpng/pngpread.c +++ /dev/null @@ -1,1291 +0,0 @@ - -/* pngpread.c - read a png file in push mode - * - * Last changed in libpng 1.6.8 [(PENDING RELEASE)] - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#include "pngpriv.h" - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED - -/* Push model modes */ -#define PNG_READ_SIG_MODE 0 -#define PNG_READ_CHUNK_MODE 1 -#define PNG_READ_IDAT_MODE 2 -#define PNG_SKIP_MODE 3 -#define PNG_READ_tEXt_MODE 4 -#define PNG_READ_zTXt_MODE 5 -#define PNG_READ_DONE_MODE 6 -#define PNG_READ_iTXt_MODE 7 -#define PNG_ERROR_MODE 8 - -void PNGAPI -png_process_data(png_structrp png_ptr, png_inforp info_ptr, - png_bytep buffer, png_size_t buffer_size) -{ - if (png_ptr == NULL || info_ptr == NULL) - return; - - png_push_restore_buffer(png_ptr, buffer, buffer_size); - - while (png_ptr->buffer_size) - { - png_process_some_data(png_ptr, info_ptr); - } -} - -png_size_t PNGAPI -png_process_data_pause(png_structrp png_ptr, int save) -{ - if (png_ptr != NULL) - { - /* It's easiest for the caller if we do the save, then the caller doesn't - * have to supply the same data again: - */ - if (save) - png_push_save_buffer(png_ptr); - else - { - /* This includes any pending saved bytes: */ - png_size_t remaining = png_ptr->buffer_size; - png_ptr->buffer_size = 0; - - /* So subtract the saved buffer size, unless all the data - * is actually 'saved', in which case we just return 0 - */ - if (png_ptr->save_buffer_size < remaining) - return remaining - png_ptr->save_buffer_size; - } - } - - return 0; -} - -png_uint_32 PNGAPI -png_process_data_skip(png_structrp png_ptr) -{ - png_uint_32 remaining = 0; - - if (png_ptr != NULL && png_ptr->process_mode == PNG_SKIP_MODE && - png_ptr->skip_length > 0) - { - /* At the end of png_process_data the buffer size must be 0 (see the loop - * above) so we can detect a broken call here: - */ - if (png_ptr->buffer_size != 0) - png_error(png_ptr, - "png_process_data_skip called inside png_process_data"); - - /* If is impossible for there to be a saved buffer at this point - - * otherwise we could not be in SKIP mode. This will also happen if - * png_process_skip is called inside png_process_data (but only very - * rarely.) - */ - if (png_ptr->save_buffer_size != 0) - png_error(png_ptr, "png_process_data_skip called with saved data"); - - remaining = png_ptr->skip_length; - png_ptr->skip_length = 0; - png_ptr->process_mode = PNG_READ_CHUNK_MODE; - } - - return remaining; -} - -/* What we do with the incoming data depends on what we were previously - * doing before we ran out of data... - */ -void /* PRIVATE */ -png_process_some_data(png_structrp png_ptr, png_inforp info_ptr) -{ - if (png_ptr == NULL) - return; - - switch (png_ptr->process_mode) - { - case PNG_READ_SIG_MODE: - { - png_push_read_sig(png_ptr, info_ptr); - break; - } - - case PNG_READ_CHUNK_MODE: - { - png_push_read_chunk(png_ptr, info_ptr); - break; - } - - case PNG_READ_IDAT_MODE: - { - png_push_read_IDAT(png_ptr); - break; - } - - case PNG_SKIP_MODE: - { - png_push_crc_finish(png_ptr); - break; - } - - default: - { - png_ptr->buffer_size = 0; - break; - } - } -} - -/* Read any remaining signature bytes from the stream and compare them with - * the correct PNG signature. It is possible that this routine is called - * with bytes already read from the signature, either because they have been - * checked by the calling application, or because of multiple calls to this - * routine. - */ -void /* PRIVATE */ -png_push_read_sig(png_structrp png_ptr, png_inforp info_ptr) -{ - png_size_t num_checked = png_ptr->sig_bytes, /* SAFE, does not exceed 8 */ - num_to_check = 8 - num_checked; - - if (png_ptr->buffer_size < num_to_check) - { - num_to_check = png_ptr->buffer_size; - } - - png_push_fill_buffer(png_ptr, &(info_ptr->signature[num_checked]), - num_to_check); - png_ptr->sig_bytes = (png_byte)(png_ptr->sig_bytes + num_to_check); - - if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check)) - { - if (num_checked < 4 && - png_sig_cmp(info_ptr->signature, num_checked, num_to_check - 4)) - png_error(png_ptr, "Not a PNG file"); - - else - png_error(png_ptr, "PNG file corrupted by ASCII conversion"); - } - else - { - if (png_ptr->sig_bytes >= 8) - { - png_ptr->process_mode = PNG_READ_CHUNK_MODE; - } - } -} - -void /* PRIVATE */ -png_push_read_chunk(png_structrp png_ptr, png_inforp info_ptr) -{ - png_uint_32 chunk_name; -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - int keep; /* unknown handling method */ -#endif - - /* First we make sure we have enough data for the 4 byte chunk name - * and the 4 byte chunk length before proceeding with decoding the - * chunk data. To fully decode each of these chunks, we also make - * sure we have enough data in the buffer for the 4 byte CRC at the - * end of every chunk (except IDAT, which is handled separately). - */ - if (!(png_ptr->mode & PNG_HAVE_CHUNK_HEADER)) - { - png_byte chunk_length[4]; - png_byte chunk_tag[4]; - - if (png_ptr->buffer_size < 8) - { - png_push_save_buffer(png_ptr); - return; - } - - png_push_fill_buffer(png_ptr, chunk_length, 4); - png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length); - png_reset_crc(png_ptr); - png_crc_read(png_ptr, chunk_tag, 4); - png_ptr->chunk_name = PNG_CHUNK_FROM_STRING(chunk_tag); - png_check_chunk_name(png_ptr, png_ptr->chunk_name); - png_ptr->mode |= PNG_HAVE_CHUNK_HEADER; - } - - chunk_name = png_ptr->chunk_name; - - if (chunk_name == png_IDAT) - { - if (png_ptr->mode & PNG_AFTER_IDAT) - png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT; - - /* If we reach an IDAT chunk, this means we have read all of the - * header chunks, and we can start reading the image (or if this - * is called after the image has been read - we have an error). - */ - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_error(png_ptr, "Missing IHDR before IDAT"); - - else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && - !(png_ptr->mode & PNG_HAVE_PLTE)) - png_error(png_ptr, "Missing PLTE before IDAT"); - - png_ptr->mode |= PNG_HAVE_IDAT; - - if (!(png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT)) - if (png_ptr->push_length == 0) - return; - - if (png_ptr->mode & PNG_AFTER_IDAT) - png_benign_error(png_ptr, "Too many IDATs found"); - } - - if (chunk_name == png_IHDR) - { - if (png_ptr->push_length != 13) - png_error(png_ptr, "Invalid IHDR length"); - - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_IHDR(png_ptr, info_ptr, png_ptr->push_length); - } - - else if (chunk_name == png_IEND) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_IEND(png_ptr, info_ptr, png_ptr->push_length); - - png_ptr->process_mode = PNG_READ_DONE_MODE; - png_push_have_end(png_ptr, info_ptr); - } - -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - else if ((keep = png_chunk_unknown_handling(png_ptr, chunk_name)) != 0) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_unknown(png_ptr, info_ptr, png_ptr->push_length, keep); - - if (chunk_name == png_PLTE) - png_ptr->mode |= PNG_HAVE_PLTE; - } -#endif - - else if (chunk_name == png_PLTE) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - png_handle_PLTE(png_ptr, info_ptr, png_ptr->push_length); - } - - else if (chunk_name == png_IDAT) - { - png_ptr->idat_size = png_ptr->push_length; - png_ptr->process_mode = PNG_READ_IDAT_MODE; - png_push_have_info(png_ptr, info_ptr); - png_ptr->zstream.avail_out = - (uInt) PNG_ROWBYTES(png_ptr->pixel_depth, - png_ptr->iwidth) + 1; - png_ptr->zstream.next_out = png_ptr->row_buf; - return; - } - -#ifdef PNG_READ_gAMA_SUPPORTED - else if (png_ptr->chunk_name == png_gAMA) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_gAMA(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_sBIT_SUPPORTED - else if (png_ptr->chunk_name == png_sBIT) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_sBIT(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_cHRM_SUPPORTED - else if (png_ptr->chunk_name == png_cHRM) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_cHRM(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_sRGB_SUPPORTED - else if (chunk_name == png_sRGB) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_sRGB(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_iCCP_SUPPORTED - else if (png_ptr->chunk_name == png_iCCP) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_iCCP(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_sPLT_SUPPORTED - else if (chunk_name == png_sPLT) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_sPLT(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_tRNS_SUPPORTED - else if (chunk_name == png_tRNS) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_tRNS(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_bKGD_SUPPORTED - else if (chunk_name == png_bKGD) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_bKGD(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_hIST_SUPPORTED - else if (chunk_name == png_hIST) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_hIST(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_pHYs_SUPPORTED - else if (chunk_name == png_pHYs) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_pHYs(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_oFFs_SUPPORTED - else if (chunk_name == png_oFFs) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_oFFs(png_ptr, info_ptr, png_ptr->push_length); - } -#endif - -#ifdef PNG_READ_pCAL_SUPPORTED - else if (chunk_name == png_pCAL) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_pCAL(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_sCAL_SUPPORTED - else if (chunk_name == png_sCAL) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_sCAL(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_tIME_SUPPORTED - else if (chunk_name == png_tIME) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_tIME(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_tEXt_SUPPORTED - else if (chunk_name == png_tEXt) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_tEXt(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_zTXt_SUPPORTED - else if (chunk_name == png_zTXt) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_zTXt(png_ptr, info_ptr, png_ptr->push_length); - } - -#endif -#ifdef PNG_READ_iTXt_SUPPORTED - else if (chunk_name == png_iTXt) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_iTXt(png_ptr, info_ptr, png_ptr->push_length); - } -#endif - - else - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - png_handle_unknown(png_ptr, info_ptr, png_ptr->push_length, - PNG_HANDLE_CHUNK_AS_DEFAULT); - } - - png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; -} - -void /* PRIVATE */ -png_push_crc_skip(png_structrp png_ptr, png_uint_32 skip) -{ - png_ptr->process_mode = PNG_SKIP_MODE; - png_ptr->skip_length = skip; -} - -void /* PRIVATE */ -png_push_crc_finish(png_structrp png_ptr) -{ - if (png_ptr->skip_length && png_ptr->save_buffer_size) - { - png_size_t save_size = png_ptr->save_buffer_size; - png_uint_32 skip_length = png_ptr->skip_length; - - /* We want the smaller of 'skip_length' and 'save_buffer_size', but - * they are of different types and we don't know which variable has the - * fewest bits. Carefully select the smaller and cast it to the type of - * the larger - this cannot overflow. Do not cast in the following test - * - it will break on either 16 or 64 bit platforms. - */ - if (skip_length < save_size) - save_size = (png_size_t)skip_length; - - else - skip_length = (png_uint_32)save_size; - - png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size); - - png_ptr->skip_length -= skip_length; - png_ptr->buffer_size -= save_size; - png_ptr->save_buffer_size -= save_size; - png_ptr->save_buffer_ptr += save_size; - } - if (png_ptr->skip_length && png_ptr->current_buffer_size) - { - png_size_t save_size = png_ptr->current_buffer_size; - png_uint_32 skip_length = png_ptr->skip_length; - - /* We want the smaller of 'skip_length' and 'current_buffer_size', here, - * the same problem exists as above and the same solution. - */ - if (skip_length < save_size) - save_size = (png_size_t)skip_length; - - else - skip_length = (png_uint_32)save_size; - - png_calculate_crc(png_ptr, png_ptr->current_buffer_ptr, save_size); - - png_ptr->skip_length -= skip_length; - png_ptr->buffer_size -= save_size; - png_ptr->current_buffer_size -= save_size; - png_ptr->current_buffer_ptr += save_size; - } - if (!png_ptr->skip_length) - { - if (png_ptr->buffer_size < 4) - { - png_push_save_buffer(png_ptr); - return; - } - - png_crc_finish(png_ptr, 0); - png_ptr->process_mode = PNG_READ_CHUNK_MODE; - } -} - -void PNGCBAPI -png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length) -{ - png_bytep ptr; - - if (png_ptr == NULL) - return; - - ptr = buffer; - if (png_ptr->save_buffer_size) - { - png_size_t save_size; - - if (length < png_ptr->save_buffer_size) - save_size = length; - - else - save_size = png_ptr->save_buffer_size; - - memcpy(ptr, png_ptr->save_buffer_ptr, save_size); - length -= save_size; - ptr += save_size; - png_ptr->buffer_size -= save_size; - png_ptr->save_buffer_size -= save_size; - png_ptr->save_buffer_ptr += save_size; - } - if (length && png_ptr->current_buffer_size) - { - png_size_t save_size; - - if (length < png_ptr->current_buffer_size) - save_size = length; - - else - save_size = png_ptr->current_buffer_size; - - memcpy(ptr, png_ptr->current_buffer_ptr, save_size); - png_ptr->buffer_size -= save_size; - png_ptr->current_buffer_size -= save_size; - png_ptr->current_buffer_ptr += save_size; - } -} - -void /* PRIVATE */ -png_push_save_buffer(png_structrp png_ptr) -{ - if (png_ptr->save_buffer_size) - { - if (png_ptr->save_buffer_ptr != png_ptr->save_buffer) - { - png_size_t i, istop; - png_bytep sp; - png_bytep dp; - - istop = png_ptr->save_buffer_size; - for (i = 0, sp = png_ptr->save_buffer_ptr, dp = png_ptr->save_buffer; - i < istop; i++, sp++, dp++) - { - *dp = *sp; - } - } - } - if (png_ptr->save_buffer_size + png_ptr->current_buffer_size > - png_ptr->save_buffer_max) - { - png_size_t new_max; - png_bytep old_buffer; - - if (png_ptr->save_buffer_size > PNG_SIZE_MAX - - (png_ptr->current_buffer_size + 256)) - { - png_error(png_ptr, "Potential overflow of save_buffer"); - } - - new_max = png_ptr->save_buffer_size + png_ptr->current_buffer_size + 256; - old_buffer = png_ptr->save_buffer; - png_ptr->save_buffer = (png_bytep)png_malloc_warn(png_ptr, - (png_size_t)new_max); - - if (png_ptr->save_buffer == NULL) - { - png_free(png_ptr, old_buffer); - png_error(png_ptr, "Insufficient memory for save_buffer"); - } - - memcpy(png_ptr->save_buffer, old_buffer, png_ptr->save_buffer_size); - png_free(png_ptr, old_buffer); - png_ptr->save_buffer_max = new_max; - } - if (png_ptr->current_buffer_size) - { - memcpy(png_ptr->save_buffer + png_ptr->save_buffer_size, - png_ptr->current_buffer_ptr, png_ptr->current_buffer_size); - png_ptr->save_buffer_size += png_ptr->current_buffer_size; - png_ptr->current_buffer_size = 0; - } - png_ptr->save_buffer_ptr = png_ptr->save_buffer; - png_ptr->buffer_size = 0; -} - -void /* PRIVATE */ -png_push_restore_buffer(png_structrp png_ptr, png_bytep buffer, - png_size_t buffer_length) -{ - png_ptr->current_buffer = buffer; - png_ptr->current_buffer_size = buffer_length; - png_ptr->buffer_size = buffer_length + png_ptr->save_buffer_size; - png_ptr->current_buffer_ptr = png_ptr->current_buffer; -} - -void /* PRIVATE */ -png_push_read_IDAT(png_structrp png_ptr) -{ - if (!(png_ptr->mode & PNG_HAVE_CHUNK_HEADER)) - { - png_byte chunk_length[4]; - png_byte chunk_tag[4]; - - /* TODO: this code can be commoned up with the same code in push_read */ - if (png_ptr->buffer_size < 8) - { - png_push_save_buffer(png_ptr); - return; - } - - png_push_fill_buffer(png_ptr, chunk_length, 4); - png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length); - png_reset_crc(png_ptr); - png_crc_read(png_ptr, chunk_tag, 4); - png_ptr->chunk_name = PNG_CHUNK_FROM_STRING(chunk_tag); - png_ptr->mode |= PNG_HAVE_CHUNK_HEADER; - - if (png_ptr->chunk_name != png_IDAT) - { - png_ptr->process_mode = PNG_READ_CHUNK_MODE; - - if (!(png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED)) - png_error(png_ptr, "Not enough compressed data"); - - return; - } - - png_ptr->idat_size = png_ptr->push_length; - } - - if (png_ptr->idat_size && png_ptr->save_buffer_size) - { - png_size_t save_size = png_ptr->save_buffer_size; - png_uint_32 idat_size = png_ptr->idat_size; - - /* We want the smaller of 'idat_size' and 'current_buffer_size', but they - * are of different types and we don't know which variable has the fewest - * bits. Carefully select the smaller and cast it to the type of the - * larger - this cannot overflow. Do not cast in the following test - it - * will break on either 16 or 64 bit platforms. - */ - if (idat_size < save_size) - save_size = (png_size_t)idat_size; - - else - idat_size = (png_uint_32)save_size; - - png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size); - - png_process_IDAT_data(png_ptr, png_ptr->save_buffer_ptr, save_size); - - png_ptr->idat_size -= idat_size; - png_ptr->buffer_size -= save_size; - png_ptr->save_buffer_size -= save_size; - png_ptr->save_buffer_ptr += save_size; - } - - if (png_ptr->idat_size && png_ptr->current_buffer_size) - { - png_size_t save_size = png_ptr->current_buffer_size; - png_uint_32 idat_size = png_ptr->idat_size; - - /* We want the smaller of 'idat_size' and 'current_buffer_size', but they - * are of different types and we don't know which variable has the fewest - * bits. Carefully select the smaller and cast it to the type of the - * larger - this cannot overflow. - */ - if (idat_size < save_size) - save_size = (png_size_t)idat_size; - - else - idat_size = (png_uint_32)save_size; - - png_calculate_crc(png_ptr, png_ptr->current_buffer_ptr, save_size); - - png_process_IDAT_data(png_ptr, png_ptr->current_buffer_ptr, save_size); - - png_ptr->idat_size -= idat_size; - png_ptr->buffer_size -= save_size; - png_ptr->current_buffer_size -= save_size; - png_ptr->current_buffer_ptr += save_size; - } - if (!png_ptr->idat_size) - { - if (png_ptr->buffer_size < 4) - { - png_push_save_buffer(png_ptr); - return; - } - - png_crc_finish(png_ptr, 0); - png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; - png_ptr->mode |= PNG_AFTER_IDAT; - png_ptr->zowner = 0; - } -} - -void /* PRIVATE */ -png_process_IDAT_data(png_structrp png_ptr, png_bytep buffer, - png_size_t buffer_length) -{ - /* The caller checks for a non-zero buffer length. */ - if (!(buffer_length > 0) || buffer == NULL) - png_error(png_ptr, "No IDAT data (internal error)"); - - /* This routine must process all the data it has been given - * before returning, calling the row callback as required to - * handle the uncompressed results. - */ - png_ptr->zstream.next_in = buffer; - /* TODO: WARNING: TRUNCATION ERROR: DANGER WILL ROBINSON: */ - png_ptr->zstream.avail_in = (uInt)buffer_length; - - /* Keep going until the decompressed data is all processed - * or the stream marked as finished. - */ - while (png_ptr->zstream.avail_in > 0 && - !(png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED)) - { - int ret; - - /* We have data for zlib, but we must check that zlib - * has someplace to put the results. It doesn't matter - * if we don't expect any results -- it may be the input - * data is just the LZ end code. - */ - if (!(png_ptr->zstream.avail_out > 0)) - { - /* TODO: WARNING: TRUNCATION ERROR: DANGER WILL ROBINSON: */ - png_ptr->zstream.avail_out = (uInt)(PNG_ROWBYTES(png_ptr->pixel_depth, - png_ptr->iwidth) + 1); - - png_ptr->zstream.next_out = png_ptr->row_buf; - } - - /* Using Z_SYNC_FLUSH here means that an unterminated - * LZ stream (a stream with a missing end code) can still - * be handled, otherwise (Z_NO_FLUSH) a future zlib - * implementation might defer output and therefore - * change the current behavior (see comments in inflate.c - * for why this doesn't happen at present with zlib 1.2.5). - */ - ret = inflate(&png_ptr->zstream, Z_SYNC_FLUSH); - - /* Check for any failure before proceeding. */ - if (ret != Z_OK && ret != Z_STREAM_END) - { - /* Terminate the decompression. */ - png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED; - png_ptr->zowner = 0; - - /* This may be a truncated stream (missing or - * damaged end code). Treat that as a warning. - */ - if (png_ptr->row_number >= png_ptr->num_rows || - png_ptr->pass > 6) - png_warning(png_ptr, "Truncated compressed data in IDAT"); - - else - png_error(png_ptr, "Decompression error in IDAT"); - - /* Skip the check on unprocessed input */ - return; - } - - /* Did inflate output any data? */ - if (png_ptr->zstream.next_out != png_ptr->row_buf) - { - /* Is this unexpected data after the last row? - * If it is, artificially terminate the LZ output - * here. - */ - if (png_ptr->row_number >= png_ptr->num_rows || - png_ptr->pass > 6) - { - /* Extra data. */ - png_warning(png_ptr, "Extra compressed data in IDAT"); - png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED; - png_ptr->zowner = 0; - - /* Do no more processing; skip the unprocessed - * input check below. - */ - return; - } - - /* Do we have a complete row? */ - if (png_ptr->zstream.avail_out == 0) - png_push_process_row(png_ptr); - } - - /* And check for the end of the stream. */ - if (ret == Z_STREAM_END) - png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED; - } - - /* All the data should have been processed, if anything - * is left at this point we have bytes of IDAT data - * after the zlib end code. - */ - if (png_ptr->zstream.avail_in > 0) - png_warning(png_ptr, "Extra compression data in IDAT"); -} - -void /* PRIVATE */ -png_push_process_row(png_structrp png_ptr) -{ - /* 1.5.6: row_info moved out of png_struct to a local here. */ - png_row_info row_info; - - row_info.width = png_ptr->iwidth; /* NOTE: width of current interlaced row */ - row_info.color_type = png_ptr->color_type; - row_info.bit_depth = png_ptr->bit_depth; - row_info.channels = png_ptr->channels; - row_info.pixel_depth = png_ptr->pixel_depth; - row_info.rowbytes = PNG_ROWBYTES(row_info.pixel_depth, row_info.width); - - if (png_ptr->row_buf[0] > PNG_FILTER_VALUE_NONE) - { - if (png_ptr->row_buf[0] < PNG_FILTER_VALUE_LAST) - png_read_filter_row(png_ptr, &row_info, png_ptr->row_buf + 1, - png_ptr->prev_row + 1, png_ptr->row_buf[0]); - else - png_error(png_ptr, "bad adaptive filter value"); - } - - /* libpng 1.5.6: the following line was copying png_ptr->rowbytes before - * 1.5.6, while the buffer really is this big in current versions of libpng - * it may not be in the future, so this was changed just to copy the - * interlaced row count: - */ - memcpy(png_ptr->prev_row, png_ptr->row_buf, row_info.rowbytes + 1); - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED - if (png_ptr->transformations) - png_do_read_transformations(png_ptr, &row_info); -#endif - - /* The transformed pixel depth should match the depth now in row_info. */ - if (png_ptr->transformed_pixel_depth == 0) - { - png_ptr->transformed_pixel_depth = row_info.pixel_depth; - if (row_info.pixel_depth > png_ptr->maximum_pixel_depth) - png_error(png_ptr, "progressive row overflow"); - } - - else if (png_ptr->transformed_pixel_depth != row_info.pixel_depth) - png_error(png_ptr, "internal progressive row size calculation error"); - - -#ifdef PNG_READ_INTERLACING_SUPPORTED - /* Blow up interlaced rows to full size */ - if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE)) - { - if (png_ptr->pass < 6) - png_do_read_interlace(&row_info, png_ptr->row_buf + 1, png_ptr->pass, - png_ptr->transformations); - - switch (png_ptr->pass) - { - case 0: - { - int i; - for (i = 0; i < 8 && png_ptr->pass == 0; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); /* Updates png_ptr->pass */ - } - - if (png_ptr->pass == 2) /* Pass 1 might be empty */ - { - for (i = 0; i < 4 && png_ptr->pass == 2; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - } - - if (png_ptr->pass == 4 && png_ptr->height <= 4) - { - for (i = 0; i < 2 && png_ptr->pass == 4; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - } - - if (png_ptr->pass == 6 && png_ptr->height <= 4) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - - break; - } - - case 1: - { - int i; - for (i = 0; i < 8 && png_ptr->pass == 1; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } - - if (png_ptr->pass == 2) /* Skip top 4 generated rows */ - { - for (i = 0; i < 4 && png_ptr->pass == 2; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - } - - break; - } - - case 2: - { - int i; - - for (i = 0; i < 4 && png_ptr->pass == 2; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } - - for (i = 0; i < 4 && png_ptr->pass == 2; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - - if (png_ptr->pass == 4) /* Pass 3 might be empty */ - { - for (i = 0; i < 2 && png_ptr->pass == 4; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - } - - break; - } - - case 3: - { - int i; - - for (i = 0; i < 4 && png_ptr->pass == 3; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } - - if (png_ptr->pass == 4) /* Skip top two generated rows */ - { - for (i = 0; i < 2 && png_ptr->pass == 4; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - } - - break; - } - - case 4: - { - int i; - - for (i = 0; i < 2 && png_ptr->pass == 4; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } - - for (i = 0; i < 2 && png_ptr->pass == 4; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - - if (png_ptr->pass == 6) /* Pass 5 might be empty */ - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - - break; - } - - case 5: - { - int i; - - for (i = 0; i < 2 && png_ptr->pass == 5; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } - - if (png_ptr->pass == 6) /* Skip top generated row */ - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - - break; - } - - default: - case 6: - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - - if (png_ptr->pass != 6) - break; - - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - } - } - else -#endif - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } -} - -void /* PRIVATE */ -png_read_push_finish_row(png_structrp png_ptr) -{ -#ifdef PNG_READ_INTERLACING_SUPPORTED - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static PNG_CONST png_byte png_pass_start[] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static PNG_CONST png_byte png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1}; - - /* Start of interlace block in the y direction */ - static PNG_CONST png_byte png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1}; - - /* Offset to next interlace block in the y direction */ - static PNG_CONST png_byte png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2}; - - /* Height of interlace block. This is not currently used - if you need - * it, uncomment it here and in png.h - static PNG_CONST png_byte png_pass_height[] = {8, 8, 4, 4, 2, 2, 1}; - */ -#endif - - png_ptr->row_number++; - if (png_ptr->row_number < png_ptr->num_rows) - return; - -#ifdef PNG_READ_INTERLACING_SUPPORTED - if (png_ptr->interlaced) - { - png_ptr->row_number = 0; - memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1); - - do - { - png_ptr->pass++; - if ((png_ptr->pass == 1 && png_ptr->width < 5) || - (png_ptr->pass == 3 && png_ptr->width < 3) || - (png_ptr->pass == 5 && png_ptr->width < 2)) - png_ptr->pass++; - - if (png_ptr->pass > 7) - png_ptr->pass--; - - if (png_ptr->pass >= 7) - break; - - png_ptr->iwidth = (png_ptr->width + - png_pass_inc[png_ptr->pass] - 1 - - png_pass_start[png_ptr->pass]) / - png_pass_inc[png_ptr->pass]; - - if (png_ptr->transformations & PNG_INTERLACE) - break; - - png_ptr->num_rows = (png_ptr->height + - png_pass_yinc[png_ptr->pass] - 1 - - png_pass_ystart[png_ptr->pass]) / - png_pass_yinc[png_ptr->pass]; - - } while (png_ptr->iwidth == 0 || png_ptr->num_rows == 0); - } -#endif /* PNG_READ_INTERLACING_SUPPORTED */ -} - -void /* PRIVATE */ -png_push_have_info(png_structrp png_ptr, png_inforp info_ptr) -{ - if (png_ptr->info_fn != NULL) - (*(png_ptr->info_fn))(png_ptr, info_ptr); -} - -void /* PRIVATE */ -png_push_have_end(png_structrp png_ptr, png_inforp info_ptr) -{ - if (png_ptr->end_fn != NULL) - (*(png_ptr->end_fn))(png_ptr, info_ptr); -} - -void /* PRIVATE */ -png_push_have_row(png_structrp png_ptr, png_bytep row) -{ - if (png_ptr->row_fn != NULL) - (*(png_ptr->row_fn))(png_ptr, row, png_ptr->row_number, - (int)png_ptr->pass); -} - -#ifdef PNG_READ_INTERLACING_SUPPORTED -void PNGAPI -png_progressive_combine_row(png_const_structrp png_ptr, png_bytep old_row, - png_const_bytep new_row) -{ - if (png_ptr == NULL) - return; - - /* new_row is a flag here - if it is NULL then the app callback was called - * from an empty row (see the calls to png_struct::row_fn below), otherwise - * it must be png_ptr->row_buf+1 - */ - if (new_row != NULL) - png_combine_row(png_ptr, old_row, 1/*display*/); -} -#endif /* PNG_READ_INTERLACING_SUPPORTED */ - -void PNGAPI -png_set_progressive_read_fn(png_structrp png_ptr, png_voidp progressive_ptr, - png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn, - png_progressive_end_ptr end_fn) -{ - if (png_ptr == NULL) - return; - - png_ptr->info_fn = info_fn; - png_ptr->row_fn = row_fn; - png_ptr->end_fn = end_fn; - - png_set_read_fn(png_ptr, progressive_ptr, png_push_fill_buffer); -} - -png_voidp PNGAPI -png_get_progressive_ptr(png_const_structrp png_ptr) -{ - if (png_ptr == NULL) - return (NULL); - - return png_ptr->io_ptr; -} -#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ diff --git a/io2d/src/3rd-party/libpng/pngpriv.h b/io2d/src/3rd-party/libpng/pngpriv.h deleted file mode 100644 index 73ede2b..0000000 --- a/io2d/src/3rd-party/libpng/pngpriv.h +++ /dev/null @@ -1,2051 +0,0 @@ - -/* pngpriv.h - private declarations for use inside libpng - * - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * Last changed in libpng 1.6.8 [$RDATE%] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -/* The symbols declared in this file (including the functions declared - * as extern) are PRIVATE. They are not part of the libpng public - * interface, and are not recommended for use by regular applications. - * Some of them may become public in the future; others may stay private, - * change in an incompatible way, or even disappear. - * Although the libpng users are not forbidden to include this header, - * they should be well aware of the issues that may arise from doing so. - */ - -#ifndef PNGPRIV_H -#define PNGPRIV_H - -/* Feature Test Macros. The following are defined here to ensure that correctly - * implemented libraries reveal the APIs libpng needs to build and hide those - * that are not needed and potentially damaging to the compilation. - * - * Feature Test Macros must be defined before any system header is included (see - * POSIX 1003.1 2.8.2 "POSIX Symbols." - * - * These macros only have an effect if the operating system supports either - * POSIX 1003.1 or C99, or both. On other operating systems (particularly - * Windows/Visual Studio) there is no effect; the OS specific tests below are - * still required (as of 2011-05-02.) - */ -#define _POSIX_SOURCE 1 /* Just the POSIX 1003.1 and C89 APIs */ - -#ifndef PNG_VERSION_INFO_ONLY -/* Standard library headers not required by png.h: */ -# include -# include -#endif - -#define PNGLIB_BUILD /*libpng is being built, not used*/ - -/* If HAVE_CONFIG_H is defined during the build then the build system must - * provide an appropriate "config.h" file on the include path. The header file - * must provide definitions as required below (search for "HAVE_CONFIG_H"); - * see configure.ac for more details of the requirements. The macro - * "PNG_NO_CONFIG_H" is provided for maintainers to test for dependencies on - * 'configure'; define this macro to prevent the configure build including the - * configure generated config.h. Libpng is expected to compile without *any* - * special build system support on a reasonably ANSI-C compliant system. - */ -#if defined(HAVE_CONFIG_H) && !defined(PNG_NO_CONFIG_H) -# include - - /* Pick up the definition of 'restrict' from config.h if it was read: */ -# define PNG_RESTRICT restrict -#endif - -/* To support symbol prefixing it is necessary to know *before* including png.h - * whether the fixed point (and maybe other) APIs are exported, because if they - * are not internal definitions may be required. This is handled below just - * before png.h is included, but load the configuration now if it is available. - */ -#ifndef PNGLCONF_H -# include "pnglibconf.h" -#endif - -/* Local renames may change non-exported API functions from png.h */ -#if defined(PNG_PREFIX) && !defined(PNGPREFIX_H) -# include "pngprefix.h" -#endif - -#ifdef PNG_USER_CONFIG -# include "pngusr.h" - /* These should have been defined in pngusr.h */ -# ifndef PNG_USER_PRIVATEBUILD -# define PNG_USER_PRIVATEBUILD "Custom libpng build" -# endif -# ifndef PNG_USER_DLLFNAME_POSTFIX -# define PNG_USER_DLLFNAME_POSTFIX "Cb" -# endif -#endif - -/* Compile time options. - * ===================== - * In a multi-arch build the compiler may compile the code several times for the - * same object module, producing different binaries for different architectures. - * When this happens configure-time setting of the target host options cannot be - * done and this interferes with the handling of the ARM NEON optimizations, and - * possibly other similar optimizations. Put additional tests here; in general - * this is needed when the same option can be changed at both compile time and - * run time depending on the target OS (i.e. iOS vs Android.) - * - * NOTE: symbol prefixing does not pass $(CFLAGS) to the preprocessor, because - * this is not possible with certain compilers (Oracle SUN OS CC), as a result - * it is necessary to ensure that all extern functions that *might* be used - * regardless of $(CFLAGS) get declared in this file. The test on __ARM_NEON__ - * below is one example of this behavior because it is controlled by the - * presence or not of -mfpu=neon on the GCC command line, it is possible to do - * this in $(CC), e.g. "CC=gcc -mfpu=neon", but people who build libpng rarely - * do this. - */ -#ifndef PNG_ARM_NEON_OPT - /* ARM NEON optimizations are being controlled by the compiler settings, - * typically the target FPU. If the FPU has been set to NEON (-mfpu=neon - * with GCC) then the compiler will define __ARM_NEON__ and we can rely - * unconditionally on NEON instructions not crashing, otherwise we must - * disable use of NEON instructions. - * - * NOTE: at present these optimizations depend on 'ALIGNED_MEMORY', so they - * can only be turned on automatically if that is supported too. If - * PNG_ARM_NEON_OPT is set in CPPFLAGS (to >0) then arm/arm_init.c will fail - * to compile with an appropriate #error if ALIGNED_MEMORY has been turned - * off. - */ -# if defined(__ARM_NEON__) && defined(PNG_ALIGNED_MEMORY_SUPPORTED) -# define PNG_ARM_NEON_OPT 2 -# else -# define PNG_ARM_NEON_OPT 0 -# endif -#endif - -#if PNG_ARM_NEON_OPT > 0 - /* NEON optimizations are to be at least considered by libpng, so enable the - * callbacks to do this. - */ -# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_neon - - /* By default the 'intrinsics' code in arm/filter_neon_intrinsics.c is used - * if possible - if __ARM_NEON__ is set and the compiler version is not known - * to be broken. This is control by PNG_ARM_NEON_IMPLEMENTATION which can - * be: - * - * 1 The intrinsics code (the default with __ARM_NEON__) - * 2 The hand coded assembler (the default without __ARM_NEON__) - * - * It is possible to set PNG_ARM_NEON_IMPLEMENTATION in CPPFLAGS, however - * this is *NOT* supported and may cease to work even after a minor revision - * to libpng. It *is* valid to do this for testing purposes, e.g. speed - * testing or a new compiler, but the results should be communicated to the - * libpng implementation list for incorporation in the next minor release. - */ -# ifndef PNG_ARM_NEON_IMPLEMENTATION -# ifdef __ARM_NEON__ -# if defined(__clang__) - /* At present it is unknown by the libpng developers which versions - * of clang support the intrinsics, however some or perhaps all - * versions do not work with the assembler so this may be - * irrelevant, so just use the default (do nothing here.) - */ -# elif defined(__GNUC__) - /* GCC 4.5.4 NEON support is known to be broken. 4.6.3 is known to - * work, so if this *is* GCC, or G++, look for a version >4.5 - */ -# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) -# define PNG_ARM_NEON_IMPLEMENTATION 2 -# endif /* no GNUC support */ -# endif /* __GNUC__ */ -# else /* !defined __ARM_NEON__ */ - /* The 'intrinsics' code simply won't compile without this -mfpu=neon: - */ -# define PNG_ARM_NEON_IMPLEMENTATION 2 -# endif /* __ARM_NEON__ */ -# endif /* !defined PNG_ARM_NEON_IMPLEMENTATION */ - -# ifndef PNG_ARM_NEON_IMPLEMENTATION - /* Use the intrinsics code by default. */ -# define PNG_ARM_NEON_IMPLEMENTATION 1 -# endif -#endif /* PNG_ARM_NEON_OPT > 0 */ - -/* Is this a build of a DLL where compilation of the object modules requires - * different preprocessor settings to those required for a simple library? If - * so PNG_BUILD_DLL must be set. - * - * If libpng is used inside a DLL but that DLL does not export the libpng APIs - * PNG_BUILD_DLL must not be set. To avoid the code below kicking in build a - * static library of libpng then link the DLL against that. - */ -#ifndef PNG_BUILD_DLL -# ifdef DLL_EXPORT - /* This is set by libtool when files are compiled for a DLL; libtool - * always compiles twice, even on systems where it isn't necessary. Set - * PNG_BUILD_DLL in case it is necessary: - */ -# define PNG_BUILD_DLL -# else -# ifdef _WINDLL - /* This is set by the Microsoft Visual Studio IDE in projects that - * build a DLL. It can't easily be removed from those projects (it - * isn't visible in the Visual Studio UI) so it is a fairly reliable - * indication that PNG_IMPEXP needs to be set to the DLL export - * attributes. - */ -# define PNG_BUILD_DLL -# else -# ifdef __DLL__ - /* This is set by the Borland C system when compiling for a DLL - * (as above.) - */ -# define PNG_BUILD_DLL -# else - /* Add additional compiler cases here. */ -# endif -# endif -# endif -#endif /* Setting PNG_BUILD_DLL if required */ - -/* See pngconf.h for more details: the builder of the library may set this on - * the command line to the right thing for the specific compilation system or it - * may be automagically set above (at present we know of no system where it does - * need to be set on the command line.) - * - * PNG_IMPEXP must be set here when building the library to prevent pngconf.h - * setting it to the "import" setting for a DLL build. - */ -#ifndef PNG_IMPEXP -# ifdef PNG_BUILD_DLL -# define PNG_IMPEXP PNG_DLL_EXPORT -# else - /* Not building a DLL, or the DLL doesn't require specific export - * definitions. - */ -# define PNG_IMPEXP -# endif -#endif - -/* No warnings for private or deprecated functions in the build: */ -#ifndef PNG_DEPRECATED -# define PNG_DEPRECATED -#endif -#ifndef PNG_PRIVATE -# define PNG_PRIVATE -#endif - -/* Symbol preprocessing support. - * - * To enable listing global, but internal, symbols the following macros should - * always be used to declare an extern data or function object in this file. - */ -#ifndef PNG_INTERNAL_DATA -# define PNG_INTERNAL_DATA(type, name, array) extern type name array -#endif - -#ifndef PNG_INTERNAL_FUNCTION -# define PNG_INTERNAL_FUNCTION(type, name, args, attributes)\ - extern PNG_FUNCTION(type, name, args, PNG_EMPTY attributes) -#endif - -/* If floating or fixed point APIs are disabled they may still be compiled - * internally. To handle this make sure they are declared as the appropriate - * internal extern function (otherwise the symbol prefixing stuff won't work and - * the functions will be used without definitions.) - * - * NOTE: although all the API functions are declared here they are not all - * actually built! Because the declarations are still made it is necessary to - * fake out types that they depend on. - */ -#ifndef PNG_FP_EXPORT -# ifndef PNG_FLOATING_POINT_SUPPORTED -# define PNG_FP_EXPORT(ordinal, type, name, args)\ - PNG_INTERNAL_FUNCTION(type, name, args, PNG_EMPTY); -# ifndef PNG_VERSION_INFO_ONLY - typedef struct png_incomplete png_double; - typedef png_double* png_doublep; - typedef const png_double* png_const_doublep; - typedef png_double** png_doublepp; -# endif -# endif -#endif -#ifndef PNG_FIXED_EXPORT -# ifndef PNG_FIXED_POINT_SUPPORTED -# define PNG_FIXED_EXPORT(ordinal, type, name, args)\ - PNG_INTERNAL_FUNCTION(type, name, args, PNG_EMPTY); -# endif -#endif - -#include "png.h" - -/* pngconf.h does not set PNG_DLL_EXPORT unless it is required, so: */ -#ifndef PNG_DLL_EXPORT -# define PNG_DLL_EXPORT -#endif - -/* SECURITY and SAFETY: - * - * By default libpng is built without any internal limits on image size, - * individual heap (png_malloc) allocations or the total amount of memory used. - * If PNG_SAFE_LIMITS_SUPPORTED is defined, however, the limits below are used - * (unless individually overridden). These limits are believed to be fairly - * safe, but builders of secure systems should verify the values against the - * real system capabilities. - */ -#ifdef PNG_SAFE_LIMITS_SUPPORTED - /* 'safe' limits */ -# ifndef PNG_USER_WIDTH_MAX -# define PNG_USER_WIDTH_MAX 1000000 -# endif -# ifndef PNG_USER_HEIGHT_MAX -# define PNG_USER_HEIGHT_MAX 1000000 -# endif -# ifndef PNG_USER_CHUNK_CACHE_MAX -# define PNG_USER_CHUNK_CACHE_MAX 128 -# endif -# ifndef PNG_USER_CHUNK_MALLOC_MAX -# define PNG_USER_CHUNK_MALLOC_MAX 8000000 -# endif -#else - /* values for no limits */ -# ifndef PNG_USER_WIDTH_MAX -# define PNG_USER_WIDTH_MAX 0x7fffffff -# endif -# ifndef PNG_USER_HEIGHT_MAX -# define PNG_USER_HEIGHT_MAX 0x7fffffff -# endif -# ifndef PNG_USER_CHUNK_CACHE_MAX -# define PNG_USER_CHUNK_CACHE_MAX 0 -# endif -# ifndef PNG_USER_CHUNK_MALLOC_MAX -# define PNG_USER_CHUNK_MALLOC_MAX 0 -# endif -#endif - -/* Moved to pngpriv.h at libpng-1.5.0 */ -/* NOTE: some of these may have been used in external applications as - * these definitions were exposed in pngconf.h prior to 1.5. - */ - -/* If you are running on a machine where you cannot allocate more - * than 64K of memory at once, uncomment this. While libpng will not - * normally need that much memory in a chunk (unless you load up a very - * large file), zlib needs to know how big of a chunk it can use, and - * libpng thus makes sure to check any memory allocation to verify it - * will fit into memory. - * - * zlib provides 'MAXSEG_64K' which, if defined, indicates the - * same limit and pngconf.h (already included) sets the limit - * if certain operating systems are detected. - */ -#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K) -# define PNG_MAX_MALLOC_64K -#endif - -#ifndef PNG_UNUSED -/* Unused formal parameter warnings are silenced using the following macro - * which is expected to have no bad effects on performance (optimizing - * compilers will probably remove it entirely). Note that if you replace - * it with something other than whitespace, you must include the terminating - * semicolon. - */ -# define PNG_UNUSED(param) (void)param; -#endif - -/* Just a little check that someone hasn't tried to define something - * contradictory. - */ -#if (PNG_ZBUF_SIZE > 65536L) && defined(PNG_MAX_MALLOC_64K) -# undef PNG_ZBUF_SIZE -# define PNG_ZBUF_SIZE 65536L -#endif - -/* If warnings or errors are turned off the code is disabled or redirected here. - * From 1.5.4 functions have been added to allow very limited formatting of - * error and warning messages - this code will also be disabled here. - */ -#ifdef PNG_WARNINGS_SUPPORTED -# define PNG_WARNING_PARAMETERS(p) png_warning_parameters p; -#else -# define png_warning(s1,s2) ((void)(s1)) -# define png_chunk_warning(s1,s2) ((void)(s1)) -# define png_warning_parameter(p,number,string) ((void)0) -# define png_warning_parameter_unsigned(p,number,format,value) ((void)0) -# define png_warning_parameter_signed(p,number,format,value) ((void)0) -# define png_formatted_warning(pp,p,message) ((void)(pp)) -# define PNG_WARNING_PARAMETERS(p) -#endif -#ifndef PNG_ERROR_TEXT_SUPPORTED -# define png_error(s1,s2) png_err(s1) -# define png_chunk_error(s1,s2) png_err(s1) -# define png_fixed_error(s1,s2) png_err(s1) -#endif - -/* C allows up-casts from (void*) to any pointer and (const void*) to any - * pointer to a const object. C++ regards this as a type error and requires an - * explicit, static, cast and provides the static_cast<> rune to ensure that - * const is not cast away. - */ -#ifdef __cplusplus -# define png_voidcast(type, value) static_cast(value) -# define png_constcast(type, value) const_cast(value) -# define png_aligncast(type, value) \ - static_cast(static_cast(value)) -# define png_aligncastconst(type, value) \ - static_cast(static_cast(value)) -#else -# define png_voidcast(type, value) (value) -# define png_constcast(type, value) ((type)(value)) -# define png_aligncast(type, value) ((void*)(value)) -# define png_aligncastconst(type, value) ((const void*)(value)) -#endif /* __cplusplus */ - -/* Some fixed point APIs are still required even if not exported because - * they get used by the corresponding floating point APIs. This magic - * deals with this: - */ -#ifdef PNG_FIXED_POINT_SUPPORTED -# define PNGFAPI PNGAPI -#else -# define PNGFAPI /* PRIVATE */ -#endif - -#ifndef PNG_VERSION_INFO_ONLY -/* Other defines specific to compilers can go here. Try to keep - * them inside an appropriate ifdef/endif pair for portability. - */ -#if defined(PNG_FLOATING_POINT_SUPPORTED) ||\ - defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) - /* png.c requires the following ANSI-C constants if the conversion of - * floating point to ASCII is implemented therein: - * - * DBL_DIG Maximum number of decimal digits (can be set to any constant) - * DBL_MIN Smallest normalized fp number (can be set to an arbitrary value) - * DBL_MAX Maximum floating point number (can be set to an arbitrary value) - */ -# include - -# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \ - defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC) - /* We need to check that hasn't already been included earlier - * as it seems it doesn't agree with , yet we should really use - * if possible. - */ -# if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__) -# include -# endif -# else -# include -# endif -# if defined(_AMIGA) && defined(__SASC) && defined(_M68881) - /* Amiga SAS/C: We must include builtin FPU functions when compiling using - * MATH=68881 - */ -# include -# endif -#endif - -/* This provides the non-ANSI (far) memory allocation routines. */ -#if defined(__TURBOC__) && defined(__MSDOS__) -# include -# include -#endif - -#if defined(WIN32) || defined(_Windows) || defined(_WINDOWS) || \ - defined(_WIN32) || defined(__WIN32__) -# include /* defines _WINDOWS_ macro */ -#endif -#endif /* PNG_VERSION_INFO_ONLY */ - -/* Moved here around 1.5.0beta36 from pngconf.h */ -/* Users may want to use these so they are not private. Any library - * functions that are passed far data must be model-independent. - */ - -/* Memory model/platform independent fns */ -#ifndef PNG_ABORT -# ifdef _WINDOWS_ -# define PNG_ABORT() ExitProcess(0) -# else -# define PNG_ABORT() abort() -# endif -#endif - -/* These macros may need to be architecture dependent. */ -#define PNG_ALIGN_NONE 0 /* do not use data alignment */ -#define PNG_ALIGN_ALWAYS 1 /* assume unaligned accesses are OK */ -#ifdef offsetof -# define PNG_ALIGN_OFFSET 2 /* use offsetof to determine alignment */ -#else -# define PNG_ALIGN_OFFSET -1 /* prevent the use of this */ -#endif -#define PNG_ALIGN_SIZE 3 /* use sizeof to determine alignment */ - -#ifndef PNG_ALIGN_TYPE - /* Default to using aligned access optimizations and requiring alignment to a - * multiple of the data type size. Override in a compiler specific fashion - * if necessary by inserting tests here: - */ -# define PNG_ALIGN_TYPE PNG_ALIGN_SIZE -#endif - -#if PNG_ALIGN_TYPE == PNG_ALIGN_SIZE - /* This is used because in some compiler implementations non-aligned - * structure members are supported, so the offsetof approach below fails. - * Set PNG_ALIGN_SIZE=0 for compiler combinations where unaligned access - * is good for performance. Do not do this unless you have tested the result - * and understand it. - */ -# define png_alignof(type) (sizeof (type)) -#else -# if PNG_ALIGN_TYPE == PNG_ALIGN_OFFSET -# define png_alignof(type) offsetof(struct{char c; type t;}, t) -# else -# if PNG_ALIGN_TYPE == PNG_ALIGN_ALWAYS -# define png_alignof(type) (1) -# endif - /* Else leave png_alignof undefined to prevent use thereof */ -# endif -#endif - -/* This implicitly assumes alignment is always to a power of 2. */ -#ifdef png_alignof -# define png_isaligned(ptr, type)\ - ((((const char*)ptr-(const char*)0) & (png_alignof(type)-1)) == 0) -#else -# define png_isaligned(ptr, type) 0 -#endif - -/* End of memory model/platform independent support */ -/* End of 1.5.0beta36 move from pngconf.h */ - -/* CONSTANTS and UTILITY MACROS - * These are used internally by libpng and not exposed in the API - */ - -/* Various modes of operation. Note that after an init, mode is set to - * zero automatically when the structure is created. Three of these - * are defined in png.h because they need to be visible to applications - * that call png_set_unknown_chunk(). - */ -/* #define PNG_HAVE_IHDR 0x01 (defined in png.h) */ -/* #define PNG_HAVE_PLTE 0x02 (defined in png.h) */ -#define PNG_HAVE_IDAT 0x04 -/* #define PNG_AFTER_IDAT 0x08 (defined in png.h) */ -#define PNG_HAVE_IEND 0x10 - /* 0x20 (unused) */ - /* 0x40 (unused) */ - /* 0x80 (unused) */ -#define PNG_HAVE_CHUNK_HEADER 0x100 -#define PNG_WROTE_tIME 0x200 -#define PNG_WROTE_INFO_BEFORE_PLTE 0x400 -#define PNG_BACKGROUND_IS_GRAY 0x800 -#define PNG_HAVE_PNG_SIGNATURE 0x1000 -#define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000 /* Have another chunk after IDAT */ - /* 0x4000 (unused) */ -#define PNG_IS_READ_STRUCT 0x8000 /* Else is a write struct */ - -/* Flags for the transformations the PNG library does on the image data */ -#define PNG_BGR 0x0001 -#define PNG_INTERLACE 0x0002 -#define PNG_PACK 0x0004 -#define PNG_SHIFT 0x0008 -#define PNG_SWAP_BYTES 0x0010 -#define PNG_INVERT_MONO 0x0020 -#define PNG_QUANTIZE 0x0040 -#define PNG_COMPOSE 0x0080 /* Was PNG_BACKGROUND */ -#define PNG_BACKGROUND_EXPAND 0x0100 -#define PNG_EXPAND_16 0x0200 /* Added to libpng 1.5.2 */ -#define PNG_16_TO_8 0x0400 /* Becomes 'chop' in 1.5.4 */ -#define PNG_RGBA 0x0800 -#define PNG_EXPAND 0x1000 -#define PNG_GAMMA 0x2000 -#define PNG_GRAY_TO_RGB 0x4000 -#define PNG_FILLER 0x8000 -#define PNG_PACKSWAP 0x10000 -#define PNG_SWAP_ALPHA 0x20000 -#define PNG_STRIP_ALPHA 0x40000 -#define PNG_INVERT_ALPHA 0x80000 -#define PNG_USER_TRANSFORM 0x100000 -#define PNG_RGB_TO_GRAY_ERR 0x200000 -#define PNG_RGB_TO_GRAY_WARN 0x400000 -#define PNG_RGB_TO_GRAY 0x600000 /* two bits, RGB_TO_GRAY_ERR|WARN */ -#define PNG_ENCODE_ALPHA 0x800000 /* Added to libpng-1.5.4 */ -#define PNG_ADD_ALPHA 0x1000000 /* Added to libpng-1.2.7 */ -#define PNG_EXPAND_tRNS 0x2000000 /* Added to libpng-1.2.9 */ -#define PNG_SCALE_16_TO_8 0x4000000 /* Added to libpng-1.5.4 */ - /* 0x8000000 unused */ - /* 0x10000000 unused */ - /* 0x20000000 unused */ - /* 0x40000000 unused */ -/* Flags for png_create_struct */ -#define PNG_STRUCT_PNG 0x0001 -#define PNG_STRUCT_INFO 0x0002 - -/* Scaling factor for filter heuristic weighting calculations */ -#define PNG_WEIGHT_FACTOR (1<<(PNG_WEIGHT_SHIFT)) -#define PNG_COST_FACTOR (1<<(PNG_COST_SHIFT)) - -/* Flags for the png_ptr->flags rather than declaring a byte for each one */ -#define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001 -#define PNG_FLAG_ZSTREAM_INITIALIZED 0x0002 /* Added to libpng-1.6.0 */ - /* 0x0004 unused */ -#define PNG_FLAG_ZSTREAM_ENDED 0x0008 /* Added to libpng-1.6.0 */ - /* 0x0010 unused */ - /* 0x0020 unused */ -#define PNG_FLAG_ROW_INIT 0x0040 -#define PNG_FLAG_FILLER_AFTER 0x0080 -#define PNG_FLAG_CRC_ANCILLARY_USE 0x0100 -#define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200 -#define PNG_FLAG_CRC_CRITICAL_USE 0x0400 -#define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800 -#define PNG_FLAG_ASSUME_sRGB 0x1000 /* Added to libpng-1.5.4 */ -#define PNG_FLAG_OPTIMIZE_ALPHA 0x2000 /* Added to libpng-1.5.4 */ -#define PNG_FLAG_DETECT_UNINITIALIZED 0x4000 /* Added to libpng-1.5.4 */ -/* #define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000 */ -/* #define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000 */ -#define PNG_FLAG_LIBRARY_MISMATCH 0x20000 -#define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000 -#define PNG_FLAG_STRIP_ERROR_TEXT 0x80000 -#define PNG_FLAG_BENIGN_ERRORS_WARN 0x100000 /* Added to libpng-1.4.0 */ -#define PNG_FLAG_APP_WARNINGS_WARN 0x200000 /* Added to libpng-1.6.0 */ -#define PNG_FLAG_APP_ERRORS_WARN 0x400000 /* Added to libpng-1.6.0 */ - /* 0x800000 unused */ - /* 0x1000000 unused */ - /* 0x2000000 unused */ - /* 0x4000000 unused */ - /* 0x8000000 unused */ - /* 0x10000000 unused */ - /* 0x20000000 unused */ - /* 0x40000000 unused */ - -#define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \ - PNG_FLAG_CRC_ANCILLARY_NOWARN) - -#define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \ - PNG_FLAG_CRC_CRITICAL_IGNORE) - -#define PNG_FLAG_CRC_MASK (PNG_FLAG_CRC_ANCILLARY_MASK | \ - PNG_FLAG_CRC_CRITICAL_MASK) - -/* Save typing and make code easier to understand */ - -#define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \ - abs((int)((c1).green) - (int)((c2).green)) + \ - abs((int)((c1).blue) - (int)((c2).blue))) - -/* Added to libpng-1.6.0: scale a 16-bit value in the range 0..65535 to 0..255 - * by dividing by 257 *with rounding*. This macro is exact for the given range. - * See the discourse in pngrtran.c png_do_scale_16_to_8. The values in the - * macro were established by experiment (modifying the added value). The macro - * has a second variant that takes a value already scaled by 255 and divides by - * 65535 - this has a maximum error of .502. Over the range 0..65535*65535 it - * only gives off-by-one errors and only for 0.5% (1 in 200) of the values. - */ -#define PNG_DIV65535(v24) (((v24) + 32895) >> 16) -#define PNG_DIV257(v16) PNG_DIV65535((png_uint_32)(v16) * 255) - -/* Added to libpng-1.2.6 JB */ -#define PNG_ROWBYTES(pixel_bits, width) \ - ((pixel_bits) >= 8 ? \ - ((png_size_t)(width) * (((png_size_t)(pixel_bits)) >> 3)) : \ - (( ((png_size_t)(width) * ((png_size_t)(pixel_bits))) + 7) >> 3) ) - -/* PNG_OUT_OF_RANGE returns true if value is outside the range - * ideal-delta..ideal+delta. Each argument is evaluated twice. - * "ideal" and "delta" should be constants, normally simple - * integers, "value" a variable. Added to libpng-1.2.6 JB - */ -#define PNG_OUT_OF_RANGE(value, ideal, delta) \ - ( (value) < (ideal)-(delta) || (value) > (ideal)+(delta) ) - -/* Conversions between fixed and floating point, only defined if - * required (to make sure the code doesn't accidentally use float - * when it is supposedly disabled.) - */ -#ifdef PNG_FLOATING_POINT_SUPPORTED -/* The floating point conversion can't overflow, though it can and - * does lose accuracy relative to the original fixed point value. - * In practice this doesn't matter because png_fixed_point only - * stores numbers with very low precision. The png_ptr and s - * arguments are unused by default but are there in case error - * checking becomes a requirement. - */ -#define png_float(png_ptr, fixed, s) (.00001 * (fixed)) - -/* The fixed point conversion performs range checking and evaluates - * its argument multiple times, so must be used with care. The - * range checking uses the PNG specification values for a signed - * 32 bit fixed point value except that the values are deliberately - * rounded-to-zero to an integral value - 21474 (21474.83 is roughly - * (2^31-1) * 100000). 's' is a string that describes the value being - * converted. - * - * NOTE: this macro will raise a png_error if the range check fails, - * therefore it is normally only appropriate to use this on values - * that come from API calls or other sources where an out of range - * error indicates a programming error, not a data error! - * - * NOTE: by default this is off - the macro is not used - because the - * function call saves a lot of code. - */ -#ifdef PNG_FIXED_POINT_MACRO_SUPPORTED -#define png_fixed(png_ptr, fp, s) ((fp) <= 21474 && (fp) >= -21474 ?\ - ((png_fixed_point)(100000 * (fp))) : (png_fixed_error(png_ptr, s),0)) -#endif -/* else the corresponding function is defined below, inside the scope of the - * cplusplus test. - */ -#endif - -/* Constants for known chunk types. If you need to add a chunk, define the name - * here. For historical reasons these constants have the form png_; i.e. - * the prefix is lower case. Please use decimal values as the parameters to - * match the ISO PNG specification and to avoid relying on the C locale - * interpretation of character values. - * - * Prior to 1.5.6 these constants were strings, as of 1.5.6 png_uint_32 values - * are computed and a new macro (PNG_STRING_FROM_CHUNK) added to allow a string - * to be generated if required. - * - * PNG_32b correctly produces a value shifted by up to 24 bits, even on - * architectures where (int) is only 16 bits. - */ -#define PNG_32b(b,s) ((png_uint_32)(b) << (s)) -#define PNG_U32(b1,b2,b3,b4) \ - (PNG_32b(b1,24) | PNG_32b(b2,16) | PNG_32b(b3,8) | PNG_32b(b4,0)) - -/* Constants for known chunk types. - * - * MAINTAINERS: If you need to add a chunk, define the name here. - * For historical reasons these constants have the form png_; i.e. - * the prefix is lower case. Please use decimal values as the parameters to - * match the ISO PNG specification and to avoid relying on the C locale - * interpretation of character values. Please keep the list sorted. - * - * Notice that PNG_U32 is used to define a 32-bit value for the 4 byte chunk - * type. In fact the specification does not express chunk types this way, - * however using a 32-bit value means that the chunk type can be read from the - * stream using exactly the same code as used for a 32-bit unsigned value and - * can be examined far more efficiently (using one arithmetic compare). - * - * Prior to 1.5.6 the chunk type constants were expressed as C strings. The - * libpng API still uses strings for 'unknown' chunks and a macro, - * PNG_STRING_FROM_CHUNK, allows a string to be generated if required. Notice - * that for portable code numeric values must still be used; the string "IHDR" - * is not portable and neither is PNG_U32('I', 'H', 'D', 'R'). - * - * In 1.7.0 the definitions will be made public in png.h to avoid having to - * duplicate the same definitions in application code. - */ -#define png_IDAT PNG_U32( 73, 68, 65, 84) -#define png_IEND PNG_U32( 73, 69, 78, 68) -#define png_IHDR PNG_U32( 73, 72, 68, 82) -#define png_PLTE PNG_U32( 80, 76, 84, 69) -#define png_bKGD PNG_U32( 98, 75, 71, 68) -#define png_cHRM PNG_U32( 99, 72, 82, 77) -#define png_fRAc PNG_U32(102, 82, 65, 99) /* registered, not defined */ -#define png_gAMA PNG_U32(103, 65, 77, 65) -#define png_gIFg PNG_U32(103, 73, 70, 103) -#define png_gIFt PNG_U32(103, 73, 70, 116) /* deprecated */ -#define png_gIFx PNG_U32(103, 73, 70, 120) -#define png_hIST PNG_U32(104, 73, 83, 84) -#define png_iCCP PNG_U32(105, 67, 67, 80) -#define png_iTXt PNG_U32(105, 84, 88, 116) -#define png_oFFs PNG_U32(111, 70, 70, 115) -#define png_pCAL PNG_U32(112, 67, 65, 76) -#define png_pHYs PNG_U32(112, 72, 89, 115) -#define png_sBIT PNG_U32(115, 66, 73, 84) -#define png_sCAL PNG_U32(115, 67, 65, 76) -#define png_sPLT PNG_U32(115, 80, 76, 84) -#define png_sRGB PNG_U32(115, 82, 71, 66) -#define png_sTER PNG_U32(115, 84, 69, 82) -#define png_tEXt PNG_U32(116, 69, 88, 116) -#define png_tIME PNG_U32(116, 73, 77, 69) -#define png_tRNS PNG_U32(116, 82, 78, 83) -#define png_zTXt PNG_U32(122, 84, 88, 116) - -/* The following will work on (signed char*) strings, whereas the get_uint_32 - * macro will fail on top-bit-set values because of the sign extension. - */ -#define PNG_CHUNK_FROM_STRING(s)\ - PNG_U32(0xff&(s)[0], 0xff&(s)[1], 0xff&(s)[2], 0xff&(s)[3]) - -/* This uses (char), not (png_byte) to avoid warnings on systems where (char) is - * signed and the argument is a (char[]) This macro will fail miserably on - * systems where (char) is more than 8 bits. - */ -#define PNG_STRING_FROM_CHUNK(s,c)\ - (void)(((char*)(s))[0]=(char)((c)>>24), ((char*)(s))[1]=(char)((c)>>16),\ - ((char*)(s))[2]=(char)((c)>>8), ((char*)(s))[3]=(char)((c))) - -/* Do the same but terminate with a null character. */ -#define PNG_CSTRING_FROM_CHUNK(s,c)\ - (void)(PNG_STRING_FROM_CHUNK(s,c), ((char*)(s))[4] = 0) - -/* Test on flag values as defined in the spec (section 5.4): */ -#define PNG_CHUNK_ANCILLARY(c) (1 & ((c) >> 29)) -#define PNG_CHUNK_CRITICAL(c) (!PNG_CHUNK_ANCILLARY(c)) -#define PNG_CHUNK_PRIVATE(c) (1 & ((c) >> 21)) -#define PNG_CHUNK_RESERVED(c) (1 & ((c) >> 13)) -#define PNG_CHUNK_SAFE_TO_COPY(c) (1 & ((c) >> 5)) - -/* Gamma values (new at libpng-1.5.4): */ -#define PNG_GAMMA_MAC_OLD 151724 /* Assume '1.8' is really 2.2/1.45! */ -#define PNG_GAMMA_MAC_INVERSE 65909 -#define PNG_GAMMA_sRGB_INVERSE 45455 - -/* Almost everything below is C specific; the #defines above can be used in - * non-C code (so long as it is C-preprocessed) the rest of this stuff cannot. - */ -#ifndef PNG_VERSION_INFO_ONLY - -#include "pngstruct.h" -#include "pnginfo.h" - -/* Validate the include paths - the include path used to generate pnglibconf.h - * must match that used in the build, or we must be using pnglibconf.h.prebuilt: - */ -#if PNG_ZLIB_VERNUM != 0 && PNG_ZLIB_VERNUM != ZLIB_VERNUM -# error ZLIB_VERNUM != PNG_ZLIB_VERNUM \ - "-I (include path) error: see the notes in pngpriv.h" - /* This means that when pnglibconf.h was built the copy of zlib.h that it - * used is not the same as the one being used here. Because the build of - * libpng makes decisions to use inflateInit2 and inflateReset2 based on the - * zlib version number and because this affects handling of certain broken - * PNG files the -I directives must match. - * - * The most likely explanation is that you passed a -I in CFLAGS, this will - * not work; all the preprocessor directories and in particular all the -I - * directives must be in CPPFLAGS. - */ -#endif - -/* This is used for 16 bit gamma tables -- only the top level pointers are - * const; this could be changed: - */ -typedef const png_uint_16p * png_const_uint_16pp; - -/* Added to libpng-1.5.7: sRGB conversion tables */ -#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) ||\ - defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) -#ifdef PNG_SIMPLIFIED_READ_SUPPORTED -PNG_INTERNAL_DATA(const png_uint_16, png_sRGB_table, [256]); - /* Convert from an sRGB encoded value 0..255 to a 16-bit linear value, - * 0..65535. This table gives the closest 16-bit answers (no errors). - */ -#endif - -PNG_INTERNAL_DATA(const png_uint_16, png_sRGB_base, [512]); -PNG_INTERNAL_DATA(const png_byte, png_sRGB_delta, [512]); - -#define PNG_sRGB_FROM_LINEAR(linear) ((png_byte)((png_sRGB_base[(linear)>>15] +\ - ((((linear)&0x7fff)*png_sRGB_delta[(linear)>>15])>>12)) >> 8)) - /* Given a value 'linear' in the range 0..255*65535 calculate the 8-bit sRGB - * encoded value with maximum error 0.646365. Note that the input is not a - * 16-bit value; it has been multiplied by 255! */ -#endif /* PNG_SIMPLIFIED_READ/WRITE */ - - -/* Inhibit C++ name-mangling for libpng functions but not for system calls. */ -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* Internal functions; these are not exported from a DLL however because they - * are used within several of the C source files they have to be C extern. - * - * All of these functions must be declared with PNG_INTERNAL_FUNCTION. - */ - -/* Zlib support */ -#define PNG_UNEXPECTED_ZLIB_RETURN (-7) -PNG_INTERNAL_FUNCTION(void, png_zstream_error,(png_structrp png_ptr, int ret), - PNG_EMPTY); - /* Used by the zlib handling functions to ensure that z_stream::msg is always - * set before they return. - */ - -#ifdef PNG_WRITE_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_free_buffer_list,(png_structrp png_ptr, - png_compression_bufferp *list),PNG_EMPTY); - /* Free the buffer list used by the compressed write code. */ -#endif - -#if defined(PNG_FLOATING_POINT_SUPPORTED) && \ - !defined(PNG_FIXED_POINT_MACRO_SUPPORTED) && \ - (defined(PNG_gAMA_SUPPORTED) || defined(PNG_cHRM_SUPPORTED) || \ - defined(PNG_sCAL_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) || \ - defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)) || \ - (defined(PNG_sCAL_SUPPORTED) && \ - defined(PNG_FLOATING_ARITHMETIC_SUPPORTED)) -PNG_INTERNAL_FUNCTION(png_fixed_point,png_fixed,(png_const_structrp png_ptr, - double fp, png_const_charp text),PNG_EMPTY); -#endif - -/* Check the user version string for compatibility, returns false if the version - * numbers aren't compatible. - */ -PNG_INTERNAL_FUNCTION(int,png_user_version_check,(png_structrp png_ptr, - png_const_charp user_png_ver),PNG_EMPTY); - -/* Internal base allocator - no messages, NULL on failure to allocate. This - * does, however, call the application provided allocator and that could call - * png_error (although that would be a bug in the application implementation.) - */ -PNG_INTERNAL_FUNCTION(png_voidp,png_malloc_base,(png_const_structrp png_ptr, - png_alloc_size_t size),PNG_ALLOCATED); - -#if defined(PNG_TEXT_SUPPORTED) || defined(PNG_sPLT_SUPPORTED) ||\ - defined(PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED) -/* Internal array allocator, outputs no error or warning messages on failure, - * just returns NULL. - */ -PNG_INTERNAL_FUNCTION(png_voidp,png_malloc_array,(png_const_structrp png_ptr, - int nelements, size_t element_size),PNG_ALLOCATED); - -/* The same but an existing array is extended by add_elements. This function - * also memsets the new elements to 0 and copies the old elements. The old - * array is not freed or altered. - */ -PNG_INTERNAL_FUNCTION(png_voidp,png_realloc_array,(png_const_structrp png_ptr, - png_const_voidp array, int old_elements, int add_elements, - size_t element_size),PNG_ALLOCATED); -#endif /* text, sPLT or unknown chunks */ - -/* Magic to create a struct when there is no struct to call the user supplied - * memory allocators. Because error handling has not been set up the memory - * handlers can't safely call png_error, but this is an obscure and undocumented - * restriction so libpng has to assume that the 'free' handler, at least, might - * call png_error. - */ -PNG_INTERNAL_FUNCTION(png_structp,png_create_png_struct, - (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, - png_error_ptr warn_fn, png_voidp mem_ptr, png_malloc_ptr malloc_fn, - png_free_ptr free_fn),PNG_ALLOCATED); - -/* Free memory from internal libpng struct */ -PNG_INTERNAL_FUNCTION(void,png_destroy_png_struct,(png_structrp png_ptr), - PNG_EMPTY); - -/* Free an allocated jmp_buf (always succeeds) */ -PNG_INTERNAL_FUNCTION(void,png_free_jmpbuf,(png_structrp png_ptr),PNG_EMPTY); - -/* Function to allocate memory for zlib. PNGAPI is disallowed. */ -PNG_INTERNAL_FUNCTION(voidpf,png_zalloc,(voidpf png_ptr, uInt items, uInt size), - PNG_ALLOCATED); - -/* Function to free memory for zlib. PNGAPI is disallowed. */ -PNG_INTERNAL_FUNCTION(void,png_zfree,(voidpf png_ptr, voidpf ptr),PNG_EMPTY); - -/* Next four functions are used internally as callbacks. PNGCBAPI is required - * but not PNG_EXPORT. PNGAPI added at libpng version 1.2.3, changed to - * PNGCBAPI at 1.5.0 - */ - -PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_read_data,(png_structp png_ptr, - png_bytep data, png_size_t length),PNG_EMPTY); - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED -PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_push_fill_buffer,(png_structp png_ptr, - png_bytep buffer, png_size_t length),PNG_EMPTY); -#endif - -PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_write_data,(png_structp png_ptr, - png_bytep data, png_size_t length),PNG_EMPTY); - -#ifdef PNG_WRITE_FLUSH_SUPPORTED -# ifdef PNG_STDIO_SUPPORTED -PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_flush,(png_structp png_ptr), - PNG_EMPTY); -# endif -#endif - -/* Reset the CRC variable */ -PNG_INTERNAL_FUNCTION(void,png_reset_crc,(png_structrp png_ptr),PNG_EMPTY); - -/* Write the "data" buffer to whatever output you are using */ -PNG_INTERNAL_FUNCTION(void,png_write_data,(png_structrp png_ptr, - png_const_bytep data, png_size_t length),PNG_EMPTY); - -/* Read and check the PNG file signature */ -PNG_INTERNAL_FUNCTION(void,png_read_sig,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); - -/* Read the chunk header (length + type name) */ -PNG_INTERNAL_FUNCTION(png_uint_32,png_read_chunk_header,(png_structrp png_ptr), - PNG_EMPTY); - -/* Read data from whatever input you are using into the "data" buffer */ -PNG_INTERNAL_FUNCTION(void,png_read_data,(png_structrp png_ptr, png_bytep data, - png_size_t length),PNG_EMPTY); - -/* Read bytes into buf, and update png_ptr->crc */ -PNG_INTERNAL_FUNCTION(void,png_crc_read,(png_structrp png_ptr, png_bytep buf, - png_uint_32 length),PNG_EMPTY); - -/* Read "skip" bytes, read the file crc, and (optionally) verify png_ptr->crc */ -PNG_INTERNAL_FUNCTION(int,png_crc_finish,(png_structrp png_ptr, - png_uint_32 skip),PNG_EMPTY); - -/* Read the CRC from the file and compare it to the libpng calculated CRC */ -PNG_INTERNAL_FUNCTION(int,png_crc_error,(png_structrp png_ptr),PNG_EMPTY); - -/* Calculate the CRC over a section of data. Note that we are only - * passing a maximum of 64K on systems that have this as a memory limit, - * since this is the maximum buffer size we can specify. - */ -PNG_INTERNAL_FUNCTION(void,png_calculate_crc,(png_structrp png_ptr, - png_const_bytep ptr, png_size_t length),PNG_EMPTY); - -#ifdef PNG_WRITE_FLUSH_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_flush,(png_structrp png_ptr),PNG_EMPTY); -#endif - -/* Write various chunks */ - -/* Write the IHDR chunk, and update the png_struct with the necessary - * information. - */ -PNG_INTERNAL_FUNCTION(void,png_write_IHDR,(png_structrp png_ptr, - png_uint_32 width, png_uint_32 height, int bit_depth, int color_type, - int compression_method, int filter_method, int interlace_method),PNG_EMPTY); - -PNG_INTERNAL_FUNCTION(void,png_write_PLTE,(png_structrp png_ptr, - png_const_colorp palette, png_uint_32 num_pal),PNG_EMPTY); - -PNG_INTERNAL_FUNCTION(void,png_compress_IDAT,(png_structrp png_ptr, - png_const_bytep row_data, png_alloc_size_t row_data_length, int flush), - PNG_EMPTY); - -PNG_INTERNAL_FUNCTION(void,png_write_IEND,(png_structrp png_ptr),PNG_EMPTY); - -#ifdef PNG_WRITE_gAMA_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_gAMA_fixed,(png_structrp png_ptr, - png_fixed_point file_gamma),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_sBIT_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_sBIT,(png_structrp png_ptr, - png_const_color_8p sbit, int color_type),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_cHRM_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_cHRM_fixed,(png_structrp png_ptr, - const png_xy *xy), PNG_EMPTY); - /* The xy value must have been previously validated */ -#endif - -#ifdef PNG_WRITE_sRGB_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_sRGB,(png_structrp png_ptr, - int intent),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_iCCP_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_iCCP,(png_structrp png_ptr, - png_const_charp name, png_const_bytep profile), PNG_EMPTY); - /* The profile must have been previously validated for correctness, the - * length comes from the first four bytes. Only the base, deflate, - * compression is supported. - */ -#endif - -#ifdef PNG_WRITE_sPLT_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_sPLT,(png_structrp png_ptr, - png_const_sPLT_tp palette),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_tRNS_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_tRNS,(png_structrp png_ptr, - png_const_bytep trans, png_const_color_16p values, int number, - int color_type),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_bKGD_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_bKGD,(png_structrp png_ptr, - png_const_color_16p values, int color_type),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_hIST_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_hIST,(png_structrp png_ptr, - png_const_uint_16p hist, int num_hist),PNG_EMPTY); -#endif - -/* Chunks that have keywords */ -#ifdef PNG_WRITE_tEXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_tEXt,(png_structrp png_ptr, - png_const_charp key, png_const_charp text, png_size_t text_len),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_zTXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_zTXt,(png_structrp png_ptr, png_const_charp - key, png_const_charp text, png_size_t text_len, int compression),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_iTXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_iTXt,(png_structrp png_ptr, - int compression, png_const_charp key, png_const_charp lang, - png_const_charp lang_key, png_const_charp text),PNG_EMPTY); -#endif - -#ifdef PNG_TEXT_SUPPORTED /* Added at version 1.0.14 and 1.2.4 */ -PNG_INTERNAL_FUNCTION(int,png_set_text_2,(png_const_structrp png_ptr, - png_inforp info_ptr, png_const_textp text_ptr, int num_text),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_oFFs_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_oFFs,(png_structrp png_ptr, - png_int_32 x_offset, png_int_32 y_offset, int unit_type),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_pCAL_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_pCAL,(png_structrp png_ptr, - png_charp purpose, png_int_32 X0, png_int_32 X1, int type, int nparams, - png_const_charp units, png_charpp params),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_pHYs_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_pHYs,(png_structrp png_ptr, - png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit, - int unit_type),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_tIME_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_tIME,(png_structrp png_ptr, - png_const_timep mod_time),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_sCAL_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_write_sCAL_s,(png_structrp png_ptr, - int unit, png_const_charp width, png_const_charp height),PNG_EMPTY); -#endif - -/* Called when finished processing a row of data */ -PNG_INTERNAL_FUNCTION(void,png_write_finish_row,(png_structrp png_ptr), - PNG_EMPTY); - -/* Internal use only. Called before first row of data */ -PNG_INTERNAL_FUNCTION(void,png_write_start_row,(png_structrp png_ptr), - PNG_EMPTY); - -/* Combine a row of data, dealing with alpha, etc. if requested. 'row' is an - * array of png_ptr->width pixels. If the image is not interlaced or this - * is the final pass this just does a memcpy, otherwise the "display" flag - * is used to determine whether to copy pixels that are not in the current pass. - * - * Because 'png_do_read_interlace' (below) replicates pixels this allows this - * function to achieve the documented 'blocky' appearance during interlaced read - * if display is 1 and the 'sparkle' appearance, where existing pixels in 'row' - * are not changed if they are not in the current pass, when display is 0. - * - * 'display' must be 0 or 1, otherwise the memcpy will be done regardless. - * - * The API always reads from the png_struct row buffer and always assumes that - * it is full width (png_do_read_interlace has already been called.) - * - * This function is only ever used to write to row buffers provided by the - * caller of the relevant libpng API and the row must have already been - * transformed by the read transformations. - * - * The PNG_USE_COMPILE_TIME_MASKS option causes generation of pre-computed - * bitmasks for use within the code, otherwise runtime generated masks are used. - * The default is compile time masks. - */ -#ifndef PNG_USE_COMPILE_TIME_MASKS -# define PNG_USE_COMPILE_TIME_MASKS 1 -#endif -PNG_INTERNAL_FUNCTION(void,png_combine_row,(png_const_structrp png_ptr, - png_bytep row, int display),PNG_EMPTY); - -#ifdef PNG_READ_INTERLACING_SUPPORTED -/* Expand an interlaced row: the 'row_info' describes the pass data that has - * been read in and must correspond to the pixels in 'row', the pixels are - * expanded (moved apart) in 'row' to match the final layout, when doing this - * the pixels are *replicated* to the intervening space. This is essential for - * the correct operation of png_combine_row, above. - */ -PNG_INTERNAL_FUNCTION(void,png_do_read_interlace,(png_row_infop row_info, - png_bytep row, int pass, png_uint_32 transformations),PNG_EMPTY); -#endif - -/* GRR TO DO (2.0 or whenever): simplify other internal calling interfaces */ - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED -/* Grab pixels out of a row for an interlaced pass */ -PNG_INTERNAL_FUNCTION(void,png_do_write_interlace,(png_row_infop row_info, - png_bytep row, int pass),PNG_EMPTY); -#endif - -/* Unfilter a row: check the filter value before calling this, there is no point - * calling it for PNG_FILTER_VALUE_NONE. - */ -PNG_INTERNAL_FUNCTION(void,png_read_filter_row,(png_structrp pp, png_row_infop - row_info, png_bytep row, png_const_bytep prev_row, int filter),PNG_EMPTY); - -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_up_neon,(png_row_infop row_info, - png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_neon,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_neon,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_neon,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_neon,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_neon,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_neon,(png_row_infop - row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); - -/* Choose the best filter to use and filter the row data */ -PNG_INTERNAL_FUNCTION(void,png_write_find_filter,(png_structrp png_ptr, - png_row_infop row_info),PNG_EMPTY); - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_read_IDAT_data,(png_structrp png_ptr, - png_bytep output, png_alloc_size_t avail_out),PNG_EMPTY); - /* Read 'avail_out' bytes of data from the IDAT stream. If the output buffer - * is NULL the function checks, instead, for the end of the stream. In this - * case a benign error will be issued if the stream end is not found or if - * extra data has to be consumed. - */ -PNG_INTERNAL_FUNCTION(void,png_read_finish_IDAT,(png_structrp png_ptr), - PNG_EMPTY); - /* This cleans up when the IDAT LZ stream does not end when the last image - * byte is read; there is still some pending input. - */ - -PNG_INTERNAL_FUNCTION(void,png_read_finish_row,(png_structrp png_ptr), - PNG_EMPTY); - /* Finish a row while reading, dealing with interlacing passes, etc. */ -#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */ - -/* Initialize the row buffers, etc. */ -PNG_INTERNAL_FUNCTION(void,png_read_start_row,(png_structrp png_ptr),PNG_EMPTY); - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -/* Optional call to update the users info structure */ -PNG_INTERNAL_FUNCTION(void,png_read_transform_info,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -#endif - -/* These are the functions that do the transformations */ -#ifdef PNG_READ_FILLER_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_read_filler,(png_row_infop row_info, - png_bytep row, png_uint_32 filler, png_uint_32 flags),PNG_EMPTY); -#endif - -#ifdef PNG_READ_SWAP_ALPHA_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_read_swap_alpha,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_write_swap_alpha,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif - -#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_read_invert_alpha,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_write_invert_alpha,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif - -#if defined(PNG_WRITE_FILLER_SUPPORTED) || \ - defined(PNG_READ_STRIP_ALPHA_SUPPORTED) -PNG_INTERNAL_FUNCTION(void,png_do_strip_channel,(png_row_infop row_info, - png_bytep row, int at_start),PNG_EMPTY); -#endif - -#ifdef PNG_16BIT_SUPPORTED -#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) -PNG_INTERNAL_FUNCTION(void,png_do_swap,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif -#endif - -#if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ - defined(PNG_WRITE_PACKSWAP_SUPPORTED) -PNG_INTERNAL_FUNCTION(void,png_do_packswap,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -PNG_INTERNAL_FUNCTION(int,png_do_rgb_to_gray,(png_structrp png_ptr, - png_row_infop row_info, png_bytep row),PNG_EMPTY); -#endif - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_gray_to_rgb,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif - -#ifdef PNG_READ_PACK_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_unpack,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif - -#ifdef PNG_READ_SHIFT_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_unshift,(png_row_infop row_info, - png_bytep row, png_const_color_8p sig_bits),PNG_EMPTY); -#endif - -#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) -PNG_INTERNAL_FUNCTION(void,png_do_invert,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif - -#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_scale_16_to_8,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif - -#ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_chop,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif - -#ifdef PNG_READ_QUANTIZE_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_quantize,(png_row_infop row_info, - png_bytep row, png_const_bytep palette_lookup, - png_const_bytep quantize_lookup),PNG_EMPTY); - -# ifdef PNG_CORRECT_PALETTE_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_correct_palette,(png_structrp png_ptr, - png_colorp palette, int num_palette),PNG_EMPTY); -# endif -#endif - -#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) -PNG_INTERNAL_FUNCTION(void,png_do_bgr,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_PACK_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_pack,(png_row_infop row_info, - png_bytep row, png_uint_32 bit_depth),PNG_EMPTY); -#endif - -#ifdef PNG_WRITE_SHIFT_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_shift,(png_row_infop row_info, - png_bytep row, png_const_color_8p bit_depth),PNG_EMPTY); -#endif - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) ||\ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) -PNG_INTERNAL_FUNCTION(void,png_do_compose,(png_row_infop row_info, - png_bytep row, png_structrp png_ptr),PNG_EMPTY); -#endif - -#ifdef PNG_READ_GAMMA_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_gamma,(png_row_infop row_info, - png_bytep row, png_structrp png_ptr),PNG_EMPTY); -#endif - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_encode_alpha,(png_row_infop row_info, - png_bytep row, png_structrp png_ptr),PNG_EMPTY); -#endif - -#ifdef PNG_READ_EXPAND_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_expand_palette,(png_row_infop row_info, - png_bytep row, png_const_colorp palette, png_const_bytep trans, - int num_trans),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_do_expand,(png_row_infop row_info, - png_bytep row, png_const_color_16p trans_color),PNG_EMPTY); -#endif - -#ifdef PNG_READ_EXPAND_16_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_expand_16,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif - -/* The following decodes the appropriate chunks, and does error correction, - * then calls the appropriate callback for the chunk if it is valid. - */ - -/* Decode the IHDR chunk */ -PNG_INTERNAL_FUNCTION(void,png_handle_IHDR,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_handle_PLTE,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_handle_IEND,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); - -#ifdef PNG_READ_bKGD_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_bKGD,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_cHRM_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_cHRM,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_gAMA_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_gAMA,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_hIST_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_hIST,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_iCCP_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_iCCP,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif /* PNG_READ_iCCP_SUPPORTED */ - -#ifdef PNG_READ_iTXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_iTXt,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_oFFs_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_oFFs,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_pCAL_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_pCAL,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_pHYs_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_pHYs,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_sBIT_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_sBIT,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_sCAL_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_sCAL,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_sPLT_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_sPLT,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif /* PNG_READ_sPLT_SUPPORTED */ - -#ifdef PNG_READ_sRGB_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_sRGB,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_tEXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_tEXt,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_tIME_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_tIME,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_tRNS_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_tRNS,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -#ifdef PNG_READ_zTXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_handle_zTXt,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -#endif - -PNG_INTERNAL_FUNCTION(void,png_check_chunk_name,(png_structrp png_ptr, - png_uint_32 chunk_name),PNG_EMPTY); - -PNG_INTERNAL_FUNCTION(void,png_handle_unknown,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length, int keep),PNG_EMPTY); - /* This is the function that gets called for unknown chunks. The 'keep' - * argument is either non-zero for a known chunk that has been set to be - * handled as unknown or zero for an unknown chunk. By default the function - * just skips the chunk or errors out if it is critical. - */ - -#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) ||\ - defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED) -PNG_INTERNAL_FUNCTION(int,png_chunk_unknown_handling, - (png_const_structrp png_ptr, png_uint_32 chunk_name),PNG_EMPTY); - /* Exactly as the API png_handle_as_unknown() except that the argument is a - * 32-bit chunk name, not a string. - */ -#endif /* READ_UNKNOWN_CHUNKS || HANDLE_AS_UNKNOWN */ - -/* Handle the transformations for reading and writing */ -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_read_transformations,(png_structrp png_ptr, - png_row_infop row_info),PNG_EMPTY); -#endif -#ifdef PNG_WRITE_TRANSFORMS_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_write_transformations,(png_structrp png_ptr, - png_row_infop row_info),PNG_EMPTY); -#endif - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_init_read_transformations,(png_structrp png_ptr), - PNG_EMPTY); -#endif - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_push_read_chunk,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_read_sig,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_check_crc,(png_structrp png_ptr),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_crc_skip,(png_structrp png_ptr, - png_uint_32 length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_crc_finish,(png_structrp png_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_save_buffer,(png_structrp png_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_restore_buffer,(png_structrp png_ptr, - png_bytep buffer, png_size_t buffer_length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_read_IDAT,(png_structrp png_ptr),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_process_IDAT_data,(png_structrp png_ptr, - png_bytep buffer, png_size_t buffer_length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_process_row,(png_structrp png_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_handle_unknown,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_have_info,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_have_end,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_have_row,(png_structrp png_ptr, - png_bytep row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_read_end,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_process_some_data,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_read_push_finish_row,(png_structrp png_ptr), - PNG_EMPTY); -# ifdef PNG_READ_tEXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_push_handle_tEXt,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_read_tEXt,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -# endif -# ifdef PNG_READ_zTXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_push_handle_zTXt,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_read_zTXt,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -# endif -# ifdef PNG_READ_iTXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_push_handle_iTXt,(png_structrp png_ptr, - png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_push_read_iTXt,(png_structrp png_ptr, - png_inforp info_ptr),PNG_EMPTY); -# endif - -#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ - -#ifdef PNG_MNG_FEATURES_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_do_read_intrapixel,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_do_write_intrapixel,(png_row_infop row_info, - png_bytep row),PNG_EMPTY); -#endif - -/* Added at libpng version 1.6.0 */ -#ifdef PNG_GAMMA_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_colorspace_set_gamma,(png_const_structrp png_ptr, - png_colorspacerp colorspace, png_fixed_point gAMA), PNG_EMPTY); - /* Set the colorspace gamma with a value provided by the application or by - * the gAMA chunk on read. The value will override anything set by an ICC - * profile. - */ - -PNG_INTERNAL_FUNCTION(void,png_colorspace_sync_info,(png_const_structrp png_ptr, - png_inforp info_ptr), PNG_EMPTY); - /* Synchronize the info 'valid' flags with the colorspace */ - -PNG_INTERNAL_FUNCTION(void,png_colorspace_sync,(png_const_structrp png_ptr, - png_inforp info_ptr), PNG_EMPTY); - /* Copy the png_struct colorspace to the info_struct and call the above to - * synchronize the flags. Checks for NULL info_ptr and does nothing. - */ -#endif - -/* Added at libpng version 1.4.0 */ -#ifdef PNG_COLORSPACE_SUPPORTED -/* These internal functions are for maintaining the colorspace structure within - * a png_info or png_struct (or, indeed, both). - */ -PNG_INTERNAL_FUNCTION(int,png_colorspace_set_chromaticities, - (png_const_structrp png_ptr, png_colorspacerp colorspace, const png_xy *xy, - int preferred), PNG_EMPTY); - -PNG_INTERNAL_FUNCTION(int,png_colorspace_set_endpoints, - (png_const_structrp png_ptr, png_colorspacerp colorspace, const png_XYZ *XYZ, - int preferred), PNG_EMPTY); - -#ifdef PNG_sRGB_SUPPORTED -PNG_INTERNAL_FUNCTION(int,png_colorspace_set_sRGB,(png_const_structrp png_ptr, - png_colorspacerp colorspace, int intent), PNG_EMPTY); - /* This does set the colorspace gAMA and cHRM values too, but doesn't set the - * flags to write them, if it returns false there was a problem and an error - * message has already been output (but the colorspace may still need to be - * synced to record the invalid flag). - */ -#endif /* sRGB */ - -#ifdef PNG_iCCP_SUPPORTED -PNG_INTERNAL_FUNCTION(int,png_colorspace_set_ICC,(png_const_structrp png_ptr, - png_colorspacerp colorspace, png_const_charp name, - png_uint_32 profile_length, png_const_bytep profile, int color_type), - PNG_EMPTY); - /* The 'name' is used for information only */ - -/* Routines for checking parts of an ICC profile. */ -PNG_INTERNAL_FUNCTION(int,png_icc_check_length,(png_const_structrp png_ptr, - png_colorspacerp colorspace, png_const_charp name, - png_uint_32 profile_length), PNG_EMPTY); -PNG_INTERNAL_FUNCTION(int,png_icc_check_header,(png_const_structrp png_ptr, - png_colorspacerp colorspace, png_const_charp name, - png_uint_32 profile_length, - png_const_bytep profile /* first 132 bytes only */, int color_type), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(int,png_icc_check_tag_table,(png_const_structrp png_ptr, - png_colorspacerp colorspace, png_const_charp name, - png_uint_32 profile_length, - png_const_bytep profile /* header plus whole tag table */), PNG_EMPTY); -#ifdef PNG_sRGB_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_icc_set_sRGB,( - png_const_structrp png_ptr, png_colorspacerp colorspace, - png_const_bytep profile, uLong adler), PNG_EMPTY); - /* 'adler' is the Adler32 checksum of the uncompressed profile data. It may - * be zero to indicate that it is not available. It is used, if provided, - * as a fast check on the profile when checking to see if it is sRGB. - */ -#endif -#endif /* iCCP */ - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_colorspace_set_rgb_coefficients, - (png_structrp png_ptr), PNG_EMPTY); - /* Set the rgb_to_gray coefficients from the colorspace Y values */ -#endif /* READ_RGB_TO_GRAY */ -#endif /* COLORSPACE */ - -/* Added at libpng version 1.4.0 */ -PNG_INTERNAL_FUNCTION(void,png_check_IHDR,(png_const_structrp png_ptr, - png_uint_32 width, png_uint_32 height, int bit_depth, - int color_type, int interlace_type, int compression_type, - int filter_type),PNG_EMPTY); - -/* Added at libpng version 1.5.10 */ -#if defined(PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED) || \ - defined(PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED) -PNG_INTERNAL_FUNCTION(void,png_do_check_palette_indexes, - (png_structrp png_ptr, png_row_infop row_info),PNG_EMPTY); -#endif - -#if defined(PNG_FLOATING_POINT_SUPPORTED) && defined(PNG_ERROR_TEXT_SUPPORTED) -PNG_INTERNAL_FUNCTION(void,png_fixed_error,(png_const_structrp png_ptr, - png_const_charp name),PNG_NORETURN); -#endif - -/* Puts 'string' into 'buffer' at buffer[pos], taking care never to overwrite - * the end. Always leaves the buffer nul terminated. Never errors out (and - * there is no error code.) - */ -PNG_INTERNAL_FUNCTION(size_t,png_safecat,(png_charp buffer, size_t bufsize, - size_t pos, png_const_charp string),PNG_EMPTY); - -/* Various internal functions to handle formatted warning messages, currently - * only implemented for warnings. - */ -#if defined(PNG_WARNINGS_SUPPORTED) || defined(PNG_TIME_RFC1123_SUPPORTED) -/* Utility to dump an unsigned value into a buffer, given a start pointer and - * and end pointer (which should point just *beyond* the end of the buffer!) - * Returns the pointer to the start of the formatted string. This utility only - * does unsigned values. - */ -PNG_INTERNAL_FUNCTION(png_charp,png_format_number,(png_const_charp start, - png_charp end, int format, png_alloc_size_t number),PNG_EMPTY); - -/* Convenience macro that takes an array: */ -#define PNG_FORMAT_NUMBER(buffer,format,number) \ - png_format_number(buffer, buffer + (sizeof buffer), format, number) - -/* Suggested size for a number buffer (enough for 64 bits and a sign!) */ -#define PNG_NUMBER_BUFFER_SIZE 24 - -/* These are the integer formats currently supported, the name is formed from - * the standard printf(3) format string. - */ -#define PNG_NUMBER_FORMAT_u 1 /* chose unsigned API! */ -#define PNG_NUMBER_FORMAT_02u 2 -#define PNG_NUMBER_FORMAT_d 1 /* chose signed API! */ -#define PNG_NUMBER_FORMAT_02d 2 -#define PNG_NUMBER_FORMAT_x 3 -#define PNG_NUMBER_FORMAT_02x 4 -#define PNG_NUMBER_FORMAT_fixed 5 /* choose the signed API */ -#endif - -#ifdef PNG_WARNINGS_SUPPORTED -/* New defines and members adding in libpng-1.5.4 */ -# define PNG_WARNING_PARAMETER_SIZE 32 -# define PNG_WARNING_PARAMETER_COUNT 8 /* Maximum 9; see pngerror.c */ - -/* An l-value of this type has to be passed to the APIs below to cache the - * values of the parameters to a formatted warning message. - */ -typedef char png_warning_parameters[PNG_WARNING_PARAMETER_COUNT][ - PNG_WARNING_PARAMETER_SIZE]; - -PNG_INTERNAL_FUNCTION(void,png_warning_parameter,(png_warning_parameters p, - int number, png_const_charp string),PNG_EMPTY); - /* Parameters are limited in size to PNG_WARNING_PARAMETER_SIZE characters, - * including the trailing '\0'. - */ -PNG_INTERNAL_FUNCTION(void,png_warning_parameter_unsigned, - (png_warning_parameters p, int number, int format, png_alloc_size_t value), - PNG_EMPTY); - /* Use png_alloc_size_t because it is an unsigned type as big as any we - * need to output. Use the following for a signed value. - */ -PNG_INTERNAL_FUNCTION(void,png_warning_parameter_signed, - (png_warning_parameters p, int number, int format, png_int_32 value), - PNG_EMPTY); - -PNG_INTERNAL_FUNCTION(void,png_formatted_warning,(png_const_structrp png_ptr, - png_warning_parameters p, png_const_charp message),PNG_EMPTY); - /* 'message' follows the X/Open approach of using @1, @2 to insert - * parameters previously supplied using the above functions. Errors in - * specifying the parameters will simply result in garbage substitutions. - */ -#endif - -#ifdef PNG_BENIGN_ERRORS_SUPPORTED -/* Application errors (new in 1.6); use these functions (declared below) for - * errors in the parameters or order of API function calls on read. The - * 'warning' should be used for an error that can be handled completely; the - * 'error' for one which can be handled safely but which may lose application - * information or settings. - * - * By default these both result in a png_error call prior to release, while in a - * released version the 'warning' is just a warning. However if the application - * explicitly disables benign errors (explicitly permitting the code to lose - * information) they both turn into warnings. - * - * If benign errors aren't supported they end up as the corresponding base call - * (png_warning or png_error.) - */ -PNG_INTERNAL_FUNCTION(void,png_app_warning,(png_const_structrp png_ptr, - png_const_charp message),PNG_EMPTY); - /* The application provided invalid parameters to an API function or called - * an API function at the wrong time, libpng can completely recover. - */ - -PNG_INTERNAL_FUNCTION(void,png_app_error,(png_const_structrp png_ptr, - png_const_charp message),PNG_EMPTY); - /* As above but libpng will ignore the call, or attempt some other partial - * recovery from the error. - */ -#else -# define png_app_warning(pp,s) png_warning(pp,s) -# define png_app_error(pp,s) png_error(pp,s) -#endif - -PNG_INTERNAL_FUNCTION(void,png_chunk_report,(png_const_structrp png_ptr, - png_const_charp message, int error),PNG_EMPTY); - /* Report a recoverable issue in chunk data. On read this is used to report - * a problem found while reading a particular chunk and the - * png_chunk_benign_error or png_chunk_warning function is used as - * appropriate. On write this is used to report an error that comes from - * data set via an application call to a png_set_ API and png_app_error or - * png_app_warning is used as appropriate. - * - * The 'error' parameter must have one of the following values: - */ -#define PNG_CHUNK_WARNING 0 /* never an error */ -#define PNG_CHUNK_WRITE_ERROR 1 /* an error only on write */ -#define PNG_CHUNK_ERROR 2 /* always an error */ - -/* ASCII to FP interfaces, currently only implemented if sCAL - * support is required. - */ -#if defined(PNG_sCAL_SUPPORTED) -/* MAX_DIGITS is actually the maximum number of characters in an sCAL - * width or height, derived from the precision (number of significant - * digits - a build time settable option) and assumptions about the - * maximum ridiculous exponent. - */ -#define PNG_sCAL_MAX_DIGITS (PNG_sCAL_PRECISION+1/*.*/+1/*E*/+10/*exponent*/) - -#ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_ascii_from_fp,(png_const_structrp png_ptr, - png_charp ascii, png_size_t size, double fp, unsigned int precision), - PNG_EMPTY); -#endif /* FLOATING_POINT */ - -#ifdef PNG_FIXED_POINT_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_ascii_from_fixed,(png_const_structrp png_ptr, - png_charp ascii, png_size_t size, png_fixed_point fp),PNG_EMPTY); -#endif /* FIXED_POINT */ -#endif /* sCAL */ - -#if defined(PNG_sCAL_SUPPORTED) || defined(PNG_pCAL_SUPPORTED) -/* An internal API to validate the format of a floating point number. - * The result is the index of the next character. If the number is - * not valid it will be the index of a character in the supposed number. - * - * The format of a number is defined in the PNG extensions specification - * and this API is strictly conformant to that spec, not anyone elses! - * - * The format as a regular expression is: - * - * [+-]?[0-9]+.?([Ee][+-]?[0-9]+)? - * - * or: - * - * [+-]?.[0-9]+(.[0-9]+)?([Ee][+-]?[0-9]+)? - * - * The complexity is that either integer or fraction must be present and the - * fraction is permitted to have no digits only if the integer is present. - * - * NOTE: The dangling E problem. - * There is a PNG valid floating point number in the following: - * - * PNG floating point numbers are not greedy. - * - * Working this out requires *TWO* character lookahead (because of the - * sign), the parser does not do this - it will fail at the 'r' - this - * doesn't matter for PNG sCAL chunk values, but it requires more care - * if the value were ever to be embedded in something more complex. Use - * ANSI-C strtod if you need the lookahead. - */ -/* State table for the parser. */ -#define PNG_FP_INTEGER 0 /* before or in integer */ -#define PNG_FP_FRACTION 1 /* before or in fraction */ -#define PNG_FP_EXPONENT 2 /* before or in exponent */ -#define PNG_FP_STATE 3 /* mask for the above */ -#define PNG_FP_SAW_SIGN 4 /* Saw +/- in current state */ -#define PNG_FP_SAW_DIGIT 8 /* Saw a digit in current state */ -#define PNG_FP_SAW_DOT 16 /* Saw a dot in current state */ -#define PNG_FP_SAW_E 32 /* Saw an E (or e) in current state */ -#define PNG_FP_SAW_ANY 60 /* Saw any of the above 4 */ - -/* These three values don't affect the parser. They are set but not used. - */ -#define PNG_FP_WAS_VALID 64 /* Preceding substring is a valid fp number */ -#define PNG_FP_NEGATIVE 128 /* A negative number, including "-0" */ -#define PNG_FP_NONZERO 256 /* A non-zero value */ -#define PNG_FP_STICKY 448 /* The above three flags */ - -/* This is available for the caller to store in 'state' if required. Do not - * call the parser after setting it (the parser sometimes clears it.) - */ -#define PNG_FP_INVALID 512 /* Available for callers as a distinct value */ - -/* Result codes for the parser (boolean - true meants ok, false means - * not ok yet.) - */ -#define PNG_FP_MAYBE 0 /* The number may be valid in the future */ -#define PNG_FP_OK 1 /* The number is valid */ - -/* Tests on the sticky non-zero and negative flags. To pass these checks - * the state must also indicate that the whole number is valid - this is - * achieved by testing PNG_FP_SAW_DIGIT (see the implementation for why this - * is equivalent to PNG_FP_OK above.) - */ -#define PNG_FP_NZ_MASK (PNG_FP_SAW_DIGIT | PNG_FP_NEGATIVE | PNG_FP_NONZERO) - /* NZ_MASK: the string is valid and a non-zero negative value */ -#define PNG_FP_Z_MASK (PNG_FP_SAW_DIGIT | PNG_FP_NONZERO) - /* Z MASK: the string is valid and a non-zero value. */ - /* PNG_FP_SAW_DIGIT: the string is valid. */ -#define PNG_FP_IS_ZERO(state) (((state) & PNG_FP_Z_MASK) == PNG_FP_SAW_DIGIT) -#define PNG_FP_IS_POSITIVE(state) (((state) & PNG_FP_NZ_MASK) == PNG_FP_Z_MASK) -#define PNG_FP_IS_NEGATIVE(state) (((state) & PNG_FP_NZ_MASK) == PNG_FP_NZ_MASK) - -/* The actual parser. This can be called repeatedly. It updates - * the index into the string and the state variable (which must - * be initialized to 0). It returns a result code, as above. There - * is no point calling the parser any more if it fails to advance to - * the end of the string - it is stuck on an invalid character (or - * terminated by '\0'). - * - * Note that the pointer will consume an E or even an E+ and then leave - * a 'maybe' state even though a preceding integer.fraction is valid. - * The PNG_FP_WAS_VALID flag indicates that a preceding substring was - * a valid number. It's possible to recover from this by calling - * the parser again (from the start, with state 0) but with a string - * that omits the last character (i.e. set the size to the index of - * the problem character.) This has not been tested within libpng. - */ -PNG_INTERNAL_FUNCTION(int,png_check_fp_number,(png_const_charp string, - png_size_t size, int *statep, png_size_tp whereami),PNG_EMPTY); - -/* This is the same but it checks a complete string and returns true - * only if it just contains a floating point number. As of 1.5.4 this - * function also returns the state at the end of parsing the number if - * it was valid (otherwise it returns 0.) This can be used for testing - * for negative or zero values using the sticky flag. - */ -PNG_INTERNAL_FUNCTION(int,png_check_fp_string,(png_const_charp string, - png_size_t size),PNG_EMPTY); -#endif /* pCAL || sCAL */ - -#if defined(PNG_GAMMA_SUPPORTED) ||\ - defined(PNG_INCH_CONVERSIONS_SUPPORTED) || defined(PNG_READ_pHYs_SUPPORTED) -/* Added at libpng version 1.5.0 */ -/* This is a utility to provide a*times/div (rounded) and indicate - * if there is an overflow. The result is a boolean - false (0) - * for overflow, true (1) if no overflow, in which case *res - * holds the result. - */ -PNG_INTERNAL_FUNCTION(int,png_muldiv,(png_fixed_point_p res, png_fixed_point a, - png_int_32 multiplied_by, png_int_32 divided_by),PNG_EMPTY); -#endif - -#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_INCH_CONVERSIONS_SUPPORTED) -/* Same deal, but issue a warning on overflow and return 0. */ -PNG_INTERNAL_FUNCTION(png_fixed_point,png_muldiv_warn, - (png_const_structrp png_ptr, png_fixed_point a, png_int_32 multiplied_by, - png_int_32 divided_by),PNG_EMPTY); -#endif - -#ifdef PNG_GAMMA_SUPPORTED -/* Calculate a reciprocal - used for gamma values. This returns - * 0 if the argument is 0 in order to maintain an undefined value; - * there are no warnings. - */ -PNG_INTERNAL_FUNCTION(png_fixed_point,png_reciprocal,(png_fixed_point a), - PNG_EMPTY); - -#ifdef PNG_READ_GAMMA_SUPPORTED -/* The same but gives a reciprocal of the product of two fixed point - * values. Accuracy is suitable for gamma calculations but this is - * not exact - use png_muldiv for that. Only required at present on read. - */ -PNG_INTERNAL_FUNCTION(png_fixed_point,png_reciprocal2,(png_fixed_point a, - png_fixed_point b),PNG_EMPTY); -#endif - -/* Return true if the gamma value is significantly different from 1.0 */ -PNG_INTERNAL_FUNCTION(int,png_gamma_significant,(png_fixed_point gamma_value), - PNG_EMPTY); -#endif - -#ifdef PNG_READ_GAMMA_SUPPORTED -/* Internal fixed point gamma correction. These APIs are called as - * required to convert single values - they don't need to be fast, - * they are not used when processing image pixel values. - * - * While the input is an 'unsigned' value it must actually be the - * correct bit value - 0..255 or 0..65535 as required. - */ -PNG_INTERNAL_FUNCTION(png_uint_16,png_gamma_correct,(png_structrp png_ptr, - unsigned int value, png_fixed_point gamma_value),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(png_uint_16,png_gamma_16bit_correct,(unsigned int value, - png_fixed_point gamma_value),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(png_byte,png_gamma_8bit_correct,(unsigned int value, - png_fixed_point gamma_value),PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_destroy_gamma_table,(png_structrp png_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void,png_build_gamma_table,(png_structrp png_ptr, - int bit_depth),PNG_EMPTY); -#endif - -/* SIMPLIFIED READ/WRITE SUPPORT */ -#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) ||\ - defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) -/* The internal structure that png_image::opaque points to. */ -typedef struct png_control -{ - png_structp png_ptr; - png_infop info_ptr; - png_voidp error_buf; /* Always a jmp_buf at present. */ - - png_const_bytep memory; /* Memory buffer. */ - png_size_t size; /* Size of the memory buffer. */ - - unsigned int for_write :1; /* Otherwise it is a read structure */ - unsigned int owned_file :1; /* We own the file in io_ptr */ -} png_control; - -/* Return the pointer to the jmp_buf from a png_control: necessary because C - * does not reveal the type of the elements of jmp_buf. - */ -#ifdef __cplusplus -# define png_control_jmp_buf(pc) (((jmp_buf*)((pc)->error_buf))[0]) -#else -# define png_control_jmp_buf(pc) ((pc)->error_buf) -#endif - -/* Utility to safely execute a piece of libpng code catching and logging any - * errors that might occur. Returns true on success, false on failure (either - * of the function or as a result of a png_error.) - */ -PNG_INTERNAL_FUNCTION(void,png_safe_error,(png_structp png_ptr, - png_const_charp error_message),PNG_NORETURN); - -#ifdef PNG_WARNINGS_SUPPORTED -PNG_INTERNAL_FUNCTION(void,png_safe_warning,(png_structp png_ptr, - png_const_charp warning_message),PNG_EMPTY); -#else -# define png_safe_warning 0/*dummy argument*/ -#endif - -PNG_INTERNAL_FUNCTION(int,png_safe_execute,(png_imagep image, - int (*function)(png_voidp), png_voidp arg),PNG_EMPTY); - -/* Utility to log an error; this also cleans up the png_image; the function - * always returns 0 (false). - */ -PNG_INTERNAL_FUNCTION(int,png_image_error,(png_imagep image, - png_const_charp error_message),PNG_EMPTY); - -#ifndef PNG_SIMPLIFIED_READ_SUPPORTED -/* png_image_free is used by the write code but not exported */ -PNG_INTERNAL_FUNCTION(void, png_image_free, (png_imagep image), PNG_EMPTY); -#endif /* !SIMPLIFIED_READ */ - -#endif /* SIMPLIFIED READ/WRITE */ - -/* These are initialization functions for hardware specific PNG filter - * optimizations; list these here then select the appropriate one at compile - * time using the macro PNG_FILTER_OPTIMIZATIONS. If the macro is not defined - * the generic code is used. - */ -#ifdef PNG_FILTER_OPTIMIZATIONS -PNG_INTERNAL_FUNCTION(void, PNG_FILTER_OPTIMIZATIONS, (png_structp png_ptr, - unsigned int bpp), PNG_EMPTY); - /* Just declare the optimization that will be used */ -#else - /* List *all* the possible optimizations here - this branch is required if - * the builder of libpng passes the definition of PNG_FILTER_OPTIMIZATIONS in - * CFLAGS in place of CPPFLAGS *and* uses symbol prefixing. - */ -PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_neon, - (png_structp png_ptr, unsigned int bpp), PNG_EMPTY); -#endif - -/* Maintainer: Put new private prototypes here ^ */ - -#include "pngdebug.h" - -#ifdef __cplusplus -} -#endif - -#endif /* PNG_VERSION_INFO_ONLY */ -#endif /* PNGPRIV_H */ diff --git a/io2d/src/3rd-party/libpng/pngread.c b/io2d/src/3rd-party/libpng/pngread.c deleted file mode 100644 index 21a339d..0000000 --- a/io2d/src/3rd-party/libpng/pngread.c +++ /dev/null @@ -1,4010 +0,0 @@ - -/* pngread.c - read a PNG file - * - * Last changed in libpng 1.6.8 [(PENDING RELEASE)] - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * This file contains routines that an application calls directly to - * read a PNG file or stream. - */ - -#include "pngpriv.h" -#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) && defined(PNG_STDIO_SUPPORTED) -# include -#endif - -#ifdef PNG_READ_SUPPORTED - -/* Create a PNG structure for reading, and allocate any memory needed. */ -PNG_FUNCTION(png_structp,PNGAPI -png_create_read_struct,(png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn),PNG_ALLOCATED) -{ -#ifndef PNG_USER_MEM_SUPPORTED - png_structp png_ptr = png_create_png_struct(user_png_ver, error_ptr, - error_fn, warn_fn, NULL, NULL, NULL); -#else - return png_create_read_struct_2(user_png_ver, error_ptr, error_fn, - warn_fn, NULL, NULL, NULL); -} - -/* Alternate create PNG structure for reading, and allocate any memory - * needed. - */ -PNG_FUNCTION(png_structp,PNGAPI -png_create_read_struct_2,(png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, - png_malloc_ptr malloc_fn, png_free_ptr free_fn),PNG_ALLOCATED) -{ - png_structp png_ptr = png_create_png_struct(user_png_ver, error_ptr, - error_fn, warn_fn, mem_ptr, malloc_fn, free_fn); -#endif /* PNG_USER_MEM_SUPPORTED */ - - if (png_ptr != NULL) - { - png_ptr->mode = PNG_IS_READ_STRUCT; - - /* Added in libpng-1.6.0; this can be used to detect a read structure if - * required (it will be zero in a write structure.) - */ -# ifdef PNG_SEQUENTIAL_READ_SUPPORTED - png_ptr->IDAT_read_size = PNG_IDAT_READ_SIZE; -# endif - -# ifdef PNG_BENIGN_READ_ERRORS_SUPPORTED - png_ptr->flags |= PNG_FLAG_BENIGN_ERRORS_WARN; - - /* In stable builds only warn if an application error can be completely - * handled. - */ -# if PNG_LIBPNG_BUILD_BASE_TYPE >= PNG_LIBPNG_BUILD_RC - png_ptr->flags |= PNG_FLAG_APP_WARNINGS_WARN; -# endif -# endif - - /* TODO: delay this, it can be done in png_init_io (if the app doesn't - * do it itself) avoiding setting the default function if it is not - * required. - */ - png_set_read_fn(png_ptr, NULL, NULL); - } - - return png_ptr; -} - - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read the information before the actual image data. This has been - * changed in v0.90 to allow reading a file that already has the magic - * bytes read from the stream. You can tell libpng how many bytes have - * been read from the beginning of the stream (up to the maximum of 8) - * via png_set_sig_bytes(), and we will only check the remaining bytes - * here. The application can then have access to the signature bytes we - * read if it is determined that this isn't a valid PNG file. - */ -void PNGAPI -png_read_info(png_structrp png_ptr, png_inforp info_ptr) -{ -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - int keep; -#endif - - png_debug(1, "in png_read_info"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - /* Read and check the PNG file signature. */ - png_read_sig(png_ptr, info_ptr); - - for (;;) - { - png_uint_32 length = png_read_chunk_header(png_ptr); - png_uint_32 chunk_name = png_ptr->chunk_name; - - /* IDAT logic needs to happen here to simplify getting the two flags - * right. - */ - if (chunk_name == png_IDAT) - { - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "Missing IHDR before IDAT"); - - else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && - !(png_ptr->mode & PNG_HAVE_PLTE)) - png_chunk_error(png_ptr, "Missing PLTE before IDAT"); - - else if (png_ptr->mode & PNG_AFTER_IDAT) - png_chunk_benign_error(png_ptr, "Too many IDATs found"); - - png_ptr->mode |= PNG_HAVE_IDAT; - } - - else if (png_ptr->mode & PNG_HAVE_IDAT) - png_ptr->mode |= PNG_AFTER_IDAT; - - /* This should be a binary subdivision search or a hash for - * matching the chunk name rather than a linear search. - */ - if (chunk_name == png_IHDR) - png_handle_IHDR(png_ptr, info_ptr, length); - - else if (chunk_name == png_IEND) - png_handle_IEND(png_ptr, info_ptr, length); - -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - else if ((keep = png_chunk_unknown_handling(png_ptr, chunk_name)) != 0) - { - png_handle_unknown(png_ptr, info_ptr, length, keep); - - if (chunk_name == png_PLTE) - png_ptr->mode |= PNG_HAVE_PLTE; - - else if (chunk_name == png_IDAT) - { - png_ptr->idat_size = 0; /* It has been consumed */ - break; - } - } -#endif - else if (chunk_name == png_PLTE) - png_handle_PLTE(png_ptr, info_ptr, length); - - else if (chunk_name == png_IDAT) - { - png_ptr->idat_size = length; - break; - } - -#ifdef PNG_READ_bKGD_SUPPORTED - else if (chunk_name == png_bKGD) - png_handle_bKGD(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_cHRM_SUPPORTED - else if (chunk_name == png_cHRM) - png_handle_cHRM(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_gAMA_SUPPORTED - else if (chunk_name == png_gAMA) - png_handle_gAMA(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_hIST_SUPPORTED - else if (chunk_name == png_hIST) - png_handle_hIST(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_oFFs_SUPPORTED - else if (chunk_name == png_oFFs) - png_handle_oFFs(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_pCAL_SUPPORTED - else if (chunk_name == png_pCAL) - png_handle_pCAL(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_sCAL_SUPPORTED - else if (chunk_name == png_sCAL) - png_handle_sCAL(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_pHYs_SUPPORTED - else if (chunk_name == png_pHYs) - png_handle_pHYs(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_sBIT_SUPPORTED - else if (chunk_name == png_sBIT) - png_handle_sBIT(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_sRGB_SUPPORTED - else if (chunk_name == png_sRGB) - png_handle_sRGB(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_iCCP_SUPPORTED - else if (chunk_name == png_iCCP) - png_handle_iCCP(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_sPLT_SUPPORTED - else if (chunk_name == png_sPLT) - png_handle_sPLT(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_tEXt_SUPPORTED - else if (chunk_name == png_tEXt) - png_handle_tEXt(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_tIME_SUPPORTED - else if (chunk_name == png_tIME) - png_handle_tIME(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_tRNS_SUPPORTED - else if (chunk_name == png_tRNS) - png_handle_tRNS(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_zTXt_SUPPORTED - else if (chunk_name == png_zTXt) - png_handle_zTXt(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_iTXt_SUPPORTED - else if (chunk_name == png_iTXt) - png_handle_iTXt(png_ptr, info_ptr, length); -#endif - - else - png_handle_unknown(png_ptr, info_ptr, length, - PNG_HANDLE_CHUNK_AS_DEFAULT); - } -} -#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */ - -/* Optional call to update the users info_ptr structure */ -void PNGAPI -png_read_update_info(png_structrp png_ptr, png_inforp info_ptr) -{ - png_debug(1, "in png_read_update_info"); - - if (png_ptr != NULL) - { - if ((png_ptr->flags & PNG_FLAG_ROW_INIT) == 0) - { - png_read_start_row(png_ptr); - -# ifdef PNG_READ_TRANSFORMS_SUPPORTED - png_read_transform_info(png_ptr, info_ptr); -# else - PNG_UNUSED(info_ptr) -# endif - } - - /* New in 1.6.0 this avoids the bug of doing the initializations twice */ - else - png_app_error(png_ptr, - "png_read_update_info/png_start_read_image: duplicate call"); - } -} - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Initialize palette, background, etc, after transformations - * are set, but before any reading takes place. This allows - * the user to obtain a gamma-corrected palette, for example. - * If the user doesn't call this, we will do it ourselves. - */ -void PNGAPI -png_start_read_image(png_structrp png_ptr) -{ - png_debug(1, "in png_start_read_image"); - - if (png_ptr != NULL) - { - if ((png_ptr->flags & PNG_FLAG_ROW_INIT) == 0) - png_read_start_row(png_ptr); - - /* New in 1.6.0 this avoids the bug of doing the initializations twice */ - else - png_app_error(png_ptr, - "png_start_read_image/png_read_update_info: duplicate call"); - } -} -#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */ - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -void PNGAPI -png_read_row(png_structrp png_ptr, png_bytep row, png_bytep dsp_row) -{ - png_row_info row_info; - - if (png_ptr == NULL) - return; - - png_debug2(1, "in png_read_row (row %lu, pass %d)", - (unsigned long)png_ptr->row_number, png_ptr->pass); - - /* png_read_start_row sets the information (in particular iwidth) for this - * interlace pass. - */ - if (!(png_ptr->flags & PNG_FLAG_ROW_INIT)) - png_read_start_row(png_ptr); - - /* 1.5.6: row_info moved out of png_struct to a local here. */ - row_info.width = png_ptr->iwidth; /* NOTE: width of current interlaced row */ - row_info.color_type = png_ptr->color_type; - row_info.bit_depth = png_ptr->bit_depth; - row_info.channels = png_ptr->channels; - row_info.pixel_depth = png_ptr->pixel_depth; - row_info.rowbytes = PNG_ROWBYTES(row_info.pixel_depth, row_info.width); - - if (png_ptr->row_number == 0 && png_ptr->pass == 0) - { - /* Check for transforms that have been set but were defined out */ -#if defined(PNG_WRITE_INVERT_SUPPORTED) && !defined(PNG_READ_INVERT_SUPPORTED) - if (png_ptr->transformations & PNG_INVERT_MONO) - png_warning(png_ptr, "PNG_READ_INVERT_SUPPORTED is not defined"); -#endif - -#if defined(PNG_WRITE_FILLER_SUPPORTED) && !defined(PNG_READ_FILLER_SUPPORTED) - if (png_ptr->transformations & PNG_FILLER) - png_warning(png_ptr, "PNG_READ_FILLER_SUPPORTED is not defined"); -#endif - -#if defined(PNG_WRITE_PACKSWAP_SUPPORTED) && \ - !defined(PNG_READ_PACKSWAP_SUPPORTED) - if (png_ptr->transformations & PNG_PACKSWAP) - png_warning(png_ptr, "PNG_READ_PACKSWAP_SUPPORTED is not defined"); -#endif - -#if defined(PNG_WRITE_PACK_SUPPORTED) && !defined(PNG_READ_PACK_SUPPORTED) - if (png_ptr->transformations & PNG_PACK) - png_warning(png_ptr, "PNG_READ_PACK_SUPPORTED is not defined"); -#endif - -#if defined(PNG_WRITE_SHIFT_SUPPORTED) && !defined(PNG_READ_SHIFT_SUPPORTED) - if (png_ptr->transformations & PNG_SHIFT) - png_warning(png_ptr, "PNG_READ_SHIFT_SUPPORTED is not defined"); -#endif - -#if defined(PNG_WRITE_BGR_SUPPORTED) && !defined(PNG_READ_BGR_SUPPORTED) - if (png_ptr->transformations & PNG_BGR) - png_warning(png_ptr, "PNG_READ_BGR_SUPPORTED is not defined"); -#endif - -#if defined(PNG_WRITE_SWAP_SUPPORTED) && !defined(PNG_READ_SWAP_SUPPORTED) - if (png_ptr->transformations & PNG_SWAP_BYTES) - png_warning(png_ptr, "PNG_READ_SWAP_SUPPORTED is not defined"); -#endif - } - -#ifdef PNG_READ_INTERLACING_SUPPORTED - /* If interlaced and we do not need a new row, combine row and return. - * Notice that the pixels we have from previous rows have been transformed - * already; we can only combine like with like (transformed or - * untransformed) and, because of the libpng API for interlaced images, this - * means we must transform before de-interlacing. - */ - if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE)) - { - switch (png_ptr->pass) - { - case 0: - if (png_ptr->row_number & 0x07) - { - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, 1/*display*/); - png_read_finish_row(png_ptr); - return; - } - break; - - case 1: - if ((png_ptr->row_number & 0x07) || png_ptr->width < 5) - { - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, 1/*display*/); - - png_read_finish_row(png_ptr); - return; - } - break; - - case 2: - if ((png_ptr->row_number & 0x07) != 4) - { - if (dsp_row != NULL && (png_ptr->row_number & 4)) - png_combine_row(png_ptr, dsp_row, 1/*display*/); - - png_read_finish_row(png_ptr); - return; - } - break; - - case 3: - if ((png_ptr->row_number & 3) || png_ptr->width < 3) - { - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, 1/*display*/); - - png_read_finish_row(png_ptr); - return; - } - break; - - case 4: - if ((png_ptr->row_number & 3) != 2) - { - if (dsp_row != NULL && (png_ptr->row_number & 2)) - png_combine_row(png_ptr, dsp_row, 1/*display*/); - - png_read_finish_row(png_ptr); - return; - } - break; - - case 5: - if ((png_ptr->row_number & 1) || png_ptr->width < 2) - { - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, 1/*display*/); - - png_read_finish_row(png_ptr); - return; - } - break; - - default: - case 6: - if (!(png_ptr->row_number & 1)) - { - png_read_finish_row(png_ptr); - return; - } - break; - } - } -#endif - - if (!(png_ptr->mode & PNG_HAVE_IDAT)) - png_error(png_ptr, "Invalid attempt to read row data"); - - /* Fill the row with IDAT data: */ - png_read_IDAT_data(png_ptr, png_ptr->row_buf, row_info.rowbytes + 1); - - if (png_ptr->row_buf[0] > PNG_FILTER_VALUE_NONE) - { - if (png_ptr->row_buf[0] < PNG_FILTER_VALUE_LAST) - png_read_filter_row(png_ptr, &row_info, png_ptr->row_buf + 1, - png_ptr->prev_row + 1, png_ptr->row_buf[0]); - else - png_error(png_ptr, "bad adaptive filter value"); - } - - /* libpng 1.5.6: the following line was copying png_ptr->rowbytes before - * 1.5.6, while the buffer really is this big in current versions of libpng - * it may not be in the future, so this was changed just to copy the - * interlaced count: - */ - memcpy(png_ptr->prev_row, png_ptr->row_buf, row_info.rowbytes + 1); - -#ifdef PNG_MNG_FEATURES_SUPPORTED - if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) && - (png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING)) - { - /* Intrapixel differencing */ - png_do_read_intrapixel(&row_info, png_ptr->row_buf + 1); - } -#endif - - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED - if (png_ptr->transformations) - png_do_read_transformations(png_ptr, &row_info); -#endif - - /* The transformed pixel depth should match the depth now in row_info. */ - if (png_ptr->transformed_pixel_depth == 0) - { - png_ptr->transformed_pixel_depth = row_info.pixel_depth; - if (row_info.pixel_depth > png_ptr->maximum_pixel_depth) - png_error(png_ptr, "sequential row overflow"); - } - - else if (png_ptr->transformed_pixel_depth != row_info.pixel_depth) - png_error(png_ptr, "internal sequential row size calculation error"); - -#ifdef PNG_READ_INTERLACING_SUPPORTED - /* Blow up interlaced rows to full size */ - if (png_ptr->interlaced && - (png_ptr->transformations & PNG_INTERLACE)) - { - if (png_ptr->pass < 6) - png_do_read_interlace(&row_info, png_ptr->row_buf + 1, png_ptr->pass, - png_ptr->transformations); - - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, 1/*display*/); - - if (row != NULL) - png_combine_row(png_ptr, row, 0/*row*/); - } - - else -#endif - { - if (row != NULL) - png_combine_row(png_ptr, row, -1/*ignored*/); - - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, -1/*ignored*/); - } - png_read_finish_row(png_ptr); - - if (png_ptr->read_row_fn != NULL) - (*(png_ptr->read_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass); - -} -#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */ - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read one or more rows of image data. If the image is interlaced, - * and png_set_interlace_handling() has been called, the rows need to - * contain the contents of the rows from the previous pass. If the - * image has alpha or transparency, and png_handle_alpha()[*] has been - * called, the rows contents must be initialized to the contents of the - * screen. - * - * "row" holds the actual image, and pixels are placed in it - * as they arrive. If the image is displayed after each pass, it will - * appear to "sparkle" in. "display_row" can be used to display a - * "chunky" progressive image, with finer detail added as it becomes - * available. If you do not want this "chunky" display, you may pass - * NULL for display_row. If you do not want the sparkle display, and - * you have not called png_handle_alpha(), you may pass NULL for rows. - * If you have called png_handle_alpha(), and the image has either an - * alpha channel or a transparency chunk, you must provide a buffer for - * rows. In this case, you do not have to provide a display_row buffer - * also, but you may. If the image is not interlaced, or if you have - * not called png_set_interlace_handling(), the display_row buffer will - * be ignored, so pass NULL to it. - * - * [*] png_handle_alpha() does not exist yet, as of this version of libpng - */ - -void PNGAPI -png_read_rows(png_structrp png_ptr, png_bytepp row, - png_bytepp display_row, png_uint_32 num_rows) -{ - png_uint_32 i; - png_bytepp rp; - png_bytepp dp; - - png_debug(1, "in png_read_rows"); - - if (png_ptr == NULL) - return; - - rp = row; - dp = display_row; - if (rp != NULL && dp != NULL) - for (i = 0; i < num_rows; i++) - { - png_bytep rptr = *rp++; - png_bytep dptr = *dp++; - - png_read_row(png_ptr, rptr, dptr); - } - - else if (rp != NULL) - for (i = 0; i < num_rows; i++) - { - png_bytep rptr = *rp; - png_read_row(png_ptr, rptr, NULL); - rp++; - } - - else if (dp != NULL) - for (i = 0; i < num_rows; i++) - { - png_bytep dptr = *dp; - png_read_row(png_ptr, NULL, dptr); - dp++; - } -} -#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */ - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read the entire image. If the image has an alpha channel or a tRNS - * chunk, and you have called png_handle_alpha()[*], you will need to - * initialize the image to the current image that PNG will be overlaying. - * We set the num_rows again here, in case it was incorrectly set in - * png_read_start_row() by a call to png_read_update_info() or - * png_start_read_image() if png_set_interlace_handling() wasn't called - * prior to either of these functions like it should have been. You can - * only call this function once. If you desire to have an image for - * each pass of a interlaced image, use png_read_rows() instead. - * - * [*] png_handle_alpha() does not exist yet, as of this version of libpng - */ -void PNGAPI -png_read_image(png_structrp png_ptr, png_bytepp image) -{ - png_uint_32 i, image_height; - int pass, j; - png_bytepp rp; - - png_debug(1, "in png_read_image"); - - if (png_ptr == NULL) - return; - -#ifdef PNG_READ_INTERLACING_SUPPORTED - if (!(png_ptr->flags & PNG_FLAG_ROW_INIT)) - { - pass = png_set_interlace_handling(png_ptr); - /* And make sure transforms are initialized. */ - png_start_read_image(png_ptr); - } - else - { - if (png_ptr->interlaced && !(png_ptr->transformations & PNG_INTERLACE)) - { - /* Caller called png_start_read_image or png_read_update_info without - * first turning on the PNG_INTERLACE transform. We can fix this here, - * but the caller should do it! - */ - png_warning(png_ptr, "Interlace handling should be turned on when " - "using png_read_image"); - /* Make sure this is set correctly */ - png_ptr->num_rows = png_ptr->height; - } - - /* Obtain the pass number, which also turns on the PNG_INTERLACE flag in - * the above error case. - */ - pass = png_set_interlace_handling(png_ptr); - } -#else - if (png_ptr->interlaced) - png_error(png_ptr, - "Cannot read interlaced image -- interlace handler disabled"); - - pass = 1; -#endif - - image_height=png_ptr->height; - - for (j = 0; j < pass; j++) - { - rp = image; - for (i = 0; i < image_height; i++) - { - png_read_row(png_ptr, *rp, NULL); - rp++; - } - } -} -#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */ - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -/* Read the end of the PNG file. Will not read past the end of the - * file, will verify the end is accurate, and will read any comments - * or time information at the end of the file, if info is not NULL. - */ -void PNGAPI -png_read_end(png_structrp png_ptr, png_inforp info_ptr) -{ -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - int keep; -#endif - - png_debug(1, "in png_read_end"); - - if (png_ptr == NULL) - return; - - /* If png_read_end is called in the middle of reading the rows there may - * still be pending IDAT data and an owned zstream. Deal with this here. - */ -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - if (!png_chunk_unknown_handling(png_ptr, png_IDAT)) -#endif - png_read_finish_IDAT(png_ptr); - -#ifdef PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED - /* Report invalid palette index; added at libng-1.5.10 */ - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && - png_ptr->num_palette_max > png_ptr->num_palette) - png_benign_error(png_ptr, "Read palette index exceeding num_palette"); -#endif - - do - { - png_uint_32 length = png_read_chunk_header(png_ptr); - png_uint_32 chunk_name = png_ptr->chunk_name; - - if (chunk_name == png_IHDR) - png_handle_IHDR(png_ptr, info_ptr, length); - - else if (chunk_name == png_IEND) - png_handle_IEND(png_ptr, info_ptr, length); - -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - else if ((keep = png_chunk_unknown_handling(png_ptr, chunk_name)) != 0) - { - if (chunk_name == png_IDAT) - { - if ((length > 0) || (png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT)) - png_benign_error(png_ptr, "Too many IDATs found"); - } - png_handle_unknown(png_ptr, info_ptr, length, keep); - if (chunk_name == png_PLTE) - png_ptr->mode |= PNG_HAVE_PLTE; - } -#endif - - else if (chunk_name == png_IDAT) - { - /* Zero length IDATs are legal after the last IDAT has been - * read, but not after other chunks have been read. - */ - if ((length > 0) || (png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT)) - png_benign_error(png_ptr, "Too many IDATs found"); - - png_crc_finish(png_ptr, length); - } - else if (chunk_name == png_PLTE) - png_handle_PLTE(png_ptr, info_ptr, length); - -#ifdef PNG_READ_bKGD_SUPPORTED - else if (chunk_name == png_bKGD) - png_handle_bKGD(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_cHRM_SUPPORTED - else if (chunk_name == png_cHRM) - png_handle_cHRM(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_gAMA_SUPPORTED - else if (chunk_name == png_gAMA) - png_handle_gAMA(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_hIST_SUPPORTED - else if (chunk_name == png_hIST) - png_handle_hIST(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_oFFs_SUPPORTED - else if (chunk_name == png_oFFs) - png_handle_oFFs(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_pCAL_SUPPORTED - else if (chunk_name == png_pCAL) - png_handle_pCAL(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_sCAL_SUPPORTED - else if (chunk_name == png_sCAL) - png_handle_sCAL(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_pHYs_SUPPORTED - else if (chunk_name == png_pHYs) - png_handle_pHYs(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_sBIT_SUPPORTED - else if (chunk_name == png_sBIT) - png_handle_sBIT(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_sRGB_SUPPORTED - else if (chunk_name == png_sRGB) - png_handle_sRGB(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_iCCP_SUPPORTED - else if (chunk_name == png_iCCP) - png_handle_iCCP(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_sPLT_SUPPORTED - else if (chunk_name == png_sPLT) - png_handle_sPLT(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_tEXt_SUPPORTED - else if (chunk_name == png_tEXt) - png_handle_tEXt(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_tIME_SUPPORTED - else if (chunk_name == png_tIME) - png_handle_tIME(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_tRNS_SUPPORTED - else if (chunk_name == png_tRNS) - png_handle_tRNS(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_zTXt_SUPPORTED - else if (chunk_name == png_zTXt) - png_handle_zTXt(png_ptr, info_ptr, length); -#endif - -#ifdef PNG_READ_iTXt_SUPPORTED - else if (chunk_name == png_iTXt) - png_handle_iTXt(png_ptr, info_ptr, length); -#endif - - else - png_handle_unknown(png_ptr, info_ptr, length, - PNG_HANDLE_CHUNK_AS_DEFAULT); - } while (!(png_ptr->mode & PNG_HAVE_IEND)); -} -#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */ - -/* Free all memory used in the read struct */ -static void -png_read_destroy(png_structrp png_ptr) -{ - png_debug(1, "in png_read_destroy"); - -#ifdef PNG_READ_GAMMA_SUPPORTED - png_destroy_gamma_table(png_ptr); -#endif - - png_free(png_ptr, png_ptr->big_row_buf); - png_free(png_ptr, png_ptr->big_prev_row); - png_free(png_ptr, png_ptr->read_buffer); - -#ifdef PNG_READ_QUANTIZE_SUPPORTED - png_free(png_ptr, png_ptr->palette_lookup); - png_free(png_ptr, png_ptr->quantize_index); -#endif - - if (png_ptr->free_me & PNG_FREE_PLTE) - png_zfree(png_ptr, png_ptr->palette); - png_ptr->free_me &= ~PNG_FREE_PLTE; - -#if defined(PNG_tRNS_SUPPORTED) || \ - defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - if (png_ptr->free_me & PNG_FREE_TRNS) - png_free(png_ptr, png_ptr->trans_alpha); - png_ptr->free_me &= ~PNG_FREE_TRNS; -#endif - - inflateEnd(&png_ptr->zstream); - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED - png_free(png_ptr, png_ptr->save_buffer); -#endif - -#if defined(PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED) &&\ - defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) - png_free(png_ptr, png_ptr->unknown_chunk.data); -#endif - -#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED - png_free(png_ptr, png_ptr->chunk_list); -#endif - - /* NOTE: the 'setjmp' buffer may still be allocated and the memory and error - * callbacks are still set at this point. They are required to complete the - * destruction of the png_struct itself. - */ -} - -/* Free all memory used by the read */ -void PNGAPI -png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr, - png_infopp end_info_ptr_ptr) -{ - png_structrp png_ptr = NULL; - - png_debug(1, "in png_destroy_read_struct"); - - if (png_ptr_ptr != NULL) - png_ptr = *png_ptr_ptr; - - if (png_ptr == NULL) - return; - - /* libpng 1.6.0: use the API to destroy info structs to ensure consistent - * behavior. Prior to 1.6.0 libpng did extra 'info' destruction in this API. - * The extra was, apparently, unnecessary yet this hides memory leak bugs. - */ - png_destroy_info_struct(png_ptr, end_info_ptr_ptr); - png_destroy_info_struct(png_ptr, info_ptr_ptr); - - *png_ptr_ptr = NULL; - png_read_destroy(png_ptr); - png_destroy_png_struct(png_ptr); -} - -void PNGAPI -png_set_read_status_fn(png_structrp png_ptr, png_read_status_ptr read_row_fn) -{ - if (png_ptr == NULL) - return; - - png_ptr->read_row_fn = read_row_fn; -} - - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -#ifdef PNG_INFO_IMAGE_SUPPORTED -void PNGAPI -png_read_png(png_structrp png_ptr, png_inforp info_ptr, - int transforms, - voidp params) -{ - int row; - - if (png_ptr == NULL || info_ptr == NULL) - return; - - /* png_read_info() gives us all of the information from the - * PNG file before the first IDAT (image data chunk). - */ - png_read_info(png_ptr, info_ptr); - if (info_ptr->height > PNG_UINT_32_MAX/(sizeof (png_bytep))) - png_error(png_ptr, "Image is too high to process with png_read_png()"); - - /* -------------- image transformations start here ------------------- */ - -#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED - /* Tell libpng to strip 16-bit/color files down to 8 bits per color. - */ - if (transforms & PNG_TRANSFORM_SCALE_16) - { - /* Added at libpng-1.5.4. "strip_16" produces the same result that it - * did in earlier versions, while "scale_16" is now more accurate. - */ - png_set_scale_16(png_ptr); - } -#endif - -#ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED - /* If both SCALE and STRIP are required pngrtran will effectively cancel the - * latter by doing SCALE first. This is ok and allows apps not to check for - * which is supported to get the right answer. - */ - if (transforms & PNG_TRANSFORM_STRIP_16) - png_set_strip_16(png_ptr); -#endif - -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED - /* Strip alpha bytes from the input data without combining with - * the background (not recommended). - */ - if (transforms & PNG_TRANSFORM_STRIP_ALPHA) - png_set_strip_alpha(png_ptr); -#endif - -#if defined(PNG_READ_PACK_SUPPORTED) && !defined(PNG_READ_EXPAND_SUPPORTED) - /* Extract multiple pixels with bit depths of 1, 2, or 4 from a single - * byte into separate bytes (useful for paletted and grayscale images). - */ - if (transforms & PNG_TRANSFORM_PACKING) - png_set_packing(png_ptr); -#endif - -#ifdef PNG_READ_PACKSWAP_SUPPORTED - /* Change the order of packed pixels to least significant bit first - * (not useful if you are using png_set_packing). - */ - if (transforms & PNG_TRANSFORM_PACKSWAP) - png_set_packswap(png_ptr); -#endif - -#ifdef PNG_READ_EXPAND_SUPPORTED - /* Expand paletted colors into true RGB triplets - * Expand grayscale images to full 8 bits from 1, 2, or 4 bits/pixel - * Expand paletted or RGB images with transparency to full alpha - * channels so the data will be available as RGBA quartets. - */ - if (transforms & PNG_TRANSFORM_EXPAND) - if ((png_ptr->bit_depth < 8) || - (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) || - (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))) - png_set_expand(png_ptr); -#endif - - /* We don't handle background color or gamma transformation or quantizing. - */ - -#ifdef PNG_READ_INVERT_SUPPORTED - /* Invert monochrome files to have 0 as white and 1 as black - */ - if (transforms & PNG_TRANSFORM_INVERT_MONO) - png_set_invert_mono(png_ptr); -#endif - -#ifdef PNG_READ_SHIFT_SUPPORTED - /* If you want to shift the pixel values from the range [0,255] or - * [0,65535] to the original [0,7] or [0,31], or whatever range the - * colors were originally in: - */ - if ((transforms & PNG_TRANSFORM_SHIFT) - && png_get_valid(png_ptr, info_ptr, PNG_INFO_sBIT)) - { - png_color_8p sig_bit; - - png_get_sBIT(png_ptr, info_ptr, &sig_bit); - png_set_shift(png_ptr, sig_bit); - } -#endif - -#ifdef PNG_READ_BGR_SUPPORTED - /* Flip the RGB pixels to BGR (or RGBA to BGRA) */ - if (transforms & PNG_TRANSFORM_BGR) - png_set_bgr(png_ptr); -#endif - -#ifdef PNG_READ_SWAP_ALPHA_SUPPORTED - /* Swap the RGBA or GA data to ARGB or AG (or BGRA to ABGR) */ - if (transforms & PNG_TRANSFORM_SWAP_ALPHA) - png_set_swap_alpha(png_ptr); -#endif - -#ifdef PNG_READ_SWAP_SUPPORTED - /* Swap bytes of 16-bit files to least significant byte first */ - if (transforms & PNG_TRANSFORM_SWAP_ENDIAN) - png_set_swap(png_ptr); -#endif - -/* Added at libpng-1.2.41 */ -#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED - /* Invert the alpha channel from opacity to transparency */ - if (transforms & PNG_TRANSFORM_INVERT_ALPHA) - png_set_invert_alpha(png_ptr); -#endif - -/* Added at libpng-1.2.41 */ -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED - /* Expand grayscale image to RGB */ - if (transforms & PNG_TRANSFORM_GRAY_TO_RGB) - png_set_gray_to_rgb(png_ptr); -#endif - -/* Added at libpng-1.5.4 */ -#ifdef PNG_READ_EXPAND_16_SUPPORTED - if (transforms & PNG_TRANSFORM_EXPAND_16) - png_set_expand_16(png_ptr); -#endif - - /* We don't handle adding filler bytes */ - - /* We use png_read_image and rely on that for interlace handling, but we also - * call png_read_update_info therefore must turn on interlace handling now: - */ - (void)png_set_interlace_handling(png_ptr); - - /* Optional call to gamma correct and add the background to the palette - * and update info structure. REQUIRED if you are expecting libpng to - * update the palette for you (i.e., you selected such a transform above). - */ - png_read_update_info(png_ptr, info_ptr); - - /* -------------- image transformations end here ------------------- */ - - png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0); - if (info_ptr->row_pointers == NULL) - { - png_uint_32 iptr; - - info_ptr->row_pointers = (png_bytepp)png_malloc(png_ptr, - info_ptr->height * (sizeof (png_bytep))); - for (iptr=0; iptrheight; iptr++) - info_ptr->row_pointers[iptr] = NULL; - - info_ptr->free_me |= PNG_FREE_ROWS; - - for (row = 0; row < (int)info_ptr->height; row++) - info_ptr->row_pointers[row] = (png_bytep)png_malloc(png_ptr, - png_get_rowbytes(png_ptr, info_ptr)); - } - - png_read_image(png_ptr, info_ptr->row_pointers); - info_ptr->valid |= PNG_INFO_IDAT; - - /* Read rest of file, and get additional chunks in info_ptr - REQUIRED */ - png_read_end(png_ptr, info_ptr); - - PNG_UNUSED(transforms) /* Quiet compiler warnings */ - PNG_UNUSED(params) - -} -#endif /* PNG_INFO_IMAGE_SUPPORTED */ -#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */ - -#ifdef PNG_SIMPLIFIED_READ_SUPPORTED -/* SIMPLIFIED READ - * - * This code currently relies on the sequential reader, though it could easily - * be made to work with the progressive one. - */ -/* Arguments to png_image_finish_read: */ - -/* Encoding of PNG data (used by the color-map code) */ -# define P_NOTSET 0 /* File encoding not yet known */ -# define P_sRGB 1 /* 8-bit encoded to sRGB gamma */ -# define P_LINEAR 2 /* 16-bit linear: not encoded, NOT pre-multiplied! */ -# define P_FILE 3 /* 8-bit encoded to file gamma, not sRGB or linear */ -# define P_LINEAR8 4 /* 8-bit linear: only from a file value */ - -/* Color-map processing: after libpng has run on the PNG image further - * processing may be needed to conver the data to color-map indicies. - */ -#define PNG_CMAP_NONE 0 -#define PNG_CMAP_GA 1 /* Process GA data to a color-map with alpha */ -#define PNG_CMAP_TRANS 2 /* Process GA data to a background index */ -#define PNG_CMAP_RGB 3 /* Process RGB data */ -#define PNG_CMAP_RGB_ALPHA 4 /* Process RGBA data */ - -/* The following document where the background is for each processing case. */ -#define PNG_CMAP_NONE_BACKGROUND 256 -#define PNG_CMAP_GA_BACKGROUND 231 -#define PNG_CMAP_TRANS_BACKGROUND 254 -#define PNG_CMAP_RGB_BACKGROUND 256 -#define PNG_CMAP_RGB_ALPHA_BACKGROUND 216 - -typedef struct -{ - /* Arguments: */ - png_imagep image; - png_voidp buffer; - png_int_32 row_stride; - png_voidp colormap; - png_const_colorp background; - /* Local variables: */ - png_voidp local_row; - png_voidp first_row; - ptrdiff_t row_bytes; /* step between rows */ - int file_encoding; /* E_ values above */ - png_fixed_point gamma_to_linear; /* For P_FILE, reciprocal of gamma */ - int colormap_processing; /* PNG_CMAP_ values above */ -} png_image_read_control; - -/* Do all the *safe* initialization - 'safe' means that png_error won't be - * called, so setting up the jmp_buf is not required. This means that anything - * called from here must *not* call png_malloc - it has to call png_malloc_warn - * instead so that control is returned safely back to this routine. - */ -static int -png_image_read_init(png_imagep image) -{ - if (image->opaque == NULL) - { - png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, image, - png_safe_error, png_safe_warning); - - /* And set the rest of the structure to NULL to ensure that the various - * fields are consistent. - */ - memset(image, 0, (sizeof *image)); - image->version = PNG_IMAGE_VERSION; - - if (png_ptr != NULL) - { - png_infop info_ptr = png_create_info_struct(png_ptr); - - if (info_ptr != NULL) - { - png_controlp control = png_voidcast(png_controlp, - png_malloc_warn(png_ptr, (sizeof *control))); - - if (control != NULL) - { - memset(control, 0, (sizeof *control)); - - control->png_ptr = png_ptr; - control->info_ptr = info_ptr; - control->for_write = 0; - - image->opaque = control; - return 1; - } - - /* Error clean up */ - png_destroy_info_struct(png_ptr, &info_ptr); - } - - png_destroy_read_struct(&png_ptr, NULL, NULL); - } - - return png_image_error(image, "png_image_read: out of memory"); - } - - return png_image_error(image, "png_image_read: opaque pointer not NULL"); -} - -/* Utility to find the base format of a PNG file from a png_struct. */ -static png_uint_32 -png_image_format(png_structrp png_ptr) -{ - png_uint_32 format = 0; - - if (png_ptr->color_type & PNG_COLOR_MASK_COLOR) - format |= PNG_FORMAT_FLAG_COLOR; - - if (png_ptr->color_type & PNG_COLOR_MASK_ALPHA) - format |= PNG_FORMAT_FLAG_ALPHA; - - /* Use png_ptr here, not info_ptr, because by examination png_handle_tRNS - * sets the png_struct fields; that's all we are interested in here. The - * precise interaction with an app call to png_set_tRNS and PNG file reading - * is unclear. - */ - else if (png_ptr->num_trans > 0) - format |= PNG_FORMAT_FLAG_ALPHA; - - if (png_ptr->bit_depth == 16) - format |= PNG_FORMAT_FLAG_LINEAR; - - if (png_ptr->color_type & PNG_COLOR_MASK_PALETTE) - format |= PNG_FORMAT_FLAG_COLORMAP; - - return format; -} - -/* Is the given gamma significantly different from sRGB? The test is the same - * one used in pngrtran.c when deciding whether to do gamma correction. The - * arithmetic optimizes the division by using the fact that the inverse of the - * file sRGB gamma is 2.2 - */ -static int -png_gamma_not_sRGB(png_fixed_point g) -{ - if (g < PNG_FP_1) - { - /* An uninitialized gamma is assumed to be sRGB for the simplified API. */ - if (g == 0) - return 0; - - return png_gamma_significant((g * 11 + 2)/5 /* i.e. *2.2, rounded */); - } - - return 1; -} - -/* Do the main body of a 'png_image_begin_read' function; read the PNG file - * header and fill in all the information. This is executed in a safe context, - * unlike the init routine above. - */ -static int -png_image_read_header(png_voidp argument) -{ - png_imagep image = png_voidcast(png_imagep, argument); - png_structrp png_ptr = image->opaque->png_ptr; - png_inforp info_ptr = image->opaque->info_ptr; - - png_set_benign_errors(png_ptr, 1/*warn*/); - png_read_info(png_ptr, info_ptr); - - /* Do this the fast way; just read directly out of png_struct. */ - image->width = png_ptr->width; - image->height = png_ptr->height; - - { - png_uint_32 format = png_image_format(png_ptr); - - image->format = format; - -#ifdef PNG_COLORSPACE_SUPPORTED - /* Does the colorspace match sRGB? If there is no color endpoint - * (colorant) information assume yes, otherwise require the - * 'ENDPOINTS_MATCHP_sRGB' colorspace flag to have been set. If the - * colorspace has been determined to be invalid ignore it. - */ - if ((format & PNG_FORMAT_FLAG_COLOR) != 0 && ((png_ptr->colorspace.flags - & (PNG_COLORSPACE_HAVE_ENDPOINTS|PNG_COLORSPACE_ENDPOINTS_MATCH_sRGB| - PNG_COLORSPACE_INVALID)) == PNG_COLORSPACE_HAVE_ENDPOINTS)) - image->flags |= PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB; -#endif - } - - /* We need the maximum number of entries regardless of the format the - * application sets here. - */ - { - png_uint_32 cmap_entries; - - switch (png_ptr->color_type) - { - case PNG_COLOR_TYPE_GRAY: - cmap_entries = 1U << png_ptr->bit_depth; - break; - - case PNG_COLOR_TYPE_PALETTE: - cmap_entries = png_ptr->num_palette; - break; - - default: - cmap_entries = 256; - break; - } - - if (cmap_entries > 256) - cmap_entries = 256; - - image->colormap_entries = cmap_entries; - } - - return 1; -} - -#ifdef PNG_STDIO_SUPPORTED -int PNGAPI -png_image_begin_read_from_stdio(png_imagep image, FILE* file) -{ - if (image != NULL && image->version == PNG_IMAGE_VERSION) - { - if (file != NULL) - { - if (png_image_read_init(image)) - { - /* This is slightly evil, but png_init_io doesn't do anything other - * than this and we haven't changed the standard IO functions so - * this saves a 'safe' function. - */ - image->opaque->png_ptr->io_ptr = file; - return png_safe_execute(image, png_image_read_header, image); - } - } - - else - return png_image_error(image, - "png_image_begin_read_from_stdio: invalid argument"); - } - - else if (image != NULL) - return png_image_error(image, - "png_image_begin_read_from_stdio: incorrect PNG_IMAGE_VERSION"); - - return 0; -} - -int PNGAPI -png_image_begin_read_from_file(png_imagep image, const char *file_name) -{ - if (image != NULL && image->version == PNG_IMAGE_VERSION) - { - if (file_name != NULL) - { - FILE *fp = fopen(file_name, "rb"); - - if (fp != NULL) - { - if (png_image_read_init(image)) - { - image->opaque->png_ptr->io_ptr = fp; - image->opaque->owned_file = 1; - return png_safe_execute(image, png_image_read_header, image); - } - - /* Clean up: just the opened file. */ - (void)fclose(fp); - } - - else - return png_image_error(image, strerror(errno)); - } - - else - return png_image_error(image, - "png_image_begin_read_from_file: invalid argument"); - } - - else if (image != NULL) - return png_image_error(image, - "png_image_begin_read_from_file: incorrect PNG_IMAGE_VERSION"); - - return 0; -} -#endif /* PNG_STDIO_SUPPORTED */ - -static void PNGCBAPI -png_image_memory_read(png_structp png_ptr, png_bytep out, png_size_t need) -{ - if (png_ptr != NULL) - { - png_imagep image = png_voidcast(png_imagep, png_ptr->io_ptr); - if (image != NULL) - { - png_controlp cp = image->opaque; - if (cp != NULL) - { - png_const_bytep memory = cp->memory; - png_size_t size = cp->size; - - if (memory != NULL && size >= need) - { - memcpy(out, memory, need); - cp->memory = memory + need; - cp->size = size - need; - return; - } - - png_error(png_ptr, "read beyond end of data"); - } - } - - png_error(png_ptr, "invalid memory read"); - } -} - -int PNGAPI png_image_begin_read_from_memory(png_imagep image, - png_const_voidp memory, png_size_t size) -{ - if (image != NULL && image->version == PNG_IMAGE_VERSION) - { - if (memory != NULL && size > 0) - { - if (png_image_read_init(image)) - { - /* Now set the IO functions to read from the memory buffer and - * store it into io_ptr. Again do this in-place to avoid calling a - * libpng function that requires error handling. - */ - image->opaque->memory = png_voidcast(png_const_bytep, memory); - image->opaque->size = size; - image->opaque->png_ptr->io_ptr = image; - image->opaque->png_ptr->read_data_fn = png_image_memory_read; - - return png_safe_execute(image, png_image_read_header, image); - } - } - - else - return png_image_error(image, - "png_image_begin_read_from_memory: invalid argument"); - } - - else if (image != NULL) - return png_image_error(image, - "png_image_begin_read_from_memory: incorrect PNG_IMAGE_VERSION"); - - return 0; -} - -/* Utility function to skip chunks that are not used by the simplified image - * read functions and an appropriate macro to call it. - */ -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED -static void -png_image_skip_unused_chunks(png_structrp png_ptr) -{ - /* Prepare the reader to ignore all recognized chunks whose data will not - * be used, i.e., all chunks recognized by libpng except for those - * involved in basic image reading: - * - * IHDR, PLTE, IDAT, IEND - * - * Or image data handling: - * - * tRNS, bKGD, gAMA, cHRM, sRGB, [iCCP] and sBIT. - * - * This provides a small performance improvement and eliminates any - * potential vulnerability to security problems in the unused chunks. - * - * At present the iCCP chunk data isn't used, so iCCP chunk can be ignored - * too. This allows the simplified API to be compiled without iCCP support, - * however if the support is there the chunk is still checked to detect - * errors (which are unfortunately quite common.) - */ - { - static PNG_CONST png_byte chunks_to_process[] = { - 98, 75, 71, 68, '\0', /* bKGD */ - 99, 72, 82, 77, '\0', /* cHRM */ - 103, 65, 77, 65, '\0', /* gAMA */ -# ifdef PNG_READ_iCCP_SUPPORTED - 105, 67, 67, 80, '\0', /* iCCP */ -# endif - 115, 66, 73, 84, '\0', /* sBIT */ - 115, 82, 71, 66, '\0', /* sRGB */ - }; - - /* Ignore unknown chunks and all other chunks except for the - * IHDR, PLTE, tRNS, IDAT, and IEND chunks. - */ - png_set_keep_unknown_chunks(png_ptr, PNG_HANDLE_CHUNK_NEVER, - NULL, -1); - - /* But do not ignore image data handling chunks */ - png_set_keep_unknown_chunks(png_ptr, PNG_HANDLE_CHUNK_AS_DEFAULT, - chunks_to_process, (sizeof chunks_to_process)/5); - } -} - -# define PNG_SKIP_CHUNKS(p) png_image_skip_unused_chunks(p) -#else -# define PNG_SKIP_CHUNKS(p) ((void)0) -#endif /* PNG_HANDLE_AS_UNKNOWN_SUPPORTED */ - -/* The following macro gives the exact rounded answer for all values in the - * range 0..255 (it actually divides by 51.2, but the rounding still generates - * the correct numbers 0..5 - */ -#define PNG_DIV51(v8) (((v8) * 5 + 130) >> 8) - -/* Utility functions to make particular color-maps */ -static void -set_file_encoding(png_image_read_control *display) -{ - png_fixed_point g = display->image->opaque->png_ptr->colorspace.gamma; - if (png_gamma_significant(g)) - { - if (png_gamma_not_sRGB(g)) - { - display->file_encoding = P_FILE; - display->gamma_to_linear = png_reciprocal(g); - } - - else - display->file_encoding = P_sRGB; - } - - else - display->file_encoding = P_LINEAR8; -} - -static unsigned int -decode_gamma(png_image_read_control *display, png_uint_32 value, int encoding) -{ - if (encoding == P_FILE) /* double check */ - encoding = display->file_encoding; - - if (encoding == P_NOTSET) /* must be the file encoding */ - { - set_file_encoding(display); - encoding = display->file_encoding; - } - - switch (encoding) - { - case P_FILE: - value = png_gamma_16bit_correct(value*257, display->gamma_to_linear); - break; - - case P_sRGB: - value = png_sRGB_table[value]; - break; - - case P_LINEAR: - break; - - case P_LINEAR8: - value *= 257; - break; - - default: - png_error(display->image->opaque->png_ptr, - "unexpected encoding (internal error)"); - break; - } - - return value; -} - -static png_uint_32 -png_colormap_compose(png_image_read_control *display, - png_uint_32 foreground, int foreground_encoding, png_uint_32 alpha, - png_uint_32 background, int encoding) -{ - /* The file value is composed on the background, the background has the given - * encoding and so does the result, the file is encoded with P_FILE and the - * file and alpha are 8-bit values. The (output) encoding will always be - * P_LINEAR or P_sRGB. - */ - png_uint_32 f = decode_gamma(display, foreground, foreground_encoding); - png_uint_32 b = decode_gamma(display, background, encoding); - - /* The alpha is always an 8-bit value (it comes from the palette), the value - * scaled by 255 is what PNG_sRGB_FROM_LINEAR requires. - */ - f = f * alpha + b * (255-alpha); - - if (encoding == P_LINEAR) - { - /* Scale to 65535; divide by 255, approximately (in fact this is extremely - * accurate, it divides by 255.00000005937181414556, with no overflow.) - */ - f *= 257; /* Now scaled by 65535 */ - f += f >> 16; - f = (f+32768) >> 16; - } - - else /* P_sRGB */ - f = PNG_sRGB_FROM_LINEAR(f); - - return f; -} - -/* NOTE: P_LINEAR values to this routine must be 16-bit, but P_FILE values must - * be 8-bit. - */ -static void -png_create_colormap_entry(png_image_read_control *display, - png_uint_32 ip, png_uint_32 red, png_uint_32 green, png_uint_32 blue, - png_uint_32 alpha, int encoding) -{ - png_imagep image = display->image; - const int output_encoding = (image->format & PNG_FORMAT_FLAG_LINEAR) ? - P_LINEAR : P_sRGB; - const int convert_to_Y = (image->format & PNG_FORMAT_FLAG_COLOR) == 0 && - (red != green || green != blue); - - if (ip > 255) - png_error(image->opaque->png_ptr, "color-map index out of range"); - - /* Update the cache with whether the file gamma is significantly different - * from sRGB. - */ - if (encoding == P_FILE) - { - if (display->file_encoding == P_NOTSET) - set_file_encoding(display); - - /* Note that the cached value may be P_FILE too, but if it is then the - * gamma_to_linear member has been set. - */ - encoding = display->file_encoding; - } - - if (encoding == P_FILE) - { - png_fixed_point g = display->gamma_to_linear; - - red = png_gamma_16bit_correct(red*257, g); - green = png_gamma_16bit_correct(green*257, g); - blue = png_gamma_16bit_correct(blue*257, g); - - if (convert_to_Y || output_encoding == P_LINEAR) - { - alpha *= 257; - encoding = P_LINEAR; - } - - else - { - red = PNG_sRGB_FROM_LINEAR(red * 255); - green = PNG_sRGB_FROM_LINEAR(green * 255); - blue = PNG_sRGB_FROM_LINEAR(blue * 255); - encoding = P_sRGB; - } - } - - else if (encoding == P_LINEAR8) - { - /* This encoding occurs quite frequently in test cases because PngSuite - * includes a gAMA 1.0 chunk with most images. - */ - red *= 257; - green *= 257; - blue *= 257; - alpha *= 257; - encoding = P_LINEAR; - } - - else if (encoding == P_sRGB && (convert_to_Y || output_encoding == P_LINEAR)) - { - /* The values are 8-bit sRGB values, but must be converted to 16-bit - * linear. - */ - red = png_sRGB_table[red]; - green = png_sRGB_table[green]; - blue = png_sRGB_table[blue]; - alpha *= 257; - encoding = P_LINEAR; - } - - /* This is set if the color isn't gray but the output is. */ - if (encoding == P_LINEAR) - { - if (convert_to_Y) - { - /* NOTE: these values are copied from png_do_rgb_to_gray */ - png_uint_32 y = (png_uint_32)6968 * red + (png_uint_32)23434 * green + - (png_uint_32)2366 * blue; - - if (output_encoding == P_LINEAR) - y = (y + 16384) >> 15; - - else - { - /* y is scaled by 32768, we need it scaled by 255: */ - y = (y + 128) >> 8; - y *= 255; - y = PNG_sRGB_FROM_LINEAR((y + 64) >> 7); - encoding = P_sRGB; - } - - blue = red = green = y; - } - - else if (output_encoding == P_sRGB) - { - red = PNG_sRGB_FROM_LINEAR(red * 255); - green = PNG_sRGB_FROM_LINEAR(green * 255); - blue = PNG_sRGB_FROM_LINEAR(blue * 255); - alpha = PNG_DIV257(alpha); - encoding = P_sRGB; - } - } - - if (encoding != output_encoding) - png_error(image->opaque->png_ptr, "bad encoding (internal error)"); - - /* Store the value. */ - { -# ifdef PNG_FORMAT_AFIRST_SUPPORTED - const int afirst = (image->format & PNG_FORMAT_FLAG_AFIRST) != 0 && - (image->format & PNG_FORMAT_FLAG_ALPHA) != 0; -# else -# define afirst 0 -# endif -# ifdef PNG_FORMAT_BGR_SUPPORTED - const int bgr = (image->format & PNG_FORMAT_FLAG_BGR) ? 2 : 0; -# else -# define bgr 0 -# endif - - if (output_encoding == P_LINEAR) - { - png_uint_16p entry = png_voidcast(png_uint_16p, display->colormap); - - entry += ip * PNG_IMAGE_SAMPLE_CHANNELS(image->format); - - /* The linear 16-bit values must be pre-multiplied by the alpha channel - * value, if less than 65535 (this is, effectively, composite on black - * if the alpha channel is removed.) - */ - switch (PNG_IMAGE_SAMPLE_CHANNELS(image->format)) - { - case 4: - entry[afirst ? 0 : 3] = (png_uint_16)alpha; - /* FALL THROUGH */ - - case 3: - if (alpha < 65535) - { - if (alpha > 0) - { - blue = (blue * alpha + 32767U)/65535U; - green = (green * alpha + 32767U)/65535U; - red = (red * alpha + 32767U)/65535U; - } - - else - red = green = blue = 0; - } - entry[afirst + (2 ^ bgr)] = (png_uint_16)blue; - entry[afirst + 1] = (png_uint_16)green; - entry[afirst + bgr] = (png_uint_16)red; - break; - - case 2: - entry[1 ^ afirst] = (png_uint_16)alpha; - /* FALL THROUGH */ - - case 1: - if (alpha < 65535) - { - if (alpha > 0) - green = (green * alpha + 32767U)/65535U; - - else - green = 0; - } - entry[afirst] = (png_uint_16)green; - break; - - default: - break; - } - } - - else /* output encoding is P_sRGB */ - { - png_bytep entry = png_voidcast(png_bytep, display->colormap); - - entry += ip * PNG_IMAGE_SAMPLE_CHANNELS(image->format); - - switch (PNG_IMAGE_SAMPLE_CHANNELS(image->format)) - { - case 4: - entry[afirst ? 0 : 3] = (png_byte)alpha; - case 3: - entry[afirst + (2 ^ bgr)] = (png_byte)blue; - entry[afirst + 1] = (png_byte)green; - entry[afirst + bgr] = (png_byte)red; - break; - - case 2: - entry[1 ^ afirst] = (png_byte)alpha; - case 1: - entry[afirst] = (png_byte)green; - break; - - default: - break; - } - } - -# ifdef afirst -# undef afirst -# endif -# ifdef bgr -# undef bgr -# endif - } -} - -static int -make_gray_file_colormap(png_image_read_control *display) -{ - unsigned int i; - - for (i=0; i<256; ++i) - png_create_colormap_entry(display, i, i, i, i, 255, P_FILE); - - return i; -} - -static int -make_gray_colormap(png_image_read_control *display) -{ - unsigned int i; - - for (i=0; i<256; ++i) - png_create_colormap_entry(display, i, i, i, i, 255, P_sRGB); - - return i; -} -#define PNG_GRAY_COLORMAP_ENTRIES 256 - -static int -make_ga_colormap(png_image_read_control *display) -{ - unsigned int i, a; - - /* Alpha is retained, the output will be a color-map with entries - * selected by six levels of alpha. One transparent entry, 6 gray - * levels for all the intermediate alpha values, leaving 230 entries - * for the opaque grays. The color-map entries are the six values - * [0..5]*51, the GA processing uses PNG_DIV51(value) to find the - * relevant entry. - * - * if (alpha > 229) // opaque - * { - * // The 231 entries are selected to make the math below work: - * base = 0; - * entry = (231 * gray + 128) >> 8; - * } - * else if (alpha < 26) // transparent - * { - * base = 231; - * entry = 0; - * } - * else // partially opaque - * { - * base = 226 + 6 * PNG_DIV51(alpha); - * entry = PNG_DIV51(gray); - * } - */ - i = 0; - while (i < 231) - { - unsigned int gray = (i * 256 + 115) / 231; - png_create_colormap_entry(display, i++, gray, gray, gray, 255, P_sRGB); - } - - /* 255 is used here for the component values for consistency with the code - * that undoes premultiplication in pngwrite.c. - */ - png_create_colormap_entry(display, i++, 255, 255, 255, 0, P_sRGB); - - for (a=1; a<5; ++a) - { - unsigned int g; - - for (g=0; g<6; ++g) - png_create_colormap_entry(display, i++, g*51, g*51, g*51, a*51, - P_sRGB); - } - - return i; -} - -#define PNG_GA_COLORMAP_ENTRIES 256 - -static int -make_rgb_colormap(png_image_read_control *display) -{ - unsigned int i, r; - - /* Build a 6x6x6 opaque RGB cube */ - for (i=r=0; r<6; ++r) - { - unsigned int g; - - for (g=0; g<6; ++g) - { - unsigned int b; - - for (b=0; b<6; ++b) - png_create_colormap_entry(display, i++, r*51, g*51, b*51, 255, - P_sRGB); - } - } - - return i; -} - -#define PNG_RGB_COLORMAP_ENTRIES 216 - -/* Return a palette index to the above palette given three 8-bit sRGB values. */ -#define PNG_RGB_INDEX(r,g,b) \ - ((png_byte)(6 * (6 * PNG_DIV51(r) + PNG_DIV51(g)) + PNG_DIV51(b))) - -static int -png_image_read_colormap(png_voidp argument) -{ - png_image_read_control *display = - png_voidcast(png_image_read_control*, argument); - const png_imagep image = display->image; - - const png_structrp png_ptr = image->opaque->png_ptr; - const png_uint_32 output_format = image->format; - const int output_encoding = (output_format & PNG_FORMAT_FLAG_LINEAR) ? - P_LINEAR : P_sRGB; - - unsigned int cmap_entries; - unsigned int output_processing; /* Output processing option */ - unsigned int data_encoding = P_NOTSET; /* Encoding libpng must produce */ - - /* Background information; the background color and the index of this color - * in the color-map if it exists (else 256). - */ - unsigned int background_index = 256; - png_uint_32 back_r, back_g, back_b; - - /* Flags to accumulate things that need to be done to the input. */ - int expand_tRNS = 0; - - /* Exclude the NYI feature of compositing onto a color-mapped buffer; it is - * very difficult to do, the results look awful, and it is difficult to see - * what possible use it is because the application can't control the - * color-map. - */ - if (((png_ptr->color_type & PNG_COLOR_MASK_ALPHA) != 0 || - png_ptr->num_trans > 0) /* alpha in input */ && - ((output_format & PNG_FORMAT_FLAG_ALPHA) == 0) /* no alpha in output */) - { - if (output_encoding == P_LINEAR) /* compose on black */ - back_b = back_g = back_r = 0; - - else if (display->background == NULL /* no way to remove it */) - png_error(png_ptr, - "a background color must be supplied to remove alpha/transparency"); - - /* Get a copy of the background color (this avoids repeating the checks - * below.) The encoding is 8-bit sRGB or 16-bit linear, depending on the - * output format. - */ - else - { - back_g = display->background->green; - if (output_format & PNG_FORMAT_FLAG_COLOR) - { - back_r = display->background->red; - back_b = display->background->blue; - } - else - back_b = back_r = back_g; - } - } - - else if (output_encoding == P_LINEAR) - back_b = back_r = back_g = 65535; - - else - back_b = back_r = back_g = 255; - - /* Default the input file gamma if required - this is necessary because - * libpng assumes that if no gamma information is present the data is in the - * output format, but the simplified API deduces the gamma from the input - * format. - */ - if ((png_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_GAMMA) == 0) - { - /* Do this directly, not using the png_colorspace functions, to ensure - * that it happens even if the colorspace is invalid (though probably if - * it is the setting will be ignored) Note that the same thing can be - * achieved at the application interface with png_set_gAMA. - */ - if (png_ptr->bit_depth == 16 && - (image->flags & PNG_IMAGE_FLAG_16BIT_sRGB) == 0) - png_ptr->colorspace.gamma = PNG_GAMMA_LINEAR; - - else - png_ptr->colorspace.gamma = PNG_GAMMA_sRGB_INVERSE; - - png_ptr->colorspace.flags |= PNG_COLORSPACE_HAVE_GAMMA; - } - - /* Decide what to do based on the PNG color type of the input data. The - * utility function png_create_colormap_entry deals with most aspects of the - * output transformations; this code works out how to produce bytes of - * color-map entries from the original format. - */ - switch (png_ptr->color_type) - { - case PNG_COLOR_TYPE_GRAY: - if (png_ptr->bit_depth <= 8) - { - /* There at most 256 colors in the output, regardless of - * transparency. - */ - unsigned int step, i, val, trans = 256/*ignore*/, back_alpha = 0; - - cmap_entries = 1U << png_ptr->bit_depth; - if (cmap_entries > image->colormap_entries) - png_error(png_ptr, "gray[8] color-map: too few entries"); - - step = 255 / (cmap_entries - 1); - output_processing = PNG_CMAP_NONE; - - /* If there is a tRNS chunk then this either selects a transparent - * value or, if the output has no alpha, the background color. - */ - if (png_ptr->num_trans > 0) - { - trans = png_ptr->trans_color.gray; - - if ((output_format & PNG_FORMAT_FLAG_ALPHA) == 0) - back_alpha = output_encoding == P_LINEAR ? 65535 : 255; - } - - /* png_create_colormap_entry just takes an RGBA and writes the - * corresponding color-map entry using the format from 'image', - * including the required conversion to sRGB or linear as - * appropriate. The input values are always either sRGB (if the - * gamma correction flag is 0) or 0..255 scaled file encoded values - * (if the function must gamma correct them). - */ - for (i=val=0; ibit_depth < 8) - png_set_packing(png_ptr); - } - - else /* bit depth is 16 */ - { - /* The 16-bit input values can be converted directly to 8-bit gamma - * encoded values; however, if a tRNS chunk is present 257 color-map - * entries are required. This means that the extra entry requires - * special processing; add an alpha channel, sacrifice gray level - * 254 and convert transparent (alpha==0) entries to that. - * - * Use libpng to chop the data to 8 bits. Convert it to sRGB at the - * same time to minimize quality loss. If a tRNS chunk is present - * this means libpng must handle it too; otherwise it is impossible - * to do the exact match on the 16-bit value. - * - * If the output has no alpha channel *and* the background color is - * gray then it is possible to let libpng handle the substitution by - * ensuring that the corresponding gray level matches the background - * color exactly. - */ - data_encoding = P_sRGB; - - if (PNG_GRAY_COLORMAP_ENTRIES > image->colormap_entries) - png_error(png_ptr, "gray[16] color-map: too few entries"); - - cmap_entries = make_gray_colormap(display); - - if (png_ptr->num_trans > 0) - { - unsigned int back_alpha; - - if (output_format & PNG_FORMAT_FLAG_ALPHA) - back_alpha = 0; - - else - { - if (back_r == back_g && back_g == back_b) - { - /* Background is gray; no special processing will be - * required. - */ - png_color_16 c; - png_uint_32 gray = back_g; - - if (output_encoding == P_LINEAR) - { - gray = PNG_sRGB_FROM_LINEAR(gray * 255); - - /* And make sure the corresponding palette entry - * matches. - */ - png_create_colormap_entry(display, gray, back_g, back_g, - back_g, 65535, P_LINEAR); - } - - /* The background passed to libpng, however, must be the - * sRGB value. - */ - c.index = 0; /*unused*/ - c.gray = c.red = c.green = c.blue = (png_uint_16)gray; - - /* NOTE: does this work without expanding tRNS to alpha? - * It should be the color->gray case below apparently - * doesn't. - */ - png_set_background_fixed(png_ptr, &c, - PNG_BACKGROUND_GAMMA_SCREEN, 0/*need_expand*/, - 0/*gamma: not used*/); - - output_processing = PNG_CMAP_NONE; - break; - } - - back_alpha = output_encoding == P_LINEAR ? 65535 : 255; - } - - /* output_processing means that the libpng-processed row will be - * 8-bit GA and it has to be processing to single byte color-map - * values. Entry 254 is replaced by either a completely - * transparent entry or by the background color at full - * precision (and the background color is not a simple gray leve - * in this case.) - */ - expand_tRNS = 1; - output_processing = PNG_CMAP_TRANS; - background_index = 254; - - /* And set (overwrite) color-map entry 254 to the actual - * background color at full precision. - */ - png_create_colormap_entry(display, 254, back_r, back_g, back_b, - back_alpha, output_encoding); - } - - else - output_processing = PNG_CMAP_NONE; - } - break; - - case PNG_COLOR_TYPE_GRAY_ALPHA: - /* 8-bit or 16-bit PNG with two channels - gray and alpha. A minimum - * of 65536 combinations. If, however, the alpha channel is to be - * removed there are only 256 possibilities if the background is gray. - * (Otherwise there is a subset of the 65536 possibilities defined by - * the triangle between black, white and the background color.) - * - * Reduce 16-bit files to 8-bit and sRGB encode the result. No need to - * worry about tRNS matching - tRNS is ignored if there is an alpha - * channel. - */ - data_encoding = P_sRGB; - - if (output_format & PNG_FORMAT_FLAG_ALPHA) - { - if (PNG_GA_COLORMAP_ENTRIES > image->colormap_entries) - png_error(png_ptr, "gray+alpha color-map: too few entries"); - - cmap_entries = make_ga_colormap(display); - - background_index = PNG_CMAP_GA_BACKGROUND; - output_processing = PNG_CMAP_GA; - } - - else /* alpha is removed */ - { - /* Alpha must be removed as the PNG data is processed when the - * background is a color because the G and A channels are - * independent and the vector addition (non-parallel vectors) is a - * 2-D problem. - * - * This can be reduced to the same algorithm as above by making a - * colormap containing gray levels (for the opaque grays), a - * background entry (for a transparent pixel) and a set of four six - * level color values, one set for each intermediate alpha value. - * See the comments in make_ga_colormap for how this works in the - * per-pixel processing. - * - * If the background is gray, however, we only need a 256 entry gray - * level color map. It is sufficient to make the entry generated - * for the background color be exactly the color specified. - */ - if ((output_format & PNG_FORMAT_FLAG_COLOR) == 0 || - (back_r == back_g && back_g == back_b)) - { - /* Background is gray; no special processing will be required. */ - png_color_16 c; - png_uint_32 gray = back_g; - - if (PNG_GRAY_COLORMAP_ENTRIES > image->colormap_entries) - png_error(png_ptr, "gray-alpha color-map: too few entries"); - - cmap_entries = make_gray_colormap(display); - - if (output_encoding == P_LINEAR) - { - gray = PNG_sRGB_FROM_LINEAR(gray * 255); - - /* And make sure the corresponding palette entry matches. */ - png_create_colormap_entry(display, gray, back_g, back_g, - back_g, 65535, P_LINEAR); - } - - /* The background passed to libpng, however, must be the sRGB - * value. - */ - c.index = 0; /*unused*/ - c.gray = c.red = c.green = c.blue = (png_uint_16)gray; - - png_set_background_fixed(png_ptr, &c, - PNG_BACKGROUND_GAMMA_SCREEN, 0/*need_expand*/, - 0/*gamma: not used*/); - - output_processing = PNG_CMAP_NONE; - } - - else - { - png_uint_32 i, a; - - /* This is the same as png_make_ga_colormap, above, except that - * the entries are all opaque. - */ - if (PNG_GA_COLORMAP_ENTRIES > image->colormap_entries) - png_error(png_ptr, "ga-alpha color-map: too few entries"); - - i = 0; - while (i < 231) - { - png_uint_32 gray = (i * 256 + 115) / 231; - png_create_colormap_entry(display, i++, gray, gray, gray, - 255, P_sRGB); - } - - /* NOTE: this preserves the full precision of the application - * background color. - */ - background_index = i; - png_create_colormap_entry(display, i++, back_r, back_g, back_b, - output_encoding == P_LINEAR ? 65535U : 255U, output_encoding); - - /* For non-opaque input composite on the sRGB background - this - * requires inverting the encoding for each component. The input - * is still converted to the sRGB encoding because this is a - * reasonable approximate to the logarithmic curve of human - * visual sensitivity, at least over the narrow range which PNG - * represents. Consequently 'G' is always sRGB encoded, while - * 'A' is linear. We need the linear background colors. - */ - if (output_encoding == P_sRGB) /* else already linear */ - { - /* This may produce a value not exactly matching the - * background, but that's ok because these numbers are only - * used when alpha != 0 - */ - back_r = png_sRGB_table[back_r]; - back_g = png_sRGB_table[back_g]; - back_b = png_sRGB_table[back_b]; - } - - for (a=1; a<5; ++a) - { - unsigned int g; - - /* PNG_sRGB_FROM_LINEAR expects a 16-bit linear value scaled - * by an 8-bit alpha value (0..255). - */ - png_uint_32 alpha = 51 * a; - png_uint_32 back_rx = (255-alpha) * back_r; - png_uint_32 back_gx = (255-alpha) * back_g; - png_uint_32 back_bx = (255-alpha) * back_b; - - for (g=0; g<6; ++g) - { - png_uint_32 gray = png_sRGB_table[g*51] * alpha; - - png_create_colormap_entry(display, i++, - PNG_sRGB_FROM_LINEAR(gray + back_rx), - PNG_sRGB_FROM_LINEAR(gray + back_gx), - PNG_sRGB_FROM_LINEAR(gray + back_bx), 255, P_sRGB); - } - } - - cmap_entries = i; - output_processing = PNG_CMAP_GA; - } - } - break; - - case PNG_COLOR_TYPE_RGB: - case PNG_COLOR_TYPE_RGB_ALPHA: - /* Exclude the case where the output is gray; we can always handle this - * with the cases above. - */ - if ((output_format & PNG_FORMAT_FLAG_COLOR) == 0) - { - /* The color-map will be grayscale, so we may as well convert the - * input RGB values to a simple grayscale and use the grayscale - * code above. - * - * NOTE: calling this apparently damages the recognition of the - * transparent color in background color handling; call - * png_set_tRNS_to_alpha before png_set_background_fixed. - */ - png_set_rgb_to_gray_fixed(png_ptr, PNG_ERROR_ACTION_NONE, -1, - -1); - data_encoding = P_sRGB; - - /* The output will now be one or two 8-bit gray or gray+alpha - * channels. The more complex case arises when the input has alpha. - */ - if ((png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || - png_ptr->num_trans > 0) && - (output_format & PNG_FORMAT_FLAG_ALPHA) != 0) - { - /* Both input and output have an alpha channel, so no background - * processing is required; just map the GA bytes to the right - * color-map entry. - */ - expand_tRNS = 1; - - if (PNG_GA_COLORMAP_ENTRIES > image->colormap_entries) - png_error(png_ptr, "rgb[ga] color-map: too few entries"); - - cmap_entries = make_ga_colormap(display); - background_index = PNG_CMAP_GA_BACKGROUND; - output_processing = PNG_CMAP_GA; - } - - else - { - /* Either the input or the output has no alpha channel, so there - * will be no non-opaque pixels in the color-map; it will just be - * grayscale. - */ - if (PNG_GRAY_COLORMAP_ENTRIES > image->colormap_entries) - png_error(png_ptr, "rgb[gray] color-map: too few entries"); - - /* Ideally this code would use libpng to do the gamma correction, - * but if an input alpha channel is to be removed we will hit the - * libpng bug in gamma+compose+rgb-to-gray (the double gamma - * correction bug). Fix this by dropping the gamma correction in - * this case and doing it in the palette; this will result in - * duplicate palette entries, but that's better than the - * alternative of double gamma correction. - */ - if ((png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || - png_ptr->num_trans > 0) && - png_gamma_not_sRGB(png_ptr->colorspace.gamma)) - { - cmap_entries = make_gray_file_colormap(display); - data_encoding = P_FILE; - } - - else - cmap_entries = make_gray_colormap(display); - - /* But if the input has alpha or transparency it must be removed - */ - if (png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || - png_ptr->num_trans > 0) - { - png_color_16 c; - png_uint_32 gray = back_g; - - /* We need to ensure that the application background exists in - * the colormap and that completely transparent pixels map to - * it. Achieve this simply by ensuring that the entry - * selected for the background really is the background color. - */ - if (data_encoding == P_FILE) /* from the fixup above */ - { - /* The app supplied a gray which is in output_encoding, we - * need to convert it to a value of the input (P_FILE) - * encoding then set this palette entry to the required - * output encoding. - */ - if (output_encoding == P_sRGB) - gray = png_sRGB_table[gray]; /* now P_LINEAR */ - - gray = PNG_DIV257(png_gamma_16bit_correct(gray, - png_ptr->colorspace.gamma)); /* now P_FILE */ - - /* And make sure the corresponding palette entry contains - * exactly the required sRGB value. - */ - png_create_colormap_entry(display, gray, back_g, back_g, - back_g, 0/*unused*/, output_encoding); - } - - else if (output_encoding == P_LINEAR) - { - gray = PNG_sRGB_FROM_LINEAR(gray * 255); - - /* And make sure the corresponding palette entry matches. - */ - png_create_colormap_entry(display, gray, back_g, back_g, - back_g, 0/*unused*/, P_LINEAR); - } - - /* The background passed to libpng, however, must be the - * output (normally sRGB) value. - */ - c.index = 0; /*unused*/ - c.gray = c.red = c.green = c.blue = (png_uint_16)gray; - - /* NOTE: the following is apparently a bug in libpng. Without - * it the transparent color recognition in - * png_set_background_fixed seems to go wrong. - */ - expand_tRNS = 1; - png_set_background_fixed(png_ptr, &c, - PNG_BACKGROUND_GAMMA_SCREEN, 0/*need_expand*/, - 0/*gamma: not used*/); - } - - output_processing = PNG_CMAP_NONE; - } - } - - else /* output is color */ - { - /* We could use png_quantize here so long as there is no transparent - * color or alpha; png_quantize ignores alpha. Easier overall just - * to do it once and using PNG_DIV51 on the 6x6x6 reduced RGB cube. - * Consequently we always want libpng to produce sRGB data. - */ - data_encoding = P_sRGB; - - /* Is there any transparency or alpha? */ - if (png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || - png_ptr->num_trans > 0) - { - /* Is there alpha in the output too? If so all four channels are - * processed into a special RGB cube with alpha support. - */ - if (output_format & PNG_FORMAT_FLAG_ALPHA) - { - png_uint_32 r; - - if (PNG_RGB_COLORMAP_ENTRIES+1+27 > image->colormap_entries) - png_error(png_ptr, "rgb+alpha color-map: too few entries"); - - cmap_entries = make_rgb_colormap(display); - - /* Add a transparent entry. */ - png_create_colormap_entry(display, cmap_entries, 255, 255, - 255, 0, P_sRGB); - - /* This is stored as the background index for the processing - * algorithm. - */ - background_index = cmap_entries++; - - /* Add 27 r,g,b entries each with alpha 0.5. */ - for (r=0; r<256; r = (r << 1) | 0x7f) - { - png_uint_32 g; - - for (g=0; g<256; g = (g << 1) | 0x7f) - { - png_uint_32 b; - - /* This generates components with the values 0, 127 and - * 255 - */ - for (b=0; b<256; b = (b << 1) | 0x7f) - png_create_colormap_entry(display, cmap_entries++, - r, g, b, 128, P_sRGB); - } - } - - expand_tRNS = 1; - output_processing = PNG_CMAP_RGB_ALPHA; - } - - else - { - /* Alpha/transparency must be removed. The background must - * exist in the color map (achieved by setting adding it after - * the 666 color-map). If the standard processing code will - * pick up this entry automatically that's all that is - * required; libpng can be called to do the background - * processing. - */ - unsigned int sample_size = - PNG_IMAGE_SAMPLE_SIZE(output_format); - png_uint_32 r, g, b; /* sRGB background */ - - if (PNG_RGB_COLORMAP_ENTRIES+1+27 > image->colormap_entries) - png_error(png_ptr, "rgb-alpha color-map: too few entries"); - - cmap_entries = make_rgb_colormap(display); - - png_create_colormap_entry(display, cmap_entries, back_r, - back_g, back_b, 0/*unused*/, output_encoding); - - if (output_encoding == P_LINEAR) - { - r = PNG_sRGB_FROM_LINEAR(back_r * 255); - g = PNG_sRGB_FROM_LINEAR(back_g * 255); - b = PNG_sRGB_FROM_LINEAR(back_b * 255); - } - - else - { - r = back_r; - g = back_g; - b = back_g; - } - - /* Compare the newly-created color-map entry with the one the - * PNG_CMAP_RGB algorithm will use. If the two entries don't - * match, add the new one and set this as the background - * index. - */ - if (memcmp((png_const_bytep)display->colormap + - sample_size * cmap_entries, - (png_const_bytep)display->colormap + - sample_size * PNG_RGB_INDEX(r,g,b), - sample_size) != 0) - { - /* The background color must be added. */ - background_index = cmap_entries++; - - /* Add 27 r,g,b entries each with created by composing with - * the background at alpha 0.5. - */ - for (r=0; r<256; r = (r << 1) | 0x7f) - { - for (g=0; g<256; g = (g << 1) | 0x7f) - { - /* This generates components with the values 0, 127 - * and 255 - */ - for (b=0; b<256; b = (b << 1) | 0x7f) - png_create_colormap_entry(display, cmap_entries++, - png_colormap_compose(display, r, P_sRGB, 128, - back_r, output_encoding), - png_colormap_compose(display, g, P_sRGB, 128, - back_g, output_encoding), - png_colormap_compose(display, b, P_sRGB, 128, - back_b, output_encoding), - 0/*unused*/, output_encoding); - } - } - - expand_tRNS = 1; - output_processing = PNG_CMAP_RGB_ALPHA; - } - - else /* background color is in the standard color-map */ - { - png_color_16 c; - - c.index = 0; /*unused*/ - c.red = (png_uint_16)back_r; - c.gray = c.green = (png_uint_16)back_g; - c.blue = (png_uint_16)back_b; - - png_set_background_fixed(png_ptr, &c, - PNG_BACKGROUND_GAMMA_SCREEN, 0/*need_expand*/, - 0/*gamma: not used*/); - - output_processing = PNG_CMAP_RGB; - } - } - } - - else /* no alpha or transparency in the input */ - { - /* Alpha in the output is irrelevant, simply map the opaque input - * pixels to the 6x6x6 color-map. - */ - if (PNG_RGB_COLORMAP_ENTRIES > image->colormap_entries) - png_error(png_ptr, "rgb color-map: too few entries"); - - cmap_entries = make_rgb_colormap(display); - output_processing = PNG_CMAP_RGB; - } - } - break; - - case PNG_COLOR_TYPE_PALETTE: - /* It's already got a color-map. It may be necessary to eliminate the - * tRNS entries though. - */ - { - unsigned int num_trans = png_ptr->num_trans; - png_const_bytep trans = num_trans > 0 ? png_ptr->trans_alpha : NULL; - png_const_colorp colormap = png_ptr->palette; - const int do_background = trans != NULL && - (output_format & PNG_FORMAT_FLAG_ALPHA) == 0; - unsigned int i; - - /* Just in case: */ - if (trans == NULL) - num_trans = 0; - - output_processing = PNG_CMAP_NONE; - data_encoding = P_FILE; /* Don't change from color-map indicies */ - cmap_entries = png_ptr->num_palette; - if (cmap_entries > 256) - cmap_entries = 256; - - if (cmap_entries > image->colormap_entries) - png_error(png_ptr, "palette color-map: too few entries"); - - for (i=0; i < cmap_entries; ++i) - { - if (do_background && i < num_trans && trans[i] < 255) - { - if (trans[i] == 0) - png_create_colormap_entry(display, i, back_r, back_g, - back_b, 0, output_encoding); - - else - { - /* Must compose the PNG file color in the color-map entry - * on the sRGB color in 'back'. - */ - png_create_colormap_entry(display, i, - png_colormap_compose(display, colormap[i].red, P_FILE, - trans[i], back_r, output_encoding), - png_colormap_compose(display, colormap[i].green, P_FILE, - trans[i], back_g, output_encoding), - png_colormap_compose(display, colormap[i].blue, P_FILE, - trans[i], back_b, output_encoding), - output_encoding == P_LINEAR ? trans[i] * 257U : - trans[i], - output_encoding); - } - } - - else - png_create_colormap_entry(display, i, colormap[i].red, - colormap[i].green, colormap[i].blue, - i < num_trans ? trans[i] : 255U, P_FILE/*8-bit*/); - } - - /* The PNG data may have indicies packed in fewer than 8 bits, it - * must be expanded if so. - */ - if (png_ptr->bit_depth < 8) - png_set_packing(png_ptr); - } - break; - - default: - png_error(png_ptr, "invalid PNG color type"); - /*NOT REACHED*/ - break; - } - - /* Now deal with the output processing */ - if (expand_tRNS && png_ptr->num_trans > 0 && - (png_ptr->color_type & PNG_COLOR_MASK_ALPHA) == 0) - png_set_tRNS_to_alpha(png_ptr); - - switch (data_encoding) - { - default: - png_error(png_ptr, "bad data option (internal error)"); - break; - - case P_sRGB: - /* Change to 8-bit sRGB */ - png_set_alpha_mode_fixed(png_ptr, PNG_ALPHA_PNG, PNG_GAMMA_sRGB); - /* FALL THROUGH */ - - case P_FILE: - if (png_ptr->bit_depth > 8) - png_set_scale_16(png_ptr); - break; - } - - if (cmap_entries > 256 || cmap_entries > image->colormap_entries) - png_error(png_ptr, "color map overflow (BAD internal error)"); - - image->colormap_entries = cmap_entries; - - /* Double check using the recorded background index */ - switch (output_processing) - { - case PNG_CMAP_NONE: - if (background_index != PNG_CMAP_NONE_BACKGROUND) - goto bad_background; - break; - - case PNG_CMAP_GA: - if (background_index != PNG_CMAP_GA_BACKGROUND) - goto bad_background; - break; - - case PNG_CMAP_TRANS: - if (background_index >= cmap_entries || - background_index != PNG_CMAP_TRANS_BACKGROUND) - goto bad_background; - break; - - case PNG_CMAP_RGB: - if (background_index != PNG_CMAP_RGB_BACKGROUND) - goto bad_background; - break; - - case PNG_CMAP_RGB_ALPHA: - if (background_index != PNG_CMAP_RGB_ALPHA_BACKGROUND) - goto bad_background; - break; - - default: - png_error(png_ptr, "bad processing option (internal error)"); - - bad_background: - png_error(png_ptr, "bad background index (internal error)"); - } - - display->colormap_processing = output_processing; - - return 1/*ok*/; -} - -/* The final part of the color-map read called from png_image_finish_read. */ -static int -png_image_read_and_map(png_voidp argument) -{ - png_image_read_control *display = png_voidcast(png_image_read_control*, - argument); - png_imagep image = display->image; - png_structrp png_ptr = image->opaque->png_ptr; - int passes; - - /* Called when the libpng data must be transformed into the color-mapped - * form. There is a local row buffer in display->local and this routine must - * do the interlace handling. - */ - switch (png_ptr->interlaced) - { - case PNG_INTERLACE_NONE: - passes = 1; - break; - - case PNG_INTERLACE_ADAM7: - passes = PNG_INTERLACE_ADAM7_PASSES; - break; - - default: - png_error(png_ptr, "unknown interlace type"); - } - - { - png_uint_32 height = image->height; - png_uint_32 width = image->width; - int proc = display->colormap_processing; - png_bytep first_row = png_voidcast(png_bytep, display->first_row); - ptrdiff_t step_row = display->row_bytes; - int pass; - - for (pass = 0; pass < passes; ++pass) - { - unsigned int startx, stepx, stepy; - png_uint_32 y; - - if (png_ptr->interlaced == PNG_INTERLACE_ADAM7) - { - /* The row may be empty for a short image: */ - if (PNG_PASS_COLS(width, pass) == 0) - continue; - - startx = PNG_PASS_START_COL(pass); - stepx = PNG_PASS_COL_OFFSET(pass); - y = PNG_PASS_START_ROW(pass); - stepy = PNG_PASS_ROW_OFFSET(pass); - } - - else - { - y = 0; - startx = 0; - stepx = stepy = 1; - } - - for (; ylocal_row); - png_bytep outrow = first_row + y * step_row; - png_const_bytep end_row = outrow + width; - - /* Read read the libpng data into the temporary buffer. */ - png_read_row(png_ptr, inrow, NULL); - - /* Now process the row according to the processing option, note - * that the caller verifies that the format of the libpng output - * data is as required. - */ - outrow += startx; - switch (proc) - { - case PNG_CMAP_GA: - for (; outrow < end_row; outrow += stepx) - { - /* The data is always in the PNG order */ - unsigned int gray = *inrow++; - unsigned int alpha = *inrow++; - unsigned int entry; - - /* NOTE: this code is copied as a comment in - * make_ga_colormap above. Please update the - * comment if you change this code! - */ - if (alpha > 229) /* opaque */ - { - entry = (231 * gray + 128) >> 8; - } - else if (alpha < 26) /* transparent */ - { - entry = 231; - } - else /* partially opaque */ - { - entry = 226 + 6 * PNG_DIV51(alpha) + PNG_DIV51(gray); - } - - *outrow = (png_byte)entry; - } - break; - - case PNG_CMAP_TRANS: - for (; outrow < end_row; outrow += stepx) - { - png_byte gray = *inrow++; - png_byte alpha = *inrow++; - - if (alpha == 0) - *outrow = PNG_CMAP_TRANS_BACKGROUND; - - else if (gray != PNG_CMAP_TRANS_BACKGROUND) - *outrow = gray; - - else - *outrow = (png_byte)(PNG_CMAP_TRANS_BACKGROUND+1); - } - break; - - case PNG_CMAP_RGB: - for (; outrow < end_row; outrow += stepx) - { - *outrow = PNG_RGB_INDEX(inrow[0], inrow[1], inrow[2]); - inrow += 3; - } - break; - - case PNG_CMAP_RGB_ALPHA: - for (; outrow < end_row; outrow += stepx) - { - unsigned int alpha = inrow[3]; - - /* Because the alpha entries only hold alpha==0.5 values - * split the processing at alpha==0.25 (64) and 0.75 - * (196). - */ - - if (alpha >= 196) - *outrow = PNG_RGB_INDEX(inrow[0], inrow[1], - inrow[2]); - - else if (alpha < 64) - *outrow = PNG_CMAP_RGB_ALPHA_BACKGROUND; - - else - { - /* Likewise there are three entries for each of r, g - * and b. We could select the entry by popcount on - * the top two bits on those architectures that - * support it, this is what the code below does, - * crudely. - */ - unsigned int back_i = PNG_CMAP_RGB_ALPHA_BACKGROUND+1; - - /* Here are how the values map: - * - * 0x00 .. 0x3f -> 0 - * 0x40 .. 0xbf -> 1 - * 0xc0 .. 0xff -> 2 - * - * So, as above with the explicit alpha checks, the - * breakpoints are at 64 and 196. - */ - if (inrow[0] & 0x80) back_i += 9; /* red */ - if (inrow[0] & 0x40) back_i += 9; - if (inrow[0] & 0x80) back_i += 3; /* green */ - if (inrow[0] & 0x40) back_i += 3; - if (inrow[0] & 0x80) back_i += 1; /* blue */ - if (inrow[0] & 0x40) back_i += 1; - - *outrow = (png_byte)back_i; - } - - inrow += 4; - } - break; - - default: - break; - } - } - } - } - - return 1; -} - -static int -png_image_read_colormapped(png_voidp argument) -{ - png_image_read_control *display = png_voidcast(png_image_read_control*, - argument); - png_imagep image = display->image; - png_controlp control = image->opaque; - png_structrp png_ptr = control->png_ptr; - png_inforp info_ptr = control->info_ptr; - - int passes = 0; /* As a flag */ - - PNG_SKIP_CHUNKS(png_ptr); - - /* Update the 'info' structure and make sure the result is as required; first - * make sure to turn on the interlace handling if it will be required - * (because it can't be turned on *after* the call to png_read_update_info!) - */ - if (display->colormap_processing == PNG_CMAP_NONE) - passes = png_set_interlace_handling(png_ptr); - - png_read_update_info(png_ptr, info_ptr); - - /* The expected output can be deduced from the colormap_processing option. */ - switch (display->colormap_processing) - { - case PNG_CMAP_NONE: - /* Output must be one channel and one byte per pixel, the output - * encoding can be anything. - */ - if ((info_ptr->color_type == PNG_COLOR_TYPE_PALETTE || - info_ptr->color_type == PNG_COLOR_TYPE_GRAY) && - info_ptr->bit_depth == 8) - break; - - goto bad_output; - - case PNG_CMAP_TRANS: - case PNG_CMAP_GA: - /* Output must be two channels and the 'G' one must be sRGB, the latter - * can be checked with an exact number because it should have been set - * to this number above! - */ - if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA && - info_ptr->bit_depth == 8 && - png_ptr->screen_gamma == PNG_GAMMA_sRGB && - image->colormap_entries == 256) - break; - - goto bad_output; - - case PNG_CMAP_RGB: - /* Output must be 8-bit sRGB encoded RGB */ - if (info_ptr->color_type == PNG_COLOR_TYPE_RGB && - info_ptr->bit_depth == 8 && - png_ptr->screen_gamma == PNG_GAMMA_sRGB && - image->colormap_entries == 216) - break; - - goto bad_output; - - case PNG_CMAP_RGB_ALPHA: - /* Output must be 8-bit sRGB encoded RGBA */ - if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA && - info_ptr->bit_depth == 8 && - png_ptr->screen_gamma == PNG_GAMMA_sRGB && - image->colormap_entries == 244 /* 216 + 1 + 27 */) - break; - - /* goto bad_output; */ - /* FALL THROUGH */ - - default: - bad_output: - png_error(png_ptr, "bad color-map processing (internal error)"); - } - - /* Now read the rows. Do this here if it is possible to read directly into - * the output buffer, otherwise allocate a local row buffer of the maximum - * size libpng requires and call the relevant processing routine safely. - */ - { - png_voidp first_row = display->buffer; - ptrdiff_t row_bytes = display->row_stride; - - /* The following expression is designed to work correctly whether it gives - * a signed or an unsigned result. - */ - if (row_bytes < 0) - { - char *ptr = png_voidcast(char*, first_row); - ptr += (image->height-1) * (-row_bytes); - first_row = png_voidcast(png_voidp, ptr); - } - - display->first_row = first_row; - display->row_bytes = row_bytes; - } - - if (passes == 0) - { - int result; - png_voidp row = png_malloc(png_ptr, png_get_rowbytes(png_ptr, info_ptr)); - - display->local_row = row; - result = png_safe_execute(image, png_image_read_and_map, display); - display->local_row = NULL; - png_free(png_ptr, row); - - return result; - } - - else - { - png_alloc_size_t row_bytes = display->row_bytes; - - while (--passes >= 0) - { - png_uint_32 y = image->height; - png_bytep row = png_voidcast(png_bytep, display->first_row); - - while (y-- > 0) - { - png_read_row(png_ptr, row, NULL); - row += row_bytes; - } - } - - return 1; - } -} - -/* Just the row reading part of png_image_read. */ -static int -png_image_read_composite(png_voidp argument) -{ - png_image_read_control *display = png_voidcast(png_image_read_control*, - argument); - png_imagep image = display->image; - png_structrp png_ptr = image->opaque->png_ptr; - int passes; - - switch (png_ptr->interlaced) - { - case PNG_INTERLACE_NONE: - passes = 1; - break; - - case PNG_INTERLACE_ADAM7: - passes = PNG_INTERLACE_ADAM7_PASSES; - break; - - default: - png_error(png_ptr, "unknown interlace type"); - } - - { - png_uint_32 height = image->height; - png_uint_32 width = image->width; - ptrdiff_t step_row = display->row_bytes; - unsigned int channels = (image->format & PNG_FORMAT_FLAG_COLOR) ? 3 : 1; - int pass; - - for (pass = 0; pass < passes; ++pass) - { - unsigned int startx, stepx, stepy; - png_uint_32 y; - - if (png_ptr->interlaced == PNG_INTERLACE_ADAM7) - { - /* The row may be empty for a short image: */ - if (PNG_PASS_COLS(width, pass) == 0) - continue; - - startx = PNG_PASS_START_COL(pass) * channels; - stepx = PNG_PASS_COL_OFFSET(pass) * channels; - y = PNG_PASS_START_ROW(pass); - stepy = PNG_PASS_ROW_OFFSET(pass); - } - - else - { - y = 0; - startx = 0; - stepx = channels; - stepy = 1; - } - - for (; ylocal_row); - png_bytep outrow; - png_const_bytep end_row; - - /* Read the row, which is packed: */ - png_read_row(png_ptr, inrow, NULL); - - outrow = png_voidcast(png_bytep, display->first_row); - outrow += y * step_row; - end_row = outrow + width * channels; - - /* Now do the composition on each pixel in this row. */ - outrow += startx; - for (; outrow < end_row; outrow += stepx) - { - png_byte alpha = inrow[channels]; - - if (alpha > 0) /* else no change to the output */ - { - unsigned int c; - - for (c=0; cimage; - png_structrp png_ptr = image->opaque->png_ptr; - png_inforp info_ptr = image->opaque->info_ptr; - png_uint_32 height = image->height; - png_uint_32 width = image->width; - int pass, passes; - - /* Double check the convoluted logic below. We expect to get here with - * libpng doing rgb to gray and gamma correction but background processing - * left to the png_image_read_background function. The rows libpng produce - * might be 8 or 16-bit but should always have two channels; gray plus alpha. - */ - if ((png_ptr->transformations & PNG_RGB_TO_GRAY) == 0) - png_error(png_ptr, "lost rgb to gray"); - - if ((png_ptr->transformations & PNG_COMPOSE) != 0) - png_error(png_ptr, "unexpected compose"); - - if (png_get_channels(png_ptr, info_ptr) != 2) - png_error(png_ptr, "lost/gained channels"); - - /* Expect the 8-bit case to always remove the alpha channel */ - if ((image->format & PNG_FORMAT_FLAG_LINEAR) == 0 && - (image->format & PNG_FORMAT_FLAG_ALPHA) != 0) - png_error(png_ptr, "unexpected 8-bit transformation"); - - switch (png_ptr->interlaced) - { - case PNG_INTERLACE_NONE: - passes = 1; - break; - - case PNG_INTERLACE_ADAM7: - passes = PNG_INTERLACE_ADAM7_PASSES; - break; - - default: - png_error(png_ptr, "unknown interlace type"); - } - - /* Use direct access to info_ptr here because otherwise the simplified API - * would require PNG_EASY_ACCESS_SUPPORTED (just for this.) Note this is - * checking the value after libpng expansions, not the original value in the - * PNG. - */ - switch (info_ptr->bit_depth) - { - default: - png_error(png_ptr, "unexpected bit depth"); - break; - - case 8: - /* 8-bit sRGB gray values with an alpha channel; the alpha channel is - * to be removed by composing on a background: either the row if - * display->background is NULL or display->background->green if not. - * Unlike the code above ALPHA_OPTIMIZED has *not* been done. - */ - { - png_bytep first_row = png_voidcast(png_bytep, display->first_row); - ptrdiff_t step_row = display->row_bytes; - - for (pass = 0; pass < passes; ++pass) - { - png_bytep row = png_voidcast(png_bytep, - display->first_row); - unsigned int startx, stepx, stepy; - png_uint_32 y; - - if (png_ptr->interlaced == PNG_INTERLACE_ADAM7) - { - /* The row may be empty for a short image: */ - if (PNG_PASS_COLS(width, pass) == 0) - continue; - - startx = PNG_PASS_START_COL(pass); - stepx = PNG_PASS_COL_OFFSET(pass); - y = PNG_PASS_START_ROW(pass); - stepy = PNG_PASS_ROW_OFFSET(pass); - } - - else - { - y = 0; - startx = 0; - stepx = stepy = 1; - } - - if (display->background == NULL) - { - for (; ylocal_row); - png_bytep outrow = first_row + y * step_row; - png_const_bytep end_row = outrow + width; - - /* Read the row, which is packed: */ - png_read_row(png_ptr, inrow, NULL); - - /* Now do the composition on each pixel in this row. */ - outrow += startx; - for (; outrow < end_row; outrow += stepx) - { - png_byte alpha = inrow[1]; - - if (alpha > 0) /* else no change to the output */ - { - png_uint_32 component = inrow[0]; - - if (alpha < 255) /* else just use component */ - { - /* Since PNG_OPTIMIZED_ALPHA was not set it is - * necessary to invert the sRGB transfer - * function and multiply the alpha out. - */ - component = png_sRGB_table[component] * alpha; - component += png_sRGB_table[outrow[0]] * - (255-alpha); - component = PNG_sRGB_FROM_LINEAR(component); - } - - outrow[0] = (png_byte)component; - } - - inrow += 2; /* gray and alpha channel */ - } - } - } - - else /* constant background value */ - { - png_byte background8 = display->background->green; - png_uint_16 background = png_sRGB_table[background8]; - - for (; ylocal_row); - png_bytep outrow = first_row + y * step_row; - png_const_bytep end_row = outrow + width; - - /* Read the row, which is packed: */ - png_read_row(png_ptr, inrow, NULL); - - /* Now do the composition on each pixel in this row. */ - outrow += startx; - for (; outrow < end_row; outrow += stepx) - { - png_byte alpha = inrow[1]; - - if (alpha > 0) /* else use background */ - { - png_uint_32 component = inrow[0]; - - if (alpha < 255) /* else just use component */ - { - component = png_sRGB_table[component] * alpha; - component += background * (255-alpha); - component = PNG_sRGB_FROM_LINEAR(component); - } - - outrow[0] = (png_byte)component; - } - - else - outrow[0] = background8; - - inrow += 2; /* gray and alpha channel */ - } - - row += display->row_bytes; - } - } - } - } - break; - - case 16: - /* 16-bit linear with pre-multiplied alpha; the pre-multiplication must - * still be done and, maybe, the alpha channel removed. This code also - * handles the alpha-first option. - */ - { - png_uint_16p first_row = png_voidcast(png_uint_16p, - display->first_row); - /* The division by two is safe because the caller passed in a - * stride which was multiplied by 2 (below) to get row_bytes. - */ - ptrdiff_t step_row = display->row_bytes / 2; - int preserve_alpha = (image->format & PNG_FORMAT_FLAG_ALPHA) != 0; - unsigned int outchannels = 1+preserve_alpha; - int swap_alpha = 0; - -# ifdef PNG_SIMPLIFIED_READ_AFIRST_SUPPORTED - if (preserve_alpha && (image->format & PNG_FORMAT_FLAG_AFIRST)) - swap_alpha = 1; -# endif - - for (pass = 0; pass < passes; ++pass) - { - unsigned int startx, stepx, stepy; - png_uint_32 y; - - /* The 'x' start and step are adjusted to output components here. - */ - if (png_ptr->interlaced == PNG_INTERLACE_ADAM7) - { - /* The row may be empty for a short image: */ - if (PNG_PASS_COLS(width, pass) == 0) - continue; - - startx = PNG_PASS_START_COL(pass) * outchannels; - stepx = PNG_PASS_COL_OFFSET(pass) * outchannels; - y = PNG_PASS_START_ROW(pass); - stepy = PNG_PASS_ROW_OFFSET(pass); - } - - else - { - y = 0; - startx = 0; - stepx = outchannels; - stepy = 1; - } - - for (; ylocal_row), NULL); - inrow = png_voidcast(png_const_uint_16p, display->local_row); - - /* Now do the pre-multiplication on each pixel in this row. - */ - outrow += startx; - for (; outrow < end_row; outrow += stepx) - { - png_uint_32 component = inrow[0]; - png_uint_16 alpha = inrow[1]; - - if (alpha > 0) /* else 0 */ - { - if (alpha < 65535) /* else just use component */ - { - component *= alpha; - component += 32767; - component /= 65535; - } - } - - else - component = 0; - - outrow[swap_alpha] = (png_uint_16)component; - if (preserve_alpha) - outrow[1 ^ swap_alpha] = alpha; - - inrow += 2; /* components and alpha channel */ - } - } - } - } - break; - } - - return 1; -} - -/* The guts of png_image_finish_read as a png_safe_execute callback. */ -static int -png_image_read_direct(png_voidp argument) -{ - png_image_read_control *display = png_voidcast(png_image_read_control*, - argument); - png_imagep image = display->image; - png_structrp png_ptr = image->opaque->png_ptr; - png_inforp info_ptr = image->opaque->info_ptr; - - png_uint_32 format = image->format; - int linear = (format & PNG_FORMAT_FLAG_LINEAR) != 0; - int do_local_compose = 0; - int do_local_background = 0; /* to avoid double gamma correction bug */ - int passes = 0; - - /* Add transforms to ensure the correct output format is produced then check - * that the required implementation support is there. Always expand; always - * need 8 bits minimum, no palette and expanded tRNS. - */ - png_set_expand(png_ptr); - - /* Now check the format to see if it was modified. */ - { - png_uint_32 base_format = png_image_format(png_ptr) & - ~PNG_FORMAT_FLAG_COLORMAP /* removed by png_set_expand */; - png_uint_32 change = format ^ base_format; - png_fixed_point output_gamma; - int mode; /* alpha mode */ - - /* Do this first so that we have a record if rgb to gray is happening. */ - if (change & PNG_FORMAT_FLAG_COLOR) - { - /* gray<->color transformation required. */ - if (format & PNG_FORMAT_FLAG_COLOR) - png_set_gray_to_rgb(png_ptr); - - else - { - /* libpng can't do both rgb to gray and - * background/pre-multiplication if there is also significant gamma - * correction, because both operations require linear colors and - * the code only supports one transform doing the gamma correction. - * Handle this by doing the pre-multiplication or background - * operation in this code, if necessary. - * - * TODO: fix this by rewriting pngrtran.c (!) - * - * For the moment (given that fixing this in pngrtran.c is an - * enormous change) 'do_local_background' is used to indicate that - * the problem exists. - */ - if (base_format & PNG_FORMAT_FLAG_ALPHA) - do_local_background = 1/*maybe*/; - - png_set_rgb_to_gray_fixed(png_ptr, PNG_ERROR_ACTION_NONE, - PNG_RGB_TO_GRAY_DEFAULT, PNG_RGB_TO_GRAY_DEFAULT); - } - - change &= ~PNG_FORMAT_FLAG_COLOR; - } - - /* Set the gamma appropriately, linear for 16-bit input, sRGB otherwise. - */ - { - png_fixed_point input_gamma_default; - - if ((base_format & PNG_FORMAT_FLAG_LINEAR) && - (image->flags & PNG_IMAGE_FLAG_16BIT_sRGB) == 0) - input_gamma_default = PNG_GAMMA_LINEAR; - else - input_gamma_default = PNG_DEFAULT_sRGB; - - /* Call png_set_alpha_mode to set the default for the input gamma; the - * output gamma is set by a second call below. - */ - png_set_alpha_mode_fixed(png_ptr, PNG_ALPHA_PNG, input_gamma_default); - } - - if (linear) - { - /* If there *is* an alpha channel in the input it must be multiplied - * out; use PNG_ALPHA_STANDARD, otherwise just use PNG_ALPHA_PNG. - */ - if (base_format & PNG_FORMAT_FLAG_ALPHA) - mode = PNG_ALPHA_STANDARD; /* associated alpha */ - - else - mode = PNG_ALPHA_PNG; - - output_gamma = PNG_GAMMA_LINEAR; - } - - else - { - mode = PNG_ALPHA_PNG; - output_gamma = PNG_DEFAULT_sRGB; - } - - /* If 'do_local_background' is set check for the presence of gamma - * correction; this is part of the work-round for the libpng bug - * described above. - * - * TODO: fix libpng and remove this. - */ - if (do_local_background) - { - png_fixed_point gtest; - - /* This is 'png_gamma_threshold' from pngrtran.c; the test used for - * gamma correction, the screen gamma hasn't been set on png_struct - * yet; it's set below. png_struct::gamma, however, is set to the - * final value. - */ - if (png_muldiv(>est, output_gamma, png_ptr->colorspace.gamma, - PNG_FP_1) && !png_gamma_significant(gtest)) - do_local_background = 0; - - else if (mode == PNG_ALPHA_STANDARD) - { - do_local_background = 2/*required*/; - mode = PNG_ALPHA_PNG; /* prevent libpng doing it */ - } - - /* else leave as 1 for the checks below */ - } - - /* If the bit-depth changes then handle that here. */ - if (change & PNG_FORMAT_FLAG_LINEAR) - { - if (linear /*16-bit output*/) - png_set_expand_16(png_ptr); - - else /* 8-bit output */ - png_set_scale_16(png_ptr); - - change &= ~PNG_FORMAT_FLAG_LINEAR; - } - - /* Now the background/alpha channel changes. */ - if (change & PNG_FORMAT_FLAG_ALPHA) - { - /* Removing an alpha channel requires composition for the 8-bit - * formats; for the 16-bit it is already done, above, by the - * pre-multiplication and the channel just needs to be stripped. - */ - if (base_format & PNG_FORMAT_FLAG_ALPHA) - { - /* If RGB->gray is happening the alpha channel must be left and the - * operation completed locally. - * - * TODO: fix libpng and remove this. - */ - if (do_local_background) - do_local_background = 2/*required*/; - - /* 16-bit output: just remove the channel */ - else if (linear) /* compose on black (well, pre-multiply) */ - png_set_strip_alpha(png_ptr); - - /* 8-bit output: do an appropriate compose */ - else if (display->background != NULL) - { - png_color_16 c; - - c.index = 0; /*unused*/ - c.red = display->background->red; - c.green = display->background->green; - c.blue = display->background->blue; - c.gray = display->background->green; - - /* This is always an 8-bit sRGB value, using the 'green' channel - * for gray is much better than calculating the luminance here; - * we can get off-by-one errors in that calculation relative to - * the app expectations and that will show up in transparent - * pixels. - */ - png_set_background_fixed(png_ptr, &c, - PNG_BACKGROUND_GAMMA_SCREEN, 0/*need_expand*/, - 0/*gamma: not used*/); - } - - else /* compose on row: implemented below. */ - { - do_local_compose = 1; - /* This leaves the alpha channel in the output, so it has to be - * removed by the code below. Set the encoding to the 'OPTIMIZE' - * one so the code only has to hack on the pixels that require - * composition. - */ - mode = PNG_ALPHA_OPTIMIZED; - } - } - - else /* output needs an alpha channel */ - { - /* This is tricky because it happens before the swap operation has - * been accomplished; however, the swap does *not* swap the added - * alpha channel (weird API), so it must be added in the correct - * place. - */ - png_uint_32 filler; /* opaque filler */ - int where; - - if (linear) - filler = 65535; - - else - filler = 255; - -# ifdef PNG_FORMAT_AFIRST_SUPPORTED - if (format & PNG_FORMAT_FLAG_AFIRST) - { - where = PNG_FILLER_BEFORE; - change &= ~PNG_FORMAT_FLAG_AFIRST; - } - - else -# endif - where = PNG_FILLER_AFTER; - - png_set_add_alpha(png_ptr, filler, where); - } - - /* This stops the (irrelevant) call to swap_alpha below. */ - change &= ~PNG_FORMAT_FLAG_ALPHA; - } - - /* Now set the alpha mode correctly; this is always done, even if there is - * no alpha channel in either the input or the output because it correctly - * sets the output gamma. - */ - png_set_alpha_mode_fixed(png_ptr, mode, output_gamma); - -# ifdef PNG_FORMAT_BGR_SUPPORTED - if (change & PNG_FORMAT_FLAG_BGR) - { - /* Check only the output format; PNG is never BGR; don't do this if - * the output is gray, but fix up the 'format' value in that case. - */ - if (format & PNG_FORMAT_FLAG_COLOR) - png_set_bgr(png_ptr); - - else - format &= ~PNG_FORMAT_FLAG_BGR; - - change &= ~PNG_FORMAT_FLAG_BGR; - } -# endif - -# ifdef PNG_FORMAT_AFIRST_SUPPORTED - if (change & PNG_FORMAT_FLAG_AFIRST) - { - /* Only relevant if there is an alpha channel - it's particularly - * important to handle this correctly because do_local_compose may - * be set above and then libpng will keep the alpha channel for this - * code to remove. - */ - if (format & PNG_FORMAT_FLAG_ALPHA) - { - /* Disable this if doing a local background, - * TODO: remove this when local background is no longer required. - */ - if (do_local_background != 2) - png_set_swap_alpha(png_ptr); - } - - else - format &= ~PNG_FORMAT_FLAG_AFIRST; - - change &= ~PNG_FORMAT_FLAG_AFIRST; - } -# endif - - /* If the *output* is 16-bit then we need to check for a byte-swap on this - * architecture. - */ - if (linear) - { - PNG_CONST png_uint_16 le = 0x0001; - - if (*(png_const_bytep)&le) - png_set_swap(png_ptr); - } - - /* If change is not now 0 some transformation is missing - error out. */ - if (change) - png_error(png_ptr, "png_read_image: unsupported transformation"); - } - - PNG_SKIP_CHUNKS(png_ptr); - - /* Update the 'info' structure and make sure the result is as required; first - * make sure to turn on the interlace handling if it will be required - * (because it can't be turned on *after* the call to png_read_update_info!) - * - * TODO: remove the do_local_background fixup below. - */ - if (!do_local_compose && do_local_background != 2) - passes = png_set_interlace_handling(png_ptr); - - png_read_update_info(png_ptr, info_ptr); - - { - png_uint_32 info_format = 0; - - if (info_ptr->color_type & PNG_COLOR_MASK_COLOR) - info_format |= PNG_FORMAT_FLAG_COLOR; - - if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA) - { - /* do_local_compose removes this channel below. */ - if (!do_local_compose) - { - /* do_local_background does the same if required. */ - if (do_local_background != 2 || - (format & PNG_FORMAT_FLAG_ALPHA) != 0) - info_format |= PNG_FORMAT_FLAG_ALPHA; - } - } - - else if (do_local_compose) /* internal error */ - png_error(png_ptr, "png_image_read: alpha channel lost"); - - if (info_ptr->bit_depth == 16) - info_format |= PNG_FORMAT_FLAG_LINEAR; - -# ifdef PNG_FORMAT_BGR_SUPPORTED - if (png_ptr->transformations & PNG_BGR) - info_format |= PNG_FORMAT_FLAG_BGR; -# endif - -# ifdef PNG_FORMAT_AFIRST_SUPPORTED - if (do_local_background == 2) - { - if (format & PNG_FORMAT_FLAG_AFIRST) - info_format |= PNG_FORMAT_FLAG_AFIRST; - } - - if ((png_ptr->transformations & PNG_SWAP_ALPHA) != 0 || - ((png_ptr->transformations & PNG_ADD_ALPHA) != 0 && - (png_ptr->flags & PNG_FLAG_FILLER_AFTER) == 0)) - { - if (do_local_background == 2) - png_error(png_ptr, "unexpected alpha swap transformation"); - - info_format |= PNG_FORMAT_FLAG_AFIRST; - } -# endif - - /* This is actually an internal error. */ - if (info_format != format) - png_error(png_ptr, "png_read_image: invalid transformations"); - } - - /* Now read the rows. If do_local_compose is set then it is necessary to use - * a local row buffer. The output will be GA, RGBA or BGRA and must be - * converted to G, RGB or BGR as appropriate. The 'local_row' member of the - * display acts as a flag. - */ - { - png_voidp first_row = display->buffer; - ptrdiff_t row_bytes = display->row_stride; - - if (linear) - row_bytes *= 2; - - /* The following expression is designed to work correctly whether it gives - * a signed or an unsigned result. - */ - if (row_bytes < 0) - { - char *ptr = png_voidcast(char*, first_row); - ptr += (image->height-1) * (-row_bytes); - first_row = png_voidcast(png_voidp, ptr); - } - - display->first_row = first_row; - display->row_bytes = row_bytes; - } - - if (do_local_compose) - { - int result; - png_voidp row = png_malloc(png_ptr, png_get_rowbytes(png_ptr, info_ptr)); - - display->local_row = row; - result = png_safe_execute(image, png_image_read_composite, display); - display->local_row = NULL; - png_free(png_ptr, row); - - return result; - } - - else if (do_local_background == 2) - { - int result; - png_voidp row = png_malloc(png_ptr, png_get_rowbytes(png_ptr, info_ptr)); - - display->local_row = row; - result = png_safe_execute(image, png_image_read_background, display); - display->local_row = NULL; - png_free(png_ptr, row); - - return result; - } - - else - { - png_alloc_size_t row_bytes = display->row_bytes; - - while (--passes >= 0) - { - png_uint_32 y = image->height; - png_bytep row = png_voidcast(png_bytep, display->first_row); - - while (y-- > 0) - { - png_read_row(png_ptr, row, NULL); - row += row_bytes; - } - } - - return 1; - } -} - -int PNGAPI -png_image_finish_read(png_imagep image, png_const_colorp background, - void *buffer, png_int_32 row_stride, void *colormap) -{ - if (image != NULL && image->version == PNG_IMAGE_VERSION) - { - png_uint_32 check; - - if (row_stride == 0) - row_stride = PNG_IMAGE_ROW_STRIDE(*image); - - if (row_stride < 0) - check = -row_stride; - - else - check = row_stride; - - if (image->opaque != NULL && buffer != NULL && - check >= PNG_IMAGE_ROW_STRIDE(*image)) - { - if ((image->format & PNG_FORMAT_FLAG_COLORMAP) == 0 || - (image->colormap_entries > 0 && colormap != NULL)) - { - int result; - png_image_read_control display; - - memset(&display, 0, (sizeof display)); - display.image = image; - display.buffer = buffer; - display.row_stride = row_stride; - display.colormap = colormap; - display.background = background; - display.local_row = NULL; - - /* Choose the correct 'end' routine; for the color-map case all the - * setup has already been done. - */ - if (image->format & PNG_FORMAT_FLAG_COLORMAP) - result = - png_safe_execute(image, png_image_read_colormap, &display) && - png_safe_execute(image, png_image_read_colormapped, &display); - - else - result = - png_safe_execute(image, png_image_read_direct, &display); - - png_image_free(image); - return result; - } - - else - return png_image_error(image, - "png_image_finish_read[color-map]: no color-map"); - } - - else - return png_image_error(image, - "png_image_finish_read: invalid argument"); - } - - else if (image != NULL) - return png_image_error(image, - "png_image_finish_read: damaged PNG_IMAGE_VERSION"); - - return 0; -} - -#endif /* PNG_SIMPLIFIED_READ_SUPPORTED */ -#endif /* PNG_READ_SUPPORTED */ diff --git a/io2d/src/3rd-party/libpng/pngrio.c b/io2d/src/3rd-party/libpng/pngrio.c deleted file mode 100644 index d786440..0000000 --- a/io2d/src/3rd-party/libpng/pngrio.c +++ /dev/null @@ -1,118 +0,0 @@ - -/* pngrio.c - functions for data input - * - * Last changed in libpng 1.6.0 [February 14, 2013] - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * This file provides a location for all input. Users who need - * special handling are expected to write a function that has the same - * arguments as this and performs a similar function, but that possibly - * has a different input method. Note that you shouldn't change this - * function, but rather write a replacement function and then make - * libpng use it at run time with png_set_read_fn(...). - */ - -#include "pngpriv.h" - -#ifdef PNG_READ_SUPPORTED - -/* Read the data from whatever input you are using. The default routine - * reads from a file pointer. Note that this routine sometimes gets called - * with very small lengths, so you should implement some kind of simple - * buffering if you are using unbuffered reads. This should never be asked - * to read more then 64K on a 16 bit machine. - */ -void /* PRIVATE */ -png_read_data(png_structrp png_ptr, png_bytep data, png_size_t length) -{ - png_debug1(4, "reading %d bytes", (int)length); - - if (png_ptr->read_data_fn != NULL) - (*(png_ptr->read_data_fn))(png_ptr, data, length); - - else - png_error(png_ptr, "Call to NULL read function"); -} - -#ifdef PNG_STDIO_SUPPORTED -/* This is the function that does the actual reading of data. If you are - * not reading from a standard C stream, you should create a replacement - * read_data function and use it at run time with png_set_read_fn(), rather - * than changing the library. - */ -void PNGCBAPI -png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_size_t check; - - if (png_ptr == NULL) - return; - - /* fread() returns 0 on error, so it is OK to store this in a png_size_t - * instead of an int, which is what fread() actually returns. - */ - check = fread(data, 1, length, png_voidcast(png_FILE_p, png_ptr->io_ptr)); - - if (check != length) - png_error(png_ptr, "Read Error"); -} -#endif - -/* This function allows the application to supply a new input function - * for libpng if standard C streams aren't being used. - * - * This function takes as its arguments: - * - * png_ptr - pointer to a png input data structure - * - * io_ptr - pointer to user supplied structure containing info about - * the input functions. May be NULL. - * - * read_data_fn - pointer to a new input function that takes as its - * arguments a pointer to a png_struct, a pointer to - * a location where input data can be stored, and a 32-bit - * unsigned int that is the number of bytes to be read. - * To exit and output any fatal error messages the new write - * function should call png_error(png_ptr, "Error msg"). - * May be NULL, in which case libpng's default function will - * be used. - */ -void PNGAPI -png_set_read_fn(png_structrp png_ptr, png_voidp io_ptr, - png_rw_ptr read_data_fn) -{ - if (png_ptr == NULL) - return; - - png_ptr->io_ptr = io_ptr; - -#ifdef PNG_STDIO_SUPPORTED - if (read_data_fn != NULL) - png_ptr->read_data_fn = read_data_fn; - - else - png_ptr->read_data_fn = png_default_read_data; -#else - png_ptr->read_data_fn = read_data_fn; -#endif - - /* It is an error to write to a read device */ - if (png_ptr->write_data_fn != NULL) - { - png_ptr->write_data_fn = NULL; - png_warning(png_ptr, - "Can't set both read_data_fn and write_data_fn in the" - " same structure"); - } - -#ifdef PNG_WRITE_FLUSH_SUPPORTED - png_ptr->output_flush_fn = NULL; -#endif -} -#endif /* PNG_READ_SUPPORTED */ diff --git a/io2d/src/3rd-party/libpng/pngrtran.c b/io2d/src/3rd-party/libpng/pngrtran.c deleted file mode 100644 index 3b7d484..0000000 --- a/io2d/src/3rd-party/libpng/pngrtran.c +++ /dev/null @@ -1,5110 +0,0 @@ - -/* pngrtran.c - transforms the data in a row for PNG readers - * - * Last changed in libpng 1.6.4 [August 21, 2013] - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * This file contains functions optionally called by an application - * in order to tell libpng how to handle data when reading a PNG. - * Transformations that are used in both reading and writing are - * in pngtrans.c. - */ - -#include "pngpriv.h" - -#ifdef PNG_READ_SUPPORTED - -/* Set the action on getting a CRC error for an ancillary or critical chunk. */ -void PNGAPI -png_set_crc_action(png_structrp png_ptr, int crit_action, int ancil_action) -{ - png_debug(1, "in png_set_crc_action"); - - if (png_ptr == NULL) - return; - - /* Tell libpng how we react to CRC errors in critical chunks */ - switch (crit_action) - { - case PNG_CRC_NO_CHANGE: /* Leave setting as is */ - break; - - case PNG_CRC_WARN_USE: /* Warn/use data */ - png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK; - png_ptr->flags |= PNG_FLAG_CRC_CRITICAL_USE; - break; - - case PNG_CRC_QUIET_USE: /* Quiet/use data */ - png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK; - png_ptr->flags |= PNG_FLAG_CRC_CRITICAL_USE | - PNG_FLAG_CRC_CRITICAL_IGNORE; - break; - - case PNG_CRC_WARN_DISCARD: /* Not a valid action for critical data */ - png_warning(png_ptr, - "Can't discard critical data on CRC error"); - case PNG_CRC_ERROR_QUIT: /* Error/quit */ - - case PNG_CRC_DEFAULT: - default: - png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK; - break; - } - - /* Tell libpng how we react to CRC errors in ancillary chunks */ - switch (ancil_action) - { - case PNG_CRC_NO_CHANGE: /* Leave setting as is */ - break; - - case PNG_CRC_WARN_USE: /* Warn/use data */ - png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK; - png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_USE; - break; - - case PNG_CRC_QUIET_USE: /* Quiet/use data */ - png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK; - png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_USE | - PNG_FLAG_CRC_ANCILLARY_NOWARN; - break; - - case PNG_CRC_ERROR_QUIT: /* Error/quit */ - png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK; - png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_NOWARN; - break; - - case PNG_CRC_WARN_DISCARD: /* Warn/discard data */ - - case PNG_CRC_DEFAULT: - default: - png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK; - break; - } -} - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -/* Is it OK to set a transformation now? Only if png_start_read_image or - * png_read_update_info have not been called. It is not necessary for the IHDR - * to have been read in all cases, the parameter allows for this check too. - */ -static int -png_rtran_ok(png_structrp png_ptr, int need_IHDR) -{ - if (png_ptr != NULL) - { - if (png_ptr->flags & PNG_FLAG_ROW_INIT) - png_app_error(png_ptr, - "invalid after png_start_read_image or png_read_update_info"); - - else if (need_IHDR && (png_ptr->mode & PNG_HAVE_IHDR) == 0) - png_app_error(png_ptr, "invalid before the PNG header has been read"); - - else - { - /* Turn on failure to initialize correctly for all transforms. */ - png_ptr->flags |= PNG_FLAG_DETECT_UNINITIALIZED; - - return 1; /* Ok */ - } - } - - return 0; /* no png_error possible! */ -} -#endif - -#ifdef PNG_READ_BACKGROUND_SUPPORTED -/* Handle alpha and tRNS via a background color */ -void PNGFAPI -png_set_background_fixed(png_structrp png_ptr, - png_const_color_16p background_color, int background_gamma_code, - int need_expand, png_fixed_point background_gamma) -{ - png_debug(1, "in png_set_background_fixed"); - - if (!png_rtran_ok(png_ptr, 0) || background_color == NULL) - return; - - if (background_gamma_code == PNG_BACKGROUND_GAMMA_UNKNOWN) - { - png_warning(png_ptr, "Application must supply a known background gamma"); - return; - } - - png_ptr->transformations |= PNG_COMPOSE | PNG_STRIP_ALPHA; - png_ptr->transformations &= ~PNG_ENCODE_ALPHA; - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; - - png_ptr->background = *background_color; - png_ptr->background_gamma = background_gamma; - png_ptr->background_gamma_type = (png_byte)(background_gamma_code); - if (need_expand) - png_ptr->transformations |= PNG_BACKGROUND_EXPAND; - else - png_ptr->transformations &= ~PNG_BACKGROUND_EXPAND; -} - -# ifdef PNG_FLOATING_POINT_SUPPORTED -void PNGAPI -png_set_background(png_structrp png_ptr, - png_const_color_16p background_color, int background_gamma_code, - int need_expand, double background_gamma) -{ - png_set_background_fixed(png_ptr, background_color, background_gamma_code, - need_expand, png_fixed(png_ptr, background_gamma, "png_set_background")); -} -# endif /* FLOATING_POINT */ -#endif /* READ_BACKGROUND */ - -/* Scale 16-bit depth files to 8-bit depth. If both of these are set then the - * one that pngrtran does first (scale) happens. This is necessary to allow the - * TRANSFORM and API behavior to be somewhat consistent, and it's simpler. - */ -#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED -void PNGAPI -png_set_scale_16(png_structrp png_ptr) -{ - png_debug(1, "in png_set_scale_16"); - - if (!png_rtran_ok(png_ptr, 0)) - return; - - png_ptr->transformations |= PNG_SCALE_16_TO_8; -} -#endif - -#ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED -/* Chop 16-bit depth files to 8-bit depth */ -void PNGAPI -png_set_strip_16(png_structrp png_ptr) -{ - png_debug(1, "in png_set_strip_16"); - - if (!png_rtran_ok(png_ptr, 0)) - return; - - png_ptr->transformations |= PNG_16_TO_8; -} -#endif - -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED -void PNGAPI -png_set_strip_alpha(png_structrp png_ptr) -{ - png_debug(1, "in png_set_strip_alpha"); - - if (!png_rtran_ok(png_ptr, 0)) - return; - - png_ptr->transformations |= PNG_STRIP_ALPHA; -} -#endif - -#if defined(PNG_READ_ALPHA_MODE_SUPPORTED) || defined(PNG_READ_GAMMA_SUPPORTED) -static png_fixed_point -translate_gamma_flags(png_structrp png_ptr, png_fixed_point output_gamma, - int is_screen) -{ - /* Check for flag values. The main reason for having the old Mac value as a - * flag is that it is pretty near impossible to work out what the correct - * value is from Apple documentation - a working Mac system is needed to - * discover the value! - */ - if (output_gamma == PNG_DEFAULT_sRGB || - output_gamma == PNG_FP_1 / PNG_DEFAULT_sRGB) - { - /* If there is no sRGB support this just sets the gamma to the standard - * sRGB value. (This is a side effect of using this function!) - */ -# ifdef PNG_READ_sRGB_SUPPORTED - png_ptr->flags |= PNG_FLAG_ASSUME_sRGB; -# else - PNG_UNUSED(png_ptr) -# endif - if (is_screen) - output_gamma = PNG_GAMMA_sRGB; - else - output_gamma = PNG_GAMMA_sRGB_INVERSE; - } - - else if (output_gamma == PNG_GAMMA_MAC_18 || - output_gamma == PNG_FP_1 / PNG_GAMMA_MAC_18) - { - if (is_screen) - output_gamma = PNG_GAMMA_MAC_OLD; - else - output_gamma = PNG_GAMMA_MAC_INVERSE; - } - - return output_gamma; -} - -# ifdef PNG_FLOATING_POINT_SUPPORTED -static png_fixed_point -convert_gamma_value(png_structrp png_ptr, double output_gamma) -{ - /* The following silently ignores cases where fixed point (times 100,000) - * gamma values are passed to the floating point API. This is safe and it - * means the fixed point constants work just fine with the floating point - * API. The alternative would just lead to undetected errors and spurious - * bug reports. Negative values fail inside the _fixed API unless they - * correspond to the flag values. - */ - if (output_gamma > 0 && output_gamma < 128) - output_gamma *= PNG_FP_1; - - /* This preserves -1 and -2 exactly: */ - output_gamma = floor(output_gamma + .5); - - if (output_gamma > PNG_FP_MAX || output_gamma < PNG_FP_MIN) - png_fixed_error(png_ptr, "gamma value"); - - return (png_fixed_point)output_gamma; -} -# endif -#endif /* READ_ALPHA_MODE || READ_GAMMA */ - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED -void PNGFAPI -png_set_alpha_mode_fixed(png_structrp png_ptr, int mode, - png_fixed_point output_gamma) -{ - int compose = 0; - png_fixed_point file_gamma; - - png_debug(1, "in png_set_alpha_mode"); - - if (!png_rtran_ok(png_ptr, 0)) - return; - - output_gamma = translate_gamma_flags(png_ptr, output_gamma, 1/*screen*/); - - /* Validate the value to ensure it is in a reasonable range. The value - * is expected to be 1 or greater, but this range test allows for some - * viewing correction values. The intent is to weed out users of this API - * who use the inverse of the gamma value accidentally! Since some of these - * values are reasonable this may have to be changed. - */ - if (output_gamma < 70000 || output_gamma > 300000) - png_error(png_ptr, "output gamma out of expected range"); - - /* The default file gamma is the inverse of the output gamma; the output - * gamma may be changed below so get the file value first: - */ - file_gamma = png_reciprocal(output_gamma); - - /* There are really 8 possibilities here, composed of any combination - * of: - * - * premultiply the color channels - * do not encode non-opaque pixels - * encode the alpha as well as the color channels - * - * The differences disappear if the input/output ('screen') gamma is 1.0, - * because then the encoding is a no-op and there is only the choice of - * premultiplying the color channels or not. - * - * png_set_alpha_mode and png_set_background interact because both use - * png_compose to do the work. Calling both is only useful when - * png_set_alpha_mode is used to set the default mode - PNG_ALPHA_PNG - along - * with a default gamma value. Otherwise PNG_COMPOSE must not be set. - */ - switch (mode) - { - case PNG_ALPHA_PNG: /* default: png standard */ - /* No compose, but it may be set by png_set_background! */ - png_ptr->transformations &= ~PNG_ENCODE_ALPHA; - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; - break; - - case PNG_ALPHA_ASSOCIATED: /* color channels premultiplied */ - compose = 1; - png_ptr->transformations &= ~PNG_ENCODE_ALPHA; - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; - /* The output is linear: */ - output_gamma = PNG_FP_1; - break; - - case PNG_ALPHA_OPTIMIZED: /* associated, non-opaque pixels linear */ - compose = 1; - png_ptr->transformations &= ~PNG_ENCODE_ALPHA; - png_ptr->flags |= PNG_FLAG_OPTIMIZE_ALPHA; - /* output_gamma records the encoding of opaque pixels! */ - break; - - case PNG_ALPHA_BROKEN: /* associated, non-linear, alpha encoded */ - compose = 1; - png_ptr->transformations |= PNG_ENCODE_ALPHA; - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; - break; - - default: - png_error(png_ptr, "invalid alpha mode"); - } - - /* Only set the default gamma if the file gamma has not been set (this has - * the side effect that the gamma in a second call to png_set_alpha_mode will - * be ignored.) - */ - if (png_ptr->colorspace.gamma == 0) - { - png_ptr->colorspace.gamma = file_gamma; - png_ptr->colorspace.flags |= PNG_COLORSPACE_HAVE_GAMMA; - } - - /* But always set the output gamma: */ - png_ptr->screen_gamma = output_gamma; - - /* Finally, if pre-multiplying, set the background fields to achieve the - * desired result. - */ - if (compose) - { - /* And obtain alpha pre-multiplication by composing on black: */ - memset(&png_ptr->background, 0, (sizeof png_ptr->background)); - png_ptr->background_gamma = png_ptr->colorspace.gamma; /* just in case */ - png_ptr->background_gamma_type = PNG_BACKGROUND_GAMMA_FILE; - png_ptr->transformations &= ~PNG_BACKGROUND_EXPAND; - - if (png_ptr->transformations & PNG_COMPOSE) - png_error(png_ptr, - "conflicting calls to set alpha mode and background"); - - png_ptr->transformations |= PNG_COMPOSE; - } -} - -# ifdef PNG_FLOATING_POINT_SUPPORTED -void PNGAPI -png_set_alpha_mode(png_structrp png_ptr, int mode, double output_gamma) -{ - png_set_alpha_mode_fixed(png_ptr, mode, convert_gamma_value(png_ptr, - output_gamma)); -} -# endif -#endif - -#ifdef PNG_READ_QUANTIZE_SUPPORTED -/* Dither file to 8-bit. Supply a palette, the current number - * of elements in the palette, the maximum number of elements - * allowed, and a histogram if possible. If the current number - * of colors is greater then the maximum number, the palette will be - * modified to fit in the maximum number. "full_quantize" indicates - * whether we need a quantizing cube set up for RGB images, or if we - * simply are reducing the number of colors in a paletted image. - */ - -typedef struct png_dsort_struct -{ - struct png_dsort_struct * next; - png_byte left; - png_byte right; -} png_dsort; -typedef png_dsort * png_dsortp; -typedef png_dsort * * png_dsortpp; - -void PNGAPI -png_set_quantize(png_structrp png_ptr, png_colorp palette, - int num_palette, int maximum_colors, png_const_uint_16p histogram, - int full_quantize) -{ - png_debug(1, "in png_set_quantize"); - - if (!png_rtran_ok(png_ptr, 0)) - return; - - png_ptr->transformations |= PNG_QUANTIZE; - - if (!full_quantize) - { - int i; - - png_ptr->quantize_index = (png_bytep)png_malloc(png_ptr, - (png_uint_32)(num_palette * (sizeof (png_byte)))); - for (i = 0; i < num_palette; i++) - png_ptr->quantize_index[i] = (png_byte)i; - } - - if (num_palette > maximum_colors) - { - if (histogram != NULL) - { - /* This is easy enough, just throw out the least used colors. - * Perhaps not the best solution, but good enough. - */ - - int i; - - /* Initialize an array to sort colors */ - png_ptr->quantize_sort = (png_bytep)png_malloc(png_ptr, - (png_uint_32)(num_palette * (sizeof (png_byte)))); - - /* Initialize the quantize_sort array */ - for (i = 0; i < num_palette; i++) - png_ptr->quantize_sort[i] = (png_byte)i; - - /* Find the least used palette entries by starting a - * bubble sort, and running it until we have sorted - * out enough colors. Note that we don't care about - * sorting all the colors, just finding which are - * least used. - */ - - for (i = num_palette - 1; i >= maximum_colors; i--) - { - int done; /* To stop early if the list is pre-sorted */ - int j; - - done = 1; - for (j = 0; j < i; j++) - { - if (histogram[png_ptr->quantize_sort[j]] - < histogram[png_ptr->quantize_sort[j + 1]]) - { - png_byte t; - - t = png_ptr->quantize_sort[j]; - png_ptr->quantize_sort[j] = png_ptr->quantize_sort[j + 1]; - png_ptr->quantize_sort[j + 1] = t; - done = 0; - } - } - - if (done) - break; - } - - /* Swap the palette around, and set up a table, if necessary */ - if (full_quantize) - { - int j = num_palette; - - /* Put all the useful colors within the max, but don't - * move the others. - */ - for (i = 0; i < maximum_colors; i++) - { - if ((int)png_ptr->quantize_sort[i] >= maximum_colors) - { - do - j--; - while ((int)png_ptr->quantize_sort[j] >= maximum_colors); - - palette[i] = palette[j]; - } - } - } - else - { - int j = num_palette; - - /* Move all the used colors inside the max limit, and - * develop a translation table. - */ - for (i = 0; i < maximum_colors; i++) - { - /* Only move the colors we need to */ - if ((int)png_ptr->quantize_sort[i] >= maximum_colors) - { - png_color tmp_color; - - do - j--; - while ((int)png_ptr->quantize_sort[j] >= maximum_colors); - - tmp_color = palette[j]; - palette[j] = palette[i]; - palette[i] = tmp_color; - /* Indicate where the color went */ - png_ptr->quantize_index[j] = (png_byte)i; - png_ptr->quantize_index[i] = (png_byte)j; - } - } - - /* Find closest color for those colors we are not using */ - for (i = 0; i < num_palette; i++) - { - if ((int)png_ptr->quantize_index[i] >= maximum_colors) - { - int min_d, k, min_k, d_index; - - /* Find the closest color to one we threw out */ - d_index = png_ptr->quantize_index[i]; - min_d = PNG_COLOR_DIST(palette[d_index], palette[0]); - for (k = 1, min_k = 0; k < maximum_colors; k++) - { - int d; - - d = PNG_COLOR_DIST(palette[d_index], palette[k]); - - if (d < min_d) - { - min_d = d; - min_k = k; - } - } - /* Point to closest color */ - png_ptr->quantize_index[i] = (png_byte)min_k; - } - } - } - png_free(png_ptr, png_ptr->quantize_sort); - png_ptr->quantize_sort = NULL; - } - else - { - /* This is much harder to do simply (and quickly). Perhaps - * we need to go through a median cut routine, but those - * don't always behave themselves with only a few colors - * as input. So we will just find the closest two colors, - * and throw out one of them (chosen somewhat randomly). - * [We don't understand this at all, so if someone wants to - * work on improving it, be our guest - AED, GRP] - */ - int i; - int max_d; - int num_new_palette; - png_dsortp t; - png_dsortpp hash; - - t = NULL; - - /* Initialize palette index arrays */ - png_ptr->index_to_palette = (png_bytep)png_malloc(png_ptr, - (png_uint_32)(num_palette * (sizeof (png_byte)))); - png_ptr->palette_to_index = (png_bytep)png_malloc(png_ptr, - (png_uint_32)(num_palette * (sizeof (png_byte)))); - - /* Initialize the sort array */ - for (i = 0; i < num_palette; i++) - { - png_ptr->index_to_palette[i] = (png_byte)i; - png_ptr->palette_to_index[i] = (png_byte)i; - } - - hash = (png_dsortpp)png_calloc(png_ptr, (png_uint_32)(769 * - (sizeof (png_dsortp)))); - - num_new_palette = num_palette; - - /* Initial wild guess at how far apart the farthest pixel - * pair we will be eliminating will be. Larger - * numbers mean more areas will be allocated, Smaller - * numbers run the risk of not saving enough data, and - * having to do this all over again. - * - * I have not done extensive checking on this number. - */ - max_d = 96; - - while (num_new_palette > maximum_colors) - { - for (i = 0; i < num_new_palette - 1; i++) - { - int j; - - for (j = i + 1; j < num_new_palette; j++) - { - int d; - - d = PNG_COLOR_DIST(palette[i], palette[j]); - - if (d <= max_d) - { - - t = (png_dsortp)png_malloc_warn(png_ptr, - (png_uint_32)(sizeof (png_dsort))); - - if (t == NULL) - break; - - t->next = hash[d]; - t->left = (png_byte)i; - t->right = (png_byte)j; - hash[d] = t; - } - } - if (t == NULL) - break; - } - - if (t != NULL) - for (i = 0; i <= max_d; i++) - { - if (hash[i] != NULL) - { - png_dsortp p; - - for (p = hash[i]; p; p = p->next) - { - if ((int)png_ptr->index_to_palette[p->left] - < num_new_palette && - (int)png_ptr->index_to_palette[p->right] - < num_new_palette) - { - int j, next_j; - - if (num_new_palette & 0x01) - { - j = p->left; - next_j = p->right; - } - else - { - j = p->right; - next_j = p->left; - } - - num_new_palette--; - palette[png_ptr->index_to_palette[j]] - = palette[num_new_palette]; - if (!full_quantize) - { - int k; - - for (k = 0; k < num_palette; k++) - { - if (png_ptr->quantize_index[k] == - png_ptr->index_to_palette[j]) - png_ptr->quantize_index[k] = - png_ptr->index_to_palette[next_j]; - - if ((int)png_ptr->quantize_index[k] == - num_new_palette) - png_ptr->quantize_index[k] = - png_ptr->index_to_palette[j]; - } - } - - png_ptr->index_to_palette[png_ptr->palette_to_index - [num_new_palette]] = png_ptr->index_to_palette[j]; - - png_ptr->palette_to_index[png_ptr->index_to_palette[j]] - = png_ptr->palette_to_index[num_new_palette]; - - png_ptr->index_to_palette[j] = - (png_byte)num_new_palette; - - png_ptr->palette_to_index[num_new_palette] = - (png_byte)j; - } - if (num_new_palette <= maximum_colors) - break; - } - if (num_new_palette <= maximum_colors) - break; - } - } - - for (i = 0; i < 769; i++) - { - if (hash[i] != NULL) - { - png_dsortp p = hash[i]; - while (p) - { - t = p->next; - png_free(png_ptr, p); - p = t; - } - } - hash[i] = 0; - } - max_d += 96; - } - png_free(png_ptr, hash); - png_free(png_ptr, png_ptr->palette_to_index); - png_free(png_ptr, png_ptr->index_to_palette); - png_ptr->palette_to_index = NULL; - png_ptr->index_to_palette = NULL; - } - num_palette = maximum_colors; - } - if (png_ptr->palette == NULL) - { - png_ptr->palette = palette; - } - png_ptr->num_palette = (png_uint_16)num_palette; - - if (full_quantize) - { - int i; - png_bytep distance; - int total_bits = PNG_QUANTIZE_RED_BITS + PNG_QUANTIZE_GREEN_BITS + - PNG_QUANTIZE_BLUE_BITS; - int num_red = (1 << PNG_QUANTIZE_RED_BITS); - int num_green = (1 << PNG_QUANTIZE_GREEN_BITS); - int num_blue = (1 << PNG_QUANTIZE_BLUE_BITS); - png_size_t num_entries = ((png_size_t)1 << total_bits); - - png_ptr->palette_lookup = (png_bytep)png_calloc(png_ptr, - (png_uint_32)(num_entries * (sizeof (png_byte)))); - - distance = (png_bytep)png_malloc(png_ptr, (png_uint_32)(num_entries * - (sizeof (png_byte)))); - - memset(distance, 0xff, num_entries * (sizeof (png_byte))); - - for (i = 0; i < num_palette; i++) - { - int ir, ig, ib; - int r = (palette[i].red >> (8 - PNG_QUANTIZE_RED_BITS)); - int g = (palette[i].green >> (8 - PNG_QUANTIZE_GREEN_BITS)); - int b = (palette[i].blue >> (8 - PNG_QUANTIZE_BLUE_BITS)); - - for (ir = 0; ir < num_red; ir++) - { - /* int dr = abs(ir - r); */ - int dr = ((ir > r) ? ir - r : r - ir); - int index_r = (ir << (PNG_QUANTIZE_BLUE_BITS + - PNG_QUANTIZE_GREEN_BITS)); - - for (ig = 0; ig < num_green; ig++) - { - /* int dg = abs(ig - g); */ - int dg = ((ig > g) ? ig - g : g - ig); - int dt = dr + dg; - int dm = ((dr > dg) ? dr : dg); - int index_g = index_r | (ig << PNG_QUANTIZE_BLUE_BITS); - - for (ib = 0; ib < num_blue; ib++) - { - int d_index = index_g | ib; - /* int db = abs(ib - b); */ - int db = ((ib > b) ? ib - b : b - ib); - int dmax = ((dm > db) ? dm : db); - int d = dmax + dt + db; - - if (d < (int)distance[d_index]) - { - distance[d_index] = (png_byte)d; - png_ptr->palette_lookup[d_index] = (png_byte)i; - } - } - } - } - } - - png_free(png_ptr, distance); - } -} -#endif /* PNG_READ_QUANTIZE_SUPPORTED */ - -#ifdef PNG_READ_GAMMA_SUPPORTED -void PNGFAPI -png_set_gamma_fixed(png_structrp png_ptr, png_fixed_point scrn_gamma, - png_fixed_point file_gamma) -{ - png_debug(1, "in png_set_gamma_fixed"); - - if (!png_rtran_ok(png_ptr, 0)) - return; - - /* New in libpng-1.5.4 - reserve particular negative values as flags. */ - scrn_gamma = translate_gamma_flags(png_ptr, scrn_gamma, 1/*screen*/); - file_gamma = translate_gamma_flags(png_ptr, file_gamma, 0/*file*/); - - /* Checking the gamma values for being >0 was added in 1.5.4 along with the - * premultiplied alpha support; this actually hides an undocumented feature - * of the previous implementation which allowed gamma processing to be - * disabled in background handling. There is no evidence (so far) that this - * was being used; however, png_set_background itself accepted and must still - * accept '0' for the gamma value it takes, because it isn't always used. - * - * Since this is an API change (albeit a very minor one that removes an - * undocumented API feature) the following checks were only enabled in - * libpng-1.6.0. - */ - if (file_gamma <= 0) - png_error(png_ptr, "invalid file gamma in png_set_gamma"); - - if (scrn_gamma <= 0) - png_error(png_ptr, "invalid screen gamma in png_set_gamma"); - - /* Set the gamma values unconditionally - this overrides the value in the PNG - * file if a gAMA chunk was present. png_set_alpha_mode provides a - * different, easier, way to default the file gamma. - */ - png_ptr->colorspace.gamma = file_gamma; - png_ptr->colorspace.flags |= PNG_COLORSPACE_HAVE_GAMMA; - png_ptr->screen_gamma = scrn_gamma; -} - -# ifdef PNG_FLOATING_POINT_SUPPORTED -void PNGAPI -png_set_gamma(png_structrp png_ptr, double scrn_gamma, double file_gamma) -{ - png_set_gamma_fixed(png_ptr, convert_gamma_value(png_ptr, scrn_gamma), - convert_gamma_value(png_ptr, file_gamma)); -} -# endif /* FLOATING_POINT_SUPPORTED */ -#endif /* READ_GAMMA */ - -#ifdef PNG_READ_EXPAND_SUPPORTED -/* Expand paletted images to RGB, expand grayscale images of - * less than 8-bit depth to 8-bit depth, and expand tRNS chunks - * to alpha channels. - */ -void PNGAPI -png_set_expand(png_structrp png_ptr) -{ - png_debug(1, "in png_set_expand"); - - if (!png_rtran_ok(png_ptr, 0)) - return; - - png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS); -} - -/* GRR 19990627: the following three functions currently are identical - * to png_set_expand(). However, it is entirely reasonable that someone - * might wish to expand an indexed image to RGB but *not* expand a single, - * fully transparent palette entry to a full alpha channel--perhaps instead - * convert tRNS to the grayscale/RGB format (16-bit RGB value), or replace - * the transparent color with a particular RGB value, or drop tRNS entirely. - * IOW, a future version of the library may make the transformations flag - * a bit more fine-grained, with separate bits for each of these three - * functions. - * - * More to the point, these functions make it obvious what libpng will be - * doing, whereas "expand" can (and does) mean any number of things. - * - * GRP 20060307: In libpng-1.2.9, png_set_gray_1_2_4_to_8() was modified - * to expand only the sample depth but not to expand the tRNS to alpha - * and its name was changed to png_set_expand_gray_1_2_4_to_8(). - */ - -/* Expand paletted images to RGB. */ -void PNGAPI -png_set_palette_to_rgb(png_structrp png_ptr) -{ - png_debug(1, "in png_set_palette_to_rgb"); - - if (!png_rtran_ok(png_ptr, 0)) - return; - - png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS); -} - -/* Expand grayscale images of less than 8-bit depth to 8 bits. */ -void PNGAPI -png_set_expand_gray_1_2_4_to_8(png_structrp png_ptr) -{ - png_debug(1, "in png_set_expand_gray_1_2_4_to_8"); - - if (!png_rtran_ok(png_ptr, 0)) - return; - - png_ptr->transformations |= PNG_EXPAND; -} - -/* Expand tRNS chunks to alpha channels. */ -void PNGAPI -png_set_tRNS_to_alpha(png_structrp png_ptr) -{ - png_debug(1, "in png_set_tRNS_to_alpha"); - - if (!png_rtran_ok(png_ptr, 0)) - return; - - png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS); -} -#endif /* defined(PNG_READ_EXPAND_SUPPORTED) */ - -#ifdef PNG_READ_EXPAND_16_SUPPORTED -/* Expand to 16-bit channels, expand the tRNS chunk too (because otherwise - * it may not work correctly.) - */ -void PNGAPI -png_set_expand_16(png_structrp png_ptr) -{ - png_debug(1, "in png_set_expand_16"); - - if (!png_rtran_ok(png_ptr, 0)) - return; - - png_ptr->transformations |= (PNG_EXPAND_16 | PNG_EXPAND | PNG_EXPAND_tRNS); -} -#endif - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED -void PNGAPI -png_set_gray_to_rgb(png_structrp png_ptr) -{ - png_debug(1, "in png_set_gray_to_rgb"); - - if (!png_rtran_ok(png_ptr, 0)) - return; - - /* Because rgb must be 8 bits or more: */ - png_set_expand_gray_1_2_4_to_8(png_ptr); - png_ptr->transformations |= PNG_GRAY_TO_RGB; -} -#endif - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -void PNGFAPI -png_set_rgb_to_gray_fixed(png_structrp png_ptr, int error_action, - png_fixed_point red, png_fixed_point green) -{ - png_debug(1, "in png_set_rgb_to_gray"); - - /* Need the IHDR here because of the check on color_type below. */ - /* TODO: fix this */ - if (!png_rtran_ok(png_ptr, 1)) - return; - - switch(error_action) - { - case PNG_ERROR_ACTION_NONE: - png_ptr->transformations |= PNG_RGB_TO_GRAY; - break; - - case PNG_ERROR_ACTION_WARN: - png_ptr->transformations |= PNG_RGB_TO_GRAY_WARN; - break; - - case PNG_ERROR_ACTION_ERROR: - png_ptr->transformations |= PNG_RGB_TO_GRAY_ERR; - break; - - default: - png_error(png_ptr, "invalid error action to rgb_to_gray"); - break; - } - - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) -#ifdef PNG_READ_EXPAND_SUPPORTED - png_ptr->transformations |= PNG_EXPAND; -#else - { - /* Make this an error in 1.6 because otherwise the application may assume - * that it just worked and get a memory overwrite. - */ - png_error(png_ptr, - "Cannot do RGB_TO_GRAY without EXPAND_SUPPORTED"); - - /* png_ptr->transformations &= ~PNG_RGB_TO_GRAY; */ - } -#endif - { - if (red >= 0 && green >= 0 && red + green <= PNG_FP_1) - { - png_uint_16 red_int, green_int; - - /* NOTE: this calculation does not round, but this behavior is retained - * for consistency, the inaccuracy is very small. The code here always - * overwrites the coefficients, regardless of whether they have been - * defaulted or set already. - */ - red_int = (png_uint_16)(((png_uint_32)red*32768)/100000); - green_int = (png_uint_16)(((png_uint_32)green*32768)/100000); - - png_ptr->rgb_to_gray_red_coeff = red_int; - png_ptr->rgb_to_gray_green_coeff = green_int; - png_ptr->rgb_to_gray_coefficients_set = 1; - } - - else - { - if (red >= 0 && green >= 0) - png_app_warning(png_ptr, - "ignoring out of range rgb_to_gray coefficients"); - - /* Use the defaults, from the cHRM chunk if set, else the historical - * values which are close to the sRGB/HDTV/ITU-Rec 709 values. See - * png_do_rgb_to_gray for more discussion of the values. In this case - * the coefficients are not marked as 'set' and are not overwritten if - * something has already provided a default. - */ - if (png_ptr->rgb_to_gray_red_coeff == 0 && - png_ptr->rgb_to_gray_green_coeff == 0) - { - png_ptr->rgb_to_gray_red_coeff = 6968; - png_ptr->rgb_to_gray_green_coeff = 23434; - /* png_ptr->rgb_to_gray_blue_coeff = 2366; */ - } - } - } -} - -#ifdef PNG_FLOATING_POINT_SUPPORTED -/* Convert a RGB image to a grayscale of the same width. This allows us, - * for example, to convert a 24 bpp RGB image into an 8 bpp grayscale image. - */ - -void PNGAPI -png_set_rgb_to_gray(png_structrp png_ptr, int error_action, double red, - double green) -{ - png_set_rgb_to_gray_fixed(png_ptr, error_action, - png_fixed(png_ptr, red, "rgb to gray red coefficient"), - png_fixed(png_ptr, green, "rgb to gray green coefficient")); -} -#endif /* FLOATING POINT */ - -#endif /* RGB_TO_GRAY */ - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) -void PNGAPI -png_set_read_user_transform_fn(png_structrp png_ptr, png_user_transform_ptr - read_user_transform_fn) -{ - png_debug(1, "in png_set_read_user_transform_fn"); - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED - png_ptr->transformations |= PNG_USER_TRANSFORM; - png_ptr->read_user_transform_fn = read_user_transform_fn; -#endif -} -#endif - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -#ifdef PNG_READ_GAMMA_SUPPORTED -/* In the case of gamma transformations only do transformations on images where - * the [file] gamma and screen_gamma are not close reciprocals, otherwise it - * slows things down slightly, and also needlessly introduces small errors. - */ -static int /* PRIVATE */ -png_gamma_threshold(png_fixed_point screen_gamma, png_fixed_point file_gamma) -{ - /* PNG_GAMMA_THRESHOLD is the threshold for performing gamma - * correction as a difference of the overall transform from 1.0 - * - * We want to compare the threshold with s*f - 1, if we get - * overflow here it is because of wacky gamma values so we - * turn on processing anyway. - */ - png_fixed_point gtest; - return !png_muldiv(>est, screen_gamma, file_gamma, PNG_FP_1) || - png_gamma_significant(gtest); -} -#endif - -/* Initialize everything needed for the read. This includes modifying - * the palette. - */ - -/*For the moment 'png_init_palette_transformations' and - * 'png_init_rgb_transformations' only do some flag canceling optimizations. - * The intent is that these two routines should have palette or rgb operations - * extracted from 'png_init_read_transformations'. - */ -static void /* PRIVATE */ -png_init_palette_transformations(png_structrp png_ptr) -{ - /* Called to handle the (input) palette case. In png_do_read_transformations - * the first step is to expand the palette if requested, so this code must - * take care to only make changes that are invariant with respect to the - * palette expansion, or only do them if there is no expansion. - * - * STRIP_ALPHA has already been handled in the caller (by setting num_trans - * to 0.) - */ - int input_has_alpha = 0; - int input_has_transparency = 0; - - if (png_ptr->num_trans > 0) - { - int i; - - /* Ignore if all the entries are opaque (unlikely!) */ - for (i=0; inum_trans; ++i) - { - if (png_ptr->trans_alpha[i] == 255) - continue; - else if (png_ptr->trans_alpha[i] == 0) - input_has_transparency = 1; - else - { - input_has_transparency = 1; - input_has_alpha = 1; - break; - } - } - } - - /* If no alpha we can optimize. */ - if (!input_has_alpha) - { - /* Any alpha means background and associative alpha processing is - * required, however if the alpha is 0 or 1 throughout OPTIIMIZE_ALPHA - * and ENCODE_ALPHA are irrelevant. - */ - png_ptr->transformations &= ~PNG_ENCODE_ALPHA; - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; - - if (!input_has_transparency) - png_ptr->transformations &= ~(PNG_COMPOSE | PNG_BACKGROUND_EXPAND); - } - -#if defined(PNG_READ_EXPAND_SUPPORTED) && defined(PNG_READ_BACKGROUND_SUPPORTED) - /* png_set_background handling - deals with the complexity of whether the - * background color is in the file format or the screen format in the case - * where an 'expand' will happen. - */ - - /* The following code cannot be entered in the alpha pre-multiplication case - * because PNG_BACKGROUND_EXPAND is cancelled below. - */ - if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) && - (png_ptr->transformations & PNG_EXPAND)) - { - { - png_ptr->background.red = - png_ptr->palette[png_ptr->background.index].red; - png_ptr->background.green = - png_ptr->palette[png_ptr->background.index].green; - png_ptr->background.blue = - png_ptr->palette[png_ptr->background.index].blue; - -#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED - if (png_ptr->transformations & PNG_INVERT_ALPHA) - { - if (!(png_ptr->transformations & PNG_EXPAND_tRNS)) - { - /* Invert the alpha channel (in tRNS) unless the pixels are - * going to be expanded, in which case leave it for later - */ - int i, istop = png_ptr->num_trans; - - for (i=0; itrans_alpha[i] = (png_byte)(255 - - png_ptr->trans_alpha[i]); - } - } -#endif /* PNG_READ_INVERT_ALPHA_SUPPORTED */ - } - } /* background expand and (therefore) no alpha association. */ -#endif /* PNG_READ_EXPAND_SUPPORTED && PNG_READ_BACKGROUND_SUPPORTED */ -} - -static void /* PRIVATE */ -png_init_rgb_transformations(png_structrp png_ptr) -{ - /* Added to libpng-1.5.4: check the color type to determine whether there - * is any alpha or transparency in the image and simply cancel the - * background and alpha mode stuff if there isn't. - */ - int input_has_alpha = (png_ptr->color_type & PNG_COLOR_MASK_ALPHA) != 0; - int input_has_transparency = png_ptr->num_trans > 0; - - /* If no alpha we can optimize. */ - if (!input_has_alpha) - { - /* Any alpha means background and associative alpha processing is - * required, however if the alpha is 0 or 1 throughout OPTIIMIZE_ALPHA - * and ENCODE_ALPHA are irrelevant. - */ -# ifdef PNG_READ_ALPHA_MODE_SUPPORTED - png_ptr->transformations &= ~PNG_ENCODE_ALPHA; - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; -# endif - - if (!input_has_transparency) - png_ptr->transformations &= ~(PNG_COMPOSE | PNG_BACKGROUND_EXPAND); - } - -#if defined(PNG_READ_EXPAND_SUPPORTED) && defined(PNG_READ_BACKGROUND_SUPPORTED) - /* png_set_background handling - deals with the complexity of whether the - * background color is in the file format or the screen format in the case - * where an 'expand' will happen. - */ - - /* The following code cannot be entered in the alpha pre-multiplication case - * because PNG_BACKGROUND_EXPAND is cancelled below. - */ - if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) && - (png_ptr->transformations & PNG_EXPAND) && - !(png_ptr->color_type & PNG_COLOR_MASK_COLOR)) - /* i.e., GRAY or GRAY_ALPHA */ - { - { - /* Expand background and tRNS chunks */ - int gray = png_ptr->background.gray; - int trans_gray = png_ptr->trans_color.gray; - - switch (png_ptr->bit_depth) - { - case 1: - gray *= 0xff; - trans_gray *= 0xff; - break; - - case 2: - gray *= 0x55; - trans_gray *= 0x55; - break; - - case 4: - gray *= 0x11; - trans_gray *= 0x11; - break; - - default: - - case 8: - /* FALL THROUGH (Already 8 bits) */ - - case 16: - /* Already a full 16 bits */ - break; - } - - png_ptr->background.red = png_ptr->background.green = - png_ptr->background.blue = (png_uint_16)gray; - - if (!(png_ptr->transformations & PNG_EXPAND_tRNS)) - { - png_ptr->trans_color.red = png_ptr->trans_color.green = - png_ptr->trans_color.blue = (png_uint_16)trans_gray; - } - } - } /* background expand and (therefore) no alpha association. */ -#endif /* PNG_READ_EXPAND_SUPPORTED && PNG_READ_BACKGROUND_SUPPORTED */ -} - -void /* PRIVATE */ -png_init_read_transformations(png_structrp png_ptr) -{ - png_debug(1, "in png_init_read_transformations"); - - /* This internal function is called from png_read_start_row in pngrutil.c - * and it is called before the 'rowbytes' calculation is done, so the code - * in here can change or update the transformations flags. - * - * First do updates that do not depend on the details of the PNG image data - * being processed. - */ - -#ifdef PNG_READ_GAMMA_SUPPORTED - /* Prior to 1.5.4 these tests were performed from png_set_gamma, 1.5.4 adds - * png_set_alpha_mode and this is another source for a default file gamma so - * the test needs to be performed later - here. In addition prior to 1.5.4 - * the tests were repeated for the PALETTE color type here - this is no - * longer necessary (and doesn't seem to have been necessary before.) - */ - { - /* The following temporary indicates if overall gamma correction is - * required. - */ - int gamma_correction = 0; - - if (png_ptr->colorspace.gamma != 0) /* has been set */ - { - if (png_ptr->screen_gamma != 0) /* screen set too */ - gamma_correction = png_gamma_threshold(png_ptr->colorspace.gamma, - png_ptr->screen_gamma); - - else - /* Assume the output matches the input; a long time default behavior - * of libpng, although the standard has nothing to say about this. - */ - png_ptr->screen_gamma = png_reciprocal(png_ptr->colorspace.gamma); - } - - else if (png_ptr->screen_gamma != 0) - /* The converse - assume the file matches the screen, note that this - * perhaps undesireable default can (from 1.5.4) be changed by calling - * png_set_alpha_mode (even if the alpha handling mode isn't required - * or isn't changed from the default.) - */ - png_ptr->colorspace.gamma = png_reciprocal(png_ptr->screen_gamma); - - else /* neither are set */ - /* Just in case the following prevents any processing - file and screen - * are both assumed to be linear and there is no way to introduce a - * third gamma value other than png_set_background with 'UNIQUE', and, - * prior to 1.5.4 - */ - png_ptr->screen_gamma = png_ptr->colorspace.gamma = PNG_FP_1; - - /* We have a gamma value now. */ - png_ptr->colorspace.flags |= PNG_COLORSPACE_HAVE_GAMMA; - - /* Now turn the gamma transformation on or off as appropriate. Notice - * that PNG_GAMMA just refers to the file->screen correction. Alpha - * composition may independently cause gamma correction because it needs - * linear data (e.g. if the file has a gAMA chunk but the screen gamma - * hasn't been specified.) In any case this flag may get turned off in - * the code immediately below if the transform can be handled outside the - * row loop. - */ - if (gamma_correction) - png_ptr->transformations |= PNG_GAMMA; - - else - png_ptr->transformations &= ~PNG_GAMMA; - } -#endif - - /* Certain transformations have the effect of preventing other - * transformations that happen afterward in png_do_read_transformations, - * resolve the interdependencies here. From the code of - * png_do_read_transformations the order is: - * - * 1) PNG_EXPAND (including PNG_EXPAND_tRNS) - * 2) PNG_STRIP_ALPHA (if no compose) - * 3) PNG_RGB_TO_GRAY - * 4) PNG_GRAY_TO_RGB iff !PNG_BACKGROUND_IS_GRAY - * 5) PNG_COMPOSE - * 6) PNG_GAMMA - * 7) PNG_STRIP_ALPHA (if compose) - * 8) PNG_ENCODE_ALPHA - * 9) PNG_SCALE_16_TO_8 - * 10) PNG_16_TO_8 - * 11) PNG_QUANTIZE (converts to palette) - * 12) PNG_EXPAND_16 - * 13) PNG_GRAY_TO_RGB iff PNG_BACKGROUND_IS_GRAY - * 14) PNG_INVERT_MONO - * 15) PNG_SHIFT - * 16) PNG_PACK - * 17) PNG_BGR - * 18) PNG_PACKSWAP - * 19) PNG_FILLER (includes PNG_ADD_ALPHA) - * 20) PNG_INVERT_ALPHA - * 21) PNG_SWAP_ALPHA - * 22) PNG_SWAP_BYTES - * 23) PNG_USER_TRANSFORM [must be last] - */ -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED - if ((png_ptr->transformations & PNG_STRIP_ALPHA) && - !(png_ptr->transformations & PNG_COMPOSE)) - { - /* Stripping the alpha channel happens immediately after the 'expand' - * transformations, before all other transformation, so it cancels out - * the alpha handling. It has the side effect negating the effect of - * PNG_EXPAND_tRNS too: - */ - png_ptr->transformations &= ~(PNG_BACKGROUND_EXPAND | PNG_ENCODE_ALPHA | - PNG_EXPAND_tRNS); - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; - - /* Kill the tRNS chunk itself too. Prior to 1.5.4 this did not happen - * so transparency information would remain just so long as it wasn't - * expanded. This produces unexpected API changes if the set of things - * that do PNG_EXPAND_tRNS changes (perfectly possible given the - * documentation - which says ask for what you want, accept what you - * get.) This makes the behavior consistent from 1.5.4: - */ - png_ptr->num_trans = 0; - } -#endif /* STRIP_ALPHA supported, no COMPOSE */ - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - /* If the screen gamma is about 1.0 then the OPTIMIZE_ALPHA and ENCODE_ALPHA - * settings will have no effect. - */ - if (!png_gamma_significant(png_ptr->screen_gamma)) - { - png_ptr->transformations &= ~PNG_ENCODE_ALPHA; - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; - } -#endif - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED - /* Make sure the coefficients for the rgb to gray conversion are set - * appropriately. - */ - if (png_ptr->transformations & PNG_RGB_TO_GRAY) - png_colorspace_set_rgb_coefficients(png_ptr); -#endif - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED -#if defined(PNG_READ_EXPAND_SUPPORTED) && defined(PNG_READ_BACKGROUND_SUPPORTED) - /* Detect gray background and attempt to enable optimization for - * gray --> RGB case. - * - * Note: if PNG_BACKGROUND_EXPAND is set and color_type is either RGB or - * RGB_ALPHA (in which case need_expand is superfluous anyway), the - * background color might actually be gray yet not be flagged as such. - * This is not a problem for the current code, which uses - * PNG_BACKGROUND_IS_GRAY only to decide when to do the - * png_do_gray_to_rgb() transformation. - * - * TODO: this code needs to be revised to avoid the complexity and - * interdependencies. The color type of the background should be recorded in - * png_set_background, along with the bit depth, then the code has a record - * of exactly what color space the background is currently in. - */ - if (png_ptr->transformations & PNG_BACKGROUND_EXPAND) - { - /* PNG_BACKGROUND_EXPAND: the background is in the file color space, so if - * the file was grayscale the background value is gray. - */ - if (!(png_ptr->color_type & PNG_COLOR_MASK_COLOR)) - png_ptr->mode |= PNG_BACKGROUND_IS_GRAY; - } - - else if (png_ptr->transformations & PNG_COMPOSE) - { - /* PNG_COMPOSE: png_set_background was called with need_expand false, - * so the color is in the color space of the output or png_set_alpha_mode - * was called and the color is black. Ignore RGB_TO_GRAY because that - * happens before GRAY_TO_RGB. - */ - if (png_ptr->transformations & PNG_GRAY_TO_RGB) - { - if (png_ptr->background.red == png_ptr->background.green && - png_ptr->background.red == png_ptr->background.blue) - { - png_ptr->mode |= PNG_BACKGROUND_IS_GRAY; - png_ptr->background.gray = png_ptr->background.red; - } - } - } -#endif /* PNG_READ_EXPAND_SUPPORTED && PNG_READ_BACKGROUND_SUPPORTED */ -#endif /* PNG_READ_GRAY_TO_RGB_SUPPORTED */ - - /* For indexed PNG data (PNG_COLOR_TYPE_PALETTE) many of the transformations - * can be performed directly on the palette, and some (such as rgb to gray) - * can be optimized inside the palette. This is particularly true of the - * composite (background and alpha) stuff, which can be pretty much all done - * in the palette even if the result is expanded to RGB or gray afterward. - * - * NOTE: this is Not Yet Implemented, the code behaves as in 1.5.1 and - * earlier and the palette stuff is actually handled on the first row. This - * leads to the reported bug that the palette returned by png_get_PLTE is not - * updated. - */ - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - png_init_palette_transformations(png_ptr); - - else - png_init_rgb_transformations(png_ptr); - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) && \ - defined(PNG_READ_EXPAND_16_SUPPORTED) - if ((png_ptr->transformations & PNG_EXPAND_16) && - (png_ptr->transformations & PNG_COMPOSE) && - !(png_ptr->transformations & PNG_BACKGROUND_EXPAND) && - png_ptr->bit_depth != 16) - { - /* TODO: fix this. Because the expand_16 operation is after the compose - * handling the background color must be 8, not 16, bits deep, but the - * application will supply a 16-bit value so reduce it here. - * - * The PNG_BACKGROUND_EXPAND code above does not expand to 16 bits at - * present, so that case is ok (until do_expand_16 is moved.) - * - * NOTE: this discards the low 16 bits of the user supplied background - * color, but until expand_16 works properly there is no choice! - */ -# define CHOP(x) (x)=((png_uint_16)PNG_DIV257(x)) - CHOP(png_ptr->background.red); - CHOP(png_ptr->background.green); - CHOP(png_ptr->background.blue); - CHOP(png_ptr->background.gray); -# undef CHOP - } -#endif /* PNG_READ_BACKGROUND_SUPPORTED && PNG_READ_EXPAND_16_SUPPORTED */ - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) && \ - (defined(PNG_READ_SCALE_16_TO_8_SUPPORTED) || \ - defined(PNG_READ_STRIP_16_TO_8_SUPPORTED)) - if ((png_ptr->transformations & (PNG_16_TO_8|PNG_SCALE_16_TO_8)) && - (png_ptr->transformations & PNG_COMPOSE) && - !(png_ptr->transformations & PNG_BACKGROUND_EXPAND) && - png_ptr->bit_depth == 16) - { - /* On the other hand, if a 16-bit file is to be reduced to 8-bits per - * component this will also happen after PNG_COMPOSE and so the background - * color must be pre-expanded here. - * - * TODO: fix this too. - */ - png_ptr->background.red = (png_uint_16)(png_ptr->background.red * 257); - png_ptr->background.green = - (png_uint_16)(png_ptr->background.green * 257); - png_ptr->background.blue = (png_uint_16)(png_ptr->background.blue * 257); - png_ptr->background.gray = (png_uint_16)(png_ptr->background.gray * 257); - } -#endif - - /* NOTE: below 'PNG_READ_ALPHA_MODE_SUPPORTED' is presumed to also enable the - * background support (see the comments in scripts/pnglibconf.dfa), this - * allows pre-multiplication of the alpha channel to be implemented as - * compositing on black. This is probably sub-optimal and has been done in - * 1.5.4 betas simply to enable external critique and testing (i.e. to - * implement the new API quickly, without lots of internal changes.) - */ - -#ifdef PNG_READ_GAMMA_SUPPORTED -# ifdef PNG_READ_BACKGROUND_SUPPORTED - /* Includes ALPHA_MODE */ - png_ptr->background_1 = png_ptr->background; -# endif - - /* This needs to change - in the palette image case a whole set of tables are - * built when it would be quicker to just calculate the correct value for - * each palette entry directly. Also, the test is too tricky - why check - * PNG_RGB_TO_GRAY if PNG_GAMMA is not set? The answer seems to be that - * PNG_GAMMA is cancelled even if the gamma is known? The test excludes the - * PNG_COMPOSE case, so apparently if there is no *overall* gamma correction - * the gamma tables will not be built even if composition is required on a - * gamma encoded value. - * - * In 1.5.4 this is addressed below by an additional check on the individual - * file gamma - if it is not 1.0 both RGB_TO_GRAY and COMPOSE need the - * tables. - */ - if ((png_ptr->transformations & PNG_GAMMA) - || ((png_ptr->transformations & PNG_RGB_TO_GRAY) - && (png_gamma_significant(png_ptr->colorspace.gamma) || - png_gamma_significant(png_ptr->screen_gamma))) - || ((png_ptr->transformations & PNG_COMPOSE) - && (png_gamma_significant(png_ptr->colorspace.gamma) - || png_gamma_significant(png_ptr->screen_gamma) -# ifdef PNG_READ_BACKGROUND_SUPPORTED - || (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_UNIQUE - && png_gamma_significant(png_ptr->background_gamma)) -# endif - )) || ((png_ptr->transformations & PNG_ENCODE_ALPHA) - && png_gamma_significant(png_ptr->screen_gamma)) - ) - { - png_build_gamma_table(png_ptr, png_ptr->bit_depth); - -#ifdef PNG_READ_BACKGROUND_SUPPORTED - if (png_ptr->transformations & PNG_COMPOSE) - { - /* Issue a warning about this combination: because RGB_TO_GRAY is - * optimized to do the gamma transform if present yet do_background has - * to do the same thing if both options are set a - * double-gamma-correction happens. This is true in all versions of - * libpng to date. - */ - if (png_ptr->transformations & PNG_RGB_TO_GRAY) - png_warning(png_ptr, - "libpng does not support gamma+background+rgb_to_gray"); - - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - /* We don't get to here unless there is a tRNS chunk with non-opaque - * entries - see the checking code at the start of this function. - */ - png_color back, back_1; - png_colorp palette = png_ptr->palette; - int num_palette = png_ptr->num_palette; - int i; - if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_FILE) - { - - back.red = png_ptr->gamma_table[png_ptr->background.red]; - back.green = png_ptr->gamma_table[png_ptr->background.green]; - back.blue = png_ptr->gamma_table[png_ptr->background.blue]; - - back_1.red = png_ptr->gamma_to_1[png_ptr->background.red]; - back_1.green = png_ptr->gamma_to_1[png_ptr->background.green]; - back_1.blue = png_ptr->gamma_to_1[png_ptr->background.blue]; - } - else - { - png_fixed_point g, gs; - - switch (png_ptr->background_gamma_type) - { - case PNG_BACKGROUND_GAMMA_SCREEN: - g = (png_ptr->screen_gamma); - gs = PNG_FP_1; - break; - - case PNG_BACKGROUND_GAMMA_FILE: - g = png_reciprocal(png_ptr->colorspace.gamma); - gs = png_reciprocal2(png_ptr->colorspace.gamma, - png_ptr->screen_gamma); - break; - - case PNG_BACKGROUND_GAMMA_UNIQUE: - g = png_reciprocal(png_ptr->background_gamma); - gs = png_reciprocal2(png_ptr->background_gamma, - png_ptr->screen_gamma); - break; - default: - g = PNG_FP_1; /* back_1 */ - gs = PNG_FP_1; /* back */ - break; - } - - if (png_gamma_significant(gs)) - { - back.red = png_gamma_8bit_correct(png_ptr->background.red, - gs); - back.green = png_gamma_8bit_correct(png_ptr->background.green, - gs); - back.blue = png_gamma_8bit_correct(png_ptr->background.blue, - gs); - } - - else - { - back.red = (png_byte)png_ptr->background.red; - back.green = (png_byte)png_ptr->background.green; - back.blue = (png_byte)png_ptr->background.blue; - } - - if (png_gamma_significant(g)) - { - back_1.red = png_gamma_8bit_correct(png_ptr->background.red, - g); - back_1.green = png_gamma_8bit_correct( - png_ptr->background.green, g); - back_1.blue = png_gamma_8bit_correct(png_ptr->background.blue, - g); - } - - else - { - back_1.red = (png_byte)png_ptr->background.red; - back_1.green = (png_byte)png_ptr->background.green; - back_1.blue = (png_byte)png_ptr->background.blue; - } - } - - for (i = 0; i < num_palette; i++) - { - if (i < (int)png_ptr->num_trans && - png_ptr->trans_alpha[i] != 0xff) - { - if (png_ptr->trans_alpha[i] == 0) - { - palette[i] = back; - } - else /* if (png_ptr->trans_alpha[i] != 0xff) */ - { - png_byte v, w; - - v = png_ptr->gamma_to_1[palette[i].red]; - png_composite(w, v, png_ptr->trans_alpha[i], back_1.red); - palette[i].red = png_ptr->gamma_from_1[w]; - - v = png_ptr->gamma_to_1[palette[i].green]; - png_composite(w, v, png_ptr->trans_alpha[i], back_1.green); - palette[i].green = png_ptr->gamma_from_1[w]; - - v = png_ptr->gamma_to_1[palette[i].blue]; - png_composite(w, v, png_ptr->trans_alpha[i], back_1.blue); - palette[i].blue = png_ptr->gamma_from_1[w]; - } - } - else - { - palette[i].red = png_ptr->gamma_table[palette[i].red]; - palette[i].green = png_ptr->gamma_table[palette[i].green]; - palette[i].blue = png_ptr->gamma_table[palette[i].blue]; - } - } - - /* Prevent the transformations being done again. - * - * NOTE: this is highly dubious; it removes the transformations in - * place. This seems inconsistent with the general treatment of the - * transformations elsewhere. - */ - png_ptr->transformations &= ~(PNG_COMPOSE | PNG_GAMMA); - } /* color_type == PNG_COLOR_TYPE_PALETTE */ - - /* if (png_ptr->background_gamma_type!=PNG_BACKGROUND_GAMMA_UNKNOWN) */ - else /* color_type != PNG_COLOR_TYPE_PALETTE */ - { - int gs_sig, g_sig; - png_fixed_point g = PNG_FP_1; /* Correction to linear */ - png_fixed_point gs = PNG_FP_1; /* Correction to screen */ - - switch (png_ptr->background_gamma_type) - { - case PNG_BACKGROUND_GAMMA_SCREEN: - g = png_ptr->screen_gamma; - /* gs = PNG_FP_1; */ - break; - - case PNG_BACKGROUND_GAMMA_FILE: - g = png_reciprocal(png_ptr->colorspace.gamma); - gs = png_reciprocal2(png_ptr->colorspace.gamma, - png_ptr->screen_gamma); - break; - - case PNG_BACKGROUND_GAMMA_UNIQUE: - g = png_reciprocal(png_ptr->background_gamma); - gs = png_reciprocal2(png_ptr->background_gamma, - png_ptr->screen_gamma); - break; - - default: - png_error(png_ptr, "invalid background gamma type"); - } - - g_sig = png_gamma_significant(g); - gs_sig = png_gamma_significant(gs); - - if (g_sig) - png_ptr->background_1.gray = png_gamma_correct(png_ptr, - png_ptr->background.gray, g); - - if (gs_sig) - png_ptr->background.gray = png_gamma_correct(png_ptr, - png_ptr->background.gray, gs); - - if ((png_ptr->background.red != png_ptr->background.green) || - (png_ptr->background.red != png_ptr->background.blue) || - (png_ptr->background.red != png_ptr->background.gray)) - { - /* RGB or RGBA with color background */ - if (g_sig) - { - png_ptr->background_1.red = png_gamma_correct(png_ptr, - png_ptr->background.red, g); - - png_ptr->background_1.green = png_gamma_correct(png_ptr, - png_ptr->background.green, g); - - png_ptr->background_1.blue = png_gamma_correct(png_ptr, - png_ptr->background.blue, g); - } - - if (gs_sig) - { - png_ptr->background.red = png_gamma_correct(png_ptr, - png_ptr->background.red, gs); - - png_ptr->background.green = png_gamma_correct(png_ptr, - png_ptr->background.green, gs); - - png_ptr->background.blue = png_gamma_correct(png_ptr, - png_ptr->background.blue, gs); - } - } - - else - { - /* GRAY, GRAY ALPHA, RGB, or RGBA with gray background */ - png_ptr->background_1.red = png_ptr->background_1.green - = png_ptr->background_1.blue = png_ptr->background_1.gray; - - png_ptr->background.red = png_ptr->background.green - = png_ptr->background.blue = png_ptr->background.gray; - } - - /* The background is now in screen gamma: */ - png_ptr->background_gamma_type = PNG_BACKGROUND_GAMMA_SCREEN; - } /* color_type != PNG_COLOR_TYPE_PALETTE */ - }/* png_ptr->transformations & PNG_BACKGROUND */ - - else - /* Transformation does not include PNG_BACKGROUND */ -#endif /* PNG_READ_BACKGROUND_SUPPORTED */ - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED - /* RGB_TO_GRAY needs to have non-gamma-corrected values! */ - && ((png_ptr->transformations & PNG_EXPAND) == 0 || - (png_ptr->transformations & PNG_RGB_TO_GRAY) == 0) -#endif - ) - { - png_colorp palette = png_ptr->palette; - int num_palette = png_ptr->num_palette; - int i; - - /* NOTE: there are other transformations that should probably be in - * here too. - */ - for (i = 0; i < num_palette; i++) - { - palette[i].red = png_ptr->gamma_table[palette[i].red]; - palette[i].green = png_ptr->gamma_table[palette[i].green]; - palette[i].blue = png_ptr->gamma_table[palette[i].blue]; - } - - /* Done the gamma correction. */ - png_ptr->transformations &= ~PNG_GAMMA; - } /* color_type == PALETTE && !PNG_BACKGROUND transformation */ - } -#ifdef PNG_READ_BACKGROUND_SUPPORTED - else -#endif -#endif /* PNG_READ_GAMMA_SUPPORTED */ - -#ifdef PNG_READ_BACKGROUND_SUPPORTED - /* No GAMMA transformation (see the hanging else 4 lines above) */ - if ((png_ptr->transformations & PNG_COMPOSE) && - (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)) - { - int i; - int istop = (int)png_ptr->num_trans; - png_color back; - png_colorp palette = png_ptr->palette; - - back.red = (png_byte)png_ptr->background.red; - back.green = (png_byte)png_ptr->background.green; - back.blue = (png_byte)png_ptr->background.blue; - - for (i = 0; i < istop; i++) - { - if (png_ptr->trans_alpha[i] == 0) - { - palette[i] = back; - } - - else if (png_ptr->trans_alpha[i] != 0xff) - { - /* The png_composite() macro is defined in png.h */ - png_composite(palette[i].red, palette[i].red, - png_ptr->trans_alpha[i], back.red); - - png_composite(palette[i].green, palette[i].green, - png_ptr->trans_alpha[i], back.green); - - png_composite(palette[i].blue, palette[i].blue, - png_ptr->trans_alpha[i], back.blue); - } - } - - png_ptr->transformations &= ~PNG_COMPOSE; - } -#endif /* PNG_READ_BACKGROUND_SUPPORTED */ - -#ifdef PNG_READ_SHIFT_SUPPORTED - if ((png_ptr->transformations & PNG_SHIFT) && - !(png_ptr->transformations & PNG_EXPAND) && - (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)) - { - int i; - int istop = png_ptr->num_palette; - int shift = 8 - png_ptr->sig_bit.red; - - png_ptr->transformations &= ~PNG_SHIFT; - - /* significant bits can be in the range 1 to 7 for a meaninful result, if - * the number of significant bits is 0 then no shift is done (this is an - * error condition which is silently ignored.) - */ - if (shift > 0 && shift < 8) - for (i=0; ipalette[i].red; - - component >>= shift; - png_ptr->palette[i].red = (png_byte)component; - } - - shift = 8 - png_ptr->sig_bit.green; - if (shift > 0 && shift < 8) - for (i=0; ipalette[i].green; - - component >>= shift; - png_ptr->palette[i].green = (png_byte)component; - } - - shift = 8 - png_ptr->sig_bit.blue; - if (shift > 0 && shift < 8) - for (i=0; ipalette[i].blue; - - component >>= shift; - png_ptr->palette[i].blue = (png_byte)component; - } - } -#endif /* PNG_READ_SHIFT_SUPPORTED */ -} - -/* Modify the info structure to reflect the transformations. The - * info should be updated so a PNG file could be written with it, - * assuming the transformations result in valid PNG data. - */ -void /* PRIVATE */ -png_read_transform_info(png_structrp png_ptr, png_inforp info_ptr) -{ - png_debug(1, "in png_read_transform_info"); - -#ifdef PNG_READ_EXPAND_SUPPORTED - if (png_ptr->transformations & PNG_EXPAND) - { - if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - /* This check must match what actually happens in - * png_do_expand_palette; if it ever checks the tRNS chunk to see if - * it is all opaque we must do the same (at present it does not.) - */ - if (png_ptr->num_trans > 0) - info_ptr->color_type = PNG_COLOR_TYPE_RGB_ALPHA; - - else - info_ptr->color_type = PNG_COLOR_TYPE_RGB; - - info_ptr->bit_depth = 8; - info_ptr->num_trans = 0; - } - else - { - if (png_ptr->num_trans) - { - if (png_ptr->transformations & PNG_EXPAND_tRNS) - info_ptr->color_type |= PNG_COLOR_MASK_ALPHA; - } - if (info_ptr->bit_depth < 8) - info_ptr->bit_depth = 8; - - info_ptr->num_trans = 0; - } - } -#endif - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) ||\ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) - /* The following is almost certainly wrong unless the background value is in - * the screen space! - */ - if (png_ptr->transformations & PNG_COMPOSE) - info_ptr->background = png_ptr->background; -#endif - -#ifdef PNG_READ_GAMMA_SUPPORTED - /* The following used to be conditional on PNG_GAMMA (prior to 1.5.4), - * however it seems that the code in png_init_read_transformations, which has - * been called before this from png_read_update_info->png_read_start_row - * sometimes does the gamma transform and cancels the flag. - * - * TODO: this looks wrong; the info_ptr should end up with a gamma equal to - * the screen_gamma value. The following probably results in weirdness if - * the info_ptr is used by the app after the rows have been read. - */ - info_ptr->colorspace.gamma = png_ptr->colorspace.gamma; -#endif - - if (info_ptr->bit_depth == 16) - { -# ifdef PNG_READ_16BIT_SUPPORTED -# ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED - if (png_ptr->transformations & PNG_SCALE_16_TO_8) - info_ptr->bit_depth = 8; -# endif - -# ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED - if (png_ptr->transformations & PNG_16_TO_8) - info_ptr->bit_depth = 8; -# endif - -# else - /* No 16 bit support: force chopping 16-bit input down to 8, in this case - * the app program can chose if both APIs are available by setting the - * correct scaling to use. - */ -# ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED - /* For compatibility with previous versions use the strip method by - * default. This code works because if PNG_SCALE_16_TO_8 is already - * set the code below will do that in preference to the chop. - */ - png_ptr->transformations |= PNG_16_TO_8; - info_ptr->bit_depth = 8; -# else - -# ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED - png_ptr->transformations |= PNG_SCALE_16_TO_8; - info_ptr->bit_depth = 8; -# else - - CONFIGURATION ERROR: you must enable at least one 16 to 8 method -# endif -# endif -#endif /* !READ_16BIT_SUPPORTED */ - } - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED - if (png_ptr->transformations & PNG_GRAY_TO_RGB) - info_ptr->color_type = (png_byte)(info_ptr->color_type | - PNG_COLOR_MASK_COLOR); -#endif - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED - if (png_ptr->transformations & PNG_RGB_TO_GRAY) - info_ptr->color_type = (png_byte)(info_ptr->color_type & - ~PNG_COLOR_MASK_COLOR); -#endif - -#ifdef PNG_READ_QUANTIZE_SUPPORTED - if (png_ptr->transformations & PNG_QUANTIZE) - { - if (((info_ptr->color_type == PNG_COLOR_TYPE_RGB) || - (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)) && - png_ptr->palette_lookup && info_ptr->bit_depth == 8) - { - info_ptr->color_type = PNG_COLOR_TYPE_PALETTE; - } - } -#endif - -#ifdef PNG_READ_EXPAND_16_SUPPORTED - if (png_ptr->transformations & PNG_EXPAND_16 && info_ptr->bit_depth == 8 && - info_ptr->color_type != PNG_COLOR_TYPE_PALETTE) - { - info_ptr->bit_depth = 16; - } -#endif - -#ifdef PNG_READ_PACK_SUPPORTED - if ((png_ptr->transformations & PNG_PACK) && (info_ptr->bit_depth < 8)) - info_ptr->bit_depth = 8; -#endif - - if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - info_ptr->channels = 1; - - else if (info_ptr->color_type & PNG_COLOR_MASK_COLOR) - info_ptr->channels = 3; - - else - info_ptr->channels = 1; - -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED - if (png_ptr->transformations & PNG_STRIP_ALPHA) - { - info_ptr->color_type = (png_byte)(info_ptr->color_type & - ~PNG_COLOR_MASK_ALPHA); - info_ptr->num_trans = 0; - } -#endif - - if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA) - info_ptr->channels++; - -#ifdef PNG_READ_FILLER_SUPPORTED - /* STRIP_ALPHA and FILLER allowed: MASK_ALPHA bit stripped above */ - if ((png_ptr->transformations & PNG_FILLER) && - ((info_ptr->color_type == PNG_COLOR_TYPE_RGB) || - (info_ptr->color_type == PNG_COLOR_TYPE_GRAY))) - { - info_ptr->channels++; - /* If adding a true alpha channel not just filler */ - if (png_ptr->transformations & PNG_ADD_ALPHA) - info_ptr->color_type |= PNG_COLOR_MASK_ALPHA; - } -#endif - -#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) && \ -defined(PNG_READ_USER_TRANSFORM_SUPPORTED) - if (png_ptr->transformations & PNG_USER_TRANSFORM) - { - if (info_ptr->bit_depth < png_ptr->user_transform_depth) - info_ptr->bit_depth = png_ptr->user_transform_depth; - - if (info_ptr->channels < png_ptr->user_transform_channels) - info_ptr->channels = png_ptr->user_transform_channels; - } -#endif - - info_ptr->pixel_depth = (png_byte)(info_ptr->channels * - info_ptr->bit_depth); - - info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, info_ptr->width); - - /* Adding in 1.5.4: cache the above value in png_struct so that we can later - * check in png_rowbytes that the user buffer won't get overwritten. Note - * that the field is not always set - if png_read_update_info isn't called - * the application has to either not do any transforms or get the calculation - * right itself. - */ - png_ptr->info_rowbytes = info_ptr->rowbytes; - -#ifndef PNG_READ_EXPAND_SUPPORTED - if (png_ptr) - return; -#endif -} - -/* Transform the row. The order of transformations is significant, - * and is very touchy. If you add a transformation, take care to - * decide how it fits in with the other transformations here. - */ -void /* PRIVATE */ -png_do_read_transformations(png_structrp png_ptr, png_row_infop row_info) -{ - png_debug(1, "in png_do_read_transformations"); - - if (png_ptr->row_buf == NULL) - { - /* Prior to 1.5.4 this output row/pass where the NULL pointer is, but this - * error is incredibly rare and incredibly easy to debug without this - * information. - */ - png_error(png_ptr, "NULL row buffer"); - } - - /* The following is debugging; prior to 1.5.4 the code was never compiled in; - * in 1.5.4 PNG_FLAG_DETECT_UNINITIALIZED was added and the macro - * PNG_WARN_UNINITIALIZED_ROW removed. In 1.6 the new flag is set only for - * all transformations, however in practice the ROW_INIT always gets done on - * demand, if necessary. - */ - if ((png_ptr->flags & PNG_FLAG_DETECT_UNINITIALIZED) != 0 && - !(png_ptr->flags & PNG_FLAG_ROW_INIT)) - { - /* Application has failed to call either png_read_start_image() or - * png_read_update_info() after setting transforms that expand pixels. - * This check added to libpng-1.2.19 (but not enabled until 1.5.4). - */ - png_error(png_ptr, "Uninitialized row"); - } - -#ifdef PNG_READ_EXPAND_SUPPORTED - if (png_ptr->transformations & PNG_EXPAND) - { - if (row_info->color_type == PNG_COLOR_TYPE_PALETTE) - { - png_do_expand_palette(row_info, png_ptr->row_buf + 1, - png_ptr->palette, png_ptr->trans_alpha, png_ptr->num_trans); - } - - else - { - if (png_ptr->num_trans && - (png_ptr->transformations & PNG_EXPAND_tRNS)) - png_do_expand(row_info, png_ptr->row_buf + 1, - &(png_ptr->trans_color)); - - else - png_do_expand(row_info, png_ptr->row_buf + 1, - NULL); - } - } -#endif - -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED - if ((png_ptr->transformations & PNG_STRIP_ALPHA) && - !(png_ptr->transformations & PNG_COMPOSE) && - (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA || - row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)) - png_do_strip_channel(row_info, png_ptr->row_buf + 1, - 0 /* at_start == false, because SWAP_ALPHA happens later */); -#endif - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED - if (png_ptr->transformations & PNG_RGB_TO_GRAY) - { - int rgb_error = - png_do_rgb_to_gray(png_ptr, row_info, - png_ptr->row_buf + 1); - - if (rgb_error) - { - png_ptr->rgb_to_gray_status=1; - if ((png_ptr->transformations & PNG_RGB_TO_GRAY) == - PNG_RGB_TO_GRAY_WARN) - png_warning(png_ptr, "png_do_rgb_to_gray found nongray pixel"); - - if ((png_ptr->transformations & PNG_RGB_TO_GRAY) == - PNG_RGB_TO_GRAY_ERR) - png_error(png_ptr, "png_do_rgb_to_gray found nongray pixel"); - } - } -#endif - -/* From Andreas Dilger e-mail to png-implement, 26 March 1998: - * - * In most cases, the "simple transparency" should be done prior to doing - * gray-to-RGB, or you will have to test 3x as many bytes to check if a - * pixel is transparent. You would also need to make sure that the - * transparency information is upgraded to RGB. - * - * To summarize, the current flow is: - * - Gray + simple transparency -> compare 1 or 2 gray bytes and composite - * with background "in place" if transparent, - * convert to RGB if necessary - * - Gray + alpha -> composite with gray background and remove alpha bytes, - * convert to RGB if necessary - * - * To support RGB backgrounds for gray images we need: - * - Gray + simple transparency -> convert to RGB + simple transparency, - * compare 3 or 6 bytes and composite with - * background "in place" if transparent - * (3x compare/pixel compared to doing - * composite with gray bkgrnd) - * - Gray + alpha -> convert to RGB + alpha, composite with background and - * remove alpha bytes (3x float - * operations/pixel compared with composite - * on gray background) - * - * Greg's change will do this. The reason it wasn't done before is for - * performance, as this increases the per-pixel operations. If we would check - * in advance if the background was gray or RGB, and position the gray-to-RGB - * transform appropriately, then it would save a lot of work/time. - */ - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED - /* If gray -> RGB, do so now only if background is non-gray; else do later - * for performance reasons - */ - if ((png_ptr->transformations & PNG_GRAY_TO_RGB) && - !(png_ptr->mode & PNG_BACKGROUND_IS_GRAY)) - png_do_gray_to_rgb(row_info, png_ptr->row_buf + 1); -#endif - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) ||\ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) - if (png_ptr->transformations & PNG_COMPOSE) - png_do_compose(row_info, png_ptr->row_buf + 1, png_ptr); -#endif - -#ifdef PNG_READ_GAMMA_SUPPORTED - if ((png_ptr->transformations & PNG_GAMMA) && -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED - /* Because RGB_TO_GRAY does the gamma transform. */ - !(png_ptr->transformations & PNG_RGB_TO_GRAY) && -#endif -#if defined(PNG_READ_BACKGROUND_SUPPORTED) ||\ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) - /* Because PNG_COMPOSE does the gamma transform if there is something to - * do (if there is an alpha channel or transparency.) - */ - !((png_ptr->transformations & PNG_COMPOSE) && - ((png_ptr->num_trans != 0) || - (png_ptr->color_type & PNG_COLOR_MASK_ALPHA))) && -#endif - /* Because png_init_read_transformations transforms the palette, unless - * RGB_TO_GRAY will do the transform. - */ - (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE)) - png_do_gamma(row_info, png_ptr->row_buf + 1, png_ptr); -#endif - -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED - if ((png_ptr->transformations & PNG_STRIP_ALPHA) && - (png_ptr->transformations & PNG_COMPOSE) && - (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA || - row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)) - png_do_strip_channel(row_info, png_ptr->row_buf + 1, - 0 /* at_start == false, because SWAP_ALPHA happens later */); -#endif - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - if ((png_ptr->transformations & PNG_ENCODE_ALPHA) && - (row_info->color_type & PNG_COLOR_MASK_ALPHA)) - png_do_encode_alpha(row_info, png_ptr->row_buf + 1, png_ptr); -#endif - -#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED - if (png_ptr->transformations & PNG_SCALE_16_TO_8) - png_do_scale_16_to_8(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED - /* There is no harm in doing both of these because only one has any effect, - * by putting the 'scale' option first if the app asks for scale (either by - * calling the API or in a TRANSFORM flag) this is what happens. - */ - if (png_ptr->transformations & PNG_16_TO_8) - png_do_chop(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_QUANTIZE_SUPPORTED - if (png_ptr->transformations & PNG_QUANTIZE) - { - png_do_quantize(row_info, png_ptr->row_buf + 1, - png_ptr->palette_lookup, png_ptr->quantize_index); - - if (row_info->rowbytes == 0) - png_error(png_ptr, "png_do_quantize returned rowbytes=0"); - } -#endif /* PNG_READ_QUANTIZE_SUPPORTED */ - -#ifdef PNG_READ_EXPAND_16_SUPPORTED - /* Do the expansion now, after all the arithmetic has been done. Notice - * that previous transformations can handle the PNG_EXPAND_16 flag if this - * is efficient (particularly true in the case of gamma correction, where - * better accuracy results faster!) - */ - if (png_ptr->transformations & PNG_EXPAND_16) - png_do_expand_16(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED - /* NOTE: moved here in 1.5.4 (from much later in this list.) */ - if ((png_ptr->transformations & PNG_GRAY_TO_RGB) && - (png_ptr->mode & PNG_BACKGROUND_IS_GRAY)) - png_do_gray_to_rgb(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_INVERT_SUPPORTED - if (png_ptr->transformations & PNG_INVERT_MONO) - png_do_invert(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_SHIFT_SUPPORTED - if (png_ptr->transformations & PNG_SHIFT) - png_do_unshift(row_info, png_ptr->row_buf + 1, - &(png_ptr->shift)); -#endif - -#ifdef PNG_READ_PACK_SUPPORTED - if (png_ptr->transformations & PNG_PACK) - png_do_unpack(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED - /* Added at libpng-1.5.10 */ - if (row_info->color_type == PNG_COLOR_TYPE_PALETTE && - png_ptr->num_palette_max >= 0) - png_do_check_palette_indexes(png_ptr, row_info); -#endif - -#ifdef PNG_READ_BGR_SUPPORTED - if (png_ptr->transformations & PNG_BGR) - png_do_bgr(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_PACKSWAP_SUPPORTED - if (png_ptr->transformations & PNG_PACKSWAP) - png_do_packswap(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_FILLER_SUPPORTED - if (png_ptr->transformations & PNG_FILLER) - png_do_read_filler(row_info, png_ptr->row_buf + 1, - (png_uint_32)png_ptr->filler, png_ptr->flags); -#endif - -#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED - if (png_ptr->transformations & PNG_INVERT_ALPHA) - png_do_read_invert_alpha(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_SWAP_ALPHA_SUPPORTED - if (png_ptr->transformations & PNG_SWAP_ALPHA) - png_do_read_swap_alpha(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_READ_16BIT_SUPPORTED -#ifdef PNG_READ_SWAP_SUPPORTED - if (png_ptr->transformations & PNG_SWAP_BYTES) - png_do_swap(row_info, png_ptr->row_buf + 1); -#endif -#endif - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED - if (png_ptr->transformations & PNG_USER_TRANSFORM) - { - if (png_ptr->read_user_transform_fn != NULL) - (*(png_ptr->read_user_transform_fn)) /* User read transform function */ - (png_ptr, /* png_ptr */ - row_info, /* row_info: */ - /* png_uint_32 width; width of row */ - /* png_size_t rowbytes; number of bytes in row */ - /* png_byte color_type; color type of pixels */ - /* png_byte bit_depth; bit depth of samples */ - /* png_byte channels; number of channels (1-4) */ - /* png_byte pixel_depth; bits per pixel (depth*channels) */ - png_ptr->row_buf + 1); /* start of pixel data for row */ -#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED - if (png_ptr->user_transform_depth) - row_info->bit_depth = png_ptr->user_transform_depth; - - if (png_ptr->user_transform_channels) - row_info->channels = png_ptr->user_transform_channels; -#endif - row_info->pixel_depth = (png_byte)(row_info->bit_depth * - row_info->channels); - - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_info->width); - } -#endif -} - -#ifdef PNG_READ_PACK_SUPPORTED -/* Unpack pixels of 1, 2, or 4 bits per pixel into 1 byte per pixel, - * without changing the actual values. Thus, if you had a row with - * a bit depth of 1, you would end up with bytes that only contained - * the numbers 0 or 1. If you would rather they contain 0 and 255, use - * png_do_shift() after this. - */ -void /* PRIVATE */ -png_do_unpack(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_unpack"); - - if (row_info->bit_depth < 8) - { - png_uint_32 i; - png_uint_32 row_width=row_info->width; - - switch (row_info->bit_depth) - { - case 1: - { - png_bytep sp = row + (png_size_t)((row_width - 1) >> 3); - png_bytep dp = row + (png_size_t)row_width - 1; - png_uint_32 shift = 7 - (int)((row_width + 7) & 0x07); - for (i = 0; i < row_width; i++) - { - *dp = (png_byte)((*sp >> shift) & 0x01); - - if (shift == 7) - { - shift = 0; - sp--; - } - - else - shift++; - - dp--; - } - break; - } - - case 2: - { - - png_bytep sp = row + (png_size_t)((row_width - 1) >> 2); - png_bytep dp = row + (png_size_t)row_width - 1; - png_uint_32 shift = (int)((3 - ((row_width + 3) & 0x03)) << 1); - for (i = 0; i < row_width; i++) - { - *dp = (png_byte)((*sp >> shift) & 0x03); - - if (shift == 6) - { - shift = 0; - sp--; - } - - else - shift += 2; - - dp--; - } - break; - } - - case 4: - { - png_bytep sp = row + (png_size_t)((row_width - 1) >> 1); - png_bytep dp = row + (png_size_t)row_width - 1; - png_uint_32 shift = (int)((1 - ((row_width + 1) & 0x01)) << 2); - for (i = 0; i < row_width; i++) - { - *dp = (png_byte)((*sp >> shift) & 0x0f); - - if (shift == 4) - { - shift = 0; - sp--; - } - - else - shift = 4; - - dp--; - } - break; - } - - default: - break; - } - row_info->bit_depth = 8; - row_info->pixel_depth = (png_byte)(8 * row_info->channels); - row_info->rowbytes = row_width * row_info->channels; - } -} -#endif - -#ifdef PNG_READ_SHIFT_SUPPORTED -/* Reverse the effects of png_do_shift. This routine merely shifts the - * pixels back to their significant bits values. Thus, if you have - * a row of bit depth 8, but only 5 are significant, this will shift - * the values back to 0 through 31. - */ -void /* PRIVATE */ -png_do_unshift(png_row_infop row_info, png_bytep row, - png_const_color_8p sig_bits) -{ - int color_type; - - png_debug(1, "in png_do_unshift"); - - /* The palette case has already been handled in the _init routine. */ - color_type = row_info->color_type; - - if (color_type != PNG_COLOR_TYPE_PALETTE) - { - int shift[4]; - int channels = 0; - int bit_depth = row_info->bit_depth; - - if (color_type & PNG_COLOR_MASK_COLOR) - { - shift[channels++] = bit_depth - sig_bits->red; - shift[channels++] = bit_depth - sig_bits->green; - shift[channels++] = bit_depth - sig_bits->blue; - } - - else - { - shift[channels++] = bit_depth - sig_bits->gray; - } - - if (color_type & PNG_COLOR_MASK_ALPHA) - { - shift[channels++] = bit_depth - sig_bits->alpha; - } - - { - int c, have_shift; - - for (c = have_shift = 0; c < channels; ++c) - { - /* A shift of more than the bit depth is an error condition but it - * gets ignored here. - */ - if (shift[c] <= 0 || shift[c] >= bit_depth) - shift[c] = 0; - - else - have_shift = 1; - } - - if (!have_shift) - return; - } - - switch (bit_depth) - { - default: - /* Must be 1bpp gray: should not be here! */ - /* NOTREACHED */ - break; - - case 2: - /* Must be 2bpp gray */ - /* assert(channels == 1 && shift[0] == 1) */ - { - png_bytep bp = row; - png_bytep bp_end = bp + row_info->rowbytes; - - while (bp < bp_end) - { - int b = (*bp >> 1) & 0x55; - *bp++ = (png_byte)b; - } - break; - } - - case 4: - /* Must be 4bpp gray */ - /* assert(channels == 1) */ - { - png_bytep bp = row; - png_bytep bp_end = bp + row_info->rowbytes; - int gray_shift = shift[0]; - int mask = 0xf >> gray_shift; - - mask |= mask << 4; - - while (bp < bp_end) - { - int b = (*bp >> gray_shift) & mask; - *bp++ = (png_byte)b; - } - break; - } - - case 8: - /* Single byte components, G, GA, RGB, RGBA */ - { - png_bytep bp = row; - png_bytep bp_end = bp + row_info->rowbytes; - int channel = 0; - - while (bp < bp_end) - { - int b = *bp >> shift[channel]; - if (++channel >= channels) - channel = 0; - *bp++ = (png_byte)b; - } - break; - } - -#ifdef PNG_READ_16BIT_SUPPORTED - case 16: - /* Double byte components, G, GA, RGB, RGBA */ - { - png_bytep bp = row; - png_bytep bp_end = bp + row_info->rowbytes; - int channel = 0; - - while (bp < bp_end) - { - int value = (bp[0] << 8) + bp[1]; - - value >>= shift[channel]; - if (++channel >= channels) - channel = 0; - *bp++ = (png_byte)(value >> 8); - *bp++ = (png_byte)(value & 0xff); - } - break; - } -#endif - } - } -} -#endif - -#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED -/* Scale rows of bit depth 16 down to 8 accurately */ -void /* PRIVATE */ -png_do_scale_16_to_8(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_scale_16_to_8"); - - if (row_info->bit_depth == 16) - { - png_bytep sp = row; /* source */ - png_bytep dp = row; /* destination */ - png_bytep ep = sp + row_info->rowbytes; /* end+1 */ - - while (sp < ep) - { - /* The input is an array of 16 bit components, these must be scaled to - * 8 bits each. For a 16 bit value V the required value (from the PNG - * specification) is: - * - * (V * 255) / 65535 - * - * This reduces to round(V / 257), or floor((V + 128.5)/257) - * - * Represent V as the two byte value vhi.vlo. Make a guess that the - * result is the top byte of V, vhi, then the correction to this value - * is: - * - * error = floor(((V-vhi.vhi) + 128.5) / 257) - * = floor(((vlo-vhi) + 128.5) / 257) - * - * This can be approximated using integer arithmetic (and a signed - * shift): - * - * error = (vlo-vhi+128) >> 8; - * - * The approximate differs from the exact answer only when (vlo-vhi) is - * 128; it then gives a correction of +1 when the exact correction is - * 0. This gives 128 errors. The exact answer (correct for all 16 bit - * input values) is: - * - * error = (vlo-vhi+128)*65535 >> 24; - * - * An alternative arithmetic calculation which also gives no errors is: - * - * (V * 255 + 32895) >> 16 - */ - - png_int_32 tmp = *sp++; /* must be signed! */ - tmp += (((int)*sp++ - tmp + 128) * 65535) >> 24; - *dp++ = (png_byte)tmp; - } - - row_info->bit_depth = 8; - row_info->pixel_depth = (png_byte)(8 * row_info->channels); - row_info->rowbytes = row_info->width * row_info->channels; - } -} -#endif - -#ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED -void /* PRIVATE */ -/* Simply discard the low byte. This was the default behavior prior - * to libpng-1.5.4. - */ -png_do_chop(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_chop"); - - if (row_info->bit_depth == 16) - { - png_bytep sp = row; /* source */ - png_bytep dp = row; /* destination */ - png_bytep ep = sp + row_info->rowbytes; /* end+1 */ - - while (sp < ep) - { - *dp++ = *sp; - sp += 2; /* skip low byte */ - } - - row_info->bit_depth = 8; - row_info->pixel_depth = (png_byte)(8 * row_info->channels); - row_info->rowbytes = row_info->width * row_info->channels; - } -} -#endif - -#ifdef PNG_READ_SWAP_ALPHA_SUPPORTED -void /* PRIVATE */ -png_do_read_swap_alpha(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_read_swap_alpha"); - - { - png_uint_32 row_width = row_info->width; - if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - /* This converts from RGBA to ARGB */ - if (row_info->bit_depth == 8) - { - png_bytep sp = row + row_info->rowbytes; - png_bytep dp = sp; - png_byte save; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - save = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = save; - } - } - -#ifdef PNG_READ_16BIT_SUPPORTED - /* This converts from RRGGBBAA to AARRGGBB */ - else - { - png_bytep sp = row + row_info->rowbytes; - png_bytep dp = sp; - png_byte save[2]; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - save[0] = *(--sp); - save[1] = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = save[0]; - *(--dp) = save[1]; - } - } -#endif - } - - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - /* This converts from GA to AG */ - if (row_info->bit_depth == 8) - { - png_bytep sp = row + row_info->rowbytes; - png_bytep dp = sp; - png_byte save; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - save = *(--sp); - *(--dp) = *(--sp); - *(--dp) = save; - } - } - -#ifdef PNG_READ_16BIT_SUPPORTED - /* This converts from GGAA to AAGG */ - else - { - png_bytep sp = row + row_info->rowbytes; - png_bytep dp = sp; - png_byte save[2]; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - save[0] = *(--sp); - save[1] = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = save[0]; - *(--dp) = save[1]; - } - } -#endif - } - } -} -#endif - -#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED -void /* PRIVATE */ -png_do_read_invert_alpha(png_row_infop row_info, png_bytep row) -{ - png_uint_32 row_width; - png_debug(1, "in png_do_read_invert_alpha"); - - row_width = row_info->width; - if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - if (row_info->bit_depth == 8) - { - /* This inverts the alpha channel in RGBA */ - png_bytep sp = row + row_info->rowbytes; - png_bytep dp = sp; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - *(--dp) = (png_byte)(255 - *(--sp)); - -/* This does nothing: - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - We can replace it with: -*/ - sp-=3; - dp=sp; - } - } - -#ifdef PNG_READ_16BIT_SUPPORTED - /* This inverts the alpha channel in RRGGBBAA */ - else - { - png_bytep sp = row + row_info->rowbytes; - png_bytep dp = sp; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - *(--dp) = (png_byte)(255 - *(--sp)); - *(--dp) = (png_byte)(255 - *(--sp)); - -/* This does nothing: - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - We can replace it with: -*/ - sp-=6; - dp=sp; - } - } -#endif - } - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - if (row_info->bit_depth == 8) - { - /* This inverts the alpha channel in GA */ - png_bytep sp = row + row_info->rowbytes; - png_bytep dp = sp; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - *(--dp) = (png_byte)(255 - *(--sp)); - *(--dp) = *(--sp); - } - } - -#ifdef PNG_READ_16BIT_SUPPORTED - else - { - /* This inverts the alpha channel in GGAA */ - png_bytep sp = row + row_info->rowbytes; - png_bytep dp = sp; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - *(--dp) = (png_byte)(255 - *(--sp)); - *(--dp) = (png_byte)(255 - *(--sp)); -/* - *(--dp) = *(--sp); - *(--dp) = *(--sp); -*/ - sp-=2; - dp=sp; - } - } -#endif - } -} -#endif - -#ifdef PNG_READ_FILLER_SUPPORTED -/* Add filler channel if we have RGB color */ -void /* PRIVATE */ -png_do_read_filler(png_row_infop row_info, png_bytep row, - png_uint_32 filler, png_uint_32 flags) -{ - png_uint_32 i; - png_uint_32 row_width = row_info->width; - -#ifdef PNG_READ_16BIT_SUPPORTED - png_byte hi_filler = (png_byte)((filler>>8) & 0xff); -#endif - png_byte lo_filler = (png_byte)(filler & 0xff); - - png_debug(1, "in png_do_read_filler"); - - if ( - row_info->color_type == PNG_COLOR_TYPE_GRAY) - { - if (row_info->bit_depth == 8) - { - if (flags & PNG_FLAG_FILLER_AFTER) - { - /* This changes the data from G to GX */ - png_bytep sp = row + (png_size_t)row_width; - png_bytep dp = sp + (png_size_t)row_width; - for (i = 1; i < row_width; i++) - { - *(--dp) = lo_filler; - *(--dp) = *(--sp); - } - *(--dp) = lo_filler; - row_info->channels = 2; - row_info->pixel_depth = 16; - row_info->rowbytes = row_width * 2; - } - - else - { - /* This changes the data from G to XG */ - png_bytep sp = row + (png_size_t)row_width; - png_bytep dp = sp + (png_size_t)row_width; - for (i = 0; i < row_width; i++) - { - *(--dp) = *(--sp); - *(--dp) = lo_filler; - } - row_info->channels = 2; - row_info->pixel_depth = 16; - row_info->rowbytes = row_width * 2; - } - } - -#ifdef PNG_READ_16BIT_SUPPORTED - else if (row_info->bit_depth == 16) - { - if (flags & PNG_FLAG_FILLER_AFTER) - { - /* This changes the data from GG to GGXX */ - png_bytep sp = row + (png_size_t)row_width * 2; - png_bytep dp = sp + (png_size_t)row_width * 2; - for (i = 1; i < row_width; i++) - { - *(--dp) = hi_filler; - *(--dp) = lo_filler; - *(--dp) = *(--sp); - *(--dp) = *(--sp); - } - *(--dp) = hi_filler; - *(--dp) = lo_filler; - row_info->channels = 2; - row_info->pixel_depth = 32; - row_info->rowbytes = row_width * 4; - } - - else - { - /* This changes the data from GG to XXGG */ - png_bytep sp = row + (png_size_t)row_width * 2; - png_bytep dp = sp + (png_size_t)row_width * 2; - for (i = 0; i < row_width; i++) - { - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = hi_filler; - *(--dp) = lo_filler; - } - row_info->channels = 2; - row_info->pixel_depth = 32; - row_info->rowbytes = row_width * 4; - } - } -#endif - } /* COLOR_TYPE == GRAY */ - else if (row_info->color_type == PNG_COLOR_TYPE_RGB) - { - if (row_info->bit_depth == 8) - { - if (flags & PNG_FLAG_FILLER_AFTER) - { - /* This changes the data from RGB to RGBX */ - png_bytep sp = row + (png_size_t)row_width * 3; - png_bytep dp = sp + (png_size_t)row_width; - for (i = 1; i < row_width; i++) - { - *(--dp) = lo_filler; - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - } - *(--dp) = lo_filler; - row_info->channels = 4; - row_info->pixel_depth = 32; - row_info->rowbytes = row_width * 4; - } - - else - { - /* This changes the data from RGB to XRGB */ - png_bytep sp = row + (png_size_t)row_width * 3; - png_bytep dp = sp + (png_size_t)row_width; - for (i = 0; i < row_width; i++) - { - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = lo_filler; - } - row_info->channels = 4; - row_info->pixel_depth = 32; - row_info->rowbytes = row_width * 4; - } - } - -#ifdef PNG_READ_16BIT_SUPPORTED - else if (row_info->bit_depth == 16) - { - if (flags & PNG_FLAG_FILLER_AFTER) - { - /* This changes the data from RRGGBB to RRGGBBXX */ - png_bytep sp = row + (png_size_t)row_width * 6; - png_bytep dp = sp + (png_size_t)row_width * 2; - for (i = 1; i < row_width; i++) - { - *(--dp) = hi_filler; - *(--dp) = lo_filler; - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - } - *(--dp) = hi_filler; - *(--dp) = lo_filler; - row_info->channels = 4; - row_info->pixel_depth = 64; - row_info->rowbytes = row_width * 8; - } - - else - { - /* This changes the data from RRGGBB to XXRRGGBB */ - png_bytep sp = row + (png_size_t)row_width * 6; - png_bytep dp = sp + (png_size_t)row_width * 2; - for (i = 0; i < row_width; i++) - { - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = hi_filler; - *(--dp) = lo_filler; - } - - row_info->channels = 4; - row_info->pixel_depth = 64; - row_info->rowbytes = row_width * 8; - } - } -#endif - } /* COLOR_TYPE == RGB */ -} -#endif - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED -/* Expand grayscale files to RGB, with or without alpha */ -void /* PRIVATE */ -png_do_gray_to_rgb(png_row_infop row_info, png_bytep row) -{ - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - png_debug(1, "in png_do_gray_to_rgb"); - - if (row_info->bit_depth >= 8 && - !(row_info->color_type & PNG_COLOR_MASK_COLOR)) - { - if (row_info->color_type == PNG_COLOR_TYPE_GRAY) - { - if (row_info->bit_depth == 8) - { - /* This changes G to RGB */ - png_bytep sp = row + (png_size_t)row_width - 1; - png_bytep dp = sp + (png_size_t)row_width * 2; - for (i = 0; i < row_width; i++) - { - *(dp--) = *sp; - *(dp--) = *sp; - *(dp--) = *(sp--); - } - } - - else - { - /* This changes GG to RRGGBB */ - png_bytep sp = row + (png_size_t)row_width * 2 - 1; - png_bytep dp = sp + (png_size_t)row_width * 4; - for (i = 0; i < row_width; i++) - { - *(dp--) = *sp; - *(dp--) = *(sp - 1); - *(dp--) = *sp; - *(dp--) = *(sp - 1); - *(dp--) = *(sp--); - *(dp--) = *(sp--); - } - } - } - - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - if (row_info->bit_depth == 8) - { - /* This changes GA to RGBA */ - png_bytep sp = row + (png_size_t)row_width * 2 - 1; - png_bytep dp = sp + (png_size_t)row_width * 2; - for (i = 0; i < row_width; i++) - { - *(dp--) = *(sp--); - *(dp--) = *sp; - *(dp--) = *sp; - *(dp--) = *(sp--); - } - } - - else - { - /* This changes GGAA to RRGGBBAA */ - png_bytep sp = row + (png_size_t)row_width * 4 - 1; - png_bytep dp = sp + (png_size_t)row_width * 4; - for (i = 0; i < row_width; i++) - { - *(dp--) = *(sp--); - *(dp--) = *(sp--); - *(dp--) = *sp; - *(dp--) = *(sp - 1); - *(dp--) = *sp; - *(dp--) = *(sp - 1); - *(dp--) = *(sp--); - *(dp--) = *(sp--); - } - } - } - row_info->channels = (png_byte)(row_info->channels + 2); - row_info->color_type |= PNG_COLOR_MASK_COLOR; - row_info->pixel_depth = (png_byte)(row_info->channels * - row_info->bit_depth); - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width); - } -} -#endif - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -/* Reduce RGB files to grayscale, with or without alpha - * using the equation given in Poynton's ColorFAQ of 1998-01-04 at - * (THIS LINK IS DEAD June 2008 but - * versions dated 1998 through November 2002 have been archived at - * http://web.archive.org/web/20000816232553/http://www.inforamp.net/ - * ~poynton/notes/colour_and_gamma/ColorFAQ.txt ) - * Charles Poynton poynton at poynton.com - * - * Y = 0.212671 * R + 0.715160 * G + 0.072169 * B - * - * which can be expressed with integers as - * - * Y = (6969 * R + 23434 * G + 2365 * B)/32768 - * - * Poynton's current link (as of January 2003 through July 2011): - * - * has changed the numbers slightly: - * - * Y = 0.2126*R + 0.7152*G + 0.0722*B - * - * which can be expressed with integers as - * - * Y = (6966 * R + 23436 * G + 2366 * B)/32768 - * - * Historically, however, libpng uses numbers derived from the ITU-R Rec 709 - * end point chromaticities and the D65 white point. Depending on the - * precision used for the D65 white point this produces a variety of different - * numbers, however if the four decimal place value used in ITU-R Rec 709 is - * used (0.3127,0.3290) the Y calculation would be: - * - * Y = (6968 * R + 23435 * G + 2366 * B)/32768 - * - * While this is correct the rounding results in an overflow for white, because - * the sum of the rounded coefficients is 32769, not 32768. Consequently - * libpng uses, instead, the closest non-overflowing approximation: - * - * Y = (6968 * R + 23434 * G + 2366 * B)/32768 - * - * Starting with libpng-1.5.5, if the image being converted has a cHRM chunk - * (including an sRGB chunk) then the chromaticities are used to calculate the - * coefficients. See the chunk handling in pngrutil.c for more information. - * - * In all cases the calculation is to be done in a linear colorspace. If no - * gamma information is available to correct the encoding of the original RGB - * values this results in an implicit assumption that the original PNG RGB - * values were linear. - * - * Other integer coefficents can be used via png_set_rgb_to_gray(). Because - * the API takes just red and green coefficients the blue coefficient is - * calculated to make the sum 32768. This will result in different rounding - * to that used above. - */ -int /* PRIVATE */ -png_do_rgb_to_gray(png_structrp png_ptr, png_row_infop row_info, png_bytep row) - -{ - int rgb_error = 0; - - png_debug(1, "in png_do_rgb_to_gray"); - - if (!(row_info->color_type & PNG_COLOR_MASK_PALETTE) && - (row_info->color_type & PNG_COLOR_MASK_COLOR)) - { - PNG_CONST png_uint_32 rc = png_ptr->rgb_to_gray_red_coeff; - PNG_CONST png_uint_32 gc = png_ptr->rgb_to_gray_green_coeff; - PNG_CONST png_uint_32 bc = 32768 - rc - gc; - PNG_CONST png_uint_32 row_width = row_info->width; - PNG_CONST int have_alpha = - (row_info->color_type & PNG_COLOR_MASK_ALPHA) != 0; - - if (row_info->bit_depth == 8) - { -#ifdef PNG_READ_GAMMA_SUPPORTED - /* Notice that gamma to/from 1 are not necessarily inverses (if - * there is an overall gamma correction). Prior to 1.5.5 this code - * checked the linearized values for equality; this doesn't match - * the documentation, the original values must be checked. - */ - if (png_ptr->gamma_from_1 != NULL && png_ptr->gamma_to_1 != NULL) - { - png_bytep sp = row; - png_bytep dp = row; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - png_byte red = *(sp++); - png_byte green = *(sp++); - png_byte blue = *(sp++); - - if (red != green || red != blue) - { - red = png_ptr->gamma_to_1[red]; - green = png_ptr->gamma_to_1[green]; - blue = png_ptr->gamma_to_1[blue]; - - rgb_error |= 1; - *(dp++) = png_ptr->gamma_from_1[ - (rc*red + gc*green + bc*blue + 16384)>>15]; - } - - else - { - /* If there is no overall correction the table will not be - * set. - */ - if (png_ptr->gamma_table != NULL) - red = png_ptr->gamma_table[red]; - - *(dp++) = red; - } - - if (have_alpha) - *(dp++) = *(sp++); - } - } - else -#endif - { - png_bytep sp = row; - png_bytep dp = row; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - png_byte red = *(sp++); - png_byte green = *(sp++); - png_byte blue = *(sp++); - - if (red != green || red != blue) - { - rgb_error |= 1; - /* NOTE: this is the historical approach which simply - * truncates the results. - */ - *(dp++) = (png_byte)((rc*red + gc*green + bc*blue)>>15); - } - - else - *(dp++) = red; - - if (have_alpha) - *(dp++) = *(sp++); - } - } - } - - else /* RGB bit_depth == 16 */ - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (png_ptr->gamma_16_to_1 != NULL && png_ptr->gamma_16_from_1 != NULL) - { - png_bytep sp = row; - png_bytep dp = row; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - png_uint_16 red, green, blue, w; - - red = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2; - green = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2; - blue = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2; - - if (red == green && red == blue) - { - if (png_ptr->gamma_16_table != NULL) - w = png_ptr->gamma_16_table[(red&0xff) - >> png_ptr->gamma_shift][red>>8]; - - else - w = red; - } - - else - { - png_uint_16 red_1 = png_ptr->gamma_16_to_1[(red&0xff) - >> png_ptr->gamma_shift][red>>8]; - png_uint_16 green_1 = - png_ptr->gamma_16_to_1[(green&0xff) >> - png_ptr->gamma_shift][green>>8]; - png_uint_16 blue_1 = png_ptr->gamma_16_to_1[(blue&0xff) - >> png_ptr->gamma_shift][blue>>8]; - png_uint_16 gray16 = (png_uint_16)((rc*red_1 + gc*green_1 - + bc*blue_1 + 16384)>>15); - w = png_ptr->gamma_16_from_1[(gray16&0xff) >> - png_ptr->gamma_shift][gray16 >> 8]; - rgb_error |= 1; - } - - *(dp++) = (png_byte)((w>>8) & 0xff); - *(dp++) = (png_byte)(w & 0xff); - - if (have_alpha) - { - *(dp++) = *(sp++); - *(dp++) = *(sp++); - } - } - } - else -#endif - { - png_bytep sp = row; - png_bytep dp = row; - png_uint_32 i; - - for (i = 0; i < row_width; i++) - { - png_uint_16 red, green, blue, gray16; - - red = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2; - green = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2; - blue = (png_uint_16)(((*(sp))<<8) | *(sp + 1)); sp += 2; - - if (red != green || red != blue) - rgb_error |= 1; - - /* From 1.5.5 in the 16 bit case do the accurate conversion even - * in the 'fast' case - this is because this is where the code - * ends up when handling linear 16 bit data. - */ - gray16 = (png_uint_16)((rc*red + gc*green + bc*blue + 16384) >> - 15); - *(dp++) = (png_byte)((gray16>>8) & 0xff); - *(dp++) = (png_byte)(gray16 & 0xff); - - if (have_alpha) - { - *(dp++) = *(sp++); - *(dp++) = *(sp++); - } - } - } - } - - row_info->channels = (png_byte)(row_info->channels - 2); - row_info->color_type = (png_byte)(row_info->color_type & - ~PNG_COLOR_MASK_COLOR); - row_info->pixel_depth = (png_byte)(row_info->channels * - row_info->bit_depth); - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width); - } - return rgb_error; -} -#endif -#endif /* PNG_READ_TRANSFORMS_SUPPORTED */ - -#ifdef PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED -/* Build a grayscale palette. Palette is assumed to be 1 << bit_depth - * large of png_color. This lets grayscale images be treated as - * paletted. Most useful for gamma correction and simplification - * of code. This API is not used internally. - */ -void PNGAPI -png_build_grayscale_palette(int bit_depth, png_colorp palette) -{ - int num_palette; - int color_inc; - int i; - int v; - - png_debug(1, "in png_do_build_grayscale_palette"); - - if (palette == NULL) - return; - - switch (bit_depth) - { - case 1: - num_palette = 2; - color_inc = 0xff; - break; - - case 2: - num_palette = 4; - color_inc = 0x55; - break; - - case 4: - num_palette = 16; - color_inc = 0x11; - break; - - case 8: - num_palette = 256; - color_inc = 1; - break; - - default: - num_palette = 0; - color_inc = 0; - break; - } - - for (i = 0, v = 0; i < num_palette; i++, v += color_inc) - { - palette[i].red = (png_byte)v; - palette[i].green = (png_byte)v; - palette[i].blue = (png_byte)v; - } -} -#endif - - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -#if defined(PNG_READ_BACKGROUND_SUPPORTED) ||\ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) -/* Replace any alpha or transparency with the supplied background color. - * "background" is already in the screen gamma, while "background_1" is - * at a gamma of 1.0. Paletted files have already been taken care of. - */ -void /* PRIVATE */ -png_do_compose(png_row_infop row_info, png_bytep row, png_structrp png_ptr) -{ -#ifdef PNG_READ_GAMMA_SUPPORTED - png_const_bytep gamma_table = png_ptr->gamma_table; - png_const_bytep gamma_from_1 = png_ptr->gamma_from_1; - png_const_bytep gamma_to_1 = png_ptr->gamma_to_1; - png_const_uint_16pp gamma_16 = png_ptr->gamma_16_table; - png_const_uint_16pp gamma_16_from_1 = png_ptr->gamma_16_from_1; - png_const_uint_16pp gamma_16_to_1 = png_ptr->gamma_16_to_1; - int gamma_shift = png_ptr->gamma_shift; - int optimize = (png_ptr->flags & PNG_FLAG_OPTIMIZE_ALPHA) != 0; -#endif - - png_bytep sp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - int shift; - - png_debug(1, "in png_do_compose"); - - { - switch (row_info->color_type) - { - case PNG_COLOR_TYPE_GRAY: - { - switch (row_info->bit_depth) - { - case 1: - { - sp = row; - shift = 7; - for (i = 0; i < row_width; i++) - { - if ((png_uint_16)((*sp >> shift) & 0x01) - == png_ptr->trans_color.gray) - { - unsigned int tmp = *sp & (0x7f7f >> (7 - shift)); - tmp |= png_ptr->background.gray << shift; - *sp = (png_byte)(tmp & 0xff); - } - - if (!shift) - { - shift = 7; - sp++; - } - - else - shift--; - } - break; - } - - case 2: - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_table != NULL) - { - sp = row; - shift = 6; - for (i = 0; i < row_width; i++) - { - if ((png_uint_16)((*sp >> shift) & 0x03) - == png_ptr->trans_color.gray) - { - unsigned int tmp = *sp & (0x3f3f >> (6 - shift)); - tmp |= png_ptr->background.gray << shift; - *sp = (png_byte)(tmp & 0xff); - } - - else - { - unsigned int p = (*sp >> shift) & 0x03; - unsigned int g = (gamma_table [p | (p << 2) | - (p << 4) | (p << 6)] >> 6) & 0x03; - unsigned int tmp = *sp & (0x3f3f >> (6 - shift)); - tmp |= g << shift; - *sp = (png_byte)(tmp & 0xff); - } - - if (!shift) - { - shift = 6; - sp++; - } - - else - shift -= 2; - } - } - - else -#endif - { - sp = row; - shift = 6; - for (i = 0; i < row_width; i++) - { - if ((png_uint_16)((*sp >> shift) & 0x03) - == png_ptr->trans_color.gray) - { - unsigned int tmp = *sp & (0x3f3f >> (6 - shift)); - tmp |= png_ptr->background.gray << shift; - *sp = (png_byte)(tmp & 0xff); - } - - if (!shift) - { - shift = 6; - sp++; - } - - else - shift -= 2; - } - } - break; - } - - case 4: - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_table != NULL) - { - sp = row; - shift = 4; - for (i = 0; i < row_width; i++) - { - if ((png_uint_16)((*sp >> shift) & 0x0f) - == png_ptr->trans_color.gray) - { - unsigned int tmp = *sp & (0xf0f >> (4 - shift)); - tmp |= png_ptr->background.gray << shift; - *sp = (png_byte)(tmp & 0xff); - } - - else - { - unsigned int p = (*sp >> shift) & 0x0f; - unsigned int g = (gamma_table[p | (p << 4)] >> 4) & - 0x0f; - unsigned int tmp = *sp & (0xf0f >> (4 - shift)); - tmp |= g << shift; - *sp = (png_byte)(tmp & 0xff); - } - - if (!shift) - { - shift = 4; - sp++; - } - - else - shift -= 4; - } - } - - else -#endif - { - sp = row; - shift = 4; - for (i = 0; i < row_width; i++) - { - if ((png_uint_16)((*sp >> shift) & 0x0f) - == png_ptr->trans_color.gray) - { - unsigned int tmp = *sp & (0xf0f >> (4 - shift)); - tmp |= png_ptr->background.gray << shift; - *sp = (png_byte)(tmp & 0xff); - } - - if (!shift) - { - shift = 4; - sp++; - } - - else - shift -= 4; - } - } - break; - } - - case 8: - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_table != NULL) - { - sp = row; - for (i = 0; i < row_width; i++, sp++) - { - if (*sp == png_ptr->trans_color.gray) - *sp = (png_byte)png_ptr->background.gray; - - else - *sp = gamma_table[*sp]; - } - } - else -#endif - { - sp = row; - for (i = 0; i < row_width; i++, sp++) - { - if (*sp == png_ptr->trans_color.gray) - *sp = (png_byte)png_ptr->background.gray; - } - } - break; - } - - case 16: - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_16 != NULL) - { - sp = row; - for (i = 0; i < row_width; i++, sp += 2) - { - png_uint_16 v; - - v = (png_uint_16)(((*sp) << 8) + *(sp + 1)); - - if (v == png_ptr->trans_color.gray) - { - /* Background is already in screen gamma */ - *sp = (png_byte)((png_ptr->background.gray >> 8) - & 0xff); - *(sp + 1) = (png_byte)(png_ptr->background.gray - & 0xff); - } - - else - { - v = gamma_16[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - } - } - } - else -#endif - { - sp = row; - for (i = 0; i < row_width; i++, sp += 2) - { - png_uint_16 v; - - v = (png_uint_16)(((*sp) << 8) + *(sp + 1)); - - if (v == png_ptr->trans_color.gray) - { - *sp = (png_byte)((png_ptr->background.gray >> 8) - & 0xff); - *(sp + 1) = (png_byte)(png_ptr->background.gray - & 0xff); - } - } - } - break; - } - - default: - break; - } - break; - } - - case PNG_COLOR_TYPE_RGB: - { - if (row_info->bit_depth == 8) - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_table != NULL) - { - sp = row; - for (i = 0; i < row_width; i++, sp += 3) - { - if (*sp == png_ptr->trans_color.red && - *(sp + 1) == png_ptr->trans_color.green && - *(sp + 2) == png_ptr->trans_color.blue) - { - *sp = (png_byte)png_ptr->background.red; - *(sp + 1) = (png_byte)png_ptr->background.green; - *(sp + 2) = (png_byte)png_ptr->background.blue; - } - - else - { - *sp = gamma_table[*sp]; - *(sp + 1) = gamma_table[*(sp + 1)]; - *(sp + 2) = gamma_table[*(sp + 2)]; - } - } - } - else -#endif - { - sp = row; - for (i = 0; i < row_width; i++, sp += 3) - { - if (*sp == png_ptr->trans_color.red && - *(sp + 1) == png_ptr->trans_color.green && - *(sp + 2) == png_ptr->trans_color.blue) - { - *sp = (png_byte)png_ptr->background.red; - *(sp + 1) = (png_byte)png_ptr->background.green; - *(sp + 2) = (png_byte)png_ptr->background.blue; - } - } - } - } - else /* if (row_info->bit_depth == 16) */ - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_16 != NULL) - { - sp = row; - for (i = 0; i < row_width; i++, sp += 6) - { - png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp + 1)); - - png_uint_16 g = (png_uint_16)(((*(sp + 2)) << 8) - + *(sp + 3)); - - png_uint_16 b = (png_uint_16)(((*(sp + 4)) << 8) - + *(sp + 5)); - - if (r == png_ptr->trans_color.red && - g == png_ptr->trans_color.green && - b == png_ptr->trans_color.blue) - { - /* Background is already in screen gamma */ - *sp = (png_byte)((png_ptr->background.red >> 8) & 0xff); - *(sp + 1) = (png_byte)(png_ptr->background.red & 0xff); - *(sp + 2) = (png_byte)((png_ptr->background.green >> 8) - & 0xff); - *(sp + 3) = (png_byte)(png_ptr->background.green - & 0xff); - *(sp + 4) = (png_byte)((png_ptr->background.blue >> 8) - & 0xff); - *(sp + 5) = (png_byte)(png_ptr->background.blue & 0xff); - } - - else - { - png_uint_16 v = gamma_16[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - - v = gamma_16[*(sp + 3) >> gamma_shift][*(sp + 2)]; - *(sp + 2) = (png_byte)((v >> 8) & 0xff); - *(sp + 3) = (png_byte)(v & 0xff); - - v = gamma_16[*(sp + 5) >> gamma_shift][*(sp + 4)]; - *(sp + 4) = (png_byte)((v >> 8) & 0xff); - *(sp + 5) = (png_byte)(v & 0xff); - } - } - } - - else -#endif - { - sp = row; - for (i = 0; i < row_width; i++, sp += 6) - { - png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp + 1)); - - png_uint_16 g = (png_uint_16)(((*(sp + 2)) << 8) - + *(sp + 3)); - - png_uint_16 b = (png_uint_16)(((*(sp + 4)) << 8) - + *(sp + 5)); - - if (r == png_ptr->trans_color.red && - g == png_ptr->trans_color.green && - b == png_ptr->trans_color.blue) - { - *sp = (png_byte)((png_ptr->background.red >> 8) & 0xff); - *(sp + 1) = (png_byte)(png_ptr->background.red & 0xff); - *(sp + 2) = (png_byte)((png_ptr->background.green >> 8) - & 0xff); - *(sp + 3) = (png_byte)(png_ptr->background.green - & 0xff); - *(sp + 4) = (png_byte)((png_ptr->background.blue >> 8) - & 0xff); - *(sp + 5) = (png_byte)(png_ptr->background.blue & 0xff); - } - } - } - } - break; - } - - case PNG_COLOR_TYPE_GRAY_ALPHA: - { - if (row_info->bit_depth == 8) - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_to_1 != NULL && gamma_from_1 != NULL && - gamma_table != NULL) - { - sp = row; - for (i = 0; i < row_width; i++, sp += 2) - { - png_uint_16 a = *(sp + 1); - - if (a == 0xff) - *sp = gamma_table[*sp]; - - else if (a == 0) - { - /* Background is already in screen gamma */ - *sp = (png_byte)png_ptr->background.gray; - } - - else - { - png_byte v, w; - - v = gamma_to_1[*sp]; - png_composite(w, v, a, png_ptr->background_1.gray); - if (!optimize) - w = gamma_from_1[w]; - *sp = w; - } - } - } - else -#endif - { - sp = row; - for (i = 0; i < row_width; i++, sp += 2) - { - png_byte a = *(sp + 1); - - if (a == 0) - *sp = (png_byte)png_ptr->background.gray; - - else if (a < 0xff) - png_composite(*sp, *sp, a, png_ptr->background.gray); - } - } - } - else /* if (png_ptr->bit_depth == 16) */ - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_16 != NULL && gamma_16_from_1 != NULL && - gamma_16_to_1 != NULL) - { - sp = row; - for (i = 0; i < row_width; i++, sp += 4) - { - png_uint_16 a = (png_uint_16)(((*(sp + 2)) << 8) - + *(sp + 3)); - - if (a == (png_uint_16)0xffff) - { - png_uint_16 v; - - v = gamma_16[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - } - - else if (a == 0) - { - /* Background is already in screen gamma */ - *sp = (png_byte)((png_ptr->background.gray >> 8) - & 0xff); - *(sp + 1) = (png_byte)(png_ptr->background.gray & 0xff); - } - - else - { - png_uint_16 g, v, w; - - g = gamma_16_to_1[*(sp + 1) >> gamma_shift][*sp]; - png_composite_16(v, g, a, png_ptr->background_1.gray); - if (optimize) - w = v; - else - w = gamma_16_from_1[(v&0xff) >> gamma_shift][v >> 8]; - *sp = (png_byte)((w >> 8) & 0xff); - *(sp + 1) = (png_byte)(w & 0xff); - } - } - } - else -#endif - { - sp = row; - for (i = 0; i < row_width; i++, sp += 4) - { - png_uint_16 a = (png_uint_16)(((*(sp + 2)) << 8) - + *(sp + 3)); - - if (a == 0) - { - *sp = (png_byte)((png_ptr->background.gray >> 8) - & 0xff); - *(sp + 1) = (png_byte)(png_ptr->background.gray & 0xff); - } - - else if (a < 0xffff) - { - png_uint_16 g, v; - - g = (png_uint_16)(((*sp) << 8) + *(sp + 1)); - png_composite_16(v, g, a, png_ptr->background.gray); - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - } - } - } - } - break; - } - - case PNG_COLOR_TYPE_RGB_ALPHA: - { - if (row_info->bit_depth == 8) - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_to_1 != NULL && gamma_from_1 != NULL && - gamma_table != NULL) - { - sp = row; - for (i = 0; i < row_width; i++, sp += 4) - { - png_byte a = *(sp + 3); - - if (a == 0xff) - { - *sp = gamma_table[*sp]; - *(sp + 1) = gamma_table[*(sp + 1)]; - *(sp + 2) = gamma_table[*(sp + 2)]; - } - - else if (a == 0) - { - /* Background is already in screen gamma */ - *sp = (png_byte)png_ptr->background.red; - *(sp + 1) = (png_byte)png_ptr->background.green; - *(sp + 2) = (png_byte)png_ptr->background.blue; - } - - else - { - png_byte v, w; - - v = gamma_to_1[*sp]; - png_composite(w, v, a, png_ptr->background_1.red); - if (!optimize) w = gamma_from_1[w]; - *sp = w; - - v = gamma_to_1[*(sp + 1)]; - png_composite(w, v, a, png_ptr->background_1.green); - if (!optimize) w = gamma_from_1[w]; - *(sp + 1) = w; - - v = gamma_to_1[*(sp + 2)]; - png_composite(w, v, a, png_ptr->background_1.blue); - if (!optimize) w = gamma_from_1[w]; - *(sp + 2) = w; - } - } - } - else -#endif - { - sp = row; - for (i = 0; i < row_width; i++, sp += 4) - { - png_byte a = *(sp + 3); - - if (a == 0) - { - *sp = (png_byte)png_ptr->background.red; - *(sp + 1) = (png_byte)png_ptr->background.green; - *(sp + 2) = (png_byte)png_ptr->background.blue; - } - - else if (a < 0xff) - { - png_composite(*sp, *sp, a, png_ptr->background.red); - - png_composite(*(sp + 1), *(sp + 1), a, - png_ptr->background.green); - - png_composite(*(sp + 2), *(sp + 2), a, - png_ptr->background.blue); - } - } - } - } - else /* if (row_info->bit_depth == 16) */ - { -#ifdef PNG_READ_GAMMA_SUPPORTED - if (gamma_16 != NULL && gamma_16_from_1 != NULL && - gamma_16_to_1 != NULL) - { - sp = row; - for (i = 0; i < row_width; i++, sp += 8) - { - png_uint_16 a = (png_uint_16)(((png_uint_16)(*(sp + 6)) - << 8) + (png_uint_16)(*(sp + 7))); - - if (a == (png_uint_16)0xffff) - { - png_uint_16 v; - - v = gamma_16[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - - v = gamma_16[*(sp + 3) >> gamma_shift][*(sp + 2)]; - *(sp + 2) = (png_byte)((v >> 8) & 0xff); - *(sp + 3) = (png_byte)(v & 0xff); - - v = gamma_16[*(sp + 5) >> gamma_shift][*(sp + 4)]; - *(sp + 4) = (png_byte)((v >> 8) & 0xff); - *(sp + 5) = (png_byte)(v & 0xff); - } - - else if (a == 0) - { - /* Background is already in screen gamma */ - *sp = (png_byte)((png_ptr->background.red >> 8) & 0xff); - *(sp + 1) = (png_byte)(png_ptr->background.red & 0xff); - *(sp + 2) = (png_byte)((png_ptr->background.green >> 8) - & 0xff); - *(sp + 3) = (png_byte)(png_ptr->background.green - & 0xff); - *(sp + 4) = (png_byte)((png_ptr->background.blue >> 8) - & 0xff); - *(sp + 5) = (png_byte)(png_ptr->background.blue & 0xff); - } - - else - { - png_uint_16 v, w; - - v = gamma_16_to_1[*(sp + 1) >> gamma_shift][*sp]; - png_composite_16(w, v, a, png_ptr->background_1.red); - if (!optimize) - w = gamma_16_from_1[((w&0xff) >> gamma_shift)][w >> - 8]; - *sp = (png_byte)((w >> 8) & 0xff); - *(sp + 1) = (png_byte)(w & 0xff); - - v = gamma_16_to_1[*(sp + 3) >> gamma_shift][*(sp + 2)]; - png_composite_16(w, v, a, png_ptr->background_1.green); - if (!optimize) - w = gamma_16_from_1[((w&0xff) >> gamma_shift)][w >> - 8]; - - *(sp + 2) = (png_byte)((w >> 8) & 0xff); - *(sp + 3) = (png_byte)(w & 0xff); - - v = gamma_16_to_1[*(sp + 5) >> gamma_shift][*(sp + 4)]; - png_composite_16(w, v, a, png_ptr->background_1.blue); - if (!optimize) - w = gamma_16_from_1[((w&0xff) >> gamma_shift)][w >> - 8]; - - *(sp + 4) = (png_byte)((w >> 8) & 0xff); - *(sp + 5) = (png_byte)(w & 0xff); - } - } - } - - else -#endif - { - sp = row; - for (i = 0; i < row_width; i++, sp += 8) - { - png_uint_16 a = (png_uint_16)(((png_uint_16)(*(sp + 6)) - << 8) + (png_uint_16)(*(sp + 7))); - - if (a == 0) - { - *sp = (png_byte)((png_ptr->background.red >> 8) & 0xff); - *(sp + 1) = (png_byte)(png_ptr->background.red & 0xff); - *(sp + 2) = (png_byte)((png_ptr->background.green >> 8) - & 0xff); - *(sp + 3) = (png_byte)(png_ptr->background.green - & 0xff); - *(sp + 4) = (png_byte)((png_ptr->background.blue >> 8) - & 0xff); - *(sp + 5) = (png_byte)(png_ptr->background.blue & 0xff); - } - - else if (a < 0xffff) - { - png_uint_16 v; - - png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp + 1)); - png_uint_16 g = (png_uint_16)(((*(sp + 2)) << 8) - + *(sp + 3)); - png_uint_16 b = (png_uint_16)(((*(sp + 4)) << 8) - + *(sp + 5)); - - png_composite_16(v, r, a, png_ptr->background.red); - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - - png_composite_16(v, g, a, png_ptr->background.green); - *(sp + 2) = (png_byte)((v >> 8) & 0xff); - *(sp + 3) = (png_byte)(v & 0xff); - - png_composite_16(v, b, a, png_ptr->background.blue); - *(sp + 4) = (png_byte)((v >> 8) & 0xff); - *(sp + 5) = (png_byte)(v & 0xff); - } - } - } - } - break; - } - - default: - break; - } - } -} -#endif /* PNG_READ_BACKGROUND_SUPPORTED || PNG_READ_ALPHA_MODE_SUPPORTED */ - -#ifdef PNG_READ_GAMMA_SUPPORTED -/* Gamma correct the image, avoiding the alpha channel. Make sure - * you do this after you deal with the transparency issue on grayscale - * or RGB images. If your bit depth is 8, use gamma_table, if it - * is 16, use gamma_16_table and gamma_shift. Build these with - * build_gamma_table(). - */ -void /* PRIVATE */ -png_do_gamma(png_row_infop row_info, png_bytep row, png_structrp png_ptr) -{ - png_const_bytep gamma_table = png_ptr->gamma_table; - png_const_uint_16pp gamma_16_table = png_ptr->gamma_16_table; - int gamma_shift = png_ptr->gamma_shift; - - png_bytep sp; - png_uint_32 i; - png_uint_32 row_width=row_info->width; - - png_debug(1, "in png_do_gamma"); - - if (((row_info->bit_depth <= 8 && gamma_table != NULL) || - (row_info->bit_depth == 16 && gamma_16_table != NULL))) - { - switch (row_info->color_type) - { - case PNG_COLOR_TYPE_RGB: - { - if (row_info->bit_depth == 8) - { - sp = row; - for (i = 0; i < row_width; i++) - { - *sp = gamma_table[*sp]; - sp++; - *sp = gamma_table[*sp]; - sp++; - *sp = gamma_table[*sp]; - sp++; - } - } - - else /* if (row_info->bit_depth == 16) */ - { - sp = row; - for (i = 0; i < row_width; i++) - { - png_uint_16 v; - - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - } - } - break; - } - - case PNG_COLOR_TYPE_RGB_ALPHA: - { - if (row_info->bit_depth == 8) - { - sp = row; - for (i = 0; i < row_width; i++) - { - *sp = gamma_table[*sp]; - sp++; - - *sp = gamma_table[*sp]; - sp++; - - *sp = gamma_table[*sp]; - sp++; - - sp++; - } - } - - else /* if (row_info->bit_depth == 16) */ - { - sp = row; - for (i = 0; i < row_width; i++) - { - png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 4; - } - } - break; - } - - case PNG_COLOR_TYPE_GRAY_ALPHA: - { - if (row_info->bit_depth == 8) - { - sp = row; - for (i = 0; i < row_width; i++) - { - *sp = gamma_table[*sp]; - sp += 2; - } - } - - else /* if (row_info->bit_depth == 16) */ - { - sp = row; - for (i = 0; i < row_width; i++) - { - png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 4; - } - } - break; - } - - case PNG_COLOR_TYPE_GRAY: - { - if (row_info->bit_depth == 2) - { - sp = row; - for (i = 0; i < row_width; i += 4) - { - int a = *sp & 0xc0; - int b = *sp & 0x30; - int c = *sp & 0x0c; - int d = *sp & 0x03; - - *sp = (png_byte)( - ((((int)gamma_table[a|(a>>2)|(a>>4)|(a>>6)]) ) & 0xc0)| - ((((int)gamma_table[(b<<2)|b|(b>>2)|(b>>4)])>>2) & 0x30)| - ((((int)gamma_table[(c<<4)|(c<<2)|c|(c>>2)])>>4) & 0x0c)| - ((((int)gamma_table[(d<<6)|(d<<4)|(d<<2)|d])>>6) )); - sp++; - } - } - - if (row_info->bit_depth == 4) - { - sp = row; - for (i = 0; i < row_width; i += 2) - { - int msb = *sp & 0xf0; - int lsb = *sp & 0x0f; - - *sp = (png_byte)((((int)gamma_table[msb | (msb >> 4)]) & 0xf0) - | (((int)gamma_table[(lsb << 4) | lsb]) >> 4)); - sp++; - } - } - - else if (row_info->bit_depth == 8) - { - sp = row; - for (i = 0; i < row_width; i++) - { - *sp = gamma_table[*sp]; - sp++; - } - } - - else if (row_info->bit_depth == 16) - { - sp = row; - for (i = 0; i < row_width; i++) - { - png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - } - } - break; - } - - default: - break; - } - } -} -#endif - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED -/* Encode the alpha channel to the output gamma (the input channel is always - * linear.) Called only with color types that have an alpha channel. Needs the - * from_1 tables. - */ -void /* PRIVATE */ -png_do_encode_alpha(png_row_infop row_info, png_bytep row, png_structrp png_ptr) -{ - png_uint_32 row_width = row_info->width; - - png_debug(1, "in png_do_encode_alpha"); - - if (row_info->color_type & PNG_COLOR_MASK_ALPHA) - { - if (row_info->bit_depth == 8) - { - PNG_CONST png_bytep table = png_ptr->gamma_from_1; - - if (table != NULL) - { - PNG_CONST int step = - (row_info->color_type & PNG_COLOR_MASK_COLOR) ? 4 : 2; - - /* The alpha channel is the last component: */ - row += step - 1; - - for (; row_width > 0; --row_width, row += step) - *row = table[*row]; - - return; - } - } - - else if (row_info->bit_depth == 16) - { - PNG_CONST png_uint_16pp table = png_ptr->gamma_16_from_1; - PNG_CONST int gamma_shift = png_ptr->gamma_shift; - - if (table != NULL) - { - PNG_CONST int step = - (row_info->color_type & PNG_COLOR_MASK_COLOR) ? 8 : 4; - - /* The alpha channel is the last component: */ - row += step - 2; - - for (; row_width > 0; --row_width, row += step) - { - png_uint_16 v; - - v = table[*(row + 1) >> gamma_shift][*row]; - *row = (png_byte)((v >> 8) & 0xff); - *(row + 1) = (png_byte)(v & 0xff); - } - - return; - } - } - } - - /* Only get to here if called with a weird row_info; no harm has been done, - * so just issue a warning. - */ - png_warning(png_ptr, "png_do_encode_alpha: unexpected call"); -} -#endif - -#ifdef PNG_READ_EXPAND_SUPPORTED -/* Expands a palette row to an RGB or RGBA row depending - * upon whether you supply trans and num_trans. - */ -void /* PRIVATE */ -png_do_expand_palette(png_row_infop row_info, png_bytep row, - png_const_colorp palette, png_const_bytep trans_alpha, int num_trans) -{ - int shift, value; - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width=row_info->width; - - png_debug(1, "in png_do_expand_palette"); - - if (row_info->color_type == PNG_COLOR_TYPE_PALETTE) - { - if (row_info->bit_depth < 8) - { - switch (row_info->bit_depth) - { - case 1: - { - sp = row + (png_size_t)((row_width - 1) >> 3); - dp = row + (png_size_t)row_width - 1; - shift = 7 - (int)((row_width + 7) & 0x07); - for (i = 0; i < row_width; i++) - { - if ((*sp >> shift) & 0x01) - *dp = 1; - - else - *dp = 0; - - if (shift == 7) - { - shift = 0; - sp--; - } - - else - shift++; - - dp--; - } - break; - } - - case 2: - { - sp = row + (png_size_t)((row_width - 1) >> 2); - dp = row + (png_size_t)row_width - 1; - shift = (int)((3 - ((row_width + 3) & 0x03)) << 1); - for (i = 0; i < row_width; i++) - { - value = (*sp >> shift) & 0x03; - *dp = (png_byte)value; - if (shift == 6) - { - shift = 0; - sp--; - } - - else - shift += 2; - - dp--; - } - break; - } - - case 4: - { - sp = row + (png_size_t)((row_width - 1) >> 1); - dp = row + (png_size_t)row_width - 1; - shift = (int)((row_width & 0x01) << 2); - for (i = 0; i < row_width; i++) - { - value = (*sp >> shift) & 0x0f; - *dp = (png_byte)value; - if (shift == 4) - { - shift = 0; - sp--; - } - - else - shift += 4; - - dp--; - } - break; - } - - default: - break; - } - row_info->bit_depth = 8; - row_info->pixel_depth = 8; - row_info->rowbytes = row_width; - } - - if (row_info->bit_depth == 8) - { - { - if (num_trans > 0) - { - sp = row + (png_size_t)row_width - 1; - dp = row + (png_size_t)(row_width << 2) - 1; - - for (i = 0; i < row_width; i++) - { - if ((int)(*sp) >= num_trans) - *dp-- = 0xff; - - else - *dp-- = trans_alpha[*sp]; - - *dp-- = palette[*sp].blue; - *dp-- = palette[*sp].green; - *dp-- = palette[*sp].red; - sp--; - } - row_info->bit_depth = 8; - row_info->pixel_depth = 32; - row_info->rowbytes = row_width * 4; - row_info->color_type = 6; - row_info->channels = 4; - } - - else - { - sp = row + (png_size_t)row_width - 1; - dp = row + (png_size_t)(row_width * 3) - 1; - - for (i = 0; i < row_width; i++) - { - *dp-- = palette[*sp].blue; - *dp-- = palette[*sp].green; - *dp-- = palette[*sp].red; - sp--; - } - - row_info->bit_depth = 8; - row_info->pixel_depth = 24; - row_info->rowbytes = row_width * 3; - row_info->color_type = 2; - row_info->channels = 3; - } - } - } - } -} - -/* If the bit depth < 8, it is expanded to 8. Also, if the already - * expanded transparency value is supplied, an alpha channel is built. - */ -void /* PRIVATE */ -png_do_expand(png_row_infop row_info, png_bytep row, - png_const_color_16p trans_color) -{ - int shift, value; - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width=row_info->width; - - png_debug(1, "in png_do_expand"); - - { - if (row_info->color_type == PNG_COLOR_TYPE_GRAY) - { - unsigned int gray = trans_color ? trans_color->gray : 0; - - if (row_info->bit_depth < 8) - { - switch (row_info->bit_depth) - { - case 1: - { - gray = (gray & 0x01) * 0xff; - sp = row + (png_size_t)((row_width - 1) >> 3); - dp = row + (png_size_t)row_width - 1; - shift = 7 - (int)((row_width + 7) & 0x07); - for (i = 0; i < row_width; i++) - { - if ((*sp >> shift) & 0x01) - *dp = 0xff; - - else - *dp = 0; - - if (shift == 7) - { - shift = 0; - sp--; - } - - else - shift++; - - dp--; - } - break; - } - - case 2: - { - gray = (gray & 0x03) * 0x55; - sp = row + (png_size_t)((row_width - 1) >> 2); - dp = row + (png_size_t)row_width - 1; - shift = (int)((3 - ((row_width + 3) & 0x03)) << 1); - for (i = 0; i < row_width; i++) - { - value = (*sp >> shift) & 0x03; - *dp = (png_byte)(value | (value << 2) | (value << 4) | - (value << 6)); - if (shift == 6) - { - shift = 0; - sp--; - } - - else - shift += 2; - - dp--; - } - break; - } - - case 4: - { - gray = (gray & 0x0f) * 0x11; - sp = row + (png_size_t)((row_width - 1) >> 1); - dp = row + (png_size_t)row_width - 1; - shift = (int)((1 - ((row_width + 1) & 0x01)) << 2); - for (i = 0; i < row_width; i++) - { - value = (*sp >> shift) & 0x0f; - *dp = (png_byte)(value | (value << 4)); - if (shift == 4) - { - shift = 0; - sp--; - } - - else - shift = 4; - - dp--; - } - break; - } - - default: - break; - } - - row_info->bit_depth = 8; - row_info->pixel_depth = 8; - row_info->rowbytes = row_width; - } - - if (trans_color != NULL) - { - if (row_info->bit_depth == 8) - { - gray = gray & 0xff; - sp = row + (png_size_t)row_width - 1; - dp = row + (png_size_t)(row_width << 1) - 1; - - for (i = 0; i < row_width; i++) - { - if (*sp == gray) - *dp-- = 0; - - else - *dp-- = 0xff; - - *dp-- = *sp--; - } - } - - else if (row_info->bit_depth == 16) - { - unsigned int gray_high = (gray >> 8) & 0xff; - unsigned int gray_low = gray & 0xff; - sp = row + row_info->rowbytes - 1; - dp = row + (row_info->rowbytes << 1) - 1; - for (i = 0; i < row_width; i++) - { - if (*(sp - 1) == gray_high && *(sp) == gray_low) - { - *dp-- = 0; - *dp-- = 0; - } - - else - { - *dp-- = 0xff; - *dp-- = 0xff; - } - - *dp-- = *sp--; - *dp-- = *sp--; - } - } - - row_info->color_type = PNG_COLOR_TYPE_GRAY_ALPHA; - row_info->channels = 2; - row_info->pixel_depth = (png_byte)(row_info->bit_depth << 1); - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, - row_width); - } - } - else if (row_info->color_type == PNG_COLOR_TYPE_RGB && trans_color) - { - if (row_info->bit_depth == 8) - { - png_byte red = (png_byte)(trans_color->red & 0xff); - png_byte green = (png_byte)(trans_color->green & 0xff); - png_byte blue = (png_byte)(trans_color->blue & 0xff); - sp = row + (png_size_t)row_info->rowbytes - 1; - dp = row + (png_size_t)(row_width << 2) - 1; - for (i = 0; i < row_width; i++) - { - if (*(sp - 2) == red && *(sp - 1) == green && *(sp) == blue) - *dp-- = 0; - - else - *dp-- = 0xff; - - *dp-- = *sp--; - *dp-- = *sp--; - *dp-- = *sp--; - } - } - else if (row_info->bit_depth == 16) - { - png_byte red_high = (png_byte)((trans_color->red >> 8) & 0xff); - png_byte green_high = (png_byte)((trans_color->green >> 8) & 0xff); - png_byte blue_high = (png_byte)((trans_color->blue >> 8) & 0xff); - png_byte red_low = (png_byte)(trans_color->red & 0xff); - png_byte green_low = (png_byte)(trans_color->green & 0xff); - png_byte blue_low = (png_byte)(trans_color->blue & 0xff); - sp = row + row_info->rowbytes - 1; - dp = row + (png_size_t)(row_width << 3) - 1; - for (i = 0; i < row_width; i++) - { - if (*(sp - 5) == red_high && - *(sp - 4) == red_low && - *(sp - 3) == green_high && - *(sp - 2) == green_low && - *(sp - 1) == blue_high && - *(sp ) == blue_low) - { - *dp-- = 0; - *dp-- = 0; - } - - else - { - *dp-- = 0xff; - *dp-- = 0xff; - } - - *dp-- = *sp--; - *dp-- = *sp--; - *dp-- = *sp--; - *dp-- = *sp--; - *dp-- = *sp--; - *dp-- = *sp--; - } - } - row_info->color_type = PNG_COLOR_TYPE_RGB_ALPHA; - row_info->channels = 4; - row_info->pixel_depth = (png_byte)(row_info->bit_depth << 2); - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width); - } - } -} -#endif - -#ifdef PNG_READ_EXPAND_16_SUPPORTED -/* If the bit depth is 8 and the color type is not a palette type expand the - * whole row to 16 bits. Has no effect otherwise. - */ -void /* PRIVATE */ -png_do_expand_16(png_row_infop row_info, png_bytep row) -{ - if (row_info->bit_depth == 8 && - row_info->color_type != PNG_COLOR_TYPE_PALETTE) - { - /* The row have a sequence of bytes containing [0..255] and we need - * to turn it into another row containing [0..65535], to do this we - * calculate: - * - * (input / 255) * 65535 - * - * Which happens to be exactly input * 257 and this can be achieved - * simply by byte replication in place (copying backwards). - */ - png_byte *sp = row + row_info->rowbytes; /* source, last byte + 1 */ - png_byte *dp = sp + row_info->rowbytes; /* destination, end + 1 */ - while (dp > sp) - dp[-2] = dp[-1] = *--sp, dp -= 2; - - row_info->rowbytes *= 2; - row_info->bit_depth = 16; - row_info->pixel_depth = (png_byte)(row_info->channels * 16); - } -} -#endif - -#ifdef PNG_READ_QUANTIZE_SUPPORTED -void /* PRIVATE */ -png_do_quantize(png_row_infop row_info, png_bytep row, - png_const_bytep palette_lookup, png_const_bytep quantize_lookup) -{ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width=row_info->width; - - png_debug(1, "in png_do_quantize"); - - if (row_info->bit_depth == 8) - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB && palette_lookup) - { - int r, g, b, p; - sp = row; - dp = row; - for (i = 0; i < row_width; i++) - { - r = *sp++; - g = *sp++; - b = *sp++; - - /* This looks real messy, but the compiler will reduce - * it down to a reasonable formula. For example, with - * 5 bits per color, we get: - * p = (((r >> 3) & 0x1f) << 10) | - * (((g >> 3) & 0x1f) << 5) | - * ((b >> 3) & 0x1f); - */ - p = (((r >> (8 - PNG_QUANTIZE_RED_BITS)) & - ((1 << PNG_QUANTIZE_RED_BITS) - 1)) << - (PNG_QUANTIZE_GREEN_BITS + PNG_QUANTIZE_BLUE_BITS)) | - (((g >> (8 - PNG_QUANTIZE_GREEN_BITS)) & - ((1 << PNG_QUANTIZE_GREEN_BITS) - 1)) << - (PNG_QUANTIZE_BLUE_BITS)) | - ((b >> (8 - PNG_QUANTIZE_BLUE_BITS)) & - ((1 << PNG_QUANTIZE_BLUE_BITS) - 1)); - - *dp++ = palette_lookup[p]; - } - - row_info->color_type = PNG_COLOR_TYPE_PALETTE; - row_info->channels = 1; - row_info->pixel_depth = row_info->bit_depth; - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width); - } - - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA && - palette_lookup != NULL) - { - int r, g, b, p; - sp = row; - dp = row; - for (i = 0; i < row_width; i++) - { - r = *sp++; - g = *sp++; - b = *sp++; - sp++; - - p = (((r >> (8 - PNG_QUANTIZE_RED_BITS)) & - ((1 << PNG_QUANTIZE_RED_BITS) - 1)) << - (PNG_QUANTIZE_GREEN_BITS + PNG_QUANTIZE_BLUE_BITS)) | - (((g >> (8 - PNG_QUANTIZE_GREEN_BITS)) & - ((1 << PNG_QUANTIZE_GREEN_BITS) - 1)) << - (PNG_QUANTIZE_BLUE_BITS)) | - ((b >> (8 - PNG_QUANTIZE_BLUE_BITS)) & - ((1 << PNG_QUANTIZE_BLUE_BITS) - 1)); - - *dp++ = palette_lookup[p]; - } - - row_info->color_type = PNG_COLOR_TYPE_PALETTE; - row_info->channels = 1; - row_info->pixel_depth = row_info->bit_depth; - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width); - } - - else if (row_info->color_type == PNG_COLOR_TYPE_PALETTE && - quantize_lookup) - { - sp = row; - - for (i = 0; i < row_width; i++, sp++) - { - *sp = quantize_lookup[*sp]; - } - } - } -} -#endif /* PNG_READ_QUANTIZE_SUPPORTED */ -#endif /* PNG_READ_TRANSFORMS_SUPPORTED */ - -#ifdef PNG_MNG_FEATURES_SUPPORTED -/* Undoes intrapixel differencing */ -void /* PRIVATE */ -png_do_read_intrapixel(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_read_intrapixel"); - - if ( - (row_info->color_type & PNG_COLOR_MASK_COLOR)) - { - int bytes_per_pixel; - png_uint_32 row_width = row_info->width; - - if (row_info->bit_depth == 8) - { - png_bytep rp; - png_uint_32 i; - - if (row_info->color_type == PNG_COLOR_TYPE_RGB) - bytes_per_pixel = 3; - - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - bytes_per_pixel = 4; - - else - return; - - for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel) - { - *(rp) = (png_byte)((256 + *rp + *(rp + 1)) & 0xff); - *(rp+2) = (png_byte)((256 + *(rp + 2) + *(rp + 1)) & 0xff); - } - } - else if (row_info->bit_depth == 16) - { - png_bytep rp; - png_uint_32 i; - - if (row_info->color_type == PNG_COLOR_TYPE_RGB) - bytes_per_pixel = 6; - - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - bytes_per_pixel = 8; - - else - return; - - for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel) - { - png_uint_32 s0 = (*(rp ) << 8) | *(rp + 1); - png_uint_32 s1 = (*(rp + 2) << 8) | *(rp + 3); - png_uint_32 s2 = (*(rp + 4) << 8) | *(rp + 5); - png_uint_32 red = (s0 + s1 + 65536) & 0xffff; - png_uint_32 blue = (s2 + s1 + 65536) & 0xffff; - *(rp ) = (png_byte)((red >> 8) & 0xff); - *(rp + 1) = (png_byte)(red & 0xff); - *(rp + 4) = (png_byte)((blue >> 8) & 0xff); - *(rp + 5) = (png_byte)(blue & 0xff); - } - } - } -} -#endif /* PNG_MNG_FEATURES_SUPPORTED */ -#endif /* PNG_READ_SUPPORTED */ diff --git a/io2d/src/3rd-party/libpng/pngrutil.c b/io2d/src/3rd-party/libpng/pngrutil.c deleted file mode 100644 index 9ecb5a9..0000000 --- a/io2d/src/3rd-party/libpng/pngrutil.c +++ /dev/null @@ -1,4479 +0,0 @@ - -/* pngrutil.c - utilities to read a PNG file - * - * Last changed in libpng 1.6.8 [(PENDING RELEASE)] - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * This file contains routines that are only called from within - * libpng itself during the course of reading an image. - */ - -#include "pngpriv.h" - -#ifdef PNG_READ_SUPPORTED - -png_uint_32 PNGAPI -png_get_uint_31(png_const_structrp png_ptr, png_const_bytep buf) -{ - png_uint_32 uval = png_get_uint_32(buf); - - if (uval > PNG_UINT_31_MAX) - png_error(png_ptr, "PNG unsigned integer out of range"); - - return (uval); -} - -#if defined(PNG_READ_gAMA_SUPPORTED) || defined(PNG_READ_cHRM_SUPPORTED) -/* The following is a variation on the above for use with the fixed - * point values used for gAMA and cHRM. Instead of png_error it - * issues a warning and returns (-1) - an invalid value because both - * gAMA and cHRM use *unsigned* integers for fixed point values. - */ -#define PNG_FIXED_ERROR (-1) - -static png_fixed_point /* PRIVATE */ -png_get_fixed_point(png_structrp png_ptr, png_const_bytep buf) -{ - png_uint_32 uval = png_get_uint_32(buf); - - if (uval <= PNG_UINT_31_MAX) - return (png_fixed_point)uval; /* known to be in range */ - - /* The caller can turn off the warning by passing NULL. */ - if (png_ptr != NULL) - png_warning(png_ptr, "PNG fixed point integer out of range"); - - return PNG_FIXED_ERROR; -} -#endif - -#ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED -/* NOTE: the read macros will obscure these definitions, so that if - * PNG_USE_READ_MACROS is set the library will not use them internally, - * but the APIs will still be available externally. - * - * The parentheses around "PNGAPI function_name" in the following three - * functions are necessary because they allow the macros to co-exist with - * these (unused but exported) functions. - */ - -/* Grab an unsigned 32-bit integer from a buffer in big-endian format. */ -png_uint_32 (PNGAPI -png_get_uint_32)(png_const_bytep buf) -{ - png_uint_32 uval = - ((png_uint_32)(*(buf )) << 24) + - ((png_uint_32)(*(buf + 1)) << 16) + - ((png_uint_32)(*(buf + 2)) << 8) + - ((png_uint_32)(*(buf + 3)) ) ; - - return uval; -} - -/* Grab a signed 32-bit integer from a buffer in big-endian format. The - * data is stored in the PNG file in two's complement format and there - * is no guarantee that a 'png_int_32' is exactly 32 bits, therefore - * the following code does a two's complement to native conversion. - */ -png_int_32 (PNGAPI -png_get_int_32)(png_const_bytep buf) -{ - png_uint_32 uval = png_get_uint_32(buf); - if ((uval & 0x80000000) == 0) /* non-negative */ - return uval; - - uval = (uval ^ 0xffffffff) + 1; /* 2's complement: -x = ~x+1 */ - return -(png_int_32)uval; -} - -/* Grab an unsigned 16-bit integer from a buffer in big-endian format. */ -png_uint_16 (PNGAPI -png_get_uint_16)(png_const_bytep buf) -{ - /* ANSI-C requires an int value to accomodate at least 16 bits so this - * works and allows the compiler not to worry about possible narrowing - * on 32 bit systems. (Pre-ANSI systems did not make integers smaller - * than 16 bits either.) - */ - unsigned int val = - ((unsigned int)(*buf) << 8) + - ((unsigned int)(*(buf + 1))); - - return (png_uint_16)val; -} - -#endif /* PNG_READ_INT_FUNCTIONS_SUPPORTED */ - -/* Read and check the PNG file signature */ -void /* PRIVATE */ -png_read_sig(png_structrp png_ptr, png_inforp info_ptr) -{ - png_size_t num_checked, num_to_check; - - /* Exit if the user application does not expect a signature. */ - if (png_ptr->sig_bytes >= 8) - return; - - num_checked = png_ptr->sig_bytes; - num_to_check = 8 - num_checked; - -#ifdef PNG_IO_STATE_SUPPORTED - png_ptr->io_state = PNG_IO_READING | PNG_IO_SIGNATURE; -#endif - - /* The signature must be serialized in a single I/O call. */ - png_read_data(png_ptr, &(info_ptr->signature[num_checked]), num_to_check); - png_ptr->sig_bytes = 8; - - if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check)) - { - if (num_checked < 4 && - png_sig_cmp(info_ptr->signature, num_checked, num_to_check - 4)) - png_error(png_ptr, "Not a PNG file"); - else - png_error(png_ptr, "PNG file corrupted by ASCII conversion"); - } - if (num_checked < 3) - png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE; -} - -/* Read the chunk header (length + type name). - * Put the type name into png_ptr->chunk_name, and return the length. - */ -png_uint_32 /* PRIVATE */ -png_read_chunk_header(png_structrp png_ptr) -{ - png_byte buf[8]; - png_uint_32 length; - -#ifdef PNG_IO_STATE_SUPPORTED - png_ptr->io_state = PNG_IO_READING | PNG_IO_CHUNK_HDR; -#endif - - /* Read the length and the chunk name. - * This must be performed in a single I/O call. - */ - png_read_data(png_ptr, buf, 8); - length = png_get_uint_31(png_ptr, buf); - - /* Put the chunk name into png_ptr->chunk_name. */ - png_ptr->chunk_name = PNG_CHUNK_FROM_STRING(buf+4); - - png_debug2(0, "Reading %lx chunk, length = %lu", - (unsigned long)png_ptr->chunk_name, (unsigned long)length); - - /* Reset the crc and run it over the chunk name. */ - png_reset_crc(png_ptr); - png_calculate_crc(png_ptr, buf + 4, 4); - - /* Check to see if chunk name is valid. */ - png_check_chunk_name(png_ptr, png_ptr->chunk_name); - -#ifdef PNG_IO_STATE_SUPPORTED - png_ptr->io_state = PNG_IO_READING | PNG_IO_CHUNK_DATA; -#endif - - return length; -} - -/* Read data, and (optionally) run it through the CRC. */ -void /* PRIVATE */ -png_crc_read(png_structrp png_ptr, png_bytep buf, png_uint_32 length) -{ - if (png_ptr == NULL) - return; - - png_read_data(png_ptr, buf, length); - png_calculate_crc(png_ptr, buf, length); -} - -/* Optionally skip data and then check the CRC. Depending on whether we - * are reading an ancillary or critical chunk, and how the program has set - * things up, we may calculate the CRC on the data and print a message. - * Returns '1' if there was a CRC error, '0' otherwise. - */ -int /* PRIVATE */ -png_crc_finish(png_structrp png_ptr, png_uint_32 skip) -{ - /* The size of the local buffer for inflate is a good guess as to a - * reasonable size to use for buffering reads from the application. - */ - while (skip > 0) - { - png_uint_32 len; - png_byte tmpbuf[PNG_INFLATE_BUF_SIZE]; - - len = (sizeof tmpbuf); - if (len > skip) - len = skip; - skip -= len; - - png_crc_read(png_ptr, tmpbuf, len); - } - - if (png_crc_error(png_ptr)) - { - if (PNG_CHUNK_ANCILLARY(png_ptr->chunk_name) ? - !(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN) : - (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_USE)) - { - png_chunk_warning(png_ptr, "CRC error"); - } - - else - { - png_chunk_benign_error(png_ptr, "CRC error"); - return (0); - } - - return (1); - } - - return (0); -} - -/* Compare the CRC stored in the PNG file with that calculated by libpng from - * the data it has read thus far. - */ -int /* PRIVATE */ -png_crc_error(png_structrp png_ptr) -{ - png_byte crc_bytes[4]; - png_uint_32 crc; - int need_crc = 1; - - if (PNG_CHUNK_ANCILLARY(png_ptr->chunk_name)) - { - if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_MASK) == - (PNG_FLAG_CRC_ANCILLARY_USE | PNG_FLAG_CRC_ANCILLARY_NOWARN)) - need_crc = 0; - } - - else /* critical */ - { - if (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_IGNORE) - need_crc = 0; - } - -#ifdef PNG_IO_STATE_SUPPORTED - png_ptr->io_state = PNG_IO_READING | PNG_IO_CHUNK_CRC; -#endif - - /* The chunk CRC must be serialized in a single I/O call. */ - png_read_data(png_ptr, crc_bytes, 4); - - if (need_crc) - { - crc = png_get_uint_32(crc_bytes); - return ((int)(crc != png_ptr->crc)); - } - - else - return (0); -} - -#if defined(PNG_READ_iCCP_SUPPORTED) || defined(PNG_READ_iTXt_SUPPORTED) ||\ - defined(PNG_READ_pCAL_SUPPORTED) || defined(PNG_READ_sCAL_SUPPORTED) ||\ - defined(PNG_READ_sPLT_SUPPORTED) || defined(PNG_READ_tEXt_SUPPORTED) ||\ - defined(PNG_READ_zTXt_SUPPORTED) || defined(PNG_SEQUENTIAL_READ_SUPPORTED) -/* Manage the read buffer; this simply reallocates the buffer if it is not small - * enough (or if it is not allocated). The routine returns a pointer to the - * buffer; if an error occurs and 'warn' is set the routine returns NULL, else - * it will call png_error (via png_malloc) on failure. (warn == 2 means - * 'silent'). - */ -static png_bytep -png_read_buffer(png_structrp png_ptr, png_alloc_size_t new_size, int warn) -{ - png_bytep buffer = png_ptr->read_buffer; - - if (buffer != NULL && new_size > png_ptr->read_buffer_size) - { - png_ptr->read_buffer = NULL; - png_ptr->read_buffer = NULL; - png_ptr->read_buffer_size = 0; - png_free(png_ptr, buffer); - buffer = NULL; - } - - if (buffer == NULL) - { - buffer = png_voidcast(png_bytep, png_malloc_base(png_ptr, new_size)); - - if (buffer != NULL) - { - png_ptr->read_buffer = buffer; - png_ptr->read_buffer_size = new_size; - } - - else if (warn < 2) /* else silent */ - { -#ifdef PNG_WARNINGS_SUPPORTED - if (warn) - png_chunk_warning(png_ptr, "insufficient memory to read chunk"); - else -#endif - { -#ifdef PNG_ERROR_TEXT_SUPPORTED - png_chunk_error(png_ptr, "insufficient memory to read chunk"); -#endif - } - } - } - - return buffer; -} -#endif /* PNG_READ_iCCP|iTXt|pCAL|sCAL|sPLT|tEXt|zTXt|SEQUENTIAL_READ */ - -/* png_inflate_claim: claim the zstream for some nefarious purpose that involves - * decompression. Returns Z_OK on success, else a zlib error code. It checks - * the owner but, in final release builds, just issues a warning if some other - * chunk apparently owns the stream. Prior to release it does a png_error. - */ -static int -png_inflate_claim(png_structrp png_ptr, png_uint_32 owner) -{ - if (png_ptr->zowner != 0) - { - char msg[64]; - - PNG_STRING_FROM_CHUNK(msg, png_ptr->zowner); - /* So the message that results is " using zstream"; this is an - * internal error, but is very useful for debugging. i18n requirements - * are minimal. - */ - (void)png_safecat(msg, (sizeof msg), 4, " using zstream"); -# if PNG_LIBPNG_BUILD_BASE_TYPE >= PNG_LIBPNG_BUILD_RC - png_chunk_warning(png_ptr, msg); - png_ptr->zowner = 0; -# else - png_chunk_error(png_ptr, msg); -# endif - } - - /* Implementation note: unlike 'png_deflate_claim' this internal function - * does not take the size of the data as an argument. Some efficiency could - * be gained by using this when it is known *if* the zlib stream itself does - * not record the number; however, this is an illusion: the original writer - * of the PNG may have selected a lower window size, and we really must - * follow that because, for systems with with limited capabilities, we - * would otherwise reject the application's attempts to use a smaller window - * size (zlib doesn't have an interface to say "this or lower"!). - * - * inflateReset2 was added to zlib 1.2.4; before this the window could not be - * reset, therefore it is necessary to always allocate the maximum window - * size with earlier zlibs just in case later compressed chunks need it. - */ - { - int ret; /* zlib return code */ -# if PNG_ZLIB_VERNUM >= 0x1240 - -# if defined(PNG_SET_OPTION_SUPPORTED) && \ - defined(PNG_MAXIMUM_INFLATE_WINDOW) - int window_bits; - - if (((png_ptr->options >> PNG_MAXIMUM_INFLATE_WINDOW) & 3) == - PNG_OPTION_ON) - window_bits = 15; - - else - window_bits = 0; -# else -# define window_bits 0 -# endif -# endif - - /* Set this for safety, just in case the previous owner left pointers to - * memory allocations. - */ - png_ptr->zstream.next_in = NULL; - png_ptr->zstream.avail_in = 0; - png_ptr->zstream.next_out = NULL; - png_ptr->zstream.avail_out = 0; - - if (png_ptr->flags & PNG_FLAG_ZSTREAM_INITIALIZED) - { -# if PNG_ZLIB_VERNUM < 0x1240 - ret = inflateReset(&png_ptr->zstream); -# else - ret = inflateReset2(&png_ptr->zstream, window_bits); -# endif - } - - else - { -# if PNG_ZLIB_VERNUM < 0x1240 - ret = inflateInit(&png_ptr->zstream); -# else - ret = inflateInit2(&png_ptr->zstream, window_bits); -# endif - - if (ret == Z_OK) - png_ptr->flags |= PNG_FLAG_ZSTREAM_INITIALIZED; - } - - if (ret == Z_OK) - png_ptr->zowner = owner; - - else - png_zstream_error(png_ptr, ret); - - return ret; - } - -# ifdef window_bits -# undef window_bits -# endif -} - -#ifdef PNG_READ_COMPRESSED_TEXT_SUPPORTED -/* png_inflate now returns zlib error codes including Z_OK and Z_STREAM_END to - * allow the caller to do multiple calls if required. If the 'finish' flag is - * set Z_FINISH will be passed to the final inflate() call and Z_STREAM_END must - * be returned or there has been a problem, otherwise Z_SYNC_FLUSH is used and - * Z_OK or Z_STREAM_END will be returned on success. - * - * The input and output sizes are updated to the actual amounts of data consumed - * or written, not the amount available (as in a z_stream). The data pointers - * are not changed, so the next input is (data+input_size) and the next - * available output is (output+output_size). - */ -static int -png_inflate(png_structrp png_ptr, png_uint_32 owner, int finish, - /* INPUT: */ png_const_bytep input, png_uint_32p input_size_ptr, - /* OUTPUT: */ png_bytep output, png_alloc_size_t *output_size_ptr) -{ - if (png_ptr->zowner == owner) /* Else not claimed */ - { - int ret; - png_alloc_size_t avail_out = *output_size_ptr; - png_uint_32 avail_in = *input_size_ptr; - - /* zlib can't necessarily handle more than 65535 bytes at once (i.e. it - * can't even necessarily handle 65536 bytes) because the type uInt is - * "16 bits or more". Consequently it is necessary to chunk the input to - * zlib. This code uses ZLIB_IO_MAX, from pngpriv.h, as the maximum (the - * maximum value that can be stored in a uInt.) It is possible to set - * ZLIB_IO_MAX to a lower value in pngpriv.h and this may sometimes have - * a performance advantage, because it reduces the amount of data accessed - * at each step and that may give the OS more time to page it in. - */ - png_ptr->zstream.next_in = PNGZ_INPUT_CAST(input); - /* avail_in and avail_out are set below from 'size' */ - png_ptr->zstream.avail_in = 0; - png_ptr->zstream.avail_out = 0; - - /* Read directly into the output if it is available (this is set to - * a local buffer below if output is NULL). - */ - if (output != NULL) - png_ptr->zstream.next_out = output; - - do - { - uInt avail; - Byte local_buffer[PNG_INFLATE_BUF_SIZE]; - - /* zlib INPUT BUFFER */ - /* The setting of 'avail_in' used to be outside the loop; by setting it - * inside it is possible to chunk the input to zlib and simply rely on - * zlib to advance the 'next_in' pointer. This allows arbitrary - * amounts of data to be passed through zlib at the unavoidable cost of - * requiring a window save (memcpy of up to 32768 output bytes) - * every ZLIB_IO_MAX input bytes. - */ - avail_in += png_ptr->zstream.avail_in; /* not consumed last time */ - - avail = ZLIB_IO_MAX; - - if (avail_in < avail) - avail = (uInt)avail_in; /* safe: < than ZLIB_IO_MAX */ - - avail_in -= avail; - png_ptr->zstream.avail_in = avail; - - /* zlib OUTPUT BUFFER */ - avail_out += png_ptr->zstream.avail_out; /* not written last time */ - - avail = ZLIB_IO_MAX; /* maximum zlib can process */ - - if (output == NULL) - { - /* Reset the output buffer each time round if output is NULL and - * make available the full buffer, up to 'remaining_space' - */ - png_ptr->zstream.next_out = local_buffer; - if ((sizeof local_buffer) < avail) - avail = (sizeof local_buffer); - } - - if (avail_out < avail) - avail = (uInt)avail_out; /* safe: < ZLIB_IO_MAX */ - - png_ptr->zstream.avail_out = avail; - avail_out -= avail; - - /* zlib inflate call */ - /* In fact 'avail_out' may be 0 at this point, that happens at the end - * of the read when the final LZ end code was not passed at the end of - * the previous chunk of input data. Tell zlib if we have reached the - * end of the output buffer. - */ - ret = inflate(&png_ptr->zstream, avail_out > 0 ? Z_NO_FLUSH : - (finish ? Z_FINISH : Z_SYNC_FLUSH)); - } while (ret == Z_OK); - - /* For safety kill the local buffer pointer now */ - if (output == NULL) - png_ptr->zstream.next_out = NULL; - - /* Claw back the 'size' and 'remaining_space' byte counts. */ - avail_in += png_ptr->zstream.avail_in; - avail_out += png_ptr->zstream.avail_out; - - /* Update the input and output sizes; the updated values are the amount - * consumed or written, effectively the inverse of what zlib uses. - */ - if (avail_out > 0) - *output_size_ptr -= avail_out; - - if (avail_in > 0) - *input_size_ptr -= avail_in; - - /* Ensure png_ptr->zstream.msg is set (even in the success case!) */ - png_zstream_error(png_ptr, ret); - return ret; - } - - else - { - /* This is a bad internal error. The recovery assigns to the zstream msg - * pointer, which is not owned by the caller, but this is safe; it's only - * used on errors! - */ - png_ptr->zstream.msg = PNGZ_MSG_CAST("zstream unclaimed"); - return Z_STREAM_ERROR; - } -} - -/* - * Decompress trailing data in a chunk. The assumption is that read_buffer - * points at an allocated area holding the contents of a chunk with a - * trailing compressed part. What we get back is an allocated area - * holding the original prefix part and an uncompressed version of the - * trailing part (the malloc area passed in is freed). - */ -static int -png_decompress_chunk(png_structrp png_ptr, - png_uint_32 chunklength, png_uint_32 prefix_size, - png_alloc_size_t *newlength /* must be initialized to the maximum! */, - int terminate /*add a '\0' to the end of the uncompressed data*/) -{ - /* TODO: implement different limits for different types of chunk. - * - * The caller supplies *newlength set to the maximum length of the - * uncompressed data, but this routine allocates space for the prefix and - * maybe a '\0' terminator too. We have to assume that 'prefix_size' is - * limited only by the maximum chunk size. - */ - png_alloc_size_t limit = PNG_SIZE_MAX; - -# ifdef PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED - if (png_ptr->user_chunk_malloc_max > 0 && - png_ptr->user_chunk_malloc_max < limit) - limit = png_ptr->user_chunk_malloc_max; -# elif PNG_USER_CHUNK_MALLOC_MAX > 0 - if (PNG_USER_CHUNK_MALLOC_MAX < limit) - limit = PNG_USER_CHUNK_MALLOC_MAX; -# endif - - if (limit >= prefix_size + (terminate != 0)) - { - int ret; - - limit -= prefix_size + (terminate != 0); - - if (limit < *newlength) - *newlength = limit; - - /* Now try to claim the stream. */ - ret = png_inflate_claim(png_ptr, png_ptr->chunk_name); - - if (ret == Z_OK) - { - png_uint_32 lzsize = chunklength - prefix_size; - - ret = png_inflate(png_ptr, png_ptr->chunk_name, 1/*finish*/, - /* input: */ png_ptr->read_buffer + prefix_size, &lzsize, - /* output: */ NULL, newlength); - - if (ret == Z_STREAM_END) - { - /* Use 'inflateReset' here, not 'inflateReset2' because this - * preserves the previously decided window size (otherwise it would - * be necessary to store the previous window size.) In practice - * this doesn't matter anyway, because png_inflate will call inflate - * with Z_FINISH in almost all cases, so the window will not be - * maintained. - */ - if (inflateReset(&png_ptr->zstream) == Z_OK) - { - /* Because of the limit checks above we know that the new, - * expanded, size will fit in a size_t (let alone an - * png_alloc_size_t). Use png_malloc_base here to avoid an - * extra OOM message. - */ - png_alloc_size_t new_size = *newlength; - png_alloc_size_t buffer_size = prefix_size + new_size + - (terminate != 0); - png_bytep text = png_voidcast(png_bytep, png_malloc_base(png_ptr, - buffer_size)); - - if (text != NULL) - { - ret = png_inflate(png_ptr, png_ptr->chunk_name, 1/*finish*/, - png_ptr->read_buffer + prefix_size, &lzsize, - text + prefix_size, newlength); - - if (ret == Z_STREAM_END) - { - if (new_size == *newlength) - { - if (terminate) - text[prefix_size + *newlength] = 0; - - if (prefix_size > 0) - memcpy(text, png_ptr->read_buffer, prefix_size); - - { - png_bytep old_ptr = png_ptr->read_buffer; - - png_ptr->read_buffer = text; - png_ptr->read_buffer_size = buffer_size; - text = old_ptr; /* freed below */ - } - } - - else - { - /* The size changed on the second read, there can be no - * guarantee that anything is correct at this point. - * The 'msg' pointer has been set to "unexpected end of - * LZ stream", which is fine, but return an error code - * that the caller won't accept. - */ - ret = PNG_UNEXPECTED_ZLIB_RETURN; - } - } - - else if (ret == Z_OK) - ret = PNG_UNEXPECTED_ZLIB_RETURN; /* for safety */ - - /* Free the text pointer (this is the old read_buffer on - * success) - */ - png_free(png_ptr, text); - - /* This really is very benign, but it's still an error because - * the extra space may otherwise be used as a Trojan Horse. - */ - if (ret == Z_STREAM_END && - chunklength - prefix_size != lzsize) - png_chunk_benign_error(png_ptr, "extra compressed data"); - } - - else - { - /* Out of memory allocating the buffer */ - ret = Z_MEM_ERROR; - png_zstream_error(png_ptr, Z_MEM_ERROR); - } - } - - else - { - /* inflateReset failed, store the error message */ - png_zstream_error(png_ptr, ret); - - if (ret == Z_STREAM_END) - ret = PNG_UNEXPECTED_ZLIB_RETURN; - } - } - - else if (ret == Z_OK) - ret = PNG_UNEXPECTED_ZLIB_RETURN; - - /* Release the claimed stream */ - png_ptr->zowner = 0; - } - - else /* the claim failed */ if (ret == Z_STREAM_END) /* impossible! */ - ret = PNG_UNEXPECTED_ZLIB_RETURN; - - return ret; - } - - else - { - /* Application/configuration limits exceeded */ - png_zstream_error(png_ptr, Z_MEM_ERROR); - return Z_MEM_ERROR; - } -} -#endif /* PNG_READ_COMPRESSED_TEXT_SUPPORTED */ - -#ifdef PNG_READ_iCCP_SUPPORTED -/* Perform a partial read and decompress, producing 'avail_out' bytes and - * reading from the current chunk as required. - */ -static int -png_inflate_read(png_structrp png_ptr, png_bytep read_buffer, uInt read_size, - png_uint_32p chunk_bytes, png_bytep next_out, png_alloc_size_t *out_size, - int finish) -{ - if (png_ptr->zowner == png_ptr->chunk_name) - { - int ret; - - /* next_in and avail_in must have been initialized by the caller. */ - png_ptr->zstream.next_out = next_out; - png_ptr->zstream.avail_out = 0; /* set in the loop */ - - do - { - if (png_ptr->zstream.avail_in == 0) - { - if (read_size > *chunk_bytes) - read_size = (uInt)*chunk_bytes; - *chunk_bytes -= read_size; - - if (read_size > 0) - png_crc_read(png_ptr, read_buffer, read_size); - - png_ptr->zstream.next_in = read_buffer; - png_ptr->zstream.avail_in = read_size; - } - - if (png_ptr->zstream.avail_out == 0) - { - uInt avail = ZLIB_IO_MAX; - if (avail > *out_size) - avail = (uInt)*out_size; - *out_size -= avail; - - png_ptr->zstream.avail_out = avail; - } - - /* Use Z_SYNC_FLUSH when there is no more chunk data to ensure that all - * the available output is produced; this allows reading of truncated - * streams. - */ - ret = inflate(&png_ptr->zstream, - *chunk_bytes > 0 ? Z_NO_FLUSH : (finish ? Z_FINISH : Z_SYNC_FLUSH)); - } - while (ret == Z_OK && (*out_size > 0 || png_ptr->zstream.avail_out > 0)); - - *out_size += png_ptr->zstream.avail_out; - png_ptr->zstream.avail_out = 0; /* Should not be required, but is safe */ - - /* Ensure the error message pointer is always set: */ - png_zstream_error(png_ptr, ret); - return ret; - } - - else - { - png_ptr->zstream.msg = PNGZ_MSG_CAST("zstream unclaimed"); - return Z_STREAM_ERROR; - } -} -#endif - -/* Read and check the IDHR chunk */ -void /* PRIVATE */ -png_handle_IHDR(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_byte buf[13]; - png_uint_32 width, height; - int bit_depth, color_type, compression_type, filter_type; - int interlace_type; - - png_debug(1, "in png_handle_IHDR"); - - if (png_ptr->mode & PNG_HAVE_IHDR) - png_chunk_error(png_ptr, "out of place"); - - /* Check the length */ - if (length != 13) - png_chunk_error(png_ptr, "invalid"); - - png_ptr->mode |= PNG_HAVE_IHDR; - - png_crc_read(png_ptr, buf, 13); - png_crc_finish(png_ptr, 0); - - width = png_get_uint_31(png_ptr, buf); - height = png_get_uint_31(png_ptr, buf + 4); - bit_depth = buf[8]; - color_type = buf[9]; - compression_type = buf[10]; - filter_type = buf[11]; - interlace_type = buf[12]; - - /* Set internal variables */ - png_ptr->width = width; - png_ptr->height = height; - png_ptr->bit_depth = (png_byte)bit_depth; - png_ptr->interlaced = (png_byte)interlace_type; - png_ptr->color_type = (png_byte)color_type; -#ifdef PNG_MNG_FEATURES_SUPPORTED - png_ptr->filter_type = (png_byte)filter_type; -#endif - png_ptr->compression_type = (png_byte)compression_type; - - /* Find number of channels */ - switch (png_ptr->color_type) - { - default: /* invalid, png_set_IHDR calls png_error */ - case PNG_COLOR_TYPE_GRAY: - case PNG_COLOR_TYPE_PALETTE: - png_ptr->channels = 1; - break; - - case PNG_COLOR_TYPE_RGB: - png_ptr->channels = 3; - break; - - case PNG_COLOR_TYPE_GRAY_ALPHA: - png_ptr->channels = 2; - break; - - case PNG_COLOR_TYPE_RGB_ALPHA: - png_ptr->channels = 4; - break; - } - - /* Set up other useful info */ - png_ptr->pixel_depth = (png_byte)(png_ptr->bit_depth * - png_ptr->channels); - png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->width); - png_debug1(3, "bit_depth = %d", png_ptr->bit_depth); - png_debug1(3, "channels = %d", png_ptr->channels); - png_debug1(3, "rowbytes = %lu", (unsigned long)png_ptr->rowbytes); - png_set_IHDR(png_ptr, info_ptr, width, height, bit_depth, - color_type, interlace_type, compression_type, filter_type); -} - -/* Read and check the palette */ -void /* PRIVATE */ -png_handle_PLTE(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_color palette[PNG_MAX_PALETTE_LENGTH]; - int num, i; -#ifdef PNG_POINTER_INDEXING_SUPPORTED - png_colorp pal_ptr; -#endif - - png_debug(1, "in png_handle_PLTE"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - /* Moved to before the 'after IDAT' check below because otherwise duplicate - * PLTE chunks are potentially ignored (the spec says there shall not be more - * than one PLTE, the error is not treated as benign, so this check trumps - * the requirement that PLTE appears before IDAT.) - */ - else if (png_ptr->mode & PNG_HAVE_PLTE) - png_chunk_error(png_ptr, "duplicate"); - - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - /* This is benign because the non-benign error happened before, when an - * IDAT was encountered in a color-mapped image with no PLTE. - */ - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - png_ptr->mode |= PNG_HAVE_PLTE; - - if (!(png_ptr->color_type & PNG_COLOR_MASK_COLOR)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "ignored in grayscale PNG"); - return; - } - -#ifndef PNG_READ_OPT_PLTE_SUPPORTED - if (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE) - { - png_crc_finish(png_ptr, length); - return; - } -#endif - - if (length > 3*PNG_MAX_PALETTE_LENGTH || length % 3) - { - png_crc_finish(png_ptr, length); - - if (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE) - png_chunk_benign_error(png_ptr, "invalid"); - - else - png_chunk_error(png_ptr, "invalid"); - - return; - } - - /* The cast is safe because 'length' is less than 3*PNG_MAX_PALETTE_LENGTH */ - num = (int)length / 3; - -#ifdef PNG_POINTER_INDEXING_SUPPORTED - for (i = 0, pal_ptr = palette; i < num; i++, pal_ptr++) - { - png_byte buf[3]; - - png_crc_read(png_ptr, buf, 3); - pal_ptr->red = buf[0]; - pal_ptr->green = buf[1]; - pal_ptr->blue = buf[2]; - } -#else - for (i = 0; i < num; i++) - { - png_byte buf[3]; - - png_crc_read(png_ptr, buf, 3); - /* Don't depend upon png_color being any order */ - palette[i].red = buf[0]; - palette[i].green = buf[1]; - palette[i].blue = buf[2]; - } -#endif - - /* If we actually need the PLTE chunk (ie for a paletted image), we do - * whatever the normal CRC configuration tells us. However, if we - * have an RGB image, the PLTE can be considered ancillary, so - * we will act as though it is. - */ -#ifndef PNG_READ_OPT_PLTE_SUPPORTED - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) -#endif - { - png_crc_finish(png_ptr, 0); - } - -#ifndef PNG_READ_OPT_PLTE_SUPPORTED - else if (png_crc_error(png_ptr)) /* Only if we have a CRC error */ - { - /* If we don't want to use the data from an ancillary chunk, - * we have two options: an error abort, or a warning and we - * ignore the data in this chunk (which should be OK, since - * it's considered ancillary for a RGB or RGBA image). - * - * IMPLEMENTATION NOTE: this is only here because png_crc_finish uses the - * chunk type to determine whether to check the ancillary or the critical - * flags. - */ - if (!(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_USE)) - { - if (png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN) - { - png_chunk_benign_error(png_ptr, "CRC error"); - } - - else - { - png_chunk_warning(png_ptr, "CRC error"); - return; - } - } - - /* Otherwise, we (optionally) emit a warning and use the chunk. */ - else if (!(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN)) - { - png_chunk_warning(png_ptr, "CRC error"); - } - } -#endif - - /* TODO: png_set_PLTE has the side effect of setting png_ptr->palette to its - * own copy of the palette. This has the side effect that when png_start_row - * is called (this happens after any call to png_read_update_info) the - * info_ptr palette gets changed. This is extremely unexpected and - * confusing. - * - * Fix this by not sharing the palette in this way. - */ - png_set_PLTE(png_ptr, info_ptr, palette, num); - - /* The three chunks, bKGD, hIST and tRNS *must* appear after PLTE and before - * IDAT. Prior to 1.6.0 this was not checked; instead the code merely - * checked the apparent validity of a tRNS chunk inserted before PLTE on a - * palette PNG. 1.6.0 attempts to rigorously follow the standard and - * therefore does a benign error if the erroneous condition is detected *and* - * cancels the tRNS if the benign error returns. The alternative is to - * amend the standard since it would be rather hypocritical of the standards - * maintainers to ignore it. - */ -#ifdef PNG_READ_tRNS_SUPPORTED - if (png_ptr->num_trans > 0 || - (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS) != 0)) - { - /* Cancel this because otherwise it would be used if the transforms - * require it. Don't cancel the 'valid' flag because this would prevent - * detection of duplicate chunks. - */ - png_ptr->num_trans = 0; - - if (info_ptr != NULL) - info_ptr->num_trans = 0; - - png_chunk_benign_error(png_ptr, "tRNS must be after"); - } -#endif - -#ifdef PNG_READ_hIST_SUPPORTED - if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST) != 0) - png_chunk_benign_error(png_ptr, "hIST must be after"); -#endif - -#ifdef PNG_READ_bKGD_SUPPORTED - if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD) != 0) - png_chunk_benign_error(png_ptr, "bKGD must be after"); -#endif -} - -void /* PRIVATE */ -png_handle_IEND(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_debug(1, "in png_handle_IEND"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR) || !(png_ptr->mode & PNG_HAVE_IDAT)) - png_chunk_error(png_ptr, "out of place"); - - png_ptr->mode |= (PNG_AFTER_IDAT | PNG_HAVE_IEND); - - png_crc_finish(png_ptr, length); - - if (length != 0) - png_chunk_benign_error(png_ptr, "invalid"); - - PNG_UNUSED(info_ptr) -} - -#ifdef PNG_READ_gAMA_SUPPORTED -void /* PRIVATE */ -png_handle_gAMA(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_fixed_point igamma; - png_byte buf[4]; - - png_debug(1, "in png_handle_gAMA"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - else if (png_ptr->mode & (PNG_HAVE_IDAT|PNG_HAVE_PLTE)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - if (length != 4) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, buf, 4); - - if (png_crc_finish(png_ptr, 0)) - return; - - igamma = png_get_fixed_point(NULL, buf); - - png_colorspace_set_gamma(png_ptr, &png_ptr->colorspace, igamma); - png_colorspace_sync(png_ptr, info_ptr); -} -#endif - -#ifdef PNG_READ_sBIT_SUPPORTED -void /* PRIVATE */ -png_handle_sBIT(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - unsigned int truelen; - png_byte buf[4]; - - png_debug(1, "in png_handle_sBIT"); - - buf[0] = buf[1] = buf[2] = buf[3] = 0; - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - else if (png_ptr->mode & (PNG_HAVE_IDAT|PNG_HAVE_PLTE)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sBIT)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - truelen = 3; - - else - truelen = png_ptr->channels; - - if (length != truelen || length > 4) - { - png_chunk_benign_error(png_ptr, "invalid"); - png_crc_finish(png_ptr, length); - return; - } - - png_crc_read(png_ptr, buf, truelen); - - if (png_crc_finish(png_ptr, 0)) - return; - - if (png_ptr->color_type & PNG_COLOR_MASK_COLOR) - { - png_ptr->sig_bit.red = buf[0]; - png_ptr->sig_bit.green = buf[1]; - png_ptr->sig_bit.blue = buf[2]; - png_ptr->sig_bit.alpha = buf[3]; - } - - else - { - png_ptr->sig_bit.gray = buf[0]; - png_ptr->sig_bit.red = buf[0]; - png_ptr->sig_bit.green = buf[0]; - png_ptr->sig_bit.blue = buf[0]; - png_ptr->sig_bit.alpha = buf[1]; - } - - png_set_sBIT(png_ptr, info_ptr, &(png_ptr->sig_bit)); -} -#endif - -#ifdef PNG_READ_cHRM_SUPPORTED -void /* PRIVATE */ -png_handle_cHRM(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_byte buf[32]; - png_xy xy; - - png_debug(1, "in png_handle_cHRM"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - else if (png_ptr->mode & (PNG_HAVE_IDAT|PNG_HAVE_PLTE)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - if (length != 32) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, buf, 32); - - if (png_crc_finish(png_ptr, 0)) - return; - - xy.whitex = png_get_fixed_point(NULL, buf); - xy.whitey = png_get_fixed_point(NULL, buf + 4); - xy.redx = png_get_fixed_point(NULL, buf + 8); - xy.redy = png_get_fixed_point(NULL, buf + 12); - xy.greenx = png_get_fixed_point(NULL, buf + 16); - xy.greeny = png_get_fixed_point(NULL, buf + 20); - xy.bluex = png_get_fixed_point(NULL, buf + 24); - xy.bluey = png_get_fixed_point(NULL, buf + 28); - - if (xy.whitex == PNG_FIXED_ERROR || - xy.whitey == PNG_FIXED_ERROR || - xy.redx == PNG_FIXED_ERROR || - xy.redy == PNG_FIXED_ERROR || - xy.greenx == PNG_FIXED_ERROR || - xy.greeny == PNG_FIXED_ERROR || - xy.bluex == PNG_FIXED_ERROR || - xy.bluey == PNG_FIXED_ERROR) - { - png_chunk_benign_error(png_ptr, "invalid values"); - return; - } - - /* If a colorspace error has already been output skip this chunk */ - if (png_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) - return; - - if (png_ptr->colorspace.flags & PNG_COLORSPACE_FROM_cHRM) - { - png_ptr->colorspace.flags |= PNG_COLORSPACE_INVALID; - png_colorspace_sync(png_ptr, info_ptr); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - png_ptr->colorspace.flags |= PNG_COLORSPACE_FROM_cHRM; - (void)png_colorspace_set_chromaticities(png_ptr, &png_ptr->colorspace, &xy, - 1/*prefer cHRM values*/); - png_colorspace_sync(png_ptr, info_ptr); -} -#endif - -#ifdef PNG_READ_sRGB_SUPPORTED -void /* PRIVATE */ -png_handle_sRGB(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_byte intent; - - png_debug(1, "in png_handle_sRGB"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - else if (png_ptr->mode & (PNG_HAVE_IDAT|PNG_HAVE_PLTE)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - if (length != 1) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, &intent, 1); - - if (png_crc_finish(png_ptr, 0)) - return; - - /* If a colorspace error has already been output skip this chunk */ - if (png_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) - return; - - /* Only one sRGB or iCCP chunk is allowed, use the HAVE_INTENT flag to detect - * this. - */ - if (png_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_INTENT) - { - png_ptr->colorspace.flags |= PNG_COLORSPACE_INVALID; - png_colorspace_sync(png_ptr, info_ptr); - png_chunk_benign_error(png_ptr, "too many profiles"); - return; - } - - (void)png_colorspace_set_sRGB(png_ptr, &png_ptr->colorspace, intent); - png_colorspace_sync(png_ptr, info_ptr); -} -#endif /* PNG_READ_sRGB_SUPPORTED */ - -#ifdef PNG_READ_iCCP_SUPPORTED -void /* PRIVATE */ -png_handle_iCCP(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -/* Note: this does not properly handle profiles that are > 64K under DOS */ -{ - png_const_charp errmsg = NULL; /* error message output, or no error */ - int finished = 0; /* crc checked */ - - png_debug(1, "in png_handle_iCCP"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - else if (png_ptr->mode & (PNG_HAVE_IDAT|PNG_HAVE_PLTE)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - /* Consistent with all the above colorspace handling an obviously *invalid* - * chunk is just ignored, so does not invalidate the color space. An - * alternative is to set the 'invalid' flags at the start of this routine - * and only clear them in they were not set before and all the tests pass. - * The minimum 'deflate' stream is assumed to be just the 2 byte header and 4 - * byte checksum. The keyword must be one character and there is a - * terminator (0) byte and the compression method. - */ - if (length < 9) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "too short"); - return; - } - - /* If a colorspace error has already been output skip this chunk */ - if (png_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) - { - png_crc_finish(png_ptr, length); - return; - } - - /* Only one sRGB or iCCP chunk is allowed, use the HAVE_INTENT flag to detect - * this. - */ - if ((png_ptr->colorspace.flags & PNG_COLORSPACE_HAVE_INTENT) == 0) - { - uInt read_length, keyword_length; - char keyword[81]; - - /* Find the keyword; the keyword plus separator and compression method - * bytes can be at most 81 characters long. - */ - read_length = 81; /* maximum */ - if (read_length > length) - read_length = (uInt)length; - - png_crc_read(png_ptr, (png_bytep)keyword, read_length); - length -= read_length; - - keyword_length = 0; - while (keyword_length < 80 && keyword_length < read_length && - keyword[keyword_length] != 0) - ++keyword_length; - - /* TODO: make the keyword checking common */ - if (keyword_length >= 1 && keyword_length <= 79) - { - /* We only understand '0' compression - deflate - so if we get a - * different value we can't safely decode the chunk. - */ - if (keyword_length+1 < read_length && - keyword[keyword_length+1] == PNG_COMPRESSION_TYPE_BASE) - { - read_length -= keyword_length+2; - - if (png_inflate_claim(png_ptr, png_iCCP) == Z_OK) - { - Byte profile_header[132]; - Byte local_buffer[PNG_INFLATE_BUF_SIZE]; - png_alloc_size_t size = (sizeof profile_header); - - png_ptr->zstream.next_in = (Bytef*)keyword + (keyword_length+2); - png_ptr->zstream.avail_in = read_length; - (void)png_inflate_read(png_ptr, local_buffer, - (sizeof local_buffer), &length, profile_header, &size, - 0/*finish: don't, because the output is too small*/); - - if (size == 0) - { - /* We have the ICC profile header; do the basic header checks. - */ - const png_uint_32 profile_length = - png_get_uint_32(profile_header); - - if (png_icc_check_length(png_ptr, &png_ptr->colorspace, - keyword, profile_length)) - { - /* The length is apparently ok, so we can check the 132 - * byte header. - */ - if (png_icc_check_header(png_ptr, &png_ptr->colorspace, - keyword, profile_length, profile_header, - png_ptr->color_type)) - { - /* Now read the tag table; a variable size buffer is - * needed at this point, allocate one for the whole - * profile. The header check has already validated - * that none of these stuff will overflow. - */ - const png_uint_32 tag_count = png_get_uint_32( - profile_header+128); - png_bytep profile = png_read_buffer(png_ptr, - profile_length, 2/*silent*/); - - if (profile != NULL) - { - memcpy(profile, profile_header, - (sizeof profile_header)); - - size = 12 * tag_count; - - (void)png_inflate_read(png_ptr, local_buffer, - (sizeof local_buffer), &length, - profile + (sizeof profile_header), &size, 0); - - /* Still expect a a buffer error because we expect - * there to be some tag data! - */ - if (size == 0) - { - if (png_icc_check_tag_table(png_ptr, - &png_ptr->colorspace, keyword, profile_length, - profile)) - { - /* The profile has been validated for basic - * security issues, so read the whole thing in. - */ - size = profile_length - (sizeof profile_header) - - 12 * tag_count; - - (void)png_inflate_read(png_ptr, local_buffer, - (sizeof local_buffer), &length, - profile + (sizeof profile_header) + - 12 * tag_count, &size, 1/*finish*/); - - if (length > 0 && !(png_ptr->flags & - PNG_FLAG_BENIGN_ERRORS_WARN)) - errmsg = "extra compressed data"; - - /* But otherwise allow extra data: */ - else if (size == 0) - { - if (length > 0) - { - /* This can be handled completely, so - * keep going. - */ - png_chunk_warning(png_ptr, - "extra compressed data"); - } - - png_crc_finish(png_ptr, length); - finished = 1; - -# ifdef PNG_sRGB_SUPPORTED - /* Check for a match against sRGB */ - png_icc_set_sRGB(png_ptr, - &png_ptr->colorspace, profile, - png_ptr->zstream.adler); -# endif - - /* Steal the profile for info_ptr. */ - if (info_ptr != NULL) - { - png_free_data(png_ptr, info_ptr, - PNG_FREE_ICCP, 0); - - info_ptr->iccp_name = png_voidcast(char*, - png_malloc_base(png_ptr, - keyword_length+1)); - if (info_ptr->iccp_name != NULL) - { - memcpy(info_ptr->iccp_name, keyword, - keyword_length+1); - info_ptr->iccp_proflen = - profile_length; - info_ptr->iccp_profile = profile; - png_ptr->read_buffer = NULL; /*steal*/ - info_ptr->free_me |= PNG_FREE_ICCP; - info_ptr->valid |= PNG_INFO_iCCP; - } - - else - { - png_ptr->colorspace.flags |= - PNG_COLORSPACE_INVALID; - errmsg = "out of memory"; - } - } - - /* else the profile remains in the read - * buffer which gets reused for subsequent - * chunks. - */ - - if (info_ptr != NULL) - png_colorspace_sync(png_ptr, info_ptr); - - if (errmsg == NULL) - { - png_ptr->zowner = 0; - return; - } - } - - else if (size > 0) - errmsg = "truncated"; - - else - errmsg = png_ptr->zstream.msg; - } - - /* else png_icc_check_tag_table output an error */ - } - - else /* profile truncated */ - errmsg = png_ptr->zstream.msg; - } - - else - errmsg = "out of memory"; - } - - /* else png_icc_check_header output an error */ - } - - /* else png_icc_check_length output an error */ - } - - else /* profile truncated */ - errmsg = png_ptr->zstream.msg; - - /* Release the stream */ - png_ptr->zowner = 0; - } - - else /* png_inflate_claim failed */ - errmsg = png_ptr->zstream.msg; - } - - else - errmsg = "bad compression method"; /* or missing */ - } - - else - errmsg = "bad keyword"; - } - - else - errmsg = "too many profiles"; - - /* Failure: the reason is in 'errmsg' */ - if (!finished) - png_crc_finish(png_ptr, length); - - png_ptr->colorspace.flags |= PNG_COLORSPACE_INVALID; - png_colorspace_sync(png_ptr, info_ptr); - if (errmsg != NULL) /* else already output */ - png_chunk_benign_error(png_ptr, errmsg); -} -#endif /* PNG_READ_iCCP_SUPPORTED */ - -#ifdef PNG_READ_sPLT_SUPPORTED -void /* PRIVATE */ -png_handle_sPLT(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -/* Note: this does not properly handle chunks that are > 64K under DOS */ -{ - png_bytep entry_start, buffer; - png_sPLT_t new_palette; - png_sPLT_entryp pp; - png_uint_32 data_length; - int entry_size, i; - png_uint_32 skip = 0; - png_uint_32 dl; - png_size_t max_dl; - - png_debug(1, "in png_handle_sPLT"); - -#ifdef PNG_USER_LIMITS_SUPPORTED - if (png_ptr->user_chunk_cache_max != 0) - { - if (png_ptr->user_chunk_cache_max == 1) - { - png_crc_finish(png_ptr, length); - return; - } - - if (--png_ptr->user_chunk_cache_max == 1) - { - png_warning(png_ptr, "No space in chunk cache for sPLT"); - png_crc_finish(png_ptr, length); - return; - } - } -#endif - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - -#ifdef PNG_MAX_MALLOC_64K - if (length > 65535U) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "too large to fit in memory"); - return; - } -#endif - - buffer = png_read_buffer(png_ptr, length+1, 2/*silent*/); - if (buffer == NULL) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of memory"); - return; - } - - - /* WARNING: this may break if size_t is less than 32 bits; it is assumed - * that the PNG_MAX_MALLOC_64K test is enabled in this case, but this is a - * potential breakage point if the types in pngconf.h aren't exactly right. - */ - png_crc_read(png_ptr, buffer, length); - - if (png_crc_finish(png_ptr, skip)) - return; - - buffer[length] = 0; - - for (entry_start = buffer; *entry_start; entry_start++) - /* Empty loop to find end of name */ ; - - ++entry_start; - - /* A sample depth should follow the separator, and we should be on it */ - if (entry_start > buffer + length - 2) - { - png_warning(png_ptr, "malformed sPLT chunk"); - return; - } - - new_palette.depth = *entry_start++; - entry_size = (new_palette.depth == 8 ? 6 : 10); - /* This must fit in a png_uint_32 because it is derived from the original - * chunk data length. - */ - data_length = length - (png_uint_32)(entry_start - buffer); - - /* Integrity-check the data length */ - if (data_length % entry_size) - { - png_warning(png_ptr, "sPLT chunk has bad length"); - return; - } - - dl = (png_int_32)(data_length / entry_size); - max_dl = PNG_SIZE_MAX / (sizeof (png_sPLT_entry)); - - if (dl > max_dl) - { - png_warning(png_ptr, "sPLT chunk too long"); - return; - } - - new_palette.nentries = (png_int_32)(data_length / entry_size); - - new_palette.entries = (png_sPLT_entryp)png_malloc_warn( - png_ptr, new_palette.nentries * (sizeof (png_sPLT_entry))); - - if (new_palette.entries == NULL) - { - png_warning(png_ptr, "sPLT chunk requires too much memory"); - return; - } - -#ifdef PNG_POINTER_INDEXING_SUPPORTED - for (i = 0; i < new_palette.nentries; i++) - { - pp = new_palette.entries + i; - - if (new_palette.depth == 8) - { - pp->red = *entry_start++; - pp->green = *entry_start++; - pp->blue = *entry_start++; - pp->alpha = *entry_start++; - } - - else - { - pp->red = png_get_uint_16(entry_start); entry_start += 2; - pp->green = png_get_uint_16(entry_start); entry_start += 2; - pp->blue = png_get_uint_16(entry_start); entry_start += 2; - pp->alpha = png_get_uint_16(entry_start); entry_start += 2; - } - - pp->frequency = png_get_uint_16(entry_start); entry_start += 2; - } -#else - pp = new_palette.entries; - - for (i = 0; i < new_palette.nentries; i++) - { - - if (new_palette.depth == 8) - { - pp[i].red = *entry_start++; - pp[i].green = *entry_start++; - pp[i].blue = *entry_start++; - pp[i].alpha = *entry_start++; - } - - else - { - pp[i].red = png_get_uint_16(entry_start); entry_start += 2; - pp[i].green = png_get_uint_16(entry_start); entry_start += 2; - pp[i].blue = png_get_uint_16(entry_start); entry_start += 2; - pp[i].alpha = png_get_uint_16(entry_start); entry_start += 2; - } - - pp[i].frequency = png_get_uint_16(entry_start); entry_start += 2; - } -#endif - - /* Discard all chunk data except the name and stash that */ - new_palette.name = (png_charp)buffer; - - png_set_sPLT(png_ptr, info_ptr, &new_palette, 1); - - png_free(png_ptr, new_palette.entries); -} -#endif /* PNG_READ_sPLT_SUPPORTED */ - -#ifdef PNG_READ_tRNS_SUPPORTED -void /* PRIVATE */ -png_handle_tRNS(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_byte readbuf[PNG_MAX_PALETTE_LENGTH]; - - png_debug(1, "in png_handle_tRNS"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY) - { - png_byte buf[2]; - - if (length != 2) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, buf, 2); - png_ptr->num_trans = 1; - png_ptr->trans_color.gray = png_get_uint_16(buf); - } - - else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB) - { - png_byte buf[6]; - - if (length != 6) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, buf, length); - png_ptr->num_trans = 1; - png_ptr->trans_color.red = png_get_uint_16(buf); - png_ptr->trans_color.green = png_get_uint_16(buf + 2); - png_ptr->trans_color.blue = png_get_uint_16(buf + 4); - } - - else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - if (!(png_ptr->mode & PNG_HAVE_PLTE)) - { - /* TODO: is this actually an error in the ISO spec? */ - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - if (length > png_ptr->num_palette || length > PNG_MAX_PALETTE_LENGTH || - length == 0) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, readbuf, length); - png_ptr->num_trans = (png_uint_16)length; - } - - else - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid with alpha channel"); - return; - } - - if (png_crc_finish(png_ptr, 0)) - { - png_ptr->num_trans = 0; - return; - } - - /* TODO: this is a horrible side effect in the palette case because the - * png_struct ends up with a pointer to the tRNS buffer owned by the - * png_info. Fix this. - */ - png_set_tRNS(png_ptr, info_ptr, readbuf, png_ptr->num_trans, - &(png_ptr->trans_color)); -} -#endif - -#ifdef PNG_READ_bKGD_SUPPORTED -void /* PRIVATE */ -png_handle_bKGD(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - unsigned int truelen; - png_byte buf[6]; - png_color_16 background; - - png_debug(1, "in png_handle_bKGD"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - else if ((png_ptr->mode & PNG_HAVE_IDAT) || - (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && - !(png_ptr->mode & PNG_HAVE_PLTE))) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - truelen = 1; - - else if (png_ptr->color_type & PNG_COLOR_MASK_COLOR) - truelen = 6; - - else - truelen = 2; - - if (length != truelen) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, buf, truelen); - - if (png_crc_finish(png_ptr, 0)) - return; - - /* We convert the index value into RGB components so that we can allow - * arbitrary RGB values for background when we have transparency, and - * so it is easy to determine the RGB values of the background color - * from the info_ptr struct. - */ - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - background.index = buf[0]; - - if (info_ptr && info_ptr->num_palette) - { - if (buf[0] >= info_ptr->num_palette) - { - png_chunk_benign_error(png_ptr, "invalid index"); - return; - } - - background.red = (png_uint_16)png_ptr->palette[buf[0]].red; - background.green = (png_uint_16)png_ptr->palette[buf[0]].green; - background.blue = (png_uint_16)png_ptr->palette[buf[0]].blue; - } - - else - background.red = background.green = background.blue = 0; - - background.gray = 0; - } - - else if (!(png_ptr->color_type & PNG_COLOR_MASK_COLOR)) /* GRAY */ - { - background.index = 0; - background.red = - background.green = - background.blue = - background.gray = png_get_uint_16(buf); - } - - else - { - background.index = 0; - background.red = png_get_uint_16(buf); - background.green = png_get_uint_16(buf + 2); - background.blue = png_get_uint_16(buf + 4); - background.gray = 0; - } - - png_set_bKGD(png_ptr, info_ptr, &background); -} -#endif - -#ifdef PNG_READ_hIST_SUPPORTED -void /* PRIVATE */ -png_handle_hIST(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - unsigned int num, i; - png_uint_16 readbuf[PNG_MAX_PALETTE_LENGTH]; - - png_debug(1, "in png_handle_hIST"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - else if ((png_ptr->mode & PNG_HAVE_IDAT) || !(png_ptr->mode & PNG_HAVE_PLTE)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - num = length / 2 ; - - if (num != png_ptr->num_palette || num > PNG_MAX_PALETTE_LENGTH) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - for (i = 0; i < num; i++) - { - png_byte buf[2]; - - png_crc_read(png_ptr, buf, 2); - readbuf[i] = png_get_uint_16(buf); - } - - if (png_crc_finish(png_ptr, 0)) - return; - - png_set_hIST(png_ptr, info_ptr, readbuf); -} -#endif - -#ifdef PNG_READ_pHYs_SUPPORTED -void /* PRIVATE */ -png_handle_pHYs(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_byte buf[9]; - png_uint_32 res_x, res_y; - int unit_type; - - png_debug(1, "in png_handle_pHYs"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - if (length != 9) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, buf, 9); - - if (png_crc_finish(png_ptr, 0)) - return; - - res_x = png_get_uint_32(buf); - res_y = png_get_uint_32(buf + 4); - unit_type = buf[8]; - png_set_pHYs(png_ptr, info_ptr, res_x, res_y, unit_type); -} -#endif - -#ifdef PNG_READ_oFFs_SUPPORTED -void /* PRIVATE */ -png_handle_oFFs(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_byte buf[9]; - png_int_32 offset_x, offset_y; - int unit_type; - - png_debug(1, "in png_handle_oFFs"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - if (length != 9) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, buf, 9); - - if (png_crc_finish(png_ptr, 0)) - return; - - offset_x = png_get_int_32(buf); - offset_y = png_get_int_32(buf + 4); - unit_type = buf[8]; - png_set_oFFs(png_ptr, info_ptr, offset_x, offset_y, unit_type); -} -#endif - -#ifdef PNG_READ_pCAL_SUPPORTED -/* Read the pCAL chunk (described in the PNG Extensions document) */ -void /* PRIVATE */ -png_handle_pCAL(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_int_32 X0, X1; - png_byte type, nparams; - png_bytep buffer, buf, units, endptr; - png_charpp params; - int i; - - png_debug(1, "in png_handle_pCAL"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_pCAL)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - png_debug1(2, "Allocating and reading pCAL chunk data (%u bytes)", - length + 1); - - buffer = png_read_buffer(png_ptr, length+1, 2/*silent*/); - - if (buffer == NULL) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of memory"); - return; - } - - png_crc_read(png_ptr, buffer, length); - - if (png_crc_finish(png_ptr, 0)) - return; - - buffer[length] = 0; /* Null terminate the last string */ - - png_debug(3, "Finding end of pCAL purpose string"); - for (buf = buffer; *buf; buf++) - /* Empty loop */ ; - - endptr = buffer + length; - - /* We need to have at least 12 bytes after the purpose string - * in order to get the parameter information. - */ - if (endptr <= buf + 12) - { - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_debug(3, "Reading pCAL X0, X1, type, nparams, and units"); - X0 = png_get_int_32((png_bytep)buf+1); - X1 = png_get_int_32((png_bytep)buf+5); - type = buf[9]; - nparams = buf[10]; - units = buf + 11; - - png_debug(3, "Checking pCAL equation type and number of parameters"); - /* Check that we have the right number of parameters for known - * equation types. - */ - if ((type == PNG_EQUATION_LINEAR && nparams != 2) || - (type == PNG_EQUATION_BASE_E && nparams != 3) || - (type == PNG_EQUATION_ARBITRARY && nparams != 3) || - (type == PNG_EQUATION_HYPERBOLIC && nparams != 4)) - { - png_chunk_benign_error(png_ptr, "invalid parameter count"); - return; - } - - else if (type >= PNG_EQUATION_LAST) - { - png_chunk_benign_error(png_ptr, "unrecognized equation type"); - } - - for (buf = units; *buf; buf++) - /* Empty loop to move past the units string. */ ; - - png_debug(3, "Allocating pCAL parameters array"); - - params = png_voidcast(png_charpp, png_malloc_warn(png_ptr, - nparams * (sizeof (png_charp)))); - - if (params == NULL) - { - png_chunk_benign_error(png_ptr, "out of memory"); - return; - } - - /* Get pointers to the start of each parameter string. */ - for (i = 0; i < nparams; i++) - { - buf++; /* Skip the null string terminator from previous parameter. */ - - png_debug1(3, "Reading pCAL parameter %d", i); - - for (params[i] = (png_charp)buf; buf <= endptr && *buf != 0; buf++) - /* Empty loop to move past each parameter string */ ; - - /* Make sure we haven't run out of data yet */ - if (buf > endptr) - { - png_free(png_ptr, params); - png_chunk_benign_error(png_ptr, "invalid data"); - return; - } - } - - png_set_pCAL(png_ptr, info_ptr, (png_charp)buffer, X0, X1, type, nparams, - (png_charp)units, params); - - png_free(png_ptr, params); -} -#endif - -#ifdef PNG_READ_sCAL_SUPPORTED -/* Read the sCAL chunk */ -void /* PRIVATE */ -png_handle_sCAL(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_bytep buffer; - png_size_t i; - int state; - - png_debug(1, "in png_handle_sCAL"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of place"); - return; - } - - else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sCAL)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - /* Need unit type, width, \0, height: minimum 4 bytes */ - else if (length < 4) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_debug1(2, "Allocating and reading sCAL chunk data (%u bytes)", - length + 1); - - buffer = png_read_buffer(png_ptr, length+1, 2/*silent*/); - - if (buffer == NULL) - { - png_chunk_benign_error(png_ptr, "out of memory"); - png_crc_finish(png_ptr, length); - return; - } - - png_crc_read(png_ptr, buffer, length); - buffer[length] = 0; /* Null terminate the last string */ - - if (png_crc_finish(png_ptr, 0)) - return; - - /* Validate the unit. */ - if (buffer[0] != 1 && buffer[0] != 2) - { - png_chunk_benign_error(png_ptr, "invalid unit"); - return; - } - - /* Validate the ASCII numbers, need two ASCII numbers separated by - * a '\0' and they need to fit exactly in the chunk data. - */ - i = 1; - state = 0; - - if (!png_check_fp_number((png_const_charp)buffer, length, &state, &i) || - i >= length || buffer[i++] != 0) - png_chunk_benign_error(png_ptr, "bad width format"); - - else if (!PNG_FP_IS_POSITIVE(state)) - png_chunk_benign_error(png_ptr, "non-positive width"); - - else - { - png_size_t heighti = i; - - state = 0; - if (!png_check_fp_number((png_const_charp)buffer, length, &state, &i) || - i != length) - png_chunk_benign_error(png_ptr, "bad height format"); - - else if (!PNG_FP_IS_POSITIVE(state)) - png_chunk_benign_error(png_ptr, "non-positive height"); - - else - /* This is the (only) success case. */ - png_set_sCAL_s(png_ptr, info_ptr, buffer[0], - (png_charp)buffer+1, (png_charp)buffer+heighti); - } -} -#endif - -#ifdef PNG_READ_tIME_SUPPORTED -void /* PRIVATE */ -png_handle_tIME(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_byte buf[7]; - png_time mod_time; - - png_debug(1, "in png_handle_tIME"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tIME)) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "duplicate"); - return; - } - - if (png_ptr->mode & PNG_HAVE_IDAT) - png_ptr->mode |= PNG_AFTER_IDAT; - - if (length != 7) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "invalid"); - return; - } - - png_crc_read(png_ptr, buf, 7); - - if (png_crc_finish(png_ptr, 0)) - return; - - mod_time.second = buf[6]; - mod_time.minute = buf[5]; - mod_time.hour = buf[4]; - mod_time.day = buf[3]; - mod_time.month = buf[2]; - mod_time.year = png_get_uint_16(buf); - - png_set_tIME(png_ptr, info_ptr, &mod_time); -} -#endif - -#ifdef PNG_READ_tEXt_SUPPORTED -/* Note: this does not properly handle chunks that are > 64K under DOS */ -void /* PRIVATE */ -png_handle_tEXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_text text_info; - png_bytep buffer; - png_charp key; - png_charp text; - png_uint_32 skip = 0; - - png_debug(1, "in png_handle_tEXt"); - -#ifdef PNG_USER_LIMITS_SUPPORTED - if (png_ptr->user_chunk_cache_max != 0) - { - if (png_ptr->user_chunk_cache_max == 1) - { - png_crc_finish(png_ptr, length); - return; - } - - if (--png_ptr->user_chunk_cache_max == 1) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "no space in chunk cache"); - return; - } - } -#endif - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - if (png_ptr->mode & PNG_HAVE_IDAT) - png_ptr->mode |= PNG_AFTER_IDAT; - -#ifdef PNG_MAX_MALLOC_64K - if (length > 65535U) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "too large to fit in memory"); - return; - } -#endif - - buffer = png_read_buffer(png_ptr, length+1, 1/*warn*/); - - if (buffer == NULL) - { - png_chunk_benign_error(png_ptr, "out of memory"); - return; - } - - png_crc_read(png_ptr, buffer, length); - - if (png_crc_finish(png_ptr, skip)) - return; - - key = (png_charp)buffer; - key[length] = 0; - - for (text = key; *text; text++) - /* Empty loop to find end of key */ ; - - if (text != key + length) - text++; - - text_info.compression = PNG_TEXT_COMPRESSION_NONE; - text_info.key = key; - text_info.lang = NULL; - text_info.lang_key = NULL; - text_info.itxt_length = 0; - text_info.text = text; - text_info.text_length = strlen(text); - - if (png_set_text_2(png_ptr, info_ptr, &text_info, 1)) - png_warning(png_ptr, "Insufficient memory to process text chunk"); -} -#endif - -#ifdef PNG_READ_zTXt_SUPPORTED -/* Note: this does not correctly handle chunks that are > 64K under DOS */ -void /* PRIVATE */ -png_handle_zTXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_const_charp errmsg = NULL; - png_bytep buffer; - png_uint_32 keyword_length; - - png_debug(1, "in png_handle_zTXt"); - -#ifdef PNG_USER_LIMITS_SUPPORTED - if (png_ptr->user_chunk_cache_max != 0) - { - if (png_ptr->user_chunk_cache_max == 1) - { - png_crc_finish(png_ptr, length); - return; - } - - if (--png_ptr->user_chunk_cache_max == 1) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "no space in chunk cache"); - return; - } - } -#endif - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - if (png_ptr->mode & PNG_HAVE_IDAT) - png_ptr->mode |= PNG_AFTER_IDAT; - - buffer = png_read_buffer(png_ptr, length, 2/*silent*/); - - if (buffer == NULL) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of memory"); - return; - } - - png_crc_read(png_ptr, buffer, length); - - if (png_crc_finish(png_ptr, 0)) - return; - - /* TODO: also check that the keyword contents match the spec! */ - for (keyword_length = 0; - keyword_length < length && buffer[keyword_length] != 0; - ++keyword_length) - /* Empty loop to find end of name */ ; - - if (keyword_length > 79 || keyword_length < 1) - errmsg = "bad keyword"; - - /* zTXt must have some LZ data after the keyword, although it may expand to - * zero bytes; we need a '\0' at the end of the keyword, the compression type - * then the LZ data: - */ - else if (keyword_length + 3 > length) - errmsg = "truncated"; - - else if (buffer[keyword_length+1] != PNG_COMPRESSION_TYPE_BASE) - errmsg = "unknown compression type"; - - else - { - png_alloc_size_t uncompressed_length = PNG_SIZE_MAX; - - /* TODO: at present png_decompress_chunk imposes a single application - * level memory limit, this should be split to different values for iCCP - * and text chunks. - */ - if (png_decompress_chunk(png_ptr, length, keyword_length+2, - &uncompressed_length, 1/*terminate*/) == Z_STREAM_END) - { - png_text text; - - /* It worked; png_ptr->read_buffer now looks like a tEXt chunk except - * for the extra compression type byte and the fact that it isn't - * necessarily '\0' terminated. - */ - buffer = png_ptr->read_buffer; - buffer[uncompressed_length+(keyword_length+2)] = 0; - - text.compression = PNG_TEXT_COMPRESSION_zTXt; - text.key = (png_charp)buffer; - text.text = (png_charp)(buffer + keyword_length+2); - text.text_length = uncompressed_length; - text.itxt_length = 0; - text.lang = NULL; - text.lang_key = NULL; - - if (png_set_text_2(png_ptr, info_ptr, &text, 1)) - errmsg = "insufficient memory"; - } - - else - errmsg = png_ptr->zstream.msg; - } - - if (errmsg != NULL) - png_chunk_benign_error(png_ptr, errmsg); -} -#endif - -#ifdef PNG_READ_iTXt_SUPPORTED -/* Note: this does not correctly handle chunks that are > 64K under DOS */ -void /* PRIVATE */ -png_handle_iTXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) -{ - png_const_charp errmsg = NULL; - png_bytep buffer; - png_uint_32 prefix_length; - - png_debug(1, "in png_handle_iTXt"); - -#ifdef PNG_USER_LIMITS_SUPPORTED - if (png_ptr->user_chunk_cache_max != 0) - { - if (png_ptr->user_chunk_cache_max == 1) - { - png_crc_finish(png_ptr, length); - return; - } - - if (--png_ptr->user_chunk_cache_max == 1) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "no space in chunk cache"); - return; - } - } -#endif - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_chunk_error(png_ptr, "missing IHDR"); - - if (png_ptr->mode & PNG_HAVE_IDAT) - png_ptr->mode |= PNG_AFTER_IDAT; - - buffer = png_read_buffer(png_ptr, length+1, 1/*warn*/); - - if (buffer == NULL) - { - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "out of memory"); - return; - } - - png_crc_read(png_ptr, buffer, length); - - if (png_crc_finish(png_ptr, 0)) - return; - - /* First the keyword. */ - for (prefix_length=0; - prefix_length < length && buffer[prefix_length] != 0; - ++prefix_length) - /* Empty loop */ ; - - /* Perform a basic check on the keyword length here. */ - if (prefix_length > 79 || prefix_length < 1) - errmsg = "bad keyword"; - - /* Expect keyword, compression flag, compression type, language, translated - * keyword (both may be empty but are 0 terminated) then the text, which may - * be empty. - */ - else if (prefix_length + 5 > length) - errmsg = "truncated"; - - else if (buffer[prefix_length+1] == 0 || - (buffer[prefix_length+1] == 1 && - buffer[prefix_length+2] == PNG_COMPRESSION_TYPE_BASE)) - { - int compressed = buffer[prefix_length+1] != 0; - png_uint_32 language_offset, translated_keyword_offset; - png_alloc_size_t uncompressed_length = 0; - - /* Now the language tag */ - prefix_length += 3; - language_offset = prefix_length; - - for (; prefix_length < length && buffer[prefix_length] != 0; - ++prefix_length) - /* Empty loop */ ; - - /* WARNING: the length may be invalid here, this is checked below. */ - translated_keyword_offset = ++prefix_length; - - for (; prefix_length < length && buffer[prefix_length] != 0; - ++prefix_length) - /* Empty loop */ ; - - /* prefix_length should now be at the trailing '\0' of the translated - * keyword, but it may already be over the end. None of this arithmetic - * can overflow because chunks are at most 2^31 bytes long, but on 16-bit - * systems the available allocaton may overflow. - */ - ++prefix_length; - - if (!compressed && prefix_length <= length) - uncompressed_length = length - prefix_length; - - else if (compressed && prefix_length < length) - { - uncompressed_length = PNG_SIZE_MAX; - - /* TODO: at present png_decompress_chunk imposes a single application - * level memory limit, this should be split to different values for - * iCCP and text chunks. - */ - if (png_decompress_chunk(png_ptr, length, prefix_length, - &uncompressed_length, 1/*terminate*/) == Z_STREAM_END) - buffer = png_ptr->read_buffer; - - else - errmsg = png_ptr->zstream.msg; - } - - else - errmsg = "truncated"; - - if (errmsg == NULL) - { - png_text text; - - buffer[uncompressed_length+prefix_length] = 0; - - if (compressed) - text.compression = PNG_ITXT_COMPRESSION_NONE; - - else - text.compression = PNG_ITXT_COMPRESSION_zTXt; - - text.key = (png_charp)buffer; - text.lang = (png_charp)buffer + language_offset; - text.lang_key = (png_charp)buffer + translated_keyword_offset; - text.text = (png_charp)buffer + prefix_length; - text.text_length = 0; - text.itxt_length = uncompressed_length; - - if (png_set_text_2(png_ptr, info_ptr, &text, 1)) - errmsg = "insufficient memory"; - } - } - - else - errmsg = "bad compression info"; - - if (errmsg != NULL) - png_chunk_benign_error(png_ptr, errmsg); -} -#endif - -#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED -/* Utility function for png_handle_unknown; set up png_ptr::unknown_chunk */ -static int -png_cache_unknown_chunk(png_structrp png_ptr, png_uint_32 length) -{ - png_alloc_size_t limit = PNG_SIZE_MAX; - - if (png_ptr->unknown_chunk.data != NULL) - { - png_free(png_ptr, png_ptr->unknown_chunk.data); - png_ptr->unknown_chunk.data = NULL; - } - -# ifdef PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED - if (png_ptr->user_chunk_malloc_max > 0 && - png_ptr->user_chunk_malloc_max < limit) - limit = png_ptr->user_chunk_malloc_max; - -# elif PNG_USER_CHUNK_MALLOC_MAX > 0 - if (PNG_USER_CHUNK_MALLOC_MAX < limit) - limit = PNG_USER_CHUNK_MALLOC_MAX; -# endif - - if (length <= limit) - { - PNG_CSTRING_FROM_CHUNK(png_ptr->unknown_chunk.name, png_ptr->chunk_name); - /* The following is safe because of the PNG_SIZE_MAX init above */ - png_ptr->unknown_chunk.size = (png_size_t)length/*SAFE*/; - /* 'mode' is a flag array, only the bottom four bits matter here */ - png_ptr->unknown_chunk.location = (png_byte)png_ptr->mode/*SAFE*/; - - if (length == 0) - png_ptr->unknown_chunk.data = NULL; - - else - { - /* Do a 'warn' here - it is handled below. */ - png_ptr->unknown_chunk.data = png_voidcast(png_bytep, - png_malloc_warn(png_ptr, length)); - } - } - - if (png_ptr->unknown_chunk.data == NULL && length > 0) - { - /* This is benign because we clean up correctly */ - png_crc_finish(png_ptr, length); - png_chunk_benign_error(png_ptr, "unknown chunk exceeds memory limits"); - return 0; - } - - else - { - if (length > 0) - png_crc_read(png_ptr, png_ptr->unknown_chunk.data, length); - png_crc_finish(png_ptr, 0); - return 1; - } -} -#endif /* PNG_READ_UNKNOWN_CHUNKS_SUPPORTED */ - -/* Handle an unknown, or known but disabled, chunk */ -void /* PRIVATE */ -png_handle_unknown(png_structrp png_ptr, png_inforp info_ptr, - png_uint_32 length, int keep) -{ - int handled = 0; /* the chunk was handled */ - - png_debug(1, "in png_handle_unknown"); - -#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED - /* NOTE: this code is based on the code in libpng-1.4.12 except for fixing - * the bug which meant that setting a non-default behavior for a specific - * chunk would be ignored (the default was always used unless a user - * callback was installed). - * - * 'keep' is the value from the png_chunk_unknown_handling, the setting for - * this specific chunk_name, if PNG_HANDLE_AS_UNKNOWN_SUPPORTED, if not it - * will always be PNG_HANDLE_CHUNK_AS_DEFAULT and it needs to be set here. - * This is just an optimization to avoid multiple calls to the lookup - * function. - */ -# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED -# ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED - keep = png_chunk_unknown_handling(png_ptr, png_ptr->chunk_name); -# endif -# endif - - /* One of the following methods will read the chunk or skip it (at least one - * of these is always defined because this is the only way to switch on - * PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) - */ -# ifdef PNG_READ_USER_CHUNKS_SUPPORTED - /* The user callback takes precedence over the chunk keep value, but the - * keep value is still required to validate a save of a critical chunk. - */ - if (png_ptr->read_user_chunk_fn != NULL) - { - if (png_cache_unknown_chunk(png_ptr, length)) - { - /* Callback to user unknown chunk handler */ - int ret = (*(png_ptr->read_user_chunk_fn))(png_ptr, - &png_ptr->unknown_chunk); - - /* ret is: - * negative: An error occured, png_chunk_error will be called. - * zero: The chunk was not handled, the chunk will be discarded - * unless png_set_keep_unknown_chunks has been used to set - * a 'keep' behavior for this particular chunk, in which - * case that will be used. A critical chunk will cause an - * error at this point unless it is to be saved. - * positive: The chunk was handled, libpng will ignore/discard it. - */ - if (ret < 0) - png_chunk_error(png_ptr, "error in user chunk"); - - else if (ret == 0) - { - /* If the keep value is 'default' or 'never' override it, but - * still error out on critical chunks unless the keep value is - * 'always' While this is weird it is the behavior in 1.4.12. - * A possible improvement would be to obey the value set for the - * chunk, but this would be an API change that would probably - * damage some applications. - * - * The png_app_warning below catches the case that matters, where - * the application has not set specific save or ignore for this - * chunk or global save or ignore. - */ - if (keep < PNG_HANDLE_CHUNK_IF_SAFE) - { -# ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED - if (png_ptr->unknown_default < PNG_HANDLE_CHUNK_IF_SAFE) - { - png_chunk_warning(png_ptr, "Saving unknown chunk:"); - png_app_warning(png_ptr, - "forcing save of an unhandled chunk;" - " please call png_set_keep_unknown_chunks"); - /* with keep = PNG_HANDLE_CHUNK_IF_SAFE */ - } -# endif - keep = PNG_HANDLE_CHUNK_IF_SAFE; - } - } - - else /* chunk was handled */ - { - handled = 1; - /* Critical chunks can be safely discarded at this point. */ - keep = PNG_HANDLE_CHUNK_NEVER; - } - } - - else - keep = PNG_HANDLE_CHUNK_NEVER; /* insufficient memory */ - } - - else - /* Use the SAVE_UNKNOWN_CHUNKS code or skip the chunk */ -# endif /* PNG_READ_USER_CHUNKS_SUPPORTED */ - -# ifdef PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED - { - /* keep is currently just the per-chunk setting, if there was no - * setting change it to the global default now (not that this may - * still be AS_DEFAULT) then obtain the cache of the chunk if required, - * if not simply skip the chunk. - */ - if (keep == PNG_HANDLE_CHUNK_AS_DEFAULT) - keep = png_ptr->unknown_default; - - if (keep == PNG_HANDLE_CHUNK_ALWAYS || - (keep == PNG_HANDLE_CHUNK_IF_SAFE && - PNG_CHUNK_ANCILLARY(png_ptr->chunk_name))) - { - if (!png_cache_unknown_chunk(png_ptr, length)) - keep = PNG_HANDLE_CHUNK_NEVER; - } - - else - png_crc_finish(png_ptr, length); - } -# else -# ifndef PNG_READ_USER_CHUNKS_SUPPORTED -# error no method to support READ_UNKNOWN_CHUNKS -# endif - - { - /* If here there is no read callback pointer set and no support is - * compiled in to just save the unknown chunks, so simply skip this - * chunk. If 'keep' is something other than AS_DEFAULT or NEVER then - * the app has erroneously asked for unknown chunk saving when there - * is no support. - */ - if (keep > PNG_HANDLE_CHUNK_NEVER) - png_app_error(png_ptr, "no unknown chunk support available"); - - png_crc_finish(png_ptr, length); - } -# endif - -# ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED - /* Now store the chunk in the chunk list if appropriate, and if the limits - * permit it. - */ - if (keep == PNG_HANDLE_CHUNK_ALWAYS || - (keep == PNG_HANDLE_CHUNK_IF_SAFE && - PNG_CHUNK_ANCILLARY(png_ptr->chunk_name))) - { -# ifdef PNG_USER_LIMITS_SUPPORTED - switch (png_ptr->user_chunk_cache_max) - { - case 2: - png_ptr->user_chunk_cache_max = 1; - png_chunk_benign_error(png_ptr, "no space in chunk cache"); - /* FALL THROUGH */ - case 1: - /* NOTE: prior to 1.6.0 this case resulted in an unknown critical - * chunk being skipped, now there will be a hard error below. - */ - break; - - default: /* not at limit */ - --(png_ptr->user_chunk_cache_max); - /* FALL THROUGH */ - case 0: /* no limit */ -# endif /* PNG_USER_LIMITS_SUPPORTED */ - /* Here when the limit isn't reached or when limits are compiled - * out; store the chunk. - */ - png_set_unknown_chunks(png_ptr, info_ptr, - &png_ptr->unknown_chunk, 1); - handled = 1; -# ifdef PNG_USER_LIMITS_SUPPORTED - break; - } -# endif - } -# else /* no store support: the chunk must be handled by the user callback */ - PNG_UNUSED(info_ptr) -# endif - - /* Regardless of the error handling below the cached data (if any) can be - * freed now. Notice that the data is not freed if there is a png_error, but - * it will be freed by destroy_read_struct. - */ - if (png_ptr->unknown_chunk.data != NULL) - png_free(png_ptr, png_ptr->unknown_chunk.data); - png_ptr->unknown_chunk.data = NULL; - -#else /* !PNG_READ_UNKNOWN_CHUNKS_SUPPORTED */ - /* There is no support to read an unknown chunk, so just skip it. */ - png_crc_finish(png_ptr, length); - PNG_UNUSED(info_ptr) - PNG_UNUSED(keep) -#endif /* !PNG_READ_UNKNOWN_CHUNKS_SUPPORTED */ - - /* Check for unhandled critical chunks */ - if (!handled && PNG_CHUNK_CRITICAL(png_ptr->chunk_name)) - png_chunk_error(png_ptr, "unhandled critical chunk"); -} - -/* This function is called to verify that a chunk name is valid. - * This function can't have the "critical chunk check" incorporated - * into it, since in the future we will need to be able to call user - * functions to handle unknown critical chunks after we check that - * the chunk name itself is valid. - */ - -/* Bit hacking: the test for an invalid byte in the 4 byte chunk name is: - * - * ((c) < 65 || (c) > 122 || ((c) > 90 && (c) < 97)) - */ - -void /* PRIVATE */ -png_check_chunk_name(png_structrp png_ptr, png_uint_32 chunk_name) -{ - int i; - - png_debug(1, "in png_check_chunk_name"); - - for (i=1; i<=4; ++i) - { - int c = chunk_name & 0xff; - - if (c < 65 || c > 122 || (c > 90 && c < 97)) - png_chunk_error(png_ptr, "invalid chunk type"); - - chunk_name >>= 8; - } -} - -/* Combines the row recently read in with the existing pixels in the row. This - * routine takes care of alpha and transparency if requested. This routine also - * handles the two methods of progressive display of interlaced images, - * depending on the 'display' value; if 'display' is true then the whole row - * (dp) is filled from the start by replicating the available pixels. If - * 'display' is false only those pixels present in the pass are filled in. - */ -void /* PRIVATE */ -png_combine_row(png_const_structrp png_ptr, png_bytep dp, int display) -{ - unsigned int pixel_depth = png_ptr->transformed_pixel_depth; - png_const_bytep sp = png_ptr->row_buf + 1; - png_uint_32 row_width = png_ptr->width; - unsigned int pass = png_ptr->pass; - png_bytep end_ptr = 0; - png_byte end_byte = 0; - unsigned int end_mask; - - png_debug(1, "in png_combine_row"); - - /* Added in 1.5.6: it should not be possible to enter this routine until at - * least one row has been read from the PNG data and transformed. - */ - if (pixel_depth == 0) - png_error(png_ptr, "internal row logic error"); - - /* Added in 1.5.4: the pixel depth should match the information returned by - * any call to png_read_update_info at this point. Do not continue if we got - * this wrong. - */ - if (png_ptr->info_rowbytes != 0 && png_ptr->info_rowbytes != - PNG_ROWBYTES(pixel_depth, row_width)) - png_error(png_ptr, "internal row size calculation error"); - - /* Don't expect this to ever happen: */ - if (row_width == 0) - png_error(png_ptr, "internal row width error"); - - /* Preserve the last byte in cases where only part of it will be overwritten, - * the multiply below may overflow, we don't care because ANSI-C guarantees - * we get the low bits. - */ - end_mask = (pixel_depth * row_width) & 7; - if (end_mask != 0) - { - /* end_ptr == NULL is a flag to say do nothing */ - end_ptr = dp + PNG_ROWBYTES(pixel_depth, row_width) - 1; - end_byte = *end_ptr; -# ifdef PNG_READ_PACKSWAP_SUPPORTED - if (png_ptr->transformations & PNG_PACKSWAP) /* little-endian byte */ - end_mask = 0xff << end_mask; - - else /* big-endian byte */ -# endif - end_mask = 0xff >> end_mask; - /* end_mask is now the bits to *keep* from the destination row */ - } - - /* For non-interlaced images this reduces to a memcpy(). A memcpy() - * will also happen if interlacing isn't supported or if the application - * does not call png_set_interlace_handling(). In the latter cases the - * caller just gets a sequence of the unexpanded rows from each interlace - * pass. - */ -#ifdef PNG_READ_INTERLACING_SUPPORTED - if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE) && - pass < 6 && (display == 0 || - /* The following copies everything for 'display' on passes 0, 2 and 4. */ - (display == 1 && (pass & 1) != 0))) - { - /* Narrow images may have no bits in a pass; the caller should handle - * this, but this test is cheap: - */ - if (row_width <= PNG_PASS_START_COL(pass)) - return; - - if (pixel_depth < 8) - { - /* For pixel depths up to 4 bpp the 8-pixel mask can be expanded to fit - * into 32 bits, then a single loop over the bytes using the four byte - * values in the 32-bit mask can be used. For the 'display' option the - * expanded mask may also not require any masking within a byte. To - * make this work the PACKSWAP option must be taken into account - it - * simply requires the pixels to be reversed in each byte. - * - * The 'regular' case requires a mask for each of the first 6 passes, - * the 'display' case does a copy for the even passes in the range - * 0..6. This has already been handled in the test above. - * - * The masks are arranged as four bytes with the first byte to use in - * the lowest bits (little-endian) regardless of the order (PACKSWAP or - * not) of the pixels in each byte. - * - * NOTE: the whole of this logic depends on the caller of this function - * only calling it on rows appropriate to the pass. This function only - * understands the 'x' logic; the 'y' logic is handled by the caller. - * - * The following defines allow generation of compile time constant bit - * masks for each pixel depth and each possibility of swapped or not - * swapped bytes. Pass 'p' is in the range 0..6; 'x', a pixel index, - * is in the range 0..7; and the result is 1 if the pixel is to be - * copied in the pass, 0 if not. 'S' is for the sparkle method, 'B' - * for the block method. - * - * With some compilers a compile time expression of the general form: - * - * (shift >= 32) ? (a >> (shift-32)) : (b >> shift) - * - * Produces warnings with values of 'shift' in the range 33 to 63 - * because the right hand side of the ?: expression is evaluated by - * the compiler even though it isn't used. Microsoft Visual C (various - * versions) and the Intel C compiler are known to do this. To avoid - * this the following macros are used in 1.5.6. This is a temporary - * solution to avoid destabilizing the code during the release process. - */ -# if PNG_USE_COMPILE_TIME_MASKS -# define PNG_LSR(x,s) ((x)>>((s) & 0x1f)) -# define PNG_LSL(x,s) ((x)<<((s) & 0x1f)) -# else -# define PNG_LSR(x,s) ((x)>>(s)) -# define PNG_LSL(x,s) ((x)<<(s)) -# endif -# define S_COPY(p,x) (((p)<4 ? PNG_LSR(0x80088822,(3-(p))*8+(7-(x))) :\ - PNG_LSR(0xaa55ff00,(7-(p))*8+(7-(x)))) & 1) -# define B_COPY(p,x) (((p)<4 ? PNG_LSR(0xff0fff33,(3-(p))*8+(7-(x))) :\ - PNG_LSR(0xff55ff00,(7-(p))*8+(7-(x)))) & 1) - - /* Return a mask for pass 'p' pixel 'x' at depth 'd'. The mask is - * little endian - the first pixel is at bit 0 - however the extra - * parameter 's' can be set to cause the mask position to be swapped - * within each byte, to match the PNG format. This is done by XOR of - * the shift with 7, 6 or 4 for bit depths 1, 2 and 4. - */ -# define PIXEL_MASK(p,x,d,s) \ - (PNG_LSL(((PNG_LSL(1U,(d)))-1),(((x)*(d))^((s)?8-(d):0)))) - - /* Hence generate the appropriate 'block' or 'sparkle' pixel copy mask. - */ -# define S_MASKx(p,x,d,s) (S_COPY(p,x)?PIXEL_MASK(p,x,d,s):0) -# define B_MASKx(p,x,d,s) (B_COPY(p,x)?PIXEL_MASK(p,x,d,s):0) - - /* Combine 8 of these to get the full mask. For the 1-bpp and 2-bpp - * cases the result needs replicating, for the 4-bpp case the above - * generates a full 32 bits. - */ -# define MASK_EXPAND(m,d) ((m)*((d)==1?0x01010101:((d)==2?0x00010001:1))) - -# define S_MASK(p,d,s) MASK_EXPAND(S_MASKx(p,0,d,s) + S_MASKx(p,1,d,s) +\ - S_MASKx(p,2,d,s) + S_MASKx(p,3,d,s) + S_MASKx(p,4,d,s) +\ - S_MASKx(p,5,d,s) + S_MASKx(p,6,d,s) + S_MASKx(p,7,d,s), d) - -# define B_MASK(p,d,s) MASK_EXPAND(B_MASKx(p,0,d,s) + B_MASKx(p,1,d,s) +\ - B_MASKx(p,2,d,s) + B_MASKx(p,3,d,s) + B_MASKx(p,4,d,s) +\ - B_MASKx(p,5,d,s) + B_MASKx(p,6,d,s) + B_MASKx(p,7,d,s), d) - -#if PNG_USE_COMPILE_TIME_MASKS - /* Utility macros to construct all the masks for a depth/swap - * combination. The 's' parameter says whether the format is PNG - * (big endian bytes) or not. Only the three odd-numbered passes are - * required for the display/block algorithm. - */ -# define S_MASKS(d,s) { S_MASK(0,d,s), S_MASK(1,d,s), S_MASK(2,d,s),\ - S_MASK(3,d,s), S_MASK(4,d,s), S_MASK(5,d,s) } - -# define B_MASKS(d,s) { B_MASK(1,d,s), S_MASK(3,d,s), S_MASK(5,d,s) } - -# define DEPTH_INDEX(d) ((d)==1?0:((d)==2?1:2)) - - /* Hence the pre-compiled masks indexed by PACKSWAP (or not), depth and - * then pass: - */ - static PNG_CONST png_uint_32 row_mask[2/*PACKSWAP*/][3/*depth*/][6] = - { - /* Little-endian byte masks for PACKSWAP */ - { S_MASKS(1,0), S_MASKS(2,0), S_MASKS(4,0) }, - /* Normal (big-endian byte) masks - PNG format */ - { S_MASKS(1,1), S_MASKS(2,1), S_MASKS(4,1) } - }; - - /* display_mask has only three entries for the odd passes, so index by - * pass>>1. - */ - static PNG_CONST png_uint_32 display_mask[2][3][3] = - { - /* Little-endian byte masks for PACKSWAP */ - { B_MASKS(1,0), B_MASKS(2,0), B_MASKS(4,0) }, - /* Normal (big-endian byte) masks - PNG format */ - { B_MASKS(1,1), B_MASKS(2,1), B_MASKS(4,1) } - }; - -# define MASK(pass,depth,display,png)\ - ((display)?display_mask[png][DEPTH_INDEX(depth)][pass>>1]:\ - row_mask[png][DEPTH_INDEX(depth)][pass]) - -#else /* !PNG_USE_COMPILE_TIME_MASKS */ - /* This is the runtime alternative: it seems unlikely that this will - * ever be either smaller or faster than the compile time approach. - */ -# define MASK(pass,depth,display,png)\ - ((display)?B_MASK(pass,depth,png):S_MASK(pass,depth,png)) -#endif /* !PNG_USE_COMPILE_TIME_MASKS */ - - /* Use the appropriate mask to copy the required bits. In some cases - * the byte mask will be 0 or 0xff, optimize these cases. row_width is - * the number of pixels, but the code copies bytes, so it is necessary - * to special case the end. - */ - png_uint_32 pixels_per_byte = 8 / pixel_depth; - png_uint_32 mask; - -# ifdef PNG_READ_PACKSWAP_SUPPORTED - if (png_ptr->transformations & PNG_PACKSWAP) - mask = MASK(pass, pixel_depth, display, 0); - - else -# endif - mask = MASK(pass, pixel_depth, display, 1); - - for (;;) - { - png_uint_32 m; - - /* It doesn't matter in the following if png_uint_32 has more than - * 32 bits because the high bits always match those in m<<24; it is, - * however, essential to use OR here, not +, because of this. - */ - m = mask; - mask = (m >> 8) | (m << 24); /* rotate right to good compilers */ - m &= 0xff; - - if (m != 0) /* something to copy */ - { - if (m != 0xff) - *dp = (png_byte)((*dp & ~m) | (*sp & m)); - else - *dp = *sp; - } - - /* NOTE: this may overwrite the last byte with garbage if the image - * is not an exact number of bytes wide; libpng has always done - * this. - */ - if (row_width <= pixels_per_byte) - break; /* May need to restore part of the last byte */ - - row_width -= pixels_per_byte; - ++dp; - ++sp; - } - } - - else /* pixel_depth >= 8 */ - { - unsigned int bytes_to_copy, bytes_to_jump; - - /* Validate the depth - it must be a multiple of 8 */ - if (pixel_depth & 7) - png_error(png_ptr, "invalid user transform pixel depth"); - - pixel_depth >>= 3; /* now in bytes */ - row_width *= pixel_depth; - - /* Regardless of pass number the Adam 7 interlace always results in a - * fixed number of pixels to copy then to skip. There may be a - * different number of pixels to skip at the start though. - */ - { - unsigned int offset = PNG_PASS_START_COL(pass) * pixel_depth; - - row_width -= offset; - dp += offset; - sp += offset; - } - - /* Work out the bytes to copy. */ - if (display) - { - /* When doing the 'block' algorithm the pixel in the pass gets - * replicated to adjacent pixels. This is why the even (0,2,4,6) - * passes are skipped above - the entire expanded row is copied. - */ - bytes_to_copy = (1<<((6-pass)>>1)) * pixel_depth; - - /* But don't allow this number to exceed the actual row width. */ - if (bytes_to_copy > row_width) - bytes_to_copy = row_width; - } - - else /* normal row; Adam7 only ever gives us one pixel to copy. */ - bytes_to_copy = pixel_depth; - - /* In Adam7 there is a constant offset between where the pixels go. */ - bytes_to_jump = PNG_PASS_COL_OFFSET(pass) * pixel_depth; - - /* And simply copy these bytes. Some optimization is possible here, - * depending on the value of 'bytes_to_copy'. Special case the low - * byte counts, which we know to be frequent. - * - * Notice that these cases all 'return' rather than 'break' - this - * avoids an unnecessary test on whether to restore the last byte - * below. - */ - switch (bytes_to_copy) - { - case 1: - for (;;) - { - *dp = *sp; - - if (row_width <= bytes_to_jump) - return; - - dp += bytes_to_jump; - sp += bytes_to_jump; - row_width -= bytes_to_jump; - } - - case 2: - /* There is a possibility of a partial copy at the end here; this - * slows the code down somewhat. - */ - do - { - dp[0] = sp[0], dp[1] = sp[1]; - - if (row_width <= bytes_to_jump) - return; - - sp += bytes_to_jump; - dp += bytes_to_jump; - row_width -= bytes_to_jump; - } - while (row_width > 1); - - /* And there can only be one byte left at this point: */ - *dp = *sp; - return; - - case 3: - /* This can only be the RGB case, so each copy is exactly one - * pixel and it is not necessary to check for a partial copy. - */ - for(;;) - { - dp[0] = sp[0], dp[1] = sp[1], dp[2] = sp[2]; - - if (row_width <= bytes_to_jump) - return; - - sp += bytes_to_jump; - dp += bytes_to_jump; - row_width -= bytes_to_jump; - } - - default: -#if PNG_ALIGN_TYPE != PNG_ALIGN_NONE - /* Check for double byte alignment and, if possible, use a - * 16-bit copy. Don't attempt this for narrow images - ones that - * are less than an interlace panel wide. Don't attempt it for - * wide bytes_to_copy either - use the memcpy there. - */ - if (bytes_to_copy < 16 /*else use memcpy*/ && - png_isaligned(dp, png_uint_16) && - png_isaligned(sp, png_uint_16) && - bytes_to_copy % (sizeof (png_uint_16)) == 0 && - bytes_to_jump % (sizeof (png_uint_16)) == 0) - { - /* Everything is aligned for png_uint_16 copies, but try for - * png_uint_32 first. - */ - if (png_isaligned(dp, png_uint_32) && - png_isaligned(sp, png_uint_32) && - bytes_to_copy % (sizeof (png_uint_32)) == 0 && - bytes_to_jump % (sizeof (png_uint_32)) == 0) - { - png_uint_32p dp32 = png_aligncast(png_uint_32p,dp); - png_const_uint_32p sp32 = png_aligncastconst( - png_const_uint_32p, sp); - size_t skip = (bytes_to_jump-bytes_to_copy) / - (sizeof (png_uint_32)); - - do - { - size_t c = bytes_to_copy; - do - { - *dp32++ = *sp32++; - c -= (sizeof (png_uint_32)); - } - while (c > 0); - - if (row_width <= bytes_to_jump) - return; - - dp32 += skip; - sp32 += skip; - row_width -= bytes_to_jump; - } - while (bytes_to_copy <= row_width); - - /* Get to here when the row_width truncates the final copy. - * There will be 1-3 bytes left to copy, so don't try the - * 16-bit loop below. - */ - dp = (png_bytep)dp32; - sp = (png_const_bytep)sp32; - do - *dp++ = *sp++; - while (--row_width > 0); - return; - } - - /* Else do it in 16-bit quantities, but only if the size is - * not too large. - */ - else - { - png_uint_16p dp16 = png_aligncast(png_uint_16p, dp); - png_const_uint_16p sp16 = png_aligncastconst( - png_const_uint_16p, sp); - size_t skip = (bytes_to_jump-bytes_to_copy) / - (sizeof (png_uint_16)); - - do - { - size_t c = bytes_to_copy; - do - { - *dp16++ = *sp16++; - c -= (sizeof (png_uint_16)); - } - while (c > 0); - - if (row_width <= bytes_to_jump) - return; - - dp16 += skip; - sp16 += skip; - row_width -= bytes_to_jump; - } - while (bytes_to_copy <= row_width); - - /* End of row - 1 byte left, bytes_to_copy > row_width: */ - dp = (png_bytep)dp16; - sp = (png_const_bytep)sp16; - do - *dp++ = *sp++; - while (--row_width > 0); - return; - } - } -#endif /* PNG_ALIGN_ code */ - - /* The true default - use a memcpy: */ - for (;;) - { - memcpy(dp, sp, bytes_to_copy); - - if (row_width <= bytes_to_jump) - return; - - sp += bytes_to_jump; - dp += bytes_to_jump; - row_width -= bytes_to_jump; - if (bytes_to_copy > row_width) - bytes_to_copy = row_width; - } - } - - /* NOT REACHED*/ - } /* pixel_depth >= 8 */ - - /* Here if pixel_depth < 8 to check 'end_ptr' below. */ - } - else -#endif - - /* If here then the switch above wasn't used so just memcpy the whole row - * from the temporary row buffer (notice that this overwrites the end of the - * destination row if it is a partial byte.) - */ - memcpy(dp, sp, PNG_ROWBYTES(pixel_depth, row_width)); - - /* Restore the overwritten bits from the last byte if necessary. */ - if (end_ptr != NULL) - *end_ptr = (png_byte)((end_byte & end_mask) | (*end_ptr & ~end_mask)); -} - -#ifdef PNG_READ_INTERLACING_SUPPORTED -void /* PRIVATE */ -png_do_read_interlace(png_row_infop row_info, png_bytep row, int pass, - png_uint_32 transformations /* Because these may affect the byte layout */) -{ - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - /* Offset to next interlace block */ - static PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - - png_debug(1, "in png_do_read_interlace"); - if (row != NULL && row_info != NULL) - { - png_uint_32 final_width; - - final_width = row_info->width * png_pass_inc[pass]; - - switch (row_info->pixel_depth) - { - case 1: - { - png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 3); - png_bytep dp = row + (png_size_t)((final_width - 1) >> 3); - int sshift, dshift; - int s_start, s_end, s_inc; - int jstop = png_pass_inc[pass]; - png_byte v; - png_uint_32 i; - int j; - -#ifdef PNG_READ_PACKSWAP_SUPPORTED - if (transformations & PNG_PACKSWAP) - { - sshift = (int)((row_info->width + 7) & 0x07); - dshift = (int)((final_width + 7) & 0x07); - s_start = 7; - s_end = 0; - s_inc = -1; - } - - else -#endif - { - sshift = 7 - (int)((row_info->width + 7) & 0x07); - dshift = 7 - (int)((final_width + 7) & 0x07); - s_start = 0; - s_end = 7; - s_inc = 1; - } - - for (i = 0; i < row_info->width; i++) - { - v = (png_byte)((*sp >> sshift) & 0x01); - for (j = 0; j < jstop; j++) - { - unsigned int tmp = *dp & (0x7f7f >> (7 - dshift)); - tmp |= v << dshift; - *dp = (png_byte)(tmp & 0xff); - - if (dshift == s_end) - { - dshift = s_start; - dp--; - } - - else - dshift += s_inc; - } - - if (sshift == s_end) - { - sshift = s_start; - sp--; - } - - else - sshift += s_inc; - } - break; - } - - case 2: - { - png_bytep sp = row + (png_uint_32)((row_info->width - 1) >> 2); - png_bytep dp = row + (png_uint_32)((final_width - 1) >> 2); - int sshift, dshift; - int s_start, s_end, s_inc; - int jstop = png_pass_inc[pass]; - png_uint_32 i; - -#ifdef PNG_READ_PACKSWAP_SUPPORTED - if (transformations & PNG_PACKSWAP) - { - sshift = (int)(((row_info->width + 3) & 0x03) << 1); - dshift = (int)(((final_width + 3) & 0x03) << 1); - s_start = 6; - s_end = 0; - s_inc = -2; - } - - else -#endif - { - sshift = (int)((3 - ((row_info->width + 3) & 0x03)) << 1); - dshift = (int)((3 - ((final_width + 3) & 0x03)) << 1); - s_start = 0; - s_end = 6; - s_inc = 2; - } - - for (i = 0; i < row_info->width; i++) - { - png_byte v; - int j; - - v = (png_byte)((*sp >> sshift) & 0x03); - for (j = 0; j < jstop; j++) - { - unsigned int tmp = *dp & (0x3f3f >> (6 - dshift)); - tmp |= v << dshift; - *dp = (png_byte)(tmp & 0xff); - - if (dshift == s_end) - { - dshift = s_start; - dp--; - } - - else - dshift += s_inc; - } - - if (sshift == s_end) - { - sshift = s_start; - sp--; - } - - else - sshift += s_inc; - } - break; - } - - case 4: - { - png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 1); - png_bytep dp = row + (png_size_t)((final_width - 1) >> 1); - int sshift, dshift; - int s_start, s_end, s_inc; - png_uint_32 i; - int jstop = png_pass_inc[pass]; - -#ifdef PNG_READ_PACKSWAP_SUPPORTED - if (transformations & PNG_PACKSWAP) - { - sshift = (int)(((row_info->width + 1) & 0x01) << 2); - dshift = (int)(((final_width + 1) & 0x01) << 2); - s_start = 4; - s_end = 0; - s_inc = -4; - } - - else -#endif - { - sshift = (int)((1 - ((row_info->width + 1) & 0x01)) << 2); - dshift = (int)((1 - ((final_width + 1) & 0x01)) << 2); - s_start = 0; - s_end = 4; - s_inc = 4; - } - - for (i = 0; i < row_info->width; i++) - { - png_byte v = (png_byte)((*sp >> sshift) & 0x0f); - int j; - - for (j = 0; j < jstop; j++) - { - unsigned int tmp = *dp & (0xf0f >> (4 - dshift)); - tmp |= v << dshift; - *dp = (png_byte)(tmp & 0xff); - - if (dshift == s_end) - { - dshift = s_start; - dp--; - } - - else - dshift += s_inc; - } - - if (sshift == s_end) - { - sshift = s_start; - sp--; - } - - else - sshift += s_inc; - } - break; - } - - default: - { - png_size_t pixel_bytes = (row_info->pixel_depth >> 3); - - png_bytep sp = row + (png_size_t)(row_info->width - 1) - * pixel_bytes; - - png_bytep dp = row + (png_size_t)(final_width - 1) * pixel_bytes; - - int jstop = png_pass_inc[pass]; - png_uint_32 i; - - for (i = 0; i < row_info->width; i++) - { - png_byte v[8]; /* SAFE; pixel_depth does not exceed 64 */ - int j; - - memcpy(v, sp, pixel_bytes); - - for (j = 0; j < jstop; j++) - { - memcpy(dp, v, pixel_bytes); - dp -= pixel_bytes; - } - - sp -= pixel_bytes; - } - break; - } - } - - row_info->width = final_width; - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, final_width); - } -#ifndef PNG_READ_PACKSWAP_SUPPORTED - PNG_UNUSED(transformations) /* Silence compiler warning */ -#endif -} -#endif /* PNG_READ_INTERLACING_SUPPORTED */ - -static void -png_read_filter_row_sub(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_size_t i; - png_size_t istop = row_info->rowbytes; - unsigned int bpp = (row_info->pixel_depth + 7) >> 3; - png_bytep rp = row + bpp; - - PNG_UNUSED(prev_row) - - for (i = bpp; i < istop; i++) - { - *rp = (png_byte)(((int)(*rp) + (int)(*(rp-bpp))) & 0xff); - rp++; - } -} - -static void -png_read_filter_row_up(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_size_t i; - png_size_t istop = row_info->rowbytes; - png_bytep rp = row; - png_const_bytep pp = prev_row; - - for (i = 0; i < istop; i++) - { - *rp = (png_byte)(((int)(*rp) + (int)(*pp++)) & 0xff); - rp++; - } -} - -static void -png_read_filter_row_avg(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_size_t i; - png_bytep rp = row; - png_const_bytep pp = prev_row; - unsigned int bpp = (row_info->pixel_depth + 7) >> 3; - png_size_t istop = row_info->rowbytes - bpp; - - for (i = 0; i < bpp; i++) - { - *rp = (png_byte)(((int)(*rp) + - ((int)(*pp++) / 2 )) & 0xff); - - rp++; - } - - for (i = 0; i < istop; i++) - { - *rp = (png_byte)(((int)(*rp) + - (int)(*pp++ + *(rp-bpp)) / 2 ) & 0xff); - - rp++; - } -} - -static void -png_read_filter_row_paeth_1byte_pixel(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - png_bytep rp_end = row + row_info->rowbytes; - int a, c; - - /* First pixel/byte */ - c = *prev_row++; - a = *row + c; - *row++ = (png_byte)a; - - /* Remainder */ - while (row < rp_end) - { - int b, pa, pb, pc, p; - - a &= 0xff; /* From previous iteration or start */ - b = *prev_row++; - - p = b - c; - pc = a - c; - -# ifdef PNG_USE_ABS - pa = abs(p); - pb = abs(pc); - pc = abs(p + pc); -# else - pa = p < 0 ? -p : p; - pb = pc < 0 ? -pc : pc; - pc = (p + pc) < 0 ? -(p + pc) : p + pc; -# endif - - /* Find the best predictor, the least of pa, pb, pc favoring the earlier - * ones in the case of a tie. - */ - if (pb < pa) pa = pb, a = b; - if (pc < pa) a = c; - - /* Calculate the current pixel in a, and move the previous row pixel to c - * for the next time round the loop - */ - c = b; - a += *row; - *row++ = (png_byte)a; - } -} - -static void -png_read_filter_row_paeth_multibyte_pixel(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) -{ - int bpp = (row_info->pixel_depth + 7) >> 3; - png_bytep rp_end = row + bpp; - - /* Process the first pixel in the row completely (this is the same as 'up' - * because there is only one candidate predictor for the first row). - */ - while (row < rp_end) - { - int a = *row + *prev_row++; - *row++ = (png_byte)a; - } - - /* Remainder */ - rp_end += row_info->rowbytes - bpp; - - while (row < rp_end) - { - int a, b, c, pa, pb, pc, p; - - c = *(prev_row - bpp); - a = *(row - bpp); - b = *prev_row++; - - p = b - c; - pc = a - c; - -# ifdef PNG_USE_ABS - pa = abs(p); - pb = abs(pc); - pc = abs(p + pc); -# else - pa = p < 0 ? -p : p; - pb = pc < 0 ? -pc : pc; - pc = (p + pc) < 0 ? -(p + pc) : p + pc; -# endif - - if (pb < pa) pa = pb, a = b; - if (pc < pa) a = c; - - a += *row; - *row++ = (png_byte)a; - } -} - -static void -png_init_filter_functions(png_structrp pp) - /* This function is called once for every PNG image (except for PNG images - * that only use PNG_FILTER_VALUE_NONE for all rows) to set the - * implementations required to reverse the filtering of PNG rows. Reversing - * the filter is the first transformation performed on the row data. It is - * performed in place, therefore an implementation can be selected based on - * the image pixel format. If the implementation depends on image width then - * take care to ensure that it works correctly if the image is interlaced - - * interlacing causes the actual row width to vary. - */ -{ - unsigned int bpp = (pp->pixel_depth + 7) >> 3; - - pp->read_filter[PNG_FILTER_VALUE_SUB-1] = png_read_filter_row_sub; - pp->read_filter[PNG_FILTER_VALUE_UP-1] = png_read_filter_row_up; - pp->read_filter[PNG_FILTER_VALUE_AVG-1] = png_read_filter_row_avg; - if (bpp == 1) - pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = - png_read_filter_row_paeth_1byte_pixel; - else - pp->read_filter[PNG_FILTER_VALUE_PAETH-1] = - png_read_filter_row_paeth_multibyte_pixel; - -#ifdef PNG_FILTER_OPTIMIZATIONS - /* To use this define PNG_FILTER_OPTIMIZATIONS as the name of a function to - * call to install hardware optimizations for the above functions; simply - * replace whatever elements of the pp->read_filter[] array with a hardware - * specific (or, for that matter, generic) optimization. - * - * To see an example of this examine what configure.ac does when - * --enable-arm-neon is specified on the command line. - */ - PNG_FILTER_OPTIMIZATIONS(pp, bpp); -#endif -} - -void /* PRIVATE */ -png_read_filter_row(png_structrp pp, png_row_infop row_info, png_bytep row, - png_const_bytep prev_row, int filter) -{ - /* OPTIMIZATION: DO NOT MODIFY THIS FUNCTION, instead #define - * PNG_FILTER_OPTIMIZATIONS to a function that overrides the generic - * implementations. See png_init_filter_functions above. - */ - if (filter > PNG_FILTER_VALUE_NONE && filter < PNG_FILTER_VALUE_LAST) - { - if (pp->read_filter[0] == NULL) - png_init_filter_functions(pp); - - pp->read_filter[filter-1](row_info, row, prev_row); - } -} - -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED -void /* PRIVATE */ -png_read_IDAT_data(png_structrp png_ptr, png_bytep output, - png_alloc_size_t avail_out) -{ - /* Loop reading IDATs and decompressing the result into output[avail_out] */ - png_ptr->zstream.next_out = output; - png_ptr->zstream.avail_out = 0; /* safety: set below */ - - if (output == NULL) - avail_out = 0; - - do - { - int ret; - png_byte tmpbuf[PNG_INFLATE_BUF_SIZE]; - - if (png_ptr->zstream.avail_in == 0) - { - uInt avail_in; - png_bytep buffer; - - while (png_ptr->idat_size == 0) - { - png_crc_finish(png_ptr, 0); - - png_ptr->idat_size = png_read_chunk_header(png_ptr); - /* This is an error even in the 'check' case because the code just - * consumed a non-IDAT header. - */ - if (png_ptr->chunk_name != png_IDAT) - png_error(png_ptr, "Not enough image data"); - } - - avail_in = png_ptr->IDAT_read_size; - - if (avail_in > png_ptr->idat_size) - avail_in = (uInt)png_ptr->idat_size; - - /* A PNG with a gradually increasing IDAT size will defeat this attempt - * to minimize memory usage by causing lots of re-allocs, but - * realistically doing IDAT_read_size re-allocs is not likely to be a - * big problem. - */ - buffer = png_read_buffer(png_ptr, avail_in, 0/*error*/); - - png_crc_read(png_ptr, buffer, avail_in); - png_ptr->idat_size -= avail_in; - - png_ptr->zstream.next_in = buffer; - png_ptr->zstream.avail_in = avail_in; - } - - /* And set up the output side. */ - if (output != NULL) /* standard read */ - { - uInt out = ZLIB_IO_MAX; - - if (out > avail_out) - out = (uInt)avail_out; - - avail_out -= out; - png_ptr->zstream.avail_out = out; - } - - else /* after last row, checking for end */ - { - png_ptr->zstream.next_out = tmpbuf; - png_ptr->zstream.avail_out = (sizeof tmpbuf); - } - - /* Use NO_FLUSH; this gives zlib the maximum opportunity to optimize the - * process. If the LZ stream is truncated the sequential reader will - * terminally damage the stream, above, by reading the chunk header of the - * following chunk (it then exits with png_error). - * - * TODO: deal more elegantly with truncated IDAT lists. - */ - ret = inflate(&png_ptr->zstream, Z_NO_FLUSH); - - /* Take the unconsumed output back. */ - if (output != NULL) - avail_out += png_ptr->zstream.avail_out; - - else /* avail_out counts the extra bytes */ - avail_out += (sizeof tmpbuf) - png_ptr->zstream.avail_out; - - png_ptr->zstream.avail_out = 0; - - if (ret == Z_STREAM_END) - { - /* Do this for safety; we won't read any more into this row. */ - png_ptr->zstream.next_out = NULL; - - png_ptr->mode |= PNG_AFTER_IDAT; - png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED; - - if (png_ptr->zstream.avail_in > 0 || png_ptr->idat_size > 0) - png_chunk_benign_error(png_ptr, "Extra compressed data"); - break; - } - - if (ret != Z_OK) - { - png_zstream_error(png_ptr, ret); - - if (output != NULL) - png_chunk_error(png_ptr, png_ptr->zstream.msg); - - else /* checking */ - { - png_chunk_benign_error(png_ptr, png_ptr->zstream.msg); - return; - } - } - } while (avail_out > 0); - - if (avail_out > 0) - { - /* The stream ended before the image; this is the same as too few IDATs so - * should be handled the same way. - */ - if (output != NULL) - png_error(png_ptr, "Not enough image data"); - - else /* the deflate stream contained extra data */ - png_chunk_benign_error(png_ptr, "Too much image data"); - } -} - -void /* PRIVATE */ -png_read_finish_IDAT(png_structrp png_ptr) -{ - /* We don't need any more data and the stream should have ended, however the - * LZ end code may actually not have been processed. In this case we must - * read it otherwise stray unread IDAT data or, more likely, an IDAT chunk - * may still remain to be consumed. - */ - if (!(png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED)) - { - /* The NULL causes png_read_IDAT_data to swallow any remaining bytes in - * the compressed stream, but the stream may be damaged too, so even after - * this call we may need to terminate the zstream ownership. - */ - png_read_IDAT_data(png_ptr, NULL, 0); - png_ptr->zstream.next_out = NULL; /* safety */ - - /* Now clear everything out for safety; the following may not have been - * done. - */ - if (!(png_ptr->flags & PNG_FLAG_ZSTREAM_ENDED)) - { - png_ptr->mode |= PNG_AFTER_IDAT; - png_ptr->flags |= PNG_FLAG_ZSTREAM_ENDED; - } - } - - /* If the zstream has not been released do it now *and* terminate the reading - * of the final IDAT chunk. - */ - if (png_ptr->zowner == png_IDAT) - { - /* Always do this; the pointers otherwise point into the read buffer. */ - png_ptr->zstream.next_in = NULL; - png_ptr->zstream.avail_in = 0; - - /* Now we no longer own the zstream. */ - png_ptr->zowner = 0; - - /* The slightly weird semantics of the sequential IDAT reading is that we - * are always in or at the end of an IDAT chunk, so we always need to do a - * crc_finish here. If idat_size is non-zero we also need to read the - * spurious bytes at the end of the chunk now. - */ - (void)png_crc_finish(png_ptr, png_ptr->idat_size); - } -} - -void /* PRIVATE */ -png_read_finish_row(png_structrp png_ptr) -{ -#ifdef PNG_READ_INTERLACING_SUPPORTED - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static PNG_CONST png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static PNG_CONST png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - - /* Start of interlace block in the y direction */ - static PNG_CONST png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; - - /* Offset to next interlace block in the y direction */ - static PNG_CONST png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; -#endif /* PNG_READ_INTERLACING_SUPPORTED */ - - png_debug(1, "in png_read_finish_row"); - png_ptr->row_number++; - if (png_ptr->row_number < png_ptr->num_rows) - return; - -#ifdef PNG_READ_INTERLACING_SUPPORTED - if (png_ptr->interlaced) - { - png_ptr->row_number = 0; - - /* TO DO: don't do this if prev_row isn't needed (requires - * read-ahead of the next row's filter byte. - */ - memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1); - - do - { - png_ptr->pass++; - - if (png_ptr->pass >= 7) - break; - - png_ptr->iwidth = (png_ptr->width + - png_pass_inc[png_ptr->pass] - 1 - - png_pass_start[png_ptr->pass]) / - png_pass_inc[png_ptr->pass]; - - if (!(png_ptr->transformations & PNG_INTERLACE)) - { - png_ptr->num_rows = (png_ptr->height + - png_pass_yinc[png_ptr->pass] - 1 - - png_pass_ystart[png_ptr->pass]) / - png_pass_yinc[png_ptr->pass]; - } - - else /* if (png_ptr->transformations & PNG_INTERLACE) */ - break; /* libpng deinterlacing sees every row */ - - } while (png_ptr->num_rows == 0 || png_ptr->iwidth == 0); - - if (png_ptr->pass < 7) - return; - } -#endif /* PNG_READ_INTERLACING_SUPPORTED */ - - /* Here after at the end of the last row of the last pass. */ - png_read_finish_IDAT(png_ptr); -} -#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */ - -void /* PRIVATE */ -png_read_start_row(png_structrp png_ptr) -{ -#ifdef PNG_READ_INTERLACING_SUPPORTED - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static PNG_CONST png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static PNG_CONST png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - - /* Start of interlace block in the y direction */ - static PNG_CONST png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; - - /* Offset to next interlace block in the y direction */ - static PNG_CONST png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; -#endif - - int max_pixel_depth; - png_size_t row_bytes; - - png_debug(1, "in png_read_start_row"); - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED - png_init_read_transformations(png_ptr); -#endif -#ifdef PNG_READ_INTERLACING_SUPPORTED - if (png_ptr->interlaced) - { - if (!(png_ptr->transformations & PNG_INTERLACE)) - png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 - - png_pass_ystart[0]) / png_pass_yinc[0]; - - else - png_ptr->num_rows = png_ptr->height; - - png_ptr->iwidth = (png_ptr->width + - png_pass_inc[png_ptr->pass] - 1 - - png_pass_start[png_ptr->pass]) / - png_pass_inc[png_ptr->pass]; - } - - else -#endif /* PNG_READ_INTERLACING_SUPPORTED */ - { - png_ptr->num_rows = png_ptr->height; - png_ptr->iwidth = png_ptr->width; - } - - max_pixel_depth = png_ptr->pixel_depth; - - /* WARNING: * png_read_transform_info (pngrtran.c) performs a simpliar set of - * calculations to calculate the final pixel depth, then - * png_do_read_transforms actually does the transforms. This means that the - * code which effectively calculates this value is actually repeated in three - * separate places. They must all match. Innocent changes to the order of - * transformations can and will break libpng in a way that causes memory - * overwrites. - * - * TODO: fix this. - */ -#ifdef PNG_READ_PACK_SUPPORTED - if ((png_ptr->transformations & PNG_PACK) && png_ptr->bit_depth < 8) - max_pixel_depth = 8; -#endif - -#ifdef PNG_READ_EXPAND_SUPPORTED - if (png_ptr->transformations & PNG_EXPAND) - { - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - if (png_ptr->num_trans) - max_pixel_depth = 32; - - else - max_pixel_depth = 24; - } - - else if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY) - { - if (max_pixel_depth < 8) - max_pixel_depth = 8; - - if (png_ptr->num_trans) - max_pixel_depth *= 2; - } - - else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB) - { - if (png_ptr->num_trans) - { - max_pixel_depth *= 4; - max_pixel_depth /= 3; - } - } - } -#endif - -#ifdef PNG_READ_EXPAND_16_SUPPORTED - if (png_ptr->transformations & PNG_EXPAND_16) - { -# ifdef PNG_READ_EXPAND_SUPPORTED - /* In fact it is an error if it isn't supported, but checking is - * the safe way. - */ - if (png_ptr->transformations & PNG_EXPAND) - { - if (png_ptr->bit_depth < 16) - max_pixel_depth *= 2; - } - else -# endif - png_ptr->transformations &= ~PNG_EXPAND_16; - } -#endif - -#ifdef PNG_READ_FILLER_SUPPORTED - if (png_ptr->transformations & (PNG_FILLER)) - { - if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY) - { - if (max_pixel_depth <= 8) - max_pixel_depth = 16; - - else - max_pixel_depth = 32; - } - - else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB || - png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - if (max_pixel_depth <= 32) - max_pixel_depth = 32; - - else - max_pixel_depth = 64; - } - } -#endif - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED - if (png_ptr->transformations & PNG_GRAY_TO_RGB) - { - if ( -#ifdef PNG_READ_EXPAND_SUPPORTED - (png_ptr->num_trans && (png_ptr->transformations & PNG_EXPAND)) || -#endif -#ifdef PNG_READ_FILLER_SUPPORTED - (png_ptr->transformations & (PNG_FILLER)) || -#endif - png_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - if (max_pixel_depth <= 16) - max_pixel_depth = 32; - - else - max_pixel_depth = 64; - } - - else - { - if (max_pixel_depth <= 8) - { - if (png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - max_pixel_depth = 32; - - else - max_pixel_depth = 24; - } - - else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - max_pixel_depth = 64; - - else - max_pixel_depth = 48; - } - } -#endif - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) && \ -defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) - if (png_ptr->transformations & PNG_USER_TRANSFORM) - { - int user_pixel_depth = png_ptr->user_transform_depth * - png_ptr->user_transform_channels; - - if (user_pixel_depth > max_pixel_depth) - max_pixel_depth = user_pixel_depth; - } -#endif - - /* This value is stored in png_struct and double checked in the row read - * code. - */ - png_ptr->maximum_pixel_depth = (png_byte)max_pixel_depth; - png_ptr->transformed_pixel_depth = 0; /* calculated on demand */ - - /* Align the width on the next larger 8 pixels. Mainly used - * for interlacing - */ - row_bytes = ((png_ptr->width + 7) & ~((png_uint_32)7)); - /* Calculate the maximum bytes needed, adding a byte and a pixel - * for safety's sake - */ - row_bytes = PNG_ROWBYTES(max_pixel_depth, row_bytes) + - 1 + ((max_pixel_depth + 7) >> 3); - -#ifdef PNG_MAX_MALLOC_64K - if (row_bytes > (png_uint_32)65536L) - png_error(png_ptr, "This image requires a row greater than 64KB"); -#endif - - if (row_bytes + 48 > png_ptr->old_big_row_buf_size) - { - png_free(png_ptr, png_ptr->big_row_buf); - png_free(png_ptr, png_ptr->big_prev_row); - - if (png_ptr->interlaced) - png_ptr->big_row_buf = (png_bytep)png_calloc(png_ptr, - row_bytes + 48); - - else - png_ptr->big_row_buf = (png_bytep)png_malloc(png_ptr, row_bytes + 48); - - png_ptr->big_prev_row = (png_bytep)png_malloc(png_ptr, row_bytes + 48); - -#ifdef PNG_ALIGNED_MEMORY_SUPPORTED - /* Use 16-byte aligned memory for row_buf with at least 16 bytes - * of padding before and after row_buf; treat prev_row similarly. - * NOTE: the alignment is to the start of the pixels, one beyond the start - * of the buffer, because of the filter byte. Prior to libpng 1.5.6 this - * was incorrect; the filter byte was aligned, which had the exact - * opposite effect of that intended. - */ - { - png_bytep temp = png_ptr->big_row_buf + 32; - int extra = (int)((temp - (png_bytep)0) & 0x0f); - png_ptr->row_buf = temp - extra - 1/*filter byte*/; - - temp = png_ptr->big_prev_row + 32; - extra = (int)((temp - (png_bytep)0) & 0x0f); - png_ptr->prev_row = temp - extra - 1/*filter byte*/; - } - -#else - /* Use 31 bytes of padding before and 17 bytes after row_buf. */ - png_ptr->row_buf = png_ptr->big_row_buf + 31; - png_ptr->prev_row = png_ptr->big_prev_row + 31; -#endif - png_ptr->old_big_row_buf_size = row_bytes + 48; - } - -#ifdef PNG_MAX_MALLOC_64K - if (png_ptr->rowbytes > 65535) - png_error(png_ptr, "This image requires a row greater than 64KB"); - -#endif - if (png_ptr->rowbytes > (PNG_SIZE_MAX - 1)) - png_error(png_ptr, "Row has too many bytes to allocate in memory"); - - memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1); - - png_debug1(3, "width = %u,", png_ptr->width); - png_debug1(3, "height = %u,", png_ptr->height); - png_debug1(3, "iwidth = %u,", png_ptr->iwidth); - png_debug1(3, "num_rows = %u,", png_ptr->num_rows); - png_debug1(3, "rowbytes = %lu,", (unsigned long)png_ptr->rowbytes); - png_debug1(3, "irowbytes = %lu", - (unsigned long)PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->iwidth) + 1); - - /* The sequential reader needs a buffer for IDAT, but the progressive reader - * does not, so free the read buffer now regardless; the sequential reader - * reallocates it on demand. - */ - if (png_ptr->read_buffer) - { - png_bytep buffer = png_ptr->read_buffer; - - png_ptr->read_buffer_size = 0; - png_ptr->read_buffer = NULL; - png_free(png_ptr, buffer); - } - - /* Finally claim the zstream for the inflate of the IDAT data, use the bits - * value from the stream (note that this will result in a fatal error if the - * IDAT stream has a bogus deflate header window_bits value, but this should - * not be happening any longer!) - */ - if (png_inflate_claim(png_ptr, png_IDAT) != Z_OK) - png_error(png_ptr, png_ptr->zstream.msg); - - png_ptr->flags |= PNG_FLAG_ROW_INIT; -} -#endif /* PNG_READ_SUPPORTED */ diff --git a/io2d/src/3rd-party/libpng/pngset.c b/io2d/src/3rd-party/libpng/pngset.c deleted file mode 100644 index 7e355d1..0000000 --- a/io2d/src/3rd-party/libpng/pngset.c +++ /dev/null @@ -1,1597 +0,0 @@ - -/* pngset.c - storage of image information into info struct - * - * Last changed in libpng 1.6.3 [July 18, 2013] - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * The functions here are used during reads to store data from the file - * into the info struct, and during writes to store application data - * into the info struct for writing into the file. This abstracts the - * info struct and allows us to change the structure in the future. - */ - -#include "pngpriv.h" - -#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) - -#ifdef PNG_bKGD_SUPPORTED -void PNGAPI -png_set_bKGD(png_const_structrp png_ptr, png_inforp info_ptr, - png_const_color_16p background) -{ - png_debug1(1, "in %s storage function", "bKGD"); - - if (png_ptr == NULL || info_ptr == NULL || background == NULL) - return; - - info_ptr->background = *background; - info_ptr->valid |= PNG_INFO_bKGD; -} -#endif - -#ifdef PNG_cHRM_SUPPORTED -void PNGFAPI -png_set_cHRM_fixed(png_const_structrp png_ptr, png_inforp info_ptr, - png_fixed_point white_x, png_fixed_point white_y, png_fixed_point red_x, - png_fixed_point red_y, png_fixed_point green_x, png_fixed_point green_y, - png_fixed_point blue_x, png_fixed_point blue_y) -{ - png_xy xy; - - png_debug1(1, "in %s storage function", "cHRM fixed"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - xy.redx = red_x; - xy.redy = red_y; - xy.greenx = green_x; - xy.greeny = green_y; - xy.bluex = blue_x; - xy.bluey = blue_y; - xy.whitex = white_x; - xy.whitey = white_y; - - if (png_colorspace_set_chromaticities(png_ptr, &info_ptr->colorspace, &xy, - 2/* override with app values*/)) - info_ptr->colorspace.flags |= PNG_COLORSPACE_FROM_cHRM; - - png_colorspace_sync_info(png_ptr, info_ptr); -} - -void PNGFAPI -png_set_cHRM_XYZ_fixed(png_const_structrp png_ptr, png_inforp info_ptr, - png_fixed_point int_red_X, png_fixed_point int_red_Y, - png_fixed_point int_red_Z, png_fixed_point int_green_X, - png_fixed_point int_green_Y, png_fixed_point int_green_Z, - png_fixed_point int_blue_X, png_fixed_point int_blue_Y, - png_fixed_point int_blue_Z) -{ - png_XYZ XYZ; - - png_debug1(1, "in %s storage function", "cHRM XYZ fixed"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - XYZ.red_X = int_red_X; - XYZ.red_Y = int_red_Y; - XYZ.red_Z = int_red_Z; - XYZ.green_X = int_green_X; - XYZ.green_Y = int_green_Y; - XYZ.green_Z = int_green_Z; - XYZ.blue_X = int_blue_X; - XYZ.blue_Y = int_blue_Y; - XYZ.blue_Z = int_blue_Z; - - if (png_colorspace_set_endpoints(png_ptr, &info_ptr->colorspace, &XYZ, 2)) - info_ptr->colorspace.flags |= PNG_COLORSPACE_FROM_cHRM; - - png_colorspace_sync_info(png_ptr, info_ptr); -} - -# ifdef PNG_FLOATING_POINT_SUPPORTED -void PNGAPI -png_set_cHRM(png_const_structrp png_ptr, png_inforp info_ptr, - double white_x, double white_y, double red_x, double red_y, - double green_x, double green_y, double blue_x, double blue_y) -{ - png_set_cHRM_fixed(png_ptr, info_ptr, - png_fixed(png_ptr, white_x, "cHRM White X"), - png_fixed(png_ptr, white_y, "cHRM White Y"), - png_fixed(png_ptr, red_x, "cHRM Red X"), - png_fixed(png_ptr, red_y, "cHRM Red Y"), - png_fixed(png_ptr, green_x, "cHRM Green X"), - png_fixed(png_ptr, green_y, "cHRM Green Y"), - png_fixed(png_ptr, blue_x, "cHRM Blue X"), - png_fixed(png_ptr, blue_y, "cHRM Blue Y")); -} - -void PNGAPI -png_set_cHRM_XYZ(png_const_structrp png_ptr, png_inforp info_ptr, double red_X, - double red_Y, double red_Z, double green_X, double green_Y, double green_Z, - double blue_X, double blue_Y, double blue_Z) -{ - png_set_cHRM_XYZ_fixed(png_ptr, info_ptr, - png_fixed(png_ptr, red_X, "cHRM Red X"), - png_fixed(png_ptr, red_Y, "cHRM Red Y"), - png_fixed(png_ptr, red_Z, "cHRM Red Z"), - png_fixed(png_ptr, green_X, "cHRM Red X"), - png_fixed(png_ptr, green_Y, "cHRM Red Y"), - png_fixed(png_ptr, green_Z, "cHRM Red Z"), - png_fixed(png_ptr, blue_X, "cHRM Red X"), - png_fixed(png_ptr, blue_Y, "cHRM Red Y"), - png_fixed(png_ptr, blue_Z, "cHRM Red Z")); -} -# endif /* PNG_FLOATING_POINT_SUPPORTED */ - -#endif /* PNG_cHRM_SUPPORTED */ - -#ifdef PNG_gAMA_SUPPORTED -void PNGFAPI -png_set_gAMA_fixed(png_const_structrp png_ptr, png_inforp info_ptr, - png_fixed_point file_gamma) -{ - png_debug1(1, "in %s storage function", "gAMA"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - png_colorspace_set_gamma(png_ptr, &info_ptr->colorspace, file_gamma); - png_colorspace_sync_info(png_ptr, info_ptr); -} - -# ifdef PNG_FLOATING_POINT_SUPPORTED -void PNGAPI -png_set_gAMA(png_const_structrp png_ptr, png_inforp info_ptr, double file_gamma) -{ - png_set_gAMA_fixed(png_ptr, info_ptr, png_fixed(png_ptr, file_gamma, - "png_set_gAMA")); -} -# endif -#endif - -#ifdef PNG_hIST_SUPPORTED -void PNGAPI -png_set_hIST(png_const_structrp png_ptr, png_inforp info_ptr, - png_const_uint_16p hist) -{ - int i; - - png_debug1(1, "in %s storage function", "hIST"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - if (info_ptr->num_palette == 0 || info_ptr->num_palette - > PNG_MAX_PALETTE_LENGTH) - { - png_warning(png_ptr, - "Invalid palette size, hIST allocation skipped"); - - return; - } - - png_free_data(png_ptr, info_ptr, PNG_FREE_HIST, 0); - - /* Changed from info->num_palette to PNG_MAX_PALETTE_LENGTH in - * version 1.2.1 - */ - info_ptr->hist = png_voidcast(png_uint_16p, png_malloc_warn(png_ptr, - PNG_MAX_PALETTE_LENGTH * (sizeof (png_uint_16)))); - - if (info_ptr->hist == NULL) - { - png_warning(png_ptr, "Insufficient memory for hIST chunk data"); - return; - } - - info_ptr->free_me |= PNG_FREE_HIST; - - for (i = 0; i < info_ptr->num_palette; i++) - info_ptr->hist[i] = hist[i]; - - info_ptr->valid |= PNG_INFO_hIST; -} -#endif - -void PNGAPI -png_set_IHDR(png_const_structrp png_ptr, png_inforp info_ptr, - png_uint_32 width, png_uint_32 height, int bit_depth, - int color_type, int interlace_type, int compression_type, - int filter_type) -{ - png_debug1(1, "in %s storage function", "IHDR"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - info_ptr->width = width; - info_ptr->height = height; - info_ptr->bit_depth = (png_byte)bit_depth; - info_ptr->color_type = (png_byte)color_type; - info_ptr->compression_type = (png_byte)compression_type; - info_ptr->filter_type = (png_byte)filter_type; - info_ptr->interlace_type = (png_byte)interlace_type; - - png_check_IHDR (png_ptr, info_ptr->width, info_ptr->height, - info_ptr->bit_depth, info_ptr->color_type, info_ptr->interlace_type, - info_ptr->compression_type, info_ptr->filter_type); - - if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - info_ptr->channels = 1; - - else if (info_ptr->color_type & PNG_COLOR_MASK_COLOR) - info_ptr->channels = 3; - - else - info_ptr->channels = 1; - - if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA) - info_ptr->channels++; - - info_ptr->pixel_depth = (png_byte)(info_ptr->channels * info_ptr->bit_depth); - - info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, width); -} - -#ifdef PNG_oFFs_SUPPORTED -void PNGAPI -png_set_oFFs(png_const_structrp png_ptr, png_inforp info_ptr, - png_int_32 offset_x, png_int_32 offset_y, int unit_type) -{ - png_debug1(1, "in %s storage function", "oFFs"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - info_ptr->x_offset = offset_x; - info_ptr->y_offset = offset_y; - info_ptr->offset_unit_type = (png_byte)unit_type; - info_ptr->valid |= PNG_INFO_oFFs; -} -#endif - -#ifdef PNG_pCAL_SUPPORTED -void PNGAPI -png_set_pCAL(png_const_structrp png_ptr, png_inforp info_ptr, - png_const_charp purpose, png_int_32 X0, png_int_32 X1, int type, - int nparams, png_const_charp units, png_charpp params) -{ - png_size_t length; - int i; - - png_debug1(1, "in %s storage function", "pCAL"); - - if (png_ptr == NULL || info_ptr == NULL || purpose == NULL || units == NULL - || (nparams > 0 && params == NULL)) - return; - - length = strlen(purpose) + 1; - png_debug1(3, "allocating purpose for info (%lu bytes)", - (unsigned long)length); - - /* TODO: validate format of calibration name and unit name */ - - /* Check that the type matches the specification. */ - if (type < 0 || type > 3) - png_error(png_ptr, "Invalid pCAL equation type"); - - if (nparams < 0 || nparams > 255) - png_error(png_ptr, "Invalid pCAL parameter count"); - - /* Validate params[nparams] */ - for (i=0; ipcal_purpose = png_voidcast(png_charp, - png_malloc_warn(png_ptr, length)); - - if (info_ptr->pcal_purpose == NULL) - { - png_warning(png_ptr, "Insufficient memory for pCAL purpose"); - return; - } - - memcpy(info_ptr->pcal_purpose, purpose, length); - - png_debug(3, "storing X0, X1, type, and nparams in info"); - info_ptr->pcal_X0 = X0; - info_ptr->pcal_X1 = X1; - info_ptr->pcal_type = (png_byte)type; - info_ptr->pcal_nparams = (png_byte)nparams; - - length = strlen(units) + 1; - png_debug1(3, "allocating units for info (%lu bytes)", - (unsigned long)length); - - info_ptr->pcal_units = png_voidcast(png_charp, - png_malloc_warn(png_ptr, length)); - - if (info_ptr->pcal_units == NULL) - { - png_warning(png_ptr, "Insufficient memory for pCAL units"); - return; - } - - memcpy(info_ptr->pcal_units, units, length); - - info_ptr->pcal_params = png_voidcast(png_charpp, png_malloc_warn(png_ptr, - (png_size_t)((nparams + 1) * (sizeof (png_charp))))); - - if (info_ptr->pcal_params == NULL) - { - png_warning(png_ptr, "Insufficient memory for pCAL params"); - return; - } - - memset(info_ptr->pcal_params, 0, (nparams + 1) * (sizeof (png_charp))); - - for (i = 0; i < nparams; i++) - { - length = strlen(params[i]) + 1; - png_debug2(3, "allocating parameter %d for info (%lu bytes)", i, - (unsigned long)length); - - info_ptr->pcal_params[i] = (png_charp)png_malloc_warn(png_ptr, length); - - if (info_ptr->pcal_params[i] == NULL) - { - png_warning(png_ptr, "Insufficient memory for pCAL parameter"); - return; - } - - memcpy(info_ptr->pcal_params[i], params[i], length); - } - - info_ptr->valid |= PNG_INFO_pCAL; - info_ptr->free_me |= PNG_FREE_PCAL; -} -#endif - -#ifdef PNG_sCAL_SUPPORTED -void PNGAPI -png_set_sCAL_s(png_const_structrp png_ptr, png_inforp info_ptr, - int unit, png_const_charp swidth, png_const_charp sheight) -{ - png_size_t lengthw = 0, lengthh = 0; - - png_debug1(1, "in %s storage function", "sCAL"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - /* Double check the unit (should never get here with an invalid - * unit unless this is an API call.) - */ - if (unit != 1 && unit != 2) - png_error(png_ptr, "Invalid sCAL unit"); - - if (swidth == NULL || (lengthw = strlen(swidth)) == 0 || - swidth[0] == 45 /* '-' */ || !png_check_fp_string(swidth, lengthw)) - png_error(png_ptr, "Invalid sCAL width"); - - if (sheight == NULL || (lengthh = strlen(sheight)) == 0 || - sheight[0] == 45 /* '-' */ || !png_check_fp_string(sheight, lengthh)) - png_error(png_ptr, "Invalid sCAL height"); - - info_ptr->scal_unit = (png_byte)unit; - - ++lengthw; - - png_debug1(3, "allocating unit for info (%u bytes)", (unsigned int)lengthw); - - info_ptr->scal_s_width = png_voidcast(png_charp, - png_malloc_warn(png_ptr, lengthw)); - - if (info_ptr->scal_s_width == NULL) - { - png_warning(png_ptr, "Memory allocation failed while processing sCAL"); - return; - } - - memcpy(info_ptr->scal_s_width, swidth, lengthw); - - ++lengthh; - - png_debug1(3, "allocating unit for info (%u bytes)", (unsigned int)lengthh); - - info_ptr->scal_s_height = png_voidcast(png_charp, - png_malloc_warn(png_ptr, lengthh)); - - if (info_ptr->scal_s_height == NULL) - { - png_free (png_ptr, info_ptr->scal_s_width); - info_ptr->scal_s_width = NULL; - - png_warning(png_ptr, "Memory allocation failed while processing sCAL"); - return; - } - - memcpy(info_ptr->scal_s_height, sheight, lengthh); - - info_ptr->valid |= PNG_INFO_sCAL; - info_ptr->free_me |= PNG_FREE_SCAL; -} - -# ifdef PNG_FLOATING_POINT_SUPPORTED -void PNGAPI -png_set_sCAL(png_const_structrp png_ptr, png_inforp info_ptr, int unit, - double width, double height) -{ - png_debug1(1, "in %s storage function", "sCAL"); - - /* Check the arguments. */ - if (width <= 0) - png_warning(png_ptr, "Invalid sCAL width ignored"); - - else if (height <= 0) - png_warning(png_ptr, "Invalid sCAL height ignored"); - - else - { - /* Convert 'width' and 'height' to ASCII. */ - char swidth[PNG_sCAL_MAX_DIGITS+1]; - char sheight[PNG_sCAL_MAX_DIGITS+1]; - - png_ascii_from_fp(png_ptr, swidth, (sizeof swidth), width, - PNG_sCAL_PRECISION); - png_ascii_from_fp(png_ptr, sheight, (sizeof sheight), height, - PNG_sCAL_PRECISION); - - png_set_sCAL_s(png_ptr, info_ptr, unit, swidth, sheight); - } -} -# endif - -# ifdef PNG_FIXED_POINT_SUPPORTED -void PNGAPI -png_set_sCAL_fixed(png_const_structrp png_ptr, png_inforp info_ptr, int unit, - png_fixed_point width, png_fixed_point height) -{ - png_debug1(1, "in %s storage function", "sCAL"); - - /* Check the arguments. */ - if (width <= 0) - png_warning(png_ptr, "Invalid sCAL width ignored"); - - else if (height <= 0) - png_warning(png_ptr, "Invalid sCAL height ignored"); - - else - { - /* Convert 'width' and 'height' to ASCII. */ - char swidth[PNG_sCAL_MAX_DIGITS+1]; - char sheight[PNG_sCAL_MAX_DIGITS+1]; - - png_ascii_from_fixed(png_ptr, swidth, (sizeof swidth), width); - png_ascii_from_fixed(png_ptr, sheight, (sizeof sheight), height); - - png_set_sCAL_s(png_ptr, info_ptr, unit, swidth, sheight); - } -} -# endif -#endif - -#ifdef PNG_pHYs_SUPPORTED -void PNGAPI -png_set_pHYs(png_const_structrp png_ptr, png_inforp info_ptr, - png_uint_32 res_x, png_uint_32 res_y, int unit_type) -{ - png_debug1(1, "in %s storage function", "pHYs"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - info_ptr->x_pixels_per_unit = res_x; - info_ptr->y_pixels_per_unit = res_y; - info_ptr->phys_unit_type = (png_byte)unit_type; - info_ptr->valid |= PNG_INFO_pHYs; -} -#endif - -void PNGAPI -png_set_PLTE(png_structrp png_ptr, png_inforp info_ptr, - png_const_colorp palette, int num_palette) -{ - - png_debug1(1, "in %s storage function", "PLTE"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - if (num_palette < 0 || num_palette > PNG_MAX_PALETTE_LENGTH) - { - if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - png_error(png_ptr, "Invalid palette length"); - - else - { - png_warning(png_ptr, "Invalid palette length"); - return; - } - } - - if ((num_palette > 0 && palette == NULL) || - (num_palette == 0 -# ifdef PNG_MNG_FEATURES_SUPPORTED - && (png_ptr->mng_features_permitted & PNG_FLAG_MNG_EMPTY_PLTE) == 0 -# endif - )) - { - png_chunk_report(png_ptr, "Invalid palette", PNG_CHUNK_ERROR); - return; - } - - /* It may not actually be necessary to set png_ptr->palette here; - * we do it for backward compatibility with the way the png_handle_tRNS - * function used to do the allocation. - * - * 1.6.0: the above statement appears to be incorrect; something has to set - * the palette inside png_struct on read. - */ - png_free_data(png_ptr, info_ptr, PNG_FREE_PLTE, 0); - - /* Changed in libpng-1.2.1 to allocate PNG_MAX_PALETTE_LENGTH instead - * of num_palette entries, in case of an invalid PNG file that has - * too-large sample values. - */ - png_ptr->palette = png_voidcast(png_colorp, png_calloc(png_ptr, - PNG_MAX_PALETTE_LENGTH * (sizeof (png_color)))); - - if (num_palette > 0) - memcpy(png_ptr->palette, palette, num_palette * (sizeof (png_color))); - info_ptr->palette = png_ptr->palette; - info_ptr->num_palette = png_ptr->num_palette = (png_uint_16)num_palette; - - info_ptr->free_me |= PNG_FREE_PLTE; - - info_ptr->valid |= PNG_INFO_PLTE; -} - -#ifdef PNG_sBIT_SUPPORTED -void PNGAPI -png_set_sBIT(png_const_structrp png_ptr, png_inforp info_ptr, - png_const_color_8p sig_bit) -{ - png_debug1(1, "in %s storage function", "sBIT"); - - if (png_ptr == NULL || info_ptr == NULL || sig_bit == NULL) - return; - - info_ptr->sig_bit = *sig_bit; - info_ptr->valid |= PNG_INFO_sBIT; -} -#endif - -#ifdef PNG_sRGB_SUPPORTED -void PNGAPI -png_set_sRGB(png_const_structrp png_ptr, png_inforp info_ptr, int srgb_intent) -{ - png_debug1(1, "in %s storage function", "sRGB"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - (void)png_colorspace_set_sRGB(png_ptr, &info_ptr->colorspace, srgb_intent); - png_colorspace_sync_info(png_ptr, info_ptr); -} - -void PNGAPI -png_set_sRGB_gAMA_and_cHRM(png_const_structrp png_ptr, png_inforp info_ptr, - int srgb_intent) -{ - png_debug1(1, "in %s storage function", "sRGB_gAMA_and_cHRM"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - if (png_colorspace_set_sRGB(png_ptr, &info_ptr->colorspace, srgb_intent)) - { - /* This causes the gAMA and cHRM to be written too */ - info_ptr->colorspace.flags |= - PNG_COLORSPACE_FROM_gAMA|PNG_COLORSPACE_FROM_cHRM; - } - - png_colorspace_sync_info(png_ptr, info_ptr); -} -#endif /* sRGB */ - - -#ifdef PNG_iCCP_SUPPORTED -void PNGAPI -png_set_iCCP(png_const_structrp png_ptr, png_inforp info_ptr, - png_const_charp name, int compression_type, - png_const_bytep profile, png_uint_32 proflen) -{ - png_charp new_iccp_name; - png_bytep new_iccp_profile; - png_size_t length; - - png_debug1(1, "in %s storage function", "iCCP"); - - if (png_ptr == NULL || info_ptr == NULL || name == NULL || profile == NULL) - return; - - if (compression_type != PNG_COMPRESSION_TYPE_BASE) - png_app_error(png_ptr, "Invalid iCCP compression method"); - - /* Set the colorspace first because this validates the profile; do not - * override previously set app cHRM or gAMA here (because likely as not the - * application knows better than libpng what the correct values are.) Pass - * the info_ptr color_type field to png_colorspace_set_ICC because in the - * write case it has not yet been stored in png_ptr. - */ - { - int result = png_colorspace_set_ICC(png_ptr, &info_ptr->colorspace, name, - proflen, profile, info_ptr->color_type); - - png_colorspace_sync_info(png_ptr, info_ptr); - - /* Don't do any of the copying if the profile was bad, or inconsistent. */ - if (!result) - return; - - /* But do write the gAMA and cHRM chunks from the profile. */ - info_ptr->colorspace.flags |= - PNG_COLORSPACE_FROM_gAMA|PNG_COLORSPACE_FROM_cHRM; - } - - length = strlen(name)+1; - new_iccp_name = png_voidcast(png_charp, png_malloc_warn(png_ptr, length)); - - if (new_iccp_name == NULL) - { - png_benign_error(png_ptr, "Insufficient memory to process iCCP chunk"); - return; - } - - memcpy(new_iccp_name, name, length); - new_iccp_profile = png_voidcast(png_bytep, - png_malloc_warn(png_ptr, proflen)); - - if (new_iccp_profile == NULL) - { - png_free(png_ptr, new_iccp_name); - png_benign_error(png_ptr, - "Insufficient memory to process iCCP profile"); - return; - } - - memcpy(new_iccp_profile, profile, proflen); - - png_free_data(png_ptr, info_ptr, PNG_FREE_ICCP, 0); - - info_ptr->iccp_proflen = proflen; - info_ptr->iccp_name = new_iccp_name; - info_ptr->iccp_profile = new_iccp_profile; - info_ptr->free_me |= PNG_FREE_ICCP; - info_ptr->valid |= PNG_INFO_iCCP; -} -#endif - -#ifdef PNG_TEXT_SUPPORTED -void PNGAPI -png_set_text(png_const_structrp png_ptr, png_inforp info_ptr, - png_const_textp text_ptr, int num_text) -{ - int ret; - ret = png_set_text_2(png_ptr, info_ptr, text_ptr, num_text); - - if (ret) - png_error(png_ptr, "Insufficient memory to store text"); -} - -int /* PRIVATE */ -png_set_text_2(png_const_structrp png_ptr, png_inforp info_ptr, - png_const_textp text_ptr, int num_text) -{ - int i; - - png_debug1(1, "in %lx storage function", png_ptr == NULL ? "unexpected" : - (unsigned long)png_ptr->chunk_name); - - if (png_ptr == NULL || info_ptr == NULL || num_text <= 0 || text_ptr == NULL) - return(0); - - /* Make sure we have enough space in the "text" array in info_struct - * to hold all of the incoming text_ptr objects. This compare can't overflow - * because max_text >= num_text (anyway, subtract of two positive integers - * can't overflow in any case.) - */ - if (num_text > info_ptr->max_text - info_ptr->num_text) - { - int old_num_text = info_ptr->num_text; - int max_text; - png_textp new_text = NULL; - - /* Calculate an appropriate max_text, checking for overflow. */ - max_text = old_num_text; - if (num_text <= INT_MAX - max_text) - { - max_text += num_text; - - /* Round up to a multiple of 8 */ - if (max_text < INT_MAX-8) - max_text = (max_text + 8) & ~0x7; - - else - max_text = INT_MAX; - - /* Now allocate a new array and copy the old members in, this does all - * the overflow checks. - */ - new_text = png_voidcast(png_textp,png_realloc_array(png_ptr, - info_ptr->text, old_num_text, max_text-old_num_text, - sizeof *new_text)); - } - - if (new_text == NULL) - { - png_chunk_report(png_ptr, "too many text chunks", - PNG_CHUNK_WRITE_ERROR); - return 1; - } - - png_free(png_ptr, info_ptr->text); - - info_ptr->text = new_text; - info_ptr->free_me |= PNG_FREE_TEXT; - info_ptr->max_text = max_text; - /* num_text is adjusted below as the entries are copied in */ - - png_debug1(3, "allocated %d entries for info_ptr->text", max_text); - } - - for (i = 0; i < num_text; i++) - { - size_t text_length, key_len; - size_t lang_len, lang_key_len; - png_textp textp = &(info_ptr->text[info_ptr->num_text]); - - if (text_ptr[i].key == NULL) - continue; - - if (text_ptr[i].compression < PNG_TEXT_COMPRESSION_NONE || - text_ptr[i].compression >= PNG_TEXT_COMPRESSION_LAST) - { - png_chunk_report(png_ptr, "text compression mode is out of range", - PNG_CHUNK_WRITE_ERROR); - continue; - } - - key_len = strlen(text_ptr[i].key); - - if (text_ptr[i].compression <= 0) - { - lang_len = 0; - lang_key_len = 0; - } - - else -# ifdef PNG_iTXt_SUPPORTED - { - /* Set iTXt data */ - - if (text_ptr[i].lang != NULL) - lang_len = strlen(text_ptr[i].lang); - - else - lang_len = 0; - - if (text_ptr[i].lang_key != NULL) - lang_key_len = strlen(text_ptr[i].lang_key); - - else - lang_key_len = 0; - } -# else /* PNG_iTXt_SUPPORTED */ - { - png_chunk_report(png_ptr, "iTXt chunk not supported", - PNG_CHUNK_WRITE_ERROR); - continue; - } -# endif - - if (text_ptr[i].text == NULL || text_ptr[i].text[0] == '\0') - { - text_length = 0; -# ifdef PNG_iTXt_SUPPORTED - if (text_ptr[i].compression > 0) - textp->compression = PNG_ITXT_COMPRESSION_NONE; - - else -# endif - textp->compression = PNG_TEXT_COMPRESSION_NONE; - } - - else - { - text_length = strlen(text_ptr[i].text); - textp->compression = text_ptr[i].compression; - } - - textp->key = png_voidcast(png_charp,png_malloc_base(png_ptr, - key_len + text_length + lang_len + lang_key_len + 4)); - - if (textp->key == NULL) - { - png_chunk_report(png_ptr, "text chunk: out of memory", - PNG_CHUNK_WRITE_ERROR); - return 1; - } - - png_debug2(2, "Allocated %lu bytes at %p in png_set_text", - (unsigned long)(png_uint_32) - (key_len + lang_len + lang_key_len + text_length + 4), - textp->key); - - memcpy(textp->key, text_ptr[i].key, key_len); - *(textp->key + key_len) = '\0'; - - if (text_ptr[i].compression > 0) - { - textp->lang = textp->key + key_len + 1; - memcpy(textp->lang, text_ptr[i].lang, lang_len); - *(textp->lang + lang_len) = '\0'; - textp->lang_key = textp->lang + lang_len + 1; - memcpy(textp->lang_key, text_ptr[i].lang_key, lang_key_len); - *(textp->lang_key + lang_key_len) = '\0'; - textp->text = textp->lang_key + lang_key_len + 1; - } - - else - { - textp->lang=NULL; - textp->lang_key=NULL; - textp->text = textp->key + key_len + 1; - } - - if (text_length) - memcpy(textp->text, text_ptr[i].text, text_length); - - *(textp->text + text_length) = '\0'; - -# ifdef PNG_iTXt_SUPPORTED - if (textp->compression > 0) - { - textp->text_length = 0; - textp->itxt_length = text_length; - } - - else -# endif - { - textp->text_length = text_length; - textp->itxt_length = 0; - } - - info_ptr->num_text++; - png_debug1(3, "transferred text chunk %d", info_ptr->num_text); - } - - return(0); -} -#endif - -#ifdef PNG_tIME_SUPPORTED -void PNGAPI -png_set_tIME(png_const_structrp png_ptr, png_inforp info_ptr, - png_const_timep mod_time) -{ - png_debug1(1, "in %s storage function", "tIME"); - - if (png_ptr == NULL || info_ptr == NULL || mod_time == NULL || - (png_ptr->mode & PNG_WROTE_tIME)) - return; - - if (mod_time->month == 0 || mod_time->month > 12 || - mod_time->day == 0 || mod_time->day > 31 || - mod_time->hour > 23 || mod_time->minute > 59 || - mod_time->second > 60) - { - png_warning(png_ptr, "Ignoring invalid time value"); - return; - } - - info_ptr->mod_time = *mod_time; - info_ptr->valid |= PNG_INFO_tIME; -} -#endif - -#ifdef PNG_tRNS_SUPPORTED -void PNGAPI -png_set_tRNS(png_structrp png_ptr, png_inforp info_ptr, - png_const_bytep trans_alpha, int num_trans, png_const_color_16p trans_color) -{ - png_debug1(1, "in %s storage function", "tRNS"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - if (trans_alpha != NULL) - { - /* It may not actually be necessary to set png_ptr->trans_alpha here; - * we do it for backward compatibility with the way the png_handle_tRNS - * function used to do the allocation. - * - * 1.6.0: The above statement is incorrect; png_handle_tRNS effectively - * relies on png_set_tRNS storing the information in png_struct - * (otherwise it won't be there for the code in pngrtran.c). - */ - - png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0); - - /* Changed from num_trans to PNG_MAX_PALETTE_LENGTH in version 1.2.1 */ - png_ptr->trans_alpha = info_ptr->trans_alpha = png_voidcast(png_bytep, - png_malloc(png_ptr, PNG_MAX_PALETTE_LENGTH)); - - if (num_trans > 0 && num_trans <= PNG_MAX_PALETTE_LENGTH) - memcpy(info_ptr->trans_alpha, trans_alpha, (png_size_t)num_trans); - } - - if (trans_color != NULL) - { - int sample_max = (1 << info_ptr->bit_depth); - - if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY && - trans_color->gray > sample_max) || - (info_ptr->color_type == PNG_COLOR_TYPE_RGB && - (trans_color->red > sample_max || - trans_color->green > sample_max || - trans_color->blue > sample_max))) - png_warning(png_ptr, - "tRNS chunk has out-of-range samples for bit_depth"); - - info_ptr->trans_color = *trans_color; - - if (num_trans == 0) - num_trans = 1; - } - - info_ptr->num_trans = (png_uint_16)num_trans; - - if (num_trans != 0) - { - info_ptr->valid |= PNG_INFO_tRNS; - info_ptr->free_me |= PNG_FREE_TRNS; - } -} -#endif - -#ifdef PNG_sPLT_SUPPORTED -void PNGAPI -png_set_sPLT(png_const_structrp png_ptr, - png_inforp info_ptr, png_const_sPLT_tp entries, int nentries) -/* - * entries - array of png_sPLT_t structures - * to be added to the list of palettes - * in the info structure. - * - * nentries - number of palette structures to be - * added. - */ -{ - png_sPLT_tp np; - - if (png_ptr == NULL || info_ptr == NULL || nentries <= 0 || entries == NULL) - return; - - /* Use the internal realloc function, which checks for all the possible - * overflows. Notice that the parameters are (int) and (size_t) - */ - np = png_voidcast(png_sPLT_tp,png_realloc_array(png_ptr, - info_ptr->splt_palettes, info_ptr->splt_palettes_num, nentries, - sizeof *np)); - - if (np == NULL) - { - /* Out of memory or too many chunks */ - png_chunk_report(png_ptr, "too many sPLT chunks", PNG_CHUNK_WRITE_ERROR); - return; - } - - png_free(png_ptr, info_ptr->splt_palettes); - info_ptr->splt_palettes = np; - info_ptr->free_me |= PNG_FREE_SPLT; - - np += info_ptr->splt_palettes_num; - - do - { - png_size_t length; - - /* Skip invalid input entries */ - if (entries->name == NULL || entries->entries == NULL) - { - /* png_handle_sPLT doesn't do this, so this is an app error */ - png_app_error(png_ptr, "png_set_sPLT: invalid sPLT"); - /* Just skip the invalid entry */ - continue; - } - - np->depth = entries->depth; - - /* In the even of out-of-memory just return - there's no point keeping on - * trying to add sPLT chunks. - */ - length = strlen(entries->name) + 1; - np->name = png_voidcast(png_charp, png_malloc_base(png_ptr, length)); - - if (np->name == NULL) - break; - - memcpy(np->name, entries->name, length); - - /* IMPORTANT: we have memory now that won't get freed if something else - * goes wrong, this code must free it. png_malloc_array produces no - * warnings, use a png_chunk_report (below) if there is an error. - */ - np->entries = png_voidcast(png_sPLT_entryp, png_malloc_array(png_ptr, - entries->nentries, sizeof (png_sPLT_entry))); - - if (np->entries == NULL) - { - png_free(png_ptr, np->name); - break; - } - - np->nentries = entries->nentries; - /* This multiply can't overflow because png_malloc_array has already - * checked it when doing the allocation. - */ - memcpy(np->entries, entries->entries, - entries->nentries * sizeof (png_sPLT_entry)); - - /* Note that 'continue' skips the advance of the out pointer and out - * count, so an invalid entry is not added. - */ - info_ptr->valid |= PNG_INFO_sPLT; - ++(info_ptr->splt_palettes_num); - ++np; - } - while (++entries, --nentries); - - if (nentries > 0) - png_chunk_report(png_ptr, "sPLT out of memory", PNG_CHUNK_WRITE_ERROR); -} -#endif /* PNG_sPLT_SUPPORTED */ - -#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -static png_byte -check_location(png_const_structrp png_ptr, int location) -{ - location &= (PNG_HAVE_IHDR|PNG_HAVE_PLTE|PNG_AFTER_IDAT); - - /* New in 1.6.0; copy the location and check it. This is an API - * change, previously the app had to use the - * png_set_unknown_chunk_location API below for each chunk. - */ - if (location == 0 && !(png_ptr->mode & PNG_IS_READ_STRUCT)) - { - /* Write struct, so unknown chunks come from the app */ - png_app_warning(png_ptr, - "png_set_unknown_chunks now expects a valid location"); - /* Use the old behavior */ - location = (png_byte)(png_ptr->mode & - (PNG_HAVE_IHDR|PNG_HAVE_PLTE|PNG_AFTER_IDAT)); - } - - /* This need not be an internal error - if the app calls - * png_set_unknown_chunks on a read pointer it must get the location right. - */ - if (location == 0) - png_error(png_ptr, "invalid location in png_set_unknown_chunks"); - - /* Now reduce the location to the top-most set bit by removing each least - * significant bit in turn. - */ - while (location != (location & -location)) - location &= ~(location & -location); - - /* The cast is safe because 'location' is a bit mask and only the low four - * bits are significant. - */ - return (png_byte)location; -} - -void PNGAPI -png_set_unknown_chunks(png_const_structrp png_ptr, - png_inforp info_ptr, png_const_unknown_chunkp unknowns, int num_unknowns) -{ - png_unknown_chunkp np; - - if (png_ptr == NULL || info_ptr == NULL || num_unknowns <= 0 || - unknowns == NULL) - return; - - /* Check for the failure cases where support has been disabled at compile - * time. This code is hardly ever compiled - it's here because - * STORE_UNKNOWN_CHUNKS is set by both read and write code (compiling in this - * code) but may be meaningless if the read or write handling of unknown - * chunks is not compiled in. - */ -# if !defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) && \ - defined(PNG_READ_SUPPORTED) - if (png_ptr->mode & PNG_IS_READ_STRUCT) - { - png_app_error(png_ptr, "no unknown chunk support on read"); - return; - } -# endif -# if !defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED) && \ - defined(PNG_WRITE_SUPPORTED) - if (!(png_ptr->mode & PNG_IS_READ_STRUCT)) - { - png_app_error(png_ptr, "no unknown chunk support on write"); - return; - } -# endif - - /* Prior to 1.6.0 this code used png_malloc_warn; however, this meant that - * unknown critical chunks could be lost with just a warning resulting in - * undefined behavior. Now png_chunk_report is used to provide behavior - * appropriate to read or write. - */ - np = png_voidcast(png_unknown_chunkp, png_realloc_array(png_ptr, - info_ptr->unknown_chunks, info_ptr->unknown_chunks_num, num_unknowns, - sizeof *np)); - - if (np == NULL) - { - png_chunk_report(png_ptr, "too many unknown chunks", - PNG_CHUNK_WRITE_ERROR); - return; - } - - png_free(png_ptr, info_ptr->unknown_chunks); - info_ptr->unknown_chunks = np; /* safe because it is initialized */ - info_ptr->free_me |= PNG_FREE_UNKN; - - np += info_ptr->unknown_chunks_num; - - /* Increment unknown_chunks_num each time round the loop to protect the - * just-allocated chunk data. - */ - for (; num_unknowns > 0; --num_unknowns, ++unknowns) - { - memcpy(np->name, unknowns->name, (sizeof np->name)); - np->name[(sizeof np->name)-1] = '\0'; - np->location = check_location(png_ptr, unknowns->location); - - if (unknowns->size == 0) - { - np->data = NULL; - np->size = 0; - } - - else - { - np->data = png_voidcast(png_bytep, - png_malloc_base(png_ptr, unknowns->size)); - - if (np->data == NULL) - { - png_chunk_report(png_ptr, "unknown chunk: out of memory", - PNG_CHUNK_WRITE_ERROR); - /* But just skip storing the unknown chunk */ - continue; - } - - memcpy(np->data, unknowns->data, unknowns->size); - np->size = unknowns->size; - } - - /* These increments are skipped on out-of-memory for the data - the - * unknown chunk entry gets overwritten if the png_chunk_report returns. - * This is correct in the read case (the chunk is just dropped.) - */ - ++np; - ++(info_ptr->unknown_chunks_num); - } -} - -void PNGAPI -png_set_unknown_chunk_location(png_const_structrp png_ptr, png_inforp info_ptr, - int chunk, int location) -{ - /* This API is pretty pointless in 1.6.0 because the location can be set - * before the call to png_set_unknown_chunks. - * - * TODO: add a png_app_warning in 1.7 - */ - if (png_ptr != NULL && info_ptr != NULL && chunk >= 0 && - chunk < info_ptr->unknown_chunks_num) - { - if ((location & (PNG_HAVE_IHDR|PNG_HAVE_PLTE|PNG_AFTER_IDAT)) == 0) - { - png_app_error(png_ptr, "invalid unknown chunk location"); - /* Fake out the pre 1.6.0 behavior: */ - if ((location & PNG_HAVE_IDAT)) /* undocumented! */ - location = PNG_AFTER_IDAT; - - else - location = PNG_HAVE_IHDR; /* also undocumented */ - } - - info_ptr->unknown_chunks[chunk].location = - check_location(png_ptr, location); - } -} -#endif - - -#ifdef PNG_MNG_FEATURES_SUPPORTED -png_uint_32 PNGAPI -png_permit_mng_features (png_structrp png_ptr, png_uint_32 mng_features) -{ - png_debug(1, "in png_permit_mng_features"); - - if (png_ptr == NULL) - return 0; - - png_ptr->mng_features_permitted = mng_features & PNG_ALL_MNG_FEATURES; - - return png_ptr->mng_features_permitted; -} -#endif - -#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED -static unsigned int -add_one_chunk(png_bytep list, unsigned int count, png_const_bytep add, int keep) -{ - unsigned int i; - - /* Utility function: update the 'keep' state of a chunk if it is already in - * the list, otherwise add it to the list. - */ - for (i=0; i= PNG_HANDLE_CHUNK_LAST) - { - png_app_error(png_ptr, "png_set_keep_unknown_chunks: invalid keep"); - return; - } - - if (num_chunks_in <= 0) - { - png_ptr->unknown_default = keep; - - /* '0' means just set the flags, so stop here */ - if (num_chunks_in == 0) - return; - } - - if (num_chunks_in < 0) - { - /* Ignore all unknown chunks and all chunks recognized by - * libpng except for IHDR, PLTE, tRNS, IDAT, and IEND - */ - static PNG_CONST png_byte chunks_to_ignore[] = { - 98, 75, 71, 68, '\0', /* bKGD */ - 99, 72, 82, 77, '\0', /* cHRM */ - 103, 65, 77, 65, '\0', /* gAMA */ - 104, 73, 83, 84, '\0', /* hIST */ - 105, 67, 67, 80, '\0', /* iCCP */ - 105, 84, 88, 116, '\0', /* iTXt */ - 111, 70, 70, 115, '\0', /* oFFs */ - 112, 67, 65, 76, '\0', /* pCAL */ - 112, 72, 89, 115, '\0', /* pHYs */ - 115, 66, 73, 84, '\0', /* sBIT */ - 115, 67, 65, 76, '\0', /* sCAL */ - 115, 80, 76, 84, '\0', /* sPLT */ - 115, 84, 69, 82, '\0', /* sTER */ - 115, 82, 71, 66, '\0', /* sRGB */ - 116, 69, 88, 116, '\0', /* tEXt */ - 116, 73, 77, 69, '\0', /* tIME */ - 122, 84, 88, 116, '\0' /* zTXt */ - }; - - chunk_list = chunks_to_ignore; - num_chunks = (sizeof chunks_to_ignore)/5; - } - - else /* num_chunks_in > 0 */ - { - if (chunk_list == NULL) - { - /* Prior to 1.6.0 this was silently ignored, now it is an app_error - * which can be switched off. - */ - png_app_error(png_ptr, "png_set_keep_unknown_chunks: no chunk list"); - return; - } - - num_chunks = num_chunks_in; - } - - old_num_chunks = png_ptr->num_chunk_list; - if (png_ptr->chunk_list == NULL) - old_num_chunks = 0; - - /* Since num_chunks is always restricted to UINT_MAX/5 this can't overflow. - */ - if (num_chunks + old_num_chunks > UINT_MAX/5) - { - png_app_error(png_ptr, "png_set_keep_unknown_chunks: too many chunks"); - return; - } - - /* If these chunks are being reset to the default then no more memory is - * required because add_one_chunk above doesn't extend the list if the 'keep' - * parameter is the default. - */ - if (keep) - { - new_list = png_voidcast(png_bytep, png_malloc(png_ptr, - 5 * (num_chunks + old_num_chunks))); - - if (old_num_chunks > 0) - memcpy(new_list, png_ptr->chunk_list, 5*old_num_chunks); - } - - else if (old_num_chunks > 0) - new_list = png_ptr->chunk_list; - - else - new_list = NULL; - - /* Add the new chunks together with each one's handling code. If the chunk - * already exists the code is updated, otherwise the chunk is added to the - * end. (In libpng 1.6.0 order no longer matters because this code enforces - * the earlier convention that the last setting is the one that is used.) - */ - if (new_list != NULL) - { - png_const_bytep inlist; - png_bytep outlist; - unsigned int i; - - for (i=0; ichunk_list != new_list) - png_free(png_ptr, new_list); - - new_list = NULL; - } - } - - else - num_chunks = 0; - - png_ptr->num_chunk_list = num_chunks; - - if (png_ptr->chunk_list != new_list) - { - if (png_ptr->chunk_list != NULL) - png_free(png_ptr, png_ptr->chunk_list); - - png_ptr->chunk_list = new_list; - } -} -#endif - -#ifdef PNG_READ_USER_CHUNKS_SUPPORTED -void PNGAPI -png_set_read_user_chunk_fn(png_structrp png_ptr, png_voidp user_chunk_ptr, - png_user_chunk_ptr read_user_chunk_fn) -{ - png_debug(1, "in png_set_read_user_chunk_fn"); - - if (png_ptr == NULL) - return; - - png_ptr->read_user_chunk_fn = read_user_chunk_fn; - png_ptr->user_chunk_ptr = user_chunk_ptr; -} -#endif - -#ifdef PNG_INFO_IMAGE_SUPPORTED -void PNGAPI -png_set_rows(png_const_structrp png_ptr, png_inforp info_ptr, - png_bytepp row_pointers) -{ - png_debug1(1, "in %s storage function", "rows"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - if (info_ptr->row_pointers && (info_ptr->row_pointers != row_pointers)) - png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0); - - info_ptr->row_pointers = row_pointers; - - if (row_pointers) - info_ptr->valid |= PNG_INFO_IDAT; -} -#endif - -void PNGAPI -png_set_compression_buffer_size(png_structrp png_ptr, png_size_t size) -{ - if (png_ptr == NULL) - return; - - if (size == 0 || size > PNG_UINT_31_MAX) - png_error(png_ptr, "invalid compression buffer size"); - -# ifdef PNG_SEQUENTIAL_READ_SUPPORTED - if (png_ptr->mode & PNG_IS_READ_STRUCT) - { - png_ptr->IDAT_read_size = (png_uint_32)size; /* checked above */ - return; - } -# endif - -# ifdef PNG_WRITE_SUPPORTED - if (!(png_ptr->mode & PNG_IS_READ_STRUCT)) - { - if (png_ptr->zowner != 0) - { - png_warning(png_ptr, - "Compression buffer size cannot be changed because it is in use"); - return; - } - - if (size > ZLIB_IO_MAX) - { - png_warning(png_ptr, - "Compression buffer size limited to system maximum"); - size = ZLIB_IO_MAX; /* must fit */ - } - - else if (size < 6) - { - /* Deflate will potentially go into an infinite loop on a SYNC_FLUSH - * if this is permitted. - */ - png_warning(png_ptr, - "Compression buffer size cannot be reduced below 6"); - return; - } - - if (png_ptr->zbuffer_size != size) - { - png_free_buffer_list(png_ptr, &png_ptr->zbuffer_list); - png_ptr->zbuffer_size = (uInt)size; - } - } -# endif -} - -void PNGAPI -png_set_invalid(png_const_structrp png_ptr, png_inforp info_ptr, int mask) -{ - if (png_ptr && info_ptr) - info_ptr->valid &= ~mask; -} - - -#ifdef PNG_SET_USER_LIMITS_SUPPORTED -/* This function was added to libpng 1.2.6 */ -void PNGAPI -png_set_user_limits (png_structrp png_ptr, png_uint_32 user_width_max, - png_uint_32 user_height_max) -{ - /* Images with dimensions larger than these limits will be - * rejected by png_set_IHDR(). To accept any PNG datastream - * regardless of dimensions, set both limits to 0x7ffffffL. - */ - if (png_ptr == NULL) - return; - - png_ptr->user_width_max = user_width_max; - png_ptr->user_height_max = user_height_max; -} - -/* This function was added to libpng 1.4.0 */ -void PNGAPI -png_set_chunk_cache_max (png_structrp png_ptr, png_uint_32 user_chunk_cache_max) -{ - if (png_ptr) - png_ptr->user_chunk_cache_max = user_chunk_cache_max; -} - -/* This function was added to libpng 1.4.1 */ -void PNGAPI -png_set_chunk_malloc_max (png_structrp png_ptr, - png_alloc_size_t user_chunk_malloc_max) -{ - if (png_ptr) - png_ptr->user_chunk_malloc_max = user_chunk_malloc_max; -} -#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */ - - -#ifdef PNG_BENIGN_ERRORS_SUPPORTED -void PNGAPI -png_set_benign_errors(png_structrp png_ptr, int allowed) -{ - png_debug(1, "in png_set_benign_errors"); - - /* If allowed is 1, png_benign_error() is treated as a warning. - * - * If allowed is 0, png_benign_error() is treated as an error (which - * is the default behavior if png_set_benign_errors() is not called). - */ - - if (allowed) - png_ptr->flags |= PNG_FLAG_BENIGN_ERRORS_WARN | - PNG_FLAG_APP_WARNINGS_WARN | PNG_FLAG_APP_ERRORS_WARN; - - else - png_ptr->flags &= ~(PNG_FLAG_BENIGN_ERRORS_WARN | - PNG_FLAG_APP_WARNINGS_WARN | PNG_FLAG_APP_ERRORS_WARN); -} -#endif /* PNG_BENIGN_ERRORS_SUPPORTED */ - -#ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED - /* Whether to report invalid palette index; added at libng-1.5.10. - * It is possible for an indexed (color-type==3) PNG file to contain - * pixels with invalid (out-of-range) indexes if the PLTE chunk has - * fewer entries than the image's bit-depth would allow. We recover - * from this gracefully by filling any incomplete palette with zeroes - * (opaque black). By default, when this occurs libpng will issue - * a benign error. This API can be used to override that behavior. - */ -void PNGAPI -png_set_check_for_invalid_index(png_structrp png_ptr, int allowed) -{ - png_debug(1, "in png_set_check_for_invalid_index"); - - if (allowed > 0) - png_ptr->num_palette_max = 0; - - else - png_ptr->num_palette_max = -1; -} -#endif -#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ diff --git a/io2d/src/3rd-party/libpng/pngstruct.h b/io2d/src/3rd-party/libpng/pngstruct.h deleted file mode 100644 index d58c028..0000000 --- a/io2d/src/3rd-party/libpng/pngstruct.h +++ /dev/null @@ -1,489 +0,0 @@ - -/* pngstruct.h - header file for PNG reference library - * - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * Last changed in libpng 1.6.1 [March 28, 2013] - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -/* The structure that holds the information to read and write PNG files. - * The only people who need to care about what is inside of this are the - * people who will be modifying the library for their own special needs. - * It should NOT be accessed directly by an application. - */ - -#ifndef PNGSTRUCT_H -#define PNGSTRUCT_H -/* zlib.h defines the structure z_stream, an instance of which is included - * in this structure and is required for decompressing the LZ compressed - * data in PNG files. - */ -#ifndef ZLIB_CONST - /* We must ensure that zlib uses 'const' in declarations. */ -# define ZLIB_CONST -#endif -#include "zlib.h" -#ifdef const - /* zlib.h sometimes #defines const to nothing, undo this. */ -# undef const -#endif - -/* zlib.h has mediocre z_const use before 1.2.6, this stuff is for compatibility - * with older builds. - */ -#if ZLIB_VERNUM < 0x1260 -# define PNGZ_MSG_CAST(s) png_constcast(char*,s) -# define PNGZ_INPUT_CAST(b) png_constcast(png_bytep,b) -#else -# define PNGZ_MSG_CAST(s) (s) -# define PNGZ_INPUT_CAST(b) (b) -#endif - -/* zlib.h declares a magic type 'uInt' that limits the amount of data that zlib - * can handle at once. This type need be no larger than 16 bits (so maximum of - * 65535), this define allows us to discover how big it is, but limited by the - * maximuum for png_size_t. The value can be overriden in a library build - * (pngusr.h, or set it in CPPFLAGS) and it works to set it to a considerably - * lower value (e.g. 255 works). A lower value may help memory usage (slightly) - * and may even improve performance on some systems (and degrade it on others.) - */ -#ifndef ZLIB_IO_MAX -# define ZLIB_IO_MAX ((uInt)-1) -#endif - -#ifdef PNG_WRITE_SUPPORTED -/* The type of a compression buffer list used by the write code. */ -typedef struct png_compression_buffer -{ - struct png_compression_buffer *next; - png_byte output[1]; /* actually zbuf_size */ -} png_compression_buffer, *png_compression_bufferp; - -#define PNG_COMPRESSION_BUFFER_SIZE(pp)\ - (offsetof(png_compression_buffer, output) + (pp)->zbuffer_size) -#endif - -/* Colorspace support; structures used in png_struct, png_info and in internal - * functions to hold and communicate information about the color space. - * - * PNG_COLORSPACE_SUPPORTED is only required if the application will perform - * colorspace corrections, otherwise all the colorspace information can be - * skipped and the size of libpng can be reduced (significantly) by compiling - * out the colorspace support. - */ -#ifdef PNG_COLORSPACE_SUPPORTED -/* The chromaticities of the red, green and blue colorants and the chromaticity - * of the corresponding white point (i.e. of rgb(1.0,1.0,1.0)). - */ -typedef struct png_xy -{ - png_fixed_point redx, redy; - png_fixed_point greenx, greeny; - png_fixed_point bluex, bluey; - png_fixed_point whitex, whitey; -} png_xy; - -/* The same data as above but encoded as CIE XYZ values. When this data comes - * from chromaticities the sum of the Y values is assumed to be 1.0 - */ -typedef struct png_XYZ -{ - png_fixed_point red_X, red_Y, red_Z; - png_fixed_point green_X, green_Y, green_Z; - png_fixed_point blue_X, blue_Y, blue_Z; -} png_XYZ; -#endif /* COLORSPACE */ - -#if defined(PNG_COLORSPACE_SUPPORTED) || defined(PNG_GAMMA_SUPPORTED) -/* A colorspace is all the above plus, potentially, profile information, - * however at present libpng does not use the profile internally so it is only - * stored in the png_info struct (if iCCP is supported.) The rendering intent - * is retained here and is checked. - * - * The file gamma encoding information is also stored here and gamma correction - * is done by libpng, whereas color correction must currently be done by the - * application. - */ -typedef struct png_colorspace -{ -#ifdef PNG_GAMMA_SUPPORTED - png_fixed_point gamma; /* File gamma */ -#endif - -#ifdef PNG_COLORSPACE_SUPPORTED - png_xy end_points_xy; /* End points as chromaticities */ - png_XYZ end_points_XYZ; /* End points as CIE XYZ colorant values */ - png_uint_16 rendering_intent; /* Rendering intent of a profile */ -#endif - - /* Flags are always defined to simplify the code. */ - png_uint_16 flags; /* As defined below */ -} png_colorspace, * PNG_RESTRICT png_colorspacerp; - -typedef const png_colorspace * PNG_RESTRICT png_const_colorspacerp; - -/* General flags for the 'flags' field */ -#define PNG_COLORSPACE_HAVE_GAMMA 0x0001 -#define PNG_COLORSPACE_HAVE_ENDPOINTS 0x0002 -#define PNG_COLORSPACE_HAVE_INTENT 0x0004 -#define PNG_COLORSPACE_FROM_gAMA 0x0008 -#define PNG_COLORSPACE_FROM_cHRM 0x0010 -#define PNG_COLORSPACE_FROM_sRGB 0x0020 -#define PNG_COLORSPACE_ENDPOINTS_MATCH_sRGB 0x0040 -#define PNG_COLORSPACE_MATCHES_sRGB 0x0080 /* exact match on profile */ -#define PNG_COLORSPACE_INVALID 0x8000 -#define PNG_COLORSPACE_CANCEL(flags) (0xffff ^ (flags)) -#endif /* COLORSPACE || GAMMA */ - -struct png_struct_def -{ -#ifdef PNG_SETJMP_SUPPORTED - jmp_buf jmp_buf_local; /* New name in 1.6.0 for jmp_buf in png_struct */ - png_longjmp_ptr longjmp_fn;/* setjmp non-local goto function. */ - jmp_buf *jmp_buf_ptr; /* passed to longjmp_fn */ - size_t jmp_buf_size; /* size of the above, if allocated */ -#endif - png_error_ptr error_fn; /* function for printing errors and aborting */ -#ifdef PNG_WARNINGS_SUPPORTED - png_error_ptr warning_fn; /* function for printing warnings */ -#endif - png_voidp error_ptr; /* user supplied struct for error functions */ - png_rw_ptr write_data_fn; /* function for writing output data */ - png_rw_ptr read_data_fn; /* function for reading input data */ - png_voidp io_ptr; /* ptr to application struct for I/O functions */ - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED - png_user_transform_ptr read_user_transform_fn; /* user read transform */ -#endif - -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED - png_user_transform_ptr write_user_transform_fn; /* user write transform */ -#endif - -/* These were added in libpng-1.0.2 */ -#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) - png_voidp user_transform_ptr; /* user supplied struct for user transform */ - png_byte user_transform_depth; /* bit depth of user transformed pixels */ - png_byte user_transform_channels; /* channels in user transformed pixels */ -#endif -#endif - - png_uint_32 mode; /* tells us where we are in the PNG file */ - png_uint_32 flags; /* flags indicating various things to libpng */ - png_uint_32 transformations; /* which transformations to perform */ - - png_uint_32 zowner; /* ID (chunk type) of zstream owner, 0 if none */ - z_stream zstream; /* decompression structure */ - -#ifdef PNG_WRITE_SUPPORTED - png_compression_bufferp zbuffer_list; /* Created on demand during write */ - uInt zbuffer_size; /* size of the actual buffer */ - - int zlib_level; /* holds zlib compression level */ - int zlib_method; /* holds zlib compression method */ - int zlib_window_bits; /* holds zlib compression window bits */ - int zlib_mem_level; /* holds zlib compression memory level */ - int zlib_strategy; /* holds zlib compression strategy */ -#endif -/* Added at libpng 1.5.4 */ -#ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED - int zlib_text_level; /* holds zlib compression level */ - int zlib_text_method; /* holds zlib compression method */ - int zlib_text_window_bits; /* holds zlib compression window bits */ - int zlib_text_mem_level; /* holds zlib compression memory level */ - int zlib_text_strategy; /* holds zlib compression strategy */ -#endif -/* End of material added at libpng 1.5.4 */ -/* Added at libpng 1.6.0 */ -#ifdef PNG_WRITE_SUPPORTED - int zlib_set_level; /* Actual values set into the zstream on write */ - int zlib_set_method; - int zlib_set_window_bits; - int zlib_set_mem_level; - int zlib_set_strategy; -#endif - - png_uint_32 width; /* width of image in pixels */ - png_uint_32 height; /* height of image in pixels */ - png_uint_32 num_rows; /* number of rows in current pass */ - png_uint_32 usr_width; /* width of row at start of write */ - png_size_t rowbytes; /* size of row in bytes */ - png_uint_32 iwidth; /* width of current interlaced row in pixels */ - png_uint_32 row_number; /* current row in interlace pass */ - png_uint_32 chunk_name; /* PNG_CHUNK() id of current chunk */ - png_bytep prev_row; /* buffer to save previous (unfiltered) row. - * This is a pointer into big_prev_row - */ - png_bytep row_buf; /* buffer to save current (unfiltered) row. - * This is a pointer into big_row_buf - */ -#ifdef PNG_WRITE_SUPPORTED - png_bytep sub_row; /* buffer to save "sub" row when filtering */ - png_bytep up_row; /* buffer to save "up" row when filtering */ - png_bytep avg_row; /* buffer to save "avg" row when filtering */ - png_bytep paeth_row; /* buffer to save "Paeth" row when filtering */ -#endif - png_size_t info_rowbytes; /* Added in 1.5.4: cache of updated row bytes */ - - png_uint_32 idat_size; /* current IDAT size for read */ - png_uint_32 crc; /* current chunk CRC value */ - png_colorp palette; /* palette from the input file */ - png_uint_16 num_palette; /* number of color entries in palette */ - -/* Added at libpng-1.5.10 */ -#ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED - int num_palette_max; /* maximum palette index found in IDAT */ -#endif - - png_uint_16 num_trans; /* number of transparency values */ - png_byte compression; /* file compression type (always 0) */ - png_byte filter; /* file filter type (always 0) */ - png_byte interlaced; /* PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */ - png_byte pass; /* current interlace pass (0 - 6) */ - png_byte do_filter; /* row filter flags (see PNG_FILTER_ below ) */ - png_byte color_type; /* color type of file */ - png_byte bit_depth; /* bit depth of file */ - png_byte usr_bit_depth; /* bit depth of users row: write only */ - png_byte pixel_depth; /* number of bits per pixel */ - png_byte channels; /* number of channels in file */ -#ifdef PNG_WRITE_SUPPORTED - png_byte usr_channels; /* channels at start of write: write only */ -#endif - png_byte sig_bytes; /* magic bytes read/written from start of file */ - png_byte maximum_pixel_depth; - /* pixel depth used for the row buffers */ - png_byte transformed_pixel_depth; - /* pixel depth after read/write transforms */ -#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) - png_uint_16 filler; /* filler bytes for pixel expansion */ -#endif - -#if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) ||\ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) - png_byte background_gamma_type; - png_fixed_point background_gamma; - png_color_16 background; /* background color in screen gamma space */ -#ifdef PNG_READ_GAMMA_SUPPORTED - png_color_16 background_1; /* background normalized to gamma 1.0 */ -#endif -#endif /* PNG_bKGD_SUPPORTED */ - -#ifdef PNG_WRITE_FLUSH_SUPPORTED - png_flush_ptr output_flush_fn; /* Function for flushing output */ - png_uint_32 flush_dist; /* how many rows apart to flush, 0 - no flush */ - png_uint_32 flush_rows; /* number of rows written since last flush */ -#endif - -#ifdef PNG_READ_GAMMA_SUPPORTED - int gamma_shift; /* number of "insignificant" bits in 16-bit gamma */ - png_fixed_point screen_gamma; /* screen gamma value (display_exponent) */ - - png_bytep gamma_table; /* gamma table for 8-bit depth files */ - png_uint_16pp gamma_16_table; /* gamma table for 16-bit depth files */ -#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \ - defined(PNG_READ_ALPHA_MODE_SUPPORTED) || \ - defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) - png_bytep gamma_from_1; /* converts from 1.0 to screen */ - png_bytep gamma_to_1; /* converts from file to 1.0 */ - png_uint_16pp gamma_16_from_1; /* converts from 1.0 to screen */ - png_uint_16pp gamma_16_to_1; /* converts from file to 1.0 */ -#endif /* READ_BACKGROUND || READ_ALPHA_MODE || RGB_TO_GRAY */ -#endif - -#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED) - png_color_8 sig_bit; /* significant bits in each available channel */ -#endif - -#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) - png_color_8 shift; /* shift for significant bit tranformation */ -#endif - -#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \ - || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - png_bytep trans_alpha; /* alpha values for paletted files */ - png_color_16 trans_color; /* transparent color for non-paletted files */ -#endif - - png_read_status_ptr read_row_fn; /* called after each row is decoded */ - png_write_status_ptr write_row_fn; /* called after each row is encoded */ -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED - png_progressive_info_ptr info_fn; /* called after header data fully read */ - png_progressive_row_ptr row_fn; /* called after a prog. row is decoded */ - png_progressive_end_ptr end_fn; /* called after image is complete */ - png_bytep save_buffer_ptr; /* current location in save_buffer */ - png_bytep save_buffer; /* buffer for previously read data */ - png_bytep current_buffer_ptr; /* current location in current_buffer */ - png_bytep current_buffer; /* buffer for recently used data */ - png_uint_32 push_length; /* size of current input chunk */ - png_uint_32 skip_length; /* bytes to skip in input data */ - png_size_t save_buffer_size; /* amount of data now in save_buffer */ - png_size_t save_buffer_max; /* total size of save_buffer */ - png_size_t buffer_size; /* total amount of available input data */ - png_size_t current_buffer_size; /* amount of data now in current_buffer */ - int process_mode; /* what push library is currently doing */ - int cur_palette; /* current push library palette index */ - -#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ - -#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__) -/* For the Borland special 64K segment handler */ - png_bytepp offset_table_ptr; - png_bytep offset_table; - png_uint_16 offset_table_number; - png_uint_16 offset_table_count; - png_uint_16 offset_table_count_free; -#endif - -#ifdef PNG_READ_QUANTIZE_SUPPORTED - png_bytep palette_lookup; /* lookup table for quantizing */ - png_bytep quantize_index; /* index translation for palette files */ -#endif - -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - png_byte heuristic_method; /* heuristic for row filter selection */ - png_byte num_prev_filters; /* number of weights for previous rows */ - png_bytep prev_filters; /* filter type(s) of previous row(s) */ - png_uint_16p filter_weights; /* weight(s) for previous line(s) */ - png_uint_16p inv_filter_weights; /* 1/weight(s) for previous line(s) */ - png_uint_16p filter_costs; /* relative filter calculation cost */ - png_uint_16p inv_filter_costs; /* 1/relative filter calculation cost */ -#endif - - /* Options */ -#ifdef PNG_SET_OPTION_SUPPORTED - png_byte options; /* On/off state (up to 4 options) */ -#endif - -#if PNG_LIBPNG_VER < 10700 -/* To do: remove this from libpng-1.7 */ -#ifdef PNG_TIME_RFC1123_SUPPORTED - char time_buffer[29]; /* String to hold RFC 1123 time text */ -#endif -#endif - -/* New members added in libpng-1.0.6 */ - - png_uint_32 free_me; /* flags items libpng is responsible for freeing */ - -#ifdef PNG_USER_CHUNKS_SUPPORTED - png_voidp user_chunk_ptr; -#ifdef PNG_READ_USER_CHUNKS_SUPPORTED - png_user_chunk_ptr read_user_chunk_fn; /* user read chunk handler */ -#endif -#endif - -#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED - int unknown_default; /* As PNG_HANDLE_* */ - unsigned int num_chunk_list; /* Number of entries in the list */ - png_bytep chunk_list; /* List of png_byte[5]; the textual chunk name - * followed by a PNG_HANDLE_* byte */ -#endif - -/* New members added in libpng-1.0.3 */ -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED - png_byte rgb_to_gray_status; - /* Added in libpng 1.5.5 to record setting of coefficients: */ - png_byte rgb_to_gray_coefficients_set; - /* These were changed from png_byte in libpng-1.0.6 */ - png_uint_16 rgb_to_gray_red_coeff; - png_uint_16 rgb_to_gray_green_coeff; - /* deleted in 1.5.5: rgb_to_gray_blue_coeff; */ -#endif - -/* New member added in libpng-1.0.4 (renamed in 1.0.9) */ -#if defined(PNG_MNG_FEATURES_SUPPORTED) -/* Changed from png_byte to png_uint_32 at version 1.2.0 */ - png_uint_32 mng_features_permitted; -#endif - -/* New member added in libpng-1.0.9, ifdef'ed out in 1.0.12, enabled in 1.2.0 */ -#ifdef PNG_MNG_FEATURES_SUPPORTED - png_byte filter_type; -#endif - -/* New members added in libpng-1.2.0 */ - -/* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */ -#ifdef PNG_USER_MEM_SUPPORTED - png_voidp mem_ptr; /* user supplied struct for mem functions */ - png_malloc_ptr malloc_fn; /* function for allocating memory */ - png_free_ptr free_fn; /* function for freeing memory */ -#endif - -/* New member added in libpng-1.0.13 and 1.2.0 */ - png_bytep big_row_buf; /* buffer to save current (unfiltered) row */ - -#ifdef PNG_READ_QUANTIZE_SUPPORTED -/* The following three members were added at version 1.0.14 and 1.2.4 */ - png_bytep quantize_sort; /* working sort array */ - png_bytep index_to_palette; /* where the original index currently is - in the palette */ - png_bytep palette_to_index; /* which original index points to this - palette color */ -#endif - -/* New members added in libpng-1.0.16 and 1.2.6 */ - png_byte compression_type; - -#ifdef PNG_USER_LIMITS_SUPPORTED - png_uint_32 user_width_max; - png_uint_32 user_height_max; - - /* Added in libpng-1.4.0: Total number of sPLT, text, and unknown - * chunks that can be stored (0 means unlimited). - */ - png_uint_32 user_chunk_cache_max; - - /* Total memory that a zTXt, sPLT, iTXt, iCCP, or unknown chunk - * can occupy when decompressed. 0 means unlimited. - */ - png_alloc_size_t user_chunk_malloc_max; -#endif - -/* New member added in libpng-1.0.25 and 1.2.17 */ -#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED - /* Temporary storage for unknown chunk that the library doesn't recognize, - * used while reading the chunk. - */ - png_unknown_chunk unknown_chunk; -#endif - -/* New member added in libpng-1.2.26 */ - png_size_t old_big_row_buf_size; - -#ifdef PNG_READ_SUPPORTED -/* New member added in libpng-1.2.30 */ - png_bytep read_buffer; /* buffer for reading chunk data */ - png_alloc_size_t read_buffer_size; /* current size of the buffer */ -#endif -#ifdef PNG_SEQUENTIAL_READ_SUPPORTED - uInt IDAT_read_size; /* limit on read buffer size for IDAT */ -#endif - -#ifdef PNG_IO_STATE_SUPPORTED -/* New member added in libpng-1.4.0 */ - png_uint_32 io_state; -#endif - -/* New member added in libpng-1.5.6 */ - png_bytep big_prev_row; - -/* New member added in libpng-1.5.7 */ - void (*read_filter[PNG_FILTER_VALUE_LAST-1])(png_row_infop row_info, - png_bytep row, png_const_bytep prev_row); - -#ifdef PNG_READ_SUPPORTED -#if defined(PNG_COLORSPACE_SUPPORTED) || defined(PNG_GAMMA_SUPPORTED) - png_colorspace colorspace; -#endif -#endif -}; -#endif /* PNGSTRUCT_H */ diff --git a/io2d/src/3rd-party/libpng/pngtest.c b/io2d/src/3rd-party/libpng/pngtest.c deleted file mode 100644 index 5f7467b..0000000 --- a/io2d/src/3rd-party/libpng/pngtest.c +++ /dev/null @@ -1,1973 +0,0 @@ - -/* pngtest.c - a simple test program to test libpng - * - * Last changed in libpng 1.6.8 [(PENDING RELEASE)] - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * This program reads in a PNG image, writes it out again, and then - * compares the two files. If the files are identical, this shows that - * the basic chunk handling, filtering, and (de)compression code is working - * properly. It does not currently test all of the transforms, although - * it probably should. - * - * The program will report "FAIL" in certain legitimate cases: - * 1) when the compression level or filter selection method is changed. - * 2) when the maximum IDAT size (PNG_ZBUF_SIZE in pngconf.h) is not 8192. - * 3) unknown unsafe-to-copy ancillary chunks or unknown critical chunks - * exist in the input file. - * 4) others not listed here... - * In these cases, it is best to check with another tool such as "pngcheck" - * to see what the differences between the two files are. - * - * If a filename is given on the command-line, then this file is used - * for the input, rather than the default "pngtest.png". This allows - * testing a wide variety of files easily. You can also test a number - * of files at once by typing "pngtest -m file1.png file2.png ..." - */ - -#define _POSIX_SOURCE 1 - -#include -#include -#include - -/* Defined so I can write to a file on gui/windowing platforms */ -/* #define STDERR stderr */ -#define STDERR stdout /* For DOS */ - -#include "png.h" - -/* Known chunks that exist in pngtest.png must be supported or pngtest will fail - * simply as a result of re-ordering them. This may be fixed in 1.7 - */ -#if defined PNG_READ_SUPPORTED && /* else nothing can be done */\ - defined PNG_READ_bKGD_SUPPORTED &&\ - defined PNG_READ_cHRM_SUPPORTED &&\ - defined PNG_READ_gAMA_SUPPORTED &&\ - defined PNG_READ_oFFs_SUPPORTED &&\ - defined PNG_READ_pCAL_SUPPORTED &&\ - defined PNG_READ_pHYs_SUPPORTED &&\ - defined PNG_READ_sBIT_SUPPORTED &&\ - defined PNG_READ_sCAL_SUPPORTED &&\ - defined PNG_READ_sRGB_SUPPORTED &&\ - defined PNG_READ_tEXt_SUPPORTED &&\ - defined PNG_READ_tIME_SUPPORTED &&\ - defined PNG_READ_zTXt_SUPPORTED - -#include "zlib.h" -/* Copied from pngpriv.h but only used in error messages below. */ -#ifndef PNG_ZBUF_SIZE -# define PNG_ZBUF_SIZE 8192 -#endif -#define FCLOSE(file) fclose(file) - -#ifndef PNG_STDIO_SUPPORTED -typedef FILE * png_FILE_p; -#endif - -/* Makes pngtest verbose so we can find problems. */ -#ifndef PNG_DEBUG -# define PNG_DEBUG 0 -#endif - -#if PNG_DEBUG > 1 -# define pngtest_debug(m) ((void)fprintf(stderr, m "\n")) -# define pngtest_debug1(m,p1) ((void)fprintf(stderr, m "\n", p1)) -# define pngtest_debug2(m,p1,p2) ((void)fprintf(stderr, m "\n", p1, p2)) -#else -# define pngtest_debug(m) ((void)0) -# define pngtest_debug1(m,p1) ((void)0) -# define pngtest_debug2(m,p1,p2) ((void)0) -#endif - -#if !PNG_DEBUG -# define SINGLE_ROWBUF_ALLOC /* Makes buffer overruns easier to nail */ -#endif - -/* Turn on CPU timing -#define PNGTEST_TIMING -*/ - -#ifndef PNG_FLOATING_POINT_SUPPORTED -#undef PNGTEST_TIMING -#endif - -#ifdef PNGTEST_TIMING -static float t_start, t_stop, t_decode, t_encode, t_misc; -#include -#endif - -#ifdef PNG_TIME_RFC1123_SUPPORTED -#define PNG_tIME_STRING_LENGTH 29 -static int tIME_chunk_present = 0; -static char tIME_string[PNG_tIME_STRING_LENGTH] = "tIME chunk is not present"; -#endif - -static int verbose = 0; -static int strict = 0; -static int relaxed = 0; -static int unsupported_chunks = 0; /* chunk unsupported by libpng in input */ -static int error_count = 0; /* count calls to png_error */ -static int warning_count = 0; /* count calls to png_warning */ - -#ifdef __TURBOC__ -#include -#endif - -/* Define png_jmpbuf() in case we are using a pre-1.0.6 version of libpng */ -#ifndef png_jmpbuf -# define png_jmpbuf(png_ptr) png_ptr->jmpbuf -#endif - -/* Defines for unknown chunk handling if required. */ -#ifndef PNG_HANDLE_CHUNK_ALWAYS -# define PNG_HANDLE_CHUNK_ALWAYS 3 -#endif -#ifndef PNG_HANDLE_CHUNK_IF_SAFE -# define PNG_HANDLE_CHUNK_IF_SAFE 2 -#endif - -/* Utility to save typing/errors, the argument must be a name */ -#define MEMZERO(var) ((void)memset(&var, 0, sizeof var)) - -/* Example of using row callbacks to make a simple progress meter */ -static int status_pass = 1; -static int status_dots_requested = 0; -static int status_dots = 1; - -static void PNGCBAPI -read_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass) -{ - if (png_ptr == NULL || row_number > PNG_UINT_31_MAX) - return; - - if (status_pass != pass) - { - fprintf(stdout, "\n Pass %d: ", pass); - status_pass = pass; - status_dots = 31; - } - - status_dots--; - - if (status_dots == 0) - { - fprintf(stdout, "\n "); - status_dots=30; - } - - fprintf(stdout, "r"); -} - -#ifdef PNG_WRITE_SUPPORTED -static void PNGCBAPI -write_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass) -{ - if (png_ptr == NULL || row_number > PNG_UINT_31_MAX || pass > 7) - return; - - fprintf(stdout, "w"); -} -#endif - - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED -/* Example of using user transform callback (we don't transform anything, - * but merely examine the row filters. We set this to 256 rather than - * 5 in case illegal filter values are present.) - */ -static png_uint_32 filters_used[256]; -static void PNGCBAPI -count_filters(png_structp png_ptr, png_row_infop row_info, png_bytep data) -{ - if (png_ptr != NULL && row_info != NULL) - ++filters_used[*(data - 1)]; -} -#endif - -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED -/* Example of using user transform callback (we don't transform anything, - * but merely count the zero samples) - */ - -static png_uint_32 zero_samples; - -static void PNGCBAPI -count_zero_samples(png_structp png_ptr, png_row_infop row_info, png_bytep data) -{ - png_bytep dp = data; - if (png_ptr == NULL) - return; - - /* Contents of row_info: - * png_uint_32 width width of row - * png_uint_32 rowbytes number of bytes in row - * png_byte color_type color type of pixels - * png_byte bit_depth bit depth of samples - * png_byte channels number of channels (1-4) - * png_byte pixel_depth bits per pixel (depth*channels) - */ - - /* Counts the number of zero samples (or zero pixels if color_type is 3 */ - - if (row_info->color_type == 0 || row_info->color_type == 3) - { - int pos = 0; - png_uint_32 n, nstop; - - for (n = 0, nstop=row_info->width; nbit_depth == 1) - { - if (((*dp << pos++ ) & 0x80) == 0) - zero_samples++; - - if (pos == 8) - { - pos = 0; - dp++; - } - } - - if (row_info->bit_depth == 2) - { - if (((*dp << (pos+=2)) & 0xc0) == 0) - zero_samples++; - - if (pos == 8) - { - pos = 0; - dp++; - } - } - - if (row_info->bit_depth == 4) - { - if (((*dp << (pos+=4)) & 0xf0) == 0) - zero_samples++; - - if (pos == 8) - { - pos = 0; - dp++; - } - } - - if (row_info->bit_depth == 8) - if (*dp++ == 0) - zero_samples++; - - if (row_info->bit_depth == 16) - { - if ((*dp | *(dp+1)) == 0) - zero_samples++; - dp+=2; - } - } - } - else /* Other color types */ - { - png_uint_32 n, nstop; - int channel; - int color_channels = row_info->channels; - if (row_info->color_type > 3)color_channels--; - - for (n = 0, nstop=row_info->width; nbit_depth == 8) - if (*dp++ == 0) - zero_samples++; - - if (row_info->bit_depth == 16) - { - if ((*dp | *(dp+1)) == 0) - zero_samples++; - - dp+=2; - } - } - if (row_info->color_type > 3) - { - dp++; - if (row_info->bit_depth == 16) - dp++; - } - } - } -} -#endif /* PNG_WRITE_USER_TRANSFORM_SUPPORTED */ - -#ifndef PNG_STDIO_SUPPORTED -/* START of code to validate stdio-free compilation */ -/* These copies of the default read/write functions come from pngrio.c and - * pngwio.c. They allow "don't include stdio" testing of the library. - * This is the function that does the actual reading of data. If you are - * not reading from a standard C stream, you should create a replacement - * read_data function and use it at run time with png_set_read_fn(), rather - * than changing the library. - */ - -#ifdef PNG_IO_STATE_SUPPORTED -void -pngtest_check_io_state(png_structp png_ptr, png_size_t data_length, - png_uint_32 io_op); -void -pngtest_check_io_state(png_structp png_ptr, png_size_t data_length, - png_uint_32 io_op) -{ - png_uint_32 io_state = png_get_io_state(png_ptr); - int err = 0; - - /* Check if the current operation (reading / writing) is as expected. */ - if ((io_state & PNG_IO_MASK_OP) != io_op) - png_error(png_ptr, "Incorrect operation in I/O state"); - - /* Check if the buffer size specific to the current location - * (file signature / header / data / crc) is as expected. - */ - switch (io_state & PNG_IO_MASK_LOC) - { - case PNG_IO_SIGNATURE: - if (data_length > 8) - err = 1; - break; - case PNG_IO_CHUNK_HDR: - if (data_length != 8) - err = 1; - break; - case PNG_IO_CHUNK_DATA: - break; /* no restrictions here */ - case PNG_IO_CHUNK_CRC: - if (data_length != 4) - err = 1; - break; - default: - err = 1; /* uninitialized */ - } - if (err) - png_error(png_ptr, "Bad I/O state or buffer size"); -} -#endif - -static void PNGCBAPI -pngtest_read_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_size_t check = 0; - png_voidp io_ptr; - - /* fread() returns 0 on error, so it is OK to store this in a png_size_t - * instead of an int, which is what fread() actually returns. - */ - io_ptr = png_get_io_ptr(png_ptr); - if (io_ptr != NULL) - { - check = fread(data, 1, length, (png_FILE_p)io_ptr); - } - - if (check != length) - { - png_error(png_ptr, "Read Error"); - } - -#ifdef PNG_IO_STATE_SUPPORTED - pngtest_check_io_state(png_ptr, length, PNG_IO_READING); -#endif -} - -#ifdef PNG_WRITE_FLUSH_SUPPORTED -static void PNGCBAPI -pngtest_flush(png_structp png_ptr) -{ - /* Do nothing; fflush() is said to be just a waste of energy. */ - PNG_UNUSED(png_ptr) /* Stifle compiler warning */ -} -#endif - -/* This is the function that does the actual writing of data. If you are - * not writing to a standard C stream, you should create a replacement - * write_data function and use it at run time with png_set_write_fn(), rather - * than changing the library. - */ -static void PNGCBAPI -pngtest_write_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_size_t check; - - check = fwrite(data, 1, length, (png_FILE_p)png_get_io_ptr(png_ptr)); - - if (check != length) - { - png_error(png_ptr, "Write Error"); - } - -#ifdef PNG_IO_STATE_SUPPORTED - pngtest_check_io_state(png_ptr, length, PNG_IO_WRITING); -#endif -} -#endif /* !PNG_STDIO_SUPPORTED */ - -/* This function is called when there is a warning, but the library thinks - * it can continue anyway. Replacement functions don't have to do anything - * here if you don't want to. In the default configuration, png_ptr is - * not used, but it is passed in case it may be useful. - */ -typedef struct -{ - PNG_CONST char *file_name; -} pngtest_error_parameters; - -static void PNGCBAPI -pngtest_warning(png_structp png_ptr, png_const_charp message) -{ - PNG_CONST char *name = "UNKNOWN (ERROR!)"; - pngtest_error_parameters *test = - (pngtest_error_parameters*)png_get_error_ptr(png_ptr); - - ++warning_count; - - if (test != NULL && test->file_name != NULL) - name = test->file_name; - - fprintf(STDERR, "%s: libpng warning: %s\n", name, message); -} - -/* This is the default error handling function. Note that replacements for - * this function MUST NOT RETURN, or the program will likely crash. This - * function is used by default, or if the program supplies NULL for the - * error function pointer in png_set_error_fn(). - */ -static void PNGCBAPI -pngtest_error(png_structp png_ptr, png_const_charp message) -{ - ++error_count; - - pngtest_warning(png_ptr, message); - /* We can return because png_error calls the default handler, which is - * actually OK in this case. - */ -} - -/* END of code to validate stdio-free compilation */ - -/* START of code to validate memory allocation and deallocation */ -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - -/* Allocate memory. For reasonable files, size should never exceed - * 64K. However, zlib may allocate more then 64K if you don't tell - * it not to. See zconf.h and png.h for more information. zlib does - * need to allocate exactly 64K, so whatever you call here must - * have the ability to do that. - * - * This piece of code can be compiled to validate max 64K allocations - * by setting MAXSEG_64K in zlib zconf.h *or* PNG_MAX_MALLOC_64K. - */ -typedef struct memory_information -{ - png_alloc_size_t size; - png_voidp pointer; - struct memory_information *next; -} memory_information; -typedef memory_information *memory_infop; - -static memory_infop pinformation = NULL; -static int current_allocation = 0; -static int maximum_allocation = 0; -static int total_allocation = 0; -static int num_allocations = 0; - -png_voidp PNGCBAPI png_debug_malloc PNGARG((png_structp png_ptr, - png_alloc_size_t size)); -void PNGCBAPI png_debug_free PNGARG((png_structp png_ptr, png_voidp ptr)); - -png_voidp -PNGCBAPI png_debug_malloc(png_structp png_ptr, png_alloc_size_t size) -{ - - /* png_malloc has already tested for NULL; png_create_struct calls - * png_debug_malloc directly, with png_ptr == NULL which is OK - */ - - if (size == 0) - return (NULL); - - /* This calls the library allocator twice, once to get the requested - buffer and once to get a new free list entry. */ - { - /* Disable malloc_fn and free_fn */ - memory_infop pinfo; - png_set_mem_fn(png_ptr, NULL, NULL, NULL); - pinfo = (memory_infop)png_malloc(png_ptr, - (sizeof *pinfo)); - pinfo->size = size; - current_allocation += size; - total_allocation += size; - num_allocations ++; - - if (current_allocation > maximum_allocation) - maximum_allocation = current_allocation; - - pinfo->pointer = png_malloc(png_ptr, size); - /* Restore malloc_fn and free_fn */ - - png_set_mem_fn(png_ptr, - NULL, png_debug_malloc, png_debug_free); - - if (size != 0 && pinfo->pointer == NULL) - { - current_allocation -= size; - total_allocation -= size; - png_error(png_ptr, - "out of memory in pngtest->png_debug_malloc"); - } - - pinfo->next = pinformation; - pinformation = pinfo; - /* Make sure the caller isn't assuming zeroed memory. */ - memset(pinfo->pointer, 0xdd, pinfo->size); - - if (verbose) - printf("png_malloc %lu bytes at %p\n", (unsigned long)size, - pinfo->pointer); - - return (png_voidp)(pinfo->pointer); - } -} - -/* Free a pointer. It is removed from the list at the same time. */ -void PNGCBAPI -png_debug_free(png_structp png_ptr, png_voidp ptr) -{ - if (png_ptr == NULL) - fprintf(STDERR, "NULL pointer to png_debug_free.\n"); - - if (ptr == 0) - { -#if 0 /* This happens all the time. */ - fprintf(STDERR, "WARNING: freeing NULL pointer\n"); -#endif - return; - } - - /* Unlink the element from the list. */ - { - memory_infop *ppinfo = &pinformation; - - for (;;) - { - memory_infop pinfo = *ppinfo; - - if (pinfo->pointer == ptr) - { - *ppinfo = pinfo->next; - current_allocation -= pinfo->size; - if (current_allocation < 0) - fprintf(STDERR, "Duplicate free of memory\n"); - /* We must free the list element too, but first kill - the memory that is to be freed. */ - memset(ptr, 0x55, pinfo->size); - if (pinfo) - free(pinfo); - pinfo = NULL; - break; - } - - if (pinfo->next == NULL) - { - fprintf(STDERR, "Pointer %x not found\n", (unsigned int)ptr); - break; - } - - ppinfo = &pinfo->next; - } - } - - /* Finally free the data. */ - if (verbose) - printf("Freeing %p\n", ptr); - - if (ptr) - free(ptr); - ptr = NULL; -} -#endif /* PNG_USER_MEM_SUPPORTED && PNG_DEBUG */ -/* END of code to test memory allocation/deallocation */ - - -#ifdef PNG_READ_USER_CHUNKS_SUPPORTED -/* Demonstration of user chunk support of the sTER and vpAg chunks */ - -/* (sTER is a public chunk not yet known by libpng. vpAg is a private -chunk used in ImageMagick to store "virtual page" size). */ - -static struct user_chunk_data -{ - png_const_infop info_ptr; - png_uint_32 vpAg_width, vpAg_height; - png_byte vpAg_units; - png_byte sTER_mode; - int location[2]; -} -user_chunk_data; - -/* Used for location and order; zero means nothing. */ -#define have_sTER 0x01 -#define have_vpAg 0x02 -#define before_PLTE 0x10 -#define before_IDAT 0x20 -#define after_IDAT 0x40 - -static void -init_callback_info(png_const_infop info_ptr) -{ - MEMZERO(user_chunk_data); - user_chunk_data.info_ptr = info_ptr; -} - -static int -set_location(png_structp png_ptr, struct user_chunk_data *data, int what) -{ - int location; - - if ((data->location[0] & what) || (data->location[1] & what)) - return 0; /* already have one of these */ - - /* Find where we are (the code below zeros info_ptr to indicate that the - * chunks before the first IDAT have been read.) - */ - if (data->info_ptr == NULL) /* after IDAT */ - location = what | after_IDAT; - - else if (png_get_valid(png_ptr, data->info_ptr, PNG_INFO_PLTE)) - location = what | before_IDAT; - - else - location = what | before_PLTE; - - if (data->location[0] == 0) - data->location[0] = location; - - else - data->location[1] = location; - - return 1; /* handled */ -} - -static int PNGCBAPI read_user_chunk_callback(png_struct *png_ptr, - png_unknown_chunkp chunk) -{ - struct user_chunk_data *my_user_chunk_data = - (struct user_chunk_data*)png_get_user_chunk_ptr(png_ptr); - - if (my_user_chunk_data == NULL) - png_error(png_ptr, "lost user chunk pointer"); - - /* Return one of the following: - * return (-n); chunk had an error - * return (0); did not recognize - * return (n); success - * - * The unknown chunk structure contains the chunk data: - * png_byte name[5]; - * png_byte *data; - * png_size_t size; - * - * Note that libpng has already taken care of the CRC handling. - */ - - if (chunk->name[0] == 115 && chunk->name[1] == 84 && /* s T */ - chunk->name[2] == 69 && chunk->name[3] == 82) /* E R */ - { - /* Found sTER chunk */ - if (chunk->size != 1) - return (-1); /* Error return */ - - if (chunk->data[0] != 0 && chunk->data[0] != 1) - return (-1); /* Invalid mode */ - - if (set_location(png_ptr, my_user_chunk_data, have_sTER)) - { - my_user_chunk_data->sTER_mode=chunk->data[0]; - return (1); - } - - else - return (0); /* duplicate sTER - give it to libpng */ - } - - if (chunk->name[0] != 118 || chunk->name[1] != 112 || /* v p */ - chunk->name[2] != 65 || chunk->name[3] != 103) /* A g */ - return (0); /* Did not recognize */ - - /* Found ImageMagick vpAg chunk */ - - if (chunk->size != 9) - return (-1); /* Error return */ - - if (!set_location(png_ptr, my_user_chunk_data, have_vpAg)) - return (0); /* duplicate vpAg */ - - my_user_chunk_data->vpAg_width = png_get_uint_31(png_ptr, chunk->data); - my_user_chunk_data->vpAg_height = png_get_uint_31(png_ptr, chunk->data + 4); - my_user_chunk_data->vpAg_units = chunk->data[8]; - - return (1); -} - -#ifdef PNG_WRITE_SUPPORTED -static void -write_sTER_chunk(png_structp write_ptr) -{ - png_byte png_sTER[5] = {115, 84, 69, 82, '\0'}; - - if (verbose) - fprintf(STDERR, "\n stereo mode = %d\n", user_chunk_data.sTER_mode); - - png_write_chunk(write_ptr, png_sTER, &user_chunk_data.sTER_mode, 1); -} - -static void -write_vpAg_chunk(png_structp write_ptr) -{ - png_byte png_vpAg[5] = {118, 112, 65, 103, '\0'}; - - png_byte vpag_chunk_data[9]; - - if (verbose) - fprintf(STDERR, " vpAg = %lu x %lu, units = %d\n", - (unsigned long)user_chunk_data.vpAg_width, - (unsigned long)user_chunk_data.vpAg_height, - user_chunk_data.vpAg_units); - - png_save_uint_32(vpag_chunk_data, user_chunk_data.vpAg_width); - png_save_uint_32(vpag_chunk_data + 4, user_chunk_data.vpAg_height); - vpag_chunk_data[8] = user_chunk_data.vpAg_units; - png_write_chunk(write_ptr, png_vpAg, vpag_chunk_data, 9); -} - -static void -write_chunks(png_structp write_ptr, int location) -{ - int i; - - /* Notice that this preserves the original chunk order, however chunks - * intercepted by the callback will be written *after* chunks passed to - * libpng. This will actually reverse a pair of sTER chunks or a pair of - * vpAg chunks, resulting in an error later. This is not worth worrying - * about - the chunks should not be duplicated! - */ - for (i=0; i<2; ++i) - { - if (user_chunk_data.location[i] == (location | have_sTER)) - write_sTER_chunk(write_ptr); - - else if (user_chunk_data.location[i] == (location | have_vpAg)) - write_vpAg_chunk(write_ptr); - } -} -#endif /* PNG_WRITE_SUPPORTED */ -#else /* !PNG_READ_USER_CHUNKS_SUPPORTED */ -# define write_chunks(pp,loc) ((void)0) -#endif -/* END of code to demonstrate user chunk support */ - -/* START of code to check that libpng has the required text support; this only - * checks for the write support because if read support is missing the chunk - * will simply not be reported back to pngtest. - */ -#ifdef PNG_TEXT_SUPPORTED -static void -pngtest_check_text_support(png_const_structp png_ptr, png_textp text_ptr, - int num_text) -{ - while (num_text > 0) - { - switch (text_ptr[--num_text].compression) - { - case PNG_TEXT_COMPRESSION_NONE: - break; - - case PNG_TEXT_COMPRESSION_zTXt: -# ifndef PNG_WRITE_zTXt_SUPPORTED - ++unsupported_chunks; -# endif - break; - - case PNG_ITXT_COMPRESSION_NONE: - case PNG_ITXT_COMPRESSION_zTXt: -# ifndef PNG_WRITE_iTXt_SUPPORTED - ++unsupported_chunks; -# endif - break; - - default: - /* This is an error */ - png_error(png_ptr, "invalid text chunk compression field"); - break; - } - } -} -#endif -/* END of code to check that libpng has the required text support */ - -/* Test one file */ -static int -test_one_file(PNG_CONST char *inname, PNG_CONST char *outname) -{ - static png_FILE_p fpin; - static png_FILE_p fpout; /* "static" prevents setjmp corruption */ - pngtest_error_parameters error_parameters; - png_structp read_ptr; - png_infop read_info_ptr, end_info_ptr; -#ifdef PNG_WRITE_SUPPORTED - png_structp write_ptr; - png_infop write_info_ptr; - png_infop write_end_info_ptr; -#else - png_structp write_ptr = NULL; - png_infop write_info_ptr = NULL; - png_infop write_end_info_ptr = NULL; -#endif - png_bytep row_buf; - png_uint_32 y; - png_uint_32 width, height; - int num_pass, pass; - int bit_depth, color_type; - - row_buf = NULL; - error_parameters.file_name = inname; - - if ((fpin = fopen(inname, "rb")) == NULL) - { - fprintf(STDERR, "Could not find input file %s\n", inname); - return (1); - } - - if ((fpout = fopen(outname, "wb")) == NULL) - { - fprintf(STDERR, "Could not open output file %s\n", outname); - FCLOSE(fpin); - return (1); - } - - pngtest_debug("Allocating read and write structures"); -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - read_ptr = - png_create_read_struct_2(PNG_LIBPNG_VER_STRING, NULL, - NULL, NULL, NULL, png_debug_malloc, png_debug_free); -#else - read_ptr = - png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); -#endif - png_set_error_fn(read_ptr, &error_parameters, pngtest_error, - pngtest_warning); - -#ifdef PNG_WRITE_SUPPORTED -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - write_ptr = - png_create_write_struct_2(PNG_LIBPNG_VER_STRING, NULL, - NULL, NULL, NULL, png_debug_malloc, png_debug_free); -#else - write_ptr = - png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); -#endif - png_set_error_fn(write_ptr, &error_parameters, pngtest_error, - pngtest_warning); -#endif - pngtest_debug("Allocating read_info, write_info and end_info structures"); - read_info_ptr = png_create_info_struct(read_ptr); - end_info_ptr = png_create_info_struct(read_ptr); -#ifdef PNG_WRITE_SUPPORTED - write_info_ptr = png_create_info_struct(write_ptr); - write_end_info_ptr = png_create_info_struct(write_ptr); -#endif - -#ifdef PNG_READ_USER_CHUNKS_SUPPORTED - init_callback_info(read_info_ptr); - png_set_read_user_chunk_fn(read_ptr, &user_chunk_data, - read_user_chunk_callback); -#endif - -#ifdef PNG_SETJMP_SUPPORTED - pngtest_debug("Setting jmpbuf for read struct"); - if (setjmp(png_jmpbuf(read_ptr))) - { - fprintf(STDERR, "%s -> %s: libpng read error\n", inname, outname); - png_free(read_ptr, row_buf); - row_buf = NULL; - png_destroy_read_struct(&read_ptr, &read_info_ptr, &end_info_ptr); -#ifdef PNG_WRITE_SUPPORTED - png_destroy_info_struct(write_ptr, &write_end_info_ptr); - png_destroy_write_struct(&write_ptr, &write_info_ptr); -#endif - FCLOSE(fpin); - FCLOSE(fpout); - return (1); - } - -#ifdef PNG_WRITE_SUPPORTED - pngtest_debug("Setting jmpbuf for write struct"); - - if (setjmp(png_jmpbuf(write_ptr))) - { - fprintf(STDERR, "%s -> %s: libpng write error\n", inname, outname); - png_destroy_read_struct(&read_ptr, &read_info_ptr, &end_info_ptr); - png_destroy_info_struct(write_ptr, &write_end_info_ptr); -#ifdef PNG_WRITE_SUPPORTED - png_destroy_write_struct(&write_ptr, &write_info_ptr); -#endif - FCLOSE(fpin); - FCLOSE(fpout); - return (1); - } -#endif -#endif - - if (strict) - { - /* Treat png_benign_error() as errors on read */ - png_set_benign_errors(read_ptr, 0); - -#ifdef PNG_WRITE_SUPPORTED - /* Treat them as errors on write */ - png_set_benign_errors(write_ptr, 0); -#endif - - /* if strict is not set, then app warnings and errors are treated as - * warnings in release builds, but not in unstable builds; this can be - * changed with '--relaxed'. - */ - } - - else if (relaxed) - { - /* Allow application (pngtest) errors and warnings to pass */ - png_set_benign_errors(read_ptr, 1); - -#ifdef PNG_WRITE_SUPPORTED - png_set_benign_errors(write_ptr, 1); -#endif - } - - pngtest_debug("Initializing input and output streams"); -#ifdef PNG_STDIO_SUPPORTED - png_init_io(read_ptr, fpin); -# ifdef PNG_WRITE_SUPPORTED - png_init_io(write_ptr, fpout); -# endif -#else - png_set_read_fn(read_ptr, (png_voidp)fpin, pngtest_read_data); -# ifdef PNG_WRITE_SUPPORTED - png_set_write_fn(write_ptr, (png_voidp)fpout, pngtest_write_data, -# ifdef PNG_WRITE_FLUSH_SUPPORTED - pngtest_flush); -# else - NULL); -# endif -# endif -#endif - - if (status_dots_requested == 1) - { -#ifdef PNG_WRITE_SUPPORTED - png_set_write_status_fn(write_ptr, write_row_callback); -#endif - png_set_read_status_fn(read_ptr, read_row_callback); - } - - else - { -#ifdef PNG_WRITE_SUPPORTED - png_set_write_status_fn(write_ptr, NULL); -#endif - png_set_read_status_fn(read_ptr, NULL); - } - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED - { - int i; - - for (i = 0; i<256; i++) - filters_used[i] = 0; - - png_set_read_user_transform_fn(read_ptr, count_filters); - } -#endif -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED - zero_samples = 0; - png_set_write_user_transform_fn(write_ptr, count_zero_samples); -#endif - -#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED - /* Preserve all the unknown chunks, if possible. If this is disabled then, - * even if the png_{get,set}_unknown_chunks stuff is enabled, we can't use - * libpng to *save* the unknown chunks on read (because we can't switch the - * save option on!) - * - * Notice that if SET_UNKNOWN_CHUNKS is *not* supported read will discard all - * unknown chunks and write will write them all. - */ -#ifdef PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED - png_set_keep_unknown_chunks(read_ptr, PNG_HANDLE_CHUNK_ALWAYS, - NULL, 0); -#endif -#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED - png_set_keep_unknown_chunks(write_ptr, PNG_HANDLE_CHUNK_ALWAYS, - NULL, 0); -#endif -#endif - - pngtest_debug("Reading info struct"); - png_read_info(read_ptr, read_info_ptr); - -#ifdef PNG_READ_USER_CHUNKS_SUPPORTED - /* This is a bit of a hack; there is no obvious way in the callback function - * to determine that the chunks before the first IDAT have been read, so - * remove the info_ptr (which is only used to determine position relative to - * PLTE) here to indicate that we are after the IDAT. - */ - user_chunk_data.info_ptr = NULL; -#endif - - pngtest_debug("Transferring info struct"); - { - int interlace_type, compression_type, filter_type; - - if (png_get_IHDR(read_ptr, read_info_ptr, &width, &height, &bit_depth, - &color_type, &interlace_type, &compression_type, &filter_type)) - { - png_set_IHDR(write_ptr, write_info_ptr, width, height, bit_depth, -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - color_type, interlace_type, compression_type, filter_type); -#else - color_type, PNG_INTERLACE_NONE, compression_type, filter_type); -#endif - } - } -#ifdef PNG_FIXED_POINT_SUPPORTED -#ifdef PNG_cHRM_SUPPORTED - { - png_fixed_point white_x, white_y, red_x, red_y, green_x, green_y, blue_x, - blue_y; - - if (png_get_cHRM_fixed(read_ptr, read_info_ptr, &white_x, &white_y, - &red_x, &red_y, &green_x, &green_y, &blue_x, &blue_y)) - { - png_set_cHRM_fixed(write_ptr, write_info_ptr, white_x, white_y, red_x, - red_y, green_x, green_y, blue_x, blue_y); - } - } -#endif -#ifdef PNG_gAMA_SUPPORTED - { - png_fixed_point gamma; - - if (png_get_gAMA_fixed(read_ptr, read_info_ptr, &gamma)) - png_set_gAMA_fixed(write_ptr, write_info_ptr, gamma); - } -#endif -#else /* Use floating point versions */ -#ifdef PNG_FLOATING_POINT_SUPPORTED -#ifdef PNG_cHRM_SUPPORTED - { - double white_x, white_y, red_x, red_y, green_x, green_y, blue_x, - blue_y; - - if (png_get_cHRM(read_ptr, read_info_ptr, &white_x, &white_y, &red_x, - &red_y, &green_x, &green_y, &blue_x, &blue_y)) - { - png_set_cHRM(write_ptr, write_info_ptr, white_x, white_y, red_x, - red_y, green_x, green_y, blue_x, blue_y); - } - } -#endif -#ifdef PNG_gAMA_SUPPORTED - { - double gamma; - - if (png_get_gAMA(read_ptr, read_info_ptr, &gamma)) - png_set_gAMA(write_ptr, write_info_ptr, gamma); - } -#endif -#endif /* Floating point */ -#endif /* Fixed point */ -#ifdef PNG_iCCP_SUPPORTED - { - png_charp name; - png_bytep profile; - png_uint_32 proflen; - int compression_type; - - if (png_get_iCCP(read_ptr, read_info_ptr, &name, &compression_type, - &profile, &proflen)) - { - png_set_iCCP(write_ptr, write_info_ptr, name, compression_type, - profile, proflen); - } - } -#endif -#ifdef PNG_sRGB_SUPPORTED - { - int intent; - - if (png_get_sRGB(read_ptr, read_info_ptr, &intent)) - png_set_sRGB(write_ptr, write_info_ptr, intent); - } -#endif - { - png_colorp palette; - int num_palette; - - if (png_get_PLTE(read_ptr, read_info_ptr, &palette, &num_palette)) - png_set_PLTE(write_ptr, write_info_ptr, palette, num_palette); - } -#ifdef PNG_bKGD_SUPPORTED - { - png_color_16p background; - - if (png_get_bKGD(read_ptr, read_info_ptr, &background)) - { - png_set_bKGD(write_ptr, write_info_ptr, background); - } - } -#endif -#ifdef PNG_hIST_SUPPORTED - { - png_uint_16p hist; - - if (png_get_hIST(read_ptr, read_info_ptr, &hist)) - png_set_hIST(write_ptr, write_info_ptr, hist); - } -#endif -#ifdef PNG_oFFs_SUPPORTED - { - png_int_32 offset_x, offset_y; - int unit_type; - - if (png_get_oFFs(read_ptr, read_info_ptr, &offset_x, &offset_y, - &unit_type)) - { - png_set_oFFs(write_ptr, write_info_ptr, offset_x, offset_y, unit_type); - } - } -#endif -#ifdef PNG_pCAL_SUPPORTED - { - png_charp purpose, units; - png_charpp params; - png_int_32 X0, X1; - int type, nparams; - - if (png_get_pCAL(read_ptr, read_info_ptr, &purpose, &X0, &X1, &type, - &nparams, &units, ¶ms)) - { - png_set_pCAL(write_ptr, write_info_ptr, purpose, X0, X1, type, - nparams, units, params); - } - } -#endif -#ifdef PNG_pHYs_SUPPORTED - { - png_uint_32 res_x, res_y; - int unit_type; - - if (png_get_pHYs(read_ptr, read_info_ptr, &res_x, &res_y, &unit_type)) - png_set_pHYs(write_ptr, write_info_ptr, res_x, res_y, unit_type); - } -#endif -#ifdef PNG_sBIT_SUPPORTED - { - png_color_8p sig_bit; - - if (png_get_sBIT(read_ptr, read_info_ptr, &sig_bit)) - png_set_sBIT(write_ptr, write_info_ptr, sig_bit); - } -#endif -#ifdef PNG_sCAL_SUPPORTED -#if defined(PNG_FLOATING_POINT_SUPPORTED) && \ - defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) - { - int unit; - double scal_width, scal_height; - - if (png_get_sCAL(read_ptr, read_info_ptr, &unit, &scal_width, - &scal_height)) - { - png_set_sCAL(write_ptr, write_info_ptr, unit, scal_width, scal_height); - } - } -#else -#ifdef PNG_FIXED_POINT_SUPPORTED - { - int unit; - png_charp scal_width, scal_height; - - if (png_get_sCAL_s(read_ptr, read_info_ptr, &unit, &scal_width, - &scal_height)) - { - png_set_sCAL_s(write_ptr, write_info_ptr, unit, scal_width, - scal_height); - } - } -#endif -#endif -#endif -#ifdef PNG_TEXT_SUPPORTED - { - png_textp text_ptr; - int num_text; - - if (png_get_text(read_ptr, read_info_ptr, &text_ptr, &num_text) > 0) - { - pngtest_debug1("Handling %d iTXt/tEXt/zTXt chunks", num_text); - - pngtest_check_text_support(read_ptr, text_ptr, num_text); - - if (verbose) - { - int i; - - printf("\n"); - for (i=0; igray > sample_max) || - (color_type == PNG_COLOR_TYPE_RGB && - ((int)trans_color->red > sample_max || - (int)trans_color->green > sample_max || - (int)trans_color->blue > sample_max)))) - png_set_tRNS(write_ptr, write_info_ptr, trans_alpha, num_trans, - trans_color); - } - } -#endif -#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED - { - png_unknown_chunkp unknowns; - int num_unknowns = png_get_unknown_chunks(read_ptr, read_info_ptr, - &unknowns); - - if (num_unknowns) - { - png_set_unknown_chunks(write_ptr, write_info_ptr, unknowns, - num_unknowns); -#if PNG_LIBPNG_VER < 10600 - /* Copy the locations from the read_info_ptr. The automatically - * generated locations in write_end_info_ptr are wrong prior to 1.6.0 - * because they are reset from the write pointer (removed in 1.6.0). - */ - { - int i; - for (i = 0; i < num_unknowns; i++) - png_set_unknown_chunk_location(write_ptr, write_info_ptr, i, - unknowns[i].location); - } -#endif - } - } -#endif - -#ifdef PNG_WRITE_SUPPORTED - pngtest_debug("Writing info struct"); - - /* Write the info in two steps so that if we write the 'unknown' chunks here - * they go to the correct place. - */ - png_write_info_before_PLTE(write_ptr, write_info_ptr); - - write_chunks(write_ptr, before_PLTE); /* before PLTE */ - - png_write_info(write_ptr, write_info_ptr); - - write_chunks(write_ptr, before_IDAT); /* after PLTE */ -#endif - -#ifdef SINGLE_ROWBUF_ALLOC - pngtest_debug("Allocating row buffer..."); - row_buf = (png_bytep)png_malloc(read_ptr, - png_get_rowbytes(read_ptr, read_info_ptr)); - - pngtest_debug1("\t0x%08lx", (unsigned long)row_buf); -#endif /* SINGLE_ROWBUF_ALLOC */ - pngtest_debug("Writing row data"); - -#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ - defined(PNG_WRITE_INTERLACING_SUPPORTED) - num_pass = png_set_interlace_handling(read_ptr); -# ifdef PNG_WRITE_SUPPORTED - png_set_interlace_handling(write_ptr); -# endif -#else - num_pass = 1; -#endif - -#ifdef PNGTEST_TIMING - t_stop = (float)clock(); - t_misc += (t_stop - t_start); - t_start = t_stop; -#endif - for (pass = 0; pass < num_pass; pass++) - { - pngtest_debug1("Writing row data for pass %d", pass); - for (y = 0; y < height; y++) - { -#ifndef SINGLE_ROWBUF_ALLOC - pngtest_debug2("Allocating row buffer (pass %d, y = %u)...", pass, y); - row_buf = (png_bytep)png_malloc(read_ptr, - png_get_rowbytes(read_ptr, read_info_ptr)); - - pngtest_debug2("\t0x%08lx (%u bytes)", (unsigned long)row_buf, - png_get_rowbytes(read_ptr, read_info_ptr)); - -#endif /* !SINGLE_ROWBUF_ALLOC */ - png_read_rows(read_ptr, (png_bytepp)&row_buf, NULL, 1); - -#ifdef PNG_WRITE_SUPPORTED -#ifdef PNGTEST_TIMING - t_stop = (float)clock(); - t_decode += (t_stop - t_start); - t_start = t_stop; -#endif - png_write_rows(write_ptr, (png_bytepp)&row_buf, 1); -#ifdef PNGTEST_TIMING - t_stop = (float)clock(); - t_encode += (t_stop - t_start); - t_start = t_stop; -#endif -#endif /* PNG_WRITE_SUPPORTED */ - -#ifndef SINGLE_ROWBUF_ALLOC - pngtest_debug2("Freeing row buffer (pass %d, y = %u)", pass, y); - png_free(read_ptr, row_buf); - row_buf = NULL; -#endif /* !SINGLE_ROWBUF_ALLOC */ - } - } - -#ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -# ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED - png_free_data(read_ptr, read_info_ptr, PNG_FREE_UNKN, -1); -# endif -# ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED - png_free_data(write_ptr, write_info_ptr, PNG_FREE_UNKN, -1); -# endif -#endif - - pngtest_debug("Reading and writing end_info data"); - - png_read_end(read_ptr, end_info_ptr); -#ifdef PNG_TEXT_SUPPORTED - { - png_textp text_ptr; - int num_text; - - if (png_get_text(read_ptr, end_info_ptr, &text_ptr, &num_text) > 0) - { - pngtest_debug1("Handling %d iTXt/tEXt/zTXt chunks", num_text); - - pngtest_check_text_support(read_ptr, text_ptr, num_text); - - if (verbose) - { - int i; - - printf("\n"); - for (i=0; i 0) - { - /* We don't really expect to get here because of the setjmp handling - * above, but this is safe. - */ - fprintf(STDERR, "\n %s: %d libpng errors found (%d warnings)", - inname, error_count, warning_count); - - if (strict != 0) - return (1); - } - -# ifdef PNG_WRITE_SUPPORTED - /* If there we no write support nothing was written! */ - else if (unsupported_chunks > 0) - { - fprintf(STDERR, "\n %s: unsupported chunks (%d)%s", - inname, unsupported_chunks, strict ? ": IGNORED --strict!" : ""); - } -# endif - - else if (warning_count > 0) - { - fprintf(STDERR, "\n %s: %d libpng warnings found", - inname, warning_count); - - if (strict != 0) - return (1); - } - - pngtest_debug("Opening files for comparison"); - if ((fpin = fopen(inname, "rb")) == NULL) - { - fprintf(STDERR, "Could not find file %s\n", inname); - return (1); - } - - if ((fpout = fopen(outname, "rb")) == NULL) - { - fprintf(STDERR, "Could not find file %s\n", outname); - FCLOSE(fpin); - return (1); - } - -#ifdef PNG_WRITE_SUPPORTED /* else nothing was written */ - { - for (;;) - { - static int wrote_question = 0; - png_size_t num_in, num_out; - char inbuf[256], outbuf[256]; - - num_in = fread(inbuf, 1, sizeof inbuf, fpin); - num_out = fread(outbuf, 1, sizeof outbuf, fpout); - - if (num_in != num_out) - { - fprintf(STDERR, "\nFiles %s and %s are of a different size\n", - inname, outname); - - if (wrote_question == 0 && unsupported_chunks == 0) - { - fprintf(STDERR, - " Was %s written with the same maximum IDAT chunk size (%d bytes),", - inname, PNG_ZBUF_SIZE); - fprintf(STDERR, - "\n filtering heuristic (libpng default), compression"); - fprintf(STDERR, - " level (zlib default),\n and zlib version (%s)?\n\n", - ZLIB_VERSION); - wrote_question = 1; - } - - FCLOSE(fpin); - FCLOSE(fpout); - - if (strict != 0 && unsupported_chunks == 0) - return (1); - - else - return (0); - } - - if (!num_in) - break; - - if (memcmp(inbuf, outbuf, num_in)) - { - fprintf(STDERR, "\nFiles %s and %s are different\n", inname, - outname); - - if (wrote_question == 0 && unsupported_chunks == 0) - { - fprintf(STDERR, - " Was %s written with the same maximum IDAT chunk size (%d bytes),", - inname, PNG_ZBUF_SIZE); - fprintf(STDERR, - "\n filtering heuristic (libpng default), compression"); - fprintf(STDERR, - " level (zlib default),\n and zlib version (%s)?\n\n", - ZLIB_VERSION); - wrote_question = 1; - } - - FCLOSE(fpin); - FCLOSE(fpout); - - /* NOTE: the unsupported_chunks escape is permitted here because - * unsupported text chunk compression will result in the compression - * mode being changed (to NONE) yet, in the test case, the result - * can be exactly the same size! - */ - if (strict != 0 && unsupported_chunks == 0) - return (1); - - else - return (0); - } - } - } -#endif /* PNG_WRITE_SUPPORTED */ - - FCLOSE(fpin); - FCLOSE(fpout); - - return (0); -} - -/* Input and output filenames */ -#ifdef RISCOS -static PNG_CONST char *inname = "pngtest/png"; -static PNG_CONST char *outname = "pngout/png"; -#else -static PNG_CONST char *inname = "pngtest.png"; -static PNG_CONST char *outname = "pngout.png"; -#endif - -int -main(int argc, char *argv[]) -{ - int multiple = 0; - int ierror = 0; - - fprintf(STDERR, "\n Testing libpng version %s\n", PNG_LIBPNG_VER_STRING); - fprintf(STDERR, " with zlib version %s\n", ZLIB_VERSION); - fprintf(STDERR, "%s", png_get_copyright(NULL)); - /* Show the version of libpng used in building the library */ - fprintf(STDERR, " library (%lu):%s", - (unsigned long)png_access_version_number(), - png_get_header_version(NULL)); - - /* Show the version of libpng used in building the application */ - fprintf(STDERR, " pngtest (%lu):%s", (unsigned long)PNG_LIBPNG_VER, - PNG_HEADER_VERSION_STRING); - - /* Do some consistency checking on the memory allocation settings, I'm - * not sure this matters, but it is nice to know, the first of these - * tests should be impossible because of the way the macros are set - * in pngconf.h - */ -#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K) - fprintf(STDERR, " NOTE: Zlib compiled for max 64k, libpng not\n"); -#endif - /* I think the following can happen. */ -#if !defined(MAXSEG_64K) && defined(PNG_MAX_MALLOC_64K) - fprintf(STDERR, " NOTE: libpng compiled for max 64k, zlib not\n"); -#endif - - if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING)) - { - fprintf(STDERR, - "Warning: versions are different between png.h and png.c\n"); - fprintf(STDERR, " png.h version: %s\n", PNG_LIBPNG_VER_STRING); - fprintf(STDERR, " png.c version: %s\n\n", png_libpng_ver); - ++ierror; - } - - if (argc > 1) - { - if (strcmp(argv[1], "-m") == 0) - { - multiple = 1; - status_dots_requested = 0; - } - - else if (strcmp(argv[1], "-mv") == 0 || - strcmp(argv[1], "-vm") == 0 ) - { - multiple = 1; - verbose = 1; - status_dots_requested = 1; - } - - else if (strcmp(argv[1], "-v") == 0) - { - verbose = 1; - status_dots_requested = 1; - inname = argv[2]; - } - - else if (strcmp(argv[1], "--strict") == 0) - { - status_dots_requested = 0; - verbose = 1; - inname = argv[2]; - strict++; - relaxed = 0; - } - - else if (strcmp(argv[1], "--relaxed") == 0) - { - status_dots_requested = 0; - verbose = 1; - inname = argv[2]; - strict = 0; - relaxed++; - } - - else - { - inname = argv[1]; - status_dots_requested = 0; - } - } - - if (!multiple && argc == 3 + verbose) - outname = argv[2 + verbose]; - - if ((!multiple && argc > 3 + verbose) || (multiple && argc < 2)) - { - fprintf(STDERR, - "usage: %s [infile.png] [outfile.png]\n\t%s -m {infile.png}\n", - argv[0], argv[0]); - fprintf(STDERR, - " reads/writes one PNG file (without -m) or multiple files (-m)\n"); - fprintf(STDERR, - " with -m %s is used as a temporary file\n", outname); - exit(1); - } - - if (multiple) - { - int i; -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - int allocation_now = current_allocation; -#endif - for (i=2; isize, - (unsigned int)pinfo->pointer); - pinfo = pinfo->next; - } - } -#endif - } -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - fprintf(STDERR, " Current memory allocation: %10d bytes\n", - current_allocation); - fprintf(STDERR, " Maximum memory allocation: %10d bytes\n", - maximum_allocation); - fprintf(STDERR, " Total memory allocation: %10d bytes\n", - total_allocation); - fprintf(STDERR, " Number of allocations: %10d\n", - num_allocations); -#endif - } - - else - { - int i; - for (i = 0; i<3; ++i) - { - int kerror; -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - int allocation_now = current_allocation; -#endif - if (i == 1) - status_dots_requested = 1; - - else if (verbose == 0) - status_dots_requested = 0; - - if (i == 0 || verbose == 1 || ierror != 0) - fprintf(STDERR, "\n Testing %s:", inname); - - kerror = test_one_file(inname, outname); - - if (kerror == 0) - { - if (verbose == 1 || i == 2) - { -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED - int k; -#endif -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED - fprintf(STDERR, "\n PASS (%lu zero samples)\n", - (unsigned long)zero_samples); -#else - fprintf(STDERR, " PASS\n"); -#endif -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED - for (k = 0; k<256; k++) - if (filters_used[k]) - fprintf(STDERR, " Filter %d was used %lu times\n", - k, (unsigned long)filters_used[k]); -#endif -#ifdef PNG_TIME_RFC1123_SUPPORTED - if (tIME_chunk_present != 0) - fprintf(STDERR, " tIME = %s\n", tIME_string); -#endif /* PNG_TIME_RFC1123_SUPPORTED */ - } - } - - else - { - if (verbose == 0 && i != 2) - fprintf(STDERR, "\n Testing %s:", inname); - - fprintf(STDERR, " FAIL\n"); - ierror += kerror; - } -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - if (allocation_now != current_allocation) - fprintf(STDERR, "MEMORY ERROR: %d bytes lost\n", - current_allocation - allocation_now); - - if (current_allocation != 0) - { - memory_infop pinfo = pinformation; - - fprintf(STDERR, "MEMORY ERROR: %d bytes still allocated\n", - current_allocation); - - while (pinfo != NULL) - { - fprintf(STDERR, " %lu bytes at %x\n", - (unsigned long)pinfo->size, (unsigned int)pinfo->pointer); - pinfo = pinfo->next; - } - } -#endif - } -#if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG - fprintf(STDERR, " Current memory allocation: %10d bytes\n", - current_allocation); - fprintf(STDERR, " Maximum memory allocation: %10d bytes\n", - maximum_allocation); - fprintf(STDERR, " Total memory allocation: %10d bytes\n", - total_allocation); - fprintf(STDERR, " Number of allocations: %10d\n", - num_allocations); -#endif - } - -#ifdef PNGTEST_TIMING - t_stop = (float)clock(); - t_misc += (t_stop - t_start); - t_start = t_stop; - fprintf(STDERR, " CPU time used = %.3f seconds", - (t_misc+t_decode+t_encode)/(float)CLOCKS_PER_SEC); - fprintf(STDERR, " (decoding %.3f,\n", - t_decode/(float)CLOCKS_PER_SEC); - fprintf(STDERR, " encoding %.3f ,", - t_encode/(float)CLOCKS_PER_SEC); - fprintf(STDERR, " other %.3f seconds)\n\n", - t_misc/(float)CLOCKS_PER_SEC); -#endif - - if (ierror == 0) - fprintf(STDERR, " libpng passes test\n"); - - else - fprintf(STDERR, " libpng FAILS test\n"); - - return (int)(ierror != 0); -} -#else -int -main(void) -{ - fprintf(STDERR, - " test ignored because libpng was not built with read support\n"); - /* And skip this test */ - return 77; -} -#endif - -/* Generate a compiler error if there is an old png.h in the search path. */ -typedef png_libpng_version_1_6_8beta03 Your_png_h_is_not_version_1_6_8beta03; diff --git a/io2d/src/3rd-party/libpng/pngtest.png b/io2d/src/3rd-party/libpng/pngtest.png deleted file mode 100644 index cb3fef4cf844324953cc45f21b479a338cb9c288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8695 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 VS0jWSKIQ-b002ovPDHLkV1k2400;m8 diff --git a/io2d/src/3rd-party/libpng/pngtrans.c b/io2d/src/3rd-party/libpng/pngtrans.c deleted file mode 100644 index 8f8bc5d..0000000 --- a/io2d/src/3rd-party/libpng/pngtrans.c +++ /dev/null @@ -1,841 +0,0 @@ - -/* pngtrans.c - transforms the data in a row (used by both readers and writers) - * - * Last changed in libpng 1.6.2 [April 25, 2013] - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#include "pngpriv.h" - -#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) - -#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) -/* Turn on BGR-to-RGB mapping */ -void PNGAPI -png_set_bgr(png_structrp png_ptr) -{ - png_debug(1, "in png_set_bgr"); - - if (png_ptr == NULL) - return; - - png_ptr->transformations |= PNG_BGR; -} -#endif - -#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) -/* Turn on 16 bit byte swapping */ -void PNGAPI -png_set_swap(png_structrp png_ptr) -{ - png_debug(1, "in png_set_swap"); - - if (png_ptr == NULL) - return; - - if (png_ptr->bit_depth == 16) - png_ptr->transformations |= PNG_SWAP_BYTES; -} -#endif - -#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) -/* Turn on pixel packing */ -void PNGAPI -png_set_packing(png_structrp png_ptr) -{ - png_debug(1, "in png_set_packing"); - - if (png_ptr == NULL) - return; - - if (png_ptr->bit_depth < 8) - { - png_ptr->transformations |= PNG_PACK; - png_ptr->usr_bit_depth = 8; - } -} -#endif - -#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED) -/* Turn on packed pixel swapping */ -void PNGAPI -png_set_packswap(png_structrp png_ptr) -{ - png_debug(1, "in png_set_packswap"); - - if (png_ptr == NULL) - return; - - if (png_ptr->bit_depth < 8) - png_ptr->transformations |= PNG_PACKSWAP; -} -#endif - -#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) -void PNGAPI -png_set_shift(png_structrp png_ptr, png_const_color_8p true_bits) -{ - png_debug(1, "in png_set_shift"); - - if (png_ptr == NULL) - return; - - png_ptr->transformations |= PNG_SHIFT; - png_ptr->shift = *true_bits; -} -#endif - -#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ - defined(PNG_WRITE_INTERLACING_SUPPORTED) -int PNGAPI -png_set_interlace_handling(png_structrp png_ptr) -{ - png_debug(1, "in png_set_interlace handling"); - - if (png_ptr && png_ptr->interlaced) - { - png_ptr->transformations |= PNG_INTERLACE; - return (7); - } - - return (1); -} -#endif - -#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) -/* Add a filler byte on read, or remove a filler or alpha byte on write. - * The filler type has changed in v0.95 to allow future 2-byte fillers - * for 48-bit input data, as well as to avoid problems with some compilers - * that don't like bytes as parameters. - */ -void PNGAPI -png_set_filler(png_structrp png_ptr, png_uint_32 filler, int filler_loc) -{ - png_debug(1, "in png_set_filler"); - - if (png_ptr == NULL) - return; - - /* In libpng 1.6 it is possible to determine whether this is a read or write - * operation and therefore to do more checking here for a valid call. - */ - if (png_ptr->mode & PNG_IS_READ_STRUCT) - { -# ifdef PNG_READ_FILLER_SUPPORTED - /* On read png_set_filler is always valid, regardless of the base PNG - * format, because other transformations can give a format where the - * filler code can execute (basically an 8 or 16-bit component RGB or G - * format.) - * - * NOTE: usr_channels is not used by the read code! (This has led to - * confusion in the past.) The filler is only used in the read code. - */ - png_ptr->filler = (png_uint_16)filler; -# else - png_app_error(png_ptr, "png_set_filler not supported on read"); - PNG_UNUSED(filler) /* not used in the write case */ - return; -# endif - } - - else /* write */ - { -# ifdef PNG_WRITE_FILLER_SUPPORTED - /* On write the usr_channels parameter must be set correctly at the - * start to record the number of channels in the app-supplied data. - */ - switch (png_ptr->color_type) - { - case PNG_COLOR_TYPE_RGB: - png_ptr->usr_channels = 4; - break; - - case PNG_COLOR_TYPE_GRAY: - if (png_ptr->bit_depth >= 8) - { - png_ptr->usr_channels = 2; - break; - } - - else - { - /* There simply isn't any code in libpng to strip out bits - * from bytes when the components are less than a byte in - * size! - */ - png_app_error(png_ptr, - "png_set_filler is invalid for low bit depth gray output"); - return; - } - - default: - png_app_error(png_ptr, - "png_set_filler: inappropriate color type"); - return; - } -# else - png_app_error(png_ptr, "png_set_filler not supported on write"); - return; -# endif - } - - /* Here on success - libpng supports the operation, set the transformation - * and the flag to say where the filler channel is. - */ - png_ptr->transformations |= PNG_FILLER; - - if (filler_loc == PNG_FILLER_AFTER) - png_ptr->flags |= PNG_FLAG_FILLER_AFTER; - - else - png_ptr->flags &= ~PNG_FLAG_FILLER_AFTER; -} - -/* Added to libpng-1.2.7 */ -void PNGAPI -png_set_add_alpha(png_structrp png_ptr, png_uint_32 filler, int filler_loc) -{ - png_debug(1, "in png_set_add_alpha"); - - if (png_ptr == NULL) - return; - - png_set_filler(png_ptr, filler, filler_loc); - /* The above may fail to do anything. */ - if (png_ptr->transformations & PNG_FILLER) - png_ptr->transformations |= PNG_ADD_ALPHA; -} - -#endif - -#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ - defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) -void PNGAPI -png_set_swap_alpha(png_structrp png_ptr) -{ - png_debug(1, "in png_set_swap_alpha"); - - if (png_ptr == NULL) - return; - - png_ptr->transformations |= PNG_SWAP_ALPHA; -} -#endif - -#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ - defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) -void PNGAPI -png_set_invert_alpha(png_structrp png_ptr) -{ - png_debug(1, "in png_set_invert_alpha"); - - if (png_ptr == NULL) - return; - - png_ptr->transformations |= PNG_INVERT_ALPHA; -} -#endif - -#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) -void PNGAPI -png_set_invert_mono(png_structrp png_ptr) -{ - png_debug(1, "in png_set_invert_mono"); - - if (png_ptr == NULL) - return; - - png_ptr->transformations |= PNG_INVERT_MONO; -} - -/* Invert monochrome grayscale data */ -void /* PRIVATE */ -png_do_invert(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_invert"); - - /* This test removed from libpng version 1.0.13 and 1.2.0: - * if (row_info->bit_depth == 1 && - */ - if (row_info->color_type == PNG_COLOR_TYPE_GRAY) - { - png_bytep rp = row; - png_size_t i; - png_size_t istop = row_info->rowbytes; - - for (i = 0; i < istop; i++) - { - *rp = (png_byte)(~(*rp)); - rp++; - } - } - - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA && - row_info->bit_depth == 8) - { - png_bytep rp = row; - png_size_t i; - png_size_t istop = row_info->rowbytes; - - for (i = 0; i < istop; i += 2) - { - *rp = (png_byte)(~(*rp)); - rp += 2; - } - } - -#ifdef PNG_16BIT_SUPPORTED - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA && - row_info->bit_depth == 16) - { - png_bytep rp = row; - png_size_t i; - png_size_t istop = row_info->rowbytes; - - for (i = 0; i < istop; i += 4) - { - *rp = (png_byte)(~(*rp)); - *(rp + 1) = (png_byte)(~(*(rp + 1))); - rp += 4; - } - } -#endif -} -#endif - -#ifdef PNG_16BIT_SUPPORTED -#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) -/* Swaps byte order on 16 bit depth images */ -void /* PRIVATE */ -png_do_swap(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_swap"); - - if (row_info->bit_depth == 16) - { - png_bytep rp = row; - png_uint_32 i; - png_uint_32 istop= row_info->width * row_info->channels; - - for (i = 0; i < istop; i++, rp += 2) - { - png_byte t = *rp; - *rp = *(rp + 1); - *(rp + 1) = t; - } - } -} -#endif -#endif - -#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED) -static PNG_CONST png_byte onebppswaptable[256] = { - 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, - 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0, - 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8, - 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8, - 0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4, - 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4, - 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC, - 0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC, - 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2, - 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2, - 0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA, - 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA, - 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6, - 0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6, - 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE, - 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE, - 0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1, - 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1, - 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9, - 0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9, - 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5, - 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5, - 0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED, - 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD, - 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3, - 0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3, - 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB, - 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB, - 0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7, - 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7, - 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, - 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF -}; - -static PNG_CONST png_byte twobppswaptable[256] = { - 0x00, 0x40, 0x80, 0xC0, 0x10, 0x50, 0x90, 0xD0, - 0x20, 0x60, 0xA0, 0xE0, 0x30, 0x70, 0xB0, 0xF0, - 0x04, 0x44, 0x84, 0xC4, 0x14, 0x54, 0x94, 0xD4, - 0x24, 0x64, 0xA4, 0xE4, 0x34, 0x74, 0xB4, 0xF4, - 0x08, 0x48, 0x88, 0xC8, 0x18, 0x58, 0x98, 0xD8, - 0x28, 0x68, 0xA8, 0xE8, 0x38, 0x78, 0xB8, 0xF8, - 0x0C, 0x4C, 0x8C, 0xCC, 0x1C, 0x5C, 0x9C, 0xDC, - 0x2C, 0x6C, 0xAC, 0xEC, 0x3C, 0x7C, 0xBC, 0xFC, - 0x01, 0x41, 0x81, 0xC1, 0x11, 0x51, 0x91, 0xD1, - 0x21, 0x61, 0xA1, 0xE1, 0x31, 0x71, 0xB1, 0xF1, - 0x05, 0x45, 0x85, 0xC5, 0x15, 0x55, 0x95, 0xD5, - 0x25, 0x65, 0xA5, 0xE5, 0x35, 0x75, 0xB5, 0xF5, - 0x09, 0x49, 0x89, 0xC9, 0x19, 0x59, 0x99, 0xD9, - 0x29, 0x69, 0xA9, 0xE9, 0x39, 0x79, 0xB9, 0xF9, - 0x0D, 0x4D, 0x8D, 0xCD, 0x1D, 0x5D, 0x9D, 0xDD, - 0x2D, 0x6D, 0xAD, 0xED, 0x3D, 0x7D, 0xBD, 0xFD, - 0x02, 0x42, 0x82, 0xC2, 0x12, 0x52, 0x92, 0xD2, - 0x22, 0x62, 0xA2, 0xE2, 0x32, 0x72, 0xB2, 0xF2, - 0x06, 0x46, 0x86, 0xC6, 0x16, 0x56, 0x96, 0xD6, - 0x26, 0x66, 0xA6, 0xE6, 0x36, 0x76, 0xB6, 0xF6, - 0x0A, 0x4A, 0x8A, 0xCA, 0x1A, 0x5A, 0x9A, 0xDA, - 0x2A, 0x6A, 0xAA, 0xEA, 0x3A, 0x7A, 0xBA, 0xFA, - 0x0E, 0x4E, 0x8E, 0xCE, 0x1E, 0x5E, 0x9E, 0xDE, - 0x2E, 0x6E, 0xAE, 0xEE, 0x3E, 0x7E, 0xBE, 0xFE, - 0x03, 0x43, 0x83, 0xC3, 0x13, 0x53, 0x93, 0xD3, - 0x23, 0x63, 0xA3, 0xE3, 0x33, 0x73, 0xB3, 0xF3, - 0x07, 0x47, 0x87, 0xC7, 0x17, 0x57, 0x97, 0xD7, - 0x27, 0x67, 0xA7, 0xE7, 0x37, 0x77, 0xB7, 0xF7, - 0x0B, 0x4B, 0x8B, 0xCB, 0x1B, 0x5B, 0x9B, 0xDB, - 0x2B, 0x6B, 0xAB, 0xEB, 0x3B, 0x7B, 0xBB, 0xFB, - 0x0F, 0x4F, 0x8F, 0xCF, 0x1F, 0x5F, 0x9F, 0xDF, - 0x2F, 0x6F, 0xAF, 0xEF, 0x3F, 0x7F, 0xBF, 0xFF -}; - -static PNG_CONST png_byte fourbppswaptable[256] = { - 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, - 0x80, 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xF0, - 0x01, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71, - 0x81, 0x91, 0xA1, 0xB1, 0xC1, 0xD1, 0xE1, 0xF1, - 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x62, 0x72, - 0x82, 0x92, 0xA2, 0xB2, 0xC2, 0xD2, 0xE2, 0xF2, - 0x03, 0x13, 0x23, 0x33, 0x43, 0x53, 0x63, 0x73, - 0x83, 0x93, 0xA3, 0xB3, 0xC3, 0xD3, 0xE3, 0xF3, - 0x04, 0x14, 0x24, 0x34, 0x44, 0x54, 0x64, 0x74, - 0x84, 0x94, 0xA4, 0xB4, 0xC4, 0xD4, 0xE4, 0xF4, - 0x05, 0x15, 0x25, 0x35, 0x45, 0x55, 0x65, 0x75, - 0x85, 0x95, 0xA5, 0xB5, 0xC5, 0xD5, 0xE5, 0xF5, - 0x06, 0x16, 0x26, 0x36, 0x46, 0x56, 0x66, 0x76, - 0x86, 0x96, 0xA6, 0xB6, 0xC6, 0xD6, 0xE6, 0xF6, - 0x07, 0x17, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, - 0x87, 0x97, 0xA7, 0xB7, 0xC7, 0xD7, 0xE7, 0xF7, - 0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x68, 0x78, - 0x88, 0x98, 0xA8, 0xB8, 0xC8, 0xD8, 0xE8, 0xF8, - 0x09, 0x19, 0x29, 0x39, 0x49, 0x59, 0x69, 0x79, - 0x89, 0x99, 0xA9, 0xB9, 0xC9, 0xD9, 0xE9, 0xF9, - 0x0A, 0x1A, 0x2A, 0x3A, 0x4A, 0x5A, 0x6A, 0x7A, - 0x8A, 0x9A, 0xAA, 0xBA, 0xCA, 0xDA, 0xEA, 0xFA, - 0x0B, 0x1B, 0x2B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, - 0x8B, 0x9B, 0xAB, 0xBB, 0xCB, 0xDB, 0xEB, 0xFB, - 0x0C, 0x1C, 0x2C, 0x3C, 0x4C, 0x5C, 0x6C, 0x7C, - 0x8C, 0x9C, 0xAC, 0xBC, 0xCC, 0xDC, 0xEC, 0xFC, - 0x0D, 0x1D, 0x2D, 0x3D, 0x4D, 0x5D, 0x6D, 0x7D, - 0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0xDD, 0xED, 0xFD, - 0x0E, 0x1E, 0x2E, 0x3E, 0x4E, 0x5E, 0x6E, 0x7E, - 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0xDE, 0xEE, 0xFE, - 0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F, - 0x8F, 0x9F, 0xAF, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF -}; - -/* Swaps pixel packing order within bytes */ -void /* PRIVATE */ -png_do_packswap(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_packswap"); - - if (row_info->bit_depth < 8) - { - png_bytep rp; - png_const_bytep end, table; - - end = row + row_info->rowbytes; - - if (row_info->bit_depth == 1) - table = onebppswaptable; - - else if (row_info->bit_depth == 2) - table = twobppswaptable; - - else if (row_info->bit_depth == 4) - table = fourbppswaptable; - - else - return; - - for (rp = row; rp < end; rp++) - *rp = table[*rp]; - } -} -#endif /* PNG_READ_PACKSWAP_SUPPORTED or PNG_WRITE_PACKSWAP_SUPPORTED */ - -#if defined(PNG_WRITE_FILLER_SUPPORTED) || \ - defined(PNG_READ_STRIP_ALPHA_SUPPORTED) -/* Remove a channel - this used to be 'png_do_strip_filler' but it used a - * somewhat weird combination of flags to determine what to do. All the calls - * to png_do_strip_filler are changed in 1.5.2 to call this instead with the - * correct arguments. - * - * The routine isn't general - the channel must be the channel at the start or - * end (not in the middle) of each pixel. - */ -void /* PRIVATE */ -png_do_strip_channel(png_row_infop row_info, png_bytep row, int at_start) -{ - png_bytep sp = row; /* source pointer */ - png_bytep dp = row; /* destination pointer */ - png_bytep ep = row + row_info->rowbytes; /* One beyond end of row */ - - /* At the start sp will point to the first byte to copy and dp to where - * it is copied to. ep always points just beyond the end of the row, so - * the loop simply copies (channels-1) channels until sp reaches ep. - * - * at_start: 0 -- convert AG, XG, ARGB, XRGB, AAGG, XXGG, etc. - * nonzero -- convert GA, GX, RGBA, RGBX, GGAA, RRGGBBXX, etc. - */ - - /* GA, GX, XG cases */ - if (row_info->channels == 2) - { - if (row_info->bit_depth == 8) - { - if (at_start) /* Skip initial filler */ - ++sp; - else /* Skip initial channel and, for sp, the filler */ - sp += 2, ++dp; - - /* For a 1 pixel wide image there is nothing to do */ - while (sp < ep) - *dp++ = *sp, sp += 2; - - row_info->pixel_depth = 8; - } - - else if (row_info->bit_depth == 16) - { - if (at_start) /* Skip initial filler */ - sp += 2; - else /* Skip initial channel and, for sp, the filler */ - sp += 4, dp += 2; - - while (sp < ep) - *dp++ = *sp++, *dp++ = *sp, sp += 3; - - row_info->pixel_depth = 16; - } - - else - return; /* bad bit depth */ - - row_info->channels = 1; - - /* Finally fix the color type if it records an alpha channel */ - if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - row_info->color_type = PNG_COLOR_TYPE_GRAY; - } - - /* RGBA, RGBX, XRGB cases */ - else if (row_info->channels == 4) - { - if (row_info->bit_depth == 8) - { - if (at_start) /* Skip initial filler */ - ++sp; - else /* Skip initial channels and, for sp, the filler */ - sp += 4, dp += 3; - - /* Note that the loop adds 3 to dp and 4 to sp each time. */ - while (sp < ep) - *dp++ = *sp++, *dp++ = *sp++, *dp++ = *sp, sp += 2; - - row_info->pixel_depth = 24; - } - - else if (row_info->bit_depth == 16) - { - if (at_start) /* Skip initial filler */ - sp += 2; - else /* Skip initial channels and, for sp, the filler */ - sp += 8, dp += 6; - - while (sp < ep) - { - /* Copy 6 bytes, skip 2 */ - *dp++ = *sp++, *dp++ = *sp++; - *dp++ = *sp++, *dp++ = *sp++; - *dp++ = *sp++, *dp++ = *sp, sp += 3; - } - - row_info->pixel_depth = 48; - } - - else - return; /* bad bit depth */ - - row_info->channels = 3; - - /* Finally fix the color type if it records an alpha channel */ - if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - row_info->color_type = PNG_COLOR_TYPE_RGB; - } - - else - return; /* The filler channel has gone already */ - - /* Fix the rowbytes value. */ - row_info->rowbytes = dp-row; -} -#endif - -#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) -/* Swaps red and blue bytes within a pixel */ -void /* PRIVATE */ -png_do_bgr(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_bgr"); - - if ((row_info->color_type & PNG_COLOR_MASK_COLOR)) - { - png_uint_32 row_width = row_info->width; - if (row_info->bit_depth == 8) - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB) - { - png_bytep rp; - png_uint_32 i; - - for (i = 0, rp = row; i < row_width; i++, rp += 3) - { - png_byte save = *rp; - *rp = *(rp + 2); - *(rp + 2) = save; - } - } - - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - png_bytep rp; - png_uint_32 i; - - for (i = 0, rp = row; i < row_width; i++, rp += 4) - { - png_byte save = *rp; - *rp = *(rp + 2); - *(rp + 2) = save; - } - } - } - -#ifdef PNG_16BIT_SUPPORTED - else if (row_info->bit_depth == 16) - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB) - { - png_bytep rp; - png_uint_32 i; - - for (i = 0, rp = row; i < row_width; i++, rp += 6) - { - png_byte save = *rp; - *rp = *(rp + 4); - *(rp + 4) = save; - save = *(rp + 1); - *(rp + 1) = *(rp + 5); - *(rp + 5) = save; - } - } - - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - png_bytep rp; - png_uint_32 i; - - for (i = 0, rp = row; i < row_width; i++, rp += 8) - { - png_byte save = *rp; - *rp = *(rp + 4); - *(rp + 4) = save; - save = *(rp + 1); - *(rp + 1) = *(rp + 5); - *(rp + 5) = save; - } - } - } -#endif - } -} -#endif /* PNG_READ_BGR_SUPPORTED or PNG_WRITE_BGR_SUPPORTED */ - -#if defined(PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED) || \ - defined(PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED) -/* Added at libpng-1.5.10 */ -void /* PRIVATE */ -png_do_check_palette_indexes(png_structrp png_ptr, png_row_infop row_info) -{ - if (png_ptr->num_palette < (1 << row_info->bit_depth) && - png_ptr->num_palette > 0) /* num_palette can be 0 in MNG files */ - { - /* Calculations moved outside switch in an attempt to stop different - * compiler warnings. 'padding' is in *bits* within the last byte, it is - * an 'int' because pixel_depth becomes an 'int' in the expression below, - * and this calculation is used because it avoids warnings that other - * forms produced on either GCC or MSVC. - */ - int padding = (-row_info->pixel_depth * row_info->width) & 7; - png_bytep rp = png_ptr->row_buf + row_info->rowbytes; - - switch (row_info->bit_depth) - { - case 1: - { - /* in this case, all bytes must be 0 so we don't need - * to unpack the pixels except for the rightmost one. - */ - for (; rp > png_ptr->row_buf; rp--) - { - if (*rp >> padding != 0) - png_ptr->num_palette_max = 1; - padding = 0; - } - - break; - } - - case 2: - { - for (; rp > png_ptr->row_buf; rp--) - { - int i = ((*rp >> padding) & 0x03); - - if (i > png_ptr->num_palette_max) - png_ptr->num_palette_max = i; - - i = (((*rp >> padding) >> 2) & 0x03); - - if (i > png_ptr->num_palette_max) - png_ptr->num_palette_max = i; - - i = (((*rp >> padding) >> 4) & 0x03); - - if (i > png_ptr->num_palette_max) - png_ptr->num_palette_max = i; - - i = (((*rp >> padding) >> 6) & 0x03); - - if (i > png_ptr->num_palette_max) - png_ptr->num_palette_max = i; - - padding = 0; - } - - break; - } - - case 4: - { - for (; rp > png_ptr->row_buf; rp--) - { - int i = ((*rp >> padding) & 0x0f); - - if (i > png_ptr->num_palette_max) - png_ptr->num_palette_max = i; - - i = (((*rp >> padding) >> 4) & 0x0f); - - if (i > png_ptr->num_palette_max) - png_ptr->num_palette_max = i; - - padding = 0; - } - - break; - } - - case 8: - { - for (; rp > png_ptr->row_buf; rp--) - { - if (*rp > png_ptr->num_palette_max) - png_ptr->num_palette_max = (int) *rp; - } - - break; - } - - default: - break; - } - } -} -#endif /* PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED */ - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) -#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED -void PNGAPI -png_set_user_transform_info(png_structrp png_ptr, png_voidp - user_transform_ptr, int user_transform_depth, int user_transform_channels) -{ - png_debug(1, "in png_set_user_transform_info"); - - if (png_ptr == NULL) - return; - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED - if ((png_ptr->mode & PNG_IS_READ_STRUCT) != 0 && - (png_ptr->flags & PNG_FLAG_ROW_INIT) != 0) - { - png_app_error(png_ptr, - "info change after png_start_read_image or png_read_update_info"); - return; - } -#endif - - png_ptr->user_transform_ptr = user_transform_ptr; - png_ptr->user_transform_depth = (png_byte)user_transform_depth; - png_ptr->user_transform_channels = (png_byte)user_transform_channels; -} -#endif - -/* This function returns a pointer to the user_transform_ptr associated with - * the user transform functions. The application should free any memory - * associated with this pointer before png_write_destroy and png_read_destroy - * are called. - */ -#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED -png_voidp PNGAPI -png_get_user_transform_ptr(png_const_structrp png_ptr) -{ - if (png_ptr == NULL) - return (NULL); - - return png_ptr->user_transform_ptr; -} -#endif - -#ifdef PNG_USER_TRANSFORM_INFO_SUPPORTED -png_uint_32 PNGAPI -png_get_current_row_number(png_const_structrp png_ptr) -{ - /* See the comments in png.h - this is the sub-image row when reading and - * interlaced image. - */ - if (png_ptr != NULL) - return png_ptr->row_number; - - return PNG_UINT_32_MAX; /* help the app not to fail silently */ -} - -png_byte PNGAPI -png_get_current_pass_number(png_const_structrp png_ptr) -{ - if (png_ptr != NULL) - return png_ptr->pass; - return 8; /* invalid */ -} -#endif /* PNG_USER_TRANSFORM_INFO_SUPPORTED */ -#endif /* PNG_READ_USER_TRANSFORM_SUPPORTED || - PNG_WRITE_USER_TRANSFORM_SUPPORTED */ -#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ diff --git a/io2d/src/3rd-party/libpng/pngusr.dfa b/io2d/src/3rd-party/libpng/pngusr.dfa deleted file mode 100644 index 9d39564..0000000 --- a/io2d/src/3rd-party/libpng/pngusr.dfa +++ /dev/null @@ -1,14 +0,0 @@ -# pngusr.dfa -# -# Build time configuration of libpng -# -# Enter build configuration options in this file -# -# Security settings: by default these limits are unset, you can change them -# here by entering the appropriate values as #defines preceded by '@' (to cause, -# them to be passed through to the build of pnglibconf.h), for example: -# -# @# define PNG_USER_WIDTH_MAX 1000000 -# @# define PNG_USER_HEIGHT_MAX 1000000 -# @# define PNG_USER_CHUNK_CACHE_MAX 128 -# @# define PNG_USER_CHUNK_MALLOC_MAX 8000000 diff --git a/io2d/src/3rd-party/libpng/pngwio.c b/io2d/src/3rd-party/libpng/pngwio.c deleted file mode 100644 index c30173e..0000000 --- a/io2d/src/3rd-party/libpng/pngwio.c +++ /dev/null @@ -1,166 +0,0 @@ - -/* pngwio.c - functions for data output - * - * Last changed in libpng 1.6.8 [(PENDING RELEASE)] - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * This file provides a location for all output. Users who need - * special handling are expected to write functions that have the same - * arguments as these and perform similar functions, but that possibly - * use different output methods. Note that you shouldn't change these - * functions, but rather write replacement functions and then change - * them at run time with png_set_write_fn(...). - */ - -#include "pngpriv.h" - -#ifdef PNG_WRITE_SUPPORTED - -/* Write the data to whatever output you are using. The default routine - * writes to a file pointer. Note that this routine sometimes gets called - * with very small lengths, so you should implement some kind of simple - * buffering if you are using unbuffered writes. This should never be asked - * to write more than 64K on a 16 bit machine. - */ - -void /* PRIVATE */ -png_write_data(png_structrp png_ptr, png_const_bytep data, png_size_t length) -{ - /* NOTE: write_data_fn must not change the buffer! */ - if (png_ptr->write_data_fn != NULL ) - (*(png_ptr->write_data_fn))(png_ptr, png_constcast(png_bytep,data), - length); - - else - png_error(png_ptr, "Call to NULL write function"); -} - -#ifdef PNG_STDIO_SUPPORTED -/* This is the function that does the actual writing of data. If you are - * not writing to a standard C stream, you should create a replacement - * write_data function and use it at run time with png_set_write_fn(), rather - * than changing the library. - */ -void PNGCBAPI -png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_size_t check; - - if (png_ptr == NULL) - return; - - check = fwrite(data, 1, length, (png_FILE_p)(png_ptr->io_ptr)); - - if (check != length) - png_error(png_ptr, "Write Error"); -} -#endif - -/* This function is called to output any data pending writing (normally - * to disk). After png_flush is called, there should be no data pending - * writing in any buffers. - */ -#ifdef PNG_WRITE_FLUSH_SUPPORTED -void /* PRIVATE */ -png_flush(png_structrp png_ptr) -{ - if (png_ptr->output_flush_fn != NULL) - (*(png_ptr->output_flush_fn))(png_ptr); -} - -# ifdef PNG_STDIO_SUPPORTED -void PNGCBAPI -png_default_flush(png_structp png_ptr) -{ - png_FILE_p io_ptr; - - if (png_ptr == NULL) - return; - - io_ptr = png_voidcast(png_FILE_p, (png_ptr->io_ptr)); - fflush(io_ptr); -} -# endif -#endif - -/* This function allows the application to supply new output functions for - * libpng if standard C streams aren't being used. - * - * This function takes as its arguments: - * png_ptr - pointer to a png output data structure - * io_ptr - pointer to user supplied structure containing info about - * the output functions. May be NULL. - * write_data_fn - pointer to a new output function that takes as its - * arguments a pointer to a png_struct, a pointer to - * data to be written, and a 32-bit unsigned int that is - * the number of bytes to be written. The new write - * function should call png_error(png_ptr, "Error msg") - * to exit and output any fatal error messages. May be - * NULL, in which case libpng's default function will - * be used. - * flush_data_fn - pointer to a new flush function that takes as its - * arguments a pointer to a png_struct. After a call to - * the flush function, there should be no data in any buffers - * or pending transmission. If the output method doesn't do - * any buffering of output, a function prototype must still be - * supplied although it doesn't have to do anything. If - * PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile - * time, output_flush_fn will be ignored, although it must be - * supplied for compatibility. May be NULL, in which case - * libpng's default function will be used, if - * PNG_WRITE_FLUSH_SUPPORTED is defined. This is not - * a good idea if io_ptr does not point to a standard - * *FILE structure. - */ -void PNGAPI -png_set_write_fn(png_structrp png_ptr, png_voidp io_ptr, - png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn) -{ - if (png_ptr == NULL) - return; - - png_ptr->io_ptr = io_ptr; - -#ifdef PNG_STDIO_SUPPORTED - if (write_data_fn != NULL) - png_ptr->write_data_fn = write_data_fn; - - else - png_ptr->write_data_fn = png_default_write_data; -#else - png_ptr->write_data_fn = write_data_fn; -#endif - -#ifdef PNG_WRITE_FLUSH_SUPPORTED -# ifdef PNG_STDIO_SUPPORTED - - if (output_flush_fn != NULL) - png_ptr->output_flush_fn = output_flush_fn; - - else - png_ptr->output_flush_fn = png_default_flush; - -# else - png_ptr->output_flush_fn = output_flush_fn; -# endif -#else - PNG_UNUSED(output_flush_fn) -#endif /* PNG_WRITE_FLUSH_SUPPORTED */ - - /* It is an error to read while writing a png file */ - if (png_ptr->read_data_fn != NULL) - { - png_ptr->read_data_fn = NULL; - - png_warning(png_ptr, - "Can't set both read_data_fn and write_data_fn in the" - " same structure"); - } -} -#endif /* PNG_WRITE_SUPPORTED */ diff --git a/io2d/src/3rd-party/libpng/pngwrite.c b/io2d/src/3rd-party/libpng/pngwrite.c deleted file mode 100644 index f4a48fb..0000000 --- a/io2d/src/3rd-party/libpng/pngwrite.c +++ /dev/null @@ -1,2335 +0,0 @@ - -/* pngwrite.c - general routines to write a PNG file - * - * Last changed in libpng 1.6.8 [(PENDING RELEASE)] - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#include "pngpriv.h" -#if defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) && defined(PNG_STDIO_SUPPORTED) -# include -#endif - -#ifdef PNG_WRITE_SUPPORTED - -#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED -/* Write out all the unknown chunks for the current given location */ -static void -write_unknown_chunks(png_structrp png_ptr, png_const_inforp info_ptr, - unsigned int where) -{ - if (info_ptr->unknown_chunks_num) - { - png_const_unknown_chunkp up; - - png_debug(5, "writing extra chunks"); - - for (up = info_ptr->unknown_chunks; - up < info_ptr->unknown_chunks + info_ptr->unknown_chunks_num; - ++up) - if (up->location & where) - { - /* If per-chunk unknown chunk handling is enabled use it, otherwise - * just write the chunks the application has set. - */ -#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED - int keep = png_handle_as_unknown(png_ptr, up->name); - - /* NOTE: this code is radically different from the read side in the - * matter of handling an ancillary unknown chunk. In the read side - * the default behavior is to discard it, in the code below the default - * behavior is to write it. Critical chunks are, however, only - * written if explicitly listed or if the default is set to write all - * unknown chunks. - * - * The default handling is also slightly weird - it is not possible to - * stop the writing of all unsafe-to-copy chunks! - * - * TODO: REVIEW: this would seem to be a bug. - */ - if (keep != PNG_HANDLE_CHUNK_NEVER && - ((up->name[3] & 0x20) /* safe-to-copy overrides everything */ || - keep == PNG_HANDLE_CHUNK_ALWAYS || - (keep == PNG_HANDLE_CHUNK_AS_DEFAULT && - png_ptr->unknown_default == PNG_HANDLE_CHUNK_ALWAYS))) -#endif - { - /* TODO: review, what is wrong with a zero length unknown chunk? */ - if (up->size == 0) - png_warning(png_ptr, "Writing zero-length unknown chunk"); - - png_write_chunk(png_ptr, up->name, up->data, up->size); - } - } - } -} -#endif /* PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED */ - -/* Writes all the PNG information. This is the suggested way to use the - * library. If you have a new chunk to add, make a function to write it, - * and put it in the correct location here. If you want the chunk written - * after the image data, put it in png_write_end(). I strongly encourage - * you to supply a PNG_INFO_ flag, and check info_ptr->valid before writing - * the chunk, as that will keep the code from breaking if you want to just - * write a plain PNG file. If you have long comments, I suggest writing - * them in png_write_end(), and compressing them. - */ -void PNGAPI -png_write_info_before_PLTE(png_structrp png_ptr, png_const_inforp info_ptr) -{ - png_debug(1, "in png_write_info_before_PLTE"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE)) - { - /* Write PNG signature */ - png_write_sig(png_ptr); - -#ifdef PNG_MNG_FEATURES_SUPPORTED - if ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) && \ - (png_ptr->mng_features_permitted)) - { - png_warning(png_ptr, "MNG features are not allowed in a PNG datastream"); - png_ptr->mng_features_permitted = 0; - } -#endif - - /* Write IHDR information. */ - png_write_IHDR(png_ptr, info_ptr->width, info_ptr->height, - info_ptr->bit_depth, info_ptr->color_type, info_ptr->compression_type, - info_ptr->filter_type, -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - info_ptr->interlace_type -#else - 0 -#endif - ); - - /* The rest of these check to see if the valid field has the appropriate - * flag set, and if it does, writes the chunk. - * - * 1.6.0: COLORSPACE support controls the writing of these chunks too, and - * the chunks will be written if the WRITE routine is there and information - * is available in the COLORSPACE. (See png_colorspace_sync_info in png.c - * for where the valid flags get set.) - * - * Under certain circumstances the colorspace can be invalidated without - * syncing the info_struct 'valid' flags; this happens if libpng detects and - * error and calls png_error while the color space is being set, yet the - * application continues writing the PNG. So check the 'invalid' flag here - * too. - */ -#ifdef PNG_GAMMA_SUPPORTED -# ifdef PNG_WRITE_gAMA_SUPPORTED - if (!(info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) && - (info_ptr->colorspace.flags & PNG_COLORSPACE_FROM_gAMA) && - (info_ptr->valid & PNG_INFO_gAMA)) - png_write_gAMA_fixed(png_ptr, info_ptr->colorspace.gamma); -# endif -#endif - -#ifdef PNG_COLORSPACE_SUPPORTED - /* Write only one of sRGB or an ICC profile. If a profile was supplied - * and it matches one of the known sRGB ones issue a warning. - */ -# ifdef PNG_WRITE_iCCP_SUPPORTED - if (!(info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) && - (info_ptr->valid & PNG_INFO_iCCP)) - { -# ifdef PNG_WRITE_sRGB_SUPPORTED - if (info_ptr->valid & PNG_INFO_sRGB) - png_app_warning(png_ptr, - "profile matches sRGB but writing iCCP instead"); -# endif - - png_write_iCCP(png_ptr, info_ptr->iccp_name, - info_ptr->iccp_profile); - } -# ifdef PNG_WRITE_sRGB_SUPPORTED - else -# endif -# endif - -# ifdef PNG_WRITE_sRGB_SUPPORTED - if (!(info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) && - (info_ptr->valid & PNG_INFO_sRGB)) - png_write_sRGB(png_ptr, info_ptr->colorspace.rendering_intent); -# endif /* WRITE_sRGB */ -#endif /* COLORSPACE */ - -#ifdef PNG_WRITE_sBIT_SUPPORTED - if (info_ptr->valid & PNG_INFO_sBIT) - png_write_sBIT(png_ptr, &(info_ptr->sig_bit), info_ptr->color_type); -#endif - -#ifdef PNG_COLORSPACE_SUPPORTED -# ifdef PNG_WRITE_cHRM_SUPPORTED - if (!(info_ptr->colorspace.flags & PNG_COLORSPACE_INVALID) && - (info_ptr->colorspace.flags & PNG_COLORSPACE_FROM_cHRM) && - (info_ptr->valid & PNG_INFO_cHRM)) - png_write_cHRM_fixed(png_ptr, &info_ptr->colorspace.end_points_xy); -# endif -#endif - -#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED - write_unknown_chunks(png_ptr, info_ptr, PNG_HAVE_IHDR); -#endif - - png_ptr->mode |= PNG_WROTE_INFO_BEFORE_PLTE; - } -} - -void PNGAPI -png_write_info(png_structrp png_ptr, png_const_inforp info_ptr) -{ -#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED) - int i; -#endif - - png_debug(1, "in png_write_info"); - - if (png_ptr == NULL || info_ptr == NULL) - return; - - png_write_info_before_PLTE(png_ptr, info_ptr); - - if (info_ptr->valid & PNG_INFO_PLTE) - png_write_PLTE(png_ptr, info_ptr->palette, - (png_uint_32)info_ptr->num_palette); - - else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - png_error(png_ptr, "Valid palette required for paletted images"); - -#ifdef PNG_WRITE_tRNS_SUPPORTED - if (info_ptr->valid & PNG_INFO_tRNS) - { -#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED - /* Invert the alpha channel (in tRNS) */ - if ((png_ptr->transformations & PNG_INVERT_ALPHA) && - info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - int j; - for (j = 0; j<(int)info_ptr->num_trans; j++) - info_ptr->trans_alpha[j] = - (png_byte)(255 - info_ptr->trans_alpha[j]); - } -#endif - png_write_tRNS(png_ptr, info_ptr->trans_alpha, &(info_ptr->trans_color), - info_ptr->num_trans, info_ptr->color_type); - } -#endif -#ifdef PNG_WRITE_bKGD_SUPPORTED - if (info_ptr->valid & PNG_INFO_bKGD) - png_write_bKGD(png_ptr, &(info_ptr->background), info_ptr->color_type); -#endif - -#ifdef PNG_WRITE_hIST_SUPPORTED - if (info_ptr->valid & PNG_INFO_hIST) - png_write_hIST(png_ptr, info_ptr->hist, info_ptr->num_palette); -#endif - -#ifdef PNG_WRITE_oFFs_SUPPORTED - if (info_ptr->valid & PNG_INFO_oFFs) - png_write_oFFs(png_ptr, info_ptr->x_offset, info_ptr->y_offset, - info_ptr->offset_unit_type); -#endif - -#ifdef PNG_WRITE_pCAL_SUPPORTED - if (info_ptr->valid & PNG_INFO_pCAL) - png_write_pCAL(png_ptr, info_ptr->pcal_purpose, info_ptr->pcal_X0, - info_ptr->pcal_X1, info_ptr->pcal_type, info_ptr->pcal_nparams, - info_ptr->pcal_units, info_ptr->pcal_params); -#endif - -#ifdef PNG_WRITE_sCAL_SUPPORTED - if (info_ptr->valid & PNG_INFO_sCAL) - png_write_sCAL_s(png_ptr, (int)info_ptr->scal_unit, - info_ptr->scal_s_width, info_ptr->scal_s_height); -#endif /* sCAL */ - -#ifdef PNG_WRITE_pHYs_SUPPORTED - if (info_ptr->valid & PNG_INFO_pHYs) - png_write_pHYs(png_ptr, info_ptr->x_pixels_per_unit, - info_ptr->y_pixels_per_unit, info_ptr->phys_unit_type); -#endif /* pHYs */ - -#ifdef PNG_WRITE_tIME_SUPPORTED - if (info_ptr->valid & PNG_INFO_tIME) - { - png_write_tIME(png_ptr, &(info_ptr->mod_time)); - png_ptr->mode |= PNG_WROTE_tIME; - } -#endif /* tIME */ - -#ifdef PNG_WRITE_sPLT_SUPPORTED - if (info_ptr->valid & PNG_INFO_sPLT) - for (i = 0; i < (int)info_ptr->splt_palettes_num; i++) - png_write_sPLT(png_ptr, info_ptr->splt_palettes + i); -#endif /* sPLT */ - -#ifdef PNG_WRITE_TEXT_SUPPORTED - /* Check to see if we need to write text chunks */ - for (i = 0; i < info_ptr->num_text; i++) - { - png_debug2(2, "Writing header text chunk %d, type %d", i, - info_ptr->text[i].compression); - /* An internationalized chunk? */ - if (info_ptr->text[i].compression > 0) - { -#ifdef PNG_WRITE_iTXt_SUPPORTED - /* Write international chunk */ - png_write_iTXt(png_ptr, - info_ptr->text[i].compression, - info_ptr->text[i].key, - info_ptr->text[i].lang, - info_ptr->text[i].lang_key, - info_ptr->text[i].text); -#else - png_warning(png_ptr, "Unable to write international text"); -#endif - /* Mark this chunk as written */ - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR; - } - - /* If we want a compressed text chunk */ - else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_zTXt) - { -#ifdef PNG_WRITE_zTXt_SUPPORTED - /* Write compressed chunk */ - png_write_zTXt(png_ptr, info_ptr->text[i].key, - info_ptr->text[i].text, 0, - info_ptr->text[i].compression); -#else - png_warning(png_ptr, "Unable to write compressed text"); -#endif - /* Mark this chunk as written */ - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR; - } - - else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE) - { -#ifdef PNG_WRITE_tEXt_SUPPORTED - /* Write uncompressed chunk */ - png_write_tEXt(png_ptr, info_ptr->text[i].key, - info_ptr->text[i].text, - 0); - /* Mark this chunk as written */ - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR; -#else - /* Can't get here */ - png_warning(png_ptr, "Unable to write uncompressed text"); -#endif - } - } -#endif /* tEXt */ - -#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED - write_unknown_chunks(png_ptr, info_ptr, PNG_HAVE_PLTE); -#endif -} - -/* Writes the end of the PNG file. If you don't want to write comments or - * time information, you can pass NULL for info. If you already wrote these - * in png_write_info(), do not write them again here. If you have long - * comments, I suggest writing them here, and compressing them. - */ -void PNGAPI -png_write_end(png_structrp png_ptr, png_inforp info_ptr) -{ - png_debug(1, "in png_write_end"); - - if (png_ptr == NULL) - return; - - if (!(png_ptr->mode & PNG_HAVE_IDAT)) - png_error(png_ptr, "No IDATs written into file"); - -#ifdef PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED - if (png_ptr->num_palette_max > png_ptr->num_palette) - png_benign_error(png_ptr, "Wrote palette index exceeding num_palette"); -#endif - - /* See if user wants us to write information chunks */ - if (info_ptr != NULL) - { -#ifdef PNG_WRITE_TEXT_SUPPORTED - int i; /* local index variable */ -#endif -#ifdef PNG_WRITE_tIME_SUPPORTED - /* Check to see if user has supplied a time chunk */ - if ((info_ptr->valid & PNG_INFO_tIME) && - !(png_ptr->mode & PNG_WROTE_tIME)) - png_write_tIME(png_ptr, &(info_ptr->mod_time)); - -#endif -#ifdef PNG_WRITE_TEXT_SUPPORTED - /* Loop through comment chunks */ - for (i = 0; i < info_ptr->num_text; i++) - { - png_debug2(2, "Writing trailer text chunk %d, type %d", i, - info_ptr->text[i].compression); - /* An internationalized chunk? */ - if (info_ptr->text[i].compression > 0) - { -#ifdef PNG_WRITE_iTXt_SUPPORTED - /* Write international chunk */ - png_write_iTXt(png_ptr, - info_ptr->text[i].compression, - info_ptr->text[i].key, - info_ptr->text[i].lang, - info_ptr->text[i].lang_key, - info_ptr->text[i].text); -#else - png_warning(png_ptr, "Unable to write international text"); -#endif - /* Mark this chunk as written */ - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR; - } - - else if (info_ptr->text[i].compression >= PNG_TEXT_COMPRESSION_zTXt) - { -#ifdef PNG_WRITE_zTXt_SUPPORTED - /* Write compressed chunk */ - png_write_zTXt(png_ptr, info_ptr->text[i].key, - info_ptr->text[i].text, 0, - info_ptr->text[i].compression); -#else - png_warning(png_ptr, "Unable to write compressed text"); -#endif - /* Mark this chunk as written */ - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR; - } - - else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE) - { -#ifdef PNG_WRITE_tEXt_SUPPORTED - /* Write uncompressed chunk */ - png_write_tEXt(png_ptr, info_ptr->text[i].key, - info_ptr->text[i].text, 0); -#else - png_warning(png_ptr, "Unable to write uncompressed text"); -#endif - - /* Mark this chunk as written */ - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR; - } - } -#endif -#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED - write_unknown_chunks(png_ptr, info_ptr, PNG_AFTER_IDAT); -#endif - } - - png_ptr->mode |= PNG_AFTER_IDAT; - - /* Write end of PNG file */ - png_write_IEND(png_ptr); - /* This flush, added in libpng-1.0.8, removed from libpng-1.0.9beta03, - * and restored again in libpng-1.2.30, may cause some applications that - * do not set png_ptr->output_flush_fn to crash. If your application - * experiences a problem, please try building libpng with - * PNG_WRITE_FLUSH_AFTER_IEND_SUPPORTED defined, and report the event to - * png-mng-implement at lists.sf.net . - */ -#ifdef PNG_WRITE_FLUSH_SUPPORTED -# ifdef PNG_WRITE_FLUSH_AFTER_IEND_SUPPORTED - png_flush(png_ptr); -# endif -#endif -} - -#ifdef PNG_CONVERT_tIME_SUPPORTED -void PNGAPI -png_convert_from_struct_tm(png_timep ptime, PNG_CONST struct tm * ttime) -{ - png_debug(1, "in png_convert_from_struct_tm"); - - ptime->year = (png_uint_16)(1900 + ttime->tm_year); - ptime->month = (png_byte)(ttime->tm_mon + 1); - ptime->day = (png_byte)ttime->tm_mday; - ptime->hour = (png_byte)ttime->tm_hour; - ptime->minute = (png_byte)ttime->tm_min; - ptime->second = (png_byte)ttime->tm_sec; -} - -void PNGAPI -png_convert_from_time_t(png_timep ptime, time_t ttime) -{ - struct tm *tbuf; - - png_debug(1, "in png_convert_from_time_t"); - - tbuf = gmtime(&ttime); - png_convert_from_struct_tm(ptime, tbuf); -} -#endif - -/* Initialize png_ptr structure, and allocate any memory needed */ -PNG_FUNCTION(png_structp,PNGAPI -png_create_write_struct,(png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn),PNG_ALLOCATED) -{ -#ifndef PNG_USER_MEM_SUPPORTED - png_structrp png_ptr = png_create_png_struct(user_png_ver, error_ptr, - error_fn, warn_fn, NULL, NULL, NULL); -#else - return png_create_write_struct_2(user_png_ver, error_ptr, error_fn, - warn_fn, NULL, NULL, NULL); -} - -/* Alternate initialize png_ptr structure, and allocate any memory needed */ -PNG_FUNCTION(png_structp,PNGAPI -png_create_write_struct_2,(png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, - png_malloc_ptr malloc_fn, png_free_ptr free_fn),PNG_ALLOCATED) -{ - png_structrp png_ptr = png_create_png_struct(user_png_ver, error_ptr, - error_fn, warn_fn, mem_ptr, malloc_fn, free_fn); -#endif /* PNG_USER_MEM_SUPPORTED */ - if (png_ptr != NULL) - { - /* Set the zlib control values to defaults; they can be overridden by the - * application after the struct has been created. - */ - png_ptr->zbuffer_size = PNG_ZBUF_SIZE; - - /* The 'zlib_strategy' setting is irrelevant because png_default_claim in - * pngwutil.c defaults it according to whether or not filters will be - * used, and ignores this setting. - */ - png_ptr->zlib_strategy = PNG_Z_DEFAULT_STRATEGY; - png_ptr->zlib_level = PNG_Z_DEFAULT_COMPRESSION; - png_ptr->zlib_mem_level = 8; - png_ptr->zlib_window_bits = 15; - png_ptr->zlib_method = 8; - -#ifdef PNG_WRITE_COMPRESSED_TEXT_SUPPORTED - png_ptr->zlib_text_strategy = PNG_TEXT_Z_DEFAULT_STRATEGY; - png_ptr->zlib_text_level = PNG_TEXT_Z_DEFAULT_COMPRESSION; - png_ptr->zlib_text_mem_level = 8; - png_ptr->zlib_text_window_bits = 15; - png_ptr->zlib_text_method = 8; -#endif /* PNG_WRITE_COMPRESSED_TEXT_SUPPORTED */ - - /* This is a highly dubious configuration option; by default it is off, - * but it may be appropriate for private builds that are testing - * extensions not conformant to the current specification, or of - * applications that must not fail to write at all costs! - */ -#ifdef PNG_BENIGN_WRITE_ERRORS_SUPPORTED - png_ptr->flags |= PNG_FLAG_BENIGN_ERRORS_WARN; - /* In stable builds only warn if an application error can be completely - * handled. - */ -#endif - - /* App warnings are warnings in release (or release candidate) builds but - * are errors during development. - */ -#if PNG_LIBPNG_BUILD_BASE_TYPE >= PNG_LIBPNG_BUILD_RC - png_ptr->flags |= PNG_FLAG_APP_WARNINGS_WARN; -#endif - - /* TODO: delay this, it can be done in png_init_io() (if the app doesn't - * do it itself) avoiding setting the default function if it is not - * required. - */ - png_set_write_fn(png_ptr, NULL, NULL, NULL); - } - - return png_ptr; -} - - -/* Write a few rows of image data. If the image is interlaced, - * either you will have to write the 7 sub images, or, if you - * have called png_set_interlace_handling(), you will have to - * "write" the image seven times. - */ -void PNGAPI -png_write_rows(png_structrp png_ptr, png_bytepp row, - png_uint_32 num_rows) -{ - png_uint_32 i; /* row counter */ - png_bytepp rp; /* row pointer */ - - png_debug(1, "in png_write_rows"); - - if (png_ptr == NULL) - return; - - /* Loop through the rows */ - for (i = 0, rp = row; i < num_rows; i++, rp++) - { - png_write_row(png_ptr, *rp); - } -} - -/* Write the image. You only need to call this function once, even - * if you are writing an interlaced image. - */ -void PNGAPI -png_write_image(png_structrp png_ptr, png_bytepp image) -{ - png_uint_32 i; /* row index */ - int pass, num_pass; /* pass variables */ - png_bytepp rp; /* points to current row */ - - if (png_ptr == NULL) - return; - - png_debug(1, "in png_write_image"); - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* Initialize interlace handling. If image is not interlaced, - * this will set pass to 1 - */ - num_pass = png_set_interlace_handling(png_ptr); -#else - num_pass = 1; -#endif - /* Loop through passes */ - for (pass = 0; pass < num_pass; pass++) - { - /* Loop through image */ - for (i = 0, rp = image; i < png_ptr->height; i++, rp++) - { - png_write_row(png_ptr, *rp); - } - } -} - -/* Called by user to write a row of image data */ -void PNGAPI -png_write_row(png_structrp png_ptr, png_const_bytep row) -{ - /* 1.5.6: moved from png_struct to be a local structure: */ - png_row_info row_info; - - if (png_ptr == NULL) - return; - - png_debug2(1, "in png_write_row (row %u, pass %d)", - png_ptr->row_number, png_ptr->pass); - - /* Initialize transformations and other stuff if first time */ - if (png_ptr->row_number == 0 && png_ptr->pass == 0) - { - /* Make sure we wrote the header info */ - if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE)) - png_error(png_ptr, - "png_write_info was never called before png_write_row"); - - /* Check for transforms that have been set but were defined out */ -#if !defined(PNG_WRITE_INVERT_SUPPORTED) && defined(PNG_READ_INVERT_SUPPORTED) - if (png_ptr->transformations & PNG_INVERT_MONO) - png_warning(png_ptr, "PNG_WRITE_INVERT_SUPPORTED is not defined"); -#endif - -#if !defined(PNG_WRITE_FILLER_SUPPORTED) && defined(PNG_READ_FILLER_SUPPORTED) - if (png_ptr->transformations & PNG_FILLER) - png_warning(png_ptr, "PNG_WRITE_FILLER_SUPPORTED is not defined"); -#endif -#if !defined(PNG_WRITE_PACKSWAP_SUPPORTED) && \ - defined(PNG_READ_PACKSWAP_SUPPORTED) - if (png_ptr->transformations & PNG_PACKSWAP) - png_warning(png_ptr, - "PNG_WRITE_PACKSWAP_SUPPORTED is not defined"); -#endif - -#if !defined(PNG_WRITE_PACK_SUPPORTED) && defined(PNG_READ_PACK_SUPPORTED) - if (png_ptr->transformations & PNG_PACK) - png_warning(png_ptr, "PNG_WRITE_PACK_SUPPORTED is not defined"); -#endif - -#if !defined(PNG_WRITE_SHIFT_SUPPORTED) && defined(PNG_READ_SHIFT_SUPPORTED) - if (png_ptr->transformations & PNG_SHIFT) - png_warning(png_ptr, "PNG_WRITE_SHIFT_SUPPORTED is not defined"); -#endif - -#if !defined(PNG_WRITE_BGR_SUPPORTED) && defined(PNG_READ_BGR_SUPPORTED) - if (png_ptr->transformations & PNG_BGR) - png_warning(png_ptr, "PNG_WRITE_BGR_SUPPORTED is not defined"); -#endif - -#if !defined(PNG_WRITE_SWAP_SUPPORTED) && defined(PNG_READ_SWAP_SUPPORTED) - if (png_ptr->transformations & PNG_SWAP_BYTES) - png_warning(png_ptr, "PNG_WRITE_SWAP_SUPPORTED is not defined"); -#endif - - png_write_start_row(png_ptr); - } - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* If interlaced and not interested in row, return */ - if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE)) - { - switch (png_ptr->pass) - { - case 0: - if (png_ptr->row_number & 0x07) - { - png_write_finish_row(png_ptr); - return; - } - break; - - case 1: - if ((png_ptr->row_number & 0x07) || png_ptr->width < 5) - { - png_write_finish_row(png_ptr); - return; - } - break; - - case 2: - if ((png_ptr->row_number & 0x07) != 4) - { - png_write_finish_row(png_ptr); - return; - } - break; - - case 3: - if ((png_ptr->row_number & 0x03) || png_ptr->width < 3) - { - png_write_finish_row(png_ptr); - return; - } - break; - - case 4: - if ((png_ptr->row_number & 0x03) != 2) - { - png_write_finish_row(png_ptr); - return; - } - break; - - case 5: - if ((png_ptr->row_number & 0x01) || png_ptr->width < 2) - { - png_write_finish_row(png_ptr); - return; - } - break; - - case 6: - if (!(png_ptr->row_number & 0x01)) - { - png_write_finish_row(png_ptr); - return; - } - break; - - default: /* error: ignore it */ - break; - } - } -#endif - - /* Set up row info for transformations */ - row_info.color_type = png_ptr->color_type; - row_info.width = png_ptr->usr_width; - row_info.channels = png_ptr->usr_channels; - row_info.bit_depth = png_ptr->usr_bit_depth; - row_info.pixel_depth = (png_byte)(row_info.bit_depth * row_info.channels); - row_info.rowbytes = PNG_ROWBYTES(row_info.pixel_depth, row_info.width); - - png_debug1(3, "row_info->color_type = %d", row_info.color_type); - png_debug1(3, "row_info->width = %u", row_info.width); - png_debug1(3, "row_info->channels = %d", row_info.channels); - png_debug1(3, "row_info->bit_depth = %d", row_info.bit_depth); - png_debug1(3, "row_info->pixel_depth = %d", row_info.pixel_depth); - png_debug1(3, "row_info->rowbytes = %lu", (unsigned long)row_info.rowbytes); - - /* Copy user's row into buffer, leaving room for filter byte. */ - memcpy(png_ptr->row_buf + 1, row, row_info.rowbytes); - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* Handle interlacing */ - if (png_ptr->interlaced && png_ptr->pass < 6 && - (png_ptr->transformations & PNG_INTERLACE)) - { - png_do_write_interlace(&row_info, png_ptr->row_buf + 1, png_ptr->pass); - /* This should always get caught above, but still ... */ - if (!(row_info.width)) - { - png_write_finish_row(png_ptr); - return; - } - } -#endif - -#ifdef PNG_WRITE_TRANSFORMS_SUPPORTED - /* Handle other transformations */ - if (png_ptr->transformations) - png_do_write_transformations(png_ptr, &row_info); -#endif - - /* At this point the row_info pixel depth must match the 'transformed' depth, - * which is also the output depth. - */ - if (row_info.pixel_depth != png_ptr->pixel_depth || - row_info.pixel_depth != png_ptr->transformed_pixel_depth) - png_error(png_ptr, "internal write transform logic error"); - -#ifdef PNG_MNG_FEATURES_SUPPORTED - /* Write filter_method 64 (intrapixel differencing) only if - * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and - * 2. Libpng did not write a PNG signature (this filter_method is only - * used in PNG datastreams that are embedded in MNG datastreams) and - * 3. The application called png_permit_mng_features with a mask that - * included PNG_FLAG_MNG_FILTER_64 and - * 4. The filter_method is 64 and - * 5. The color_type is RGB or RGBA - */ - if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) && - (png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING)) - { - /* Intrapixel differencing */ - png_do_write_intrapixel(&row_info, png_ptr->row_buf + 1); - } -#endif - -/* Added at libpng-1.5.10 */ -#ifdef PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED - /* Check for out-of-range palette index */ - if (row_info.color_type == PNG_COLOR_TYPE_PALETTE && - png_ptr->num_palette_max >= 0) - png_do_check_palette_indexes(png_ptr, &row_info); -#endif - - /* Find a filter if necessary, filter the row and write it out. */ - png_write_find_filter(png_ptr, &row_info); - - if (png_ptr->write_row_fn != NULL) - (*(png_ptr->write_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass); -} - -#ifdef PNG_WRITE_FLUSH_SUPPORTED -/* Set the automatic flush interval or 0 to turn flushing off */ -void PNGAPI -png_set_flush(png_structrp png_ptr, int nrows) -{ - png_debug(1, "in png_set_flush"); - - if (png_ptr == NULL) - return; - - png_ptr->flush_dist = (nrows < 0 ? 0 : nrows); -} - -/* Flush the current output buffers now */ -void PNGAPI -png_write_flush(png_structrp png_ptr) -{ - png_debug(1, "in png_write_flush"); - - if (png_ptr == NULL) - return; - - /* We have already written out all of the data */ - if (png_ptr->row_number >= png_ptr->num_rows) - return; - - png_compress_IDAT(png_ptr, NULL, 0, Z_SYNC_FLUSH); - png_ptr->flush_rows = 0; - png_flush(png_ptr); -} -#endif /* PNG_WRITE_FLUSH_SUPPORTED */ - -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED -static void png_reset_filter_heuristics(png_structrp png_ptr);/* forward decl */ -#endif - -/* Free any memory used in png_ptr struct without freeing the struct itself. */ -static void -png_write_destroy(png_structrp png_ptr) -{ - png_debug(1, "in png_write_destroy"); - - /* Free any memory zlib uses */ - if (png_ptr->flags & PNG_FLAG_ZSTREAM_INITIALIZED) - deflateEnd(&png_ptr->zstream); - - /* Free our memory. png_free checks NULL for us. */ - png_free_buffer_list(png_ptr, &png_ptr->zbuffer_list); - png_free(png_ptr, png_ptr->row_buf); -#ifdef PNG_WRITE_FILTER_SUPPORTED - png_free(png_ptr, png_ptr->prev_row); - png_free(png_ptr, png_ptr->sub_row); - png_free(png_ptr, png_ptr->up_row); - png_free(png_ptr, png_ptr->avg_row); - png_free(png_ptr, png_ptr->paeth_row); -#endif - -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - /* Use this to save a little code space, it doesn't free the filter_costs */ - png_reset_filter_heuristics(png_ptr); - png_free(png_ptr, png_ptr->filter_costs); - png_free(png_ptr, png_ptr->inv_filter_costs); -#endif - -#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED - png_free(png_ptr, png_ptr->chunk_list); -#endif - - /* The error handling and memory handling information is left intact at this - * point: the jmp_buf may still have to be freed. See png_destroy_png_struct - * for how this happens. - */ -} - -/* Free all memory used by the write. - * In libpng 1.6.0 this API changed quietly to no longer accept a NULL value for - * *png_ptr_ptr. Prior to 1.6.0 it would accept such a value and it would free - * the passed in info_structs but it would quietly fail to free any of the data - * inside them. In 1.6.0 it quietly does nothing (it has to be quiet because it - * has no png_ptr.) - */ -void PNGAPI -png_destroy_write_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr) -{ - png_debug(1, "in png_destroy_write_struct"); - - if (png_ptr_ptr != NULL) - { - png_structrp png_ptr = *png_ptr_ptr; - - if (png_ptr != NULL) /* added in libpng 1.6.0 */ - { - png_destroy_info_struct(png_ptr, info_ptr_ptr); - - *png_ptr_ptr = NULL; - png_write_destroy(png_ptr); - png_destroy_png_struct(png_ptr); - } - } -} - -/* Allow the application to select one or more row filters to use. */ -void PNGAPI -png_set_filter(png_structrp png_ptr, int method, int filters) -{ - png_debug(1, "in png_set_filter"); - - if (png_ptr == NULL) - return; - -#ifdef PNG_MNG_FEATURES_SUPPORTED - if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) && - (method == PNG_INTRAPIXEL_DIFFERENCING)) - method = PNG_FILTER_TYPE_BASE; - -#endif - if (method == PNG_FILTER_TYPE_BASE) - { - switch (filters & (PNG_ALL_FILTERS | 0x07)) - { -#ifdef PNG_WRITE_FILTER_SUPPORTED - case 5: - case 6: - case 7: png_app_error(png_ptr, "Unknown row filter for method 0"); - /* FALL THROUGH */ -#endif /* PNG_WRITE_FILTER_SUPPORTED */ - case PNG_FILTER_VALUE_NONE: - png_ptr->do_filter = PNG_FILTER_NONE; break; - -#ifdef PNG_WRITE_FILTER_SUPPORTED - case PNG_FILTER_VALUE_SUB: - png_ptr->do_filter = PNG_FILTER_SUB; break; - - case PNG_FILTER_VALUE_UP: - png_ptr->do_filter = PNG_FILTER_UP; break; - - case PNG_FILTER_VALUE_AVG: - png_ptr->do_filter = PNG_FILTER_AVG; break; - - case PNG_FILTER_VALUE_PAETH: - png_ptr->do_filter = PNG_FILTER_PAETH; break; - - default: - png_ptr->do_filter = (png_byte)filters; break; -#else - default: - png_app_error(png_ptr, "Unknown row filter for method 0"); -#endif /* PNG_WRITE_FILTER_SUPPORTED */ - } - - /* If we have allocated the row_buf, this means we have already started - * with the image and we should have allocated all of the filter buffers - * that have been selected. If prev_row isn't already allocated, then - * it is too late to start using the filters that need it, since we - * will be missing the data in the previous row. If an application - * wants to start and stop using particular filters during compression, - * it should start out with all of the filters, and then add and - * remove them after the start of compression. - */ - if (png_ptr->row_buf != NULL) - { -#ifdef PNG_WRITE_FILTER_SUPPORTED - if ((png_ptr->do_filter & PNG_FILTER_SUB) && png_ptr->sub_row == NULL) - { - png_ptr->sub_row = (png_bytep)png_malloc(png_ptr, - (png_ptr->rowbytes + 1)); - png_ptr->sub_row[0] = PNG_FILTER_VALUE_SUB; - } - - if ((png_ptr->do_filter & PNG_FILTER_UP) && png_ptr->up_row == NULL) - { - if (png_ptr->prev_row == NULL) - { - png_warning(png_ptr, "Can't add Up filter after starting"); - png_ptr->do_filter = (png_byte)(png_ptr->do_filter & - ~PNG_FILTER_UP); - } - - else - { - png_ptr->up_row = (png_bytep)png_malloc(png_ptr, - (png_ptr->rowbytes + 1)); - png_ptr->up_row[0] = PNG_FILTER_VALUE_UP; - } - } - - if ((png_ptr->do_filter & PNG_FILTER_AVG) && png_ptr->avg_row == NULL) - { - if (png_ptr->prev_row == NULL) - { - png_warning(png_ptr, "Can't add Average filter after starting"); - png_ptr->do_filter = (png_byte)(png_ptr->do_filter & - ~PNG_FILTER_AVG); - } - - else - { - png_ptr->avg_row = (png_bytep)png_malloc(png_ptr, - (png_ptr->rowbytes + 1)); - png_ptr->avg_row[0] = PNG_FILTER_VALUE_AVG; - } - } - - if ((png_ptr->do_filter & PNG_FILTER_PAETH) && - png_ptr->paeth_row == NULL) - { - if (png_ptr->prev_row == NULL) - { - png_warning(png_ptr, "Can't add Paeth filter after starting"); - png_ptr->do_filter &= (png_byte)(~PNG_FILTER_PAETH); - } - - else - { - png_ptr->paeth_row = (png_bytep)png_malloc(png_ptr, - (png_ptr->rowbytes + 1)); - png_ptr->paeth_row[0] = PNG_FILTER_VALUE_PAETH; - } - } - - if (png_ptr->do_filter == PNG_NO_FILTERS) -#endif /* PNG_WRITE_FILTER_SUPPORTED */ - png_ptr->do_filter = PNG_FILTER_NONE; - } - } - else - png_error(png_ptr, "Unknown custom filter method"); -} - -/* This allows us to influence the way in which libpng chooses the "best" - * filter for the current scanline. While the "minimum-sum-of-absolute- - * differences metric is relatively fast and effective, there is some - * question as to whether it can be improved upon by trying to keep the - * filtered data going to zlib more consistent, hopefully resulting in - * better compression. - */ -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* GRR 970116 */ -/* Convenience reset API. */ -static void -png_reset_filter_heuristics(png_structrp png_ptr) -{ - /* Clear out any old values in the 'weights' - this must be done because if - * the app calls set_filter_heuristics multiple times with different - * 'num_weights' values we would otherwise potentially have wrong sized - * arrays. - */ - png_ptr->num_prev_filters = 0; - png_ptr->heuristic_method = PNG_FILTER_HEURISTIC_UNWEIGHTED; - if (png_ptr->prev_filters != NULL) - { - png_bytep old = png_ptr->prev_filters; - png_ptr->prev_filters = NULL; - png_free(png_ptr, old); - } - if (png_ptr->filter_weights != NULL) - { - png_uint_16p old = png_ptr->filter_weights; - png_ptr->filter_weights = NULL; - png_free(png_ptr, old); - } - - if (png_ptr->inv_filter_weights != NULL) - { - png_uint_16p old = png_ptr->inv_filter_weights; - png_ptr->inv_filter_weights = NULL; - png_free(png_ptr, old); - } - - /* Leave the filter_costs - this array is fixed size. */ -} - -static int -png_init_filter_heuristics(png_structrp png_ptr, int heuristic_method, - int num_weights) -{ - if (png_ptr == NULL) - return 0; - - /* Clear out the arrays */ - png_reset_filter_heuristics(png_ptr); - - /* Check arguments; the 'reset' function makes the correct settings for the - * unweighted case, but we must handle the weight case by initializing the - * arrays for the caller. - */ - if (heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - int i; - - if (num_weights > 0) - { - png_ptr->prev_filters = (png_bytep)png_malloc(png_ptr, - (png_uint_32)((sizeof (png_byte)) * num_weights)); - - /* To make sure that the weighting starts out fairly */ - for (i = 0; i < num_weights; i++) - { - png_ptr->prev_filters[i] = 255; - } - - png_ptr->filter_weights = (png_uint_16p)png_malloc(png_ptr, - (png_uint_32)((sizeof (png_uint_16)) * num_weights)); - - png_ptr->inv_filter_weights = (png_uint_16p)png_malloc(png_ptr, - (png_uint_32)((sizeof (png_uint_16)) * num_weights)); - - for (i = 0; i < num_weights; i++) - { - png_ptr->inv_filter_weights[i] = - png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR; - } - - /* Safe to set this now */ - png_ptr->num_prev_filters = (png_byte)num_weights; - } - - /* If, in the future, there are other filter methods, this would - * need to be based on png_ptr->filter. - */ - if (png_ptr->filter_costs == NULL) - { - png_ptr->filter_costs = (png_uint_16p)png_malloc(png_ptr, - (png_uint_32)((sizeof (png_uint_16)) * PNG_FILTER_VALUE_LAST)); - - png_ptr->inv_filter_costs = (png_uint_16p)png_malloc(png_ptr, - (png_uint_32)((sizeof (png_uint_16)) * PNG_FILTER_VALUE_LAST)); - } - - for (i = 0; i < PNG_FILTER_VALUE_LAST; i++) - { - png_ptr->inv_filter_costs[i] = - png_ptr->filter_costs[i] = PNG_COST_FACTOR; - } - - /* All the arrays are inited, safe to set this: */ - png_ptr->heuristic_method = PNG_FILTER_HEURISTIC_WEIGHTED; - - /* Return the 'ok' code. */ - return 1; - } - else if (heuristic_method == PNG_FILTER_HEURISTIC_DEFAULT || - heuristic_method == PNG_FILTER_HEURISTIC_UNWEIGHTED) - { - return 1; - } - else - { - png_warning(png_ptr, "Unknown filter heuristic method"); - return 0; - } -} - -/* Provide floating and fixed point APIs */ -#ifdef PNG_FLOATING_POINT_SUPPORTED -void PNGAPI -png_set_filter_heuristics(png_structrp png_ptr, int heuristic_method, - int num_weights, png_const_doublep filter_weights, - png_const_doublep filter_costs) -{ - png_debug(1, "in png_set_filter_heuristics"); - - /* The internal API allocates all the arrays and ensures that the elements of - * those arrays are set to the default value. - */ - if (!png_init_filter_heuristics(png_ptr, heuristic_method, num_weights)) - return; - - /* If using the weighted method copy in the weights. */ - if (heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - int i; - for (i = 0; i < num_weights; i++) - { - if (filter_weights[i] <= 0.0) - { - png_ptr->inv_filter_weights[i] = - png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR; - } - - else - { - png_ptr->inv_filter_weights[i] = - (png_uint_16)(PNG_WEIGHT_FACTOR*filter_weights[i]+.5); - - png_ptr->filter_weights[i] = - (png_uint_16)(PNG_WEIGHT_FACTOR/filter_weights[i]+.5); - } - } - - /* Here is where we set the relative costs of the different filters. We - * should take the desired compression level into account when setting - * the costs, so that Paeth, for instance, has a high relative cost at low - * compression levels, while it has a lower relative cost at higher - * compression settings. The filter types are in order of increasing - * relative cost, so it would be possible to do this with an algorithm. - */ - for (i = 0; i < PNG_FILTER_VALUE_LAST; i++) if (filter_costs[i] >= 1.0) - { - png_ptr->inv_filter_costs[i] = - (png_uint_16)(PNG_COST_FACTOR / filter_costs[i] + .5); - - png_ptr->filter_costs[i] = - (png_uint_16)(PNG_COST_FACTOR * filter_costs[i] + .5); - } - } -} -#endif /* FLOATING_POINT */ - -#ifdef PNG_FIXED_POINT_SUPPORTED -void PNGAPI -png_set_filter_heuristics_fixed(png_structrp png_ptr, int heuristic_method, - int num_weights, png_const_fixed_point_p filter_weights, - png_const_fixed_point_p filter_costs) -{ - png_debug(1, "in png_set_filter_heuristics_fixed"); - - /* The internal API allocates all the arrays and ensures that the elements of - * those arrays are set to the default value. - */ - if (!png_init_filter_heuristics(png_ptr, heuristic_method, num_weights)) - return; - - /* If using the weighted method copy in the weights. */ - if (heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - int i; - for (i = 0; i < num_weights; i++) - { - if (filter_weights[i] <= 0) - { - png_ptr->inv_filter_weights[i] = - png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR; - } - - else - { - png_ptr->inv_filter_weights[i] = (png_uint_16) - ((PNG_WEIGHT_FACTOR*filter_weights[i]+PNG_FP_HALF)/PNG_FP_1); - - png_ptr->filter_weights[i] = (png_uint_16)((PNG_WEIGHT_FACTOR* - PNG_FP_1+(filter_weights[i]/2))/filter_weights[i]); - } - } - - /* Here is where we set the relative costs of the different filters. We - * should take the desired compression level into account when setting - * the costs, so that Paeth, for instance, has a high relative cost at low - * compression levels, while it has a lower relative cost at higher - * compression settings. The filter types are in order of increasing - * relative cost, so it would be possible to do this with an algorithm. - */ - for (i = 0; i < PNG_FILTER_VALUE_LAST; i++) - if (filter_costs[i] >= PNG_FP_1) - { - png_uint_32 tmp; - - /* Use a 32 bit unsigned temporary here because otherwise the - * intermediate value will be a 32 bit *signed* integer (ANSI rules) - * and this will get the wrong answer on division. - */ - tmp = PNG_COST_FACTOR*PNG_FP_1 + (filter_costs[i]/2); - tmp /= filter_costs[i]; - - png_ptr->inv_filter_costs[i] = (png_uint_16)tmp; - - tmp = PNG_COST_FACTOR * filter_costs[i] + PNG_FP_HALF; - tmp /= PNG_FP_1; - - png_ptr->filter_costs[i] = (png_uint_16)tmp; - } - } -} -#endif /* FIXED_POINT */ -#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */ - -void PNGAPI -png_set_compression_level(png_structrp png_ptr, int level) -{ - png_debug(1, "in png_set_compression_level"); - - if (png_ptr == NULL) - return; - - png_ptr->zlib_level = level; -} - -void PNGAPI -png_set_compression_mem_level(png_structrp png_ptr, int mem_level) -{ - png_debug(1, "in png_set_compression_mem_level"); - - if (png_ptr == NULL) - return; - - png_ptr->zlib_mem_level = mem_level; -} - -void PNGAPI -png_set_compression_strategy(png_structrp png_ptr, int strategy) -{ - png_debug(1, "in png_set_compression_strategy"); - - if (png_ptr == NULL) - return; - - /* The flag setting here prevents the libpng dynamic selection of strategy. - */ - png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_STRATEGY; - png_ptr->zlib_strategy = strategy; -} - -/* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a - * smaller value of window_bits if it can do so safely. - */ -void PNGAPI -png_set_compression_window_bits(png_structrp png_ptr, int window_bits) -{ - if (png_ptr == NULL) - return; - - /* Prior to 1.6.0 this would warn but then set the window_bits value, this - * meant that negative window bits values could be selected which would cause - * libpng to write a non-standard PNG file with raw deflate or gzip - * compressed IDAT or ancillary chunks. Such files can be read and there is - * no warning on read, so this seems like a very bad idea. - */ - if (window_bits > 15) - { - png_warning(png_ptr, "Only compression windows <= 32k supported by PNG"); - window_bits = 15; - } - - else if (window_bits < 8) - { - png_warning(png_ptr, "Only compression windows >= 256 supported by PNG"); - window_bits = 8; - } - - png_ptr->zlib_window_bits = window_bits; -} - -void PNGAPI -png_set_compression_method(png_structrp png_ptr, int method) -{ - png_debug(1, "in png_set_compression_method"); - - if (png_ptr == NULL) - return; - - /* This would produce an invalid PNG file if it worked, but it doesn't and - * deflate will fault it, so it is harmless to just warn here. - */ - if (method != 8) - png_warning(png_ptr, "Only compression method 8 is supported by PNG"); - - png_ptr->zlib_method = method; -} - -/* The following were added to libpng-1.5.4 */ -#ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED -void PNGAPI -png_set_text_compression_level(png_structrp png_ptr, int level) -{ - png_debug(1, "in png_set_text_compression_level"); - - if (png_ptr == NULL) - return; - - png_ptr->zlib_text_level = level; -} - -void PNGAPI -png_set_text_compression_mem_level(png_structrp png_ptr, int mem_level) -{ - png_debug(1, "in png_set_text_compression_mem_level"); - - if (png_ptr == NULL) - return; - - png_ptr->zlib_text_mem_level = mem_level; -} - -void PNGAPI -png_set_text_compression_strategy(png_structrp png_ptr, int strategy) -{ - png_debug(1, "in png_set_text_compression_strategy"); - - if (png_ptr == NULL) - return; - - png_ptr->zlib_text_strategy = strategy; -} - -/* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a - * smaller value of window_bits if it can do so safely. - */ -void PNGAPI -png_set_text_compression_window_bits(png_structrp png_ptr, int window_bits) -{ - if (png_ptr == NULL) - return; - - if (window_bits > 15) - { - png_warning(png_ptr, "Only compression windows <= 32k supported by PNG"); - window_bits = 15; - } - - else if (window_bits < 8) - { - png_warning(png_ptr, "Only compression windows >= 256 supported by PNG"); - window_bits = 8; - } - - png_ptr->zlib_text_window_bits = window_bits; -} - -void PNGAPI -png_set_text_compression_method(png_structrp png_ptr, int method) -{ - png_debug(1, "in png_set_text_compression_method"); - - if (png_ptr == NULL) - return; - - if (method != 8) - png_warning(png_ptr, "Only compression method 8 is supported by PNG"); - - png_ptr->zlib_text_method = method; -} -#endif /* PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED */ -/* end of API added to libpng-1.5.4 */ - -void PNGAPI -png_set_write_status_fn(png_structrp png_ptr, png_write_status_ptr write_row_fn) -{ - if (png_ptr == NULL) - return; - - png_ptr->write_row_fn = write_row_fn; -} - -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED -void PNGAPI -png_set_write_user_transform_fn(png_structrp png_ptr, png_user_transform_ptr - write_user_transform_fn) -{ - png_debug(1, "in png_set_write_user_transform_fn"); - - if (png_ptr == NULL) - return; - - png_ptr->transformations |= PNG_USER_TRANSFORM; - png_ptr->write_user_transform_fn = write_user_transform_fn; -} -#endif - - -#ifdef PNG_INFO_IMAGE_SUPPORTED -void PNGAPI -png_write_png(png_structrp png_ptr, png_inforp info_ptr, - int transforms, voidp params) -{ - if (png_ptr == NULL || info_ptr == NULL) - return; - - /* Write the file header information. */ - png_write_info(png_ptr, info_ptr); - - /* ------ these transformations don't touch the info structure ------- */ - -#ifdef PNG_WRITE_INVERT_SUPPORTED - /* Invert monochrome pixels */ - if (transforms & PNG_TRANSFORM_INVERT_MONO) - png_set_invert_mono(png_ptr); -#endif - -#ifdef PNG_WRITE_SHIFT_SUPPORTED - /* Shift the pixels up to a legal bit depth and fill in - * as appropriate to correctly scale the image. - */ - if ((transforms & PNG_TRANSFORM_SHIFT) - && (info_ptr->valid & PNG_INFO_sBIT)) - png_set_shift(png_ptr, &info_ptr->sig_bit); -#endif - -#ifdef PNG_WRITE_PACK_SUPPORTED - /* Pack pixels into bytes */ - if (transforms & PNG_TRANSFORM_PACKING) - png_set_packing(png_ptr); -#endif - -#ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED - /* Swap location of alpha bytes from ARGB to RGBA */ - if (transforms & PNG_TRANSFORM_SWAP_ALPHA) - png_set_swap_alpha(png_ptr); -#endif - -#ifdef PNG_WRITE_FILLER_SUPPORTED - /* Pack XRGB/RGBX/ARGB/RGBA into RGB (4 channels -> 3 channels) */ - if (transforms & PNG_TRANSFORM_STRIP_FILLER_AFTER) - png_set_filler(png_ptr, 0, PNG_FILLER_AFTER); - - else if (transforms & PNG_TRANSFORM_STRIP_FILLER_BEFORE) - png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE); -#endif - -#ifdef PNG_WRITE_BGR_SUPPORTED - /* Flip BGR pixels to RGB */ - if (transforms & PNG_TRANSFORM_BGR) - png_set_bgr(png_ptr); -#endif - -#ifdef PNG_WRITE_SWAP_SUPPORTED - /* Swap bytes of 16-bit files to most significant byte first */ - if (transforms & PNG_TRANSFORM_SWAP_ENDIAN) - png_set_swap(png_ptr); -#endif - -#ifdef PNG_WRITE_PACKSWAP_SUPPORTED - /* Swap bits of 1, 2, 4 bit packed pixel formats */ - if (transforms & PNG_TRANSFORM_PACKSWAP) - png_set_packswap(png_ptr); -#endif - -#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED - /* Invert the alpha channel from opacity to transparency */ - if (transforms & PNG_TRANSFORM_INVERT_ALPHA) - png_set_invert_alpha(png_ptr); -#endif - - /* ----------------------- end of transformations ------------------- */ - - /* Write the bits */ - if (info_ptr->valid & PNG_INFO_IDAT) - png_write_image(png_ptr, info_ptr->row_pointers); - - /* It is REQUIRED to call this to finish writing the rest of the file */ - png_write_end(png_ptr, info_ptr); - - PNG_UNUSED(transforms) /* Quiet compiler warnings */ - PNG_UNUSED(params) -} -#endif - - -#ifdef PNG_SIMPLIFIED_WRITE_SUPPORTED -#ifdef PNG_STDIO_SUPPORTED /* currently required for png_image_write_* */ -/* Initialize the write structure - general purpose utility. */ -static int -png_image_write_init(png_imagep image) -{ - png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, image, - png_safe_error, png_safe_warning); - - if (png_ptr != NULL) - { - png_infop info_ptr = png_create_info_struct(png_ptr); - - if (info_ptr != NULL) - { - png_controlp control = png_voidcast(png_controlp, - png_malloc_warn(png_ptr, (sizeof *control))); - - if (control != NULL) - { - memset(control, 0, (sizeof *control)); - - control->png_ptr = png_ptr; - control->info_ptr = info_ptr; - control->for_write = 1; - - image->opaque = control; - return 1; - } - - /* Error clean up */ - png_destroy_info_struct(png_ptr, &info_ptr); - } - - png_destroy_write_struct(&png_ptr, NULL); - } - - return png_image_error(image, "png_image_write_: out of memory"); -} - -/* Arguments to png_image_write_main: */ -typedef struct -{ - /* Arguments: */ - png_imagep image; - png_const_voidp buffer; - png_int_32 row_stride; - png_const_voidp colormap; - int convert_to_8bit; - /* Local variables: */ - png_const_voidp first_row; - ptrdiff_t row_bytes; - png_voidp local_row; -} png_image_write_control; - -/* Write png_uint_16 input to a 16-bit PNG; the png_ptr has already been set to - * do any necessary byte swapping. The component order is defined by the - * png_image format value. - */ -static int -png_write_image_16bit(png_voidp argument) -{ - png_image_write_control *display = png_voidcast(png_image_write_control*, - argument); - png_imagep image = display->image; - png_structrp png_ptr = image->opaque->png_ptr; - - png_const_uint_16p input_row = png_voidcast(png_const_uint_16p, - display->first_row); - png_uint_16p output_row = png_voidcast(png_uint_16p, display->local_row); - png_uint_16p row_end; - const int channels = (image->format & PNG_FORMAT_FLAG_COLOR) ? 3 : 1; - int aindex = 0; - png_uint_32 y = image->height; - - if (image->format & PNG_FORMAT_FLAG_ALPHA) - { -# ifdef PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED - if (image->format & PNG_FORMAT_FLAG_AFIRST) - { - aindex = -1; - ++input_row; /* To point to the first component */ - ++output_row; - } - - else -# endif - aindex = channels; - } - - else - png_error(png_ptr, "png_write_image: internal call error"); - - /* Work out the output row end and count over this, note that the increment - * above to 'row' means that row_end can actually be beyond the end of the - * row; this is correct. - */ - row_end = output_row + image->width * (channels+1); - - while (y-- > 0) - { - png_const_uint_16p in_ptr = input_row; - png_uint_16p out_ptr = output_row; - - while (out_ptr < row_end) - { - const png_uint_16 alpha = in_ptr[aindex]; - png_uint_32 reciprocal = 0; - int c; - - out_ptr[aindex] = alpha; - - /* Calculate a reciprocal. The correct calculation is simply - * component/alpha*65535 << 15. (I.e. 15 bits of precision); this - * allows correct rounding by adding .5 before the shift. 'reciprocal' - * is only initialized when required. - */ - if (alpha > 0 && alpha < 65535) - reciprocal = ((0xffff<<15)+(alpha>>1))/alpha; - - c = channels; - do /* always at least one channel */ - { - png_uint_16 component = *in_ptr++; - - /* The following gives 65535 for an alpha of 0, which is fine, - * otherwise if 0/0 is represented as some other value there is more - * likely to be a discontinuity which will probably damage - * compression when moving from a fully transparent area to a - * nearly transparent one. (The assumption here is that opaque - * areas tend not to be 0 intensity.) - */ - if (component >= alpha) - component = 65535; - - /* component 0 && alpha < 65535) - { - png_uint_32 calc = component * reciprocal; - calc += 16384; /* round to nearest */ - component = (png_uint_16)(calc >> 15); - } - - *out_ptr++ = component; - } - while (--c > 0); - - /* Skip to next component (skip the intervening alpha channel) */ - ++in_ptr; - ++out_ptr; - } - - png_write_row(png_ptr, png_voidcast(png_const_bytep, display->local_row)); - input_row += display->row_bytes/(sizeof (png_uint_16)); - } - - return 1; -} - -/* Given 16-bit input (1 to 4 channels) write 8-bit output. If an alpha channel - * is present it must be removed from the components, the components are then - * written in sRGB encoding. No components are added or removed. - * - * Calculate an alpha reciprocal to reverse pre-multiplication. As above the - * calculation can be done to 15 bits of accuracy; however, the output needs to - * be scaled in the range 0..255*65535, so include that scaling here. - */ -#define UNP_RECIPROCAL(alpha) ((((0xffff*0xff)<<7)+(alpha>>1))/alpha) - -static png_byte -png_unpremultiply(png_uint_32 component, png_uint_32 alpha, - png_uint_32 reciprocal/*from the above macro*/) -{ - /* The following gives 1.0 for an alpha of 0, which is fine, otherwise if 0/0 - * is represented as some other value there is more likely to be a - * discontinuity which will probably damage compression when moving from a - * fully transparent area to a nearly transparent one. (The assumption here - * is that opaque areas tend not to be 0 intensity.) - * - * There is a rounding problem here; if alpha is less than 128 it will end up - * as 0 when scaled to 8 bits. To avoid introducing spurious colors into the - * output change for this too. - */ - if (component >= alpha || alpha < 128) - return 255; - - /* component 0) - { - /* The test is that alpha/257 (rounded) is less than 255, the first value - * that becomes 255 is 65407. - * NOTE: this must agree with the PNG_DIV257 macro (which must, therefore, - * be exact!) [Could also test reciprocal != 0] - */ - if (alpha < 65407) - { - component *= reciprocal; - component += 64; /* round to nearest */ - component >>= 7; - } - - else - component *= 255; - - /* Convert the component to sRGB. */ - return (png_byte)PNG_sRGB_FROM_LINEAR(component); - } - - else - return 0; -} - -static int -png_write_image_8bit(png_voidp argument) -{ - png_image_write_control *display = png_voidcast(png_image_write_control*, - argument); - png_imagep image = display->image; - png_structrp png_ptr = image->opaque->png_ptr; - - png_const_uint_16p input_row = png_voidcast(png_const_uint_16p, - display->first_row); - png_bytep output_row = png_voidcast(png_bytep, display->local_row); - png_uint_32 y = image->height; - const int channels = (image->format & PNG_FORMAT_FLAG_COLOR) ? 3 : 1; - - if (image->format & PNG_FORMAT_FLAG_ALPHA) - { - png_bytep row_end; - int aindex; - -# ifdef PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED - if (image->format & PNG_FORMAT_FLAG_AFIRST) - { - aindex = -1; - ++input_row; /* To point to the first component */ - ++output_row; - } - - else -# endif - aindex = channels; - - /* Use row_end in place of a loop counter: */ - row_end = output_row + image->width * (channels+1); - - while (y-- > 0) - { - png_const_uint_16p in_ptr = input_row; - png_bytep out_ptr = output_row; - - while (out_ptr < row_end) - { - png_uint_16 alpha = in_ptr[aindex]; - png_byte alphabyte = (png_byte)PNG_DIV257(alpha); - png_uint_32 reciprocal = 0; - int c; - - /* Scale and write the alpha channel. */ - out_ptr[aindex] = alphabyte; - - if (alphabyte > 0 && alphabyte < 255) - reciprocal = UNP_RECIPROCAL(alpha); - - c = channels; - do /* always at least one channel */ - *out_ptr++ = png_unpremultiply(*in_ptr++, alpha, reciprocal); - while (--c > 0); - - /* Skip to next component (skip the intervening alpha channel) */ - ++in_ptr; - ++out_ptr; - } /* while out_ptr < row_end */ - - png_write_row(png_ptr, png_voidcast(png_const_bytep, - display->local_row)); - input_row += display->row_bytes/(sizeof (png_uint_16)); - } /* while y */ - } - - else - { - /* No alpha channel, so the row_end really is the end of the row and it - * is sufficient to loop over the components one by one. - */ - png_bytep row_end = output_row + image->width * channels; - - while (y-- > 0) - { - png_const_uint_16p in_ptr = input_row; - png_bytep out_ptr = output_row; - - while (out_ptr < row_end) - { - png_uint_32 component = *in_ptr++; - - component *= 255; - *out_ptr++ = (png_byte)PNG_sRGB_FROM_LINEAR(component); - } - - png_write_row(png_ptr, output_row); - input_row += display->row_bytes/(sizeof (png_uint_16)); - } - } - - return 1; -} - -static void -png_image_set_PLTE(png_image_write_control *display) -{ - const png_imagep image = display->image; - const void *cmap = display->colormap; - const int entries = image->colormap_entries > 256 ? 256 : - (int)image->colormap_entries; - - /* NOTE: the caller must check for cmap != NULL and entries != 0 */ - const png_uint_32 format = image->format; - const int channels = PNG_IMAGE_SAMPLE_CHANNELS(format); - -# if defined(PNG_FORMAT_BGR_SUPPORTED) &&\ - defined(PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED) - const int afirst = (format & PNG_FORMAT_FLAG_AFIRST) != 0 && - (format & PNG_FORMAT_FLAG_ALPHA) != 0; -# else -# define afirst 0 -# endif - -# ifdef PNG_FORMAT_BGR_SUPPORTED - const int bgr = (format & PNG_FORMAT_FLAG_BGR) ? 2 : 0; -# else -# define bgr 0 -# endif - - int i, num_trans; - png_color palette[256]; - png_byte tRNS[256]; - - memset(tRNS, 255, (sizeof tRNS)); - memset(palette, 0, (sizeof palette)); - - for (i=num_trans=0; i= 3) /* RGB */ - { - palette[i].blue = (png_byte)PNG_sRGB_FROM_LINEAR(255 * - entry[(2 ^ bgr)]); - palette[i].green = (png_byte)PNG_sRGB_FROM_LINEAR(255 * - entry[1]); - palette[i].red = (png_byte)PNG_sRGB_FROM_LINEAR(255 * - entry[bgr]); - } - - else /* Gray */ - palette[i].blue = palette[i].red = palette[i].green = - (png_byte)PNG_sRGB_FROM_LINEAR(255 * *entry); - } - - else /* alpha */ - { - png_uint_16 alpha = entry[afirst ? 0 : channels-1]; - png_byte alphabyte = (png_byte)PNG_DIV257(alpha); - png_uint_32 reciprocal = 0; - - /* Calculate a reciprocal, as in the png_write_image_8bit code above - * this is designed to produce a value scaled to 255*65535 when - * divided by 128 (i.e. asr 7). - */ - if (alphabyte > 0 && alphabyte < 255) - reciprocal = (((0xffff*0xff)<<7)+(alpha>>1))/alpha; - - tRNS[i] = alphabyte; - if (alphabyte < 255) - num_trans = i+1; - - if (channels >= 3) /* RGB */ - { - palette[i].blue = png_unpremultiply(entry[afirst + (2 ^ bgr)], - alpha, reciprocal); - palette[i].green = png_unpremultiply(entry[afirst + 1], alpha, - reciprocal); - palette[i].red = png_unpremultiply(entry[afirst + bgr], alpha, - reciprocal); - } - - else /* gray */ - palette[i].blue = palette[i].red = palette[i].green = - png_unpremultiply(entry[afirst], alpha, reciprocal); - } - } - - else /* Color-map has sRGB values */ - { - png_const_bytep entry = png_voidcast(png_const_bytep, cmap); - - entry += i * channels; - - switch (channels) - { - case 4: - tRNS[i] = entry[afirst ? 0 : 3]; - if (tRNS[i] < 255) - num_trans = i+1; - /* FALL THROUGH */ - case 3: - palette[i].blue = entry[afirst + (2 ^ bgr)]; - palette[i].green = entry[afirst + 1]; - palette[i].red = entry[afirst + bgr]; - break; - - case 2: - tRNS[i] = entry[1 ^ afirst]; - if (tRNS[i] < 255) - num_trans = i+1; - /* FALL THROUGH */ - case 1: - palette[i].blue = palette[i].red = palette[i].green = - entry[afirst]; - break; - - default: - break; - } - } - } - -# ifdef afirst -# undef afirst -# endif -# ifdef bgr -# undef bgr -# endif - - png_set_PLTE(image->opaque->png_ptr, image->opaque->info_ptr, palette, - entries); - - if (num_trans > 0) - png_set_tRNS(image->opaque->png_ptr, image->opaque->info_ptr, tRNS, - num_trans, NULL); - - image->colormap_entries = entries; -} - -static int -png_image_write_main(png_voidp argument) -{ - png_image_write_control *display = png_voidcast(png_image_write_control*, - argument); - png_imagep image = display->image; - png_structrp png_ptr = image->opaque->png_ptr; - png_inforp info_ptr = image->opaque->info_ptr; - png_uint_32 format = image->format; - - int colormap = (format & PNG_FORMAT_FLAG_COLORMAP) != 0; - int linear = !colormap && (format & PNG_FORMAT_FLAG_LINEAR) != 0; /* input */ - int alpha = !colormap && (format & PNG_FORMAT_FLAG_ALPHA) != 0; - int write_16bit = linear && !colormap && !display->convert_to_8bit; - -# ifdef PNG_BENIGN_ERRORS_SUPPORTED - /* Make sure we error out on any bad situation */ - png_set_benign_errors(png_ptr, 0/*error*/); -# endif - - /* Default the 'row_stride' parameter if required. */ - if (display->row_stride == 0) - display->row_stride = PNG_IMAGE_ROW_STRIDE(*image); - - /* Set the required transforms then write the rows in the correct order. */ - if (format & PNG_FORMAT_FLAG_COLORMAP) - { - if (display->colormap != NULL && image->colormap_entries > 0) - { - png_uint_32 entries = image->colormap_entries; - - png_set_IHDR(png_ptr, info_ptr, image->width, image->height, - entries > 16 ? 8 : (entries > 4 ? 4 : (entries > 2 ? 2 : 1)), - PNG_COLOR_TYPE_PALETTE, PNG_INTERLACE_NONE, - PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); - - png_image_set_PLTE(display); - } - - else - png_error(image->opaque->png_ptr, - "no color-map for color-mapped image"); - } - - else - png_set_IHDR(png_ptr, info_ptr, image->width, image->height, - write_16bit ? 16 : 8, - ((format & PNG_FORMAT_FLAG_COLOR) ? PNG_COLOR_MASK_COLOR : 0) + - ((format & PNG_FORMAT_FLAG_ALPHA) ? PNG_COLOR_MASK_ALPHA : 0), - PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); - - /* Counter-intuitively the data transformations must be called *after* - * png_write_info, not before as in the read code, but the 'set' functions - * must still be called before. Just set the color space information, never - * write an interlaced image. - */ - - if (write_16bit) - { - /* The gamma here is 1.0 (linear) and the cHRM chunk matches sRGB. */ - png_set_gAMA_fixed(png_ptr, info_ptr, PNG_GAMMA_LINEAR); - - if (!(image->flags & PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB)) - png_set_cHRM_fixed(png_ptr, info_ptr, - /* color x y */ - /* white */ 31270, 32900, - /* red */ 64000, 33000, - /* green */ 30000, 60000, - /* blue */ 15000, 6000 - ); - } - - else if (!(image->flags & PNG_IMAGE_FLAG_COLORSPACE_NOT_sRGB)) - png_set_sRGB(png_ptr, info_ptr, PNG_sRGB_INTENT_PERCEPTUAL); - - /* Else writing an 8-bit file and the *colors* aren't sRGB, but the 8-bit - * space must still be gamma encoded. - */ - else - png_set_gAMA_fixed(png_ptr, info_ptr, PNG_GAMMA_sRGB_INVERSE); - - /* Write the file header. */ - png_write_info(png_ptr, info_ptr); - - /* Now set up the data transformations (*after* the header is written), - * remove the handled transformations from the 'format' flags for checking. - * - * First check for a little endian system if writing 16 bit files. - */ - if (write_16bit) - { - PNG_CONST png_uint_16 le = 0x0001; - - if (*(png_const_bytep)&le) - png_set_swap(png_ptr); - } - -# ifdef PNG_SIMPLIFIED_WRITE_BGR_SUPPORTED - if (format & PNG_FORMAT_FLAG_BGR) - { - if (!colormap && (format & PNG_FORMAT_FLAG_COLOR) != 0) - png_set_bgr(png_ptr); - format &= ~PNG_FORMAT_FLAG_BGR; - } -# endif - -# ifdef PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED - if (format & PNG_FORMAT_FLAG_AFIRST) - { - if (!colormap && (format & PNG_FORMAT_FLAG_ALPHA) != 0) - png_set_swap_alpha(png_ptr); - format &= ~PNG_FORMAT_FLAG_AFIRST; - } -# endif - - /* If there are 16 or fewer color-map entries we wrote a lower bit depth - * above, but the application data is still byte packed. - */ - if (colormap && image->colormap_entries <= 16) - png_set_packing(png_ptr); - - /* That should have handled all (both) the transforms. */ - if ((format & ~(png_uint_32)(PNG_FORMAT_FLAG_COLOR | PNG_FORMAT_FLAG_LINEAR | - PNG_FORMAT_FLAG_ALPHA | PNG_FORMAT_FLAG_COLORMAP)) != 0) - png_error(png_ptr, "png_write_image: unsupported transformation"); - - { - png_const_bytep row = png_voidcast(png_const_bytep, display->buffer); - ptrdiff_t row_bytes = display->row_stride; - - if (linear) - row_bytes *= (sizeof (png_uint_16)); - - if (row_bytes < 0) - row += (image->height-1) * (-row_bytes); - - display->first_row = row; - display->row_bytes = row_bytes; - } - - /* Apply 'fast' options if the flag is set. */ - if ((image->flags & PNG_IMAGE_FLAG_FAST) != 0) - { - png_set_filter(png_ptr, PNG_FILTER_TYPE_BASE, PNG_NO_FILTERS); - /* NOTE: determined by experiment using pngstest, this reflects some - * balance between the time to write the image once and the time to read - * it about 50 times. The speed-up in pngstest was about 10-20% of the - * total (user) time on a heavily loaded system. - */ - png_set_compression_level(png_ptr, 3); - } - - /* Check for the cases that currently require a pre-transform on the row - * before it is written. This only applies when the input is 16-bit and - * either there is an alpha channel or it is converted to 8-bit. - */ - if ((linear && alpha) || (!colormap && display->convert_to_8bit)) - { - png_bytep row = png_voidcast(png_bytep, png_malloc(png_ptr, - png_get_rowbytes(png_ptr, info_ptr))); - int result; - - display->local_row = row; - if (write_16bit) - result = png_safe_execute(image, png_write_image_16bit, display); - else - result = png_safe_execute(image, png_write_image_8bit, display); - display->local_row = NULL; - - png_free(png_ptr, row); - - /* Skip the 'write_end' on error: */ - if (!result) - return 0; - } - - /* Otherwise this is the case where the input is in a format currently - * supported by the rest of the libpng write code; call it directly. - */ - else - { - png_const_bytep row = png_voidcast(png_const_bytep, display->first_row); - ptrdiff_t row_bytes = display->row_bytes; - png_uint_32 y = image->height; - - while (y-- > 0) - { - png_write_row(png_ptr, row); - row += row_bytes; - } - } - - png_write_end(png_ptr, info_ptr); - return 1; -} - -int PNGAPI -png_image_write_to_stdio(png_imagep image, FILE *file, int convert_to_8bit, - const void *buffer, png_int_32 row_stride, const void *colormap) -{ - /* Write the image to the given (FILE*). */ - if (image != NULL && image->version == PNG_IMAGE_VERSION) - { - if (file != NULL) - { - if (png_image_write_init(image)) - { - png_image_write_control display; - int result; - - /* This is slightly evil, but png_init_io doesn't do anything other - * than this and we haven't changed the standard IO functions so - * this saves a 'safe' function. - */ - image->opaque->png_ptr->io_ptr = file; - - memset(&display, 0, (sizeof display)); - display.image = image; - display.buffer = buffer; - display.row_stride = row_stride; - display.colormap = colormap; - display.convert_to_8bit = convert_to_8bit; - - result = png_safe_execute(image, png_image_write_main, &display); - png_image_free(image); - return result; - } - - else - return 0; - } - - else - return png_image_error(image, - "png_image_write_to_stdio: invalid argument"); - } - - else if (image != NULL) - return png_image_error(image, - "png_image_write_to_stdio: incorrect PNG_IMAGE_VERSION"); - - else - return 0; -} - -int PNGAPI -png_image_write_to_file(png_imagep image, const char *file_name, - int convert_to_8bit, const void *buffer, png_int_32 row_stride, - const void *colormap) -{ - /* Write the image to the named file. */ - if (image != NULL && image->version == PNG_IMAGE_VERSION) - { - if (file_name != NULL) - { - FILE *fp = fopen(file_name, "wb"); - - if (fp != NULL) - { - if (png_image_write_to_stdio(image, fp, convert_to_8bit, buffer, - row_stride, colormap)) - { - int error; /* from fflush/fclose */ - - /* Make sure the file is flushed correctly. */ - if (fflush(fp) == 0 && ferror(fp) == 0) - { - if (fclose(fp) == 0) - return 1; - - error = errno; /* from fclose */ - } - - else - { - error = errno; /* from fflush or ferror */ - (void)fclose(fp); - } - - (void)remove(file_name); - /* The image has already been cleaned up; this is just used to - * set the error (because the original write succeeded). - */ - return png_image_error(image, strerror(error)); - } - - else - { - /* Clean up: just the opened file. */ - (void)fclose(fp); - (void)remove(file_name); - return 0; - } - } - - else - return png_image_error(image, strerror(errno)); - } - - else - return png_image_error(image, - "png_image_write_to_file: invalid argument"); - } - - else if (image != NULL) - return png_image_error(image, - "png_image_write_to_file: incorrect PNG_IMAGE_VERSION"); - - else - return 0; -} -#endif /* PNG_STDIO_SUPPORTED */ -#endif /* SIMPLIFIED_WRITE */ -#endif /* PNG_WRITE_SUPPORTED */ diff --git a/io2d/src/3rd-party/libpng/pngwtran.c b/io2d/src/3rd-party/libpng/pngwtran.c deleted file mode 100644 index 98703f8..0000000 --- a/io2d/src/3rd-party/libpng/pngwtran.c +++ /dev/null @@ -1,637 +0,0 @@ - -/* pngwtran.c - transforms the data in a row for PNG writers - * - * Last changed in libpng 1.6.0 [February 14, 2013] - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#include "pngpriv.h" - -#ifdef PNG_WRITE_SUPPORTED - -#ifdef PNG_WRITE_TRANSFORMS_SUPPORTED -/* Transform the data according to the user's wishes. The order of - * transformations is significant. - */ -void /* PRIVATE */ -png_do_write_transformations(png_structrp png_ptr, png_row_infop row_info) -{ - png_debug(1, "in png_do_write_transformations"); - - if (png_ptr == NULL) - return; - -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED - if (png_ptr->transformations & PNG_USER_TRANSFORM) - if (png_ptr->write_user_transform_fn != NULL) - (*(png_ptr->write_user_transform_fn)) /* User write transform - function */ - (png_ptr, /* png_ptr */ - row_info, /* row_info: */ - /* png_uint_32 width; width of row */ - /* png_size_t rowbytes; number of bytes in row */ - /* png_byte color_type; color type of pixels */ - /* png_byte bit_depth; bit depth of samples */ - /* png_byte channels; number of channels (1-4) */ - /* png_byte pixel_depth; bits per pixel (depth*channels) */ - png_ptr->row_buf + 1); /* start of pixel data for row */ -#endif - -#ifdef PNG_WRITE_FILLER_SUPPORTED - if (png_ptr->transformations & PNG_FILLER) - png_do_strip_channel(row_info, png_ptr->row_buf + 1, - !(png_ptr->flags & PNG_FLAG_FILLER_AFTER)); -#endif - -#ifdef PNG_WRITE_PACKSWAP_SUPPORTED - if (png_ptr->transformations & PNG_PACKSWAP) - png_do_packswap(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_WRITE_PACK_SUPPORTED - if (png_ptr->transformations & PNG_PACK) - png_do_pack(row_info, png_ptr->row_buf + 1, - (png_uint_32)png_ptr->bit_depth); -#endif - -#ifdef PNG_WRITE_SWAP_SUPPORTED - if (png_ptr->transformations & PNG_SWAP_BYTES) - png_do_swap(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_WRITE_SHIFT_SUPPORTED - if (png_ptr->transformations & PNG_SHIFT) - png_do_shift(row_info, png_ptr->row_buf + 1, - &(png_ptr->shift)); -#endif - -#ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED - if (png_ptr->transformations & PNG_SWAP_ALPHA) - png_do_write_swap_alpha(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED - if (png_ptr->transformations & PNG_INVERT_ALPHA) - png_do_write_invert_alpha(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_WRITE_BGR_SUPPORTED - if (png_ptr->transformations & PNG_BGR) - png_do_bgr(row_info, png_ptr->row_buf + 1); -#endif - -#ifdef PNG_WRITE_INVERT_SUPPORTED - if (png_ptr->transformations & PNG_INVERT_MONO) - png_do_invert(row_info, png_ptr->row_buf + 1); -#endif -} - -#ifdef PNG_WRITE_PACK_SUPPORTED -/* Pack pixels into bytes. Pass the true bit depth in bit_depth. The - * row_info bit depth should be 8 (one pixel per byte). The channels - * should be 1 (this only happens on grayscale and paletted images). - */ -void /* PRIVATE */ -png_do_pack(png_row_infop row_info, png_bytep row, png_uint_32 bit_depth) -{ - png_debug(1, "in png_do_pack"); - - if (row_info->bit_depth == 8 && - row_info->channels == 1) - { - switch ((int)bit_depth) - { - case 1: - { - png_bytep sp, dp; - int mask, v; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - sp = row; - dp = row; - mask = 0x80; - v = 0; - - for (i = 0; i < row_width; i++) - { - if (*sp != 0) - v |= mask; - - sp++; - - if (mask > 1) - mask >>= 1; - - else - { - mask = 0x80; - *dp = (png_byte)v; - dp++; - v = 0; - } - } - - if (mask != 0x80) - *dp = (png_byte)v; - - break; - } - - case 2: - { - png_bytep sp, dp; - int shift, v; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - sp = row; - dp = row; - shift = 6; - v = 0; - - for (i = 0; i < row_width; i++) - { - png_byte value; - - value = (png_byte)(*sp & 0x03); - v |= (value << shift); - - if (shift == 0) - { - shift = 6; - *dp = (png_byte)v; - dp++; - v = 0; - } - - else - shift -= 2; - - sp++; - } - - if (shift != 6) - *dp = (png_byte)v; - - break; - } - - case 4: - { - png_bytep sp, dp; - int shift, v; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - sp = row; - dp = row; - shift = 4; - v = 0; - - for (i = 0; i < row_width; i++) - { - png_byte value; - - value = (png_byte)(*sp & 0x0f); - v |= (value << shift); - - if (shift == 0) - { - shift = 4; - *dp = (png_byte)v; - dp++; - v = 0; - } - - else - shift -= 4; - - sp++; - } - - if (shift != 4) - *dp = (png_byte)v; - - break; - } - - default: - break; - } - - row_info->bit_depth = (png_byte)bit_depth; - row_info->pixel_depth = (png_byte)(bit_depth * row_info->channels); - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, - row_info->width); - } -} -#endif - -#ifdef PNG_WRITE_SHIFT_SUPPORTED -/* Shift pixel values to take advantage of whole range. Pass the - * true number of bits in bit_depth. The row should be packed - * according to row_info->bit_depth. Thus, if you had a row of - * bit depth 4, but the pixels only had values from 0 to 7, you - * would pass 3 as bit_depth, and this routine would translate the - * data to 0 to 15. - */ -void /* PRIVATE */ -png_do_shift(png_row_infop row_info, png_bytep row, - png_const_color_8p bit_depth) -{ - png_debug(1, "in png_do_shift"); - - if (row_info->color_type != PNG_COLOR_TYPE_PALETTE) - { - int shift_start[4], shift_dec[4]; - int channels = 0; - - if (row_info->color_type & PNG_COLOR_MASK_COLOR) - { - shift_start[channels] = row_info->bit_depth - bit_depth->red; - shift_dec[channels] = bit_depth->red; - channels++; - - shift_start[channels] = row_info->bit_depth - bit_depth->green; - shift_dec[channels] = bit_depth->green; - channels++; - - shift_start[channels] = row_info->bit_depth - bit_depth->blue; - shift_dec[channels] = bit_depth->blue; - channels++; - } - - else - { - shift_start[channels] = row_info->bit_depth - bit_depth->gray; - shift_dec[channels] = bit_depth->gray; - channels++; - } - - if (row_info->color_type & PNG_COLOR_MASK_ALPHA) - { - shift_start[channels] = row_info->bit_depth - bit_depth->alpha; - shift_dec[channels] = bit_depth->alpha; - channels++; - } - - /* With low row depths, could only be grayscale, so one channel */ - if (row_info->bit_depth < 8) - { - png_bytep bp = row; - png_size_t i; - unsigned int mask; - png_size_t row_bytes = row_info->rowbytes; - - if (bit_depth->gray == 1 && row_info->bit_depth == 2) - mask = 0x55; - - else if (row_info->bit_depth == 4 && bit_depth->gray == 3) - mask = 0x11; - - else - mask = 0xff; - - for (i = 0; i < row_bytes; i++, bp++) - { - int j; - unsigned int v, out; - - v = *bp; - out = 0; - - for (j = shift_start[0]; j > -shift_dec[0]; j -= shift_dec[0]) - { - if (j > 0) - out |= v << j; - - else - out |= (v >> (-j)) & mask; - } - - *bp = (png_byte)(out & 0xff); - } - } - - else if (row_info->bit_depth == 8) - { - png_bytep bp = row; - png_uint_32 i; - png_uint_32 istop = channels * row_info->width; - - for (i = 0; i < istop; i++, bp++) - { - - const unsigned int c = i%channels; - int j; - unsigned int v, out; - - v = *bp; - out = 0; - - for (j = shift_start[c]; j > -shift_dec[c]; j -= shift_dec[c]) - { - if (j > 0) - out |= v << j; - - else - out |= v >> (-j); - } - - *bp = (png_byte)(out & 0xff); - } - } - - else - { - png_bytep bp; - png_uint_32 i; - png_uint_32 istop = channels * row_info->width; - - for (bp = row, i = 0; i < istop; i++) - { - const unsigned int c = i%channels; - int j; - unsigned int value, v; - - v = png_get_uint_16(bp); - value = 0; - - for (j = shift_start[c]; j > -shift_dec[c]; j -= shift_dec[c]) - { - if (j > 0) - value |= v << j; - - else - value |= v >> (-j); - } - *bp++ = (png_byte)((value >> 8) & 0xff); - *bp++ = (png_byte)(value & 0xff); - } - } - } -} -#endif - -#ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED -void /* PRIVATE */ -png_do_write_swap_alpha(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_write_swap_alpha"); - - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - if (row_info->bit_depth == 8) - { - /* This converts from ARGB to RGBA */ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - for (i = 0, sp = dp = row; i < row_width; i++) - { - png_byte save = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = save; - } - } - -#ifdef PNG_WRITE_16BIT_SUPPORTED - else - { - /* This converts from AARRGGBB to RRGGBBAA */ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - for (i = 0, sp = dp = row; i < row_width; i++) - { - png_byte save[2]; - save[0] = *(sp++); - save[1] = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = save[0]; - *(dp++) = save[1]; - } - } -#endif /* PNG_WRITE_16BIT_SUPPORTED */ - } - - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - if (row_info->bit_depth == 8) - { - /* This converts from AG to GA */ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - for (i = 0, sp = dp = row; i < row_width; i++) - { - png_byte save = *(sp++); - *(dp++) = *(sp++); - *(dp++) = save; - } - } - -#ifdef PNG_WRITE_16BIT_SUPPORTED - else - { - /* This converts from AAGG to GGAA */ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - for (i = 0, sp = dp = row; i < row_width; i++) - { - png_byte save[2]; - save[0] = *(sp++); - save[1] = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = save[0]; - *(dp++) = save[1]; - } - } -#endif /* PNG_WRITE_16BIT_SUPPORTED */ - } - } -} -#endif - -#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED -void /* PRIVATE */ -png_do_write_invert_alpha(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_write_invert_alpha"); - - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - if (row_info->bit_depth == 8) - { - /* This inverts the alpha channel in RGBA */ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - for (i = 0, sp = dp = row; i < row_width; i++) - { - /* Does nothing - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - */ - sp+=3; dp = sp; - *(dp++) = (png_byte)(255 - *(sp++)); - } - } - -#ifdef PNG_WRITE_16BIT_SUPPORTED - else - { - /* This inverts the alpha channel in RRGGBBAA */ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - for (i = 0, sp = dp = row; i < row_width; i++) - { - /* Does nothing - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - */ - sp+=6; dp = sp; - *(dp++) = (png_byte)(255 - *(sp++)); - *(dp++) = (png_byte)(255 - *(sp++)); - } - } -#endif /* PNG_WRITE_16BIT_SUPPORTED */ - } - - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - if (row_info->bit_depth == 8) - { - /* This inverts the alpha channel in GA */ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - for (i = 0, sp = dp = row; i < row_width; i++) - { - *(dp++) = *(sp++); - *(dp++) = (png_byte)(255 - *(sp++)); - } - } - -#ifdef PNG_WRITE_16BIT_SUPPORTED - else - { - /* This inverts the alpha channel in GGAA */ - png_bytep sp, dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - for (i = 0, sp = dp = row; i < row_width; i++) - { - /* Does nothing - *(dp++) = *(sp++); - *(dp++) = *(sp++); - */ - sp+=2; dp = sp; - *(dp++) = (png_byte)(255 - *(sp++)); - *(dp++) = (png_byte)(255 - *(sp++)); - } - } -#endif /* PNG_WRITE_16BIT_SUPPORTED */ - } - } -} -#endif -#endif /* PNG_WRITE_TRANSFORMS_SUPPORTED */ - -#ifdef PNG_MNG_FEATURES_SUPPORTED -/* Undoes intrapixel differencing */ -void /* PRIVATE */ -png_do_write_intrapixel(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_write_intrapixel"); - - if ((row_info->color_type & PNG_COLOR_MASK_COLOR)) - { - int bytes_per_pixel; - png_uint_32 row_width = row_info->width; - if (row_info->bit_depth == 8) - { - png_bytep rp; - png_uint_32 i; - - if (row_info->color_type == PNG_COLOR_TYPE_RGB) - bytes_per_pixel = 3; - - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - bytes_per_pixel = 4; - - else - return; - - for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel) - { - *(rp) = (png_byte)((*rp - *(rp + 1)) & 0xff); - *(rp + 2) = (png_byte)((*(rp + 2) - *(rp + 1)) & 0xff); - } - } - -#ifdef PNG_WRITE_16BIT_SUPPORTED - else if (row_info->bit_depth == 16) - { - png_bytep rp; - png_uint_32 i; - - if (row_info->color_type == PNG_COLOR_TYPE_RGB) - bytes_per_pixel = 6; - - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - bytes_per_pixel = 8; - - else - return; - - for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel) - { - png_uint_32 s0 = (*(rp ) << 8) | *(rp + 1); - png_uint_32 s1 = (*(rp + 2) << 8) | *(rp + 3); - png_uint_32 s2 = (*(rp + 4) << 8) | *(rp + 5); - png_uint_32 red = (png_uint_32)((s0 - s1) & 0xffffL); - png_uint_32 blue = (png_uint_32)((s2 - s1) & 0xffffL); - *(rp ) = (png_byte)((red >> 8) & 0xff); - *(rp + 1) = (png_byte)(red & 0xff); - *(rp + 4) = (png_byte)((blue >> 8) & 0xff); - *(rp + 5) = (png_byte)(blue & 0xff); - } - } -#endif /* PNG_WRITE_16BIT_SUPPORTED */ - } -} -#endif /* PNG_MNG_FEATURES_SUPPORTED */ -#endif /* PNG_WRITE_SUPPORTED */ diff --git a/io2d/src/3rd-party/libpng/pngwutil.c b/io2d/src/3rd-party/libpng/pngwutil.c deleted file mode 100644 index 49e6a2d..0000000 --- a/io2d/src/3rd-party/libpng/pngwutil.c +++ /dev/null @@ -1,3023 +0,0 @@ - -/* pngwutil.c - utilities to write a PNG file - * - * Last changed in libpng 1.6.2 [April 25, 2013] - * Copyright (c) 1998-2013 Glenn Randers-Pehrson - * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) - * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#include "pngpriv.h" - -#ifdef PNG_WRITE_SUPPORTED - -#ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED -/* Place a 32-bit number into a buffer in PNG byte order. We work - * with unsigned numbers for convenience, although one supported - * ancillary chunk uses signed (two's complement) numbers. - */ -void PNGAPI -png_save_uint_32(png_bytep buf, png_uint_32 i) -{ - buf[0] = (png_byte)((i >> 24) & 0xff); - buf[1] = (png_byte)((i >> 16) & 0xff); - buf[2] = (png_byte)((i >> 8) & 0xff); - buf[3] = (png_byte)(i & 0xff); -} - -/* Place a 16-bit number into a buffer in PNG byte order. - * The parameter is declared unsigned int, not png_uint_16, - * just to avoid potential problems on pre-ANSI C compilers. - */ -void PNGAPI -png_save_uint_16(png_bytep buf, unsigned int i) -{ - buf[0] = (png_byte)((i >> 8) & 0xff); - buf[1] = (png_byte)(i & 0xff); -} -#endif - -/* Simple function to write the signature. If we have already written - * the magic bytes of the signature, or more likely, the PNG stream is - * being embedded into another stream and doesn't need its own signature, - * we should call png_set_sig_bytes() to tell libpng how many of the - * bytes have already been written. - */ -void PNGAPI -png_write_sig(png_structrp png_ptr) -{ - png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10}; - -#ifdef PNG_IO_STATE_SUPPORTED - /* Inform the I/O callback that the signature is being written */ - png_ptr->io_state = PNG_IO_WRITING | PNG_IO_SIGNATURE; -#endif - - /* Write the rest of the 8 byte signature */ - png_write_data(png_ptr, &png_signature[png_ptr->sig_bytes], - (png_size_t)(8 - png_ptr->sig_bytes)); - - if (png_ptr->sig_bytes < 3) - png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE; -} - -/* Write the start of a PNG chunk. The type is the chunk type. - * The total_length is the sum of the lengths of all the data you will be - * passing in png_write_chunk_data(). - */ -static void -png_write_chunk_header(png_structrp png_ptr, png_uint_32 chunk_name, - png_uint_32 length) -{ - png_byte buf[8]; - -#if defined(PNG_DEBUG) && (PNG_DEBUG > 0) - PNG_CSTRING_FROM_CHUNK(buf, chunk_name); - png_debug2(0, "Writing %s chunk, length = %lu", buf, (unsigned long)length); -#endif - - if (png_ptr == NULL) - return; - -#ifdef PNG_IO_STATE_SUPPORTED - /* Inform the I/O callback that the chunk header is being written. - * PNG_IO_CHUNK_HDR requires a single I/O call. - */ - png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_HDR; -#endif - - /* Write the length and the chunk name */ - png_save_uint_32(buf, length); - png_save_uint_32(buf + 4, chunk_name); - png_write_data(png_ptr, buf, 8); - - /* Put the chunk name into png_ptr->chunk_name */ - png_ptr->chunk_name = chunk_name; - - /* Reset the crc and run it over the chunk name */ - png_reset_crc(png_ptr); - - png_calculate_crc(png_ptr, buf + 4, 4); - -#ifdef PNG_IO_STATE_SUPPORTED - /* Inform the I/O callback that chunk data will (possibly) be written. - * PNG_IO_CHUNK_DATA does NOT require a specific number of I/O calls. - */ - png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_DATA; -#endif -} - -void PNGAPI -png_write_chunk_start(png_structrp png_ptr, png_const_bytep chunk_string, - png_uint_32 length) -{ - png_write_chunk_header(png_ptr, PNG_CHUNK_FROM_STRING(chunk_string), length); -} - -/* Write the data of a PNG chunk started with png_write_chunk_header(). - * Note that multiple calls to this function are allowed, and that the - * sum of the lengths from these calls *must* add up to the total_length - * given to png_write_chunk_header(). - */ -void PNGAPI -png_write_chunk_data(png_structrp png_ptr, png_const_bytep data, - png_size_t length) -{ - /* Write the data, and run the CRC over it */ - if (png_ptr == NULL) - return; - - if (data != NULL && length > 0) - { - png_write_data(png_ptr, data, length); - - /* Update the CRC after writing the data, - * in case that the user I/O routine alters it. - */ - png_calculate_crc(png_ptr, data, length); - } -} - -/* Finish a chunk started with png_write_chunk_header(). */ -void PNGAPI -png_write_chunk_end(png_structrp png_ptr) -{ - png_byte buf[4]; - - if (png_ptr == NULL) return; - -#ifdef PNG_IO_STATE_SUPPORTED - /* Inform the I/O callback that the chunk CRC is being written. - * PNG_IO_CHUNK_CRC requires a single I/O function call. - */ - png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_CRC; -#endif - - /* Write the crc in a single operation */ - png_save_uint_32(buf, png_ptr->crc); - - png_write_data(png_ptr, buf, (png_size_t)4); -} - -/* Write a PNG chunk all at once. The type is an array of ASCII characters - * representing the chunk name. The array must be at least 4 bytes in - * length, and does not need to be null terminated. To be safe, pass the - * pre-defined chunk names here, and if you need a new one, define it - * where the others are defined. The length is the length of the data. - * All the data must be present. If that is not possible, use the - * png_write_chunk_start(), png_write_chunk_data(), and png_write_chunk_end() - * functions instead. - */ -static void -png_write_complete_chunk(png_structrp png_ptr, png_uint_32 chunk_name, - png_const_bytep data, png_size_t length) -{ - if (png_ptr == NULL) - return; - - /* On 64 bit architectures 'length' may not fit in a png_uint_32. */ - if (length > PNG_UINT_31_MAX) - png_error(png_ptr, "length exceeds PNG maxima"); - - png_write_chunk_header(png_ptr, chunk_name, (png_uint_32)length); - png_write_chunk_data(png_ptr, data, length); - png_write_chunk_end(png_ptr); -} - -/* This is the API that calls the internal function above. */ -void PNGAPI -png_write_chunk(png_structrp png_ptr, png_const_bytep chunk_string, - png_const_bytep data, png_size_t length) -{ - png_write_complete_chunk(png_ptr, PNG_CHUNK_FROM_STRING(chunk_string), data, - length); -} - -/* This is used below to find the size of an image to pass to png_deflate_claim, - * so it only needs to be accurate if the size is less than 16384 bytes (the - * point at which a lower LZ window size can be used.) - */ -static png_alloc_size_t -png_image_size(png_structrp png_ptr) -{ - /* Only return sizes up to the maximum of a png_uint_32, do this by limiting - * the width and height used to 15 bits. - */ - png_uint_32 h = png_ptr->height; - - if (png_ptr->rowbytes < 32768 && h < 32768) - { - if (png_ptr->interlaced) - { - /* Interlacing makes the image larger because of the replication of - * both the filter byte and the padding to a byte boundary. - */ - png_uint_32 w = png_ptr->width; - unsigned int pd = png_ptr->pixel_depth; - png_alloc_size_t cb_base; - int pass; - - for (cb_base=0, pass=0; pass<=6; ++pass) - { - png_uint_32 pw = PNG_PASS_COLS(w, pass); - - if (pw > 0) - cb_base += (PNG_ROWBYTES(pd, pw)+1) * PNG_PASS_ROWS(h, pass); - } - - return cb_base; - } - - else - return (png_ptr->rowbytes+1) * h; - } - - else - return 0xffffffffU; -} - -#ifdef PNG_WRITE_OPTIMIZE_CMF_SUPPORTED - /* This is the code to hack the first two bytes of the deflate stream (the - * deflate header) to correct the windowBits value to match the actual data - * size. Note that the second argument is the *uncompressed* size but the - * first argument is the *compressed* data (and it must be deflate - * compressed.) - */ -static void -optimize_cmf(png_bytep data, png_alloc_size_t data_size) -{ - /* Optimize the CMF field in the zlib stream. The resultant zlib stream is - * still compliant to the stream specification. - */ - if (data_size <= 16384) /* else windowBits must be 15 */ - { - unsigned int z_cmf = data[0]; /* zlib compression method and flags */ - - if ((z_cmf & 0x0f) == 8 && (z_cmf & 0xf0) <= 0x70) - { - unsigned int z_cinfo; - unsigned int half_z_window_size; - - z_cinfo = z_cmf >> 4; - half_z_window_size = 1U << (z_cinfo + 7); - - if (data_size <= half_z_window_size) /* else no change */ - { - unsigned int tmp; - - do - { - half_z_window_size >>= 1; - --z_cinfo; - } - while (z_cinfo > 0 && data_size <= half_z_window_size); - - z_cmf = (z_cmf & 0x0f) | (z_cinfo << 4); - - data[0] = (png_byte)z_cmf; - tmp = data[1] & 0xe0; - tmp += 0x1f - ((z_cmf << 8) + tmp) % 0x1f; - data[1] = (png_byte)tmp; - } - } - } -} -#else -# define optimize_cmf(dp,dl) ((void)0) -#endif /* PNG_WRITE_OPTIMIZE_CMF_SUPPORTED */ - -/* Initialize the compressor for the appropriate type of compression. */ -static int -png_deflate_claim(png_structrp png_ptr, png_uint_32 owner, - png_alloc_size_t data_size) -{ - if (png_ptr->zowner != 0) - { - char msg[64]; - - PNG_STRING_FROM_CHUNK(msg, owner); - msg[4] = ':'; - msg[5] = ' '; - PNG_STRING_FROM_CHUNK(msg+6, png_ptr->zowner); - /* So the message that results is " using zstream"; this is an - * internal error, but is very useful for debugging. i18n requirements - * are minimal. - */ - (void)png_safecat(msg, (sizeof msg), 10, " using zstream"); -# if PNG_LIBPNG_BUILD_BASE_TYPE >= PNG_LIBPNG_BUILD_RC - png_warning(png_ptr, msg); - - /* Attempt sane error recovery */ - if (png_ptr->zowner == png_IDAT) /* don't steal from IDAT */ - { - png_ptr->zstream.msg = PNGZ_MSG_CAST("in use by IDAT"); - return Z_STREAM_ERROR; - } - - png_ptr->zowner = 0; -# else - png_error(png_ptr, msg); -# endif - } - - { - int level = png_ptr->zlib_level; - int method = png_ptr->zlib_method; - int windowBits = png_ptr->zlib_window_bits; - int memLevel = png_ptr->zlib_mem_level; - int strategy; /* set below */ - int ret; /* zlib return code */ - - if (owner == png_IDAT) - { - if (png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_STRATEGY) - strategy = png_ptr->zlib_strategy; - - else if (png_ptr->do_filter != PNG_FILTER_NONE) - strategy = PNG_Z_DEFAULT_STRATEGY; - - else - strategy = PNG_Z_DEFAULT_NOFILTER_STRATEGY; - } - - else - { -# ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED - level = png_ptr->zlib_text_level; - method = png_ptr->zlib_text_method; - windowBits = png_ptr->zlib_text_window_bits; - memLevel = png_ptr->zlib_text_mem_level; - strategy = png_ptr->zlib_text_strategy; -# else - /* If customization is not supported the values all come from the - * IDAT values except for the strategy, which is fixed to the - * default. (This is the pre-1.6.0 behavior too, although it was - * implemented in a very different way.) - */ - strategy = Z_DEFAULT_STRATEGY; -# endif - } - - /* Adjust 'windowBits' down if larger than 'data_size'; to stop this - * happening just pass 32768 as the data_size parameter. Notice that zlib - * requires an extra 262 bytes in the window in addition to the data to be - * able to see the whole of the data, so if data_size+262 takes us to the - * next windowBits size we need to fix up the value later. (Because even - * though deflate needs the extra window, inflate does not!) - */ - if (data_size <= 16384) - { - /* IMPLEMENTATION NOTE: this 'half_window_size' stuff is only here to - * work round a Microsoft Visual C misbehavior which, contrary to C-90, - * widens the result of the following shift to 64-bits if (and, - * apparently, only if) it is used in a test. - */ - unsigned int half_window_size = 1U << (windowBits-1); - - while (data_size + 262 <= half_window_size) - { - half_window_size >>= 1; - --windowBits; - } - } - - /* Check against the previous initialized values, if any. */ - if ((png_ptr->flags & PNG_FLAG_ZSTREAM_INITIALIZED) && - (png_ptr->zlib_set_level != level || - png_ptr->zlib_set_method != method || - png_ptr->zlib_set_window_bits != windowBits || - png_ptr->zlib_set_mem_level != memLevel || - png_ptr->zlib_set_strategy != strategy)) - { - if (deflateEnd(&png_ptr->zstream) != Z_OK) - png_warning(png_ptr, "deflateEnd failed (ignored)"); - - png_ptr->flags &= ~PNG_FLAG_ZSTREAM_INITIALIZED; - } - - /* For safety clear out the input and output pointers (currently zlib - * doesn't use them on Init, but it might in the future). - */ - png_ptr->zstream.next_in = NULL; - png_ptr->zstream.avail_in = 0; - png_ptr->zstream.next_out = NULL; - png_ptr->zstream.avail_out = 0; - - /* Now initialize if required, setting the new parameters, otherwise just - * to a simple reset to the previous parameters. - */ - if (png_ptr->flags & PNG_FLAG_ZSTREAM_INITIALIZED) - ret = deflateReset(&png_ptr->zstream); - - else - { - ret = deflateInit2(&png_ptr->zstream, level, method, windowBits, - memLevel, strategy); - - if (ret == Z_OK) - png_ptr->flags |= PNG_FLAG_ZSTREAM_INITIALIZED; - } - - /* The return code is from either deflateReset or deflateInit2; they have - * pretty much the same set of error codes. - */ - if (ret == Z_OK) - png_ptr->zowner = owner; - - else - png_zstream_error(png_ptr, ret); - - return ret; - } -} - -/* Clean up (or trim) a linked list of compression buffers. */ -void /* PRIVATE */ -png_free_buffer_list(png_structrp png_ptr, png_compression_bufferp *listp) -{ - png_compression_bufferp list = *listp; - - if (list != NULL) - { - *listp = NULL; - - do - { - png_compression_bufferp next = list->next; - - png_free(png_ptr, list); - list = next; - } - while (list != NULL); - } -} - -#ifdef PNG_WRITE_COMPRESSED_TEXT_SUPPORTED -/* This pair of functions encapsulates the operation of (a) compressing a - * text string, and (b) issuing it later as a series of chunk data writes. - * The compression_state structure is shared context for these functions - * set up by the caller to allow access to the relevant local variables. - * - * compression_buffer (new in 1.6.0) is just a linked list of zbuffer_size - * temporary buffers. From 1.6.0 it is retained in png_struct so that it will - * be correctly freed in the event of a write error (previous implementations - * just leaked memory.) - */ -typedef struct -{ - png_const_bytep input; /* The uncompressed input data */ - png_alloc_size_t input_len; /* Its length */ - png_uint_32 output_len; /* Final compressed length */ - png_byte output[1024]; /* First block of output */ -} compression_state; - -static void -png_text_compress_init(compression_state *comp, png_const_bytep input, - png_alloc_size_t input_len) -{ - comp->input = input; - comp->input_len = input_len; - comp->output_len = 0; -} - -/* Compress the data in the compression state input */ -static int -png_text_compress(png_structrp png_ptr, png_uint_32 chunk_name, - compression_state *comp, png_uint_32 prefix_len) -{ - int ret; - - /* To find the length of the output it is necessary to first compress the - * input, the result is buffered rather than using the two-pass algorithm - * that is used on the inflate side; deflate is assumed to be slower and a - * PNG writer is assumed to have more memory available than a PNG reader. - * - * IMPLEMENTATION NOTE: the zlib API deflateBound() can be used to find an - * upper limit on the output size, but it is always bigger than the input - * size so it is likely to be more efficient to use this linked-list - * approach. - */ - ret = png_deflate_claim(png_ptr, chunk_name, comp->input_len); - - if (ret != Z_OK) - return ret; - - /* Set up the compression buffers, we need a loop here to avoid overflowing a - * uInt. Use ZLIB_IO_MAX to limit the input. The output is always limited - * by the output buffer size, so there is no need to check that. Since this - * is ANSI-C we know that an 'int', hence a uInt, is always at least 16 bits - * in size. - */ - { - png_compression_bufferp *end = &png_ptr->zbuffer_list; - png_alloc_size_t input_len = comp->input_len; /* may be zero! */ - png_uint_32 output_len; - - /* zlib updates these for us: */ - png_ptr->zstream.next_in = PNGZ_INPUT_CAST(comp->input); - png_ptr->zstream.avail_in = 0; /* Set below */ - png_ptr->zstream.next_out = comp->output; - png_ptr->zstream.avail_out = (sizeof comp->output); - - output_len = png_ptr->zstream.avail_out; - - do - { - uInt avail_in = ZLIB_IO_MAX; - - if (avail_in > input_len) - avail_in = (uInt)input_len; - - input_len -= avail_in; - - png_ptr->zstream.avail_in = avail_in; - - if (png_ptr->zstream.avail_out == 0) - { - png_compression_buffer *next; - - /* Chunk data is limited to 2^31 bytes in length, so the prefix - * length must be counted here. - */ - if (output_len + prefix_len > PNG_UINT_31_MAX) - { - ret = Z_MEM_ERROR; - break; - } - - /* Need a new (malloc'ed) buffer, but there may be one present - * already. - */ - next = *end; - if (next == NULL) - { - next = png_voidcast(png_compression_bufferp, png_malloc_base - (png_ptr, PNG_COMPRESSION_BUFFER_SIZE(png_ptr))); - - if (next == NULL) - { - ret = Z_MEM_ERROR; - break; - } - - /* Link in this buffer (so that it will be freed later) */ - next->next = NULL; - *end = next; - } - - png_ptr->zstream.next_out = next->output; - png_ptr->zstream.avail_out = png_ptr->zbuffer_size; - output_len += png_ptr->zstream.avail_out; - - /* Move 'end' to the next buffer pointer. */ - end = &next->next; - } - - /* Compress the data */ - ret = deflate(&png_ptr->zstream, - input_len > 0 ? Z_NO_FLUSH : Z_FINISH); - - /* Claw back input data that was not consumed (because avail_in is - * reset above every time round the loop). - */ - input_len += png_ptr->zstream.avail_in; - png_ptr->zstream.avail_in = 0; /* safety */ - } - while (ret == Z_OK); - - /* There may be some space left in the last output buffer, this needs to - * be subtracted from output_len. - */ - output_len -= png_ptr->zstream.avail_out; - png_ptr->zstream.avail_out = 0; /* safety */ - comp->output_len = output_len; - - /* Now double check the output length, put in a custom message if it is - * too long. Otherwise ensure the z_stream::msg pointer is set to - * something. - */ - if (output_len + prefix_len >= PNG_UINT_31_MAX) - { - png_ptr->zstream.msg = PNGZ_MSG_CAST("compressed data too long"); - ret = Z_MEM_ERROR; - } - - else - png_zstream_error(png_ptr, ret); - - /* Reset zlib for another zTXt/iTXt or image data */ - png_ptr->zowner = 0; - - /* The only success case is Z_STREAM_END, input_len must be 0, if not this - * is an internal error. - */ - if (ret == Z_STREAM_END && input_len == 0) - { - /* Fix up the deflate header, if required */ - optimize_cmf(comp->output, comp->input_len); - - /* But Z_OK is returned, not Z_STREAM_END; this allows the claim - * function above to return Z_STREAM_END on an error (though it never - * does in the current versions of zlib.) - */ - return Z_OK; - } - - else - return ret; - } -} - -/* Ship the compressed text out via chunk writes */ -static void -png_write_compressed_data_out(png_structrp png_ptr, compression_state *comp) -{ - png_uint_32 output_len = comp->output_len; - png_const_bytep output = comp->output; - png_uint_32 avail = (sizeof comp->output); - png_compression_buffer *next = png_ptr->zbuffer_list; - - for (;;) - { - if (avail > output_len) - avail = output_len; - - png_write_chunk_data(png_ptr, output, avail); - - output_len -= avail; - - if (output_len == 0 || next == NULL) - break; - - avail = png_ptr->zbuffer_size; - output = next->output; - next = next->next; - } - - /* This is an internal error; 'next' must have been NULL! */ - if (output_len > 0) - png_error(png_ptr, "error writing ancillary chunked compressed data"); -} -#endif /* PNG_WRITE_COMPRESSED_TEXT_SUPPORTED */ - -#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) || \ - defined(PNG_WRITE_iCCP_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED) -/* Check that the tEXt or zTXt keyword is valid per PNG 1.0 specification, - * and if invalid, correct the keyword rather than discarding the entire - * chunk. The PNG 1.0 specification requires keywords 1-79 characters in - * length, forbids leading or trailing whitespace, multiple internal spaces, - * and the non-break space (0x80) from ISO 8859-1. Returns keyword length. - * - * The 'new_key' buffer must be 80 characters in size (for the keyword plus a - * trailing '\0'). If this routine returns 0 then there was no keyword, or a - * valid one could not be generated, and the caller must png_error. - */ -static png_uint_32 -png_check_keyword(png_structrp png_ptr, png_const_charp key, png_bytep new_key) -{ - png_const_charp orig_key = key; - png_uint_32 key_len = 0; - int bad_character = 0; - int space = 1; - - png_debug(1, "in png_check_keyword"); - - if (key == NULL) - { - *new_key = 0; - return 0; - } - - while (*key && key_len < 79) - { - png_byte ch = (png_byte)(0xff & *key++); - - if ((ch > 32 && ch <= 126) || (ch >= 161 /*&& ch <= 255*/)) - *new_key++ = ch, ++key_len, space = 0; - - else if (!space) - { - /* A space or an invalid character when one wasn't seen immediately - * before; output just a space. - */ - *new_key++ = 32, ++key_len, space = 1; - - /* If the character was not a space then it is invalid. */ - if (ch != 32) - bad_character = ch; - } - - else if (!bad_character) - bad_character = ch; /* just skip it, record the first error */ - } - - if (key_len > 0 && space) /* trailing space */ - { - --key_len, --new_key; - if (!bad_character) - bad_character = 32; - } - - /* Terminate the keyword */ - *new_key = 0; - - if (key_len == 0) - return 0; - - /* Try to only output one warning per keyword: */ - if (*key) /* keyword too long */ - png_warning(png_ptr, "keyword truncated"); - - else if (bad_character) - { - PNG_WARNING_PARAMETERS(p) - - png_warning_parameter(p, 1, orig_key); - png_warning_parameter_signed(p, 2, PNG_NUMBER_FORMAT_02x, bad_character); - - png_formatted_warning(png_ptr, p, "keyword \"@1\": bad character '0x@2'"); - } - - return key_len; -} -#endif - -/* Write the IHDR chunk, and update the png_struct with the necessary - * information. Note that the rest of this code depends upon this - * information being correct. - */ -void /* PRIVATE */ -png_write_IHDR(png_structrp png_ptr, png_uint_32 width, png_uint_32 height, - int bit_depth, int color_type, int compression_type, int filter_type, - int interlace_type) -{ - png_byte buf[13]; /* Buffer to store the IHDR info */ - - png_debug(1, "in png_write_IHDR"); - - /* Check that we have valid input data from the application info */ - switch (color_type) - { - case PNG_COLOR_TYPE_GRAY: - switch (bit_depth) - { - case 1: - case 2: - case 4: - case 8: -#ifdef PNG_WRITE_16BIT_SUPPORTED - case 16: -#endif - png_ptr->channels = 1; break; - - default: - png_error(png_ptr, - "Invalid bit depth for grayscale image"); - } - break; - - case PNG_COLOR_TYPE_RGB: -#ifdef PNG_WRITE_16BIT_SUPPORTED - if (bit_depth != 8 && bit_depth != 16) -#else - if (bit_depth != 8) -#endif - png_error(png_ptr, "Invalid bit depth for RGB image"); - - png_ptr->channels = 3; - break; - - case PNG_COLOR_TYPE_PALETTE: - switch (bit_depth) - { - case 1: - case 2: - case 4: - case 8: - png_ptr->channels = 1; - break; - - default: - png_error(png_ptr, "Invalid bit depth for paletted image"); - } - break; - - case PNG_COLOR_TYPE_GRAY_ALPHA: - if (bit_depth != 8 && bit_depth != 16) - png_error(png_ptr, "Invalid bit depth for grayscale+alpha image"); - - png_ptr->channels = 2; - break; - - case PNG_COLOR_TYPE_RGB_ALPHA: -#ifdef PNG_WRITE_16BIT_SUPPORTED - if (bit_depth != 8 && bit_depth != 16) -#else - if (bit_depth != 8) -#endif - png_error(png_ptr, "Invalid bit depth for RGBA image"); - - png_ptr->channels = 4; - break; - - default: - png_error(png_ptr, "Invalid image color type specified"); - } - - if (compression_type != PNG_COMPRESSION_TYPE_BASE) - { - png_warning(png_ptr, "Invalid compression type specified"); - compression_type = PNG_COMPRESSION_TYPE_BASE; - } - - /* Write filter_method 64 (intrapixel differencing) only if - * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and - * 2. Libpng did not write a PNG signature (this filter_method is only - * used in PNG datastreams that are embedded in MNG datastreams) and - * 3. The application called png_permit_mng_features with a mask that - * included PNG_FLAG_MNG_FILTER_64 and - * 4. The filter_method is 64 and - * 5. The color_type is RGB or RGBA - */ - if ( -#ifdef PNG_MNG_FEATURES_SUPPORTED - !((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) && - ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) == 0) && - (color_type == PNG_COLOR_TYPE_RGB || - color_type == PNG_COLOR_TYPE_RGB_ALPHA) && - (filter_type == PNG_INTRAPIXEL_DIFFERENCING)) && -#endif - filter_type != PNG_FILTER_TYPE_BASE) - { - png_warning(png_ptr, "Invalid filter type specified"); - filter_type = PNG_FILTER_TYPE_BASE; - } - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - if (interlace_type != PNG_INTERLACE_NONE && - interlace_type != PNG_INTERLACE_ADAM7) - { - png_warning(png_ptr, "Invalid interlace type specified"); - interlace_type = PNG_INTERLACE_ADAM7; - } -#else - interlace_type=PNG_INTERLACE_NONE; -#endif - - /* Save the relevent information */ - png_ptr->bit_depth = (png_byte)bit_depth; - png_ptr->color_type = (png_byte)color_type; - png_ptr->interlaced = (png_byte)interlace_type; -#ifdef PNG_MNG_FEATURES_SUPPORTED - png_ptr->filter_type = (png_byte)filter_type; -#endif - png_ptr->compression_type = (png_byte)compression_type; - png_ptr->width = width; - png_ptr->height = height; - - png_ptr->pixel_depth = (png_byte)(bit_depth * png_ptr->channels); - png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, width); - /* Set the usr info, so any transformations can modify it */ - png_ptr->usr_width = png_ptr->width; - png_ptr->usr_bit_depth = png_ptr->bit_depth; - png_ptr->usr_channels = png_ptr->channels; - - /* Pack the header information into the buffer */ - png_save_uint_32(buf, width); - png_save_uint_32(buf + 4, height); - buf[8] = (png_byte)bit_depth; - buf[9] = (png_byte)color_type; - buf[10] = (png_byte)compression_type; - buf[11] = (png_byte)filter_type; - buf[12] = (png_byte)interlace_type; - - /* Write the chunk */ - png_write_complete_chunk(png_ptr, png_IHDR, buf, (png_size_t)13); - - if (!(png_ptr->do_filter)) - { - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE || - png_ptr->bit_depth < 8) - png_ptr->do_filter = PNG_FILTER_NONE; - - else - png_ptr->do_filter = PNG_ALL_FILTERS; - } - - png_ptr->mode = PNG_HAVE_IHDR; /* not READY_FOR_ZTXT */ -} - -/* Write the palette. We are careful not to trust png_color to be in the - * correct order for PNG, so people can redefine it to any convenient - * structure. - */ -void /* PRIVATE */ -png_write_PLTE(png_structrp png_ptr, png_const_colorp palette, - png_uint_32 num_pal) -{ - png_uint_32 i; - png_const_colorp pal_ptr; - png_byte buf[3]; - - png_debug(1, "in png_write_PLTE"); - - if (( -#ifdef PNG_MNG_FEATURES_SUPPORTED - !(png_ptr->mng_features_permitted & PNG_FLAG_MNG_EMPTY_PLTE) && -#endif - num_pal == 0) || num_pal > 256) - { - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - png_error(png_ptr, "Invalid number of colors in palette"); - } - - else - { - png_warning(png_ptr, "Invalid number of colors in palette"); - return; - } - } - - if (!(png_ptr->color_type&PNG_COLOR_MASK_COLOR)) - { - png_warning(png_ptr, - "Ignoring request to write a PLTE chunk in grayscale PNG"); - - return; - } - - png_ptr->num_palette = (png_uint_16)num_pal; - png_debug1(3, "num_palette = %d", png_ptr->num_palette); - - png_write_chunk_header(png_ptr, png_PLTE, (png_uint_32)(num_pal * 3)); -#ifdef PNG_POINTER_INDEXING_SUPPORTED - - for (i = 0, pal_ptr = palette; i < num_pal; i++, pal_ptr++) - { - buf[0] = pal_ptr->red; - buf[1] = pal_ptr->green; - buf[2] = pal_ptr->blue; - png_write_chunk_data(png_ptr, buf, (png_size_t)3); - } - -#else - /* This is a little slower but some buggy compilers need to do this - * instead - */ - pal_ptr=palette; - - for (i = 0; i < num_pal; i++) - { - buf[0] = pal_ptr[i].red; - buf[1] = pal_ptr[i].green; - buf[2] = pal_ptr[i].blue; - png_write_chunk_data(png_ptr, buf, (png_size_t)3); - } - -#endif - png_write_chunk_end(png_ptr); - png_ptr->mode |= PNG_HAVE_PLTE; -} - -/* This is similar to png_text_compress, above, except that it does not require - * all of the data at once and, instead of buffering the compressed result, - * writes it as IDAT chunks. Unlike png_text_compress it *can* png_error out - * because it calls the write interface. As a result it does its own error - * reporting and does not return an error code. In the event of error it will - * just call png_error. The input data length may exceed 32-bits. The 'flush' - * parameter is exactly the same as that to deflate, with the following - * meanings: - * - * Z_NO_FLUSH: normal incremental output of compressed data - * Z_SYNC_FLUSH: do a SYNC_FLUSH, used by png_write_flush - * Z_FINISH: this is the end of the input, do a Z_FINISH and clean up - * - * The routine manages the acquire and release of the png_ptr->zstream by - * checking and (at the end) clearing png_ptr->zowner, it does some sanity - * checks on the 'mode' flags while doing this. - */ -void /* PRIVATE */ -png_compress_IDAT(png_structrp png_ptr, png_const_bytep input, - png_alloc_size_t input_len, int flush) -{ - if (png_ptr->zowner != png_IDAT) - { - /* First time. Ensure we have a temporary buffer for compression and - * trim the buffer list if it has more than one entry to free memory. - * If 'WRITE_COMPRESSED_TEXT' is not set the list will never have been - * created at this point, but the check here is quick and safe. - */ - if (png_ptr->zbuffer_list == NULL) - { - png_ptr->zbuffer_list = png_voidcast(png_compression_bufferp, - png_malloc(png_ptr, PNG_COMPRESSION_BUFFER_SIZE(png_ptr))); - png_ptr->zbuffer_list->next = NULL; - } - - else - png_free_buffer_list(png_ptr, &png_ptr->zbuffer_list->next); - - /* It is a terminal error if we can't claim the zstream. */ - if (png_deflate_claim(png_ptr, png_IDAT, png_image_size(png_ptr)) != Z_OK) - png_error(png_ptr, png_ptr->zstream.msg); - - /* The output state is maintained in png_ptr->zstream, so it must be - * initialized here after the claim. - */ - png_ptr->zstream.next_out = png_ptr->zbuffer_list->output; - png_ptr->zstream.avail_out = png_ptr->zbuffer_size; - } - - /* Now loop reading and writing until all the input is consumed or an error - * terminates the operation. The _out values are maintained across calls to - * this function, but the input must be reset each time. - */ - png_ptr->zstream.next_in = PNGZ_INPUT_CAST(input); - png_ptr->zstream.avail_in = 0; /* set below */ - for (;;) - { - int ret; - - /* INPUT: from the row data */ - uInt avail = ZLIB_IO_MAX; - - if (avail > input_len) - avail = (uInt)input_len; /* safe because of the check */ - - png_ptr->zstream.avail_in = avail; - input_len -= avail; - - ret = deflate(&png_ptr->zstream, input_len > 0 ? Z_NO_FLUSH : flush); - - /* Include as-yet unconsumed input */ - input_len += png_ptr->zstream.avail_in; - png_ptr->zstream.avail_in = 0; - - /* OUTPUT: write complete IDAT chunks when avail_out drops to zero, note - * that these two zstream fields are preserved across the calls, therefore - * there is no need to set these up on entry to the loop. - */ - if (png_ptr->zstream.avail_out == 0) - { - png_bytep data = png_ptr->zbuffer_list->output; - uInt size = png_ptr->zbuffer_size; - - /* Write an IDAT containing the data then reset the buffer. The - * first IDAT may need deflate header optimization. - */ -# ifdef PNG_WRITE_OPTIMIZE_CMF_SUPPORTED - if (!(png_ptr->mode & PNG_HAVE_IDAT) && - png_ptr->compression_type == PNG_COMPRESSION_TYPE_BASE) - optimize_cmf(data, png_image_size(png_ptr)); -# endif - - png_write_complete_chunk(png_ptr, png_IDAT, data, size); - png_ptr->mode |= PNG_HAVE_IDAT; - - png_ptr->zstream.next_out = data; - png_ptr->zstream.avail_out = size; - - /* For SYNC_FLUSH or FINISH it is essential to keep calling zlib with - * the same flush parameter until it has finished output, for NO_FLUSH - * it doesn't matter. - */ - if (ret == Z_OK && flush != Z_NO_FLUSH) - continue; - } - - /* The order of these checks doesn't matter much; it just effect which - * possible error might be detected if multiple things go wrong at once. - */ - if (ret == Z_OK) /* most likely return code! */ - { - /* If all the input has been consumed then just return. If Z_FINISH - * was used as the flush parameter something has gone wrong if we get - * here. - */ - if (input_len == 0) - { - if (flush == Z_FINISH) - png_error(png_ptr, "Z_OK on Z_FINISH with output space"); - - return; - } - } - - else if (ret == Z_STREAM_END && flush == Z_FINISH) - { - /* This is the end of the IDAT data; any pending output must be - * flushed. For small PNG files we may still be at the beginning. - */ - png_bytep data = png_ptr->zbuffer_list->output; - uInt size = png_ptr->zbuffer_size - png_ptr->zstream.avail_out; - -# ifdef PNG_WRITE_OPTIMIZE_CMF_SUPPORTED - if (!(png_ptr->mode & PNG_HAVE_IDAT) && - png_ptr->compression_type == PNG_COMPRESSION_TYPE_BASE) - optimize_cmf(data, png_image_size(png_ptr)); -# endif - - png_write_complete_chunk(png_ptr, png_IDAT, data, size); - png_ptr->zstream.avail_out = 0; - png_ptr->zstream.next_out = NULL; - png_ptr->mode |= PNG_HAVE_IDAT | PNG_AFTER_IDAT; - - png_ptr->zowner = 0; /* Release the stream */ - return; - } - - else - { - /* This is an error condition. */ - png_zstream_error(png_ptr, ret); - png_error(png_ptr, png_ptr->zstream.msg); - } - } -} - -/* Write an IEND chunk */ -void /* PRIVATE */ -png_write_IEND(png_structrp png_ptr) -{ - png_debug(1, "in png_write_IEND"); - - png_write_complete_chunk(png_ptr, png_IEND, NULL, (png_size_t)0); - png_ptr->mode |= PNG_HAVE_IEND; -} - -#ifdef PNG_WRITE_gAMA_SUPPORTED -/* Write a gAMA chunk */ -void /* PRIVATE */ -png_write_gAMA_fixed(png_structrp png_ptr, png_fixed_point file_gamma) -{ - png_byte buf[4]; - - png_debug(1, "in png_write_gAMA"); - - /* file_gamma is saved in 1/100,000ths */ - png_save_uint_32(buf, (png_uint_32)file_gamma); - png_write_complete_chunk(png_ptr, png_gAMA, buf, (png_size_t)4); -} -#endif - -#ifdef PNG_WRITE_sRGB_SUPPORTED -/* Write a sRGB chunk */ -void /* PRIVATE */ -png_write_sRGB(png_structrp png_ptr, int srgb_intent) -{ - png_byte buf[1]; - - png_debug(1, "in png_write_sRGB"); - - if (srgb_intent >= PNG_sRGB_INTENT_LAST) - png_warning(png_ptr, - "Invalid sRGB rendering intent specified"); - - buf[0]=(png_byte)srgb_intent; - png_write_complete_chunk(png_ptr, png_sRGB, buf, (png_size_t)1); -} -#endif - -#ifdef PNG_WRITE_iCCP_SUPPORTED -/* Write an iCCP chunk */ -void /* PRIVATE */ -png_write_iCCP(png_structrp png_ptr, png_const_charp name, - png_const_bytep profile) -{ - png_uint_32 name_len; - png_uint_32 profile_len; - png_byte new_name[81]; /* 1 byte for the compression byte */ - compression_state comp; - - png_debug(1, "in png_write_iCCP"); - - /* These are all internal problems: the profile should have been checked - * before when it was stored. - */ - if (profile == NULL) - png_error(png_ptr, "No profile for iCCP chunk"); /* internal error */ - - profile_len = png_get_uint_32(profile); - - if (profile_len < 132) - png_error(png_ptr, "ICC profile too short"); - - if (profile_len & 0x03) - png_error(png_ptr, "ICC profile length invalid (not a multiple of 4)"); - - { - png_uint_32 embedded_profile_len = png_get_uint_32(profile); - - if (profile_len != embedded_profile_len) - png_error(png_ptr, "Profile length does not match profile"); - } - - name_len = png_check_keyword(png_ptr, name, new_name); - - if (name_len == 0) - png_error(png_ptr, "iCCP: invalid keyword"); - - new_name[++name_len] = PNG_COMPRESSION_TYPE_BASE; - - /* Make sure we include the NULL after the name and the compression type */ - ++name_len; - - png_text_compress_init(&comp, profile, profile_len); - - /* Allow for keyword terminator and compression byte */ - if (png_text_compress(png_ptr, png_iCCP, &comp, name_len) != Z_OK) - png_error(png_ptr, png_ptr->zstream.msg); - - png_write_chunk_header(png_ptr, png_iCCP, name_len + comp.output_len); - - png_write_chunk_data(png_ptr, new_name, name_len); - - png_write_compressed_data_out(png_ptr, &comp); - - png_write_chunk_end(png_ptr); -} -#endif - -#ifdef PNG_WRITE_sPLT_SUPPORTED -/* Write a sPLT chunk */ -void /* PRIVATE */ -png_write_sPLT(png_structrp png_ptr, png_const_sPLT_tp spalette) -{ - png_uint_32 name_len; - png_byte new_name[80]; - png_byte entrybuf[10]; - png_size_t entry_size = (spalette->depth == 8 ? 6 : 10); - png_size_t palette_size = entry_size * spalette->nentries; - png_sPLT_entryp ep; -#ifndef PNG_POINTER_INDEXING_SUPPORTED - int i; -#endif - - png_debug(1, "in png_write_sPLT"); - - name_len = png_check_keyword(png_ptr, spalette->name, new_name); - - if (name_len == 0) - png_error(png_ptr, "sPLT: invalid keyword"); - - /* Make sure we include the NULL after the name */ - png_write_chunk_header(png_ptr, png_sPLT, - (png_uint_32)(name_len + 2 + palette_size)); - - png_write_chunk_data(png_ptr, (png_bytep)new_name, - (png_size_t)(name_len + 1)); - - png_write_chunk_data(png_ptr, &spalette->depth, (png_size_t)1); - - /* Loop through each palette entry, writing appropriately */ -#ifdef PNG_POINTER_INDEXING_SUPPORTED - for (ep = spalette->entries; epentries + spalette->nentries; ep++) - { - if (spalette->depth == 8) - { - entrybuf[0] = (png_byte)ep->red; - entrybuf[1] = (png_byte)ep->green; - entrybuf[2] = (png_byte)ep->blue; - entrybuf[3] = (png_byte)ep->alpha; - png_save_uint_16(entrybuf + 4, ep->frequency); - } - - else - { - png_save_uint_16(entrybuf + 0, ep->red); - png_save_uint_16(entrybuf + 2, ep->green); - png_save_uint_16(entrybuf + 4, ep->blue); - png_save_uint_16(entrybuf + 6, ep->alpha); - png_save_uint_16(entrybuf + 8, ep->frequency); - } - - png_write_chunk_data(png_ptr, entrybuf, entry_size); - } -#else - ep=spalette->entries; - for (i = 0; i>spalette->nentries; i++) - { - if (spalette->depth == 8) - { - entrybuf[0] = (png_byte)ep[i].red; - entrybuf[1] = (png_byte)ep[i].green; - entrybuf[2] = (png_byte)ep[i].blue; - entrybuf[3] = (png_byte)ep[i].alpha; - png_save_uint_16(entrybuf + 4, ep[i].frequency); - } - - else - { - png_save_uint_16(entrybuf + 0, ep[i].red); - png_save_uint_16(entrybuf + 2, ep[i].green); - png_save_uint_16(entrybuf + 4, ep[i].blue); - png_save_uint_16(entrybuf + 6, ep[i].alpha); - png_save_uint_16(entrybuf + 8, ep[i].frequency); - } - - png_write_chunk_data(png_ptr, entrybuf, entry_size); - } -#endif - - png_write_chunk_end(png_ptr); -} -#endif - -#ifdef PNG_WRITE_sBIT_SUPPORTED -/* Write the sBIT chunk */ -void /* PRIVATE */ -png_write_sBIT(png_structrp png_ptr, png_const_color_8p sbit, int color_type) -{ - png_byte buf[4]; - png_size_t size; - - png_debug(1, "in png_write_sBIT"); - - /* Make sure we don't depend upon the order of PNG_COLOR_8 */ - if (color_type & PNG_COLOR_MASK_COLOR) - { - png_byte maxbits; - - maxbits = (png_byte)(color_type==PNG_COLOR_TYPE_PALETTE ? 8 : - png_ptr->usr_bit_depth); - - if (sbit->red == 0 || sbit->red > maxbits || - sbit->green == 0 || sbit->green > maxbits || - sbit->blue == 0 || sbit->blue > maxbits) - { - png_warning(png_ptr, "Invalid sBIT depth specified"); - return; - } - - buf[0] = sbit->red; - buf[1] = sbit->green; - buf[2] = sbit->blue; - size = 3; - } - - else - { - if (sbit->gray == 0 || sbit->gray > png_ptr->usr_bit_depth) - { - png_warning(png_ptr, "Invalid sBIT depth specified"); - return; - } - - buf[0] = sbit->gray; - size = 1; - } - - if (color_type & PNG_COLOR_MASK_ALPHA) - { - if (sbit->alpha == 0 || sbit->alpha > png_ptr->usr_bit_depth) - { - png_warning(png_ptr, "Invalid sBIT depth specified"); - return; - } - - buf[size++] = sbit->alpha; - } - - png_write_complete_chunk(png_ptr, png_sBIT, buf, size); -} -#endif - -#ifdef PNG_WRITE_cHRM_SUPPORTED -/* Write the cHRM chunk */ -void /* PRIVATE */ -png_write_cHRM_fixed(png_structrp png_ptr, const png_xy *xy) -{ - png_byte buf[32]; - - png_debug(1, "in png_write_cHRM"); - - /* Each value is saved in 1/100,000ths */ - png_save_int_32(buf, xy->whitex); - png_save_int_32(buf + 4, xy->whitey); - - png_save_int_32(buf + 8, xy->redx); - png_save_int_32(buf + 12, xy->redy); - - png_save_int_32(buf + 16, xy->greenx); - png_save_int_32(buf + 20, xy->greeny); - - png_save_int_32(buf + 24, xy->bluex); - png_save_int_32(buf + 28, xy->bluey); - - png_write_complete_chunk(png_ptr, png_cHRM, buf, 32); -} -#endif - -#ifdef PNG_WRITE_tRNS_SUPPORTED -/* Write the tRNS chunk */ -void /* PRIVATE */ -png_write_tRNS(png_structrp png_ptr, png_const_bytep trans_alpha, - png_const_color_16p tran, int num_trans, int color_type) -{ - png_byte buf[6]; - - png_debug(1, "in png_write_tRNS"); - - if (color_type == PNG_COLOR_TYPE_PALETTE) - { - if (num_trans <= 0 || num_trans > (int)png_ptr->num_palette) - { - png_app_warning(png_ptr, - "Invalid number of transparent colors specified"); - return; - } - - /* Write the chunk out as it is */ - png_write_complete_chunk(png_ptr, png_tRNS, trans_alpha, - (png_size_t)num_trans); - } - - else if (color_type == PNG_COLOR_TYPE_GRAY) - { - /* One 16 bit value */ - if (tran->gray >= (1 << png_ptr->bit_depth)) - { - png_app_warning(png_ptr, - "Ignoring attempt to write tRNS chunk out-of-range for bit_depth"); - - return; - } - - png_save_uint_16(buf, tran->gray); - png_write_complete_chunk(png_ptr, png_tRNS, buf, (png_size_t)2); - } - - else if (color_type == PNG_COLOR_TYPE_RGB) - { - /* Three 16 bit values */ - png_save_uint_16(buf, tran->red); - png_save_uint_16(buf + 2, tran->green); - png_save_uint_16(buf + 4, tran->blue); -#ifdef PNG_WRITE_16BIT_SUPPORTED - if (png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4])) -#else - if (buf[0] | buf[2] | buf[4]) -#endif - { - png_app_warning(png_ptr, - "Ignoring attempt to write 16-bit tRNS chunk when bit_depth is 8"); - return; - } - - png_write_complete_chunk(png_ptr, png_tRNS, buf, (png_size_t)6); - } - - else - { - png_app_warning(png_ptr, "Can't write tRNS with an alpha channel"); - } -} -#endif - -#ifdef PNG_WRITE_bKGD_SUPPORTED -/* Write the background chunk */ -void /* PRIVATE */ -png_write_bKGD(png_structrp png_ptr, png_const_color_16p back, int color_type) -{ - png_byte buf[6]; - - png_debug(1, "in png_write_bKGD"); - - if (color_type == PNG_COLOR_TYPE_PALETTE) - { - if ( -#ifdef PNG_MNG_FEATURES_SUPPORTED - (png_ptr->num_palette || - (!(png_ptr->mng_features_permitted & PNG_FLAG_MNG_EMPTY_PLTE))) && -#endif - back->index >= png_ptr->num_palette) - { - png_warning(png_ptr, "Invalid background palette index"); - return; - } - - buf[0] = back->index; - png_write_complete_chunk(png_ptr, png_bKGD, buf, (png_size_t)1); - } - - else if (color_type & PNG_COLOR_MASK_COLOR) - { - png_save_uint_16(buf, back->red); - png_save_uint_16(buf + 2, back->green); - png_save_uint_16(buf + 4, back->blue); -#ifdef PNG_WRITE_16BIT_SUPPORTED - if (png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4])) -#else - if (buf[0] | buf[2] | buf[4]) -#endif - { - png_warning(png_ptr, - "Ignoring attempt to write 16-bit bKGD chunk when bit_depth is 8"); - - return; - } - - png_write_complete_chunk(png_ptr, png_bKGD, buf, (png_size_t)6); - } - - else - { - if (back->gray >= (1 << png_ptr->bit_depth)) - { - png_warning(png_ptr, - "Ignoring attempt to write bKGD chunk out-of-range for bit_depth"); - - return; - } - - png_save_uint_16(buf, back->gray); - png_write_complete_chunk(png_ptr, png_bKGD, buf, (png_size_t)2); - } -} -#endif - -#ifdef PNG_WRITE_hIST_SUPPORTED -/* Write the histogram */ -void /* PRIVATE */ -png_write_hIST(png_structrp png_ptr, png_const_uint_16p hist, int num_hist) -{ - int i; - png_byte buf[3]; - - png_debug(1, "in png_write_hIST"); - - if (num_hist > (int)png_ptr->num_palette) - { - png_debug2(3, "num_hist = %d, num_palette = %d", num_hist, - png_ptr->num_palette); - - png_warning(png_ptr, "Invalid number of histogram entries specified"); - return; - } - - png_write_chunk_header(png_ptr, png_hIST, (png_uint_32)(num_hist * 2)); - - for (i = 0; i < num_hist; i++) - { - png_save_uint_16(buf, hist[i]); - png_write_chunk_data(png_ptr, buf, (png_size_t)2); - } - - png_write_chunk_end(png_ptr); -} -#endif - -#ifdef PNG_WRITE_tEXt_SUPPORTED -/* Write a tEXt chunk */ -void /* PRIVATE */ -png_write_tEXt(png_structrp png_ptr, png_const_charp key, png_const_charp text, - png_size_t text_len) -{ - png_uint_32 key_len; - png_byte new_key[80]; - - png_debug(1, "in png_write_tEXt"); - - key_len = png_check_keyword(png_ptr, key, new_key); - - if (key_len == 0) - png_error(png_ptr, "tEXt: invalid keyword"); - - if (text == NULL || *text == '\0') - text_len = 0; - - else - text_len = strlen(text); - - if (text_len > PNG_UINT_31_MAX - (key_len+1)) - png_error(png_ptr, "tEXt: text too long"); - - /* Make sure we include the 0 after the key */ - png_write_chunk_header(png_ptr, png_tEXt, - (png_uint_32)/*checked above*/(key_len + text_len + 1)); - /* - * We leave it to the application to meet PNG-1.0 requirements on the - * contents of the text. PNG-1.0 through PNG-1.2 discourage the use of - * any non-Latin-1 characters except for NEWLINE. ISO PNG will forbid them. - * The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG. - */ - png_write_chunk_data(png_ptr, new_key, key_len + 1); - - if (text_len) - png_write_chunk_data(png_ptr, (png_const_bytep)text, text_len); - - png_write_chunk_end(png_ptr); -} -#endif - -#ifdef PNG_WRITE_zTXt_SUPPORTED -/* Write a compressed text chunk */ -void /* PRIVATE */ -png_write_zTXt(png_structrp png_ptr, png_const_charp key, png_const_charp text, - png_size_t text_len, int compression) -{ - png_uint_32 key_len; - png_byte new_key[81]; - compression_state comp; - - png_debug(1, "in png_write_zTXt"); - PNG_UNUSED(text_len) /* Always use strlen */ - - if (compression == PNG_TEXT_COMPRESSION_NONE) - { - png_write_tEXt(png_ptr, key, text, 0); - return; - } - - if (compression != PNG_TEXT_COMPRESSION_zTXt) - png_error(png_ptr, "zTXt: invalid compression type"); - - key_len = png_check_keyword(png_ptr, key, new_key); - - if (key_len == 0) - png_error(png_ptr, "zTXt: invalid keyword"); - - /* Add the compression method and 1 for the keyword separator. */ - new_key[++key_len] = PNG_COMPRESSION_TYPE_BASE; - ++key_len; - - /* Compute the compressed data; do it now for the length */ - png_text_compress_init(&comp, (png_const_bytep)text, - text == NULL ? 0 : strlen(text)); - - if (png_text_compress(png_ptr, png_zTXt, &comp, key_len) != Z_OK) - png_error(png_ptr, png_ptr->zstream.msg); - - /* Write start of chunk */ - png_write_chunk_header(png_ptr, png_zTXt, key_len + comp.output_len); - - /* Write key */ - png_write_chunk_data(png_ptr, new_key, key_len); - - /* Write the compressed data */ - png_write_compressed_data_out(png_ptr, &comp); - - /* Close the chunk */ - png_write_chunk_end(png_ptr); -} -#endif - -#ifdef PNG_WRITE_iTXt_SUPPORTED -/* Write an iTXt chunk */ -void /* PRIVATE */ -png_write_iTXt(png_structrp png_ptr, int compression, png_const_charp key, - png_const_charp lang, png_const_charp lang_key, png_const_charp text) -{ - png_uint_32 key_len, prefix_len; - png_size_t lang_len, lang_key_len; - png_byte new_key[82]; - compression_state comp; - - png_debug(1, "in png_write_iTXt"); - - key_len = png_check_keyword(png_ptr, key, new_key); - - if (key_len == 0) - png_error(png_ptr, "iTXt: invalid keyword"); - - /* Set the compression flag */ - switch (compression) - { - case PNG_ITXT_COMPRESSION_NONE: - case PNG_TEXT_COMPRESSION_NONE: - compression = new_key[++key_len] = 0; /* no compression */ - break; - - case PNG_TEXT_COMPRESSION_zTXt: - case PNG_ITXT_COMPRESSION_zTXt: - compression = new_key[++key_len] = 1; /* compressed */ - break; - - default: - png_error(png_ptr, "iTXt: invalid compression"); - } - - new_key[++key_len] = PNG_COMPRESSION_TYPE_BASE; - ++key_len; /* for the keywod separator */ - - /* We leave it to the application to meet PNG-1.0 requirements on the - * contents of the text. PNG-1.0 through PNG-1.2 discourage the use of - * any non-Latin-1 characters except for NEWLINE. ISO PNG, however, - * specifies that the text is UTF-8 and this really doesn't require any - * checking. - * - * The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG. - * - * TODO: validate the language tag correctly (see the spec.) - */ - if (lang == NULL) lang = ""; /* empty language is valid */ - lang_len = strlen(lang)+1; - if (lang_key == NULL) lang_key = ""; /* may be empty */ - lang_key_len = strlen(lang_key)+1; - if (text == NULL) text = ""; /* may be empty */ - - prefix_len = key_len; - if (lang_len > PNG_UINT_31_MAX-prefix_len) - prefix_len = PNG_UINT_31_MAX; - else - prefix_len = (png_uint_32)(prefix_len + lang_len); - - if (lang_key_len > PNG_UINT_31_MAX-prefix_len) - prefix_len = PNG_UINT_31_MAX; - else - prefix_len = (png_uint_32)(prefix_len + lang_key_len); - - png_text_compress_init(&comp, (png_const_bytep)text, strlen(text)); - - if (compression) - { - if (png_text_compress(png_ptr, png_iTXt, &comp, prefix_len) != Z_OK) - png_error(png_ptr, png_ptr->zstream.msg); - } - - else - { - if (comp.input_len > PNG_UINT_31_MAX-prefix_len) - png_error(png_ptr, "iTXt: uncompressed text too long"); - - /* So the string will fit in a chunk: */ - comp.output_len = (png_uint_32)/*SAFE*/comp.input_len; - } - - png_write_chunk_header(png_ptr, png_iTXt, comp.output_len + prefix_len); - - png_write_chunk_data(png_ptr, new_key, key_len); - - png_write_chunk_data(png_ptr, (png_const_bytep)lang, lang_len); - - png_write_chunk_data(png_ptr, (png_const_bytep)lang_key, lang_key_len); - - if (compression) - png_write_compressed_data_out(png_ptr, &comp); - - else - png_write_chunk_data(png_ptr, (png_const_bytep)text, comp.input_len); - - png_write_chunk_end(png_ptr); -} -#endif - -#ifdef PNG_WRITE_oFFs_SUPPORTED -/* Write the oFFs chunk */ -void /* PRIVATE */ -png_write_oFFs(png_structrp png_ptr, png_int_32 x_offset, png_int_32 y_offset, - int unit_type) -{ - png_byte buf[9]; - - png_debug(1, "in png_write_oFFs"); - - if (unit_type >= PNG_OFFSET_LAST) - png_warning(png_ptr, "Unrecognized unit type for oFFs chunk"); - - png_save_int_32(buf, x_offset); - png_save_int_32(buf + 4, y_offset); - buf[8] = (png_byte)unit_type; - - png_write_complete_chunk(png_ptr, png_oFFs, buf, (png_size_t)9); -} -#endif -#ifdef PNG_WRITE_pCAL_SUPPORTED -/* Write the pCAL chunk (described in the PNG extensions document) */ -void /* PRIVATE */ -png_write_pCAL(png_structrp png_ptr, png_charp purpose, png_int_32 X0, - png_int_32 X1, int type, int nparams, png_const_charp units, - png_charpp params) -{ - png_uint_32 purpose_len; - png_size_t units_len, total_len; - png_size_tp params_len; - png_byte buf[10]; - png_byte new_purpose[80]; - int i; - - png_debug1(1, "in png_write_pCAL (%d parameters)", nparams); - - if (type >= PNG_EQUATION_LAST) - png_error(png_ptr, "Unrecognized equation type for pCAL chunk"); - - purpose_len = png_check_keyword(png_ptr, purpose, new_purpose); - - if (purpose_len == 0) - png_error(png_ptr, "pCAL: invalid keyword"); - - ++purpose_len; /* terminator */ - - png_debug1(3, "pCAL purpose length = %d", (int)purpose_len); - units_len = strlen(units) + (nparams == 0 ? 0 : 1); - png_debug1(3, "pCAL units length = %d", (int)units_len); - total_len = purpose_len + units_len + 10; - - params_len = (png_size_tp)png_malloc(png_ptr, - (png_alloc_size_t)(nparams * (sizeof (png_size_t)))); - - /* Find the length of each parameter, making sure we don't count the - * null terminator for the last parameter. - */ - for (i = 0; i < nparams; i++) - { - params_len[i] = strlen(params[i]) + (i == nparams - 1 ? 0 : 1); - png_debug2(3, "pCAL parameter %d length = %lu", i, - (unsigned long)params_len[i]); - total_len += params_len[i]; - } - - png_debug1(3, "pCAL total length = %d", (int)total_len); - png_write_chunk_header(png_ptr, png_pCAL, (png_uint_32)total_len); - png_write_chunk_data(png_ptr, new_purpose, purpose_len); - png_save_int_32(buf, X0); - png_save_int_32(buf + 4, X1); - buf[8] = (png_byte)type; - buf[9] = (png_byte)nparams; - png_write_chunk_data(png_ptr, buf, (png_size_t)10); - png_write_chunk_data(png_ptr, (png_const_bytep)units, (png_size_t)units_len); - - for (i = 0; i < nparams; i++) - { - png_write_chunk_data(png_ptr, (png_const_bytep)params[i], params_len[i]); - } - - png_free(png_ptr, params_len); - png_write_chunk_end(png_ptr); -} -#endif - -#ifdef PNG_WRITE_sCAL_SUPPORTED -/* Write the sCAL chunk */ -void /* PRIVATE */ -png_write_sCAL_s(png_structrp png_ptr, int unit, png_const_charp width, - png_const_charp height) -{ - png_byte buf[64]; - png_size_t wlen, hlen, total_len; - - png_debug(1, "in png_write_sCAL_s"); - - wlen = strlen(width); - hlen = strlen(height); - total_len = wlen + hlen + 2; - - if (total_len > 64) - { - png_warning(png_ptr, "Can't write sCAL (buffer too small)"); - return; - } - - buf[0] = (png_byte)unit; - memcpy(buf + 1, width, wlen + 1); /* Append the '\0' here */ - memcpy(buf + wlen + 2, height, hlen); /* Do NOT append the '\0' here */ - - png_debug1(3, "sCAL total length = %u", (unsigned int)total_len); - png_write_complete_chunk(png_ptr, png_sCAL, buf, total_len); -} -#endif - -#ifdef PNG_WRITE_pHYs_SUPPORTED -/* Write the pHYs chunk */ -void /* PRIVATE */ -png_write_pHYs(png_structrp png_ptr, png_uint_32 x_pixels_per_unit, - png_uint_32 y_pixels_per_unit, - int unit_type) -{ - png_byte buf[9]; - - png_debug(1, "in png_write_pHYs"); - - if (unit_type >= PNG_RESOLUTION_LAST) - png_warning(png_ptr, "Unrecognized unit type for pHYs chunk"); - - png_save_uint_32(buf, x_pixels_per_unit); - png_save_uint_32(buf + 4, y_pixels_per_unit); - buf[8] = (png_byte)unit_type; - - png_write_complete_chunk(png_ptr, png_pHYs, buf, (png_size_t)9); -} -#endif - -#ifdef PNG_WRITE_tIME_SUPPORTED -/* Write the tIME chunk. Use either png_convert_from_struct_tm() - * or png_convert_from_time_t(), or fill in the structure yourself. - */ -void /* PRIVATE */ -png_write_tIME(png_structrp png_ptr, png_const_timep mod_time) -{ - png_byte buf[7]; - - png_debug(1, "in png_write_tIME"); - - if (mod_time->month > 12 || mod_time->month < 1 || - mod_time->day > 31 || mod_time->day < 1 || - mod_time->hour > 23 || mod_time->second > 60) - { - png_warning(png_ptr, "Invalid time specified for tIME chunk"); - return; - } - - png_save_uint_16(buf, mod_time->year); - buf[2] = mod_time->month; - buf[3] = mod_time->day; - buf[4] = mod_time->hour; - buf[5] = mod_time->minute; - buf[6] = mod_time->second; - - png_write_complete_chunk(png_ptr, png_tIME, buf, (png_size_t)7); -} -#endif - -/* Initializes the row writing capability of libpng */ -void /* PRIVATE */ -png_write_start_row(png_structrp png_ptr) -{ -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static PNG_CONST png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static PNG_CONST png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - - /* Start of interlace block in the y direction */ - static PNG_CONST png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; - - /* Offset to next interlace block in the y direction */ - static PNG_CONST png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; -#endif - - png_alloc_size_t buf_size; - int usr_pixel_depth; - - png_debug(1, "in png_write_start_row"); - - usr_pixel_depth = png_ptr->usr_channels * png_ptr->usr_bit_depth; - buf_size = PNG_ROWBYTES(usr_pixel_depth, png_ptr->width) + 1; - - /* 1.5.6: added to allow checking in the row write code. */ - png_ptr->transformed_pixel_depth = png_ptr->pixel_depth; - png_ptr->maximum_pixel_depth = (png_byte)usr_pixel_depth; - - /* Set up row buffer */ - png_ptr->row_buf = (png_bytep)png_malloc(png_ptr, buf_size); - - png_ptr->row_buf[0] = PNG_FILTER_VALUE_NONE; - -#ifdef PNG_WRITE_FILTER_SUPPORTED - /* Set up filtering buffer, if using this filter */ - if (png_ptr->do_filter & PNG_FILTER_SUB) - { - png_ptr->sub_row = (png_bytep)png_malloc(png_ptr, png_ptr->rowbytes + 1); - - png_ptr->sub_row[0] = PNG_FILTER_VALUE_SUB; - } - - /* We only need to keep the previous row if we are using one of these. */ - if (png_ptr->do_filter & (PNG_FILTER_AVG | PNG_FILTER_UP | PNG_FILTER_PAETH)) - { - /* Set up previous row buffer */ - png_ptr->prev_row = (png_bytep)png_calloc(png_ptr, buf_size); - - if (png_ptr->do_filter & PNG_FILTER_UP) - { - png_ptr->up_row = (png_bytep)png_malloc(png_ptr, - png_ptr->rowbytes + 1); - - png_ptr->up_row[0] = PNG_FILTER_VALUE_UP; - } - - if (png_ptr->do_filter & PNG_FILTER_AVG) - { - png_ptr->avg_row = (png_bytep)png_malloc(png_ptr, - png_ptr->rowbytes + 1); - - png_ptr->avg_row[0] = PNG_FILTER_VALUE_AVG; - } - - if (png_ptr->do_filter & PNG_FILTER_PAETH) - { - png_ptr->paeth_row = (png_bytep)png_malloc(png_ptr, - png_ptr->rowbytes + 1); - - png_ptr->paeth_row[0] = PNG_FILTER_VALUE_PAETH; - } - } -#endif /* PNG_WRITE_FILTER_SUPPORTED */ - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* If interlaced, we need to set up width and height of pass */ - if (png_ptr->interlaced) - { - if (!(png_ptr->transformations & PNG_INTERLACE)) - { - png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 - - png_pass_ystart[0]) / png_pass_yinc[0]; - - png_ptr->usr_width = (png_ptr->width + png_pass_inc[0] - 1 - - png_pass_start[0]) / png_pass_inc[0]; - } - - else - { - png_ptr->num_rows = png_ptr->height; - png_ptr->usr_width = png_ptr->width; - } - } - - else -#endif - { - png_ptr->num_rows = png_ptr->height; - png_ptr->usr_width = png_ptr->width; - } -} - -/* Internal use only. Called when finished processing a row of data. */ -void /* PRIVATE */ -png_write_finish_row(png_structrp png_ptr) -{ -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static PNG_CONST png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static PNG_CONST png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - - /* Start of interlace block in the y direction */ - static PNG_CONST png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; - - /* Offset to next interlace block in the y direction */ - static PNG_CONST png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; -#endif - - png_debug(1, "in png_write_finish_row"); - - /* Next row */ - png_ptr->row_number++; - - /* See if we are done */ - if (png_ptr->row_number < png_ptr->num_rows) - return; - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* If interlaced, go to next pass */ - if (png_ptr->interlaced) - { - png_ptr->row_number = 0; - if (png_ptr->transformations & PNG_INTERLACE) - { - png_ptr->pass++; - } - - else - { - /* Loop until we find a non-zero width or height pass */ - do - { - png_ptr->pass++; - - if (png_ptr->pass >= 7) - break; - - png_ptr->usr_width = (png_ptr->width + - png_pass_inc[png_ptr->pass] - 1 - - png_pass_start[png_ptr->pass]) / - png_pass_inc[png_ptr->pass]; - - png_ptr->num_rows = (png_ptr->height + - png_pass_yinc[png_ptr->pass] - 1 - - png_pass_ystart[png_ptr->pass]) / - png_pass_yinc[png_ptr->pass]; - - if (png_ptr->transformations & PNG_INTERLACE) - break; - - } while (png_ptr->usr_width == 0 || png_ptr->num_rows == 0); - - } - - /* Reset the row above the image for the next pass */ - if (png_ptr->pass < 7) - { - if (png_ptr->prev_row != NULL) - memset(png_ptr->prev_row, 0, - (png_size_t)(PNG_ROWBYTES(png_ptr->usr_channels* - png_ptr->usr_bit_depth, png_ptr->width)) + 1); - - return; - } - } -#endif - - /* If we get here, we've just written the last row, so we need - to flush the compressor */ - png_compress_IDAT(png_ptr, NULL, 0, Z_FINISH); -} - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED -/* Pick out the correct pixels for the interlace pass. - * The basic idea here is to go through the row with a source - * pointer and a destination pointer (sp and dp), and copy the - * correct pixels for the pass. As the row gets compacted, - * sp will always be >= dp, so we should never overwrite anything. - * See the default: case for the easiest code to understand. - */ -void /* PRIVATE */ -png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass) -{ - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - - /* Start of interlace block */ - static PNG_CONST png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; - - /* Offset to next interlace block */ - static PNG_CONST png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; - - png_debug(1, "in png_do_write_interlace"); - - /* We don't have to do anything on the last pass (6) */ - if (pass < 6) - { - /* Each pixel depth is handled separately */ - switch (row_info->pixel_depth) - { - case 1: - { - png_bytep sp; - png_bytep dp; - int shift; - int d; - int value; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - dp = row; - d = 0; - shift = 7; - - for (i = png_pass_start[pass]; i < row_width; - i += png_pass_inc[pass]) - { - sp = row + (png_size_t)(i >> 3); - value = (int)(*sp >> (7 - (int)(i & 0x07))) & 0x01; - d |= (value << shift); - - if (shift == 0) - { - shift = 7; - *dp++ = (png_byte)d; - d = 0; - } - - else - shift--; - - } - if (shift != 7) - *dp = (png_byte)d; - - break; - } - - case 2: - { - png_bytep sp; - png_bytep dp; - int shift; - int d; - int value; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - dp = row; - shift = 6; - d = 0; - - for (i = png_pass_start[pass]; i < row_width; - i += png_pass_inc[pass]) - { - sp = row + (png_size_t)(i >> 2); - value = (*sp >> ((3 - (int)(i & 0x03)) << 1)) & 0x03; - d |= (value << shift); - - if (shift == 0) - { - shift = 6; - *dp++ = (png_byte)d; - d = 0; - } - - else - shift -= 2; - } - if (shift != 6) - *dp = (png_byte)d; - - break; - } - - case 4: - { - png_bytep sp; - png_bytep dp; - int shift; - int d; - int value; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - - dp = row; - shift = 4; - d = 0; - for (i = png_pass_start[pass]; i < row_width; - i += png_pass_inc[pass]) - { - sp = row + (png_size_t)(i >> 1); - value = (*sp >> ((1 - (int)(i & 0x01)) << 2)) & 0x0f; - d |= (value << shift); - - if (shift == 0) - { - shift = 4; - *dp++ = (png_byte)d; - d = 0; - } - - else - shift -= 4; - } - if (shift != 4) - *dp = (png_byte)d; - - break; - } - - default: - { - png_bytep sp; - png_bytep dp; - png_uint_32 i; - png_uint_32 row_width = row_info->width; - png_size_t pixel_bytes; - - /* Start at the beginning */ - dp = row; - - /* Find out how many bytes each pixel takes up */ - pixel_bytes = (row_info->pixel_depth >> 3); - - /* Loop through the row, only looking at the pixels that matter */ - for (i = png_pass_start[pass]; i < row_width; - i += png_pass_inc[pass]) - { - /* Find out where the original pixel is */ - sp = row + (png_size_t)i * pixel_bytes; - - /* Move the pixel */ - if (dp != sp) - memcpy(dp, sp, pixel_bytes); - - /* Next pixel */ - dp += pixel_bytes; - } - break; - } - } - /* Set new row width */ - row_info->width = (row_info->width + - png_pass_inc[pass] - 1 - - png_pass_start[pass]) / - png_pass_inc[pass]; - - row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, - row_info->width); - } -} -#endif - -/* This filters the row, chooses which filter to use, if it has not already - * been specified by the application, and then writes the row out with the - * chosen filter. - */ -static void png_write_filtered_row(png_structrp png_ptr, png_bytep filtered_row, - png_size_t row_bytes); - -#define PNG_MAXSUM (((png_uint_32)(-1)) >> 1) -#define PNG_HISHIFT 10 -#define PNG_LOMASK ((png_uint_32)0xffffL) -#define PNG_HIMASK ((png_uint_32)(~PNG_LOMASK >> PNG_HISHIFT)) -void /* PRIVATE */ -png_write_find_filter(png_structrp png_ptr, png_row_infop row_info) -{ - png_bytep best_row; -#ifdef PNG_WRITE_FILTER_SUPPORTED - png_bytep prev_row, row_buf; - png_uint_32 mins, bpp; - png_byte filter_to_do = png_ptr->do_filter; - png_size_t row_bytes = row_info->rowbytes; -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - int num_p_filters = png_ptr->num_prev_filters; -#endif - - png_debug(1, "in png_write_find_filter"); - -#ifndef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - if (png_ptr->row_number == 0 && filter_to_do == PNG_ALL_FILTERS) - { - /* These will never be selected so we need not test them. */ - filter_to_do &= ~(PNG_FILTER_UP | PNG_FILTER_PAETH); - } -#endif - - /* Find out how many bytes offset each pixel is */ - bpp = (row_info->pixel_depth + 7) >> 3; - - prev_row = png_ptr->prev_row; -#endif - best_row = png_ptr->row_buf; -#ifdef PNG_WRITE_FILTER_SUPPORTED - row_buf = best_row; - mins = PNG_MAXSUM; - - /* The prediction method we use is to find which method provides the - * smallest value when summing the absolute values of the distances - * from zero, using anything >= 128 as negative numbers. This is known - * as the "minimum sum of absolute differences" heuristic. Other - * heuristics are the "weighted minimum sum of absolute differences" - * (experimental and can in theory improve compression), and the "zlib - * predictive" method (not implemented yet), which does test compressions - * of lines using different filter methods, and then chooses the - * (series of) filter(s) that give minimum compressed data size (VERY - * computationally expensive). - * - * GRR 980525: consider also - * - * (1) minimum sum of absolute differences from running average (i.e., - * keep running sum of non-absolute differences & count of bytes) - * [track dispersion, too? restart average if dispersion too large?] - * - * (1b) minimum sum of absolute differences from sliding average, probably - * with window size <= deflate window (usually 32K) - * - * (2) minimum sum of squared differences from zero or running average - * (i.e., ~ root-mean-square approach) - */ - - - /* We don't need to test the 'no filter' case if this is the only filter - * that has been chosen, as it doesn't actually do anything to the data. - */ - if ((filter_to_do & PNG_FILTER_NONE) && filter_to_do != PNG_FILTER_NONE) - { - png_bytep rp; - png_uint_32 sum = 0; - png_size_t i; - int v; - - for (i = 0, rp = row_buf + 1; i < row_bytes; i++, rp++) - { - v = *rp; - sum += (v < 128) ? v : 256 - v; - } - -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - png_uint_32 sumhi, sumlo; - int j; - sumlo = sum & PNG_LOMASK; - sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; /* Gives us some footroom */ - - /* Reduce the sum if we match any of the previous rows */ - for (j = 0; j < num_p_filters; j++) - { - if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_NONE) - { - sumlo = (sumlo * png_ptr->filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - - sumhi = (sumhi * png_ptr->filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - } - } - - /* Factor in the cost of this filter (this is here for completeness, - * but it makes no sense to have a "cost" for the NONE filter, as - * it has the minimum possible computational cost - none). - */ - sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_NONE]) >> - PNG_COST_SHIFT; - - sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_NONE]) >> - PNG_COST_SHIFT; - - if (sumhi > PNG_HIMASK) - sum = PNG_MAXSUM; - - else - sum = (sumhi << PNG_HISHIFT) + sumlo; - } -#endif - mins = sum; - } - - /* Sub filter */ - if (filter_to_do == PNG_FILTER_SUB) - /* It's the only filter so no testing is needed */ - { - png_bytep rp, lp, dp; - png_size_t i; - - for (i = 0, rp = row_buf + 1, dp = png_ptr->sub_row + 1; i < bpp; - i++, rp++, dp++) - { - *dp = *rp; - } - - for (lp = row_buf + 1; i < row_bytes; - i++, rp++, lp++, dp++) - { - *dp = (png_byte)(((int)*rp - (int)*lp) & 0xff); - } - - best_row = png_ptr->sub_row; - } - - else if (filter_to_do & PNG_FILTER_SUB) - { - png_bytep rp, dp, lp; - png_uint_32 sum = 0, lmins = mins; - png_size_t i; - int v; - -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - /* We temporarily increase the "minimum sum" by the factor we - * would reduce the sum of this filter, so that we can do the - * early exit comparison without scaling the sum each time. - */ - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - int j; - png_uint_32 lmhi, lmlo; - lmlo = lmins & PNG_LOMASK; - lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK; - - for (j = 0; j < num_p_filters; j++) - { - if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_SUB) - { - lmlo = (lmlo * png_ptr->inv_filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - - lmhi = (lmhi * png_ptr->inv_filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - } - } - - lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >> - PNG_COST_SHIFT; - - lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >> - PNG_COST_SHIFT; - - if (lmhi > PNG_HIMASK) - lmins = PNG_MAXSUM; - - else - lmins = (lmhi << PNG_HISHIFT) + lmlo; - } -#endif - - for (i = 0, rp = row_buf + 1, dp = png_ptr->sub_row + 1; i < bpp; - i++, rp++, dp++) - { - v = *dp = *rp; - - sum += (v < 128) ? v : 256 - v; - } - - for (lp = row_buf + 1; i < row_bytes; - i++, rp++, lp++, dp++) - { - v = *dp = (png_byte)(((int)*rp - (int)*lp) & 0xff); - - sum += (v < 128) ? v : 256 - v; - - if (sum > lmins) /* We are already worse, don't continue. */ - break; - } - -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - int j; - png_uint_32 sumhi, sumlo; - sumlo = sum & PNG_LOMASK; - sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; - - for (j = 0; j < num_p_filters; j++) - { - if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_SUB) - { - sumlo = (sumlo * png_ptr->inv_filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - - sumhi = (sumhi * png_ptr->inv_filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - } - } - - sumlo = (sumlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >> - PNG_COST_SHIFT; - - sumhi = (sumhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >> - PNG_COST_SHIFT; - - if (sumhi > PNG_HIMASK) - sum = PNG_MAXSUM; - - else - sum = (sumhi << PNG_HISHIFT) + sumlo; - } -#endif - - if (sum < mins) - { - mins = sum; - best_row = png_ptr->sub_row; - } - } - - /* Up filter */ - if (filter_to_do == PNG_FILTER_UP) - { - png_bytep rp, dp, pp; - png_size_t i; - - for (i = 0, rp = row_buf + 1, dp = png_ptr->up_row + 1, - pp = prev_row + 1; i < row_bytes; - i++, rp++, pp++, dp++) - { - *dp = (png_byte)(((int)*rp - (int)*pp) & 0xff); - } - - best_row = png_ptr->up_row; - } - - else if (filter_to_do & PNG_FILTER_UP) - { - png_bytep rp, dp, pp; - png_uint_32 sum = 0, lmins = mins; - png_size_t i; - int v; - - -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - int j; - png_uint_32 lmhi, lmlo; - lmlo = lmins & PNG_LOMASK; - lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK; - - for (j = 0; j < num_p_filters; j++) - { - if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_UP) - { - lmlo = (lmlo * png_ptr->inv_filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - - lmhi = (lmhi * png_ptr->inv_filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - } - } - - lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_UP]) >> - PNG_COST_SHIFT; - - lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_UP]) >> - PNG_COST_SHIFT; - - if (lmhi > PNG_HIMASK) - lmins = PNG_MAXSUM; - - else - lmins = (lmhi << PNG_HISHIFT) + lmlo; - } -#endif - - for (i = 0, rp = row_buf + 1, dp = png_ptr->up_row + 1, - pp = prev_row + 1; i < row_bytes; i++) - { - v = *dp++ = (png_byte)(((int)*rp++ - (int)*pp++) & 0xff); - - sum += (v < 128) ? v : 256 - v; - - if (sum > lmins) /* We are already worse, don't continue. */ - break; - } - -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - int j; - png_uint_32 sumhi, sumlo; - sumlo = sum & PNG_LOMASK; - sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; - - for (j = 0; j < num_p_filters; j++) - { - if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_UP) - { - sumlo = (sumlo * png_ptr->filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - - sumhi = (sumhi * png_ptr->filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - } - } - - sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_UP]) >> - PNG_COST_SHIFT; - - sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_UP]) >> - PNG_COST_SHIFT; - - if (sumhi > PNG_HIMASK) - sum = PNG_MAXSUM; - - else - sum = (sumhi << PNG_HISHIFT) + sumlo; - } -#endif - - if (sum < mins) - { - mins = sum; - best_row = png_ptr->up_row; - } - } - - /* Avg filter */ - if (filter_to_do == PNG_FILTER_AVG) - { - png_bytep rp, dp, pp, lp; - png_uint_32 i; - - for (i = 0, rp = row_buf + 1, dp = png_ptr->avg_row + 1, - pp = prev_row + 1; i < bpp; i++) - { - *dp++ = (png_byte)(((int)*rp++ - ((int)*pp++ / 2)) & 0xff); - } - - for (lp = row_buf + 1; i < row_bytes; i++) - { - *dp++ = (png_byte)(((int)*rp++ - (((int)*pp++ + (int)*lp++) / 2)) - & 0xff); - } - best_row = png_ptr->avg_row; - } - - else if (filter_to_do & PNG_FILTER_AVG) - { - png_bytep rp, dp, pp, lp; - png_uint_32 sum = 0, lmins = mins; - png_size_t i; - int v; - -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - int j; - png_uint_32 lmhi, lmlo; - lmlo = lmins & PNG_LOMASK; - lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK; - - for (j = 0; j < num_p_filters; j++) - { - if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_AVG) - { - lmlo = (lmlo * png_ptr->inv_filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - - lmhi = (lmhi * png_ptr->inv_filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - } - } - - lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_AVG]) >> - PNG_COST_SHIFT; - - lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_AVG]) >> - PNG_COST_SHIFT; - - if (lmhi > PNG_HIMASK) - lmins = PNG_MAXSUM; - - else - lmins = (lmhi << PNG_HISHIFT) + lmlo; - } -#endif - - for (i = 0, rp = row_buf + 1, dp = png_ptr->avg_row + 1, - pp = prev_row + 1; i < bpp; i++) - { - v = *dp++ = (png_byte)(((int)*rp++ - ((int)*pp++ / 2)) & 0xff); - - sum += (v < 128) ? v : 256 - v; - } - - for (lp = row_buf + 1; i < row_bytes; i++) - { - v = *dp++ = - (png_byte)(((int)*rp++ - (((int)*pp++ + (int)*lp++) / 2)) & 0xff); - - sum += (v < 128) ? v : 256 - v; - - if (sum > lmins) /* We are already worse, don't continue. */ - break; - } - -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - int j; - png_uint_32 sumhi, sumlo; - sumlo = sum & PNG_LOMASK; - sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; - - for (j = 0; j < num_p_filters; j++) - { - if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_NONE) - { - sumlo = (sumlo * png_ptr->filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - - sumhi = (sumhi * png_ptr->filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - } - } - - sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_AVG]) >> - PNG_COST_SHIFT; - - sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_AVG]) >> - PNG_COST_SHIFT; - - if (sumhi > PNG_HIMASK) - sum = PNG_MAXSUM; - - else - sum = (sumhi << PNG_HISHIFT) + sumlo; - } -#endif - - if (sum < mins) - { - mins = sum; - best_row = png_ptr->avg_row; - } - } - - /* Paeth filter */ - if (filter_to_do == PNG_FILTER_PAETH) - { - png_bytep rp, dp, pp, cp, lp; - png_size_t i; - - for (i = 0, rp = row_buf + 1, dp = png_ptr->paeth_row + 1, - pp = prev_row + 1; i < bpp; i++) - { - *dp++ = (png_byte)(((int)*rp++ - (int)*pp++) & 0xff); - } - - for (lp = row_buf + 1, cp = prev_row + 1; i < row_bytes; i++) - { - int a, b, c, pa, pb, pc, p; - - b = *pp++; - c = *cp++; - a = *lp++; - - p = b - c; - pc = a - c; - -#ifdef PNG_USE_ABS - pa = abs(p); - pb = abs(pc); - pc = abs(p + pc); -#else - pa = p < 0 ? -p : p; - pb = pc < 0 ? -pc : pc; - pc = (p + pc) < 0 ? -(p + pc) : p + pc; -#endif - - p = (pa <= pb && pa <=pc) ? a : (pb <= pc) ? b : c; - - *dp++ = (png_byte)(((int)*rp++ - p) & 0xff); - } - best_row = png_ptr->paeth_row; - } - - else if (filter_to_do & PNG_FILTER_PAETH) - { - png_bytep rp, dp, pp, cp, lp; - png_uint_32 sum = 0, lmins = mins; - png_size_t i; - int v; - -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - int j; - png_uint_32 lmhi, lmlo; - lmlo = lmins & PNG_LOMASK; - lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK; - - for (j = 0; j < num_p_filters; j++) - { - if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_PAETH) - { - lmlo = (lmlo * png_ptr->inv_filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - - lmhi = (lmhi * png_ptr->inv_filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - } - } - - lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_PAETH]) >> - PNG_COST_SHIFT; - - lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_PAETH]) >> - PNG_COST_SHIFT; - - if (lmhi > PNG_HIMASK) - lmins = PNG_MAXSUM; - - else - lmins = (lmhi << PNG_HISHIFT) + lmlo; - } -#endif - - for (i = 0, rp = row_buf + 1, dp = png_ptr->paeth_row + 1, - pp = prev_row + 1; i < bpp; i++) - { - v = *dp++ = (png_byte)(((int)*rp++ - (int)*pp++) & 0xff); - - sum += (v < 128) ? v : 256 - v; - } - - for (lp = row_buf + 1, cp = prev_row + 1; i < row_bytes; i++) - { - int a, b, c, pa, pb, pc, p; - - b = *pp++; - c = *cp++; - a = *lp++; - -#ifndef PNG_SLOW_PAETH - p = b - c; - pc = a - c; -#ifdef PNG_USE_ABS - pa = abs(p); - pb = abs(pc); - pc = abs(p + pc); -#else - pa = p < 0 ? -p : p; - pb = pc < 0 ? -pc : pc; - pc = (p + pc) < 0 ? -(p + pc) : p + pc; -#endif - p = (pa <= pb && pa <=pc) ? a : (pb <= pc) ? b : c; -#else /* PNG_SLOW_PAETH */ - p = a + b - c; - pa = abs(p - a); - pb = abs(p - b); - pc = abs(p - c); - - if (pa <= pb && pa <= pc) - p = a; - - else if (pb <= pc) - p = b; - - else - p = c; -#endif /* PNG_SLOW_PAETH */ - - v = *dp++ = (png_byte)(((int)*rp++ - p) & 0xff); - - sum += (v < 128) ? v : 256 - v; - - if (sum > lmins) /* We are already worse, don't continue. */ - break; - } - -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - int j; - png_uint_32 sumhi, sumlo; - sumlo = sum & PNG_LOMASK; - sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; - - for (j = 0; j < num_p_filters; j++) - { - if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_PAETH) - { - sumlo = (sumlo * png_ptr->filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - - sumhi = (sumhi * png_ptr->filter_weights[j]) >> - PNG_WEIGHT_SHIFT; - } - } - - sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_PAETH]) >> - PNG_COST_SHIFT; - - sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_PAETH]) >> - PNG_COST_SHIFT; - - if (sumhi > PNG_HIMASK) - sum = PNG_MAXSUM; - - else - sum = (sumhi << PNG_HISHIFT) + sumlo; - } -#endif - - if (sum < mins) - { - best_row = png_ptr->paeth_row; - } - } -#endif /* PNG_WRITE_FILTER_SUPPORTED */ - - /* Do the actual writing of the filtered row data from the chosen filter. */ - png_write_filtered_row(png_ptr, best_row, row_info->rowbytes+1); - -#ifdef PNG_WRITE_FILTER_SUPPORTED -#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - /* Save the type of filter we picked this time for future calculations */ - if (png_ptr->num_prev_filters > 0) - { - int j; - - for (j = 1; j < num_p_filters; j++) - { - png_ptr->prev_filters[j] = png_ptr->prev_filters[j - 1]; - } - - png_ptr->prev_filters[j] = best_row[0]; - } -#endif -#endif /* PNG_WRITE_FILTER_SUPPORTED */ -} - - -/* Do the actual writing of a previously filtered row. */ -static void -png_write_filtered_row(png_structrp png_ptr, png_bytep filtered_row, - png_size_t full_row_length/*includes filter byte*/) -{ - png_debug(1, "in png_write_filtered_row"); - - png_debug1(2, "filter = %d", filtered_row[0]); - - png_compress_IDAT(png_ptr, filtered_row, full_row_length, Z_NO_FLUSH); - - /* Swap the current and previous rows */ - if (png_ptr->prev_row != NULL) - { - png_bytep tptr; - - tptr = png_ptr->prev_row; - png_ptr->prev_row = png_ptr->row_buf; - png_ptr->row_buf = tptr; - } - - /* Finish row - updates counters and flushes zlib if last row */ - png_write_finish_row(png_ptr); - -#ifdef PNG_WRITE_FLUSH_SUPPORTED - png_ptr->flush_rows++; - - if (png_ptr->flush_dist > 0 && - png_ptr->flush_rows >= png_ptr->flush_dist) - { - png_write_flush(png_ptr); - } -#endif -} -#endif /* PNG_WRITE_SUPPORTED */ diff --git a/io2d/src/3rd-party/libpng/projects/owatcom/libpng.tgt b/io2d/src/3rd-party/libpng/projects/owatcom/libpng.tgt deleted file mode 100644 index 096b2ee..0000000 --- a/io2d/src/3rd-party/libpng/projects/owatcom/libpng.tgt +++ /dev/null @@ -1,383 +0,0 @@ -40 -targetIdent -0 -MProject -1 -MComponent -0 -2 -WString -3 -LIB -3 -WString -5 -n_2sn -1 -0 -0 -4 -MCommand -0 -5 -MCommand -0 -6 -MItem -10 -libpng.lib -7 -WString -3 -LIB -8 -WVList -0 -9 -WVList -1 -10 -ActionStates -11 -WString -5 -&Make -12 -WVList -0 --1 -1 -1 -0 -13 -WPickList -16 -14 -MItem -3 -*.c -15 -WString -4 -COBJ -16 -WVList -2 -17 -MVState -18 -WString -3 -WCC -19 -WString -25 -n????Include directories: -1 -20 -WString -39 -"$(%zlib);$(%watcom)/h;$(%watcom)/h/nt" -0 -21 -MVState -22 -WString -3 -WCC -23 -WString -25 -n????Include directories: -0 -24 -WString -39 -"$(%zlib);$(%watcom)/h;$(%watcom)/h/nt" -0 -25 -WVList -1 -26 -ActionStates -27 -WString -5 -&Make -28 -WVList -0 --1 -1 -1 -0 -29 -MItem -11 -..\..\png.c -30 -WString -4 -COBJ -31 -WVList -0 -32 -WVList -0 -14 -1 -1 -0 -33 -MItem -16 -..\..\pngerror.c -34 -WString -4 -COBJ -35 -WVList -0 -36 -WVList -0 -14 -1 -1 -0 -37 -MItem -14 -..\..\pngget.c -38 -WString -4 -COBJ -39 -WVList -0 -40 -WVList -0 -14 -1 -1 -0 -41 -MItem -14 -..\..\pngmem.c -42 -WString -4 -COBJ -43 -WVList -0 -44 -WVList -0 -14 -1 -1 -0 -45 -MItem -16 -..\..\pngpread.c -46 -WString -4 -COBJ -47 -WVList -0 -48 -WVList -0 -14 -1 -1 -0 -49 -MItem -15 -..\..\pngread.c -50 -WString -4 -COBJ -51 -WVList -0 -52 -WVList -0 -14 -1 -1 -0 -53 -MItem -14 -..\..\pngrio.c -54 -WString -4 -COBJ -55 -WVList -0 -56 -WVList -0 -14 -1 -1 -0 -57 -MItem -16 -..\..\pngrtran.c -58 -WString -4 -COBJ -59 -WVList -0 -60 -WVList -0 -14 -1 -1 -0 -61 -MItem -16 -..\..\pngrutil.c -62 -WString -4 -COBJ -63 -WVList -0 -64 -WVList -0 -14 -1 -1 -0 -65 -MItem -14 -..\..\pngset.c -66 -WString -4 -COBJ -67 -WVList -0 -68 -WVList -0 -14 -1 -1 -0 -69 -MItem -16 -..\..\pngtrans.c -70 -WString -4 -COBJ -71 -WVList -0 -72 -WVList -0 -14 -1 -1 -0 -73 -MItem -14 -..\..\pngwio.c -74 -WString -4 -COBJ -75 -WVList -0 -76 -WVList -0 -14 -1 -1 -0 -77 -MItem -16 -..\..\pngwrite.c -78 -WString -4 -COBJ -79 -WVList -0 -80 -WVList -0 -14 -1 -1 -0 -81 -MItem -16 -..\..\pngwtran.c -82 -WString -4 -COBJ -83 -WVList -0 -84 -WVList -0 -14 -1 -1 -0 -85 -MItem -16 -..\..\pngwutil.c -86 -WString -4 -COBJ -87 -WVList -0 -88 -WVList -0 -14 -1 -1 -0 diff --git a/io2d/src/3rd-party/libpng/projects/owatcom/libpng.wpj b/io2d/src/3rd-party/libpng/projects/owatcom/libpng.wpj deleted file mode 100644 index fe7583f..0000000 --- a/io2d/src/3rd-party/libpng/projects/owatcom/libpng.wpj +++ /dev/null @@ -1,112 +0,0 @@ -40 -projectIdent -0 -VpeMain -1 -WRect -256 -0 -8960 -9294 -2 -MProject -3 -MCommand -322 -# Locations of zlib and (if required) awk (change as required:) -set zlib=..\..\..\zlib -set awk= -# -@if not exist pngconfig.dfa $(MAKE) $(__MAKEOPTS__) -f pngconfig.mak defaults -@if exist config.inf type config.inf -@echo Checking for the libpng configuration file pnglibconf.h -$(MAKE) $(__MAKEOPTS__) -f pngconfig.mak -4 -MCommand -19 -@type pngconfig.inf -4 -5 -WFileName -10 -libpng.tgt -6 -WFileName -11 -pngtest.tgt -7 -WFileName -12 -pngvalid.tgt -8 -WFileName -12 -pngstest.tgt -9 -WVList -4 -10 -VComponent -11 -WRect -0 -0 -5638 -4174 -0 -0 -12 -WFileName -10 -libpng.tgt -0 -0 -13 -VComponent -14 -WRect -1280 -1550 -5638 -4174 -0 -0 -15 -WFileName -11 -pngtest.tgt -0 -1 -16 -VComponent -17 -WRect -524 -497 -5638 -4174 -0 -0 -18 -WFileName -12 -pngvalid.tgt -0 -1 -19 -VComponent -20 -WRect -2054 -2701 -5674 -4232 -0 -0 -21 -WFileName -12 -pngstest.tgt -0 -1 -19 diff --git a/io2d/src/3rd-party/libpng/projects/owatcom/pngconfig.mak b/io2d/src/3rd-party/libpng/projects/owatcom/pngconfig.mak deleted file mode 100644 index 0f98878..0000000 --- a/io2d/src/3rd-party/libpng/projects/owatcom/pngconfig.mak +++ /dev/null @@ -1,160 +0,0 @@ -# This is an OpenWatcom make file which builds pnglibconf.h - the libpng -# configuration header. You can ignore this file if you don't need to -# configure libpng; a default configuration will be built. -# -# For more information build libpng.wpj under the IDE and then read the -# generated files: -# -# config.inf: Basic configuration information for a standard build. -# pngconfig.dfa: Advanced configuration for non-standard libpng builds. -# -DELETE=rm -f -ECHO=echo -COPY=copy -# -# If your configuration needs to test compiler flags when building -# pnglibconf.h you may need to override the following on the wmake command -# line: -CFLAGS= -CC=wcl386 -CPP=$(CC) -pw0 -# -# Read awk from the environment if set, else it can be set on the command -# line (the default approach is to set the %awk% environment variable in the -# IDE libpng.wpj 'before' rule - this setting is local.) -!ifdef %awk -AWK=$(%awk) -!endif -# -# pnglibconf.h must exist in the source directory, this is the final rule -# which copies the local built version (and this is the default target for -# this makefile.) -..\..\pnglibconf.h: pnglibconf.h - $(COPY) pnglibconf.h $@ - -!ifdef AWK -# CPPFLAGS should contain the options to control the result, -# but DEFS and CFLAGS are also supported here, override -# as appropriate -DFNFLAGS = $(DEFS) $(CPPFLAGS) $(CFLAGS) - -pnglibconf.h: pnglibconf.dfn - $(DELETE) $@ dfn.c dfn1.out dfn2.out - $(ECHO) $#include "pnglibconf.dfn" >dfn.c - $(CPP) $(DFNFLAGS) dfn.c >dfn1.out - $(AWK) -f << dfn1.out >dfn2.out -/^.*PNG_DEFN_MAGIC-.*-PNG_DEFN_END.*$$/{ - sub(/^.*PNG_DEFN_MAGIC-/, "") - sub(/ *-PNG_DEFN_END.*$$/, "") - gsub(/ *@@@ */, "") - print -} -<< - $(COPY) dfn2.out $@ - @type << >pngconfig.inf -This is a locally configurable build of libpng.lib; for configuration -instructions consult and edit projects/openwatcom/pngconfig.dfa -<< - $(DELETE) dfn.c dfn1.out dfn2.out - -pnglibconf.dfn: ..\..\scripts\pnglibconf.dfa ..\..\scripts\options.awk pngconfig.dfa ..\..\pngconf.h - $(DELETE) $@ dfn1.out dfn2.out - $(AWK) -f ..\..\scripts\options.awk out=dfn1.out version=search ..\..\pngconf.h ..\..\scripts\pnglibconf.dfa pngconfig.dfa $(DFA_XTRA) 1>&2 - $(AWK) -f ..\..\scripts\options.awk out=dfn2.out dfn1.out 1>&2 - $(COPY) dfn2.out $@ - $(DELETE) dfn1.out dfn2.out - -!else -# The following lines are used to copy scripts\pnglibconf.h.prebuilt and make -# the required change to the calling convention. -# -# By default libpng is built to use the __cdecl calling convention on -# Windows. This gives compatibility with MSVC and GCC. Unfortunately it -# does not work with OpenWatcom because OpenWatcom implements longjmp using -# the __watcall convention (compared with both MSVC and GCC which use __cdecl -# for library functions.) -# -# Thus the default must be changed to build on OpenWatcom and, once changed, -# the result will not be compatible with applications built using other -# compilers (in fact attempts to build will fail at compile time.) -# -pnglibconf.h: ..\..\scripts\pnglibconf.h.prebuilt .existsonly - @$(ECHO) . - @$(ECHO) . - @$(ECHO) $$(AWK) NOT AVAILABLE: COPYING scripts\pnglibconf.h.prebuilt - @$(ECHO) . - @$(ECHO) . - vi -q -k ":1,$$s/PNG_API_RULE 0$$/PNG_API_RULE 2/\n:w! $@\n:q!\n" ..\..\scripts\pnglibconf.h.prebuilt - @$(ECHO) . - @$(ECHO) . - @$(ECHO) YOU HAVE A DEFAULT CONFIGURATION BECAUSE YOU DO NOT HAVE AWK! - @$(ECHO) . - @$(ECHO) . - @type << >pngconfig.inf -This is the default configuration of libpng.lib, if you wish to -change the configuration please consult the instructions in -projects/owatcom/pngconfig.dfa. -<< - -!endif - -# Make the default files -defaults: .symbolic - @$(COPY) << config.inf -$# The libpng project is incompletely configured. To complete configuration -$# please complete the following steps: -$# -$# 1) Edit the 'before' rule of libpng.wpj (from the IDE) to define the -$# locations of the zlib include file zlib.h and the built zlib library, -$# zlib.lib. -$# -$# 2) If you want to change libpng to a non-standard configuration also -$# change the definition of 'awk' in the before rule to the name of your -$# awk command. For more instructions on configuration read -$# pngconfig.dfa. -$# -$# 3) Delete this file (config.inf). -<< - @$(COPY) << pngconfig.dfa -$# pngconfig.dfa: this file contains configuration options for libpng. -$# If emtpy the standard configuration will be built. For this file to be -$# used a working version of the program 'awk' is required and the program -$# must be identified in the 'before' rule of the project. -$# -$# If you don't already have 'awk', or the version of awk you have seems not -$# to work, download Brian Kernighan's awk (Brian Kernighan is the author of -$# awk.) You can find source code and a built executable (called awk95.exe) -$# here: -$# -$# http://www.cs.princeton.edu/~bwk/btl.mirror/ -$# -$# The executable works just fine. -$# -$# If build issues errors after a change to pngconfig.dfa you have entered -$# inconsistent feature requests, or even malformed requests, in -$# pngconfig.dfa. The error messages from awk should be comprehensible, but -$# if not simply go back to the start (nothing but comments in this file) and -$# enter configuration lines one by one until one produces an error. (Or, of -$# course, do the standard binary chop.) -$# -$# You need to rebuild everything after a change to pnglibconf.dfa - i.e. you -$# must do Actions/Mark All Targets for Remake. This is because the compiler -$# generated dependency information (as of OpenWatcom 1.9) does not record the -$# dependency on pnglibconf.h correctly. -$# -$# If awk isn't set then this file is bypassed. If you just want the standard -$# configuration it is automatically produced from the distributed version -$# (scripts\pnglibconf.h.prebuilt) by editting PNG_API_RULE to 2 (to force use -$# of the OpenWatcom library calling convention.) -$# -<< - -clean:: .symbolic - $(DELETE) ..\..\pnglibconf.h pnglibconf.* dfn.c *.out pngconfig.inf - $(DELETE) *.obj *.mbr *.sym *.err *.pch libpng.mk - $(DELETE) libpng.lib libpng.lbr libpng.lb1 libpng.cbr libpng.mk1 - $(DELETE) pngtest.exe pngtest.map pngtest.lk1 pngtest.mk1 - $(DELETE) pngvalid.exe pngvalid.map pngvalid.lk1 pngvalid.mk1 - -distclean:: clean .symbolic - $(DELETE) zlib.inf awk.inf config.inf pngconfig.dfa diff --git a/io2d/src/3rd-party/libpng/projects/owatcom/pngstest.tgt b/io2d/src/3rd-party/libpng/projects/owatcom/pngstest.tgt deleted file mode 100644 index 696f798..0000000 --- a/io2d/src/3rd-party/libpng/projects/owatcom/pngstest.tgt +++ /dev/null @@ -1,219 +0,0 @@ -40 -targetIdent -0 -MProject -1 -MComponent -0 -2 -WString -4 -NEXE -3 -WString -5 -nc2en -1 -0 -0 -4 -MCommand -0 -5 -MCommand -1118 -pngstest --strict --log ../../contrib/pngsuite/basn0g01.png ../../contrib/pngsuite/basn0g02.png ../../contrib/pngsuite/basn0g04.png ../../contrib/pngsuite/basn0g08.png ../../contrib/pngsuite/basn0g16.png ../../contrib/pngsuite/basn2c08.png ../../contrib/pngsuite/basn2c16.png ../../contrib/pngsuite/basn3p01.png ../../contrib/pngsuite/basn3p02.png ../../contrib/pngsuite/basn3p04.png ../../contrib/pngsuite/basn3p08.png ../../contrib/pngsuite/basn4a08.png ../../contrib/pngsuite/basn4a16.png ../../contrib/pngsuite/basn6a08.png ../../contrib/pngsuite/basn6a16.png ../../contrib/pngsuite/ftbbn0g04.png ../../contrib/pngsuite/ftbbn0g01.png ../../contrib/pngsuite/ftbbn0g02.png ../../contrib/pngsuite/ftbbn2c16.png ../../contrib/pngsuite/ftbbn3p08.png ../../contrib/pngsuite/ftbgn2c16.png ../../contrib/pngsuite/ftbgn3p08.png ../../contrib/pngsuite/ftbrn2c08.png ../../contrib/pngsuite/ftbwn0g16.png ../../contrib/pngsuite/ftbwn3p08.png ../../contrib/pngsuite/ftbyn3p08.png ../../contrib/pngsuite/ftp0n0g08.png ../../contrib/pngsuite/ftp0n2c08.png ../../contrib/pngsuite/ftp0n3p08.png ../../contrib/pngsuite/ftp1n3p08.png -6 -MItem -12 -pngstest.exe -7 -WString -4 -NEXE -8 -WVList -6 -9 -MVState -10 -WString -7 -WINLINK -11 -WString -11 -?????Stack: -1 -12 -WString -4 -768k -0 -13 -MVState -14 -WString -7 -WINLINK -15 -WString -28 -?????Library directories(;): -1 -16 -WString -8 -$(%zlib) -0 -17 -MVState -18 -WString -7 -WINLINK -19 -WString -18 -?????Libraries(,): -1 -20 -WString -19 -libpng.lib zlib.lib -0 -21 -MVState -22 -WString -7 -WINLINK -23 -WString -11 -?????Stack: -0 -24 -WString -4 -768k -0 -25 -MVState -26 -WString -7 -WINLINK -27 -WString -28 -?????Library directories(;): -0 -28 -WString -8 -$(%zlib) -0 -29 -MVState -30 -WString -7 -WINLINK -31 -WString -18 -?????Libraries(,): -0 -32 -WString -19 -libpng.lib zlib.lib -0 -33 -WVList -1 -34 -ActionStates -35 -WString -4 -&Run -36 -WVList -0 --1 -1 -1 -0 -37 -WPickList -2 -38 -MItem -3 -*.c -39 -WString -4 -COBJ -40 -WVList -2 -41 -MVState -42 -WString -3 -WCC -43 -WString -25 -n????Include directories: -1 -44 -WString -39 -"$(%zlib);$(%watcom)/h;$(%watcom)/h/nt" -0 -45 -MVState -46 -WString -3 -WCC -47 -WString -25 -n????Include directories: -0 -48 -WString -39 -"$(%zlib);$(%watcom)/h;$(%watcom)/h/nt" -0 -49 -WVList -0 --1 -1 -1 -0 -50 -MItem -33 -..\..\contrib\libtests\pngstest.c -51 -WString -4 -COBJ -52 -WVList -0 -53 -WVList -0 -38 -1 -1 -0 diff --git a/io2d/src/3rd-party/libpng/projects/owatcom/pngtest.tgt b/io2d/src/3rd-party/libpng/projects/owatcom/pngtest.tgt deleted file mode 100644 index ca3db8c..0000000 --- a/io2d/src/3rd-party/libpng/projects/owatcom/pngtest.tgt +++ /dev/null @@ -1,179 +0,0 @@ -40 -targetIdent -0 -MProject -1 -MComponent -0 -2 -WString -4 -NEXE -3 -WString -5 -nc2en -1 -0 -0 -4 -MCommand -0 -5 -MCommand -34 -cd ..\.. -projects\owatcom\pngtest -6 -MItem -11 -pngtest.exe -7 -WString -4 -NEXE -8 -WVList -4 -9 -MVState -10 -WString -7 -WINLINK -11 -WString -28 -?????Library directories(;): -1 -12 -WString -8 -$(%zlib) -0 -13 -MVState -14 -WString -7 -WINLINK -15 -WString -18 -?????Libraries(,): -1 -16 -WString -19 -libpng.lib zlib.lib -0 -17 -MVState -18 -WString -7 -WINLINK -19 -WString -28 -?????Library directories(;): -0 -20 -WString -8 -$(%zlib) -0 -21 -MVState -22 -WString -7 -WINLINK -23 -WString -18 -?????Libraries(,): -0 -24 -WString -19 -libpng.lib zlib.lib -0 -25 -WVList -0 --1 -1 -1 -0 -26 -WPickList -2 -27 -MItem -3 -*.c -28 -WString -4 -COBJ -29 -WVList -2 -30 -MVState -31 -WString -3 -WCC -32 -WString -25 -n????Include directories: -1 -33 -WString -39 -"$(%zlib);$(%watcom)/h;$(%watcom)/h/nt" -0 -34 -MVState -35 -WString -3 -WCC -36 -WString -25 -n????Include directories: -0 -37 -WString -39 -"$(%zlib);$(%watcom)/h;$(%watcom)/h/nt" -0 -38 -WVList -0 --1 -1 -1 -0 -39 -MItem -15 -..\..\pngtest.c -40 -WString -4 -COBJ -41 -WVList -0 -42 -WVList -0 -27 -1 -1 -0 diff --git a/io2d/src/3rd-party/libpng/projects/owatcom/pngvalid.tgt b/io2d/src/3rd-party/libpng/projects/owatcom/pngvalid.tgt deleted file mode 100644 index 1cc7908..0000000 --- a/io2d/src/3rd-party/libpng/projects/owatcom/pngvalid.tgt +++ /dev/null @@ -1,210 +0,0 @@ -40 -targetIdent -0 -MProject -1 -MComponent -0 -2 -WString -4 -NEXE -3 -WString -5 -nc2en -1 -0 -0 -4 -MCommand -0 -5 -MCommand -8 -pngvalid -6 -MItem -12 -pngvalid.exe -7 -WString -4 -NEXE -8 -WVList -6 -9 -MVState -10 -WString -7 -WINLINK -11 -WString -11 -?????Stack: -1 -12 -WString -4 -768k -0 -13 -MVState -14 -WString -7 -WINLINK -15 -WString -28 -?????Library directories(;): -1 -16 -WString -8 -$(%zlib) -0 -17 -MVState -18 -WString -7 -WINLINK -19 -WString -18 -?????Libraries(,): -1 -20 -WString -19 -libpng.lib zlib.lib -0 -21 -MVState -22 -WString -7 -WINLINK -23 -WString -11 -?????Stack: -0 -24 -WString -4 -768k -0 -25 -MVState -26 -WString -7 -WINLINK -27 -WString -28 -?????Library directories(;): -0 -28 -WString -8 -$(%zlib) -0 -29 -MVState -30 -WString -7 -WINLINK -31 -WString -18 -?????Libraries(,): -0 -32 -WString -19 -libpng.lib zlib.lib -0 -33 -WVList -0 --1 -1 -1 -0 -34 -WPickList -2 -35 -MItem -3 -*.c -36 -WString -4 -COBJ -37 -WVList -2 -38 -MVState -39 -WString -3 -WCC -40 -WString -25 -n????Include directories: -1 -41 -WString -39 -"$(%zlib);$(%watcom)/h;$(%watcom)/h/nt" -0 -42 -MVState -43 -WString -3 -WCC -44 -WString -25 -n????Include directories: -0 -45 -WString -39 -"$(%zlib);$(%watcom)/h;$(%watcom)/h/nt" -0 -46 -WVList -0 --1 -1 -1 -0 -47 -MItem -33 -..\..\contrib\libtests\pngvalid.c -48 -WString -4 -COBJ -49 -WVList -0 -50 -WVList -0 -35 -1 -1 -0 diff --git a/io2d/src/3rd-party/libpng/projects/visualc71/PRJ0041.mak b/io2d/src/3rd-party/libpng/projects/visualc71/PRJ0041.mak deleted file mode 100644 index c7a68b5..0000000 --- a/io2d/src/3rd-party/libpng/projects/visualc71/PRJ0041.mak +++ /dev/null @@ -1,21 +0,0 @@ -# Prevent "Cannot find missing dependency..." warnings while compiling -# pngwin.rc (PRJ0041). - -all: $(IntDir)\alloc.h \ - $(IntDir)\fp.h \ - $(IntDir)\m68881.h \ - $(IntDir)\mem.h \ - $(IntDir)\pngusr.h \ - $(IntDir)\strings.h \ - $(IntDir)\unistd.h \ - $(IntDir)\unixio.h - -$(IntDir)\alloc.h \ -$(IntDir)\fp.h \ -$(IntDir)\m68881.h \ -$(IntDir)\mem.h \ -$(IntDir)\pngusr.h \ -$(IntDir)\strings.h \ -$(IntDir)\unistd.h \ -$(IntDir)\unixio.h: - @!echo.>$@ diff --git a/io2d/src/3rd-party/libpng/projects/visualc71/README.txt b/io2d/src/3rd-party/libpng/projects/visualc71/README.txt deleted file mode 100644 index 34565e4..0000000 --- a/io2d/src/3rd-party/libpng/projects/visualc71/README.txt +++ /dev/null @@ -1,58 +0,0 @@ -Microsoft Developer Studio Project File, Format Version 7.10 for libpng. - -Copyright (C) 2004 Simon-Pierre Cadieux. - -This code is released under the libpng license. -For conditions of distribution and use, see copyright notice in png.h - -NOTE: This project will be removed from libpng-1.5.0. It has -been replaced with the "vstudio" project. - -Assumptions: -* The libpng source files are in ..\.. -* The zlib source files are in ..\..\..\zlib -* The zlib project file is in . /* Warning: This is until the zlib project - files get intergrated into the next zlib release. The final zlib project - directory will then be ..\..\..\zlib\projects\visualc71. */ - -To use: - -1) On the main menu, select "File | Open Solution". - Open "libpng.sln". - -2) Display the Solution Explorer view (Ctrl+Alt+L) - -3) Set one of the project as the StartUp project. If you just want to build the - binaries set "libpng" as the startup project (Select "libpng" tree view - item + Project | Set as StartUp project). If you want to build and test the - binaries set it to "pngtest" (Select "pngtest" tree view item + - Project | Set as StartUp project) - -4) Select "Build | Configuration Manager...". - Choose the configuration you wish to build. - -5) Select "Build | Clean Solution". - -6) Select "Build | Build Solution (Ctrl-Shift-B)" - -This project builds the libpng binaries as follows: - -* Win32_DLL_Release\libpng16.dll DLL build -* Win32_DLL_Debug\libpng16d.dll DLL build (debug version) -* Win32_DLL_VB\libpng16vb.dll DLL build for Visual Basic, using stdcall -* Win32_LIB_Release\libpng.lib static build -* Win32_LIB_Debug\libpngd.lib static build (debug version) - -Notes: - -If you change anything in the source files, or select different compiler -settings, please change the DLL name to something different than any of -the above names. Also, make sure that in your "pngusr.h" you define -PNG_USER_PRIVATEBUILD and PNG_USER_DLLFNAME_POSTFIX according to the -instructions provided in "pngconf.h". - -All DLLs built by this project use the Microsoft dynamic C runtime library -MSVCR71.DLL (MSVCR71D.DLL for debug versions). If you distribute any of the -above mentioned libraries you may have to include this DLL in your package. -For a list of files that are redistributable in Visual Studio see -$(VCINSTALLDIR)\redist.txt. diff --git a/io2d/src/3rd-party/libpng/projects/visualc71/README_zlib.txt b/io2d/src/3rd-party/libpng/projects/visualc71/README_zlib.txt deleted file mode 100644 index 81d11cb..0000000 --- a/io2d/src/3rd-party/libpng/projects/visualc71/README_zlib.txt +++ /dev/null @@ -1,44 +0,0 @@ -/* WARNING: This file was put in the LibPNG distribution for convenience only. - It is expected to be part of the next zlib release under - "projects\visualc71\README.txt." */ - -Microsoft Developer Studio Project File, Format Version 7.10 for zlib. - -Copyright (C) 2004 Simon-Pierre Cadieux. -Copyright (C) 2004 Cosmin Truta. - -This code is released under the libpng license. -For conditions of distribution and use, see copyright notice in zlib.h. - -NOTE: This project will be removed from libpng-1.5.0. It has -been replaced with the "vstudio" project. - -To use: - -1) On the main menu, select "File | Open Solution". - Open "zlib.sln". - -2) Display the Solution Explorer view (Ctrl+Alt+L) - -3) Set one of the project as the StartUp project. If you just want to build the - binaries set "zlib" as the startup project (Select "zlib" tree view item + - Project | Set as StartUp project). If you want to build and test the - binaries set it to "example" (Select "example" tree view item + Project | - Set as StartUp project), If you want to build the minigzip utility set it to - "minigzip" (Select "minigzip" tree view item + Project | Set as StartUp - project - -4) Select "Build | Configuration Manager...". - Choose the configuration you wish to build. - -5) Select "Build | Clean Solution". - -6) Select "Build | Build Solution (Ctrl-Shift-B)" - -This project builds the zlib binaries as follows: - -* Win32_DLL_Release\zlib1.dll DLL build -* Win32_DLL_Debug\zlib1d.dll DLL build (debug version) -* Win32_LIB_Release\zlib.lib static build -* Win32_LIB_Debug\zlibd.lib static build (debug version) - diff --git a/io2d/src/3rd-party/libpng/projects/visualc71/libpng.sln b/io2d/src/3rd-party/libpng/projects/visualc71/libpng.sln deleted file mode 100644 index eeb101f..0000000 --- a/io2d/src/3rd-party/libpng/projects/visualc71/libpng.sln +++ /dev/null @@ -1,60 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "libpng.vcproj", "{0008960E-E0DD-41A6-8265-00B31DDB4C21}" - ProjectSection(ProjectDependencies) = postProject - {2D4F8105-7D21-454C-9932-B47CAB71A5C0} = {2D4F8105-7D21-454C-9932-B47CAB71A5C0} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngtest", "pngtest.vcproj", "{FD1C2F86-9EEF-47BD-95A4-530917E17FDA}" - ProjectSection(ProjectDependencies) = postProject - {0008960E-E0DD-41A6-8265-00B31DDB4C21} = {0008960E-E0DD-41A6-8265-00B31DDB4C21} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib.vcproj", "{2D4F8105-7D21-454C-9932-B47CAB71A5C0}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - DLL Debug = DLL Debug - DLL Release = DLL Release - DLL VB = DLL VB - LIB Debug = LIB Debug - LIB Release = LIB Release - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL Debug.ActiveCfg = DLL Debug|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL Debug.Build.0 = DLL Debug|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL Release.ActiveCfg = DLL Release|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL Release.Build.0 = DLL Release|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL VB.ActiveCfg = DLL VB|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.DLL VB.Build.0 = DLL VB|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.LIB Debug.ActiveCfg = LIB Debug|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.LIB Debug.Build.0 = LIB Debug|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.LIB Release.ActiveCfg = LIB Release|Win32 - {0008960E-E0DD-41A6-8265-00B31DDB4C21}.LIB Release.Build.0 = LIB Release|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL Debug.ActiveCfg = DLL Debug|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL Debug.Build.0 = DLL Debug|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL Release.ActiveCfg = DLL Release|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL Release.Build.0 = DLL Release|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL VB.ActiveCfg = DLL VB|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.DLL VB.Build.0 = DLL VB|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.LIB Debug.ActiveCfg = LIB Debug|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.LIB Debug.Build.0 = LIB Debug|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.LIB Release.ActiveCfg = LIB Release|Win32 - {FD1C2F86-9EEF-47BD-95A4-530917E17FDA}.LIB Release.Build.0 = LIB Release|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL Debug.ActiveCfg = DLL Debug|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL Debug.Build.0 = DLL Debug|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL Release.ActiveCfg = DLL Release|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL Release.Build.0 = DLL Release|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL VB.ActiveCfg = DLL Release|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.DLL VB.Build.0 = DLL Release|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.LIB Debug.ActiveCfg = LIB Debug|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.LIB Debug.Build.0 = LIB Debug|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.LIB Release.ActiveCfg = LIB Release|Win32 - {2D4F8105-7D21-454C-9932-B47CAB71A5C0}.LIB Release.Build.0 = LIB Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/io2d/src/3rd-party/libpng/projects/visualc71/libpng.vcproj b/io2d/src/3rd-party/libpng/projects/visualc71/libpng.vcproj deleted file mode 100644 index 608ec4e..0000000 --- a/io2d/src/3rd-party/libpng/projects/visualc71/libpng.vcproj +++ /dev/null @@ -1,419 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/io2d/src/3rd-party/libpng/projects/visualc71/pngtest.vcproj b/io2d/src/3rd-party/libpng/projects/visualc71/pngtest.vcproj deleted file mode 100644 index 3b48f1c..0000000 --- a/io2d/src/3rd-party/libpng/projects/visualc71/pngtest.vcproj +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/io2d/src/3rd-party/libpng/projects/visualc71/zlib.vcproj b/io2d/src/3rd-party/libpng/projects/visualc71/zlib.vcproj deleted file mode 100644 index eb21848..0000000 --- a/io2d/src/3rd-party/libpng/projects/visualc71/zlib.vcproj +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/io2d/src/3rd-party/libpng/projects/vstudio/WARNING b/io2d/src/3rd-party/libpng/projects/vstudio/WARNING deleted file mode 100644 index da002c9..0000000 --- a/io2d/src/3rd-party/libpng/projects/vstudio/WARNING +++ /dev/null @@ -1,27 +0,0 @@ -WARNING -======= -Libpng 1.6 does not use the default run-time library when building static -library builds of libpng; instead of the shared DLL runtime it uses a static -runtime. If you need to change this make sure to change the setting on all the -relevant projects: - -libpng -zlib -all the test programs - -The runtime library settings for each build are as follows: - - Release Debug -DLL /MD /MDd -Library /MT /MTd - -NOTICE that libpng 1.5 erroneously used /MD for Debug DLL builds; if you used -the debug builds in your app and you changed your app to use /MD you will need -to change it to /MDd for libpng 1.6. - -The Visual Studio 2010 defaults for a Win32 DLL or Static Library project are -as follows: - - Release Debug -DLL /MD /MDd -Static Library /MD /MDd diff --git a/io2d/src/3rd-party/libpng/projects/vstudio/libpng/libpng.vcxproj b/io2d/src/3rd-party/libpng/projects/vstudio/libpng/libpng.vcxproj deleted file mode 100644 index de7fc3c..0000000 --- a/io2d/src/3rd-party/libpng/projects/vstudio/libpng/libpng.vcxproj +++ /dev/null @@ -1,234 +0,0 @@ - - - - - Debug Library - Win32 - - - Debug - Win32 - - - Release Library - Win32 - - - Release - Win32 - - - - {D6973076-9317-4EF2-A0B8-B7A18AC0713E} - Win32Proj - libpng - - - - - DynamicLibrary - MultiByte - true - - - StaticLibrary - MultiByte - - - DynamicLibrary - true - MultiByte - - - StaticLibrary - MultiByte - - - - - - - - - - - - - - - - - - - false - - - $(ProjectName)16 - - - false - - $(ProjectName)16 - - - false - - - $(ProjectName)16 - - - false - - $(ProjectName)16 - - - - Use - Level4 - false - ProgramDatabase - EnableFastChecks - WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - true - true - false - false - pngpriv.h - true - CompileAsC - true - 4996;4127 - $(ZLibSrcDir);%(AdditionalIncludeDirectories) - true - Disabled - MultiThreadedDebugDLL - - - Windows - true - zlib.lib - 16 - $(OutDir) - - - - - Use - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - true - false - false - pngpriv.h - true - CompileAsC - true - 4996;4127 - $(ZLibSrcDir);%(AdditionalIncludeDirectories) - true - MultiThreadedDebug - - - Windows - true - - - - - Level4 - Use - ProgramDatabase - true - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) - false - false - pngpriv.h - true - CompileAsC - true - false - 4996;4127 - $(ZLibSrcDir);%(AdditionalIncludeDirectories) - true - Full - - - Windows - true - true - true - zlib.lib - 16 - $(OutDir) - - - - - Level4 - Use - ProgramDatabase - MultiThreaded - true - true - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - false - false - pngpriv.h - true - CompileAsC - true - false - 4996;4127 - $(ZLibSrcDir);%(AdditionalIncludeDirectories) - true - Full - true - - - Windows - true - true - true - - - true - - - - - Create - Create - Create - Create - - - - - - - - - - - - - - - - - - - true - true - - - - - - diff --git a/io2d/src/3rd-party/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj b/io2d/src/3rd-party/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj deleted file mode 100644 index e2a232c..0000000 --- a/io2d/src/3rd-party/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj +++ /dev/null @@ -1,61 +0,0 @@ - - - - - Release - Win32 - - - - {EB33566E-DA7F-4D28-9077-88C0B7C77E35} - pnglibconf - - - - Application - false - true - MultiByte - - - - - - - - - - - Build - - - - Level3 - MaxSpeed - true - true - - - true - true - true - - - copy ..\..\..\scripts\pnglibconf.h.prebuilt ..\..\..\pnglibconf.h - - - Generating pnglibconf.h - - - ..\..\..\pnglibconf.h - - - ..\..\..\scripts\pnglibconf.h.prebuilt - - - - - - - - diff --git a/io2d/src/3rd-party/libpng/projects/vstudio/pngstest/pngstest.vcxproj b/io2d/src/3rd-party/libpng/projects/vstudio/pngstest/pngstest.vcxproj deleted file mode 100644 index 0d2980d..0000000 --- a/io2d/src/3rd-party/libpng/projects/vstudio/pngstest/pngstest.vcxproj +++ /dev/null @@ -1,219 +0,0 @@ - - - - - Debug Library - Win32 - - - Debug - Win32 - - - Release Library - Win32 - - - Release - Win32 - - - - {277AC57F-313B-4D06-B119-A3CDB672D2FF} - Win32Proj - pngstest - - - - - Application - Unicode - - - Application - Unicode - - - Application - Unicode - - - Application - Unicode - - - - - - - - - - - - - - - - - - - false - - - - false - - - - false - - - - false - - - - - NotUsing - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - true - false - true - false - MultiThreadedDebugDLL - - - Console - true - libpng16.lib - $(OutDir) - - - Executing libpng simplified API test program - "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png - $(IntDir)pngstest.out - $(OutDir)pngstest.exe - - - - - NotUsing - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - MultiThreadedDebug - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - true - false - true - false - - - Console - true - libpng16.lib;zlib.lib - $(OutDir) - - - Executing libpng simplified API test program - "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png - $(IntDir)pngstest.out - $(OutDir)pngstest.exe - - - - - Level4 - NotUsing - ProgramDatabase - Full - false - true - WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - false - true - true - false - - - Console - true - true - true - libpng16.lib - $(OutDir) - UseLinkTimeCodeGeneration - - - Executing libpng simplified API test program - "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png - $(IntDir)pngstest.out - $(OutDir)pngstest.exe - - - - - Level4 - NotUsing - ProgramDatabase - Full - MultiThreaded - false - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - false - true - true - false - - - Console - true - true - true - libpng16.lib;zlib.lib - $(OutDir) - UseLinkTimeCodeGeneration - - - Executing libpng simplified API test program - "$(OutDir)pngstest.exe" --strict --log --touch "$(IntDir)pngstest.out" ../../../contrib/pngsuite/basn0g01.png ../../../contrib/pngsuite/basn0g02.png ../../../contrib/pngsuite/basn0g04.png ../../../contrib/pngsuite/basn0g08.png ../../../contrib/pngsuite/basn0g16.png ../../../contrib/pngsuite/basn2c08.png ../../../contrib/pngsuite/basn2c16.png ../../../contrib/pngsuite/basn3p01.png ../../../contrib/pngsuite/basn3p02.png ../../../contrib/pngsuite/basn3p04.png ../../../contrib/pngsuite/basn3p08.png ../../../contrib/pngsuite/basn4a08.png ../../../contrib/pngsuite/basn4a16.png ../../../contrib/pngsuite/basn6a08.png ../../../contrib/pngsuite/basn6a16.png ../../../contrib/pngsuite/ftbbn0g01.png ../../../contrib/pngsuite/ftbbn0g02.png ../../../contrib/pngsuite/ftbbn0g04.png ../../../contrib/pngsuite/ftbbn2c16.png ../../../contrib/pngsuite/ftbbn3p08.png ../../../contrib/pngsuite/ftbgn2c16.png ../../../contrib/pngsuite/ftbgn3p08.png ../../../contrib/pngsuite/ftbrn2c08.png ../../../contrib/pngsuite/ftbwn0g16.png ../../../contrib/pngsuite/ftbwn3p08.png ../../../contrib/pngsuite/ftbyn3p08.png ../../../contrib/pngsuite/ftp0n0g08.png ../../../contrib/pngsuite/ftp0n2c08.png ../../../contrib/pngsuite/ftp0n3p08.png ../../../contrib/pngsuite/ftp1n3p08.png - $(IntDir)pngstest.out - $(OutDir)pngstest.exe - - - - - - - - - diff --git a/io2d/src/3rd-party/libpng/projects/vstudio/pngtest/pngtest.vcxproj b/io2d/src/3rd-party/libpng/projects/vstudio/pngtest/pngtest.vcxproj deleted file mode 100644 index bf9266f..0000000 --- a/io2d/src/3rd-party/libpng/projects/vstudio/pngtest/pngtest.vcxproj +++ /dev/null @@ -1,220 +0,0 @@ - - - - - Debug Library - Win32 - - - Debug - Win32 - - - Release Library - Win32 - - - Release - Win32 - - - - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D} - Win32Proj - pngtest - - - - - Application - Unicode - - - Application - Unicode - - - Application - Unicode - - - Application - Unicode - - - - - - - - - - - - - - - - - - - false - - - - false - - - - false - - - - false - - - - - NotUsing - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996 - false - true - true - true - false - true - false - MultiThreadedDebugDLL - - - Console - true - libpng16.lib - $(OutDir) - - - Executing PNG test program - "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" - $(IntDir)pngout.png - ..\..\..\pngtest.png;$(OutDir)pngtest.exe - - - - - NotUsing - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - MultiThreadedDebug - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996 - false - true - true - true - false - true - false - - - Console - true - libpng16.lib;zlib.lib - $(OutDir) - - - Executing PNG test program - "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" - $(IntDir)pngout.png - ..\..\..\pngtest.png;$(OutDir)pngtest.exe - - - - - Level4 - NotUsing - ProgramDatabase - Full - false - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996 - false - true - true - false - true - true - false - - - Console - true - true - true - UseLinkTimeCodeGeneration - libpng16.lib - $(OutDir) - - - Executing PNG test program - "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" - $(IntDir)pngout.png - ..\..\..\pngtest.png;$(OutDir)pngtest.exe - - - - - Level4 - NotUsing - ProgramDatabase - Full - MultiThreaded - false - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996 - false - true - true - false - true - true - false - - - Console - true - true - true - libpng16.lib;zlib.lib - UseLinkTimeCodeGeneration - $(OutDir) - - - Executing PNG test program - $(OutDir)pngtest.exe ..\..\..\pngtest.png $(IntDir)pngout.png - "$(OutDir)pngtest.exe" ..\..\..\pngtest.png "$(IntDir)pngout.png" - $(IntDir)pngout.png - ..\..\..\pngtest.png;$(OutDir)pngtest.exe - - - - - - - - - diff --git a/io2d/src/3rd-party/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj b/io2d/src/3rd-party/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj deleted file mode 100644 index a30cc7a..0000000 --- a/io2d/src/3rd-party/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj +++ /dev/null @@ -1,219 +0,0 @@ - - - - - Debug Library - Win32 - - - Debug - Win32 - - - Release Library - Win32 - - - Release - Win32 - - - - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC} - Win32Proj - pngunknown - - - - - Application - Unicode - - - Application - Unicode - - - Application - Unicode - - - Application - Unicode - - - - - - - - - - - - - - - - - - - false - - - - false - - - - false - - - - false - - - - - NotUsing - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - true - false - true - false - MultiThreadedDebugDLL - - - Console - true - libpng16.lib - $(OutDir) - - - Executing PNG validation program - "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png - $(IntDir)pngunknown.out - $(OutDir)pngunknown.exe - - - - - NotUsing - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - MultiThreadedDebug - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - true - false - true - false - - - Console - true - libpng16.lib;zlib.lib - $(OutDir) - - - Executing PNG validation program - "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png - $(IntDir)pngunknown.out - $(OutDir)pngunknown.exe - - - - - Level4 - NotUsing - ProgramDatabase - Full - false - true - WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - false - true - true - false - - - Console - true - true - true - libpng16.lib - $(OutDir) - UseLinkTimeCodeGeneration - - - Executing PNG validation program - "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png - $(IntDir)pngunknown.out - $(OutDir)pngunknown.exe - - - - - Level4 - NotUsing - ProgramDatabase - Full - MultiThreaded - false - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - false - true - true - false - - - Console - true - true - true - libpng16.lib;zlib.lib - $(OutDir) - UseLinkTimeCodeGeneration - - - Executing PNG validation program - "$(OutDir)pngunknown.exe" --strict --default --touch "$(IntDir)pngunknown.out" ../../../pngtest.png - $(IntDir)pngunknown.out - $(OutDir)pngunknown.exe - - - - - - - - - diff --git a/io2d/src/3rd-party/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj b/io2d/src/3rd-party/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj deleted file mode 100644 index 07cf241..0000000 --- a/io2d/src/3rd-party/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj +++ /dev/null @@ -1,219 +0,0 @@ - - - - - Debug Library - Win32 - - - Debug - Win32 - - - Release Library - Win32 - - - Release - Win32 - - - - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8} - Win32Proj - pngvalid - - - - - Application - Unicode - - - Application - Unicode - - - Application - Unicode - - - Application - Unicode - - - - - - - - - - - - - - - - - - - false - - - - false - - - - false - - - - false - - - - - NotUsing - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - WIN32;_DEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - true - false - true - false - MultiThreadedDebugDLL - - - Console - true - libpng16.lib;zlib.lib - $(OutDir) - - - Executing PNG validation program - "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" - $(IntDir)pngvalid.out - $(OutDir)pngvalid.exe - - - - - NotUsing - Level4 - false - ProgramDatabase - Disabled - EnableFastChecks - MultiThreadedDebug - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - true - false - true - false - - - Console - true - libpng16.lib;zlib.lib - $(OutDir) - - - Executing PNG validation program - "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" - $(IntDir)pngvalid.out - $(OutDir)pngvalid.exe - - - - - Level4 - NotUsing - ProgramDatabase - Full - false - true - WIN32;NDEBUG;_CONSOLE;PNG_USE_DLL;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - false - true - true - false - - - Console - true - true - true - libpng16.lib;zlib.lib - $(OutDir) - UseLinkTimeCodeGeneration - - - Executing PNG validation program - "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" - $(IntDir)pngvalid.out - $(OutDir)pngvalid.exe - - - - - Level4 - NotUsing - ProgramDatabase - Full - MultiThreaded - false - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(ZLibSrcDir);..\..\..\scripts;%(AdditionalIncludeDirectories) - 4996;4127 - false - true - true - false - true - true - false - - - Console - true - true - true - libpng16.lib;zlib.lib - $(OutDir) - UseLinkTimeCodeGeneration - - - Executing PNG validation program - "$(OutDir)pngvalid.exe" --touch "$(IntDir)pngvalid.out" - $(IntDir)pngvalid.out - $(OutDir)pngvalid.exe - - - - - - - - - diff --git a/io2d/src/3rd-party/libpng/projects/vstudio/readme.txt b/io2d/src/3rd-party/libpng/projects/vstudio/readme.txt deleted file mode 100644 index 86689a9..0000000 --- a/io2d/src/3rd-party/libpng/projects/vstudio/readme.txt +++ /dev/null @@ -1,65 +0,0 @@ - -VisualStudio instructions - -libpng version 1.6.8beta03 - November 30, 2013 - -Copyright (c) 1998-2010 Glenn Randers-Pehrson - -This code is released under the libpng license. -For conditions of distribution and use, see the disclaimer -and license in png.h - -This directory contains support for building libpng under MicroSoft -VisualStudio 2010. It may also work under later versions of VisualStudio. -You should be familiar with VisualStudio before using this directory. - -Initial preparations -==================== -You must enter some information in zlib.props before attempting to build -with this 'solution'. Please read and edit zlib.props first. You will -probably not be familiar with the contents of zlib.props - do not worry, -it is mostly harmless. - -This is all you need to do to build the 'release' and 'release library' -configurations. - -Debugging -========= -The release configurations default to /Ox optimization. Full debugging -information is produced (in the .pdb), but if you encounter a problem the -optimization may make it difficult to debug. Simply rebuild with a lower -optimization level (e.g. /Od.) - -Linking your application -======================== -Normally you should link against the 'release' configuration. This builds a -DLL for libpng with the default runtime options used by Visual Studio 2010. -In particular the runtime library is the "MultiThreaded DLL" version. -If you use Visual Studio defaults to build your application you will have no -problems. - -If you don't use the Visual Studio defaults your application must still be built -with the default runtime option (/MD). If, for some reason, it is not then your -application will crash inside libpng16.dll as soon as libpng tries to read -from a file handle you pass in. - -If you do not want to use the DLL, for example for a very small application, -the 'release library' configuration may be more appropriate. This is built -with a non-standard runtime library - the "MultiThreaded" version. When you -build your application it must be compiled with this option (/MT), otherwise -it will not build (if you are lucky) or crash (if you are not.) - -Stop reading here -================= -You have enough information to build a working application. - -Debug versions have limited support -=================================== -This solution includes limited support for debug versions of libpng. You -do not need these unless your own solution itself uses debug builds (it is -far more effective to debug on the release builds, there is no point building -a special debug build unless you have heap corruption problems that you can't -track down.) - -The debug build of libpng is minimally supported. Support for debug builds of -zlib is also minimal. You really don't want to do this. diff --git a/io2d/src/3rd-party/libpng/projects/vstudio/vstudio.sln b/io2d/src/3rd-party/libpng/projects/vstudio/vstudio.sln deleted file mode 100644 index af0b1ba..0000000 --- a/io2d/src/3rd-party/libpng/projects/vstudio/vstudio.sln +++ /dev/null @@ -1,109 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib\zlib.vcxproj", "{60F89955-91C6-3A36-8000-13C592FEC2DF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pnglibconf", "pnglibconf\pnglibconf.vcxproj", "{EB33566E-DA7F-4D28-9077-88C0B7C77E35}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "libpng\libpng.vcxproj", "{D6973076-9317-4EF2-A0B8-B7A18AC0713E}" - ProjectSection(ProjectDependencies) = postProject - {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} - {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngtest", "pngtest\pngtest.vcxproj", "{228BA965-50D5-42B2-8BCF-AFCC227E3C1D}" - ProjectSection(ProjectDependencies) = postProject - {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} - {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} - {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngvalid", "pngvalid\pngvalid.vcxproj", "{9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}" - ProjectSection(ProjectDependencies) = postProject - {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} - {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} - {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngstest", "pngstest\pngstest.vcxproj", "{277AC57F-313B-4D06-B119-A3CDB672D2FF}" - ProjectSection(ProjectDependencies) = postProject - {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} - {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} - {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pngunknown", "pngunknown\pngunknown.vcxproj", "{C5D3156C-8C8C-4936-B35F-2B829BA36FEC}" - ProjectSection(ProjectDependencies) = postProject - {60F89955-91C6-3A36-8000-13C592FEC2DF} = {60F89955-91C6-3A36-8000-13C592FEC2DF} - {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {EB33566E-DA7F-4D28-9077-88C0B7C77E35} - {D6973076-9317-4EF2-A0B8-B7A18AC0713E} = {D6973076-9317-4EF2-A0B8-B7A18AC0713E} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug Library|Win32 = Debug Library|Win32 - Debug|Win32 = Debug|Win32 - Release Library|Win32 = Release Library|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug Library|Win32.Build.0 = Debug Library|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.ActiveCfg = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Debug|Win32.Build.0 = Debug|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release Library|Win32.ActiveCfg = Release Library|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release Library|Win32.Build.0 = Release Library|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.ActiveCfg = Release|Win32 - {D6973076-9317-4EF2-A0B8-B7A18AC0713E}.Release|Win32.Build.0 = Release|Win32 - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Debug Library|Win32.Build.0 = Debug Library|Win32 - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Debug|Win32.ActiveCfg = Debug|Win32 - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Debug|Win32.Build.0 = Debug|Win32 - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release Library|Win32.ActiveCfg = Release Library|Win32 - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release Library|Win32.Build.0 = Release Library|Win32 - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release|Win32.ActiveCfg = Release|Win32 - {228BA965-50D5-42B2-8BCF-AFCC227E3C1D}.Release|Win32.Build.0 = Release|Win32 - {60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 - {60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug Library|Win32.Build.0 = Debug Library|Win32 - {60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug|Win32.ActiveCfg = Debug|Win32 - {60F89955-91C6-3A36-8000-13C592FEC2DF}.Debug|Win32.Build.0 = Debug|Win32 - {60F89955-91C6-3A36-8000-13C592FEC2DF}.Release Library|Win32.ActiveCfg = Release Library|Win32 - {60F89955-91C6-3A36-8000-13C592FEC2DF}.Release Library|Win32.Build.0 = Release Library|Win32 - {60F89955-91C6-3A36-8000-13C592FEC2DF}.Release|Win32.ActiveCfg = Release|Win32 - {60F89955-91C6-3A36-8000-13C592FEC2DF}.Release|Win32.Build.0 = Release|Win32 - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug Library|Win32.Build.0 = Debug Library|Win32 - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug|Win32.ActiveCfg = Debug|Win32 - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Debug|Win32.Build.0 = Debug|Win32 - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Release Library|Win32.ActiveCfg = Release Library|Win32 - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Release Library|Win32.Build.0 = Release Library|Win32 - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Release|Win32.ActiveCfg = Release|Win32 - {9B36B6FE-7FC0-434F-A71F-BBEF8099F1D8}.Release|Win32.Build.0 = Release|Win32 - {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Debug Library|Win32.ActiveCfg = Release|Win32 - {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Debug Library|Win32.Build.0 = Release|Win32 - {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Debug|Win32.ActiveCfg = Release|Win32 - {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Debug|Win32.Build.0 = Release|Win32 - {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release Library|Win32.ActiveCfg = Release|Win32 - {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release Library|Win32.Build.0 = Release|Win32 - {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release|Win32.ActiveCfg = Release|Win32 - {EB33566E-DA7F-4D28-9077-88C0B7C77E35}.Release|Win32.Build.0 = Release|Win32 - {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 - {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug Library|Win32.Build.0 = Debug Library|Win32 - {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug|Win32.ActiveCfg = Debug|Win32 - {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Debug|Win32.Build.0 = Debug|Win32 - {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release Library|Win32.ActiveCfg = Release Library|Win32 - {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release Library|Win32.Build.0 = Release Library|Win32 - {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release|Win32.ActiveCfg = Release|Win32 - {277AC57F-313B-4D06-B119-A3CDB672D2FF}.Release|Win32.Build.0 = Release|Win32 - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Debug Library|Win32.ActiveCfg = Debug Library|Win32 - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Debug Library|Win32.Build.0 = Debug Library|Win32 - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Debug|Win32.ActiveCfg = Debug|Win32 - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Debug|Win32.Build.0 = Debug|Win32 - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Release Library|Win32.ActiveCfg = Release Library|Win32 - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Release Library|Win32.Build.0 = Release Library|Win32 - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Release|Win32.ActiveCfg = Release|Win32 - {C5D3156C-8C8C-4936-B35F-2B829BA36FEC}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/io2d/src/3rd-party/libpng/projects/vstudio/zlib.props b/io2d/src/3rd-party/libpng/projects/vstudio/zlib.props deleted file mode 100644 index 68c3c62..0000000 --- a/io2d/src/3rd-party/libpng/projects/vstudio/zlib.props +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - ..\..\..\..\zlib-1.2.5 - - - true - - diff --git a/io2d/src/3rd-party/libpng/projects/vstudio/zlib/zlib.vcxproj b/io2d/src/3rd-party/libpng/projects/vstudio/zlib/zlib.vcxproj deleted file mode 100644 index 6e5b94a..0000000 --- a/io2d/src/3rd-party/libpng/projects/vstudio/zlib/zlib.vcxproj +++ /dev/null @@ -1,169 +0,0 @@ - - - - - Debug Library - Win32 - - - Debug - Win32 - - - Release Library - Win32 - - - Release - Win32 - - - - - - - - - - - - - - - - - {60F89955-91C6-3A36-8000-13C592FEC2DF} - Win32Proj - zlib - - - - - StaticLibrary - - - StaticLibrary - - - StaticLibrary - - - StaticLibrary - - - StaticLibrary - - - - - - - - - - - - - - - - - - - true - - - true - - - true - - - true - - - true - - - - WIN32;_DEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions) - MultiThreadedDebug - TurnOffAllWarnings - ProgramDatabase - Disabled - true - true - - - MachineX86 - true - Windows - - - - - WIN32;_DEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions) - TurnOffAllWarnings - ProgramDatabase - Disabled - true - true - MultiThreadedDebugDLL - - - MachineX86 - true - Windows - - - - - Level3 - ProgramDatabase - Full - true - true - false - true - true - true - MultiThreaded - WIN32;NDEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions) - - - MachineX86 - true - Windows - - - true - - - - - Level3 - ProgramDatabase - Full - true - true - false - true - true - true - WIN32;NDEBUG;_WINDOWS;Z_SOLO;%(PreprocessorDefinitions) - - - MachineX86 - true - Windows - true - true - - - true - - - - - - diff --git a/io2d/src/3rd-party/libpng/scripts/README.txt b/io2d/src/3rd-party/libpng/scripts/README.txt deleted file mode 100644 index 65dd51e..0000000 --- a/io2d/src/3rd-party/libpng/scripts/README.txt +++ /dev/null @@ -1,86 +0,0 @@ - -Makefiles for libpng version 1.6.8beta03 - November 30, 2013 - -pnglibconf.h.prebuilt => Stores configuration settings - makefile.linux => Linux/ELF makefile - (gcc, creates libpng16.so.16.1.6.8beta03) - makefile.gcc => Generic makefile (gcc, creates static libpng.a) - makefile.knr => Archaic UNIX Makefile that converts files with - ansi2knr (Requires ansi2knr.c from - ftp://ftp.cs.wisc.edu/ghost) - makefile.acorn => Acorn makefile - makefile.aix => AIX/gcc makefile - makefile.amiga => Amiga makefile - makefile.atari => Atari makefile - makefile.bc32 => 32-bit Borland C++ (all modules compiled in C mode) - makefile.beos => beos makefile - makefile.bor => Borland makefile (uses bcc) - makefile.cegcc => minge32ce for Windows CE makefile - makefile.darwin => Darwin makefile, can use on MacosX - makefile.dec => DEC Alpha UNIX makefile - makefile.dj2 => DJGPP 2 makefile - makefile.elf => Linux/ELF makefile symbol versioning, - (gcc, creates libpng16.so.16.1.6.8beta03) - makefile.freebsd => FreeBSD makefile - makefile.gcc => Generic gcc makefile - makefile.hpgcc => HPUX makefile using gcc - makefile.hpux => HPUX (10.20 and 11.00) makefile - makefile.hp64 => HPUX (10.20 and 11.00) makefile, 64-bit - makefile.ibmc => IBM C/C++ version 3.x for Win32 and OS/2 (static) - makefile.intel => Intel C/C++ version 4.0 and later - makefile.mips => MIPS makefile - makefile.msc => Microsoft C makefile - makefile.netbsd => NetBSD/cc makefile, makes libpng.so. - makefile.openbsd => OpenBSD makefile - makefile.os2 => OS/2 Makefile (gcc and emx, requires libpng.def) - makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc - makefile.sggcc => Silicon Graphics (gcc, - creates libpng16.so.16.1.6.8beta03) - makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib) - makefile.solaris => Solaris 2.X makefile (gcc, - creates libpng16.so.16.1.6.8beta03) - makefile.so9 => Solaris 9 makefile (gcc, - creates libpng16.so.16.1.6.8beta03) - makefile.std => Generic UNIX makefile (cc, creates static libpng.a) - makefile.sunos => Sun makefile - makefile.32sunu => Sun Ultra 32-bit makefile - makefile.64sunu => Sun Ultra 64-bit makefile - makefile.tc3 => Turbo C 3.0 makefile - makefile.vcwin32 => makefile for Microsoft Visual C++ 4.0 and later - makevms.com => VMS build script - smakefile.ppc => AMIGA smakefile for SAS C V6.58/7.00 PPC compiler - (Requires SCOPTIONS, copied from scripts/SCOPTIONS.ppc) - -Other supporting scripts: - README.txt => This file - descrip.mms => VMS makefile for MMS or MMK - libpng-config-body.in => used by several makefiles to create libpng-config - libpng-config-head.in => used by several makefiles to create libpng-config - libpng.pc.in => Used by several makefiles to create libpng.pc - pngwin.rc => Used by the visualc71 project. - pngwin.def => Used by makefile.os2 - pngwin.dfn => Used to maintain pngwin.def - SCOPTIONS.ppc => Used with smakefile.ppc - - checksym.awk => Used for maintaining pnglibconf.h - def.dfn => Used for maintaining pnglibconf.h - options.awk => Used for maintaining pnglibconf.h - pnglibconf.dfa => Used for maintaining pnglibconf.h - pnglibconf.mak => Used for maintaining pnglibconf.h - sym.dfn => Used for symbol versioning - symbols.def => Used for symbol versioning - symbols.dfn => Used for symbol versioning - vers.dfn => Used for symbol versioning - - libtool.m4 => Used by autoconf tools - ltoptions.m4 => Used by autoconf tools - ltsugar.m4 => Used by autoconf tools - ltversion.m4 => Used by autoconf tools - lt~obsolete.m4 => Used by autoconf tools - - intprefix.dfn => Used by autoconf tools - macro.lst => Used by autoconf tools - prefix.dfn => Used by autoconf tools - - -Further information can be found in comments in the individual makefiles. diff --git a/io2d/src/3rd-party/libpng/scripts/SCOPTIONS.ppc b/io2d/src/3rd-party/libpng/scripts/SCOPTIONS.ppc deleted file mode 100644 index 2c3503e..0000000 --- a/io2d/src/3rd-party/libpng/scripts/SCOPTIONS.ppc +++ /dev/null @@ -1,7 +0,0 @@ -OPTIMIZE -OPTPEEP -OPTTIME -OPTSCHED -AUTOREGISTER -PARMS=REGISTERS -INCLUDEDIR=hlp:ppc/include diff --git a/io2d/src/3rd-party/libpng/scripts/checksym.awk b/io2d/src/3rd-party/libpng/scripts/checksym.awk deleted file mode 100644 index fe3af55..0000000 --- a/io2d/src/3rd-party/libpng/scripts/checksym.awk +++ /dev/null @@ -1,173 +0,0 @@ -#!/bin/awk -f -# Check a list of symbols against the master definition -# (official) list. Arguments: -# -# awk -f checksym.awk official-def list-to-check -# -# Output is a file in the current directory called 'symbols.new', -# the value of the awk variable "of" (which can be changed on the -# command line if required.) stdout holds error messages. Error -# code indicates success or failure. -# -# NOTE: this is a pure, old fashioned, awk script. It will -# work with any awk - -BEGIN{ - err=0 - master="" # master file - official[1] = "" # defined symbols from master file - symbol[1] = "" # defined symbols from png.h - removed[1] = "" # removed symbols from png.h - lasto = 0 # last ordinal value from png.h - mastero = 0 # highest ordinal in master file - symbolo = 0 # highest ordinal in png.h - missing = "error"# log an error on missing symbols - of="symbols.new" # default to a fixed name -} - -# Read existing definitions from the master file (the first -# file on the command line.) This must be a def file and it -# has definition lines (others are ignored) of the form: -# -# symbol @ordinal -# -master == "" { - master = FILENAME -} -FILENAME==master && NF==2 && $2~/^@/ && $1!~/^;/ { - o=0+substr($2,2) - if (o > 0) { - if (official[o] == "") { - official[o] = $1 - if (o > mastero) mastero = o - next - } else - print master ": duplicated symbol:", official[o] ":", $0 - } else - print master ": bad export line format:", $0 - err = 1 -} -FILENAME==master && $1==";missing" && NF==2{ - # This allows the master file to control how missing symbols - # are handled; symbols that aren't in either the master or - # the new file. Valid values are 'ignore', 'warning' and - # 'error' - missing = $2 -} -FILENAME==master { - next -} - -# Read new definitions, these are free form but the lines must -# just be symbol definitions. Lines will be commented out for -# 'removed' symbols, introduced in png.h using PNG_REMOVED rather -# than PNG_EXPORT. Use symbols.dfn or pngwin.dfn to generate the -# input file. -# -# symbol @ordinal # two fields, exported symbol -# ; symbol @ordinal # three fields, removed symbol -# ; @ordinal # two fields, the last ordinal -NF==2 && $1 == ";" && $2 ~ /^@[1-9][0-9]*$/ { # last ordinal - o=0+substr($2,2) - if (lasto == 0 || lasto == o) - lasto=o - else { - print "png.h: duplicated last ordinal:", lasto, o - err = 1 - } - next -} -NF==3 && $1 == ";" && $3 ~ /^@[1-9][0-9]*$/ { # removed symbol - o=0+substr($3,2) - if (removed[o] == "" || removed[o] == $2) { - removed[o] = $2 - if (o > symbolo) symbolo = o - } else { - print "png.h: duplicated removed symbol", o ": '" removed[o] "' != '" $2 "'" - err = 1 - } - next -} -NF==2 && $2 ~ /^@[1-9][0-9]*$/ { # exported symbol - o=0+substr($2,2) - if (symbol[o] == "" || symbol[o] == $1) { - symbol[o] = $1 - if (o > symbolo) symbolo = o - } else { - print "png.h: duplicated symbol", o ": '" symbol[o] "' != '" $1 "'" - err = 1 - } -} -{ - next # skip all other lines -} - -# At the end check for symbols marked as both duplicated and removed -END{ - if (symbolo > lasto) { - print "highest symbol ordinal in png.h,", symbolo ", exceeds last ordinal from png.h", lasto - err = 1 - } - if (mastero > lasto) { - print "highest symbol ordinal in", master ",", mastero ", exceeds last ordinal from png.h", lasto - err = 1 - } - unexported=0 - # Add a standard header to symbols.new: - print ";Version INSERT-VERSION-HERE" >of - print ";--------------------------------------------------------------" >of - print "; LIBPNG symbol list as a Win32 DEF file" >of - print "; Contains all the symbols that can be exported from libpng" >of - print ";--------------------------------------------------------------" >of - print "LIBRARY" >of - print "" >of - print "EXPORTS" >of - - for (o=1; o<=lasto; ++o) { - if (symbol[o] == "" && removed[o] == "") { - if (unexported == 0) unexported = o - if (official[o] == "") { - # missing in export list too, so ok - if (o < lasto) continue - } - } - if (unexported != 0) { - # Symbols in the .def but not in the new file are errors, but - # the 'unexported' symbols aren't in either. By default this - # is an error too (see the setting of 'missing' at the start), - # but this can be reset on the command line or by stuff in the - # file - see the comments above. - if (missing != "ignore") { - if (o-1 > unexported) - print "png.h:", missing ": missing symbols:", unexported "-" o-1 - else - print "png.h:", missing ": missing symbol:", unexported - if (missing != "warning") - err = 1 - } - unexported = 0 - } - if (symbol[o] != "" && removed[o] != "") { - print "png.h: symbol", o, "both exported as '" symbol[o] "' and removed as '" removed[o] "'" - err = 1 - } else if (symbol[o] != official[o]) { - # either the symbol is missing somewhere or it changed - err = 1 - if (symbol[o] == "") - print "png.h: symbol", o, "is exported as '" official[o] "' in", master - else if (official[o] == "") - print "png.h: exported symbol", o, "'" symbol[o] "' not present in", master - else - print "png.h: exported symbol", o, "'" symbol[o] "' exists as '" official[o] "' in", master - } - - # Finally generate symbols.new - if (symbol[o] != "") - print " " symbol[o], "@" o > of - } - - if (err != 0) { - print "*** A new list is in", of, "***" - exit 1 - } -} diff --git a/io2d/src/3rd-party/libpng/scripts/def.dfn b/io2d/src/3rd-party/libpng/scripts/def.dfn deleted file mode 100644 index 19a65ab..0000000 --- a/io2d/src/3rd-party/libpng/scripts/def.dfn +++ /dev/null @@ -1,29 +0,0 @@ -/* def.dfn - define format of libpng.def - * - * Last changed in libpng version 1.5.7 [December 15, 2011] - * Copyright (c) 2010-2011 Glenn Randers-Pehrson - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -/* Write the export file header: */ -PNG_DFN ";--------------------------------------------------------------" -PNG_DFN "; LIBPNG module definition file for OS/2" -PNG_DFN ";--------------------------------------------------------------" -PNG_DFN "" -PNG_DFN "; If you give the library an explicit name one or other files" -PNG_DFN "; may need modifying to support the new name on one or more" -PNG_DFN "; systems." -PNG_DFN "LIBRARY" -PNG_DFN "OS2 DESCRIPTION "PNG image compression library"" -PNG_DFN "OS2 CODE PRELOAD MOVEABLE DISCARDABLE" -PNG_DFN "" -PNG_DFN "EXPORTS" -PNG_DFN ";Version 1.6.8beta03" - -#define PNG_EXPORTA(ordinal, type, name, args, attributes)\ - PNG_DFN "@" SYMBOL_PREFIX "@@" name "@" - -#include "../png.h" diff --git a/io2d/src/3rd-party/libpng/scripts/descrip.mms b/io2d/src/3rd-party/libpng/scripts/descrip.mms deleted file mode 100644 index eb9a807..0000000 --- a/io2d/src/3rd-party/libpng/scripts/descrip.mms +++ /dev/null @@ -1,52 +0,0 @@ - -cc_defs = /inc=$(ZLIBSRC) -c_deb = - -.ifdef __DECC__ -pref = /prefix=all -.endif - - - -OBJS = png.obj, pngset.obj, pngget.obj, pngrutil.obj, pngtrans.obj,\ - pngwutil.obj, pngread.obj, pngmem.obj, pngwrite.obj, pngrtran.obj,\ - pngwtran.obj, pngrio.obj, pngwio.obj, pngerror.obj, pngpread.obj - - -CFLAGS= $(C_DEB) $(CC_DEFS) $(PREF) - -all : pngtest.exe libpng.olb - @ write sys$output " pngtest available" - -libpng.olb : libpng.olb($(OBJS)) - @ write sys$output " Libpng available" - - -pngtest.exe : pngtest.obj libpng.olb - link pngtest,libpng.olb/lib,$(ZLIBSRC)libz.olb/lib - -test : pngtest.exe - run pngtest - -clean : - delete *.obj;*,*.exe; - - -# Other dependencies. -png.obj : png.h, pngconf.h, pnglibconf.h, pngpriv.h, pngstruct.h, pnginfo.h, pngdebug.h -pngpread.obj : png.h, pngconf.h, pnglibconf.h, pngpriv.h, pngstruct.h, pnginfo.h, pngdebug.h -pngset.obj : png.h, pngconf.h, pnglibconf.h, pngpriv.h, pngstruct.h, pnginfo.h, pngdebug.h -pngget.obj : png.h, pngconf.h, pnglibconf.h, pngpriv.h, pngstruct.h, pnginfo.h, pngdebug.h -pngread.obj : png.h, pngconf.h, pnglibconf.h, pngpriv.h, pngstruct.h, pnginfo.h, pngdebug.h -pngrtran.obj : png.h, pngconf.h, pnglibconf.h, pngpriv.h, pngstruct.h, pnginfo.h, pngdebug.h -pngrutil.obj : png.h, pngconf.h, pnglibconf.h, pngpriv.h, pngstruct.h, pnginfo.h, pngdebug.h -pngerror.obj : png.h, pngconf.h, pnglibconf.h, pngpriv.h, pngstruct.h, pnginfo.h, pngdebug.h -pngmem.obj : png.h, pngconf.h, pnglibconf.h, pngpriv.h, pngstruct.h, pnginfo.h, pngdebug.h -pngrio.obj : png.h, pngconf.h, pnglibconf.h, pngpriv.h, pngstruct.h, pnginfo.h, pngdebug.h -pngwio.obj : png.h, pngconf.h, pnglibconf.h, pngpriv.h, pngstruct.h, pnginfo.h, pngdebug.h -pngtrans.obj : png.h, pngconf.h, pnglibconf.h, pngpriv.h, pngstruct.h, pnginfo.h, pngdebug.h -pngwrite.obj : png.h, pngconf.h, pnglibconf.h, pngpriv.h, pngstruct.h, pnginfo.h, pngdebug.h -pngwtran.obj : png.h, pngconf.h, pnglibconf.h, pngpriv.h, pngstruct.h, pnginfo.h, pngdebug.h -pngwutil.obj : png.h, pngconf.h, pnglibconf.h, pngpriv.h, pngstruct.h, pnginfo.h, pngdebug.h - -pngtest.obj : png.h, pngconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/dfn.awk b/io2d/src/3rd-party/libpng/scripts/dfn.awk deleted file mode 100644 index 89b92d5..0000000 --- a/io2d/src/3rd-party/libpng/scripts/dfn.awk +++ /dev/null @@ -1,203 +0,0 @@ -#!/bin/awk -f -# scripts/dfn.awk - process a .dfn file -# -# last changed in libpng version 1.5.14 - February 4, 2013 -# -# Copyright (c) 2013-2013 Glenn Randers-Pehrson -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# The output of this script is written to the file given by -# the variable 'out', which should be set on the command line. -# Error messages are printed to stdout and if any are printed -# the script will exit with error code 1. - -BEGIN{ - out="/dev/null" # as a flag - out_count=0 # count of output lines - err=0 # set if an error occured - sort=0 # sort the output - array[""]="" -} - -# The output file must be specified before any input: -NR==1 && out == "/dev/null" { - print "out=output.file must be given on the command line" - # but continue without setting the error code, this allows the - # script to be checked easily -} - -# Output can be sorted; two lines are recognized -$1 == "PNG_DFN_START_SORT"{ - sort=0+$2 - next -} - -$1 ~ /^PNG_DFN_END_SORT/{ - # Do a very simple, slow, sort; notice that blank lines won't be - # output by this - for (entry in array) { - while (array[entry] != "") { - key = entry - value = array[key] - array[key] = "" - - for (alt in array) { - if (array[alt] != "" && alt < key) { - array[key] = value - value = array[alt] - key = alt - array[alt] = "" - } - } - - print value >out - } - } - sort=0 - next -} - -/^[^"]*PNG_DFN *".*"[^"]*$/{ - # A definition line, apparently correctly formated, extract the - # definition then replace any doubled "" that remain with a single - # double quote. Notice that the original doubled double quotes - # may have been split by tokenization - # - # Sometimes GCC splits the PNG_DFN lines, we know this has happened - # if the quotes aren't closed and must read another line. In this - # case it is essential to reject lines that start '#' because those - # are introduced #line directives. - orig=$0 - line=$0 - lineno=FNR - if (lineno == "") lineno=NR - - if (sub(/^[^"]*PNG_DFN *"/,"",line) != 1) { - print "line", lineno ": processing failed:" - print orig - err=1 - next - } else { - ++out_count - } - - # Now examine quotes within the value: - # - # @" - delete this and any following spaces - # "@ - delete this and any preceding spaces - # @' - replace this by a double quote - # - # This allows macro substitution by the C compiler thus: - # - # #define first_name John - # #define last_name Smith - # - # PNG_DFN"#define name @'@" first_name "@ @" last_name "@@'" - # - # Might get C preprocessed to: - # - # PNG_DFN "#define foo @'@" John "@ @" Smith "@@'" - # - # Which this script reduces to: - # - # #define name "John Smith" - # - while (1) { - # While there is an @" remove it and the next "@ - if (line ~ /@"/) { - if (line ~ /@".*"@/) { - # Do this special case first to avoid swallowing extra spaces - # before or after the @ stuff: - if (!sub(/@" *"@/, "", line)) { - # Ok, do it in pieces - there has to be a non-space between the - # two. NOTE: really weird things happen if a leading @" is - # lost - the code will error out below (I believe). - if (!sub(/@" */, "", line) || !sub(/ *"@/, "", line)) { - print "line", lineno, ": internal error:", orig - exit 1 - } - } - } - - # There is no matching "@. Assume a split line - else while (1) { - if (getline nextline) { - # If the line starts with '#' it is a preprocesor line directive - # from cc -E, skip it: - if (nextline !~ /^#/) { - line = line " " nextline - break - } - } else { - # This is end-of-input - probably a missig "@ on the first line: - print "line", lineno ": unbalanced @\" ... \"@ pair" - err=1 - next - } - } - - # Keep going until all the @" have gone - continue - } - - # Attempt to remove a trailing " (not preceded by '@') - if this can - # be done stop now, if not assume a split line again - if (sub(/"[^"]*$/, "", line)) - break - - # Read another line - while (1) { - if (getline nextline) { - if (nextline !~ /^#/) { - line = line " " nextline - # Go back to stripping @" "@ pairs - break - } - } else { - print "line", lineno ": unterminated PNG_DFN string" - err=1 - next - } - } - } - - # Put any needed double quotes in (at the end, because these would otherwise - # interfere with the processing above.) - gsub(/@'/,"\"", line) - - # Remove any trailing spaces (not really required, but for - # editorial consistency - sub(/ *$/, "", line) - - # Remove trailing CR - sub(/ $/, "", line) - - if (sort) { - if (split(line, parts) < sort) { - print "line", lineno ": missing sort field:", line - err=1 - } else - array[parts[sort]] = line - } - - else - print line >out - next -} - -/PNG_DFN/{ - print "line", NR, "incorrectly formated PNG_DFN line:" - print $0 - err = 1 -} - -END{ - if (out_count > 0 || err > 0) - exit err - - print "no definition lines found" - exit 1 -} diff --git a/io2d/src/3rd-party/libpng/scripts/intprefix.dfn b/io2d/src/3rd-party/libpng/scripts/intprefix.dfn deleted file mode 100644 index 790bdfe..0000000 --- a/io2d/src/3rd-party/libpng/scripts/intprefix.dfn +++ /dev/null @@ -1,19 +0,0 @@ - -/* intprefix.dfn - generate an unprefixed internal symbol list - * - * Last changed in libpng version 1.6.0 [January 30, 2012] - * Copyright (c) 2012 Glenn Randers-Pehrson - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - */ - -#define PNG_INTERNAL_DATA(type, name, array)\ - PNG_DFN "@" name "@" - -#define PNG_INTERNAL_FUNCTION(type, name, args, attributes)\ - PNG_DFN "@" name "@" - -#define PNGPREFIX_H /* self generation */ -#include "../pngpriv.h" diff --git a/io2d/src/3rd-party/libpng/scripts/libpng-config-body.in b/io2d/src/3rd-party/libpng/scripts/libpng-config-body.in deleted file mode 100644 index b466432..0000000 --- a/io2d/src/3rd-party/libpng/scripts/libpng-config-body.in +++ /dev/null @@ -1,96 +0,0 @@ - -usage() -{ - cat < libpng.pc - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo libdir=\"$(LIBPATH)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo L_opts=\"-L$(LIBPATH)\"; \ - echo R_opts=\"-R$(LIBPATH)\"; \ - echo ccopts=\"-xtarget=ultra\"; \ - echo ldopts=\"-xtarget=ultra\"; \ - echo libs=\"-lpng16 -lz -lm\"; \ - cat scripts/libpng-config-body.in ) > libpng-config - chmod +x libpng-config - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - -$(LIBSOMAJ): $(OBJSDLL) - @case "`type ld`" in *ucb*) \ - echo; \ - echo '## WARNING:'; \ - echo '## The commands "CC" and "LD" must NOT refer to /usr/ucb/cc'; \ - echo '## and /usr/ucb/ld. If they do, you need to adjust your PATH'; \ - echo '## environment variable to put /usr/ccs/bin ahead of /usr/ucb.'; \ - echo '## The environment variable LD_LIBRARY_PATH should not be set'; \ - echo '## at all. If it is, things are likely to break because of'; \ - echo '## the libucb dependency that is created.'; \ - echo; \ - ;; \ - esac - $(LD) -G -L$(ZLIBLIB) -R$(ZLIBLIB) -h $(LIBSOMAJ) \ - -o $(LIBSOMAJ) $(OBJSDLL) - -pngtest: pngtest.o $(LIBSO) - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install-headers: png.h pngconf.h pnglibconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@$(RM_F) $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - chmod 644 $(DL)/$(LIBNAME).a - -@$(RM_F) $(DL)/libpng.a - (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a) - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(LIBSOREL) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSOMAJ) $(DL)/$(LIBSOREL) - chmod 755 $(DL)/$(LIBSOREL) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@$(RM_F) $(DM)/man3/libpng.3 - -@$(RM_F) $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@$(RM_F) $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@$(RM_F) $(DB)/libpng-config - -@$(RM_F) $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - chmod 755 $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -# If you installed in $(DESTDIR), test-installed won't work until you -# move the library to its final location. Use test-dd to test it -# before then. - -test-dd: - echo - echo Testing installed dynamic shared library in $(DL). - $(CC) $(SUN_CC_FLAGS) -I$(DI) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -o pngtestd -L$(DL) -R$(DL) `$(BINPATH)/$(LIBNAME)-config --ldflags` \ - $(SUN_LD_FLAGS) -L$(ZLIBLIB) -R$(ZLIBLIB) - ./pngtestd pngtest.png - -test-installed: - echo - echo Testing installed dynamic shared library. - $(CC) $(SUN_CC_FLAGS) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -o pngtesti `$(BINPATH)/$(LIBNAME)-config --ldflags` \ - $(SUN_LD_FLAGS) -L$(ZLIBLIB) -R$(ZLIBLIB) - ./pngtesti pngtest.png - -clean: - $(RM_F) *.o libpng.a pngtest pngtesti pngout.png \ - libpng-config $(LIBSO) $(LIBSOMAJ)* \ - libpng.pc - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o png.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o pngerror.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o pngrio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o pngwio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o pngmem.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o pngset.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o pngget.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o pngread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o pngrtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o pngrutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o pngtrans.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o pngwrite.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o pngwtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o pngwutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o pngpread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.64sunu b/io2d/src/3rd-party/libpng/scripts/makefile.64sunu deleted file mode 100644 index 1aaf696..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.64sunu +++ /dev/null @@ -1,241 +0,0 @@ -# makefile for libpng on Solaris 2.x with cc -# Contributed by William L. Sebok, based on makefile.linux -# Copyright (C) 2002, 2006, 2010-2011 Glenn Randers-Pehrson -# Copyright (C) 1998 Greg Roelofs -# Copyright (C) 1996, 1997 Andreas Dilger - -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Library name: -LIBNAME=libpng16 -PNGMAJ = 16 - -# Shared library names: -LIBSO=$(LIBNAME).so -LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ) -LIBSOREL=$(LIBSOMAJ).$(RELEASE) -OLDSO=libpng.so - -# Utilities: -CC=cc -AR_RC=ar rc -MKDIR_P=mkdir -p -LN_SF=ln -f -s -RANLIB=echo -RM_F=/bin/rm -f - -SUN_CC_FLAGS=-fast -xtarget=ultra -xarch=v9 -SUN_LD_FLAGS=-fast -xtarget=ultra -xarch=v9 - -# where make install puts libpng.a, libpng16.so and libpng16/png.h -prefix=/a -exec_prefix=$(prefix) - -# Where the zlib library and include files are located -# Changing these to ../zlib poses a security risk. If you want -# to have zlib in an adjacent directory, specify the full path instead of "..". -#ZLIBLIB=../zlib -#ZLIBINC=../zlib - -ZLIBLIB=/usr/lib -ZLIBINC=/usr/include - -WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \ - -Wmissing-declarations -Wtraditional -Wcast-align \ - -Wstrict-prototypes -Wmissing-prototypes #-Wconversion -CFLAGS=-I$(ZLIBINC) $(SUN_CC_FLAGS) \ - # $(WARNMORE) -g -DPNG_DEBUG=5 -LDFLAGS=-L. -R. $(SUN_LD_FLAGS) -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng16 -lz -lm - -INCPATH=$(prefix)/include -LIBPATH=$(exec_prefix)/lib -MANPATH=$(prefix)/man -BINPATH=$(exec_prefix)/bin - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -DB=$(DESTDIR)$(BINPATH) -DI=$(DESTDIR)$(INCPATH) -DL=$(DESTDIR)$(LIBPATH) -DM=$(DESTDIR)$(MANPATH) - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -OBJSDLL = $(OBJS:.o=.pic.o) - -.SUFFIXES: .c .o .pic.o - -.c.pic.o: - $(CC) -c $(CFLAGS) -KPIC -o $@ $*.c - -all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config - -include scripts/pnglibconf.mak -DELETE = $(RM_F) -DFNFLAGS = $(DEFS) $(CPPFLAGS) - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -libpng.pc: - cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \ - -e s!@exec_prefix@!$(exec_prefix)! \ - -e s!@libdir@!$(LIBPATH)! \ - -e s!@includedir@!$(INCPATH)! \ - -e s!-lpng16!-lpng16\ -lz\ -lm! > libpng.pc - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo libdir=\"$(LIBPATH)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo L_opts=\"-L$(LIBPATH)\"; \ - echo R_opts=\"-R$(LIBPATH)\"; \ - echo ccopts=\"-xtarget=ultra -xarch=v9\"; \ - echo ldopts=\"-xtarget=ultra -xarch=v9\"; \ - echo libs=\"-lpng16 -lz -lm\"; \ - cat scripts/libpng-config-body.in ) > libpng-config - chmod +x libpng-config - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - -$(LIBSOMAJ): $(OBJSDLL) - @case "`type ld`" in *ucb*) \ - echo; \ - echo '## WARNING:'; \ - echo '## The commands "CC" and "LD" must NOT refer to /usr/ucb/cc'; \ - echo '## and /usr/ucb/ld. If they do, you need to adjust your PATH'; \ - echo '## environment variable to put /usr/ccs/bin ahead of /usr/ucb.'; \ - echo '## The environment variable LD_LIBRARY_PATH should not be set'; \ - echo '## at all. If it is, things are likely to break because of'; \ - echo '## the libucb dependency that is created.'; \ - echo; \ - ;; \ - esac - $(LD) -G -L$(ZLIBLIB) -R$(ZLIBLIB) -h $(LIBSOMAJ) \ - -o $(LIBSOMAJ) $(OBJSDLL) - -pngtest: pngtest.o $(LIBSO) - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install-headers: png.h pngconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@$(RM_F) $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - chmod 644 $(DL)/$(LIBNAME).a - -@$(RM_F) $(DL)/libpng.a - (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a) - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(LIBSOREL) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSOMAJ) $(DL)/$(LIBSOREL) - chmod 755 $(DL)/$(LIBSOREL) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@$(RM_F) $(DM)/man3/libpng.3 - -@$(RM_F) $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@$(RM_F) $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@$(RM_F) $(DB)/libpng-config - -@$(RM_F) $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - chmod 755 $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -# If you installed in $(DESTDIR), test-installed won't work until you -# move the library to its final location. Use test-dd to test it -# before then. - -test-dd: - echo - echo Testing installed dynamic shared library in $(DL). - $(CC) $(SUN_CC_FLAGS) -I$(DI) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -o pngtestd -L$(DL) -R$(DL) `$(BINPATH)/$(LIBNAME)-config --ldflags` \ - $(SUN_LD_FLAGS) -L$(ZLIBLIB) -R$(ZLIBLIB) - ./pngtestd pngtest.png - -test-installed: - echo - echo Testing installed dynamic shared library. - $(CC) $(SUN_CC_FLAGS) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -o pngtesti `$(BINPATH)/$(LIBNAME)-config --ldflags` \ - $(SUN_LD_FLAGS) -L$(ZLIBLIB) -R$(ZLIBLIB) - ./pngtesti pngtest.png - -clean: - $(RM_F) *.o libpng.a pngtest pngtesti pngout.png \ - libpng-config $(LIBSO) $(LIBSOMAJ)* \ - libpng.pc - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o png.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o pngerror.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o pngrio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o pngwio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o pngmem.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o pngset.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o pngget.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o pngread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o pngrtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o pngrutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o pngtrans.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o pngwrite.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o pngwtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o pngwutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o pngpread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.acorn b/io2d/src/3rd-party/libpng/scripts/makefile.acorn deleted file mode 100644 index 00b8fb5..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.acorn +++ /dev/null @@ -1,57 +0,0 @@ -# Project: libpng - - -# Toolflags: -CCflags = -c -depend !Depend -IC:,Zlib: -g -throwback -DRISCOS -fnah -C++flags = -c -depend !Depend -IC: -throwback -Linkflags = -aif -c++ -o $@ -ObjAsmflags = -throwback -NoCache -depend !Depend -CMHGflags = -LibFileflags = -c -l -o $@ -Squeezeflags = -o $@ - -# Final targets: -@.libpng-lib: @.o.png @.o.pngerror @.o.pngrio @.o.pngwio @.o.pngmem \ - @.o.pngpread @.o.pngset @.o.pngget @.o.pngread @.o.pngrtran \ - @.o.pngrutil @.o.pngtrans @.o.pngwrite @.o.pngwtran @.o.pngwutil - LibFile $(LibFileflags) @.o.png @.o.pngerror @.o.pngrio @.o.pngrtran \ - @.o.pngmem @.o.pngpread @.o.pngset @.o.pngget @.o.pngread @.o.pngwio \ - @.o.pngrutil @.o.pngtrans @.o.pngwrite @.o.pngwtran @.o.pngwutil -@.mm-libpng-lib: @.mm.png @.mm.pngerror @.mm.pngrio @.mm.pngwio @.mm.pngmem \ - @.mm.pngpread @.mm.pngset @.mm.pngget @.mm.pngread @.mm.pngrtran \ - @.mm.pngrutil @.mm.pngtrans @.mm.pngwrite @.mm.pngwtran @.mm.pngwutil - LibFile $(LibFileflags) @.mm.png @.mm.pngerror @.mm.pngrio \ - @.mm.pngwio @.mm.pngmem @.mm.pngpread @.mm.pngset @.mm.pngget \ - @.mm.pngread @.mm.pngrtran @.mm.pngrutil @.mm.pngtrans @.mm.pngwrite \ - @.mm.pngwtran @.mm.pngwutil - - -# User-editable dependencies: -# (C) Copyright 1997 Tom Tanner -Test: @.pngtest - .pngtest - @remove .pngtest - -#It would be nice if you could stop "make" listing from here on! -@.pngtest: @.o.pngtest @.libpng-lib C:o.Stubs Zlib:zlib_lib - Link $(Linkflags) @.o.pngtest @.libpng-lib C:o.Stubs Zlib:zlib_lib - -.SUFFIXES: .o .mm .c - -.c.mm: - MemCheck.CC cc $(ccflags) -o $@ LibPng:$< -.c.o: - cc $(ccflags) -o $@ $< - -# See scripts.mak.libpngconf for how to generate this: -@.h.libpngconf: @.scripts.h.libpngconf - copy @.scripts.h.libpngconf $@ - -# Static dependencies: -@.o.png @.o.pngerror @.o.pngrio @.o.pngwio @.o.pngmem \ -@.o.pngpread @.o.pngset @.o.pngget @.o.pngread @.o.pngrtran \ -@.o.pngrutil @.o.pngtrans @.o.pngwrite @.o.pngwtran @.o.pngwutil \ -@.o.pngtest: @.h.libpngconf - - -# Dynamic dependencies: diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.aix b/io2d/src/3rd-party/libpng/scripts/makefile.aix deleted file mode 100644 index ae89cd4..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.aix +++ /dev/null @@ -1,121 +0,0 @@ -# makefile for libpng using gcc (generic, static library) -# Copyright (C) 2002, 2006-2009 Glenn Randers-Pehrson -# Copyright (C) 2000 Cosmin Truta -# Copyright (C) 2000 Marc O. Gloor (AIX support added, from makefile.gcc) -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Location of the zlib library and include files -ZLIBINC = ../zlib -ZLIBLIB = ../zlib - -# Compiler, linker, lib and other tools -CC = gcc -LD = $(CC) -AR_RC = ar rcs -MKDIR_P = mkdir -p -RANLIB = ranlib -RM_F = rm -f -LN_SF = ln -f -s - -LIBNAME=libpng16 -PNGMAJ = 16 - -prefix=/usr/local -INCPATH=$(prefix)/include -LIBPATH=$(prefix)/lib - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -DI=$(DESTDIR)$(INCPATH) -DL=$(DESTDIR)$(LIBPATH) - -CDEBUG = -g -DPNG_DEBUG=5 -LDDEBUG = -CRELEASE = -O2 -LDRELEASE = -s -WARNMORE=-W -Wall -CFLAGS = -I$(ZLIBINC) $(WARNMORE) $(CRELEASE) -LDFLAGS = -L. -L$(ZLIBLIB) -lpng16 -lz -lm $(LDRELEASE) - -# File extensions -O=.o -A=.a -E= - -# Variables -OBJS = png$(O) pngerror$(O) pngget$(O) pngmem$(O) pngpread$(O) \ - pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) pngset$(O) \ - pngtrans$(O) pngwio$(O) pngwrite$(O) pngwtran$(O) pngwutil$(O) - -# Targets -all: $(LIBNAME)$(A) pngtest$(E) - -include scripts/pnglibconf.mak -REMOVE = $(RM_F) -DFNFLAGS = $(DEFS) $(CPPFLAGS) - -$(LIBNAME)$(A): $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -test: pngtest$(E) - ./pngtest$(E) - -pngtest$(E): pngtest$(O) $(LIBNAME)$(A) - $(LD) -o $@ pngtest$(O) $(LDFLAGS) - -install: $(LIBNAME)$(A) - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DI)/$(LIBNAME)/png.h - -@$(RM_F) $(DI)/$(LIBNAME)/pngconf.h - -@$(RM_F) $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) $(DI)/png.h - -@$(RM_F) $(DI)/pngconf.h - -@$(RM_F) $(DI)/pnglibconf.h - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h \ - $(DI)/$(LIBNAME)/pngconf.h \ - $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) -r $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -@$(RM_F) $(DL)/$(LIBNAME)$(A) - -@$(RM_F) $(DL)/libpng$(A) - cp $(LIBNAME)$(A) $(DL)/$(LIBNAME)$(A) - chmod 644 $(DL)/$(LIBNAME)$(A) - (cd $(DL); $(LN_SF) $(LIBNAME)$(A) libpng$(A)) - (cd $(DI); $(LN_SF) libpng/* .;) - -clean: - $(RM_F) *.o $(LIBNAME)$(A) pngtest pngout.png pnglibconf.h - -png$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest$(O): png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.amiga b/io2d/src/3rd-party/libpng/scripts/makefile.amiga deleted file mode 100644 index 228b5c2..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.amiga +++ /dev/null @@ -1,56 +0,0 @@ -# Commodore Amiga Makefile -# makefile for libpng and SAS C V6.5x compiler -# Copyright (C) 1995-2000 Wolf Faust -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h -# -# Location/path of zlib include files -ZLIB=/zlib -#compiler -CC=sc -#compiler flags -# WARNING: a bug in V6.51 causes bad code with OPTGO -# So use V6.55 or set NOOPTGO!!!!!!!!! -CFLAGS= NOSTKCHK PARMS=REG OPTIMIZE OPTGO OPTPEEP OPTINLOCAL OPTINL\ - OPTLOOP OPTRDEP=4 OPTDEP=4 OPTCOMP=4 INCLUDEDIR=$(ZLIB) \ - DEFINE=PNG_INTERNAL -#linker flags -LDFLAGS= SD ND BATCH -#link libs -LDLIBS= libpng.lib libgz.lib LIB:scm.lib LIB:sc.lib Lib:amiga.lib -# linker -LN= slink -# file deletion command -RM= delete quiet -# file copy command? -CP= copy -# library (.lib) file creation command -AR= oml -# make directory command -MKDIR= makedir - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -all: libpng.lib pngtest - -libpng.lib: $(OBJS) --$(RM) libpng.lib -$(AR) libpng.lib r $(OBJS) - -$(OBJS): pngpriv.h png.h pngconf.h pnglibconf.h pnginfo.h pngstruct.h pngdebug.h - -pnglibconf.h: scripts/pnglibconf.h.prebuilt -$(CP) scripts/pnglibconf.h.prebuilt pnglibconf.h - -pngtest: pngtest.o libpng.lib -$(LN) libpng.pc - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo libs=\"-lpng16 -lz \"; \ - cat scripts/libpng-config-body.in ) > libpng-config - chmod +x libpng-config - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - cp $(LIBSO)* /boot/home/config/lib - -$(LIBSOMAJ): $(OBJSDLL) - $(CC) -nostart -Wl,-soname,$(LIBSOMAJ) -o \ - $(LIBSOMAJ) $(OBJSDLL) $(LDFLAGS) - -pngtest: pngtest.o $(LIBSO) - $(CC) -L$(ZLIBLIB) -L. -lz -lpng16 -o pngtest pngtest.o - -test: pngtest - ./pngtest - -install-headers: png.h pngconf.h pnglibconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@$(RM_F) $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - chmod 644 $(DL)/$(LIBNAME).a - -@$(RM_F) $(DL)/libpng.a - (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a) - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(LIBSOREL) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSOMAJ) $(DL)/$(LIBSOREL) - chmod 755 $(DL)/$(LIBSOREL) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@$(RM_F) $(DM)/man3/libpng.3 - -@$(RM_F) $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@$(RM_F) $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@$(RM_F) $(DB)/libpng-config - -@$(RM_F) $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - chmod 755 $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -# If you installed in $(DESTDIR), test-installed won't work until you -# move the library to its final location. Use test-dd to test it -# before then. - -test-dd: - echo - echo Testing installed dynamic shared library in $(DL). - $(CC) -I$(DI) $(CFLAGS) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(DL) -L$(ZLIBLIB) -Wl,-rpath $(ZLIBLIB):$(DL) \ - -o pngtestd `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtestd pngtest.png - -test-installed: - $(CC) $(CFLAGS) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) \ - -o pngtesti `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtesti pngtest.png - -clean: - $(RM_F) *.o libpng.a pngtest pngout.png libpng-config \ - $(LIBSO) $(LIBSOMAJ)* pngtesti \ - pnglibconf.h libpng.pc - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o png.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o pngerror.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o pngrio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o pngwio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o pngmem.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o pngset.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o pngget.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o pngread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o pngrtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o pngrutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o pngtrans.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o pngwrite.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o pngwtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o pngwutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o pngpread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.bor b/io2d/src/3rd-party/libpng/scripts/makefile.bor deleted file mode 100644 index e3b36a5..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.bor +++ /dev/null @@ -1,161 +0,0 @@ -# Makefile for libpng -# 16-bit Borland C++ (Note: All modules are compiled in C mode) -# To build the library, do: -# "make -fmakefile.bor -DMODEL=c" -# or: "make -fmakefile.bor -DMODEL=l" -# -# ------------ Borland C++ ------------ - -### Absolutely necessary for this makefile to work -.AUTODEPEND - -## Where zlib.h, zconf.h and zlib_MODEL.lib are -ZLIB_DIR=..\zlib - -## Compiler, linker and lib stuff -CC=bcc -LD=bcc -LIB=tlib - -!ifndef MODEL -MODEL=l -!endif - -MODEL_ARG=-m$(MODEL) - -#TARGET_CPU=3 -# 2 = 286, 3 = 386, etc. -!ifndef TARGET_CPU -TARGET_CPU=2 -!endif - -# Use this if you don't want Borland's fancy exception handling -# (for Borland C++ 4.0 or later) -#NOEHLIB=noeh$(MODEL).lib - -!ifdef DEBUG -CDEBUG=-v -LDEBUG=-v -!else -CDEBUG= -LDEBUG= -!endif - -# STACKOFLOW=1 -!ifdef STACKOFLOW -CDEBUG=$(CDEBUG) -N -LDEBUG=$(LDEBUG) -N -!endif - -# -X- turn on dependency generation in the object file -# -w set all warnings on -# -O2 optimize for speed -# -Z global optimization -CFLAGS=-O2 -Z -X- -w -I$(ZLIB_DIR) -$(TARGET_CPU) $(MODEL_ARG) $(CDEBUG) - -# -M generate map file -LDFLAGS=-M -L$(ZLIB_DIR) $(MODEL_ARG) $(LDEBUG) - -## Variables - -OBJS = \ - png.obj \ - pngerror.obj \ - pngget.obj \ - pngmem.obj \ - pngpread.obj \ - pngread.obj \ - pngrio.obj \ - pngrtran.obj \ - pngrutil.obj \ - pngset.obj \ - pngtrans.obj \ - pngwio.obj \ - pngwrite.obj \ - pngwtran.obj \ - pngwutil.obj - -LIBOBJS = \ - +png.obj \ - +pngerror.obj \ - +pngget.obj \ - +pngmem.obj \ - +pngpread.obj \ - +pngread.obj \ - +pngrio.obj \ - +pngrtran.obj \ - +pngrutil.obj \ - +pngset.obj \ - +pngtrans.obj \ - +pngwio.obj \ - +pngwrite.obj \ - +pngwtran.obj \ - +pngwutil.obj - -LIBNAME=libpng$(MODEL).lib - -## Implicit rules - -# Braces let make "batch" calls to the compiler, -# 2 calls instead of 12; space is important. -.c.obj: - $(CC) $(CFLAGS) -c {$*.c } - -.c.exe: - $(CC) $(CFLAGS) $(LDFLAGS) $*.c $(LIBNAME) zlib_$(MODEL).lib $(NOEHLIB) - -## Major targets - -all: libpng pngtest - -# try !inlude scripts\pnglibconf.mak for more options -pnglibconf.h: scripts\pnglibconf.h.prebuilt - copy scripts\pnglibconf.h.prebuilt $@ - -libpng: $(LIBNAME) - -pngtest: pngtest$(MODEL).exe - -test: pngtest$(MODEL).exe - pngtest$(MODEL) - -## Minor Targets - -png.obj: png.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.obj: pngerror.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.obj: pngget.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.obj: pngmem.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.obj: pngpread.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.obj: pngread.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.obj: pngrio.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.obj: pngrtran.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.obj: pngrutil.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.obj: pngset.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.obj: pngtrans.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.obj: pngwio.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.obj: pngwrite.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.obj: pngwtran.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.obj: pngwutil.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -$(LIBNAME): $(OBJS) - -del $(LIBNAME) - $(LIB) $(LIBNAME) @&&| -$(LIBOBJS), libpng$(MODEL) -| - -pngtest$(MODEL).obj: pngtest.c png.h pngconf.h pnglibconf.h - $(CC) $(CFLAGS) -opngtest$(MODEL) -c pngtest.c - -pngtest$(MODEL).exe: pngtest$(MODEL).obj - $(LD) $(LDFLAGS) pngtest$(MODEL).obj $(LIBNAME) zlib_$(MODEL).lib $(NOEHLIB) - -# Clean up anything else you want -clean: - -del pnglibconf.h - -del *.obj - -del *.exe - -del *.lib - -del *.lst - -del *.map - -# End of makefile for libpng diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.cegcc b/io2d/src/3rd-party/libpng/scripts/makefile.cegcc deleted file mode 100644 index 61bc1c7..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.cegcc +++ /dev/null @@ -1,116 +0,0 @@ -# Makefile for creating Windows CE release archives, with the -# mingw32ce compiler. - -# Last updated: 22-Jul-2008 - -# Copyright (C) 2008 Vincent Torri - -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# To get some help, type -# -# make help -# -# To create the archives -# -# make -# -# To remove everything, type: -# -# make clean - -VERMAJ = 1 -VERMIN = 6 -VERMIC = 8 -VER = $(VERMAJ).$(VERMIN).$(VERMIC) -NAME = libpng -PACKAGE = $(NAME)-$(VER) - -BIN = libpng16-0.dll -LIB = libpng16.a libpng16.dll.a libpng.a libpng.dll.a -INCLUDE = png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -PC = libpng16.pc libpng.pc - -MANIFESTVERBIN = "Libpng-$(VER): Binary files" -MANIFESTVERDEV = "Libpng-$(VER): Developer files" -MANIFESTVERDESC = "Libpng: the official PNG reference library" - -all: $(NAME) - -$(NAME): remove-old copy-src compilation copy manifest archive - @echo " * Removal of the directories" - @rm -rf $(PACKAGE)/ $(PACKAGE)-bin/ $(PACKAGE)-dev/ - -remove-old: - @echo " * Removal of the old files" - @rm -rf $(PACKAGE)-bin* - @rm -rf $(PACKAGE)-dev* - -copy-src: - @echo " * Copy of source files" - @cp -R ../src/$(PACKAGE) . - @echo " * Creation of directories and files" - @mkdir -p $(PACKAGE)-bin/bin - @mkdir -p $(PACKAGE)-bin/manifest - @mkdir -p $(PACKAGE)-dev/lib/pkgconfig - @mkdir -p $(PACKAGE)-dev/include/$(NAME)$(VERMAJ)$(VERMIN) - @mkdir -p $(PACKAGE)-dev/manifest - @touch $(PACKAGE)-bin/manifest/$(PACKAGE)-bin.mft - @touch $(PACKAGE)-bin/manifest/$(PACKAGE)-bin.ver - @touch $(PACKAGE)-dev/manifest/$(PACKAGE)-dev.mft - @touch $(PACKAGE)-dev/manifest/$(PACKAGE)-dev.ver - -compilation: - @echo " * Compilation of $(PACKAGE)" - cd $(PACKAGE) && CPPFLAGS="$(CPPFLAGS) -DPNG_CONSOLE_IO_SUPPORTED -D_WIN32_WCE=0x0420" \ - CFLAGS="$(CFLAGS) -mms-bitfields -O3 -pipe -fomit-frame-pointer" \ - LDFLAGS="$(LDFLAGS) -Wl,--enable-auto-import -Wl,-s" \ - ./configure --prefix=/opt/wince --host=arm-mingw32ce && make - -copy: - @echo " * Copy of binary and development files" - @for i in $(BIN); do \ - cp $(PACKAGE)/.libs/$$i $(PACKAGE)-bin/bin; \ - done - @for i in $(LIB); do \ - cp $(PACKAGE)/.libs/$$i $(PACKAGE)-dev/lib; \ - done - @for i in $(INCLUDE); do \ - cp $(PACKAGE)/$$i $(PACKAGE)-dev/include/$(NAME)$(VERMAJ)$(VERMIN); \ - done - @for i in $(PC); do \ - cp $(PACKAGE)/$$i $(PACKAGE)-dev/lib/pkgconfig; \ - done - -manifest: - @echo " * Creation of the manifest" - @cd $(PACKAGE)-bin && find * >> manifest/$(PACKAGE)-bin.mft - @cd $(PACKAGE)-bin && \ - echo $(MANIFESTVERBIN) >> manifest/$(PACKAGE)-bin.ver && \ - echo $(MANIFESTVERDESC) >> manifest/$(PACKAGE)-bin.ver - @cd $(PACKAGE)-dev && find * >> manifest/$(PACKAGE)-dev.mft - @cd $(PACKAGE)-dev && \ - echo $(MANIFESTVERDEV) >> manifest/$(PACKAGE)-dev.ver && \ - echo $(MANIFESTVERDESC) >> manifest/$(PACKAGE)-dev.ver - -archive: - @echo " * Creation of the archives" - @tar cf $(PACKAGE)-bin.tar $(PACKAGE)-bin - @bzip2 -9 $(PACKAGE)-bin.tar - @tar cf $(PACKAGE)-dev.tar $(PACKAGE)-dev - @bzip2 -9 $(PACKAGE)-dev.tar - -clean: - @echo " * Cleaning" - @rm -rf $(PACKAGE)* - -help: - @echo - @echo "To create the archives, type:" - @echo " make" - @echo - @echo "To remove everything, type:" - @echo " make clean" - @echo diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.darwin b/io2d/src/3rd-party/libpng/scripts/makefile.darwin deleted file mode 100644 index 814fef5..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.darwin +++ /dev/null @@ -1,218 +0,0 @@ -# makefile for libpng on Darwin / Mac OS X -# Copyright (C) 2002, 2004, 2006, 2008, 2010-2011 Glenn Randers-Pehrson -# Copyright (C) 2001 Christoph Pfisterer -# derived from makefile.linux: -# Copyright (C) 1998, 1999 Greg Roelofs -# Copyright (C) 1996, 1997 Andreas Dilger -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# where "make install" puts libpng.a, libpng16.dylib, png.h, pngconf.h, -# and pnglibconf.h -prefix=/usr/local -exec_prefix=$(prefix) - -# Where the zlib library and include files are located -ZLIBLIB=/usr/lib -ZLIBINC=/usr/include - -# Library name: -LIBNAME = libpng16 -PNGMAJ = 16 - -# Shared library names: -LIBSO=$(LIBNAME).dylib -LIBSOMAJ=$(LIBNAME).$(PNGMAJ).dylib -LIBSOREL=$(LIBNAME).$(PNGMAJ).$(RELEASE).dylib -OLDSO=libpng.dylib - -# Utilities: -CC=cc -AR_RC=ar rc -MKDIR_P=mkdir -p -LN_SF=ln -sf -RANLIB=ranlib -RM_F=/bin/rm -f -ARCH=-arch ppc -arch i386 -arch x86_64 - -# CFLAGS=-I$(ZLIBINC) -W -Wall -O3 -funroll-loops -CFLAGS=-I$(ZLIBINC) -W -Wall -O -funroll-loops $(ARCH) -LDFLAGS=-L. -L$(ZLIBLIB) -lpng16 -lz $(ARCH) - -INCPATH=$(prefix)/include -LIBPATH=$(exec_prefix)/lib -MANPATH=$(prefix)/man -BINPATH=$(exec_prefix)/bin - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -DB=$(DESTDIR)$(BINPATH) -DI=$(DESTDIR)$(INCPATH) -DL=$(DESTDIR)$(LIBPATH) -DM=$(DESTDIR)$(MANPATH) - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -OBJSDLL = $(OBJS:.o=.pic.o) - -.SUFFIXES: .c .o .pic.o - -.c.pic.o: - $(CC) -c $(CFLAGS) -fno-common -o $@ $*.c - -all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -libpng.pc: - cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \ - -e s!@exec_prefix@!$(exec_prefix)! \ - -e s!@libdir@!$(LIBPATH)! \ - -e s!@includedir@!$(INCPATH)! \ - -e s!-lpng16!-lpng16\ -lz! > libpng.pc - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo L_opts=\"-L$(LIBPATH)\"; \ - echo libs=\"-lpng16 -lz\"; \ - cat scripts/libpng-config-body.in ) > libpng-config - chmod +x libpng-config - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - -$(LIBSOMAJ): $(OBJSDLL) - $(CC) -dynamiclib \ - -install_name $(LIBPATH)/$(LIBSOMAJ) \ - -current_version 16 -compatibility_version 16 \ - $(ARCH) -o $(LIBSOMAJ) \ - $(OBJSDLL) -L$(ZLIBLIB) -lz - -pngtest: pngtest.o $(LIBSO) - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install-headers: png.h pngconf.h pnglibconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@$(RM_F) $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - chmod 644 $(DL)/$(LIBNAME).a - $(RANLIB) $(DL)/$(LIBNAME).a - -@$(RM_F) $(DL)/libpng.a - (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a) - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(LIBSOMAJ) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSOMAJ) $(DL) - chmod 755 $(DL)/$(LIBSOMAJ) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@$(RM_F) $(DM)/man3/libpng.3 - -@$(RM_F) $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@$(RM_F) $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@$(RM_F) $(DB)/libpng-config - -@$(RM_F) $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - chmod 755 $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -# If you installed in $(DESTDIR), test-installed won't work until you -# move the library to its final location. Use test-dd to test it -# before then. - -test-dd: - echo - echo Testing installed dynamic shared library in $(DL). - $(CC) -I$(DI) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(DL) -L$(ZLIBLIB) \ - -o pngtestd `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtestd pngtest.png - -test-installed: - $(CC) $(CFLAGS) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(ZLIBLIB) \ - -o pngtesti `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtesti pngtest.png - -clean: - $(RM_F) *.o libpng.a pngtest pngout.png libpng-config \ - libpng.pc $(LIBNAME).*dylib pngtesti pnglibconf.h - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o png.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o pngerror.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o pngrio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o pngwio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o pngmem.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o pngset.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o pngget.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o pngread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o pngrtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o pngrutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o pngtrans.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o pngwrite.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o pngwtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o pngwutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o pngpread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.dec b/io2d/src/3rd-party/libpng/scripts/makefile.dec deleted file mode 100644 index 79e3724..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.dec +++ /dev/null @@ -1,202 +0,0 @@ -# makefile for libpng on DEC Alpha Unix -# Copyright (C) 2000-2002, 2006, 2010-2011 Glenn Randers-Pehrson -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Library name: -PNGMAJ = 16 -LIBNAME = libpng16 - -# Shared library names: -LIBSO=$(LIBNAME).so -LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ) -LIBSOREL=$(LIBSOMAJ).$(RELEASE) -OLDSO=libpng.so - -# Utilities: -AR_RC=ar rc -CC=cc -MKDIR_P=mkdir -LN_SF=ln -f -s -RANLIB=ranlib -RM_F=/bin/rm -f - -# where make install puts libpng.a and png.h -prefix=/usr/local -exec_prefix=$(prefix) -INCPATH=$(prefix)/include -LIBPATH=$(exec_prefix)/lib -MANPATH=$(prefix)/man -BINPATH=$(exec_prefix)/bin - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -DB=$(DESTDIR)$(BINPATH) -DI=$(DESTDIR)$(INCPATH) -DL=$(DESTDIR)$(LIBPATH) -DM=$(DESTDIR)$(MANPATH) - -# Where the zlib library and include files are located -#ZLIBLIB=/usr/local/lib -#ZLIBINC=/usr/local/include -ZLIBLIB=../zlib -ZLIBINC=../zlib - -CFLAGS=-std -w1 -I$(ZLIBINC) -O # -g -DPNG_DEBUG=1 -LDFLAGS=-L$(ZLIBLIB) -rpath $(ZLIBLIB) libpng.a -lz -lm - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -all: $(LIBSO) libpng.a pngtest libpng.pc libpng-config - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -libpng.pc: - cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \ - -e s!@exec_prefix@!$(exec_prefix)! \ - -e s!@libdir@!$(LIBPATH)! \ - -e s!@includedir@!$(INCPATH)! \ - -e s!-lpng16!-lpng16\ -lz\ -lm! > libpng.pc - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo ccopts=\"-std\"; \ - echo L_opts=\"-L$(LIBPATH)\"; \ - echo libs=\"-lpng16 -lz -lm\"; \ - cat scripts/libpng-config-body.in ) > libpng-config - chmod +x libpng-config - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - -$(LIBSOMAJ): $(OBJS) - $(CC) -shared -o $@ $(OBJS) -L$(ZLIBLIB) \ - -soname $(LIBSOMAJ) - -pngtest: pngtest.o libpng.a - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install-headers: png.h pngconf.h pnglibconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h $(DI)/$(LIBNAME)/pnglibconf.h - -@/bin/rm -f $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@/bin/rm -f $(DI)/libpng - (cd $(DI); $(LN_SF)(LIBNAME) libpng; $(LN_SF)(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - chmod 644 $(DL)/$(LIBNAME).a - -@/bin/rm -f $(DL)/libpng.a - (cd $(DL); $(LN_SF)(LIBNAME).a libpng.a) - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(LIBSOREL) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSOMAJ) $(DL)/$(LIBSOREL) - chmod 755 $(DL)/$(LIBSOREL) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@/bin/rm -f $(DM)/man3/libpng.3 - -@/bin/rm -f $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@/bin/rm -f $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@/bin/rm -f $(DB)/libpng-config - -@/bin/rm -f $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - chmod 755 $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF)(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -# If you installed in $(DESTDIR), test-installed won't work until you -# move the library to its final location. Use test-dd to test it -# before then. - -test-dd: - echo - echo Testing installed dynamic shared library in $(DL). - $(CC) -w1 -I$(DI) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(DL) -L$(ZLIBLIB) -R$(ZLIBLIB) -R$(DL) \ - -o pngtestd `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtestd pngtest.png - -test-installed: - echo - echo Testing installed dynamic shared library. - $(CC) -w1 -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(ZLIBLIB) -R$(ZLIBLIB) \ - -o pngtesti `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtesti pngtest.png - -clean: - /bin/rm -f *.o libpng.a pngtest pngtesti pngout.png \ - libpng-config $(LIBSO) $(LIBSOMAJ)* \ - libpng.pc pnglibconf.h - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.dj2 b/io2d/src/3rd-party/libpng/scripts/makefile.dj2 deleted file mode 100644 index ad117bc..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.dj2 +++ /dev/null @@ -1,62 +0,0 @@ -# DJGPP (DOS gcc) makefile for libpng -# Copyright (C) 2002, 2006, 2009-2010-2011 Glenn Randers-Pehrson -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# where make install will put libpng.a and png.h -#prefix=/usr/local -prefix=. -INCPATH=$(prefix)/include -LIBPATH=$(prefix)/lib - -CC=gcc -CFLAGS=-I../zlib -O -DPNG_NO_SNPRINTF -LDFLAGS=-L. -L../zlib/ -lpng -lz -lm - -RANLIB=ranlib - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o pngwtran.o \ - pngmem.o pngerror.o pngpread.o - -all: libpng.a pngtest - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -libpng.a: $(OBJS) - ar rc $@ $(OBJS) - $(RANLIB) $@ - -pngtest: pngtest.o libpng.a - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - coff2exe pngtest - -test: pngtest - ./pngtest -clean: - rm -f *.o libpng.a pngtest pngout.png pnglibconf.h - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.elf b/io2d/src/3rd-party/libpng/scripts/makefile.elf deleted file mode 100644 index 15a8ee6..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.elf +++ /dev/null @@ -1,263 +0,0 @@ -# makefile for libpng.a and libpng16.so on Linux ELF with gcc -# Copyright (C) 1998, 1999, 2002, 2006, 2008, 2010-2011 Greg Roelofs -# and Glenn Randers-Pehrson -# Copyright (C) 1996, 1997 Andreas Dilger -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Modified for Debian by Junichi Uekawa and Josselin Mouette -# Major modifications are: -# * link libpng explicitly with libz and libm -# * $(OLDSO).16 is a symlink rather than a different library -# * versioned symbols - -# Library name: -LIBNAME = libpng16 -PNGMAJ = 16 - -# Shared library names: -LIBSO=$(LIBNAME).so -LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ) -LIBSOREL=$(LIBSOMAJ).$(RELEASE) -OLDSO=libpng.so -OLDSOMAJ=libpng.so.16 - -# Utilities: -AR_RC=ar rc -CC=gcc -MKDIR_P=mkdir -p -LN_SF=ln -sf -RANLIB=ranlib -RM_F=/bin/rm -f - -# where "make install" puts libpng16.a, libpng16.so*, -# libpng16/png.h, libpng16/pngconf.h, and libpng16/pnglibconf.h -# Prefix must be a full pathname. -prefix=/usr/local -exec_prefix=$(prefix) - -# Where the zlib library and include files are located. -ZLIBLIB=/usr/local/lib -ZLIBINC=/usr/local/include -# ZLIBLIB=../zlib -# ZLIBINC=../zlib - -ALIGN= -# for i386: -#ALIGN=-malign-loops=2 -malign-functions=2 - -WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \ - -Wmissing-declarations -Wtraditional -Wcast-align \ - -Wstrict-prototypes -Wmissing-prototypes #-Wconversion - -# for pgcc version 2.95.1, -O3 is buggy; don't use it. - -CFLAGS=-W -Wall -D_REENTRANT -O2 \ - $(ALIGN) # $(WARNMORE) -g -DPNG_DEBUG=5 - -LDFLAGS=-L. -lpng16 -LDFLAGS_A=libpng.a -lz -lm -LIBADDFLAGS=-lz -lm - - -INCPATH=$(prefix)/include -LIBPATH=$(exec_prefix)/lib -MANPATH=$(prefix)/man -BINPATH=$(exec_prefix)/bin - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -DB=$(DESTDIR)$(BINPATH) -DI=$(DESTDIR)$(INCPATH) -DL=$(DESTDIR)$(LIBPATH) -DM=$(DESTDIR)$(MANPATH) - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -OBJSDLL = $(OBJS:.o=.pic.o) - -.SUFFIXES: .c .o .pic.o - -.c.pic.o: - $(CC) -c $(CFLAGS) -fPIC -o $@ $*.c - -all: libpng.a $(LIBSO) pngtest pngtest-static libpng.pc libpng-config - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -libpng.pc: - cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \ - -e s!@exec_prefix@!$(exec_prefix)! \ - -e s!@libdir@!$(LIBPATH)! \ - -e s!@includedir@!$(INCPATH)! \ - -e s!-lpng16!-lpng16\ -lz\ -lm! > libpng.pc - -libpng.syms: png.h pngconf.h pnglibconf.h - $(CC) $(CFLAGS) -E -DPNG_BUILDSYMS -DPNG_INTERNAL png.h |\ - awk -F '[\t [\\]();]' -v PNGMAJ=$(PNGMAJ) 'BEGIN{printf("PNG16_%s {global:\n",PNGMAJ)}\ - { for (i=1;i+2<=NF;++i)\ - if ($$(i)=="PNG_FUNCTION_EXPORT" && $$(i+2)=="END")\ - print $$(i+1) ";";\ - for (i=1;i+1<=NF;++i)\ - if ($$(i)=="PNG_DATA_EXPORT")\ - print $$(i+1) ";";}\ - END{print "local: *; };"}' >$@.new - $(RM_F) $@ - mv $@.new $@ - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo L_opts=\"\"; \ - echo R_opts=\"\"; \ - echo libs=\"-lpng16\"; \ - echo all_libs=\"-lpng16 $(LIBADDFLAGS)\"; \ - cat scripts/libpng-config-body.in ) > libpng-config - chmod +x libpng-config - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - -$(LIBSOMAJ): $(OBJSDLL) libpng.syms - $(CC) -shared -Wl,-soname,$(LIBSOMAJ) \ - -Wl,-version-script,libpng.syms \ - -o $(LIBSOMAJ) \ - $(OBJSDLL) - -pngtest: pngtest.o $(LIBSO) - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -pngtest-static: pngtest.o libpng.a - $(CC) -o pngtest-static $(CFLAGS) pngtest.o $(LDFLAGS_A) - -test: pngtest pngtest-static - @echo "" - @echo " Running pngtest dynamically linked with $(LIBSO):" - @echo "" - LD_LIBRARY_PATH=".:${LD_LIBRARY_PATH}" ./pngtest - @echo "" - @echo " Running pngtest statically linked with libpng.a:" - @echo "" - ./pngtest-static - -install-headers: png.h pngconf.h pnglibconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@$(RM_F) $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - chmod 644 $(DL)/$(LIBNAME).a - -@$(RM_F) $(DL)/libpng.a - (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a) - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(LIBSOREL) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSOMAJ) $(DL)/$(LIBSOREL) - chmod 755 $(DL)/$(LIBSOREL) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@$(RM_F) $(DM)/man3/libpng.3 - -@$(RM_F) $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@$(RM_F) $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@$(RM_F) $(DB)/libpng-config - -@$(RM_F) $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - chmod 755 $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -# If you installed in $(DESTDIR), test-installed won't work until you -# move the library to its final location. Use test-dd to test it -# before then. - -test-dd: - echo - echo Testing installed dynamic shared library in $(DL). - $(CC) -I$(DI) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(DL) -L$(ZLIBLIB) -Wl, -rpath,$(DL) -Wl,-rpath,$(ZLIBLIB) \ - -o pngtestd `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtestd pngtest.png - -test-installed: - $(CC) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) \ - -o pngtesti `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtesti pngtest.png - -clean: - $(RM_F) *.o libpng.a libpng.syms pngtest pngout.png libpng-config \ - $(LIBSO) $(LIBSOMAJ)* pngtest-static pngtesti \ - libpng.pc pnglibconf.h - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o png.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o pngerror.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o pngrio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o pngwio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o pngmem.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o pngset.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o pngget.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o pngread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o pngrtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o pngrutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o pngtrans.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o pngwrite.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o pngwtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o pngwutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o pngpread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.freebsd b/io2d/src/3rd-party/libpng/scripts/makefile.freebsd deleted file mode 100644 index 0ddf4ae..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.freebsd +++ /dev/null @@ -1,61 +0,0 @@ -# makefile for libpng under FreeBSD -# Copyright (C) 2002, 2007, 2009 Glenn Randers-Pehrson and Andrey A. Chernov -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -PREFIX?= /usr/local -SHLIB_VER?= 16 - -LIB= png -SHLIB_MAJOR= ${SHLIB_VER} -SHLIB_MINOR= 0 -NO_PROFILE= YES -NO_OBJ= YES - -# where make install puts libpng.a and png.h -DESTDIR= ${PREFIX} -LIBDIR= /lib -INCS= png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -INCSDIR= /include/libpng -INCDIR= ${INCSDIR} # for 4.x bsd.lib.mk -MAN= libpng.3 libpngpf.3 png.5 -MANDIR= /man/man -SYMLINKS= libpng/png.h ${INCSDIR}/../png.h \ - libpng/pngconf.h ${INCSDIR}/../pngconf.h \ - libpng/pnglibconf.h ${INCSDIR}/../pnglibconf.h - -# where make install finds libz.a and zlib.h -ZLIBLIB= /usr/lib -ZLIBINC= /usr/include - -LDADD+= -lm -lz -#LDADD+= -lm -lz -lssp_nonshared # for OSVERSION < 800000 ? - -DPADD+= ${LIBM} ${LIBZ} - -CFLAGS+= -I. -I${ZLIBINC} - -SRCS= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \ - pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \ - pngwtran.c pngmem.c pngerror.c pngpread.c - -pngtest: pngtest.o libpng.a - ${CC} ${CFLAGS} -L. -static -o pngtest pngtest.o -L${ZLIBLIB} \ - -lpng ${LDADD} - -CLEANFILES= pngtest pngtest.o pngout.png - -test: pngtest - ./pngtest - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -.include diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.gcc b/io2d/src/3rd-party/libpng/scripts/makefile.gcc deleted file mode 100644 index 78faa63..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.gcc +++ /dev/null @@ -1,87 +0,0 @@ -# makefile for libpng using gcc (generic, static library) -# Copyright (C) 2008 Glenn Randers-Pehrson -# Copyright (C) 2000 Cosmin Truta -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Location of the zlib library and include files -ZLIBINC = ../zlib -ZLIBLIB = ../zlib - -# Compiler, linker, lib and other tools -CC = gcc -LD = $(CC) -AR_RC = ar rcs -RANLIB = ranlib -RM_F = rm -f - -CDEBUG = -g -DPNG_DEBUG=5 -LDDEBUG = -CRELEASE = -O2 -LDRELEASE = -s -#CFLAGS = -W -Wall $(CDEBUG) -CFLAGS = -W -Wall $(CRELEASE) -#LDFLAGS = $(LDDEBUG) -LDFLAGS = $(LDRELEASE) -LIBS = -lz -lm - -# File extensions -O=.o -A=.a -EXE= - -# Variables -OBJS = png$(O) pngerror$(O) pngget$(O) pngmem$(O) pngpread$(O) \ - pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) pngset$(O) \ - pngtrans$(O) pngwio$(O) pngwrite$(O) pngwtran$(O) pngwutil$(O) - -# Targets -all: static - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -.c$(O): - $(CC) -c $(CFLAGS) -I$(ZLIBINC) $< - -static: libpng$(A) pngtest$(EXE) - -shared: - @echo This is a generic makefile that cannot create shared libraries. - @echo Please use a configuration that is specific to your platform. - @false - -libpng$(A): $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -test: pngtest$(EXE) - ./pngtest$(EXE) - -pngtest$(EXE): pngtest$(O) libpng$(A) - $(LD) $(LDFLAGS) -L$(ZLIBLIB) -o $@ pngtest$(O) libpng$(A) $(LIBS) - -clean: - $(RM_F) *$(O) libpng$(A) pngtest$(EXE) pngout.png pnglibconf.h - -png$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest$(O): png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.hp64 b/io2d/src/3rd-party/libpng/scripts/makefile.hp64 deleted file mode 100644 index bf51962..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.hp64 +++ /dev/null @@ -1,224 +0,0 @@ -# makefile for libpng, HPUX (10.20 and 11.00) using the ANSI/C product. -# Copyright (C) 1999-2002, 2006, 2009, 2010-2011 Glenn Randers-Pehrson -# Copyright (C) 1995 Guy Eric Schalnat, Group 42 -# contributed by Jim Rice and updated by Chris Schleicher, Hewlett Packard -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Where the zlib library and include files are located -ZLIBLIB=/opt/zlib/lib -ZLIBINC=/opt/zlib/include - -# Note that if you plan to build a libpng shared library, zlib must also -# be a shared library, which zlib's configure does not do. After running -# zlib's configure, edit the appropriate lines of makefile to read: -# CFLAGS=-O1 -DHAVE_UNISTD -DUSE_MAP -fPIC \ -# LDSHARED=ld -b -# SHAREDLIB=libz.sl - -# Library name: -LIBNAME = libpng16 -PNGMAJ = 16 - -# Shared library names: -LIBSO=$(LIBNAME).sl -LIBSOMAJ=$(LIBNAME).sl.$(PNGMAJ) -LIBSOREL=$(LIBSOMAJ).$(RELEASE) -OLDSO=libpng.sl - -# Utilities: -AR_RC=ar rc -CC=cc -MKDIR_P=mkdir -p -LN_SF=ln -sf -RANLIB=ranlib -RM_F=/bin/rm -f - -CFLAGS=-I$(ZLIBINC) -O -Ae -Wl,+vnocompatwarnings +DD64 \ --D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +Z -DHAVE_UNISTD_H -DUSE_MMAP -# Caution: be sure you have built zlib with the same CFLAGS. -CCFLAGS=-I$(ZLIBINC) -O -Ae -Wl,+vnocompatwarnings +DD64 \ --D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +Z -DHAVE_UNISTD_H -DUSE_MMAP - -LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm - -# where make install puts libpng.a, libpng16.sl, and png.h -prefix=/opt/libpng -exec_prefix=$(prefix) -INCPATH=$(prefix)/include -LIBPATH=$(exec_prefix)/lib -MANPATH=$(prefix)/man -BINPATH=$(exec_prefix)/bin - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -DB=$(DESTDIR)$(BINPATH) -DI=$(DESTDIR)$(INCPATH) -DL=$(DESTDIR)$(LIBPATH) -DM=$(DESTDIR)$(MANPATH) - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -OBJSDLL = $(OBJS:.o=.pic.o) - -.SUFFIXES: .c .o .pic.o - -.c.pic.o: - $(CC) -c $(CFLAGS) +z -o $@ $*.c - -all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -libpng.pc: - cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \ - -e s!@exec_prefix@!$(exec_prefix)! \ - -e s!@libdir@!$(LIBPATH)! \ - -e s!@includedir@!$(INCPATH)! \ - -e s!-lpng16!-lpng16\ -lz\ -lm! > libpng.pc - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo ccopts=\"-Ae +DA1.1 +DS2.0\"; \ - echo L_opts=\"-L$(LIBPATH)\"; \ - echo libs=\"-lpng16 -lz -lm\"; \ - cat scripts/libpng-config-body.in ) > libpng-config - chmod +x libpng-config - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - -$(LIBSOMAJ): $(OBJSDLL) - $(LD) -b +s \ - +h $(LIBSOMAJ) -o $(LIBSOMAJ) $(OBJSDLL) - -pngtest: pngtest.o libpng.a - $(CC) -o pngtest $(CCFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install-headers: png.h pngconf.h pnglibconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@$(RM_F) $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - chmod 644 $(DL)/$(LIBNAME).a - -@$(RM_F) $(DL)/libpng.a - (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a) - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(LIBSOREL) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSOMAJ) $(DL)/$(LIBSOREL) - chmod 755 $(DL)/$(LIBSOREL) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@$(RM_F) $(DM)/man3/libpng.3 - -@$(RM_F) $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@$(RM_F) $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@$(RM_F) $(DB)/libpng-config - -@$(RM_F) $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - chmod 755 $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -# If you installed in $(DESTDIR), test-installed won't work until you -# move the library to its final location. Use test-dd to test it -# before then. - -test-dd: - echo - echo Testing installed dynamic shared library in $(DL). - $(CC) -I$(DI) -I$(ZLIBINC) $(CCFLAGS) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(DL) -L$(ZLIBLIB) \ - -o pngtestd `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtestd pngtest.png - -test-installed: - echo - echo Testing installed dynamic shared library. - $(CC) $(CCFLAGS) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(ZLIBLIB) \ - -o pngtesti `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtesti pngtest.png - -clean: - $(RM_F) *.o libpng.a pngtest pngtesti pngout.png \ - libpng-config $(LIBSO) $(LIBSOMAJ)* \ - libpng.pc pnglibconf.h - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.hpgcc b/io2d/src/3rd-party/libpng/scripts/makefile.hpgcc deleted file mode 100644 index bf44d22..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.hpgcc +++ /dev/null @@ -1,230 +0,0 @@ -# makefile for libpng on HP-UX using GCC with the HP ANSI/C linker. -# Copyright (C) 2002, 2006-2008, 2010-2011 Glenn Randers-Pehrson -# Copyright (C) 2001, Laurent faillie -# Copyright (C) 1998, 1999 Greg Roelofs -# Copyright (C) 1996, 1997 Andreas Dilger -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Library name: -LIBNAME = libpng16 -PNGMAJ = 16 - -# Shared library names: -LIBSO=$(LIBNAME).sl -LIBSOMAJ=$(LIBNAME).sl.$(PNGMAJ) -LIBSOREL=$(LIBSOMAJ).$(RELEASE) -OLDSO=libpng.sl - -# Utilities: -CC=gcc -LD=ld -AR_RC=ar rc -MKDIR_P=mkdir -p -LN_SF=ln -sf -RANLIB=ranlib -RM_F=/bin/rm -f - -# where "make install" puts libpng.a, $(OLDSO)*, png.h, pngconf.h -# and pnglibconf.h -prefix=/usr/local -exec_prefix=$(prefix) - -# Where the zlib library and include files are located -ZLIBLIB=/opt/zlib/lib -ZLIBINC=/opt/zlib/include - -# Note that if you plan to build a libpng shared library, zlib must also -# be a shared library, which zlib's configure does not do. After running -# zlib's configure, edit the appropriate lines of makefile to read: -# CFLAGS=-O1 -DHAVE_UNISTD -DUSE_MAP -fPIC \ -# LDSHARED=ld -b -# SHAREDLIB=libz.sl - -ALIGN= -# for i386: -#ALIGN=-malign-loops=2 -malign-functions=2 - -WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \ - -Wmissing-declarations -Wtraditional -Wcast-align \ - -Wstrict-prototypes -Wmissing-prototypes #-Wconversion - -# for pgcc version 2.95.1, -O3 is buggy; don't use it. - -CFLAGS=-I$(ZLIBINC) -W -Wall -O3 -funroll-loops -DPNG_NO_MMX_CODE \ - $(ALIGN) # $(WARNMORE) -g -DPNG_DEBUG=5 -#LDFLAGS=-L. -Wl,-rpath,. -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) -lpng16 -lz -lm -LDFLAGS=-L. -L$(ZLIBLIB) -lpng16 -lz -lm - -INCPATH=$(prefix)/include -LIBPATH=$(exec_prefix)/lib -MANPATH=$(prefix)/man -BINPATH=$(exec_prefix)/bin - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -DB=$(DESTDIR)$(BINPATH) -DI=$(DESTDIR)$(INCPATH) -DL=$(DESTDIR)$(LIBPATH) -DM=$(DESTDIR)$(MANPATH) - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -OBJSDLL = $(OBJS:.o=.pic.o) - -.SUFFIXES: .c .o .pic.o - -.c.pic.o: - $(CC) -c $(CFLAGS) -fPIC -o $@ $*.c - -all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -libpng.pc: - cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \ - -e s!@exec_prefix@!$(exec_prefix)! \ - -e s!@libdir@!$(LIBPATH)! \ - -e s!@includedir@!$(INCPATH)! \ - -e s!-lpng16!-lpng16\ -lz\ -lm! > libpng.pc - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo libs=\"-lpng16 -lz -lm\"; \ - cat scripts/libpng-config-body.in ) > libpng-config - chmod +x libpng-config - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - -$(LIBSOMAJ): $(OBJSDLL) - $(LD) -b +s \ - +h $(LIBSOMAJ) -o $(LIBSOMAJ) $(OBJSDLL) - -pngtest: pngtest.o $(LIBSO) - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - - -install-headers: png.h pngconf.h pnglibconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@$(RM_F) $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - chmod 644 $(DL)/$(LIBNAME).a - -@$(RM_F) $(DL)/libpng.a - (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a) - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(LIBSOREL) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSOMAJ) $(DL)/$(LIBSOREL) - chmod 755 $(DL)/$(LIBSOREL) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@$(RM_F) $(DM)/man3/libpng.3 - -@$(RM_F) $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@$(RM_F) $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@$(RM_F) $(DB)/libpng-config - -@$(RM_F) $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - chmod 755 $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -# If you installed in $(DESTDIR), test-installed won't work until you -# move the library to its final location. Use test-dd to test it -# before then. - -test-dd: - echo - echo Testing installed dynamic shared library in $(DL). - $(CC) -I$(DI) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(DL) -L$(ZLIBLIB) -Wl,-rpath,$(DL) -Wl,-rpath,$(ZLIBLIB) \ - -o pngtestd `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtestd pngtest.png - -test-installed: - echo - echo Testing installed dynamic shared library. - $(CC) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) \ - -o pngtesti `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtesti pngtest.png - -clean: - $(RM_F) *.o libpng.a pngtest pngtesti pngout.png \ - libpng-config $(LIBSO) $(LIBSOMAJ)* \ - libpng.pc pnglibconf.h - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o png.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o pngerror.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o pngrio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o pngwio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o pngmem.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o pngset.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o pngget.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o pngread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o pngrtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o pngrutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o pngtrans.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o pngwrite.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o pngwtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o pngwutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o pngpread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.hpux b/io2d/src/3rd-party/libpng/scripts/makefile.hpux deleted file mode 100644 index 1c2970b..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.hpux +++ /dev/null @@ -1,221 +0,0 @@ -# makefile for libpng, HPUX (10.20 and 11.00) using the ANSI/C product. -# Copyright (C) 1999-2002, 2006, 2010-2011 Glenn Randers-Pehrson -# Copyright (C) 1995 Guy Eric Schalnat, Group 42 -# contributed by Jim Rice and updated by Chris Schleicher, Hewlett Packard -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Where the zlib library and include files are located -ZLIBLIB=/opt/zlib/lib -ZLIBINC=/opt/zlib/include - -# Note that if you plan to build a libpng shared library, zlib must also -# be a shared library, which zlib's configure does not do. After running -# zlib's configure, edit the appropriate lines of makefile to read: -# CFLAGS=-O1 -DHAVE_UNISTD -DUSE_MAP -fPIC \ -# LDSHARED=ld -b -# SHAREDLIB=libz.sl - -# Library name: -LIBNAME = libpng16 -PNGMAJ = 16 - -# Shared library names: -LIBSO=$(LIBNAME).sl -LIBSOMAJ=$(LIBNAME).sl.$(PNGMAJ) -LIBSOREL=$(LIBSOMAJ).$(RELEASE) -OLDSO=libpng.sl - -# Utilities: -AR_RC=ar rc -CC=cc -MKDIR_P=mkdir -p -LN_SF=ln -sf -RANLIB=ranlib -RM_F=/bin/rm -f - -# where make install puts libpng.a, libpng16.sl, and png.h -prefix=/opt/libpng -exec_prefix=$(prefix) -INCPATH=$(prefix)/include -LIBPATH=$(exec_prefix)/lib -MANPATH=$(prefix)/man -BINPATH=$(exec_prefix)/bin - -CFLAGS=-I$(ZLIBINC) -O -Ae +DA1.1 +DS2.0 -# Caution: be sure you have built zlib with the same CFLAGS. -CCFLAGS=-I$(ZLIBINC) -O -Ae +DA1.1 +DS2.0 -LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -DB=$(DESTDIR)$(BINPATH) -DI=$(DESTDIR)$(INCPATH) -DL=$(DESTDIR)$(LIBPATH) -DM=$(DESTDIR)$(MANPATH) - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -OBJSDLL = $(OBJS:.o=.pic.o) - -.SUFFIXES: .c .o .pic.o - -.c.pic.o: - $(CC) -c $(CFLAGS) +z -o $@ $*.c - -all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -libpng.pc: - cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \ - -e s!@exec_prefix@!$(exec_prefix)! \ - -e s!@libdir@!$(LIBPATH)! \ - -e s!@includedir@!$(INCPATH)! \ - -e s!-lpng16!-lpng16\ -lz\ -lm! > libpng.pc - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo ccopts=\"-Ae +DA1.1 +DS2.0\"; \ - echo L_opts=\"-L$(LIBPATH)\"; \ - echo libs=\"-lpng16 -lz -lm\"; \ - cat scripts/libpng-config-body.in ) > libpng-config - chmod +x libpng-config - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - -$(LIBSOMAJ): $(OBJSDLL) - $(LD) -b +s \ - +h $(LIBSOMAJ) -o $(LIBSOMAJ) $(OBJSDLL) - -pngtest: pngtest.o libpng.a - $(CC) -o pngtest $(CCFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install-headers: png.h pngconf.h pnglibconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@$(RM_F) $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - chmod 644 $(DL)/$(LIBNAME).a - -@$(RM_F) $(DL)/libpng.a - (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a) - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(LIBSOREL) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSOMAJ) $(DL)/$(LIBSOREL) - chmod 755 $(DL)/$(LIBSOREL) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@$(RM_F) $(DM)/man3/libpng.3 - -@$(RM_F) $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@$(RM_F) $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@$(RM_F) $(DB)/libpng-config - -@$(RM_F) $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - chmod 755 $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -# If you installed in $(DESTDIR), test-installed won't work until you -# move the library to its final location. Use test-dd to test it -# before then. - -test-dd: - echo - echo Testing installed dynamic shared library in $(DL). - $(CC) -I$(DI) -I$(ZLIBINC) $(CCFLAGS) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(DL) -L$(ZLIBLIB) \ - -o pngtestd `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtestd pngtest.png - -test-installed: - echo - echo Testing installed dynamic shared library. - $(CC) $(CCFLAGS) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(ZLIBLIB) \ - -o pngtesti `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtesti pngtest.png - -clean: - $(RM_F) *.o libpng.a pngtest pngtesti pngout.png \ - libpng-config $(LIBSO) $(LIBSOMAJ)* \ - libpng.pc pnglibconf.h - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.ibmc b/io2d/src/3rd-party/libpng/scripts/makefile.ibmc deleted file mode 100644 index a19090d..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.ibmc +++ /dev/null @@ -1,82 +0,0 @@ -# Makefile for libpng (static) -# IBM C version 3.x for Win32 and OS/2 -# Copyright (C) 2006 Glenn Randers-Pehrson -# Copyright (C) 2000 Cosmin Truta -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h -# -# Notes: -# Derived from makefile.std -# All modules are compiled in C mode -# Tested under Win32, expected to work under OS/2 -# Can be easily adapted for IBM VisualAge/C++ for AIX - -# Location of the zlib library and include files -ZLIBINC = ../zlib -ZLIBLIB = ../zlib - -# Compiler, linker, lib and other tools -CC = icc -LD = ilink -AR = ilib -RM = del - -CFLAGS = -I$(ZLIBINC) -Mc -O2 -W3 -LDFLAGS = - -# File extensions -O=.obj -A=.lib -E=.exe - -# Variables -OBJS = png$(O) pngerror$(O) pngget$(O) pngmem$(O) pngpread$(O) \ - pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) pngset$(O) \ - pngtrans$(O) pngwio$(O) pngwrite$(O) pngwtran$(O) pngwutil$(O) - -LIBS = libpng$(A) $(ZLIBLIB)/zlib$(A) - -# Targets -all: libpng$(A) pngtest$(E) - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -libpng$(A): $(OBJS) - $(AR) -out:$@ $(OBJS) - -test: pngtest$(E) - pngtest$(E) - -pngtest: pngtest$(E) - -pngtest$(E): pngtest$(O) libpng$(A) - $(LD) $(LDFLAGS) pngtest$(O) $(LIBS) - -clean: - $(RM) *$(O) - $(RM) libpng$(A) - $(RM) pnglibconf.h - $(RM) pngtest$(E) - $(RM) pngout.png - -png$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest$(O): png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.intel b/io2d/src/3rd-party/libpng/scripts/makefile.intel deleted file mode 100644 index 3a45014..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.intel +++ /dev/null @@ -1,110 +0,0 @@ -# Makefile for libpng -# Microsoft Visual C++ with Intel C/C++ Compiler 4.0 and later - -# Copyright (C) 2006 Glenn Randers-Pehrson -# Copyright (C) 2000, Pawel Mrochen, based on makefile.msc which is -# copyright 1995 Guy Eric Schalnat, Group 42, Inc. -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h -# -# To use, do "nmake /f scripts\makefile.intel" -# -# ------------------- Intel C/C++ Compiler 4.0 and later ------------------- - -# Where the zlib library and include files are located -ZLIBLIB=..\zlib -ZLIBINC=..\zlib - -# Target CPU -CPU=6 # Pentium II -#CPU=5 # Pentium - -# Calling convention -CALLING=r # __fastcall -#CALLING=z # __stdcall -#CALLING=d # __cdecl - -# Uncomment next to put error messages in a file -#ERRFILE=>>pngerrs - -# -------------------------------------------------------------------------- - -CC=icl -c -CFLAGS=-O2 -G$(CPU)$(CALLING) -Qip -Qunroll4 -I$(ZLIBINC) -nologo -LD=link -LDFLAGS=/SUBSYSTEM:CONSOLE /NOLOGO - -O=.obj - -OBJS=png$(O) pngset$(O) pngget$(O) pngrutil$(O) pngtrans$(O) pngwutil$(O) \ -pngmem$(O) pngpread$(O) pngread$(O) pngerror$(O) pngwrite$(O) \ -pngrtran$(O) pngwtran$(O) pngrio$(O) pngwio$(O) - -all: test - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -png$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngset$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngget$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngpread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngrtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngrutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngerror$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngmem$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngrio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngwio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngtrans$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngwrite$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngwtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngwutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -libpng.lib: $(OBJS) - if exist libpng.lib del libpng.lib - lib /NOLOGO /OUT:libpng.lib $(OBJS) - -pngtest.exe: pngtest.obj libpng.lib - $(LD) $(LDFLAGS) /OUT:pngtest.exe pngtest.obj libpng.lib $(ZLIBLIB)\zlib.lib - -pngtest$(O): png.h pngconf.h pnglibconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -test: pngtest.exe - pngtest.exe - - -# End of makefile for libpng diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.knr b/io2d/src/3rd-party/libpng/scripts/makefile.knr deleted file mode 100644 index e2d2d4e..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.knr +++ /dev/null @@ -1,109 +0,0 @@ -# makefile for libpng -# Copyright (C) 2002, 2006, 2009 Glenn Randers-Pehrson -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h -# -# This makefile requires the file ansi2knr.c, which you can get -# from the Ghostscript ftp site at ftp://ftp.cs.wisc.edu/ghost/ -# If you have libjpeg, you probably already have ansi2knr.c in the jpeg -# source distribution. - -# where make install puts libpng.a and png.h -prefix=/usr/local -INCPATH=$(prefix)/include -LIBPATH=$(prefix)/lib - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -CC=cc -CFLAGS=-I../zlib -O -LDFLAGS=-L. -L../zlib/ -lpng -lz -lm -# flags for ansi2knr -ANSI2KNRFLAGS= - -RANLIB=ranlib -#RANLIB=echo - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -all: ansi2knr libpng.a pngtest - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -# general rule to allow ansi2knr to work -.c.o: - ./ansi2knr $*.c T$*.c - $(CC) $(CFLAGS) -c T$*.c - rm -f T$*.c $*.o - mv T$*.o $*.o - -ansi2knr: ansi2knr.c - $(CC) $(CFLAGS) $(ANSI2KNRFLAGS) -o ansi2knr ansi2knr.c - -libpng.a: ansi2knr $(OBJS) - ar rc $@ $(OBJS) - $(RANLIB) $@ - -pngtest: pngtest.o libpng.a - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install: libpng.a png.h pngconf.h pnglibconf.h - -@mkdir $(DESTDIR)$(INCPATH) - -@mkdir $(DESTDIR)$(INCPATH)/libpng - -@mkdir $(DESTDIR)$(LIBPATH) - -@rm -f $(DESTDIR)$(INCPATH)/png.h - -@rm -f $(DESTDIR)$(INCPATH)/pngconf.h - cp png.h $(DESTDIR)$(INCPATH)/libpng - cp pngconf.h $(DESTDIR)$(INCPATH)/libpng - cp pnglibconf.h $(DESTDIR)$(INCPATH)/libpng - chmod 644 $(DESTDIR)$(INCPATH)/libpng/png.h - chmod 644 $(DESTDIR)$(INCPATH)/libpng/pngconf.h - chmod 644 $(DESTDIR)$(INCPATH)/libpng/pnglibconf.h - (cd $(DESTDIR)$(INCPATH); ln -f -s libpng/* .) - cp libpng.a $(DESTDIR)$(LIBPATH) - chmod 644 $(DESTDIR)$(LIBPATH)/libpng.a - -clean: - rm -f *.o libpng.a pngtest pngout.png ansi2knr pnglibconf.h - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.linux b/io2d/src/3rd-party/libpng/scripts/makefile.linux deleted file mode 100644 index 87ae0e5..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.linux +++ /dev/null @@ -1,239 +0,0 @@ -# makefile for libpng.a and libpng16.so on Linux ELF with gcc -# Copyright (C) 1998, 1999, 2002, 2006, 2008, 2010-2011 Greg Roelofs and -# Glenn Randers-Pehrson -# Copyright (C) 1996, 1997 Andreas Dilger -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Library name: -LIBNAME = libpng16 -PNGMAJ = 16 -RELEASE = 8 - -# Shared library names: -LIBSO=$(LIBNAME).so -LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ) -LIBSOREL=$(LIBSOMAJ).$(RELEASE) -OLDSO=libpng.so - -# Utilities: -AR_RC=ar rc -CC=gcc -MKDIR_P=mkdir -p -LN_SF=ln -sf -RANLIB=ranlib -RM_F=/bin/rm -f - -# where "make install" puts libpng16.a, libpng16.so*, -# libpng16/png.h, libpng16/pngconf.h, and libpng16/pnglibconf.h -# Prefix must be a full pathname. -prefix=/usr/local -exec_prefix=$(prefix) - -# Where the zlib library and include files are located. -#ZLIBLIB=/usr/local/lib -#ZLIBINC=/usr/local/include -ZLIBLIB=../zlib -ZLIBINC=../zlib - -ALIGN= -# for i386: -#ALIGN=-malign-loops=2 -malign-functions=2 - -WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \ - -Wmissing-declarations -Wtraditional -Wcast-align \ - -Wstrict-prototypes -Wmissing-prototypes #-Wconversion - -# for pgcc version 2.95.1, -O3 is buggy; don't use it. - -CFLAGS=-I$(ZLIBINC) -W -Wall -O3 -funroll-loops \ - $(ALIGN) # $(WARNMORE) -g -DPNG_DEBUG=5 - -LDFLAGS=-L. -Wl,-rpath,. -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) -lpng16 -lz -lm -LDFLAGS_A=-L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) libpng.a -lz -lm - -INCPATH=$(prefix)/include -LIBPATH=$(exec_prefix)/lib -MANPATH=$(prefix)/man -BINPATH=$(exec_prefix)/bin - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -DB=$(DESTDIR)$(BINPATH) -DI=$(DESTDIR)$(INCPATH) -DL=$(DESTDIR)$(LIBPATH) -DM=$(DESTDIR)$(MANPATH) - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -OBJSDLL = $(OBJS:.o=.pic.o) - -.SUFFIXES: .c .o .pic.o - -.c.pic.o: - $(CC) -c $(CFLAGS) -fPIC -o $@ $*.c - -all: libpng.a $(LIBSO) pngtest pngtest-static libpng.pc libpng-config - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -libpng.pc: - cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \ - -e s!@exec_prefix@!$(exec_prefix)! \ - -e s!@libdir@!$(LIBPATH)! \ - -e s!@includedir@!$(INCPATH)! \ - -e s!-lpng16!-lpng16\ -lz\ -lm! > libpng.pc - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo L_opts=\"-L$(LIBPATH)\"; \ - echo R_opts=\"-Wl,-rpath,$(LIBPATH)\"; \ - echo libs=\"-lpng16 -lz -lm\"; \ - cat scripts/libpng-config-body.in ) > libpng-config - chmod +x libpng-config - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - -$(LIBSOMAJ): $(OBJSDLL) - $(CC) -shared -Wl,-soname,$(LIBSOMAJ) -o $(LIBSOMAJ) $(OBJSDLL) - -pngtest: pngtest.o $(LIBSO) - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -pngtest-static: pngtest.o libpng.a - $(CC) -o pngtest-static $(CFLAGS) pngtest.o $(LDFLAGS_A) - -test: pngtest pngtest-static - @echo "" - @echo " Running pngtest dynamically linked with $(LIBSO):" - @echo "" - ./pngtest - @echo "" - @echo " Running pngtest statically linked with libpng.a:" - @echo "" - ./pngtest-static - -install-headers: png.h pngconf.h pnglibconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@$(RM_F) $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - chmod 644 $(DL)/$(LIBNAME).a - -@$(RM_F) $(DL)/libpng.a - (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a) - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(LIBSOREL) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSOMAJ) $(DL)/$(LIBSOREL) - chmod 755 $(DL)/$(LIBSOREL) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@$(RM_F) $(DM)/man3/libpng.3 - -@$(RM_F) $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@$(RM_F) $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@$(RM_F) $(DB)/libpng-config - -@$(RM_F) $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - chmod 755 $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -# If you installed in $(DESTDIR), test-installed won't work until you -# move the library to its final location. Use test-dd to test it -# before then. - -test-dd: - echo - echo Testing installed dynamic shared library in $(DL). - $(CC) -I$(DI) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(DL) -L$(ZLIBLIB) -Wl, -rpath,$(DL) -Wl,-rpath,$(ZLIBLIB) \ - -o pngtestd `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtestd pngtest.png - -test-installed: - $(CC) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) \ - -o pngtesti `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtesti pngtest.png - -clean: - $(RM_F) *.o libpng.a pngtest pngout.png libpng-config \ - $(LIBSO) $(LIBSOMAJ)* pngtest-static pngtesti \ - libpng.pc pnglibconf.h - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o png.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o pngerror.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o pngrio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o pngwio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o pngmem.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o pngset.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o pngget.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o pngread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o pngrtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o pngrutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o pngtrans.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o pngwrite.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o pngwtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o pngwutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o pngpread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.mips b/io2d/src/3rd-party/libpng/scripts/makefile.mips deleted file mode 100644 index d6a5cc3..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.mips +++ /dev/null @@ -1,94 +0,0 @@ -# makefile for libpng -# Copyright (C) Glenn Randers-Pehrson -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# where make install puts libpng.a and png.h -prefix=/usr/local -INCPATH=$(prefix)/include -LIBPATH=$(prefix)/lib - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -CC=cc -CFLAGS=-I../zlib -O -systype sysv -DSYSV -w -Dmips -#CFLAGS=-O -LDFLAGS=-L. -L../zlib/ -lpng -lz -lm - -#RANLIB=ranlib -RANLIB=echo - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -all: libpng.a pngtest - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -libpng.a: $(OBJS) - ar rc $@ $(OBJS) - $(RANLIB) $@ - -pngtest: pngtest.o libpng.a - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install: libpng.a - -@mkdir $(DESTDIR)$(INCPATH) - -@mkdir $(DESTDIR)$(INCPATH)/libpng - -@mkdir $(DESTDIR)$(LIBPATH) - -@rm -f $(DESTDIR)$(INCPATH)/png.h - -@rm -f $(DESTDIR)$(INCPATH)/pngconf.h - -@rm -f $(DESTDIR)$(INCPATH)/pnglibconf.h - cp png.h $(DESTDIR)$(INCPATH)/libpng - cp pngconf.h $(DESTDIR)$(INCPATH)/libpng - cp pnglibconf.h $(DESTDIR)$(INCPATH)/libpng - chmod 644 $(DESTDIR)$(INCPATH)/libpng/png.h - chmod 644 $(DESTDIR)$(INCPATH)/libpng/pngconf.h - chmod 644 $(DESTDIR)$(INCPATH)/libpng/pnglibconf.h - (cd $(DESTDIR)$(INCPATH); ln -f -s libpng/* .) - cp libpng.a $(DESTDIR)$(LIBPATH) - chmod 644 $(DESTDIR)$(LIBPATH)/libpng.a - -clean: - rm -f *.o libpng.a pngtest pngout.png pnglibconf.h - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.msc b/io2d/src/3rd-party/libpng/scripts/makefile.msc deleted file mode 100644 index e3ad73e..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.msc +++ /dev/null @@ -1,95 +0,0 @@ -# makefile for libpng -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# Copyright (C) 2006, 2009 Glenn Randers-Pehrson -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h -# -# Assumes that zlib.lib, zconf.h, and zlib.h have been copied to ..\zlib - -# -------- Microsoft C 5.1 and later, does not use assembler code -------- -MODEL=L -CFLAGS=-Oait -Gs -nologo -W3 -A$(MODEL) -I..\zlib -#-Ox generates bad code with MSC 5.1 -CC=cl -LD=link -LDFLAGS=/e/st:0x1500/noe -O=.obj - -#uncomment next to put error messages in a file -ERRFILE= >> pngerrs - -# variables -OBJS1 = png$(O) pngset$(O) pngget$(O) pngrutil$(O) pngtrans$(O) pngwutil$(O) -OBJS2 = pngmem$(O) pngpread$(O) pngread$(O) pngerror$(O) pngwrite$(O) -OBJS3 = pngrtran$(O) pngwtran$(O) pngrio$(O) pngwio$(O) - -all: libpng.lib - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -png$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngset$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngget$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngpread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngrtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngrutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngerror$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngmem$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngrio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngwio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngtrans$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngwrite$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngwtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngwutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -libpng.lib: $(OBJS1) $(OBJS2) $(OBJS3) - del libpng.lib - lib libpng $(OBJS1); - lib libpng $(OBJS2); - lib libpng $(OBJS3); - -pngtest$(O): png.h pngconf.h pnglibconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngtest.exe: pngtest.obj libpng.lib - $(LD) $(LDFLAGS) pngtest.obj,,,libpng.lib ..\zlib\zlib.lib ; - -test: pngtest.exe - pngtest - -# End of makefile for libpng - diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.msys b/io2d/src/3rd-party/libpng/scripts/makefile.msys deleted file mode 100644 index 98e2677..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.msys +++ /dev/null @@ -1,204 +0,0 @@ -# makefile for libpng using MSYS/gcc (shared, static library) -# Copyright (C) 2012 Glenn Randers-Pehrson and Christopher M. Wheeler -# -# Portions taken from makefile.linux: -# Copyright (C) 1998, 1999, 2002, 2006, 2008, 2010-2011 Greg Roelofs and -# Glenn Randers-Pehrson -# Copyright (C) 2000 Cosmin Truta -# Copyright (C) 1996, 1997 Andreas Dilger -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h -# # # # # # # # # # # # # # # # # -prefix=/usr/local -exec_prefix=$(prefix) - -# Library name: -LIBNAME = libpng16 -PNGMAJ = 16 -RELEASE = 8 - -# Shared library names: -LIBSO=$(LIBNAME).dll -LIBSOMAJ=$(LIBNAME).dll.$(PNGMAJ) -LIBSOREL=$(PNGMAJ).$(RELEASE) -OLDSO=libpng.dll - -# Where the zlib library and include files are located. -#ZLIBLIB=../zlib -#ZLIBINC=../zlib -ZLIBLIB=/usr/local/lib -ZLIBINC=/usr/local/include - -# Compiler, linker, lib and other tools -CC = gcc -LD = $(CC) -AR_RC = ar rcs -RANLIB = ranlib -RM_F = rm -rf -MKDIR_P=mkdir -p -LN_SF=ln -sf - -#ARCH = -march=pentium3 -#ARCH = -march=i686 -ARCH = -CDEBUG = -g -DPNG_DEBUG=5 -LDDEBUG = -CRELEASE = -O2 -LDRELEASE = -s -#CFLAGS = -W -Wall $(CDEBUG) -CFLAGS = -W -Wall $(CRELEASE) $(ARCH) -#LDFLAGS = $(LDDEBUG) -LDFLAGS = $(LDRELEASE) -LIBS = -lz -lm - -# File extensions -O=.o -A=.a -EXE=.exe - -INCPATH=$(prefix)/include -LIBPATH=$(exec_prefix)/lib -MANPATH=$(prefix)/man -BINPATH=$(exec_prefix)/bin - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. - -DESTDIR= - -DB=$(DESTDIR)$(BINPATH) -DI=$(DESTDIR)$(INCPATH) -DL=$(DESTDIR)$(LIBPATH) -DM=$(DESTDIR)$(MANPATH) - -# Variables -OBJS = png$(O) pngerror$(O) pngget$(O) pngmem$(O) pngpread$(O) \ - pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) pngset$(O) \ - pngtrans$(O) pngwio$(O) pngwrite$(O) pngwtran$(O) pngwutil$(O) - -# Targets -all: static shared - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -.c$(O): - $(CC) -c $(CFLAGS) -I$(ZLIBINC) $< - -static: libpng$(A) pngtest$(EXE) - -shared: $(LIBSOMAJ) - $(CC) -shared -Wl,-soname,$(LIBSOMAJ) -o $(LIBSO) - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - -$(LIBSOMAJ): - $(CC) -shared -Wl,-soname,$(LIBSOMAJ) -o $(LIBSOMAJ) - -libpng$(A): $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -install-headers: png.h pngconf.h pnglibconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@$(RM_F) $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - -@$(RM_F) $(DL)/libpng.a - (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a) - -libpng.pc: - cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \ - -e s!@exec_prefix@!$(exec_prefix)! \ - -e s!@libdir@!$(LIBPATH)! \ - -e s!@includedir@!$(INCPATH)! \ - -e s!-lpng16!-lpng16\ -lz\ -lm! > libpng.pc - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo L_opts=\"-L$(LIBPATH)\"; \ - echo R_opts=\"-Wl,-rpath,$(LIBPATH)\"; \ - echo libs=\"-lpng16 -lz -lm\"; \ - cat scripts/libpng-config-body.in ) > libpng-config - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSO) $(DL)/$(LIBSOREL) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@$(RM_F) $(DM)/man3/libpng.3 - -@$(RM_F) $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@$(RM_F) $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@$(RM_F) $(DB)/libpng-config - -@$(RM_F) $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -test: pngtest$(EXE) - ./pngtest$(EXE) - -pngtest$(EXE): pngtest$(O) libpng$(A) - $(LD) $(LDFLAGS) -L$(ZLIBLIB) -o $@ pngtest$(O) libpng$(A) $(LIBS) - -clean: - $(RM_F) *$(O) libpng$(A) pngtest$(EXE) pngout.png pnglibconf.h $(LIBSO) \ - $(LIBSOMAJ) libpng-config - -png$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest$(O): png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.ne12bsd b/io2d/src/3rd-party/libpng/scripts/makefile.ne12bsd deleted file mode 100644 index fc59743..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.ne12bsd +++ /dev/null @@ -1,50 +0,0 @@ -# makefile for libpng for NetBSD for the standard -# make obj && make depend && make && make test -# make includes && make install -# Copyright (C) 2002 Patrick R.L. Welche -# Copyright (C) 2007, 2009 Glenn Randers-Pehrson -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# You should also run makefile.netbsd - -LOCALBASE?=/usr/local -LIBDIR= ${LOCALBASE}/lib -MANDIR= ${LOCALBASE}/man -INCSDIR=${LOCALBASE}/include/libpng16 - -LIB= png16 -SHLIB_MAJOR= 0 -SHLIB_MINOR= 1.6.8beta03 -SRCS= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \ - pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \ - pngwtran.c pngmem.c pngerror.c pngpread.c -INCS= png.h pngconf.h pnglibconf.h -MAN= libpng.3 libpngpf.3 png.5 - -CPPFLAGS+=-I${.CURDIR} - -# We should be able to do something like this instead of the manual -# uncommenting, but it core dumps for me at the moment: -# .if ${MACHINE_ARCH} == "i386" -# MKLINT= no -# .endif - -CLEANFILES+=pngtest.o pngtest pnglibconf.h - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -pngtest.o: pngtest.c - ${CC} -c ${CPPFLAGS} ${CFLAGS} ${.ALLSRC} -o ${.TARGET} - -pngtest: pngtest.o libpng.a - ${CC} ${LDFLAGS} ${.ALLSRC} -o${.TARGET} -lz -lm - -test: pngtest - cd ${.CURDIR} && ${.OBJDIR}/pngtest - -.include diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.netbsd b/io2d/src/3rd-party/libpng/scripts/makefile.netbsd deleted file mode 100644 index 2f1d069..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.netbsd +++ /dev/null @@ -1,50 +0,0 @@ -# makefile for libpng for NetBSD for the standard -# make obj && make depend && make && make test -# make includes && make install -# Copyright (C) 2002 Patrick R.L. Welche -# Copyright (C) 2007-2009 Glenn Randers-Pehrson -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# You should also run makefile.ne16bsd - -LOCALBASE?=/usr/local -LIBDIR= ${LOCALBASE}/lib -MANDIR= ${LOCALBASE}/man -INCSDIR=${LOCALBASE}/include - -LIB= png -SHLIB_MAJOR= 16 -SHLIB_MINOR= 1.6.8beta03 -SRCS= png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \ - pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \ - pngwtran.c pngmem.c pngerror.c pngpread.c -INCS= png.h pngconf.h pnglibconf.h -MAN= libpng.3 libpngpf.3 png.5 - -CPPFLAGS+=-I${.CURDIR} - -# We should be able to do something like this instead of the manual -# uncommenting, but it core dumps for me at the moment: -# .if ${MACHINE_ARCH} == "i386" -# MKLINT= no -# .endif - -CLEANFILES+=pngtest.o pngtest pnglibconf.h - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -pngtest.o: pngtest.c - ${CC} -c ${CPPFLAGS} ${CFLAGS} ${.ALLSRC} -o ${.TARGET} - -pngtest: pngtest.o libpng.a - ${CC} ${LDFLAGS} ${.ALLSRC} -o${.TARGET} -lz -lm - -test: pngtest - cd ${.CURDIR} && ${.OBJDIR}/pngtest - -.include diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.openbsd b/io2d/src/3rd-party/libpng/scripts/makefile.openbsd deleted file mode 100644 index ed638b7..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.openbsd +++ /dev/null @@ -1,82 +0,0 @@ -# makefile for libpng -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# Copyright (C) 2007-2009 Glenn Randers-Pehrson -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -PREFIX?= /usr/local -LIBDIR= ${PREFIX}/lib -MANDIR= ${PREFIX}/man/cat - -SHLIB_MAJOR= 16 -SHLIB_MINOR= 1.6.8beta03 - -LIB= png -SRCS= png.c pngerror.c pngget.c pngmem.c pngpread.c \ - pngread.c pngrio.c pngrtran.c pngrutil.c pngset.c pngtrans.c \ - pngwio.c pngwrite.c pngwtran.c pngwutil.c - -HDRS= png.h pngconf.h pnglibconf.h - -CFLAGS+= -W -Wall -CPPFLAGS+= -I${.CURDIR} - -NOPROFILE= Yes - -CLEANFILES+= pngtest.o pngtest pnglibconf.h - -MAN= libpng.3 libpngpf.3 png.5 -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO \ - libpng-manual.txt - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -pngtest.o: pngtest.c - ${CC} ${CPPFLAGS} ${CFLAGS} -c ${.ALLSRC} -o ${.TARGET} - -pngtest: pngtest.o - ${CC} ${LDFLAGS} ${.ALLSRC} -o ${.TARGET} -L${.OBJDIR} -lpng -lz -lm - -test: pngtest - cd ${.OBJDIR} && env \ - LD_LIBRARY_PATH="${.OBJDIR}" ${.OBJDIR}/pngtest - -beforeinstall: - if [ ! -d ${DESTDIR}${PREFIX}/include/libpng ]; then \ - ${INSTALL} -d -o root -g wheel ${DESTDIR}${PREFIX}/include; \ - fi - if [ ! -d ${DESTDIR}${LIBDIR} ]; then \ - ${INSTALL} -d -o root -g wheel ${DESTDIR}${LIBDIR}; \ - fi - if [ ! -d ${DESTDIR}${LIBDIR}/debug ]; then \ - ${INSTALL} -d -o root -g wheel ${DESTDIR}${LIBDIR}/debug; \ - fi - if [ ! -d ${DESTDIR}${MANDIR}3 ]; then \ - ${INSTALL} -d -o root -g wheel ${DESTDIR}${MANDIR}3; \ - fi - if [ ! -d ${DESTDIR}${MANDIR}5 ]; then \ - ${INSTALL} -d -o root -g wheel ${DESTDIR}${MANDIR}5; \ - fi - if [ ! -d ${DESTDIR}${PREFIX}/share/doc/png ]; then \ - ${INSTALL} -d -o root -g wheel ${DESTDIR}${PREFIX}/share/doc/png; \ - fi - -afterinstall: - @rm -f ${DESTDIR}${LIBDIR}/libpng_pic.a - @rm -f ${DESTDIR}${LIBDIR}/debug/libpng.a - @rm -f ${DESTDIR}${PREFIX}/include/png.h - @rm -f ${DESTDIR}${PREFIX}/include/pngconf.h - @rm -f ${DESTDIR}${PREFIX}/include/pnglibconf.h - @rmdir ${DESTDIR}${LIBDIR}/debug 2>/dev/null || true - ${INSTALL} ${INSTALL_COPY} -o ${SHAREOWN} -g ${SHAREGRP} \ - -m ${NONBINMODE} ${HDRS} ${DESTDIR}${PREFIX}/include - ${INSTALL} ${INSTALL_COPY} -o ${SHAREOWN} -g ${SHAREGRP} \ - -m ${NONBINMODE} ${HDRS} ${DESTDIR}${PREFIX}/include - ${INSTALL} ${INSTALL_COPY} -o ${SHAREOWN} -g ${SHAREGRP} \ - -m ${NONBINMODE} ${DOCS} ${DESTDIR}${PREFIX}/share/doc/png - -.include diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.sco b/io2d/src/3rd-party/libpng/scripts/makefile.sco deleted file mode 100644 index c5f254f..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.sco +++ /dev/null @@ -1,218 +0,0 @@ -# makefile for SCO OSr5 ELF and Unixware 7 with Native cc -# Contributed by Mike Hopkirk (hops@sco.com) modified from Makefile.lnx -# force ELF build dynamic linking, SONAME setting in lib and RPATH in app -# Copyright (C) 2002, 2006, 2010-2011 Glenn Randers-Pehrson -# Copyright (C) 1998 Greg Roelofs -# Copyright (C) 1996, 1997 Andreas Dilger -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Library name: -LIBNAME = libpng16 -PNGMAJ = 16 - -# Shared library names: -LIBSO=$(LIBNAME).so -LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ) -LIBSOREL=$(LIBSOMAJ).$(RELEASE) -OLDSO=libpng.so - -# Utilities: -CC=cc -AR_RC=ar rc -MKDIR_P=mkdir -LN_SF=ln -f -s -RANLIB=echo -RM_F=/bin/rm -f - -# where make install puts libpng.a, $(OLDSO)*, and png.h -prefix=/usr/local -exec_prefix=$(prefix) - -# Where the zlib library and include files are located -#ZLIBLIB=/usr/local/lib -#ZLIBINC=/usr/local/include -ZLIBLIB=../zlib -ZLIBINC=../zlib - -CFLAGS= -dy -belf -I$(ZLIBINC) -O3 -LDFLAGS=-L. -L$(ZLIBLIB) -lpng16 -lz -lm - -INCPATH=$(prefix)/include -LIBPATH=$(exec_prefix)/lib -MANPATH=$(prefix)/man -BINPATH=$(exec_prefix)/bin - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -DB=$(DESTDIR)$(BINPATH) -DI=$(DESTDIR)$(INCPATH) -DL=$(DESTDIR)$(LIBPATH) -DM=$(DESTDIR)$(MANPATH) - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -OBJSDLL = $(OBJS:.o=.pic.o) - -.SUFFIXES: .c .o .pic.o - -.c.pic.o: - $(CC) -c $(CFLAGS) -KPIC -o $@ $*.c - -all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -libpng.pc: - cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \ - -e s!@exec_prefix@!$(exec_prefix)! \ - -e s!@libdir@!$(LIBPATH)! \ - -e s!@includedir@!$(INCPATH)! \ - -e s!-lpng16!-lpng16\ -lz\ -lm! > libpng.pc - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo ccopts=\"-belf\"; \ - echo L_opts=\"-L$(LIBPATH)\"; \ - echo libs=\"-lpng16 -lz -lm\"; \ - cat scripts/libpng-config-body.in ) > libpng-config - chmod +x libpng-config - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - -$(LIBSOMAJ): $(OBJSDLL) - $(CC) -G -Wl,-h,$(LIBSOMAJ) -o $(LIBSOMAJ) \ - $(OBJSDLL) - -pngtest: pngtest.o $(LIBSO) - LD_RUN_PATH=.:$(ZLIBLIB) $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install-headers: png.h pngconf.h pnglibconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - -@$(RM_F) $(DI)/png.h - -@$(RM_F) $(DI)/pngconf.h - -@$(RM_F) $(DI)/pnglibconf.h - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@$(RM_F) $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - chmod 644 $(DL)/$(LIBNAME).a - -@$(RM_F) $(DL)/libpng.a - (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a) - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(LIBSOREL) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSOMAJ) $(DL)/$(LIBSOREL) - chmod 755 $(DL)/$(LIBSOREL) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@$(RM_F) $(DM)/man3/libpng.3 - -@$(RM_F) $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@$(RM_F) $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@$(RM_F) $(DB)/libpng-config - -@$(RM_F) $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - chmod 755 $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -# If you installed in $(DESTDIR), test-installed won't work until you -# move the library to its final location. Use test-dd to test it -# before then. - -test-dd: - echo - echo Testing installed dynamic shared library in $(DL). - $(CC) -I$(DI) $(CFLAGS) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(DL) -L$(ZLIBLIB) \ - -o pngtestd `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtestd pngtest.png - -test-installed: - $(CC) $(CFLAGS) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(ZLIBLIB) \ - -o pngtesti `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtesti pngtest.png - -clean: - $(RM_F) *.o libpng.a pngtest pngout.png libpng-config \ - $(LIBSO) $(LIBSOMAJ)* pngtest-static pngtesti \ - pnglibconf.h libpng.pc - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o png.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o pngerror.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o pngrio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o pngwio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o pngmem.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o pngset.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o pngget.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o pngread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o pngrtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o pngrutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o pngtrans.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o pngwrite.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o pngwtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o pngwutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o pngpread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.sggcc b/io2d/src/3rd-party/libpng/scripts/makefile.sggcc deleted file mode 100644 index 7c427be..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.sggcc +++ /dev/null @@ -1,228 +0,0 @@ -# makefile for libpng.a and libpng16.so, SGI IRIX with 'cc' -# Copyright (C) 2001-2002, 2006, 2010-2011 Glenn Randers-Pehrson -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Library name: -LIBNAME=libpng16 -PNGMAJ = 16 - -# Shared library names: -LIBSO=$(LIBNAME).so -LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ) -LIBSOREL=$(LIBSOMAJ).$(RELEASE) -OLDSO=libpng.so - -# Utilities: -AR_RC=ar rc -CC=gcc -MKDIR_P=mkdir -p -LN_SF=ln -sf -RANLIB=echo -RM_F=/bin/rm -f - -# Where make install puts libpng.a, libpng16.so, and libpng16/png.h -# Prefix must be a full pathname. - -prefix=/usr/local -exec_prefix=$(prefix) - -# Where the zlib library and include files are located -#ZLIBLIB=/usr/local/lib32 -#ZLIBINC=/usr/local/include -#ZLIBLIB=/usr/local/lib -#ZLIBINC=/usr/local/include -ZLIBLIB=../zlib -ZLIBINC=../zlib - -# ABI can be blank to use default for your system, -32, -o32, -n32, or -64 -# See "man abi". zlib must be built with the same ABI. -ABI= - -WARNMORE= # -g -DPNG_DEBUG=5 -CFLAGS=$(ABI) -I$(ZLIBINC) -O $(WARNMORE) -fPIC -mabi=n32 -LDFLAGS=$(ABI) -L. -L$(ZLIBLIB) -lpng -lz -lm -LDSHARED=cc $(ABI) -shared -soname $(LIBSOMAJ) \ - -set_version sgi$(PNGMAJ).0 -# See "man dso" for info about shared objects - -INCPATH=$(prefix)/include -LIBPATH=$(exec_prefix)/lib -#LIBPATH=$(exec_prefix)/lib32 -MANPATH=$(prefix)/man -BINPATH=$(exec_prefix)/bin - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -DB=$(DESTDIR)$(BINPATH) -DI=$(DESTDIR)$(INCPATH) -DL=$(DESTDIR)$(LIBPATH) -DM=$(DESTDIR)$(MANPATH) - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -all: libpng.a pngtest shared libpng.pc libpng-config - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -shared: $(LIBSOMAJ) - -libpng.pc: - cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \ - -e s!@exec_prefix@!$(exec_prefix)! \ - -e s!@libdir@!$(LIBPATH)! \ - -e s!@includedir@!$(INCPATH)! \ - -e s!-lpng16!-lpng16\ -lz\ -lm! > libpng.pc - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo ccopts=\"$(ABI)\"; \ - echo cppflags=\"\"; \ - echo ldopts=\"$(ABI)\"; \ - echo L_opts=\"-L$(LIBPATH)\"; \ - echo libdir=\"$(LIBPATH)\"; \ - echo libs=\"-lpng16 -lz -lm\"; \ - cat scripts/libpng-config-body.in ) > libpng-config - chmod +x libpng-config - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - -$(LIBSOMAJ): $(OBJS) - $(LDSHARED) -o $@ $(OBJS) - $(RM_F) $(LIBSO) $(LIBSOMAJ) - -pngtest: pngtest.o libpng.a - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - echo - echo Testing local static library. - ./pngtest - -install-headers: png.h pngconf.h pnglibconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@$(RM_F) $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - chmod 644 $(DL)/$(LIBNAME).a - -@$(RM_F) $(DL)/libpng.a - (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a) - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(LIBSOREL) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSOMAJ) $(DL)/$(LIBSOREL) - chmod 755 $(DL)/$(LIBSOREL) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@$(RM_F) $(DM)/man3/libpng.3 - -@$(RM_F) $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@$(RM_F) $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@$(RM_F) $(DB)/libpng-config - -@$(RM_F) $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - chmod 755 $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -# If you installed in $(DESTDIR), test-installed won't work until you -# move the library to its final location. Use test-dd to test it -# before then. - -test-dd: - echo - echo Testing installed dynamic shared library in $(DL). - $(CC) -I$(DI) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(DL) -L$(ZLIBLIB) \ - -rpath $(ZLIBLIB):$(DL) \ - -o pngtestd `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtestd pngtest.png - -test-installed: - echo - echo Testing installed dynamic shared library. - $(CC) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(ZLIBLIB) \ - -rpath $(ZLIBLIB):`$(BINPATH)/$(LIBNAME)-config --libdir` \ - -o pngtesti `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtesti pngtest.png - -clean: - $(RM_F) libpng.a pngtest pngtesti pngout.png libpng.pc \ - so_locations libpng-config $(LIBSO) $(LIBSOMAJ)* pnglibconf.h - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.sgi b/io2d/src/3rd-party/libpng/scripts/makefile.sgi deleted file mode 100644 index f40461e..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.sgi +++ /dev/null @@ -1,229 +0,0 @@ -# makefile for libpng.a and libpng16.so, SGI IRIX with 'cc' -# Copyright (C) 2001-2002, 2006, 2007, 2010-2011 Glenn Randers-Pehrson -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Library name: -LIBNAME=libpng16 -PNGMAJ = 16 - -# Shared library names: -LIBSO=$(LIBNAME).so -LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ) -LIBSOREL=$(LIBSOMAJ).$(RELEASE) -OLDSO=libpng.so - -# Utilities: -AR_RC=ar rc -CC=cc -MKDIR_P=mkdir -p -LN_SF=ln -sf -RANLIB=echo -RM_F=/bin/rm -f - -# Where make install puts libpng.a, libpng16.so, and libpng16/png.h -# Prefix must be a full pathname. - -prefix=/usr/local -exec_prefix=$(prefix) - -# Where the zlib library and include files are located -#ZLIBLIB=/usr/local/lib32 -#ZLIBINC=/usr/local/include -#ZLIBLIB=/usr/local/lib -#ZLIBINC=/usr/local/include -ZLIBLIB=../zlib -ZLIBINC=../zlib - -# ABI can be blank to use default for your system, -32, -o32, -n32, or -64 -# See "man abi". zlib must be built with the same ABI. -ABI= - -WARNMORE=-fullwarn -# Note: -KPIC is the default anyhow -#CFLAGS= $(ABI) -I$(ZLIBINC) -O $(WARNMORE) -KPIC # -g -DPNG_DEBUG=5 -CFLAGS=$(ABI) -I$(ZLIBINC) -O $(WARNMORE) -LDFLAGS_A=$(ABI) -L. -L$(ZLIBLIB) -lpng16 -lz -lm -LDFLAGS=$(ABI) -L. -L$(ZLIBLIB) -lpng -lz -lm -LDSHARED=cc $(ABI) -shared -soname $(LIBSOMAJ) \ - -set_version sgi$(PNGMAJ).0 -# See "man dso" for info about shared objects - -INCPATH=$(prefix)/include -LIBPATH=$(exec_prefix)/lib -#LIBPATH=$(exec_prefix)/lib32 -MANPATH=$(prefix)/man -BINPATH=$(exec_prefix)/bin - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -DB=$(DESTDIR)$(BINPATH) -DI=$(DESTDIR)$(INCPATH) -DL=$(DESTDIR)$(LIBPATH) -DM=$(DESTDIR)$(MANPATH) - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -all: libpng.a pngtest shared libpng.pc libpng-config - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -libpng.pc: - cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \ - -e s!@exec_prefix@!$(exec_prefix)! \ - -e s!@libdir@!$(LIBPATH)! \ - -e s!@includedir@!$(INCPATH)! \ - -e s!-lpng16!-lpng16\ -lz\ -lm! > libpng.pc - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo ccopts=\"$(ABI)\"; \ - echo ldopts=\"$(ABI)\"; \ - echo L_opts=\"-L$(LIBPATH)\"; \ - echo libdir=\"$(LIBPATH)\"; \ - echo libs=\"-lpng16 -lz -lm\"; \ - cat scripts/libpng-config-body.in ) > libpng-config - chmod +x libpng-config - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - -$(LIBSOMAJ): $(OBJS) - $(LDSHARED) -o $@ $(OBJS) - $(RM_F) $(LIBSO) $(LIBSOMAJ) - -pngtest: pngtest.o libpng.a - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - echo - echo Testing local static library. - ./pngtest - -install-headers: png.h pngconf.h pnglibconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@$(RM_F) $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - chmod 644 $(DL)/$(LIBNAME).a - -@$(RM_F) $(DL)/libpng.a - (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a) - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(LIBSOREL) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSOMAJ) $(DL)/$(LIBSOREL) - chmod 755 $(DL)/$(LIBSOREL) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@$(RM_F) $(DM)/man3/libpng.3 - -@$(RM_F) $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@$(RM_F) $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@$(RM_F) $(DB)/libpng-config - -@$(RM_F) $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - chmod 755 $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -# If you installed in $(DESTDIR), test-installed won't work until you -# move the library to its final location. Use test-dd to test it -# before then. - -test-dd: - echo - echo Testing installed dynamic shared library in $(DL). - $(CC) -I$(DI) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(DL) -L$(ZLIBLIB) \ - -rpath $(ZLIBLIB):$(DL) \ - -o pngtestd `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtestd pngtest.png - -test-installed: - echo - echo Testing installed dynamic shared library. - $(CC) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -L$(ZLIBLIB) \ - -rpath $(ZLIBLIB):`$(BINPATH)/$(LIBNAME)-config --libdir` \ - -o pngtesti `$(BINPATH)/$(LIBNAME)-config --ldflags` - ./pngtesti pngtest.png - -clean: - $(RM_F) *.o libpng.a pngtest pngtesti pngout.png libpng.pc libpng-config \ - $(LIBSO) $(LIBSOMAJ)* \ - so_locations pnglibconf.h - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.so9 b/io2d/src/3rd-party/libpng/scripts/makefile.so9 deleted file mode 100644 index a7773d1..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.so9 +++ /dev/null @@ -1,239 +0,0 @@ -# makefile for libpng on Solaris 9 (beta) with Forte cc -# Updated by Chad Schrock for Solaris 9 -# Contributed by William L. Sebok, based on makefile.linux -# Copyright (C) 2002, 2006, 2008, 2010-2011 Glenn Randers-Pehrson -# Copyright (C) 1998-2001 Greg Roelofs -# Copyright (C) 1996-1997 Andreas Dilger -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Library name: -PNGMAJ = 16 -LIBNAME = libpng16 - -# Shared library names: -LIBSO=$(LIBNAME).so -LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ) -LIBSOREL=$(LIBSOMAJ).$(RELEASE) -OLDSO=libpng.so - -# Utilities: -# gcc 2.95 doesn't work. -CC=cc -AR_RC=ar rc -MKDIR_P=mkdir -p -LN_SF=ln -f -s -RANLIB=echo -RM_F=/bin/rm -f - -# Where make install puts libpng.a, $(OLDSO)*, and png.h -prefix=/usr/local -exec_prefix=$(prefix) - -# Where the zlib library and include files are located -# Changing these to ../zlib poses a security risk. If you want -# to have zlib in an adjacent directory, specify the full path instead of "..". -#ZLIBLIB=../zlib -#ZLIBINC=../zlib -#ZLIBLIB=/usr/local/lib -#ZLIBINC=/usr/local/include -#Use the preinstalled zlib that comes with Solaris 9: -ZLIBLIB=/usr/lib -ZLIBINC=/usr/include - -#WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \ - -Wmissing-declarations -Wtraditional -Wcast-align \ - -Wstrict-prototypes -Wmissing-prototypes #-Wconversion -#CFLAGS=-I$(ZLIBINC) -W -Wall -O3 $(WARNMORE) -g -DPNG_DEBUG=5 -DPNG_NO_MMX_CODE -CFLAGS=-I$(ZLIBINC) -O3 -DPNG_NO_MMX_CODE -LDFLAGS=-L. -R. -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng16 -lz -lm - -INCPATH=$(prefix)/include -LIBPATH=$(exec_prefix)/lib -MANPATH=$(prefix)/man -BINPATH=$(exec_prefix)/bin - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -DB=$(DESTDIR)$(BINPATH) -DI=$(DESTDIR)$(INCPATH) -DL=$(DESTDIR)$(LIBPATH) -DM=$(DESTDIR)$(MANPATH) - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -OBJSDLL = $(OBJS:.o=.pic.o) - -.SUFFIXES: .c .o .pic.o - -.c.pic.o: - $(CC) -c $(CFLAGS) -KPIC -o $@ $*.c - -all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -libpng.pc: - cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \ - -e s!@exec_prefix@!$(exec_prefix)! \ - -e s!@libdir@!$(LIBPATH)! \ - -e s!@includedir@!$(INCPATH)! \ - -e s!-lpng16!-lpng16\ -lz\ -lm! > libpng.pc - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo L_opts=\"-L$(LIBPATH)\"; \ - echo R_opts=\"-R$(LIBPATH)\"; \ - echo libs=\"-lpng16 -lz -lm\"; \ - cat scripts/libpng-config-body.in ) > libpng-config - chmod +x libpng-config - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - -$(LIBSOMAJ): $(OBJSDLL) - @case "`type ld`" in *ucb*) \ - echo; \ - echo '## WARNING:'; \ - echo '## The commands "CC" and "LD" must NOT refer to /usr/ucb/cc'; \ - echo '## and /usr/ucb/ld. If they do, you need to adjust your PATH'; \ - echo '## environment variable to put /usr/ccs/bin ahead of /usr/ucb.'; \ - echo '## The environment variable LD_LIBRARY_PATH should not be set'; \ - echo '## at all. If it is, things are likely to break because of'; \ - echo '## the libucb dependency that is created.'; \ - echo; \ - ;; \ - esac - $(LD) -G -h $(LIBSOMAJ) \ - -o $(LIBSOMAJ) $(OBJSDLL) - -pngtest: pngtest.o $(LIBSO) - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install-headers: png.h pngconf.h pnglibconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@$(RM_F) $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - chmod 644 $(DL)/$(LIBNAME).a - -@$(RM_F) $(DL)/libpng.a - (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a) - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(LIBSOREL) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSOMAJ) $(DL)/$(LIBSOREL) - chmod 755 $(DL)/$(LIBSOREL) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@$(RM_F) $(DM)/man3/libpng.3 - -@$(RM_F) $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@$(RM_F) $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@$(RM_F) $(DB)/libpng-config - -@$(RM_F) $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - chmod 755 $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -# If you installed in $(DESTDIR), test-installed won't work until you -# move the library to its final location. Use test-dd to test it -# before then. - -test-dd: - echo - echo Testing installed dynamic shared library in $(DL). - $(CC) -I$(DI) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -o pngtestd `$(BINPATH)/$(LIBNAME)-config --ldflags` \ - -L$(DL) -L$(ZLIBLIB) -R$(ZLIBLIB) -R$(DL) - ./pngtestd pngtest.png - -test-installed: - echo - echo Testing installed dynamic shared library. - $(CC) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -o pngtesti `$(BINPATH)/$(LIBNAME)-config --ldflags` \ - -L$(ZLIBLIB) -R$(ZLIBLIB) - ./pngtesti pngtest.png - -clean: - $(RM_F) *.o libpng.a pngtest pngtesti pngout.png \ - libpng-config $(LIBSO) $(LIBSOMAJ)* \ - libpng.pc pnglibconf.h - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o png.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o pngerror.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o pngrio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o pngwio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o pngmem.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o pngset.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o pngget.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o pngread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o pngrtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o pngrutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o pngtrans.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o pngwrite.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o pngwtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o pngwutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o pngpread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.solaris b/io2d/src/3rd-party/libpng/scripts/makefile.solaris deleted file mode 100644 index be423a1..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.solaris +++ /dev/null @@ -1,236 +0,0 @@ -# makefile for libpng on Solaris 2.x with gcc -# Copyright (C) 2004, 2006-2008, 2010-2011 Glenn Randers-Pehrson -# Contributed by William L. Sebok, based on makefile.linux -# Copyright (C) 1998 Greg Roelofs -# Copyright (C) 1996, 1997 Andreas Dilger -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Library name: -LIBNAME = libpng16 -PNGMAJ = 16 - -# Shared library names: -LIBSO=$(LIBNAME).so -LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ) -LIBSOREL=$(LIBSOMAJ).$(RELEASE) -OLDSO=libpng.so - -# Utilities: -AR_RC=ar rc -CC=gcc -MKDIR_P=mkdir -p -LN_SF=ln -f -s -RANLIB=echo -RM_F=/bin/rm -f - -# Where make install puts libpng.a, libpng16.so*, and png.h -prefix=/usr/local -exec_prefix=$(prefix) - -# Where the zlib library and include files are located -# Changing these to ../zlib poses a security risk. If you want -# to have zlib in an adjacent directory, specify the full path instead of "..". -#ZLIBLIB=../zlib -#ZLIBINC=../zlib - -ZLIBLIB=/usr/local/lib -ZLIBINC=/usr/local/include - -WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \ - -Wmissing-declarations -Wtraditional -Wcast-align \ - -Wstrict-prototypes -Wmissing-prototypes #-Wconversion -CFLAGS=-I$(ZLIBINC) -W -Wall -O \ - # $(WARNMORE) -g -DPNG_DEBUG=5 -LDFLAGS=-L. -R. -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng16 -lz -lm - -INCPATH=$(prefix)/include -LIBPATH=$(exec_prefix)/lib -MANPATH=$(prefix)/man -BINPATH=$(exec_prefix)/bin - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -DB=$(DESTDIR)$(BINPATH) -DI=$(DESTDIR)$(INCPATH) -DL=$(DESTDIR)$(LIBPATH) -DM=$(DESTDIR)$(MANPATH) - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -OBJSDLL = $(OBJS:.o=.pic.o) - -.SUFFIXES: .c .o .pic.o - -.c.pic.o: - $(CC) -c $(CFLAGS) -fPIC -o $@ $*.c - -all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -libpng.pc: - cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \ - -e s!@exec_prefix@!$(exec_prefix)! \ - -e s!@libdir@!$(LIBPATH)! \ - -e s!@includedir@!$(INCPATH)! \ - -e s!-lpng16!-lpng16\ -lz\ -lm! > libpng.pc - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo cppflags=\"\"; \ - echo L_opts=\"-L$(LIBPATH)\"; \ - echo R_opts=\"-R$(LIBPATH)\"; \ - echo libs=\"-lpng16 -lz -lm\"; \ - cat scripts/libpng-config-body.in ) > libpng-config - chmod +x libpng-config - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - -$(LIBSOMAJ): $(OBJSDLL) - @case "`type ld`" in *ucb*) \ - echo; \ - echo '## WARNING:'; \ - echo '## The commands "CC" and "LD" must NOT refer to /usr/ucb/cc'; \ - echo '## and /usr/ucb/ld. If they do, you need to adjust your PATH'; \ - echo '## environment variable to put /usr/ccs/bin ahead of /usr/ucb.'; \ - echo '## The environment variable LD_LIBRARY_PATH should not be set'; \ - echo '## at all. If it is, things are likely to break because of'; \ - echo '## the libucb dependency that is created.'; \ - echo; \ - ;; \ - esac - $(LD) -G -h $(LIBSOMAJ) \ - -o $(LIBSOMAJ) $(OBJSDLL) - -pngtest: pngtest.o $(LIBSO) - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install-headers: png.h pngconf.h pnglibconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@$(RM_F) $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - chmod 644 $(DL)/$(LIBNAME).a - -@$(RM_F) $(DL)/libpng.a - (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a) - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(LIBSOREL) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSOMAJ) $(DL)/$(LIBSOREL) - chmod 755 $(DL)/$(LIBSOREL) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@$(RM_F) $(DM)/man3/libpng.3 - -@$(RM_F) $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@$(RM_F) $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@$(RM_F) $(DB)/libpng-config - -@$(RM_F) $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - chmod 755 $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -# If you installed in $(DESTDIR), test-installed won't work until you -# move the library to its final location. Use test-dd to test it -# before then. - -test-dd: - echo - echo Testing installed dynamic shared library in $(DL). - $(CC) -I$(DI) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -o pngtestd `$(BINPATH)/$(LIBNAME)-config --ldflags` \ - -L$(DL) -L$(ZLIBLIB) -R$(ZLIBLIB) -R$(DL) - ./pngtestd pngtest.png - -test-installed: - echo - echo Testing installed dynamic shared library. - $(CC) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -o pngtesti `$(BINPATH)/$(LIBNAME)-config --ldflags` \ - -L$(ZLIBLIB) -R$(ZLIBLIB) - ./pngtesti pngtest.png - -clean: - $(RM_F) *.o libpng.a pngtest pngtesti pngout.png \ - libpng-config $(LIBSO) $(LIBSOMAJ)* \ - libpng.pc pnglibconf.h - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o png.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o pngerror.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o pngrio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o pngwio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o pngmem.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o pngset.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o pngget.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o pngread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o pngrtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o pngrutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o pngtrans.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o pngwrite.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o pngwtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o pngwutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o pngpread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.solaris-x86 b/io2d/src/3rd-party/libpng/scripts/makefile.solaris-x86 deleted file mode 100644 index d41e659..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.solaris-x86 +++ /dev/null @@ -1,236 +0,0 @@ -# makefile for libpng on Solaris 2.x with gcc -# Copyright (C) 2004, 2006-2008, 2010-2011 Glenn Randers-Pehrson -# Contributed by William L. Sebok, based on makefile.linux -# Copyright (C) 1998 Greg Roelofs -# Copyright (C) 1996, 1997 Andreas Dilger - -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# Library name: -LIBNAME = libpng16 -PNGMAJ = 16 - -# Shared library names: -LIBSO=$(LIBNAME).so -LIBSOMAJ=$(LIBNAME).so.$(PNGMAJ) -LIBSOREL=$(LIBSOMAJ).$(RELEASE) -OLDSO=libpng.so - -# Utilities: -AR_RC=ar rc -CC=gcc -MKDIR_P=mkdir -p -LN_SF=ln -f -s -RANLIB=echo -RM_F=/bin/rm -f - -# Where make install puts libpng.a, libpng16.so*, and png.h -prefix=/usr/local -exec_prefix=$(prefix) - -# Where the zlib library and include files are located -# Changing these to ../zlib poses a security risk. If you want -# to have zlib in an adjacent directory, specify the full path instead of "..". -#ZLIBLIB=../zlib -#ZLIBINC=../zlib - -ZLIBLIB=/usr/local/lib -ZLIBINC=/usr/local/include - -WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \ - -Wmissing-declarations -Wtraditional -Wcast-align \ - -Wstrict-prototypes -Wmissing-prototypes #-Wconversion -CFLAGS=-I$(ZLIBINC) -W -Wall -O \ - # $(WARNMORE) -g -DPNG_DEBUG=5 -LDFLAGS=-L. -R. -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng16 -lz -lm - -INCPATH=$(prefix)/include -LIBPATH=$(exec_prefix)/lib -MANPATH=$(prefix)/man -BINPATH=$(exec_prefix)/bin - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -DB=$(DESTDIR)$(BINPATH) -DI=$(DESTDIR)$(INCPATH) -DL=$(DESTDIR)$(LIBPATH) -DM=$(DESTDIR)$(MANPATH) - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -OBJSDLL = $(OBJS:.o=.pic.o) - -.SUFFIXES: .c .o .pic.o - -.c.pic.o: - $(CC) -c $(CFLAGS) -fPIC -o $@ $*.c - -all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -libpng.pc: - cat scripts/libpng.pc.in | sed -e s!@prefix@!$(prefix)! \ - -e s!@exec_prefix@!$(exec_prefix)! \ - -e s!@libdir@!$(LIBPATH)! \ - -e s!@includedir@!$(INCPATH)! \ - -e s!-lpng16!-lpng16\ -lz\ -lm! > libpng.pc - -libpng-config: - ( cat scripts/libpng-config-head.in; \ - echo prefix=\"$(prefix)\"; \ - echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \ - echo cppflags=\""; \ - echo L_opts=\"-L$(LIBPATH)\"; \ - echo R_opts=\"-R$(LIBPATH)\"; \ - echo libs=\"-lpng16 -lz -lm\"; \ - cat scripts/libpng-config-body.in ) > libpng-config - chmod +x libpng-config - -$(LIBSO): $(LIBSOMAJ) - $(LN_SF) $(LIBSOMAJ) $(LIBSO) - -$(LIBSOMAJ): $(OBJSDLL) - @case "`type ld`" in *ucb*) \ - echo; \ - echo '## WARNING:'; \ - echo '## The commands "CC" and "LD" must NOT refer to /usr/ucb/cc'; \ - echo '## and /usr/ucb/ld. If they do, you need to adjust your PATH'; \ - echo '## environment variable to put /usr/ccs/bin ahead of /usr/ucb.'; \ - echo '## The environment variable LD_LIBRARY_PATH should not be set'; \ - echo '## at all. If it is, things are likely to break because of'; \ - echo '## the libucb dependency that is created.'; \ - echo; \ - ;; \ - esac - $(LD) -G -h $(LIBSOMAJ) \ - -o $(LIBSOMAJ) $(OBJSDLL) - -pngtest: pngtest.o $(LIBSO) - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install-headers: png.h pngconf.h pnglibconf.h - -@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi - -@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi - cp png.h pngconf.h pnglibconf.h $(DI)/$(LIBNAME) - chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h $(DI)/$(LIBNAME)/pnglibconf.h - -@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pnglibconf.h - -@$(RM_F) $(DI)/libpng - (cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .) - -install-static: install-headers libpng.a - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - cp libpng.a $(DL)/$(LIBNAME).a - chmod 644 $(DL)/$(LIBNAME).a - -@$(RM_F) $(DL)/libpng.a - (cd $(DL); $(LN_SF) $(LIBNAME).a libpng.a) - -install-shared: install-headers $(LIBSOMAJ) libpng.pc - -@if [ ! -d $(DL) ]; then $(MKDIR_P) $(DL); fi - -@$(RM_F) $(DL)/$(LIBSO) - -@$(RM_F) $(DL)/$(LIBSOREL) - -@$(RM_F) $(DL)/$(OLDSO) - cp $(LIBSOMAJ) $(DL)/$(LIBSOREL) - chmod 755 $(DL)/$(LIBSOREL) - (cd $(DL); \ - $(LN_SF) $(LIBSOREL) $(LIBSO); \ - $(LN_SF) $(LIBSO) $(OLDSO)) - -@if [ ! -d $(DL)/pkgconfig ]; then $(MKDIR_P) $(DL)/pkgconfig; fi - -@$(RM_F) $(DL)/pkgconfig/$(LIBNAME).pc - -@$(RM_F) $(DL)/pkgconfig/libpng.pc - cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc - chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc - (cd $(DL)/pkgconfig; $(LN_SF) $(LIBNAME).pc libpng.pc) - -install-man: libpng.3 libpngpf.3 png.5 - -@if [ ! -d $(DM) ]; then $(MKDIR_P) $(DM); fi - -@if [ ! -d $(DM)/man3 ]; then $(MKDIR_P) $(DM)/man3; fi - -@$(RM_F) $(DM)/man3/libpng.3 - -@$(RM_F) $(DM)/man3/libpngpf.3 - cp libpng.3 $(DM)/man3 - cp libpngpf.3 $(DM)/man3 - -@if [ ! -d $(DM)/man5 ]; then $(MKDIR_P) $(DM)/man5; fi - -@$(RM_F) $(DM)/man5/png.5 - cp png.5 $(DM)/man5 - -install-config: libpng-config - -@if [ ! -d $(DB) ]; then $(MKDIR_P) $(DB); fi - -@$(RM_F) $(DB)/libpng-config - -@$(RM_F) $(DB)/$(LIBNAME)-config - cp libpng-config $(DB)/$(LIBNAME)-config - chmod 755 $(DB)/$(LIBNAME)-config - (cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config) - -install: install-static install-shared install-man install-config - -# If you installed in $(DESTDIR), test-installed won't work until you -# move the library to its final location. Use test-dd to test it -# before then. - -test-dd: - echo - echo Testing installed dynamic shared library in $(DL). - $(CC) -I$(DI) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -o pngtestd `$(BINPATH)/$(LIBNAME)-config --ldflags` \ - -L$(DL) -L$(ZLIBLIB) -R$(ZLIBLIB) -R$(DL) - ./pngtestd pngtest.png - -test-installed: - echo - echo Testing installed dynamic shared library. - $(CC) -I$(ZLIBINC) \ - `$(BINPATH)/$(LIBNAME)-config --cflags` pngtest.c \ - -o pngtesti `$(BINPATH)/$(LIBNAME)-config --ldflags` \ - -L$(ZLIBLIB) -R$(ZLIBLIB) - ./pngtesti pngtest.png - -clean: - $(RM_F) *.o libpng.a pngtest pngtesti pngout.png \ - libpng-config $(LIBSO) $(LIBSOMAJ)* \ - libpng.pc pnglibconf.h - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o png.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o pngerror.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o pngrio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o pngwio.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o pngmem.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o pngset.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o pngget.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o pngread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o pngrtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o pngrutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o pngtrans.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o pngwrite.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o pngwtran.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o pngwutil.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o pngpread.pic.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.std b/io2d/src/3rd-party/libpng/scripts/makefile.std deleted file mode 100644 index 419eeed..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.std +++ /dev/null @@ -1,124 +0,0 @@ -# makefile for libpng -# Copyright (C) 2002, 2006 Glenn Randers-Pehrson -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# where make install puts libpng.a and png.h -prefix=/usr/local -INCPATH=$(prefix)/include -LIBPATH=$(prefix)/lib - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -# Where the zlib library and include files are located -#ZLIBLIB=/usr/local/lib -#ZLIBINC=/usr/local/include -ZLIBLIB=../zlib -ZLIBINC=../zlib - -CC=cc -AR_RC=ar rc -MKDIR_P=mkdir -LN_SF=ln -sf -RANLIB=ranlib -RM_F=rm -f -AWK = awk -SED = sed -CPP = $(CC) -E -ECHO = echo - -DFNFLAGS = # DFNFLAGS contains -D options to use in the libpng build -DFA_EXTRA = # extra files that can be used to control configuration -CFLAGS=-I$(ZLIBINC) -O # -g -DPNG_DEBUG=5 -LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -all: libpng.a pngtest - -# The standard pnglibconf.h exists as scripts/pnglibconf.h.prebuilt, -# copy this if the following doesn't work. -pnglibconf.h: pnglibconf.dfn - $(RM_F) $@ pnglibconf.c pnglibconf.out pnglibconf.tmp - $(ECHO) '#include "pnglibconf.dfn"' >pnglibconf.c - $(ECHO) "If '$(CC) -E' crashes try /lib/cpp (e.g. CPP='/lib/cpp')" >&2 - $(CPP) $(DFNFLAGS) pnglibconf.c >pnglibconf.out - $(AWK) -f "scripts/dfn.awk" out="pnglibconf.tmp" pnglibconf.out 1>&2 - mv pnglibconf.tmp $@ - -pnglibconf.dfn: scripts/pnglibconf.dfa scripts/options.awk pngconf.h pngusr.dfa $(DFA_XTRA) - $(RM_F) $@ pnglibconf.pre pnglibconf.tmp - $(ECHO) "Calling $(AWK) from scripts/pnglibconf.mak" >&2 - $(ECHO) "If 'awk' crashes try a better awk (e.g. AWK='nawk')" >&2 - $(AWK) -f scripts/options.awk out="pnglibconf.pre"\ - version=search pngconf.h scripts/pnglibconf.dfa\ - pngusr.dfa $(DFA_XTRA) 1>&2 - $(AWK) -f scripts/options.awk out="pnglibconf.tmp" pnglibconf.pre 1>&2 - mv pnglibconf.tmp $@ - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -pngtest: pngtest.o libpng.a - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install: libpng.a pnglibconf.h - -@$(MKDIR_P) $(DESTDIR)$(INCPATH) - -@$(MKDIR_P) $(DESTDIR)$(INCPATH)/libpng - -@$(MKDIR_P) $(DESTDIR)$(LIBPATH) - -@$(RM_F) $(DESTDIR)$(INCPATH)/png.h - -@$(RM_F) $(DESTDIR)$(INCPATH)/pngconf.h - -@$(RM_F) $(DESTDIR)$(INCPATH)/pnglibconf.h - cp png.h $(DESTDIR)$(INCPATH)/libpng - cp pngconf.h $(DESTDIR)$(INCPATH)/libpng - cp pnglibconf.h $(DESTDIR)$(INCPATH)/libpng - chmod 644 $(DESTDIR)$(INCPATH)/libpng/png.h - chmod 644 $(DESTDIR)$(INCPATH)/libpng/pngconf.h - chmod 644 $(DESTDIR)$(INCPATH)/libpng/pnglibconf.h - (cd $(DESTDIR)$(INCPATH); ln -f -s libpng/* .) - cp libpng.a $(DESTDIR)$(LIBPATH) - chmod 644 $(DESTDIR)$(LIBPATH)/libpng.a - -clean: - $(RM_F) *.o libpng.a pngtest pngout.png pnglibconf.* - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.sunos b/io2d/src/3rd-party/libpng/scripts/makefile.sunos deleted file mode 100644 index c1d0165..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.sunos +++ /dev/null @@ -1,107 +0,0 @@ -# makefile for libpng -# Copyright (C) 2002, 2006 Glenn Randers-Pehrson -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# where make install puts libpng.a and png.h -prefix=/usr/local -INCPATH=$(prefix)/include -LIBPATH=$(prefix)/lib - -# override DESTDIR= on the make install command line to easily support -# installing into a temporary location. Example: -# -# make install DESTDIR=/tmp/build/libpng -# -# If you're going to install into a temporary location -# via DESTDIR, $(DESTDIR)$(prefix) must already exist before -# you execute make install. -DESTDIR= - -# Where the zlib library and include files are located -#ZLIBLIB=/usr/local/lib -#ZLIBINC=/usr/local/include -ZLIBLIB=../zlib -ZLIBINC=../zlib - - -WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow -Wconversion \ - -Wmissing-declarations -Wtraditional -Wcast-align \ - -Wstrict-prototypes -Wmissing-prototypes - -CC=gcc -AR_RC=ar rc -MKDIR_P=mkdir -p -LN_SF=ln -f -s -RANLIB=ranlib -RM_F=/bin/rm -f - -CFLAGS=-I$(ZLIBINC) -O # $(WARNMORE) -DPNG_DEBUG=5 -LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -all: libpng.a pngtest - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -libpng.a: $(OBJS) - $(AR_RC) $@ $(OBJS) - $(RANLIB) $@ - -pngtest: pngtest.o libpng.a - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install: libpng.a - -@$(MKDIR_P) $(DESTDIR)$(INCPATH) - -@$(MKDIR_P) $(DESTDIR)$(INCPATH)/libpng - -@$(MKDIR_P) $(DESTDIR)$(LIBPATH) - -@$(RM_F) $(DESTDIR)$(INCPATH)/png.h - -@$(RM_F) $(DESTDIR)$(INCPATH)/pngconf.h - -@$(RM_F) $(DESTDIR)$(INCPATH)/pnglibconf.h - cp png.h $(DESTDIR)$(INCPATH)/libpng - cp pngconf.h $(DESTDIR)$(INCPATH)/libpng - cp pnglibconf.h $(DESTDIR)$(INCPATH)/libpng - chmod 644 $(DESTDIR)$(INCPATH)/libpng/png.h - chmod 644 $(DESTDIR)$(INCPATH)/libpng/pngconf.h - chmod 644 $(DESTDIR)$(INCPATH)/libpng/pnglibconf.h - (cd $(DESTDIR)$(INCPATH); $(LN_SF) libpng/* .) - cp libpng.a $(DESTDIR)$(LIBPATH) - chmod 644 $(DESTDIR)$(LIBPATH)/libpng.a - -clean: - $(RM_F) *.o libpng.a pngtest pngout.png pnglibconf.h - -DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO -writelock: - chmod a-w *.[ch35] $(DOCS) scripts/* - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngerror.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwio.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngmem.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngset.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngget.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngrutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngtrans.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwrite.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwtran.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngwutil.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -pngpread.o: png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - -pngtest.o: png.h pngconf.h pnglibconf.h diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.tc3 b/io2d/src/3rd-party/libpng/scripts/makefile.tc3 deleted file mode 100644 index a046bf6..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.tc3 +++ /dev/null @@ -1,93 +0,0 @@ -# Makefile for libpng -# TurboC/C++ (Note: All modules are compiled in C mode) - -# To use, do "make -fmakefile.tc3" - -# ----- Turbo C 3.00 (can be modified to work with earlier versions) ----- - -MODEL=l -CFLAGS=-O2 -Z -m$(MODEL) -I..\zlib -#CFLAGS=-D_NO_PROTO -O2 -Z -m$(MODEL) -I..\zlib # Turbo C older than 3.00 -CC=tcc -LD=tcc -LIB=tlib -LDFLAGS=-m$(MODEL) -L..\zlib -O=.obj -E=.exe - -# variables -OBJS1 = png$(O) pngset$(O) pngget$(O) pngrutil$(O) pngtrans$(O) pngwutil$(O) -OBJS2 = pngmem$(O) pngpread$(O) pngread$(O) pngerror$(O) pngwrite$(O) -OBJS3 = pngrtran$(O) pngwtran$(O) pngrio$(O) pngwio$(O) -OBJSL1 = +png$(O) +pngset$(O) +pngget$(O) +pngrutil$(O) +pngtrans$(O) -OBJSL2 = +pngwutil$(O) +pngmem$(O) +pngpread$(O) +pngread$(O) +pngerror$(O) -OBJSL3 = +pngwrite$(O) +pngrtran$(O) +pngwtran$(O) +pngrio$(O) +pngwio$(O) - -all: libpng$(MODEL).lib pngtest$(E) - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts/pnglibconf.h.prebuilt - cp scripts/pnglibconf.h.prebuilt $@ - -pngtest: pngtest$(E) - -test: pngtest$(E) - pngtest$(E) - -png$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c - -pngset$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c - -pngget$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c - -pngread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c - -pngpread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c - -pngrtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c - -pngrutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c - -pngerror$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c - -pngmem$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c - -pngrio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c - -pngwio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c - -pngtest$(O): png.h pngconf.h pnglibconf.h - $(CC) -c $(CFLAGS) $*.c - -pngtrans$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c - -pngwrite$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c - -pngwtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c - -pngwutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c - -libpng$(MODEL).lib: $(OBJS1) $(OBJS2) $(OBJS3) - $(LIB) libpng$(MODEL) +$(OBJSL1) - $(LIB) libpng$(MODEL) +$(OBJSL2) - $(LIB) libpng$(MODEL) +$(OBJSL3) - -pngtest$(E): pngtest$(O) libpng$(MODEL).lib - $(LD) $(LDFLAGS) pngtest.obj libpng$(MODEL).lib zlib_$(MODEL).lib - -# End of makefile for libpng diff --git a/io2d/src/3rd-party/libpng/scripts/makefile.vcwin32 b/io2d/src/3rd-party/libpng/scripts/makefile.vcwin32 deleted file mode 100644 index 3ca7a01..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makefile.vcwin32 +++ /dev/null @@ -1,108 +0,0 @@ -# makefile for libpng -# Copyright (C) 1998 Tim Wegner -# Copyright (C) 2006,2009,2011 Glenn Randers-Pehrson -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h -# -# Assumes that zlib.lib, zconf.h, and zlib.h have been copied to ..\zlib -# To use, do "nmake /f scripts\makefile.vcwin32" - -# -------- Microsoft Visual C++ 2.0 and later, no assembler code -------- - -# Compiler, linker, librarian, and other tools -CC = cl -LD = link -AR = lib -CFLAGS = -nologo -D_CRT_SECURE_NO_DEPRECATE -MD -O2 -W3 -I..\zlib -LDFLAGS = -nologo -ARFLAGS = -nologo -RM = del - -# File extensions -O=.obj - -#uncomment next to put error messages in a file -#ERRFILE= >> pngerrs.log - -# Variables -OBJS1 = png$(O) pngerror$(O) pngget$(O) pngmem$(O) pngpread$(O) -OBJS2 = pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) pngset$(O) -OBJS3 = pngtrans$(O) pngwio$(O) pngwrite$(O) pngwtran$(O) pngwutil$(O) -OBJS = $(OBJS1) $(OBJS2) $(OBJS3) - -# Targets -all: libpng.lib - -# see scripts/pnglibconf.mak for more options -pnglibconf.h: scripts\pnglibconf.h.prebuilt - copy scripts\pnglibconf.h.prebuilt $@ - -png$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngset$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngget$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngpread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngrtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngrutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngerror$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngmem$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngrio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngwio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngtrans$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngwrite$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngwtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngwutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -libpng.lib: $(OBJS) - -$(RM) $@ - $(AR) $(ARFLAGS) -out:$@ $(OBJS) $(ERRFILE) - -pngtest$(O): png.h pngconf.h pnglibconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngtest.exe: pngtest$(O) libpng.lib - $(LD) $(LDFLAGS) -out:$@ pngtest$(O) libpng.lib ..\zlib\zlib.lib $(ERRFILE) - -test: pngtest.exe - pngtest - -clean: - -$(RM) *$(O) - -$(RM) libpng.lib - -$(RM) pnglibconf.h - -$(RM) pngtest.exe - -$(RM) pngout.png - -# End of makefile for libpng - diff --git a/io2d/src/3rd-party/libpng/scripts/makevms.com b/io2d/src/3rd-party/libpng/scripts/makevms.com deleted file mode 100644 index 6928553..0000000 --- a/io2d/src/3rd-party/libpng/scripts/makevms.com +++ /dev/null @@ -1,142 +0,0 @@ -$! make libpng under VMS -$! -$! -$! Check for MMK/MMS -$! -$! This procedure accepts one parameter (contrib), which causes it to build -$! the programs from the contrib directory instead of libpng. -$! -$ p1 = f$edit(p1,"UPCASE") -$ if p1 .eqs. "CONTRIB" -$ then -$ set def [.contrib.gregbook] -$ @makevms -$ set def [-.pngminus] -$ @makevms -$ set def [--] -$ exit -$ endif -$ Make = "" -$ If F$Search ("Sys$System:MMS.EXE") .nes. "" Then Make = "MMS" -$ If F$Type (MMK) .eqs. "STRING" Then Make = "MMK" -$! -$! Look for the compiler used -$! -$ zlibsrc = "[-.zlib]" -$ ccopt="/include=''zlibsrc'" -$ if f$getsyi("HW_MODEL").ge.1024 -$ then -$ ccopt = "/prefix=all"+ccopt -$ comp = "__decc__=1" -$ if f$trnlnm("SYS").eqs."" then define sys sys$library: -$ else -$ if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").eqs."" -$ then -$ if f$trnlnm("SYS").eqs."" then define sys sys$library: -$ if f$search("SYS$SYSTEM:VAXC.EXE").eqs."" -$ then -$ comp = "__gcc__=1" -$ CC :== GCC -$ else -$ comp = "__vaxc__=1" -$ endif -$ else -$ if f$trnlnm("SYS").eqs."" then define sys decc$library_include: -$ ccopt = "/decc/prefix=all"+ccopt -$ comp = "__decc__=1" -$ endif -$ endif -$! -$! Build the thing plain or with mms/mmk -$! -$ write sys$output "Compiling Libpng sources ..." -$ if make.eqs."" -$ then -$ dele pngtest.obj;* -$ CALL MAKE png.OBJ "cc ''CCOPT' png" - - png.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -$ CALL MAKE pngset.OBJ "cc ''CCOPT' pngset" - - pngset.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -$ CALL MAKE pngget.OBJ "cc ''CCOPT' pngget" - - pngget.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -$ CALL MAKE pngread.OBJ "cc ''CCOPT' pngread" - - pngread.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -$ CALL MAKE pngpread.OBJ "cc ''CCOPT' pngpread" - - pngpread.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -$ CALL MAKE pngrtran.OBJ "cc ''CCOPT' pngrtran" - - pngrtran.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -$ CALL MAKE pngrutil.OBJ "cc ''CCOPT' pngrutil" - - pngrutil.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -$ CALL MAKE pngerror.OBJ "cc ''CCOPT' pngerror" - - pngerror.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -$ CALL MAKE pngmem.OBJ "cc ''CCOPT' pngmem" - - pngmem.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -$ CALL MAKE pngrio.OBJ "cc ''CCOPT' pngrio" - - pngrio.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -$ CALL MAKE pngwio.OBJ "cc ''CCOPT' pngwio" - - pngwio.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -$ CALL MAKE pngtrans.OBJ "cc ''CCOPT' pngtrans" - - pngtrans.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -$ CALL MAKE pngwrite.OBJ "cc ''CCOPT' pngwrite" - - pngwrite.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -$ CALL MAKE pngwtran.OBJ "cc ''CCOPT' pngwtran" - - pngwtran.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -$ CALL MAKE pngwutil.OBJ "cc ''CCOPT' pngwutil" - - pngwutil.c png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h -$ write sys$output "Building Libpng ..." -$ CALL MAKE libpng.OLB "lib/crea libpng.olb *.obj" *.OBJ -$ write sys$output "Building pngtest..." -$ CALL MAKE pngtest.OBJ "cc ''CCOPT' pngtest" - - pngtest.c png.h pngconf.h pnglibconf.h -$ call make pngtest.exe - - "LINK pngtest,libpng.olb/lib,''zlibsrc'libz.olb/lib" - - pngtest.obj libpng.olb -$ write sys$output "Testing Libpng..." -$ run pngtest -$ else -$ if f$search("DESCRIP.MMS") .eqs. "" then copy/nolog [.SCRIPTS]DESCRIP.MMS [] -$ 'make'/macro=('comp',zlibsrc='zlibsrc') -$ endif -$ write sys$output "Libpng build completed" -$ exit -$! -$! -$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES -$ V = 'F$Verify(0) -$! P1 = What we are trying to make -$! P2 = Command to make it -$! P3 - P8 What it depends on -$ -$ If F$Search(P1) .Eqs. "" Then Goto Makeit -$ Time = F$CvTime(F$File(P1,"RDT")) -$arg=3 -$Loop: -$ Argument = P'arg -$ If Argument .Eqs. "" Then Goto Exit -$ El=0 -$Loop2: -$ File = F$Element(El," ",Argument) -$ If File .Eqs. " " Then Goto Endl -$ AFile = "" -$Loop3: -$ OFile = AFile -$ AFile = F$Search(File) -$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl -$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit -$ Goto Loop3 -$NextEL: -$ El = El + 1 -$ Goto Loop2 -$EndL: -$ arg=arg+1 -$ If arg .Le. 8 Then Goto Loop -$ Goto Exit -$ -$Makeit: -$ VV=F$VERIFY(0) -$ write sys$output P2 -$ 'P2 -$ VV='F$Verify(VV) -$Exit: -$ If V Then Set Verify -$ENDSUBROUTINE diff --git a/io2d/src/3rd-party/libpng/scripts/options.awk b/io2d/src/3rd-party/libpng/scripts/options.awk deleted file mode 100644 index 9aff15d..0000000 --- a/io2d/src/3rd-party/libpng/scripts/options.awk +++ /dev/null @@ -1,898 +0,0 @@ -#!/bin/awk -f -# scripts/options.awk - library build configuration control -# -# last changed in libpng version 1.5.7 - December 15, 2011 -# -# Copyright (c) 1998-2011 Glenn Randers-Pehrson -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# The output of this script is written to the file given by -# the variable 'out'. The script is run twice, once with -# an intermediate output file, 'options.tmp' then again on -# that file to produce the final output: -# -# awk -f scripts/options.awk out=options.tmp scripts/options.dfa 1>&2 -# awk -f scripts/options.awk out=options.dfn options.tmp 1>&2 -# -# Some options may be specified on the command line: -# -# deb=1 Causes debugging to be output -# logunsupported=1 Causes all options to be recorded in the output -# everything=off Causes all options to be disabled by default -# everything=on Causes all options to be enabled by default -# -# If awk fails on your platform, try nawk instead. -# -# These options may also be specified in the original input file (and -# are copied to the preprocessed file). - -BEGIN{ - out="" # intermediate, preprocessed, file - pre=-1 # preprocess (first line) - version="libpng version unknown" # version information - version_file="" # where to find the version - err=0 # in-line exit sets this - # The following definitions prevent the C preprocessor noticing the lines - # that will be in the final output file. Some C preprocessors tokenise - # the lines, for example by inserting spaces around operators, and all - # C preprocessors notice lines that start with '#', most remove comments. - # The technique adopted here is to make the final output lines into - # C strings (enclosed in double quotes), preceeded by PNG_DFN. As a - # consequence the output cannot contain a 'raw' double quote - instead put - # @' in, this will be replaced by a single " afterward. See the parser - # script dfn.awk for more capabilities (not required here). Note that if - # you need a " in a 'setting' in pnglibconf.dfa it must also be @'! - dq="@'" # For a single double quote - start=" PNG_DFN \"" # Start stuff to output (can't contain a "!) - end="\" " # End stuff to output - subs="@\" " # Substitute start (substitute a C macro) - sube=" \"@" # Substitute end - comment=start "/*" # Comment start - cend="*/" end # Comment end - def=start "#define PNG_" # Arbitrary define - sup="_SUPPORTED" end # end supported option - und=comment "#undef PNG_" # Unsupported option - une="_SUPPORTED" cend # end unsupported option - error=start "ERROR:" # error message, terminate with 'end' - - # Variables - deb=0 # debug - set on command line - everything="" # do not override defaults - logunsupported=0 # write unsupported options too - - # Precreate arrays - # for each option: - option[""] = "" # list of all options: default enabled/disabled - done[""] = 1 # marks option as having been output - requires[""] = "" # requires by option - iffs[""] = "" # if by option - enabledby[""] = "" # options that enable it by option - sets[""] = "" # settings set by each option - setval[""] = "" # value to set (indexed: 'option sets[option]') - # for each setting: - setting[""] = "" # requires by setting - defaults[""] = "" # used for a defaulted value - doneset[""] = 1 # marks setting as having been output - r[""] = "" # Temporary array - - # For decorating the output file - protect = "" -} - -# The output file must be specified before any input: -out == "" { - print "out=output.file must be given on the command line" - err = 1 - exit 1 -} - -# The very first line indicates whether we are reading pre-processed -# input or not, this must come *first* because 'PREPROCESSED' needs -# to be the very first line in the temporary file. -pre == -1{ - if ($0 == "PREPROCESSED") { - pre = 0 - next - } else { - pre = 1 - print "PREPROCESSED" >out - # And fall through to continue processing - } -} - -# While pre-processing if version is set to "search" look for a version string -# in the following file. -pre && version == "search" && version_file == ""{ - version_file = FILENAME -} - -pre && version == "search" && version_file != FILENAME{ - print "version string not found in", version_file - err = 1 - exit 1 -} - -pre && version == "search" && $0 ~ /^ \* libpng version/{ - version = substr($0, 4) - print "version =", version >out - next -} - -pre && FILENAME == version_file{ - next -} - -# variable=value -# Sets the given variable to the given value (the syntax is fairly -# free form, except for deb (you are expected to understand how to -# set the debug variable...) -# -# This happens before the check on 'pre' below skips most of the -# rest of the actions, so the variable settings happen during -# preprocessing but are recorded in the END action too. This -# allows them to be set on the command line too. -$0 ~ /^[ ]*version[ ]*=/{ - sub(/^[ ]*version[ ]*=[ ]*/, "") - version = $0 - next -} -$0 ~ /^[ ]*everything[ =]*off[ ]*$/{ - everything = "off" - next -} -$0 ~ /^[ ]*everything[ =]*on[ ]*$/{ - everything = "on" - next -} -$0 ~ /^[ ]*logunsupported[ =]*0[ ]*$/{ - logunsupported = 0 - next -} -$0 ~ /^[ ]*logunsupported[ =]*1[ ]*$/{ - logunsupported = 1 - next -} -$1 == "deb" && $2 == "=" && NF == 3{ - deb = $3 - next -} - -# Preprocessing - this just copies the input file with lines -# that need preprocessing (just chunk at present) expanded -# The bare "pre" instead of "pre != 0" crashes under Sunos awk -pre && $1 != "chunk"{ - print >out - next -} - -# The first characters of the line determine how it is processed, -# leading spaces are ignored. In general tokens that are not -# keywords are the names of options. An option 'name' is -# controlled by the definition of the corresponding macros: -# -# PNG_name_SUPPORTED The option is turned on -# PNG_NO_name -# PNG_NO_name_SUPPORTED If the first macro is not defined -# either of these will turn the option off -# -# If none of these macros are defined the option is turned on, unless -# the keyword 'off' is given in a line relating to the option. The -# keyword 'on' can also be given, but it will be ignored (since it is -# the default.) -# -# In the syntax below a 'name' is indicated by "NAME", other macro -# values are indicated by "MACRO", as with "NAME" the leading "PNG_" -# is omitted, but in this case the "NO_" prefix and the "_SUPPORTED" -# suffix are never used. -# -# Each line is introduced by a keyword - the first non-space characters -# on the line. A line starting with a '#' is a comment - it is totally -# ignored. Keywords are as follows, a NAME, is simply a macro name -# without the leading PNG_, PNG_NO_ or the trailing _SUPPORTED. - -$1 ~ /^#/ || $0 ~ /^[ ]*$/{ - next -} - -# com -# The whole line is placed in the output file as a comment with -# the preceding 'com' removed -$1 == "com"{ - if (NF > 1) { - # sub(/^[ ]*com[ ]*/, "") - $1 = "" - print comment $0, cend >out - } else - print start end >out - next -} - -# version -# Inserts a version comment -$1 == "version" && NF == 1{ - if (version == "") { - print "ERROR: no version string set" - err = 1 # prevent END{} running - exit 1 - } - - print comment, version, cend >out - next -} - -# file output input protect -# Informational: the official name of the input file (without -# make generated local directories), the official name of the -# output file and, if required, a name to use in a protection -# macro for the contents. -$1 == "file" && NF >= 2{ - print comment, $2, cend >out - print comment, "Machine generated file: DO NOT EDIT", cend >out - if (NF >= 3) - print comment, "Derived from:", $3, cend >out - protect = $4 - if (protect != "") { - print start "#ifndef", protect end >out - print start "#define", protect end >out - } - next -} - -# option NAME ( (requires|enables|if) NAME* | on | off | disabled | -# sets SETTING VALUE+ )* -# -# Declares an option 'NAME' and describes its default setting (disabled) -# and its relationship to other options. The option is disabled -# unless *all* the options listed after 'requires' are set and at -# least one of the options listed after 'if' is set. If the -# option is set then it turns on all the options listed after 'enables'. -# -# Note that "enables" takes priority over the required/if/disabled/off -# setting of the target option. -# -# The definition file may list an option as 'disabled': off by default, -# otherwise the option is enabled: on by default. A later (and it must -# be later) entry may turn an option on or off explicitly. - -$1 == "option" && NF >= 2{ - opt = $2 - sub(/,$/,"",opt) - onoff = option[opt] # records current (and the default is "", enabled) - key = "" - istart = 3 - do { - if (istart == 1) { # continuation line - val = getline - - if (val != 1) { # error reading it - if (val == 0) - print "option", opt ": ERROR: missing contination line" - else - print "option", opt ": ERROR: error reading continuation line" - - # This is a hard error - err = 1 # prevent END{} running - exit 1 - } - } - - for (i=istart; i<=NF; ++i) { - val=$(i) - sub(/,$/,"",val) - if (val == "on" || val == "off" || val == "disabled" || val =="enabled") { - key = "" - if (onoff != val) { - # on or off can zap disabled or enabled: - if (onoff == "" || (onoff == "disabled" || onoff == "enabled") && - (val == "on" || val == "off")) { - # It's easy to mis-spell the option when turning it - # on or off, so warn about it here: - if (onoff == "" && (val == "on" || val == "off")) { - print "option", opt ": ERROR: turning unrecognized option", val - # For the moment error out - it is safer - err = 1 # prevent END{} running - exit 1 - } - onoff = val - } else { - # Print a message, otherwise the error - # below is incomprehensible - print "option", opt ": currently", onoff ": attempt to turn", val - break - } - } - } else if (val == "requires" || val == "if" || val == "enables" || val =="sets") { - key = val - } else if (key == "requires") { - requires[opt] = requires[opt] " " val - } else if (key == "if") { - iffs[opt] = iffs[opt] " " val - } else if (key == "enables") { - enabledby[val] = enabledby[val] " " opt - } else if (key == "sets") { - sets[opt] = sets[opt] " " val - key = "setval" - set = val - } else if (key == "setval") { - setval[opt " " set] = setval[opt " " set] " " val - } else - break # bad line format - } - - istart = 1 - } while (i > NF && $0 ~ /,$/) - - if (i > NF) { - # Set the option, defaulting to 'enabled' - if (onoff == "") onoff = "enabled" - option[opt] = onoff - next - } - # Else fall through to the error handler -} - -# chunk NAME [requires OPT] [enables LIST] [on|off|disabled] -# Expands to the 'option' settings appropriate to the reading and -# writing of an ancilliary PNG chunk 'NAME': -# -# option READ_NAME requires READ_ANCILLARY_CHUNKS [READ_OPT] -# option READ_NAME enables NAME LIST -# [option READ_NAME off] -# option WRITE_NAME requires WRITE_ANCILLARY_CHUNKS [WRITE_OPT] -# option WRITE_NAME enables NAME LIST -# [option WRITE_NAME off] - -pre != 0 && $1 == "chunk" && NF >= 2{ - # 'chunk' is handled on the first pass by writing appropriate - # 'option' lines into the intermediate file. - opt = $2 - sub(/,$/,"",opt) - onoff = "" - reqread = "" - reqwrite = "" - enables = "" - req = 0 - istart = 3 - do { - if (istart == 1) { # continuation line - val = getline - - if (val != 1) { # error reading it - if (val == 0) - print "chunk", opt ": ERROR: missing contination line" - else - print "chunk", opt ": ERROR: error reading continuation line" - - # This is a hard error - err = 1 # prevent END{} running - exit 1 - } - } - - # read the keywords/additional OPTS - for (i=istart; i<=NF; ++i) { - val = $(i) - sub(/,$/,"",val) - if (val == "on" || val == "off" || val == "disabled") { - if (onoff != val) { - if (onoff == "") - onoff = val - else - break # on/off conflict - } - req = 0 - } else if (val == "requires") - req = 1 - else if (val == "enables") - req = 2 - else if (req == 1){ - reqread = reqread " READ_" val - reqwrite = reqwrite " WRITE_" val - } else if (req == 2) - enables = enables " " val - else - break # bad line: handled below - } - - istart = 1 - } while (i > NF && $0 ~ /,$/) - - if (i > NF) { - # Output new 'option' lines to the intermediate file (out) - print "option READ_" opt, "requires READ_ANCILLARY_CHUNKS" reqread, "enables", opt enables , onoff >out - print "option WRITE_" opt, "requires WRITE_ANCILLARY_CHUNKS" reqwrite, "enables", opt enables, onoff >out - next - } - # Else hit the error handler below - bad line format! -} - -# setting MACRO ( requires MACRO* )* [ default VALUE ] -# Behaves in a similar way to 'option' without looking for NO_ or -# _SUPPORTED; the macro is enabled if it is defined so long as all -# the 'requires' macros are also defined. The definitions may be -# empty, an error will be issued if the 'requires' macros are -# *not* defined. If given the 'default' value is used if the -# macro is not defined. The default value will be re-tokenised. -# (BTW: this is somewhat restrictive, it mainly exists for the -# support of non-standard configurations and numeric parameters, -# see the uses in scripts/options.dat - -$1 == "setting" && (NF == 2 || NF >= 3 && ($3 == "requires" || $3 == "default")){ - reqs = "" - deflt = "" - isdef = 0 - key = "" - for (i=3; i<=NF; ++i) - if ($(i) == "requires" || $(i) == "default") { - key = $(i) - if (key == "default") isdef = 1 - } else if (key == "requires") - reqs = reqs " " $(i) - else if (key == "default") - deflt = deflt " " $(i) - else - break # Format error, handled below - - setting[$2] = reqs - # NOTE: this overwrites a previous value silently - if (isdef && deflt == "") - deflt = " " # as a flag to force output - defaults[$2] = deflt - next -} - -# The order of the dependency lines (option, chunk, setting) is irrelevant -# - the 'enables', 'requires' and 'if' settings will be used to determine -# the correct order in the output and the final values in pnglibconf.h are -# not order dependent. 'requires' and 'if' entries take precedence over -# 'enables' from other options; if an option requires another option it -# won't be set regardless of any options that enable it unless the other -# option is also enabled. -# -# Similarly 'enables' trumps a NO_ definition in CFLAGS or pngusr.h -# -# For simplicity cycles in the definitions are regarded as errors, -# even if they are not ambiguous. -# A given NAME can be specified in as many 'option' lines as required, the -# definitions are additive. - -# For backwards compatibility equivalent macros may be listed thus: -# -# = [NO_]NAME MACRO -# Makes -DMACRO equivalent to -DPNG_NO_NAME or -DPNG_NAME_SUPPORTED -# as appropriate. -# -# The definition is injected into the C compiler input when encountered -# in the second pass (so all these definitions appear *after* the @ -# lines!) -# -# 'NAME' is as above, but 'MACRO' is the full text of the equivalent -# old, deprecated, macro. - -$1 == "=" && NF == 3{ - print "#ifdef PNG_" $3 >out - if ($2 ~ /^NO_/) - print "# define PNG_" $2 >out - else - print "# define PNG_" $2 "_SUPPORTED" >out - print "#endif" >out - next -} - -# Lines may be injected into the C compiler input by preceding them -# with an "@" character. The line is copied with just the leading -# @ removed. - -$1 ~ /^@/{ - # sub(/^[ ]*@/, "") - $1 = substr($1, 2) - print >out - next -} - -# Check for unreognized lines, because of the preprocessing chunk -# format errors will be detected on the first pass independent of -# any other format errors. -{ - print "options.awk: bad line (" NR "):", $0 - err = 1 # prevent END{} running - exit 1 -} - -# For checking purposes names that start with "ok_" or "fail_" are -# not output to pnglibconf.h and must be either enabled or disabled -# respectively for the build to succeed. This allows interdependencies -# between options of the form "at least one of" or "at most one of" -# to be checked. For example: -# -# option FLOATING_POINT enables ok_math -# option FIXED_POINT enables ok_math -# This ensures that at least one of FLOATING_POINT and FIXED_POINT -# must be set for the build to succeed. -# -# option fail_math requires FLOATING_POINT FIXED_POINT -# This means the build will fail if *both* FLOATING_POINT and -# FIXED_POINT are set (this is an example; in fact both are allowed.) -# -# If all these options were given the build would require exactly one -# of the names to be enabled. - -END{ - # END{} gets run on an exit (a traditional awk feature) - if (err) exit 1 - - if (pre) { - # Record the final value of the variables - print "deb =", deb >out - if (everything != "") { - print "everything =", everything >out - } - print "logunsupported =", logunsupported >out - exit 0 - } - - # Do the options first (allowing options to set settings). The dependency - # tree is thus: - # - # name > name - # name requires name - # name if name - # name enabledby name - # - # First build a list 'tree' by option of all the things on which - # it depends. - print "" >out - print "/* OPTIONS */" >out - print comment, "options", cend >out - for (opt in enabledby) tree[opt] = 1 # may not be explicit options - for (opt in option) if (opt != "") { - o = option[opt] - # option should always be one of the following values - if (o != "on" && o != "off" && o != "disabled" && o != "enabled") { - print "internal option error (" o ")" - exit 1 - } - tree[opt] = "" # so unlisted options marked - } - for (opt in tree) if (opt != "") { - if (tree[opt] == 1) { - tree[opt] = "" - if (option[opt] != "") { - print "internal error (1)" - exit 1 - } - # Macros only listed in 'enables' remain off unless - # one of the enabling macros is on. - option[opt] = "disabled" - } - - split("", list) # clear 'list' - # Now add every requires, iffs or enabledby entry to 'list' - # so that we can add a unique list of requirements to tree[i] - split(requires[opt] iffs[opt] enabledby[opt], r) - for (i in r) list[r[i]] = 1 - for (i in list) tree[opt] = tree[opt] " " i - } - - # print the tree for extreme debugging - if (deb > 2) for (i in tree) if (i != "") print i, "depends-on" tree[i] - - # Ok, now check all options marked explicitly 'on' or 'off': - # - # If an option[opt] is 'on' then turn on all requires[opt] - # If an option[opt] is 'off' then turn off all enabledby[opt] - # - # Error out if we have to turn 'on' an 'off' option or vice versa. - npending = 0 - for (opt in option) if (opt != "") { - if (option[opt] == "on" || option[opt] == "off") { - pending[++npending] = opt - } - } - - err = 0 # set on error - while (npending > 0) { - opt = pending[npending--] - if (option[opt] == "on") { - nreqs = split(requires[opt], r) - for (j=1; j<=nreqs; ++j) { - if (option[r[j]] == "off") { - print "option", opt, "turned on, but requirement", r[j], "is turned off" - err = 1 - } else if (option[r[j]] != "on") { - option[r[j]] = "on" - pending[++npending] = r[j] - } - } - } else { - if (option[opt] != "off") { - print "internal error (2)" - exit 1 - } - nreqs = split(enabledby[opt], r) - for (j=1; j<=nreqs; ++j) { - if (option[r[j]] == "on") { - print "option", opt, "turned off, but enabled by", r[j], "which is turned on" - err = 1 - } else if (option[r[j]] != "off") { - option[r[j]] = "off" - pending[++npending] = r[j] - } - } - } - } - if (err) exit 1 - - # Sort options: - print "PNG_DFN_START_SORT 2" >out - - # option[i] is now the complete list of all the tokens we may - # need to output, go through it as above, depth first. - finished = 0 - while (!finished) { - finished = 1 - movement = 0 # done nothing - for (i in option) if (!done[i]) { - nreqs = split(tree[i], r) - if (nreqs > 0) { - for (j=1; j<=nreqs; ++j) if (!done[r[j]]) { - break - } - if (j<=nreqs) { - finished = 0 - continue # next option - } - } - - # All the requirements have been processed, output - # this option. An option is _SUPPORTED if: - # - # all 'requires' are _SUPPORTED AND - # at least one of the 'if' options are _SUPPORTED AND - # EITHER: - # The name is _SUPPORTED (on the command line) - # OR: - # an 'enabledby' is _SUPPORTED - # OR: - # NO_name is not defined AND - # the option is not disabled; an option is disabled if: - # option == off - # option == disabled && everything != on - # option == "" && everything == off - if (deb) print "option", i - print "" >out - print "/* option:", i, option[i] >out - print " * requires: " requires[i] >out - print " * if: " iffs[i] >out - print " * enabled-by:" enabledby[i] >out - print " * sets: " sets[i], "*/" >out - print "#undef PNG_on" >out - print "#define PNG_on 1" >out - - # requires - nreqs = split(requires[i], r) - for (j=1; j<=nreqs; ++j) { - print "#ifndef PNG_" r[j] "_SUPPORTED" >out - print "# undef PNG_on /*!" r[j] "*/" >out - # this error appears in the final output if something - # was switched 'on' but the processing above to force - # the requires did not work - if (option[i] == "on") { - print error, i, "requires", r[j] end >out - } - print "#endif" >out - } - - # if - have_ifs = 0 - nreqs = split(iffs[i], r) - print "#undef PNG_no_if" >out - if (nreqs > 0) { - have_ifs = 1 - print "/* if" iffs[i], "*/" >out - print "#define PNG_no_if 1" >out - for (j=1; j<=nreqs; ++j) { - print "#ifdef PNG_" r[j] "_SUPPORTED" >out - print "# undef PNG_no_if /*" r[j] "*/" >out - print "#endif" >out - } - print "#ifdef PNG_no_if /*missing if*/" >out - print "# undef PNG_on" >out - # There is no checking above for this, because we - # don't know which 'if' to choose, so whine about - # it here: - if (option[i] == "on") { - print error, i, "needs one of:", iffs[i] end >out - } - print "#endif" >out - } - - print "#ifdef PNG_on /*requires, if*/" >out - # enables - print "# undef PNG_not_enabled" >out - print "# define PNG_not_enabled 1" >out - print " /* enabled by" enabledby[i], "*/" >out - nreqs = split(enabledby[i], r) - for (j=1; j<=nreqs; ++j) { - print "#ifdef PNG_" r[j] "_SUPPORTED" >out - print "# undef PNG_not_enabled /*" r[j] "*/" >out - # Oops, probably not intended (should be factored - # out by the checks above). - if (option[i] == "off") { - print error, i, "enabled by:", r[j] end >out - } - print "#endif" >out - } - - print "# ifndef PNG_" i "_SUPPORTED /*!command line*/" >out - print "# ifdef PNG_not_enabled /*!enabled*/" >out - # 'have_ifs' here means that everything = "off" still allows an 'if' on - # an otherwise enabled option to turn it on; otherwise the 'if' - # handling is effectively disabled by 'everything = off' - if (option[i] == "off" || option[i] == "disabled" && everything != "on" || option[i] == "enabled" && everything == "off" && !have_ifs) { - print "# undef PNG_on /*default off*/" >out - } else { - print "# ifdef PNG_NO_" i >out - print "# undef PNG_on /*turned off*/" >out - print "# endif" >out - print "# ifdef PNG_NO_" i "_SUPPORTED" >out - print "# undef PNG_on /*turned off*/" >out - print "# endif" >out - } - print "# endif /*!enabled*/" >out - print "# ifdef PNG_on" >out - # The _SUPPORTED macro must be defined so that dependent - # options output later work. - print "# define PNG_" i "_SUPPORTED" >out - print "# endif" >out - print "# endif /*!command line*/" >out - # If PNG_on is still set the option should be defined in - # pnglibconf.h - print "# ifdef PNG_on" >out - if (i ~ /^fail_/) { - print error, i, "is on: enabled by:" iffs[i] enabledby[i] ", requires" requires[i] end >out - } else if (i !~ /^ok_/) { - print def i sup >out - # Supported option, set required settings - nreqs = split(sets[i], r) - for (j=1; j<=nreqs; ++j) { - print "# ifdef PNG_set_" r[j] >out - # Some other option has already set a value: - print error, i, "sets", r[j] ": duplicate setting" end >out - print error, " previous value: " end "PNG_set_" r[j] >out - print "# else" >out - # Else set the default: note that this won't accept arbitrary - # values, the setval string must be acceptable to all the C - # compilers we use. That means it must be VERY simple; a number, - # a name or a string. - print "# define PNG_set_" r[j], setval[i " " r[j]] >out - print "# endif" >out - } - } - print "# endif /* definition */" >out - print "#endif /*requires, if*/" >out - if (logunsupported || i ~ /^ok_/) { - print "#ifndef PNG_on" >out - if (logunsupported) { - print und i une >out - } - if (i ~ /^ok_/) { - print error, i, "not enabled: requires:" requires[i] ", enabled by:" iffs[i] enabledby[i] end >out - } - print "#endif" >out - } - - done[i] = 1 - ++movement - } - - if (!finished && !movement) { - print "option: loop or missing option in dependency tree, cannot process:" - for (i in option) if (!done[i]) { - print " option", i, "depends on" tree[i], "needs:" - nreqs = split(tree[i], r) - if (nreqs > 0) for (j=1; j<=nreqs; ++j) if (!done[r[j]]) { - print " " r[j] - } - } - exit 1 - } - } - print "PNG_DFN_END_SORT" >out - print comment, "end of options", cend >out - - # Do the 'setting' values second, the algorithm the standard - # tree walk (O(1)) done in an O(2) while/for loop; interations - # settings x depth, outputing the deepest required macros - # first. - print "" >out - print "/* SETTINGS */" >out - print comment, "settings", cend >out - # Sort (in dfn.awk) on field 2, the setting name - print "PNG_DFN_START_SORT 2" >out - finished = 0 - while (!finished) { - finished = 1 - movement = 0 # done nothing - for (i in setting) if (!doneset[i]) { - nreqs = split(setting[i], r) - if (nreqs > 0) { - # By default assume the requires values are options, but if there - # is no option with that name check for a setting - for (j=1; j<=nreqs; ++j) if (option[r[j]] == "" && !doneset[r[j]]) { - break - } - if (j<=nreqs) { - finished = 0 - continue # try a different setting - } - } - - # All the requirements have been processed, output - # this setting. - if (deb) print "setting", i - deflt = defaults[i] - # Remove any spurious trailing spaces - sub(/ *$/,"",deflt) - # A leading @ means leave it unquoted so the preprocessor - # can substitute the build time value - if (deflt ~ /^ @/) - deflt = " " subs substr(deflt, 3) sube - print "" >out - print "/* setting: ", i >out - print " * requires:" setting[i] >out - print " * default: ", defaults[i] deflt, "*/" >out - for (j=1; j<=nreqs; ++j) { - if (option[r[j]] != "") - print "#ifndef PNG_" r[j] "_SUPPORTED" >out - else - print "#ifndef PNG_" r[j] >out - print error, i, "requires", r[j] end >out - print "# endif" >out - } - # The precedence is: - # - # 1) External definition; trumps: - # 2) Option 'sets' value; trumps: - # 3) Setting 'default' - # - print "#ifdef PNG_" i >out - # PNG_ is defined, so substitute the value: - print def i, subs "PNG_" i sube end >out - print "#else /* use default */" >out - print "# ifdef PNG_set_" i >out - # Value from an option 'sets' argument - print def i, subs "PNG_set_" i sube end >out - # This is so that subsequent tests on the setting work: - print "# define PNG_" i, "1" >out - if (defaults[i] != "") { - print "# else /*default*/" >out - print def i deflt end >out - print "# define PNG_" i, "1" >out - } - print "# endif /* defaults */" >out - print "#endif /* setting", i, "*/" >out - - doneset[i] = 1 - ++movement - } - - if (!finished && !movement) { - print "setting: loop or missing setting in 'requires', cannot process:" - for (i in setting) if (!doneset[i]) { - print " setting", i, "requires" setting[i] - } - exit 1 - } - } - print "PNG_DFN_END_SORT" >out - print comment, "end of settings", cend >out - - # Regular end - everything looks ok - if (protect != "") { - print start "#endif", "/*", protect, "*/" end >out - } -} diff --git a/io2d/src/3rd-party/libpng/scripts/pnglibconf.dfa b/io2d/src/3rd-party/libpng/scripts/pnglibconf.dfa deleted file mode 100644 index 0e98058..0000000 --- a/io2d/src/3rd-party/libpng/scripts/pnglibconf.dfa +++ /dev/null @@ -1,886 +0,0 @@ -# scripts/pnglibconf.dfa - library build configuration control -# -@/*- pnglibconf.dfn intermediate file -@ * generated from scripts/pnglibconf.dfa -@ */ -# -com pnglibconf.h - library build configuration -com -version -com -com Copyright (c) 1998-2012 Glenn Randers-Pehrson -com -com This code is released under the libpng license. -com For conditions of distribution and use, see the disclaimer -com and license in png.h -com - -file pnglibconf.h scripts/pnglibconf.dfa PNGLCONF_H - -# This file is preprocessed by scripts/options.awk and the -# C compiler to generate 'pnglibconf.h' - a list of all the -# configuration options. The file lists the various options -# that can *only* be specified during the libpng build; -# pnglibconf.h freezes the definitions selected for the specific -# build. -# -# The syntax is detailed in scripts/options.awk; this is a summary -# only: -# -# setting [requires ...] [default] -# #define PNG_ /* value comes from current setting */ -# option [requires ...] [if ...] [enables ...] [disabled] -# #define PNG__SUPPORTED if the requirements are met and -# enable the other options listed -# chunk [requires ...] [enables ...] [disabled] -# Enable chunk processing for the given ancillary chunk; any -# 'requires something' expands to READ_something for read and -# WRITE_something for write, but the enables list members are -# used as given (e.g. enables GAMMA just expands to that on the -# correspond READ_name and WRITE_name lines.) -# -# "," may be used to separate options on an 'option' line and is ignored; it -# doesn't change the meaning of the line. (NOT setting, where "," becomes -# part of the setting!) A comma at the end of an option line causes a -# continuation (the next line is included in the option too.) -# -# Note that the 'on' and 'off' keywords, while valid on both option -# and chunk, should not be used in this file because they force the -# relevant options on or off. - -#---------------------------------------------------------------------- - -# The following setting, option and chunk values can all be changed -# while building libpng: -# -# setting: change 'setting' lines to fine tune library performance; -# changes to the settings don't affect the libpng API functionally -# -# option: change 'option' lines to remove or add capabilities from -# or to the library; options change the library API -# -# chunk: change 'chunk' lines to remove capabilities to process -# optional ('ancillary') chunks. This does not prevent PNG -# decoding but does change the libpng API because some chunks -# will be ignored. -# -# There are three ways of disabling features, in no particular order: -# -# 1) Create 'pngusr.h', enter the required private build information -# detailed below and #define PNG_NO_

    %dT8#&n9#M4$?9@Y?VN*Gm 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. For example, if your KeyFile is -// located in the project directory, you would specify the AssemblyKeyFile -// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] -// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework -// documentation for more information on this. -// -[assembly: AssemblyDelaySign(false)] -[assembly: AssemblyKeyFile("")] -[assembly: AssemblyKeyName("")] diff --git a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs deleted file mode 100644 index b110dae..0000000 --- a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs +++ /dev/null @@ -1,202 +0,0 @@ -// -// © Copyright Henrik Ravn 2004 -// -// Use, modification and distribution are subject to the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -using System; -using System.Runtime.InteropServices; -using System.Text; - - -namespace DotZLib -{ - #region ChecksumGeneratorBase - ///

    - /// Implements the common functionality needed for all s - /// - /// - public abstract class ChecksumGeneratorBase : ChecksumGenerator - { - /// - /// The value of the current checksum - /// - protected uint _current; - - /// - /// Initializes a new instance of the checksum generator base - the current checksum is - /// set to zero - /// - public ChecksumGeneratorBase() - { - _current = 0; - } - - /// - /// Initializes a new instance of the checksum generator basewith a specified value - /// - /// The value to set the current checksum to - public ChecksumGeneratorBase(uint initialValue) - { - _current = initialValue; - } - - /// - /// Resets the current checksum to zero - /// - public void Reset() { _current = 0; } - - /// - /// Gets the current checksum value - /// - public uint Value { get { return _current; } } - - /// - /// Updates the current checksum with part of an array of bytes - /// - /// The data to update the checksum with - /// Where in data to start updating - /// The number of bytes from data to use - /// The sum of offset and count is larger than the length of data - /// data is a null reference - /// Offset or count is negative. - /// All the other Update methods are implmeneted in terms of this one. - /// This is therefore the only method a derived class has to implement - public abstract void Update(byte[] data, int offset, int count); - - /// - /// Updates the current checksum with an array of bytes. - /// - /// The data to update the checksum with - public void Update(byte[] data) - { - Update(data, 0, data.Length); - } - - /// - /// Updates the current checksum with the data from a string - /// - /// The string to update the checksum with - /// The characters in the string are converted by the UTF-8 encoding - public void Update(string data) - { - Update(Encoding.UTF8.GetBytes(data)); - } - - /// - /// Updates the current checksum with the data from a string, using a specific encoding - /// - /// The string to update the checksum with - /// The encoding to use - public void Update(string data, Encoding encoding) - { - Update(encoding.GetBytes(data)); - } - - } - #endregion - - #region CRC32 - /// - /// Implements a CRC32 checksum generator - /// - public sealed class CRC32Checksum : ChecksumGeneratorBase - { - #region DLL imports - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern uint crc32(uint crc, int data, uint length); - - #endregion - - /// - /// Initializes a new instance of the CRC32 checksum generator - /// - public CRC32Checksum() : base() {} - - /// - /// Initializes a new instance of the CRC32 checksum generator with a specified value - /// - /// The value to set the current checksum to - public CRC32Checksum(uint initialValue) : base(initialValue) {} - - /// - /// Updates the current checksum with part of an array of bytes - /// - /// The data to update the checksum with - /// Where in data to start updating - /// The number of bytes from data to use - /// The sum of offset and count is larger than the length of data - /// data is a null reference - /// Offset or count is negative. - public override void Update(byte[] data, int offset, int count) - { - if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); - if ((offset+count) > data.Length) throw new ArgumentException(); - GCHandle hData = GCHandle.Alloc(data, GCHandleType.Pinned); - try - { - _current = crc32(_current, hData.AddrOfPinnedObject().ToInt32()+offset, (uint)count); - } - finally - { - hData.Free(); - } - } - - } - #endregion - - #region Adler - /// - /// Implements a checksum generator that computes the Adler checksum on data - /// - public sealed class AdlerChecksum : ChecksumGeneratorBase - { - #region DLL imports - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern uint adler32(uint adler, int data, uint length); - - #endregion - - /// - /// Initializes a new instance of the Adler checksum generator - /// - public AdlerChecksum() : base() {} - - /// - /// Initializes a new instance of the Adler checksum generator with a specified value - /// - /// The value to set the current checksum to - public AdlerChecksum(uint initialValue) : base(initialValue) {} - - /// - /// Updates the current checksum with part of an array of bytes - /// - /// The data to update the checksum with - /// Where in data to start updating - /// The number of bytes from data to use - /// The sum of offset and count is larger than the length of data - /// data is a null reference - /// Offset or count is negative. - public override void Update(byte[] data, int offset, int count) - { - if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); - if ((offset+count) > data.Length) throw new ArgumentException(); - GCHandle hData = GCHandle.Alloc(data, GCHandleType.Pinned); - try - { - _current = adler32(_current, hData.AddrOfPinnedObject().ToInt32()+offset, (uint)count); - } - finally - { - hData.Free(); - } - } - - } - #endregion - -} \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs deleted file mode 100644 index 9c8d601..0000000 --- a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs +++ /dev/null @@ -1,83 +0,0 @@ -// -// © Copyright Henrik Ravn 2004 -// -// Use, modification and distribution are subject to the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -using System; -using System.Diagnostics; - -namespace DotZLib -{ - - /// - /// This class implements a circular buffer - /// - internal class CircularBuffer - { - #region Private data - private int _capacity; - private int _head; - private int _tail; - private int _size; - private byte[] _buffer; - #endregion - - public CircularBuffer(int capacity) - { - Debug.Assert( capacity > 0 ); - _buffer = new byte[capacity]; - _capacity = capacity; - _head = 0; - _tail = 0; - _size = 0; - } - - public int Size { get { return _size; } } - - public int Put(byte[] source, int offset, int count) - { - Debug.Assert( count > 0 ); - int trueCount = Math.Min(count, _capacity - Size); - for (int i = 0; i < trueCount; ++i) - _buffer[(_tail+i) % _capacity] = source[offset+i]; - _tail += trueCount; - _tail %= _capacity; - _size += trueCount; - return trueCount; - } - - public bool Put(byte b) - { - if (Size == _capacity) // no room - return false; - _buffer[_tail++] = b; - _tail %= _capacity; - ++_size; - return true; - } - - public int Get(byte[] destination, int offset, int count) - { - int trueCount = Math.Min(count,Size); - for (int i = 0; i < trueCount; ++i) - destination[offset + i] = _buffer[(_head+i) % _capacity]; - _head += trueCount; - _head %= _capacity; - _size -= trueCount; - return trueCount; - } - - public int Get() - { - if (Size == 0) - return -1; - - int result = (int)_buffer[_head++ % _capacity]; - --_size; - return result; - } - - } -} diff --git a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/CodecBase.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/CodecBase.cs deleted file mode 100644 index b0eb78a..0000000 --- a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/CodecBase.cs +++ /dev/null @@ -1,198 +0,0 @@ -// -// © Copyright Henrik Ravn 2004 -// -// Use, modification and distribution are subject to the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -using System; -using System.Runtime.InteropServices; - -namespace DotZLib -{ - /// - /// Implements the common functionality needed for all s - /// - public abstract class CodecBase : Codec, IDisposable - { - - #region Data members - - /// - /// Instance of the internal zlib buffer structure that is - /// passed to all functions in the zlib dll - /// - internal ZStream _ztream = new ZStream(); - - /// - /// True if the object instance has been disposed, false otherwise - /// - protected bool _isDisposed = false; - - /// - /// The size of the internal buffers - /// - protected const int kBufferSize = 16384; - - private byte[] _outBuffer = new byte[kBufferSize]; - private byte[] _inBuffer = new byte[kBufferSize]; - - private GCHandle _hInput; - private GCHandle _hOutput; - - private uint _checksum = 0; - - #endregion - - /// - /// Initializes a new instance of the CodeBase class. - /// - public CodecBase() - { - try - { - _hInput = GCHandle.Alloc(_inBuffer, GCHandleType.Pinned); - _hOutput = GCHandle.Alloc(_outBuffer, GCHandleType.Pinned); - } - catch (Exception) - { - CleanUp(false); - throw; - } - } - - - #region Codec Members - - /// - /// Occurs when more processed data are available. - /// - public event DataAvailableHandler DataAvailable; - - /// - /// Fires the event - /// - protected void OnDataAvailable() - { - if (_ztream.total_out > 0) - { - if (DataAvailable != null) - DataAvailable( _outBuffer, 0, (int)_ztream.total_out); - resetOutput(); - } - } - - /// - /// Adds more data to the codec to be processed. - /// - /// Byte array containing the data to be added to the codec - /// Adding data may, or may not, raise the DataAvailable event - public void Add(byte[] data) - { - Add(data,0,data.Length); - } - - /// - /// Adds more data to the codec to be processed. - /// - /// Byte array containing the data to be added to the codec - /// The index of the first byte to add from data - /// The number of bytes to add - /// Adding data may, or may not, raise the DataAvailable event - /// This must be implemented by a derived class - public abstract void Add(byte[] data, int offset, int count); - - /// - /// Finishes up any pending data that needs to be processed and handled. - /// - /// This must be implemented by a derived class - public abstract void Finish(); - - /// - /// Gets the checksum of the data that has been added so far - /// - public uint Checksum { get { return _checksum; } } - - #endregion - - #region Destructor & IDisposable stuff - - /// - /// Destroys this instance - /// - ~CodecBase() - { - CleanUp(false); - } - - /// - /// Releases any unmanaged resources and calls the method of the derived class - /// - public void Dispose() - { - CleanUp(true); - } - - /// - /// Performs any codec specific cleanup - /// - /// This must be implemented by a derived class - protected abstract void CleanUp(); - - // performs the release of the handles and calls the dereived CleanUp() - private void CleanUp(bool isDisposing) - { - if (!_isDisposed) - { - CleanUp(); - if (_hInput.IsAllocated) - _hInput.Free(); - if (_hOutput.IsAllocated) - _hOutput.Free(); - - _isDisposed = true; - } - } - - - #endregion - - #region Helper methods - - /// - /// Copies a number of bytes to the internal codec buffer - ready for proccesing - /// - /// The byte array that contains the data to copy - /// The index of the first byte to copy - /// The number of bytes to copy from data - protected void copyInput(byte[] data, int startIndex, int count) - { - Array.Copy(data, startIndex, _inBuffer,0, count); - _ztream.next_in = _hInput.AddrOfPinnedObject(); - _ztream.total_in = 0; - _ztream.avail_in = (uint)count; - - } - - /// - /// Resets the internal output buffers to a known state - ready for processing - /// - protected void resetOutput() - { - _ztream.total_out = 0; - _ztream.avail_out = kBufferSize; - _ztream.next_out = _hOutput.AddrOfPinnedObject(); - } - - /// - /// Updates the running checksum property - /// - /// The new checksum value - protected void setChecksum(uint newSum) - { - _checksum = newSum; - } - #endregion - - } -} diff --git a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/Deflater.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/Deflater.cs deleted file mode 100644 index 9039f41..0000000 --- a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/Deflater.cs +++ /dev/null @@ -1,106 +0,0 @@ -// -// © Copyright Henrik Ravn 2004 -// -// Use, modification and distribution are subject to the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -using System; -using System.Diagnostics; -using System.Runtime.InteropServices; - -namespace DotZLib -{ - - /// - /// Implements a data compressor, using the deflate algorithm in the ZLib dll - /// - public sealed class Deflater : CodecBase - { - #region Dll imports - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Ansi)] - private static extern int deflateInit_(ref ZStream sz, int level, string vs, int size); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int deflate(ref ZStream sz, int flush); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int deflateReset(ref ZStream sz); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int deflateEnd(ref ZStream sz); - #endregion - - /// - /// Constructs an new instance of the Deflater - /// - /// The compression level to use for this Deflater - public Deflater(CompressLevel level) : base() - { - int retval = deflateInit_(ref _ztream, (int)level, Info.Version, Marshal.SizeOf(_ztream)); - if (retval != 0) - throw new ZLibException(retval, "Could not initialize deflater"); - - resetOutput(); - } - - /// - /// Adds more data to the codec to be processed. - /// - /// Byte array containing the data to be added to the codec - /// The index of the first byte to add from data - /// The number of bytes to add - /// Adding data may, or may not, raise the DataAvailable event - public override void Add(byte[] data, int offset, int count) - { - if (data == null) throw new ArgumentNullException(); - if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); - if ((offset+count) > data.Length) throw new ArgumentException(); - - int total = count; - int inputIndex = offset; - int err = 0; - - while (err >= 0 && inputIndex < total) - { - copyInput(data, inputIndex, Math.Min(total - inputIndex, kBufferSize)); - while (err >= 0 && _ztream.avail_in > 0) - { - err = deflate(ref _ztream, (int)FlushTypes.None); - if (err == 0) - while (_ztream.avail_out == 0) - { - OnDataAvailable(); - err = deflate(ref _ztream, (int)FlushTypes.None); - } - inputIndex += (int)_ztream.total_in; - } - } - setChecksum( _ztream.adler ); - } - - - /// - /// Finishes up any pending data that needs to be processed and handled. - /// - public override void Finish() - { - int err; - do - { - err = deflate(ref _ztream, (int)FlushTypes.Finish); - OnDataAvailable(); - } - while (err == 0); - setChecksum( _ztream.adler ); - deflateReset(ref _ztream); - resetOutput(); - } - - /// - /// Closes the internal zlib deflate stream - /// - protected override void CleanUp() { deflateEnd(ref _ztream); } - - } -} diff --git a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.cs deleted file mode 100644 index 90c7c3b..0000000 --- a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.cs +++ /dev/null @@ -1,288 +0,0 @@ -// -// © Copyright Henrik Ravn 2004 -// -// Use, modification and distribution are subject to the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -using System; -using System.IO; -using System.Runtime.InteropServices; -using System.Text; - - -namespace DotZLib -{ - - #region Internal types - - /// - /// Defines constants for the various flush types used with zlib - /// - internal enum FlushTypes - { - None, Partial, Sync, Full, Finish, Block - } - - #region ZStream structure - // internal mapping of the zlib zstream structure for marshalling - [StructLayoutAttribute(LayoutKind.Sequential, Pack=4, Size=0, CharSet=CharSet.Ansi)] - internal struct ZStream - { - public IntPtr next_in; - public uint avail_in; - public uint total_in; - - public IntPtr next_out; - public uint avail_out; - public uint total_out; - - [MarshalAs(UnmanagedType.LPStr)] - string msg; - uint state; - - uint zalloc; - uint zfree; - uint opaque; - - int data_type; - public uint adler; - uint reserved; - } - - #endregion - - #endregion - - #region Public enums - /// - /// Defines constants for the available compression levels in zlib - /// - public enum CompressLevel : int - { - /// - /// The default compression level with a reasonable compromise between compression and speed - /// - Default = -1, - /// - /// No compression at all. The data are passed straight through. - /// - None = 0, - /// - /// The maximum compression rate available. - /// - Best = 9, - /// - /// The fastest available compression level. - /// - Fastest = 1 - } - #endregion - - #region Exception classes - /// - /// The exception that is thrown when an error occurs on the zlib dll - /// - public class ZLibException : ApplicationException - { - /// - /// Initializes a new instance of the class with a specified - /// error message and error code - /// - /// The zlib error code that caused the exception - /// A message that (hopefully) describes the error - public ZLibException(int errorCode, string msg) : base(String.Format("ZLib error {0} {1}", errorCode, msg)) - { - } - - /// - /// Initializes a new instance of the class with a specified - /// error code - /// - /// The zlib error code that caused the exception - public ZLibException(int errorCode) : base(String.Format("ZLib error {0}", errorCode)) - { - } - } - #endregion - - #region Interfaces - - /// - /// Declares methods and properties that enables a running checksum to be calculated - /// - public interface ChecksumGenerator - { - /// - /// Gets the current value of the checksum - /// - uint Value { get; } - - /// - /// Clears the current checksum to 0 - /// - void Reset(); - - /// - /// Updates the current checksum with an array of bytes - /// - /// The data to update the checksum with - void Update(byte[] data); - - /// - /// Updates the current checksum with part of an array of bytes - /// - /// The data to update the checksum with - /// Where in data to start updating - /// The number of bytes from data to use - /// The sum of offset and count is larger than the length of data - /// data is a null reference - /// Offset or count is negative. - void Update(byte[] data, int offset, int count); - - /// - /// Updates the current checksum with the data from a string - /// - /// The string to update the checksum with - /// The characters in the string are converted by the UTF-8 encoding - void Update(string data); - - /// - /// Updates the current checksum with the data from a string, using a specific encoding - /// - /// The string to update the checksum with - /// The encoding to use - void Update(string data, Encoding encoding); - } - - - /// - /// Represents the method that will be called from a codec when new data - /// are available. - /// - /// The byte array containing the processed data - /// The index of the first processed byte in data - /// The number of processed bytes available - /// On return from this method, the data may be overwritten, so grab it while you can. - /// You cannot assume that startIndex will be zero. - /// - public delegate void DataAvailableHandler(byte[] data, int startIndex, int count); - - /// - /// Declares methods and events for implementing compressors/decompressors - /// - public interface Codec - { - /// - /// Occurs when more processed data are available. - /// - event DataAvailableHandler DataAvailable; - - /// - /// Adds more data to the codec to be processed. - /// - /// Byte array containing the data to be added to the codec - /// Adding data may, or may not, raise the DataAvailable event - void Add(byte[] data); - - /// - /// Adds more data to the codec to be processed. - /// - /// Byte array containing the data to be added to the codec - /// The index of the first byte to add from data - /// The number of bytes to add - /// Adding data may, or may not, raise the DataAvailable event - void Add(byte[] data, int offset, int count); - - /// - /// Finishes up any pending data that needs to be processed and handled. - /// - void Finish(); - - /// - /// Gets the checksum of the data that has been added so far - /// - uint Checksum { get; } - - - } - - #endregion - - #region Classes - /// - /// Encapsulates general information about the ZLib library - /// - public class Info - { - #region DLL imports - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern uint zlibCompileFlags(); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern string zlibVersion(); - #endregion - - #region Private stuff - private uint _flags; - - // helper function that unpacks a bitsize mask - private static int bitSize(uint bits) - { - switch (bits) - { - case 0: return 16; - case 1: return 32; - case 2: return 64; - } - return -1; - } - #endregion - - /// - /// Constructs an instance of the Info class. - /// - public Info() - { - _flags = zlibCompileFlags(); - } - - /// - /// True if the library is compiled with debug info - /// - public bool HasDebugInfo { get { return 0 != (_flags & 0x100); } } - - /// - /// True if the library is compiled with assembly optimizations - /// - public bool UsesAssemblyCode { get { return 0 != (_flags & 0x200); } } - - /// - /// Gets the size of the unsigned int that was compiled into Zlib - /// - public int SizeOfUInt { get { return bitSize(_flags & 3); } } - - /// - /// Gets the size of the unsigned long that was compiled into Zlib - /// - public int SizeOfULong { get { return bitSize((_flags >> 2) & 3); } } - - /// - /// Gets the size of the pointers that were compiled into Zlib - /// - public int SizeOfPointer { get { return bitSize((_flags >> 4) & 3); } } - - /// - /// Gets the size of the z_off_t type that was compiled into Zlib - /// - public int SizeOfOffset { get { return bitSize((_flags >> 6) & 3); } } - - /// - /// Gets the version of ZLib as a string, e.g. "1.2.1" - /// - public static string Version { get { return zlibVersion(); } } - } - - #endregion - -} diff --git a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj deleted file mode 100644 index dea7fb1..0000000 --- a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/GZipStream.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/GZipStream.cs deleted file mode 100644 index f0eada1..0000000 --- a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/GZipStream.cs +++ /dev/null @@ -1,301 +0,0 @@ -// -// © Copyright Henrik Ravn 2004 -// -// Use, modification and distribution are subject to the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -using System; -using System.IO; -using System.Runtime.InteropServices; - -namespace DotZLib -{ - /// - /// Implements a compressed , in GZip (.gz) format. - /// - public class GZipStream : Stream, IDisposable - { - #region Dll Imports - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Ansi)] - private static extern IntPtr gzopen(string name, string mode); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int gzclose(IntPtr gzFile); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int gzwrite(IntPtr gzFile, int data, int length); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int gzread(IntPtr gzFile, int data, int length); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int gzgetc(IntPtr gzFile); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int gzputc(IntPtr gzFile, int c); - - #endregion - - #region Private data - private IntPtr _gzFile; - private bool _isDisposed = false; - private bool _isWriting; - #endregion - - #region Constructors - /// - /// Creates a new file as a writeable GZipStream - /// - /// The name of the compressed file to create - /// The compression level to use when adding data - /// If an error occurred in the internal zlib function - public GZipStream(string fileName, CompressLevel level) - { - _isWriting = true; - _gzFile = gzopen(fileName, String.Format("wb{0}", (int)level)); - if (_gzFile == IntPtr.Zero) - throw new ZLibException(-1, "Could not open " + fileName); - } - - /// - /// Opens an existing file as a readable GZipStream - /// - /// The name of the file to open - /// If an error occurred in the internal zlib function - public GZipStream(string fileName) - { - _isWriting = false; - _gzFile = gzopen(fileName, "rb"); - if (_gzFile == IntPtr.Zero) - throw new ZLibException(-1, "Could not open " + fileName); - - } - #endregion - - #region Access properties - /// - /// Returns true of this stream can be read from, false otherwise - /// - public override bool CanRead - { - get - { - return !_isWriting; - } - } - - - /// - /// Returns false. - /// - public override bool CanSeek - { - get - { - return false; - } - } - - /// - /// Returns true if this tsream is writeable, false otherwise - /// - public override bool CanWrite - { - get - { - return _isWriting; - } - } - #endregion - - #region Destructor & IDispose stuff - - /// - /// Destroys this instance - /// - ~GZipStream() - { - cleanUp(false); - } - - /// - /// Closes the external file handle - /// - public void Dispose() - { - cleanUp(true); - } - - // Does the actual closing of the file handle. - private void cleanUp(bool isDisposing) - { - if (!_isDisposed) - { - gzclose(_gzFile); - _isDisposed = true; - } - } - #endregion - - #region Basic reading and writing - /// - /// Attempts to read a number of bytes from the stream. - /// - /// The destination data buffer - /// The index of the first destination byte in buffer - /// The number of bytes requested - /// The number of bytes read - /// If buffer is null - /// If count or offset are negative - /// If offset + count is > buffer.Length - /// If this stream is not readable. - /// If this stream has been disposed. - public override int Read(byte[] buffer, int offset, int count) - { - if (!CanRead) throw new NotSupportedException(); - if (buffer == null) throw new ArgumentNullException(); - if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); - if ((offset+count) > buffer.Length) throw new ArgumentException(); - if (_isDisposed) throw new ObjectDisposedException("GZipStream"); - - GCHandle h = GCHandle.Alloc(buffer, GCHandleType.Pinned); - int result; - try - { - result = gzread(_gzFile, h.AddrOfPinnedObject().ToInt32() + offset, count); - if (result < 0) - throw new IOException(); - } - finally - { - h.Free(); - } - return result; - } - - /// - /// Attempts to read a single byte from the stream. - /// - /// The byte that was read, or -1 in case of error or End-Of-File - public override int ReadByte() - { - if (!CanRead) throw new NotSupportedException(); - if (_isDisposed) throw new ObjectDisposedException("GZipStream"); - return gzgetc(_gzFile); - } - - /// - /// Writes a number of bytes to the stream - /// - /// - /// - /// - /// If buffer is null - /// If count or offset are negative - /// If offset + count is > buffer.Length - /// If this stream is not writeable. - /// If this stream has been disposed. - public override void Write(byte[] buffer, int offset, int count) - { - if (!CanWrite) throw new NotSupportedException(); - if (buffer == null) throw new ArgumentNullException(); - if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); - if ((offset+count) > buffer.Length) throw new ArgumentException(); - if (_isDisposed) throw new ObjectDisposedException("GZipStream"); - - GCHandle h = GCHandle.Alloc(buffer, GCHandleType.Pinned); - try - { - int result = gzwrite(_gzFile, h.AddrOfPinnedObject().ToInt32() + offset, count); - if (result < 0) - throw new IOException(); - } - finally - { - h.Free(); - } - } - - /// - /// Writes a single byte to the stream - /// - /// The byte to add to the stream. - /// If this stream is not writeable. - /// If this stream has been disposed. - public override void WriteByte(byte value) - { - if (!CanWrite) throw new NotSupportedException(); - if (_isDisposed) throw new ObjectDisposedException("GZipStream"); - - int result = gzputc(_gzFile, (int)value); - if (result < 0) - throw new IOException(); - } - #endregion - - #region Position & length stuff - /// - /// Not supported. - /// - /// - /// Always thrown - public override void SetLength(long value) - { - throw new NotSupportedException(); - } - - /// - /// Not suppported. - /// - /// - /// - /// - /// Always thrown - public override long Seek(long offset, SeekOrigin origin) - { - throw new NotSupportedException(); - } - - /// - /// Flushes the GZipStream. - /// - /// In this implementation, this method does nothing. This is because excessive - /// flushing may degrade the achievable compression rates. - public override void Flush() - { - // left empty on purpose - } - - /// - /// Gets/sets the current position in the GZipStream. Not suppported. - /// - /// In this implementation this property is not supported - /// Always thrown - public override long Position - { - get - { - throw new NotSupportedException(); - } - set - { - throw new NotSupportedException(); - } - } - - /// - /// Gets the size of the stream. Not suppported. - /// - /// In this implementation this property is not supported - /// Always thrown - public override long Length - { - get - { - throw new NotSupportedException(); - } - } - #endregion - } -} diff --git a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/Inflater.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/Inflater.cs deleted file mode 100644 index d295f26..0000000 --- a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/Inflater.cs +++ /dev/null @@ -1,105 +0,0 @@ -// -// © Copyright Henrik Ravn 2004 -// -// Use, modification and distribution are subject to the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -using System; -using System.Diagnostics; -using System.Runtime.InteropServices; - -namespace DotZLib -{ - - /// - /// Implements a data decompressor, using the inflate algorithm in the ZLib dll - /// - public class Inflater : CodecBase - { - #region Dll imports - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Ansi)] - private static extern int inflateInit_(ref ZStream sz, string vs, int size); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int inflate(ref ZStream sz, int flush); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int inflateReset(ref ZStream sz); - - [DllImport("ZLIB1.dll", CallingConvention=CallingConvention.Cdecl)] - private static extern int inflateEnd(ref ZStream sz); - #endregion - - /// - /// Constructs an new instance of the Inflater - /// - public Inflater() : base() - { - int retval = inflateInit_(ref _ztream, Info.Version, Marshal.SizeOf(_ztream)); - if (retval != 0) - throw new ZLibException(retval, "Could not initialize inflater"); - - resetOutput(); - } - - - /// - /// Adds more data to the codec to be processed. - /// - /// Byte array containing the data to be added to the codec - /// The index of the first byte to add from data - /// The number of bytes to add - /// Adding data may, or may not, raise the DataAvailable event - public override void Add(byte[] data, int offset, int count) - { - if (data == null) throw new ArgumentNullException(); - if (offset < 0 || count < 0) throw new ArgumentOutOfRangeException(); - if ((offset+count) > data.Length) throw new ArgumentException(); - - int total = count; - int inputIndex = offset; - int err = 0; - - while (err >= 0 && inputIndex < total) - { - copyInput(data, inputIndex, Math.Min(total - inputIndex, kBufferSize)); - err = inflate(ref _ztream, (int)FlushTypes.None); - if (err == 0) - while (_ztream.avail_out == 0) - { - OnDataAvailable(); - err = inflate(ref _ztream, (int)FlushTypes.None); - } - - inputIndex += (int)_ztream.total_in; - } - setChecksum( _ztream.adler ); - } - - - /// - /// Finishes up any pending data that needs to be processed and handled. - /// - public override void Finish() - { - int err; - do - { - err = inflate(ref _ztream, (int)FlushTypes.Finish); - OnDataAvailable(); - } - while (err == 0); - setChecksum( _ztream.adler ); - inflateReset(ref _ztream); - resetOutput(); - } - - /// - /// Closes the internal zlib inflate stream - /// - protected override void CleanUp() { inflateEnd(ref _ztream); } - - - } -} diff --git a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/UnitTests.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/UnitTests.cs deleted file mode 100644 index 1539461..0000000 --- a/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/UnitTests.cs +++ /dev/null @@ -1,274 +0,0 @@ -// -// © Copyright Henrik Ravn 2004 -// -// Use, modification and distribution are subject to the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -using System; -using System.Collections; -using System.IO; - -// uncomment the define below to include unit tests -//#define nunit -#if nunit -using NUnit.Framework; - -// Unit tests for the DotZLib class library -// ---------------------------------------- -// -// Use this with NUnit 2 from http://www.nunit.org -// - -namespace DotZLibTests -{ - using DotZLib; - - // helper methods - internal class Utils - { - public static bool byteArrEqual( byte[] lhs, byte[] rhs ) - { - if (lhs.Length != rhs.Length) - return false; - for (int i = lhs.Length-1; i >= 0; --i) - if (lhs[i] != rhs[i]) - return false; - return true; - } - - } - - - [TestFixture] - public class CircBufferTests - { - #region Circular buffer tests - [Test] - public void SinglePutGet() - { - CircularBuffer buf = new CircularBuffer(10); - Assert.AreEqual( 0, buf.Size ); - Assert.AreEqual( -1, buf.Get() ); - - Assert.IsTrue(buf.Put( 1 )); - Assert.AreEqual( 1, buf.Size ); - Assert.AreEqual( 1, buf.Get() ); - Assert.AreEqual( 0, buf.Size ); - Assert.AreEqual( -1, buf.Get() ); - } - - [Test] - public void BlockPutGet() - { - CircularBuffer buf = new CircularBuffer(10); - byte[] arr = {1,2,3,4,5,6,7,8,9,10}; - Assert.AreEqual( 10, buf.Put(arr,0,10) ); - Assert.AreEqual( 10, buf.Size ); - Assert.IsFalse( buf.Put(11) ); - Assert.AreEqual( 1, buf.Get() ); - Assert.IsTrue( buf.Put(11) ); - - byte[] arr2 = (byte[])arr.Clone(); - Assert.AreEqual( 9, buf.Get(arr2,1,9) ); - Assert.IsTrue( Utils.byteArrEqual(arr,arr2) ); - } - - #endregion - } - - [TestFixture] - public class ChecksumTests - { - #region CRC32 Tests - [Test] - public void CRC32_Null() - { - CRC32Checksum crc32 = new CRC32Checksum(); - Assert.AreEqual( 0, crc32.Value ); - - crc32 = new CRC32Checksum(1); - Assert.AreEqual( 1, crc32.Value ); - - crc32 = new CRC32Checksum(556); - Assert.AreEqual( 556, crc32.Value ); - } - - [Test] - public void CRC32_Data() - { - CRC32Checksum crc32 = new CRC32Checksum(); - byte[] data = { 1,2,3,4,5,6,7 }; - crc32.Update(data); - Assert.AreEqual( 0x70e46888, crc32.Value ); - - crc32 = new CRC32Checksum(); - crc32.Update("penguin"); - Assert.AreEqual( 0x0e5c1a120, crc32.Value ); - - crc32 = new CRC32Checksum(1); - crc32.Update("penguin"); - Assert.AreEqual(0x43b6aa94, crc32.Value); - - } - #endregion - - #region Adler tests - - [Test] - public void Adler_Null() - { - AdlerChecksum adler = new AdlerChecksum(); - Assert.AreEqual(0, adler.Value); - - adler = new AdlerChecksum(1); - Assert.AreEqual( 1, adler.Value ); - - adler = new AdlerChecksum(556); - Assert.AreEqual( 556, adler.Value ); - } - - [Test] - public void Adler_Data() - { - AdlerChecksum adler = new AdlerChecksum(1); - byte[] data = { 1,2,3,4,5,6,7 }; - adler.Update(data); - Assert.AreEqual( 0x5b001d, adler.Value ); - - adler = new AdlerChecksum(); - adler.Update("penguin"); - Assert.AreEqual(0x0bcf02f6, adler.Value ); - - adler = new AdlerChecksum(1); - adler.Update("penguin"); - Assert.AreEqual(0x0bd602f7, adler.Value); - - } - #endregion - } - - [TestFixture] - public class InfoTests - { - #region Info tests - [Test] - public void Info_Version() - { - Info info = new Info(); - Assert.AreEqual("1.2.8", Info.Version); - Assert.AreEqual(32, info.SizeOfUInt); - Assert.AreEqual(32, info.SizeOfULong); - Assert.AreEqual(32, info.SizeOfPointer); - Assert.AreEqual(32, info.SizeOfOffset); - } - #endregion - } - - [TestFixture] - public class DeflateInflateTests - { - #region Deflate tests - [Test] - public void Deflate_Init() - { - using (Deflater def = new Deflater(CompressLevel.Default)) - { - } - } - - private ArrayList compressedData = new ArrayList(); - private uint adler1; - - private ArrayList uncompressedData = new ArrayList(); - private uint adler2; - - public void CDataAvail(byte[] data, int startIndex, int count) - { - for (int i = 0; i < count; ++i) - compressedData.Add(data[i+startIndex]); - } - - [Test] - public void Deflate_Compress() - { - compressedData.Clear(); - - byte[] testData = new byte[35000]; - for (int i = 0; i < testData.Length; ++i) - testData[i] = 5; - - using (Deflater def = new Deflater((CompressLevel)5)) - { - def.DataAvailable += new DataAvailableHandler(CDataAvail); - def.Add(testData); - def.Finish(); - adler1 = def.Checksum; - } - } - #endregion - - #region Inflate tests - [Test] - public void Inflate_Init() - { - using (Inflater inf = new Inflater()) - { - } - } - - private void DDataAvail(byte[] data, int startIndex, int count) - { - for (int i = 0; i < count; ++i) - uncompressedData.Add(data[i+startIndex]); - } - - [Test] - public void Inflate_Expand() - { - uncompressedData.Clear(); - - using (Inflater inf = new Inflater()) - { - inf.DataAvailable += new DataAvailableHandler(DDataAvail); - inf.Add((byte[])compressedData.ToArray(typeof(byte))); - inf.Finish(); - adler2 = inf.Checksum; - } - Assert.AreEqual( adler1, adler2 ); - } - #endregion - } - - [TestFixture] - public class GZipStreamTests - { - #region GZipStream test - [Test] - public void GZipStream_WriteRead() - { - using (GZipStream gzOut = new GZipStream("gzstream.gz", CompressLevel.Best)) - { - BinaryWriter writer = new BinaryWriter(gzOut); - writer.Write("hi there"); - writer.Write(Math.PI); - writer.Write(42); - } - - using (GZipStream gzIn = new GZipStream("gzstream.gz")) - { - BinaryReader reader = new BinaryReader(gzIn); - string s = reader.ReadString(); - Assert.AreEqual("hi there",s); - double d = reader.ReadDouble(); - Assert.AreEqual(Math.PI, d); - int i = reader.ReadInt32(); - Assert.AreEqual(42,i); - } - - } - #endregion - } -} - -#endif diff --git a/io2d/src/3rd-party/zlib/contrib/dotzlib/LICENSE_1_0.txt b/io2d/src/3rd-party/zlib/contrib/dotzlib/LICENSE_1_0.txt deleted file mode 100644 index 127a5bc..0000000 --- a/io2d/src/3rd-party/zlib/contrib/dotzlib/LICENSE_1_0.txt +++ /dev/null @@ -1,23 +0,0 @@ -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/dotzlib/readme.txt b/io2d/src/3rd-party/zlib/contrib/dotzlib/readme.txt deleted file mode 100644 index 4d8c2dd..0000000 --- a/io2d/src/3rd-party/zlib/contrib/dotzlib/readme.txt +++ /dev/null @@ -1,58 +0,0 @@ -This directory contains a .Net wrapper class library for the ZLib1.dll - -The wrapper includes support for inflating/deflating memory buffers, -.Net streaming wrappers for the gz streams part of zlib, and wrappers -for the checksum parts of zlib. See DotZLib/UnitTests.cs for examples. - -Directory structure: --------------------- - -LICENSE_1_0.txt - License file. -readme.txt - This file. -DotZLib.chm - Class library documentation -DotZLib.build - NAnt build file -DotZLib.sln - Microsoft Visual Studio 2003 solution file - -DotZLib\*.cs - Source files for the class library - -Unit tests: ------------ -The file DotZLib/UnitTests.cs contains unit tests for use with NUnit 2.1 or higher. -To include unit tests in the build, define nunit before building. - - -Build instructions: -------------------- - -1. Using Visual Studio.Net 2003: - Open DotZLib.sln in VS.Net and build from there. Output file (DotZLib.dll) - will be found ./DotZLib/bin/release or ./DotZLib/bin/debug, depending on - you are building the release or debug version of the library. Check - DotZLib/UnitTests.cs for instructions on how to include unit tests in the - build. - -2. Using NAnt: - Open a command prompt with access to the build environment and run nant - in the same directory as the DotZLib.build file. - You can define 2 properties on the nant command-line to control the build: - debug={true|false} to toggle between release/debug builds (default=true). - nunit={true|false} to include or esclude unit tests (default=true). - Also the target clean will remove binaries. - Output file (DotZLib.dll) will be found in either ./DotZLib/bin/release - or ./DotZLib/bin/debug, depending on whether you are building the release - or debug version of the library. - - Examples: - nant -D:debug=false -D:nunit=false - will build a release mode version of the library without unit tests. - nant - will build a debug version of the library with unit tests - nant clean - will remove all previously built files. - - ---------------------------------- -Copyright (c) Henrik Ravn 2004 - -Use, modification and distribution are subject to the Boost Software License, Version 1.0. -(See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/io2d/src/3rd-party/zlib/contrib/gcc_gvmat64/gvmat64.S b/io2d/src/3rd-party/zlib/contrib/gcc_gvmat64/gvmat64.S deleted file mode 100644 index 23309fa..0000000 --- a/io2d/src/3rd-party/zlib/contrib/gcc_gvmat64/gvmat64.S +++ /dev/null @@ -1,574 +0,0 @@ -/* -;uInt longest_match_x64( -; deflate_state *s, -; IPos cur_match); // current match - -; gvmat64.S -- Asm portion of the optimized longest_match for 32 bits x86_64 -; (AMD64 on Athlon 64, Opteron, Phenom -; and Intel EM64T on Pentium 4 with EM64T, Pentium D, Core 2 Duo, Core I5/I7) -; this file is translation from gvmat64.asm to GCC 4.x (for Linux, Mac XCode) -; Copyright (C) 1995-2010 Jean-loup Gailly, Brian Raiter and Gilles Vollant. -; -; File written by Gilles Vollant, by converting to assembly the longest_match -; from Jean-loup Gailly in deflate.c of zLib and infoZip zip. -; and by taking inspiration on asm686 with masm, optimised assembly code -; from Brian Raiter, written 1998 -; -; This software is provided 'as-is', without any express or implied -; warranty. In no event will the authors be held liable for any damages -; arising from the use of this software. -; -; Permission is granted to anyone to use this software for any purpose, -; including commercial applications, and to alter it and redistribute it -; freely, subject to the following restrictions: -; -; 1. The origin of this software must not be misrepresented; you must not -; claim that you wrote the original software. If you use this software -; in a product, an acknowledgment in the product documentation would be -; appreciated but is not required. -; 2. Altered source versions must be plainly marked as such, and must not be -; misrepresented as being the original software -; 3. This notice may not be removed or altered from any source distribution. -; -; http://www.zlib.net -; http://www.winimage.com/zLibDll -; http://www.muppetlabs.com/~breadbox/software/assembly.html -; -; to compile this file for zLib, I use option: -; gcc -c -arch x86_64 gvmat64.S - - -;uInt longest_match(s, cur_match) -; deflate_state *s; -; IPos cur_match; // current match / -; -; with XCode for Mac, I had strange error with some jump on intel syntax -; this is why BEFORE_JMP and AFTER_JMP are used - */ - - -#define BEFORE_JMP .att_syntax -#define AFTER_JMP .intel_syntax noprefix - -#ifndef NO_UNDERLINE -# define match_init _match_init -# define longest_match _longest_match -#endif - -.intel_syntax noprefix - -.globl match_init, longest_match -.text -longest_match: - - - -#define LocalVarsSize 96 -/* -; register used : rax,rbx,rcx,rdx,rsi,rdi,r8,r9,r10,r11,r12 -; free register : r14,r15 -; register can be saved : rsp -*/ - -#define chainlenwmask (rsp + 8 - LocalVarsSize) -#define nicematch (rsp + 16 - LocalVarsSize) - -#define save_rdi (rsp + 24 - LocalVarsSize) -#define save_rsi (rsp + 32 - LocalVarsSize) -#define save_rbx (rsp + 40 - LocalVarsSize) -#define save_rbp (rsp + 48 - LocalVarsSize) -#define save_r12 (rsp + 56 - LocalVarsSize) -#define save_r13 (rsp + 64 - LocalVarsSize) -#define save_r14 (rsp + 72 - LocalVarsSize) -#define save_r15 (rsp + 80 - LocalVarsSize) - - -/* -; all the +4 offsets are due to the addition of pending_buf_size (in zlib -; in the deflate_state structure since the asm code was first written -; (if you compile with zlib 1.0.4 or older, remove the +4). -; Note : these value are good with a 8 bytes boundary pack structure -*/ - -#define MAX_MATCH 258 -#define MIN_MATCH 3 -#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1) - -/* -;;; Offsets for fields in the deflate_state structure. These numbers -;;; are calculated from the definition of deflate_state, with the -;;; assumption that the compiler will dword-align the fields. (Thus, -;;; changing the definition of deflate_state could easily cause this -;;; program to crash horribly, without so much as a warning at -;;; compile time. Sigh.) - -; all the +zlib1222add offsets are due to the addition of fields -; in zlib in the deflate_state structure since the asm code was first written -; (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)"). -; (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0"). -; if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8"). -*/ - - - -/* you can check the structure offset by running - -#include -#include -#include "deflate.h" - -void print_depl() -{ -deflate_state ds; -deflate_state *s=&ds; -printf("size pointer=%u\n",(int)sizeof(void*)); - -printf("#define dsWSize %u\n",(int)(((char*)&(s->w_size))-((char*)s))); -printf("#define dsWMask %u\n",(int)(((char*)&(s->w_mask))-((char*)s))); -printf("#define dsWindow %u\n",(int)(((char*)&(s->window))-((char*)s))); -printf("#define dsPrev %u\n",(int)(((char*)&(s->prev))-((char*)s))); -printf("#define dsMatchLen %u\n",(int)(((char*)&(s->match_length))-((char*)s))); -printf("#define dsPrevMatch %u\n",(int)(((char*)&(s->prev_match))-((char*)s))); -printf("#define dsStrStart %u\n",(int)(((char*)&(s->strstart))-((char*)s))); -printf("#define dsMatchStart %u\n",(int)(((char*)&(s->match_start))-((char*)s))); -printf("#define dsLookahead %u\n",(int)(((char*)&(s->lookahead))-((char*)s))); -printf("#define dsPrevLen %u\n",(int)(((char*)&(s->prev_length))-((char*)s))); -printf("#define dsMaxChainLen %u\n",(int)(((char*)&(s->max_chain_length))-((char*)s))); -printf("#define dsGoodMatch %u\n",(int)(((char*)&(s->good_match))-((char*)s))); -printf("#define dsNiceMatch %u\n",(int)(((char*)&(s->nice_match))-((char*)s))); -} -*/ - -#define dsWSize 68 -#define dsWMask 76 -#define dsWindow 80 -#define dsPrev 96 -#define dsMatchLen 144 -#define dsPrevMatch 148 -#define dsStrStart 156 -#define dsMatchStart 160 -#define dsLookahead 164 -#define dsPrevLen 168 -#define dsMaxChainLen 172 -#define dsGoodMatch 188 -#define dsNiceMatch 192 - -#define window_size [ rcx + dsWSize] -#define WMask [ rcx + dsWMask] -#define window_ad [ rcx + dsWindow] -#define prev_ad [ rcx + dsPrev] -#define strstart [ rcx + dsStrStart] -#define match_start [ rcx + dsMatchStart] -#define Lookahead [ rcx + dsLookahead] //; 0ffffffffh on infozip -#define prev_length [ rcx + dsPrevLen] -#define max_chain_length [ rcx + dsMaxChainLen] -#define good_match [ rcx + dsGoodMatch] -#define nice_match [ rcx + dsNiceMatch] - -/* -; windows: -; parameter 1 in rcx(deflate state s), param 2 in rdx (cur match) - -; see http://weblogs.asp.net/oldnewthing/archive/2004/01/14/58579.aspx and -; http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/64bitAMD_8e951dd2-ee77-4728-8702-55ce4b5dd24a.xml.asp -; -; All registers must be preserved across the call, except for -; rax, rcx, rdx, r8, r9, r10, and r11, which are scratch. - -; -; gcc on macosx-linux: -; see http://www.x86-64.org/documentation/abi-0.99.pdf -; param 1 in rdi, param 2 in rsi -; rbx, rsp, rbp, r12 to r15 must be preserved - -;;; Save registers that the compiler may be using, and adjust esp to -;;; make room for our stack frame. - - -;;; Retrieve the function arguments. r8d will hold cur_match -;;; throughout the entire function. edx will hold the pointer to the -;;; deflate_state structure during the function's setup (before -;;; entering the main loop. - -; ms: parameter 1 in rcx (deflate_state* s), param 2 in edx -> r8 (cur match) -; mac: param 1 in rdi, param 2 rsi -; this clear high 32 bits of r8, which can be garbage in both r8 and rdx -*/ - mov [save_rbx],rbx - mov [save_rbp],rbp - - - mov rcx,rdi - - mov r8d,esi - - - mov [save_r12],r12 - mov [save_r13],r13 - mov [save_r14],r14 - mov [save_r15],r15 - - -//;;; uInt wmask = s->w_mask; -//;;; unsigned chain_length = s->max_chain_length; -//;;; if (s->prev_length >= s->good_match) { -//;;; chain_length >>= 2; -//;;; } - - - mov edi, prev_length - mov esi, good_match - mov eax, WMask - mov ebx, max_chain_length - cmp edi, esi - jl LastMatchGood - shr ebx, 2 -LastMatchGood: - -//;;; chainlen is decremented once beforehand so that the function can -//;;; use the sign flag instead of the zero flag for the exit test. -//;;; It is then shifted into the high word, to make room for the wmask -//;;; value, which it will always accompany. - - dec ebx - shl ebx, 16 - or ebx, eax - -//;;; on zlib only -//;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; - - - - mov eax, nice_match - mov [chainlenwmask], ebx - mov r10d, Lookahead - cmp r10d, eax - cmovnl r10d, eax - mov [nicematch],r10d - - - -//;;; register Bytef *scan = s->window + s->strstart; - mov r10, window_ad - mov ebp, strstart - lea r13, [r10 + rbp] - -//;;; Determine how many bytes the scan ptr is off from being -//;;; dword-aligned. - - mov r9,r13 - neg r13 - and r13,3 - -//;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ? -//;;; s->strstart - (IPos)MAX_DIST(s) : NIL; - - - mov eax, window_size - sub eax, MIN_LOOKAHEAD - - - xor edi,edi - sub ebp, eax - - mov r11d, prev_length - - cmovng ebp,edi - -//;;; int best_len = s->prev_length; - - -//;;; Store the sum of s->window + best_len in esi locally, and in esi. - - lea rsi,[r10+r11] - -//;;; register ush scan_start = *(ushf*)scan; -//;;; register ush scan_end = *(ushf*)(scan+best_len-1); -//;;; Posf *prev = s->prev; - - movzx r12d,word ptr [r9] - movzx ebx, word ptr [r9 + r11 - 1] - - mov rdi, prev_ad - -//;;; Jump into the main loop. - - mov edx, [chainlenwmask] - - cmp bx,word ptr [rsi + r8 - 1] - jz LookupLoopIsZero - - - -LookupLoop1: - and r8d, edx - - movzx r8d, word ptr [rdi + r8*2] - cmp r8d, ebp - jbe LeaveNow - - - - sub edx, 0x00010000 - BEFORE_JMP - js LeaveNow - AFTER_JMP - -LoopEntry1: - cmp bx,word ptr [rsi + r8 - 1] - BEFORE_JMP - jz LookupLoopIsZero - AFTER_JMP - -LookupLoop2: - and r8d, edx - - movzx r8d, word ptr [rdi + r8*2] - cmp r8d, ebp - BEFORE_JMP - jbe LeaveNow - AFTER_JMP - sub edx, 0x00010000 - BEFORE_JMP - js LeaveNow - AFTER_JMP - -LoopEntry2: - cmp bx,word ptr [rsi + r8 - 1] - BEFORE_JMP - jz LookupLoopIsZero - AFTER_JMP - -LookupLoop4: - and r8d, edx - - movzx r8d, word ptr [rdi + r8*2] - cmp r8d, ebp - BEFORE_JMP - jbe LeaveNow - AFTER_JMP - sub edx, 0x00010000 - BEFORE_JMP - js LeaveNow - AFTER_JMP - -LoopEntry4: - - cmp bx,word ptr [rsi + r8 - 1] - BEFORE_JMP - jnz LookupLoop1 - jmp LookupLoopIsZero - AFTER_JMP -/* -;;; do { -;;; match = s->window + cur_match; -;;; if (*(ushf*)(match+best_len-1) != scan_end || -;;; *(ushf*)match != scan_start) continue; -;;; [...] -;;; } while ((cur_match = prev[cur_match & wmask]) > limit -;;; && --chain_length != 0); -;;; -;;; Here is the inner loop of the function. The function will spend the -;;; majority of its time in this loop, and majority of that time will -;;; be spent in the first ten instructions. -;;; -;;; Within this loop: -;;; ebx = scanend -;;; r8d = curmatch -;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask) -;;; esi = windowbestlen - i.e., (window + bestlen) -;;; edi = prev -;;; ebp = limit -*/ -.balign 16 -LookupLoop: - and r8d, edx - - movzx r8d, word ptr [rdi + r8*2] - cmp r8d, ebp - BEFORE_JMP - jbe LeaveNow - AFTER_JMP - sub edx, 0x00010000 - BEFORE_JMP - js LeaveNow - AFTER_JMP - -LoopEntry: - - cmp bx,word ptr [rsi + r8 - 1] - BEFORE_JMP - jnz LookupLoop1 - AFTER_JMP -LookupLoopIsZero: - cmp r12w, word ptr [r10 + r8] - BEFORE_JMP - jnz LookupLoop1 - AFTER_JMP - - -//;;; Store the current value of chainlen. - mov [chainlenwmask], edx -/* -;;; Point edi to the string under scrutiny, and esi to the string we -;;; are hoping to match it up with. In actuality, esi and edi are -;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is -;;; initialized to -(MAX_MATCH_8 - scanalign). -*/ - lea rsi,[r8+r10] - mov rdx, 0xfffffffffffffef8 //; -(MAX_MATCH_8) - lea rsi, [rsi + r13 + 0x0108] //;MAX_MATCH_8] - lea rdi, [r9 + r13 + 0x0108] //;MAX_MATCH_8] - - prefetcht1 [rsi+rdx] - prefetcht1 [rdi+rdx] - -/* -;;; Test the strings for equality, 8 bytes at a time. At the end, -;;; adjust rdx so that it is offset to the exact byte that mismatched. -;;; -;;; We already know at this point that the first three bytes of the -;;; strings match each other, and they can be safely passed over before -;;; starting the compare loop. So what this code does is skip over 0-3 -;;; bytes, as much as necessary in order to dword-align the edi -;;; pointer. (rsi will still be misaligned three times out of four.) -;;; -;;; It should be confessed that this loop usually does not represent -;;; much of the total running time. Replacing it with a more -;;; straightforward "rep cmpsb" would not drastically degrade -;;; performance. -*/ - -LoopCmps: - mov rax, [rsi + rdx] - xor rax, [rdi + rdx] - jnz LeaveLoopCmps - - mov rax, [rsi + rdx + 8] - xor rax, [rdi + rdx + 8] - jnz LeaveLoopCmps8 - - - mov rax, [rsi + rdx + 8+8] - xor rax, [rdi + rdx + 8+8] - jnz LeaveLoopCmps16 - - add rdx,8+8+8 - - BEFORE_JMP - jnz LoopCmps - jmp LenMaximum - AFTER_JMP - -LeaveLoopCmps16: add rdx,8 -LeaveLoopCmps8: add rdx,8 -LeaveLoopCmps: - - test eax, 0x0000FFFF - jnz LenLower - - test eax,0xffffffff - - jnz LenLower32 - - add rdx,4 - shr rax,32 - or ax,ax - BEFORE_JMP - jnz LenLower - AFTER_JMP - -LenLower32: - shr eax,16 - add rdx,2 - -LenLower: - sub al, 1 - adc rdx, 0 -//;;; Calculate the length of the match. If it is longer than MAX_MATCH, -//;;; then automatically accept it as the best possible match and leave. - - lea rax, [rdi + rdx] - sub rax, r9 - cmp eax, MAX_MATCH - BEFORE_JMP - jge LenMaximum - AFTER_JMP -/* -;;; If the length of the match is not longer than the best match we -;;; have so far, then forget it and return to the lookup loop. -;/////////////////////////////////// -*/ - cmp eax, r11d - jg LongerMatch - - lea rsi,[r10+r11] - - mov rdi, prev_ad - mov edx, [chainlenwmask] - BEFORE_JMP - jmp LookupLoop - AFTER_JMP -/* -;;; s->match_start = cur_match; -;;; best_len = len; -;;; if (len >= nice_match) break; -;;; scan_end = *(ushf*)(scan+best_len-1); -*/ -LongerMatch: - mov r11d, eax - mov match_start, r8d - cmp eax, [nicematch] - BEFORE_JMP - jge LeaveNow - AFTER_JMP - - lea rsi,[r10+rax] - - movzx ebx, word ptr [r9 + rax - 1] - mov rdi, prev_ad - mov edx, [chainlenwmask] - BEFORE_JMP - jmp LookupLoop - AFTER_JMP - -//;;; Accept the current string, with the maximum possible length. - -LenMaximum: - mov r11d,MAX_MATCH - mov match_start, r8d - -//;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len; -//;;; return s->lookahead; - -LeaveNow: - mov eax, Lookahead - cmp r11d, eax - cmovng eax, r11d - - - -//;;; Restore the stack and return from whence we came. - - -// mov rsi,[save_rsi] -// mov rdi,[save_rdi] - mov rbx,[save_rbx] - mov rbp,[save_rbp] - mov r12,[save_r12] - mov r13,[save_r13] - mov r14,[save_r14] - mov r15,[save_r15] - - - ret 0 -//; please don't remove this string ! -//; Your can freely use gvmat64 in any free or commercial app -//; but it is far better don't remove the string in the binary! - // db 0dh,0ah,"asm686 with masm, optimised assembly code from Brian Raiter, written 1998, converted to amd 64 by Gilles Vollant 2005",0dh,0ah,0 - - -match_init: - ret 0 - - diff --git a/io2d/src/3rd-party/zlib/contrib/infback9/README b/io2d/src/3rd-party/zlib/contrib/infback9/README deleted file mode 100644 index e75ed13..0000000 --- a/io2d/src/3rd-party/zlib/contrib/infback9/README +++ /dev/null @@ -1 +0,0 @@ -See infback9.h for what this is and how to use it. diff --git a/io2d/src/3rd-party/zlib/contrib/infback9/infback9.c b/io2d/src/3rd-party/zlib/contrib/infback9/infback9.c deleted file mode 100644 index 05fb3e3..0000000 --- a/io2d/src/3rd-party/zlib/contrib/infback9/infback9.c +++ /dev/null @@ -1,615 +0,0 @@ -/* infback9.c -- inflate deflate64 data using a call-back interface - * Copyright (C) 1995-2008 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "infback9.h" -#include "inftree9.h" -#include "inflate9.h" - -#define WSIZE 65536UL - -/* - strm provides memory allocation functions in zalloc and zfree, or - Z_NULL to use the library memory allocation functions. - - window is a user-supplied window and output buffer that is 64K bytes. - */ -int ZEXPORT inflateBack9Init_(strm, window, version, stream_size) -z_stream FAR *strm; -unsigned char FAR *window; -const char *version; -int stream_size; -{ - struct inflate_state FAR *state; - - if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || - stream_size != (int)(sizeof(z_stream))) - return Z_VERSION_ERROR; - if (strm == Z_NULL || window == Z_NULL) - return Z_STREAM_ERROR; - strm->msg = Z_NULL; /* in case we return an error */ - if (strm->zalloc == (alloc_func)0) { - strm->zalloc = zcalloc; - strm->opaque = (voidpf)0; - } - if (strm->zfree == (free_func)0) strm->zfree = zcfree; - state = (struct inflate_state FAR *)ZALLOC(strm, 1, - sizeof(struct inflate_state)); - if (state == Z_NULL) return Z_MEM_ERROR; - Tracev((stderr, "inflate: allocated\n")); - strm->state = (voidpf)state; - state->window = window; - return Z_OK; -} - -/* - Build and output length and distance decoding tables for fixed code - decoding. - */ -#ifdef MAKEFIXED -#include - -void makefixed9(void) -{ - unsigned sym, bits, low, size; - code *next, *lenfix, *distfix; - struct inflate_state state; - code fixed[544]; - - /* literal/length table */ - sym = 0; - while (sym < 144) state.lens[sym++] = 8; - while (sym < 256) state.lens[sym++] = 9; - while (sym < 280) state.lens[sym++] = 7; - while (sym < 288) state.lens[sym++] = 8; - next = fixed; - lenfix = next; - bits = 9; - inflate_table9(LENS, state.lens, 288, &(next), &(bits), state.work); - - /* distance table */ - sym = 0; - while (sym < 32) state.lens[sym++] = 5; - distfix = next; - bits = 5; - inflate_table9(DISTS, state.lens, 32, &(next), &(bits), state.work); - - /* write tables */ - puts(" /* inffix9.h -- table for decoding deflate64 fixed codes"); - puts(" * Generated automatically by makefixed9()."); - puts(" */"); - puts(""); - puts(" /* WARNING: this file should *not* be used by applications."); - puts(" It is part of the implementation of this library and is"); - puts(" subject to change. Applications should only use zlib.h."); - puts(" */"); - puts(""); - size = 1U << 9; - printf(" static const code lenfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 6) == 0) printf("\n "); - printf("{%u,%u,%d}", lenfix[low].op, lenfix[low].bits, - lenfix[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n };"); - size = 1U << 5; - printf("\n static const code distfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 5) == 0) printf("\n "); - printf("{%u,%u,%d}", distfix[low].op, distfix[low].bits, - distfix[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n };"); -} -#endif /* MAKEFIXED */ - -/* Macros for inflateBack(): */ - -/* Clear the input bit accumulator */ -#define INITBITS() \ - do { \ - hold = 0; \ - bits = 0; \ - } while (0) - -/* Assure that some input is available. If input is requested, but denied, - then return a Z_BUF_ERROR from inflateBack(). */ -#define PULL() \ - do { \ - if (have == 0) { \ - have = in(in_desc, &next); \ - if (have == 0) { \ - next = Z_NULL; \ - ret = Z_BUF_ERROR; \ - goto inf_leave; \ - } \ - } \ - } while (0) - -/* Get a byte of input into the bit accumulator, or return from inflateBack() - with an error if there is no input available. */ -#define PULLBYTE() \ - do { \ - PULL(); \ - have--; \ - hold += (unsigned long)(*next++) << bits; \ - bits += 8; \ - } while (0) - -/* Assure that there are at least n bits in the bit accumulator. If there is - not enough available input to do that, then return from inflateBack() with - an error. */ -#define NEEDBITS(n) \ - do { \ - while (bits < (unsigned)(n)) \ - PULLBYTE(); \ - } while (0) - -/* Return the low n bits of the bit accumulator (n <= 16) */ -#define BITS(n) \ - ((unsigned)hold & ((1U << (n)) - 1)) - -/* Remove n bits from the bit accumulator */ -#define DROPBITS(n) \ - do { \ - hold >>= (n); \ - bits -= (unsigned)(n); \ - } while (0) - -/* Remove zero to seven bits as needed to go to a byte boundary */ -#define BYTEBITS() \ - do { \ - hold >>= bits & 7; \ - bits -= bits & 7; \ - } while (0) - -/* Assure that some output space is available, by writing out the window - if it's full. If the write fails, return from inflateBack() with a - Z_BUF_ERROR. */ -#define ROOM() \ - do { \ - if (left == 0) { \ - put = window; \ - left = WSIZE; \ - wrap = 1; \ - if (out(out_desc, put, (unsigned)left)) { \ - ret = Z_BUF_ERROR; \ - goto inf_leave; \ - } \ - } \ - } while (0) - -/* - strm provides the memory allocation functions and window buffer on input, - and provides information on the unused input on return. For Z_DATA_ERROR - returns, strm will also provide an error message. - - in() and out() are the call-back input and output functions. When - inflateBack() needs more input, it calls in(). When inflateBack() has - filled the window with output, or when it completes with data in the - window, it calls out() to write out the data. The application must not - change the provided input until in() is called again or inflateBack() - returns. The application must not change the window/output buffer until - inflateBack() returns. - - in() and out() are called with a descriptor parameter provided in the - inflateBack() call. This parameter can be a structure that provides the - information required to do the read or write, as well as accumulated - information on the input and output such as totals and check values. - - in() should return zero on failure. out() should return non-zero on - failure. If either in() or out() fails, than inflateBack() returns a - Z_BUF_ERROR. strm->next_in can be checked for Z_NULL to see whether it - was in() or out() that caused in the error. Otherwise, inflateBack() - returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format - error, or Z_MEM_ERROR if it could not allocate memory for the state. - inflateBack() can also return Z_STREAM_ERROR if the input parameters - are not correct, i.e. strm is Z_NULL or the state was not initialized. - */ -int ZEXPORT inflateBack9(strm, in, in_desc, out, out_desc) -z_stream FAR *strm; -in_func in; -void FAR *in_desc; -out_func out; -void FAR *out_desc; -{ - struct inflate_state FAR *state; - z_const unsigned char FAR *next; /* next input */ - unsigned char FAR *put; /* next output */ - unsigned have; /* available input */ - unsigned long left; /* available output */ - inflate_mode mode; /* current inflate mode */ - int lastblock; /* true if processing last block */ - int wrap; /* true if the window has wrapped */ - unsigned char FAR *window; /* allocated sliding window, if needed */ - unsigned long hold; /* bit buffer */ - unsigned bits; /* bits in bit buffer */ - unsigned extra; /* extra bits needed */ - unsigned long length; /* literal or length of data to copy */ - unsigned long offset; /* distance back to copy string from */ - unsigned long copy; /* number of stored or match bytes to copy */ - unsigned char FAR *from; /* where to copy match bytes from */ - code const FAR *lencode; /* starting table for length/literal codes */ - code const FAR *distcode; /* starting table for distance codes */ - unsigned lenbits; /* index bits for lencode */ - unsigned distbits; /* index bits for distcode */ - code here; /* current decoding table entry */ - code last; /* parent table entry */ - unsigned len; /* length to copy for repeats, bits to drop */ - int ret; /* return code */ - static const unsigned short order[19] = /* permutation of code lengths */ - {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; -#include "inffix9.h" - - /* Check that the strm exists and that the state was initialized */ - if (strm == Z_NULL || strm->state == Z_NULL) - return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - - /* Reset the state */ - strm->msg = Z_NULL; - mode = TYPE; - lastblock = 0; - wrap = 0; - window = state->window; - next = strm->next_in; - have = next != Z_NULL ? strm->avail_in : 0; - hold = 0; - bits = 0; - put = window; - left = WSIZE; - lencode = Z_NULL; - distcode = Z_NULL; - - /* Inflate until end of block marked as last */ - for (;;) - switch (mode) { - case TYPE: - /* determine and dispatch block type */ - if (lastblock) { - BYTEBITS(); - mode = DONE; - break; - } - NEEDBITS(3); - lastblock = BITS(1); - DROPBITS(1); - switch (BITS(2)) { - case 0: /* stored block */ - Tracev((stderr, "inflate: stored block%s\n", - lastblock ? " (last)" : "")); - mode = STORED; - break; - case 1: /* fixed block */ - lencode = lenfix; - lenbits = 9; - distcode = distfix; - distbits = 5; - Tracev((stderr, "inflate: fixed codes block%s\n", - lastblock ? " (last)" : "")); - mode = LEN; /* decode codes */ - break; - case 2: /* dynamic block */ - Tracev((stderr, "inflate: dynamic codes block%s\n", - lastblock ? " (last)" : "")); - mode = TABLE; - break; - case 3: - strm->msg = (char *)"invalid block type"; - mode = BAD; - } - DROPBITS(2); - break; - - case STORED: - /* get and verify stored block length */ - BYTEBITS(); /* go to byte boundary */ - NEEDBITS(32); - if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (char *)"invalid stored block lengths"; - mode = BAD; - break; - } - length = (unsigned)hold & 0xffff; - Tracev((stderr, "inflate: stored length %lu\n", - length)); - INITBITS(); - - /* copy stored block from input to output */ - while (length != 0) { - copy = length; - PULL(); - ROOM(); - if (copy > have) copy = have; - if (copy > left) copy = left; - zmemcpy(put, next, copy); - have -= copy; - next += copy; - left -= copy; - put += copy; - length -= copy; - } - Tracev((stderr, "inflate: stored end\n")); - mode = TYPE; - break; - - case TABLE: - /* get dynamic table entries descriptor */ - NEEDBITS(14); - state->nlen = BITS(5) + 257; - DROPBITS(5); - state->ndist = BITS(5) + 1; - DROPBITS(5); - state->ncode = BITS(4) + 4; - DROPBITS(4); - if (state->nlen > 286) { - strm->msg = (char *)"too many length symbols"; - mode = BAD; - break; - } - Tracev((stderr, "inflate: table sizes ok\n")); - - /* get code length code lengths (not a typo) */ - state->have = 0; - while (state->have < state->ncode) { - NEEDBITS(3); - state->lens[order[state->have++]] = (unsigned short)BITS(3); - DROPBITS(3); - } - while (state->have < 19) - state->lens[order[state->have++]] = 0; - state->next = state->codes; - lencode = (code const FAR *)(state->next); - lenbits = 7; - ret = inflate_table9(CODES, state->lens, 19, &(state->next), - &(lenbits), state->work); - if (ret) { - strm->msg = (char *)"invalid code lengths set"; - mode = BAD; - break; - } - Tracev((stderr, "inflate: code lengths ok\n")); - - /* get length and distance code code lengths */ - state->have = 0; - while (state->have < state->nlen + state->ndist) { - for (;;) { - here = lencode[BITS(lenbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if (here.val < 16) { - NEEDBITS(here.bits); - DROPBITS(here.bits); - state->lens[state->have++] = here.val; - } - else { - if (here.val == 16) { - NEEDBITS(here.bits + 2); - DROPBITS(here.bits); - if (state->have == 0) { - strm->msg = (char *)"invalid bit length repeat"; - mode = BAD; - break; - } - len = (unsigned)(state->lens[state->have - 1]); - copy = 3 + BITS(2); - DROPBITS(2); - } - else if (here.val == 17) { - NEEDBITS(here.bits + 3); - DROPBITS(here.bits); - len = 0; - copy = 3 + BITS(3); - DROPBITS(3); - } - else { - NEEDBITS(here.bits + 7); - DROPBITS(here.bits); - len = 0; - copy = 11 + BITS(7); - DROPBITS(7); - } - if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (char *)"invalid bit length repeat"; - mode = BAD; - break; - } - while (copy--) - state->lens[state->have++] = (unsigned short)len; - } - } - - /* handle error breaks in while */ - if (mode == BAD) break; - - /* check for end-of-block code (better have one) */ - if (state->lens[256] == 0) { - strm->msg = (char *)"invalid code -- missing end-of-block"; - mode = BAD; - break; - } - - /* build code tables -- note: do not change the lenbits or distbits - values here (9 and 6) without reading the comments in inftree9.h - concerning the ENOUGH constants, which depend on those values */ - state->next = state->codes; - lencode = (code const FAR *)(state->next); - lenbits = 9; - ret = inflate_table9(LENS, state->lens, state->nlen, - &(state->next), &(lenbits), state->work); - if (ret) { - strm->msg = (char *)"invalid literal/lengths set"; - mode = BAD; - break; - } - distcode = (code const FAR *)(state->next); - distbits = 6; - ret = inflate_table9(DISTS, state->lens + state->nlen, - state->ndist, &(state->next), &(distbits), - state->work); - if (ret) { - strm->msg = (char *)"invalid distances set"; - mode = BAD; - break; - } - Tracev((stderr, "inflate: codes ok\n")); - mode = LEN; - - case LEN: - /* get a literal, length, or end-of-block code */ - for (;;) { - here = lencode[BITS(lenbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if (here.op && (here.op & 0xf0) == 0) { - last = here; - for (;;) { - here = lencode[last.val + - (BITS(last.bits + last.op) >> last.bits)]; - if ((unsigned)(last.bits + here.bits) <= bits) break; - PULLBYTE(); - } - DROPBITS(last.bits); - } - DROPBITS(here.bits); - length = (unsigned)here.val; - - /* process literal */ - if (here.op == 0) { - Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - "inflate: literal '%c'\n" : - "inflate: literal 0x%02x\n", here.val)); - ROOM(); - *put++ = (unsigned char)(length); - left--; - mode = LEN; - break; - } - - /* process end of block */ - if (here.op & 32) { - Tracevv((stderr, "inflate: end of block\n")); - mode = TYPE; - break; - } - - /* invalid code */ - if (here.op & 64) { - strm->msg = (char *)"invalid literal/length code"; - mode = BAD; - break; - } - - /* length code -- get extra bits, if any */ - extra = (unsigned)(here.op) & 31; - if (extra != 0) { - NEEDBITS(extra); - length += BITS(extra); - DROPBITS(extra); - } - Tracevv((stderr, "inflate: length %lu\n", length)); - - /* get distance code */ - for (;;) { - here = distcode[BITS(distbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if ((here.op & 0xf0) == 0) { - last = here; - for (;;) { - here = distcode[last.val + - (BITS(last.bits + last.op) >> last.bits)]; - if ((unsigned)(last.bits + here.bits) <= bits) break; - PULLBYTE(); - } - DROPBITS(last.bits); - } - DROPBITS(here.bits); - if (here.op & 64) { - strm->msg = (char *)"invalid distance code"; - mode = BAD; - break; - } - offset = (unsigned)here.val; - - /* get distance extra bits, if any */ - extra = (unsigned)(here.op) & 15; - if (extra != 0) { - NEEDBITS(extra); - offset += BITS(extra); - DROPBITS(extra); - } - if (offset > WSIZE - (wrap ? 0: left)) { - strm->msg = (char *)"invalid distance too far back"; - mode = BAD; - break; - } - Tracevv((stderr, "inflate: distance %lu\n", offset)); - - /* copy match from window to output */ - do { - ROOM(); - copy = WSIZE - offset; - if (copy < left) { - from = put + copy; - copy = left - copy; - } - else { - from = put - offset; - copy = left; - } - if (copy > length) copy = length; - length -= copy; - left -= copy; - do { - *put++ = *from++; - } while (--copy); - } while (length != 0); - break; - - case DONE: - /* inflate stream terminated properly -- write leftover output */ - ret = Z_STREAM_END; - if (left < WSIZE) { - if (out(out_desc, window, (unsigned)(WSIZE - left))) - ret = Z_BUF_ERROR; - } - goto inf_leave; - - case BAD: - ret = Z_DATA_ERROR; - goto inf_leave; - - default: /* can't happen, but makes compilers happy */ - ret = Z_STREAM_ERROR; - goto inf_leave; - } - - /* Return unused input */ - inf_leave: - strm->next_in = next; - strm->avail_in = have; - return ret; -} - -int ZEXPORT inflateBack9End(strm) -z_stream FAR *strm; -{ - if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) - return Z_STREAM_ERROR; - ZFREE(strm, strm->state); - strm->state = Z_NULL; - Tracev((stderr, "inflate: end\n")); - return Z_OK; -} diff --git a/io2d/src/3rd-party/zlib/contrib/infback9/infback9.h b/io2d/src/3rd-party/zlib/contrib/infback9/infback9.h deleted file mode 100644 index 1073c0a..0000000 --- a/io2d/src/3rd-party/zlib/contrib/infback9/infback9.h +++ /dev/null @@ -1,37 +0,0 @@ -/* infback9.h -- header for using inflateBack9 functions - * Copyright (C) 2003 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - * This header file and associated patches provide a decoder for PKWare's - * undocumented deflate64 compression method (method 9). Use with infback9.c, - * inftree9.h, inftree9.c, and inffix9.h. These patches are not supported. - * This should be compiled with zlib, since it uses zutil.h and zutil.o. - * This code has not yet been tested on 16-bit architectures. See the - * comments in zlib.h for inflateBack() usage. These functions are used - * identically, except that there is no windowBits parameter, and a 64K - * window must be provided. Also if int's are 16 bits, then a zero for - * the third parameter of the "out" function actually means 65536UL. - * zlib.h must be included before this header file. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -ZEXTERN int ZEXPORT inflateBack9 OF((z_stream FAR *strm, - in_func in, void FAR *in_desc, - out_func out, void FAR *out_desc)); -ZEXTERN int ZEXPORT inflateBack9End OF((z_stream FAR *strm)); -ZEXTERN int ZEXPORT inflateBack9Init_ OF((z_stream FAR *strm, - unsigned char FAR *window, - const char *version, - int stream_size)); -#define inflateBack9Init(strm, window) \ - inflateBack9Init_((strm), (window), \ - ZLIB_VERSION, sizeof(z_stream)) - -#ifdef __cplusplus -} -#endif diff --git a/io2d/src/3rd-party/zlib/contrib/infback9/inffix9.h b/io2d/src/3rd-party/zlib/contrib/infback9/inffix9.h deleted file mode 100644 index ee5671d..0000000 --- a/io2d/src/3rd-party/zlib/contrib/infback9/inffix9.h +++ /dev/null @@ -1,107 +0,0 @@ - /* inffix9.h -- table for decoding deflate64 fixed codes - * Generated automatically by makefixed9(). - */ - - /* WARNING: this file should *not* be used by applications. - It is part of the implementation of this library and is - subject to change. Applications should only use zlib.h. - */ - - static const code lenfix[512] = { - {96,7,0},{0,8,80},{0,8,16},{132,8,115},{130,7,31},{0,8,112}, - {0,8,48},{0,9,192},{128,7,10},{0,8,96},{0,8,32},{0,9,160}, - {0,8,0},{0,8,128},{0,8,64},{0,9,224},{128,7,6},{0,8,88}, - {0,8,24},{0,9,144},{131,7,59},{0,8,120},{0,8,56},{0,9,208}, - {129,7,17},{0,8,104},{0,8,40},{0,9,176},{0,8,8},{0,8,136}, - {0,8,72},{0,9,240},{128,7,4},{0,8,84},{0,8,20},{133,8,227}, - {131,7,43},{0,8,116},{0,8,52},{0,9,200},{129,7,13},{0,8,100}, - {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232}, - {128,7,8},{0,8,92},{0,8,28},{0,9,152},{132,7,83},{0,8,124}, - {0,8,60},{0,9,216},{130,7,23},{0,8,108},{0,8,44},{0,9,184}, - {0,8,12},{0,8,140},{0,8,76},{0,9,248},{128,7,3},{0,8,82}, - {0,8,18},{133,8,163},{131,7,35},{0,8,114},{0,8,50},{0,9,196}, - {129,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2},{0,8,130}, - {0,8,66},{0,9,228},{128,7,7},{0,8,90},{0,8,26},{0,9,148}, - {132,7,67},{0,8,122},{0,8,58},{0,9,212},{130,7,19},{0,8,106}, - {0,8,42},{0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244}, - {128,7,5},{0,8,86},{0,8,22},{65,8,0},{131,7,51},{0,8,118}, - {0,8,54},{0,9,204},{129,7,15},{0,8,102},{0,8,38},{0,9,172}, - {0,8,6},{0,8,134},{0,8,70},{0,9,236},{128,7,9},{0,8,94}, - {0,8,30},{0,9,156},{132,7,99},{0,8,126},{0,8,62},{0,9,220}, - {130,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, - {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{133,8,131}, - {130,7,31},{0,8,113},{0,8,49},{0,9,194},{128,7,10},{0,8,97}, - {0,8,33},{0,9,162},{0,8,1},{0,8,129},{0,8,65},{0,9,226}, - {128,7,6},{0,8,89},{0,8,25},{0,9,146},{131,7,59},{0,8,121}, - {0,8,57},{0,9,210},{129,7,17},{0,8,105},{0,8,41},{0,9,178}, - {0,8,9},{0,8,137},{0,8,73},{0,9,242},{128,7,4},{0,8,85}, - {0,8,21},{144,8,3},{131,7,43},{0,8,117},{0,8,53},{0,9,202}, - {129,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133}, - {0,8,69},{0,9,234},{128,7,8},{0,8,93},{0,8,29},{0,9,154}, - {132,7,83},{0,8,125},{0,8,61},{0,9,218},{130,7,23},{0,8,109}, - {0,8,45},{0,9,186},{0,8,13},{0,8,141},{0,8,77},{0,9,250}, - {128,7,3},{0,8,83},{0,8,19},{133,8,195},{131,7,35},{0,8,115}, - {0,8,51},{0,9,198},{129,7,11},{0,8,99},{0,8,35},{0,9,166}, - {0,8,3},{0,8,131},{0,8,67},{0,9,230},{128,7,7},{0,8,91}, - {0,8,27},{0,9,150},{132,7,67},{0,8,123},{0,8,59},{0,9,214}, - {130,7,19},{0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139}, - {0,8,75},{0,9,246},{128,7,5},{0,8,87},{0,8,23},{77,8,0}, - {131,7,51},{0,8,119},{0,8,55},{0,9,206},{129,7,15},{0,8,103}, - {0,8,39},{0,9,174},{0,8,7},{0,8,135},{0,8,71},{0,9,238}, - {128,7,9},{0,8,95},{0,8,31},{0,9,158},{132,7,99},{0,8,127}, - {0,8,63},{0,9,222},{130,7,27},{0,8,111},{0,8,47},{0,9,190}, - {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80}, - {0,8,16},{132,8,115},{130,7,31},{0,8,112},{0,8,48},{0,9,193}, - {128,7,10},{0,8,96},{0,8,32},{0,9,161},{0,8,0},{0,8,128}, - {0,8,64},{0,9,225},{128,7,6},{0,8,88},{0,8,24},{0,9,145}, - {131,7,59},{0,8,120},{0,8,56},{0,9,209},{129,7,17},{0,8,104}, - {0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72},{0,9,241}, - {128,7,4},{0,8,84},{0,8,20},{133,8,227},{131,7,43},{0,8,116}, - {0,8,52},{0,9,201},{129,7,13},{0,8,100},{0,8,36},{0,9,169}, - {0,8,4},{0,8,132},{0,8,68},{0,9,233},{128,7,8},{0,8,92}, - {0,8,28},{0,9,153},{132,7,83},{0,8,124},{0,8,60},{0,9,217}, - {130,7,23},{0,8,108},{0,8,44},{0,9,185},{0,8,12},{0,8,140}, - {0,8,76},{0,9,249},{128,7,3},{0,8,82},{0,8,18},{133,8,163}, - {131,7,35},{0,8,114},{0,8,50},{0,9,197},{129,7,11},{0,8,98}, - {0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, - {128,7,7},{0,8,90},{0,8,26},{0,9,149},{132,7,67},{0,8,122}, - {0,8,58},{0,9,213},{130,7,19},{0,8,106},{0,8,42},{0,9,181}, - {0,8,10},{0,8,138},{0,8,74},{0,9,245},{128,7,5},{0,8,86}, - {0,8,22},{65,8,0},{131,7,51},{0,8,118},{0,8,54},{0,9,205}, - {129,7,15},{0,8,102},{0,8,38},{0,9,173},{0,8,6},{0,8,134}, - {0,8,70},{0,9,237},{128,7,9},{0,8,94},{0,8,30},{0,9,157}, - {132,7,99},{0,8,126},{0,8,62},{0,9,221},{130,7,27},{0,8,110}, - {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253}, - {96,7,0},{0,8,81},{0,8,17},{133,8,131},{130,7,31},{0,8,113}, - {0,8,49},{0,9,195},{128,7,10},{0,8,97},{0,8,33},{0,9,163}, - {0,8,1},{0,8,129},{0,8,65},{0,9,227},{128,7,6},{0,8,89}, - {0,8,25},{0,9,147},{131,7,59},{0,8,121},{0,8,57},{0,9,211}, - {129,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9},{0,8,137}, - {0,8,73},{0,9,243},{128,7,4},{0,8,85},{0,8,21},{144,8,3}, - {131,7,43},{0,8,117},{0,8,53},{0,9,203},{129,7,13},{0,8,101}, - {0,8,37},{0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235}, - {128,7,8},{0,8,93},{0,8,29},{0,9,155},{132,7,83},{0,8,125}, - {0,8,61},{0,9,219},{130,7,23},{0,8,109},{0,8,45},{0,9,187}, - {0,8,13},{0,8,141},{0,8,77},{0,9,251},{128,7,3},{0,8,83}, - {0,8,19},{133,8,195},{131,7,35},{0,8,115},{0,8,51},{0,9,199}, - {129,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, - {0,8,67},{0,9,231},{128,7,7},{0,8,91},{0,8,27},{0,9,151}, - {132,7,67},{0,8,123},{0,8,59},{0,9,215},{130,7,19},{0,8,107}, - {0,8,43},{0,9,183},{0,8,11},{0,8,139},{0,8,75},{0,9,247}, - {128,7,5},{0,8,87},{0,8,23},{77,8,0},{131,7,51},{0,8,119}, - {0,8,55},{0,9,207},{129,7,15},{0,8,103},{0,8,39},{0,9,175}, - {0,8,7},{0,8,135},{0,8,71},{0,9,239},{128,7,9},{0,8,95}, - {0,8,31},{0,9,159},{132,7,99},{0,8,127},{0,8,63},{0,9,223}, - {130,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143}, - {0,8,79},{0,9,255} - }; - - static const code distfix[32] = { - {128,5,1},{135,5,257},{131,5,17},{139,5,4097},{129,5,5}, - {137,5,1025},{133,5,65},{141,5,16385},{128,5,3},{136,5,513}, - {132,5,33},{140,5,8193},{130,5,9},{138,5,2049},{134,5,129}, - {142,5,32769},{128,5,2},{135,5,385},{131,5,25},{139,5,6145}, - {129,5,7},{137,5,1537},{133,5,97},{141,5,24577},{128,5,4}, - {136,5,769},{132,5,49},{140,5,12289},{130,5,13},{138,5,3073}, - {134,5,193},{142,5,49153} - }; diff --git a/io2d/src/3rd-party/zlib/contrib/infback9/inflate9.h b/io2d/src/3rd-party/zlib/contrib/infback9/inflate9.h deleted file mode 100644 index ee9a793..0000000 --- a/io2d/src/3rd-party/zlib/contrib/infback9/inflate9.h +++ /dev/null @@ -1,47 +0,0 @@ -/* inflate9.h -- internal inflate state definition - * Copyright (C) 1995-2003 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* Possible inflate modes between inflate() calls */ -typedef enum { - TYPE, /* i: waiting for type bits, including last-flag bit */ - STORED, /* i: waiting for stored size (length and complement) */ - TABLE, /* i: waiting for dynamic block table lengths */ - LEN, /* i: waiting for length/lit code */ - DONE, /* finished check, done -- remain here until reset */ - BAD /* got a data error -- remain here until reset */ -} inflate_mode; - -/* - State transitions between above modes - - - (most modes can go to the BAD mode -- not shown for clarity) - - Read deflate blocks: - TYPE -> STORED or TABLE or LEN or DONE - STORED -> TYPE - TABLE -> LENLENS -> CODELENS -> LEN - Read deflate codes: - LEN -> LEN or TYPE - */ - -/* state maintained between inflate() calls. Approximately 7K bytes. */ -struct inflate_state { - /* sliding window */ - unsigned char FAR *window; /* allocated sliding window, if needed */ - /* dynamic table building */ - unsigned ncode; /* number of code length code lengths */ - unsigned nlen; /* number of length code lengths */ - unsigned ndist; /* number of distance code lengths */ - unsigned have; /* number of code lengths in lens[] */ - code FAR *next; /* next available space in codes[] */ - unsigned short lens[320]; /* temporary storage for code lengths */ - unsigned short work[288]; /* work area for code table building */ - code codes[ENOUGH]; /* space for code tables */ -}; diff --git a/io2d/src/3rd-party/zlib/contrib/infback9/inftree9.c b/io2d/src/3rd-party/zlib/contrib/infback9/inftree9.c deleted file mode 100644 index 4a73ad2..0000000 --- a/io2d/src/3rd-party/zlib/contrib/infback9/inftree9.c +++ /dev/null @@ -1,324 +0,0 @@ -/* inftree9.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2013 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "inftree9.h" - -#define MAXBITS 15 - -const char inflate9_copyright[] = - " inflate9 1.2.8 Copyright 1995-2013 Mark Adler "; -/* - If you use the zlib library in a product, an acknowledgment is welcome - in the documentation of your product. If for some reason you cannot - include such an acknowledgment, I would appreciate that you keep this - copyright string in the executable of your product. - */ - -/* - Build a set of tables to decode the provided canonical Huffman code. - The code lengths are lens[0..codes-1]. The result starts at *table, - whose indices are 0..2^bits-1. work is a writable array of at least - lens shorts, which is used as a work area. type is the type of code - to be generated, CODES, LENS, or DISTS. On return, zero is success, - -1 is an invalid code, and +1 means that ENOUGH isn't enough. table - on return points to the next available entry's address. bits is the - requested root table index bits, and on return it is the actual root - table index bits. It will differ if the request is greater than the - longest code or if it is less than the shortest code. - */ -int inflate_table9(type, lens, codes, table, bits, work) -codetype type; -unsigned short FAR *lens; -unsigned codes; -code FAR * FAR *table; -unsigned FAR *bits; -unsigned short FAR *work; -{ - unsigned len; /* a code's length in bits */ - unsigned sym; /* index of code symbols */ - unsigned min, max; /* minimum and maximum code lengths */ - unsigned root; /* number of index bits for root table */ - unsigned curr; /* number of index bits for current table */ - unsigned drop; /* code bits to drop for sub-table */ - int left; /* number of prefix codes available */ - unsigned used; /* code entries in table used */ - unsigned huff; /* Huffman code */ - unsigned incr; /* for incrementing code, index */ - unsigned fill; /* index for replicating entries */ - unsigned low; /* low bits for current root entry */ - unsigned mask; /* mask for low root bits */ - code this; /* table entry for duplication */ - code FAR *next; /* next available space in table */ - const unsigned short FAR *base; /* base value table to use */ - const unsigned short FAR *extra; /* extra bits table to use */ - int end; /* use base and extra for symbol > end */ - unsigned short count[MAXBITS+1]; /* number of codes of each length */ - unsigned short offs[MAXBITS+1]; /* offsets in table for each length */ - static const unsigned short lbase[31] = { /* Length codes 257..285 base */ - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, - 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, - 131, 163, 195, 227, 3, 0, 0}; - static const unsigned short lext[31] = { /* Length codes 257..285 extra */ - 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, - 130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132, - 133, 133, 133, 133, 144, 72, 78}; - static const unsigned short dbase[32] = { /* Distance codes 0..31 base */ - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, - 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, - 4097, 6145, 8193, 12289, 16385, 24577, 32769, 49153}; - static const unsigned short dext[32] = { /* Distance codes 0..31 extra */ - 128, 128, 128, 128, 129, 129, 130, 130, 131, 131, 132, 132, - 133, 133, 134, 134, 135, 135, 136, 136, 137, 137, 138, 138, - 139, 139, 140, 140, 141, 141, 142, 142}; - - /* - Process a set of code lengths to create a canonical Huffman code. The - code lengths are lens[0..codes-1]. Each length corresponds to the - symbols 0..codes-1. The Huffman code is generated by first sorting the - symbols by length from short to long, and retaining the symbol order - for codes with equal lengths. Then the code starts with all zero bits - for the first code of the shortest length, and the codes are integer - increments for the same length, and zeros are appended as the length - increases. For the deflate format, these bits are stored backwards - from their more natural integer increment ordering, and so when the - decoding tables are built in the large loop below, the integer codes - are incremented backwards. - - This routine assumes, but does not check, that all of the entries in - lens[] are in the range 0..MAXBITS. The caller must assure this. - 1..MAXBITS is interpreted as that code length. zero means that that - symbol does not occur in this code. - - The codes are sorted by computing a count of codes for each length, - creating from that a table of starting indices for each length in the - sorted table, and then entering the symbols in order in the sorted - table. The sorted table is work[], with that space being provided by - the caller. - - The length counts are used for other purposes as well, i.e. finding - the minimum and maximum length codes, determining if there are any - codes at all, checking for a valid set of lengths, and looking ahead - at length counts to determine sub-table sizes when building the - decoding tables. - */ - - /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ - for (len = 0; len <= MAXBITS; len++) - count[len] = 0; - for (sym = 0; sym < codes; sym++) - count[lens[sym]]++; - - /* bound code lengths, force root to be within code lengths */ - root = *bits; - for (max = MAXBITS; max >= 1; max--) - if (count[max] != 0) break; - if (root > max) root = max; - if (max == 0) return -1; /* no codes! */ - for (min = 1; min <= MAXBITS; min++) - if (count[min] != 0) break; - if (root < min) root = min; - - /* check for an over-subscribed or incomplete set of lengths */ - left = 1; - for (len = 1; len <= MAXBITS; len++) { - left <<= 1; - left -= count[len]; - if (left < 0) return -1; /* over-subscribed */ - } - if (left > 0 && (type == CODES || max != 1)) - return -1; /* incomplete set */ - - /* generate offsets into symbol table for each length for sorting */ - offs[1] = 0; - for (len = 1; len < MAXBITS; len++) - offs[len + 1] = offs[len] + count[len]; - - /* sort symbols by length, by symbol order within each length */ - for (sym = 0; sym < codes; sym++) - if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym; - - /* - Create and fill in decoding tables. In this loop, the table being - filled is at next and has curr index bits. The code being used is huff - with length len. That code is converted to an index by dropping drop - bits off of the bottom. For codes where len is less than drop + curr, - those top drop + curr - len bits are incremented through all values to - fill the table with replicated entries. - - root is the number of index bits for the root table. When len exceeds - root, sub-tables are created pointed to by the root entry with an index - of the low root bits of huff. This is saved in low to check for when a - new sub-table should be started. drop is zero when the root table is - being filled, and drop is root when sub-tables are being filled. - - When a new sub-table is needed, it is necessary to look ahead in the - code lengths to determine what size sub-table is needed. The length - counts are used for this, and so count[] is decremented as codes are - entered in the tables. - - used keeps track of how many table entries have been allocated from the - provided *table space. It is checked for LENS and DIST tables against - the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in - the initial root table size constants. See the comments in inftree9.h - for more information. - - sym increments through all symbols, and the loop terminates when - all codes of length max, i.e. all codes, have been processed. This - routine permits incomplete codes, so another loop after this one fills - in the rest of the decoding tables with invalid code markers. - */ - - /* set up for code type */ - switch (type) { - case CODES: - base = extra = work; /* dummy value--not used */ - end = 19; - break; - case LENS: - base = lbase; - base -= 257; - extra = lext; - extra -= 257; - end = 256; - break; - default: /* DISTS */ - base = dbase; - extra = dext; - end = -1; - } - - /* initialize state for loop */ - huff = 0; /* starting code */ - sym = 0; /* starting code symbol */ - len = min; /* starting code length */ - next = *table; /* current table to fill in */ - curr = root; /* current table index bits */ - drop = 0; /* current bits to drop from code for index */ - low = (unsigned)(-1); /* trigger new sub-table when len > root */ - used = 1U << root; /* use root table entries */ - mask = used - 1; /* mask for comparing low */ - - /* check available table space */ - if ((type == LENS && used >= ENOUGH_LENS) || - (type == DISTS && used >= ENOUGH_DISTS)) - return 1; - - /* process all codes and make table entries */ - for (;;) { - /* create table entry */ - this.bits = (unsigned char)(len - drop); - if ((int)(work[sym]) < end) { - this.op = (unsigned char)0; - this.val = work[sym]; - } - else if ((int)(work[sym]) > end) { - this.op = (unsigned char)(extra[work[sym]]); - this.val = base[work[sym]]; - } - else { - this.op = (unsigned char)(32 + 64); /* end of block */ - this.val = 0; - } - - /* replicate for those indices with low len bits equal to huff */ - incr = 1U << (len - drop); - fill = 1U << curr; - do { - fill -= incr; - next[(huff >> drop) + fill] = this; - } while (fill != 0); - - /* backwards increment the len-bit code huff */ - incr = 1U << (len - 1); - while (huff & incr) - incr >>= 1; - if (incr != 0) { - huff &= incr - 1; - huff += incr; - } - else - huff = 0; - - /* go to next symbol, update count, len */ - sym++; - if (--(count[len]) == 0) { - if (len == max) break; - len = lens[work[sym]]; - } - - /* create new sub-table if needed */ - if (len > root && (huff & mask) != low) { - /* if first time, transition to sub-tables */ - if (drop == 0) - drop = root; - - /* increment past last table */ - next += 1U << curr; - - /* determine length of next table */ - curr = len - drop; - left = (int)(1 << curr); - while (curr + drop < max) { - left -= count[curr + drop]; - if (left <= 0) break; - curr++; - left <<= 1; - } - - /* check for enough space */ - used += 1U << curr; - if ((type == LENS && used >= ENOUGH_LENS) || - (type == DISTS && used >= ENOUGH_DISTS)) - return 1; - - /* point entry in root table to sub-table */ - low = huff & mask; - (*table)[low].op = (unsigned char)curr; - (*table)[low].bits = (unsigned char)root; - (*table)[low].val = (unsigned short)(next - *table); - } - } - - /* - Fill in rest of table for incomplete codes. This loop is similar to the - loop above in incrementing huff for table indices. It is assumed that - len is equal to curr + drop, so there is no loop needed to increment - through high index bits. When the current sub-table is filled, the loop - drops back to the root table to fill in any remaining entries there. - */ - this.op = (unsigned char)64; /* invalid code marker */ - this.bits = (unsigned char)(len - drop); - this.val = (unsigned short)0; - while (huff != 0) { - /* when done with sub-table, drop back to root table */ - if (drop != 0 && (huff & mask) != low) { - drop = 0; - len = root; - next = *table; - curr = root; - this.bits = (unsigned char)len; - } - - /* put invalid code marker in table */ - next[huff >> drop] = this; - - /* backwards increment the len-bit code huff */ - incr = 1U << (len - 1); - while (huff & incr) - incr >>= 1; - if (incr != 0) { - huff &= incr - 1; - huff += incr; - } - else - huff = 0; - } - - /* set return parameters */ - *table += used; - *bits = root; - return 0; -} diff --git a/io2d/src/3rd-party/zlib/contrib/infback9/inftree9.h b/io2d/src/3rd-party/zlib/contrib/infback9/inftree9.h deleted file mode 100644 index 5ab21f0..0000000 --- a/io2d/src/3rd-party/zlib/contrib/infback9/inftree9.h +++ /dev/null @@ -1,61 +0,0 @@ -/* inftree9.h -- header to use inftree9.c - * Copyright (C) 1995-2008 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* Structure for decoding tables. Each entry provides either the - information needed to do the operation requested by the code that - indexed that table entry, or it provides a pointer to another - table that indexes more bits of the code. op indicates whether - the entry is a pointer to another table, a literal, a length or - distance, an end-of-block, or an invalid code. For a table - pointer, the low four bits of op is the number of index bits of - that table. For a length or distance, the low four bits of op - is the number of extra bits to get after the code. bits is - the number of bits in this code or part of the code to drop off - of the bit buffer. val is the actual byte to output in the case - of a literal, the base length or distance, or the offset from - the current table to the next table. Each entry is four bytes. */ -typedef struct { - unsigned char op; /* operation, extra bits, table bits */ - unsigned char bits; /* bits in this part of the code */ - unsigned short val; /* offset in table or code value */ -} code; - -/* op values as set by inflate_table(): - 00000000 - literal - 0000tttt - table link, tttt != 0 is the number of table index bits - 100eeeee - length or distance, eeee is the number of extra bits - 01100000 - end of block - 01000000 - invalid code - */ - -/* Maximum size of the dynamic table. The maximum number of code structures is - 1446, which is the sum of 852 for literal/length codes and 594 for distance - codes. These values were found by exhaustive searches using the program - examples/enough.c found in the zlib distribtution. The arguments to that - program are the number of symbols, the initial root table size, and the - maximum bit length of a code. "enough 286 9 15" for literal/length codes - returns returns 852, and "enough 32 6 15" for distance codes returns 594. - The initial root table size (9 or 6) is found in the fifth argument of the - inflate_table() calls in infback9.c. If the root table size is changed, - then these maximum sizes would be need to be recalculated and updated. */ -#define ENOUGH_LENS 852 -#define ENOUGH_DISTS 594 -#define ENOUGH (ENOUGH_LENS+ENOUGH_DISTS) - -/* Type of code to build for inflate_table9() */ -typedef enum { - CODES, - LENS, - DISTS -} codetype; - -extern int inflate_table9 OF((codetype type, unsigned short FAR *lens, - unsigned codes, code FAR * FAR *table, - unsigned FAR *bits, unsigned short FAR *work)); diff --git a/io2d/src/3rd-party/zlib/contrib/inflate86/inffas86.c b/io2d/src/3rd-party/zlib/contrib/inflate86/inffas86.c deleted file mode 100644 index 7292f67..0000000 --- a/io2d/src/3rd-party/zlib/contrib/inflate86/inffas86.c +++ /dev/null @@ -1,1157 +0,0 @@ -/* inffas86.c is a hand tuned assembler version of - * - * inffast.c -- fast decoding - * Copyright (C) 1995-2003 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - * - * Copyright (C) 2003 Chris Anderson - * Please use the copyright conditions above. - * - * Dec-29-2003 -- I added AMD64 inflate asm support. This version is also - * slightly quicker on x86 systems because, instead of using rep movsb to copy - * data, it uses rep movsw, which moves data in 2-byte chunks instead of single - * bytes. I've tested the AMD64 code on a Fedora Core 1 + the x86_64 updates - * from http://fedora.linux.duke.edu/fc1_x86_64 - * which is running on an Athlon 64 3000+ / Gigabyte GA-K8VT800M system with - * 1GB ram. The 64-bit version is about 4% faster than the 32-bit version, - * when decompressing mozilla-source-1.3.tar.gz. - * - * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from - * the gcc -S output of zlib-1.2.0/inffast.c. Zlib-1.2.0 is in beta release at - * the moment. I have successfully compiled and tested this code with gcc2.96, - * gcc3.2, icc5.0, msvc6.0. It is very close to the speed of inffast.S - * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX - * enabled. I will attempt to merge the MMX code into this version. Newer - * versions of this and inffast.S can be found at - * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/ - */ - -#include "zutil.h" -#include "inftrees.h" -#include "inflate.h" -#include "inffast.h" - -/* Mark Adler's comments from inffast.c: */ - -/* - Decode literal, length, and distance codes and write out the resulting - literal and match bytes until either not enough input or output is - available, an end-of-block is encountered, or a data error is encountered. - When large enough input and output buffers are supplied to inflate(), for - example, a 16K input buffer and a 64K output buffer, more than 95% of the - inflate execution time is spent in this routine. - - Entry assumptions: - - state->mode == LEN - strm->avail_in >= 6 - strm->avail_out >= 258 - start >= strm->avail_out - state->bits < 8 - - On return, state->mode is one of: - - LEN -- ran out of enough output space or enough available input - TYPE -- reached end of block code, inflate() to interpret next block - BAD -- error in block data - - Notes: - - - The maximum input bits used by a length/distance pair is 15 bits for the - length code, 5 bits for the length extra, 15 bits for the distance code, - and 13 bits for the distance extra. This totals 48 bits, or six bytes. - Therefore if strm->avail_in >= 6, then there is enough input to avoid - checking for available input while decoding. - - - The maximum bytes that a single length/distance pair can output is 258 - bytes, which is the maximum length that can be coded. inflate_fast() - requires strm->avail_out >= 258 for each loop to avoid checking for - output space. - */ -void inflate_fast(strm, start) -z_streamp strm; -unsigned start; /* inflate()'s starting value for strm->avail_out */ -{ - struct inflate_state FAR *state; - struct inffast_ar { -/* 64 32 x86 x86_64 */ -/* ar offset register */ -/* 0 0 */ void *esp; /* esp save */ -/* 8 4 */ void *ebp; /* ebp save */ -/* 16 8 */ unsigned char FAR *in; /* esi rsi local strm->next_in */ -/* 24 12 */ unsigned char FAR *last; /* r9 while in < last */ -/* 32 16 */ unsigned char FAR *out; /* edi rdi local strm->next_out */ -/* 40 20 */ unsigned char FAR *beg; /* inflate()'s init next_out */ -/* 48 24 */ unsigned char FAR *end; /* r10 while out < end */ -/* 56 28 */ unsigned char FAR *window;/* size of window, wsize!=0 */ -/* 64 32 */ code const FAR *lcode; /* ebp rbp local strm->lencode */ -/* 72 36 */ code const FAR *dcode; /* r11 local strm->distcode */ -/* 80 40 */ unsigned long hold; /* edx rdx local strm->hold */ -/* 88 44 */ unsigned bits; /* ebx rbx local strm->bits */ -/* 92 48 */ unsigned wsize; /* window size */ -/* 96 52 */ unsigned write; /* window write index */ -/*100 56 */ unsigned lmask; /* r12 mask for lcode */ -/*104 60 */ unsigned dmask; /* r13 mask for dcode */ -/*108 64 */ unsigned len; /* r14 match length */ -/*112 68 */ unsigned dist; /* r15 match distance */ -/*116 72 */ unsigned status; /* set when state chng*/ - } ar; - -#if defined( __GNUC__ ) && defined( __amd64__ ) && ! defined( __i386 ) -#define PAD_AVAIL_IN 6 -#define PAD_AVAIL_OUT 258 -#else -#define PAD_AVAIL_IN 5 -#define PAD_AVAIL_OUT 257 -#endif - - /* copy state to local variables */ - state = (struct inflate_state FAR *)strm->state; - ar.in = strm->next_in; - ar.last = ar.in + (strm->avail_in - PAD_AVAIL_IN); - ar.out = strm->next_out; - ar.beg = ar.out - (start - strm->avail_out); - ar.end = ar.out + (strm->avail_out - PAD_AVAIL_OUT); - ar.wsize = state->wsize; - ar.write = state->wnext; - ar.window = state->window; - ar.hold = state->hold; - ar.bits = state->bits; - ar.lcode = state->lencode; - ar.dcode = state->distcode; - ar.lmask = (1U << state->lenbits) - 1; - ar.dmask = (1U << state->distbits) - 1; - - /* decode literals and length/distances until end-of-block or not enough - input data or output space */ - - /* align in on 1/2 hold size boundary */ - while (((unsigned long)(void *)ar.in & (sizeof(ar.hold) / 2 - 1)) != 0) { - ar.hold += (unsigned long)*ar.in++ << ar.bits; - ar.bits += 8; - } - -#if defined( __GNUC__ ) && defined( __amd64__ ) && ! defined( __i386 ) - __asm__ __volatile__ ( -" leaq %0, %%rax\n" -" movq %%rbp, 8(%%rax)\n" /* save regs rbp and rsp */ -" movq %%rsp, (%%rax)\n" -" movq %%rax, %%rsp\n" /* make rsp point to &ar */ -" movq 16(%%rsp), %%rsi\n" /* rsi = in */ -" movq 32(%%rsp), %%rdi\n" /* rdi = out */ -" movq 24(%%rsp), %%r9\n" /* r9 = last */ -" movq 48(%%rsp), %%r10\n" /* r10 = end */ -" movq 64(%%rsp), %%rbp\n" /* rbp = lcode */ -" movq 72(%%rsp), %%r11\n" /* r11 = dcode */ -" movq 80(%%rsp), %%rdx\n" /* rdx = hold */ -" movl 88(%%rsp), %%ebx\n" /* ebx = bits */ -" movl 100(%%rsp), %%r12d\n" /* r12d = lmask */ -" movl 104(%%rsp), %%r13d\n" /* r13d = dmask */ - /* r14d = len */ - /* r15d = dist */ -" cld\n" -" cmpq %%rdi, %%r10\n" -" je .L_one_time\n" /* if only one decode left */ -" cmpq %%rsi, %%r9\n" -" je .L_one_time\n" -" jmp .L_do_loop\n" - -".L_one_time:\n" -" movq %%r12, %%r8\n" /* r8 = lmask */ -" cmpb $32, %%bl\n" -" ja .L_get_length_code_one_time\n" - -" lodsl\n" /* eax = *(uint *)in++ */ -" movb %%bl, %%cl\n" /* cl = bits, needs it for shifting */ -" addb $32, %%bl\n" /* bits += 32 */ -" shlq %%cl, %%rax\n" -" orq %%rax, %%rdx\n" /* hold |= *((uint *)in)++ << bits */ -" jmp .L_get_length_code_one_time\n" - -".align 32,0x90\n" -".L_while_test:\n" -" cmpq %%rdi, %%r10\n" -" jbe .L_break_loop\n" -" cmpq %%rsi, %%r9\n" -" jbe .L_break_loop\n" - -".L_do_loop:\n" -" movq %%r12, %%r8\n" /* r8 = lmask */ -" cmpb $32, %%bl\n" -" ja .L_get_length_code\n" /* if (32 < bits) */ - -" lodsl\n" /* eax = *(uint *)in++ */ -" movb %%bl, %%cl\n" /* cl = bits, needs it for shifting */ -" addb $32, %%bl\n" /* bits += 32 */ -" shlq %%cl, %%rax\n" -" orq %%rax, %%rdx\n" /* hold |= *((uint *)in)++ << bits */ - -".L_get_length_code:\n" -" andq %%rdx, %%r8\n" /* r8 &= hold */ -" movl (%%rbp,%%r8,4), %%eax\n" /* eax = lcode[hold & lmask] */ - -" movb %%ah, %%cl\n" /* cl = this.bits */ -" subb %%ah, %%bl\n" /* bits -= this.bits */ -" shrq %%cl, %%rdx\n" /* hold >>= this.bits */ - -" testb %%al, %%al\n" -" jnz .L_test_for_length_base\n" /* if (op != 0) 45.7% */ - -" movq %%r12, %%r8\n" /* r8 = lmask */ -" shrl $16, %%eax\n" /* output this.val char */ -" stosb\n" - -".L_get_length_code_one_time:\n" -" andq %%rdx, %%r8\n" /* r8 &= hold */ -" movl (%%rbp,%%r8,4), %%eax\n" /* eax = lcode[hold & lmask] */ - -".L_dolen:\n" -" movb %%ah, %%cl\n" /* cl = this.bits */ -" subb %%ah, %%bl\n" /* bits -= this.bits */ -" shrq %%cl, %%rdx\n" /* hold >>= this.bits */ - -" testb %%al, %%al\n" -" jnz .L_test_for_length_base\n" /* if (op != 0) 45.7% */ - -" shrl $16, %%eax\n" /* output this.val char */ -" stosb\n" -" jmp .L_while_test\n" - -".align 32,0x90\n" -".L_test_for_length_base:\n" -" movl %%eax, %%r14d\n" /* len = this */ -" shrl $16, %%r14d\n" /* len = this.val */ -" movb %%al, %%cl\n" - -" testb $16, %%al\n" -" jz .L_test_for_second_level_length\n" /* if ((op & 16) == 0) 8% */ -" andb $15, %%cl\n" /* op &= 15 */ -" jz .L_decode_distance\n" /* if (!op) */ - -".L_add_bits_to_len:\n" -" subb %%cl, %%bl\n" -" xorl %%eax, %%eax\n" -" incl %%eax\n" -" shll %%cl, %%eax\n" -" decl %%eax\n" -" andl %%edx, %%eax\n" /* eax &= hold */ -" shrq %%cl, %%rdx\n" -" addl %%eax, %%r14d\n" /* len += hold & mask[op] */ - -".L_decode_distance:\n" -" movq %%r13, %%r8\n" /* r8 = dmask */ -" cmpb $32, %%bl\n" -" ja .L_get_distance_code\n" /* if (32 < bits) */ - -" lodsl\n" /* eax = *(uint *)in++ */ -" movb %%bl, %%cl\n" /* cl = bits, needs it for shifting */ -" addb $32, %%bl\n" /* bits += 32 */ -" shlq %%cl, %%rax\n" -" orq %%rax, %%rdx\n" /* hold |= *((uint *)in)++ << bits */ - -".L_get_distance_code:\n" -" andq %%rdx, %%r8\n" /* r8 &= hold */ -" movl (%%r11,%%r8,4), %%eax\n" /* eax = dcode[hold & dmask] */ - -".L_dodist:\n" -" movl %%eax, %%r15d\n" /* dist = this */ -" shrl $16, %%r15d\n" /* dist = this.val */ -" movb %%ah, %%cl\n" -" subb %%ah, %%bl\n" /* bits -= this.bits */ -" shrq %%cl, %%rdx\n" /* hold >>= this.bits */ -" movb %%al, %%cl\n" /* cl = this.op */ - -" testb $16, %%al\n" /* if ((op & 16) == 0) */ -" jz .L_test_for_second_level_dist\n" -" andb $15, %%cl\n" /* op &= 15 */ -" jz .L_check_dist_one\n" - -".L_add_bits_to_dist:\n" -" subb %%cl, %%bl\n" -" xorl %%eax, %%eax\n" -" incl %%eax\n" -" shll %%cl, %%eax\n" -" decl %%eax\n" /* (1 << op) - 1 */ -" andl %%edx, %%eax\n" /* eax &= hold */ -" shrq %%cl, %%rdx\n" -" addl %%eax, %%r15d\n" /* dist += hold & ((1 << op) - 1) */ - -".L_check_window:\n" -" movq %%rsi, %%r8\n" /* save in so from can use it's reg */ -" movq %%rdi, %%rax\n" -" subq 40(%%rsp), %%rax\n" /* nbytes = out - beg */ - -" cmpl %%r15d, %%eax\n" -" jb .L_clip_window\n" /* if (dist > nbytes) 4.2% */ - -" movl %%r14d, %%ecx\n" /* ecx = len */ -" movq %%rdi, %%rsi\n" -" subq %%r15, %%rsi\n" /* from = out - dist */ - -" sarl %%ecx\n" -" jnc .L_copy_two\n" /* if len % 2 == 0 */ - -" rep movsw\n" -" movb (%%rsi), %%al\n" -" movb %%al, (%%rdi)\n" -" incq %%rdi\n" - -" movq %%r8, %%rsi\n" /* move in back to %rsi, toss from */ -" jmp .L_while_test\n" - -".L_copy_two:\n" -" rep movsw\n" -" movq %%r8, %%rsi\n" /* move in back to %rsi, toss from */ -" jmp .L_while_test\n" - -".align 32,0x90\n" -".L_check_dist_one:\n" -" cmpl $1, %%r15d\n" /* if dist 1, is a memset */ -" jne .L_check_window\n" -" cmpq %%rdi, 40(%%rsp)\n" /* if out == beg, outside window */ -" je .L_check_window\n" - -" movl %%r14d, %%ecx\n" /* ecx = len */ -" movb -1(%%rdi), %%al\n" -" movb %%al, %%ah\n" - -" sarl %%ecx\n" -" jnc .L_set_two\n" -" movb %%al, (%%rdi)\n" -" incq %%rdi\n" - -".L_set_two:\n" -" rep stosw\n" -" jmp .L_while_test\n" - -".align 32,0x90\n" -".L_test_for_second_level_length:\n" -" testb $64, %%al\n" -" jnz .L_test_for_end_of_block\n" /* if ((op & 64) != 0) */ - -" xorl %%eax, %%eax\n" -" incl %%eax\n" -" shll %%cl, %%eax\n" -" decl %%eax\n" -" andl %%edx, %%eax\n" /* eax &= hold */ -" addl %%r14d, %%eax\n" /* eax += len */ -" movl (%%rbp,%%rax,4), %%eax\n" /* eax = lcode[val+(hold&mask[op])]*/ -" jmp .L_dolen\n" - -".align 32,0x90\n" -".L_test_for_second_level_dist:\n" -" testb $64, %%al\n" -" jnz .L_invalid_distance_code\n" /* if ((op & 64) != 0) */ - -" xorl %%eax, %%eax\n" -" incl %%eax\n" -" shll %%cl, %%eax\n" -" decl %%eax\n" -" andl %%edx, %%eax\n" /* eax &= hold */ -" addl %%r15d, %%eax\n" /* eax += dist */ -" movl (%%r11,%%rax,4), %%eax\n" /* eax = dcode[val+(hold&mask[op])]*/ -" jmp .L_dodist\n" - -".align 32,0x90\n" -".L_clip_window:\n" -" movl %%eax, %%ecx\n" /* ecx = nbytes */ -" movl 92(%%rsp), %%eax\n" /* eax = wsize, prepare for dist cmp */ -" negl %%ecx\n" /* nbytes = -nbytes */ - -" cmpl %%r15d, %%eax\n" -" jb .L_invalid_distance_too_far\n" /* if (dist > wsize) */ - -" addl %%r15d, %%ecx\n" /* nbytes = dist - nbytes */ -" cmpl $0, 96(%%rsp)\n" -" jne .L_wrap_around_window\n" /* if (write != 0) */ - -" movq 56(%%rsp), %%rsi\n" /* from = window */ -" subl %%ecx, %%eax\n" /* eax -= nbytes */ -" addq %%rax, %%rsi\n" /* from += wsize - nbytes */ - -" movl %%r14d, %%eax\n" /* eax = len */ -" cmpl %%ecx, %%r14d\n" -" jbe .L_do_copy\n" /* if (nbytes >= len) */ - -" subl %%ecx, %%eax\n" /* eax -= nbytes */ -" rep movsb\n" -" movq %%rdi, %%rsi\n" -" subq %%r15, %%rsi\n" /* from = &out[ -dist ] */ -" jmp .L_do_copy\n" - -".align 32,0x90\n" -".L_wrap_around_window:\n" -" movl 96(%%rsp), %%eax\n" /* eax = write */ -" cmpl %%eax, %%ecx\n" -" jbe .L_contiguous_in_window\n" /* if (write >= nbytes) */ - -" movl 92(%%rsp), %%esi\n" /* from = wsize */ -" addq 56(%%rsp), %%rsi\n" /* from += window */ -" addq %%rax, %%rsi\n" /* from += write */ -" subq %%rcx, %%rsi\n" /* from -= nbytes */ -" subl %%eax, %%ecx\n" /* nbytes -= write */ - -" movl %%r14d, %%eax\n" /* eax = len */ -" cmpl %%ecx, %%eax\n" -" jbe .L_do_copy\n" /* if (nbytes >= len) */ - -" subl %%ecx, %%eax\n" /* len -= nbytes */ -" rep movsb\n" -" movq 56(%%rsp), %%rsi\n" /* from = window */ -" movl 96(%%rsp), %%ecx\n" /* nbytes = write */ -" cmpl %%ecx, %%eax\n" -" jbe .L_do_copy\n" /* if (nbytes >= len) */ - -" subl %%ecx, %%eax\n" /* len -= nbytes */ -" rep movsb\n" -" movq %%rdi, %%rsi\n" -" subq %%r15, %%rsi\n" /* from = out - dist */ -" jmp .L_do_copy\n" - -".align 32,0x90\n" -".L_contiguous_in_window:\n" -" movq 56(%%rsp), %%rsi\n" /* rsi = window */ -" addq %%rax, %%rsi\n" -" subq %%rcx, %%rsi\n" /* from += write - nbytes */ - -" movl %%r14d, %%eax\n" /* eax = len */ -" cmpl %%ecx, %%eax\n" -" jbe .L_do_copy\n" /* if (nbytes >= len) */ - -" subl %%ecx, %%eax\n" /* len -= nbytes */ -" rep movsb\n" -" movq %%rdi, %%rsi\n" -" subq %%r15, %%rsi\n" /* from = out - dist */ -" jmp .L_do_copy\n" /* if (nbytes >= len) */ - -".align 32,0x90\n" -".L_do_copy:\n" -" movl %%eax, %%ecx\n" /* ecx = len */ -" rep movsb\n" - -" movq %%r8, %%rsi\n" /* move in back to %esi, toss from */ -" jmp .L_while_test\n" - -".L_test_for_end_of_block:\n" -" testb $32, %%al\n" -" jz .L_invalid_literal_length_code\n" -" movl $1, 116(%%rsp)\n" -" jmp .L_break_loop_with_status\n" - -".L_invalid_literal_length_code:\n" -" movl $2, 116(%%rsp)\n" -" jmp .L_break_loop_with_status\n" - -".L_invalid_distance_code:\n" -" movl $3, 116(%%rsp)\n" -" jmp .L_break_loop_with_status\n" - -".L_invalid_distance_too_far:\n" -" movl $4, 116(%%rsp)\n" -" jmp .L_break_loop_with_status\n" - -".L_break_loop:\n" -" movl $0, 116(%%rsp)\n" - -".L_break_loop_with_status:\n" -/* put in, out, bits, and hold back into ar and pop esp */ -" movq %%rsi, 16(%%rsp)\n" /* in */ -" movq %%rdi, 32(%%rsp)\n" /* out */ -" movl %%ebx, 88(%%rsp)\n" /* bits */ -" movq %%rdx, 80(%%rsp)\n" /* hold */ -" movq (%%rsp), %%rax\n" /* restore rbp and rsp */ -" movq 8(%%rsp), %%rbp\n" -" movq %%rax, %%rsp\n" - : - : "m" (ar) - : "memory", "%rax", "%rbx", "%rcx", "%rdx", "%rsi", "%rdi", - "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15" - ); -#elif ( defined( __GNUC__ ) || defined( __ICC ) ) && defined( __i386 ) - __asm__ __volatile__ ( -" leal %0, %%eax\n" -" movl %%esp, (%%eax)\n" /* save esp, ebp */ -" movl %%ebp, 4(%%eax)\n" -" movl %%eax, %%esp\n" -" movl 8(%%esp), %%esi\n" /* esi = in */ -" movl 16(%%esp), %%edi\n" /* edi = out */ -" movl 40(%%esp), %%edx\n" /* edx = hold */ -" movl 44(%%esp), %%ebx\n" /* ebx = bits */ -" movl 32(%%esp), %%ebp\n" /* ebp = lcode */ - -" cld\n" -" jmp .L_do_loop\n" - -".align 32,0x90\n" -".L_while_test:\n" -" cmpl %%edi, 24(%%esp)\n" /* out < end */ -" jbe .L_break_loop\n" -" cmpl %%esi, 12(%%esp)\n" /* in < last */ -" jbe .L_break_loop\n" - -".L_do_loop:\n" -" cmpb $15, %%bl\n" -" ja .L_get_length_code\n" /* if (15 < bits) */ - -" xorl %%eax, %%eax\n" -" lodsw\n" /* al = *(ushort *)in++ */ -" movb %%bl, %%cl\n" /* cl = bits, needs it for shifting */ -" addb $16, %%bl\n" /* bits += 16 */ -" shll %%cl, %%eax\n" -" orl %%eax, %%edx\n" /* hold |= *((ushort *)in)++ << bits */ - -".L_get_length_code:\n" -" movl 56(%%esp), %%eax\n" /* eax = lmask */ -" andl %%edx, %%eax\n" /* eax &= hold */ -" movl (%%ebp,%%eax,4), %%eax\n" /* eax = lcode[hold & lmask] */ - -".L_dolen:\n" -" movb %%ah, %%cl\n" /* cl = this.bits */ -" subb %%ah, %%bl\n" /* bits -= this.bits */ -" shrl %%cl, %%edx\n" /* hold >>= this.bits */ - -" testb %%al, %%al\n" -" jnz .L_test_for_length_base\n" /* if (op != 0) 45.7% */ - -" shrl $16, %%eax\n" /* output this.val char */ -" stosb\n" -" jmp .L_while_test\n" - -".align 32,0x90\n" -".L_test_for_length_base:\n" -" movl %%eax, %%ecx\n" /* len = this */ -" shrl $16, %%ecx\n" /* len = this.val */ -" movl %%ecx, 64(%%esp)\n" /* save len */ -" movb %%al, %%cl\n" - -" testb $16, %%al\n" -" jz .L_test_for_second_level_length\n" /* if ((op & 16) == 0) 8% */ -" andb $15, %%cl\n" /* op &= 15 */ -" jz .L_decode_distance\n" /* if (!op) */ -" cmpb %%cl, %%bl\n" -" jae .L_add_bits_to_len\n" /* if (op <= bits) */ - -" movb %%cl, %%ch\n" /* stash op in ch, freeing cl */ -" xorl %%eax, %%eax\n" -" lodsw\n" /* al = *(ushort *)in++ */ -" movb %%bl, %%cl\n" /* cl = bits, needs it for shifting */ -" addb $16, %%bl\n" /* bits += 16 */ -" shll %%cl, %%eax\n" -" orl %%eax, %%edx\n" /* hold |= *((ushort *)in)++ << bits */ -" movb %%ch, %%cl\n" /* move op back to ecx */ - -".L_add_bits_to_len:\n" -" subb %%cl, %%bl\n" -" xorl %%eax, %%eax\n" -" incl %%eax\n" -" shll %%cl, %%eax\n" -" decl %%eax\n" -" andl %%edx, %%eax\n" /* eax &= hold */ -" shrl %%cl, %%edx\n" -" addl %%eax, 64(%%esp)\n" /* len += hold & mask[op] */ - -".L_decode_distance:\n" -" cmpb $15, %%bl\n" -" ja .L_get_distance_code\n" /* if (15 < bits) */ - -" xorl %%eax, %%eax\n" -" lodsw\n" /* al = *(ushort *)in++ */ -" movb %%bl, %%cl\n" /* cl = bits, needs it for shifting */ -" addb $16, %%bl\n" /* bits += 16 */ -" shll %%cl, %%eax\n" -" orl %%eax, %%edx\n" /* hold |= *((ushort *)in)++ << bits */ - -".L_get_distance_code:\n" -" movl 60(%%esp), %%eax\n" /* eax = dmask */ -" movl 36(%%esp), %%ecx\n" /* ecx = dcode */ -" andl %%edx, %%eax\n" /* eax &= hold */ -" movl (%%ecx,%%eax,4), %%eax\n"/* eax = dcode[hold & dmask] */ - -".L_dodist:\n" -" movl %%eax, %%ebp\n" /* dist = this */ -" shrl $16, %%ebp\n" /* dist = this.val */ -" movb %%ah, %%cl\n" -" subb %%ah, %%bl\n" /* bits -= this.bits */ -" shrl %%cl, %%edx\n" /* hold >>= this.bits */ -" movb %%al, %%cl\n" /* cl = this.op */ - -" testb $16, %%al\n" /* if ((op & 16) == 0) */ -" jz .L_test_for_second_level_dist\n" -" andb $15, %%cl\n" /* op &= 15 */ -" jz .L_check_dist_one\n" -" cmpb %%cl, %%bl\n" -" jae .L_add_bits_to_dist\n" /* if (op <= bits) 97.6% */ - -" movb %%cl, %%ch\n" /* stash op in ch, freeing cl */ -" xorl %%eax, %%eax\n" -" lodsw\n" /* al = *(ushort *)in++ */ -" movb %%bl, %%cl\n" /* cl = bits, needs it for shifting */ -" addb $16, %%bl\n" /* bits += 16 */ -" shll %%cl, %%eax\n" -" orl %%eax, %%edx\n" /* hold |= *((ushort *)in)++ << bits */ -" movb %%ch, %%cl\n" /* move op back to ecx */ - -".L_add_bits_to_dist:\n" -" subb %%cl, %%bl\n" -" xorl %%eax, %%eax\n" -" incl %%eax\n" -" shll %%cl, %%eax\n" -" decl %%eax\n" /* (1 << op) - 1 */ -" andl %%edx, %%eax\n" /* eax &= hold */ -" shrl %%cl, %%edx\n" -" addl %%eax, %%ebp\n" /* dist += hold & ((1 << op) - 1) */ - -".L_check_window:\n" -" movl %%esi, 8(%%esp)\n" /* save in so from can use it's reg */ -" movl %%edi, %%eax\n" -" subl 20(%%esp), %%eax\n" /* nbytes = out - beg */ - -" cmpl %%ebp, %%eax\n" -" jb .L_clip_window\n" /* if (dist > nbytes) 4.2% */ - -" movl 64(%%esp), %%ecx\n" /* ecx = len */ -" movl %%edi, %%esi\n" -" subl %%ebp, %%esi\n" /* from = out - dist */ - -" sarl %%ecx\n" -" jnc .L_copy_two\n" /* if len % 2 == 0 */ - -" rep movsw\n" -" movb (%%esi), %%al\n" -" movb %%al, (%%edi)\n" -" incl %%edi\n" - -" movl 8(%%esp), %%esi\n" /* move in back to %esi, toss from */ -" movl 32(%%esp), %%ebp\n" /* ebp = lcode */ -" jmp .L_while_test\n" - -".L_copy_two:\n" -" rep movsw\n" -" movl 8(%%esp), %%esi\n" /* move in back to %esi, toss from */ -" movl 32(%%esp), %%ebp\n" /* ebp = lcode */ -" jmp .L_while_test\n" - -".align 32,0x90\n" -".L_check_dist_one:\n" -" cmpl $1, %%ebp\n" /* if dist 1, is a memset */ -" jne .L_check_window\n" -" cmpl %%edi, 20(%%esp)\n" -" je .L_check_window\n" /* out == beg, if outside window */ - -" movl 64(%%esp), %%ecx\n" /* ecx = len */ -" movb -1(%%edi), %%al\n" -" movb %%al, %%ah\n" - -" sarl %%ecx\n" -" jnc .L_set_two\n" -" movb %%al, (%%edi)\n" -" incl %%edi\n" - -".L_set_two:\n" -" rep stosw\n" -" movl 32(%%esp), %%ebp\n" /* ebp = lcode */ -" jmp .L_while_test\n" - -".align 32,0x90\n" -".L_test_for_second_level_length:\n" -" testb $64, %%al\n" -" jnz .L_test_for_end_of_block\n" /* if ((op & 64) != 0) */ - -" xorl %%eax, %%eax\n" -" incl %%eax\n" -" shll %%cl, %%eax\n" -" decl %%eax\n" -" andl %%edx, %%eax\n" /* eax &= hold */ -" addl 64(%%esp), %%eax\n" /* eax += len */ -" movl (%%ebp,%%eax,4), %%eax\n" /* eax = lcode[val+(hold&mask[op])]*/ -" jmp .L_dolen\n" - -".align 32,0x90\n" -".L_test_for_second_level_dist:\n" -" testb $64, %%al\n" -" jnz .L_invalid_distance_code\n" /* if ((op & 64) != 0) */ - -" xorl %%eax, %%eax\n" -" incl %%eax\n" -" shll %%cl, %%eax\n" -" decl %%eax\n" -" andl %%edx, %%eax\n" /* eax &= hold */ -" addl %%ebp, %%eax\n" /* eax += dist */ -" movl 36(%%esp), %%ecx\n" /* ecx = dcode */ -" movl (%%ecx,%%eax,4), %%eax\n" /* eax = dcode[val+(hold&mask[op])]*/ -" jmp .L_dodist\n" - -".align 32,0x90\n" -".L_clip_window:\n" -" movl %%eax, %%ecx\n" -" movl 48(%%esp), %%eax\n" /* eax = wsize */ -" negl %%ecx\n" /* nbytes = -nbytes */ -" movl 28(%%esp), %%esi\n" /* from = window */ - -" cmpl %%ebp, %%eax\n" -" jb .L_invalid_distance_too_far\n" /* if (dist > wsize) */ - -" addl %%ebp, %%ecx\n" /* nbytes = dist - nbytes */ -" cmpl $0, 52(%%esp)\n" -" jne .L_wrap_around_window\n" /* if (write != 0) */ - -" subl %%ecx, %%eax\n" -" addl %%eax, %%esi\n" /* from += wsize - nbytes */ - -" movl 64(%%esp), %%eax\n" /* eax = len */ -" cmpl %%ecx, %%eax\n" -" jbe .L_do_copy\n" /* if (nbytes >= len) */ - -" subl %%ecx, %%eax\n" /* len -= nbytes */ -" rep movsb\n" -" movl %%edi, %%esi\n" -" subl %%ebp, %%esi\n" /* from = out - dist */ -" jmp .L_do_copy\n" - -".align 32,0x90\n" -".L_wrap_around_window:\n" -" movl 52(%%esp), %%eax\n" /* eax = write */ -" cmpl %%eax, %%ecx\n" -" jbe .L_contiguous_in_window\n" /* if (write >= nbytes) */ - -" addl 48(%%esp), %%esi\n" /* from += wsize */ -" addl %%eax, %%esi\n" /* from += write */ -" subl %%ecx, %%esi\n" /* from -= nbytes */ -" subl %%eax, %%ecx\n" /* nbytes -= write */ - -" movl 64(%%esp), %%eax\n" /* eax = len */ -" cmpl %%ecx, %%eax\n" -" jbe .L_do_copy\n" /* if (nbytes >= len) */ - -" subl %%ecx, %%eax\n" /* len -= nbytes */ -" rep movsb\n" -" movl 28(%%esp), %%esi\n" /* from = window */ -" movl 52(%%esp), %%ecx\n" /* nbytes = write */ -" cmpl %%ecx, %%eax\n" -" jbe .L_do_copy\n" /* if (nbytes >= len) */ - -" subl %%ecx, %%eax\n" /* len -= nbytes */ -" rep movsb\n" -" movl %%edi, %%esi\n" -" subl %%ebp, %%esi\n" /* from = out - dist */ -" jmp .L_do_copy\n" - -".align 32,0x90\n" -".L_contiguous_in_window:\n" -" addl %%eax, %%esi\n" -" subl %%ecx, %%esi\n" /* from += write - nbytes */ - -" movl 64(%%esp), %%eax\n" /* eax = len */ -" cmpl %%ecx, %%eax\n" -" jbe .L_do_copy\n" /* if (nbytes >= len) */ - -" subl %%ecx, %%eax\n" /* len -= nbytes */ -" rep movsb\n" -" movl %%edi, %%esi\n" -" subl %%ebp, %%esi\n" /* from = out - dist */ -" jmp .L_do_copy\n" /* if (nbytes >= len) */ - -".align 32,0x90\n" -".L_do_copy:\n" -" movl %%eax, %%ecx\n" -" rep movsb\n" - -" movl 8(%%esp), %%esi\n" /* move in back to %esi, toss from */ -" movl 32(%%esp), %%ebp\n" /* ebp = lcode */ -" jmp .L_while_test\n" - -".L_test_for_end_of_block:\n" -" testb $32, %%al\n" -" jz .L_invalid_literal_length_code\n" -" movl $1, 72(%%esp)\n" -" jmp .L_break_loop_with_status\n" - -".L_invalid_literal_length_code:\n" -" movl $2, 72(%%esp)\n" -" jmp .L_break_loop_with_status\n" - -".L_invalid_distance_code:\n" -" movl $3, 72(%%esp)\n" -" jmp .L_break_loop_with_status\n" - -".L_invalid_distance_too_far:\n" -" movl 8(%%esp), %%esi\n" -" movl $4, 72(%%esp)\n" -" jmp .L_break_loop_with_status\n" - -".L_break_loop:\n" -" movl $0, 72(%%esp)\n" - -".L_break_loop_with_status:\n" -/* put in, out, bits, and hold back into ar and pop esp */ -" movl %%esi, 8(%%esp)\n" /* save in */ -" movl %%edi, 16(%%esp)\n" /* save out */ -" movl %%ebx, 44(%%esp)\n" /* save bits */ -" movl %%edx, 40(%%esp)\n" /* save hold */ -" movl 4(%%esp), %%ebp\n" /* restore esp, ebp */ -" movl (%%esp), %%esp\n" - : - : "m" (ar) - : "memory", "%eax", "%ebx", "%ecx", "%edx", "%esi", "%edi" - ); -#elif defined( _MSC_VER ) && ! defined( _M_AMD64 ) - __asm { - lea eax, ar - mov [eax], esp /* save esp, ebp */ - mov [eax+4], ebp - mov esp, eax - mov esi, [esp+8] /* esi = in */ - mov edi, [esp+16] /* edi = out */ - mov edx, [esp+40] /* edx = hold */ - mov ebx, [esp+44] /* ebx = bits */ - mov ebp, [esp+32] /* ebp = lcode */ - - cld - jmp L_do_loop - -ALIGN 4 -L_while_test: - cmp [esp+24], edi - jbe L_break_loop - cmp [esp+12], esi - jbe L_break_loop - -L_do_loop: - cmp bl, 15 - ja L_get_length_code /* if (15 < bits) */ - - xor eax, eax - lodsw /* al = *(ushort *)in++ */ - mov cl, bl /* cl = bits, needs it for shifting */ - add bl, 16 /* bits += 16 */ - shl eax, cl - or edx, eax /* hold |= *((ushort *)in)++ << bits */ - -L_get_length_code: - mov eax, [esp+56] /* eax = lmask */ - and eax, edx /* eax &= hold */ - mov eax, [ebp+eax*4] /* eax = lcode[hold & lmask] */ - -L_dolen: - mov cl, ah /* cl = this.bits */ - sub bl, ah /* bits -= this.bits */ - shr edx, cl /* hold >>= this.bits */ - - test al, al - jnz L_test_for_length_base /* if (op != 0) 45.7% */ - - shr eax, 16 /* output this.val char */ - stosb - jmp L_while_test - -ALIGN 4 -L_test_for_length_base: - mov ecx, eax /* len = this */ - shr ecx, 16 /* len = this.val */ - mov [esp+64], ecx /* save len */ - mov cl, al - - test al, 16 - jz L_test_for_second_level_length /* if ((op & 16) == 0) 8% */ - and cl, 15 /* op &= 15 */ - jz L_decode_distance /* if (!op) */ - cmp bl, cl - jae L_add_bits_to_len /* if (op <= bits) */ - - mov ch, cl /* stash op in ch, freeing cl */ - xor eax, eax - lodsw /* al = *(ushort *)in++ */ - mov cl, bl /* cl = bits, needs it for shifting */ - add bl, 16 /* bits += 16 */ - shl eax, cl - or edx, eax /* hold |= *((ushort *)in)++ << bits */ - mov cl, ch /* move op back to ecx */ - -L_add_bits_to_len: - sub bl, cl - xor eax, eax - inc eax - shl eax, cl - dec eax - and eax, edx /* eax &= hold */ - shr edx, cl - add [esp+64], eax /* len += hold & mask[op] */ - -L_decode_distance: - cmp bl, 15 - ja L_get_distance_code /* if (15 < bits) */ - - xor eax, eax - lodsw /* al = *(ushort *)in++ */ - mov cl, bl /* cl = bits, needs it for shifting */ - add bl, 16 /* bits += 16 */ - shl eax, cl - or edx, eax /* hold |= *((ushort *)in)++ << bits */ - -L_get_distance_code: - mov eax, [esp+60] /* eax = dmask */ - mov ecx, [esp+36] /* ecx = dcode */ - and eax, edx /* eax &= hold */ - mov eax, [ecx+eax*4]/* eax = dcode[hold & dmask] */ - -L_dodist: - mov ebp, eax /* dist = this */ - shr ebp, 16 /* dist = this.val */ - mov cl, ah - sub bl, ah /* bits -= this.bits */ - shr edx, cl /* hold >>= this.bits */ - mov cl, al /* cl = this.op */ - - test al, 16 /* if ((op & 16) == 0) */ - jz L_test_for_second_level_dist - and cl, 15 /* op &= 15 */ - jz L_check_dist_one - cmp bl, cl - jae L_add_bits_to_dist /* if (op <= bits) 97.6% */ - - mov ch, cl /* stash op in ch, freeing cl */ - xor eax, eax - lodsw /* al = *(ushort *)in++ */ - mov cl, bl /* cl = bits, needs it for shifting */ - add bl, 16 /* bits += 16 */ - shl eax, cl - or edx, eax /* hold |= *((ushort *)in)++ << bits */ - mov cl, ch /* move op back to ecx */ - -L_add_bits_to_dist: - sub bl, cl - xor eax, eax - inc eax - shl eax, cl - dec eax /* (1 << op) - 1 */ - and eax, edx /* eax &= hold */ - shr edx, cl - add ebp, eax /* dist += hold & ((1 << op) - 1) */ - -L_check_window: - mov [esp+8], esi /* save in so from can use it's reg */ - mov eax, edi - sub eax, [esp+20] /* nbytes = out - beg */ - - cmp eax, ebp - jb L_clip_window /* if (dist > nbytes) 4.2% */ - - mov ecx, [esp+64] /* ecx = len */ - mov esi, edi - sub esi, ebp /* from = out - dist */ - - sar ecx, 1 - jnc L_copy_two - - rep movsw - mov al, [esi] - mov [edi], al - inc edi - - mov esi, [esp+8] /* move in back to %esi, toss from */ - mov ebp, [esp+32] /* ebp = lcode */ - jmp L_while_test - -L_copy_two: - rep movsw - mov esi, [esp+8] /* move in back to %esi, toss from */ - mov ebp, [esp+32] /* ebp = lcode */ - jmp L_while_test - -ALIGN 4 -L_check_dist_one: - cmp ebp, 1 /* if dist 1, is a memset */ - jne L_check_window - cmp [esp+20], edi - je L_check_window /* out == beg, if outside window */ - - mov ecx, [esp+64] /* ecx = len */ - mov al, [edi-1] - mov ah, al - - sar ecx, 1 - jnc L_set_two - mov [edi], al /* memset out with from[-1] */ - inc edi - -L_set_two: - rep stosw - mov ebp, [esp+32] /* ebp = lcode */ - jmp L_while_test - -ALIGN 4 -L_test_for_second_level_length: - test al, 64 - jnz L_test_for_end_of_block /* if ((op & 64) != 0) */ - - xor eax, eax - inc eax - shl eax, cl - dec eax - and eax, edx /* eax &= hold */ - add eax, [esp+64] /* eax += len */ - mov eax, [ebp+eax*4] /* eax = lcode[val+(hold&mask[op])]*/ - jmp L_dolen - -ALIGN 4 -L_test_for_second_level_dist: - test al, 64 - jnz L_invalid_distance_code /* if ((op & 64) != 0) */ - - xor eax, eax - inc eax - shl eax, cl - dec eax - and eax, edx /* eax &= hold */ - add eax, ebp /* eax += dist */ - mov ecx, [esp+36] /* ecx = dcode */ - mov eax, [ecx+eax*4] /* eax = dcode[val+(hold&mask[op])]*/ - jmp L_dodist - -ALIGN 4 -L_clip_window: - mov ecx, eax - mov eax, [esp+48] /* eax = wsize */ - neg ecx /* nbytes = -nbytes */ - mov esi, [esp+28] /* from = window */ - - cmp eax, ebp - jb L_invalid_distance_too_far /* if (dist > wsize) */ - - add ecx, ebp /* nbytes = dist - nbytes */ - cmp dword ptr [esp+52], 0 - jne L_wrap_around_window /* if (write != 0) */ - - sub eax, ecx - add esi, eax /* from += wsize - nbytes */ - - mov eax, [esp+64] /* eax = len */ - cmp eax, ecx - jbe L_do_copy /* if (nbytes >= len) */ - - sub eax, ecx /* len -= nbytes */ - rep movsb - mov esi, edi - sub esi, ebp /* from = out - dist */ - jmp L_do_copy - -ALIGN 4 -L_wrap_around_window: - mov eax, [esp+52] /* eax = write */ - cmp ecx, eax - jbe L_contiguous_in_window /* if (write >= nbytes) */ - - add esi, [esp+48] /* from += wsize */ - add esi, eax /* from += write */ - sub esi, ecx /* from -= nbytes */ - sub ecx, eax /* nbytes -= write */ - - mov eax, [esp+64] /* eax = len */ - cmp eax, ecx - jbe L_do_copy /* if (nbytes >= len) */ - - sub eax, ecx /* len -= nbytes */ - rep movsb - mov esi, [esp+28] /* from = window */ - mov ecx, [esp+52] /* nbytes = write */ - cmp eax, ecx - jbe L_do_copy /* if (nbytes >= len) */ - - sub eax, ecx /* len -= nbytes */ - rep movsb - mov esi, edi - sub esi, ebp /* from = out - dist */ - jmp L_do_copy - -ALIGN 4 -L_contiguous_in_window: - add esi, eax - sub esi, ecx /* from += write - nbytes */ - - mov eax, [esp+64] /* eax = len */ - cmp eax, ecx - jbe L_do_copy /* if (nbytes >= len) */ - - sub eax, ecx /* len -= nbytes */ - rep movsb - mov esi, edi - sub esi, ebp /* from = out - dist */ - jmp L_do_copy - -ALIGN 4 -L_do_copy: - mov ecx, eax - rep movsb - - mov esi, [esp+8] /* move in back to %esi, toss from */ - mov ebp, [esp+32] /* ebp = lcode */ - jmp L_while_test - -L_test_for_end_of_block: - test al, 32 - jz L_invalid_literal_length_code - mov dword ptr [esp+72], 1 - jmp L_break_loop_with_status - -L_invalid_literal_length_code: - mov dword ptr [esp+72], 2 - jmp L_break_loop_with_status - -L_invalid_distance_code: - mov dword ptr [esp+72], 3 - jmp L_break_loop_with_status - -L_invalid_distance_too_far: - mov esi, [esp+4] - mov dword ptr [esp+72], 4 - jmp L_break_loop_with_status - -L_break_loop: - mov dword ptr [esp+72], 0 - -L_break_loop_with_status: -/* put in, out, bits, and hold back into ar and pop esp */ - mov [esp+8], esi /* save in */ - mov [esp+16], edi /* save out */ - mov [esp+44], ebx /* save bits */ - mov [esp+40], edx /* save hold */ - mov ebp, [esp+4] /* restore esp, ebp */ - mov esp, [esp] - } -#else -#error "x86 architecture not defined" -#endif - - if (ar.status > 1) { - if (ar.status == 2) - strm->msg = "invalid literal/length code"; - else if (ar.status == 3) - strm->msg = "invalid distance code"; - else - strm->msg = "invalid distance too far back"; - state->mode = BAD; - } - else if ( ar.status == 1 ) { - state->mode = TYPE; - } - - /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ - ar.len = ar.bits >> 3; - ar.in -= ar.len; - ar.bits -= ar.len << 3; - ar.hold &= (1U << ar.bits) - 1; - - /* update state and return */ - strm->next_in = ar.in; - strm->next_out = ar.out; - strm->avail_in = (unsigned)(ar.in < ar.last ? - PAD_AVAIL_IN + (ar.last - ar.in) : - PAD_AVAIL_IN - (ar.in - ar.last)); - strm->avail_out = (unsigned)(ar.out < ar.end ? - PAD_AVAIL_OUT + (ar.end - ar.out) : - PAD_AVAIL_OUT - (ar.out - ar.end)); - state->hold = ar.hold; - state->bits = ar.bits; - return; -} - diff --git a/io2d/src/3rd-party/zlib/contrib/inflate86/inffast.S b/io2d/src/3rd-party/zlib/contrib/inflate86/inffast.S deleted file mode 100644 index 2245a29..0000000 --- a/io2d/src/3rd-party/zlib/contrib/inflate86/inffast.S +++ /dev/null @@ -1,1368 +0,0 @@ -/* - * inffast.S is a hand tuned assembler version of: - * - * inffast.c -- fast decoding - * Copyright (C) 1995-2003 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - * - * Copyright (C) 2003 Chris Anderson - * Please use the copyright conditions above. - * - * This version (Jan-23-2003) of inflate_fast was coded and tested under - * GNU/Linux on a pentium 3, using the gcc-3.2 compiler distribution. On that - * machine, I found that gzip style archives decompressed about 20% faster than - * the gcc-3.2 -O3 -fomit-frame-pointer compiled version. Your results will - * depend on how large of a buffer is used for z_stream.next_in & next_out - * (8K-32K worked best for my 256K cpu cache) and how much overhead there is in - * stream processing I/O and crc32/addler32. In my case, this routine used - * 70% of the cpu time and crc32 used 20%. - * - * I am confident that this version will work in the general case, but I have - * not tested a wide variety of datasets or a wide variety of platforms. - * - * Jan-24-2003 -- Added -DUSE_MMX define for slightly faster inflating. - * It should be a runtime flag instead of compile time flag... - * - * Jan-26-2003 -- Added runtime check for MMX support with cpuid instruction. - * With -DUSE_MMX, only MMX code is compiled. With -DNO_MMX, only non-MMX code - * is compiled. Without either option, runtime detection is enabled. Runtime - * detection should work on all modern cpus and the recomended algorithm (flip - * ID bit on eflags and then use the cpuid instruction) is used in many - * multimedia applications. Tested under win2k with gcc-2.95 and gas-2.12 - * distributed with cygwin3. Compiling with gcc-2.95 -c inffast.S -o - * inffast.obj generates a COFF object which can then be linked with MSVC++ - * compiled code. Tested under FreeBSD 4.7 with gcc-2.95. - * - * Jan-28-2003 -- Tested Athlon XP... MMX mode is slower than no MMX (and - * slower than compiler generated code). Adjusted cpuid check to use the MMX - * code only for Pentiums < P4 until I have more data on the P4. Speed - * improvment is only about 15% on the Athlon when compared with code generated - * with MSVC++. Not sure yet, but I think the P4 will also be slower using the - * MMX mode because many of it's x86 ALU instructions execute in .5 cycles and - * have less latency than MMX ops. Added code to buffer the last 11 bytes of - * the input stream since the MMX code grabs bits in chunks of 32, which - * differs from the inffast.c algorithm. I don't think there would have been - * read overruns where a page boundary was crossed (a segfault), but there - * could have been overruns when next_in ends on unaligned memory (unintialized - * memory read). - * - * Mar-13-2003 -- P4 MMX is slightly slower than P4 NO_MMX. I created a C - * version of the non-MMX code so that it doesn't depend on zstrm and zstate - * structure offsets which are hard coded in this file. This was last tested - * with zlib-1.2.0 which is currently in beta testing, newer versions of this - * and inffas86.c can be found at http://www.eetbeetee.com/zlib/ and - * http://www.charm.net/~christop/zlib/ - */ - - -/* - * if you have underscore linking problems (_inflate_fast undefined), try - * using -DGAS_COFF - */ -#if ! defined( GAS_COFF ) && ! defined( GAS_ELF ) - -#if defined( WIN32 ) || defined( __CYGWIN__ ) -#define GAS_COFF /* windows object format */ -#else -#define GAS_ELF -#endif - -#endif /* ! GAS_COFF && ! GAS_ELF */ - - -#if defined( GAS_COFF ) - -/* coff externals have underscores */ -#define inflate_fast _inflate_fast -#define inflate_fast_use_mmx _inflate_fast_use_mmx - -#endif /* GAS_COFF */ - - -.file "inffast.S" - -.globl inflate_fast - -.text -.align 4,0 -.L_invalid_literal_length_code_msg: -.string "invalid literal/length code" - -.align 4,0 -.L_invalid_distance_code_msg: -.string "invalid distance code" - -.align 4,0 -.L_invalid_distance_too_far_msg: -.string "invalid distance too far back" - -#if ! defined( NO_MMX ) -.align 4,0 -.L_mask: /* mask[N] = ( 1 << N ) - 1 */ -.long 0 -.long 1 -.long 3 -.long 7 -.long 15 -.long 31 -.long 63 -.long 127 -.long 255 -.long 511 -.long 1023 -.long 2047 -.long 4095 -.long 8191 -.long 16383 -.long 32767 -.long 65535 -.long 131071 -.long 262143 -.long 524287 -.long 1048575 -.long 2097151 -.long 4194303 -.long 8388607 -.long 16777215 -.long 33554431 -.long 67108863 -.long 134217727 -.long 268435455 -.long 536870911 -.long 1073741823 -.long 2147483647 -.long 4294967295 -#endif /* NO_MMX */ - -.text - -/* - * struct z_stream offsets, in zlib.h - */ -#define next_in_strm 0 /* strm->next_in */ -#define avail_in_strm 4 /* strm->avail_in */ -#define next_out_strm 12 /* strm->next_out */ -#define avail_out_strm 16 /* strm->avail_out */ -#define msg_strm 24 /* strm->msg */ -#define state_strm 28 /* strm->state */ - -/* - * struct inflate_state offsets, in inflate.h - */ -#define mode_state 0 /* state->mode */ -#define wsize_state 32 /* state->wsize */ -#define write_state 40 /* state->write */ -#define window_state 44 /* state->window */ -#define hold_state 48 /* state->hold */ -#define bits_state 52 /* state->bits */ -#define lencode_state 68 /* state->lencode */ -#define distcode_state 72 /* state->distcode */ -#define lenbits_state 76 /* state->lenbits */ -#define distbits_state 80 /* state->distbits */ - -/* - * inflate_fast's activation record - */ -#define local_var_size 64 /* how much local space for vars */ -#define strm_sp 88 /* first arg: z_stream * (local_var_size + 24) */ -#define start_sp 92 /* second arg: unsigned int (local_var_size + 28) */ - -/* - * offsets for local vars on stack - */ -#define out 60 /* unsigned char* */ -#define window 56 /* unsigned char* */ -#define wsize 52 /* unsigned int */ -#define write 48 /* unsigned int */ -#define in 44 /* unsigned char* */ -#define beg 40 /* unsigned char* */ -#define buf 28 /* char[ 12 ] */ -#define len 24 /* unsigned int */ -#define last 20 /* unsigned char* */ -#define end 16 /* unsigned char* */ -#define dcode 12 /* code* */ -#define lcode 8 /* code* */ -#define dmask 4 /* unsigned int */ -#define lmask 0 /* unsigned int */ - -/* - * typedef enum inflate_mode consts, in inflate.h - */ -#define INFLATE_MODE_TYPE 11 /* state->mode flags enum-ed in inflate.h */ -#define INFLATE_MODE_BAD 26 - - -#if ! defined( USE_MMX ) && ! defined( NO_MMX ) - -#define RUN_TIME_MMX - -#define CHECK_MMX 1 -#define DO_USE_MMX 2 -#define DONT_USE_MMX 3 - -.globl inflate_fast_use_mmx - -.data - -.align 4,0 -inflate_fast_use_mmx: /* integer flag for run time control 1=check,2=mmx,3=no */ -.long CHECK_MMX - -#if defined( GAS_ELF ) -/* elf info */ -.type inflate_fast_use_mmx,@object -.size inflate_fast_use_mmx,4 -#endif - -#endif /* RUN_TIME_MMX */ - -#if defined( GAS_COFF ) -/* coff info: scl 2 = extern, type 32 = function */ -.def inflate_fast; .scl 2; .type 32; .endef -#endif - -.text - -.align 32,0x90 -inflate_fast: - pushl %edi - pushl %esi - pushl %ebp - pushl %ebx - pushf /* save eflags (strm_sp, state_sp assumes this is 32 bits) */ - subl $local_var_size, %esp - cld - -#define strm_r %esi -#define state_r %edi - - movl strm_sp(%esp), strm_r - movl state_strm(strm_r), state_r - - /* in = strm->next_in; - * out = strm->next_out; - * last = in + strm->avail_in - 11; - * beg = out - (start - strm->avail_out); - * end = out + (strm->avail_out - 257); - */ - movl avail_in_strm(strm_r), %edx - movl next_in_strm(strm_r), %eax - - addl %eax, %edx /* avail_in += next_in */ - subl $11, %edx /* avail_in -= 11 */ - - movl %eax, in(%esp) - movl %edx, last(%esp) - - movl start_sp(%esp), %ebp - movl avail_out_strm(strm_r), %ecx - movl next_out_strm(strm_r), %ebx - - subl %ecx, %ebp /* start -= avail_out */ - negl %ebp /* start = -start */ - addl %ebx, %ebp /* start += next_out */ - - subl $257, %ecx /* avail_out -= 257 */ - addl %ebx, %ecx /* avail_out += out */ - - movl %ebx, out(%esp) - movl %ebp, beg(%esp) - movl %ecx, end(%esp) - - /* wsize = state->wsize; - * write = state->write; - * window = state->window; - * hold = state->hold; - * bits = state->bits; - * lcode = state->lencode; - * dcode = state->distcode; - * lmask = ( 1 << state->lenbits ) - 1; - * dmask = ( 1 << state->distbits ) - 1; - */ - - movl lencode_state(state_r), %eax - movl distcode_state(state_r), %ecx - - movl %eax, lcode(%esp) - movl %ecx, dcode(%esp) - - movl $1, %eax - movl lenbits_state(state_r), %ecx - shll %cl, %eax - decl %eax - movl %eax, lmask(%esp) - - movl $1, %eax - movl distbits_state(state_r), %ecx - shll %cl, %eax - decl %eax - movl %eax, dmask(%esp) - - movl wsize_state(state_r), %eax - movl write_state(state_r), %ecx - movl window_state(state_r), %edx - - movl %eax, wsize(%esp) - movl %ecx, write(%esp) - movl %edx, window(%esp) - - movl hold_state(state_r), %ebp - movl bits_state(state_r), %ebx - -#undef strm_r -#undef state_r - -#define in_r %esi -#define from_r %esi -#define out_r %edi - - movl in(%esp), in_r - movl last(%esp), %ecx - cmpl in_r, %ecx - ja .L_align_long /* if in < last */ - - addl $11, %ecx /* ecx = &in[ avail_in ] */ - subl in_r, %ecx /* ecx = avail_in */ - movl $12, %eax - subl %ecx, %eax /* eax = 12 - avail_in */ - leal buf(%esp), %edi - rep movsb /* memcpy( buf, in, avail_in ) */ - movl %eax, %ecx - xorl %eax, %eax - rep stosb /* memset( &buf[ avail_in ], 0, 12 - avail_in ) */ - leal buf(%esp), in_r /* in = buf */ - movl in_r, last(%esp) /* last = in, do just one iteration */ - jmp .L_is_aligned - - /* align in_r on long boundary */ -.L_align_long: - testl $3, in_r - jz .L_is_aligned - xorl %eax, %eax - movb (in_r), %al - incl in_r - movl %ebx, %ecx - addl $8, %ebx - shll %cl, %eax - orl %eax, %ebp - jmp .L_align_long - -.L_is_aligned: - movl out(%esp), out_r - -#if defined( NO_MMX ) - jmp .L_do_loop -#endif - -#if defined( USE_MMX ) - jmp .L_init_mmx -#endif - -/*** Runtime MMX check ***/ - -#if defined( RUN_TIME_MMX ) -.L_check_mmx: - cmpl $DO_USE_MMX, inflate_fast_use_mmx - je .L_init_mmx - ja .L_do_loop /* > 2 */ - - pushl %eax - pushl %ebx - pushl %ecx - pushl %edx - pushf - movl (%esp), %eax /* copy eflags to eax */ - xorl $0x200000, (%esp) /* try toggling ID bit of eflags (bit 21) - * to see if cpu supports cpuid... - * ID bit method not supported by NexGen but - * bios may load a cpuid instruction and - * cpuid may be disabled on Cyrix 5-6x86 */ - popf - pushf - popl %edx /* copy new eflags to edx */ - xorl %eax, %edx /* test if ID bit is flipped */ - jz .L_dont_use_mmx /* not flipped if zero */ - xorl %eax, %eax - cpuid - cmpl $0x756e6547, %ebx /* check for GenuineIntel in ebx,ecx,edx */ - jne .L_dont_use_mmx - cmpl $0x6c65746e, %ecx - jne .L_dont_use_mmx - cmpl $0x49656e69, %edx - jne .L_dont_use_mmx - movl $1, %eax - cpuid /* get cpu features */ - shrl $8, %eax - andl $15, %eax - cmpl $6, %eax /* check for Pentium family, is 0xf for P4 */ - jne .L_dont_use_mmx - testl $0x800000, %edx /* test if MMX feature is set (bit 23) */ - jnz .L_use_mmx - jmp .L_dont_use_mmx -.L_use_mmx: - movl $DO_USE_MMX, inflate_fast_use_mmx - jmp .L_check_mmx_pop -.L_dont_use_mmx: - movl $DONT_USE_MMX, inflate_fast_use_mmx -.L_check_mmx_pop: - popl %edx - popl %ecx - popl %ebx - popl %eax - jmp .L_check_mmx -#endif - - -/*** Non-MMX code ***/ - -#if defined ( NO_MMX ) || defined( RUN_TIME_MMX ) - -#define hold_r %ebp -#define bits_r %bl -#define bitslong_r %ebx - -.align 32,0x90 -.L_while_test: - /* while (in < last && out < end) - */ - cmpl out_r, end(%esp) - jbe .L_break_loop /* if (out >= end) */ - - cmpl in_r, last(%esp) - jbe .L_break_loop - -.L_do_loop: - /* regs: %esi = in, %ebp = hold, %bl = bits, %edi = out - * - * do { - * if (bits < 15) { - * hold |= *((unsigned short *)in)++ << bits; - * bits += 16 - * } - * this = lcode[hold & lmask] - */ - cmpb $15, bits_r - ja .L_get_length_code /* if (15 < bits) */ - - xorl %eax, %eax - lodsw /* al = *(ushort *)in++ */ - movb bits_r, %cl /* cl = bits, needs it for shifting */ - addb $16, bits_r /* bits += 16 */ - shll %cl, %eax - orl %eax, hold_r /* hold |= *((ushort *)in)++ << bits */ - -.L_get_length_code: - movl lmask(%esp), %edx /* edx = lmask */ - movl lcode(%esp), %ecx /* ecx = lcode */ - andl hold_r, %edx /* edx &= hold */ - movl (%ecx,%edx,4), %eax /* eax = lcode[hold & lmask] */ - -.L_dolen: - /* regs: %esi = in, %ebp = hold, %bl = bits, %edi = out - * - * dolen: - * bits -= this.bits; - * hold >>= this.bits - */ - movb %ah, %cl /* cl = this.bits */ - subb %ah, bits_r /* bits -= this.bits */ - shrl %cl, hold_r /* hold >>= this.bits */ - - /* check if op is a literal - * if (op == 0) { - * PUP(out) = this.val; - * } - */ - testb %al, %al - jnz .L_test_for_length_base /* if (op != 0) 45.7% */ - - shrl $16, %eax /* output this.val char */ - stosb - jmp .L_while_test - -.L_test_for_length_base: - /* regs: %esi = in, %ebp = hold, %bl = bits, %edi = out, %edx = len - * - * else if (op & 16) { - * len = this.val - * op &= 15 - * if (op) { - * if (op > bits) { - * hold |= *((unsigned short *)in)++ << bits; - * bits += 16 - * } - * len += hold & mask[op]; - * bits -= op; - * hold >>= op; - * } - */ -#define len_r %edx - movl %eax, len_r /* len = this */ - shrl $16, len_r /* len = this.val */ - movb %al, %cl - - testb $16, %al - jz .L_test_for_second_level_length /* if ((op & 16) == 0) 8% */ - andb $15, %cl /* op &= 15 */ - jz .L_save_len /* if (!op) */ - cmpb %cl, bits_r - jae .L_add_bits_to_len /* if (op <= bits) */ - - movb %cl, %ch /* stash op in ch, freeing cl */ - xorl %eax, %eax - lodsw /* al = *(ushort *)in++ */ - movb bits_r, %cl /* cl = bits, needs it for shifting */ - addb $16, bits_r /* bits += 16 */ - shll %cl, %eax - orl %eax, hold_r /* hold |= *((ushort *)in)++ << bits */ - movb %ch, %cl /* move op back to ecx */ - -.L_add_bits_to_len: - movl $1, %eax - shll %cl, %eax - decl %eax - subb %cl, bits_r - andl hold_r, %eax /* eax &= hold */ - shrl %cl, hold_r - addl %eax, len_r /* len += hold & mask[op] */ - -.L_save_len: - movl len_r, len(%esp) /* save len */ -#undef len_r - -.L_decode_distance: - /* regs: %esi = in, %ebp = hold, %bl = bits, %edi = out, %edx = dist - * - * if (bits < 15) { - * hold |= *((unsigned short *)in)++ << bits; - * bits += 16 - * } - * this = dcode[hold & dmask]; - * dodist: - * bits -= this.bits; - * hold >>= this.bits; - * op = this.op; - */ - - cmpb $15, bits_r - ja .L_get_distance_code /* if (15 < bits) */ - - xorl %eax, %eax - lodsw /* al = *(ushort *)in++ */ - movb bits_r, %cl /* cl = bits, needs it for shifting */ - addb $16, bits_r /* bits += 16 */ - shll %cl, %eax - orl %eax, hold_r /* hold |= *((ushort *)in)++ << bits */ - -.L_get_distance_code: - movl dmask(%esp), %edx /* edx = dmask */ - movl dcode(%esp), %ecx /* ecx = dcode */ - andl hold_r, %edx /* edx &= hold */ - movl (%ecx,%edx,4), %eax /* eax = dcode[hold & dmask] */ - -#define dist_r %edx -.L_dodist: - movl %eax, dist_r /* dist = this */ - shrl $16, dist_r /* dist = this.val */ - movb %ah, %cl - subb %ah, bits_r /* bits -= this.bits */ - shrl %cl, hold_r /* hold >>= this.bits */ - - /* if (op & 16) { - * dist = this.val - * op &= 15 - * if (op > bits) { - * hold |= *((unsigned short *)in)++ << bits; - * bits += 16 - * } - * dist += hold & mask[op]; - * bits -= op; - * hold >>= op; - */ - movb %al, %cl /* cl = this.op */ - - testb $16, %al /* if ((op & 16) == 0) */ - jz .L_test_for_second_level_dist - andb $15, %cl /* op &= 15 */ - jz .L_check_dist_one - cmpb %cl, bits_r - jae .L_add_bits_to_dist /* if (op <= bits) 97.6% */ - - movb %cl, %ch /* stash op in ch, freeing cl */ - xorl %eax, %eax - lodsw /* al = *(ushort *)in++ */ - movb bits_r, %cl /* cl = bits, needs it for shifting */ - addb $16, bits_r /* bits += 16 */ - shll %cl, %eax - orl %eax, hold_r /* hold |= *((ushort *)in)++ << bits */ - movb %ch, %cl /* move op back to ecx */ - -.L_add_bits_to_dist: - movl $1, %eax - shll %cl, %eax - decl %eax /* (1 << op) - 1 */ - subb %cl, bits_r - andl hold_r, %eax /* eax &= hold */ - shrl %cl, hold_r - addl %eax, dist_r /* dist += hold & ((1 << op) - 1) */ - jmp .L_check_window - -.L_check_window: - /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist - * %ecx = nbytes - * - * nbytes = out - beg; - * if (dist <= nbytes) { - * from = out - dist; - * do { - * PUP(out) = PUP(from); - * } while (--len > 0) { - * } - */ - - movl in_r, in(%esp) /* save in so from can use it's reg */ - movl out_r, %eax - subl beg(%esp), %eax /* nbytes = out - beg */ - - cmpl dist_r, %eax - jb .L_clip_window /* if (dist > nbytes) 4.2% */ - - movl len(%esp), %ecx - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - - subl $3, %ecx - movb (from_r), %al - movb %al, (out_r) - movb 1(from_r), %al - movb 2(from_r), %dl - addl $3, from_r - movb %al, 1(out_r) - movb %dl, 2(out_r) - addl $3, out_r - rep movsb - - movl in(%esp), in_r /* move in back to %esi, toss from */ - jmp .L_while_test - -.align 16,0x90 -.L_check_dist_one: - cmpl $1, dist_r - jne .L_check_window - cmpl out_r, beg(%esp) - je .L_check_window - - decl out_r - movl len(%esp), %ecx - movb (out_r), %al - subl $3, %ecx - - movb %al, 1(out_r) - movb %al, 2(out_r) - movb %al, 3(out_r) - addl $4, out_r - rep stosb - - jmp .L_while_test - -.align 16,0x90 -.L_test_for_second_level_length: - /* else if ((op & 64) == 0) { - * this = lcode[this.val + (hold & mask[op])]; - * } - */ - testb $64, %al - jnz .L_test_for_end_of_block /* if ((op & 64) != 0) */ - - movl $1, %eax - shll %cl, %eax - decl %eax - andl hold_r, %eax /* eax &= hold */ - addl %edx, %eax /* eax += this.val */ - movl lcode(%esp), %edx /* edx = lcode */ - movl (%edx,%eax,4), %eax /* eax = lcode[val + (hold&mask[op])] */ - jmp .L_dolen - -.align 16,0x90 -.L_test_for_second_level_dist: - /* else if ((op & 64) == 0) { - * this = dcode[this.val + (hold & mask[op])]; - * } - */ - testb $64, %al - jnz .L_invalid_distance_code /* if ((op & 64) != 0) */ - - movl $1, %eax - shll %cl, %eax - decl %eax - andl hold_r, %eax /* eax &= hold */ - addl %edx, %eax /* eax += this.val */ - movl dcode(%esp), %edx /* edx = dcode */ - movl (%edx,%eax,4), %eax /* eax = dcode[val + (hold&mask[op])] */ - jmp .L_dodist - -.align 16,0x90 -.L_clip_window: - /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist - * %ecx = nbytes - * - * else { - * if (dist > wsize) { - * invalid distance - * } - * from = window; - * nbytes = dist - nbytes; - * if (write == 0) { - * from += wsize - nbytes; - */ -#define nbytes_r %ecx - movl %eax, nbytes_r - movl wsize(%esp), %eax /* prepare for dist compare */ - negl nbytes_r /* nbytes = -nbytes */ - movl window(%esp), from_r /* from = window */ - - cmpl dist_r, %eax - jb .L_invalid_distance_too_far /* if (dist > wsize) */ - - addl dist_r, nbytes_r /* nbytes = dist - nbytes */ - cmpl $0, write(%esp) - jne .L_wrap_around_window /* if (write != 0) */ - - subl nbytes_r, %eax - addl %eax, from_r /* from += wsize - nbytes */ - - /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist - * %ecx = nbytes, %eax = len - * - * if (nbytes < len) { - * len -= nbytes; - * do { - * PUP(out) = PUP(from); - * } while (--nbytes); - * from = out - dist; - * } - * } - */ -#define len_r %eax - movl len(%esp), len_r - cmpl nbytes_r, len_r - jbe .L_do_copy1 /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - jmp .L_do_copy1 - - cmpl nbytes_r, len_r - jbe .L_do_copy1 /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - jmp .L_do_copy1 - -.L_wrap_around_window: - /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist - * %ecx = nbytes, %eax = write, %eax = len - * - * else if (write < nbytes) { - * from += wsize + write - nbytes; - * nbytes -= write; - * if (nbytes < len) { - * len -= nbytes; - * do { - * PUP(out) = PUP(from); - * } while (--nbytes); - * from = window; - * nbytes = write; - * if (nbytes < len) { - * len -= nbytes; - * do { - * PUP(out) = PUP(from); - * } while(--nbytes); - * from = out - dist; - * } - * } - * } - */ -#define write_r %eax - movl write(%esp), write_r - cmpl write_r, nbytes_r - jbe .L_contiguous_in_window /* if (write >= nbytes) */ - - addl wsize(%esp), from_r - addl write_r, from_r - subl nbytes_r, from_r /* from += wsize + write - nbytes */ - subl write_r, nbytes_r /* nbytes -= write */ -#undef write_r - - movl len(%esp), len_r - cmpl nbytes_r, len_r - jbe .L_do_copy1 /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl window(%esp), from_r /* from = window */ - movl write(%esp), nbytes_r /* nbytes = write */ - cmpl nbytes_r, len_r - jbe .L_do_copy1 /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - jmp .L_do_copy1 - -.L_contiguous_in_window: - /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist - * %ecx = nbytes, %eax = write, %eax = len - * - * else { - * from += write - nbytes; - * if (nbytes < len) { - * len -= nbytes; - * do { - * PUP(out) = PUP(from); - * } while (--nbytes); - * from = out - dist; - * } - * } - */ -#define write_r %eax - addl write_r, from_r - subl nbytes_r, from_r /* from += write - nbytes */ -#undef write_r - - movl len(%esp), len_r - cmpl nbytes_r, len_r - jbe .L_do_copy1 /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - -.L_do_copy1: - /* regs: %esi = from, %esi = in, %ebp = hold, %bl = bits, %edi = out - * %eax = len - * - * while (len > 0) { - * PUP(out) = PUP(from); - * len--; - * } - * } - * } while (in < last && out < end); - */ -#undef nbytes_r -#define in_r %esi - movl len_r, %ecx - rep movsb - - movl in(%esp), in_r /* move in back to %esi, toss from */ - jmp .L_while_test - -#undef len_r -#undef dist_r - -#endif /* NO_MMX || RUN_TIME_MMX */ - - -/*** MMX code ***/ - -#if defined( USE_MMX ) || defined( RUN_TIME_MMX ) - -.align 32,0x90 -.L_init_mmx: - emms - -#undef bits_r -#undef bitslong_r -#define bitslong_r %ebp -#define hold_mm %mm0 - movd %ebp, hold_mm - movl %ebx, bitslong_r - -#define used_mm %mm1 -#define dmask2_mm %mm2 -#define lmask2_mm %mm3 -#define lmask_mm %mm4 -#define dmask_mm %mm5 -#define tmp_mm %mm6 - - movd lmask(%esp), lmask_mm - movq lmask_mm, lmask2_mm - movd dmask(%esp), dmask_mm - movq dmask_mm, dmask2_mm - pxor used_mm, used_mm - movl lcode(%esp), %ebx /* ebx = lcode */ - jmp .L_do_loop_mmx - -.align 32,0x90 -.L_while_test_mmx: - /* while (in < last && out < end) - */ - cmpl out_r, end(%esp) - jbe .L_break_loop /* if (out >= end) */ - - cmpl in_r, last(%esp) - jbe .L_break_loop - -.L_do_loop_mmx: - psrlq used_mm, hold_mm /* hold_mm >>= last bit length */ - - cmpl $32, bitslong_r - ja .L_get_length_code_mmx /* if (32 < bits) */ - - movd bitslong_r, tmp_mm - movd (in_r), %mm7 - addl $4, in_r - psllq tmp_mm, %mm7 - addl $32, bitslong_r - por %mm7, hold_mm /* hold_mm |= *((uint *)in)++ << bits */ - -.L_get_length_code_mmx: - pand hold_mm, lmask_mm - movd lmask_mm, %eax - movq lmask2_mm, lmask_mm - movl (%ebx,%eax,4), %eax /* eax = lcode[hold & lmask] */ - -.L_dolen_mmx: - movzbl %ah, %ecx /* ecx = this.bits */ - movd %ecx, used_mm - subl %ecx, bitslong_r /* bits -= this.bits */ - - testb %al, %al - jnz .L_test_for_length_base_mmx /* if (op != 0) 45.7% */ - - shrl $16, %eax /* output this.val char */ - stosb - jmp .L_while_test_mmx - -.L_test_for_length_base_mmx: -#define len_r %edx - movl %eax, len_r /* len = this */ - shrl $16, len_r /* len = this.val */ - - testb $16, %al - jz .L_test_for_second_level_length_mmx /* if ((op & 16) == 0) 8% */ - andl $15, %eax /* op &= 15 */ - jz .L_decode_distance_mmx /* if (!op) */ - - psrlq used_mm, hold_mm /* hold_mm >>= last bit length */ - movd %eax, used_mm - movd hold_mm, %ecx - subl %eax, bitslong_r - andl .L_mask(,%eax,4), %ecx - addl %ecx, len_r /* len += hold & mask[op] */ - -.L_decode_distance_mmx: - psrlq used_mm, hold_mm /* hold_mm >>= last bit length */ - - cmpl $32, bitslong_r - ja .L_get_dist_code_mmx /* if (32 < bits) */ - - movd bitslong_r, tmp_mm - movd (in_r), %mm7 - addl $4, in_r - psllq tmp_mm, %mm7 - addl $32, bitslong_r - por %mm7, hold_mm /* hold_mm |= *((uint *)in)++ << bits */ - -.L_get_dist_code_mmx: - movl dcode(%esp), %ebx /* ebx = dcode */ - pand hold_mm, dmask_mm - movd dmask_mm, %eax - movq dmask2_mm, dmask_mm - movl (%ebx,%eax,4), %eax /* eax = dcode[hold & lmask] */ - -.L_dodist_mmx: -#define dist_r %ebx - movzbl %ah, %ecx /* ecx = this.bits */ - movl %eax, dist_r - shrl $16, dist_r /* dist = this.val */ - subl %ecx, bitslong_r /* bits -= this.bits */ - movd %ecx, used_mm - - testb $16, %al /* if ((op & 16) == 0) */ - jz .L_test_for_second_level_dist_mmx - andl $15, %eax /* op &= 15 */ - jz .L_check_dist_one_mmx - -.L_add_bits_to_dist_mmx: - psrlq used_mm, hold_mm /* hold_mm >>= last bit length */ - movd %eax, used_mm /* save bit length of current op */ - movd hold_mm, %ecx /* get the next bits on input stream */ - subl %eax, bitslong_r /* bits -= op bits */ - andl .L_mask(,%eax,4), %ecx /* ecx = hold & mask[op] */ - addl %ecx, dist_r /* dist += hold & mask[op] */ - -.L_check_window_mmx: - movl in_r, in(%esp) /* save in so from can use it's reg */ - movl out_r, %eax - subl beg(%esp), %eax /* nbytes = out - beg */ - - cmpl dist_r, %eax - jb .L_clip_window_mmx /* if (dist > nbytes) 4.2% */ - - movl len_r, %ecx - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - - subl $3, %ecx - movb (from_r), %al - movb %al, (out_r) - movb 1(from_r), %al - movb 2(from_r), %dl - addl $3, from_r - movb %al, 1(out_r) - movb %dl, 2(out_r) - addl $3, out_r - rep movsb - - movl in(%esp), in_r /* move in back to %esi, toss from */ - movl lcode(%esp), %ebx /* move lcode back to %ebx, toss dist */ - jmp .L_while_test_mmx - -.align 16,0x90 -.L_check_dist_one_mmx: - cmpl $1, dist_r - jne .L_check_window_mmx - cmpl out_r, beg(%esp) - je .L_check_window_mmx - - decl out_r - movl len_r, %ecx - movb (out_r), %al - subl $3, %ecx - - movb %al, 1(out_r) - movb %al, 2(out_r) - movb %al, 3(out_r) - addl $4, out_r - rep stosb - - movl lcode(%esp), %ebx /* move lcode back to %ebx, toss dist */ - jmp .L_while_test_mmx - -.align 16,0x90 -.L_test_for_second_level_length_mmx: - testb $64, %al - jnz .L_test_for_end_of_block /* if ((op & 64) != 0) */ - - andl $15, %eax - psrlq used_mm, hold_mm /* hold_mm >>= last bit length */ - movd hold_mm, %ecx - andl .L_mask(,%eax,4), %ecx - addl len_r, %ecx - movl (%ebx,%ecx,4), %eax /* eax = lcode[hold & lmask] */ - jmp .L_dolen_mmx - -.align 16,0x90 -.L_test_for_second_level_dist_mmx: - testb $64, %al - jnz .L_invalid_distance_code /* if ((op & 64) != 0) */ - - andl $15, %eax - psrlq used_mm, hold_mm /* hold_mm >>= last bit length */ - movd hold_mm, %ecx - andl .L_mask(,%eax,4), %ecx - movl dcode(%esp), %eax /* ecx = dcode */ - addl dist_r, %ecx - movl (%eax,%ecx,4), %eax /* eax = lcode[hold & lmask] */ - jmp .L_dodist_mmx - -.align 16,0x90 -.L_clip_window_mmx: -#define nbytes_r %ecx - movl %eax, nbytes_r - movl wsize(%esp), %eax /* prepare for dist compare */ - negl nbytes_r /* nbytes = -nbytes */ - movl window(%esp), from_r /* from = window */ - - cmpl dist_r, %eax - jb .L_invalid_distance_too_far /* if (dist > wsize) */ - - addl dist_r, nbytes_r /* nbytes = dist - nbytes */ - cmpl $0, write(%esp) - jne .L_wrap_around_window_mmx /* if (write != 0) */ - - subl nbytes_r, %eax - addl %eax, from_r /* from += wsize - nbytes */ - - cmpl nbytes_r, len_r - jbe .L_do_copy1_mmx /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - jmp .L_do_copy1_mmx - - cmpl nbytes_r, len_r - jbe .L_do_copy1_mmx /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - jmp .L_do_copy1_mmx - -.L_wrap_around_window_mmx: -#define write_r %eax - movl write(%esp), write_r - cmpl write_r, nbytes_r - jbe .L_contiguous_in_window_mmx /* if (write >= nbytes) */ - - addl wsize(%esp), from_r - addl write_r, from_r - subl nbytes_r, from_r /* from += wsize + write - nbytes */ - subl write_r, nbytes_r /* nbytes -= write */ -#undef write_r - - cmpl nbytes_r, len_r - jbe .L_do_copy1_mmx /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl window(%esp), from_r /* from = window */ - movl write(%esp), nbytes_r /* nbytes = write */ - cmpl nbytes_r, len_r - jbe .L_do_copy1_mmx /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - jmp .L_do_copy1_mmx - -.L_contiguous_in_window_mmx: -#define write_r %eax - addl write_r, from_r - subl nbytes_r, from_r /* from += write - nbytes */ -#undef write_r - - cmpl nbytes_r, len_r - jbe .L_do_copy1_mmx /* if (nbytes >= len) */ - - subl nbytes_r, len_r /* len -= nbytes */ - rep movsb - movl out_r, from_r - subl dist_r, from_r /* from = out - dist */ - -.L_do_copy1_mmx: -#undef nbytes_r -#define in_r %esi - movl len_r, %ecx - rep movsb - - movl in(%esp), in_r /* move in back to %esi, toss from */ - movl lcode(%esp), %ebx /* move lcode back to %ebx, toss dist */ - jmp .L_while_test_mmx - -#undef hold_r -#undef bitslong_r - -#endif /* USE_MMX || RUN_TIME_MMX */ - - -/*** USE_MMX, NO_MMX, and RUNTIME_MMX from here on ***/ - -.L_invalid_distance_code: - /* else { - * strm->msg = "invalid distance code"; - * state->mode = BAD; - * } - */ - movl $.L_invalid_distance_code_msg, %ecx - movl $INFLATE_MODE_BAD, %edx - jmp .L_update_stream_state - -.L_test_for_end_of_block: - /* else if (op & 32) { - * state->mode = TYPE; - * break; - * } - */ - testb $32, %al - jz .L_invalid_literal_length_code /* if ((op & 32) == 0) */ - - movl $0, %ecx - movl $INFLATE_MODE_TYPE, %edx - jmp .L_update_stream_state - -.L_invalid_literal_length_code: - /* else { - * strm->msg = "invalid literal/length code"; - * state->mode = BAD; - * } - */ - movl $.L_invalid_literal_length_code_msg, %ecx - movl $INFLATE_MODE_BAD, %edx - jmp .L_update_stream_state - -.L_invalid_distance_too_far: - /* strm->msg = "invalid distance too far back"; - * state->mode = BAD; - */ - movl in(%esp), in_r /* from_r has in's reg, put in back */ - movl $.L_invalid_distance_too_far_msg, %ecx - movl $INFLATE_MODE_BAD, %edx - jmp .L_update_stream_state - -.L_update_stream_state: - /* set strm->msg = %ecx, strm->state->mode = %edx */ - movl strm_sp(%esp), %eax - testl %ecx, %ecx /* if (msg != NULL) */ - jz .L_skip_msg - movl %ecx, msg_strm(%eax) /* strm->msg = msg */ -.L_skip_msg: - movl state_strm(%eax), %eax /* state = strm->state */ - movl %edx, mode_state(%eax) /* state->mode = edx (BAD | TYPE) */ - jmp .L_break_loop - -.align 32,0x90 -.L_break_loop: - -/* - * Regs: - * - * bits = %ebp when mmx, and in %ebx when non-mmx - * hold = %hold_mm when mmx, and in %ebp when non-mmx - * in = %esi - * out = %edi - */ - -#if defined( USE_MMX ) || defined( RUN_TIME_MMX ) - -#if defined( RUN_TIME_MMX ) - - cmpl $DO_USE_MMX, inflate_fast_use_mmx - jne .L_update_next_in - -#endif /* RUN_TIME_MMX */ - - movl %ebp, %ebx - -.L_update_next_in: - -#endif - -#define strm_r %eax -#define state_r %edx - - /* len = bits >> 3; - * in -= len; - * bits -= len << 3; - * hold &= (1U << bits) - 1; - * state->hold = hold; - * state->bits = bits; - * strm->next_in = in; - * strm->next_out = out; - */ - movl strm_sp(%esp), strm_r - movl %ebx, %ecx - movl state_strm(strm_r), state_r - shrl $3, %ecx - subl %ecx, in_r - shll $3, %ecx - subl %ecx, %ebx - movl out_r, next_out_strm(strm_r) - movl %ebx, bits_state(state_r) - movl %ebx, %ecx - - leal buf(%esp), %ebx - cmpl %ebx, last(%esp) - jne .L_buf_not_used /* if buf != last */ - - subl %ebx, in_r /* in -= buf */ - movl next_in_strm(strm_r), %ebx - movl %ebx, last(%esp) /* last = strm->next_in */ - addl %ebx, in_r /* in += strm->next_in */ - movl avail_in_strm(strm_r), %ebx - subl $11, %ebx - addl %ebx, last(%esp) /* last = &strm->next_in[ avail_in - 11 ] */ - -.L_buf_not_used: - movl in_r, next_in_strm(strm_r) - - movl $1, %ebx - shll %cl, %ebx - decl %ebx - -#if defined( USE_MMX ) || defined( RUN_TIME_MMX ) - -#if defined( RUN_TIME_MMX ) - - cmpl $DO_USE_MMX, inflate_fast_use_mmx - jne .L_update_hold - -#endif /* RUN_TIME_MMX */ - - psrlq used_mm, hold_mm /* hold_mm >>= last bit length */ - movd hold_mm, %ebp - - emms - -.L_update_hold: - -#endif /* USE_MMX || RUN_TIME_MMX */ - - andl %ebx, %ebp - movl %ebp, hold_state(state_r) - -#define last_r %ebx - - /* strm->avail_in = in < last ? 11 + (last - in) : 11 - (in - last) */ - movl last(%esp), last_r - cmpl in_r, last_r - jbe .L_last_is_smaller /* if (in >= last) */ - - subl in_r, last_r /* last -= in */ - addl $11, last_r /* last += 11 */ - movl last_r, avail_in_strm(strm_r) - jmp .L_fixup_out -.L_last_is_smaller: - subl last_r, in_r /* in -= last */ - negl in_r /* in = -in */ - addl $11, in_r /* in += 11 */ - movl in_r, avail_in_strm(strm_r) - -#undef last_r -#define end_r %ebx - -.L_fixup_out: - /* strm->avail_out = out < end ? 257 + (end - out) : 257 - (out - end)*/ - movl end(%esp), end_r - cmpl out_r, end_r - jbe .L_end_is_smaller /* if (out >= end) */ - - subl out_r, end_r /* end -= out */ - addl $257, end_r /* end += 257 */ - movl end_r, avail_out_strm(strm_r) - jmp .L_done -.L_end_is_smaller: - subl end_r, out_r /* out -= end */ - negl out_r /* out = -out */ - addl $257, out_r /* out += 257 */ - movl out_r, avail_out_strm(strm_r) - -#undef end_r -#undef strm_r -#undef state_r - -.L_done: - addl $local_var_size, %esp - popf - popl %ebx - popl %ebp - popl %esi - popl %edi - ret - -#if defined( GAS_ELF ) -/* elf info */ -.type inflate_fast,@function -.size inflate_fast,.-inflate_fast -#endif diff --git a/io2d/src/3rd-party/zlib/contrib/iostream/test.cpp b/io2d/src/3rd-party/zlib/contrib/iostream/test.cpp deleted file mode 100644 index 7d265b3..0000000 --- a/io2d/src/3rd-party/zlib/contrib/iostream/test.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "zfstream.h" - -int main() { - - // Construct a stream object with this filebuffer. Anything sent - // to this stream will go to standard out. - gzofstream os( 1, ios::out ); - - // This text is getting compressed and sent to stdout. - // To prove this, run 'test | zcat'. - os << "Hello, Mommy" << endl; - - os << setcompressionlevel( Z_NO_COMPRESSION ); - os << "hello, hello, hi, ho!" << endl; - - setcompressionlevel( os, Z_DEFAULT_COMPRESSION ) - << "I'm compressing again" << endl; - - os.close(); - - return 0; - -} diff --git a/io2d/src/3rd-party/zlib/contrib/iostream/zfstream.cpp b/io2d/src/3rd-party/zlib/contrib/iostream/zfstream.cpp deleted file mode 100644 index d0cd85f..0000000 --- a/io2d/src/3rd-party/zlib/contrib/iostream/zfstream.cpp +++ /dev/null @@ -1,329 +0,0 @@ - -#include "zfstream.h" - -gzfilebuf::gzfilebuf() : - file(NULL), - mode(0), - own_file_descriptor(0) -{ } - -gzfilebuf::~gzfilebuf() { - - sync(); - if ( own_file_descriptor ) - close(); - -} - -gzfilebuf *gzfilebuf::open( const char *name, - int io_mode ) { - - if ( is_open() ) - return NULL; - - char char_mode[10]; - char *p = char_mode; - - if ( io_mode & ios::in ) { - mode = ios::in; - *p++ = 'r'; - } else if ( io_mode & ios::app ) { - mode = ios::app; - *p++ = 'a'; - } else { - mode = ios::out; - *p++ = 'w'; - } - - if ( io_mode & ios::binary ) { - mode |= ios::binary; - *p++ = 'b'; - } - - // Hard code the compression level - if ( io_mode & (ios::out|ios::app )) { - *p++ = '9'; - } - - // Put the end-of-string indicator - *p = '\0'; - - if ( (file = gzopen(name, char_mode)) == NULL ) - return NULL; - - own_file_descriptor = 1; - - return this; - -} - -gzfilebuf *gzfilebuf::attach( int file_descriptor, - int io_mode ) { - - if ( is_open() ) - return NULL; - - char char_mode[10]; - char *p = char_mode; - - if ( io_mode & ios::in ) { - mode = ios::in; - *p++ = 'r'; - } else if ( io_mode & ios::app ) { - mode = ios::app; - *p++ = 'a'; - } else { - mode = ios::out; - *p++ = 'w'; - } - - if ( io_mode & ios::binary ) { - mode |= ios::binary; - *p++ = 'b'; - } - - // Hard code the compression level - if ( io_mode & (ios::out|ios::app )) { - *p++ = '9'; - } - - // Put the end-of-string indicator - *p = '\0'; - - if ( (file = gzdopen(file_descriptor, char_mode)) == NULL ) - return NULL; - - own_file_descriptor = 0; - - return this; - -} - -gzfilebuf *gzfilebuf::close() { - - if ( is_open() ) { - - sync(); - gzclose( file ); - file = NULL; - - } - - return this; - -} - -int gzfilebuf::setcompressionlevel( int comp_level ) { - - return gzsetparams(file, comp_level, -2); - -} - -int gzfilebuf::setcompressionstrategy( int comp_strategy ) { - - return gzsetparams(file, -2, comp_strategy); - -} - - -streampos gzfilebuf::seekoff( streamoff off, ios::seek_dir dir, int which ) { - - return streampos(EOF); - -} - -int gzfilebuf::underflow() { - - // If the file hasn't been opened for reading, error. - if ( !is_open() || !(mode & ios::in) ) - return EOF; - - // if a buffer doesn't exists, allocate one. - if ( !base() ) { - - if ( (allocate()) == EOF ) - return EOF; - setp(0,0); - - } else { - - if ( in_avail() ) - return (unsigned char) *gptr(); - - if ( out_waiting() ) { - if ( flushbuf() == EOF ) - return EOF; - } - - } - - // Attempt to fill the buffer. - - int result = fillbuf(); - if ( result == EOF ) { - // disable get area - setg(0,0,0); - return EOF; - } - - return (unsigned char) *gptr(); - -} - -int gzfilebuf::overflow( int c ) { - - if ( !is_open() || !(mode & ios::out) ) - return EOF; - - if ( !base() ) { - if ( allocate() == EOF ) - return EOF; - setg(0,0,0); - } else { - if (in_avail()) { - return EOF; - } - if (out_waiting()) { - if (flushbuf() == EOF) - return EOF; - } - } - - int bl = blen(); - setp( base(), base() + bl); - - if ( c != EOF ) { - - *pptr() = c; - pbump(1); - - } - - return 0; - -} - -int gzfilebuf::sync() { - - if ( !is_open() ) - return EOF; - - if ( out_waiting() ) - return flushbuf(); - - return 0; - -} - -int gzfilebuf::flushbuf() { - - int n; - char *q; - - q = pbase(); - n = pptr() - q; - - if ( gzwrite( file, q, n) < n ) - return EOF; - - setp(0,0); - - return 0; - -} - -int gzfilebuf::fillbuf() { - - int required; - char *p; - - p = base(); - - required = blen(); - - int t = gzread( file, p, required ); - - if ( t <= 0) return EOF; - - setg( base(), base(), base()+t); - - return t; - -} - -gzfilestream_common::gzfilestream_common() : - ios( gzfilestream_common::rdbuf() ) -{ } - -gzfilestream_common::~gzfilestream_common() -{ } - -void gzfilestream_common::attach( int fd, int io_mode ) { - - if ( !buffer.attach( fd, io_mode) ) - clear( ios::failbit | ios::badbit ); - else - clear(); - -} - -void gzfilestream_common::open( const char *name, int io_mode ) { - - if ( !buffer.open( name, io_mode ) ) - clear( ios::failbit | ios::badbit ); - else - clear(); - -} - -void gzfilestream_common::close() { - - if ( !buffer.close() ) - clear( ios::failbit | ios::badbit ); - -} - -gzfilebuf *gzfilestream_common::rdbuf() -{ - return &buffer; -} - -gzifstream::gzifstream() : - ios( gzfilestream_common::rdbuf() ) -{ - clear( ios::badbit ); -} - -gzifstream::gzifstream( const char *name, int io_mode ) : - ios( gzfilestream_common::rdbuf() ) -{ - gzfilestream_common::open( name, io_mode ); -} - -gzifstream::gzifstream( int fd, int io_mode ) : - ios( gzfilestream_common::rdbuf() ) -{ - gzfilestream_common::attach( fd, io_mode ); -} - -gzifstream::~gzifstream() { } - -gzofstream::gzofstream() : - ios( gzfilestream_common::rdbuf() ) -{ - clear( ios::badbit ); -} - -gzofstream::gzofstream( const char *name, int io_mode ) : - ios( gzfilestream_common::rdbuf() ) -{ - gzfilestream_common::open( name, io_mode ); -} - -gzofstream::gzofstream( int fd, int io_mode ) : - ios( gzfilestream_common::rdbuf() ) -{ - gzfilestream_common::attach( fd, io_mode ); -} - -gzofstream::~gzofstream() { } diff --git a/io2d/src/3rd-party/zlib/contrib/iostream/zfstream.h b/io2d/src/3rd-party/zlib/contrib/iostream/zfstream.h deleted file mode 100644 index ed79098..0000000 --- a/io2d/src/3rd-party/zlib/contrib/iostream/zfstream.h +++ /dev/null @@ -1,128 +0,0 @@ - -#ifndef zfstream_h -#define zfstream_h - -#include -#include "zlib.h" - -class gzfilebuf : public streambuf { - -public: - - gzfilebuf( ); - virtual ~gzfilebuf(); - - gzfilebuf *open( const char *name, int io_mode ); - gzfilebuf *attach( int file_descriptor, int io_mode ); - gzfilebuf *close(); - - int setcompressionlevel( int comp_level ); - int setcompressionstrategy( int comp_strategy ); - - inline int is_open() const { return (file !=NULL); } - - virtual streampos seekoff( streamoff, ios::seek_dir, int ); - - virtual int sync(); - -protected: - - virtual int underflow(); - virtual int overflow( int = EOF ); - -private: - - gzFile file; - short mode; - short own_file_descriptor; - - int flushbuf(); - int fillbuf(); - -}; - -class gzfilestream_common : virtual public ios { - - friend class gzifstream; - friend class gzofstream; - friend gzofstream &setcompressionlevel( gzofstream &, int ); - friend gzofstream &setcompressionstrategy( gzofstream &, int ); - -public: - virtual ~gzfilestream_common(); - - void attach( int fd, int io_mode ); - void open( const char *name, int io_mode ); - void close(); - -protected: - gzfilestream_common(); - -private: - gzfilebuf *rdbuf(); - - gzfilebuf buffer; - -}; - -class gzifstream : public gzfilestream_common, public istream { - -public: - - gzifstream(); - gzifstream( const char *name, int io_mode = ios::in ); - gzifstream( int fd, int io_mode = ios::in ); - - virtual ~gzifstream(); - -}; - -class gzofstream : public gzfilestream_common, public ostream { - -public: - - gzofstream(); - gzofstream( const char *name, int io_mode = ios::out ); - gzofstream( int fd, int io_mode = ios::out ); - - virtual ~gzofstream(); - -}; - -template class gzomanip { - friend gzofstream &operator<<(gzofstream &, const gzomanip &); -public: - gzomanip(gzofstream &(*f)(gzofstream &, T), T v) : func(f), val(v) { } -private: - gzofstream &(*func)(gzofstream &, T); - T val; -}; - -template gzofstream &operator<<(gzofstream &s, const gzomanip &m) -{ - return (*m.func)(s, m.val); -} - -inline gzofstream &setcompressionlevel( gzofstream &s, int l ) -{ - (s.rdbuf())->setcompressionlevel(l); - return s; -} - -inline gzofstream &setcompressionstrategy( gzofstream &s, int l ) -{ - (s.rdbuf())->setcompressionstrategy(l); - return s; -} - -inline gzomanip setcompressionlevel(int l) -{ - return gzomanip(&setcompressionlevel,l); -} - -inline gzomanip setcompressionstrategy(int l) -{ - return gzomanip(&setcompressionstrategy,l); -} - -#endif diff --git a/io2d/src/3rd-party/zlib/contrib/iostream2/zstream.h b/io2d/src/3rd-party/zlib/contrib/iostream2/zstream.h deleted file mode 100644 index 43d2332..0000000 --- a/io2d/src/3rd-party/zlib/contrib/iostream2/zstream.h +++ /dev/null @@ -1,307 +0,0 @@ -/* - * - * Copyright (c) 1997 - * Christian Michelsen Research AS - * Advanced Computing - * Fantoftvegen 38, 5036 BERGEN, Norway - * http://www.cmr.no - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Christian Michelsen Research AS makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#ifndef ZSTREAM__H -#define ZSTREAM__H - -/* - * zstream.h - C++ interface to the 'zlib' general purpose compression library - * $Id: zstream.h 1.1 1997-06-25 12:00:56+02 tyge Exp tyge $ - */ - -#include -#include -#include -#include "zlib.h" - -#if defined(_WIN32) -# include -# include -# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) -#else -# define SET_BINARY_MODE(file) -#endif - -class zstringlen { -public: - zstringlen(class izstream&); - zstringlen(class ozstream&, const char*); - size_t value() const { return val.word; } -private: - struct Val { unsigned char byte; size_t word; } val; -}; - -// ----------------------------- izstream ----------------------------- - -class izstream -{ - public: - izstream() : m_fp(0) {} - izstream(FILE* fp) : m_fp(0) { open(fp); } - izstream(const char* name) : m_fp(0) { open(name); } - ~izstream() { close(); } - - /* Opens a gzip (.gz) file for reading. - * open() can be used to read a file which is not in gzip format; - * in this case read() will directly read from the file without - * decompression. errno can be checked to distinguish two error - * cases (if errno is zero, the zlib error is Z_MEM_ERROR). - */ - void open(const char* name) { - if (m_fp) close(); - m_fp = ::gzopen(name, "rb"); - } - - void open(FILE* fp) { - SET_BINARY_MODE(fp); - if (m_fp) close(); - m_fp = ::gzdopen(fileno(fp), "rb"); - } - - /* Flushes all pending input if necessary, closes the compressed file - * and deallocates all the (de)compression state. The return value is - * the zlib error number (see function error() below). - */ - int close() { - int r = ::gzclose(m_fp); - m_fp = 0; return r; - } - - /* Binary read the given number of bytes from the compressed file. - */ - int read(void* buf, size_t len) { - return ::gzread(m_fp, buf, len); - } - - /* Returns the error message for the last error which occurred on the - * given compressed file. errnum is set to zlib error number. If an - * error occurred in the file system and not in the compression library, - * errnum is set to Z_ERRNO and the application may consult errno - * to get the exact error code. - */ - const char* error(int* errnum) { - return ::gzerror(m_fp, errnum); - } - - gzFile fp() { return m_fp; } - - private: - gzFile m_fp; -}; - -/* - * Binary read the given (array of) object(s) from the compressed file. - * If the input file was not in gzip format, read() copies the objects number - * of bytes into the buffer. - * returns the number of uncompressed bytes actually read - * (0 for end of file, -1 for error). - */ -template -inline int read(izstream& zs, T* x, Items items) { - return ::gzread(zs.fp(), x, items*sizeof(T)); -} - -/* - * Binary input with the '>' operator. - */ -template -inline izstream& operator>(izstream& zs, T& x) { - ::gzread(zs.fp(), &x, sizeof(T)); - return zs; -} - - -inline zstringlen::zstringlen(izstream& zs) { - zs > val.byte; - if (val.byte == 255) zs > val.word; - else val.word = val.byte; -} - -/* - * Read length of string + the string with the '>' operator. - */ -inline izstream& operator>(izstream& zs, char* x) { - zstringlen len(zs); - ::gzread(zs.fp(), x, len.value()); - x[len.value()] = '\0'; - return zs; -} - -inline char* read_string(izstream& zs) { - zstringlen len(zs); - char* x = new char[len.value()+1]; - ::gzread(zs.fp(), x, len.value()); - x[len.value()] = '\0'; - return x; -} - -// ----------------------------- ozstream ----------------------------- - -class ozstream -{ - public: - ozstream() : m_fp(0), m_os(0) { - } - ozstream(FILE* fp, int level = Z_DEFAULT_COMPRESSION) - : m_fp(0), m_os(0) { - open(fp, level); - } - ozstream(const char* name, int level = Z_DEFAULT_COMPRESSION) - : m_fp(0), m_os(0) { - open(name, level); - } - ~ozstream() { - close(); - } - - /* Opens a gzip (.gz) file for writing. - * The compression level parameter should be in 0..9 - * errno can be checked to distinguish two error cases - * (if errno is zero, the zlib error is Z_MEM_ERROR). - */ - void open(const char* name, int level = Z_DEFAULT_COMPRESSION) { - char mode[4] = "wb\0"; - if (level != Z_DEFAULT_COMPRESSION) mode[2] = '0'+level; - if (m_fp) close(); - m_fp = ::gzopen(name, mode); - } - - /* open from a FILE pointer. - */ - void open(FILE* fp, int level = Z_DEFAULT_COMPRESSION) { - SET_BINARY_MODE(fp); - char mode[4] = "wb\0"; - if (level != Z_DEFAULT_COMPRESSION) mode[2] = '0'+level; - if (m_fp) close(); - m_fp = ::gzdopen(fileno(fp), mode); - } - - /* Flushes all pending output if necessary, closes the compressed file - * and deallocates all the (de)compression state. The return value is - * the zlib error number (see function error() below). - */ - int close() { - if (m_os) { - ::gzwrite(m_fp, m_os->str(), m_os->pcount()); - delete[] m_os->str(); delete m_os; m_os = 0; - } - int r = ::gzclose(m_fp); m_fp = 0; return r; - } - - /* Binary write the given number of bytes into the compressed file. - */ - int write(const void* buf, size_t len) { - return ::gzwrite(m_fp, (voidp) buf, len); - } - - /* Flushes all pending output into the compressed file. The parameter - * _flush is as in the deflate() function. The return value is the zlib - * error number (see function gzerror below). flush() returns Z_OK if - * the flush_ parameter is Z_FINISH and all output could be flushed. - * flush() should be called only when strictly necessary because it can - * degrade compression. - */ - int flush(int _flush) { - os_flush(); - return ::gzflush(m_fp, _flush); - } - - /* Returns the error message for the last error which occurred on the - * given compressed file. errnum is set to zlib error number. If an - * error occurred in the file system and not in the compression library, - * errnum is set to Z_ERRNO and the application may consult errno - * to get the exact error code. - */ - const char* error(int* errnum) { - return ::gzerror(m_fp, errnum); - } - - gzFile fp() { return m_fp; } - - ostream& os() { - if (m_os == 0) m_os = new ostrstream; - return *m_os; - } - - void os_flush() { - if (m_os && m_os->pcount()>0) { - ostrstream* oss = new ostrstream; - oss->fill(m_os->fill()); - oss->flags(m_os->flags()); - oss->precision(m_os->precision()); - oss->width(m_os->width()); - ::gzwrite(m_fp, m_os->str(), m_os->pcount()); - delete[] m_os->str(); delete m_os; m_os = oss; - } - } - - private: - gzFile m_fp; - ostrstream* m_os; -}; - -/* - * Binary write the given (array of) object(s) into the compressed file. - * returns the number of uncompressed bytes actually written - * (0 in case of error). - */ -template -inline int write(ozstream& zs, const T* x, Items items) { - return ::gzwrite(zs.fp(), (voidp) x, items*sizeof(T)); -} - -/* - * Binary output with the '<' operator. - */ -template -inline ozstream& operator<(ozstream& zs, const T& x) { - ::gzwrite(zs.fp(), (voidp) &x, sizeof(T)); - return zs; -} - -inline zstringlen::zstringlen(ozstream& zs, const char* x) { - val.byte = 255; val.word = ::strlen(x); - if (val.word < 255) zs < (val.byte = val.word); - else zs < val; -} - -/* - * Write length of string + the string with the '<' operator. - */ -inline ozstream& operator<(ozstream& zs, const char* x) { - zstringlen len(zs, x); - ::gzwrite(zs.fp(), (voidp) x, len.value()); - return zs; -} - -#ifdef _MSC_VER -inline ozstream& operator<(ozstream& zs, char* const& x) { - return zs < (const char*) x; -} -#endif - -/* - * Ascii write with the << operator; - */ -template -inline ostream& operator<<(ozstream& zs, const T& x) { - zs.os_flush(); - return zs.os() << x; -} - -#endif diff --git a/io2d/src/3rd-party/zlib/contrib/iostream2/zstream_test.cpp b/io2d/src/3rd-party/zlib/contrib/iostream2/zstream_test.cpp deleted file mode 100644 index 6273f62..0000000 --- a/io2d/src/3rd-party/zlib/contrib/iostream2/zstream_test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include "zstream.h" -#include -#include -#include - -void main() { - char h[256] = "Hello"; - char* g = "Goodbye"; - ozstream out("temp.gz"); - out < "This works well" < h < g; - out.close(); - - izstream in("temp.gz"); // read it back - char *x = read_string(in), *y = new char[256], z[256]; - in > y > z; - in.close(); - cout << x << endl << y << endl << z << endl; - - out.open("temp.gz"); // try ascii output; zcat temp.gz to see the results - out << setw(50) << setfill('#') << setprecision(20) << x << endl << y << endl << z << endl; - out << z << endl << y << endl << x << endl; - out << 1.1234567890123456789 << endl; - - delete[] x; delete[] y; -} diff --git a/io2d/src/3rd-party/zlib/contrib/iostream3/README b/io2d/src/3rd-party/zlib/contrib/iostream3/README deleted file mode 100644 index f7b319a..0000000 --- a/io2d/src/3rd-party/zlib/contrib/iostream3/README +++ /dev/null @@ -1,35 +0,0 @@ -These classes provide a C++ stream interface to the zlib library. It allows you -to do things like: - - gzofstream outf("blah.gz"); - outf << "These go into the gzip file " << 123 << endl; - -It does this by deriving a specialized stream buffer for gzipped files, which is -the way Stroustrup would have done it. :-> - -The gzifstream and gzofstream classes were originally written by Kevin Ruland -and made available in the zlib contrib/iostream directory. The older version still -compiles under gcc 2.xx, but not under gcc 3.xx, which sparked the development of -this version. - -The new classes are as standard-compliant as possible, closely following the -approach of the standard library's fstream classes. It compiles under gcc versions -3.2 and 3.3, but not under gcc 2.xx. This is mainly due to changes in the standard -library naming scheme. The new version of gzifstream/gzofstream/gzfilebuf differs -from the previous one in the following respects: -- added showmanyc -- added setbuf, with support for unbuffered output via setbuf(0,0) -- a few bug fixes of stream behavior -- gzipped output file opened with default compression level instead of maximum level -- setcompressionlevel()/strategy() members replaced by single setcompression() - -The code is provided "as is", with the permission to use, copy, modify, distribute -and sell it for any purpose without fee. - -Ludwig Schwardt - - -DSP Lab -Electrical & Electronic Engineering Department -University of Stellenbosch -South Africa diff --git a/io2d/src/3rd-party/zlib/contrib/iostream3/TODO b/io2d/src/3rd-party/zlib/contrib/iostream3/TODO deleted file mode 100644 index 7032f97..0000000 --- a/io2d/src/3rd-party/zlib/contrib/iostream3/TODO +++ /dev/null @@ -1,17 +0,0 @@ -Possible upgrades to gzfilebuf: - -- The ability to do putback (e.g. putbackfail) - -- The ability to seek (zlib supports this, but could be slow/tricky) - -- Simultaneous read/write access (does it make sense?) - -- Support for ios_base::ate open mode - -- Locale support? - -- Check public interface to see which calls give problems - (due to dependence on library internals) - -- Override operator<<(ostream&, gzfilebuf*) to allow direct copying - of stream buffer to stream ( i.e. os << is.rdbuf(); ) diff --git a/io2d/src/3rd-party/zlib/contrib/iostream3/test.cc b/io2d/src/3rd-party/zlib/contrib/iostream3/test.cc deleted file mode 100644 index 9423533..0000000 --- a/io2d/src/3rd-party/zlib/contrib/iostream3/test.cc +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Test program for gzifstream and gzofstream - * - * by Ludwig Schwardt - * original version by Kevin Ruland - */ - -#include "zfstream.h" -#include // for cout - -int main() { - - gzofstream outf; - gzifstream inf; - char buf[80]; - - outf.open("test1.txt.gz"); - outf << "The quick brown fox sidestepped the lazy canine\n" - << 1.3 << "\nPlan " << 9 << std::endl; - outf.close(); - std::cout << "Wrote the following message to 'test1.txt.gz' (check with zcat or zless):\n" - << "The quick brown fox sidestepped the lazy canine\n" - << 1.3 << "\nPlan " << 9 << std::endl; - - std::cout << "\nReading 'test1.txt.gz' (buffered) produces:\n"; - inf.open("test1.txt.gz"); - while (inf.getline(buf,80,'\n')) { - std::cout << buf << "\t(" << inf.rdbuf()->in_avail() << " chars left in buffer)\n"; - } - inf.close(); - - outf.rdbuf()->pubsetbuf(0,0); - outf.open("test2.txt.gz"); - outf << setcompression(Z_NO_COMPRESSION) - << "The quick brown fox sidestepped the lazy canine\n" - << 1.3 << "\nPlan " << 9 << std::endl; - outf.close(); - std::cout << "\nWrote the same message to 'test2.txt.gz' in uncompressed form"; - - std::cout << "\nReading 'test2.txt.gz' (unbuffered) produces:\n"; - inf.rdbuf()->pubsetbuf(0,0); - inf.open("test2.txt.gz"); - while (inf.getline(buf,80,'\n')) { - std::cout << buf << "\t(" << inf.rdbuf()->in_avail() << " chars left in buffer)\n"; - } - inf.close(); - - return 0; - -} diff --git a/io2d/src/3rd-party/zlib/contrib/iostream3/zfstream.cc b/io2d/src/3rd-party/zlib/contrib/iostream3/zfstream.cc deleted file mode 100644 index 94eb933..0000000 --- a/io2d/src/3rd-party/zlib/contrib/iostream3/zfstream.cc +++ /dev/null @@ -1,479 +0,0 @@ -/* - * A C++ I/O streams interface to the zlib gz* functions - * - * by Ludwig Schwardt - * original version by Kevin Ruland - * - * This version is standard-compliant and compatible with gcc 3.x. - */ - -#include "zfstream.h" -#include // for strcpy, strcat, strlen (mode strings) -#include // for BUFSIZ - -// Internal buffer sizes (default and "unbuffered" versions) -#define BIGBUFSIZE BUFSIZ -#define SMALLBUFSIZE 1 - -/*****************************************************************************/ - -// Default constructor -gzfilebuf::gzfilebuf() -: file(NULL), io_mode(std::ios_base::openmode(0)), own_fd(false), - buffer(NULL), buffer_size(BIGBUFSIZE), own_buffer(true) -{ - // No buffers to start with - this->disable_buffer(); -} - -// Destructor -gzfilebuf::~gzfilebuf() -{ - // Sync output buffer and close only if responsible for file - // (i.e. attached streams should be left open at this stage) - this->sync(); - if (own_fd) - this->close(); - // Make sure internal buffer is deallocated - this->disable_buffer(); -} - -// Set compression level and strategy -int -gzfilebuf::setcompression(int comp_level, - int comp_strategy) -{ - return gzsetparams(file, comp_level, comp_strategy); -} - -// Open gzipped file -gzfilebuf* -gzfilebuf::open(const char *name, - std::ios_base::openmode mode) -{ - // Fail if file already open - if (this->is_open()) - return NULL; - // Don't support simultaneous read/write access (yet) - if ((mode & std::ios_base::in) && (mode & std::ios_base::out)) - return NULL; - - // Build mode string for gzopen and check it [27.8.1.3.2] - char char_mode[6] = "\0\0\0\0\0"; - if (!this->open_mode(mode, char_mode)) - return NULL; - - // Attempt to open file - if ((file = gzopen(name, char_mode)) == NULL) - return NULL; - - // On success, allocate internal buffer and set flags - this->enable_buffer(); - io_mode = mode; - own_fd = true; - return this; -} - -// Attach to gzipped file -gzfilebuf* -gzfilebuf::attach(int fd, - std::ios_base::openmode mode) -{ - // Fail if file already open - if (this->is_open()) - return NULL; - // Don't support simultaneous read/write access (yet) - if ((mode & std::ios_base::in) && (mode & std::ios_base::out)) - return NULL; - - // Build mode string for gzdopen and check it [27.8.1.3.2] - char char_mode[6] = "\0\0\0\0\0"; - if (!this->open_mode(mode, char_mode)) - return NULL; - - // Attempt to attach to file - if ((file = gzdopen(fd, char_mode)) == NULL) - return NULL; - - // On success, allocate internal buffer and set flags - this->enable_buffer(); - io_mode = mode; - own_fd = false; - return this; -} - -// Close gzipped file -gzfilebuf* -gzfilebuf::close() -{ - // Fail immediately if no file is open - if (!this->is_open()) - return NULL; - // Assume success - gzfilebuf* retval = this; - // Attempt to sync and close gzipped file - if (this->sync() == -1) - retval = NULL; - if (gzclose(file) < 0) - retval = NULL; - // File is now gone anyway (postcondition [27.8.1.3.8]) - file = NULL; - own_fd = false; - // Destroy internal buffer if it exists - this->disable_buffer(); - return retval; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -// Convert int open mode to mode string -bool -gzfilebuf::open_mode(std::ios_base::openmode mode, - char* c_mode) const -{ - bool testb = mode & std::ios_base::binary; - bool testi = mode & std::ios_base::in; - bool testo = mode & std::ios_base::out; - bool testt = mode & std::ios_base::trunc; - bool testa = mode & std::ios_base::app; - - // Check for valid flag combinations - see [27.8.1.3.2] (Table 92) - // Original zfstream hardcoded the compression level to maximum here... - // Double the time for less than 1% size improvement seems - // excessive though - keeping it at the default level - // To change back, just append "9" to the next three mode strings - if (!testi && testo && !testt && !testa) - strcpy(c_mode, "w"); - if (!testi && testo && !testt && testa) - strcpy(c_mode, "a"); - if (!testi && testo && testt && !testa) - strcpy(c_mode, "w"); - if (testi && !testo && !testt && !testa) - strcpy(c_mode, "r"); - // No read/write mode yet -// if (testi && testo && !testt && !testa) -// strcpy(c_mode, "r+"); -// if (testi && testo && testt && !testa) -// strcpy(c_mode, "w+"); - - // Mode string should be empty for invalid combination of flags - if (strlen(c_mode) == 0) - return false; - if (testb) - strcat(c_mode, "b"); - return true; -} - -// Determine number of characters in internal get buffer -std::streamsize -gzfilebuf::showmanyc() -{ - // Calls to underflow will fail if file not opened for reading - if (!this->is_open() || !(io_mode & std::ios_base::in)) - return -1; - // Make sure get area is in use - if (this->gptr() && (this->gptr() < this->egptr())) - return std::streamsize(this->egptr() - this->gptr()); - else - return 0; -} - -// Fill get area from gzipped file -gzfilebuf::int_type -gzfilebuf::underflow() -{ - // If something is left in the get area by chance, return it - // (this shouldn't normally happen, as underflow is only supposed - // to be called when gptr >= egptr, but it serves as error check) - if (this->gptr() && (this->gptr() < this->egptr())) - return traits_type::to_int_type(*(this->gptr())); - - // If the file hasn't been opened for reading, produce error - if (!this->is_open() || !(io_mode & std::ios_base::in)) - return traits_type::eof(); - - // Attempt to fill internal buffer from gzipped file - // (buffer must be guaranteed to exist...) - int bytes_read = gzread(file, buffer, buffer_size); - // Indicates error or EOF - if (bytes_read <= 0) - { - // Reset get area - this->setg(buffer, buffer, buffer); - return traits_type::eof(); - } - // Make all bytes read from file available as get area - this->setg(buffer, buffer, buffer + bytes_read); - - // Return next character in get area - return traits_type::to_int_type(*(this->gptr())); -} - -// Write put area to gzipped file -gzfilebuf::int_type -gzfilebuf::overflow(int_type c) -{ - // Determine whether put area is in use - if (this->pbase()) - { - // Double-check pointer range - if (this->pptr() > this->epptr() || this->pptr() < this->pbase()) - return traits_type::eof(); - // Add extra character to buffer if not EOF - if (!traits_type::eq_int_type(c, traits_type::eof())) - { - *(this->pptr()) = traits_type::to_char_type(c); - this->pbump(1); - } - // Number of characters to write to file - int bytes_to_write = this->pptr() - this->pbase(); - // Overflow doesn't fail if nothing is to be written - if (bytes_to_write > 0) - { - // If the file hasn't been opened for writing, produce error - if (!this->is_open() || !(io_mode & std::ios_base::out)) - return traits_type::eof(); - // If gzipped file won't accept all bytes written to it, fail - if (gzwrite(file, this->pbase(), bytes_to_write) != bytes_to_write) - return traits_type::eof(); - // Reset next pointer to point to pbase on success - this->pbump(-bytes_to_write); - } - } - // Write extra character to file if not EOF - else if (!traits_type::eq_int_type(c, traits_type::eof())) - { - // If the file hasn't been opened for writing, produce error - if (!this->is_open() || !(io_mode & std::ios_base::out)) - return traits_type::eof(); - // Impromptu char buffer (allows "unbuffered" output) - char_type last_char = traits_type::to_char_type(c); - // If gzipped file won't accept this character, fail - if (gzwrite(file, &last_char, 1) != 1) - return traits_type::eof(); - } - - // If you got here, you have succeeded (even if c was EOF) - // The return value should therefore be non-EOF - if (traits_type::eq_int_type(c, traits_type::eof())) - return traits_type::not_eof(c); - else - return c; -} - -// Assign new buffer -std::streambuf* -gzfilebuf::setbuf(char_type* p, - std::streamsize n) -{ - // First make sure stuff is sync'ed, for safety - if (this->sync() == -1) - return NULL; - // If buffering is turned off on purpose via setbuf(0,0), still allocate one... - // "Unbuffered" only really refers to put [27.8.1.4.10], while get needs at - // least a buffer of size 1 (very inefficient though, therefore make it bigger?) - // This follows from [27.5.2.4.3]/12 (gptr needs to point at something, it seems) - if (!p || !n) - { - // Replace existing buffer (if any) with small internal buffer - this->disable_buffer(); - buffer = NULL; - buffer_size = 0; - own_buffer = true; - this->enable_buffer(); - } - else - { - // Replace existing buffer (if any) with external buffer - this->disable_buffer(); - buffer = p; - buffer_size = n; - own_buffer = false; - this->enable_buffer(); - } - return this; -} - -// Write put area to gzipped file (i.e. ensures that put area is empty) -int -gzfilebuf::sync() -{ - return traits_type::eq_int_type(this->overflow(), traits_type::eof()) ? -1 : 0; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -// Allocate internal buffer -void -gzfilebuf::enable_buffer() -{ - // If internal buffer required, allocate one - if (own_buffer && !buffer) - { - // Check for buffered vs. "unbuffered" - if (buffer_size > 0) - { - // Allocate internal buffer - buffer = new char_type[buffer_size]; - // Get area starts empty and will be expanded by underflow as need arises - this->setg(buffer, buffer, buffer); - // Setup entire internal buffer as put area. - // The one-past-end pointer actually points to the last element of the buffer, - // so that overflow(c) can safely add the extra character c to the sequence. - // These pointers remain in place for the duration of the buffer - this->setp(buffer, buffer + buffer_size - 1); - } - else - { - // Even in "unbuffered" case, (small?) get buffer is still required - buffer_size = SMALLBUFSIZE; - buffer = new char_type[buffer_size]; - this->setg(buffer, buffer, buffer); - // "Unbuffered" means no put buffer - this->setp(0, 0); - } - } - else - { - // If buffer already allocated, reset buffer pointers just to make sure no - // stale chars are lying around - this->setg(buffer, buffer, buffer); - this->setp(buffer, buffer + buffer_size - 1); - } -} - -// Destroy internal buffer -void -gzfilebuf::disable_buffer() -{ - // If internal buffer exists, deallocate it - if (own_buffer && buffer) - { - // Preserve unbuffered status by zeroing size - if (!this->pbase()) - buffer_size = 0; - delete[] buffer; - buffer = NULL; - this->setg(0, 0, 0); - this->setp(0, 0); - } - else - { - // Reset buffer pointers to initial state if external buffer exists - this->setg(buffer, buffer, buffer); - if (buffer) - this->setp(buffer, buffer + buffer_size - 1); - else - this->setp(0, 0); - } -} - -/*****************************************************************************/ - -// Default constructor initializes stream buffer -gzifstream::gzifstream() -: std::istream(NULL), sb() -{ this->init(&sb); } - -// Initialize stream buffer and open file -gzifstream::gzifstream(const char* name, - std::ios_base::openmode mode) -: std::istream(NULL), sb() -{ - this->init(&sb); - this->open(name, mode); -} - -// Initialize stream buffer and attach to file -gzifstream::gzifstream(int fd, - std::ios_base::openmode mode) -: std::istream(NULL), sb() -{ - this->init(&sb); - this->attach(fd, mode); -} - -// Open file and go into fail() state if unsuccessful -void -gzifstream::open(const char* name, - std::ios_base::openmode mode) -{ - if (!sb.open(name, mode | std::ios_base::in)) - this->setstate(std::ios_base::failbit); - else - this->clear(); -} - -// Attach to file and go into fail() state if unsuccessful -void -gzifstream::attach(int fd, - std::ios_base::openmode mode) -{ - if (!sb.attach(fd, mode | std::ios_base::in)) - this->setstate(std::ios_base::failbit); - else - this->clear(); -} - -// Close file -void -gzifstream::close() -{ - if (!sb.close()) - this->setstate(std::ios_base::failbit); -} - -/*****************************************************************************/ - -// Default constructor initializes stream buffer -gzofstream::gzofstream() -: std::ostream(NULL), sb() -{ this->init(&sb); } - -// Initialize stream buffer and open file -gzofstream::gzofstream(const char* name, - std::ios_base::openmode mode) -: std::ostream(NULL), sb() -{ - this->init(&sb); - this->open(name, mode); -} - -// Initialize stream buffer and attach to file -gzofstream::gzofstream(int fd, - std::ios_base::openmode mode) -: std::ostream(NULL), sb() -{ - this->init(&sb); - this->attach(fd, mode); -} - -// Open file and go into fail() state if unsuccessful -void -gzofstream::open(const char* name, - std::ios_base::openmode mode) -{ - if (!sb.open(name, mode | std::ios_base::out)) - this->setstate(std::ios_base::failbit); - else - this->clear(); -} - -// Attach to file and go into fail() state if unsuccessful -void -gzofstream::attach(int fd, - std::ios_base::openmode mode) -{ - if (!sb.attach(fd, mode | std::ios_base::out)) - this->setstate(std::ios_base::failbit); - else - this->clear(); -} - -// Close file -void -gzofstream::close() -{ - if (!sb.close()) - this->setstate(std::ios_base::failbit); -} diff --git a/io2d/src/3rd-party/zlib/contrib/iostream3/zfstream.h b/io2d/src/3rd-party/zlib/contrib/iostream3/zfstream.h deleted file mode 100644 index 8574479..0000000 --- a/io2d/src/3rd-party/zlib/contrib/iostream3/zfstream.h +++ /dev/null @@ -1,466 +0,0 @@ -/* - * A C++ I/O streams interface to the zlib gz* functions - * - * by Ludwig Schwardt - * original version by Kevin Ruland - * - * This version is standard-compliant and compatible with gcc 3.x. - */ - -#ifndef ZFSTREAM_H -#define ZFSTREAM_H - -#include // not iostream, since we don't need cin/cout -#include -#include "zlib.h" - -/*****************************************************************************/ - -/** - * @brief Gzipped file stream buffer class. - * - * This class implements basic_filebuf for gzipped files. It doesn't yet support - * seeking (allowed by zlib but slow/limited), putback and read/write access - * (tricky). Otherwise, it attempts to be a drop-in replacement for the standard - * file streambuf. -*/ -class gzfilebuf : public std::streambuf -{ -public: - // Default constructor. - gzfilebuf(); - - // Destructor. - virtual - ~gzfilebuf(); - - /** - * @brief Set compression level and strategy on the fly. - * @param comp_level Compression level (see zlib.h for allowed values) - * @param comp_strategy Compression strategy (see zlib.h for allowed values) - * @return Z_OK on success, Z_STREAM_ERROR otherwise. - * - * Unfortunately, these parameters cannot be modified separately, as the - * previous zfstream version assumed. Since the strategy is seldom changed, - * it can default and setcompression(level) then becomes like the old - * setcompressionlevel(level). - */ - int - setcompression(int comp_level, - int comp_strategy = Z_DEFAULT_STRATEGY); - - /** - * @brief Check if file is open. - * @return True if file is open. - */ - bool - is_open() const { return (file != NULL); } - - /** - * @brief Open gzipped file. - * @param name File name. - * @param mode Open mode flags. - * @return @c this on success, NULL on failure. - */ - gzfilebuf* - open(const char* name, - std::ios_base::openmode mode); - - /** - * @brief Attach to already open gzipped file. - * @param fd File descriptor. - * @param mode Open mode flags. - * @return @c this on success, NULL on failure. - */ - gzfilebuf* - attach(int fd, - std::ios_base::openmode mode); - - /** - * @brief Close gzipped file. - * @return @c this on success, NULL on failure. - */ - gzfilebuf* - close(); - -protected: - /** - * @brief Convert ios open mode int to mode string used by zlib. - * @return True if valid mode flag combination. - */ - bool - open_mode(std::ios_base::openmode mode, - char* c_mode) const; - - /** - * @brief Number of characters available in stream buffer. - * @return Number of characters. - * - * This indicates number of characters in get area of stream buffer. - * These characters can be read without accessing the gzipped file. - */ - virtual std::streamsize - showmanyc(); - - /** - * @brief Fill get area from gzipped file. - * @return First character in get area on success, EOF on error. - * - * This actually reads characters from gzipped file to stream - * buffer. Always buffered. - */ - virtual int_type - underflow(); - - /** - * @brief Write put area to gzipped file. - * @param c Extra character to add to buffer contents. - * @return Non-EOF on success, EOF on error. - * - * This actually writes characters in stream buffer to - * gzipped file. With unbuffered output this is done one - * character at a time. - */ - virtual int_type - overflow(int_type c = traits_type::eof()); - - /** - * @brief Installs external stream buffer. - * @param p Pointer to char buffer. - * @param n Size of external buffer. - * @return @c this on success, NULL on failure. - * - * Call setbuf(0,0) to enable unbuffered output. - */ - virtual std::streambuf* - setbuf(char_type* p, - std::streamsize n); - - /** - * @brief Flush stream buffer to file. - * @return 0 on success, -1 on error. - * - * This calls underflow(EOF) to do the job. - */ - virtual int - sync(); - -// -// Some future enhancements -// -// virtual int_type uflow(); -// virtual int_type pbackfail(int_type c = traits_type::eof()); -// virtual pos_type -// seekoff(off_type off, -// std::ios_base::seekdir way, -// std::ios_base::openmode mode = std::ios_base::in|std::ios_base::out); -// virtual pos_type -// seekpos(pos_type sp, -// std::ios_base::openmode mode = std::ios_base::in|std::ios_base::out); - -private: - /** - * @brief Allocate internal buffer. - * - * This function is safe to call multiple times. It will ensure - * that a proper internal buffer exists if it is required. If the - * buffer already exists or is external, the buffer pointers will be - * reset to their original state. - */ - void - enable_buffer(); - - /** - * @brief Destroy internal buffer. - * - * This function is safe to call multiple times. It will ensure - * that the internal buffer is deallocated if it exists. In any - * case, it will also reset the buffer pointers. - */ - void - disable_buffer(); - - /** - * Underlying file pointer. - */ - gzFile file; - - /** - * Mode in which file was opened. - */ - std::ios_base::openmode io_mode; - - /** - * @brief True if this object owns file descriptor. - * - * This makes the class responsible for closing the file - * upon destruction. - */ - bool own_fd; - - /** - * @brief Stream buffer. - * - * For simplicity this remains allocated on the free store for the - * entire life span of the gzfilebuf object, unless replaced by setbuf. - */ - char_type* buffer; - - /** - * @brief Stream buffer size. - * - * Defaults to system default buffer size (typically 8192 bytes). - * Modified by setbuf. - */ - std::streamsize buffer_size; - - /** - * @brief True if this object owns stream buffer. - * - * This makes the class responsible for deleting the buffer - * upon destruction. - */ - bool own_buffer; -}; - -/*****************************************************************************/ - -/** - * @brief Gzipped file input stream class. - * - * This class implements ifstream for gzipped files. Seeking and putback - * is not supported yet. -*/ -class gzifstream : public std::istream -{ -public: - // Default constructor - gzifstream(); - - /** - * @brief Construct stream on gzipped file to be opened. - * @param name File name. - * @param mode Open mode flags (forced to contain ios::in). - */ - explicit - gzifstream(const char* name, - std::ios_base::openmode mode = std::ios_base::in); - - /** - * @brief Construct stream on already open gzipped file. - * @param fd File descriptor. - * @param mode Open mode flags (forced to contain ios::in). - */ - explicit - gzifstream(int fd, - std::ios_base::openmode mode = std::ios_base::in); - - /** - * Obtain underlying stream buffer. - */ - gzfilebuf* - rdbuf() const - { return const_cast(&sb); } - - /** - * @brief Check if file is open. - * @return True if file is open. - */ - bool - is_open() { return sb.is_open(); } - - /** - * @brief Open gzipped file. - * @param name File name. - * @param mode Open mode flags (forced to contain ios::in). - * - * Stream will be in state good() if file opens successfully; - * otherwise in state fail(). This differs from the behavior of - * ifstream, which never sets the state to good() and therefore - * won't allow you to reuse the stream for a second file unless - * you manually clear() the state. The choice is a matter of - * convenience. - */ - void - open(const char* name, - std::ios_base::openmode mode = std::ios_base::in); - - /** - * @brief Attach to already open gzipped file. - * @param fd File descriptor. - * @param mode Open mode flags (forced to contain ios::in). - * - * Stream will be in state good() if attach succeeded; otherwise - * in state fail(). - */ - void - attach(int fd, - std::ios_base::openmode mode = std::ios_base::in); - - /** - * @brief Close gzipped file. - * - * Stream will be in state fail() if close failed. - */ - void - close(); - -private: - /** - * Underlying stream buffer. - */ - gzfilebuf sb; -}; - -/*****************************************************************************/ - -/** - * @brief Gzipped file output stream class. - * - * This class implements ofstream for gzipped files. Seeking and putback - * is not supported yet. -*/ -class gzofstream : public std::ostream -{ -public: - // Default constructor - gzofstream(); - - /** - * @brief Construct stream on gzipped file to be opened. - * @param name File name. - * @param mode Open mode flags (forced to contain ios::out). - */ - explicit - gzofstream(const char* name, - std::ios_base::openmode mode = std::ios_base::out); - - /** - * @brief Construct stream on already open gzipped file. - * @param fd File descriptor. - * @param mode Open mode flags (forced to contain ios::out). - */ - explicit - gzofstream(int fd, - std::ios_base::openmode mode = std::ios_base::out); - - /** - * Obtain underlying stream buffer. - */ - gzfilebuf* - rdbuf() const - { return const_cast(&sb); } - - /** - * @brief Check if file is open. - * @return True if file is open. - */ - bool - is_open() { return sb.is_open(); } - - /** - * @brief Open gzipped file. - * @param name File name. - * @param mode Open mode flags (forced to contain ios::out). - * - * Stream will be in state good() if file opens successfully; - * otherwise in state fail(). This differs from the behavior of - * ofstream, which never sets the state to good() and therefore - * won't allow you to reuse the stream for a second file unless - * you manually clear() the state. The choice is a matter of - * convenience. - */ - void - open(const char* name, - std::ios_base::openmode mode = std::ios_base::out); - - /** - * @brief Attach to already open gzipped file. - * @param fd File descriptor. - * @param mode Open mode flags (forced to contain ios::out). - * - * Stream will be in state good() if attach succeeded; otherwise - * in state fail(). - */ - void - attach(int fd, - std::ios_base::openmode mode = std::ios_base::out); - - /** - * @brief Close gzipped file. - * - * Stream will be in state fail() if close failed. - */ - void - close(); - -private: - /** - * Underlying stream buffer. - */ - gzfilebuf sb; -}; - -/*****************************************************************************/ - -/** - * @brief Gzipped file output stream manipulator class. - * - * This class defines a two-argument manipulator for gzofstream. It is used - * as base for the setcompression(int,int) manipulator. -*/ -template - class gzomanip2 - { - public: - // Allows insertor to peek at internals - template - friend gzofstream& - operator<<(gzofstream&, - const gzomanip2&); - - // Constructor - gzomanip2(gzofstream& (*f)(gzofstream&, T1, T2), - T1 v1, - T2 v2); - private: - // Underlying manipulator function - gzofstream& - (*func)(gzofstream&, T1, T2); - - // Arguments for manipulator function - T1 val1; - T2 val2; - }; - -/*****************************************************************************/ - -// Manipulator function thunks through to stream buffer -inline gzofstream& -setcompression(gzofstream &gzs, int l, int s = Z_DEFAULT_STRATEGY) -{ - (gzs.rdbuf())->setcompression(l, s); - return gzs; -} - -// Manipulator constructor stores arguments -template - inline - gzomanip2::gzomanip2(gzofstream &(*f)(gzofstream &, T1, T2), - T1 v1, - T2 v2) - : func(f), val1(v1), val2(v2) - { } - -// Insertor applies underlying manipulator function to stream -template - inline gzofstream& - operator<<(gzofstream& s, const gzomanip2& m) - { return (*m.func)(s, m.val1, m.val2); } - -// Insert this onto stream to simplify setting of compression level -inline gzomanip2 -setcompression(int l, int s = Z_DEFAULT_STRATEGY) -{ return gzomanip2(&setcompression, l, s); } - -#endif // ZFSTREAM_H diff --git a/io2d/src/3rd-party/zlib/contrib/masmx64/bld_ml64.bat b/io2d/src/3rd-party/zlib/contrib/masmx64/bld_ml64.bat deleted file mode 100644 index f74bcef..0000000 --- a/io2d/src/3rd-party/zlib/contrib/masmx64/bld_ml64.bat +++ /dev/null @@ -1,2 +0,0 @@ -ml64.exe /Flinffasx64 /c /Zi inffasx64.asm -ml64.exe /Flgvmat64 /c /Zi gvmat64.asm diff --git a/io2d/src/3rd-party/zlib/contrib/masmx64/gvmat64.asm b/io2d/src/3rd-party/zlib/contrib/masmx64/gvmat64.asm deleted file mode 100644 index c1817f1..0000000 --- a/io2d/src/3rd-party/zlib/contrib/masmx64/gvmat64.asm +++ /dev/null @@ -1,553 +0,0 @@ -;uInt longest_match_x64( -; deflate_state *s, -; IPos cur_match); /* current match */ - -; gvmat64.asm -- Asm portion of the optimized longest_match for 32 bits x86_64 -; (AMD64 on Athlon 64, Opteron, Phenom -; and Intel EM64T on Pentium 4 with EM64T, Pentium D, Core 2 Duo, Core I5/I7) -; Copyright (C) 1995-2010 Jean-loup Gailly, Brian Raiter and Gilles Vollant. -; -; File written by Gilles Vollant, by converting to assembly the longest_match -; from Jean-loup Gailly in deflate.c of zLib and infoZip zip. -; -; and by taking inspiration on asm686 with masm, optimised assembly code -; from Brian Raiter, written 1998 -; -; This software is provided 'as-is', without any express or implied -; warranty. In no event will the authors be held liable for any damages -; arising from the use of this software. -; -; Permission is granted to anyone to use this software for any purpose, -; including commercial applications, and to alter it and redistribute it -; freely, subject to the following restrictions: -; -; 1. The origin of this software must not be misrepresented; you must not -; claim that you wrote the original software. If you use this software -; in a product, an acknowledgment in the product documentation would be -; appreciated but is not required. -; 2. Altered source versions must be plainly marked as such, and must not be -; misrepresented as being the original software -; 3. This notice may not be removed or altered from any source distribution. -; -; -; -; http://www.zlib.net -; http://www.winimage.com/zLibDll -; http://www.muppetlabs.com/~breadbox/software/assembly.html -; -; to compile this file for infozip Zip, I use option: -; ml64.exe /Flgvmat64 /c /Zi /DINFOZIP gvmat64.asm -; -; to compile this file for zLib, I use option: -; ml64.exe /Flgvmat64 /c /Zi gvmat64.asm -; Be carrefull to adapt zlib1222add below to your version of zLib -; (if you use a version of zLib before 1.0.4 or after 1.2.2.2, change -; value of zlib1222add later) -; -; This file compile with Microsoft Macro Assembler (x64) for AMD64 -; -; ml64.exe is given with Visual Studio 2005/2008/2010 and Windows WDK -; -; (you can get Windows WDK with ml64 for AMD64 from -; http://www.microsoft.com/whdc/Devtools/wdk/default.mspx for low price) -; - - -;uInt longest_match(s, cur_match) -; deflate_state *s; -; IPos cur_match; /* current match */ -.code -longest_match PROC - - -;LocalVarsSize equ 88 - LocalVarsSize equ 72 - -; register used : rax,rbx,rcx,rdx,rsi,rdi,r8,r9,r10,r11,r12 -; free register : r14,r15 -; register can be saved : rsp - - chainlenwmask equ rsp + 8 - LocalVarsSize ; high word: current chain len - ; low word: s->wmask -;window equ rsp + xx - LocalVarsSize ; local copy of s->window ; stored in r10 -;windowbestlen equ rsp + xx - LocalVarsSize ; s->window + bestlen , use r10+r11 -;scanstart equ rsp + xx - LocalVarsSize ; first two bytes of string ; stored in r12w -;scanend equ rsp + xx - LocalVarsSize ; last two bytes of string use ebx -;scanalign equ rsp + xx - LocalVarsSize ; dword-misalignment of string r13 -;bestlen equ rsp + xx - LocalVarsSize ; size of best match so far -> r11d -;scan equ rsp + xx - LocalVarsSize ; ptr to string wanting match -> r9 -IFDEF INFOZIP -ELSE - nicematch equ (rsp + 16 - LocalVarsSize) ; a good enough match size -ENDIF - -save_rdi equ rsp + 24 - LocalVarsSize -save_rsi equ rsp + 32 - LocalVarsSize -save_rbx equ rsp + 40 - LocalVarsSize -save_rbp equ rsp + 48 - LocalVarsSize -save_r12 equ rsp + 56 - LocalVarsSize -save_r13 equ rsp + 64 - LocalVarsSize -;save_r14 equ rsp + 72 - LocalVarsSize -;save_r15 equ rsp + 80 - LocalVarsSize - - -; summary of register usage -; scanend ebx -; scanendw bx -; chainlenwmask edx -; curmatch rsi -; curmatchd esi -; windowbestlen r8 -; scanalign r9 -; scanalignd r9d -; window r10 -; bestlen r11 -; bestlend r11d -; scanstart r12d -; scanstartw r12w -; scan r13 -; nicematch r14d -; limit r15 -; limitd r15d -; prev rcx - -; all the +4 offsets are due to the addition of pending_buf_size (in zlib -; in the deflate_state structure since the asm code was first written -; (if you compile with zlib 1.0.4 or older, remove the +4). -; Note : these value are good with a 8 bytes boundary pack structure - - - MAX_MATCH equ 258 - MIN_MATCH equ 3 - MIN_LOOKAHEAD equ (MAX_MATCH+MIN_MATCH+1) - - -;;; Offsets for fields in the deflate_state structure. These numbers -;;; are calculated from the definition of deflate_state, with the -;;; assumption that the compiler will dword-align the fields. (Thus, -;;; changing the definition of deflate_state could easily cause this -;;; program to crash horribly, without so much as a warning at -;;; compile time. Sigh.) - -; all the +zlib1222add offsets are due to the addition of fields -; in zlib in the deflate_state structure since the asm code was first written -; (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)"). -; (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0"). -; if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8"). - - -IFDEF INFOZIP - -_DATA SEGMENT -COMM window_size:DWORD -; WMask ; 7fff -COMM window:BYTE:010040H -COMM prev:WORD:08000H -; MatchLen : unused -; PrevMatch : unused -COMM strstart:DWORD -COMM match_start:DWORD -; Lookahead : ignore -COMM prev_length:DWORD ; PrevLen -COMM max_chain_length:DWORD -COMM good_match:DWORD -COMM nice_match:DWORD -prev_ad equ OFFSET prev -window_ad equ OFFSET window -nicematch equ nice_match -_DATA ENDS -WMask equ 07fffh - -ELSE - - IFNDEF zlib1222add - zlib1222add equ 8 - ENDIF -dsWSize equ 56+zlib1222add+(zlib1222add/2) -dsWMask equ 64+zlib1222add+(zlib1222add/2) -dsWindow equ 72+zlib1222add -dsPrev equ 88+zlib1222add -dsMatchLen equ 128+zlib1222add -dsPrevMatch equ 132+zlib1222add -dsStrStart equ 140+zlib1222add -dsMatchStart equ 144+zlib1222add -dsLookahead equ 148+zlib1222add -dsPrevLen equ 152+zlib1222add -dsMaxChainLen equ 156+zlib1222add -dsGoodMatch equ 172+zlib1222add -dsNiceMatch equ 176+zlib1222add - -window_size equ [ rcx + dsWSize] -WMask equ [ rcx + dsWMask] -window_ad equ [ rcx + dsWindow] -prev_ad equ [ rcx + dsPrev] -strstart equ [ rcx + dsStrStart] -match_start equ [ rcx + dsMatchStart] -Lookahead equ [ rcx + dsLookahead] ; 0ffffffffh on infozip -prev_length equ [ rcx + dsPrevLen] -max_chain_length equ [ rcx + dsMaxChainLen] -good_match equ [ rcx + dsGoodMatch] -nice_match equ [ rcx + dsNiceMatch] -ENDIF - -; parameter 1 in r8(deflate state s), param 2 in rdx (cur match) - -; see http://weblogs.asp.net/oldnewthing/archive/2004/01/14/58579.aspx and -; http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/64bitAMD_8e951dd2-ee77-4728-8702-55ce4b5dd24a.xml.asp -; -; All registers must be preserved across the call, except for -; rax, rcx, rdx, r8, r9, r10, and r11, which are scratch. - - - -;;; Save registers that the compiler may be using, and adjust esp to -;;; make room for our stack frame. - - -;;; Retrieve the function arguments. r8d will hold cur_match -;;; throughout the entire function. edx will hold the pointer to the -;;; deflate_state structure during the function's setup (before -;;; entering the main loop. - -; parameter 1 in rcx (deflate_state* s), param 2 in edx -> r8 (cur match) - -; this clear high 32 bits of r8, which can be garbage in both r8 and rdx - - mov [save_rdi],rdi - mov [save_rsi],rsi - mov [save_rbx],rbx - mov [save_rbp],rbp -IFDEF INFOZIP - mov r8d,ecx -ELSE - mov r8d,edx -ENDIF - mov [save_r12],r12 - mov [save_r13],r13 -; mov [save_r14],r14 -; mov [save_r15],r15 - - -;;; uInt wmask = s->w_mask; -;;; unsigned chain_length = s->max_chain_length; -;;; if (s->prev_length >= s->good_match) { -;;; chain_length >>= 2; -;;; } - - mov edi, prev_length - mov esi, good_match - mov eax, WMask - mov ebx, max_chain_length - cmp edi, esi - jl LastMatchGood - shr ebx, 2 -LastMatchGood: - -;;; chainlen is decremented once beforehand so that the function can -;;; use the sign flag instead of the zero flag for the exit test. -;;; It is then shifted into the high word, to make room for the wmask -;;; value, which it will always accompany. - - dec ebx - shl ebx, 16 - or ebx, eax - -;;; on zlib only -;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; - -IFDEF INFOZIP - mov [chainlenwmask], ebx -; on infozip nice_match = [nice_match] -ELSE - mov eax, nice_match - mov [chainlenwmask], ebx - mov r10d, Lookahead - cmp r10d, eax - cmovnl r10d, eax - mov [nicematch],r10d -ENDIF - -;;; register Bytef *scan = s->window + s->strstart; - mov r10, window_ad - mov ebp, strstart - lea r13, [r10 + rbp] - -;;; Determine how many bytes the scan ptr is off from being -;;; dword-aligned. - - mov r9,r13 - neg r13 - and r13,3 - -;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ? -;;; s->strstart - (IPos)MAX_DIST(s) : NIL; -IFDEF INFOZIP - mov eax,07efah ; MAX_DIST = (WSIZE-MIN_LOOKAHEAD) (0x8000-(3+8+1)) -ELSE - mov eax, window_size - sub eax, MIN_LOOKAHEAD -ENDIF - xor edi,edi - sub ebp, eax - - mov r11d, prev_length - - cmovng ebp,edi - -;;; int best_len = s->prev_length; - - -;;; Store the sum of s->window + best_len in esi locally, and in esi. - - lea rsi,[r10+r11] - -;;; register ush scan_start = *(ushf*)scan; -;;; register ush scan_end = *(ushf*)(scan+best_len-1); -;;; Posf *prev = s->prev; - - movzx r12d,word ptr [r9] - movzx ebx, word ptr [r9 + r11 - 1] - - mov rdi, prev_ad - -;;; Jump into the main loop. - - mov edx, [chainlenwmask] - - cmp bx,word ptr [rsi + r8 - 1] - jz LookupLoopIsZero - -LookupLoop1: - and r8d, edx - - movzx r8d, word ptr [rdi + r8*2] - cmp r8d, ebp - jbe LeaveNow - sub edx, 00010000h - js LeaveNow - -LoopEntry1: - cmp bx,word ptr [rsi + r8 - 1] - jz LookupLoopIsZero - -LookupLoop2: - and r8d, edx - - movzx r8d, word ptr [rdi + r8*2] - cmp r8d, ebp - jbe LeaveNow - sub edx, 00010000h - js LeaveNow - -LoopEntry2: - cmp bx,word ptr [rsi + r8 - 1] - jz LookupLoopIsZero - -LookupLoop4: - and r8d, edx - - movzx r8d, word ptr [rdi + r8*2] - cmp r8d, ebp - jbe LeaveNow - sub edx, 00010000h - js LeaveNow - -LoopEntry4: - - cmp bx,word ptr [rsi + r8 - 1] - jnz LookupLoop1 - jmp LookupLoopIsZero - - -;;; do { -;;; match = s->window + cur_match; -;;; if (*(ushf*)(match+best_len-1) != scan_end || -;;; *(ushf*)match != scan_start) continue; -;;; [...] -;;; } while ((cur_match = prev[cur_match & wmask]) > limit -;;; && --chain_length != 0); -;;; -;;; Here is the inner loop of the function. The function will spend the -;;; majority of its time in this loop, and majority of that time will -;;; be spent in the first ten instructions. -;;; -;;; Within this loop: -;;; ebx = scanend -;;; r8d = curmatch -;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask) -;;; esi = windowbestlen - i.e., (window + bestlen) -;;; edi = prev -;;; ebp = limit - -LookupLoop: - and r8d, edx - - movzx r8d, word ptr [rdi + r8*2] - cmp r8d, ebp - jbe LeaveNow - sub edx, 00010000h - js LeaveNow - -LoopEntry: - - cmp bx,word ptr [rsi + r8 - 1] - jnz LookupLoop1 -LookupLoopIsZero: - cmp r12w, word ptr [r10 + r8] - jnz LookupLoop1 - - -;;; Store the current value of chainlen. - mov [chainlenwmask], edx - -;;; Point edi to the string under scrutiny, and esi to the string we -;;; are hoping to match it up with. In actuality, esi and edi are -;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is -;;; initialized to -(MAX_MATCH_8 - scanalign). - - lea rsi,[r8+r10] - mov rdx, 0fffffffffffffef8h; -(MAX_MATCH_8) - lea rsi, [rsi + r13 + 0108h] ;MAX_MATCH_8] - lea rdi, [r9 + r13 + 0108h] ;MAX_MATCH_8] - - prefetcht1 [rsi+rdx] - prefetcht1 [rdi+rdx] - - -;;; Test the strings for equality, 8 bytes at a time. At the end, -;;; adjust rdx so that it is offset to the exact byte that mismatched. -;;; -;;; We already know at this point that the first three bytes of the -;;; strings match each other, and they can be safely passed over before -;;; starting the compare loop. So what this code does is skip over 0-3 -;;; bytes, as much as necessary in order to dword-align the edi -;;; pointer. (rsi will still be misaligned three times out of four.) -;;; -;;; It should be confessed that this loop usually does not represent -;;; much of the total running time. Replacing it with a more -;;; straightforward "rep cmpsb" would not drastically degrade -;;; performance. - - -LoopCmps: - mov rax, [rsi + rdx] - xor rax, [rdi + rdx] - jnz LeaveLoopCmps - - mov rax, [rsi + rdx + 8] - xor rax, [rdi + rdx + 8] - jnz LeaveLoopCmps8 - - - mov rax, [rsi + rdx + 8+8] - xor rax, [rdi + rdx + 8+8] - jnz LeaveLoopCmps16 - - add rdx,8+8+8 - - jnz short LoopCmps - jmp short LenMaximum -LeaveLoopCmps16: add rdx,8 -LeaveLoopCmps8: add rdx,8 -LeaveLoopCmps: - - test eax, 0000FFFFh - jnz LenLower - - test eax,0ffffffffh - - jnz LenLower32 - - add rdx,4 - shr rax,32 - or ax,ax - jnz LenLower - -LenLower32: - shr eax,16 - add rdx,2 -LenLower: sub al, 1 - adc rdx, 0 -;;; Calculate the length of the match. If it is longer than MAX_MATCH, -;;; then automatically accept it as the best possible match and leave. - - lea rax, [rdi + rdx] - sub rax, r9 - cmp eax, MAX_MATCH - jge LenMaximum - -;;; If the length of the match is not longer than the best match we -;;; have so far, then forget it and return to the lookup loop. -;/////////////////////////////////// - - cmp eax, r11d - jg LongerMatch - - lea rsi,[r10+r11] - - mov rdi, prev_ad - mov edx, [chainlenwmask] - jmp LookupLoop - -;;; s->match_start = cur_match; -;;; best_len = len; -;;; if (len >= nice_match) break; -;;; scan_end = *(ushf*)(scan+best_len-1); - -LongerMatch: - mov r11d, eax - mov match_start, r8d - cmp eax, [nicematch] - jge LeaveNow - - lea rsi,[r10+rax] - - movzx ebx, word ptr [r9 + rax - 1] - mov rdi, prev_ad - mov edx, [chainlenwmask] - jmp LookupLoop - -;;; Accept the current string, with the maximum possible length. - -LenMaximum: - mov r11d,MAX_MATCH - mov match_start, r8d - -;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len; -;;; return s->lookahead; - -LeaveNow: -IFDEF INFOZIP - mov eax,r11d -ELSE - mov eax, Lookahead - cmp r11d, eax - cmovng eax, r11d -ENDIF - -;;; Restore the stack and return from whence we came. - - - mov rsi,[save_rsi] - mov rdi,[save_rdi] - mov rbx,[save_rbx] - mov rbp,[save_rbp] - mov r12,[save_r12] - mov r13,[save_r13] -; mov r14,[save_r14] -; mov r15,[save_r15] - - - ret 0 -; please don't remove this string ! -; Your can freely use gvmat64 in any free or commercial app -; but it is far better don't remove the string in the binary! - db 0dh,0ah,"asm686 with masm, optimised assembly code from Brian Raiter, written 1998, converted to amd 64 by Gilles Vollant 2005",0dh,0ah,0 -longest_match ENDP - -match_init PROC - ret 0 -match_init ENDP - - -END diff --git a/io2d/src/3rd-party/zlib/contrib/masmx64/inffas8664.c b/io2d/src/3rd-party/zlib/contrib/masmx64/inffas8664.c deleted file mode 100644 index aa861a3..0000000 --- a/io2d/src/3rd-party/zlib/contrib/masmx64/inffas8664.c +++ /dev/null @@ -1,186 +0,0 @@ -/* inffas8664.c is a hand tuned assembler version of inffast.c - fast decoding - * version for AMD64 on Windows using Microsoft C compiler - * - * Copyright (C) 1995-2003 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - * - * Copyright (C) 2003 Chris Anderson - * Please use the copyright conditions above. - * - * 2005 - Adaptation to Microsoft C Compiler for AMD64 by Gilles Vollant - * - * inffas8664.c call function inffas8664fnc in inffasx64.asm - * inffasx64.asm is automatically convert from AMD64 portion of inffas86.c - * - * Dec-29-2003 -- I added AMD64 inflate asm support. This version is also - * slightly quicker on x86 systems because, instead of using rep movsb to copy - * data, it uses rep movsw, which moves data in 2-byte chunks instead of single - * bytes. I've tested the AMD64 code on a Fedora Core 1 + the x86_64 updates - * from http://fedora.linux.duke.edu/fc1_x86_64 - * which is running on an Athlon 64 3000+ / Gigabyte GA-K8VT800M system with - * 1GB ram. The 64-bit version is about 4% faster than the 32-bit version, - * when decompressing mozilla-source-1.3.tar.gz. - * - * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from - * the gcc -S output of zlib-1.2.0/inffast.c. Zlib-1.2.0 is in beta release at - * the moment. I have successfully compiled and tested this code with gcc2.96, - * gcc3.2, icc5.0, msvc6.0. It is very close to the speed of inffast.S - * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX - * enabled. I will attempt to merge the MMX code into this version. Newer - * versions of this and inffast.S can be found at - * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/ - * - */ - -#include -#include "zutil.h" -#include "inftrees.h" -#include "inflate.h" -#include "inffast.h" - -/* Mark Adler's comments from inffast.c: */ - -/* - Decode literal, length, and distance codes and write out the resulting - literal and match bytes until either not enough input or output is - available, an end-of-block is encountered, or a data error is encountered. - When large enough input and output buffers are supplied to inflate(), for - example, a 16K input buffer and a 64K output buffer, more than 95% of the - inflate execution time is spent in this routine. - - Entry assumptions: - - state->mode == LEN - strm->avail_in >= 6 - strm->avail_out >= 258 - start >= strm->avail_out - state->bits < 8 - - On return, state->mode is one of: - - LEN -- ran out of enough output space or enough available input - TYPE -- reached end of block code, inflate() to interpret next block - BAD -- error in block data - - Notes: - - - The maximum input bits used by a length/distance pair is 15 bits for the - length code, 5 bits for the length extra, 15 bits for the distance code, - and 13 bits for the distance extra. This totals 48 bits, or six bytes. - Therefore if strm->avail_in >= 6, then there is enough input to avoid - checking for available input while decoding. - - - The maximum bytes that a single length/distance pair can output is 258 - bytes, which is the maximum length that can be coded. inflate_fast() - requires strm->avail_out >= 258 for each loop to avoid checking for - output space. - */ - - - - typedef struct inffast_ar { -/* 64 32 x86 x86_64 */ -/* ar offset register */ -/* 0 0 */ void *esp; /* esp save */ -/* 8 4 */ void *ebp; /* ebp save */ -/* 16 8 */ unsigned char FAR *in; /* esi rsi local strm->next_in */ -/* 24 12 */ unsigned char FAR *last; /* r9 while in < last */ -/* 32 16 */ unsigned char FAR *out; /* edi rdi local strm->next_out */ -/* 40 20 */ unsigned char FAR *beg; /* inflate()'s init next_out */ -/* 48 24 */ unsigned char FAR *end; /* r10 while out < end */ -/* 56 28 */ unsigned char FAR *window;/* size of window, wsize!=0 */ -/* 64 32 */ code const FAR *lcode; /* ebp rbp local strm->lencode */ -/* 72 36 */ code const FAR *dcode; /* r11 local strm->distcode */ -/* 80 40 */ size_t /*unsigned long */hold; /* edx rdx local strm->hold */ -/* 88 44 */ unsigned bits; /* ebx rbx local strm->bits */ -/* 92 48 */ unsigned wsize; /* window size */ -/* 96 52 */ unsigned write; /* window write index */ -/*100 56 */ unsigned lmask; /* r12 mask for lcode */ -/*104 60 */ unsigned dmask; /* r13 mask for dcode */ -/*108 64 */ unsigned len; /* r14 match length */ -/*112 68 */ unsigned dist; /* r15 match distance */ -/*116 72 */ unsigned status; /* set when state chng*/ - } type_ar; -#ifdef ASMINF - -void inflate_fast(strm, start) -z_streamp strm; -unsigned start; /* inflate()'s starting value for strm->avail_out */ -{ - struct inflate_state FAR *state; - type_ar ar; - void inffas8664fnc(struct inffast_ar * par); - - - -#if (defined( __GNUC__ ) && defined( __amd64__ ) && ! defined( __i386 )) || (defined(_MSC_VER) && defined(_M_AMD64)) -#define PAD_AVAIL_IN 6 -#define PAD_AVAIL_OUT 258 -#else -#define PAD_AVAIL_IN 5 -#define PAD_AVAIL_OUT 257 -#endif - - /* copy state to local variables */ - state = (struct inflate_state FAR *)strm->state; - - ar.in = strm->next_in; - ar.last = ar.in + (strm->avail_in - PAD_AVAIL_IN); - ar.out = strm->next_out; - ar.beg = ar.out - (start - strm->avail_out); - ar.end = ar.out + (strm->avail_out - PAD_AVAIL_OUT); - ar.wsize = state->wsize; - ar.write = state->wnext; - ar.window = state->window; - ar.hold = state->hold; - ar.bits = state->bits; - ar.lcode = state->lencode; - ar.dcode = state->distcode; - ar.lmask = (1U << state->lenbits) - 1; - ar.dmask = (1U << state->distbits) - 1; - - /* decode literals and length/distances until end-of-block or not enough - input data or output space */ - - /* align in on 1/2 hold size boundary */ - while (((size_t)(void *)ar.in & (sizeof(ar.hold) / 2 - 1)) != 0) { - ar.hold += (unsigned long)*ar.in++ << ar.bits; - ar.bits += 8; - } - - inffas8664fnc(&ar); - - if (ar.status > 1) { - if (ar.status == 2) - strm->msg = "invalid literal/length code"; - else if (ar.status == 3) - strm->msg = "invalid distance code"; - else - strm->msg = "invalid distance too far back"; - state->mode = BAD; - } - else if ( ar.status == 1 ) { - state->mode = TYPE; - } - - /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ - ar.len = ar.bits >> 3; - ar.in -= ar.len; - ar.bits -= ar.len << 3; - ar.hold &= (1U << ar.bits) - 1; - - /* update state and return */ - strm->next_in = ar.in; - strm->next_out = ar.out; - strm->avail_in = (unsigned)(ar.in < ar.last ? - PAD_AVAIL_IN + (ar.last - ar.in) : - PAD_AVAIL_IN - (ar.in - ar.last)); - strm->avail_out = (unsigned)(ar.out < ar.end ? - PAD_AVAIL_OUT + (ar.end - ar.out) : - PAD_AVAIL_OUT - (ar.out - ar.end)); - state->hold = (unsigned long)ar.hold; - state->bits = ar.bits; - return; -} - -#endif diff --git a/io2d/src/3rd-party/zlib/contrib/masmx64/inffasx64.asm b/io2d/src/3rd-party/zlib/contrib/masmx64/inffasx64.asm deleted file mode 100644 index 41ec823..0000000 --- a/io2d/src/3rd-party/zlib/contrib/masmx64/inffasx64.asm +++ /dev/null @@ -1,396 +0,0 @@ -; inffasx64.asm is a hand tuned assembler version of inffast.c - fast decoding -; version for AMD64 on Windows using Microsoft C compiler -; -; inffasx64.asm is automatically convert from AMD64 portion of inffas86.c -; inffasx64.asm is called by inffas8664.c, which contain more info. - - -; to compile this file, I use option -; ml64.exe /Flinffasx64 /c /Zi inffasx64.asm -; with Microsoft Macro Assembler (x64) for AMD64 -; - -; This file compile with Microsoft Macro Assembler (x64) for AMD64 -; -; ml64.exe is given with Visual Studio 2005/2008/2010 and Windows WDK -; -; (you can get Windows WDK with ml64 for AMD64 from -; http://www.microsoft.com/whdc/Devtools/wdk/default.mspx for low price) -; - - -.code -inffas8664fnc PROC - -; see http://weblogs.asp.net/oldnewthing/archive/2004/01/14/58579.aspx and -; http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/64bitAMD_8e951dd2-ee77-4728-8702-55ce4b5dd24a.xml.asp -; -; All registers must be preserved across the call, except for -; rax, rcx, rdx, r8, r-9, r10, and r11, which are scratch. - - - mov [rsp-8],rsi - mov [rsp-16],rdi - mov [rsp-24],r12 - mov [rsp-32],r13 - mov [rsp-40],r14 - mov [rsp-48],r15 - mov [rsp-56],rbx - - mov rax,rcx - - mov [rax+8], rbp ; /* save regs rbp and rsp */ - mov [rax], rsp - - mov rsp, rax ; /* make rsp point to &ar */ - - mov rsi, [rsp+16] ; /* rsi = in */ - mov rdi, [rsp+32] ; /* rdi = out */ - mov r9, [rsp+24] ; /* r9 = last */ - mov r10, [rsp+48] ; /* r10 = end */ - mov rbp, [rsp+64] ; /* rbp = lcode */ - mov r11, [rsp+72] ; /* r11 = dcode */ - mov rdx, [rsp+80] ; /* rdx = hold */ - mov ebx, [rsp+88] ; /* ebx = bits */ - mov r12d, [rsp+100] ; /* r12d = lmask */ - mov r13d, [rsp+104] ; /* r13d = dmask */ - ; /* r14d = len */ - ; /* r15d = dist */ - - - cld - cmp r10, rdi - je L_one_time ; /* if only one decode left */ - cmp r9, rsi - - jne L_do_loop - - -L_one_time: - mov r8, r12 ; /* r8 = lmask */ - cmp bl, 32 - ja L_get_length_code_one_time - - lodsd ; /* eax = *(uint *)in++ */ - mov cl, bl ; /* cl = bits, needs it for shifting */ - add bl, 32 ; /* bits += 32 */ - shl rax, cl - or rdx, rax ; /* hold |= *((uint *)in)++ << bits */ - jmp L_get_length_code_one_time - -ALIGN 4 -L_while_test: - cmp r10, rdi - jbe L_break_loop - cmp r9, rsi - jbe L_break_loop - -L_do_loop: - mov r8, r12 ; /* r8 = lmask */ - cmp bl, 32 - ja L_get_length_code ; /* if (32 < bits) */ - - lodsd ; /* eax = *(uint *)in++ */ - mov cl, bl ; /* cl = bits, needs it for shifting */ - add bl, 32 ; /* bits += 32 */ - shl rax, cl - or rdx, rax ; /* hold |= *((uint *)in)++ << bits */ - -L_get_length_code: - and r8, rdx ; /* r8 &= hold */ - mov eax, [rbp+r8*4] ; /* eax = lcode[hold & lmask] */ - - mov cl, ah ; /* cl = this.bits */ - sub bl, ah ; /* bits -= this.bits */ - shr rdx, cl ; /* hold >>= this.bits */ - - test al, al - jnz L_test_for_length_base ; /* if (op != 0) 45.7% */ - - mov r8, r12 ; /* r8 = lmask */ - shr eax, 16 ; /* output this.val char */ - stosb - -L_get_length_code_one_time: - and r8, rdx ; /* r8 &= hold */ - mov eax, [rbp+r8*4] ; /* eax = lcode[hold & lmask] */ - -L_dolen: - mov cl, ah ; /* cl = this.bits */ - sub bl, ah ; /* bits -= this.bits */ - shr rdx, cl ; /* hold >>= this.bits */ - - test al, al - jnz L_test_for_length_base ; /* if (op != 0) 45.7% */ - - shr eax, 16 ; /* output this.val char */ - stosb - jmp L_while_test - -ALIGN 4 -L_test_for_length_base: - mov r14d, eax ; /* len = this */ - shr r14d, 16 ; /* len = this.val */ - mov cl, al - - test al, 16 - jz L_test_for_second_level_length ; /* if ((op & 16) == 0) 8% */ - and cl, 15 ; /* op &= 15 */ - jz L_decode_distance ; /* if (!op) */ - -L_add_bits_to_len: - sub bl, cl - xor eax, eax - inc eax - shl eax, cl - dec eax - and eax, edx ; /* eax &= hold */ - shr rdx, cl - add r14d, eax ; /* len += hold & mask[op] */ - -L_decode_distance: - mov r8, r13 ; /* r8 = dmask */ - cmp bl, 32 - ja L_get_distance_code ; /* if (32 < bits) */ - - lodsd ; /* eax = *(uint *)in++ */ - mov cl, bl ; /* cl = bits, needs it for shifting */ - add bl, 32 ; /* bits += 32 */ - shl rax, cl - or rdx, rax ; /* hold |= *((uint *)in)++ << bits */ - -L_get_distance_code: - and r8, rdx ; /* r8 &= hold */ - mov eax, [r11+r8*4] ; /* eax = dcode[hold & dmask] */ - -L_dodist: - mov r15d, eax ; /* dist = this */ - shr r15d, 16 ; /* dist = this.val */ - mov cl, ah - sub bl, ah ; /* bits -= this.bits */ - shr rdx, cl ; /* hold >>= this.bits */ - mov cl, al ; /* cl = this.op */ - - test al, 16 ; /* if ((op & 16) == 0) */ - jz L_test_for_second_level_dist - and cl, 15 ; /* op &= 15 */ - jz L_check_dist_one - -L_add_bits_to_dist: - sub bl, cl - xor eax, eax - inc eax - shl eax, cl - dec eax ; /* (1 << op) - 1 */ - and eax, edx ; /* eax &= hold */ - shr rdx, cl - add r15d, eax ; /* dist += hold & ((1 << op) - 1) */ - -L_check_window: - mov r8, rsi ; /* save in so from can use it's reg */ - mov rax, rdi - sub rax, [rsp+40] ; /* nbytes = out - beg */ - - cmp eax, r15d - jb L_clip_window ; /* if (dist > nbytes) 4.2% */ - - mov ecx, r14d ; /* ecx = len */ - mov rsi, rdi - sub rsi, r15 ; /* from = out - dist */ - - sar ecx, 1 - jnc L_copy_two ; /* if len % 2 == 0 */ - - rep movsw - mov al, [rsi] - mov [rdi], al - inc rdi - - mov rsi, r8 ; /* move in back to %rsi, toss from */ - jmp L_while_test - -L_copy_two: - rep movsw - mov rsi, r8 ; /* move in back to %rsi, toss from */ - jmp L_while_test - -ALIGN 4 -L_check_dist_one: - cmp r15d, 1 ; /* if dist 1, is a memset */ - jne L_check_window - cmp [rsp+40], rdi ; /* if out == beg, outside window */ - je L_check_window - - mov ecx, r14d ; /* ecx = len */ - mov al, [rdi-1] - mov ah, al - - sar ecx, 1 - jnc L_set_two - mov [rdi], al - inc rdi - -L_set_two: - rep stosw - jmp L_while_test - -ALIGN 4 -L_test_for_second_level_length: - test al, 64 - jnz L_test_for_end_of_block ; /* if ((op & 64) != 0) */ - - xor eax, eax - inc eax - shl eax, cl - dec eax - and eax, edx ; /* eax &= hold */ - add eax, r14d ; /* eax += len */ - mov eax, [rbp+rax*4] ; /* eax = lcode[val+(hold&mask[op])]*/ - jmp L_dolen - -ALIGN 4 -L_test_for_second_level_dist: - test al, 64 - jnz L_invalid_distance_code ; /* if ((op & 64) != 0) */ - - xor eax, eax - inc eax - shl eax, cl - dec eax - and eax, edx ; /* eax &= hold */ - add eax, r15d ; /* eax += dist */ - mov eax, [r11+rax*4] ; /* eax = dcode[val+(hold&mask[op])]*/ - jmp L_dodist - -ALIGN 4 -L_clip_window: - mov ecx, eax ; /* ecx = nbytes */ - mov eax, [rsp+92] ; /* eax = wsize, prepare for dist cmp */ - neg ecx ; /* nbytes = -nbytes */ - - cmp eax, r15d - jb L_invalid_distance_too_far ; /* if (dist > wsize) */ - - add ecx, r15d ; /* nbytes = dist - nbytes */ - cmp dword ptr [rsp+96], 0 - jne L_wrap_around_window ; /* if (write != 0) */ - - mov rsi, [rsp+56] ; /* from = window */ - sub eax, ecx ; /* eax -= nbytes */ - add rsi, rax ; /* from += wsize - nbytes */ - - mov eax, r14d ; /* eax = len */ - cmp r14d, ecx - jbe L_do_copy ; /* if (nbytes >= len) */ - - sub eax, ecx ; /* eax -= nbytes */ - rep movsb - mov rsi, rdi - sub rsi, r15 ; /* from = &out[ -dist ] */ - jmp L_do_copy - -ALIGN 4 -L_wrap_around_window: - mov eax, [rsp+96] ; /* eax = write */ - cmp ecx, eax - jbe L_contiguous_in_window ; /* if (write >= nbytes) */ - - mov esi, [rsp+92] ; /* from = wsize */ - add rsi, [rsp+56] ; /* from += window */ - add rsi, rax ; /* from += write */ - sub rsi, rcx ; /* from -= nbytes */ - sub ecx, eax ; /* nbytes -= write */ - - mov eax, r14d ; /* eax = len */ - cmp eax, ecx - jbe L_do_copy ; /* if (nbytes >= len) */ - - sub eax, ecx ; /* len -= nbytes */ - rep movsb - mov rsi, [rsp+56] ; /* from = window */ - mov ecx, [rsp+96] ; /* nbytes = write */ - cmp eax, ecx - jbe L_do_copy ; /* if (nbytes >= len) */ - - sub eax, ecx ; /* len -= nbytes */ - rep movsb - mov rsi, rdi - sub rsi, r15 ; /* from = out - dist */ - jmp L_do_copy - -ALIGN 4 -L_contiguous_in_window: - mov rsi, [rsp+56] ; /* rsi = window */ - add rsi, rax - sub rsi, rcx ; /* from += write - nbytes */ - - mov eax, r14d ; /* eax = len */ - cmp eax, ecx - jbe L_do_copy ; /* if (nbytes >= len) */ - - sub eax, ecx ; /* len -= nbytes */ - rep movsb - mov rsi, rdi - sub rsi, r15 ; /* from = out - dist */ - jmp L_do_copy ; /* if (nbytes >= len) */ - -ALIGN 4 -L_do_copy: - mov ecx, eax ; /* ecx = len */ - rep movsb - - mov rsi, r8 ; /* move in back to %esi, toss from */ - jmp L_while_test - -L_test_for_end_of_block: - test al, 32 - jz L_invalid_literal_length_code - mov dword ptr [rsp+116], 1 - jmp L_break_loop_with_status - -L_invalid_literal_length_code: - mov dword ptr [rsp+116], 2 - jmp L_break_loop_with_status - -L_invalid_distance_code: - mov dword ptr [rsp+116], 3 - jmp L_break_loop_with_status - -L_invalid_distance_too_far: - mov dword ptr [rsp+116], 4 - jmp L_break_loop_with_status - -L_break_loop: - mov dword ptr [rsp+116], 0 - -L_break_loop_with_status: -; /* put in, out, bits, and hold back into ar and pop esp */ - mov [rsp+16], rsi ; /* in */ - mov [rsp+32], rdi ; /* out */ - mov [rsp+88], ebx ; /* bits */ - mov [rsp+80], rdx ; /* hold */ - - mov rax, [rsp] ; /* restore rbp and rsp */ - mov rbp, [rsp+8] - mov rsp, rax - - - - mov rsi,[rsp-8] - mov rdi,[rsp-16] - mov r12,[rsp-24] - mov r13,[rsp-32] - mov r14,[rsp-40] - mov r15,[rsp-48] - mov rbx,[rsp-56] - - ret 0 -; : -; : "m" (ar) -; : "memory", "%rax", "%rbx", "%rcx", "%rdx", "%rsi", "%rdi", -; "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15" -; ); - -inffas8664fnc ENDP -;_TEXT ENDS -END diff --git a/io2d/src/3rd-party/zlib/contrib/masmx64/readme.txt b/io2d/src/3rd-party/zlib/contrib/masmx64/readme.txt deleted file mode 100644 index 652571c..0000000 --- a/io2d/src/3rd-party/zlib/contrib/masmx64/readme.txt +++ /dev/null @@ -1,31 +0,0 @@ -Summary -------- -This directory contains ASM implementations of the functions -longest_match() and inflate_fast(), for 64 bits x86 (both AMD64 and Intel EM64t), -for use with Microsoft Macro Assembler (x64) for AMD64 and Microsoft C++ 64 bits. - -gvmat64.asm is written by Gilles Vollant (2005), by using Brian Raiter 686/32 bits - assembly optimized version from Jean-loup Gailly original longest_match function - -inffasx64.asm and inffas8664.c were written by Chris Anderson, by optimizing - original function from Mark Adler - -Use instructions ----------------- -Assemble the .asm files using MASM and put the object files into the zlib source -directory. You can also get object files here: - - http://www.winimage.com/zLibDll/zlib124_masm_obj.zip - -define ASMV and ASMINF in your project. Include inffas8664.c in your source tree, -and inffasx64.obj and gvmat64.obj as object to link. - - -Build instructions ------------------- -run bld_64.bat with Microsoft Macro Assembler (x64) for AMD64 (ml64.exe) - -ml64.exe is given with Visual Studio 2005, Windows 2003 server DDK - -You can get Windows 2003 server DDK with ml64 and cl for AMD64 from - http://www.microsoft.com/whdc/devtools/ddk/default.mspx for low price) diff --git a/io2d/src/3rd-party/zlib/contrib/masmx86/bld_ml32.bat b/io2d/src/3rd-party/zlib/contrib/masmx86/bld_ml32.bat deleted file mode 100644 index fcf5755..0000000 --- a/io2d/src/3rd-party/zlib/contrib/masmx86/bld_ml32.bat +++ /dev/null @@ -1,2 +0,0 @@ -ml /coff /Zi /c /Flmatch686.lst match686.asm -ml /coff /Zi /c /Flinffas32.lst inffas32.asm diff --git a/io2d/src/3rd-party/zlib/contrib/masmx86/inffas32.asm b/io2d/src/3rd-party/zlib/contrib/masmx86/inffas32.asm deleted file mode 100644 index cb37a81..0000000 --- a/io2d/src/3rd-party/zlib/contrib/masmx86/inffas32.asm +++ /dev/null @@ -1,1080 +0,0 @@ -;/* inffas32.asm is a hand tuned assembler version of inffast.c -- fast decoding -; * -; * inffas32.asm is derivated from inffas86.c, with translation of assembly code -; * -; * Copyright (C) 1995-2003 Mark Adler -; * For conditions of distribution and use, see copyright notice in zlib.h -; * -; * Copyright (C) 2003 Chris Anderson -; * Please use the copyright conditions above. -; * -; * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from -; * the gcc -S output of zlib-1.2.0/inffast.c. Zlib-1.2.0 is in beta release at -; * the moment. I have successfully compiled and tested this code with gcc2.96, -; * gcc3.2, icc5.0, msvc6.0. It is very close to the speed of inffast.S -; * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX -; * enabled. I will attempt to merge the MMX code into this version. Newer -; * versions of this and inffast.S can be found at -; * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/ -; * -; * 2005 : modification by Gilles Vollant -; */ -; For Visual C++ 4.x and higher and ML 6.x and higher -; ml.exe is in directory \MASM611C of Win95 DDK -; ml.exe is also distributed in http://www.masm32.com/masmdl.htm -; and in VC++2003 toolkit at http://msdn.microsoft.com/visualc/vctoolkit2003/ -; -; -; compile with command line option -; ml /coff /Zi /c /Flinffas32.lst inffas32.asm - -; if you define NO_GZIP (see inflate.h), compile with -; ml /coff /Zi /c /Flinffas32.lst /DNO_GUNZIP inffas32.asm - - -; zlib122sup is 0 fort zlib 1.2.2.1 and lower -; zlib122sup is 8 fort zlib 1.2.2.2 and more (with addition of dmax and head -; in inflate_state in inflate.h) -zlib1222sup equ 8 - - -IFDEF GUNZIP - INFLATE_MODE_TYPE equ 11 - INFLATE_MODE_BAD equ 26 -ELSE - IFNDEF NO_GUNZIP - INFLATE_MODE_TYPE equ 11 - INFLATE_MODE_BAD equ 26 - ELSE - INFLATE_MODE_TYPE equ 3 - INFLATE_MODE_BAD equ 17 - ENDIF -ENDIF - - -; 75 "inffast.S" -;FILE "inffast.S" - -;;;GLOBAL _inflate_fast - -;;;SECTION .text - - - - .586p - .mmx - - name inflate_fast_x86 - .MODEL FLAT - -_DATA segment -inflate_fast_use_mmx: - dd 1 - - -_TEXT segment - - - -ALIGN 4 - db 'Fast decoding Code from Chris Anderson' - db 0 - -ALIGN 4 -invalid_literal_length_code_msg: - db 'invalid literal/length code' - db 0 - -ALIGN 4 -invalid_distance_code_msg: - db 'invalid distance code' - db 0 - -ALIGN 4 -invalid_distance_too_far_msg: - db 'invalid distance too far back' - db 0 - - -ALIGN 4 -inflate_fast_mask: -dd 0 -dd 1 -dd 3 -dd 7 -dd 15 -dd 31 -dd 63 -dd 127 -dd 255 -dd 511 -dd 1023 -dd 2047 -dd 4095 -dd 8191 -dd 16383 -dd 32767 -dd 65535 -dd 131071 -dd 262143 -dd 524287 -dd 1048575 -dd 2097151 -dd 4194303 -dd 8388607 -dd 16777215 -dd 33554431 -dd 67108863 -dd 134217727 -dd 268435455 -dd 536870911 -dd 1073741823 -dd 2147483647 -dd 4294967295 - - -mode_state equ 0 ;/* state->mode */ -wsize_state equ (32+zlib1222sup) ;/* state->wsize */ -write_state equ (36+4+zlib1222sup) ;/* state->write */ -window_state equ (40+4+zlib1222sup) ;/* state->window */ -hold_state equ (44+4+zlib1222sup) ;/* state->hold */ -bits_state equ (48+4+zlib1222sup) ;/* state->bits */ -lencode_state equ (64+4+zlib1222sup) ;/* state->lencode */ -distcode_state equ (68+4+zlib1222sup) ;/* state->distcode */ -lenbits_state equ (72+4+zlib1222sup) ;/* state->lenbits */ -distbits_state equ (76+4+zlib1222sup) ;/* state->distbits */ - - -;;SECTION .text -; 205 "inffast.S" -;GLOBAL inflate_fast_use_mmx - -;SECTION .data - - -; GLOBAL inflate_fast_use_mmx:object -;.size inflate_fast_use_mmx, 4 -; 226 "inffast.S" -;SECTION .text - -ALIGN 4 -_inflate_fast proc near -.FPO (16, 4, 0, 0, 1, 0) - push edi - push esi - push ebp - push ebx - pushfd - sub esp,64 - cld - - - - - mov esi, [esp+88] - mov edi, [esi+28] - - - - - - - - mov edx, [esi+4] - mov eax, [esi+0] - - add edx,eax - sub edx,11 - - mov [esp+44],eax - mov [esp+20],edx - - mov ebp, [esp+92] - mov ecx, [esi+16] - mov ebx, [esi+12] - - sub ebp,ecx - neg ebp - add ebp,ebx - - sub ecx,257 - add ecx,ebx - - mov [esp+60],ebx - mov [esp+40],ebp - mov [esp+16],ecx -; 285 "inffast.S" - mov eax, [edi+lencode_state] - mov ecx, [edi+distcode_state] - - mov [esp+8],eax - mov [esp+12],ecx - - mov eax,1 - mov ecx, [edi+lenbits_state] - shl eax,cl - dec eax - mov [esp+0],eax - - mov eax,1 - mov ecx, [edi+distbits_state] - shl eax,cl - dec eax - mov [esp+4],eax - - mov eax, [edi+wsize_state] - mov ecx, [edi+write_state] - mov edx, [edi+window_state] - - mov [esp+52],eax - mov [esp+48],ecx - mov [esp+56],edx - - mov ebp, [edi+hold_state] - mov ebx, [edi+bits_state] -; 321 "inffast.S" - mov esi, [esp+44] - mov ecx, [esp+20] - cmp ecx,esi - ja L_align_long - - add ecx,11 - sub ecx,esi - mov eax,12 - sub eax,ecx - lea edi, [esp+28] - rep movsb - mov ecx,eax - xor eax,eax - rep stosb - lea esi, [esp+28] - mov [esp+20],esi - jmp L_is_aligned - - -L_align_long: - test esi,3 - jz L_is_aligned - xor eax,eax - mov al, [esi] - inc esi - mov ecx,ebx - add ebx,8 - shl eax,cl - or ebp,eax - jmp L_align_long - -L_is_aligned: - mov edi, [esp+60] -; 366 "inffast.S" -L_check_mmx: - cmp dword ptr [inflate_fast_use_mmx],2 - je L_init_mmx - ja L_do_loop - - push eax - push ebx - push ecx - push edx - pushfd - mov eax, [esp] - xor dword ptr [esp],0200000h - - - - - popfd - pushfd - pop edx - xor edx,eax - jz L_dont_use_mmx - xor eax,eax - cpuid - cmp ebx,0756e6547h - jne L_dont_use_mmx - cmp ecx,06c65746eh - jne L_dont_use_mmx - cmp edx,049656e69h - jne L_dont_use_mmx - mov eax,1 - cpuid - shr eax,8 - and eax,15 - cmp eax,6 - jne L_dont_use_mmx - test edx,0800000h - jnz L_use_mmx - jmp L_dont_use_mmx -L_use_mmx: - mov dword ptr [inflate_fast_use_mmx],2 - jmp L_check_mmx_pop -L_dont_use_mmx: - mov dword ptr [inflate_fast_use_mmx],3 -L_check_mmx_pop: - pop edx - pop ecx - pop ebx - pop eax - jmp L_check_mmx -; 426 "inffast.S" -ALIGN 4 -L_do_loop: -; 437 "inffast.S" - cmp bl,15 - ja L_get_length_code - - xor eax,eax - lodsw - mov cl,bl - add bl,16 - shl eax,cl - or ebp,eax - -L_get_length_code: - mov edx, [esp+0] - mov ecx, [esp+8] - and edx,ebp - mov eax, [ecx+edx*4] - -L_dolen: - - - - - - - mov cl,ah - sub bl,ah - shr ebp,cl - - - - - - - test al,al - jnz L_test_for_length_base - - shr eax,16 - stosb - -L_while_test: - - - cmp [esp+16],edi - jbe L_break_loop - - cmp [esp+20],esi - ja L_do_loop - jmp L_break_loop - -L_test_for_length_base: -; 502 "inffast.S" - mov edx,eax - shr edx,16 - mov cl,al - - test al,16 - jz L_test_for_second_level_length - and cl,15 - jz L_save_len - cmp bl,cl - jae L_add_bits_to_len - - mov ch,cl - xor eax,eax - lodsw - mov cl,bl - add bl,16 - shl eax,cl - or ebp,eax - mov cl,ch - -L_add_bits_to_len: - mov eax,1 - shl eax,cl - dec eax - sub bl,cl - and eax,ebp - shr ebp,cl - add edx,eax - -L_save_len: - mov [esp+24],edx - - -L_decode_distance: -; 549 "inffast.S" - cmp bl,15 - ja L_get_distance_code - - xor eax,eax - lodsw - mov cl,bl - add bl,16 - shl eax,cl - or ebp,eax - -L_get_distance_code: - mov edx, [esp+4] - mov ecx, [esp+12] - and edx,ebp - mov eax, [ecx+edx*4] - - -L_dodist: - mov edx,eax - shr edx,16 - mov cl,ah - sub bl,ah - shr ebp,cl -; 584 "inffast.S" - mov cl,al - - test al,16 - jz L_test_for_second_level_dist - and cl,15 - jz L_check_dist_one - cmp bl,cl - jae L_add_bits_to_dist - - mov ch,cl - xor eax,eax - lodsw - mov cl,bl - add bl,16 - shl eax,cl - or ebp,eax - mov cl,ch - -L_add_bits_to_dist: - mov eax,1 - shl eax,cl - dec eax - sub bl,cl - and eax,ebp - shr ebp,cl - add edx,eax - jmp L_check_window - -L_check_window: -; 625 "inffast.S" - mov [esp+44],esi - mov eax,edi - sub eax, [esp+40] - - cmp eax,edx - jb L_clip_window - - mov ecx, [esp+24] - mov esi,edi - sub esi,edx - - sub ecx,3 - mov al, [esi] - mov [edi],al - mov al, [esi+1] - mov dl, [esi+2] - add esi,3 - mov [edi+1],al - mov [edi+2],dl - add edi,3 - rep movsb - - mov esi, [esp+44] - jmp L_while_test - -ALIGN 4 -L_check_dist_one: - cmp edx,1 - jne L_check_window - cmp [esp+40],edi - je L_check_window - - dec edi - mov ecx, [esp+24] - mov al, [edi] - sub ecx,3 - - mov [edi+1],al - mov [edi+2],al - mov [edi+3],al - add edi,4 - rep stosb - - jmp L_while_test - -ALIGN 4 -L_test_for_second_level_length: - - - - - test al,64 - jnz L_test_for_end_of_block - - mov eax,1 - shl eax,cl - dec eax - and eax,ebp - add eax,edx - mov edx, [esp+8] - mov eax, [edx+eax*4] - jmp L_dolen - -ALIGN 4 -L_test_for_second_level_dist: - - - - - test al,64 - jnz L_invalid_distance_code - - mov eax,1 - shl eax,cl - dec eax - and eax,ebp - add eax,edx - mov edx, [esp+12] - mov eax, [edx+eax*4] - jmp L_dodist - -ALIGN 4 -L_clip_window: -; 721 "inffast.S" - mov ecx,eax - mov eax, [esp+52] - neg ecx - mov esi, [esp+56] - - cmp eax,edx - jb L_invalid_distance_too_far - - add ecx,edx - cmp dword ptr [esp+48],0 - jne L_wrap_around_window - - sub eax,ecx - add esi,eax -; 749 "inffast.S" - mov eax, [esp+24] - cmp eax,ecx - jbe L_do_copy1 - - sub eax,ecx - rep movsb - mov esi,edi - sub esi,edx - jmp L_do_copy1 - - cmp eax,ecx - jbe L_do_copy1 - - sub eax,ecx - rep movsb - mov esi,edi - sub esi,edx - jmp L_do_copy1 - -L_wrap_around_window: -; 793 "inffast.S" - mov eax, [esp+48] - cmp ecx,eax - jbe L_contiguous_in_window - - add esi, [esp+52] - add esi,eax - sub esi,ecx - sub ecx,eax - - - mov eax, [esp+24] - cmp eax,ecx - jbe L_do_copy1 - - sub eax,ecx - rep movsb - mov esi, [esp+56] - mov ecx, [esp+48] - cmp eax,ecx - jbe L_do_copy1 - - sub eax,ecx - rep movsb - mov esi,edi - sub esi,edx - jmp L_do_copy1 - -L_contiguous_in_window: -; 836 "inffast.S" - add esi,eax - sub esi,ecx - - - mov eax, [esp+24] - cmp eax,ecx - jbe L_do_copy1 - - sub eax,ecx - rep movsb - mov esi,edi - sub esi,edx - -L_do_copy1: -; 862 "inffast.S" - mov ecx,eax - rep movsb - - mov esi, [esp+44] - jmp L_while_test -; 878 "inffast.S" -ALIGN 4 -L_init_mmx: - emms - - - - - - movd mm0,ebp - mov ebp,ebx -; 896 "inffast.S" - movd mm4,dword ptr [esp+0] - movq mm3,mm4 - movd mm5,dword ptr [esp+4] - movq mm2,mm5 - pxor mm1,mm1 - mov ebx, [esp+8] - jmp L_do_loop_mmx - -ALIGN 4 -L_do_loop_mmx: - psrlq mm0,mm1 - - cmp ebp,32 - ja L_get_length_code_mmx - - movd mm6,ebp - movd mm7,dword ptr [esi] - add esi,4 - psllq mm7,mm6 - add ebp,32 - por mm0,mm7 - -L_get_length_code_mmx: - pand mm4,mm0 - movd eax,mm4 - movq mm4,mm3 - mov eax, [ebx+eax*4] - -L_dolen_mmx: - movzx ecx,ah - movd mm1,ecx - sub ebp,ecx - - test al,al - jnz L_test_for_length_base_mmx - - shr eax,16 - stosb - -L_while_test_mmx: - - - cmp [esp+16],edi - jbe L_break_loop - - cmp [esp+20],esi - ja L_do_loop_mmx - jmp L_break_loop - -L_test_for_length_base_mmx: - - mov edx,eax - shr edx,16 - - test al,16 - jz L_test_for_second_level_length_mmx - and eax,15 - jz L_decode_distance_mmx - - psrlq mm0,mm1 - movd mm1,eax - movd ecx,mm0 - sub ebp,eax - and ecx, [inflate_fast_mask+eax*4] - add edx,ecx - -L_decode_distance_mmx: - psrlq mm0,mm1 - - cmp ebp,32 - ja L_get_dist_code_mmx - - movd mm6,ebp - movd mm7,dword ptr [esi] - add esi,4 - psllq mm7,mm6 - add ebp,32 - por mm0,mm7 - -L_get_dist_code_mmx: - mov ebx, [esp+12] - pand mm5,mm0 - movd eax,mm5 - movq mm5,mm2 - mov eax, [ebx+eax*4] - -L_dodist_mmx: - - movzx ecx,ah - mov ebx,eax - shr ebx,16 - sub ebp,ecx - movd mm1,ecx - - test al,16 - jz L_test_for_second_level_dist_mmx - and eax,15 - jz L_check_dist_one_mmx - -L_add_bits_to_dist_mmx: - psrlq mm0,mm1 - movd mm1,eax - movd ecx,mm0 - sub ebp,eax - and ecx, [inflate_fast_mask+eax*4] - add ebx,ecx - -L_check_window_mmx: - mov [esp+44],esi - mov eax,edi - sub eax, [esp+40] - - cmp eax,ebx - jb L_clip_window_mmx - - mov ecx,edx - mov esi,edi - sub esi,ebx - - sub ecx,3 - mov al, [esi] - mov [edi],al - mov al, [esi+1] - mov dl, [esi+2] - add esi,3 - mov [edi+1],al - mov [edi+2],dl - add edi,3 - rep movsb - - mov esi, [esp+44] - mov ebx, [esp+8] - jmp L_while_test_mmx - -ALIGN 4 -L_check_dist_one_mmx: - cmp ebx,1 - jne L_check_window_mmx - cmp [esp+40],edi - je L_check_window_mmx - - dec edi - mov ecx,edx - mov al, [edi] - sub ecx,3 - - mov [edi+1],al - mov [edi+2],al - mov [edi+3],al - add edi,4 - rep stosb - - mov ebx, [esp+8] - jmp L_while_test_mmx - -ALIGN 4 -L_test_for_second_level_length_mmx: - test al,64 - jnz L_test_for_end_of_block - - and eax,15 - psrlq mm0,mm1 - movd ecx,mm0 - and ecx, [inflate_fast_mask+eax*4] - add ecx,edx - mov eax, [ebx+ecx*4] - jmp L_dolen_mmx - -ALIGN 4 -L_test_for_second_level_dist_mmx: - test al,64 - jnz L_invalid_distance_code - - and eax,15 - psrlq mm0,mm1 - movd ecx,mm0 - and ecx, [inflate_fast_mask+eax*4] - mov eax, [esp+12] - add ecx,ebx - mov eax, [eax+ecx*4] - jmp L_dodist_mmx - -ALIGN 4 -L_clip_window_mmx: - - mov ecx,eax - mov eax, [esp+52] - neg ecx - mov esi, [esp+56] - - cmp eax,ebx - jb L_invalid_distance_too_far - - add ecx,ebx - cmp dword ptr [esp+48],0 - jne L_wrap_around_window_mmx - - sub eax,ecx - add esi,eax - - cmp edx,ecx - jbe L_do_copy1_mmx - - sub edx,ecx - rep movsb - mov esi,edi - sub esi,ebx - jmp L_do_copy1_mmx - - cmp edx,ecx - jbe L_do_copy1_mmx - - sub edx,ecx - rep movsb - mov esi,edi - sub esi,ebx - jmp L_do_copy1_mmx - -L_wrap_around_window_mmx: - - mov eax, [esp+48] - cmp ecx,eax - jbe L_contiguous_in_window_mmx - - add esi, [esp+52] - add esi,eax - sub esi,ecx - sub ecx,eax - - - cmp edx,ecx - jbe L_do_copy1_mmx - - sub edx,ecx - rep movsb - mov esi, [esp+56] - mov ecx, [esp+48] - cmp edx,ecx - jbe L_do_copy1_mmx - - sub edx,ecx - rep movsb - mov esi,edi - sub esi,ebx - jmp L_do_copy1_mmx - -L_contiguous_in_window_mmx: - - add esi,eax - sub esi,ecx - - - cmp edx,ecx - jbe L_do_copy1_mmx - - sub edx,ecx - rep movsb - mov esi,edi - sub esi,ebx - -L_do_copy1_mmx: - - - mov ecx,edx - rep movsb - - mov esi, [esp+44] - mov ebx, [esp+8] - jmp L_while_test_mmx -; 1174 "inffast.S" -L_invalid_distance_code: - - - - - - mov ecx, invalid_distance_code_msg - mov edx,INFLATE_MODE_BAD - jmp L_update_stream_state - -L_test_for_end_of_block: - - - - - - test al,32 - jz L_invalid_literal_length_code - - mov ecx,0 - mov edx,INFLATE_MODE_TYPE - jmp L_update_stream_state - -L_invalid_literal_length_code: - - - - - - mov ecx, invalid_literal_length_code_msg - mov edx,INFLATE_MODE_BAD - jmp L_update_stream_state - -L_invalid_distance_too_far: - - - - mov esi, [esp+44] - mov ecx, invalid_distance_too_far_msg - mov edx,INFLATE_MODE_BAD - jmp L_update_stream_state - -L_update_stream_state: - - mov eax, [esp+88] - test ecx,ecx - jz L_skip_msg - mov [eax+24],ecx -L_skip_msg: - mov eax, [eax+28] - mov [eax+mode_state],edx - jmp L_break_loop - -ALIGN 4 -L_break_loop: -; 1243 "inffast.S" - cmp dword ptr [inflate_fast_use_mmx],2 - jne L_update_next_in - - - - mov ebx,ebp - -L_update_next_in: -; 1266 "inffast.S" - mov eax, [esp+88] - mov ecx,ebx - mov edx, [eax+28] - shr ecx,3 - sub esi,ecx - shl ecx,3 - sub ebx,ecx - mov [eax+12],edi - mov [edx+bits_state],ebx - mov ecx,ebx - - lea ebx, [esp+28] - cmp [esp+20],ebx - jne L_buf_not_used - - sub esi,ebx - mov ebx, [eax+0] - mov [esp+20],ebx - add esi,ebx - mov ebx, [eax+4] - sub ebx,11 - add [esp+20],ebx - -L_buf_not_used: - mov [eax+0],esi - - mov ebx,1 - shl ebx,cl - dec ebx - - - - - - cmp dword ptr [inflate_fast_use_mmx],2 - jne L_update_hold - - - - psrlq mm0,mm1 - movd ebp,mm0 - - emms - -L_update_hold: - - - - and ebp,ebx - mov [edx+hold_state],ebp - - - - - mov ebx, [esp+20] - cmp ebx,esi - jbe L_last_is_smaller - - sub ebx,esi - add ebx,11 - mov [eax+4],ebx - jmp L_fixup_out -L_last_is_smaller: - sub esi,ebx - neg esi - add esi,11 - mov [eax+4],esi - - - - -L_fixup_out: - - mov ebx, [esp+16] - cmp ebx,edi - jbe L_end_is_smaller - - sub ebx,edi - add ebx,257 - mov [eax+16],ebx - jmp L_done -L_end_is_smaller: - sub edi,ebx - neg edi - add edi,257 - mov [eax+16],edi - - - - - -L_done: - add esp,64 - popfd - pop ebx - pop ebp - pop esi - pop edi - ret -_inflate_fast endp - -_TEXT ends -end diff --git a/io2d/src/3rd-party/zlib/contrib/masmx86/match686.asm b/io2d/src/3rd-party/zlib/contrib/masmx86/match686.asm deleted file mode 100644 index 69e0eed..0000000 --- a/io2d/src/3rd-party/zlib/contrib/masmx86/match686.asm +++ /dev/null @@ -1,479 +0,0 @@ -; match686.asm -- Asm portion of the optimized longest_match for 32 bits x86 -; Copyright (C) 1995-1996 Jean-loup Gailly, Brian Raiter and Gilles Vollant. -; File written by Gilles Vollant, by converting match686.S from Brian Raiter -; for MASM. This is as assembly version of longest_match -; from Jean-loup Gailly in deflate.c -; -; http://www.zlib.net -; http://www.winimage.com/zLibDll -; http://www.muppetlabs.com/~breadbox/software/assembly.html -; -; For Visual C++ 4.x and higher and ML 6.x and higher -; ml.exe is distributed in -; http://www.microsoft.com/downloads/details.aspx?FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64 -; -; this file contain two implementation of longest_match -; -; this longest_match was written by Brian raiter (1998), optimized for Pentium Pro -; (and the faster known version of match_init on modern Core 2 Duo and AMD Phenom) -; -; for using an assembly version of longest_match, you need define ASMV in project -; -; compile the asm file running -; ml /coff /Zi /c /Flmatch686.lst match686.asm -; and do not include match686.obj in your project -; -; note: contrib of zLib 1.2.3 and earlier contained both a deprecated version for -; Pentium (prior Pentium Pro) and this version for Pentium Pro and modern processor -; with autoselect (with cpu detection code) -; if you want support the old pentium optimization, you can still use these version -; -; this file is not optimized for old pentium, but it compatible with all x86 32 bits -; processor (starting 80386) -; -; -; see below : zlib1222add must be adjuster if you use a zlib version < 1.2.2.2 - -;uInt longest_match(s, cur_match) -; deflate_state *s; -; IPos cur_match; /* current match */ - - NbStack equ 76 - cur_match equ dword ptr[esp+NbStack-0] - str_s equ dword ptr[esp+NbStack-4] -; 5 dword on top (ret,ebp,esi,edi,ebx) - adrret equ dword ptr[esp+NbStack-8] - pushebp equ dword ptr[esp+NbStack-12] - pushedi equ dword ptr[esp+NbStack-16] - pushesi equ dword ptr[esp+NbStack-20] - pushebx equ dword ptr[esp+NbStack-24] - - chain_length equ dword ptr [esp+NbStack-28] - limit equ dword ptr [esp+NbStack-32] - best_len equ dword ptr [esp+NbStack-36] - window equ dword ptr [esp+NbStack-40] - prev equ dword ptr [esp+NbStack-44] - scan_start equ word ptr [esp+NbStack-48] - wmask equ dword ptr [esp+NbStack-52] - match_start_ptr equ dword ptr [esp+NbStack-56] - nice_match equ dword ptr [esp+NbStack-60] - scan equ dword ptr [esp+NbStack-64] - - windowlen equ dword ptr [esp+NbStack-68] - match_start equ dword ptr [esp+NbStack-72] - strend equ dword ptr [esp+NbStack-76] - NbStackAdd equ (NbStack-24) - - .386p - - name gvmatch - .MODEL FLAT - - - -; all the +zlib1222add offsets are due to the addition of fields -; in zlib in the deflate_state structure since the asm code was first written -; (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)"). -; (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0"). -; if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8"). - - zlib1222add equ 8 - -; Note : these value are good with a 8 bytes boundary pack structure - dep_chain_length equ 74h+zlib1222add - dep_window equ 30h+zlib1222add - dep_strstart equ 64h+zlib1222add - dep_prev_length equ 70h+zlib1222add - dep_nice_match equ 88h+zlib1222add - dep_w_size equ 24h+zlib1222add - dep_prev equ 38h+zlib1222add - dep_w_mask equ 2ch+zlib1222add - dep_good_match equ 84h+zlib1222add - dep_match_start equ 68h+zlib1222add - dep_lookahead equ 6ch+zlib1222add - - -_TEXT segment - -IFDEF NOUNDERLINE - public longest_match - public match_init -ELSE - public _longest_match - public _match_init -ENDIF - - MAX_MATCH equ 258 - MIN_MATCH equ 3 - MIN_LOOKAHEAD equ (MAX_MATCH+MIN_MATCH+1) - - - -MAX_MATCH equ 258 -MIN_MATCH equ 3 -MIN_LOOKAHEAD equ (MAX_MATCH + MIN_MATCH + 1) -MAX_MATCH_8_ equ ((MAX_MATCH + 7) AND 0FFF0h) - - -;;; stack frame offsets - -chainlenwmask equ esp + 0 ; high word: current chain len - ; low word: s->wmask -window equ esp + 4 ; local copy of s->window -windowbestlen equ esp + 8 ; s->window + bestlen -scanstart equ esp + 16 ; first two bytes of string -scanend equ esp + 12 ; last two bytes of string -scanalign equ esp + 20 ; dword-misalignment of string -nicematch equ esp + 24 ; a good enough match size -bestlen equ esp + 28 ; size of best match so far -scan equ esp + 32 ; ptr to string wanting match - -LocalVarsSize equ 36 -; saved ebx byte esp + 36 -; saved edi byte esp + 40 -; saved esi byte esp + 44 -; saved ebp byte esp + 48 -; return address byte esp + 52 -deflatestate equ esp + 56 ; the function arguments -curmatch equ esp + 60 - -;;; Offsets for fields in the deflate_state structure. These numbers -;;; are calculated from the definition of deflate_state, with the -;;; assumption that the compiler will dword-align the fields. (Thus, -;;; changing the definition of deflate_state could easily cause this -;;; program to crash horribly, without so much as a warning at -;;; compile time. Sigh.) - -dsWSize equ 36+zlib1222add -dsWMask equ 44+zlib1222add -dsWindow equ 48+zlib1222add -dsPrev equ 56+zlib1222add -dsMatchLen equ 88+zlib1222add -dsPrevMatch equ 92+zlib1222add -dsStrStart equ 100+zlib1222add -dsMatchStart equ 104+zlib1222add -dsLookahead equ 108+zlib1222add -dsPrevLen equ 112+zlib1222add -dsMaxChainLen equ 116+zlib1222add -dsGoodMatch equ 132+zlib1222add -dsNiceMatch equ 136+zlib1222add - - -;;; match686.asm -- Pentium-Pro-optimized version of longest_match() -;;; Written for zlib 1.1.2 -;;; Copyright (C) 1998 Brian Raiter -;;; You can look at http://www.muppetlabs.com/~breadbox/software/assembly.html -;;; -;; -;; This software is provided 'as-is', without any express or implied -;; warranty. In no event will the authors be held liable for any damages -;; arising from the use of this software. -;; -;; Permission is granted to anyone to use this software for any purpose, -;; including commercial applications, and to alter it and redistribute it -;; freely, subject to the following restrictions: -;; -;; 1. The origin of this software must not be misrepresented; you must not -;; claim that you wrote the original software. If you use this software -;; in a product, an acknowledgment in the product documentation would be -;; appreciated but is not required. -;; 2. Altered source versions must be plainly marked as such, and must not be -;; misrepresented as being the original software -;; 3. This notice may not be removed or altered from any source distribution. -;; - -;GLOBAL _longest_match, _match_init - - -;SECTION .text - -;;; uInt longest_match(deflate_state *deflatestate, IPos curmatch) - -;_longest_match: - IFDEF NOUNDERLINE - longest_match proc near - ELSE - _longest_match proc near - ENDIF -.FPO (9, 4, 0, 0, 1, 0) - -;;; Save registers that the compiler may be using, and adjust esp to -;;; make room for our stack frame. - - push ebp - push edi - push esi - push ebx - sub esp, LocalVarsSize - -;;; Retrieve the function arguments. ecx will hold cur_match -;;; throughout the entire function. edx will hold the pointer to the -;;; deflate_state structure during the function's setup (before -;;; entering the main loop. - - mov edx, [deflatestate] - mov ecx, [curmatch] - -;;; uInt wmask = s->w_mask; -;;; unsigned chain_length = s->max_chain_length; -;;; if (s->prev_length >= s->good_match) { -;;; chain_length >>= 2; -;;; } - - mov eax, [edx + dsPrevLen] - mov ebx, [edx + dsGoodMatch] - cmp eax, ebx - mov eax, [edx + dsWMask] - mov ebx, [edx + dsMaxChainLen] - jl LastMatchGood - shr ebx, 2 -LastMatchGood: - -;;; chainlen is decremented once beforehand so that the function can -;;; use the sign flag instead of the zero flag for the exit test. -;;; It is then shifted into the high word, to make room for the wmask -;;; value, which it will always accompany. - - dec ebx - shl ebx, 16 - or ebx, eax - mov [chainlenwmask], ebx - -;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; - - mov eax, [edx + dsNiceMatch] - mov ebx, [edx + dsLookahead] - cmp ebx, eax - jl LookaheadLess - mov ebx, eax -LookaheadLess: mov [nicematch], ebx - -;;; register Bytef *scan = s->window + s->strstart; - - mov esi, [edx + dsWindow] - mov [window], esi - mov ebp, [edx + dsStrStart] - lea edi, [esi + ebp] - mov [scan], edi - -;;; Determine how many bytes the scan ptr is off from being -;;; dword-aligned. - - mov eax, edi - neg eax - and eax, 3 - mov [scanalign], eax - -;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ? -;;; s->strstart - (IPos)MAX_DIST(s) : NIL; - - mov eax, [edx + dsWSize] - sub eax, MIN_LOOKAHEAD - sub ebp, eax - jg LimitPositive - xor ebp, ebp -LimitPositive: - -;;; int best_len = s->prev_length; - - mov eax, [edx + dsPrevLen] - mov [bestlen], eax - -;;; Store the sum of s->window + best_len in esi locally, and in esi. - - add esi, eax - mov [windowbestlen], esi - -;;; register ush scan_start = *(ushf*)scan; -;;; register ush scan_end = *(ushf*)(scan+best_len-1); -;;; Posf *prev = s->prev; - - movzx ebx, word ptr [edi] - mov [scanstart], ebx - movzx ebx, word ptr [edi + eax - 1] - mov [scanend], ebx - mov edi, [edx + dsPrev] - -;;; Jump into the main loop. - - mov edx, [chainlenwmask] - jmp short LoopEntry - -align 4 - -;;; do { -;;; match = s->window + cur_match; -;;; if (*(ushf*)(match+best_len-1) != scan_end || -;;; *(ushf*)match != scan_start) continue; -;;; [...] -;;; } while ((cur_match = prev[cur_match & wmask]) > limit -;;; && --chain_length != 0); -;;; -;;; Here is the inner loop of the function. The function will spend the -;;; majority of its time in this loop, and majority of that time will -;;; be spent in the first ten instructions. -;;; -;;; Within this loop: -;;; ebx = scanend -;;; ecx = curmatch -;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask) -;;; esi = windowbestlen - i.e., (window + bestlen) -;;; edi = prev -;;; ebp = limit - -LookupLoop: - and ecx, edx - movzx ecx, word ptr [edi + ecx*2] - cmp ecx, ebp - jbe LeaveNow - sub edx, 00010000h - js LeaveNow -LoopEntry: movzx eax, word ptr [esi + ecx - 1] - cmp eax, ebx - jnz LookupLoop - mov eax, [window] - movzx eax, word ptr [eax + ecx] - cmp eax, [scanstart] - jnz LookupLoop - -;;; Store the current value of chainlen. - - mov [chainlenwmask], edx - -;;; Point edi to the string under scrutiny, and esi to the string we -;;; are hoping to match it up with. In actuality, esi and edi are -;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is -;;; initialized to -(MAX_MATCH_8 - scanalign). - - mov esi, [window] - mov edi, [scan] - add esi, ecx - mov eax, [scanalign] - mov edx, 0fffffef8h; -(MAX_MATCH_8) - lea edi, [edi + eax + 0108h] ;MAX_MATCH_8] - lea esi, [esi + eax + 0108h] ;MAX_MATCH_8] - -;;; Test the strings for equality, 8 bytes at a time. At the end, -;;; adjust edx so that it is offset to the exact byte that mismatched. -;;; -;;; We already know at this point that the first three bytes of the -;;; strings match each other, and they can be safely passed over before -;;; starting the compare loop. So what this code does is skip over 0-3 -;;; bytes, as much as necessary in order to dword-align the edi -;;; pointer. (esi will still be misaligned three times out of four.) -;;; -;;; It should be confessed that this loop usually does not represent -;;; much of the total running time. Replacing it with a more -;;; straightforward "rep cmpsb" would not drastically degrade -;;; performance. - -LoopCmps: - mov eax, [esi + edx] - xor eax, [edi + edx] - jnz LeaveLoopCmps - mov eax, [esi + edx + 4] - xor eax, [edi + edx + 4] - jnz LeaveLoopCmps4 - add edx, 8 - jnz LoopCmps - jmp short LenMaximum -LeaveLoopCmps4: add edx, 4 -LeaveLoopCmps: test eax, 0000FFFFh - jnz LenLower - add edx, 2 - shr eax, 16 -LenLower: sub al, 1 - adc edx, 0 - -;;; Calculate the length of the match. If it is longer than MAX_MATCH, -;;; then automatically accept it as the best possible match and leave. - - lea eax, [edi + edx] - mov edi, [scan] - sub eax, edi - cmp eax, MAX_MATCH - jge LenMaximum - -;;; If the length of the match is not longer than the best match we -;;; have so far, then forget it and return to the lookup loop. - - mov edx, [deflatestate] - mov ebx, [bestlen] - cmp eax, ebx - jg LongerMatch - mov esi, [windowbestlen] - mov edi, [edx + dsPrev] - mov ebx, [scanend] - mov edx, [chainlenwmask] - jmp LookupLoop - -;;; s->match_start = cur_match; -;;; best_len = len; -;;; if (len >= nice_match) break; -;;; scan_end = *(ushf*)(scan+best_len-1); - -LongerMatch: mov ebx, [nicematch] - mov [bestlen], eax - mov [edx + dsMatchStart], ecx - cmp eax, ebx - jge LeaveNow - mov esi, [window] - add esi, eax - mov [windowbestlen], esi - movzx ebx, word ptr [edi + eax - 1] - mov edi, [edx + dsPrev] - mov [scanend], ebx - mov edx, [chainlenwmask] - jmp LookupLoop - -;;; Accept the current string, with the maximum possible length. - -LenMaximum: mov edx, [deflatestate] - mov dword ptr [bestlen], MAX_MATCH - mov [edx + dsMatchStart], ecx - -;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len; -;;; return s->lookahead; - -LeaveNow: - mov edx, [deflatestate] - mov ebx, [bestlen] - mov eax, [edx + dsLookahead] - cmp ebx, eax - jg LookaheadRet - mov eax, ebx -LookaheadRet: - -;;; Restore the stack and return from whence we came. - - add esp, LocalVarsSize - pop ebx - pop esi - pop edi - pop ebp - - ret -; please don't remove this string ! -; Your can freely use match686 in any free or commercial app if you don't remove the string in the binary! - db 0dh,0ah,"asm686 with masm, optimised assembly code from Brian Raiter, written 1998",0dh,0ah - - - IFDEF NOUNDERLINE - longest_match endp - ELSE - _longest_match endp - ENDIF - - IFDEF NOUNDERLINE - match_init proc near - ret - match_init endp - ELSE - _match_init proc near - ret - _match_init endp - ENDIF - - -_TEXT ends -end diff --git a/io2d/src/3rd-party/zlib/contrib/masmx86/readme.txt b/io2d/src/3rd-party/zlib/contrib/masmx86/readme.txt deleted file mode 100644 index 3f88886..0000000 --- a/io2d/src/3rd-party/zlib/contrib/masmx86/readme.txt +++ /dev/null @@ -1,27 +0,0 @@ - -Summary -------- -This directory contains ASM implementations of the functions -longest_match() and inflate_fast(). - - -Use instructions ----------------- -Assemble using MASM, and copy the object files into the zlib source -directory, then run the appropriate makefile, as suggested below. You can -donwload MASM from here: - - http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64 - -You can also get objects files here: - - http://www.winimage.com/zLibDll/zlib124_masm_obj.zip - -Build instructions ------------------- -* With Microsoft C and MASM: -nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj" - -* With Borland C and TASM: -make -f win32/Makefile.bor LOCAL_ZLIB="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj" OBJPA="+match686c.obj+match686.obj+inffas32.obj" - diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/Makefile b/io2d/src/3rd-party/zlib/contrib/minizip/Makefile deleted file mode 100644 index 84eaad2..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -CC=cc -CFLAGS=-O -I../.. - -UNZ_OBJS = miniunz.o unzip.o ioapi.o ../../libz.a -ZIP_OBJS = minizip.o zip.o ioapi.o ../../libz.a - -.c.o: - $(CC) -c $(CFLAGS) $*.c - -all: miniunz minizip - -miniunz: $(UNZ_OBJS) - $(CC) $(CFLAGS) -o $@ $(UNZ_OBJS) - -minizip: $(ZIP_OBJS) - $(CC) $(CFLAGS) -o $@ $(ZIP_OBJS) - -test: miniunz minizip - ./minizip test readme.txt - ./miniunz -l test.zip - mv readme.txt readme.old - ./miniunz test.zip - -clean: - /bin/rm -f *.o *~ minizip miniunz diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/Makefile.am b/io2d/src/3rd-party/zlib/contrib/minizip/Makefile.am deleted file mode 100644 index d343011..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/Makefile.am +++ /dev/null @@ -1,45 +0,0 @@ -lib_LTLIBRARIES = libminizip.la - -if COND_DEMOS -bin_PROGRAMS = miniunzip minizip -endif - -zlib_top_srcdir = $(top_srcdir)/../.. -zlib_top_builddir = $(top_builddir)/../.. - -AM_CPPFLAGS = -I$(zlib_top_srcdir) -AM_LDFLAGS = -L$(zlib_top_builddir) - -if WIN32 -iowin32_src = iowin32.c -iowin32_h = iowin32.h -endif - -libminizip_la_SOURCES = \ - ioapi.c \ - mztools.c \ - unzip.c \ - zip.c \ - ${iowin32_src} - -libminizip_la_LDFLAGS = $(AM_LDFLAGS) -version-info 1:0:0 -lz - -minizip_includedir = $(includedir)/minizip -minizip_include_HEADERS = \ - crypt.h \ - ioapi.h \ - mztools.h \ - unzip.h \ - zip.h \ - ${iowin32_h} - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = minizip.pc - -EXTRA_PROGRAMS = miniunzip minizip - -miniunzip_SOURCES = miniunz.c -miniunzip_LDADD = libminizip.la - -minizip_SOURCES = minizip.c -minizip_LDADD = libminizip.la -lz diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/MiniZip64_Changes.txt b/io2d/src/3rd-party/zlib/contrib/minizip/MiniZip64_Changes.txt deleted file mode 100644 index 13a1bd9..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/MiniZip64_Changes.txt +++ /dev/null @@ -1,6 +0,0 @@ - -MiniZip 1.1 was derrived from MiniZip at version 1.01f - -Change in 1.0 (Okt 2009) - - **TODO - Add history** - diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/MiniZip64_info.txt b/io2d/src/3rd-party/zlib/contrib/minizip/MiniZip64_info.txt deleted file mode 100644 index 57d7152..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/MiniZip64_info.txt +++ /dev/null @@ -1,74 +0,0 @@ -MiniZip - Copyright (c) 1998-2010 - by Gilles Vollant - version 1.1 64 bits from Mathias Svensson - -Introduction ---------------------- -MiniZip 1.1 is built from MiniZip 1.0 by Gilles Vollant ( http://www.winimage.com/zLibDll/minizip.html ) - -When adding ZIP64 support into minizip it would result into risk of breaking compatibility with minizip 1.0. -All possible work was done for compatibility. - - -Background ---------------------- -When adding ZIP64 support Mathias Svensson found that Even Rouault have added ZIP64 -support for unzip.c into minizip for a open source project called gdal ( http://www.gdal.org/ ) - -That was used as a starting point. And after that ZIP64 support was added to zip.c -some refactoring and code cleanup was also done. - - -Changed from MiniZip 1.0 to MiniZip 1.1 ---------------------------------------- -* Added ZIP64 support for unzip ( by Even Rouault ) -* Added ZIP64 support for zip ( by Mathias Svensson ) -* Reverted some changed that Even Rouault did. -* Bunch of patches received from Gulles Vollant that he received for MiniZip from various users. -* Added unzip patch for BZIP Compression method (patch create by Daniel Borca) -* Added BZIP Compress method for zip -* Did some refactoring and code cleanup - - -Credits - - Gilles Vollant - Original MiniZip author - Even Rouault - ZIP64 unzip Support - Daniel Borca - BZip Compression method support in unzip - Mathias Svensson - ZIP64 zip support - Mathias Svensson - BZip Compression method support in zip - - Resources - - ZipLayout http://result42.com/projects/ZipFileLayout - Command line tool for Windows that shows the layout and information of the headers in a zip archive. - Used when debugging and validating the creation of zip files using MiniZip64 - - - ZIP App Note http://www.pkware.com/documents/casestudies/APPNOTE.TXT - Zip File specification - - -Notes. - * To be able to use BZip compression method in zip64.c or unzip64.c the BZIP2 lib is needed and HAVE_BZIP2 need to be defined. - -License ----------------------------------------------------------- - Condition of use and distribution are the same than zlib : - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - ----------------------------------------------------------- - diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/configure.ac b/io2d/src/3rd-party/zlib/contrib/minizip/configure.ac deleted file mode 100644 index 827a4e0..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/configure.ac +++ /dev/null @@ -1,32 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_INIT([minizip], [1.2.8], [bugzilla.redhat.com]) -AC_CONFIG_SRCDIR([minizip.c]) -AM_INIT_AUTOMAKE([foreign]) -LT_INIT - -AC_MSG_CHECKING([whether to build example programs]) -AC_ARG_ENABLE([demos], AC_HELP_STRING([--enable-demos], [build example programs])) -AM_CONDITIONAL([COND_DEMOS], [test "$enable_demos" = yes]) -if test "$enable_demos" = yes -then - AC_MSG_RESULT([yes]) -else - AC_MSG_RESULT([no]) -fi - -case "${host}" in - *-mingw* | mingw*) - WIN32="yes" - ;; - *) - ;; -esac -AM_CONDITIONAL([WIN32], [test "${WIN32}" = "yes"]) - - -AC_SUBST([HAVE_UNISTD_H], [0]) -AC_CHECK_HEADER([unistd.h], [HAVE_UNISTD_H=1], []) -AC_CONFIG_FILES([Makefile minizip.pc]) -AC_OUTPUT diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/crypt.h b/io2d/src/3rd-party/zlib/contrib/minizip/crypt.h deleted file mode 100644 index 1e9e820..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/crypt.h +++ /dev/null @@ -1,131 +0,0 @@ -/* crypt.h -- base code for crypt/uncrypt ZIPfile - - - Version 1.01e, February 12th, 2005 - - Copyright (C) 1998-2005 Gilles Vollant - - This code is a modified version of crypting code in Infozip distribution - - The encryption/decryption parts of this source code (as opposed to the - non-echoing password parts) were originally written in Europe. The - whole source package can be freely distributed, including from the USA. - (Prior to January 2000, re-export from the US was a violation of US law.) - - This encryption code is a direct transcription of the algorithm from - Roger Schlafly, described by Phil Katz in the file appnote.txt. This - file (appnote.txt) is distributed with the PKZIP program (even in the - version without encryption capabilities). - - If you don't need crypting in your application, just define symbols - NOCRYPT and NOUNCRYPT. - - This code support the "Traditional PKWARE Encryption". - - The new AES encryption added on Zip format by Winzip (see the page - http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong - Encryption is not supported. -*/ - -#define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8)) - -/*********************************************************************** - * Return the next byte in the pseudo-random sequence - */ -static int decrypt_byte(unsigned long* pkeys, const z_crc_t* pcrc_32_tab) -{ - unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an - * unpredictable manner on 16-bit systems; not a problem - * with any known compiler so far, though */ - - temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2; - return (int)(((temp * (temp ^ 1)) >> 8) & 0xff); -} - -/*********************************************************************** - * Update the encryption keys with the next byte of plain text - */ -static int update_keys(unsigned long* pkeys,const z_crc_t* pcrc_32_tab,int c) -{ - (*(pkeys+0)) = CRC32((*(pkeys+0)), c); - (*(pkeys+1)) += (*(pkeys+0)) & 0xff; - (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1; - { - register int keyshift = (int)((*(pkeys+1)) >> 24); - (*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift); - } - return c; -} - - -/*********************************************************************** - * Initialize the encryption keys and the random header according to - * the given password. - */ -static void init_keys(const char* passwd,unsigned long* pkeys,const z_crc_t* pcrc_32_tab) -{ - *(pkeys+0) = 305419896L; - *(pkeys+1) = 591751049L; - *(pkeys+2) = 878082192L; - while (*passwd != '\0') { - update_keys(pkeys,pcrc_32_tab,(int)*passwd); - passwd++; - } -} - -#define zdecode(pkeys,pcrc_32_tab,c) \ - (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab))) - -#define zencode(pkeys,pcrc_32_tab,c,t) \ - (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c)) - -#ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED - -#define RAND_HEAD_LEN 12 - /* "last resort" source for second part of crypt seed pattern */ -# ifndef ZCR_SEED2 -# define ZCR_SEED2 3141592654UL /* use PI as default pattern */ -# endif - -static int crypthead(const char* passwd, /* password string */ - unsigned char* buf, /* where to write header */ - int bufSize, - unsigned long* pkeys, - const z_crc_t* pcrc_32_tab, - unsigned long crcForCrypting) -{ - int n; /* index in random header */ - int t; /* temporary */ - int c; /* random byte */ - unsigned char header[RAND_HEAD_LEN-2]; /* random header */ - static unsigned calls = 0; /* ensure different random header each time */ - - if (bufSize> 7) & 0xff; - header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t); - } - /* Encrypt random header (last two bytes is high word of crc) */ - init_keys(passwd, pkeys, pcrc_32_tab); - for (n = 0; n < RAND_HEAD_LEN-2; n++) - { - buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t); - } - buf[n++] = (unsigned char)zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 16) & 0xff, t); - buf[n++] = (unsigned char)zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 24) & 0xff, t); - return n; -} - -#endif diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/ioapi.c b/io2d/src/3rd-party/zlib/contrib/minizip/ioapi.c deleted file mode 100644 index 7f5c191..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/ioapi.c +++ /dev/null @@ -1,247 +0,0 @@ -/* ioapi.h -- IO base function header for compress/uncompress .zip - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - -*/ - -#if defined(_WIN32) && (!(defined(_CRT_SECURE_NO_WARNINGS))) - #define _CRT_SECURE_NO_WARNINGS -#endif - -#if defined(__APPLE__) || defined(IOAPI_NO_64) -// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions -#define FOPEN_FUNC(filename, mode) fopen(filename, mode) -#define FTELLO_FUNC(stream) ftello(stream) -#define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin) -#else -#define FOPEN_FUNC(filename, mode) fopen64(filename, mode) -#define FTELLO_FUNC(stream) ftello64(stream) -#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin) -#endif - - -#include "ioapi.h" - -voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode) -{ - if (pfilefunc->zfile_func64.zopen64_file != NULL) - return (*(pfilefunc->zfile_func64.zopen64_file)) (pfilefunc->zfile_func64.opaque,filename,mode); - else - { - return (*(pfilefunc->zopen32_file))(pfilefunc->zfile_func64.opaque,(const char*)filename,mode); - } -} - -long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin) -{ - if (pfilefunc->zfile_func64.zseek64_file != NULL) - return (*(pfilefunc->zfile_func64.zseek64_file)) (pfilefunc->zfile_func64.opaque,filestream,offset,origin); - else - { - uLong offsetTruncated = (uLong)offset; - if (offsetTruncated != offset) - return -1; - else - return (*(pfilefunc->zseek32_file))(pfilefunc->zfile_func64.opaque,filestream,offsetTruncated,origin); - } -} - -ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream) -{ - if (pfilefunc->zfile_func64.zseek64_file != NULL) - return (*(pfilefunc->zfile_func64.ztell64_file)) (pfilefunc->zfile_func64.opaque,filestream); - else - { - uLong tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream); - if ((tell_uLong) == MAXU32) - return (ZPOS64_T)-1; - else - return tell_uLong; - } -} - -void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32) -{ - p_filefunc64_32->zfile_func64.zopen64_file = NULL; - p_filefunc64_32->zopen32_file = p_filefunc32->zopen_file; - p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file; - p_filefunc64_32->zfile_func64.zread_file = p_filefunc32->zread_file; - p_filefunc64_32->zfile_func64.zwrite_file = p_filefunc32->zwrite_file; - p_filefunc64_32->zfile_func64.ztell64_file = NULL; - p_filefunc64_32->zfile_func64.zseek64_file = NULL; - p_filefunc64_32->zfile_func64.zclose_file = p_filefunc32->zclose_file; - p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file; - p_filefunc64_32->zfile_func64.opaque = p_filefunc32->opaque; - p_filefunc64_32->zseek32_file = p_filefunc32->zseek_file; - p_filefunc64_32->ztell32_file = p_filefunc32->ztell_file; -} - - - -static voidpf ZCALLBACK fopen_file_func OF((voidpf opaque, const char* filename, int mode)); -static uLong ZCALLBACK fread_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size)); -static uLong ZCALLBACK fwrite_file_func OF((voidpf opaque, voidpf stream, const void* buf,uLong size)); -static ZPOS64_T ZCALLBACK ftell64_file_func OF((voidpf opaque, voidpf stream)); -static long ZCALLBACK fseek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); -static int ZCALLBACK fclose_file_func OF((voidpf opaque, voidpf stream)); -static int ZCALLBACK ferror_file_func OF((voidpf opaque, voidpf stream)); - -static voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* filename, int mode) -{ - FILE* file = NULL; - const char* mode_fopen = NULL; - if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) - mode_fopen = "rb"; - else - if (mode & ZLIB_FILEFUNC_MODE_EXISTING) - mode_fopen = "r+b"; - else - if (mode & ZLIB_FILEFUNC_MODE_CREATE) - mode_fopen = "wb"; - - if ((filename!=NULL) && (mode_fopen != NULL)) - file = fopen(filename, mode_fopen); - return file; -} - -static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename, int mode) -{ - FILE* file = NULL; - const char* mode_fopen = NULL; - if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) - mode_fopen = "rb"; - else - if (mode & ZLIB_FILEFUNC_MODE_EXISTING) - mode_fopen = "r+b"; - else - if (mode & ZLIB_FILEFUNC_MODE_CREATE) - mode_fopen = "wb"; - - if ((filename!=NULL) && (mode_fopen != NULL)) - file = FOPEN_FUNC((const char*)filename, mode_fopen); - return file; -} - - -static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf, uLong size) -{ - uLong ret; - ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream); - return ret; -} - -static uLong ZCALLBACK fwrite_file_func (voidpf opaque, voidpf stream, const void* buf, uLong size) -{ - uLong ret; - ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream); - return ret; -} - -static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream) -{ - long ret; - ret = ftell((FILE *)stream); - return ret; -} - - -static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream) -{ - ZPOS64_T ret; - ret = FTELLO_FUNC((FILE *)stream); - return ret; -} - -static long ZCALLBACK fseek_file_func (voidpf opaque, voidpf stream, uLong offset, int origin) -{ - int fseek_origin=0; - long ret; - switch (origin) - { - case ZLIB_FILEFUNC_SEEK_CUR : - fseek_origin = SEEK_CUR; - break; - case ZLIB_FILEFUNC_SEEK_END : - fseek_origin = SEEK_END; - break; - case ZLIB_FILEFUNC_SEEK_SET : - fseek_origin = SEEK_SET; - break; - default: return -1; - } - ret = 0; - if (fseek((FILE *)stream, offset, fseek_origin) != 0) - ret = -1; - return ret; -} - -static long ZCALLBACK fseek64_file_func (voidpf opaque, voidpf stream, ZPOS64_T offset, int origin) -{ - int fseek_origin=0; - long ret; - switch (origin) - { - case ZLIB_FILEFUNC_SEEK_CUR : - fseek_origin = SEEK_CUR; - break; - case ZLIB_FILEFUNC_SEEK_END : - fseek_origin = SEEK_END; - break; - case ZLIB_FILEFUNC_SEEK_SET : - fseek_origin = SEEK_SET; - break; - default: return -1; - } - ret = 0; - - if(FSEEKO_FUNC((FILE *)stream, offset, fseek_origin) != 0) - ret = -1; - - return ret; -} - - -static int ZCALLBACK fclose_file_func (voidpf opaque, voidpf stream) -{ - int ret; - ret = fclose((FILE *)stream); - return ret; -} - -static int ZCALLBACK ferror_file_func (voidpf opaque, voidpf stream) -{ - int ret; - ret = ferror((FILE *)stream); - return ret; -} - -void fill_fopen_filefunc (pzlib_filefunc_def) - zlib_filefunc_def* pzlib_filefunc_def; -{ - pzlib_filefunc_def->zopen_file = fopen_file_func; - pzlib_filefunc_def->zread_file = fread_file_func; - pzlib_filefunc_def->zwrite_file = fwrite_file_func; - pzlib_filefunc_def->ztell_file = ftell_file_func; - pzlib_filefunc_def->zseek_file = fseek_file_func; - pzlib_filefunc_def->zclose_file = fclose_file_func; - pzlib_filefunc_def->zerror_file = ferror_file_func; - pzlib_filefunc_def->opaque = NULL; -} - -void fill_fopen64_filefunc (zlib_filefunc64_def* pzlib_filefunc_def) -{ - pzlib_filefunc_def->zopen64_file = fopen64_file_func; - pzlib_filefunc_def->zread_file = fread_file_func; - pzlib_filefunc_def->zwrite_file = fwrite_file_func; - pzlib_filefunc_def->ztell64_file = ftell64_file_func; - pzlib_filefunc_def->zseek64_file = fseek64_file_func; - pzlib_filefunc_def->zclose_file = fclose_file_func; - pzlib_filefunc_def->zerror_file = ferror_file_func; - pzlib_filefunc_def->opaque = NULL; -} diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/ioapi.h b/io2d/src/3rd-party/zlib/contrib/minizip/ioapi.h deleted file mode 100644 index 8dcbdb0..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/ioapi.h +++ /dev/null @@ -1,208 +0,0 @@ -/* ioapi.h -- IO base function header for compress/uncompress .zip - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - - Changes - - Oct-2009 - Defined ZPOS64_T to fpos_t on windows and u_int64_t on linux. (might need to find a better why for this) - Oct-2009 - Change to fseeko64, ftello64 and fopen64 so large files would work on linux. - More if/def section may be needed to support other platforms - Oct-2009 - Defined fxxxx64 calls to normal fopen/ftell/fseek so they would compile on windows. - (but you should use iowin32.c for windows instead) - -*/ - -#ifndef _ZLIBIOAPI64_H -#define _ZLIBIOAPI64_H - -#if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__)) - - // Linux needs this to support file operation on files larger then 4+GB - // But might need better if/def to select just the platforms that needs them. - - #ifndef __USE_FILE_OFFSET64 - #define __USE_FILE_OFFSET64 - #endif - #ifndef __USE_LARGEFILE64 - #define __USE_LARGEFILE64 - #endif - #ifndef _LARGEFILE64_SOURCE - #define _LARGEFILE64_SOURCE - #endif - #ifndef _FILE_OFFSET_BIT - #define _FILE_OFFSET_BIT 64 - #endif - -#endif - -#include -#include -#include "zlib.h" - -#if defined(USE_FILE32API) -#define fopen64 fopen -#define ftello64 ftell -#define fseeko64 fseek -#else -#ifdef __FreeBSD__ -#define fopen64 fopen -#define ftello64 ftello -#define fseeko64 fseeko -#endif -#ifdef _MSC_VER - #define fopen64 fopen - #if (_MSC_VER >= 1400) && (!(defined(NO_MSCVER_FILE64_FUNC))) - #define ftello64 _ftelli64 - #define fseeko64 _fseeki64 - #else // old MSC - #define ftello64 ftell - #define fseeko64 fseek - #endif -#endif -#endif - -/* -#ifndef ZPOS64_T - #ifdef _WIN32 - #define ZPOS64_T fpos_t - #else - #include - #define ZPOS64_T uint64_t - #endif -#endif -*/ - -#ifdef HAVE_MINIZIP64_CONF_H -#include "mz64conf.h" -#endif - -/* a type choosen by DEFINE */ -#ifdef HAVE_64BIT_INT_CUSTOM -typedef 64BIT_INT_CUSTOM_TYPE ZPOS64_T; -#else -#ifdef HAS_STDINT_H -#include "stdint.h" -typedef uint64_t ZPOS64_T; -#else - -/* Maximum unsigned 32-bit value used as placeholder for zip64 */ -#define MAXU32 0xffffffff - -#if defined(_MSC_VER) || defined(__BORLANDC__) -typedef unsigned __int64 ZPOS64_T; -#else -typedef unsigned long long int ZPOS64_T; -#endif -#endif -#endif - - - -#ifdef __cplusplus -extern "C" { -#endif - - -#define ZLIB_FILEFUNC_SEEK_CUR (1) -#define ZLIB_FILEFUNC_SEEK_END (2) -#define ZLIB_FILEFUNC_SEEK_SET (0) - -#define ZLIB_FILEFUNC_MODE_READ (1) -#define ZLIB_FILEFUNC_MODE_WRITE (2) -#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3) - -#define ZLIB_FILEFUNC_MODE_EXISTING (4) -#define ZLIB_FILEFUNC_MODE_CREATE (8) - - -#ifndef ZCALLBACK - #if (defined(WIN32) || defined(_WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK) - #define ZCALLBACK CALLBACK - #else - #define ZCALLBACK - #endif -#endif - - - - -typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode)); -typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size)); -typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); -typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream)); -typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream)); - -typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream)); -typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin)); - - -/* here is the "old" 32 bits structure structure */ -typedef struct zlib_filefunc_def_s -{ - open_file_func zopen_file; - read_file_func zread_file; - write_file_func zwrite_file; - tell_file_func ztell_file; - seek_file_func zseek_file; - close_file_func zclose_file; - testerror_file_func zerror_file; - voidpf opaque; -} zlib_filefunc_def; - -typedef ZPOS64_T (ZCALLBACK *tell64_file_func) OF((voidpf opaque, voidpf stream)); -typedef long (ZCALLBACK *seek64_file_func) OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); -typedef voidpf (ZCALLBACK *open64_file_func) OF((voidpf opaque, const void* filename, int mode)); - -typedef struct zlib_filefunc64_def_s -{ - open64_file_func zopen64_file; - read_file_func zread_file; - write_file_func zwrite_file; - tell64_file_func ztell64_file; - seek64_file_func zseek64_file; - close_file_func zclose_file; - testerror_file_func zerror_file; - voidpf opaque; -} zlib_filefunc64_def; - -void fill_fopen64_filefunc OF((zlib_filefunc64_def* pzlib_filefunc_def)); -void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); - -/* now internal definition, only for zip.c and unzip.h */ -typedef struct zlib_filefunc64_32_def_s -{ - zlib_filefunc64_def zfile_func64; - open_file_func zopen32_file; - tell_file_func ztell32_file; - seek_file_func zseek32_file; -} zlib_filefunc64_32_def; - - -#define ZREAD64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zread_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size)) -#define ZWRITE64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zwrite_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size)) -//#define ZTELL64(filefunc,filestream) ((*((filefunc).ztell64_file)) ((filefunc).opaque,filestream)) -//#define ZSEEK64(filefunc,filestream,pos,mode) ((*((filefunc).zseek64_file)) ((filefunc).opaque,filestream,pos,mode)) -#define ZCLOSE64(filefunc,filestream) ((*((filefunc).zfile_func64.zclose_file)) ((filefunc).zfile_func64.opaque,filestream)) -#define ZERROR64(filefunc,filestream) ((*((filefunc).zfile_func64.zerror_file)) ((filefunc).zfile_func64.opaque,filestream)) - -voidpf call_zopen64 OF((const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)); -long call_zseek64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin)); -ZPOS64_T call_ztell64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream)); - -void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32); - -#define ZOPEN64(filefunc,filename,mode) (call_zopen64((&(filefunc)),(filename),(mode))) -#define ZTELL64(filefunc,filestream) (call_ztell64((&(filefunc)),(filestream))) -#define ZSEEK64(filefunc,filestream,pos,mode) (call_zseek64((&(filefunc)),(filestream),(pos),(mode))) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/iowin32.c b/io2d/src/3rd-party/zlib/contrib/minizip/iowin32.c deleted file mode 100644 index a46d96c..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/iowin32.c +++ /dev/null @@ -1,461 +0,0 @@ -/* iowin32.c -- IO base function header for compress/uncompress .zip - Version 1.1, February 14h, 2010 - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - -*/ - -#include - -#include "zlib.h" -#include "ioapi.h" -#include "iowin32.h" - -#ifndef INVALID_HANDLE_VALUE -#define INVALID_HANDLE_VALUE (0xFFFFFFFF) -#endif - -#ifndef INVALID_SET_FILE_POINTER -#define INVALID_SET_FILE_POINTER ((DWORD)-1) -#endif - - -#if defined(WINAPI_FAMILY_PARTITION) && (!(defined(IOWIN32_USING_WINRT_API))) -#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) -#define IOWIN32_USING_WINRT_API 1 -#endif -#endif - -voidpf ZCALLBACK win32_open_file_func OF((voidpf opaque, const char* filename, int mode)); -uLong ZCALLBACK win32_read_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size)); -uLong ZCALLBACK win32_write_file_func OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); -ZPOS64_T ZCALLBACK win32_tell64_file_func OF((voidpf opaque, voidpf stream)); -long ZCALLBACK win32_seek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)); -int ZCALLBACK win32_close_file_func OF((voidpf opaque, voidpf stream)); -int ZCALLBACK win32_error_file_func OF((voidpf opaque, voidpf stream)); - -typedef struct -{ - HANDLE hf; - int error; -} WIN32FILE_IOWIN; - - -static void win32_translate_open_mode(int mode, - DWORD* lpdwDesiredAccess, - DWORD* lpdwCreationDisposition, - DWORD* lpdwShareMode, - DWORD* lpdwFlagsAndAttributes) -{ - *lpdwDesiredAccess = *lpdwShareMode = *lpdwFlagsAndAttributes = *lpdwCreationDisposition = 0; - - if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) - { - *lpdwDesiredAccess = GENERIC_READ; - *lpdwCreationDisposition = OPEN_EXISTING; - *lpdwShareMode = FILE_SHARE_READ; - } - else if (mode & ZLIB_FILEFUNC_MODE_EXISTING) - { - *lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ; - *lpdwCreationDisposition = OPEN_EXISTING; - } - else if (mode & ZLIB_FILEFUNC_MODE_CREATE) - { - *lpdwDesiredAccess = GENERIC_WRITE | GENERIC_READ; - *lpdwCreationDisposition = CREATE_ALWAYS; - } -} - -static voidpf win32_build_iowin(HANDLE hFile) -{ - voidpf ret=NULL; - - if ((hFile != NULL) && (hFile != INVALID_HANDLE_VALUE)) - { - WIN32FILE_IOWIN w32fiow; - w32fiow.hf = hFile; - w32fiow.error = 0; - ret = malloc(sizeof(WIN32FILE_IOWIN)); - - if (ret==NULL) - CloseHandle(hFile); - else - *((WIN32FILE_IOWIN*)ret) = w32fiow; - } - return ret; -} - -voidpf ZCALLBACK win32_open64_file_func (voidpf opaque,const void* filename,int mode) -{ - const char* mode_fopen = NULL; - DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; - HANDLE hFile = NULL; - - win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes); - -#ifdef IOWIN32_USING_WINRT_API -#ifdef UNICODE - if ((filename!=NULL) && (dwDesiredAccess != 0)) - hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL); -#else - if ((filename!=NULL) && (dwDesiredAccess != 0)) - { - WCHAR filenameW[FILENAME_MAX + 0x200 + 1]; - MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME_MAX + 0x200); - hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL); - } -#endif -#else - if ((filename!=NULL) && (dwDesiredAccess != 0)) - hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); -#endif - - return win32_build_iowin(hFile); -} - - -voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque,const void* filename,int mode) -{ - const char* mode_fopen = NULL; - DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; - HANDLE hFile = NULL; - - win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes); - -#ifdef IOWIN32_USING_WINRT_API - if ((filename!=NULL) && (dwDesiredAccess != 0)) - { - WCHAR filenameW[FILENAME_MAX + 0x200 + 1]; - MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME_MAX + 0x200); - hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL); - } -#else - if ((filename!=NULL) && (dwDesiredAccess != 0)) - hFile = CreateFileA((LPCSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); -#endif - - return win32_build_iowin(hFile); -} - - -voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int mode) -{ - const char* mode_fopen = NULL; - DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; - HANDLE hFile = NULL; - - win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes); - -#ifdef IOWIN32_USING_WINRT_API - if ((filename!=NULL) && (dwDesiredAccess != 0)) - hFile = CreateFile2((LPCWSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition,NULL); -#else - if ((filename!=NULL) && (dwDesiredAccess != 0)) - hFile = CreateFileW((LPCWSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); -#endif - - return win32_build_iowin(hFile); -} - - -voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mode) -{ - const char* mode_fopen = NULL; - DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; - HANDLE hFile = NULL; - - win32_translate_open_mode(mode,&dwDesiredAccess,&dwCreationDisposition,&dwShareMode,&dwFlagsAndAttributes); - -#ifdef IOWIN32_USING_WINRT_API -#ifdef UNICODE - if ((filename!=NULL) && (dwDesiredAccess != 0)) - hFile = CreateFile2((LPCTSTR)filename, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL); -#else - if ((filename!=NULL) && (dwDesiredAccess != 0)) - { - WCHAR filenameW[FILENAME_MAX + 0x200 + 1]; - MultiByteToWideChar(CP_ACP,0,(const char*)filename,-1,filenameW,FILENAME_MAX + 0x200); - hFile = CreateFile2(filenameW, dwDesiredAccess, dwShareMode, dwCreationDisposition, NULL); - } -#endif -#else - if ((filename!=NULL) && (dwDesiredAccess != 0)) - hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, dwFlagsAndAttributes, NULL); -#endif - - return win32_build_iowin(hFile); -} - - -uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void* buf,uLong size) -{ - uLong ret=0; - HANDLE hFile = NULL; - if (stream!=NULL) - hFile = ((WIN32FILE_IOWIN*)stream) -> hf; - - if (hFile != NULL) - { - if (!ReadFile(hFile, buf, size, &ret, NULL)) - { - DWORD dwErr = GetLastError(); - if (dwErr == ERROR_HANDLE_EOF) - dwErr = 0; - ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; - } - } - - return ret; -} - - -uLong ZCALLBACK win32_write_file_func (voidpf opaque,voidpf stream,const void* buf,uLong size) -{ - uLong ret=0; - HANDLE hFile = NULL; - if (stream!=NULL) - hFile = ((WIN32FILE_IOWIN*)stream) -> hf; - - if (hFile != NULL) - { - if (!WriteFile(hFile, buf, size, &ret, NULL)) - { - DWORD dwErr = GetLastError(); - if (dwErr == ERROR_HANDLE_EOF) - dwErr = 0; - ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; - } - } - - return ret; -} - -static BOOL MySetFilePointerEx(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *newPos, DWORD dwMoveMethod) -{ -#ifdef IOWIN32_USING_WINRT_API - return SetFilePointerEx(hFile, pos, newPos, dwMoveMethod); -#else - LONG lHigh = pos.HighPart; - DWORD dwNewPos = SetFilePointer(hFile, pos.LowPart, &lHigh, FILE_CURRENT); - BOOL fOk = TRUE; - if (dwNewPos == 0xFFFFFFFF) - if (GetLastError() != NO_ERROR) - fOk = FALSE; - if ((newPos != NULL) && (fOk)) - { - newPos->LowPart = dwNewPos; - newPos->HighPart = lHigh; - } - return fOk; -#endif -} - -long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream) -{ - long ret=-1; - HANDLE hFile = NULL; - if (stream!=NULL) - hFile = ((WIN32FILE_IOWIN*)stream) -> hf; - if (hFile != NULL) - { - LARGE_INTEGER pos; - pos.QuadPart = 0; - - if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT)) - { - DWORD dwErr = GetLastError(); - ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; - ret = -1; - } - else - ret=(long)pos.LowPart; - } - return ret; -} - -ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream) -{ - ZPOS64_T ret= (ZPOS64_T)-1; - HANDLE hFile = NULL; - if (stream!=NULL) - hFile = ((WIN32FILE_IOWIN*)stream)->hf; - - if (hFile) - { - LARGE_INTEGER pos; - pos.QuadPart = 0; - - if (!MySetFilePointerEx(hFile, pos, &pos, FILE_CURRENT)) - { - DWORD dwErr = GetLastError(); - ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; - ret = (ZPOS64_T)-1; - } - else - ret=pos.QuadPart; - } - return ret; -} - - -long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,int origin) -{ - DWORD dwMoveMethod=0xFFFFFFFF; - HANDLE hFile = NULL; - - long ret=-1; - if (stream!=NULL) - hFile = ((WIN32FILE_IOWIN*)stream) -> hf; - switch (origin) - { - case ZLIB_FILEFUNC_SEEK_CUR : - dwMoveMethod = FILE_CURRENT; - break; - case ZLIB_FILEFUNC_SEEK_END : - dwMoveMethod = FILE_END; - break; - case ZLIB_FILEFUNC_SEEK_SET : - dwMoveMethod = FILE_BEGIN; - break; - default: return -1; - } - - if (hFile != NULL) - { - LARGE_INTEGER pos; - pos.QuadPart = offset; - if (!MySetFilePointerEx(hFile, pos, NULL, dwMoveMethod)) - { - DWORD dwErr = GetLastError(); - ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; - ret = -1; - } - else - ret=0; - } - return ret; -} - -long ZCALLBACK win32_seek64_file_func (voidpf opaque, voidpf stream,ZPOS64_T offset,int origin) -{ - DWORD dwMoveMethod=0xFFFFFFFF; - HANDLE hFile = NULL; - long ret=-1; - - if (stream!=NULL) - hFile = ((WIN32FILE_IOWIN*)stream)->hf; - - switch (origin) - { - case ZLIB_FILEFUNC_SEEK_CUR : - dwMoveMethod = FILE_CURRENT; - break; - case ZLIB_FILEFUNC_SEEK_END : - dwMoveMethod = FILE_END; - break; - case ZLIB_FILEFUNC_SEEK_SET : - dwMoveMethod = FILE_BEGIN; - break; - default: return -1; - } - - if (hFile) - { - LARGE_INTEGER pos; - pos.QuadPart = offset; - if (!MySetFilePointerEx(hFile, pos, NULL, FILE_CURRENT)) - { - DWORD dwErr = GetLastError(); - ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; - ret = -1; - } - else - ret=0; - } - return ret; -} - -int ZCALLBACK win32_close_file_func (voidpf opaque, voidpf stream) -{ - int ret=-1; - - if (stream!=NULL) - { - HANDLE hFile; - hFile = ((WIN32FILE_IOWIN*)stream) -> hf; - if (hFile != NULL) - { - CloseHandle(hFile); - ret=0; - } - free(stream); - } - return ret; -} - -int ZCALLBACK win32_error_file_func (voidpf opaque,voidpf stream) -{ - int ret=-1; - if (stream!=NULL) - { - ret = ((WIN32FILE_IOWIN*)stream) -> error; - } - return ret; -} - -void fill_win32_filefunc (zlib_filefunc_def* pzlib_filefunc_def) -{ - pzlib_filefunc_def->zopen_file = win32_open_file_func; - pzlib_filefunc_def->zread_file = win32_read_file_func; - pzlib_filefunc_def->zwrite_file = win32_write_file_func; - pzlib_filefunc_def->ztell_file = win32_tell_file_func; - pzlib_filefunc_def->zseek_file = win32_seek_file_func; - pzlib_filefunc_def->zclose_file = win32_close_file_func; - pzlib_filefunc_def->zerror_file = win32_error_file_func; - pzlib_filefunc_def->opaque = NULL; -} - -void fill_win32_filefunc64(zlib_filefunc64_def* pzlib_filefunc_def) -{ - pzlib_filefunc_def->zopen64_file = win32_open64_file_func; - pzlib_filefunc_def->zread_file = win32_read_file_func; - pzlib_filefunc_def->zwrite_file = win32_write_file_func; - pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; - pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; - pzlib_filefunc_def->zclose_file = win32_close_file_func; - pzlib_filefunc_def->zerror_file = win32_error_file_func; - pzlib_filefunc_def->opaque = NULL; -} - - -void fill_win32_filefunc64A(zlib_filefunc64_def* pzlib_filefunc_def) -{ - pzlib_filefunc_def->zopen64_file = win32_open64_file_funcA; - pzlib_filefunc_def->zread_file = win32_read_file_func; - pzlib_filefunc_def->zwrite_file = win32_write_file_func; - pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; - pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; - pzlib_filefunc_def->zclose_file = win32_close_file_func; - pzlib_filefunc_def->zerror_file = win32_error_file_func; - pzlib_filefunc_def->opaque = NULL; -} - - -void fill_win32_filefunc64W(zlib_filefunc64_def* pzlib_filefunc_def) -{ - pzlib_filefunc_def->zopen64_file = win32_open64_file_funcW; - pzlib_filefunc_def->zread_file = win32_read_file_func; - pzlib_filefunc_def->zwrite_file = win32_write_file_func; - pzlib_filefunc_def->ztell64_file = win32_tell64_file_func; - pzlib_filefunc_def->zseek64_file = win32_seek64_file_func; - pzlib_filefunc_def->zclose_file = win32_close_file_func; - pzlib_filefunc_def->zerror_file = win32_error_file_func; - pzlib_filefunc_def->opaque = NULL; -} diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/iowin32.h b/io2d/src/3rd-party/zlib/contrib/minizip/iowin32.h deleted file mode 100644 index 0ca0969..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/iowin32.h +++ /dev/null @@ -1,28 +0,0 @@ -/* iowin32.h -- IO base function header for compress/uncompress .zip - Version 1.1, February 14h, 2010 - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - -*/ - -#include - - -#ifdef __cplusplus -extern "C" { -#endif - -void fill_win32_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); -void fill_win32_filefunc64 OF((zlib_filefunc64_def* pzlib_filefunc_def)); -void fill_win32_filefunc64A OF((zlib_filefunc64_def* pzlib_filefunc_def)); -void fill_win32_filefunc64W OF((zlib_filefunc64_def* pzlib_filefunc_def)); - -#ifdef __cplusplus -} -#endif diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/make_vms.com b/io2d/src/3rd-party/zlib/contrib/minizip/make_vms.com deleted file mode 100644 index 9ac13a9..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/make_vms.com +++ /dev/null @@ -1,25 +0,0 @@ -$ if f$search("ioapi.h_orig") .eqs. "" then copy ioapi.h ioapi.h_orig -$ open/write zdef vmsdefs.h -$ copy sys$input: zdef -$ deck -#define unix -#define fill_zlib_filefunc64_32_def_from_filefunc32 fillzffunc64from -#define Write_Zip64EndOfCentralDirectoryLocator Write_Zip64EoDLocator -#define Write_Zip64EndOfCentralDirectoryRecord Write_Zip64EoDRecord -#define Write_EndOfCentralDirectoryRecord Write_EoDRecord -$ eod -$ close zdef -$ copy vmsdefs.h,ioapi.h_orig ioapi.h -$ cc/include=[--]/prefix=all ioapi.c -$ cc/include=[--]/prefix=all miniunz.c -$ cc/include=[--]/prefix=all unzip.c -$ cc/include=[--]/prefix=all minizip.c -$ cc/include=[--]/prefix=all zip.c -$ link miniunz,unzip,ioapi,[--]libz.olb/lib -$ link minizip,zip,ioapi,[--]libz.olb/lib -$ mcr []minizip test minizip_info.txt -$ mcr []miniunz -l test.zip -$ rename minizip_info.txt; minizip_info.txt_old -$ mcr []miniunz test.zip -$ delete test.zip;* -$exit diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/miniunz.c b/io2d/src/3rd-party/zlib/contrib/minizip/miniunz.c deleted file mode 100644 index 3d65401..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/miniunz.c +++ /dev/null @@ -1,660 +0,0 @@ -/* - miniunz.c - Version 1.1, February 14h, 2010 - sample part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications of Unzip for Zip64 - Copyright (C) 2007-2008 Even Rouault - - Modifications for Zip64 support on both zip and unzip - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) -*/ - -#if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__)) - #ifndef __USE_FILE_OFFSET64 - #define __USE_FILE_OFFSET64 - #endif - #ifndef __USE_LARGEFILE64 - #define __USE_LARGEFILE64 - #endif - #ifndef _LARGEFILE64_SOURCE - #define _LARGEFILE64_SOURCE - #endif - #ifndef _FILE_OFFSET_BIT - #define _FILE_OFFSET_BIT 64 - #endif -#endif - -#ifdef __APPLE__ -// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions -#define FOPEN_FUNC(filename, mode) fopen(filename, mode) -#define FTELLO_FUNC(stream) ftello(stream) -#define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin) -#else -#define FOPEN_FUNC(filename, mode) fopen64(filename, mode) -#define FTELLO_FUNC(stream) ftello64(stream) -#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin) -#endif - - -#include -#include -#include -#include -#include -#include - -#ifdef _WIN32 -# include -# include -#else -# include -# include -#endif - - -#include "unzip.h" - -#define CASESENSITIVITY (0) -#define WRITEBUFFERSIZE (8192) -#define MAXFILENAME (256) - -#ifdef _WIN32 -#define USEWIN32IOAPI -#include "iowin32.h" -#endif -/* - mini unzip, demo of unzip package - - usage : - Usage : miniunz [-exvlo] file.zip [file_to_extract] [-d extractdir] - - list the file in the zipfile, and print the content of FILE_ID.ZIP or README.TXT - if it exists -*/ - - -/* change_file_date : change the date/time of a file - filename : the filename of the file where date/time must be modified - dosdate : the new date at the MSDos format (4 bytes) - tmu_date : the SAME new date at the tm_unz format */ -void change_file_date(filename,dosdate,tmu_date) - const char *filename; - uLong dosdate; - tm_unz tmu_date; -{ -#ifdef _WIN32 - HANDLE hFile; - FILETIME ftm,ftLocal,ftCreate,ftLastAcc,ftLastWrite; - - hFile = CreateFileA(filename,GENERIC_READ | GENERIC_WRITE, - 0,NULL,OPEN_EXISTING,0,NULL); - GetFileTime(hFile,&ftCreate,&ftLastAcc,&ftLastWrite); - DosDateTimeToFileTime((WORD)(dosdate>>16),(WORD)dosdate,&ftLocal); - LocalFileTimeToFileTime(&ftLocal,&ftm); - SetFileTime(hFile,&ftm,&ftLastAcc,&ftm); - CloseHandle(hFile); -#else -#ifdef unix || __APPLE__ - struct utimbuf ut; - struct tm newdate; - newdate.tm_sec = tmu_date.tm_sec; - newdate.tm_min=tmu_date.tm_min; - newdate.tm_hour=tmu_date.tm_hour; - newdate.tm_mday=tmu_date.tm_mday; - newdate.tm_mon=tmu_date.tm_mon; - if (tmu_date.tm_year > 1900) - newdate.tm_year=tmu_date.tm_year - 1900; - else - newdate.tm_year=tmu_date.tm_year ; - newdate.tm_isdst=-1; - - ut.actime=ut.modtime=mktime(&newdate); - utime(filename,&ut); -#endif -#endif -} - - -/* mymkdir and change_file_date are not 100 % portable - As I don't know well Unix, I wait feedback for the unix portion */ - -int mymkdir(dirname) - const char* dirname; -{ - int ret=0; -#ifdef _WIN32 - ret = _mkdir(dirname); -#elif unix - ret = mkdir (dirname,0775); -#elif __APPLE__ - ret = mkdir (dirname,0775); -#endif - return ret; -} - -int makedir (newdir) - char *newdir; -{ - char *buffer ; - char *p; - int len = (int)strlen(newdir); - - if (len <= 0) - return 0; - - buffer = (char*)malloc(len+1); - if (buffer==NULL) - { - printf("Error allocating memory\n"); - return UNZ_INTERNALERROR; - } - strcpy(buffer,newdir); - - if (buffer[len-1] == '/') { - buffer[len-1] = '\0'; - } - if (mymkdir(buffer) == 0) - { - free(buffer); - return 1; - } - - p = buffer+1; - while (1) - { - char hold; - - while(*p && *p != '\\' && *p != '/') - p++; - hold = *p; - *p = 0; - if ((mymkdir(buffer) == -1) && (errno == ENOENT)) - { - printf("couldn't create directory %s\n",buffer); - free(buffer); - return 0; - } - if (hold == 0) - break; - *p++ = hold; - } - free(buffer); - return 1; -} - -void do_banner() -{ - printf("MiniUnz 1.01b, demo of zLib + Unz package written by Gilles Vollant\n"); - printf("more info at http://www.winimage.com/zLibDll/unzip.html\n\n"); -} - -void do_help() -{ - printf("Usage : miniunz [-e] [-x] [-v] [-l] [-o] [-p password] file.zip [file_to_extr.] [-d extractdir]\n\n" \ - " -e Extract without pathname (junk paths)\n" \ - " -x Extract with pathname\n" \ - " -v list files\n" \ - " -l list files\n" \ - " -d directory to extract into\n" \ - " -o overwrite files without prompting\n" \ - " -p extract crypted file using password\n\n"); -} - -void Display64BitsSize(ZPOS64_T n, int size_char) -{ - /* to avoid compatibility problem , we do here the conversion */ - char number[21]; - int offset=19; - int pos_string = 19; - number[20]=0; - for (;;) { - number[offset]=(char)((n%10)+'0'); - if (number[offset] != '0') - pos_string=offset; - n/=10; - if (offset==0) - break; - offset--; - } - { - int size_display_string = 19-pos_string; - while (size_char > size_display_string) - { - size_char--; - printf(" "); - } - } - - printf("%s",&number[pos_string]); -} - -int do_list(uf) - unzFile uf; -{ - uLong i; - unz_global_info64 gi; - int err; - - err = unzGetGlobalInfo64(uf,&gi); - if (err!=UNZ_OK) - printf("error %d with zipfile in unzGetGlobalInfo \n",err); - printf(" Length Method Size Ratio Date Time CRC-32 Name\n"); - printf(" ------ ------ ---- ----- ---- ---- ------ ----\n"); - for (i=0;i0) - ratio = (uLong)((file_info.compressed_size*100)/file_info.uncompressed_size); - - /* display a '*' if the file is crypted */ - if ((file_info.flag & 1) != 0) - charCrypt='*'; - - if (file_info.compression_method==0) - string_method="Stored"; - else - if (file_info.compression_method==Z_DEFLATED) - { - uInt iLevel=(uInt)((file_info.flag & 0x6)/2); - if (iLevel==0) - string_method="Defl:N"; - else if (iLevel==1) - string_method="Defl:X"; - else if ((iLevel==2) || (iLevel==3)) - string_method="Defl:F"; /* 2:fast , 3 : extra fast*/ - } - else - if (file_info.compression_method==Z_BZIP2ED) - { - string_method="BZip2 "; - } - else - string_method="Unkn. "; - - Display64BitsSize(file_info.uncompressed_size,7); - printf(" %6s%c",string_method,charCrypt); - Display64BitsSize(file_info.compressed_size,7); - printf(" %3lu%% %2.2lu-%2.2lu-%2.2lu %2.2lu:%2.2lu %8.8lx %s\n", - ratio, - (uLong)file_info.tmu_date.tm_mon + 1, - (uLong)file_info.tmu_date.tm_mday, - (uLong)file_info.tmu_date.tm_year % 100, - (uLong)file_info.tmu_date.tm_hour,(uLong)file_info.tmu_date.tm_min, - (uLong)file_info.crc,filename_inzip); - if ((i+1)='a') && (rep<='z')) - rep -= 0x20; - } - while ((rep!='Y') && (rep!='N') && (rep!='A')); - } - - if (rep == 'N') - skip = 1; - - if (rep == 'A') - *popt_overwrite=1; - } - - if ((skip==0) && (err==UNZ_OK)) - { - fout=FOPEN_FUNC(write_filename,"wb"); - /* some zipfile don't contain directory alone before file */ - if ((fout==NULL) && ((*popt_extract_without_path)==0) && - (filename_withoutpath!=(char*)filename_inzip)) - { - char c=*(filename_withoutpath-1); - *(filename_withoutpath-1)='\0'; - makedir(write_filename); - *(filename_withoutpath-1)=c; - fout=FOPEN_FUNC(write_filename,"wb"); - } - - if (fout==NULL) - { - printf("error opening %s\n",write_filename); - } - } - - if (fout!=NULL) - { - printf(" extracting: %s\n",write_filename); - - do - { - err = unzReadCurrentFile(uf,buf,size_buf); - if (err<0) - { - printf("error %d with zipfile in unzReadCurrentFile\n",err); - break; - } - if (err>0) - if (fwrite(buf,err,1,fout)!=1) - { - printf("error in writing extracted file\n"); - err=UNZ_ERRNO; - break; - } - } - while (err>0); - if (fout) - fclose(fout); - - if (err==0) - change_file_date(write_filename,file_info.dosDate, - file_info.tmu_date); - } - - if (err==UNZ_OK) - { - err = unzCloseCurrentFile (uf); - if (err!=UNZ_OK) - { - printf("error %d with zipfile in unzCloseCurrentFile\n",err); - } - } - else - unzCloseCurrentFile(uf); /* don't lose the error */ - } - - free(buf); - return err; -} - - -int do_extract(uf,opt_extract_without_path,opt_overwrite,password) - unzFile uf; - int opt_extract_without_path; - int opt_overwrite; - const char* password; -{ - uLong i; - unz_global_info64 gi; - int err; - FILE* fout=NULL; - - err = unzGetGlobalInfo64(uf,&gi); - if (err!=UNZ_OK) - printf("error %d with zipfile in unzGetGlobalInfo \n",err); - - for (i=0;i insert n+1 empty lines -.\" for manpage-specific macros, see man(7) -.SH NAME -miniunzip - uncompress and examine ZIP archives -.SH SYNOPSIS -.B miniunzip -.RI [ -exvlo ] -zipfile [ files_to_extract ] [-d tempdir] -.SH DESCRIPTION -.B minizip -is a simple tool which allows the extraction of compressed file -archives in the ZIP format used by the MS-DOS utility PKZIP. It was -written as a demonstration of the -.IR zlib (3) -library and therefore lack many of the features of the -.IR unzip (1) -program. -.SH OPTIONS -A number of options are supported. With the exception of -.BI \-d\ tempdir -these must be supplied before any -other arguments and are: -.TP -.BI \-l\ ,\ \-\-v -List the files in the archive without extracting them. -.TP -.B \-o -Overwrite files without prompting for confirmation. -.TP -.B \-x -Extract files (default). -.PP -The -.I zipfile -argument is the name of the archive to process. The next argument can be used -to specify a single file to extract from the archive. - -Lastly, the following option can be specified at the end of the command-line: -.TP -.BI \-d\ tempdir -Extract the archive in the directory -.I tempdir -rather than the current directory. -.SH SEE ALSO -.BR minizip (1), -.BR zlib (3), -.BR unzip (1). -.SH AUTHOR -This program was written by Gilles Vollant. This manual page was -written by Mark Brown . The -d tempdir option -was added by Dirk Eddelbuettel . diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/minizip.1 b/io2d/src/3rd-party/zlib/contrib/minizip/minizip.1 deleted file mode 100644 index 1154484..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/minizip.1 +++ /dev/null @@ -1,46 +0,0 @@ -.\" Hey, EMACS: -*- nroff -*- -.TH minizip 1 "May 2, 2001" -.\" Please adjust this date whenever revising the manpage. -.\" -.\" Some roff macros, for reference: -.\" .nh disable hyphenation -.\" .hy enable hyphenation -.\" .ad l left justify -.\" .ad b justify to both left and right margins -.\" .nf disable filling -.\" .fi enable filling -.\" .br insert line break -.\" .sp insert n+1 empty lines -.\" for manpage-specific macros, see man(7) -.SH NAME -minizip - create ZIP archives -.SH SYNOPSIS -.B minizip -.RI [ -o ] -zipfile [ " files" ... ] -.SH DESCRIPTION -.B minizip -is a simple tool which allows the creation of compressed file archives -in the ZIP format used by the MS-DOS utility PKZIP. It was written as -a demonstration of the -.IR zlib (3) -library and therefore lack many of the features of the -.IR zip (1) -program. -.SH OPTIONS -The first argument supplied is the name of the ZIP archive to create or -.RI -o -in which case it is ignored and the second argument treated as the -name of the ZIP file. If the ZIP file already exists it will be -overwritten. -.PP -Subsequent arguments specify a list of files to place in the ZIP -archive. If none are specified then an empty archive will be created. -.SH SEE ALSO -.BR miniunzip (1), -.BR zlib (3), -.BR zip (1). -.SH AUTHOR -This program was written by Gilles Vollant. This manual page was -written by Mark Brown . - diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/minizip.c b/io2d/src/3rd-party/zlib/contrib/minizip/minizip.c deleted file mode 100644 index 4288962..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/minizip.c +++ /dev/null @@ -1,520 +0,0 @@ -/* - minizip.c - Version 1.1, February 14h, 2010 - sample part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications of Unzip for Zip64 - Copyright (C) 2007-2008 Even Rouault - - Modifications for Zip64 support on both zip and unzip - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) -*/ - - -#if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__)) - #ifndef __USE_FILE_OFFSET64 - #define __USE_FILE_OFFSET64 - #endif - #ifndef __USE_LARGEFILE64 - #define __USE_LARGEFILE64 - #endif - #ifndef _LARGEFILE64_SOURCE - #define _LARGEFILE64_SOURCE - #endif - #ifndef _FILE_OFFSET_BIT - #define _FILE_OFFSET_BIT 64 - #endif -#endif - -#ifdef __APPLE__ -// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions -#define FOPEN_FUNC(filename, mode) fopen(filename, mode) -#define FTELLO_FUNC(stream) ftello(stream) -#define FSEEKO_FUNC(stream, offset, origin) fseeko(stream, offset, origin) -#else -#define FOPEN_FUNC(filename, mode) fopen64(filename, mode) -#define FTELLO_FUNC(stream) ftello64(stream) -#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin) -#endif - - - -#include -#include -#include -#include -#include -#include - -#ifdef _WIN32 -# include -# include -#else -# include -# include -# include -# include -#endif - -#include "zip.h" - -#ifdef _WIN32 - #define USEWIN32IOAPI - #include "iowin32.h" -#endif - - - -#define WRITEBUFFERSIZE (16384) -#define MAXFILENAME (256) - -#ifdef _WIN32 -uLong filetime(f, tmzip, dt) - char *f; /* name of file to get info on */ - tm_zip *tmzip; /* return value: access, modific. and creation times */ - uLong *dt; /* dostime */ -{ - int ret = 0; - { - FILETIME ftLocal; - HANDLE hFind; - WIN32_FIND_DATAA ff32; - - hFind = FindFirstFileA(f,&ff32); - if (hFind != INVALID_HANDLE_VALUE) - { - FileTimeToLocalFileTime(&(ff32.ftLastWriteTime),&ftLocal); - FileTimeToDosDateTime(&ftLocal,((LPWORD)dt)+1,((LPWORD)dt)+0); - FindClose(hFind); - ret = 1; - } - } - return ret; -} -#else -#ifdef unix || __APPLE__ -uLong filetime(f, tmzip, dt) - char *f; /* name of file to get info on */ - tm_zip *tmzip; /* return value: access, modific. and creation times */ - uLong *dt; /* dostime */ -{ - int ret=0; - struct stat s; /* results of stat() */ - struct tm* filedate; - time_t tm_t=0; - - if (strcmp(f,"-")!=0) - { - char name[MAXFILENAME+1]; - int len = strlen(f); - if (len > MAXFILENAME) - len = MAXFILENAME; - - strncpy(name, f,MAXFILENAME-1); - /* strncpy doesnt append the trailing NULL, of the string is too long. */ - name[ MAXFILENAME ] = '\0'; - - if (name[len - 1] == '/') - name[len - 1] = '\0'; - /* not all systems allow stat'ing a file with / appended */ - if (stat(name,&s)==0) - { - tm_t = s.st_mtime; - ret = 1; - } - } - filedate = localtime(&tm_t); - - tmzip->tm_sec = filedate->tm_sec; - tmzip->tm_min = filedate->tm_min; - tmzip->tm_hour = filedate->tm_hour; - tmzip->tm_mday = filedate->tm_mday; - tmzip->tm_mon = filedate->tm_mon ; - tmzip->tm_year = filedate->tm_year; - - return ret; -} -#else -uLong filetime(f, tmzip, dt) - char *f; /* name of file to get info on */ - tm_zip *tmzip; /* return value: access, modific. and creation times */ - uLong *dt; /* dostime */ -{ - return 0; -} -#endif -#endif - - - - -int check_exist_file(filename) - const char* filename; -{ - FILE* ftestexist; - int ret = 1; - ftestexist = FOPEN_FUNC(filename,"rb"); - if (ftestexist==NULL) - ret = 0; - else - fclose(ftestexist); - return ret; -} - -void do_banner() -{ - printf("MiniZip 1.1, demo of zLib + MiniZip64 package, written by Gilles Vollant\n"); - printf("more info on MiniZip at http://www.winimage.com/zLibDll/minizip.html\n\n"); -} - -void do_help() -{ - printf("Usage : minizip [-o] [-a] [-0 to -9] [-p password] [-j] file.zip [files_to_add]\n\n" \ - " -o Overwrite existing file.zip\n" \ - " -a Append to existing file.zip\n" \ - " -0 Store only\n" \ - " -1 Compress faster\n" \ - " -9 Compress better\n\n" \ - " -j exclude path. store only the file name.\n\n"); -} - -/* calculate the CRC32 of a file, - because to encrypt a file, we need known the CRC32 of the file before */ -int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigned long* result_crc) -{ - unsigned long calculate_crc=0; - int err=ZIP_OK; - FILE * fin = FOPEN_FUNC(filenameinzip,"rb"); - - unsigned long size_read = 0; - unsigned long total_read = 0; - if (fin==NULL) - { - err = ZIP_ERRNO; - } - - if (err == ZIP_OK) - do - { - err = ZIP_OK; - size_read = (int)fread(buf,1,size_buf,fin); - if (size_read < size_buf) - if (feof(fin)==0) - { - printf("error in reading %s\n",filenameinzip); - err = ZIP_ERRNO; - } - - if (size_read>0) - calculate_crc = crc32(calculate_crc,buf,size_read); - total_read += size_read; - - } while ((err == ZIP_OK) && (size_read>0)); - - if (fin) - fclose(fin); - - *result_crc=calculate_crc; - printf("file %s crc %lx\n", filenameinzip, calculate_crc); - return err; -} - -int isLargeFile(const char* filename) -{ - int largeFile = 0; - ZPOS64_T pos = 0; - FILE* pFile = FOPEN_FUNC(filename, "rb"); - - if(pFile != NULL) - { - int n = FSEEKO_FUNC(pFile, 0, SEEK_END); - pos = FTELLO_FUNC(pFile); - - printf("File : %s is %lld bytes\n", filename, pos); - - if(pos >= 0xffffffff) - largeFile = 1; - - fclose(pFile); - } - - return largeFile; -} - -int main(argc,argv) - int argc; - char *argv[]; -{ - int i; - int opt_overwrite=0; - int opt_compress_level=Z_DEFAULT_COMPRESSION; - int opt_exclude_path=0; - int zipfilenamearg = 0; - char filename_try[MAXFILENAME+16]; - int zipok; - int err=0; - int size_buf=0; - void* buf=NULL; - const char* password=NULL; - - - do_banner(); - if (argc==1) - { - do_help(); - return 0; - } - else - { - for (i=1;i='0') && (c<='9')) - opt_compress_level = c-'0'; - if ((c=='j') || (c=='J')) - opt_exclude_path = 1; - - if (((c=='p') || (c=='P')) && (i+1='a') && (rep<='z')) - rep -= 0x20; - } - while ((rep!='Y') && (rep!='N') && (rep!='A')); - if (rep=='N') - zipok = 0; - if (rep=='A') - opt_overwrite = 2; - } - } - - if (zipok==1) - { - zipFile zf; - int errclose; -# ifdef USEWIN32IOAPI - zlib_filefunc64_def ffunc; - fill_win32_filefunc64A(&ffunc); - zf = zipOpen2_64(filename_try,(opt_overwrite==2) ? 2 : 0,NULL,&ffunc); -# else - zf = zipOpen64(filename_try,(opt_overwrite==2) ? 2 : 0); -# endif - - if (zf == NULL) - { - printf("error opening %s\n",filename_try); - err= ZIP_ERRNO; - } - else - printf("creating %s\n",filename_try); - - for (i=zipfilenamearg+1;(i='0') || (argv[i][1]<='9'))) && - (strlen(argv[i]) == 2))) - { - FILE * fin; - int size_read; - const char* filenameinzip = argv[i]; - const char *savefilenameinzip; - zip_fileinfo zi; - unsigned long crcFile=0; - int zip64 = 0; - - zi.tmz_date.tm_sec = zi.tmz_date.tm_min = zi.tmz_date.tm_hour = - zi.tmz_date.tm_mday = zi.tmz_date.tm_mon = zi.tmz_date.tm_year = 0; - zi.dosDate = 0; - zi.internal_fa = 0; - zi.external_fa = 0; - filetime(filenameinzip,&zi.tmz_date,&zi.dosDate); - -/* - err = zipOpenNewFileInZip(zf,filenameinzip,&zi, - NULL,0,NULL,0,NULL / * comment * /, - (opt_compress_level != 0) ? Z_DEFLATED : 0, - opt_compress_level); -*/ - if ((password != NULL) && (err==ZIP_OK)) - err = getFileCrc(filenameinzip,buf,size_buf,&crcFile); - - zip64 = isLargeFile(filenameinzip); - - /* The path name saved, should not include a leading slash. */ - /*if it did, windows/xp and dynazip couldn't read the zip file. */ - savefilenameinzip = filenameinzip; - while( savefilenameinzip[0] == '\\' || savefilenameinzip[0] == '/' ) - { - savefilenameinzip++; - } - - /*should the zip file contain any path at all?*/ - if( opt_exclude_path ) - { - const char *tmpptr; - const char *lastslash = 0; - for( tmpptr = savefilenameinzip; *tmpptr; tmpptr++) - { - if( *tmpptr == '\\' || *tmpptr == '/') - { - lastslash = tmpptr; - } - } - if( lastslash != NULL ) - { - savefilenameinzip = lastslash+1; // base filename follows last slash. - } - } - - /**/ - err = zipOpenNewFileInZip3_64(zf,savefilenameinzip,&zi, - NULL,0,NULL,0,NULL /* comment*/, - (opt_compress_level != 0) ? Z_DEFLATED : 0, - opt_compress_level,0, - /* -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, */ - -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, - password,crcFile, zip64); - - if (err != ZIP_OK) - printf("error in opening %s in zipfile\n",filenameinzip); - else - { - fin = FOPEN_FUNC(filenameinzip,"rb"); - if (fin==NULL) - { - err=ZIP_ERRNO; - printf("error in opening %s for reading\n",filenameinzip); - } - } - - if (err == ZIP_OK) - do - { - err = ZIP_OK; - size_read = (int)fread(buf,1,size_buf,fin); - if (size_read < size_buf) - if (feof(fin)==0) - { - printf("error in reading %s\n",filenameinzip); - err = ZIP_ERRNO; - } - - if (size_read>0) - { - err = zipWriteInFileInZip (zf,buf,size_read); - if (err<0) - { - printf("error in writing %s in the zipfile\n", - filenameinzip); - } - - } - } while ((err == ZIP_OK) && (size_read>0)); - - if (fin) - fclose(fin); - - if (err<0) - err=ZIP_ERRNO; - else - { - err = zipCloseFileInZip(zf); - if (err!=ZIP_OK) - printf("error in closing %s in the zipfile\n", - filenameinzip); - } - } - } - errclose = zipClose(zf,NULL); - if (errclose != ZIP_OK) - printf("error in closing %s\n",filename_try); - } - else - { - do_help(); - } - - free(buf); - return 0; -} diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/minizip.pc.in b/io2d/src/3rd-party/zlib/contrib/minizip/minizip.pc.in deleted file mode 100644 index 69b5b7f..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/minizip.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@/minizip - -Name: minizip -Description: Minizip zip file manipulation library -Requires: -Version: @PACKAGE_VERSION@ -Libs: -L${libdir} -lminizip -Libs.private: -lz -Cflags: -I${includedir} diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/mztools.c b/io2d/src/3rd-party/zlib/contrib/minizip/mztools.c deleted file mode 100644 index 96891c2..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/mztools.c +++ /dev/null @@ -1,291 +0,0 @@ -/* - Additional tools for Minizip - Code: Xavier Roche '2004 - License: Same as ZLIB (www.gzip.org) -*/ - -/* Code */ -#include -#include -#include -#include "zlib.h" -#include "unzip.h" - -#define READ_8(adr) ((unsigned char)*(adr)) -#define READ_16(adr) ( READ_8(adr) | (READ_8(adr+1) << 8) ) -#define READ_32(adr) ( READ_16(adr) | (READ_16((adr)+2) << 16) ) - -#define WRITE_8(buff, n) do { \ - *((unsigned char*)(buff)) = (unsigned char) ((n) & 0xff); \ -} while(0) -#define WRITE_16(buff, n) do { \ - WRITE_8((unsigned char*)(buff), n); \ - WRITE_8(((unsigned char*)(buff)) + 1, (n) >> 8); \ -} while(0) -#define WRITE_32(buff, n) do { \ - WRITE_16((unsigned char*)(buff), (n) & 0xffff); \ - WRITE_16((unsigned char*)(buff) + 2, (n) >> 16); \ -} while(0) - -extern int ZEXPORT unzRepair(file, fileOut, fileOutTmp, nRecovered, bytesRecovered) -const char* file; -const char* fileOut; -const char* fileOutTmp; -uLong* nRecovered; -uLong* bytesRecovered; -{ - int err = Z_OK; - FILE* fpZip = fopen(file, "rb"); - FILE* fpOut = fopen(fileOut, "wb"); - FILE* fpOutCD = fopen(fileOutTmp, "wb"); - if (fpZip != NULL && fpOut != NULL) { - int entries = 0; - uLong totalBytes = 0; - char header[30]; - char filename[1024]; - char extra[1024]; - int offset = 0; - int offsetCD = 0; - while ( fread(header, 1, 30, fpZip) == 30 ) { - int currentOffset = offset; - - /* File entry */ - if (READ_32(header) == 0x04034b50) { - unsigned int version = READ_16(header + 4); - unsigned int gpflag = READ_16(header + 6); - unsigned int method = READ_16(header + 8); - unsigned int filetime = READ_16(header + 10); - unsigned int filedate = READ_16(header + 12); - unsigned int crc = READ_32(header + 14); /* crc */ - unsigned int cpsize = READ_32(header + 18); /* compressed size */ - unsigned int uncpsize = READ_32(header + 22); /* uncompressed sz */ - unsigned int fnsize = READ_16(header + 26); /* file name length */ - unsigned int extsize = READ_16(header + 28); /* extra field length */ - filename[0] = extra[0] = '\0'; - - /* Header */ - if (fwrite(header, 1, 30, fpOut) == 30) { - offset += 30; - } else { - err = Z_ERRNO; - break; - } - - /* Filename */ - if (fnsize > 0) { - if (fnsize < sizeof(filename)) { - if (fread(filename, 1, fnsize, fpZip) == fnsize) { - if (fwrite(filename, 1, fnsize, fpOut) == fnsize) { - offset += fnsize; - } else { - err = Z_ERRNO; - break; - } - } else { - err = Z_ERRNO; - break; - } - } else { - err = Z_ERRNO; - break; - } - } else { - err = Z_STREAM_ERROR; - break; - } - - /* Extra field */ - if (extsize > 0) { - if (extsize < sizeof(extra)) { - if (fread(extra, 1, extsize, fpZip) == extsize) { - if (fwrite(extra, 1, extsize, fpOut) == extsize) { - offset += extsize; - } else { - err = Z_ERRNO; - break; - } - } else { - err = Z_ERRNO; - break; - } - } else { - err = Z_ERRNO; - break; - } - } - - /* Data */ - { - int dataSize = cpsize; - if (dataSize == 0) { - dataSize = uncpsize; - } - if (dataSize > 0) { - char* data = malloc(dataSize); - if (data != NULL) { - if ((int)fread(data, 1, dataSize, fpZip) == dataSize) { - if ((int)fwrite(data, 1, dataSize, fpOut) == dataSize) { - offset += dataSize; - totalBytes += dataSize; - } else { - err = Z_ERRNO; - } - } else { - err = Z_ERRNO; - } - free(data); - if (err != Z_OK) { - break; - } - } else { - err = Z_MEM_ERROR; - break; - } - } - } - - /* Central directory entry */ - { - char header[46]; - char* comment = ""; - int comsize = (int) strlen(comment); - WRITE_32(header, 0x02014b50); - WRITE_16(header + 4, version); - WRITE_16(header + 6, version); - WRITE_16(header + 8, gpflag); - WRITE_16(header + 10, method); - WRITE_16(header + 12, filetime); - WRITE_16(header + 14, filedate); - WRITE_32(header + 16, crc); - WRITE_32(header + 20, cpsize); - WRITE_32(header + 24, uncpsize); - WRITE_16(header + 28, fnsize); - WRITE_16(header + 30, extsize); - WRITE_16(header + 32, comsize); - WRITE_16(header + 34, 0); /* disk # */ - WRITE_16(header + 36, 0); /* int attrb */ - WRITE_32(header + 38, 0); /* ext attrb */ - WRITE_32(header + 42, currentOffset); - /* Header */ - if (fwrite(header, 1, 46, fpOutCD) == 46) { - offsetCD += 46; - - /* Filename */ - if (fnsize > 0) { - if (fwrite(filename, 1, fnsize, fpOutCD) == fnsize) { - offsetCD += fnsize; - } else { - err = Z_ERRNO; - break; - } - } else { - err = Z_STREAM_ERROR; - break; - } - - /* Extra field */ - if (extsize > 0) { - if (fwrite(extra, 1, extsize, fpOutCD) == extsize) { - offsetCD += extsize; - } else { - err = Z_ERRNO; - break; - } - } - - /* Comment field */ - if (comsize > 0) { - if ((int)fwrite(comment, 1, comsize, fpOutCD) == comsize) { - offsetCD += comsize; - } else { - err = Z_ERRNO; - break; - } - } - - - } else { - err = Z_ERRNO; - break; - } - } - - /* Success */ - entries++; - - } else { - break; - } - } - - /* Final central directory */ - { - int entriesZip = entries; - char header[22]; - char* comment = ""; // "ZIP File recovered by zlib/minizip/mztools"; - int comsize = (int) strlen(comment); - if (entriesZip > 0xffff) { - entriesZip = 0xffff; - } - WRITE_32(header, 0x06054b50); - WRITE_16(header + 4, 0); /* disk # */ - WRITE_16(header + 6, 0); /* disk # */ - WRITE_16(header + 8, entriesZip); /* hack */ - WRITE_16(header + 10, entriesZip); /* hack */ - WRITE_32(header + 12, offsetCD); /* size of CD */ - WRITE_32(header + 16, offset); /* offset to CD */ - WRITE_16(header + 20, comsize); /* comment */ - - /* Header */ - if (fwrite(header, 1, 22, fpOutCD) == 22) { - - /* Comment field */ - if (comsize > 0) { - if ((int)fwrite(comment, 1, comsize, fpOutCD) != comsize) { - err = Z_ERRNO; - } - } - - } else { - err = Z_ERRNO; - } - } - - /* Final merge (file + central directory) */ - fclose(fpOutCD); - if (err == Z_OK) { - fpOutCD = fopen(fileOutTmp, "rb"); - if (fpOutCD != NULL) { - int nRead; - char buffer[8192]; - while ( (nRead = (int)fread(buffer, 1, sizeof(buffer), fpOutCD)) > 0) { - if ((int)fwrite(buffer, 1, nRead, fpOut) != nRead) { - err = Z_ERRNO; - break; - } - } - fclose(fpOutCD); - } - } - - /* Close */ - fclose(fpZip); - fclose(fpOut); - - /* Wipe temporary file */ - (void)remove(fileOutTmp); - - /* Number of recovered entries */ - if (err == Z_OK) { - if (nRecovered != NULL) { - *nRecovered = entries; - } - if (bytesRecovered != NULL) { - *bytesRecovered = totalBytes; - } - } - } else { - err = Z_STREAM_ERROR; - } - return err; -} diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/mztools.h b/io2d/src/3rd-party/zlib/contrib/minizip/mztools.h deleted file mode 100644 index a49a426..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/mztools.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - Additional tools for Minizip - Code: Xavier Roche '2004 - License: Same as ZLIB (www.gzip.org) -*/ - -#ifndef _zip_tools_H -#define _zip_tools_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#include "unzip.h" - -/* Repair a ZIP file (missing central directory) - file: file to recover - fileOut: output file after recovery - fileOutTmp: temporary file name used for recovery -*/ -extern int ZEXPORT unzRepair(const char* file, - const char* fileOut, - const char* fileOutTmp, - uLong* nRecovered, - uLong* bytesRecovered); - - -#ifdef __cplusplus -} -#endif - - -#endif diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/unzip.c b/io2d/src/3rd-party/zlib/contrib/minizip/unzip.c deleted file mode 100644 index 9093504..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/unzip.c +++ /dev/null @@ -1,2125 +0,0 @@ -/* unzip.c -- IO for uncompress .zip files using zlib - Version 1.1, February 14h, 2010 - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications of Unzip for Zip64 - Copyright (C) 2007-2008 Even Rouault - - Modifications for Zip64 support on both zip and unzip - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - - - ------------------------------------------------------------------------------------ - Decryption code comes from crypt.c by Info-ZIP but has been greatly reduced in terms of - compatibility with older software. The following is from the original crypt.c. - Code woven in by Terry Thorsen 1/2003. - - Copyright (c) 1990-2000 Info-ZIP. All rights reserved. - - See the accompanying file LICENSE, version 2000-Apr-09 or later - (the contents of which are also included in zip.h) for terms of use. - If, for some reason, all these files are missing, the Info-ZIP license - also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html - - crypt.c (full version) by Info-ZIP. Last revised: [see crypt.h] - - The encryption/decryption parts of this source code (as opposed to the - non-echoing password parts) were originally written in Europe. The - whole source package can be freely distributed, including from the USA. - (Prior to January 2000, re-export from the US was a violation of US law.) - - This encryption code is a direct transcription of the algorithm from - Roger Schlafly, described by Phil Katz in the file appnote.txt. This - file (appnote.txt) is distributed with the PKZIP program (even in the - version without encryption capabilities). - - ------------------------------------------------------------------------------------ - - Changes in unzip.c - - 2007-2008 - Even Rouault - Addition of cpl_unzGetCurrentFileZStreamPos - 2007-2008 - Even Rouault - Decoration of symbol names unz* -> cpl_unz* - 2007-2008 - Even Rouault - Remove old C style function prototypes - 2007-2008 - Even Rouault - Add unzip support for ZIP64 - - Copyright (C) 2007-2008 Even Rouault - - - Oct-2009 - Mathias Svensson - Removed cpl_* from symbol names (Even Rouault added them but since this is now moved to a new project (minizip64) I renamed them again). - Oct-2009 - Mathias Svensson - Fixed problem if uncompressed size was > 4G and compressed size was <4G - should only read the compressed/uncompressed size from the Zip64 format if - the size from normal header was 0xFFFFFFFF - Oct-2009 - Mathias Svensson - Applied some bug fixes from paches recived from Gilles Vollant - Oct-2009 - Mathias Svensson - Applied support to unzip files with compression mathod BZIP2 (bzip2 lib is required) - Patch created by Daniel Borca - - Jan-2010 - back to unzip and minizip 1.0 name scheme, with compatibility layer - - Copyright (C) 1998 - 2010 Gilles Vollant, Even Rouault, Mathias Svensson - -*/ - - -#include -#include -#include - -#ifndef NOUNCRYPT - #define NOUNCRYPT -#endif - -#include "zlib.h" -#include "unzip.h" - -#ifdef STDC -# include -# include -# include -#endif -#ifdef NO_ERRNO_H - extern int errno; -#else -# include -#endif - - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - - -#ifndef CASESENSITIVITYDEFAULT_NO -# if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) -# define CASESENSITIVITYDEFAULT_NO -# endif -#endif - - -#ifndef UNZ_BUFSIZE -#define UNZ_BUFSIZE (16384) -#endif - -#ifndef UNZ_MAXFILENAMEINZIP -#define UNZ_MAXFILENAMEINZIP (256) -#endif - -#ifndef ALLOC -# define ALLOC(size) (malloc(size)) -#endif -#ifndef TRYFREE -# define TRYFREE(p) {if (p) free(p);} -#endif - -#define SIZECENTRALDIRITEM (0x2e) -#define SIZEZIPLOCALHEADER (0x1e) - - -const char unz_copyright[] = - " unzip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; - -/* unz_file_info_interntal contain internal info about a file in zipfile*/ -typedef struct unz_file_info64_internal_s -{ - ZPOS64_T offset_curfile;/* relative offset of local header 8 bytes */ -} unz_file_info64_internal; - - -/* file_in_zip_read_info_s contain internal information about a file in zipfile, - when reading and decompress it */ -typedef struct -{ - char *read_buffer; /* internal buffer for compressed data */ - z_stream stream; /* zLib stream structure for inflate */ - -#ifdef HAVE_BZIP2 - bz_stream bstream; /* bzLib stream structure for bziped */ -#endif - - ZPOS64_T pos_in_zipfile; /* position in byte on the zipfile, for fseek*/ - uLong stream_initialised; /* flag set if stream structure is initialised*/ - - ZPOS64_T offset_local_extrafield;/* offset of the local extra field */ - uInt size_local_extrafield;/* size of the local extra field */ - ZPOS64_T pos_local_extrafield; /* position in the local extra field in read*/ - ZPOS64_T total_out_64; - - uLong crc32; /* crc32 of all data uncompressed */ - uLong crc32_wait; /* crc32 we must obtain after decompress all */ - ZPOS64_T rest_read_compressed; /* number of byte to be decompressed */ - ZPOS64_T rest_read_uncompressed;/*number of byte to be obtained after decomp*/ - zlib_filefunc64_32_def z_filefunc; - voidpf filestream; /* io structore of the zipfile */ - uLong compression_method; /* compression method (0==store) */ - ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ - int raw; -} file_in_zip64_read_info_s; - - -/* unz64_s contain internal information about the zipfile -*/ -typedef struct -{ - zlib_filefunc64_32_def z_filefunc; - int is64bitOpenFunction; - voidpf filestream; /* io structore of the zipfile */ - unz_global_info64 gi; /* public global information */ - ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ - ZPOS64_T num_file; /* number of the current file in the zipfile*/ - ZPOS64_T pos_in_central_dir; /* pos of the current file in the central dir*/ - ZPOS64_T current_file_ok; /* flag about the usability of the current file*/ - ZPOS64_T central_pos; /* position of the beginning of the central dir*/ - - ZPOS64_T size_central_dir; /* size of the central directory */ - ZPOS64_T offset_central_dir; /* offset of start of central directory with - respect to the starting disk number */ - - unz_file_info64 cur_file_info; /* public info about the current file in zip*/ - unz_file_info64_internal cur_file_info_internal; /* private info about it*/ - file_in_zip64_read_info_s* pfile_in_zip_read; /* structure about the current - file if we are decompressing it */ - int encrypted; - - int isZip64; - -# ifndef NOUNCRYPT - unsigned long keys[3]; /* keys defining the pseudo-random sequence */ - const z_crc_t* pcrc_32_tab; -# endif -} unz64_s; - - -#ifndef NOUNCRYPT -#include "crypt.h" -#endif - -/* =========================================================================== - Read a byte from a gz_stream; update next_in and avail_in. Return EOF - for end of file. - IN assertion: the stream s has been sucessfully opened for reading. -*/ - - -local int unz64local_getByte OF(( - const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - int *pi)); - -local int unz64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi) -{ - unsigned char c; - int err = (int)ZREAD64(*pzlib_filefunc_def,filestream,&c,1); - if (err==1) - { - *pi = (int)c; - return UNZ_OK; - } - else - { - if (ZERROR64(*pzlib_filefunc_def,filestream)) - return UNZ_ERRNO; - else - return UNZ_EOF; - } -} - - -/* =========================================================================== - Reads a long in LSB order from the given gz_stream. Sets -*/ -local int unz64local_getShort OF(( - const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - uLong *pX)); - -local int unz64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - uLong *pX) -{ - uLong x ; - int i = 0; - int err; - - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (uLong)i; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((uLong)i)<<8; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int unz64local_getLong OF(( - const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - uLong *pX)); - -local int unz64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - uLong *pX) -{ - uLong x ; - int i = 0; - int err; - - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (uLong)i; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((uLong)i)<<8; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((uLong)i)<<16; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<24; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int unz64local_getLong64 OF(( - const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - ZPOS64_T *pX)); - - -local int unz64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream, - ZPOS64_T *pX) -{ - ZPOS64_T x ; - int i = 0; - int err; - - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (ZPOS64_T)i; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<8; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<16; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<24; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<32; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<40; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<48; - - if (err==UNZ_OK) - err = unz64local_getByte(pzlib_filefunc_def,filestream,&i); - x |= ((ZPOS64_T)i)<<56; - - if (err==UNZ_OK) - *pX = x; - else - *pX = 0; - return err; -} - -/* My own strcmpi / strcasecmp */ -local int strcmpcasenosensitive_internal (const char* fileName1, const char* fileName2) -{ - for (;;) - { - char c1=*(fileName1++); - char c2=*(fileName2++); - if ((c1>='a') && (c1<='z')) - c1 -= 0x20; - if ((c2>='a') && (c2<='z')) - c2 -= 0x20; - if (c1=='\0') - return ((c2=='\0') ? 0 : -1); - if (c2=='\0') - return 1; - if (c1c2) - return 1; - } -} - - -#ifdef CASESENSITIVITYDEFAULT_NO -#define CASESENSITIVITYDEFAULTVALUE 2 -#else -#define CASESENSITIVITYDEFAULTVALUE 1 -#endif - -#ifndef STRCMPCASENOSENTIVEFUNCTION -#define STRCMPCASENOSENTIVEFUNCTION strcmpcasenosensitive_internal -#endif - -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) - -*/ -extern int ZEXPORT unzStringFileNameCompare (const char* fileName1, - const char* fileName2, - int iCaseSensitivity) - -{ - if (iCaseSensitivity==0) - iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE; - - if (iCaseSensitivity==1) - return strcmp(fileName1,fileName2); - - return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2); -} - -#ifndef BUFREADCOMMENT -#define BUFREADCOMMENT (0x400) -#endif - -/* - Locate the Central directory of a zipfile (at the end, just before - the global comment) -*/ -local ZPOS64_T unz64local_SearchCentralDir OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)); -local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) -{ - unsigned char* buf; - ZPOS64_T uSizeFile; - ZPOS64_T uBackRead; - ZPOS64_T uMaxBack=0xffff; /* maximum size of global comment */ - ZPOS64_T uPosFound=0; - - if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) - return 0; - - - uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackReaduMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uLong)(uSizeFile-uReadPos); - if (ZSEEK64(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) - break; - - if (ZREAD64(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) - break; - - for (i=(int)uReadSize-3; (i--)>0;) - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && - ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) - { - uPosFound = uReadPos+i; - break; - } - - if (uPosFound!=0) - break; - } - TRYFREE(buf); - return uPosFound; -} - - -/* - Locate the Central directory 64 of a zipfile (at the end, just before - the global comment) -*/ -local ZPOS64_T unz64local_SearchCentralDir64 OF(( - const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream)); - -local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def, - voidpf filestream) -{ - unsigned char* buf; - ZPOS64_T uSizeFile; - ZPOS64_T uBackRead; - ZPOS64_T uMaxBack=0xffff; /* maximum size of global comment */ - ZPOS64_T uPosFound=0; - uLong uL; - ZPOS64_T relativeOffset; - - if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) - return 0; - - - uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackReaduMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uLong)(uSizeFile-uReadPos); - if (ZSEEK64(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) - break; - - if (ZREAD64(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) - break; - - for (i=(int)uReadSize-3; (i--)>0;) - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && - ((*(buf+i+2))==0x06) && ((*(buf+i+3))==0x07)) - { - uPosFound = uReadPos+i; - break; - } - - if (uPosFound!=0) - break; - } - TRYFREE(buf); - if (uPosFound == 0) - return 0; - - /* Zip64 end of central directory locator */ - if (ZSEEK64(*pzlib_filefunc_def,filestream, uPosFound,ZLIB_FILEFUNC_SEEK_SET)!=0) - return 0; - - /* the signature, already checked */ - if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK) - return 0; - - /* number of the disk with the start of the zip64 end of central directory */ - if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK) - return 0; - if (uL != 0) - return 0; - - /* relative offset of the zip64 end of central directory record */ - if (unz64local_getLong64(pzlib_filefunc_def,filestream,&relativeOffset)!=UNZ_OK) - return 0; - - /* total number of disks */ - if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK) - return 0; - if (uL != 1) - return 0; - - /* Goto end of central directory record */ - if (ZSEEK64(*pzlib_filefunc_def,filestream, relativeOffset,ZLIB_FILEFUNC_SEEK_SET)!=0) - return 0; - - /* the signature */ - if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK) - return 0; - - if (uL != 0x06064b50) - return 0; - - return relativeOffset; -} - -/* - Open a Zip file. path contain the full pathname (by example, - on a Windows NT computer "c:\\test\\zlib114.zip" or on an Unix computer - "zlib/zlib114.zip". - If the zipfile cannot be opened (file doesn't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. -*/ -local unzFile unzOpenInternal (const void *path, - zlib_filefunc64_32_def* pzlib_filefunc64_32_def, - int is64bitOpenFunction) -{ - unz64_s us; - unz64_s *s; - ZPOS64_T central_pos; - uLong uL; - - uLong number_disk; /* number of the current dist, used for - spaning ZIP, unsupported, always 0*/ - uLong number_disk_with_CD; /* number the the disk with central dir, used - for spaning ZIP, unsupported, always 0*/ - ZPOS64_T number_entry_CD; /* total number of entries in - the central dir - (same than number_entry on nospan) */ - - int err=UNZ_OK; - - if (unz_copyright[0]!=' ') - return NULL; - - us.z_filefunc.zseek32_file = NULL; - us.z_filefunc.ztell32_file = NULL; - if (pzlib_filefunc64_32_def==NULL) - fill_fopen64_filefunc(&us.z_filefunc.zfile_func64); - else - us.z_filefunc = *pzlib_filefunc64_32_def; - us.is64bitOpenFunction = is64bitOpenFunction; - - - - us.filestream = ZOPEN64(us.z_filefunc, - path, - ZLIB_FILEFUNC_MODE_READ | - ZLIB_FILEFUNC_MODE_EXISTING); - if (us.filestream==NULL) - return NULL; - - central_pos = unz64local_SearchCentralDir64(&us.z_filefunc,us.filestream); - if (central_pos) - { - uLong uS; - ZPOS64_T uL64; - - us.isZip64 = 1; - - if (ZSEEK64(us.z_filefunc, us.filestream, - central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0) - err=UNZ_ERRNO; - - /* the signature, already checked */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - - /* size of zip64 end of central directory record */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream,&uL64)!=UNZ_OK) - err=UNZ_ERRNO; - - /* version made by */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&uS)!=UNZ_OK) - err=UNZ_ERRNO; - - /* version needed to extract */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&uS)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of this disk */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&number_disk)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of the disk with the start of the central directory */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&number_disk_with_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central directory on this disk */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream,&us.gi.number_entry)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central directory */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream,&number_entry_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - if ((number_entry_CD!=us.gi.number_entry) || - (number_disk_with_CD!=0) || - (number_disk!=0)) - err=UNZ_BADZIPFILE; - - /* size of the central directory */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream,&us.size_central_dir)!=UNZ_OK) - err=UNZ_ERRNO; - - /* offset of start of central directory with respect to the - starting disk number */ - if (unz64local_getLong64(&us.z_filefunc, us.filestream,&us.offset_central_dir)!=UNZ_OK) - err=UNZ_ERRNO; - - us.gi.size_comment = 0; - } - else - { - central_pos = unz64local_SearchCentralDir(&us.z_filefunc,us.filestream); - if (central_pos==0) - err=UNZ_ERRNO; - - us.isZip64 = 0; - - if (ZSEEK64(us.z_filefunc, us.filestream, - central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0) - err=UNZ_ERRNO; - - /* the signature, already checked */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of this disk */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&number_disk)!=UNZ_OK) - err=UNZ_ERRNO; - - /* number of the disk with the start of the central directory */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&number_disk_with_CD)!=UNZ_OK) - err=UNZ_ERRNO; - - /* total number of entries in the central dir on this disk */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - us.gi.number_entry = uL; - - /* total number of entries in the central dir */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - number_entry_CD = uL; - - if ((number_entry_CD!=us.gi.number_entry) || - (number_disk_with_CD!=0) || - (number_disk!=0)) - err=UNZ_BADZIPFILE; - - /* size of the central directory */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - us.size_central_dir = uL; - - /* offset of start of central directory with respect to the - starting disk number */ - if (unz64local_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) - err=UNZ_ERRNO; - us.offset_central_dir = uL; - - /* zipfile comment length */ - if (unz64local_getShort(&us.z_filefunc, us.filestream,&us.gi.size_comment)!=UNZ_OK) - err=UNZ_ERRNO; - } - - if ((central_pospfile_in_zip_read!=NULL) - unzCloseCurrentFile(file); - - ZCLOSE64(s->z_filefunc, s->filestream); - TRYFREE(s); - return UNZ_OK; -} - - -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ -extern int ZEXPORT unzGetGlobalInfo64 (unzFile file, unz_global_info64* pglobal_info) -{ - unz64_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - *pglobal_info=s->gi; - return UNZ_OK; -} - -extern int ZEXPORT unzGetGlobalInfo (unzFile file, unz_global_info* pglobal_info32) -{ - unz64_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - /* to do : check if number_entry is not truncated */ - pglobal_info32->number_entry = (uLong)s->gi.number_entry; - pglobal_info32->size_comment = s->gi.size_comment; - return UNZ_OK; -} -/* - Translate date/time from Dos format to tm_unz (readable more easilty) -*/ -local void unz64local_DosDateToTmuDate (ZPOS64_T ulDosDate, tm_unz* ptm) -{ - ZPOS64_T uDate; - uDate = (ZPOS64_T)(ulDosDate>>16); - ptm->tm_mday = (uInt)(uDate&0x1f) ; - ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ; - ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ; - - ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800); - ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ; - ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ; -} - -/* - Get Info about the current file in the zipfile, with internal only info -*/ -local int unz64local_GetCurrentFileInfoInternal OF((unzFile file, - unz_file_info64 *pfile_info, - unz_file_info64_internal - *pfile_info_internal, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); - -local int unz64local_GetCurrentFileInfoInternal (unzFile file, - unz_file_info64 *pfile_info, - unz_file_info64_internal - *pfile_info_internal, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize) -{ - unz64_s* s; - unz_file_info64 file_info; - unz_file_info64_internal file_info_internal; - int err=UNZ_OK; - uLong uMagic; - long lSeek=0; - uLong uL; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - if (ZSEEK64(s->z_filefunc, s->filestream, - s->pos_in_central_dir+s->byte_before_the_zipfile, - ZLIB_FILEFUNC_SEEK_SET)!=0) - err=UNZ_ERRNO; - - - /* we check the magic */ - if (err==UNZ_OK) - { - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK) - err=UNZ_ERRNO; - else if (uMagic!=0x02014b50) - err=UNZ_BADZIPFILE; - } - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.version) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.version_needed) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.flag) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.compression_method) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&file_info.dosDate) != UNZ_OK) - err=UNZ_ERRNO; - - unz64local_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date); - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&file_info.crc) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK) - err=UNZ_ERRNO; - file_info.compressed_size = uL; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK) - err=UNZ_ERRNO; - file_info.uncompressed_size = uL; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.size_filename) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_extra) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_comment) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.disk_num_start) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&file_info.internal_fa) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&file_info.external_fa) != UNZ_OK) - err=UNZ_ERRNO; - - // relative offset of local header - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK) - err=UNZ_ERRNO; - file_info_internal.offset_curfile = uL; - - lSeek+=file_info.size_filename; - if ((err==UNZ_OK) && (szFileName!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_filename0) && (fileNameBufferSize>0)) - if (ZREAD64(s->z_filefunc, s->filestream,szFileName,uSizeRead)!=uSizeRead) - err=UNZ_ERRNO; - lSeek -= uSizeRead; - } - - // Read extrafield - if ((err==UNZ_OK) && (extraField!=NULL)) - { - ZPOS64_T uSizeRead ; - if (file_info.size_file_extraz_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - } - - if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0)) - if (ZREAD64(s->z_filefunc, s->filestream,extraField,(uLong)uSizeRead)!=uSizeRead) - err=UNZ_ERRNO; - - lSeek += file_info.size_file_extra - (uLong)uSizeRead; - } - else - lSeek += file_info.size_file_extra; - - - if ((err==UNZ_OK) && (file_info.size_file_extra != 0)) - { - uLong acc = 0; - - // since lSeek now points to after the extra field we need to move back - lSeek -= file_info.size_file_extra; - - if (lSeek!=0) - { - if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - } - - while(acc < file_info.size_file_extra) - { - uLong headerId; - uLong dataSize; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&headerId) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&dataSize) != UNZ_OK) - err=UNZ_ERRNO; - - /* ZIP64 extra fields */ - if (headerId == 0x0001) - { - uLong uL; - - if(file_info.uncompressed_size == MAXU32) - { - if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.uncompressed_size) != UNZ_OK) - err=UNZ_ERRNO; - } - - if(file_info.compressed_size == MAXU32) - { - if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK) - err=UNZ_ERRNO; - } - - if(file_info_internal.offset_curfile == MAXU32) - { - /* Relative Header offset */ - if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK) - err=UNZ_ERRNO; - } - - if(file_info.disk_num_start == MAXU32) - { - /* Disk Start Number */ - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK) - err=UNZ_ERRNO; - } - - } - else - { - if (ZSEEK64(s->z_filefunc, s->filestream,dataSize,ZLIB_FILEFUNC_SEEK_CUR)!=0) - err=UNZ_ERRNO; - } - - acc += 2 + 2 + dataSize; - } - } - - if ((err==UNZ_OK) && (szComment!=NULL)) - { - uLong uSizeRead ; - if (file_info.size_file_commentz_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) - lSeek=0; - else - err=UNZ_ERRNO; - } - - if ((file_info.size_file_comment>0) && (commentBufferSize>0)) - if (ZREAD64(s->z_filefunc, s->filestream,szComment,uSizeRead)!=uSizeRead) - err=UNZ_ERRNO; - lSeek+=file_info.size_file_comment - uSizeRead; - } - else - lSeek+=file_info.size_file_comment; - - - if ((err==UNZ_OK) && (pfile_info!=NULL)) - *pfile_info=file_info; - - if ((err==UNZ_OK) && (pfile_info_internal!=NULL)) - *pfile_info_internal=file_info_internal; - - return err; -} - - - -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. -*/ -extern int ZEXPORT unzGetCurrentFileInfo64 (unzFile file, - unz_file_info64 * pfile_info, - char * szFileName, uLong fileNameBufferSize, - void *extraField, uLong extraFieldBufferSize, - char* szComment, uLong commentBufferSize) -{ - return unz64local_GetCurrentFileInfoInternal(file,pfile_info,NULL, - szFileName,fileNameBufferSize, - extraField,extraFieldBufferSize, - szComment,commentBufferSize); -} - -extern int ZEXPORT unzGetCurrentFileInfo (unzFile file, - unz_file_info * pfile_info, - char * szFileName, uLong fileNameBufferSize, - void *extraField, uLong extraFieldBufferSize, - char* szComment, uLong commentBufferSize) -{ - int err; - unz_file_info64 file_info64; - err = unz64local_GetCurrentFileInfoInternal(file,&file_info64,NULL, - szFileName,fileNameBufferSize, - extraField,extraFieldBufferSize, - szComment,commentBufferSize); - if ((err==UNZ_OK) && (pfile_info != NULL)) - { - pfile_info->version = file_info64.version; - pfile_info->version_needed = file_info64.version_needed; - pfile_info->flag = file_info64.flag; - pfile_info->compression_method = file_info64.compression_method; - pfile_info->dosDate = file_info64.dosDate; - pfile_info->crc = file_info64.crc; - - pfile_info->size_filename = file_info64.size_filename; - pfile_info->size_file_extra = file_info64.size_file_extra; - pfile_info->size_file_comment = file_info64.size_file_comment; - - pfile_info->disk_num_start = file_info64.disk_num_start; - pfile_info->internal_fa = file_info64.internal_fa; - pfile_info->external_fa = file_info64.external_fa; - - pfile_info->tmu_date = file_info64.tmu_date, - - - pfile_info->compressed_size = (uLong)file_info64.compressed_size; - pfile_info->uncompressed_size = (uLong)file_info64.uncompressed_size; - - } - return err; -} -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ -extern int ZEXPORT unzGoToFirstFile (unzFile file) -{ - int err=UNZ_OK; - unz64_s* s; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - s->pos_in_central_dir=s->offset_central_dir; - s->num_file=0; - err=unz64local_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ -extern int ZEXPORT unzGoToNextFile (unzFile file) -{ - unz64_s* s; - int err; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - if (s->gi.number_entry != 0xffff) /* 2^16 files overflow hack */ - if (s->num_file+1==s->gi.number_entry) - return UNZ_END_OF_LIST_OF_FILE; - - s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + - s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ; - s->num_file++; - err = unz64local_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - - -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ -extern int ZEXPORT unzLocateFile (unzFile file, const char *szFileName, int iCaseSensitivity) -{ - unz64_s* s; - int err; - - /* We remember the 'current' position in the file so that we can jump - * back there if we fail. - */ - unz_file_info64 cur_file_infoSaved; - unz_file_info64_internal cur_file_info_internalSaved; - ZPOS64_T num_fileSaved; - ZPOS64_T pos_in_central_dirSaved; - - - if (file==NULL) - return UNZ_PARAMERROR; - - if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP) - return UNZ_PARAMERROR; - - s=(unz64_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - - /* Save the current state */ - num_fileSaved = s->num_file; - pos_in_central_dirSaved = s->pos_in_central_dir; - cur_file_infoSaved = s->cur_file_info; - cur_file_info_internalSaved = s->cur_file_info_internal; - - err = unzGoToFirstFile(file); - - while (err == UNZ_OK) - { - char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1]; - err = unzGetCurrentFileInfo64(file,NULL, - szCurrentFileName,sizeof(szCurrentFileName)-1, - NULL,0,NULL,0); - if (err == UNZ_OK) - { - if (unzStringFileNameCompare(szCurrentFileName, - szFileName,iCaseSensitivity)==0) - return UNZ_OK; - err = unzGoToNextFile(file); - } - } - - /* We failed, so restore the state of the 'current file' to where we - * were. - */ - s->num_file = num_fileSaved ; - s->pos_in_central_dir = pos_in_central_dirSaved ; - s->cur_file_info = cur_file_infoSaved; - s->cur_file_info_internal = cur_file_info_internalSaved; - return err; -} - - -/* -/////////////////////////////////////////// -// Contributed by Ryan Haksi (mailto://cryogen@infoserve.net) -// I need random access -// -// Further optimization could be realized by adding an ability -// to cache the directory in memory. The goal being a single -// comprehensive file read to put the file I need in a memory. -*/ - -/* -typedef struct unz_file_pos_s -{ - ZPOS64_T pos_in_zip_directory; // offset in file - ZPOS64_T num_of_file; // # of file -} unz_file_pos; -*/ - -extern int ZEXPORT unzGetFilePos64(unzFile file, unz64_file_pos* file_pos) -{ - unz64_s* s; - - if (file==NULL || file_pos==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - if (!s->current_file_ok) - return UNZ_END_OF_LIST_OF_FILE; - - file_pos->pos_in_zip_directory = s->pos_in_central_dir; - file_pos->num_of_file = s->num_file; - - return UNZ_OK; -} - -extern int ZEXPORT unzGetFilePos( - unzFile file, - unz_file_pos* file_pos) -{ - unz64_file_pos file_pos64; - int err = unzGetFilePos64(file,&file_pos64); - if (err==UNZ_OK) - { - file_pos->pos_in_zip_directory = (uLong)file_pos64.pos_in_zip_directory; - file_pos->num_of_file = (uLong)file_pos64.num_of_file; - } - return err; -} - -extern int ZEXPORT unzGoToFilePos64(unzFile file, const unz64_file_pos* file_pos) -{ - unz64_s* s; - int err; - - if (file==NULL || file_pos==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - - /* jump to the right spot */ - s->pos_in_central_dir = file_pos->pos_in_zip_directory; - s->num_file = file_pos->num_of_file; - - /* set the current file */ - err = unz64local_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - /* return results */ - s->current_file_ok = (err == UNZ_OK); - return err; -} - -extern int ZEXPORT unzGoToFilePos( - unzFile file, - unz_file_pos* file_pos) -{ - unz64_file_pos file_pos64; - if (file_pos == NULL) - return UNZ_PARAMERROR; - - file_pos64.pos_in_zip_directory = file_pos->pos_in_zip_directory; - file_pos64.num_of_file = file_pos->num_of_file; - return unzGoToFilePos64(file,&file_pos64); -} - -/* -// Unzip Helper Functions - should be here? -/////////////////////////////////////////// -*/ - -/* - Read the local header of the current zipfile - Check the coherency of the local header and info in the end of central - directory about this file - store in *piSizeVar the size of extra info in local header - (filename and size of extra field data) -*/ -local int unz64local_CheckCurrentFileCoherencyHeader (unz64_s* s, uInt* piSizeVar, - ZPOS64_T * poffset_local_extrafield, - uInt * psize_local_extrafield) -{ - uLong uMagic,uData,uFlags; - uLong size_filename; - uLong size_extra_field; - int err=UNZ_OK; - - *piSizeVar = 0; - *poffset_local_extrafield = 0; - *psize_local_extrafield = 0; - - if (ZSEEK64(s->z_filefunc, s->filestream,s->cur_file_info_internal.offset_curfile + - s->byte_before_the_zipfile,ZLIB_FILEFUNC_SEEK_SET)!=0) - return UNZ_ERRNO; - - - if (err==UNZ_OK) - { - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK) - err=UNZ_ERRNO; - else if (uMagic!=0x04034b50) - err=UNZ_BADZIPFILE; - } - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) - err=UNZ_ERRNO; -/* - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion)) - err=UNZ_BADZIPFILE; -*/ - if (unz64local_getShort(&s->z_filefunc, s->filestream,&uFlags) != UNZ_OK) - err=UNZ_ERRNO; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method)) - err=UNZ_BADZIPFILE; - - if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) && -/* #ifdef HAVE_BZIP2 */ - (s->cur_file_info.compression_method!=Z_BZIP2ED) && -/* #endif */ - (s->cur_file_info.compression_method!=Z_DEFLATED)) - err=UNZ_BADZIPFILE; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* date/time */ - err=UNZ_ERRNO; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* crc */ - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) && ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size compr */ - err=UNZ_ERRNO; - else if (uData != 0xFFFFFFFF && (err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) && ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unz64local_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size uncompr */ - err=UNZ_ERRNO; - else if (uData != 0xFFFFFFFF && (err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) && ((uFlags & 8)==0)) - err=UNZ_BADZIPFILE; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&size_filename) != UNZ_OK) - err=UNZ_ERRNO; - else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename)) - err=UNZ_BADZIPFILE; - - *piSizeVar += (uInt)size_filename; - - if (unz64local_getShort(&s->z_filefunc, s->filestream,&size_extra_field) != UNZ_OK) - err=UNZ_ERRNO; - *poffset_local_extrafield= s->cur_file_info_internal.offset_curfile + - SIZEZIPLOCALHEADER + size_filename; - *psize_local_extrafield = (uInt)size_extra_field; - - *piSizeVar += (uInt)size_extra_field; - - return err; -} - -/* - Open for reading data the current file in the zipfile. - If there is no error and the file is opened, the return value is UNZ_OK. -*/ -extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method, - int* level, int raw, const char* password) -{ - int err=UNZ_OK; - uInt iSizeVar; - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - ZPOS64_T offset_local_extrafield; /* offset of the local extra field */ - uInt size_local_extrafield; /* size of the local extra field */ -# ifndef NOUNCRYPT - char source[12]; -# else - if (password != NULL) - return UNZ_PARAMERROR; -# endif - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - if (!s->current_file_ok) - return UNZ_PARAMERROR; - - if (s->pfile_in_zip_read != NULL) - unzCloseCurrentFile(file); - - if (unz64local_CheckCurrentFileCoherencyHeader(s,&iSizeVar, &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK) - return UNZ_BADZIPFILE; - - pfile_in_zip_read_info = (file_in_zip64_read_info_s*)ALLOC(sizeof(file_in_zip64_read_info_s)); - if (pfile_in_zip_read_info==NULL) - return UNZ_INTERNALERROR; - - pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE); - pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; - pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; - pfile_in_zip_read_info->pos_local_extrafield=0; - pfile_in_zip_read_info->raw=raw; - - if (pfile_in_zip_read_info->read_buffer==NULL) - { - TRYFREE(pfile_in_zip_read_info); - return UNZ_INTERNALERROR; - } - - pfile_in_zip_read_info->stream_initialised=0; - - if (method!=NULL) - *method = (int)s->cur_file_info.compression_method; - - if (level!=NULL) - { - *level = 6; - switch (s->cur_file_info.flag & 0x06) - { - case 6 : *level = 1; break; - case 4 : *level = 2; break; - case 2 : *level = 9; break; - } - } - - if ((s->cur_file_info.compression_method!=0) && -/* #ifdef HAVE_BZIP2 */ - (s->cur_file_info.compression_method!=Z_BZIP2ED) && -/* #endif */ - (s->cur_file_info.compression_method!=Z_DEFLATED)) - - err=UNZ_BADZIPFILE; - - pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; - pfile_in_zip_read_info->crc32=0; - pfile_in_zip_read_info->total_out_64=0; - pfile_in_zip_read_info->compression_method = s->cur_file_info.compression_method; - pfile_in_zip_read_info->filestream=s->filestream; - pfile_in_zip_read_info->z_filefunc=s->z_filefunc; - pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile; - - pfile_in_zip_read_info->stream.total_out = 0; - - if ((s->cur_file_info.compression_method==Z_BZIP2ED) && (!raw)) - { -#ifdef HAVE_BZIP2 - pfile_in_zip_read_info->bstream.bzalloc = (void *(*) (void *, int, int))0; - pfile_in_zip_read_info->bstream.bzfree = (free_func)0; - pfile_in_zip_read_info->bstream.opaque = (voidpf)0; - pfile_in_zip_read_info->bstream.state = (voidpf)0; - - pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; - pfile_in_zip_read_info->stream.zfree = (free_func)0; - pfile_in_zip_read_info->stream.opaque = (voidpf)0; - pfile_in_zip_read_info->stream.next_in = (voidpf)0; - pfile_in_zip_read_info->stream.avail_in = 0; - - err=BZ2_bzDecompressInit(&pfile_in_zip_read_info->bstream, 0, 0); - if (err == Z_OK) - pfile_in_zip_read_info->stream_initialised=Z_BZIP2ED; - else - { - TRYFREE(pfile_in_zip_read_info); - return err; - } -#else - pfile_in_zip_read_info->raw=1; -#endif - } - else if ((s->cur_file_info.compression_method==Z_DEFLATED) && (!raw)) - { - pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; - pfile_in_zip_read_info->stream.zfree = (free_func)0; - pfile_in_zip_read_info->stream.opaque = (voidpf)0; - pfile_in_zip_read_info->stream.next_in = 0; - pfile_in_zip_read_info->stream.avail_in = 0; - - err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); - if (err == Z_OK) - pfile_in_zip_read_info->stream_initialised=Z_DEFLATED; - else - { - TRYFREE(pfile_in_zip_read_info); - return err; - } - /* windowBits is passed < 0 to tell that there is no zlib header. - * Note that in this case inflate *requires* an extra "dummy" byte - * after the compressed stream in order to complete decompression and - * return Z_STREAM_END. - * In unzip, i don't wait absolutely Z_STREAM_END because I known the - * size of both compressed and uncompressed data - */ - } - pfile_in_zip_read_info->rest_read_compressed = - s->cur_file_info.compressed_size ; - pfile_in_zip_read_info->rest_read_uncompressed = - s->cur_file_info.uncompressed_size ; - - - pfile_in_zip_read_info->pos_in_zipfile = - s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + - iSizeVar; - - pfile_in_zip_read_info->stream.avail_in = (uInt)0; - - s->pfile_in_zip_read = pfile_in_zip_read_info; - s->encrypted = 0; - -# ifndef NOUNCRYPT - if (password != NULL) - { - int i; - s->pcrc_32_tab = get_crc_table(); - init_keys(password,s->keys,s->pcrc_32_tab); - if (ZSEEK64(s->z_filefunc, s->filestream, - s->pfile_in_zip_read->pos_in_zipfile + - s->pfile_in_zip_read->byte_before_the_zipfile, - SEEK_SET)!=0) - return UNZ_INTERNALERROR; - if(ZREAD64(s->z_filefunc, s->filestream,source, 12)<12) - return UNZ_INTERNALERROR; - - for (i = 0; i<12; i++) - zdecode(s->keys,s->pcrc_32_tab,source[i]); - - s->pfile_in_zip_read->pos_in_zipfile+=12; - s->encrypted=1; - } -# endif - - - return UNZ_OK; -} - -extern int ZEXPORT unzOpenCurrentFile (unzFile file) -{ - return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL); -} - -extern int ZEXPORT unzOpenCurrentFilePassword (unzFile file, const char* password) -{ - return unzOpenCurrentFile3(file, NULL, NULL, 0, password); -} - -extern int ZEXPORT unzOpenCurrentFile2 (unzFile file, int* method, int* level, int raw) -{ - return unzOpenCurrentFile3(file, method, level, raw, NULL); -} - -/** Addition for GDAL : START */ - -extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64( unzFile file) -{ - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - s=(unz64_s*)file; - if (file==NULL) - return 0; //UNZ_PARAMERROR; - pfile_in_zip_read_info=s->pfile_in_zip_read; - if (pfile_in_zip_read_info==NULL) - return 0; //UNZ_PARAMERROR; - return pfile_in_zip_read_info->pos_in_zipfile + - pfile_in_zip_read_info->byte_before_the_zipfile; -} - -/** Addition for GDAL : END */ - -/* - Read bytes from the current file. - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ -extern int ZEXPORT unzReadCurrentFile (unzFile file, voidp buf, unsigned len) -{ - int err=UNZ_OK; - uInt iRead = 0; - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - - if (pfile_in_zip_read_info->read_buffer == NULL) - return UNZ_END_OF_LIST_OF_FILE; - if (len==0) - return 0; - - pfile_in_zip_read_info->stream.next_out = (Bytef*)buf; - - pfile_in_zip_read_info->stream.avail_out = (uInt)len; - - if ((len>pfile_in_zip_read_info->rest_read_uncompressed) && - (!(pfile_in_zip_read_info->raw))) - pfile_in_zip_read_info->stream.avail_out = - (uInt)pfile_in_zip_read_info->rest_read_uncompressed; - - if ((len>pfile_in_zip_read_info->rest_read_compressed+ - pfile_in_zip_read_info->stream.avail_in) && - (pfile_in_zip_read_info->raw)) - pfile_in_zip_read_info->stream.avail_out = - (uInt)pfile_in_zip_read_info->rest_read_compressed+ - pfile_in_zip_read_info->stream.avail_in; - - while (pfile_in_zip_read_info->stream.avail_out>0) - { - if ((pfile_in_zip_read_info->stream.avail_in==0) && - (pfile_in_zip_read_info->rest_read_compressed>0)) - { - uInt uReadThis = UNZ_BUFSIZE; - if (pfile_in_zip_read_info->rest_read_compressedrest_read_compressed; - if (uReadThis == 0) - return UNZ_EOF; - if (ZSEEK64(pfile_in_zip_read_info->z_filefunc, - pfile_in_zip_read_info->filestream, - pfile_in_zip_read_info->pos_in_zipfile + - pfile_in_zip_read_info->byte_before_the_zipfile, - ZLIB_FILEFUNC_SEEK_SET)!=0) - return UNZ_ERRNO; - if (ZREAD64(pfile_in_zip_read_info->z_filefunc, - pfile_in_zip_read_info->filestream, - pfile_in_zip_read_info->read_buffer, - uReadThis)!=uReadThis) - return UNZ_ERRNO; - - -# ifndef NOUNCRYPT - if(s->encrypted) - { - uInt i; - for(i=0;iread_buffer[i] = - zdecode(s->keys,s->pcrc_32_tab, - pfile_in_zip_read_info->read_buffer[i]); - } -# endif - - - pfile_in_zip_read_info->pos_in_zipfile += uReadThis; - - pfile_in_zip_read_info->rest_read_compressed-=uReadThis; - - pfile_in_zip_read_info->stream.next_in = - (Bytef*)pfile_in_zip_read_info->read_buffer; - pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis; - } - - if ((pfile_in_zip_read_info->compression_method==0) || (pfile_in_zip_read_info->raw)) - { - uInt uDoCopy,i ; - - if ((pfile_in_zip_read_info->stream.avail_in == 0) && - (pfile_in_zip_read_info->rest_read_compressed == 0)) - return (iRead==0) ? UNZ_EOF : iRead; - - if (pfile_in_zip_read_info->stream.avail_out < - pfile_in_zip_read_info->stream.avail_in) - uDoCopy = pfile_in_zip_read_info->stream.avail_out ; - else - uDoCopy = pfile_in_zip_read_info->stream.avail_in ; - - for (i=0;istream.next_out+i) = - *(pfile_in_zip_read_info->stream.next_in+i); - - pfile_in_zip_read_info->total_out_64 = pfile_in_zip_read_info->total_out_64 + uDoCopy; - - pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32, - pfile_in_zip_read_info->stream.next_out, - uDoCopy); - pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy; - pfile_in_zip_read_info->stream.avail_in -= uDoCopy; - pfile_in_zip_read_info->stream.avail_out -= uDoCopy; - pfile_in_zip_read_info->stream.next_out += uDoCopy; - pfile_in_zip_read_info->stream.next_in += uDoCopy; - pfile_in_zip_read_info->stream.total_out += uDoCopy; - iRead += uDoCopy; - } - else if (pfile_in_zip_read_info->compression_method==Z_BZIP2ED) - { -#ifdef HAVE_BZIP2 - uLong uTotalOutBefore,uTotalOutAfter; - const Bytef *bufBefore; - uLong uOutThis; - - pfile_in_zip_read_info->bstream.next_in = (char*)pfile_in_zip_read_info->stream.next_in; - pfile_in_zip_read_info->bstream.avail_in = pfile_in_zip_read_info->stream.avail_in; - pfile_in_zip_read_info->bstream.total_in_lo32 = pfile_in_zip_read_info->stream.total_in; - pfile_in_zip_read_info->bstream.total_in_hi32 = 0; - pfile_in_zip_read_info->bstream.next_out = (char*)pfile_in_zip_read_info->stream.next_out; - pfile_in_zip_read_info->bstream.avail_out = pfile_in_zip_read_info->stream.avail_out; - pfile_in_zip_read_info->bstream.total_out_lo32 = pfile_in_zip_read_info->stream.total_out; - pfile_in_zip_read_info->bstream.total_out_hi32 = 0; - - uTotalOutBefore = pfile_in_zip_read_info->bstream.total_out_lo32; - bufBefore = (const Bytef *)pfile_in_zip_read_info->bstream.next_out; - - err=BZ2_bzDecompress(&pfile_in_zip_read_info->bstream); - - uTotalOutAfter = pfile_in_zip_read_info->bstream.total_out_lo32; - uOutThis = uTotalOutAfter-uTotalOutBefore; - - pfile_in_zip_read_info->total_out_64 = pfile_in_zip_read_info->total_out_64 + uOutThis; - - pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32,bufBefore, (uInt)(uOutThis)); - pfile_in_zip_read_info->rest_read_uncompressed -= uOutThis; - iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); - - pfile_in_zip_read_info->stream.next_in = (Bytef*)pfile_in_zip_read_info->bstream.next_in; - pfile_in_zip_read_info->stream.avail_in = pfile_in_zip_read_info->bstream.avail_in; - pfile_in_zip_read_info->stream.total_in = pfile_in_zip_read_info->bstream.total_in_lo32; - pfile_in_zip_read_info->stream.next_out = (Bytef*)pfile_in_zip_read_info->bstream.next_out; - pfile_in_zip_read_info->stream.avail_out = pfile_in_zip_read_info->bstream.avail_out; - pfile_in_zip_read_info->stream.total_out = pfile_in_zip_read_info->bstream.total_out_lo32; - - if (err==BZ_STREAM_END) - return (iRead==0) ? UNZ_EOF : iRead; - if (err!=BZ_OK) - break; -#endif - } // end Z_BZIP2ED - else - { - ZPOS64_T uTotalOutBefore,uTotalOutAfter; - const Bytef *bufBefore; - ZPOS64_T uOutThis; - int flush=Z_SYNC_FLUSH; - - uTotalOutBefore = pfile_in_zip_read_info->stream.total_out; - bufBefore = pfile_in_zip_read_info->stream.next_out; - - /* - if ((pfile_in_zip_read_info->rest_read_uncompressed == - pfile_in_zip_read_info->stream.avail_out) && - (pfile_in_zip_read_info->rest_read_compressed == 0)) - flush = Z_FINISH; - */ - err=inflate(&pfile_in_zip_read_info->stream,flush); - - if ((err>=0) && (pfile_in_zip_read_info->stream.msg!=NULL)) - err = Z_DATA_ERROR; - - uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; - uOutThis = uTotalOutAfter-uTotalOutBefore; - - pfile_in_zip_read_info->total_out_64 = pfile_in_zip_read_info->total_out_64 + uOutThis; - - pfile_in_zip_read_info->crc32 = - crc32(pfile_in_zip_read_info->crc32,bufBefore, - (uInt)(uOutThis)); - - pfile_in_zip_read_info->rest_read_uncompressed -= - uOutThis; - - iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); - - if (err==Z_STREAM_END) - return (iRead==0) ? UNZ_EOF : iRead; - if (err!=Z_OK) - break; - } - } - - if (err==Z_OK) - return iRead; - return err; -} - - -/* - Give the current position in uncompressed data -*/ -extern z_off_t ZEXPORT unztell (unzFile file) -{ - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - return (z_off_t)pfile_in_zip_read_info->stream.total_out; -} - -extern ZPOS64_T ZEXPORT unztell64 (unzFile file) -{ - - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return (ZPOS64_T)-1; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return (ZPOS64_T)-1; - - return pfile_in_zip_read_info->total_out_64; -} - - -/* - return 1 if the end of file was reached, 0 elsewhere -*/ -extern int ZEXPORT unzeof (unzFile file) -{ - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - if (pfile_in_zip_read_info->rest_read_uncompressed == 0) - return 1; - else - return 0; -} - - - -/* -Read extra field from the current file (opened by unzOpenCurrentFile) -This is the local-header version of the extra field (sometimes, there is -more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field that can be read - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ -extern int ZEXPORT unzGetLocalExtrafield (unzFile file, voidp buf, unsigned len) -{ - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - uInt read_now; - ZPOS64_T size_to_read; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - size_to_read = (pfile_in_zip_read_info->size_local_extrafield - - pfile_in_zip_read_info->pos_local_extrafield); - - if (buf==NULL) - return (int)size_to_read; - - if (len>size_to_read) - read_now = (uInt)size_to_read; - else - read_now = (uInt)len ; - - if (read_now==0) - return 0; - - if (ZSEEK64(pfile_in_zip_read_info->z_filefunc, - pfile_in_zip_read_info->filestream, - pfile_in_zip_read_info->offset_local_extrafield + - pfile_in_zip_read_info->pos_local_extrafield, - ZLIB_FILEFUNC_SEEK_SET)!=0) - return UNZ_ERRNO; - - if (ZREAD64(pfile_in_zip_read_info->z_filefunc, - pfile_in_zip_read_info->filestream, - buf,read_now)!=read_now) - return UNZ_ERRNO; - - return (int)read_now; -} - -/* - Close the file in zip opened with unzOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ -extern int ZEXPORT unzCloseCurrentFile (unzFile file) -{ - int err=UNZ_OK; - - unz64_s* s; - file_in_zip64_read_info_s* pfile_in_zip_read_info; - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - pfile_in_zip_read_info=s->pfile_in_zip_read; - - if (pfile_in_zip_read_info==NULL) - return UNZ_PARAMERROR; - - - if ((pfile_in_zip_read_info->rest_read_uncompressed == 0) && - (!pfile_in_zip_read_info->raw)) - { - if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) - err=UNZ_CRCERROR; - } - - - TRYFREE(pfile_in_zip_read_info->read_buffer); - pfile_in_zip_read_info->read_buffer = NULL; - if (pfile_in_zip_read_info->stream_initialised == Z_DEFLATED) - inflateEnd(&pfile_in_zip_read_info->stream); -#ifdef HAVE_BZIP2 - else if (pfile_in_zip_read_info->stream_initialised == Z_BZIP2ED) - BZ2_bzDecompressEnd(&pfile_in_zip_read_info->bstream); -#endif - - - pfile_in_zip_read_info->stream_initialised = 0; - TRYFREE(pfile_in_zip_read_info); - - s->pfile_in_zip_read=NULL; - - return err; -} - - -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ -extern int ZEXPORT unzGetGlobalComment (unzFile file, char * szComment, uLong uSizeBuf) -{ - unz64_s* s; - uLong uReadThis ; - if (file==NULL) - return (int)UNZ_PARAMERROR; - s=(unz64_s*)file; - - uReadThis = uSizeBuf; - if (uReadThis>s->gi.size_comment) - uReadThis = s->gi.size_comment; - - if (ZSEEK64(s->z_filefunc,s->filestream,s->central_pos+22,ZLIB_FILEFUNC_SEEK_SET)!=0) - return UNZ_ERRNO; - - if (uReadThis>0) - { - *szComment='\0'; - if (ZREAD64(s->z_filefunc,s->filestream,szComment,uReadThis)!=uReadThis) - return UNZ_ERRNO; - } - - if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment)) - *(szComment+s->gi.size_comment)='\0'; - return (int)uReadThis; -} - -/* Additions by RX '2004 */ -extern ZPOS64_T ZEXPORT unzGetOffset64(unzFile file) -{ - unz64_s* s; - - if (file==NULL) - return 0; //UNZ_PARAMERROR; - s=(unz64_s*)file; - if (!s->current_file_ok) - return 0; - if (s->gi.number_entry != 0 && s->gi.number_entry != 0xffff) - if (s->num_file==s->gi.number_entry) - return 0; - return s->pos_in_central_dir; -} - -extern uLong ZEXPORT unzGetOffset (unzFile file) -{ - ZPOS64_T offset64; - - if (file==NULL) - return 0; //UNZ_PARAMERROR; - offset64 = unzGetOffset64(file); - return (uLong)offset64; -} - -extern int ZEXPORT unzSetOffset64(unzFile file, ZPOS64_T pos) -{ - unz64_s* s; - int err; - - if (file==NULL) - return UNZ_PARAMERROR; - s=(unz64_s*)file; - - s->pos_in_central_dir = pos; - s->num_file = s->gi.number_entry; /* hack */ - err = unz64local_GetCurrentFileInfoInternal(file,&s->cur_file_info, - &s->cur_file_info_internal, - NULL,0,NULL,0,NULL,0); - s->current_file_ok = (err == UNZ_OK); - return err; -} - -extern int ZEXPORT unzSetOffset (unzFile file, uLong pos) -{ - return unzSetOffset64(file,pos); -} diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/unzip.h b/io2d/src/3rd-party/zlib/contrib/minizip/unzip.h deleted file mode 100644 index 2104e39..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/unzip.h +++ /dev/null @@ -1,437 +0,0 @@ -/* unzip.h -- IO for uncompress .zip files using zlib - Version 1.1, February 14h, 2010 - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications of Unzip for Zip64 - Copyright (C) 2007-2008 Even Rouault - - Modifications for Zip64 support on both zip and unzip - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - - --------------------------------------------------------------------------------- - - Condition of use and distribution are the same than zlib : - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - --------------------------------------------------------------------------------- - - Changes - - See header of unzip64.c - -*/ - -#ifndef _unz64_H -#define _unz64_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#ifndef _ZLIBIOAPI_H -#include "ioapi.h" -#endif - -#ifdef HAVE_BZIP2 -#include "bzlib.h" -#endif - -#define Z_BZIP2ED 12 - -#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) -/* like the STRICT of WIN32, we define a pointer that cannot be converted - from (void*) without cast */ -typedef struct TagunzFile__ { int unused; } unzFile__; -typedef unzFile__ *unzFile; -#else -typedef voidp unzFile; -#endif - - -#define UNZ_OK (0) -#define UNZ_END_OF_LIST_OF_FILE (-100) -#define UNZ_ERRNO (Z_ERRNO) -#define UNZ_EOF (0) -#define UNZ_PARAMERROR (-102) -#define UNZ_BADZIPFILE (-103) -#define UNZ_INTERNALERROR (-104) -#define UNZ_CRCERROR (-105) - -/* tm_unz contain date/time info */ -typedef struct tm_unz_s -{ - uInt tm_sec; /* seconds after the minute - [0,59] */ - uInt tm_min; /* minutes after the hour - [0,59] */ - uInt tm_hour; /* hours since midnight - [0,23] */ - uInt tm_mday; /* day of the month - [1,31] */ - uInt tm_mon; /* months since January - [0,11] */ - uInt tm_year; /* years - [1980..2044] */ -} tm_unz; - -/* unz_global_info structure contain global data about the ZIPfile - These data comes from the end of central dir */ -typedef struct unz_global_info64_s -{ - ZPOS64_T number_entry; /* total number of entries in - the central dir on this disk */ - uLong size_comment; /* size of the global comment of the zipfile */ -} unz_global_info64; - -typedef struct unz_global_info_s -{ - uLong number_entry; /* total number of entries in - the central dir on this disk */ - uLong size_comment; /* size of the global comment of the zipfile */ -} unz_global_info; - -/* unz_file_info contain information about a file in the zipfile */ -typedef struct unz_file_info64_s -{ - uLong version; /* version made by 2 bytes */ - uLong version_needed; /* version needed to extract 2 bytes */ - uLong flag; /* general purpose bit flag 2 bytes */ - uLong compression_method; /* compression method 2 bytes */ - uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ - uLong crc; /* crc-32 4 bytes */ - ZPOS64_T compressed_size; /* compressed size 8 bytes */ - ZPOS64_T uncompressed_size; /* uncompressed size 8 bytes */ - uLong size_filename; /* filename length 2 bytes */ - uLong size_file_extra; /* extra field length 2 bytes */ - uLong size_file_comment; /* file comment length 2 bytes */ - - uLong disk_num_start; /* disk number start 2 bytes */ - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ - - tm_unz tmu_date; -} unz_file_info64; - -typedef struct unz_file_info_s -{ - uLong version; /* version made by 2 bytes */ - uLong version_needed; /* version needed to extract 2 bytes */ - uLong flag; /* general purpose bit flag 2 bytes */ - uLong compression_method; /* compression method 2 bytes */ - uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ - uLong crc; /* crc-32 4 bytes */ - uLong compressed_size; /* compressed size 4 bytes */ - uLong uncompressed_size; /* uncompressed size 4 bytes */ - uLong size_filename; /* filename length 2 bytes */ - uLong size_file_extra; /* extra field length 2 bytes */ - uLong size_file_comment; /* file comment length 2 bytes */ - - uLong disk_num_start; /* disk number start 2 bytes */ - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ - - tm_unz tmu_date; -} unz_file_info; - -extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, - const char* fileName2, - int iCaseSensitivity)); -/* - Compare two filename (fileName1,fileName2). - If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) - If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi - or strcasecmp) - If iCaseSenisivity = 0, case sensitivity is defaut of your operating system - (like 1 on Unix, 2 on Windows) -*/ - - -extern unzFile ZEXPORT unzOpen OF((const char *path)); -extern unzFile ZEXPORT unzOpen64 OF((const void *path)); -/* - Open a Zip file. path contain the full pathname (by example, - on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer - "zlib/zlib113.zip". - If the zipfile cannot be opened (file don't exist or in not valid), the - return value is NULL. - Else, the return value is a unzFile Handle, usable with other function - of this unzip package. - the "64" function take a const void* pointer, because the path is just the - value passed to the open64_file_func callback. - Under Windows, if UNICODE is defined, using fill_fopen64_filefunc, the path - is a pointer to a wide unicode string (LPCTSTR is LPCWSTR), so const char* - does not describe the reality -*/ - - -extern unzFile ZEXPORT unzOpen2 OF((const char *path, - zlib_filefunc_def* pzlib_filefunc_def)); -/* - Open a Zip file, like unzOpen, but provide a set of file low level API - for read/write the zip file (see ioapi.h) -*/ - -extern unzFile ZEXPORT unzOpen2_64 OF((const void *path, - zlib_filefunc64_def* pzlib_filefunc_def)); -/* - Open a Zip file, like unz64Open, but provide a set of file low level API - for read/write the zip file (see ioapi.h) -*/ - -extern int ZEXPORT unzClose OF((unzFile file)); -/* - Close a ZipFile opened with unzOpen. - If there is files inside the .Zip opened with unzOpenCurrentFile (see later), - these files MUST be closed with unzCloseCurrentFile before call unzClose. - return UNZ_OK if there is no problem. */ - -extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, - unz_global_info *pglobal_info)); - -extern int ZEXPORT unzGetGlobalInfo64 OF((unzFile file, - unz_global_info64 *pglobal_info)); -/* - Write info about the ZipFile in the *pglobal_info structure. - No preparation of the structure is needed - return UNZ_OK if there is no problem. */ - - -extern int ZEXPORT unzGetGlobalComment OF((unzFile file, - char *szComment, - uLong uSizeBuf)); -/* - Get the global comment string of the ZipFile, in the szComment buffer. - uSizeBuf is the size of the szComment buffer. - return the number of byte copied or an error code <0 -*/ - - -/***************************************************************************/ -/* Unzip package allow you browse the directory of the zipfile */ - -extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); -/* - Set the current file of the zipfile to the first file. - return UNZ_OK if there is no problem -*/ - -extern int ZEXPORT unzGoToNextFile OF((unzFile file)); -/* - Set the current file of the zipfile to the next file. - return UNZ_OK if there is no problem - return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. -*/ - -extern int ZEXPORT unzLocateFile OF((unzFile file, - const char *szFileName, - int iCaseSensitivity)); -/* - Try locate the file szFileName in the zipfile. - For the iCaseSensitivity signification, see unzStringFileNameCompare - - return value : - UNZ_OK if the file is found. It becomes the current file. - UNZ_END_OF_LIST_OF_FILE if the file is not found -*/ - - -/* ****************************************** */ -/* Ryan supplied functions */ -/* unz_file_info contain information about a file in the zipfile */ -typedef struct unz_file_pos_s -{ - uLong pos_in_zip_directory; /* offset in zip file directory */ - uLong num_of_file; /* # of file */ -} unz_file_pos; - -extern int ZEXPORT unzGetFilePos( - unzFile file, - unz_file_pos* file_pos); - -extern int ZEXPORT unzGoToFilePos( - unzFile file, - unz_file_pos* file_pos); - -typedef struct unz64_file_pos_s -{ - ZPOS64_T pos_in_zip_directory; /* offset in zip file directory */ - ZPOS64_T num_of_file; /* # of file */ -} unz64_file_pos; - -extern int ZEXPORT unzGetFilePos64( - unzFile file, - unz64_file_pos* file_pos); - -extern int ZEXPORT unzGoToFilePos64( - unzFile file, - const unz64_file_pos* file_pos); - -/* ****************************************** */ - -extern int ZEXPORT unzGetCurrentFileInfo64 OF((unzFile file, - unz_file_info64 *pfile_info, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); - -extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, - unz_file_info *pfile_info, - char *szFileName, - uLong fileNameBufferSize, - void *extraField, - uLong extraFieldBufferSize, - char *szComment, - uLong commentBufferSize)); -/* - Get Info about the current file - if pfile_info!=NULL, the *pfile_info structure will contain somes info about - the current file - if szFileName!=NULL, the filemane string will be copied in szFileName - (fileNameBufferSize is the size of the buffer) - if extraField!=NULL, the extra field information will be copied in extraField - (extraFieldBufferSize is the size of the buffer). - This is the Central-header version of the extra field - if szComment!=NULL, the comment string of the file will be copied in szComment - (commentBufferSize is the size of the buffer) -*/ - - -/** Addition for GDAL : START */ - -extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file)); - -/** Addition for GDAL : END */ - - -/***************************************************************************/ -/* for reading the content of the current zipfile, you can open it, read data - from it, and close it (you can close it before reading all the file) - */ - -extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); -/* - Open for reading data the current file in the zipfile. - If there is no error, the return value is UNZ_OK. -*/ - -extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file, - const char* password)); -/* - Open for reading data the current file in the zipfile. - password is a crypting password - If there is no error, the return value is UNZ_OK. -*/ - -extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file, - int* method, - int* level, - int raw)); -/* - Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) - if raw==1 - *method will receive method of compression, *level will receive level of - compression - note : you can set level parameter as NULL (if you did not want known level, - but you CANNOT set method parameter as NULL -*/ - -extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file, - int* method, - int* level, - int raw, - const char* password)); -/* - Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) - if raw==1 - *method will receive method of compression, *level will receive level of - compression - note : you can set level parameter as NULL (if you did not want known level, - but you CANNOT set method parameter as NULL -*/ - - -extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); -/* - Close the file in zip opened with unzOpenCurrentFile - Return UNZ_CRCERROR if all the file was read but the CRC is not good -*/ - -extern int ZEXPORT unzReadCurrentFile OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read bytes from the current file (opened by unzOpenCurrentFile) - buf contain buffer where data must be copied - len the size of buf. - - return the number of byte copied if somes bytes are copied - return 0 if the end of file was reached - return <0 with error code if there is an error - (UNZ_ERRNO for IO error, or zLib error for uncompress error) -*/ - -extern z_off_t ZEXPORT unztell OF((unzFile file)); - -extern ZPOS64_T ZEXPORT unztell64 OF((unzFile file)); -/* - Give the current position in uncompressed data -*/ - -extern int ZEXPORT unzeof OF((unzFile file)); -/* - return 1 if the end of file was reached, 0 elsewhere -*/ - -extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, - voidp buf, - unsigned len)); -/* - Read extra field from the current file (opened by unzOpenCurrentFile) - This is the local-header version of the extra field (sometimes, there is - more info in the local-header version than in the central-header) - - if buf==NULL, it return the size of the local extra field - - if buf!=NULL, len is the size of the buffer, the extra header is copied in - buf. - the return value is the number of bytes copied in buf, or (if <0) - the error code -*/ - -/***************************************************************************/ - -/* Get the current file offset */ -extern ZPOS64_T ZEXPORT unzGetOffset64 (unzFile file); -extern uLong ZEXPORT unzGetOffset (unzFile file); - -/* Set the current file offset */ -extern int ZEXPORT unzSetOffset64 (unzFile file, ZPOS64_T pos); -extern int ZEXPORT unzSetOffset (unzFile file, uLong pos); - - - -#ifdef __cplusplus -} -#endif - -#endif /* _unz64_H */ diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/zip.c b/io2d/src/3rd-party/zlib/contrib/minizip/zip.c deleted file mode 100644 index ea54853..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/zip.c +++ /dev/null @@ -1,2007 +0,0 @@ -/* zip.c -- IO on .zip files using zlib - Version 1.1, February 14h, 2010 - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - - Changes - Oct-2009 - Mathias Svensson - Remove old C style function prototypes - Oct-2009 - Mathias Svensson - Added Zip64 Support when creating new file archives - Oct-2009 - Mathias Svensson - Did some code cleanup and refactoring to get better overview of some functions. - Oct-2009 - Mathias Svensson - Added zipRemoveExtraInfoBlock to strip extra field data from its ZIP64 data - It is used when recreting zip archive with RAW when deleting items from a zip. - ZIP64 data is automaticly added to items that needs it, and existing ZIP64 data need to be removed. - Oct-2009 - Mathias Svensson - Added support for BZIP2 as compression mode (bzip2 lib is required) - Jan-2010 - back to unzip and minizip 1.0 name scheme, with compatibility layer - -*/ - - -#include -#include -#include -#include -#include "zlib.h" -#include "zip.h" - -#ifdef STDC -# include -# include -# include -#endif -#ifdef NO_ERRNO_H - extern int errno; -#else -# include -#endif - - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - -#ifndef VERSIONMADEBY -# define VERSIONMADEBY (0x0) /* platform depedent */ -#endif - -#ifndef Z_BUFSIZE -#define Z_BUFSIZE (64*1024) //(16384) -#endif - -#ifndef Z_MAXFILENAMEINZIP -#define Z_MAXFILENAMEINZIP (256) -#endif - -#ifndef ALLOC -# define ALLOC(size) (malloc(size)) -#endif -#ifndef TRYFREE -# define TRYFREE(p) {if (p) free(p);} -#endif - -/* -#define SIZECENTRALDIRITEM (0x2e) -#define SIZEZIPLOCALHEADER (0x1e) -*/ - -/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ - - -// NOT sure that this work on ALL platform -#define MAKEULONG64(a, b) ((ZPOS64_T)(((unsigned long)(a)) | ((ZPOS64_T)((unsigned long)(b))) << 32)) - -#ifndef SEEK_CUR -#define SEEK_CUR 1 -#endif - -#ifndef SEEK_END -#define SEEK_END 2 -#endif - -#ifndef SEEK_SET -#define SEEK_SET 0 -#endif - -#ifndef DEF_MEM_LEVEL -#if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -#else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -#endif -#endif -const char zip_copyright[] =" zip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; - - -#define SIZEDATA_INDATABLOCK (4096-(4*4)) - -#define LOCALHEADERMAGIC (0x04034b50) -#define CENTRALHEADERMAGIC (0x02014b50) -#define ENDHEADERMAGIC (0x06054b50) -#define ZIP64ENDHEADERMAGIC (0x6064b50) -#define ZIP64ENDLOCHEADERMAGIC (0x7064b50) - -#define FLAG_LOCALHEADER_OFFSET (0x06) -#define CRC_LOCALHEADER_OFFSET (0x0e) - -#define SIZECENTRALHEADER (0x2e) /* 46 */ - -typedef struct linkedlist_datablock_internal_s -{ - struct linkedlist_datablock_internal_s* next_datablock; - uLong avail_in_this_block; - uLong filled_in_this_block; - uLong unused; /* for future use and alignement */ - unsigned char data[SIZEDATA_INDATABLOCK]; -} linkedlist_datablock_internal; - -typedef struct linkedlist_data_s -{ - linkedlist_datablock_internal* first_block; - linkedlist_datablock_internal* last_block; -} linkedlist_data; - - -typedef struct -{ - z_stream stream; /* zLib stream structure for inflate */ -#ifdef HAVE_BZIP2 - bz_stream bstream; /* bzLib stream structure for bziped */ -#endif - - int stream_initialised; /* 1 is stream is initialised */ - uInt pos_in_buffered_data; /* last written byte in buffered_data */ - - ZPOS64_T pos_local_header; /* offset of the local header of the file - currenty writing */ - char* central_header; /* central header data for the current file */ - uLong size_centralExtra; - uLong size_centralheader; /* size of the central header for cur file */ - uLong size_centralExtraFree; /* Extra bytes allocated to the centralheader but that are not used */ - uLong flag; /* flag of the file currently writing */ - - int method; /* compression method of file currenty wr.*/ - int raw; /* 1 for directly writing raw data */ - Byte buffered_data[Z_BUFSIZE];/* buffer contain compressed data to be writ*/ - uLong dosDate; - uLong crc32; - int encrypt; - int zip64; /* Add ZIP64 extened information in the extra field */ - ZPOS64_T pos_zip64extrainfo; - ZPOS64_T totalCompressedData; - ZPOS64_T totalUncompressedData; -#ifndef NOCRYPT - unsigned long keys[3]; /* keys defining the pseudo-random sequence */ - const z_crc_t* pcrc_32_tab; - int crypt_header_size; -#endif -} curfile64_info; - -typedef struct -{ - zlib_filefunc64_32_def z_filefunc; - voidpf filestream; /* io structore of the zipfile */ - linkedlist_data central_dir;/* datablock with central dir in construction*/ - int in_opened_file_inzip; /* 1 if a file in the zip is currently writ.*/ - curfile64_info ci; /* info on the file curretly writing */ - - ZPOS64_T begin_pos; /* position of the beginning of the zipfile */ - ZPOS64_T add_position_when_writting_offset; - ZPOS64_T number_entry; - -#ifndef NO_ADDFILEINEXISTINGZIP - char *globalcomment; -#endif - -} zip64_internal; - - -#ifndef NOCRYPT -#define INCLUDECRYPTINGCODE_IFCRYPTALLOWED -#include "crypt.h" -#endif - -local linkedlist_datablock_internal* allocate_new_datablock() -{ - linkedlist_datablock_internal* ldi; - ldi = (linkedlist_datablock_internal*) - ALLOC(sizeof(linkedlist_datablock_internal)); - if (ldi!=NULL) - { - ldi->next_datablock = NULL ; - ldi->filled_in_this_block = 0 ; - ldi->avail_in_this_block = SIZEDATA_INDATABLOCK ; - } - return ldi; -} - -local void free_datablock(linkedlist_datablock_internal* ldi) -{ - while (ldi!=NULL) - { - linkedlist_datablock_internal* ldinext = ldi->next_datablock; - TRYFREE(ldi); - ldi = ldinext; - } -} - -local void init_linkedlist(linkedlist_data* ll) -{ - ll->first_block = ll->last_block = NULL; -} - -local void free_linkedlist(linkedlist_data* ll) -{ - free_datablock(ll->first_block); - ll->first_block = ll->last_block = NULL; -} - - -local int add_data_in_datablock(linkedlist_data* ll, const void* buf, uLong len) -{ - linkedlist_datablock_internal* ldi; - const unsigned char* from_copy; - - if (ll==NULL) - return ZIP_INTERNALERROR; - - if (ll->last_block == NULL) - { - ll->first_block = ll->last_block = allocate_new_datablock(); - if (ll->first_block == NULL) - return ZIP_INTERNALERROR; - } - - ldi = ll->last_block; - from_copy = (unsigned char*)buf; - - while (len>0) - { - uInt copy_this; - uInt i; - unsigned char* to_copy; - - if (ldi->avail_in_this_block==0) - { - ldi->next_datablock = allocate_new_datablock(); - if (ldi->next_datablock == NULL) - return ZIP_INTERNALERROR; - ldi = ldi->next_datablock ; - ll->last_block = ldi; - } - - if (ldi->avail_in_this_block < len) - copy_this = (uInt)ldi->avail_in_this_block; - else - copy_this = (uInt)len; - - to_copy = &(ldi->data[ldi->filled_in_this_block]); - - for (i=0;ifilled_in_this_block += copy_this; - ldi->avail_in_this_block -= copy_this; - from_copy += copy_this ; - len -= copy_this; - } - return ZIP_OK; -} - - - -/****************************************************************************/ - -#ifndef NO_ADDFILEINEXISTINGZIP -/* =========================================================================== - Inputs a long in LSB order to the given file - nbByte == 1, 2 ,4 or 8 (byte, short or long, ZPOS64_T) -*/ - -local int zip64local_putValue OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte)); -local int zip64local_putValue (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte) -{ - unsigned char buf[8]; - int n; - for (n = 0; n < nbByte; n++) - { - buf[n] = (unsigned char)(x & 0xff); - x >>= 8; - } - if (x != 0) - { /* data overflow - hack for ZIP64 (X Roche) */ - for (n = 0; n < nbByte; n++) - { - buf[n] = 0xff; - } - } - - if (ZWRITE64(*pzlib_filefunc_def,filestream,buf,nbByte)!=(uLong)nbByte) - return ZIP_ERRNO; - else - return ZIP_OK; -} - -local void zip64local_putValue_inmemory OF((void* dest, ZPOS64_T x, int nbByte)); -local void zip64local_putValue_inmemory (void* dest, ZPOS64_T x, int nbByte) -{ - unsigned char* buf=(unsigned char*)dest; - int n; - for (n = 0; n < nbByte; n++) { - buf[n] = (unsigned char)(x & 0xff); - x >>= 8; - } - - if (x != 0) - { /* data overflow - hack for ZIP64 */ - for (n = 0; n < nbByte; n++) - { - buf[n] = 0xff; - } - } -} - -/****************************************************************************/ - - -local uLong zip64local_TmzDateToDosDate(const tm_zip* ptm) -{ - uLong year = (uLong)ptm->tm_year; - if (year>=1980) - year-=1980; - else if (year>=80) - year-=80; - return - (uLong) (((ptm->tm_mday) + (32 * (ptm->tm_mon+1)) + (512 * year)) << 16) | - ((ptm->tm_sec/2) + (32* ptm->tm_min) + (2048 * (uLong)ptm->tm_hour)); -} - - -/****************************************************************************/ - -local int zip64local_getByte OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi)); - -local int zip64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def,voidpf filestream,int* pi) -{ - unsigned char c; - int err = (int)ZREAD64(*pzlib_filefunc_def,filestream,&c,1); - if (err==1) - { - *pi = (int)c; - return ZIP_OK; - } - else - { - if (ZERROR64(*pzlib_filefunc_def,filestream)) - return ZIP_ERRNO; - else - return ZIP_EOF; - } -} - - -/* =========================================================================== - Reads a long in LSB order from the given gz_stream. Sets -*/ -local int zip64local_getShort OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); - -local int zip64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX) -{ - uLong x ; - int i = 0; - int err; - - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (uLong)i; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<8; - - if (err==ZIP_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int zip64local_getLong OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); - -local int zip64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX) -{ - uLong x ; - int i = 0; - int err; - - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (uLong)i; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<8; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<16; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((uLong)i)<<24; - - if (err==ZIP_OK) - *pX = x; - else - *pX = 0; - return err; -} - -local int zip64local_getLong64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX)); - - -local int zip64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX) -{ - ZPOS64_T x; - int i = 0; - int err; - - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x = (ZPOS64_T)i; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<8; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<16; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<24; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<32; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<40; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<48; - - if (err==ZIP_OK) - err = zip64local_getByte(pzlib_filefunc_def,filestream,&i); - x += ((ZPOS64_T)i)<<56; - - if (err==ZIP_OK) - *pX = x; - else - *pX = 0; - - return err; -} - -#ifndef BUFREADCOMMENT -#define BUFREADCOMMENT (0x400) -#endif -/* - Locate the Central directory of a zipfile (at the end, just before - the global comment) -*/ -local ZPOS64_T zip64local_SearchCentralDir OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)); - -local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) -{ - unsigned char* buf; - ZPOS64_T uSizeFile; - ZPOS64_T uBackRead; - ZPOS64_T uMaxBack=0xffff; /* maximum size of global comment */ - ZPOS64_T uPosFound=0; - - if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) - return 0; - - - uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackReaduMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uLong)(uSizeFile-uReadPos); - if (ZSEEK64(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) - break; - - if (ZREAD64(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) - break; - - for (i=(int)uReadSize-3; (i--)>0;) - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && - ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) - { - uPosFound = uReadPos+i; - break; - } - - if (uPosFound!=0) - break; - } - TRYFREE(buf); - return uPosFound; -} - -/* -Locate the End of Zip64 Central directory locator and from there find the CD of a zipfile (at the end, just before -the global comment) -*/ -local ZPOS64_T zip64local_SearchCentralDir64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)); - -local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) -{ - unsigned char* buf; - ZPOS64_T uSizeFile; - ZPOS64_T uBackRead; - ZPOS64_T uMaxBack=0xffff; /* maximum size of global comment */ - ZPOS64_T uPosFound=0; - uLong uL; - ZPOS64_T relativeOffset; - - if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) - return 0; - - uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream); - - if (uMaxBack>uSizeFile) - uMaxBack = uSizeFile; - - buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); - if (buf==NULL) - return 0; - - uBackRead = 4; - while (uBackReaduMaxBack) - uBackRead = uMaxBack; - else - uBackRead+=BUFREADCOMMENT; - uReadPos = uSizeFile-uBackRead ; - - uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? - (BUFREADCOMMENT+4) : (uLong)(uSizeFile-uReadPos); - if (ZSEEK64(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) - break; - - if (ZREAD64(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) - break; - - for (i=(int)uReadSize-3; (i--)>0;) - { - // Signature "0x07064b50" Zip64 end of central directory locater - if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && ((*(buf+i+2))==0x06) && ((*(buf+i+3))==0x07)) - { - uPosFound = uReadPos+i; - break; - } - } - - if (uPosFound!=0) - break; - } - - TRYFREE(buf); - if (uPosFound == 0) - return 0; - - /* Zip64 end of central directory locator */ - if (ZSEEK64(*pzlib_filefunc_def,filestream, uPosFound,ZLIB_FILEFUNC_SEEK_SET)!=0) - return 0; - - /* the signature, already checked */ - if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK) - return 0; - - /* number of the disk with the start of the zip64 end of central directory */ - if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK) - return 0; - if (uL != 0) - return 0; - - /* relative offset of the zip64 end of central directory record */ - if (zip64local_getLong64(pzlib_filefunc_def,filestream,&relativeOffset)!=ZIP_OK) - return 0; - - /* total number of disks */ - if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK) - return 0; - if (uL != 1) - return 0; - - /* Goto Zip64 end of central directory record */ - if (ZSEEK64(*pzlib_filefunc_def,filestream, relativeOffset,ZLIB_FILEFUNC_SEEK_SET)!=0) - return 0; - - /* the signature */ - if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK) - return 0; - - if (uL != 0x06064b50) // signature of 'Zip64 end of central directory' - return 0; - - return relativeOffset; -} - -int LoadCentralDirectoryRecord(zip64_internal* pziinit) -{ - int err=ZIP_OK; - ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ - - ZPOS64_T size_central_dir; /* size of the central directory */ - ZPOS64_T offset_central_dir; /* offset of start of central directory */ - ZPOS64_T central_pos; - uLong uL; - - uLong number_disk; /* number of the current dist, used for - spaning ZIP, unsupported, always 0*/ - uLong number_disk_with_CD; /* number the the disk with central dir, used - for spaning ZIP, unsupported, always 0*/ - ZPOS64_T number_entry; - ZPOS64_T number_entry_CD; /* total number of entries in - the central dir - (same than number_entry on nospan) */ - uLong VersionMadeBy; - uLong VersionNeeded; - uLong size_comment; - - int hasZIP64Record = 0; - - // check first if we find a ZIP64 record - central_pos = zip64local_SearchCentralDir64(&pziinit->z_filefunc,pziinit->filestream); - if(central_pos > 0) - { - hasZIP64Record = 1; - } - else if(central_pos == 0) - { - central_pos = zip64local_SearchCentralDir(&pziinit->z_filefunc,pziinit->filestream); - } - -/* disable to allow appending to empty ZIP archive - if (central_pos==0) - err=ZIP_ERRNO; -*/ - - if(hasZIP64Record) - { - ZPOS64_T sizeEndOfCentralDirectory; - if (ZSEEK64(pziinit->z_filefunc, pziinit->filestream, central_pos, ZLIB_FILEFUNC_SEEK_SET) != 0) - err=ZIP_ERRNO; - - /* the signature, already checked */ - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream,&uL)!=ZIP_OK) - err=ZIP_ERRNO; - - /* size of zip64 end of central directory record */ - if (zip64local_getLong64(&pziinit->z_filefunc, pziinit->filestream, &sizeEndOfCentralDirectory)!=ZIP_OK) - err=ZIP_ERRNO; - - /* version made by */ - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream, &VersionMadeBy)!=ZIP_OK) - err=ZIP_ERRNO; - - /* version needed to extract */ - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream, &VersionNeeded)!=ZIP_OK) - err=ZIP_ERRNO; - - /* number of this disk */ - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream,&number_disk)!=ZIP_OK) - err=ZIP_ERRNO; - - /* number of the disk with the start of the central directory */ - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream,&number_disk_with_CD)!=ZIP_OK) - err=ZIP_ERRNO; - - /* total number of entries in the central directory on this disk */ - if (zip64local_getLong64(&pziinit->z_filefunc, pziinit->filestream, &number_entry)!=ZIP_OK) - err=ZIP_ERRNO; - - /* total number of entries in the central directory */ - if (zip64local_getLong64(&pziinit->z_filefunc, pziinit->filestream,&number_entry_CD)!=ZIP_OK) - err=ZIP_ERRNO; - - if ((number_entry_CD!=number_entry) || (number_disk_with_CD!=0) || (number_disk!=0)) - err=ZIP_BADZIPFILE; - - /* size of the central directory */ - if (zip64local_getLong64(&pziinit->z_filefunc, pziinit->filestream,&size_central_dir)!=ZIP_OK) - err=ZIP_ERRNO; - - /* offset of start of central directory with respect to the - starting disk number */ - if (zip64local_getLong64(&pziinit->z_filefunc, pziinit->filestream,&offset_central_dir)!=ZIP_OK) - err=ZIP_ERRNO; - - // TODO.. - // read the comment from the standard central header. - size_comment = 0; - } - else - { - // Read End of central Directory info - if (ZSEEK64(pziinit->z_filefunc, pziinit->filestream, central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0) - err=ZIP_ERRNO; - - /* the signature, already checked */ - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream,&uL)!=ZIP_OK) - err=ZIP_ERRNO; - - /* number of this disk */ - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream,&number_disk)!=ZIP_OK) - err=ZIP_ERRNO; - - /* number of the disk with the start of the central directory */ - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream,&number_disk_with_CD)!=ZIP_OK) - err=ZIP_ERRNO; - - /* total number of entries in the central dir on this disk */ - number_entry = 0; - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream, &uL)!=ZIP_OK) - err=ZIP_ERRNO; - else - number_entry = uL; - - /* total number of entries in the central dir */ - number_entry_CD = 0; - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream, &uL)!=ZIP_OK) - err=ZIP_ERRNO; - else - number_entry_CD = uL; - - if ((number_entry_CD!=number_entry) || (number_disk_with_CD!=0) || (number_disk!=0)) - err=ZIP_BADZIPFILE; - - /* size of the central directory */ - size_central_dir = 0; - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream, &uL)!=ZIP_OK) - err=ZIP_ERRNO; - else - size_central_dir = uL; - - /* offset of start of central directory with respect to the starting disk number */ - offset_central_dir = 0; - if (zip64local_getLong(&pziinit->z_filefunc, pziinit->filestream, &uL)!=ZIP_OK) - err=ZIP_ERRNO; - else - offset_central_dir = uL; - - - /* zipfile global comment length */ - if (zip64local_getShort(&pziinit->z_filefunc, pziinit->filestream, &size_comment)!=ZIP_OK) - err=ZIP_ERRNO; - } - - if ((central_posz_filefunc, pziinit->filestream); - return ZIP_ERRNO; - } - - if (size_comment>0) - { - pziinit->globalcomment = (char*)ALLOC(size_comment+1); - if (pziinit->globalcomment) - { - size_comment = ZREAD64(pziinit->z_filefunc, pziinit->filestream, pziinit->globalcomment,size_comment); - pziinit->globalcomment[size_comment]=0; - } - } - - byte_before_the_zipfile = central_pos - (offset_central_dir+size_central_dir); - pziinit->add_position_when_writting_offset = byte_before_the_zipfile; - - { - ZPOS64_T size_central_dir_to_read = size_central_dir; - size_t buf_size = SIZEDATA_INDATABLOCK; - void* buf_read = (void*)ALLOC(buf_size); - if (ZSEEK64(pziinit->z_filefunc, pziinit->filestream, offset_central_dir + byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) - err=ZIP_ERRNO; - - while ((size_central_dir_to_read>0) && (err==ZIP_OK)) - { - ZPOS64_T read_this = SIZEDATA_INDATABLOCK; - if (read_this > size_central_dir_to_read) - read_this = size_central_dir_to_read; - - if (ZREAD64(pziinit->z_filefunc, pziinit->filestream,buf_read,(uLong)read_this) != read_this) - err=ZIP_ERRNO; - - if (err==ZIP_OK) - err = add_data_in_datablock(&pziinit->central_dir,buf_read, (uLong)read_this); - - size_central_dir_to_read-=read_this; - } - TRYFREE(buf_read); - } - pziinit->begin_pos = byte_before_the_zipfile; - pziinit->number_entry = number_entry_CD; - - if (ZSEEK64(pziinit->z_filefunc, pziinit->filestream, offset_central_dir+byte_before_the_zipfile,ZLIB_FILEFUNC_SEEK_SET) != 0) - err=ZIP_ERRNO; - - return err; -} - - -#endif /* !NO_ADDFILEINEXISTINGZIP*/ - - -/************************************************************/ -extern zipFile ZEXPORT zipOpen3 (const void *pathname, int append, zipcharpc* globalcomment, zlib_filefunc64_32_def* pzlib_filefunc64_32_def) -{ - zip64_internal ziinit; - zip64_internal* zi; - int err=ZIP_OK; - - ziinit.z_filefunc.zseek32_file = NULL; - ziinit.z_filefunc.ztell32_file = NULL; - if (pzlib_filefunc64_32_def==NULL) - fill_fopen64_filefunc(&ziinit.z_filefunc.zfile_func64); - else - ziinit.z_filefunc = *pzlib_filefunc64_32_def; - - ziinit.filestream = ZOPEN64(ziinit.z_filefunc, - pathname, - (append == APPEND_STATUS_CREATE) ? - (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_CREATE) : - (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_EXISTING)); - - if (ziinit.filestream == NULL) - return NULL; - - if (append == APPEND_STATUS_CREATEAFTER) - ZSEEK64(ziinit.z_filefunc,ziinit.filestream,0,SEEK_END); - - ziinit.begin_pos = ZTELL64(ziinit.z_filefunc,ziinit.filestream); - ziinit.in_opened_file_inzip = 0; - ziinit.ci.stream_initialised = 0; - ziinit.number_entry = 0; - ziinit.add_position_when_writting_offset = 0; - init_linkedlist(&(ziinit.central_dir)); - - - - zi = (zip64_internal*)ALLOC(sizeof(zip64_internal)); - if (zi==NULL) - { - ZCLOSE64(ziinit.z_filefunc,ziinit.filestream); - return NULL; - } - - /* now we add file in a zipfile */ -# ifndef NO_ADDFILEINEXISTINGZIP - ziinit.globalcomment = NULL; - if (append == APPEND_STATUS_ADDINZIP) - { - // Read and Cache Central Directory Records - err = LoadCentralDirectoryRecord(&ziinit); - } - - if (globalcomment) - { - *globalcomment = ziinit.globalcomment; - } -# endif /* !NO_ADDFILEINEXISTINGZIP*/ - - if (err != ZIP_OK) - { -# ifndef NO_ADDFILEINEXISTINGZIP - TRYFREE(ziinit.globalcomment); -# endif /* !NO_ADDFILEINEXISTINGZIP*/ - TRYFREE(zi); - return NULL; - } - else - { - *zi = ziinit; - return (zipFile)zi; - } -} - -extern zipFile ZEXPORT zipOpen2 (const char *pathname, int append, zipcharpc* globalcomment, zlib_filefunc_def* pzlib_filefunc32_def) -{ - if (pzlib_filefunc32_def != NULL) - { - zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; - fill_zlib_filefunc64_32_def_from_filefunc32(&zlib_filefunc64_32_def_fill,pzlib_filefunc32_def); - return zipOpen3(pathname, append, globalcomment, &zlib_filefunc64_32_def_fill); - } - else - return zipOpen3(pathname, append, globalcomment, NULL); -} - -extern zipFile ZEXPORT zipOpen2_64 (const void *pathname, int append, zipcharpc* globalcomment, zlib_filefunc64_def* pzlib_filefunc_def) -{ - if (pzlib_filefunc_def != NULL) - { - zlib_filefunc64_32_def zlib_filefunc64_32_def_fill; - zlib_filefunc64_32_def_fill.zfile_func64 = *pzlib_filefunc_def; - zlib_filefunc64_32_def_fill.ztell32_file = NULL; - zlib_filefunc64_32_def_fill.zseek32_file = NULL; - return zipOpen3(pathname, append, globalcomment, &zlib_filefunc64_32_def_fill); - } - else - return zipOpen3(pathname, append, globalcomment, NULL); -} - - - -extern zipFile ZEXPORT zipOpen (const char* pathname, int append) -{ - return zipOpen3((const void*)pathname,append,NULL,NULL); -} - -extern zipFile ZEXPORT zipOpen64 (const void* pathname, int append) -{ - return zipOpen3(pathname,append,NULL,NULL); -} - -int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_extrafield_local, const void* extrafield_local) -{ - /* write the local header */ - int err; - uInt size_filename = (uInt)strlen(filename); - uInt size_extrafield = size_extrafield_local; - - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)LOCALHEADERMAGIC, 4); - - if (err==ZIP_OK) - { - if(zi->ci.zip64) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)45,2);/* version needed to extract */ - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)20,2);/* version needed to extract */ - } - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.flag,2); - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.method,2); - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.dosDate,4); - - // CRC / Compressed size / Uncompressed size will be filled in later and rewritten later - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* crc 32, unknown */ - if (err==ZIP_OK) - { - if(zi->ci.zip64) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xFFFFFFFF,4); /* compressed size, unknown */ - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* compressed size, unknown */ - } - if (err==ZIP_OK) - { - if(zi->ci.zip64) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xFFFFFFFF,4); /* uncompressed size, unknown */ - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* uncompressed size, unknown */ - } - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_filename,2); - - if(zi->ci.zip64) - { - size_extrafield += 20; - } - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_extrafield,2); - - if ((err==ZIP_OK) && (size_filename > 0)) - { - if (ZWRITE64(zi->z_filefunc,zi->filestream,filename,size_filename)!=size_filename) - err = ZIP_ERRNO; - } - - if ((err==ZIP_OK) && (size_extrafield_local > 0)) - { - if (ZWRITE64(zi->z_filefunc, zi->filestream, extrafield_local, size_extrafield_local) != size_extrafield_local) - err = ZIP_ERRNO; - } - - - if ((err==ZIP_OK) && (zi->ci.zip64)) - { - // write the Zip64 extended info - short HeaderID = 1; - short DataSize = 16; - ZPOS64_T CompressedSize = 0; - ZPOS64_T UncompressedSize = 0; - - // Remember position of Zip64 extended info for the local file header. (needed when we update size after done with file) - zi->ci.pos_zip64extrainfo = ZTELL64(zi->z_filefunc,zi->filestream); - - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)HeaderID,2); - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)DataSize,2); - - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)UncompressedSize,8); - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)CompressedSize,8); - } - - return err; -} - -/* - NOTE. - When writing RAW the ZIP64 extended information in extrafield_local and extrafield_global needs to be stripped - before calling this function it can be done with zipRemoveExtraInfoBlock - - It is not done here because then we need to realloc a new buffer since parameters are 'const' and I want to minimize - unnecessary allocations. - */ -extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw, - int windowBits,int memLevel, int strategy, - const char* password, uLong crcForCrypting, - uLong versionMadeBy, uLong flagBase, int zip64) -{ - zip64_internal* zi; - uInt size_filename; - uInt size_comment; - uInt i; - int err = ZIP_OK; - -# ifdef NOCRYPT - (crcForCrypting); - if (password != NULL) - return ZIP_PARAMERROR; -# endif - - if (file == NULL) - return ZIP_PARAMERROR; - -#ifdef HAVE_BZIP2 - if ((method!=0) && (method!=Z_DEFLATED) && (method!=Z_BZIP2ED)) - return ZIP_PARAMERROR; -#else - if ((method!=0) && (method!=Z_DEFLATED)) - return ZIP_PARAMERROR; -#endif - - zi = (zip64_internal*)file; - - if (zi->in_opened_file_inzip == 1) - { - err = zipCloseFileInZip (file); - if (err != ZIP_OK) - return err; - } - - if (filename==NULL) - filename="-"; - - if (comment==NULL) - size_comment = 0; - else - size_comment = (uInt)strlen(comment); - - size_filename = (uInt)strlen(filename); - - if (zipfi == NULL) - zi->ci.dosDate = 0; - else - { - if (zipfi->dosDate != 0) - zi->ci.dosDate = zipfi->dosDate; - else - zi->ci.dosDate = zip64local_TmzDateToDosDate(&zipfi->tmz_date); - } - - zi->ci.flag = flagBase; - if ((level==8) || (level==9)) - zi->ci.flag |= 2; - if (level==2) - zi->ci.flag |= 4; - if (level==1) - zi->ci.flag |= 6; - if (password != NULL) - zi->ci.flag |= 1; - - zi->ci.crc32 = 0; - zi->ci.method = method; - zi->ci.encrypt = 0; - zi->ci.stream_initialised = 0; - zi->ci.pos_in_buffered_data = 0; - zi->ci.raw = raw; - zi->ci.pos_local_header = ZTELL64(zi->z_filefunc,zi->filestream); - - zi->ci.size_centralheader = SIZECENTRALHEADER + size_filename + size_extrafield_global + size_comment; - zi->ci.size_centralExtraFree = 32; // Extra space we have reserved in case we need to add ZIP64 extra info data - - zi->ci.central_header = (char*)ALLOC((uInt)zi->ci.size_centralheader + zi->ci.size_centralExtraFree); - - zi->ci.size_centralExtra = size_extrafield_global; - zip64local_putValue_inmemory(zi->ci.central_header,(uLong)CENTRALHEADERMAGIC,4); - /* version info */ - zip64local_putValue_inmemory(zi->ci.central_header+4,(uLong)versionMadeBy,2); - zip64local_putValue_inmemory(zi->ci.central_header+6,(uLong)20,2); - zip64local_putValue_inmemory(zi->ci.central_header+8,(uLong)zi->ci.flag,2); - zip64local_putValue_inmemory(zi->ci.central_header+10,(uLong)zi->ci.method,2); - zip64local_putValue_inmemory(zi->ci.central_header+12,(uLong)zi->ci.dosDate,4); - zip64local_putValue_inmemory(zi->ci.central_header+16,(uLong)0,4); /*crc*/ - zip64local_putValue_inmemory(zi->ci.central_header+20,(uLong)0,4); /*compr size*/ - zip64local_putValue_inmemory(zi->ci.central_header+24,(uLong)0,4); /*uncompr size*/ - zip64local_putValue_inmemory(zi->ci.central_header+28,(uLong)size_filename,2); - zip64local_putValue_inmemory(zi->ci.central_header+30,(uLong)size_extrafield_global,2); - zip64local_putValue_inmemory(zi->ci.central_header+32,(uLong)size_comment,2); - zip64local_putValue_inmemory(zi->ci.central_header+34,(uLong)0,2); /*disk nm start*/ - - if (zipfi==NULL) - zip64local_putValue_inmemory(zi->ci.central_header+36,(uLong)0,2); - else - zip64local_putValue_inmemory(zi->ci.central_header+36,(uLong)zipfi->internal_fa,2); - - if (zipfi==NULL) - zip64local_putValue_inmemory(zi->ci.central_header+38,(uLong)0,4); - else - zip64local_putValue_inmemory(zi->ci.central_header+38,(uLong)zipfi->external_fa,4); - - if(zi->ci.pos_local_header >= 0xffffffff) - zip64local_putValue_inmemory(zi->ci.central_header+42,(uLong)0xffffffff,4); - else - zip64local_putValue_inmemory(zi->ci.central_header+42,(uLong)zi->ci.pos_local_header - zi->add_position_when_writting_offset,4); - - for (i=0;ici.central_header+SIZECENTRALHEADER+i) = *(filename+i); - - for (i=0;ici.central_header+SIZECENTRALHEADER+size_filename+i) = - *(((const char*)extrafield_global)+i); - - for (i=0;ici.central_header+SIZECENTRALHEADER+size_filename+ - size_extrafield_global+i) = *(comment+i); - if (zi->ci.central_header == NULL) - return ZIP_INTERNALERROR; - - zi->ci.zip64 = zip64; - zi->ci.totalCompressedData = 0; - zi->ci.totalUncompressedData = 0; - zi->ci.pos_zip64extrainfo = 0; - - err = Write_LocalFileHeader(zi, filename, size_extrafield_local, extrafield_local); - -#ifdef HAVE_BZIP2 - zi->ci.bstream.avail_in = (uInt)0; - zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.bstream.next_out = (char*)zi->ci.buffered_data; - zi->ci.bstream.total_in_hi32 = 0; - zi->ci.bstream.total_in_lo32 = 0; - zi->ci.bstream.total_out_hi32 = 0; - zi->ci.bstream.total_out_lo32 = 0; -#endif - - zi->ci.stream.avail_in = (uInt)0; - zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.stream.next_out = zi->ci.buffered_data; - zi->ci.stream.total_in = 0; - zi->ci.stream.total_out = 0; - zi->ci.stream.data_type = Z_BINARY; - -#ifdef HAVE_BZIP2 - if ((err==ZIP_OK) && (zi->ci.method == Z_DEFLATED || zi->ci.method == Z_BZIP2ED) && (!zi->ci.raw)) -#else - if ((err==ZIP_OK) && (zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) -#endif - { - if(zi->ci.method == Z_DEFLATED) - { - zi->ci.stream.zalloc = (alloc_func)0; - zi->ci.stream.zfree = (free_func)0; - zi->ci.stream.opaque = (voidpf)0; - - if (windowBits>0) - windowBits = -windowBits; - - err = deflateInit2(&zi->ci.stream, level, Z_DEFLATED, windowBits, memLevel, strategy); - - if (err==Z_OK) - zi->ci.stream_initialised = Z_DEFLATED; - } - else if(zi->ci.method == Z_BZIP2ED) - { -#ifdef HAVE_BZIP2 - // Init BZip stuff here - zi->ci.bstream.bzalloc = 0; - zi->ci.bstream.bzfree = 0; - zi->ci.bstream.opaque = (voidpf)0; - - err = BZ2_bzCompressInit(&zi->ci.bstream, level, 0,35); - if(err == BZ_OK) - zi->ci.stream_initialised = Z_BZIP2ED; -#endif - } - - } - -# ifndef NOCRYPT - zi->ci.crypt_header_size = 0; - if ((err==Z_OK) && (password != NULL)) - { - unsigned char bufHead[RAND_HEAD_LEN]; - unsigned int sizeHead; - zi->ci.encrypt = 1; - zi->ci.pcrc_32_tab = get_crc_table(); - /*init_keys(password,zi->ci.keys,zi->ci.pcrc_32_tab);*/ - - sizeHead=crypthead(password,bufHead,RAND_HEAD_LEN,zi->ci.keys,zi->ci.pcrc_32_tab,crcForCrypting); - zi->ci.crypt_header_size = sizeHead; - - if (ZWRITE64(zi->z_filefunc,zi->filestream,bufHead,sizeHead) != sizeHead) - err = ZIP_ERRNO; - } -# endif - - if (err==Z_OK) - zi->in_opened_file_inzip = 1; - return err; -} - -extern int ZEXPORT zipOpenNewFileInZip4 (zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw, - int windowBits,int memLevel, int strategy, - const char* password, uLong crcForCrypting, - uLong versionMadeBy, uLong flagBase) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, raw, - windowBits, memLevel, strategy, - password, crcForCrypting, versionMadeBy, flagBase, 0); -} - -extern int ZEXPORT zipOpenNewFileInZip3 (zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw, - int windowBits,int memLevel, int strategy, - const char* password, uLong crcForCrypting) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, raw, - windowBits, memLevel, strategy, - password, crcForCrypting, VERSIONMADEBY, 0, 0); -} - -extern int ZEXPORT zipOpenNewFileInZip3_64(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw, - int windowBits,int memLevel, int strategy, - const char* password, uLong crcForCrypting, int zip64) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, raw, - windowBits, memLevel, strategy, - password, crcForCrypting, VERSIONMADEBY, 0, zip64); -} - -extern int ZEXPORT zipOpenNewFileInZip2(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, raw, - -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, - NULL, 0, VERSIONMADEBY, 0, 0); -} - -extern int ZEXPORT zipOpenNewFileInZip2_64(zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void* extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int raw, int zip64) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, raw, - -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, - NULL, 0, VERSIONMADEBY, 0, zip64); -} - -extern int ZEXPORT zipOpenNewFileInZip64 (zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void*extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level, int zip64) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, 0, - -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, - NULL, 0, VERSIONMADEBY, 0, zip64); -} - -extern int ZEXPORT zipOpenNewFileInZip (zipFile file, const char* filename, const zip_fileinfo* zipfi, - const void* extrafield_local, uInt size_extrafield_local, - const void*extrafield_global, uInt size_extrafield_global, - const char* comment, int method, int level) -{ - return zipOpenNewFileInZip4_64 (file, filename, zipfi, - extrafield_local, size_extrafield_local, - extrafield_global, size_extrafield_global, - comment, method, level, 0, - -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, - NULL, 0, VERSIONMADEBY, 0, 0); -} - -local int zip64FlushWriteBuffer(zip64_internal* zi) -{ - int err=ZIP_OK; - - if (zi->ci.encrypt != 0) - { -#ifndef NOCRYPT - uInt i; - int t; - for (i=0;ici.pos_in_buffered_data;i++) - zi->ci.buffered_data[i] = zencode(zi->ci.keys, zi->ci.pcrc_32_tab, zi->ci.buffered_data[i],t); -#endif - } - - if (ZWRITE64(zi->z_filefunc,zi->filestream,zi->ci.buffered_data,zi->ci.pos_in_buffered_data) != zi->ci.pos_in_buffered_data) - err = ZIP_ERRNO; - - zi->ci.totalCompressedData += zi->ci.pos_in_buffered_data; - -#ifdef HAVE_BZIP2 - if(zi->ci.method == Z_BZIP2ED) - { - zi->ci.totalUncompressedData += zi->ci.bstream.total_in_lo32; - zi->ci.bstream.total_in_lo32 = 0; - zi->ci.bstream.total_in_hi32 = 0; - } - else -#endif - { - zi->ci.totalUncompressedData += zi->ci.stream.total_in; - zi->ci.stream.total_in = 0; - } - - - zi->ci.pos_in_buffered_data = 0; - - return err; -} - -extern int ZEXPORT zipWriteInFileInZip (zipFile file,const void* buf,unsigned int len) -{ - zip64_internal* zi; - int err=ZIP_OK; - - if (file == NULL) - return ZIP_PARAMERROR; - zi = (zip64_internal*)file; - - if (zi->in_opened_file_inzip == 0) - return ZIP_PARAMERROR; - - zi->ci.crc32 = crc32(zi->ci.crc32,buf,(uInt)len); - -#ifdef HAVE_BZIP2 - if(zi->ci.method == Z_BZIP2ED && (!zi->ci.raw)) - { - zi->ci.bstream.next_in = (void*)buf; - zi->ci.bstream.avail_in = len; - err = BZ_RUN_OK; - - while ((err==BZ_RUN_OK) && (zi->ci.bstream.avail_in>0)) - { - if (zi->ci.bstream.avail_out == 0) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; - zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.bstream.next_out = (char*)zi->ci.buffered_data; - } - - - if(err != BZ_RUN_OK) - break; - - if ((zi->ci.method == Z_BZIP2ED) && (!zi->ci.raw)) - { - uLong uTotalOutBefore_lo = zi->ci.bstream.total_out_lo32; -// uLong uTotalOutBefore_hi = zi->ci.bstream.total_out_hi32; - err=BZ2_bzCompress(&zi->ci.bstream, BZ_RUN); - - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.bstream.total_out_lo32 - uTotalOutBefore_lo) ; - } - } - - if(err == BZ_RUN_OK) - err = ZIP_OK; - } - else -#endif - { - zi->ci.stream.next_in = (Bytef*)buf; - zi->ci.stream.avail_in = len; - - while ((err==ZIP_OK) && (zi->ci.stream.avail_in>0)) - { - if (zi->ci.stream.avail_out == 0) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; - zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.stream.next_out = zi->ci.buffered_data; - } - - - if(err != ZIP_OK) - break; - - if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) - { - uLong uTotalOutBefore = zi->ci.stream.total_out; - err=deflate(&zi->ci.stream, Z_NO_FLUSH); - if(uTotalOutBefore > zi->ci.stream.total_out) - { - int bBreak = 0; - bBreak++; - } - - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ; - } - else - { - uInt copy_this,i; - if (zi->ci.stream.avail_in < zi->ci.stream.avail_out) - copy_this = zi->ci.stream.avail_in; - else - copy_this = zi->ci.stream.avail_out; - - for (i = 0; i < copy_this; i++) - *(((char*)zi->ci.stream.next_out)+i) = - *(((const char*)zi->ci.stream.next_in)+i); - { - zi->ci.stream.avail_in -= copy_this; - zi->ci.stream.avail_out-= copy_this; - zi->ci.stream.next_in+= copy_this; - zi->ci.stream.next_out+= copy_this; - zi->ci.stream.total_in+= copy_this; - zi->ci.stream.total_out+= copy_this; - zi->ci.pos_in_buffered_data += copy_this; - } - } - }// while(...) - } - - return err; -} - -extern int ZEXPORT zipCloseFileInZipRaw (zipFile file, uLong uncompressed_size, uLong crc32) -{ - return zipCloseFileInZipRaw64 (file, uncompressed_size, crc32); -} - -extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_size, uLong crc32) -{ - zip64_internal* zi; - ZPOS64_T compressed_size; - uLong invalidValue = 0xffffffff; - short datasize = 0; - int err=ZIP_OK; - - if (file == NULL) - return ZIP_PARAMERROR; - zi = (zip64_internal*)file; - - if (zi->in_opened_file_inzip == 0) - return ZIP_PARAMERROR; - zi->ci.stream.avail_in = 0; - - if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) - { - while (err==ZIP_OK) - { - uLong uTotalOutBefore; - if (zi->ci.stream.avail_out == 0) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; - zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.stream.next_out = zi->ci.buffered_data; - } - uTotalOutBefore = zi->ci.stream.total_out; - err=deflate(&zi->ci.stream, Z_FINISH); - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ; - } - } - else if ((zi->ci.method == Z_BZIP2ED) && (!zi->ci.raw)) - { -#ifdef HAVE_BZIP2 - err = BZ_FINISH_OK; - while (err==BZ_FINISH_OK) - { - uLong uTotalOutBefore; - if (zi->ci.bstream.avail_out == 0) - { - if (zip64FlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; - zi->ci.bstream.avail_out = (uInt)Z_BUFSIZE; - zi->ci.bstream.next_out = (char*)zi->ci.buffered_data; - } - uTotalOutBefore = zi->ci.bstream.total_out_lo32; - err=BZ2_bzCompress(&zi->ci.bstream, BZ_FINISH); - if(err == BZ_STREAM_END) - err = Z_STREAM_END; - - zi->ci.pos_in_buffered_data += (uInt)(zi->ci.bstream.total_out_lo32 - uTotalOutBefore); - } - - if(err == BZ_FINISH_OK) - err = ZIP_OK; -#endif - } - - if (err==Z_STREAM_END) - err=ZIP_OK; /* this is normal */ - - if ((zi->ci.pos_in_buffered_data>0) && (err==ZIP_OK)) - { - if (zip64FlushWriteBuffer(zi)==ZIP_ERRNO) - err = ZIP_ERRNO; - } - - if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) - { - int tmp_err = deflateEnd(&zi->ci.stream); - if (err == ZIP_OK) - err = tmp_err; - zi->ci.stream_initialised = 0; - } -#ifdef HAVE_BZIP2 - else if((zi->ci.method == Z_BZIP2ED) && (!zi->ci.raw)) - { - int tmperr = BZ2_bzCompressEnd(&zi->ci.bstream); - if (err==ZIP_OK) - err = tmperr; - zi->ci.stream_initialised = 0; - } -#endif - - if (!zi->ci.raw) - { - crc32 = (uLong)zi->ci.crc32; - uncompressed_size = zi->ci.totalUncompressedData; - } - compressed_size = zi->ci.totalCompressedData; - -# ifndef NOCRYPT - compressed_size += zi->ci.crypt_header_size; -# endif - - // update Current Item crc and sizes, - if(compressed_size >= 0xffffffff || uncompressed_size >= 0xffffffff || zi->ci.pos_local_header >= 0xffffffff) - { - /*version Made by*/ - zip64local_putValue_inmemory(zi->ci.central_header+4,(uLong)45,2); - /*version needed*/ - zip64local_putValue_inmemory(zi->ci.central_header+6,(uLong)45,2); - - } - - zip64local_putValue_inmemory(zi->ci.central_header+16,crc32,4); /*crc*/ - - - if(compressed_size >= 0xffffffff) - zip64local_putValue_inmemory(zi->ci.central_header+20, invalidValue,4); /*compr size*/ - else - zip64local_putValue_inmemory(zi->ci.central_header+20, compressed_size,4); /*compr size*/ - - /// set internal file attributes field - if (zi->ci.stream.data_type == Z_ASCII) - zip64local_putValue_inmemory(zi->ci.central_header+36,(uLong)Z_ASCII,2); - - if(uncompressed_size >= 0xffffffff) - zip64local_putValue_inmemory(zi->ci.central_header+24, invalidValue,4); /*uncompr size*/ - else - zip64local_putValue_inmemory(zi->ci.central_header+24, uncompressed_size,4); /*uncompr size*/ - - // Add ZIP64 extra info field for uncompressed size - if(uncompressed_size >= 0xffffffff) - datasize += 8; - - // Add ZIP64 extra info field for compressed size - if(compressed_size >= 0xffffffff) - datasize += 8; - - // Add ZIP64 extra info field for relative offset to local file header of current file - if(zi->ci.pos_local_header >= 0xffffffff) - datasize += 8; - - if(datasize > 0) - { - char* p = NULL; - - if((uLong)(datasize + 4) > zi->ci.size_centralExtraFree) - { - // we can not write more data to the buffer that we have room for. - return ZIP_BADZIPFILE; - } - - p = zi->ci.central_header + zi->ci.size_centralheader; - - // Add Extra Information Header for 'ZIP64 information' - zip64local_putValue_inmemory(p, 0x0001, 2); // HeaderID - p += 2; - zip64local_putValue_inmemory(p, datasize, 2); // DataSize - p += 2; - - if(uncompressed_size >= 0xffffffff) - { - zip64local_putValue_inmemory(p, uncompressed_size, 8); - p += 8; - } - - if(compressed_size >= 0xffffffff) - { - zip64local_putValue_inmemory(p, compressed_size, 8); - p += 8; - } - - if(zi->ci.pos_local_header >= 0xffffffff) - { - zip64local_putValue_inmemory(p, zi->ci.pos_local_header, 8); - p += 8; - } - - // Update how much extra free space we got in the memory buffer - // and increase the centralheader size so the new ZIP64 fields are included - // ( 4 below is the size of HeaderID and DataSize field ) - zi->ci.size_centralExtraFree -= datasize + 4; - zi->ci.size_centralheader += datasize + 4; - - // Update the extra info size field - zi->ci.size_centralExtra += datasize + 4; - zip64local_putValue_inmemory(zi->ci.central_header+30,(uLong)zi->ci.size_centralExtra,2); - } - - if (err==ZIP_OK) - err = add_data_in_datablock(&zi->central_dir, zi->ci.central_header, (uLong)zi->ci.size_centralheader); - - free(zi->ci.central_header); - - if (err==ZIP_OK) - { - // Update the LocalFileHeader with the new values. - - ZPOS64_T cur_pos_inzip = ZTELL64(zi->z_filefunc,zi->filestream); - - if (ZSEEK64(zi->z_filefunc,zi->filestream, zi->ci.pos_local_header + 14,ZLIB_FILEFUNC_SEEK_SET)!=0) - err = ZIP_ERRNO; - - if (err==ZIP_OK) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,crc32,4); /* crc 32, unknown */ - - if(uncompressed_size >= 0xffffffff || compressed_size >= 0xffffffff ) - { - if(zi->ci.pos_zip64extrainfo > 0) - { - // Update the size in the ZIP64 extended field. - if (ZSEEK64(zi->z_filefunc,zi->filestream, zi->ci.pos_zip64extrainfo + 4,ZLIB_FILEFUNC_SEEK_SET)!=0) - err = ZIP_ERRNO; - - if (err==ZIP_OK) /* compressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, uncompressed_size, 8); - - if (err==ZIP_OK) /* uncompressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, compressed_size, 8); - } - else - err = ZIP_BADZIPFILE; // Caller passed zip64 = 0, so no room for zip64 info -> fatal - } - else - { - if (err==ZIP_OK) /* compressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,compressed_size,4); - - if (err==ZIP_OK) /* uncompressed size, unknown */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,uncompressed_size,4); - } - - if (ZSEEK64(zi->z_filefunc,zi->filestream, cur_pos_inzip,ZLIB_FILEFUNC_SEEK_SET)!=0) - err = ZIP_ERRNO; - } - - zi->number_entry ++; - zi->in_opened_file_inzip = 0; - - return err; -} - -extern int ZEXPORT zipCloseFileInZip (zipFile file) -{ - return zipCloseFileInZipRaw (file,0,0); -} - -int Write_Zip64EndOfCentralDirectoryLocator(zip64_internal* zi, ZPOS64_T zip64eocd_pos_inzip) -{ - int err = ZIP_OK; - ZPOS64_T pos = zip64eocd_pos_inzip - zi->add_position_when_writting_offset; - - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)ZIP64ENDLOCHEADERMAGIC,4); - - /*num disks*/ - if (err==ZIP_OK) /* number of the disk with the start of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); - - /*relative offset*/ - if (err==ZIP_OK) /* Relative offset to the Zip64EndOfCentralDirectory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream, pos,8); - - /*total disks*/ /* Do not support spawning of disk so always say 1 here*/ - if (err==ZIP_OK) /* number of the disk with the start of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)1,4); - - return err; -} - -int Write_Zip64EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip) -{ - int err = ZIP_OK; - - uLong Zip64DataSize = 44; - - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)ZIP64ENDHEADERMAGIC,4); - - if (err==ZIP_OK) /* size of this 'zip64 end of central directory' */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(ZPOS64_T)Zip64DataSize,8); // why ZPOS64_T of this ? - - if (err==ZIP_OK) /* version made by */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)45,2); - - if (err==ZIP_OK) /* version needed */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)45,2); - - if (err==ZIP_OK) /* number of this disk */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); - - if (err==ZIP_OK) /* number of the disk with the start of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); - - if (err==ZIP_OK) /* total number of entries in the central dir on this disk */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, zi->number_entry, 8); - - if (err==ZIP_OK) /* total number of entries in the central dir */ - err = zip64local_putValue(&zi->z_filefunc, zi->filestream, zi->number_entry, 8); - - if (err==ZIP_OK) /* size of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(ZPOS64_T)size_centraldir,8); - - if (err==ZIP_OK) /* offset of start of central directory with respect to the starting disk number */ - { - ZPOS64_T pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; - err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (ZPOS64_T)pos,8); - } - return err; -} -int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip) -{ - int err = ZIP_OK; - - /*signature*/ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)ENDHEADERMAGIC,4); - - if (err==ZIP_OK) /* number of this disk */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,2); - - if (err==ZIP_OK) /* number of the disk with the start of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,2); - - if (err==ZIP_OK) /* total number of entries in the central dir on this disk */ - { - { - if(zi->number_entry >= 0xFFFF) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xffff,2); // use value in ZIP64 record - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->number_entry,2); - } - } - - if (err==ZIP_OK) /* total number of entries in the central dir */ - { - if(zi->number_entry >= 0xFFFF) - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)0xffff,2); // use value in ZIP64 record - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->number_entry,2); - } - - if (err==ZIP_OK) /* size of the central directory */ - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_centraldir,4); - - if (err==ZIP_OK) /* offset of start of central directory with respect to the starting disk number */ - { - ZPOS64_T pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; - if(pos >= 0xffffffff) - { - err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)0xffffffff,4); - } - else - err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)(centraldir_pos_inzip - zi->add_position_when_writting_offset),4); - } - - return err; -} - -int Write_GlobalComment(zip64_internal* zi, const char* global_comment) -{ - int err = ZIP_OK; - uInt size_global_comment = 0; - - if(global_comment != NULL) - size_global_comment = (uInt)strlen(global_comment); - - err = zip64local_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_global_comment,2); - - if (err == ZIP_OK && size_global_comment > 0) - { - if (ZWRITE64(zi->z_filefunc,zi->filestream, global_comment, size_global_comment) != size_global_comment) - err = ZIP_ERRNO; - } - return err; -} - -extern int ZEXPORT zipClose (zipFile file, const char* global_comment) -{ - zip64_internal* zi; - int err = 0; - uLong size_centraldir = 0; - ZPOS64_T centraldir_pos_inzip; - ZPOS64_T pos; - - if (file == NULL) - return ZIP_PARAMERROR; - - zi = (zip64_internal*)file; - - if (zi->in_opened_file_inzip == 1) - { - err = zipCloseFileInZip (file); - } - -#ifndef NO_ADDFILEINEXISTINGZIP - if (global_comment==NULL) - global_comment = zi->globalcomment; -#endif - - centraldir_pos_inzip = ZTELL64(zi->z_filefunc,zi->filestream); - - if (err==ZIP_OK) - { - linkedlist_datablock_internal* ldi = zi->central_dir.first_block; - while (ldi!=NULL) - { - if ((err==ZIP_OK) && (ldi->filled_in_this_block>0)) - { - if (ZWRITE64(zi->z_filefunc,zi->filestream, ldi->data, ldi->filled_in_this_block) != ldi->filled_in_this_block) - err = ZIP_ERRNO; - } - - size_centraldir += ldi->filled_in_this_block; - ldi = ldi->next_datablock; - } - } - free_linkedlist(&(zi->central_dir)); - - pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; - if(pos >= 0xffffffff || zi->number_entry > 0xFFFF) - { - ZPOS64_T Zip64EOCDpos = ZTELL64(zi->z_filefunc,zi->filestream); - Write_Zip64EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip); - - Write_Zip64EndOfCentralDirectoryLocator(zi, Zip64EOCDpos); - } - - if (err==ZIP_OK) - err = Write_EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip); - - if(err == ZIP_OK) - err = Write_GlobalComment(zi, global_comment); - - if (ZCLOSE64(zi->z_filefunc,zi->filestream) != 0) - if (err == ZIP_OK) - err = ZIP_ERRNO; - -#ifndef NO_ADDFILEINEXISTINGZIP - TRYFREE(zi->globalcomment); -#endif - TRYFREE(zi); - - return err; -} - -extern int ZEXPORT zipRemoveExtraInfoBlock (char* pData, int* dataLen, short sHeader) -{ - char* p = pData; - int size = 0; - char* pNewHeader; - char* pTmp; - short header; - short dataSize; - - int retVal = ZIP_OK; - - if(pData == NULL || *dataLen < 4) - return ZIP_PARAMERROR; - - pNewHeader = (char*)ALLOC(*dataLen); - pTmp = pNewHeader; - - while(p < (pData + *dataLen)) - { - header = *(short*)p; - dataSize = *(((short*)p)+1); - - if( header == sHeader ) // Header found. - { - p += dataSize + 4; // skip it. do not copy to temp buffer - } - else - { - // Extra Info block should not be removed, So copy it to the temp buffer. - memcpy(pTmp, p, dataSize + 4); - p += dataSize + 4; - size += dataSize + 4; - } - - } - - if(size < *dataLen) - { - // clean old extra info block. - memset(pData,0, *dataLen); - - // copy the new extra info block over the old - if(size > 0) - memcpy(pData, pNewHeader, size); - - // set the new extra info size - *dataLen = size; - - retVal = ZIP_OK; - } - else - retVal = ZIP_ERRNO; - - TRYFREE(pNewHeader); - - return retVal; -} diff --git a/io2d/src/3rd-party/zlib/contrib/minizip/zip.h b/io2d/src/3rd-party/zlib/contrib/minizip/zip.h deleted file mode 100644 index 8aaebb6..0000000 --- a/io2d/src/3rd-party/zlib/contrib/minizip/zip.h +++ /dev/null @@ -1,362 +0,0 @@ -/* zip.h -- IO on .zip files using zlib - Version 1.1, February 14h, 2010 - part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html ) - - Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html ) - - Modifications for Zip64 support - Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com ) - - For more info read MiniZip_info.txt - - --------------------------------------------------------------------------- - - Condition of use and distribution are the same than zlib : - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - --------------------------------------------------------------------------- - - Changes - - See header of zip.h - -*/ - -#ifndef _zip12_H -#define _zip12_H - -#ifdef __cplusplus -extern "C" { -#endif - -//#define HAVE_BZIP2 - -#ifndef _ZLIB_H -#include "zlib.h" -#endif - -#ifndef _ZLIBIOAPI_H -#include "ioapi.h" -#endif - -#ifdef HAVE_BZIP2 -#include "bzlib.h" -#endif - -#define Z_BZIP2ED 12 - -#if defined(STRICTZIP) || defined(STRICTZIPUNZIP) -/* like the STRICT of WIN32, we define a pointer that cannot be converted - from (void*) without cast */ -typedef struct TagzipFile__ { int unused; } zipFile__; -typedef zipFile__ *zipFile; -#else -typedef voidp zipFile; -#endif - -#define ZIP_OK (0) -#define ZIP_EOF (0) -#define ZIP_ERRNO (Z_ERRNO) -#define ZIP_PARAMERROR (-102) -#define ZIP_BADZIPFILE (-103) -#define ZIP_INTERNALERROR (-104) - -#ifndef DEF_MEM_LEVEL -# if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -# else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -# endif -#endif -/* default memLevel */ - -/* tm_zip contain date/time info */ -typedef struct tm_zip_s -{ - uInt tm_sec; /* seconds after the minute - [0,59] */ - uInt tm_min; /* minutes after the hour - [0,59] */ - uInt tm_hour; /* hours since midnight - [0,23] */ - uInt tm_mday; /* day of the month - [1,31] */ - uInt tm_mon; /* months since January - [0,11] */ - uInt tm_year; /* years - [1980..2044] */ -} tm_zip; - -typedef struct -{ - tm_zip tmz_date; /* date in understandable format */ - uLong dosDate; /* if dos_date == 0, tmu_date is used */ -/* uLong flag; */ /* general purpose bit flag 2 bytes */ - - uLong internal_fa; /* internal file attributes 2 bytes */ - uLong external_fa; /* external file attributes 4 bytes */ -} zip_fileinfo; - -typedef const char* zipcharpc; - - -#define APPEND_STATUS_CREATE (0) -#define APPEND_STATUS_CREATEAFTER (1) -#define APPEND_STATUS_ADDINZIP (2) - -extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append)); -extern zipFile ZEXPORT zipOpen64 OF((const void *pathname, int append)); -/* - Create a zipfile. - pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on - an Unix computer "zlib/zlib113.zip". - if the file pathname exist and append==APPEND_STATUS_CREATEAFTER, the zip - will be created at the end of the file. - (useful if the file contain a self extractor code) - if the file pathname exist and append==APPEND_STATUS_ADDINZIP, we will - add files in existing zip (be sure you don't add file that doesn't exist) - If the zipfile cannot be opened, the return value is NULL. - Else, the return value is a zipFile Handle, usable with other function - of this zip package. -*/ - -/* Note : there is no delete function into a zipfile. - If you want delete file into a zipfile, you must open a zipfile, and create another - Of couse, you can use RAW reading and writing to copy the file you did not want delte -*/ - -extern zipFile ZEXPORT zipOpen2 OF((const char *pathname, - int append, - zipcharpc* globalcomment, - zlib_filefunc_def* pzlib_filefunc_def)); - -extern zipFile ZEXPORT zipOpen2_64 OF((const void *pathname, - int append, - zipcharpc* globalcomment, - zlib_filefunc64_def* pzlib_filefunc_def)); - -extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level)); - -extern int ZEXPORT zipOpenNewFileInZip64 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int zip64)); - -/* - Open a file in the ZIP for writing. - filename : the filename in zip (if NULL, '-' without quote will be used - *zipfi contain supplemental information - if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local - contains the extrafield data the the local header - if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global - contains the extrafield data the the local header - if comment != NULL, comment contain the comment string - method contain the compression method (0 for store, Z_DEFLATED for deflate) - level contain the level of compression (can be Z_DEFAULT_COMPRESSION) - zip64 is set to 1 if a zip64 extended information block should be added to the local file header. - this MUST be '1' if the uncompressed size is >= 0xffffffff. - -*/ - - -extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw)); - - -extern int ZEXPORT zipOpenNewFileInZip2_64 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw, - int zip64)); -/* - Same than zipOpenNewFileInZip, except if raw=1, we write raw file - */ - -extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw, - int windowBits, - int memLevel, - int strategy, - const char* password, - uLong crcForCrypting)); - -extern int ZEXPORT zipOpenNewFileInZip3_64 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw, - int windowBits, - int memLevel, - int strategy, - const char* password, - uLong crcForCrypting, - int zip64 - )); - -/* - Same than zipOpenNewFileInZip2, except - windowBits,memLevel,,strategy : see parameter strategy in deflateInit2 - password : crypting password (NULL for no crypting) - crcForCrypting : crc of file to compress (needed for crypting) - */ - -extern int ZEXPORT zipOpenNewFileInZip4 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw, - int windowBits, - int memLevel, - int strategy, - const char* password, - uLong crcForCrypting, - uLong versionMadeBy, - uLong flagBase - )); - - -extern int ZEXPORT zipOpenNewFileInZip4_64 OF((zipFile file, - const char* filename, - const zip_fileinfo* zipfi, - const void* extrafield_local, - uInt size_extrafield_local, - const void* extrafield_global, - uInt size_extrafield_global, - const char* comment, - int method, - int level, - int raw, - int windowBits, - int memLevel, - int strategy, - const char* password, - uLong crcForCrypting, - uLong versionMadeBy, - uLong flagBase, - int zip64 - )); -/* - Same than zipOpenNewFileInZip4, except - versionMadeBy : value for Version made by field - flag : value for flag field (compression level info will be added) - */ - - -extern int ZEXPORT zipWriteInFileInZip OF((zipFile file, - const void* buf, - unsigned len)); -/* - Write data in the zipfile -*/ - -extern int ZEXPORT zipCloseFileInZip OF((zipFile file)); -/* - Close the current file in the zipfile -*/ - -extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file, - uLong uncompressed_size, - uLong crc32)); - -extern int ZEXPORT zipCloseFileInZipRaw64 OF((zipFile file, - ZPOS64_T uncompressed_size, - uLong crc32)); - -/* - Close the current file in the zipfile, for file opened with - parameter raw=1 in zipOpenNewFileInZip2 - uncompressed_size and crc32 are value for the uncompressed size -*/ - -extern int ZEXPORT zipClose OF((zipFile file, - const char* global_comment)); -/* - Close the zipfile -*/ - - -extern int ZEXPORT zipRemoveExtraInfoBlock OF((char* pData, int* dataLen, short sHeader)); -/* - zipRemoveExtraInfoBlock - Added by Mathias Svensson - - Remove extra information block from a extra information data for the local file header or central directory header - - It is needed to remove ZIP64 extra information blocks when before data is written if using RAW mode. - - 0x0001 is the signature header for the ZIP64 extra information blocks - - usage. - Remove ZIP64 Extra information from a central director extra field data - zipRemoveExtraInfoBlock(pCenDirExtraFieldData, &nCenDirExtraFieldDataLen, 0x0001); - - Remove ZIP64 Extra information from a Local File Header extra field data - zipRemoveExtraInfoBlock(pLocalHeaderExtraFieldData, &nLocalHeaderExtraFieldDataLen, 0x0001); -*/ - -#ifdef __cplusplus -} -#endif - -#endif /* _zip64_H */ diff --git a/io2d/src/3rd-party/zlib/contrib/pascal/example.pas b/io2d/src/3rd-party/zlib/contrib/pascal/example.pas deleted file mode 100644 index 5518b36..0000000 --- a/io2d/src/3rd-party/zlib/contrib/pascal/example.pas +++ /dev/null @@ -1,599 +0,0 @@ -(* example.c -- usage example of the zlib compression library - * Copyright (C) 1995-2003 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - * - * Pascal translation - * Copyright (C) 1998 by Jacques Nomssi Nzali. - * For conditions of distribution and use, see copyright notice in readme.txt - * - * Adaptation to the zlibpas interface - * Copyright (C) 2003 by Cosmin Truta. - * For conditions of distribution and use, see copyright notice in readme.txt - *) - -program example; - -{$DEFINE TEST_COMPRESS} -{DO NOT $DEFINE TEST_GZIO} -{$DEFINE TEST_DEFLATE} -{$DEFINE TEST_INFLATE} -{$DEFINE TEST_FLUSH} -{$DEFINE TEST_SYNC} -{$DEFINE TEST_DICT} - -uses SysUtils, zlibpas; - -const TESTFILE = 'foo.gz'; - -(* "hello world" would be more standard, but the repeated "hello" - * stresses the compression code better, sorry... - *) -const hello: PChar = 'hello, hello!'; - -const dictionary: PChar = 'hello'; - -var dictId: LongInt; (* Adler32 value of the dictionary *) - -procedure CHECK_ERR(err: Integer; msg: String); -begin - if err <> Z_OK then - begin - WriteLn(msg, ' error: ', err); - Halt(1); - end; -end; - -procedure EXIT_ERR(const msg: String); -begin - WriteLn('Error: ', msg); - Halt(1); -end; - -(* =========================================================================== - * Test compress and uncompress - *) -{$IFDEF TEST_COMPRESS} -procedure test_compress(compr: Pointer; comprLen: LongInt; - uncompr: Pointer; uncomprLen: LongInt); -var err: Integer; - len: LongInt; -begin - len := StrLen(hello)+1; - - err := compress(compr, comprLen, hello, len); - CHECK_ERR(err, 'compress'); - - StrCopy(PChar(uncompr), 'garbage'); - - err := uncompress(uncompr, uncomprLen, compr, comprLen); - CHECK_ERR(err, 'uncompress'); - - if StrComp(PChar(uncompr), hello) <> 0 then - EXIT_ERR('bad uncompress') - else - WriteLn('uncompress(): ', PChar(uncompr)); -end; -{$ENDIF} - -(* =========================================================================== - * Test read/write of .gz files - *) -{$IFDEF TEST_GZIO} -procedure test_gzio(const fname: PChar; (* compressed file name *) - uncompr: Pointer; - uncomprLen: LongInt); -var err: Integer; - len: Integer; - zfile: gzFile; - pos: LongInt; -begin - len := StrLen(hello)+1; - - zfile := gzopen(fname, 'wb'); - if zfile = NIL then - begin - WriteLn('gzopen error'); - Halt(1); - end; - gzputc(zfile, 'h'); - if gzputs(zfile, 'ello') <> 4 then - begin - WriteLn('gzputs err: ', gzerror(zfile, err)); - Halt(1); - end; - {$IFDEF GZ_FORMAT_STRING} - if gzprintf(zfile, ', %s!', 'hello') <> 8 then - begin - WriteLn('gzprintf err: ', gzerror(zfile, err)); - Halt(1); - end; - {$ELSE} - if gzputs(zfile, ', hello!') <> 8 then - begin - WriteLn('gzputs err: ', gzerror(zfile, err)); - Halt(1); - end; - {$ENDIF} - gzseek(zfile, 1, SEEK_CUR); (* add one zero byte *) - gzclose(zfile); - - zfile := gzopen(fname, 'rb'); - if zfile = NIL then - begin - WriteLn('gzopen error'); - Halt(1); - end; - - StrCopy(PChar(uncompr), 'garbage'); - - if gzread(zfile, uncompr, uncomprLen) <> len then - begin - WriteLn('gzread err: ', gzerror(zfile, err)); - Halt(1); - end; - if StrComp(PChar(uncompr), hello) <> 0 then - begin - WriteLn('bad gzread: ', PChar(uncompr)); - Halt(1); - end - else - WriteLn('gzread(): ', PChar(uncompr)); - - pos := gzseek(zfile, -8, SEEK_CUR); - if (pos <> 6) or (gztell(zfile) <> pos) then - begin - WriteLn('gzseek error, pos=', pos, ', gztell=', gztell(zfile)); - Halt(1); - end; - - if gzgetc(zfile) <> ' ' then - begin - WriteLn('gzgetc error'); - Halt(1); - end; - - if gzungetc(' ', zfile) <> ' ' then - begin - WriteLn('gzungetc error'); - Halt(1); - end; - - gzgets(zfile, PChar(uncompr), uncomprLen); - uncomprLen := StrLen(PChar(uncompr)); - if uncomprLen <> 7 then (* " hello!" *) - begin - WriteLn('gzgets err after gzseek: ', gzerror(zfile, err)); - Halt(1); - end; - if StrComp(PChar(uncompr), hello + 6) <> 0 then - begin - WriteLn('bad gzgets after gzseek'); - Halt(1); - end - else - WriteLn('gzgets() after gzseek: ', PChar(uncompr)); - - gzclose(zfile); -end; -{$ENDIF} - -(* =========================================================================== - * Test deflate with small buffers - *) -{$IFDEF TEST_DEFLATE} -procedure test_deflate(compr: Pointer; comprLen: LongInt); -var c_stream: z_stream; (* compression stream *) - err: Integer; - len: LongInt; -begin - len := StrLen(hello)+1; - - c_stream.zalloc := NIL; - c_stream.zfree := NIL; - c_stream.opaque := NIL; - - err := deflateInit(c_stream, Z_DEFAULT_COMPRESSION); - CHECK_ERR(err, 'deflateInit'); - - c_stream.next_in := hello; - c_stream.next_out := compr; - - while (c_stream.total_in <> len) and - (c_stream.total_out < comprLen) do - begin - c_stream.avail_out := 1; { force small buffers } - c_stream.avail_in := 1; - err := deflate(c_stream, Z_NO_FLUSH); - CHECK_ERR(err, 'deflate'); - end; - - (* Finish the stream, still forcing small buffers: *) - while TRUE do - begin - c_stream.avail_out := 1; - err := deflate(c_stream, Z_FINISH); - if err = Z_STREAM_END then - break; - CHECK_ERR(err, 'deflate'); - end; - - err := deflateEnd(c_stream); - CHECK_ERR(err, 'deflateEnd'); -end; -{$ENDIF} - -(* =========================================================================== - * Test inflate with small buffers - *) -{$IFDEF TEST_INFLATE} -procedure test_inflate(compr: Pointer; comprLen : LongInt; - uncompr: Pointer; uncomprLen : LongInt); -var err: Integer; - d_stream: z_stream; (* decompression stream *) -begin - StrCopy(PChar(uncompr), 'garbage'); - - d_stream.zalloc := NIL; - d_stream.zfree := NIL; - d_stream.opaque := NIL; - - d_stream.next_in := compr; - d_stream.avail_in := 0; - d_stream.next_out := uncompr; - - err := inflateInit(d_stream); - CHECK_ERR(err, 'inflateInit'); - - while (d_stream.total_out < uncomprLen) and - (d_stream.total_in < comprLen) do - begin - d_stream.avail_out := 1; (* force small buffers *) - d_stream.avail_in := 1; - err := inflate(d_stream, Z_NO_FLUSH); - if err = Z_STREAM_END then - break; - CHECK_ERR(err, 'inflate'); - end; - - err := inflateEnd(d_stream); - CHECK_ERR(err, 'inflateEnd'); - - if StrComp(PChar(uncompr), hello) <> 0 then - EXIT_ERR('bad inflate') - else - WriteLn('inflate(): ', PChar(uncompr)); -end; -{$ENDIF} - -(* =========================================================================== - * Test deflate with large buffers and dynamic change of compression level - *) -{$IFDEF TEST_DEFLATE} -procedure test_large_deflate(compr: Pointer; comprLen: LongInt; - uncompr: Pointer; uncomprLen: LongInt); -var c_stream: z_stream; (* compression stream *) - err: Integer; -begin - c_stream.zalloc := NIL; - c_stream.zfree := NIL; - c_stream.opaque := NIL; - - err := deflateInit(c_stream, Z_BEST_SPEED); - CHECK_ERR(err, 'deflateInit'); - - c_stream.next_out := compr; - c_stream.avail_out := Integer(comprLen); - - (* At this point, uncompr is still mostly zeroes, so it should compress - * very well: - *) - c_stream.next_in := uncompr; - c_stream.avail_in := Integer(uncomprLen); - err := deflate(c_stream, Z_NO_FLUSH); - CHECK_ERR(err, 'deflate'); - if c_stream.avail_in <> 0 then - EXIT_ERR('deflate not greedy'); - - (* Feed in already compressed data and switch to no compression: *) - deflateParams(c_stream, Z_NO_COMPRESSION, Z_DEFAULT_STRATEGY); - c_stream.next_in := compr; - c_stream.avail_in := Integer(comprLen div 2); - err := deflate(c_stream, Z_NO_FLUSH); - CHECK_ERR(err, 'deflate'); - - (* Switch back to compressing mode: *) - deflateParams(c_stream, Z_BEST_COMPRESSION, Z_FILTERED); - c_stream.next_in := uncompr; - c_stream.avail_in := Integer(uncomprLen); - err := deflate(c_stream, Z_NO_FLUSH); - CHECK_ERR(err, 'deflate'); - - err := deflate(c_stream, Z_FINISH); - if err <> Z_STREAM_END then - EXIT_ERR('deflate should report Z_STREAM_END'); - - err := deflateEnd(c_stream); - CHECK_ERR(err, 'deflateEnd'); -end; -{$ENDIF} - -(* =========================================================================== - * Test inflate with large buffers - *) -{$IFDEF TEST_INFLATE} -procedure test_large_inflate(compr: Pointer; comprLen: LongInt; - uncompr: Pointer; uncomprLen: LongInt); -var err: Integer; - d_stream: z_stream; (* decompression stream *) -begin - StrCopy(PChar(uncompr), 'garbage'); - - d_stream.zalloc := NIL; - d_stream.zfree := NIL; - d_stream.opaque := NIL; - - d_stream.next_in := compr; - d_stream.avail_in := Integer(comprLen); - - err := inflateInit(d_stream); - CHECK_ERR(err, 'inflateInit'); - - while TRUE do - begin - d_stream.next_out := uncompr; (* discard the output *) - d_stream.avail_out := Integer(uncomprLen); - err := inflate(d_stream, Z_NO_FLUSH); - if err = Z_STREAM_END then - break; - CHECK_ERR(err, 'large inflate'); - end; - - err := inflateEnd(d_stream); - CHECK_ERR(err, 'inflateEnd'); - - if d_stream.total_out <> 2 * uncomprLen + comprLen div 2 then - begin - WriteLn('bad large inflate: ', d_stream.total_out); - Halt(1); - end - else - WriteLn('large_inflate(): OK'); -end; -{$ENDIF} - -(* =========================================================================== - * Test deflate with full flush - *) -{$IFDEF TEST_FLUSH} -procedure test_flush(compr: Pointer; var comprLen : LongInt); -var c_stream: z_stream; (* compression stream *) - err: Integer; - len: Integer; -begin - len := StrLen(hello)+1; - - c_stream.zalloc := NIL; - c_stream.zfree := NIL; - c_stream.opaque := NIL; - - err := deflateInit(c_stream, Z_DEFAULT_COMPRESSION); - CHECK_ERR(err, 'deflateInit'); - - c_stream.next_in := hello; - c_stream.next_out := compr; - c_stream.avail_in := 3; - c_stream.avail_out := Integer(comprLen); - err := deflate(c_stream, Z_FULL_FLUSH); - CHECK_ERR(err, 'deflate'); - - Inc(PByteArray(compr)^[3]); (* force an error in first compressed block *) - c_stream.avail_in := len - 3; - - err := deflate(c_stream, Z_FINISH); - if err <> Z_STREAM_END then - CHECK_ERR(err, 'deflate'); - - err := deflateEnd(c_stream); - CHECK_ERR(err, 'deflateEnd'); - - comprLen := c_stream.total_out; -end; -{$ENDIF} - -(* =========================================================================== - * Test inflateSync() - *) -{$IFDEF TEST_SYNC} -procedure test_sync(compr: Pointer; comprLen: LongInt; - uncompr: Pointer; uncomprLen : LongInt); -var err: Integer; - d_stream: z_stream; (* decompression stream *) -begin - StrCopy(PChar(uncompr), 'garbage'); - - d_stream.zalloc := NIL; - d_stream.zfree := NIL; - d_stream.opaque := NIL; - - d_stream.next_in := compr; - d_stream.avail_in := 2; (* just read the zlib header *) - - err := inflateInit(d_stream); - CHECK_ERR(err, 'inflateInit'); - - d_stream.next_out := uncompr; - d_stream.avail_out := Integer(uncomprLen); - - inflate(d_stream, Z_NO_FLUSH); - CHECK_ERR(err, 'inflate'); - - d_stream.avail_in := Integer(comprLen-2); (* read all compressed data *) - err := inflateSync(d_stream); (* but skip the damaged part *) - CHECK_ERR(err, 'inflateSync'); - - err := inflate(d_stream, Z_FINISH); - if err <> Z_DATA_ERROR then - EXIT_ERR('inflate should report DATA_ERROR'); - (* Because of incorrect adler32 *) - - err := inflateEnd(d_stream); - CHECK_ERR(err, 'inflateEnd'); - - WriteLn('after inflateSync(): hel', PChar(uncompr)); -end; -{$ENDIF} - -(* =========================================================================== - * Test deflate with preset dictionary - *) -{$IFDEF TEST_DICT} -procedure test_dict_deflate(compr: Pointer; comprLen: LongInt); -var c_stream: z_stream; (* compression stream *) - err: Integer; -begin - c_stream.zalloc := NIL; - c_stream.zfree := NIL; - c_stream.opaque := NIL; - - err := deflateInit(c_stream, Z_BEST_COMPRESSION); - CHECK_ERR(err, 'deflateInit'); - - err := deflateSetDictionary(c_stream, dictionary, StrLen(dictionary)); - CHECK_ERR(err, 'deflateSetDictionary'); - - dictId := c_stream.adler; - c_stream.next_out := compr; - c_stream.avail_out := Integer(comprLen); - - c_stream.next_in := hello; - c_stream.avail_in := StrLen(hello)+1; - - err := deflate(c_stream, Z_FINISH); - if err <> Z_STREAM_END then - EXIT_ERR('deflate should report Z_STREAM_END'); - - err := deflateEnd(c_stream); - CHECK_ERR(err, 'deflateEnd'); -end; -{$ENDIF} - -(* =========================================================================== - * Test inflate with a preset dictionary - *) -{$IFDEF TEST_DICT} -procedure test_dict_inflate(compr: Pointer; comprLen: LongInt; - uncompr: Pointer; uncomprLen: LongInt); -var err: Integer; - d_stream: z_stream; (* decompression stream *) -begin - StrCopy(PChar(uncompr), 'garbage'); - - d_stream.zalloc := NIL; - d_stream.zfree := NIL; - d_stream.opaque := NIL; - - d_stream.next_in := compr; - d_stream.avail_in := Integer(comprLen); - - err := inflateInit(d_stream); - CHECK_ERR(err, 'inflateInit'); - - d_stream.next_out := uncompr; - d_stream.avail_out := Integer(uncomprLen); - - while TRUE do - begin - err := inflate(d_stream, Z_NO_FLUSH); - if err = Z_STREAM_END then - break; - if err = Z_NEED_DICT then - begin - if d_stream.adler <> dictId then - EXIT_ERR('unexpected dictionary'); - err := inflateSetDictionary(d_stream, dictionary, StrLen(dictionary)); - end; - CHECK_ERR(err, 'inflate with dict'); - end; - - err := inflateEnd(d_stream); - CHECK_ERR(err, 'inflateEnd'); - - if StrComp(PChar(uncompr), hello) <> 0 then - EXIT_ERR('bad inflate with dict') - else - WriteLn('inflate with dictionary: ', PChar(uncompr)); -end; -{$ENDIF} - -var compr, uncompr: Pointer; - comprLen, uncomprLen: LongInt; - -begin - if zlibVersion^ <> ZLIB_VERSION[1] then - EXIT_ERR('Incompatible zlib version'); - - WriteLn('zlib version: ', zlibVersion); - WriteLn('zlib compile flags: ', Format('0x%x', [zlibCompileFlags])); - - comprLen := 10000 * SizeOf(Integer); (* don't overflow on MSDOS *) - uncomprLen := comprLen; - GetMem(compr, comprLen); - GetMem(uncompr, uncomprLen); - if (compr = NIL) or (uncompr = NIL) then - EXIT_ERR('Out of memory'); - (* compr and uncompr are cleared to avoid reading uninitialized - * data and to ensure that uncompr compresses well. - *) - FillChar(compr^, comprLen, 0); - FillChar(uncompr^, uncomprLen, 0); - - {$IFDEF TEST_COMPRESS} - WriteLn('** Testing compress'); - test_compress(compr, comprLen, uncompr, uncomprLen); - {$ENDIF} - - {$IFDEF TEST_GZIO} - WriteLn('** Testing gzio'); - if ParamCount >= 1 then - test_gzio(ParamStr(1), uncompr, uncomprLen) - else - test_gzio(TESTFILE, uncompr, uncomprLen); - {$ENDIF} - - {$IFDEF TEST_DEFLATE} - WriteLn('** Testing deflate with small buffers'); - test_deflate(compr, comprLen); - {$ENDIF} - {$IFDEF TEST_INFLATE} - WriteLn('** Testing inflate with small buffers'); - test_inflate(compr, comprLen, uncompr, uncomprLen); - {$ENDIF} - - {$IFDEF TEST_DEFLATE} - WriteLn('** Testing deflate with large buffers'); - test_large_deflate(compr, comprLen, uncompr, uncomprLen); - {$ENDIF} - {$IFDEF TEST_INFLATE} - WriteLn('** Testing inflate with large buffers'); - test_large_inflate(compr, comprLen, uncompr, uncomprLen); - {$ENDIF} - - {$IFDEF TEST_FLUSH} - WriteLn('** Testing deflate with full flush'); - test_flush(compr, comprLen); - {$ENDIF} - {$IFDEF TEST_SYNC} - WriteLn('** Testing inflateSync'); - test_sync(compr, comprLen, uncompr, uncomprLen); - {$ENDIF} - comprLen := uncomprLen; - - {$IFDEF TEST_DICT} - WriteLn('** Testing deflate and inflate with preset dictionary'); - test_dict_deflate(compr, comprLen); - test_dict_inflate(compr, comprLen, uncompr, uncomprLen); - {$ENDIF} - - FreeMem(compr, comprLen); - FreeMem(uncompr, uncomprLen); -end. diff --git a/io2d/src/3rd-party/zlib/contrib/pascal/readme.txt b/io2d/src/3rd-party/zlib/contrib/pascal/readme.txt deleted file mode 100644 index 60e87c8..0000000 --- a/io2d/src/3rd-party/zlib/contrib/pascal/readme.txt +++ /dev/null @@ -1,76 +0,0 @@ - -This directory contains a Pascal (Delphi, Kylix) interface to the -zlib data compression library. - - -Directory listing -================= - -zlibd32.mak makefile for Borland C++ -example.pas usage example of zlib -zlibpas.pas the Pascal interface to zlib -readme.txt this file - - -Compatibility notes -=================== - -- Although the name "zlib" would have been more normal for the - zlibpas unit, this name is already taken by Borland's ZLib unit. - This is somehow unfortunate, because that unit is not a genuine - interface to the full-fledged zlib functionality, but a suite of - class wrappers around zlib streams. Other essential features, - such as checksums, are missing. - It would have been more appropriate for that unit to have a name - like "ZStreams", or something similar. - -- The C and zlib-supplied types int, uInt, long, uLong, etc. are - translated directly into Pascal types of similar sizes (Integer, - LongInt, etc.), to avoid namespace pollution. In particular, - there is no conversion of unsigned int into a Pascal unsigned - integer. The Word type is non-portable and has the same size - (16 bits) both in a 16-bit and in a 32-bit environment, unlike - Integer. Even if there is a 32-bit Cardinal type, there is no - real need for unsigned int in zlib under a 32-bit environment. - -- Except for the callbacks, the zlib function interfaces are - assuming the calling convention normally used in Pascal - (__pascal for DOS and Windows16, __fastcall for Windows32). - Since the cdecl keyword is used, the old Turbo Pascal does - not work with this interface. - -- The gz* function interfaces are not translated, to avoid - interfacing problems with the C runtime library. Besides, - gzprintf(gzFile file, const char *format, ...) - cannot be translated into Pascal. - - -Legal issues -============ - -The zlibpas interface is: - Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler. - Copyright (C) 1998 by Bob Dellaca. - Copyright (C) 2003 by Cosmin Truta. - -The example program is: - Copyright (C) 1995-2003 by Jean-loup Gailly. - Copyright (C) 1998,1999,2000 by Jacques Nomssi Nzali. - Copyright (C) 2003 by Cosmin Truta. - - This software is provided 'as-is', without any express or implied - warranty. In no event will the author be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - diff --git a/io2d/src/3rd-party/zlib/contrib/pascal/zlibd32.mak b/io2d/src/3rd-party/zlib/contrib/pascal/zlibd32.mak deleted file mode 100644 index 9bb00b7..0000000 --- a/io2d/src/3rd-party/zlib/contrib/pascal/zlibd32.mak +++ /dev/null @@ -1,99 +0,0 @@ -# Makefile for zlib -# For use with Delphi and C++ Builder under Win32 -# Updated for zlib 1.2.x by Cosmin Truta - -# ------------ Borland C++ ------------ - -# This project uses the Delphi (fastcall/register) calling convention: -LOC = -DZEXPORT=__fastcall -DZEXPORTVA=__cdecl - -CC = bcc32 -LD = bcc32 -AR = tlib -# do not use "-pr" in CFLAGS -CFLAGS = -a -d -k- -O2 $(LOC) -LDFLAGS = - - -# variables -ZLIB_LIB = zlib.lib - -OBJ1 = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj -OBJ2 = gzwrite.obj infback.obj inffast.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj -OBJP1 = +adler32.obj+compress.obj+crc32.obj+deflate.obj+gzclose.obj+gzlib.obj+gzread.obj -OBJP2 = +gzwrite.obj+infback.obj+inffast.obj+inflate.obj+inftrees.obj+trees.obj+uncompr.obj+zutil.obj - - -# targets -all: $(ZLIB_LIB) example.exe minigzip.exe - -.c.obj: - $(CC) -c $(CFLAGS) $*.c - -adler32.obj: adler32.c zlib.h zconf.h - -compress.obj: compress.c zlib.h zconf.h - -crc32.obj: crc32.c zlib.h zconf.h crc32.h - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - -gzclose.obj: gzclose.c zlib.h zconf.h gzguts.h - -gzlib.obj: gzlib.c zlib.h zconf.h gzguts.h - -gzread.obj: gzread.c zlib.h zconf.h gzguts.h - -gzwrite.obj: gzwrite.c zlib.h zconf.h gzguts.h - -infback.obj: infback.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h - -inflate.obj: inflate.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - -trees.obj: trees.c zutil.h zlib.h zconf.h deflate.h trees.h - -uncompr.obj: uncompr.c zlib.h zconf.h - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - -example.obj: test/example.c zlib.h zconf.h - -minigzip.obj: test/minigzip.c zlib.h zconf.h - - -# For the sake of the old Borland make, -# the command line is cut to fit in the MS-DOS 128 byte limit: -$(ZLIB_LIB): $(OBJ1) $(OBJ2) - -del $(ZLIB_LIB) - $(AR) $(ZLIB_LIB) $(OBJP1) - $(AR) $(ZLIB_LIB) $(OBJP2) - - -# testing -test: example.exe minigzip.exe - example - echo hello world | minigzip | minigzip -d - -example.exe: example.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) example.obj $(ZLIB_LIB) - -minigzip.exe: minigzip.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) minigzip.obj $(ZLIB_LIB) - - -# cleanup -clean: - -del *.obj - -del *.exe - -del *.lib - -del *.tds - -del zlib.bak - -del foo.gz - diff --git a/io2d/src/3rd-party/zlib/contrib/pascal/zlibpas.pas b/io2d/src/3rd-party/zlib/contrib/pascal/zlibpas.pas deleted file mode 100644 index e6a0782..0000000 --- a/io2d/src/3rd-party/zlib/contrib/pascal/zlibpas.pas +++ /dev/null @@ -1,276 +0,0 @@ -(* zlibpas -- Pascal interface to the zlib data compression library - * - * Copyright (C) 2003 Cosmin Truta. - * Derived from original sources by Bob Dellaca. - * For conditions of distribution and use, see copyright notice in readme.txt - *) - -unit zlibpas; - -interface - -const - ZLIB_VERSION = '1.2.8'; - ZLIB_VERNUM = $1280; - -type - alloc_func = function(opaque: Pointer; items, size: Integer): Pointer; - cdecl; - free_func = procedure(opaque, address: Pointer); - cdecl; - - in_func = function(opaque: Pointer; var buf: PByte): Integer; - cdecl; - out_func = function(opaque: Pointer; buf: PByte; size: Integer): Integer; - cdecl; - - z_streamp = ^z_stream; - z_stream = packed record - next_in: PChar; (* next input byte *) - avail_in: Integer; (* number of bytes available at next_in *) - total_in: LongInt; (* total nb of input bytes read so far *) - - next_out: PChar; (* next output byte should be put there *) - avail_out: Integer; (* remaining free space at next_out *) - total_out: LongInt; (* total nb of bytes output so far *) - - msg: PChar; (* last error message, NULL if no error *) - state: Pointer; (* not visible by applications *) - - zalloc: alloc_func; (* used to allocate the internal state *) - zfree: free_func; (* used to free the internal state *) - opaque: Pointer; (* private data object passed to zalloc and zfree *) - - data_type: Integer; (* best guess about the data type: ascii or binary *) - adler: LongInt; (* adler32 value of the uncompressed data *) - reserved: LongInt; (* reserved for future use *) - end; - - gz_headerp = ^gz_header; - gz_header = packed record - text: Integer; (* true if compressed data believed to be text *) - time: LongInt; (* modification time *) - xflags: Integer; (* extra flags (not used when writing a gzip file) *) - os: Integer; (* operating system *) - extra: PChar; (* pointer to extra field or Z_NULL if none *) - extra_len: Integer; (* extra field length (valid if extra != Z_NULL) *) - extra_max: Integer; (* space at extra (only when reading header) *) - name: PChar; (* pointer to zero-terminated file name or Z_NULL *) - name_max: Integer; (* space at name (only when reading header) *) - comment: PChar; (* pointer to zero-terminated comment or Z_NULL *) - comm_max: Integer; (* space at comment (only when reading header) *) - hcrc: Integer; (* true if there was or will be a header crc *) - done: Integer; (* true when done reading gzip header *) - end; - -(* constants *) -const - Z_NO_FLUSH = 0; - Z_PARTIAL_FLUSH = 1; - Z_SYNC_FLUSH = 2; - Z_FULL_FLUSH = 3; - Z_FINISH = 4; - Z_BLOCK = 5; - Z_TREES = 6; - - Z_OK = 0; - Z_STREAM_END = 1; - Z_NEED_DICT = 2; - Z_ERRNO = -1; - Z_STREAM_ERROR = -2; - Z_DATA_ERROR = -3; - Z_MEM_ERROR = -4; - Z_BUF_ERROR = -5; - Z_VERSION_ERROR = -6; - - Z_NO_COMPRESSION = 0; - Z_BEST_SPEED = 1; - Z_BEST_COMPRESSION = 9; - Z_DEFAULT_COMPRESSION = -1; - - Z_FILTERED = 1; - Z_HUFFMAN_ONLY = 2; - Z_RLE = 3; - Z_FIXED = 4; - Z_DEFAULT_STRATEGY = 0; - - Z_BINARY = 0; - Z_TEXT = 1; - Z_ASCII = 1; - Z_UNKNOWN = 2; - - Z_DEFLATED = 8; - -(* basic functions *) -function zlibVersion: PChar; -function deflateInit(var strm: z_stream; level: Integer): Integer; -function deflate(var strm: z_stream; flush: Integer): Integer; -function deflateEnd(var strm: z_stream): Integer; -function inflateInit(var strm: z_stream): Integer; -function inflate(var strm: z_stream; flush: Integer): Integer; -function inflateEnd(var strm: z_stream): Integer; - -(* advanced functions *) -function deflateInit2(var strm: z_stream; level, method, windowBits, - memLevel, strategy: Integer): Integer; -function deflateSetDictionary(var strm: z_stream; const dictionary: PChar; - dictLength: Integer): Integer; -function deflateCopy(var dest, source: z_stream): Integer; -function deflateReset(var strm: z_stream): Integer; -function deflateParams(var strm: z_stream; level, strategy: Integer): Integer; -function deflateTune(var strm: z_stream; good_length, max_lazy, nice_length, max_chain: Integer): Integer; -function deflateBound(var strm: z_stream; sourceLen: LongInt): LongInt; -function deflatePending(var strm: z_stream; var pending: Integer; var bits: Integer): Integer; -function deflatePrime(var strm: z_stream; bits, value: Integer): Integer; -function deflateSetHeader(var strm: z_stream; head: gz_header): Integer; -function inflateInit2(var strm: z_stream; windowBits: Integer): Integer; -function inflateSetDictionary(var strm: z_stream; const dictionary: PChar; - dictLength: Integer): Integer; -function inflateSync(var strm: z_stream): Integer; -function inflateCopy(var dest, source: z_stream): Integer; -function inflateReset(var strm: z_stream): Integer; -function inflateReset2(var strm: z_stream; windowBits: Integer): Integer; -function inflatePrime(var strm: z_stream; bits, value: Integer): Integer; -function inflateMark(var strm: z_stream): LongInt; -function inflateGetHeader(var strm: z_stream; var head: gz_header): Integer; -function inflateBackInit(var strm: z_stream; - windowBits: Integer; window: PChar): Integer; -function inflateBack(var strm: z_stream; in_fn: in_func; in_desc: Pointer; - out_fn: out_func; out_desc: Pointer): Integer; -function inflateBackEnd(var strm: z_stream): Integer; -function zlibCompileFlags: LongInt; - -(* utility functions *) -function compress(dest: PChar; var destLen: LongInt; - const source: PChar; sourceLen: LongInt): Integer; -function compress2(dest: PChar; var destLen: LongInt; - const source: PChar; sourceLen: LongInt; - level: Integer): Integer; -function compressBound(sourceLen: LongInt): LongInt; -function uncompress(dest: PChar; var destLen: LongInt; - const source: PChar; sourceLen: LongInt): Integer; - -(* checksum functions *) -function adler32(adler: LongInt; const buf: PChar; len: Integer): LongInt; -function adler32_combine(adler1, adler2, len2: LongInt): LongInt; -function crc32(crc: LongInt; const buf: PChar; len: Integer): LongInt; -function crc32_combine(crc1, crc2, len2: LongInt): LongInt; - -(* various hacks, don't look :) *) -function deflateInit_(var strm: z_stream; level: Integer; - const version: PChar; stream_size: Integer): Integer; -function inflateInit_(var strm: z_stream; const version: PChar; - stream_size: Integer): Integer; -function deflateInit2_(var strm: z_stream; - level, method, windowBits, memLevel, strategy: Integer; - const version: PChar; stream_size: Integer): Integer; -function inflateInit2_(var strm: z_stream; windowBits: Integer; - const version: PChar; stream_size: Integer): Integer; -function inflateBackInit_(var strm: z_stream; - windowBits: Integer; window: PChar; - const version: PChar; stream_size: Integer): Integer; - - -implementation - -{$L adler32.obj} -{$L compress.obj} -{$L crc32.obj} -{$L deflate.obj} -{$L infback.obj} -{$L inffast.obj} -{$L inflate.obj} -{$L inftrees.obj} -{$L trees.obj} -{$L uncompr.obj} -{$L zutil.obj} - -function adler32; external; -function adler32_combine; external; -function compress; external; -function compress2; external; -function compressBound; external; -function crc32; external; -function crc32_combine; external; -function deflate; external; -function deflateBound; external; -function deflateCopy; external; -function deflateEnd; external; -function deflateInit_; external; -function deflateInit2_; external; -function deflateParams; external; -function deflatePending; external; -function deflatePrime; external; -function deflateReset; external; -function deflateSetDictionary; external; -function deflateSetHeader; external; -function deflateTune; external; -function inflate; external; -function inflateBack; external; -function inflateBackEnd; external; -function inflateBackInit_; external; -function inflateCopy; external; -function inflateEnd; external; -function inflateGetHeader; external; -function inflateInit_; external; -function inflateInit2_; external; -function inflateMark; external; -function inflatePrime; external; -function inflateReset; external; -function inflateReset2; external; -function inflateSetDictionary; external; -function inflateSync; external; -function uncompress; external; -function zlibCompileFlags; external; -function zlibVersion; external; - -function deflateInit(var strm: z_stream; level: Integer): Integer; -begin - Result := deflateInit_(strm, level, ZLIB_VERSION, sizeof(z_stream)); -end; - -function deflateInit2(var strm: z_stream; level, method, windowBits, memLevel, - strategy: Integer): Integer; -begin - Result := deflateInit2_(strm, level, method, windowBits, memLevel, strategy, - ZLIB_VERSION, sizeof(z_stream)); -end; - -function inflateInit(var strm: z_stream): Integer; -begin - Result := inflateInit_(strm, ZLIB_VERSION, sizeof(z_stream)); -end; - -function inflateInit2(var strm: z_stream; windowBits: Integer): Integer; -begin - Result := inflateInit2_(strm, windowBits, ZLIB_VERSION, sizeof(z_stream)); -end; - -function inflateBackInit(var strm: z_stream; - windowBits: Integer; window: PChar): Integer; -begin - Result := inflateBackInit_(strm, windowBits, window, - ZLIB_VERSION, sizeof(z_stream)); -end; - -function _malloc(Size: Integer): Pointer; cdecl; -begin - GetMem(Result, Size); -end; - -procedure _free(Block: Pointer); cdecl; -begin - FreeMem(Block); -end; - -procedure _memset(P: Pointer; B: Byte; count: Integer); cdecl; -begin - FillChar(P^, count, B); -end; - -procedure _memcpy(dest, source: Pointer; count: Integer); cdecl; -begin - Move(source^, dest^, count); -end; - -end. diff --git a/io2d/src/3rd-party/zlib/contrib/puff/Makefile b/io2d/src/3rd-party/zlib/contrib/puff/Makefile deleted file mode 100644 index 0e2594c..0000000 --- a/io2d/src/3rd-party/zlib/contrib/puff/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -CFLAGS=-O - -puff: puff.o pufftest.o - -puff.o: puff.h - -pufftest.o: puff.h - -test: puff - puff zeros.raw - -puft: puff.c puff.h pufftest.o - cc -fprofile-arcs -ftest-coverage -o puft puff.c pufftest.o - -# puff full coverage test (should say 100%) -cov: puft - @rm -f *.gcov *.gcda - @puft -w zeros.raw 2>&1 | cat > /dev/null - @echo '04' | xxd -r -p | puft 2> /dev/null || test $$? -eq 2 - @echo '00' | xxd -r -p | puft 2> /dev/null || test $$? -eq 2 - @echo '00 00 00 00 00' | xxd -r -p | puft 2> /dev/null || test $$? -eq 254 - @echo '00 01 00 fe ff' | xxd -r -p | puft 2> /dev/null || test $$? -eq 2 - @echo '01 01 00 fe ff 0a' | xxd -r -p | puft -f 2>&1 | cat > /dev/null - @echo '02 7e ff ff' | xxd -r -p | puft 2> /dev/null || test $$? -eq 246 - @echo '02' | xxd -r -p | puft 2> /dev/null || test $$? -eq 2 - @echo '04 80 49 92 24 49 92 24 0f b4 ff ff c3 04' | xxd -r -p | puft 2> /dev/null || test $$? -eq 2 - @echo '04 80 49 92 24 49 92 24 71 ff ff 93 11 00' | xxd -r -p | puft 2> /dev/null || test $$? -eq 249 - @echo '04 c0 81 08 00 00 00 00 20 7f eb 0b 00 00' | xxd -r -p | puft 2> /dev/null || test $$? -eq 246 - @echo '0b 00 00' | xxd -r -p | puft -f 2>&1 | cat > /dev/null - @echo '1a 07' | xxd -r -p | puft 2> /dev/null || test $$? -eq 246 - @echo '0c c0 81 00 00 00 00 00 90 ff 6b 04' | xxd -r -p | puft 2> /dev/null || test $$? -eq 245 - @puft -f zeros.raw 2>&1 | cat > /dev/null - @echo 'fc 00 00' | xxd -r -p | puft 2> /dev/null || test $$? -eq 253 - @echo '04 00 fe ff' | xxd -r -p | puft 2> /dev/null || test $$? -eq 252 - @echo '04 00 24 49' | xxd -r -p | puft 2> /dev/null || test $$? -eq 251 - @echo '04 80 49 92 24 49 92 24 0f b4 ff ff c3 84' | xxd -r -p | puft 2> /dev/null || test $$? -eq 248 - @echo '04 00 24 e9 ff ff' | xxd -r -p | puft 2> /dev/null || test $$? -eq 250 - @echo '04 00 24 e9 ff 6d' | xxd -r -p | puft 2> /dev/null || test $$? -eq 247 - @gcov -n puff.c - -clean: - rm -f puff puft *.o *.gc* diff --git a/io2d/src/3rd-party/zlib/contrib/puff/README b/io2d/src/3rd-party/zlib/contrib/puff/README deleted file mode 100644 index bbc4cb5..0000000 --- a/io2d/src/3rd-party/zlib/contrib/puff/README +++ /dev/null @@ -1,63 +0,0 @@ -Puff -- A Simple Inflate -3 Mar 2003 -Mark Adler -madler@alumni.caltech.edu - -What this is -- - -puff.c provides the routine puff() to decompress the deflate data format. It -does so more slowly than zlib, but the code is about one-fifth the size of the -inflate code in zlib, and written to be very easy to read. - -Why I wrote this -- - -puff.c was written to document the deflate format unambiguously, by virtue of -being working C code. It is meant to supplement RFC 1951, which formally -describes the deflate format. I have received many questions on details of the -deflate format, and I hope that reading this code will answer those questions. -puff.c is heavily commented with details of the deflate format, especially -those little nooks and cranies of the format that might not be obvious from a -specification. - -puff.c may also be useful in applications where code size or memory usage is a -very limited resource, and speed is not as important. - -How to use it -- - -Well, most likely you should just be reading puff.c and using zlib for actual -applications, but if you must ... - -Include puff.h in your code, which provides this prototype: - -int puff(unsigned char *dest, /* pointer to destination pointer */ - unsigned long *destlen, /* amount of output space */ - unsigned char *source, /* pointer to source data pointer */ - unsigned long *sourcelen); /* amount of input available */ - -Then you can call puff() to decompress a deflate stream that is in memory in -its entirety at source, to a sufficiently sized block of memory for the -decompressed data at dest. puff() is the only external symbol in puff.c The -only C library functions that puff.c needs are setjmp() and longjmp(), which -are used to simplify error checking in the code to improve readabilty. puff.c -does no memory allocation, and uses less than 2K bytes off of the stack. - -If destlen is not enough space for the uncompressed data, then inflate will -return an error without writing more than destlen bytes. Note that this means -that in order to decompress the deflate data successfully, you need to know -the size of the uncompressed data ahead of time. - -If needed, puff() can determine the size of the uncompressed data with no -output space. This is done by passing dest equal to (unsigned char *)0. Then -the initial value of *destlen is ignored and *destlen is set to the length of -the uncompressed data. So if the size of the uncompressed data is not known, -then two passes of puff() can be used--first to determine the size, and second -to do the actual inflation after allocating the appropriate memory. Not -pretty, but it works. (This is one of the reasons you should be using zlib.) - -The deflate format is self-terminating. If the deflate stream does not end -in *sourcelen bytes, puff() will return an error without reading at or past -endsource. - -On return, *sourcelen is updated to the amount of input data consumed, and -*destlen is updated to the size of the uncompressed data. See the comments -in puff.c for the possible return codes for puff(). diff --git a/io2d/src/3rd-party/zlib/contrib/puff/puff.c b/io2d/src/3rd-party/zlib/contrib/puff/puff.c deleted file mode 100644 index ba58483..0000000 --- a/io2d/src/3rd-party/zlib/contrib/puff/puff.c +++ /dev/null @@ -1,840 +0,0 @@ -/* - * puff.c - * Copyright (C) 2002-2013 Mark Adler - * For conditions of distribution and use, see copyright notice in puff.h - * version 2.3, 21 Jan 2013 - * - * puff.c is a simple inflate written to be an unambiguous way to specify the - * deflate format. It is not written for speed but rather simplicity. As a - * side benefit, this code might actually be useful when small code is more - * important than speed, such as bootstrap applications. For typical deflate - * data, zlib's inflate() is about four times as fast as puff(). zlib's - * inflate compiles to around 20K on my machine, whereas puff.c compiles to - * around 4K on my machine (a PowerPC using GNU cc). If the faster decode() - * function here is used, then puff() is only twice as slow as zlib's - * inflate(). - * - * All dynamically allocated memory comes from the stack. The stack required - * is less than 2K bytes. This code is compatible with 16-bit int's and - * assumes that long's are at least 32 bits. puff.c uses the short data type, - * assumed to be 16 bits, for arrays in order to to conserve memory. The code - * works whether integers are stored big endian or little endian. - * - * In the comments below are "Format notes" that describe the inflate process - * and document some of the less obvious aspects of the format. This source - * code is meant to supplement RFC 1951, which formally describes the deflate - * format: - * - * http://www.zlib.org/rfc-deflate.html - */ - -/* - * Change history: - * - * 1.0 10 Feb 2002 - First version - * 1.1 17 Feb 2002 - Clarifications of some comments and notes - * - Update puff() dest and source pointers on negative - * errors to facilitate debugging deflators - * - Remove longest from struct huffman -- not needed - * - Simplify offs[] index in construct() - * - Add input size and checking, using longjmp() to - * maintain easy readability - * - Use short data type for large arrays - * - Use pointers instead of long to specify source and - * destination sizes to avoid arbitrary 4 GB limits - * 1.2 17 Mar 2002 - Add faster version of decode(), doubles speed (!), - * but leave simple version for readabilty - * - Make sure invalid distances detected if pointers - * are 16 bits - * - Fix fixed codes table error - * - Provide a scanning mode for determining size of - * uncompressed data - * 1.3 20 Mar 2002 - Go back to lengths for puff() parameters [Gailly] - * - Add a puff.h file for the interface - * - Add braces in puff() for else do [Gailly] - * - Use indexes instead of pointers for readability - * 1.4 31 Mar 2002 - Simplify construct() code set check - * - Fix some comments - * - Add FIXLCODES #define - * 1.5 6 Apr 2002 - Minor comment fixes - * 1.6 7 Aug 2002 - Minor format changes - * 1.7 3 Mar 2003 - Added test code for distribution - * - Added zlib-like license - * 1.8 9 Jan 2004 - Added some comments on no distance codes case - * 1.9 21 Feb 2008 - Fix bug on 16-bit integer architectures [Pohland] - * - Catch missing end-of-block symbol error - * 2.0 25 Jul 2008 - Add #define to permit distance too far back - * - Add option in TEST code for puff to write the data - * - Add option in TEST code to skip input bytes - * - Allow TEST code to read from piped stdin - * 2.1 4 Apr 2010 - Avoid variable initialization for happier compilers - * - Avoid unsigned comparisons for even happier compilers - * 2.2 25 Apr 2010 - Fix bug in variable initializations [Oberhumer] - * - Add const where appropriate [Oberhumer] - * - Split if's and ?'s for coverage testing - * - Break out test code to separate file - * - Move NIL to puff.h - * - Allow incomplete code only if single code length is 1 - * - Add full code coverage test to Makefile - * 2.3 21 Jan 2013 - Check for invalid code length codes in dynamic blocks - */ - -#include /* for setjmp(), longjmp(), and jmp_buf */ -#include "puff.h" /* prototype for puff() */ - -#define local static /* for local function definitions */ - -/* - * Maximums for allocations and loops. It is not useful to change these -- - * they are fixed by the deflate format. - */ -#define MAXBITS 15 /* maximum bits in a code */ -#define MAXLCODES 286 /* maximum number of literal/length codes */ -#define MAXDCODES 30 /* maximum number of distance codes */ -#define MAXCODES (MAXLCODES+MAXDCODES) /* maximum codes lengths to read */ -#define FIXLCODES 288 /* number of fixed literal/length codes */ - -/* input and output state */ -struct state { - /* output state */ - unsigned char *out; /* output buffer */ - unsigned long outlen; /* available space at out */ - unsigned long outcnt; /* bytes written to out so far */ - - /* input state */ - const unsigned char *in; /* input buffer */ - unsigned long inlen; /* available input at in */ - unsigned long incnt; /* bytes read so far */ - int bitbuf; /* bit buffer */ - int bitcnt; /* number of bits in bit buffer */ - - /* input limit error return state for bits() and decode() */ - jmp_buf env; -}; - -/* - * Return need bits from the input stream. This always leaves less than - * eight bits in the buffer. bits() works properly for need == 0. - * - * Format notes: - * - * - Bits are stored in bytes from the least significant bit to the most - * significant bit. Therefore bits are dropped from the bottom of the bit - * buffer, using shift right, and new bytes are appended to the top of the - * bit buffer, using shift left. - */ -local int bits(struct state *s, int need) -{ - long val; /* bit accumulator (can use up to 20 bits) */ - - /* load at least need bits into val */ - val = s->bitbuf; - while (s->bitcnt < need) { - if (s->incnt == s->inlen) - longjmp(s->env, 1); /* out of input */ - val |= (long)(s->in[s->incnt++]) << s->bitcnt; /* load eight bits */ - s->bitcnt += 8; - } - - /* drop need bits and update buffer, always zero to seven bits left */ - s->bitbuf = (int)(val >> need); - s->bitcnt -= need; - - /* return need bits, zeroing the bits above that */ - return (int)(val & ((1L << need) - 1)); -} - -/* - * Process a stored block. - * - * Format notes: - * - * - After the two-bit stored block type (00), the stored block length and - * stored bytes are byte-aligned for fast copying. Therefore any leftover - * bits in the byte that has the last bit of the type, as many as seven, are - * discarded. The value of the discarded bits are not defined and should not - * be checked against any expectation. - * - * - The second inverted copy of the stored block length does not have to be - * checked, but it's probably a good idea to do so anyway. - * - * - A stored block can have zero length. This is sometimes used to byte-align - * subsets of the compressed data for random access or partial recovery. - */ -local int stored(struct state *s) -{ - unsigned len; /* length of stored block */ - - /* discard leftover bits from current byte (assumes s->bitcnt < 8) */ - s->bitbuf = 0; - s->bitcnt = 0; - - /* get length and check against its one's complement */ - if (s->incnt + 4 > s->inlen) - return 2; /* not enough input */ - len = s->in[s->incnt++]; - len |= s->in[s->incnt++] << 8; - if (s->in[s->incnt++] != (~len & 0xff) || - s->in[s->incnt++] != ((~len >> 8) & 0xff)) - return -2; /* didn't match complement! */ - - /* copy len bytes from in to out */ - if (s->incnt + len > s->inlen) - return 2; /* not enough input */ - if (s->out != NIL) { - if (s->outcnt + len > s->outlen) - return 1; /* not enough output space */ - while (len--) - s->out[s->outcnt++] = s->in[s->incnt++]; - } - else { /* just scanning */ - s->outcnt += len; - s->incnt += len; - } - - /* done with a valid stored block */ - return 0; -} - -/* - * Huffman code decoding tables. count[1..MAXBITS] is the number of symbols of - * each length, which for a canonical code are stepped through in order. - * symbol[] are the symbol values in canonical order, where the number of - * entries is the sum of the counts in count[]. The decoding process can be - * seen in the function decode() below. - */ -struct huffman { - short *count; /* number of symbols of each length */ - short *symbol; /* canonically ordered symbols */ -}; - -/* - * Decode a code from the stream s using huffman table h. Return the symbol or - * a negative value if there is an error. If all of the lengths are zero, i.e. - * an empty code, or if the code is incomplete and an invalid code is received, - * then -10 is returned after reading MAXBITS bits. - * - * Format notes: - * - * - The codes as stored in the compressed data are bit-reversed relative to - * a simple integer ordering of codes of the same lengths. Hence below the - * bits are pulled from the compressed data one at a time and used to - * build the code value reversed from what is in the stream in order to - * permit simple integer comparisons for decoding. A table-based decoding - * scheme (as used in zlib) does not need to do this reversal. - * - * - The first code for the shortest length is all zeros. Subsequent codes of - * the same length are simply integer increments of the previous code. When - * moving up a length, a zero bit is appended to the code. For a complete - * code, the last code of the longest length will be all ones. - * - * - Incomplete codes are handled by this decoder, since they are permitted - * in the deflate format. See the format notes for fixed() and dynamic(). - */ -#ifdef SLOW -local int decode(struct state *s, const struct huffman *h) -{ - int len; /* current number of bits in code */ - int code; /* len bits being decoded */ - int first; /* first code of length len */ - int count; /* number of codes of length len */ - int index; /* index of first code of length len in symbol table */ - - code = first = index = 0; - for (len = 1; len <= MAXBITS; len++) { - code |= bits(s, 1); /* get next bit */ - count = h->count[len]; - if (code - count < first) /* if length len, return symbol */ - return h->symbol[index + (code - first)]; - index += count; /* else update for next length */ - first += count; - first <<= 1; - code <<= 1; - } - return -10; /* ran out of codes */ -} - -/* - * A faster version of decode() for real applications of this code. It's not - * as readable, but it makes puff() twice as fast. And it only makes the code - * a few percent larger. - */ -#else /* !SLOW */ -local int decode(struct state *s, const struct huffman *h) -{ - int len; /* current number of bits in code */ - int code; /* len bits being decoded */ - int first; /* first code of length len */ - int count; /* number of codes of length len */ - int index; /* index of first code of length len in symbol table */ - int bitbuf; /* bits from stream */ - int left; /* bits left in next or left to process */ - short *next; /* next number of codes */ - - bitbuf = s->bitbuf; - left = s->bitcnt; - code = first = index = 0; - len = 1; - next = h->count + 1; - while (1) { - while (left--) { - code |= bitbuf & 1; - bitbuf >>= 1; - count = *next++; - if (code - count < first) { /* if length len, return symbol */ - s->bitbuf = bitbuf; - s->bitcnt = (s->bitcnt - len) & 7; - return h->symbol[index + (code - first)]; - } - index += count; /* else update for next length */ - first += count; - first <<= 1; - code <<= 1; - len++; - } - left = (MAXBITS+1) - len; - if (left == 0) - break; - if (s->incnt == s->inlen) - longjmp(s->env, 1); /* out of input */ - bitbuf = s->in[s->incnt++]; - if (left > 8) - left = 8; - } - return -10; /* ran out of codes */ -} -#endif /* SLOW */ - -/* - * Given the list of code lengths length[0..n-1] representing a canonical - * Huffman code for n symbols, construct the tables required to decode those - * codes. Those tables are the number of codes of each length, and the symbols - * sorted by length, retaining their original order within each length. The - * return value is zero for a complete code set, negative for an over- - * subscribed code set, and positive for an incomplete code set. The tables - * can be used if the return value is zero or positive, but they cannot be used - * if the return value is negative. If the return value is zero, it is not - * possible for decode() using that table to return an error--any stream of - * enough bits will resolve to a symbol. If the return value is positive, then - * it is possible for decode() using that table to return an error for received - * codes past the end of the incomplete lengths. - * - * Not used by decode(), but used for error checking, h->count[0] is the number - * of the n symbols not in the code. So n - h->count[0] is the number of - * codes. This is useful for checking for incomplete codes that have more than - * one symbol, which is an error in a dynamic block. - * - * Assumption: for all i in 0..n-1, 0 <= length[i] <= MAXBITS - * This is assured by the construction of the length arrays in dynamic() and - * fixed() and is not verified by construct(). - * - * Format notes: - * - * - Permitted and expected examples of incomplete codes are one of the fixed - * codes and any code with a single symbol which in deflate is coded as one - * bit instead of zero bits. See the format notes for fixed() and dynamic(). - * - * - Within a given code length, the symbols are kept in ascending order for - * the code bits definition. - */ -local int construct(struct huffman *h, const short *length, int n) -{ - int symbol; /* current symbol when stepping through length[] */ - int len; /* current length when stepping through h->count[] */ - int left; /* number of possible codes left of current length */ - short offs[MAXBITS+1]; /* offsets in symbol table for each length */ - - /* count number of codes of each length */ - for (len = 0; len <= MAXBITS; len++) - h->count[len] = 0; - for (symbol = 0; symbol < n; symbol++) - (h->count[length[symbol]])++; /* assumes lengths are within bounds */ - if (h->count[0] == n) /* no codes! */ - return 0; /* complete, but decode() will fail */ - - /* check for an over-subscribed or incomplete set of lengths */ - left = 1; /* one possible code of zero length */ - for (len = 1; len <= MAXBITS; len++) { - left <<= 1; /* one more bit, double codes left */ - left -= h->count[len]; /* deduct count from possible codes */ - if (left < 0) - return left; /* over-subscribed--return negative */ - } /* left > 0 means incomplete */ - - /* generate offsets into symbol table for each length for sorting */ - offs[1] = 0; - for (len = 1; len < MAXBITS; len++) - offs[len + 1] = offs[len] + h->count[len]; - - /* - * put symbols in table sorted by length, by symbol order within each - * length - */ - for (symbol = 0; symbol < n; symbol++) - if (length[symbol] != 0) - h->symbol[offs[length[symbol]]++] = symbol; - - /* return zero for complete set, positive for incomplete set */ - return left; -} - -/* - * Decode literal/length and distance codes until an end-of-block code. - * - * Format notes: - * - * - Compressed data that is after the block type if fixed or after the code - * description if dynamic is a combination of literals and length/distance - * pairs terminated by and end-of-block code. Literals are simply Huffman - * coded bytes. A length/distance pair is a coded length followed by a - * coded distance to represent a string that occurs earlier in the - * uncompressed data that occurs again at the current location. - * - * - Literals, lengths, and the end-of-block code are combined into a single - * code of up to 286 symbols. They are 256 literals (0..255), 29 length - * symbols (257..285), and the end-of-block symbol (256). - * - * - There are 256 possible lengths (3..258), and so 29 symbols are not enough - * to represent all of those. Lengths 3..10 and 258 are in fact represented - * by just a length symbol. Lengths 11..257 are represented as a symbol and - * some number of extra bits that are added as an integer to the base length - * of the length symbol. The number of extra bits is determined by the base - * length symbol. These are in the static arrays below, lens[] for the base - * lengths and lext[] for the corresponding number of extra bits. - * - * - The reason that 258 gets its own symbol is that the longest length is used - * often in highly redundant files. Note that 258 can also be coded as the - * base value 227 plus the maximum extra value of 31. While a good deflate - * should never do this, it is not an error, and should be decoded properly. - * - * - If a length is decoded, including its extra bits if any, then it is - * followed a distance code. There are up to 30 distance symbols. Again - * there are many more possible distances (1..32768), so extra bits are added - * to a base value represented by the symbol. The distances 1..4 get their - * own symbol, but the rest require extra bits. The base distances and - * corresponding number of extra bits are below in the static arrays dist[] - * and dext[]. - * - * - Literal bytes are simply written to the output. A length/distance pair is - * an instruction to copy previously uncompressed bytes to the output. The - * copy is from distance bytes back in the output stream, copying for length - * bytes. - * - * - Distances pointing before the beginning of the output data are not - * permitted. - * - * - Overlapped copies, where the length is greater than the distance, are - * allowed and common. For example, a distance of one and a length of 258 - * simply copies the last byte 258 times. A distance of four and a length of - * twelve copies the last four bytes three times. A simple forward copy - * ignoring whether the length is greater than the distance or not implements - * this correctly. You should not use memcpy() since its behavior is not - * defined for overlapped arrays. You should not use memmove() or bcopy() - * since though their behavior -is- defined for overlapping arrays, it is - * defined to do the wrong thing in this case. - */ -local int codes(struct state *s, - const struct huffman *lencode, - const struct huffman *distcode) -{ - int symbol; /* decoded symbol */ - int len; /* length for copy */ - unsigned dist; /* distance for copy */ - static const short lens[29] = { /* Size base for length codes 257..285 */ - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, - 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258}; - static const short lext[29] = { /* Extra bits for length codes 257..285 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, - 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0}; - static const short dists[30] = { /* Offset base for distance codes 0..29 */ - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, - 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, - 8193, 12289, 16385, 24577}; - static const short dext[30] = { /* Extra bits for distance codes 0..29 */ - 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, - 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, - 12, 12, 13, 13}; - - /* decode literals and length/distance pairs */ - do { - symbol = decode(s, lencode); - if (symbol < 0) - return symbol; /* invalid symbol */ - if (symbol < 256) { /* literal: symbol is the byte */ - /* write out the literal */ - if (s->out != NIL) { - if (s->outcnt == s->outlen) - return 1; - s->out[s->outcnt] = symbol; - } - s->outcnt++; - } - else if (symbol > 256) { /* length */ - /* get and compute length */ - symbol -= 257; - if (symbol >= 29) - return -10; /* invalid fixed code */ - len = lens[symbol] + bits(s, lext[symbol]); - - /* get and check distance */ - symbol = decode(s, distcode); - if (symbol < 0) - return symbol; /* invalid symbol */ - dist = dists[symbol] + bits(s, dext[symbol]); -#ifndef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - if (dist > s->outcnt) - return -11; /* distance too far back */ -#endif - - /* copy length bytes from distance bytes back */ - if (s->out != NIL) { - if (s->outcnt + len > s->outlen) - return 1; - while (len--) { - s->out[s->outcnt] = -#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - dist > s->outcnt ? - 0 : -#endif - s->out[s->outcnt - dist]; - s->outcnt++; - } - } - else - s->outcnt += len; - } - } while (symbol != 256); /* end of block symbol */ - - /* done with a valid fixed or dynamic block */ - return 0; -} - -/* - * Process a fixed codes block. - * - * Format notes: - * - * - This block type can be useful for compressing small amounts of data for - * which the size of the code descriptions in a dynamic block exceeds the - * benefit of custom codes for that block. For fixed codes, no bits are - * spent on code descriptions. Instead the code lengths for literal/length - * codes and distance codes are fixed. The specific lengths for each symbol - * can be seen in the "for" loops below. - * - * - The literal/length code is complete, but has two symbols that are invalid - * and should result in an error if received. This cannot be implemented - * simply as an incomplete code since those two symbols are in the "middle" - * of the code. They are eight bits long and the longest literal/length\ - * code is nine bits. Therefore the code must be constructed with those - * symbols, and the invalid symbols must be detected after decoding. - * - * - The fixed distance codes also have two invalid symbols that should result - * in an error if received. Since all of the distance codes are the same - * length, this can be implemented as an incomplete code. Then the invalid - * codes are detected while decoding. - */ -local int fixed(struct state *s) -{ - static int virgin = 1; - static short lencnt[MAXBITS+1], lensym[FIXLCODES]; - static short distcnt[MAXBITS+1], distsym[MAXDCODES]; - static struct huffman lencode, distcode; - - /* build fixed huffman tables if first call (may not be thread safe) */ - if (virgin) { - int symbol; - short lengths[FIXLCODES]; - - /* construct lencode and distcode */ - lencode.count = lencnt; - lencode.symbol = lensym; - distcode.count = distcnt; - distcode.symbol = distsym; - - /* literal/length table */ - for (symbol = 0; symbol < 144; symbol++) - lengths[symbol] = 8; - for (; symbol < 256; symbol++) - lengths[symbol] = 9; - for (; symbol < 280; symbol++) - lengths[symbol] = 7; - for (; symbol < FIXLCODES; symbol++) - lengths[symbol] = 8; - construct(&lencode, lengths, FIXLCODES); - - /* distance table */ - for (symbol = 0; symbol < MAXDCODES; symbol++) - lengths[symbol] = 5; - construct(&distcode, lengths, MAXDCODES); - - /* do this just once */ - virgin = 0; - } - - /* decode data until end-of-block code */ - return codes(s, &lencode, &distcode); -} - -/* - * Process a dynamic codes block. - * - * Format notes: - * - * - A dynamic block starts with a description of the literal/length and - * distance codes for that block. New dynamic blocks allow the compressor to - * rapidly adapt to changing data with new codes optimized for that data. - * - * - The codes used by the deflate format are "canonical", which means that - * the actual bits of the codes are generated in an unambiguous way simply - * from the number of bits in each code. Therefore the code descriptions - * are simply a list of code lengths for each symbol. - * - * - The code lengths are stored in order for the symbols, so lengths are - * provided for each of the literal/length symbols, and for each of the - * distance symbols. - * - * - If a symbol is not used in the block, this is represented by a zero as - * as the code length. This does not mean a zero-length code, but rather - * that no code should be created for this symbol. There is no way in the - * deflate format to represent a zero-length code. - * - * - The maximum number of bits in a code is 15, so the possible lengths for - * any code are 1..15. - * - * - The fact that a length of zero is not permitted for a code has an - * interesting consequence. Normally if only one symbol is used for a given - * code, then in fact that code could be represented with zero bits. However - * in deflate, that code has to be at least one bit. So for example, if - * only a single distance base symbol appears in a block, then it will be - * represented by a single code of length one, in particular one 0 bit. This - * is an incomplete code, since if a 1 bit is received, it has no meaning, - * and should result in an error. So incomplete distance codes of one symbol - * should be permitted, and the receipt of invalid codes should be handled. - * - * - It is also possible to have a single literal/length code, but that code - * must be the end-of-block code, since every dynamic block has one. This - * is not the most efficient way to create an empty block (an empty fixed - * block is fewer bits), but it is allowed by the format. So incomplete - * literal/length codes of one symbol should also be permitted. - * - * - If there are only literal codes and no lengths, then there are no distance - * codes. This is represented by one distance code with zero bits. - * - * - The list of up to 286 length/literal lengths and up to 30 distance lengths - * are themselves compressed using Huffman codes and run-length encoding. In - * the list of code lengths, a 0 symbol means no code, a 1..15 symbol means - * that length, and the symbols 16, 17, and 18 are run-length instructions. - * Each of 16, 17, and 18 are follwed by extra bits to define the length of - * the run. 16 copies the last length 3 to 6 times. 17 represents 3 to 10 - * zero lengths, and 18 represents 11 to 138 zero lengths. Unused symbols - * are common, hence the special coding for zero lengths. - * - * - The symbols for 0..18 are Huffman coded, and so that code must be - * described first. This is simply a sequence of up to 19 three-bit values - * representing no code (0) or the code length for that symbol (1..7). - * - * - A dynamic block starts with three fixed-size counts from which is computed - * the number of literal/length code lengths, the number of distance code - * lengths, and the number of code length code lengths (ok, you come up with - * a better name!) in the code descriptions. For the literal/length and - * distance codes, lengths after those provided are considered zero, i.e. no - * code. The code length code lengths are received in a permuted order (see - * the order[] array below) to make a short code length code length list more - * likely. As it turns out, very short and very long codes are less likely - * to be seen in a dynamic code description, hence what may appear initially - * to be a peculiar ordering. - * - * - Given the number of literal/length code lengths (nlen) and distance code - * lengths (ndist), then they are treated as one long list of nlen + ndist - * code lengths. Therefore run-length coding can and often does cross the - * boundary between the two sets of lengths. - * - * - So to summarize, the code description at the start of a dynamic block is - * three counts for the number of code lengths for the literal/length codes, - * the distance codes, and the code length codes. This is followed by the - * code length code lengths, three bits each. This is used to construct the - * code length code which is used to read the remainder of the lengths. Then - * the literal/length code lengths and distance lengths are read as a single - * set of lengths using the code length codes. Codes are constructed from - * the resulting two sets of lengths, and then finally you can start - * decoding actual compressed data in the block. - * - * - For reference, a "typical" size for the code description in a dynamic - * block is around 80 bytes. - */ -local int dynamic(struct state *s) -{ - int nlen, ndist, ncode; /* number of lengths in descriptor */ - int index; /* index of lengths[] */ - int err; /* construct() return value */ - short lengths[MAXCODES]; /* descriptor code lengths */ - short lencnt[MAXBITS+1], lensym[MAXLCODES]; /* lencode memory */ - short distcnt[MAXBITS+1], distsym[MAXDCODES]; /* distcode memory */ - struct huffman lencode, distcode; /* length and distance codes */ - static const short order[19] = /* permutation of code length codes */ - {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; - - /* construct lencode and distcode */ - lencode.count = lencnt; - lencode.symbol = lensym; - distcode.count = distcnt; - distcode.symbol = distsym; - - /* get number of lengths in each table, check lengths */ - nlen = bits(s, 5) + 257; - ndist = bits(s, 5) + 1; - ncode = bits(s, 4) + 4; - if (nlen > MAXLCODES || ndist > MAXDCODES) - return -3; /* bad counts */ - - /* read code length code lengths (really), missing lengths are zero */ - for (index = 0; index < ncode; index++) - lengths[order[index]] = bits(s, 3); - for (; index < 19; index++) - lengths[order[index]] = 0; - - /* build huffman table for code lengths codes (use lencode temporarily) */ - err = construct(&lencode, lengths, 19); - if (err != 0) /* require complete code set here */ - return -4; - - /* read length/literal and distance code length tables */ - index = 0; - while (index < nlen + ndist) { - int symbol; /* decoded value */ - int len; /* last length to repeat */ - - symbol = decode(s, &lencode); - if (symbol < 0) - return symbol; /* invalid symbol */ - if (symbol < 16) /* length in 0..15 */ - lengths[index++] = symbol; - else { /* repeat instruction */ - len = 0; /* assume repeating zeros */ - if (symbol == 16) { /* repeat last length 3..6 times */ - if (index == 0) - return -5; /* no last length! */ - len = lengths[index - 1]; /* last length */ - symbol = 3 + bits(s, 2); - } - else if (symbol == 17) /* repeat zero 3..10 times */ - symbol = 3 + bits(s, 3); - else /* == 18, repeat zero 11..138 times */ - symbol = 11 + bits(s, 7); - if (index + symbol > nlen + ndist) - return -6; /* too many lengths! */ - while (symbol--) /* repeat last or zero symbol times */ - lengths[index++] = len; - } - } - - /* check for end-of-block code -- there better be one! */ - if (lengths[256] == 0) - return -9; - - /* build huffman table for literal/length codes */ - err = construct(&lencode, lengths, nlen); - if (err && (err < 0 || nlen != lencode.count[0] + lencode.count[1])) - return -7; /* incomplete code ok only for single length 1 code */ - - /* build huffman table for distance codes */ - err = construct(&distcode, lengths + nlen, ndist); - if (err && (err < 0 || ndist != distcode.count[0] + distcode.count[1])) - return -8; /* incomplete code ok only for single length 1 code */ - - /* decode data until end-of-block code */ - return codes(s, &lencode, &distcode); -} - -/* - * Inflate source to dest. On return, destlen and sourcelen are updated to the - * size of the uncompressed data and the size of the deflate data respectively. - * On success, the return value of puff() is zero. If there is an error in the - * source data, i.e. it is not in the deflate format, then a negative value is - * returned. If there is not enough input available or there is not enough - * output space, then a positive error is returned. In that case, destlen and - * sourcelen are not updated to facilitate retrying from the beginning with the - * provision of more input data or more output space. In the case of invalid - * inflate data (a negative error), the dest and source pointers are updated to - * facilitate the debugging of deflators. - * - * puff() also has a mode to determine the size of the uncompressed output with - * no output written. For this dest must be (unsigned char *)0. In this case, - * the input value of *destlen is ignored, and on return *destlen is set to the - * size of the uncompressed output. - * - * The return codes are: - * - * 2: available inflate data did not terminate - * 1: output space exhausted before completing inflate - * 0: successful inflate - * -1: invalid block type (type == 3) - * -2: stored block length did not match one's complement - * -3: dynamic block code description: too many length or distance codes - * -4: dynamic block code description: code lengths codes incomplete - * -5: dynamic block code description: repeat lengths with no first length - * -6: dynamic block code description: repeat more than specified lengths - * -7: dynamic block code description: invalid literal/length code lengths - * -8: dynamic block code description: invalid distance code lengths - * -9: dynamic block code description: missing end-of-block code - * -10: invalid literal/length or distance code in fixed or dynamic block - * -11: distance is too far back in fixed or dynamic block - * - * Format notes: - * - * - Three bits are read for each block to determine the kind of block and - * whether or not it is the last block. Then the block is decoded and the - * process repeated if it was not the last block. - * - * - The leftover bits in the last byte of the deflate data after the last - * block (if it was a fixed or dynamic block) are undefined and have no - * expected values to check. - */ -int puff(unsigned char *dest, /* pointer to destination pointer */ - unsigned long *destlen, /* amount of output space */ - const unsigned char *source, /* pointer to source data pointer */ - unsigned long *sourcelen) /* amount of input available */ -{ - struct state s; /* input/output state */ - int last, type; /* block information */ - int err; /* return value */ - - /* initialize output state */ - s.out = dest; - s.outlen = *destlen; /* ignored if dest is NIL */ - s.outcnt = 0; - - /* initialize input state */ - s.in = source; - s.inlen = *sourcelen; - s.incnt = 0; - s.bitbuf = 0; - s.bitcnt = 0; - - /* return if bits() or decode() tries to read past available input */ - if (setjmp(s.env) != 0) /* if came back here via longjmp() */ - err = 2; /* then skip do-loop, return error */ - else { - /* process blocks until last block or error */ - do { - last = bits(&s, 1); /* one if last block */ - type = bits(&s, 2); /* block type 0..3 */ - err = type == 0 ? - stored(&s) : - (type == 1 ? - fixed(&s) : - (type == 2 ? - dynamic(&s) : - -1)); /* type == 3, invalid */ - if (err != 0) - break; /* return with error */ - } while (!last); - } - - /* update the lengths and return */ - if (err <= 0) { - *destlen = s.outcnt; - *sourcelen = s.incnt; - } - return err; -} diff --git a/io2d/src/3rd-party/zlib/contrib/puff/puff.h b/io2d/src/3rd-party/zlib/contrib/puff/puff.h deleted file mode 100644 index e23a245..0000000 --- a/io2d/src/3rd-party/zlib/contrib/puff/puff.h +++ /dev/null @@ -1,35 +0,0 @@ -/* puff.h - Copyright (C) 2002-2013 Mark Adler, all rights reserved - version 2.3, 21 Jan 2013 - - This software is provided 'as-is', without any express or implied - warranty. In no event will the author be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Mark Adler madler@alumni.caltech.edu - */ - - -/* - * See puff.c for purpose and usage. - */ -#ifndef NIL -# define NIL ((unsigned char *)0) /* for no output option */ -#endif - -int puff(unsigned char *dest, /* pointer to destination pointer */ - unsigned long *destlen, /* amount of output space */ - const unsigned char *source, /* pointer to source data pointer */ - unsigned long *sourcelen); /* amount of input available */ diff --git a/io2d/src/3rd-party/zlib/contrib/puff/pufftest.c b/io2d/src/3rd-party/zlib/contrib/puff/pufftest.c deleted file mode 100644 index 7764814..0000000 --- a/io2d/src/3rd-party/zlib/contrib/puff/pufftest.c +++ /dev/null @@ -1,165 +0,0 @@ -/* - * pufftest.c - * Copyright (C) 2002-2013 Mark Adler - * For conditions of distribution and use, see copyright notice in puff.h - * version 2.3, 21 Jan 2013 - */ - -/* Example of how to use puff(). - - Usage: puff [-w] [-f] [-nnn] file - ... | puff [-w] [-f] [-nnn] - - where file is the input file with deflate data, nnn is the number of bytes - of input to skip before inflating (e.g. to skip a zlib or gzip header), and - -w is used to write the decompressed data to stdout. -f is for coverage - testing, and causes pufftest to fail with not enough output space (-f does - a write like -w, so -w is not required). */ - -#include -#include -#include "puff.h" - -#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__) -# include -# include -# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) -#else -# define SET_BINARY_MODE(file) -#endif - -#define local static - -/* Return size times approximately the cube root of 2, keeping the result as 1, - 3, or 5 times a power of 2 -- the result is always > size, until the result - is the maximum value of an unsigned long, where it remains. This is useful - to keep reallocations less than ~33% over the actual data. */ -local size_t bythirds(size_t size) -{ - int n; - size_t m; - - m = size; - for (n = 0; m; n++) - m >>= 1; - if (n < 3) - return size + 1; - n -= 3; - m = size >> n; - m += m == 6 ? 2 : 1; - m <<= n; - return m > size ? m : (size_t)(-1); -} - -/* Read the input file *name, or stdin if name is NULL, into allocated memory. - Reallocate to larger buffers until the entire file is read in. Return a - pointer to the allocated data, or NULL if there was a memory allocation - failure. *len is the number of bytes of data read from the input file (even - if load() returns NULL). If the input file was empty or could not be opened - or read, *len is zero. */ -local void *load(const char *name, size_t *len) -{ - size_t size; - void *buf, *swap; - FILE *in; - - *len = 0; - buf = malloc(size = 4096); - if (buf == NULL) - return NULL; - in = name == NULL ? stdin : fopen(name, "rb"); - if (in != NULL) { - for (;;) { - *len += fread((char *)buf + *len, 1, size - *len, in); - if (*len < size) break; - size = bythirds(size); - if (size == *len || (swap = realloc(buf, size)) == NULL) { - free(buf); - buf = NULL; - break; - } - buf = swap; - } - fclose(in); - } - return buf; -} - -int main(int argc, char **argv) -{ - int ret, put = 0, fail = 0; - unsigned skip = 0; - char *arg, *name = NULL; - unsigned char *source = NULL, *dest; - size_t len = 0; - unsigned long sourcelen, destlen; - - /* process arguments */ - while (arg = *++argv, --argc) - if (arg[0] == '-') { - if (arg[1] == 'w' && arg[2] == 0) - put = 1; - else if (arg[1] == 'f' && arg[2] == 0) - fail = 1, put = 1; - else if (arg[1] >= '0' && arg[1] <= '9') - skip = (unsigned)atoi(arg + 1); - else { - fprintf(stderr, "invalid option %s\n", arg); - return 3; - } - } - else if (name != NULL) { - fprintf(stderr, "only one file name allowed\n"); - return 3; - } - else - name = arg; - source = load(name, &len); - if (source == NULL) { - fprintf(stderr, "memory allocation failure\n"); - return 4; - } - if (len == 0) { - fprintf(stderr, "could not read %s, or it was empty\n", - name == NULL ? "" : name); - free(source); - return 3; - } - if (skip >= len) { - fprintf(stderr, "skip request of %d leaves no input\n", skip); - free(source); - return 3; - } - - /* test inflate data with offset skip */ - len -= skip; - sourcelen = (unsigned long)len; - ret = puff(NIL, &destlen, source + skip, &sourcelen); - if (ret) - fprintf(stderr, "puff() failed with return code %d\n", ret); - else { - fprintf(stderr, "puff() succeeded uncompressing %lu bytes\n", destlen); - if (sourcelen < len) fprintf(stderr, "%lu compressed bytes unused\n", - len - sourcelen); - } - - /* if requested, inflate again and write decompressd data to stdout */ - if (put && ret == 0) { - if (fail) - destlen >>= 1; - dest = malloc(destlen); - if (dest == NULL) { - fprintf(stderr, "memory allocation failure\n"); - free(source); - return 4; - } - puff(dest, &destlen, source + skip, &sourcelen); - SET_BINARY_MODE(stdout); - fwrite(dest, 1, destlen, stdout); - free(dest); - } - - /* clean up */ - free(source); - return ret; -} diff --git a/io2d/src/3rd-party/zlib/contrib/puff/zeros.raw b/io2d/src/3rd-party/zlib/contrib/puff/zeros.raw deleted file mode 100644 index 0a90e76b300205a44a0ecbf613e64aaaef2e51e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2517 zcmYdFkYHV$AkxzmXu#!mP=i#?5{3o^3jqcYc(h*%Opg+yAut*OqaiT#LSPd+y9&tF zP5<`ixi4UXdB8xJfs^6ee;AkH?VUytyFsD;HLIJ(gg5bUnNh}Q2#kinXb22!2pr%5 E0JRq+;s5{u diff --git a/io2d/src/3rd-party/zlib/contrib/testzlib/testzlib.c b/io2d/src/3rd-party/zlib/contrib/testzlib/testzlib.c deleted file mode 100644 index 8626c92..0000000 --- a/io2d/src/3rd-party/zlib/contrib/testzlib/testzlib.c +++ /dev/null @@ -1,275 +0,0 @@ -#include -#include -#include - -#include "zlib.h" - - -void MyDoMinus64(LARGE_INTEGER *R,LARGE_INTEGER A,LARGE_INTEGER B) -{ - R->HighPart = A.HighPart - B.HighPart; - if (A.LowPart >= B.LowPart) - R->LowPart = A.LowPart - B.LowPart; - else - { - R->LowPart = A.LowPart - B.LowPart; - R->HighPart --; - } -} - -#ifdef _M_X64 -// see http://msdn2.microsoft.com/library/twchhe95(en-us,vs.80).aspx for __rdtsc -unsigned __int64 __rdtsc(void); -void BeginCountRdtsc(LARGE_INTEGER * pbeginTime64) -{ - // printf("rdtsc = %I64x\n",__rdtsc()); - pbeginTime64->QuadPart=__rdtsc(); -} - -LARGE_INTEGER GetResRdtsc(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf) -{ - LARGE_INTEGER LIres; - unsigned _int64 res=__rdtsc()-((unsigned _int64)(beginTime64.QuadPart)); - LIres.QuadPart=res; - // printf("rdtsc = %I64x\n",__rdtsc()); - return LIres; -} -#else -#ifdef _M_IX86 -void myGetRDTSC32(LARGE_INTEGER * pbeginTime64) -{ - DWORD dwEdx,dwEax; - _asm - { - rdtsc - mov dwEax,eax - mov dwEdx,edx - } - pbeginTime64->LowPart=dwEax; - pbeginTime64->HighPart=dwEdx; -} - -void BeginCountRdtsc(LARGE_INTEGER * pbeginTime64) -{ - myGetRDTSC32(pbeginTime64); -} - -LARGE_INTEGER GetResRdtsc(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf) -{ - LARGE_INTEGER LIres,endTime64; - myGetRDTSC32(&endTime64); - - LIres.LowPart=LIres.HighPart=0; - MyDoMinus64(&LIres,endTime64,beginTime64); - return LIres; -} -#else -void myGetRDTSC32(LARGE_INTEGER * pbeginTime64) -{ -} - -void BeginCountRdtsc(LARGE_INTEGER * pbeginTime64) -{ -} - -LARGE_INTEGER GetResRdtsc(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf) -{ - LARGE_INTEGER lr; - lr.QuadPart=0; - return lr; -} -#endif -#endif - -void BeginCountPerfCounter(LARGE_INTEGER * pbeginTime64,BOOL fComputeTimeQueryPerf) -{ - if ((!fComputeTimeQueryPerf) || (!QueryPerformanceCounter(pbeginTime64))) - { - pbeginTime64->LowPart = GetTickCount(); - pbeginTime64->HighPart = 0; - } -} - -DWORD GetMsecSincePerfCounter(LARGE_INTEGER beginTime64,BOOL fComputeTimeQueryPerf) -{ - LARGE_INTEGER endTime64,ticksPerSecond,ticks; - DWORDLONG ticksShifted,tickSecShifted; - DWORD dwLog=16+0; - DWORD dwRet; - if ((!fComputeTimeQueryPerf) || (!QueryPerformanceCounter(&endTime64))) - dwRet = (GetTickCount() - beginTime64.LowPart)*1; - else - { - MyDoMinus64(&ticks,endTime64,beginTime64); - QueryPerformanceFrequency(&ticksPerSecond); - - - { - ticksShifted = Int64ShrlMod32(*(DWORDLONG*)&ticks,dwLog); - tickSecShifted = Int64ShrlMod32(*(DWORDLONG*)&ticksPerSecond,dwLog); - - } - - dwRet = (DWORD)((((DWORD)ticksShifted)*1000)/(DWORD)(tickSecShifted)); - dwRet *=1; - } - return dwRet; -} - -int ReadFileMemory(const char* filename,long* plFileSize,unsigned char** pFilePtr) -{ - FILE* stream; - unsigned char* ptr; - int retVal=1; - stream=fopen(filename, "rb"); - if (stream==NULL) - return 0; - - fseek(stream,0,SEEK_END); - - *plFileSize=ftell(stream); - fseek(stream,0,SEEK_SET); - ptr=malloc((*plFileSize)+1); - if (ptr==NULL) - retVal=0; - else - { - if (fread(ptr, 1, *plFileSize,stream) != (*plFileSize)) - retVal=0; - } - fclose(stream); - *pFilePtr=ptr; - return retVal; -} - -int main(int argc, char *argv[]) -{ - int BlockSizeCompress=0x8000; - int BlockSizeUncompress=0x8000; - int cprLevel=Z_DEFAULT_COMPRESSION ; - long lFileSize; - unsigned char* FilePtr; - long lBufferSizeCpr; - long lBufferSizeUncpr; - long lCompressedSize=0; - unsigned char* CprPtr; - unsigned char* UncprPtr; - long lSizeCpr,lSizeUncpr; - DWORD dwGetTick,dwMsecQP; - LARGE_INTEGER li_qp,li_rdtsc,dwResRdtsc; - - if (argc<=1) - { - printf("run TestZlib [BlockSizeCompress] [BlockSizeUncompress] [compres. level]\n"); - return 0; - } - - if (ReadFileMemory(argv[1],&lFileSize,&FilePtr)==0) - { - printf("error reading %s\n",argv[1]); - return 1; - } - else printf("file %s read, %u bytes\n",argv[1],lFileSize); - - if (argc>=3) - BlockSizeCompress=atol(argv[2]); - - if (argc>=4) - BlockSizeUncompress=atol(argv[3]); - - if (argc>=5) - cprLevel=(int)atol(argv[4]); - - lBufferSizeCpr = lFileSize + (lFileSize/0x10) + 0x200; - lBufferSizeUncpr = lBufferSizeCpr; - - CprPtr=(unsigned char*)malloc(lBufferSizeCpr + BlockSizeCompress); - - BeginCountPerfCounter(&li_qp,TRUE); - dwGetTick=GetTickCount(); - BeginCountRdtsc(&li_rdtsc); - { - z_stream zcpr; - int ret=Z_OK; - long lOrigToDo = lFileSize; - long lOrigDone = 0; - int step=0; - memset(&zcpr,0,sizeof(z_stream)); - deflateInit(&zcpr,cprLevel); - - zcpr.next_in = FilePtr; - zcpr.next_out = CprPtr; - - - do - { - long all_read_before = zcpr.total_in; - zcpr.avail_in = min(lOrigToDo,BlockSizeCompress); - zcpr.avail_out = BlockSizeCompress; - ret=deflate(&zcpr,(zcpr.avail_in==lOrigToDo) ? Z_FINISH : Z_SYNC_FLUSH); - lOrigDone += (zcpr.total_in-all_read_before); - lOrigToDo -= (zcpr.total_in-all_read_before); - step++; - } while (ret==Z_OK); - - lSizeCpr=zcpr.total_out; - deflateEnd(&zcpr); - dwGetTick=GetTickCount()-dwGetTick; - dwMsecQP=GetMsecSincePerfCounter(li_qp,TRUE); - dwResRdtsc=GetResRdtsc(li_rdtsc,TRUE); - printf("total compress size = %u, in %u step\n",lSizeCpr,step); - printf("time = %u msec = %f sec\n",dwGetTick,dwGetTick/(double)1000.); - printf("defcpr time QP = %u msec = %f sec\n",dwMsecQP,dwMsecQP/(double)1000.); - printf("defcpr result rdtsc = %I64x\n\n",dwResRdtsc.QuadPart); - } - - CprPtr=(unsigned char*)realloc(CprPtr,lSizeCpr); - UncprPtr=(unsigned char*)malloc(lBufferSizeUncpr + BlockSizeUncompress); - - BeginCountPerfCounter(&li_qp,TRUE); - dwGetTick=GetTickCount(); - BeginCountRdtsc(&li_rdtsc); - { - z_stream zcpr; - int ret=Z_OK; - long lOrigToDo = lSizeCpr; - long lOrigDone = 0; - int step=0; - memset(&zcpr,0,sizeof(z_stream)); - inflateInit(&zcpr); - - zcpr.next_in = CprPtr; - zcpr.next_out = UncprPtr; - - - do - { - long all_read_before = zcpr.total_in; - zcpr.avail_in = min(lOrigToDo,BlockSizeUncompress); - zcpr.avail_out = BlockSizeUncompress; - ret=inflate(&zcpr,Z_SYNC_FLUSH); - lOrigDone += (zcpr.total_in-all_read_before); - lOrigToDo -= (zcpr.total_in-all_read_before); - step++; - } while (ret==Z_OK); - - lSizeUncpr=zcpr.total_out; - inflateEnd(&zcpr); - dwGetTick=GetTickCount()-dwGetTick; - dwMsecQP=GetMsecSincePerfCounter(li_qp,TRUE); - dwResRdtsc=GetResRdtsc(li_rdtsc,TRUE); - printf("total uncompress size = %u, in %u step\n",lSizeUncpr,step); - printf("time = %u msec = %f sec\n",dwGetTick,dwGetTick/(double)1000.); - printf("uncpr time QP = %u msec = %f sec\n",dwMsecQP,dwMsecQP/(double)1000.); - printf("uncpr result rdtsc = %I64x\n\n",dwResRdtsc.QuadPart); - } - - if (lSizeUncpr==lFileSize) - { - if (memcmp(FilePtr,UncprPtr,lFileSize)==0) - printf("compare ok\n"); - - } - - return 0; -} diff --git a/io2d/src/3rd-party/zlib/contrib/testzlib/testzlib.txt b/io2d/src/3rd-party/zlib/contrib/testzlib/testzlib.txt deleted file mode 100644 index e508bb2..0000000 --- a/io2d/src/3rd-party/zlib/contrib/testzlib/testzlib.txt +++ /dev/null @@ -1,10 +0,0 @@ -To build testzLib with Visual Studio 2005: - -copy to a directory file from : -- root of zLib tree -- contrib/testzlib -- contrib/masmx86 -- contrib/masmx64 -- contrib/vstudio/vc7 - -and open testzlib8.sln \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/untgz/Makefile b/io2d/src/3rd-party/zlib/contrib/untgz/Makefile deleted file mode 100644 index b54266f..0000000 --- a/io2d/src/3rd-party/zlib/contrib/untgz/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -CC=cc -CFLAGS=-g - -untgz: untgz.o ../../libz.a - $(CC) $(CFLAGS) -o untgz untgz.o -L../.. -lz - -untgz.o: untgz.c ../../zlib.h - $(CC) $(CFLAGS) -c -I../.. untgz.c - -../../libz.a: - cd ../..; ./configure; make - -clean: - rm -f untgz untgz.o *~ diff --git a/io2d/src/3rd-party/zlib/contrib/untgz/Makefile.msc b/io2d/src/3rd-party/zlib/contrib/untgz/Makefile.msc deleted file mode 100644 index 77b8602..0000000 --- a/io2d/src/3rd-party/zlib/contrib/untgz/Makefile.msc +++ /dev/null @@ -1,17 +0,0 @@ -CC=cl -CFLAGS=-MD - -untgz.exe: untgz.obj ..\..\zlib.lib - $(CC) $(CFLAGS) untgz.obj ..\..\zlib.lib - -untgz.obj: untgz.c ..\..\zlib.h - $(CC) $(CFLAGS) -c -I..\.. untgz.c - -..\..\zlib.lib: - cd ..\.. - $(MAKE) -f win32\makefile.msc - cd contrib\untgz - -clean: - -del untgz.obj - -del untgz.exe diff --git a/io2d/src/3rd-party/zlib/contrib/untgz/untgz.c b/io2d/src/3rd-party/zlib/contrib/untgz/untgz.c deleted file mode 100644 index 2c391e5..0000000 --- a/io2d/src/3rd-party/zlib/contrib/untgz/untgz.c +++ /dev/null @@ -1,674 +0,0 @@ -/* - * untgz.c -- Display contents and extract files from a gzip'd TAR file - * - * written by Pedro A. Aranda Gutierrez - * adaptation to Unix by Jean-loup Gailly - * various fixes by Cosmin Truta - */ - -#include -#include -#include -#include -#include - -#include "zlib.h" - -#ifdef unix -# include -#else -# include -# include -#endif - -#ifdef WIN32 -#include -# ifndef F_OK -# define F_OK 0 -# endif -# define mkdir(dirname,mode) _mkdir(dirname) -# ifdef _MSC_VER -# define access(path,mode) _access(path,mode) -# define chmod(path,mode) _chmod(path,mode) -# define strdup(str) _strdup(str) -# endif -#else -# include -#endif - - -/* values used in typeflag field */ - -#define REGTYPE '0' /* regular file */ -#define AREGTYPE '\0' /* regular file */ -#define LNKTYPE '1' /* link */ -#define SYMTYPE '2' /* reserved */ -#define CHRTYPE '3' /* character special */ -#define BLKTYPE '4' /* block special */ -#define DIRTYPE '5' /* directory */ -#define FIFOTYPE '6' /* FIFO special */ -#define CONTTYPE '7' /* reserved */ - -/* GNU tar extensions */ - -#define GNUTYPE_DUMPDIR 'D' /* file names from dumped directory */ -#define GNUTYPE_LONGLINK 'K' /* long link name */ -#define GNUTYPE_LONGNAME 'L' /* long file name */ -#define GNUTYPE_MULTIVOL 'M' /* continuation of file from another volume */ -#define GNUTYPE_NAMES 'N' /* file name that does not fit into main hdr */ -#define GNUTYPE_SPARSE 'S' /* sparse file */ -#define GNUTYPE_VOLHDR 'V' /* tape/volume header */ - - -/* tar header */ - -#define BLOCKSIZE 512 -#define SHORTNAMESIZE 100 - -struct tar_header -{ /* byte offset */ - char name[100]; /* 0 */ - char mode[8]; /* 100 */ - char uid[8]; /* 108 */ - char gid[8]; /* 116 */ - char size[12]; /* 124 */ - char mtime[12]; /* 136 */ - char chksum[8]; /* 148 */ - char typeflag; /* 156 */ - char linkname[100]; /* 157 */ - char magic[6]; /* 257 */ - char version[2]; /* 263 */ - char uname[32]; /* 265 */ - char gname[32]; /* 297 */ - char devmajor[8]; /* 329 */ - char devminor[8]; /* 337 */ - char prefix[155]; /* 345 */ - /* 500 */ -}; - -union tar_buffer -{ - char buffer[BLOCKSIZE]; - struct tar_header header; -}; - -struct attr_item -{ - struct attr_item *next; - char *fname; - int mode; - time_t time; -}; - -enum { TGZ_EXTRACT, TGZ_LIST, TGZ_INVALID }; - -char *TGZfname OF((const char *)); -void TGZnotfound OF((const char *)); - -int getoct OF((char *, int)); -char *strtime OF((time_t *)); -int setfiletime OF((char *, time_t)); -void push_attr OF((struct attr_item **, char *, int, time_t)); -void restore_attr OF((struct attr_item **)); - -int ExprMatch OF((char *, char *)); - -int makedir OF((char *)); -int matchname OF((int, int, char **, char *)); - -void error OF((const char *)); -int tar OF((gzFile, int, int, int, char **)); - -void help OF((int)); -int main OF((int, char **)); - -char *prog; - -const char *TGZsuffix[] = { "\0", ".tar", ".tar.gz", ".taz", ".tgz", NULL }; - -/* return the file name of the TGZ archive */ -/* or NULL if it does not exist */ - -char *TGZfname (const char *arcname) -{ - static char buffer[1024]; - int origlen,i; - - strcpy(buffer,arcname); - origlen = strlen(buffer); - - for (i=0; TGZsuffix[i]; i++) - { - strcpy(buffer+origlen,TGZsuffix[i]); - if (access(buffer,F_OK) == 0) - return buffer; - } - return NULL; -} - - -/* error message for the filename */ - -void TGZnotfound (const char *arcname) -{ - int i; - - fprintf(stderr,"%s: Couldn't find ",prog); - for (i=0;TGZsuffix[i];i++) - fprintf(stderr,(TGZsuffix[i+1]) ? "%s%s, " : "or %s%s\n", - arcname, - TGZsuffix[i]); - exit(1); -} - - -/* convert octal digits to int */ -/* on error return -1 */ - -int getoct (char *p,int width) -{ - int result = 0; - char c; - - while (width--) - { - c = *p++; - if (c == 0) - break; - if (c == ' ') - continue; - if (c < '0' || c > '7') - return -1; - result = result * 8 + (c - '0'); - } - return result; -} - - -/* convert time_t to string */ -/* use the "YYYY/MM/DD hh:mm:ss" format */ - -char *strtime (time_t *t) -{ - struct tm *local; - static char result[32]; - - local = localtime(t); - sprintf(result,"%4d/%02d/%02d %02d:%02d:%02d", - local->tm_year+1900, local->tm_mon+1, local->tm_mday, - local->tm_hour, local->tm_min, local->tm_sec); - return result; -} - - -/* set file time */ - -int setfiletime (char *fname,time_t ftime) -{ -#ifdef WIN32 - static int isWinNT = -1; - SYSTEMTIME st; - FILETIME locft, modft; - struct tm *loctm; - HANDLE hFile; - int result; - - loctm = localtime(&ftime); - if (loctm == NULL) - return -1; - - st.wYear = (WORD)loctm->tm_year + 1900; - st.wMonth = (WORD)loctm->tm_mon + 1; - st.wDayOfWeek = (WORD)loctm->tm_wday; - st.wDay = (WORD)loctm->tm_mday; - st.wHour = (WORD)loctm->tm_hour; - st.wMinute = (WORD)loctm->tm_min; - st.wSecond = (WORD)loctm->tm_sec; - st.wMilliseconds = 0; - if (!SystemTimeToFileTime(&st, &locft) || - !LocalFileTimeToFileTime(&locft, &modft)) - return -1; - - if (isWinNT < 0) - isWinNT = (GetVersion() < 0x80000000) ? 1 : 0; - hFile = CreateFile(fname, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, - (isWinNT ? FILE_FLAG_BACKUP_SEMANTICS : 0), - NULL); - if (hFile == INVALID_HANDLE_VALUE) - return -1; - result = SetFileTime(hFile, NULL, NULL, &modft) ? 0 : -1; - CloseHandle(hFile); - return result; -#else - struct utimbuf settime; - - settime.actime = settime.modtime = ftime; - return utime(fname,&settime); -#endif -} - - -/* push file attributes */ - -void push_attr(struct attr_item **list,char *fname,int mode,time_t time) -{ - struct attr_item *item; - - item = (struct attr_item *)malloc(sizeof(struct attr_item)); - if (item == NULL) - error("Out of memory"); - item->fname = strdup(fname); - item->mode = mode; - item->time = time; - item->next = *list; - *list = item; -} - - -/* restore file attributes */ - -void restore_attr(struct attr_item **list) -{ - struct attr_item *item, *prev; - - for (item = *list; item != NULL; ) - { - setfiletime(item->fname,item->time); - chmod(item->fname,item->mode); - prev = item; - item = item->next; - free(prev); - } - *list = NULL; -} - - -/* match regular expression */ - -#define ISSPECIAL(c) (((c) == '*') || ((c) == '/')) - -int ExprMatch (char *string,char *expr) -{ - while (1) - { - if (ISSPECIAL(*expr)) - { - if (*expr == '/') - { - if (*string != '\\' && *string != '/') - return 0; - string ++; expr++; - } - else if (*expr == '*') - { - if (*expr ++ == 0) - return 1; - while (*++string != *expr) - if (*string == 0) - return 0; - } - } - else - { - if (*string != *expr) - return 0; - if (*expr++ == 0) - return 1; - string++; - } - } -} - - -/* recursive mkdir */ -/* abort on ENOENT; ignore other errors like "directory already exists" */ -/* return 1 if OK */ -/* 0 on error */ - -int makedir (char *newdir) -{ - char *buffer = strdup(newdir); - char *p; - int len = strlen(buffer); - - if (len <= 0) { - free(buffer); - return 0; - } - if (buffer[len-1] == '/') { - buffer[len-1] = '\0'; - } - if (mkdir(buffer, 0755) == 0) - { - free(buffer); - return 1; - } - - p = buffer+1; - while (1) - { - char hold; - - while(*p && *p != '\\' && *p != '/') - p++; - hold = *p; - *p = 0; - if ((mkdir(buffer, 0755) == -1) && (errno == ENOENT)) - { - fprintf(stderr,"%s: Couldn't create directory %s\n",prog,buffer); - free(buffer); - return 0; - } - if (hold == 0) - break; - *p++ = hold; - } - free(buffer); - return 1; -} - - -int matchname (int arg,int argc,char **argv,char *fname) -{ - if (arg == argc) /* no arguments given (untgz tgzarchive) */ - return 1; - - while (arg < argc) - if (ExprMatch(fname,argv[arg++])) - return 1; - - return 0; /* ignore this for the moment being */ -} - - -/* tar file list or extract */ - -int tar (gzFile in,int action,int arg,int argc,char **argv) -{ - union tar_buffer buffer; - int len; - int err; - int getheader = 1; - int remaining = 0; - FILE *outfile = NULL; - char fname[BLOCKSIZE]; - int tarmode; - time_t tartime; - struct attr_item *attributes = NULL; - - if (action == TGZ_LIST) - printf(" date time size file\n" - " ---------- -------- --------- -------------------------------------\n"); - while (1) - { - len = gzread(in, &buffer, BLOCKSIZE); - if (len < 0) - error(gzerror(in, &err)); - /* - * Always expect complete blocks to process - * the tar information. - */ - if (len != BLOCKSIZE) - { - action = TGZ_INVALID; /* force error exit */ - remaining = 0; /* force I/O cleanup */ - } - - /* - * If we have to get a tar header - */ - if (getheader >= 1) - { - /* - * if we met the end of the tar - * or the end-of-tar block, - * we are done - */ - if (len == 0 || buffer.header.name[0] == 0) - break; - - tarmode = getoct(buffer.header.mode,8); - tartime = (time_t)getoct(buffer.header.mtime,12); - if (tarmode == -1 || tartime == (time_t)-1) - { - buffer.header.name[0] = 0; - action = TGZ_INVALID; - } - - if (getheader == 1) - { - strncpy(fname,buffer.header.name,SHORTNAMESIZE); - if (fname[SHORTNAMESIZE-1] != 0) - fname[SHORTNAMESIZE] = 0; - } - else - { - /* - * The file name is longer than SHORTNAMESIZE - */ - if (strncmp(fname,buffer.header.name,SHORTNAMESIZE-1) != 0) - error("bad long name"); - getheader = 1; - } - - /* - * Act according to the type flag - */ - switch (buffer.header.typeflag) - { - case DIRTYPE: - if (action == TGZ_LIST) - printf(" %s %s\n",strtime(&tartime),fname); - if (action == TGZ_EXTRACT) - { - makedir(fname); - push_attr(&attributes,fname,tarmode,tartime); - } - break; - case REGTYPE: - case AREGTYPE: - remaining = getoct(buffer.header.size,12); - if (remaining == -1) - { - action = TGZ_INVALID; - break; - } - if (action == TGZ_LIST) - printf(" %s %9d %s\n",strtime(&tartime),remaining,fname); - else if (action == TGZ_EXTRACT) - { - if (matchname(arg,argc,argv,fname)) - { - outfile = fopen(fname,"wb"); - if (outfile == NULL) { - /* try creating directory */ - char *p = strrchr(fname, '/'); - if (p != NULL) { - *p = '\0'; - makedir(fname); - *p = '/'; - outfile = fopen(fname,"wb"); - } - } - if (outfile != NULL) - printf("Extracting %s\n",fname); - else - fprintf(stderr, "%s: Couldn't create %s",prog,fname); - } - else - outfile = NULL; - } - getheader = 0; - break; - case GNUTYPE_LONGLINK: - case GNUTYPE_LONGNAME: - remaining = getoct(buffer.header.size,12); - if (remaining < 0 || remaining >= BLOCKSIZE) - { - action = TGZ_INVALID; - break; - } - len = gzread(in, fname, BLOCKSIZE); - if (len < 0) - error(gzerror(in, &err)); - if (fname[BLOCKSIZE-1] != 0 || (int)strlen(fname) > remaining) - { - action = TGZ_INVALID; - break; - } - getheader = 2; - break; - default: - if (action == TGZ_LIST) - printf(" %s <---> %s\n",strtime(&tartime),fname); - break; - } - } - else - { - unsigned int bytes = (remaining > BLOCKSIZE) ? BLOCKSIZE : remaining; - - if (outfile != NULL) - { - if (fwrite(&buffer,sizeof(char),bytes,outfile) != bytes) - { - fprintf(stderr, - "%s: Error writing %s -- skipping\n",prog,fname); - fclose(outfile); - outfile = NULL; - remove(fname); - } - } - remaining -= bytes; - } - - if (remaining == 0) - { - getheader = 1; - if (outfile != NULL) - { - fclose(outfile); - outfile = NULL; - if (action != TGZ_INVALID) - push_attr(&attributes,fname,tarmode,tartime); - } - } - - /* - * Abandon if errors are found - */ - if (action == TGZ_INVALID) - { - error("broken archive"); - break; - } - } - - /* - * Restore file modes and time stamps - */ - restore_attr(&attributes); - - if (gzclose(in) != Z_OK) - error("failed gzclose"); - - return 0; -} - - -/* ============================================================ */ - -void help(int exitval) -{ - printf("untgz version 0.2.1\n" - " using zlib version %s\n\n", - zlibVersion()); - printf("Usage: untgz file.tgz extract all files\n" - " untgz file.tgz fname ... extract selected files\n" - " untgz -l file.tgz list archive contents\n" - " untgz -h display this help\n"); - exit(exitval); -} - -void error(const char *msg) -{ - fprintf(stderr, "%s: %s\n", prog, msg); - exit(1); -} - - -/* ============================================================ */ - -#if defined(WIN32) && defined(__GNUC__) -int _CRT_glob = 0; /* disable argument globbing in MinGW */ -#endif - -int main(int argc,char **argv) -{ - int action = TGZ_EXTRACT; - int arg = 1; - char *TGZfile; - gzFile *f; - - prog = strrchr(argv[0],'\\'); - if (prog == NULL) - { - prog = strrchr(argv[0],'/'); - if (prog == NULL) - { - prog = strrchr(argv[0],':'); - if (prog == NULL) - prog = argv[0]; - else - prog++; - } - else - prog++; - } - else - prog++; - - if (argc == 1) - help(0); - - if (strcmp(argv[arg],"-l") == 0) - { - action = TGZ_LIST; - if (argc == ++arg) - help(0); - } - else if (strcmp(argv[arg],"-h") == 0) - { - help(0); - } - - if ((TGZfile = TGZfname(argv[arg])) == NULL) - TGZnotfound(argv[arg]); - - ++arg; - if ((action == TGZ_LIST) && (arg != argc)) - help(1); - -/* - * Process the TGZ file - */ - switch(action) - { - case TGZ_LIST: - case TGZ_EXTRACT: - f = gzopen(TGZfile,"rb"); - if (f == NULL) - { - fprintf(stderr,"%s: Couldn't gzopen %s\n",prog,TGZfile); - return 1; - } - exit(tar(f, action, arg, argc, argv)); - break; - - default: - error("Unknown option"); - exit(1); - } - - return 0; -} diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/readme.txt b/io2d/src/3rd-party/zlib/contrib/vstudio/readme.txt deleted file mode 100644 index 04b8baa..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/readme.txt +++ /dev/null @@ -1,65 +0,0 @@ -Building instructions for the DLL versions of Zlib 1.2.8 -======================================================== - -This directory contains projects that build zlib and minizip using -Microsoft Visual C++ 9.0/10.0. - -You don't need to build these projects yourself. You can download the -binaries from: - http://www.winimage.com/zLibDll - -More information can be found at this site. - - - - - -Build instructions for Visual Studio 2008 (32 bits or 64 bits) --------------------------------------------------------------- -- Uncompress current zlib, including all contrib/* files -- Compile assembly code (with Visual Studio Command Prompt) by running: - bld_ml64.bat (in contrib\masmx64) - bld_ml32.bat (in contrib\masmx86) -- Open contrib\vstudio\vc9\zlibvc.sln with Microsoft Visual C++ 2008 -- Or run: vcbuild /rebuild contrib\vstudio\vc9\zlibvc.sln "Release|Win32" - -Build instructions for Visual Studio 2010 (32 bits or 64 bits) --------------------------------------------------------------- -- Uncompress current zlib, including all contrib/* files -- Open contrib\vstudio\vc10\zlibvc.sln with Microsoft Visual C++ 2010 - -Build instructions for Visual Studio 2012 (32 bits or 64 bits) --------------------------------------------------------------- -- Uncompress current zlib, including all contrib/* files -- Open contrib\vstudio\vc11\zlibvc.sln with Microsoft Visual C++ 2012 - - -Important ---------- -- To use zlibwapi.dll in your application, you must define the - macro ZLIB_WINAPI when compiling your application's source files. - - -Additional notes ----------------- -- This DLL, named zlibwapi.dll, is compatible to the old zlib.dll built - by Gilles Vollant from the zlib 1.1.x sources, and distributed at - http://www.winimage.com/zLibDll - It uses the WINAPI calling convention for the exported functions, and - includes the minizip functionality. If your application needs that - particular build of zlib.dll, you can rename zlibwapi.dll to zlib.dll. - -- The new DLL was renamed because there exist several incompatible - versions of zlib.dll on the Internet. - -- There is also an official DLL build of zlib, named zlib1.dll. This one - is exporting the functions using the CDECL convention. See the file - win32\DLL_FAQ.txt found in this zlib distribution. - -- There used to be a ZLIB_DLL macro in zlib 1.1.x, but now this symbol - has a slightly different effect. To avoid compatibility problems, do - not define it here. - - -Gilles Vollant -info@winimage.com diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj deleted file mode 100644 index 1b36242..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj +++ /dev/null @@ -1,310 +0,0 @@ - - - - - Debug - Itanium - - - Debug - Win32 - - - Debug - x64 - - - Release - Itanium - - - Release - Win32 - - - Release - x64 - - - - {C52F9E7B-498A-42BE-8DB4-85A15694382A} - Win32Proj - - - - Application - MultiByte - - - Application - MultiByte - - - Application - MultiByte - - - Application - MultiByte - - - Application - MultiByte - - - Application - MultiByte - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30128.1 - x86\MiniUnzip$(Configuration)\ - x86\MiniUnzip$(Configuration)\Tmp\ - true - false - x86\MiniUnzip$(Configuration)\ - x86\MiniUnzip$(Configuration)\Tmp\ - false - false - x64\MiniUnzip$(Configuration)\ - x64\MiniUnzip$(Configuration)\Tmp\ - true - false - ia64\MiniUnzip$(Configuration)\ - ia64\MiniUnzip$(Configuration)\Tmp\ - true - false - x64\MiniUnzip$(Configuration)\ - x64\MiniUnzip$(Configuration)\Tmp\ - false - false - ia64\MiniUnzip$(Configuration)\ - ia64\MiniUnzip$(Configuration)\Tmp\ - false - false - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebug - false - - - $(IntDir) - Level3 - EditAndContinue - - - x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)miniunz.exe - true - $(OutDir)miniunz.pdb - Console - false - - - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - Default - MultiThreaded - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)miniunz.exe - true - Console - true - true - false - - - MachineX86 - - - - - X64 - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - $(IntDir) - Level3 - ProgramDatabase - - - x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)miniunz.exe - true - $(OutDir)miniunz.pdb - Console - MachineX64 - - - - - Itanium - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - $(IntDir) - Level3 - ProgramDatabase - - - ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)miniunz.exe - true - $(OutDir)miniunz.pdb - Console - MachineIA64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)miniunz.exe - true - Console - true - true - MachineX64 - - - - - Itanium - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)miniunz.exe - true - Console - true - true - MachineIA64 - - - - - - - - {8fd826f8-3739-44e6-8cc8-997122e53b8d} - - - - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters deleted file mode 100644 index 0bd1221..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {048af943-022b-4db6-beeb-a54c34774ee2} - cpp;c;cxx;def;odl;idl;hpj;bat;asm - - - {c1d600d2-888f-4aea-b73e-8b0dd9befa0c} - h;hpp;hxx;hm;inl;inc - - - {0844199a-966b-4f19-81db-1e0125e141b9} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - - - Source Files - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj deleted file mode 100644 index ccd3651..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj +++ /dev/null @@ -1,307 +0,0 @@ - - - - - Debug - Itanium - - - Debug - Win32 - - - Debug - x64 - - - Release - Itanium - - - Release - Win32 - - - Release - x64 - - - - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B} - Win32Proj - - - - Application - MultiByte - - - Application - MultiByte - - - Application - MultiByte - - - Application - MultiByte - - - Application - MultiByte - - - Application - MultiByte - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30128.1 - x86\MiniZip$(Configuration)\ - x86\MiniZip$(Configuration)\Tmp\ - true - false - x86\MiniZip$(Configuration)\ - x86\MiniZip$(Configuration)\Tmp\ - false - x64\$(Configuration)\ - x64\$(Configuration)\ - true - false - ia64\$(Configuration)\ - ia64\$(Configuration)\ - true - false - x64\$(Configuration)\ - x64\$(Configuration)\ - false - ia64\$(Configuration)\ - ia64\$(Configuration)\ - false - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebug - false - - - $(IntDir) - Level3 - EditAndContinue - - - x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)minizip.exe - true - $(OutDir)minizip.pdb - Console - false - - - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - Default - MultiThreaded - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)minizip.exe - true - Console - true - true - false - - - MachineX86 - - - - - X64 - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - $(IntDir) - Level3 - ProgramDatabase - - - x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)minizip.exe - true - $(OutDir)minizip.pdb - Console - MachineX64 - - - - - Itanium - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - $(IntDir) - Level3 - ProgramDatabase - - - ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)minizip.exe - true - $(OutDir)minizip.pdb - Console - MachineIA64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)minizip.exe - true - Console - true - true - MachineX64 - - - - - Itanium - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)minizip.exe - true - Console - true - true - MachineIA64 - - - - - - - - {8fd826f8-3739-44e6-8cc8-997122e53b8d} - - - - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters deleted file mode 100644 index 7076d76..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {c0419b40-bf50-40da-b153-ff74215b79de} - cpp;c;cxx;def;odl;idl;hpj;bat;asm - - - {bb87b070-735b-478e-92ce-7383abb2f36c} - h;hpp;hxx;hm;inl;inc - - - {f46ab6a6-548f-43cb-ae96-681abb5bd5db} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - - - Source Files - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj deleted file mode 100644 index 476b8ea..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj +++ /dev/null @@ -1,420 +0,0 @@ - - - - - Debug - Itanium - - - Debug - Win32 - - - Debug - x64 - - - ReleaseWithoutAsm - Itanium - - - ReleaseWithoutAsm - Win32 - - - ReleaseWithoutAsm - x64 - - - Release - Itanium - - - Release - Win32 - - - Release - x64 - - - - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B} - testzlib - Win32Proj - - - - Application - MultiByte - true - - - Application - MultiByte - true - - - Application - MultiByte - - - Application - MultiByte - true - - - Application - MultiByte - true - - - Application - MultiByte - - - Application - true - - - Application - true - - - Application - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30128.1 - x86\TestZlib$(Configuration)\ - x86\TestZlib$(Configuration)\Tmp\ - true - false - x86\TestZlib$(Configuration)\ - x86\TestZlib$(Configuration)\Tmp\ - false - false - x86\TestZlib$(Configuration)\ - x86\TestZlib$(Configuration)\Tmp\ - false - false - x64\TestZlib$(Configuration)\ - x64\TestZlib$(Configuration)\Tmp\ - false - ia64\TestZlib$(Configuration)\ - ia64\TestZlib$(Configuration)\Tmp\ - true - false - x64\TestZlib$(Configuration)\ - x64\TestZlib$(Configuration)\Tmp\ - false - ia64\TestZlib$(Configuration)\ - ia64\TestZlib$(Configuration)\Tmp\ - false - false - x64\TestZlib$(Configuration)\ - x64\TestZlib$(Configuration)\Tmp\ - false - ia64\TestZlib$(Configuration)\ - ia64\TestZlib$(Configuration)\Tmp\ - false - false - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebug - false - - - AssemblyAndSourceCode - $(IntDir) - Level3 - EditAndContinue - - - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) - $(OutDir)testzlib.exe - true - $(OutDir)testzlib.pdb - Console - false - - - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;%(AdditionalIncludeDirectories) - WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - true - Default - MultiThreaded - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - $(OutDir)testzlib.exe - true - Console - true - true - false - - - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - true - Default - MultiThreaded - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) - $(OutDir)testzlib.exe - true - Console - true - true - false - - - MachineX86 - - - - - ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - Default - MultiThreadedDebugDLL - false - $(IntDir) - - - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) - - - - - Itanium - - - Disabled - ..\..\..;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - AssemblyAndSourceCode - $(IntDir) - Level3 - ProgramDatabase - - - $(OutDir)testzlib.exe - true - $(OutDir)testzlib.pdb - Console - MachineIA64 - - - - - ..\..\..;%(AdditionalIncludeDirectories) - WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - Default - MultiThreadedDLL - false - $(IntDir) - - - %(AdditionalDependencies) - - - - - Itanium - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - $(OutDir)testzlib.exe - true - Console - true - true - MachineIA64 - - - - - ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - Default - MultiThreadedDLL - false - $(IntDir) - - - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) - - - - - Itanium - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - $(OutDir)testzlib.exe - true - Console - true - true - MachineIA64 - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters deleted file mode 100644 index 3276491..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters +++ /dev/null @@ -1,58 +0,0 @@ - - - - - {c1f6a2e3-5da5-4955-8653-310d3efe05a9} - cpp;c;cxx;def;odl;idl;hpj;bat;asm - - - {c2aaffdc-2c95-4d6f-8466-4bec5890af2c} - h;hpp;hxx;hm;inl;inc - - - {c274fe07-05f2-461c-964b-f6341e4e7eb5} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj deleted file mode 100644 index 8e38876..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj +++ /dev/null @@ -1,310 +0,0 @@ - - - - - Debug - Itanium - - - Debug - Win32 - - - Debug - x64 - - - Release - Itanium - - - Release - Win32 - - - Release - x64 - - - - {C52F9E7B-498A-42BE-8DB4-85A15694366A} - Win32Proj - - - - Application - MultiByte - - - Application - MultiByte - - - Application - MultiByte - - - Application - MultiByte - - - Application - MultiByte - - - Application - MultiByte - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30128.1 - x86\TestZlibDll$(Configuration)\ - x86\TestZlibDll$(Configuration)\Tmp\ - true - false - x86\TestZlibDll$(Configuration)\ - x86\TestZlibDll$(Configuration)\Tmp\ - false - false - x64\TestZlibDll$(Configuration)\ - x64\TestZlibDll$(Configuration)\Tmp\ - true - false - ia64\TestZlibDll$(Configuration)\ - ia64\TestZlibDll$(Configuration)\Tmp\ - true - false - x64\TestZlibDll$(Configuration)\ - x64\TestZlibDll$(Configuration)\Tmp\ - false - false - ia64\TestZlibDll$(Configuration)\ - ia64\TestZlibDll$(Configuration)\Tmp\ - false - false - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebug - false - - - $(IntDir) - Level3 - EditAndContinue - - - x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)testzlibdll.exe - true - $(OutDir)testzlib.pdb - Console - false - - - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - Default - MultiThreaded - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)testzlibdll.exe - true - Console - true - true - false - - - MachineX86 - - - - - X64 - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - $(IntDir) - Level3 - ProgramDatabase - - - x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)testzlibdll.exe - true - $(OutDir)testzlib.pdb - Console - MachineX64 - - - - - Itanium - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - $(IntDir) - Level3 - ProgramDatabase - - - ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)testzlibdll.exe - true - $(OutDir)testzlib.pdb - Console - MachineIA64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)testzlibdll.exe - true - Console - true - true - MachineX64 - - - - - Itanium - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)testzlibdll.exe - true - Console - true - true - MachineIA64 - - - - - - - - {8fd826f8-3739-44e6-8cc8-997122e53b8d} - - - - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters deleted file mode 100644 index ab87f09..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {fa61a89f-93fc-4c89-b29e-36224b7592f4} - cpp;c;cxx;def;odl;idl;hpj;bat;asm - - - {d4b85da0-2ba2-4934-b57f-e2584e3848ee} - h;hpp;hxx;hm;inl;inc - - - {e573e075-00bd-4a7d-bd67-a8cc9bfc5aca} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe - - - - - Source Files - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlib.rc b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlib.rc deleted file mode 100644 index d42f191..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlib.rc +++ /dev/null @@ -1,32 +0,0 @@ -#include - -#define IDR_VERSION1 1 -IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE - FILEVERSION 1,2,8,0 - PRODUCTVERSION 1,2,8,0 - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK - FILEFLAGS 0 - FILEOS VOS_DOS_WINDOWS32 - FILETYPE VFT_DLL - FILESUBTYPE 0 // not used -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904E4" - //language ID = U.S. English, char set = Windows, Multilingual - - BEGIN - VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" - VALUE "FileVersion", "1.2.8\0" - VALUE "InternalName", "zlib\0" - VALUE "OriginalFilename", "zlibwapi.dll\0" - VALUE "ProductName", "ZLib.DLL\0" - VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" - VALUE "LegalCopyright", "(C) 1995-2013 Jean-loup Gailly & Mark Adler\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0409, 1252 - END -END diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj deleted file mode 100644 index 45389a3..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj +++ /dev/null @@ -1,473 +0,0 @@ - - - - - Debug - Itanium - - - Debug - Win32 - - - Debug - x64 - - - ReleaseWithoutAsm - Itanium - - - ReleaseWithoutAsm - Win32 - - - ReleaseWithoutAsm - x64 - - - Release - Itanium - - - Release - Win32 - - - Release - x64 - - - - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8} - - - - StaticLibrary - false - - - StaticLibrary - false - - - StaticLibrary - false - - - StaticLibrary - false - - - StaticLibrary - false - - - StaticLibrary - false - - - StaticLibrary - false - - - StaticLibrary - false - - - StaticLibrary - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30128.1 - x86\ZlibStat$(Configuration)\ - x86\ZlibStat$(Configuration)\Tmp\ - x86\ZlibStat$(Configuration)\ - x86\ZlibStat$(Configuration)\Tmp\ - x86\ZlibStat$(Configuration)\ - x86\ZlibStat$(Configuration)\Tmp\ - x64\ZlibStat$(Configuration)\ - x64\ZlibStat$(Configuration)\Tmp\ - ia64\ZlibStat$(Configuration)\ - ia64\ZlibStat$(Configuration)\Tmp\ - x64\ZlibStat$(Configuration)\ - x64\ZlibStat$(Configuration)\Tmp\ - ia64\ZlibStat$(Configuration)\ - ia64\ZlibStat$(Configuration)\Tmp\ - x64\ZlibStat$(Configuration)\ - x64\ZlibStat$(Configuration)\Tmp\ - ia64\ZlibStat$(Configuration)\ - ia64\ZlibStat$(Configuration)\Tmp\ - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - - - MultiThreadedDebug - false - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - OldStyle - - - 0x040c - - - /MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions) - $(OutDir)zlibstat.lib - true - - - cd ..\..\masmx86 -bld_ml32.bat - - - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;%(PreprocessorDefinitions) - true - - - MultiThreaded - false - true - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - - - 0x040c - - - /MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) - $(OutDir)zlibstat.lib - true - - - cd ..\..\masmx86 -bld_ml32.bat - - - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - true - - - MultiThreaded - false - true - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - - - 0x040c - - - /MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions) - $(OutDir)zlibstat.lib - true - - - - - X64 - - - Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) - - - MultiThreadedDebugDLL - false - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - OldStyle - - - 0x040c - - - /MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions) - $(OutDir)zlibstat.lib - true - - - cd ..\..\masmx64 -bld_ml64.bat - - - - - Itanium - - - Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) - - - MultiThreadedDebugDLL - false - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - OldStyle - - - 0x040c - - - /MACHINE:IA64 /NODEFAULTLIB %(AdditionalOptions) - $(OutDir)zlibstat.lib - true - - - - - X64 - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - - - 0x040c - - - /MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions) - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) - $(OutDir)zlibstat.lib - true - - - cd ..\..\masmx64 -bld_ml64.bat - - - - - Itanium - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - - - 0x040c - - - /MACHINE:IA64 /NODEFAULTLIB %(AdditionalOptions) - $(OutDir)zlibstat.lib - true - - - - - X64 - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - - - 0x040c - - - /MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions) - $(OutDir)zlibstat.lib - true - - - - - Itanium - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - - - 0x040c - - - /MACHINE:IA64 /NODEFAULTLIB %(AdditionalOptions) - $(OutDir)zlibstat.lib - true - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters deleted file mode 100644 index 0c8b250..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters +++ /dev/null @@ -1,77 +0,0 @@ - - - - - {174213f6-7f66-4ae8-a3a8-a1e0a1e6ffdd} - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Source Files - - - - - Source Files - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.def b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.def deleted file mode 100644 index 980fed3..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.def +++ /dev/null @@ -1,143 +0,0 @@ -LIBRARY -; zlib data compression and ZIP file I/O library - -VERSION 1.2.8 - -EXPORTS - adler32 @1 - compress @2 - crc32 @3 - deflate @4 - deflateCopy @5 - deflateEnd @6 - deflateInit2_ @7 - deflateInit_ @8 - deflateParams @9 - deflateReset @10 - deflateSetDictionary @11 - gzclose @12 - gzdopen @13 - gzerror @14 - gzflush @15 - gzopen @16 - gzread @17 - gzwrite @18 - inflate @19 - inflateEnd @20 - inflateInit2_ @21 - inflateInit_ @22 - inflateReset @23 - inflateSetDictionary @24 - inflateSync @25 - uncompress @26 - zlibVersion @27 - gzprintf @28 - gzputc @29 - gzgetc @30 - gzseek @31 - gzrewind @32 - gztell @33 - gzeof @34 - gzsetparams @35 - zError @36 - inflateSyncPoint @37 - get_crc_table @38 - compress2 @39 - gzputs @40 - gzgets @41 - inflateCopy @42 - inflateBackInit_ @43 - inflateBack @44 - inflateBackEnd @45 - compressBound @46 - deflateBound @47 - gzclearerr @48 - gzungetc @49 - zlibCompileFlags @50 - deflatePrime @51 - deflatePending @52 - - unzOpen @61 - unzClose @62 - unzGetGlobalInfo @63 - unzGetCurrentFileInfo @64 - unzGoToFirstFile @65 - unzGoToNextFile @66 - unzOpenCurrentFile @67 - unzReadCurrentFile @68 - unzOpenCurrentFile3 @69 - unztell @70 - unzeof @71 - unzCloseCurrentFile @72 - unzGetGlobalComment @73 - unzStringFileNameCompare @74 - unzLocateFile @75 - unzGetLocalExtrafield @76 - unzOpen2 @77 - unzOpenCurrentFile2 @78 - unzOpenCurrentFilePassword @79 - - zipOpen @80 - zipOpenNewFileInZip @81 - zipWriteInFileInZip @82 - zipCloseFileInZip @83 - zipClose @84 - zipOpenNewFileInZip2 @86 - zipCloseFileInZipRaw @87 - zipOpen2 @88 - zipOpenNewFileInZip3 @89 - - unzGetFilePos @100 - unzGoToFilePos @101 - - fill_win32_filefunc @110 - -; zlibwapi v1.2.4 added: - fill_win32_filefunc64 @111 - fill_win32_filefunc64A @112 - fill_win32_filefunc64W @113 - - unzOpen64 @120 - unzOpen2_64 @121 - unzGetGlobalInfo64 @122 - unzGetCurrentFileInfo64 @124 - unzGetCurrentFileZStreamPos64 @125 - unztell64 @126 - unzGetFilePos64 @127 - unzGoToFilePos64 @128 - - zipOpen64 @130 - zipOpen2_64 @131 - zipOpenNewFileInZip64 @132 - zipOpenNewFileInZip2_64 @133 - zipOpenNewFileInZip3_64 @134 - zipOpenNewFileInZip4_64 @135 - zipCloseFileInZipRaw64 @136 - -; zlib1 v1.2.4 added: - adler32_combine @140 - crc32_combine @142 - deflateSetHeader @144 - deflateTune @145 - gzbuffer @146 - gzclose_r @147 - gzclose_w @148 - gzdirect @149 - gzoffset @150 - inflateGetHeader @156 - inflateMark @157 - inflatePrime @158 - inflateReset2 @159 - inflateUndermine @160 - -; zlib1 v1.2.6 added: - gzgetc_ @161 - inflateResetKeep @163 - deflateResetKeep @164 - -; zlib1 v1.2.7 added: - gzopen_w @165 - -; zlib1 v1.2.8 added: - inflateGetDictionary @166 - gzvprintf @167 diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.sln b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.sln deleted file mode 100644 index 649f40c..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.sln +++ /dev/null @@ -1,135 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibvc", "zlibvc.vcxproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibstat", "zlibstat.vcxproj", "{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlib", "testzlib.vcxproj", "{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlibdll", "testzlibdll.vcxproj", "{C52F9E7B-498A-42BE-8DB4-85A15694366A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip.vcxproj", "{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniunz", "miniunz.vcxproj", "{C52F9E7B-498A-42BE-8DB4-85A15694382A}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Itanium = Debug|Itanium - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|Itanium = Release|Itanium - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - ReleaseWithoutAsm|Itanium = ReleaseWithoutAsm|Itanium - ReleaseWithoutAsm|Win32 = ReleaseWithoutAsm|Win32 - ReleaseWithoutAsm|x64 = ReleaseWithoutAsm|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Itanium.ActiveCfg = Debug|Itanium - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Itanium.Build.0 = Debug|Itanium - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.ActiveCfg = Debug|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.Build.0 = Debug|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.ActiveCfg = Debug|x64 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.Build.0 = Debug|x64 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.ActiveCfg = Release|Itanium - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.Build.0 = Release|Itanium - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = Release|x64 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = Release|x64 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Itanium.ActiveCfg = Debug|Itanium - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Itanium.Build.0 = Debug|Itanium - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.ActiveCfg = Debug|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.Build.0 = Debug|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.ActiveCfg = Debug|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.Build.0 = Debug|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Itanium.ActiveCfg = Release|Itanium - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Itanium.Build.0 = Release|Itanium - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.ActiveCfg = Release|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.Build.0 = Release|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.ActiveCfg = Release|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.Build.0 = Release|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Itanium - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.Build.0 = Debug|Itanium - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.ActiveCfg = Release|Itanium - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.Build.0 = Release|Itanium - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Itanium.ActiveCfg = Debug|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Itanium.Build.0 = Debug|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.ActiveCfg = Debug|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.Build.0 = Debug|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.ActiveCfg = Debug|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.Build.0 = Debug|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Itanium.ActiveCfg = Release|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Itanium.Build.0 = Release|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.ActiveCfg = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.Build.0 = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.ActiveCfg = Release|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Itanium - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.Build.0 = Debug|Itanium - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.ActiveCfg = Release|Itanium - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.Build.0 = Release|Itanium - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.ActiveCfg = Debug|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.Build.0 = Debug|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.Build.0 = Debug|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.ActiveCfg = Debug|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.Build.0 = Debug|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Itanium.ActiveCfg = Release|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Itanium.Build.0 = Release|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.ActiveCfg = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.Build.0 = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.ActiveCfg = Release|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj deleted file mode 100644 index 7d7c49a..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj +++ /dev/null @@ -1,657 +0,0 @@ - - - - - Debug - Itanium - - - Debug - Win32 - - - Debug - x64 - - - ReleaseWithoutAsm - Itanium - - - ReleaseWithoutAsm - Win32 - - - ReleaseWithoutAsm - x64 - - - Release - Itanium - - - Release - Win32 - - - Release - x64 - - - - {8FD826F8-3739-44E6-8CC8-997122E53B8D} - - - - DynamicLibrary - false - true - - - DynamicLibrary - false - true - - - DynamicLibrary - false - - - DynamicLibrary - false - true - - - DynamicLibrary - false - true - - - DynamicLibrary - false - - - DynamicLibrary - false - true - - - DynamicLibrary - false - true - - - DynamicLibrary - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30128.1 - x86\ZlibDll$(Configuration)\ - x86\ZlibDll$(Configuration)\Tmp\ - true - false - x86\ZlibDll$(Configuration)\ - x86\ZlibDll$(Configuration)\Tmp\ - false - false - x86\ZlibDll$(Configuration)\ - x86\ZlibDll$(Configuration)\Tmp\ - false - false - x64\ZlibDll$(Configuration)\ - x64\ZlibDll$(Configuration)\Tmp\ - true - false - ia64\ZlibDll$(Configuration)\ - ia64\ZlibDll$(Configuration)\Tmp\ - true - false - x64\ZlibDll$(Configuration)\ - x64\ZlibDll$(Configuration)\Tmp\ - false - false - ia64\ZlibDll$(Configuration)\ - ia64\ZlibDll$(Configuration)\Tmp\ - false - false - x64\ZlibDll$(Configuration)\ - x64\ZlibDll$(Configuration)\Tmp\ - false - false - ia64\ZlibDll$(Configuration)\ - ia64\ZlibDll$(Configuration)\Tmp\ - false - false - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - zlibwapid - zlibwapi - zlibwapi - zlibwapid - zlibwapi - zlibwapi - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - $(OutDir)zlibvc.tlb - - - Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions) - - - MultiThreadedDebug - false - $(IntDir)zlibvc.pch - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - EditAndContinue - - - _DEBUG;%(PreprocessorDefinitions) - 0x040c - - - /MACHINE:I386 %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) - true - .\zlibvc.def - true - true - Windows - false - - - - - cd ..\..\masmx86 -bld_ml32.bat - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - $(OutDir)zlibvc.tlb - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibvc.pch - All - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x040c - - - /MACHINE:I386 %(AdditionalOptions) - true - false - .\zlibvc.def - true - Windows - false - - - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - $(OutDir)zlibvc.tlb - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions) - true - - - MultiThreaded - false - true - $(IntDir)zlibvc.pch - All - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x040c - - - /MACHINE:I386 %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) - true - false - .\zlibvc.def - true - Windows - false - - - - - cd ..\..\masmx86 -bld_ml32.bat - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - X64 - $(OutDir)zlibvc.tlb - - - Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) - - - MultiThreadedDebugDLL - false - $(IntDir)zlibvc.pch - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x040c - - - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) - true - .\zlibvc.def - true - true - Windows - MachineX64 - - - cd ..\..\masmx64 -bld_ml64.bat - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Itanium - $(OutDir)zlibvc.tlb - - - Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) - - - MultiThreadedDebugDLL - false - $(IntDir)zlibvc.pch - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x040c - - - $(OutDir)zlibwapi.dll - true - .\zlibvc.def - true - $(OutDir)zlibwapi.pdb - true - $(OutDir)zlibwapi.map - Windows - $(OutDir)zlibwapi.lib - MachineIA64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 - $(OutDir)zlibvc.tlb - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibvc.pch - All - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x040c - - - true - false - .\zlibvc.def - true - Windows - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Itanium - $(OutDir)zlibvc.tlb - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibvc.pch - All - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x040c - - - $(OutDir)zlibwapi.dll - true - false - .\zlibvc.def - $(OutDir)zlibwapi.pdb - true - $(OutDir)zlibwapi.map - Windows - $(OutDir)zlibwapi.lib - MachineIA64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 - $(OutDir)zlibvc.tlb - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibvc.pch - All - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x040c - - - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) - true - false - .\zlibvc.def - true - Windows - MachineX64 - - - cd ..\..\masmx64 -bld_ml64.bat - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Itanium - $(OutDir)zlibvc.tlb - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibvc.pch - All - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x040c - - - $(OutDir)zlibwapi.dll - true - false - .\zlibvc.def - $(OutDir)zlibwapi.pdb - true - $(OutDir)zlibwapi.map - Windows - $(OutDir)zlibwapi.lib - MachineIA64 - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - %(AdditionalIncludeDirectories) - ZLIB_INTERNAL;%(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - ZLIB_INTERNAL;%(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - ZLIB_INTERNAL;%(PreprocessorDefinitions) - - - %(AdditionalIncludeDirectories) - ZLIB_INTERNAL;%(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - ZLIB_INTERNAL;%(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - ZLIB_INTERNAL;%(PreprocessorDefinitions) - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters deleted file mode 100644 index 2278682..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters +++ /dev/null @@ -1,118 +0,0 @@ - - - - - {07934a85-8b61-443d-a0ee-b2eedb74f3cd} - cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90 - - - {1d99675b-433d-4a21-9e50-ed4ab8b19762} - h;hpp;hxx;hm;inl;fi;fd - - - {431c0958-fa71-44d0-9084-2d19d100c0cc} - ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Source Files - - - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/miniunz.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/miniunz.vcxproj deleted file mode 100644 index 99be63d..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/miniunz.vcxproj +++ /dev/null @@ -1,314 +0,0 @@ - - - - - Debug - Itanium - - - Debug - Win32 - - - Debug - x64 - - - Release - Itanium - - - Release - Win32 - - - Release - x64 - - - - {C52F9E7B-498A-42BE-8DB4-85A15694382A} - Win32Proj - - - - Application - MultiByte - v110 - - - Application - Unicode - v110 - - - Application - MultiByte - - - Application - MultiByte - - - Application - MultiByte - v110 - - - Application - MultiByte - v110 - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30128.1 - x86\MiniUnzip$(Configuration)\ - x86\MiniUnzip$(Configuration)\Tmp\ - true - false - x86\MiniUnzip$(Configuration)\ - x86\MiniUnzip$(Configuration)\Tmp\ - false - false - x64\MiniUnzip$(Configuration)\ - x64\MiniUnzip$(Configuration)\Tmp\ - true - false - ia64\MiniUnzip$(Configuration)\ - ia64\MiniUnzip$(Configuration)\Tmp\ - true - false - x64\MiniUnzip$(Configuration)\ - x64\MiniUnzip$(Configuration)\Tmp\ - false - false - ia64\MiniUnzip$(Configuration)\ - ia64\MiniUnzip$(Configuration)\Tmp\ - false - false - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - $(IntDir) - Level3 - ProgramDatabase - - - x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)miniunz.exe - true - $(OutDir)miniunz.pdb - Console - false - - - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - Default - MultiThreaded - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)miniunz.exe - true - Console - true - true - false - - - MachineX86 - - - - - X64 - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - $(IntDir) - Level3 - ProgramDatabase - - - x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)miniunz.exe - true - $(OutDir)miniunz.pdb - Console - MachineX64 - - - - - Itanium - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - $(IntDir) - Level3 - ProgramDatabase - - - ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)miniunz.exe - true - $(OutDir)miniunz.pdb - Console - MachineIA64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)miniunz.exe - true - Console - true - true - MachineX64 - - - - - Itanium - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)miniunz.exe - true - Console - true - true - MachineIA64 - - - - - - - - {8fd826f8-3739-44e6-8cc8-997122e53b8d} - - - - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/minizip.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/minizip.vcxproj deleted file mode 100644 index d6e98f4..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/minizip.vcxproj +++ /dev/null @@ -1,311 +0,0 @@ - - - - - Debug - Itanium - - - Debug - Win32 - - - Debug - x64 - - - Release - Itanium - - - Release - Win32 - - - Release - x64 - - - - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B} - Win32Proj - - - - Application - MultiByte - v110 - - - Application - Unicode - v110 - - - Application - MultiByte - - - Application - MultiByte - - - Application - MultiByte - v110 - - - Application - MultiByte - v110 - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30128.1 - x86\MiniZip$(Configuration)\ - x86\MiniZip$(Configuration)\Tmp\ - true - false - x86\MiniZip$(Configuration)\ - x86\MiniZip$(Configuration)\Tmp\ - false - x64\$(Configuration)\ - x64\$(Configuration)\ - true - false - ia64\$(Configuration)\ - ia64\$(Configuration)\ - true - false - x64\$(Configuration)\ - x64\$(Configuration)\ - false - ia64\$(Configuration)\ - ia64\$(Configuration)\ - false - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - $(IntDir) - Level3 - ProgramDatabase - - - x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)minizip.exe - true - $(OutDir)minizip.pdb - Console - false - - - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - Default - MultiThreaded - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)minizip.exe - true - Console - true - true - false - - - MachineX86 - - - - - X64 - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - $(IntDir) - Level3 - ProgramDatabase - - - x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)minizip.exe - true - $(OutDir)minizip.pdb - Console - MachineX64 - - - - - Itanium - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - $(IntDir) - Level3 - ProgramDatabase - - - ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)minizip.exe - true - $(OutDir)minizip.pdb - Console - MachineIA64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)minizip.exe - true - Console - true - true - MachineX64 - - - - - Itanium - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)minizip.exe - true - Console - true - true - MachineIA64 - - - - - - - - {8fd826f8-3739-44e6-8cc8-997122e53b8d} - - - - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/testzlib.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/testzlib.vcxproj deleted file mode 100644 index 0115dd1..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/testzlib.vcxproj +++ /dev/null @@ -1,426 +0,0 @@ - - - - - Debug - Itanium - - - Debug - Win32 - - - Debug - x64 - - - ReleaseWithoutAsm - Itanium - - - ReleaseWithoutAsm - Win32 - - - ReleaseWithoutAsm - x64 - - - Release - Itanium - - - Release - Win32 - - - Release - x64 - - - - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B} - testzlib - Win32Proj - - - - Application - MultiByte - true - v110 - - - Application - MultiByte - true - v110 - - - Application - Unicode - v110 - - - Application - MultiByte - true - - - Application - MultiByte - true - - - Application - MultiByte - - - Application - true - v110 - - - Application - true - v110 - - - Application - v110 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30128.1 - x86\TestZlib$(Configuration)\ - x86\TestZlib$(Configuration)\Tmp\ - true - false - x86\TestZlib$(Configuration)\ - x86\TestZlib$(Configuration)\Tmp\ - false - false - x86\TestZlib$(Configuration)\ - x86\TestZlib$(Configuration)\Tmp\ - false - false - x64\TestZlib$(Configuration)\ - x64\TestZlib$(Configuration)\Tmp\ - false - ia64\TestZlib$(Configuration)\ - ia64\TestZlib$(Configuration)\Tmp\ - true - false - x64\TestZlib$(Configuration)\ - x64\TestZlib$(Configuration)\Tmp\ - false - ia64\TestZlib$(Configuration)\ - ia64\TestZlib$(Configuration)\Tmp\ - false - false - x64\TestZlib$(Configuration)\ - x64\TestZlib$(Configuration)\Tmp\ - false - ia64\TestZlib$(Configuration)\ - ia64\TestZlib$(Configuration)\Tmp\ - false - false - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - AssemblyAndSourceCode - $(IntDir) - Level3 - ProgramDatabase - - - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) - $(OutDir)testzlib.exe - true - $(OutDir)testzlib.pdb - Console - false - - - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;%(AdditionalIncludeDirectories) - WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - true - Default - MultiThreaded - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - $(OutDir)testzlib.exe - true - Console - true - true - false - - - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - true - Default - MultiThreaded - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) - $(OutDir)testzlib.exe - true - Console - true - true - false - - - MachineX86 - - - - - ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - Default - MultiThreadedDebugDLL - false - $(IntDir) - - - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) - - - - - Itanium - - - Disabled - ..\..\..;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - AssemblyAndSourceCode - $(IntDir) - Level3 - ProgramDatabase - - - $(OutDir)testzlib.exe - true - $(OutDir)testzlib.pdb - Console - MachineIA64 - - - - - ..\..\..;%(AdditionalIncludeDirectories) - WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - Default - MultiThreadedDLL - false - $(IntDir) - - - %(AdditionalDependencies) - - - - - Itanium - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - $(OutDir)testzlib.exe - true - Console - true - true - MachineIA64 - - - - - ..\..\..;%(AdditionalIncludeDirectories) - ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - Default - MultiThreadedDLL - false - $(IntDir) - - - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) - - - - - Itanium - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - $(OutDir)testzlib.exe - true - Console - true - true - MachineIA64 - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj deleted file mode 100644 index 9d36336..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj +++ /dev/null @@ -1,314 +0,0 @@ - - - - - Debug - Itanium - - - Debug - Win32 - - - Debug - x64 - - - Release - Itanium - - - Release - Win32 - - - Release - x64 - - - - {C52F9E7B-498A-42BE-8DB4-85A15694366A} - Win32Proj - - - - Application - MultiByte - v110 - - - Application - Unicode - v110 - - - Application - MultiByte - - - Application - MultiByte - - - Application - MultiByte - v110 - - - Application - MultiByte - v110 - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30128.1 - x86\TestZlibDll$(Configuration)\ - x86\TestZlibDll$(Configuration)\Tmp\ - true - false - x86\TestZlibDll$(Configuration)\ - x86\TestZlibDll$(Configuration)\Tmp\ - false - false - x64\TestZlibDll$(Configuration)\ - x64\TestZlibDll$(Configuration)\Tmp\ - true - false - ia64\TestZlibDll$(Configuration)\ - ia64\TestZlibDll$(Configuration)\Tmp\ - true - false - x64\TestZlibDll$(Configuration)\ - x64\TestZlibDll$(Configuration)\Tmp\ - false - false - ia64\TestZlibDll$(Configuration)\ - ia64\TestZlibDll$(Configuration)\Tmp\ - false - false - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - $(IntDir) - Level3 - ProgramDatabase - - - x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)testzlibdll.exe - true - $(OutDir)testzlib.pdb - Console - false - - - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - Default - MultiThreaded - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)testzlibdll.exe - true - Console - true - true - false - - - MachineX86 - - - - - X64 - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - $(IntDir) - Level3 - ProgramDatabase - - - x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)testzlibdll.exe - true - $(OutDir)testzlib.pdb - Console - MachineX64 - - - - - Itanium - - - Disabled - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDebugDLL - false - - - $(IntDir) - Level3 - ProgramDatabase - - - ia64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)testzlibdll.exe - true - $(OutDir)testzlib.pdb - Console - MachineIA64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)testzlibdll.exe - true - Console - true - true - MachineX64 - - - - - Itanium - - - MaxSpeed - OnlyExplicitInline - true - ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) - true - Default - MultiThreadedDLL - false - true - - - $(IntDir) - Level3 - ProgramDatabase - - - ia64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) - $(OutDir)testzlibdll.exe - true - Console - true - true - MachineIA64 - - - - - - - - {8fd826f8-3739-44e6-8cc8-997122e53b8d} - - - - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlib.rc b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlib.rc deleted file mode 100644 index d42f191..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlib.rc +++ /dev/null @@ -1,32 +0,0 @@ -#include - -#define IDR_VERSION1 1 -IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE - FILEVERSION 1,2,8,0 - PRODUCTVERSION 1,2,8,0 - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK - FILEFLAGS 0 - FILEOS VOS_DOS_WINDOWS32 - FILETYPE VFT_DLL - FILESUBTYPE 0 // not used -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904E4" - //language ID = U.S. English, char set = Windows, Multilingual - - BEGIN - VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" - VALUE "FileVersion", "1.2.8\0" - VALUE "InternalName", "zlib\0" - VALUE "OriginalFilename", "zlibwapi.dll\0" - VALUE "ProductName", "ZLib.DLL\0" - VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" - VALUE "LegalCopyright", "(C) 1995-2013 Jean-loup Gailly & Mark Adler\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0409, 1252 - END -END diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibstat.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibstat.vcxproj deleted file mode 100644 index 64b4d86..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibstat.vcxproj +++ /dev/null @@ -1,464 +0,0 @@ - - - - - Debug - Itanium - - - Debug - Win32 - - - Debug - x64 - - - ReleaseWithoutAsm - Itanium - - - ReleaseWithoutAsm - Win32 - - - ReleaseWithoutAsm - x64 - - - Release - Itanium - - - Release - Win32 - - - Release - x64 - - - - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8} - - - - StaticLibrary - false - v110 - - - StaticLibrary - false - v110 - - - StaticLibrary - false - v110 - Unicode - - - StaticLibrary - false - - - StaticLibrary - false - - - StaticLibrary - false - - - StaticLibrary - false - v110 - - - StaticLibrary - false - v110 - - - StaticLibrary - false - v110 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30128.1 - x86\ZlibStat$(Configuration)\ - x86\ZlibStat$(Configuration)\Tmp\ - x86\ZlibStat$(Configuration)\ - x86\ZlibStat$(Configuration)\Tmp\ - x86\ZlibStat$(Configuration)\ - x86\ZlibStat$(Configuration)\Tmp\ - x64\ZlibStat$(Configuration)\ - x64\ZlibStat$(Configuration)\Tmp\ - ia64\ZlibStat$(Configuration)\ - ia64\ZlibStat$(Configuration)\Tmp\ - x64\ZlibStat$(Configuration)\ - x64\ZlibStat$(Configuration)\Tmp\ - ia64\ZlibStat$(Configuration)\ - ia64\ZlibStat$(Configuration)\Tmp\ - x64\ZlibStat$(Configuration)\ - x64\ZlibStat$(Configuration)\Tmp\ - ia64\ZlibStat$(Configuration)\ - ia64\ZlibStat$(Configuration)\Tmp\ - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - - - MultiThreadedDebugDLL - false - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - OldStyle - - - 0x040c - - - /MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions) - $(OutDir)zlibstat.lib - true - - - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;%(PreprocessorDefinitions) - true - - - MultiThreaded - false - true - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - - - 0x040c - - - /MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) - $(OutDir)zlibstat.lib - true - - - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) - true - - - MultiThreaded - false - true - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - - - 0x040c - - - /MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions) - $(OutDir)zlibstat.lib - true - - - - - X64 - - - Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) - - - MultiThreadedDebugDLL - false - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - OldStyle - - - 0x040c - - - /MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions) - $(OutDir)zlibstat.lib - true - - - - - Itanium - - - Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) - - - MultiThreadedDebugDLL - false - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - OldStyle - - - 0x040c - - - /MACHINE:IA64 /NODEFAULTLIB %(AdditionalOptions) - $(OutDir)zlibstat.lib - true - - - - - X64 - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - - - 0x040c - - - /MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions) - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) - $(OutDir)zlibstat.lib - true - - - - - Itanium - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - - - 0x040c - - - /MACHINE:IA64 /NODEFAULTLIB %(AdditionalOptions) - $(OutDir)zlibstat.lib - true - - - - - X64 - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - - - 0x040c - - - /MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions) - $(OutDir)zlibstat.lib - true - - - - - Itanium - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibstat.pch - $(IntDir) - $(IntDir) - $(OutDir) - Level3 - true - - - 0x040c - - - /MACHINE:IA64 /NODEFAULTLIB %(AdditionalOptions) - $(OutDir)zlibstat.lib - true - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.def b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.def deleted file mode 100644 index 980fed3..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.def +++ /dev/null @@ -1,143 +0,0 @@ -LIBRARY -; zlib data compression and ZIP file I/O library - -VERSION 1.2.8 - -EXPORTS - adler32 @1 - compress @2 - crc32 @3 - deflate @4 - deflateCopy @5 - deflateEnd @6 - deflateInit2_ @7 - deflateInit_ @8 - deflateParams @9 - deflateReset @10 - deflateSetDictionary @11 - gzclose @12 - gzdopen @13 - gzerror @14 - gzflush @15 - gzopen @16 - gzread @17 - gzwrite @18 - inflate @19 - inflateEnd @20 - inflateInit2_ @21 - inflateInit_ @22 - inflateReset @23 - inflateSetDictionary @24 - inflateSync @25 - uncompress @26 - zlibVersion @27 - gzprintf @28 - gzputc @29 - gzgetc @30 - gzseek @31 - gzrewind @32 - gztell @33 - gzeof @34 - gzsetparams @35 - zError @36 - inflateSyncPoint @37 - get_crc_table @38 - compress2 @39 - gzputs @40 - gzgets @41 - inflateCopy @42 - inflateBackInit_ @43 - inflateBack @44 - inflateBackEnd @45 - compressBound @46 - deflateBound @47 - gzclearerr @48 - gzungetc @49 - zlibCompileFlags @50 - deflatePrime @51 - deflatePending @52 - - unzOpen @61 - unzClose @62 - unzGetGlobalInfo @63 - unzGetCurrentFileInfo @64 - unzGoToFirstFile @65 - unzGoToNextFile @66 - unzOpenCurrentFile @67 - unzReadCurrentFile @68 - unzOpenCurrentFile3 @69 - unztell @70 - unzeof @71 - unzCloseCurrentFile @72 - unzGetGlobalComment @73 - unzStringFileNameCompare @74 - unzLocateFile @75 - unzGetLocalExtrafield @76 - unzOpen2 @77 - unzOpenCurrentFile2 @78 - unzOpenCurrentFilePassword @79 - - zipOpen @80 - zipOpenNewFileInZip @81 - zipWriteInFileInZip @82 - zipCloseFileInZip @83 - zipClose @84 - zipOpenNewFileInZip2 @86 - zipCloseFileInZipRaw @87 - zipOpen2 @88 - zipOpenNewFileInZip3 @89 - - unzGetFilePos @100 - unzGoToFilePos @101 - - fill_win32_filefunc @110 - -; zlibwapi v1.2.4 added: - fill_win32_filefunc64 @111 - fill_win32_filefunc64A @112 - fill_win32_filefunc64W @113 - - unzOpen64 @120 - unzOpen2_64 @121 - unzGetGlobalInfo64 @122 - unzGetCurrentFileInfo64 @124 - unzGetCurrentFileZStreamPos64 @125 - unztell64 @126 - unzGetFilePos64 @127 - unzGoToFilePos64 @128 - - zipOpen64 @130 - zipOpen2_64 @131 - zipOpenNewFileInZip64 @132 - zipOpenNewFileInZip2_64 @133 - zipOpenNewFileInZip3_64 @134 - zipOpenNewFileInZip4_64 @135 - zipCloseFileInZipRaw64 @136 - -; zlib1 v1.2.4 added: - adler32_combine @140 - crc32_combine @142 - deflateSetHeader @144 - deflateTune @145 - gzbuffer @146 - gzclose_r @147 - gzclose_w @148 - gzdirect @149 - gzoffset @150 - inflateGetHeader @156 - inflateMark @157 - inflatePrime @158 - inflateReset2 @159 - inflateUndermine @160 - -; zlib1 v1.2.6 added: - gzgetc_ @161 - inflateResetKeep @163 - deflateResetKeep @164 - -; zlib1 v1.2.7 added: - gzopen_w @165 - -; zlib1 v1.2.8 added: - inflateGetDictionary @166 - gzvprintf @167 diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.sln b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.sln deleted file mode 100644 index b7e3812..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.sln +++ /dev/null @@ -1,117 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibvc", "zlibvc.vcxproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibstat", "zlibstat.vcxproj", "{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlib", "testzlib.vcxproj", "{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlibdll", "testzlibdll.vcxproj", "{C52F9E7B-498A-42BE-8DB4-85A15694366A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip.vcxproj", "{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniunz", "miniunz.vcxproj", "{C52F9E7B-498A-42BE-8DB4-85A15694382A}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Itanium = Debug|Itanium - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|Itanium = Release|Itanium - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - ReleaseWithoutAsm|Itanium = ReleaseWithoutAsm|Itanium - ReleaseWithoutAsm|Win32 = ReleaseWithoutAsm|Win32 - ReleaseWithoutAsm|x64 = ReleaseWithoutAsm|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Itanium.ActiveCfg = Debug|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.ActiveCfg = Debug|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.Build.0 = Debug|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.ActiveCfg = Debug|x64 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.Build.0 = Debug|x64 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.ActiveCfg = Release|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = Release|x64 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = Release|x64 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Itanium.ActiveCfg = Debug|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.ActiveCfg = Debug|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.Build.0 = Debug|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.ActiveCfg = Debug|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.Build.0 = Debug|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Itanium.ActiveCfg = Release|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.ActiveCfg = Release|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.Build.0 = Release|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.ActiveCfg = Release|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.Build.0 = Release|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.ActiveCfg = Release|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Itanium.ActiveCfg = Debug|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.ActiveCfg = Debug|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.Build.0 = Debug|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.ActiveCfg = Debug|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.Build.0 = Debug|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Itanium.ActiveCfg = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.ActiveCfg = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.Build.0 = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.ActiveCfg = Release|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.ActiveCfg = Release|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.ActiveCfg = Debug|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.Build.0 = Debug|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.ActiveCfg = Debug|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.Build.0 = Debug|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Itanium.ActiveCfg = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.ActiveCfg = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.Build.0 = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.ActiveCfg = Release|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.vcxproj deleted file mode 100644 index c4cffcc..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.vcxproj +++ /dev/null @@ -1,688 +0,0 @@ - - - - - Debug - Itanium - - - Debug - Win32 - - - Debug - x64 - - - ReleaseWithoutAsm - Itanium - - - ReleaseWithoutAsm - Win32 - - - ReleaseWithoutAsm - x64 - - - Release - Itanium - - - Release - Win32 - - - Release - x64 - - - - {8FD826F8-3739-44E6-8CC8-997122E53B8D} - - - - DynamicLibrary - false - true - v110 - - - DynamicLibrary - false - true - v110 - - - DynamicLibrary - false - v110 - Unicode - - - DynamicLibrary - false - true - - - DynamicLibrary - false - true - - - DynamicLibrary - false - - - DynamicLibrary - false - true - v110 - - - DynamicLibrary - false - true - v110 - - - DynamicLibrary - false - v110 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30128.1 - x86\ZlibDll$(Configuration)\ - x86\ZlibDll$(Configuration)\Tmp\ - true - false - x86\ZlibDll$(Configuration)\ - x86\ZlibDll$(Configuration)\Tmp\ - false - false - x86\ZlibDll$(Configuration)\ - x86\ZlibDll$(Configuration)\Tmp\ - false - false - x64\ZlibDll$(Configuration)\ - x64\ZlibDll$(Configuration)\Tmp\ - true - false - ia64\ZlibDll$(Configuration)\ - ia64\ZlibDll$(Configuration)\Tmp\ - true - false - x64\ZlibDll$(Configuration)\ - x64\ZlibDll$(Configuration)\Tmp\ - false - false - ia64\ZlibDll$(Configuration)\ - ia64\ZlibDll$(Configuration)\Tmp\ - false - false - x64\ZlibDll$(Configuration)\ - x64\ZlibDll$(Configuration)\Tmp\ - false - false - ia64\ZlibDll$(Configuration)\ - ia64\ZlibDll$(Configuration)\Tmp\ - false - false - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - zlibwapi - zlibwapi - zlibwapi - zlibwapi - zlibwapi - zlibwapi - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - $(OutDir)zlibvc.tlb - - - Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions) - - - MultiThreadedDebugDLL - false - $(IntDir)zlibvc.pch - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x040c - - - /MACHINE:I386 %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) - $(OutDir)zlibwapi.dll - true - .\zlibvc.def - true - $(OutDir)zlibwapi.pdb - true - $(OutDir)zlibwapi.map - Windows - false - - - $(OutDir)zlibwapi.lib - - - cd ..\..\masmx86 -bld_ml32.bat - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - $(OutDir)zlibvc.tlb - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibvc.pch - All - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x040c - - - /MACHINE:I386 %(AdditionalOptions) - $(OutDir)zlibwapi.dll - true - false - .\zlibvc.def - $(OutDir)zlibwapi.pdb - true - $(OutDir)zlibwapi.map - Windows - false - - - $(OutDir)zlibwapi.lib - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - $(OutDir)zlibvc.tlb - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions) - true - - - MultiThreaded - false - true - $(IntDir)zlibvc.pch - All - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x040c - - - /MACHINE:I386 %(AdditionalOptions) - ..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies) - $(OutDir)zlibwapi.dll - true - false - .\zlibvc.def - $(OutDir)zlibwapi.pdb - true - $(OutDir)zlibwapi.map - Windows - false - - - $(OutDir)zlibwapi.lib - - - cd ..\..\masmx86 -bld_ml32.bat - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - X64 - $(OutDir)zlibvc.tlb - - - Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) - - - MultiThreadedDebugDLL - false - $(IntDir)zlibvc.pch - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x040c - - - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) - $(OutDir)zlibwapi.dll - true - .\zlibvc.def - true - $(OutDir)zlibwapi.pdb - true - $(OutDir)zlibwapi.map - Windows - $(OutDir)zlibwapi.lib - MachineX64 - - - cd ..\..\contrib\masmx64 -bld_ml64.bat - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Itanium - $(OutDir)zlibvc.tlb - - - Disabled - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) - - - MultiThreadedDebugDLL - false - $(IntDir)zlibvc.pch - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x040c - - - $(OutDir)zlibwapi.dll - true - .\zlibvc.def - true - $(OutDir)zlibwapi.pdb - true - $(OutDir)zlibwapi.map - Windows - $(OutDir)zlibwapi.lib - MachineIA64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 - $(OutDir)zlibvc.tlb - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibvc.pch - All - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x040c - - - $(OutDir)zlibwapi.dll - true - false - .\zlibvc.def - $(OutDir)zlibwapi.pdb - true - $(OutDir)zlibwapi.map - Windows - $(OutDir)zlibwapi.lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Itanium - $(OutDir)zlibvc.tlb - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibvc.pch - All - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x040c - - - $(OutDir)zlibwapi.dll - true - false - .\zlibvc.def - $(OutDir)zlibwapi.pdb - true - $(OutDir)zlibwapi.map - Windows - $(OutDir)zlibwapi.lib - MachineIA64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 - $(OutDir)zlibvc.tlb - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibvc.pch - All - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x040c - - - ..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies) - $(OutDir)zlibwapi.dll - true - false - .\zlibvc.def - $(OutDir)zlibwapi.pdb - true - $(OutDir)zlibwapi.map - Windows - $(OutDir)zlibwapi.lib - MachineX64 - - - cd ..\..\masmx64 -bld_ml64.bat - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Itanium - $(OutDir)zlibvc.tlb - - - OnlyExplicitInline - ..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories) - _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - false - true - $(IntDir)zlibvc.pch - All - $(IntDir) - $(IntDir) - $(OutDir) - - - Level3 - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x040c - - - $(OutDir)zlibwapi.dll - true - false - .\zlibvc.def - $(OutDir)zlibwapi.pdb - true - $(OutDir)zlibwapi.map - Windows - $(OutDir)zlibwapi.lib - MachineIA64 - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - - - - - - %(AdditionalIncludeDirectories) - ZLIB_INTERNAL;%(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - ZLIB_INTERNAL;%(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - ZLIB_INTERNAL;%(PreprocessorDefinitions) - - - %(AdditionalIncludeDirectories) - ZLIB_INTERNAL;%(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - ZLIB_INTERNAL;%(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - ZLIB_INTERNAL;%(PreprocessorDefinitions) - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/miniunz.vcproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/miniunz.vcproj deleted file mode 100644 index 038a9e5..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/miniunz.vcproj +++ /dev/null @@ -1,565 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/minizip.vcproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/minizip.vcproj deleted file mode 100644 index ad40239..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/minizip.vcproj +++ /dev/null @@ -1,562 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/testzlib.vcproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/testzlib.vcproj deleted file mode 100644 index c9f19d2..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/testzlib.vcproj +++ /dev/null @@ -1,852 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/testzlibdll.vcproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/testzlibdll.vcproj deleted file mode 100644 index d7530fd..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/testzlibdll.vcproj +++ /dev/null @@ -1,565 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlib.rc b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlib.rc deleted file mode 100644 index d42f191..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlib.rc +++ /dev/null @@ -1,32 +0,0 @@ -#include - -#define IDR_VERSION1 1 -IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE - FILEVERSION 1,2,8,0 - PRODUCTVERSION 1,2,8,0 - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK - FILEFLAGS 0 - FILEOS VOS_DOS_WINDOWS32 - FILETYPE VFT_DLL - FILESUBTYPE 0 // not used -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904E4" - //language ID = U.S. English, char set = Windows, Multilingual - - BEGIN - VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" - VALUE "FileVersion", "1.2.8\0" - VALUE "InternalName", "zlib\0" - VALUE "OriginalFilename", "zlibwapi.dll\0" - VALUE "ProductName", "ZLib.DLL\0" - VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" - VALUE "LegalCopyright", "(C) 1995-2013 Jean-loup Gailly & Mark Adler\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0409, 1252 - END -END diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibstat.vcproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibstat.vcproj deleted file mode 100644 index d4ffb46..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibstat.vcproj +++ /dev/null @@ -1,835 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.def b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.def deleted file mode 100644 index 980fed3..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.def +++ /dev/null @@ -1,143 +0,0 @@ -LIBRARY -; zlib data compression and ZIP file I/O library - -VERSION 1.2.8 - -EXPORTS - adler32 @1 - compress @2 - crc32 @3 - deflate @4 - deflateCopy @5 - deflateEnd @6 - deflateInit2_ @7 - deflateInit_ @8 - deflateParams @9 - deflateReset @10 - deflateSetDictionary @11 - gzclose @12 - gzdopen @13 - gzerror @14 - gzflush @15 - gzopen @16 - gzread @17 - gzwrite @18 - inflate @19 - inflateEnd @20 - inflateInit2_ @21 - inflateInit_ @22 - inflateReset @23 - inflateSetDictionary @24 - inflateSync @25 - uncompress @26 - zlibVersion @27 - gzprintf @28 - gzputc @29 - gzgetc @30 - gzseek @31 - gzrewind @32 - gztell @33 - gzeof @34 - gzsetparams @35 - zError @36 - inflateSyncPoint @37 - get_crc_table @38 - compress2 @39 - gzputs @40 - gzgets @41 - inflateCopy @42 - inflateBackInit_ @43 - inflateBack @44 - inflateBackEnd @45 - compressBound @46 - deflateBound @47 - gzclearerr @48 - gzungetc @49 - zlibCompileFlags @50 - deflatePrime @51 - deflatePending @52 - - unzOpen @61 - unzClose @62 - unzGetGlobalInfo @63 - unzGetCurrentFileInfo @64 - unzGoToFirstFile @65 - unzGoToNextFile @66 - unzOpenCurrentFile @67 - unzReadCurrentFile @68 - unzOpenCurrentFile3 @69 - unztell @70 - unzeof @71 - unzCloseCurrentFile @72 - unzGetGlobalComment @73 - unzStringFileNameCompare @74 - unzLocateFile @75 - unzGetLocalExtrafield @76 - unzOpen2 @77 - unzOpenCurrentFile2 @78 - unzOpenCurrentFilePassword @79 - - zipOpen @80 - zipOpenNewFileInZip @81 - zipWriteInFileInZip @82 - zipCloseFileInZip @83 - zipClose @84 - zipOpenNewFileInZip2 @86 - zipCloseFileInZipRaw @87 - zipOpen2 @88 - zipOpenNewFileInZip3 @89 - - unzGetFilePos @100 - unzGoToFilePos @101 - - fill_win32_filefunc @110 - -; zlibwapi v1.2.4 added: - fill_win32_filefunc64 @111 - fill_win32_filefunc64A @112 - fill_win32_filefunc64W @113 - - unzOpen64 @120 - unzOpen2_64 @121 - unzGetGlobalInfo64 @122 - unzGetCurrentFileInfo64 @124 - unzGetCurrentFileZStreamPos64 @125 - unztell64 @126 - unzGetFilePos64 @127 - unzGoToFilePos64 @128 - - zipOpen64 @130 - zipOpen2_64 @131 - zipOpenNewFileInZip64 @132 - zipOpenNewFileInZip2_64 @133 - zipOpenNewFileInZip3_64 @134 - zipOpenNewFileInZip4_64 @135 - zipCloseFileInZipRaw64 @136 - -; zlib1 v1.2.4 added: - adler32_combine @140 - crc32_combine @142 - deflateSetHeader @144 - deflateTune @145 - gzbuffer @146 - gzclose_r @147 - gzclose_w @148 - gzdirect @149 - gzoffset @150 - inflateGetHeader @156 - inflateMark @157 - inflatePrime @158 - inflateReset2 @159 - inflateUndermine @160 - -; zlib1 v1.2.6 added: - gzgetc_ @161 - inflateResetKeep @163 - deflateResetKeep @164 - -; zlib1 v1.2.7 added: - gzopen_w @165 - -; zlib1 v1.2.8 added: - inflateGetDictionary @166 - gzvprintf @167 diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.sln b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.sln deleted file mode 100644 index 75c64c3..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.sln +++ /dev/null @@ -1,144 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibvc", "zlibvc.vcproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibstat", "zlibstat.vcproj", "{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlib", "testzlib.vcproj", "{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestZlibDll", "testzlibdll.vcproj", "{C52F9E7B-498A-42BE-8DB4-85A15694366A}" - ProjectSection(ProjectDependencies) = postProject - {8FD826F8-3739-44E6-8CC8-997122E53B8D} = {8FD826F8-3739-44E6-8CC8-997122E53B8D} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip.vcproj", "{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}" - ProjectSection(ProjectDependencies) = postProject - {8FD826F8-3739-44E6-8CC8-997122E53B8D} = {8FD826F8-3739-44E6-8CC8-997122E53B8D} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniunz", "miniunz.vcproj", "{C52F9E7B-498A-42BE-8DB4-85A15694382A}" - ProjectSection(ProjectDependencies) = postProject - {8FD826F8-3739-44E6-8CC8-997122E53B8D} = {8FD826F8-3739-44E6-8CC8-997122E53B8D} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Itanium = Debug|Itanium - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|Itanium = Release|Itanium - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - ReleaseWithoutAsm|Itanium = ReleaseWithoutAsm|Itanium - ReleaseWithoutAsm|Win32 = ReleaseWithoutAsm|Win32 - ReleaseWithoutAsm|x64 = ReleaseWithoutAsm|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Itanium.ActiveCfg = Debug|Itanium - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Itanium.Build.0 = Debug|Itanium - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.ActiveCfg = Debug|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.Build.0 = Debug|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.ActiveCfg = Debug|x64 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.Build.0 = Debug|x64 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.ActiveCfg = Release|Itanium - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.Build.0 = Release|Itanium - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = Release|x64 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = Release|x64 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64 - {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Itanium.ActiveCfg = Debug|Itanium - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Itanium.Build.0 = Debug|Itanium - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.ActiveCfg = Debug|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.Build.0 = Debug|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.ActiveCfg = Debug|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.Build.0 = Debug|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Itanium.ActiveCfg = Release|Itanium - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Itanium.Build.0 = Release|Itanium - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.ActiveCfg = Release|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.Build.0 = Release|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.ActiveCfg = Release|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.Build.0 = Release|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64 - {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Itanium - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.Build.0 = Debug|Itanium - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.ActiveCfg = Release|Itanium - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.Build.0 = Release|Itanium - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64 - {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Itanium.ActiveCfg = Debug|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Itanium.Build.0 = Debug|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.ActiveCfg = Debug|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.Build.0 = Debug|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.ActiveCfg = Debug|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.Build.0 = Debug|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Itanium.ActiveCfg = Release|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Itanium.Build.0 = Release|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.ActiveCfg = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.Build.0 = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.ActiveCfg = Release|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Itanium - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.Build.0 = Debug|Itanium - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.ActiveCfg = Release|Itanium - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.Build.0 = Release|Itanium - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 - {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.ActiveCfg = Debug|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.Build.0 = Debug|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.Build.0 = Debug|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.ActiveCfg = Debug|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.Build.0 = Debug|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Itanium.ActiveCfg = Release|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Itanium.Build.0 = Release|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.ActiveCfg = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.Build.0 = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.ActiveCfg = Release|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 - {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.vcproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.vcproj deleted file mode 100644 index 95bb241..0000000 --- a/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.vcproj +++ /dev/null @@ -1,1156 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/io2d/src/3rd-party/zlib/crc32.c b/io2d/src/3rd-party/zlib/crc32.c deleted file mode 100644 index 979a719..0000000 --- a/io2d/src/3rd-party/zlib/crc32.c +++ /dev/null @@ -1,425 +0,0 @@ -/* crc32.c -- compute the CRC-32 of a data stream - * Copyright (C) 1995-2006, 2010, 2011, 2012 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - * - * Thanks to Rodney Brown for his contribution of faster - * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing - * tables for updating the shift register in one step with three exclusive-ors - * instead of four steps with four exclusive-ors. This results in about a - * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3. - */ - -/* @(#) $Id$ */ - -/* - Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore - protection on the static variables used to control the first-use generation - of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should - first call get_crc_table() to initialize the tables before allowing more than - one thread to use crc32(). - - DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h. - */ - -#ifdef MAKECRCH -# include -# ifndef DYNAMIC_CRC_TABLE -# define DYNAMIC_CRC_TABLE -# endif /* !DYNAMIC_CRC_TABLE */ -#endif /* MAKECRCH */ - -#include "zutil.h" /* for STDC and FAR definitions */ - -#define local static - -/* Definitions for doing the crc four data bytes at a time. */ -#if !defined(NOBYFOUR) && defined(Z_U4) -# define BYFOUR -#endif -#ifdef BYFOUR - local unsigned long crc32_little OF((unsigned long, - const unsigned char FAR *, unsigned)); - local unsigned long crc32_big OF((unsigned long, - const unsigned char FAR *, unsigned)); -# define TBLS 8 -#else -# define TBLS 1 -#endif /* BYFOUR */ - -/* Local functions for crc concatenation */ -local unsigned long gf2_matrix_times OF((unsigned long *mat, - unsigned long vec)); -local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat)); -local uLong crc32_combine_ OF((uLong crc1, uLong crc2, z_off64_t len2)); - - -#ifdef DYNAMIC_CRC_TABLE - -local volatile int crc_table_empty = 1; -local z_crc_t FAR crc_table[TBLS][256]; -local void make_crc_table OF((void)); -#ifdef MAKECRCH - local void write_table OF((FILE *, const z_crc_t FAR *)); -#endif /* MAKECRCH */ -/* - Generate tables for a byte-wise 32-bit CRC calculation on the polynomial: - x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. - - Polynomials over GF(2) are represented in binary, one bit per coefficient, - with the lowest powers in the most significant bit. Then adding polynomials - is just exclusive-or, and multiplying a polynomial by x is a right shift by - one. If we call the above polynomial p, and represent a byte as the - polynomial q, also with the lowest power in the most significant bit (so the - byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, - where a mod b means the remainder after dividing a by b. - - This calculation is done using the shift-register method of multiplying and - taking the remainder. The register is initialized to zero, and for each - incoming bit, x^32 is added mod p to the register if the bit is a one (where - x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by - x (which is shifting right by one and adding x^32 mod p if the bit shifted - out is a one). We start with the highest power (least significant bit) of - q and repeat for all eight bits of q. - - The first table is simply the CRC of all possible eight bit values. This is - all the information needed to generate CRCs on data a byte at a time for all - combinations of CRC register values and incoming bytes. The remaining tables - allow for word-at-a-time CRC calculation for both big-endian and little- - endian machines, where a word is four bytes. -*/ -local void make_crc_table() -{ - z_crc_t c; - int n, k; - z_crc_t poly; /* polynomial exclusive-or pattern */ - /* terms of polynomial defining this crc (except x^32): */ - static volatile int first = 1; /* flag to limit concurrent making */ - static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; - - /* See if another task is already doing this (not thread-safe, but better - than nothing -- significantly reduces duration of vulnerability in - case the advice about DYNAMIC_CRC_TABLE is ignored) */ - if (first) { - first = 0; - - /* make exclusive-or pattern from polynomial (0xedb88320UL) */ - poly = 0; - for (n = 0; n < (int)(sizeof(p)/sizeof(unsigned char)); n++) - poly |= (z_crc_t)1 << (31 - p[n]); - - /* generate a crc for every 8-bit value */ - for (n = 0; n < 256; n++) { - c = (z_crc_t)n; - for (k = 0; k < 8; k++) - c = c & 1 ? poly ^ (c >> 1) : c >> 1; - crc_table[0][n] = c; - } - -#ifdef BYFOUR - /* generate crc for each value followed by one, two, and three zeros, - and then the byte reversal of those as well as the first table */ - for (n = 0; n < 256; n++) { - c = crc_table[0][n]; - crc_table[4][n] = ZSWAP32(c); - for (k = 1; k < 4; k++) { - c = crc_table[0][c & 0xff] ^ (c >> 8); - crc_table[k][n] = c; - crc_table[k + 4][n] = ZSWAP32(c); - } - } -#endif /* BYFOUR */ - - crc_table_empty = 0; - } - else { /* not first */ - /* wait for the other guy to finish (not efficient, but rare) */ - while (crc_table_empty) - ; - } - -#ifdef MAKECRCH - /* write out CRC tables to crc32.h */ - { - FILE *out; - - out = fopen("crc32.h", "w"); - if (out == NULL) return; - fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n"); - fprintf(out, " * Generated automatically by crc32.c\n */\n\n"); - fprintf(out, "local const z_crc_t FAR "); - fprintf(out, "crc_table[TBLS][256] =\n{\n {\n"); - write_table(out, crc_table[0]); -# ifdef BYFOUR - fprintf(out, "#ifdef BYFOUR\n"); - for (k = 1; k < 8; k++) { - fprintf(out, " },\n {\n"); - write_table(out, crc_table[k]); - } - fprintf(out, "#endif\n"); -# endif /* BYFOUR */ - fprintf(out, " }\n};\n"); - fclose(out); - } -#endif /* MAKECRCH */ -} - -#ifdef MAKECRCH -local void write_table(out, table) - FILE *out; - const z_crc_t FAR *table; -{ - int n; - - for (n = 0; n < 256; n++) - fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ", - (unsigned long)(table[n]), - n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", ")); -} -#endif /* MAKECRCH */ - -#else /* !DYNAMIC_CRC_TABLE */ -/* ======================================================================== - * Tables of CRC-32s of all single-byte values, made by make_crc_table(). - */ -#include "crc32.h" -#endif /* DYNAMIC_CRC_TABLE */ - -/* ========================================================================= - * This function can be used by asm versions of crc32() - */ -const z_crc_t FAR * ZEXPORT get_crc_table() -{ -#ifdef DYNAMIC_CRC_TABLE - if (crc_table_empty) - make_crc_table(); -#endif /* DYNAMIC_CRC_TABLE */ - return (const z_crc_t FAR *)crc_table; -} - -/* ========================================================================= */ -#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8) -#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1 - -/* ========================================================================= */ -unsigned long ZEXPORT crc32(crc, buf, len) - unsigned long crc; - const unsigned char FAR *buf; - uInt len; -{ - if (buf == Z_NULL) return 0UL; - -#ifdef DYNAMIC_CRC_TABLE - if (crc_table_empty) - make_crc_table(); -#endif /* DYNAMIC_CRC_TABLE */ - -#ifdef BYFOUR - if (sizeof(void *) == sizeof(ptrdiff_t)) { - z_crc_t endian; - - endian = 1; - if (*((unsigned char *)(&endian))) - return crc32_little(crc, buf, len); - else - return crc32_big(crc, buf, len); - } -#endif /* BYFOUR */ - crc = crc ^ 0xffffffffUL; - while (len >= 8) { - DO8; - len -= 8; - } - if (len) do { - DO1; - } while (--len); - return crc ^ 0xffffffffUL; -} - -#ifdef BYFOUR - -/* ========================================================================= */ -#define DOLIT4 c ^= *buf4++; \ - c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \ - crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24] -#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4 - -/* ========================================================================= */ -local unsigned long crc32_little(crc, buf, len) - unsigned long crc; - const unsigned char FAR *buf; - unsigned len; -{ - register z_crc_t c; - register const z_crc_t FAR *buf4; - - c = (z_crc_t)crc; - c = ~c; - while (len && ((ptrdiff_t)buf & 3)) { - c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8); - len--; - } - - buf4 = (const z_crc_t FAR *)(const void FAR *)buf; - while (len >= 32) { - DOLIT32; - len -= 32; - } - while (len >= 4) { - DOLIT4; - len -= 4; - } - buf = (const unsigned char FAR *)buf4; - - if (len) do { - c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8); - } while (--len); - c = ~c; - return (unsigned long)c; -} - -/* ========================================================================= */ -#define DOBIG4 c ^= *++buf4; \ - c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \ - crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24] -#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4 - -/* ========================================================================= */ -local unsigned long crc32_big(crc, buf, len) - unsigned long crc; - const unsigned char FAR *buf; - unsigned len; -{ - register z_crc_t c; - register const z_crc_t FAR *buf4; - - c = ZSWAP32((z_crc_t)crc); - c = ~c; - while (len && ((ptrdiff_t)buf & 3)) { - c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); - len--; - } - - buf4 = (const z_crc_t FAR *)(const void FAR *)buf; - buf4--; - while (len >= 32) { - DOBIG32; - len -= 32; - } - while (len >= 4) { - DOBIG4; - len -= 4; - } - buf4++; - buf = (const unsigned char FAR *)buf4; - - if (len) do { - c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); - } while (--len); - c = ~c; - return (unsigned long)(ZSWAP32(c)); -} - -#endif /* BYFOUR */ - -#define GF2_DIM 32 /* dimension of GF(2) vectors (length of CRC) */ - -/* ========================================================================= */ -local unsigned long gf2_matrix_times(mat, vec) - unsigned long *mat; - unsigned long vec; -{ - unsigned long sum; - - sum = 0; - while (vec) { - if (vec & 1) - sum ^= *mat; - vec >>= 1; - mat++; - } - return sum; -} - -/* ========================================================================= */ -local void gf2_matrix_square(square, mat) - unsigned long *square; - unsigned long *mat; -{ - int n; - - for (n = 0; n < GF2_DIM; n++) - square[n] = gf2_matrix_times(mat, mat[n]); -} - -/* ========================================================================= */ -local uLong crc32_combine_(crc1, crc2, len2) - uLong crc1; - uLong crc2; - z_off64_t len2; -{ - int n; - unsigned long row; - unsigned long even[GF2_DIM]; /* even-power-of-two zeros operator */ - unsigned long odd[GF2_DIM]; /* odd-power-of-two zeros operator */ - - /* degenerate case (also disallow negative lengths) */ - if (len2 <= 0) - return crc1; - - /* put operator for one zero bit in odd */ - odd[0] = 0xedb88320UL; /* CRC-32 polynomial */ - row = 1; - for (n = 1; n < GF2_DIM; n++) { - odd[n] = row; - row <<= 1; - } - - /* put operator for two zero bits in even */ - gf2_matrix_square(even, odd); - - /* put operator for four zero bits in odd */ - gf2_matrix_square(odd, even); - - /* apply len2 zeros to crc1 (first square will put the operator for one - zero byte, eight zero bits, in even) */ - do { - /* apply zeros operator for this bit of len2 */ - gf2_matrix_square(even, odd); - if (len2 & 1) - crc1 = gf2_matrix_times(even, crc1); - len2 >>= 1; - - /* if no more bits set, then done */ - if (len2 == 0) - break; - - /* another iteration of the loop with odd and even swapped */ - gf2_matrix_square(odd, even); - if (len2 & 1) - crc1 = gf2_matrix_times(odd, crc1); - len2 >>= 1; - - /* if no more bits set, then done */ - } while (len2 != 0); - - /* return combined crc */ - crc1 ^= crc2; - return crc1; -} - -/* ========================================================================= */ -uLong ZEXPORT crc32_combine(crc1, crc2, len2) - uLong crc1; - uLong crc2; - z_off_t len2; -{ - return crc32_combine_(crc1, crc2, len2); -} - -uLong ZEXPORT crc32_combine64(crc1, crc2, len2) - uLong crc1; - uLong crc2; - z_off64_t len2; -{ - return crc32_combine_(crc1, crc2, len2); -} diff --git a/io2d/src/3rd-party/zlib/crc32.h b/io2d/src/3rd-party/zlib/crc32.h deleted file mode 100644 index 9e0c778..0000000 --- a/io2d/src/3rd-party/zlib/crc32.h +++ /dev/null @@ -1,441 +0,0 @@ -/* crc32.h -- tables for rapid CRC calculation - * Generated automatically by crc32.c - */ - -local const z_crc_t FAR crc_table[TBLS][256] = -{ - { - 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL, - 0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL, - 0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL, - 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL, - 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL, - 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL, - 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL, - 0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL, - 0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL, - 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL, - 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL, - 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL, - 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL, - 0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL, - 0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL, - 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL, - 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL, - 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL, - 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL, - 0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL, - 0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL, - 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL, - 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL, - 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL, - 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL, - 0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL, - 0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL, - 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL, - 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL, - 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL, - 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL, - 0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL, - 0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL, - 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL, - 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL, - 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL, - 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL, - 0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL, - 0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL, - 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL, - 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL, - 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL, - 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL, - 0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL, - 0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL, - 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL, - 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL, - 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL, - 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL, - 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL, - 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL, - 0x2d02ef8dUL -#ifdef BYFOUR - }, - { - 0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL, - 0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL, - 0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL, - 0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL, - 0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL, - 0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL, - 0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL, - 0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL, - 0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL, - 0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL, - 0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL, - 0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL, - 0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL, - 0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL, - 0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL, - 0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL, - 0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL, - 0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL, - 0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL, - 0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL, - 0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL, - 0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL, - 0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL, - 0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL, - 0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL, - 0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL, - 0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL, - 0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL, - 0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL, - 0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL, - 0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL, - 0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL, - 0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL, - 0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL, - 0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL, - 0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL, - 0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL, - 0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL, - 0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL, - 0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL, - 0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL, - 0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL, - 0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL, - 0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL, - 0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL, - 0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL, - 0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL, - 0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL, - 0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL, - 0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL, - 0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL, - 0x9324fd72UL - }, - { - 0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL, - 0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL, - 0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL, - 0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL, - 0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL, - 0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL, - 0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL, - 0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL, - 0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL, - 0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL, - 0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL, - 0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL, - 0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL, - 0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL, - 0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL, - 0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL, - 0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL, - 0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL, - 0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL, - 0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL, - 0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL, - 0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL, - 0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL, - 0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL, - 0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL, - 0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL, - 0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL, - 0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL, - 0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL, - 0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL, - 0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL, - 0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL, - 0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL, - 0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL, - 0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL, - 0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL, - 0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL, - 0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL, - 0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL, - 0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL, - 0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL, - 0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL, - 0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL, - 0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL, - 0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL, - 0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL, - 0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL, - 0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL, - 0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL, - 0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL, - 0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL, - 0xbe9834edUL - }, - { - 0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL, - 0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL, - 0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL, - 0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL, - 0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL, - 0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL, - 0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL, - 0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL, - 0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL, - 0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL, - 0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL, - 0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL, - 0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL, - 0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL, - 0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL, - 0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL, - 0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL, - 0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL, - 0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL, - 0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL, - 0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL, - 0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL, - 0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL, - 0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL, - 0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL, - 0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL, - 0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL, - 0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL, - 0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL, - 0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL, - 0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL, - 0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL, - 0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL, - 0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL, - 0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL, - 0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL, - 0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL, - 0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL, - 0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL, - 0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL, - 0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL, - 0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL, - 0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL, - 0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL, - 0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL, - 0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL, - 0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL, - 0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL, - 0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL, - 0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL, - 0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL, - 0xde0506f1UL - }, - { - 0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL, - 0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL, - 0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL, - 0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL, - 0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL, - 0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL, - 0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL, - 0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL, - 0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL, - 0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL, - 0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL, - 0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL, - 0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL, - 0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL, - 0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL, - 0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL, - 0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL, - 0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL, - 0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL, - 0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL, - 0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL, - 0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL, - 0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL, - 0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL, - 0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL, - 0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL, - 0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL, - 0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL, - 0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL, - 0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL, - 0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL, - 0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL, - 0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL, - 0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL, - 0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL, - 0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL, - 0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL, - 0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL, - 0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL, - 0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL, - 0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL, - 0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL, - 0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL, - 0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL, - 0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL, - 0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL, - 0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL, - 0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL, - 0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL, - 0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL, - 0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL, - 0x8def022dUL - }, - { - 0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL, - 0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL, - 0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL, - 0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL, - 0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL, - 0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL, - 0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL, - 0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL, - 0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL, - 0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL, - 0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL, - 0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL, - 0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL, - 0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL, - 0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL, - 0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL, - 0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL, - 0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL, - 0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL, - 0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL, - 0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL, - 0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL, - 0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL, - 0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL, - 0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL, - 0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL, - 0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL, - 0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL, - 0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL, - 0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL, - 0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL, - 0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL, - 0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL, - 0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL, - 0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL, - 0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL, - 0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL, - 0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL, - 0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL, - 0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL, - 0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL, - 0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL, - 0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL, - 0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL, - 0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL, - 0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL, - 0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL, - 0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL, - 0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL, - 0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL, - 0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL, - 0x72fd2493UL - }, - { - 0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL, - 0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL, - 0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL, - 0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL, - 0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL, - 0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL, - 0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL, - 0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL, - 0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL, - 0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL, - 0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL, - 0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL, - 0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL, - 0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL, - 0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL, - 0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL, - 0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL, - 0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL, - 0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL, - 0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL, - 0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL, - 0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL, - 0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL, - 0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL, - 0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL, - 0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL, - 0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL, - 0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL, - 0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL, - 0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL, - 0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL, - 0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL, - 0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL, - 0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL, - 0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL, - 0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL, - 0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL, - 0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL, - 0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL, - 0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL, - 0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL, - 0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL, - 0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL, - 0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL, - 0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL, - 0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL, - 0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL, - 0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL, - 0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL, - 0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL, - 0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL, - 0xed3498beUL - }, - { - 0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL, - 0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL, - 0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL, - 0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL, - 0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL, - 0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL, - 0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL, - 0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL, - 0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL, - 0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL, - 0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL, - 0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL, - 0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL, - 0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL, - 0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL, - 0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL, - 0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL, - 0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL, - 0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL, - 0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL, - 0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL, - 0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL, - 0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL, - 0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL, - 0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL, - 0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL, - 0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL, - 0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL, - 0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL, - 0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL, - 0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL, - 0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL, - 0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL, - 0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL, - 0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL, - 0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL, - 0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL, - 0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL, - 0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL, - 0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL, - 0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL, - 0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL, - 0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL, - 0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL, - 0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL, - 0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL, - 0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL, - 0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL, - 0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL, - 0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL, - 0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL, - 0xf10605deUL -#endif - } -}; diff --git a/io2d/src/3rd-party/zlib/deflate.c b/io2d/src/3rd-party/zlib/deflate.c deleted file mode 100644 index 6969577..0000000 --- a/io2d/src/3rd-party/zlib/deflate.c +++ /dev/null @@ -1,1967 +0,0 @@ -/* deflate.c -- compress data using the deflation algorithm - * Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - * ALGORITHM - * - * The "deflation" process depends on being able to identify portions - * of the input text which are identical to earlier input (within a - * sliding window trailing behind the input currently being processed). - * - * The most straightforward technique turns out to be the fastest for - * most input files: try all possible matches and select the longest. - * The key feature of this algorithm is that insertions into the string - * dictionary are very simple and thus fast, and deletions are avoided - * completely. Insertions are performed at each input character, whereas - * string matches are performed only when the previous match ends. So it - * is preferable to spend more time in matches to allow very fast string - * insertions and avoid deletions. The matching algorithm for small - * strings is inspired from that of Rabin & Karp. A brute force approach - * is used to find longer strings when a small match has been found. - * A similar algorithm is used in comic (by Jan-Mark Wams) and freeze - * (by Leonid Broukhis). - * A previous version of this file used a more sophisticated algorithm - * (by Fiala and Greene) which is guaranteed to run in linear amortized - * time, but has a larger average cost, uses more memory and is patented. - * However the F&G algorithm may be faster for some highly redundant - * files if the parameter max_chain_length (described below) is too large. - * - * ACKNOWLEDGEMENTS - * - * The idea of lazy evaluation of matches is due to Jan-Mark Wams, and - * I found it in 'freeze' written by Leonid Broukhis. - * Thanks to many people for bug reports and testing. - * - * REFERENCES - * - * Deutsch, L.P.,"DEFLATE Compressed Data Format Specification". - * Available in http://tools.ietf.org/html/rfc1951 - * - * A description of the Rabin and Karp algorithm is given in the book - * "Algorithms" by R. Sedgewick, Addison-Wesley, p252. - * - * Fiala,E.R., and Greene,D.H. - * Data Compression with Finite Windows, Comm.ACM, 32,4 (1989) 490-595 - * - */ - -/* @(#) $Id$ */ - -#include "deflate.h" - -const char deflate_copyright[] = - " deflate 1.2.8 Copyright 1995-2013 Jean-loup Gailly and Mark Adler "; -/* - If you use the zlib library in a product, an acknowledgment is welcome - in the documentation of your product. If for some reason you cannot - include such an acknowledgment, I would appreciate that you keep this - copyright string in the executable of your product. - */ - -/* =========================================================================== - * Function prototypes. - */ -typedef enum { - need_more, /* block not completed, need more input or more output */ - block_done, /* block flush performed */ - finish_started, /* finish started, need only more output at next deflate */ - finish_done /* finish done, accept no more input or output */ -} block_state; - -typedef block_state (*compress_func) OF((deflate_state *s, int flush)); -/* Compression function. Returns the block state after the call. */ - -local void fill_window OF((deflate_state *s)); -local block_state deflate_stored OF((deflate_state *s, int flush)); -local block_state deflate_fast OF((deflate_state *s, int flush)); -#ifndef FASTEST -local block_state deflate_slow OF((deflate_state *s, int flush)); -#endif -local block_state deflate_rle OF((deflate_state *s, int flush)); -local block_state deflate_huff OF((deflate_state *s, int flush)); -local void lm_init OF((deflate_state *s)); -local void putShortMSB OF((deflate_state *s, uInt b)); -local void flush_pending OF((z_streamp strm)); -local int read_buf OF((z_streamp strm, Bytef *buf, unsigned size)); -#ifdef ASMV - void match_init OF((void)); /* asm code initialization */ - uInt longest_match OF((deflate_state *s, IPos cur_match)); -#else -local uInt longest_match OF((deflate_state *s, IPos cur_match)); -#endif - -#ifdef DEBUG -local void check_match OF((deflate_state *s, IPos start, IPos match, - int length)); -#endif - -/* =========================================================================== - * Local data - */ - -#define NIL 0 -/* Tail of hash chains */ - -#ifndef TOO_FAR -# define TOO_FAR 4096 -#endif -/* Matches of length 3 are discarded if their distance exceeds TOO_FAR */ - -/* Values for max_lazy_match, good_match and max_chain_length, depending on - * the desired pack level (0..9). The values given below have been tuned to - * exclude worst case performance for pathological files. Better values may be - * found for specific files. - */ -typedef struct config_s { - ush good_length; /* reduce lazy search above this match length */ - ush max_lazy; /* do not perform lazy search above this match length */ - ush nice_length; /* quit search above this match length */ - ush max_chain; - compress_func func; -} config; - -#ifdef FASTEST -local const config configuration_table[2] = { -/* good lazy nice chain */ -/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */ -/* 1 */ {4, 4, 8, 4, deflate_fast}}; /* max speed, no lazy matches */ -#else -local const config configuration_table[10] = { -/* good lazy nice chain */ -/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */ -/* 1 */ {4, 4, 8, 4, deflate_fast}, /* max speed, no lazy matches */ -/* 2 */ {4, 5, 16, 8, deflate_fast}, -/* 3 */ {4, 6, 32, 32, deflate_fast}, - -/* 4 */ {4, 4, 16, 16, deflate_slow}, /* lazy matches */ -/* 5 */ {8, 16, 32, 32, deflate_slow}, -/* 6 */ {8, 16, 128, 128, deflate_slow}, -/* 7 */ {8, 32, 128, 256, deflate_slow}, -/* 8 */ {32, 128, 258, 1024, deflate_slow}, -/* 9 */ {32, 258, 258, 4096, deflate_slow}}; /* max compression */ -#endif - -/* Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4 - * For deflate_fast() (levels <= 3) good is ignored and lazy has a different - * meaning. - */ - -#define EQUAL 0 -/* result of memcmp for equal strings */ - -#ifndef NO_DUMMY_DECL -struct static_tree_desc_s {int dummy;}; /* for buggy compilers */ -#endif - -/* rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH */ -#define RANK(f) (((f) << 1) - ((f) > 4 ? 9 : 0)) - -/* =========================================================================== - * Update a hash value with the given input byte - * IN assertion: all calls to to UPDATE_HASH are made with consecutive - * input characters, so that a running hash key can be computed from the - * previous key instead of complete recalculation each time. - */ -#define UPDATE_HASH(s,h,c) (h = (((h)<hash_shift) ^ (c)) & s->hash_mask) - - -/* =========================================================================== - * Insert string str in the dictionary and set match_head to the previous head - * of the hash chain (the most recent string with same hash key). Return - * the previous length of the hash chain. - * If this file is compiled with -DFASTEST, the compression level is forced - * to 1, and no hash chains are maintained. - * IN assertion: all calls to to INSERT_STRING are made with consecutive - * input characters and the first MIN_MATCH bytes of str are valid - * (except for the last MIN_MATCH-1 bytes of the input file). - */ -#ifdef FASTEST -#define INSERT_STRING(s, str, match_head) \ - (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ - match_head = s->head[s->ins_h], \ - s->head[s->ins_h] = (Pos)(str)) -#else -#define INSERT_STRING(s, str, match_head) \ - (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ - match_head = s->prev[(str) & s->w_mask] = s->head[s->ins_h], \ - s->head[s->ins_h] = (Pos)(str)) -#endif - -/* =========================================================================== - * Initialize the hash table (avoiding 64K overflow for 16 bit systems). - * prev[] will be initialized on the fly. - */ -#define CLEAR_HASH(s) \ - s->head[s->hash_size-1] = NIL; \ - zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head)); - -/* ========================================================================= */ -int ZEXPORT deflateInit_(strm, level, version, stream_size) - z_streamp strm; - int level; - const char *version; - int stream_size; -{ - return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, - Z_DEFAULT_STRATEGY, version, stream_size); - /* To do: ignore strm->next_in if we use it as window */ -} - -/* ========================================================================= */ -int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, - version, stream_size) - z_streamp strm; - int level; - int method; - int windowBits; - int memLevel; - int strategy; - const char *version; - int stream_size; -{ - deflate_state *s; - int wrap = 1; - static const char my_version[] = ZLIB_VERSION; - - ushf *overlay; - /* We overlay pending_buf and d_buf+l_buf. This works since the average - * output size for (length,distance) codes is <= 24 bits. - */ - - if (version == Z_NULL || version[0] != my_version[0] || - stream_size != sizeof(z_stream)) { - return Z_VERSION_ERROR; - } - if (strm == Z_NULL) return Z_STREAM_ERROR; - - strm->msg = Z_NULL; - if (strm->zalloc == (alloc_func)0) { -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zalloc = zcalloc; - strm->opaque = (voidpf)0; -#endif - } - if (strm->zfree == (free_func)0) -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zfree = zcfree; -#endif - -#ifdef FASTEST - if (level != 0) level = 1; -#else - if (level == Z_DEFAULT_COMPRESSION) level = 6; -#endif - - if (windowBits < 0) { /* suppress zlib wrapper */ - wrap = 0; - windowBits = -windowBits; - } -#ifdef GZIP - else if (windowBits > 15) { - wrap = 2; /* write gzip wrapper instead */ - windowBits -= 16; - } -#endif - if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED || - windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || - strategy < 0 || strategy > Z_FIXED) { - return Z_STREAM_ERROR; - } - if (windowBits == 8) windowBits = 9; /* until 256-byte window bug fixed */ - s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state)); - if (s == Z_NULL) return Z_MEM_ERROR; - strm->state = (struct internal_state FAR *)s; - s->strm = strm; - - s->wrap = wrap; - s->gzhead = Z_NULL; - s->w_bits = windowBits; - s->w_size = 1 << s->w_bits; - s->w_mask = s->w_size - 1; - - s->hash_bits = memLevel + 7; - s->hash_size = 1 << s->hash_bits; - s->hash_mask = s->hash_size - 1; - s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH); - - s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte)); - s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos)); - s->head = (Posf *) ZALLOC(strm, s->hash_size, sizeof(Pos)); - - s->high_water = 0; /* nothing written to s->window yet */ - - s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ - - overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); - s->pending_buf = (uchf *) overlay; - s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L); - - if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL || - s->pending_buf == Z_NULL) { - s->status = FINISH_STATE; - strm->msg = ERR_MSG(Z_MEM_ERROR); - deflateEnd (strm); - return Z_MEM_ERROR; - } - s->d_buf = overlay + s->lit_bufsize/sizeof(ush); - s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; - - s->level = level; - s->strategy = strategy; - s->method = (Byte)method; - - return deflateReset(strm); -} - -/* ========================================================================= */ -int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength) - z_streamp strm; - const Bytef *dictionary; - uInt dictLength; -{ - deflate_state *s; - uInt str, n; - int wrap; - unsigned avail; - z_const unsigned char *next; - - if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL) - return Z_STREAM_ERROR; - s = strm->state; - wrap = s->wrap; - if (wrap == 2 || (wrap == 1 && s->status != INIT_STATE) || s->lookahead) - return Z_STREAM_ERROR; - - /* when using zlib wrappers, compute Adler-32 for provided dictionary */ - if (wrap == 1) - strm->adler = adler32(strm->adler, dictionary, dictLength); - s->wrap = 0; /* avoid computing Adler-32 in read_buf */ - - /* if dictionary would fill window, just replace the history */ - if (dictLength >= s->w_size) { - if (wrap == 0) { /* already empty otherwise */ - CLEAR_HASH(s); - s->strstart = 0; - s->block_start = 0L; - s->insert = 0; - } - dictionary += dictLength - s->w_size; /* use the tail */ - dictLength = s->w_size; - } - - /* insert dictionary into window and hash */ - avail = strm->avail_in; - next = strm->next_in; - strm->avail_in = dictLength; - strm->next_in = (z_const Bytef *)dictionary; - fill_window(s); - while (s->lookahead >= MIN_MATCH) { - str = s->strstart; - n = s->lookahead - (MIN_MATCH-1); - do { - UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); -#ifndef FASTEST - s->prev[str & s->w_mask] = s->head[s->ins_h]; -#endif - s->head[s->ins_h] = (Pos)str; - str++; - } while (--n); - s->strstart = str; - s->lookahead = MIN_MATCH-1; - fill_window(s); - } - s->strstart += s->lookahead; - s->block_start = (long)s->strstart; - s->insert = s->lookahead; - s->lookahead = 0; - s->match_length = s->prev_length = MIN_MATCH-1; - s->match_available = 0; - strm->next_in = next; - strm->avail_in = avail; - s->wrap = wrap; - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflateResetKeep (strm) - z_streamp strm; -{ - deflate_state *s; - - if (strm == Z_NULL || strm->state == Z_NULL || - strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) { - return Z_STREAM_ERROR; - } - - strm->total_in = strm->total_out = 0; - strm->msg = Z_NULL; /* use zfree if we ever allocate msg dynamically */ - strm->data_type = Z_UNKNOWN; - - s = (deflate_state *)strm->state; - s->pending = 0; - s->pending_out = s->pending_buf; - - if (s->wrap < 0) { - s->wrap = -s->wrap; /* was made negative by deflate(..., Z_FINISH); */ - } - s->status = s->wrap ? INIT_STATE : BUSY_STATE; - strm->adler = -#ifdef GZIP - s->wrap == 2 ? crc32(0L, Z_NULL, 0) : -#endif - adler32(0L, Z_NULL, 0); - s->last_flush = Z_NO_FLUSH; - - _tr_init(s); - - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflateReset (strm) - z_streamp strm; -{ - int ret; - - ret = deflateResetKeep(strm); - if (ret == Z_OK) - lm_init(strm->state); - return ret; -} - -/* ========================================================================= */ -int ZEXPORT deflateSetHeader (strm, head) - z_streamp strm; - gz_headerp head; -{ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - if (strm->state->wrap != 2) return Z_STREAM_ERROR; - strm->state->gzhead = head; - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflatePending (strm, pending, bits) - unsigned *pending; - int *bits; - z_streamp strm; -{ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - if (pending != Z_NULL) - *pending = strm->state->pending; - if (bits != Z_NULL) - *bits = strm->state->bi_valid; - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflatePrime (strm, bits, value) - z_streamp strm; - int bits; - int value; -{ - deflate_state *s; - int put; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - s = strm->state; - if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3)) - return Z_BUF_ERROR; - do { - put = Buf_size - s->bi_valid; - if (put > bits) - put = bits; - s->bi_buf |= (ush)((value & ((1 << put) - 1)) << s->bi_valid); - s->bi_valid += put; - _tr_flush_bits(s); - value >>= put; - bits -= put; - } while (bits); - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflateParams(strm, level, strategy) - z_streamp strm; - int level; - int strategy; -{ - deflate_state *s; - compress_func func; - int err = Z_OK; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - s = strm->state; - -#ifdef FASTEST - if (level != 0) level = 1; -#else - if (level == Z_DEFAULT_COMPRESSION) level = 6; -#endif - if (level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) { - return Z_STREAM_ERROR; - } - func = configuration_table[s->level].func; - - if ((strategy != s->strategy || func != configuration_table[level].func) && - strm->total_in != 0) { - /* Flush the last buffer: */ - err = deflate(strm, Z_BLOCK); - if (err == Z_BUF_ERROR && s->pending == 0) - err = Z_OK; - } - if (s->level != level) { - s->level = level; - s->max_lazy_match = configuration_table[level].max_lazy; - s->good_match = configuration_table[level].good_length; - s->nice_match = configuration_table[level].nice_length; - s->max_chain_length = configuration_table[level].max_chain; - } - s->strategy = strategy; - return err; -} - -/* ========================================================================= */ -int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain) - z_streamp strm; - int good_length; - int max_lazy; - int nice_length; - int max_chain; -{ - deflate_state *s; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - s = strm->state; - s->good_match = good_length; - s->max_lazy_match = max_lazy; - s->nice_match = nice_length; - s->max_chain_length = max_chain; - return Z_OK; -} - -/* ========================================================================= - * For the default windowBits of 15 and memLevel of 8, this function returns - * a close to exact, as well as small, upper bound on the compressed size. - * They are coded as constants here for a reason--if the #define's are - * changed, then this function needs to be changed as well. The return - * value for 15 and 8 only works for those exact settings. - * - * For any setting other than those defaults for windowBits and memLevel, - * the value returned is a conservative worst case for the maximum expansion - * resulting from using fixed blocks instead of stored blocks, which deflate - * can emit on compressed data for some combinations of the parameters. - * - * This function could be more sophisticated to provide closer upper bounds for - * every combination of windowBits and memLevel. But even the conservative - * upper bound of about 14% expansion does not seem onerous for output buffer - * allocation. - */ -uLong ZEXPORT deflateBound(strm, sourceLen) - z_streamp strm; - uLong sourceLen; -{ - deflate_state *s; - uLong complen, wraplen; - Bytef *str; - - /* conservative upper bound for compressed data */ - complen = sourceLen + - ((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5; - - /* if can't get parameters, return conservative bound plus zlib wrapper */ - if (strm == Z_NULL || strm->state == Z_NULL) - return complen + 6; - - /* compute wrapper length */ - s = strm->state; - switch (s->wrap) { - case 0: /* raw deflate */ - wraplen = 0; - break; - case 1: /* zlib wrapper */ - wraplen = 6 + (s->strstart ? 4 : 0); - break; - case 2: /* gzip wrapper */ - wraplen = 18; - if (s->gzhead != Z_NULL) { /* user-supplied gzip header */ - if (s->gzhead->extra != Z_NULL) - wraplen += 2 + s->gzhead->extra_len; - str = s->gzhead->name; - if (str != Z_NULL) - do { - wraplen++; - } while (*str++); - str = s->gzhead->comment; - if (str != Z_NULL) - do { - wraplen++; - } while (*str++); - if (s->gzhead->hcrc) - wraplen += 2; - } - break; - default: /* for compiler happiness */ - wraplen = 6; - } - - /* if not default parameters, return conservative bound */ - if (s->w_bits != 15 || s->hash_bits != 8 + 7) - return complen + wraplen; - - /* default settings: return tight bound for that case */ - return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + - (sourceLen >> 25) + 13 - 6 + wraplen; -} - -/* ========================================================================= - * Put a short in the pending buffer. The 16-bit value is put in MSB order. - * IN assertion: the stream state is correct and there is enough room in - * pending_buf. - */ -local void putShortMSB (s, b) - deflate_state *s; - uInt b; -{ - put_byte(s, (Byte)(b >> 8)); - put_byte(s, (Byte)(b & 0xff)); -} - -/* ========================================================================= - * Flush as much pending output as possible. All deflate() output goes - * through this function so some applications may wish to modify it - * to avoid allocating a large strm->next_out buffer and copying into it. - * (See also read_buf()). - */ -local void flush_pending(strm) - z_streamp strm; -{ - unsigned len; - deflate_state *s = strm->state; - - _tr_flush_bits(s); - len = s->pending; - if (len > strm->avail_out) len = strm->avail_out; - if (len == 0) return; - - zmemcpy(strm->next_out, s->pending_out, len); - strm->next_out += len; - s->pending_out += len; - strm->total_out += len; - strm->avail_out -= len; - s->pending -= len; - if (s->pending == 0) { - s->pending_out = s->pending_buf; - } -} - -/* ========================================================================= */ -int ZEXPORT deflate (strm, flush) - z_streamp strm; - int flush; -{ - int old_flush; /* value of flush param for previous deflate call */ - deflate_state *s; - - if (strm == Z_NULL || strm->state == Z_NULL || - flush > Z_BLOCK || flush < 0) { - return Z_STREAM_ERROR; - } - s = strm->state; - - if (strm->next_out == Z_NULL || - (strm->next_in == Z_NULL && strm->avail_in != 0) || - (s->status == FINISH_STATE && flush != Z_FINISH)) { - ERR_RETURN(strm, Z_STREAM_ERROR); - } - if (strm->avail_out == 0) ERR_RETURN(strm, Z_BUF_ERROR); - - s->strm = strm; /* just in case */ - old_flush = s->last_flush; - s->last_flush = flush; - - /* Write the header */ - if (s->status == INIT_STATE) { -#ifdef GZIP - if (s->wrap == 2) { - strm->adler = crc32(0L, Z_NULL, 0); - put_byte(s, 31); - put_byte(s, 139); - put_byte(s, 8); - if (s->gzhead == Z_NULL) { - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, s->level == 9 ? 2 : - (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ? - 4 : 0)); - put_byte(s, OS_CODE); - s->status = BUSY_STATE; - } - else { - put_byte(s, (s->gzhead->text ? 1 : 0) + - (s->gzhead->hcrc ? 2 : 0) + - (s->gzhead->extra == Z_NULL ? 0 : 4) + - (s->gzhead->name == Z_NULL ? 0 : 8) + - (s->gzhead->comment == Z_NULL ? 0 : 16) - ); - put_byte(s, (Byte)(s->gzhead->time & 0xff)); - put_byte(s, (Byte)((s->gzhead->time >> 8) & 0xff)); - put_byte(s, (Byte)((s->gzhead->time >> 16) & 0xff)); - put_byte(s, (Byte)((s->gzhead->time >> 24) & 0xff)); - put_byte(s, s->level == 9 ? 2 : - (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ? - 4 : 0)); - put_byte(s, s->gzhead->os & 0xff); - if (s->gzhead->extra != Z_NULL) { - put_byte(s, s->gzhead->extra_len & 0xff); - put_byte(s, (s->gzhead->extra_len >> 8) & 0xff); - } - if (s->gzhead->hcrc) - strm->adler = crc32(strm->adler, s->pending_buf, - s->pending); - s->gzindex = 0; - s->status = EXTRA_STATE; - } - } - else -#endif - { - uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8; - uInt level_flags; - - if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2) - level_flags = 0; - else if (s->level < 6) - level_flags = 1; - else if (s->level == 6) - level_flags = 2; - else - level_flags = 3; - header |= (level_flags << 6); - if (s->strstart != 0) header |= PRESET_DICT; - header += 31 - (header % 31); - - s->status = BUSY_STATE; - putShortMSB(s, header); - - /* Save the adler32 of the preset dictionary: */ - if (s->strstart != 0) { - putShortMSB(s, (uInt)(strm->adler >> 16)); - putShortMSB(s, (uInt)(strm->adler & 0xffff)); - } - strm->adler = adler32(0L, Z_NULL, 0); - } - } -#ifdef GZIP - if (s->status == EXTRA_STATE) { - if (s->gzhead->extra != Z_NULL) { - uInt beg = s->pending; /* start of bytes to update crc */ - - while (s->gzindex < (s->gzhead->extra_len & 0xffff)) { - if (s->pending == s->pending_buf_size) { - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); - flush_pending(strm); - beg = s->pending; - if (s->pending == s->pending_buf_size) - break; - } - put_byte(s, s->gzhead->extra[s->gzindex]); - s->gzindex++; - } - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); - if (s->gzindex == s->gzhead->extra_len) { - s->gzindex = 0; - s->status = NAME_STATE; - } - } - else - s->status = NAME_STATE; - } - if (s->status == NAME_STATE) { - if (s->gzhead->name != Z_NULL) { - uInt beg = s->pending; /* start of bytes to update crc */ - int val; - - do { - if (s->pending == s->pending_buf_size) { - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); - flush_pending(strm); - beg = s->pending; - if (s->pending == s->pending_buf_size) { - val = 1; - break; - } - } - val = s->gzhead->name[s->gzindex++]; - put_byte(s, val); - } while (val != 0); - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); - if (val == 0) { - s->gzindex = 0; - s->status = COMMENT_STATE; - } - } - else - s->status = COMMENT_STATE; - } - if (s->status == COMMENT_STATE) { - if (s->gzhead->comment != Z_NULL) { - uInt beg = s->pending; /* start of bytes to update crc */ - int val; - - do { - if (s->pending == s->pending_buf_size) { - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); - flush_pending(strm); - beg = s->pending; - if (s->pending == s->pending_buf_size) { - val = 1; - break; - } - } - val = s->gzhead->comment[s->gzindex++]; - put_byte(s, val); - } while (val != 0); - if (s->gzhead->hcrc && s->pending > beg) - strm->adler = crc32(strm->adler, s->pending_buf + beg, - s->pending - beg); - if (val == 0) - s->status = HCRC_STATE; - } - else - s->status = HCRC_STATE; - } - if (s->status == HCRC_STATE) { - if (s->gzhead->hcrc) { - if (s->pending + 2 > s->pending_buf_size) - flush_pending(strm); - if (s->pending + 2 <= s->pending_buf_size) { - put_byte(s, (Byte)(strm->adler & 0xff)); - put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); - strm->adler = crc32(0L, Z_NULL, 0); - s->status = BUSY_STATE; - } - } - else - s->status = BUSY_STATE; - } -#endif - - /* Flush as much pending output as possible */ - if (s->pending != 0) { - flush_pending(strm); - if (strm->avail_out == 0) { - /* Since avail_out is 0, deflate will be called again with - * more output space, but possibly with both pending and - * avail_in equal to zero. There won't be anything to do, - * but this is not an error situation so make sure we - * return OK instead of BUF_ERROR at next call of deflate: - */ - s->last_flush = -1; - return Z_OK; - } - - /* Make sure there is something to do and avoid duplicate consecutive - * flushes. For repeated and useless calls with Z_FINISH, we keep - * returning Z_STREAM_END instead of Z_BUF_ERROR. - */ - } else if (strm->avail_in == 0 && RANK(flush) <= RANK(old_flush) && - flush != Z_FINISH) { - ERR_RETURN(strm, Z_BUF_ERROR); - } - - /* User must not provide more input after the first FINISH: */ - if (s->status == FINISH_STATE && strm->avail_in != 0) { - ERR_RETURN(strm, Z_BUF_ERROR); - } - - /* Start a new block or continue the current one. - */ - if (strm->avail_in != 0 || s->lookahead != 0 || - (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) { - block_state bstate; - - bstate = s->strategy == Z_HUFFMAN_ONLY ? deflate_huff(s, flush) : - (s->strategy == Z_RLE ? deflate_rle(s, flush) : - (*(configuration_table[s->level].func))(s, flush)); - - if (bstate == finish_started || bstate == finish_done) { - s->status = FINISH_STATE; - } - if (bstate == need_more || bstate == finish_started) { - if (strm->avail_out == 0) { - s->last_flush = -1; /* avoid BUF_ERROR next call, see above */ - } - return Z_OK; - /* If flush != Z_NO_FLUSH && avail_out == 0, the next call - * of deflate should use the same flush parameter to make sure - * that the flush is complete. So we don't have to output an - * empty block here, this will be done at next call. This also - * ensures that for a very small output buffer, we emit at most - * one empty block. - */ - } - if (bstate == block_done) { - if (flush == Z_PARTIAL_FLUSH) { - _tr_align(s); - } else if (flush != Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */ - _tr_stored_block(s, (char*)0, 0L, 0); - /* For a full flush, this empty block will be recognized - * as a special marker by inflate_sync(). - */ - if (flush == Z_FULL_FLUSH) { - CLEAR_HASH(s); /* forget history */ - if (s->lookahead == 0) { - s->strstart = 0; - s->block_start = 0L; - s->insert = 0; - } - } - } - flush_pending(strm); - if (strm->avail_out == 0) { - s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */ - return Z_OK; - } - } - } - Assert(strm->avail_out > 0, "bug2"); - - if (flush != Z_FINISH) return Z_OK; - if (s->wrap <= 0) return Z_STREAM_END; - - /* Write the trailer */ -#ifdef GZIP - if (s->wrap == 2) { - put_byte(s, (Byte)(strm->adler & 0xff)); - put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); - put_byte(s, (Byte)((strm->adler >> 16) & 0xff)); - put_byte(s, (Byte)((strm->adler >> 24) & 0xff)); - put_byte(s, (Byte)(strm->total_in & 0xff)); - put_byte(s, (Byte)((strm->total_in >> 8) & 0xff)); - put_byte(s, (Byte)((strm->total_in >> 16) & 0xff)); - put_byte(s, (Byte)((strm->total_in >> 24) & 0xff)); - } - else -#endif - { - putShortMSB(s, (uInt)(strm->adler >> 16)); - putShortMSB(s, (uInt)(strm->adler & 0xffff)); - } - flush_pending(strm); - /* If avail_out is zero, the application will call deflate again - * to flush the rest. - */ - if (s->wrap > 0) s->wrap = -s->wrap; /* write the trailer only once! */ - return s->pending != 0 ? Z_OK : Z_STREAM_END; -} - -/* ========================================================================= */ -int ZEXPORT deflateEnd (strm) - z_streamp strm; -{ - int status; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - - status = strm->state->status; - if (status != INIT_STATE && - status != EXTRA_STATE && - status != NAME_STATE && - status != COMMENT_STATE && - status != HCRC_STATE && - status != BUSY_STATE && - status != FINISH_STATE) { - return Z_STREAM_ERROR; - } - - /* Deallocate in reverse order of allocations: */ - TRY_FREE(strm, strm->state->pending_buf); - TRY_FREE(strm, strm->state->head); - TRY_FREE(strm, strm->state->prev); - TRY_FREE(strm, strm->state->window); - - ZFREE(strm, strm->state); - strm->state = Z_NULL; - - return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK; -} - -/* ========================================================================= - * Copy the source state to the destination state. - * To simplify the source, this is not supported for 16-bit MSDOS (which - * doesn't have enough memory anyway to duplicate compression states). - */ -int ZEXPORT deflateCopy (dest, source) - z_streamp dest; - z_streamp source; -{ -#ifdef MAXSEG_64K - return Z_STREAM_ERROR; -#else - deflate_state *ds; - deflate_state *ss; - ushf *overlay; - - - if (source == Z_NULL || dest == Z_NULL || source->state == Z_NULL) { - return Z_STREAM_ERROR; - } - - ss = source->state; - - zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); - - ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state)); - if (ds == Z_NULL) return Z_MEM_ERROR; - dest->state = (struct internal_state FAR *) ds; - zmemcpy((voidpf)ds, (voidpf)ss, sizeof(deflate_state)); - ds->strm = dest; - - ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte)); - ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos)); - ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos)); - overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2); - ds->pending_buf = (uchf *) overlay; - - if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL || - ds->pending_buf == Z_NULL) { - deflateEnd (dest); - return Z_MEM_ERROR; - } - /* following zmemcpy do not work for 16-bit MSDOS */ - zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte)); - zmemcpy((voidpf)ds->prev, (voidpf)ss->prev, ds->w_size * sizeof(Pos)); - zmemcpy((voidpf)ds->head, (voidpf)ss->head, ds->hash_size * sizeof(Pos)); - zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size); - - ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf); - ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush); - ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize; - - ds->l_desc.dyn_tree = ds->dyn_ltree; - ds->d_desc.dyn_tree = ds->dyn_dtree; - ds->bl_desc.dyn_tree = ds->bl_tree; - - return Z_OK; -#endif /* MAXSEG_64K */ -} - -/* =========================================================================== - * Read a new buffer from the current input stream, update the adler32 - * and total number of bytes read. All deflate() input goes through - * this function so some applications may wish to modify it to avoid - * allocating a large strm->next_in buffer and copying from it. - * (See also flush_pending()). - */ -local int read_buf(strm, buf, size) - z_streamp strm; - Bytef *buf; - unsigned size; -{ - unsigned len = strm->avail_in; - - if (len > size) len = size; - if (len == 0) return 0; - - strm->avail_in -= len; - - zmemcpy(buf, strm->next_in, len); - if (strm->state->wrap == 1) { - strm->adler = adler32(strm->adler, buf, len); - } -#ifdef GZIP - else if (strm->state->wrap == 2) { - strm->adler = crc32(strm->adler, buf, len); - } -#endif - strm->next_in += len; - strm->total_in += len; - - return (int)len; -} - -/* =========================================================================== - * Initialize the "longest match" routines for a new zlib stream - */ -local void lm_init (s) - deflate_state *s; -{ - s->window_size = (ulg)2L*s->w_size; - - CLEAR_HASH(s); - - /* Set the default configuration parameters: - */ - s->max_lazy_match = configuration_table[s->level].max_lazy; - s->good_match = configuration_table[s->level].good_length; - s->nice_match = configuration_table[s->level].nice_length; - s->max_chain_length = configuration_table[s->level].max_chain; - - s->strstart = 0; - s->block_start = 0L; - s->lookahead = 0; - s->insert = 0; - s->match_length = s->prev_length = MIN_MATCH-1; - s->match_available = 0; - s->ins_h = 0; -#ifndef FASTEST -#ifdef ASMV - match_init(); /* initialize the asm code */ -#endif -#endif -} - -#ifndef FASTEST -/* =========================================================================== - * Set match_start to the longest match starting at the given string and - * return its length. Matches shorter or equal to prev_length are discarded, - * in which case the result is equal to prev_length and match_start is - * garbage. - * IN assertions: cur_match is the head of the hash chain for the current - * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 - * OUT assertion: the match length is not greater than s->lookahead. - */ -#ifndef ASMV -/* For 80x86 and 680x0, an optimized version will be provided in match.asm or - * match.S. The code will be functionally equivalent. - */ -local uInt longest_match(s, cur_match) - deflate_state *s; - IPos cur_match; /* current match */ -{ - unsigned chain_length = s->max_chain_length;/* max hash chain length */ - register Bytef *scan = s->window + s->strstart; /* current string */ - register Bytef *match; /* matched string */ - register int len; /* length of current match */ - int best_len = s->prev_length; /* best match length so far */ - int nice_match = s->nice_match; /* stop if match long enough */ - IPos limit = s->strstart > (IPos)MAX_DIST(s) ? - s->strstart - (IPos)MAX_DIST(s) : NIL; - /* Stop when cur_match becomes <= limit. To simplify the code, - * we prevent matches with the string of window index 0. - */ - Posf *prev = s->prev; - uInt wmask = s->w_mask; - -#ifdef UNALIGNED_OK - /* Compare two bytes at a time. Note: this is not always beneficial. - * Try with and without -DUNALIGNED_OK to check. - */ - register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; - register ush scan_start = *(ushf*)scan; - register ush scan_end = *(ushf*)(scan+best_len-1); -#else - register Bytef *strend = s->window + s->strstart + MAX_MATCH; - register Byte scan_end1 = scan[best_len-1]; - register Byte scan_end = scan[best_len]; -#endif - - /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. - * It is easy to get rid of this optimization if necessary. - */ - Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); - - /* Do not waste too much time if we already have a good match: */ - if (s->prev_length >= s->good_match) { - chain_length >>= 2; - } - /* Do not look for matches beyond the end of the input. This is necessary - * to make deflate deterministic. - */ - if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; - - Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); - - do { - Assert(cur_match < s->strstart, "no future"); - match = s->window + cur_match; - - /* Skip to next match if the match length cannot increase - * or if the match length is less than 2. Note that the checks below - * for insufficient lookahead only occur occasionally for performance - * reasons. Therefore uninitialized memory will be accessed, and - * conditional jumps will be made that depend on those values. - * However the length of the match is limited to the lookahead, so - * the output of deflate is not affected by the uninitialized values. - */ -#if (defined(UNALIGNED_OK) && MAX_MATCH == 258) - /* This code assumes sizeof(unsigned short) == 2. Do not use - * UNALIGNED_OK if your compiler uses a different size. - */ - if (*(ushf*)(match+best_len-1) != scan_end || - *(ushf*)match != scan_start) continue; - - /* It is not necessary to compare scan[2] and match[2] since they are - * always equal when the other bytes match, given that the hash keys - * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at - * strstart+3, +5, ... up to strstart+257. We check for insufficient - * lookahead only every 4th comparison; the 128th check will be made - * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is - * necessary to put more guard bytes at the end of the window, or - * to check more often for insufficient lookahead. - */ - Assert(scan[2] == match[2], "scan[2]?"); - scan++, match++; - do { - } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && - scan < strend); - /* The funny "do {}" generates better code on most compilers */ - - /* Here, scan <= window+strstart+257 */ - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); - if (*scan == *match) scan++; - - len = (MAX_MATCH - 1) - (int)(strend-scan); - scan = strend - (MAX_MATCH-1); - -#else /* UNALIGNED_OK */ - - if (match[best_len] != scan_end || - match[best_len-1] != scan_end1 || - *match != *scan || - *++match != scan[1]) continue; - - /* The check at best_len-1 can be removed because it will be made - * again later. (This heuristic is not always a win.) - * It is not necessary to compare scan[2] and match[2] since they - * are always equal when the other bytes match, given that - * the hash keys are equal and that HASH_BITS >= 8. - */ - scan += 2, match++; - Assert(*scan == *match, "match[2]?"); - - /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. - */ - do { - } while (*++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - scan < strend); - - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); - - len = MAX_MATCH - (int)(strend - scan); - scan = strend - MAX_MATCH; - -#endif /* UNALIGNED_OK */ - - if (len > best_len) { - s->match_start = cur_match; - best_len = len; - if (len >= nice_match) break; -#ifdef UNALIGNED_OK - scan_end = *(ushf*)(scan+best_len-1); -#else - scan_end1 = scan[best_len-1]; - scan_end = scan[best_len]; -#endif - } - } while ((cur_match = prev[cur_match & wmask]) > limit - && --chain_length != 0); - - if ((uInt)best_len <= s->lookahead) return (uInt)best_len; - return s->lookahead; -} -#endif /* ASMV */ - -#else /* FASTEST */ - -/* --------------------------------------------------------------------------- - * Optimized version for FASTEST only - */ -local uInt longest_match(s, cur_match) - deflate_state *s; - IPos cur_match; /* current match */ -{ - register Bytef *scan = s->window + s->strstart; /* current string */ - register Bytef *match; /* matched string */ - register int len; /* length of current match */ - register Bytef *strend = s->window + s->strstart + MAX_MATCH; - - /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. - * It is easy to get rid of this optimization if necessary. - */ - Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); - - Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); - - Assert(cur_match < s->strstart, "no future"); - - match = s->window + cur_match; - - /* Return failure if the match length is less than 2: - */ - if (match[0] != scan[0] || match[1] != scan[1]) return MIN_MATCH-1; - - /* The check at best_len-1 can be removed because it will be made - * again later. (This heuristic is not always a win.) - * It is not necessary to compare scan[2] and match[2] since they - * are always equal when the other bytes match, given that - * the hash keys are equal and that HASH_BITS >= 8. - */ - scan += 2, match += 2; - Assert(*scan == *match, "match[2]?"); - - /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. - */ - do { - } while (*++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - scan < strend); - - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); - - len = MAX_MATCH - (int)(strend - scan); - - if (len < MIN_MATCH) return MIN_MATCH - 1; - - s->match_start = cur_match; - return (uInt)len <= s->lookahead ? (uInt)len : s->lookahead; -} - -#endif /* FASTEST */ - -#ifdef DEBUG -/* =========================================================================== - * Check that the match at match_start is indeed a match. - */ -local void check_match(s, start, match, length) - deflate_state *s; - IPos start, match; - int length; -{ - /* check that the match is indeed a match */ - if (zmemcmp(s->window + match, - s->window + start, length) != EQUAL) { - fprintf(stderr, " start %u, match %u, length %d\n", - start, match, length); - do { - fprintf(stderr, "%c%c", s->window[match++], s->window[start++]); - } while (--length != 0); - z_error("invalid match"); - } - if (z_verbose > 1) { - fprintf(stderr,"\\[%d,%d]", start-match, length); - do { putc(s->window[start++], stderr); } while (--length != 0); - } -} -#else -# define check_match(s, start, match, length) -#endif /* DEBUG */ - -/* =========================================================================== - * Fill the window when the lookahead becomes insufficient. - * Updates strstart and lookahead. - * - * IN assertion: lookahead < MIN_LOOKAHEAD - * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD - * At least one byte has been read, or avail_in == 0; reads are - * performed for at least two bytes (required for the zip translate_eol - * option -- not supported here). - */ -local void fill_window(s) - deflate_state *s; -{ - register unsigned n, m; - register Posf *p; - unsigned more; /* Amount of free space at the end of the window. */ - uInt wsize = s->w_size; - - Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); - - do { - more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart); - - /* Deal with !@#$% 64K limit: */ - if (sizeof(int) <= 2) { - if (more == 0 && s->strstart == 0 && s->lookahead == 0) { - more = wsize; - - } else if (more == (unsigned)(-1)) { - /* Very unlikely, but possible on 16 bit machine if - * strstart == 0 && lookahead == 1 (input done a byte at time) - */ - more--; - } - } - - /* If the window is almost full and there is insufficient lookahead, - * move the upper half to the lower one to make room in the upper half. - */ - if (s->strstart >= wsize+MAX_DIST(s)) { - - zmemcpy(s->window, s->window+wsize, (unsigned)wsize); - s->match_start -= wsize; - s->strstart -= wsize; /* we now have strstart >= MAX_DIST */ - s->block_start -= (long) wsize; - - /* Slide the hash table (could be avoided with 32 bit values - at the expense of memory usage). We slide even when level == 0 - to keep the hash table consistent if we switch back to level > 0 - later. (Using level 0 permanently is not an optimal usage of - zlib, so we don't care about this pathological case.) - */ - n = s->hash_size; - p = &s->head[n]; - do { - m = *--p; - *p = (Pos)(m >= wsize ? m-wsize : NIL); - } while (--n); - - n = wsize; -#ifndef FASTEST - p = &s->prev[n]; - do { - m = *--p; - *p = (Pos)(m >= wsize ? m-wsize : NIL); - /* If n is not on any hash chain, prev[n] is garbage but - * its value will never be used. - */ - } while (--n); -#endif - more += wsize; - } - if (s->strm->avail_in == 0) break; - - /* If there was no sliding: - * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && - * more == window_size - lookahead - strstart - * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) - * => more >= window_size - 2*WSIZE + 2 - * In the BIG_MEM or MMAP case (not yet supported), - * window_size == input_size + MIN_LOOKAHEAD && - * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. - * Otherwise, window_size == 2*WSIZE so more >= 2. - * If there was sliding, more >= WSIZE. So in all cases, more >= 2. - */ - Assert(more >= 2, "more < 2"); - - n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more); - s->lookahead += n; - - /* Initialize the hash value now that we have some input: */ - if (s->lookahead + s->insert >= MIN_MATCH) { - uInt str = s->strstart - s->insert; - s->ins_h = s->window[str]; - UPDATE_HASH(s, s->ins_h, s->window[str + 1]); -#if MIN_MATCH != 3 - Call UPDATE_HASH() MIN_MATCH-3 more times -#endif - while (s->insert) { - UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); -#ifndef FASTEST - s->prev[str & s->w_mask] = s->head[s->ins_h]; -#endif - s->head[s->ins_h] = (Pos)str; - str++; - s->insert--; - if (s->lookahead + s->insert < MIN_MATCH) - break; - } - } - /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, - * but this is not important since only literal bytes will be emitted. - */ - - } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0); - - /* If the WIN_INIT bytes after the end of the current data have never been - * written, then zero those bytes in order to avoid memory check reports of - * the use of uninitialized (or uninitialised as Julian writes) bytes by - * the longest match routines. Update the high water mark for the next - * time through here. WIN_INIT is set to MAX_MATCH since the longest match - * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. - */ - if (s->high_water < s->window_size) { - ulg curr = s->strstart + (ulg)(s->lookahead); - ulg init; - - if (s->high_water < curr) { - /* Previous high water mark below current data -- zero WIN_INIT - * bytes or up to end of window, whichever is less. - */ - init = s->window_size - curr; - if (init > WIN_INIT) - init = WIN_INIT; - zmemzero(s->window + curr, (unsigned)init); - s->high_water = curr + init; - } - else if (s->high_water < (ulg)curr + WIN_INIT) { - /* High water mark at or above current data, but below current data - * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up - * to end of window, whichever is less. - */ - init = (ulg)curr + WIN_INIT - s->high_water; - if (init > s->window_size - s->high_water) - init = s->window_size - s->high_water; - zmemzero(s->window + s->high_water, (unsigned)init); - s->high_water += init; - } - } - - Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, - "not enough room for search"); -} - -/* =========================================================================== - * Flush the current block, with given end-of-file flag. - * IN assertion: strstart is set to the end of the current match. - */ -#define FLUSH_BLOCK_ONLY(s, last) { \ - _tr_flush_block(s, (s->block_start >= 0L ? \ - (charf *)&s->window[(unsigned)s->block_start] : \ - (charf *)Z_NULL), \ - (ulg)((long)s->strstart - s->block_start), \ - (last)); \ - s->block_start = s->strstart; \ - flush_pending(s->strm); \ - Tracev((stderr,"[FLUSH]")); \ -} - -/* Same but force premature exit if necessary. */ -#define FLUSH_BLOCK(s, last) { \ - FLUSH_BLOCK_ONLY(s, last); \ - if (s->strm->avail_out == 0) return (last) ? finish_started : need_more; \ -} - -/* =========================================================================== - * Copy without compression as much as possible from the input stream, return - * the current block state. - * This function does not insert new strings in the dictionary since - * uncompressible data is probably not useful. This function is used - * only for the level=0 compression option. - * NOTE: this function should be optimized to avoid extra copying from - * window to pending_buf. - */ -local block_state deflate_stored(s, flush) - deflate_state *s; - int flush; -{ - /* Stored blocks are limited to 0xffff bytes, pending_buf is limited - * to pending_buf_size, and each stored block has a 5 byte header: - */ - ulg max_block_size = 0xffff; - ulg max_start; - - if (max_block_size > s->pending_buf_size - 5) { - max_block_size = s->pending_buf_size - 5; - } - - /* Copy as much as possible from input to output: */ - for (;;) { - /* Fill the window as much as possible: */ - if (s->lookahead <= 1) { - - Assert(s->strstart < s->w_size+MAX_DIST(s) || - s->block_start >= (long)s->w_size, "slide too late"); - - fill_window(s); - if (s->lookahead == 0 && flush == Z_NO_FLUSH) return need_more; - - if (s->lookahead == 0) break; /* flush the current block */ - } - Assert(s->block_start >= 0L, "block gone"); - - s->strstart += s->lookahead; - s->lookahead = 0; - - /* Emit a stored block if pending_buf will be full: */ - max_start = s->block_start + max_block_size; - if (s->strstart == 0 || (ulg)s->strstart >= max_start) { - /* strstart == 0 is possible when wraparound on 16-bit machine */ - s->lookahead = (uInt)(s->strstart - max_start); - s->strstart = (uInt)max_start; - FLUSH_BLOCK(s, 0); - } - /* Flush if we may have to slide, otherwise block_start may become - * negative and the data will be gone: - */ - if (s->strstart - (uInt)s->block_start >= MAX_DIST(s)) { - FLUSH_BLOCK(s, 0); - } - } - s->insert = 0; - if (flush == Z_FINISH) { - FLUSH_BLOCK(s, 1); - return finish_done; - } - if ((long)s->strstart > s->block_start) - FLUSH_BLOCK(s, 0); - return block_done; -} - -/* =========================================================================== - * Compress as much as possible from the input stream, return the current - * block state. - * This function does not perform lazy evaluation of matches and inserts - * new strings in the dictionary only for unmatched strings or for short - * matches. It is used only for the fast compression options. - */ -local block_state deflate_fast(s, flush) - deflate_state *s; - int flush; -{ - IPos hash_head; /* head of the hash chain */ - int bflush; /* set if current block must be flushed */ - - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - if (s->lookahead < MIN_LOOKAHEAD) { - fill_window(s); - if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { - return need_more; - } - if (s->lookahead == 0) break; /* flush the current block */ - } - - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - hash_head = NIL; - if (s->lookahead >= MIN_MATCH) { - INSERT_STRING(s, s->strstart, hash_head); - } - - /* Find the longest match, discarding those <= prev_length. - * At this point we have always match_length < MIN_MATCH - */ - if (hash_head != NIL && s->strstart - hash_head <= MAX_DIST(s)) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - s->match_length = longest_match (s, hash_head); - /* longest_match() sets match_start */ - } - if (s->match_length >= MIN_MATCH) { - check_match(s, s->strstart, s->match_start, s->match_length); - - _tr_tally_dist(s, s->strstart - s->match_start, - s->match_length - MIN_MATCH, bflush); - - s->lookahead -= s->match_length; - - /* Insert new strings in the hash table only if the match length - * is not too large. This saves time but degrades compression. - */ -#ifndef FASTEST - if (s->match_length <= s->max_insert_length && - s->lookahead >= MIN_MATCH) { - s->match_length--; /* string at strstart already in table */ - do { - s->strstart++; - INSERT_STRING(s, s->strstart, hash_head); - /* strstart never exceeds WSIZE-MAX_MATCH, so there are - * always MIN_MATCH bytes ahead. - */ - } while (--s->match_length != 0); - s->strstart++; - } else -#endif - { - s->strstart += s->match_length; - s->match_length = 0; - s->ins_h = s->window[s->strstart]; - UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]); -#if MIN_MATCH != 3 - Call UPDATE_HASH() MIN_MATCH-3 more times -#endif - /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not - * matter since it will be recomputed at next deflate call. - */ - } - } else { - /* No match, output a literal byte */ - Tracevv((stderr,"%c", s->window[s->strstart])); - _tr_tally_lit (s, s->window[s->strstart], bflush); - s->lookahead--; - s->strstart++; - } - if (bflush) FLUSH_BLOCK(s, 0); - } - s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1; - if (flush == Z_FINISH) { - FLUSH_BLOCK(s, 1); - return finish_done; - } - if (s->last_lit) - FLUSH_BLOCK(s, 0); - return block_done; -} - -#ifndef FASTEST -/* =========================================================================== - * Same as above, but achieves better compression. We use a lazy - * evaluation for matches: a match is finally adopted only if there is - * no better match at the next window position. - */ -local block_state deflate_slow(s, flush) - deflate_state *s; - int flush; -{ - IPos hash_head; /* head of hash chain */ - int bflush; /* set if current block must be flushed */ - - /* Process the input block. */ - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - if (s->lookahead < MIN_LOOKAHEAD) { - fill_window(s); - if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { - return need_more; - } - if (s->lookahead == 0) break; /* flush the current block */ - } - - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - hash_head = NIL; - if (s->lookahead >= MIN_MATCH) { - INSERT_STRING(s, s->strstart, hash_head); - } - - /* Find the longest match, discarding those <= prev_length. - */ - s->prev_length = s->match_length, s->prev_match = s->match_start; - s->match_length = MIN_MATCH-1; - - if (hash_head != NIL && s->prev_length < s->max_lazy_match && - s->strstart - hash_head <= MAX_DIST(s)) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - s->match_length = longest_match (s, hash_head); - /* longest_match() sets match_start */ - - if (s->match_length <= 5 && (s->strategy == Z_FILTERED -#if TOO_FAR <= 32767 - || (s->match_length == MIN_MATCH && - s->strstart - s->match_start > TOO_FAR) -#endif - )) { - - /* If prev_match is also MIN_MATCH, match_start is garbage - * but we will ignore the current match anyway. - */ - s->match_length = MIN_MATCH-1; - } - } - /* If there was a match at the previous step and the current - * match is not better, output the previous match: - */ - if (s->prev_length >= MIN_MATCH && s->match_length <= s->prev_length) { - uInt max_insert = s->strstart + s->lookahead - MIN_MATCH; - /* Do not insert strings in hash table beyond this. */ - - check_match(s, s->strstart-1, s->prev_match, s->prev_length); - - _tr_tally_dist(s, s->strstart -1 - s->prev_match, - s->prev_length - MIN_MATCH, bflush); - - /* Insert in hash table all strings up to the end of the match. - * strstart-1 and strstart are already inserted. If there is not - * enough lookahead, the last two strings are not inserted in - * the hash table. - */ - s->lookahead -= s->prev_length-1; - s->prev_length -= 2; - do { - if (++s->strstart <= max_insert) { - INSERT_STRING(s, s->strstart, hash_head); - } - } while (--s->prev_length != 0); - s->match_available = 0; - s->match_length = MIN_MATCH-1; - s->strstart++; - - if (bflush) FLUSH_BLOCK(s, 0); - - } else if (s->match_available) { - /* If there was no match at the previous position, output a - * single literal. If there was a match but the current match - * is longer, truncate the previous match to a single literal. - */ - Tracevv((stderr,"%c", s->window[s->strstart-1])); - _tr_tally_lit(s, s->window[s->strstart-1], bflush); - if (bflush) { - FLUSH_BLOCK_ONLY(s, 0); - } - s->strstart++; - s->lookahead--; - if (s->strm->avail_out == 0) return need_more; - } else { - /* There is no previous match to compare with, wait for - * the next step to decide. - */ - s->match_available = 1; - s->strstart++; - s->lookahead--; - } - } - Assert (flush != Z_NO_FLUSH, "no flush?"); - if (s->match_available) { - Tracevv((stderr,"%c", s->window[s->strstart-1])); - _tr_tally_lit(s, s->window[s->strstart-1], bflush); - s->match_available = 0; - } - s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1; - if (flush == Z_FINISH) { - FLUSH_BLOCK(s, 1); - return finish_done; - } - if (s->last_lit) - FLUSH_BLOCK(s, 0); - return block_done; -} -#endif /* FASTEST */ - -/* =========================================================================== - * For Z_RLE, simply look for runs of bytes, generate matches only of distance - * one. Do not maintain a hash table. (It will be regenerated if this run of - * deflate switches away from Z_RLE.) - */ -local block_state deflate_rle(s, flush) - deflate_state *s; - int flush; -{ - int bflush; /* set if current block must be flushed */ - uInt prev; /* byte at distance one to match */ - Bytef *scan, *strend; /* scan goes up to strend for length of run */ - - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the longest run, plus one for the unrolled loop. - */ - if (s->lookahead <= MAX_MATCH) { - fill_window(s); - if (s->lookahead <= MAX_MATCH && flush == Z_NO_FLUSH) { - return need_more; - } - if (s->lookahead == 0) break; /* flush the current block */ - } - - /* See how many times the previous byte repeats */ - s->match_length = 0; - if (s->lookahead >= MIN_MATCH && s->strstart > 0) { - scan = s->window + s->strstart - 1; - prev = *scan; - if (prev == *++scan && prev == *++scan && prev == *++scan) { - strend = s->window + s->strstart + MAX_MATCH; - do { - } while (prev == *++scan && prev == *++scan && - prev == *++scan && prev == *++scan && - prev == *++scan && prev == *++scan && - prev == *++scan && prev == *++scan && - scan < strend); - s->match_length = MAX_MATCH - (int)(strend - scan); - if (s->match_length > s->lookahead) - s->match_length = s->lookahead; - } - Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan"); - } - - /* Emit match if have run of MIN_MATCH or longer, else emit literal */ - if (s->match_length >= MIN_MATCH) { - check_match(s, s->strstart, s->strstart - 1, s->match_length); - - _tr_tally_dist(s, 1, s->match_length - MIN_MATCH, bflush); - - s->lookahead -= s->match_length; - s->strstart += s->match_length; - s->match_length = 0; - } else { - /* No match, output a literal byte */ - Tracevv((stderr,"%c", s->window[s->strstart])); - _tr_tally_lit (s, s->window[s->strstart], bflush); - s->lookahead--; - s->strstart++; - } - if (bflush) FLUSH_BLOCK(s, 0); - } - s->insert = 0; - if (flush == Z_FINISH) { - FLUSH_BLOCK(s, 1); - return finish_done; - } - if (s->last_lit) - FLUSH_BLOCK(s, 0); - return block_done; -} - -/* =========================================================================== - * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. - * (It will be regenerated if this run of deflate switches away from Huffman.) - */ -local block_state deflate_huff(s, flush) - deflate_state *s; - int flush; -{ - int bflush; /* set if current block must be flushed */ - - for (;;) { - /* Make sure that we have a literal to write. */ - if (s->lookahead == 0) { - fill_window(s); - if (s->lookahead == 0) { - if (flush == Z_NO_FLUSH) - return need_more; - break; /* flush the current block */ - } - } - - /* Output a literal byte */ - s->match_length = 0; - Tracevv((stderr,"%c", s->window[s->strstart])); - _tr_tally_lit (s, s->window[s->strstart], bflush); - s->lookahead--; - s->strstart++; - if (bflush) FLUSH_BLOCK(s, 0); - } - s->insert = 0; - if (flush == Z_FINISH) { - FLUSH_BLOCK(s, 1); - return finish_done; - } - if (s->last_lit) - FLUSH_BLOCK(s, 0); - return block_done; -} diff --git a/io2d/src/3rd-party/zlib/deflate.h b/io2d/src/3rd-party/zlib/deflate.h deleted file mode 100644 index ce0299e..0000000 --- a/io2d/src/3rd-party/zlib/deflate.h +++ /dev/null @@ -1,346 +0,0 @@ -/* deflate.h -- internal compression state - * Copyright (C) 1995-2012 Jean-loup Gailly - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* @(#) $Id$ */ - -#ifndef DEFLATE_H -#define DEFLATE_H - -#include "zutil.h" - -/* define NO_GZIP when compiling if you want to disable gzip header and - trailer creation by deflate(). NO_GZIP would be used to avoid linking in - the crc code when it is not needed. For shared libraries, gzip encoding - should be left enabled. */ -#ifndef NO_GZIP -# define GZIP -#endif - -/* =========================================================================== - * Internal compression state. - */ - -#define LENGTH_CODES 29 -/* number of length codes, not counting the special END_BLOCK code */ - -#define LITERALS 256 -/* number of literal bytes 0..255 */ - -#define L_CODES (LITERALS+1+LENGTH_CODES) -/* number of Literal or Length codes, including the END_BLOCK code */ - -#define D_CODES 30 -/* number of distance codes */ - -#define BL_CODES 19 -/* number of codes used to transfer the bit lengths */ - -#define HEAP_SIZE (2*L_CODES+1) -/* maximum heap size */ - -#define MAX_BITS 15 -/* All codes must not exceed MAX_BITS bits */ - -#define Buf_size 16 -/* size of bit buffer in bi_buf */ - -#define INIT_STATE 42 -#define EXTRA_STATE 69 -#define NAME_STATE 73 -#define COMMENT_STATE 91 -#define HCRC_STATE 103 -#define BUSY_STATE 113 -#define FINISH_STATE 666 -/* Stream status */ - - -/* Data structure describing a single value and its code string. */ -typedef struct ct_data_s { - union { - ush freq; /* frequency count */ - ush code; /* bit string */ - } fc; - union { - ush dad; /* father node in Huffman tree */ - ush len; /* length of bit string */ - } dl; -} FAR ct_data; - -#define Freq fc.freq -#define Code fc.code -#define Dad dl.dad -#define Len dl.len - -typedef struct static_tree_desc_s static_tree_desc; - -typedef struct tree_desc_s { - ct_data *dyn_tree; /* the dynamic tree */ - int max_code; /* largest code with non zero frequency */ - static_tree_desc *stat_desc; /* the corresponding static tree */ -} FAR tree_desc; - -typedef ush Pos; -typedef Pos FAR Posf; -typedef unsigned IPos; - -/* A Pos is an index in the character window. We use short instead of int to - * save space in the various tables. IPos is used only for parameter passing. - */ - -typedef struct internal_state { - z_streamp strm; /* pointer back to this zlib stream */ - int status; /* as the name implies */ - Bytef *pending_buf; /* output still pending */ - ulg pending_buf_size; /* size of pending_buf */ - Bytef *pending_out; /* next pending byte to output to the stream */ - uInt pending; /* nb of bytes in the pending buffer */ - int wrap; /* bit 0 true for zlib, bit 1 true for gzip */ - gz_headerp gzhead; /* gzip header information to write */ - uInt gzindex; /* where in extra, name, or comment */ - Byte method; /* can only be DEFLATED */ - int last_flush; /* value of flush param for previous deflate call */ - - /* used by deflate.c: */ - - uInt w_size; /* LZ77 window size (32K by default) */ - uInt w_bits; /* log2(w_size) (8..16) */ - uInt w_mask; /* w_size - 1 */ - - Bytef *window; - /* Sliding window. Input bytes are read into the second half of the window, - * and move to the first half later to keep a dictionary of at least wSize - * bytes. With this organization, matches are limited to a distance of - * wSize-MAX_MATCH bytes, but this ensures that IO is always - * performed with a length multiple of the block size. Also, it limits - * the window size to 64K, which is quite useful on MSDOS. - * To do: use the user input buffer as sliding window. - */ - - ulg window_size; - /* Actual size of window: 2*wSize, except when the user input buffer - * is directly used as sliding window. - */ - - Posf *prev; - /* Link to older string with same hash index. To limit the size of this - * array to 64K, this link is maintained only for the last 32K strings. - * An index in this array is thus a window index modulo 32K. - */ - - Posf *head; /* Heads of the hash chains or NIL. */ - - uInt ins_h; /* hash index of string to be inserted */ - uInt hash_size; /* number of elements in hash table */ - uInt hash_bits; /* log2(hash_size) */ - uInt hash_mask; /* hash_size-1 */ - - uInt hash_shift; - /* Number of bits by which ins_h must be shifted at each input - * step. It must be such that after MIN_MATCH steps, the oldest - * byte no longer takes part in the hash key, that is: - * hash_shift * MIN_MATCH >= hash_bits - */ - - long block_start; - /* Window position at the beginning of the current output block. Gets - * negative when the window is moved backwards. - */ - - uInt match_length; /* length of best match */ - IPos prev_match; /* previous match */ - int match_available; /* set if previous match exists */ - uInt strstart; /* start of string to insert */ - uInt match_start; /* start of matching string */ - uInt lookahead; /* number of valid bytes ahead in window */ - - uInt prev_length; - /* Length of the best match at previous step. Matches not greater than this - * are discarded. This is used in the lazy match evaluation. - */ - - uInt max_chain_length; - /* To speed up deflation, hash chains are never searched beyond this - * length. A higher limit improves compression ratio but degrades the - * speed. - */ - - uInt max_lazy_match; - /* Attempt to find a better match only when the current match is strictly - * smaller than this value. This mechanism is used only for compression - * levels >= 4. - */ -# define max_insert_length max_lazy_match - /* Insert new strings in the hash table only if the match length is not - * greater than this length. This saves time but degrades compression. - * max_insert_length is used only for compression levels <= 3. - */ - - int level; /* compression level (1..9) */ - int strategy; /* favor or force Huffman coding*/ - - uInt good_match; - /* Use a faster search when the previous match is longer than this */ - - int nice_match; /* Stop searching when current match exceeds this */ - - /* used by trees.c: */ - /* Didn't use ct_data typedef below to suppress compiler warning */ - struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ - struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */ - struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */ - - struct tree_desc_s l_desc; /* desc. for literal tree */ - struct tree_desc_s d_desc; /* desc. for distance tree */ - struct tree_desc_s bl_desc; /* desc. for bit length tree */ - - ush bl_count[MAX_BITS+1]; - /* number of codes at each bit length for an optimal tree */ - - int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ - int heap_len; /* number of elements in the heap */ - int heap_max; /* element of largest frequency */ - /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. - * The same heap array is used to build all trees. - */ - - uch depth[2*L_CODES+1]; - /* Depth of each subtree used as tie breaker for trees of equal frequency - */ - - uchf *l_buf; /* buffer for literals or lengths */ - - uInt lit_bufsize; - /* Size of match buffer for literals/lengths. There are 4 reasons for - * limiting lit_bufsize to 64K: - * - frequencies can be kept in 16 bit counters - * - if compression is not successful for the first block, all input - * data is still in the window so we can still emit a stored block even - * when input comes from standard input. (This can also be done for - * all blocks if lit_bufsize is not greater than 32K.) - * - if compression is not successful for a file smaller than 64K, we can - * even emit a stored file instead of a stored block (saving 5 bytes). - * This is applicable only for zip (not gzip or zlib). - * - creating new Huffman trees less frequently may not provide fast - * adaptation to changes in the input data statistics. (Take for - * example a binary file with poorly compressible code followed by - * a highly compressible string table.) Smaller buffer sizes give - * fast adaptation but have of course the overhead of transmitting - * trees more frequently. - * - I can't count above 4 - */ - - uInt last_lit; /* running index in l_buf */ - - ushf *d_buf; - /* Buffer for distances. To simplify the code, d_buf and l_buf have - * the same number of elements. To use different lengths, an extra flag - * array would be necessary. - */ - - ulg opt_len; /* bit length of current block with optimal trees */ - ulg static_len; /* bit length of current block with static trees */ - uInt matches; /* number of string matches in current block */ - uInt insert; /* bytes at end of window left to insert */ - -#ifdef DEBUG - ulg compressed_len; /* total bit length of compressed file mod 2^32 */ - ulg bits_sent; /* bit length of compressed data sent mod 2^32 */ -#endif - - ush bi_buf; - /* Output buffer. bits are inserted starting at the bottom (least - * significant bits). - */ - int bi_valid; - /* Number of valid bits in bi_buf. All bits above the last valid bit - * are always zero. - */ - - ulg high_water; - /* High water mark offset in window for initialized bytes -- bytes above - * this are set to zero in order to avoid memory check warnings when - * longest match routines access bytes past the input. This is then - * updated to the new high water mark. - */ - -} FAR deflate_state; - -/* Output a byte on the stream. - * IN assertion: there is enough room in pending_buf. - */ -#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);} - - -#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1) -/* Minimum amount of lookahead, except at the end of the input file. - * See deflate.c for comments about the MIN_MATCH+1. - */ - -#define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD) -/* In order to simplify the code, particularly on 16 bit machines, match - * distances are limited to MAX_DIST instead of WSIZE. - */ - -#define WIN_INIT MAX_MATCH -/* Number of bytes after end of data in window to initialize in order to avoid - memory checker errors from longest match routines */ - - /* in trees.c */ -void ZLIB_INTERNAL _tr_init OF((deflate_state *s)); -int ZLIB_INTERNAL _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc)); -void ZLIB_INTERNAL _tr_flush_block OF((deflate_state *s, charf *buf, - ulg stored_len, int last)); -void ZLIB_INTERNAL _tr_flush_bits OF((deflate_state *s)); -void ZLIB_INTERNAL _tr_align OF((deflate_state *s)); -void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf, - ulg stored_len, int last)); - -#define d_code(dist) \ - ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)]) -/* Mapping from a distance to a distance code. dist is the distance - 1 and - * must not have side effects. _dist_code[256] and _dist_code[257] are never - * used. - */ - -#ifndef DEBUG -/* Inline versions of _tr_tally for speed: */ - -#if defined(GEN_TREES_H) || !defined(STDC) - extern uch ZLIB_INTERNAL _length_code[]; - extern uch ZLIB_INTERNAL _dist_code[]; -#else - extern const uch ZLIB_INTERNAL _length_code[]; - extern const uch ZLIB_INTERNAL _dist_code[]; -#endif - -# define _tr_tally_lit(s, c, flush) \ - { uch cc = (c); \ - s->d_buf[s->last_lit] = 0; \ - s->l_buf[s->last_lit++] = cc; \ - s->dyn_ltree[cc].Freq++; \ - flush = (s->last_lit == s->lit_bufsize-1); \ - } -# define _tr_tally_dist(s, distance, length, flush) \ - { uch len = (length); \ - ush dist = (distance); \ - s->d_buf[s->last_lit] = dist; \ - s->l_buf[s->last_lit++] = len; \ - dist--; \ - s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \ - s->dyn_dtree[d_code(dist)].Freq++; \ - flush = (s->last_lit == s->lit_bufsize-1); \ - } -#else -# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c) -# define _tr_tally_dist(s, distance, length, flush) \ - flush = _tr_tally(s, distance, length) -#endif - -#endif /* DEFLATE_H */ diff --git a/io2d/src/3rd-party/zlib/doc/algorithm.txt b/io2d/src/3rd-party/zlib/doc/algorithm.txt deleted file mode 100644 index c97f495..0000000 --- a/io2d/src/3rd-party/zlib/doc/algorithm.txt +++ /dev/null @@ -1,209 +0,0 @@ -1. Compression algorithm (deflate) - -The deflation algorithm used by gzip (also zip and zlib) is a variation of -LZ77 (Lempel-Ziv 1977, see reference below). It finds duplicated strings in -the input data. The second occurrence of a string is replaced by a -pointer to the previous string, in the form of a pair (distance, -length). Distances are limited to 32K bytes, and lengths are limited -to 258 bytes. When a string does not occur anywhere in the previous -32K bytes, it is emitted as a sequence of literal bytes. (In this -description, `string' must be taken as an arbitrary sequence of bytes, -and is not restricted to printable characters.) - -Literals or match lengths are compressed with one Huffman tree, and -match distances are compressed with another tree. The trees are stored -in a compact form at the start of each block. The blocks can have any -size (except that the compressed data for one block must fit in -available memory). A block is terminated when deflate() determines that -it would be useful to start another block with fresh trees. (This is -somewhat similar to the behavior of LZW-based _compress_.) - -Duplicated strings are found using a hash table. All input strings of -length 3 are inserted in the hash table. A hash index is computed for -the next 3 bytes. If the hash chain for this index is not empty, all -strings in the chain are compared with the current input string, and -the longest match is selected. - -The hash chains are searched starting with the most recent strings, to -favor small distances and thus take advantage of the Huffman encoding. -The hash chains are singly linked. There are no deletions from the -hash chains, the algorithm simply discards matches that are too old. - -To avoid a worst-case situation, very long hash chains are arbitrarily -truncated at a certain length, determined by a runtime option (level -parameter of deflateInit). So deflate() does not always find the longest -possible match but generally finds a match which is long enough. - -deflate() also defers the selection of matches with a lazy evaluation -mechanism. After a match of length N has been found, deflate() searches for -a longer match at the next input byte. If a longer match is found, the -previous match is truncated to a length of one (thus producing a single -literal byte) and the process of lazy evaluation begins again. Otherwise, -the original match is kept, and the next match search is attempted only N -steps later. - -The lazy match evaluation is also subject to a runtime parameter. If -the current match is long enough, deflate() reduces the search for a longer -match, thus speeding up the whole process. If compression ratio is more -important than speed, deflate() attempts a complete second search even if -the first match is already long enough. - -The lazy match evaluation is not performed for the fastest compression -modes (level parameter 1 to 3). For these fast modes, new strings -are inserted in the hash table only when no match was found, or -when the match is not too long. This degrades the compression ratio -but saves time since there are both fewer insertions and fewer searches. - - -2. Decompression algorithm (inflate) - -2.1 Introduction - -The key question is how to represent a Huffman code (or any prefix code) so -that you can decode fast. The most important characteristic is that shorter -codes are much more common than longer codes, so pay attention to decoding the -short codes fast, and let the long codes take longer to decode. - -inflate() sets up a first level table that covers some number of bits of -input less than the length of longest code. It gets that many bits from the -stream, and looks it up in the table. The table will tell if the next -code is that many bits or less and how many, and if it is, it will tell -the value, else it will point to the next level table for which inflate() -grabs more bits and tries to decode a longer code. - -How many bits to make the first lookup is a tradeoff between the time it -takes to decode and the time it takes to build the table. If building the -table took no time (and if you had infinite memory), then there would only -be a first level table to cover all the way to the longest code. However, -building the table ends up taking a lot longer for more bits since short -codes are replicated many times in such a table. What inflate() does is -simply to make the number of bits in the first table a variable, and then -to set that variable for the maximum speed. - -For inflate, which has 286 possible codes for the literal/length tree, the size -of the first table is nine bits. Also the distance trees have 30 possible -values, and the size of the first table is six bits. Note that for each of -those cases, the table ended up one bit longer than the ``average'' code -length, i.e. the code length of an approximately flat code which would be a -little more than eight bits for 286 symbols and a little less than five bits -for 30 symbols. - - -2.2 More details on the inflate table lookup - -Ok, you want to know what this cleverly obfuscated inflate tree actually -looks like. You are correct that it's not a Huffman tree. It is simply a -lookup table for the first, let's say, nine bits of a Huffman symbol. The -symbol could be as short as one bit or as long as 15 bits. If a particular -symbol is shorter than nine bits, then that symbol's translation is duplicated -in all those entries that start with that symbol's bits. For example, if the -symbol is four bits, then it's duplicated 32 times in a nine-bit table. If a -symbol is nine bits long, it appears in the table once. - -If the symbol is longer than nine bits, then that entry in the table points -to another similar table for the remaining bits. Again, there are duplicated -entries as needed. The idea is that most of the time the symbol will be short -and there will only be one table look up. (That's whole idea behind data -compression in the first place.) For the less frequent long symbols, there -will be two lookups. If you had a compression method with really long -symbols, you could have as many levels of lookups as is efficient. For -inflate, two is enough. - -So a table entry either points to another table (in which case nine bits in -the above example are gobbled), or it contains the translation for the symbol -and the number of bits to gobble. Then you start again with the next -ungobbled bit. - -You may wonder: why not just have one lookup table for how ever many bits the -longest symbol is? The reason is that if you do that, you end up spending -more time filling in duplicate symbol entries than you do actually decoding. -At least for deflate's output that generates new trees every several 10's of -kbytes. You can imagine that filling in a 2^15 entry table for a 15-bit code -would take too long if you're only decoding several thousand symbols. At the -other extreme, you could make a new table for every bit in the code. In fact, -that's essentially a Huffman tree. But then you spend too much time -traversing the tree while decoding, even for short symbols. - -So the number of bits for the first lookup table is a trade of the time to -fill out the table vs. the time spent looking at the second level and above of -the table. - -Here is an example, scaled down: - -The code being decoded, with 10 symbols, from 1 to 6 bits long: - -A: 0 -B: 10 -C: 1100 -D: 11010 -E: 11011 -F: 11100 -G: 11101 -H: 11110 -I: 111110 -J: 111111 - -Let's make the first table three bits long (eight entries): - -000: A,1 -001: A,1 -010: A,1 -011: A,1 -100: B,2 -101: B,2 -110: -> table X (gobble 3 bits) -111: -> table Y (gobble 3 bits) - -Each entry is what the bits decode as and how many bits that is, i.e. how -many bits to gobble. Or the entry points to another table, with the number of -bits to gobble implicit in the size of the table. - -Table X is two bits long since the longest code starting with 110 is five bits -long: - -00: C,1 -01: C,1 -10: D,2 -11: E,2 - -Table Y is three bits long since the longest code starting with 111 is six -bits long: - -000: F,2 -001: F,2 -010: G,2 -011: G,2 -100: H,2 -101: H,2 -110: I,3 -111: J,3 - -So what we have here are three tables with a total of 20 entries that had to -be constructed. That's compared to 64 entries for a single table. Or -compared to 16 entries for a Huffman tree (six two entry tables and one four -entry table). Assuming that the code ideally represents the probability of -the symbols, it takes on the average 1.25 lookups per symbol. That's compared -to one lookup for the single table, or 1.66 lookups per symbol for the -Huffman tree. - -There, I think that gives you a picture of what's going on. For inflate, the -meaning of a particular symbol is often more than just a letter. It can be a -byte (a "literal"), or it can be either a length or a distance which -indicates a base value and a number of bits to fetch after the code that is -added to the base value. Or it might be the special end-of-block code. The -data structures created in inftrees.c try to encode all that information -compactly in the tables. - - -Jean-loup Gailly Mark Adler -jloup@gzip.org madler@alumni.caltech.edu - - -References: - -[LZ77] Ziv J., Lempel A., ``A Universal Algorithm for Sequential Data -Compression,'' IEEE Transactions on Information Theory, Vol. 23, No. 3, -pp. 337-343. - -``DEFLATE Compressed Data Format Specification'' available in -http://tools.ietf.org/html/rfc1951 diff --git a/io2d/src/3rd-party/zlib/doc/rfc1950.txt b/io2d/src/3rd-party/zlib/doc/rfc1950.txt deleted file mode 100644 index ce6428a..0000000 --- a/io2d/src/3rd-party/zlib/doc/rfc1950.txt +++ /dev/null @@ -1,619 +0,0 @@ - - - - - - -Network Working Group P. Deutsch -Request for Comments: 1950 Aladdin Enterprises -Category: Informational J-L. Gailly - Info-ZIP - May 1996 - - - ZLIB Compressed Data Format Specification version 3.3 - -Status of This Memo - - This memo provides information for the Internet community. This memo - does not specify an Internet standard of any kind. Distribution of - this memo is unlimited. - -IESG Note: - - The IESG takes no position on the validity of any Intellectual - Property Rights statements contained in this document. - -Notices - - Copyright (c) 1996 L. Peter Deutsch and Jean-Loup Gailly - - Permission is granted to copy and distribute this document for any - purpose and without charge, including translations into other - languages and incorporation into compilations, provided that the - copyright notice and this notice are preserved, and that any - substantive changes or deletions from the original are clearly - marked. - - A pointer to the latest version of this and related documentation in - HTML format can be found at the URL - . - -Abstract - - This specification defines a lossless compressed data format. The - data can be produced or consumed, even for an arbitrarily long - sequentially presented input data stream, using only an a priori - bounded amount of intermediate storage. The format presently uses - the DEFLATE compression method but can be easily extended to use - other compression methods. It can be implemented readily in a manner - not covered by patents. This specification also defines the ADLER-32 - checksum (an extension and improvement of the Fletcher checksum), - used for detection of data corruption, and provides an algorithm for - computing it. - - - - -Deutsch & Gailly Informational [Page 1] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - -Table of Contents - - 1. Introduction ................................................... 2 - 1.1. Purpose ................................................... 2 - 1.2. Intended audience ......................................... 3 - 1.3. Scope ..................................................... 3 - 1.4. Compliance ................................................ 3 - 1.5. Definitions of terms and conventions used ................ 3 - 1.6. Changes from previous versions ............................ 3 - 2. Detailed specification ......................................... 3 - 2.1. Overall conventions ....................................... 3 - 2.2. Data format ............................................... 4 - 2.3. Compliance ................................................ 7 - 3. References ..................................................... 7 - 4. Source code .................................................... 8 - 5. Security Considerations ........................................ 8 - 6. Acknowledgements ............................................... 8 - 7. Authors' Addresses ............................................. 8 - 8. Appendix: Rationale ............................................ 9 - 9. Appendix: Sample code ..........................................10 - -1. Introduction - - 1.1. Purpose - - The purpose of this specification is to define a lossless - compressed data format that: - - * Is independent of CPU type, operating system, file system, - and character set, and hence can be used for interchange; - - * Can be produced or consumed, even for an arbitrarily long - sequentially presented input data stream, using only an a - priori bounded amount of intermediate storage, and hence can - be used in data communications or similar structures such as - Unix filters; - - * Can use a number of different compression methods; - - * Can be implemented readily in a manner not covered by - patents, and hence can be practiced freely. - - The data format defined by this specification does not attempt to - allow random access to compressed data. - - - - - - - -Deutsch & Gailly Informational [Page 2] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - - 1.2. Intended audience - - This specification is intended for use by implementors of software - to compress data into zlib format and/or decompress data from zlib - format. - - The text of the specification assumes a basic background in - programming at the level of bits and other primitive data - representations. - - 1.3. Scope - - The specification specifies a compressed data format that can be - used for in-memory compression of a sequence of arbitrary bytes. - - 1.4. Compliance - - Unless otherwise indicated below, a compliant decompressor must be - able to accept and decompress any data set that conforms to all - the specifications presented here; a compliant compressor must - produce data sets that conform to all the specifications presented - here. - - 1.5. Definitions of terms and conventions used - - byte: 8 bits stored or transmitted as a unit (same as an octet). - (For this specification, a byte is exactly 8 bits, even on - machines which store a character on a number of bits different - from 8.) See below, for the numbering of bits within a byte. - - 1.6. Changes from previous versions - - Version 3.1 was the first public release of this specification. - In version 3.2, some terminology was changed and the Adler-32 - sample code was rewritten for clarity. In version 3.3, the - support for a preset dictionary was introduced, and the - specification was converted to RFC style. - -2. Detailed specification - - 2.1. Overall conventions - - In the diagrams below, a box like this: - - +---+ - | | <-- the vertical bars might be missing - +---+ - - - - -Deutsch & Gailly Informational [Page 3] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - - represents one byte; a box like this: - - +==============+ - | | - +==============+ - - represents a variable number of bytes. - - Bytes stored within a computer do not have a "bit order", since - they are always treated as a unit. However, a byte considered as - an integer between 0 and 255 does have a most- and least- - significant bit, and since we write numbers with the most- - significant digit on the left, we also write bytes with the most- - significant bit on the left. In the diagrams below, we number the - bits of a byte so that bit 0 is the least-significant bit, i.e., - the bits are numbered: - - +--------+ - |76543210| - +--------+ - - Within a computer, a number may occupy multiple bytes. All - multi-byte numbers in the format described here are stored with - the MOST-significant byte first (at the lower memory address). - For example, the decimal number 520 is stored as: - - 0 1 - +--------+--------+ - |00000010|00001000| - +--------+--------+ - ^ ^ - | | - | + less significant byte = 8 - + more significant byte = 2 x 256 - - 2.2. Data format - - A zlib stream has the following structure: - - 0 1 - +---+---+ - |CMF|FLG| (more-->) - +---+---+ - - - - - - - - -Deutsch & Gailly Informational [Page 4] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - - (if FLG.FDICT set) - - 0 1 2 3 - +---+---+---+---+ - | DICTID | (more-->) - +---+---+---+---+ - - +=====================+---+---+---+---+ - |...compressed data...| ADLER32 | - +=====================+---+---+---+---+ - - Any data which may appear after ADLER32 are not part of the zlib - stream. - - CMF (Compression Method and flags) - This byte is divided into a 4-bit compression method and a 4- - bit information field depending on the compression method. - - bits 0 to 3 CM Compression method - bits 4 to 7 CINFO Compression info - - CM (Compression method) - This identifies the compression method used in the file. CM = 8 - denotes the "deflate" compression method with a window size up - to 32K. This is the method used by gzip and PNG (see - references [1] and [2] in Chapter 3, below, for the reference - documents). CM = 15 is reserved. It might be used in a future - version of this specification to indicate the presence of an - extra field before the compressed data. - - CINFO (Compression info) - For CM = 8, CINFO is the base-2 logarithm of the LZ77 window - size, minus eight (CINFO=7 indicates a 32K window size). Values - of CINFO above 7 are not allowed in this version of the - specification. CINFO is not defined in this specification for - CM not equal to 8. - - FLG (FLaGs) - This flag byte is divided as follows: - - bits 0 to 4 FCHECK (check bits for CMF and FLG) - bit 5 FDICT (preset dictionary) - bits 6 to 7 FLEVEL (compression level) - - The FCHECK value must be such that CMF and FLG, when viewed as - a 16-bit unsigned integer stored in MSB order (CMF*256 + FLG), - is a multiple of 31. - - - - -Deutsch & Gailly Informational [Page 5] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - - FDICT (Preset dictionary) - If FDICT is set, a DICT dictionary identifier is present - immediately after the FLG byte. The dictionary is a sequence of - bytes which are initially fed to the compressor without - producing any compressed output. DICT is the Adler-32 checksum - of this sequence of bytes (see the definition of ADLER32 - below). The decompressor can use this identifier to determine - which dictionary has been used by the compressor. - - FLEVEL (Compression level) - These flags are available for use by specific compression - methods. The "deflate" method (CM = 8) sets these flags as - follows: - - 0 - compressor used fastest algorithm - 1 - compressor used fast algorithm - 2 - compressor used default algorithm - 3 - compressor used maximum compression, slowest algorithm - - The information in FLEVEL is not needed for decompression; it - is there to indicate if recompression might be worthwhile. - - compressed data - For compression method 8, the compressed data is stored in the - deflate compressed data format as described in the document - "DEFLATE Compressed Data Format Specification" by L. Peter - Deutsch. (See reference [3] in Chapter 3, below) - - Other compressed data formats are not specified in this version - of the zlib specification. - - ADLER32 (Adler-32 checksum) - This contains a checksum value of the uncompressed data - (excluding any dictionary data) computed according to Adler-32 - algorithm. This algorithm is a 32-bit extension and improvement - of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073 - standard. See references [4] and [5] in Chapter 3, below) - - Adler-32 is composed of two sums accumulated per byte: s1 is - the sum of all bytes, s2 is the sum of all s1 values. Both sums - are done modulo 65521. s1 is initialized to 1, s2 to zero. The - Adler-32 checksum is stored as s2*65536 + s1 in most- - significant-byte first (network) order. - - - - - - - - -Deutsch & Gailly Informational [Page 6] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - - 2.3. Compliance - - A compliant compressor must produce streams with correct CMF, FLG - and ADLER32, but need not support preset dictionaries. When the - zlib data format is used as part of another standard data format, - the compressor may use only preset dictionaries that are specified - by this other data format. If this other format does not use the - preset dictionary feature, the compressor must not set the FDICT - flag. - - A compliant decompressor must check CMF, FLG, and ADLER32, and - provide an error indication if any of these have incorrect values. - A compliant decompressor must give an error indication if CM is - not one of the values defined in this specification (only the - value 8 is permitted in this version), since another value could - indicate the presence of new features that would cause subsequent - data to be interpreted incorrectly. A compliant decompressor must - give an error indication if FDICT is set and DICTID is not the - identifier of a known preset dictionary. A decompressor may - ignore FLEVEL and still be compliant. When the zlib data format - is being used as a part of another standard format, a compliant - decompressor must support all the preset dictionaries specified by - the other format. When the other format does not use the preset - dictionary feature, a compliant decompressor must reject any - stream in which the FDICT flag is set. - -3. References - - [1] Deutsch, L.P.,"GZIP Compressed Data Format Specification", - available in ftp://ftp.uu.net/pub/archiving/zip/doc/ - - [2] Thomas Boutell, "PNG (Portable Network Graphics) specification", - available in ftp://ftp.uu.net/graphics/png/documents/ - - [3] Deutsch, L.P.,"DEFLATE Compressed Data Format Specification", - available in ftp://ftp.uu.net/pub/archiving/zip/doc/ - - [4] Fletcher, J. G., "An Arithmetic Checksum for Serial - Transmissions," IEEE Transactions on Communications, Vol. COM-30, - No. 1, January 1982, pp. 247-252. - - [5] ITU-T Recommendation X.224, Annex D, "Checksum Algorithms," - November, 1993, pp. 144, 145. (Available from - gopher://info.itu.ch). ITU-T X.244 is also the same as ISO 8073. - - - - - - - -Deutsch & Gailly Informational [Page 7] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - -4. Source code - - Source code for a C language implementation of a "zlib" compliant - library is available at ftp://ftp.uu.net/pub/archiving/zip/zlib/. - -5. Security Considerations - - A decoder that fails to check the ADLER32 checksum value may be - subject to undetected data corruption. - -6. Acknowledgements - - Trademarks cited in this document are the property of their - respective owners. - - Jean-Loup Gailly and Mark Adler designed the zlib format and wrote - the related software described in this specification. Glenn - Randers-Pehrson converted this document to RFC and HTML format. - -7. Authors' Addresses - - L. Peter Deutsch - Aladdin Enterprises - 203 Santa Margarita Ave. - Menlo Park, CA 94025 - - Phone: (415) 322-0103 (AM only) - FAX: (415) 322-1734 - EMail: - - - Jean-Loup Gailly - - EMail: - - Questions about the technical content of this specification can be - sent by email to - - Jean-Loup Gailly and - Mark Adler - - Editorial comments on this specification can be sent by email to - - L. Peter Deutsch and - Glenn Randers-Pehrson - - - - - - -Deutsch & Gailly Informational [Page 8] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - -8. Appendix: Rationale - - 8.1. Preset dictionaries - - A preset dictionary is specially useful to compress short input - sequences. The compressor can take advantage of the dictionary - context to encode the input in a more compact manner. The - decompressor can be initialized with the appropriate context by - virtually decompressing a compressed version of the dictionary - without producing any output. However for certain compression - algorithms such as the deflate algorithm this operation can be - achieved without actually performing any decompression. - - The compressor and the decompressor must use exactly the same - dictionary. The dictionary may be fixed or may be chosen among a - certain number of predefined dictionaries, according to the kind - of input data. The decompressor can determine which dictionary has - been chosen by the compressor by checking the dictionary - identifier. This document does not specify the contents of - predefined dictionaries, since the optimal dictionaries are - application specific. Standard data formats using this feature of - the zlib specification must precisely define the allowed - dictionaries. - - 8.2. The Adler-32 algorithm - - The Adler-32 algorithm is much faster than the CRC32 algorithm yet - still provides an extremely low probability of undetected errors. - - The modulo on unsigned long accumulators can be delayed for 5552 - bytes, so the modulo operation time is negligible. If the bytes - are a, b, c, the second sum is 3a + 2b + c + 3, and so is position - and order sensitive, unlike the first sum, which is just a - checksum. That 65521 is prime is important to avoid a possible - large class of two-byte errors that leave the check unchanged. - (The Fletcher checksum uses 255, which is not prime and which also - makes the Fletcher check insensitive to single byte changes 0 <-> - 255.) - - The sum s1 is initialized to 1 instead of zero to make the length - of the sequence part of s2, so that the length does not have to be - checked separately. (Any sequence of zeroes has a Fletcher - checksum of zero.) - - - - - - - - -Deutsch & Gailly Informational [Page 9] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - -9. Appendix: Sample code - - The following C code computes the Adler-32 checksum of a data buffer. - It is written for clarity, not for speed. The sample code is in the - ANSI C programming language. Non C users may find it easier to read - with these hints: - - & Bitwise AND operator. - >> Bitwise right shift operator. When applied to an - unsigned quantity, as here, right shift inserts zero bit(s) - at the left. - << Bitwise left shift operator. Left shift inserts zero - bit(s) at the right. - ++ "n++" increments the variable n. - % modulo operator: a % b is the remainder of a divided by b. - - #define BASE 65521 /* largest prime smaller than 65536 */ - - /* - Update a running Adler-32 checksum with the bytes buf[0..len-1] - and return the updated checksum. The Adler-32 checksum should be - initialized to 1. - - Usage example: - - unsigned long adler = 1L; - - while (read_buffer(buffer, length) != EOF) { - adler = update_adler32(adler, buffer, length); - } - if (adler != original_adler) error(); - */ - unsigned long update_adler32(unsigned long adler, - unsigned char *buf, int len) - { - unsigned long s1 = adler & 0xffff; - unsigned long s2 = (adler >> 16) & 0xffff; - int n; - - for (n = 0; n < len; n++) { - s1 = (s1 + buf[n]) % BASE; - s2 = (s2 + s1) % BASE; - } - return (s2 << 16) + s1; - } - - /* Return the adler32 of the bytes buf[0..len-1] */ - - - - -Deutsch & Gailly Informational [Page 10] - -RFC 1950 ZLIB Compressed Data Format Specification May 1996 - - - unsigned long adler32(unsigned char *buf, int len) - { - return update_adler32(1L, buf, len); - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Deutsch & Gailly Informational [Page 11] - diff --git a/io2d/src/3rd-party/zlib/doc/rfc1951.txt b/io2d/src/3rd-party/zlib/doc/rfc1951.txt deleted file mode 100644 index 403c8c7..0000000 --- a/io2d/src/3rd-party/zlib/doc/rfc1951.txt +++ /dev/null @@ -1,955 +0,0 @@ - - - - - - -Network Working Group P. Deutsch -Request for Comments: 1951 Aladdin Enterprises -Category: Informational May 1996 - - - DEFLATE Compressed Data Format Specification version 1.3 - -Status of This Memo - - This memo provides information for the Internet community. This memo - does not specify an Internet standard of any kind. Distribution of - this memo is unlimited. - -IESG Note: - - The IESG takes no position on the validity of any Intellectual - Property Rights statements contained in this document. - -Notices - - Copyright (c) 1996 L. Peter Deutsch - - Permission is granted to copy and distribute this document for any - purpose and without charge, including translations into other - languages and incorporation into compilations, provided that the - copyright notice and this notice are preserved, and that any - substantive changes or deletions from the original are clearly - marked. - - A pointer to the latest version of this and related documentation in - HTML format can be found at the URL - . - -Abstract - - This specification defines a lossless compressed data format that - compresses data using a combination of the LZ77 algorithm and Huffman - coding, with efficiency comparable to the best currently available - general-purpose compression methods. The data can be produced or - consumed, even for an arbitrarily long sequentially presented input - data stream, using only an a priori bounded amount of intermediate - storage. The format can be implemented readily in a manner not - covered by patents. - - - - - - - - -Deutsch Informational [Page 1] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - -Table of Contents - - 1. Introduction ................................................... 2 - 1.1. Purpose ................................................... 2 - 1.2. Intended audience ......................................... 3 - 1.3. Scope ..................................................... 3 - 1.4. Compliance ................................................ 3 - 1.5. Definitions of terms and conventions used ................ 3 - 1.6. Changes from previous versions ............................ 4 - 2. Compressed representation overview ............................. 4 - 3. Detailed specification ......................................... 5 - 3.1. Overall conventions ....................................... 5 - 3.1.1. Packing into bytes .................................. 5 - 3.2. Compressed block format ................................... 6 - 3.2.1. Synopsis of prefix and Huffman coding ............... 6 - 3.2.2. Use of Huffman coding in the "deflate" format ....... 7 - 3.2.3. Details of block format ............................. 9 - 3.2.4. Non-compressed blocks (BTYPE=00) ................... 11 - 3.2.5. Compressed blocks (length and distance codes) ...... 11 - 3.2.6. Compression with fixed Huffman codes (BTYPE=01) .... 12 - 3.2.7. Compression with dynamic Huffman codes (BTYPE=10) .. 13 - 3.3. Compliance ............................................... 14 - 4. Compression algorithm details ................................. 14 - 5. References .................................................... 16 - 6. Security Considerations ....................................... 16 - 7. Source code ................................................... 16 - 8. Acknowledgements .............................................. 16 - 9. Author's Address .............................................. 17 - -1. Introduction - - 1.1. Purpose - - The purpose of this specification is to define a lossless - compressed data format that: - * Is independent of CPU type, operating system, file system, - and character set, and hence can be used for interchange; - * Can be produced or consumed, even for an arbitrarily long - sequentially presented input data stream, using only an a - priori bounded amount of intermediate storage, and hence - can be used in data communications or similar structures - such as Unix filters; - * Compresses data with efficiency comparable to the best - currently available general-purpose compression methods, - and in particular considerably better than the "compress" - program; - * Can be implemented readily in a manner not covered by - patents, and hence can be practiced freely; - - - -Deutsch Informational [Page 2] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - * Is compatible with the file format produced by the current - widely used gzip utility, in that conforming decompressors - will be able to read data produced by the existing gzip - compressor. - - The data format defined by this specification does not attempt to: - - * Allow random access to compressed data; - * Compress specialized data (e.g., raster graphics) as well - as the best currently available specialized algorithms. - - A simple counting argument shows that no lossless compression - algorithm can compress every possible input data set. For the - format defined here, the worst case expansion is 5 bytes per 32K- - byte block, i.e., a size increase of 0.015% for large data sets. - English text usually compresses by a factor of 2.5 to 3; - executable files usually compress somewhat less; graphical data - such as raster images may compress much more. - - 1.2. Intended audience - - This specification is intended for use by implementors of software - to compress data into "deflate" format and/or decompress data from - "deflate" format. - - The text of the specification assumes a basic background in - programming at the level of bits and other primitive data - representations. Familiarity with the technique of Huffman coding - is helpful but not required. - - 1.3. Scope - - The specification specifies a method for representing a sequence - of bytes as a (usually shorter) sequence of bits, and a method for - packing the latter bit sequence into bytes. - - 1.4. Compliance - - Unless otherwise indicated below, a compliant decompressor must be - able to accept and decompress any data set that conforms to all - the specifications presented here; a compliant compressor must - produce data sets that conform to all the specifications presented - here. - - 1.5. Definitions of terms and conventions used - - Byte: 8 bits stored or transmitted as a unit (same as an octet). - For this specification, a byte is exactly 8 bits, even on machines - - - -Deutsch Informational [Page 3] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - which store a character on a number of bits different from eight. - See below, for the numbering of bits within a byte. - - String: a sequence of arbitrary bytes. - - 1.6. Changes from previous versions - - There have been no technical changes to the deflate format since - version 1.1 of this specification. In version 1.2, some - terminology was changed. Version 1.3 is a conversion of the - specification to RFC style. - -2. Compressed representation overview - - A compressed data set consists of a series of blocks, corresponding - to successive blocks of input data. The block sizes are arbitrary, - except that non-compressible blocks are limited to 65,535 bytes. - - Each block is compressed using a combination of the LZ77 algorithm - and Huffman coding. The Huffman trees for each block are independent - of those for previous or subsequent blocks; the LZ77 algorithm may - use a reference to a duplicated string occurring in a previous block, - up to 32K input bytes before. - - Each block consists of two parts: a pair of Huffman code trees that - describe the representation of the compressed data part, and a - compressed data part. (The Huffman trees themselves are compressed - using Huffman encoding.) The compressed data consists of a series of - elements of two types: literal bytes (of strings that have not been - detected as duplicated within the previous 32K input bytes), and - pointers to duplicated strings, where a pointer is represented as a - pair . The representation used in the - "deflate" format limits distances to 32K bytes and lengths to 258 - bytes, but does not limit the size of a block, except for - uncompressible blocks, which are limited as noted above. - - Each type of value (literals, distances, and lengths) in the - compressed data is represented using a Huffman code, using one code - tree for literals and lengths and a separate code tree for distances. - The code trees for each block appear in a compact form just before - the compressed data for that block. - - - - - - - - - - -Deutsch Informational [Page 4] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - -3. Detailed specification - - 3.1. Overall conventions In the diagrams below, a box like this: - - +---+ - | | <-- the vertical bars might be missing - +---+ - - represents one byte; a box like this: - - +==============+ - | | - +==============+ - - represents a variable number of bytes. - - Bytes stored within a computer do not have a "bit order", since - they are always treated as a unit. However, a byte considered as - an integer between 0 and 255 does have a most- and least- - significant bit, and since we write numbers with the most- - significant digit on the left, we also write bytes with the most- - significant bit on the left. In the diagrams below, we number the - bits of a byte so that bit 0 is the least-significant bit, i.e., - the bits are numbered: - - +--------+ - |76543210| - +--------+ - - Within a computer, a number may occupy multiple bytes. All - multi-byte numbers in the format described here are stored with - the least-significant byte first (at the lower memory address). - For example, the decimal number 520 is stored as: - - 0 1 - +--------+--------+ - |00001000|00000010| - +--------+--------+ - ^ ^ - | | - | + more significant byte = 2 x 256 - + less significant byte = 8 - - 3.1.1. Packing into bytes - - This document does not address the issue of the order in which - bits of a byte are transmitted on a bit-sequential medium, - since the final data format described here is byte- rather than - - - -Deutsch Informational [Page 5] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - bit-oriented. However, we describe the compressed block format - in below, as a sequence of data elements of various bit - lengths, not a sequence of bytes. We must therefore specify - how to pack these data elements into bytes to form the final - compressed byte sequence: - - * Data elements are packed into bytes in order of - increasing bit number within the byte, i.e., starting - with the least-significant bit of the byte. - * Data elements other than Huffman codes are packed - starting with the least-significant bit of the data - element. - * Huffman codes are packed starting with the most- - significant bit of the code. - - In other words, if one were to print out the compressed data as - a sequence of bytes, starting with the first byte at the - *right* margin and proceeding to the *left*, with the most- - significant bit of each byte on the left as usual, one would be - able to parse the result from right to left, with fixed-width - elements in the correct MSB-to-LSB order and Huffman codes in - bit-reversed order (i.e., with the first bit of the code in the - relative LSB position). - - 3.2. Compressed block format - - 3.2.1. Synopsis of prefix and Huffman coding - - Prefix coding represents symbols from an a priori known - alphabet by bit sequences (codes), one code for each symbol, in - a manner such that different symbols may be represented by bit - sequences of different lengths, but a parser can always parse - an encoded string unambiguously symbol-by-symbol. - - We define a prefix code in terms of a binary tree in which the - two edges descending from each non-leaf node are labeled 0 and - 1 and in which the leaf nodes correspond one-for-one with (are - labeled with) the symbols of the alphabet; then the code for a - symbol is the sequence of 0's and 1's on the edges leading from - the root to the leaf labeled with that symbol. For example: - - - - - - - - - - - -Deutsch Informational [Page 6] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - /\ Symbol Code - 0 1 ------ ---- - / \ A 00 - /\ B B 1 - 0 1 C 011 - / \ D 010 - A /\ - 0 1 - / \ - D C - - A parser can decode the next symbol from an encoded input - stream by walking down the tree from the root, at each step - choosing the edge corresponding to the next input bit. - - Given an alphabet with known symbol frequencies, the Huffman - algorithm allows the construction of an optimal prefix code - (one which represents strings with those symbol frequencies - using the fewest bits of any possible prefix codes for that - alphabet). Such a code is called a Huffman code. (See - reference [1] in Chapter 5, references for additional - information on Huffman codes.) - - Note that in the "deflate" format, the Huffman codes for the - various alphabets must not exceed certain maximum code lengths. - This constraint complicates the algorithm for computing code - lengths from symbol frequencies. Again, see Chapter 5, - references for details. - - 3.2.2. Use of Huffman coding in the "deflate" format - - The Huffman codes used for each alphabet in the "deflate" - format have two additional rules: - - * All codes of a given bit length have lexicographically - consecutive values, in the same order as the symbols - they represent; - - * Shorter codes lexicographically precede longer codes. - - - - - - - - - - - - -Deutsch Informational [Page 7] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - We could recode the example above to follow this rule as - follows, assuming that the order of the alphabet is ABCD: - - Symbol Code - ------ ---- - A 10 - B 0 - C 110 - D 111 - - I.e., 0 precedes 10 which precedes 11x, and 110 and 111 are - lexicographically consecutive. - - Given this rule, we can define the Huffman code for an alphabet - just by giving the bit lengths of the codes for each symbol of - the alphabet in order; this is sufficient to determine the - actual codes. In our example, the code is completely defined - by the sequence of bit lengths (2, 1, 3, 3). The following - algorithm generates the codes as integers, intended to be read - from most- to least-significant bit. The code lengths are - initially in tree[I].Len; the codes are produced in - tree[I].Code. - - 1) Count the number of codes for each code length. Let - bl_count[N] be the number of codes of length N, N >= 1. - - 2) Find the numerical value of the smallest code for each - code length: - - code = 0; - bl_count[0] = 0; - for (bits = 1; bits <= MAX_BITS; bits++) { - code = (code + bl_count[bits-1]) << 1; - next_code[bits] = code; - } - - 3) Assign numerical values to all codes, using consecutive - values for all codes of the same length with the base - values determined at step 2. Codes that are never used - (which have a bit length of zero) must not be assigned a - value. - - for (n = 0; n <= max_code; n++) { - len = tree[n].Len; - if (len != 0) { - tree[n].Code = next_code[len]; - next_code[len]++; - } - - - -Deutsch Informational [Page 8] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - } - - Example: - - Consider the alphabet ABCDEFGH, with bit lengths (3, 3, 3, 3, - 3, 2, 4, 4). After step 1, we have: - - N bl_count[N] - - ----------- - 2 1 - 3 5 - 4 2 - - Step 2 computes the following next_code values: - - N next_code[N] - - ------------ - 1 0 - 2 0 - 3 2 - 4 14 - - Step 3 produces the following code values: - - Symbol Length Code - ------ ------ ---- - A 3 010 - B 3 011 - C 3 100 - D 3 101 - E 3 110 - F 2 00 - G 4 1110 - H 4 1111 - - 3.2.3. Details of block format - - Each block of compressed data begins with 3 header bits - containing the following data: - - first bit BFINAL - next 2 bits BTYPE - - Note that the header bits do not necessarily begin on a byte - boundary, since a block does not necessarily occupy an integral - number of bytes. - - - - - -Deutsch Informational [Page 9] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - BFINAL is set if and only if this is the last block of the data - set. - - BTYPE specifies how the data are compressed, as follows: - - 00 - no compression - 01 - compressed with fixed Huffman codes - 10 - compressed with dynamic Huffman codes - 11 - reserved (error) - - The only difference between the two compressed cases is how the - Huffman codes for the literal/length and distance alphabets are - defined. - - In all cases, the decoding algorithm for the actual data is as - follows: - - do - read block header from input stream. - if stored with no compression - skip any remaining bits in current partially - processed byte - read LEN and NLEN (see next section) - copy LEN bytes of data to output - otherwise - if compressed with dynamic Huffman codes - read representation of code trees (see - subsection below) - loop (until end of block code recognized) - decode literal/length value from input stream - if value < 256 - copy value (literal byte) to output stream - otherwise - if value = end of block (256) - break from loop - otherwise (value = 257..285) - decode distance from input stream - - move backwards distance bytes in the output - stream, and copy length bytes from this - position to the output stream. - end loop - while not last block - - Note that a duplicated string reference may refer to a string - in a previous block; i.e., the backward distance may cross one - or more block boundaries. However a distance cannot refer past - the beginning of the output stream. (An application using a - - - -Deutsch Informational [Page 10] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - preset dictionary might discard part of the output stream; a - distance can refer to that part of the output stream anyway) - Note also that the referenced string may overlap the current - position; for example, if the last 2 bytes decoded have values - X and Y, a string reference with - adds X,Y,X,Y,X to the output stream. - - We now specify each compression method in turn. - - 3.2.4. Non-compressed blocks (BTYPE=00) - - Any bits of input up to the next byte boundary are ignored. - The rest of the block consists of the following information: - - 0 1 2 3 4... - +---+---+---+---+================================+ - | LEN | NLEN |... LEN bytes of literal data...| - +---+---+---+---+================================+ - - LEN is the number of data bytes in the block. NLEN is the - one's complement of LEN. - - 3.2.5. Compressed blocks (length and distance codes) - - As noted above, encoded data blocks in the "deflate" format - consist of sequences of symbols drawn from three conceptually - distinct alphabets: either literal bytes, from the alphabet of - byte values (0..255), or pairs, - where the length is drawn from (3..258) and the distance is - drawn from (1..32,768). In fact, the literal and length - alphabets are merged into a single alphabet (0..285), where - values 0..255 represent literal bytes, the value 256 indicates - end-of-block, and values 257..285 represent length codes - (possibly in conjunction with extra bits following the symbol - code) as follows: - - - - - - - - - - - - - - - - -Deutsch Informational [Page 11] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - Extra Extra Extra - Code Bits Length(s) Code Bits Lengths Code Bits Length(s) - ---- ---- ------ ---- ---- ------- ---- ---- ------- - 257 0 3 267 1 15,16 277 4 67-82 - 258 0 4 268 1 17,18 278 4 83-98 - 259 0 5 269 2 19-22 279 4 99-114 - 260 0 6 270 2 23-26 280 4 115-130 - 261 0 7 271 2 27-30 281 5 131-162 - 262 0 8 272 2 31-34 282 5 163-194 - 263 0 9 273 3 35-42 283 5 195-226 - 264 0 10 274 3 43-50 284 5 227-257 - 265 1 11,12 275 3 51-58 285 0 258 - 266 1 13,14 276 3 59-66 - - The extra bits should be interpreted as a machine integer - stored with the most-significant bit first, e.g., bits 1110 - represent the value 14. - - Extra Extra Extra - Code Bits Dist Code Bits Dist Code Bits Distance - ---- ---- ---- ---- ---- ------ ---- ---- -------- - 0 0 1 10 4 33-48 20 9 1025-1536 - 1 0 2 11 4 49-64 21 9 1537-2048 - 2 0 3 12 5 65-96 22 10 2049-3072 - 3 0 4 13 5 97-128 23 10 3073-4096 - 4 1 5,6 14 6 129-192 24 11 4097-6144 - 5 1 7,8 15 6 193-256 25 11 6145-8192 - 6 2 9-12 16 7 257-384 26 12 8193-12288 - 7 2 13-16 17 7 385-512 27 12 12289-16384 - 8 3 17-24 18 8 513-768 28 13 16385-24576 - 9 3 25-32 19 8 769-1024 29 13 24577-32768 - - 3.2.6. Compression with fixed Huffman codes (BTYPE=01) - - The Huffman codes for the two alphabets are fixed, and are not - represented explicitly in the data. The Huffman code lengths - for the literal/length alphabet are: - - Lit Value Bits Codes - --------- ---- ----- - 0 - 143 8 00110000 through - 10111111 - 144 - 255 9 110010000 through - 111111111 - 256 - 279 7 0000000 through - 0010111 - 280 - 287 8 11000000 through - 11000111 - - - -Deutsch Informational [Page 12] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - The code lengths are sufficient to generate the actual codes, - as described above; we show the codes in the table for added - clarity. Literal/length values 286-287 will never actually - occur in the compressed data, but participate in the code - construction. - - Distance codes 0-31 are represented by (fixed-length) 5-bit - codes, with possible additional bits as shown in the table - shown in Paragraph 3.2.5, above. Note that distance codes 30- - 31 will never actually occur in the compressed data. - - 3.2.7. Compression with dynamic Huffman codes (BTYPE=10) - - The Huffman codes for the two alphabets appear in the block - immediately after the header bits and before the actual - compressed data, first the literal/length code and then the - distance code. Each code is defined by a sequence of code - lengths, as discussed in Paragraph 3.2.2, above. For even - greater compactness, the code length sequences themselves are - compressed using a Huffman code. The alphabet for code lengths - is as follows: - - 0 - 15: Represent code lengths of 0 - 15 - 16: Copy the previous code length 3 - 6 times. - The next 2 bits indicate repeat length - (0 = 3, ... , 3 = 6) - Example: Codes 8, 16 (+2 bits 11), - 16 (+2 bits 10) will expand to - 12 code lengths of 8 (1 + 6 + 5) - 17: Repeat a code length of 0 for 3 - 10 times. - (3 bits of length) - 18: Repeat a code length of 0 for 11 - 138 times - (7 bits of length) - - A code length of 0 indicates that the corresponding symbol in - the literal/length or distance alphabet will not occur in the - block, and should not participate in the Huffman code - construction algorithm given earlier. If only one distance - code is used, it is encoded using one bit, not zero bits; in - this case there is a single code length of one, with one unused - code. One distance code of zero bits means that there are no - distance codes used at all (the data is all literals). - - We can now define the format of the block: - - 5 Bits: HLIT, # of Literal/Length codes - 257 (257 - 286) - 5 Bits: HDIST, # of Distance codes - 1 (1 - 32) - 4 Bits: HCLEN, # of Code Length codes - 4 (4 - 19) - - - -Deutsch Informational [Page 13] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - (HCLEN + 4) x 3 bits: code lengths for the code length - alphabet given just above, in the order: 16, 17, 18, - 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 - - These code lengths are interpreted as 3-bit integers - (0-7); as above, a code length of 0 means the - corresponding symbol (literal/length or distance code - length) is not used. - - HLIT + 257 code lengths for the literal/length alphabet, - encoded using the code length Huffman code - - HDIST + 1 code lengths for the distance alphabet, - encoded using the code length Huffman code - - The actual compressed data of the block, - encoded using the literal/length and distance Huffman - codes - - The literal/length symbol 256 (end of data), - encoded using the literal/length Huffman code - - The code length repeat codes can cross from HLIT + 257 to the - HDIST + 1 code lengths. In other words, all code lengths form - a single sequence of HLIT + HDIST + 258 values. - - 3.3. Compliance - - A compressor may limit further the ranges of values specified in - the previous section and still be compliant; for example, it may - limit the range of backward pointers to some value smaller than - 32K. Similarly, a compressor may limit the size of blocks so that - a compressible block fits in memory. - - A compliant decompressor must accept the full range of possible - values defined in the previous section, and must accept blocks of - arbitrary size. - -4. Compression algorithm details - - While it is the intent of this document to define the "deflate" - compressed data format without reference to any particular - compression algorithm, the format is related to the compressed - formats produced by LZ77 (Lempel-Ziv 1977, see reference [2] below); - since many variations of LZ77 are patented, it is strongly - recommended that the implementor of a compressor follow the general - algorithm presented here, which is known not to be patented per se. - The material in this section is not part of the definition of the - - - -Deutsch Informational [Page 14] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - - specification per se, and a compressor need not follow it in order to - be compliant. - - The compressor terminates a block when it determines that starting a - new block with fresh trees would be useful, or when the block size - fills up the compressor's block buffer. - - The compressor uses a chained hash table to find duplicated strings, - using a hash function that operates on 3-byte sequences. At any - given point during compression, let XYZ be the next 3 input bytes to - be examined (not necessarily all different, of course). First, the - compressor examines the hash chain for XYZ. If the chain is empty, - the compressor simply writes out X as a literal byte and advances one - byte in the input. If the hash chain is not empty, indicating that - the sequence XYZ (or, if we are unlucky, some other 3 bytes with the - same hash function value) has occurred recently, the compressor - compares all strings on the XYZ hash chain with the actual input data - sequence starting at the current point, and selects the longest - match. - - The compressor searches the hash chains starting with the most recent - strings, to favor small distances and thus take advantage of the - Huffman encoding. The hash chains are singly linked. There are no - deletions from the hash chains; the algorithm simply discards matches - that are too old. To avoid a worst-case situation, very long hash - chains are arbitrarily truncated at a certain length, determined by a - run-time parameter. - - To improve overall compression, the compressor optionally defers the - selection of matches ("lazy matching"): after a match of length N has - been found, the compressor searches for a longer match starting at - the next input byte. If it finds a longer match, it truncates the - previous match to a length of one (thus producing a single literal - byte) and then emits the longer match. Otherwise, it emits the - original match, and, as described above, advances N bytes before - continuing. - - Run-time parameters also control this "lazy match" procedure. If - compression ratio is most important, the compressor attempts a - complete second search regardless of the length of the first match. - In the normal case, if the current match is "long enough", the - compressor reduces the search for a longer match, thus speeding up - the process. If speed is most important, the compressor inserts new - strings in the hash table only when no match was found, or when the - match is not "too long". This degrades the compression ratio but - saves time since there are both fewer insertions and fewer searches. - - - - - -Deutsch Informational [Page 15] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - -5. References - - [1] Huffman, D. A., "A Method for the Construction of Minimum - Redundancy Codes", Proceedings of the Institute of Radio - Engineers, September 1952, Volume 40, Number 9, pp. 1098-1101. - - [2] Ziv J., Lempel A., "A Universal Algorithm for Sequential Data - Compression", IEEE Transactions on Information Theory, Vol. 23, - No. 3, pp. 337-343. - - [3] Gailly, J.-L., and Adler, M., ZLIB documentation and sources, - available in ftp://ftp.uu.net/pub/archiving/zip/doc/ - - [4] Gailly, J.-L., and Adler, M., GZIP documentation and sources, - available as gzip-*.tar in ftp://prep.ai.mit.edu/pub/gnu/ - - [5] Schwartz, E. S., and Kallick, B. "Generating a canonical prefix - encoding." Comm. ACM, 7,3 (Mar. 1964), pp. 166-169. - - [6] Hirschberg and Lelewer, "Efficient decoding of prefix codes," - Comm. ACM, 33,4, April 1990, pp. 449-459. - -6. Security Considerations - - Any data compression method involves the reduction of redundancy in - the data. Consequently, any corruption of the data is likely to have - severe effects and be difficult to correct. Uncompressed text, on - the other hand, will probably still be readable despite the presence - of some corrupted bytes. - - It is recommended that systems using this data format provide some - means of validating the integrity of the compressed data. See - reference [3], for example. - -7. Source code - - Source code for a C language implementation of a "deflate" compliant - compressor and decompressor is available within the zlib package at - ftp://ftp.uu.net/pub/archiving/zip/zlib/. - -8. Acknowledgements - - Trademarks cited in this document are the property of their - respective owners. - - Phil Katz designed the deflate format. Jean-Loup Gailly and Mark - Adler wrote the related software described in this specification. - Glenn Randers-Pehrson converted this document to RFC and HTML format. - - - -Deutsch Informational [Page 16] - -RFC 1951 DEFLATE Compressed Data Format Specification May 1996 - - -9. Author's Address - - L. Peter Deutsch - Aladdin Enterprises - 203 Santa Margarita Ave. - Menlo Park, CA 94025 - - Phone: (415) 322-0103 (AM only) - FAX: (415) 322-1734 - EMail: - - Questions about the technical content of this specification can be - sent by email to: - - Jean-Loup Gailly and - Mark Adler - - Editorial comments on this specification can be sent by email to: - - L. Peter Deutsch and - Glenn Randers-Pehrson - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Deutsch Informational [Page 17] - diff --git a/io2d/src/3rd-party/zlib/doc/rfc1952.txt b/io2d/src/3rd-party/zlib/doc/rfc1952.txt deleted file mode 100644 index a8e51b4..0000000 --- a/io2d/src/3rd-party/zlib/doc/rfc1952.txt +++ /dev/null @@ -1,675 +0,0 @@ - - - - - - -Network Working Group P. Deutsch -Request for Comments: 1952 Aladdin Enterprises -Category: Informational May 1996 - - - GZIP file format specification version 4.3 - -Status of This Memo - - This memo provides information for the Internet community. This memo - does not specify an Internet standard of any kind. Distribution of - this memo is unlimited. - -IESG Note: - - The IESG takes no position on the validity of any Intellectual - Property Rights statements contained in this document. - -Notices - - Copyright (c) 1996 L. Peter Deutsch - - Permission is granted to copy and distribute this document for any - purpose and without charge, including translations into other - languages and incorporation into compilations, provided that the - copyright notice and this notice are preserved, and that any - substantive changes or deletions from the original are clearly - marked. - - A pointer to the latest version of this and related documentation in - HTML format can be found at the URL - . - -Abstract - - This specification defines a lossless compressed data format that is - compatible with the widely used GZIP utility. The format includes a - cyclic redundancy check value for detecting data corruption. The - format presently uses the DEFLATE method of compression but can be - easily extended to use other compression methods. The format can be - implemented readily in a manner not covered by patents. - - - - - - - - - - -Deutsch Informational [Page 1] - -RFC 1952 GZIP File Format Specification May 1996 - - -Table of Contents - - 1. Introduction ................................................... 2 - 1.1. Purpose ................................................... 2 - 1.2. Intended audience ......................................... 3 - 1.3. Scope ..................................................... 3 - 1.4. Compliance ................................................ 3 - 1.5. Definitions of terms and conventions used ................. 3 - 1.6. Changes from previous versions ............................ 3 - 2. Detailed specification ......................................... 4 - 2.1. Overall conventions ....................................... 4 - 2.2. File format ............................................... 5 - 2.3. Member format ............................................. 5 - 2.3.1. Member header and trailer ........................... 6 - 2.3.1.1. Extra field ................................... 8 - 2.3.1.2. Compliance .................................... 9 - 3. References .................................................. 9 - 4. Security Considerations .................................... 10 - 5. Acknowledgements ........................................... 10 - 6. Author's Address ........................................... 10 - 7. Appendix: Jean-Loup Gailly's gzip utility .................. 11 - 8. Appendix: Sample CRC Code .................................. 11 - -1. Introduction - - 1.1. Purpose - - The purpose of this specification is to define a lossless - compressed data format that: - - * Is independent of CPU type, operating system, file system, - and character set, and hence can be used for interchange; - * Can compress or decompress a data stream (as opposed to a - randomly accessible file) to produce another data stream, - using only an a priori bounded amount of intermediate - storage, and hence can be used in data communications or - similar structures such as Unix filters; - * Compresses data with efficiency comparable to the best - currently available general-purpose compression methods, - and in particular considerably better than the "compress" - program; - * Can be implemented readily in a manner not covered by - patents, and hence can be practiced freely; - * Is compatible with the file format produced by the current - widely used gzip utility, in that conforming decompressors - will be able to read data produced by the existing gzip - compressor. - - - - -Deutsch Informational [Page 2] - -RFC 1952 GZIP File Format Specification May 1996 - - - The data format defined by this specification does not attempt to: - - * Provide random access to compressed data; - * Compress specialized data (e.g., raster graphics) as well as - the best currently available specialized algorithms. - - 1.2. Intended audience - - This specification is intended for use by implementors of software - to compress data into gzip format and/or decompress data from gzip - format. - - The text of the specification assumes a basic background in - programming at the level of bits and other primitive data - representations. - - 1.3. Scope - - The specification specifies a compression method and a file format - (the latter assuming only that a file can store a sequence of - arbitrary bytes). It does not specify any particular interface to - a file system or anything about character sets or encodings - (except for file names and comments, which are optional). - - 1.4. Compliance - - Unless otherwise indicated below, a compliant decompressor must be - able to accept and decompress any file that conforms to all the - specifications presented here; a compliant compressor must produce - files that conform to all the specifications presented here. The - material in the appendices is not part of the specification per se - and is not relevant to compliance. - - 1.5. Definitions of terms and conventions used - - byte: 8 bits stored or transmitted as a unit (same as an octet). - (For this specification, a byte is exactly 8 bits, even on - machines which store a character on a number of bits different - from 8.) See below for the numbering of bits within a byte. - - 1.6. Changes from previous versions - - There have been no technical changes to the gzip format since - version 4.1 of this specification. In version 4.2, some - terminology was changed, and the sample CRC code was rewritten for - clarity and to eliminate the requirement for the caller to do pre- - and post-conditioning. Version 4.3 is a conversion of the - specification to RFC style. - - - -Deutsch Informational [Page 3] - -RFC 1952 GZIP File Format Specification May 1996 - - -2. Detailed specification - - 2.1. Overall conventions - - In the diagrams below, a box like this: - - +---+ - | | <-- the vertical bars might be missing - +---+ - - represents one byte; a box like this: - - +==============+ - | | - +==============+ - - represents a variable number of bytes. - - Bytes stored within a computer do not have a "bit order", since - they are always treated as a unit. However, a byte considered as - an integer between 0 and 255 does have a most- and least- - significant bit, and since we write numbers with the most- - significant digit on the left, we also write bytes with the most- - significant bit on the left. In the diagrams below, we number the - bits of a byte so that bit 0 is the least-significant bit, i.e., - the bits are numbered: - - +--------+ - |76543210| - +--------+ - - This document does not address the issue of the order in which - bits of a byte are transmitted on a bit-sequential medium, since - the data format described here is byte- rather than bit-oriented. - - Within a computer, a number may occupy multiple bytes. All - multi-byte numbers in the format described here are stored with - the least-significant byte first (at the lower memory address). - For example, the decimal number 520 is stored as: - - 0 1 - +--------+--------+ - |00001000|00000010| - +--------+--------+ - ^ ^ - | | - | + more significant byte = 2 x 256 - + less significant byte = 8 - - - -Deutsch Informational [Page 4] - -RFC 1952 GZIP File Format Specification May 1996 - - - 2.2. File format - - A gzip file consists of a series of "members" (compressed data - sets). The format of each member is specified in the following - section. The members simply appear one after another in the file, - with no additional information before, between, or after them. - - 2.3. Member format - - Each member has the following structure: - - +---+---+---+---+---+---+---+---+---+---+ - |ID1|ID2|CM |FLG| MTIME |XFL|OS | (more-->) - +---+---+---+---+---+---+---+---+---+---+ - - (if FLG.FEXTRA set) - - +---+---+=================================+ - | XLEN |...XLEN bytes of "extra field"...| (more-->) - +---+---+=================================+ - - (if FLG.FNAME set) - - +=========================================+ - |...original file name, zero-terminated...| (more-->) - +=========================================+ - - (if FLG.FCOMMENT set) - - +===================================+ - |...file comment, zero-terminated...| (more-->) - +===================================+ - - (if FLG.FHCRC set) - - +---+---+ - | CRC16 | - +---+---+ - - +=======================+ - |...compressed blocks...| (more-->) - +=======================+ - - 0 1 2 3 4 5 6 7 - +---+---+---+---+---+---+---+---+ - | CRC32 | ISIZE | - +---+---+---+---+---+---+---+---+ - - - - -Deutsch Informational [Page 5] - -RFC 1952 GZIP File Format Specification May 1996 - - - 2.3.1. Member header and trailer - - ID1 (IDentification 1) - ID2 (IDentification 2) - These have the fixed values ID1 = 31 (0x1f, \037), ID2 = 139 - (0x8b, \213), to identify the file as being in gzip format. - - CM (Compression Method) - This identifies the compression method used in the file. CM - = 0-7 are reserved. CM = 8 denotes the "deflate" - compression method, which is the one customarily used by - gzip and which is documented elsewhere. - - FLG (FLaGs) - This flag byte is divided into individual bits as follows: - - bit 0 FTEXT - bit 1 FHCRC - bit 2 FEXTRA - bit 3 FNAME - bit 4 FCOMMENT - bit 5 reserved - bit 6 reserved - bit 7 reserved - - If FTEXT is set, the file is probably ASCII text. This is - an optional indication, which the compressor may set by - checking a small amount of the input data to see whether any - non-ASCII characters are present. In case of doubt, FTEXT - is cleared, indicating binary data. For systems which have - different file formats for ascii text and binary data, the - decompressor can use FTEXT to choose the appropriate format. - We deliberately do not specify the algorithm used to set - this bit, since a compressor always has the option of - leaving it cleared and a decompressor always has the option - of ignoring it and letting some other program handle issues - of data conversion. - - If FHCRC is set, a CRC16 for the gzip header is present, - immediately before the compressed data. The CRC16 consists - of the two least significant bytes of the CRC32 for all - bytes of the gzip header up to and not including the CRC16. - [The FHCRC bit was never set by versions of gzip up to - 1.2.4, even though it was documented with a different - meaning in gzip 1.2.4.] - - If FEXTRA is set, optional extra fields are present, as - described in a following section. - - - -Deutsch Informational [Page 6] - -RFC 1952 GZIP File Format Specification May 1996 - - - If FNAME is set, an original file name is present, - terminated by a zero byte. The name must consist of ISO - 8859-1 (LATIN-1) characters; on operating systems using - EBCDIC or any other character set for file names, the name - must be translated to the ISO LATIN-1 character set. This - is the original name of the file being compressed, with any - directory components removed, and, if the file being - compressed is on a file system with case insensitive names, - forced to lower case. There is no original file name if the - data was compressed from a source other than a named file; - for example, if the source was stdin on a Unix system, there - is no file name. - - If FCOMMENT is set, a zero-terminated file comment is - present. This comment is not interpreted; it is only - intended for human consumption. The comment must consist of - ISO 8859-1 (LATIN-1) characters. Line breaks should be - denoted by a single line feed character (10 decimal). - - Reserved FLG bits must be zero. - - MTIME (Modification TIME) - This gives the most recent modification time of the original - file being compressed. The time is in Unix format, i.e., - seconds since 00:00:00 GMT, Jan. 1, 1970. (Note that this - may cause problems for MS-DOS and other systems that use - local rather than Universal time.) If the compressed data - did not come from a file, MTIME is set to the time at which - compression started. MTIME = 0 means no time stamp is - available. - - XFL (eXtra FLags) - These flags are available for use by specific compression - methods. The "deflate" method (CM = 8) sets these flags as - follows: - - XFL = 2 - compressor used maximum compression, - slowest algorithm - XFL = 4 - compressor used fastest algorithm - - OS (Operating System) - This identifies the type of file system on which compression - took place. This may be useful in determining end-of-line - convention for text files. The currently defined values are - as follows: - - - - - - -Deutsch Informational [Page 7] - -RFC 1952 GZIP File Format Specification May 1996 - - - 0 - FAT filesystem (MS-DOS, OS/2, NT/Win32) - 1 - Amiga - 2 - VMS (or OpenVMS) - 3 - Unix - 4 - VM/CMS - 5 - Atari TOS - 6 - HPFS filesystem (OS/2, NT) - 7 - Macintosh - 8 - Z-System - 9 - CP/M - 10 - TOPS-20 - 11 - NTFS filesystem (NT) - 12 - QDOS - 13 - Acorn RISCOS - 255 - unknown - - XLEN (eXtra LENgth) - If FLG.FEXTRA is set, this gives the length of the optional - extra field. See below for details. - - CRC32 (CRC-32) - This contains a Cyclic Redundancy Check value of the - uncompressed data computed according to CRC-32 algorithm - used in the ISO 3309 standard and in section 8.1.1.6.2 of - ITU-T recommendation V.42. (See http://www.iso.ch for - ordering ISO documents. See gopher://info.itu.ch for an - online version of ITU-T V.42.) - - ISIZE (Input SIZE) - This contains the size of the original (uncompressed) input - data modulo 2^32. - - 2.3.1.1. Extra field - - If the FLG.FEXTRA bit is set, an "extra field" is present in - the header, with total length XLEN bytes. It consists of a - series of subfields, each of the form: - - +---+---+---+---+==================================+ - |SI1|SI2| LEN |... LEN bytes of subfield data ...| - +---+---+---+---+==================================+ - - SI1 and SI2 provide a subfield ID, typically two ASCII letters - with some mnemonic value. Jean-Loup Gailly - is maintaining a registry of subfield - IDs; please send him any subfield ID you wish to use. Subfield - IDs with SI2 = 0 are reserved for future use. The following - IDs are currently defined: - - - -Deutsch Informational [Page 8] - -RFC 1952 GZIP File Format Specification May 1996 - - - SI1 SI2 Data - ---------- ---------- ---- - 0x41 ('A') 0x70 ('P') Apollo file type information - - LEN gives the length of the subfield data, excluding the 4 - initial bytes. - - 2.3.1.2. Compliance - - A compliant compressor must produce files with correct ID1, - ID2, CM, CRC32, and ISIZE, but may set all the other fields in - the fixed-length part of the header to default values (255 for - OS, 0 for all others). The compressor must set all reserved - bits to zero. - - A compliant decompressor must check ID1, ID2, and CM, and - provide an error indication if any of these have incorrect - values. It must examine FEXTRA/XLEN, FNAME, FCOMMENT and FHCRC - at least so it can skip over the optional fields if they are - present. It need not examine any other part of the header or - trailer; in particular, a decompressor may ignore FTEXT and OS - and always produce binary output, and still be compliant. A - compliant decompressor must give an error indication if any - reserved bit is non-zero, since such a bit could indicate the - presence of a new field that would cause subsequent data to be - interpreted incorrectly. - -3. References - - [1] "Information Processing - 8-bit single-byte coded graphic - character sets - Part 1: Latin alphabet No.1" (ISO 8859-1:1987). - The ISO 8859-1 (Latin-1) character set is a superset of 7-bit - ASCII. Files defining this character set are available as - iso_8859-1.* in ftp://ftp.uu.net/graphics/png/documents/ - - [2] ISO 3309 - - [3] ITU-T recommendation V.42 - - [4] Deutsch, L.P.,"DEFLATE Compressed Data Format Specification", - available in ftp://ftp.uu.net/pub/archiving/zip/doc/ - - [5] Gailly, J.-L., GZIP documentation, available as gzip-*.tar in - ftp://prep.ai.mit.edu/pub/gnu/ - - [6] Sarwate, D.V., "Computation of Cyclic Redundancy Checks via Table - Look-Up", Communications of the ACM, 31(8), pp.1008-1013. - - - - -Deutsch Informational [Page 9] - -RFC 1952 GZIP File Format Specification May 1996 - - - [7] Schwaderer, W.D., "CRC Calculation", April 85 PC Tech Journal, - pp.118-133. - - [8] ftp://ftp.adelaide.edu.au/pub/rocksoft/papers/crc_v3.txt, - describing the CRC concept. - -4. Security Considerations - - Any data compression method involves the reduction of redundancy in - the data. Consequently, any corruption of the data is likely to have - severe effects and be difficult to correct. Uncompressed text, on - the other hand, will probably still be readable despite the presence - of some corrupted bytes. - - It is recommended that systems using this data format provide some - means of validating the integrity of the compressed data, such as by - setting and checking the CRC-32 check value. - -5. Acknowledgements - - Trademarks cited in this document are the property of their - respective owners. - - Jean-Loup Gailly designed the gzip format and wrote, with Mark Adler, - the related software described in this specification. Glenn - Randers-Pehrson converted this document to RFC and HTML format. - -6. Author's Address - - L. Peter Deutsch - Aladdin Enterprises - 203 Santa Margarita Ave. - Menlo Park, CA 94025 - - Phone: (415) 322-0103 (AM only) - FAX: (415) 322-1734 - EMail: - - Questions about the technical content of this specification can be - sent by email to: - - Jean-Loup Gailly and - Mark Adler - - Editorial comments on this specification can be sent by email to: - - L. Peter Deutsch and - Glenn Randers-Pehrson - - - -Deutsch Informational [Page 10] - -RFC 1952 GZIP File Format Specification May 1996 - - -7. Appendix: Jean-Loup Gailly's gzip utility - - The most widely used implementation of gzip compression, and the - original documentation on which this specification is based, were - created by Jean-Loup Gailly . Since this - implementation is a de facto standard, we mention some more of its - features here. Again, the material in this section is not part of - the specification per se, and implementations need not follow it to - be compliant. - - When compressing or decompressing a file, gzip preserves the - protection, ownership, and modification time attributes on the local - file system, since there is no provision for representing protection - attributes in the gzip file format itself. Since the file format - includes a modification time, the gzip decompressor provides a - command line switch that assigns the modification time from the file, - rather than the local modification time of the compressed input, to - the decompressed output. - -8. Appendix: Sample CRC Code - - The following sample code represents a practical implementation of - the CRC (Cyclic Redundancy Check). (See also ISO 3309 and ITU-T V.42 - for a formal specification.) - - The sample code is in the ANSI C programming language. Non C users - may find it easier to read with these hints: - - & Bitwise AND operator. - ^ Bitwise exclusive-OR operator. - >> Bitwise right shift operator. When applied to an - unsigned quantity, as here, right shift inserts zero - bit(s) at the left. - ! Logical NOT operator. - ++ "n++" increments the variable n. - 0xNNN 0x introduces a hexadecimal (base 16) constant. - Suffix L indicates a long value (at least 32 bits). - - /* Table of CRCs of all 8-bit messages. */ - unsigned long crc_table[256]; - - /* Flag: has the table been computed? Initially false. */ - int crc_table_computed = 0; - - /* Make the table for a fast CRC. */ - void make_crc_table(void) - { - unsigned long c; - - - -Deutsch Informational [Page 11] - -RFC 1952 GZIP File Format Specification May 1996 - - - int n, k; - for (n = 0; n < 256; n++) { - c = (unsigned long) n; - for (k = 0; k < 8; k++) { - if (c & 1) { - c = 0xedb88320L ^ (c >> 1); - } else { - c = c >> 1; - } - } - crc_table[n] = c; - } - crc_table_computed = 1; - } - - /* - Update a running crc with the bytes buf[0..len-1] and return - the updated crc. The crc should be initialized to zero. Pre- and - post-conditioning (one's complement) is performed within this - function so it shouldn't be done by the caller. Usage example: - - unsigned long crc = 0L; - - while (read_buffer(buffer, length) != EOF) { - crc = update_crc(crc, buffer, length); - } - if (crc != original_crc) error(); - */ - unsigned long update_crc(unsigned long crc, - unsigned char *buf, int len) - { - unsigned long c = crc ^ 0xffffffffL; - int n; - - if (!crc_table_computed) - make_crc_table(); - for (n = 0; n < len; n++) { - c = crc_table[(c ^ buf[n]) & 0xff] ^ (c >> 8); - } - return c ^ 0xffffffffL; - } - - /* Return the CRC of the bytes buf[0..len-1]. */ - unsigned long crc(unsigned char *buf, int len) - { - return update_crc(0L, buf, len); - } - - - - -Deutsch Informational [Page 12] - diff --git a/io2d/src/3rd-party/zlib/doc/txtvsbin.txt b/io2d/src/3rd-party/zlib/doc/txtvsbin.txt deleted file mode 100644 index 3d0f063..0000000 --- a/io2d/src/3rd-party/zlib/doc/txtvsbin.txt +++ /dev/null @@ -1,107 +0,0 @@ -A Fast Method for Identifying Plain Text Files -============================================== - - -Introduction ------------- - -Given a file coming from an unknown source, it is sometimes desirable -to find out whether the format of that file is plain text. Although -this may appear like a simple task, a fully accurate detection of the -file type requires heavy-duty semantic analysis on the file contents. -It is, however, possible to obtain satisfactory results by employing -various heuristics. - -Previous versions of PKZip and other zip-compatible compression tools -were using a crude detection scheme: if more than 80% (4/5) of the bytes -found in a certain buffer are within the range [7..127], the file is -labeled as plain text, otherwise it is labeled as binary. A prominent -limitation of this scheme is the restriction to Latin-based alphabets. -Other alphabets, like Greek, Cyrillic or Asian, make extensive use of -the bytes within the range [128..255], and texts using these alphabets -are most often misidentified by this scheme; in other words, the rate -of false negatives is sometimes too high, which means that the recall -is low. Another weakness of this scheme is a reduced precision, due to -the false positives that may occur when binary files containing large -amounts of textual characters are misidentified as plain text. - -In this article we propose a new, simple detection scheme that features -a much increased precision and a near-100% recall. This scheme is -designed to work on ASCII, Unicode and other ASCII-derived alphabets, -and it handles single-byte encodings (ISO-8859, MacRoman, KOI8, etc.) -and variable-sized encodings (ISO-2022, UTF-8, etc.). Wider encodings -(UCS-2/UTF-16 and UCS-4/UTF-32) are not handled, however. - - -The Algorithm -------------- - -The algorithm works by dividing the set of bytecodes [0..255] into three -categories: -- The white list of textual bytecodes: - 9 (TAB), 10 (LF), 13 (CR), 32 (SPACE) to 255. -- The gray list of tolerated bytecodes: - 7 (BEL), 8 (BS), 11 (VT), 12 (FF), 26 (SUB), 27 (ESC). -- The black list of undesired, non-textual bytecodes: - 0 (NUL) to 6, 14 to 31. - -If a file contains at least one byte that belongs to the white list and -no byte that belongs to the black list, then the file is categorized as -plain text; otherwise, it is categorized as binary. (The boundary case, -when the file is empty, automatically falls into the latter category.) - - -Rationale ---------- - -The idea behind this algorithm relies on two observations. - -The first observation is that, although the full range of 7-bit codes -[0..127] is properly specified by the ASCII standard, most control -characters in the range [0..31] are not used in practice. The only -widely-used, almost universally-portable control codes are 9 (TAB), -10 (LF) and 13 (CR). There are a few more control codes that are -recognized on a reduced range of platforms and text viewers/editors: -7 (BEL), 8 (BS), 11 (VT), 12 (FF), 26 (SUB) and 27 (ESC); but these -codes are rarely (if ever) used alone, without being accompanied by -some printable text. Even the newer, portable text formats such as -XML avoid using control characters outside the list mentioned here. - -The second observation is that most of the binary files tend to contain -control characters, especially 0 (NUL). Even though the older text -detection schemes observe the presence of non-ASCII codes from the range -[128..255], the precision rarely has to suffer if this upper range is -labeled as textual, because the files that are genuinely binary tend to -contain both control characters and codes from the upper range. On the -other hand, the upper range needs to be labeled as textual, because it -is used by virtually all ASCII extensions. In particular, this range is -used for encoding non-Latin scripts. - -Since there is no counting involved, other than simply observing the -presence or the absence of some byte values, the algorithm produces -consistent results, regardless what alphabet encoding is being used. -(If counting were involved, it could be possible to obtain different -results on a text encoded, say, using ISO-8859-16 versus UTF-8.) - -There is an extra category of plain text files that are "polluted" with -one or more black-listed codes, either by mistake or by peculiar design -considerations. In such cases, a scheme that tolerates a small fraction -of black-listed codes would provide an increased recall (i.e. more true -positives). This, however, incurs a reduced precision overall, since -false positives are more likely to appear in binary files that contain -large chunks of textual data. Furthermore, "polluted" plain text should -be regarded as binary by general-purpose text detection schemes, because -general-purpose text processing algorithms might not be applicable. -Under this premise, it is safe to say that our detection method provides -a near-100% recall. - -Experiments have been run on many files coming from various platforms -and applications. We tried plain text files, system logs, source code, -formatted office documents, compiled object code, etc. The results -confirm the optimistic assumptions about the capabilities of this -algorithm. - - --- -Cosmin Truta -Last updated: 2006-May-28 diff --git a/io2d/src/3rd-party/zlib/examples/README.examples b/io2d/src/3rd-party/zlib/examples/README.examples deleted file mode 100644 index 56a3171..0000000 --- a/io2d/src/3rd-party/zlib/examples/README.examples +++ /dev/null @@ -1,49 +0,0 @@ -This directory contains examples of the use of zlib and other relevant -programs and documentation. - -enough.c - calculation and justification of ENOUGH parameter in inftrees.h - - calculates the maximum table space used in inflate tree - construction over all possible Huffman codes - -fitblk.c - compress just enough input to nearly fill a requested output size - - zlib isn't designed to do this, but fitblk does it anyway - -gun.c - uncompress a gzip file - - illustrates the use of inflateBack() for high speed file-to-file - decompression using call-back functions - - is approximately twice as fast as gzip -d - - also provides Unix uncompress functionality, again twice as fast - -gzappend.c - append to a gzip file - - illustrates the use of the Z_BLOCK flush parameter for inflate() - - illustrates the use of deflatePrime() to start at any bit - -gzjoin.c - join gzip files without recalculating the crc or recompressing - - illustrates the use of the Z_BLOCK flush parameter for inflate() - - illustrates the use of crc32_combine() - -gzlog.c -gzlog.h - efficiently and robustly maintain a message log file in gzip format - - illustrates use of raw deflate, Z_PARTIAL_FLUSH, deflatePrime(), - and deflateSetDictionary() - - illustrates use of a gzip header extra field - -zlib_how.html - painfully comprehensive description of zpipe.c (see below) - - describes in excruciating detail the use of deflate() and inflate() - -zpipe.c - reads and writes zlib streams from stdin to stdout - - illustrates the proper use of deflate() and inflate() - - deeply commented in zlib_how.html (see above) - -zran.c - index a zlib or gzip stream and randomly access it - - illustrates the use of Z_BLOCK, inflatePrime(), and - inflateSetDictionary() to provide random access diff --git a/io2d/src/3rd-party/zlib/examples/enough.c b/io2d/src/3rd-party/zlib/examples/enough.c deleted file mode 100644 index b991144..0000000 --- a/io2d/src/3rd-party/zlib/examples/enough.c +++ /dev/null @@ -1,572 +0,0 @@ -/* enough.c -- determine the maximum size of inflate's Huffman code tables over - * all possible valid and complete Huffman codes, subject to a length limit. - * Copyright (C) 2007, 2008, 2012 Mark Adler - * Version 1.4 18 August 2012 Mark Adler - */ - -/* Version history: - 1.0 3 Jan 2007 First version (derived from codecount.c version 1.4) - 1.1 4 Jan 2007 Use faster incremental table usage computation - Prune examine() search on previously visited states - 1.2 5 Jan 2007 Comments clean up - As inflate does, decrease root for short codes - Refuse cases where inflate would increase root - 1.3 17 Feb 2008 Add argument for initial root table size - Fix bug for initial root table size == max - 1 - Use a macro to compute the history index - 1.4 18 Aug 2012 Avoid shifts more than bits in type (caused endless loop!) - Clean up comparisons of different types - Clean up code indentation - */ - -/* - Examine all possible Huffman codes for a given number of symbols and a - maximum code length in bits to determine the maximum table size for zilb's - inflate. Only complete Huffman codes are counted. - - Two codes are considered distinct if the vectors of the number of codes per - length are not identical. So permutations of the symbol assignments result - in the same code for the counting, as do permutations of the assignments of - the bit values to the codes (i.e. only canonical codes are counted). - - We build a code from shorter to longer lengths, determining how many symbols - are coded at each length. At each step, we have how many symbols remain to - be coded, what the last code length used was, and how many bit patterns of - that length remain unused. Then we add one to the code length and double the - number of unused patterns to graduate to the next code length. We then - assign all portions of the remaining symbols to that code length that - preserve the properties of a correct and eventually complete code. Those - properties are: we cannot use more bit patterns than are available; and when - all the symbols are used, there are exactly zero possible bit patterns - remaining. - - The inflate Huffman decoding algorithm uses two-level lookup tables for - speed. There is a single first-level table to decode codes up to root bits - in length (root == 9 in the current inflate implementation). The table - has 1 << root entries and is indexed by the next root bits of input. Codes - shorter than root bits have replicated table entries, so that the correct - entry is pointed to regardless of the bits that follow the short code. If - the code is longer than root bits, then the table entry points to a second- - level table. The size of that table is determined by the longest code with - that root-bit prefix. If that longest code has length len, then the table - has size 1 << (len - root), to index the remaining bits in that set of - codes. Each subsequent root-bit prefix then has its own sub-table. The - total number of table entries required by the code is calculated - incrementally as the number of codes at each bit length is populated. When - all of the codes are shorter than root bits, then root is reduced to the - longest code length, resulting in a single, smaller, one-level table. - - The inflate algorithm also provides for small values of root (relative to - the log2 of the number of symbols), where the shortest code has more bits - than root. In that case, root is increased to the length of the shortest - code. This program, by design, does not handle that case, so it is verified - that the number of symbols is less than 2^(root + 1). - - In order to speed up the examination (by about ten orders of magnitude for - the default arguments), the intermediate states in the build-up of a code - are remembered and previously visited branches are pruned. The memory - required for this will increase rapidly with the total number of symbols and - the maximum code length in bits. However this is a very small price to pay - for the vast speedup. - - First, all of the possible Huffman codes are counted, and reachable - intermediate states are noted by a non-zero count in a saved-results array. - Second, the intermediate states that lead to (root + 1) bit or longer codes - are used to look at all sub-codes from those junctures for their inflate - memory usage. (The amount of memory used is not affected by the number of - codes of root bits or less in length.) Third, the visited states in the - construction of those sub-codes and the associated calculation of the table - size is recalled in order to avoid recalculating from the same juncture. - Beginning the code examination at (root + 1) bit codes, which is enabled by - identifying the reachable nodes, accounts for about six of the orders of - magnitude of improvement for the default arguments. About another four - orders of magnitude come from not revisiting previous states. Out of - approximately 2x10^16 possible Huffman codes, only about 2x10^6 sub-codes - need to be examined to cover all of the possible table memory usage cases - for the default arguments of 286 symbols limited to 15-bit codes. - - Note that an unsigned long long type is used for counting. It is quite easy - to exceed the capacity of an eight-byte integer with a large number of - symbols and a large maximum code length, so multiple-precision arithmetic - would need to replace the unsigned long long arithmetic in that case. This - program will abort if an overflow occurs. The big_t type identifies where - the counting takes place. - - An unsigned long long type is also used for calculating the number of - possible codes remaining at the maximum length. This limits the maximum - code length to the number of bits in a long long minus the number of bits - needed to represent the symbols in a flat code. The code_t type identifies - where the bit pattern counting takes place. - */ - -#include -#include -#include -#include - -#define local static - -/* special data types */ -typedef unsigned long long big_t; /* type for code counting */ -typedef unsigned long long code_t; /* type for bit pattern counting */ -struct tab { /* type for been here check */ - size_t len; /* length of bit vector in char's */ - char *vec; /* allocated bit vector */ -}; - -/* The array for saving results, num[], is indexed with this triplet: - - syms: number of symbols remaining to code - left: number of available bit patterns at length len - len: number of bits in the codes currently being assigned - - Those indices are constrained thusly when saving results: - - syms: 3..totsym (totsym == total symbols to code) - left: 2..syms - 1, but only the evens (so syms == 8 -> 2, 4, 6) - len: 1..max - 1 (max == maximum code length in bits) - - syms == 2 is not saved since that immediately leads to a single code. left - must be even, since it represents the number of available bit patterns at - the current length, which is double the number at the previous length. - left ends at syms-1 since left == syms immediately results in a single code. - (left > sym is not allowed since that would result in an incomplete code.) - len is less than max, since the code completes immediately when len == max. - - The offset into the array is calculated for the three indices with the - first one (syms) being outermost, and the last one (len) being innermost. - We build the array with length max-1 lists for the len index, with syms-3 - of those for each symbol. There are totsym-2 of those, with each one - varying in length as a function of sym. See the calculation of index in - count() for the index, and the calculation of size in main() for the size - of the array. - - For the deflate example of 286 symbols limited to 15-bit codes, the array - has 284,284 entries, taking up 2.17 MB for an 8-byte big_t. More than - half of the space allocated for saved results is actually used -- not all - possible triplets are reached in the generation of valid Huffman codes. - */ - -/* The array for tracking visited states, done[], is itself indexed identically - to the num[] array as described above for the (syms, left, len) triplet. - Each element in the array is further indexed by the (mem, rem) doublet, - where mem is the amount of inflate table space used so far, and rem is the - remaining unused entries in the current inflate sub-table. Each indexed - element is simply one bit indicating whether the state has been visited or - not. Since the ranges for mem and rem are not known a priori, each bit - vector is of a variable size, and grows as needed to accommodate the visited - states. mem and rem are used to calculate a single index in a triangular - array. Since the range of mem is expected in the default case to be about - ten times larger than the range of rem, the array is skewed to reduce the - memory usage, with eight times the range for mem than for rem. See the - calculations for offset and bit in beenhere() for the details. - - For the deflate example of 286 symbols limited to 15-bit codes, the bit - vectors grow to total approximately 21 MB, in addition to the 4.3 MB done[] - array itself. - */ - -/* Globals to avoid propagating constants or constant pointers recursively */ -local int max; /* maximum allowed bit length for the codes */ -local int root; /* size of base code table in bits */ -local int large; /* largest code table so far */ -local size_t size; /* number of elements in num and done */ -local int *code; /* number of symbols assigned to each bit length */ -local big_t *num; /* saved results array for code counting */ -local struct tab *done; /* states already evaluated array */ - -/* Index function for num[] and done[] */ -#define INDEX(i,j,k) (((size_t)((i-1)>>1)*((i-2)>>1)+(j>>1)-1)*(max-1)+k-1) - -/* Free allocated space. Uses globals code, num, and done. */ -local void cleanup(void) -{ - size_t n; - - if (done != NULL) { - for (n = 0; n < size; n++) - if (done[n].len) - free(done[n].vec); - free(done); - } - if (num != NULL) - free(num); - if (code != NULL) - free(code); -} - -/* Return the number of possible Huffman codes using bit patterns of lengths - len through max inclusive, coding syms symbols, with left bit patterns of - length len unused -- return -1 if there is an overflow in the counting. - Keep a record of previous results in num to prevent repeating the same - calculation. Uses the globals max and num. */ -local big_t count(int syms, int len, int left) -{ - big_t sum; /* number of possible codes from this juncture */ - big_t got; /* value returned from count() */ - int least; /* least number of syms to use at this juncture */ - int most; /* most number of syms to use at this juncture */ - int use; /* number of bit patterns to use in next call */ - size_t index; /* index of this case in *num */ - - /* see if only one possible code */ - if (syms == left) - return 1; - - /* note and verify the expected state */ - assert(syms > left && left > 0 && len < max); - - /* see if we've done this one already */ - index = INDEX(syms, left, len); - got = num[index]; - if (got) - return got; /* we have -- return the saved result */ - - /* we need to use at least this many bit patterns so that the code won't be - incomplete at the next length (more bit patterns than symbols) */ - least = (left << 1) - syms; - if (least < 0) - least = 0; - - /* we can use at most this many bit patterns, lest there not be enough - available for the remaining symbols at the maximum length (if there were - no limit to the code length, this would become: most = left - 1) */ - most = (((code_t)left << (max - len)) - syms) / - (((code_t)1 << (max - len)) - 1); - - /* count all possible codes from this juncture and add them up */ - sum = 0; - for (use = least; use <= most; use++) { - got = count(syms - use, len + 1, (left - use) << 1); - sum += got; - if (got == (big_t)0 - 1 || sum < got) /* overflow */ - return (big_t)0 - 1; - } - - /* verify that all recursive calls are productive */ - assert(sum != 0); - - /* save the result and return it */ - num[index] = sum; - return sum; -} - -/* Return true if we've been here before, set to true if not. Set a bit in a - bit vector to indicate visiting this state. Each (syms,len,left) state - has a variable size bit vector indexed by (mem,rem). The bit vector is - lengthened if needed to allow setting the (mem,rem) bit. */ -local int beenhere(int syms, int len, int left, int mem, int rem) -{ - size_t index; /* index for this state's bit vector */ - size_t offset; /* offset in this state's bit vector */ - int bit; /* mask for this state's bit */ - size_t length; /* length of the bit vector in bytes */ - char *vector; /* new or enlarged bit vector */ - - /* point to vector for (syms,left,len), bit in vector for (mem,rem) */ - index = INDEX(syms, left, len); - mem -= 1 << root; - offset = (mem >> 3) + rem; - offset = ((offset * (offset + 1)) >> 1) + rem; - bit = 1 << (mem & 7); - - /* see if we've been here */ - length = done[index].len; - if (offset < length && (done[index].vec[offset] & bit) != 0) - return 1; /* done this! */ - - /* we haven't been here before -- set the bit to show we have now */ - - /* see if we need to lengthen the vector in order to set the bit */ - if (length <= offset) { - /* if we have one already, enlarge it, zero out the appended space */ - if (length) { - do { - length <<= 1; - } while (length <= offset); - vector = realloc(done[index].vec, length); - if (vector != NULL) - memset(vector + done[index].len, 0, length - done[index].len); - } - - /* otherwise we need to make a new vector and zero it out */ - else { - length = 1 << (len - root); - while (length <= offset) - length <<= 1; - vector = calloc(length, sizeof(char)); - } - - /* in either case, bail if we can't get the memory */ - if (vector == NULL) { - fputs("abort: unable to allocate enough memory\n", stderr); - cleanup(); - exit(1); - } - - /* install the new vector */ - done[index].len = length; - done[index].vec = vector; - } - - /* set the bit */ - done[index].vec[offset] |= bit; - return 0; -} - -/* Examine all possible codes from the given node (syms, len, left). Compute - the amount of memory required to build inflate's decoding tables, where the - number of code structures used so far is mem, and the number remaining in - the current sub-table is rem. Uses the globals max, code, root, large, and - done. */ -local void examine(int syms, int len, int left, int mem, int rem) -{ - int least; /* least number of syms to use at this juncture */ - int most; /* most number of syms to use at this juncture */ - int use; /* number of bit patterns to use in next call */ - - /* see if we have a complete code */ - if (syms == left) { - /* set the last code entry */ - code[len] = left; - - /* complete computation of memory used by this code */ - while (rem < left) { - left -= rem; - rem = 1 << (len - root); - mem += rem; - } - assert(rem == left); - - /* if this is a new maximum, show the entries used and the sub-code */ - if (mem > large) { - large = mem; - printf("max %d: ", mem); - for (use = root + 1; use <= max; use++) - if (code[use]) - printf("%d[%d] ", code[use], use); - putchar('\n'); - fflush(stdout); - } - - /* remove entries as we drop back down in the recursion */ - code[len] = 0; - return; - } - - /* prune the tree if we can */ - if (beenhere(syms, len, left, mem, rem)) - return; - - /* we need to use at least this many bit patterns so that the code won't be - incomplete at the next length (more bit patterns than symbols) */ - least = (left << 1) - syms; - if (least < 0) - least = 0; - - /* we can use at most this many bit patterns, lest there not be enough - available for the remaining symbols at the maximum length (if there were - no limit to the code length, this would become: most = left - 1) */ - most = (((code_t)left << (max - len)) - syms) / - (((code_t)1 << (max - len)) - 1); - - /* occupy least table spaces, creating new sub-tables as needed */ - use = least; - while (rem < use) { - use -= rem; - rem = 1 << (len - root); - mem += rem; - } - rem -= use; - - /* examine codes from here, updating table space as we go */ - for (use = least; use <= most; use++) { - code[len] = use; - examine(syms - use, len + 1, (left - use) << 1, - mem + (rem ? 1 << (len - root) : 0), rem << 1); - if (rem == 0) { - rem = 1 << (len - root); - mem += rem; - } - rem--; - } - - /* remove entries as we drop back down in the recursion */ - code[len] = 0; -} - -/* Look at all sub-codes starting with root + 1 bits. Look at only the valid - intermediate code states (syms, left, len). For each completed code, - calculate the amount of memory required by inflate to build the decoding - tables. Find the maximum amount of memory required and show the code that - requires that maximum. Uses the globals max, root, and num. */ -local void enough(int syms) -{ - int n; /* number of remaing symbols for this node */ - int left; /* number of unused bit patterns at this length */ - size_t index; /* index of this case in *num */ - - /* clear code */ - for (n = 0; n <= max; n++) - code[n] = 0; - - /* look at all (root + 1) bit and longer codes */ - large = 1 << root; /* base table */ - if (root < max) /* otherwise, there's only a base table */ - for (n = 3; n <= syms; n++) - for (left = 2; left < n; left += 2) - { - /* look at all reachable (root + 1) bit nodes, and the - resulting codes (complete at root + 2 or more) */ - index = INDEX(n, left, root + 1); - if (root + 1 < max && num[index]) /* reachable node */ - examine(n, root + 1, left, 1 << root, 0); - - /* also look at root bit codes with completions at root + 1 - bits (not saved in num, since complete), just in case */ - if (num[index - 1] && n <= left << 1) - examine((n - left) << 1, root + 1, (n - left) << 1, - 1 << root, 0); - } - - /* done */ - printf("done: maximum of %d table entries\n", large); -} - -/* - Examine and show the total number of possible Huffman codes for a given - maximum number of symbols, initial root table size, and maximum code length - in bits -- those are the command arguments in that order. The default - values are 286, 9, and 15 respectively, for the deflate literal/length code. - The possible codes are counted for each number of coded symbols from two to - the maximum. The counts for each of those and the total number of codes are - shown. The maximum number of inflate table entires is then calculated - across all possible codes. Each new maximum number of table entries and the - associated sub-code (starting at root + 1 == 10 bits) is shown. - - To count and examine Huffman codes that are not length-limited, provide a - maximum length equal to the number of symbols minus one. - - For the deflate literal/length code, use "enough". For the deflate distance - code, use "enough 30 6". - - This uses the %llu printf format to print big_t numbers, which assumes that - big_t is an unsigned long long. If the big_t type is changed (for example - to a multiple precision type), the method of printing will also need to be - updated. - */ -int main(int argc, char **argv) -{ - int syms; /* total number of symbols to code */ - int n; /* number of symbols to code for this run */ - big_t got; /* return value of count() */ - big_t sum; /* accumulated number of codes over n */ - code_t word; /* for counting bits in code_t */ - - /* set up globals for cleanup() */ - code = NULL; - num = NULL; - done = NULL; - - /* get arguments -- default to the deflate literal/length code */ - syms = 286; - root = 9; - max = 15; - if (argc > 1) { - syms = atoi(argv[1]); - if (argc > 2) { - root = atoi(argv[2]); - if (argc > 3) - max = atoi(argv[3]); - } - } - if (argc > 4 || syms < 2 || root < 1 || max < 1) { - fputs("invalid arguments, need: [sym >= 2 [root >= 1 [max >= 1]]]\n", - stderr); - return 1; - } - - /* if not restricting the code length, the longest is syms - 1 */ - if (max > syms - 1) - max = syms - 1; - - /* determine the number of bits in a code_t */ - for (n = 0, word = 1; word; n++, word <<= 1) - ; - - /* make sure that the calculation of most will not overflow */ - if (max > n || (code_t)(syms - 2) >= (((code_t)0 - 1) >> (max - 1))) { - fputs("abort: code length too long for internal types\n", stderr); - return 1; - } - - /* reject impossible code requests */ - if ((code_t)(syms - 1) > ((code_t)1 << max) - 1) { - fprintf(stderr, "%d symbols cannot be coded in %d bits\n", - syms, max); - return 1; - } - - /* allocate code vector */ - code = calloc(max + 1, sizeof(int)); - if (code == NULL) { - fputs("abort: unable to allocate enough memory\n", stderr); - return 1; - } - - /* determine size of saved results array, checking for overflows, - allocate and clear the array (set all to zero with calloc()) */ - if (syms == 2) /* iff max == 1 */ - num = NULL; /* won't be saving any results */ - else { - size = syms >> 1; - if (size > ((size_t)0 - 1) / (n = (syms - 1) >> 1) || - (size *= n, size > ((size_t)0 - 1) / (n = max - 1)) || - (size *= n, size > ((size_t)0 - 1) / sizeof(big_t)) || - (num = calloc(size, sizeof(big_t))) == NULL) { - fputs("abort: unable to allocate enough memory\n", stderr); - cleanup(); - return 1; - } - } - - /* count possible codes for all numbers of symbols, add up counts */ - sum = 0; - for (n = 2; n <= syms; n++) { - got = count(n, 1, 2); - sum += got; - if (got == (big_t)0 - 1 || sum < got) { /* overflow */ - fputs("abort: can't count that high!\n", stderr); - cleanup(); - return 1; - } - printf("%llu %d-codes\n", got, n); - } - printf("%llu total codes for 2 to %d symbols", sum, syms); - if (max < syms - 1) - printf(" (%d-bit length limit)\n", max); - else - puts(" (no length limit)"); - - /* allocate and clear done array for beenhere() */ - if (syms == 2) - done = NULL; - else if (size > ((size_t)0 - 1) / sizeof(struct tab) || - (done = calloc(size, sizeof(struct tab))) == NULL) { - fputs("abort: unable to allocate enough memory\n", stderr); - cleanup(); - return 1; - } - - /* find and show maximum inflate table usage */ - if (root > max) /* reduce root to max length */ - root = max; - if ((code_t)syms < ((code_t)1 << (root + 1))) - enough(syms); - else - puts("cannot handle minimum code lengths > root"); - - /* done */ - cleanup(); - return 0; -} diff --git a/io2d/src/3rd-party/zlib/examples/fitblk.c b/io2d/src/3rd-party/zlib/examples/fitblk.c deleted file mode 100644 index c61de5c..0000000 --- a/io2d/src/3rd-party/zlib/examples/fitblk.c +++ /dev/null @@ -1,233 +0,0 @@ -/* fitblk.c: example of fitting compressed output to a specified size - Not copyrighted -- provided to the public domain - Version 1.1 25 November 2004 Mark Adler */ - -/* Version history: - 1.0 24 Nov 2004 First version - 1.1 25 Nov 2004 Change deflateInit2() to deflateInit() - Use fixed-size, stack-allocated raw buffers - Simplify code moving compression to subroutines - Use assert() for internal errors - Add detailed description of approach - */ - -/* Approach to just fitting a requested compressed size: - - fitblk performs three compression passes on a portion of the input - data in order to determine how much of that input will compress to - nearly the requested output block size. The first pass generates - enough deflate blocks to produce output to fill the requested - output size plus a specfied excess amount (see the EXCESS define - below). The last deflate block may go quite a bit past that, but - is discarded. The second pass decompresses and recompresses just - the compressed data that fit in the requested plus excess sized - buffer. The deflate process is terminated after that amount of - input, which is less than the amount consumed on the first pass. - The last deflate block of the result will be of a comparable size - to the final product, so that the header for that deflate block and - the compression ratio for that block will be about the same as in - the final product. The third compression pass decompresses the - result of the second step, but only the compressed data up to the - requested size minus an amount to allow the compressed stream to - complete (see the MARGIN define below). That will result in a - final compressed stream whose length is less than or equal to the - requested size. Assuming sufficient input and a requested size - greater than a few hundred bytes, the shortfall will typically be - less than ten bytes. - - If the input is short enough that the first compression completes - before filling the requested output size, then that compressed - stream is return with no recompression. - - EXCESS is chosen to be just greater than the shortfall seen in a - two pass approach similar to the above. That shortfall is due to - the last deflate block compressing more efficiently with a smaller - header on the second pass. EXCESS is set to be large enough so - that there is enough uncompressed data for the second pass to fill - out the requested size, and small enough so that the final deflate - block of the second pass will be close in size to the final deflate - block of the third and final pass. MARGIN is chosen to be just - large enough to assure that the final compression has enough room - to complete in all cases. - */ - -#include -#include -#include -#include "zlib.h" - -#define local static - -/* print nastygram and leave */ -local void quit(char *why) -{ - fprintf(stderr, "fitblk abort: %s\n", why); - exit(1); -} - -#define RAWLEN 4096 /* intermediate uncompressed buffer size */ - -/* compress from file to def until provided buffer is full or end of - input reached; return last deflate() return value, or Z_ERRNO if - there was read error on the file */ -local int partcompress(FILE *in, z_streamp def) -{ - int ret, flush; - unsigned char raw[RAWLEN]; - - flush = Z_NO_FLUSH; - do { - def->avail_in = fread(raw, 1, RAWLEN, in); - if (ferror(in)) - return Z_ERRNO; - def->next_in = raw; - if (feof(in)) - flush = Z_FINISH; - ret = deflate(def, flush); - assert(ret != Z_STREAM_ERROR); - } while (def->avail_out != 0 && flush == Z_NO_FLUSH); - return ret; -} - -/* recompress from inf's input to def's output; the input for inf and - the output for def are set in those structures before calling; - return last deflate() return value, or Z_MEM_ERROR if inflate() - was not able to allocate enough memory when it needed to */ -local int recompress(z_streamp inf, z_streamp def) -{ - int ret, flush; - unsigned char raw[RAWLEN]; - - flush = Z_NO_FLUSH; - do { - /* decompress */ - inf->avail_out = RAWLEN; - inf->next_out = raw; - ret = inflate(inf, Z_NO_FLUSH); - assert(ret != Z_STREAM_ERROR && ret != Z_DATA_ERROR && - ret != Z_NEED_DICT); - if (ret == Z_MEM_ERROR) - return ret; - - /* compress what was decompresed until done or no room */ - def->avail_in = RAWLEN - inf->avail_out; - def->next_in = raw; - if (inf->avail_out != 0) - flush = Z_FINISH; - ret = deflate(def, flush); - assert(ret != Z_STREAM_ERROR); - } while (ret != Z_STREAM_END && def->avail_out != 0); - return ret; -} - -#define EXCESS 256 /* empirically determined stream overage */ -#define MARGIN 8 /* amount to back off for completion */ - -/* compress from stdin to fixed-size block on stdout */ -int main(int argc, char **argv) -{ - int ret; /* return code */ - unsigned size; /* requested fixed output block size */ - unsigned have; /* bytes written by deflate() call */ - unsigned char *blk; /* intermediate and final stream */ - unsigned char *tmp; /* close to desired size stream */ - z_stream def, inf; /* zlib deflate and inflate states */ - - /* get requested output size */ - if (argc != 2) - quit("need one argument: size of output block"); - ret = strtol(argv[1], argv + 1, 10); - if (argv[1][0] != 0) - quit("argument must be a number"); - if (ret < 8) /* 8 is minimum zlib stream size */ - quit("need positive size of 8 or greater"); - size = (unsigned)ret; - - /* allocate memory for buffers and compression engine */ - blk = malloc(size + EXCESS); - def.zalloc = Z_NULL; - def.zfree = Z_NULL; - def.opaque = Z_NULL; - ret = deflateInit(&def, Z_DEFAULT_COMPRESSION); - if (ret != Z_OK || blk == NULL) - quit("out of memory"); - - /* compress from stdin until output full, or no more input */ - def.avail_out = size + EXCESS; - def.next_out = blk; - ret = partcompress(stdin, &def); - if (ret == Z_ERRNO) - quit("error reading input"); - - /* if it all fit, then size was undersubscribed -- done! */ - if (ret == Z_STREAM_END && def.avail_out >= EXCESS) { - /* write block to stdout */ - have = size + EXCESS - def.avail_out; - if (fwrite(blk, 1, have, stdout) != have || ferror(stdout)) - quit("error writing output"); - - /* clean up and print results to stderr */ - ret = deflateEnd(&def); - assert(ret != Z_STREAM_ERROR); - free(blk); - fprintf(stderr, - "%u bytes unused out of %u requested (all input)\n", - size - have, size); - return 0; - } - - /* it didn't all fit -- set up for recompression */ - inf.zalloc = Z_NULL; - inf.zfree = Z_NULL; - inf.opaque = Z_NULL; - inf.avail_in = 0; - inf.next_in = Z_NULL; - ret = inflateInit(&inf); - tmp = malloc(size + EXCESS); - if (ret != Z_OK || tmp == NULL) - quit("out of memory"); - ret = deflateReset(&def); - assert(ret != Z_STREAM_ERROR); - - /* do first recompression close to the right amount */ - inf.avail_in = size + EXCESS; - inf.next_in = blk; - def.avail_out = size + EXCESS; - def.next_out = tmp; - ret = recompress(&inf, &def); - if (ret == Z_MEM_ERROR) - quit("out of memory"); - - /* set up for next reocmpression */ - ret = inflateReset(&inf); - assert(ret != Z_STREAM_ERROR); - ret = deflateReset(&def); - assert(ret != Z_STREAM_ERROR); - - /* do second and final recompression (third compression) */ - inf.avail_in = size - MARGIN; /* assure stream will complete */ - inf.next_in = tmp; - def.avail_out = size; - def.next_out = blk; - ret = recompress(&inf, &def); - if (ret == Z_MEM_ERROR) - quit("out of memory"); - assert(ret == Z_STREAM_END); /* otherwise MARGIN too small */ - - /* done -- write block to stdout */ - have = size - def.avail_out; - if (fwrite(blk, 1, have, stdout) != have || ferror(stdout)) - quit("error writing output"); - - /* clean up and print results to stderr */ - free(tmp); - ret = inflateEnd(&inf); - assert(ret != Z_STREAM_ERROR); - ret = deflateEnd(&def); - assert(ret != Z_STREAM_ERROR); - free(blk); - fprintf(stderr, - "%u bytes unused out of %u requested (%lu input)\n", - size - have, size, def.total_in); - return 0; -} diff --git a/io2d/src/3rd-party/zlib/examples/gun.c b/io2d/src/3rd-party/zlib/examples/gun.c deleted file mode 100644 index 89e484f..0000000 --- a/io2d/src/3rd-party/zlib/examples/gun.c +++ /dev/null @@ -1,702 +0,0 @@ -/* gun.c -- simple gunzip to give an example of the use of inflateBack() - * Copyright (C) 2003, 2005, 2008, 2010, 2012 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - Version 1.7 12 August 2012 Mark Adler */ - -/* Version history: - 1.0 16 Feb 2003 First version for testing of inflateBack() - 1.1 21 Feb 2005 Decompress concatenated gzip streams - Remove use of "this" variable (C++ keyword) - Fix return value for in() - Improve allocation failure checking - Add typecasting for void * structures - Add -h option for command version and usage - Add a bunch of comments - 1.2 20 Mar 2005 Add Unix compress (LZW) decompression - Copy file attributes from input file to output file - 1.3 12 Jun 2005 Add casts for error messages [Oberhumer] - 1.4 8 Dec 2006 LZW decompression speed improvements - 1.5 9 Feb 2008 Avoid warning in latest version of gcc - 1.6 17 Jan 2010 Avoid signed/unsigned comparison warnings - 1.7 12 Aug 2012 Update for z_const usage in zlib 1.2.8 - */ - -/* - gun [ -t ] [ name ... ] - - decompresses the data in the named gzip files. If no arguments are given, - gun will decompress from stdin to stdout. The names must end in .gz, -gz, - .z, -z, _z, or .Z. The uncompressed data will be written to a file name - with the suffix stripped. On success, the original file is deleted. On - failure, the output file is deleted. For most failures, the command will - continue to process the remaining names on the command line. A memory - allocation failure will abort the command. If -t is specified, then the - listed files or stdin will be tested as gzip files for integrity (without - checking for a proper suffix), no output will be written, and no files - will be deleted. - - Like gzip, gun allows concatenated gzip streams and will decompress them, - writing all of the uncompressed data to the output. Unlike gzip, gun allows - an empty file on input, and will produce no error writing an empty output - file. - - gun will also decompress files made by Unix compress, which uses LZW - compression. These files are automatically detected by virtue of their - magic header bytes. Since the end of Unix compress stream is marked by the - end-of-file, they cannot be concantenated. If a Unix compress stream is - encountered in an input file, it is the last stream in that file. - - Like gunzip and uncompress, the file attributes of the orignal compressed - file are maintained in the final uncompressed file, to the extent that the - user permissions allow it. - - On my Mac OS X PowerPC G4, gun is almost twice as fast as gunzip (version - 1.2.4) is on the same file, when gun is linked with zlib 1.2.2. Also the - LZW decompression provided by gun is about twice as fast as the standard - Unix uncompress command. - */ - -/* external functions and related types and constants */ -#include /* fprintf() */ -#include /* malloc(), free() */ -#include /* strerror(), strcmp(), strlen(), memcpy() */ -#include /* errno */ -#include /* open() */ -#include /* read(), write(), close(), chown(), unlink() */ -#include -#include /* stat(), chmod() */ -#include /* utime() */ -#include "zlib.h" /* inflateBackInit(), inflateBack(), */ - /* inflateBackEnd(), crc32() */ - -/* function declaration */ -#define local static - -/* buffer constants */ -#define SIZE 32768U /* input and output buffer sizes */ -#define PIECE 16384 /* limits i/o chunks for 16-bit int case */ - -/* structure for infback() to pass to input function in() -- it maintains the - input file and a buffer of size SIZE */ -struct ind { - int infile; - unsigned char *inbuf; -}; - -/* Load input buffer, assumed to be empty, and return bytes loaded and a - pointer to them. read() is called until the buffer is full, or until it - returns end-of-file or error. Return 0 on error. */ -local unsigned in(void *in_desc, z_const unsigned char **buf) -{ - int ret; - unsigned len; - unsigned char *next; - struct ind *me = (struct ind *)in_desc; - - next = me->inbuf; - *buf = next; - len = 0; - do { - ret = PIECE; - if ((unsigned)ret > SIZE - len) - ret = (int)(SIZE - len); - ret = (int)read(me->infile, next, ret); - if (ret == -1) { - len = 0; - break; - } - next += ret; - len += ret; - } while (ret != 0 && len < SIZE); - return len; -} - -/* structure for infback() to pass to output function out() -- it maintains the - output file, a running CRC-32 check on the output and the total number of - bytes output, both for checking against the gzip trailer. (The length in - the gzip trailer is stored modulo 2^32, so it's ok if a long is 32 bits and - the output is greater than 4 GB.) */ -struct outd { - int outfile; - int check; /* true if checking crc and total */ - unsigned long crc; - unsigned long total; -}; - -/* Write output buffer and update the CRC-32 and total bytes written. write() - is called until all of the output is written or an error is encountered. - On success out() returns 0. For a write failure, out() returns 1. If the - output file descriptor is -1, then nothing is written. - */ -local int out(void *out_desc, unsigned char *buf, unsigned len) -{ - int ret; - struct outd *me = (struct outd *)out_desc; - - if (me->check) { - me->crc = crc32(me->crc, buf, len); - me->total += len; - } - if (me->outfile != -1) - do { - ret = PIECE; - if ((unsigned)ret > len) - ret = (int)len; - ret = (int)write(me->outfile, buf, ret); - if (ret == -1) - return 1; - buf += ret; - len -= ret; - } while (len != 0); - return 0; -} - -/* next input byte macro for use inside lunpipe() and gunpipe() */ -#define NEXT() (have ? 0 : (have = in(indp, &next)), \ - last = have ? (have--, (int)(*next++)) : -1) - -/* memory for gunpipe() and lunpipe() -- - the first 256 entries of prefix[] and suffix[] are never used, could - have offset the index, but it's faster to waste the memory */ -unsigned char inbuf[SIZE]; /* input buffer */ -unsigned char outbuf[SIZE]; /* output buffer */ -unsigned short prefix[65536]; /* index to LZW prefix string */ -unsigned char suffix[65536]; /* one-character LZW suffix */ -unsigned char match[65280 + 2]; /* buffer for reversed match or gzip - 32K sliding window */ - -/* throw out what's left in the current bits byte buffer (this is a vestigial - aspect of the compressed data format derived from an implementation that - made use of a special VAX machine instruction!) */ -#define FLUSHCODE() \ - do { \ - left = 0; \ - rem = 0; \ - if (chunk > have) { \ - chunk -= have; \ - have = 0; \ - if (NEXT() == -1) \ - break; \ - chunk--; \ - if (chunk > have) { \ - chunk = have = 0; \ - break; \ - } \ - } \ - have -= chunk; \ - next += chunk; \ - chunk = 0; \ - } while (0) - -/* Decompress a compress (LZW) file from indp to outfile. The compress magic - header (two bytes) has already been read and verified. There are have bytes - of buffered input at next. strm is used for passing error information back - to gunpipe(). - - lunpipe() will return Z_OK on success, Z_BUF_ERROR for an unexpected end of - file, read error, or write error (a write error indicated by strm->next_in - not equal to Z_NULL), or Z_DATA_ERROR for invalid input. - */ -local int lunpipe(unsigned have, z_const unsigned char *next, struct ind *indp, - int outfile, z_stream *strm) -{ - int last; /* last byte read by NEXT(), or -1 if EOF */ - unsigned chunk; /* bytes left in current chunk */ - int left; /* bits left in rem */ - unsigned rem; /* unused bits from input */ - int bits; /* current bits per code */ - unsigned code; /* code, table traversal index */ - unsigned mask; /* mask for current bits codes */ - int max; /* maximum bits per code for this stream */ - unsigned flags; /* compress flags, then block compress flag */ - unsigned end; /* last valid entry in prefix/suffix tables */ - unsigned temp; /* current code */ - unsigned prev; /* previous code */ - unsigned final; /* last character written for previous code */ - unsigned stack; /* next position for reversed string */ - unsigned outcnt; /* bytes in output buffer */ - struct outd outd; /* output structure */ - unsigned char *p; - - /* set up output */ - outd.outfile = outfile; - outd.check = 0; - - /* process remainder of compress header -- a flags byte */ - flags = NEXT(); - if (last == -1) - return Z_BUF_ERROR; - if (flags & 0x60) { - strm->msg = (char *)"unknown lzw flags set"; - return Z_DATA_ERROR; - } - max = flags & 0x1f; - if (max < 9 || max > 16) { - strm->msg = (char *)"lzw bits out of range"; - return Z_DATA_ERROR; - } - if (max == 9) /* 9 doesn't really mean 9 */ - max = 10; - flags &= 0x80; /* true if block compress */ - - /* clear table */ - bits = 9; - mask = 0x1ff; - end = flags ? 256 : 255; - - /* set up: get first 9-bit code, which is the first decompressed byte, but - don't create a table entry until the next code */ - if (NEXT() == -1) /* no compressed data is ok */ - return Z_OK; - final = prev = (unsigned)last; /* low 8 bits of code */ - if (NEXT() == -1) /* missing a bit */ - return Z_BUF_ERROR; - if (last & 1) { /* code must be < 256 */ - strm->msg = (char *)"invalid lzw code"; - return Z_DATA_ERROR; - } - rem = (unsigned)last >> 1; /* remaining 7 bits */ - left = 7; - chunk = bits - 2; /* 7 bytes left in this chunk */ - outbuf[0] = (unsigned char)final; /* write first decompressed byte */ - outcnt = 1; - - /* decode codes */ - stack = 0; - for (;;) { - /* if the table will be full after this, increment the code size */ - if (end >= mask && bits < max) { - FLUSHCODE(); - bits++; - mask <<= 1; - mask++; - } - - /* get a code of length bits */ - if (chunk == 0) /* decrement chunk modulo bits */ - chunk = bits; - code = rem; /* low bits of code */ - if (NEXT() == -1) { /* EOF is end of compressed data */ - /* write remaining buffered output */ - if (outcnt && out(&outd, outbuf, outcnt)) { - strm->next_in = outbuf; /* signal write error */ - return Z_BUF_ERROR; - } - return Z_OK; - } - code += (unsigned)last << left; /* middle (or high) bits of code */ - left += 8; - chunk--; - if (bits > left) { /* need more bits */ - if (NEXT() == -1) /* can't end in middle of code */ - return Z_BUF_ERROR; - code += (unsigned)last << left; /* high bits of code */ - left += 8; - chunk--; - } - code &= mask; /* mask to current code length */ - left -= bits; /* number of unused bits */ - rem = (unsigned)last >> (8 - left); /* unused bits from last byte */ - - /* process clear code (256) */ - if (code == 256 && flags) { - FLUSHCODE(); - bits = 9; /* initialize bits and mask */ - mask = 0x1ff; - end = 255; /* empty table */ - continue; /* get next code */ - } - - /* special code to reuse last match */ - temp = code; /* save the current code */ - if (code > end) { - /* Be picky on the allowed code here, and make sure that the code - we drop through (prev) will be a valid index so that random - input does not cause an exception. The code != end + 1 check is - empirically derived, and not checked in the original uncompress - code. If this ever causes a problem, that check could be safely - removed. Leaving this check in greatly improves gun's ability - to detect random or corrupted input after a compress header. - In any case, the prev > end check must be retained. */ - if (code != end + 1 || prev > end) { - strm->msg = (char *)"invalid lzw code"; - return Z_DATA_ERROR; - } - match[stack++] = (unsigned char)final; - code = prev; - } - - /* walk through linked list to generate output in reverse order */ - p = match + stack; - while (code >= 256) { - *p++ = suffix[code]; - code = prefix[code]; - } - stack = p - match; - match[stack++] = (unsigned char)code; - final = code; - - /* link new table entry */ - if (end < mask) { - end++; - prefix[end] = (unsigned short)prev; - suffix[end] = (unsigned char)final; - } - - /* set previous code for next iteration */ - prev = temp; - - /* write output in forward order */ - while (stack > SIZE - outcnt) { - while (outcnt < SIZE) - outbuf[outcnt++] = match[--stack]; - if (out(&outd, outbuf, outcnt)) { - strm->next_in = outbuf; /* signal write error */ - return Z_BUF_ERROR; - } - outcnt = 0; - } - p = match + stack; - do { - outbuf[outcnt++] = *--p; - } while (p > match); - stack = 0; - - /* loop for next code with final and prev as the last match, rem and - left provide the first 0..7 bits of the next code, end is the last - valid table entry */ - } -} - -/* Decompress a gzip file from infile to outfile. strm is assumed to have been - successfully initialized with inflateBackInit(). The input file may consist - of a series of gzip streams, in which case all of them will be decompressed - to the output file. If outfile is -1, then the gzip stream(s) integrity is - checked and nothing is written. - - The return value is a zlib error code: Z_MEM_ERROR if out of memory, - Z_DATA_ERROR if the header or the compressed data is invalid, or if the - trailer CRC-32 check or length doesn't match, Z_BUF_ERROR if the input ends - prematurely or a write error occurs, or Z_ERRNO if junk (not a another gzip - stream) follows a valid gzip stream. - */ -local int gunpipe(z_stream *strm, int infile, int outfile) -{ - int ret, first, last; - unsigned have, flags, len; - z_const unsigned char *next = NULL; - struct ind ind, *indp; - struct outd outd; - - /* setup input buffer */ - ind.infile = infile; - ind.inbuf = inbuf; - indp = &ind; - - /* decompress concatenated gzip streams */ - have = 0; /* no input data read in yet */ - first = 1; /* looking for first gzip header */ - strm->next_in = Z_NULL; /* so Z_BUF_ERROR means EOF */ - for (;;) { - /* look for the two magic header bytes for a gzip stream */ - if (NEXT() == -1) { - ret = Z_OK; - break; /* empty gzip stream is ok */ - } - if (last != 31 || (NEXT() != 139 && last != 157)) { - strm->msg = (char *)"incorrect header check"; - ret = first ? Z_DATA_ERROR : Z_ERRNO; - break; /* not a gzip or compress header */ - } - first = 0; /* next non-header is junk */ - - /* process a compress (LZW) file -- can't be concatenated after this */ - if (last == 157) { - ret = lunpipe(have, next, indp, outfile, strm); - break; - } - - /* process remainder of gzip header */ - ret = Z_BUF_ERROR; - if (NEXT() != 8) { /* only deflate method allowed */ - if (last == -1) break; - strm->msg = (char *)"unknown compression method"; - ret = Z_DATA_ERROR; - break; - } - flags = NEXT(); /* header flags */ - NEXT(); /* discard mod time, xflgs, os */ - NEXT(); - NEXT(); - NEXT(); - NEXT(); - NEXT(); - if (last == -1) break; - if (flags & 0xe0) { - strm->msg = (char *)"unknown header flags set"; - ret = Z_DATA_ERROR; - break; - } - if (flags & 4) { /* extra field */ - len = NEXT(); - len += (unsigned)(NEXT()) << 8; - if (last == -1) break; - while (len > have) { - len -= have; - have = 0; - if (NEXT() == -1) break; - len--; - } - if (last == -1) break; - have -= len; - next += len; - } - if (flags & 8) /* file name */ - while (NEXT() != 0 && last != -1) - ; - if (flags & 16) /* comment */ - while (NEXT() != 0 && last != -1) - ; - if (flags & 2) { /* header crc */ - NEXT(); - NEXT(); - } - if (last == -1) break; - - /* set up output */ - outd.outfile = outfile; - outd.check = 1; - outd.crc = crc32(0L, Z_NULL, 0); - outd.total = 0; - - /* decompress data to output */ - strm->next_in = next; - strm->avail_in = have; - ret = inflateBack(strm, in, indp, out, &outd); - if (ret != Z_STREAM_END) break; - next = strm->next_in; - have = strm->avail_in; - strm->next_in = Z_NULL; /* so Z_BUF_ERROR means EOF */ - - /* check trailer */ - ret = Z_BUF_ERROR; - if (NEXT() != (int)(outd.crc & 0xff) || - NEXT() != (int)((outd.crc >> 8) & 0xff) || - NEXT() != (int)((outd.crc >> 16) & 0xff) || - NEXT() != (int)((outd.crc >> 24) & 0xff)) { - /* crc error */ - if (last != -1) { - strm->msg = (char *)"incorrect data check"; - ret = Z_DATA_ERROR; - } - break; - } - if (NEXT() != (int)(outd.total & 0xff) || - NEXT() != (int)((outd.total >> 8) & 0xff) || - NEXT() != (int)((outd.total >> 16) & 0xff) || - NEXT() != (int)((outd.total >> 24) & 0xff)) { - /* length error */ - if (last != -1) { - strm->msg = (char *)"incorrect length check"; - ret = Z_DATA_ERROR; - } - break; - } - - /* go back and look for another gzip stream */ - } - - /* clean up and return */ - return ret; -} - -/* Copy file attributes, from -> to, as best we can. This is best effort, so - no errors are reported. The mode bits, including suid, sgid, and the sticky - bit are copied (if allowed), the owner's user id and group id are copied - (again if allowed), and the access and modify times are copied. */ -local void copymeta(char *from, char *to) -{ - struct stat was; - struct utimbuf when; - - /* get all of from's Unix meta data, return if not a regular file */ - if (stat(from, &was) != 0 || (was.st_mode & S_IFMT) != S_IFREG) - return; - - /* set to's mode bits, ignore errors */ - (void)chmod(to, was.st_mode & 07777); - - /* copy owner's user and group, ignore errors */ - (void)chown(to, was.st_uid, was.st_gid); - - /* copy access and modify times, ignore errors */ - when.actime = was.st_atime; - when.modtime = was.st_mtime; - (void)utime(to, &when); -} - -/* Decompress the file inname to the file outnname, of if test is true, just - decompress without writing and check the gzip trailer for integrity. If - inname is NULL or an empty string, read from stdin. If outname is NULL or - an empty string, write to stdout. strm is a pre-initialized inflateBack - structure. When appropriate, copy the file attributes from inname to - outname. - - gunzip() returns 1 if there is an out-of-memory error or an unexpected - return code from gunpipe(). Otherwise it returns 0. - */ -local int gunzip(z_stream *strm, char *inname, char *outname, int test) -{ - int ret; - int infile, outfile; - - /* open files */ - if (inname == NULL || *inname == 0) { - inname = "-"; - infile = 0; /* stdin */ - } - else { - infile = open(inname, O_RDONLY, 0); - if (infile == -1) { - fprintf(stderr, "gun cannot open %s\n", inname); - return 0; - } - } - if (test) - outfile = -1; - else if (outname == NULL || *outname == 0) { - outname = "-"; - outfile = 1; /* stdout */ - } - else { - outfile = open(outname, O_CREAT | O_TRUNC | O_WRONLY, 0666); - if (outfile == -1) { - close(infile); - fprintf(stderr, "gun cannot create %s\n", outname); - return 0; - } - } - errno = 0; - - /* decompress */ - ret = gunpipe(strm, infile, outfile); - if (outfile > 2) close(outfile); - if (infile > 2) close(infile); - - /* interpret result */ - switch (ret) { - case Z_OK: - case Z_ERRNO: - if (infile > 2 && outfile > 2) { - copymeta(inname, outname); /* copy attributes */ - unlink(inname); - } - if (ret == Z_ERRNO) - fprintf(stderr, "gun warning: trailing garbage ignored in %s\n", - inname); - break; - case Z_DATA_ERROR: - if (outfile > 2) unlink(outname); - fprintf(stderr, "gun data error on %s: %s\n", inname, strm->msg); - break; - case Z_MEM_ERROR: - if (outfile > 2) unlink(outname); - fprintf(stderr, "gun out of memory error--aborting\n"); - return 1; - case Z_BUF_ERROR: - if (outfile > 2) unlink(outname); - if (strm->next_in != Z_NULL) { - fprintf(stderr, "gun write error on %s: %s\n", - outname, strerror(errno)); - } - else if (errno) { - fprintf(stderr, "gun read error on %s: %s\n", - inname, strerror(errno)); - } - else { - fprintf(stderr, "gun unexpected end of file on %s\n", - inname); - } - break; - default: - if (outfile > 2) unlink(outname); - fprintf(stderr, "gun internal error--aborting\n"); - return 1; - } - return 0; -} - -/* Process the gun command line arguments. See the command syntax near the - beginning of this source file. */ -int main(int argc, char **argv) -{ - int ret, len, test; - char *outname; - unsigned char *window; - z_stream strm; - - /* initialize inflateBack state for repeated use */ - window = match; /* reuse LZW match buffer */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - ret = inflateBackInit(&strm, 15, window); - if (ret != Z_OK) { - fprintf(stderr, "gun out of memory error--aborting\n"); - return 1; - } - - /* decompress each file to the same name with the suffix removed */ - argc--; - argv++; - test = 0; - if (argc && strcmp(*argv, "-h") == 0) { - fprintf(stderr, "gun 1.6 (17 Jan 2010)\n"); - fprintf(stderr, "Copyright (C) 2003-2010 Mark Adler\n"); - fprintf(stderr, "usage: gun [-t] [file1.gz [file2.Z ...]]\n"); - return 0; - } - if (argc && strcmp(*argv, "-t") == 0) { - test = 1; - argc--; - argv++; - } - if (argc) - do { - if (test) - outname = NULL; - else { - len = (int)strlen(*argv); - if (strcmp(*argv + len - 3, ".gz") == 0 || - strcmp(*argv + len - 3, "-gz") == 0) - len -= 3; - else if (strcmp(*argv + len - 2, ".z") == 0 || - strcmp(*argv + len - 2, "-z") == 0 || - strcmp(*argv + len - 2, "_z") == 0 || - strcmp(*argv + len - 2, ".Z") == 0) - len -= 2; - else { - fprintf(stderr, "gun error: no gz type on %s--skipping\n", - *argv); - continue; - } - outname = malloc(len + 1); - if (outname == NULL) { - fprintf(stderr, "gun out of memory error--aborting\n"); - ret = 1; - break; - } - memcpy(outname, *argv, len); - outname[len] = 0; - } - ret = gunzip(&strm, *argv, outname, test); - if (outname != NULL) free(outname); - if (ret) break; - } while (argv++, --argc); - else - ret = gunzip(&strm, NULL, NULL, test); - - /* clean up */ - inflateBackEnd(&strm); - return ret; -} diff --git a/io2d/src/3rd-party/zlib/examples/gzappend.c b/io2d/src/3rd-party/zlib/examples/gzappend.c deleted file mode 100644 index 662dec3..0000000 --- a/io2d/src/3rd-party/zlib/examples/gzappend.c +++ /dev/null @@ -1,504 +0,0 @@ -/* gzappend -- command to append to a gzip file - - Copyright (C) 2003, 2012 Mark Adler, all rights reserved - version 1.2, 11 Oct 2012 - - This software is provided 'as-is', without any express or implied - warranty. In no event will the author be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Mark Adler madler@alumni.caltech.edu - */ - -/* - * Change history: - * - * 1.0 19 Oct 2003 - First version - * 1.1 4 Nov 2003 - Expand and clarify some comments and notes - * - Add version and copyright to help - * - Send help to stdout instead of stderr - * - Add some preemptive typecasts - * - Add L to constants in lseek() calls - * - Remove some debugging information in error messages - * - Use new data_type definition for zlib 1.2.1 - * - Simplfy and unify file operations - * - Finish off gzip file in gztack() - * - Use deflatePrime() instead of adding empty blocks - * - Keep gzip file clean on appended file read errors - * - Use in-place rotate instead of auxiliary buffer - * (Why you ask? Because it was fun to write!) - * 1.2 11 Oct 2012 - Fix for proper z_const usage - * - Check for input buffer malloc failure - */ - -/* - gzappend takes a gzip file and appends to it, compressing files from the - command line or data from stdin. The gzip file is written to directly, to - avoid copying that file, in case it's large. Note that this results in the - unfriendly behavior that if gzappend fails, the gzip file is corrupted. - - This program was written to illustrate the use of the new Z_BLOCK option of - zlib 1.2.x's inflate() function. This option returns from inflate() at each - block boundary to facilitate locating and modifying the last block bit at - the start of the final deflate block. Also whether using Z_BLOCK or not, - another required feature of zlib 1.2.x is that inflate() now provides the - number of unusued bits in the last input byte used. gzappend will not work - with versions of zlib earlier than 1.2.1. - - gzappend first decompresses the gzip file internally, discarding all but - the last 32K of uncompressed data, and noting the location of the last block - bit and the number of unused bits in the last byte of the compressed data. - The gzip trailer containing the CRC-32 and length of the uncompressed data - is verified. This trailer will be later overwritten. - - Then the last block bit is cleared by seeking back in the file and rewriting - the byte that contains it. Seeking forward, the last byte of the compressed - data is saved along with the number of unused bits to initialize deflate. - - A deflate process is initialized, using the last 32K of the uncompressed - data from the gzip file to initialize the dictionary. If the total - uncompressed data was less than 32K, then all of it is used to initialize - the dictionary. The deflate output bit buffer is also initialized with the - last bits from the original deflate stream. From here on, the data to - append is simply compressed using deflate, and written to the gzip file. - When that is complete, the new CRC-32 and uncompressed length are written - as the trailer of the gzip file. - */ - -#include -#include -#include -#include -#include -#include "zlib.h" - -#define local static -#define LGCHUNK 14 -#define CHUNK (1U << LGCHUNK) -#define DSIZE 32768U - -/* print an error message and terminate with extreme prejudice */ -local void bye(char *msg1, char *msg2) -{ - fprintf(stderr, "gzappend error: %s%s\n", msg1, msg2); - exit(1); -} - -/* return the greatest common divisor of a and b using Euclid's algorithm, - modified to be fast when one argument much greater than the other, and - coded to avoid unnecessary swapping */ -local unsigned gcd(unsigned a, unsigned b) -{ - unsigned c; - - while (a && b) - if (a > b) { - c = b; - while (a - c >= c) - c <<= 1; - a -= c; - } - else { - c = a; - while (b - c >= c) - c <<= 1; - b -= c; - } - return a + b; -} - -/* rotate list[0..len-1] left by rot positions, in place */ -local void rotate(unsigned char *list, unsigned len, unsigned rot) -{ - unsigned char tmp; - unsigned cycles; - unsigned char *start, *last, *to, *from; - - /* normalize rot and handle degenerate cases */ - if (len < 2) return; - if (rot >= len) rot %= len; - if (rot == 0) return; - - /* pointer to last entry in list */ - last = list + (len - 1); - - /* do simple left shift by one */ - if (rot == 1) { - tmp = *list; - memcpy(list, list + 1, len - 1); - *last = tmp; - return; - } - - /* do simple right shift by one */ - if (rot == len - 1) { - tmp = *last; - memmove(list + 1, list, len - 1); - *list = tmp; - return; - } - - /* otherwise do rotate as a set of cycles in place */ - cycles = gcd(len, rot); /* number of cycles */ - do { - start = from = list + cycles; /* start index is arbitrary */ - tmp = *from; /* save entry to be overwritten */ - for (;;) { - to = from; /* next step in cycle */ - from += rot; /* go right rot positions */ - if (from > last) from -= len; /* (pointer better not wrap) */ - if (from == start) break; /* all but one shifted */ - *to = *from; /* shift left */ - } - *to = tmp; /* complete the circle */ - } while (--cycles); -} - -/* structure for gzip file read operations */ -typedef struct { - int fd; /* file descriptor */ - int size; /* 1 << size is bytes in buf */ - unsigned left; /* bytes available at next */ - unsigned char *buf; /* buffer */ - z_const unsigned char *next; /* next byte in buffer */ - char *name; /* file name for error messages */ -} file; - -/* reload buffer */ -local int readin(file *in) -{ - int len; - - len = read(in->fd, in->buf, 1 << in->size); - if (len == -1) bye("error reading ", in->name); - in->left = (unsigned)len; - in->next = in->buf; - return len; -} - -/* read from file in, exit if end-of-file */ -local int readmore(file *in) -{ - if (readin(in) == 0) bye("unexpected end of ", in->name); - return 0; -} - -#define read1(in) (in->left == 0 ? readmore(in) : 0, \ - in->left--, *(in->next)++) - -/* skip over n bytes of in */ -local void skip(file *in, unsigned n) -{ - unsigned bypass; - - if (n > in->left) { - n -= in->left; - bypass = n & ~((1U << in->size) - 1); - if (bypass) { - if (lseek(in->fd, (off_t)bypass, SEEK_CUR) == -1) - bye("seeking ", in->name); - n -= bypass; - } - readmore(in); - if (n > in->left) - bye("unexpected end of ", in->name); - } - in->left -= n; - in->next += n; -} - -/* read a four-byte unsigned integer, little-endian, from in */ -unsigned long read4(file *in) -{ - unsigned long val; - - val = read1(in); - val += (unsigned)read1(in) << 8; - val += (unsigned long)read1(in) << 16; - val += (unsigned long)read1(in) << 24; - return val; -} - -/* skip over gzip header */ -local void gzheader(file *in) -{ - int flags; - unsigned n; - - if (read1(in) != 31 || read1(in) != 139) bye(in->name, " not a gzip file"); - if (read1(in) != 8) bye("unknown compression method in", in->name); - flags = read1(in); - if (flags & 0xe0) bye("unknown header flags set in", in->name); - skip(in, 6); - if (flags & 4) { - n = read1(in); - n += (unsigned)(read1(in)) << 8; - skip(in, n); - } - if (flags & 8) while (read1(in) != 0) ; - if (flags & 16) while (read1(in) != 0) ; - if (flags & 2) skip(in, 2); -} - -/* decompress gzip file "name", return strm with a deflate stream ready to - continue compression of the data in the gzip file, and return a file - descriptor pointing to where to write the compressed data -- the deflate - stream is initialized to compress using level "level" */ -local int gzscan(char *name, z_stream *strm, int level) -{ - int ret, lastbit, left, full; - unsigned have; - unsigned long crc, tot; - unsigned char *window; - off_t lastoff, end; - file gz; - - /* open gzip file */ - gz.name = name; - gz.fd = open(name, O_RDWR, 0); - if (gz.fd == -1) bye("cannot open ", name); - gz.buf = malloc(CHUNK); - if (gz.buf == NULL) bye("out of memory", ""); - gz.size = LGCHUNK; - gz.left = 0; - - /* skip gzip header */ - gzheader(&gz); - - /* prepare to decompress */ - window = malloc(DSIZE); - if (window == NULL) bye("out of memory", ""); - strm->zalloc = Z_NULL; - strm->zfree = Z_NULL; - strm->opaque = Z_NULL; - ret = inflateInit2(strm, -15); - if (ret != Z_OK) bye("out of memory", " or library mismatch"); - - /* decompress the deflate stream, saving append information */ - lastbit = 0; - lastoff = lseek(gz.fd, 0L, SEEK_CUR) - gz.left; - left = 0; - strm->avail_in = gz.left; - strm->next_in = gz.next; - crc = crc32(0L, Z_NULL, 0); - have = full = 0; - do { - /* if needed, get more input */ - if (strm->avail_in == 0) { - readmore(&gz); - strm->avail_in = gz.left; - strm->next_in = gz.next; - } - - /* set up output to next available section of sliding window */ - strm->avail_out = DSIZE - have; - strm->next_out = window + have; - - /* inflate and check for errors */ - ret = inflate(strm, Z_BLOCK); - if (ret == Z_STREAM_ERROR) bye("internal stream error!", ""); - if (ret == Z_MEM_ERROR) bye("out of memory", ""); - if (ret == Z_DATA_ERROR) - bye("invalid compressed data--format violated in", name); - - /* update crc and sliding window pointer */ - crc = crc32(crc, window + have, DSIZE - have - strm->avail_out); - if (strm->avail_out) - have = DSIZE - strm->avail_out; - else { - have = 0; - full = 1; - } - - /* process end of block */ - if (strm->data_type & 128) { - if (strm->data_type & 64) - left = strm->data_type & 0x1f; - else { - lastbit = strm->data_type & 0x1f; - lastoff = lseek(gz.fd, 0L, SEEK_CUR) - strm->avail_in; - } - } - } while (ret != Z_STREAM_END); - inflateEnd(strm); - gz.left = strm->avail_in; - gz.next = strm->next_in; - - /* save the location of the end of the compressed data */ - end = lseek(gz.fd, 0L, SEEK_CUR) - gz.left; - - /* check gzip trailer and save total for deflate */ - if (crc != read4(&gz)) - bye("invalid compressed data--crc mismatch in ", name); - tot = strm->total_out; - if ((tot & 0xffffffffUL) != read4(&gz)) - bye("invalid compressed data--length mismatch in", name); - - /* if not at end of file, warn */ - if (gz.left || readin(&gz)) - fprintf(stderr, - "gzappend warning: junk at end of gzip file overwritten\n"); - - /* clear last block bit */ - lseek(gz.fd, lastoff - (lastbit != 0), SEEK_SET); - if (read(gz.fd, gz.buf, 1) != 1) bye("reading after seek on ", name); - *gz.buf = (unsigned char)(*gz.buf ^ (1 << ((8 - lastbit) & 7))); - lseek(gz.fd, -1L, SEEK_CUR); - if (write(gz.fd, gz.buf, 1) != 1) bye("writing after seek to ", name); - - /* if window wrapped, build dictionary from window by rotating */ - if (full) { - rotate(window, DSIZE, have); - have = DSIZE; - } - - /* set up deflate stream with window, crc, total_in, and leftover bits */ - ret = deflateInit2(strm, level, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY); - if (ret != Z_OK) bye("out of memory", ""); - deflateSetDictionary(strm, window, have); - strm->adler = crc; - strm->total_in = tot; - if (left) { - lseek(gz.fd, --end, SEEK_SET); - if (read(gz.fd, gz.buf, 1) != 1) bye("reading after seek on ", name); - deflatePrime(strm, 8 - left, *gz.buf); - } - lseek(gz.fd, end, SEEK_SET); - - /* clean up and return */ - free(window); - free(gz.buf); - return gz.fd; -} - -/* append file "name" to gzip file gd using deflate stream strm -- if last - is true, then finish off the deflate stream at the end */ -local void gztack(char *name, int gd, z_stream *strm, int last) -{ - int fd, len, ret; - unsigned left; - unsigned char *in, *out; - - /* open file to compress and append */ - fd = 0; - if (name != NULL) { - fd = open(name, O_RDONLY, 0); - if (fd == -1) - fprintf(stderr, "gzappend warning: %s not found, skipping ...\n", - name); - } - - /* allocate buffers */ - in = malloc(CHUNK); - out = malloc(CHUNK); - if (in == NULL || out == NULL) bye("out of memory", ""); - - /* compress input file and append to gzip file */ - do { - /* get more input */ - len = read(fd, in, CHUNK); - if (len == -1) { - fprintf(stderr, - "gzappend warning: error reading %s, skipping rest ...\n", - name); - len = 0; - } - strm->avail_in = (unsigned)len; - strm->next_in = in; - if (len) strm->adler = crc32(strm->adler, in, (unsigned)len); - - /* compress and write all available output */ - do { - strm->avail_out = CHUNK; - strm->next_out = out; - ret = deflate(strm, last && len == 0 ? Z_FINISH : Z_NO_FLUSH); - left = CHUNK - strm->avail_out; - while (left) { - len = write(gd, out + CHUNK - strm->avail_out - left, left); - if (len == -1) bye("writing gzip file", ""); - left -= (unsigned)len; - } - } while (strm->avail_out == 0 && ret != Z_STREAM_END); - } while (len != 0); - - /* write trailer after last entry */ - if (last) { - deflateEnd(strm); - out[0] = (unsigned char)(strm->adler); - out[1] = (unsigned char)(strm->adler >> 8); - out[2] = (unsigned char)(strm->adler >> 16); - out[3] = (unsigned char)(strm->adler >> 24); - out[4] = (unsigned char)(strm->total_in); - out[5] = (unsigned char)(strm->total_in >> 8); - out[6] = (unsigned char)(strm->total_in >> 16); - out[7] = (unsigned char)(strm->total_in >> 24); - len = 8; - do { - ret = write(gd, out + 8 - len, len); - if (ret == -1) bye("writing gzip file", ""); - len -= ret; - } while (len); - close(gd); - } - - /* clean up and return */ - free(out); - free(in); - if (fd > 0) close(fd); -} - -/* process the compression level option if present, scan the gzip file, and - append the specified files, or append the data from stdin if no other file - names are provided on the command line -- the gzip file must be writable - and seekable */ -int main(int argc, char **argv) -{ - int gd, level; - z_stream strm; - - /* ignore command name */ - argc--; argv++; - - /* provide usage if no arguments */ - if (*argv == NULL) { - printf( - "gzappend 1.2 (11 Oct 2012) Copyright (C) 2003, 2012 Mark Adler\n" - ); - printf( - "usage: gzappend [-level] file.gz [ addthis [ andthis ... ]]\n"); - return 0; - } - - /* set compression level */ - level = Z_DEFAULT_COMPRESSION; - if (argv[0][0] == '-') { - if (argv[0][1] < '0' || argv[0][1] > '9' || argv[0][2] != 0) - bye("invalid compression level", ""); - level = argv[0][1] - '0'; - if (*++argv == NULL) bye("no gzip file name after options", ""); - } - - /* prepare to append to gzip file */ - gd = gzscan(*argv++, &strm, level); - - /* append files on command line, or from stdin if none */ - if (*argv == NULL) - gztack(NULL, gd, &strm, 1); - else - do { - gztack(*argv, gd, &strm, argv[1] == NULL); - } while (*++argv != NULL); - return 0; -} diff --git a/io2d/src/3rd-party/zlib/examples/gzjoin.c b/io2d/src/3rd-party/zlib/examples/gzjoin.c deleted file mode 100644 index 89e8098..0000000 --- a/io2d/src/3rd-party/zlib/examples/gzjoin.c +++ /dev/null @@ -1,449 +0,0 @@ -/* gzjoin -- command to join gzip files into one gzip file - - Copyright (C) 2004, 2005, 2012 Mark Adler, all rights reserved - version 1.2, 14 Aug 2012 - - This software is provided 'as-is', without any express or implied - warranty. In no event will the author be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Mark Adler madler@alumni.caltech.edu - */ - -/* - * Change history: - * - * 1.0 11 Dec 2004 - First version - * 1.1 12 Jun 2005 - Changed ssize_t to long for portability - * 1.2 14 Aug 2012 - Clean up for z_const usage - */ - -/* - gzjoin takes one or more gzip files on the command line and writes out a - single gzip file that will uncompress to the concatenation of the - uncompressed data from the individual gzip files. gzjoin does this without - having to recompress any of the data and without having to calculate a new - crc32 for the concatenated uncompressed data. gzjoin does however have to - decompress all of the input data in order to find the bits in the compressed - data that need to be modified to concatenate the streams. - - gzjoin does not do an integrity check on the input gzip files other than - checking the gzip header and decompressing the compressed data. They are - otherwise assumed to be complete and correct. - - Each joint between gzip files removes at least 18 bytes of previous trailer - and subsequent header, and inserts an average of about three bytes to the - compressed data in order to connect the streams. The output gzip file - has a minimal ten-byte gzip header with no file name or modification time. - - This program was written to illustrate the use of the Z_BLOCK option of - inflate() and the crc32_combine() function. gzjoin will not compile with - versions of zlib earlier than 1.2.3. - */ - -#include /* fputs(), fprintf(), fwrite(), putc() */ -#include /* exit(), malloc(), free() */ -#include /* open() */ -#include /* close(), read(), lseek() */ -#include "zlib.h" - /* crc32(), crc32_combine(), inflateInit2(), inflate(), inflateEnd() */ - -#define local static - -/* exit with an error (return a value to allow use in an expression) */ -local int bail(char *why1, char *why2) -{ - fprintf(stderr, "gzjoin error: %s%s, output incomplete\n", why1, why2); - exit(1); - return 0; -} - -/* -- simple buffered file input with access to the buffer -- */ - -#define CHUNK 32768 /* must be a power of two and fit in unsigned */ - -/* bin buffered input file type */ -typedef struct { - char *name; /* name of file for error messages */ - int fd; /* file descriptor */ - unsigned left; /* bytes remaining at next */ - unsigned char *next; /* next byte to read */ - unsigned char *buf; /* allocated buffer of length CHUNK */ -} bin; - -/* close a buffered file and free allocated memory */ -local void bclose(bin *in) -{ - if (in != NULL) { - if (in->fd != -1) - close(in->fd); - if (in->buf != NULL) - free(in->buf); - free(in); - } -} - -/* open a buffered file for input, return a pointer to type bin, or NULL on - failure */ -local bin *bopen(char *name) -{ - bin *in; - - in = malloc(sizeof(bin)); - if (in == NULL) - return NULL; - in->buf = malloc(CHUNK); - in->fd = open(name, O_RDONLY, 0); - if (in->buf == NULL || in->fd == -1) { - bclose(in); - return NULL; - } - in->left = 0; - in->next = in->buf; - in->name = name; - return in; -} - -/* load buffer from file, return -1 on read error, 0 or 1 on success, with - 1 indicating that end-of-file was reached */ -local int bload(bin *in) -{ - long len; - - if (in == NULL) - return -1; - if (in->left != 0) - return 0; - in->next = in->buf; - do { - len = (long)read(in->fd, in->buf + in->left, CHUNK - in->left); - if (len < 0) - return -1; - in->left += (unsigned)len; - } while (len != 0 && in->left < CHUNK); - return len == 0 ? 1 : 0; -} - -/* get a byte from the file, bail if end of file */ -#define bget(in) (in->left ? 0 : bload(in), \ - in->left ? (in->left--, *(in->next)++) : \ - bail("unexpected end of file on ", in->name)) - -/* get a four-byte little-endian unsigned integer from file */ -local unsigned long bget4(bin *in) -{ - unsigned long val; - - val = bget(in); - val += (unsigned long)(bget(in)) << 8; - val += (unsigned long)(bget(in)) << 16; - val += (unsigned long)(bget(in)) << 24; - return val; -} - -/* skip bytes in file */ -local void bskip(bin *in, unsigned skip) -{ - /* check pointer */ - if (in == NULL) - return; - - /* easy case -- skip bytes in buffer */ - if (skip <= in->left) { - in->left -= skip; - in->next += skip; - return; - } - - /* skip what's in buffer, discard buffer contents */ - skip -= in->left; - in->left = 0; - - /* seek past multiples of CHUNK bytes */ - if (skip > CHUNK) { - unsigned left; - - left = skip & (CHUNK - 1); - if (left == 0) { - /* exact number of chunks: seek all the way minus one byte to check - for end-of-file with a read */ - lseek(in->fd, skip - 1, SEEK_CUR); - if (read(in->fd, in->buf, 1) != 1) - bail("unexpected end of file on ", in->name); - return; - } - - /* skip the integral chunks, update skip with remainder */ - lseek(in->fd, skip - left, SEEK_CUR); - skip = left; - } - - /* read more input and skip remainder */ - bload(in); - if (skip > in->left) - bail("unexpected end of file on ", in->name); - in->left -= skip; - in->next += skip; -} - -/* -- end of buffered input functions -- */ - -/* skip the gzip header from file in */ -local void gzhead(bin *in) -{ - int flags; - - /* verify gzip magic header and compression method */ - if (bget(in) != 0x1f || bget(in) != 0x8b || bget(in) != 8) - bail(in->name, " is not a valid gzip file"); - - /* get and verify flags */ - flags = bget(in); - if ((flags & 0xe0) != 0) - bail("unknown reserved bits set in ", in->name); - - /* skip modification time, extra flags, and os */ - bskip(in, 6); - - /* skip extra field if present */ - if (flags & 4) { - unsigned len; - - len = bget(in); - len += (unsigned)(bget(in)) << 8; - bskip(in, len); - } - - /* skip file name if present */ - if (flags & 8) - while (bget(in) != 0) - ; - - /* skip comment if present */ - if (flags & 16) - while (bget(in) != 0) - ; - - /* skip header crc if present */ - if (flags & 2) - bskip(in, 2); -} - -/* write a four-byte little-endian unsigned integer to out */ -local void put4(unsigned long val, FILE *out) -{ - putc(val & 0xff, out); - putc((val >> 8) & 0xff, out); - putc((val >> 16) & 0xff, out); - putc((val >> 24) & 0xff, out); -} - -/* Load up zlib stream from buffered input, bail if end of file */ -local void zpull(z_streamp strm, bin *in) -{ - if (in->left == 0) - bload(in); - if (in->left == 0) - bail("unexpected end of file on ", in->name); - strm->avail_in = in->left; - strm->next_in = in->next; -} - -/* Write header for gzip file to out and initialize trailer. */ -local void gzinit(unsigned long *crc, unsigned long *tot, FILE *out) -{ - fwrite("\x1f\x8b\x08\0\0\0\0\0\0\xff", 1, 10, out); - *crc = crc32(0L, Z_NULL, 0); - *tot = 0; -} - -/* Copy the compressed data from name, zeroing the last block bit of the last - block if clr is true, and adding empty blocks as needed to get to a byte - boundary. If clr is false, then the last block becomes the last block of - the output, and the gzip trailer is written. crc and tot maintains the - crc and length (modulo 2^32) of the output for the trailer. The resulting - gzip file is written to out. gzinit() must be called before the first call - of gzcopy() to write the gzip header and to initialize crc and tot. */ -local void gzcopy(char *name, int clr, unsigned long *crc, unsigned long *tot, - FILE *out) -{ - int ret; /* return value from zlib functions */ - int pos; /* where the "last block" bit is in byte */ - int last; /* true if processing the last block */ - bin *in; /* buffered input file */ - unsigned char *start; /* start of compressed data in buffer */ - unsigned char *junk; /* buffer for uncompressed data -- discarded */ - z_off_t len; /* length of uncompressed data (support > 4 GB) */ - z_stream strm; /* zlib inflate stream */ - - /* open gzip file and skip header */ - in = bopen(name); - if (in == NULL) - bail("could not open ", name); - gzhead(in); - - /* allocate buffer for uncompressed data and initialize raw inflate - stream */ - junk = malloc(CHUNK); - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit2(&strm, -15); - if (junk == NULL || ret != Z_OK) - bail("out of memory", ""); - - /* inflate and copy compressed data, clear last-block bit if requested */ - len = 0; - zpull(&strm, in); - start = in->next; - last = start[0] & 1; - if (last && clr) - start[0] &= ~1; - strm.avail_out = 0; - for (;;) { - /* if input used and output done, write used input and get more */ - if (strm.avail_in == 0 && strm.avail_out != 0) { - fwrite(start, 1, strm.next_in - start, out); - start = in->buf; - in->left = 0; - zpull(&strm, in); - } - - /* decompress -- return early when end-of-block reached */ - strm.avail_out = CHUNK; - strm.next_out = junk; - ret = inflate(&strm, Z_BLOCK); - switch (ret) { - case Z_MEM_ERROR: - bail("out of memory", ""); - case Z_DATA_ERROR: - bail("invalid compressed data in ", in->name); - } - - /* update length of uncompressed data */ - len += CHUNK - strm.avail_out; - - /* check for block boundary (only get this when block copied out) */ - if (strm.data_type & 128) { - /* if that was the last block, then done */ - if (last) - break; - - /* number of unused bits in last byte */ - pos = strm.data_type & 7; - - /* find the next last-block bit */ - if (pos != 0) { - /* next last-block bit is in last used byte */ - pos = 0x100 >> pos; - last = strm.next_in[-1] & pos; - if (last && clr) - in->buf[strm.next_in - in->buf - 1] &= ~pos; - } - else { - /* next last-block bit is in next unused byte */ - if (strm.avail_in == 0) { - /* don't have that byte yet -- get it */ - fwrite(start, 1, strm.next_in - start, out); - start = in->buf; - in->left = 0; - zpull(&strm, in); - } - last = strm.next_in[0] & 1; - if (last && clr) - in->buf[strm.next_in - in->buf] &= ~1; - } - } - } - - /* update buffer with unused input */ - in->left = strm.avail_in; - in->next = in->buf + (strm.next_in - in->buf); - - /* copy used input, write empty blocks to get to byte boundary */ - pos = strm.data_type & 7; - fwrite(start, 1, in->next - start - 1, out); - last = in->next[-1]; - if (pos == 0 || !clr) - /* already at byte boundary, or last file: write last byte */ - putc(last, out); - else { - /* append empty blocks to last byte */ - last &= ((0x100 >> pos) - 1); /* assure unused bits are zero */ - if (pos & 1) { - /* odd -- append an empty stored block */ - putc(last, out); - if (pos == 1) - putc(0, out); /* two more bits in block header */ - fwrite("\0\0\xff\xff", 1, 4, out); - } - else { - /* even -- append 1, 2, or 3 empty fixed blocks */ - switch (pos) { - case 6: - putc(last | 8, out); - last = 0; - case 4: - putc(last | 0x20, out); - last = 0; - case 2: - putc(last | 0x80, out); - putc(0, out); - } - } - } - - /* update crc and tot */ - *crc = crc32_combine(*crc, bget4(in), len); - *tot += (unsigned long)len; - - /* clean up */ - inflateEnd(&strm); - free(junk); - bclose(in); - - /* write trailer if this is the last gzip file */ - if (!clr) { - put4(*crc, out); - put4(*tot, out); - } -} - -/* join the gzip files on the command line, write result to stdout */ -int main(int argc, char **argv) -{ - unsigned long crc, tot; /* running crc and total uncompressed length */ - - /* skip command name */ - argc--; - argv++; - - /* show usage if no arguments */ - if (argc == 0) { - fputs("gzjoin usage: gzjoin f1.gz [f2.gz [f3.gz ...]] > fjoin.gz\n", - stderr); - return 0; - } - - /* join gzip files on command line and write to stdout */ - gzinit(&crc, &tot, stdout); - while (argc--) - gzcopy(*argv++, argc, &crc, &tot, stdout); - - /* done */ - return 0; -} diff --git a/io2d/src/3rd-party/zlib/examples/gzlog.c b/io2d/src/3rd-party/zlib/examples/gzlog.c deleted file mode 100644 index 922f878..0000000 --- a/io2d/src/3rd-party/zlib/examples/gzlog.c +++ /dev/null @@ -1,1059 +0,0 @@ -/* - * gzlog.c - * Copyright (C) 2004, 2008, 2012 Mark Adler, all rights reserved - * For conditions of distribution and use, see copyright notice in gzlog.h - * version 2.2, 14 Aug 2012 - */ - -/* - gzlog provides a mechanism for frequently appending short strings to a gzip - file that is efficient both in execution time and compression ratio. The - strategy is to write the short strings in an uncompressed form to the end of - the gzip file, only compressing when the amount of uncompressed data has - reached a given threshold. - - gzlog also provides protection against interruptions in the process due to - system crashes. The status of the operation is recorded in an extra field - in the gzip file, and is only updated once the gzip file is brought to a - valid state. The last data to be appended or compressed is saved in an - auxiliary file, so that if the operation is interrupted, it can be completed - the next time an append operation is attempted. - - gzlog maintains another auxiliary file with the last 32K of data from the - compressed portion, which is preloaded for the compression of the subsequent - data. This minimizes the impact to the compression ratio of appending. - */ - -/* - Operations Concept: - - Files (log name "foo"): - foo.gz -- gzip file with the complete log - foo.add -- last message to append or last data to compress - foo.dict -- dictionary of the last 32K of data for next compression - foo.temp -- temporary dictionary file for compression after this one - foo.lock -- lock file for reading and writing the other files - foo.repairs -- log file for log file recovery operations (not compressed) - - gzip file structure: - - fixed-length (no file name) header with extra field (see below) - - compressed data ending initially with empty stored block - - uncompressed data filling out originally empty stored block and - subsequent stored blocks as needed (16K max each) - - gzip trailer - - no junk at end (no other gzip streams) - - When appending data, the information in the first three items above plus the - foo.add file are sufficient to recover an interrupted append operation. The - extra field has the necessary information to restore the start of the last - stored block and determine where to append the data in the foo.add file, as - well as the crc and length of the gzip data before the append operation. - - The foo.add file is created before the gzip file is marked for append, and - deleted after the gzip file is marked as complete. So if the append - operation is interrupted, the data to add will still be there. If due to - some external force, the foo.add file gets deleted between when the append - operation was interrupted and when recovery is attempted, the gzip file will - still be restored, but without the appended data. - - When compressing data, the information in the first two items above plus the - foo.add file are sufficient to recover an interrupted compress operation. - The extra field has the necessary information to find the end of the - compressed data, and contains both the crc and length of just the compressed - data and of the complete set of data including the contents of the foo.add - file. - - Again, the foo.add file is maintained during the compress operation in case - of an interruption. If in the unlikely event the foo.add file with the data - to be compressed is missing due to some external force, a gzip file with - just the previous compressed data will be reconstructed. In this case, all - of the data that was to be compressed is lost (approximately one megabyte). - This will not occur if all that happened was an interruption of the compress - operation. - - The third state that is marked is the replacement of the old dictionary with - the new dictionary after a compress operation. Once compression is - complete, the gzip file is marked as being in the replace state. This - completes the gzip file, so an interrupt after being so marked does not - result in recompression. Then the dictionary file is replaced, and the gzip - file is marked as completed. This state prevents the possibility of - restarting compression with the wrong dictionary file. - - All three operations are wrapped by a lock/unlock procedure. In order to - gain exclusive access to the log files, first a foo.lock file must be - exclusively created. When all operations are complete, the lock is - released by deleting the foo.lock file. If when attempting to create the - lock file, it already exists and the modify time of the lock file is more - than five minutes old (set by the PATIENCE define below), then the old - lock file is considered stale and deleted, and the exclusive creation of - the lock file is retried. To assure that there are no false assessments - of the staleness of the lock file, the operations periodically touch the - lock file to update the modified date. - - Following is the definition of the extra field with all of the information - required to enable the above append and compress operations and their - recovery if interrupted. Multi-byte values are stored little endian - (consistent with the gzip format). File pointers are eight bytes long. - The crc's and lengths for the gzip trailer are four bytes long. (Note that - the length at the end of a gzip file is used for error checking only, and - for large files is actually the length modulo 2^32.) The stored block - length is two bytes long. The gzip extra field two-byte identification is - "ap" for append. It is assumed that writing the extra field to the file is - an "atomic" operation. That is, either all of the extra field is written - to the file, or none of it is, if the operation is interrupted right at the - point of updating the extra field. This is a reasonable assumption, since - the extra field is within the first 52 bytes of the file, which is smaller - than any expected block size for a mass storage device (usually 512 bytes or - larger). - - Extra field (35 bytes): - - Pointer to first stored block length -- this points to the two-byte length - of the first stored block, which is followed by the two-byte, one's - complement of that length. The stored block length is preceded by the - three-bit header of the stored block, which is the actual start of the - stored block in the deflate format. See the bit offset field below. - - Pointer to the last stored block length. This is the same as above, but - for the last stored block of the uncompressed data in the gzip file. - Initially this is the same as the first stored block length pointer. - When the stored block gets to 16K (see the MAX_STORE define), then a new - stored block as added, at which point the last stored block length pointer - is different from the first stored block length pointer. When they are - different, the first bit of the last stored block header is eight bits, or - one byte back from the block length. - - Compressed data crc and length. This is the crc and length of the data - that is in the compressed portion of the deflate stream. These are used - only in the event that the foo.add file containing the data to compress is - lost after a compress operation is interrupted. - - Total data crc and length. This is the crc and length of all of the data - stored in the gzip file, compressed and uncompressed. It is used to - reconstruct the gzip trailer when compressing, as well as when recovering - interrupted operations. - - Final stored block length. This is used to quickly find where to append, - and allows the restoration of the original final stored block state when - an append operation is interrupted. - - First stored block start as the number of bits back from the final stored - block first length byte. This value is in the range of 3..10, and is - stored as the low three bits of the final byte of the extra field after - subtracting three (0..7). This allows the last-block bit of the stored - block header to be updated when a new stored block is added, for the case - when the first stored block and the last stored block are the same. (When - they are different, the numbers of bits back is known to be eight.) This - also allows for new compressed data to be appended to the old compressed - data in the compress operation, overwriting the previous first stored - block, or for the compressed data to be terminated and a valid gzip file - reconstructed on the off chance that a compression operation was - interrupted and the data to compress in the foo.add file was deleted. - - The operation in process. This is the next two bits in the last byte (the - bits under the mask 0x18). The are interpreted as 0: nothing in process, - 1: append in process, 2: compress in process, 3: replace in process. - - The top three bits of the last byte in the extra field are reserved and - are currently set to zero. - - Main procedure: - - Exclusively create the foo.lock file using the O_CREAT and O_EXCL modes of - the system open() call. If the modify time of an existing lock file is - more than PATIENCE seconds old, then the lock file is deleted and the - exclusive create is retried. - - Load the extra field from the foo.gz file, and see if an operation was in - progress but not completed. If so, apply the recovery procedure below. - - Perform the append procedure with the provided data. - - If the uncompressed data in the foo.gz file is 1MB or more, apply the - compress procedure. - - Delete the foo.lock file. - - Append procedure: - - Put what to append in the foo.add file so that the operation can be - restarted if this procedure is interrupted. - - Mark the foo.gz extra field with the append operation in progress. - + Restore the original last-block bit and stored block length of the last - stored block from the information in the extra field, in case a previous - append operation was interrupted. - - Append the provided data to the last stored block, creating new stored - blocks as needed and updating the stored blocks last-block bits and - lengths. - - Update the crc and length with the new data, and write the gzip trailer. - - Write over the extra field (with a single write operation) with the new - pointers, lengths, and crc's, and mark the gzip file as not in process. - Though there is still a foo.add file, it will be ignored since nothing - is in process. If a foo.add file is leftover from a previously - completed operation, it is truncated when writing new data to it. - - Delete the foo.add file. - - Compress and replace procedures: - - Read all of the uncompressed data in the stored blocks in foo.gz and write - it to foo.add. Also write foo.temp with the last 32K of that data to - provide a dictionary for the next invocation of this procedure. - - Rewrite the extra field marking foo.gz with a compression in process. - * If there is no data provided to compress (due to a missing foo.add file - when recovering), reconstruct and truncate the foo.gz file to contain - only the previous compressed data and proceed to the step after the next - one. Otherwise ... - - Compress the data with the dictionary in foo.dict, and write to the - foo.gz file starting at the bit immediately following the last previously - compressed block. If there is no foo.dict, proceed anyway with the - compression at slightly reduced efficiency. (For the foo.dict file to be - missing requires some external failure beyond simply the interruption of - a compress operation.) During this process, the foo.lock file is - periodically touched to assure that that file is not considered stale by - another process before we're done. The deflation is terminated with a - non-last empty static block (10 bits long), that is then located and - written over by a last-bit-set empty stored block. - - Append the crc and length of the data in the gzip file (previously - calculated during the append operations). - - Write over the extra field with the updated stored block offsets, bits - back, crc's, and lengths, and mark foo.gz as in process for a replacement - of the dictionary. - @ Delete the foo.add file. - - Replace foo.dict with foo.temp. - - Write over the extra field, marking foo.gz as complete. - - Recovery procedure: - - If not a replace recovery, read in the foo.add file, and provide that data - to the appropriate recovery below. If there is no foo.add file, provide - a zero data length to the recovery. In that case, the append recovery - restores the foo.gz to the previous compressed + uncompressed data state. - For the the compress recovery, a missing foo.add file results in foo.gz - being restored to the previous compressed-only data state. - - Append recovery: - - Pick up append at + step above - - Compress recovery: - - Pick up compress at * step above - - Replace recovery: - - Pick up compress at @ step above - - Log the repair with a date stamp in foo.repairs - */ - -#include -#include /* rename, fopen, fprintf, fclose */ -#include /* malloc, free */ -#include /* strlen, strrchr, strcpy, strncpy, strcmp */ -#include /* open */ -#include /* lseek, read, write, close, unlink, sleep, */ - /* ftruncate, fsync */ -#include /* errno */ -#include /* time, ctime */ -#include /* stat */ -#include /* utimes */ -#include "zlib.h" /* crc32 */ - -#include "gzlog.h" /* header for external access */ - -#define local static -typedef unsigned int uint; -typedef unsigned long ulong; - -/* Macro for debugging to deterministically force recovery operations */ -#ifdef DEBUG - #include /* longjmp */ - jmp_buf gzlog_jump; /* where to go back to */ - int gzlog_bail = 0; /* which point to bail at (1..8) */ - int gzlog_count = -1; /* number of times through to wait */ -# define BAIL(n) do { if (n == gzlog_bail && gzlog_count-- == 0) \ - longjmp(gzlog_jump, gzlog_bail); } while (0) -#else -# define BAIL(n) -#endif - -/* how old the lock file can be in seconds before considering it stale */ -#define PATIENCE 300 - -/* maximum stored block size in Kbytes -- must be in 1..63 */ -#define MAX_STORE 16 - -/* number of stored Kbytes to trigger compression (must be >= 32 to allow - dictionary construction, and <= 204 * MAX_STORE, in order for >> 10 to - discard the stored block headers contribution of five bytes each) */ -#define TRIGGER 1024 - -/* size of a deflate dictionary (this cannot be changed) */ -#define DICT 32768U - -/* values for the operation (2 bits) */ -#define NO_OP 0 -#define APPEND_OP 1 -#define COMPRESS_OP 2 -#define REPLACE_OP 3 - -/* macros to extract little-endian integers from an unsigned byte buffer */ -#define PULL2(p) ((p)[0]+((uint)((p)[1])<<8)) -#define PULL4(p) (PULL2(p)+((ulong)PULL2(p+2)<<16)) -#define PULL8(p) (PULL4(p)+((off_t)PULL4(p+4)<<32)) - -/* macros to store integers into a byte buffer in little-endian order */ -#define PUT2(p,a) do {(p)[0]=a;(p)[1]=(a)>>8;} while(0) -#define PUT4(p,a) do {PUT2(p,a);PUT2(p+2,a>>16);} while(0) -#define PUT8(p,a) do {PUT4(p,a);PUT4(p+4,a>>32);} while(0) - -/* internal structure for log information */ -#define LOGID "\106\035\172" /* should be three non-zero characters */ -struct log { - char id[4]; /* contains LOGID to detect inadvertent overwrites */ - int fd; /* file descriptor for .gz file, opened read/write */ - char *path; /* allocated path, e.g. "/var/log/foo" or "foo" */ - char *end; /* end of path, for appending suffices such as ".gz" */ - off_t first; /* offset of first stored block first length byte */ - int back; /* location of first block id in bits back from first */ - uint stored; /* bytes currently in last stored block */ - off_t last; /* offset of last stored block first length byte */ - ulong ccrc; /* crc of compressed data */ - ulong clen; /* length (modulo 2^32) of compressed data */ - ulong tcrc; /* crc of total data */ - ulong tlen; /* length (modulo 2^32) of total data */ - time_t lock; /* last modify time of our lock file */ -}; - -/* gzip header for gzlog */ -local unsigned char log_gzhead[] = { - 0x1f, 0x8b, /* magic gzip id */ - 8, /* compression method is deflate */ - 4, /* there is an extra field (no file name) */ - 0, 0, 0, 0, /* no modification time provided */ - 0, 0xff, /* no extra flags, no OS specified */ - 39, 0, 'a', 'p', 35, 0 /* extra field with "ap" subfield */ - /* 35 is EXTRA, 39 is EXTRA + 4 */ -}; - -#define HEAD sizeof(log_gzhead) /* should be 16 */ - -/* initial gzip extra field content (52 == HEAD + EXTRA + 1) */ -local unsigned char log_gzext[] = { - 52, 0, 0, 0, 0, 0, 0, 0, /* offset of first stored block length */ - 52, 0, 0, 0, 0, 0, 0, 0, /* offset of last stored block length */ - 0, 0, 0, 0, 0, 0, 0, 0, /* compressed data crc and length */ - 0, 0, 0, 0, 0, 0, 0, 0, /* total data crc and length */ - 0, 0, /* final stored block data length */ - 5 /* op is NO_OP, last bit 8 bits back */ -}; - -#define EXTRA sizeof(log_gzext) /* should be 35 */ - -/* initial gzip data and trailer */ -local unsigned char log_gzbody[] = { - 1, 0, 0, 0xff, 0xff, /* empty stored block (last) */ - 0, 0, 0, 0, /* crc */ - 0, 0, 0, 0 /* uncompressed length */ -}; - -#define BODY sizeof(log_gzbody) - -/* Exclusively create foo.lock in order to negotiate exclusive access to the - foo.* files. If the modify time of an existing lock file is greater than - PATIENCE seconds in the past, then consider the lock file to have been - abandoned, delete it, and try the exclusive create again. Save the lock - file modify time for verification of ownership. Return 0 on success, or -1 - on failure, usually due to an access restriction or invalid path. Note that - if stat() or unlink() fails, it may be due to another process noticing the - abandoned lock file a smidge sooner and deleting it, so those are not - flagged as an error. */ -local int log_lock(struct log *log) -{ - int fd; - struct stat st; - - strcpy(log->end, ".lock"); - while ((fd = open(log->path, O_CREAT | O_EXCL, 0644)) < 0) { - if (errno != EEXIST) - return -1; - if (stat(log->path, &st) == 0 && time(NULL) - st.st_mtime > PATIENCE) { - unlink(log->path); - continue; - } - sleep(2); /* relinquish the CPU for two seconds while waiting */ - } - close(fd); - if (stat(log->path, &st) == 0) - log->lock = st.st_mtime; - return 0; -} - -/* Update the modify time of the lock file to now, in order to prevent another - task from thinking that the lock is stale. Save the lock file modify time - for verification of ownership. */ -local void log_touch(struct log *log) -{ - struct stat st; - - strcpy(log->end, ".lock"); - utimes(log->path, NULL); - if (stat(log->path, &st) == 0) - log->lock = st.st_mtime; -} - -/* Check the log file modify time against what is expected. Return true if - this is not our lock. If it is our lock, touch it to keep it. */ -local int log_check(struct log *log) -{ - struct stat st; - - strcpy(log->end, ".lock"); - if (stat(log->path, &st) || st.st_mtime != log->lock) - return 1; - log_touch(log); - return 0; -} - -/* Unlock a previously acquired lock, but only if it's ours. */ -local void log_unlock(struct log *log) -{ - if (log_check(log)) - return; - strcpy(log->end, ".lock"); - unlink(log->path); - log->lock = 0; -} - -/* Check the gzip header and read in the extra field, filling in the values in - the log structure. Return op on success or -1 if the gzip header was not as - expected. op is the current operation in progress last written to the extra - field. This assumes that the gzip file has already been opened, with the - file descriptor log->fd. */ -local int log_head(struct log *log) -{ - int op; - unsigned char buf[HEAD + EXTRA]; - - if (lseek(log->fd, 0, SEEK_SET) < 0 || - read(log->fd, buf, HEAD + EXTRA) != HEAD + EXTRA || - memcmp(buf, log_gzhead, HEAD)) { - return -1; - } - log->first = PULL8(buf + HEAD); - log->last = PULL8(buf + HEAD + 8); - log->ccrc = PULL4(buf + HEAD + 16); - log->clen = PULL4(buf + HEAD + 20); - log->tcrc = PULL4(buf + HEAD + 24); - log->tlen = PULL4(buf + HEAD + 28); - log->stored = PULL2(buf + HEAD + 32); - log->back = 3 + (buf[HEAD + 34] & 7); - op = (buf[HEAD + 34] >> 3) & 3; - return op; -} - -/* Write over the extra field contents, marking the operation as op. Use fsync - to assure that the device is written to, and in the requested order. This - operation, and only this operation, is assumed to be atomic in order to - assure that the log is recoverable in the event of an interruption at any - point in the process. Return -1 if the write to foo.gz failed. */ -local int log_mark(struct log *log, int op) -{ - int ret; - unsigned char ext[EXTRA]; - - PUT8(ext, log->first); - PUT8(ext + 8, log->last); - PUT4(ext + 16, log->ccrc); - PUT4(ext + 20, log->clen); - PUT4(ext + 24, log->tcrc); - PUT4(ext + 28, log->tlen); - PUT2(ext + 32, log->stored); - ext[34] = log->back - 3 + (op << 3); - fsync(log->fd); - ret = lseek(log->fd, HEAD, SEEK_SET) < 0 || - write(log->fd, ext, EXTRA) != EXTRA ? -1 : 0; - fsync(log->fd); - return ret; -} - -/* Rewrite the last block header bits and subsequent zero bits to get to a byte - boundary, setting the last block bit if last is true, and then write the - remainder of the stored block header (length and one's complement). Leave - the file pointer after the end of the last stored block data. Return -1 if - there is a read or write failure on the foo.gz file */ -local int log_last(struct log *log, int last) -{ - int back, len, mask; - unsigned char buf[6]; - - /* determine the locations of the bytes and bits to modify */ - back = log->last == log->first ? log->back : 8; - len = back > 8 ? 2 : 1; /* bytes back from log->last */ - mask = 0x80 >> ((back - 1) & 7); /* mask for block last-bit */ - - /* get the byte to modify (one or two back) into buf[0] -- don't need to - read the byte if the last-bit is eight bits back, since in that case - the entire byte will be modified */ - buf[0] = 0; - if (back != 8 && (lseek(log->fd, log->last - len, SEEK_SET) < 0 || - read(log->fd, buf, 1) != 1)) - return -1; - - /* change the last-bit of the last stored block as requested -- note - that all bits above the last-bit are set to zero, per the type bits - of a stored block being 00 and per the convention that the bits to - bring the stream to a byte boundary are also zeros */ - buf[1] = 0; - buf[2 - len] = (*buf & (mask - 1)) + (last ? mask : 0); - - /* write the modified stored block header and lengths, move the file - pointer to after the last stored block data */ - PUT2(buf + 2, log->stored); - PUT2(buf + 4, log->stored ^ 0xffff); - return lseek(log->fd, log->last - len, SEEK_SET) < 0 || - write(log->fd, buf + 2 - len, len + 4) != len + 4 || - lseek(log->fd, log->stored, SEEK_CUR) < 0 ? -1 : 0; -} - -/* Append len bytes from data to the locked and open log file. len may be zero - if recovering and no .add file was found. In that case, the previous state - of the foo.gz file is restored. The data is appended uncompressed in - deflate stored blocks. Return -1 if there was an error reading or writing - the foo.gz file. */ -local int log_append(struct log *log, unsigned char *data, size_t len) -{ - uint put; - off_t end; - unsigned char buf[8]; - - /* set the last block last-bit and length, in case recovering an - interrupted append, then position the file pointer to append to the - block */ - if (log_last(log, 1)) - return -1; - - /* append, adding stored blocks and updating the offset of the last stored - block as needed, and update the total crc and length */ - while (len) { - /* append as much as we can to the last block */ - put = (MAX_STORE << 10) - log->stored; - if (put > len) - put = (uint)len; - if (put) { - if (write(log->fd, data, put) != put) - return -1; - BAIL(1); - log->tcrc = crc32(log->tcrc, data, put); - log->tlen += put; - log->stored += put; - data += put; - len -= put; - } - - /* if we need to, add a new empty stored block */ - if (len) { - /* mark current block as not last */ - if (log_last(log, 0)) - return -1; - - /* point to new, empty stored block */ - log->last += 4 + log->stored + 1; - log->stored = 0; - } - - /* mark last block as last, update its length */ - if (log_last(log, 1)) - return -1; - BAIL(2); - } - - /* write the new crc and length trailer, and truncate just in case (could - be recovering from partial append with a missing foo.add file) */ - PUT4(buf, log->tcrc); - PUT4(buf + 4, log->tlen); - if (write(log->fd, buf, 8) != 8 || - (end = lseek(log->fd, 0, SEEK_CUR)) < 0 || ftruncate(log->fd, end)) - return -1; - - /* write the extra field, marking the log file as done, delete .add file */ - if (log_mark(log, NO_OP)) - return -1; - strcpy(log->end, ".add"); - unlink(log->path); /* ignore error, since may not exist */ - return 0; -} - -/* Replace the foo.dict file with the foo.temp file. Also delete the foo.add - file, since the compress operation may have been interrupted before that was - done. Returns 1 if memory could not be allocated, or -1 if reading or - writing foo.gz fails, or if the rename fails for some reason other than - foo.temp not existing. foo.temp not existing is a permitted error, since - the replace operation may have been interrupted after the rename is done, - but before foo.gz is marked as complete. */ -local int log_replace(struct log *log) -{ - int ret; - char *dest; - - /* delete foo.add file */ - strcpy(log->end, ".add"); - unlink(log->path); /* ignore error, since may not exist */ - BAIL(3); - - /* rename foo.name to foo.dict, replacing foo.dict if it exists */ - strcpy(log->end, ".dict"); - dest = malloc(strlen(log->path) + 1); - if (dest == NULL) - return -2; - strcpy(dest, log->path); - strcpy(log->end, ".temp"); - ret = rename(log->path, dest); - free(dest); - if (ret && errno != ENOENT) - return -1; - BAIL(4); - - /* mark the foo.gz file as done */ - return log_mark(log, NO_OP); -} - -/* Compress the len bytes at data and append the compressed data to the - foo.gz deflate data immediately after the previous compressed data. This - overwrites the previous uncompressed data, which was stored in foo.add - and is the data provided in data[0..len-1]. If this operation is - interrupted, it picks up at the start of this routine, with the foo.add - file read in again. If there is no data to compress (len == 0), then we - simply terminate the foo.gz file after the previously compressed data, - appending a final empty stored block and the gzip trailer. Return -1 if - reading or writing the log.gz file failed, or -2 if there was a memory - allocation failure. */ -local int log_compress(struct log *log, unsigned char *data, size_t len) -{ - int fd; - uint got, max; - ssize_t dict; - off_t end; - z_stream strm; - unsigned char buf[DICT]; - - /* compress and append compressed data */ - if (len) { - /* set up for deflate, allocating memory */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - if (deflateInit2(&strm, Z_DEFAULT_COMPRESSION, Z_DEFLATED, -15, 8, - Z_DEFAULT_STRATEGY) != Z_OK) - return -2; - - /* read in dictionary (last 32K of data that was compressed) */ - strcpy(log->end, ".dict"); - fd = open(log->path, O_RDONLY, 0); - if (fd >= 0) { - dict = read(fd, buf, DICT); - close(fd); - if (dict < 0) { - deflateEnd(&strm); - return -1; - } - if (dict) - deflateSetDictionary(&strm, buf, (uint)dict); - } - log_touch(log); - - /* prime deflate with last bits of previous block, position write - pointer to write those bits and overwrite what follows */ - if (lseek(log->fd, log->first - (log->back > 8 ? 2 : 1), - SEEK_SET) < 0 || - read(log->fd, buf, 1) != 1 || lseek(log->fd, -1, SEEK_CUR) < 0) { - deflateEnd(&strm); - return -1; - } - deflatePrime(&strm, (8 - log->back) & 7, *buf); - - /* compress, finishing with a partial non-last empty static block */ - strm.next_in = data; - max = (((uint)0 - 1) >> 1) + 1; /* in case int smaller than size_t */ - do { - strm.avail_in = len > max ? max : (uint)len; - len -= strm.avail_in; - do { - strm.avail_out = DICT; - strm.next_out = buf; - deflate(&strm, len ? Z_NO_FLUSH : Z_PARTIAL_FLUSH); - got = DICT - strm.avail_out; - if (got && write(log->fd, buf, got) != got) { - deflateEnd(&strm); - return -1; - } - log_touch(log); - } while (strm.avail_out == 0); - } while (len); - deflateEnd(&strm); - BAIL(5); - - /* find start of empty static block -- scanning backwards the first one - bit is the second bit of the block, if the last byte is zero, then - we know the byte before that has a one in the top bit, since an - empty static block is ten bits long */ - if ((log->first = lseek(log->fd, -1, SEEK_CUR)) < 0 || - read(log->fd, buf, 1) != 1) - return -1; - log->first++; - if (*buf) { - log->back = 1; - while ((*buf & ((uint)1 << (8 - log->back++))) == 0) - ; /* guaranteed to terminate, since *buf != 0 */ - } - else - log->back = 10; - - /* update compressed crc and length */ - log->ccrc = log->tcrc; - log->clen = log->tlen; - } - else { - /* no data to compress -- fix up existing gzip stream */ - log->tcrc = log->ccrc; - log->tlen = log->clen; - } - - /* complete and truncate gzip stream */ - log->last = log->first; - log->stored = 0; - PUT4(buf, log->tcrc); - PUT4(buf + 4, log->tlen); - if (log_last(log, 1) || write(log->fd, buf, 8) != 8 || - (end = lseek(log->fd, 0, SEEK_CUR)) < 0 || ftruncate(log->fd, end)) - return -1; - BAIL(6); - - /* mark as being in the replace operation */ - if (log_mark(log, REPLACE_OP)) - return -1; - - /* execute the replace operation and mark the file as done */ - return log_replace(log); -} - -/* log a repair record to the .repairs file */ -local void log_log(struct log *log, int op, char *record) -{ - time_t now; - FILE *rec; - - now = time(NULL); - strcpy(log->end, ".repairs"); - rec = fopen(log->path, "a"); - if (rec == NULL) - return; - fprintf(rec, "%.24s %s recovery: %s\n", ctime(&now), op == APPEND_OP ? - "append" : (op == COMPRESS_OP ? "compress" : "replace"), record); - fclose(rec); - return; -} - -/* Recover the interrupted operation op. First read foo.add for recovering an - append or compress operation. Return -1 if there was an error reading or - writing foo.gz or reading an existing foo.add, or -2 if there was a memory - allocation failure. */ -local int log_recover(struct log *log, int op) -{ - int fd, ret = 0; - unsigned char *data = NULL; - size_t len = 0; - struct stat st; - - /* log recovery */ - log_log(log, op, "start"); - - /* load foo.add file if expected and present */ - if (op == APPEND_OP || op == COMPRESS_OP) { - strcpy(log->end, ".add"); - if (stat(log->path, &st) == 0 && st.st_size) { - len = (size_t)(st.st_size); - if ((off_t)len != st.st_size || - (data = malloc(st.st_size)) == NULL) { - log_log(log, op, "allocation failure"); - return -2; - } - if ((fd = open(log->path, O_RDONLY, 0)) < 0) { - log_log(log, op, ".add file read failure"); - return -1; - } - ret = (size_t)read(fd, data, len) != len; - close(fd); - if (ret) { - log_log(log, op, ".add file read failure"); - return -1; - } - log_log(log, op, "loaded .add file"); - } - else - log_log(log, op, "missing .add file!"); - } - - /* recover the interrupted operation */ - switch (op) { - case APPEND_OP: - ret = log_append(log, data, len); - break; - case COMPRESS_OP: - ret = log_compress(log, data, len); - break; - case REPLACE_OP: - ret = log_replace(log); - } - - /* log status */ - log_log(log, op, ret ? "failure" : "complete"); - - /* clean up */ - if (data != NULL) - free(data); - return ret; -} - -/* Close the foo.gz file (if open) and release the lock. */ -local void log_close(struct log *log) -{ - if (log->fd >= 0) - close(log->fd); - log->fd = -1; - log_unlock(log); -} - -/* Open foo.gz, verify the header, and load the extra field contents, after - first creating the foo.lock file to gain exclusive access to the foo.* - files. If foo.gz does not exist or is empty, then write the initial header, - extra, and body content of an empty foo.gz log file. If there is an error - creating the lock file due to access restrictions, or an error reading or - writing the foo.gz file, or if the foo.gz file is not a proper log file for - this object (e.g. not a gzip file or does not contain the expected extra - field), then return true. If there is an error, the lock is released. - Otherwise, the lock is left in place. */ -local int log_open(struct log *log) -{ - int op; - - /* release open file resource if left over -- can occur if lock lost - between gzlog_open() and gzlog_write() */ - if (log->fd >= 0) - close(log->fd); - log->fd = -1; - - /* negotiate exclusive access */ - if (log_lock(log) < 0) - return -1; - - /* open the log file, foo.gz */ - strcpy(log->end, ".gz"); - log->fd = open(log->path, O_RDWR | O_CREAT, 0644); - if (log->fd < 0) { - log_close(log); - return -1; - } - - /* if new, initialize foo.gz with an empty log, delete old dictionary */ - if (lseek(log->fd, 0, SEEK_END) == 0) { - if (write(log->fd, log_gzhead, HEAD) != HEAD || - write(log->fd, log_gzext, EXTRA) != EXTRA || - write(log->fd, log_gzbody, BODY) != BODY) { - log_close(log); - return -1; - } - strcpy(log->end, ".dict"); - unlink(log->path); - } - - /* verify log file and load extra field information */ - if ((op = log_head(log)) < 0) { - log_close(log); - return -1; - } - - /* check for interrupted process and if so, recover */ - if (op != NO_OP && log_recover(log, op)) { - log_close(log); - return -1; - } - - /* touch the lock file to prevent another process from grabbing it */ - log_touch(log); - return 0; -} - -/* See gzlog.h for the description of the external methods below */ -gzlog *gzlog_open(char *path) -{ - size_t n; - struct log *log; - - /* check arguments */ - if (path == NULL || *path == 0) - return NULL; - - /* allocate and initialize log structure */ - log = malloc(sizeof(struct log)); - if (log == NULL) - return NULL; - strcpy(log->id, LOGID); - log->fd = -1; - - /* save path and end of path for name construction */ - n = strlen(path); - log->path = malloc(n + 9); /* allow for ".repairs" */ - if (log->path == NULL) { - free(log); - return NULL; - } - strcpy(log->path, path); - log->end = log->path + n; - - /* gain exclusive access and verify log file -- may perform a - recovery operation if needed */ - if (log_open(log)) { - free(log->path); - free(log); - return NULL; - } - - /* return pointer to log structure */ - return log; -} - -/* gzlog_compress() return values: - 0: all good - -1: file i/o error (usually access issue) - -2: memory allocation failure - -3: invalid log pointer argument */ -int gzlog_compress(gzlog *logd) -{ - int fd, ret; - uint block; - size_t len, next; - unsigned char *data, buf[5]; - struct log *log = logd; - - /* check arguments */ - if (log == NULL || strcmp(log->id, LOGID)) - return -3; - - /* see if we lost the lock -- if so get it again and reload the extra - field information (it probably changed), recover last operation if - necessary */ - if (log_check(log) && log_open(log)) - return -1; - - /* create space for uncompressed data */ - len = ((size_t)(log->last - log->first) & ~(((size_t)1 << 10) - 1)) + - log->stored; - if ((data = malloc(len)) == NULL) - return -2; - - /* do statement here is just a cheap trick for error handling */ - do { - /* read in the uncompressed data */ - if (lseek(log->fd, log->first - 1, SEEK_SET) < 0) - break; - next = 0; - while (next < len) { - if (read(log->fd, buf, 5) != 5) - break; - block = PULL2(buf + 1); - if (next + block > len || - read(log->fd, (char *)data + next, block) != block) - break; - next += block; - } - if (lseek(log->fd, 0, SEEK_CUR) != log->last + 4 + log->stored) - break; - log_touch(log); - - /* write the uncompressed data to the .add file */ - strcpy(log->end, ".add"); - fd = open(log->path, O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (fd < 0) - break; - ret = (size_t)write(fd, data, len) != len; - if (ret | close(fd)) - break; - log_touch(log); - - /* write the dictionary for the next compress to the .temp file */ - strcpy(log->end, ".temp"); - fd = open(log->path, O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (fd < 0) - break; - next = DICT > len ? len : DICT; - ret = (size_t)write(fd, (char *)data + len - next, next) != next; - if (ret | close(fd)) - break; - log_touch(log); - - /* roll back to compressed data, mark the compress in progress */ - log->last = log->first; - log->stored = 0; - if (log_mark(log, COMPRESS_OP)) - break; - BAIL(7); - - /* compress and append the data (clears mark) */ - ret = log_compress(log, data, len); - free(data); - return ret; - } while (0); - - /* broke out of do above on i/o error */ - free(data); - return -1; -} - -/* gzlog_write() return values: - 0: all good - -1: file i/o error (usually access issue) - -2: memory allocation failure - -3: invalid log pointer argument */ -int gzlog_write(gzlog *logd, void *data, size_t len) -{ - int fd, ret; - struct log *log = logd; - - /* check arguments */ - if (log == NULL || strcmp(log->id, LOGID)) - return -3; - if (data == NULL || len <= 0) - return 0; - - /* see if we lost the lock -- if so get it again and reload the extra - field information (it probably changed), recover last operation if - necessary */ - if (log_check(log) && log_open(log)) - return -1; - - /* create and write .add file */ - strcpy(log->end, ".add"); - fd = open(log->path, O_WRONLY | O_CREAT | O_TRUNC, 0644); - if (fd < 0) - return -1; - ret = (size_t)write(fd, data, len) != len; - if (ret | close(fd)) - return -1; - log_touch(log); - - /* mark log file with append in progress */ - if (log_mark(log, APPEND_OP)) - return -1; - BAIL(8); - - /* append data (clears mark) */ - if (log_append(log, data, len)) - return -1; - - /* check to see if it's time to compress -- if not, then done */ - if (((log->last - log->first) >> 10) + (log->stored >> 10) < TRIGGER) - return 0; - - /* time to compress */ - return gzlog_compress(log); -} - -/* gzlog_close() return values: - 0: ok - -3: invalid log pointer argument */ -int gzlog_close(gzlog *logd) -{ - struct log *log = logd; - - /* check arguments */ - if (log == NULL || strcmp(log->id, LOGID)) - return -3; - - /* close the log file and release the lock */ - log_close(log); - - /* free structure and return */ - if (log->path != NULL) - free(log->path); - strcpy(log->id, "bad"); - free(log); - return 0; -} diff --git a/io2d/src/3rd-party/zlib/examples/gzlog.h b/io2d/src/3rd-party/zlib/examples/gzlog.h deleted file mode 100644 index 86f0cec..0000000 --- a/io2d/src/3rd-party/zlib/examples/gzlog.h +++ /dev/null @@ -1,91 +0,0 @@ -/* gzlog.h - Copyright (C) 2004, 2008, 2012 Mark Adler, all rights reserved - version 2.2, 14 Aug 2012 - - This software is provided 'as-is', without any express or implied - warranty. In no event will the author be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Mark Adler madler@alumni.caltech.edu - */ - -/* Version History: - 1.0 26 Nov 2004 First version - 2.0 25 Apr 2008 Complete redesign for recovery of interrupted operations - Interface changed slightly in that now path is a prefix - Compression now occurs as needed during gzlog_write() - gzlog_write() now always leaves the log file as valid gzip - 2.1 8 Jul 2012 Fix argument checks in gzlog_compress() and gzlog_write() - 2.2 14 Aug 2012 Clean up signed comparisons - */ - -/* - The gzlog object allows writing short messages to a gzipped log file, - opening the log file locked for small bursts, and then closing it. The log - object works by appending stored (uncompressed) data to the gzip file until - 1 MB has been accumulated. At that time, the stored data is compressed, and - replaces the uncompressed data in the file. The log file is truncated to - its new size at that time. After each write operation, the log file is a - valid gzip file that can decompressed to recover what was written. - - The gzlog operations can be interupted at any point due to an application or - system crash, and the log file will be recovered the next time the log is - opened with gzlog_open(). - */ - -#ifndef GZLOG_H -#define GZLOG_H - -/* gzlog object type */ -typedef void gzlog; - -/* Open a gzlog object, creating the log file if it does not exist. Return - NULL on error. Note that gzlog_open() could take a while to complete if it - has to wait to verify that a lock is stale (possibly for five minutes), or - if there is significant contention with other instantiations of this object - when locking the resource. path is the prefix of the file names created by - this object. If path is "foo", then the log file will be "foo.gz", and - other auxiliary files will be created and destroyed during the process: - "foo.dict" for a compression dictionary, "foo.temp" for a temporary (next) - dictionary, "foo.add" for data being added or compressed, "foo.lock" for the - lock file, and "foo.repairs" to log recovery operations performed due to - interrupted gzlog operations. A gzlog_open() followed by a gzlog_close() - will recover a previously interrupted operation, if any. */ -gzlog *gzlog_open(char *path); - -/* Write to a gzlog object. Return zero on success, -1 if there is a file i/o - error on any of the gzlog files (this should not happen if gzlog_open() - succeeded, unless the device has run out of space or leftover auxiliary - files have permissions or ownership that prevent their use), -2 if there is - a memory allocation failure, or -3 if the log argument is invalid (e.g. if - it was not created by gzlog_open()). This function will write data to the - file uncompressed, until 1 MB has been accumulated, at which time that data - will be compressed. The log file will be a valid gzip file upon successful - return. */ -int gzlog_write(gzlog *log, void *data, size_t len); - -/* Force compression of any uncompressed data in the log. This should be used - sparingly, if at all. The main application would be when a log file will - not be appended to again. If this is used to compress frequently while - appending, it will both significantly increase the execution time and - reduce the compression ratio. The return codes are the same as for - gzlog_write(). */ -int gzlog_compress(gzlog *log); - -/* Close a gzlog object. Return zero on success, -3 if the log argument is - invalid. The log object is freed, and so cannot be referenced again. */ -int gzlog_close(gzlog *log); - -#endif diff --git a/io2d/src/3rd-party/zlib/examples/zlib_how.html b/io2d/src/3rd-party/zlib/examples/zlib_how.html deleted file mode 100644 index 444ff1c..0000000 --- a/io2d/src/3rd-party/zlib/examples/zlib_how.html +++ /dev/null @@ -1,545 +0,0 @@ - - - - -zlib Usage Example - - - -

    zlib Usage Example

    -We often get questions about how the deflate() and inflate() functions should be used. -Users wonder when they should provide more input, when they should use more output, -what to do with a Z_BUF_ERROR, how to make sure the process terminates properly, and -so on. So for those who have read zlib.h (a few times), and -would like further edification, below is an annotated example in C of simple routines to compress and decompress -from an input file to an output file using deflate() and inflate() respectively. The -annotations are interspersed between lines of the code. So please read between the lines. -We hope this helps explain some of the intricacies of zlib. -

    -Without further adieu, here is the program zpipe.c: -

    
    -/* zpipe.c: example of proper use of zlib's inflate() and deflate()
    -   Not copyrighted -- provided to the public domain
    -   Version 1.4  11 December 2005  Mark Adler */
    -
    -/* Version history:
    -   1.0  30 Oct 2004  First version
    -   1.1   8 Nov 2004  Add void casting for unused return values
    -                     Use switch statement for inflate() return values
    -   1.2   9 Nov 2004  Add assertions to document zlib guarantees
    -   1.3   6 Apr 2005  Remove incorrect assertion in inf()
    -   1.4  11 Dec 2005  Add hack to avoid MSDOS end-of-line conversions
    -                     Avoid some compiler warnings for input and output buffers
    - */
    -
    -We now include the header files for the required definitions. From -stdio.h we use fopen(), fread(), fwrite(), -feof(), ferror(), and fclose() for file i/o, and -fputs() for error messages. From string.h we use -strcmp() for command line argument processing. -From assert.h we use the assert() macro. -From zlib.h -we use the basic compression functions deflateInit(), -deflate(), and deflateEnd(), and the basic decompression -functions inflateInit(), inflate(), and -inflateEnd(). -
    
    -#include <stdio.h>
    -#include <string.h>
    -#include <assert.h>
    -#include "zlib.h"
    -
    -This is an ugly hack required to avoid corruption of the input and output data on -Windows/MS-DOS systems. Without this, those systems would assume that the input and output -files are text, and try to convert the end-of-line characters from one standard to -another. That would corrupt binary data, and in particular would render the compressed data unusable. -This sets the input and output to binary which suppresses the end-of-line conversions. -SET_BINARY_MODE() will be used later on stdin and stdout, at the beginning of main(). -
    
    -#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
    -#  include <fcntl.h>
    -#  include <io.h>
    -#  define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
    -#else
    -#  define SET_BINARY_MODE(file)
    -#endif
    -
    -CHUNK is simply the buffer size for feeding data to and pulling data -from the zlib routines. Larger buffer sizes would be more efficient, -especially for inflate(). If the memory is available, buffers sizes -on the order of 128K or 256K bytes should be used. -
    
    -#define CHUNK 16384
    -
    -The def() routine compresses data from an input file to an output file. The output data -will be in the zlib format, which is different from the gzip or zip -formats. The zlib format has a very small header of only two bytes to identify it as -a zlib stream and to provide decoding information, and a four-byte trailer with a fast -check value to verify the integrity of the uncompressed data after decoding. -
    
    -/* Compress from file source to file dest until EOF on source.
    -   def() returns Z_OK on success, Z_MEM_ERROR if memory could not be
    -   allocated for processing, Z_STREAM_ERROR if an invalid compression
    -   level is supplied, Z_VERSION_ERROR if the version of zlib.h and the
    -   version of the library linked do not match, or Z_ERRNO if there is
    -   an error reading or writing the files. */
    -int def(FILE *source, FILE *dest, int level)
    -{
    -
    -Here are the local variables for def(). ret will be used for zlib -return codes. flush will keep track of the current flushing state for deflate(), -which is either no flushing, or flush to completion after the end of the input file is reached. -have is the amount of data returned from deflate(). The strm structure -is used to pass information to and from the zlib routines, and to maintain the -deflate() state. in and out are the input and output buffers for -deflate(). -
    
    -    int ret, flush;
    -    unsigned have;
    -    z_stream strm;
    -    unsigned char in[CHUNK];
    -    unsigned char out[CHUNK];
    -
    -The first thing we do is to initialize the zlib state for compression using -deflateInit(). This must be done before the first use of deflate(). -The zalloc, zfree, and opaque fields in the strm -structure must be initialized before calling deflateInit(). Here they are -set to the zlib constant Z_NULL to request that zlib use -the default memory allocation routines. An application may also choose to provide -custom memory allocation routines here. deflateInit() will allocate on the -order of 256K bytes for the internal state. -(See zlib Technical Details.) -

    -deflateInit() is called with a pointer to the structure to be initialized and -the compression level, which is an integer in the range of -1 to 9. Lower compression -levels result in faster execution, but less compression. Higher levels result in -greater compression, but slower execution. The zlib constant Z_DEFAULT_COMPRESSION, -equal to -1, -provides a good compromise between compression and speed and is equivalent to level 6. -Level 0 actually does no compression at all, and in fact expands the data slightly to produce -the zlib format (it is not a byte-for-byte copy of the input). -More advanced applications of zlib -may use deflateInit2() here instead. Such an application may want to reduce how -much memory will be used, at some price in compression. Or it may need to request a -gzip header and trailer instead of a zlib header and trailer, or raw -encoding with no header or trailer at all. -

    -We must check the return value of deflateInit() against the zlib constant -Z_OK to make sure that it was able to -allocate memory for the internal state, and that the provided arguments were valid. -deflateInit() will also check that the version of zlib that the zlib.h -file came from matches the version of zlib actually linked with the program. This -is especially important for environments in which zlib is a shared library. -

    -Note that an application can initialize multiple, independent zlib streams, which can -operate in parallel. The state information maintained in the structure allows the zlib -routines to be reentrant. -

    
    -    /* allocate deflate state */
    -    strm.zalloc = Z_NULL;
    -    strm.zfree = Z_NULL;
    -    strm.opaque = Z_NULL;
    -    ret = deflateInit(&strm, level);
    -    if (ret != Z_OK)
    -        return ret;
    -
    -With the pleasantries out of the way, now we can get down to business. The outer do-loop -reads all of the input file and exits at the bottom of the loop once end-of-file is reached. -This loop contains the only call of deflate(). So we must make sure that all of the -input data has been processed and that all of the output data has been generated and consumed -before we fall out of the loop at the bottom. -
    
    -    /* compress until end of file */
    -    do {
    -
    -We start off by reading data from the input file. The number of bytes read is put directly -into avail_in, and a pointer to those bytes is put into next_in. We also -check to see if end-of-file on the input has been reached. If we are at the end of file, then flush is set to the -zlib constant Z_FINISH, which is later passed to deflate() to -indicate that this is the last chunk of input data to compress. We need to use feof() -to check for end-of-file as opposed to seeing if fewer than CHUNK bytes have been read. The -reason is that if the input file length is an exact multiple of CHUNK, we will miss -the fact that we got to the end-of-file, and not know to tell deflate() to finish -up the compressed stream. If we are not yet at the end of the input, then the zlib -constant Z_NO_FLUSH will be passed to deflate to indicate that we are still -in the middle of the uncompressed data. -

    -If there is an error in reading from the input file, the process is aborted with -deflateEnd() being called to free the allocated zlib state before returning -the error. We wouldn't want a memory leak, now would we? deflateEnd() can be called -at any time after the state has been initialized. Once that's done, deflateInit() (or -deflateInit2()) would have to be called to start a new compression process. There is -no point here in checking the deflateEnd() return code. The deallocation can't fail. -

    
    -        strm.avail_in = fread(in, 1, CHUNK, source);
    -        if (ferror(source)) {
    -            (void)deflateEnd(&strm);
    -            return Z_ERRNO;
    -        }
    -        flush = feof(source) ? Z_FINISH : Z_NO_FLUSH;
    -        strm.next_in = in;
    -
    -The inner do-loop passes our chunk of input data to deflate(), and then -keeps calling deflate() until it is done producing output. Once there is no more -new output, deflate() is guaranteed to have consumed all of the input, i.e., -avail_in will be zero. -
    
    -        /* run deflate() on input until output buffer not full, finish
    -           compression if all of source has been read in */
    -        do {
    -
    -Output space is provided to deflate() by setting avail_out to the number -of available output bytes and next_out to a pointer to that space. -
    
    -            strm.avail_out = CHUNK;
    -            strm.next_out = out;
    -
    -Now we call the compression engine itself, deflate(). It takes as many of the -avail_in bytes at next_in as it can process, and writes as many as -avail_out bytes to next_out. Those counters and pointers are then -updated past the input data consumed and the output data written. It is the amount of -output space available that may limit how much input is consumed. -Hence the inner loop to make sure that -all of the input is consumed by providing more output space each time. Since avail_in -and next_in are updated by deflate(), we don't have to mess with those -between deflate() calls until it's all used up. -

    -The parameters to deflate() are a pointer to the strm structure containing -the input and output information and the internal compression engine state, and a parameter -indicating whether and how to flush data to the output. Normally deflate will consume -several K bytes of input data before producing any output (except for the header), in order -to accumulate statistics on the data for optimum compression. It will then put out a burst of -compressed data, and proceed to consume more input before the next burst. Eventually, -deflate() -must be told to terminate the stream, complete the compression with provided input data, and -write out the trailer check value. deflate() will continue to compress normally as long -as the flush parameter is Z_NO_FLUSH. Once the Z_FINISH parameter is provided, -deflate() will begin to complete the compressed output stream. However depending on how -much output space is provided, deflate() may have to be called several times until it -has provided the complete compressed stream, even after it has consumed all of the input. The flush -parameter must continue to be Z_FINISH for those subsequent calls. -

    -There are other values of the flush parameter that are used in more advanced applications. You can -force deflate() to produce a burst of output that encodes all of the input data provided -so far, even if it wouldn't have otherwise, for example to control data latency on a link with -compressed data. You can also ask that deflate() do that as well as erase any history up to -that point so that what follows can be decompressed independently, for example for random access -applications. Both requests will degrade compression by an amount depending on how often such -requests are made. -

    -deflate() has a return value that can indicate errors, yet we do not check it here. Why -not? Well, it turns out that deflate() can do no wrong here. Let's go through -deflate()'s return values and dispense with them one by one. The possible values are -Z_OK, Z_STREAM_END, Z_STREAM_ERROR, or Z_BUF_ERROR. Z_OK -is, well, ok. Z_STREAM_END is also ok and will be returned for the last call of -deflate(). This is already guaranteed by calling deflate() with Z_FINISH -until it has no more output. Z_STREAM_ERROR is only possible if the stream is not -initialized properly, but we did initialize it properly. There is no harm in checking for -Z_STREAM_ERROR here, for example to check for the possibility that some -other part of the application inadvertently clobbered the memory containing the zlib state. -Z_BUF_ERROR will be explained further below, but -suffice it to say that this is simply an indication that deflate() could not consume -more input or produce more output. deflate() can be called again with more output space -or more available input, which it will be in this code. -

    
    -            ret = deflate(&strm, flush);    /* no bad return value */
    -            assert(ret != Z_STREAM_ERROR);  /* state not clobbered */
    -
    -Now we compute how much output deflate() provided on the last call, which is the -difference between how much space was provided before the call, and how much output space -is still available after the call. Then that data, if any, is written to the output file. -We can then reuse the output buffer for the next call of deflate(). Again if there -is a file i/o error, we call deflateEnd() before returning to avoid a memory leak. -
    
    -            have = CHUNK - strm.avail_out;
    -            if (fwrite(out, 1, have, dest) != have || ferror(dest)) {
    -                (void)deflateEnd(&strm);
    -                return Z_ERRNO;
    -            }
    -
    -The inner do-loop is repeated until the last deflate() call fails to fill the -provided output buffer. Then we know that deflate() has done as much as it can with -the provided input, and that all of that input has been consumed. We can then fall out of this -loop and reuse the input buffer. -

    -The way we tell that deflate() has no more output is by seeing that it did not fill -the output buffer, leaving avail_out greater than zero. However suppose that -deflate() has no more output, but just so happened to exactly fill the output buffer! -avail_out is zero, and we can't tell that deflate() has done all it can. -As far as we know, deflate() -has more output for us. So we call it again. But now deflate() produces no output -at all, and avail_out remains unchanged as CHUNK. That deflate() call -wasn't able to do anything, either consume input or produce output, and so it returns -Z_BUF_ERROR. (See, I told you I'd cover this later.) However this is not a problem at -all. Now we finally have the desired indication that deflate() is really done, -and so we drop out of the inner loop to provide more input to deflate(). -

    -With flush set to Z_FINISH, this final set of deflate() calls will -complete the output stream. Once that is done, subsequent calls of deflate() would return -Z_STREAM_ERROR if the flush parameter is not Z_FINISH, and do no more processing -until the state is reinitialized. -

    -Some applications of zlib have two loops that call deflate() -instead of the single inner loop we have here. The first loop would call -without flushing and feed all of the data to deflate(). The second loop would call -deflate() with no more -data and the Z_FINISH parameter to complete the process. As you can see from this -example, that can be avoided by simply keeping track of the current flush state. -

    
    -        } while (strm.avail_out == 0);
    -        assert(strm.avail_in == 0);     /* all input will be used */
    -
    -Now we check to see if we have already processed all of the input file. That information was -saved in the flush variable, so we see if that was set to Z_FINISH. If so, -then we're done and we fall out of the outer loop. We're guaranteed to get Z_STREAM_END -from the last deflate() call, since we ran it until the last chunk of input was -consumed and all of the output was generated. -
    
    -        /* done when last data in file processed */
    -    } while (flush != Z_FINISH);
    -    assert(ret == Z_STREAM_END);        /* stream will be complete */
    -
    -The process is complete, but we still need to deallocate the state to avoid a memory leak -(or rather more like a memory hemorrhage if you didn't do this). Then -finally we can return with a happy return value. -
    
    -    /* clean up and return */
    -    (void)deflateEnd(&strm);
    -    return Z_OK;
    -}
    -
    -Now we do the same thing for decompression in the inf() routine. inf() -decompresses what is hopefully a valid zlib stream from the input file and writes the -uncompressed data to the output file. Much of the discussion above for def() -applies to inf() as well, so the discussion here will focus on the differences between -the two. -
    
    -/* Decompress from file source to file dest until stream ends or EOF.
    -   inf() returns Z_OK on success, Z_MEM_ERROR if memory could not be
    -   allocated for processing, Z_DATA_ERROR if the deflate data is
    -   invalid or incomplete, Z_VERSION_ERROR if the version of zlib.h and
    -   the version of the library linked do not match, or Z_ERRNO if there
    -   is an error reading or writing the files. */
    -int inf(FILE *source, FILE *dest)
    -{
    -
    -The local variables have the same functionality as they do for def(). The -only difference is that there is no flush variable, since inflate() -can tell from the zlib stream itself when the stream is complete. -
    
    -    int ret;
    -    unsigned have;
    -    z_stream strm;
    -    unsigned char in[CHUNK];
    -    unsigned char out[CHUNK];
    -
    -The initialization of the state is the same, except that there is no compression level, -of course, and two more elements of the structure are initialized. avail_in -and next_in must be initialized before calling inflateInit(). This -is because the application has the option to provide the start of the zlib stream in -order for inflateInit() to have access to information about the compression -method to aid in memory allocation. In the current implementation of zlib -(up through versions 1.2.x), the method-dependent memory allocations are deferred to the first call of -inflate() anyway. However those fields must be initialized since later versions -of zlib that provide more compression methods may take advantage of this interface. -In any case, no decompression is performed by inflateInit(), so the -avail_out and next_out fields do not need to be initialized before calling. -

    -Here avail_in is set to zero and next_in is set to Z_NULL to -indicate that no input data is being provided. -

    
    -    /* allocate inflate state */
    -    strm.zalloc = Z_NULL;
    -    strm.zfree = Z_NULL;
    -    strm.opaque = Z_NULL;
    -    strm.avail_in = 0;
    -    strm.next_in = Z_NULL;
    -    ret = inflateInit(&strm);
    -    if (ret != Z_OK)
    -        return ret;
    -
    -The outer do-loop decompresses input until inflate() indicates -that it has reached the end of the compressed data and has produced all of the uncompressed -output. This is in contrast to def() which processes all of the input file. -If end-of-file is reached before the compressed data self-terminates, then the compressed -data is incomplete and an error is returned. -
    
    -    /* decompress until deflate stream ends or end of file */
    -    do {
    -
    -We read input data and set the strm structure accordingly. If we've reached the -end of the input file, then we leave the outer loop and report an error, since the -compressed data is incomplete. Note that we may read more data than is eventually consumed -by inflate(), if the input file continues past the zlib stream. -For applications where zlib streams are embedded in other data, this routine would -need to be modified to return the unused data, or at least indicate how much of the input -data was not used, so the application would know where to pick up after the zlib stream. -
    
    -        strm.avail_in = fread(in, 1, CHUNK, source);
    -        if (ferror(source)) {
    -            (void)inflateEnd(&strm);
    -            return Z_ERRNO;
    -        }
    -        if (strm.avail_in == 0)
    -            break;
    -        strm.next_in = in;
    -
    -The inner do-loop has the same function it did in def(), which is to -keep calling inflate() until has generated all of the output it can with the -provided input. -
    
    -        /* run inflate() on input until output buffer not full */
    -        do {
    -
    -Just like in def(), the same output space is provided for each call of inflate(). -
    
    -            strm.avail_out = CHUNK;
    -            strm.next_out = out;
    -
    -Now we run the decompression engine itself. There is no need to adjust the flush parameter, since -the zlib format is self-terminating. The main difference here is that there are -return values that we need to pay attention to. Z_DATA_ERROR -indicates that inflate() detected an error in the zlib compressed data format, -which means that either the data is not a zlib stream to begin with, or that the data was -corrupted somewhere along the way since it was compressed. The other error to be processed is -Z_MEM_ERROR, which can occur since memory allocation is deferred until inflate() -needs it, unlike deflate(), whose memory is allocated at the start by deflateInit(). -

    -Advanced applications may use -deflateSetDictionary() to prime deflate() with a set of likely data to improve the -first 32K or so of compression. This is noted in the zlib header, so inflate() -requests that that dictionary be provided before it can start to decompress. Without the dictionary, -correct decompression is not possible. For this routine, we have no idea what the dictionary is, -so the Z_NEED_DICT indication is converted to a Z_DATA_ERROR. -

    -inflate() can also return Z_STREAM_ERROR, which should not be possible here, -but could be checked for as noted above for def(). Z_BUF_ERROR does not need to be -checked for here, for the same reasons noted for def(). Z_STREAM_END will be -checked for later. -

    
    -            ret = inflate(&strm, Z_NO_FLUSH);
    -            assert(ret != Z_STREAM_ERROR);  /* state not clobbered */
    -            switch (ret) {
    -            case Z_NEED_DICT:
    -                ret = Z_DATA_ERROR;     /* and fall through */
    -            case Z_DATA_ERROR:
    -            case Z_MEM_ERROR:
    -                (void)inflateEnd(&strm);
    -                return ret;
    -            }
    -
    -The output of inflate() is handled identically to that of deflate(). -
    
    -            have = CHUNK - strm.avail_out;
    -            if (fwrite(out, 1, have, dest) != have || ferror(dest)) {
    -                (void)inflateEnd(&strm);
    -                return Z_ERRNO;
    -            }
    -
    -The inner do-loop ends when inflate() has no more output as indicated -by not filling the output buffer, just as for deflate(). In this case, we cannot -assert that strm.avail_in will be zero, since the deflate stream may end before the file -does. -
    
    -        } while (strm.avail_out == 0);
    -
    -The outer do-loop ends when inflate() reports that it has reached the -end of the input zlib stream, has completed the decompression and integrity -check, and has provided all of the output. This is indicated by the inflate() -return value Z_STREAM_END. The inner loop is guaranteed to leave ret -equal to Z_STREAM_END if the last chunk of the input file read contained the end -of the zlib stream. So if the return value is not Z_STREAM_END, the -loop continues to read more input. -
    
    -        /* done when inflate() says it's done */
    -    } while (ret != Z_STREAM_END);
    -
    -At this point, decompression successfully completed, or we broke out of the loop due to no -more data being available from the input file. If the last inflate() return value -is not Z_STREAM_END, then the zlib stream was incomplete and a data error -is returned. Otherwise, we return with a happy return value. Of course, inflateEnd() -is called first to avoid a memory leak. -
    
    -    /* clean up and return */
    -    (void)inflateEnd(&strm);
    -    return ret == Z_STREAM_END ? Z_OK : Z_DATA_ERROR;
    -}
    -
    -That ends the routines that directly use zlib. The following routines make this -a command-line program by running data through the above routines from stdin to -stdout, and handling any errors reported by def() or inf(). -

    -zerr() is used to interpret the possible error codes from def() -and inf(), as detailed in their comments above, and print out an error message. -Note that these are only a subset of the possible return values from deflate() -and inflate(). -

    
    -/* report a zlib or i/o error */
    -void zerr(int ret)
    -{
    -    fputs("zpipe: ", stderr);
    -    switch (ret) {
    -    case Z_ERRNO:
    -        if (ferror(stdin))
    -            fputs("error reading stdin\n", stderr);
    -        if (ferror(stdout))
    -            fputs("error writing stdout\n", stderr);
    -        break;
    -    case Z_STREAM_ERROR:
    -        fputs("invalid compression level\n", stderr);
    -        break;
    -    case Z_DATA_ERROR:
    -        fputs("invalid or incomplete deflate data\n", stderr);
    -        break;
    -    case Z_MEM_ERROR:
    -        fputs("out of memory\n", stderr);
    -        break;
    -    case Z_VERSION_ERROR:
    -        fputs("zlib version mismatch!\n", stderr);
    -    }
    -}
    -
    -Here is the main() routine used to test def() and inf(). The -zpipe command is simply a compression pipe from stdin to stdout, if -no arguments are given, or it is a decompression pipe if zpipe -d is used. If any other -arguments are provided, no compression or decompression is performed. Instead a usage -message is displayed. Examples are zpipe < foo.txt > foo.txt.z to compress, and -zpipe -d < foo.txt.z > foo.txt to decompress. -
    
    -/* compress or decompress from stdin to stdout */
    -int main(int argc, char **argv)
    -{
    -    int ret;
    -
    -    /* avoid end-of-line conversions */
    -    SET_BINARY_MODE(stdin);
    -    SET_BINARY_MODE(stdout);
    -
    -    /* do compression if no arguments */
    -    if (argc == 1) {
    -        ret = def(stdin, stdout, Z_DEFAULT_COMPRESSION);
    -        if (ret != Z_OK)
    -            zerr(ret);
    -        return ret;
    -    }
    -
    -    /* do decompression if -d specified */
    -    else if (argc == 2 && strcmp(argv[1], "-d") == 0) {
    -        ret = inf(stdin, stdout);
    -        if (ret != Z_OK)
    -            zerr(ret);
    -        return ret;
    -    }
    -
    -    /* otherwise, report usage */
    -    else {
    -        fputs("zpipe usage: zpipe [-d] < source > dest\n", stderr);
    -        return 1;
    -    }
    -}
    -
    -
    -Copyright (c) 2004, 2005 by Mark Adler
    Last modified 11 December 2005
    - - diff --git a/io2d/src/3rd-party/zlib/examples/zpipe.c b/io2d/src/3rd-party/zlib/examples/zpipe.c deleted file mode 100644 index 83535d1..0000000 --- a/io2d/src/3rd-party/zlib/examples/zpipe.c +++ /dev/null @@ -1,205 +0,0 @@ -/* zpipe.c: example of proper use of zlib's inflate() and deflate() - Not copyrighted -- provided to the public domain - Version 1.4 11 December 2005 Mark Adler */ - -/* Version history: - 1.0 30 Oct 2004 First version - 1.1 8 Nov 2004 Add void casting for unused return values - Use switch statement for inflate() return values - 1.2 9 Nov 2004 Add assertions to document zlib guarantees - 1.3 6 Apr 2005 Remove incorrect assertion in inf() - 1.4 11 Dec 2005 Add hack to avoid MSDOS end-of-line conversions - Avoid some compiler warnings for input and output buffers - */ - -#include -#include -#include -#include "zlib.h" - -#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__) -# include -# include -# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) -#else -# define SET_BINARY_MODE(file) -#endif - -#define CHUNK 16384 - -/* Compress from file source to file dest until EOF on source. - def() returns Z_OK on success, Z_MEM_ERROR if memory could not be - allocated for processing, Z_STREAM_ERROR if an invalid compression - level is supplied, Z_VERSION_ERROR if the version of zlib.h and the - version of the library linked do not match, or Z_ERRNO if there is - an error reading or writing the files. */ -int def(FILE *source, FILE *dest, int level) -{ - int ret, flush; - unsigned have; - z_stream strm; - unsigned char in[CHUNK]; - unsigned char out[CHUNK]; - - /* allocate deflate state */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - ret = deflateInit(&strm, level); - if (ret != Z_OK) - return ret; - - /* compress until end of file */ - do { - strm.avail_in = fread(in, 1, CHUNK, source); - if (ferror(source)) { - (void)deflateEnd(&strm); - return Z_ERRNO; - } - flush = feof(source) ? Z_FINISH : Z_NO_FLUSH; - strm.next_in = in; - - /* run deflate() on input until output buffer not full, finish - compression if all of source has been read in */ - do { - strm.avail_out = CHUNK; - strm.next_out = out; - ret = deflate(&strm, flush); /* no bad return value */ - assert(ret != Z_STREAM_ERROR); /* state not clobbered */ - have = CHUNK - strm.avail_out; - if (fwrite(out, 1, have, dest) != have || ferror(dest)) { - (void)deflateEnd(&strm); - return Z_ERRNO; - } - } while (strm.avail_out == 0); - assert(strm.avail_in == 0); /* all input will be used */ - - /* done when last data in file processed */ - } while (flush != Z_FINISH); - assert(ret == Z_STREAM_END); /* stream will be complete */ - - /* clean up and return */ - (void)deflateEnd(&strm); - return Z_OK; -} - -/* Decompress from file source to file dest until stream ends or EOF. - inf() returns Z_OK on success, Z_MEM_ERROR if memory could not be - allocated for processing, Z_DATA_ERROR if the deflate data is - invalid or incomplete, Z_VERSION_ERROR if the version of zlib.h and - the version of the library linked do not match, or Z_ERRNO if there - is an error reading or writing the files. */ -int inf(FILE *source, FILE *dest) -{ - int ret; - unsigned have; - z_stream strm; - unsigned char in[CHUNK]; - unsigned char out[CHUNK]; - - /* allocate inflate state */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit(&strm); - if (ret != Z_OK) - return ret; - - /* decompress until deflate stream ends or end of file */ - do { - strm.avail_in = fread(in, 1, CHUNK, source); - if (ferror(source)) { - (void)inflateEnd(&strm); - return Z_ERRNO; - } - if (strm.avail_in == 0) - break; - strm.next_in = in; - - /* run inflate() on input until output buffer not full */ - do { - strm.avail_out = CHUNK; - strm.next_out = out; - ret = inflate(&strm, Z_NO_FLUSH); - assert(ret != Z_STREAM_ERROR); /* state not clobbered */ - switch (ret) { - case Z_NEED_DICT: - ret = Z_DATA_ERROR; /* and fall through */ - case Z_DATA_ERROR: - case Z_MEM_ERROR: - (void)inflateEnd(&strm); - return ret; - } - have = CHUNK - strm.avail_out; - if (fwrite(out, 1, have, dest) != have || ferror(dest)) { - (void)inflateEnd(&strm); - return Z_ERRNO; - } - } while (strm.avail_out == 0); - - /* done when inflate() says it's done */ - } while (ret != Z_STREAM_END); - - /* clean up and return */ - (void)inflateEnd(&strm); - return ret == Z_STREAM_END ? Z_OK : Z_DATA_ERROR; -} - -/* report a zlib or i/o error */ -void zerr(int ret) -{ - fputs("zpipe: ", stderr); - switch (ret) { - case Z_ERRNO: - if (ferror(stdin)) - fputs("error reading stdin\n", stderr); - if (ferror(stdout)) - fputs("error writing stdout\n", stderr); - break; - case Z_STREAM_ERROR: - fputs("invalid compression level\n", stderr); - break; - case Z_DATA_ERROR: - fputs("invalid or incomplete deflate data\n", stderr); - break; - case Z_MEM_ERROR: - fputs("out of memory\n", stderr); - break; - case Z_VERSION_ERROR: - fputs("zlib version mismatch!\n", stderr); - } -} - -/* compress or decompress from stdin to stdout */ -int main(int argc, char **argv) -{ - int ret; - - /* avoid end-of-line conversions */ - SET_BINARY_MODE(stdin); - SET_BINARY_MODE(stdout); - - /* do compression if no arguments */ - if (argc == 1) { - ret = def(stdin, stdout, Z_DEFAULT_COMPRESSION); - if (ret != Z_OK) - zerr(ret); - return ret; - } - - /* do decompression if -d specified */ - else if (argc == 2 && strcmp(argv[1], "-d") == 0) { - ret = inf(stdin, stdout); - if (ret != Z_OK) - zerr(ret); - return ret; - } - - /* otherwise, report usage */ - else { - fputs("zpipe usage: zpipe [-d] < source > dest\n", stderr); - return 1; - } -} diff --git a/io2d/src/3rd-party/zlib/examples/zran.c b/io2d/src/3rd-party/zlib/examples/zran.c deleted file mode 100644 index 278f9ad..0000000 --- a/io2d/src/3rd-party/zlib/examples/zran.c +++ /dev/null @@ -1,409 +0,0 @@ -/* zran.c -- example of zlib/gzip stream indexing and random access - * Copyright (C) 2005, 2012 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - Version 1.1 29 Sep 2012 Mark Adler */ - -/* Version History: - 1.0 29 May 2005 First version - 1.1 29 Sep 2012 Fix memory reallocation error - */ - -/* Illustrate the use of Z_BLOCK, inflatePrime(), and inflateSetDictionary() - for random access of a compressed file. A file containing a zlib or gzip - stream is provided on the command line. The compressed stream is decoded in - its entirety, and an index built with access points about every SPAN bytes - in the uncompressed output. The compressed file is left open, and can then - be read randomly, having to decompress on the average SPAN/2 uncompressed - bytes before getting to the desired block of data. - - An access point can be created at the start of any deflate block, by saving - the starting file offset and bit of that block, and the 32K bytes of - uncompressed data that precede that block. Also the uncompressed offset of - that block is saved to provide a referece for locating a desired starting - point in the uncompressed stream. build_index() works by decompressing the - input zlib or gzip stream a block at a time, and at the end of each block - deciding if enough uncompressed data has gone by to justify the creation of - a new access point. If so, that point is saved in a data structure that - grows as needed to accommodate the points. - - To use the index, an offset in the uncompressed data is provided, for which - the latest accees point at or preceding that offset is located in the index. - The input file is positioned to the specified location in the index, and if - necessary the first few bits of the compressed data is read from the file. - inflate is initialized with those bits and the 32K of uncompressed data, and - the decompression then proceeds until the desired offset in the file is - reached. Then the decompression continues to read the desired uncompressed - data from the file. - - Another approach would be to generate the index on demand. In that case, - requests for random access reads from the compressed data would try to use - the index, but if a read far enough past the end of the index is required, - then further index entries would be generated and added. - - There is some fair bit of overhead to starting inflation for the random - access, mainly copying the 32K byte dictionary. So if small pieces of the - file are being accessed, it would make sense to implement a cache to hold - some lookahead and avoid many calls to extract() for small lengths. - - Another way to build an index would be to use inflateCopy(). That would - not be constrained to have access points at block boundaries, but requires - more memory per access point, and also cannot be saved to file due to the - use of pointers in the state. The approach here allows for storage of the - index in a file. - */ - -#include -#include -#include -#include "zlib.h" - -#define local static - -#define SPAN 1048576L /* desired distance between access points */ -#define WINSIZE 32768U /* sliding window size */ -#define CHUNK 16384 /* file input buffer size */ - -/* access point entry */ -struct point { - off_t out; /* corresponding offset in uncompressed data */ - off_t in; /* offset in input file of first full byte */ - int bits; /* number of bits (1-7) from byte at in - 1, or 0 */ - unsigned char window[WINSIZE]; /* preceding 32K of uncompressed data */ -}; - -/* access point list */ -struct access { - int have; /* number of list entries filled in */ - int size; /* number of list entries allocated */ - struct point *list; /* allocated list */ -}; - -/* Deallocate an index built by build_index() */ -local void free_index(struct access *index) -{ - if (index != NULL) { - free(index->list); - free(index); - } -} - -/* Add an entry to the access point list. If out of memory, deallocate the - existing list and return NULL. */ -local struct access *addpoint(struct access *index, int bits, - off_t in, off_t out, unsigned left, unsigned char *window) -{ - struct point *next; - - /* if list is empty, create it (start with eight points) */ - if (index == NULL) { - index = malloc(sizeof(struct access)); - if (index == NULL) return NULL; - index->list = malloc(sizeof(struct point) << 3); - if (index->list == NULL) { - free(index); - return NULL; - } - index->size = 8; - index->have = 0; - } - - /* if list is full, make it bigger */ - else if (index->have == index->size) { - index->size <<= 1; - next = realloc(index->list, sizeof(struct point) * index->size); - if (next == NULL) { - free_index(index); - return NULL; - } - index->list = next; - } - - /* fill in entry and increment how many we have */ - next = index->list + index->have; - next->bits = bits; - next->in = in; - next->out = out; - if (left) - memcpy(next->window, window + WINSIZE - left, left); - if (left < WINSIZE) - memcpy(next->window + left, window, WINSIZE - left); - index->have++; - - /* return list, possibly reallocated */ - return index; -} - -/* Make one entire pass through the compressed stream and build an index, with - access points about every span bytes of uncompressed output -- span is - chosen to balance the speed of random access against the memory requirements - of the list, about 32K bytes per access point. Note that data after the end - of the first zlib or gzip stream in the file is ignored. build_index() - returns the number of access points on success (>= 1), Z_MEM_ERROR for out - of memory, Z_DATA_ERROR for an error in the input file, or Z_ERRNO for a - file read error. On success, *built points to the resulting index. */ -local int build_index(FILE *in, off_t span, struct access **built) -{ - int ret; - off_t totin, totout; /* our own total counters to avoid 4GB limit */ - off_t last; /* totout value of last access point */ - struct access *index; /* access points being generated */ - z_stream strm; - unsigned char input[CHUNK]; - unsigned char window[WINSIZE]; - - /* initialize inflate */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit2(&strm, 47); /* automatic zlib or gzip decoding */ - if (ret != Z_OK) - return ret; - - /* inflate the input, maintain a sliding window, and build an index -- this - also validates the integrity of the compressed data using the check - information at the end of the gzip or zlib stream */ - totin = totout = last = 0; - index = NULL; /* will be allocated by first addpoint() */ - strm.avail_out = 0; - do { - /* get some compressed data from input file */ - strm.avail_in = fread(input, 1, CHUNK, in); - if (ferror(in)) { - ret = Z_ERRNO; - goto build_index_error; - } - if (strm.avail_in == 0) { - ret = Z_DATA_ERROR; - goto build_index_error; - } - strm.next_in = input; - - /* process all of that, or until end of stream */ - do { - /* reset sliding window if necessary */ - if (strm.avail_out == 0) { - strm.avail_out = WINSIZE; - strm.next_out = window; - } - - /* inflate until out of input, output, or at end of block -- - update the total input and output counters */ - totin += strm.avail_in; - totout += strm.avail_out; - ret = inflate(&strm, Z_BLOCK); /* return at end of block */ - totin -= strm.avail_in; - totout -= strm.avail_out; - if (ret == Z_NEED_DICT) - ret = Z_DATA_ERROR; - if (ret == Z_MEM_ERROR || ret == Z_DATA_ERROR) - goto build_index_error; - if (ret == Z_STREAM_END) - break; - - /* if at end of block, consider adding an index entry (note that if - data_type indicates an end-of-block, then all of the - uncompressed data from that block has been delivered, and none - of the compressed data after that block has been consumed, - except for up to seven bits) -- the totout == 0 provides an - entry point after the zlib or gzip header, and assures that the - index always has at least one access point; we avoid creating an - access point after the last block by checking bit 6 of data_type - */ - if ((strm.data_type & 128) && !(strm.data_type & 64) && - (totout == 0 || totout - last > span)) { - index = addpoint(index, strm.data_type & 7, totin, - totout, strm.avail_out, window); - if (index == NULL) { - ret = Z_MEM_ERROR; - goto build_index_error; - } - last = totout; - } - } while (strm.avail_in != 0); - } while (ret != Z_STREAM_END); - - /* clean up and return index (release unused entries in list) */ - (void)inflateEnd(&strm); - index->list = realloc(index->list, sizeof(struct point) * index->have); - index->size = index->have; - *built = index; - return index->size; - - /* return error */ - build_index_error: - (void)inflateEnd(&strm); - if (index != NULL) - free_index(index); - return ret; -} - -/* Use the index to read len bytes from offset into buf, return bytes read or - negative for error (Z_DATA_ERROR or Z_MEM_ERROR). If data is requested past - the end of the uncompressed data, then extract() will return a value less - than len, indicating how much as actually read into buf. This function - should not return a data error unless the file was modified since the index - was generated. extract() may also return Z_ERRNO if there is an error on - reading or seeking the input file. */ -local int extract(FILE *in, struct access *index, off_t offset, - unsigned char *buf, int len) -{ - int ret, skip; - z_stream strm; - struct point *here; - unsigned char input[CHUNK]; - unsigned char discard[WINSIZE]; - - /* proceed only if something reasonable to do */ - if (len < 0) - return 0; - - /* find where in stream to start */ - here = index->list; - ret = index->have; - while (--ret && here[1].out <= offset) - here++; - - /* initialize file and inflate state to start there */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit2(&strm, -15); /* raw inflate */ - if (ret != Z_OK) - return ret; - ret = fseeko(in, here->in - (here->bits ? 1 : 0), SEEK_SET); - if (ret == -1) - goto extract_ret; - if (here->bits) { - ret = getc(in); - if (ret == -1) { - ret = ferror(in) ? Z_ERRNO : Z_DATA_ERROR; - goto extract_ret; - } - (void)inflatePrime(&strm, here->bits, ret >> (8 - here->bits)); - } - (void)inflateSetDictionary(&strm, here->window, WINSIZE); - - /* skip uncompressed bytes until offset reached, then satisfy request */ - offset -= here->out; - strm.avail_in = 0; - skip = 1; /* while skipping to offset */ - do { - /* define where to put uncompressed data, and how much */ - if (offset == 0 && skip) { /* at offset now */ - strm.avail_out = len; - strm.next_out = buf; - skip = 0; /* only do this once */ - } - if (offset > WINSIZE) { /* skip WINSIZE bytes */ - strm.avail_out = WINSIZE; - strm.next_out = discard; - offset -= WINSIZE; - } - else if (offset != 0) { /* last skip */ - strm.avail_out = (unsigned)offset; - strm.next_out = discard; - offset = 0; - } - - /* uncompress until avail_out filled, or end of stream */ - do { - if (strm.avail_in == 0) { - strm.avail_in = fread(input, 1, CHUNK, in); - if (ferror(in)) { - ret = Z_ERRNO; - goto extract_ret; - } - if (strm.avail_in == 0) { - ret = Z_DATA_ERROR; - goto extract_ret; - } - strm.next_in = input; - } - ret = inflate(&strm, Z_NO_FLUSH); /* normal inflate */ - if (ret == Z_NEED_DICT) - ret = Z_DATA_ERROR; - if (ret == Z_MEM_ERROR || ret == Z_DATA_ERROR) - goto extract_ret; - if (ret == Z_STREAM_END) - break; - } while (strm.avail_out != 0); - - /* if reach end of stream, then don't keep trying to get more */ - if (ret == Z_STREAM_END) - break; - - /* do until offset reached and requested data read, or stream ends */ - } while (skip); - - /* compute number of uncompressed bytes read after offset */ - ret = skip ? 0 : len - strm.avail_out; - - /* clean up and return bytes read or error */ - extract_ret: - (void)inflateEnd(&strm); - return ret; -} - -/* Demonstrate the use of build_index() and extract() by processing the file - provided on the command line, and the extracting 16K from about 2/3rds of - the way through the uncompressed output, and writing that to stdout. */ -int main(int argc, char **argv) -{ - int len; - off_t offset; - FILE *in; - struct access *index = NULL; - unsigned char buf[CHUNK]; - - /* open input file */ - if (argc != 2) { - fprintf(stderr, "usage: zran file.gz\n"); - return 1; - } - in = fopen(argv[1], "rb"); - if (in == NULL) { - fprintf(stderr, "zran: could not open %s for reading\n", argv[1]); - return 1; - } - - /* build index */ - len = build_index(in, SPAN, &index); - if (len < 0) { - fclose(in); - switch (len) { - case Z_MEM_ERROR: - fprintf(stderr, "zran: out of memory\n"); - break; - case Z_DATA_ERROR: - fprintf(stderr, "zran: compressed data error in %s\n", argv[1]); - break; - case Z_ERRNO: - fprintf(stderr, "zran: read error on %s\n", argv[1]); - break; - default: - fprintf(stderr, "zran: error %d while building index\n", len); - } - return 1; - } - fprintf(stderr, "zran: built index with %d access points\n", len); - - /* use index by reading some bytes from an arbitrary offset */ - offset = (index->list[index->have - 1].out << 1) / 3; - len = extract(in, index, offset, buf, CHUNK); - if (len < 0) - fprintf(stderr, "zran: extraction failed: %s error\n", - len == Z_MEM_ERROR ? "out of memory" : "input corrupted"); - else { - fwrite(buf, 1, len, stdout); - fprintf(stderr, "zran: extracted %d bytes at %llu\n", len, offset); - } - - /* clean up and exit */ - free_index(index); - fclose(in); - return 0; -} diff --git a/io2d/src/3rd-party/zlib/gzclose.c b/io2d/src/3rd-party/zlib/gzclose.c deleted file mode 100644 index caeb99a..0000000 --- a/io2d/src/3rd-party/zlib/gzclose.c +++ /dev/null @@ -1,25 +0,0 @@ -/* gzclose.c -- zlib gzclose() function - * Copyright (C) 2004, 2010 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "gzguts.h" - -/* gzclose() is in a separate file so that it is linked in only if it is used. - That way the other gzclose functions can be used instead to avoid linking in - unneeded compression or decompression routines. */ -int ZEXPORT gzclose(file) - gzFile file; -{ -#ifndef NO_GZCOMPRESS - gz_statep state; - - if (file == NULL) - return Z_STREAM_ERROR; - state = (gz_statep)file; - - return state->mode == GZ_READ ? gzclose_r(file) : gzclose_w(file); -#else - return gzclose_r(file); -#endif -} diff --git a/io2d/src/3rd-party/zlib/gzguts.h b/io2d/src/3rd-party/zlib/gzguts.h deleted file mode 100644 index d87659d..0000000 --- a/io2d/src/3rd-party/zlib/gzguts.h +++ /dev/null @@ -1,209 +0,0 @@ -/* gzguts.h -- zlib internal header definitions for gz* operations - * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#ifdef _LARGEFILE64_SOURCE -# ifndef _LARGEFILE_SOURCE -# define _LARGEFILE_SOURCE 1 -# endif -# ifdef _FILE_OFFSET_BITS -# undef _FILE_OFFSET_BITS -# endif -#endif - -#ifdef HAVE_HIDDEN -# define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) -#else -# define ZLIB_INTERNAL -#endif - -#include -#include "zlib.h" -#ifdef STDC -# include -# include -# include -#endif -#include - -#ifdef _WIN32 -# include -#endif - -#if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32) -# include -#endif - -#ifdef WINAPI_FAMILY -# define open _open -# define read _read -# define write _write -# define close _close -#endif - -#ifdef NO_DEFLATE /* for compatibility with old definition */ -# define NO_GZCOMPRESS -#endif - -#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550) -# ifndef HAVE_VSNPRINTF -# define HAVE_VSNPRINTF -# endif -#endif - -#if defined(__CYGWIN__) -# ifndef HAVE_VSNPRINTF -# define HAVE_VSNPRINTF -# endif -#endif - -#if defined(MSDOS) && defined(__BORLANDC__) && (BORLANDC > 0x410) -# ifndef HAVE_VSNPRINTF -# define HAVE_VSNPRINTF -# endif -#endif - -#ifndef HAVE_VSNPRINTF -# ifdef MSDOS -/* vsnprintf may exist on some MS-DOS compilers (DJGPP?), - but for now we just assume it doesn't. */ -# define NO_vsnprintf -# endif -# ifdef __TURBOC__ -# define NO_vsnprintf -# endif -# ifdef WIN32 -/* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ -# if !defined(vsnprintf) && !defined(NO_vsnprintf) -# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) -# define vsnprintf _vsnprintf -# endif -# endif -# endif -# ifdef __SASC -# define NO_vsnprintf -# endif -# ifdef VMS -# define NO_vsnprintf -# endif -# ifdef __OS400__ -# define NO_vsnprintf -# endif -# ifdef __MVS__ -# define NO_vsnprintf -# endif -#endif - -/* unlike snprintf (which is required in C99, yet still not supported by - Microsoft more than a decade later!), _snprintf does not guarantee null - termination of the result -- however this is only used in gzlib.c where - the result is assured to fit in the space provided */ -#ifdef _MSC_VER -# define snprintf _snprintf -#endif - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - -/* gz* functions always use library allocation functions */ -#ifndef STDC - extern voidp malloc OF((uInt size)); - extern void free OF((voidpf ptr)); -#endif - -/* get errno and strerror definition */ -#if defined UNDER_CE -# include -# define zstrerror() gz_strwinerror((DWORD)GetLastError()) -#else -# ifndef NO_STRERROR -# include -# define zstrerror() strerror(errno) -# else -# define zstrerror() "stdio error (consult errno)" -# endif -#endif - -/* provide prototypes for these when building zlib without LFS */ -#if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); - ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); -#endif - -/* default memLevel */ -#if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -#else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -#endif - -/* default i/o buffer size -- double this for output when reading (this and - twice this must be able to fit in an unsigned type) */ -#define GZBUFSIZE 8192 - -/* gzip modes, also provide a little integrity check on the passed structure */ -#define GZ_NONE 0 -#define GZ_READ 7247 -#define GZ_WRITE 31153 -#define GZ_APPEND 1 /* mode set to GZ_WRITE after the file is opened */ - -/* values for gz_state how */ -#define LOOK 0 /* look for a gzip header */ -#define COPY 1 /* copy input directly */ -#define GZIP 2 /* decompress a gzip stream */ - -/* internal gzip file state data structure */ -typedef struct { - /* exposed contents for gzgetc() macro */ - struct gzFile_s x; /* "x" for exposed */ - /* x.have: number of bytes available at x.next */ - /* x.next: next output data to deliver or write */ - /* x.pos: current position in uncompressed data */ - /* used for both reading and writing */ - int mode; /* see gzip modes above */ - int fd; /* file descriptor */ - char *path; /* path or fd for error messages */ - unsigned size; /* buffer size, zero if not allocated yet */ - unsigned want; /* requested buffer size, default is GZBUFSIZE */ - unsigned char *in; /* input buffer */ - unsigned char *out; /* output buffer (double-sized when reading) */ - int direct; /* 0 if processing gzip, 1 if transparent */ - /* just for reading */ - int how; /* 0: get header, 1: copy, 2: decompress */ - z_off64_t start; /* where the gzip data started, for rewinding */ - int eof; /* true if end of input file reached */ - int past; /* true if read requested past end */ - /* just for writing */ - int level; /* compression level */ - int strategy; /* compression strategy */ - /* seek request */ - z_off64_t skip; /* amount to skip (already rewound if backwards) */ - int seek; /* true if seek request pending */ - /* error information */ - int err; /* error code */ - char *msg; /* error message */ - /* zlib inflate or deflate stream */ - z_stream strm; /* stream structure in-place (not a pointer) */ -} gz_state; -typedef gz_state FAR *gz_statep; - -/* shared functions */ -void ZLIB_INTERNAL gz_error OF((gz_statep, int, const char *)); -#if defined UNDER_CE -char ZLIB_INTERNAL *gz_strwinerror OF((DWORD error)); -#endif - -/* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t - value -- needed when comparing unsigned to z_off64_t, which is signed - (possible z_off64_t types off_t, off64_t, and long are all signed) */ -#ifdef INT_MAX -# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX) -#else -unsigned ZLIB_INTERNAL gz_intmax OF((void)); -# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax()) -#endif diff --git a/io2d/src/3rd-party/zlib/gzlib.c b/io2d/src/3rd-party/zlib/gzlib.c deleted file mode 100644 index fae202e..0000000 --- a/io2d/src/3rd-party/zlib/gzlib.c +++ /dev/null @@ -1,634 +0,0 @@ -/* gzlib.c -- zlib functions common to reading and writing gzip files - * Copyright (C) 2004, 2010, 2011, 2012, 2013 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "gzguts.h" - -#if defined(_WIN32) && !defined(__BORLANDC__) -# define LSEEK _lseeki64 -#else -#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 -# define LSEEK lseek64 -#else -# define LSEEK lseek -#endif -#endif - -/* Local functions */ -local void gz_reset OF((gz_statep)); -local gzFile gz_open OF((const void *, int, const char *)); - -#if defined UNDER_CE - -/* Map the Windows error number in ERROR to a locale-dependent error message - string and return a pointer to it. Typically, the values for ERROR come - from GetLastError. - - The string pointed to shall not be modified by the application, but may be - overwritten by a subsequent call to gz_strwinerror - - The gz_strwinerror function does not change the current setting of - GetLastError. */ -char ZLIB_INTERNAL *gz_strwinerror (error) - DWORD error; -{ - static char buf[1024]; - - wchar_t *msgbuf; - DWORD lasterr = GetLastError(); - DWORD chars = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM - | FORMAT_MESSAGE_ALLOCATE_BUFFER, - NULL, - error, - 0, /* Default language */ - (LPVOID)&msgbuf, - 0, - NULL); - if (chars != 0) { - /* If there is an \r\n appended, zap it. */ - if (chars >= 2 - && msgbuf[chars - 2] == '\r' && msgbuf[chars - 1] == '\n') { - chars -= 2; - msgbuf[chars] = 0; - } - - if (chars > sizeof (buf) - 1) { - chars = sizeof (buf) - 1; - msgbuf[chars] = 0; - } - - wcstombs(buf, msgbuf, chars + 1); - LocalFree(msgbuf); - } - else { - sprintf(buf, "unknown win32 error (%ld)", error); - } - - SetLastError(lasterr); - return buf; -} - -#endif /* UNDER_CE */ - -/* Reset gzip file state */ -local void gz_reset(state) - gz_statep state; -{ - state->x.have = 0; /* no output data available */ - if (state->mode == GZ_READ) { /* for reading ... */ - state->eof = 0; /* not at end of file */ - state->past = 0; /* have not read past end yet */ - state->how = LOOK; /* look for gzip header */ - } - state->seek = 0; /* no seek request pending */ - gz_error(state, Z_OK, NULL); /* clear error */ - state->x.pos = 0; /* no uncompressed data yet */ - state->strm.avail_in = 0; /* no input data yet */ -} - -/* Open a gzip file either by name or file descriptor. */ -local gzFile gz_open(path, fd, mode) - const void *path; - int fd; - const char *mode; -{ - gz_statep state; - size_t len; - int oflag; -#ifdef O_CLOEXEC - int cloexec = 0; -#endif -#ifdef O_EXCL - int exclusive = 0; -#endif - - /* check input */ - if (path == NULL) - return NULL; - - /* allocate gzFile structure to return */ - state = (gz_statep)malloc(sizeof(gz_state)); - if (state == NULL) - return NULL; - state->size = 0; /* no buffers allocated yet */ - state->want = GZBUFSIZE; /* requested buffer size */ - state->msg = NULL; /* no error message yet */ - - /* interpret mode */ - state->mode = GZ_NONE; - state->level = Z_DEFAULT_COMPRESSION; - state->strategy = Z_DEFAULT_STRATEGY; - state->direct = 0; - while (*mode) { - if (*mode >= '0' && *mode <= '9') - state->level = *mode - '0'; - else - switch (*mode) { - case 'r': - state->mode = GZ_READ; - break; -#ifndef NO_GZCOMPRESS - case 'w': - state->mode = GZ_WRITE; - break; - case 'a': - state->mode = GZ_APPEND; - break; -#endif - case '+': /* can't read and write at the same time */ - free(state); - return NULL; - case 'b': /* ignore -- will request binary anyway */ - break; -#ifdef O_CLOEXEC - case 'e': - cloexec = 1; - break; -#endif -#ifdef O_EXCL - case 'x': - exclusive = 1; - break; -#endif - case 'f': - state->strategy = Z_FILTERED; - break; - case 'h': - state->strategy = Z_HUFFMAN_ONLY; - break; - case 'R': - state->strategy = Z_RLE; - break; - case 'F': - state->strategy = Z_FIXED; - break; - case 'T': - state->direct = 1; - break; - default: /* could consider as an error, but just ignore */ - ; - } - mode++; - } - - /* must provide an "r", "w", or "a" */ - if (state->mode == GZ_NONE) { - free(state); - return NULL; - } - - /* can't force transparent read */ - if (state->mode == GZ_READ) { - if (state->direct) { - free(state); - return NULL; - } - state->direct = 1; /* for empty file */ - } - - /* save the path name for error messages */ -#ifdef _WIN32 - if (fd == -2) { - len = wcstombs(NULL, path, 0); - if (len == (size_t)-1) - len = 0; - } - else -#endif - len = strlen((const char *)path); - state->path = (char *)malloc(len + 1); - if (state->path == NULL) { - free(state); - return NULL; - } -#ifdef _WIN32 - if (fd == -2) - if (len) - wcstombs(state->path, path, len + 1); - else - *(state->path) = 0; - else -#endif -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(state->path, len + 1, "%s", (const char *)path); -#else - strcpy(state->path, path); -#endif - - /* compute the flags for open() */ - oflag = -#ifdef O_LARGEFILE - O_LARGEFILE | -#endif -#ifdef O_BINARY - O_BINARY | -#endif -#ifdef O_CLOEXEC - (cloexec ? O_CLOEXEC : 0) | -#endif - (state->mode == GZ_READ ? - O_RDONLY : - (O_WRONLY | O_CREAT | -#ifdef O_EXCL - (exclusive ? O_EXCL : 0) | -#endif - (state->mode == GZ_WRITE ? - O_TRUNC : - O_APPEND))); - - /* open the file with the appropriate flags (or just use fd) */ - state->fd = fd > -1 ? fd : ( -#ifdef _WIN32 - fd == -2 ? _wopen(path, oflag, 0666) : -#endif - open((const char *)path, oflag, 0666)); - if (state->fd == -1) { - free(state->path); - free(state); - return NULL; - } - if (state->mode == GZ_APPEND) - state->mode = GZ_WRITE; /* simplify later checks */ - - /* save the current position for rewinding (only if reading) */ - if (state->mode == GZ_READ) { - state->start = LSEEK(state->fd, 0, SEEK_CUR); - if (state->start == -1) state->start = 0; - } - - /* initialize stream */ - gz_reset(state); - - /* return stream */ - return (gzFile)state; -} - -/* -- see zlib.h -- */ -gzFile ZEXPORT gzopen(path, mode) - const char *path; - const char *mode; -{ - return gz_open(path, -1, mode); -} - -/* -- see zlib.h -- */ -gzFile ZEXPORT gzopen64(path, mode) - const char *path; - const char *mode; -{ - return gz_open(path, -1, mode); -} - -/* -- see zlib.h -- */ -gzFile ZEXPORT gzdopen(fd, mode) - int fd; - const char *mode; -{ - char *path; /* identifier for error messages */ - gzFile gz; - - if (fd == -1 || (path = (char *)malloc(7 + 3 * sizeof(int))) == NULL) - return NULL; -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(path, 7 + 3 * sizeof(int), "", fd); /* for debugging */ -#else - sprintf(path, "", fd); /* for debugging */ -#endif - gz = gz_open(path, fd, mode); - free(path); - return gz; -} - -/* -- see zlib.h -- */ -#ifdef _WIN32 -gzFile ZEXPORT gzopen_w(path, mode) - const wchar_t *path; - const char *mode; -{ - return gz_open(path, -2, mode); -} -#endif - -/* -- see zlib.h -- */ -int ZEXPORT gzbuffer(file, size) - gzFile file; - unsigned size; -{ - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return -1; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return -1; - - /* make sure we haven't already allocated memory */ - if (state->size != 0) - return -1; - - /* check and set requested size */ - if (size < 2) - size = 2; /* need two bytes to check magic header */ - state->want = size; - return 0; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzrewind(file) - gzFile file; -{ - gz_statep state; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - - /* check that we're reading and that there's no error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) - return -1; - - /* back up and start over */ - if (LSEEK(state->fd, state->start, SEEK_SET) == -1) - return -1; - gz_reset(state); - return 0; -} - -/* -- see zlib.h -- */ -z_off64_t ZEXPORT gzseek64(file, offset, whence) - gzFile file; - z_off64_t offset; - int whence; -{ - unsigned n; - z_off64_t ret; - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return -1; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return -1; - - /* check that there's no error */ - if (state->err != Z_OK && state->err != Z_BUF_ERROR) - return -1; - - /* can only seek from start or relative to current position */ - if (whence != SEEK_SET && whence != SEEK_CUR) - return -1; - - /* normalize offset to a SEEK_CUR specification */ - if (whence == SEEK_SET) - offset -= state->x.pos; - else if (state->seek) - offset += state->skip; - state->seek = 0; - - /* if within raw area while reading, just go there */ - if (state->mode == GZ_READ && state->how == COPY && - state->x.pos + offset >= 0) { - ret = LSEEK(state->fd, offset - state->x.have, SEEK_CUR); - if (ret == -1) - return -1; - state->x.have = 0; - state->eof = 0; - state->past = 0; - state->seek = 0; - gz_error(state, Z_OK, NULL); - state->strm.avail_in = 0; - state->x.pos += offset; - return state->x.pos; - } - - /* calculate skip amount, rewinding if needed for back seek when reading */ - if (offset < 0) { - if (state->mode != GZ_READ) /* writing -- can't go backwards */ - return -1; - offset += state->x.pos; - if (offset < 0) /* before start of file! */ - return -1; - if (gzrewind(file) == -1) /* rewind, then skip to offset */ - return -1; - } - - /* if reading, skip what's in output buffer (one less gzgetc() check) */ - if (state->mode == GZ_READ) { - n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > offset ? - (unsigned)offset : state->x.have; - state->x.have -= n; - state->x.next += n; - state->x.pos += n; - offset -= n; - } - - /* request skip (if not zero) */ - if (offset) { - state->seek = 1; - state->skip = offset; - } - return state->x.pos + offset; -} - -/* -- see zlib.h -- */ -z_off_t ZEXPORT gzseek(file, offset, whence) - gzFile file; - z_off_t offset; - int whence; -{ - z_off64_t ret; - - ret = gzseek64(file, (z_off64_t)offset, whence); - return ret == (z_off_t)ret ? (z_off_t)ret : -1; -} - -/* -- see zlib.h -- */ -z_off64_t ZEXPORT gztell64(file) - gzFile file; -{ - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return -1; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return -1; - - /* return position */ - return state->x.pos + (state->seek ? state->skip : 0); -} - -/* -- see zlib.h -- */ -z_off_t ZEXPORT gztell(file) - gzFile file; -{ - z_off64_t ret; - - ret = gztell64(file); - return ret == (z_off_t)ret ? (z_off_t)ret : -1; -} - -/* -- see zlib.h -- */ -z_off64_t ZEXPORT gzoffset64(file) - gzFile file; -{ - z_off64_t offset; - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return -1; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return -1; - - /* compute and return effective offset in file */ - offset = LSEEK(state->fd, 0, SEEK_CUR); - if (offset == -1) - return -1; - if (state->mode == GZ_READ) /* reading */ - offset -= state->strm.avail_in; /* don't count buffered input */ - return offset; -} - -/* -- see zlib.h -- */ -z_off_t ZEXPORT gzoffset(file) - gzFile file; -{ - z_off64_t ret; - - ret = gzoffset64(file); - return ret == (z_off_t)ret ? (z_off_t)ret : -1; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzeof(file) - gzFile file; -{ - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return 0; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return 0; - - /* return end-of-file state */ - return state->mode == GZ_READ ? state->past : 0; -} - -/* -- see zlib.h -- */ -const char * ZEXPORT gzerror(file, errnum) - gzFile file; - int *errnum; -{ - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return NULL; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return NULL; - - /* return error information */ - if (errnum != NULL) - *errnum = state->err; - return state->err == Z_MEM_ERROR ? "out of memory" : - (state->msg == NULL ? "" : state->msg); -} - -/* -- see zlib.h -- */ -void ZEXPORT gzclearerr(file) - gzFile file; -{ - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return; - - /* clear error and end-of-file */ - if (state->mode == GZ_READ) { - state->eof = 0; - state->past = 0; - } - gz_error(state, Z_OK, NULL); -} - -/* Create an error message in allocated memory and set state->err and - state->msg accordingly. Free any previous error message already there. Do - not try to free or allocate space if the error is Z_MEM_ERROR (out of - memory). Simply save the error message as a static string. If there is an - allocation failure constructing the error message, then convert the error to - out of memory. */ -void ZLIB_INTERNAL gz_error(state, err, msg) - gz_statep state; - int err; - const char *msg; -{ - /* free previously allocated message and clear */ - if (state->msg != NULL) { - if (state->err != Z_MEM_ERROR) - free(state->msg); - state->msg = NULL; - } - - /* if fatal, set state->x.have to 0 so that the gzgetc() macro fails */ - if (err != Z_OK && err != Z_BUF_ERROR) - state->x.have = 0; - - /* set error code, and if no message, then done */ - state->err = err; - if (msg == NULL) - return; - - /* for an out of memory error, return literal string when requested */ - if (err == Z_MEM_ERROR) - return; - - /* construct error message with path */ - if ((state->msg = (char *)malloc(strlen(state->path) + strlen(msg) + 3)) == - NULL) { - state->err = Z_MEM_ERROR; - return; - } -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(state->msg, strlen(state->path) + strlen(msg) + 3, - "%s%s%s", state->path, ": ", msg); -#else - strcpy(state->msg, state->path); - strcat(state->msg, ": "); - strcat(state->msg, msg); -#endif - return; -} - -#ifndef INT_MAX -/* portably return maximum value for an int (when limits.h presumed not - available) -- we need to do this to cover cases where 2's complement not - used, since C standard permits 1's complement and sign-bit representations, - otherwise we could just use ((unsigned)-1) >> 1 */ -unsigned ZLIB_INTERNAL gz_intmax() -{ - unsigned p, q; - - p = 1; - do { - q = p; - p <<= 1; - p++; - } while (p > q); - return q >> 1; -} -#endif diff --git a/io2d/src/3rd-party/zlib/gzread.c b/io2d/src/3rd-party/zlib/gzread.c deleted file mode 100644 index bf4538e..0000000 --- a/io2d/src/3rd-party/zlib/gzread.c +++ /dev/null @@ -1,594 +0,0 @@ -/* gzread.c -- zlib functions for reading gzip files - * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "gzguts.h" - -/* Local functions */ -local int gz_load OF((gz_statep, unsigned char *, unsigned, unsigned *)); -local int gz_avail OF((gz_statep)); -local int gz_look OF((gz_statep)); -local int gz_decomp OF((gz_statep)); -local int gz_fetch OF((gz_statep)); -local int gz_skip OF((gz_statep, z_off64_t)); - -/* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from - state->fd, and update state->eof, state->err, and state->msg as appropriate. - This function needs to loop on read(), since read() is not guaranteed to - read the number of bytes requested, depending on the type of descriptor. */ -local int gz_load(state, buf, len, have) - gz_statep state; - unsigned char *buf; - unsigned len; - unsigned *have; -{ - int ret; - - *have = 0; - do { - ret = read(state->fd, buf + *have, len - *have); - if (ret <= 0) - break; - *have += ret; - } while (*have < len); - if (ret < 0) { - gz_error(state, Z_ERRNO, zstrerror()); - return -1; - } - if (ret == 0) - state->eof = 1; - return 0; -} - -/* Load up input buffer and set eof flag if last data loaded -- return -1 on - error, 0 otherwise. Note that the eof flag is set when the end of the input - file is reached, even though there may be unused data in the buffer. Once - that data has been used, no more attempts will be made to read the file. - If strm->avail_in != 0, then the current data is moved to the beginning of - the input buffer, and then the remainder of the buffer is loaded with the - available data from the input file. */ -local int gz_avail(state) - gz_statep state; -{ - unsigned got; - z_streamp strm = &(state->strm); - - if (state->err != Z_OK && state->err != Z_BUF_ERROR) - return -1; - if (state->eof == 0) { - if (strm->avail_in) { /* copy what's there to the start */ - unsigned char *p = state->in; - unsigned const char *q = strm->next_in; - unsigned n = strm->avail_in; - do { - *p++ = *q++; - } while (--n); - } - if (gz_load(state, state->in + strm->avail_in, - state->size - strm->avail_in, &got) == -1) - return -1; - strm->avail_in += got; - strm->next_in = state->in; - } - return 0; -} - -/* Look for gzip header, set up for inflate or copy. state->x.have must be 0. - If this is the first time in, allocate required memory. state->how will be - left unchanged if there is no more input data available, will be set to COPY - if there is no gzip header and direct copying will be performed, or it will - be set to GZIP for decompression. If direct copying, then leftover input - data from the input buffer will be copied to the output buffer. In that - case, all further file reads will be directly to either the output buffer or - a user buffer. If decompressing, the inflate state will be initialized. - gz_look() will return 0 on success or -1 on failure. */ -local int gz_look(state) - gz_statep state; -{ - z_streamp strm = &(state->strm); - - /* allocate read buffers and inflate memory */ - if (state->size == 0) { - /* allocate buffers */ - state->in = (unsigned char *)malloc(state->want); - state->out = (unsigned char *)malloc(state->want << 1); - if (state->in == NULL || state->out == NULL) { - if (state->out != NULL) - free(state->out); - if (state->in != NULL) - free(state->in); - gz_error(state, Z_MEM_ERROR, "out of memory"); - return -1; - } - state->size = state->want; - - /* allocate inflate memory */ - state->strm.zalloc = Z_NULL; - state->strm.zfree = Z_NULL; - state->strm.opaque = Z_NULL; - state->strm.avail_in = 0; - state->strm.next_in = Z_NULL; - if (inflateInit2(&(state->strm), 15 + 16) != Z_OK) { /* gunzip */ - free(state->out); - free(state->in); - state->size = 0; - gz_error(state, Z_MEM_ERROR, "out of memory"); - return -1; - } - } - - /* get at least the magic bytes in the input buffer */ - if (strm->avail_in < 2) { - if (gz_avail(state) == -1) - return -1; - if (strm->avail_in == 0) - return 0; - } - - /* look for gzip magic bytes -- if there, do gzip decoding (note: there is - a logical dilemma here when considering the case of a partially written - gzip file, to wit, if a single 31 byte is written, then we cannot tell - whether this is a single-byte file, or just a partially written gzip - file -- for here we assume that if a gzip file is being written, then - the header will be written in a single operation, so that reading a - single byte is sufficient indication that it is not a gzip file) */ - if (strm->avail_in > 1 && - strm->next_in[0] == 31 && strm->next_in[1] == 139) { - inflateReset(strm); - state->how = GZIP; - state->direct = 0; - return 0; - } - - /* no gzip header -- if we were decoding gzip before, then this is trailing - garbage. Ignore the trailing garbage and finish. */ - if (state->direct == 0) { - strm->avail_in = 0; - state->eof = 1; - state->x.have = 0; - return 0; - } - - /* doing raw i/o, copy any leftover input to output -- this assumes that - the output buffer is larger than the input buffer, which also assures - space for gzungetc() */ - state->x.next = state->out; - if (strm->avail_in) { - memcpy(state->x.next, strm->next_in, strm->avail_in); - state->x.have = strm->avail_in; - strm->avail_in = 0; - } - state->how = COPY; - state->direct = 1; - return 0; -} - -/* Decompress from input to the provided next_out and avail_out in the state. - On return, state->x.have and state->x.next point to the just decompressed - data. If the gzip stream completes, state->how is reset to LOOK to look for - the next gzip stream or raw data, once state->x.have is depleted. Returns 0 - on success, -1 on failure. */ -local int gz_decomp(state) - gz_statep state; -{ - int ret = Z_OK; - unsigned had; - z_streamp strm = &(state->strm); - - /* fill output buffer up to end of deflate stream */ - had = strm->avail_out; - do { - /* get more input for inflate() */ - if (strm->avail_in == 0 && gz_avail(state) == -1) - return -1; - if (strm->avail_in == 0) { - gz_error(state, Z_BUF_ERROR, "unexpected end of file"); - break; - } - - /* decompress and handle errors */ - ret = inflate(strm, Z_NO_FLUSH); - if (ret == Z_STREAM_ERROR || ret == Z_NEED_DICT) { - gz_error(state, Z_STREAM_ERROR, - "internal error: inflate stream corrupt"); - return -1; - } - if (ret == Z_MEM_ERROR) { - gz_error(state, Z_MEM_ERROR, "out of memory"); - return -1; - } - if (ret == Z_DATA_ERROR) { /* deflate stream invalid */ - gz_error(state, Z_DATA_ERROR, - strm->msg == NULL ? "compressed data error" : strm->msg); - return -1; - } - } while (strm->avail_out && ret != Z_STREAM_END); - - /* update available output */ - state->x.have = had - strm->avail_out; - state->x.next = strm->next_out - state->x.have; - - /* if the gzip stream completed successfully, look for another */ - if (ret == Z_STREAM_END) - state->how = LOOK; - - /* good decompression */ - return 0; -} - -/* Fetch data and put it in the output buffer. Assumes state->x.have is 0. - Data is either copied from the input file or decompressed from the input - file depending on state->how. If state->how is LOOK, then a gzip header is - looked for to determine whether to copy or decompress. Returns -1 on error, - otherwise 0. gz_fetch() will leave state->how as COPY or GZIP unless the - end of the input file has been reached and all data has been processed. */ -local int gz_fetch(state) - gz_statep state; -{ - z_streamp strm = &(state->strm); - - do { - switch(state->how) { - case LOOK: /* -> LOOK, COPY (only if never GZIP), or GZIP */ - if (gz_look(state) == -1) - return -1; - if (state->how == LOOK) - return 0; - break; - case COPY: /* -> COPY */ - if (gz_load(state, state->out, state->size << 1, &(state->x.have)) - == -1) - return -1; - state->x.next = state->out; - return 0; - case GZIP: /* -> GZIP or LOOK (if end of gzip stream) */ - strm->avail_out = state->size << 1; - strm->next_out = state->out; - if (gz_decomp(state) == -1) - return -1; - } - } while (state->x.have == 0 && (!state->eof || strm->avail_in)); - return 0; -} - -/* Skip len uncompressed bytes of output. Return -1 on error, 0 on success. */ -local int gz_skip(state, len) - gz_statep state; - z_off64_t len; -{ - unsigned n; - - /* skip over len bytes or reach end-of-file, whichever comes first */ - while (len) - /* skip over whatever is in output buffer */ - if (state->x.have) { - n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > len ? - (unsigned)len : state->x.have; - state->x.have -= n; - state->x.next += n; - state->x.pos += n; - len -= n; - } - - /* output buffer empty -- return if we're at the end of the input */ - else if (state->eof && state->strm.avail_in == 0) - break; - - /* need more data to skip -- load up output buffer */ - else { - /* get more output, looking for header if required */ - if (gz_fetch(state) == -1) - return -1; - } - return 0; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzread(file, buf, len) - gzFile file; - voidp buf; - unsigned len; -{ - unsigned got, n; - gz_statep state; - z_streamp strm; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - strm = &(state->strm); - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) - return -1; - - /* since an int is returned, make sure len fits in one, otherwise return - with an error (this avoids the flaw in the interface) */ - if ((int)len < 0) { - gz_error(state, Z_DATA_ERROR, "requested length does not fit in int"); - return -1; - } - - /* if len is zero, avoid unnecessary operations */ - if (len == 0) - return 0; - - /* process a skip request */ - if (state->seek) { - state->seek = 0; - if (gz_skip(state, state->skip) == -1) - return -1; - } - - /* get len bytes to buf, or less than len if at the end */ - got = 0; - do { - /* first just try copying data from the output buffer */ - if (state->x.have) { - n = state->x.have > len ? len : state->x.have; - memcpy(buf, state->x.next, n); - state->x.next += n; - state->x.have -= n; - } - - /* output buffer empty -- return if we're at the end of the input */ - else if (state->eof && strm->avail_in == 0) { - state->past = 1; /* tried to read past end */ - break; - } - - /* need output data -- for small len or new stream load up our output - buffer */ - else if (state->how == LOOK || len < (state->size << 1)) { - /* get more output, looking for header if required */ - if (gz_fetch(state) == -1) - return -1; - continue; /* no progress yet -- go back to copy above */ - /* the copy above assures that we will leave with space in the - output buffer, allowing at least one gzungetc() to succeed */ - } - - /* large len -- read directly into user buffer */ - else if (state->how == COPY) { /* read directly */ - if (gz_load(state, (unsigned char *)buf, len, &n) == -1) - return -1; - } - - /* large len -- decompress directly into user buffer */ - else { /* state->how == GZIP */ - strm->avail_out = len; - strm->next_out = (unsigned char *)buf; - if (gz_decomp(state) == -1) - return -1; - n = state->x.have; - state->x.have = 0; - } - - /* update progress */ - len -= n; - buf = (char *)buf + n; - got += n; - state->x.pos += n; - } while (len); - - /* return number of bytes read into user buffer (will fit in int) */ - return (int)got; -} - -/* -- see zlib.h -- */ -#ifdef Z_PREFIX_SET -# undef z_gzgetc -#else -# undef gzgetc -#endif -int ZEXPORT gzgetc(file) - gzFile file; -{ - int ret; - unsigned char buf[1]; - gz_statep state; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) - return -1; - - /* try output buffer (no need to check for skip request) */ - if (state->x.have) { - state->x.have--; - state->x.pos++; - return *(state->x.next)++; - } - - /* nothing there -- try gzread() */ - ret = gzread(file, buf, 1); - return ret < 1 ? -1 : buf[0]; -} - -int ZEXPORT gzgetc_(file) -gzFile file; -{ - return gzgetc(file); -} - -/* -- see zlib.h -- */ -int ZEXPORT gzungetc(c, file) - int c; - gzFile file; -{ - gz_statep state; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) - return -1; - - /* process a skip request */ - if (state->seek) { - state->seek = 0; - if (gz_skip(state, state->skip) == -1) - return -1; - } - - /* can't push EOF */ - if (c < 0) - return -1; - - /* if output buffer empty, put byte at end (allows more pushing) */ - if (state->x.have == 0) { - state->x.have = 1; - state->x.next = state->out + (state->size << 1) - 1; - state->x.next[0] = c; - state->x.pos--; - state->past = 0; - return c; - } - - /* if no room, give up (must have already done a gzungetc()) */ - if (state->x.have == (state->size << 1)) { - gz_error(state, Z_DATA_ERROR, "out of room to push characters"); - return -1; - } - - /* slide output data if needed and insert byte before existing data */ - if (state->x.next == state->out) { - unsigned char *src = state->out + state->x.have; - unsigned char *dest = state->out + (state->size << 1); - while (src > state->out) - *--dest = *--src; - state->x.next = dest; - } - state->x.have++; - state->x.next--; - state->x.next[0] = c; - state->x.pos--; - state->past = 0; - return c; -} - -/* -- see zlib.h -- */ -char * ZEXPORT gzgets(file, buf, len) - gzFile file; - char *buf; - int len; -{ - unsigned left, n; - char *str; - unsigned char *eol; - gz_statep state; - - /* check parameters and get internal structure */ - if (file == NULL || buf == NULL || len < 1) - return NULL; - state = (gz_statep)file; - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) - return NULL; - - /* process a skip request */ - if (state->seek) { - state->seek = 0; - if (gz_skip(state, state->skip) == -1) - return NULL; - } - - /* copy output bytes up to new line or len - 1, whichever comes first -- - append a terminating zero to the string (we don't check for a zero in - the contents, let the user worry about that) */ - str = buf; - left = (unsigned)len - 1; - if (left) do { - /* assure that something is in the output buffer */ - if (state->x.have == 0 && gz_fetch(state) == -1) - return NULL; /* error */ - if (state->x.have == 0) { /* end of file */ - state->past = 1; /* read past end */ - break; /* return what we have */ - } - - /* look for end-of-line in current output buffer */ - n = state->x.have > left ? left : state->x.have; - eol = (unsigned char *)memchr(state->x.next, '\n', n); - if (eol != NULL) - n = (unsigned)(eol - state->x.next) + 1; - - /* copy through end-of-line, or remainder if not found */ - memcpy(buf, state->x.next, n); - state->x.have -= n; - state->x.next += n; - state->x.pos += n; - left -= n; - buf += n; - } while (left && eol == NULL); - - /* return terminated string, or if nothing, end of file */ - if (buf == str) - return NULL; - buf[0] = 0; - return str; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzdirect(file) - gzFile file; -{ - gz_statep state; - - /* get internal structure */ - if (file == NULL) - return 0; - state = (gz_statep)file; - - /* if the state is not known, but we can find out, then do so (this is - mainly for right after a gzopen() or gzdopen()) */ - if (state->mode == GZ_READ && state->how == LOOK && state->x.have == 0) - (void)gz_look(state); - - /* return 1 if transparent, 0 if processing a gzip stream */ - return state->direct; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzclose_r(file) - gzFile file; -{ - int ret, err; - gz_statep state; - - /* get internal structure */ - if (file == NULL) - return Z_STREAM_ERROR; - state = (gz_statep)file; - - /* check that we're reading */ - if (state->mode != GZ_READ) - return Z_STREAM_ERROR; - - /* free memory and close file */ - if (state->size) { - inflateEnd(&(state->strm)); - free(state->out); - free(state->in); - } - err = state->err == Z_BUF_ERROR ? Z_BUF_ERROR : Z_OK; - gz_error(state, Z_OK, NULL); - free(state->path); - ret = close(state->fd); - free(state); - return ret ? Z_ERRNO : err; -} diff --git a/io2d/src/3rd-party/zlib/gzwrite.c b/io2d/src/3rd-party/zlib/gzwrite.c deleted file mode 100644 index aa767fb..0000000 --- a/io2d/src/3rd-party/zlib/gzwrite.c +++ /dev/null @@ -1,577 +0,0 @@ -/* gzwrite.c -- zlib functions for writing gzip files - * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "gzguts.h" - -/* Local functions */ -local int gz_init OF((gz_statep)); -local int gz_comp OF((gz_statep, int)); -local int gz_zero OF((gz_statep, z_off64_t)); - -/* Initialize state for writing a gzip file. Mark initialization by setting - state->size to non-zero. Return -1 on failure or 0 on success. */ -local int gz_init(state) - gz_statep state; -{ - int ret; - z_streamp strm = &(state->strm); - - /* allocate input buffer */ - state->in = (unsigned char *)malloc(state->want); - if (state->in == NULL) { - gz_error(state, Z_MEM_ERROR, "out of memory"); - return -1; - } - - /* only need output buffer and deflate state if compressing */ - if (!state->direct) { - /* allocate output buffer */ - state->out = (unsigned char *)malloc(state->want); - if (state->out == NULL) { - free(state->in); - gz_error(state, Z_MEM_ERROR, "out of memory"); - return -1; - } - - /* allocate deflate memory, set up for gzip compression */ - strm->zalloc = Z_NULL; - strm->zfree = Z_NULL; - strm->opaque = Z_NULL; - ret = deflateInit2(strm, state->level, Z_DEFLATED, - MAX_WBITS + 16, DEF_MEM_LEVEL, state->strategy); - if (ret != Z_OK) { - free(state->out); - free(state->in); - gz_error(state, Z_MEM_ERROR, "out of memory"); - return -1; - } - } - - /* mark state as initialized */ - state->size = state->want; - - /* initialize write buffer if compressing */ - if (!state->direct) { - strm->avail_out = state->size; - strm->next_out = state->out; - state->x.next = strm->next_out; - } - return 0; -} - -/* Compress whatever is at avail_in and next_in and write to the output file. - Return -1 if there is an error writing to the output file, otherwise 0. - flush is assumed to be a valid deflate() flush value. If flush is Z_FINISH, - then the deflate() state is reset to start a new gzip stream. If gz->direct - is true, then simply write to the output file without compressing, and - ignore flush. */ -local int gz_comp(state, flush) - gz_statep state; - int flush; -{ - int ret, got; - unsigned have; - z_streamp strm = &(state->strm); - - /* allocate memory if this is the first time through */ - if (state->size == 0 && gz_init(state) == -1) - return -1; - - /* write directly if requested */ - if (state->direct) { - got = write(state->fd, strm->next_in, strm->avail_in); - if (got < 0 || (unsigned)got != strm->avail_in) { - gz_error(state, Z_ERRNO, zstrerror()); - return -1; - } - strm->avail_in = 0; - return 0; - } - - /* run deflate() on provided input until it produces no more output */ - ret = Z_OK; - do { - /* write out current buffer contents if full, or if flushing, but if - doing Z_FINISH then don't write until we get to Z_STREAM_END */ - if (strm->avail_out == 0 || (flush != Z_NO_FLUSH && - (flush != Z_FINISH || ret == Z_STREAM_END))) { - have = (unsigned)(strm->next_out - state->x.next); - if (have && ((got = write(state->fd, state->x.next, have)) < 0 || - (unsigned)got != have)) { - gz_error(state, Z_ERRNO, zstrerror()); - return -1; - } - if (strm->avail_out == 0) { - strm->avail_out = state->size; - strm->next_out = state->out; - } - state->x.next = strm->next_out; - } - - /* compress */ - have = strm->avail_out; - ret = deflate(strm, flush); - if (ret == Z_STREAM_ERROR) { - gz_error(state, Z_STREAM_ERROR, - "internal error: deflate stream corrupt"); - return -1; - } - have -= strm->avail_out; - } while (have); - - /* if that completed a deflate stream, allow another to start */ - if (flush == Z_FINISH) - deflateReset(strm); - - /* all done, no errors */ - return 0; -} - -/* Compress len zeros to output. Return -1 on error, 0 on success. */ -local int gz_zero(state, len) - gz_statep state; - z_off64_t len; -{ - int first; - unsigned n; - z_streamp strm = &(state->strm); - - /* consume whatever's left in the input buffer */ - if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) - return -1; - - /* compress len zeros (len guaranteed > 0) */ - first = 1; - while (len) { - n = GT_OFF(state->size) || (z_off64_t)state->size > len ? - (unsigned)len : state->size; - if (first) { - memset(state->in, 0, n); - first = 0; - } - strm->avail_in = n; - strm->next_in = state->in; - state->x.pos += n; - if (gz_comp(state, Z_NO_FLUSH) == -1) - return -1; - len -= n; - } - return 0; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzwrite(file, buf, len) - gzFile file; - voidpc buf; - unsigned len; -{ - unsigned put = len; - gz_statep state; - z_streamp strm; - - /* get internal structure */ - if (file == NULL) - return 0; - state = (gz_statep)file; - strm = &(state->strm); - - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) - return 0; - - /* since an int is returned, make sure len fits in one, otherwise return - with an error (this avoids the flaw in the interface) */ - if ((int)len < 0) { - gz_error(state, Z_DATA_ERROR, "requested length does not fit in int"); - return 0; - } - - /* if len is zero, avoid unnecessary operations */ - if (len == 0) - return 0; - - /* allocate memory if this is the first time through */ - if (state->size == 0 && gz_init(state) == -1) - return 0; - - /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return 0; - } - - /* for small len, copy to input buffer, otherwise compress directly */ - if (len < state->size) { - /* copy to input buffer, compress when full */ - do { - unsigned have, copy; - - if (strm->avail_in == 0) - strm->next_in = state->in; - have = (unsigned)((strm->next_in + strm->avail_in) - state->in); - copy = state->size - have; - if (copy > len) - copy = len; - memcpy(state->in + have, buf, copy); - strm->avail_in += copy; - state->x.pos += copy; - buf = (const char *)buf + copy; - len -= copy; - if (len && gz_comp(state, Z_NO_FLUSH) == -1) - return 0; - } while (len); - } - else { - /* consume whatever's left in the input buffer */ - if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) - return 0; - - /* directly compress user buffer to file */ - strm->avail_in = len; - strm->next_in = (z_const Bytef *)buf; - state->x.pos += len; - if (gz_comp(state, Z_NO_FLUSH) == -1) - return 0; - } - - /* input was all buffered or compressed (put will fit in int) */ - return (int)put; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzputc(file, c) - gzFile file; - int c; -{ - unsigned have; - unsigned char buf[1]; - gz_statep state; - z_streamp strm; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - strm = &(state->strm); - - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) - return -1; - - /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return -1; - } - - /* try writing to input buffer for speed (state->size == 0 if buffer not - initialized) */ - if (state->size) { - if (strm->avail_in == 0) - strm->next_in = state->in; - have = (unsigned)((strm->next_in + strm->avail_in) - state->in); - if (have < state->size) { - state->in[have] = c; - strm->avail_in++; - state->x.pos++; - return c & 0xff; - } - } - - /* no room in buffer or not initialized, use gz_write() */ - buf[0] = c; - if (gzwrite(file, buf, 1) != 1) - return -1; - return c & 0xff; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzputs(file, str) - gzFile file; - const char *str; -{ - int ret; - unsigned len; - - /* write string */ - len = (unsigned)strlen(str); - ret = gzwrite(file, str, len); - return ret == 0 && len != 0 ? -1 : ret; -} - -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -#include - -/* -- see zlib.h -- */ -int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) -{ - int size, len; - gz_statep state; - z_streamp strm; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - strm = &(state->strm); - - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) - return 0; - - /* make sure we have some buffer space */ - if (state->size == 0 && gz_init(state) == -1) - return 0; - - /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return 0; - } - - /* consume whatever's left in the input buffer */ - if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) - return 0; - - /* do the printf() into the input buffer, put length in len */ - size = (int)(state->size); - state->in[size - 1] = 0; -#ifdef NO_vsnprintf -# ifdef HAS_vsprintf_void - (void)vsprintf((char *)(state->in), format, va); - for (len = 0; len < size; len++) - if (state->in[len] == 0) break; -# else - len = vsprintf((char *)(state->in), format, va); -# endif -#else -# ifdef HAS_vsnprintf_void - (void)vsnprintf((char *)(state->in), size, format, va); - len = strlen((char *)(state->in)); -# else - len = vsnprintf((char *)(state->in), size, format, va); -# endif -#endif - - /* check that printf() results fit in buffer */ - if (len <= 0 || len >= (int)size || state->in[size - 1] != 0) - return 0; - - /* update buffer and position, defer compression until needed */ - strm->avail_in = (unsigned)len; - strm->next_in = state->in; - state->x.pos += len; - return len; -} - -int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) -{ - va_list va; - int ret; - - va_start(va, format); - ret = gzvprintf(file, format, va); - va_end(va); - return ret; -} - -#else /* !STDC && !Z_HAVE_STDARG_H */ - -/* -- see zlib.h -- */ -int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, - a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) - gzFile file; - const char *format; - int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, - a11, a12, a13, a14, a15, a16, a17, a18, a19, a20; -{ - int size, len; - gz_statep state; - z_streamp strm; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - strm = &(state->strm); - - /* check that can really pass pointer in ints */ - if (sizeof(int) != sizeof(void *)) - return 0; - - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) - return 0; - - /* make sure we have some buffer space */ - if (state->size == 0 && gz_init(state) == -1) - return 0; - - /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return 0; - } - - /* consume whatever's left in the input buffer */ - if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) - return 0; - - /* do the printf() into the input buffer, put length in len */ - size = (int)(state->size); - state->in[size - 1] = 0; -#ifdef NO_snprintf -# ifdef HAS_sprintf_void - sprintf((char *)(state->in), format, a1, a2, a3, a4, a5, a6, a7, a8, - a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); - for (len = 0; len < size; len++) - if (state->in[len] == 0) break; -# else - len = sprintf((char *)(state->in), format, a1, a2, a3, a4, a5, a6, a7, a8, - a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); -# endif -#else -# ifdef HAS_snprintf_void - snprintf((char *)(state->in), size, format, a1, a2, a3, a4, a5, a6, a7, a8, - a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); - len = strlen((char *)(state->in)); -# else - len = snprintf((char *)(state->in), size, format, a1, a2, a3, a4, a5, a6, - a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, - a19, a20); -# endif -#endif - - /* check that printf() results fit in buffer */ - if (len <= 0 || len >= (int)size || state->in[size - 1] != 0) - return 0; - - /* update buffer and position, defer compression until needed */ - strm->avail_in = (unsigned)len; - strm->next_in = state->in; - state->x.pos += len; - return len; -} - -#endif - -/* -- see zlib.h -- */ -int ZEXPORT gzflush(file, flush) - gzFile file; - int flush; -{ - gz_statep state; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) - return Z_STREAM_ERROR; - - /* check flush parameter */ - if (flush < 0 || flush > Z_FINISH) - return Z_STREAM_ERROR; - - /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return -1; - } - - /* compress remaining data with requested flush */ - gz_comp(state, flush); - return state->err; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzsetparams(file, level, strategy) - gzFile file; - int level; - int strategy; -{ - gz_statep state; - z_streamp strm; - - /* get internal structure */ - if (file == NULL) - return Z_STREAM_ERROR; - state = (gz_statep)file; - strm = &(state->strm); - - /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) - return Z_STREAM_ERROR; - - /* if no change is requested, then do nothing */ - if (level == state->level && strategy == state->strategy) - return Z_OK; - - /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - return -1; - } - - /* change compression parameters for subsequent input */ - if (state->size) { - /* flush previous input with previous parameters before changing */ - if (strm->avail_in && gz_comp(state, Z_PARTIAL_FLUSH) == -1) - return state->err; - deflateParams(strm, level, strategy); - } - state->level = level; - state->strategy = strategy; - return Z_OK; -} - -/* -- see zlib.h -- */ -int ZEXPORT gzclose_w(file) - gzFile file; -{ - int ret = Z_OK; - gz_statep state; - - /* get internal structure */ - if (file == NULL) - return Z_STREAM_ERROR; - state = (gz_statep)file; - - /* check that we're writing */ - if (state->mode != GZ_WRITE) - return Z_STREAM_ERROR; - - /* check for seek request */ - if (state->seek) { - state->seek = 0; - if (gz_zero(state, state->skip) == -1) - ret = state->err; - } - - /* flush, free memory, and close file */ - if (gz_comp(state, Z_FINISH) == -1) - ret = state->err; - if (state->size) { - if (!state->direct) { - (void)deflateEnd(&(state->strm)); - free(state->out); - } - free(state->in); - } - gz_error(state, Z_OK, NULL); - free(state->path); - if (close(state->fd) == -1) - ret = Z_ERRNO; - free(state); - return ret; -} diff --git a/io2d/src/3rd-party/zlib/infback.c b/io2d/src/3rd-party/zlib/infback.c deleted file mode 100644 index f3833c2..0000000 --- a/io2d/src/3rd-party/zlib/infback.c +++ /dev/null @@ -1,640 +0,0 @@ -/* infback.c -- inflate using a call-back interface - * Copyright (C) 1995-2011 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - This code is largely copied from inflate.c. Normally either infback.o or - inflate.o would be linked into an application--not both. The interface - with inffast.c is retained so that optimized assembler-coded versions of - inflate_fast() can be used with either inflate.c or infback.c. - */ - -#include "zutil.h" -#include "inftrees.h" -#include "inflate.h" -#include "inffast.h" - -/* function prototypes */ -local void fixedtables OF((struct inflate_state FAR *state)); - -/* - strm provides memory allocation functions in zalloc and zfree, or - Z_NULL to use the library memory allocation functions. - - windowBits is in the range 8..15, and window is a user-supplied - window and output buffer that is 2**windowBits bytes. - */ -int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size) -z_streamp strm; -int windowBits; -unsigned char FAR *window; -const char *version; -int stream_size; -{ - struct inflate_state FAR *state; - - if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || - stream_size != (int)(sizeof(z_stream))) - return Z_VERSION_ERROR; - if (strm == Z_NULL || window == Z_NULL || - windowBits < 8 || windowBits > 15) - return Z_STREAM_ERROR; - strm->msg = Z_NULL; /* in case we return an error */ - if (strm->zalloc == (alloc_func)0) { -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zalloc = zcalloc; - strm->opaque = (voidpf)0; -#endif - } - if (strm->zfree == (free_func)0) -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zfree = zcfree; -#endif - state = (struct inflate_state FAR *)ZALLOC(strm, 1, - sizeof(struct inflate_state)); - if (state == Z_NULL) return Z_MEM_ERROR; - Tracev((stderr, "inflate: allocated\n")); - strm->state = (struct internal_state FAR *)state; - state->dmax = 32768U; - state->wbits = windowBits; - state->wsize = 1U << windowBits; - state->window = window; - state->wnext = 0; - state->whave = 0; - return Z_OK; -} - -/* - Return state with length and distance decoding tables and index sizes set to - fixed code decoding. Normally this returns fixed tables from inffixed.h. - If BUILDFIXED is defined, then instead this routine builds the tables the - first time it's called, and returns those tables the first time and - thereafter. This reduces the size of the code by about 2K bytes, in - exchange for a little execution time. However, BUILDFIXED should not be - used for threaded applications, since the rewriting of the tables and virgin - may not be thread-safe. - */ -local void fixedtables(state) -struct inflate_state FAR *state; -{ -#ifdef BUILDFIXED - static int virgin = 1; - static code *lenfix, *distfix; - static code fixed[544]; - - /* build fixed huffman tables if first call (may not be thread safe) */ - if (virgin) { - unsigned sym, bits; - static code *next; - - /* literal/length table */ - sym = 0; - while (sym < 144) state->lens[sym++] = 8; - while (sym < 256) state->lens[sym++] = 9; - while (sym < 280) state->lens[sym++] = 7; - while (sym < 288) state->lens[sym++] = 8; - next = fixed; - lenfix = next; - bits = 9; - inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); - - /* distance table */ - sym = 0; - while (sym < 32) state->lens[sym++] = 5; - distfix = next; - bits = 5; - inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); - - /* do this just once */ - virgin = 0; - } -#else /* !BUILDFIXED */ -# include "inffixed.h" -#endif /* BUILDFIXED */ - state->lencode = lenfix; - state->lenbits = 9; - state->distcode = distfix; - state->distbits = 5; -} - -/* Macros for inflateBack(): */ - -/* Load returned state from inflate_fast() */ -#define LOAD() \ - do { \ - put = strm->next_out; \ - left = strm->avail_out; \ - next = strm->next_in; \ - have = strm->avail_in; \ - hold = state->hold; \ - bits = state->bits; \ - } while (0) - -/* Set state from registers for inflate_fast() */ -#define RESTORE() \ - do { \ - strm->next_out = put; \ - strm->avail_out = left; \ - strm->next_in = next; \ - strm->avail_in = have; \ - state->hold = hold; \ - state->bits = bits; \ - } while (0) - -/* Clear the input bit accumulator */ -#define INITBITS() \ - do { \ - hold = 0; \ - bits = 0; \ - } while (0) - -/* Assure that some input is available. If input is requested, but denied, - then return a Z_BUF_ERROR from inflateBack(). */ -#define PULL() \ - do { \ - if (have == 0) { \ - have = in(in_desc, &next); \ - if (have == 0) { \ - next = Z_NULL; \ - ret = Z_BUF_ERROR; \ - goto inf_leave; \ - } \ - } \ - } while (0) - -/* Get a byte of input into the bit accumulator, or return from inflateBack() - with an error if there is no input available. */ -#define PULLBYTE() \ - do { \ - PULL(); \ - have--; \ - hold += (unsigned long)(*next++) << bits; \ - bits += 8; \ - } while (0) - -/* Assure that there are at least n bits in the bit accumulator. If there is - not enough available input to do that, then return from inflateBack() with - an error. */ -#define NEEDBITS(n) \ - do { \ - while (bits < (unsigned)(n)) \ - PULLBYTE(); \ - } while (0) - -/* Return the low n bits of the bit accumulator (n < 16) */ -#define BITS(n) \ - ((unsigned)hold & ((1U << (n)) - 1)) - -/* Remove n bits from the bit accumulator */ -#define DROPBITS(n) \ - do { \ - hold >>= (n); \ - bits -= (unsigned)(n); \ - } while (0) - -/* Remove zero to seven bits as needed to go to a byte boundary */ -#define BYTEBITS() \ - do { \ - hold >>= bits & 7; \ - bits -= bits & 7; \ - } while (0) - -/* Assure that some output space is available, by writing out the window - if it's full. If the write fails, return from inflateBack() with a - Z_BUF_ERROR. */ -#define ROOM() \ - do { \ - if (left == 0) { \ - put = state->window; \ - left = state->wsize; \ - state->whave = left; \ - if (out(out_desc, put, left)) { \ - ret = Z_BUF_ERROR; \ - goto inf_leave; \ - } \ - } \ - } while (0) - -/* - strm provides the memory allocation functions and window buffer on input, - and provides information on the unused input on return. For Z_DATA_ERROR - returns, strm will also provide an error message. - - in() and out() are the call-back input and output functions. When - inflateBack() needs more input, it calls in(). When inflateBack() has - filled the window with output, or when it completes with data in the - window, it calls out() to write out the data. The application must not - change the provided input until in() is called again or inflateBack() - returns. The application must not change the window/output buffer until - inflateBack() returns. - - in() and out() are called with a descriptor parameter provided in the - inflateBack() call. This parameter can be a structure that provides the - information required to do the read or write, as well as accumulated - information on the input and output such as totals and check values. - - in() should return zero on failure. out() should return non-zero on - failure. If either in() or out() fails, than inflateBack() returns a - Z_BUF_ERROR. strm->next_in can be checked for Z_NULL to see whether it - was in() or out() that caused in the error. Otherwise, inflateBack() - returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format - error, or Z_MEM_ERROR if it could not allocate memory for the state. - inflateBack() can also return Z_STREAM_ERROR if the input parameters - are not correct, i.e. strm is Z_NULL or the state was not initialized. - */ -int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc) -z_streamp strm; -in_func in; -void FAR *in_desc; -out_func out; -void FAR *out_desc; -{ - struct inflate_state FAR *state; - z_const unsigned char FAR *next; /* next input */ - unsigned char FAR *put; /* next output */ - unsigned have, left; /* available input and output */ - unsigned long hold; /* bit buffer */ - unsigned bits; /* bits in bit buffer */ - unsigned copy; /* number of stored or match bytes to copy */ - unsigned char FAR *from; /* where to copy match bytes from */ - code here; /* current decoding table entry */ - code last; /* parent table entry */ - unsigned len; /* length to copy for repeats, bits to drop */ - int ret; /* return code */ - static const unsigned short order[19] = /* permutation of code lengths */ - {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; - - /* Check that the strm exists and that the state was initialized */ - if (strm == Z_NULL || strm->state == Z_NULL) - return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - - /* Reset the state */ - strm->msg = Z_NULL; - state->mode = TYPE; - state->last = 0; - state->whave = 0; - next = strm->next_in; - have = next != Z_NULL ? strm->avail_in : 0; - hold = 0; - bits = 0; - put = state->window; - left = state->wsize; - - /* Inflate until end of block marked as last */ - for (;;) - switch (state->mode) { - case TYPE: - /* determine and dispatch block type */ - if (state->last) { - BYTEBITS(); - state->mode = DONE; - break; - } - NEEDBITS(3); - state->last = BITS(1); - DROPBITS(1); - switch (BITS(2)) { - case 0: /* stored block */ - Tracev((stderr, "inflate: stored block%s\n", - state->last ? " (last)" : "")); - state->mode = STORED; - break; - case 1: /* fixed block */ - fixedtables(state); - Tracev((stderr, "inflate: fixed codes block%s\n", - state->last ? " (last)" : "")); - state->mode = LEN; /* decode codes */ - break; - case 2: /* dynamic block */ - Tracev((stderr, "inflate: dynamic codes block%s\n", - state->last ? " (last)" : "")); - state->mode = TABLE; - break; - case 3: - strm->msg = (char *)"invalid block type"; - state->mode = BAD; - } - DROPBITS(2); - break; - - case STORED: - /* get and verify stored block length */ - BYTEBITS(); /* go to byte boundary */ - NEEDBITS(32); - if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (char *)"invalid stored block lengths"; - state->mode = BAD; - break; - } - state->length = (unsigned)hold & 0xffff; - Tracev((stderr, "inflate: stored length %u\n", - state->length)); - INITBITS(); - - /* copy stored block from input to output */ - while (state->length != 0) { - copy = state->length; - PULL(); - ROOM(); - if (copy > have) copy = have; - if (copy > left) copy = left; - zmemcpy(put, next, copy); - have -= copy; - next += copy; - left -= copy; - put += copy; - state->length -= copy; - } - Tracev((stderr, "inflate: stored end\n")); - state->mode = TYPE; - break; - - case TABLE: - /* get dynamic table entries descriptor */ - NEEDBITS(14); - state->nlen = BITS(5) + 257; - DROPBITS(5); - state->ndist = BITS(5) + 1; - DROPBITS(5); - state->ncode = BITS(4) + 4; - DROPBITS(4); -#ifndef PKZIP_BUG_WORKAROUND - if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (char *)"too many length or distance symbols"; - state->mode = BAD; - break; - } -#endif - Tracev((stderr, "inflate: table sizes ok\n")); - - /* get code length code lengths (not a typo) */ - state->have = 0; - while (state->have < state->ncode) { - NEEDBITS(3); - state->lens[order[state->have++]] = (unsigned short)BITS(3); - DROPBITS(3); - } - while (state->have < 19) - state->lens[order[state->have++]] = 0; - state->next = state->codes; - state->lencode = (code const FAR *)(state->next); - state->lenbits = 7; - ret = inflate_table(CODES, state->lens, 19, &(state->next), - &(state->lenbits), state->work); - if (ret) { - strm->msg = (char *)"invalid code lengths set"; - state->mode = BAD; - break; - } - Tracev((stderr, "inflate: code lengths ok\n")); - - /* get length and distance code code lengths */ - state->have = 0; - while (state->have < state->nlen + state->ndist) { - for (;;) { - here = state->lencode[BITS(state->lenbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if (here.val < 16) { - DROPBITS(here.bits); - state->lens[state->have++] = here.val; - } - else { - if (here.val == 16) { - NEEDBITS(here.bits + 2); - DROPBITS(here.bits); - if (state->have == 0) { - strm->msg = (char *)"invalid bit length repeat"; - state->mode = BAD; - break; - } - len = (unsigned)(state->lens[state->have - 1]); - copy = 3 + BITS(2); - DROPBITS(2); - } - else if (here.val == 17) { - NEEDBITS(here.bits + 3); - DROPBITS(here.bits); - len = 0; - copy = 3 + BITS(3); - DROPBITS(3); - } - else { - NEEDBITS(here.bits + 7); - DROPBITS(here.bits); - len = 0; - copy = 11 + BITS(7); - DROPBITS(7); - } - if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (char *)"invalid bit length repeat"; - state->mode = BAD; - break; - } - while (copy--) - state->lens[state->have++] = (unsigned short)len; - } - } - - /* handle error breaks in while */ - if (state->mode == BAD) break; - - /* check for end-of-block code (better have one) */ - if (state->lens[256] == 0) { - strm->msg = (char *)"invalid code -- missing end-of-block"; - state->mode = BAD; - break; - } - - /* build code tables -- note: do not change the lenbits or distbits - values here (9 and 6) without reading the comments in inftrees.h - concerning the ENOUGH constants, which depend on those values */ - state->next = state->codes; - state->lencode = (code const FAR *)(state->next); - state->lenbits = 9; - ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), - &(state->lenbits), state->work); - if (ret) { - strm->msg = (char *)"invalid literal/lengths set"; - state->mode = BAD; - break; - } - state->distcode = (code const FAR *)(state->next); - state->distbits = 6; - ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, - &(state->next), &(state->distbits), state->work); - if (ret) { - strm->msg = (char *)"invalid distances set"; - state->mode = BAD; - break; - } - Tracev((stderr, "inflate: codes ok\n")); - state->mode = LEN; - - case LEN: - /* use inflate_fast() if we have enough input and output */ - if (have >= 6 && left >= 258) { - RESTORE(); - if (state->whave < state->wsize) - state->whave = state->wsize - left; - inflate_fast(strm, state->wsize); - LOAD(); - break; - } - - /* get a literal, length, or end-of-block code */ - for (;;) { - here = state->lencode[BITS(state->lenbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if (here.op && (here.op & 0xf0) == 0) { - last = here; - for (;;) { - here = state->lencode[last.val + - (BITS(last.bits + last.op) >> last.bits)]; - if ((unsigned)(last.bits + here.bits) <= bits) break; - PULLBYTE(); - } - DROPBITS(last.bits); - } - DROPBITS(here.bits); - state->length = (unsigned)here.val; - - /* process literal */ - if (here.op == 0) { - Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - "inflate: literal '%c'\n" : - "inflate: literal 0x%02x\n", here.val)); - ROOM(); - *put++ = (unsigned char)(state->length); - left--; - state->mode = LEN; - break; - } - - /* process end of block */ - if (here.op & 32) { - Tracevv((stderr, "inflate: end of block\n")); - state->mode = TYPE; - break; - } - - /* invalid code */ - if (here.op & 64) { - strm->msg = (char *)"invalid literal/length code"; - state->mode = BAD; - break; - } - - /* length code -- get extra bits, if any */ - state->extra = (unsigned)(here.op) & 15; - if (state->extra != 0) { - NEEDBITS(state->extra); - state->length += BITS(state->extra); - DROPBITS(state->extra); - } - Tracevv((stderr, "inflate: length %u\n", state->length)); - - /* get distance code */ - for (;;) { - here = state->distcode[BITS(state->distbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if ((here.op & 0xf0) == 0) { - last = here; - for (;;) { - here = state->distcode[last.val + - (BITS(last.bits + last.op) >> last.bits)]; - if ((unsigned)(last.bits + here.bits) <= bits) break; - PULLBYTE(); - } - DROPBITS(last.bits); - } - DROPBITS(here.bits); - if (here.op & 64) { - strm->msg = (char *)"invalid distance code"; - state->mode = BAD; - break; - } - state->offset = (unsigned)here.val; - - /* get distance extra bits, if any */ - state->extra = (unsigned)(here.op) & 15; - if (state->extra != 0) { - NEEDBITS(state->extra); - state->offset += BITS(state->extra); - DROPBITS(state->extra); - } - if (state->offset > state->wsize - (state->whave < state->wsize ? - left : 0)) { - strm->msg = (char *)"invalid distance too far back"; - state->mode = BAD; - break; - } - Tracevv((stderr, "inflate: distance %u\n", state->offset)); - - /* copy match from window to output */ - do { - ROOM(); - copy = state->wsize - state->offset; - if (copy < left) { - from = put + copy; - copy = left - copy; - } - else { - from = put - state->offset; - copy = left; - } - if (copy > state->length) copy = state->length; - state->length -= copy; - left -= copy; - do { - *put++ = *from++; - } while (--copy); - } while (state->length != 0); - break; - - case DONE: - /* inflate stream terminated properly -- write leftover output */ - ret = Z_STREAM_END; - if (left < state->wsize) { - if (out(out_desc, state->window, state->wsize - left)) - ret = Z_BUF_ERROR; - } - goto inf_leave; - - case BAD: - ret = Z_DATA_ERROR; - goto inf_leave; - - default: /* can't happen, but makes compilers happy */ - ret = Z_STREAM_ERROR; - goto inf_leave; - } - - /* Return unused input */ - inf_leave: - strm->next_in = next; - strm->avail_in = have; - return ret; -} - -int ZEXPORT inflateBackEnd(strm) -z_streamp strm; -{ - if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) - return Z_STREAM_ERROR; - ZFREE(strm, strm->state); - strm->state = Z_NULL; - Tracev((stderr, "inflate: end\n")); - return Z_OK; -} diff --git a/io2d/src/3rd-party/zlib/inffast.c b/io2d/src/3rd-party/zlib/inffast.c deleted file mode 100644 index bda59ce..0000000 --- a/io2d/src/3rd-party/zlib/inffast.c +++ /dev/null @@ -1,340 +0,0 @@ -/* inffast.c -- fast decoding - * Copyright (C) 1995-2008, 2010, 2013 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "inftrees.h" -#include "inflate.h" -#include "inffast.h" - -#ifndef ASMINF - -/* Allow machine dependent optimization for post-increment or pre-increment. - Based on testing to date, - Pre-increment preferred for: - - PowerPC G3 (Adler) - - MIPS R5000 (Randers-Pehrson) - Post-increment preferred for: - - none - No measurable difference: - - Pentium III (Anderson) - - M68060 (Nikl) - */ -#ifdef POSTINC -# define OFF 0 -# define PUP(a) *(a)++ -#else -# define OFF 1 -# define PUP(a) *++(a) -#endif - -/* - Decode literal, length, and distance codes and write out the resulting - literal and match bytes until either not enough input or output is - available, an end-of-block is encountered, or a data error is encountered. - When large enough input and output buffers are supplied to inflate(), for - example, a 16K input buffer and a 64K output buffer, more than 95% of the - inflate execution time is spent in this routine. - - Entry assumptions: - - state->mode == LEN - strm->avail_in >= 6 - strm->avail_out >= 258 - start >= strm->avail_out - state->bits < 8 - - On return, state->mode is one of: - - LEN -- ran out of enough output space or enough available input - TYPE -- reached end of block code, inflate() to interpret next block - BAD -- error in block data - - Notes: - - - The maximum input bits used by a length/distance pair is 15 bits for the - length code, 5 bits for the length extra, 15 bits for the distance code, - and 13 bits for the distance extra. This totals 48 bits, or six bytes. - Therefore if strm->avail_in >= 6, then there is enough input to avoid - checking for available input while decoding. - - - The maximum bytes that a single length/distance pair can output is 258 - bytes, which is the maximum length that can be coded. inflate_fast() - requires strm->avail_out >= 258 for each loop to avoid checking for - output space. - */ -void ZLIB_INTERNAL inflate_fast(strm, start) -z_streamp strm; -unsigned start; /* inflate()'s starting value for strm->avail_out */ -{ - struct inflate_state FAR *state; - z_const unsigned char FAR *in; /* local strm->next_in */ - z_const unsigned char FAR *last; /* have enough input while in < last */ - unsigned char FAR *out; /* local strm->next_out */ - unsigned char FAR *beg; /* inflate()'s initial strm->next_out */ - unsigned char FAR *end; /* while out < end, enough space available */ -#ifdef INFLATE_STRICT - unsigned dmax; /* maximum distance from zlib header */ -#endif - unsigned wsize; /* window size or zero if not using window */ - unsigned whave; /* valid bytes in the window */ - unsigned wnext; /* window write index */ - unsigned char FAR *window; /* allocated sliding window, if wsize != 0 */ - unsigned long hold; /* local strm->hold */ - unsigned bits; /* local strm->bits */ - code const FAR *lcode; /* local strm->lencode */ - code const FAR *dcode; /* local strm->distcode */ - unsigned lmask; /* mask for first level of length codes */ - unsigned dmask; /* mask for first level of distance codes */ - code here; /* retrieved table entry */ - unsigned op; /* code bits, operation, extra bits, or */ - /* window position, window bytes to copy */ - unsigned len; /* match length, unused bytes */ - unsigned dist; /* match distance */ - unsigned char FAR *from; /* where to copy match from */ - - /* copy state to local variables */ - state = (struct inflate_state FAR *)strm->state; - in = strm->next_in - OFF; - last = in + (strm->avail_in - 5); - out = strm->next_out - OFF; - beg = out - (start - strm->avail_out); - end = out + (strm->avail_out - 257); -#ifdef INFLATE_STRICT - dmax = state->dmax; -#endif - wsize = state->wsize; - whave = state->whave; - wnext = state->wnext; - window = state->window; - hold = state->hold; - bits = state->bits; - lcode = state->lencode; - dcode = state->distcode; - lmask = (1U << state->lenbits) - 1; - dmask = (1U << state->distbits) - 1; - - /* decode literals and length/distances until end-of-block or not enough - input data or output space */ - do { - if (bits < 15) { - hold += (unsigned long)(PUP(in)) << bits; - bits += 8; - hold += (unsigned long)(PUP(in)) << bits; - bits += 8; - } - here = lcode[hold & lmask]; - dolen: - op = (unsigned)(here.bits); - hold >>= op; - bits -= op; - op = (unsigned)(here.op); - if (op == 0) { /* literal */ - Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - "inflate: literal '%c'\n" : - "inflate: literal 0x%02x\n", here.val)); - PUP(out) = (unsigned char)(here.val); - } - else if (op & 16) { /* length base */ - len = (unsigned)(here.val); - op &= 15; /* number of extra bits */ - if (op) { - if (bits < op) { - hold += (unsigned long)(PUP(in)) << bits; - bits += 8; - } - len += (unsigned)hold & ((1U << op) - 1); - hold >>= op; - bits -= op; - } - Tracevv((stderr, "inflate: length %u\n", len)); - if (bits < 15) { - hold += (unsigned long)(PUP(in)) << bits; - bits += 8; - hold += (unsigned long)(PUP(in)) << bits; - bits += 8; - } - here = dcode[hold & dmask]; - dodist: - op = (unsigned)(here.bits); - hold >>= op; - bits -= op; - op = (unsigned)(here.op); - if (op & 16) { /* distance base */ - dist = (unsigned)(here.val); - op &= 15; /* number of extra bits */ - if (bits < op) { - hold += (unsigned long)(PUP(in)) << bits; - bits += 8; - if (bits < op) { - hold += (unsigned long)(PUP(in)) << bits; - bits += 8; - } - } - dist += (unsigned)hold & ((1U << op) - 1); -#ifdef INFLATE_STRICT - if (dist > dmax) { - strm->msg = (char *)"invalid distance too far back"; - state->mode = BAD; - break; - } -#endif - hold >>= op; - bits -= op; - Tracevv((stderr, "inflate: distance %u\n", dist)); - op = (unsigned)(out - beg); /* max distance in output */ - if (dist > op) { /* see if copy from window */ - op = dist - op; /* distance back in window */ - if (op > whave) { - if (state->sane) { - strm->msg = - (char *)"invalid distance too far back"; - state->mode = BAD; - break; - } -#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - if (len <= op - whave) { - do { - PUP(out) = 0; - } while (--len); - continue; - } - len -= op - whave; - do { - PUP(out) = 0; - } while (--op > whave); - if (op == 0) { - from = out - dist; - do { - PUP(out) = PUP(from); - } while (--len); - continue; - } -#endif - } - from = window - OFF; - if (wnext == 0) { /* very common case */ - from += wsize - op; - if (op < len) { /* some from window */ - len -= op; - do { - PUP(out) = PUP(from); - } while (--op); - from = out - dist; /* rest from output */ - } - } - else if (wnext < op) { /* wrap around window */ - from += wsize + wnext - op; - op -= wnext; - if (op < len) { /* some from end of window */ - len -= op; - do { - PUP(out) = PUP(from); - } while (--op); - from = window - OFF; - if (wnext < len) { /* some from start of window */ - op = wnext; - len -= op; - do { - PUP(out) = PUP(from); - } while (--op); - from = out - dist; /* rest from output */ - } - } - } - else { /* contiguous in window */ - from += wnext - op; - if (op < len) { /* some from window */ - len -= op; - do { - PUP(out) = PUP(from); - } while (--op); - from = out - dist; /* rest from output */ - } - } - while (len > 2) { - PUP(out) = PUP(from); - PUP(out) = PUP(from); - PUP(out) = PUP(from); - len -= 3; - } - if (len) { - PUP(out) = PUP(from); - if (len > 1) - PUP(out) = PUP(from); - } - } - else { - from = out - dist; /* copy direct from output */ - do { /* minimum length is three */ - PUP(out) = PUP(from); - PUP(out) = PUP(from); - PUP(out) = PUP(from); - len -= 3; - } while (len > 2); - if (len) { - PUP(out) = PUP(from); - if (len > 1) - PUP(out) = PUP(from); - } - } - } - else if ((op & 64) == 0) { /* 2nd level distance code */ - here = dcode[here.val + (hold & ((1U << op) - 1))]; - goto dodist; - } - else { - strm->msg = (char *)"invalid distance code"; - state->mode = BAD; - break; - } - } - else if ((op & 64) == 0) { /* 2nd level length code */ - here = lcode[here.val + (hold & ((1U << op) - 1))]; - goto dolen; - } - else if (op & 32) { /* end-of-block */ - Tracevv((stderr, "inflate: end of block\n")); - state->mode = TYPE; - break; - } - else { - strm->msg = (char *)"invalid literal/length code"; - state->mode = BAD; - break; - } - } while (in < last && out < end); - - /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ - len = bits >> 3; - in -= len; - bits -= len << 3; - hold &= (1U << bits) - 1; - - /* update state and return */ - strm->next_in = in + OFF; - strm->next_out = out + OFF; - strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last)); - strm->avail_out = (unsigned)(out < end ? - 257 + (end - out) : 257 - (out - end)); - state->hold = hold; - state->bits = bits; - return; -} - -/* - inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe): - - Using bit fields for code structure - - Different op definition to avoid & for extra bits (do & for table bits) - - Three separate decoding do-loops for direct, window, and wnext == 0 - - Special case for distance > 1 copies to do overlapped load and store copy - - Explicit branch predictions (based on measured branch probabilities) - - Deferring match copy and interspersed it with decoding subsequent codes - - Swapping literal/length else - - Swapping window/direct else - - Larger unrolled copy loops (three is about right) - - Moving len -= 3 statement into middle of loop - */ - -#endif /* !ASMINF */ diff --git a/io2d/src/3rd-party/zlib/inffast.h b/io2d/src/3rd-party/zlib/inffast.h deleted file mode 100644 index e5c1aa4..0000000 --- a/io2d/src/3rd-party/zlib/inffast.h +++ /dev/null @@ -1,11 +0,0 @@ -/* inffast.h -- header to use inffast.c - * Copyright (C) 1995-2003, 2010 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start)); diff --git a/io2d/src/3rd-party/zlib/inffixed.h b/io2d/src/3rd-party/zlib/inffixed.h deleted file mode 100644 index d628327..0000000 --- a/io2d/src/3rd-party/zlib/inffixed.h +++ /dev/null @@ -1,94 +0,0 @@ - /* inffixed.h -- table for decoding fixed codes - * Generated automatically by makefixed(). - */ - - /* WARNING: this file should *not* be used by applications. - It is part of the implementation of this library and is - subject to change. Applications should only use zlib.h. - */ - - static const code lenfix[512] = { - {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48}, - {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128}, - {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59}, - {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176}, - {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20}, - {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100}, - {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8}, - {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216}, - {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76}, - {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114}, - {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2}, - {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148}, - {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42}, - {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86}, - {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15}, - {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236}, - {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62}, - {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, - {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31}, - {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162}, - {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25}, - {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105}, - {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4}, - {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202}, - {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69}, - {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125}, - {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13}, - {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195}, - {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35}, - {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91}, - {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19}, - {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246}, - {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55}, - {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135}, - {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99}, - {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190}, - {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16}, - {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96}, - {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6}, - {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209}, - {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72}, - {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116}, - {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4}, - {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153}, - {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44}, - {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82}, - {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11}, - {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, - {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58}, - {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138}, - {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51}, - {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173}, - {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30}, - {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110}, - {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0}, - {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195}, - {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65}, - {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121}, - {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9}, - {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258}, - {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37}, - {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93}, - {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23}, - {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251}, - {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51}, - {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, - {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67}, - {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183}, - {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23}, - {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103}, - {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9}, - {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223}, - {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79}, - {0,9,255} - }; - - static const code distfix[32] = { - {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025}, - {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193}, - {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385}, - {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577}, - {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073}, - {22,5,193},{64,5,0} - }; diff --git a/io2d/src/3rd-party/zlib/inflate.c b/io2d/src/3rd-party/zlib/inflate.c deleted file mode 100644 index 870f89b..0000000 --- a/io2d/src/3rd-party/zlib/inflate.c +++ /dev/null @@ -1,1512 +0,0 @@ -/* inflate.c -- zlib decompression - * Copyright (C) 1995-2012 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - * Change history: - * - * 1.2.beta0 24 Nov 2002 - * - First version -- complete rewrite of inflate to simplify code, avoid - * creation of window when not needed, minimize use of window when it is - * needed, make inffast.c even faster, implement gzip decoding, and to - * improve code readability and style over the previous zlib inflate code - * - * 1.2.beta1 25 Nov 2002 - * - Use pointers for available input and output checking in inffast.c - * - Remove input and output counters in inffast.c - * - Change inffast.c entry and loop from avail_in >= 7 to >= 6 - * - Remove unnecessary second byte pull from length extra in inffast.c - * - Unroll direct copy to three copies per loop in inffast.c - * - * 1.2.beta2 4 Dec 2002 - * - Change external routine names to reduce potential conflicts - * - Correct filename to inffixed.h for fixed tables in inflate.c - * - Make hbuf[] unsigned char to match parameter type in inflate.c - * - Change strm->next_out[-state->offset] to *(strm->next_out - state->offset) - * to avoid negation problem on Alphas (64 bit) in inflate.c - * - * 1.2.beta3 22 Dec 2002 - * - Add comments on state->bits assertion in inffast.c - * - Add comments on op field in inftrees.h - * - Fix bug in reuse of allocated window after inflateReset() - * - Remove bit fields--back to byte structure for speed - * - Remove distance extra == 0 check in inflate_fast()--only helps for lengths - * - Change post-increments to pre-increments in inflate_fast(), PPC biased? - * - Add compile time option, POSTINC, to use post-increments instead (Intel?) - * - Make MATCH copy in inflate() much faster for when inflate_fast() not used - * - Use local copies of stream next and avail values, as well as local bit - * buffer and bit count in inflate()--for speed when inflate_fast() not used - * - * 1.2.beta4 1 Jan 2003 - * - Split ptr - 257 statements in inflate_table() to avoid compiler warnings - * - Move a comment on output buffer sizes from inffast.c to inflate.c - * - Add comments in inffast.c to introduce the inflate_fast() routine - * - Rearrange window copies in inflate_fast() for speed and simplification - * - Unroll last copy for window match in inflate_fast() - * - Use local copies of window variables in inflate_fast() for speed - * - Pull out common wnext == 0 case for speed in inflate_fast() - * - Make op and len in inflate_fast() unsigned for consistency - * - Add FAR to lcode and dcode declarations in inflate_fast() - * - Simplified bad distance check in inflate_fast() - * - Added inflateBackInit(), inflateBack(), and inflateBackEnd() in new - * source file infback.c to provide a call-back interface to inflate for - * programs like gzip and unzip -- uses window as output buffer to avoid - * window copying - * - * 1.2.beta5 1 Jan 2003 - * - Improved inflateBack() interface to allow the caller to provide initial - * input in strm. - * - Fixed stored blocks bug in inflateBack() - * - * 1.2.beta6 4 Jan 2003 - * - Added comments in inffast.c on effectiveness of POSTINC - * - Typecasting all around to reduce compiler warnings - * - Changed loops from while (1) or do {} while (1) to for (;;), again to - * make compilers happy - * - Changed type of window in inflateBackInit() to unsigned char * - * - * 1.2.beta7 27 Jan 2003 - * - Changed many types to unsigned or unsigned short to avoid warnings - * - Added inflateCopy() function - * - * 1.2.0 9 Mar 2003 - * - Changed inflateBack() interface to provide separate opaque descriptors - * for the in() and out() functions - * - Changed inflateBack() argument and in_func typedef to swap the length - * and buffer address return values for the input function - * - Check next_in and next_out for Z_NULL on entry to inflate() - * - * The history for versions after 1.2.0 are in ChangeLog in zlib distribution. - */ - -#include "zutil.h" -#include "inftrees.h" -#include "inflate.h" -#include "inffast.h" - -#ifdef MAKEFIXED -# ifndef BUILDFIXED -# define BUILDFIXED -# endif -#endif - -/* function prototypes */ -local void fixedtables OF((struct inflate_state FAR *state)); -local int updatewindow OF((z_streamp strm, const unsigned char FAR *end, - unsigned copy)); -#ifdef BUILDFIXED - void makefixed OF((void)); -#endif -local unsigned syncsearch OF((unsigned FAR *have, const unsigned char FAR *buf, - unsigned len)); - -int ZEXPORT inflateResetKeep(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - strm->total_in = strm->total_out = state->total = 0; - strm->msg = Z_NULL; - if (state->wrap) /* to support ill-conceived Java test suite */ - strm->adler = state->wrap & 1; - state->mode = HEAD; - state->last = 0; - state->havedict = 0; - state->dmax = 32768U; - state->head = Z_NULL; - state->hold = 0; - state->bits = 0; - state->lencode = state->distcode = state->next = state->codes; - state->sane = 1; - state->back = -1; - Tracev((stderr, "inflate: reset\n")); - return Z_OK; -} - -int ZEXPORT inflateReset(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - state->wsize = 0; - state->whave = 0; - state->wnext = 0; - return inflateResetKeep(strm); -} - -int ZEXPORT inflateReset2(strm, windowBits) -z_streamp strm; -int windowBits; -{ - int wrap; - struct inflate_state FAR *state; - - /* get the state */ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - - /* extract wrap request from windowBits parameter */ - if (windowBits < 0) { - wrap = 0; - windowBits = -windowBits; - } - else { - wrap = (windowBits >> 4) + 1; -#ifdef GUNZIP - if (windowBits < 48) - windowBits &= 15; -#endif - } - - /* set number of window bits, free window if different */ - if (windowBits && (windowBits < 8 || windowBits > 15)) - return Z_STREAM_ERROR; - if (state->window != Z_NULL && state->wbits != (unsigned)windowBits) { - ZFREE(strm, state->window); - state->window = Z_NULL; - } - - /* update state and reset the rest of it */ - state->wrap = wrap; - state->wbits = (unsigned)windowBits; - return inflateReset(strm); -} - -int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size) -z_streamp strm; -int windowBits; -const char *version; -int stream_size; -{ - int ret; - struct inflate_state FAR *state; - - if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || - stream_size != (int)(sizeof(z_stream))) - return Z_VERSION_ERROR; - if (strm == Z_NULL) return Z_STREAM_ERROR; - strm->msg = Z_NULL; /* in case we return an error */ - if (strm->zalloc == (alloc_func)0) { -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zalloc = zcalloc; - strm->opaque = (voidpf)0; -#endif - } - if (strm->zfree == (free_func)0) -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zfree = zcfree; -#endif - state = (struct inflate_state FAR *) - ZALLOC(strm, 1, sizeof(struct inflate_state)); - if (state == Z_NULL) return Z_MEM_ERROR; - Tracev((stderr, "inflate: allocated\n")); - strm->state = (struct internal_state FAR *)state; - state->window = Z_NULL; - ret = inflateReset2(strm, windowBits); - if (ret != Z_OK) { - ZFREE(strm, state); - strm->state = Z_NULL; - } - return ret; -} - -int ZEXPORT inflateInit_(strm, version, stream_size) -z_streamp strm; -const char *version; -int stream_size; -{ - return inflateInit2_(strm, DEF_WBITS, version, stream_size); -} - -int ZEXPORT inflatePrime(strm, bits, value) -z_streamp strm; -int bits; -int value; -{ - struct inflate_state FAR *state; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (bits < 0) { - state->hold = 0; - state->bits = 0; - return Z_OK; - } - if (bits > 16 || state->bits + bits > 32) return Z_STREAM_ERROR; - value &= (1L << bits) - 1; - state->hold += value << state->bits; - state->bits += bits; - return Z_OK; -} - -/* - Return state with length and distance decoding tables and index sizes set to - fixed code decoding. Normally this returns fixed tables from inffixed.h. - If BUILDFIXED is defined, then instead this routine builds the tables the - first time it's called, and returns those tables the first time and - thereafter. This reduces the size of the code by about 2K bytes, in - exchange for a little execution time. However, BUILDFIXED should not be - used for threaded applications, since the rewriting of the tables and virgin - may not be thread-safe. - */ -local void fixedtables(state) -struct inflate_state FAR *state; -{ -#ifdef BUILDFIXED - static int virgin = 1; - static code *lenfix, *distfix; - static code fixed[544]; - - /* build fixed huffman tables if first call (may not be thread safe) */ - if (virgin) { - unsigned sym, bits; - static code *next; - - /* literal/length table */ - sym = 0; - while (sym < 144) state->lens[sym++] = 8; - while (sym < 256) state->lens[sym++] = 9; - while (sym < 280) state->lens[sym++] = 7; - while (sym < 288) state->lens[sym++] = 8; - next = fixed; - lenfix = next; - bits = 9; - inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); - - /* distance table */ - sym = 0; - while (sym < 32) state->lens[sym++] = 5; - distfix = next; - bits = 5; - inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); - - /* do this just once */ - virgin = 0; - } -#else /* !BUILDFIXED */ -# include "inffixed.h" -#endif /* BUILDFIXED */ - state->lencode = lenfix; - state->lenbits = 9; - state->distcode = distfix; - state->distbits = 5; -} - -#ifdef MAKEFIXED -#include - -/* - Write out the inffixed.h that is #include'd above. Defining MAKEFIXED also - defines BUILDFIXED, so the tables are built on the fly. makefixed() writes - those tables to stdout, which would be piped to inffixed.h. A small program - can simply call makefixed to do this: - - void makefixed(void); - - int main(void) - { - makefixed(); - return 0; - } - - Then that can be linked with zlib built with MAKEFIXED defined and run: - - a.out > inffixed.h - */ -void makefixed() -{ - unsigned low, size; - struct inflate_state state; - - fixedtables(&state); - puts(" /* inffixed.h -- table for decoding fixed codes"); - puts(" * Generated automatically by makefixed()."); - puts(" */"); - puts(""); - puts(" /* WARNING: this file should *not* be used by applications."); - puts(" It is part of the implementation of this library and is"); - puts(" subject to change. Applications should only use zlib.h."); - puts(" */"); - puts(""); - size = 1U << 9; - printf(" static const code lenfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 7) == 0) printf("\n "); - printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op, - state.lencode[low].bits, state.lencode[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n };"); - size = 1U << 5; - printf("\n static const code distfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 6) == 0) printf("\n "); - printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, - state.distcode[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n };"); -} -#endif /* MAKEFIXED */ - -/* - Update the window with the last wsize (normally 32K) bytes written before - returning. If window does not exist yet, create it. This is only called - when a window is already in use, or when output has been written during this - inflate call, but the end of the deflate stream has not been reached yet. - It is also called to create a window for dictionary data when a dictionary - is loaded. - - Providing output buffers larger than 32K to inflate() should provide a speed - advantage, since only the last 32K of output is copied to the sliding window - upon return from inflate(), and since all distances after the first 32K of - output will fall in the output data, making match copies simpler and faster. - The advantage may be dependent on the size of the processor's data caches. - */ -local int updatewindow(strm, end, copy) -z_streamp strm; -const Bytef *end; -unsigned copy; -{ - struct inflate_state FAR *state; - unsigned dist; - - state = (struct inflate_state FAR *)strm->state; - - /* if it hasn't been done already, allocate space for the window */ - if (state->window == Z_NULL) { - state->window = (unsigned char FAR *) - ZALLOC(strm, 1U << state->wbits, - sizeof(unsigned char)); - if (state->window == Z_NULL) return 1; - } - - /* if window not in use yet, initialize */ - if (state->wsize == 0) { - state->wsize = 1U << state->wbits; - state->wnext = 0; - state->whave = 0; - } - - /* copy state->wsize or less output bytes into the circular window */ - if (copy >= state->wsize) { - zmemcpy(state->window, end - state->wsize, state->wsize); - state->wnext = 0; - state->whave = state->wsize; - } - else { - dist = state->wsize - state->wnext; - if (dist > copy) dist = copy; - zmemcpy(state->window + state->wnext, end - copy, dist); - copy -= dist; - if (copy) { - zmemcpy(state->window, end - copy, copy); - state->wnext = copy; - state->whave = state->wsize; - } - else { - state->wnext += dist; - if (state->wnext == state->wsize) state->wnext = 0; - if (state->whave < state->wsize) state->whave += dist; - } - } - return 0; -} - -/* Macros for inflate(): */ - -/* check function to use adler32() for zlib or crc32() for gzip */ -#ifdef GUNZIP -# define UPDATE(check, buf, len) \ - (state->flags ? crc32(check, buf, len) : adler32(check, buf, len)) -#else -# define UPDATE(check, buf, len) adler32(check, buf, len) -#endif - -/* check macros for header crc */ -#ifdef GUNZIP -# define CRC2(check, word) \ - do { \ - hbuf[0] = (unsigned char)(word); \ - hbuf[1] = (unsigned char)((word) >> 8); \ - check = crc32(check, hbuf, 2); \ - } while (0) - -# define CRC4(check, word) \ - do { \ - hbuf[0] = (unsigned char)(word); \ - hbuf[1] = (unsigned char)((word) >> 8); \ - hbuf[2] = (unsigned char)((word) >> 16); \ - hbuf[3] = (unsigned char)((word) >> 24); \ - check = crc32(check, hbuf, 4); \ - } while (0) -#endif - -/* Load registers with state in inflate() for speed */ -#define LOAD() \ - do { \ - put = strm->next_out; \ - left = strm->avail_out; \ - next = strm->next_in; \ - have = strm->avail_in; \ - hold = state->hold; \ - bits = state->bits; \ - } while (0) - -/* Restore state from registers in inflate() */ -#define RESTORE() \ - do { \ - strm->next_out = put; \ - strm->avail_out = left; \ - strm->next_in = next; \ - strm->avail_in = have; \ - state->hold = hold; \ - state->bits = bits; \ - } while (0) - -/* Clear the input bit accumulator */ -#define INITBITS() \ - do { \ - hold = 0; \ - bits = 0; \ - } while (0) - -/* Get a byte of input into the bit accumulator, or return from inflate() - if there is no input available. */ -#define PULLBYTE() \ - do { \ - if (have == 0) goto inf_leave; \ - have--; \ - hold += (unsigned long)(*next++) << bits; \ - bits += 8; \ - } while (0) - -/* Assure that there are at least n bits in the bit accumulator. If there is - not enough available input to do that, then return from inflate(). */ -#define NEEDBITS(n) \ - do { \ - while (bits < (unsigned)(n)) \ - PULLBYTE(); \ - } while (0) - -/* Return the low n bits of the bit accumulator (n < 16) */ -#define BITS(n) \ - ((unsigned)hold & ((1U << (n)) - 1)) - -/* Remove n bits from the bit accumulator */ -#define DROPBITS(n) \ - do { \ - hold >>= (n); \ - bits -= (unsigned)(n); \ - } while (0) - -/* Remove zero to seven bits as needed to go to a byte boundary */ -#define BYTEBITS() \ - do { \ - hold >>= bits & 7; \ - bits -= bits & 7; \ - } while (0) - -/* - inflate() uses a state machine to process as much input data and generate as - much output data as possible before returning. The state machine is - structured roughly as follows: - - for (;;) switch (state) { - ... - case STATEn: - if (not enough input data or output space to make progress) - return; - ... make progress ... - state = STATEm; - break; - ... - } - - so when inflate() is called again, the same case is attempted again, and - if the appropriate resources are provided, the machine proceeds to the - next state. The NEEDBITS() macro is usually the way the state evaluates - whether it can proceed or should return. NEEDBITS() does the return if - the requested bits are not available. The typical use of the BITS macros - is: - - NEEDBITS(n); - ... do something with BITS(n) ... - DROPBITS(n); - - where NEEDBITS(n) either returns from inflate() if there isn't enough - input left to load n bits into the accumulator, or it continues. BITS(n) - gives the low n bits in the accumulator. When done, DROPBITS(n) drops - the low n bits off the accumulator. INITBITS() clears the accumulator - and sets the number of available bits to zero. BYTEBITS() discards just - enough bits to put the accumulator on a byte boundary. After BYTEBITS() - and a NEEDBITS(8), then BITS(8) would return the next byte in the stream. - - NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return - if there is no input available. The decoding of variable length codes uses - PULLBYTE() directly in order to pull just enough bytes to decode the next - code, and no more. - - Some states loop until they get enough input, making sure that enough - state information is maintained to continue the loop where it left off - if NEEDBITS() returns in the loop. For example, want, need, and keep - would all have to actually be part of the saved state in case NEEDBITS() - returns: - - case STATEw: - while (want < need) { - NEEDBITS(n); - keep[want++] = BITS(n); - DROPBITS(n); - } - state = STATEx; - case STATEx: - - As shown above, if the next state is also the next case, then the break - is omitted. - - A state may also return if there is not enough output space available to - complete that state. Those states are copying stored data, writing a - literal byte, and copying a matching string. - - When returning, a "goto inf_leave" is used to update the total counters, - update the check value, and determine whether any progress has been made - during that inflate() call in order to return the proper return code. - Progress is defined as a change in either strm->avail_in or strm->avail_out. - When there is a window, goto inf_leave will update the window with the last - output written. If a goto inf_leave occurs in the middle of decompression - and there is no window currently, goto inf_leave will create one and copy - output to the window for the next call of inflate(). - - In this implementation, the flush parameter of inflate() only affects the - return code (per zlib.h). inflate() always writes as much as possible to - strm->next_out, given the space available and the provided input--the effect - documented in zlib.h of Z_SYNC_FLUSH. Furthermore, inflate() always defers - the allocation of and copying into a sliding window until necessary, which - provides the effect documented in zlib.h for Z_FINISH when the entire input - stream available. So the only thing the flush parameter actually does is: - when flush is set to Z_FINISH, inflate() cannot return Z_OK. Instead it - will return Z_BUF_ERROR if it has not reached the end of the stream. - */ - -int ZEXPORT inflate(strm, flush) -z_streamp strm; -int flush; -{ - struct inflate_state FAR *state; - z_const unsigned char FAR *next; /* next input */ - unsigned char FAR *put; /* next output */ - unsigned have, left; /* available input and output */ - unsigned long hold; /* bit buffer */ - unsigned bits; /* bits in bit buffer */ - unsigned in, out; /* save starting available input and output */ - unsigned copy; /* number of stored or match bytes to copy */ - unsigned char FAR *from; /* where to copy match bytes from */ - code here; /* current decoding table entry */ - code last; /* parent table entry */ - unsigned len; /* length to copy for repeats, bits to drop */ - int ret; /* return code */ -#ifdef GUNZIP - unsigned char hbuf[4]; /* buffer for gzip header crc calculation */ -#endif - static const unsigned short order[19] = /* permutation of code lengths */ - {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; - - if (strm == Z_NULL || strm->state == Z_NULL || strm->next_out == Z_NULL || - (strm->next_in == Z_NULL && strm->avail_in != 0)) - return Z_STREAM_ERROR; - - state = (struct inflate_state FAR *)strm->state; - if (state->mode == TYPE) state->mode = TYPEDO; /* skip check */ - LOAD(); - in = have; - out = left; - ret = Z_OK; - for (;;) - switch (state->mode) { - case HEAD: - if (state->wrap == 0) { - state->mode = TYPEDO; - break; - } - NEEDBITS(16); -#ifdef GUNZIP - if ((state->wrap & 2) && hold == 0x8b1f) { /* gzip header */ - state->check = crc32(0L, Z_NULL, 0); - CRC2(state->check, hold); - INITBITS(); - state->mode = FLAGS; - break; - } - state->flags = 0; /* expect zlib header */ - if (state->head != Z_NULL) - state->head->done = -1; - if (!(state->wrap & 1) || /* check if zlib header allowed */ -#else - if ( -#endif - ((BITS(8) << 8) + (hold >> 8)) % 31) { - strm->msg = (char *)"incorrect header check"; - state->mode = BAD; - break; - } - if (BITS(4) != Z_DEFLATED) { - strm->msg = (char *)"unknown compression method"; - state->mode = BAD; - break; - } - DROPBITS(4); - len = BITS(4) + 8; - if (state->wbits == 0) - state->wbits = len; - else if (len > state->wbits) { - strm->msg = (char *)"invalid window size"; - state->mode = BAD; - break; - } - state->dmax = 1U << len; - Tracev((stderr, "inflate: zlib header ok\n")); - strm->adler = state->check = adler32(0L, Z_NULL, 0); - state->mode = hold & 0x200 ? DICTID : TYPE; - INITBITS(); - break; -#ifdef GUNZIP - case FLAGS: - NEEDBITS(16); - state->flags = (int)(hold); - if ((state->flags & 0xff) != Z_DEFLATED) { - strm->msg = (char *)"unknown compression method"; - state->mode = BAD; - break; - } - if (state->flags & 0xe000) { - strm->msg = (char *)"unknown header flags set"; - state->mode = BAD; - break; - } - if (state->head != Z_NULL) - state->head->text = (int)((hold >> 8) & 1); - if (state->flags & 0x0200) CRC2(state->check, hold); - INITBITS(); - state->mode = TIME; - case TIME: - NEEDBITS(32); - if (state->head != Z_NULL) - state->head->time = hold; - if (state->flags & 0x0200) CRC4(state->check, hold); - INITBITS(); - state->mode = OS; - case OS: - NEEDBITS(16); - if (state->head != Z_NULL) { - state->head->xflags = (int)(hold & 0xff); - state->head->os = (int)(hold >> 8); - } - if (state->flags & 0x0200) CRC2(state->check, hold); - INITBITS(); - state->mode = EXLEN; - case EXLEN: - if (state->flags & 0x0400) { - NEEDBITS(16); - state->length = (unsigned)(hold); - if (state->head != Z_NULL) - state->head->extra_len = (unsigned)hold; - if (state->flags & 0x0200) CRC2(state->check, hold); - INITBITS(); - } - else if (state->head != Z_NULL) - state->head->extra = Z_NULL; - state->mode = EXTRA; - case EXTRA: - if (state->flags & 0x0400) { - copy = state->length; - if (copy > have) copy = have; - if (copy) { - if (state->head != Z_NULL && - state->head->extra != Z_NULL) { - len = state->head->extra_len - state->length; - zmemcpy(state->head->extra + len, next, - len + copy > state->head->extra_max ? - state->head->extra_max - len : copy); - } - if (state->flags & 0x0200) - state->check = crc32(state->check, next, copy); - have -= copy; - next += copy; - state->length -= copy; - } - if (state->length) goto inf_leave; - } - state->length = 0; - state->mode = NAME; - case NAME: - if (state->flags & 0x0800) { - if (have == 0) goto inf_leave; - copy = 0; - do { - len = (unsigned)(next[copy++]); - if (state->head != Z_NULL && - state->head->name != Z_NULL && - state->length < state->head->name_max) - state->head->name[state->length++] = len; - } while (len && copy < have); - if (state->flags & 0x0200) - state->check = crc32(state->check, next, copy); - have -= copy; - next += copy; - if (len) goto inf_leave; - } - else if (state->head != Z_NULL) - state->head->name = Z_NULL; - state->length = 0; - state->mode = COMMENT; - case COMMENT: - if (state->flags & 0x1000) { - if (have == 0) goto inf_leave; - copy = 0; - do { - len = (unsigned)(next[copy++]); - if (state->head != Z_NULL && - state->head->comment != Z_NULL && - state->length < state->head->comm_max) - state->head->comment[state->length++] = len; - } while (len && copy < have); - if (state->flags & 0x0200) - state->check = crc32(state->check, next, copy); - have -= copy; - next += copy; - if (len) goto inf_leave; - } - else if (state->head != Z_NULL) - state->head->comment = Z_NULL; - state->mode = HCRC; - case HCRC: - if (state->flags & 0x0200) { - NEEDBITS(16); - if (hold != (state->check & 0xffff)) { - strm->msg = (char *)"header crc mismatch"; - state->mode = BAD; - break; - } - INITBITS(); - } - if (state->head != Z_NULL) { - state->head->hcrc = (int)((state->flags >> 9) & 1); - state->head->done = 1; - } - strm->adler = state->check = crc32(0L, Z_NULL, 0); - state->mode = TYPE; - break; -#endif - case DICTID: - NEEDBITS(32); - strm->adler = state->check = ZSWAP32(hold); - INITBITS(); - state->mode = DICT; - case DICT: - if (state->havedict == 0) { - RESTORE(); - return Z_NEED_DICT; - } - strm->adler = state->check = adler32(0L, Z_NULL, 0); - state->mode = TYPE; - case TYPE: - if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave; - case TYPEDO: - if (state->last) { - BYTEBITS(); - state->mode = CHECK; - break; - } - NEEDBITS(3); - state->last = BITS(1); - DROPBITS(1); - switch (BITS(2)) { - case 0: /* stored block */ - Tracev((stderr, "inflate: stored block%s\n", - state->last ? " (last)" : "")); - state->mode = STORED; - break; - case 1: /* fixed block */ - fixedtables(state); - Tracev((stderr, "inflate: fixed codes block%s\n", - state->last ? " (last)" : "")); - state->mode = LEN_; /* decode codes */ - if (flush == Z_TREES) { - DROPBITS(2); - goto inf_leave; - } - break; - case 2: /* dynamic block */ - Tracev((stderr, "inflate: dynamic codes block%s\n", - state->last ? " (last)" : "")); - state->mode = TABLE; - break; - case 3: - strm->msg = (char *)"invalid block type"; - state->mode = BAD; - } - DROPBITS(2); - break; - case STORED: - BYTEBITS(); /* go to byte boundary */ - NEEDBITS(32); - if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (char *)"invalid stored block lengths"; - state->mode = BAD; - break; - } - state->length = (unsigned)hold & 0xffff; - Tracev((stderr, "inflate: stored length %u\n", - state->length)); - INITBITS(); - state->mode = COPY_; - if (flush == Z_TREES) goto inf_leave; - case COPY_: - state->mode = COPY; - case COPY: - copy = state->length; - if (copy) { - if (copy > have) copy = have; - if (copy > left) copy = left; - if (copy == 0) goto inf_leave; - zmemcpy(put, next, copy); - have -= copy; - next += copy; - left -= copy; - put += copy; - state->length -= copy; - break; - } - Tracev((stderr, "inflate: stored end\n")); - state->mode = TYPE; - break; - case TABLE: - NEEDBITS(14); - state->nlen = BITS(5) + 257; - DROPBITS(5); - state->ndist = BITS(5) + 1; - DROPBITS(5); - state->ncode = BITS(4) + 4; - DROPBITS(4); -#ifndef PKZIP_BUG_WORKAROUND - if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (char *)"too many length or distance symbols"; - state->mode = BAD; - break; - } -#endif - Tracev((stderr, "inflate: table sizes ok\n")); - state->have = 0; - state->mode = LENLENS; - case LENLENS: - while (state->have < state->ncode) { - NEEDBITS(3); - state->lens[order[state->have++]] = (unsigned short)BITS(3); - DROPBITS(3); - } - while (state->have < 19) - state->lens[order[state->have++]] = 0; - state->next = state->codes; - state->lencode = (const code FAR *)(state->next); - state->lenbits = 7; - ret = inflate_table(CODES, state->lens, 19, &(state->next), - &(state->lenbits), state->work); - if (ret) { - strm->msg = (char *)"invalid code lengths set"; - state->mode = BAD; - break; - } - Tracev((stderr, "inflate: code lengths ok\n")); - state->have = 0; - state->mode = CODELENS; - case CODELENS: - while (state->have < state->nlen + state->ndist) { - for (;;) { - here = state->lencode[BITS(state->lenbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if (here.val < 16) { - DROPBITS(here.bits); - state->lens[state->have++] = here.val; - } - else { - if (here.val == 16) { - NEEDBITS(here.bits + 2); - DROPBITS(here.bits); - if (state->have == 0) { - strm->msg = (char *)"invalid bit length repeat"; - state->mode = BAD; - break; - } - len = state->lens[state->have - 1]; - copy = 3 + BITS(2); - DROPBITS(2); - } - else if (here.val == 17) { - NEEDBITS(here.bits + 3); - DROPBITS(here.bits); - len = 0; - copy = 3 + BITS(3); - DROPBITS(3); - } - else { - NEEDBITS(here.bits + 7); - DROPBITS(here.bits); - len = 0; - copy = 11 + BITS(7); - DROPBITS(7); - } - if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (char *)"invalid bit length repeat"; - state->mode = BAD; - break; - } - while (copy--) - state->lens[state->have++] = (unsigned short)len; - } - } - - /* handle error breaks in while */ - if (state->mode == BAD) break; - - /* check for end-of-block code (better have one) */ - if (state->lens[256] == 0) { - strm->msg = (char *)"invalid code -- missing end-of-block"; - state->mode = BAD; - break; - } - - /* build code tables -- note: do not change the lenbits or distbits - values here (9 and 6) without reading the comments in inftrees.h - concerning the ENOUGH constants, which depend on those values */ - state->next = state->codes; - state->lencode = (const code FAR *)(state->next); - state->lenbits = 9; - ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), - &(state->lenbits), state->work); - if (ret) { - strm->msg = (char *)"invalid literal/lengths set"; - state->mode = BAD; - break; - } - state->distcode = (const code FAR *)(state->next); - state->distbits = 6; - ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, - &(state->next), &(state->distbits), state->work); - if (ret) { - strm->msg = (char *)"invalid distances set"; - state->mode = BAD; - break; - } - Tracev((stderr, "inflate: codes ok\n")); - state->mode = LEN_; - if (flush == Z_TREES) goto inf_leave; - case LEN_: - state->mode = LEN; - case LEN: - if (have >= 6 && left >= 258) { - RESTORE(); - inflate_fast(strm, out); - LOAD(); - if (state->mode == TYPE) - state->back = -1; - break; - } - state->back = 0; - for (;;) { - here = state->lencode[BITS(state->lenbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if (here.op && (here.op & 0xf0) == 0) { - last = here; - for (;;) { - here = state->lencode[last.val + - (BITS(last.bits + last.op) >> last.bits)]; - if ((unsigned)(last.bits + here.bits) <= bits) break; - PULLBYTE(); - } - DROPBITS(last.bits); - state->back += last.bits; - } - DROPBITS(here.bits); - state->back += here.bits; - state->length = (unsigned)here.val; - if ((int)(here.op) == 0) { - Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - "inflate: literal '%c'\n" : - "inflate: literal 0x%02x\n", here.val)); - state->mode = LIT; - break; - } - if (here.op & 32) { - Tracevv((stderr, "inflate: end of block\n")); - state->back = -1; - state->mode = TYPE; - break; - } - if (here.op & 64) { - strm->msg = (char *)"invalid literal/length code"; - state->mode = BAD; - break; - } - state->extra = (unsigned)(here.op) & 15; - state->mode = LENEXT; - case LENEXT: - if (state->extra) { - NEEDBITS(state->extra); - state->length += BITS(state->extra); - DROPBITS(state->extra); - state->back += state->extra; - } - Tracevv((stderr, "inflate: length %u\n", state->length)); - state->was = state->length; - state->mode = DIST; - case DIST: - for (;;) { - here = state->distcode[BITS(state->distbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if ((here.op & 0xf0) == 0) { - last = here; - for (;;) { - here = state->distcode[last.val + - (BITS(last.bits + last.op) >> last.bits)]; - if ((unsigned)(last.bits + here.bits) <= bits) break; - PULLBYTE(); - } - DROPBITS(last.bits); - state->back += last.bits; - } - DROPBITS(here.bits); - state->back += here.bits; - if (here.op & 64) { - strm->msg = (char *)"invalid distance code"; - state->mode = BAD; - break; - } - state->offset = (unsigned)here.val; - state->extra = (unsigned)(here.op) & 15; - state->mode = DISTEXT; - case DISTEXT: - if (state->extra) { - NEEDBITS(state->extra); - state->offset += BITS(state->extra); - DROPBITS(state->extra); - state->back += state->extra; - } -#ifdef INFLATE_STRICT - if (state->offset > state->dmax) { - strm->msg = (char *)"invalid distance too far back"; - state->mode = BAD; - break; - } -#endif - Tracevv((stderr, "inflate: distance %u\n", state->offset)); - state->mode = MATCH; - case MATCH: - if (left == 0) goto inf_leave; - copy = out - left; - if (state->offset > copy) { /* copy from window */ - copy = state->offset - copy; - if (copy > state->whave) { - if (state->sane) { - strm->msg = (char *)"invalid distance too far back"; - state->mode = BAD; - break; - } -#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - Trace((stderr, "inflate.c too far\n")); - copy -= state->whave; - if (copy > state->length) copy = state->length; - if (copy > left) copy = left; - left -= copy; - state->length -= copy; - do { - *put++ = 0; - } while (--copy); - if (state->length == 0) state->mode = LEN; - break; -#endif - } - if (copy > state->wnext) { - copy -= state->wnext; - from = state->window + (state->wsize - copy); - } - else - from = state->window + (state->wnext - copy); - if (copy > state->length) copy = state->length; - } - else { /* copy from output */ - from = put - state->offset; - copy = state->length; - } - if (copy > left) copy = left; - left -= copy; - state->length -= copy; - do { - *put++ = *from++; - } while (--copy); - if (state->length == 0) state->mode = LEN; - break; - case LIT: - if (left == 0) goto inf_leave; - *put++ = (unsigned char)(state->length); - left--; - state->mode = LEN; - break; - case CHECK: - if (state->wrap) { - NEEDBITS(32); - out -= left; - strm->total_out += out; - state->total += out; - if (out) - strm->adler = state->check = - UPDATE(state->check, put - out, out); - out = left; - if (( -#ifdef GUNZIP - state->flags ? hold : -#endif - ZSWAP32(hold)) != state->check) { - strm->msg = (char *)"incorrect data check"; - state->mode = BAD; - break; - } - INITBITS(); - Tracev((stderr, "inflate: check matches trailer\n")); - } -#ifdef GUNZIP - state->mode = LENGTH; - case LENGTH: - if (state->wrap && state->flags) { - NEEDBITS(32); - if (hold != (state->total & 0xffffffffUL)) { - strm->msg = (char *)"incorrect length check"; - state->mode = BAD; - break; - } - INITBITS(); - Tracev((stderr, "inflate: length matches trailer\n")); - } -#endif - state->mode = DONE; - case DONE: - ret = Z_STREAM_END; - goto inf_leave; - case BAD: - ret = Z_DATA_ERROR; - goto inf_leave; - case MEM: - return Z_MEM_ERROR; - case SYNC: - default: - return Z_STREAM_ERROR; - } - - /* - Return from inflate(), updating the total counts and the check value. - If there was no progress during the inflate() call, return a buffer - error. Call updatewindow() to create and/or update the window state. - Note: a memory error from inflate() is non-recoverable. - */ - inf_leave: - RESTORE(); - if (state->wsize || (out != strm->avail_out && state->mode < BAD && - (state->mode < CHECK || flush != Z_FINISH))) - if (updatewindow(strm, strm->next_out, out - strm->avail_out)) { - state->mode = MEM; - return Z_MEM_ERROR; - } - in -= strm->avail_in; - out -= strm->avail_out; - strm->total_in += in; - strm->total_out += out; - state->total += out; - if (state->wrap && out) - strm->adler = state->check = - UPDATE(state->check, strm->next_out - out, out); - strm->data_type = state->bits + (state->last ? 64 : 0) + - (state->mode == TYPE ? 128 : 0) + - (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0); - if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK) - ret = Z_BUF_ERROR; - return ret; -} - -int ZEXPORT inflateEnd(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) - return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (state->window != Z_NULL) ZFREE(strm, state->window); - ZFREE(strm, strm->state); - strm->state = Z_NULL; - Tracev((stderr, "inflate: end\n")); - return Z_OK; -} - -int ZEXPORT inflateGetDictionary(strm, dictionary, dictLength) -z_streamp strm; -Bytef *dictionary; -uInt *dictLength; -{ - struct inflate_state FAR *state; - - /* check state */ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - - /* copy dictionary */ - if (state->whave && dictionary != Z_NULL) { - zmemcpy(dictionary, state->window + state->wnext, - state->whave - state->wnext); - zmemcpy(dictionary + state->whave - state->wnext, - state->window, state->wnext); - } - if (dictLength != Z_NULL) - *dictLength = state->whave; - return Z_OK; -} - -int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength) -z_streamp strm; -const Bytef *dictionary; -uInt dictLength; -{ - struct inflate_state FAR *state; - unsigned long dictid; - int ret; - - /* check state */ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (state->wrap != 0 && state->mode != DICT) - return Z_STREAM_ERROR; - - /* check for correct dictionary identifier */ - if (state->mode == DICT) { - dictid = adler32(0L, Z_NULL, 0); - dictid = adler32(dictid, dictionary, dictLength); - if (dictid != state->check) - return Z_DATA_ERROR; - } - - /* copy dictionary to window using updatewindow(), which will amend the - existing dictionary if appropriate */ - ret = updatewindow(strm, dictionary + dictLength, dictLength); - if (ret) { - state->mode = MEM; - return Z_MEM_ERROR; - } - state->havedict = 1; - Tracev((stderr, "inflate: dictionary set\n")); - return Z_OK; -} - -int ZEXPORT inflateGetHeader(strm, head) -z_streamp strm; -gz_headerp head; -{ - struct inflate_state FAR *state; - - /* check state */ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if ((state->wrap & 2) == 0) return Z_STREAM_ERROR; - - /* save header structure */ - state->head = head; - head->done = 0; - return Z_OK; -} - -/* - Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff. Return when found - or when out of input. When called, *have is the number of pattern bytes - found in order so far, in 0..3. On return *have is updated to the new - state. If on return *have equals four, then the pattern was found and the - return value is how many bytes were read including the last byte of the - pattern. If *have is less than four, then the pattern has not been found - yet and the return value is len. In the latter case, syncsearch() can be - called again with more data and the *have state. *have is initialized to - zero for the first call. - */ -local unsigned syncsearch(have, buf, len) -unsigned FAR *have; -const unsigned char FAR *buf; -unsigned len; -{ - unsigned got; - unsigned next; - - got = *have; - next = 0; - while (next < len && got < 4) { - if ((int)(buf[next]) == (got < 2 ? 0 : 0xff)) - got++; - else if (buf[next]) - got = 0; - else - got = 4 - got; - next++; - } - *have = got; - return next; -} - -int ZEXPORT inflateSync(strm) -z_streamp strm; -{ - unsigned len; /* number of bytes to look at or looked at */ - unsigned long in, out; /* temporary to save total_in and total_out */ - unsigned char buf[4]; /* to restore bit buffer to byte string */ - struct inflate_state FAR *state; - - /* check parameters */ - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (strm->avail_in == 0 && state->bits < 8) return Z_BUF_ERROR; - - /* if first time, start search in bit buffer */ - if (state->mode != SYNC) { - state->mode = SYNC; - state->hold <<= state->bits & 7; - state->bits -= state->bits & 7; - len = 0; - while (state->bits >= 8) { - buf[len++] = (unsigned char)(state->hold); - state->hold >>= 8; - state->bits -= 8; - } - state->have = 0; - syncsearch(&(state->have), buf, len); - } - - /* search available input */ - len = syncsearch(&(state->have), strm->next_in, strm->avail_in); - strm->avail_in -= len; - strm->next_in += len; - strm->total_in += len; - - /* return no joy or set up to restart inflate() on a new block */ - if (state->have != 4) return Z_DATA_ERROR; - in = strm->total_in; out = strm->total_out; - inflateReset(strm); - strm->total_in = in; strm->total_out = out; - state->mode = TYPE; - return Z_OK; -} - -/* - Returns true if inflate is currently at the end of a block generated by - Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP - implementation to provide an additional safety check. PPP uses - Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored - block. When decompressing, PPP checks that at the end of input packet, - inflate is waiting for these length bytes. - */ -int ZEXPORT inflateSyncPoint(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - return state->mode == STORED && state->bits == 0; -} - -int ZEXPORT inflateCopy(dest, source) -z_streamp dest; -z_streamp source; -{ - struct inflate_state FAR *state; - struct inflate_state FAR *copy; - unsigned char FAR *window; - unsigned wsize; - - /* check input */ - if (dest == Z_NULL || source == Z_NULL || source->state == Z_NULL || - source->zalloc == (alloc_func)0 || source->zfree == (free_func)0) - return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)source->state; - - /* allocate space */ - copy = (struct inflate_state FAR *) - ZALLOC(source, 1, sizeof(struct inflate_state)); - if (copy == Z_NULL) return Z_MEM_ERROR; - window = Z_NULL; - if (state->window != Z_NULL) { - window = (unsigned char FAR *) - ZALLOC(source, 1U << state->wbits, sizeof(unsigned char)); - if (window == Z_NULL) { - ZFREE(source, copy); - return Z_MEM_ERROR; - } - } - - /* copy state */ - zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); - zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state)); - if (state->lencode >= state->codes && - state->lencode <= state->codes + ENOUGH - 1) { - copy->lencode = copy->codes + (state->lencode - state->codes); - copy->distcode = copy->codes + (state->distcode - state->codes); - } - copy->next = copy->codes + (state->next - state->codes); - if (window != Z_NULL) { - wsize = 1U << state->wbits; - zmemcpy(window, state->window, wsize); - } - copy->window = window; - dest->state = (struct internal_state FAR *)copy; - return Z_OK; -} - -int ZEXPORT inflateUndermine(strm, subvert) -z_streamp strm; -int subvert; -{ - struct inflate_state FAR *state; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - state->sane = !subvert; -#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - return Z_OK; -#else - state->sane = 1; - return Z_DATA_ERROR; -#endif -} - -long ZEXPORT inflateMark(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - - if (strm == Z_NULL || strm->state == Z_NULL) return -1L << 16; - state = (struct inflate_state FAR *)strm->state; - return ((long)(state->back) << 16) + - (state->mode == COPY ? state->length : - (state->mode == MATCH ? state->was - state->length : 0)); -} diff --git a/io2d/src/3rd-party/zlib/inflate.h b/io2d/src/3rd-party/zlib/inflate.h deleted file mode 100644 index 95f4986..0000000 --- a/io2d/src/3rd-party/zlib/inflate.h +++ /dev/null @@ -1,122 +0,0 @@ -/* inflate.h -- internal inflate state definition - * Copyright (C) 1995-2009 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* define NO_GZIP when compiling if you want to disable gzip header and - trailer decoding by inflate(). NO_GZIP would be used to avoid linking in - the crc code when it is not needed. For shared libraries, gzip decoding - should be left enabled. */ -#ifndef NO_GZIP -# define GUNZIP -#endif - -/* Possible inflate modes between inflate() calls */ -typedef enum { - HEAD, /* i: waiting for magic header */ - FLAGS, /* i: waiting for method and flags (gzip) */ - TIME, /* i: waiting for modification time (gzip) */ - OS, /* i: waiting for extra flags and operating system (gzip) */ - EXLEN, /* i: waiting for extra length (gzip) */ - EXTRA, /* i: waiting for extra bytes (gzip) */ - NAME, /* i: waiting for end of file name (gzip) */ - COMMENT, /* i: waiting for end of comment (gzip) */ - HCRC, /* i: waiting for header crc (gzip) */ - DICTID, /* i: waiting for dictionary check value */ - DICT, /* waiting for inflateSetDictionary() call */ - TYPE, /* i: waiting for type bits, including last-flag bit */ - TYPEDO, /* i: same, but skip check to exit inflate on new block */ - STORED, /* i: waiting for stored size (length and complement) */ - COPY_, /* i/o: same as COPY below, but only first time in */ - COPY, /* i/o: waiting for input or output to copy stored block */ - TABLE, /* i: waiting for dynamic block table lengths */ - LENLENS, /* i: waiting for code length code lengths */ - CODELENS, /* i: waiting for length/lit and distance code lengths */ - LEN_, /* i: same as LEN below, but only first time in */ - LEN, /* i: waiting for length/lit/eob code */ - LENEXT, /* i: waiting for length extra bits */ - DIST, /* i: waiting for distance code */ - DISTEXT, /* i: waiting for distance extra bits */ - MATCH, /* o: waiting for output space to copy string */ - LIT, /* o: waiting for output space to write literal */ - CHECK, /* i: waiting for 32-bit check value */ - LENGTH, /* i: waiting for 32-bit length (gzip) */ - DONE, /* finished check, done -- remain here until reset */ - BAD, /* got a data error -- remain here until reset */ - MEM, /* got an inflate() memory error -- remain here until reset */ - SYNC /* looking for synchronization bytes to restart inflate() */ -} inflate_mode; - -/* - State transitions between above modes - - - (most modes can go to BAD or MEM on error -- not shown for clarity) - - Process header: - HEAD -> (gzip) or (zlib) or (raw) - (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME -> COMMENT -> - HCRC -> TYPE - (zlib) -> DICTID or TYPE - DICTID -> DICT -> TYPE - (raw) -> TYPEDO - Read deflate blocks: - TYPE -> TYPEDO -> STORED or TABLE or LEN_ or CHECK - STORED -> COPY_ -> COPY -> TYPE - TABLE -> LENLENS -> CODELENS -> LEN_ - LEN_ -> LEN - Read deflate codes in fixed or dynamic block: - LEN -> LENEXT or LIT or TYPE - LENEXT -> DIST -> DISTEXT -> MATCH -> LEN - LIT -> LEN - Process trailer: - CHECK -> LENGTH -> DONE - */ - -/* state maintained between inflate() calls. Approximately 10K bytes. */ -struct inflate_state { - inflate_mode mode; /* current inflate mode */ - int last; /* true if processing last block */ - int wrap; /* bit 0 true for zlib, bit 1 true for gzip */ - int havedict; /* true if dictionary provided */ - int flags; /* gzip header method and flags (0 if zlib) */ - unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */ - unsigned long check; /* protected copy of check value */ - unsigned long total; /* protected copy of output count */ - gz_headerp head; /* where to save gzip header information */ - /* sliding window */ - unsigned wbits; /* log base 2 of requested window size */ - unsigned wsize; /* window size or zero if not using window */ - unsigned whave; /* valid bytes in the window */ - unsigned wnext; /* window write index */ - unsigned char FAR *window; /* allocated sliding window, if needed */ - /* bit accumulator */ - unsigned long hold; /* input bit accumulator */ - unsigned bits; /* number of bits in "in" */ - /* for string and stored block copying */ - unsigned length; /* literal or length of data to copy */ - unsigned offset; /* distance back to copy string from */ - /* for table and code decoding */ - unsigned extra; /* extra bits needed */ - /* fixed and dynamic code tables */ - code const FAR *lencode; /* starting table for length/literal codes */ - code const FAR *distcode; /* starting table for distance codes */ - unsigned lenbits; /* index bits for lencode */ - unsigned distbits; /* index bits for distcode */ - /* dynamic table building */ - unsigned ncode; /* number of code length code lengths */ - unsigned nlen; /* number of length code lengths */ - unsigned ndist; /* number of distance code lengths */ - unsigned have; /* number of code lengths in lens[] */ - code FAR *next; /* next available space in codes[] */ - unsigned short lens[320]; /* temporary storage for code lengths */ - unsigned short work[288]; /* work area for code table building */ - code codes[ENOUGH]; /* space for code tables */ - int sane; /* if false, allow invalid distance too far */ - int back; /* bits back of last unprocessed length/lit */ - unsigned was; /* initial length of match */ -}; diff --git a/io2d/src/3rd-party/zlib/inftrees.c b/io2d/src/3rd-party/zlib/inftrees.c deleted file mode 100644 index 44d89cf..0000000 --- a/io2d/src/3rd-party/zlib/inftrees.c +++ /dev/null @@ -1,306 +0,0 @@ -/* inftrees.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2013 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "inftrees.h" - -#define MAXBITS 15 - -const char inflate_copyright[] = - " inflate 1.2.8 Copyright 1995-2013 Mark Adler "; -/* - If you use the zlib library in a product, an acknowledgment is welcome - in the documentation of your product. If for some reason you cannot - include such an acknowledgment, I would appreciate that you keep this - copyright string in the executable of your product. - */ - -/* - Build a set of tables to decode the provided canonical Huffman code. - The code lengths are lens[0..codes-1]. The result starts at *table, - whose indices are 0..2^bits-1. work is a writable array of at least - lens shorts, which is used as a work area. type is the type of code - to be generated, CODES, LENS, or DISTS. On return, zero is success, - -1 is an invalid code, and +1 means that ENOUGH isn't enough. table - on return points to the next available entry's address. bits is the - requested root table index bits, and on return it is the actual root - table index bits. It will differ if the request is greater than the - longest code or if it is less than the shortest code. - */ -int ZLIB_INTERNAL inflate_table(type, lens, codes, table, bits, work) -codetype type; -unsigned short FAR *lens; -unsigned codes; -code FAR * FAR *table; -unsigned FAR *bits; -unsigned short FAR *work; -{ - unsigned len; /* a code's length in bits */ - unsigned sym; /* index of code symbols */ - unsigned min, max; /* minimum and maximum code lengths */ - unsigned root; /* number of index bits for root table */ - unsigned curr; /* number of index bits for current table */ - unsigned drop; /* code bits to drop for sub-table */ - int left; /* number of prefix codes available */ - unsigned used; /* code entries in table used */ - unsigned huff; /* Huffman code */ - unsigned incr; /* for incrementing code, index */ - unsigned fill; /* index for replicating entries */ - unsigned low; /* low bits for current root entry */ - unsigned mask; /* mask for low root bits */ - code here; /* table entry for duplication */ - code FAR *next; /* next available space in table */ - const unsigned short FAR *base; /* base value table to use */ - const unsigned short FAR *extra; /* extra bits table to use */ - int end; /* use base and extra for symbol > end */ - unsigned short count[MAXBITS+1]; /* number of codes of each length */ - unsigned short offs[MAXBITS+1]; /* offsets in table for each length */ - static const unsigned short lbase[31] = { /* Length codes 257..285 base */ - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, - 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; - static const unsigned short lext[31] = { /* Length codes 257..285 extra */ - 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, - 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78}; - static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, - 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, - 8193, 12289, 16385, 24577, 0, 0}; - static const unsigned short dext[32] = { /* Distance codes 0..29 extra */ - 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, - 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, - 28, 28, 29, 29, 64, 64}; - - /* - Process a set of code lengths to create a canonical Huffman code. The - code lengths are lens[0..codes-1]. Each length corresponds to the - symbols 0..codes-1. The Huffman code is generated by first sorting the - symbols by length from short to long, and retaining the symbol order - for codes with equal lengths. Then the code starts with all zero bits - for the first code of the shortest length, and the codes are integer - increments for the same length, and zeros are appended as the length - increases. For the deflate format, these bits are stored backwards - from their more natural integer increment ordering, and so when the - decoding tables are built in the large loop below, the integer codes - are incremented backwards. - - This routine assumes, but does not check, that all of the entries in - lens[] are in the range 0..MAXBITS. The caller must assure this. - 1..MAXBITS is interpreted as that code length. zero means that that - symbol does not occur in this code. - - The codes are sorted by computing a count of codes for each length, - creating from that a table of starting indices for each length in the - sorted table, and then entering the symbols in order in the sorted - table. The sorted table is work[], with that space being provided by - the caller. - - The length counts are used for other purposes as well, i.e. finding - the minimum and maximum length codes, determining if there are any - codes at all, checking for a valid set of lengths, and looking ahead - at length counts to determine sub-table sizes when building the - decoding tables. - */ - - /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ - for (len = 0; len <= MAXBITS; len++) - count[len] = 0; - for (sym = 0; sym < codes; sym++) - count[lens[sym]]++; - - /* bound code lengths, force root to be within code lengths */ - root = *bits; - for (max = MAXBITS; max >= 1; max--) - if (count[max] != 0) break; - if (root > max) root = max; - if (max == 0) { /* no symbols to code at all */ - here.op = (unsigned char)64; /* invalid code marker */ - here.bits = (unsigned char)1; - here.val = (unsigned short)0; - *(*table)++ = here; /* make a table to force an error */ - *(*table)++ = here; - *bits = 1; - return 0; /* no symbols, but wait for decoding to report error */ - } - for (min = 1; min < max; min++) - if (count[min] != 0) break; - if (root < min) root = min; - - /* check for an over-subscribed or incomplete set of lengths */ - left = 1; - for (len = 1; len <= MAXBITS; len++) { - left <<= 1; - left -= count[len]; - if (left < 0) return -1; /* over-subscribed */ - } - if (left > 0 && (type == CODES || max != 1)) - return -1; /* incomplete set */ - - /* generate offsets into symbol table for each length for sorting */ - offs[1] = 0; - for (len = 1; len < MAXBITS; len++) - offs[len + 1] = offs[len] + count[len]; - - /* sort symbols by length, by symbol order within each length */ - for (sym = 0; sym < codes; sym++) - if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym; - - /* - Create and fill in decoding tables. In this loop, the table being - filled is at next and has curr index bits. The code being used is huff - with length len. That code is converted to an index by dropping drop - bits off of the bottom. For codes where len is less than drop + curr, - those top drop + curr - len bits are incremented through all values to - fill the table with replicated entries. - - root is the number of index bits for the root table. When len exceeds - root, sub-tables are created pointed to by the root entry with an index - of the low root bits of huff. This is saved in low to check for when a - new sub-table should be started. drop is zero when the root table is - being filled, and drop is root when sub-tables are being filled. - - When a new sub-table is needed, it is necessary to look ahead in the - code lengths to determine what size sub-table is needed. The length - counts are used for this, and so count[] is decremented as codes are - entered in the tables. - - used keeps track of how many table entries have been allocated from the - provided *table space. It is checked for LENS and DIST tables against - the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in - the initial root table size constants. See the comments in inftrees.h - for more information. - - sym increments through all symbols, and the loop terminates when - all codes of length max, i.e. all codes, have been processed. This - routine permits incomplete codes, so another loop after this one fills - in the rest of the decoding tables with invalid code markers. - */ - - /* set up for code type */ - switch (type) { - case CODES: - base = extra = work; /* dummy value--not used */ - end = 19; - break; - case LENS: - base = lbase; - base -= 257; - extra = lext; - extra -= 257; - end = 256; - break; - default: /* DISTS */ - base = dbase; - extra = dext; - end = -1; - } - - /* initialize state for loop */ - huff = 0; /* starting code */ - sym = 0; /* starting code symbol */ - len = min; /* starting code length */ - next = *table; /* current table to fill in */ - curr = root; /* current table index bits */ - drop = 0; /* current bits to drop from code for index */ - low = (unsigned)(-1); /* trigger new sub-table when len > root */ - used = 1U << root; /* use root table entries */ - mask = used - 1; /* mask for comparing low */ - - /* check available table space */ - if ((type == LENS && used > ENOUGH_LENS) || - (type == DISTS && used > ENOUGH_DISTS)) - return 1; - - /* process all codes and make table entries */ - for (;;) { - /* create table entry */ - here.bits = (unsigned char)(len - drop); - if ((int)(work[sym]) < end) { - here.op = (unsigned char)0; - here.val = work[sym]; - } - else if ((int)(work[sym]) > end) { - here.op = (unsigned char)(extra[work[sym]]); - here.val = base[work[sym]]; - } - else { - here.op = (unsigned char)(32 + 64); /* end of block */ - here.val = 0; - } - - /* replicate for those indices with low len bits equal to huff */ - incr = 1U << (len - drop); - fill = 1U << curr; - min = fill; /* save offset to next table */ - do { - fill -= incr; - next[(huff >> drop) + fill] = here; - } while (fill != 0); - - /* backwards increment the len-bit code huff */ - incr = 1U << (len - 1); - while (huff & incr) - incr >>= 1; - if (incr != 0) { - huff &= incr - 1; - huff += incr; - } - else - huff = 0; - - /* go to next symbol, update count, len */ - sym++; - if (--(count[len]) == 0) { - if (len == max) break; - len = lens[work[sym]]; - } - - /* create new sub-table if needed */ - if (len > root && (huff & mask) != low) { - /* if first time, transition to sub-tables */ - if (drop == 0) - drop = root; - - /* increment past last table */ - next += min; /* here min is 1 << curr */ - - /* determine length of next table */ - curr = len - drop; - left = (int)(1 << curr); - while (curr + drop < max) { - left -= count[curr + drop]; - if (left <= 0) break; - curr++; - left <<= 1; - } - - /* check for enough space */ - used += 1U << curr; - if ((type == LENS && used > ENOUGH_LENS) || - (type == DISTS && used > ENOUGH_DISTS)) - return 1; - - /* point entry in root table to sub-table */ - low = huff & mask; - (*table)[low].op = (unsigned char)curr; - (*table)[low].bits = (unsigned char)root; - (*table)[low].val = (unsigned short)(next - *table); - } - } - - /* fill in remaining table entry if code is incomplete (guaranteed to have - at most one remaining entry, since if the code is incomplete, the - maximum code length that was allowed to get this far is one bit) */ - if (huff != 0) { - here.op = (unsigned char)64; /* invalid code marker */ - here.bits = (unsigned char)(len - drop); - here.val = (unsigned short)0; - next[huff] = here; - } - - /* set return parameters */ - *table += used; - *bits = root; - return 0; -} diff --git a/io2d/src/3rd-party/zlib/inftrees.h b/io2d/src/3rd-party/zlib/inftrees.h deleted file mode 100644 index baa53a0..0000000 --- a/io2d/src/3rd-party/zlib/inftrees.h +++ /dev/null @@ -1,62 +0,0 @@ -/* inftrees.h -- header to use inftrees.c - * Copyright (C) 1995-2005, 2010 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* Structure for decoding tables. Each entry provides either the - information needed to do the operation requested by the code that - indexed that table entry, or it provides a pointer to another - table that indexes more bits of the code. op indicates whether - the entry is a pointer to another table, a literal, a length or - distance, an end-of-block, or an invalid code. For a table - pointer, the low four bits of op is the number of index bits of - that table. For a length or distance, the low four bits of op - is the number of extra bits to get after the code. bits is - the number of bits in this code or part of the code to drop off - of the bit buffer. val is the actual byte to output in the case - of a literal, the base length or distance, or the offset from - the current table to the next table. Each entry is four bytes. */ -typedef struct { - unsigned char op; /* operation, extra bits, table bits */ - unsigned char bits; /* bits in this part of the code */ - unsigned short val; /* offset in table or code value */ -} code; - -/* op values as set by inflate_table(): - 00000000 - literal - 0000tttt - table link, tttt != 0 is the number of table index bits - 0001eeee - length or distance, eeee is the number of extra bits - 01100000 - end of block - 01000000 - invalid code - */ - -/* Maximum size of the dynamic table. The maximum number of code structures is - 1444, which is the sum of 852 for literal/length codes and 592 for distance - codes. These values were found by exhaustive searches using the program - examples/enough.c found in the zlib distribtution. The arguments to that - program are the number of symbols, the initial root table size, and the - maximum bit length of a code. "enough 286 9 15" for literal/length codes - returns returns 852, and "enough 30 6 15" for distance codes returns 592. - The initial root table size (9 or 6) is found in the fifth argument of the - inflate_table() calls in inflate.c and infback.c. If the root table size is - changed, then these maximum sizes would be need to be recalculated and - updated. */ -#define ENOUGH_LENS 852 -#define ENOUGH_DISTS 592 -#define ENOUGH (ENOUGH_LENS+ENOUGH_DISTS) - -/* Type of code to build for inflate_table() */ -typedef enum { - CODES, - LENS, - DISTS -} codetype; - -int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens, - unsigned codes, code FAR * FAR *table, - unsigned FAR *bits, unsigned short FAR *work)); diff --git a/io2d/src/3rd-party/zlib/make_vms.com b/io2d/src/3rd-party/zlib/make_vms.com deleted file mode 100644 index 65e9d0c..0000000 --- a/io2d/src/3rd-party/zlib/make_vms.com +++ /dev/null @@ -1,867 +0,0 @@ -$! make libz under VMS written by -$! Martin P.J. Zinser -$! -$! In case of problems with the install you might contact me at -$! zinser@zinser.no-ip.info(preferred) or -$! martin.zinser@eurexchange.com (work) -$! -$! Make procedure history for Zlib -$! -$!------------------------------------------------------------------------------ -$! Version history -$! 0.01 20060120 First version to receive a number -$! 0.02 20061008 Adapt to new Makefile.in -$! 0.03 20091224 Add support for large file check -$! 0.04 20100110 Add new gzclose, gzlib, gzread, gzwrite -$! 0.05 20100221 Exchange zlibdefs.h by zconf.h.in -$! 0.06 20120111 Fix missing amiss_err, update zconf_h.in, fix new exmples -$! subdir path, update module search in makefile.in -$! 0.07 20120115 Triggered by work done by Alexey Chupahin completly redesigned -$! shared image creation -$! 0.08 20120219 Make it work on VAX again, pre-load missing symbols to shared -$! image -$! 0.09 20120305 SMS. P1 sets builder ("MMK", "MMS", " " (built-in)). -$! "" -> automatic, preference: MMK, MMS, built-in. -$! -$ on error then goto err_exit -$! -$ true = 1 -$ false = 0 -$ tmpnam = "temp_" + f$getjpi("","pid") -$ tt = tmpnam + ".txt" -$ tc = tmpnam + ".c" -$ th = tmpnam + ".h" -$ define/nolog tconfig 'th' -$ its_decc = false -$ its_vaxc = false -$ its_gnuc = false -$ s_case = False -$! -$! Setup variables holding "config" information -$! -$ Make = "''p1'" -$ name = "Zlib" -$ version = "?.?.?" -$ v_string = "ZLIB_VERSION" -$ v_file = "zlib.h" -$ ccopt = "/include = []" -$ lopts = "" -$ dnsrl = "" -$ aconf_in_file = "zconf.h.in#zconf.h_in#zconf_h.in" -$ conf_check_string = "" -$ linkonly = false -$ optfile = name + ".opt" -$ mapfile = name + ".map" -$ libdefs = "" -$ vax = f$getsyi("HW_MODEL").lt.1024 -$ axp = f$getsyi("HW_MODEL").ge.1024 .and. f$getsyi("HW_MODEL").lt.4096 -$ ia64 = f$getsyi("HW_MODEL").ge.4096 -$! -$! 2012-03-05 SMS. -$! Why is this needed? And if it is needed, why not simply ".not. vax"? -$! -$!!! if axp .or. ia64 then set proc/parse=extended -$! -$ whoami = f$parse(f$environment("Procedure"),,,,"NO_CONCEAL") -$ mydef = F$parse(whoami,,,"DEVICE") -$ mydir = f$parse(whoami,,,"DIRECTORY") - "][" -$ myproc = f$parse(whoami,,,"Name") + f$parse(whoami,,,"type") -$! -$! Check for MMK/MMS -$! -$ if (Make .eqs. "") -$ then -$ If F$Search ("Sys$System:MMS.EXE") .nes. "" Then Make = "MMS" -$ If F$Type (MMK) .eqs. "STRING" Then Make = "MMK" -$ else -$ Make = f$edit( Make, "trim") -$ endif -$! -$ gosub find_version -$! -$ open/write topt tmp.opt -$ open/write optf 'optfile' -$! -$ gosub check_opts -$! -$! Look for the compiler used -$! -$ gosub check_compiler -$ close topt -$ close optf -$! -$ if its_decc -$ then -$ ccopt = "/prefix=all" + ccopt -$ if f$trnlnm("SYS") .eqs. "" -$ then -$ if axp -$ then -$ define sys sys$library: -$ else -$ ccopt = "/decc" + ccopt -$ define sys decc$library_include: -$ endif -$ endif -$! -$! 2012-03-05 SMS. -$! Why /NAMES = AS_IS? Why not simply ".not. vax"? And why not on VAX? -$! -$ if axp .or. ia64 -$ then -$ ccopt = ccopt + "/name=as_is/opt=(inline=speed)" -$ s_case = true -$ endif -$ endif -$ if its_vaxc .or. its_gnuc -$ then -$ if f$trnlnm("SYS").eqs."" then define sys sys$library: -$ endif -$! -$! Build a fake configure input header -$! -$ open/write conf_hin config.hin -$ write conf_hin "#undef _LARGEFILE64_SOURCE" -$ close conf_hin -$! -$! -$ i = 0 -$FIND_ACONF: -$ fname = f$element(i,"#",aconf_in_file) -$ if fname .eqs. "#" then goto AMISS_ERR -$ if f$search(fname) .eqs. "" -$ then -$ i = i + 1 -$ goto find_aconf -$ endif -$ open/read/err=aconf_err aconf_in 'fname' -$ open/write aconf zconf.h -$ACONF_LOOP: -$ read/end_of_file=aconf_exit aconf_in line -$ work = f$edit(line, "compress,trim") -$ if f$extract(0,6,work) .nes. "#undef" -$ then -$ if f$extract(0,12,work) .nes. "#cmakedefine" -$ then -$ write aconf line -$ endif -$ else -$ cdef = f$element(1," ",work) -$ gosub check_config -$ endif -$ goto aconf_loop -$ACONF_EXIT: -$ write aconf "" -$ write aconf "/* VMS specifics added by make_vms.com: */" -$ write aconf "#define VMS 1" -$ write aconf "#include " -$ write aconf "#include " -$ write aconf "#ifdef _LARGEFILE" -$ write aconf "# define off64_t __off64_t" -$ write aconf "# define fopen64 fopen" -$ write aconf "# define fseeko64 fseeko" -$ write aconf "# define lseek64 lseek" -$ write aconf "# define ftello64 ftell" -$ write aconf "#endif" -$ write aconf "#if !defined( __VAX) && (__CRTL_VER >= 70312000)" -$ write aconf "# define HAVE_VSNPRINTF" -$ write aconf "#endif" -$ close aconf_in -$ close aconf -$ if f$search("''th'") .nes. "" then delete 'th';* -$! Build the thing plain or with mms -$! -$ write sys$output "Compiling Zlib sources ..." -$ if make.eqs."" -$ then -$ if (f$search( "example.obj;*") .nes. "") then delete example.obj;* -$ if (f$search( "minigzip.obj;*") .nes. "") then delete minigzip.obj;* -$ CALL MAKE adler32.OBJ "CC ''CCOPT' adler32" - - adler32.c zlib.h zconf.h -$ CALL MAKE compress.OBJ "CC ''CCOPT' compress" - - compress.c zlib.h zconf.h -$ CALL MAKE crc32.OBJ "CC ''CCOPT' crc32" - - crc32.c zlib.h zconf.h -$ CALL MAKE deflate.OBJ "CC ''CCOPT' deflate" - - deflate.c deflate.h zutil.h zlib.h zconf.h -$ CALL MAKE gzclose.OBJ "CC ''CCOPT' gzclose" - - gzclose.c zutil.h zlib.h zconf.h -$ CALL MAKE gzlib.OBJ "CC ''CCOPT' gzlib" - - gzlib.c zutil.h zlib.h zconf.h -$ CALL MAKE gzread.OBJ "CC ''CCOPT' gzread" - - gzread.c zutil.h zlib.h zconf.h -$ CALL MAKE gzwrite.OBJ "CC ''CCOPT' gzwrite" - - gzwrite.c zutil.h zlib.h zconf.h -$ CALL MAKE infback.OBJ "CC ''CCOPT' infback" - - infback.c zutil.h inftrees.h inflate.h inffast.h inffixed.h -$ CALL MAKE inffast.OBJ "CC ''CCOPT' inffast" - - inffast.c zutil.h zlib.h zconf.h inffast.h -$ CALL MAKE inflate.OBJ "CC ''CCOPT' inflate" - - inflate.c zutil.h zlib.h zconf.h infblock.h -$ CALL MAKE inftrees.OBJ "CC ''CCOPT' inftrees" - - inftrees.c zutil.h zlib.h zconf.h inftrees.h -$ CALL MAKE trees.OBJ "CC ''CCOPT' trees" - - trees.c deflate.h zutil.h zlib.h zconf.h -$ CALL MAKE uncompr.OBJ "CC ''CCOPT' uncompr" - - uncompr.c zlib.h zconf.h -$ CALL MAKE zutil.OBJ "CC ''CCOPT' zutil" - - zutil.c zutil.h zlib.h zconf.h -$ write sys$output "Building Zlib ..." -$ CALL MAKE libz.OLB "lib/crea libz.olb *.obj" *.OBJ -$ write sys$output "Building example..." -$ CALL MAKE example.OBJ "CC ''CCOPT' [.test]example" - - [.test]example.c zlib.h zconf.h -$ call make example.exe "LINK example,libz.olb/lib" example.obj libz.olb -$ write sys$output "Building minigzip..." -$ CALL MAKE minigzip.OBJ "CC ''CCOPT' [.test]minigzip" - - [.test]minigzip.c zlib.h zconf.h -$ call make minigzip.exe - - "LINK minigzip,libz.olb/lib" - - minigzip.obj libz.olb -$ else -$ gosub crea_mms -$ write sys$output "Make ''name' ''version' with ''Make' " -$ 'make' -$ endif -$! -$! Create shareable image -$! -$ gosub crea_olist -$ write sys$output "Creating libzshr.exe" -$ call map_2_shopt 'mapfile' 'optfile' -$ LINK_'lopts'/SHARE=libzshr.exe modules.opt/opt,'optfile'/opt -$ write sys$output "Zlib build completed" -$ delete/nolog tmp.opt;* -$ exit -$AMISS_ERR: -$ write sys$output "No source for config.hin found." -$ write sys$output "Tried any of ''aconf_in_file'" -$ goto err_exit -$CC_ERR: -$ write sys$output "C compiler required to build ''name'" -$ goto err_exit -$ERR_EXIT: -$ set message/facil/ident/sever/text -$ close/nolog optf -$ close/nolog topt -$ close/nolog aconf_in -$ close/nolog aconf -$ close/nolog out -$ close/nolog min -$ close/nolog mod -$ close/nolog h_in -$ write sys$output "Exiting..." -$ exit 2 -$! -$! -$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES -$ V = 'F$Verify(0) -$! P1 = What we are trying to make -$! P2 = Command to make it -$! P3 - P8 What it depends on -$ -$ If F$Search(P1) .Eqs. "" Then Goto Makeit -$ Time = F$CvTime(F$File(P1,"RDT")) -$arg=3 -$Loop: -$ Argument = P'arg -$ If Argument .Eqs. "" Then Goto Exit -$ El=0 -$Loop2: -$ File = F$Element(El," ",Argument) -$ If File .Eqs. " " Then Goto Endl -$ AFile = "" -$Loop3: -$ OFile = AFile -$ AFile = F$Search(File) -$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl -$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit -$ Goto Loop3 -$NextEL: -$ El = El + 1 -$ Goto Loop2 -$EndL: -$ arg=arg+1 -$ If arg .Le. 8 Then Goto Loop -$ Goto Exit -$ -$Makeit: -$ VV=F$VERIFY(0) -$ write sys$output P2 -$ 'P2 -$ VV='F$Verify(VV) -$Exit: -$ If V Then Set Verify -$ENDSUBROUTINE -$!------------------------------------------------------------------------------ -$! -$! Check command line options and set symbols accordingly -$! -$!------------------------------------------------------------------------------ -$! Version history -$! 0.01 20041206 First version to receive a number -$! 0.02 20060126 Add new "HELP" target -$ CHECK_OPTS: -$ i = 1 -$ OPT_LOOP: -$ if i .lt. 9 -$ then -$ cparm = f$edit(p'i',"upcase") -$! -$! Check if parameter actually contains something -$! -$ if f$edit(cparm,"trim") .nes. "" -$ then -$ if cparm .eqs. "DEBUG" -$ then -$ ccopt = ccopt + "/noopt/deb" -$ lopts = lopts + "/deb" -$ endif -$ if f$locate("CCOPT=",cparm) .lt. f$length(cparm) -$ then -$ start = f$locate("=",cparm) + 1 -$ len = f$length(cparm) - start -$ ccopt = ccopt + f$extract(start,len,cparm) -$ if f$locate("AS_IS",f$edit(ccopt,"UPCASE")) .lt. f$length(ccopt) - - then s_case = true -$ endif -$ if cparm .eqs. "LINK" then linkonly = true -$ if f$locate("LOPTS=",cparm) .lt. f$length(cparm) -$ then -$ start = f$locate("=",cparm) + 1 -$ len = f$length(cparm) - start -$ lopts = lopts + f$extract(start,len,cparm) -$ endif -$ if f$locate("CC=",cparm) .lt. f$length(cparm) -$ then -$ start = f$locate("=",cparm) + 1 -$ len = f$length(cparm) - start -$ cc_com = f$extract(start,len,cparm) - if (cc_com .nes. "DECC") .and. - - (cc_com .nes. "VAXC") .and. - - (cc_com .nes. "GNUC") -$ then -$ write sys$output "Unsupported compiler choice ''cc_com' ignored" -$ write sys$output "Use DECC, VAXC, or GNUC instead" -$ else -$ if cc_com .eqs. "DECC" then its_decc = true -$ if cc_com .eqs. "VAXC" then its_vaxc = true -$ if cc_com .eqs. "GNUC" then its_gnuc = true -$ endif -$ endif -$ if f$locate("MAKE=",cparm) .lt. f$length(cparm) -$ then -$ start = f$locate("=",cparm) + 1 -$ len = f$length(cparm) - start -$ mmks = f$extract(start,len,cparm) -$ if (mmks .eqs. "MMK") .or. (mmks .eqs. "MMS") -$ then -$ make = mmks -$ else -$ write sys$output "Unsupported make choice ''mmks' ignored" -$ write sys$output "Use MMK or MMS instead" -$ endif -$ endif -$ if cparm .eqs. "HELP" then gosub bhelp -$ endif -$ i = i + 1 -$ goto opt_loop -$ endif -$ return -$!------------------------------------------------------------------------------ -$! -$! Look for the compiler used -$! -$! Version history -$! 0.01 20040223 First version to receive a number -$! 0.02 20040229 Save/set value of decc$no_rooted_search_lists -$! 0.03 20060202 Extend handling of GNU C -$! 0.04 20090402 Compaq -> hp -$CHECK_COMPILER: -$ if (.not. (its_decc .or. its_vaxc .or. its_gnuc)) -$ then -$ its_decc = (f$search("SYS$SYSTEM:DECC$COMPILER.EXE") .nes. "") -$ its_vaxc = .not. its_decc .and. (F$Search("SYS$System:VAXC.Exe") .nes. "") -$ its_gnuc = .not. (its_decc .or. its_vaxc) .and. (f$trnlnm("gnu_cc") .nes. "") -$ endif -$! -$! Exit if no compiler available -$! -$ if (.not. (its_decc .or. its_vaxc .or. its_gnuc)) -$ then goto CC_ERR -$ else -$ if its_decc -$ then -$ write sys$output "CC compiler check ... hp C" -$ if f$trnlnm("decc$no_rooted_search_lists") .nes. "" -$ then -$ dnrsl = f$trnlnm("decc$no_rooted_search_lists") -$ endif -$ define/nolog decc$no_rooted_search_lists 1 -$ else -$ if its_vaxc then write sys$output "CC compiler check ... VAX C" -$ if its_gnuc -$ then -$ write sys$output "CC compiler check ... GNU C" -$ if f$trnlnm(topt) then write topt "gnu_cc:[000000]gcclib.olb/lib" -$ if f$trnlnm(optf) then write optf "gnu_cc:[000000]gcclib.olb/lib" -$ cc = "gcc" -$ endif -$ if f$trnlnm(topt) then write topt "sys$share:vaxcrtl.exe/share" -$ if f$trnlnm(optf) then write optf "sys$share:vaxcrtl.exe/share" -$ endif -$ endif -$ return -$!------------------------------------------------------------------------------ -$! -$! If MMS/MMK are available dump out the descrip.mms if required -$! -$CREA_MMS: -$ write sys$output "Creating descrip.mms..." -$ create descrip.mms -$ open/append out descrip.mms -$ copy sys$input: out -$ deck -# descrip.mms: MMS description file for building zlib on VMS -# written by Martin P.J. Zinser -# - -OBJS = adler32.obj, compress.obj, crc32.obj, gzclose.obj, gzlib.obj\ - gzread.obj, gzwrite.obj, uncompr.obj, infback.obj\ - deflate.obj, trees.obj, zutil.obj, inflate.obj, \ - inftrees.obj, inffast.obj - -$ eod -$ write out "CFLAGS=", ccopt -$ write out "LOPTS=", lopts -$ write out "all : example.exe minigzip.exe libz.olb" -$ copy sys$input: out -$ deck - @ write sys$output " Example applications available" - -libz.olb : libz.olb($(OBJS)) - @ write sys$output " libz available" - -example.exe : example.obj libz.olb - link $(LOPTS) example,libz.olb/lib - -minigzip.exe : minigzip.obj libz.olb - link $(LOPTS) minigzip,libz.olb/lib - -clean : - delete *.obj;*,libz.olb;*,*.opt;*,*.exe;* - - -# Other dependencies. -adler32.obj : adler32.c zutil.h zlib.h zconf.h -compress.obj : compress.c zlib.h zconf.h -crc32.obj : crc32.c zutil.h zlib.h zconf.h -deflate.obj : deflate.c deflate.h zutil.h zlib.h zconf.h -example.obj : [.test]example.c zlib.h zconf.h -gzclose.obj : gzclose.c zutil.h zlib.h zconf.h -gzlib.obj : gzlib.c zutil.h zlib.h zconf.h -gzread.obj : gzread.c zutil.h zlib.h zconf.h -gzwrite.obj : gzwrite.c zutil.h zlib.h zconf.h -inffast.obj : inffast.c zutil.h zlib.h zconf.h inftrees.h inffast.h -inflate.obj : inflate.c zutil.h zlib.h zconf.h -inftrees.obj : inftrees.c zutil.h zlib.h zconf.h inftrees.h -minigzip.obj : [.test]minigzip.c zlib.h zconf.h -trees.obj : trees.c deflate.h zutil.h zlib.h zconf.h -uncompr.obj : uncompr.c zlib.h zconf.h -zutil.obj : zutil.c zutil.h zlib.h zconf.h -infback.obj : infback.c zutil.h inftrees.h inflate.h inffast.h inffixed.h -$ eod -$ close out -$ return -$!------------------------------------------------------------------------------ -$! -$! Read list of core library sources from makefile.in and create options -$! needed to build shareable image -$! -$CREA_OLIST: -$ open/read min makefile.in -$ open/write mod modules.opt -$ src_check_list = "OBJZ =#OBJG =" -$MRLOOP: -$ read/end=mrdone min rec -$ i = 0 -$SRC_CHECK_LOOP: -$ src_check = f$element(i, "#", src_check_list) -$ i = i+1 -$ if src_check .eqs. "#" then goto mrloop -$ if (f$extract(0,6,rec) .nes. src_check) then goto src_check_loop -$ rec = rec - src_check -$ gosub extra_filnam -$ if (f$element(1,"\",rec) .eqs. "\") then goto mrloop -$MRSLOOP: -$ read/end=mrdone min rec -$ gosub extra_filnam -$ if (f$element(1,"\",rec) .nes. "\") then goto mrsloop -$MRDONE: -$ close min -$ close mod -$ return -$!------------------------------------------------------------------------------ -$! -$! Take record extracted in crea_olist and split it into single filenames -$! -$EXTRA_FILNAM: -$ myrec = f$edit(rec - "\", "trim,compress") -$ i = 0 -$FELOOP: -$ srcfil = f$element(i," ", myrec) -$ if (srcfil .nes. " ") -$ then -$ write mod f$parse(srcfil,,,"NAME"), ".obj" -$ i = i + 1 -$ goto feloop -$ endif -$ return -$!------------------------------------------------------------------------------ -$! -$! Find current Zlib version number -$! -$FIND_VERSION: -$ open/read h_in 'v_file' -$hloop: -$ read/end=hdone h_in rec -$ rec = f$edit(rec,"TRIM") -$ if (f$extract(0,1,rec) .nes. "#") then goto hloop -$ rec = f$edit(rec - "#", "TRIM") -$ if f$element(0," ",rec) .nes. "define" then goto hloop -$ if f$element(1," ",rec) .eqs. v_string -$ then -$ version = 'f$element(2," ",rec)' -$ goto hdone -$ endif -$ goto hloop -$hdone: -$ close h_in -$ return -$!------------------------------------------------------------------------------ -$! -$CHECK_CONFIG: -$! -$ in_ldef = f$locate(cdef,libdefs) -$ if (in_ldef .lt. f$length(libdefs)) -$ then -$ write aconf "#define ''cdef' 1" -$ libdefs = f$extract(0,in_ldef,libdefs) + - - f$extract(in_ldef + f$length(cdef) + 1, - - f$length(libdefs) - in_ldef - f$length(cdef) - 1, - - libdefs) -$ else -$ if (f$type('cdef') .eqs. "INTEGER") -$ then -$ write aconf "#define ''cdef' ", 'cdef' -$ else -$ if (f$type('cdef') .eqs. "STRING") -$ then -$ write aconf "#define ''cdef' ", """", '''cdef'', """" -$ else -$ gosub check_cc_def -$ endif -$ endif -$ endif -$ return -$!------------------------------------------------------------------------------ -$! -$! Check if this is a define relating to the properties of the C/C++ -$! compiler -$! -$ CHECK_CC_DEF: -$ if (cdef .eqs. "_LARGEFILE64_SOURCE") -$ then -$ copy sys$input: 'tc' -$ deck -#include "tconfig" -#define _LARGEFILE -#include - -int main(){ -FILE *fp; - fp = fopen("temp.txt","r"); - fseeko(fp,1,SEEK_SET); - fclose(fp); -} - -$ eod -$ test_inv = false -$ comm_h = false -$ gosub cc_prop_check -$ return -$ endif -$ write aconf "/* ", line, " */" -$ return -$!------------------------------------------------------------------------------ -$! -$! Check for properties of C/C++ compiler -$! -$! Version history -$! 0.01 20031020 First version to receive a number -$! 0.02 20031022 Added logic for defines with value -$! 0.03 20040309 Make sure local config file gets not deleted -$! 0.04 20041230 Also write include for configure run -$! 0.05 20050103 Add processing of "comment defines" -$CC_PROP_CHECK: -$ cc_prop = true -$ is_need = false -$ is_need = (f$extract(0,4,cdef) .eqs. "NEED") .or. (test_inv .eq. true) -$ if f$search(th) .eqs. "" then create 'th' -$ set message/nofac/noident/nosever/notext -$ on error then continue -$ cc 'tmpnam' -$ if .not. ($status) then cc_prop = false -$ on error then continue -$! The headers might lie about the capabilities of the RTL -$ link 'tmpnam',tmp.opt/opt -$ if .not. ($status) then cc_prop = false -$ set message/fac/ident/sever/text -$ on error then goto err_exit -$ delete/nolog 'tmpnam'.*;*/exclude='th' -$ if (cc_prop .and. .not. is_need) .or. - - (.not. cc_prop .and. is_need) -$ then -$ write sys$output "Checking for ''cdef'... yes" -$ if f$type('cdef_val'_yes) .nes. "" -$ then -$ if f$type('cdef_val'_yes) .eqs. "INTEGER" - - then call write_config f$fao("#define !AS !UL",cdef,'cdef_val'_yes) -$ if f$type('cdef_val'_yes) .eqs. "STRING" - - then call write_config f$fao("#define !AS !AS",cdef,'cdef_val'_yes) -$ else -$ call write_config f$fao("#define !AS 1",cdef) -$ endif -$ if (cdef .eqs. "HAVE_FSEEKO") .or. (cdef .eqs. "_LARGE_FILES") .or. - - (cdef .eqs. "_LARGEFILE64_SOURCE") then - - call write_config f$string("#define _LARGEFILE 1") -$ else -$ write sys$output "Checking for ''cdef'... no" -$ if (comm_h) -$ then - call write_config f$fao("/* !AS */",line) -$ else -$ if f$type('cdef_val'_no) .nes. "" -$ then -$ if f$type('cdef_val'_no) .eqs. "INTEGER" - - then call write_config f$fao("#define !AS !UL",cdef,'cdef_val'_no) -$ if f$type('cdef_val'_no) .eqs. "STRING" - - then call write_config f$fao("#define !AS !AS",cdef,'cdef_val'_no) -$ else -$ call write_config f$fao("#undef !AS",cdef) -$ endif -$ endif -$ endif -$ return -$!------------------------------------------------------------------------------ -$! -$! Check for properties of C/C++ compiler with multiple result values -$! -$! Version history -$! 0.01 20040127 First version -$! 0.02 20050103 Reconcile changes from cc_prop up to version 0.05 -$CC_MPROP_CHECK: -$ cc_prop = true -$ i = 1 -$ idel = 1 -$ MT_LOOP: -$ if f$type(result_'i') .eqs. "STRING" -$ then -$ set message/nofac/noident/nosever/notext -$ on error then continue -$ cc 'tmpnam'_'i' -$ if .not. ($status) then cc_prop = false -$ on error then continue -$! The headers might lie about the capabilities of the RTL -$ link 'tmpnam'_'i',tmp.opt/opt -$ if .not. ($status) then cc_prop = false -$ set message/fac/ident/sever/text -$ on error then goto err_exit -$ delete/nolog 'tmpnam'_'i'.*;* -$ if (cc_prop) -$ then -$ write sys$output "Checking for ''cdef'... ", mdef_'i' -$ if f$type(mdef_'i') .eqs. "INTEGER" - - then call write_config f$fao("#define !AS !UL",cdef,mdef_'i') -$ if f$type('cdef_val'_yes) .eqs. "STRING" - - then call write_config f$fao("#define !AS !AS",cdef,mdef_'i') -$ goto msym_clean -$ else -$ i = i + 1 -$ goto mt_loop -$ endif -$ endif -$ write sys$output "Checking for ''cdef'... no" -$ call write_config f$fao("#undef !AS",cdef) -$ MSYM_CLEAN: -$ if (idel .le. msym_max) -$ then -$ delete/sym mdef_'idel' -$ idel = idel + 1 -$ goto msym_clean -$ endif -$ return -$!------------------------------------------------------------------------------ -$! -$! Write configuration to both permanent and temporary config file -$! -$! Version history -$! 0.01 20031029 First version to receive a number -$! -$WRITE_CONFIG: SUBROUTINE -$ write aconf 'p1' -$ open/append confh 'th' -$ write confh 'p1' -$ close confh -$ENDSUBROUTINE -$!------------------------------------------------------------------------------ -$! -$! Analyze the project map file and create the symbol vector for a shareable -$! image from it -$! -$! Version history -$! 0.01 20120128 First version -$! 0.02 20120226 Add pre-load logic -$! -$ MAP_2_SHOPT: Subroutine -$! -$ SAY := "WRITE_ SYS$OUTPUT" -$! -$ IF F$SEARCH("''P1'") .EQS. "" -$ THEN -$ SAY "MAP_2_SHOPT-E-NOSUCHFILE: Error, inputfile ''p1' not available" -$ goto exit_m2s -$ ENDIF -$ IF "''P2'" .EQS. "" -$ THEN -$ SAY "MAP_2_SHOPT: Error, no output file provided" -$ goto exit_m2s -$ ENDIF -$! -$ module1 = "deflate#deflateEnd#deflateInit_#deflateParams#deflateSetDictionary" -$ module2 = "gzclose#gzerror#gzgetc#gzgets#gzopen#gzprintf#gzputc#gzputs#gzread" -$ module3 = "gzseek#gztell#inflate#inflateEnd#inflateInit_#inflateSetDictionary" -$ module4 = "inflateSync#uncompress#zlibVersion#compress" -$ open/read map 'p1 -$ if axp .or. ia64 -$ then -$ open/write aopt a.opt -$ open/write bopt b.opt -$ write aopt " CASE_SENSITIVE=YES" -$ write bopt "SYMBOL_VECTOR= (-" -$ mod_sym_num = 1 -$ MOD_SYM_LOOP: -$ if f$type(module'mod_sym_num') .nes. "" -$ then -$ mod_in = 0 -$ MOD_SYM_IN: -$ shared_proc = f$element(mod_in, "#", module'mod_sym_num') -$ if shared_proc .nes. "#" -$ then -$ write aopt f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)",- - f$edit(shared_proc,"upcase"),shared_proc) -$ write bopt f$fao("!AS=PROCEDURE,-",shared_proc) -$ mod_in = mod_in + 1 -$ goto mod_sym_in -$ endif -$ mod_sym_num = mod_sym_num + 1 -$ goto mod_sym_loop -$ endif -$MAP_LOOP: -$ read/end=map_end map line -$ if (f$locate("{",line).lt. f$length(line)) .or. - - (f$locate("global:", line) .lt. f$length(line)) -$ then -$ proc = true -$ goto map_loop -$ endif -$ if f$locate("}",line).lt. f$length(line) then proc = false -$ if f$locate("local:", line) .lt. f$length(line) then proc = false -$ if proc -$ then -$ shared_proc = f$edit(line,"collapse") -$ chop_semi = f$locate(";", shared_proc) -$ if chop_semi .lt. f$length(shared_proc) then - - shared_proc = f$extract(0, chop_semi, shared_proc) -$ write aopt f$fao(" symbol_vector=(!AS/!AS=PROCEDURE)",- - f$edit(shared_proc,"upcase"),shared_proc) -$ write bopt f$fao("!AS=PROCEDURE,-",shared_proc) -$ endif -$ goto map_loop -$MAP_END: -$ close/nolog aopt -$ close/nolog bopt -$ open/append libopt 'p2' -$ open/read aopt a.opt -$ open/read bopt b.opt -$ALOOP: -$ read/end=aloop_end aopt line -$ write libopt line -$ goto aloop -$ALOOP_END: -$ close/nolog aopt -$ sv = "" -$BLOOP: -$ read/end=bloop_end bopt svn -$ if (svn.nes."") -$ then -$ if (sv.nes."") then write libopt sv -$ sv = svn -$ endif -$ goto bloop -$BLOOP_END: -$ write libopt f$extract(0,f$length(sv)-2,sv), "-" -$ write libopt ")" -$ close/nolog bopt -$ delete/nolog/noconf a.opt;*,b.opt;* -$ else -$ if vax -$ then -$ open/append libopt 'p2' -$ mod_sym_num = 1 -$ VMOD_SYM_LOOP: -$ if f$type(module'mod_sym_num') .nes. "" -$ then -$ mod_in = 0 -$ VMOD_SYM_IN: -$ shared_proc = f$element(mod_in, "#", module'mod_sym_num') -$ if shared_proc .nes. "#" -$ then -$ write libopt f$fao("UNIVERSAL=!AS",- - f$edit(shared_proc,"upcase")) -$ mod_in = mod_in + 1 -$ goto vmod_sym_in -$ endif -$ mod_sym_num = mod_sym_num + 1 -$ goto vmod_sym_loop -$ endif -$VMAP_LOOP: -$ read/end=vmap_end map line -$ if (f$locate("{",line).lt. f$length(line)) .or. - - (f$locate("global:", line) .lt. f$length(line)) -$ then -$ proc = true -$ goto vmap_loop -$ endif -$ if f$locate("}",line).lt. f$length(line) then proc = false -$ if f$locate("local:", line) .lt. f$length(line) then proc = false -$ if proc -$ then -$ shared_proc = f$edit(line,"collapse") -$ chop_semi = f$locate(";", shared_proc) -$ if chop_semi .lt. f$length(shared_proc) then - - shared_proc = f$extract(0, chop_semi, shared_proc) -$ write libopt f$fao("UNIVERSAL=!AS",- - f$edit(shared_proc,"upcase")) -$ endif -$ goto vmap_loop -$VMAP_END: -$ else -$ write sys$output "Unknown Architecture (Not VAX, AXP, or IA64)" -$ write sys$output "No options file created" -$ endif -$ endif -$ EXIT_M2S: -$ close/nolog map -$ close/nolog libopt -$ endsubroutine diff --git a/io2d/src/3rd-party/zlib/msdos/Makefile.bor b/io2d/src/3rd-party/zlib/msdos/Makefile.bor deleted file mode 100644 index 3d12a2c..0000000 --- a/io2d/src/3rd-party/zlib/msdos/Makefile.bor +++ /dev/null @@ -1,115 +0,0 @@ -# Makefile for zlib -# Borland C++ -# Last updated: 15-Mar-2003 - -# To use, do "make -fmakefile.bor" -# To compile in small model, set below: MODEL=s - -# WARNING: the small model is supported but only for small values of -# MAX_WBITS and MAX_MEM_LEVEL. For example: -# -DMAX_WBITS=11 -DDEF_WBITS=11 -DMAX_MEM_LEVEL=3 -# If you wish to reduce the memory requirements (default 256K for big -# objects plus a few K), you can add to the LOC macro below: -# -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14 -# See zconf.h for details about the memory requirements. - -# ------------ Turbo C++, Borland C++ ------------ - -# Optional nonstandard preprocessor flags (e.g. -DMAX_MEM_LEVEL=7) -# should be added to the environment via "set LOCAL_ZLIB=-DFOO" or added -# to the declaration of LOC here: -LOC = $(LOCAL_ZLIB) - -# type for CPU required: 0: 8086, 1: 80186, 2: 80286, 3: 80386, etc. -CPU_TYP = 0 - -# memory model: one of s, m, c, l (small, medium, compact, large) -MODEL=l - -# replace bcc with tcc for Turbo C++ 1.0, with bcc32 for the 32 bit version -CC=bcc -LD=bcc -AR=tlib - -# compiler flags -# replace "-O2" by "-O -G -a -d" for Turbo C++ 1.0 -CFLAGS=-O2 -Z -m$(MODEL) $(LOC) - -LDFLAGS=-m$(MODEL) -f- - - -# variables -ZLIB_LIB = zlib_$(MODEL).lib - -OBJ1 = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj -OBJ2 = gzwrite.obj infback.obj inffast.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj -OBJP1 = +adler32.obj+compress.obj+crc32.obj+deflate.obj+gzclose.obj+gzlib.obj+gzread.obj -OBJP2 = +gzwrite.obj+infback.obj+inffast.obj+inflate.obj+inftrees.obj+trees.obj+uncompr.obj+zutil.obj - - -# targets -all: $(ZLIB_LIB) example.exe minigzip.exe - -.c.obj: - $(CC) -c $(CFLAGS) $*.c - -adler32.obj: adler32.c zlib.h zconf.h - -compress.obj: compress.c zlib.h zconf.h - -crc32.obj: crc32.c zlib.h zconf.h crc32.h - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - -gzclose.obj: gzclose.c zlib.h zconf.h gzguts.h - -gzlib.obj: gzlib.c zlib.h zconf.h gzguts.h - -gzread.obj: gzread.c zlib.h zconf.h gzguts.h - -gzwrite.obj: gzwrite.c zlib.h zconf.h gzguts.h - -infback.obj: infback.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h - -inflate.obj: inflate.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - -trees.obj: trees.c zutil.h zlib.h zconf.h deflate.h trees.h - -uncompr.obj: uncompr.c zlib.h zconf.h - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - -example.obj: test/example.c zlib.h zconf.h - -minigzip.obj: test/minigzip.c zlib.h zconf.h - - -# the command line is cut to fit in the MS-DOS 128 byte limit: -$(ZLIB_LIB): $(OBJ1) $(OBJ2) - -del $(ZLIB_LIB) - $(AR) $(ZLIB_LIB) $(OBJP1) - $(AR) $(ZLIB_LIB) $(OBJP2) - -example.exe: example.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) example.obj $(ZLIB_LIB) - -minigzip.exe: minigzip.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) minigzip.obj $(ZLIB_LIB) - -test: example.exe minigzip.exe - example - echo hello world | minigzip | minigzip -d - -clean: - -del *.obj - -del *.lib - -del *.exe - -del zlib_*.bak - -del foo.gz diff --git a/io2d/src/3rd-party/zlib/msdos/Makefile.dj2 b/io2d/src/3rd-party/zlib/msdos/Makefile.dj2 deleted file mode 100644 index 29b0395..0000000 --- a/io2d/src/3rd-party/zlib/msdos/Makefile.dj2 +++ /dev/null @@ -1,104 +0,0 @@ -# Makefile for zlib. Modified for djgpp v2.0 by F. J. Donahoe, 3/15/96. -# Copyright (C) 1995-1998 Jean-loup Gailly. -# For conditions of distribution and use, see copyright notice in zlib.h - -# To compile, or to compile and test, type: -# -# make -fmakefile.dj2; make test -fmakefile.dj2 -# -# To install libz.a, zconf.h and zlib.h in the djgpp directories, type: -# -# make install -fmakefile.dj2 -# -# after first defining LIBRARY_PATH and INCLUDE_PATH in djgpp.env as -# in the sample below if the pattern of the DJGPP distribution is to -# be followed. Remember that, while 'es around <=> are ignored in -# makefiles, they are *not* in batch files or in djgpp.env. -# - - - - - -# [make] -# INCLUDE_PATH=%\>;INCLUDE_PATH%%\DJDIR%\include -# LIBRARY_PATH=%\>;LIBRARY_PATH%%\DJDIR%\lib -# BUTT=-m486 -# - - - - - -# Alternately, these variables may be defined below, overriding the values -# in djgpp.env, as -# INCLUDE_PATH=c:\usr\include -# LIBRARY_PATH=c:\usr\lib - -CC=gcc - -#CFLAGS=-MMD -O -#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 -#CFLAGS=-MMD -g -DDEBUG -CFLAGS=-MMD -O3 $(BUTT) -Wall -Wwrite-strings -Wpointer-arith -Wconversion \ - -Wstrict-prototypes -Wmissing-prototypes - -# If cp.exe is available, replace "copy /Y" with "cp -fp" . -CP=copy /Y -# If gnu install.exe is available, replace $(CP) with ginstall. -INSTALL=$(CP) -# The default value of RM is "rm -f." If "rm.exe" is found, comment out: -RM=del -LDLIBS=-L. -lz -LD=$(CC) -s -o -LDSHARED=$(CC) - -INCL=zlib.h zconf.h -LIBS=libz.a - -AR=ar rcs - -prefix=/usr/local -exec_prefix = $(prefix) - -OBJS = adler32.o compress.o crc32.o gzclose.o gzlib.o gzread.o gzwrite.o \ - uncompr.o deflate.o trees.o zutil.o inflate.o infback.o inftrees.o inffast.o - -OBJA = -# to use the asm code: make OBJA=match.o - -TEST_OBJS = example.o minigzip.o - -all: example.exe minigzip.exe - -check: test -test: all - ./example - echo hello world | .\minigzip | .\minigzip -d - -%.o : %.c - $(CC) $(CFLAGS) -c $< -o $@ - -libz.a: $(OBJS) $(OBJA) - $(AR) $@ $(OBJS) $(OBJA) - -%.exe : %.o $(LIBS) - $(LD) $@ $< $(LDLIBS) - -# INCLUDE_PATH and LIBRARY_PATH were set for [make] in djgpp.env . - -.PHONY : uninstall clean - -install: $(INCL) $(LIBS) - -@if not exist $(INCLUDE_PATH)\nul mkdir $(INCLUDE_PATH) - -@if not exist $(LIBRARY_PATH)\nul mkdir $(LIBRARY_PATH) - $(INSTALL) zlib.h $(INCLUDE_PATH) - $(INSTALL) zconf.h $(INCLUDE_PATH) - $(INSTALL) libz.a $(LIBRARY_PATH) - -uninstall: - $(RM) $(INCLUDE_PATH)\zlib.h - $(RM) $(INCLUDE_PATH)\zconf.h - $(RM) $(LIBRARY_PATH)\libz.a - -clean: - $(RM) *.d - $(RM) *.o - $(RM) *.exe - $(RM) libz.a - $(RM) foo.gz - -DEPS := $(wildcard *.d) -ifneq ($(DEPS),) -include $(DEPS) -endif diff --git a/io2d/src/3rd-party/zlib/msdos/Makefile.emx b/io2d/src/3rd-party/zlib/msdos/Makefile.emx deleted file mode 100644 index 9c1b57a..0000000 --- a/io2d/src/3rd-party/zlib/msdos/Makefile.emx +++ /dev/null @@ -1,69 +0,0 @@ -# Makefile for zlib. Modified for emx 0.9c by Chr. Spieler, 6/17/98. -# Copyright (C) 1995-1998 Jean-loup Gailly. -# For conditions of distribution and use, see copyright notice in zlib.h - -# To compile, or to compile and test, type: -# -# make -fmakefile.emx; make test -fmakefile.emx -# - -CC=gcc - -#CFLAGS=-MMD -O -#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 -#CFLAGS=-MMD -g -DDEBUG -CFLAGS=-MMD -O3 $(BUTT) -Wall -Wwrite-strings -Wpointer-arith -Wconversion \ - -Wstrict-prototypes -Wmissing-prototypes - -# If cp.exe is available, replace "copy /Y" with "cp -fp" . -CP=copy /Y -# If gnu install.exe is available, replace $(CP) with ginstall. -INSTALL=$(CP) -# The default value of RM is "rm -f." If "rm.exe" is found, comment out: -RM=del -LDLIBS=-L. -lzlib -LD=$(CC) -s -o -LDSHARED=$(CC) - -INCL=zlib.h zconf.h -LIBS=zlib.a - -AR=ar rcs - -prefix=/usr/local -exec_prefix = $(prefix) - -OBJS = adler32.o compress.o crc32.o gzclose.o gzlib.o gzread.o gzwrite.o \ - uncompr.o deflate.o trees.o zutil.o inflate.o infback.o inftrees.o inffast.o - -TEST_OBJS = example.o minigzip.o - -all: example.exe minigzip.exe - -test: all - ./example - echo hello world | .\minigzip | .\minigzip -d - -%.o : %.c - $(CC) $(CFLAGS) -c $< -o $@ - -zlib.a: $(OBJS) - $(AR) $@ $(OBJS) - -%.exe : %.o $(LIBS) - $(LD) $@ $< $(LDLIBS) - - -.PHONY : clean - -clean: - $(RM) *.d - $(RM) *.o - $(RM) *.exe - $(RM) zlib.a - $(RM) foo.gz - -DEPS := $(wildcard *.d) -ifneq ($(DEPS),) -include $(DEPS) -endif diff --git a/io2d/src/3rd-party/zlib/msdos/Makefile.msc b/io2d/src/3rd-party/zlib/msdos/Makefile.msc deleted file mode 100644 index ae83786..0000000 --- a/io2d/src/3rd-party/zlib/msdos/Makefile.msc +++ /dev/null @@ -1,112 +0,0 @@ -# Makefile for zlib -# Microsoft C 5.1 or later -# Last updated: 19-Mar-2003 - -# To use, do "make makefile.msc" -# To compile in small model, set below: MODEL=S - -# If you wish to reduce the memory requirements (default 256K for big -# objects plus a few K), you can add to the LOC macro below: -# -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14 -# See zconf.h for details about the memory requirements. - -# ------------- Microsoft C 5.1 and later ------------- - -# Optional nonstandard preprocessor flags (e.g. -DMAX_MEM_LEVEL=7) -# should be added to the environment via "set LOCAL_ZLIB=-DFOO" or added -# to the declaration of LOC here: -LOC = $(LOCAL_ZLIB) - -# Type for CPU required: 0: 8086, 1: 80186, 2: 80286, 3: 80386, etc. -CPU_TYP = 0 - -# Memory model: one of S, M, C, L (small, medium, compact, large) -MODEL=L - -CC=cl -CFLAGS=-nologo -A$(MODEL) -G$(CPU_TYP) -W3 -Oait -Gs $(LOC) -#-Ox generates bad code with MSC 5.1 -LIB_CFLAGS=-Zl $(CFLAGS) - -LD=link -LDFLAGS=/noi/e/st:0x1500/noe/farcall/packcode -# "/farcall/packcode" are only useful for `large code' memory models -# but should be a "no-op" for small code models. - - -# variables -ZLIB_LIB = zlib_$(MODEL).lib - -OBJ1 = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj -OBJ2 = gzwrite.obj infback.obj inffast.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj - - -# targets -all: $(ZLIB_LIB) example.exe minigzip.exe - -.c.obj: - $(CC) -c $(LIB_CFLAGS) $*.c - -adler32.obj: adler32.c zlib.h zconf.h - -compress.obj: compress.c zlib.h zconf.h - -crc32.obj: crc32.c zlib.h zconf.h crc32.h - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - -gzclose.obj: gzclose.c zlib.h zconf.h gzguts.h - -gzlib.obj: gzlib.c zlib.h zconf.h gzguts.h - -gzread.obj: gzread.c zlib.h zconf.h gzguts.h - -gzwrite.obj: gzwrite.c zlib.h zconf.h gzguts.h - -infback.obj: infback.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h - -inflate.obj: inflate.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - -trees.obj: trees.c zutil.h zlib.h zconf.h deflate.h trees.h - -uncompr.obj: uncompr.c zlib.h zconf.h - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - -example.obj: test/example.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -minigzip.obj: test/minigzip.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - - -# the command line is cut to fit in the MS-DOS 128 byte limit: -$(ZLIB_LIB): $(OBJ1) $(OBJ2) - if exist $(ZLIB_LIB) del $(ZLIB_LIB) - lib $(ZLIB_LIB) $(OBJ1); - lib $(ZLIB_LIB) $(OBJ2); - -example.exe: example.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) example.obj,,,$(ZLIB_LIB); - -minigzip.exe: minigzip.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) minigzip.obj,,,$(ZLIB_LIB); - -test: example.exe minigzip.exe - example - echo hello world | minigzip | minigzip -d - -clean: - -del *.obj - -del *.lib - -del *.exe - -del *.map - -del zlib_*.bak - -del foo.gz diff --git a/io2d/src/3rd-party/zlib/msdos/Makefile.tc b/io2d/src/3rd-party/zlib/msdos/Makefile.tc deleted file mode 100644 index 5aec82a..0000000 --- a/io2d/src/3rd-party/zlib/msdos/Makefile.tc +++ /dev/null @@ -1,100 +0,0 @@ -# Makefile for zlib -# Turbo C 2.01, Turbo C++ 1.01 -# Last updated: 15-Mar-2003 - -# To use, do "make -fmakefile.tc" -# To compile in small model, set below: MODEL=s - -# WARNING: the small model is supported but only for small values of -# MAX_WBITS and MAX_MEM_LEVEL. For example: -# -DMAX_WBITS=11 -DMAX_MEM_LEVEL=3 -# If you wish to reduce the memory requirements (default 256K for big -# objects plus a few K), you can add to CFLAGS below: -# -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14 -# See zconf.h for details about the memory requirements. - -# ------------ Turbo C 2.01, Turbo C++ 1.01 ------------ -MODEL=l -CC=tcc -LD=tcc -AR=tlib -# CFLAGS=-O2 -G -Z -m$(MODEL) -DMAX_WBITS=11 -DMAX_MEM_LEVEL=3 -CFLAGS=-O2 -G -Z -m$(MODEL) -LDFLAGS=-m$(MODEL) -f- - - -# variables -ZLIB_LIB = zlib_$(MODEL).lib - -OBJ1 = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj -OBJ2 = gzwrite.obj infback.obj inffast.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj -OBJP1 = +adler32.obj+compress.obj+crc32.obj+deflate.obj+gzclose.obj+gzlib.obj+gzread.obj -OBJP2 = +gzwrite.obj+infback.obj+inffast.obj+inflate.obj+inftrees.obj+trees.obj+uncompr.obj+zutil.obj - - -# targets -all: $(ZLIB_LIB) example.exe minigzip.exe - -.c.obj: - $(CC) -c $(CFLAGS) $*.c - -adler32.obj: adler32.c zlib.h zconf.h - -compress.obj: compress.c zlib.h zconf.h - -crc32.obj: crc32.c zlib.h zconf.h crc32.h - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - -gzclose.obj: gzclose.c zlib.h zconf.h gzguts.h - -gzlib.obj: gzlib.c zlib.h zconf.h gzguts.h - -gzread.obj: gzread.c zlib.h zconf.h gzguts.h - -gzwrite.obj: gzwrite.c zlib.h zconf.h gzguts.h - -infback.obj: infback.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h - -inflate.obj: inflate.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - -trees.obj: trees.c zutil.h zlib.h zconf.h deflate.h trees.h - -uncompr.obj: uncompr.c zlib.h zconf.h - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - -example.obj: test/example.c zlib.h zconf.h - -minigzip.obj: test/minigzip.c zlib.h zconf.h - - -# the command line is cut to fit in the MS-DOS 128 byte limit: -$(ZLIB_LIB): $(OBJ1) $(OBJ2) - -del $(ZLIB_LIB) - $(AR) $(ZLIB_LIB) $(OBJP1) - $(AR) $(ZLIB_LIB) $(OBJP2) - -example.exe: example.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) example.obj $(ZLIB_LIB) - -minigzip.exe: minigzip.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) minigzip.obj $(ZLIB_LIB) - -test: example.exe minigzip.exe - example - echo hello world | minigzip | minigzip -d - -clean: - -del *.obj - -del *.lib - -del *.exe - -del zlib_*.bak - -del foo.gz diff --git a/io2d/src/3rd-party/zlib/nintendods/Makefile b/io2d/src/3rd-party/zlib/nintendods/Makefile deleted file mode 100644 index 21337d0..0000000 --- a/io2d/src/3rd-party/zlib/nintendods/Makefile +++ /dev/null @@ -1,126 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -include $(DEVKITARM)/ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -#--------------------------------------------------------------------------------- -TARGET := $(shell basename $(CURDIR)) -BUILD := build -SOURCES := ../../ -DATA := data -INCLUDES := include - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -mthumb -mthumb-interwork - -CFLAGS := -Wall -O2\ - -march=armv5te -mtune=arm946e-s \ - -fomit-frame-pointer -ffast-math \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM9 -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions - -ASFLAGS := $(ARCH) -march=armv5te -mtune=arm946e-s -LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(LIBNDS) - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/lib/libz.a - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - @[ -d $@ ] || mkdir -p include - @cp ../../*.h include - -lib: - @[ -d $@ ] || mkdir -p $@ - -$(BUILD): lib - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) lib - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -$(OUTPUT) : $(OFILES) - -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/io2d/src/3rd-party/zlib/nintendods/README b/io2d/src/3rd-party/zlib/nintendods/README deleted file mode 100644 index ba7a37d..0000000 --- a/io2d/src/3rd-party/zlib/nintendods/README +++ /dev/null @@ -1,5 +0,0 @@ -This Makefile requires devkitARM (http://www.devkitpro.org/category/devkitarm/) and works inside "contrib/nds". It is based on a devkitARM template. - -Eduardo Costa -January 3, 2009 - diff --git a/io2d/src/3rd-party/zlib/old/Makefile.emx b/io2d/src/3rd-party/zlib/old/Makefile.emx deleted file mode 100644 index 4d6ab0e..0000000 --- a/io2d/src/3rd-party/zlib/old/Makefile.emx +++ /dev/null @@ -1,69 +0,0 @@ -# Makefile for zlib. Modified for emx/rsxnt by Chr. Spieler, 6/16/98. -# Copyright (C) 1995-1998 Jean-loup Gailly. -# For conditions of distribution and use, see copyright notice in zlib.h - -# To compile, or to compile and test, type: -# -# make -fmakefile.emx; make test -fmakefile.emx -# - -CC=gcc -Zwin32 - -#CFLAGS=-MMD -O -#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 -#CFLAGS=-MMD -g -DDEBUG -CFLAGS=-MMD -O3 $(BUTT) -Wall -Wwrite-strings -Wpointer-arith -Wconversion \ - -Wstrict-prototypes -Wmissing-prototypes - -# If cp.exe is available, replace "copy /Y" with "cp -fp" . -CP=copy /Y -# If gnu install.exe is available, replace $(CP) with ginstall. -INSTALL=$(CP) -# The default value of RM is "rm -f." If "rm.exe" is found, comment out: -RM=del -LDLIBS=-L. -lzlib -LD=$(CC) -s -o -LDSHARED=$(CC) - -INCL=zlib.h zconf.h -LIBS=zlib.a - -AR=ar rcs - -prefix=/usr/local -exec_prefix = $(prefix) - -OBJS = adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o \ - gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o - -TEST_OBJS = example.o minigzip.o - -all: example.exe minigzip.exe - -test: all - ./example - echo hello world | .\minigzip | .\minigzip -d - -%.o : %.c - $(CC) $(CFLAGS) -c $< -o $@ - -zlib.a: $(OBJS) - $(AR) $@ $(OBJS) - -%.exe : %.o $(LIBS) - $(LD) $@ $< $(LDLIBS) - - -.PHONY : clean - -clean: - $(RM) *.d - $(RM) *.o - $(RM) *.exe - $(RM) zlib.a - $(RM) foo.gz - -DEPS := $(wildcard *.d) -ifneq ($(DEPS),) -include $(DEPS) -endif diff --git a/io2d/src/3rd-party/zlib/old/Makefile.riscos b/io2d/src/3rd-party/zlib/old/Makefile.riscos deleted file mode 100644 index 57e29d3..0000000 --- a/io2d/src/3rd-party/zlib/old/Makefile.riscos +++ /dev/null @@ -1,151 +0,0 @@ -# Project: zlib_1_03 -# Patched for zlib 1.1.2 rw@shadow.org.uk 19980430 -# test works out-of-the-box, installs `somewhere' on demand - -# Toolflags: -CCflags = -c -depend !Depend -IC: -g -throwback -DRISCOS -fah -C++flags = -c -depend !Depend -IC: -throwback -Linkflags = -aif -c++ -o $@ -ObjAsmflags = -throwback -NoCache -depend !Depend -CMHGflags = -LibFileflags = -c -l -o $@ -Squeezeflags = -o $@ - -# change the line below to where _you_ want the library installed. -libdest = lib:zlib - -# Final targets: -@.lib: @.o.adler32 @.o.compress @.o.crc32 @.o.deflate @.o.gzio \ - @.o.infblock @.o.infcodes @.o.inffast @.o.inflate @.o.inftrees @.o.infutil @.o.trees \ - @.o.uncompr @.o.zutil - LibFile $(LibFileflags) @.o.adler32 @.o.compress @.o.crc32 @.o.deflate \ - @.o.gzio @.o.infblock @.o.infcodes @.o.inffast @.o.inflate @.o.inftrees @.o.infutil \ - @.o.trees @.o.uncompr @.o.zutil -test: @.minigzip @.example @.lib - @copy @.lib @.libc A~C~DF~L~N~P~Q~RS~TV - @echo running tests: hang on. - @/@.minigzip -f -9 libc - @/@.minigzip -d libc-gz - @/@.minigzip -f -1 libc - @/@.minigzip -d libc-gz - @/@.minigzip -h -9 libc - @/@.minigzip -d libc-gz - @/@.minigzip -h -1 libc - @/@.minigzip -d libc-gz - @/@.minigzip -9 libc - @/@.minigzip -d libc-gz - @/@.minigzip -1 libc - @/@.minigzip -d libc-gz - @diff @.lib @.libc - @echo that should have reported '@.lib and @.libc identical' if you have diff. - @/@.example @.fred @.fred - @echo that will have given lots of hello!'s. - -@.minigzip: @.o.minigzip @.lib C:o.Stubs - Link $(Linkflags) @.o.minigzip @.lib C:o.Stubs -@.example: @.o.example @.lib C:o.Stubs - Link $(Linkflags) @.o.example @.lib C:o.Stubs - -install: @.lib - cdir $(libdest) - cdir $(libdest).h - @copy @.h.zlib $(libdest).h.zlib A~C~DF~L~N~P~Q~RS~TV - @copy @.h.zconf $(libdest).h.zconf A~C~DF~L~N~P~Q~RS~TV - @copy @.lib $(libdest).lib A~C~DF~L~N~P~Q~RS~TV - @echo okay, installed zlib in $(libdest) - -clean:; remove @.minigzip - remove @.example - remove @.libc - -wipe @.o.* F~r~cV - remove @.fred - -# User-editable dependencies: -.c.o: - cc $(ccflags) -o $@ $< - -# Static dependencies: - -# Dynamic dependencies: -o.example: c.example -o.example: h.zlib -o.example: h.zconf -o.minigzip: c.minigzip -o.minigzip: h.zlib -o.minigzip: h.zconf -o.adler32: c.adler32 -o.adler32: h.zlib -o.adler32: h.zconf -o.compress: c.compress -o.compress: h.zlib -o.compress: h.zconf -o.crc32: c.crc32 -o.crc32: h.zlib -o.crc32: h.zconf -o.deflate: c.deflate -o.deflate: h.deflate -o.deflate: h.zutil -o.deflate: h.zlib -o.deflate: h.zconf -o.gzio: c.gzio -o.gzio: h.zutil -o.gzio: h.zlib -o.gzio: h.zconf -o.infblock: c.infblock -o.infblock: h.zutil -o.infblock: h.zlib -o.infblock: h.zconf -o.infblock: h.infblock -o.infblock: h.inftrees -o.infblock: h.infcodes -o.infblock: h.infutil -o.infcodes: c.infcodes -o.infcodes: h.zutil -o.infcodes: h.zlib -o.infcodes: h.zconf -o.infcodes: h.inftrees -o.infcodes: h.infblock -o.infcodes: h.infcodes -o.infcodes: h.infutil -o.infcodes: h.inffast -o.inffast: c.inffast -o.inffast: h.zutil -o.inffast: h.zlib -o.inffast: h.zconf -o.inffast: h.inftrees -o.inffast: h.infblock -o.inffast: h.infcodes -o.inffast: h.infutil -o.inffast: h.inffast -o.inflate: c.inflate -o.inflate: h.zutil -o.inflate: h.zlib -o.inflate: h.zconf -o.inflate: h.infblock -o.inftrees: c.inftrees -o.inftrees: h.zutil -o.inftrees: h.zlib -o.inftrees: h.zconf -o.inftrees: h.inftrees -o.inftrees: h.inffixed -o.infutil: c.infutil -o.infutil: h.zutil -o.infutil: h.zlib -o.infutil: h.zconf -o.infutil: h.infblock -o.infutil: h.inftrees -o.infutil: h.infcodes -o.infutil: h.infutil -o.trees: c.trees -o.trees: h.deflate -o.trees: h.zutil -o.trees: h.zlib -o.trees: h.zconf -o.trees: h.trees -o.uncompr: c.uncompr -o.uncompr: h.zlib -o.uncompr: h.zconf -o.zutil: c.zutil -o.zutil: h.zutil -o.zutil: h.zlib -o.zutil: h.zconf diff --git a/io2d/src/3rd-party/zlib/old/README b/io2d/src/3rd-party/zlib/old/README deleted file mode 100644 index 800bf07..0000000 --- a/io2d/src/3rd-party/zlib/old/README +++ /dev/null @@ -1,3 +0,0 @@ -This directory contains files that have not been updated for zlib 1.2.x - -(Volunteers are encouraged to help clean this up. Thanks.) diff --git a/io2d/src/3rd-party/zlib/old/descrip.mms b/io2d/src/3rd-party/zlib/old/descrip.mms deleted file mode 100644 index 7066da5..0000000 --- a/io2d/src/3rd-party/zlib/old/descrip.mms +++ /dev/null @@ -1,48 +0,0 @@ -# descrip.mms: MMS description file for building zlib on VMS -# written by Martin P.J. Zinser - -cc_defs = -c_deb = - -.ifdef __DECC__ -pref = /prefix=all -.endif - -OBJS = adler32.obj, compress.obj, crc32.obj, gzio.obj, uncompr.obj,\ - deflate.obj, trees.obj, zutil.obj, inflate.obj, infblock.obj,\ - inftrees.obj, infcodes.obj, infutil.obj, inffast.obj - -CFLAGS= $(C_DEB) $(CC_DEFS) $(PREF) - -all : example.exe minigzip.exe - @ write sys$output " Example applications available" -libz.olb : libz.olb($(OBJS)) - @ write sys$output " libz available" - -example.exe : example.obj libz.olb - link example,libz.olb/lib - -minigzip.exe : minigzip.obj libz.olb - link minigzip,libz.olb/lib,x11vms:xvmsutils.olb/lib - -clean : - delete *.obj;*,libz.olb;* - - -# Other dependencies. -adler32.obj : zutil.h zlib.h zconf.h -compress.obj : zlib.h zconf.h -crc32.obj : zutil.h zlib.h zconf.h -deflate.obj : deflate.h zutil.h zlib.h zconf.h -example.obj : zlib.h zconf.h -gzio.obj : zutil.h zlib.h zconf.h -infblock.obj : zutil.h zlib.h zconf.h infblock.h inftrees.h infcodes.h infutil.h -infcodes.obj : zutil.h zlib.h zconf.h inftrees.h infutil.h infcodes.h inffast.h -inffast.obj : zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h -inflate.obj : zutil.h zlib.h zconf.h infblock.h -inftrees.obj : zutil.h zlib.h zconf.h inftrees.h -infutil.obj : zutil.h zlib.h zconf.h inftrees.h infutil.h -minigzip.obj : zlib.h zconf.h -trees.obj : deflate.h zutil.h zlib.h zconf.h -uncompr.obj : zlib.h zconf.h -zutil.obj : zutil.h zlib.h zconf.h diff --git a/io2d/src/3rd-party/zlib/old/os2/Makefile.os2 b/io2d/src/3rd-party/zlib/old/os2/Makefile.os2 deleted file mode 100644 index a105aaa..0000000 --- a/io2d/src/3rd-party/zlib/old/os2/Makefile.os2 +++ /dev/null @@ -1,136 +0,0 @@ -# Makefile for zlib under OS/2 using GCC (PGCC) -# For conditions of distribution and use, see copyright notice in zlib.h - -# To compile and test, type: -# cp Makefile.os2 .. -# cd .. -# make -f Makefile.os2 test - -# This makefile will build a static library z.lib, a shared library -# z.dll and a import library zdll.lib. You can use either z.lib or -# zdll.lib by specifying either -lz or -lzdll on gcc's command line - -CC=gcc -Zomf -s - -CFLAGS=-O6 -Wall -#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 -#CFLAGS=-g -DDEBUG -#CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \ -# -Wstrict-prototypes -Wmissing-prototypes - -#################### BUG WARNING: ##################### -## infcodes.c hits a bug in pgcc-1.0, so you have to use either -## -O# where # <= 4 or one of (-fno-ommit-frame-pointer or -fno-force-mem) -## This bug is reportedly fixed in pgcc >1.0, but this was not tested -CFLAGS+=-fno-force-mem - -LDFLAGS=-s -L. -lzdll -Zcrtdll -LDSHARED=$(CC) -s -Zomf -Zdll -Zcrtdll - -VER=1.1.0 -ZLIB=z.lib -SHAREDLIB=z.dll -SHAREDLIBIMP=zdll.lib -LIBS=$(ZLIB) $(SHAREDLIB) $(SHAREDLIBIMP) - -AR=emxomfar cr -IMPLIB=emximp -RANLIB=echo -TAR=tar -SHELL=bash - -prefix=/usr/local -exec_prefix = $(prefix) - -OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \ - zutil.o inflate.o infblock.o inftrees.o infcodes.o infutil.o inffast.o - -TEST_OBJS = example.o minigzip.o - -DISTFILES = README INDEX ChangeLog configure Make*[a-z0-9] *.[ch] descrip.mms \ - algorithm.txt zlib.3 msdos/Make*[a-z0-9] msdos/zlib.def msdos/zlib.rc \ - nt/Makefile.nt nt/zlib.dnt contrib/README.contrib contrib/*.txt \ - contrib/asm386/*.asm contrib/asm386/*.c \ - contrib/asm386/*.bat contrib/asm386/zlibvc.d?? contrib/iostream/*.cpp \ - contrib/iostream/*.h contrib/iostream2/*.h contrib/iostream2/*.cpp \ - contrib/untgz/Makefile contrib/untgz/*.c contrib/untgz/*.w32 - -all: example.exe minigzip.exe - -test: all - @LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \ - echo hello world | ./minigzip | ./minigzip -d || \ - echo ' *** minigzip test FAILED ***' ; \ - if ./example; then \ - echo ' *** zlib test OK ***'; \ - else \ - echo ' *** zlib test FAILED ***'; \ - fi - -$(ZLIB): $(OBJS) - $(AR) $@ $(OBJS) - -@ ($(RANLIB) $@ || true) >/dev/null 2>&1 - -$(SHAREDLIB): $(OBJS) os2/z.def - $(LDSHARED) -o $@ $^ - -$(SHAREDLIBIMP): os2/z.def - $(IMPLIB) -o $@ $^ - -example.exe: example.o $(LIBS) - $(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS) - -minigzip.exe: minigzip.o $(LIBS) - $(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS) - -clean: - rm -f *.o *~ example minigzip libz.a libz.so* foo.gz - -distclean: clean - -zip: - mv Makefile Makefile~; cp -p Makefile.in Makefile - rm -f test.c ztest*.c - v=`sed -n -e 's/\.//g' -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`;\ - zip -ul9 zlib$$v $(DISTFILES) - mv Makefile~ Makefile - -dist: - mv Makefile Makefile~; cp -p Makefile.in Makefile - rm -f test.c ztest*.c - d=zlib-`sed -n '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`;\ - rm -f $$d.tar.gz; \ - if test ! -d ../$$d; then rm -f ../$$d; ln -s `pwd` ../$$d; fi; \ - files=""; \ - for f in $(DISTFILES); do files="$$files $$d/$$f"; done; \ - cd ..; \ - GZIP=-9 $(TAR) chofz $$d/$$d.tar.gz $$files; \ - if test ! -d $$d; then rm -f $$d; fi - mv Makefile~ Makefile - -tags: - etags *.[ch] - -depend: - makedepend -- $(CFLAGS) -- *.[ch] - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -adler32.o: zlib.h zconf.h -compress.o: zlib.h zconf.h -crc32.o: zlib.h zconf.h -deflate.o: deflate.h zutil.h zlib.h zconf.h -example.o: zlib.h zconf.h -gzio.o: zutil.h zlib.h zconf.h -infblock.o: infblock.h inftrees.h infcodes.h infutil.h zutil.h zlib.h zconf.h -infcodes.o: zutil.h zlib.h zconf.h -infcodes.o: inftrees.h infblock.h infcodes.h infutil.h inffast.h -inffast.o: zutil.h zlib.h zconf.h inftrees.h -inffast.o: infblock.h infcodes.h infutil.h inffast.h -inflate.o: zutil.h zlib.h zconf.h infblock.h -inftrees.o: zutil.h zlib.h zconf.h inftrees.h -infutil.o: zutil.h zlib.h zconf.h infblock.h inftrees.h infcodes.h infutil.h -minigzip.o: zlib.h zconf.h -trees.o: deflate.h zutil.h zlib.h zconf.h trees.h -uncompr.o: zlib.h zconf.h -zutil.o: zutil.h zlib.h zconf.h diff --git a/io2d/src/3rd-party/zlib/old/os2/zlib.def b/io2d/src/3rd-party/zlib/old/os2/zlib.def deleted file mode 100644 index 4c753f1..0000000 --- a/io2d/src/3rd-party/zlib/old/os2/zlib.def +++ /dev/null @@ -1,51 +0,0 @@ -; -; Slightly modified version of ../nt/zlib.dnt :-) -; - -LIBRARY Z -DESCRIPTION "Zlib compression library for OS/2" -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE - -EXPORTS - adler32 - compress - crc32 - deflate - deflateCopy - deflateEnd - deflateInit2_ - deflateInit_ - deflateParams - deflateReset - deflateSetDictionary - gzclose - gzdopen - gzerror - gzflush - gzopen - gzread - gzwrite - inflate - inflateEnd - inflateInit2_ - inflateInit_ - inflateReset - inflateSetDictionary - inflateSync - uncompress - zlibVersion - gzprintf - gzputc - gzgetc - gzseek - gzrewind - gztell - gzeof - gzsetparams - zError - inflateSyncPoint - get_crc_table - compress2 - gzputs - gzgets diff --git a/io2d/src/3rd-party/zlib/old/visual-basic.txt b/io2d/src/3rd-party/zlib/old/visual-basic.txt deleted file mode 100644 index 57efe58..0000000 --- a/io2d/src/3rd-party/zlib/old/visual-basic.txt +++ /dev/null @@ -1,160 +0,0 @@ -See below some functions declarations for Visual Basic. - -Frequently Asked Question: - -Q: Each time I use the compress function I get the -5 error (not enough - room in the output buffer). - -A: Make sure that the length of the compressed buffer is passed by - reference ("as any"), not by value ("as long"). Also check that - before the call of compress this length is equal to the total size of - the compressed buffer and not zero. - - -From: "Jon Caruana" -Subject: Re: How to port zlib declares to vb? -Date: Mon, 28 Oct 1996 18:33:03 -0600 - -Got the answer! (I haven't had time to check this but it's what I got, and -looks correct): - -He has the following routines working: - compress - uncompress - gzopen - gzwrite - gzread - gzclose - -Declares follow: (Quoted from Carlos Rios , in Vb4 form) - -#If Win16 Then 'Use Win16 calls. -Declare Function compress Lib "ZLIB.DLL" (ByVal compr As - String, comprLen As Any, ByVal buf As String, ByVal buflen - As Long) As Integer -Declare Function uncompress Lib "ZLIB.DLL" (ByVal uncompr - As String, uncomprLen As Any, ByVal compr As String, ByVal - lcompr As Long) As Integer -Declare Function gzopen Lib "ZLIB.DLL" (ByVal filePath As - String, ByVal mode As String) As Long -Declare Function gzread Lib "ZLIB.DLL" (ByVal file As - Long, ByVal uncompr As String, ByVal uncomprLen As Integer) - As Integer -Declare Function gzwrite Lib "ZLIB.DLL" (ByVal file As - Long, ByVal uncompr As String, ByVal uncomprLen As Integer) - As Integer -Declare Function gzclose Lib "ZLIB.DLL" (ByVal file As - Long) As Integer -#Else -Declare Function compress Lib "ZLIB32.DLL" - (ByVal compr As String, comprLen As Any, ByVal buf As - String, ByVal buflen As Long) As Integer -Declare Function uncompress Lib "ZLIB32.DLL" - (ByVal uncompr As String, uncomprLen As Any, ByVal compr As - String, ByVal lcompr As Long) As Long -Declare Function gzopen Lib "ZLIB32.DLL" - (ByVal file As String, ByVal mode As String) As Long -Declare Function gzread Lib "ZLIB32.DLL" - (ByVal file As Long, ByVal uncompr As String, ByVal - uncomprLen As Long) As Long -Declare Function gzwrite Lib "ZLIB32.DLL" - (ByVal file As Long, ByVal uncompr As String, ByVal - uncomprLen As Long) As Long -Declare Function gzclose Lib "ZLIB32.DLL" - (ByVal file As Long) As Long -#End If - --Jon Caruana -jon-net@usa.net -Microsoft Sitebuilder Network Level 1 Member - HTML Writer's Guild Member - - -Here is another example from Michael that he -says conforms to the VB guidelines, and that solves the problem of not -knowing the uncompressed size by storing it at the end of the file: - -'Calling the functions: -'bracket meaning: [optional] {Range of possible values} -'Call subCompressFile( [, , [level of compression {1..9}]]) -'Call subUncompressFile() - -Option Explicit -Private lngpvtPcnSml As Long 'Stores value for 'lngPercentSmaller' -Private Const SUCCESS As Long = 0 -Private Const strFilExt As String = ".cpr" -Private Declare Function lngfncCpr Lib "zlib.dll" Alias "compress2" (ByRef -dest As Any, ByRef destLen As Any, ByRef src As Any, ByVal srcLen As Long, -ByVal level As Integer) As Long -Private Declare Function lngfncUcp Lib "zlib.dll" Alias "uncompress" (ByRef -dest As Any, ByRef destLen As Any, ByRef src As Any, ByVal srcLen As Long) -As Long - -Public Sub subCompressFile(ByVal strargOriFilPth As String, Optional ByVal -strargCprFilPth As String, Optional ByVal intLvl As Integer = 9) - Dim strCprPth As String - Dim lngOriSiz As Long - Dim lngCprSiz As Long - Dim bytaryOri() As Byte - Dim bytaryCpr() As Byte - lngOriSiz = FileLen(strargOriFilPth) - ReDim bytaryOri(lngOriSiz - 1) - Open strargOriFilPth For Binary Access Read As #1 - Get #1, , bytaryOri() - Close #1 - strCprPth = IIf(strargCprFilPth = "", strargOriFilPth, strargCprFilPth) -'Select file path and name - strCprPth = strCprPth & IIf(Right(strCprPth, Len(strFilExt)) = -strFilExt, "", strFilExt) 'Add file extension if not exists - lngCprSiz = (lngOriSiz * 1.01) + 12 'Compression needs temporary a bit -more space then original file size - ReDim bytaryCpr(lngCprSiz - 1) - If lngfncCpr(bytaryCpr(0), lngCprSiz, bytaryOri(0), lngOriSiz, intLvl) = -SUCCESS Then - lngpvtPcnSml = (1# - (lngCprSiz / lngOriSiz)) * 100 - ReDim Preserve bytaryCpr(lngCprSiz - 1) - Open strCprPth For Binary Access Write As #1 - Put #1, , bytaryCpr() - Put #1, , lngOriSiz 'Add the the original size value to the end -(last 4 bytes) - Close #1 - Else - MsgBox "Compression error" - End If - Erase bytaryCpr - Erase bytaryOri -End Sub - -Public Sub subUncompressFile(ByVal strargFilPth As String) - Dim bytaryCpr() As Byte - Dim bytaryOri() As Byte - Dim lngOriSiz As Long - Dim lngCprSiz As Long - Dim strOriPth As String - lngCprSiz = FileLen(strargFilPth) - ReDim bytaryCpr(lngCprSiz - 1) - Open strargFilPth For Binary Access Read As #1 - Get #1, , bytaryCpr() - Close #1 - 'Read the original file size value: - lngOriSiz = bytaryCpr(lngCprSiz - 1) * (2 ^ 24) _ - + bytaryCpr(lngCprSiz - 2) * (2 ^ 16) _ - + bytaryCpr(lngCprSiz - 3) * (2 ^ 8) _ - + bytaryCpr(lngCprSiz - 4) - ReDim Preserve bytaryCpr(lngCprSiz - 5) 'Cut of the original size value - ReDim bytaryOri(lngOriSiz - 1) - If lngfncUcp(bytaryOri(0), lngOriSiz, bytaryCpr(0), lngCprSiz) = SUCCESS -Then - strOriPth = Left(strargFilPth, Len(strargFilPth) - Len(strFilExt)) - Open strOriPth For Binary Access Write As #1 - Put #1, , bytaryOri() - Close #1 - Else - MsgBox "Uncompression error" - End If - Erase bytaryCpr - Erase bytaryOri -End Sub -Public Property Get lngPercentSmaller() As Long - lngPercentSmaller = lngpvtPcnSml -End Property diff --git a/io2d/src/3rd-party/zlib/qnx/package.qpg b/io2d/src/3rd-party/zlib/qnx/package.qpg deleted file mode 100644 index aebf6e3..0000000 --- a/io2d/src/3rd-party/zlib/qnx/package.qpg +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Library - - Medium - - 2.0 - - - - zlib - zlib - alain.bonnefoy@icbt.com - Public - public - www.gzip.org/zlib - - - Jean-Loup Gailly,Mark Adler - www.gzip.org/zlib - - zlib@gzip.org - - - A massively spiffy yet delicately unobtrusive compression library. - zlib is designed to be a free, general-purpose, legally unencumbered, lossless data compression library for use on virtually any computer hardware and operating system. - http://www.gzip.org/zlib - - - - - 1.2.8 - Medium - Stable - - - - - - - No License - - - - Software Development/Libraries and Extensions/C Libraries - zlib,compression - qnx6 - qnx6 - None - Developer - - - - - - - - - - - - - - Install - Post - No - Ignore - - No - Optional - - - - - - - - - - - - - InstallOver - zlib - - - - - - - - - - - - - InstallOver - zlib-dev - - - - - - - - - diff --git a/io2d/src/3rd-party/zlib/test/example.c b/io2d/src/3rd-party/zlib/test/example.c deleted file mode 100644 index 138a699..0000000 --- a/io2d/src/3rd-party/zlib/test/example.c +++ /dev/null @@ -1,601 +0,0 @@ -/* example.c -- usage example of the zlib compression library - * Copyright (C) 1995-2006, 2011 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#include "zlib.h" -#include - -#ifdef STDC -# include -# include -#endif - -#if defined(VMS) || defined(RISCOS) -# define TESTFILE "foo-gz" -#else -# define TESTFILE "foo.gz" -#endif - -#define CHECK_ERR(err, msg) { \ - if (err != Z_OK) { \ - fprintf(stderr, "%s error: %d\n", msg, err); \ - exit(1); \ - } \ -} - -z_const char hello[] = "hello, hello!"; -/* "hello world" would be more standard, but the repeated "hello" - * stresses the compression code better, sorry... - */ - -const char dictionary[] = "hello"; -uLong dictId; /* Adler32 value of the dictionary */ - -void test_deflate OF((Byte *compr, uLong comprLen)); -void test_inflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_large_deflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_large_inflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_flush OF((Byte *compr, uLong *comprLen)); -void test_sync OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_dict_deflate OF((Byte *compr, uLong comprLen)); -void test_dict_inflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -int main OF((int argc, char *argv[])); - - -#ifdef Z_SOLO - -void *myalloc OF((void *, unsigned, unsigned)); -void myfree OF((void *, void *)); - -void *myalloc(q, n, m) - void *q; - unsigned n, m; -{ - q = Z_NULL; - return calloc(n, m); -} - -void myfree(void *q, void *p) -{ - q = Z_NULL; - free(p); -} - -static alloc_func zalloc = myalloc; -static free_func zfree = myfree; - -#else /* !Z_SOLO */ - -static alloc_func zalloc = (alloc_func)0; -static free_func zfree = (free_func)0; - -void test_compress OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_gzio OF((const char *fname, - Byte *uncompr, uLong uncomprLen)); - -/* =========================================================================== - * Test compress() and uncompress() - */ -void test_compress(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - int err; - uLong len = (uLong)strlen(hello)+1; - - err = compress(compr, &comprLen, (const Bytef*)hello, len); - CHECK_ERR(err, "compress"); - - strcpy((char*)uncompr, "garbage"); - - err = uncompress(uncompr, &uncomprLen, compr, comprLen); - CHECK_ERR(err, "uncompress"); - - if (strcmp((char*)uncompr, hello)) { - fprintf(stderr, "bad uncompress\n"); - exit(1); - } else { - printf("uncompress(): %s\n", (char *)uncompr); - } -} - -/* =========================================================================== - * Test read/write of .gz files - */ -void test_gzio(fname, uncompr, uncomprLen) - const char *fname; /* compressed file name */ - Byte *uncompr; - uLong uncomprLen; -{ -#ifdef NO_GZCOMPRESS - fprintf(stderr, "NO_GZCOMPRESS -- gz* functions cannot compress\n"); -#else - int err; - int len = (int)strlen(hello)+1; - gzFile file; - z_off_t pos; - - file = gzopen(fname, "wb"); - if (file == NULL) { - fprintf(stderr, "gzopen error\n"); - exit(1); - } - gzputc(file, 'h'); - if (gzputs(file, "ello") != 4) { - fprintf(stderr, "gzputs err: %s\n", gzerror(file, &err)); - exit(1); - } - if (gzprintf(file, ", %s!", "hello") != 8) { - fprintf(stderr, "gzprintf err: %s\n", gzerror(file, &err)); - exit(1); - } - gzseek(file, 1L, SEEK_CUR); /* add one zero byte */ - gzclose(file); - - file = gzopen(fname, "rb"); - if (file == NULL) { - fprintf(stderr, "gzopen error\n"); - exit(1); - } - strcpy((char*)uncompr, "garbage"); - - if (gzread(file, uncompr, (unsigned)uncomprLen) != len) { - fprintf(stderr, "gzread err: %s\n", gzerror(file, &err)); - exit(1); - } - if (strcmp((char*)uncompr, hello)) { - fprintf(stderr, "bad gzread: %s\n", (char*)uncompr); - exit(1); - } else { - printf("gzread(): %s\n", (char*)uncompr); - } - - pos = gzseek(file, -8L, SEEK_CUR); - if (pos != 6 || gztell(file) != pos) { - fprintf(stderr, "gzseek error, pos=%ld, gztell=%ld\n", - (long)pos, (long)gztell(file)); - exit(1); - } - - if (gzgetc(file) != ' ') { - fprintf(stderr, "gzgetc error\n"); - exit(1); - } - - if (gzungetc(' ', file) != ' ') { - fprintf(stderr, "gzungetc error\n"); - exit(1); - } - - gzgets(file, (char*)uncompr, (int)uncomprLen); - if (strlen((char*)uncompr) != 7) { /* " hello!" */ - fprintf(stderr, "gzgets err after gzseek: %s\n", gzerror(file, &err)); - exit(1); - } - if (strcmp((char*)uncompr, hello + 6)) { - fprintf(stderr, "bad gzgets after gzseek\n"); - exit(1); - } else { - printf("gzgets() after gzseek: %s\n", (char*)uncompr); - } - - gzclose(file); -#endif -} - -#endif /* Z_SOLO */ - -/* =========================================================================== - * Test deflate() with small buffers - */ -void test_deflate(compr, comprLen) - Byte *compr; - uLong comprLen; -{ - z_stream c_stream; /* compression stream */ - int err; - uLong len = (uLong)strlen(hello)+1; - - c_stream.zalloc = zalloc; - c_stream.zfree = zfree; - c_stream.opaque = (voidpf)0; - - err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION); - CHECK_ERR(err, "deflateInit"); - - c_stream.next_in = (z_const unsigned char *)hello; - c_stream.next_out = compr; - - while (c_stream.total_in != len && c_stream.total_out < comprLen) { - c_stream.avail_in = c_stream.avail_out = 1; /* force small buffers */ - err = deflate(&c_stream, Z_NO_FLUSH); - CHECK_ERR(err, "deflate"); - } - /* Finish the stream, still forcing small buffers: */ - for (;;) { - c_stream.avail_out = 1; - err = deflate(&c_stream, Z_FINISH); - if (err == Z_STREAM_END) break; - CHECK_ERR(err, "deflate"); - } - - err = deflateEnd(&c_stream); - CHECK_ERR(err, "deflateEnd"); -} - -/* =========================================================================== - * Test inflate() with small buffers - */ -void test_inflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - int err; - z_stream d_stream; /* decompression stream */ - - strcpy((char*)uncompr, "garbage"); - - d_stream.zalloc = zalloc; - d_stream.zfree = zfree; - d_stream.opaque = (voidpf)0; - - d_stream.next_in = compr; - d_stream.avail_in = 0; - d_stream.next_out = uncompr; - - err = inflateInit(&d_stream); - CHECK_ERR(err, "inflateInit"); - - while (d_stream.total_out < uncomprLen && d_stream.total_in < comprLen) { - d_stream.avail_in = d_stream.avail_out = 1; /* force small buffers */ - err = inflate(&d_stream, Z_NO_FLUSH); - if (err == Z_STREAM_END) break; - CHECK_ERR(err, "inflate"); - } - - err = inflateEnd(&d_stream); - CHECK_ERR(err, "inflateEnd"); - - if (strcmp((char*)uncompr, hello)) { - fprintf(stderr, "bad inflate\n"); - exit(1); - } else { - printf("inflate(): %s\n", (char *)uncompr); - } -} - -/* =========================================================================== - * Test deflate() with large buffers and dynamic change of compression level - */ -void test_large_deflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - z_stream c_stream; /* compression stream */ - int err; - - c_stream.zalloc = zalloc; - c_stream.zfree = zfree; - c_stream.opaque = (voidpf)0; - - err = deflateInit(&c_stream, Z_BEST_SPEED); - CHECK_ERR(err, "deflateInit"); - - c_stream.next_out = compr; - c_stream.avail_out = (uInt)comprLen; - - /* At this point, uncompr is still mostly zeroes, so it should compress - * very well: - */ - c_stream.next_in = uncompr; - c_stream.avail_in = (uInt)uncomprLen; - err = deflate(&c_stream, Z_NO_FLUSH); - CHECK_ERR(err, "deflate"); - if (c_stream.avail_in != 0) { - fprintf(stderr, "deflate not greedy\n"); - exit(1); - } - - /* Feed in already compressed data and switch to no compression: */ - deflateParams(&c_stream, Z_NO_COMPRESSION, Z_DEFAULT_STRATEGY); - c_stream.next_in = compr; - c_stream.avail_in = (uInt)comprLen/2; - err = deflate(&c_stream, Z_NO_FLUSH); - CHECK_ERR(err, "deflate"); - - /* Switch back to compressing mode: */ - deflateParams(&c_stream, Z_BEST_COMPRESSION, Z_FILTERED); - c_stream.next_in = uncompr; - c_stream.avail_in = (uInt)uncomprLen; - err = deflate(&c_stream, Z_NO_FLUSH); - CHECK_ERR(err, "deflate"); - - err = deflate(&c_stream, Z_FINISH); - if (err != Z_STREAM_END) { - fprintf(stderr, "deflate should report Z_STREAM_END\n"); - exit(1); - } - err = deflateEnd(&c_stream); - CHECK_ERR(err, "deflateEnd"); -} - -/* =========================================================================== - * Test inflate() with large buffers - */ -void test_large_inflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - int err; - z_stream d_stream; /* decompression stream */ - - strcpy((char*)uncompr, "garbage"); - - d_stream.zalloc = zalloc; - d_stream.zfree = zfree; - d_stream.opaque = (voidpf)0; - - d_stream.next_in = compr; - d_stream.avail_in = (uInt)comprLen; - - err = inflateInit(&d_stream); - CHECK_ERR(err, "inflateInit"); - - for (;;) { - d_stream.next_out = uncompr; /* discard the output */ - d_stream.avail_out = (uInt)uncomprLen; - err = inflate(&d_stream, Z_NO_FLUSH); - if (err == Z_STREAM_END) break; - CHECK_ERR(err, "large inflate"); - } - - err = inflateEnd(&d_stream); - CHECK_ERR(err, "inflateEnd"); - - if (d_stream.total_out != 2*uncomprLen + comprLen/2) { - fprintf(stderr, "bad large inflate: %ld\n", d_stream.total_out); - exit(1); - } else { - printf("large_inflate(): OK\n"); - } -} - -/* =========================================================================== - * Test deflate() with full flush - */ -void test_flush(compr, comprLen) - Byte *compr; - uLong *comprLen; -{ - z_stream c_stream; /* compression stream */ - int err; - uInt len = (uInt)strlen(hello)+1; - - c_stream.zalloc = zalloc; - c_stream.zfree = zfree; - c_stream.opaque = (voidpf)0; - - err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION); - CHECK_ERR(err, "deflateInit"); - - c_stream.next_in = (z_const unsigned char *)hello; - c_stream.next_out = compr; - c_stream.avail_in = 3; - c_stream.avail_out = (uInt)*comprLen; - err = deflate(&c_stream, Z_FULL_FLUSH); - CHECK_ERR(err, "deflate"); - - compr[3]++; /* force an error in first compressed block */ - c_stream.avail_in = len - 3; - - err = deflate(&c_stream, Z_FINISH); - if (err != Z_STREAM_END) { - CHECK_ERR(err, "deflate"); - } - err = deflateEnd(&c_stream); - CHECK_ERR(err, "deflateEnd"); - - *comprLen = c_stream.total_out; -} - -/* =========================================================================== - * Test inflateSync() - */ -void test_sync(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - int err; - z_stream d_stream; /* decompression stream */ - - strcpy((char*)uncompr, "garbage"); - - d_stream.zalloc = zalloc; - d_stream.zfree = zfree; - d_stream.opaque = (voidpf)0; - - d_stream.next_in = compr; - d_stream.avail_in = 2; /* just read the zlib header */ - - err = inflateInit(&d_stream); - CHECK_ERR(err, "inflateInit"); - - d_stream.next_out = uncompr; - d_stream.avail_out = (uInt)uncomprLen; - - inflate(&d_stream, Z_NO_FLUSH); - CHECK_ERR(err, "inflate"); - - d_stream.avail_in = (uInt)comprLen-2; /* read all compressed data */ - err = inflateSync(&d_stream); /* but skip the damaged part */ - CHECK_ERR(err, "inflateSync"); - - err = inflate(&d_stream, Z_FINISH); - if (err != Z_DATA_ERROR) { - fprintf(stderr, "inflate should report DATA_ERROR\n"); - /* Because of incorrect adler32 */ - exit(1); - } - err = inflateEnd(&d_stream); - CHECK_ERR(err, "inflateEnd"); - - printf("after inflateSync(): hel%s\n", (char *)uncompr); -} - -/* =========================================================================== - * Test deflate() with preset dictionary - */ -void test_dict_deflate(compr, comprLen) - Byte *compr; - uLong comprLen; -{ - z_stream c_stream; /* compression stream */ - int err; - - c_stream.zalloc = zalloc; - c_stream.zfree = zfree; - c_stream.opaque = (voidpf)0; - - err = deflateInit(&c_stream, Z_BEST_COMPRESSION); - CHECK_ERR(err, "deflateInit"); - - err = deflateSetDictionary(&c_stream, - (const Bytef*)dictionary, (int)sizeof(dictionary)); - CHECK_ERR(err, "deflateSetDictionary"); - - dictId = c_stream.adler; - c_stream.next_out = compr; - c_stream.avail_out = (uInt)comprLen; - - c_stream.next_in = (z_const unsigned char *)hello; - c_stream.avail_in = (uInt)strlen(hello)+1; - - err = deflate(&c_stream, Z_FINISH); - if (err != Z_STREAM_END) { - fprintf(stderr, "deflate should report Z_STREAM_END\n"); - exit(1); - } - err = deflateEnd(&c_stream); - CHECK_ERR(err, "deflateEnd"); -} - -/* =========================================================================== - * Test inflate() with a preset dictionary - */ -void test_dict_inflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - int err; - z_stream d_stream; /* decompression stream */ - - strcpy((char*)uncompr, "garbage"); - - d_stream.zalloc = zalloc; - d_stream.zfree = zfree; - d_stream.opaque = (voidpf)0; - - d_stream.next_in = compr; - d_stream.avail_in = (uInt)comprLen; - - err = inflateInit(&d_stream); - CHECK_ERR(err, "inflateInit"); - - d_stream.next_out = uncompr; - d_stream.avail_out = (uInt)uncomprLen; - - for (;;) { - err = inflate(&d_stream, Z_NO_FLUSH); - if (err == Z_STREAM_END) break; - if (err == Z_NEED_DICT) { - if (d_stream.adler != dictId) { - fprintf(stderr, "unexpected dictionary"); - exit(1); - } - err = inflateSetDictionary(&d_stream, (const Bytef*)dictionary, - (int)sizeof(dictionary)); - } - CHECK_ERR(err, "inflate with dict"); - } - - err = inflateEnd(&d_stream); - CHECK_ERR(err, "inflateEnd"); - - if (strcmp((char*)uncompr, hello)) { - fprintf(stderr, "bad inflate with dict\n"); - exit(1); - } else { - printf("inflate with dictionary: %s\n", (char *)uncompr); - } -} - -/* =========================================================================== - * Usage: example [output.gz [input.gz]] - */ - -int main(argc, argv) - int argc; - char *argv[]; -{ - Byte *compr, *uncompr; - uLong comprLen = 10000*sizeof(int); /* don't overflow on MSDOS */ - uLong uncomprLen = comprLen; - static const char* myVersion = ZLIB_VERSION; - - if (zlibVersion()[0] != myVersion[0]) { - fprintf(stderr, "incompatible zlib version\n"); - exit(1); - - } else if (strcmp(zlibVersion(), ZLIB_VERSION) != 0) { - fprintf(stderr, "warning: different zlib version\n"); - } - - printf("zlib version %s = 0x%04x, compile flags = 0x%lx\n", - ZLIB_VERSION, ZLIB_VERNUM, zlibCompileFlags()); - - compr = (Byte*)calloc((uInt)comprLen, 1); - uncompr = (Byte*)calloc((uInt)uncomprLen, 1); - /* compr and uncompr are cleared to avoid reading uninitialized - * data and to ensure that uncompr compresses well. - */ - if (compr == Z_NULL || uncompr == Z_NULL) { - printf("out of memory\n"); - exit(1); - } - -#ifdef Z_SOLO - argc = strlen(argv[0]); -#else - test_compress(compr, comprLen, uncompr, uncomprLen); - - test_gzio((argc > 1 ? argv[1] : TESTFILE), - uncompr, uncomprLen); -#endif - - test_deflate(compr, comprLen); - test_inflate(compr, comprLen, uncompr, uncomprLen); - - test_large_deflate(compr, comprLen, uncompr, uncomprLen); - test_large_inflate(compr, comprLen, uncompr, uncomprLen); - - test_flush(compr, &comprLen); - test_sync(compr, comprLen, uncompr, uncomprLen); - comprLen = uncomprLen; - - test_dict_deflate(compr, comprLen); - test_dict_inflate(compr, comprLen, uncompr, uncomprLen); - - free(compr); - free(uncompr); - - return 0; -} diff --git a/io2d/src/3rd-party/zlib/test/infcover.c b/io2d/src/3rd-party/zlib/test/infcover.c deleted file mode 100644 index fe3d920..0000000 --- a/io2d/src/3rd-party/zlib/test/infcover.c +++ /dev/null @@ -1,671 +0,0 @@ -/* infcover.c -- test zlib's inflate routines with full code coverage - * Copyright (C) 2011 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* to use, do: ./configure --cover && make cover */ - -#include -#include -#include -#include -#include "zlib.h" - -/* get definition of internal structure so we can mess with it (see pull()), - and so we can call inflate_trees() (see cover5()) */ -#define ZLIB_INTERNAL -#include "inftrees.h" -#include "inflate.h" - -#define local static - -/* -- memory tracking routines -- */ - -/* - These memory tracking routines are provided to zlib and track all of zlib's - allocations and deallocations, check for LIFO operations, keep a current - and high water mark of total bytes requested, optionally set a limit on the - total memory that can be allocated, and when done check for memory leaks. - - They are used as follows: - - z_stream strm; - mem_setup(&strm) initializes the memory tracking and sets the - zalloc, zfree, and opaque members of strm to use - memory tracking for all zlib operations on strm - mem_limit(&strm, limit) sets a limit on the total bytes requested -- a - request that exceeds this limit will result in an - allocation failure (returns NULL) -- setting the - limit to zero means no limit, which is the default - after mem_setup() - mem_used(&strm, "msg") prints to stderr "msg" and the total bytes used - mem_high(&strm, "msg") prints to stderr "msg" and the high water mark - mem_done(&strm, "msg") ends memory tracking, releases all allocations - for the tracking as well as leaked zlib blocks, if - any. If there was anything unusual, such as leaked - blocks, non-FIFO frees, or frees of addresses not - allocated, then "msg" and information about the - problem is printed to stderr. If everything is - normal, nothing is printed. mem_done resets the - strm members to Z_NULL to use the default memory - allocation routines on the next zlib initialization - using strm. - */ - -/* these items are strung together in a linked list, one for each allocation */ -struct mem_item { - void *ptr; /* pointer to allocated memory */ - size_t size; /* requested size of allocation */ - struct mem_item *next; /* pointer to next item in list, or NULL */ -}; - -/* this structure is at the root of the linked list, and tracks statistics */ -struct mem_zone { - struct mem_item *first; /* pointer to first item in list, or NULL */ - size_t total, highwater; /* total allocations, and largest total */ - size_t limit; /* memory allocation limit, or 0 if no limit */ - int notlifo, rogue; /* counts of non-LIFO frees and rogue frees */ -}; - -/* memory allocation routine to pass to zlib */ -local void *mem_alloc(void *mem, unsigned count, unsigned size) -{ - void *ptr; - struct mem_item *item; - struct mem_zone *zone = mem; - size_t len = count * (size_t)size; - - /* induced allocation failure */ - if (zone == NULL || (zone->limit && zone->total + len > zone->limit)) - return NULL; - - /* perform allocation using the standard library, fill memory with a - non-zero value to make sure that the code isn't depending on zeros */ - ptr = malloc(len); - if (ptr == NULL) - return NULL; - memset(ptr, 0xa5, len); - - /* create a new item for the list */ - item = malloc(sizeof(struct mem_item)); - if (item == NULL) { - free(ptr); - return NULL; - } - item->ptr = ptr; - item->size = len; - - /* insert item at the beginning of the list */ - item->next = zone->first; - zone->first = item; - - /* update the statistics */ - zone->total += item->size; - if (zone->total > zone->highwater) - zone->highwater = zone->total; - - /* return the allocated memory */ - return ptr; -} - -/* memory free routine to pass to zlib */ -local void mem_free(void *mem, void *ptr) -{ - struct mem_item *item, *next; - struct mem_zone *zone = mem; - - /* if no zone, just do a free */ - if (zone == NULL) { - free(ptr); - return; - } - - /* point next to the item that matches ptr, or NULL if not found -- remove - the item from the linked list if found */ - next = zone->first; - if (next) { - if (next->ptr == ptr) - zone->first = next->next; /* first one is it, remove from list */ - else { - do { /* search the linked list */ - item = next; - next = item->next; - } while (next != NULL && next->ptr != ptr); - if (next) { /* if found, remove from linked list */ - item->next = next->next; - zone->notlifo++; /* not a LIFO free */ - } - - } - } - - /* if found, update the statistics and free the item */ - if (next) { - zone->total -= next->size; - free(next); - } - - /* if not found, update the rogue count */ - else - zone->rogue++; - - /* in any case, do the requested free with the standard library function */ - free(ptr); -} - -/* set up a controlled memory allocation space for monitoring, set the stream - parameters to the controlled routines, with opaque pointing to the space */ -local void mem_setup(z_stream *strm) -{ - struct mem_zone *zone; - - zone = malloc(sizeof(struct mem_zone)); - assert(zone != NULL); - zone->first = NULL; - zone->total = 0; - zone->highwater = 0; - zone->limit = 0; - zone->notlifo = 0; - zone->rogue = 0; - strm->opaque = zone; - strm->zalloc = mem_alloc; - strm->zfree = mem_free; -} - -/* set a limit on the total memory allocation, or 0 to remove the limit */ -local void mem_limit(z_stream *strm, size_t limit) -{ - struct mem_zone *zone = strm->opaque; - - zone->limit = limit; -} - -/* show the current total requested allocations in bytes */ -local void mem_used(z_stream *strm, char *prefix) -{ - struct mem_zone *zone = strm->opaque; - - fprintf(stderr, "%s: %lu allocated\n", prefix, zone->total); -} - -/* show the high water allocation in bytes */ -local void mem_high(z_stream *strm, char *prefix) -{ - struct mem_zone *zone = strm->opaque; - - fprintf(stderr, "%s: %lu high water mark\n", prefix, zone->highwater); -} - -/* release the memory allocation zone -- if there are any surprises, notify */ -local void mem_done(z_stream *strm, char *prefix) -{ - int count = 0; - struct mem_item *item, *next; - struct mem_zone *zone = strm->opaque; - - /* show high water mark */ - mem_high(strm, prefix); - - /* free leftover allocations and item structures, if any */ - item = zone->first; - while (item != NULL) { - free(item->ptr); - next = item->next; - free(item); - item = next; - count++; - } - - /* issue alerts about anything unexpected */ - if (count || zone->total) - fprintf(stderr, "** %s: %lu bytes in %d blocks not freed\n", - prefix, zone->total, count); - if (zone->notlifo) - fprintf(stderr, "** %s: %d frees not LIFO\n", prefix, zone->notlifo); - if (zone->rogue) - fprintf(stderr, "** %s: %d frees not recognized\n", - prefix, zone->rogue); - - /* free the zone and delete from the stream */ - free(zone); - strm->opaque = Z_NULL; - strm->zalloc = Z_NULL; - strm->zfree = Z_NULL; -} - -/* -- inflate test routines -- */ - -/* Decode a hexadecimal string, set *len to length, in[] to the bytes. This - decodes liberally, in that hex digits can be adjacent, in which case two in - a row writes a byte. Or they can delimited by any non-hex character, where - the delimiters are ignored except when a single hex digit is followed by a - delimiter in which case that single digit writes a byte. The returned - data is allocated and must eventually be freed. NULL is returned if out of - memory. If the length is not needed, then len can be NULL. */ -local unsigned char *h2b(const char *hex, unsigned *len) -{ - unsigned char *in; - unsigned next, val; - - in = malloc((strlen(hex) + 1) >> 1); - if (in == NULL) - return NULL; - next = 0; - val = 1; - do { - if (*hex >= '0' && *hex <= '9') - val = (val << 4) + *hex - '0'; - else if (*hex >= 'A' && *hex <= 'F') - val = (val << 4) + *hex - 'A' + 10; - else if (*hex >= 'a' && *hex <= 'f') - val = (val << 4) + *hex - 'a' + 10; - else if (val != 1 && val < 32) /* one digit followed by delimiter */ - val += 240; /* make it look like two digits */ - if (val > 255) { /* have two digits */ - in[next++] = val & 0xff; /* save the decoded byte */ - val = 1; /* start over */ - } - } while (*hex++); /* go through the loop with the terminating null */ - if (len != NULL) - *len = next; - in = reallocf(in, next); - return in; -} - -/* generic inflate() run, where hex is the hexadecimal input data, what is the - text to include in an error message, step is how much input data to feed - inflate() on each call, or zero to feed it all, win is the window bits - parameter to inflateInit2(), len is the size of the output buffer, and err - is the error code expected from the first inflate() call (the second - inflate() call is expected to return Z_STREAM_END). If win is 47, then - header information is collected with inflateGetHeader(). If a zlib stream - is looking for a dictionary, then an empty dictionary is provided. - inflate() is run until all of the input data is consumed. */ -local void inf(char *hex, char *what, unsigned step, int win, unsigned len, - int err) -{ - int ret; - unsigned have; - unsigned char *in, *out; - z_stream strm, copy; - gz_header head; - - mem_setup(&strm); - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit2(&strm, win); - if (ret != Z_OK) { - mem_done(&strm, what); - return; - } - out = malloc(len); assert(out != NULL); - if (win == 47) { - head.extra = out; - head.extra_max = len; - head.name = out; - head.name_max = len; - head.comment = out; - head.comm_max = len; - ret = inflateGetHeader(&strm, &head); assert(ret == Z_OK); - } - in = h2b(hex, &have); assert(in != NULL); - if (step == 0 || step > have) - step = have; - strm.avail_in = step; - have -= step; - strm.next_in = in; - do { - strm.avail_out = len; - strm.next_out = out; - ret = inflate(&strm, Z_NO_FLUSH); assert(err == 9 || ret == err); - if (ret != Z_OK && ret != Z_BUF_ERROR && ret != Z_NEED_DICT) - break; - if (ret == Z_NEED_DICT) { - ret = inflateSetDictionary(&strm, in, 1); - assert(ret == Z_DATA_ERROR); - mem_limit(&strm, 1); - ret = inflateSetDictionary(&strm, out, 0); - assert(ret == Z_MEM_ERROR); - mem_limit(&strm, 0); - ((struct inflate_state *)strm.state)->mode = DICT; - ret = inflateSetDictionary(&strm, out, 0); - assert(ret == Z_OK); - ret = inflate(&strm, Z_NO_FLUSH); assert(ret == Z_BUF_ERROR); - } - ret = inflateCopy(©, &strm); assert(ret == Z_OK); - ret = inflateEnd(©); assert(ret == Z_OK); - err = 9; /* don't care next time around */ - have += strm.avail_in; - strm.avail_in = step > have ? have : step; - have -= strm.avail_in; - } while (strm.avail_in); - free(in); - free(out); - ret = inflateReset2(&strm, -8); assert(ret == Z_OK); - ret = inflateEnd(&strm); assert(ret == Z_OK); - mem_done(&strm, what); -} - -/* cover all of the lines in inflate.c up to inflate() */ -local void cover_support(void) -{ - int ret; - z_stream strm; - - mem_setup(&strm); - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit(&strm); assert(ret == Z_OK); - mem_used(&strm, "inflate init"); - ret = inflatePrime(&strm, 5, 31); assert(ret == Z_OK); - ret = inflatePrime(&strm, -1, 0); assert(ret == Z_OK); - ret = inflateSetDictionary(&strm, Z_NULL, 0); - assert(ret == Z_STREAM_ERROR); - ret = inflateEnd(&strm); assert(ret == Z_OK); - mem_done(&strm, "prime"); - - inf("63 0", "force window allocation", 0, -15, 1, Z_OK); - inf("63 18 5", "force window replacement", 0, -8, 259, Z_OK); - inf("63 18 68 30 d0 0 0", "force split window update", 4, -8, 259, Z_OK); - inf("3 0", "use fixed blocks", 0, -15, 1, Z_STREAM_END); - inf("", "bad window size", 0, 1, 0, Z_STREAM_ERROR); - - mem_setup(&strm); - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit_(&strm, ZLIB_VERSION - 1, (int)sizeof(z_stream)); - assert(ret == Z_VERSION_ERROR); - mem_done(&strm, "wrong version"); - - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit(&strm); assert(ret == Z_OK); - ret = inflateEnd(&strm); assert(ret == Z_OK); - fputs("inflate built-in memory routines\n", stderr); -} - -/* cover all inflate() header and trailer cases and code after inflate() */ -local void cover_wrap(void) -{ - int ret; - z_stream strm, copy; - unsigned char dict[257]; - - ret = inflate(Z_NULL, 0); assert(ret == Z_STREAM_ERROR); - ret = inflateEnd(Z_NULL); assert(ret == Z_STREAM_ERROR); - ret = inflateCopy(Z_NULL, Z_NULL); assert(ret == Z_STREAM_ERROR); - fputs("inflate bad parameters\n", stderr); - - inf("1f 8b 0 0", "bad gzip method", 0, 31, 0, Z_DATA_ERROR); - inf("1f 8b 8 80", "bad gzip flags", 0, 31, 0, Z_DATA_ERROR); - inf("77 85", "bad zlib method", 0, 15, 0, Z_DATA_ERROR); - inf("8 99", "set window size from header", 0, 0, 0, Z_OK); - inf("78 9c", "bad zlib window size", 0, 8, 0, Z_DATA_ERROR); - inf("78 9c 63 0 0 0 1 0 1", "check adler32", 0, 15, 1, Z_STREAM_END); - inf("1f 8b 8 1e 0 0 0 0 0 0 1 0 0 0 0 0 0", "bad header crc", 0, 47, 1, - Z_DATA_ERROR); - inf("1f 8b 8 2 0 0 0 0 0 0 1d 26 3 0 0 0 0 0 0 0 0 0", "check gzip length", - 0, 47, 0, Z_STREAM_END); - inf("78 90", "bad zlib header check", 0, 47, 0, Z_DATA_ERROR); - inf("8 b8 0 0 0 1", "need dictionary", 0, 8, 0, Z_NEED_DICT); - inf("78 9c 63 0", "compute adler32", 0, 15, 1, Z_OK); - - mem_setup(&strm); - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit2(&strm, -8); - strm.avail_in = 2; - strm.next_in = (void *)"\x63"; - strm.avail_out = 1; - strm.next_out = (void *)&ret; - mem_limit(&strm, 1); - ret = inflate(&strm, Z_NO_FLUSH); assert(ret == Z_MEM_ERROR); - ret = inflate(&strm, Z_NO_FLUSH); assert(ret == Z_MEM_ERROR); - mem_limit(&strm, 0); - memset(dict, 0, 257); - ret = inflateSetDictionary(&strm, dict, 257); - assert(ret == Z_OK); - mem_limit(&strm, (sizeof(struct inflate_state) << 1) + 256); - ret = inflatePrime(&strm, 16, 0); assert(ret == Z_OK); - strm.avail_in = 2; - strm.next_in = (void *)"\x80"; - ret = inflateSync(&strm); assert(ret == Z_DATA_ERROR); - ret = inflate(&strm, Z_NO_FLUSH); assert(ret == Z_STREAM_ERROR); - strm.avail_in = 4; - strm.next_in = (void *)"\0\0\xff\xff"; - ret = inflateSync(&strm); assert(ret == Z_OK); - (void)inflateSyncPoint(&strm); - ret = inflateCopy(©, &strm); assert(ret == Z_MEM_ERROR); - mem_limit(&strm, 0); - ret = inflateUndermine(&strm, 1); assert(ret == Z_DATA_ERROR); - (void)inflateMark(&strm); - ret = inflateEnd(&strm); assert(ret == Z_OK); - mem_done(&strm, "miscellaneous, force memory errors"); -} - -/* input and output functions for inflateBack() */ -local unsigned pull(void *desc, unsigned char **buf) -{ - static unsigned int next = 0; - static unsigned char dat[] = {0x63, 0, 2, 0}; - struct inflate_state *state; - - if (desc == Z_NULL) { - next = 0; - return 0; /* no input (already provided at next_in) */ - } - state = (void *)((z_stream *)desc)->state; - if (state != Z_NULL) - state->mode = SYNC; /* force an otherwise impossible situation */ - return next < sizeof(dat) ? (*buf = dat + next++, 1) : 0; -} - -local int push(void *desc, unsigned char *buf, unsigned len) -{ - buf += len; - return desc != Z_NULL; /* force error if desc not null */ -} - -/* cover inflateBack() up to common deflate data cases and after those */ -local void cover_back(void) -{ - int ret; - z_stream strm; - unsigned char win[32768]; - - ret = inflateBackInit_(Z_NULL, 0, win, 0, 0); - assert(ret == Z_VERSION_ERROR); - ret = inflateBackInit(Z_NULL, 0, win); assert(ret == Z_STREAM_ERROR); - ret = inflateBack(Z_NULL, Z_NULL, Z_NULL, Z_NULL, Z_NULL); - assert(ret == Z_STREAM_ERROR); - ret = inflateBackEnd(Z_NULL); assert(ret == Z_STREAM_ERROR); - fputs("inflateBack bad parameters\n", stderr); - - mem_setup(&strm); - ret = inflateBackInit(&strm, 15, win); assert(ret == Z_OK); - strm.avail_in = 2; - strm.next_in = (void *)"\x03"; - ret = inflateBack(&strm, pull, Z_NULL, push, Z_NULL); - assert(ret == Z_STREAM_END); - /* force output error */ - strm.avail_in = 3; - strm.next_in = (void *)"\x63\x00"; - ret = inflateBack(&strm, pull, Z_NULL, push, &strm); - assert(ret == Z_BUF_ERROR); - /* force mode error by mucking with state */ - ret = inflateBack(&strm, pull, &strm, push, Z_NULL); - assert(ret == Z_STREAM_ERROR); - ret = inflateBackEnd(&strm); assert(ret == Z_OK); - mem_done(&strm, "inflateBack bad state"); - - ret = inflateBackInit(&strm, 15, win); assert(ret == Z_OK); - ret = inflateBackEnd(&strm); assert(ret == Z_OK); - fputs("inflateBack built-in memory routines\n", stderr); -} - -/* do a raw inflate of data in hexadecimal with both inflate and inflateBack */ -local int try(char *hex, char *id, int err) -{ - int ret; - unsigned len, size; - unsigned char *in, *out, *win; - char *prefix; - z_stream strm; - - /* convert to hex */ - in = h2b(hex, &len); - assert(in != NULL); - - /* allocate work areas */ - size = len << 3; - out = malloc(size); - assert(out != NULL); - win = malloc(32768); - assert(win != NULL); - prefix = malloc(strlen(id) + 6); - assert(prefix != NULL); - - /* first with inflate */ - strcpy(prefix, id); - strcat(prefix, "-late"); - mem_setup(&strm); - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit2(&strm, err < 0 ? 47 : -15); - assert(ret == Z_OK); - strm.avail_in = len; - strm.next_in = in; - do { - strm.avail_out = size; - strm.next_out = out; - ret = inflate(&strm, Z_TREES); - assert(ret != Z_STREAM_ERROR && ret != Z_MEM_ERROR); - if (ret == Z_DATA_ERROR || ret == Z_NEED_DICT) - break; - } while (strm.avail_in || strm.avail_out == 0); - if (err) { - assert(ret == Z_DATA_ERROR); - assert(strcmp(id, strm.msg) == 0); - } - inflateEnd(&strm); - mem_done(&strm, prefix); - - /* then with inflateBack */ - if (err >= 0) { - strcpy(prefix, id); - strcat(prefix, "-back"); - mem_setup(&strm); - ret = inflateBackInit(&strm, 15, win); - assert(ret == Z_OK); - strm.avail_in = len; - strm.next_in = in; - ret = inflateBack(&strm, pull, Z_NULL, push, Z_NULL); - assert(ret != Z_STREAM_ERROR); - if (err) { - assert(ret == Z_DATA_ERROR); - assert(strcmp(id, strm.msg) == 0); - } - inflateBackEnd(&strm); - mem_done(&strm, prefix); - } - - /* clean up */ - free(prefix); - free(win); - free(out); - free(in); - return ret; -} - -/* cover deflate data cases in both inflate() and inflateBack() */ -local void cover_inflate(void) -{ - try("0 0 0 0 0", "invalid stored block lengths", 1); - try("3 0", "fixed", 0); - try("6", "invalid block type", 1); - try("1 1 0 fe ff 0", "stored", 0); - try("fc 0 0", "too many length or distance symbols", 1); - try("4 0 fe ff", "invalid code lengths set", 1); - try("4 0 24 49 0", "invalid bit length repeat", 1); - try("4 0 24 e9 ff ff", "invalid bit length repeat", 1); - try("4 0 24 e9 ff 6d", "invalid code -- missing end-of-block", 1); - try("4 80 49 92 24 49 92 24 71 ff ff 93 11 0", - "invalid literal/lengths set", 1); - try("4 80 49 92 24 49 92 24 f b4 ff ff c3 84", "invalid distances set", 1); - try("4 c0 81 8 0 0 0 0 20 7f eb b 0 0", "invalid literal/length code", 1); - try("2 7e ff ff", "invalid distance code", 1); - try("c c0 81 0 0 0 0 0 90 ff 6b 4 0", "invalid distance too far back", 1); - - /* also trailer mismatch just in inflate() */ - try("1f 8b 8 0 0 0 0 0 0 0 3 0 0 0 0 1", "incorrect data check", -1); - try("1f 8b 8 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 1", - "incorrect length check", -1); - try("5 c0 21 d 0 0 0 80 b0 fe 6d 2f 91 6c", "pull 17", 0); - try("5 e0 81 91 24 cb b2 2c 49 e2 f 2e 8b 9a 47 56 9f fb fe ec d2 ff 1f", - "long code", 0); - try("ed c0 1 1 0 0 0 40 20 ff 57 1b 42 2c 4f", "length extra", 0); - try("ed cf c1 b1 2c 47 10 c4 30 fa 6f 35 1d 1 82 59 3d fb be 2e 2a fc f c", - "long distance and extra", 0); - try("ed c0 81 0 0 0 0 80 a0 fd a9 17 a9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6", "window end", 0); - inf("2 8 20 80 0 3 0", "inflate_fast TYPE return", 0, -15, 258, - Z_STREAM_END); - inf("63 18 5 40 c 0", "window wrap", 3, -8, 300, Z_OK); -} - -/* cover remaining lines in inftrees.c */ -local void cover_trees(void) -{ - int ret; - unsigned bits; - unsigned short lens[16], work[16]; - code *next, table[ENOUGH_DISTS]; - - /* we need to call inflate_table() directly in order to manifest not- - enough errors, since zlib insures that enough is always enough */ - for (bits = 0; bits < 15; bits++) - lens[bits] = (unsigned short)(bits + 1); - lens[15] = 15; - next = table; - bits = 15; - ret = inflate_table(DISTS, lens, 16, &next, &bits, work); - assert(ret == 1); - next = table; - bits = 1; - ret = inflate_table(DISTS, lens, 16, &next, &bits, work); - assert(ret == 1); - fputs("inflate_table not enough errors\n", stderr); -} - -/* cover remaining inffast.c decoding and window copying */ -local void cover_fast(void) -{ - inf("e5 e0 81 ad 6d cb b2 2c c9 01 1e 59 63 ae 7d ee fb 4d fd b5 35 41 68" - " ff 7f 0f 0 0 0", "fast length extra bits", 0, -8, 258, Z_DATA_ERROR); - inf("25 fd 81 b5 6d 59 b6 6a 49 ea af 35 6 34 eb 8c b9 f6 b9 1e ef 67 49" - " 50 fe ff ff 3f 0 0", "fast distance extra bits", 0, -8, 258, - Z_DATA_ERROR); - inf("3 7e 0 0 0 0 0", "fast invalid distance code", 0, -8, 258, - Z_DATA_ERROR); - inf("1b 7 0 0 0 0 0", "fast invalid literal/length code", 0, -8, 258, - Z_DATA_ERROR); - inf("d c7 1 ae eb 38 c 4 41 a0 87 72 de df fb 1f b8 36 b1 38 5d ff ff 0", - "fast 2nd level codes and too far back", 0, -8, 258, Z_DATA_ERROR); - inf("63 18 5 8c 10 8 0 0 0 0", "very common case", 0, -8, 259, Z_OK); - inf("63 60 60 18 c9 0 8 18 18 18 26 c0 28 0 29 0 0 0", - "contiguous and wrap around window", 6, -8, 259, Z_OK); - inf("63 0 3 0 0 0 0 0", "copy direct from output", 0, -8, 259, - Z_STREAM_END); -} - -int main(void) -{ - fprintf(stderr, "%s\n", zlibVersion()); - cover_support(); - cover_wrap(); - cover_back(); - cover_inflate(); - cover_trees(); - cover_fast(); - return 0; -} diff --git a/io2d/src/3rd-party/zlib/test/minigzip.c b/io2d/src/3rd-party/zlib/test/minigzip.c deleted file mode 100644 index b3025a4..0000000 --- a/io2d/src/3rd-party/zlib/test/minigzip.c +++ /dev/null @@ -1,651 +0,0 @@ -/* minigzip.c -- simulate gzip using the zlib compression library - * Copyright (C) 1995-2006, 2010, 2011 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - * minigzip is a minimal implementation of the gzip utility. This is - * only an example of using zlib and isn't meant to replace the - * full-featured gzip. No attempt is made to deal with file systems - * limiting names to 14 or 8+3 characters, etc... Error checking is - * very limited. So use minigzip only for testing; use gzip for the - * real thing. On MSDOS, use only on file names without extension - * or in pipe mode. - */ - -/* @(#) $Id$ */ - -#include "zlib.h" -#include - -#ifdef STDC -# include -# include -#endif - -#ifdef USE_MMAP -# include -# include -# include -#endif - -#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__) -# include -# include -# ifdef UNDER_CE -# include -# endif -# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) -#else -# define SET_BINARY_MODE(file) -#endif - -#ifdef _MSC_VER -# define snprintf _snprintf -#endif - -#ifdef VMS -# define unlink delete -# define GZ_SUFFIX "-gz" -#endif -#ifdef RISCOS -# define unlink remove -# define GZ_SUFFIX "-gz" -# define fileno(file) file->__file -#endif -#if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os -# include /* for fileno */ -#endif - -#if !defined(Z_HAVE_UNISTD_H) && !defined(_LARGEFILE64_SOURCE) -#ifndef WIN32 /* unlink already in stdio.h for WIN32 */ - extern int unlink OF((const char *)); -#endif -#endif - -#if defined(UNDER_CE) -# include -# define perror(s) pwinerror(s) - -/* Map the Windows error number in ERROR to a locale-dependent error - message string and return a pointer to it. Typically, the values - for ERROR come from GetLastError. - - The string pointed to shall not be modified by the application, - but may be overwritten by a subsequent call to strwinerror - - The strwinerror function does not change the current setting - of GetLastError. */ - -static char *strwinerror (error) - DWORD error; -{ - static char buf[1024]; - - wchar_t *msgbuf; - DWORD lasterr = GetLastError(); - DWORD chars = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM - | FORMAT_MESSAGE_ALLOCATE_BUFFER, - NULL, - error, - 0, /* Default language */ - (LPVOID)&msgbuf, - 0, - NULL); - if (chars != 0) { - /* If there is an \r\n appended, zap it. */ - if (chars >= 2 - && msgbuf[chars - 2] == '\r' && msgbuf[chars - 1] == '\n') { - chars -= 2; - msgbuf[chars] = 0; - } - - if (chars > sizeof (buf) - 1) { - chars = sizeof (buf) - 1; - msgbuf[chars] = 0; - } - - wcstombs(buf, msgbuf, chars + 1); - LocalFree(msgbuf); - } - else { - sprintf(buf, "unknown win32 error (%ld)", error); - } - - SetLastError(lasterr); - return buf; -} - -static void pwinerror (s) - const char *s; -{ - if (s && *s) - fprintf(stderr, "%s: %s\n", s, strwinerror(GetLastError ())); - else - fprintf(stderr, "%s\n", strwinerror(GetLastError ())); -} - -#endif /* UNDER_CE */ - -#ifndef GZ_SUFFIX -# define GZ_SUFFIX ".gz" -#endif -#define SUFFIX_LEN (sizeof(GZ_SUFFIX)-1) - -#define BUFLEN 16384 -#define MAX_NAME_LEN 1024 - -#ifdef MAXSEG_64K -# define local static - /* Needed for systems with limitation on stack size. */ -#else -# define local -#endif - -#ifdef Z_SOLO -/* for Z_SOLO, create simplified gz* functions using deflate and inflate */ - -#if defined(Z_HAVE_UNISTD_H) || defined(Z_LARGE) -# include /* for unlink() */ -#endif - -void *myalloc OF((void *, unsigned, unsigned)); -void myfree OF((void *, void *)); - -void *myalloc(q, n, m) - void *q; - unsigned n, m; -{ - q = Z_NULL; - return calloc(n, m); -} - -void myfree(q, p) - void *q, *p; -{ - q = Z_NULL; - free(p); -} - -typedef struct gzFile_s { - FILE *file; - int write; - int err; - char *msg; - z_stream strm; -} *gzFile; - -gzFile gzopen OF((const char *, const char *)); -gzFile gzdopen OF((int, const char *)); -gzFile gz_open OF((const char *, int, const char *)); - -gzFile gzopen(path, mode) -const char *path; -const char *mode; -{ - return gz_open(path, -1, mode); -} - -gzFile gzdopen(fd, mode) -int fd; -const char *mode; -{ - return gz_open(NULL, fd, mode); -} - -gzFile gz_open(path, fd, mode) - const char *path; - int fd; - const char *mode; -{ - gzFile gz; - int ret; - - gz = malloc(sizeof(struct gzFile_s)); - if (gz == NULL) - return NULL; - gz->write = strchr(mode, 'w') != NULL; - gz->strm.zalloc = myalloc; - gz->strm.zfree = myfree; - gz->strm.opaque = Z_NULL; - if (gz->write) - ret = deflateInit2(&(gz->strm), -1, 8, 15 + 16, 8, 0); - else { - gz->strm.next_in = 0; - gz->strm.avail_in = Z_NULL; - ret = inflateInit2(&(gz->strm), 15 + 16); - } - if (ret != Z_OK) { - free(gz); - return NULL; - } - gz->file = path == NULL ? fdopen(fd, gz->write ? "wb" : "rb") : - fopen(path, gz->write ? "wb" : "rb"); - if (gz->file == NULL) { - gz->write ? deflateEnd(&(gz->strm)) : inflateEnd(&(gz->strm)); - free(gz); - return NULL; - } - gz->err = 0; - gz->msg = ""; - return gz; -} - -int gzwrite OF((gzFile, const void *, unsigned)); - -int gzwrite(gz, buf, len) - gzFile gz; - const void *buf; - unsigned len; -{ - z_stream *strm; - unsigned char out[BUFLEN]; - - if (gz == NULL || !gz->write) - return 0; - strm = &(gz->strm); - strm->next_in = (void *)buf; - strm->avail_in = len; - do { - strm->next_out = out; - strm->avail_out = BUFLEN; - (void)deflate(strm, Z_NO_FLUSH); - fwrite(out, 1, BUFLEN - strm->avail_out, gz->file); - } while (strm->avail_out == 0); - return len; -} - -int gzread OF((gzFile, void *, unsigned)); - -int gzread(gz, buf, len) - gzFile gz; - void *buf; - unsigned len; -{ - int ret; - unsigned got; - unsigned char in[1]; - z_stream *strm; - - if (gz == NULL || gz->write) - return 0; - if (gz->err) - return 0; - strm = &(gz->strm); - strm->next_out = (void *)buf; - strm->avail_out = len; - do { - got = fread(in, 1, 1, gz->file); - if (got == 0) - break; - strm->next_in = in; - strm->avail_in = 1; - ret = inflate(strm, Z_NO_FLUSH); - if (ret == Z_DATA_ERROR) { - gz->err = Z_DATA_ERROR; - gz->msg = strm->msg; - return 0; - } - if (ret == Z_STREAM_END) - inflateReset(strm); - } while (strm->avail_out); - return len - strm->avail_out; -} - -int gzclose OF((gzFile)); - -int gzclose(gz) - gzFile gz; -{ - z_stream *strm; - unsigned char out[BUFLEN]; - - if (gz == NULL) - return Z_STREAM_ERROR; - strm = &(gz->strm); - if (gz->write) { - strm->next_in = Z_NULL; - strm->avail_in = 0; - do { - strm->next_out = out; - strm->avail_out = BUFLEN; - (void)deflate(strm, Z_FINISH); - fwrite(out, 1, BUFLEN - strm->avail_out, gz->file); - } while (strm->avail_out == 0); - deflateEnd(strm); - } - else - inflateEnd(strm); - fclose(gz->file); - free(gz); - return Z_OK; -} - -const char *gzerror OF((gzFile, int *)); - -const char *gzerror(gz, err) - gzFile gz; - int *err; -{ - *err = gz->err; - return gz->msg; -} - -#endif - -char *prog; - -void error OF((const char *msg)); -void gz_compress OF((FILE *in, gzFile out)); -#ifdef USE_MMAP -int gz_compress_mmap OF((FILE *in, gzFile out)); -#endif -void gz_uncompress OF((gzFile in, FILE *out)); -void file_compress OF((char *file, char *mode)); -void file_uncompress OF((char *file)); -int main OF((int argc, char *argv[])); - -/* =========================================================================== - * Display error message and exit - */ -void error(msg) - const char *msg; -{ - fprintf(stderr, "%s: %s\n", prog, msg); - exit(1); -} - -/* =========================================================================== - * Compress input to output then close both files. - */ - -void gz_compress(in, out) - FILE *in; - gzFile out; -{ - local char buf[BUFLEN]; - int len; - int err; - -#ifdef USE_MMAP - /* Try first compressing with mmap. If mmap fails (minigzip used in a - * pipe), use the normal fread loop. - */ - if (gz_compress_mmap(in, out) == Z_OK) return; -#endif - for (;;) { - len = (int)fread(buf, 1, sizeof(buf), in); - if (ferror(in)) { - perror("fread"); - exit(1); - } - if (len == 0) break; - - if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err)); - } - fclose(in); - if (gzclose(out) != Z_OK) error("failed gzclose"); -} - -#ifdef USE_MMAP /* MMAP version, Miguel Albrecht */ - -/* Try compressing the input file at once using mmap. Return Z_OK if - * if success, Z_ERRNO otherwise. - */ -int gz_compress_mmap(in, out) - FILE *in; - gzFile out; -{ - int len; - int err; - int ifd = fileno(in); - caddr_t buf; /* mmap'ed buffer for the entire input file */ - off_t buf_len; /* length of the input file */ - struct stat sb; - - /* Determine the size of the file, needed for mmap: */ - if (fstat(ifd, &sb) < 0) return Z_ERRNO; - buf_len = sb.st_size; - if (buf_len <= 0) return Z_ERRNO; - - /* Now do the actual mmap: */ - buf = mmap((caddr_t) 0, buf_len, PROT_READ, MAP_SHARED, ifd, (off_t)0); - if (buf == (caddr_t)(-1)) return Z_ERRNO; - - /* Compress the whole file at once: */ - len = gzwrite(out, (char *)buf, (unsigned)buf_len); - - if (len != (int)buf_len) error(gzerror(out, &err)); - - munmap(buf, buf_len); - fclose(in); - if (gzclose(out) != Z_OK) error("failed gzclose"); - return Z_OK; -} -#endif /* USE_MMAP */ - -/* =========================================================================== - * Uncompress input to output then close both files. - */ -void gz_uncompress(in, out) - gzFile in; - FILE *out; -{ - local char buf[BUFLEN]; - int len; - int err; - - for (;;) { - len = gzread(in, buf, sizeof(buf)); - if (len < 0) error (gzerror(in, &err)); - if (len == 0) break; - - if ((int)fwrite(buf, 1, (unsigned)len, out) != len) { - error("failed fwrite"); - } - } - if (fclose(out)) error("failed fclose"); - - if (gzclose(in) != Z_OK) error("failed gzclose"); -} - - -/* =========================================================================== - * Compress the given file: create a corresponding .gz file and remove the - * original. - */ -void file_compress(file, mode) - char *file; - char *mode; -{ - local char outfile[MAX_NAME_LEN]; - FILE *in; - gzFile out; - - if (strlen(file) + strlen(GZ_SUFFIX) >= sizeof(outfile)) { - fprintf(stderr, "%s: filename too long\n", prog); - exit(1); - } - -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(outfile, sizeof(outfile), "%s%s", file, GZ_SUFFIX); -#else - strcpy(outfile, file); - strcat(outfile, GZ_SUFFIX); -#endif - - in = fopen(file, "rb"); - if (in == NULL) { - perror(file); - exit(1); - } - out = gzopen(outfile, mode); - if (out == NULL) { - fprintf(stderr, "%s: can't gzopen %s\n", prog, outfile); - exit(1); - } - gz_compress(in, out); - - unlink(file); -} - - -/* =========================================================================== - * Uncompress the given file and remove the original. - */ -void file_uncompress(file) - char *file; -{ - local char buf[MAX_NAME_LEN]; - char *infile, *outfile; - FILE *out; - gzFile in; - size_t len = strlen(file); - - if (len + strlen(GZ_SUFFIX) >= sizeof(buf)) { - fprintf(stderr, "%s: filename too long\n", prog); - exit(1); - } - -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(buf, sizeof(buf), "%s", file); -#else - strcpy(buf, file); -#endif - - if (len > SUFFIX_LEN && strcmp(file+len-SUFFIX_LEN, GZ_SUFFIX) == 0) { - infile = file; - outfile = buf; - outfile[len-3] = '\0'; - } else { - outfile = file; - infile = buf; -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(buf + len, sizeof(buf) - len, "%s", GZ_SUFFIX); -#else - strcat(infile, GZ_SUFFIX); -#endif - } - in = gzopen(infile, "rb"); - if (in == NULL) { - fprintf(stderr, "%s: can't gzopen %s\n", prog, infile); - exit(1); - } - out = fopen(outfile, "wb"); - if (out == NULL) { - perror(file); - exit(1); - } - - gz_uncompress(in, out); - - unlink(infile); -} - - -/* =========================================================================== - * Usage: minigzip [-c] [-d] [-f] [-h] [-r] [-1 to -9] [files...] - * -c : write to standard output - * -d : decompress - * -f : compress with Z_FILTERED - * -h : compress with Z_HUFFMAN_ONLY - * -r : compress with Z_RLE - * -1 to -9 : compression level - */ - -int main(argc, argv) - int argc; - char *argv[]; -{ - int copyout = 0; - int uncompr = 0; - gzFile file; - char *bname, outmode[20]; - -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(outmode, sizeof(outmode), "%s", "wb6 "); -#else - strcpy(outmode, "wb6 "); -#endif - - prog = argv[0]; - bname = strrchr(argv[0], '/'); - if (bname) - bname++; - else - bname = argv[0]; - argc--, argv++; - - if (!strcmp(bname, "gunzip")) - uncompr = 1; - else if (!strcmp(bname, "zcat")) - copyout = uncompr = 1; - - while (argc > 0) { - if (strcmp(*argv, "-c") == 0) - copyout = 1; - else if (strcmp(*argv, "-d") == 0) - uncompr = 1; - else if (strcmp(*argv, "-f") == 0) - outmode[3] = 'f'; - else if (strcmp(*argv, "-h") == 0) - outmode[3] = 'h'; - else if (strcmp(*argv, "-r") == 0) - outmode[3] = 'R'; - else if ((*argv)[0] == '-' && (*argv)[1] >= '1' && (*argv)[1] <= '9' && - (*argv)[2] == 0) - outmode[2] = (*argv)[1]; - else - break; - argc--, argv++; - } - if (outmode[3] == ' ') - outmode[3] = 0; - if (argc == 0) { - SET_BINARY_MODE(stdin); - SET_BINARY_MODE(stdout); - if (uncompr) { - file = gzdopen(fileno(stdin), "rb"); - if (file == NULL) error("can't gzdopen stdin"); - gz_uncompress(file, stdout); - } else { - file = gzdopen(fileno(stdout), outmode); - if (file == NULL) error("can't gzdopen stdout"); - gz_compress(stdin, file); - } - } else { - if (copyout) { - SET_BINARY_MODE(stdout); - } - do { - if (uncompr) { - if (copyout) { - file = gzopen(*argv, "rb"); - if (file == NULL) - fprintf(stderr, "%s: can't gzopen %s\n", prog, *argv); - else - gz_uncompress(file, stdout); - } else { - file_uncompress(*argv); - } - } else { - if (copyout) { - FILE * in = fopen(*argv, "rb"); - - if (in == NULL) { - perror(*argv); - } else { - file = gzdopen(fileno(stdout), outmode); - if (file == NULL) error("can't gzdopen stdout"); - - gz_compress(in, file); - } - - } else { - file_compress(*argv, outmode); - } - } - } while (argv++, --argc); - } - return 0; -} diff --git a/io2d/src/3rd-party/zlib/treebuild.xml b/io2d/src/3rd-party/zlib/treebuild.xml deleted file mode 100644 index 38d29d7..0000000 --- a/io2d/src/3rd-party/zlib/treebuild.xml +++ /dev/null @@ -1,116 +0,0 @@ - - - - zip compression library - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/io2d/src/3rd-party/zlib/trees.c b/io2d/src/3rd-party/zlib/trees.c deleted file mode 100644 index 1fd7759..0000000 --- a/io2d/src/3rd-party/zlib/trees.c +++ /dev/null @@ -1,1226 +0,0 @@ -/* trees.c -- output deflated data using Huffman coding - * Copyright (C) 1995-2012 Jean-loup Gailly - * detect_data_type() function provided freely by Cosmin Truta, 2006 - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - * ALGORITHM - * - * The "deflation" process uses several Huffman trees. The more - * common source values are represented by shorter bit sequences. - * - * Each code tree is stored in a compressed form which is itself - * a Huffman encoding of the lengths of all the code strings (in - * ascending order by source values). The actual code strings are - * reconstructed from the lengths in the inflate process, as described - * in the deflate specification. - * - * REFERENCES - * - * Deutsch, L.P.,"'Deflate' Compressed Data Format Specification". - * Available in ftp.uu.net:/pub/archiving/zip/doc/deflate-1.1.doc - * - * Storer, James A. - * Data Compression: Methods and Theory, pp. 49-50. - * Computer Science Press, 1988. ISBN 0-7167-8156-5. - * - * Sedgewick, R. - * Algorithms, p290. - * Addison-Wesley, 1983. ISBN 0-201-06672-6. - */ - -/* @(#) $Id$ */ - -/* #define GEN_TREES_H */ - -#include "deflate.h" - -#ifdef DEBUG -# include -#endif - -/* =========================================================================== - * Constants - */ - -#define MAX_BL_BITS 7 -/* Bit length codes must not exceed MAX_BL_BITS bits */ - -#define END_BLOCK 256 -/* end of block literal code */ - -#define REP_3_6 16 -/* repeat previous bit length 3-6 times (2 bits of repeat count) */ - -#define REPZ_3_10 17 -/* repeat a zero length 3-10 times (3 bits of repeat count) */ - -#define REPZ_11_138 18 -/* repeat a zero length 11-138 times (7 bits of repeat count) */ - -local const int extra_lbits[LENGTH_CODES] /* extra bits for each length code */ - = {0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0}; - -local const int extra_dbits[D_CODES] /* extra bits for each distance code */ - = {0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; - -local const int extra_blbits[BL_CODES]/* extra bits for each bit length code */ - = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7}; - -local const uch bl_order[BL_CODES] - = {16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15}; -/* The lengths of the bit length codes are sent in order of decreasing - * probability, to avoid transmitting the lengths for unused bit length codes. - */ - -/* =========================================================================== - * Local data. These are initialized only once. - */ - -#define DIST_CODE_LEN 512 /* see definition of array dist_code below */ - -#if defined(GEN_TREES_H) || !defined(STDC) -/* non ANSI compilers may not accept trees.h */ - -local ct_data static_ltree[L_CODES+2]; -/* The static literal tree. Since the bit lengths are imposed, there is no - * need for the L_CODES extra codes used during heap construction. However - * The codes 286 and 287 are needed to build a canonical tree (see _tr_init - * below). - */ - -local ct_data static_dtree[D_CODES]; -/* The static distance tree. (Actually a trivial tree since all codes use - * 5 bits.) - */ - -uch _dist_code[DIST_CODE_LEN]; -/* Distance codes. The first 256 values correspond to the distances - * 3 .. 258, the last 256 values correspond to the top 8 bits of - * the 15 bit distances. - */ - -uch _length_code[MAX_MATCH-MIN_MATCH+1]; -/* length code for each normalized match length (0 == MIN_MATCH) */ - -local int base_length[LENGTH_CODES]; -/* First normalized length for each code (0 = MIN_MATCH) */ - -local int base_dist[D_CODES]; -/* First normalized distance for each code (0 = distance of 1) */ - -#else -# include "trees.h" -#endif /* GEN_TREES_H */ - -struct static_tree_desc_s { - const ct_data *static_tree; /* static tree or NULL */ - const intf *extra_bits; /* extra bits for each code or NULL */ - int extra_base; /* base index for extra_bits */ - int elems; /* max number of elements in the tree */ - int max_length; /* max bit length for the codes */ -}; - -local static_tree_desc static_l_desc = -{static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS}; - -local static_tree_desc static_d_desc = -{static_dtree, extra_dbits, 0, D_CODES, MAX_BITS}; - -local static_tree_desc static_bl_desc = -{(const ct_data *)0, extra_blbits, 0, BL_CODES, MAX_BL_BITS}; - -/* =========================================================================== - * Local (static) routines in this file. - */ - -local void tr_static_init OF((void)); -local void init_block OF((deflate_state *s)); -local void pqdownheap OF((deflate_state *s, ct_data *tree, int k)); -local void gen_bitlen OF((deflate_state *s, tree_desc *desc)); -local void gen_codes OF((ct_data *tree, int max_code, ushf *bl_count)); -local void build_tree OF((deflate_state *s, tree_desc *desc)); -local void scan_tree OF((deflate_state *s, ct_data *tree, int max_code)); -local void send_tree OF((deflate_state *s, ct_data *tree, int max_code)); -local int build_bl_tree OF((deflate_state *s)); -local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes, - int blcodes)); -local void compress_block OF((deflate_state *s, const ct_data *ltree, - const ct_data *dtree)); -local int detect_data_type OF((deflate_state *s)); -local unsigned bi_reverse OF((unsigned value, int length)); -local void bi_windup OF((deflate_state *s)); -local void bi_flush OF((deflate_state *s)); -local void copy_block OF((deflate_state *s, charf *buf, unsigned len, - int header)); - -#ifdef GEN_TREES_H -local void gen_trees_header OF((void)); -#endif - -#ifndef DEBUG -# define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len) - /* Send a code of the given tree. c and tree must not have side effects */ - -#else /* DEBUG */ -# define send_code(s, c, tree) \ - { if (z_verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \ - send_bits(s, tree[c].Code, tree[c].Len); } -#endif - -/* =========================================================================== - * Output a short LSB first on the stream. - * IN assertion: there is enough room in pendingBuf. - */ -#define put_short(s, w) { \ - put_byte(s, (uch)((w) & 0xff)); \ - put_byte(s, (uch)((ush)(w) >> 8)); \ -} - -/* =========================================================================== - * Send a value on a given number of bits. - * IN assertion: length <= 16 and value fits in length bits. - */ -#ifdef DEBUG -local void send_bits OF((deflate_state *s, int value, int length)); - -local void send_bits(s, value, length) - deflate_state *s; - int value; /* value to send */ - int length; /* number of bits */ -{ - Tracevv((stderr," l %2d v %4x ", length, value)); - Assert(length > 0 && length <= 15, "invalid length"); - s->bits_sent += (ulg)length; - - /* If not enough room in bi_buf, use (valid) bits from bi_buf and - * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid)) - * unused bits in value. - */ - if (s->bi_valid > (int)Buf_size - length) { - s->bi_buf |= (ush)value << s->bi_valid; - put_short(s, s->bi_buf); - s->bi_buf = (ush)value >> (Buf_size - s->bi_valid); - s->bi_valid += length - Buf_size; - } else { - s->bi_buf |= (ush)value << s->bi_valid; - s->bi_valid += length; - } -} -#else /* !DEBUG */ - -#define send_bits(s, value, length) \ -{ int len = length;\ - if (s->bi_valid > (int)Buf_size - len) {\ - int val = value;\ - s->bi_buf |= (ush)val << s->bi_valid;\ - put_short(s, s->bi_buf);\ - s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\ - s->bi_valid += len - Buf_size;\ - } else {\ - s->bi_buf |= (ush)(value) << s->bi_valid;\ - s->bi_valid += len;\ - }\ -} -#endif /* DEBUG */ - - -/* the arguments must not have side effects */ - -/* =========================================================================== - * Initialize the various 'constant' tables. - */ -local void tr_static_init() -{ -#if defined(GEN_TREES_H) || !defined(STDC) - static int static_init_done = 0; - int n; /* iterates over tree elements */ - int bits; /* bit counter */ - int length; /* length value */ - int code; /* code value */ - int dist; /* distance index */ - ush bl_count[MAX_BITS+1]; - /* number of codes at each bit length for an optimal tree */ - - if (static_init_done) return; - - /* For some embedded targets, global variables are not initialized: */ -#ifdef NO_INIT_GLOBAL_POINTERS - static_l_desc.static_tree = static_ltree; - static_l_desc.extra_bits = extra_lbits; - static_d_desc.static_tree = static_dtree; - static_d_desc.extra_bits = extra_dbits; - static_bl_desc.extra_bits = extra_blbits; -#endif - - /* Initialize the mapping length (0..255) -> length code (0..28) */ - length = 0; - for (code = 0; code < LENGTH_CODES-1; code++) { - base_length[code] = length; - for (n = 0; n < (1< dist code (0..29) */ - dist = 0; - for (code = 0 ; code < 16; code++) { - base_dist[code] = dist; - for (n = 0; n < (1<>= 7; /* from now on, all distances are divided by 128 */ - for ( ; code < D_CODES; code++) { - base_dist[code] = dist << 7; - for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) { - _dist_code[256 + dist++] = (uch)code; - } - } - Assert (dist == 256, "tr_static_init: 256+dist != 512"); - - /* Construct the codes of the static literal tree */ - for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0; - n = 0; - while (n <= 143) static_ltree[n++].Len = 8, bl_count[8]++; - while (n <= 255) static_ltree[n++].Len = 9, bl_count[9]++; - while (n <= 279) static_ltree[n++].Len = 7, bl_count[7]++; - while (n <= 287) static_ltree[n++].Len = 8, bl_count[8]++; - /* Codes 286 and 287 do not exist, but we must include them in the - * tree construction to get a canonical Huffman tree (longest code - * all ones) - */ - gen_codes((ct_data *)static_ltree, L_CODES+1, bl_count); - - /* The static distance tree is trivial: */ - for (n = 0; n < D_CODES; n++) { - static_dtree[n].Len = 5; - static_dtree[n].Code = bi_reverse((unsigned)n, 5); - } - static_init_done = 1; - -# ifdef GEN_TREES_H - gen_trees_header(); -# endif -#endif /* defined(GEN_TREES_H) || !defined(STDC) */ -} - -/* =========================================================================== - * Genererate the file trees.h describing the static trees. - */ -#ifdef GEN_TREES_H -# ifndef DEBUG -# include -# endif - -# define SEPARATOR(i, last, width) \ - ((i) == (last)? "\n};\n\n" : \ - ((i) % (width) == (width)-1 ? ",\n" : ", ")) - -void gen_trees_header() -{ - FILE *header = fopen("trees.h", "w"); - int i; - - Assert (header != NULL, "Can't open trees.h"); - fprintf(header, - "/* header created automatically with -DGEN_TREES_H */\n\n"); - - fprintf(header, "local const ct_data static_ltree[L_CODES+2] = {\n"); - for (i = 0; i < L_CODES+2; i++) { - fprintf(header, "{{%3u},{%3u}}%s", static_ltree[i].Code, - static_ltree[i].Len, SEPARATOR(i, L_CODES+1, 5)); - } - - fprintf(header, "local const ct_data static_dtree[D_CODES] = {\n"); - for (i = 0; i < D_CODES; i++) { - fprintf(header, "{{%2u},{%2u}}%s", static_dtree[i].Code, - static_dtree[i].Len, SEPARATOR(i, D_CODES-1, 5)); - } - - fprintf(header, "const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = {\n"); - for (i = 0; i < DIST_CODE_LEN; i++) { - fprintf(header, "%2u%s", _dist_code[i], - SEPARATOR(i, DIST_CODE_LEN-1, 20)); - } - - fprintf(header, - "const uch ZLIB_INTERNAL _length_code[MAX_MATCH-MIN_MATCH+1]= {\n"); - for (i = 0; i < MAX_MATCH-MIN_MATCH+1; i++) { - fprintf(header, "%2u%s", _length_code[i], - SEPARATOR(i, MAX_MATCH-MIN_MATCH, 20)); - } - - fprintf(header, "local const int base_length[LENGTH_CODES] = {\n"); - for (i = 0; i < LENGTH_CODES; i++) { - fprintf(header, "%1u%s", base_length[i], - SEPARATOR(i, LENGTH_CODES-1, 20)); - } - - fprintf(header, "local const int base_dist[D_CODES] = {\n"); - for (i = 0; i < D_CODES; i++) { - fprintf(header, "%5u%s", base_dist[i], - SEPARATOR(i, D_CODES-1, 10)); - } - - fclose(header); -} -#endif /* GEN_TREES_H */ - -/* =========================================================================== - * Initialize the tree data structures for a new zlib stream. - */ -void ZLIB_INTERNAL _tr_init(s) - deflate_state *s; -{ - tr_static_init(); - - s->l_desc.dyn_tree = s->dyn_ltree; - s->l_desc.stat_desc = &static_l_desc; - - s->d_desc.dyn_tree = s->dyn_dtree; - s->d_desc.stat_desc = &static_d_desc; - - s->bl_desc.dyn_tree = s->bl_tree; - s->bl_desc.stat_desc = &static_bl_desc; - - s->bi_buf = 0; - s->bi_valid = 0; -#ifdef DEBUG - s->compressed_len = 0L; - s->bits_sent = 0L; -#endif - - /* Initialize the first block of the first file: */ - init_block(s); -} - -/* =========================================================================== - * Initialize a new block. - */ -local void init_block(s) - deflate_state *s; -{ - int n; /* iterates over tree elements */ - - /* Initialize the trees. */ - for (n = 0; n < L_CODES; n++) s->dyn_ltree[n].Freq = 0; - for (n = 0; n < D_CODES; n++) s->dyn_dtree[n].Freq = 0; - for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0; - - s->dyn_ltree[END_BLOCK].Freq = 1; - s->opt_len = s->static_len = 0L; - s->last_lit = s->matches = 0; -} - -#define SMALLEST 1 -/* Index within the heap array of least frequent node in the Huffman tree */ - - -/* =========================================================================== - * Remove the smallest element from the heap and recreate the heap with - * one less element. Updates heap and heap_len. - */ -#define pqremove(s, tree, top) \ -{\ - top = s->heap[SMALLEST]; \ - s->heap[SMALLEST] = s->heap[s->heap_len--]; \ - pqdownheap(s, tree, SMALLEST); \ -} - -/* =========================================================================== - * Compares to subtrees, using the tree depth as tie breaker when - * the subtrees have equal frequency. This minimizes the worst case length. - */ -#define smaller(tree, n, m, depth) \ - (tree[n].Freq < tree[m].Freq || \ - (tree[n].Freq == tree[m].Freq && depth[n] <= depth[m])) - -/* =========================================================================== - * Restore the heap property by moving down the tree starting at node k, - * exchanging a node with the smallest of its two sons if necessary, stopping - * when the heap property is re-established (each father smaller than its - * two sons). - */ -local void pqdownheap(s, tree, k) - deflate_state *s; - ct_data *tree; /* the tree to restore */ - int k; /* node to move down */ -{ - int v = s->heap[k]; - int j = k << 1; /* left son of k */ - while (j <= s->heap_len) { - /* Set j to the smallest of the two sons: */ - if (j < s->heap_len && - smaller(tree, s->heap[j+1], s->heap[j], s->depth)) { - j++; - } - /* Exit if v is smaller than both sons */ - if (smaller(tree, v, s->heap[j], s->depth)) break; - - /* Exchange v with the smallest son */ - s->heap[k] = s->heap[j]; k = j; - - /* And continue down the tree, setting j to the left son of k */ - j <<= 1; - } - s->heap[k] = v; -} - -/* =========================================================================== - * Compute the optimal bit lengths for a tree and update the total bit length - * for the current block. - * IN assertion: the fields freq and dad are set, heap[heap_max] and - * above are the tree nodes sorted by increasing frequency. - * OUT assertions: the field len is set to the optimal bit length, the - * array bl_count contains the frequencies for each bit length. - * The length opt_len is updated; static_len is also updated if stree is - * not null. - */ -local void gen_bitlen(s, desc) - deflate_state *s; - tree_desc *desc; /* the tree descriptor */ -{ - ct_data *tree = desc->dyn_tree; - int max_code = desc->max_code; - const ct_data *stree = desc->stat_desc->static_tree; - const intf *extra = desc->stat_desc->extra_bits; - int base = desc->stat_desc->extra_base; - int max_length = desc->stat_desc->max_length; - int h; /* heap index */ - int n, m; /* iterate over the tree elements */ - int bits; /* bit length */ - int xbits; /* extra bits */ - ush f; /* frequency */ - int overflow = 0; /* number of elements with bit length too large */ - - for (bits = 0; bits <= MAX_BITS; bits++) s->bl_count[bits] = 0; - - /* In a first pass, compute the optimal bit lengths (which may - * overflow in the case of the bit length tree). - */ - tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */ - - for (h = s->heap_max+1; h < HEAP_SIZE; h++) { - n = s->heap[h]; - bits = tree[tree[n].Dad].Len + 1; - if (bits > max_length) bits = max_length, overflow++; - tree[n].Len = (ush)bits; - /* We overwrite tree[n].Dad which is no longer needed */ - - if (n > max_code) continue; /* not a leaf node */ - - s->bl_count[bits]++; - xbits = 0; - if (n >= base) xbits = extra[n-base]; - f = tree[n].Freq; - s->opt_len += (ulg)f * (bits + xbits); - if (stree) s->static_len += (ulg)f * (stree[n].Len + xbits); - } - if (overflow == 0) return; - - Trace((stderr,"\nbit length overflow\n")); - /* This happens for example on obj2 and pic of the Calgary corpus */ - - /* Find the first bit length which could increase: */ - do { - bits = max_length-1; - while (s->bl_count[bits] == 0) bits--; - s->bl_count[bits]--; /* move one leaf down the tree */ - s->bl_count[bits+1] += 2; /* move one overflow item as its brother */ - s->bl_count[max_length]--; - /* The brother of the overflow item also moves one step up, - * but this does not affect bl_count[max_length] - */ - overflow -= 2; - } while (overflow > 0); - - /* Now recompute all bit lengths, scanning in increasing frequency. - * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all - * lengths instead of fixing only the wrong ones. This idea is taken - * from 'ar' written by Haruhiko Okumura.) - */ - for (bits = max_length; bits != 0; bits--) { - n = s->bl_count[bits]; - while (n != 0) { - m = s->heap[--h]; - if (m > max_code) continue; - if ((unsigned) tree[m].Len != (unsigned) bits) { - Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); - s->opt_len += ((long)bits - (long)tree[m].Len) - *(long)tree[m].Freq; - tree[m].Len = (ush)bits; - } - n--; - } - } -} - -/* =========================================================================== - * Generate the codes for a given tree and bit counts (which need not be - * optimal). - * IN assertion: the array bl_count contains the bit length statistics for - * the given tree and the field len is set for all tree elements. - * OUT assertion: the field code is set for all tree elements of non - * zero code length. - */ -local void gen_codes (tree, max_code, bl_count) - ct_data *tree; /* the tree to decorate */ - int max_code; /* largest code with non zero frequency */ - ushf *bl_count; /* number of codes at each bit length */ -{ - ush next_code[MAX_BITS+1]; /* next code value for each bit length */ - ush code = 0; /* running code value */ - int bits; /* bit index */ - int n; /* code index */ - - /* The distribution counts are first used to generate the code values - * without bit reversal. - */ - for (bits = 1; bits <= MAX_BITS; bits++) { - next_code[bits] = code = (code + bl_count[bits-1]) << 1; - } - /* Check that the bit counts in bl_count are consistent. The last code - * must be all ones. - */ - Assert (code + bl_count[MAX_BITS]-1 == (1<dyn_tree; - const ct_data *stree = desc->stat_desc->static_tree; - int elems = desc->stat_desc->elems; - int n, m; /* iterate over heap elements */ - int max_code = -1; /* largest code with non zero frequency */ - int node; /* new node being created */ - - /* Construct the initial heap, with least frequent element in - * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. - * heap[0] is not used. - */ - s->heap_len = 0, s->heap_max = HEAP_SIZE; - - for (n = 0; n < elems; n++) { - if (tree[n].Freq != 0) { - s->heap[++(s->heap_len)] = max_code = n; - s->depth[n] = 0; - } else { - tree[n].Len = 0; - } - } - - /* The pkzip format requires that at least one distance code exists, - * and that at least one bit should be sent even if there is only one - * possible code. So to avoid special checks later on we force at least - * two codes of non zero frequency. - */ - while (s->heap_len < 2) { - node = s->heap[++(s->heap_len)] = (max_code < 2 ? ++max_code : 0); - tree[node].Freq = 1; - s->depth[node] = 0; - s->opt_len--; if (stree) s->static_len -= stree[node].Len; - /* node is 0 or 1 so it does not have extra bits */ - } - desc->max_code = max_code; - - /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, - * establish sub-heaps of increasing lengths: - */ - for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n); - - /* Construct the Huffman tree by repeatedly combining the least two - * frequent nodes. - */ - node = elems; /* next internal node of the tree */ - do { - pqremove(s, tree, n); /* n = node of least frequency */ - m = s->heap[SMALLEST]; /* m = node of next least frequency */ - - s->heap[--(s->heap_max)] = n; /* keep the nodes sorted by frequency */ - s->heap[--(s->heap_max)] = m; - - /* Create a new node father of n and m */ - tree[node].Freq = tree[n].Freq + tree[m].Freq; - s->depth[node] = (uch)((s->depth[n] >= s->depth[m] ? - s->depth[n] : s->depth[m]) + 1); - tree[n].Dad = tree[m].Dad = (ush)node; -#ifdef DUMP_BL_TREE - if (tree == s->bl_tree) { - fprintf(stderr,"\nnode %d(%d), sons %d(%d) %d(%d)", - node, tree[node].Freq, n, tree[n].Freq, m, tree[m].Freq); - } -#endif - /* and insert the new node in the heap */ - s->heap[SMALLEST] = node++; - pqdownheap(s, tree, SMALLEST); - - } while (s->heap_len >= 2); - - s->heap[--(s->heap_max)] = s->heap[SMALLEST]; - - /* At this point, the fields freq and dad are set. We can now - * generate the bit lengths. - */ - gen_bitlen(s, (tree_desc *)desc); - - /* The field len is now set, we can generate the bit codes */ - gen_codes ((ct_data *)tree, max_code, s->bl_count); -} - -/* =========================================================================== - * Scan a literal or distance tree to determine the frequencies of the codes - * in the bit length tree. - */ -local void scan_tree (s, tree, max_code) - deflate_state *s; - ct_data *tree; /* the tree to be scanned */ - int max_code; /* and its largest code of non zero frequency */ -{ - int n; /* iterates over all tree elements */ - int prevlen = -1; /* last emitted length */ - int curlen; /* length of current code */ - int nextlen = tree[0].Len; /* length of next code */ - int count = 0; /* repeat count of the current code */ - int max_count = 7; /* max repeat count */ - int min_count = 4; /* min repeat count */ - - if (nextlen == 0) max_count = 138, min_count = 3; - tree[max_code+1].Len = (ush)0xffff; /* guard */ - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; nextlen = tree[n+1].Len; - if (++count < max_count && curlen == nextlen) { - continue; - } else if (count < min_count) { - s->bl_tree[curlen].Freq += count; - } else if (curlen != 0) { - if (curlen != prevlen) s->bl_tree[curlen].Freq++; - s->bl_tree[REP_3_6].Freq++; - } else if (count <= 10) { - s->bl_tree[REPZ_3_10].Freq++; - } else { - s->bl_tree[REPZ_11_138].Freq++; - } - count = 0; prevlen = curlen; - if (nextlen == 0) { - max_count = 138, min_count = 3; - } else if (curlen == nextlen) { - max_count = 6, min_count = 3; - } else { - max_count = 7, min_count = 4; - } - } -} - -/* =========================================================================== - * Send a literal or distance tree in compressed form, using the codes in - * bl_tree. - */ -local void send_tree (s, tree, max_code) - deflate_state *s; - ct_data *tree; /* the tree to be scanned */ - int max_code; /* and its largest code of non zero frequency */ -{ - int n; /* iterates over all tree elements */ - int prevlen = -1; /* last emitted length */ - int curlen; /* length of current code */ - int nextlen = tree[0].Len; /* length of next code */ - int count = 0; /* repeat count of the current code */ - int max_count = 7; /* max repeat count */ - int min_count = 4; /* min repeat count */ - - /* tree[max_code+1].Len = -1; */ /* guard already set */ - if (nextlen == 0) max_count = 138, min_count = 3; - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; nextlen = tree[n+1].Len; - if (++count < max_count && curlen == nextlen) { - continue; - } else if (count < min_count) { - do { send_code(s, curlen, s->bl_tree); } while (--count != 0); - - } else if (curlen != 0) { - if (curlen != prevlen) { - send_code(s, curlen, s->bl_tree); count--; - } - Assert(count >= 3 && count <= 6, " 3_6?"); - send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2); - - } else if (count <= 10) { - send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3); - - } else { - send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7); - } - count = 0; prevlen = curlen; - if (nextlen == 0) { - max_count = 138, min_count = 3; - } else if (curlen == nextlen) { - max_count = 6, min_count = 3; - } else { - max_count = 7, min_count = 4; - } - } -} - -/* =========================================================================== - * Construct the Huffman tree for the bit lengths and return the index in - * bl_order of the last bit length code to send. - */ -local int build_bl_tree(s) - deflate_state *s; -{ - int max_blindex; /* index of last bit length code of non zero freq */ - - /* Determine the bit length frequencies for literal and distance trees */ - scan_tree(s, (ct_data *)s->dyn_ltree, s->l_desc.max_code); - scan_tree(s, (ct_data *)s->dyn_dtree, s->d_desc.max_code); - - /* Build the bit length tree: */ - build_tree(s, (tree_desc *)(&(s->bl_desc))); - /* opt_len now includes the length of the tree representations, except - * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. - */ - - /* Determine the number of bit length codes to send. The pkzip format - * requires that at least 4 bit length codes be sent. (appnote.txt says - * 3 but the actual value used is 4.) - */ - for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) { - if (s->bl_tree[bl_order[max_blindex]].Len != 0) break; - } - /* Update opt_len to include the bit length tree and counts */ - s->opt_len += 3*(max_blindex+1) + 5+5+4; - Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", - s->opt_len, s->static_len)); - - return max_blindex; -} - -/* =========================================================================== - * Send the header for a block using dynamic Huffman trees: the counts, the - * lengths of the bit length codes, the literal tree and the distance tree. - * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. - */ -local void send_all_trees(s, lcodes, dcodes, blcodes) - deflate_state *s; - int lcodes, dcodes, blcodes; /* number of codes for each tree */ -{ - int rank; /* index in bl_order */ - - Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); - Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, - "too many codes"); - Tracev((stderr, "\nbl counts: ")); - send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */ - send_bits(s, dcodes-1, 5); - send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */ - for (rank = 0; rank < blcodes; rank++) { - Tracev((stderr, "\nbl code %2d ", bl_order[rank])); - send_bits(s, s->bl_tree[bl_order[rank]].Len, 3); - } - Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); - - send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */ - Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); - - send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */ - Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); -} - -/* =========================================================================== - * Send a stored block - */ -void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last) - deflate_state *s; - charf *buf; /* input block */ - ulg stored_len; /* length of input block */ - int last; /* one if this is the last block for a file */ -{ - send_bits(s, (STORED_BLOCK<<1)+last, 3); /* send block type */ -#ifdef DEBUG - s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; - s->compressed_len += (stored_len + 4) << 3; -#endif - copy_block(s, buf, (unsigned)stored_len, 1); /* with header */ -} - -/* =========================================================================== - * Flush the bits in the bit buffer to pending output (leaves at most 7 bits) - */ -void ZLIB_INTERNAL _tr_flush_bits(s) - deflate_state *s; -{ - bi_flush(s); -} - -/* =========================================================================== - * Send one empty static block to give enough lookahead for inflate. - * This takes 10 bits, of which 7 may remain in the bit buffer. - */ -void ZLIB_INTERNAL _tr_align(s) - deflate_state *s; -{ - send_bits(s, STATIC_TREES<<1, 3); - send_code(s, END_BLOCK, static_ltree); -#ifdef DEBUG - s->compressed_len += 10L; /* 3 for block type, 7 for EOB */ -#endif - bi_flush(s); -} - -/* =========================================================================== - * Determine the best encoding for the current block: dynamic trees, static - * trees or store, and output the encoded block to the zip file. - */ -void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) - deflate_state *s; - charf *buf; /* input block, or NULL if too old */ - ulg stored_len; /* length of input block */ - int last; /* one if this is the last block for a file */ -{ - ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */ - int max_blindex = 0; /* index of last bit length code of non zero freq */ - - /* Build the Huffman trees unless a stored block is forced */ - if (s->level > 0) { - - /* Check if the file is binary or text */ - if (s->strm->data_type == Z_UNKNOWN) - s->strm->data_type = detect_data_type(s); - - /* Construct the literal and distance trees */ - build_tree(s, (tree_desc *)(&(s->l_desc))); - Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, - s->static_len)); - - build_tree(s, (tree_desc *)(&(s->d_desc))); - Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, - s->static_len)); - /* At this point, opt_len and static_len are the total bit lengths of - * the compressed block data, excluding the tree representations. - */ - - /* Build the bit length tree for the above two trees, and get the index - * in bl_order of the last bit length code to send. - */ - max_blindex = build_bl_tree(s); - - /* Determine the best encoding. Compute the block lengths in bytes. */ - opt_lenb = (s->opt_len+3+7)>>3; - static_lenb = (s->static_len+3+7)>>3; - - Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", - opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, - s->last_lit)); - - if (static_lenb <= opt_lenb) opt_lenb = static_lenb; - - } else { - Assert(buf != (char*)0, "lost buf"); - opt_lenb = static_lenb = stored_len + 5; /* force a stored block */ - } - -#ifdef FORCE_STORED - if (buf != (char*)0) { /* force stored block */ -#else - if (stored_len+4 <= opt_lenb && buf != (char*)0) { - /* 4: two words for the lengths */ -#endif - /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. - * Otherwise we can't have processed more than WSIZE input bytes since - * the last block flush, because compression would have been - * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to - * transform a block into a stored block. - */ - _tr_stored_block(s, buf, stored_len, last); - -#ifdef FORCE_STATIC - } else if (static_lenb >= 0) { /* force static trees */ -#else - } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) { -#endif - send_bits(s, (STATIC_TREES<<1)+last, 3); - compress_block(s, (const ct_data *)static_ltree, - (const ct_data *)static_dtree); -#ifdef DEBUG - s->compressed_len += 3 + s->static_len; -#endif - } else { - send_bits(s, (DYN_TREES<<1)+last, 3); - send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1, - max_blindex+1); - compress_block(s, (const ct_data *)s->dyn_ltree, - (const ct_data *)s->dyn_dtree); -#ifdef DEBUG - s->compressed_len += 3 + s->opt_len; -#endif - } - Assert (s->compressed_len == s->bits_sent, "bad compressed size"); - /* The above check is made mod 2^32, for files larger than 512 MB - * and uLong implemented on 32 bits. - */ - init_block(s); - - if (last) { - bi_windup(s); -#ifdef DEBUG - s->compressed_len += 7; /* align on byte boundary */ -#endif - } - Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, - s->compressed_len-7*last)); -} - -/* =========================================================================== - * Save the match info and tally the frequency counts. Return true if - * the current block must be flushed. - */ -int ZLIB_INTERNAL _tr_tally (s, dist, lc) - deflate_state *s; - unsigned dist; /* distance of matched string */ - unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ -{ - s->d_buf[s->last_lit] = (ush)dist; - s->l_buf[s->last_lit++] = (uch)lc; - if (dist == 0) { - /* lc is the unmatched char */ - s->dyn_ltree[lc].Freq++; - } else { - s->matches++; - /* Here, lc is the match length - MIN_MATCH */ - dist--; /* dist = match distance - 1 */ - Assert((ush)dist < (ush)MAX_DIST(s) && - (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && - (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); - - s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++; - s->dyn_dtree[d_code(dist)].Freq++; - } - -#ifdef TRUNCATE_BLOCK - /* Try to guess if it is profitable to stop the current block here */ - if ((s->last_lit & 0x1fff) == 0 && s->level > 2) { - /* Compute an upper bound for the compressed length */ - ulg out_length = (ulg)s->last_lit*8L; - ulg in_length = (ulg)((long)s->strstart - s->block_start); - int dcode; - for (dcode = 0; dcode < D_CODES; dcode++) { - out_length += (ulg)s->dyn_dtree[dcode].Freq * - (5L+extra_dbits[dcode]); - } - out_length >>= 3; - Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", - s->last_lit, in_length, out_length, - 100L - out_length*100L/in_length)); - if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1; - } -#endif - return (s->last_lit == s->lit_bufsize-1); - /* We avoid equality with lit_bufsize because of wraparound at 64K - * on 16 bit machines and because stored blocks are restricted to - * 64K-1 bytes. - */ -} - -/* =========================================================================== - * Send the block data compressed using the given Huffman trees - */ -local void compress_block(s, ltree, dtree) - deflate_state *s; - const ct_data *ltree; /* literal tree */ - const ct_data *dtree; /* distance tree */ -{ - unsigned dist; /* distance of matched string */ - int lc; /* match length or unmatched char (if dist == 0) */ - unsigned lx = 0; /* running index in l_buf */ - unsigned code; /* the code to send */ - int extra; /* number of extra bits to send */ - - if (s->last_lit != 0) do { - dist = s->d_buf[lx]; - lc = s->l_buf[lx++]; - if (dist == 0) { - send_code(s, lc, ltree); /* send a literal byte */ - Tracecv(isgraph(lc), (stderr," '%c' ", lc)); - } else { - /* Here, lc is the match length - MIN_MATCH */ - code = _length_code[lc]; - send_code(s, code+LITERALS+1, ltree); /* send the length code */ - extra = extra_lbits[code]; - if (extra != 0) { - lc -= base_length[code]; - send_bits(s, lc, extra); /* send the extra length bits */ - } - dist--; /* dist is now the match distance - 1 */ - code = d_code(dist); - Assert (code < D_CODES, "bad d_code"); - - send_code(s, code, dtree); /* send the distance code */ - extra = extra_dbits[code]; - if (extra != 0) { - dist -= base_dist[code]; - send_bits(s, dist, extra); /* send the extra distance bits */ - } - } /* literal or match pair ? */ - - /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ - Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, - "pendingBuf overflow"); - - } while (lx < s->last_lit); - - send_code(s, END_BLOCK, ltree); -} - -/* =========================================================================== - * Check if the data type is TEXT or BINARY, using the following algorithm: - * - TEXT if the two conditions below are satisfied: - * a) There are no non-portable control characters belonging to the - * "black list" (0..6, 14..25, 28..31). - * b) There is at least one printable character belonging to the - * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). - * - BINARY otherwise. - * - The following partially-portable control characters form a - * "gray list" that is ignored in this detection algorithm: - * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). - * IN assertion: the fields Freq of dyn_ltree are set. - */ -local int detect_data_type(s) - deflate_state *s; -{ - /* black_mask is the bit mask of black-listed bytes - * set bits 0..6, 14..25, and 28..31 - * 0xf3ffc07f = binary 11110011111111111100000001111111 - */ - unsigned long black_mask = 0xf3ffc07fUL; - int n; - - /* Check for non-textual ("black-listed") bytes. */ - for (n = 0; n <= 31; n++, black_mask >>= 1) - if ((black_mask & 1) && (s->dyn_ltree[n].Freq != 0)) - return Z_BINARY; - - /* Check for textual ("white-listed") bytes. */ - if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0 - || s->dyn_ltree[13].Freq != 0) - return Z_TEXT; - for (n = 32; n < LITERALS; n++) - if (s->dyn_ltree[n].Freq != 0) - return Z_TEXT; - - /* There are no "black-listed" or "white-listed" bytes: - * this stream either is empty or has tolerated ("gray-listed") bytes only. - */ - return Z_BINARY; -} - -/* =========================================================================== - * Reverse the first len bits of a code, using straightforward code (a faster - * method would use a table) - * IN assertion: 1 <= len <= 15 - */ -local unsigned bi_reverse(code, len) - unsigned code; /* the value to invert */ - int len; /* its bit length */ -{ - register unsigned res = 0; - do { - res |= code & 1; - code >>= 1, res <<= 1; - } while (--len > 0); - return res >> 1; -} - -/* =========================================================================== - * Flush the bit buffer, keeping at most 7 bits in it. - */ -local void bi_flush(s) - deflate_state *s; -{ - if (s->bi_valid == 16) { - put_short(s, s->bi_buf); - s->bi_buf = 0; - s->bi_valid = 0; - } else if (s->bi_valid >= 8) { - put_byte(s, (Byte)s->bi_buf); - s->bi_buf >>= 8; - s->bi_valid -= 8; - } -} - -/* =========================================================================== - * Flush the bit buffer and align the output on a byte boundary - */ -local void bi_windup(s) - deflate_state *s; -{ - if (s->bi_valid > 8) { - put_short(s, s->bi_buf); - } else if (s->bi_valid > 0) { - put_byte(s, (Byte)s->bi_buf); - } - s->bi_buf = 0; - s->bi_valid = 0; -#ifdef DEBUG - s->bits_sent = (s->bits_sent+7) & ~7; -#endif -} - -/* =========================================================================== - * Copy a stored block, storing first the length and its - * one's complement if requested. - */ -local void copy_block(s, buf, len, header) - deflate_state *s; - charf *buf; /* the input data */ - unsigned len; /* its length */ - int header; /* true if block header must be written */ -{ - bi_windup(s); /* align on byte boundary */ - - if (header) { - put_short(s, (ush)len); - put_short(s, (ush)~len); -#ifdef DEBUG - s->bits_sent += 2*16; -#endif - } -#ifdef DEBUG - s->bits_sent += (ulg)len<<3; -#endif - while (len--) { - put_byte(s, *buf++); - } -} diff --git a/io2d/src/3rd-party/zlib/trees.h b/io2d/src/3rd-party/zlib/trees.h deleted file mode 100644 index d35639d..0000000 --- a/io2d/src/3rd-party/zlib/trees.h +++ /dev/null @@ -1,128 +0,0 @@ -/* header created automatically with -DGEN_TREES_H */ - -local const ct_data static_ltree[L_CODES+2] = { -{{ 12},{ 8}}, {{140},{ 8}}, {{ 76},{ 8}}, {{204},{ 8}}, {{ 44},{ 8}}, -{{172},{ 8}}, {{108},{ 8}}, {{236},{ 8}}, {{ 28},{ 8}}, {{156},{ 8}}, -{{ 92},{ 8}}, {{220},{ 8}}, {{ 60},{ 8}}, {{188},{ 8}}, {{124},{ 8}}, -{{252},{ 8}}, {{ 2},{ 8}}, {{130},{ 8}}, {{ 66},{ 8}}, {{194},{ 8}}, -{{ 34},{ 8}}, {{162},{ 8}}, {{ 98},{ 8}}, {{226},{ 8}}, {{ 18},{ 8}}, -{{146},{ 8}}, {{ 82},{ 8}}, {{210},{ 8}}, {{ 50},{ 8}}, {{178},{ 8}}, -{{114},{ 8}}, {{242},{ 8}}, {{ 10},{ 8}}, {{138},{ 8}}, {{ 74},{ 8}}, -{{202},{ 8}}, {{ 42},{ 8}}, {{170},{ 8}}, {{106},{ 8}}, {{234},{ 8}}, -{{ 26},{ 8}}, {{154},{ 8}}, {{ 90},{ 8}}, {{218},{ 8}}, {{ 58},{ 8}}, -{{186},{ 8}}, {{122},{ 8}}, {{250},{ 8}}, {{ 6},{ 8}}, {{134},{ 8}}, -{{ 70},{ 8}}, {{198},{ 8}}, {{ 38},{ 8}}, {{166},{ 8}}, {{102},{ 8}}, -{{230},{ 8}}, {{ 22},{ 8}}, {{150},{ 8}}, {{ 86},{ 8}}, {{214},{ 8}}, -{{ 54},{ 8}}, {{182},{ 8}}, {{118},{ 8}}, {{246},{ 8}}, {{ 14},{ 8}}, -{{142},{ 8}}, {{ 78},{ 8}}, {{206},{ 8}}, {{ 46},{ 8}}, {{174},{ 8}}, -{{110},{ 8}}, {{238},{ 8}}, {{ 30},{ 8}}, {{158},{ 8}}, {{ 94},{ 8}}, -{{222},{ 8}}, {{ 62},{ 8}}, {{190},{ 8}}, {{126},{ 8}}, {{254},{ 8}}, -{{ 1},{ 8}}, {{129},{ 8}}, {{ 65},{ 8}}, {{193},{ 8}}, {{ 33},{ 8}}, -{{161},{ 8}}, {{ 97},{ 8}}, {{225},{ 8}}, {{ 17},{ 8}}, {{145},{ 8}}, -{{ 81},{ 8}}, {{209},{ 8}}, {{ 49},{ 8}}, {{177},{ 8}}, {{113},{ 8}}, -{{241},{ 8}}, {{ 9},{ 8}}, {{137},{ 8}}, {{ 73},{ 8}}, {{201},{ 8}}, -{{ 41},{ 8}}, {{169},{ 8}}, {{105},{ 8}}, {{233},{ 8}}, {{ 25},{ 8}}, -{{153},{ 8}}, {{ 89},{ 8}}, {{217},{ 8}}, {{ 57},{ 8}}, {{185},{ 8}}, -{{121},{ 8}}, {{249},{ 8}}, {{ 5},{ 8}}, {{133},{ 8}}, {{ 69},{ 8}}, -{{197},{ 8}}, {{ 37},{ 8}}, {{165},{ 8}}, {{101},{ 8}}, {{229},{ 8}}, -{{ 21},{ 8}}, {{149},{ 8}}, {{ 85},{ 8}}, {{213},{ 8}}, {{ 53},{ 8}}, -{{181},{ 8}}, {{117},{ 8}}, {{245},{ 8}}, {{ 13},{ 8}}, {{141},{ 8}}, -{{ 77},{ 8}}, {{205},{ 8}}, {{ 45},{ 8}}, {{173},{ 8}}, {{109},{ 8}}, -{{237},{ 8}}, {{ 29},{ 8}}, {{157},{ 8}}, {{ 93},{ 8}}, {{221},{ 8}}, -{{ 61},{ 8}}, {{189},{ 8}}, {{125},{ 8}}, {{253},{ 8}}, {{ 19},{ 9}}, -{{275},{ 9}}, {{147},{ 9}}, {{403},{ 9}}, {{ 83},{ 9}}, {{339},{ 9}}, -{{211},{ 9}}, {{467},{ 9}}, {{ 51},{ 9}}, {{307},{ 9}}, {{179},{ 9}}, -{{435},{ 9}}, {{115},{ 9}}, {{371},{ 9}}, {{243},{ 9}}, {{499},{ 9}}, -{{ 11},{ 9}}, {{267},{ 9}}, {{139},{ 9}}, {{395},{ 9}}, {{ 75},{ 9}}, -{{331},{ 9}}, {{203},{ 9}}, {{459},{ 9}}, {{ 43},{ 9}}, {{299},{ 9}}, -{{171},{ 9}}, {{427},{ 9}}, {{107},{ 9}}, {{363},{ 9}}, {{235},{ 9}}, -{{491},{ 9}}, {{ 27},{ 9}}, {{283},{ 9}}, {{155},{ 9}}, {{411},{ 9}}, -{{ 91},{ 9}}, {{347},{ 9}}, {{219},{ 9}}, {{475},{ 9}}, {{ 59},{ 9}}, -{{315},{ 9}}, {{187},{ 9}}, {{443},{ 9}}, {{123},{ 9}}, {{379},{ 9}}, -{{251},{ 9}}, {{507},{ 9}}, {{ 7},{ 9}}, {{263},{ 9}}, {{135},{ 9}}, -{{391},{ 9}}, {{ 71},{ 9}}, {{327},{ 9}}, {{199},{ 9}}, {{455},{ 9}}, -{{ 39},{ 9}}, {{295},{ 9}}, {{167},{ 9}}, {{423},{ 9}}, {{103},{ 9}}, -{{359},{ 9}}, {{231},{ 9}}, {{487},{ 9}}, {{ 23},{ 9}}, {{279},{ 9}}, -{{151},{ 9}}, {{407},{ 9}}, {{ 87},{ 9}}, {{343},{ 9}}, {{215},{ 9}}, -{{471},{ 9}}, {{ 55},{ 9}}, {{311},{ 9}}, {{183},{ 9}}, {{439},{ 9}}, -{{119},{ 9}}, {{375},{ 9}}, {{247},{ 9}}, {{503},{ 9}}, {{ 15},{ 9}}, -{{271},{ 9}}, {{143},{ 9}}, {{399},{ 9}}, {{ 79},{ 9}}, {{335},{ 9}}, -{{207},{ 9}}, {{463},{ 9}}, {{ 47},{ 9}}, {{303},{ 9}}, {{175},{ 9}}, -{{431},{ 9}}, {{111},{ 9}}, {{367},{ 9}}, {{239},{ 9}}, {{495},{ 9}}, -{{ 31},{ 9}}, {{287},{ 9}}, {{159},{ 9}}, {{415},{ 9}}, {{ 95},{ 9}}, -{{351},{ 9}}, {{223},{ 9}}, {{479},{ 9}}, {{ 63},{ 9}}, {{319},{ 9}}, -{{191},{ 9}}, {{447},{ 9}}, {{127},{ 9}}, {{383},{ 9}}, {{255},{ 9}}, -{{511},{ 9}}, {{ 0},{ 7}}, {{ 64},{ 7}}, {{ 32},{ 7}}, {{ 96},{ 7}}, -{{ 16},{ 7}}, {{ 80},{ 7}}, {{ 48},{ 7}}, {{112},{ 7}}, {{ 8},{ 7}}, -{{ 72},{ 7}}, {{ 40},{ 7}}, {{104},{ 7}}, {{ 24},{ 7}}, {{ 88},{ 7}}, -{{ 56},{ 7}}, {{120},{ 7}}, {{ 4},{ 7}}, {{ 68},{ 7}}, {{ 36},{ 7}}, -{{100},{ 7}}, {{ 20},{ 7}}, {{ 84},{ 7}}, {{ 52},{ 7}}, {{116},{ 7}}, -{{ 3},{ 8}}, {{131},{ 8}}, {{ 67},{ 8}}, {{195},{ 8}}, {{ 35},{ 8}}, -{{163},{ 8}}, {{ 99},{ 8}}, {{227},{ 8}} -}; - -local const ct_data static_dtree[D_CODES] = { -{{ 0},{ 5}}, {{16},{ 5}}, {{ 8},{ 5}}, {{24},{ 5}}, {{ 4},{ 5}}, -{{20},{ 5}}, {{12},{ 5}}, {{28},{ 5}}, {{ 2},{ 5}}, {{18},{ 5}}, -{{10},{ 5}}, {{26},{ 5}}, {{ 6},{ 5}}, {{22},{ 5}}, {{14},{ 5}}, -{{30},{ 5}}, {{ 1},{ 5}}, {{17},{ 5}}, {{ 9},{ 5}}, {{25},{ 5}}, -{{ 5},{ 5}}, {{21},{ 5}}, {{13},{ 5}}, {{29},{ 5}}, {{ 3},{ 5}}, -{{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}} -}; - -const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = { - 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, - 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, -10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, -11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, -12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, -13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, -13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, -14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, -14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, -14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, -15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, -15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, -15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, -18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, -23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, -24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, -26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, -26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, -27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, -27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, -28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, -28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, -28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, -29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, -29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, -29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29 -}; - -const uch ZLIB_INTERNAL _length_code[MAX_MATCH-MIN_MATCH+1]= { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, -13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, -17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, -19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, -21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, -22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, -23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, -24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, -25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, -25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, -26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, -26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, -27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28 -}; - -local const int base_length[LENGTH_CODES] = { -0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, -64, 80, 96, 112, 128, 160, 192, 224, 0 -}; - -local const int base_dist[D_CODES] = { - 0, 1, 2, 3, 4, 6, 8, 12, 16, 24, - 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, - 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576 -}; - diff --git a/io2d/src/3rd-party/zlib/uncompr.c b/io2d/src/3rd-party/zlib/uncompr.c deleted file mode 100644 index 242e949..0000000 --- a/io2d/src/3rd-party/zlib/uncompr.c +++ /dev/null @@ -1,59 +0,0 @@ -/* uncompr.c -- decompress a memory buffer - * Copyright (C) 1995-2003, 2010 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#define ZLIB_INTERNAL -#include "zlib.h" - -/* =========================================================================== - Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total - size of the destination buffer, which must be large enough to hold the - entire uncompressed data. (The size of the uncompressed data must have - been saved previously by the compressor and transmitted to the decompressor - by some mechanism outside the scope of this compression library.) - Upon exit, destLen is the actual size of the compressed buffer. - - uncompress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer, or Z_DATA_ERROR if the input data was corrupted. -*/ -int ZEXPORT uncompress (dest, destLen, source, sourceLen) - Bytef *dest; - uLongf *destLen; - const Bytef *source; - uLong sourceLen; -{ - z_stream stream; - int err; - - stream.next_in = (z_const Bytef *)source; - stream.avail_in = (uInt)sourceLen; - /* Check for source > 64K on 16-bit machine: */ - if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; - - stream.next_out = dest; - stream.avail_out = (uInt)*destLen; - if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; - - stream.zalloc = (alloc_func)0; - stream.zfree = (free_func)0; - - err = inflateInit(&stream); - if (err != Z_OK) return err; - - err = inflate(&stream, Z_FINISH); - if (err != Z_STREAM_END) { - inflateEnd(&stream); - if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0)) - return Z_DATA_ERROR; - return err; - } - *destLen = stream.total_out; - - err = inflateEnd(&stream); - return err; -} diff --git a/io2d/src/3rd-party/zlib/watcom/watcom_f.mak b/io2d/src/3rd-party/zlib/watcom/watcom_f.mak deleted file mode 100644 index 37f4d74..0000000 --- a/io2d/src/3rd-party/zlib/watcom/watcom_f.mak +++ /dev/null @@ -1,43 +0,0 @@ -# Makefile for zlib -# OpenWatcom flat model -# Last updated: 28-Dec-2005 - -# To use, do "wmake -f watcom_f.mak" - -C_SOURCE = adler32.c compress.c crc32.c deflate.c & - gzclose.c gzlib.c gzread.c gzwrite.c & - infback.c inffast.c inflate.c inftrees.c & - trees.c uncompr.c zutil.c - -OBJS = adler32.obj compress.obj crc32.obj deflate.obj & - gzclose.obj gzlib.obj gzread.obj gzwrite.obj & - infback.obj inffast.obj inflate.obj inftrees.obj & - trees.obj uncompr.obj zutil.obj - -CC = wcc386 -LINKER = wcl386 -CFLAGS = -zq -mf -3r -fp3 -s -bt=dos -oilrtfm -fr=nul -wx -ZLIB_LIB = zlib_f.lib - -.C.OBJ: - $(CC) $(CFLAGS) $[@ - -all: $(ZLIB_LIB) example.exe minigzip.exe - -$(ZLIB_LIB): $(OBJS) - wlib -b -c $(ZLIB_LIB) -+adler32.obj -+compress.obj -+crc32.obj - wlib -b -c $(ZLIB_LIB) -+gzclose.obj -+gzlib.obj -+gzread.obj -+gzwrite.obj - wlib -b -c $(ZLIB_LIB) -+deflate.obj -+infback.obj - wlib -b -c $(ZLIB_LIB) -+inffast.obj -+inflate.obj -+inftrees.obj - wlib -b -c $(ZLIB_LIB) -+trees.obj -+uncompr.obj -+zutil.obj - -example.exe: $(ZLIB_LIB) example.obj - $(LINKER) -ldos32a -fe=example.exe example.obj $(ZLIB_LIB) - -minigzip.exe: $(ZLIB_LIB) minigzip.obj - $(LINKER) -ldos32a -fe=minigzip.exe minigzip.obj $(ZLIB_LIB) - -clean: .SYMBOLIC - del *.obj - del $(ZLIB_LIB) - @echo Cleaning done diff --git a/io2d/src/3rd-party/zlib/watcom/watcom_l.mak b/io2d/src/3rd-party/zlib/watcom/watcom_l.mak deleted file mode 100644 index 193eed7..0000000 --- a/io2d/src/3rd-party/zlib/watcom/watcom_l.mak +++ /dev/null @@ -1,43 +0,0 @@ -# Makefile for zlib -# OpenWatcom large model -# Last updated: 28-Dec-2005 - -# To use, do "wmake -f watcom_l.mak" - -C_SOURCE = adler32.c compress.c crc32.c deflate.c & - gzclose.c gzlib.c gzread.c gzwrite.c & - infback.c inffast.c inflate.c inftrees.c & - trees.c uncompr.c zutil.c - -OBJS = adler32.obj compress.obj crc32.obj deflate.obj & - gzclose.obj gzlib.obj gzread.obj gzwrite.obj & - infback.obj inffast.obj inflate.obj inftrees.obj & - trees.obj uncompr.obj zutil.obj - -CC = wcc -LINKER = wcl -CFLAGS = -zq -ml -s -bt=dos -oilrtfm -fr=nul -wx -ZLIB_LIB = zlib_l.lib - -.C.OBJ: - $(CC) $(CFLAGS) $[@ - -all: $(ZLIB_LIB) example.exe minigzip.exe - -$(ZLIB_LIB): $(OBJS) - wlib -b -c $(ZLIB_LIB) -+adler32.obj -+compress.obj -+crc32.obj - wlib -b -c $(ZLIB_LIB) -+gzclose.obj -+gzlib.obj -+gzread.obj -+gzwrite.obj - wlib -b -c $(ZLIB_LIB) -+deflate.obj -+infback.obj - wlib -b -c $(ZLIB_LIB) -+inffast.obj -+inflate.obj -+inftrees.obj - wlib -b -c $(ZLIB_LIB) -+trees.obj -+uncompr.obj -+zutil.obj - -example.exe: $(ZLIB_LIB) example.obj - $(LINKER) -fe=example.exe example.obj $(ZLIB_LIB) - -minigzip.exe: $(ZLIB_LIB) minigzip.obj - $(LINKER) -fe=minigzip.exe minigzip.obj $(ZLIB_LIB) - -clean: .SYMBOLIC - del *.obj - del $(ZLIB_LIB) - @echo Cleaning done diff --git a/io2d/src/3rd-party/zlib/win32/DLL_FAQ.txt b/io2d/src/3rd-party/zlib/win32/DLL_FAQ.txt deleted file mode 100644 index 12c0090..0000000 --- a/io2d/src/3rd-party/zlib/win32/DLL_FAQ.txt +++ /dev/null @@ -1,397 +0,0 @@ - - Frequently Asked Questions about ZLIB1.DLL - - -This document describes the design, the rationale, and the usage -of the official DLL build of zlib, named ZLIB1.DLL. If you have -general questions about zlib, you should see the file "FAQ" found -in the zlib distribution, or at the following location: - http://www.gzip.org/zlib/zlib_faq.html - - - 1. What is ZLIB1.DLL, and how can I get it? - - - ZLIB1.DLL is the official build of zlib as a DLL. - (Please remark the character '1' in the name.) - - Pointers to a precompiled ZLIB1.DLL can be found in the zlib - web site at: - http://www.zlib.net/ - - Applications that link to ZLIB1.DLL can rely on the following - specification: - - * The exported symbols are exclusively defined in the source - files "zlib.h" and "zlib.def", found in an official zlib - source distribution. - * The symbols are exported by name, not by ordinal. - * The exported names are undecorated. - * The calling convention of functions is "C" (CDECL). - * The ZLIB1.DLL binary is linked to MSVCRT.DLL. - - The archive in which ZLIB1.DLL is bundled contains compiled - test programs that must run with a valid build of ZLIB1.DLL. - It is recommended to download the prebuilt DLL from the zlib - web site, instead of building it yourself, to avoid potential - incompatibilities that could be introduced by your compiler - and build settings. If you do build the DLL yourself, please - make sure that it complies with all the above requirements, - and it runs with the precompiled test programs, bundled with - the original ZLIB1.DLL distribution. - - If, for any reason, you need to build an incompatible DLL, - please use a different file name. - - - 2. Why did you change the name of the DLL to ZLIB1.DLL? - What happened to the old ZLIB.DLL? - - - The old ZLIB.DLL, built from zlib-1.1.4 or earlier, required - compilation settings that were incompatible to those used by - a static build. The DLL settings were supposed to be enabled - by defining the macro ZLIB_DLL, before including "zlib.h". - Incorrect handling of this macro was silently accepted at - build time, resulting in two major problems: - - * ZLIB_DLL was missing from the old makefile. When building - the DLL, not all people added it to the build options. In - consequence, incompatible incarnations of ZLIB.DLL started - to circulate around the net. - - * When switching from using the static library to using the - DLL, applications had to define the ZLIB_DLL macro and - to recompile all the sources that contained calls to zlib - functions. Failure to do so resulted in creating binaries - that were unable to run with the official ZLIB.DLL build. - - The only possible solution that we could foresee was to make - a binary-incompatible change in the DLL interface, in order to - remove the dependency on the ZLIB_DLL macro, and to release - the new DLL under a different name. - - We chose the name ZLIB1.DLL, where '1' indicates the major - zlib version number. We hope that we will not have to break - the binary compatibility again, at least not as long as the - zlib-1.x series will last. - - There is still a ZLIB_DLL macro, that can trigger a more - efficient build and use of the DLL, but compatibility no - longer dependents on it. - - - 3. Can I build ZLIB.DLL from the new zlib sources, and replace - an old ZLIB.DLL, that was built from zlib-1.1.4 or earlier? - - - In principle, you can do it by assigning calling convention - keywords to the macros ZEXPORT and ZEXPORTVA. In practice, - it depends on what you mean by "an old ZLIB.DLL", because the - old DLL exists in several mutually-incompatible versions. - You have to find out first what kind of calling convention is - being used in your particular ZLIB.DLL build, and to use the - same one in the new build. If you don't know what this is all - about, you might be better off if you would just leave the old - DLL intact. - - - 4. Can I compile my application using the new zlib interface, and - link it to an old ZLIB.DLL, that was built from zlib-1.1.4 or - earlier? - - - The official answer is "no"; the real answer depends again on - what kind of ZLIB.DLL you have. Even if you are lucky, this - course of action is unreliable. - - If you rebuild your application and you intend to use a newer - version of zlib (post- 1.1.4), it is strongly recommended to - link it to the new ZLIB1.DLL. - - - 5. Why are the zlib symbols exported by name, and not by ordinal? - - - Although exporting symbols by ordinal is a little faster, it - is risky. Any single glitch in the maintenance or use of the - DEF file that contains the ordinals can result in incompatible - builds and frustrating crashes. Simply put, the benefits of - exporting symbols by ordinal do not justify the risks. - - Technically, it should be possible to maintain ordinals in - the DEF file, and still export the symbols by name. Ordinals - exist in every DLL, and even if the dynamic linking performed - at the DLL startup is searching for names, ordinals serve as - hints, for a faster name lookup. However, if the DEF file - contains ordinals, the Microsoft linker automatically builds - an implib that will cause the executables linked to it to use - those ordinals, and not the names. It is interesting to - notice that the GNU linker for Win32 does not suffer from this - problem. - - It is possible to avoid the DEF file if the exported symbols - are accompanied by a "__declspec(dllexport)" attribute in the - source files. You can do this in zlib by predefining the - ZLIB_DLL macro. - - - 6. I see that the ZLIB1.DLL functions use the "C" (CDECL) calling - convention. Why not use the STDCALL convention? - STDCALL is the standard convention in Win32, and I need it in - my Visual Basic project! - - (For readability, we use CDECL to refer to the convention - triggered by the "__cdecl" keyword, STDCALL to refer to - the convention triggered by "__stdcall", and FASTCALL to - refer to the convention triggered by "__fastcall".) - - - Most of the native Windows API functions (without varargs) use - indeed the WINAPI convention (which translates to STDCALL in - Win32), but the standard C functions use CDECL. If a user - application is intrinsically tied to the Windows API (e.g. - it calls native Windows API functions such as CreateFile()), - sometimes it makes sense to decorate its own functions with - WINAPI. But if ANSI C or POSIX portability is a goal (e.g. - it calls standard C functions such as fopen()), it is not a - sound decision to request the inclusion of , or to - use non-ANSI constructs, for the sole purpose to make the user - functions STDCALL-able. - - The functionality offered by zlib is not in the category of - "Windows functionality", but is more like "C functionality". - - Technically, STDCALL is not bad; in fact, it is slightly - faster than CDECL, and it works with variable-argument - functions, just like CDECL. It is unfortunate that, in spite - of using STDCALL in the Windows API, it is not the default - convention used by the C compilers that run under Windows. - The roots of the problem reside deep inside the unsafety of - the K&R-style function prototypes, where the argument types - are not specified; but that is another story for another day. - - The remaining fact is that CDECL is the default convention. - Even if an explicit convention is hard-coded into the function - prototypes inside C headers, problems may appear. The - necessity to expose the convention in users' callbacks is one - of these problems. - - The calling convention issues are also important when using - zlib in other programming languages. Some of them, like Ada - (GNAT) and Fortran (GNU G77), have C bindings implemented - initially on Unix, and relying on the C calling convention. - On the other hand, the pre- .NET versions of Microsoft Visual - Basic require STDCALL, while Borland Delphi prefers, although - it does not require, FASTCALL. - - In fairness to all possible uses of zlib outside the C - programming language, we choose the default "C" convention. - Anyone interested in different bindings or conventions is - encouraged to maintain specialized projects. The "contrib/" - directory from the zlib distribution already holds a couple - of foreign bindings, such as Ada, C++, and Delphi. - - - 7. I need a DLL for my Visual Basic project. What can I do? - - - Define the ZLIB_WINAPI macro before including "zlib.h", when - building both the DLL and the user application (except that - you don't need to define anything when using the DLL in Visual - Basic). The ZLIB_WINAPI macro will switch on the WINAPI - (STDCALL) convention. The name of this DLL must be different - than the official ZLIB1.DLL. - - Gilles Vollant has contributed a build named ZLIBWAPI.DLL, - with the ZLIB_WINAPI macro turned on, and with the minizip - functionality built in. For more information, please read - the notes inside "contrib/vstudio/readme.txt", found in the - zlib distribution. - - - 8. I need to use zlib in my Microsoft .NET project. What can I - do? - - - Henrik Ravn has contributed a .NET wrapper around zlib. Look - into contrib/dotzlib/, inside the zlib distribution. - - - 9. If my application uses ZLIB1.DLL, should I link it to - MSVCRT.DLL? Why? - - - It is not required, but it is recommended to link your - application to MSVCRT.DLL, if it uses ZLIB1.DLL. - - The executables (.EXE, .DLL, etc.) that are involved in the - same process and are using the C run-time library (i.e. they - are calling standard C functions), must link to the same - library. There are several libraries in the Win32 system: - CRTDLL.DLL, MSVCRT.DLL, the static C libraries, etc. - Since ZLIB1.DLL is linked to MSVCRT.DLL, the executables that - depend on it should also be linked to MSVCRT.DLL. - - -10. Why are you saying that ZLIB1.DLL and my application should - be linked to the same C run-time (CRT) library? I linked my - application and my DLLs to different C libraries (e.g. my - application to a static library, and my DLLs to MSVCRT.DLL), - and everything works fine. - - - If a user library invokes only pure Win32 API (accessible via - and the related headers), its DLL build will work - in any context. But if this library invokes standard C API, - things get more complicated. - - There is a single Win32 library in a Win32 system. Every - function in this library resides in a single DLL module, that - is safe to call from anywhere. On the other hand, there are - multiple versions of the C library, and each of them has its - own separate internal state. Standalone executables and user - DLLs that call standard C functions must link to a C run-time - (CRT) library, be it static or shared (DLL). Intermixing - occurs when an executable (not necessarily standalone) and a - DLL are linked to different CRTs, and both are running in the - same process. - - Intermixing multiple CRTs is possible, as long as their - internal states are kept intact. The Microsoft Knowledge Base - articles KB94248 "HOWTO: Use the C Run-Time" and KB140584 - "HOWTO: Link with the Correct C Run-Time (CRT) Library" - mention the potential problems raised by intermixing. - - If intermixing works for you, it's because your application - and DLLs are avoiding the corruption of each of the CRTs' - internal states, maybe by careful design, or maybe by fortune. - - Also note that linking ZLIB1.DLL to non-Microsoft CRTs, such - as those provided by Borland, raises similar problems. - - -11. Why are you linking ZLIB1.DLL to MSVCRT.DLL? - - - MSVCRT.DLL exists on every Windows 95 with a new service pack - installed, or with Microsoft Internet Explorer 4 or later, and - on all other Windows 4.x or later (Windows 98, Windows NT 4, - or later). It is freely distributable; if not present in the - system, it can be downloaded from Microsoft or from other - software provider for free. - - The fact that MSVCRT.DLL does not exist on a virgin Windows 95 - is not so problematic. Windows 95 is scarcely found nowadays, - Microsoft ended its support a long time ago, and many recent - applications from various vendors, including Microsoft, do not - even run on it. Furthermore, no serious user should run - Windows 95 without a proper update installed. - - -12. Why are you not linking ZLIB1.DLL to - <> ? - - - We considered and abandoned the following alternatives: - - * Linking ZLIB1.DLL to a static C library (LIBC.LIB, or - LIBCMT.LIB) is not a good option. People are using the DLL - mainly to save disk space. If you are linking your program - to a static C library, you may as well consider linking zlib - in statically, too. - - * Linking ZLIB1.DLL to CRTDLL.DLL looks appealing, because - CRTDLL.DLL is present on every Win32 installation. - Unfortunately, it has a series of problems: it does not - work properly with Microsoft's C++ libraries, it does not - provide support for 64-bit file offsets, (and so on...), - and Microsoft discontinued its support a long time ago. - - * Linking ZLIB1.DLL to MSVCR70.DLL or MSVCR71.DLL, supplied - with the Microsoft .NET platform, and Visual C++ 7.0/7.1, - raises problems related to the status of ZLIB1.DLL as a - system component. According to the Microsoft Knowledge Base - article KB326922 "INFO: Redistribution of the Shared C - Runtime Component in Visual C++ .NET", MSVCR70.DLL and - MSVCR71.DLL are not supposed to function as system DLLs, - because they may clash with MSVCRT.DLL. Instead, the - application's installer is supposed to put these DLLs - (if needed) in the application's private directory. - If ZLIB1.DLL depends on a non-system runtime, it cannot - function as a redistributable system component. - - * Linking ZLIB1.DLL to non-Microsoft runtimes, such as - Borland's, or Cygwin's, raises problems related to the - reliable presence of these runtimes on Win32 systems. - It's easier to let the DLL build of zlib up to the people - who distribute these runtimes, and who may proceed as - explained in the answer to Question 14. - - -13. If ZLIB1.DLL cannot be linked to MSVCR70.DLL or MSVCR71.DLL, - how can I build/use ZLIB1.DLL in Microsoft Visual C++ 7.0 - (Visual Studio .NET) or newer? - - - Due to the problems explained in the Microsoft Knowledge Base - article KB326922 (see the previous answer), the C runtime that - comes with the VC7 environment is no longer considered a - system component. That is, it should not be assumed that this - runtime exists, or may be installed in a system directory. - Since ZLIB1.DLL is supposed to be a system component, it may - not depend on a non-system component. - - In order to link ZLIB1.DLL and your application to MSVCRT.DLL - in VC7, you need the library of Visual C++ 6.0 or older. If - you don't have this library at hand, it's probably best not to - use ZLIB1.DLL. - - We are hoping that, in the future, Microsoft will provide a - way to build applications linked to a proper system runtime, - from the Visual C++ environment. Until then, you have a - couple of alternatives, such as linking zlib in statically. - If your application requires dynamic linking, you may proceed - as explained in the answer to Question 14. - - -14. I need to link my own DLL build to a CRT different than - MSVCRT.DLL. What can I do? - - - Feel free to rebuild the DLL from the zlib sources, and link - it the way you want. You should, however, clearly state that - your build is unofficial. You should give it a different file - name, and/or install it in a private directory that can be - accessed by your application only, and is not visible to the - others (i.e. it's neither in the PATH, nor in the SYSTEM or - SYSTEM32 directories). Otherwise, your build may clash with - applications that link to the official build. - - For example, in Cygwin, zlib is linked to the Cygwin runtime - CYGWIN1.DLL, and it is distributed under the name CYGZ.DLL. - - -15. May I include additional pieces of code that I find useful, - link them in ZLIB1.DLL, and export them? - - - No. A legitimate build of ZLIB1.DLL must not include code - that does not originate from the official zlib source code. - But you can make your own private DLL build, under a different - file name, as suggested in the previous answer. - - For example, zlib is a part of the VCL library, distributed - with Borland Delphi and C++ Builder. The DLL build of VCL - is a redistributable file, named VCLxx.DLL. - - -16. May I remove some functionality out of ZLIB1.DLL, by enabling - macros like NO_GZCOMPRESS or NO_GZIP at compile time? - - - No. A legitimate build of ZLIB1.DLL must provide the complete - zlib functionality, as implemented in the official zlib source - code. But you can make your own private DLL build, under a - different file name, as suggested in the previous answer. - - -17. I made my own ZLIB1.DLL build. Can I test it for compliance? - - - We prefer that you download the official DLL from the zlib - web site. If you need something peculiar from this DLL, you - can send your suggestion to the zlib mailing list. - - However, in case you do rebuild the DLL yourself, you can run - it with the test programs found in the DLL distribution. - Running these test programs is not a guarantee of compliance, - but a failure can imply a detected problem. - -** - -This document is written and maintained by -Cosmin Truta diff --git a/io2d/src/3rd-party/zlib/win32/Makefile.bor b/io2d/src/3rd-party/zlib/win32/Makefile.bor deleted file mode 100644 index d152bbb..0000000 --- a/io2d/src/3rd-party/zlib/win32/Makefile.bor +++ /dev/null @@ -1,110 +0,0 @@ -# Makefile for zlib -# Borland C++ for Win32 -# -# Usage: -# make -f win32/Makefile.bor -# make -f win32/Makefile.bor LOCAL_ZLIB=-DASMV OBJA=match.obj OBJPA=+match.obj - -# ------------ Borland C++ ------------ - -# Optional nonstandard preprocessor flags (e.g. -DMAX_MEM_LEVEL=7) -# should be added to the environment via "set LOCAL_ZLIB=-DFOO" or -# added to the declaration of LOC here: -LOC = $(LOCAL_ZLIB) - -CC = bcc32 -AS = bcc32 -LD = bcc32 -AR = tlib -CFLAGS = -a -d -k- -O2 $(LOC) -ASFLAGS = $(LOC) -LDFLAGS = $(LOC) - - -# variables -ZLIB_LIB = zlib.lib - -OBJ1 = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj -OBJ2 = gzwrite.obj infback.obj inffast.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj -#OBJA = -OBJP1 = +adler32.obj+compress.obj+crc32.obj+deflate.obj+gzclose.obj+gzlib.obj+gzread.obj -OBJP2 = +gzwrite.obj+infback.obj+inffast.obj+inflate.obj+inftrees.obj+trees.obj+uncompr.obj+zutil.obj -#OBJPA= - - -# targets -all: $(ZLIB_LIB) example.exe minigzip.exe - -.c.obj: - $(CC) -c $(CFLAGS) $< - -.asm.obj: - $(AS) -c $(ASFLAGS) $< - -adler32.obj: adler32.c zlib.h zconf.h - -compress.obj: compress.c zlib.h zconf.h - -crc32.obj: crc32.c zlib.h zconf.h crc32.h - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - -gzclose.obj: gzclose.c zlib.h zconf.h gzguts.h - -gzlib.obj: gzlib.c zlib.h zconf.h gzguts.h - -gzread.obj: gzread.c zlib.h zconf.h gzguts.h - -gzwrite.obj: gzwrite.c zlib.h zconf.h gzguts.h - -infback.obj: infback.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h - -inflate.obj: inflate.c zutil.h zlib.h zconf.h inftrees.h inflate.h \ - inffast.h inffixed.h - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - -trees.obj: trees.c zutil.h zlib.h zconf.h deflate.h trees.h - -uncompr.obj: uncompr.c zlib.h zconf.h - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - -example.obj: test/example.c zlib.h zconf.h - -minigzip.obj: test/minigzip.c zlib.h zconf.h - - -# For the sake of the old Borland make, -# the command line is cut to fit in the MS-DOS 128 byte limit: -$(ZLIB_LIB): $(OBJ1) $(OBJ2) $(OBJA) - -del $(ZLIB_LIB) - $(AR) $(ZLIB_LIB) $(OBJP1) - $(AR) $(ZLIB_LIB) $(OBJP2) - $(AR) $(ZLIB_LIB) $(OBJPA) - - -# testing -test: example.exe minigzip.exe - example - echo hello world | minigzip | minigzip -d - -example.exe: example.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) example.obj $(ZLIB_LIB) - -minigzip.exe: minigzip.obj $(ZLIB_LIB) - $(LD) $(LDFLAGS) minigzip.obj $(ZLIB_LIB) - - -# cleanup -clean: - -del $(ZLIB_LIB) - -del *.obj - -del *.exe - -del *.tds - -del zlib.bak - -del foo.gz diff --git a/io2d/src/3rd-party/zlib/win32/Makefile.gcc b/io2d/src/3rd-party/zlib/win32/Makefile.gcc deleted file mode 100644 index 6d1ded6..0000000 --- a/io2d/src/3rd-party/zlib/win32/Makefile.gcc +++ /dev/null @@ -1,182 +0,0 @@ -# Makefile for zlib, derived from Makefile.dj2. -# Modified for mingw32 by C. Spieler, 6/16/98. -# Updated for zlib 1.2.x by Christian Spieler and Cosmin Truta, Mar-2003. -# Last updated: Mar 2012. -# Tested under Cygwin and MinGW. - -# Copyright (C) 1995-2003 Jean-loup Gailly. -# For conditions of distribution and use, see copyright notice in zlib.h - -# To compile, or to compile and test, type from the top level zlib directory: -# -# make -fwin32/Makefile.gcc; make test testdll -fwin32/Makefile.gcc -# -# To use the asm code, type: -# cp contrib/asm?86/match.S ./match.S -# make LOC=-DASMV OBJA=match.o -fwin32/Makefile.gcc -# -# To install libz.a, zconf.h and zlib.h in the system directories, type: -# -# make install -fwin32/Makefile.gcc -# -# BINARY_PATH, INCLUDE_PATH and LIBRARY_PATH must be set. -# -# To install the shared lib, append SHARED_MODE=1 to the make command : -# -# make install -fwin32/Makefile.gcc SHARED_MODE=1 - -# Note: -# If the platform is *not* MinGW (e.g. it is Cygwin or UWIN), -# the DLL name should be changed from "zlib1.dll". - -STATICLIB = libz.a -SHAREDLIB = zlib1.dll -IMPLIB = libz.dll.a - -# -# Set to 1 if shared object needs to be installed -# -SHARED_MODE=0 - -#LOC = -DASMV -#LOC = -DDEBUG -g - -PREFIX = -CC = $(PREFIX)gcc -CFLAGS = $(LOC) -O3 -Wall - -AS = $(CC) -ASFLAGS = $(LOC) -Wall - -LD = $(CC) -LDFLAGS = $(LOC) - -AR = $(PREFIX)ar -ARFLAGS = rcs - -RC = $(PREFIX)windres -RCFLAGS = --define GCC_WINDRES - -STRIP = $(PREFIX)strip - -CP = cp -fp -# If GNU install is available, replace $(CP) with install. -INSTALL = $(CP) -RM = rm -f - -prefix ?= /usr/local -exec_prefix = $(prefix) - -OBJS = adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o \ - gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o -OBJA = - -all: $(STATICLIB) $(SHAREDLIB) $(IMPLIB) example.exe minigzip.exe example_d.exe minigzip_d.exe - -test: example.exe minigzip.exe - ./example - echo hello world | ./minigzip | ./minigzip -d - -testdll: example_d.exe minigzip_d.exe - ./example_d - echo hello world | ./minigzip_d | ./minigzip_d -d - -.c.o: - $(CC) $(CFLAGS) -c -o $@ $< - -.S.o: - $(AS) $(ASFLAGS) -c -o $@ $< - -$(STATICLIB): $(OBJS) $(OBJA) - $(AR) $(ARFLAGS) $@ $(OBJS) $(OBJA) - -$(IMPLIB): $(SHAREDLIB) - -$(SHAREDLIB): win32/zlib.def $(OBJS) $(OBJA) zlibrc.o - $(CC) -shared -Wl,--out-implib,$(IMPLIB) $(LDFLAGS) \ - -o $@ win32/zlib.def $(OBJS) $(OBJA) zlibrc.o - $(STRIP) $@ - -example.exe: example.o $(STATICLIB) - $(LD) $(LDFLAGS) -o $@ example.o $(STATICLIB) - $(STRIP) $@ - -minigzip.exe: minigzip.o $(STATICLIB) - $(LD) $(LDFLAGS) -o $@ minigzip.o $(STATICLIB) - $(STRIP) $@ - -example_d.exe: example.o $(IMPLIB) - $(LD) $(LDFLAGS) -o $@ example.o $(IMPLIB) - $(STRIP) $@ - -minigzip_d.exe: minigzip.o $(IMPLIB) - $(LD) $(LDFLAGS) -o $@ minigzip.o $(IMPLIB) - $(STRIP) $@ - -example.o: test/example.c zlib.h zconf.h - $(CC) $(CFLAGS) -I. -c -o $@ test/example.c - -minigzip.o: test/minigzip.c zlib.h zconf.h - $(CC) $(CFLAGS) -I. -c -o $@ test/minigzip.c - -zlibrc.o: win32/zlib1.rc - $(RC) $(RCFLAGS) -o $@ win32/zlib1.rc - -.PHONY: install uninstall clean - -install: zlib.h zconf.h $(STATICLIB) $(IMPLIB) - @if test -z "$(DESTDIR)$(INCLUDE_PATH)" -o -z "$(DESTDIR)$(LIBRARY_PATH)" -o -z "$(DESTDIR)$(BINARY_PATH)"; then \ - echo INCLUDE_PATH, LIBRARY_PATH, and BINARY_PATH must be specified; \ - exit 1; \ - fi - -@mkdir -p '$(DESTDIR)$(INCLUDE_PATH)' - -@mkdir -p '$(DESTDIR)$(LIBRARY_PATH)' '$(DESTDIR)$(LIBRARY_PATH)'/pkgconfig - -if [ "$(SHARED_MODE)" = "1" ]; then \ - mkdir -p '$(DESTDIR)$(BINARY_PATH)'; \ - $(INSTALL) $(SHAREDLIB) '$(DESTDIR)$(BINARY_PATH)'; \ - $(INSTALL) $(IMPLIB) '$(DESTDIR)$(LIBRARY_PATH)'; \ - fi - -$(INSTALL) zlib.h '$(DESTDIR)$(INCLUDE_PATH)' - -$(INSTALL) zconf.h '$(DESTDIR)$(INCLUDE_PATH)' - -$(INSTALL) $(STATICLIB) '$(DESTDIR)$(LIBRARY_PATH)' - sed \ - -e 's|@prefix@|${prefix}|g' \ - -e 's|@exec_prefix@|${exec_prefix}|g' \ - -e 's|@libdir@|$(LIBRARY_PATH)|g' \ - -e 's|@sharedlibdir@|$(LIBRARY_PATH)|g' \ - -e 's|@includedir@|$(INCLUDE_PATH)|g' \ - -e 's|@VERSION@|'`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' zlib.h`'|g' \ - zlib.pc.in > '$(DESTDIR)$(LIBRARY_PATH)'/pkgconfig/zlib.pc - -uninstall: - -if [ "$(SHARED_MODE)" = "1" ]; then \ - $(RM) '$(DESTDIR)$(BINARY_PATH)'/$(SHAREDLIB); \ - $(RM) '$(DESTDIR)$(LIBRARY_PATH)'/$(IMPLIB); \ - fi - -$(RM) '$(DESTDIR)$(INCLUDE_PATH)'/zlib.h - -$(RM) '$(DESTDIR)$(INCLUDE_PATH)'/zconf.h - -$(RM) '$(DESTDIR)$(LIBRARY_PATH)'/$(STATICLIB) - -clean: - -$(RM) $(STATICLIB) - -$(RM) $(SHAREDLIB) - -$(RM) $(IMPLIB) - -$(RM) *.o - -$(RM) *.exe - -$(RM) foo.gz - -adler32.o: zlib.h zconf.h -compress.o: zlib.h zconf.h -crc32.o: crc32.h zlib.h zconf.h -deflate.o: deflate.h zutil.h zlib.h zconf.h -gzclose.o: zlib.h zconf.h gzguts.h -gzlib.o: zlib.h zconf.h gzguts.h -gzread.o: zlib.h zconf.h gzguts.h -gzwrite.o: zlib.h zconf.h gzguts.h -inffast.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h -inflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h -infback.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h -inftrees.o: zutil.h zlib.h zconf.h inftrees.h -trees.o: deflate.h zutil.h zlib.h zconf.h trees.h -uncompr.o: zlib.h zconf.h -zutil.o: zutil.h zlib.h zconf.h diff --git a/io2d/src/3rd-party/zlib/win32/Makefile.msc b/io2d/src/3rd-party/zlib/win32/Makefile.msc deleted file mode 100644 index 67b7731..0000000 --- a/io2d/src/3rd-party/zlib/win32/Makefile.msc +++ /dev/null @@ -1,163 +0,0 @@ -# Makefile for zlib using Microsoft (Visual) C -# zlib is copyright (C) 1995-2006 Jean-loup Gailly and Mark Adler -# -# Usage: -# nmake -f win32/Makefile.msc (standard build) -# nmake -f win32/Makefile.msc LOC=-DFOO (nonstandard build) -# nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" \ -# OBJA="inffas32.obj match686.obj" (use ASM code, x86) -# nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I." \ -# OBJA="inffasx64.obj gvmat64.obj inffas8664.obj" (use ASM code, x64) - -# The toplevel directory of the source tree. -# -TOP = . - -# optional build flags -LOC = - -# variables -STATICLIB = zlib.lib -SHAREDLIB = zlib1.dll -IMPLIB = zdll.lib - -CC = cl -AS = ml -LD = link -AR = lib -RC = rc -CFLAGS = -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib" $(LOC) -WFLAGS = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -ASFLAGS = -coff -Zi $(LOC) -LDFLAGS = -nologo -debug -incremental:no -opt:ref -ARFLAGS = -nologo -RCFLAGS = /dWIN32 /r - -OBJS = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj \ - gzwrite.obj infback.obj inflate.obj inftrees.obj inffast.obj trees.obj uncompr.obj zutil.obj -OBJA = - - -# targets -all: $(STATICLIB) $(SHAREDLIB) $(IMPLIB) \ - example.exe minigzip.exe example_d.exe minigzip_d.exe - -$(STATICLIB): $(OBJS) $(OBJA) - $(AR) $(ARFLAGS) -out:$@ $(OBJS) $(OBJA) - -$(IMPLIB): $(SHAREDLIB) - -$(SHAREDLIB): $(TOP)/win32/zlib.def $(OBJS) $(OBJA) zlib1.res - $(LD) $(LDFLAGS) -def:$(TOP)/win32/zlib.def -dll -implib:$(IMPLIB) \ - -out:$@ -base:0x5A4C0000 $(OBJS) $(OBJA) zlib1.res - if exist $@.manifest \ - mt -nologo -manifest $@.manifest -outputresource:$@;2 - -example.exe: example.obj $(STATICLIB) - $(LD) $(LDFLAGS) example.obj $(STATICLIB) - if exist $@.manifest \ - mt -nologo -manifest $@.manifest -outputresource:$@;1 - -minigzip.exe: minigzip.obj $(STATICLIB) - $(LD) $(LDFLAGS) minigzip.obj $(STATICLIB) - if exist $@.manifest \ - mt -nologo -manifest $@.manifest -outputresource:$@;1 - -example_d.exe: example.obj $(IMPLIB) - $(LD) $(LDFLAGS) -out:$@ example.obj $(IMPLIB) - if exist $@.manifest \ - mt -nologo -manifest $@.manifest -outputresource:$@;1 - -minigzip_d.exe: minigzip.obj $(IMPLIB) - $(LD) $(LDFLAGS) -out:$@ minigzip.obj $(IMPLIB) - if exist $@.manifest \ - mt -nologo -manifest $@.manifest -outputresource:$@;1 - -{$(TOP)}.c.obj: - $(CC) -c $(WFLAGS) $(CFLAGS) $< - -{$(TOP)/test}.c.obj: - $(CC) -c -I$(TOP) $(WFLAGS) $(CFLAGS) $< - -{$(TOP)/contrib/masmx64}.c.obj: - $(CC) -c $(WFLAGS) $(CFLAGS) $< - -{$(TOP)/contrib/masmx64}.asm.obj: - $(AS) -c $(ASFLAGS) $< - -{$(TOP)/contrib/masmx86}.asm.obj: - $(AS) -c $(ASFLAGS) $< - -adler32.obj: $(TOP)/adler32.c $(TOP)/zlib.h $(TOP)/zconf.h - -compress.obj: $(TOP)/compress.c $(TOP)/zlib.h $(TOP)/zconf.h - -crc32.obj: $(TOP)/crc32.c $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/crc32.h - -deflate.obj: $(TOP)/deflate.c $(TOP)/deflate.h $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h - -gzclose.obj: $(TOP)/gzclose.c $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/gzguts.h - -gzlib.obj: $(TOP)/gzlib.c $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/gzguts.h - -gzread.obj: $(TOP)/gzread.c $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/gzguts.h - -gzwrite.obj: $(TOP)/gzwrite.c $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/gzguts.h - -infback.obj: $(TOP)/infback.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/inftrees.h $(TOP)/inflate.h \ - $(TOP)/inffast.h $(TOP)/inffixed.h - -inffast.obj: $(TOP)/inffast.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/inftrees.h $(TOP)/inflate.h \ - $(TOP)/inffast.h - -inflate.obj: $(TOP)/inflate.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/inftrees.h $(TOP)/inflate.h \ - $(TOP)/inffast.h $(TOP)/inffixed.h - -inftrees.obj: $(TOP)/inftrees.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/inftrees.h - -trees.obj: $(TOP)/trees.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h $(TOP)/deflate.h $(TOP)/trees.h - -uncompr.obj: $(TOP)/uncompr.c $(TOP)/zlib.h $(TOP)/zconf.h - -zutil.obj: $(TOP)/zutil.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h - -gvmat64.obj: $(TOP)/contrib\masmx64\gvmat64.asm - -inffasx64.obj: $(TOP)/contrib\masmx64\inffasx64.asm - -inffas8664.obj: $(TOP)/contrib\masmx64\inffas8664.c $(TOP)/zutil.h $(TOP)/zlib.h $(TOP)/zconf.h \ - $(TOP)/inftrees.h $(TOP)/inflate.h $(TOP)/inffast.h - -inffas32.obj: $(TOP)/contrib\masmx86\inffas32.asm - -match686.obj: $(TOP)/contrib\masmx86\match686.asm - -example.obj: $(TOP)/test/example.c $(TOP)/zlib.h $(TOP)/zconf.h - -minigzip.obj: $(TOP)/test/minigzip.c $(TOP)/zlib.h $(TOP)/zconf.h - -zlib1.res: $(TOP)/win32/zlib1.rc - $(RC) $(RCFLAGS) /fo$@ $(TOP)/win32/zlib1.rc - -# testing -test: example.exe minigzip.exe - example - echo hello world | minigzip | minigzip -d - -testdll: example_d.exe minigzip_d.exe - example_d - echo hello world | minigzip_d | minigzip_d -d - - -# cleanup -clean: - -del $(STATICLIB) - -del $(SHAREDLIB) - -del $(IMPLIB) - -del *.obj - -del *.res - -del *.exp - -del *.exe - -del *.pdb - -del *.manifest - -del foo.gz diff --git a/io2d/src/3rd-party/zlib/win32/README-WIN32.txt b/io2d/src/3rd-party/zlib/win32/README-WIN32.txt deleted file mode 100644 index 3d77d52..0000000 --- a/io2d/src/3rd-party/zlib/win32/README-WIN32.txt +++ /dev/null @@ -1,103 +0,0 @@ -ZLIB DATA COMPRESSION LIBRARY - -zlib 1.2.8 is a general purpose data compression library. All the code is -thread safe. The data format used by the zlib library is described by RFCs -(Request for Comments) 1950 to 1952 in the files -http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format) -and rfc1952.txt (gzip format). - -All functions of the compression library are documented in the file zlib.h -(volunteer to write man pages welcome, contact zlib@gzip.org). Two compiled -examples are distributed in this package, example and minigzip. The example_d -and minigzip_d flavors validate that the zlib1.dll file is working correctly. - -Questions about zlib should be sent to . The zlib home page -is http://zlib.net/ . Before reporting a problem, please check this site to -verify that you have the latest version of zlib; otherwise get the latest -version and check whether the problem still exists or not. - -PLEASE read DLL_FAQ.txt, and the the zlib FAQ http://zlib.net/zlib_faq.html -before asking for help. - - -Manifest: - -The package zlib-1.2.8-win32-x86.zip will contain the following files: - - README-WIN32.txt This document - ChangeLog Changes since previous zlib packages - DLL_FAQ.txt Frequently asked questions about zlib1.dll - zlib.3.pdf Documentation of this library in Adobe Acrobat format - - example.exe A statically-bound example (using zlib.lib, not the dll) - example.pdb Symbolic information for debugging example.exe - - example_d.exe A zlib1.dll bound example (using zdll.lib) - example_d.pdb Symbolic information for debugging example_d.exe - - minigzip.exe A statically-bound test program (using zlib.lib, not the dll) - minigzip.pdb Symbolic information for debugging minigzip.exe - - minigzip_d.exe A zlib1.dll bound test program (using zdll.lib) - minigzip_d.pdb Symbolic information for debugging minigzip_d.exe - - zlib.h Install these files into the compilers' INCLUDE path to - zconf.h compile programs which use zlib.lib or zdll.lib - - zdll.lib Install these files into the compilers' LIB path if linking - zdll.exp a compiled program to the zlib1.dll binary - - zlib.lib Install these files into the compilers' LIB path to link zlib - zlib.pdb into compiled programs, without zlib1.dll runtime dependency - (zlib.pdb provides debugging info to the compile time linker) - - zlib1.dll Install this binary shared library into the system PATH, or - the program's runtime directory (where the .exe resides) - zlib1.pdb Install in the same directory as zlib1.dll, in order to debug - an application crash using WinDbg or similar tools. - -All .pdb files above are entirely optional, but are very useful to a developer -attempting to diagnose program misbehavior or a crash. Many additional -important files for developers can be found in the zlib127.zip source package -available from http://zlib.net/ - review that package's README file for details. - - -Acknowledgments: - -The deflate format used by zlib was defined by Phil Katz. The deflate and -zlib specifications were written by L. Peter Deutsch. Thanks to all the -people who reported problems and suggested various improvements in zlib; they -are too numerous to cite here. - - -Copyright notice: - - (C) 1995-2012 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - -If you use the zlib library in a product, we would appreciate *not* receiving -lengthy legal documents to sign. The sources are provided for free but without -warranty of any kind. The library has been entirely written by Jean-loup -Gailly and Mark Adler; it does not include third-party code. - -If you redistribute modified sources, we would appreciate that you include in -the file ChangeLog history information documenting your changes. Please read -the FAQ for more information on the distribution of modified source versions. diff --git a/io2d/src/3rd-party/zlib/win32/VisualC.txt b/io2d/src/3rd-party/zlib/win32/VisualC.txt deleted file mode 100644 index 579a5fc..0000000 --- a/io2d/src/3rd-party/zlib/win32/VisualC.txt +++ /dev/null @@ -1,3 +0,0 @@ - -To build zlib using the Microsoft Visual C++ environment, -use the appropriate project from the projects/ directory. diff --git a/io2d/src/3rd-party/zlib/win32/zlib.def b/io2d/src/3rd-party/zlib/win32/zlib.def deleted file mode 100644 index face655..0000000 --- a/io2d/src/3rd-party/zlib/win32/zlib.def +++ /dev/null @@ -1,86 +0,0 @@ -; zlib data compression library -EXPORTS -; basic functions - zlibVersion - deflate - deflateEnd - inflate - inflateEnd -; advanced functions - deflateSetDictionary - deflateCopy - deflateReset - deflateParams - deflateTune - deflateBound - deflatePending - deflatePrime - deflateSetHeader - inflateSetDictionary - inflateGetDictionary - inflateSync - inflateCopy - inflateReset - inflateReset2 - inflatePrime - inflateMark - inflateGetHeader - inflateBack - inflateBackEnd - zlibCompileFlags -; utility functions - compress - compress2 - compressBound - uncompress - gzopen - gzdopen - gzbuffer - gzsetparams - gzread - gzwrite - gzprintf - gzvprintf - gzputs - gzgets - gzputc - gzgetc - gzungetc - gzflush - gzseek - gzrewind - gztell - gzoffset - gzeof - gzdirect - gzclose - gzclose_r - gzclose_w - gzerror - gzclearerr -; large file functions - gzopen64 - gzseek64 - gztell64 - gzoffset64 - adler32_combine64 - crc32_combine64 -; checksum functions - adler32 - crc32 - adler32_combine - crc32_combine -; various hacks, don't look :) - deflateInit_ - deflateInit2_ - inflateInit_ - inflateInit2_ - inflateBackInit_ - gzgetc_ - zError - inflateSyncPoint - get_crc_table - inflateUndermine - inflateResetKeep - deflateResetKeep - gzopen_w diff --git a/io2d/src/3rd-party/zlib/win32/zlib1.rc b/io2d/src/3rd-party/zlib/win32/zlib1.rc deleted file mode 100644 index 5c0feed..0000000 --- a/io2d/src/3rd-party/zlib/win32/zlib1.rc +++ /dev/null @@ -1,40 +0,0 @@ -#include -#include "../zlib.h" - -#ifdef GCC_WINDRES -VS_VERSION_INFO VERSIONINFO -#else -VS_VERSION_INFO VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE -#endif - FILEVERSION ZLIB_VER_MAJOR,ZLIB_VER_MINOR,ZLIB_VER_REVISION,0 - PRODUCTVERSION ZLIB_VER_MAJOR,ZLIB_VER_MINOR,ZLIB_VER_REVISION,0 - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK -#ifdef _DEBUG - FILEFLAGS 1 -#else - FILEFLAGS 0 -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_DLL - FILESUBTYPE 0 // not used -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904E4" - //language ID = U.S. English, char set = Windows, Multilingual - BEGIN - VALUE "FileDescription", "zlib data compression library\0" - VALUE "FileVersion", ZLIB_VERSION "\0" - VALUE "InternalName", "zlib1.dll\0" - VALUE "LegalCopyright", "(C) 1995-2013 Jean-loup Gailly & Mark Adler\0" - VALUE "OriginalFilename", "zlib1.dll\0" - VALUE "ProductName", "zlib\0" - VALUE "ProductVersion", ZLIB_VERSION "\0" - VALUE "Comments", "For more information visit http://www.zlib.net/\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0409, 1252 - END -END diff --git a/io2d/src/3rd-party/zlib/zconf.h b/io2d/src/3rd-party/zlib/zconf.h deleted file mode 100644 index 9987a77..0000000 --- a/io2d/src/3rd-party/zlib/zconf.h +++ /dev/null @@ -1,511 +0,0 @@ -/* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2013 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#ifndef ZCONF_H -#define ZCONF_H - -/* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. - * Even better than compiling with -DZ_PREFIX would be to use configure to set - * this permanently in zconf.h using "./configure --zprefix". - */ -#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ -# define Z_PREFIX_SET - -/* all linked symbols */ -# define _dist_code z__dist_code -# define _length_code z__length_code -# define _tr_align z__tr_align -# define _tr_flush_bits z__tr_flush_bits -# define _tr_flush_block z__tr_flush_block -# define _tr_init z__tr_init -# define _tr_stored_block z__tr_stored_block -# define _tr_tally z__tr_tally -# define adler32 z_adler32 -# define adler32_combine z_adler32_combine -# define adler32_combine64 z_adler32_combine64 -# ifndef Z_SOLO -# define compress z_compress -# define compress2 z_compress2 -# define compressBound z_compressBound -# endif -# define crc32 z_crc32 -# define crc32_combine z_crc32_combine -# define crc32_combine64 z_crc32_combine64 -# define deflate z_deflate -# define deflateBound z_deflateBound -# define deflateCopy z_deflateCopy -# define deflateEnd z_deflateEnd -# define deflateInit2_ z_deflateInit2_ -# define deflateInit_ z_deflateInit_ -# define deflateParams z_deflateParams -# define deflatePending z_deflatePending -# define deflatePrime z_deflatePrime -# define deflateReset z_deflateReset -# define deflateResetKeep z_deflateResetKeep -# define deflateSetDictionary z_deflateSetDictionary -# define deflateSetHeader z_deflateSetHeader -# define deflateTune z_deflateTune -# define deflate_copyright z_deflate_copyright -# define get_crc_table z_get_crc_table -# ifndef Z_SOLO -# define gz_error z_gz_error -# define gz_intmax z_gz_intmax -# define gz_strwinerror z_gz_strwinerror -# define gzbuffer z_gzbuffer -# define gzclearerr z_gzclearerr -# define gzclose z_gzclose -# define gzclose_r z_gzclose_r -# define gzclose_w z_gzclose_w -# define gzdirect z_gzdirect -# define gzdopen z_gzdopen -# define gzeof z_gzeof -# define gzerror z_gzerror -# define gzflush z_gzflush -# define gzgetc z_gzgetc -# define gzgetc_ z_gzgetc_ -# define gzgets z_gzgets -# define gzoffset z_gzoffset -# define gzoffset64 z_gzoffset64 -# define gzopen z_gzopen -# define gzopen64 z_gzopen64 -# ifdef _WIN32 -# define gzopen_w z_gzopen_w -# endif -# define gzprintf z_gzprintf -# define gzvprintf z_gzvprintf -# define gzputc z_gzputc -# define gzputs z_gzputs -# define gzread z_gzread -# define gzrewind z_gzrewind -# define gzseek z_gzseek -# define gzseek64 z_gzseek64 -# define gzsetparams z_gzsetparams -# define gztell z_gztell -# define gztell64 z_gztell64 -# define gzungetc z_gzungetc -# define gzwrite z_gzwrite -# endif -# define inflate z_inflate -# define inflateBack z_inflateBack -# define inflateBackEnd z_inflateBackEnd -# define inflateBackInit_ z_inflateBackInit_ -# define inflateCopy z_inflateCopy -# define inflateEnd z_inflateEnd -# define inflateGetHeader z_inflateGetHeader -# define inflateInit2_ z_inflateInit2_ -# define inflateInit_ z_inflateInit_ -# define inflateMark z_inflateMark -# define inflatePrime z_inflatePrime -# define inflateReset z_inflateReset -# define inflateReset2 z_inflateReset2 -# define inflateSetDictionary z_inflateSetDictionary -# define inflateGetDictionary z_inflateGetDictionary -# define inflateSync z_inflateSync -# define inflateSyncPoint z_inflateSyncPoint -# define inflateUndermine z_inflateUndermine -# define inflateResetKeep z_inflateResetKeep -# define inflate_copyright z_inflate_copyright -# define inflate_fast z_inflate_fast -# define inflate_table z_inflate_table -# ifndef Z_SOLO -# define uncompress z_uncompress -# endif -# define zError z_zError -# ifndef Z_SOLO -# define zcalloc z_zcalloc -# define zcfree z_zcfree -# endif -# define zlibCompileFlags z_zlibCompileFlags -# define zlibVersion z_zlibVersion - -/* all zlib typedefs in zlib.h and zconf.h */ -# define Byte z_Byte -# define Bytef z_Bytef -# define alloc_func z_alloc_func -# define charf z_charf -# define free_func z_free_func -# ifndef Z_SOLO -# define gzFile z_gzFile -# endif -# define gz_header z_gz_header -# define gz_headerp z_gz_headerp -# define in_func z_in_func -# define intf z_intf -# define out_func z_out_func -# define uInt z_uInt -# define uIntf z_uIntf -# define uLong z_uLong -# define uLongf z_uLongf -# define voidp z_voidp -# define voidpc z_voidpc -# define voidpf z_voidpf - -/* all zlib structs in zlib.h and zconf.h */ -# define gz_header_s z_gz_header_s -# define internal_state z_internal_state - -#endif - -#if defined(__MSDOS__) && !defined(MSDOS) -# define MSDOS -#endif -#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) -# define OS2 -#endif -#if defined(_WINDOWS) && !defined(WINDOWS) -# define WINDOWS -#endif -#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) -# ifndef WIN32 -# define WIN32 -# endif -#endif -#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) -# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) -# ifndef SYS16BIT -# define SYS16BIT -# endif -# endif -#endif - -/* - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more - * than 64k bytes at a time (needed on systems with 16-bit int). - */ -#ifdef SYS16BIT -# define MAXSEG_64K -#endif -#ifdef MSDOS -# define UNALIGNED_OK -#endif - -#ifdef __STDC_VERSION__ -# ifndef STDC -# define STDC -# endif -# if __STDC_VERSION__ >= 199901L -# ifndef STDC99 -# define STDC99 -# endif -# endif -#endif -#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) -# define STDC -#endif -#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) -# define STDC -#endif -#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) -# define STDC -#endif -#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) -# define STDC -#endif - -#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ -# define STDC -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const /* note: need a more gentle solution here */ -# endif -#endif - -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const -#endif - -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) -# define NO_DUMMY_DECL -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus a few kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#ifdef SYS16BIT -# if defined(M_I86SM) || defined(M_I86MM) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR _far -# else -# define FAR far -# endif -# endif -# if (defined(__SMALL__) || defined(__MEDIUM__)) - /* Turbo C small or medium model */ -# define SMALL_MEDIUM -# ifdef __BORLANDC__ -# define FAR _far -# else -# define FAR far -# endif -# endif -#endif - -#if defined(WINDOWS) || defined(WIN32) - /* If building or using zlib as a DLL, define ZLIB_DLL. - * This is not mandatory, but it offers a little performance increase. - */ -# ifdef ZLIB_DLL -# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) -# ifdef ZLIB_INTERNAL -# define ZEXTERN extern __declspec(dllexport) -# else -# define ZEXTERN extern __declspec(dllimport) -# endif -# endif -# endif /* ZLIB_DLL */ - /* If building or using zlib with the WINAPI/WINAPIV calling convention, - * define ZLIB_WINAPI. - * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. - */ -# ifdef ZLIB_WINAPI -# ifdef FAR -# undef FAR -# endif -# include - /* No need for _export, use ZLIB.DEF instead. */ - /* For complete Windows compatibility, use WINAPI, not __stdcall. */ -# define ZEXPORT WINAPI -# ifdef WIN32 -# define ZEXPORTVA WINAPIV -# else -# define ZEXPORTVA FAR CDECL -# endif -# endif -#endif - -#if defined (__BEOS__) -# ifdef ZLIB_DLL -# ifdef ZLIB_INTERNAL -# define ZEXPORT __declspec(dllexport) -# define ZEXPORTVA __declspec(dllexport) -# else -# define ZEXPORT __declspec(dllimport) -# define ZEXPORTVA __declspec(dllimport) -# endif -# endif -#endif - -#ifndef ZEXTERN -# define ZEXTERN extern -#endif -#ifndef ZEXPORT -# define ZEXPORT -#endif -#ifndef ZEXPORTVA -# define ZEXPORTVA -#endif - -#ifndef FAR -# define FAR -#endif - -#if !defined(__MACTYPES__) -typedef unsigned char Byte; /* 8 bits */ -#endif -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#ifdef SMALL_MEDIUM - /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void const *voidpc; - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte const *voidpc; - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - -#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) -# include -# if (UINT_MAX == 0xffffffffUL) -# define Z_U4 unsigned -# elif (ULONG_MAX == 0xffffffffUL) -# define Z_U4 unsigned long -# elif (USHRT_MAX == 0xffffffffUL) -# define Z_U4 unsigned short -# endif -#endif - -#ifdef Z_U4 - typedef Z_U4 z_crc_t; -#else - typedef unsigned long z_crc_t; -#endif - -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_UNISTD_H -#endif - -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_STDARG_H -#endif - -#ifdef STDC -# ifndef Z_SOLO -# include /* for off_t */ -# endif -#endif - -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -# include /* for va_list */ -# endif -#endif - -#ifdef _WIN32 -# ifndef Z_SOLO -# include /* for wchar_t */ -# endif -#endif - -/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and - * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even - * though the former does not conform to the LFS document), but considering - * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as - * equivalently requesting no 64-bit operations - */ -#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 -# undef _LARGEFILE64_SOURCE -#endif - -#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) -# define Z_HAVE_UNISTD_H -#endif -#ifndef Z_SOLO -# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) -# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ -# ifdef VMS -# include /* for off_t */ -# endif -# ifndef z_off_t -# define z_off_t off_t -# endif -# endif -#endif - -#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 -# define Z_LFS64 -#endif - -#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) -# define Z_LARGE64 -#endif - -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) -# define Z_WANT64 -#endif - -#if !defined(SEEK_SET) && !defined(Z_SOLO) -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ -#endif - -#ifndef z_off_t -# define z_off_t long -#endif - -#if !defined(_WIN32) && defined(Z_LARGE64) -# define z_off64_t off64_t -#else -# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) - #pragma map(deflateInit_,"DEIN") - #pragma map(deflateInit2_,"DEIN2") - #pragma map(deflateEnd,"DEEND") - #pragma map(deflateBound,"DEBND") - #pragma map(inflateInit_,"ININ") - #pragma map(inflateInit2_,"ININ2") - #pragma map(inflateEnd,"INEND") - #pragma map(inflateSync,"INSY") - #pragma map(inflateSetDictionary,"INSEDI") - #pragma map(compressBound,"CMBND") - #pragma map(inflate_table,"INTABL") - #pragma map(inflate_fast,"INFA") - #pragma map(inflate_copyright,"INCOPY") -#endif - -#endif /* ZCONF_H */ diff --git a/io2d/src/3rd-party/zlib/zconf.h.cmakein b/io2d/src/3rd-party/zlib/zconf.h.cmakein deleted file mode 100644 index 043019c..0000000 --- a/io2d/src/3rd-party/zlib/zconf.h.cmakein +++ /dev/null @@ -1,513 +0,0 @@ -/* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2013 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#ifndef ZCONF_H -#define ZCONF_H -#cmakedefine Z_PREFIX -#cmakedefine Z_HAVE_UNISTD_H - -/* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. - * Even better than compiling with -DZ_PREFIX would be to use configure to set - * this permanently in zconf.h using "./configure --zprefix". - */ -#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ -# define Z_PREFIX_SET - -/* all linked symbols */ -# define _dist_code z__dist_code -# define _length_code z__length_code -# define _tr_align z__tr_align -# define _tr_flush_bits z__tr_flush_bits -# define _tr_flush_block z__tr_flush_block -# define _tr_init z__tr_init -# define _tr_stored_block z__tr_stored_block -# define _tr_tally z__tr_tally -# define adler32 z_adler32 -# define adler32_combine z_adler32_combine -# define adler32_combine64 z_adler32_combine64 -# ifndef Z_SOLO -# define compress z_compress -# define compress2 z_compress2 -# define compressBound z_compressBound -# endif -# define crc32 z_crc32 -# define crc32_combine z_crc32_combine -# define crc32_combine64 z_crc32_combine64 -# define deflate z_deflate -# define deflateBound z_deflateBound -# define deflateCopy z_deflateCopy -# define deflateEnd z_deflateEnd -# define deflateInit2_ z_deflateInit2_ -# define deflateInit_ z_deflateInit_ -# define deflateParams z_deflateParams -# define deflatePending z_deflatePending -# define deflatePrime z_deflatePrime -# define deflateReset z_deflateReset -# define deflateResetKeep z_deflateResetKeep -# define deflateSetDictionary z_deflateSetDictionary -# define deflateSetHeader z_deflateSetHeader -# define deflateTune z_deflateTune -# define deflate_copyright z_deflate_copyright -# define get_crc_table z_get_crc_table -# ifndef Z_SOLO -# define gz_error z_gz_error -# define gz_intmax z_gz_intmax -# define gz_strwinerror z_gz_strwinerror -# define gzbuffer z_gzbuffer -# define gzclearerr z_gzclearerr -# define gzclose z_gzclose -# define gzclose_r z_gzclose_r -# define gzclose_w z_gzclose_w -# define gzdirect z_gzdirect -# define gzdopen z_gzdopen -# define gzeof z_gzeof -# define gzerror z_gzerror -# define gzflush z_gzflush -# define gzgetc z_gzgetc -# define gzgetc_ z_gzgetc_ -# define gzgets z_gzgets -# define gzoffset z_gzoffset -# define gzoffset64 z_gzoffset64 -# define gzopen z_gzopen -# define gzopen64 z_gzopen64 -# ifdef _WIN32 -# define gzopen_w z_gzopen_w -# endif -# define gzprintf z_gzprintf -# define gzvprintf z_gzvprintf -# define gzputc z_gzputc -# define gzputs z_gzputs -# define gzread z_gzread -# define gzrewind z_gzrewind -# define gzseek z_gzseek -# define gzseek64 z_gzseek64 -# define gzsetparams z_gzsetparams -# define gztell z_gztell -# define gztell64 z_gztell64 -# define gzungetc z_gzungetc -# define gzwrite z_gzwrite -# endif -# define inflate z_inflate -# define inflateBack z_inflateBack -# define inflateBackEnd z_inflateBackEnd -# define inflateBackInit_ z_inflateBackInit_ -# define inflateCopy z_inflateCopy -# define inflateEnd z_inflateEnd -# define inflateGetHeader z_inflateGetHeader -# define inflateInit2_ z_inflateInit2_ -# define inflateInit_ z_inflateInit_ -# define inflateMark z_inflateMark -# define inflatePrime z_inflatePrime -# define inflateReset z_inflateReset -# define inflateReset2 z_inflateReset2 -# define inflateSetDictionary z_inflateSetDictionary -# define inflateGetDictionary z_inflateGetDictionary -# define inflateSync z_inflateSync -# define inflateSyncPoint z_inflateSyncPoint -# define inflateUndermine z_inflateUndermine -# define inflateResetKeep z_inflateResetKeep -# define inflate_copyright z_inflate_copyright -# define inflate_fast z_inflate_fast -# define inflate_table z_inflate_table -# ifndef Z_SOLO -# define uncompress z_uncompress -# endif -# define zError z_zError -# ifndef Z_SOLO -# define zcalloc z_zcalloc -# define zcfree z_zcfree -# endif -# define zlibCompileFlags z_zlibCompileFlags -# define zlibVersion z_zlibVersion - -/* all zlib typedefs in zlib.h and zconf.h */ -# define Byte z_Byte -# define Bytef z_Bytef -# define alloc_func z_alloc_func -# define charf z_charf -# define free_func z_free_func -# ifndef Z_SOLO -# define gzFile z_gzFile -# endif -# define gz_header z_gz_header -# define gz_headerp z_gz_headerp -# define in_func z_in_func -# define intf z_intf -# define out_func z_out_func -# define uInt z_uInt -# define uIntf z_uIntf -# define uLong z_uLong -# define uLongf z_uLongf -# define voidp z_voidp -# define voidpc z_voidpc -# define voidpf z_voidpf - -/* all zlib structs in zlib.h and zconf.h */ -# define gz_header_s z_gz_header_s -# define internal_state z_internal_state - -#endif - -#if defined(__MSDOS__) && !defined(MSDOS) -# define MSDOS -#endif -#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) -# define OS2 -#endif -#if defined(_WINDOWS) && !defined(WINDOWS) -# define WINDOWS -#endif -#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) -# ifndef WIN32 -# define WIN32 -# endif -#endif -#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) -# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) -# ifndef SYS16BIT -# define SYS16BIT -# endif -# endif -#endif - -/* - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more - * than 64k bytes at a time (needed on systems with 16-bit int). - */ -#ifdef SYS16BIT -# define MAXSEG_64K -#endif -#ifdef MSDOS -# define UNALIGNED_OK -#endif - -#ifdef __STDC_VERSION__ -# ifndef STDC -# define STDC -# endif -# if __STDC_VERSION__ >= 199901L -# ifndef STDC99 -# define STDC99 -# endif -# endif -#endif -#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) -# define STDC -#endif -#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) -# define STDC -#endif -#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) -# define STDC -#endif -#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) -# define STDC -#endif - -#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ -# define STDC -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const /* note: need a more gentle solution here */ -# endif -#endif - -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const -#endif - -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) -# define NO_DUMMY_DECL -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus a few kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#ifdef SYS16BIT -# if defined(M_I86SM) || defined(M_I86MM) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR _far -# else -# define FAR far -# endif -# endif -# if (defined(__SMALL__) || defined(__MEDIUM__)) - /* Turbo C small or medium model */ -# define SMALL_MEDIUM -# ifdef __BORLANDC__ -# define FAR _far -# else -# define FAR far -# endif -# endif -#endif - -#if defined(WINDOWS) || defined(WIN32) - /* If building or using zlib as a DLL, define ZLIB_DLL. - * This is not mandatory, but it offers a little performance increase. - */ -# ifdef ZLIB_DLL -# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) -# ifdef ZLIB_INTERNAL -# define ZEXTERN extern __declspec(dllexport) -# else -# define ZEXTERN extern __declspec(dllimport) -# endif -# endif -# endif /* ZLIB_DLL */ - /* If building or using zlib with the WINAPI/WINAPIV calling convention, - * define ZLIB_WINAPI. - * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. - */ -# ifdef ZLIB_WINAPI -# ifdef FAR -# undef FAR -# endif -# include - /* No need for _export, use ZLIB.DEF instead. */ - /* For complete Windows compatibility, use WINAPI, not __stdcall. */ -# define ZEXPORT WINAPI -# ifdef WIN32 -# define ZEXPORTVA WINAPIV -# else -# define ZEXPORTVA FAR CDECL -# endif -# endif -#endif - -#if defined (__BEOS__) -# ifdef ZLIB_DLL -# ifdef ZLIB_INTERNAL -# define ZEXPORT __declspec(dllexport) -# define ZEXPORTVA __declspec(dllexport) -# else -# define ZEXPORT __declspec(dllimport) -# define ZEXPORTVA __declspec(dllimport) -# endif -# endif -#endif - -#ifndef ZEXTERN -# define ZEXTERN extern -#endif -#ifndef ZEXPORT -# define ZEXPORT -#endif -#ifndef ZEXPORTVA -# define ZEXPORTVA -#endif - -#ifndef FAR -# define FAR -#endif - -#if !defined(__MACTYPES__) -typedef unsigned char Byte; /* 8 bits */ -#endif -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#ifdef SMALL_MEDIUM - /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void const *voidpc; - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte const *voidpc; - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - -#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) -# include -# if (UINT_MAX == 0xffffffffUL) -# define Z_U4 unsigned -# elif (ULONG_MAX == 0xffffffffUL) -# define Z_U4 unsigned long -# elif (USHRT_MAX == 0xffffffffUL) -# define Z_U4 unsigned short -# endif -#endif - -#ifdef Z_U4 - typedef Z_U4 z_crc_t; -#else - typedef unsigned long z_crc_t; -#endif - -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_UNISTD_H -#endif - -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_STDARG_H -#endif - -#ifdef STDC -# ifndef Z_SOLO -# include /* for off_t */ -# endif -#endif - -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -# include /* for va_list */ -# endif -#endif - -#ifdef _WIN32 -# ifndef Z_SOLO -# include /* for wchar_t */ -# endif -#endif - -/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and - * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even - * though the former does not conform to the LFS document), but considering - * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as - * equivalently requesting no 64-bit operations - */ -#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 -# undef _LARGEFILE64_SOURCE -#endif - -#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) -# define Z_HAVE_UNISTD_H -#endif -#ifndef Z_SOLO -# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) -# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ -# ifdef VMS -# include /* for off_t */ -# endif -# ifndef z_off_t -# define z_off_t off_t -# endif -# endif -#endif - -#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 -# define Z_LFS64 -#endif - -#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) -# define Z_LARGE64 -#endif - -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) -# define Z_WANT64 -#endif - -#if !defined(SEEK_SET) && !defined(Z_SOLO) -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ -#endif - -#ifndef z_off_t -# define z_off_t long -#endif - -#if !defined(_WIN32) && defined(Z_LARGE64) -# define z_off64_t off64_t -#else -# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) - #pragma map(deflateInit_,"DEIN") - #pragma map(deflateInit2_,"DEIN2") - #pragma map(deflateEnd,"DEEND") - #pragma map(deflateBound,"DEBND") - #pragma map(inflateInit_,"ININ") - #pragma map(inflateInit2_,"ININ2") - #pragma map(inflateEnd,"INEND") - #pragma map(inflateSync,"INSY") - #pragma map(inflateSetDictionary,"INSEDI") - #pragma map(compressBound,"CMBND") - #pragma map(inflate_table,"INTABL") - #pragma map(inflate_fast,"INFA") - #pragma map(inflate_copyright,"INCOPY") -#endif - -#endif /* ZCONF_H */ diff --git a/io2d/src/3rd-party/zlib/zconf.h.in b/io2d/src/3rd-party/zlib/zconf.h.in deleted file mode 100644 index 9987a77..0000000 --- a/io2d/src/3rd-party/zlib/zconf.h.in +++ /dev/null @@ -1,511 +0,0 @@ -/* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2013 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#ifndef ZCONF_H -#define ZCONF_H - -/* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. - * Even better than compiling with -DZ_PREFIX would be to use configure to set - * this permanently in zconf.h using "./configure --zprefix". - */ -#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ -# define Z_PREFIX_SET - -/* all linked symbols */ -# define _dist_code z__dist_code -# define _length_code z__length_code -# define _tr_align z__tr_align -# define _tr_flush_bits z__tr_flush_bits -# define _tr_flush_block z__tr_flush_block -# define _tr_init z__tr_init -# define _tr_stored_block z__tr_stored_block -# define _tr_tally z__tr_tally -# define adler32 z_adler32 -# define adler32_combine z_adler32_combine -# define adler32_combine64 z_adler32_combine64 -# ifndef Z_SOLO -# define compress z_compress -# define compress2 z_compress2 -# define compressBound z_compressBound -# endif -# define crc32 z_crc32 -# define crc32_combine z_crc32_combine -# define crc32_combine64 z_crc32_combine64 -# define deflate z_deflate -# define deflateBound z_deflateBound -# define deflateCopy z_deflateCopy -# define deflateEnd z_deflateEnd -# define deflateInit2_ z_deflateInit2_ -# define deflateInit_ z_deflateInit_ -# define deflateParams z_deflateParams -# define deflatePending z_deflatePending -# define deflatePrime z_deflatePrime -# define deflateReset z_deflateReset -# define deflateResetKeep z_deflateResetKeep -# define deflateSetDictionary z_deflateSetDictionary -# define deflateSetHeader z_deflateSetHeader -# define deflateTune z_deflateTune -# define deflate_copyright z_deflate_copyright -# define get_crc_table z_get_crc_table -# ifndef Z_SOLO -# define gz_error z_gz_error -# define gz_intmax z_gz_intmax -# define gz_strwinerror z_gz_strwinerror -# define gzbuffer z_gzbuffer -# define gzclearerr z_gzclearerr -# define gzclose z_gzclose -# define gzclose_r z_gzclose_r -# define gzclose_w z_gzclose_w -# define gzdirect z_gzdirect -# define gzdopen z_gzdopen -# define gzeof z_gzeof -# define gzerror z_gzerror -# define gzflush z_gzflush -# define gzgetc z_gzgetc -# define gzgetc_ z_gzgetc_ -# define gzgets z_gzgets -# define gzoffset z_gzoffset -# define gzoffset64 z_gzoffset64 -# define gzopen z_gzopen -# define gzopen64 z_gzopen64 -# ifdef _WIN32 -# define gzopen_w z_gzopen_w -# endif -# define gzprintf z_gzprintf -# define gzvprintf z_gzvprintf -# define gzputc z_gzputc -# define gzputs z_gzputs -# define gzread z_gzread -# define gzrewind z_gzrewind -# define gzseek z_gzseek -# define gzseek64 z_gzseek64 -# define gzsetparams z_gzsetparams -# define gztell z_gztell -# define gztell64 z_gztell64 -# define gzungetc z_gzungetc -# define gzwrite z_gzwrite -# endif -# define inflate z_inflate -# define inflateBack z_inflateBack -# define inflateBackEnd z_inflateBackEnd -# define inflateBackInit_ z_inflateBackInit_ -# define inflateCopy z_inflateCopy -# define inflateEnd z_inflateEnd -# define inflateGetHeader z_inflateGetHeader -# define inflateInit2_ z_inflateInit2_ -# define inflateInit_ z_inflateInit_ -# define inflateMark z_inflateMark -# define inflatePrime z_inflatePrime -# define inflateReset z_inflateReset -# define inflateReset2 z_inflateReset2 -# define inflateSetDictionary z_inflateSetDictionary -# define inflateGetDictionary z_inflateGetDictionary -# define inflateSync z_inflateSync -# define inflateSyncPoint z_inflateSyncPoint -# define inflateUndermine z_inflateUndermine -# define inflateResetKeep z_inflateResetKeep -# define inflate_copyright z_inflate_copyright -# define inflate_fast z_inflate_fast -# define inflate_table z_inflate_table -# ifndef Z_SOLO -# define uncompress z_uncompress -# endif -# define zError z_zError -# ifndef Z_SOLO -# define zcalloc z_zcalloc -# define zcfree z_zcfree -# endif -# define zlibCompileFlags z_zlibCompileFlags -# define zlibVersion z_zlibVersion - -/* all zlib typedefs in zlib.h and zconf.h */ -# define Byte z_Byte -# define Bytef z_Bytef -# define alloc_func z_alloc_func -# define charf z_charf -# define free_func z_free_func -# ifndef Z_SOLO -# define gzFile z_gzFile -# endif -# define gz_header z_gz_header -# define gz_headerp z_gz_headerp -# define in_func z_in_func -# define intf z_intf -# define out_func z_out_func -# define uInt z_uInt -# define uIntf z_uIntf -# define uLong z_uLong -# define uLongf z_uLongf -# define voidp z_voidp -# define voidpc z_voidpc -# define voidpf z_voidpf - -/* all zlib structs in zlib.h and zconf.h */ -# define gz_header_s z_gz_header_s -# define internal_state z_internal_state - -#endif - -#if defined(__MSDOS__) && !defined(MSDOS) -# define MSDOS -#endif -#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) -# define OS2 -#endif -#if defined(_WINDOWS) && !defined(WINDOWS) -# define WINDOWS -#endif -#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) -# ifndef WIN32 -# define WIN32 -# endif -#endif -#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) -# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) -# ifndef SYS16BIT -# define SYS16BIT -# endif -# endif -#endif - -/* - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more - * than 64k bytes at a time (needed on systems with 16-bit int). - */ -#ifdef SYS16BIT -# define MAXSEG_64K -#endif -#ifdef MSDOS -# define UNALIGNED_OK -#endif - -#ifdef __STDC_VERSION__ -# ifndef STDC -# define STDC -# endif -# if __STDC_VERSION__ >= 199901L -# ifndef STDC99 -# define STDC99 -# endif -# endif -#endif -#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) -# define STDC -#endif -#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) -# define STDC -#endif -#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) -# define STDC -#endif -#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) -# define STDC -#endif - -#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ -# define STDC -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const /* note: need a more gentle solution here */ -# endif -#endif - -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const -#endif - -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) -# define NO_DUMMY_DECL -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus a few kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#ifdef SYS16BIT -# if defined(M_I86SM) || defined(M_I86MM) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR _far -# else -# define FAR far -# endif -# endif -# if (defined(__SMALL__) || defined(__MEDIUM__)) - /* Turbo C small or medium model */ -# define SMALL_MEDIUM -# ifdef __BORLANDC__ -# define FAR _far -# else -# define FAR far -# endif -# endif -#endif - -#if defined(WINDOWS) || defined(WIN32) - /* If building or using zlib as a DLL, define ZLIB_DLL. - * This is not mandatory, but it offers a little performance increase. - */ -# ifdef ZLIB_DLL -# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) -# ifdef ZLIB_INTERNAL -# define ZEXTERN extern __declspec(dllexport) -# else -# define ZEXTERN extern __declspec(dllimport) -# endif -# endif -# endif /* ZLIB_DLL */ - /* If building or using zlib with the WINAPI/WINAPIV calling convention, - * define ZLIB_WINAPI. - * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. - */ -# ifdef ZLIB_WINAPI -# ifdef FAR -# undef FAR -# endif -# include - /* No need for _export, use ZLIB.DEF instead. */ - /* For complete Windows compatibility, use WINAPI, not __stdcall. */ -# define ZEXPORT WINAPI -# ifdef WIN32 -# define ZEXPORTVA WINAPIV -# else -# define ZEXPORTVA FAR CDECL -# endif -# endif -#endif - -#if defined (__BEOS__) -# ifdef ZLIB_DLL -# ifdef ZLIB_INTERNAL -# define ZEXPORT __declspec(dllexport) -# define ZEXPORTVA __declspec(dllexport) -# else -# define ZEXPORT __declspec(dllimport) -# define ZEXPORTVA __declspec(dllimport) -# endif -# endif -#endif - -#ifndef ZEXTERN -# define ZEXTERN extern -#endif -#ifndef ZEXPORT -# define ZEXPORT -#endif -#ifndef ZEXPORTVA -# define ZEXPORTVA -#endif - -#ifndef FAR -# define FAR -#endif - -#if !defined(__MACTYPES__) -typedef unsigned char Byte; /* 8 bits */ -#endif -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#ifdef SMALL_MEDIUM - /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void const *voidpc; - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte const *voidpc; - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - -#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) -# include -# if (UINT_MAX == 0xffffffffUL) -# define Z_U4 unsigned -# elif (ULONG_MAX == 0xffffffffUL) -# define Z_U4 unsigned long -# elif (USHRT_MAX == 0xffffffffUL) -# define Z_U4 unsigned short -# endif -#endif - -#ifdef Z_U4 - typedef Z_U4 z_crc_t; -#else - typedef unsigned long z_crc_t; -#endif - -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_UNISTD_H -#endif - -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_STDARG_H -#endif - -#ifdef STDC -# ifndef Z_SOLO -# include /* for off_t */ -# endif -#endif - -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -# include /* for va_list */ -# endif -#endif - -#ifdef _WIN32 -# ifndef Z_SOLO -# include /* for wchar_t */ -# endif -#endif - -/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and - * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even - * though the former does not conform to the LFS document), but considering - * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as - * equivalently requesting no 64-bit operations - */ -#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 -# undef _LARGEFILE64_SOURCE -#endif - -#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) -# define Z_HAVE_UNISTD_H -#endif -#ifndef Z_SOLO -# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) -# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ -# ifdef VMS -# include /* for off_t */ -# endif -# ifndef z_off_t -# define z_off_t off_t -# endif -# endif -#endif - -#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 -# define Z_LFS64 -#endif - -#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) -# define Z_LARGE64 -#endif - -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) -# define Z_WANT64 -#endif - -#if !defined(SEEK_SET) && !defined(Z_SOLO) -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ -#endif - -#ifndef z_off_t -# define z_off_t long -#endif - -#if !defined(_WIN32) && defined(Z_LARGE64) -# define z_off64_t off64_t -#else -# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) - #pragma map(deflateInit_,"DEIN") - #pragma map(deflateInit2_,"DEIN2") - #pragma map(deflateEnd,"DEEND") - #pragma map(deflateBound,"DEBND") - #pragma map(inflateInit_,"ININ") - #pragma map(inflateInit2_,"ININ2") - #pragma map(inflateEnd,"INEND") - #pragma map(inflateSync,"INSY") - #pragma map(inflateSetDictionary,"INSEDI") - #pragma map(compressBound,"CMBND") - #pragma map(inflate_table,"INTABL") - #pragma map(inflate_fast,"INFA") - #pragma map(inflate_copyright,"INCOPY") -#endif - -#endif /* ZCONF_H */ diff --git a/io2d/src/3rd-party/zlib/zlib.3 b/io2d/src/3rd-party/zlib/zlib.3 deleted file mode 100644 index 0160e62..0000000 --- a/io2d/src/3rd-party/zlib/zlib.3 +++ /dev/null @@ -1,151 +0,0 @@ -.TH ZLIB 3 "28 Apr 2013" -.SH NAME -zlib \- compression/decompression library -.SH SYNOPSIS -[see -.I zlib.h -for full description] -.SH DESCRIPTION -The -.I zlib -library is a general purpose data compression library. -The code is thread safe, assuming that the standard library functions -used are thread safe, such as memory allocation routines. -It provides in-memory compression and decompression functions, -including integrity checks of the uncompressed data. -This version of the library supports only one compression method (deflation) -but other algorithms may be added later -with the same stream interface. -.LP -Compression can be done in a single step if the buffers are large enough -or can be done by repeated calls of the compression function. -In the latter case, -the application must provide more input and/or consume the output -(providing more output space) before each call. -.LP -The library also supports reading and writing files in -.IR gzip (1) -(.gz) format -with an interface similar to that of stdio. -.LP -The library does not install any signal handler. -The decoder checks the consistency of the compressed data, -so the library should never crash even in the case of corrupted input. -.LP -All functions of the compression library are documented in the file -.IR zlib.h . -The distribution source includes examples of use of the library -in the files -.I test/example.c -and -.IR test/minigzip.c, -as well as other examples in the -.IR examples/ -directory. -.LP -Changes to this version are documented in the file -.I ChangeLog -that accompanies the source. -.LP -.I zlib -is available in Java using the java.util.zip package: -.IP -http://java.sun.com/developer/technicalArticles/Programming/compression/ -.LP -A Perl interface to -.IR zlib , -written by Paul Marquess (pmqs@cpan.org), -is available at CPAN (Comprehensive Perl Archive Network) sites, -including: -.IP -http://search.cpan.org/~pmqs/IO-Compress-Zlib/ -.LP -A Python interface to -.IR zlib , -written by A.M. Kuchling (amk@magnet.com), -is available in Python 1.5 and later versions: -.IP -http://docs.python.org/library/zlib.html -.LP -.I zlib -is built into -.IR tcl: -.IP -http://wiki.tcl.tk/4610 -.LP -An experimental package to read and write files in .zip format, -written on top of -.I zlib -by Gilles Vollant (info@winimage.com), -is available at: -.IP -http://www.winimage.com/zLibDll/minizip.html -and also in the -.I contrib/minizip -directory of the main -.I zlib -source distribution. -.SH "SEE ALSO" -The -.I zlib -web site can be found at: -.IP -http://zlib.net/ -.LP -The data format used by the zlib library is described by RFC -(Request for Comments) 1950 to 1952 in the files: -.IP -http://tools.ietf.org/html/rfc1950 (for the zlib header and trailer format) -.br -http://tools.ietf.org/html/rfc1951 (for the deflate compressed data format) -.br -http://tools.ietf.org/html/rfc1952 (for the gzip header and trailer format) -.LP -Mark Nelson wrote an article about -.I zlib -for the Jan. 1997 issue of Dr. Dobb's Journal; -a copy of the article is available at: -.IP -http://marknelson.us/1997/01/01/zlib-engine/ -.SH "REPORTING PROBLEMS" -Before reporting a problem, -please check the -.I zlib -web site to verify that you have the latest version of -.IR zlib ; -otherwise, -obtain the latest version and see if the problem still exists. -Please read the -.I zlib -FAQ at: -.IP -http://zlib.net/zlib_faq.html -.LP -before asking for help. -Send questions and/or comments to zlib@gzip.org, -or (for the Windows DLL version) to Gilles Vollant (info@winimage.com). -.SH AUTHORS -Version 1.2.8 -Copyright (C) 1995-2013 Jean-loup Gailly (jloup@gzip.org) -and Mark Adler (madler@alumni.caltech.edu). -.LP -This software is provided "as-is," -without any express or implied warranty. -In no event will the authors be held liable for any damages -arising from the use of this software. -See the distribution directory with respect to requirements -governing redistribution. -The deflate format used by -.I zlib -was defined by Phil Katz. -The deflate and -.I zlib -specifications were written by L. Peter Deutsch. -Thanks to all the people who reported problems and suggested various -improvements in -.IR zlib ; -who are too numerous to cite here. -.LP -UNIX manual page by R. P. C. Rodgers, -U.S. National Library of Medicine (rodgers@nlm.nih.gov). -.\" end of man page diff --git a/io2d/src/3rd-party/zlib/zlib.3.pdf b/io2d/src/3rd-party/zlib/zlib.3.pdf deleted file mode 100644 index a346b5d7e24834806b0871b209637c728fb36d60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8734 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 diff --git a/io2d/src/3rd-party/zlib/zlib.h b/io2d/src/3rd-party/zlib/zlib.h deleted file mode 100644 index 3e0c767..0000000 --- a/io2d/src/3rd-party/zlib/zlib.h +++ /dev/null @@ -1,1768 +0,0 @@ -/* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.8, April 28th, 2013 - - Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - - - The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 - (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). -*/ - -#ifndef ZLIB_H -#define ZLIB_H - -#include "zconf.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define ZLIB_VERSION "1.2.8" -#define ZLIB_VERNUM 0x1280 -#define ZLIB_VER_MAJOR 1 -#define ZLIB_VER_MINOR 2 -#define ZLIB_VER_REVISION 8 -#define ZLIB_VER_SUBREVISION 0 - -/* - The 'zlib' compression library provides in-memory compression and - decompression functions, including integrity checks of the uncompressed data. - This version of the library supports only one compression method (deflation) - but other algorithms will be added later and will have the same stream - interface. - - Compression can be done in a single step if the buffers are large enough, - or can be done by repeated calls of the compression function. In the latter - case, the application must provide more input and/or consume the output - (providing more output space) before each call. - - The compressed data format used by default by the in-memory functions is - the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped - around a deflate stream, which is itself documented in RFC 1951. - - The library also supports reading and writing files in gzip (.gz) format - with an interface similar to that of stdio using the functions that start - with "gz". The gzip format is different from the zlib format. gzip is a - gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. - - This library can optionally read and write gzip streams in memory as well. - - The zlib format was designed to be compact and fast for use in memory - and on communications channels. The gzip format was designed for single- - file compression on file systems, has a larger header than zlib to maintain - directory information, and uses a different, slower check method than zlib. - - The library does not install any signal handler. The decoder checks - the consistency of the compressed data, so the library should never crash - even in case of corrupted input. -*/ - -typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); -typedef void (*free_func) OF((voidpf opaque, voidpf address)); - -struct internal_state; - -typedef struct z_stream_s { - z_const Bytef *next_in; /* next input byte */ - uInt avail_in; /* number of bytes available at next_in */ - uLong total_in; /* total number of input bytes read so far */ - - Bytef *next_out; /* next output byte should be put there */ - uInt avail_out; /* remaining free space at next_out */ - uLong total_out; /* total number of bytes output so far */ - - z_const char *msg; /* last error message, NULL if no error */ - struct internal_state FAR *state; /* not visible by applications */ - - alloc_func zalloc; /* used to allocate the internal state */ - free_func zfree; /* used to free the internal state */ - voidpf opaque; /* private data object passed to zalloc and zfree */ - - int data_type; /* best guess about the data type: binary or text */ - uLong adler; /* adler32 value of the uncompressed data */ - uLong reserved; /* reserved for future use */ -} z_stream; - -typedef z_stream FAR *z_streamp; - -/* - gzip header information passed to and from zlib routines. See RFC 1952 - for more details on the meanings of these fields. -*/ -typedef struct gz_header_s { - int text; /* true if compressed data believed to be text */ - uLong time; /* modification time */ - int xflags; /* extra flags (not used when writing a gzip file) */ - int os; /* operating system */ - Bytef *extra; /* pointer to extra field or Z_NULL if none */ - uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ - uInt extra_max; /* space at extra (only when reading header) */ - Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ - uInt name_max; /* space at name (only when reading header) */ - Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ - uInt comm_max; /* space at comment (only when reading header) */ - int hcrc; /* true if there was or will be a header crc */ - int done; /* true when done reading gzip header (not used - when writing a gzip file) */ -} gz_header; - -typedef gz_header FAR *gz_headerp; - -/* - The application must update next_in and avail_in when avail_in has dropped - to zero. It must update next_out and avail_out when avail_out has dropped - to zero. The application must initialize zalloc, zfree and opaque before - calling the init function. All other fields are set by the compression - library and must not be updated by the application. - - The opaque value provided by the application will be passed as the first - parameter for calls of zalloc and zfree. This can be useful for custom - memory management. The compression library attaches no meaning to the - opaque value. - - zalloc must return Z_NULL if there is not enough memory for the object. - If zlib is used in a multi-threaded application, zalloc and zfree must be - thread safe. - - On 16-bit systems, the functions zalloc and zfree must be able to allocate - exactly 65536 bytes, but will not be required to allocate more than this if - the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers - returned by zalloc for objects of exactly 65536 bytes *must* have their - offset normalized to zero. The default allocation function provided by this - library ensures this (see zutil.c). To reduce memory requirements and avoid - any allocation of 64K objects, at the expense of compression ratio, compile - the library with -DMAX_WBITS=14 (see zconf.h). - - The fields total_in and total_out can be used for statistics or progress - reports. After compression, total_in holds the total size of the - uncompressed data and may be saved for use in the decompressor (particularly - if the decompressor wants to decompress everything in a single step). -*/ - - /* constants */ - -#define Z_NO_FLUSH 0 -#define Z_PARTIAL_FLUSH 1 -#define Z_SYNC_FLUSH 2 -#define Z_FULL_FLUSH 3 -#define Z_FINISH 4 -#define Z_BLOCK 5 -#define Z_TREES 6 -/* Allowed flush values; see deflate() and inflate() below for details */ - -#define Z_OK 0 -#define Z_STREAM_END 1 -#define Z_NEED_DICT 2 -#define Z_ERRNO (-1) -#define Z_STREAM_ERROR (-2) -#define Z_DATA_ERROR (-3) -#define Z_MEM_ERROR (-4) -#define Z_BUF_ERROR (-5) -#define Z_VERSION_ERROR (-6) -/* Return codes for the compression/decompression functions. Negative values - * are errors, positive values are used for special but normal events. - */ - -#define Z_NO_COMPRESSION 0 -#define Z_BEST_SPEED 1 -#define Z_BEST_COMPRESSION 9 -#define Z_DEFAULT_COMPRESSION (-1) -/* compression levels */ - -#define Z_FILTERED 1 -#define Z_HUFFMAN_ONLY 2 -#define Z_RLE 3 -#define Z_FIXED 4 -#define Z_DEFAULT_STRATEGY 0 -/* compression strategy; see deflateInit2() below for details */ - -#define Z_BINARY 0 -#define Z_TEXT 1 -#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ -#define Z_UNKNOWN 2 -/* Possible values of the data_type field (though see inflate()) */ - -#define Z_DEFLATED 8 -/* The deflate compression method (the only one supported in this version) */ - -#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ - -#define zlib_version zlibVersion() -/* for compatibility with versions < 1.0.2 */ - - - /* basic functions */ - -ZEXTERN const char * ZEXPORT zlibVersion OF((void)); -/* The application can compare zlibVersion and ZLIB_VERSION for consistency. - If the first character differs, the library code actually used is not - compatible with the zlib.h header file used by the application. This check - is automatically made by deflateInit and inflateInit. - */ - -/* -ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); - - Initializes the internal stream state for compression. The fields - zalloc, zfree and opaque must be initialized before by the caller. If - zalloc and zfree are set to Z_NULL, deflateInit updates them to use default - allocation functions. - - The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: - 1 gives best speed, 9 gives best compression, 0 gives no compression at all - (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION - requests a default compromise between speed and compression (currently - equivalent to level 6). - - deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if level is not a valid compression level, or - Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible - with the version assumed by the caller (ZLIB_VERSION). msg is set to null - if there is no error message. deflateInit does not perform any compression: - this will be done by deflate(). -*/ - - -ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); -/* - deflate compresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. deflate performs one or both of the - following actions: - - - Compress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in and avail_in are updated and - processing will resume at this point for the next call of deflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. This action is forced if the parameter flush is non zero. - Forcing flush frequently degrades the compression ratio, so this parameter - should be set only when necessary (in interactive applications). Some - output may be provided even if flush is not set. - - Before the call of deflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming more - output, and updating avail_in or avail_out accordingly; avail_out should - never be zero before the call. The application can consume the compressed - output when it wants, for example when the output buffer is full (avail_out - == 0), or after each call of deflate(). If deflate returns Z_OK and with - zero avail_out, it must be called again after making room in the output - buffer because there might be more output pending. - - Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to - decide how much data to accumulate before producing output, in order to - maximize compression. - - If the parameter flush is set to Z_SYNC_FLUSH, all pending output is - flushed to the output buffer and the output is aligned on a byte boundary, so - that the decompressor can get all input data available so far. (In - particular avail_in is zero after the call if enough output space has been - provided before the call.) Flushing may degrade compression for some - compression algorithms and so it should be used only when necessary. This - completes the current deflate block and follows it with an empty stored block - that is three bits plus filler bits to the next byte, followed by four bytes - (00 00 ff ff). - - If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the - output buffer, but the output is not aligned to a byte boundary. All of the - input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. - This completes the current deflate block and follows it with an empty fixed - codes block that is 10 bits long. This assures that enough bytes are output - in order for the decompressor to finish the block before the empty fixed code - block. - - If flush is set to Z_BLOCK, a deflate block is completed and emitted, as - for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to - seven bits of the current block are held to be written as the next byte after - the next deflate block is completed. In this case, the decompressor may not - be provided enough bits at this point in order to complete decompression of - the data provided so far to the compressor. It may need to wait for the next - block to be emitted. This is for advanced applications that need to control - the emission of deflate blocks. - - If flush is set to Z_FULL_FLUSH, all output is flushed as with - Z_SYNC_FLUSH, and the compression state is reset so that decompression can - restart from this point if previous compressed data has been damaged or if - random access is desired. Using Z_FULL_FLUSH too often can seriously degrade - compression. - - If deflate returns with avail_out == 0, this function must be called again - with the same value of the flush parameter and more output space (updated - avail_out), until the flush is complete (deflate returns with non-zero - avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that - avail_out is greater than six to avoid repeated flush markers due to - avail_out == 0 on return. - - If the parameter flush is set to Z_FINISH, pending input is processed, - pending output is flushed and deflate returns with Z_STREAM_END if there was - enough output space; if deflate returns with Z_OK, this function must be - called again with Z_FINISH and more output space (updated avail_out) but no - more input data, until it returns with Z_STREAM_END or an error. After - deflate has returned Z_STREAM_END, the only possible operations on the stream - are deflateReset or deflateEnd. - - Z_FINISH can be used immediately after deflateInit if all the compression - is to be done in a single step. In this case, avail_out must be at least the - value returned by deflateBound (see below). Then deflate is guaranteed to - return Z_STREAM_END. If not enough output space is provided, deflate will - not return Z_STREAM_END, and it must be called again as described above. - - deflate() sets strm->adler to the adler32 checksum of all input read - so far (that is, total_in bytes). - - deflate() may update strm->data_type if it can make a good guess about - the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered - binary. This field is only for information purposes and does not affect the - compression algorithm in any manner. - - deflate() returns Z_OK if some progress has been made (more input - processed or more output produced), Z_STREAM_END if all input has been - consumed and all output has been produced (only when flush is set to - Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example - if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible - (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not - fatal, and deflate() can be called again with more input and more output - space to continue compressing. -*/ - - -ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any pending - output. - - deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the - stream state was inconsistent, Z_DATA_ERROR if the stream was freed - prematurely (some input or output was discarded). In the error case, msg - may be set but then points to a static string (which must not be - deallocated). -*/ - - -/* -ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); - - Initializes the internal stream state for decompression. The fields - next_in, avail_in, zalloc, zfree and opaque must be initialized before by - the caller. If next_in is not Z_NULL and avail_in is large enough (the - exact value depends on the compression method), inflateInit determines the - compression method from the zlib header and allocates all data structures - accordingly; otherwise the allocation will be deferred to the first call of - inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to - use default allocation functions. - - inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller, or Z_STREAM_ERROR if the parameters are - invalid, such as a null pointer to the structure. msg is set to null if - there is no error message. inflateInit does not perform any decompression - apart from possibly reading the zlib header if present: actual decompression - will be done by inflate(). (So next_in and avail_in may be modified, but - next_out and avail_out are unused and unchanged.) The current implementation - of inflateInit() does not process any header information -- that is deferred - until inflate() is called. -*/ - - -ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); -/* - inflate decompresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. inflate performs one or both of the - following actions: - - - Decompress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in is updated and processing will - resume at this point for the next call of inflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. inflate() provides as much output as possible, until there is - no more input data or no more space in the output buffer (see below about - the flush parameter). - - Before the call of inflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming more - output, and updating the next_* and avail_* values accordingly. The - application can consume the uncompressed output when it wants, for example - when the output buffer is full (avail_out == 0), or after each call of - inflate(). If inflate returns Z_OK and with zero avail_out, it must be - called again after making room in the output buffer because there might be - more output pending. - - The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, - Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much - output as possible to the output buffer. Z_BLOCK requests that inflate() - stop if and when it gets to the next deflate block boundary. When decoding - the zlib or gzip format, this will cause inflate() to return immediately - after the header and before the first block. When doing a raw inflate, - inflate() will go ahead and process the first block, and will return when it - gets to the end of that block, or when it runs out of data. - - The Z_BLOCK option assists in appending to or combining deflate streams. - Also to assist in this, on return inflate() will set strm->data_type to the - number of unused bits in the last byte taken from strm->next_in, plus 64 if - inflate() is currently decoding the last block in the deflate stream, plus - 128 if inflate() returned immediately after decoding an end-of-block code or - decoding the complete header up to just before the first byte of the deflate - stream. The end-of-block will not be indicated until all of the uncompressed - data from that block has been written to strm->next_out. The number of - unused bits may in general be greater than seven, except when bit 7 of - data_type is set, in which case the number of unused bits will be less than - eight. data_type is set as noted here every time inflate() returns for all - flush options, and so can be used to determine the amount of currently - consumed input in bits. - - The Z_TREES option behaves as Z_BLOCK does, but it also returns when the - end of each deflate block header is reached, before any actual data in that - block is decoded. This allows the caller to determine the length of the - deflate block header for later use in random access within a deflate block. - 256 is added to the value of strm->data_type when inflate() returns - immediately after reaching the end of the deflate block header. - - inflate() should normally be called until it returns Z_STREAM_END or an - error. However if all decompression is to be performed in a single step (a - single call of inflate), the parameter flush should be set to Z_FINISH. In - this case all pending input is processed and all pending output is flushed; - avail_out must be large enough to hold all of the uncompressed data for the - operation to complete. (The size of the uncompressed data may have been - saved by the compressor for this purpose.) The use of Z_FINISH is not - required to perform an inflation in one step. However it may be used to - inform inflate that a faster approach can be used for the single inflate() - call. Z_FINISH also informs inflate to not maintain a sliding window if the - stream completes, which reduces inflate's memory footprint. If the stream - does not complete, either because not all of the stream is provided or not - enough output space is provided, then a sliding window will be allocated and - inflate() can be called again to continue the operation as if Z_NO_FLUSH had - been used. - - In this implementation, inflate() always flushes as much output as - possible to the output buffer, and always uses the faster approach on the - first call. So the effects of the flush parameter in this implementation are - on the return value of inflate() as noted below, when inflate() returns early - when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of - memory for a sliding window when Z_FINISH is used. - - If a preset dictionary is needed after this call (see inflateSetDictionary - below), inflate sets strm->adler to the Adler-32 checksum of the dictionary - chosen by the compressor and returns Z_NEED_DICT; otherwise it sets - strm->adler to the Adler-32 checksum of all output produced so far (that is, - total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described - below. At the end of the stream, inflate() checks that its computed adler32 - checksum is equal to that saved by the compressor and returns Z_STREAM_END - only if the checksum is correct. - - inflate() can decompress and check either zlib-wrapped or gzip-wrapped - deflate data. The header type is detected automatically, if requested when - initializing with inflateInit2(). Any information contained in the gzip - header is not retained, so applications that need that information should - instead use raw inflate, see inflateInit2() below, or inflateBack() and - perform their own processing of the gzip header and trailer. When processing - gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output - producted so far. The CRC-32 is checked against the gzip trailer. - - inflate() returns Z_OK if some progress has been made (more input processed - or more output produced), Z_STREAM_END if the end of the compressed data has - been reached and all uncompressed output has been produced, Z_NEED_DICT if a - preset dictionary is needed at this point, Z_DATA_ERROR if the input data was - corrupted (input stream not conforming to the zlib format or incorrect check - value), Z_STREAM_ERROR if the stream structure was inconsistent (for example - next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, - Z_BUF_ERROR if no progress is possible or if there was not enough room in the - output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and - inflate() can be called again with more input and more output space to - continue decompressing. If Z_DATA_ERROR is returned, the application may - then call inflateSync() to look for a good compression block if a partial - recovery of the data is desired. -*/ - - -ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any pending - output. - - inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state - was inconsistent. In the error case, msg may be set but then points to a - static string (which must not be deallocated). -*/ - - - /* Advanced functions */ - -/* - The following functions are needed only in some special applications. -*/ - -/* -ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, - int level, - int method, - int windowBits, - int memLevel, - int strategy)); - - This is another version of deflateInit with more compression options. The - fields next_in, zalloc, zfree and opaque must be initialized before by the - caller. - - The method parameter is the compression method. It must be Z_DEFLATED in - this version of the library. - - The windowBits parameter is the base two logarithm of the window size - (the size of the history buffer). It should be in the range 8..15 for this - version of the library. Larger values of this parameter result in better - compression at the expense of memory usage. The default value is 15 if - deflateInit is used instead. - - windowBits can also be -8..-15 for raw deflate. In this case, -windowBits - determines the window size. deflate() will then generate raw deflate data - with no zlib header or trailer, and will not compute an adler32 check value. - - windowBits can also be greater than 15 for optional gzip encoding. Add - 16 to windowBits to write a simple gzip header and trailer around the - compressed data instead of a zlib wrapper. The gzip header will have no - file name, no extra data, no comment, no modification time (set to zero), no - header crc, and the operating system will be set to 255 (unknown). If a - gzip stream is being written, strm->adler is a crc32 instead of an adler32. - - The memLevel parameter specifies how much memory should be allocated - for the internal compression state. memLevel=1 uses minimum memory but is - slow and reduces compression ratio; memLevel=9 uses maximum memory for - optimal speed. The default value is 8. See zconf.h for total memory usage - as a function of windowBits and memLevel. - - The strategy parameter is used to tune the compression algorithm. Use the - value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no - string match), or Z_RLE to limit match distances to one (run-length - encoding). Filtered data consists mostly of small values with a somewhat - random distribution. In this case, the compression algorithm is tuned to - compress them better. The effect of Z_FILTERED is to force more Huffman - coding and less string matching; it is somewhat intermediate between - Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as - fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The - strategy parameter only affects the compression ratio but not the - correctness of the compressed output even if it is not set appropriately. - Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler - decoder for special applications. - - deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid - method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is - incompatible with the version assumed by the caller (ZLIB_VERSION). msg is - set to null if there is no error message. deflateInit2 does not perform any - compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the compression dictionary from the given byte sequence - without producing any compressed output. When using the zlib format, this - function must be called immediately after deflateInit, deflateInit2 or - deflateReset, and before any call of deflate. When doing raw deflate, this - function must be called either before any call of deflate, or immediately - after the completion of a deflate block, i.e. after all input has been - consumed and all output has been delivered when using any of the flush - options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The - compressor and decompressor must use exactly the same dictionary (see - inflateSetDictionary). - - The dictionary should consist of strings (byte sequences) that are likely - to be encountered later in the data to be compressed, with the most commonly - used strings preferably put towards the end of the dictionary. Using a - dictionary is most useful when the data to be compressed is short and can be - predicted with good accuracy; the data can then be compressed better than - with the default empty dictionary. - - Depending on the size of the compression data structures selected by - deflateInit or deflateInit2, a part of the dictionary may in effect be - discarded, for example if the dictionary is larger than the window size - provided in deflateInit or deflateInit2. Thus the strings most likely to be - useful should be put at the end of the dictionary, not at the front. In - addition, the current implementation of deflate will use at most the window - size minus 262 bytes of the provided dictionary. - - Upon return of this function, strm->adler is set to the adler32 value - of the dictionary; the decompressor may later use this value to determine - which dictionary has been used by the compressor. (The adler32 value - applies to the whole dictionary even if only a subset of the dictionary is - actually used by the compressor.) If a raw deflate was requested, then the - adler32 value is not computed and strm->adler is not set. - - deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a - parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is - inconsistent (for example if deflate has already been called for this stream - or if not at a block boundary for raw deflate). deflateSetDictionary does - not perform any compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when several compression strategies will be - tried, for example when there are several ways of pre-processing the input - data with a filter. The streams that will be discarded should then be freed - by calling deflateEnd. Note that deflateCopy duplicates the internal - compression state which can be quite large, so this strategy is slow and can - consume lots of memory. - - deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being Z_NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); -/* - This function is equivalent to deflateEnd followed by deflateInit, - but does not free and reallocate all the internal compression state. The - stream will keep the same compression level and any other attributes that - may have been set by deflateInit2. - - deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL). -*/ - -ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, - int level, - int strategy)); -/* - Dynamically update the compression level and compression strategy. The - interpretation of level and strategy is as in deflateInit2. This can be - used to switch between compression and straight copy of the input data, or - to switch to a different kind of input data requiring a different strategy. - If the compression level is changed, the input available so far is - compressed with the old level (and may be flushed); the new level will take - effect only at the next call of deflate(). - - Before the call of deflateParams, the stream state must be set as for - a call of deflate(), since the currently available input may have to be - compressed and flushed. In particular, strm->avail_out must be non-zero. - - deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source - stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if - strm->avail_out was zero. -*/ - -ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, - int good_length, - int max_lazy, - int nice_length, - int max_chain)); -/* - Fine tune deflate's internal compression parameters. This should only be - used by someone who understands the algorithm used by zlib's deflate for - searching for the best matching string, and even then only by the most - fanatic optimizer trying to squeeze out the last compressed bit for their - specific input data. Read the deflate.c source code for the meaning of the - max_lazy, good_length, nice_length, and max_chain parameters. - - deflateTune() can be called after deflateInit() or deflateInit2(), and - returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. - */ - -ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, - uLong sourceLen)); -/* - deflateBound() returns an upper bound on the compressed size after - deflation of sourceLen bytes. It must be called after deflateInit() or - deflateInit2(), and after deflateSetHeader(), if used. This would be used - to allocate an output buffer for deflation in a single pass, and so would be - called before deflate(). If that first deflate() call is provided the - sourceLen input bytes, an output buffer allocated to the size returned by - deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed - to return Z_STREAM_END. Note that it is possible for the compressed size to - be larger than the value returned by deflateBound() if flush options other - than Z_FINISH or Z_NO_FLUSH are used. -*/ - -ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, - unsigned *pending, - int *bits)); -/* - deflatePending() returns the number of bytes and bits of output that have - been generated, but not yet provided in the available output. The bytes not - provided would be due to the available output space having being consumed. - The number of bits of output not provided are between 0 and 7, where they - await more bits to join them in order to fill out a full byte. If pending - or bits are Z_NULL, then those values are not set. - - deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. - */ - -ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - deflatePrime() inserts bits in the deflate output stream. The intent - is that this function is used to start off the deflate output with the bits - leftover from a previous deflate stream when appending to it. As such, this - function can only be used for raw deflate, and must be used before the first - deflate() call after a deflateInit2() or deflateReset(). bits must be less - than or equal to 16, and that many of the least significant bits of value - will be inserted in the output. - - deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough - room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the - source stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, - gz_headerp head)); -/* - deflateSetHeader() provides gzip header information for when a gzip - stream is requested by deflateInit2(). deflateSetHeader() may be called - after deflateInit2() or deflateReset() and before the first call of - deflate(). The text, time, os, extra field, name, and comment information - in the provided gz_header structure are written to the gzip header (xflag is - ignored -- the extra flags are set according to the compression level). The - caller must assure that, if not Z_NULL, name and comment are terminated with - a zero byte, and that if extra is not Z_NULL, that extra_len bytes are - available there. If hcrc is true, a gzip header crc is included. Note that - the current versions of the command-line version of gzip (up through version - 1.3.x) do not support header crc's, and will report that it is a "multi-part - gzip file" and give up. - - If deflateSetHeader is not used, the default gzip header has text false, - the time set to zero, and os set to 255, with no extra, name, or comment - fields. The gzip header is returned to the default state by deflateReset(). - - deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, - int windowBits)); - - This is another version of inflateInit with an extra parameter. The - fields next_in, avail_in, zalloc, zfree and opaque must be initialized - before by the caller. - - The windowBits parameter is the base two logarithm of the maximum window - size (the size of the history buffer). It should be in the range 8..15 for - this version of the library. The default value is 15 if inflateInit is used - instead. windowBits must be greater than or equal to the windowBits value - provided to deflateInit2() while compressing, or it must be equal to 15 if - deflateInit2() was not used. If a compressed stream with a larger window - size is given as input, inflate() will return with the error code - Z_DATA_ERROR instead of trying to allocate a larger window. - - windowBits can also be zero to request that inflate use the window size in - the zlib header of the compressed stream. - - windowBits can also be -8..-15 for raw inflate. In this case, -windowBits - determines the window size. inflate() will then process raw deflate data, - not looking for a zlib or gzip header, not generating a check value, and not - looking for any check values for comparison at the end of the stream. This - is for use with other formats that use the deflate compressed data format - such as zip. Those formats provide their own check values. If a custom - format is developed using the raw deflate format for compressed data, it is - recommended that a check value such as an adler32 or a crc32 be applied to - the uncompressed data as is done in the zlib, gzip, and zip formats. For - most applications, the zlib format should be used as is. Note that comments - above on the use in deflateInit2() applies to the magnitude of windowBits. - - windowBits can also be greater than 15 for optional gzip decoding. Add - 32 to windowBits to enable zlib and gzip decoding with automatic header - detection, or add 16 to decode only the gzip format (the zlib format will - return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a - crc32 instead of an adler32. - - inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller, or Z_STREAM_ERROR if the parameters are - invalid, such as a null pointer to the structure. msg is set to null if - there is no error message. inflateInit2 does not perform any decompression - apart from possibly reading the zlib header if present: actual decompression - will be done by inflate(). (So next_in and avail_in may be modified, but - next_out and avail_out are unused and unchanged.) The current implementation - of inflateInit2() does not process any header information -- that is - deferred until inflate() is called. -*/ - -ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the decompression dictionary from the given uncompressed byte - sequence. This function must be called immediately after a call of inflate, - if that call returned Z_NEED_DICT. The dictionary chosen by the compressor - can be determined from the adler32 value returned by that call of inflate. - The compressor and decompressor must use exactly the same dictionary (see - deflateSetDictionary). For raw inflate, this function can be called at any - time to set the dictionary. If the provided dictionary is smaller than the - window and there is already data in the window, then the provided dictionary - will amend what's there. The application must insure that the dictionary - that was used for compression is provided. - - inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a - parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is - inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the - expected one (incorrect adler32 value). inflateSetDictionary does not - perform any decompression: this will be done by subsequent calls of - inflate(). -*/ - -ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, - Bytef *dictionary, - uInt *dictLength)); -/* - Returns the sliding dictionary being maintained by inflate. dictLength is - set to the number of bytes in the dictionary, and that many bytes are copied - to dictionary. dictionary must have enough space, where 32768 bytes is - always enough. If inflateGetDictionary() is called with dictionary equal to - Z_NULL, then only the dictionary length is returned, and nothing is copied. - Similary, if dictLength is Z_NULL, then it is not set. - - inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the - stream state is inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); -/* - Skips invalid compressed data until a possible full flush point (see above - for the description of deflate with Z_FULL_FLUSH) can be found, or until all - available input is skipped. No output is provided. - - inflateSync searches for a 00 00 FF FF pattern in the compressed data. - All full flush points have this pattern, but not all occurrences of this - pattern are full flush points. - - inflateSync returns Z_OK if a possible full flush point has been found, - Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point - has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. - In the success case, the application may save the current current value of - total_in which indicates where valid compressed data was found. In the - error case, the application may repeatedly call inflateSync, providing more - input each time, until success or end of the input data. -*/ - -ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when randomly accessing a large stream. The - first pass through the stream can periodically record the inflate state, - allowing restarting inflate at those points when randomly accessing the - stream. - - inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being Z_NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); -/* - This function is equivalent to inflateEnd followed by inflateInit, - but does not free and reallocate all the internal decompression state. The - stream will keep attributes that may have been set by inflateInit2. - - inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL). -*/ - -ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, - int windowBits)); -/* - This function is the same as inflateReset, but it also permits changing - the wrap and window size requests. The windowBits parameter is interpreted - the same as it is for inflateInit2. - - inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL), or if - the windowBits parameter is invalid. -*/ - -ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - This function inserts bits in the inflate input stream. The intent is - that this function is used to start inflating at a bit position in the - middle of a byte. The provided bits will be used before any bytes are used - from next_in. This function should only be used with raw inflate, and - should be used before the first inflate() call after inflateInit2() or - inflateReset(). bits must be less than or equal to 16, and that many of the - least significant bits of value will be inserted in the input. - - If bits is negative, then the input stream bit buffer is emptied. Then - inflatePrime() can be called again to put bits in the buffer. This is used - to clear out bits leftover after feeding inflate a block description prior - to feeding inflate codes. - - inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); -/* - This function returns two values, one in the lower 16 bits of the return - value, and the other in the remaining upper bits, obtained by shifting the - return value down 16 bits. If the upper value is -1 and the lower value is - zero, then inflate() is currently decoding information outside of a block. - If the upper value is -1 and the lower value is non-zero, then inflate is in - the middle of a stored block, with the lower value equaling the number of - bytes from the input remaining to copy. If the upper value is not -1, then - it is the number of bits back from the current bit position in the input of - the code (literal or length/distance pair) currently being processed. In - that case the lower value is the number of bytes already emitted for that - code. - - A code is being processed if inflate is waiting for more input to complete - decoding of the code, or if it has completed decoding but is waiting for - more output space to write the literal or match data. - - inflateMark() is used to mark locations in the input data for random - access, which may be at bit positions, and to note those cases where the - output of a code may span boundaries of random access blocks. The current - location in the input stream can be determined from avail_in and data_type - as noted in the description for the Z_BLOCK flush parameter for inflate. - - inflateMark returns the value noted above or -1 << 16 if the provided - source stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, - gz_headerp head)); -/* - inflateGetHeader() requests that gzip header information be stored in the - provided gz_header structure. inflateGetHeader() may be called after - inflateInit2() or inflateReset(), and before the first call of inflate(). - As inflate() processes the gzip stream, head->done is zero until the header - is completed, at which time head->done is set to one. If a zlib stream is - being decoded, then head->done is set to -1 to indicate that there will be - no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be - used to force inflate() to return immediately after header processing is - complete and before any actual data is decompressed. - - The text, time, xflags, and os fields are filled in with the gzip header - contents. hcrc is set to true if there is a header CRC. (The header CRC - was valid if done is set to one.) If extra is not Z_NULL, then extra_max - contains the maximum number of bytes to write to extra. Once done is true, - extra_len contains the actual extra field length, and extra contains the - extra field, or that field truncated if extra_max is less than extra_len. - If name is not Z_NULL, then up to name_max characters are written there, - terminated with a zero unless the length is greater than name_max. If - comment is not Z_NULL, then up to comm_max characters are written there, - terminated with a zero unless the length is greater than comm_max. When any - of extra, name, or comment are not Z_NULL and the respective field is not - present in the header, then that field is set to Z_NULL to signal its - absence. This allows the use of deflateSetHeader() with the returned - structure to duplicate the header. However if those fields are set to - allocated memory, then the application will need to save those pointers - elsewhere so that they can be eventually freed. - - If inflateGetHeader is not used, then the header information is simply - discarded. The header is always checked for validity, including the header - CRC if present. inflateReset() will reset the process to discard the header - information. The application would need to call inflateGetHeader() again to - retrieve the header from the next gzip stream. - - inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, - unsigned char FAR *window)); - - Initialize the internal stream state for decompression using inflateBack() - calls. The fields zalloc, zfree and opaque in strm must be initialized - before the call. If zalloc and zfree are Z_NULL, then the default library- - derived memory allocation routines are used. windowBits is the base two - logarithm of the window size, in the range 8..15. window is a caller - supplied buffer of that size. Except for special applications where it is - assured that deflate was used with small window sizes, windowBits must be 15 - and a 32K byte window must be supplied to be able to decompress general - deflate streams. - - See inflateBack() for the usage of these routines. - - inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of - the parameters are invalid, Z_MEM_ERROR if the internal state could not be - allocated, or Z_VERSION_ERROR if the version of the library does not match - the version of the header file. -*/ - -typedef unsigned (*in_func) OF((void FAR *, - z_const unsigned char FAR * FAR *)); -typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); - -ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, - in_func in, void FAR *in_desc, - out_func out, void FAR *out_desc)); -/* - inflateBack() does a raw inflate with a single call using a call-back - interface for input and output. This is potentially more efficient than - inflate() for file i/o applications, in that it avoids copying between the - output and the sliding window by simply making the window itself the output - buffer. inflate() can be faster on modern CPUs when used with large - buffers. inflateBack() trusts the application to not change the output - buffer passed by the output function, at least until inflateBack() returns. - - inflateBackInit() must be called first to allocate the internal state - and to initialize the state with the user-provided window buffer. - inflateBack() may then be used multiple times to inflate a complete, raw - deflate stream with each call. inflateBackEnd() is then called to free the - allocated state. - - A raw deflate stream is one with no zlib or gzip header or trailer. - This routine would normally be used in a utility that reads zip or gzip - files and writes out uncompressed files. The utility would decode the - header and process the trailer on its own, hence this routine expects only - the raw deflate stream to decompress. This is different from the normal - behavior of inflate(), which expects either a zlib or gzip header and - trailer around the deflate stream. - - inflateBack() uses two subroutines supplied by the caller that are then - called by inflateBack() for input and output. inflateBack() calls those - routines until it reads a complete deflate stream and writes out all of the - uncompressed data, or until it encounters an error. The function's - parameters and return types are defined above in the in_func and out_func - typedefs. inflateBack() will call in(in_desc, &buf) which should return the - number of bytes of provided input, and a pointer to that input in buf. If - there is no input available, in() must return zero--buf is ignored in that - case--and inflateBack() will return a buffer error. inflateBack() will call - out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() - should return zero on success, or non-zero on failure. If out() returns - non-zero, inflateBack() will return with an error. Neither in() nor out() - are permitted to change the contents of the window provided to - inflateBackInit(), which is also the buffer that out() uses to write from. - The length written by out() will be at most the window size. Any non-zero - amount of input may be provided by in(). - - For convenience, inflateBack() can be provided input on the first call by - setting strm->next_in and strm->avail_in. If that input is exhausted, then - in() will be called. Therefore strm->next_in must be initialized before - calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called - immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in - must also be initialized, and then if strm->avail_in is not zero, input will - initially be taken from strm->next_in[0 .. strm->avail_in - 1]. - - The in_desc and out_desc parameters of inflateBack() is passed as the - first parameter of in() and out() respectively when they are called. These - descriptors can be optionally used to pass any information that the caller- - supplied in() and out() functions need to do their job. - - On return, inflateBack() will set strm->next_in and strm->avail_in to - pass back any unused input that was provided by the last in() call. The - return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR - if in() or out() returned an error, Z_DATA_ERROR if there was a format error - in the deflate stream (in which case strm->msg is set to indicate the nature - of the error), or Z_STREAM_ERROR if the stream was not properly initialized. - In the case of Z_BUF_ERROR, an input or output error can be distinguished - using strm->next_in which will be Z_NULL only if in() returned an error. If - strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning - non-zero. (in() will always be called before out(), so strm->next_in is - assured to be defined if out() returns non-zero.) Note that inflateBack() - cannot return Z_OK. -*/ - -ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); -/* - All memory allocated by inflateBackInit() is freed. - - inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream - state was inconsistent. -*/ - -ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); -/* Return flags indicating compile-time options. - - Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: - 1.0: size of uInt - 3.2: size of uLong - 5.4: size of voidpf (pointer) - 7.6: size of z_off_t - - Compiler, assembler, and debug options: - 8: DEBUG - 9: ASMV or ASMINF -- use ASM code - 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention - 11: 0 (reserved) - - One-time table building (smaller code, but not thread-safe if true): - 12: BUILDFIXED -- build static block decoding tables when needed - 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed - 14,15: 0 (reserved) - - Library content (indicates missing functionality): - 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking - deflate code when not needed) - 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect - and decode gzip streams (to avoid linking crc code) - 18-19: 0 (reserved) - - Operation variations (changes in library functionality): - 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate - 21: FASTEST -- deflate algorithm with only one, lowest compression level - 22,23: 0 (reserved) - - The sprintf variant used by gzprintf (zero is best): - 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format - 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! - 26: 0 = returns value, 1 = void -- 1 means inferred string length returned - - Remainder: - 27-31: 0 (reserved) - */ - -#ifndef Z_SOLO - - /* utility functions */ - -/* - The following utility functions are implemented on top of the basic - stream-oriented functions. To simplify the interface, some default options - are assumed (compression level and memory usage, standard memory allocation - functions). The source code of these utility functions can be modified if - you need special options. -*/ - -ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Compresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total size - of the destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed buffer. - - compress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer. -*/ - -ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen, - int level)); -/* - Compresses the source buffer into the destination buffer. The level - parameter has the same meaning as in deflateInit. sourceLen is the byte - length of the source buffer. Upon entry, destLen is the total size of the - destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed buffer. - - compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_BUF_ERROR if there was not enough room in the output buffer, - Z_STREAM_ERROR if the level parameter is invalid. -*/ - -ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); -/* - compressBound() returns an upper bound on the compressed size after - compress() or compress2() on sourceLen bytes. It would be used before a - compress() or compress2() call to allocate the destination buffer. -*/ - -ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total size - of the destination buffer, which must be large enough to hold the entire - uncompressed data. (The size of the uncompressed data must have been saved - previously by the compressor and transmitted to the decompressor by some - mechanism outside the scope of this compression library.) Upon exit, destLen - is the actual size of the uncompressed buffer. - - uncompress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In - the case where there is not enough room, uncompress() will fill the output - buffer with the uncompressed data up to that point. -*/ - - /* gzip file access functions */ - -/* - This library supports reading and writing files in gzip (.gz) format with - an interface similar to that of stdio, using the functions that start with - "gz". The gzip format is different from the zlib format. gzip is a gzip - wrapper, documented in RFC 1952, wrapped around a deflate stream. -*/ - -typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ - -/* -ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); - - Opens a gzip (.gz) file for reading or writing. The mode parameter is as - in fopen ("rb" or "wb") but can also include a compression level ("wb9") or - a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only - compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' - for fixed code compression as in "wb9F". (See the description of - deflateInit2 for more information about the strategy parameter.) 'T' will - request transparent writing or appending with no compression and not using - the gzip format. - - "a" can be used instead of "w" to request that the gzip stream that will - be written be appended to the file. "+" will result in an error, since - reading and writing to the same gzip file is not supported. The addition of - "x" when writing will create the file exclusively, which fails if the file - already exists. On systems that support it, the addition of "e" when - reading or writing will set the flag to close the file on an execve() call. - - These functions, as well as gzip, will read and decode a sequence of gzip - streams in a file. The append function of gzopen() can be used to create - such a file. (Also see gzflush() for another way to do this.) When - appending, gzopen does not test whether the file begins with a gzip stream, - nor does it look for the end of the gzip streams to begin appending. gzopen - will simply append a gzip stream to the existing file. - - gzopen can be used to read a file which is not in gzip format; in this - case gzread will directly read from the file without decompression. When - reading, this will be detected automatically by looking for the magic two- - byte gzip header. - - gzopen returns NULL if the file could not be opened, if there was - insufficient memory to allocate the gzFile state, or if an invalid mode was - specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). - errno can be checked to determine if the reason gzopen failed was that the - file could not be opened. -*/ - -ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); -/* - gzdopen associates a gzFile with the file descriptor fd. File descriptors - are obtained from calls like open, dup, creat, pipe or fileno (if the file - has been previously opened with fopen). The mode parameter is as in gzopen. - - The next call of gzclose on the returned gzFile will also close the file - descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor - fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, - mode);. The duplicated descriptor should be saved to avoid a leak, since - gzdopen does not close fd if it fails. If you are using fileno() to get the - file descriptor from a FILE *, then you will have to use dup() to avoid - double-close()ing the file descriptor. Both gzclose() and fclose() will - close the associated file descriptor, so they need to have different file - descriptors. - - gzdopen returns NULL if there was insufficient memory to allocate the - gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not - provided, or '+' was provided), or if fd is -1. The file descriptor is not - used until the next gz* read, write, seek, or close operation, so gzdopen - will not detect if fd is invalid (unless fd is -1). -*/ - -ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); -/* - Set the internal buffer size used by this library's functions. The - default buffer size is 8192 bytes. This function must be called after - gzopen() or gzdopen(), and before any other calls that read or write the - file. The buffer memory allocation is always deferred to the first read or - write. Two buffers are allocated, either both of the specified size when - writing, or one of the specified size and the other twice that size when - reading. A larger buffer size of, for example, 64K or 128K bytes will - noticeably increase the speed of decompression (reading). - - The new buffer size also affects the maximum length for gzprintf(). - - gzbuffer() returns 0 on success, or -1 on failure, such as being called - too late. -*/ - -ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); -/* - Dynamically update the compression level or strategy. See the description - of deflateInit2 for the meaning of these parameters. - - gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not - opened for writing. -*/ - -ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); -/* - Reads the given number of uncompressed bytes from the compressed file. If - the input file is not in gzip format, gzread copies the given number of - bytes into the buffer directly from the file. - - After reaching the end of a gzip stream in the input, gzread will continue - to read, looking for another gzip stream. Any number of gzip streams may be - concatenated in the input file, and will all be decompressed by gzread(). - If something other than a gzip stream is encountered after a gzip stream, - that remaining trailing garbage is ignored (and no error is returned). - - gzread can be used to read a gzip file that is being concurrently written. - Upon reaching the end of the input, gzread will return with the available - data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then - gzclearerr can be used to clear the end of file indicator in order to permit - gzread to be tried again. Z_OK indicates that a gzip stream was completed - on the last gzread. Z_BUF_ERROR indicates that the input file ended in the - middle of a gzip stream. Note that gzread does not return -1 in the event - of an incomplete gzip stream. This error is deferred until gzclose(), which - will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip - stream. Alternatively, gzerror can be used before gzclose to detect this - case. - - gzread returns the number of uncompressed bytes actually read, less than - len for end of file, or -1 for error. -*/ - -ZEXTERN int ZEXPORT gzwrite OF((gzFile file, - voidpc buf, unsigned len)); -/* - Writes the given number of uncompressed bytes into the compressed file. - gzwrite returns the number of uncompressed bytes written or 0 in case of - error. -*/ - -ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); -/* - Converts, formats, and writes the arguments to the compressed file under - control of the format string, as in fprintf. gzprintf returns the number of - uncompressed bytes actually written, or 0 in case of error. The number of - uncompressed bytes written is limited to 8191, or one less than the buffer - size given to gzbuffer(). The caller should assure that this limit is not - exceeded. If it is exceeded, then gzprintf() will return an error (0) with - nothing written. In this case, there may also be a buffer overflow with - unpredictable consequences, which is possible only if zlib was compiled with - the insecure functions sprintf() or vsprintf() because the secure snprintf() - or vsnprintf() functions were not available. This can be determined using - zlibCompileFlags(). -*/ - -ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); -/* - Writes the given null-terminated string to the compressed file, excluding - the terminating null character. - - gzputs returns the number of characters written, or -1 in case of error. -*/ - -ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); -/* - Reads bytes from the compressed file until len-1 characters are read, or a - newline character is read and transferred to buf, or an end-of-file - condition is encountered. If any characters are read or if len == 1, the - string is terminated with a null character. If no characters are read due - to an end-of-file or len < 1, then the buffer is left untouched. - - gzgets returns buf which is a null-terminated string, or it returns NULL - for end-of-file or in case of error. If there was an error, the contents at - buf are indeterminate. -*/ - -ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); -/* - Writes c, converted to an unsigned char, into the compressed file. gzputc - returns the value that was written, or -1 in case of error. -*/ - -ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); -/* - Reads one byte from the compressed file. gzgetc returns this byte or -1 - in case of end of file or error. This is implemented as a macro for speed. - As such, it does not do all of the checking the other functions do. I.e. - it does not check to see if file is NULL, nor whether the structure file - points to has been clobbered or not. -*/ - -ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); -/* - Push one character back onto the stream to be read as the first character - on the next read. At least one character of push-back is allowed. - gzungetc() returns the character pushed, or -1 on failure. gzungetc() will - fail if c is -1, and may fail if a character has been pushed but not read - yet. If gzungetc is used immediately after gzopen or gzdopen, at least the - output buffer size of pushed characters is allowed. (See gzbuffer above.) - The pushed character will be discarded if the stream is repositioned with - gzseek() or gzrewind(). -*/ - -ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); -/* - Flushes all pending output into the compressed file. The parameter flush - is as in the deflate() function. The return value is the zlib error number - (see function gzerror below). gzflush is only permitted when writing. - - If the flush parameter is Z_FINISH, the remaining data is written and the - gzip stream is completed in the output. If gzwrite() is called again, a new - gzip stream will be started in the output. gzread() is able to read such - concatented gzip streams. - - gzflush should be called only when strictly necessary because it will - degrade compression if called too often. -*/ - -/* -ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, - z_off_t offset, int whence)); - - Sets the starting position for the next gzread or gzwrite on the given - compressed file. The offset represents a number of bytes in the - uncompressed data stream. The whence parameter is defined as in lseek(2); - the value SEEK_END is not supported. - - If the file is opened for reading, this function is emulated but can be - extremely slow. If the file is opened for writing, only forward seeks are - supported; gzseek then compresses a sequence of zeroes up to the new - starting position. - - gzseek returns the resulting offset location as measured in bytes from - the beginning of the uncompressed stream, or -1 in case of error, in - particular if the file is opened for writing and the new starting position - would be before the current position. -*/ - -ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); -/* - Rewinds the given file. This function is supported only for reading. - - gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) -*/ - -/* -ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); - - Returns the starting position for the next gzread or gzwrite on the given - compressed file. This position represents a number of bytes in the - uncompressed data stream, and is zero when starting, even if appending or - reading a gzip stream from the middle of a file using gzdopen(). - - gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) -*/ - -/* -ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); - - Returns the current offset in the file being read or written. This offset - includes the count of bytes that precede the gzip stream, for example when - appending or when using gzdopen() for reading. When reading, the offset - does not include as yet unused buffered input. This information can be used - for a progress indicator. On error, gzoffset() returns -1. -*/ - -ZEXTERN int ZEXPORT gzeof OF((gzFile file)); -/* - Returns true (1) if the end-of-file indicator has been set while reading, - false (0) otherwise. Note that the end-of-file indicator is set only if the - read tried to go past the end of the input, but came up short. Therefore, - just like feof(), gzeof() may return false even if there is no more data to - read, in the event that the last read request was for the exact number of - bytes remaining in the input file. This will happen if the input file size - is an exact multiple of the buffer size. - - If gzeof() returns true, then the read functions will return no more data, - unless the end-of-file indicator is reset by gzclearerr() and the input file - has grown since the previous end of file was detected. -*/ - -ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); -/* - Returns true (1) if file is being copied directly while reading, or false - (0) if file is a gzip stream being decompressed. - - If the input file is empty, gzdirect() will return true, since the input - does not contain a gzip stream. - - If gzdirect() is used immediately after gzopen() or gzdopen() it will - cause buffers to be allocated to allow reading the file to determine if it - is a gzip file. Therefore if gzbuffer() is used, it should be called before - gzdirect(). - - When writing, gzdirect() returns true (1) if transparent writing was - requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: - gzdirect() is not needed when writing. Transparent writing must be - explicitly requested, so the application already knows the answer. When - linking statically, using gzdirect() will include all of the zlib code for - gzip file reading and decompression, which may not be desired.) -*/ - -ZEXTERN int ZEXPORT gzclose OF((gzFile file)); -/* - Flushes all pending output if necessary, closes the compressed file and - deallocates the (de)compression state. Note that once file is closed, you - cannot call gzerror with file, since its structures have been deallocated. - gzclose must not be called more than once on the same file, just as free - must not be called more than once on the same allocation. - - gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a - file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the - last read ended in the middle of a gzip stream, or Z_OK on success. -*/ - -ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); -ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); -/* - Same as gzclose(), but gzclose_r() is only for use when reading, and - gzclose_w() is only for use when writing or appending. The advantage to - using these instead of gzclose() is that they avoid linking in zlib - compression or decompression code that is not used when only reading or only - writing respectively. If gzclose() is used, then both compression and - decompression code will be included the application when linking to a static - zlib library. -*/ - -ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); -/* - Returns the error message for the last error which occurred on the given - compressed file. errnum is set to zlib error number. If an error occurred - in the file system and not in the compression library, errnum is set to - Z_ERRNO and the application may consult errno to get the exact error code. - - The application must not modify the returned string. Future calls to - this function may invalidate the previously returned string. If file is - closed, then the string previously returned by gzerror will no longer be - available. - - gzerror() should be used to distinguish errors from end-of-file for those - functions above that do not distinguish those cases in their return values. -*/ - -ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); -/* - Clears the error and end-of-file flags for file. This is analogous to the - clearerr() function in stdio. This is useful for continuing to read a gzip - file that is being written concurrently. -*/ - -#endif /* !Z_SOLO */ - - /* checksum functions */ - -/* - These functions are not related to compression but are exported - anyway because they might be useful in applications using the compression - library. -*/ - -ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); -/* - Update a running Adler-32 checksum with the bytes buf[0..len-1] and - return the updated checksum. If buf is Z_NULL, this function returns the - required initial value for the checksum. - - An Adler-32 checksum is almost as reliable as a CRC32 but can be computed - much faster. - - Usage example: - - uLong adler = adler32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - adler = adler32(adler, buffer, length); - } - if (adler != original_adler) error(); -*/ - -/* -ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, - z_off_t len2)); - - Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 - and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for - each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of - seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note - that the z_off_t type (like off_t) is a signed integer. If len2 is - negative, the result has no meaning or utility. -*/ - -ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); -/* - Update a running CRC-32 with the bytes buf[0..len-1] and return the - updated CRC-32. If buf is Z_NULL, this function returns the required - initial value for the crc. Pre- and post-conditioning (one's complement) is - performed within this function so it shouldn't be done by the application. - - Usage example: - - uLong crc = crc32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - crc = crc32(crc, buffer, length); - } - if (crc != original_crc) error(); -*/ - -/* -ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); - - Combine two CRC-32 check values into one. For two sequences of bytes, - seq1 and seq2 with lengths len1 and len2, CRC-32 check values were - calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 - check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. -*/ - - - /* various hacks, don't look :) */ - -/* deflateInit and inflateInit are macros to allow checking the zlib version - * and the compiler's view of z_stream: - */ -ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, - int windowBits, int memLevel, - int strategy, const char *version, - int stream_size)); -ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, - unsigned char FAR *window, - const char *version, - int stream_size)); -#define deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) -#define inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) -#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ - deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) -#define inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ - (int)sizeof(z_stream)) -#define inflateBackInit(strm, windowBits, window) \ - inflateBackInit_((strm), (windowBits), (window), \ - ZLIB_VERSION, (int)sizeof(z_stream)) - -#ifndef Z_SOLO - -/* gzgetc() macro and its supporting function and exposed data structure. Note - * that the real internal state is much larger than the exposed structure. - * This abbreviated structure exposes just enough for the gzgetc() macro. The - * user should not mess with these exposed elements, since their names or - * behavior could change in the future, perhaps even capriciously. They can - * only be used by the gzgetc() macro. You have been warned. - */ -struct gzFile_s { - unsigned have; - unsigned char *next; - z_off64_t pos; -}; -ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ -#ifdef Z_PREFIX_SET -# undef z_gzgetc -# define z_gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) -#else -# define gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) -#endif - -/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or - * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if - * both are true, the application gets the *64 functions, and the regular - * functions are changed to 64 bits) -- in case these are set on systems - * without large file support, _LFS64_LARGEFILE must also be true - */ -#ifdef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); - ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); -#endif - -#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) -# ifdef Z_PREFIX_SET -# define z_gzopen z_gzopen64 -# define z_gzseek z_gzseek64 -# define z_gztell z_gztell64 -# define z_gzoffset z_gzoffset64 -# define z_adler32_combine z_adler32_combine64 -# define z_crc32_combine z_crc32_combine64 -# else -# define gzopen gzopen64 -# define gzseek gzseek64 -# define gztell gztell64 -# define gzoffset gzoffset64 -# define adler32_combine adler32_combine64 -# define crc32_combine crc32_combine64 -# endif -# ifndef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); - ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); -# endif -#else - ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); - ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); - ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); - ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); -#endif - -#else /* Z_SOLO */ - - ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); - -#endif /* !Z_SOLO */ - -/* hack for buggy compilers */ -#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) - struct internal_state {int dummy;}; -#endif - -/* undocumented functions */ -ZEXTERN const char * ZEXPORT zError OF((int)); -ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); -ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); -ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); -ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); -ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); -#if defined(_WIN32) && !defined(Z_SOLO) -ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, - const char *mode)); -#endif -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, - const char *format, - va_list va)); -# endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* ZLIB_H */ diff --git a/io2d/src/3rd-party/zlib/zlib.map b/io2d/src/3rd-party/zlib/zlib.map deleted file mode 100644 index 55c6647..0000000 --- a/io2d/src/3rd-party/zlib/zlib.map +++ /dev/null @@ -1,83 +0,0 @@ -ZLIB_1.2.0 { - global: - compressBound; - deflateBound; - inflateBack; - inflateBackEnd; - inflateBackInit_; - inflateCopy; - local: - deflate_copyright; - inflate_copyright; - inflate_fast; - inflate_table; - zcalloc; - zcfree; - z_errmsg; - gz_error; - gz_intmax; - _*; -}; - -ZLIB_1.2.0.2 { - gzclearerr; - gzungetc; - zlibCompileFlags; -} ZLIB_1.2.0; - -ZLIB_1.2.0.8 { - deflatePrime; -} ZLIB_1.2.0.2; - -ZLIB_1.2.2 { - adler32_combine; - crc32_combine; - deflateSetHeader; - inflateGetHeader; -} ZLIB_1.2.0.8; - -ZLIB_1.2.2.3 { - deflateTune; - gzdirect; -} ZLIB_1.2.2; - -ZLIB_1.2.2.4 { - inflatePrime; -} ZLIB_1.2.2.3; - -ZLIB_1.2.3.3 { - adler32_combine64; - crc32_combine64; - gzopen64; - gzseek64; - gztell64; - inflateUndermine; -} ZLIB_1.2.2.4; - -ZLIB_1.2.3.4 { - inflateReset2; - inflateMark; -} ZLIB_1.2.3.3; - -ZLIB_1.2.3.5 { - gzbuffer; - gzoffset; - gzoffset64; - gzclose_r; - gzclose_w; -} ZLIB_1.2.3.4; - -ZLIB_1.2.5.1 { - deflatePending; -} ZLIB_1.2.3.5; - -ZLIB_1.2.5.2 { - deflateResetKeep; - gzgetc_; - inflateResetKeep; -} ZLIB_1.2.5.1; - -ZLIB_1.2.7.1 { - inflateGetDictionary; - gzvprintf; -} ZLIB_1.2.5.2; diff --git a/io2d/src/3rd-party/zlib/zlib.pc.cmakein b/io2d/src/3rd-party/zlib/zlib.pc.cmakein deleted file mode 100644 index a5e6429..0000000 --- a/io2d/src/3rd-party/zlib/zlib.pc.cmakein +++ /dev/null @@ -1,13 +0,0 @@ -prefix=@CMAKE_INSTALL_PREFIX@ -exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@INSTALL_LIB_DIR@ -sharedlibdir=@INSTALL_LIB_DIR@ -includedir=@INSTALL_INC_DIR@ - -Name: zlib -Description: zlib compression library -Version: @VERSION@ - -Requires: -Libs: -L${libdir} -L${sharedlibdir} -lz -Cflags: -I${includedir} diff --git a/io2d/src/3rd-party/zlib/zlib.pc.in b/io2d/src/3rd-party/zlib/zlib.pc.in deleted file mode 100644 index 7e5acf9..0000000 --- a/io2d/src/3rd-party/zlib/zlib.pc.in +++ /dev/null @@ -1,13 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -sharedlibdir=@sharedlibdir@ -includedir=@includedir@ - -Name: zlib -Description: zlib compression library -Version: @VERSION@ - -Requires: -Libs: -L${libdir} -L${sharedlibdir} -lz -Cflags: -I${includedir} diff --git a/io2d/src/3rd-party/zlib/zlib2ansi b/io2d/src/3rd-party/zlib/zlib2ansi deleted file mode 100644 index 15e3e16..0000000 --- a/io2d/src/3rd-party/zlib/zlib2ansi +++ /dev/null @@ -1,152 +0,0 @@ -#!/usr/bin/perl - -# Transform K&R C function definitions into ANSI equivalent. -# -# Author: Paul Marquess -# Version: 1.0 -# Date: 3 October 2006 - -# TODO -# -# Asumes no function pointer parameters. unless they are typedefed. -# Assumes no literal strings that look like function definitions -# Assumes functions start at the beginning of a line - -use strict; -use warnings; - -local $/; -$_ = <>; - -my $sp = qr{ \s* (?: /\* .*? \*/ )? \s* }x; # assume no nested comments - -my $d1 = qr{ $sp (?: [\w\*\s]+ $sp)* $sp \w+ $sp [\[\]\s]* $sp }x ; -my $decl = qr{ $sp (?: \w+ $sp )+ $d1 }xo ; -my $dList = qr{ $sp $decl (?: $sp , $d1 )* $sp ; $sp }xo ; - - -while (s/^ - ( # Start $1 - ( # Start $2 - .*? # Minimal eat content - ( ^ \w [\w\s\*]+ ) # $3 -- function name - \s* # optional whitespace - ) # $2 - Matched up to before parameter list - - \( \s* # Literal "(" + optional whitespace - ( [^\)]+ ) # $4 - one or more anythings except ")" - \s* \) # optional whitespace surrounding a Literal ")" - - ( (?: $dList )+ ) # $5 - - $sp ^ { # literal "{" at start of line - ) # Remember to $1 - //xsom - ) -{ - my $all = $1 ; - my $prefix = $2; - my $param_list = $4 ; - my $params = $5; - - StripComments($params); - StripComments($param_list); - $param_list =~ s/^\s+//; - $param_list =~ s/\s+$//; - - my $i = 0 ; - my %pList = map { $_ => $i++ } - split /\s*,\s*/, $param_list; - my $pMatch = '(\b' . join('|', keys %pList) . '\b)\W*$' ; - - my @params = split /\s*;\s*/, $params; - my @outParams = (); - foreach my $p (@params) - { - if ($p =~ /,/) - { - my @bits = split /\s*,\s*/, $p; - my $first = shift @bits; - $first =~ s/^\s*//; - push @outParams, $first; - $first =~ /^(\w+\s*)/; - my $type = $1 ; - push @outParams, map { $type . $_ } @bits; - } - else - { - $p =~ s/^\s+//; - push @outParams, $p; - } - } - - - my %tmp = map { /$pMatch/; $_ => $pList{$1} } - @outParams ; - - @outParams = map { " $_" } - sort { $tmp{$a} <=> $tmp{$b} } - @outParams ; - - print $prefix ; - print "(\n" . join(",\n", @outParams) . ")\n"; - print "{" ; - -} - -# Output any trailing code. -print ; -exit 0; - - -sub StripComments -{ - - no warnings; - - # Strip C & C++ coments - # From the perlfaq - $_[0] =~ - - s{ - /\* ## Start of /* ... */ comment - [^*]*\*+ ## Non-* followed by 1-or-more *'s - ( - [^/*][^*]*\*+ - )* ## 0-or-more things which don't start with / - ## but do end with '*' - / ## End of /* ... */ comment - - | ## OR C++ Comment - // ## Start of C++ comment // - [^\n]* ## followed by 0-or-more non end of line characters - - | ## OR various things which aren't comments: - - ( - " ## Start of " ... " string - ( - \\. ## Escaped char - | ## OR - [^"\\] ## Non "\ - )* - " ## End of " ... " string - - | ## OR - - ' ## Start of ' ... ' string - ( - \\. ## Escaped char - | ## OR - [^'\\] ## Non '\ - )* - ' ## End of ' ... ' string - - | ## OR - - . ## Anything other char - [^/"'\\]* ## Chars which doesn't start a comment, string or escape - ) - }{$2}gxs; - -} diff --git a/io2d/src/3rd-party/zlib/zutil.c b/io2d/src/3rd-party/zlib/zutil.c deleted file mode 100644 index 23d2ebe..0000000 --- a/io2d/src/3rd-party/zlib/zutil.c +++ /dev/null @@ -1,324 +0,0 @@ -/* zutil.c -- target dependent utility functions for the compression library - * Copyright (C) 1995-2005, 2010, 2011, 2012 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#include "zutil.h" -#ifndef Z_SOLO -# include "gzguts.h" -#endif - -#ifndef NO_DUMMY_DECL -struct internal_state {int dummy;}; /* for buggy compilers */ -#endif - -z_const char * const z_errmsg[10] = { -"need dictionary", /* Z_NEED_DICT 2 */ -"stream end", /* Z_STREAM_END 1 */ -"", /* Z_OK 0 */ -"file error", /* Z_ERRNO (-1) */ -"stream error", /* Z_STREAM_ERROR (-2) */ -"data error", /* Z_DATA_ERROR (-3) */ -"insufficient memory", /* Z_MEM_ERROR (-4) */ -"buffer error", /* Z_BUF_ERROR (-5) */ -"incompatible version",/* Z_VERSION_ERROR (-6) */ -""}; - - -const char * ZEXPORT zlibVersion() -{ - return ZLIB_VERSION; -} - -uLong ZEXPORT zlibCompileFlags() -{ - uLong flags; - - flags = 0; - switch ((int)(sizeof(uInt))) { - case 2: break; - case 4: flags += 1; break; - case 8: flags += 2; break; - default: flags += 3; - } - switch ((int)(sizeof(uLong))) { - case 2: break; - case 4: flags += 1 << 2; break; - case 8: flags += 2 << 2; break; - default: flags += 3 << 2; - } - switch ((int)(sizeof(voidpf))) { - case 2: break; - case 4: flags += 1 << 4; break; - case 8: flags += 2 << 4; break; - default: flags += 3 << 4; - } - switch ((int)(sizeof(z_off_t))) { - case 2: break; - case 4: flags += 1 << 6; break; - case 8: flags += 2 << 6; break; - default: flags += 3 << 6; - } -#ifdef DEBUG - flags += 1 << 8; -#endif -#if defined(ASMV) || defined(ASMINF) - flags += 1 << 9; -#endif -#ifdef ZLIB_WINAPI - flags += 1 << 10; -#endif -#ifdef BUILDFIXED - flags += 1 << 12; -#endif -#ifdef DYNAMIC_CRC_TABLE - flags += 1 << 13; -#endif -#ifdef NO_GZCOMPRESS - flags += 1L << 16; -#endif -#ifdef NO_GZIP - flags += 1L << 17; -#endif -#ifdef PKZIP_BUG_WORKAROUND - flags += 1L << 20; -#endif -#ifdef FASTEST - flags += 1L << 21; -#endif -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifdef NO_vsnprintf - flags += 1L << 25; -# ifdef HAS_vsprintf_void - flags += 1L << 26; -# endif -# else -# ifdef HAS_vsnprintf_void - flags += 1L << 26; -# endif -# endif -#else - flags += 1L << 24; -# ifdef NO_snprintf - flags += 1L << 25; -# ifdef HAS_sprintf_void - flags += 1L << 26; -# endif -# else -# ifdef HAS_snprintf_void - flags += 1L << 26; -# endif -# endif -#endif - return flags; -} - -#ifdef DEBUG - -# ifndef verbose -# define verbose 0 -# endif -int ZLIB_INTERNAL z_verbose = verbose; - -void ZLIB_INTERNAL z_error (m) - char *m; -{ - fprintf(stderr, "%s\n", m); - exit(1); -} -#endif - -/* exported to allow conversion of error code to string for compress() and - * uncompress() - */ -const char * ZEXPORT zError(err) - int err; -{ - return ERR_MSG(err); -} - -#if defined(_WIN32_WCE) - /* The Microsoft C Run-Time Library for Windows CE doesn't have - * errno. We define it as a global variable to simplify porting. - * Its value is always 0 and should not be used. - */ - int errno = 0; -#endif - -#ifndef HAVE_MEMCPY - -void ZLIB_INTERNAL zmemcpy(dest, source, len) - Bytef* dest; - const Bytef* source; - uInt len; -{ - if (len == 0) return; - do { - *dest++ = *source++; /* ??? to be unrolled */ - } while (--len != 0); -} - -int ZLIB_INTERNAL zmemcmp(s1, s2, len) - const Bytef* s1; - const Bytef* s2; - uInt len; -{ - uInt j; - - for (j = 0; j < len; j++) { - if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1; - } - return 0; -} - -void ZLIB_INTERNAL zmemzero(dest, len) - Bytef* dest; - uInt len; -{ - if (len == 0) return; - do { - *dest++ = 0; /* ??? to be unrolled */ - } while (--len != 0); -} -#endif - -#ifndef Z_SOLO - -#ifdef SYS16BIT - -#ifdef __TURBOC__ -/* Turbo C in 16-bit mode */ - -# define MY_ZCALLOC - -/* Turbo C malloc() does not allow dynamic allocation of 64K bytes - * and farmalloc(64K) returns a pointer with an offset of 8, so we - * must fix the pointer. Warning: the pointer must be put back to its - * original form in order to free it, use zcfree(). - */ - -#define MAX_PTR 10 -/* 10*64K = 640K */ - -local int next_ptr = 0; - -typedef struct ptr_table_s { - voidpf org_ptr; - voidpf new_ptr; -} ptr_table; - -local ptr_table table[MAX_PTR]; -/* This table is used to remember the original form of pointers - * to large buffers (64K). Such pointers are normalized with a zero offset. - * Since MSDOS is not a preemptive multitasking OS, this table is not - * protected from concurrent access. This hack doesn't work anyway on - * a protected system like OS/2. Use Microsoft C instead. - */ - -voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size) -{ - voidpf buf = opaque; /* just to make some compilers happy */ - ulg bsize = (ulg)items*size; - - /* If we allocate less than 65520 bytes, we assume that farmalloc - * will return a usable pointer which doesn't have to be normalized. - */ - if (bsize < 65520L) { - buf = farmalloc(bsize); - if (*(ush*)&buf != 0) return buf; - } else { - buf = farmalloc(bsize + 16L); - } - if (buf == NULL || next_ptr >= MAX_PTR) return NULL; - table[next_ptr].org_ptr = buf; - - /* Normalize the pointer to seg:0 */ - *((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4; - *(ush*)&buf = 0; - table[next_ptr++].new_ptr = buf; - return buf; -} - -void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) -{ - int n; - if (*(ush*)&ptr != 0) { /* object < 64K */ - farfree(ptr); - return; - } - /* Find the original pointer */ - for (n = 0; n < next_ptr; n++) { - if (ptr != table[n].new_ptr) continue; - - farfree(table[n].org_ptr); - while (++n < next_ptr) { - table[n-1] = table[n]; - } - next_ptr--; - return; - } - ptr = opaque; /* just to make some compilers happy */ - Assert(0, "zcfree: ptr not found"); -} - -#endif /* __TURBOC__ */ - - -#ifdef M_I86 -/* Microsoft C in 16-bit mode */ - -# define MY_ZCALLOC - -#if (!defined(_MSC_VER) || (_MSC_VER <= 600)) -# define _halloc halloc -# define _hfree hfree -#endif - -voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size) -{ - if (opaque) opaque = 0; /* to make compiler happy */ - return _halloc((long)items, size); -} - -void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) -{ - if (opaque) opaque = 0; /* to make compiler happy */ - _hfree(ptr); -} - -#endif /* M_I86 */ - -#endif /* SYS16BIT */ - - -#ifndef MY_ZCALLOC /* Any system without a special alloc function */ - -#ifndef STDC -extern voidp malloc OF((uInt size)); -extern voidp calloc OF((uInt items, uInt size)); -extern void free OF((voidpf ptr)); -#endif - -voidpf ZLIB_INTERNAL zcalloc (opaque, items, size) - voidpf opaque; - unsigned items; - unsigned size; -{ - if (opaque) items += size - size; /* make compiler happy */ - return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) : - (voidpf)calloc(items, size); -} - -void ZLIB_INTERNAL zcfree (opaque, ptr) - voidpf opaque; - voidpf ptr; -{ - free(ptr); - if (opaque) return; /* make compiler happy */ -} - -#endif /* MY_ZCALLOC */ - -#endif /* !Z_SOLO */ diff --git a/io2d/src/3rd-party/zlib/zutil.h b/io2d/src/3rd-party/zlib/zutil.h deleted file mode 100644 index 24ab06b..0000000 --- a/io2d/src/3rd-party/zlib/zutil.h +++ /dev/null @@ -1,253 +0,0 @@ -/* zutil.h -- internal interface and configuration of the compression library - * Copyright (C) 1995-2013 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* @(#) $Id$ */ - -#ifndef ZUTIL_H -#define ZUTIL_H - -#ifdef HAVE_HIDDEN -# define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) -#else -# define ZLIB_INTERNAL -#endif - -#include "zlib.h" - -#if defined(STDC) && !defined(Z_SOLO) -# if !(defined(_WIN32_WCE) && defined(_MSC_VER)) -# include -# endif -# include -# include -#endif - -#ifdef Z_SOLO - typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */ -#endif - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - -typedef unsigned char uch; -typedef uch FAR uchf; -typedef unsigned short ush; -typedef ush FAR ushf; -typedef unsigned long ulg; - -extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ -/* (size given to avoid silly warnings with Visual C++) */ - -#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] - -#define ERR_RETURN(strm,err) \ - return (strm->msg = ERR_MSG(err), (err)) -/* To be used only when the state is known to be valid */ - - /* common constants */ - -#ifndef DEF_WBITS -# define DEF_WBITS MAX_WBITS -#endif -/* default windowBits for decompression. MAX_WBITS is for compression only */ - -#if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -#else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -#endif -/* default memLevel */ - -#define STORED_BLOCK 0 -#define STATIC_TREES 1 -#define DYN_TREES 2 -/* The three kinds of block type */ - -#define MIN_MATCH 3 -#define MAX_MATCH 258 -/* The minimum and maximum match lengths */ - -#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ - - /* target dependencies */ - -#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32)) -# define OS_CODE 0x00 -# ifndef Z_SOLO -# if defined(__TURBOC__) || defined(__BORLANDC__) -# if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) - /* Allow compilation with ANSI keywords only enabled */ - void _Cdecl farfree( void *block ); - void *_Cdecl farmalloc( unsigned long nbytes ); -# else -# include -# endif -# else /* MSC or DJGPP */ -# include -# endif -# endif -#endif - -#ifdef AMIGA -# define OS_CODE 0x01 -#endif - -#if defined(VAXC) || defined(VMS) -# define OS_CODE 0x02 -# define F_OPEN(name, mode) \ - fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") -#endif - -#if defined(ATARI) || defined(atarist) -# define OS_CODE 0x05 -#endif - -#ifdef OS2 -# define OS_CODE 0x06 -# if defined(M_I86) && !defined(Z_SOLO) -# include -# endif -#endif - -#if defined(MACOS) || defined(TARGET_OS_MAC) -# define OS_CODE 0x07 -# ifndef Z_SOLO -# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os -# include /* for fdopen */ -# else -# ifndef fdopen -# define fdopen(fd,mode) NULL /* No fdopen() */ -# endif -# endif -# endif -#endif - -#ifdef TOPS20 -# define OS_CODE 0x0a -#endif - -#ifdef WIN32 -# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */ -# define OS_CODE 0x0b -# endif -#endif - -#ifdef __50SERIES /* Prime/PRIMOS */ -# define OS_CODE 0x0f -#endif - -#if defined(_BEOS_) || defined(RISCOS) -# define fdopen(fd,mode) NULL /* No fdopen() */ -#endif - -#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX -# if defined(_WIN32_WCE) -# define fdopen(fd,mode) NULL /* No fdopen() */ -# ifndef _PTRDIFF_T_DEFINED - typedef int ptrdiff_t; -# define _PTRDIFF_T_DEFINED -# endif -# else -# define fdopen(fd,type) _fdopen(fd,type) -# endif -#endif - -#if defined(__BORLANDC__) && !defined(MSDOS) - #pragma warn -8004 - #pragma warn -8008 - #pragma warn -8066 -#endif - -/* provide prototypes for these when building zlib without LFS */ -#if !defined(_WIN32) && \ - (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); -#endif - - /* common defaults */ - -#ifndef OS_CODE -# define OS_CODE 0x03 /* assume Unix */ -#endif - -#ifndef F_OPEN -# define F_OPEN(name, mode) fopen((name), (mode)) -#endif - - /* functions */ - -#if defined(pyr) || defined(Z_SOLO) -# define NO_MEMCPY -#endif -#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__) - /* Use our own functions for small and medium model with MSC <= 5.0. - * You may have to use the same strategy for Borland C (untested). - * The __SC__ check is for Symantec. - */ -# define NO_MEMCPY -#endif -#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) -# define HAVE_MEMCPY -#endif -#ifdef HAVE_MEMCPY -# ifdef SMALL_MEDIUM /* MSDOS small or medium model */ -# define zmemcpy _fmemcpy -# define zmemcmp _fmemcmp -# define zmemzero(dest, len) _fmemset(dest, 0, len) -# else -# define zmemcpy memcpy -# define zmemcmp memcmp -# define zmemzero(dest, len) memset(dest, 0, len) -# endif -#else - void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); - int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); - void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len)); -#endif - -/* Diagnostic functions */ -#ifdef DEBUG -# include - extern int ZLIB_INTERNAL z_verbose; - extern void ZLIB_INTERNAL z_error OF((char *m)); -# define Assert(cond,msg) {if(!(cond)) z_error(msg);} -# define Trace(x) {if (z_verbose>=0) fprintf x ;} -# define Tracev(x) {if (z_verbose>0) fprintf x ;} -# define Tracevv(x) {if (z_verbose>1) fprintf x ;} -# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} -# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} -#else -# define Assert(cond,msg) -# define Trace(x) -# define Tracev(x) -# define Tracevv(x) -# define Tracec(c,x) -# define Tracecv(c,x) -#endif - -#ifndef Z_SOLO - voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items, - unsigned size)); - void ZLIB_INTERNAL zcfree OF((voidpf opaque, voidpf ptr)); -#endif - -#define ZALLOC(strm, items, size) \ - (*((strm)->zalloc))((strm)->opaque, (items), (size)) -#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) -#define TRY_FREE(s, p) {if (p) ZFREE(s, p);} - -/* Reverse the bytes in a 32-bit value */ -#define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \ - (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) - -#endif /* ZUTIL_H */ From 4330c8382ab3d9414a51f5cad88a73b97863bfc2 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Sun, 28 Feb 2016 17:59:29 +0100 Subject: [PATCH 13/30] Cleanup - Removed unused files - Moved the examples back together in /tests/sample-draw. Done this because of interdependencies --- .gitignore | 233 --------- io2d/src/.gitignore | 5 - io2d/src/Makefile.am | 53 -- io2d/src/N3888_RefImpl.ico | Bin 2998 -> 0 bytes io2d/src/N3888_RefImpl.rc | Bin 9190 -> 0 bytes io2d/src/N3888_RefImpl.vcxproj | 459 ------------------ io2d/src/N3888_RefImpl.vcxproj.filters | 195 -------- .../gtk => tests/sample-draw}/RefImplApp.c | 0 .../gtk => tests/sample-draw}/RefImplApp.h | 0 .../gtk => tests/sample-draw}/RefImplDraw.cpp | 0 .../gtk => tests/sample-draw}/RefImplDraw.h | 0 .../gtk => tests/sample-draw}/RefImplWindow.c | 0 .../gtk => tests/sample-draw}/RefImplWindow.h | 0 .../sample-draw}/Win32RenderWindow.cpp | 0 .../sample-draw}/Win32RenderWindow.h | 0 .../sample-draw}/entrypoint-gtk.cpp | 0 .../sample-draw}/entrypoint-win32.cpp | 0 .../sample-draw}/entrypoint-win32.h | 0 .../sample-draw}/refimpl-resources.c | 0 .../sample-draw}/refimpl-resources.h | 0 .../sample-draw}/refimpl.gresource.xml | 0 .../sample-draw}/refimpl_about_window.ui | 0 .../gtk => tests/sample-draw}/refimpl_menu.ui | 0 .../sample-draw}/refimpl_window.ui | 0 .../windows => tests/sample-draw}/resource.h | Bin {io2d/src => tests/sample-draw}/small.ico | Bin .../windows => tests/sample-draw}/targetver.h | 0 27 files changed, 945 deletions(-) delete mode 100644 .gitignore delete mode 100644 io2d/src/.gitignore delete mode 100644 io2d/src/Makefile.am delete mode 100644 io2d/src/N3888_RefImpl.ico delete mode 100644 io2d/src/N3888_RefImpl.rc delete mode 100644 io2d/src/N3888_RefImpl.vcxproj delete mode 100644 io2d/src/N3888_RefImpl.vcxproj.filters rename {examples/gtk => tests/sample-draw}/RefImplApp.c (100%) rename {examples/gtk => tests/sample-draw}/RefImplApp.h (100%) rename {examples/gtk => tests/sample-draw}/RefImplDraw.cpp (100%) rename {examples/gtk => tests/sample-draw}/RefImplDraw.h (100%) rename {examples/gtk => tests/sample-draw}/RefImplWindow.c (100%) rename {examples/gtk => tests/sample-draw}/RefImplWindow.h (100%) rename {examples/windows => tests/sample-draw}/Win32RenderWindow.cpp (100%) rename {examples/windows => tests/sample-draw}/Win32RenderWindow.h (100%) rename {examples/gtk => tests/sample-draw}/entrypoint-gtk.cpp (100%) rename {examples/windows => tests/sample-draw}/entrypoint-win32.cpp (100%) rename {examples/windows => tests/sample-draw}/entrypoint-win32.h (100%) rename {examples/gtk => tests/sample-draw}/refimpl-resources.c (100%) rename {examples/gtk => tests/sample-draw}/refimpl-resources.h (100%) rename {examples/gtk => tests/sample-draw}/refimpl.gresource.xml (100%) rename {examples/gtk => tests/sample-draw}/refimpl_about_window.ui (100%) rename {examples/gtk => tests/sample-draw}/refimpl_menu.ui (100%) rename {examples/gtk => tests/sample-draw}/refimpl_window.ui (100%) rename {examples/windows => tests/sample-draw}/resource.h (100%) rename {io2d/src => tests/sample-draw}/small.ico (100%) rename {examples/windows => tests/sample-draw}/targetver.h (100%) diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 99f1571..0000000 --- a/.gitignore +++ /dev/null @@ -1,233 +0,0 @@ -################# -## Eclipse -################# - -*.pydevproject -.project -.metadata -bin/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.classpath -.settings/ -.loadpath - -# External tool builders -.externalToolBuilders/ - -# Locally stored "Eclipse launch configurations" -*.launch - -# CDT-specific -.cproject - -# PDT-specific -.buildpath - - -################# -## Visual Studio -################# - -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.sln.docstates - -# Build results - -[Dd]ebug/ -[Rr]elease/ -x64/ -build/ -[Bb]in/ -[Oo]bj/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -*_i.c -*_p.c -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.log -*.scc - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opensdf -*.sdf -*.cachefile - -# Visual Studio profiler -*.psess -*.vsp -*.vspx - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -*.ncrunch* -.*crunch*.local.xml - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.Publish.xml -*.pubxml - -# NuGet Packages Directory -## TODO: If you have NuGet Package Restore enabled, uncomment the next line -#packages/ - -# Windows Azure Build Output -csx -*.build.csdef - -# Windows Store app package directory -AppPackages/ - -# Others -sql/ -*.Cache -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.[Pp]ublish.xml -*.pfx -*.publishsettings - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file to a newer -# Visual Studio version. Backup files are not needed, because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -App_Data/*.mdf -App_Data/*.ldf - -############# -## Windows detritus -############# - -# Windows image file caches -Thumbs.db -ehthumbs.db - -# Folder config file -Desktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Mac crap -.DS_Store - - -############# -## Python -############# - -*.py[co] - -# Packages -*.egg -*.egg-info -dist/ -build/ -eggs/ -parts/ -var/ -sdist/ -develop-eggs/ -.installed.cfg - -# Installer logs -pip-log.txt - -# Unit test / coverage reports -.coverage -.tox - -#Translations -*.mo - -#Mr Developer -.mr.developer.cfg - -Makefile -Makefile.in -aclocal.m4 -autom4te.cache/* -config.h -config.h.in -config.status -configure -depcomp -install-sh -missing -stamp-h1 -compile -*.opendb -/N3888_RefImpl/src/Debug_Clang_C2/N3888_RefImpl.tlog -*.exe -/N3888_RefImpl/src/Debug_Clang_C2/N3888_RefImpl.res diff --git a/io2d/src/.gitignore b/io2d/src/.gitignore deleted file mode 100644 index db48325..0000000 --- a/io2d/src/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/.deps/* -/Makefile.in -/N3888_RefImpl -/N3888_RefImpl-*.o -/Makefile diff --git a/io2d/src/Makefile.am b/io2d/src/Makefile.am deleted file mode 100644 index 1fd2e5e..0000000 --- a/io2d/src/Makefile.am +++ /dev/null @@ -1,53 +0,0 @@ -## Process this file with automake to produce Makefile.in - -##resource_Files = @DOLLAR_SIGN@(shell glib-compile-resources --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/refimpl.gresource.xml) -##refimpl-resources.c: refimpl.gresource.xml $(resource_Files) -## glib-compile-resources --target=$@ --sourcedir=$(srcdir) --generate-source --c-name refimpl $(srcdir)/refimpl.gresource.xml -##refimpl-resources.h: refimpl.gresource.xml $(resource_Files) -## glib-compile-resources --target=$@ --sourcedir=$(srcdir) --generate-header --c-name refimpl $(srcdir)/refimpl.gresource.xml - -##BUILT_SOURCES = refimpl-resources.c \ -## refimpl-resources.h \ -## $(NULL) - -bin_PROGRAMS = N3888_RefImpl - -N3888_RefImpl_SOURCES = brush.cpp \ - device.cpp \ - display_surface-common.cpp \ - display_surface-xlib.cpp \ - entrypoint.cpp \ - font_extents.cpp \ - font_face.cpp \ - font_options.cpp \ - image_surface.cpp \ - io2d_error_category.cpp \ - linear_brush_factory.cpp \ - mapped_surface.cpp \ - matrix_2d.cpp \ - mesh_brush_factory.cpp \ - path.cpp \ - path_data.cpp \ - path_data_item.cpp \ - path_factory.cpp \ - radial_brush_factory.cpp \ - rectangle.cpp \ - rgba_color.cpp \ - sample_draw.cpp \ - simple_font_face.cpp \ - solid_color_brush_factory.cpp \ - standalone_functions.cpp \ - surface.cpp \ - surface_brush_factory.cpp \ - test_renderer_fill.cpp \ - text_extents.cpp \ - vector_2d.cpp - -N3888_RefImpl_LDADD = @GTKCAIRO_LIBS@ - -N3888_RefImpl_CPPFLAGS = @GTKCAIRO_CFLAGS@ ## -fpermissive - -##if ! [ [ test "$CXX" = "g++" ] || [ test "$CXX" = "gcc" ] ]] -##then -## N3888_RefImpl_LDADD += -fpermissive -##fi diff --git a/io2d/src/N3888_RefImpl.ico b/io2d/src/N3888_RefImpl.ico deleted file mode 100644 index 449296f495af26f2b41bb1626a28de7432145472..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2998 zcmeHJIc@?$5G;1VEan=&z(kgxVUhCya&kft2^&G^5AXoz*K%ZEh6^mKRC)SN;9Ie2I^4EsEuJm3ak4(0(K0-)vtx2mz-v5Du5+`|?E{2~nF zj-DY~i1~a@z`8H2Rm8@RN^*7j%+?3;*Is5r;m32z^?Gs%|GV@5y&h|~@doa#jn6yX zPm+(*yf56oD($=C(DJ(6=%K6Llfe5Uo;dPV7%T5PITm!!YhANqXLaS`0ufOBi8crP zkWX22ZGmf>3$1+|+x>UW$1lsro%1<*HCnUTM61<8yWK{o(?Pe}#b7YNXf(oPGQo5@ z#cVdiVzIz-xkMC2Sglrgd0u0)*ApDQZ+?mh4g5%3wpR*p6izN~B207)(&WATLc@^|!Y@=U!iC z@yr;9s4^OvnR)Zx-PiZ{_n!^fkU$!8A$=LiwT$r_$OL1D7#qt}dUA=kUHJ)DAm?%> zL;OYD?LuxarzGFYcfhit_ce?T@%0k3PjzlMx4tBwB-Ghl zxu)|5x{k2R(vpsJjjMVY$_({X+T~3|f1KEdM z(lQ=EO4o7){wI(Q<$) zX(4}$aJep4&ssmMuDI!2oqJ-~e*Ujo3g5u3M<_ZniZeuFQ!(h<4g5v<`w25Muq?}hPh~}@#6+hJrOEep~S17IYlSBgC5v z=;~}%>G-Vdwf@zy)HM4y6jBwi{s62AATfq4bCI)#Myw;y+fC5RC}z3eA*MN~A{H86 za_zI0=im{d8tcU~l|O4u`s-xoy(QRlDVH~Lz(`7O>*A?{)y#dQei!!M!YE^TbxGdd zf|g5AVLo&p-pX=&v?A}R^$5j2mbpLr zVh}vulhX9u5R`ai39#Dhi~zK;8lX3^Ua^kcYlAc7YO7*cFFtpnTB+rQg* zTSwo!sT6qpq~}?O>?6s0Q3XZsJyZ#@^0R7h3-NnXdC#WkDJY2OGWsaVj_SV&4Y$B! z6}-_(s8Oe9F{Qhp;RaPE_f*cI57waMmsouF<`evdQ8YldDCuY)cHKkf;R@Ei!-dpu z%X8&{p0bXrHBKdW7xuJ*VYjk_tlGsD)vO_&-`!&1Gj;M@J#Y)wNqs$=z46&RU>`DJ zx7AAES}c(+cw$W+KrY-FImh3g?vJn*{R~O)+Z2CU|8q|(+Bsnlz@-NF z?V%(sj(UhFPwuj@H?cjm0iH&&dCPFfE{K%(w7(*)J@C(L%)ZLt+78PQqu2P#j*HRb z^{uv99Vh+Myy2C;O9{N0?W$SplY5{e?OkbhA0iFQ5VI&*K&%hVrZG!6tG{4r} zymQb`O-w;`3G(DF*#>?WY6T~F;%?(cEJCsqi}y<#SWgURx~>Pvrcq-1<$uKY2Kalx z$oe3PG0Y^~BWS{-D8;x>rX`ks53!cLDJ^XXc@VPs9b@T^>Wpz|9p1_4^&+7!dTkur zVttjNtt+(|T2Ej7#}lC2?1F)p*TM$+%gYUq{f$vukkpV%IHtyhI5)=;xG)y`Ro zkSp)b`OMwl!EEpCZadc8bEA&f572vvgOyx1uDrU1JJR!&CS!8E){JXB8vZ_BHc@B4ga{MH?* zXH{-BLSt?PEjL+TL^d2f#ZM8O0^6&(%b5lF{W{wrj@7)#4=M9|-Z_we=bgVT*nro= zw7K|+5x-|!ZT8vRM_8Wq43VY?gC|d4gTs8g=rn^AN9R!=k*z;!HA}2+7oo<8^x0yF z$en#k6#_;c9M)uZc9lQpKId8aP?@Kbr=y|nij$uBDOVBo#V12WXJ2`A - - - - Debug_Clang_C2 - Win32 - - - Debug_Clang_C2 - x64 - - - Debug - Win32 - - - Debug - x64 - - - Release_Clang_C2 - Win32 - - - Release_Clang_C2 - x64 - - - Release - Win32 - - - Release - x64 - - - - {1B3FB96B-B90D-40B7-B0D9-20D15BE707B8} - Win32Proj - N3888_RefImpl - 8.1 - - - - Application - true - v140 - Unicode - - - Application - true - v140_clang_3_7 - Unicode - - - Application - true - v140 - Unicode - - - Application - true - v140_Clang_3_7 - Unicode - - - Application - false - v140 - true - Unicode - - - Application - false - v140_clang_3_7 - true - Unicode - - - Application - false - v140 - true - Unicode - - - Application - false - v140_Clang_3_7 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - NativeRecommendedRules.ruleset - - - true - NativeRecommendedRules.ruleset - - - true - NativeRecommendedRules.ruleset - - - true - NativeRecommendedRules.ruleset - - - false - NativeRecommendedRules.ruleset - - - false - NativeRecommendedRules.ruleset - - - false - NativeRecommendedRules.ruleset - - - false - NativeRecommendedRules.ruleset - - - - NotUsing - Level4 - Disabled - WIN32;_WIN32_WINNT=0x0600;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - $(ProjectDir)win32\include\;%(AdditionalIncludeDirectories) - /Zc:throwingNew /Zc:strictStrings /Zc:implicitNoexcept - true - - - Windows - true - "$(ProjectDir)win32\lib\$(PlatformTarget)\$(Configuration)\cairo.lib";"$(ProjectDir)win32\lib\$(PlatformTarget)\$(Configuration)\zlib.lib";comctl32.lib;%(AdditionalDependencies) - mainCRTStartup - - - cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\cairo.dll" "$(OutputPath)" -cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\cairo.pdb" "$(OutputPath)" -cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\zlib1.dll" "$(OutputPath)" -cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\zlib1.pdb" "$(OutputPath)" - - - - - NotUsing - EnableAllWarnings - Disabled - WIN32;_WIN32_WINNT=0x0600;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - $(ProjectDir)win32\include\;%(AdditionalIncludeDirectories) - -Weverything -Wno-c++98-compat -Wno-covered-switch-default -Wno-c++98-compat-pedantic -Wno-global-constructors -Wno-float-equal -Wno-documentation -Wno-documentation-unknown-command -Wno-padded -Wno-exit-time-destructors -Wno-reserved-id-macro -Wno-language-extension-token - true - Enabled - true - NDEBUG - - - Windows - true - "$(ProjectDir)win32\lib\$(PlatformTarget)\$(Configuration)\cairo.lib";"$(ProjectDir)win32\lib\$(PlatformTarget)\$(Configuration)\zlib.lib";comctl32.lib;%(AdditionalDependencies) - mainCRTStartup - - - cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\cairo.dll" "$(OutputPath)" -cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\cairo.pdb" "$(OutputPath)" -cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\zlib1.dll" "$(OutputPath)" -cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\zlib1.pdb" "$(OutputPath)" - - - - - NotUsing - Level4 - Disabled - WIN32;_WIN32_WINNT=0x0600;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - $(ProjectDir)win32\include\;%(AdditionalIncludeDirectories) - /Zc:throwingNew /Zc:strictStrings /Zc:implicitNoexcept - true - - - Windows - true - "$(ProjectDir)win32\lib\$(PlatformTarget)\$(Configuration)\cairo.lib";"$(ProjectDir)win32\lib\$(PlatformTarget)\$(Configuration)\zlib.lib";comctl32.lib;%(AdditionalDependencies) - mainCRTStartup - - - cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\cairo.dll" "$(OutputPath)" -cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\cairo.pdb" "$(OutputPath)" -cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\zlib1.dll" "$(OutputPath)" -cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\zlib1.pdb" "$(OutputPath)" - - - - - NotUsing - EnableAllWarnings - Disabled - WIN32;_WIN32_WINNT=0x0600;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - $(ProjectDir)win32\include\;%(AdditionalIncludeDirectories) - -Weverything -Wno-c++98-compat -Wno-covered-switch-default -Wno-c++98-compat-pedantic -Wno-global-constructors -Wno-float-equal -Wno-documentation -Wno-documentation-unknown-command -Wno-padded -Wno-exit-time-destructors -Wno-reserved-id-macro -Wno-language-extension-token - true - Enabled - true - - - Windows - true - "$(ProjectDir)win32\lib\$(PlatformTarget)\$(Configuration)\cairo.lib";"$(ProjectDir)win32\lib\$(PlatformTarget)\$(Configuration)\zlib.lib";comctl32.lib;%(AdditionalDependencies) - mainCRTStartup - - - cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\cairo.dll" "$(OutputPath)" -cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\cairo.pdb" "$(OutputPath)" -cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\zlib1.dll" "$(OutputPath)" -cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\zlib1.pdb" "$(OutputPath)" - - - - - Level4 - NotUsing - MaxSpeed - true - true - WIN32;_WIN32_WINNT=0x0600;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - /Zc:throwingNew /Zc:strictStrings /Zc:implicitNoexcept - $(ProjectDir)win32\include\;%(AdditionalIncludeDirectories) - true - true - - - Windows - true - true - true - "$(ProjectDir)win32\lib\$(PlatformTarget)\$(Configuration)\cairo.lib";"$(ProjectDir)win32\lib\$(PlatformTarget)\$(Configuration)\zlib.lib";comctl32.lib;%(AdditionalDependencies) - mainCRTStartup - - - cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\cairo.dll" "$(OutputPath)" -cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\zlib1.dll" "$(OutputPath)" - - - - - EnableAllWarnings - NotUsing - MaxSpeed - true - true - WIN32;_WIN32_WINNT=0x0600;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - -Weverything -Wno-c++98-compat -Wno-covered-switch-default -Wno-c++98-compat-pedantic -Wno-global-constructors -Wno-float-equal -Wno-documentation -Wno-documentation-unknown-command -Wno-padded -Wno-exit-time-destructors -Wno-reserved-id-macro -Wno-language-extension-token - $(ProjectDir)win32\include\;%(AdditionalIncludeDirectories) - true - true - Enabled - true - - - Windows - true - true - true - "$(ProjectDir)win32\lib\$(PlatformTarget)\$(Configuration)\cairo.lib";"$(ProjectDir)win32\lib\$(PlatformTarget)\$(Configuration)\zlib.lib";comctl32.lib;%(AdditionalDependencies) - mainCRTStartup - - - cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\cairo.dll" "$(OutputPath)" -cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\zlib1.dll" "$(OutputPath)" - - - - - Level4 - NotUsing - MaxSpeed - true - true - WIN32;_WIN32_WINNT=0x0600;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - /Zc:throwingNew /Zc:strictStrings /Zc:implicitNoexcept - $(ProjectDir)win32\include\;%(AdditionalIncludeDirectories) - true - true - - - Windows - true - true - true - "$(ProjectDir)win32\lib\$(PlatformTarget)\$(Configuration)\cairo.lib";"$(ProjectDir)win32\lib\$(PlatformTarget)\$(Configuration)\zlib.lib";comctl32.lib;%(AdditionalDependencies) - mainCRTStartup - - - cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\cairo.dll" "$(OutputPath)" -cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\zlib1.dll" "$(OutputPath)" - - - - - EnableAllWarnings - NotUsing - MaxSpeed - true - true - WIN32;_WIN32_WINNT=0x0600;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - -Weverything -Wno-c++98-compat -Wno-covered-switch-default -Wno-c++98-compat-pedantic -Wno-global-constructors -Wno-float-equal -Wno-documentation -Wno-documentation-unknown-command -Wno-padded -Wno-exit-time-destructors -Wno-reserved-id-macro -Wno-language-extension-token - $(ProjectDir)win32\include\;%(AdditionalIncludeDirectories) - true - true - Enabled - true - - - Windows - true - true - true - "$(ProjectDir)win32\lib\$(PlatformTarget)\$(Configuration)\cairo.lib";"$(ProjectDir)win32\lib\$(PlatformTarget)\$(Configuration)\zlib.lib";comctl32.lib;%(AdditionalDependencies) - mainCRTStartup - - - cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\cairo.dll" "$(OutputPath)" -cmd /c copy "$(ProjectDir)win32\DLLs\$(PlatformTarget)\$(Configuration)\zlib1.dll" "$(OutputPath)" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - - - - - - \ No newline at end of file diff --git a/io2d/src/N3888_RefImpl.vcxproj.filters b/io2d/src/N3888_RefImpl.vcxproj.filters deleted file mode 100644 index 482493f..0000000 --- a/io2d/src/N3888_RefImpl.vcxproj.filters +++ /dev/null @@ -1,195 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - {7cc8518e-643e-4930-bfbc-8174a4bc66d8} - - - - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Resource Files - - - - - Resource Files - - - Resource Files - - - - - DLLs - - - DLLs - - - DLLs - - - DLLs - - - DLLs - - - DLLs - - - DLLs - - - DLLs - - - DLLs - - - DLLs - - - DLLs - - - DLLs - - - \ No newline at end of file diff --git a/examples/gtk/RefImplApp.c b/tests/sample-draw/RefImplApp.c similarity index 100% rename from examples/gtk/RefImplApp.c rename to tests/sample-draw/RefImplApp.c diff --git a/examples/gtk/RefImplApp.h b/tests/sample-draw/RefImplApp.h similarity index 100% rename from examples/gtk/RefImplApp.h rename to tests/sample-draw/RefImplApp.h diff --git a/examples/gtk/RefImplDraw.cpp b/tests/sample-draw/RefImplDraw.cpp similarity index 100% rename from examples/gtk/RefImplDraw.cpp rename to tests/sample-draw/RefImplDraw.cpp diff --git a/examples/gtk/RefImplDraw.h b/tests/sample-draw/RefImplDraw.h similarity index 100% rename from examples/gtk/RefImplDraw.h rename to tests/sample-draw/RefImplDraw.h diff --git a/examples/gtk/RefImplWindow.c b/tests/sample-draw/RefImplWindow.c similarity index 100% rename from examples/gtk/RefImplWindow.c rename to tests/sample-draw/RefImplWindow.c diff --git a/examples/gtk/RefImplWindow.h b/tests/sample-draw/RefImplWindow.h similarity index 100% rename from examples/gtk/RefImplWindow.h rename to tests/sample-draw/RefImplWindow.h diff --git a/examples/windows/Win32RenderWindow.cpp b/tests/sample-draw/Win32RenderWindow.cpp similarity index 100% rename from examples/windows/Win32RenderWindow.cpp rename to tests/sample-draw/Win32RenderWindow.cpp diff --git a/examples/windows/Win32RenderWindow.h b/tests/sample-draw/Win32RenderWindow.h similarity index 100% rename from examples/windows/Win32RenderWindow.h rename to tests/sample-draw/Win32RenderWindow.h diff --git a/examples/gtk/entrypoint-gtk.cpp b/tests/sample-draw/entrypoint-gtk.cpp similarity index 100% rename from examples/gtk/entrypoint-gtk.cpp rename to tests/sample-draw/entrypoint-gtk.cpp diff --git a/examples/windows/entrypoint-win32.cpp b/tests/sample-draw/entrypoint-win32.cpp similarity index 100% rename from examples/windows/entrypoint-win32.cpp rename to tests/sample-draw/entrypoint-win32.cpp diff --git a/examples/windows/entrypoint-win32.h b/tests/sample-draw/entrypoint-win32.h similarity index 100% rename from examples/windows/entrypoint-win32.h rename to tests/sample-draw/entrypoint-win32.h diff --git a/examples/gtk/refimpl-resources.c b/tests/sample-draw/refimpl-resources.c similarity index 100% rename from examples/gtk/refimpl-resources.c rename to tests/sample-draw/refimpl-resources.c diff --git a/examples/gtk/refimpl-resources.h b/tests/sample-draw/refimpl-resources.h similarity index 100% rename from examples/gtk/refimpl-resources.h rename to tests/sample-draw/refimpl-resources.h diff --git a/examples/gtk/refimpl.gresource.xml b/tests/sample-draw/refimpl.gresource.xml similarity index 100% rename from examples/gtk/refimpl.gresource.xml rename to tests/sample-draw/refimpl.gresource.xml diff --git a/examples/gtk/refimpl_about_window.ui b/tests/sample-draw/refimpl_about_window.ui similarity index 100% rename from examples/gtk/refimpl_about_window.ui rename to tests/sample-draw/refimpl_about_window.ui diff --git a/examples/gtk/refimpl_menu.ui b/tests/sample-draw/refimpl_menu.ui similarity index 100% rename from examples/gtk/refimpl_menu.ui rename to tests/sample-draw/refimpl_menu.ui diff --git a/examples/gtk/refimpl_window.ui b/tests/sample-draw/refimpl_window.ui similarity index 100% rename from examples/gtk/refimpl_window.ui rename to tests/sample-draw/refimpl_window.ui diff --git a/examples/windows/resource.h b/tests/sample-draw/resource.h similarity index 100% rename from examples/windows/resource.h rename to tests/sample-draw/resource.h diff --git a/io2d/src/small.ico b/tests/sample-draw/small.ico similarity index 100% rename from io2d/src/small.ico rename to tests/sample-draw/small.ico diff --git a/examples/windows/targetver.h b/tests/sample-draw/targetver.h similarity index 100% rename from examples/windows/targetver.h rename to tests/sample-draw/targetver.h From e711601968407e48a8a6c944f539b6b23f8768e3 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Sun, 28 Feb 2016 18:04:30 +0100 Subject: [PATCH 14/30] Removed qt implementation - it was very early stages - it is still part of the git history --- qt/docs/N4021.pdf | Bin 575098 -> 0 bytes qt/drawing.pro | 2 - qt/include/drawing.h | 1107 ---------------------- qt/src/device.cpp | 37 - qt/src/drawing.pro | 29 - qt/src/drawing_exception.cpp | 22 - qt/src/font_face.cpp | 29 - qt/src/font_options.cpp | 49 - qt/src/font_options_builder.cpp | 59 -- qt/src/image_surface.cpp | 92 -- qt/src/linear_pattern_builder.cpp | 119 --- qt/src/matrix.cpp | 157 --- qt/src/path.cpp | 46 - qt/src/path_builder.cpp | 701 -------------- qt/src/pattern.cpp | 39 - qt/src/point.cpp | 100 -- qt/src/radial_pattern_builder.cpp | 133 --- qt/src/raster_source_pattern_builder.cpp | 161 ---- qt/src/rgba_color.cpp | 158 --- qt/src/scaled_font.cpp | 77 -- qt/src/solid_color_pattern_builder.cpp | 119 --- qt/src/surface.cpp | 554 ----------- qt/src/surface_pattern_builder.cpp | 79 -- qt/src/toy_font_face.cpp | 35 - qt/src/xcairoenumhelpers.h | 740 --------------- qt/src/xdrawing.h | 28 - qt/src/xdrawinghelpers.h | 25 - 27 files changed, 4697 deletions(-) delete mode 100755 qt/docs/N4021.pdf delete mode 100755 qt/drawing.pro delete mode 100755 qt/include/drawing.h delete mode 100755 qt/src/device.cpp delete mode 100755 qt/src/drawing.pro delete mode 100755 qt/src/drawing_exception.cpp delete mode 100755 qt/src/font_face.cpp delete mode 100755 qt/src/font_options.cpp delete mode 100755 qt/src/font_options_builder.cpp delete mode 100755 qt/src/image_surface.cpp delete mode 100755 qt/src/linear_pattern_builder.cpp delete mode 100755 qt/src/matrix.cpp delete mode 100755 qt/src/path.cpp delete mode 100755 qt/src/path_builder.cpp delete mode 100755 qt/src/pattern.cpp delete mode 100755 qt/src/point.cpp delete mode 100755 qt/src/radial_pattern_builder.cpp delete mode 100755 qt/src/raster_source_pattern_builder.cpp delete mode 100755 qt/src/rgba_color.cpp delete mode 100755 qt/src/scaled_font.cpp delete mode 100755 qt/src/solid_color_pattern_builder.cpp delete mode 100755 qt/src/surface.cpp delete mode 100755 qt/src/surface_pattern_builder.cpp delete mode 100755 qt/src/toy_font_face.cpp delete mode 100755 qt/src/xcairoenumhelpers.h delete mode 100755 qt/src/xdrawing.h delete mode 100755 qt/src/xdrawinghelpers.h diff --git a/qt/docs/N4021.pdf b/qt/docs/N4021.pdf deleted file mode 100755 index c7975581ec3507f773e88bf399e820b3303847d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 575098 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

    *Vi87RG5<j6g!ECU_5 zm&Y~iIQ8`@r|}j)BTx-Zz35#InjKKW3JpZ{b77s!HkT!#Kk=Pte?1Pp->hhpxQSH<*osUNe+pKdsvc@PF}+ikFMYG~BPk_S$Y{C&89i8H)gtY3RFknx0fr5Iav)+>>a zc=kiTIoJ;_#c%cp06I%@o!}}J9lWjqp&UpuTVj9mPi>~b$ur*6t^-wfAHJf=Ux_el za|e6iQz>FwHxHz9{EyI4PQ$TfpY_}*ix||35}uiDPZj`yb(wEfWGa1{?M`jKN(6=BSkhPR zb78|-UrO>Er>A-@XN8WIRFGmFtGZ!#i476PoWzH1S#r077D zbY@}9@+=5l_trEioEM~+B_KQONk-DTW6~aR1o|?ZLt(}H>3S_q%1DpiPVSEZfCgsV zY0Dzvsvs41kS=g*(b>S|oVFiOHh-*iqTDJJin~%Vjy8C5M}))Fs^TIp>CaCf6GgD4 z>4;699LV`A6Ic95Q4-%(rcl=c1sDp#+G#nEEhFhGm|XrQ+e|5+x|hR10mr>LqzZ0m zidjKOsUeGAN|iBol^%}LLu!~*N+M-J{N}6hRsbAZh-uwqSqxN7E}*$gpeS+`fOYtUEeh?a$76AseeAZHb4^IER-Q`c!f+NLIx1rJ zI5B}gG@tIh8}u<1YAd}O6gy8Xkhxc&D{ATj-wAx^L%MxBooAG~Hs~73tlas&D@UH^ zlD{6sT+E~#ik!a3h)wbF&}D;j=hjG$1tq({0hN$lxmpXD0RqRy<8ac{kuwhQK@k;4 zK2Cig+bLA7q)snqV?pnREFeM@iG-XVl{=Y`<^w*mna`2ih?^1F`e?cM1IEZRA!23X z)bpU)F@HDWxrAk0bUsH=$?8~3)f*Ue79+k+z_7{+(a$rO*vNp@M5op2jAqWNBLaKU zpZ-e}t_1O`PC(GK7Sd&~o8qt4Aajn{xHH)I*xW24vkCQ_cB>qkg0$O!^aD4{)mC#M zV>J#5JXcK+>oswohoB3ky{iDtHRzt6p!fSI#*#8@wLB-szH{CoICPUl0tDVCWO_H0 z7J_hfCo;YR!QBo1)=oy3DjH-OjP~#nRU8t>-}26Am5ERu6YfdWVl1FWKn6C!S&9>x z>WFgBgUUtX;MvAaPkhP2f}w!DA9v#si@(6-V7hDh3NVAvM2n~J#WN;{5U?Q<10(;O zgg%G%%?+doP1+_jrn3ledf#22f!4-S^iSF70`KBQrTQoZPf&&#U#CNFVU`@&ZSGIZ z!1$G2@TxQTNmdhgs4b1;cKd-tqkt?pplBJ7BvrIJu?LXTfm#Iyav!9- zM;}1DJ`Ue$`uuYV$bCwZ_T13;#b0Kh!_azV+>SxQ#R+p7p1s(7?aBgWLT@EA#urLQ zhkO)F>nT{5+PW4<1gi-=s(?q5A zJ!CAR@mE55)flIU5MH6HAPHs&xPKA00+$rJ`6^KwWWwBKlR3L`XA5gbv&&i_g3IC- zVtZI}8$_zt^>ur?BU0I^ZX}Lw(cA7!Xwr3mPbDBhQQqod_~zeCtwkTn-+kn%B^jR#=h#1UR!h>nx6l@q%h8Yt2m4r%r zdcE`;9|4gDs&^*%u@x439-~g&`1jL(kd90?7Gpvuza+PR)!vl!IbMZ$%2OUH-M-)N zmDiHOTQ$pARu9y|odXiV;|pw=f>Tyfd~{f0g%c@E>`&OIOPq1(l$PsfS%1&AgO$fC zO=(l#yeerhVkK5VMF)r2+wj5D8srNWHdoVH>bo+;);vN1;WXOjt3HVA@>iJDM=}On z8-lL!Pk+SkA1JiJU%t&He>BfMmQ_F`=QW9QA(|aP&SMU|jeU60 z;1Mm0(uSc8KvQ2i5#V)Eqz9RJJu5%v6K&>W3=Obm0muJvzH-&JLc0}=&_C0kpWrB< z{Zp~ID34Of+>RT=N|`zcuBbjAC+FnV#^eH9H7;ETJifkJ+`H1>gf<-tzb=Y*KGhfg zY%O8)hB5J5BJH6GU6X0CHsadFsp>YM@u_xPew>a#*V;uyQHK<9SE_rOZXHJ=p!{Mf zTP#%ut^{b@{2h|2{S2Y`wX~!F_ssh8Kue_1GGF9qrol8{R|n{rLcZ;9FfQ5PdfpL~ zNX2>_l`Z7XeXN?-98k>I9?P@NmlQ_kljGinkD91^$%v_D@#8?ss`c$EV_Dhq>yhL9 z5lssMs)=iFl=s>xQ!)Dh^Y1}?E7`$*P0nFXTXvRhHeNl=&F9E&iwj&sa7V2cN)+)! zQ(WFQG99cCtP$?X`eR181?)S?HSN`NI?}Ub%iRb|Sq|bcfa8LX!?f|+%n8^*UM->2+H~2*fN8^+Sq8JOK zY^kWiaQbwW71-t6j&L7B^+=-+3xh=PP0U;m^ZF7w$9|~Ef#MVQYVoRtDL;S|R@l^J z*ufhD-I#!8ETRKSt_LF7HA2l+Mv>R8Yq;CK^GDxTkrV7*P@efhc6O>Ndm%p0epp#T zj4XA9^W__qRhMPplnp@LuehXj0mz(TD&hmI{#WBI=_V1XA^3WJ_nf+Zg;xL~R`Yi7nJzD_6J5B?KFvl-uy3==sd;R6pwN^(VNgn>%4wFd{JvV+7 zUTB+zT0NIHO7qvfi%Ot$Ps*C*$6Qd6`P@MiSbR9-+>4>G^ErMBhx}yht5j8|RmT7= zaoPhu7VviHl2<}>M^}GqK zncq43VI#0a+62LgB@`P7Bjx=)M!5cKkWeay}zVN;wT^fuz4E$PHd&5>@ zQWAeJ=81PPFG7ykPBpovDB5nG;8AEB8LrN@$EIESCm6&IsY6Mw4bp~`ESPQpr!q)p z^7U$Mh?TmyOChB(urM4Kg-fbF7#K7n)BqL!)Ft9@w0eZzq`P@=n5+k$1Ka{Nbwx&h zID!pMV9Qg)$eUqp5#zHnu}o0B5!YgT{Xh@Mg<&Fa6`Sts8a9@aMXh~ExNC37%0VIg z8J`UQMGPCeROUA6Q*D;6uHFXo>rn7cBGugB@1HRlK(6uN*}@$H#%Q|=dh#Z}5W;)v zj+LGps^3!`u%!j`sGIe_O*S-Tlz4u5pv`6uxi793Q38t+Qbr^;>oPQsAP2cvAZE2m zII$ES<%bIv`tsvLg<~{^96kIdVz|-M-#K;~gtwfjYAZkYDvRwpr{tn5$}8n6@{I_7 zd6OgLg)+`RQxd6yDjQyB85P2Y(8p+Ns&WjOk7-fN)R${jYF2wxoxtz5h);NnI9|1* z{mH5WKivkb9fdzP6QF$i<&gPnQIAG_R0I1bNuW;SxKuIg#@6uxkfo*cK2yfPZ+ee9 z4KV>Xv!j)GN#bi5qQMrGajd{jR>EATN%N*$YLy(b=y-gcDCduWCA(pk*#Y>-2noT* zqNdO;tIu^b^$2Jc3-6JE0?ag-cXBejJ<}8_SIIb|yQqt>qCz#;r&#Y9L+#V)5`%<4_=6k2sASlA)gFGiHUSS5$nx!{+8mwHtQiT{YwPlfOB!8y93CHhLhDHEY^y zsDwB)z9cV@OSg4%_*mpnvl`j+QIaCQb{BS`So}{{O<1Js2%YnG@>e>VnqJ*CBB&HF zp&RRSzj03U)01d-R4SIRr&`4!pjz-ZtZa_y7Y9mw>NzkMzGJgDD- zChf3`gm#5NJ!Zy>=G`FZAsnd*`|>H(-IM;>z3FdD zE_;ZaMj0F6;nDQrAD1gRKQ3}U0Qu{&+y10U(L#0BIAj4cN;6bDo-^KIf?)JwZxKMF zNa1x3+b}&{9^rWpLUG5D!-TY-MA=NB1RVFP_Q(3kIBIVQo4iw=St;1sUy7=>%;9-ET_V_TWH<}jX*Lcc1!P(`P~4OT zV^=>qX8navh%7{Ymx48~f+szgQvuIAyw`wDP==WY<@n?rH`y2kRxmmywGh*#g{De^TLoaN)I#Ci{3SCV8uyFXw1= zwLUO@(+tS_)sD7HCTB+5gV-hDPd}g_t!A35T9%a8Q%>UJP}Q|xe^`-AhAXjPKnjNt z`C%8&C@NF$SSQU9A7)B$!VN-ClUZSV;h6V8M#f&$>RY%tiI6fyVd`qKJ5WCgCJWSH z&^t8j?0j#2GmEqE*#IePrK?J`&P4mi!_Zm+!Q5^QofnF)$_9}Rq8;#Ci28ugrOo?o z$N23-efB}&Vb~sT#xq4;%enHK)PmmD+Sc1O9HL`p6=iMp2OHw*sP4$>?qlfU@HEM? ziW2-qJO@0>{=au=SpK<7^RK7nS-F|n|Lwuue+k610d@`t94KEseP57%O@YlMQA+@1 zur<@pZi2bNg4WL_elTaUQEU2deR$jFGbbyVnKFxAGkww;ib2@n6zlAi!*OntKegCwUj?5YcfOsQ5K;Gw z%qbX57-1k-eF11|)kFH|pEXWdHGRn1t@LY?EIMp%njevhJS$cHgBoiW;J6J{Gurw+ zKY#Scd26^|Iiu699c%T{<@3X@&!t(TB*gz2Hkj-)sB17Uh3g4F_lEsrh7Z7$wOmQp zMyP2%)r(%3LygpjyOil#yA<*w{cR(_=vK9#C_6w18PusYR}ddAMeDxjEoV#3J^fh zsypfRh(zLHy@675z(~@Y^g1_W&dBq(e_{Nr|BGe_Wf$J-qRZ#Kk<@d!3pmZvg}M&i zBB)!Z)10sJMIlm1(_apL@?0}z47GVfTS48K3yAcBXxybq>i;1xSokx+%`O_01U1ch z+Oe@@tw5lMq5WoyBd0H&{0YsZ`E;{nE1IP9>ZyT3BIaEmYrWzyoFJfb`LkFUs64eS zF7FnT&AEYE_|#k267gVZOi6A7XASww_=abi2qT1b(2o$vSsEYtI^!TNY&`pXOtk^r zruJ6pH-p`p61<81vktF1LkyoiyE(0rPI|&`^yW$cnm0*vhu%m1A-OjQT^j4j-OCHONV&=3{- zRSpOiZNjBO01*l|9Moq!h?1xO?3ixzDg$+sZI=}BGmb z_YPtXL0dqt5!@;D?ag3R59KZD0AhHqR4?pZ7qdOp zkt54z423sTz3e^F&Ew{+5qdVEborOhNN%{gkct35SdTqJZb}i=oe5jokYKHpgmuiQ zFlJnC^R7i8fxSp3l!{`=il6?SM}HB$6JNeMG@T^|T{P7lh!J9l4xMu3o(IG(pOZIc zNUEX2yk*wU$%h|e*DD#Qb66pgr&OFmP5Au4^9Mh8$$$wZ@G? zE3-f@TNdpGjEP6;-l$u-AJ+5|8{f35=jYII9XKXs5046Lz#Wo{p3wdt!Uaot^;_bV zI)DqZ*z;}}^j)VQG?m|R(pN&zvBR}kM{nbbSYPmnK;`-{D-taAI&G@1+hOnR&#~$7 zRl|w<%=e>n*J{j@gRNJljGqEKhNzuKve|2D>s`n5=3StTWNn+=r1jyJL62H61F!Z$ ziqKYBU9-bk-KH=LYq{1kY3vp81#bfZ>Z5(Uw2;+?IVeO})8poo6Osw;!qvTMB}E^e ztdf)tN)ka0&PMknL4zww1MRIdtkc^dj6-wSZjvFEg@{j)vZiSpWk46QDvd(vpP`Pe zjM+2Z;Xyd0GZ!|s7{Lg3ns5q{5^tQ&8o)?cdFW=M;a+)osU_OY=(~V2g#B_D$3%7= z=4}wtZ?)B>Yo%Io*#kgg;`59Qq^AAF$m|4}@P6XZ&UEacSJ_0EUPfdQ_XjFW2ObTX zH2`=RNfpO(Kyl0V(}FfZQEe`!=ORae#eAT=25abR zUaG6UeX+C0z?J(g6*wovlUvfN0!@Sgzjs@#;ye}$z!k>|AWag*XNe(zAzGhQ0?lA$ zu$Hr71rs~|IR2Ia2a4VPRXzna0+Ag(6m3ekUTsMNO({$KU~1+DzFw+lIBO8ws5aHM zmCyL<7U@Muif8dj3&)^X_RjeLn3J=P`poY)&5Wvtb+^4c2qdPJ+;sWj4Tn$aO=bax zBAML6^^^7MR}PZ9OR3Qv8}T!rZIugX-F%v=2wGdxIP#rkNipkBRJm_bQZgK+-K5u| zVM(Qm6w4H$xv2%pG~8TccyE`jfxA2as27MLP<}Opb2N^c0ldrjAchCj*hCas_bw@B zP$N^(}cm>Xne?yP)Ba#nfQFl)R7OpUl{b&hhul9LJ{FJH%<%5|k^xHxiH z=k8~eHCYM*HqqCkd^9SqN~fym$IwjHLf6Fmu8b87p0856@%pAx7oe$l+b z*=;Ur5g$>gdKuXc8t*h_Zu4aJ{TfK%VuAx0K4suntDTmhTy#h4D19FAj*>!F({&n+ z)FHR8nFVc;z2(Xs_fusyw{fFU{!Ot&zzCIvwh12%=8tte^_R5goxIxLma;vh|W) zkr~%gk-(6(&=6|HI zXJU6;BaDchkpu>=boXNo?F1@noHkIn5Y&-dSki?I=~l6G9)Ve_$h+ExmWwZE%Y=ve z-Wh`pWgf&m<_P^Tq7}AsyoQ*H#3K1@I{A1nBmqX(h7#7+Ye8?P6zbp~X+fL55s+IO zpAP0x_GQpJ^g8h??ZgC)5{vj6tuK;%2vuU9MQ5i@^zWmX9}rH+Vp+%#S*Okh5Enz4 zOsQmP=Z|x9{3HM*!-vBQkzs5Ex7B9dI;lS3`3j^zZ52Ysoa>rq0%+WqX%fMBP;(N+~2{e2SF9f=bGZbq?2Fbj;i>K6ry93l0meX5RxLGQ3VjtNwV`aRoSR97U zqsbi~T@8)pn;k5jKCM*z`~YPz+i0EZOaf=CEZwulYfY8bboG69k%ckX(dkjim^v0e z5mQ(CHY2Gtwe@kloh)ZHs0Bs6yRL4v#`<{+0B0t9Cj-~q-eSo57i#=vyI1e3`F$S1(3}*bkQD7 z-TANsvXm`nPt8H7o&77X)O#^!jX?%dJ+Vb%F=s45GFldy$HvXc8>K{m`c-eL(WI5^3mCr^TRV(s+J1wI z(Ku8DssF-E!6v90_>oMUfNY%2P7dEY$pb3E4M7S+ep{nE|4YlTVp$$obnm@fEk%rJ z_dyZG0eI-C3TG6)h7+k1&ITEt;vtb5j+J9o9*#DOKdv>UUZd<-hRQ|oE@cuG zBP>WweESjG4}CVE?~%Lq?hdw_Y~Y}&p6F>{EoVf}^42N3swJ0sg-3|U8j5~62r`9s z-k4fGuae2F@FpI^^%133uc6E6FekXNk@yJb5a*IDy2JCZhv;o@MLFanCK0t-JQY60 zP<9Hs_6msH5SP!k@;rq)^XTkx5fQAf0ZU%HbsFLEPsESx9Bm{VE?BI*qTRzPrq3NpY9gN2o-9ZtoG2^{E^3xFOBk25G0@T4hv%2DA^MR3OML zQ)%E zL_Jr4nO>$cVNJ0y#*<^7<9bzBIrQ-0=YyUB;4ACzsUcZ3*u} z0Dg~2?r{H(k2*w-(yp?KBF0la2DB2djNN~K9{IsCc=oJx~!Zvoabk$wyxUw6d2s%sQr?pLlZ+rugoC&iK$&mHbf zm9HUdZ@uNK_wjPjVwG$1{?`F{zV67$Pif6QP%Dq_fapb<_V`gF58SoI#y@dohh?HO zXC<2js>_-F2gUB+>heu4lrR0fzk!5yc`GtS`ZqA3^6r2w{02?Bg-*n2T4xh$lzs#POfE>D~T+2e+>T{Y<}{$L;;P%s8JN zc0O*IO@J+)H(MP*jtBpO{Cdrq75(*64%vH+=&hq5K~E04*aJwAafj6ToY&Bc{Jjx9mC`)Z#WwI|UL0#|>g9X5ZkeGd|} zniFY#+x$MG>}dpjx_V5e1nE{^ym^S&d(+XKAJ$Ge{-i{M99uB}l+;1$fYl$87*Ksg! zdLG!xhNXqq3n^k_y~s1M+|JvFIvq#K9`my#Gwls(w*?-JKue4;F9BF5DyOJnLPlTR z09fF6mY20P^;@|*FH}Qf5)tz(K;Tidb&FP2As?98Ug7QwSS9j+$lU&nuPhgT_o7l; zNJXE93XA)If+Au#6LB}L-H!@Wa4hULgGNB0Tmt0T&yc!s>?pZCR4Hx@8@91e0s?66 zU8C!!C#J`OF^z5!Si#g8>bA2${-ebcMmSdd>Jn=!cFG4ST_FAkT?}Lj{Rum(WL%_9 zPNE4aYwBFHoqGac_o}F*r$8mwkZGi}bo$Ub0_{?)VOhtn{wc-Wll4p3L3ti4B&75N z0r$4LpCGb+C8t6DA5JOQC|%Hh%c4*4E+MLfH^6+~Pt018k)Mr?Y>qczki`q@lL3jk zKkW<2fDqqvY;C4|#2eTxw%gr#g!ZlCs&b<5t#W48!hGC^3D~{uX4*IKq*QqCWhd4y zF|zMi?T0YK2q29RKX;8v@b@Bq$8D<5(a|71IUmfCIaNmDV3&r_L?8 z1)l#B)7KIuM5t+?gy$!SF__?}Zuz0>2Cw7(gdyi!HXM1qYv) zpKqQUD*aGtZaFUqdKzo$Y-XP=6{G7CgsuRN-q?@%0 zSh3^pJR2fB1Qiy4N*_4OyP-c<-J zy?M+&9l#ymz9@+Gc0PX+(YJRLw`n4gG1zB}ghxI}&8A_M!j%*y-@2Vad=3ba1z(kc zbyvA@KSVwTPRAv~9ZwiV?z>SnvR{9dRSgCQTi>tHk8hFI}S3 zGBn(Hr$Jq8?F!(D;Dz;iS*J-#+72#5zsT8uVm4yxSh^P12kxYiRVR!>i}hKuIofVWJsK#3H0c-C)doXc=6GU3wxj1 zS!Hh5o>`bZtpJlbqlJ@bTxy7SLd)g0TzIssHfIXTY3K#SXlPw*!JKVS_u=^Lc*L0O z8H8;%^FX0IZiMJUXX@ZeP(p7zn!xF*2Ff7Xi`UugN{6BK{2HVFazbFFhZE=-+JtBE zIKw3ewh2CU973H$6OpcTN%Kj^iP88T!#MAl2lMv%U|owvU!}h zAhHhH{6hU9T}_i!C5GxuWw@NNO<4&7>`U+s9YQKQeKeP@5dNG&s_zP&-qpfq0PDP>B)HN8Nj^VfxPNDM2fk z^jv?QVLzsd#i<|Z$D&>D77L@}@yeguC3Qc)qRYU0iK)5SU2kHP^J9$p`ma%S>D5dH zjvJq{8k{Rc^kxBd(gv(|pfd6mf_zg7~wPy3BGuM@a-ITr%<73ff*4j-U{v+d^yTv6zN z)Nz*(H=8fS7S-QR3XN)C#^wW3J%|)eLYE2Iy6t`7wz|27?<=YZuGraM#CD`P|3Ja= ziy$C!6VSZ!3yy?-F9jQ_SAmBK2-Klcuz?m)Bx`9K@5|Lge*ynkLGPyp?fw2m4&2EI zGm6UNx0_K*GRhV*FE1cUe=Y~A2-h3WIEUoU7DWe0ARos%(OF{R|= zw}}y0elX+W*F3mVJnWBY?D;`nH;F5jKmcj`&bRA=#=yke4y?CqgMuJ~)tcNS@-KqH zS6v1eaV#l6fsimi8#k^Ew}3%@d6r!%bFgY{)!*tZUHR6RyY7a31(xMW;iTOp^kFjqt+IFR3KhVsbc;_^e|} zCrY%GW$yj0>;G;ZV!@ZWlS>NNDSs~Zqni{4nD8#D^!o;28bL1M(Avd0wgIt*HzUwa zvS^;Q?^KDB1GZ+efD*ati`!`p83I(Gy_-}UkP7S3BTB}a5`8U_LAr6ZtIp45a-yf3 zL_2>oS3#+xswZ7IRNO5)wP(zr|5%lB_Q*40FRv!_X+?kRjQPWOLY#E_u^YPD?Q<&E=1~fnsVnNM7G5UabGHWR zb6z8v`6YB-JW?jA3{R6nTwZKhSpyW{w9>X2UPER2B+|jkv9b;CSk^(oXDG$h`uUJ7V<-@zQyBuYMtDX^3B~zI-6w#y+Tn>UHL_OSJVm>WGt!jjb*WfxNi!jRB+Lfj{7$o4UM_Rvnb~3JT@?FotP4pn0G34zMhMM|BfoHDnmW?U5 z0#fuQgQ^rtf~r<*h?vJ)9_ zSw}N&Nd+Ay6+K0lDED3?*aNM2Zf4BdOA(UbaQy?n{j5gy>>j9Do+=?>lcrZEgYlaZ?x4#UUkGO+l32*V%@ zngtmI2i!{ZYC?Z1^c^$ODUM=5_@ zCB5Gq@#!QdVHdxA3q)cb$-6yM0%22FLV)#3ehKl+p%`u*WyT65>bWG7V-owH%Xwv3 zLMq|8_*R3c{3?R%u!?WhQUlG3+cr}rQ%=mtB1w-CB9eJW26Da=6_oU|x%~0FeN}2yFr%;yH;Y4na?m|QVjU&Pv}%7CvRx6Iw~k>&IPM_LE_dcD-e-w`E6byFDG>*v{l(ig;n%aX%pre6#i-W1+DW}-(t zDSohpSptXCH5*!xhNcLgflDL}4h(h=X9IUAaeiAnnG4IX_?_cuS|@L@`1Dut#T_*J zMjD=6b0*zTd_>}33;2|)SNa6^=YZFfs6@~A9Ia$gJIS}yK@*VkaR~mKv&;rm@pc_c z3MzoR_}@XFxX*P)EWIgQO0^l=YLrJI%>pafh$vuE23jv#fM|UrXPMp%846>>x5JpN zr)Rn7+T@iwWiFBs84BPjLh*yJ+Y5>3Ulip3JQMeSD9Ab3nf`mD{HM-$K`w#v^-WSU z5|rVJ-gAE4ICibu=CO2=2U(&=utW$YQ^BZ3qrM%M`TCrmx=zwvplyf3TR*&>y6h5Q zrG2_)_5S;{&G;<%*|+tWvHj^ddrh$O%}`5Vx~?Dn{AQ@N-^Mo%x#`YYB;xYk-g)}G zkC-XG?1X=V(mZcEl)Jtdy+2;BG6{`(i~6^*6Z@cjg2xD9Te7aBOE$TxJors;9Urb& zb^9#(^j6VtvD<6>AqAPgy7k4|jwN5|puSbUkB820a7P?Bzx3bV*e?+bJwW_-LcP+9 zC~muj5H6IMpX|{K!`V-6j#ReJcWT<-bEs+^t8ZixM8-W41^0-+#tCZgxcsDOrL9ra zk$n>Gf%njzV6ImQoE-_nT%cai>PgDEN0VH*cnpMWH3ocQJB1YP{94)t(WCIC(UTn$ zy?&J`x`ll64-Q-O)tK)RBLfGAApf4i`%o5H`Y7dAdImRn2&AhK3brk0s23nutDW2% z@T8^ya*8#_Xoz5G#9uF@&T?ONm3__PJxh9jL;JpV?#s(X>c}lwQtPlP0et8qlJr%s z(9;u6^PiM8Syf4Puql)5X+Bk=p9?CVbdsF%V~Vf5DN_+kl}b)yd7aC?Ug@Ace;Fc} ztVX&bSkh`(eA|Gk>2(9bqHWI@aWv>PxAZQxz56_DK@k;8k7%@)ZYgxL&V4{T16G?05UnJB?jFHBm=0bUEaWi{{iA@{K<0!oCP1 zu&SqBJ~|@_JprT(jO&!U1jx_#pkGfnF}&v$w5mvvf%Z9^ zo+(}DLQ_W*!OxY3%B^|%{MB5hd3Z`=#qq1ji9v6UbmFu3wps| z(xg%)`Zb5LR?uq-wFx?+E0z`bbyJ+xMUFF@gU!j{1AE>1fs&C81gzoPNx}xd+Kq;; z*VyT!hBk2QVk^Ir+~F`4WwnI%uapRj*nHyRpY)V{0QaV*IVtMoSX&1Rs(rv@XC0gL zh2qf)WEhYI;ojf&CyJ^j1wiWS<_34l-dBetPD5kEi&a8ir*%n+H#kCBe`6SjV4k#!|BYh2u)QXblprC zPg!3I8t+bWcmXjmuTkNY**8*()SCq=2%aS;T@~xtzVT?PO1i8(R*UGS?iI~MhQy3bgJT!F7I-`=(;E?$=WMDaL z;|nw-NpuFO&x(mb!Req;sJVATOtJ2t3a7b%+laF!xVE&AFGmfov2lsj1w<+`qz;k! z;P(xs3ZHfAf9S2VPi8Z*J+p70sTob>69}_YgI_dGb#UX z)sB@BNu9_=5-%l@B-fZx|72EY2{zhRS~*{Al-IHoe>og!FJ4Vb8sZ;TlKM>|i0ZCVzPFWz}NFcAM zkzy`tFWuEp2w#Nk&lnEndDbw2*T|NY%cU0BhbaT@*Jq5mKesS_!cF<^!bwD)IdoEm z8F@0peNwr0&GFSu!vaC@=2+DHG&-$YCBv-N^|!PEYSx%dQw~an8OdR?i3fInYcdU% z$Xrfh<#Sx`Gc~Vv(q{o|s!6g`H9?WN|9o|T%3;Ib?+F$QsyaLGmLTZ%;Y4Y$suOo3 z@yx%@layHHR{>f&mTAeJaRyz=&!E-oiVusNy-pNNsruEWqTb=UxX;MB8^EH0tpnyH z&VzuPzK6*Fwmkuo-b#u%3i2D&T)j_q8)SFZDq=!42RUrflATm5JPiYnfVQ5*E2+R> z9zGnc(oOY>*bf9>z|*uE2CcX?ZcqRjFHbk%Z!glJ;UOsbc~}5UP(QKcp20F2kVD@B z<<@*lh8#S_2uL9ht%imiZ#+%aO!Gne9P`*gJvx!NEs=*m9RcDmJ0+_S2YVMQ$h*-g znBrg~iu@1tr^wQqAos(>?qF##1*-_>$MnaWQZMk#f>+}s8hDW~Qnw7`*KDc~dC*mv^q)RBTUz`;ccQ z9^Zsm57n@V`ajc?$`10^%-^(b%WvJ=ZY*YclD?Qv4s#~jVq%cM52}Q!qGzeo7Qt-` zu`8|8N_zaHxy5;nPw*z7dg+@2pMeAij{CX$NJ}Xz4;b=i{H%vX0h7~(Bv4o5=gTKn z@{`$>IxZptTh6Y;1koYfTE-?k84eW0 z9iISx^kRqOmTX)N30oeyT}x$Mu}rI-poL)XTfqb^G^#8jlRV7duNc{7tA3(PzMr4l zL9`00mRMx_fn(accO7pj8iVr8;VDc-G zZghzoM@BcSo9`WwLHrGk4?7FulFjbq>!Whr&1f7hj(Jy>g|GJsqp?2~MZB}IZDffU z*PiPr*O7jjPH0Yh>{}wGOqz4tpCX_TXdsP1{KY#m_klh#UYK7N6}5U{K*Abp2O}Js ze~bg`eiJP}4fp-(?JrRvn$qKxi**6QN4+G5dyF9$)F{j38PF9ug&1wj;{yRx49A#< z=%YA)Rkf**uN&rA+W-nC^lof^YQi(T<5)4SztU-GmCxfcb2gE6s}@F1ym*P!(bM3_ zEb~@1X|A>pG@-aNy`trxvezdVDe7dN$KBkBm|dA!WX{z)6Z^8=TpuABA&#kk5K=1q z*{0e;z=c(P&QtjGf-kVMfDH(^i%9J;vYe|%ek*1CY#j0n5w<~@VOF|}EzxAJ*|cz7 zS9@|xu=+?Y25PQJ7gz-seaC~uNadT3 zlcXPhR%GbEfNgH6k$%6OYXz|mbrST6wwXk!d;O9)E+?@T(gHCSRw`$Kq_K8#05orC zj38!9JszDMDKKec0^CnJx?JfJ+AVaPTC35A+cKEg_q?aX)zhRHqif$#m!a(0*ld8o zMF=Tc@`DB(_4ANiwZAKrM3b2vQTglF@pMh$e5&Lisb#C+fD7{IU23tshteDqe(WoN zkx*B7dBD9!8!POI=>h1#J7Y|8vkpW^j7vMZ^laLZ5B<$uU7z-XyMir02J*G11}4f) zNrqICL9I%4qoAb5&1Fn6=ALv&Df0&B;$`>*q!t{0o&XWYovDMf^oP_=`>wCD^s2Vm zqMnN)q8F|IEo4dxk;0F`QxHYEd!xeybkQH3#Nv3g+zy`SjKZByO3UzVz`qwxBV%#Y zlLbhs5f{KKEK1;h98g>6>uH-$;Hy?YEM0REOSCwZMaQA)Ic5bQiU;WUL<9!YgmZnC zua=4;}f3kOZc>J`d1E}p6Y+nN-E zXaVQd3m*-h>{M}aWL3BPj>`8*ZXUr}_sWELFSrxPP8OBv^$JDyPn z1Yr%paDmG8jwoF41Ja1Lm{u|j7V|0}ot`=Z@I~xZ8V+JCTQvGhenV5G8V++8f`xzK zO4z#M7Du7Vq#``)iMzEtF)Pg`4>26lSq;_V_;_WR>`k`ijXu zH;b`r6{p=pAtraMppB7_Wq= z=PThAdfY~!NmetCnkNrqa6&1OE}g}F^$mmBJvB(rD%~U-{l&t}T`n;UQ3rB45DWiw z(dpUZ&LKNE#FRmK@XX^Xte&rkuPkWbxhLzoVu-qS+pVGnjPBg=bO%(S_6T1aMl=Jp zhg_q~-kD5Q+Mii^sME3#7OH5#s;o&+N>D!rnIIV^8*kMH=p+fGo+fg*YCXWRsjvU$ zOyTDYG$k;mQR`1{1{x7J;QPVnE%%C$EYl%4nH z`DaVI)Iz2i+0VIWKtt5i#wItDiYIiqetoK-NlGSZH3x{=>T1!T|9XZM|ND^na7xd6SznFx=yXLXi89jzX%yhyc&GqC#R{=zpM`5o7@!-SZa_L=s%SyLP___Lzph zKHk5(>Z9Bb2*Jr!WL|DpxF_Lv%jB07;*_ieCu0r^o(ZP<}Z~9?8Q2aM$I|Rp*Vda?; zb@Ja|T4RreNiVPsNH(Hl#-2fA;Ani|+`}fAP~&F=^|5rV~uu5$HT&mSiq~EacgHAI3jtHH3m6Q_n1fKY|q7;ghpe~ zrJIAe5kN3D1KqfjT2K6h#?H`b!iimtM*6 z-KiA>=YGULY4C{O9um`4$1^SQ{9-FIE17VYa}JE4IpK(|Em|;Lp`3R)Utim=W|rY) z73A2``ujLePAK-I9&>S?f%7JNwW1%7POwV!{3r zIkM!8+lPNO0sYM|HeDOm3Q{#!9W@tA_aXGFL?t9~H-;X{d@so!{YyG)q^+?l5`PA6 z*3he;F9)%R@|W3ChHdFQ038GjIf$Y$XyZtqqN}pBbKntDFv>EVjwhsFJT7Mor1uoc z@0sGH)FU3^_UfWM^G8nJAg!F!9JcDH3T(s-(IjUe%VWSmah5agj$~=Azz}&Sz9GYn zlA!kuoF;&9js);JTyO}+mcV!G4GkZ!qJ!B{+fxk+-Y38{l>t9q0C+6YR$s&`!^Gwk zbf9|Tbo(8HDYSPFV8duPRy?y^%O=dEBP}%kRNLB{^j z%S+crZt2iCsBv!l@l)TeGceO)P-XL)lPcNm*FjE9hmBLS@`~n`3(R}N%Bop0IF|f` z8;)R^q^h0{R&Cwj+?Y!FkSJ=9AB=?L{4lxr_ z^kVHl)Nc-O?e-)w&;u}bcud0q2$F`bz>+?i+xlurLxF+Bg3Lleec;P}M+UKKLql*( zcZvphBHnN+%|)aThnsEX@oAPDvqIy8rsdbc>5=Kthf1u0qR(21D%xCv zZ0K{L5b}xI7)tGeD2zNG&XMtejUyd6j7Ty$aY9I(#u?-5t(l!#Xk{cnAd>w_f%;_{yA$Iv@S`kY zBob!z6wk5T-p`3X6CD=9R^wUr4K@ip{? z_{>xo6i4v<@#>cKHI=1;t+)i> zl@pa^Wa&Uql2~3AobGddpi9pIkl9t4TldMAOupS0YB#)b3R)CruhzG1j1 zxN#u2;G2J_Em=u%i5+M8>T4M}M;I@*siU-Ge8WsPE@JPsz5Rn++P7ut%0!cA8I*NU z9tUewxJzp8J(HQi@&rG@fN4K*woEo<>91hm=Tc98i&J!0e~R-Egb^T(1eDJz9+S8g zrDgk6Q%k5I134dkDL^|g383YdHR@wqP@$@%f1m8^nLmj%X9 zN{khya#9ytj}===&)vJ1BQ(tmNX_bAw6=T1E*qyyDMuwAoHW%Ls2^eX(2q|~6&FUHM>5&x5OFiDspeHfp1Z2if&otjz2_mb^M(-Hh4S+Lh}+)a{Ny*! zu{X(k*YdH@9;T0|L~at>1uxw-DG8{qjhi${9YV!$sOZ)uDn0=<7pIJ(QY_FSW?;Gk zMlY}^@2IQ%!$;G%iEnwa1+kA{eR`jIhzT>u*Z5>NKj_o4LJoQ`eETuAwGNU93%pi) z9cmF&$q8#z@(p+kVkeDFKZ;w-4{C>aliq|x(O~w~Tk>h=Fb(_rhIA^l)HmF;tohO6 z=n6}B>;wjw_35um0IF$yO47dK_@FI(+YO#8=}nf_gE`MrNCu-$^$~a)634ZAq3nS; zn=!0OS|W9ZngNUh^uRs$H0_ZuCvwHNJIh~^WcYVG%6xamw#J^VvsqC}7|^CUra+3t|7)v`1Z6YBe%%Ht^q@{LffH|SL| zC6T+fyMw$+4hGOVBlv&K>^5~NrI(O&4Jy%Iz^T|cspK;cq)bQ@cHqa2&M)S}*pyEe z)_5-5`G<+M+@F4l!<3ejsG*^<1QBPtpHRzqcb%@RgxFP!4mYn{X^SO!gkw{_)36ze zNU=j@9da8Xkg(deg?s;krSiXbsDCRO-{&G*Vuhdh`8Wber{`(lE!>Y#RXlgFz| zxwyP^_X1tkPpKXvBeVq)M3irKr(_u%&}*wyNLc$>uIQ{SJ(7@No`Xt;?J+fz3~qZRSD~(J@`eKq|KSZPtWkUzieSy(39+^E_-fn_b#4oJTHYxkzuDGt^4E{YoVg5W>Z&WqwL~H zJ>FAS1L9`SlnW(7;#z9s`TH4@~vNhZ;WwY-=euJ zM)`pV3A&vLWm=nbwKc+$9mt*kx{NS%nX=QJ~cwC z+G&>TKMkn)-OI#41uhvawaI#Qv9&oBBjZgUrj2U$AV80J5ZUB%VKM6<&Wgte3BHXB zV^W*hjanu?WMOf2a)8Ni(a}ka5f|GBqD?uo>-YE>5Wnub&Uf3VNO(wnp|@%Gg2`tm z$4^$uFV?Fe!k^ij(F?6CbVi)?RB!&?_2o!7Qm3DKNFJZ9YHCS0;YU0h7r62W5Yv>fX~o3d**2)yMRrr3pQ zqA<#Y9Y~SY>!X?MsTq?sLd0(!_j+=P%X85vSYlG^)y0?7tF#UcrWGo3?5JGmSmZ!H zYbBMf{b^wMDHZEGhgsY=y3=-{g_zi%gb&o3kW>ifii9UWze(L|4`zXo&~Z}9amO1x zS>uva{ljvQ54y`q&MNe7TLsp`o9QVjGC0{za?%~r1$XLM@h_+azZP#rkL0aWXl;w? zK%(I*i2XsnNtbMr{?^V#%e*X@R`+nj(xjwo_Ezm~05idgNWCFjX5C(9#;swIYt8nX zne+{BJPld6x&yC%%B0?VW8-Pu#I|kph-S!;g9IQ-KwwVoZwwW|KbVg5Y)D{>bK6uj zLM#DCt1HJy`7*PXoM28W0i;t-7`zlL7A)zRdczsL;-cdSu?;~#6f#jaWyb>;u)wD@ zP@^I*@0rg?ZfF^(GTPm$`QwNTxkYBK9@oKDB75VKAyy@IZbk=Q#$FIoVylEhlXg#o zmouT{FU~98yLB_4F}!-X; z?-h?}dz@SUL4DFt7*7d+YcLiIjKuEcH*=XD`g7QQ@e__Vs$IK0nd%SClHiI?M%QGF z4WDixPN?XWMl%Jhe$%&Fxotn?3G_VzmfoDQ-r$@IoWRJLiRqD%Mf~~2NEBPHlY5U9 zB2lSBrsT+}ITl2hEphps#Fg(QkhsX34@J!J5;``bF!v3DVFKJXWejJebZAmNYw_p@ z7yi1wN2v(a8C0J_y@e%n>}APa?Che=F$2s}=aW=b?rwf&WL0JdBO0>gGehTBxJfPE zq#fJG2;0?S(_bWrTCNB!)Ivfyn7b5mJOO#!){&dJ+s2(9iq&5XEFrU|%@+_vSz&2f ze~PGlYcpi!@=;E{14;fB4ZEm7KLiuzlKD9m z1zi^IS7m^`8A{R3F;MYCE)N-7*A8DrZh5>%jZ*S4t@S9!h`Vr1+(iDE~&u)Mp0-D)7VBatZqd$G?R@GfyO7G6;wgFEDwP4PktB)m^ zbh{>k>F3Dl#UI;ECt!~Xon+xxcNyoLoK)knpGn%e zTy|*=1QDr52JTIZ47~m|psdhx&)F%*KJ9cW)gmmj`fMnPvR2JeC(AuYVoKi}hc3hr ze-?@G{h6?A{q;5lCz)O(vrdVS`sfi_v&-Xi59s)s*y`%|I=r2i zr}1+8))DhCBIxe)asG0ga2x2h(&^cw3HsvrE}ul9qy)Pw6kUwthw*(*^(XN@*XRac zr2Eh_J)RFQ*K|)M=zStS9n#n6eqfa(&68auZe$jTe-GN za$ez+bL?;hjwH{S&V&y^)Z~JVrWgn7S$YYAfqOJ)l~>IDq9SjSiOUt!;K!}pmWgSe zXeY#Ng#oJRY6sZ(tb2|LrZwHb_dL0MNO$cb*%QR(K6f`y%%iYcqt!v~=Qcab|E8a? zcF(%wi=yYR}CCpO6jMd*Y-v#Ho3PnhByk`1P>xL_= ziIKw9lqF*pUZ1~m2Bb|t)4>>wKqHU=ji2HW}P7%&Dlax3&jNK7f7h zB)8*{5@w9$oniDZDc{8U`BoFVBnaeq?>2qQIwZPNd(BI!C6^I12W3*s-Yf8y#Oa*r z%W492P?S2`1}cFb6s<&z)~%JKRDH$8nBlTzxaPPqS~ywL4=j?1rPOLuBa`4c7%mb? z&4g>g_r_`nh<&W06@o`0-rp830`A3$KAE1sz{$kaJrP$@tq)z{-KDB~F=uQu`w>z# zbnoEPyT+7qP&s7D&pgZPmDJZtt|hTk=57m`0K<5pYE5iXp!)6HN*{rpw)IN2B%3!b zHx=+B@>Y|L0RIqJq4Me_(v2Tm*9gGiY8YZE$D)xvS}pu$o2vWTANWnsN$s`E4^;RR zO~UO~2qc_auwlC(eO3-d_%6^WTkN4Wq@-iaJdu+5HY?g$#dPHhyvC4TFAU*#0;o%^ zp!m=)sTmj2P;IYdz=RUY;t+b~xbhy)S_v5}e64`JINU9G$i=%MU|LL?DjfAXP)B>E z2M^hd3ae-qZ@s4-j>64-3^-lX02Y%aA>X@%BSCb{A|1-T4N_jo$}|VBSc8pDw?mA& z#M+XM`vi2s0ou6|HndTOlr`h|ny3*XS+SkK{FC=fIk?LG#BXIbe6lqbJPGXZ(`gq)Wo+=?g%FWUz1I50gRm;9{atG5Ke6gtabPSB<$RqzyCr z*+&$Dc>>o;I{SOefO@Z`+9n949f!^cTyjAjb!z;U5#n$tE>ylo0W%w!A1q1K>Xw@9 z9U-coPefpU;`%arsJt(t8W={HBUi2|3{p|^zNh^FK{0X}aZSu(jQW5Do_!^D+YtwdE2HRC#jDeqpYraL`1R@Txo2lyukdn!l%t+zCR{S+_OsdJNHbmB1J z%Ol_mz75z(Fg=0Ji1>l8WIfGELxet?#hs26d-5)qM1sj%bShufQn9QZKRP;*<8_phKKyo)IrU5CNQnqY@3pg`Z=U z`4D(U@sQ=M?-fI6ONLIn!Oef-R`@3B`ZN_o#2iAI&^&12oKjS2>O|l+wG7o$AmerV zC!C!iQJH-Q`hlrA`bpWT_E!84w1{z$=?eCDPauYi9`pPW3^N*BMzMkO+?87@2rJRI|X6-uB|?r@RyjFMO^XrIZ99x>o@ZKSabkOqU7 z$|mcPQ~>*T@bm=PZ`BIxCPB$}n^7wBMJ+&Y2FAXcBb7YOC}TH39`^E3$u=+A&q*&j zRjw5hHFr4B)0;7>e1VD4AcqY0cH{m!}P!$rgf;?wlCB$VtzFatW zGDGNo7Rsg(+>xONbCqmhHM$D+fk$AB8l+{jGt;*JD89XQ>v{0!xgs!K#4u+=nBY&z?$CvuY( zyEuYzI?{1SvTI~K659&i4P}7?|4T5Wk6DbUW{Iab#>mqWvkxECi_zLhY;q7LW5MO# zFG0LQe6~QaEAzt7OxXp+E;paI^MsN_vu!!8CnjnovgI9|JiiulcJN!rDdmJq{Bf}l z|IXlm!a>7HWv^E0hwHzDzNR(8B%EHUV~;zg1~MfB07}%wY4$Lo1pSa% zo=>cPu4LgG*eQmM;c0SoQlWa#DIW}EOMHQ$+x~rFmOEJ{h+$;wYB@y1Fx&Kl7}f(t zW)z?9)E;s-*0wh~aWbBbL-KB~xZjwt7RG`?Q}75TZ+wfqFm1@~?}#3t|S(q2w zns$q8CZ(y?E<`9a5ja+GfpLM5u%NY0H@0L+17}P9QOts#bZZi$rmm&r75Axg-&!uf!~Dzn-YhYF}H z%>7tWddz5@)Cfmedrf10J32we%y@KJlNAk%jLasJ7oNQFLw_~ao2F?1Hc5eTeWf!2 z=Z8|=k+MH}$Sys_pyh;*+6uzZn(%Vp^bm!zwqP2P3u$S#lGd5{wdhsU4bg{_l(hTo ztdQG0v6ezZB=17fCNDIK^3J9%x+u5HxK7hgR&z@8X3H4EDKzEx)5-+al&Q=~3F!6= z=4f8T?$%C#mgBrw9kiTGng;Vg!8v1BkEKR>xud}&E14${wXG31tVm=%pYtq$M9i)Z9-(U0x4+}miWoI0xPGf5xzAG`}qY}t!K@`LH&?&^9w z<}!Z^<0RF(o$X9Sncqdd^U5CQ{N3Gb43YHuVkV-o%>LwRjbth6npT*65=p0Hk_Wbg zgXFxC#uKwOkiD{vQ5*7Y84bhl2|Y7e#4nY z!Uxu?4WsWRPE~EObhA`6^QlDs;pmLTDe5i*9aZ^9Y5;zOvM(3ifoKQRgG&!0c&yz> z+K5hcBS*S7W}1fyBd!eS8-U9=zgs5R@?!8=S ze)cY={*)Iv+nNLaNlDg7fi0cQu^kis0o!GP9MZvFRVu1tMBZWPfnnWDsVGr9vl8*s zlq1|ea#iH!p#OWT>cXXn}-{v19!(cXF%yv2B5(G&=nUkMc1?j*YM> z_D(MO--R(cy|lLSI+{KB0oaRk=A$BUICV?){F-dcgNE|vFqXMA;coq#_D2y8P$$@j z{NJ8Wpti<9i${GqBkfK!IlZOmt3>ph#sh7p%;kT)s#t&XBaM?cPNI09^LN?f3)vq( zP!pr#;neBfe+yyd8xBHWK<2e zpmckH@vTNUdJ@r8zK`_kn@qKThC-hPxtJ$&bnd~wjZXT@Ji!*YA#`I1E6UI|E|rag z;2lo^k7~)JMo{D;5@iigz!AgV)N>!27E32l3i-j8Pi~wlgDq=|7ojN8k3SQ zvQMMAX6IfxtF);=|8N5le<1a$TmHAFgS*oaQv-|Q7$R<|fW7)GdRAvs+-b>O>KE5dO zMyed0Pax)p!#`vDuxx`-oXv2Bz9+l6p!G)wPC2!EDhbakBcN1j<=LZ%EApL)wIW04 zBc%glr4wDyMlz?+mK$hI#*4)>#xVKeugB#cc*edE@oxs{YVlW!2=8G;LIilN8t z^&n8!jeM$?SgTSAKBk0>JyA?skf!Od$Z1 z;D#2A?R?CXQ{6imkD-24>z4%mz#nX3lj&_$>M+madQ`M1e8O6M`rd3lc-s|I=p`U> z`1MbCP5sVjUyIwo*NPwE_P$DWb}4^yrN+(JmrA_o2NK{S8GX9tuGKeOhVvP$zYsU; z7$3y1R&Y(~-G$k_+}6z2t3R$2>38;aZbiM^iODtmR~8BuV;8+FNWEuPKgQ}6?iXs3 zNH>$u$whA6K(>7h1;Qom*L@5bfaoqEs?v9R zGL1@s9zY##zD8m=A0Ul}u}#JhelF|QKJs@EF@^Dc--)(f#X1+BYL|!7YMp4%J2lW& zBo3%6>#D=utuzhcr^tgkhbGRqet*%DyH6G!toT75muK$tkgjz2_Fr`Qb4;v|Y5d?# za6Hb8IPIH`4*tHh7gjkvnT?r_lNG?q!bHc!3Seeur(ncLdXE7Si}lKkgIVdmsy$3;)?>gq~oYiDdj>*!=eXX{`} zZ{cLfNbhLK#6<6E%EU--WNYY1Z>Mi(?BGbx#PE%jvtefEWTZ25vbLfGe4j+w$-&vs zNkQM?9|9dK`#*IYF>*nmXv)nVB0p z{_C22gVmh%t?2)Y0q6YB1O5+t?Ei7VnK+o}IN83Z5i{L4r10O2{y#O-@t>(Fzd!$LiZF0|yUxnM%E&_hZq96$>^onzu_}r+Z5^Euf_`M?AQ%#gEPUSfu)_Hik&q~oaY@;YzMm5`^hZh?@s2AH z#zyw09NStw+RPVk>`!lxkEO2c*Xi#^@Sg9Vc%Gh~?)D#qCPMY=mxsZ6bbpa)T-vC4 z(c6(jdu$MEPxeiBAujT}JMC5jKRFRP2>5k$Ho9Ck89eSWIzA5X_DmJlsL-#%O>*CJ z@?WR)f0t)vML?@xODSKJe&iVcraojj%{LkLN~}&&t}{uk_6q$d9er|Rwp8^`EM~Qg zKv9(@|K*O5%TwnY1qTkPu6n*Qox8=zc2~&ow=C_(9TzhtRH=griuejVdyL=4W~Q+m zZJD4G3*3HU->hI~!O$`GD$7J-t7MdJI^pqb%=PKQF?}zTWIe!=2eKzcE)mV$+Bxo^ zt{%s64`9x5LQ>u3>NP65khua;J7kBykGFZ!>U(n*IgBK zp5zv~TjkZ?ERHl~FI%WwG_s1(*+ZYxh_0ntRSjZ_RPjr@1o{Z(4dh`r8-Dx_%Pn`@ znGc{s9K=fl4u0@%sIH&@(zow`CTa)&5%&|ZLHFy^{s2rGlLt7$d)_+S*_xy7P_BO( z$oByCqI4Um+RjE*X*CxEicj%&tC_{AEls3RAk~l|CX~f?X}>J0QC*AWW$utkukSt& zcgJO?y;|?5hkM;eZ{xQT0NP!g(`UA$F);F*^(60aj;c0&Yp3?7SX7kqiu|~=9n9Z; z709+^fkB95n3%Qa&0R|t5jVujCsV8FX@|mU0|H4uEq>dWVa|NQfwN&q&bkELu9ax? z3+K7(eON`pWZ6lu!^uEpQ+cWjW*EPE*v^&(?I@*vcQ$H3$5KDm15r}=ov!IdimCZD zXtJ|0j=b(n5LfdHhzWUQc&mYLg_8^cbInt^WW4`8K_%77gW6F>NPPo$W+-Z!F7y+P zIPdU*`-(RPpiy|p<#U(v6;Pt3)ob@RB%;#Q==2@}^PAuQS(_QfY2DZ_trrZ3Bhj$@ za@u)2KKr|plCx0l+q^rq+O&y|g7Qs)Z+wxB7q~k?m~Gb4)XF0Wsw@A|?i2`bTpIXh zezNT$aS|U#nilk8Z%cbHrEfFwp^yG^vvt&R!jzzL@OH#UJQVj?fcnfOK*J;B7bBs_ z(n4%S4{9tMG@^&jHv&Eg4WfGWbSPR^&-;ANa5FVHC&x+?*YQO&wk|#}0YOC-ZN~){ zv|(~p)k~-HWq|5@CoJ%Ej(c2b+qteG(ZXL*PI!vFO)oHEry*j1=!dJ8%O>|=|US` zRtV)2aDm*CN!t{zOqQ3#ZHb=oPacyD$Ngc4;&zzEw4#J$V5*A0 zf@=)hjh%$x|1hL22O9Rzk7Z%Z(tqz#BmxmyHje%jGmV*Cj2{-ZB`PM3GpR<@dqhRh z=_Y!Vp>8$ukc?TuNm^0nAia@;8@%tI+KGb7qGM5;rPenC0tL0=Ae>ERkFOUR&@=aV z2)f|%JxSKI|CUN&`KGR~+q>5d6FWyl=Ib~A1?EDQ7l}7N#*Bu8L_s1p50%(UN_hX_-pJ2S#E>L|blYyzB5XIC8N+&& z7W3hH48R_WM*;_C1S2|AMv}}@AU7x|g19xDD>aKo@@)+72f95NfItZ+iF;vm?Jt%X zlB&Ikc;`byY~`%%RWd>Ia$YqVM0b*KLw5wu}h= zoQ0^dj4073>1=Dr!N;diX4bxa--%A1=%rqthg9%EbR|I2@qhfO!3Z)6R&T5!Ztwsd zRcrY?@^p(5Wk@P4Miy33u@(=Z{4OIF4W`o@gdLB2+3s0ZLhM#@0~iDkv`FsL-5 zTjL;Hmi66A^e&zm#Y}HC#|V$nW1@mEmgbJlH$uoZF+J~AiB-|PoJn_yKY{uzD7euT zU{?+JT4TXQqgih4M!)lc6dDAY@@6}XO( zZFb}hQSb=y$l2)R6>KX_2kutS9&_KI@pK5wZ{tZuBJW5``h~ttPxGRzpPuyYu`her zXxX#py$TN}CBYBqqnJK4IQ_$r#N+Rl+|&fVEA?KkcoNl^nm*odXMg}50br66)1tfl z2tk=-Kpwo0|NLmSCelt{CVO-zVlBo^-Xdyv+l(g=ZQX|bh#8|KtJRo|8K ztVV95sF4p*= z4r9{9qvn7zTqq{(Gk5>8Y`=sX*l>J&WP>?jXI%oP+j>6h?(0IvLFr{J%O%k)GOjoT zGGZ#5j_@dM`!E~(ZL0YP^a7_-h&BmVz=;G;vDTVDJgMfvvYBs$A=5DQ>K9d$aBAXY zi?Hd6XudMoZ2U{Yz}%4~MS5hm37fOL)6|XfJP8VBuT7EChW3Wykd)P*v!ZPxa?CMd zR~4zp6oH+gIhJ@ZsTq9A#||V||CrM{HAm&$C>Cp?c;pT7cE)a$TBKEV zNsv9yAf=3CwbL%;a3^_!j$P5~>t)@YdiipTD6Q`0GM!&0pc#>FnCgr89a@F z16xwKa_go3ZUUEN(=;z`I$5A19H^LuY%4mae)ZAUuEP*GhjjD;qc%A(MrycWndi~rmrPsF-GBhOiC`IBsnu@(jS%#z>*v{6fiR`iU zIS;ruMm2(WZ=#4R%y=vRcy&XtJ6QNk`l*{|NUEB*{VO^|pM)m>2pa9KIMAsQ6tQ+L zl#ifcI0uS!`r#OSVX-zM;0XCbd<1BF{#TfFo!ZxDbh3 z91=cu8`7S7cvb4va=&M!>50GjkMJk}UtjVI#GH_kA*tg?4g;^Vue)DIN2*bY{`cJi z;AiZPXkxJmLDAf(@A1@d4N1!+i~j=^^FvHawApu>vCG2+#6xXDL}Ah+scg01oo7qp1K@-`M*^xCEUBe_ z=GoEJUl~>BzvR@VB2_YnMU^)A)6-{XIdnZax!&Dn731tj1?_MTqlc;E{J%4|r>FVE zRD`Z-i<*VH4ZOS4#Mhss8`UTFin9mCKQ%k8G=y>nN@FA4Iy|FNPx*9A5O4345j!oi z7?=X5_sjTv+N&#~+9%2g;;n^{=rQ>vn1){vCS7po*ID&#_vdw_=E61Z{E#TYCEUrA zsEm^XX$oE=%w$sstnul8WR$yz?;zfu2EA0Pu>`Ytu9Ig7y)~*2k5{BR-w?GHh9O(S zn{iV&QWj?idYQ6apU`U4LV022@-^PNY>m?ypm3vO8khogh{4V$)sG9N%zCvKiex#> zr!ZZcFN>G5B{}n;hzx^psUpmr8WtqgPIP-HM{*5JH%w!EeZWEFsZLbNp~ne;LY)9A z37BCJ{3yt^dI3g9w8a$0o5WaC6!P;2S0^s*L>JzF69-wg=rA_t&$hQT;ZXCCR@7E z=TcEd1SOzzY|1n92i~MIYA=dWif-;Gpd`R4x~w~Aie;FhIxr+LGr~6*qwt}cn`GS| zzV}~>pR=MI(7pZZSUsyEy!1FWXj^f8idYZ(-;6bqE36?z)RnU`!rJG-y~NerfE%r^M`5bJBOrm#bVEumCA(vd(^%kNKlsuF&PcLRlixc*?7Gf;>)(a6_S zpy`U$$X$=PMiff!jA$kA2eCq9#?5;CL9h+xdh7zN7|e~JLpGOs~vD~P7?RuZ|I z-%3Wd92RMs)2}0U@gO3jfY+NQp_Q~I9RR*&>Vw{v-8D3~3soLcl46H}(t&_klwjYp zJ?8eg2WFXvRrgC?(w%H1mH(2K1Ig}XxTqX~7PT3QV4Ibc7u%7(zFGJxb(@$N-l3f| zJqfI@fZQxEvagi-kesm*$j@nN4v0K+d?jw-|~czOMp*vD05s z%k`opVWnx|AQ69o3Oy0!3=g=2_@W#Oac+afKmVNOCP}R?xdb1Sv)sq-ISy=w=g?wT zI+YLZpqYEkEVVVlaXAhsPSf}U2sn#5{e!ZJm>ox%+b@nPaq4&ocMpiQ@CV^91@5$u zut^B1R`}#-yvL>YR0vO@ZR@fx8Jrr=_RSKzH!9dPKC2RiPqcSR6R2`-}R=uHdczwv6A+;PUIG<+<$KRiO} zuCU)ef2*B8&l$m$J zk`N9ojPf^l+_+MA000``s-A6d*n<;-Ji(`+ek;nY|BeBG0az9sq@m8DQkzQdJl)_a(YgTF&QfXwM^}{sF=6@Z;^E+} zih6u~@ylLko;(-f*cV;RH!H^rp)6=ak8(eV%RoEVI^c4WP5q*sMv79#qRxhAY&$o>x!U$NU9*B0#SUVDQ2&cRR6S3E$1&VFm9TWd_UK$bl2&5n%IC>1W z%F(?DfZBAMVZZ?2U!NF=IHgwgiVO`Z;U@kLNECsohdGiz_{spWzefp?BTD|E+TtZ3 zLIY63)*sg*q8tfg3MjZ;&NHk1{tcuA$0Mjj5g<~JFBiPq&IYOTnpOQnpXfhe7iZF7cD7hvB+84pXaP=<{BFMXwRVb zM%mZZqDMLJqZZ+U@%1& zNBd_tye$X}NK__{dyW{=j+JJHMNiu=cJcs%yqD?(6=LSsBEY=frwkZ+2ZI#_AGP|% znH0shyyYD5*!7rHnid;0#Nkv3Rc~1Hip`pCQ95KC#Ej4J*!BEL8kg0jf{3On=qj0* zcr%U#QnTzPY;FLoqZALSWR;~N)fI#m@C*xwr8z4zae4sm=(H`O}4U`KHHwD?U=^fcZ3Ru1M@XaZX| z-}|#^ExHmjGZrla=nOB%FX(HCD$p5g&D4SbStuPy6M0rA$-{epn&CR_(xi=&qjS`^W=3yt1#191Nm3}&-hPR-ntgOqA4cw?OftI(zb81pW~AbyQay`vgoO_chw zKZ9_i49@QF>g@OcF&?3iK(Od6t0uJ>`}r%}(NMgy&j%$UCh3j$;rToH?VU@_!@p!E z)7AM#@0FT>qHY5XF6%^Cs1tz}w_Y}F!^^YU=Y=i<1>Ow%R;lbc@Q7C{xMuctwz zbF+j0VoSB(jO}~BN|J}qz3~IFbRcXgVL-B|DXk-nkX4%YPoGBo1@u@PNuRAPpcFR} zKzEIyA~3Z6$rtec9R}PkO3k8e@rCc(8W6c|AuTgy;cA*}%jgV#m=R=Xd#DAdv3a(c zh@~;cS^ivpMXZH0nj5$ZIU5WxU@xHHv&CuCLFw4Tz}{Q5m}sf?Q1qCyxgsNhCDHoX zeH@RTIxz6bIv1A#9|r;3sNv3jLAd}DtWw;2-Ol?vE^QxYkyC#@T@Pn_2jT?85&jPJ ztvqYY_uLrZnv{s6{tajSQ~JF!IZ-Pg_gpc>VVz<-8zu6ASXoE_K{d?%{B)%Ij@Bxe zD87$~`~lWit(frbF$UDFlFP=(&t?KA40-#>_;FC1H{{wV!@&&j@KMuzKb+olWH6x< zz!%7{#9Ja^C&z?36j>;Pzx>U~c>0-J%KPIAtO$gqB_TiRNJ$^CJ+Jk~2v%`Au?#s` z4EoTGt~YsT(>(eK8LCMV{$DRgEdP6b0pH8f|DsFzy&V0M_;`IkW%(nHV|KE?e7i#C z9+n6}ihL(b0`;~%UQ83&`F2Fn0A&{rxU@5soT72p$LOhRv8C_U z`n-$(dA;3$NI<_D`p z32}e;Rd_u4!YxFIkGzQEZjhm2#l*&~C_LMcHJp<28n2fy8_GSsdb!$Z|>{|s87)Ito5Czw-F`>ni zz0bvo_XRO}bRuuhbkHm_1m77zP(lu&py*YJsI-qKNo`pbnK#n>IRM4A7loDSrM&*G*qr?4V%&06So-6dw+u_7(pt;&3dXHh|yn72q?^ z-iVGXH5a?v3je#{QIQhn(G<;R0xzqF7ptT?U4sZOmVBgP>*`!J>-b~YAAn+MmEB1>VsK7DN+Bs zU#WR+3k607R$$T|+M-Xk599YLy5D70V9j#2_P5depO3p#jMaM6dUUwhC_vU#*u&{_ zpNzl+AcBN7eW)=}aCeYh=Z%$k8x`*VbrN zjAOM^9WMXbK#BlioE{w9Qf)1a)y)GYC7($;@HXuG8w{uP`8(POYOPo{e2GuPmNBW0 zV5O8U><+cq9uDEtv4ft96F4?TN~0z91G!e)(%vm* zLTr&?uisrFeBTFT6o9};;q}wc7ir3TFBWgtEe~S4yNfPFc*rXY^&W??6a~xUkL+7; zrlv#|Vnk}i--_>3bVFi`EFJ6~zFMUgCE*bS{z5kMm^ShF>+_wYUn9;E7+a&y8Jv=b z8e9enaWx7(8N!u}l;Gos%{9_~2$PiHUHPKu7~+TBC!aQ8{6X=7_*A+peSb2Ri`X0V ziQ6WzX0X5RaHKU`6k&I+pgQuD3EEa(gbyvL7{m}AQ3P7Env2=b-hkrB963v)`t1V| z8XyH&W~mlb#TLHr`R_}NSXetR0t=~E!tl1*@@DS}wZ(AqY?*Ze#m%^xyq#-Wu^SO$ zl@Ph&X>baHOzxpAbkMYnW6)J{hJ0gV3B{qoNtwQn%`w|e(~XQM&&ZP^VGByZ6@pKC=& zV!hRD?dr4x0^&$@3WdU32z3AUaX&DZKLHp@4?b5>qd~aKpXcq|N(6w2C!Fc0i}Q(< zt-YP*z0LN3>X2^F|1%wh3=ZdSW(H*c@9F4d{W6Nu@LfJ=S-@PwwJo^sHO_`Dnw(O_s9DnR?24`y)2l9TU>=S@3)Sqym( zz6Eo}ppi#cRRoSk%q@sW#_-&OQ8)nK0x8e6GG>eF=LZcN{ES`z9|1)(H>s=%P^kbJ zoJqy9Ywi5;%U;l3PLQLUh&bpkJhMZyiQ#)xl>$?@+fPI?qOenN;oCYqFTrBoo@#R+ zYoY^v@%*PYN9HN$D{R9Y;v7B>8sSu2g3{Or;?x+3$e|s7G>+BqVHs$Bho4gYZsfov z6*4LXCPiSSvHU1K7}=@oS3ht9Sv}9+Og-2AhVK0+1Nv+PDatk=f&rtdsi|l3sgYg^ z>{QOJcyh`!fh#LDAu;9V=7u}BULPQU$ap`*rkwKHEvUrwgVgWO91Vv#;z|H&FlJ$Y~la1>r(VY^6=A$!>#DrL4-zXt_cEbCuu;L4e z0pG?~o>>!MUj(6*qb$Of^2@_f>;@lZ4|H4~{jZIT$c?8|@-f=OBw4yDSkcHI3qk>X zImhl*rXn;RCR08JzAuwP6uhD^JO+jLrNI+5jML6!8|cMkw>V|Y%u|IG4)H6DRu(zE z8SOO6KQP9474-exQZ1b%J}l#MDrR~D0mKO~_kV_l-6lum;CRI-pDF!P&nyuQs44r0 zMIQQ{F*#Ks{=&8iD{`o_rk|znHRsrvSIKTWp1Z#;&2}yh^f(3nr02^w&p>A+TT^_; zFeYMNX2m&Ofj1_iTc+R4dCd`JQGo@|7WG(=y#bxSJ%gXSbp}n24W9GUUc;hr6agK) zrX$zVPGE?WqnvTTQHD;R)n@P%ETc7iVOpe!>*8!Gb-(V0B%X&XgUf=Apbi=@wV?3U z<+CQ#(&l6Qe$n-HegOJm%>i^4wqs$bp(Qn2f3xRZYAjDQnmVRn*Nd$SKE+Il1)Xr> z8*L<@HTs%^jn?dEPez`p087BH90@W*LE3V(XIh~#zj$H+DSz;vl&@0hOaT#hedR!_HA z&z6g`x4&Kp#<#mBx4c}lJ2^SI*gljDIaIqwrn>O(PN<{595EusBFFugR#z`}`LncU zccc3Q=!REEc~@6;LLh${*goFey-`cXIQeh%P?kwp%@B$>-;N0vgnh!S3;L%ATNorH z@0Me=Xb+{l*>P1+xN}E_3_EdYNtG8Ii{c!r|)v{(Tsh3#S-^5&VTxIGWZ|y}v4>%~7Js`aO?u?HoSH?j-s* zT(=davbUGHRdR*`$}LR~0{@`0SbmfRbBmVUIi{>Vh|K(H|K3UEq(IC{NPP??mIDH2 zUtXqt7B$r_?}`2uf{Hedzo$WYdhzEo@5(ru+0{gPgPMzxL<|lKOy@`fF*66Gz{;P; zzqhPh;dDmqTc;D=!Yr&4TqVY`s;@;%Wr808PjI*j-_=BkNRSkjlb`WVfv~#VZpKTP zw6+*PqJ}VY z&MvPr$f0~3IreWIO1)14z~FPrL6jlbK)`*6erLddSvz$+!e{C%uYxOMLr~+67ybUW zb(b5L?WySfoA&}qaf^&OWg?Ff;F8)Z$Fj0u^B8|F9Z(MH)3|nJu8r$K;?b9z6oDg# zz-il7t% zkV_$O1ZZU`9R+I0y`P$WtBT%rSfan!YX?0y(&(YPXm|R0Qz=os|Awzaol)Ufu85qk zqs&{i(~b7l9QH)Bz4G>R`;D~|y0UpXB3%U+RS$P@W||GXe;W{;sUW@wy<9R{K{c)Y zlBh6;2tRT{^DP<1gDe*fR`}!}4&Y5$3s_2#IEDrIXHgAT%3QCu?H<|H-+%6U{}$sn zFIX8Eh`-kSOo^YHKdi!h2Vliz0ozTIV(3grn53WY;q1x*KJy4 zb<**Epz=CLuH6vkTR#a4!?uXyUO;NWNylvPz2^sB>QRzGw=LS^B-pz$Ghr=1)c@+2 z&{ACX?8CE_W`%W8G?IwHB7ZGnqJ&E^C+sT!Dwp2)ofx_84+v1O7N{D_rIq$=aBSvG zO~`7qWP}_6L(|zG=aIt4#Z)rIr}-PI9ZmL#hy3pEsz7DeD-)ki+X3RJUekga#VU0K zz3Lxl_5*P}yO%{c&x`KOH^K#rDZlEK2Rf0Wm#iZv3D zKRl!1#MzvfTKwA8N5c>-MvrEF#X#+WjWjWxk&=lsinfY=_F4^XU&piF^wWFD%{4BM zqF!OjFaryGnklZEesO=Sp?JTFpCzfTmGr$qU@xYu4^|<%Yhb1oTU$EX*95|}sA?_G zff`X&7cvLTAItC?&J)i*s^f7}*0vE)UFL*ZTse2NXgTmR2eICuYPXE2Eb#cN?z@)D z><`aZZQJgOO7qSMnqB%;7<(w+f1B%oqFHp?8!BJ(fH(!SFuHYSO(u%)WxK52h$Dcu z4AT{~qdS@JEsz^wA{UVO5iKK^2Ctu}!NdY`PPl{|Pc`UD<)*BiMUG0ef79I%h5V+V zS{K8U0P>8S(t3M?!_9CQm&}X!OQD3aph312m_By?nnYG2XfWnK5io)P1KJ^Pv`1@t z;!ne;E_Op})Vhu^9ja|HZO%|evZKA@Y4Y_%Ugs4?ILasPTOMZ7>>@~lj322NQ?v09 z{t}AYP0|`zum7e{H&Hu!?=vOMF8L2A{+|y1e@5}|5W;^|pDb#uTYsat7weACPP`uI zXt2kAoON7?rg{UPFUW(2CRAO47zmnpj3FoAtha|rQbB`YsNh<99t}*5$|!pVJ13`u zbE~xWM_PyX$KUz4Y+mBi_2$ub#H)B0)?<@u?+KJtm~;|WovCTVxISJ+JBflZVwtgn zBPy=@c^k&bxYNgXYUv`^m(%z2JEJ(wPNw8hWj~+RYx@Te`@8X%RZ&;qu7cpiH5fPF z56@PJ^<4yNV@%T~|8aMa1Sy({^tX5QsMf_>v7+=kRmj{eitp3ASY+A&TUDJ>q zs+M*)=@pzEhpdNP4bNpXij73p9(^bbPS0lyw!t@|mWm|X)jh#VYEbqn(}CgG0zg~_ z`r1Gontud+;v)mGn8GB$*8}Ef3`B%eNa&y)1P11bjF_gEi*J+I7v{+7{3jq4)}+*@ zSru#6G-yS#$GDUQaGWJiD_|Cjrg&t~S}sm)@)Yoy;n|Pl z>JnOOJx&p|Fm0FN>>XBZ5q~fIGM_lJbpUd+{G3c23PY+fvFrSrK%N%saIY53L&bSw zVIV`H7wUD(h;9b#6V0RZxq8Hjl0~VX~ji+ZOJReV=d)Qp&!N)=tB^ z^%*i94%pGeCb$0dO{|^PQ#`MFPvU5h(*i4PS4OC;dThOLJ5kRJp2yY)E*1@ayy&u3 zky%Z7fS3X zm+Gy&30}%XPk|)8MmR`NVBc-87(48N$Q`n-(6Ls|>E+A;o|O8^UuIeO3feILq0zX( zKMWQT^qpayhD@Q0GmeJT#{?sO_bTGYt()a5?#9h3KE*)}@Up9}0B8ec%DR&uu>9@= z;k@0{f8X8r6ezw6tb?~L?;{@TN_C{~`SsAEC>UewQK}$AzyfJOgV}z5%z2-xYJ#?S zq=ZV*aZ`h?U{^T>m&;;9NJ0=LOI;Q_5(5atbQrN}514{79_H{x?OQdO9^~;7z@6Iz zVvQk;+ahR0zzz^v2TK!i+O!Jr#B!jrAa0h|n&{>b6rm_rE&;_8K{=}~3Em55!2)oH#fe65fJ)btb3 zN!!>1@gv>;m~ob=g6|@%l;UR3dON@QKlZ)-65&G&a2Z(v%U;(t!pgt+X!1nx-iv5? zYP0d#}@=XC@HSHZSxFubDtFJiRzC z`;h3y1d{|Sa%X-lgsjm4EtcE4bet)0V5#Mp29B|OYHe7Duwf)(jvON1m*l%X*5%!W{prRiNQ+3zKTil?l+J&{L`zL%+-vQ9$u;kiT7| z8^U{4oI~kMXu%+<_GEM-HcjFX`JhY=>(C)FaLliB^S#{whT{L!5Op>6q?U}3Q<5{B zTXC1=`^@~sb*X0JV0wSP`a{H@(vZNJEYf$tcun}3zaXubrl8Rz6=R7--vFQwR;Hj{ za`K7f|E?27H#?&Ci8WZ3!*cc~pVRL{af&X;n0ty2AfhTkuKp2a2M|#n-B=vXiCg%> zyi%IO@Qw{5v`JAWxXr32M9E2sCy&S0(RQrW} z{o6dmT*IX2+!r&hV|%&`RqzOW$oOb+w0>x+$6fh2fiB5W#1u^e3*7@O(U&XqG5@Qx zK%21Rrgc(P@h|5%5RuX?n!7qHC^w5Wl!Ae>k~k!g&w$w#Z`JvOxgwOS3jK@m`bTjx zn6yeH<4o?MnW?n@C&ZHS;?+M8nE#CS{SO3&k?Fq(Or!dL5Euf?$+T|*BRwCYIST>~ z!(=0_$JS&CT|=^1_bo$wb^a1mSj%l7l8}<~jg*@D4hpTV{_3Bc`W*58d^vw&?e3bq z)$tzH?)HlB{B-qneC!%=tn!TY`VN85sUduwQe!3JB!gGhN4s3lgz!3P8?uh?=X169 zj)&~$%jTcoSD)|O42xa?k$F75rBjD%=jA6m>V}soFw^TA7SsK}SAMQW(jmOY64a<> z8g>OaJLO*C;_5rx!>FX&Wy~gcM7iX_-#Y}m+H>IDnf5t32G!(==E)|tG5lF=W5f=lEF{7T5f3gl`tWmhMa28HW7C}KT%>38evJCJds>N>xJ z66Yyo=i@Pv>_DG~{nYZGboFD6dv~w)zp^DlwgmSNP+bxSD~4heaWl^D98uQpeQkYb zdZlA_&WPKfug{aKo>qMWm#$UY9-VLCgr z^4-1fdzHf*T-O(jOVJJc)<;Fb0sG<`D@3g{|tzP`ROA84Ny$5YEr`mnf1`tv} zC7QqVn+=jB!wB4j8BP{Yk`QY!wrx|6^<5t zAuFmWOu+(W0&W>`7nR@DM%mZ{@T?p5pz5^`!|YQEGlT$@MdlV!mku)5X0fYi+fb?3 zEF0A13?TcYFo%lU*w?-!nPG&5Zrv5caUy;*@{*VoWQj}UoQ9&rxHUX9upJ+TU_?|W zVGQArpzmbHm)7`B8KT_=^ZG~QLwQocKp>|2Y0u2Eeawh^+LAd=j4TlQ;Gqoelo(Pf znq%J6pe-p;gcb0j`(~JK!4sI>vDja*t1U&pI87lWrq&|^bX*L_LKm6V+?Pzh^PgPQ zaK7P*qy1pgL%M{h`dWpSi#NiCLP(=q{$n`mRg6fEJ8rdef9A>GfiuchogB}VP^Iz8 z91fS=u|~*6wP*%ai!V)3x}~iA=-~)RC^X4$81Pw)Bw<9iq;)au1p9AOE}< zgB*Zx1j;9Bt8&b==?9=_p(?dai>tvo(m?E1Y3YucWIGG8xWmlmn!9Q5}|&e z2IiK-CYP(R&8M@!wyBI*B2{XwWsBzp7WfT&fAj`Bkm$_dbycsi4U zCLG^|sA4@k3&f#+-{DY+#CiKpJbW>6fR6uSa*uZVcALx>mAf=f<(6v?cxf60$4ZpN z_&;plYER#@6$%YE$$> zsrLh_Gg26xkD5lFHs`}HbqW*RDGghW!f1G#Lv^%-p* zq1df~CwB2Or*J~_Q?i~6xhRfogZwm38U->jP#piVV2Pg)_E=6%@{OiGO-7KvI|vzS z`7QI>d~5t;Yk+a-u^1dXi-zb;WDayQ>Ov(!p z7nXBKD|#EmMKeP|tEGVV zF8Lv*2v=w6^g)Va_Zr2BETV)MK4q4yby{Lw4YZg&q%RYh0=c2~=8!dq7$Q{{LEB0!_881NK#wnK z-@5yOJOdx{tgUQkD?B6sY}7m^C^szI@47_)how0op1KAUrxdDPwU9N~qFIEp z$j0o!rKDl^x8IiK%;8>Au0zDa$b-ay%v2CQ)oWyz&bZs0TE802qFE!o}0a=g!n;@bu1IHjcGE@Cy+tmaNqvARx zhlumZ!VrFYI&rB?qb?zY3H8<$0^4L~dkzwqA;cpfYa12}{%3mCk( z?SxXfO5&5hP9+ln4%eP{v{4i=3!{Wzg7t`?r>ML*UZOWbgaI~h@p|_}i4oDIF(4$D zoJ~4n2)XoYYklfYMNqAkIK6uvm38ap+zXL^ekyYMXqS|o+fq%%$iew`-C94vh0cQ| zTAbipRb%70(}o%<$+_H`XkICmatfYvyz=@UDb)M}A^QKU2KdFy@UN85|MdxUek(fr zEJ$96F+MYjNTBTvuBe0Ohk7=`u+(xnZtG~l%e9$6GCu~kgfWEQE)M1LCSxaJe^`Zs z2z1Q-u$zKoHz8-i`O50_=Kg&DTt-y;e6)JJ?0-AoJUktJR*b#LI3;Y?%*eW?cKN!Q zfJ%Z*1WeVBb3V<``CNC5B&E;Cb7{P8FD>x;uyeoIXBp)u|K-9_dmbN1p3Po8v?(V0 zxmmvBv9Xo+ z{yKX5_>!>|IKK2(Yc~YnmyL$Y3-FKwUuU;na``M3*6xbdP^led;cx3aJ8!ssO`DBF z3|*UL-xQ!3w_ZyC@PN%2kGFTWk-VWRTB-;&jD;E<9KUWtFf=k>7T_1yp4ua^l;C+0 zpHvgrwHws>J&%xS8w{dqZ98@^l}T0~{EB7fWcdJ80d-0(JS#aZac|J9R9UX(06vb% z=SBH1cOcPh{0kKxlb^uvYnz$8Dhn;tU{j<$-_HoDVHB(>XEVel@i@&qAn_62Fk;~t zC9$HgT;f4|)~WX;lYU~hTZ6>9=8VK2>(d|jNqmz{X=g`3SwvVSs-3|z0~F&0R?kw% z#n5|9U(f@C_$e)%BZ)M`!xwNp1W$PbeHA$&<)Oz?nlh_f>_%wwO}psA()@BnH1j0F z(qZTXDI$-n;~9rb@TQN4?^g>eeiNGb^&1*72v~i0887F~9>c zyVIx}-PVAu!1oQq9#cA@z{=D~c=_TcFd-*~vol0YB^k8McffKtIU3p_v6f)=+#zFl zb~p(dWKNOwh<`!!cS><<97RaJSI|j>*L1Miq{;kD`u?QOepg!PEW^U*qrJYyZolGUdoTa5#Yp3{_mgC?>(3i$X&LHsfASKXiqC@493-BS_ti2nQ@|qn;O{Nam{53hJ ztooVb@CC4_G-~RS+l~T3lneEj5DEZ(_Z!(TT%;K4%6$p}zSUD63tOOzuSH?d5qeyt z8S;JX{WqLv(iI%M?kBj)Ni-rS(&PeKRAl^bRw2*=%%%RK)P zly79Xdz)QSqH2SnB%36Ge-x6S?Jo*E%0@m@s@Pf1W|?6Hz$wg9&Kr541a$Z~sDAl| ztaQz?^&7Fk$DO)^?7ST&o@XWM`m;iawuzZS4U$+kacvK-e6~CSy3-teOYSI-D}JaS zBaiGn0&?MPvXM1K-y*Vb=Xea%Pagr?Z$BHSPjIKrvf~jN>my^7>Kgj%;r-sXFYed| z9kl7I_G^t=T>wkFRixNzZsEtyb1AxvQh_z`LwsbjkU>b!bu;)wkPw^@z?3t2-8O`J z@$Va(Re8=zq8CNpQ#kn~yh_OK;^u?5x!j;2r@Iab`MzDL;Nl0WJEL75Z0lZYu~~@hQ+St7eR%@OqTUZcp^(#yAg1)j?Okbv4OwG(o#`M(?^N3{wy;N_>>PgUC z_Us8$N^pb_p{C%)844u9#Mjq(fRm=G3_)^>qy;(UQL?!xuPu$AZp{KVIz1T7GqKIA z!QPb3tHD?~iw7A?a}LWBKt1%8=qhdyVKJ*eRi| zm&Y(G(gOhMG?NEBAdkKWescN#?Sz|JwyzaI40F2!C8|vpU-Os_e>@AjwcE#0!dkbb z+T1u{w#9e&R@W}f?NW067m{z$B z^N(&-4U1J8N~Wlg#l)UIxgn9frPXaNEL#Qsc1-eJ*4# zG5`}t1`Zs}IsX_vmo|t9JQTaGk|DTiw^@B>Z8{{CI%Cn`$M#V0e1eiwM50fxmkU$P zCM+RBq^DYD8?WOB6(^lF>)}X_7f$=+!(9D&N5jH$c0;3rx(R$NJl$`X7Sqh7df(cF zfK7Nel>8g&@O9X%YLLh^GsTgOJY6?K~4|aa!J;J@37GR!%jzb&Jv8m7kO6 zc~=*I4vQvZpvP!X=fYunR9ppAHg@_nVDzVUZqQvAaW*8cLd6U}Uf#Rw@7`6JX z`*sIKM_=;07-$gvj*n#q$X*P`pDB8HVcH5E`l}`$|G8ple|PUq5skYR`#Te-ioUJa z5rgoP$Ug>^FR(@x>DYbYw)Rt(Zuv2F$hzKY6M9A&PUN}I$AUgpBmNNn0I^&ztXJQf&gGiO2CK*x6vJgnzriw= z)rHUE&zOWm0O;?&>keoxo4~y?Nu0q>!WKF>UF3}r)8x4Hs*fo~!va`s#|UG3m3HJ; z*fhutq3&8sNEe2iyIn-k3~2s`S!4RN6r`8QUUC>oKet zf1ucL zX>~L`zGBJUyjt|jDrWnZTU#G$pv~f#G*c)=LjQ#UjTAN6m2Sz@ z`EdP=&B-1`aWWzhkh}3O-jO`{LsTG+btndtgvpl$BT5k9%^l; zwQC~{sy+-Ebe(K}x-I_;+~4zt;c=J{oGWpgCyA|ZMv&Mb6yS8<7DH>vw(;Yxik&@vOKsL3XA~kptL>kEx&u5HPp|aF5<(wr)qQ~={Ul_iNF{q z#suV@I>^|+Q{z)$mgt?Xqr0oTCfuj#!WCpB1msF;H;mR%NR#U5&R()p$Z3#<+iLQC zhj_$KKU5g{?b@eZj?Jf$SS?wTcfPCQdO;>g+qDM-!e@*_U_|-t`I(FpagZR*?m+y6 zCSajnG!WrE8gVlaQ+E{{J4m<5k#K*j=_M2{Nq~XOa<`;x%)w5CBtPEPSQ+TZl(0}y znbxn+F>>ThQqr`FB^E$|J#J~nEfJmNy(y4Y(a|9YhrAQ!6Sa|4_!*gVi{gi~*eusn zdD+f-ZHAJi#NLJcIf>CRbQHo=b>=ToBtZcI{<6^xH)XQql+}v+@jSEDx#EKvA-~S- zHG2~k5qok*Io=wY-Y=w+oOt9WKqLA%y)N3%D-FTNWTYmsVkLoN4hAAAxZs}_<=AZ< z@~R69vb)~lY`s;xAX!AVX@zLT`$)t5nsX|wQg0XNMzBf(7C_CYU6ce3HaBhE^IdQ= z=zE^c3iC!XT2{EQNG|#e$tmK;qGp@}Z+lN15~vwh6tPRc=foj^-E3noXU;5&MVd(| z3{^a|XFa#YW@}$GgI{PTN6Z}P9=FzsC?-Ys^I(zG=43I+7bfb16cG>URowq8q|rc1 z|5@w93^3pix!L@yo~ZA5EkU+XCf%qW;w5xfb&oo&vl&Y zwG2R1)?Vz7oIFM>+4oLZ0b#wk=#FPBZpjm8ItqG(5SD|#s%ay#jK2kH!ZZsZ&-C8? z3qU(BlE%|FPa{wJWyISC8({5TXX^Ga<}4*bv=TcgYlaP10^`s`3Vt5(<8!BjU#un? z*Y~u0nEL9$wwh9Rh+RzsZIt>DOP7d3J{^ zy4tzxTjUmlZ3Za*qzlT#$va+JFXVU0t`iyIh&6kik&*It#o|tv(RO#d6e$Y1A_R~T z%u>(2bK{0l_m?d=^nf>l+K`Ytb6NsrK0x=YiIq2h?{nAEwq7Okb zSuUE(>2a>yOg((EGk(5-^06?N; ztB7TZPr?waJal@UF7pZ})gSKO5*kRhyt}*II1Q{kH{#XWfx86x0KNvRe7ZZHEqQ@{ znr*@uwYb{9Io&rmZdO$c!c8DJc(BWy8+C(CH$R@<8ykLgt*?zA0Y$5Qv|w$@To`>< zwyra4KI+RwS17>c4 zuz&}DR3yW*El zUhhQ&Yl&xt=ZvCR3-8dvsdAtDcdWO0zc&pE$kk&%;e=`<@EeT{*KuE zSQqS)(q6tB&z%8KeU)pcxCRH-UL%(tynM-dbAkD2ulMmzN2mt!hNVa#@l(LkCRKIa z7Ow~|t_pW~Gy}a6B9+~>euBS*Fk&?48srnEkD<_xZRCN_mavZL)cN>~Y{X?7CuS@! z|5+(e#|B~`+GQzM1uHOtRUQVGdd`G6@`=y~XnO(Li{x*v%JH7wZT={T3_L~70~Iht zlqHKfLPX-UfQn*YaC($wf&fF~*sw(5B5;(_womlk`~|7$bO?g)!aGQP_ro0Rm44M- zpb9H~zVc^Ge^+#4qsXRFJj!L%urqzrCOU<*f}JwHO|g3;h3z@6=0^3|QX_1L>E2mb zISeSN8c{>^Y}(nvTu27o-i2ezcErXxINr}Fr?KCtNJ2O}1~6Arx}G@-MIR&RrAQ6v zQKW&gabhR<`IaCBQ+_e=U?|l)8tYnb#|vtfy?dGYEo3D~XmLmazW}K>9lQW>6?3l$ zE`EOD*3zYgSPFawF)t0@Q!|j$F)pMP#Pf|6Z&i*&#%$KG;0c)+ejZ)ai=bHeU>l z8sL2Q(xDO;l8(D6Lm0*+pp2;<>z7~(_?xefGb#@fkdaB?1fVapo~49(tvxEv2Hj z0z(obgu*Q=+~sI(dXvFF=A!OZ5WH@vo+fAs&xs{g5}^4GaBrsHk~kN|UOo|>PEiuy9_8%r&AMi*e|}i8UHYktP2j2;?<{vPZKIjFv6g7~LO}4# zK#7<&5JX8BI9(-l<5>oToF6NY4>AbYnix89#*&h?rj6AQHUx=d%ruJx^@y{#mnlfk z0OJ?k<`10IeqWDfD~rhW{EQaefSPsY_3X({Qf*wTuqM>VaAC}m>XQ#?DIjqo0_%jN znR*kXnGr?$Y;eY;<_m#mu&V=Yr#72T+$ZVwG#a3P{lRlbb7ICnR|RF^USv25*C-iq zz_=L>(mB_bHo45_P)>~1n5~e0UBYswL(#}X5sIS`93_yq;wgQh=LRMyACk6yzRB2* z(YC+xav`eHWKN6*!duF7R6d(;P;0q+U~Mi~BWs}5FiJpeh+x?w-Z^uHkuq_MsHH&4(t}PR<6I7}ZX|{vq3tL7~abF{IF2i^EVE5tmXK z=nq>Ntrx_#N7x?-Cz_#Y?Ln$#i&#(9<|<%hW; zS8kUADTAy;*iCh30z2XbdW;Xp-L5YJXl$DI;0N8nyDO(#4aOUklPrI=g| zzdEFC-px>eaxsL}3bJJcWcZ45cs!;goacgBh6ES|MmXeC4u~YXqKSF@1zK$&F901U z2(S0&zeOOEL6XwmojKTI#wBx1`Qv$%gka}{6I65tc#1m2>Gz_AOk@VyYo zk|k_AE=6Su?j5IcZec-)L*#-5mAT8r!-v9eiz}dzMhMVt-3+0{2%*%;j?8f`JSq@+ zk@3=wBcX*M3I1UrxXrqA3z(mHa!gCSYLAc1jR{1;mNR@^C}nl0g9dP$P>r&39k*a5 zx?cvCe=XV)LPTv~Xm3hx2Ig~fZdM2_e0hVU9gA#1$`z|wiuXW)OM;}3l=(n8X^B@E z`B3~os`>tt(lR-08t*yB0gxH@WfEB@p;K~A^v1@R?{2usZ~M(R-}vADVFF-;`VN|8tF#bJ?0@@*)3u3!2W0k0A}qp-+PcxF*FfhArP?KcBXakmBnx*F)Z{ zEBDX4sxOB;a5MB~7IOlGAg|BY*jgwQWd1oI0+*;O&x{n4^ZoQ@?TL;_D7fXAOJg84 zFUW12FGsl5XaVofXmsLfB2$PiFGQ?_tNUJ3a6g4E19%x<5PlSVv?R$@^q`f|m2}Zm z-;I!Dm1f?!Q+1mGIr@?S>10LJ%?5{=86<5kEMoE zGr09H2MeUwVT8;Kp^jct(iLTKZIN+t%Ek^bGz-rh7Iad1LV&g3U-iHPM|Xqw35Tq^ zx}|#7;EE|{CudG+9L>$rr!VQk4@|!4Qt-MFG+=iI>l=yI(m{fpWqat_?L~~#iqTTv zAseUrN9z~#mojC} zCuSYSw6=mm_uzOs@a-p!CtFB~1x&BsB*<}){x8PPDM++nS<`LXwrz8_ZQHhO+ugfu z+qP|+yKQ6oJkFiD5$AEeR76!|RprY1^ZTjWSam#p!y% zc85#6i^T4$$`I8S#9h(iY!5C3{S%)i-qUGZL7{n&ZkX`}H=?|u5 z+QUJ7m+;NIrxwdDuka<>rKoJG%MVDjSO zidNPBaTAr=2!P>u@=E~mP#&H4u_NwyWL8n6rBy@0lO_;Qc{@_u_F#7WQFYvLzgDoT z5HHk$A6T%i*_=j1Neo03VKjC-zi^p?4JvxAqD?}nXfx=1`)0N2xJs79`?*LXfl>kXD^I$oM3*TO9od9eVM( zv_uV9D7$+IGI>GlQ<|_X?fK5p6!}q!q&Y+?CDd5-Q8ix{=dp2%xsV99ORL~qz+#cQ z*I}(9|F3ybaY3^?WfPeA2EYu$@YVSf3)JFn{_tn z#udRQ$sxf7^Nh=D<3IZ>SY{%ILgA7Y%(^&b0TC_Pxfm{s72EGsfs8FYgX1p5Oi-wQ zkR+9wp8ik}m($W@aoy9o270^zsLPlYlikg@HC`b+j@GMWr@@4n4~gqq6F!Cot9PoZ z90kufYujv>4n0#+BaM@KhX9vbSTh0m9D`oaTskHNkB9aVR0t|FMuL zZ@bj?HX_HUb<`d1P z%1j1m+F;bBbpoy#1E|{?)E@lJ7nQ}G5Jjz{kCi9PCmkwaDEP49ISK|tr^^jKXo<8d zoA>E zeqJ9-Fbz6U9NkYglyY~vaN}POC8RAjs~sN%n!bq^q%O_ZgDP=r2uM0_dN-Z= zAwJ#sh?g+ht=9@F4QDN9w~nSC$98tbZRmCKR2f>s3JW4>+}{_{P5WX@QaK{=GcWRX zJrtK<1kQeRuDPoX$<0vk$|IaTAFe2$P%ZMwVYoIQ&y@=apsl|-;@T0c zLJ4nlo+-=!-8Lz!TqR#C9OP2KCaSfT6|0la+`v2;(0w4bs zDGx_H#7hOCLCEL%MnMa$O#d-nPbg*)ocFt#iKo7r+aSb+5|sCk7n)hmW^QaWqnDBW zk=E_z`g(nSag%s|cey{=-aMKf-tYfsr$MA-(0F9%=uVKd^hKVe9if~-lE&2D=7R6@ zDpjJvABNoumh=dho!Lk;YrgMa9az%&&H)GE9WD*PK4MIP=gR7v9qnF!y zFe#$V*32ilVmWOy#G!Z0M>+MF(kl)oeIAceE-Ie<*)Ki(G1Lj0l0jvZnh$glV1_$V zHD3$?9rQQWOs@im&gVV4_6CT6tCu6_0Df(*5W4Kc-y(NII3*?N!x->|N23;xWIO@> z++_7;$_yHY5GC&t|BfLIX(nogRpa2J84OGLdWE>U$v(!iT*MK5zm2AsZ?dTQ!Cdsy z0aD#`KdGb!3;>cUI2(Xwb?AOPu3(L{eJrf544xT+wO`G5Is;SgXY3li=Z=kiSA@30 z?r{J)h7p`lsqFa#!T2a9Kj>xpliGBV^#OX=(^Q~ese9^)PZW^r#xYzSm~hjl=KH7% zC{|6}o5Q@ypnF36a}b`3tStiS8g7QeODZH+A!6}fA_mbg`pI#>-QM}K3#;n;%kDLk zCsZ9C@e3Fvbu$pn;(nOJ1yjOSzaaBDKL&d6DD(6{6R|+YFz)LMek1)tk`%F4H z(G@^7vCwSJ%HM14(J+{H;E?l`Wyqg)Yjka1|Em2qd(Y zD|rOLqOz<3{MTtL8CV7)$XsPAfdYqp)1VllFiDeP=x9h2k|z`C89P=c7pvhJxka%O#D|g1SVr>y3^G(W z-#*t;TS+KRbJ7aTKa+O*jO`iWwcl3TDOq8+MIZhR1J#H4e7dr_v=OW0aV)ylu#Y+k zOAHj#Fz}dz_a{D-I)=rZYl9Y6oLoZ_WRJ|Idhi$ zzu%>YH;S2Otc;Xhh#4>irZMY=Rx*2+FjJ94%gzc=M0OSb2(%>gKreyfu`Yj4=O=3i zB@NEr0-4HBRSIfJri4&Dh~{d{VmcH*XeawnLjy*T4g&E09JpDe8b$j~i52d3g+0eU zB_JwuH5P0|eUgcr!5zXx5d~jg!jO$N>$$)XCNfuL*7}2O_5FPnWEes43t45Bel?rJ z_eB-n2n|^QK%(HPvqycbdybleB-?1CT74p)lu>P|3Zw|QtVb=JZ(=2~k!yZdH>S+; zLu?cK2yYf0WPsTlMv23=r<650KL-@swA#fdd4R4_F^C*IzBKNSFPc<5G8yDeB@x}W zNPBJYVY^7IBt%N8OaP=%QlCeN7nS{Z+*TOkM&S&V7JshWKGSgj3u%F!TtCEYiBwc> zso^s0dbUN?>JBo;7$ro_L82qH@HT(Ws}yXQi*WtV z2`5%@s+*Ii;=y3-j0&~zL7UQf-9CggSVNE^P4u7cNjtzli3e@-Rf8PnXgDqJ`vLgu?|Kra*-R<~;^Y^01`O;S}x(NsyY zLND!;qL;a@X)$cmTzwRb|0?uuCapn^6qW=2#CRo-w};`|NW$3Oini))an;7h@HONx zc}kzOY%bFcmO*CxqjT%jJcAO{uXu|ceRoeYZ5aG~WT$k~{z(lPMuD2&%esHwu>*~@ zV|N5b#VT6XaXznxTY=b$T5GkB5?QpnL!!h}SZb}!l)da2fNTAgAIweUn#bFrWB2wH z7K$>ll z0Oq53@;O~sB_0ugg46;}R%By{woK}{bf2GPPy}~n=F)z&g0zEZXnbB#W3(($eS(Ui zfr(=a;0z0+pZ&(*@??;=v6tuPV52EaDVloMyC5duUK0rLa=S6PLYf5sZP+;_RPz-< zw}kdPB^ywgR5mRFijmGXE;kg;kd|r1)=8Z=E=Cf4>JF0bsBO zpSJC$66&1dnlWc%chgv0bpW~tj%YE0JfW{$F028jhvuD`82smrtH_Ia zmyf44l4(3$E#-tjKtvTa&K>^d@D?rV!w>ytclYQ0F1Huu_?Hts+v`o^>)X}S@#Cd4 zrkLL0uC1##UeNSoJg;0(%WTfCe zwjdN+cV2_c`*)b)`n!ZyF-$JT@2<}WraU^HaAY9%+sJOzdgYmE@E9cg5W4QS;N=*J z4ej;j-PyeQZ(Mgp@5+R+K8<{9=l7N3RfQCLzWi2=@&2*2`w~za;N{;#cK3HMes8Z? z^jrgyD42b27Gfu{X?KfXj{dl9=74!L17gNjpz>5;Q%qR}BS9o!{euFRn}$z(A?~+h zUC`&TR$vnFT<(>P<`~c}@8M!6inodsVJ3oa3@UdqSW|I46%*B)HLWtpH>?%=Xjab7 zlQId8)Ot8GKLcYiw_`RVveHO68IT`P%mpf0=(nktV^d12;#~5U)%*^~lH0s*k2w}5r2U1Ej*{Fs&26W6Pzxr8F*T1huK4Nv} zEmw`1zu^e!2iFH+y^X;5a<30_VIjDTjl`~6VoRw+W_=I6QX}!IiWG-(4HV} zT;{HXn$P|1N*pJ(vOBBDDeO-%CYWil2Trj7|s zg7TRYG-x=ZpP5uB&mEwLmz0%S5GFHFJ_zg}=^$=~A@`D;d`DwIdEEk<^QVHDO|DET zDy}W(Pa?wsNMPE{5_f(ABGb7uoc+uFbQ=^~2UzAm)u}UxinVAv=vF21jjK|E^bc$v z0}cmdSvW!U^9hll7RWy;_&K=V+E=#N57(#m%>xQcLAee|gcM^1Ry z+d&ETv2ep^L^!7clm6tPAED_vxmxisqh8 zKxFHHc_Uc%NM|$42!w80!Rmw$b2?p@M?fu*S-osiwc|?N_}L%E<;RwYFBVu2WEg_R zdEc(!3VVqoNwE?iG%4RcOIP^B&k5?a;8oW^pD zVhC1j$Tl4|5D`BpFX|`UyTb|;96-VK=CCiK@pV^Hg;(JyB?@pa zdeKOL+3J?Lu$(U!6!FxWu7hl-`=^cX|F1&v_zMA=`(rgls+fc4Io z`&u4hn_Av({eq%Mf{j=!uaN&l`=h+cMmP!ajO5YiJ7eKk_F~u~>o1|oy==jkrctjQ@>%zA$dJK;fcWy`Z%Oa_$mk5Gpzhl3$ z+q%o!DFslxF+Bs*oYgi%$T-!9ePq`!%MZ3gaQX^3n?EyKOF}&4=ClURJO5-PtTSJT zg?zUJ8FvZBcQm&}eCFW?Gi8fraeNksgKY{(0n;cF}$7EOI`&lW4r z%vErsk&SUtytVYR0u;W{m10_@$D^tLecG^ZgWJdS$mF(1Za=mbdwfhki-r~^BZ*at zU1eCpC9YV0iv4H)!)mWi5!hrD?f@rW_E&yb_4jumB6bt9UmJOx6aR_}5TCjtCLn1H zjz{Vr<_6)48E)x2wbc=DiR13$jk}h7HD&vu>5KIV*0Z>46scAZ)4u_l`)&H>;FDm) zwZ_YirGJn}#<03K+%HX5J^{rA?GzEH;(83?PRpEL@81Wm3+^FKN12AqYx>t1!_Y9l zh@`T8&IU%s-?mJzHcB7yEJS%N3!<8~Q#I?vA(X7+q3SpfGb0Au*ZTlcK}G#sIMUOw zy#U8Xy6GOLa21c_ugFQ%3&rR-<^5(jvgoW>h?_Jgb7c!Y;r(#e!~d7W=f4ENa{fQk zp8o*%I1swQ$Nc6f#r^4seIpcG&hqg)*Fd2z30qAK+F}peTyO?m7an)hgf!U1>T^;W zqC^1t6If@nO82L*6W8DPe}Q|a_`6?Ee3QFf<2yZmY2DpCd|W?;W5#sW2|7DC_~SG$ zeoRi1M-#@f6PNebuN1Rn&TkK|XNwl8*@020 zy=)})srY=0LB@$b z#0$0K##b`7wKJbT+X2duI?djK!59MK`5}~wkP(745%J)5j~Qf>=~LtZDReOSL<g&iw00bRKEz-yAVE>@nIxUcS4@sxz1@>`uRtQ~m7PF3T zieu-w|9)GESGK5fY&wE59sm$eK&DBG2hU^L0iSI7D(>+pr67eI0gK9}^;uYmtW$fa z0FbN}NXqImimTDYTw`COC6}r`j&U7*K-P=DpgrC?itEkwO7SyxkB0+9?E1Ry7)szp zQ?TuKG8CiKSStWrnC-|EJ<+qt$#}wmyk7N#KVB6;4iJXyd^OP3edB#`L%>)AbPZQP zZpMR;y~yZ`W#K9cE+>haam_TuUp+q$q(BoKxI#O2hXGSyVy_vwdNqf5UIUjA^OyZw$g)~Om$u+_h03?>r5Dk?ggde+c^t~^Sf!Yt@-*WusHSvghsO{JSV{W zpmGR>k_tNTenJC|*t%OG@Sol`4w5w)$||cEcuz=>M9SafS=Wb59(?4DkC#=0As*V! zx1Pwc>{(m;b&}YDRTKHO`^WXIgV3SLR`H6&c!&K_tFYwT&#s>PjA^qePp3mbQN++l zJEZ=#H6)cmI$zw^A(UWNKtBD?vj|||z^kcx@reM~0P#mC-?ZtM5;s1AGc?Mt_Lhs) zf-&B`%wUh}iFJvBr)PJ+t^I1c=WXkW4Jm3-Kf z+Cm?LKtS!NE7-us!o@lIi#EPt%9{~Y{f&L1YXb_JHTWXcknR~Z?u;A+u4dLYYafAk zMsE`{=GDyxyA;9}nVRzJMFO^8ODw(K!L=l%my-u&4lG8?h>zk7D~|W~mWuU?IUcws zWVu?WX-J`20}+C-aUf|yX)h=U9#0YAC?U0&p&Tnaz*!Li<)zh>_c}HBDL#1cAeHZG zdkT|n*zp0TXt+{;x6wX~fL4I*Usv97rLd-9Jc_2MF!ZE+rb?shR&a8YnV%ttRq)Cc z0u|I@Rh`WXVT6E6`9yeu-Zx-}a7tuHK$BX(fTmP-_J>7Hfs3YTM-ls-%U0o_lH?*7 z7C!G0KpEAsqe2N871(_=@XJ)|slv;FY{^Qg_hURTL0K}bA0Rj*#EJhi)`;AZPp|7p zW>>+T^SJxg3`V)Qg#$UEihu}1ERd%#nYuO?{q#0vUB3{NKU$*7@;ghiQ;WPgUR9XO zvF*^*!;GO*s$rF$+;luks`00@;;t1L zV!w3mZByCHLAzKydY)Pl)nZ%%L;Osm&gO;^cTX)q$WuNpI63BI12(sMa#sG6`ZX#K zH~3LhvWT~xs z9^4x!d9kA9YT5gA0!02f4_TT?k|4kyoQNn;tBYheBjkQ)F%m-vnD`qHF# z#L(4Zggu6BO)lf=@be{ZIf6xnCs`f|RACd5{0bB1EzUST+?xcCPuJu7eb`F!^+@^l z)H*v}n^sDW{zHS5UC|{@S1Tvy{7dc2P8KaDlaj1Xn$&7Ld-*wQ5?Ae9Ok&ZP|D}iP z`SJ6blnbAN}yzJ z5V1`$LE;kUDWy!L6G~R)6-}i~j~L=mwFBHiqjU)8<-9P?BO#RiUNO;QAjD9W4Te>S z`AFB4d(aJt`Dd_yd3U|yIz;0-gi6zO3!z0=GI*4lkN=(!^c2Z(kdtydvv}vc+$em& zeYwngyTEk}i}h&r@59t~=JfBQ`E_~-Mz|$pnt4P<^%*3u5TUOStqQID(T=ZDHW6E7 zrGvO)*-GrpG-VIG=cN)ewl&2&bNemsezoCdykt6Ig zvPw}i(qUD;pHRUS1puJv6(T1byG`und$Ew5+;Ljn5~rEP0DH7F~Zm*Kp1fXHdxv1lglS$O-f z?KLr7{S;{HmkQY+2Xk)z7_8zr=&piUKPjo&nU7qNh=$-%+BzK&1;Z=Pq%s@ZEF&p~ zIM$%yAJ7C{vS7Gj0hif&C^dl3D03z789cW}G9jdKSk!$aaaY@ziBZ)NX^GLpc$8gY zv7GBKQ7^u8Lv_!tQg1X>q8#ph7wUUv<4iA*%EWTErD2Sk3?Cv%pw$_fipcp*CS@cM zi(~e6=#sK0TLfi-K&Ui#Tvogmd<1&u8qw*}h{Bw2_IUN6A=|kg&lnYLycs zMwk?s$EJUhYn^1w6Ph(Ipd|P!Nf3)znoRr$cB`m31;Y)Xnzh`0;kQtqe3j5DPpbmJ z6(%JX*Ndj`2_}D((YeW8Ozs1F_zapZoD}2L4Rk#NYNwfo0GvYr*mXeU%Rm~alw5pZ z`oj17A_H*ThIfFRDK>y`Z5={&r$S(bxh9)&Bfz{?g@a%N$Zhf9ZKc1)g@V%$19`5y zhFr-#>hirDVTQ>6xLV@w z`|jcn+MG)`S87l^RzeM8hY5fvQqVR0fd^EKZIXtJYXTH2VVi9X3-PrIB$TT?gn?Aabm=qJeu4N6enK+dKWw?FVI792F;C<~1cjT)+V#NdL;_%uUw_%3)q1B9h23$E2q zsBVBr2WXYqGD7_wSaN&UafM`z+3A(~o&?^4=@&ue{MYl;&vzo@(KDlTEa_Hitr7PZnl7n z1mMHNhpp0L^9cH+jaHLmUk&?-Ni>Q!j7%d6B8oTCI(o0a9_9t#w*}$-4ABbJE*N>M zp)aMJw4&*0LKiKbWJr#x7E6zV4XtY~+{;h?!kz65Yst#q4h?+$H%yzJyc!VwjOXnG zNHi(Do6}=FRclh z!f9^lfa9&Huwnzkiv(zCX{6X%3JfGeJ+}eu|E7Y%-CibaBY>azc#P8`IUrIL%MhZ( zRvV=!-r=F0FtN8I3BvLq>X>gwhergL{7ZIl5}5-rG(VR{H4@@eVw%b@+{Ui79)EJV zBLee4C%qh|27UDOd029B8Qne7v zk-XiQV_@lV`C8u8g8-5-O6o3!$?ToxLvoun_v6ADyUYxW#MfBumFlX!Y8ks=V$uUz z6ovGzX*mlICYkEi9!daDs(w6478wfN=#?_-BI*!H-?}-YZQI?zt#@mzXbQXEjaO)3 z;<4$WIaq~Kk2Ha-vkH9b!5lDkQGvrhH<>&X>W9XBBhCD$3;Hgh<@(T|B(|7Poz{6C zv*xgLP>*izIcwZ+W1noeeV)h}sCd$mVku|dgT zlznj*G$$>AU9;(+B*whOruDK8u6fb$U|tXaCiv!pOB6IqP3NT>~sWixOOnw z>ebHZ0v=+fH4YBj+Gk&y8^H(AGp()eDnPuCF1`VB_Rt0#XWRHNA;@ki%_c_<2S*mpAs*15sh|Gzrl(NeEj4sU zn1uBlj`!ACXZvln3{;9X4lW<0iG4PVSh$r%-G|dy>6iQU)yq?JYC?AQ5sOTg!{5FF zaxQ4!0gVE3Ad&1G*0Qe2x4D}!=c{w+E-elwGaUyr0na7`h-9$wb}(kt&AjVj)54$e zU@c0IpUaJ%KPYI>Dvc7Bm5!RAE`(&`w~@idPAibr)eb09i3jl$Aw)5-P-qiULfFeQYGldHWqt^98C!e|(^gAK73y zZ2ON^-A7zuB{F;E_AZ%5?Ym$|rC!QmriG?3x0k$c^nAc{gUJ7IXd2U@0`~JK2R#ku zt#wkRYmL6WGjIMDdErP4!7$q|jNGS}x}mDge^eWgG@+4YHxWbb-*eXtRcHZF=5%!C zu~Y<{1fUK;`}uJv;h^@pg`17;*B9rxqW9yc;9A1B$G_G`A}@?6PqgPtU15+5zDGp>#CV& zqaIoVv%4{EjQ8}oaHBn?)b&Tap}o~=C-|qm>4l(ZqEZM96C3`=18)aoJ86maBh@Y90`v!OF3L@!O>M?7C4d*6d;|KyCiMf|unXHRkN zbM+M({EXdCUlz@=89%js0(5WN`XG-C0DN^R>B-4-j|kPE zz%g@i1V7O63O(w6*&cZh1J57+!w8?m5N8bH7o((=4c zJ0s6B_ljnBwi$U9ap!E|bOSQ0Fr!j9^L!C4?nlCY@S@^Iy%P)WRlF~I1vAt|z%6GH zAulGaA1wO`tu(*!DN9s`ZW(fndP@_3Pdz)Zm4KLH78CF59Ji3?RY2l|IbDw$7$TRS zcOST_nOCI+_6{g)v_#t;KnaJ;tk+Wkr5;yWJ2^TFEwYnXs_@@E?1bRVxaNRMHbLEm zRh!$xZ^v~=+Z$6+VdGAN8`owUP4R)r-&!jdoJ!!5r6N@Bxde`ZqtDr{9FX3N(l;# zCU|U5J_jFFsp*h{iZ5mi!D4{Wkbji7)SkH&u{%gQ=OsK$Tm`DN$XS0(z1oUriolrF z9Gb^74J4kEf%vhy8w1pxIi`^hEmiTL!tqiY3#)S!EtTlW$5KiPL|pQAMy)JpNRD^r z$%o03+7zo#&}Le-bp^Bk2ZXNeF!5$!b$L=${ssn8!n`ADdBK_!K^2q=pp`J#r$X~Z zIiw(gI&6zx)ClhH2B_hjJF2-o=G3fXF;j8WKBRBwn#FGTgZg$th>qwe zoH_EjjM?oNfm`|n)~H}D+p~R$&6bMinw$qvm(RBd?3yq8ntGtM)7qXOB8AAkkh!8F z23^`E*GWB|T@PCVVdTBj{)Azr&3lmQp;rZ6`A@-?G{VL(w4*M^?L&{IPDORP&1zejQH5!R>s;KZh_dU8X_9d6@qPprvJfqN8)^!g;T)s;lf6qE2_uYiG?%U*B zUizvexJYl{v~sTIi2ImEW-cZR$^3^v8|2_+%9ISzME)>^5vQrOf?D+iDt=mff3vOwM+o$CANS6%3RR~f z;{`&~DDU95fDN08tmx-?3AD9Ww_OG?(WpRBlcFW6JRh`!O~9^<7PN&0LvYMS$bu(` z@N_WW$f^poQddxNmjQ*ttCn{xrkM#EoU`L+wHlIl{9C$JjYO6S+3aCch1}@PRe-xrflWNh(VTt*Lb-W9*QEU#(i=gedD5 zAn2bDYf+@rs7j_s8B{dx9llnbo$%Z9w3%nPR{oBjFEpW1SNkH^vTeZ8Hpj0i!M`yj z6|fAN3rkWcU_QvsoBaEAf_%*!%(y{Fpvos;!fwZ`S}lrQ?Sqe%P-N0Rinc8 zmyMe%5;J905Ts?Q4M0cJ3S2dW=OECk#p?BO%CQz#{1Vd3#6~rDBvp1k@t__ZepZ@n z&Ni$!_K(7wC4<F07ufpF_JpKJSMwUN8>>eRR9M z`!yhbI3@=OP$EeUkVqnZc7W!?^gJ*c!%mK);(6yzY5wu~y1yMvW->@GT=><``gy$_ zfFo3ZKG>6RLJ^rrd@~t65awbu+%be;u3OusO?u_Obqkh4r}2puz(!{Jf=^SkD+qh<&M>tX=wgdZHQps-~-Fa;sLns)qRKgFeXo zia#+=maCZ;uAEoU5A@R3Cj%Wt?RwjAXOF`a9eA5Tif6Hic*VB6v%kLN1XttQ4E~dj z6P@c4TR5}7FY!{b4b+}cTA;Y+A^kw*O6%vX4$}LmQ6~$VVl-fLg9{7lrU}wa;oO{G-rVcM|LZ1jHVcCs-3`I zpgynaa_A@pR3&f!G7`O&c}M}k(w49Fj;Gs0f2#pG3l&E} zOfa#>CRcqW0IgsuZlzTng_xX0&Q{2F8=B$~HjtXxWwGYiyBSZ@m&OBY%fo+FJfCBh-3yqG@>0AA<-)H*&Q zI8`lpE%4N@fcu$_Y*8$TqmgAxeJHe0u=GIZX$El-ZuT=A!^r-0!K2TvQqGG{VZ201 za=`4}qT`>Jh$eUOxTqXLkN|%o6c)07y!jwmP872P16Yd@>lcnOi))Di{`r{C79DTC zu6h|hwHY)~kIF^ny{g(|3-otT-+k*X`ZJR;>mfcFBk{oUJ-R5zJ}Bc6n@~kaQJq`% zX9r|C9U($vxFzaG-!<&C8&o~ov~9x3MV^1~sCdFuTx#a-u4iaK}whXVT1SU#;6Gec%Ws?cx zx|~93vd!8ugmC_PU6GA?D(9&er$fecFUu(FJ&YGtJmQe)EnxdU3+beb7mO;7;#O&_ z3>*qDyqK}E_3V&G06wS>X2&o-)budMb+WdK=gtRJbesBKr z#TFO336y`W*O5oevjN@u+@Thru0hzK7Jx`UP0I;rF%}lQ3Fw!5%s;e=@C0+xIRG{> zLOMVFLi6U4j-yc{`m`qsvYT$kW_vs$ZBL0l*wkn1?UJS~c4zkfCJM^I^BzM<%T`(0 z&O`I)51(KkKwn`Z=x$l%{&cy?C+00JCC4@~mhhrojT`cFK;*PDdQ&lQK4CM(h&I_C z<$!8$G%dyo->iPp>;i9m07FfGcyq4;G}W|R5}QJS>n$o-XY&Oa zdET(1qn0CHS;jro+1J)yiPbp;rL;@qM;Pws9FIL3@h`%g5FDA5*wy72y_0Q{^OVbW zI_|o|X|MsAD$Vr#>(_|cvzAcd@_u{9zod9`P9h*3G3RKeU?#^~fZIe18-gs5@Rbj% zo~I3b3Opg{@K9^Coyi-9V-{zPZA#U7o-X^h0k2qX32@Y5HtcCk(=pD*rH~2d3PnB_ z*QJ}@e5n#LpivkVEJ|9%AbL)H$N^dr`dG}AJ@nF$I^6Jh#%^puKx8HBBShFA8fZ)N z7z6fNS@(nBsz6cFxNqc}M&i_jqbcQIPs> zl}K6pfmrzZ9vNl_qe#o*?S_Fy9=x?(q+Au&2`Fj{U%NBNZ1JdWKEi&Rk$YL$R;5U) zfPnAp5i`T`SLG>HR%B{zF_7sMNXl;JuK^m#LMqF@d?b4K5C$1jbPtN8Cm48>`Y%9u zlW`5)$zSN;iZ5-dv@HFAbv=y5tW|xHI#KH@c2zaaMvukrE6TA^Fq|&)$gir`izcZ? zVDnN@aZpu#yL!xHd>s>)E+c{<>M|jflkNgh4w$hMd_ai_W?{(A2I}@L{yB@KXVUO< zWI-cZI^Z?|n9e?UP#qZ!{_fTiBX3zgy+#l3>@V{#*Dc zpTNY5JtbH23iU}M$ZU3R92xYy`{ZdY;^%`rtJbbAhzKu;H5?zrhLW=oAd|C)>aI8iT9@S7&30=V@@?-E5JQ?JE1pDgStX; zoGmQ%_>;+7RB%?m*7Hx!&O`hF9-!?b+BFWUw-%90Y4KbGAa;(Q)5ezE;fL9TL~5sK z+*p^4SSkI)q`hd|Gjv?tn*5pqr`6DHCMF#O+A-DIM)UGes9gQ{@XR(_)+1-;)*JY(F>5XGZke~&Y8>g2tDQ!LL1R`yAn7U;Yw5WfWVXRLe49Z^T?l>i z92E~lP`QKnK|mkX@SXkB74pW>`J{(HwTRHQl?>ghD1~^VWx&fOp%Fc-^;psN;nK<) zi@Zl)XXGsCs#^V!Y)SRQMl428d5x6n(kOqEV|+?XMJ2SDrB+8i0b^d(?dSh6_Z7f# zEK9bMY=MOqGcz+<%oZ~zBTHToLKdEfkpJ9XeY#Z`-u6+7+QX*+L%#ZP`e!mf*zCh|C?i+#xZ| z%uFV;6|SJSb7h2UBm6fHP=WzUpvVp%HG)0W)!_aM)jpF8VHxaJ!~}YIHJaI zs&{U-#Sj^O60KW38z|%^W1BARJD1r{^YVzQf{1rtLQietCywuM*w0ONaq;bm`96e- z6?*+SyI5V-{c;>zil*I9(>bw9dzz(t*?wBr)a4<8r-3`|?Oa$nRX38Y0wIki7Oms-R)Q$#!7iPNcq!59V-4NTkCTbt1~hrsES8-3{K-g{ zh$C_uR;4{C6=3<%MI3#v(#&isJ*W8Y>QBe+Vw#`C1Fndd?|X#CD4WV62hI{gSbbWw z>ID=ju1m;v>qQpaHjw!PspOTj{LvOWynQQ4OXK5o` ztR<~!No!ILXnR889{dJx&)@+Mv_eV3S;nuvU5T%rI_`S9#rKW3$P@*53dn$2y#|PessCd59Ud9W!>0ID(w-WLaISo(L7Vrs z_AiXLJgC~?XqnF}kS!ZBt7W38M}x772WC3$jH&n^=Y~ppR!0tWhcsXuaN5_4iG*9! zDx#oUA}VPl+og0{)S4YA1UwA5npr&YUn*l|MYe`qt4r~6-Ji0HRgrv;rAU*p#*|_R zX_v+B+ejbAbZ?hSLfvT&@~RfI1@x*TF%>>8WXCKd(8@g*J9!9DjQgjs%jHgkb$68t!{})i3;LApjFbzt=RFbt7NW zHq)I$YqL9;R)$XLv$$vD5$75=Yf(&RC`ndqYRr}$HW82c^7SG*#yF$D(cXkOA20qTiBw*hC_pK2-9FfHE|6-v_R=~ zV+(tDXKcO%Poh3{jZmG%shb=hiLChhYJzIZfANV}Gm{dL!l^8c!Tst0X7z;NF1Ty? zFYeKQ-R?xu$pG-d&X``x+{Th#!PpR>Nx;TQ$IeQ?#KJ_!%1pq-#z@D?0{q~hV`kPS zpcho+=B8IA0KO*SX+S$?B z0&`26m|Gb;(%b3V89O-A+c2|pGSZm=tgR>sfMY2F9GnaRa{3O&HUI*SpQ*l$ZH#OU zEa0FSS$|Ct{;&BmveB_K6EL#^X|w;%{(q6L3^NB4E1jK@$=}dr`teo9Kj{9NPxN2X zW#nX_<76RVW?-XZ-0GKld;E$2xvZDI(wmFtc@_kTy3o(>JyvkT#UkcQQ4zGPj{5pcis5)&~HU z&o3a-Am$*3APyk5AdbM(1Oxz53PJ#)3d9Z|MnJ>_!T`bu!u&@k;3Xie4=|<>=K8^n zft87!0q9x=CRzp-as~!+U^8i3qyMCZoP({AlcDi{Z~A|VK(=2mn4edttbv6hz?xo$ zfR%xPUew&d5kSDg!N3TFRsdrMdQmGNX<=hSTO;5<1jaU|05bwsroSduDbX5?IR0jz z4%x@IhoE7kd=83%#{soAhh7iak^zp%5sXMuf!k>Z@%&KSE$ws&2qjYPTl@S$qnKQ^ zxqkW`$?`SrmnQYD$Vz|h^D3M63AFDm-MFoT`k`+Y9hOM+bQ7fcF)D4a>POi~t!4B& zJ@o>4vixYf!!qq9gI`wbhMq)fwO}6(R9*u}t(|sTnv}PB7cI7V4`RzJ_|>3pb>YwBPvznD`dTd$knV;uJhFz_y!y*;CUZ{qL!JQ!%Vk8e=$l z$11JH!nmZ>?~{7B*f;!`SU+EjA!zX&!a~pyEf@9Td*g?_{*9uX9^zK{vo`E)B$-XA zW_8=}Z3(JPPb*3TW~Abd3HOKu=USS+K-ij=o*uBsGV!}H^#241KZ;JJMq^bQ)INa-82rLRz7_5BrN%2=%bAyc!dZj z>LDVh@#T{WJ2F<%+t-4xFqI@;onyG!JI)W85%~0mK@e5ajPv^?7-Iz`RY|=<)_^dw4~6k&PE#%tR!cdBM_jFveFq|9q6@Uh+imRzas&B0Y{M^(h_y>mFqX{o zVts>xjc?=CKYt|{tE9rurNst|CQqkz1RXKo#j}$MZUxZ?fTvBn0}(-`x-xmS?wl zPT^B?rNu)W-J=hdKlQPd7}`G`7Lp&@K_(7V*H8pA*?~EVu-J~m z=@Vz9a`0|S$u#+nfJ9N3^4BnlFJMQY(|)qls!)`aG)6;|KIMMdT`+^%MiGczRzbqJ zl@zL5Lj%EDZ=TffqbKTpV2v2;%&!>0zvqMrKS>lt3u7LVGl6-GL7Pp+k-n`M%8P5C znjOevxOrol!N5a(NNC_2%Y#bRdCXBcCSJqT=Jx$p{)DC8($TwS&eQvA!rjtOQdysW?OHNkH56n9Rfu zp*EEq$yKAixdqLD^!{pItoHFUxC#f1NIBSBe&j*e10*90vm)V;8Q|X6<(=}PEusU% z!CDk`{KVzE(6{o0tyt=96m=8WXRqEN_qFjA+hvFB!R9lK@z2$jo69@DpRvd&XE*$A zIA>@~w2b{~(($-phBeBx z#>Lr`Yl_$9pLPe;hT-PJrib7qF%y$>RWQYp_th{HF+q%w+gmE^OOO0sQEJFarE4ap z`c-?RxF&=xqy_Vd8k*QEi(1o_i_Z7#NOUm?j_FqQyY{x4Opqf z*{iEP6$5h!BlOr3-iO<(n-NOVXejBs3(;}Rl+^U@O@X=NJ8zVCVtm-+9&ECs}VLPfuebM zc{OcVu?hb@g<5WoLqAHg1KIF#rfa4^8ceu?(M!|5YGwtw8%?uUmt#u~LVoBOl6rwK z%^}F((l+f?J}MCkwFRlw$^7o5u9`eG8{a#5tB&VP<*qsMlOft39ZT|&w=p=d28XX2 zz+$9oq+vZI=%n4Zm!j5X4Q(5keXB*$rXx|N3O{J|H&o(xaf&2p7Za&YLCa&SKeNq% z7DKD1fy^a39<)PKh(Zpu6UV^p!kV}m-k@RtjmIG;DH+#JH;u%}Jd25K3<0GQmugPB z$PKj_k~Y3p-mtv|x=dq#xmIjsE%)jDkt=7T90d7LA1DlE5cTHP97NvOyA>K3cVumoVHrk(iilIIgo|P*An;T0zV(_Ivy)csc7M!|`VyM{GZ;aUF`fN_Eo< z1iKivn)&b&j@?xLcM_?Qt_eZru;To_$}#|}loE#pL(+-?`^cIJDlwuRC{e6y#aGV# zf_&>&g#Uu?T&YzGC-YlpD zl}SsFih4gz#zqQmT<%fzN)7|Gq;Haj_cW`3S5WOpqgE)72iD(t&F8 zSjYkyyRiXdZ@A! zUps`M2ioGw$9W^RKkG?h7r7c}VF3%kCJ2Xa&3qIy@+NmhNFLi+MF@G%hYi>ijOAcM z8G|iS=jNjz(B-yut6eI4uFYYXD!tSZr14CkIzv3nXi7k#S`v&9+}J3>Hp~WClM^lY z@)>rfy(`JaDM}Gl#Weg*7IR_QPy^K#p|Jt@8$V8ul0G``{lUoofXJ zWX~G4>F3MtyF9*^6IoqX{D)Pq@Pb2MC<1T9r?X7&`%_8(w`X(XrOM|Q6JK4(6#E^B zsM7c9_?|oYv?W&>jT#aj`{~WM&^4!JWQDn|Bo7w0vvgOIrAQZvTh$V^5*`&Gyb19FbuGZ9cM40a3`>0MqOaM^EnUxzcm&oQh*CCkotvf@bq<(x4v1R;O;e;zU3SOl zE2t&r=r^(NnVZgX-dgm^3I=$ocT2(|JWjw_WY!nok^;MjBx1-40~=6n<}Sab$CvsV zlex8QBllou-c8SSCaKmFnjw|4K?-Q{Bh=wdk|O2nZ(RO-&AAYwYqgbV-1G%`9ECn> zlQircDdGG($*HsNf>;2x7v_|?S4w@pHfJ(Rx8#v)uwj#*aTE8?uKRl-x)4rWJ<3ge zUO?ic&P`p6IvZ3vTkDhWhOE*ODx3v#lD}HwSO(*@kuH+xOtxviWOgb_j zX1}_=$E7z9L)YvX%xOyH(wRWg0r(|Whb1bmNGmpdiAZGWk<|D_H+8!6V+A(A#k(|Z zG3o$E!P{P5I**w>V>)oTpwc;tbGbmFZ`dS_JdaU5H;DXhbK=_nswvIZzkTaF{H{~C zn-(RWs#$ORxV?yj)*Bq+Gsf?@#3SPq__RmkmAJG6@-dM}fG$HX7Y@g-16|wE-LgU%YUpuFP*9zTbY! zZGQXI&uYJy(p0!wFw$a^YpbpJ&FiX%)m*un+dcB#P9g29h9+3jDtMfBF@ivDUDY>o&j8Duk8(c+nd3*H?j)$bp_1LE>$6o!MIb5XnxSadKtRgZ;eZlN~!H0bxVj>!)k4Iq>(wGaC zkY=MD2YT&8(&nO(ZKIH9qc123dn0hvg=Mff#S)?&@2i!KLU8u`qOrI7m>f28{Ah4F zD}&Ow0V8gv9uj>_A`yVCJ~#&>OwMz8!Gs7LZ6O)VfcR44-MA>H5S-(_aqO)OI|nPjw3_*&7&|w{@w`1lBkr9XLkteC z)tte1SSdNq_{Il)ePZ7^H;z6|tv6q@>kw0$p3Zc;c`}d{L0&w+IV5j_W1hY&ee`vz zmop1uf7cWpxZ-M{(!^%TK_^9@#-}!jTy-B__2rz9k5RI0xG>Sgv$X&|?^8A1D&BnQ zvhyL|^J(tPisz8g^OsSk~M*+GIOV0`o5~*xoDQntxzGdNIzAo_n zK~~UWBya@z%eVc0dke=0h{kx?TZ99N!r#3_9y{rucUNDWMbsetPG`Gj{VyIxFVHoT z-;~H?xe-s92zIj4?J7)$PjSb)!5uYBIS|*#`86e}HPkFGW2W7Tu>TZ8cxk z22dP_G&8`>yCw#TW}-hSoFI+gC^30fakjMXIjf^|KCkR~^xj{TIy4+=J}91ufNu#N z>hB*VPEPQ>-dv6F#)(~o{HCMt#y(?P=!7727utV~DDR+8qN}ifX}#m}64$;z+rEEz z8FQEJ)I4SixL-I;y7K5fsyhI*@;r3r^G*O77ZRa3B6+kRkHVA@*cYAtBnt6^TxQ)H1gVlc(YiSpwc%4(*(Cg z^GEy&74zZzWh%^YLp_O3SG&e=0ejr~o~pW;h`FD3zp9RW;8(NZ={;@5PBwiw$U~3x z@4?P0%GBXT`{ocei?N?rwM-Zok+BIk``)tREzg&4GT61Fd@c16o{Qvk@P-W1T2>Dn z0vbs>g`Gur$offp?!3M7nIB3{@2GJCzPMC%F=y`)A|XV(1q}(saSMMC1T4RxM&=)I zEn8BQLfkS_p;N(wXR_8HXIs{ZMN*u~y2h zLr#_2B5_B=p}pXJFTSzq{4R$1(p8Bk=TSD;zTn|FB>K!t+t@w+erg8Un^uJH zOj-{`UzVG$hwBXQjFq3)s^p@hUGjA4&PKlJ>@i>3yf}cq^KSUKT4?w5&G7biz>nT! z_}S;$*TvOHRV;Kl%Xqo89zJoU=K55I;jnz4elR(Fz3SF{(3E-NF~l&6>FBw#eZ*GT zE1IiygCS3;A(|`QSja)5#^15wMB+g*f0;Be=GCjOr!u%AgS?1egP-$M^LWQ)u0~6(qz}3j^PLVPHn!B1t?MZ9(^cb{#4q{QzkF)hX1QE?g-_GU zZqz_bbMqx8QRd{Ns(^4>8~Zwp!aXP?FyAex!>NsS1RkLvJ5)kT=^)!-ov8jJqE;Ui zo!M)2wrm*easTkW4pD$U@wakB?YSU2E8*Y8aQ6B_T61sF*}DAy1C&E&oAQTq(ihU6 z144MyII%a2LMS}K8-xl7(I0|h0)LzR8~iNf8+0-s7?gJZkTo9>yZtiR+9W&I?9e zhICqE<^|IUx2ed>Nsq_%1Fws=XTVG}DY5YpZB9lIG^U0DPLD;nI;;*8o$n1YD~3k~ z2EA`tSV8-_h0wiuph6F7TM4?HB#f5Qln}%xdKCV%o)e^v^sU5+E$=IGr{c zS=Nd26JpZ#>7?uD3wpN43yvrJ#Kan%9zQsd0F~3EHtF)s3nzGGunAcWRBAoqm^6lQ zbP2{`gucdm3x#SuYE1CHH;RS~YA9iYdc)j#5VFHf076Z^DWbipAspISZOx;jf@I*9 zbIh5;K(?{%DR+1fnWjzMYt%xok4ZZK{!D&JGFqY`oX&-sIJxguE&J49Ge$A&suN)O z71kI*&CPe-h~GQY@Gqobj@6xb*@?Sb?!bw2McZ?%lqAy=m^W;KP3VkzfWCJeMvuDw zU;+{olng4q>uCZOGh$ChfcqURifa_)eKH%QOCd_C@4M+bM9s$sGu z+w{IIE4EdGBtX}$rA0N zqemx>2jnsin2Z2O%xdbzB?Dta8uO;`WqRc%I;rg`nE8=RHufOoV=$k(97qYU!m_nK z0pjc>JRw|onO&ocV9Dmmd=Uz|feH8EWbDwz;gFdCNcG?o{a+P*@MeQ7|_E^TQJ5PsCQHk zFlnWaj<>%t#ss^8h^5@LX@Ol~BJ&+}JTxvRsqeaw?|HxO40D0|TDfOAxmbo-_Qzse z>`64XbGgi#M@3X4Z1y_Vl+LOwzW zA(wSoNpSe~RXCWIdU>u@7=La=eGItvKra+P!sQdVZlZ+00(V+K*1Ts*6qvT@j|kWb>4PPyk8>e z!5R~Vg?^AWkOQ|tde#3nRP8KYd-xTC!Dl1YPl*jg4P%DW<}O;U!Qw3o1^VtIA$%ZL9 zg184@zaNp-xOfcgW@(c8nu!_JGQ=!fAg|6S3?*=X*PM-PiC&|MF3x&belu$8(o}{1 zKB7qO8YJ6k_X)}KRENa8MV3B>do>UJefDX>$3&@B&l{8>x%sZ}_(EwjcFuf2EjF(6 zr2|Ip#EcE(MeSlPIQe@W=Uk!?Y|1jXU~EqMu%aTcodYm|>iA>P>gilRWDb@&+Eu0p zK;NUU14Lin>raVGeCea~{oeOPx-y5^8BABJBD|D5Nkz+Bc8GGxFpf2;qS_=%Wb{D? zgBwxwL{#rx85_|mW<$dUNU*rDaK96MVG6#!6Bb0FQ=p19Gb@nFCj812JY(@R;#I-& zPQ$##lep})fC;@A{6L6_SPa3%tOM}z2;5+wp%xlkhl8lbO1vQxG52ZBAl#Nz)A1t_ zo9tnoEwY6JASeL>jn;}4>FVXsCE*6Zvqx{wLp<8g;Md<3nn$6;PQ{7b>WaDgiqA<}Sd33R6nYcIzhX)h5+$Cbb zr^4&;(w*8b+=OqGzsJ8BD7@g_6;OYDHHgQ4tlR-HK(&+9sL3m$IJsbhd{K=(zGKFo zT|-r*FleP5u#1!FjgTyCsjR|z!iNu76t7k>M%7I&87OQ>YFtLKu3agdF~}ITQ8X#4 zoa;FnOnGF@R#taHsd}gO+NhQa5{yYRo)a|rGY(Xrl`{OFqF126AwGQ^QrYI`Hz{Hg zq1!cgmJ6SU<0u1TO&EqRWNd_uMeL}X7hqMnG|s}JPQg_YBF$v|j77a44mPbe9V*PK zbk*p1(pq~-BoAj!M<@q}`uuR$OP<^;t|WvtV{FP{?+4X^&&f+94$a_;X63^eRc14A_{*wAqO3Pu{X zfbO31x!;5uR#Kti<`s;zY+lO=c!R5ygAs~cGTR(*z2;mpgZ2v%Kd3l0;31(Q>kA;F zq3Y`+qM_@5LPW#V&q74QHm``z&{4Dc(k-g-&xN{GT({_l?kUA&-W=jf(sqZ1aaD&bZ+IVwRsAewyXHrUbxsXv>+q zsT473m-cnD8Yl0V1GjfyBk_<>pAiuaMPD8f4Nc!35e-8>8W9caCxiWc|NmeQjUV;^ z8bwv=pX~uO&!65nWcj7?!(V^6=4*G)Z0*2)aqD(mgd(R*r+rGqq(fTmCIBbTQoA(J zuUlA6&QC-{P0g=cL`~06L{!bp?h5&>lde=rC6NHCFx%ld{P_!sCya zp=ASd_~{_sMJyT9C)zwf+JHS)#3UdsVY3=HZ<9m&(1C}9hOEPfh=!`8gNTN%1B{r4 zsY8&MhHb)tn5X&g;`V2>eh&%$X_;S&Kcmw%{ZHfk9=|_B^(U9xg_-{|zDbx=_a3Cg z&2vZ#*kr-Y+vc$D-RF>*{icQRCN#MGGgN3uc{x;QXn7k{Xju6e)Xxi8mj0(@Xn&aJ z&*HbMrOCkHcQ5^P)sN!Ot5zrPkHG!INB_8lTWV|4|F2v(n}C^B2Z`PSoV;}o>0WbA znMHf9h{+ndS)mRCA{vU0Y$6((jtwFjh7KZP8kP0(PT&9cUo?1O2h zj#=vEhJOp{z7B>arv33!byv6Lq&|A0=V~DueV>ZyjUc0UBl=LqJ6iW;xA4$Kw(I(O z+nnxh!&D^nQS0k^S8K^fgNJi0uZken;@fG3reLpzd{)6HxAUDLhH~dbEHtlk=+KJb z+VXPA13a`riDBB1r|gDFh2n^rl&yiA6W~A1r~;g!%HMywA{(4dc*a~`Kc~^X7wwR1 zxlxm4zF6Ky--N1@_6Uu|rY6a!dZ^qiwJ<=WZUV^OyhL9g%winUxoAPlwYzZYWPp14 zV2`fZ;AJmJ|460R?i@8Xa0CfWr5E;2eRmJ~$*IWDAEcy#ZA`zS7$rv!zR(XMaKG9Q zN?NPN4>~XYLRly<$GRrq?Xij_9BD+wG@3;9fV7~#zSE^#_EX*U*e5uDxadQ@ zlwCyH@{s~&0K@P_2ygk$3@TTWVU>;j=+5WkEZ>G&vaDCwJ!H!@CPTGR4iypBq#D~G zmem7P7FZ=r0h-||m=GnRMPUYqXXWKw8fW@AbtfMAtod-eouVreBY|84lbWALz5_@L zwI@{Gz!VvVm+xt=N~*z950@utqQiw6ld5LB*t>9Qyf5C80A#s1krpy87u|dcfegb# zvp$sW=r}Orp(&2g0fIeZAXt}BvedvY6=wbV@MF}aJnHeOZ&%wAmkeyzJT%-?HRa{y zD2#I9Cx`-LO3mR=6c&I;C|?WI@F3qG$j^cZ2l0*clZpdrAzWLKTK)m(D8zuoPJhdLNiIQ>VEL*V%v=6R7ZG_nNe5Wi zxQR$ri|gmgWwRQJNGTZtt4a^uAxZf?m%xH71(k8!AT(Yuct)SvARB8ESaensksVyB zQ}|?mo8`&Q##*fuQ&XB9T1abmB_o34!h*wPd|&46y% zbs~~^>|$%Q>}i0yZDh{ud7eFu78~&TGa_v8TpqYrnGNF!n%O1LK@6xW4IYMh|SLHzR z+GdAGE<%{#Ycy2mblxS>c~yd8AzT%rqghh7A7`gkx7MynZ}qOHt)ke_dmA)GdB5>O ztg4_?+(}^1=goqZe8LJ}7V`>Np zjMBT5K`0RJ<}FD^dh`*(@AMuc?dhQp3c%Soz-mTC@3MYKn!&3>BA$u}sL#a1LqIr} z4XSNCK6{9mUo2kgJo7eTp}Kc(;6FH9mSh2=1m1YQ+teNs?sm=?F=J`;0{+vX!ai2bhpD|!vR_PiYzQ{w zBIl{U`mQ{!?s(3*M`pTN=XA*uD@UxHEuK{M$TrvZ0aC;QTHGF|EUJ`03eUPRx^?FC zL@_wZh)RKEjmrx{uk?5BT09gyd3WK8T2)Z8LG(U}=CL6VpuNq3ewfBU8sQGbFAdqL ziR^<*sq-Gf0GxiRNZZ-Td3TcoHyBDgbVSw3F~t3ph-ad*$gT3W0_BWlC}esTl2u8+ zH3hLcr8f|B!Wxg?WJ&)*PT$cp>4UX40;9UU@aWyC5a!G|T1`_}YWB5B7|KCs`oWVU!- z9GlvDpHDx{y0qTqlq^11FMEFXU;dMM*8KJ{_klseTnVEv`NsH$9-X zpHV4cE~L0H7RSbt3n%?6%=ua^uegv;X+0IkW+8#inj4-nAu4VDo7jxfx;lR`T67>l72vnZ|M6tgI?Aq%r8HETWR`!6hnl=9*ds4+4AUjT%Z`r;CpF);zZv1xFP z{@r8$%Liic%cT?j5^>>Oja|g>ysGJ< zVoWRecZ5w+%D8Q?!DsT-y8CCavFF|S*#|Ez#l`x9S_ew9rPAA!g&ygecuB-<=Wf-h z9dB&!qK%)GS;6^w%z=U2Acv}r543T^sT)*@L<7emWxNqynI+e3|;t!Pm~sS8l>wbZRr=LIY>^y)s*Whvj~%VBdi^^02+_SFcWSrxFY z%kPl05?^`~Qu;_OW78dO)%M+1p+VvN_+xyy+OsijB6Y$dr3#zT-A%hz@$HNeK+8Me zJ9BMD`$-tDDF??L_a{zN4~YYu&8pE+-um$om^Y^g-P83aH+&C~=q{}<7caNy5dNX~ zN1o2>d8wH5_EmlLDGKjy1@Hx zJgSFS%{lzlxo`7A{z#OwL~Hwd&QF{BJbLzYySby<0BBaFQuBOn zZJ|Tp?wD9qveRQtb3*qZJz=OA683DB8oRBUlhqJKIo4bf4}tqqk}yHRVw9j&+C9gU z!Syl&vQ3f2Uq1ER1MZA@O;P*BC)>1KGO#N(9KI*CDyg$KLzO zU;!pR#|E6+hG*87=HTwV1U%dBjRrhht>v#X3Z$CN3OA0eT4!sE-z*3}kUbJUSi(HF z8NW(|YtVa@3FpBUX4uKW7D0^E)pB}^;(_Kt#Y@eL&HIiQl9!x!U3LwDYj3T^_kr#V z(i5j&kBXt2JB@Eq2qqr^YgIO*4aq>>cbD^sx?CHQ zVjlZJ^tk7_#4Uim2I3JwS8@c$WYz_Iy30@WN1L@Q-#~agF4w)a&%VC!@LU}K7U+HS z1%-#;z*ze)fS}k{+^}a1ZJi(pe*x_vkgsrH?HJnrKY^jTzf9QK_Q=rI4TAnx@n4y> zcfLkI=9W5R_#c3a&e!P3T2gk5?cKkE|KX_rmF^c^zfSlkg+IE&aMPTXw{?Oc{O^N{ zE--W$EgHLuw(eiS|Gx?U9Qn_gZ$Ey3#CSG&g9Z&VAZVOb#h{i%GnVz|L6}*7;xW_+ z!}H^~(BB*(&v4J$1ttT`xLdN`?QCrxbNo^DcwKYBIahjF{7;A0e#3-g?ykgWdtjD9{3DT)8{D_i*#%ZQ;$-%tR<1C7<2R zIlP#^`Y9gnohAB%>)(<1{6+xThwQa9RLWZxLNou*s6HxC8vh2Y<*RcU8t70!&Og!@_(Lw)4AA=k4>jE5DfPp z>nS2Bjo~=igRTSkyMODDUUv1zgXXpq-k=IDB8kv!>)_E_C$no}Lij-^zDpTN^}QD9 zufRS}y?&Zz$r8VXPzEY+a_>j#{H0opvbn|b zDfP$&&hDwV%S&BdYs1R}+Xv{w#GTWt&c%nu)jPgc*QdM2m&f+fr;ERqvPeW z6J0N_mmT1avxBW(Pt!%SH<{1dxpfoXXSQX-or85{csiRewks|7r->>-FHf_bsq`<8 zXJ^~XqxifJ*Orz_k6UHl4XxhpX^3~ngQF|l-1jf7FWt|cmoJ&EZgJKU zt=@oR`AF^S?$kux)u->%=&LOaz0J=ji)AnOVuvxzzN<;niQxs6HbcILJyvzrQpOKG z+)h?fg1bGij@G94^}u(YDHa=X?A|eRFONKy*qAz-u*xT@pema>F@|UwTRko$U7&cA zE}bh9e~@sL0WeWBbxf|>_99!ws~Ef+y@`RLtvWmBOWK`sX(_C1nU+4UPG zZdr3YIz{LroGV4>+YU`?^aE~9>huFwt~EMwi|01Y6gQjOZt{4&i&xp)k+X*)^Q(>h zxGA2Y=tm;zE4T+?szwgz605jVp)Ldm&vX#aFz~^Qjd~94uYK-b#e(lZ4?#x3+o=yK z)2fzg)jQY^)KJc5YI!*X_oI>}#%f7BboYT1qx)+iJ1qAa<0m?6&D&q~bYr8NX=U2O z^^jsDs%shBlXm-~piBCDM{fIei6ABlYMt2CbfUtcvuIV@4R<)bNhH;Bv)gW;21iHN z;k`esw!g*&$YB)K$^_@V_;druCbFwM(unE<$)O|;A zXAbhqxnW>F%BM_DMrM7m5N?ckuTv|cky3r5qy-(`qP|0W2zcV_^r}!X<5PHs4yew) zFLA--7bD(hABm}+cGDdEs=QC+#W;Y_1qi3JdixtL?Qi%U9^GM{8^B){e7vpBmyu&` z8*|~j#j4j&-RLrt;>4C1I-k9H*@6cgOv&{hw_e5BfyLJh6u+7kkcP9c7*Zzqe9=bw zdXgZnhi^Ng2ar*_MJdIBJEXUEbf-kdtC+_WIpW2eawmX0-1V6!bF^z0(w_GMqk2~; z1%HZA8g}90y|jndTXNP&0e9X~V6)jD&E|hJGx^cXHx+-Web{g|XH_=bYBym-g&HgfpJ`+;cYt^)6{3yLrE*yDUW^LR^+ z5C80O55d(S|AjPk00p%di>A;^}n?OmVYq@Q_VT!2To00CW&sgTu?B|>rnQptU2n}ucLVn5uScG;0UH(s*jfY=Vz}q=BpS9K7aU zCv@-VMmQu&AsQYGYLO`1bSW`dV#{wR&Oi1{KFdwr;>T>uiIB=W4Yr)m7}yLNlwzR|7snEmt1JZ0Y%d5CL1yf5SYoywgsqOWvOROr zJ*IwD+%onh>o>Vh*6eQK57;cZP#^zQbpM(<v2 zeq{&Ee|!`PA6{{Eqi_HAdgxShjML?Of}HQe>%$i`8(A$TN1fB;V5dy5q*ds(di$&U zc_4E43Z}&07-x#mIlQ29^L+Wt?R(dXGZBw3}2rwdsUa!$}dvAXYUwegk z*obzhING{bd9gI>u_MpWp$igWqf=+{lq>6PIU0FB7U`ou_|3^uwUqOF;1dD}hWK4D zi9qV^9fr*dPF?KbjBU#$xhC@9+1w$>0{;Ej0)lQ@di)cJ-OO-OLW^1FLHzQKTH?p^ z=}-`W*VBL`yIXA$e(#fR`_omZYN_tK^NNSwSLCa3Z|}!@;8NL4W6L2HT@d?MZ`W(E zeQ%^*m@y(uK;oSEOTk}`*oV%d7gZ^ay-^;wSU^2a#cxfG8hWp{i&mE&Z!D)B{r&4H zC%(Vd(lD@fY3HPBYPc(t&EJLJ+NvlcqAWx#1w~B&2{aY<7u9;@#f>)`)PTd@Zucrl zfWfM1OSCq*|;_#vjApv-Xw!N@!52hN%z6IE~^`f zc_|Y@h%L3d*_LIL^b}?3(MTvLjt#F4zYS(dsvbJz03EGZCO7Edgy^2hG_W~fA6 z78wZmNz)u$p&}tozpptZf`=lhq0XEOf;6cD4`2npQ<4cwPUTAubj2)uP=z1fbd8&A zx^)0vD}0rH+j)go8QyET-VxPt#j!K3)}eOYeiTZAKiF;FKw7^_Hs^CUX{RaZs8Q-m zK!@tqMEthR&1SGQkCO$i(l&~;b`w_18#!@#ZYH@tE!22t^InMsyS8zegR>E97Pp=^ zJ`)yRD{=grU2AKMXL%FcVm-u#cD*%;@%bE^7Q}n?;;OH6ceJPzJ?r_V)gNCDb*K^| zcAs2~f_HObG1Pl4&n8_GnQ1;eTnju{gYl)@bX9LYAb?MZK~H#rh+Pam1Zwd4w(Buq zgiT_1TF*ZWEC?9wsWG&%vvUh1~T0!zUB4(0zsZ8>& z&%V4Na9c~%I<$F`ca?*_mp!`OhmwH;tgWqCInmQ{g1xws0mJuHi=&2OmOpb zyD%Vk5}6&fohO9$OP2P6aSy%_nXH1Sbx74Cpue6h7Nv9!5bn4dvdRVHXu$Eeh>VEq zixzKiP~H?7R>o3ETwyTM)vlh03}XCLiiQjrvwPy~Za$p)-h~XUOae5|!H@`SPtO|4e5=f4 zwL9D%we$f&$8>pKt6h$jbLyF4{Xu{;XL7b!jzig^%WU-7&Yz=a_?|b0Jtp>kO{fdB z{@DpgC1U+6ry9VK?GR9%_};&qB=T{&NmhoW340#qz&N}zc=ILp6<8Sa4BREtmemX3 zFPu0s9L33rd39&JVmwhKp)VY=h}#nVLBvw=}_ufeWXq+Ac%LsOi$EwfKwp7OsgD}R(y6}@NQeTu+33Xt~C(r1QqP6n1 zzOc&tZg6VKa)e4b1x2<+jy`Y%6%I~Cz8&Gm!Y_EA9r4FtOg2F_sO}4WA~4`Z#w92) z#Udo(CB<(LCa9ueqNq$De749p^YQ>JE3!ews&X|E=68znK$t}|mBPQm=vMeD=HF0{ z3c+hYREy%3vI<$BpkMNpBDP^(ix`#r1x)YW=|HmOs1O-0io73I3+_JSNT5;@?Oiv*SCy)hTp z2J9~R(}8k}ZH%a{1TLof;VcEXuKbh2x`M7m4<`Pw=6yDcVk(#ec#FRc?Vi{)K<*W0 z3f5rn71R1b7ES9J->H29&YU=5AA{?m9(6Rb`Cw>vY!>-7g4$80g>*yTV5-CP7TN0I zTVj#JiCBlRw#fuxo`sVSF$it8Tb9 z&aEBTj{I`YICk#Kw?nKIdcc>BGVGN<5p=@6P?i@hJGixSQn#L>}nG%M7-Y74E zs^o=!3xAS*@OD7@i9IggY?t>0>gV%ABAO8f2j3u_5qV%eGV%t!@m@^x!$_2O1H~71 zLwPIc7rrs`=5E5*_3AAa)gwNtR@U_;uS)E++@PJE->{xtmv;ltIqKu zN3ZHL=J{p5KP;Ea`^UaLs8`7Q|N55{EtV0M@PAT1o=Q~63rP9CDV{CFE9Lp607?ML zhyF{_0M#D? z{$T!1l;;=l_5cbfm(TwR1SnT7FCggq27I>gten@K_xA9)Saw~;?+N9^ zP!PZg0RR904*;AaEa3nAA29@^0Hyv%3KmAomYMUWecmkh7kc$8 z@E+QM{MY}Bjea&Ck8ecn7KX%g#VA9^MI#Y>-;!_1=<}K*i|LVClV%LKFst>0SeSgU zmV70=Z8Wb=v@0A7E-*GlM4&IAN&M66x7s>Hd+P$JQjrQ_b1 z;P@>F*DI{U5e>{Jmx{7M8Vw9bD6XBqA^RVf3{eEt*7Ib1NV2aH3HXWSZr>m8T6-%J z7%IsmadgsZix!F%Lhwjad(uKJ+VtjQLCLHrt`{qyrdrmhQ$R{|SlWCVzHrJcx;I0T zbcZur5~$B8ty)bItvV?qO*D%%GD#JQY|IXPE@s~z*g_L!ZjUxwbXgJ(Xcu*;5DUmt6evgZhXcx!@$TXvkV+*;1|%aAXuiwT&YL9=zg_ZmIW%FGe(rFBw7Uj}mt9B12avWgiP0o>-V_kM_k~M?#%XxHHjP0`g+G%*2K+SH zwN0vsC)6}i#59#m0WuGOO4UKcoHXmR8StaM!C>(;%U9ssBOL#*f>d>!fd22C7mWxL6l?sxQXGXAf>C%h_G1inNmLK*M4DCm z(rqrzTCLBh8PJMJa}r39YSV7LwE}n%FT@U|bu!j_yfv5#_wK)vxOU2V$ z(5liHG_$q>xJk(gmzP|?>l47lPSq#dIFbR-!qiS!lZ?zG;(}9Us|$yIZe}PeX`3 zGVT+m7*CtTpgfj8NQE??qNj<|h!<4~ttR_unOVq%uDbAnQ%)Rl z!rO4ZW-9bYo0h##>+$MpmYi0!_>SUOkaZ7m&7s?-u4I#NJi zwQE^J>%a|{52mi~kr*1Hv{6`@|);q5UfvVNS@bN&Az|d8=PUcx#lwI4ZlO~WI zI#kk1xi_!!aq&nY@@KIEWSa~fJ9Y|~fS_p{S8YR?stX2z`c-Zn{s6STQmb0&Y;1^W ze-?W{0)V$}Gz&L|FfG6SpNZWP{+GRc@I?e2Y#diDG*Q3k=fKLg%ihpB&g#bi@MN`& zS1GGV+EM9&4!}_5=8)iDEzcOSz#$X=@h?SXpB|^h8ydPvXk`XN^jray+efi5~_FcTY6d76p`M@x-zzGR~A`i(c zfuzw0OI4KvxS$b=t_iQ-00;Aty#P%M(aY&66#-oTA6zKakob4a=!E>;fC7p|GsA}U zSk8QOB)W-A?G(`}_5cglVC~rV&#!!SSTHiOok;NDtNiUlc!+(Wo6#S^5S6I< zjmoHEWmx2hhzXZ!Q`j!ti$S0mr75!-l{f%2vk)=@qTg$W6*hhN4jKe_au6w~U;hQP zqo~z?4ev(bKZd6XXArW}w5y>{7EGKb>ue#%D*GT>R9k-J(uQ9-V*6`TE^qzP!P2cv z8@8jV?_ORyBUWo`iw2!Yz`{62M=9FaG{Xc0qb=CmrP(cngNf*Q-##z;znzznTj^zo%0 zyp0!$`vmdJMclS}@mG&%!}VcK@vfi%l&0Z$&wJq_d~N(=Fwg#Y@Idj}N$EBirTKC}jA=H8aH!jtS ziU6^}pErPdL+-l;5W^=KUUerjt@b~PUg9Z>uE)*B!R*fYL6kLM_KaxI68htyR({ZE z%z`n)#Uk>jE;F{&u<)EoBM~$*BxilHS3Qq6T916{r&B1y&NC0|M*o%$)&MnGr7A#) z{2aWUTF?@(1QS}X05gox&t9IQ02CvjH!ADFQ^@Vk(to`oa;5R1by0(p{6P80@k7#X z;>aL1PYNcOrBbAj}l|PQa zDBP6vk@Tm5Fc2x(Oa#ibp&=@R`uce)!vQk5!W<6Xc|0`xPS!9__t8A}b(iFRafdtI z1&wKtgkC7w`!Cp}Mq>Vpl0s$NYTfMA*VPWgK)_Si19N^qkl?I^{22oQ?7WthOp4P1V4dzCSZ}heg%ooxvB1GPVa4YOM-WefGZ&}l`P0uu@X z4oNFRRnVX^fCP5{2v^-8ryEXOzvHy@Ca;kLUNIno=V(a{`IXEHvH+RNj zu@8?s!;A9~xzENIeJW7mx$fTZhhV6o>}Nid{$#{KeA#mpTM$9N)nLSN3^&>hvmoUz z4?6Ky(TTYeugCkJFs5hXMx>9&;S2e4HA)8dXZJuko2AO(?C+~eX$_8jE}qepOzy$s=Km{W$8VnsNUIsnkm zO*1N3v%~nH8DjSYdi`Hq`kULXmhA?WlSk){`rj>4N@2F8{xXetxqrse&Vcim}6*Za%Z_<@W4=l zWP{YVhgH3M=vQMV0{$zynoI@6nlJkaBClDN-=xTq;g&Ae`2t{O`X zwWcoS^7)xgw@PCLJ$hX&44LvT}4{}a7)XKefSYl$PaLIDj#rbtIlqm z>j#_-hGK7Pt2L`iSaW4WQ@=;zN~)h~2LNlSb2*PZr-%AA*XJMckHrg@pvwJcsZ$+o z_pfyNIsaqwByPADPzBsU#-C9tuCA5z*_BeNMJ1h6o4WA2&8n`l=#h@HxdtMSA*I9P z?Q0gU#+60%svPA(?a$?{SR$T#Z?m`mb0MkM7r=EKN|GFfb78kz^&GQ|frt z(z%<9noEjEbmmsQ)FdRNM;24Z@ND4y-N@|RcT-$CgN3aA{Z!C_t~YLJAKni%UU>)yAP z9zow8g&mPM9Vxu8Mw8RwY;zXW@UxZB<+rextZU(tH>t2T|C!92W%l^8r24Hmf!haz z3A`dN91qgk8QLqz4zISsJZp>kfiTK&ciMW?N94-$&=0v2To1wzp}i}&0?mLsj7@=^ zcgWvY=Bl{t(nByu^C<3XwxN4_k~M6DF=}6{GQg@K{;d6)`yMK{GLry^1qbIPPBn5`uy zkI_--{NN82qbp7v6_0_L`g3(Ii`h&D&-LUhEJkj##qFx}^r>$91?Yr;#>zB2#j9VG zBaZ~;y1~fijYy-Lz#3?Wf}ftklO=Iah<;Hi&$M24F2AkSd&-}&nq+c0tnHw!s)mB@ zT6R@sT~*CQnL%SORulwqP`|w8{rPMJ)rNJGF=`l$Et|a-r@$Q%k=D7uB z`9G*MOooTh(7xFC$?cG7V<)~%>HMuGIMTV#wMnNsV-JFo!Ido{-o80ozh+tDr({le z;3qJi_TF4sP^BLy&s}^8bbA78*B$sU2Jj!~x7#zkhG)y%P1_kXm$#QVP^;F-HF;2T ztZN=!>!+x9D?_ZY?Tz-?gWWR&Yq7d?ZP#Odtkf%J2pXBG59g&zY9;Jax2x5T(Q2%$ zv$0@B)78{XU~#KcsG0tlOH{P7L_R4FAG^uHhUJU#1NP)_i0!ViQ~z$}QPo&dr>T>y z)@-y_yw2ks%hi>BcYqa8wy0%>w9lYl$M1rU8CK}%pwc+ZKmBOT%hJ1@_2FCRvEu- zp?#|MK;2|LlExbH?gWQU?(b1Hn}Z&Fu~;NaJ&(!568E2Cj=<}RU!!YkC;FRFLkT4i z8#KQm>PEn^8-Ca6+YY$=y2xWvFNf~>jt^KCxP7ySEUTU@yFouA46IJlW1gL3{C@E& z{llItm55+;I!F^`n=Rf#vAC?;xR5SsqvEQwa~cfpVW&=SYdx4u7@aubJvGf*-5)!d z8rs!ni?0UWBGTUAW;whf;pB!tsZ@bks)taAgqz-cG1(5tD|)fPMW z_IL6ruItOp0gc6$9lG$LT%O&(FU?o|`At zZ|@zbUhe+--{U!}bX6$rnI}DI=Z9YJ9Bz;JJs&*3pLJ0uUGzK9wg=EKH8wAP)Fj-G&3E z$>(N^wHG7Px)9pM`%w;bmUY)76Ikt<^=N)^Bar$uaQ>yt{!vbup2D}Y33?$!XDwCd z^vuT+*jXjXnK1twGBYE%HGO)hi^7fIO~A>LuNRJn_GpW73)(Qksb^nrWCm05>haQt zvpxC!5`i8)hkszI3&?jvu{F{g8KE#ka0m^3xwOc3@R2r?t0S7Hv#6?ys|z))8Q!I> ztG)D9FR6hK$?A*AeZ>P(MFvi}jPGoFm_sOnXD(miMng75|KGYZrG^&cz3Q^1{@@_3`w8 za?a88`Ys}e{`YjM1sOha+S7*;k?HdMMl+9SMse*XGSqRZ#+eAq#fH@jXC|^vxn$F= z1ZW+)?w6RNZ`^Qu9Vv-Fy)4s~NOU=S2SjsT+pjML#y;&Ihrpu<&;LM53Q+ zEivE%pP)*wG^h-!2#|8Z$bT%bojkq+4Jz$a;x{gN@S3mav>Mb1kxO`NgDlY5NMLScEV#ljqWenyOYf%qIUN1?1lR{S53sTl7K$qiU5 z);x)M`$A8X*aKY1L+6*_>y@p)%>Ki?E^RckcEbDhS3Hd02wL1NZkV!w?~8?}_xFb_ z^AD6~x4xY1h>p$^cQ|5MaeqK;Niwksj;H$skdG7I6pJiy=dOfV94BsE5!~Z$<$N{` zJAW@{yuTJ zrd`Rom+_pEcA1>gZOYDTj)@CP+o?f8Be?~M3M;sU)>B0!2N1&$pHS|N3gUsQ3^PRw z{`Luq?J?Jt!hM6)mHLC+eze@aOIgF9Wi{iTUGZFj z($vBtZ^rS<(n6^f>Pg(Lx`M2Hf38AUGF+FIK@)|FkXSJVYi3kn?yMcP-wE{RyeD3d z#8UlkXzl~QxfpTo2zO$hKc9+Uq^m=~I74~1{2@P7LHxLcxA3{=x5UYp{@km5Z_(i= zVVL-1H=jnC-uL6IZ--Z-mgQo&SL5H=@}3}C*F{LL#Penc{<~{VibF@cr7dM&ht~MyM=E4ISOfNT{Z@=s# zj#xQ?{`OqZ>E(C_w?|HS)6hBh(N~IVreoMs!|cENycy_!l?EcK83%%=?Tnl-A5A?* zUseA494G5FyVj*?SynuUH0B_BnsXCA%z4H;`~G#5gV2#@$rYcH)hx<}F94m^(#NXM zgq|~yiupa+v7srICK1w5`y9X`z&9y5R%DLHc`#Xw{HgaVrGiXC6WPMyS5k>)h2@gW zg3MyfBAP`b8@+5Lxma?3>~dyvgH|xRc-7Llmf}QHzATi)47E@ z+idu&6vjp7`5gLag_$!7bt82jzD4Nsh3rsCl!wtJ&sj49A^acI>9r7vl2f`XznedNZ_3!L?SD}E#8grYcEtgS3{Rv*#yajtuai7^() ziOkzz({iKM*zw%EpmZ42*KH^XD*w>9p4nS2e1Taa=z-APvjKJZDBA@X4P;Sb!V?p+ z88t9F)h;J7MyQV+6gg=@-QXAJK1iJgm(qK*F9i@^DfuoO z0gFI#+)9f-;R^}p=OjkjMpsVAESWq=q6^KzzbKUC5%52>z1?~VeugtJ66OXchaA3- zu3Cn?8?a^vmHoi@yHhnN$MA|3k8H#V{c7D8g~AJEZh%1>9=}T~HuHGHKfK^Uf zTQWBj;4is|KS#1i15vr-?tqrIV=`LuhLtK-ebe{nM6$lW{)DjTdVaNT*H|XrZ2+s% z7sTA>Yz)AI_=nrqCVY zRiMOd6h#rCs6eRsXr`Wo{2Guu(h#3R(jkcfKg--1teb zi>rXoP|$^#kcbOd0fO0pnn!x;E&D?vOa2J)og;#R7ydU{7wiX5jC!Be$&c~pxvrj2 zlJxl3Nhtziz$~{{#cCbG+wwz?Gxl*MgyL4yur39YDxO>vwJ1-#C;^%!qMz@EHrA2g zz8o?3heyaSqs&$%9RB)TGY`6ppoJUmxm*6*Puv#-7AoISzrMAig`#*d0dlRT1HPDm zNJiAueydhwKar|8JYGcoJ+acF+_FK;;^ukGIq%38zjD$w3We*jhYPwUDL$mq2lgpu z1YOo>WKIH#U7w9G9>y5+8@S|*teC@N;k28|n_LZA$vI{(C6xFRNvYBS5UoIcq?YTF zSAGbF-ih=GzsXYUF4<>&0}@TP5{VV6r|x>i6>_~KyZG$b4-zM)c5GHs)1pYksvYRP z{vM`Ci_u=OR*-MG6nk@d*oGj@8yGR+P)0Eelq;kwR6Ue0QhH3p2>-;hVy=1Msq9hs z#O0#LxpfspG4ghh1n^J=;X9W2VoRpEmY8`b4ajptmJQiECkB_K5!^7;8|F@M|6u=l z7@+pZqfpkjM^abZTRSPlJ^NctA7K4q#9I*gNfApd8neUdsHMhN81X^NpUud)n%`mN^{(nY5MM%Z_WS0L-5@RDorh+kLy- zeJOe6BeK?K;F0f*xqXw

    nIR6q3CWVS?UDi0M3ewiI6SDw<)WL(7f1C4nDN>kUJz zrUoT#96#}5<8??0XKapO{7%Yvh^GUl=q=EDLXLS}R3vApZ`i<~_YI>qwThyQ1mP(> zlVYbTw?y|9kHWBBU-AX`uG;S36MvzMCR~98x8KWsWVxmoF9A(nsNMl~Z>ZX%e|q5> z6xyL+Bd_D7IgooK8h99$J(M@#31Rh~*oM@3pxC}5jE7v@;Aw_HLs~)8AwE|iCT{!` zZm_=K2M*8$$S+19%<`AcjKpb)M&9FtaJSKn@*@`_{8A%gFJReKIqCB-q9|{;;Qhmz zDGdn5rsMOVHUx1T2w{;*myj|$0|)vb5Rta>;_;3n=(=cZiMYHqMuQ|1Ag3-=DM>b8 z(&yn?@xulbllpjm#9xNE&LMQBI{4%5Qh-Kn`~b|+Qq>A;a(X1q2>Sb1SpIl=D0qRA=c5a{h`A-F^gu2rOuh2N zUI!q}ai9`l{Eo1~Byz^xY@lI=K$B`2s2bhDDD*@-^(^8HOK_KPL7s9TS}liYjAR(- zKLJ$`v*w`kvUY);jN`}45oRGOa)Bngc3i1Sg!1P8A-g8s*ddlZau=}$_p@K8om+a1q?5#lioQsJ zCbXC-)IJtjF7DjSBZg1prPPqZOAuw?BBKmEV(w;K2&_XbRZf8i6qrRYJo*-=9()Q@ z7_{K_=)S-al!&sd{T0RZ)$@weJv*LR26;D0n$uGDl0irlvy- zAF$i3m^^j+9&%_tC3>hu{mV?TT4Vc@o?5HR_Zins!%>zn%i}Dt5hC@}8`-xTbkFGEA`NnevIqOhW4uSgRp34JA{3ZoXqBP^lS7KlZxY6y(v#zb;6QmVZ9 zDrCF{l_ydtL1nKsix_0%*Nr4R1Z$ni$Gz*CWf8n#TN$~wnJx>up*+k?NP0LqXNy|U z0;lP_AAi^oLpdiDp>&wEpMNQvOF5$8CZf_dr-*AwCq*^>9>*IB!dzHhxjZyAeN{dd z|B4#;Yer>Cau4b*G3}7WLB^a~L*hRRVjATxvGK*}*0DRyiSb(*6Ow0ap}=&O598c2 zMe*uqx)VHR^wC$K!YJMz&0L;*X8ct83F3=pBDNHYX$Bd&#sZf1bFb^V`|b@a$2GyV zTTB;O3f8D07f;>#9~!5#^{nR@=k@bt z$z`*@GaVdG``U@>#2&$QM}(~}p)Kv~*ZXK212|*E8?ry2+8Ws$$Hf80%)t4l9?~*{PIzqdO5gd z`<-mQT-{LfQ&SNT>=6IYx-z@kCYM>6t;G1JD$fY7;d)wQ%bDON&6m2A4(fTO)X*+` zX!B4Z3D!^f=1ej37-W#4fuZ#L6WSTgW9ZP^`n_0&?0PxS`h^!Yqk{XI-s!!T@d;gc zPxvw%IgSW;Tngu1qSTN{P*Big$e(u8d4y1phB}?iDPR>Y_Cpa=65tB-LC?MsjpL*IR@7 z-`E~kEiGM(m}`w9Pd&%Fn+EZMS(&S*kAL1Cn3|Bb#NcS^_&Zym)D zqc7R|gal#2a?QaRHb01mTfzGFrMrE4z&qgY(EGQfz zASRVFDjT>2RF=f|5tRjKRK(NAS>l2ReV4?Z%zPavykQJFtN5|EdL#urC0Ka($)US+ zVS;H(@;0nS%`og>oCUY;jQZbzUFY}rN#CiXgjb)QHeiH0(eUU8CBx=L==xbBvChg8ZDk85$Hu!gB06-+E7wP8lIL^O5l z%_l&AlP|cz*dtpucj9{s{c8F+^y|Jw48g?n51Up@JD9Gfkl$t0>U{@b1Ee8%DxXt4 zz-efxIBwB8dYw%45kC`XGA4EDh77C2a=%f4YA&%6bK@ zXEe+?_ZwOQr&EdZt+7a)!xU|hNJe%t;@}&yQr&VxzMu;zf6#r&eQWld#P6pWn=2>$ zl`Al$_-XKrKg4QuIcxP4&%x26i?u8O7OrZY0wMEU>OD^dLNXFJhNCa#WaXsQ_(S`H zJa5bXxAvusTeM@%P6~caI+AoVDd^Jt+)~t-*7)93WQ{?5flMp@M z2^3J!w4-Yl-2RdW$u=}B9Sk?Dz`%;>p&zukBuS8!yV5OnHT7->LSrVmi;@%cC>hO} z6xL&q<^1gh8E30qST%x0Dp-lPveljIBC8Yq`@{Bd! z+GNPJnN!)j*|pTR!Oe7I{6+Uoe}o_FS^Lx8SU*+oPqzt=F`qHd`J3LyR%UucMWL>g zToc7=O$B@GbY;t_GVEp1rMp&38!J1Hv0C`1L0W83j$~sjXxA_?&VXo`Tp20WIFCy? zEG&3bA1&9PRmb>GDxTkj=r9qE+TMxS^Zl*AeAr%#pi@^ZzIS(-6G9Wv6eWQJ=a@MkpM6xF5>1Iaw zXL5!Qr<#m{Sx`&GfmYnd+^d;g_#&-!IAt*4|q> z8{WGKLu;fYgLYT+$Pnh()MusCZR9{@ko%!J`?4)^2vNA4firoJu(B zO~3ZO2VU24<#_`FS)Mgv8+KN?uQ0NNXzE{|@=n6ShC+gmWrs)_Za6clLLXt2hBZ_! z+e~7)!C?x5oUCl4`;ycEuh-TB*O=I+0mB<^$SwcoX~#=O^6|#nmJyd1llW9)spdL;Z$Uv9kZ{)kbjlYl)Wfy!$fo^p}MFsfL^V0ipZ! zloCsZTW<&a7E_&dB*EWNiy??%hSPzLNXv^7Lj%e^OH@` z;Jrv9Ac`n)V~SO&q&mg3^5-m?gUS=(wH$EfJmB0FO-e`jq7;QS%YK>GkmA7YF;$cJ z&h7Dv)h%RzZIJMiF%rdWQ?t{mFHMBdg{Yg$21%;1mN$&(6^PgpxrPcC3#xn$P8zq~ z&FkFp3Lp91_ueV!SY}r;W;q2BuhQtTWypkBOpM`LYR5%xaWcG;Y6ybENFZF|d&JeW z8`_iN&urtrqEDYAvFo%)^YJof?W@y_z2j5>Z={#1@KGE2D6jQ5xmD=e$#+R_WL8oc ziCtCnt1P=b@1-owXQs&7{5EzTC+RnCm%G-igYGQW$!CQlD{P}AZ*(__=P{Dm=IHh=w`v)hPTf_I-;l2NvC&2 z2LAe$km1@sH$_-@q7&7&FgfWqqu5C(pv?7mS%%Tx?r1|%tRr49{LDmNHIRJqnDVz| z7HUd_Zm&E-4GZkBP&$fGrcEtTHSsps)Ulx)0?l=bg% zH+v%Zfk|Tn%0XuChVJiE_Ptg8q9{WXh!Fh03v~5p(Y-3#qPkNR8kQwuHQuPIg>edU= zggQfJ%x3Ijk~fRWYz^{NPS$`)TPKw_+Gy48w8?_@DJD-RMf$+u3I3ImS_LT|RXyuH z4Hfs6LXW>DE!niRG2w=UW~eM$URF}t&?$T7G2o}NyClTp8E9O?@!kKOwB=-$KSvyG?iSNrmxNzWra zR^Jwno#vOhW^mVq>&|_QZx_qJ8O~h}|5oR#)mn-xFC#UEQi6V_L~PKdEbR$=p7hjM9S*WQ4K>YmOkM6X4iWi7uAUx zQC?t0Mri4zNfNKpLqzppLI#BfDJgSe^AeQGME)V9M}|H(3S|V3Zow`oIiP{Ql~{tT z(NQauZc#}d*}foQMBVq4ZStY#_ZvYFQ=ff8-!94*bTf$1b#^69O5L*UvKZlDX|xAU zdnBGa2i@&su?t{dgIkdysk@(vbhe(#FiIs5--t6245Y_RC$C@g+(|7{r1ow%BEYq( zaqNntdONhEaI|z9=clvoSloE{W4J!}UsK@m>rdQI?_TioJP7ac;Cd0BLf>&rlAuhK zxEUgtKbf`g`HL9-5M1|b$Ko0jhOZoLROB_isFu* z#)uT#+F$&UfMAk@FnFMee(qLf(2PkipnA6l|R4j?l&uP3=+?KModIVFe!UK zNEW#!nx}o21USxOJ5(JqsWuu(5q*L@CR*y~&YPaH3Df4d8eGUvdcMK$RByRob<{(g z{jE8BMMIF}O8<(HfhqDA<=Ut9wRwcl*K#bdc0R1fMWDlE4QH}PQj^bKPeRe}_F%YX znPGK@a0+4LFW2QCRK5vZH->KGkIp}~b+sA4jm)0crR_56Z-$ppVK5KG`D-@U8@~#g z7e-R(iQzJTX5L_pg`k62D8SeuWG8OjWhj4;(R^}i(5`~LyKzz>-SP(dwg@Y^f zdqv{RSdtxS6^fz8*QuL4aIwwqvwtdi>GCU^+k~kgCt$a%IGQh0yg-x4kT~u@NqP~k zVDB4uFOz~u>@gY5Fbt6!#k6n;Rk6@&+`Tx*?y=i`TIy6$z~WDRPKSt%uV0 zlhCNR!Mc5&3swxj4y|A2pnXu~Ga=yNUn`C#XUfj6}a#V31gUMnsrFrv0L)Ec&D3lRmaSUXA|G9?^CIfFDLx1$-xJA zpjvzjRMfP#OYN}=uoT+CS(#* zC1Ye-21f;D$SvNKBtepWw9I}V+A?cXw@k?7mMC(RPIDwXulQGF_^&NqE^ZwC@eB7g z=rt_r-`JM_ij#drWKhp+jgFYYkP&@@jtEWD3f;uiH=fzeE0eH`pv{c5N4)C9N6q4N zS5PssG5DpaK#5Mz0wr1_z6Y0dKozTQiC>axw%p z;r8CP6>_K~f_$<>`gg^n#1-7W|A9NoG>CFO_#Y99?@cz$10j;_b8QHGlYKMGaQ3@Q z2IrWU$L~@4gOwPu4+)$0m(2R(dAx=M+t>q{0dL2Vr9_!p+~0+Sup}izJArtBewDEu zG7am7BYTR4ws{_UqTZPu*DTo1U9w%c@+MW^Tf+})^ktL&v@44!)sTk!R_6H~cFO^x zd5KZX_%Yj;uGIll?3A2hQkPUvmX7qHnR$h%G?x-pk@azOp3FZs4!i#t{uxC>!w_wX zZ!A7aW~@H{{{cHd#J}s_HFNNd#3$-TWn0_jcM=yu%>mV?ai!5ud1ezB!H2LE~ z>6==oUmMDCXVyHo?@x2aR9t;eMdA?hpz@2ozieAGs(r_#Jl~R(^!&+V+kSV`jKy`o zTJY$d=PPp6oj>(`&zwlDCQG^-Dq#x#O~0`DXN|zE`aOU{M1b#u7S;Pu|nw9R`Bn} zh6$7MD=Qd?deM93$bjL$WaXV8i<2 zv|4Len5YzMYI6#UVW9w7wsgm-m~$X&z|) zST%L=KfW+9zr4vD8&a2aWOaSXRZ`yQF|}iA#t8DrvQQb5v-~<=qTl6<Q+L1NnI+)xne44v-K-6$w`v9suygj4k{00O0wNy_VH^t zX`#6xTSA))61O3oh8&Qz$!?nDU$V`nB7~4CfP5+#uFgW7L-T&%$Z)-Yy3p^3GX;F}*L$IAYO0V3 z|BM|=b#?=K6z~Y8B22_%Cg}4Drb3kR6d60pPzRH4Bn_((1jduB^@COJ-jU<`v{ z@W?|N@fp~px$owQ;cRsJ8+Sie`Q?F+E4?4T2D;t?4A|A%w4jo#y!qS8^51*`j-2}i znEjJS&TpJGTex@6rBiQw{$Fppa#9DczBF@ociXtBwM~6@MaNF3U#N7SSe=O0-VLVh zc?!fH`ctL&#mUNs7XiXGmETqdJ^(-X0_ zV)Eo0J*~YjZ<*iHI{)CphnHS*8Io|GqRhLIMF~?16rX{_?g~JWp&X%5OhrW$fFdjJ z3-oWO0J<1-+34RG0Tza3nq$NM2&Hr(JBr*4%R!dPw_s58#<4f@c`P5u+Wq!(kgxvm z>-vB8Gag;_STb1`$2obMY*pG+i;wg0A$LfU!eYdt;-e*62~T_V`9(5kb7bC=scuJ; z)$Nd6-42lLJw7rS5AdF%le43Tm$@0-6n?tgs&;Vm_&MJB@^#!b{Bn5}-)HJ~ZQ}a* zeqp1$L3xOKh~MgdNIt|J;-3#4l3(L~&i{Ml=kj~pasD&z6n{$olKX=HGV-NdYvpE2 zP(iU1A`%sm<*?OdldS%5K=QMYkyxMGEBRK-93SQ7a5(1Xz3whIz{j0kgYZ?u4P`Hc zvJ!a=xeY?NL9pL&uslcm{C<|Tvf)ASSHsGo&%noAhI0;uM(30Sg2de_h&7skf@Q)SMaU||CIuQ)hf z?!02?lgrEL8&7@?UU|DUrQ{h+<3#-))53EPZn)g6X{MZ7y9hX8V(8a6K8#V6=_HDZ zWhzUJh3gD`0kuHhNNtce7Pf|dkQxXLq&^9Kn)*2J7)#xnT2t88u(j}5;>p7C(DBsq zw9V8s2tVG-UDMcvr6L?F;@SAWzCf{HsI_Pa%EbmFo<@TdDPEemRNEMO2fUqlxA2k1 zm=Zv9Ht@91B89xNKjBaN^jyQ_#EjxRFh95;bw70T6yG!lEJ!SF>T2q1+R?;@^iV?^ zg?wo!A*X|RlLgXpKyEE;NNh{IQ(&S^MpIkURq!f$v3ap&F|$}-Ww|MIlhh^mCT>dI zn!ep~r*x;hxzN}2^ZdK{&k}!41Upzxk*sQrS0uk0FC-9_sijI;B|*nBV`~d^E|xBp zto}?o5b(oX8cWKSBuHYhZz_@L5flb!KFg(YURmRrV z;}`hJCBZQ5Fd^Tw!*s$#oA9R1=`JD|88rdZAb8WzYAqfQoKx%II6OL?XpA9Q=6E=V zi{e{ud%5X3@Ft~FOMr+X0^~@t+2+}&k?ah0c4s@gabs*fUH6GZrqdnB95-VL?Kw>Z ztfv}Gp^HF=5xn58A_ZJML5^i&z8Fu7GGIbdP=XdqGJ%4;LNYBT3n0(b7eHK27U&|V zFVHC|QvkX-SD>^=tU$>Pbg2LUg&aWhR|2hS&KMxO-_z4W^>kkdmMNV2uZG2zxLPVS zAVZF8HSu^!ZK&3}H9xWN)zq>Cew1lY{deuM+k~eUin&XrZJ% z>DMfhwT^Q5(7*=Gb-)&I)=|_2&Q&Aip6*WIi4&q@H%)4a0gEXf#fc0dfq^0B+!)iF ziZbEk5BuL;x9aqRxBq;NvaE9E*~-(0HXQ&h&)>7TMv%NAyZQP`;TH!sR^EDlu=0m3 z-8;SecmDP8`PV@Ev(x+@Nyj)aj=Ut!T>B{%&_;({vPbUZ@8kcIH?QJXdHeYXJzIUR zO0P!V;#tuxcq1~+_&|SXgACKGMUfDGU=+!z#sg|lNxNK57)<;96dP`C6+ks1p$mp! z76ym^`v9h)Fg=cSaY9SUh=XVxbj5K7oQ|sjqKyHfjR8XL074xO9%-Y6Y+6Ei)3QCb zWP}G;7l+8mcXsz=|4f*2QRT{`Di#jOoR8PMNtp}J1tA|AB5q|akUYV;qvXdaQ=~DS z-G#3!MiikUp0TJYM0E<;N~9O@!rX*Ej5Qz)bTIzKffp+`zqfwwDbP^)KW7%)q>WK; zqF1bs)@qw7FZ{Cd(F>ejTWPHP574ZL;5apKz~+0 zQDWx?yDVMIdUn0F&(guSskruBAhq`~1-fe3E;1175?X-)P}7?#S~Sh&6238~@;09yd-A5` z`h)B`^lxWvYJ}%`eG^DRK!=Y30TyG_PRXComOk9u(MDr8YRR**GZ(K!p z|BIZ~D!;nE&BtMms)(cbEI}Qpc_y771hO$kTiR$fS#7)X^n=;M*;lgf(7()nV*12( z&UDUZ?J{>+)*~MGnfol85sz8MX03sY>TnE#q~T;GCZb3IHD*Cf#XA|ZWN{JSDJxP^ zjc04qHr8P>L&R!C{y-fSPf}?<4bzy@S}K)<{s5cGrU$4DpfY;K$aG~)nJpHJ!hlu= z93d&i{YH**5l*@Y(_Dm;u9zGloQ#mo2;pR8d+vWJ-C3k_&A7FP0g{S z6sp$`9oE~EqSK}zp`d^7jE5#)eH~)jXERq;O06@r%G_(zpde~mee_m(MRi?ydr?Ok z^J^ONHcujNQv{txyUjEu2ZO0l8uB6^gwaN$adG2nwoB{^uCCc4ZVB!dcL(it`BnCQ zJ1sWmLT!y*jdz)TY&y|sa?p3$k2ccNSi~3ck1+vrEnX!4XD{(TU@t;|GmT00+iC-% z7_+2nX;(UC1zAOQV9Lvc$g%|!S&q5gZNe4-azd*BvF%(h3=1Z~gt;Lg1Nz}UVn7Gs z7lz%|+?E7fQb|Gtgw7Z|eoT_buP3LMmTns16*7oO&+=KqD#Eo7NjejAi68Y;BUZ8) z%`!ZzrBj(yO^UWS5D?*1_c#z$csG-^)ltqk8u+Md9A!;e>VREy)lpvyLTjonEK770 zLl5l85Er8uVplzx8^ei`>cd$`pBv#2;?{5*-DnkXjOi1^_VzU|REGMy@Bd@p%)2Hk z6TbnS!OJ4vn@()3-17R?xy$z4_u7m#E5~{~5{+D3`;Nd$eB9N=A3r)E!fg zO+7Ky)M|#E!*I#4NEv7&Sut)WuVePNkz$ z!PLoGtkhOqT!h8#QH`d8vNr*%1?gUV)Pl5fPC4 z6}WwQ)i4D3iA&GlchO3KA5^aTip{wGD{sR#qkzEDYJ6sldeK;^5-+S0(NT?bDX1=S zFKuKM392zskpwjsR3xCrt%~GU;W}+NYjSX?vNKzn82Dt{MJ-b|VVKsZWe? zlLfHIv&ajV2D$=wIG*B;YGy$Mx@KrF#8wFvAtdsPVcs8v0P0@D3){TFJ4oC12h&b# zBs@6$SMqnG#o2wB9(ZA>m?q(v)vB`wyP18MeVR2NVc%zm5!K)bnLahVgiL-yzmWDm zLj5Na+90gotDg7~j^sYb_10C{B8`_nRw%YHhTT3M8aFp{F@Th&XiZ))&6p z*<2q~YOZX&q@CV=fu=EJuZ|;{PJ+9Q!L_azTyO;i)>AjbwXRkAn$oR}M{I|k>Jd zs9#gZz+3Qb`ZMY?a0dLzcE<4sr|2*Ei^T@L*bcT*_d4%yxUXm(sd=b*E+#k2lP~pA zJ{`JricX3Cpd?yEHj|W6<5CctkD-^zfFtB?!ifA(vt*PlPDZj|FRRA#ij-Dk%@fB< z&1REHGIPZ1DvFd+q!xms zsfAH!g+NsgZucY2O2}ik@YUr|Gk@`4^#)O>GmmIR^45VePK)8J7*2|zc_bxh75|->~KjbrbWK)J-yVc64TO-;S+O^gCN@QE$0naQMUlzHIQWGCuyX z$5p1#&K`1ibPtd3jy{8?3n}T2YCRr|WYVgQJ>dUq(%p??D3V$xdoGAu5to9qYkx9t zXl+x$Q>xSwmB|gg@DA( zA$ z1p)eRQairnh>ImLQlsg9wfEe~!d%TqLfB<1=0$l&!);gn>$jGJTbRlgZEUocz8;6K z8mKYWoFBMC@p*GMS8b8y4~Qx{c-1(?iNHm%0awtO<}zH3NoR!dV0^wqTnUzoH{{od z4}fj?*Ti?lQ{Xev=@fx2V9}@Obfeg)PZepuo)VKfZ4u3SAV6oS47wXfH3iCIDOl25 z8d@8cQ@2v9#5KWQeG|1&yhGngJ)rNR9@lp?>~45H@Tz#U;n#t8#A6Mo1D}eY22V8n znfhzsFS<4jOb<-SF902Zx%uk?tAnqIFY9lMZ|fh4AL*`Y7BZ?xAvKmGRs`WBR*hHl zk}9zv7^dTLs~Ds}P!zHGn4ssqx){*&Vjkqt?;Z#Rg8^t|S&Gv2RGQVVMA#sh&&8rq zb%(lJ#lHB2YEicv4WI!){0Jw{ML9RlDAp4vjd+QX(`+0K;|20M`3hp_h;ml}6fP-V zXt*NE#6Mi^^E8OlVuk!{^^T?d-b0g;Pqc8(6NV1CGo*~)f zmXeVHQT&BfCo(YO@#07LR8^0GqcIc>5cE$%uow=;Y$PrSrkDI^RBNj!<3gSaZJ_l@ z(vn)`_36|7BYl-9Y%UWPGx#V7)rrk>+A0Kv3}~UsLMt^xSVS!lR#Mjqw+at|UEo=; zUw94t6$rnB07qUO6pF38C*ki*fx|oZ%0dgoDRX4aQ3!eJ01_%AT*k{iBa=j?1Hm%F zsCaqY;DoZ^7s`_A+|RvFh~2es38X?ope6A@z)Q8~BKbm{r$F9^=llWRRz z3X)iUH92u9QO_9l4+uM%UAA4k=@zht=?5Da(EV%NFHS4Y=DV|huI3jCa^S{|-@9S&kuNvih=SggmA5LdRhEPAfo3r2^=GE{@2osm z*|&ECr~wnf!lyRi+%B#>Wl79Z3sxVZa_CRJr>T_B-7NM>z2SdOcjfL2Gi$_yiNopl zr1!$_CM>}epGzmpS~)c?t>+e`u1$62`f~PHC=d!~!ZX9a3ce?qcc#J56Ym7xO}vvj zp8hOh2^;Z9nss4Q8Uu>NsBvUyeQKPFL~Cmz>6UnF9LD2}uO{vH`yk7(0u|yzddLWM zh0LMpxsiM@l>eC4Sg25dy`bK2=1JiDAFSNn6m7Dt%uS=pe=UkBm>8pxT6(PI-e_?*^ATc{bM&}1T!8abhh zbU8WG<97!dAAz8rtKj-H-)q7I5mAh#?*TY*(eYE!BCU?p6cSPRy|o0OZP zt75CQO`t#eVBJ&TDeYkLxw_$m&l0^I+?BXJwJq@&coaUKc)IRL-EsYQb;ET|f%1b8 z6w*k`>YH*+`m)5ed0Pz&!(rf4Bu| ztq2rBbwA$-jK;3UV~uoUktLeV5<0L%v)P#6M>N|tEzyg{Qt`&FgR`k4Hx?J8T0bW{gqN7>Xi9#a#o2L2Lj%~Z;!vR`H`o9 zxOmgb^W!~X>q{>`d|T61@Ky*wW!2YBM9Z$5*9|5sYww)zfcJu(-(LT)2j>_1hCeWw zk)0R|=NUoazFNQm4%%soGo`7FIok?aq1D|q2&Ndv8pk$e%I|>e|D#7XMq=-1!vJ&iWDNnNC}sA>r7EO zs$?>Cg$ZB+Y%%FUUDg#{9bX(@n&zBV({7*ZoX5}2%*{p=pg^ghl%&RXu|3!x>S$P4 zSXf+GTG+T?jElD0GakE?iQA)1<1%_vkI>`Un0SzRFuzsbnLnC-vF4TR(WWy^-pkmr z615UaPlI0o2-bs<%CO-qZL1GUk(G)h%ZDR)rx@JkMaHAq;qp2huB@ZRWlCDfWQl_z z6al5{>3AAfjDaD?iU26MQ31paKJPx_hVQ#U)cv&keK+kMg#8DV0XfU#6NKmu%ELKu zB=@`AFmi3i)RK|=1-hZBTr{U6hiA$?2c}SEFoiT4V3XOI?MBA3=PW+>*E7^p&S$IG zgZQnHZbKaIyQ*>iXf~g$IsxB(dc?FgCUnM=PTFg&1uDZ~r{+NeqoZ3}oufe69ktmM zk6aw*%G78Aa&v6nf@Qv%)+fVguRZSM?8NzktL)31*YHHO9Q<~5@uyFZ??1WEV_|DAV zJvXkX{4^AdFq#&czkkKL?~iFpRUW-()`=glSTi;dQf&wkW&3x0bN%HL3NzO&yW!r; zx4myQx5#<$=H1_4eEWiiWwr88d+%z$`ltUnIHf?IW7R=;)bLnAmNEja7J);L zYongV$5de22(eaT=d8q}S&5yq#sYpND`WfU!k?gIUS1^ckWKPon5O*0pBr{;1^vYS z`O(w&MwfP03#ey1vB8s(fwhY$R+I_<(l>*2$AQ9Uc~VHkwxj^3?|8&XH{NmPc)4= zcXkwtn;b6BiiKbTrmB7Tg!vgn)f~9(5T&EAqb6U}NmpBf%tpIETufV?Nqv#DG`p&)VnvaHYOIDNj6FCB7)PNw@>5Vt zJFPV+M*ICfOf|GPNdh>sz!c2jNR78zS;J9g4FpnHorNsUBD=j_?0bkGvXERc4*IG| zck-KF+EU_m(53Itck3r~ldePwGoyr=QNqk9W zb&lq3@EI@?0cJZdCUeMnu+dJ=dVS{QYn~ayBGpZ*X`36L9fcN7OKAyLw2tE4Nk^s* z*ljAW)lq4?hNB8l1wW+s2XrD`q`I-ng1^a5r;^Cmd@bEi^l!ui(Qkqig|@8k^3$*X z_eniE8MpWp+Y`aatj){s_>bAh1^O8m0us3P)xr-QJ9ZT0 zar2}@;8oyf?d4s5K+uF(ZHp|Fs%??Ac`_TfMdQUk3g?tFDt$O`NPIT5Tm6zT?+Olt zo--e?9AeB*nxC-jVxIIp;Wt0TY~i*D+x%Np^R>REfnL)ZTc2uP;GY+0Q?IsM%b2fZ zI@l|1-*k2O%!b-VwbS#=S6IwZwP+gan?g-@nKes>NwaBR+HXb(Qq|SP>M_+klGqMY zE;VZNhx|2u+Rr%gpD4MIA7@y_g>%|1o&3v7H~d@tXZ$ArDcxuI z+I+ixXMEqceE6^TSR`9LYG4b8y&qpjjk~f80P> zJ*Mhpg#N+ zDj<%(eF!D{4%?|S{&8gO3 zeePSP?=SEwakHjbbBTuQ&VNL^d+Q=4J2DE`5=p}!Fzb*6mT9>vdk3swY$oY-Bk98l z4w!;rt1g-B0<^OfF2M%MEkqD6h+@!caWW3pW@T(P-BM-*m*^=w&?R9(WUWOB_ave@ zjAr8$S~OZq`5D#@(|qd_R!h>7WozweN7|DPWu%&Ps=m=u4i)vOmP?tL_GwbPWj-^X z?Xb;v%n!}i+v~5jEM->Mmxq>1*B4fqR#{dtt8A<7YaMGttEF|})zO>tcbM*CH-$Ik zH|QJd?`F2z@A2FtZVf#s-J8BIf3LoiebV}*{mIZyX;=8k$P@X!%wG1OZ7{S?|2O?h z_DlQu$d}O>%kx+3%j-8BC19~fa^Fk@|K*o2 zoFJ2oT5CAWTCKJ)!d6k0a6TUembnDV-TE^*r}E%cFex6sml-^BzI477{ehLk?sX1iUs?cG4y zn@efI+jKYOvIQ&m{AZ-Z^t=0gm905vj?RqcX#V$WC>A4v!{_un()o-(Z5QxaQlX?j zRV!BgwWSNwPx(zodFjFd)mh*jX$){+O(a7_hq5DhhqeXnrj;ZCM7Gz3-Mw8h>sZg9N&KH^O#eK!8 z;xySgQ#@DXi?8#)Fc!kBPMV1%!BbuZC3Jf$HTq?~%ivy!-W zo+v5G+G`i}lBRXHm4Qky?^1`qV;wI3_sF<@%ZZjA9{+J-56QD>zA*gkUjI}t2*Xzj8V!T?)A|0aJgYM);jKRrL?Cy7-XRdko zi@Iw+=1C?Ji9$5?u{DmqZ+7p7q{D3ISv-{KIJg$3-?+WtN%Izh)mE%eKY_8j&a^i< zicQB!evH$LY*!_n0OS^vwg{EeCB0QTNqc#gr|S4cLiT~pi0@uRaPd|fGJ6flE_4g^ zHxa!(3<*aTYb`H2YhtgesJ%=t0LI~PtaLMVi|w}Pv~pYak?6y*$IxTq`I^_RpK{V&Qd)s}nz#r`kyf0@qp2JCrJwnyc-lFsGx8^waXAa_SP zQw3#^!fJZ2+*{~9)vG(1MIXuDp1(&ql-Kns6T(D8 z(a57YT@wSNI$y7vu_be~jf&)S{sjCKejn@O;ivE?tI4KE^~D#P4g3f#9yFYj^C%mU z^J3H{M(uS9W$krVHK=HUGjUAQ8;V9;;&|-q8LS4Cqh|F zIqk$tBIlj5oXusDR#wrqDE6K+EV1I){vC ziT;yn?U#4R`(;MnKt+#6>F5&u-Q#NSLoLKQKZ#W#%)-_OnKUzrK@lRDWND(*UxYsE zw^sau)V@h9MIXbz3=}KCFErD)=Xf4vqWMh>)^$L_zCN;FIgp>~CB9OGbsvId)@xJO zSLrtJn#M#kSjk^k9YQT8nQA%wj%{_m9#xuv>?t;m~GjBcKv6{U~1#@VdBbEFaONNk$kiqys*Z~WXf^oPf~ z3#b0j<`As8t>{;^c;}T@(7$hNTil0vG%^_y4v)t+h~C%uyRMW=ZetP&z3AJs7yTW& z@5nWHkI4lRgN^T_VrSar5?wZghpe7$*Hfg{2c-l5kPXp`b``SwFj`*i@Rh38s@Sg| zvfisZWPZi~IWC3-+D2_b+l>2lS94R2kLYH(X~(^~ySO>WR4aiQFm;2 zFb>-WSw!N4yw~oyHS)npVuv2Z@)j2NUz;SQlSWB|>spWaTC?PsR(eEp`Di2S6f^}y zt3^r_z`YLECF9bCx1ZGfcld5bASj%Plu;zADQu6tdk@_{cc>gu-&tU;ZEX9{`#W68 zfPUm1cKRD^U! zrl^(~jW;qN-NY(o@S03BbBu0|nP=#u3}WunvkM4~(Ni>y39VrX6`zXy^h&aL&EW-M zVfc!-ZTYMI*IK`U7TT*-T#Jx$ZxMQ`u@x;fUO~~u4IJA3Ur_aGxN$wrkn6l#jjM*E z271bX@RhP$5>cXFm!uhc9p52*xd_n_!3Rp3x zDSVyZL`5n>?IcOwBsWmIOj7L=u5@zUr8ZNkCmj(|pDr?tuX8KD&R6swe7muo-A|zl zzi$la?2Sj@`AyGKG?Y%GtPItur_pt~!L3+#|6`9<9tfWZpF?MV=d>=?7}yE+;ma

    zo7w*&NA z7pR~eWNt@|BQ2LDE*9B<56N{PtG8?qJyTtljU1tc4=ttNs@|NgGms&p* z;-Ba$i&$EtL1dc}7@0IT3p$}k0*7bDRNF4?lMYBsUOFhz(#OIW zoAHVZJ!%h)mpu)oqOxWDyDc#Ts!eCgEoV`7DnWIa1))^JKm5D+4zS}L&%@JLs04hY zrA8&fiMhmlLZ>FqCFr>XN{BEi@jTs!!P-;5hyi4Y;!PLZ6QGDi9!!Ky8$_FyfI5q2s2MafO94Nv+X*L9C_>hXc%?aD zej;g(TWS^A0(|ZDV*)g1R1@ZhvZ?05?*Kr%&xCbJQ>~JQ)`(jpZVk9KT=YS=UK4no ziB@ePU~QTaoppKE=T>{%E|N6>c?2%aBoB;^WVq6Ue;e=IxbLH(%n#q(y`!E;()nZ} zzi{NXZQTL8(PI?_SI_jd#V+*O_U-+#P>O=jXMw30>_Nm&|eHimEymR3!^Q`_s%1y=5Pc_VcGNcC#76F&_ zPJxn0Ab})+F$)k~05F3g(g8ddV7?jV3xedKbhN<%60psw8t^oyi}EK7rpN@%5zBG? zw4#}g37(!-mc^48X|W*OlqZw;6bwEEJ`Rq7V?%m{R zFeC`cgpCjcjQGpYTWNmZik1@ZS8o-Q=qv1T_G#{SVa#p%%#)pR@+RhH-M!3xy2qGr z@Z2DWx_D>G-0KKA`z4P+>HKa=jG&8GQVatnhY}A@=o$SRf*X_XxFCq;G4r%}-mII$ zn*}pNnZW^Bz};o@DKlrr*#AsV**ul_&Tunx3!-AR=()AYS?q^2Q3jkH&0 zOk7fCLNf9hr2yrXOhSOidtqHfMqZOYKm}R9+$?a?wA|f!CkA*D{XRP}fiBfu!my<| zcT~n8ai9txVQWtP((3ft=xC%4DHC%|2&zga&=%|#Zm3Uo?7L;WAUp@Ig{E@?clFE%Aj z1#XsR1NYk>bj;i4rN_`$=qF-Np>Lz_ao_X)mOmT#oqQfiEInl3ZGRyAfIJsF7vpR) z`sRf*l#JhDOfaY*1q8T&;bJN>7on+$7?DW;^mJr?UF_Alh&gg?@Kr0ae$SmSa6yoj zoi%9Gs=bC6X^Q+PETHYeVSyI%B8k$QqNb^NYJq}E7zP-isjq+7cbAVI^PwX?S>ot22ajpS3qp%(x?XP4L4( z=F>q0l^Zc`RI61~C8cp7WrAqzSniX+#&qtuqox%UPoy0zW-Tl?+)2avDl{l8!!Lzp{uu5O6Yx0e;2W@{v25j zk0$d;*UjP3(A8i5$~%3zTk-1qFPzosF@*|KS$en$Tgg0$e9y2F0V-YtFam6p9CQPN8L)k|WPyXg6UlxTQzlE?*^IYy6OWn|y>iB7dEGmOI&IO7f1B&}$Dl z`dz`4yEhOD_J{FdCSALW{A%HL)ZQLuOkv6t5o8cB?5-*Iocjqk6L!zLY4;nMF&0di z>0AlgX9mk`U#{<9(_1mRx;6{dn&Aa8rn7j-m^_MvK2qW(GU-byIzE+1@)?;@ba<2I z5;AJjx69PUGAGnz6(Af!F~D^W2H-@ixCCazeKCD7APkbWbSA}beeZ#ekVZEH)SDBGY`&HP$>ifFf>Jp z@Yse6%Y;@!N3}t`AVrz{2^$CblQaZMEW*(op{{ryhxPlH$q~5ogJ%F6bVZYi5C)K- zNfs8kh9(JEV|JWhS-!-KgRVL1C?-ctD~6a{g!YYE-e(*@Smb1Gfnz9cii5(BI_^`t zzt`V;JZ!u{es!GEB?AwBK*8T||EFU9lpe=-jH6gS0B zvC zUEmM%ukwt@t2|x_zrdg2S^n!5myS9FaK*H%_JRefUoezKw8$3boCR6nN(}h7wDg7g znvx4v0Y=wmKx~eTV)b@A9g*QWcrzY zVXOBZ<{m-+hz{km2P5z};v@VK!3S#r0wd`+In4U<3-Y{?m(n8Z$SX!`z+IzWy>iGYw@-}$FL0740+Lja! zB_LGy;O4c-v$G_Ip{HkUwx_;^HQRhMR@0tHIo-*GE17Vo160Zx51>Db(!xU0x)29& zbjQja@DPV)eJ#v~h`@w3KUaqfJr+o8+Oc*zliut-c5KhnGuQ9wDup~9L*Z~Trv~0+ zM%Esii?+w(>He$fE4TI>`p294v(->Ja-+jhyzb@ATcO&^#>N2izpzZ+Oa6=IH`5sz z@>AYEI~3zFLt>M`;cy!GxdgH&z&>Qhd?*38!zt9ERZVtN{Yc`8#0v=~v4p<#^d4m{ z0uJ|AR5Q%AABj8>c_G3?n#Yh99}>ZHRcU?*4MBDEAr%h|wFBx5k<>lJtBwOaI>_UW z4FW96?8BtWS5XzbL&m%pjd|z1wD()|Pbn57*C^G4KQgkM_i}W3d%Jb?ADIH?cOks3 zQKL*j4T}YIpm4Zwq`(v;;I9P%P@+(-<(RphXeX@AjIkAWey}JyN#_+}i`l7#;$uYG znFyy52~%}@e5J!_v^_nYUQVA%>(UmOnQq1X_@MzbK&&_eMcIw4?rHZ=FtJ~{@E@v;#O(+m7`Vwbx|is0sg8&1s9r2EV+=jU zAP7CD!L0g}H&`MqJ}U!X4`MQOo`E$o*I&8!Idluw>x@qx0@nwL7r|P^>>BB;Dzj%r zWk$ad;!{t$#+KlQlwNYOWP-EHA0Ck13Q%3#LKmd)Wb_dX|-N7zDp6>6aMv6l+8XhWl zs&pUJ5#FTh37~EH%LCMo%;hq*#nTtiYQDDO(VCn0J_fRl6oUoiC+TN1gte*0oQPqx zEZV`=bnZ!eGb*hWZAOwcK~HC6v8E2Cc}B?J#mdQAj(UY0g)SB;B?V;J^?P`~yz|PH zqjybxN3k%hp0O%_Q$6u$|6qGKQV2}{c;n=O8@}+)x9=G?*~;9$l2Sviq5b`(v5~8{ zbTr=17rOR;Yw;T$rAK~+wq-s&@jp(ede-3a8TIVe>AB<1WX)-lIUS=nn5VCpx#m;5 zH*`u;Vzc3za4{UaioWmW+rG4W^XzR$uH5|YogI4;h4`j}TT5=Y4l{kqjEU2KVr{OI zKHTJu!Kw;~D;jM^!U&C09QGv=dM1ID2XI0HdmPd5Bntqklmu=WhJj?HR8D14L?;OJ zc!ZoIl9k{bS;*XlQQUcpn5?ob9K)SARV!i2+wPT+SMzf)8R!Zgan zj#ciYQnp~b4y;)DJm`WXOCH=Nnm$N`R`JBi4dMw!8(F~$;)!*-;hvHmP_j(6_#0Ct zd{Q{2EoCI^*GO2dk+5ZB)6zwTnzk>gT0s#q93jIIG91CHIY+1s?)=9he1JReJ_Da+ zv(-wIYZIp3?5}{(g;$|j$B1_UtmOHs+EzAJr?A{?O<0q2)%mJ!p}Jf>Rb> zjb15km^Y#YBeEK&jYo_>G3ty!q!L*w63>ORW7(Sp>ynmb0g_y6jZt zv4dLqPm<;j66pGL|5eDEt~H+t(qzs~UqH{Z34b!6_XZHh`?w&m=cc8M7>1z=2-q=f zom$RxGfPq9)g&%jixVZPA!L$jbzPboBN{#M@!oCIeuu?aP#c?E>INed?k^N?7;@DH z8eJP>PRSbfx$+id*FU&+^=(^ry-)pmDFE33;x^R(&{g@;_D0~UTsR(g7^}OO zjhgldo|zuJ;V{0Ks3_g^%sflQF(U|)A{=G{?&b)wWJE|+W zN`)O)!PIq>rQu5{N{&Q12Q2R`H2_B%4Dpzm;Deb4us0KYfR$nmXdaSTPxnUEc$MatVNha&xgS8&YZrPL@YDsT?Fao&IoHR9szBc4vxS}!vn z6a=%^9G6t3CK10;XIE)nLSqt|lBT73>8Ny0(o4r;$NoWktQ9NWM9uXdjDtIWv?|pP0<&wX$+vl`okD%Gw4K<&YRK>q69g@aR1IP z0)Zx-CU~A{f#=UvhX$V-Y#U+NjJ5X$IRIEdr@sVu-Xw?M&cBgE!f=QI4hd6iCI#>+ zq*XBHr892-k3}lKx&l@^@#U2!SSm^jFqM;7cRBtAA7Z^ofnT~_DVvpJnEa{Am@=R_44DISjx-(L-CiRlkkinsA_cwR9K zA`r4zgNcAO96%w9AEX@A(qAx}zzWQt0n9oVmb>H6;3lo~^e7lS=3Y9wcTX|m^V{AZ zk#g=!&~uo4+@|z2bpj*MQ58){=uG9ps3{(hswNSZ2n;#G|8s5tu3Sq_ z$hG8z98gj?K@N(ZkmTB&h-_h9(&+Ie(&URkWPct@3rVVsVb9)4q=n83mGlaN<|ku* zecT|J33xNVe$vR2hx8~-A!1EgUS7WB5Nq=3lbC8k0A8`sjG+OV^sKcOuF-Z@MEL*H zhR+!1P4mL%t&i9~Z+|3wr1q52So79=`^0^=ec=y@2W$tzpQjCPgjU1!oZ(K(N#>;W zxAbqVtG3_U`MRwx)x%Y}UK_B^8gH`ldAd!M6LKsNxx{gFg}77J#l+ocxAisg zkD~rE+t%=R4Bs*SZ=>F0aEsw!IJ|}4Y-LS0tHbOQg4U2F%ubvyJE;!fL62kW&4 zgQ4&ax)m#y@018kBatzt%J?_BT|mM|F>V-HZ%PpGS2v{_Vib(zz~>12AT$#?jyr!M zbUc@NGhpVXDZ)Y z4t4fZdCG+8PFxN%%vI}7c(xqstQ4}R(g`zx5=uLG*5`JVd8CeYZ zUaw>{6@)o~J}014!Wn^{7M8)M%e&j@JBGxMHh&p8j{A;z+S60~Ypt-FLg$ISaX$2>^&jCrO! z)1GB-l@g;GrkwS5^&^(P6?o#e9%?oHuKvTlBFfSYx&Ix+q zn0uYrqKWVIo=buXR+)+YjL0ePl}%cZ@lkJSuu-q)e3r1}OWTl5|KK~lyQ)DVhcN2r z2Q}%La1pk^JVEVd{<+CTJQGCQoFFz>kB!_~+xSSKMehr6L*e$ph-!snT$LX=>bTA|73r0`V5M$Ta)=deLQi*^pV(DZ+PM>~hy zMtq}77k;UlV5&?vKYtg)DELd=-u#9wTS1_b2X~IEFeg8bwvQheKRC{e?_vjwQlj0& z^|b4?$c{X4w8=>61mbNnaiGcyQGyjRrc`>#UN70}9l`7P-7}g?bx#G%2ryjH>th{Tl3BMXBai=DJ?`GyOh);mFt(ejL1Xil$Oh{Uy-(8GWGNB^wsHW&h zCNww{wPivctXD6_luW3w#F!Ujy_wJe?x>q$x|qh{~$9lF2FYYN3LrD+?960%Pvc-M#UV zk?`o)C_OhiKT1=h;wU`|fx}LBX>@AO#1efa=2-`&CA6PB-QZG8%X!et&uUFiE9??p zb@D$-7+5PCgSx1(w{-SsT(FuGv1D9`1dzoVwItT-?6Z*bLyYRpXC-_7KZ<*kmk_Hu z$9XQ%k&DCJI*tB45^M(=+i%Z)pkvqVuInBgzHBDqHXA!PHhLW05sy*lPwgsyaD=8^ zT?38cNX?{=v~TY$@5p+K!;S9x1|N}gQ&!|u=r{LUlWqI=-7-8p-gSH9=3TNIEBGEU zW*bBIPv_L~R+G{gCR#t{N>|{qq8e?|`cinhTJ?1x!vUw6(lo*WFSaB43dSC2#prG$N({c8JSGE z^p_gjux#2@R@=&a8SuYQ9xG3kr_1wYeO8B5(x1b73uShpe5y<@l+hF(SS~X`-kk|q zHN#sb6N(Q-`Ao<%6boiTG0pH+OttkELdE_772D83RveGTtX7NBoJQ&{mnT}w*Eu0z4OhJX-xy*cKA;VA^F+-EWLk5iSnW>Uyd{h2%g8vgR9hCd|#KgPZV%x&sgcW+6y zW%(ibAzP9?wmh~hzdd7nJn`gV<^3X=;h9WeNPq+q2+d?5Kms9iXh}$+C%KdsD7{Q> zdt2aeA%ui5B&CFQ+S1zwa?hc(^gEQ^`vnT845WN1rG;_s-dpx$lD6k`5@~PAdRbn3 z?X~v)*S`X8N9UZzbe~b?nAyv2y~W|i4bi`#laIFA;rI`hUN+;7#?}>4nT)ydz3|rU zo9}A04FuXyOIx@WUh={i6n>p%m7F=P+pX1{cd~yiOl*0Il#QB{9vET$^zA?lO zz*UBcIGrX)f^Wu9TI%m+AO zS>14sAQxv67l3iWcwjcW^qJJfOP}exaMb~4WbuJ0v-qM_D__J&XuzN)dgd7J0_U#$ z9#H5KV1S=4y)V2UnzD&{hyJttMpfA6)!a!+3nw|vn)L8~6|_M`g#kONNj6mTxdau4 zXtWX?K^4drv}*dytv`YUMzV&a4$fU^c(zbmtlPM4?rq-N0$ZdlVRoRunJUyC7Cf~O zT0}fi<1i;`@Q_(EWr3N>uNuU&wSI4N!i54S?!4ia*LJ+N?Yiwhzqsp$IU{#nb?1hK z^!`V8?Z5r=;qTo0)SZ96b$0#HJ6>u0X5SA_-?s*1Z~xp_LLWi0rh^*Q-jucUbb_}p zaT#3T=>R+<;*)_&r+q{R`&0tASMl6N%U&aTSDi%Rs&p#rW!zTfh?!Kza3J%ept-C4 zRvQ@~vjd`q0YuV?G%T{*#)-l`2bOzG_%Twf#dFYYFM!gS&!5ABSmLlu5{MedP47WZ zN95K=bfix;`v5X}^`Q|W#+r(bN?F}HfU+Asi~~OnegJ~e6->^3xDlEFts%)>Su+vdc&r8NY<`Izy(pp)ZOuS6wP;VJ9<-n9V35%&P zF_l8o(4nA`T)3zA%U5i^XYgN^R8ys3ZD~W5yLF!^#3PahD|Yvd7q6Xl;T6Wpj$(qY z4ZX4Ts*PWIef*IfBA;)(e`Ps>X(=6@Yw4@|J0$mx#=mTe_pDrg?F;|9dAa1p^Az(M zOBjG;xea9D>rGi!l0;P|MM8foB3C-n^rhX{Cn3npCU+LGL)>@}nAkCx+l_!oKgXJ)k!7`}uO5`$uhIwLg ztCHTAr;Pk?{(q+S<(UqpBUaB$%k~O}V#Ingi?S>EKBYg>7h9ECo!ul{ty~@3l(|FL ztn7$vj_t_at$Zc>P5$f3HzQw9~@H_-nYe6+sm4h1422 z4EIACvc%v2eX>&!`$Xy`@ip-ykroLOK%ARvVJ9(T%S3iy$fUq85(j&{K7r-Y+hP=! z5-DFW5lpHe1jPRCrai5+nRq;y zzCkK4X_S1^+WgYx_bk5q|3Lo_Yip7{U0>AK)(7`}`=;qv(EC5Tc4aB7X@aAMOy7;Y zAOGxqsHti=F;Rq1qyGB)FTZfC49pp0>UkttDfnCqE14lW(i#nVbYh(9QWQ2_`Kg|7 zv}M;uTNY^)Ya@b?h!V#j3kEthAi@GNL z-N^_b)5jY+xp}BbU^g^A;AuwIgDF!^L&&~E9j91r;lf*9S8#G7^_&5}3vSxly{M9i zuMoXrzQgC5GpmtZ&@OWpS6qqe92DvOuf94rr&s6u(^obYU!Wu7EfFC8)HVBNhOq&M zzYZ^3ZX zaw$hm^7lJeB_9zUNLV-I#hf*r+j2YIkH`0y-=p6RJJW1u1iVN^U=$Wf zBDd_b;KjlyR18l>ipVd9B1%+&f})}~hd-2G4B!vjz1~FJxx{6vXIS<=x~ib zs1NJ3s(0v=egvwZ1l0peTa5#AWfA9S0;6Eh#Na@Gt%&T(XU{-X#gM3zr%7sKLaIH5 zL8L7rthT5p7KYX| z8wNN<9Vc1ga*!RNmKr zRzSOQWU<$rLd08lt9XTjibFM0$hCwCYmS?R6Vtf(YPlxQ$+KSbTD%wC!i#RsiN zKIfFd^XM?XMhh-<9~ZvBDZ}eR_i>?P&?0%ra(;;3xqr}%*~3I(lL?@MlgYbrz9mn& z6*QI5r;>zGdt=F4uUK%I8eM(=&tBYe$;Ox%bj4!fN3Wj0;;P1P^7%(@uP!Tl1h13c z-+1M#*DuLWOQj17uld&Yha;Q<7vA^J7uM!qxwogbV)H{m-Yp>==0EcXY6kN%2*HUK zg1F7_A|2L7rqCTuG63TgebC|~RUhfdd@Zz;uQjjk!|%c*g>tYtKHz6CbQnM@>d7Wf z950TKHT$r)T2Xjs^^+Vl@q=V7PN|3RtS2$2S```Fb7XpA&;cEM2#Op0aIqhf+Zjj{ z(Y+lZXd%vlg$$-xNH1vdnZrj`@}#8y^R;I9e7?5ul))4d2T-3lF)(mUI4+D0v@i|m zXAQjoT<8I2J8P@qYKp42J?wc{eo1^OFe<+%+eX^pZUy!_dtIxYt6hJTELKUBbcqg# zlC01Wul%8XkQO_dPfK@D6tp_K@Iwb)6W=B_);fRa=fHvI{cNcxQLnD2z|w?3MJC`=)#_&AieFuD+(c`Wk9|EU;lwavkm&sWT_(3Hkw`Q5{XG3g~1Ek!_mg4mH)B5op>& zYNY95o-{ETszMG_ykz#l+Y&c#%NIqJ(*!o;O|)E3x1?Des#~(Q<=hS%M&>_X6(CEr_maUeeLDi8*r)jLeFu3Yig8 zh>4|eWL(9|vPqRlo@zB`1(IGoi-!;KwopR2LS)bD)ss`l{n1JwoVt59{^KRlx|6-RfpM_m+Mq*@f#*NZ*RSZ_qrVF*Yl%zMJT5(a`NB(#NF2}THaaBCvYjEic? zA+p)rF#cL(`aXn~J(L&Mx?*PCc zit!IVs25R>P&_-P)+urJ5No%$$Iy8WKN`>Y<~|9QMtitIt{TO}10U*~xC?0*w# zTzu=eK%(jlyZ2&lrF6MW%Y=Tss~z`3SBYJI*{{Uy?Oe>GdJ~c=t4fc(#`Sn{>VO_) z3A@-nkDD*emlrD=*l)5A+yA@rjnGK@6X0?7JN9qM-%=hAeV={KewaHfJue?oj)so4 z|3dnN`$YOo$&c7!JHeQ(sgN?;X_k?+SuR{?mbz}1@wi!fJft)XIb7k}?*Kz^h#Iuq zq5hNQZqJ@}dkcpMu3;|L{KZ(Y2@sR ztV*)nVX~2g6eVG2QH`}(EeyjVlg#HuW)rX~vO^k$sC!z?L4iwfBiv!`b70k9~oC6}8^&c6p0}i4jy_N6*W9EA}P`onQz`UATDO*#+#!kh?SrUpg$b!{K)G zZJ?uYd6@TAVpy@tLN<#tK4E>KOi1s_Nam%}$~Z2Eq;b$9m=ngacHQ+4u*{j%RhwHD z0TF$ZUG6zf4Y=w^dA;{MD(wjehUNVhSt%TbC3C(St0FT6Eluyjc8!rS>QBR3}KufCej)s+TO>1-8d55Mk zp2&jFKcp?yqF`sSZ+zyYCtqxu)46pK3I5Pdq4H5_G!wA4|vws zMUHzV6s^Pxh4k8Ln=D5|aiPF)$+l!JSxa6Td@T5w^jMO0Xx)i!y%$^nm)RDx3lj_U zWvON9du+qPu;(kSd$fC!!-e23`_AC5B<-^I!&`-0Jq&6S z=-1RV4%$$w5Q3hFpvGen6{K?!z;o^hAC)5!I4jpG?*Ss9-=iJYFz&9;qpDQE}!SURa7QwlGwwA_k`jKU^XiR6jzB@Dd31LdYV`PxzEP5`9lb>M61P3hnu%2kcxlbkwKQ2x^ z8?0%#5Xsg7@ho?isX3YyScLY@R2wZt(%gn|+SDU1IE=dCu^&|=Jum|vS`_iKCtmjJ zH5glwZoHa)r}0Ov@$0r}Gmt)EBH?Im;t%ktT{D7i%yktM;(l@BWB6HB^+hO6b8Yzi z_tfHv=V@wj*+uv(0ib_}G|V)HY1)j=BqvppOdg<16*1#o-X~DgFvJn$BOX)H6pJRu z-9)qPn>=^Byz@D@$F;}3$FnQBtMZ29jo`2KUzhECA<1cugmZ}7;&``Y3-=WGRaK@? zx73BYXIiqJs#Q9A7CU-{UeAKa;^YOXr4^&+GWjyCuV;&GhhvAZ!?Po>BltDjh%n-L zOgfs3xGlWEd-z;bh7SCQZ3Y7Yy;AAo98PCh!pXekWTmT8?$W$_ z0!0t>bRn}e;B4D2_eEf&sBMbxh*R-BaTu4iLZMd9f1FP1GvV*bXyG^Re(-_4%klj3v{2Q|^4rE*1FOJ|B zhyjX|Ph0M%@)FvC4#ms^;z zeQXRDW9*m>6)f6o<`X0ICoM3e1GO>^V-`Ps-d+phaR*d?4`-wivD<17d+IJDB-ACm z7i~y{GcV|_TktHW4bxOsaSbQDe;$?T6pycV>M&o^R34iEm;uj*n>KHzDRZF@Tx1U( zuSlwR@t}Pkd>+nWgUyC#y=LJtjfjw|CZHGKK}*o^)&zmCdC-zGM4b2r>xqC_cyZ?_ z;?a;(hEJ?jS+SPt@Ym94@vs4m#zYqj)Y66rEn=;N7j)+!zB^jHQ(&5Z{dfKt2|VWm zqL^AkBW9AcrbT1(O=38arK8)Xu=;g(W6LK5_oriVM_~5SMeRvg?M!rDy8YxOi)xL& zyzDb}esx|x-}pr$lw5V}=_MD=M5-zrluAPT`t{c+VjEIaQv1+jjnS>0bRyw*2ZIA+ zW0!j*ok}Du{<8V`Lf&=+j77l_qCXk-eJD(BL*5>TSq}AS1titg1Yuib;46 zQ>04aYKc@!qb>I$JD&Xj{i_#`544n6Q+Gt{Sx|40(z~TbP6P&j?E|S@|Leo%s~VXHEeHseVpqg2JA(;}}7A_G@X%S1AP6R=;Su z+e+E(7B4HaiaqOBlJZp-cF zcFPZehwKk3U(X%|Co1n)wKl#I3@S3VA3}RL_%?S6PoEBQA8|Cd9j9?z zZKv(qSsWVCmVJZAAr2!drS4gsgT-7uN9E*l0Dbm2iPfnInJno(a!&McMUgV)sX#r#yPRhty97quy5N9P4-zQd{WHkV{ae# z*x2?g%xEdeE;sJ2?!R#Q1>GI7T8fJ-Ow4XP&&OmTSVl6ex9Rg6CHR+g%4>JHkohjf z-1X1DaQ8j)a+z{~pVdD?9gG&@PQhtr`=d7^=@sD zEw0XLA6UuviFAkwx_$hW%tid$%n9Dsl*$yOg8`bS+!p6j3%uO|`z&iLl%>OIoyWtQ zdAOS2#8Z3+#ew<+Qj%nKHb-_1IlJH!L6|K@@IY6>C|N9rxQK&s^L&D4{4~wb4vOKS z(;al-yD)tgXz6e{t-@*^@*R-k_@mS;;06pe%gE8NFoM2Tq0a?7T!w4VMZ1(@upaCU z(m`jz(FG_-$${YiFguaur#CMR@Kz##(d++yI8b9!eq8<4VSkMo^y2E? z!`>PriMaaSVG&h%QazvEl;o~!l3yaJiFe0DLWo)Irmt{({wr!tbLqh}m+(i60R`sL z*U=YSZU6z02X~>y0^E!g)I!lzJL_?zjP}DpkKs5Bf;6CuNTKnBHxbhkWDGvkvk$%h zAM);~d)Q68@jg4#v)>Q>a-ld1Z$22iWL1;Kb9@2`F@HW%o1VF(d+x@&sms?H4u{i`3#4Z*n>OeAot7KYg|*Y;E;m0j z*D?R*OV>V?O!izcE9`a))3cq6hA!Rk6qdE-TYxke1AzH9K;Ib?j8gzo85&F30Ji&I zrq{ub(YsPWuhC|gkKHy&OvqAB+ZvaohmR92DeG_@gQ;#e|#UDdP5l(V^tF{b6i>ompTbUVC?Cp9aY>6v>&|8#m?ab{PtE6VdW z`;2@koZNiLEms);Hl955zo{oJ>yZ@9Fx(Qol3q{UMmdJ!@bkN_UbpWW3 zu#7wl-(`+aJxFShh@2ib)0UDB0Xb3Blb`qZ(~nu!|K)1Sqxjp)=*`Tu{4+4%{>dQ{ z7F0Q9j7yz(hPmLS~K0_%m-Iv8k5PGw&J+GS@-KjVzWqvq6v? z5hR$?AejycrZqEM&5D^Z{x2DaMwQ0oiNLMN?UYkSBF@lNYCT)*KY4_{$>^Y^CKR{Ll%qt=6I3{6 zTfzE%e0;OVM1tX_f>Yv|L)3v8^-OM7eP*4qW|K2=h6?JL=_-j8$q>8>h8rLi+>J@R zTE?ge>yDq3_SfWJA@nPg+3!sL6=b)oCxEY~&An09s8&$0P!Z#(VboSJDk6ANY? zII!-=+b_FsZa&)HQHyEeOnIG8p&zhL^lYjlV>BDN4!$$s<2@7qYojW8!imJPFHx5) zeg60@wSK+55Wlb}@)vb2I)o8ZK_p{!Bx6ZXfnOPgrMpc@doGxfB;dx=bRH|j;^wYc z^BEDStZGYAda@;N$w_%jD&gjA+{dQ8DMa2B1vN8@96^!bXo|=i<#CxIwAM>e<(EX> zTrGKXxzNk`8}il+v6~`r$Qvd=f{LTqSEcq<;b0Z@Qm#W0c4vDs9Z~gm>QKbCGp?i~ zQ9bT)<+4GVl9XgB6U=8up>CA(uSy~Seb{uU=pF$H6KmsA$%H(j>{lp7K^Lr+sf2rz zYmbX^-OtNi)&E3}T2f@14CCY8R-|iistiemlGoo^>L?XUwAGg^_{(8X^5(;nQiM7) zBtv+%qkD?1%%YGjNaX4)f4RpqiD9 zbK-tU)e1NFvw;fdmC@s;BHMe8>Amf)A&cLy0s4(k9ie2mRF zrNbE`;Q)udhSSkm5BK!tA)k-thx2rvbY=TcGyWmd!;4XI7?p^N|40m%cW9fP}(n@l4w=xlPCkN)<}CLMrv{cNKI}4smTpM&eCM1ayE)?NnF%j zv;7fqp34>hHWEkYf(a5pC*!z(5;WT4zz>5(Jnh(e~Mva5KGHAC=Q&B zH-7E+|t8lP&uT$VSCeBP*AYPi4)y3ob@tR?sj_jT39BJ3A8h}2eb zw@78g9+BciMWiSQ9|ocy0FijpJ7@0$8b{!Qv*)n?z&R}V(-C&c zIl@11jsQM7BADk0;99VXxtv)JY=B3aD++X^y}CgiECjt^1y~KP1Dn9DU{i;>hZ=A=!Q{DE{Vnt$6$d zi3=|li^2&!d0#_S;W(~NUC42;XqLjO=JDqp{8z`LH{g%AcU8(Iy;=I2Ww2ScKDV8> zeSUfV=eEGP+uC{8Z{3f6y`xg;cmS{dRPHQyCUC9MT|$3Pl{-7j)J1qbq2L|V7blOM zc)FufDkWfNrP2w1f2O!VFUUoIRi9N$IY!N9u+;+#2Px01R7OcKu8tS#C)eZ)9hBw&Y6?+2>lW8A$h*pSiUj|U(w(zF}PBNE5g@>sh@=4Pl9ko;JN^{+Y7gO z;XO{c)d_d8@D>*CqTm(^TCR%2j<^x;i_`IVS~iDdBAmkyM(Gbh{dgV8-oSCfbBd&D z;JiOr!nrHmRJ^@Fbya3j!FD&=#_98Bq3r?%|8Ui#n`ceixNrT{BSW(mZ+&FN{7uW! z(S@6qU$ALWJhyBE{ZZe&N3UP|z5Dz7?tN*~_G5R=y|H`4Lsu=jf6L-In;%+n`B&H1 z(D(iV`m)#4Z-5Z!d`{v0PG}v4iw#coclas40z;uudi;=+54rG2(*I}dOQ761&NI8Z zaW>Az*+8QkXmmGjpaC>)433$>oSYdR8r~dI;!Ro-DTz9$!xF87l4+TCl$Cs2_RCY8 zSWzrmmSpMKiQ-wsn}J>d-o`|0s~VVtqMhe~h?(vJ)K&lg z{m1uLb=NZd5B9nL-rLUi-bS<*^-0^)4@Di=FA8={DC5VIqgk4f+k$FJbh5NR(@79N z5pA)ldjGriPDn3`rbw%T-%@CBW)a1mG3aFOg3``lH+Oj&W@yHkp3v!He{VJBDL_%d zoY5GF1oJ3agkGLdFrIk7YbG$AQ-|x)P@u{M6iz#r`o)V&#ZLcn5y@7OwGFpj^{Yks z5-Qa$LHwXHpOG)OiE5ibf<$B>-qtHac^kd>o~cK2(cS%&eEaQ(q)eT+^36^1;yvlG z(I2a9xTUk{F_d`8Uo!QZK8A-+U)AMts3hQw@G?KP{}NE&r$)$7bFHlqcQ5FrMVGb_?K&+ zIjimiU%7?&M;Ks*@gVO;$P@hU`v z6&ve@rtq`)bNFkx4*!hqYf#L9fG@k1v{*>pn@|M+vl8#WOyDqQ>L{ATFDWkMJfWN~ zp+$RM5C=Sjh%xRaUR6`az?al^e6ppuBli$LvHjau!@3tCNTN>AK)pK-`*I&-`38)6 zA02O2pC-PhqhN1C7^eOSJaYto;vMZ1ZWeuF6U6Recx=QxAKZ+gGZ~1ZuWRG+YR3!k z8=JLn_*ruQtsP${4|p7fUf=<(J@^xJ{2*-qxYo{S?VDly z*R4zQX zp<~c9w78T?HI5Y0d&EX*q}6CJseFsxVi9ONi2~cQIPF2(8(x zEkj&q(foBsh)uV3nyq--gg%E=b3OW~m9K4oU`uiLWYS&Vuvh(7AQt7tOsL!ro5AOClg;Xg z=+DvVmgr)=7Ar0IrD$e)sqnR#{%5D=MS~<+;u}WsBmK{g%qAU@WKC@7;74ZU+ipEL zm-EG|5gpqqg#XzejYs{tjYsQG?&eGBxYrB@x-mSYe;R7$e(Z&A@7~Ez9s|b?9GL8M z7ABKPxm9MwQ?2ZH6SNZM`S;rbMnwuBon;Yinc8}FHH|D8F~sgSBw5S6gwdi5rkp1n=k zKAthw-cVn;PPa_ZM@u|8A#t4|rB3++_cId(q*qzw( z-NM4c9`|A(nOtnQdvg;mQCuvQMa78q@;$KFTkIV?wfFGBJzE9w$icn4H?*4zNVVZT ztvQmFZofU3bo+cjmn)YQtCYhIE>7f+xI_asP;Td{qQC^Qc!SCTvc!u6J4Cv6E?-ox z7FRV5wTwy`GV<$#-E#*z_Ie3)xTYa!X>CH&+?v{9EE_2Jx`W?hxB5v_Bp48F9+nOJ zid9B`!YaAwq##IXW}q6<;SMni+qMdZWV!DDBuB+Y(kh=AiM!RKR&lJNT1#V+?RrH! z#OC&U=aH(3XF%NK@_Ql~#!}z+(8MOdTTN>^sqL7k)a72rOW0Xv<~Q5gGjXJ5K*nZA z@nikxIX6>Zx1zO(mh8QLGZwN#aFlzq_y_-NF+a!I6#kZp0t)0}$nh2Oid_87x#G@nU)3W1Diltk3S_oX}-P zg9Y9n^;=Dhl2(6d3Kml7p;4VZJ96h&4|k7F$Dv8GoET)=O0bj@$slOa^+wrCymamG z-G6ph-NgznSHy3_tpPes)sOAOU)*u1XzRb2nyW`wOlRh?zj&}IR!2iZ)*Q%5sRS~+ z-s=^ZXBd!QR44Vnf^xkZ`#ARH?j{p9CsJom=W>+UOg~0Faugihd-8k>v?`TF@nrra zpiWXJ`A^WUM@60yM4qRx{7rM>V}|3G5A1ZD&E0cPz3`BfOpZ$hj3JFQ6#Rvt8D%u; zvSustRj1}1k^GmJmEYnMovT_vcQ$E;qM&AED8ILhQ+}84gsM>fJ;j0#`9|WU-^<@U z^t(K0o31q~-gJ52<52mTHRa1uzc5t3a-*vxW`9rr_d7f))a}0u5wPt>zlp=_6w}ef z|H35bH!pTiK}sGE2Iz#{wAXaIiBL`8pG{!i1X8Ak31>{eYyy8{0eX= zS5W>B6u=QHXeq_wabDYz3n7T&3DOfwWEe2*1h;x(@uXipLPj{B!(LUNFPlwXjx&Se z7e!!a$=Oca)sb##m`a=HPt;q=;XJ0TEgjelDQ`HxO};H}TM!Yk3C zuigzC%zV27zPRt>H#d1pu{Y^<7OJ&OD3VH%Ol^AK*qx3BYmDbhnGln%lyi1E?(uI( zG#0Bts{WCkOu-=r$e`+;a^pv2(C&1wa3lhF zNZLnNw=5ZTz78eo-IxKHNEpDE-y#({oo#hcFF-hb(=Wx*t|%P^q6f(f3XW1BUmWZ? z0$C#p+n3PRtPnjw$Pp`n*u&}2DiH`Bzg@rPFMNIoBh8NxzZQ)SU)alxPR)uN9@a&|RMjH<{Xd&dc3#O1fzI6Zm!EZmkb<4RokIf&7(wvLb>nO^h6Yyul~2~vQo5H>28QE7As-< zyUe*PXk^Hc_J#K995Fl7Rh1em~q9?2!_Ohrr1iyM-Qc-Y3oFLM2X?2v$cptxOO{X z)Dw<_kbv1WQh8jV z1_xRk(lB6LFB76jiu(NceDsHZ)#$Q1l-Zd0vHEL-H=Ep2T$~ySip{<`565c^Drw@% zFM2akgL*%csj=#_Vm;|oU*pn@)t27W`#=oK^&ox|IxE1@Babo;N1w%Zb>ntB<#cAT z2!KD5oQ_DG$uCNF%#In&lHcifaz-i5Wl=GQjd0wcm~(Y7)U^R$Tp97DqBdMO*0rHl z*AMl&dJj*G$9106WJUdAq8|6^L=m^gdex^5p;krZYn_PEz;zo$1izY}$a>XBOkAt1 z{y};~a;n!LFAR#JFFOvya$-Cm6o%IRxpmgwkU=d6>M1a32S*8H^Z>(HQDnL_py^Qy zLbVH7JHv5UDC9CAYu8NuTYi@$B4dZHvZD;FUB0Xpu{2}9tdT9v*oW8_)|)yUG&NX+ zZ6~~5EeXHD(C_O7bQuu%Q>P_cf*?;J* z=k|EKW{UxLcxf~8g*3Ew6iJ%csczHY^NFn4;}9{H&9sW~Oj&GlVg{2OT$q!&jof+e z%bcMz{No3lp5vr)(QM$1C5VOBM87A_`6QH$4QdA{Cqsg{<0`_#dn+ce+#mjih$s(q zeq-&A_uhyM?|{FI8@N^l{P%J@LRzD(q8ee!8AfG|kxpF=R6Aj#k?YjJKUTUCGwyvq zK9&m#f;&B_^#5CVB1ws&A=E5`a6dUFL$Czpu_P`bC<%fuH<9}Vl1d!DU4>F%ute9& zIJ}|}dLX9_JwEH|D-6zIYxPSMFW-eD;cx7zHXd+QZOAp&tYhkB@OHV*=*(vGR^$!D3zZ!Xn?I-SMhu8++K{(4cccvv?@yBsEpF?(qe zH}jn`_%ZPcR~Qr3=lQYG7L%XK)7D^`bHJcOx`GbD9+KNpT!PZld&egWHPpN;@n~z%vQDp5VyVFO3 z-Rgf4Ml!T0hU8`#ALmB$oFG{EmZJU(z{rRoIqWVoAq??Id;>~2ij}*Rn{v5=V#FJa z>cwCL<9H~mS6vp#%ekSPuJ$i#$mp-Q-%H9WJXWI$aot#PbE_9I;E+Q9i0(|!N#gcv zmsiL0_rxpSbWiR-`%K#cQN1z0Pcm6 zBgha!jsgxUOyLym(3!;mPSfd9A(rL^$he&XE`Fd{{=p-_Pi1at)sAH-S+3K&b#tF!!0aoKrItBWl4iv#~#yu7ru z0uTi{9p}X*^uQ6=QplU}-{N!x0ADwv0qlawy#%H!Bdk#$YSq+{LOGz*sTX+lg3cN5 z=GC*+CZi{UBX#0RKZCy`go*%;KykkliT*#t$BQ9RTvw@MW3oWMyG z!zoO3iV}wb+IV@>OuMt7*0ee?Jl#nhhxmQaq8jsgi2jP3jZ|u66 z*~eeM{p1^u&u)19_1lVfo;lM5R^ z@!gZRe&^gKZ(;MjU)}B5dhEpRW^?z6ql=#C%|{MxDyF8FjvN~>Wa2J}1QGJM4d2F$ za2SG9j>xzyvvsdS5?O&}rIh5bT1#G<^O4n(B&7bFSCVZoByHMmzEEpb z?~SSUDqjQN_Al-~d{e2l_s()>f8H!ijP(1_w#<;xUIT11g=1+?dPZU6t=XtFl^*;G0_tovlT$(TMaLSFhfQ#lV(el>q41nvrf{UNX^1V%$39|DGuFBA(A=Lwkh-ACXd zB1A;Ll7BgmJM)qJr}9KT--)8{dcI47KPSPLNN|FDm^@DsWL1KJ|NYmJQi!nd9ESFE zRW$4%v z>$lzU#$z+vr-O37$W?CMwJme)Z-#*Thz2-sd}0M~>NWg-@2XTfL|WQ(nqr)V=OqK9#Kl(LjagR}tv+r*d@=6(_1E<_s~1I2rkBU#@sw02TNd)d#F1X2osUs|+7iQGO7B+ENw1I##Ji0K z&vZBLYi9P}RCT(X76)YnbK^@Ryq$2zn#t%$vk_+78OSZKZ4^0d=$r>cm&6Bhe>q$?5M)Q0>4Qb zIN$#Ay8}9Kv48PBB)3aN=kWI$#lJ4o(8N?FK4TXQT&@}YLrbI~t68PVnf^c-O;Chr zBd+|iIwo5CHK~&gh+-hyk?`;P(w*clVed^aK0XM0U&n6gmQQEEj?B>vevSf9Il<#r z@F)ptwO|o5h6b}=-larGeV_cs$T7@{z!CDn*c3}gS`_bQDY zCQ1Wt5&JO58Bkj^OEgH8A8d5P2A7}TbMQdoM?WADpZLd0Ct|`Kk>>94=-gDt>+)Hk zCvD_mcFYvU6YBlV)5-c&!v5{oz@H4#18-)cpl-KS$0q8MjmboqO0~*@7b2CoPs^D| zIDVa$5kJdrF_8?*^DN5*Dau6BK~s>-(?Jgn|DiV~ zXkmHUV*n(@xrZ6$N@chM<$)@9(En)E0^KU66@#^tkXLADG*Y37D5l-I=yoHg6B|kg zJ+MK`i$0&r*)8gSChaC&ItH9kIVO13{~@WL^GYI0iv-{fdgA{6t2h-(glS8F76h)j zwbJ(xlS+-zA(j>V;AaMyUSe(R2i-^Svw>79;&yYQm7*|fCR5BuUZ}oW#pkM^UIop{ zh6-+~fG0?B7YPg`AS+d(_Co2^68>BX++PASB~UAYW6EjeDTQb%;GQrDE2XkUA9*qY z(DVCnYs4CIlq%BCn7tkRfkAg&p?z`yvH`v{>7m-_5Lw8r48#dth*mT~;#`sFmnqg~vs!=t7l~j>5ppxwLX4Z{~03H9OsQl6CoHSqfis`z|?&%k;u2( zCBGlDPuhF==^|IkPe-^?lvKi8iJP$5dv>e67bOps?k+uEA{L?S?VtqD=DCuG<4S=5 z$3X%`P8IUgc?%yUqfh0*19_ynyGd}E1bH$_iqm<|^mHD&?kI>xdmHEHr>A?}ZoUV4 zy>6)$jpdVEqD@ZEaX}K;{TzJ*n9*O5A)$p#%3wxgSd3hq*g&c|YhPa0-lzfAsrBuS zwPuIIK|w~L&5dX}1gk3ZSJzaAOu*+Edc=+ic@ z&1m-pNH800O>ZqecsVy!&(mtf$nycG@5|>%zuQL9L9_bDbY*<8^7&&G9W8 zege|ML^X=^i{`0JS{8JsJL+~@p>|B9)ilh3ip4Zcc+#Xb7$QT~d@uxQe#q+$3L#NS zr$cTj%84-93HnUH>gGHj)&xq?>zb>*RJ_i)(9X+C+8NW()vOmRvW-e*U9rqatgnxi z2S)K48I1m5=;N$BwpCy3iJ^>i_hIBZ)9_IA)K_pYW@H4Sd-$ zTMsoDYb+A4;KE7uP4jfI^0KJj^%ytxgmXuZ^o`UslW!DF@u zG4zP)cd-vJ17>*@V4KGL{w}%=5`Idn?dhL@pZb_~&*Xpo);#9vngJ$-P2Mhm6yRSl z7_#7pamsUE#r%+kDqT9^1#!m}2Ofv2Jrj#5^ck2vXj`@IxRBQCvCgGyOP2HM{u_QjZXyPgTMxyDGf<~v9(*A z;$T{`1!6(jURRViScD57A2 zRs_n*$~p?v&6OFFl|&z*X0Vn;qXJ%VK9LJKNqI~qKl<54hA-Cqu}aKmkPZIwuIbUG zX2?M2Hl5x|kb0ZX`G?Fc=WpK{OVk8sK#1G?Q{(wWvlsGYtG(^FP3Tb8QH6N$!*R8+ zUEM^e6+ENo&(vD_T20>~oSk&q;cT@)D}*^67<`dA1&e{$8(;@Ug5JwsIHIc%AeV-7 zgp_g#rq>Gc#Dm4+!|7J{y5YoEhGSgIu(h?yYfE>9H&Bx77jrb93wzB86IisVf+q=f}fvza&L zcTJ|O9@^sfQEtjB6+(rv1O@HE3iUb%$4_E*Y^v+DVaO4XIs%-rTa7v+Qm4aiwqP>o z036-#j}`#$co{<@U((jj4%WoL_e;x)Q+ooQw(Qgk-C7wK1!(*~J#pe;^(F97TBibB z|E!wW^U5oGz~6pG{Y#{QCe(nee+rYZ(QW`zDAO61jpLH!bP~|J6S$kkY`}&@jzf`S zYa*ASVHP2hpxiY8A^aGHRk6mdm#QxA#%1OI6vpq_S!(P(-5K31QFI~}_i@b}tM_F# z-nZ>}{Zo7PTJkgd8ubG+=~UF~qdXLy8WD}LVpZmGpv|W8u)k#}F%DC(de@I(wlkSb zIjoPK@rMg~=tJX}3%HO2!MLFVL6rCsnk+3A2Uv$ag~`v#qLbCNB{~HR7Z|J+Z*XDk zwjJX%JE3GYx1_}6zH0N}bTU-mcIWwR>Ul!%h}M&ywBWaft7)mOzZ=hNING)cLX}PB z^4_VGeA9_;@%W*g<1zKDGZhrJ&zGrKI~$nos`{^c|L-rXVKL!LZqh&158&qrmlU)-v&Y*` z$m`YNes^eM5-p&E2DU~>wVCJjrZr$P17V`DJ4{!U;Z(tuU@61!BR46^Vmm4*H6NN~ zjE!wCly;599Af*KaMEXH;weXEqL%kqxRBc!Eyv2!CZ?R#2~_nR zS*6m5rlyn-R~&;3FJIp0jf(=6$kB#+RvL?(HU;A)AyCPLT8b?kFY@a#6@pQz)eW-# zGx|tGNu9Albg?o5mE^*(5C|cWxCSC|uEJ_iR*{vfisovn>n9?I_yWUJWA!G1iZXWF zP6(^X>tNM=J87}mcDGk+6cZpcZ?TC6?|5%puObxvzFUcgKwY(#A?4B)d`+x!h} zRrr7PYi$cFZ86KR%?iIar?qWdy&_udKe%EOepANZg{_-bzG++eCJ)=n+BY|^e$(~; z+4~l_D672xGtXQY7-m550?6gj$j}HccttBwK(G-A#%p8@%;1c|49yH0Zbn;M>+7nR zwMB^LmKt6&{)pDwYi+l;t?=z%`)+R5zO^e`Tm8#iw{>mf`G3#vIWr7oZMN-y_w)JV z@psPe+o+)?J%jaOKc1&aF!uclqU$)BL(zRpHdnrPbnNJVzwGJD*_e+q-p_b{?8dS0 zj(vCB6om3|<(Z{d`LcdCA!_1<>{(ORPm`zrU`E@_|2^yJYtv_+oMV|A$opCT6NMv- z3g)+1#}`+Yc9jh)kN*~7>^~{&3kxrnzi2D6RUjM;g;Q!+WL`WCk^j$QlfT;a@NmF0ER6>tGlRgJCcXhQTlx2E$+&41-}X42EwLmi;&^ z{Lf(cmkRF>hQTlx`oax2+_0m!@jaArs`1j)zwcpraN{!Cp({Zep$0|xAhys!GBPA?*HFVFW28x|H{qR-MsPU)4uC`xA`sp zfd5YaJ^qLM2mMd^U-tjn|Gxjv0RzI5gJCcXhQBA!Pj+e;lV%~lQFA*putQAC(v@a@ zFG)Ftcm~Beh=;PFN+(NaTGXbaHU;sF-t&lalnTU46&K=VN*>}0io4KeEQ>+yST=;> zbhH@{3Z49SZqa5u=<_&-$}2#5JbLA^Y-*E@zA1=@P@InPDd=?<;u)Ye1-+UPS15%Yy$5UX39MI%(ItZ*vg`j*0 zajfzt;vt~Fkj+Q!LeyH>Qq=wc@estz2wz5c1>qHhcR@lI;zj7&#TKJ)7e>kj|H+Y# zGyW?*{6`y;$fLC6RjHKI(r-Chq-O=LWlN+j0@sDL(X#~U1A!aZXl;;A1X~?yV`LMU zMc|R_ZtZA+o6Tdi?ZMxn)tF;X2wcNrhMW?(#3JIx3tY=Gq7 z5`Ht`k-~;5uG&z=RU4|fYC{#*g|$&_sN$*(Ra~{9imNtMan*(@uG)~}QDO3%NVXpm z9vxP0A^aY~`OgMf5`RW`Jn*>0#|R%9)_xe#QSsqn<%!hy=Y)@>HY&}Our_I7csjNJ zFT%$W{tn?+5&jX!jbZW|!+1r9l}874*~?@$2^N`%^+jej=3-8y3z(OA00Gv>>ZxQd zaz5ZZwxirlEwWIP%W4s1R)(?_=pSHy$~lob(Rwvv2emXK6e3rJQYTx3k`kis0pB1W zE2uYub_3|hpz8%qH>(C-4ZI$8z7QWdB>e=EeoQDgjb)Myc2KBCTN!-q;KONDvsI$) zeB@jx<+Tlv(I3)@+rdqG)PAizHDn8!%|X5jHN4bLmgujeO2;cSm5ECOYO6_Ko~r@v zHR$W3k_NPLkmY2Q2gjobGI8s;sh@{zJCpi5sfCl(fhV`LgJM}o6l^O~xgRCme)XXd z?9+qS2OxzTJ^iqP4OkuZk?9v`*N{cMD6>;PRWCb9$$i2>GH@+ck-jzG$)5(c%=w#g za8FwStJM;3nPq^6oAmUCtUH!1B8&P%T2BS9>DW8_sH?R5D3`KwP_kV__C9aTBk9+G zh6gfmf387ri?O{5P);`WKsqOSsh04O?KoBLrHiP2K#YQwv~bY4agUpb{V^L}y_CF0 zCfORvOVm*fggmu|CKpW`eC&Q!%-=pA2-eh-^&H?*O%&Z^ zvo*x4nR_^Np~&9hpXQ7Tui8}~0>UoU2qOjdCSUT#65TF_Fp=QC0MisoLjW+RQX z8zUR;`(G!Q=PR_oy_LdeR&bnsk708 z){Pf5ZyK`>owN05^T(69z+$SEPeT!}K(;=%EE(oR|{ zc9K3n{iazTG}Z^B*`KAuHKQcWyg3?MbSY9aPdlyM%{i4c|N6 zw6gojKZT56Kfbgd^xN;{6yb%zHPR_0boZMR-=s4e}Wmi^Zg zbqvRg5%<$fsSU{xoZJ0<>Dybik3&$)@O`7dPxo134cW2oJC0*;ZRcl2kFZSt{nX3U z^JAY~R-#39*iI1mhBaAT#~q|WaR18r%4%*0RWGeP7e9fkC!^rL(PyLJ-qdHO@O7ns zFF&mp>UdQN-7mh2+P`L0eIX0@#d#}0bGViy;Pv5q^mp}w@V%}OrzhT`gcTsSn0}X+ zmlUB)#%fxInnlRvp)?OASD;0?sK0_nY%%Rgg=n{s_B)kE8RBB(m(p5Sz+}qv+;wPQ z3|hQzK3hUO@kGUvWh&;#V(Q2sjD@HH%nW9MSkE*0Ll*=Iv z`%6_s9D|ZAK&}k*3q@@%XcrMZE4v<}~Mub7&crE<{?2cICuB zmvmO8EhZfbP_OEePZDs>SwdH}9k5h=Qb^9}&qJ+^ zc8U`8%p*<9$$I(1W?Wk<<@&TzM`|u!6~kOzDLU|z^}WfZHjl!a02Z@a}*-`7gj zFIU8K$#Nx>Q%7Si3pxtBNsL}{G5}`<@U?9 z;dE-eK6#G2s@7d?uayNywDE$e?DsbKs+~w`0&DC(r`+IiIDK+}>rrHrt?p{4$M2je z`<+hNSy$zBIGhf-RxOnsPJgw}UC$LH9u8-~?ymJ`+1zzbzg!G1W!^fwhx4+_0iWIB zth4)8$=;f;w^Oh%XCRF-=Zc0}yHCzo;I8(0xwvB&IemW4dTQ46DbyUTsc~uf0$YeW znKjR6U*qHt)*+IIpkv(atw?VG6 zH_8oAHNcHp<3)|#FV{PLb?!g_mZ)kZQ{^wT=8^??rrzguG*ky;`XY6E zs%sm#5d&V?;r7>Kpk%wpfnIJjs75QW&ywXJbFZhiQO8+a zb2T?E+PIvx^#e3AN13DesMmOFYrQlU!izHHD!U&7c|9So3;I`vD-fv989(0X$y(!H z<*s)+-1aQ5Z^d|?8;_PZ3I80MDckGoYu)e|aOY$$KA|o)5ndN9th~h=+?Ff75S;7p zTg;sa!ZsP4Vn2Q5axw4U z7)ug4oFM2{N8+OG#zx20r3k!%Vr(>u}fb z)JX=ZZ-7F6S0Z~iwm&;2EY>RWt^5vp(xwNcg zQBhugo_s}aIr3Lz%8QF^g(VAZGFp`77TcD}B?WSB@lyG^qT;+vIe$rMS$=uBTv8?% zEhx1X<)f^qc&>F}UQzKpc@Fv&mtdzT!h8f#TZzmW3Q|S+<($}p{Ia=)$mY%|vKHBv zX37Ocwqj1R07P@;(%dpz(Oj&dWpe4lveJ_Be6Y_0+2W$&f--Q)UyxsH%K}%F$@zfhh({PtobS{C^grbTeKik&dXhp zJ1?Jlm4HeaH51Y;F3hJQ@XN*jxwfK`Vy?#Al44sKvYF7b%oggpxTrioQ_d|bD(40% zC@TSZZcg+lAtLBkoUc;hrk4AS2%7Nx!t(q+S@QC8t)NxTJBK&U!Xd;<4>kM&!$S`b zRjg5C#v{T?L%*0)6LUejd%uH+wri*Ul6K~ST4s2 zw2Xf;H-u>vg@0zm*aGSIlO(3SkFhy=y%l*`Js<@CDfq{(ReEg;ipwTUVC-)3={k#M zOv;odgBt%+)f<^c+9W;5v{I|o3VfTi4S1W>27J4;1NcMI8Q`Bu=Yju43kkGw+Bl}w z#%l|J&(mH9+^W3|c$2n?N!r`B=Yao7`&Zy!>ikTj3+Mt&t836T0$;0J3;YMVdw_4% z-3$Ca-F?7+s{1MM`}LVjqrXZ&lWFy{40%jr$Txt#!D?6lyx6c9_!7es;7biR0Ix6v zfHxQ#fUh>J0e*|&E+!f7HvAa)dc(f~-w?5jX(Dz<>}J}CJrPHMcNue;WSnDcV_M^O z<0njG{M2|3_@5#{IdW;_8m5iB#T3ajrYMt{X-yVW2Jo?_Y~Yhkj{F20q{SVK1TWfF`WheN7J8xe{T95_@7OG27cc37vL967|m!F z{VdZ&KNtNX@c)ed4EWjTKQbx$oH>SnfNV}+T63a#A@D`!8-XvkR5FdlZm~1TQe}Zv zEo&|7n9g#W;@iFuW2V!C7AXWEz#V*bFSm=9w< z1pZMBED-Z)%o*UH#llBo5#VDw;V%*!MI)$=ojPh_ykNsJSkGp}xEPlhVLjtA<8t73 zV>RL$V?E;4#zw?zjklt<$@oLWcNp(L$(_bKf&a*OH}D@D{|)#C<4=HZ!MN}dIV?>dP_~SeMFdayeFCHhW=N z9)Ch)Gzax8hX1`5!VN4|{2fUxi@+>R7Pyhcu@r$vvUrwCR^@peNivkBg_UTSi4DWE zRIr5qWsq1VS+PK}R9o3~GXJZX)KbDM9>GS5oR*nc0{lCsE9+L(t&##1-%9b1DBei%eH6D*yo=%k6n9em6s?Bwu-&jrz@lKw z5wKDs#%v_UCk11X_Wz(<6TH=Q(U_09B<9+s;u?4tzX1{fh=k`v!wW3%7Y5EUd}B2C z0d_eX!>(W%Y%Ckcu7v+w#j@CVx??bjWwXg_3Y*HNvFU6E%V9IwEOzzR(EPS#66S^B zTctxVH~v<7hsL0>XohQ2H5r--n(3O^nnF#fW{IX!b?ZqeMXS+CimY0>P|v}1EU zrg=$oQuBf4ykwLTq%qQDX^vDXEs-iEmlTk0l{QGvXrr)uC26N?^R$&(kM=|DS?vX# zq>IwU>5_C~bXmF_omIC?SEXC2yG3`qZoO`cu0^*~*RDIPJEnU^_mb{4-AUcMx({?` zbm#R`rGyE^;`5U`knfA{bBtv{WJQP z^snhp>fhCWpg*HOZ(s(aA=Z#!kPR7z35My0*@i+xDfYKYgUe8lo$Pk(U|S3=u!Rx3 zVk?cl=E`I>oz}@qnKWb1jCWyEl;o7bvPiGKpr*5XRX>?yRntYUtLfrhYPwVs>APyW z;+JabdP+^*JJqxvboj4m-@Kj~;I^732Qy$X)%@^P@?y=McdO}L32J)xEb>hKM$5(t z8_PBZHr_At?Hga+cxKbkP1Du1%iH(p)Z9I(_Y~aYx#xb7JABW{ zt!!(CYPqd*M7oD8sQKw(O11av?oYTsQ?0vy1C{9>Soy%M4{UirZJF@EnHF73LQ7W5 zoR%dmD_d@FX=&+bd8y^ymh%tBJ(&4m;e*Q`T>aqY2iqTf_QBsgc(&C@y+*fMTPs^v zw{C9T)%sNHuUbFc#U9r2;cjfG|?yB6ide{10 zZK^)IV|SY2VPktNnQUTkW6k9lAGjZ^7Qmy=(X0zqe!WYkNQ5XWTbtU*0~) zzFYU*x9`xtm-hX3-(UA9?4P{9Y=7p5_n$v7^uUAz#Rpsmeso~xf#V0> zK5+J6)WOjQa}L@LdJb+lxa;8YgKr)DT-EQ8Iue@0Eh6m@=`U4}KK!|wK7Ll!u;bZ| zUv+$_mi@2kYFVeTGr4mT;fBsvJKya*cf@!k`N#xS*CShx>^bt}krOK2u4~l3UBVJa zS026X=zT{IsL~vZ;xW>3BAulA_puz27Kqd)(khYGi}W^;t{3T6k+z9+k4O)T^eK_P zEYg!A{k=%fiL_TupNJM|l1MW|I#r~zMOrM<3X!f9=`AAtkw}GnPwW)wA(0BXo_JBD zuZi?6k)9UmCn7zsrcX*D6>>f~T%@u{$BA^ZNau*ORHVz*ad@&;O`m#RO`jGk;M0Fq z(`VjR)1S{)(`Qer>2t@`^m#GwUoeVP(0fs=1OF-NU$Thwoaz-XXNh#HNQIZavP?~1 z?O>YAM$;Pk8_kQFze!UbTO-AK8U>|c4zGI zAu_KWvUbP^agzDrxMaW`@w#|V{9lJYJ1k+?d|o@OV%SQ==Y}5|5o>;U#Oe_nM|6!i zmoPj*PAEulBy31{D&fV1^NC4`vlCY*b|#)kVo8Ri*rcqa(xl}{w`nk{IVKS5_mw%nv@nmSIRFb{%tBtElAy%x`*dd_oQ|r z^rl6pb)=n6J1uXJpBa@ps$$gUwCGXKr1r`iMr{VXJ~}zAW3*3xW_0`Lw?;iP>KWd4 z)axiegR=|2W6p1w^ZVuecKIx&Q}db9toaMz3#D1o03wxBQk2pu#VDPYN`>FRlsvk9&hMV{o9A6hig^>Dx%a$zi!#o2k?8q`+!eS z_bK2E;4{EkwD}|8oRSBADL7y8yX*Ysdb;8=uLW!av;npQb^sm%>;xPEbODY6&O?#} zy1&kExbyq%{C4{+C7bTIcY*#UKr>(qT5nadAzLAGoIhU=Qr^A{d<1`=9Hb5I-J75RkA;3<+5kME(6ic^LzgMmVX6CV=Xvs1GE9Q19ku&0_+4F0q~h{6mTANl2nf&T~dTDdEk;KxMYJ% zHn=o{OExPS+ZyxaP9q8$M2mD(H{5uEpsnm*k{=EYJt%4!n%RJRu zEXqksB4DJ#cW}%`{)~>8e_MgRs{q_|NjgMHS1H-jRDcz5eQ%Rw!^}$oi~(RaTXK7w zEZk~CzL)ttJJ6yVYyJ+b_pMm(Tg_i6JIuYx4vQWTuk27;p|%FKH3MryV;{%&22G}N zKy#IHK+*#ul{6`;_ZLzOV7TI!Fn6VN#cz?61C~gDSxJNU=q)k8M*tFmk5u$54OHfX z$_P!ClC2r9EYeI=MryKw|E2dZq-D_OFgVPY%z#+okGh~XgLQh=ddB*=LbJO?9d52bixjuutO($`_X$3bnlc#01^RdfH8n8 zv13chW1#jJs6EENaiYA!B_AmD-;^{GzLW-EO2haU!0wgsk^s;-cumL%SM*eBjwhN1H=R8R!x9>W5haq0a9|! zBuH5RDGR={#|>8|elK1pVeF1$?2fZ2$gmDFtb+{eAj3NFTZa)o1-k3dY8~jVL(6qc zADprMyjA8p3Vr7PQ)Z9`WBd-hH%sXP?=JA}f{&~O|1R+A0@>C%48OeJ+B8XTe0u;STX?PfM)@w0A?Y7HQ-w16-zFt<|#c)W4Q+LD6Cbj z=v!kMr5v)12Ba%(mdlZjLD^WOrO7f0>14nZluboC4KM?c z1DJ*WvytX1>n(GT&IRP5EFWnBpb$``+-sSSlZP1+JPlnR1J|b^{o~NH8#+D)9UlXw zry>30karKL^?=IL(7T(N(8C6K6Jec3$d!m*KY=WX=xIYw8+y3V@+aVv$daL{Rf6_X zA!fpL04wqf0L4lZP7c427Nc&N(j(oVv`9ArcOhMcv=(ja03M|Sa$3QaTiFUZtwPRL zaN}0CLQX5>vyyztQVytHqjX5KK_#C!p9SZ$;M@bw$H4hLsRZTMgSrjvmMTw4%aM1Y zz7CXAz%flZ3mrSau>%~BLC+58*a5C*!SyV-c7W?KaP1(DO<^261gB+TT5k@PT@T}G3rg=bSFl+2i)!y9<&o4)QvId;2s34wqlixfo+EX!n_tzjDi%f zHp_+-HBte%6r%h(q)U-s2D}2&EeC#+;*hF)^R?@DM=2fP94YQQa!x)J{K zZD<abLg^rNu~ZLTYE((Cq~DI6<|EkgeyUb1^~q375DVHhc#*{2grfF-d*{B)JK` z!TqBSp8s8ZcR1{GCq}6UGVB3$K018-JA&i?okwJ3NbUv7oA9tbpxgr+B$9961P*qj zF6f~8b_aB*k=78$OV`5y4t&ON%4b2foBWoqENab7#EVMdXB||N2>)n>{;k4GF&j~~ zK-nY}BQ3$%;d+!WRq9}i9!na=g|BNF*t3Fb+63_6>)LeG%>-PHx@%YzZ1FLqdk=QF z2YXwL!r+;V;mMDs0`|cVa(XX-a}78j6CO|_6(Z#lSV@X*$o&qa@IrznNYD||VGa5> z(u_O-iE1EGH>9Z%o>K!`oq(;le|3`=C580Nr_tyE)mKP28@Cy_aj#qjs8#1XEYt%o ziI=>VUj|+I_wTbY3tKS@UlE*}$hzw6>w#WxkcX+Wua$hE3b=zjt`)P7uX#0+8|5nj ztH?K6u|~8?ewvA`VKb52VGX3@UfBf6nxOw0=)ZF@fFQ&C25x&#}=@O+Iu?8&feGgJbNtM9ufGR*W+B=Xs(WVCJ z3V;i^o7M~~q>h5b*-|}lAHWZ|1<;6n;ZpXCVPY+{hJ3_Iqv*g0HbGJ@0pB^hg@>-k zXmw+>ehbR$L3Mq|J7=N%YLw?;zC??ar3Evz1A1FYZx^j~d}rwpv#ta3bkGdb(b&1j z6V$a!E7gH&FgF_e8kgs;fBG(-MUvzw?XcQP%&;ct+5zhwf(IT7TTN>)59(mWkz&m6 z{ijQw0Eun18mVhS6ODH|*}Uxl(-TF;-vd8j9>cMmfL&jRS(O8lIVphm2ooW6uTIFYZTcwXfCFJruI z50$RM>dMzZ4{&iR!7hD+*h6>=PGuF&<){JA9-QEpBUcIFwKdqGU68I$`EN*e7Omby zt9Mv5R-ad(*L$GVP3Jmw{|lb&_{#e`^x&)SVZIMS%4O(}br`dCIrQhNbfq|z)!_Mn zORDzc7Ucb2;jN+JubDBVkJ|b@(USC0H7BiutG}JJ?g`WSP2y~ZEo)%QnvjhusdXZa zA65ftrPw>_XwS%|5r_%x1K2^Z^7hc4*Egn3!VCDw>tq}D!$?EWrg`u zz!|`2fUvihVV^MUN6n>t!oX$8gDiQFCGY$ARDonsKTX)r-(O$CrwOrt@4HL-m7wrX z3{JrICm@H5J&v*t`gG%;|6VhGz$XDhO5h9Osr1#bF z1K#Y1%a#IaDVIbo8s3!#?@EJrrSZ3p7D?G*i3FJOBxF(Mi1&2-&Fdt~NM#bu9D3&q z4Wi6nD4FJ7CDWn@#4DLBqTd@^3w9gzt!*p%wlXcK?*{eVptzeT(HlQdO8d&2z99qN z?**;KJ*5D87JRFBaGZ)1_WmtMMFN#HP~m(hfyyLMX$6%@pwbE|T<%Gr(h4fA%y5zS z&}*U5TKYtyHKbo$-`hT`(cu>FojC?tX7~_5*)h zeO_k&fwJTDwx=8CpdOrq`1$`foP&CB2IA-cQ8)wj;0)A*GZ24Xy$xp|{>(ZIXP_RO zf%r4wZ8!t<;0)A*^J6#8K|MGJ_23-YjdM^B&Okjl1NB(=Gj9Ps=MKXeh(9yd;0)9g zdV}=pfTxaELHX5-K6Q+R_cg)$n&5p+{Om{PI8}$>S?Y|?MxGsI?x&;?K*UbYR^=x-E^ls^6l4=an4CQz9yvC`j)INq@zYBY={g|HJM$j{i zI%Wf(V?M^%b%c$b6=U}?y%kDVs_|^GA9_`jK2wke-wvtI7CrQA5d+IvVL2--XXWpu zF6q5ebl7{L(_!z0PJ`d+i@p~Mj_qkNwvSP3^+b7EjO}Cn-XiEM8L-ksmTkEj={%fU z;=-PFTE(-@CUG)-L_7nx4tVC-gcE8ad}b?u_ThG=Q|hq3Cv(^`6@XI;W;J8S!7l}^ zR4z4^G4z}>;3+%EfzH72M3PTEG4*=}2E}ZQPAf*|6n5Pu~oWgVAL$8iazgt{)FloCq)IXu^8 zU6*?KnW63H}# zC&@oUNMcw9{3{d6gpz%XkP(unm{=y3>}Ni~e1bg9Jjpys4lqwKPmxbCPcu)GWae4s zv*a13gXtit%m_0=KEu4lyhYNOpE5rs&obATYb2d{hk1v5mT@y~a*%nKd6#^S`6cs9 za)^14d5?Ua`4#gklEM5d^RMJN=HHlqCz;HDF#kcm$h^k9hkb(Nvrn=~=)r2`c3vMdzNtQIrbd+0b9 zaFuim*M+|(uM2Mrw@AMb&Jn~Yd|&uJF$sSsd`Qe9R>TsEC{z?ihDDL0NMaL3i=v5L zBoxIGhbUh3apDp^A^HRv6+J0RB5#QHfrh>*N)|ms-V%KpEc0zq8rZ{6MVX>Z@(WQm z=;@p&M|7B66TJZT;1L}a9V1>*fvAAIi@&{y$-@5^&s+dKAq(>W4`IAANLK;tK-WWh z3vh=|5!*rZ147t(-I2C+rvLAq4PnWb_03z@mU6dv9!oz6_jZKM#z^_ zFnmgBuhmCiuLjx$spRqXcIEwT$a^BTV`2Z&nI*E4yC7L=rRZInqPXW}7an@q>#5!d z3eH=NaL+79x#yRo7BjqU6xlv_&Mt3wDwc0Aq%56VNMEX4$bd9^snWA&c@43Uw{&44 zf9aw}4E1WDo^EM|A`j~2Lw(6o2SxAFJYsQlS-&{3Y+0yX>Y^}1U4#N?gdJ$a4xb`K zP(Fbo6llajpb^Kt*%T*vT!MKalsqinW(udb4WJ3+#~?oj`3;~Ex4k+Fe|`&SfSY(n z{~!e333rTl+I_^^<~|09hx}g1p8)z4pw)YWqGM^s-Q~UMzUcK*^gvzJhtdvp7bQa`XKoAgLDhh z`~G!+HR*zM#%%;xVSJg_yHEgYRtRfW1ZfGRc}p@_!+QT(dJaH;h*TaN^nD4|yczmJ zOaL#4HlPvHKqDkeJruo59*Wu}Eroe$mBL?t7V6FhwfE;GOGb*`rFF#hC|GwyCagOm z4roLU(10CXxt5Oz(w#(#JwWeyTz&6;iehgb#c^*wj{=HfZy`k~=vOJ#w<3zOKqD%= zB@|+B8AS`|9ipAbC9i}>Ee{0`U%nISAi8<@b#&5ugUY-fkO@z_A3Hq=Z$h&}c1?9&hp zyMTMka{*iS;~ZBiw1;377-=x>@jb3*e`?#fQsoPw4W>q6p-iupD*0 z2J8dD+kz)*dCU_Beu_`QzO59!OSdQ#uxB9bz^k45EB`)rhoTl}gc)drX30e{3T+XR zrE!YhrEQ8U;7-~f$4a=%Xi*ONfzh{NCm4nN`peEVXtx18d*w~E5QpX|t@4WMx! z0$a+0xt{}_s|4ikvMs-@UD#!7M(;zn74&i^e-G^F?qVXyYd?Uu1Hb$hi+~1z-K2uu zq=F3`2b^3~z@C6;gFOLJyL^eFdAWr`v)qU9%Vp6FdIwnWf*b&gcE|%3Za^Ned*8X< z2XpS@{ZePp{O4f)b6!o5+)@xh`E&|@eK*uc=%Ek90jPsG3i1aml))ZTzSOi(1!?tC zlcy7OwHtKxCagVx=KCPO3HeRTuj~a~-3M#?0O2VHJw}xB*Z|$V4LZC9>HU?gAigpv z{CuqdPY8d04QRk(3izJ%<+#3eZyUmMb|o3cOM|gi5&m`ZKZkWW28A+sf%8VdAA@g3TwFOq(F3&BySaNE zmjuf-6fw(6goj%>27C8?IIGPg0(stlUB9$)0^#>LOYtkG5cu0a`g?Oie`y{;e`6jQ z_FPyd5rt)kJx}83ufh`qCj@^+o)i=bzD1s)~ zBe6e^ohL8EF2(+ue2xCbxtNahFD%>#LY@jaK-iE^ha4h;kmo|ONLb+6a~?E z2Y|EpG@SFN;T%2kengcZ$;-XWnPw`h?FL|)Od@3(3A4FtYr4d3!B z$aTmUKs!l@Dx?YY^!^=CMLZcdrjfzr6-+4hQ8|2=nS*U;4A7 zkZ!;;u#2~E1K`g6_I)TnPRJC9Yf9j2gXvTZ1@p6${IeK3ALMB_kVnerR6GF2(g2TB z`=G2CP)Z1n4`BF|(my-vqo}ArJT;?cK$doeW%ms#H6ih1#(R68AH9eXRjaGf1uYG4ys{7QIiB+Il)gHBW!V8p6-KM^x)&SM5o>aH1 z$AIcm%hXNkdZ09Fv$|HT1FBtJp{`MjY1=M!rMd&C0%%>icN~P;@#=l*G&Rm4LS3lduPz`V>K65-i9>3oy0c@G zupM_g9!#XFS)gvJ4^He;rvkOou`!X*aT}<4b>c*nIsvHZj)jgJYLH9Em|D=`R+InK z{V0-tMTOAsr{LF2q$E-x6EqMZ{kF)T&@Y2LLBIX+36WFu4@|zP zUh(EUzypB&q<{dsoYzNWc-_hSrfG?kj0Dw=Pz6LA+)t?+OM?t zw(FqO+-`>w9es+SxqY-frM>yJn%B73F1@B~&v;|yjr(tGy>a`EjW^cD)5Z^tXN~8M zpBO(ietP`O__^`Q@eAV@A;`w-`OwtW1?&GLXxd#+xh?kJ2+RIEXk94PIsw(XaH@4N zpmkpY-FrTudmjVc`zF~d_%qPJB&va*6r2{ECQpF|>dF3SBk18Xpob4gYV1;9ms3{X!<8|d0(6QC8)!IvYt z06qM3tuIB4jYHnJlLy4NHMO<=NZ;1c*45Vaqpeqq{&D&rXUC$(;>L>Gx;od!N;~Jq z&QibeTlTjgr)_o{cGaA)9Ks4t3Qm#`@DJZ6p@Q##mk5hCL>q`8`ghU4BjLgl@DdTC zx4}z9Q7;i4`-|9LkeJwc@D;*XcdUnqVwYo=$;V=U8T(5TAG;R&EAnxAn)$yw5{@CF zW5m)i;s_JJ_3>gjlf*D%q>>OVoCvhAgKA1B*jItp!pT6}4uIWX3#S4toCdVu1vIme z!YM!trvS~g585%l9P3R6z?emZ{gJ?jS6cws-&IIEcgjBuuXY3aK0-Y`zyfg6JmrgG zj^_<|al>=qvGvh$ef8i}p}7LjC;76q|8uCjXx{<&`_*m`)_xaoFED46>(2Oa($S1k z(7eX{p`g!U97x&K{v*aR+wuNm#&X-q{u9P3TXFv>W3{cc|FltJJKKN8SZk|*as`y1 zFgDx7uLz87wwnHPMvaZ@uQXnI^-k8#uH?AIFa+Qwc< zGv2dJ_8W~4ZCCrPrcm2lzYE5#=^r;m+1&k8ra0S5|BPvmZLNRalw{lJ_m~dYZu2Fp zrc@YZ-Ec3+;YP;XRZ8~lz(0>l}KW;h+eLgT1+uF6P zsnjmeMwrgpW3(bug*{%IU=rJo`(l(^k6oLH64UNC)j<6e6K5;drkgH7TxN3GoR7ri zrm;X=hB400zE4|anzYS55?9k$V!CQugLsa{SMAB#T3Vtoxox+#%@9vM61SOFXuJk- zm1%?awi8#=SYx_vPt#_Yl=i*-Cn&d9Ok4ItFl*>R7jM30AJ=A^T40WObf&%;+08Nb z-2PQ_y#0u_*K{AGkpgoRLrtucXle%u_~?97C(yo<0#moGhK~z*x)0(alOFmEj!R6I zUGb=SFRY+X$LMNmC(Qe7-P&n$vhBWh)|_UmXxTC!vd8=MmY-JmIHkT1`(c>Ss^B_91Xy+HW+U0?iEAj{OvB=_|=T2@HhdIu1nPEC%Atr*TH+GdLsj zxt-aWD`9pEs6PXHaAgOQD1CsgauJn3UEhIJ^99=_?LG5F+t$EAqz5u7or97YIE<1( zE3==b`g{hYB(t3yIBKr9lY!$X)q#^#2TG`ZQmq&$21#19H&BuTr6|>bvy`qdH`&h( zh|R6`%7GelhyB6;hjJLWgmM^AqLe`XCxELKqzBq5-APx!+}s7DBvQJJYH~ick#b7k zG-u)HbS+XSU5zw)n;!c>x48$(i_BV^c%aX0w5@bRn5~z|fZi;)oaNIZ&XW+JZ-maxK zQtY$4fvq6={*L_7ANJVM^Vp3#V)oedI)Ql=JjsqGTXiw!b-Qcu9zGp>h)?yQNb930 z9Y^Us!L5cb+GF}pnD2n69XD?Sw@pK4psho87!h>Xc?oscspKu4dMBUu>XS^N&KCUv zQ@gXB_eDO7uBK~B<*ZNj%ehB^(sOp|4;rhT-RNVTeY{0ejm6nPIh`GhWeLn0yuDM; z`_&+xd9UL0FqAj2AoQFCJL_%`?DTJl!9ES~*yrU3<_GpE-PF*gqe`n8V(n?Vy+aZ9 z8Qs3Nar?Y3c}N5$`-T$i^Ze7ap+x&3-JzlVc8@M=D8;_o5iyi*E7j!=W!TrDW;Sh= z2Q`lj<=by{u(-0iV?zb@J6iKlp?zC-VyMXeKzC}W#KG!L50yD0`e%m9ZELzSLsbsZ zk)XRUq;MqaE)F$2_QO~ujuf42sLh_mb6!8Bair^-hORg= zbge_Zj%;YF1K$OH%#mlG0!^+J6PbhN2eW{wri1g z6zPmZu+IVy3(&K5$m=N4xrS~y%6vPlZ!go058ZT>^Kr5@(VjLKVcqYjLas)%hJDtQ z5u+j5nm%GRq**gYT!ur|?2&OpmNjo=%8+Z#ADJ;6u@;QX8;(J_$8f@0II`;7qYbC5 zMI-Bm)7BE$S$wAmx?da4n6pN18RDt!Ck}VnE*Z`Z_rUH9rv<0pr$1mR9Oy=y$?fbj zR2pwOMq9Q_70yt@1+-$rMQho}9fQnT4qVk+t46l5Pt*tO)6it}+Gh-{*6NW5pu+)= z>f4(P9aNWm`;>1-rasEhg?bM4I|Di&7nn>`KJ&XtI3=h_b^5VVeV zlhc)gmg~IF?>i~fI;w%IxnOJ3%?#azm7O2D=ctDGA;hR%X?!`2wHiyPJxk}YL_s;V zBi*Vc&VEO?ZrS6I@bN86lA~64$8x}-&}~~%!3v;0JySufdtf=}XdYxOnU1!>2uqHm zYGBfG82UVi=QND%S%V_WQAfgHg5|iaW-!rm66~VVQv66d*|PSk5}G(6|@R zau8FW?28A}Efo%(PG%8<-ey>89Ol7n3+J#8=2IUWv5Ebhx$gSD2G%VbbtSp&M+vH_<@5o#}uqk`zr!8Xh7%ljbSqVauP zg<;~1^PQpxHNyhu9-o{CuMEdHlREN;kfd&SpYx#3HJl8zzaNav z!)eaULHqC_XAaO=&clPF!@16*gA>C?oW}>JhmSc=4$cmra25|P44-nA4tj@AJI@Z@ z7(U~y7`!=r&MC${!d^-D2#Y>*7)}xW9ypC()#n(?o%CexY{9#ObBxlH`onk@(jTR# z^h#s(>zw|$@u8ERi=1 z`m@7Lwwi&h;a1S=c@nbK*LKBR9S zw%S_sox?6$pT3*YeMsXiX(UUpH>Hl`>Miu9K+o`a(s=zK>hs7Eq(_b+?Q~Q6gip`4 zv%}-I3T^Z7l+6t?LAniTeJ1)Dy%YTmo~ zgBm_^PCq&9v32XO4zI$AC5O^;NMrqxGgu$$Wa52I?;c)44v*DSc7taj(t(_ArddQI`w6Bp?N_Qar3Za_NrN3{D zuoHchRRr>Hre_Sg3mAws!R~TRyB1ut#zfr%*A*XATdLuX)%)mOmEXbX`N6Plz2Pb|Jh0xh-!ih+ zO;@?kuWCoFcj1;n`x#`d_Z;_(5!Q#UDr&PEK1;-LUDf<;8qUU0LNysVaY=Z88{ouM z8|)$JP1%iiWS7F{)6iqMntk_cpI<^-9=V8nhpWvO`$~MH7)8c=&NyR&E!3s)X$bBb zP_o|^)CZiD@Qgrh~aohM9Mn zb@JQLiqP+o_d|O_`^oP^M?>FaLPBRk-(ey{H$s2Id@OW3EQI-!u;j33m`@3s1f$F| zf^or{OtIiC!CTB}!L;BS^BuurxPbYu;gR7_FqgwW8NQF{4SzaZ&h$mfBNc2|q$;wF z6-KHfJJ}~9e;lc2pNup`US*$+d?(V&el_yl$Zhr;k?%((u-}c2jE-dMqD9fMY<+Zm z^b@QidNumjY;(-{m>;tpF0EkFp9a|SsC#p-RORU>pmr|Ermr<8pmsgixS5Q}2S5#M0S5{YE zS5;SCC#kEgQ`9v>okIMwGF@R3@j}E4gpDYOC?NRvv*YRiyC!Tln@t!ths_}@`xW*p zB!oS}zJR}6W{(j8`*rr~B%FPbeUU`4-(pXbNcJW6B_d?Y*uNwq`v0-x*zd95BOhbG z&wd~J{A*T1K2HBv_7foWWU^OqO>m8T0_Nl)t8`}gZ@)xVPRe8&*%eu@OeZtT?6OhW zglt+iD_f9xWjACup>$JrS9VYKP#!9elE=yS$dlv;r zTL5mkQ$8l2lwXz4$yelS@{QUU`EB_YjC5aCTT5!`7c|5F9;CVF5pBo6C6`IWpu0Kb zZ$R^pP;LKH&~h{RI_UWbIRRRJoqU7bf>20h^v&>3g+D`1hJQNz)8xhQXTzT*Md6Ach4BPQul43a*)J<22kAu9wqsX3oxyaueJ% zcaysTWz*1dmRsPwAR{K?uOhxrzk(h0h_wC&LMHhIgfEa^LC6Bz|0nWAvH>AGyfD0w zd@20J@E1u=_}TEYQkxy}hxyezdWT z0_llHP5pG^6-py!8++>)8g+qZ-bQoanZF*kMH-*`pWSG*2WTw6**IFi**Nh?ihU!E zxZ5~Q;ivC4&IX?O;pfF)4}tyrY3%bM!ZRiBjmwf7R-nL zxu1V1YY6r6iYY}@V{b4XX&(&a4d)4ILmaFD$cOfYbMTMxkWX=qg7YZPXBOViZG8-cNQrF0w^Kaldg2j+q@IM{ge1MNb0 zjhorH*^twCx8ZQ(JwKoRIRxhNI9~m_63knWyc&)Mb)*lhYqd{~%w%^LU)T@wV1b zs*GzmtK36rJ`MO~-Ub^glu3a)V&ws9V>QauV1M1fDGxSWQf5+_*>`lKL8;7XXi**x z*1v{!<1 zj1hRgt-7dqppxxgix1V!s9m=GNBq?X){>V|Bde-!j8HZC`9|3`id3z^vI_7r@gaT) z`I%E*LIn0Tzfbl*cPo_*E6Ns%HD!ClhO#qwKW(_J?0#gw4cccLwv>Il_qT@oNFL!j8Jyo#W{%wM)oITx^DelJxdE8U7T0ro104FU1KJQJhi<6sJ`&iZiNs#W~epMWt$= z;({t!aZ#0~kf{zS>Qz~aCROeudxzilg3`cVvfB@TNcw@jX5!H_@ErVpV1NH8d(o~v z3EL`+K7D;`y`cS+)(f&_YCC9mu-^WZo=q_QWApq2zLw5E&Ue-bq<*^@-DO9+_dmb? zfxN=?Xc{=%-2LD@cJH?znP0!|`S;4*`|5|BKX$LD-?jqdq5grqdtJTbA2{1W+L)l~ zP_(L!C^}Tf8WUArjr&zSkDM8?Uj)ho`f5y3X#+Nlatl5m`|Zzv4&nJ}Ojj9kpJ>cb zSp#;D<=HA1+Fx+{#yr({fWO^+L%)srswvvGV8_0K{gdAp1W6<%#CGMX^~NgIEu`@#AMtX;D}+RUp8nOg z&FD=cfYML@=e}tP3n9O!Z&Y5QZ&dz5FfMqDX{YZ}H1u6c4}F(1Pv51yN8hFVDpDSm zz#gG*NIdin$r61-vP|EQyhq=V{085Uge2k{l8{t-GBgy7#Q z=_R_I_Xy|b$g%Sq=Wn0iI)7hG!~$_ll|&pb-YecGP8O$$51pSAX904>N5sd@uZT~G zPgO~v#%b{x@i}p&_=5PNSSGF)H;G%t9pWx=k60@Btw!bIU+eGIUzYEIW0LOIVY)va6xiWB7-OO zP}U@Am2^nDfbNlKq0A_;N?ek0$rO~%NaiIT$&vHfl2zzsU2+TJJCbe511T$wkcuQd z(gbOubiXu3nhq^6na`kes0U6kfYI;0U2D{yf_S|~9>tJBgVn5{=rDJ_$h!~CZx zI-nnyv`ShH^5}rN5@{{;Is?*Jmt4f204Og+J@D2lWhtO{sY2Q;>4G_bk#fA9cw@s#wQWSrt57YY(S!9{U# z5*N3JOX3c2sgg6?K`xWap_&bP${ps8LQfAQ_1tmp(C` zaT{)-g@zVaB&EQ*X|FGC6!pg&0~<#-hS%?CjIQr#jBA_>VcPoZjmZ#F8zNkH8#C*3 z8grjZZ7hTw`{8J9v^B11EN`p=e05`O{Y`pSyQy(2gzfkYdA;yFMP7d$EFEp^ey*_b zWc{wer^$Wm0~@c<^W^tH^A6;(seYsP$#P@nhM0A|D8VPp>htCG+tugG8;W48VQLbz8x6PM*w8TGsV^6EnOtU97?r*h=Af0H(c_Bs zj3QTpYpN^BHIwQUTYar7-Ie3AxE8vKiAr57U6n9)8e!J*5VcLiL6^g|*0s*nIHU)c z!rX>L?bFbSuZpYhkGrc>)eg*jqWY(Z5vt|uef)(+ugg|d))i$PrDDfkGPM!d#W?tr)mC6SNm@L zMfVx^d8!le+kH))Euo&a!CX4pebL=d*TS#Bb#Lo$>=leV&ce|S$3AI>z0A>T zuh0nNcAy$9j#LNKpp!M}WFEZ=EpFGzHtXVuHv_f!9P6|=QkzDe_)eY7Lmpq+bXb`# z-mJ^B!pEO7P5!9V=0m=|JcvAXRN>>NhdgpUZr2^{T3Pi}HVn0C`fXYpH0bJEpGS)( z*Pqwv(o|?^JV%dSv(K^9r%m-ok1zYQ<3T?@c#aiX{+^@WcaNRJe$x5odkp9V&?%jt zzGd;}tH1gg?pUY!G~ChCC-r^N?t{G!bnXH5;9LHO`J^9To-yOWe2@CH7aYB-rUE4m z)4reNakzSa)T3`bKWcmVJ6?Fiqb{ANo*s65V7~ft3@69S@4Xn6FncAd|y8XJ~z6l^H0^nD?qkpje;;hj)I^`r)dX4t4zM=NCAxO4rinI1J-) zl|?1Q9B~j|sKqA(O>J%WBHmK-fPe!v?=A)too(T!y|VT0$Kgk z^>BUjVSUYazVbIOp)WR|6*@nmZXM;ux*FnxuPv<4VwDE3Yo31Mk(UCk)Tk23;V@iJ zSFP2h)nA*iFRXJ6xxTGx)Y`&B9y=Sg;})Q8Ksy{muT45y)vglFWgcvou3oik>8d?I z`+eHfo9 z%VMnb7SI4tqDsr58cL_b(F9}$3ImD+iUmplSqdDdYLukms5jF~i<4D7(oNTNQI-Q_ z(eQ;p#XzMapp~i}4-ML@RQ+G>&}<{EHR}4L%POraZ76Lj-CWvS+EUt9y0f$s!oFo^ z;rw9fK{y@;>==a;rKd_?FFjX!q4XHwmrJjf-YC6Qnpc{)I1o7=wb%giNg+urCFGruci3mmzcimA^QhtnK95ZIe&Fe z|5ivanf_Cq@pt(LOyYkMp)7dRhodL3Pcb0}GKI6hx{rUSzti98uSbF{VCrhWoK?YU zA6NLFf>r&G*(Cb9!xUK6pJj=#s=vfO$1X!iW&IFl!3zIvmPTKCn9bgSkPfT;+hFMq z`xDD#A414te}<4v-+{=X??BAuCT?Q6Jdg*mc|3%NuzdP5goVBgQNSPLkFi2NmXBqh z=i~S|HlL5@AMk&=(`a`d=j6;7V{_g6Rem|;ZxWW{v>~r z+2D?23tLLxlPKY>yp=8EZM=<@@^;?Nmh%qY!B+5{d?$OF@8Y{y8Q;x!voG>a-pN+- zJ$w)Q65q@BvU0wU?_*!)`}uxW!4L2Q>?`~rKgcTiA%2KG!@GDFtD^5!RP&$lpD{cC zIsZ9Z#eczn!5sWQ_b;XkG)7=yr`!yUaY4tUNq1bFI=PYM&+@_QT3w+*oMLX zv5eII$1)4wBbw&p9p30?M&s{Xd^NJ^zcXKXfJP2!?0SI4T+-P601ezT#7DpFqk&&3 ziPng*d47F0>g4(L)~J*3*I%QK#jnRkodQ2T3($!rO|@KwI;raYP@T^kb-??fI`e&W zcKOj+;G?tKkIq7)4tS5{iU5iMNel$k`hwq@_SLeIg}R4mEh4QK9->u5S}#6CYcXnt zj`gYW2o|U5Mvzvq-#YizTH;d^b$+#MK3XsM)mrMK^`c*`5~CKB1HZ--F{r1u&@w;X z57jF5V45~zZj~w(r?cg zs`n+oeIt_oMK_XSk)&7dx7~;8ec5lz57n#i+xA2CzT&s_BL_9PrdR2=WrylLx z>Q(t|-JyEbe*BY3&!egK1G^vp{OPUo~*8+JTy#HO@L`15ll_$+>ya2}~zi!A_v~zW6@eEB;9Q2#_C(A2T5iii1oNKM_A+ zvgi>#Ou^@e%oOs|kmD=>v`&hC@XJg)NZFhgCUk`7+=mdCbcC3-_EzoX+H=l@)-0#l z$()h3SDoprjyc!X4mfk1mCjfdUv;eZf;GnJa9U8uxz=g%;MStr3xt_~9JR;5+Tk^w z&UQQkvP-oJNSKmT9MA!d9lu7=N9J? zJh#T=4>)6;rOs{6f-Qm+=*xnAYEHgKy?=Nd z^iMl_^7q&q?&!bX=9CUsZ=hQVxmX74YwE-5ORFcSA57=1AD?=8#QN~~G3c+BpT~}; zJf3_og2|UmdP0g$E&pmF&*S&cFwdmEWY7P zSbU>62`rd~>rWoP@UCCHB)$cG|J&l*EGVQqHsK?Pc*YV?oP;mN6bw z7F5PW(3gY0%%mWD&}t?JtqEEK+J6lBBY5(D$onirvz-oUi)dxQ*mD|&JH0d6S_2kN zyT2fg zy3h8JG=)6hF``y21}dfctkIAhu(Oa>#a?VW9Md4A7|=+VB@-ybYPjkL@}1sxpr^0g z1f7zJz`VdbXoqD%bxfufh^H2q6#D-{Z-O1NE0SQ2o+;AF<{AxywV{Z|e}d3qfzbY= z#Z-}?NBMh9@H@g{z%DY0_X{Rc4CqO)VNBZvdgu93-fcj4GMRTn=!E+}J-(SKcxMQq znYS1utHI7TUJLh~db9-W)blc+S_7U1csYbTzQTYfg8f1W(}8jglF=YZq7crf>Lu(J zGw}!vYykKegX}yU2iQeE-GFvOEB3RKte;03@V$WJZy*kEX27>I1xCmr)(UjhAi?M1 zZ4??=uR&7AO!TV?H;i33q|?i=zg4gf1BU(03c*l+)Zfx5cgGT5UkXm@KtIh?Gk7xEKI!CLNNF7*JSe zNOo~e>X3FD@Y76@ilicOM%pB8HAoIZDGwVx5glMVLF_hqA~u8V(b8zq?BfZHUQs7a zmGTT|DO@csiIq~glw`njm;&pelfokIN|6Q$lwV92mnGSNLit6jh!m&A4L!~Wz>XUN z6Nkh(gX9v7l`EoBOg5mWz>bx_F05jV0Y3m)FCOfXN};Hx3cDQzTqWT#mGFXBb)4Dd~SKb-5O`(Yd$;wij}Z#3XLAg>tK z&SSuHhe6T+dEwKyCg3x9kwLZ+tW~lrJesE)a0`s)UbqtULYf4FWIBvyoB>jB2H?Si zG7hr~t`nGsc&9C!Qz#{tJ*}ks-0t##d&d=C5e8x!p%0-nrhh`y3S?MbuOE(b2)UK zD;)6*;D1JWO`BJ|bHu+9{|@7FpAruD4`#S;8qfHQ6+}!s`jSaI%Gyx^5<0m)o#K;r zQPu9ME=yZgS9M)#cWQT)ZSL*duDQ3XYpSk5uvJ~jKT9z>o7-QoXKsJCRg-n)#$h_` z%w5$5Rw)&V}bMEP3OJq39-)@of zx7%~@tU58bqxx8GM{bu|*ZF6wJM+(iB~|kQXU2NbpV>`=_0nkHVm$LLANVmd|LnXx zN@qsTa^vhd_Klh>eK^@)qKD+Wb35|g`EF{LPpD7$>jlHM`vY3~> zQB@DJ>GoKt%UDQPUv;25&z@juvll}R?yjmwS@mUmDadwL9l#RVbE+HcYt<4NdqK9f zy3@YW(l)nWJ8MQnZI#>(yCt{7t67i(wUVQr<#tr{4a%-(TjyS^ZU7G`hw8fOW}r?_ zx_Nm}4}I!cbzMP@z0#8dwMSQO2gJco`_$Yn`&966dUbGBw>=i@m8#{#GboX#wDavr zP<98@Fw_KoA4hx#W;jN3Cl4xxd0fCe{w0{fD`4&pg1Nhfh0@&pSdbIu)Uh;=j-$Ev z5$;GrZin1v^J%_bpgqZsrYn$oC3${C_cw5N2%eV0b*BcrCEIDhBH)O>bl$3=99pV0sOBTr-N>$)?Z`vkBz~S&1i0eDmF7b7$4S^U zhR^c^tA~35FY0*%P(lANh^S|E?buyBXf2Z8fI9V$a> z-l10I>^&VW*gkd%&ieEgV9nM_>$V<)g)Rt9K%5;gSg80Zl% zu*axJBvFreit08w^jhdOHiLRcir?NLQCr(}^P8fc*|MT2r&>0w;C1-2SY zDY`V}rgEiI0dJH(kd>RFy{VKfrc7lUNRELdPr0W{HBG58B`9?ugL_q_e^8>B!c1X` z%@nM_>QsR{cIA{em2z82Q*J0Q3n;6ZfV2JHbl`WN604k1VD3Gngu1gs|a1nz0wVNmvjqc@sP(} z`J$|A1$nEyReD|CD8aQvmO;K1?DTkRM>-(EtRwY<)tz#e4sVq@06z`*W_h=_43b+; zkv4(k5J+m|O*%=X94$eAmfApKlh^8O&6nWbQgTD?fpWTBq)T%{N|sVV2G=_|UQYFv zN;(T6Qi58L=HqTOIaZhIu(&Hh4M<5Cm#)jY+K}3%c5z9-61{~NW-K&soa}Vq>AeTW&q)U_$?_>%Jim$t5=M8UBH|rtdOHwir2}G(z6m6 z0|Lf?xG9-*vYotNwDM~piv+7X#aVGpSN0~+L{D5Kh;@n6USIe=v63HDpSg%C(Jl_^ zY|iJ~L@tN9h@Su(ZsDDk6p<1I+wF zu04BEQ#7#S4EsOKf4qU8(WNQp<*bwKqbs(6v%}t0YzyR#a{$bLJdd~QQcYtuJOQqu z_zypvH+gG^hw(6GHMWNGd9ntOWwV-CI8aWmKkL;=cmLj+r2Oz zkj@#KXSU23lf1j+P;yuDrR1&|WmC(Nch77oNt)S`G^XUpjIhs zw1+gMX=w`*rYAie4eMLyvc0~3p$+tD&>zhge}0e+u#4$X2W-`$Ps=)zx0cLI?wBFt zc}n_>qM644FD^-6c3{Tkk{u-*mjxPp0b6uOIP@J``QSS?h2F6R2h|4EvJh%-Gqv}~ z-#n^olozR&y$qH(^_6c9(WoEPz}~bS-wsl5l80!nH)uACZQ6T8ycfYY8@K}?2Rvqv z!>U9hNf-B!@R6hb=p}cS-d)FP1*riS-=xE8^-FhB4OF+MZi&IbSUBDR@`Yc#(2nC;S|kgdaZbjeIxH8eA?_)&^T$3ejMLy^)l{T148$zWu z(>vZ#RNB#0+OgF0!l|_5s9X`$y6JRJq!NR2B8FG&=^A;kVy52%*f2ONkL>+&H}PKr zuVK5XW;21<#FSx)`@zhM;}*v)aV*L45S{_eg!oKAaZ!hZ%SR(bJasw95R_kh_al|#TeXu6*>|dC7Ps6u}e;YZ} ziR$l0oxdA2e;alFZqWR#(fO-l<+MIoIEanZ-)4iq|4e+_16$EMgVW9o=Em#L1J*p% zu;#%hlOeR)8AYp|P+D<}q4^E(g3Qc@Z>*yB4^MM;K3J}!uti;qdcV-LsC7{<#9D#w zEV>8B-EeG06lEX7>yf9#`3%>myMXpk?R}Ln+$Yftb}g($hbGe~mf)Do8g)3%g!sNN znnI-}`Q)AueUtc)D5rR89r_Qb$T38G!C|^)e^+!+Uk(BuOiz*Uo{=lFJ?Hn^b?3^! z%0KrRb`+Xfz`%J{;RoI9553dl5B=cY5HyhSdw=+gAW(`ApC9VOhwu3F?8EQ)L;v)9 zzvyF+Pzunyz1nXb$o|k<_5RR59(=T%?zH&zbE-e|_D+B3`$O9n>hJC*Kka?QZ~a;S zMti|u7r~l&&0ihdo%eD2n}`v~FlNngpB%zi_+%z@gy-Ccgm$z(VU5pCxENnpa3Jbv z!S>1ag7*@)CiWIwQjy6e1@3|lknBx3q9TR%$t6)o6K)plE$ApXP_Vl&F+R7TyI^l( zZ^FfbONBLPt*{0xbQfGNY$@yn&HBQ9iCZU^Jkk9`E9ih`VM<{h#obve3fl?~7W5Vz zNUSfc!w|l+&<+}PPqY@aK9LJrH=l?`dwQc}VYo74 z>8M=sYPs|!dT?3PT+|#@n`$c6H??$6o{KNUl0u5Dlk1*{F6b?6!g@tJShrwpJ8C}B zTDZAzXJIphIWmNAo3<8Mxh z$xpRRw?s@{ts(u7_m5vODK+1kAEzM~WrY z?hM5b#1Eif{a74eviPm|Ei;KT;&=S(~81i}t?}GRWzLuT@MB}~9sHsF8 z$eOz!N^4}%Js~|)Z8b=<=>MeI2#5!qhnmS8uZrUgx3~X ziuPJT8#!$`J99d7cA|x-Gf`(I#;KHj2PtPCNO$HOWFy=2!C8{_8!IYpa66GXCi(Fy zHN+%iT&0{GT`nW;|He5b82bI33t8qlJ43I|xe%O?l{Du99nEvjAp+qtViSTxufqAc zEc1lmIp-ql06&Kz%baCK$%Np@IyIo&V{OhUy)CqZx?UUEec6{FTtRE0S0n3U2PT}D zb0KyBtwh#kU(bFo`%X6Q=23SCe2h6ID2JJ&<1=q$9s{}&$}k?vkg_8N?T@@pEAagk zIR3fQ_nCpp?24R#>UwU_NZ1eH!|;=hL17- z1OyXVGmb~bM>dS_1zs|)C^9}{$GD>Oa})PwG-ezh-WYioQj+CeK`8<8cE@e}ug?c*7HGIJw4C+24C zQEkr&&MZ`|#I%1hr8UJ6Su<=C_NTW;TmrsrynVucJkGv4K4pALhAnbi#=Xq=^xNZ8 z(l@4`ncZeOl9`yXBK_Lz8yPDw%)Y8>g8Z5q^w!ePdu>I+S^90X;PqgyeIyEX3C*o9*k z&aMTFg5Fw0yT{hpg%di_4qEZrn7w*-H>50{eJ8p#>TY!F__*lSh@9xw^sEe)c3!ix zdxUQtKF0M*x=v)Cb!t}I&=AzgyzdD{^1RxZmz&5uE@IX#Zx}aSJ4Sq>d4&_1!@I|x z_lC$$^%&j&zCc00{W0^p!;`&F!Ns0WgsfxTsTal^NWBmqG4|e=1K|*k=C1bHmwiBrLpeu1LFtAPE%>tE~K<8 zAibV;{bN0W{}^{o+`_D%+xWK~wCC_2wVX_bd7pPH;ly!=-Ie>P7{7NGc$tECO9RR} zh)=_(^L*O98vM^q;QED~z+7Cfbu@!Z)z&9_^Sit;JNPAJ97oe4035sv^FP zIF5spCj3W=fdDu0B*OPo9QWqEW1{^>Cfegh2vd#`a*N`$W14I-g?`Nb0(iB zDeXKm;co5sv0P9_yxLu%I782+8WZkrzG6C!arBdSt2%@?1;ikZxl3{Ap)?h_I2w=( zyazciyMLL|rsF=Xdv_5b-mT*IT1f|N%BdI+jJvmsanm;BO5S}F;O!`t%&HESLfoKw zxPom2WoC$@RO~^noWyzt&6{BDD(aZFDX4Q9acE6?(?{=InD`#`W7@ASUIz%j%e!R zrnHZc$CXvkIveSKO8-Tf11D%Jp zfsd6I17EJVfHx=#@DtKX;29Fkv;2GbJ6FjreFx&tC>y}S8vGq9AjmgUsqGTh$#A6zE&Uw$9%%|# z_<;Bgmq3zwtm1O>I1Em_HEjyn?d~~URr}YX>kUY6zQwLpH;G{ z6<$JI!u^RGrGDTo(j~%=VcC_Rf#o{sdD3~FS^;OLOZD^h7#9 zZE+Cz@1>vO_`TnYWA^^LI0MkzowqQ~mr(qNB%MV_8O@D7q{;5B@cjNlFw$X&v+JbO zO#07Id_Tq0X#Tg-Xrg@xqJe!Le0UM(Oz{-iJdN|A^a|-ebsw%QQYXc~hg|s)a_RfT zKa0QUkvi{La95}559Reee5)*NCY!;y=RqEWTpFj^NBrJZ)lW3`Za|({hHhKC*=2+Q(2%M?#)6D zB{Csbcgo8Ngy2;^RO5*BN_R<$JEqdrxJ18g!c_OK%d}saY9>^Tt2*kgUOAfZF%(}( z9M(zq?glu}hX5Fx_g=yH{rrISWRv!3E3`+!w1na>6Q^H5EB{ISO_I{CE`|0(n|?=p z67g!f?gx>yl@Pk(D|GEPkp=ei%hORQnGM zm{;%LCh5C~KwQOPU39-w!-3zug8dWL4D>%0_h>)9hMdJ-En}}Jm$yS-{Z#_0{L0>ZyWyq-9YYFKm_7<~{n}|c- zc2KW&P=9t%-*!-MM?Q_xW>Ko+6kkQDen{3RF2A8#CjIY{&ijPSrd+})-b(R*BI&Dy z2tuAD%K?P{7a^O;=Ss?j;>rxdKTE09^6nx0J;LV@VkHYJDgGIf%7m;S;zP1Em4s+M{`*?)@g z1%!W%cs+4yDe3nVzfb%RYTIG0O2lF0I%qy|&}`$NnFsk+)C{J!3o6EVAhmKp4B1&r zNWWT3s1r;*B;aL2))W6KLh(Nay@|b@ z5K5)IM!bU%(v;Qs66E{~v~r-|cZw3^%CB%8qS%njZxMeUx!8+bnut6=<^P|vF9FY@ z$ksmH)zx28fwU+3+E5B&4s%!WO~ zpbfNa41QCTa@&#({!Q>71*Z!%3;^8_xdu3Wz}W_R9&in6tPB1>z_|nY0AMosW5B-x zd>))3p!WiQ1pW$yhmADQ<6sZGVM5aU61i@xbD%#S{Epzy0!{&<7sS_~OM%~mGoLX4 z{Z+09qlMn_g+V40oJ-)W0Ozm3X($Wd8Yj@+IjGmIJr?|S;4cHGCO92{c_=#+I0FcI z`5ACEIFK=1x+kN1LR!UKg`ykqEY_k6LEpvta}i|9GvC+`&RTG=x-fW6p_ws|&qCQ5 zrD|?t#41HZqihuDCXmSnE(PLDv$hhsw!065otfd#fZyWkI18=C z^SVWJ!P+#}$`ux8_1a0bDK zos7nXk|}IC@Ghgi8h8wM5YNKT&7dt7HcMWQX=_xWWjVHNzQ*0N0F4n;>FX$h$7 zoaD$8*mz+tcBh`j8^>1z4t-xM%XzA zz4VDm-nIANUYs8>wk-`X4ay|*66rBvIq(Dp3& zEsNKdpre6@ad&eYbT_O#vw=6D*#>_H?t?~v{}rQJ0W8B^+c?ONgM}==u;ehxGFss5 zz@F6()O#BEEOL_>#a^_17_9w>H47cqW}@Cv*f|`IdUrwFe$eM33H^E){8^$_+1z)W zyA&F}MqPQJcX~8y+X9)FU~@m{ybDVz0lPzTG`w9E=-ypcfIU8x?E^jO;P(OE2IAa2 zziCvJI)xsY2F?iJtH4izdtmtz^j8f?o_BXak$cSZq(bRll`;@XLeSEq$VI*Utr~@c zQ3?@EI{=+Sp)J9?axr}k{H~Ck<5~+njW7-o$@O=^c?h|aAfJrd<59~8$ZhV`1G_{Q?=;xFn+$n zNEm>KcLt?`VC^X6F2LBB1iAua{59db89@+q|X6z~OL8%X9rrU~dg;3UY`16>IJ zVBMld8jq-pu%`vAMX!|=Iy4fF-G= zN8^s0?%pLd!4Cz-fNwDh8@U!Vq(_jzU+yDdd?`!22x<`?KYsZ-EY# zn}I`MZGW_4J&tiJ387V;4P?>2R&&zZT{2bM}QC?fp6`n^~ zf}IyVYcF9Y!V*YcL|rlLXRR5J8Eq$Xj6?kP5@|AuDB~Vqsd-;fWJ#aO9U+e^x;}Cv z7o8(pL*&88 z(NBYa75#G1ja0mQsrLm21Ajv8O?gzS`NE~PVDyIa9;R3Vd(vRfFxX>*uEg5Zth6wH z5iwxNXm{T6Gg)maFdg^f-=XYs$d~XFA63`$n46e8=1jiEVP@S!jXqc!Qf|tp9IOJ?ySKK8fo&{AerZjz_mbBhW~Hyj=CPf z<3wA5IN#oQ7c-YfRJzF;8hNvTyoJNqT%4n8=vmRHjLh#Fj zJ^}gya_0l5Gx|D#9*f-lu1?<77e08qHPeO(4dLJy0@FBGU4vM@4svIpk0v9x8*m0N zi&5VNJjSTvdpaUC#T($i2mA>5J)?nWCVRn>m%$m2CxB$!RyLf2#}1-J z!9tB6qXz1F7<;OI(7%En0XrL`-k;6Nit`w9=RoICjL*K1xdw9o+}v*PKC_1uFWFY67fAe-k~}7w!EEKR?y)avSAM=#S^J=3LO{_&R7rq8HkTp+IG= zxFmiDvVXSos4(z+%BTgI3Xu5{n8c{BS9d>}=*hMz3z=TPXtZZkt!S(83|p%=XO3E@ zwdEZ-w$lVh+yQQ9Z8AVyQMtdtZxQSto*ekYHOrh+?*$Zq1|G$D!nghRGHtH+B&N_`*$ejWlju91!Qwr%^mu!YUZHBSk!R<|8RgBn$ z80QBt&YuVUInzciM*A+riV{dphK9zj4958h$Q%Q|26mDk2B$u>-9#-zF@HZmsk@L& z#VqcEt6MwhN#%1&YEoJ~L0f<-SdT_390i#8Tv0<3enT*yYMCsd!;S5%&CoDrhG0}=VnkiUNLyg2@h`jc3{vCj4%U7{ zF&_A8o(KCa)Q&Y|=`Y^b3956H#;(^y;EmEN++U#Q0tb0~oGt(^a(DKCTd;3745+)3 zCF*`tPh>s92LA;387N!8e60vrg1Riww?GHu?mifjp*X8B85|4rHLrG-Pxmyi=0xn5 z?sa#1AyeYszq_Xnpm_rj&xOTV&o;(r@H^qIe=hc^CPG^}Bu^lBHEg)-S_Mhm;y_N;zW(U3%j5e5H{;qVR;egxu6ev z^f=6vEZ{ikPs12HficParO+Jeane9@yM|#$s}f`^(7Lxj%rXv6N?b#!MA*E@vo;Ge z;sk2Jya4BxJFh|Sg=7ZG1_LwDN7((dMzW+2u|j^!XpZ7sxeqP6&ge^Gj`7XN21@Kg+1;b^!Gb{k{$8fq^A765aAr+_ig@H)!w0e+5pF-rB$(6%1@0sO8> zeE`PZM5B|!J$RzJ2fKxPaF(Dx?-0@*pUS1p7T2C{bp!SR@_D3uUmi}(?glpD5hd&4 zeC%H2#vyV>!ZwAa^Ko+Nyji613{LPCn=2Vh)wPd4;AdW{);l8(@t_AJ{-ogo}@;H055y;k7M_Wp9p4s6QGTq^;p1QjXVZL!);Xa%SE(Ygk;BlO- zI?j8fbe``JsXAZXs3mqp>j6XDw_kcV6laQHr)&?-@1WO!z79GBG@sB|gVR>O8@#eL zTs}1bw&xMWCp@(g2A_A@W`50ACEzw6dw4Q%n+Y1Y&G#tykAiLqx+P@hKxPi;d7$|u zWL2zWs>(LNpBc?HKm(i9|7r>*?GY!642>J|gDliHBF|Z*6{reV5!75%! zs@%@1U8{{Zfv+*jCxJT{S%bm|aMpnSnBz0wscCEFYe1G<3(2*(*Io-7PU7vWCr$ne z=4D@B&}`31-qWC5KE+LY7`4vwH`TgmQ!?_2H9Z=dZ?GOk&jT)mOh+L5B-*EAjg*S} z{Wln~PZGnutmyf`d`5nEui}3NyoORQD|)yw68Hh5>;g%yx2kam-l)s8*%xi+_dK12 zM*oGM^#dD^BKIUe#+m zfm7vp(BnZr5Bhn~Z-agt^b*iZphxM~A4e@Q@-4JtF6i%I+b6&uFzPD9svmfLWt_wa zd5Ev$Y>$%RH;fhg`T*I_opBEKA%oAZuQZx7%10Dl<@1)>RrK{$K3k}e$J{MBN3QUjp|t?imBR1wRmjm`GS4j4gP~l?#6CQa zJ*~jF3i}NppW5vthXU&Y7ciPp$h`(mGrj_vZm!E817!cNL|W-I#(UYod)!lK@7a6&`;j6>rRRGt3(PFxIp~A77|%0oTMV~U8}1@ssa38* zeKcAf1j+Ly966Ip_XAG>53o*f*1E`6DY`u9aj3m7=)PEI*5q>|tWDi>u??F`)xD?o z2y#W~6vmRdp!qsm0GR?dE-|ZVS(v4}&w`tr3>EZ~E^7ybMk=Z-z4B zt&*ijfjAGK`js%Rl}=g@nE>!{&Pp?oi?d0k_19}UF& z67^lsvzGM>8)pd?!}8WBi&Gh;IDsSZJiP?xg_I>qz62*XgnQ!Un5S9s4YX05z}bM_ zpz%cn11-`r;U9cgOX$$w%kzU;1E^S29j&Mi`>Vsx`LHk_J;iv7QLP>VfUIW+^jGzI zlh+c9AeqCcR?j}Pm$jV(XIJS>)J4E$=pBCIUma`jWx(mM#{|9Jvkhw-Mpbea#?LH_ z2gb>aYUIqqyqE<&vp5dJGcUn!$6;rAa1!D3Dew|{O{RFBWIn#gAu%3GFp5fW_N)Xa zD@xE)B{*$$52rHj;mpZBoUyrwQ*igtzxOZ>)jVWGpXznEEvn!1;gfuRPQl(#USiG- z#=98vCFsEt@7o}PXLmLH(t#*Io9SCia$x4bK@>jtxy;d&_jKmaQFLke&_S7+F?!&H zv04a)k&*IPw{S}6*x|`=>ejteayX6c*-fFct+bTiW2a_L0L4;cN~1p1jGm@Qt%mxK_jWI zmsgHLiD&jB)Q&pP0BT92)JWqwJ?2 z6hpz3q{e#}>Pfw6sM7X~ms?AX$p-WgJw~b2m3q-rG)&bwj-DOdX#8M38@L6y3z!Ey zHhAFZ3HoW^IpAgBb>PjxgU5{1Z!-!VXag$&!-3JjCcq)UvB1egMvr(}Ob5;dE(Wdy zW&zg&w*Wr`?gr)qj}007%ouSBcoujGSOhE{He&2R@eA-SqoD&WpffCU;9w&JSRGgo z*a+Bi#MluNj1*u8U^id}u-}OB&x|&P07nAH0Ve{dD$@oU(}4?tD}n2PTSkxl%NXNh z;C|p?;4xsq=w}9xHqHPq01JUPfVY5m#ta=YLK4sf+Q497s8W+Ds{A=~*g}|l2mB2OQ#|$1P*8y{Z9|HFSkB%Q7 z7cWl%&jK$2i-5%wxRzglC5)yCbbx$Xm%rIwg{uAuN>g+H-y?sAz*2Mh&rn>JuQip_ zT#8juB~C?%Mk?wwQ86Sz#e-%lz9gzx(NfL+)@qg}srlCCfs+3lrK@=v@*ky<9J|U= zjq3j|-2cvv`a=x-0~9J+)S&P`L1`59hZyh&XsBpcK}D{R{}0+*sr*~S*+Ig}hOj16 z*9u10`;~$AA7c0)pspfvt^Xj^sLmgv{|_++o_<)x{%U`M;%|rjd(_qSqVE5h_M#lx zK_62d9i;*~t5%vfvsM5&=zXTwJdGDwnh6;+p8Vcj%%m2 z3tEwOQ@f+j=juE4-Fm)$Oh2Wc(+l-t{k9-s ziSi;vbP~P93^89U6}e)k*e&wKF>y+q6NRE!+&0LtjPgdP5pL8o;*4fS5}CYlDOTcI zsu|I4TF(7qix!wbe5a}f@?M_$XD28ur_wIo-@Vl+DMyv<3HD5TrJZZnkfyRLFmf>B(3v22%b84Q7*cMS(>vW{;))jdw@-i&dBX8Gs zT&=ZRx^1jI)=MXN={Yy8li;RNj+ajH(o=34v(ud+F&}$>U+~frH*HYWOA}n5Ht6Q1 zgFJq=m+tpcuigfC-844TZDni|FHJ^UjM!eW!(*q$F2Y~c8rEyrx?!(|V;jzHxT@in zhWQQ8HM|`c92Xsz9G4L{Hg0Cz>bPxjN8&EWQ+%cP*!YzAe({sz7suzsyX$DJ(K1(i zqg7t&`L@v+H*M_tR%?>y{@papOFgTSTYKpZH%%GtrOVtAlClovLsK@U>`p02xsht6 zR!>bx?UFh=^`+EhsX3|nsb^DfrP*nbX|2;T(k7%WN?V)uVcJo**2mYo+8#fKze64` zOsDip>9Og_>3z~O)90qIN#B`%H2re=-S#2vquaM>pV59?`r;GSTwokE3A`3~jhfo~?EREr=h=DGEU0`? zMQR>YIjA!6yC6oY>p^)fLT@5cj0_by6V>%PU9H=Dt9AQG%A_gyPQxNvuI_oWDffYB zc!{plExM~2n(f;`!ne`4$@f0e9N$i)n|&W3&Gmh#(oKr`2(* zk>>h7RnnV%N7P@rO8PUTn|w!+=J-BGy4iOOX|C@JC7t^}JThF}F-)eH{v(eZN6R<* zzVtkE!t=~mo@WX?&zw~CZ1kP-{PVTvm(!kKzVZBW#`DOxo=47l9{JAm$T`m==i!kH zo<}Zv9=YUs=DawJz`1MBbMoU#PYcwu`JgkR=Gdnk^OXpPS6?Uks`WD zcQjoKumW6<;5 z#-2x-cpho$c_hK}$RqGbGtVQDyXejm7qt9<{_i0jitgedSS0>;gr# zgWO4vT4J99#d2SJ)DpZ!I8xoKHB9U%>DXZyBSxw)T)pWM3 zrtivXI#*WH`TwfPE>cvg)mHJYdDIg7I;eJv_q|8`kwq8EEV@``(WNqr{#9ntax6~ueVnua}m^*zD})fl^}@ss*9 z_v=)D@jv!z-u*i9b?Kb@bUo&E4V z?z9JVs--)PR)05nKxY&DQ$F#|$uM8d9ur?(*MH-u6l%QK6kyIYXW@;%|NRvZE$~es zpW)J+Nubw)z5=`WJ~GDB+75Pc%+#oA8IMc6^`F$_Om@emxN24tJo`1XhFO#E`L!%M zDvCt7s3&4XtY{<>#B_BBK2yvVbHzfjNZpAq6D!4PktNoN^$`ECHu?4 z@@Y9rJ|oA=N%F7qMLA8rEMJkcd zZkO-N59KboTke*pgGhWAGjrOTi^~`w@o|1cI;rg zl3mrVZb#U4?0R;z9b?DYP3&fNOFPL z=PYpk<}7hub5=NSIBz;{Id41fIPW@}ocEmV&Ozr>=X2*v=cMzEf2}{;ztNxT-{#-x z-{s%!-|x@&ANC(nef62J1TWrdh#D&H)D?9}7xhJb)te1O12ROsh$ktUil$_WX<{1r z#LMDkvcxOm6)GoYiCGjN=7>2IC>DqXD(b!}UZo(hM2!PSye3{FzgQtwP=IIm*-zr??& zwzw*;QXO$kT%)?;d+|Nh6F-O_C`$Y&exztwPu8RQGDgNwjBF`eQUlpqwx(E_B$KG2 zY$MxHoJ^L<6faX`3N?~xGL0I`beT>~WGC5)n#yjn8zt~puIUlkTlS`AvY+fn&E+6D zh!W*6IgDD!k?P*Cr5r2AQY)D$GpV(lC@0dRa*CWnN%95x0zD>Qk}pvkIbBYtwsMA? zLCJEaoJsBEY&n}!0i{v6omy6|MYA=_{rPM(#lgp^1TrQVW zC%ICtq|S1cTt!{vYPp)a$~AHgb(3r5TIw#dWj6JY8|6moDRX5m^^)7HrGLz_KvyIt?W|)1aXpvpfu1J5gtJqa&v0crsMoa9Pc1>Dp z*S2fZYj$0`E-ka8>?nHOu5Z_;<#t26A+4|*+l^_Z{fPYt{oQV1x1d$_qxPfphTYa~ zORMcvJC*)nx3}BV8oRUInclR!+ubS4e!_l&-m;&vpQ5#Pf4e`uZ4b5w(>nWU`)PW| z9$}B5Y%tCoORARdf&-*vT3KY(b-5JIJr(Pedug+ zw$VpUo|8wroWssx`loZ$IZ7Wp$DQN!iBsSd&~E3nbDH+}-}1jjd;RbD-=Tf}4gL+Z z-@nrL_^?ypA zscTLIEff(VTEvMa;+B{%7K`O#l~^Ozifpk>>=e7iZn0nFizDKgI3Z4nGvb`MBns7) z<+_X#w`7#8FXqXPva9SVpOk&&Ksi*7kYnVt@-Ol^`Mi8fz9Tot&2p=nFCWPI@?*JI z=E=kIs5qh00(n}Vl^5h?StM`BoAMWVN0yknX_^71BMN0lvyzA~!_3iUg4s&cH2a%_ z&8Gu*+J$Ef}Lo$w%gb#cDmik?q>J0d)xi&LH00vtTWAd z#hK&0>b&m!-T4P_gR|M$>b&n9az1muaK3WBcE0tm^RM^k__z3X_&@Z2?BDCpQ!#%5 zqCFwnYl!nY;=DkdHxSPyBDske?n4Z>5W~wMh6f;q2O?J6h}A)e)ed5{AF;YTVs!R`m`hY+hn5UVR9R#!r-u8de6idbC*vAQZ^^}~qLVTjVz5T&alO4mRH4o3v8i3l8l z2wV#hI1&-KHX?8xMBuuJ!1WM;qY#0k5rOL?0>}J6_Rc%LiKA=VGqaLxS(=r>;1GHb z9l1~ggdREs2-OsWZETv2F{Xy%5JD)1&`ThuhTeM*9YPDuglbCYEp!q>zB9LES2KbDUhmIGqq%lRv%7QdDLcCh1uh9~ECp>W4Q+Hn8-t*Y!O+GKXk#d}u?)1a9JH}K zw6OxTu_CnbLug|qXk%q)V-;xQN6^Nq(8g-e#_G_<8qmg?(8gNO#@f)vkD-lqppA8* zjrE|7^`VUopp6Zojg6p5 zsypxmNPVG5{h&hqp+Wi*difW~`5bdcpTKig?s?F5C)#hp6X=}BO+E#5R`NTf$2kp3aN=wx)XjioB+AUSe zNpqf(<`g5%X<%+*Zf*&X%(`+N2r_B{3i_LBA>dl`ELdu4kydo6oidqevt_D}7t z?d|O0_DFjVeW*TMAE_tnQ}h}7Y}h6G3Vn^fK|iP;(NE~7^>g|~#{$P<$8yJN$9l(R z$9Bi}j(wy$$^WN1|ED@G)j>;ESad}Un5_;tKDTjIBUL^7)y-0M#rl#o#kfmGMHx+(=VquyjYN?SeEl1T-zl^*U|+x4m4#a7E{D>Wo( zV#Sz~l~vEM^UOUmdCr+@w5T@nc^wv`Od783YD*~nOs-K+Ewh%H)cj+uKC_xb%%My- zmp6aN{4KRC^;s56BTF-u!_vailI63swzOphY>RBGSYg|*wm(>D*+RBsW%Td$eXO#6 zS-;GxJB~U|vKo$`9Jg3qf9}s&E9A=u`K(U14r|2Jb?Y#9j(yzu&FL;>u6%!tTz(6C z86(pg!f#-&;5gjHvHdIe!ogZlzSZ^OIQmbd@F12%p;2r+g{QbjBwcH&cb=7p&s1d% zDBP6NsLDFBC<=FX?`0kA%~sen>{D6oamL=-j)43C`^>Y?>e~a@wXoOz;-ioS`=7`L zv*GkVio)t@*I+iA&1Xy8p;Z*Cp6b2LeLS+b&woAEg#KGlSRKcD?vz}iK@^+hJ~DOx z!y_}yQ%?T3j#2=f>Fz9^^`qm_kB-zR9HnpAT(577h`UC%U0Zlmmi|?FY0n~XgfhM* z5_cV;df2P4Vb{6$@ZIAx*6S#&fSu>10XN-8@2@>B95eL`vh;b8{_g#$j}hx#$~qiw zR*F7rVo_@}aL1}SMy1?~D_$_oHpe!XG249Ge5z?~VJtmkEL_kwR#gK#UOS#UUN~Ml zUO9esP)$gBu4-I{T2@diqzTig71ErUsYc&M+T^-6mVhIxekX#J)^qB)^xS$LJ+Gcm zI3+jdR!ukh#5xuBhOfRmN&`av2^wPRh57LA65Is~cqnFjo>E-nbdPV(1y^>y8 zucCjXSJkWO)%6;BO}&<0TmM+Equ15z;c8R~(V8+nQjA31P>1D{zw1JG=mB~bJ*yt5 zzo);iXOq9lH}b9gLuWeIHQl6}b&Kw!`|4KRPq*oIUFy2-uV>OT>)G`jxb|0^m!t#u z3x7%B*TSK$VsT$;`E-y2XYdJwql;6q}IY-WuOXNzqR!)*rohCM(r78quF+C~T4FcIYj4r=A-h9MC3cUN%IpO#RoE-`ntjB6 zqoo@AotEmrpEc$=cn;Qt=i<58Cp-_&!6SOIT;Vj4xvmd<9>@BKa!5ibe4?d=2Zu*YR~Mns4A6SPb9HH?yvM zE8ohx@$Gy&>&|!bova7{o`27J@;!VHi{<V+bf%WD``B9d@ zkMrZK5C4(>$P)P}ev0)~S4CMrevY4G{rP!*o(B`;PrdT*dA!SG+lVj8W4{t#!DH*O{N$a=HO=#27J#SC^2lE+ubWNxrNX{pBE&{CbfWq*+GYFs0)HFGn0tq=EMA9FuC7j>vFW+&gJ(@VZf6(0F+W}caR zHw(`~z8lB`$#=8yY~;Jyd3N&MoIEG_Zf>5Nd^a!8OTL?*=O^DS$P1G17UqS?cZ={M zt7c|K^Ywf^`R+!(k$iUx-$K5-jc+60 z-NAQ|@9yHe$ai=1-Q>G_`Cjtf{d_<9?m>Q#eD^RvOul=BA0gj8#*dNjp5Q0QcTe(@ z@t_%$||-{3dc5FcM3Up7=GP`x|M zRRc4$1X*UZZq)43{O(pmL(In5N(<9J)z#B2)J)U>mJ_u;^}zM|dIP^N-SzU1e|2 zyjZn2CcPuYqs2qzlA|BsORWumN;_|Qe_JNf-qvLeWM6zXmi_VBP^ve1*JV4&HekC{ z>6hv{e?z2J*PWBDvYYHKd&r(LR>sL*GM;kq&+d^cw|_Ss@4cqu-a>Dwx6)hdZS=N! znBI=g!@qVGypD{xMQW<%BdaG~tNUa#;x%!{LtHIE^`w>NCnDzoBkqJDUrs10uuwc~A~5^odL@ix%_yiGI< z-X@yW_R{u};SJVe3j6ooM#`;dX<9p})~nd2(Gk*U?={zK{>Ey+NGzn~KK+Ke1M`(v ze6pqsJe7$4(>(Dekx0u6v5jJP)BiyaQBN9I??2$;t|v~2I(Vz$B>F$=wdNN3SK~HJ z1beNUQ>dq)MpNjn>#bJqwbfHGs2wd%igV&}#`^repuH32iEI(O)cgEATePA7+!UWe z`_{&5i!DMuYsErjq)1j_&lW=&$2$m1dBt_7xO1v5=3~5KTi}jhP1F?i_*<{|Dwt2D zQCmA$l=u40+Um`Ud;(@=WyCs#Kjupb{+2tv;r34wpVupXJhjl~Vonvuj45|Ko6Uz)i;gpO_8w=P zZ#IIB;N7|ESE^^wobw{xc~f4St7pupC;#m55Hs~IoAUC!1gB#{eRq!8Qt4ZjrMfI9 z)l2IBW;M4eW2>CByx;=4Qcq6l>1HlJqOvb$ikVEBCYvTR9q*fU_}2EV&HTwH`m#(Y z`%aYoAoxzO3nEOuq3dLkXluwRt>3DM{4yvO2owi*lFlrKSOvn>}FRTMgFXanpqf_u3D6)iBxN` z@+ewUz4Njd=EMdvb&gH8-RkYx2<`EN_9CR7oRciZL#>?HCL8raT-zumOy4Rayw@G} z+ESG$%1K!|HwkP2wTDNrF>C^x<{qn2bNaV2b-(;E>erm7Ud>I+P<}!ve`>YR zxu;f0DIUrz@~TvR8c-=}#oO};-j&DkL_UZo@sT{4Pon-r3iTJ3iLsRbu_BplvKU8p z9OXrb@#?L*;%hO1>;y59>_j>$LQEpX6=JeFQ(_9~t|0ZDhBG)_9S1s(Ld>KRButa3 z1PMzYDnY`xHmRzha@2-w8*5v#ZLMKs!>sMdwu9QXw{{?_-fb+b9aSl^hLf_Yw?%h` z7Dtecutt)Nv__GQvUVZc#Y&21jkZ$FZH=*ZCEL~7jchk-ce35BJ;?ST1sB$y)>yLY zP07L^~x_%D!-5q>D;o#@#g8;9IUc*tGwehh=B!BsJ*S5`e*7n%$XD?{4 zVsB-Sw~w(ewC}Q?w?C7*EF!DRFqud_r6trixh!8%kE{gs13T&i^htE&eVNX(s1n@0 zWmH_v)-VV(f#4Ec8+Uhi3m)7hK;sU0RxrKj`?7=9+3}iP-I|UffMWi+z{@??RNv80XL8~t-$3Xt(;&u z;0Iw!oPKd|81Ms<33@*{SO$g_*Mzm-1ds&9`pzWWU+#6iJL{Bip1&L*$qYClk{2k) z1x^C8iJ0L@!@okf{}5ynfVEF}J7DNtk`?emc-w!74SWZ@5ZT7>hXTI?A|RTO^oxSO z!kiQKe*v!G_LG7ofDwo$Ed9pd9+)a<6S#hKfEIiehDo76JwOYlYDoBdAU&*>Es#!F z-LHfhoB*T~QOE121*-vz5luMyEx}VTRWK$<{dfQ^geokPQvVWw7Hrjs@N{4atd<=R zUzpR+ni(7g#24Yj>!$?E15*%9*!s=D!!T9vOc4690CVtFm?p*k)_^&fs$t=}Kx^1J zTVRujYv3U#SODlLe2vqu4{iZ^BAF2P3xd62s)$X5`h5UA5RMR=e*Of|JntR<2qXIw zK=GIWLqw1R2{^$yKq--EynYt&XJ8-VCU?IBcmu`}Y7@F24seIIDFr4*+9dCn0ms2O z!f#^q(*Sso9Pu`5{8J%$0FJ%FBLS)Jc&vbhZvf+nyh+f{1Gt0RqylFkZu0lLgD+ql zAvdA=-vJumJECo7`|CnALOTu!GY0CyG+F~SgvXD%=iP(auNM_Lh_4irEl$9jcn;q^B_ z{E02i1lET^M|lN1V2g-H;3X#*`V9d7KQz}U)B}GM_+We!2a5yzUo_W*)B|6Xgg#zb zmxQ;Qp-%2{zFuNcw*R`={+0gUW-UNg0Zc+(z3UuY)r7FC{~^?zDNs=)J%FDByaOB+ zNyqP(1^)mtwS?^_+(#>`FZvGyZ-kHi7umoMz}HthUuU0SSRe}GCP}{-I0WYW{U%yJ z8NeO!9A}dy)bM%P+c*+?59fl$|16tzmx4=#>Fz`1HM@jCBkuk0VV3g=d@>=pT`m;S zwmY`V6j+tEI~IJ=r}aj;s^$`$tMuXu-Vz#w&&u@CNQPZntSP|`mXSWdAT-n@(NZ%WoK$Ap9zZRkgF@FqT$pFb2(*NGXlWEuU{~X4$z!qLla^u?T zj*rzJphYnq>SA(syjaxa!Br7>NZ!2k(dy6@BoV<-kC@gD*w?CA0j5F1l z99*42c_6Q@^_{Tz*9RhY4kieDfF4$B=qAKX(At4#xCrSUHiI=yEJLCcY3=29VQE|1Xt zlHtvP9Cju-!^Jyj8801ro=w{`)yq9bb=(k;4L#>}Q{e4U!U$#I+i5uM5T7SvM zQJILiNvZ*AZ3$)WKHll0PNUC`Ha7`1=-^`h;M=wGKA+kO7v2Rav-|SY>g913%pQ zVu_oxCyP(r(yc><`o^hSneB3pldr>9B#2BtX?VN4%uHMfhzmS*bf;H>n%|d$fS+f{ z&CGVDL>DmGn6IGW*cSY^;6{xNhm$;zZ*;_T)y7E@4w`~zjopZB^u=_6gYvFI^-Z7E zXmlt?o__QW2xv5CRuk~jWme$PSd-Gkf0}w!nu5adr{5*g(YT<}P0pQ!pXreHjPGey za~OBRTy1mK^Pk7Siw-&OjclxvKeI|?qvC9kGE}>@+K{I4SpGaVn2y*gp4%H^e-&?$ z3x6kpGj0`p>(VgqH0_cw_<;{!qqyLDdvtN8LidbJ+$mf`W9y?^Pj6v8*D2iZ9q5a2 zyWHt@!0t<_hPBICinLx}bYGwy2mb5zCo@PrYJ8cl)$1rRE=!auWNepSGpkKx9IeAo$&Bmec$R%6qw*>E@?B}*vvID{XpBL`Sk;oK9ty8) zx)m07Ax!s&o`SrQ29I|Joi5Z0ZEHk3U-URAn^3PYqUEr3Jr#XLMK4~)ryO!wKM(XJ zCI%G`(PH|mvi~#|r8WC$EJDlq(^!f&_B=aXPKtw_E^;n|GJK1%O+2NdZUe3CTcYla z((VOX15B;q&kw{CxCd5hPPDoj8v0<5`mAINbfFl5r%6KJr1jzpks1Q_?vs4&Oq`X~ zGLG@j8p_sK>75`PW6+-+9l>-I&Ti!V(FHGv6N}IznGC7{*c3ctov|IxZuR`p zug!T)>M}75A{iU*H2PzxvMvJn?bVG|Ns2GAu2sb~qb@&OqsPmXW%MLWpScsH5PmnJ z{BBfB%^%;9s_hrJ9q_e44hB(v9Y1TSXfnFVj8qIEgiS$|WpJX^pmgosw%_GUdzy1P zfM*R^mWY}Dd|Bqf)zY*qc2d~4@8H2Cpnpv;P77<3<})hka+8K?W3T9E zmDlj+VNcI6$LOSa-5%L0{j>?+en!uWA)@^pV0TQ7zM*8 zZz=Z=z=q*#d87NB@7D=CcW&7>Dd5~iaRKsmCC`_0Fd+U=G5CtqXvFABj% zFE20rUp=A^8L=`;$=2u9mxO9WQ>3Ks^JeNn#|&yZT^u_DB`1#D1kcfO$WyRNY#Yjg zSK=+@%PVN7`A*9(Nw``?Hx(JVqaL4}u#E+5=vOXXQB<6c9CK!}9Zfo?02(h&8GP}} zK0~{?KW{AcEX0*p*lsf7-AVEmMre*gY)}?(>*%bxW{)cb3_UxqKYjOlCMe6uc;EtQ zQ?NcQ@hu>J(N#hi&GSf)Gt8%x<&l?AQ292Yy2+0De?})?nvdBMdaiD*`MH>+UBGc3 z{0RloMPdTk+o~Zho645kC|5sWiW@~#Pvn%HLT*X-zm;z2+%oQ08Zn}`4cVPGJ+fTg zF25)7DwIl;Fu``0Fq*NZR+bq4jxH~buutZSK9-#?jSA>iViAqZQXgaAM;OhY?xWpb zu+2%{$mFI}hzrjTOIdGqBh?S9PY!eLH9(kjw7jb&)uv%kEiO=-va~{~$mEC1n4#Ro$wkF1DBAS z@Lf?3^=G{+9*j`hiGl>6J#nt74_Rh6DyR&7g9P9_;jh^bac8S53M+ODeFFqgJRz@1 z4=H8`D>Muz49h$9Uyp+F1YCn=Q!47?Io7t^x`| z3OU-`YC@~{R-s(+*F2u#UZTH74W7DK@mt%?LThd=Cclq(RC$omN|nbS$wLB71Xo*h z&D9+FEx|P%=wW7YDikF%L3^TH3myVyLn>kniRm7&Yi@MCp`+_PXU~ExBn7~I+Q=%{ zDm64PD?C^wNly@;-SYUJOjq{gez#5;GjL{)g#L(q2#x=FI7n^zZI!=&yGDDc$3@CmW{h$s}r&@6^?o(t--cP4|Y!=F9GzgvGt zT_$6+i^H2rZCr^HAsGR$I(8_4?p9fCcC8AkOLmH#X6IkNrOM>XJLvco8f{R@2MXF_ zIeHH-RZGh0I-7VcCl6b0l}?o?_v~+3O;O{nmtbjE=_;9c>Sp`}0 zoPM%}?c4}(duy7a4ZcwH~vf(~mw&#}e|589#`ZSQjqzI?hFQZyz44o|;|a4YDX=whE*bZI)G7xSPl#&Vw^1jX-T!x)Lk@#M_fBV#a zB-R%!hj_Bta&sw5(vfou6Qs(aV zWjz{3hDtES*oyz>rNfKsoRtIvW}7p0zoqZXQ$CeYOnJJmc+VXlCFhzbnNaeN?owy* zp%GnYX{WtBVU_R5SH%W(c8nR0yhVqzSZx$FW%wK=+`pB|pz^Fo+OxFagIezkEsnU` zVAXtOA8l;T)I5KexNxTwW1c7C@gDFU z*I>&+Tj#9nWi6gD0@otzsgT1P!5yYbD?3IzqK;+YC|5lf;-mrq34qcrPZU_PV;^Ae zua6$;eSoabCqGkH5tZ&3Ose>v#^WZvRve_|6VRouC}}{BOui>M{5}W~Kk%n=)dr?U zdWi++msq!bHVa`MlDmcW^mcoq){G4@Qd_jAH17wqC=$IG)5g4(hbt8XEfdo@B@#d^4xrL>z7Q5;6Q?c+@>Fwjv95BGDdA#;Hv#=5rU|n5U z_(1E5fX97VDA=^M8^tw@Pm7Vv!ck~GH@2lwf|KSw*QIkKdsJdz>93e%qzE`)*3+-E5t_@r^}I|`b$Wsv#06oV)MD$H<5)QKnT6B8$KK)E9wG=b%b1}Y5X_GFA*Io`u5pmih z_odGk0(+u&4oNHeLVQ3YlkO=6PlN>8I%D-Zevf0MCJijze6Bgy*E2{fejz-Ruh_56 z9yIt%+@8w!gcGea&RVx7Z|_c>-fS7Y6J+u@X>av_wew|uoLqh4u#QV|ciHIIe;EH- zNJjXrqHU`n`G=}+B(Kc}bQ*frBVtH!D{UcN!-kf7jTDIDn25V?Ak z3|;KmaAH~wT5@K4r$AgE_f!U5sM%Q=^h8l~?(FF{azEAYh2$zE$E)-PtmFkI6>R-* zaMl|X{!yvq0s82gTN!cfLNa`7c6)kCmZQc=I>Cs1Y*sHVGnk4q*1LQUMh|p)3$};8 zx?a@`EFRalJS(%;h)I0gKZ12AHE!ke^wRE1^hBhhE6J+W37n1YDr-Z2*%c~fPlMjE zaWEampU1?USPBZQgj#ACua@XWJoyec(yqyDB-&PEV-xs1cf`ljwd@G(Cwpr>DOCI7 z*3b=td8P2n3h(Y6a>E3QGMWT-w>@dta&k%~^dkymSS@sZvFklQrPa1zryqLNEZ5R< zrE}gt#qe0@NVJC>o$Ehe=D5@KY9P_BqXh zbDVzbw7$2RTz^pmZJ)hvolYRc_I=-l3Xf8b(XZq$#IF7SCMF@T{Diq^|IkuiSa9>^wX@ zOUI5Q!heZMPbNs&72EI?$YfD&2DpV#fNtg`B2pC7e_1qy9;vHq43xoFF|Ce7TdZJ$ za+fuSHl=TN5jqIW>5LJoY-1te{H_16`8n5gae8?FAWx}4H_Xk?r(uRN0h!#lu&)LE zVY8N(ll5)8&rGTII_y~`3X`Hh$tP5!>%7&~D90BLY--c*hRg+_1p&5&AxcxnAZwo6 zS;blQ3i1-f_h*SVe_b*!^532Aa{Reu8$=WqI2A5aC{yo#ZX2yC?}ARQ;XRweYOghco_bxWejdm^OtWOzau}lr&i+K z7b?JAIxct- z5n@i^)N#p{LVVcwq6&B29>dgZDGOt*(wCbaxp&zcev}RZXM04c^#(MWH(YX{`;v0N zQC3Lzw8T)>%abCkJ7Bc7a*I~gWN1*Hcs{?opt2<-#lMD1b051xuMg`halRPh)yO}$ zDS=_jf_2^^{E_kFIu4_GrksLI3baUNyE(9&-(NwZYdm4lJp9nkII@`?dwD=Z(lx(q zR6LNrib3?CPQlpMAr2X+dHIAcq4(_0si42wpBYP7M0bRpcV{nN6NU{HHu3)3_$cWm zW16{D>eX<)LWN))M%-Y&BB*IR?F8nAX_hPG`_AiL*YR^dylE$wq>Dpr`wq7p(Zt1( zs#+ZNulG8yh1SzaIVUs(wBrcT!+$ddmy=Mi%Svj5*rj$&cSi3w5=?a`SdFf4(*nW( z_7ap#&q|S~m_{tzlKS`)pXnSF7MQnU5iAUa)3Pb8WE!|AdMWCA5lyl`ewha`Y$iw& z2#v1$mmyt3Lx1{+)u_<6!OP^zRJD*JjY5|3dNjP^28}&d`OE_5oOag*q)4d6&I?FYjM{2(wkBFfbk-B=hJcuXIH3L8JU0qA9s&GQ(e{3)#ZN zNC;Ez!~H;B>xiDH{Q z5m9Qvc_E!c2D{!7b);WkqL)_~f?kB}>W(h++##6hkJ!Ar%KVI2R{EIkW;ya-8u?|c zyU`h|jBG{1&SX+daXyV~y#(L;7CYyca_Cs9#tEbyw{{d3#b#pbiB|`L;dy+8_?WOZ zOUoYeH!L^r=Pt5aPC2IkxTZ3XvwNS$Q%?P=8=?&K)r3G-*2QmjYXqqyu`0F@!-6uq zcU7>5cwpsiDIyiR-T0Ah2o$wV;!*Nb!hc|WIMeg27sN|ttao}Rc~!d6p%--(^dZ)& zzevk=7mKZ%ec4AyW8QS_NfoEO(-O9q88wGQ%rH;x!O}XY>zf$LnnERlqE!RP{>Nx7 z^#J!K*U)5|(d%BEb_&A7fi|@rjMuKHw%oAUCp=Q~I#-@$oC)T4VN<7}$ZW*}#jP?_ z;c8J2D`@z(=c%2tEdzt`pG*+fd+IIUd%%6eO7#6!dNf@~ppzz`BH&osZ%_y`vrhG! zk*L4KhkAY#tGG*9Lrcr&PgHD93))BVuVzjGWpVR|$j$NAXsR(I@k6RdRX!osFMgs0 zl?^qmi8)6#Qz-}KoehcJR&)h&5ReY=Lj`u5`s zmXB-QM~Y%*@#bUdGxx<%*mG%Fc)L|y4jefJmHX#)pVd0B5TCRi^Lk{q-gVT|I;lXp zWl-pf!-V$JVH}-~)J7~%fFHI+@%INJGi9uLn>!9LLnB5hw%IVg{BF2$HnPN)v;>S9 zgM{qCG5n_@f}U-u6hA<8tS@B2;))1H_oCF$P~)9PeOrSob}3#~q&vYJc6nB92S37) zyQ*5mfn%Lj9PA9dqu|%t3vSq+0x{hXydkLSr+1QLCGt zsnn188SnydQ14wvb0cpP(+m2lm$$GE_7s|(Z;x(~U~4w0H_wC^N{QOe zGKx*OoAC}}Y#p3azt!w1a-_&;=)`$_m%ZUE|K%%vnpIP#ndkKVpgPU}``*3npqyK} zGw-`4!CK{YM0M1$NZky6tz6snq2MZdWc6B*_04XqKCdku0s=Uwwb65}kPC2a_-p5W zaCYsRhC`M9AwwEoX~9+NP2ACD1$~x=Q=sHAN%%28RSK-SpaYY4b0HsnX4hOY?`4Tj zQdrU=G3AHX^)ZHoo}exX|JhVlS;SRK1(9V8JMU3vsj03py*=TdRQkUcRCh&S-NVo& z=xP|m3>Ia)6(~h0M9@_a7r2bO!I`P-Gi3~Fz0Vc&s}FqW3+(RDn{$jZ+je|(sPkQI z(aeUL^~tusaWLO0SrAJOTr-8s5iuvt@Ck}Cx-plo(2!i=ed-N;`B2VPyAJCaTU}rd zP)e;>M7R?x&QEcBh}~S0yAIfrv_FVTwIYOyoiDZoe0PJOL9Xy5?mqN8 zM!UaSL+Px)pwOLslBum$Iz5Ks<8#xR&8IJ_>Gm>S(u9ph1sm#V^WU%%4d~MbyRN|P zgld^gSf;B9efmtEc z6DMa!QzM(dsGYGT5H+_U*m(Yz*xm&3KjAL{{}BEE zjL2Sl`2SE`uf6?SRIk|EX#S;M|5GggFN){2zyE*2U#UDh7Le8OONtL_=w4YNJIvk&G&Z#GBP?nhYiQjO{v zRx4!M6~V)ct@=s8yRciRHfn>yep+QSY@?TGVa3rFc_RZEB@oSwh|e8aWSXht4*4m_ zHKB%kP7NLGrKYIlay$zv7T~KqWRC0_&tkta$0nI4`RJ9e_2I=?6LBIiKbNP9ZIbA$ zs&lYw5lUi=SHeS7+hu_!f}f#ls7dN1-sm@?%3++Z!r44cm+-@)Rg40Di1PEyOiMEU zF)O<3)VxC13xp617X*pX9l52F!qzocEn>yk|HcEev;5zZ01qoG8`r>ILGC2Aczx-J|ZV~Kt>0`S!@s_+Nb1r3tN2N zg=|nd|A>;w@UtD@kzMjoKqB0AAi(3H_p|D3s<*YxYp{(=}&aVYMrlgTNRtb78F1KI{JCM%u(Fx9sR-3ozHK> zDP?q-`*eGSXdm);ZVzHHB}K?9%XRJKiP&SkS(lBC}%0LhTD7?PDgM^QC3)l5xXm3wqe9R7D+GJpllu zgYl6{8~lrO=@0#UmIrX%^wH&D08F6|nKVuKjQgF#zfBg3J)79uedp?tK&?%FRvbMI zdKRlybM$qsT@~@opH6W=4o06+MnlTG^w!bD|qXKNwkVyf!BKa9%!s!UZIruZ4M8RKC zmS<4hfI;k>CDA&bWIMjY11QZHn}e@bhPb_hEc(&UBYlsrFT$*XL}I6#AbyRNarqE_ zkM*KAh;%>-Hk~ztyKh8aKoi|1PlsQNATACQiF9X;D$EA+9>y>D;w?LEatEZ^*$6rF{a{R$#s;D3*{rdNQK z9=vUQbqia~1O^ocp}mg-6;}+uc-L8Ck@p}5MWu*v=*N2=hXF^Rs?DM6XORZG7l1%7 zV(U&0Lov^!Td0P+snwh-TUag{HeJM`+i!=EXD*uL%~40pSmm8n2h2~hp`paE`P{In zz1;H??cp6X>LMoN$m1BKz9l$)M2~6Aep&ckP>2`Ow^UanU4H_NNP^kndiG_6{CeW{ znFAf)hu$%|ePn~L%A{`JY3dRF zG7@8L_uh;5m;NwD(8kBdj~}+V!|)e=CT*Cf-CQyanPIN26EQJ(9)@NzNp&F$(*tvjv`?VT((mtN1 z|1T`{?6N?$*9G~lPzOdF`>?CxlPI5-AgDku(B2g=E@UMVOX4nUC1OiZ2h~hng{P2{ zK1KN*u*&tFFq0F?1_5k_Wcx`Ka98xRksh4;5%$Q|A_Ca=%CM_7hY0pWuNi{Y5)V+^ zgjb?P!~ty8zCkEmTIMgXsZrMws!YL7N=*KclQHe?b3*O8szUHPIX;Mt!b>pN*~pzC zRij;|r$&>5YeGsw3RfTO(e|mQ-|W2%-1$tsrz#F+V_h@G-bDt2*B78{{n z;Wf}d(0c{%*V^;!yWT?Y`*u=QKde@(mIo@D-gNG)!q*6)Xk`09mUX5wb)xQHomx!d z7c9S@G0E^}>Hz(DX4Q?j)+ktpUQo6Rei2`S%ou(~ZiS!8T87FHYrzzZ@xY&Y31BkI z2wqt8nB-f9ndB?FLINT zugH~A1JeVY8}zZ1HwKaL6NMMk0}ek-)7Ud6f9Q32;WNxLEapw{J@+H33(7vz8r&_~ ze%$Hj$^2E4$^12{IjOZTrz(@6RZzhzRe>2ff(R%eV*iycvVu`%Zz3XzC%_~6Rm`d8 zwUHa7&)0j>N4zVFTcrKLf;K;)4m)K7e}RJX&JP9U%1bDUX1>UtixoH2 zz02f2zsI-|y_W^qz+);~FTz3G9?Py#@2_{yc`r4S|HR$8%}j|2@Yg0qjzi=T`|gxO zAJ}1z-X8jyBCbRHQ?IYpB)MGVpj5cDTZ}0~zE~uB#r+~e0A zz)ynG2?82?UOGzvvGD|z0-#1{o-(k-{u@lFJIAgpMz+izf z$z?{K>ID2pa6^A`$u{yp#2Pz6MAGzg=Y7oW(lCmDUk*KZ1obz7NpSxXJR0cUW4pdl&&{9`_sf7G z5a8{RM9cy~xTk}vO6O`=y=0uw5s)^Exa~z3XVO_F=TS|sEu)h&0F*HsV7G9B2yQ09 z6mW_7yw8mDuJ>$>nz$7{N8HU*;=egAkOD}g#ks&%?eOdRxtOaqXPKKrKW9R!p>7(7 zE03!ZYmyL-V(~G1$O!_L*pu75(DX7y8NNtz2LgVl&6gL}&wKjg4uop48ceZuoo0Ki z9mO{uh_0730Qi;lpTk+AQKT-`ikUwKY1BG4y@hE+NwnxPMNdvxW;Nz5SQSI^E^_10 zs_f15itln&xUgE6$ClOBv75ej$eBZ8>95=zapdi$hLp->HA8Mklw|pGA~ehj^?GD) zWvn}0N`RP0gryq2339t7Ps1X>RZokxzY5JHC#ohvPEzX=r2}$ig;C?~WvPQ4AxsX$ zUq#5NT4ek?pHL3UIhaTvhLpoZP6B}U=J(ALZ8&*f(4(Ix)QwzzKB2(6Q_gE%W8nKS$?nC?Sd`%<2P%v#Eb~ zY!MBa&C%n_*wx`2{$z-L9I=rl1X-=G5?KOX0U?FG}gLs(Y-f zH2Vqs0&5b;<&5moYd|INgJzl$$dicwXiWci_B3v2#sA`$Rd2={zcwG=sWE>uLT5o# z4yv^g+seK-z+4@&}z7YtKk}5_up8<|9ty7l6 zQKb|^6_DJj zhw6MXGztKKg`SpE< zv4>eCf^9fbs6SZEA>ur2SJ$e1U3Ay%nzCeD+wYnpt4w+HT-3Q4(6TEmkM}QuqDb{^ zx;qS!1kL~c$MTg1kJ^Je-#m`G1a6BG%>o8~E&0^JtEH(`79qo__E>zOMt1yCJIuy= z$xHg%Yp%K?dXWU{fv2EQ;b)iBHpHaYJfxY*@v<*(9p`75=%7X07})j$Hb6rsQN{=U zqKOT`+XC2YQ#F{ed3c{hXLY2EoiQX;k*UM92{GRNNbq>o%2Wh=zY( zgtub2h}YDk-+Up^Cy8RP_^ z@{VApxKX*~9YX?66&=n`Ma`x|&L283Kb8)hi*56VkDZ|jdYG)fiznH6GrkEHlj$us zgbt%bCjsoocpySP*N|!ZEuWoS+&@A11CjSyl7)6*+9nQe{DoFNy3D7!MtpWgZeMer z$BdX*Q=5|U>;AidGhM+`d;cWXKUV|Z2K&@g+>eBN(cd&n`2B-5 zc{T(zdR8ckC{gT(-}R2}sxd_k{Ie;;XfYET$~NjTY`e}1^RGdU1fV#!lFl4c*ky=; z(-%UfGw!_3tjh4e9EXlAEG5R9XH^=IP`0FD42jS-vy*t|x3G21tr{~5r7zXK;dIZB zoZm<2irH48g>KqM`g63`m{z!< zjugue-T=o5eo(;8i!ozx`%J6DuJp3eTkwbF#V@+WbeX2MBId?bI$ovf=zoz&reZBK z5!MCP)%z#(ie@e%%TXUnRp!Af)Gx#}^>uIK)|UAH{s>Xtckrd@QG|e_k?cA1^;o9H zC;j0Afq!h3!Z&nE_07ZmsS$)!FK%I;hYMKx2s7QfI6EJWtBDoSYYY(<^Z}?%EE@#G zBIilCQ(yMuTdli$G(iTg-MoXc&0ji+aQBYmgjLey>^fmmFNyqz#2Ea|1kWToZ<}t%rY-EpS5#L3Fw*V1W z_pEJ!F&!(^{V`#JL=x_2-K1YOH+)VSGj~7I3v{frAyKj!g zNY3WJf6Sq=UFW<;3Y6$8ryLI{!^tWMODo6#f2Hn|DDflIGmYTaQ+j3(P+*G#JILBz zYKDFYARP1)8V}RI8HhO_9UNy$wf%DhlzXs{I8cVlY*o5|QdtF{^rM@^JG+(=H!vAK zRwd5vt2fX3mmt#Fl%uO}hUDuv++}NxXpNzVXRc0~;AJ)&% zHprX%c>gM9=0>Mv#e$x;AR*vK8e$1qV`VJ@n>~4ai3}wq9=?OL!9=>XobV?yo&m4o zP^`&-V`&V}>Une|EA2l!;l_5+1b2E2Az7zjk&;(8P53W2EtU5ccS8y{I{)JcX;BQe zyrFeaJ&RD^hmgLy8$MRc!UXwYh%xCJR*Vuk?o3wIVhYkQO=f}!PE}QcJ3^W_1F!i0 zNTUAh%^PMNs7!RMovLk3Os)3#sLB9kn9NiGHSBdY5ONtr(B`Q#tS!jeMbZjRt!k!f z5^7(|tA4+8(9n5Js7d_M!A!w=eQo*GV-K3Cs$tT(M*X9qZ&oC>f3NxL(S9(OT{=D&=sf&GhUS(bepWTk#VKt$Qcj-7vH) zKL!NDmTnC0q2@q;_sRn3mI<$g`v^eWKkCW@2O!KQ0X4OCMj1!Dp%6c@YF*exbXcc2 z0cM*zYDTcp?}`ril@5~hG}JV(BcS(-=BqO;+Wb)mw`k76yEOJpkyK8cDscxNyrNQ2;ix?pGZNk(K$ms8}<{oa&USL6Y>e z>*VC*zq6r3&^z4Dq->XKOLHxgc*3jnDYY)(^q6$uKsWTj75?X=piIlzpKoL=ZLzJN17Z@ z-cQ+GqU@;Kzy`=!C3EJq+Ddx9H=7(y5iGWtzWf!uH-S|L-YJU#v%a*N#-9=$Ouo(4 z{25Rf0)>IbL`Xtr{B2P#0u;Jca!o*f7exi2 zwMTvqEk<=u)GSRN^3Sd`lT}M zyDF{wjQt*Vxap$z#udBt9-mY(nsWR?Q8z7}>&wXD2CrG|Xevt!2S;gcV_{{Mpq7S? zie5sfMsJO|1UUgb%%fm=-;pD)YLk4W_E41xE1tOjPG%NWYo_9$>Wyjl{%y8I6glBa zC@wzA!0w=VVy&TdTI94;vBhVryh^hdPs=@&_nrabe@~=#=yxb0y6b-m+ZS#8;F;94>7H1*& zhOyWg%uT({{L@nH7^RSwXC^A+U}Z$|Sv%amC{m)HP!gF06{Sb%u+piQ?d>7=7+c}v zv+B-l-{v89?|=@kYT%v6mP{h`a6c?Xx$?SmoLbm`x{kAorBr7pHSCtqSE?MIk|Qe| z80JE9h;A0r&h*ZkUkuT?jt{k+da`m!j0*aEe@VuQiD{T85z@^NXycLna%HduES#$$ z+y`T=mX-GgHkc#?du|9dy2=MXkRN{{D-UWeT0G$6SQc}bU*5W=;yJ z*s;LDGAmNMhPU#2suFh zhve}-{wF?ZL5mC))j|iGU8Hs*RNt$FN*;VEr%1JZd||n9MR+}=!3)>CR>3&ASVrUh z&KnHxRM`nOJbXd^&J_Y;C636`(++t4I{X<|_Kmfeo__qty>IN+o#JNpTgkfGf$}7T zfUDF#9EKc5cc4-gV$jH5Wn)Yp8;jwW>^ z<9$}QbgP#E zJn2v_zVtTIX&lQrX_RT#Zxdk(J(TITNbc~o7TZ0~r@_(dIK>20=_L=w>Bh>SzrL=F zj?DLKM7G9fH=Vs5$be}9BX38v=C>_#$B)bzbK1zyQJ-V^D~H`D+lC0uiDJ*o2JPaf z?y_N->yfz)oUH06N2XO7LUSWz$LU?|mhC^!!Y}>PoTB-d>JdcGlIQ-^9;X>P&TBhf zs?JFGWXd+;HOM+PH0TG62A1MAh%=VTp82%AMyLQ3*GYFAPD9iJM=(~}y+r9ATI9&6 z#Li|mo8#F2^rg3^151tBmxvLg3?YfCkm2b`U>HTxPs00O)6V(yyr&58g*$#~jhY5y zA0s>m)Cq1~g0_*r+-zzOkD87WmM)Ir9myGLcY%AE{ni)}VVQBpJYm^C&qk9(i2S7a zWQQMY#d6qQ5i^;q6Q_NYMxxwSP>0{~ICP7o-#$8q9+eSfnl>45VwOBYRq}@cs$0tNXyV!Ji}K zdE4@3Rsj%V@$+Q3Lj5WG{l$khmQXR(TY+9ooEMzWhi;uQK_S9fKFgfe8Y+PeZ90|r zrJX%WAw4e?x&bSOIh|>peL(SIfvg3`2Y1nO`8?j?PQuRIn&0m_-8Tg_*XY;e1Td#u z;p)FVQ#Z5H>xBB2?-o(Hw4KJX=`sr|Szb8yyD-<&aFgZb^ z$YOYJu9_8Dtg#Ss1wA|@Gr!lT_Y`kHvuB$pwLLc`j9C?!l%C8xMiZpf4VMyK`q~%WwHSjm z$hkh3`)fj?SnuO=`_2**Kk^{U>Fy)Z>qfQ5jB9L{xz@zjA<}^c2UVCTOHz&}?>L)- znqhAc0z0=ZrFA7^gtsB(j9;(?74ShJrO}g|UN;(_&vhrQSop(@gkaE$OM7Q3@Ln~% z;y&CcMZk20q9i9OX2zy;?BT1#?Kt*WPObEf>Zc6sXuNDa6t$m3Kp6IQ9wv%;@tkD> zy+&EhfG1F6h1?3d#EQm#gWkCPoV}-1k?D_$NTLW+5BBuIX+20w`afH`ZTonfe4$iJ zHO4KBbLOs3yBR;h1g;OCln?U>FQ@9p$9m>F+p#S#u z>*+gf?{5Bt{2~Oz=vepGgeUjDHiO!QjM&6N&~6wY6(qT+NH%RNLf8%NsK5>kJy8SP zkNKG@hy;Eica*y3d=7Sotw*YJSh%(6@yA+2aVf}JB-Gtso6Bols1Y7I=lF%@SyHM&0yeR5Oq7X zR9dnd^--GMPSbs;12mmRT|uolY74P2#Bp0sV!c7s?HEWsl8&RckTixkp533oyaCkh z7GLm!vH`&^0uj4#_#f->aYQjE?Z%(Q8$VhI5fl zqD~ht;PF?u*QkD*>djO?NA+Z?_OvCg{3EXXFs|GYS31r7Vn|^20je)iJtJ*PC@&_I zA0?Dq6Ur?KWf%7xRANCa9jsLTP^tW`Qu%JB^7TsPx=LkzrLwY8Sz1XpRSOy@e1s_X zL8{@jPgCC3lxH>NXPWYmrhHXX)@n+JhSj;(@iSH7zD)ItRA+p5x)PnPM5ZhE@_1~x zQ*=AXyLg^E1r))oC+9{-1er#BOz*A2D6IE(VieMQPrxXs_nwcDOYgld+9~sPZYO?W ziSjmXr$l0_p1cf;ExAb2lOM#$peJWVN4R(OWE`Wn^!^A&Z|eOO82wG}pN`QRB)X6L z3-sex;3)TJz5gcMJohrxlFf22KsEmjj7Rj|d06|qxxI7Wfw^22X5$c!c)@*BPoi_& zoqDnsqdW9u0;Ah=(XDziiqTi~{w9oW()+K&=qq~v^BCQz*PcbTcLUVY?OYGlG`>LZ z4Po(ldN0|+fZp4T(Ybo>42;gy=l%kt)AhN}lcuL}J2~v#Tt6hKryKSDBo=QNeIXx! zT3WmwX3#A!)O*PxSwJ?@sc=1`FQl96BH#PC`P@#rm9(C0!D@5$WHm-}az}2q-d~SV zyIzaOn478B-h@Z4ZFC29CwN}Vsv-(mEKL!KlP5_ zx8CT>_-Fi$yQ6!t>N9iEOk1K)C!dc#)n6I?X%cIsL(!iko1)*ZzBoEkyDK`}TM^xf zj%E5cMepjTTljW0Hq)bb){gKTw%*adG_LGu3*_vK+yROjCBd#bAUrMjo5_nz*qUS{dpn2l)|W|~oG@P z_GBu-w>cdenP(c2r=nVx8Bh6+D31hD$0*q9%@f*L`{m8OLlf_c9pFXR1S!7mg@4`rHXxE6YA8794%_AbMyP&J>imqK#pzKRe#$L40anIte(GXe9sRw_weTN{9Qf#T|N9=<5T0+ceP*EjP0FWyL8ap z-7-0s?`B2=Y0ETUxVzaYFKSd(XL#6stM7ma_zV~m-MywrbFY~$-c&ZSY$R_YmF7(r zz70Lt>D-C>UTQ+((!eNa8O10$LTt$qWpt|@Q>4Vl2CquaIo=sov>pYmO~ea=mrlN z_aw9v30)wOi!CDL*bbeLPxk&VXoj6I1pbPn;5Ks56W}qzhT|z%9|`xtR=gzp1>6R2 z<6PK5Pd|exD1>o1I{Oh^3Z2<~$p0ha;jjrFK?^yoacICu_Cp$B39N$y@JGnPB-ku% zrBOQJGFX`12b19~oP<|r{V)a=!mY3wo`jd+6yAvkMJYQCYGDQ}MlI%Hk+3@Z4Ae{S z>7UOY$sPxp`aemd{+%VnQQ3b$3O*MxJBLIh531>02tS3ra01;}E3|-xAn0VG#VxQ? zD55!zhP!BO2k>UxDOj>k(Q1amO!yIr)s1+Ng{AkTud+9Roz_=FGhGi)!LQ*k{EbE% zg;xmIWty_%$xrGa0d4fAHE;*~iYRx8&Le2WFpi;-e~lmF$HGG4QyTec=!Y}#4Hn^C zyp=Vv)l${KZQ17`PAg2&7-QfnSOCvr98-8TJ^L72&TgfUd9QFnEE2!W)@Kic1}HR# z)$j{i*PHM*yi5EVg&p`ucB`;kx+8lt&9?&P&??rzHrNkeql9`ip#wu$jYDZ=H{(J4 zm<3pbbqOUS4m#5?8*U<6_tAM6-bVp_SU@9y}FTRS$@eBMC|Ha(wZuTI1f&GRZW5*ETz?5gAnv&M^R={|W^fG!)qTQC?D1PR3ZDqivef`$ ztJ*w*tk_X_5spf4i}}*$@GA4dKgb?FC`@NBQ@HKMI$^lDRy;~pX9dmkXY3=UWjm?I z--sJiVIq3q|A<$@mqh<#(t4ulDE1-lV85mCISuc@Q|twx;2vh-P@3H}@H~7A_u+ma zgnLQuegwzi?{Mx9ZM@ecwgWaTqzZ0XRL0`jup#~<2CyD131OJw3m6i&(;~6%R z*y&O&_XKW@$p&vGTgC0D1$L4okQGri`fu(Zk60}mwXeh{DM>F3}wkVaIoZTXI zO9^-r$6-FaLe|SoRD4*{XZoq<9@4`PU^H%k-I;6PAo&$H#;}T{sb5+qZIpf??U7!V z-p~wz8%b*)B`$sfr^#!Ca3;~>ukcTj^=8tZQqrH1G>g&X!xpe^;U#E6FDxP(SVVTa znP@PHIJtyISq*oSK5Zi(@+N$RGDW>F!+WGTF4FUv^nM+U(+(4f>q}reS;yOPH`QDN z1yDkC`W7u%&z92rxSf5N?Ce3B(+T*LEJs$IS1AssQ29z4>z`bg=?!(zNihLr_d=39 zWvg%${sK|*uFa&QPtkMJNH#1GfTZ+iWKfzJpRH$eg_qDt-q1o)bp?6$5!gesu+lmP zARi|{ZRQdhZ3o%1PH7u?-voJve3ma>B~7GxzfYd*O<0`m!bh~N!n?v(;v(|te&VoS z;y(+~Lh~Mmhc((hL6^z{NjxloK`S0c@aQzsVJ5tYBSBA$xDwn6`Aow=!+800L&rb^ zG*MYTN6C=Nuq|whQG$LE&V_`7=TZ`!g^+lV|7vDu_AkishfJ3D)|Xf>EzipyfC6^^ z?tmVlPw=F?wlOZ_#)7Q{tia{+njB-ikn#j;;1Hs^ol9jjS-n9o^OjmoK@&6eVO~oA ziUu{Fz>!)dG>KOR6X-FlGY8}-&rWGUc!oqlM zOI?Mrl}ixZwUuzWhRoksVN`R*&Q`Z=L^&T8bq_jWdqb|EKUov^x;h@kHeuw z+q&yrPq>)N>ocqii70x!7p6a6K9lYkAiB!^J+@>LZT4i6Uo?FJpAq50#J_)&9x}&q z)re8!-MFf1mb<(0l6Eh93vX*rHePjgZP}E}ZMdqda#+`tA(1&eUN3?>#p}e^zzE&D zLkw9TI#Nd5Y0&NzcZLjTp!+@g5P1(O>=SfNETl(0?<8MOp65#t_$OtL>9U#XynE6e zr_&?^r_xYyIz7-Y51dL5smu%8s%_!?uq|Q>7vaaZOtr*zPF2U=M@uwzbKf|ZV@)$wc z17kEsfy;t1q_5O7y~lL@UHs{DL{4bpPhZSn7&U!HTif*MSfgfbZ8P|I>qre|N^{66 z-u@z3@RwK%I^4EbnX0{B%W$MwtLp48(8t5q;|F7WGrQ|>Oj(IO;i~qyU{1; zQ?kX1y zZ4Rfix;j5xTU}LGS8J<@$0LfiFvcErj_L>w)J3lv>$MLFRgbabe@JuA?pWDY8jBT; zTE$+OQV|YCPpNdJ6+K2P^26t;=$-6W>{&r5G(99RgVA6_kbL&7&OJ`%^fQ{1!Km~1 z;k3Q>3Rf=)W*;igpFbQQztd|$!h+b-`1q|J!MlBf-6Samb547R{l34SsK#ea4pztYgAg*amC=8p}{cG zaA>vAdF~Uu{_)jQ9+?=cJF)TFUrZZ2EAuSI7K|)WqE37s%Qw#5@QC?f-?XR4ti5Z0 z=6QRfjngrl{j;#1=$L?Gsi4;Cvd&4YNUY6Y>wGltA?MHS+nopUjAi~NKXd4?4G)Z;XQnqhVn;_OZEf{vDBw$-R~wdYgL-rSqANM18I`dHqc5Tax_fDeHY zy?YCCWbP9T`)qGRv0TiGshqM|UFhU`<_V&C4_Uy|{b~91fGt_! z@%A@>yQ#_BpGc5S%BSqfigdp{nIjk0HnNMUMLMG8B!jRrXdhi9g;jOb2P+nLrB+P3 zdq!;Z$LsIeH}UElZqB@s$vitD*_;Rm6TkE{h9pfg!!|=+;f|bWsYOzG3Fu(Y0I9XXlfiN*qJJ~Xi#tP7>b}s5FLhmU%p?c z*NoBZlLVuLWbplBK&CVxqE{4z+$t4XrDC@#2#QPr1X++hc8a{kKKyd8JtVv$FzTr6 zMi9My_(;lN%?swSyb~rf>tnC&#uBsZB=~0zaB&nqy;-FHB zgG#FA)RpJYIZWy!iSGV1e<)R;@Ie(msKN(T_@GLPx+y8UG1oWIy-q4m5b?ogcX4*O zNIsz_jf>Mg7#6}>k^iPtBSy|krPD>HDwol)q9yos^Q?itR%7>pEkDj=9@*aAI5JV# zIekQFu<)`anXQ@AzB*}KCbQ1`#O;SyetBDCX?>zO)LJ5&ZoH!R1ghBNGdw38B46Ty zs{P<0u;H=i)o8|m)-=X$vNXbA3Uk*V8wdV39Xxjeeuv*j>s>}`(*9I=G|t7(Fg-2 z5(yhD#(=>Ub_ZNW!az(H&^vAU0VhTcpg5OAta2yxFsb*umH?F<+IwDe!oIb4*B~6xIB~nv^m!paSvTomL z6k+0Ya-F3-q2uJT5V@$3K9bi3XT$;Z4Mk_ZoXd4LKleqJ!tOY^1A`?#f%YE}QBgRZ=!@uO=7o*CQ#(_n?2_dJ3`RD!a zIIdpPoJjg)T`Xpt`KUPT>@z6`xp-_Dc~B1{mkEM!@I5QQN)F?HW& z7usj}ma%1(PrG-N9w<0adQ^L&>|YgzBCN;JIL0@Tb^B(qJJ_1aXYke1Ka_r2@VRoP z;2Y(eO512%Jm!x^3oW65UQw)}fJ2E?#tMWel!q#Zlt8Q?N)eIX;V+NH^p0qGe!hd1 zl>#s{2sf9Ujr;P9( z%UOBH7ir(F@{ay)^2jQr=NI{#ihd7IRnIesWr#;Kh*q{VaB8=#NL3}u!V#xi(z;?w z+!fQrOJfmdr~(z9B(&uf7b8{ZQKysZ>s#FjKxb6 zl}V+$^p4U$l2TGrHziJ&3X=#teTOw`!zy;tNW6wBv^Ja8;jA9K6Yl->_(eBw%A6dS zFr~%kYfZEDUmRNWyL{@V25tv0&3;U#Z$9Z|U_Usst9I)RHU7R_t{KeD zl&89>VDjpHb$K1$JDeN5_xkSg>*m|$+gI3D*zdAEt$D`0&GoA5b)P}wgm{Z{q<@uj zt?Lfo8vj1=g#trGd`@t=W|?`J?~c3!R_#!W%^nTFBo?4RlOh}{hJS9eTcmjb!7?vj zk5embX!9Oon?#vx$RGx zo%>$L?nC!JG1(KU&`R?&C4EQkU$$xg-po5&7TtBj^7+5QQGJJS^1;SvMKzDweWZUq zs{SR=n40WeMTC#=MCM6?C)ei9abFvIq`0q0y4E(AZZ_FAJDFYake4fks`W7CW`5U0FKf`J7+v;VMKi5fN90xEyEk4sghhN{8U6 zBa#x4_r^Oa9jM;*cMqx*f!iEmr*OiKjU;5RJVp)+tCmx*DpTT2LkBmXq)lWq8|(zx=>qw@Uh$AQ7d8VIf;KJ$RiP4% z)fkT##tNe(0NR)-qK|6!) z8$Nf({PjDq3b)I;_TnVBmgE~X4${pQY)aW%6v80nr2;xdadTwt=5)3U^*4cAc5ihH zp-{lx$NscWsR{*36lIu-6{+8_6!ozV3l7^kOlS@ThEborik6R{{cZ%Utlg>=Fci@8 z5hAt_XM6Ga5sK9jii5>Fi-kxiP)vPNQzF%&KvIb);i49>LJ*qxCSyr)vD@up!;(pz zPOFPRv)s&@8>_6Eo-E-#r4V(u+JhdkmR}ctNWg{_|UQ`rhseyVme1ErP=*4QCPoc5O;P8K|`L9o~ zN*Ag4!0@u+QLn|Qs{3zv*=od(oUO@HcBHf+LU+78(2y&$yEBuy*2nTKihFj>0_4h> zRk-TH-MKXv%J@_+VgU9J{-qbzr^>>d0ftb3DT+4~uq%o$6d*)k3T;i=(O;akHqqB9r+)6OfaO{o{woLu8Bn00q=F(@Nvyfy}hh7~Gqxn}N&m z=E$N#absj-bbC~|u;_70Zn>nTf-e#Uh{>@?sM3uN)cD+^PFTMGpa<;JJg&Fyr<>C*$y)I`!W&~Q54z_$uqNp-O*7#9Aw<&q2F zaA~Myu0A{NqE){=TwS$0;+fX7VB_2hJduh1!0NZoNm}&dp4yt@wRR3spbjUb78men z#aMv)f}0CiWqn&+XZ_Rg8b~pJ9WICE{^fx?V4Z(mU`ybcz+VI3226|UPu8=bJ(w4C z$Wb{aS?$(5tApTlOkbzDSZK(ve6@$Y9F(pzF3e+m(Pwq^$K)@eDfFi%o;rIK1 z|IP2RK!GC=C;+Sr_=O;Pp{|zV&3G)}x7&08L+gFA7rl*!W5$n+%;>FG?Y_UDMx9VS z_eT1BXH9)Uu&AP(x7m1G`N?v2u>3e7XV1|3KD>gU^)h!KmagT_A*~8s1384ni8E=H zK`M%NlN9oUr-MjZx2`-PQJ_P)TP>Xb^%sv1(~CKjf}RB8|E$j#A*;YmIj?ipUCd?S zI4)vEr43Qf1$E}-fp6RcUrFYx(wRz2+4v$Oqs9a)!8e6liK}7vtaGa`()Rwd3GwK; zwrgBfO|cjTYbuOa3zM#`E{t*g4iFOFL_7~;&vSM=>E$=inUg$AEjJ})zuzkR0|Bdf z7&rGmZjKc;ETC1mX?Bhqj79^YKv?#>&>9Fd=JwG7J_T%63u3?(CJU?u=5p$+dgPI+ z8K;`jys|Tb5!qJc2OoC&5Pa8@daP6iO>R$`TUl;#&*Vy^9N*d6!F@DJc$B$LTzLej z(w&PaIqBEQ4J(hVlaC$Jz=vL z62m28p;5^z@oMD0?A6cZ)l#;d{0{$Rs_Z~n-iTZMy>hQ#2OI^E$L2qWdS2E!d`&X{ z@uJ@DZUUVpuL=6HUk%<_9ZlB0>}R{F59RMaXK^*MVddQX`E8+0a8Xwv(cCDFJGYNra#La$qp&tIVcOYE;@opT zz2P!q@T3L8OVK)o#rS_VLEQa{;v6#+;Eq)F9C=ROX2ZMocRlZU-}Ap4_{^@?y0rx^ z<~F&!E`On1m{;g1@)`;_+;;IKe-PAJFA9oyuH$NT4M%;v7xKiu2_I%#G+T5Jn>LxZ zv+br=rC0U84ZMr*n$1kq>NI+d!G$j7GP%sofPS`Tw*N+HxoMeaSzwcOuX}IcUEfza zy6v6}5MqLVL%`8q1OG*q&gEHO0u z8KszKaK^wZQj$nC(3yklx%d}J%X##>N2jqTrM~Rxl+m7KZhO*17wgM@{+umIK>6>K zN&L>7)YIKAa}v&n(B0n!({-Wgf`f z|JqORQLH~OeZox>w_MxSHRGB`rKzUO!p!e8nIoBV-yA_Rmg58CUVbcdBC~D#(yA1C zKA}3}LLPP10EpX2`@LkQkL`yLX}>8M;@Usin4A#DP3|+UGogPeVu{WVXd+yuD1^>5 zO2o`fdBj(4hjPDPlV_)ZL??$a{NXg`D(4eU!MVPIqF7%JR+X8-B%4^LX_|?dR>tBl zA|ot50<}3Tp8gJB@mMRZx_Z8IA@`pLPwF;BK``R*x?LU@(?lHM3JiKFQSze|7;+Wx zEeXz%!O)4{sFpVWdwUHb^~-}sunm4}h_GT`+vM*y7bajd^VG)apM`BVtyyzBo1M9n zZzWvVR5WdclM|>RtucW zR7fQ`smU3t3Q!hN9Fd6fqsWE`i$IA#>|3RrQcf#^taK{J72&voimSx0MB=e>Umt#w zazzNfN6X6dh)JQ}hr^0Op@fbg7)lf#L5W<#NcLNP+QDr@6l{Z=N)Z+!UJr~NYX?t6;PJO#5ZGc`&u|AKs0%OyvyXgMwj4}Ay9>vUX*K< zSm!wC_>OIJr%nwbMvTiGtN>G_V{jN(2_Q<0Qh#=^2_56Z?=Wazwwb0lN+5H^ymkY3 zy|9(rBHUBFTYF4+f%`7^WA4X-mlzyggP`p&#I^w|!h}P;_+Kc9IBo%lofKd5TwX9= zsF3Gm3friE=ZdM{?b>jAC}rx;zkktZX8!tyIkLJc$22VBEwIwfYa zu5?O(==L}9_&=nS%*GptG${&BVhEr`E}2=U6@2K4iBXV_4n!Z0Qqi<1gS0##kIE0r z4*3`;5mEBnV;STG#g9?Q3KCG1Qao+bq3Lco>whA|X{asM0R){Wl7Pc@a0Zo6flUlT z6(8+U)BOwc>#mI~=qyinTKwp$`+F{lA695 zLClyQmBBiBRwm``)v8$?s18;4SLv!#U}ctMdy2(@5-4rg=jgjt`GCF4u!SX0S%yoS zGf3G?gG+Gd^Ep1p<(xWEXz(f`^eq`z!J`vG7B*;#yEW?`WR!+S0Q?CcSkKs?-Znmk zyv5Hfu#du}5X)h!#8%1gDJ#2TZJ%3z^S%}NRQWUD7s-z0K5zZ>&knBNd1KsMO)t-7 zIzKzT@$hZ^SAY8iS-h-Yh~#pWO8TPd=?{K>NH>4<9Qoy2JF)=pih=0v5XSDQql5yb zvNNt4lL}~d>>BXWJ@xyX3L5spMc(O3+XRi}s;H0&Wh<@GqZlqVB|@ZB7r zeb8);uuR&Cf-oe@mLpIlBO#h$8X_@x6bm_7#^Ir3&;f^>G|gtb9s+uO7vyadN6JeL zB@&4f$3TUMfV)h8+GE0N>pj2|%PKc!cHeZCTxs#xis|WSKdPA0upoDLqvR1PKZ0P1!RDy8cxgF61Xg$1x-gkIqhhD zWuYsV3kxZKZPWB1x#p&2ajD|*VJ^i(YjG5=M;$z3{?NbF+b1rSmdW>mzs+NcZN>Iw z;5x9OvNgRmbBDgC@wxO7@@V>a=2+!e^;rGGUSCiQO0g;>09QfKWsq>lI#bm_O_I}m zO%l?4T_ki+7a5*SF)=BgialHa1-&6v=%{z5I%wcX(L@wP#YifePeW|mUTaIWS7m{4 z(74UV>Y~^n)q;{#1NwtJ(0kH+FbyAE)6*>OI-KCxz`d=BN*waIL@v4=AtBQ16`ncWMG z&$oP$-Pc0(AeVII1ucg=z~|Vf%P({vDZf@ek$Jm(qUHBxR|~s{T^3jtS=w@GWP|fD zVqeQQz+rIM>1k%cj-JOI|62Y^%|Y}G^jsZY-!l@~6FLCC(Rm!4>~TB813jPZqWYX< z$R8rR&|hhfbbQbSnwp(1C#y9!XpK3ovDn@G&F1emQ;z0&%`2L>H-Dk|iRN!Lf4}*E zHUFmhR5Lf!44S(jVSK~f>vEB+g3gTdTIa1!2kGo`E_ZHq-tT$kxhGvL0u=KW>GVQs2p7v-5h-)dLVi{%Dxl*Q}iFudqz!O zG@>MQ0i4h%H|mY`Mn~hq;sPNj=g8c91mTLJKd-y$u2I){3l5mO83y*{EnxfgW zqlYwm*7uM-&xSw6;H-aYI`%<&TDBt)aGPd2`>+#l!PUduJXqGh!~fY{3POfsQ2?wzgH2 z1kwa;cFK`}_BBEjz=fvZU+g3zVuS?Im`{}>;{M{n;zW@x@;o8L@Pb{=s!?{ePlB1avg?ooL(w};-VGB|j#2KekcMr&yy zN;Iq>log$9vMi^P1qW_>aQ*Y^x4yA+`E4EhvaDNc2D=#d@~-BkwbsIX2w|qDw+>I< z_xRs;R$H%ieB;7EGC}61zdo~mROwpU`NGM!2Rf0r?4O;Y)#lp={e_jMnF)}>3?1)p_ z<$>rBZPhnpku8~gkcE#TtRlz~%Jh-Z5}rUF&X53B0`efFHgVn3GSrPhCDU;Z7tYs! zKB<#K`hK0%0*%EI%xY#?7CN?zFHd>IIt1g&5Pi=dX2u$JgU-l4!ycBphv zpU{~he$;Jm?mS2+SE$tXoP;0I&GmlDAPmWt`>qnOm1^UOcw(;*BqDT(Ggr<*ClU zciE;~G^ZQoNW-Q5^zu*MxG9)PJ2ET2w7O^iUEkmP!B(Re#5aXg$C0OpHL^fCqf@l|LJv) zhO9!))zk)RbM|&>G`o|!hkwueZpc+~&W3^0<sJHTbcnAz{%pt7!7{G$MMZ2d9Ae`mhy5^hv3l z6+}$>Wr>If!xE5u2?<0(u(5-PD4?sMMIHtjOB*eZhZfKe*N-*klr=;RPS3j5F1oV& zs`l*i@hy{^R!=|w&`;i1av{aYbb-GdyYZq0mxTA-x&O}N?}5-Co_g{Q+26cop8}_1 zK0#3P=}k~WHS=;)2TVX#Nr53)nGsn>Nh1I#`b4kCDl<@L6LO-S zpbkKA(v-g|1j_u*MmPleW4DgVUm=Ci-_a=@qIiHa^wn6xh)Tt*3H$8BMg3RrltK9| zf+*UPUh+%|KzM5sTFAG&UVqVJ7u}-X)Qe3<+B4}PA;j=hJv%%Pd-i)66x3ah4<|hz zdRR{^tygujqW?H^3|s>k6x^HCzxJ6{mXhw z@V@)N&tBYi`?7h)JV;|9Nh**JP>ZH-zapBWR23wu%gOt%TBJWbad~@rerv{+^a&xi zP;EJI`&DS)(u$eI)UTl?Rf&1Ta_}?rlAOp1^~T)2uKUVgEWYG8>N-?BT=`J_%R;xi z+10{yFkR_>+6mRR=qk$Xa-aO5^X}3<*E8j37I0>tIzQtrMn!_^WYu6#(W`rU48NaT zg^_$5ihPgh@8~h}1*6B5WY~nFMzsg@;ClY3(KAjt%uq0h6g8M?+w1Y9bdoalnn8_I zNz()6xVBek7v)nzA67Vjy${#G!q1%U1ATqb&hgnvY=FI;ptC7D!jfP_W`T};9L1Q$ z#`z|^2{uAqpAUrj@_cfBUq(b1MSM{Nf+&lmI8M=KFmF`hqeue?hHQ|AnaOL7=L3ZAF-k%78q`BYl>JI15|YbZFig1SjFM2HKqv*9A$ZK`z%j>6?Bc&0@2OK zmoX#dd2K!4`svEyjjQf__H&bK7hQ4J4Y%BL$H{|(%Q^>EwssGc)3zXfKM0XX{3RyAlUiJA*t#(PZvNUFnEV`>&+kgH2ulL+K{@CW5pBU?{ ze)4CZ+|qo}vIQ}p1g$Z#m>?YO(DOHfca9Rw?1zWA4xIMZFK997#Uwd^vfeCBGhrsr zI0P?|B^qU~m=zlt{{j9uPbL5nP-T9c{I%)J7F0Q_WL>K4Rg|PEXU552nO7?fs@$k3 zAOUYBq8l7+Hk09buiGiRfU6V?n3>*sz+AM%2$=I)0_Fnv)6oe}sx{aY8epT9VUty1 z1Eo7)iaz7b01yHo9e6W9iUANnl*~U-0dnPFh14rUXd-%A&=(nlkHS5C8t&l(aSxw_ z`^F0HO&%&og|NU}siA-`!4LLf0qBK^!eoI$m&V#U4ctTB!9Dy?c&ICtF$%GAzXeE; zU_lARc`DK7P|&bJf`_czng6=asSJWJ1p+{PnL-8(SXqn=(qOKRD_~qfPn}0w6!2Lf z?1g90k=1QlnYY@i2 zvSP=gOScyr=FQ}rVt&7tXjtAT1iEJOT`^yw2cq`hUAW+yd-u{SBKDP_aK@wiIIJrp`Js!a;dr5C8 z8ZqJH@!qV?7Q9s}tr)luL~w8F<*IQo0(M6Lri77grZgatvb0{>FCCN|x>T2T!-EOw zq{O89C!pbh3-|FLHa^y}K~8S_q53Jibn8=FF3z84IH&pEwU?RZ+O=;~7R<0cQm`_g zz7bzA&C6!GrW04UIaHO*My@8a@Gu9pb0O5udvN^xPv!zL9qKqrexE-<{(=0vmrl9j zTt1o2W|g+&D(^MkTfDdXc6h&#c*MI$*dsm{KjeK;I3d0(21$VuUGccT!B5*Mmkf|f z#bB|j11Tjqa?Y|`AvmaxOfZto$!b`2Be9%*_0?DF)34S~*~R)D9r|>4!n}o0iHfL- zm8wER)|^TuC5Z=sgstr6IoTafM&xi&l~rg7Nchx{7?eY@Dl3XoQss)GQ1r_r#1Iqk zuEi1`gg1(Ua78K^gwGPZQYtA5JPDjtnWzwM7X!&Tdh1r|G6^C_GpedeIOKk(`azW( zt%53qETM&N@GI9i7#b_$9ij&g@gw3f0NFW^%y4qRD(k&nl4Ml!2c@x8!o*&LN~=RA zKUq9kbQEKH^?QIKGDJU^vNO$^l?>>HerIZW>h$Ts>EDZ1h;n!k2QOnQ#M7sv(^E(g zFl|ExJ}4gTK=Ejt#~dVlsDS>QIOMsn((xA_}gA6?i8@yNNl#$RVxdEUiS{SlKW*TRTy2Do{NSa$q+H2u|ckZkz1i z??33LbbsBy+dtty>8Jf@e9bUWf4E#Rd{{Y=aXn8v=gR*q`!|e}`{&Qt*jW`^{>g1; z6p#ARRY>vRw_i>W%&ic?EhhU-c?k*pe%W+OZB7BbAbPPJfJS>U16tc+svI0A-+nP$ zR^SW(z)xi!NAht%D) z!69vMyB#dCnCb3nC_048&GRS%c`?-*>QYqR-I>C7u@qSs;Z{JO*864Ee_= zV#i}|#watkJ4VL-kja)RW%#Qy{#E&S`OPwAmUoxQ@*fDHO>QIGO7nX$cuZxD^}Q#1 z$^E?tdnbA+9X6A_RBvoa-#B^ESOz&Xt^aIcB?e&K({ue`x1|ksEFVSl>riJ-iDzsE zE^4)^TW!CFiIu9?5-HA0Gu3=DU!yA$VAvEFmw?BsGffgmcqEHn&85-so{^;&Z!!IH z+UZI=r2;LxG6f=?ak2oX=Ljo=rLONg*+()S)nju@okjN_yiv<#F1 z4Y6X5p?*oeMg1a9g_stIBB{5)I|7{SQ#{1T44jxU=Zm>5CO~}!j?gVErSSKia`)WfKrgl2g{^h z9)fBE(PY_1lemWuDch*BY@^7sjV{YJy2NuLKvY>y+HR*%$e)1#hCq40m3g4&C-Red zDsRKeybUY!7MxU#e5~;-oWy8SJO@r{C|__^wy-+dTlV1%!w^n(pOd#f4^yTsOqrg; zlmfz(={Za(;CKMSlmfz(!ark5$bd#rq+@Ud%$IJ&kTMs$8tlKNJF{(uyS|-0PYmH?E}NaAjzBr| z5*cu@8U0}#6gXpyE`@j$Hc?vYV@;cC#toYrJHw`XX7R%0C z2Qtr(rb1{13p2|ca3Cat{aF$ScN=S8B^ z`NpUe%W3&kzL0B-77HLR!KM^17eGTYcP0X@*?F2S)vPZu6x57HN2SsHXrtq^!O_@I z>R*(h!l-t4@IhryaBuW+>GAA7_37Yq+2_^6!SAX5g&}~W(Wn+KH&+LDMnf~9*0yuf zI)!{8Jhy)q>N7YHsV<)WBSuZ&zFPCr)z>|D>1E%#Va0-`w$)d)Dn>`%yta4U%-8#j zXf8))BI~JNBObG@FRkD8e|A0e$8Fj8*SB_D{HOoBrt4880sT+{mO%+fL4I?+8T9)X zJB0`ll_O%*ArUFRouH>4e`PE;AF#O~4jP-$D`{>qoZ$>lL0jlV+$|qFA*> zv3hQrA%_E0XOjzU&2xYQmn8Y-g4I5pscj{X&TCn`{NRQQx4nJG!1nT2vtoSZ^i)rK zNYSIY<)!%@g&y^?tIW9i)$QMYWcJ?Hwwpd#ba^BPa=Bz>3HUy^^U00*z=G>$-hKO$ zt|o-6FCYl&X1MA_P%zzGp6lR(9?>$S&<%5_{yiZZnvL{fzvGbHf=^SDby*N`Zx(`K zL)5???qQAOVqTviqzH*9$|+G2iwp>bBM~C|lq_L_5_wHdVS=KlauJDDN^v&{rqm7n zT(Ye$T!)|qQDmf)TNotV$G|$m0oEOPn4M%#vJ|vJ$4rhW3K2O%MoLQ760I!800yq| z8%w0EYQLaAY)oXq(A;Y?epTwXVwV;}fo20T$y2AqDJy=^jrNHmlfYt=fCJYWu-ObQ z{kNU$T;k8(8WM_F$s%h9fSrAPeel8F_65C_mVValO~s3$G+;e?`wTlzbGq|Y>Y1NE zvTjj*!Lo%8CY-HbdF$Kl9bzIzK`7XF2GEU_#yVrOF=`wz7{l*OqlciDTxC_dn($`pC>t*}%;lw^&6qP04Y6kA=#hzl z7GmnuAncGgc*&WD;0arj2)xB<1~YYMcSwOvI0sMRceC*n0tO$CAnP)BYbI^Q_)eNG z_>9aI@P717#^57x51)d2_#o6DI`b@T&6I}UZW04#LljPO(gzzc0UNZF#Po*km!J^! zQ|J##k|fln@!9_v^8~FPjzB%yc!CGwaYqRn0&PDWOG|JdEx}QAaBc|N?mDQ=)%N1o zDG9pi_SJRMCBVjd^9p*=fM$(Ce>qo%9}TMdCQAqxr;$X)a7Y4OOq0ZC=qqMnQ7mU($!Ugwx$t#Ht&;@8J|YCF;{tgQ)r!=Qg_mE-V;Edxz0$ zgy!mVuwg+7GW7C{@!$Sd$cw$5(uIfDZ1cIde(pQ-9n&+n_*YL@zP3}-{#vrVmP=Tx-R7qVOQb{!^hd`(#AVV_-AI#g_j<>lTZ#@j# zp#Y?KAM!xwC-_O8;$uqxnPLX)C2;QG+k6eDLM zUyPNLvQVDA>Ug_&p@n**VcyKn1@~OEa$Bj;1GWc>2{qNwju_drisFLX2bNxW*HhpY zM7^f(yrxqM#8-mTc03>edD#1K^^;(i8TXR}3H*c~II7Z`$eQSYbi{K~`cPsexh6z0)jqkRRAqBVKF3!$7k<1ZxD!NI+08+7Q~<+h=3rj z5O{dRCwV|P7%>ekgovyqDheURL_|o40uSgUbc`&^FiC<-{8iji6-;43poBsGJ%HZx zgk4Y?><1(grZ)iv2GA!P>t1Q#Pnh_BjC~258^x7=Rd?%Ft6TTo-BL@fTP>-jnbDj* z_IPYOC&moMwgzJxUmW(>I0l2mVThMwmzzM?1j1$s%Q^`d1CD`gjtPXU$02M8WPil4 zzZ@K!AtZkSBv|sls-+nlFuUvV^rd5}>U;0i_o`mK5))-krI|9T%?P}~Q7i`^MfD)U zh)a->VL-^l~ zA6Er$4*p5D`?6oTqLQn^QnsU`@skko@?J4uipT99F214hbtqrk#wUn)T;FzGJ&Lv5 ze&V;f0|@6Van3;pu){1~_VrDNs|-j$Sv(dm3s{n+46;l1$lg9zpQq0|<{I;ic~|IG zI3~D@bsNm-HE9uR8i{3`DIy=Rw`SJXkya__W;jlZMz|2~BGjf`EAC-WKOp;GDXM!jrZ}K_? zR5GWB_ew&Xm()WizVNu6B!ojJcBq?qkQFl7>>w|=cwTS<6VUSnnB+Nh%Tc6>gydv1 zTN1J}fEctp(6xi5NP;qDIi~{xz1fNdj2% zSmv|MNyzq&=47J~X-+o!{DE>_#eprTPQ-WeFz@vS5<3O{5X?QPuCZ^k6ZWTJ4hXIXp%S|DLgvBz^6+C&D9iP7i-cj65kQ-GJfw$2|Rf>8AsT~#mog>#}y zisYR1HifqpWUc?KD3iZE0X{DOwIktI;H!n0aKm+GE+@m+JGk(5mj$GD=+3ug8h;BB z->xqs9=cB!Y{(yR*w1d<0WbCqrSL3>-|HDdx8q9!i5P_>y>eyUk0o73{>ke|(mRQ1 zbtnxQo2VriyV~jR`%2s4HX@&ca+u?3Ic($UPP~;{Cu5+I zVf2Rsyg!zU^Rc$hcE0Vf9%|OnhkOv9$VYjxBA59}p0goSs2xTB{qla9SS{ZyKO>WJ z_{+@x&SyHw)txtYe#nsLF#DMMJIU}M(}_%IXRbAZh0Z@wzl4bNZ*uUg+|{}Lx&O#f zIq0C1NQHFJ4dZY-ybkJapnt@F$dk+Yz5E^g!#wp*^lS77GmYIX)Ytc|E8KFH4q6RLJ4Al^yZppSF(9#IPHAE+8Xmb7ti4#L#{1BKwqKV{!i-= zPPg>n)5{QQt+*4_7515JWd(?EgQKl`ESDg{C?rP{J+z0(`JZ=@$hQLxyeHb~cKMYIzMD-(+i-M<~CZ(o4a3_1)f!y4qjYr7=t4(sA^V(|v8 ze`ySovqQO?loJC9GVwwr19UGUPVX-iPg03d zEpub-w}`qorFi>1l^9`hcrX^XW-O8y=L9w8GfhfiYZ++J3RLxge%`{)VRfNov4qoiW8~e)-d==| zcMxgh76Z~lzD<5iQuLt{Z>c6RUM7V=7-tfA>v2xN=l9ehf3Vz1EG0IPSCKodHxf6K zcheu^Xw)Hc&^kb`A}6d*lRqU51dBet)B0zEkd3lQunUd}>nqkbtsh#A7J{+{373^> z>0#1JxSVDpK8gYT}ZMl#wSfC^D0R0w4@vvEi{&O zRe_4^bssnZh^;tomWUsqcf$FBO`HYU={f|5<|S?_Gg8-_jrZTjZsJ^0^2`)w3&?Yv zeYX!M6y)iML(s^Z#e8ELm`R+L885-SY0n#fwB^I_b*Yxk_Xd1kcdZyc~W=X0v= zna1D6zQDc!wAmzVmEm^H>uF6;k?4aaMw>xZO^EXnK6F4|^X_9f%?)z&Gv`Jk6^PeT z8bo`<4Y4b)kPDB$L=bnMzq}k0NoRvlzyC-kMjIc zut2r{jerId1%C*RSkFLC%Meo6LDc~jMrD2F<`lc%xBDwC_Zq3_EKb?}{w%a>dCzOk z%G@%CQmWn zL}lp&KUWoVCYi}($s3c8B%ewCdy?7``)Ta07-@{9Vx6%wVicnXZeGv2DLf}4MguY4 zt&M9E%?J#28TOoA$a7`_a``(cn0luyMIjwJ6z0N+vf`;6bFL(15P?q9sufz_WbJPR70MImO}w)2nO zzV?oV!wdTSV$vSyQzIEWO+HwUo!3XjVuplglDNFSZ~jhD4Nqotyt(&QIMK5016%uXk|`CFT^92QzD}^Kp0nV!?QGCyXYcVdw#dH zrt?)Mm2HGF8I!(Ihh)%ebB3#{(;TVRZ#X}I!~YCP_xZ%GjSoJ$onb%Tv%J6~RzO99 zt~1fYr-DIm(qp$M_5X8(QAh-={?rH~yu~fij38>^~bs^w|)i1M?w77rgnp6TI&m2B@Vg1T z50CFzK$0(^@4FEF{_-&$l-c*2y9wYuF7C$L7ohjD&CgK3|KC4D{r+#i&}C14206W- z^O?V#{5zm=7!IENjPd{Q86)`cu(0hv*=}-0s9bQdtS>aW^b6a!uiY@X;ETK4N|$VLc$Q5N`p(`7^b?(2$pu#K z-m-G#mfhrrsM(gz=cVWdARn8l$}=y{U{WT_GW+5TJA*m~bTxx7PyN;22j%9OJ=%Q# zr{4UT_oEhYiP1_~DJ5EGXY1^3o#$RReCqzw=TE=>>HGMnzJKoTk-sRE%Y{4f;X|dU z6l3_R(OyFTzNHk43b70y>jC_L*gOB;`nL<^Qb~I={0V-ou^Jyg#BaV6Uy*mCLjm12 zUQv|d>*xl48C^`^FS`OA;Ik#UQeT3u?kW_@gwT3Z!+qUXBX4z56>AG+1h^1J-syV))VmDmmQBpZo8m7 zu#EnxTsdpa6}=Zzri6t=rTc$ir&hWI_`(wj2};fwZW6Okujj%}XV?euZP9M`ap7># z^^pXBC&6Dz@OcT|Ej=VXDUrLReG(z5&T;1&C+T$BfQ*E@) zLd6Va17V;bFyUI7bd=R%Bu#n?g5&@NNg)4vx?Y;bs))3+J~NF-Jv)t;c|g%ERuIWl z?21@1K*!R9jaT6{tCluihWvf^O~L0Hoqzo+YTZAe)@8{-WQ~@oLE>M@r%8h3c!4RP zuAjkykjz1(9>`oGI@~L@g(p5z8%^vs2OWBuhoyumY|G9fjwF)$+Z$Y zQ!8l_VQ6K+ZqlUIyj81bc0zVR<2nEBTW_6Odv#yO_(*b+68T~SY=`TYY|lu@K%pNMP+%2oCPUxo=PVTqK>2}M&w08#QTc)F;%sC zGX{eP$Lb4S)jRIhdA%O{VKN3d%5@+~0lY1Y0TF>d1u1l2{U~b7nxfz|=5lQowdahY zDOg-{6C#yfvQo|yV$?<$61_U5#1UGKWH)JO>#+(0$B*6m>{OnwEJ=HcO2I9d0#f_% z`u@?&&rFxMerNaF?MmZY#VL--S5H?yls@D9Hua*Zy%Q8TaRP)J zTgWewe}o3$IdQzP511YUwnLN)^i{M>V2$(0@1k0pfeoCY+G*Y-n+TJ^Opzyd>v7qv ztU)lS2GU>wHWSoQ1~bsUqHlWU*CiyZxSrGX+RU`l5}3KYK`M|GVT3$u!-mFh>hBTX z{4&*;f_IR!$DjF^#(D7TH<4=_KdS!~l~QhOBfm<%ij%9Ic&BkQE+uG{^2CV~Z=$09 zNVf^~xULgx0IpSQ_Z~uz{dRO8I`JFwdh`xG@O+H#Tf3;B*S*^7b9<2Jfls?{tpq`@ zBN;^PfcN@}BPKoy)`1(;rK{M9i7|Fzr&?eQ5R9Z*v)MP!vcd&EJ2S?Q5o2lO`T#)? z2w_=I&)B2@*}Ws;n11rw%;2?^N+AOSUW1u8`H(P7H>Rhj`xI=DX8We6>(kR%Adrcw z9i2gqHhl!&qDDk~V`ln@qk2pe6InCGA{J#W2$$5nm*!1rZV_R*m%?J>?IjhCoTqNs zpouop?N*R`TE+>eTKm}82sbr$1r_Y9)c=-9xyZ)vNoP`OFtXyM_UsY6#?PJ1E?Uzs zS>r}G3d|tr--ff z+tU46Kcd*~?7}>;b?xfmsc|K2VSRp6Ak0wE9WM)|-i+vqF)kkwD)h%+`l{LN5Cqom zc3AA*U~zF4H20v;k0CTRAQttII&mqtb?a4IHgetETBFhCVb-QOpHJcj2X!0LwsXeE zZ5;Z^UnBASRq(2Gv5?Gf*)lYA)#Z7H+q+?H@hbi0*S4>|w!go-9VX*Gqt4As1}{bi zgYgM)lsR-{)Gg1WgXoc6K{l~|w5iN&9X-~zCt#;bEvVwB1M2foBj!+R>AVu_4EkPO|Y99!Ekg4Jy|o9uziXb`$WoRtasJr>4grLv38N#BWAt76pGA=DRvm0$;WP+h)h z-MSs!+)54el^W)gt2iAe?Z*PLFVU9dqSdpamllI^3j+_>0 zy*HO=_@xv^nsgv^Bie0|9(P9dNsYLO6sM zuJeeO1UVu&X=hw^J3~96(}~VTBS%;fyu_f@=CWFCHpXnWS{YuD!nb0o?XfYab5N~z zr`1dtf*#&&)C_HDTKnn4*0hE&g??G_$r$E+Y=#9t*oSi+L-Yu%vs^}M!=#2e0 z?|B!xE^>*q6ck1Mx#y7H*@EQc?dGh+@j#rG?!CKX(;X}8KZ}j}UO=4p>tPDsA zRSwkouFUGm4Lh{lDSx0S@?F&T4yu6^a5@o^S;oR!2#bpPUz=Wvq|;IaA^Q}b4X{aG z3#wxYnOCf;n8hQjJX=E*oI$tPFBS8orYg7s$a-qqd^9a7RyJ)omZB2YjJ*MA1@HMk;yo9|1Ux#w)9 z)y}DM*dq3S@$lsrJhpdue>5@A^Je{(I^!y>ie6KNrIlt=rj5fl<0uT6rf30NlNl*RJA8u zQW!DvRt@diD8j5Zh)}B`IYdIp9&7cYGYa-;#){Y=#KdFDM{HEB5G~*^t ztBc0CuR6R|9k^sPlP-y?i{VA#o~4AXyJPglZFjtS^T7D+FYI2hW=YxY4V&V`^$RW> zO7-p9fAKZ{TozLn+v`dy9#0qEl`>2B9@w<)$G0zccpSbcsw=Xl)XNCfD%hmvMNv@< z)j}+j4hhvlm8e#&T@I7gWeB#`KUqT(0EW2R5#>b}0`sYYNw4rF!#r2lj#y=(jL>{- zx(O%lQC@4wwYDin3&yrN$#vtVz~TTZ!}N4_v0ZI#U0qP8V^|3F zIW~iN4-6}2lemM z)bu``kIn2e?wN+Q8e#<$y2F&f$6{iKhg@W2yNY<*vy=TjUg`WPm7QywW-?BEYaxV}h|F~#@MQG2$XWu4Y z5zPTPR^N=3u?5HvkKaS~)OU=iqBt-@ToEq`HnDyXkMzEG;!SEjs%;EepQ_Dh9pnwN zfv_PAQ~-+rvIr#tfRGgPFoU8mH}Qtn;MO#Y91~1gt2n13 z#_Q;j`VnnJpjN9LsnxWxVmJ?%zPSg(Nn4c2lSn_wyKT|#Jlr&}Fka8tV!egNor@NT z-gty(;7#xzcpI<8U81;f$?@-z-ugkY5_6(@Ehg@X`ogRpikR;#Iq^GcKVt1pkO2K^ z45+ud9&kPCdeKGo<29`X7vXZH7!GrIb=(ZiehIVk$3;nJ(ZUlT9`$OL8&9L0;^*QX zK{w~;X!NI-p!Sd4_Veqm{@Ly0%kG-FV*AW}s~Z22Sag21FgYaqdoCF2T{{qiZ*O|$ z@6Q^(;o0p||90cZ;PpS)d+E2fcjPxca^;y1Uc0P!$AhTUm|4#tG&qm~W2l2u86*fI zo#FM(qNZtw5zs6x&?L=E;jl3!*?A{6iaH~&pYPK(>)%q9ro7Fbbok~598a=1u`*BL zkeQEkr0cIFD!i?Kgh-6uwryc?)BTt1R90?w6~?;~4ya+0`fKoNs|8O=t|r;+5tYbfW2so*t&I ztq*Kq+s;^7PRY5;y3YFh?JKx*Z&_bCiCS`SO-FumxDe=FzqIH4MREA{%74CYwIjQ< z!dbf*M|$|8e$R?8eyuk3y&FarUH|>Pm;UQidv@c$TzTgGSC4gXeV~aUb%Ul+GT5b7 zV__JMiqT0f?Bckv7~=$i;{qz;u#vc+hk7Q)$B0;(b|PRQ9hbt$Aj!yAa^udO6A-RZ z3@mo?OHFK**|`zqBeiKvYVephcI=T$h$BO4pT=6#ww62P)Kc?f#GB)42yx^iA;gnq zfyNeuNNjyzb7|+6-;a$p_B7tO2Gtsgq_eQcIt0)bw>sfhev~lQS zQiS`L#=1w6wF{61MY>0>K)N>oZdWHlz8LBunV71A?rq(K(5-gg+WkQHi`}~JZZKFb zBA-zOf&%d@0V36ERduIi2HF@7kN$_;`j96?gmhIYRVw9E7Pq9c*~~g^cvWL~b3Csp z7`5i?zDDL}G11d*rmCokW|}iZ&Xc6B(j>JwP?n>-co4Fw<*hvUSg5dC=$9(1uNv;1 z94tBgp+v&byKH0E*=LuRZ`ryz8HzY`rM0(A_N^W$y8WCjp0M|?+P?6-vx?&zF5EC) zB%WC?bynUJ@MHsxN2(i!vcr9uu1qYYNP$XO@h{x5yx{V=1OZ;Yc>8#EsJqZ#h$jn! zYwXxxI?^!k z7_crm53)4R%(11{a1VL}$;~lsvWab;T3q;(++G{m7wr-9V1f#jN6L#WLTA4ILZU;o zFE1=E1*ru2W#ZfEGkc|aBH1o7NHBOLJiku$k4Z3vS(F1=;2o&^3FI+H-EN=6Cv<}> zU*J`q6!b15-(*W0xX#571ve{2IskwcgthYu0 zT4GM^kSbB;rRO(3a7ndyoDi4v?A&wpZkyPhgHz-|Hr|_Sod3e}@~V9+;QKulQS4pR zuw8b=-M7GhO7|ojqE_zTPzow{2<%onEEc=dIjJ+abWXRWwToiCIYwve9(exLt*nZeR5<6`jO#kj_7E^IU0E@Y2!J_pzSlV+HO|( z39f4^eR`{s$VqWJ=knQ5O1YM4JR>*m^!64BQ&rU)XAaxw-Y&S3Jh*nl@ej$Z)s!ek z{j|r`@WF$E!U_>W)b^hGo!+eZ);FpPqtRl~n@XgJR5Gpi8v_PIpj6TgrjzM_&&%@x zmi3y<=75XAYdjdnlJ*9CDWjh<6?nT1MEN2k;A$F7&1$wrCN-*a4Cx!v#j0OMTJ6I& z%8vK|eu|$Va)3DjZVU}qL_eWO&S#6Ct1dF+pQ$~1pf@|Ec+B2-H1T%h!$jjAwj{up zOG&Hk;EkO&KPQFY@xFq|`p838b6*iIL^@;_+f&E?KYQN-A60SoJ?HEtn{0M-A>>9b z2NGfkApycA7eqofF_DnOBtTF^Hpzx8B-yyx0P*z`YSoHzs~3y`ks^d}DaD8}QrlV; zURo~or>%-qTQ9MSeyEgMYHiNYMMOr9jLDpmk`SY$WyDV!#UC94BO`*sB%Rq9Zy0{z$A-Q%OXp9x+9r772il2n z(@p#dBA8e7A>mEOd;>QH`G$gmg0xXS7g-s~qcb|(_p?b!{HxF2j}|9RohoSovg&w% zBBuHtCyYivovuB>mhz9!r(P8jcHg?;!*X)_+m^QW_MgXH+{jSb9F{mD*kXO4C1&`f zNz#(6ilkp{oRW<_Xm}VRaq5Mb(Zga!CM0b6v$SzkN(AoFCD|{?YK{qifAi?6!;+%# zFp-zhe~zzK`gE3mCbF7mv@s<$bzw|gSWK!E6E`w0#%L^*q*TdlNwr7?W=ojaVlsz` z&q%^qOfdhUx`a3-#u9G!myGd#qb~e>gq(_W)%<$X3BGk6|G~hgu{?!?-#q4ByCG5* zE#3<}G3eh@ChNq4);@L^ri%*kA9uA>l~SGctR-Pu`ahnTaP`Q*PvWl`FMXjT4KtW5 z-MY~+qeHkabd~e^|Iq)du~XvAxc!oXM@>pRCvBaYgWH9`Ad@*dwEs0GPK|!}BZQUB z7;Q58`I+%RE$aiq0%R88AFwclg@v$?5dUGp)}SE%Cpbd5#eOWwpIeNFtYZ>=^u_bX znD-_2&>cm&3-ZyJsRY}7OQ;kex$D~+8D>Sp-~Iot3(=4Z*2 zD&%qKv7yIKJz1isK;9;LvPI7|pm7+!kDeS~&o;Tn(1M<6qURRqkt4rEoGaDa_`j>7 zrxzu3$vp`4CW9^XhF%W$TqXt zMt{g=Vt$CZ`rfOn!jt$98YX8Y1jnRL8)%X{2c_<5|yQzF4 zKcLIeZP(xFD=+F_G{mC(7ca)^{R&MXrjxw*{~_Q_b2*h)0*_mswH^y<3~CI%C1gQJ zU+A7;EyG&Ewp?7o6Cwg4o{4-m>b_|Eh@O}aWABQ+EAEB(naYV#p`-qsa4zwa(Z9UP ze${Kqua5ck*lSY1828uowEuC%b8#6zVf^_kEfZ>d<=&w(REEk>xq`C&-%@@)REElb zV0nGQ*@=NeWvC35p)yp4%1{|9LuIH8m7y|JuB2o{43+=b5H|P9r z+Wcu-rfs>pK@eTM41js8|o~o7f??R@C+KwU?GGjf_^e6 zdr@amy#V!8(40aY44SE+tVbP7bt2UhY1Bre1ymPOT}=JugwG+$xrA3yeFODyJ+p{^ z7Wi{K1h!;>zYTRF;S*K<#*mGA3aKtu51=k5d=Aa3B76brA`}MbVYje3#CZ-lA3)7* zoC6JcPa)N_Ksg6|I9^HhJnFfD>KmzEK=n;j_ps4yKKQH$1+N!S-2*B0sOLgT5BZ$2 z3f*bO-<9S+S`bZ<)lqcg=t@VwWnhw@7r2g<%Nqo)XUXz5fg4z){EonlELHwO;C^hG zkB^Cs=Wm%1?$7SlB?;VONz(20{@#sb34U4N5(^6XgTQ5`56uv`j*SV87Py{;(f30c z=@1y2CvYPR4=okAAItIaF|o+tlLGf=d7%!0TZ|8ccJUuD(d!_~8g-+<^(-wahj0Ub z>o{t)!1XL8%1O8p{l=+HgFQ4bLA$Nd&{QsD4a)H8&e&>t8r30%)oquwUmU-)0c zHUDe4=6?;>{IB7f|216mzlLl6*Kp1M8m{?Y!!`eFxaNP32XNb?#|a#^M_ULtqdzqI zMuF?u#AwYYfn2xfwE~Ae(T#*#`7bU+|3ct;Ha_|>!h?y=T7h#u8vQWt!{|>04j)GU zhVU@1&xqjy=lcAG@ZtO${Uh=Ou4j`*BoH1>^veYf`VsR8k0SaV0_XI15k7*)bi_%4 zBc>y?7{yXdPYRsJRO{z2`vt`41kUN-B|MSGG-jN@5z`pWZzj3pK)U`xuK`F#lHF_Ov zIeJQodlTe(0k$kX3#2- zYlj@pqlPUNwAbOP9=&|D6*{)~Y~p@!k{u0St4|&ILSZv;U5ydmYbQ@!Xrso*B`j4) zN-IWd$XK2*6ZtlW<~xYO!5Sfxd%BitMQG%u zRj9uOJ=}lIz6cK3!N)z&!ikwJ@Ioc9Mw+9r5@Aa@XdB6sUc2n1CC`ak(t%sCloBYSQ@=Tpe^d1q3V)9}w#g1p) z1l$>9AhYLF<|w3P8)b?XS&uJU>xiR=;=-?+$@WH!dQh~ysHVBz%*w}IK{3|wKpuEU zn#qr~kWxb&o#egcB&&wj)TQKV*G^h%4YaB>soXZ6V|=_>tSW`PQY&OR1&12JOS7J@ zM&&D(yU3eu6mutHJUIWqPOqk~@V;^{4PIT|IJ+r#JfwMzFM}^_y(ayudgToA0k=f6 z#Y6JEYr{<|vW>jQfA6u0b|L%MTB>>4et}oD-NYqo%_-E=#`%x`9YdPfF}IndY5R<3yH}fUb4p#|si4GM#G}~DLy7g} z=Kl%xn^?C6(-U zi<3y(`S}iErx<9l_GV=h&2JWavL?X=uG-1d0Hvh zTuVKzbY3)(u7l4{C++Mll%GP!ua7UC2N#_Ai1?U6KH^c}zQ)9PE}-WaCR?(HHeb-ruIpbX)=kQSj9a7*=_ z7Mj-8q>Dz`;-kE9Kha{CE+XDSE2Y7wgLiFTm`hjg)d2}!D+iw&7v}VUCzg{R8^2>5 zy?Z;qUu+Vdx$r!7G3_35z%NTcQ8VZy@O;CbtnK5qWP$hm%Kpl3ZUHZ&;Z&c*ef7Ny+L;&3l>)TSvGOQECM z?O3jqHanUs`J7^Vo2%8MG`JQ!Ym^#SbDNvbQ8@eY8A=jwrlu<8_J-zqrO@6~aKC1sq-wiyB$hv zQ?0|Tc(@%!l}fR*#?jQ`$WdAx4#m+}?WnDF)G7^HuTtx1sc}1-xq&33*5R=`8(PvT zosEtbr36ySU5)l8F3YZX-1b^Wqusq!an*gjpS+#f7xS3uYN%C`XFF@$F0SjCxej*= zmpdgbb28C_lqkz8#&O!&l|KIDSex6v+}X5PDXpu6_R2V=!eei0aI`@Uw-bI#RpvTt zJTRiz?yhw-d6WrR858HbT9rn7o6-tnJ>0EzE{xb)lxBy!(dqHP7u9X#to%8}x#R5Bw$^wQXOptL-dR&WXf9f3Q%yrFccaIp)H++55h}&rREt?o5Y&JQ;?oqxE8Nx8 z(556i$7uc^%&W;ueMyzHaB-X6juwv_*1=zc#ACXTR}N{A?1U7Lqmf6$?S#}?*Yc(Y zmwm8MC~enNMVi1~7et|M^)w^hY8}hCb3s$@XlTC3B1?cJfXBVg)zILgScp7IRjTbR zP{`Hf%R6s|CD(gA&DrVcj;6Hb&ZW*~N3GMI=5jAi=U3^Vyjf)Em{i5y+}z+q&Okb6 zbLk~@sip9;peW`PuW(;3aY1ozzhjxB0n3DZdf}qu{<>hh12uu$sHFsf`B?3=~&27Ecp*i=7rer~GzyaFy&WEv_1;ou@&q ztEROPj<;*;)7b#uBy)}z*sD~CmH)~Z(x}z}hE6RKm!wmcJ3aNhdr(%Timc+=dxsmG zNJmXJ=jGP+K1gWg5$6`BDvhpMXB}@HPA}EprUo!m%0gwLu#3)zmzYD`Kdn-VVE}9TzN7`yf-@T!9wsTOKEZgjK4o z=x=g?w(1J=m5S1W%6Ylv`ASiRQdV9%x5$=nQ?AOb!1YzB%Dke=!qPdF3Mk5RODg9p zr3FfE$$Vv2QHd>8$*(Fa&#$OZO3Rg^*=5B=`RFSu$t#{?D=N8GnTdHNr8p~!upYs* zvQ*&$1*@X`3eIeHetBLYE^}uV6&F>`PgQiCbxd8+v+r?=7k4P`?(XjH?!{dW4#lmw zyB2r1;_mM59Nam){_acOySd3tCX-of@4seeXH6z+K417KS~>0+2<9n`ahD0Y=)1b` zR5}aS@d;VFJCbdf777Up=%a*0A->*XRwUKAvcs97U#cqUdiwH(E+@k8F7r&aO?Lj? zbIrd}WKC@98HjV(?hACTC-;37Fk;5(rWrDG{;axKofu{*HOlsvWRHe=+{52jAl$j! z1{hkX*uZg-)ixD35TsSqHFV8$xf`lT`2R`NGgR*0TsxwCT!>t(8J#Q3{CN3nZ;r?ZbnyzbNM*q6?m z*xkqYnHP5(K-0=Bqw(5n#>%PZ-z#j{krOk;juYivZOv81W{dfzr18oWQ~sIKC}$Z* zTx;eT?O1VRgp{auB(v)QS;rxtxH2BkoU=*d`R}iAgy_-PM*L9mMz|R{R0;~9%!37S z8GK7}E9g)zT|ipE1nbr0Lh!1;_SmI!r^~3)E8&Cv_@^Qh^d+|Qm%LjFXu|7P*@N^_ z{iYZ6l?Dp$1Fi^xeTaO9^byYsLHQPuq{xIhhY^&r$+NAen@@5D_tvj+<9kIq6W!37 zVcxtB;|DP@`vkV)=>;*dF~auz^}QPZ zbP>Ox9~(ggY=4m6h#eR8#b?B`t@-}_0KY+*A};z0$eMxpYJ6qt6XFU${-{0fg%ENC z;omS#Mp*tp@XeJ8VuB)q0qq3kfeYckSW&{}HbUJp1!|LKOru$3K>F4kQSKsCN2i-N z>s`sWXzJ~0TvRWA4LvMxR4YLOn+3x`M!G00IgfRZ3J+Zteh4qb!Er1!r(Uyp>5Qi# z`6w9#ZoH@LH}S!{LHSC-g3urxW*2gtUti6RznNI^Wl$GQ%On&A5d`VOpJ^2$qASLs zfEf@Ly2mD}#1yJ5XL= z27gH%R^9X>&cs9K{!|R#8O|C>ax7?nCA*h8Y{ga~h7auy3f~jEuHP#kVA#9S2&I7V zB7ZKZqYCt^+L%G~Xzk9V;jq7kX)&$es88O~i_g+-Y45+bF*TqMJ40|{>Pxi3p3zz@ zhTlY}!*w0E_uXUF4S~TLEQEG2@3#x>`_%sSWlI&BrA_^B^zQHH8Z(xZ;n9lEJbBCz z%K7i~45X3e-K*c)+%Mxp+%-D-7O(WbO5kO2E4hPXF|>Fu5q{exx6QNBMVrFW*O#`J zWOR!>0@U*g-uP=NyekH_$e~qpq#xP;&{a6(zbXC!miRy};a6-=5*L=(s{@PPek_Go z_-CBAmixz_-*=_5RWO$Ns2t1>mo$W*Z znSfv9g?64P<|*$7O&2^bKRaeoczov+f#cmX9%>KGpt@&$E9RYayj{VmAzwowdtp;he^G@ zpsV+sy38n8)%@7m+=AMYA2vc{q+GntV;aZhpAab$!6moKJjr=^Puzp}6#bX#l& zO1H9*9eo@Z(y|7)ls0|0j@PFu*{g|i3T?XVahroS;_Lyo8*3v9@lry$PihxkxOAdl(&Fbs!v>#vmrEhJt`;fcB8SRDcyt~!Pa*b8z_UW6i)@jXc zr>qCZRR>@t)u6l6aQpGr;ow@OvkYih2UxpC>U_QyYnD0P&Z8z>)Q7%1`a+(1#@ZLO;zWM;qMkyvQfHslQZl z0=FYn(>8uvY|TAXVtMjDE_i#xR7QSx4@sY}qA28qqsw*zb+3IONG2jLgM)YV0?uce zy+|UZ836%3A0Kx6T;v0eb(zAP(xc}E&bib`j{<9aaX_Ut5cTS_aEpFjaqb%XN@R`* z>&j8$J7Bw0C=}@Cvhfw(^-` zu7_m(SsWnQbkh8UtJ4%zi0LC(6u~LclqAk)&@@!oEzfBb!&p9lw8%5K9x>qj~ z`K8JfH3>Y}pQY0uEILoTJNG1?d0c4WG$4({sKqSAEUDuucU1UKd#%3c39TuWR_@%b zGhq(J&R?w9W;*=jv}Yq^AuRBJ$WU~mU4S!;>3vjs@_cW_?}Us2PXYIYB4Fdlve?8| zV*e7HCG^rWw%Tn>wVR-w5S(x=B}-k%jz5dwn9npfFg6Ik`!No8k+$qELL;IV65F5q z-Avk4+G8}tm;KPqTIUq)qGJ{S21K+adXm)sylL9Y-OKTHdjajis^p>6A^@9fqU$8d zC6lE#(d+s4g$E-e;>pCwti)5rx3ShxU-b`9R5Da3R4NOv)@?KLjNg>~%Ems*EB278FGvD3zC_gN3% zl{p8y37#!B({4RS9Am%qGm007?CWZxd-W|_Tq#IB7ZhG*KB{i2oA7Nxw6m9Gv$--9N!ZUkBkRohA z5t&}>kUoC*O8-vkE>QNN{4upT@bUA60e?|@;`7gx3)l_O+Zz}V5(LE^Qm+J-2O$WV z4Ly|yexiZ z-*fD{X;pvWqy5;z2Bk(tkY84`ZkFaYR6%S)wqf6VH%5Qsf+T{r1LucXg?~XEegb=f z@JC#QeSzDhiMg%v!kdl0umXbx7lQ5r^Fnp{=7i&fb_27EvCIE}Q>zoAfAEhL&E@z4 z;BwwP=z9flapqCL`lhO@RN1HM{hNNN;4|(=)~{9|$GO2>SVb8~2nE^wF@Q3#TzaicIzRSEzzKhgH)93ATArl=QyM4RY zjuzb&c>t6&d0d^vf@tEd3V$lg|D>@F00YJUddivYK^KhwHDk7Sul>T0^-A&8~W-!NKvw^S?L!HV@L@S;d?9kN?{|4 zbz0q%`q^<9d%M};|K=3zuzGs_^Pyk2AOl9mzUYW{9l0?RhssW?DM8DLh*6IZEvlov z=3lcq)j#t%;F(3QLMWAP1$|JWwu41&L7FX4qX&zK-thT2PJUmq?W$9C!w`vJ3t;V^ zbk&?3ArD_C&uIw(V-C!BLZ+CoQ88>JJ(Oqsol0+dUpm?BK@E!mnsJ&ax}fcV<@ud} z<)2`P7eW&d&R7iKLn7G{a!$yELp*Ma!M1X}KC?f;w3mvOO{|M%@jt(UemI|Cs+kITU|XqW{=wX%T&`_)+qwvc!3IBfn;tCzAs9A%FxH{O?ic`U?$V>aUhm{}I=&3j%#Ed~})VvC1Sr{CQD+F8p}~Jw~!YLOU2%Ug!{& z$*qjGFIr=#@sSJ<#CPZjSn5FXKAb-7M{;hDATw-k4;F+Kkm(dtrF|eb5Fudz`sRl2 z#)+5z1HS9|KgR#hKf)&!N1kJ)vYrw!;`kzqz0s^X!+T)##X-+|HKBvy2HxB8+;Jmx z;s1WsnY~N40}l*GY`<|7C~QMj;s5o`f!v7hR7sgQaOUD@?oiXO~KL284VI@Fx1eRDs!si-uPVWkCMk9KszvK}NyR zdJr(%mURfF-VA)!gu_i6iBMB4d?}$hle9Wt0U`!GMnj7&#Pidr?s?=(t>vT9mJ&)8 zMf6-mS|DQ5`qyDdg41_2XEfW&FHaU1%G#2e!W95W2FroiBX3yvfj*jOOOqrsgC_OYjlKlbrG<^nX5VSxsE zq-OskPF0+oT$GkkTQPYK2dbeWq4N8lZya!*K7^NbJ2F5V?{`>y3dXPZ0k zPdbl6&GJhEB7PsQW=)eqXhR-lx6b?LI~8j5~;3L|3X!Ncr|q>=j$Hw;s~h zfpM*3Bc{><$dQBztKb5T;kiSzKo4ob>B2)hr>q)}3AR3pyyCoHhm8rFuw&f`A1(S( zpo{))G`IUDtD|3S9>!g$*=9>=;)sU9P1_=%0JuaSk~0cU2vtqw#Ce9c9p;F8$lXnm zYxfmSWS^53a)?g@&h&;Vt z<@#W7zYdQCrE5a8qK}|w?MQC2mUP?k+QecLFJ>8G7R`L&s;r^5qdahpq1heOE*P^a z{K?%py9^*~?gMuaH>X*tiIH$(gSFlmwbA!TvD?B%_G-EIYCZSL;tS542YVrPTf{1P zt<~SF?_9V)Zv4axQCRul)XPGpRS5<+C5hRmw$VO8Z&XW)eFqwy&tEM}V8pfli0>$(MMm0XjbPRfsF&L_XbJX+Yr}QH z(K-aiT>DwEogruE*3uVCg&P3`xSnW&yi$qLGH=eOAC$!a*IvC-l-@uoe2*G!YqZ)P zc>Bv`^4+oXjoD#jh0B|T%73%mGV0CGb3>SFb;_^%J~Ue9V68>51EpPlEIa|_jat0!Y=BhW@5P{N zFI4{5Um3a@J>MO(sU~fBZ&c{6ajMc@M3~s_;onZ~HtG zv0!LYni`sO+$dgapk}s9ZvOgO?{2NtxM`q-UvKT|!q&7ZO9F~iqWBIkh72S9_Vt`O zMv<|is?G+^`J$|w%pR}IEcb`BK&10`+%A_K_0jHRwH-E8_xZg@^$oMvQuEGCLrQzR zmn4s?NX;5ko`WH6DBN7un#640Gvbq%KXj0#YtcIu@Q(rs@9Tla@kf9kC&SO-luiE{ zNeeiD%UIL+qbA>DRemL7D3`aJ!}jl5(O|w!$YmM=P1foGu=dlz=N!s=HQ(s&sh>hx z`!Be+23Ci1yOZ4luor!`)@Np5N+FMQ@P>$>l^FU~MOV9}H-i>Ull7onkdtm9uFD9RTiJ3ogg3xRc3&NB| zkw|2}kwDQr;-#W3cU0L{l~moTGOegi=rUPUuT1O?`c&h>7Kdgi%T}0-eVC=={zF#S z!qqQwgncKpG!9dht-5$?tFbUx(cawQ+2LZIXWw|=-0FUQ&E4_be)c`_J^3duIs@2t zH5Ww9*scxPKG(K!w%7KdN~tt_DBCe-6`W|wX*k6Hrx6@0Xl^Uo+~#r>?AH^#)|M6f zw^Od@2I-I^q6n2t_p-Av9s~_=OngDM4c#uE@s%R*q>KGh?m)(i<6SSSou6WL^cuLIJ zmgJ^Yk+Q6IQ-ZYw=hD9 z;2PLPQYlC0p>#3@kGrb>?=tZ&0I)16NOk>?wW_!SrY)>@3;H6S-pR#Kn(Z7!f8dD$ z60iie{Fw3SmE)($3r$W+a6wa56dfN^;{NYT8EKyO{bJw$dh{=bqoE=>A}`MV|L@Cq zsDfsr)Lev$AJi@alR2envLn6<7CJ_gczw{Y{q@#Hx~dT!>E4BSKNWOszT~Xb=ihe{ z$F7Cqy94eaPc-WH?iHJGsXkBrE8K4VE9haoPW@>j4V?d+U?@FimtPFl@ZNRNa{8W! za-|e)!z^wD`rs>DK`wjt-yug?$?vbSBJfA}6Md|*{kZ)I_m$;;=b_I13~g2?Qt1S1 zMhJC9E`G=+OUV(%im)OGkRzvF3RY#Ho(ra8IE_RWn5$QN$z#eHEUw|UiL$FEsGi%# zJP;T%wH?~8h|;vH_o^7e@R(14m?6*R)DPtdh-j@7Abo{<;`k>aT~wL<9?vADwI6p# zQ3VYbpk6Fbb|@dyO<=|}vN~bIKe+w*;+I5^p6}=dahBAlCd_!lF1*tOZnNzdO;2nC zF1({3@!%aeeg`pc8aUnrcNWm^V9Yj;4L+#NI;hD-u)g2xvx)_5=(g5SqGTQNlxW8&7JZ$w{Z2ohXO^ym-)%8beF`%EJt{P_( z9Snb0_-ZD?aa8i{-3m=_kS&sd9tdmqLP_EJzZnC~#dFbWE|q9mNe*{3mQAwN_ogDs<{*a#2k#lr z02sWie%TkBRWcH*(Xt_d4G2lzz~9LEznIL5A@@O71~Fd3k~68UL1jUYUOnJ8g34h0 zusz?;?uAje@BgL1n9SOwR!T}B5EaFE5YlZYTm{8=5fbMSOp-s4n$E@3QuqzM!_`># z+|;l5lMbTycg=etrKE&{Tj3zJY)lm1X|cdawlCtX2Ws7I4@_=s&HJQ_zvESJ5LRAv z6OjvyH~%ZlXBxZcX&MonRKvGVmHjF5KgU*>YXd^*QgFt=_}g;0nTd$>QIcB6sCC4q_hiY;+K4Cu z!s&7jcyfKiqK^y5bQQ;C#?16t)8tv(q}rrL4>pT7i^!7zF@PA~R6sT$+uT{nSt*IC z4QUgmAr6oVNaY`McgZ0ScXf5R!+7R=<{UfnpZ?6|pX#3JR$6u?b|Owd%8tMP&CfXa zYm{x1sof~i_gZVScC>M`w%sTR;+nWUfPBXJYw(ke<`DGj9s3UA8TA>J<`{0~cdRcW zv6$e@$epU{IMw~wq0&qEYq$*07j>RuI_RYKYey)pSCBAsgzHSSy7zUeMmlUICEQ3S)~^g^RvEJW4=BM=fO1X^CkFO zo9@=!?6aX?prqJPl*a^TbM}RJ)=2qaxgUVxzWBf>%Hs;OD&-6DhqG2D7{0u?(7iYj z-t9qsy&Wwq@GMlY@$|Hv{S2Ewa|nAnLlB&L2nCKe<(ayu)kXacVD#DwAn_7Nz_LR$ z2U`<%sB`{lb^5VbGy7t3<+g3H;I?OhuR7zlr!H!pynnZLmN;=z%B6HA(*Bk(qs8f$ z3GwPZ$|Szgi7Q*yi~;T{jp-E1>)UX~8z!4vrp?hEUjWZO)R4`FIPt+RhVmkKvmyeS zL?ePb@Dugu6nh8@HOd%r;MSPT$vRRiNGr%QsFWLBoi+4TWftS0KUYbdd6kO?d+~h* z2LDsX>qO&*tM4Rm1~M~*3{k2~>0JqGpMu< zlJD=q+Y{K#mgqQULi4!AR%LX|VR}q6A-!QNMzPN-#nIM(J5j=i{cOCjC6LSuM!^(N zi6+|4AQ4LzC}GwfM8d{x@WnXCA<}^T4q!%%UQxQU%~k$vVrNa^BJuTHW|xj8mox;s z-MhfRQtg%$+kc5s2t&Ow+r?J#xDC2%rJ-C1sl-tYwjpK3nGab*%;?t-OEwl9;9bQZ zdNW296RAr!!M}_%EsMC@MMmWy{VDP7gE6^am5kJ`h_D|k%mQC zFZ@&W#kdRup>C?PZc233LMGH+)eV;EFA*c-2A#D%lw)xBsxi~V5mUj(A{wy&zR}Ac ztVO|DSva4zDbhr$JbNEJAPEKcqb}fwG8ECxOd#x=RY)vGI=&}0giXN`2FQD{H|(u2 z?`{Vw0NMB=k91I(+W#l(y$E^S?5xzVX?bXg|f`g;^L`h1I(DDP6&D!nZ?sidua<=bH(7 z`8D9&hZGWdAVFb?b*s%4fSjUU{gO#8^E4ImjLRVmhCY@;F47U%B`B<;KF&B{RKBP; z#*}&eQVYI;LJPq`q5Gr{{x&|Qta!Fk50HYw+Sm&r7Kk+cvSD|-hGBJ#9lHme!Qmg| zt0!ssz$_D2OkuPa^&34AM=9J%jxW5MrCm>{$>!@_`s1mTZ~pKfCBg&`6p(-Kg%|U7 zpfdOMsrv&+k^_0_1QUp9zY+Y+6m~|mg^)0_MiG;<77Af?%QhWjd^h$CtVQJogYdZt z1b+82KI&j=Cq9svBPZSbGJL4!@}d@Xe8x$A`Jq&=-a~vugM2_3=m>vgS?~pQO5Em) zZaZmT#q(Tx@B8uaRN=q+2eoA#qCJR)&I|j+Y!`g>kNM9Pd9>jtf}usMRhA)6R8OmA z#iWcX8@T!6e+h2ir%pX&6{U<~c7#TP((K1pQ4g*ucAk}|UDpd~vBQu%AQ!|Qp@2S6 zB^doyoy!a9Ek#m`b_bz$(jOmE3xy*8+6RlOwUxE3S{0K-dg&TwBGFZU8NZihFT5q6 z+lyplb+bRtl5L2-K32!6uJli}T`j^Lfb5)^Y8r`cZ{FZr8cKTUSlVdGsW!XQTfd`^ z{$zW>{ls_il5S-NA3w)u}1rfa93^~emHUH{FHS%)38Hn)o6s}XxxkK zANPs%a(}7SmzA`mko$v)5;ieF%+R#=eoLlTWcmv-UR&V2zFhvVlpiB)ymVo1EG;>W zic}%i=$~|Vmi9w0`ABmz9vYgIuF;(2MQISUt@d_Q!k5}T&GjX}X z=nJ|1L_BV?PY%{R$$+3qM>eZ_!+axoni$k3Oeb)wK$Ttob7QUpVpw0&U{hWy;qWanrA{!}_u9hgWecKRe`d;J z@XNptu5aE+r3ifnq8(}p@dhej_#c7de4FBq#&jQwJsFdGhxYE$e-|rwP z=9@<=A?wf!t{}71S>NtnDR@6(`aN|=5zGr1JuHK=<7<0^QC3L6FX5>Sl045^&%Q$F zuec5+EX^LCRrF2y-yK9~m4ARh&B-7<^<@%3&i4$-Czw48^ad2^rb((SaqGBa-c*`;1Wn|kpYcR4fP%^@?YhVO9q!{x>||&^ah>ycU{`T zzADju!e3f*fH6REx$bFR8*of-<5djoFuQb{9wY=3q`hVwibDyCo zd%9ZBKRPrR)4KLRUnEVDkTklr5!ram4}pi44-l$0757~Jc zpUB+RQCwC@O6dfB60R`=#>^yV+ctulP`Z;pZ3df$*I=IMe8bJZsi$HrMcHa^ZEI}E zLszPn&412wTnJOxJlUvnxaT);AZ6-L87k9cerCF7`Y2aqRyRTIEj_by;N=QxF#Q}~ z@?_5vHds_;a#EwaAtqSK(Npx40s5rM08X zRWXxfJ(^WIwqkB=p5ULti^8+^vzJm!plD2M#x{z#B3W-K=N#T0znrvL(%_E+mCCvE z#L6YPB5h;oN zNdv)4?V3O-ATnbR6Kygi(!I|I%+RV3XB8?rnr0~Vn-6{+`YQA#_<7K$a8ks8>7Va6 zl*=>3zDhu^i?Qwj1KuB(-MS3dTrTr`UO9Im}U~m)g(ucxpDqo>i4)l{J+ml{N21GpUoSxXifqxNhNr=UR96eI2ur zf;cSw5#D6NE5gjU+&DpfAE#qvsqj{_PyzchoQt*yfJgW^OmylofRft9C!3pbiT zB6A{ZgOB-)^yet(cPZ+UbolYP^olf4`YXbDFlvIsMY2nB#H8d)s)y9Us&^3SMtMkSh(J`0*#21!N$JEa7A6)`9d9N|fF-|n-uNzD>hF97y zaru4WeX!r;AjVrya!p-GCR8c_tRZQTcjVyVbK(w}%ozF&=DfL4L*8g&SyI_pSzPz3_YmAHK3U=GQ{2M*q%Xo#-0aE}F#a7KpG4|34)YmQwCoJ)UGI9u?N^tS?4$)%wiPzr| zlfW&iQdq$rU%lD{;7|YE_8(Hnwo(bPoLcBkLxQs9WdXH7?4L zzcXBTMEmAQiy85XS9XL5H!4$B;dkW~Siyg&q|Q7OVZQwp-f=c<_cO>+#`?Yv{==tO8*f{N= zh0~#K#Tn)3J*P{PbM+`@p$3ng*J8a%q|z00yiJ+X>?Vc{$z6(&i{>*7@@R&St!XXf zVA{_9I)5f3xptDPvQeUv-O-b1p(U#_N49#nYh!JjmSu&9V|3@_QX~U%TF^fJHD9e( zmzj%iYE&rd&hHpqFOt}GX}ECN65l5PwfSAR&x!;6@{kcY@o0bi_h}r8Nr+(3xMEx@ZJ5lVDvk~ zJ&!fbo&Sh0`186dC*Z=D0Y2+tjDHlI3PY zt08TD#D&!EeCSHEPc+Gd=}ZTTW+knlX$u>tNn1}uB2P_*8A2_VX4Mr+>D6y=)pi6k zvxcXV4B^)C^bAc>sb&-1jns3U_jP$29nQQB)~GGy^R4NiU$>7s>vNs?5(nz%$2fi| zbHSDl%2TsC$FyZnm+OUkbr0OG?w$;Oim|!O)u{t8KKb_c>C1BT7Sp7Di6!%Avt_~4 zOSL8sy3yOs3V9YRogU||^vElWenbmm@Jk^*-*shYtHV-hA1P9GM`HZhisz%pG^v-m#o^p<#yC%I@k} za3RbEH>{+~c?;)yd)P|VD}yfwbsm?yH`kO9A-dxB{B_UvZp4+Wd??ERt!1N)kOs{! zHo8Mspg6mW>y{eYwjZ3&XVFL37*75;)p0cQnbs?1>5+RY1I;ce3B=pxY@5Y;;67Sa z!%h3nC5E`woXzN{>1!SYbF3G!Y?mm(Mqs`tg2P#V3ZvZtU{rNLc=ymsd4gjeLq#i= z+6ydMKdUnm^ewx=b!`lso|N&Q(wjBv_7oBZv0AQznnP&g#p(=W49JEV!4EY40Eg~tkTsQ8s>aNkc^Jn%DXTEC0fC~{V^lVDzUux>&{15j*~PmDMI%6UVtCtGezCAGV6iX3o#@hPO>y zM7}DKXI-&a_vxHp9a?*xyCa)C`*`D;bYj(yHGDI5o)K*bNJyy?o{=J)*05sOE6Q)1)b}I8(Cqo zrQGj(CY3UlT8N$Um6s#oGwJh}fA&<=!n(~~x@b1GIrtsMo1c;2q0cv78#~Gl)#-e=dt^oJpd-FWWj_>z(;>UDfFm^w|EXmjcKXf6n5b zoR_gpA8;&@5?Kdf3+#<8bI$A7t=kF#Q_}G+54OqGinh3X1?Th9k=H`D)zzZ?raL9M zM)-fSJQkLkEqb0MmFGykxn9vX+b1QymP-df^F7y;cwA3KHF>Wx^Mh?SULrxwY>IT( zS8NsD9;dTUlV-9%uQz%;&Um}z>iV^=H#^o5#JM6~Jhs>M;@uQU;QAt4CKWhZH{Pd; z2&wPY4ER-c#_6n7F&jDUC|XS^b5zaoHvwpNSkzCpt!|L7T#5TW!LG@~V7FkA%*3Xy zEeD1Qit4)M#HhYU*57i-BQ>|j<5`CDZc!m>g>`J%zg-tB)a~W4E1Eq^3_OxB9RFpI z>*-u@vKl@7$x4sBwz(BXx(U~r$0>>8y{T*VcUGr0a?74Qbs*=}e9u81m-po9+b3%c zQOB;Jtvqq2Q{KW3{#_>%4qLe8W@qe0*s=2rLC0~faJ)mu=cS;TzL497_n0=b+l+uC zear2&ZQDqD?c8h07>h&0*d|x(QH#d)#xO$*`?J6Sr(Re%*L9NxU_Vr4!E?hUr*YVz z#W#MkZA9}>$Ktdx#b-X|v86$cro%^%;`FnHRtbiXNt>zrL~?d*m~tad?Wk>K*MC(L zfd{jtJJ**aij%07!z&6(0AHg;QmLYTz+-gH>awBPYkc;N<)pBFrSw4^@7?|?Kg%w& zq!rg*AeXjiY58Q$#BJ>%7w-T!Yfa6TpqYms5PM>8s1)M7$+>UC{$^*ED>j^eRaiE} zZPj_mW7+jH>yCO2Z!h0D?qps#_o~B6R?nvMh`#6@x{5GjQlL?r2^mm>h!NZ)sBCI; zvx&A}5;PSuBH#%_JBb#LZ4n2knf09^jr|=~M02GIXF)BH9q5aBx7H!X;LRaAZ=Yd#8wk>SO+-C~e!G$|r+zF=rD{U&LqvYd}J)kXcUVF_Z z;{c^f$CDmA#~Jeda&CG!2r|SV7d3e-#12*k1RskY7EMxy>Ov~&^!|wX1ocq4<}!L! z_BxPd4RYd%B@Ju+W&snou9jU1qqwTYhl13^(vdXpmeyoG;N#j#C*jDpL$D1a&>7|l z|1^1OkQ`P+de_|eWTd!2#DZ9j9Vh(F6Jl%)8H7%TZhsPOlmKr&H{ z)dL7T$&WBr{_+A9*A)78QWb&NVVRp7p))m0$&i|4CsL zSK@_E7KOOf?P3}Bu6`MX?o?OEH@o^Bd(Hn`n_M8lf=MdbWx40yCALfO-|<_iR`M|> z(>my38j#p9Ct-Z2AOwN=jn;Nm7|KgNr7OIfjaCxQ^m-uPb+A9=X6+(eLz_vnpyvDQW)sj89oY4p`FyzQ|!STqX|j=6Cqq}UD#c0@hyu^F#_U1W3)r@LegHLyR7(^#!+F!*D$tWs}U zJFe-pfH|V+*m%}q)=4$}PsHddlWoiS@`;Fpf%klKD`YOtFJfU80E12d+eHPVMgS|o zY6601``vP3kM6lp=Y7Z~=ij%(D6@YR^N?Uywki5Nn#(fRs1m=2`Lq&jgm%noAkwwv z27T)hjY^pn5>h!e2=HOvn!8+r$6`%C<38s=!s6!b=G=1=9^XU#k`!qe2@H_v)?bA$P9IKuG<8yQ686!4=q+XLGm5aUXqnD zqoj>P!B-=KnWKcSshr*9!AW1L;JA}{bqCdJHcm-G4ra>cgOnM zdKA~%5r0Y#h8660ud3{e__Pt?1GD{J?44=3gQZ)8kAYjE7_PhcVU*##lf0;}AO2Ba zroPl5&M&K5Vv4H$-dvnKoSEKCYB~Aic*;^r!AWAdY?%+FTKTuiV&c0T83fh10I5t$ zg#)34QaQF)xp}G*rMrcBeH%t%`BaLDm+yP|IX)i46FrO!Oi;3cQ^L?PNok{86Lg1q zM;k{=cUyP7uY#}OuOi-!ALSpRT?*SYKp1!3nv|?V&UPt(O@BrIV1KjpSmsCo%eBPc z5shJuMCzwBh<0B_5?@p!aqgaUCQAMucY}UutDv`@otAaZ@+gc03Y~a3;OOI@#+3FFzbV*L*{LCC+H33 zcb9~_%=YHkdnip@Au#VL9x&)T=sXB8KO9Z>?e5wg9r{O=l_$*j2i6;XBx{Y^{9P;9 zP#yu}De*gBTBUfD52F(EEJ}WecgRN~s8G9JMx|!8aJ6)`Vzp$os9ft(i=76U4kPLS zKBZ7>uH;nXfi9-J(YG4A*5&q(QHT1zg+^PT{}8URy0alm%?(X(+cAa~CKm=mRA(*P zuM3T_N}1Zyo{lh3r_1Gza8@O8oyS}62WG-&-InPcp*G0U@+ttHjw^|&e|pQDuIhvJ zmCXf73v*#EZ^WPT39fs4Afzfu4L1 zo*tT>=ugvL96b>b>r-Vt$6?Bs&z7&!^u)m->np8yCcjuN!%WJ_M0DooovL?6m#QJf4oU6rmGS3s{KMEgu{*3+ zmUh)`#+6aPp`T0lCcWoq_Z{kM`bXghS{u!4)koAv$4BZ%oNqlv2SouziG{nIj~u1j z;E*5P^+u>a3hy4cy&tR=xHrm*>)}cpJj=5X`Akw}Ta;;~Y2_$FJ<~{!e3aSq;57+8 zT$-B{t=W#k3`u=x*D^x>3T-AHIGy#4RB2(ZU$tC`Pqo%k|2*?n?YYlX`ME{ipEo11 z@BeD)%b4-;aTP)RxVs|S6-XdYE$@9F-x;5EhV#;?>bY8u(KyPVVO-+U6Lmq!@VxK~ zW$(X7|M;_P{ z+~LFU^B3%fMvVpob)&jx3QzT65J>Xr=)ky3W?%wT)Lq-{!_??F^c2T1s9;PXm%?u(hYrQl|@usTUVbbH*b0&!g(tA&zAsp(p? zrFr=?*UwkfrvVrb013CJyn)E(lit4hm*mFM4PT(EQc6K7y??^0sW8#G`_0pzp6$qf zDF}qUquRVLQp)P84Y(?_x4XwS6uL7M4Y`d4M7ip;H*?rlOg=3WaE|=ZyC?mubMdq- zXsBrpJ)^gaU*x*9-KyfB)vaHYT0aS?)=QbH-bj(stJE=E70Rz^XmrnO=zIig9I8{8 ze^P8EQva!!l~TG~RK>Kvsk*MKq@3Ngy6kkPsz=5U;PU5cc5JOBHA!ndP6Z&~-K{Wo ziFK9TwY2PirT>+hX z4vYjUdcVx@b1rNaalqLCt8U#L(OElwj~n>_@8Fi1D2)Z#3^AO$$vN_%q3VJ+PELR0 z0M9IIFniwX@3J`NexEsR?|VKg;);JTD0Y z5c@%=TU^vImtmZX#I5gGwy=?%z^B@EftmFLcF*V9wNL3~hUYwxn~+Jz@*7fpJ0wUP9NUF8bN%7MC~?QECgwBfjY&{)fAvatsuK zFNk2O1Ey`owZ%RN`+a%><_iyIM=r&WY%j%2G=*xuP`4+hRbke2#+mu#GAylVz9y$t zK@^wWH{7O{ROD=zp@#u==!suriqfEroCIHKCFwSCAJM-h^XO>TNdE$h{{#pRp`k@a zL)@WpP&25yibaK~3k+6zlzNO!`ad)5+m~5aTsn^oCqhzxY4&h*ag=iOa8z)Va5Qri zaa3}YEv@Q)Gqz{2t+v}**4_E(Xm9)2;?d;Mdi|5odTXPj_tE%bZ@H+NN>`~l*G6E) zr{~f1;%J$!dPUC>BImDnAP$TU;^~%27(24`3>2bt(~cytAM}LNm$nwi z1^daxjs#ej0}F@>2%ah82a$fUnHQgEMSyy}C;%shcPrb0ssy)jIIMvZ7kE38uf{RbWHvDY=vb(H6lz?sN3j&~&c0Ff$NZThUV za~k(Vqix$sF=Ub9#Neds{4K0T5P!9tKT! zo9+s0gmk7whG`LmwL+rPA!IxE3742Ihfpe12+?3q0%)a}3AT&iVBn_!R@nf1oR6Hx zz=|{>&p8726bQxO?Ub`fs21wL|8a(6pl4KQ6k4D>#z59B>;SFfOoNOKU=2kF*wzVt zQUvWnm$1{>3qJdSN0H`6F+u1P_E5cnTrw3%Z2%MoAv8lOibar%gu(&g5Y)$vvs^gh zyeec1$DIwrN#V3`mgUcE*j~)MQ|1jQObQpALrv4n+jJI_5hyGrl}vEinQeIsz6dP>W7!u5MOe)1gS|u3fa2C8T!HvXSf;X2J6@;hHc9 zSBkfxoW`N%?gs&sAh%z19R>OJ>74?GKA-W%?X@y2_TyeXa|-c;HW<(i~9 zcr(0N6kV0x9OsOfg7UmZZy{?ta*4{NS0tY&b3Srkb>DD~xo^2|IpQb?aqhd|L#2D({m2pL+6Lv;2e}Ef zzct%|bfV0NkrF-Q_$4o zDF)lpJf)rrPc>kjr_nhInh1;-k320Nx6|R-;puYrdUksHJbOHYo&$_?$aBPV+;h@% z+L_=v>zVXi@LYnvMq695bIdj1+UwfyItcw?743m=f7o@@b;5ND!ZWUOftI%5I`6vZ zx(qGuJd9cstlU}eab1ynk?Xqart6ODK9p@btrKUt>mdx3dUvF7iD9fe!JX`04ddL6 z0J6UAPIG6v*ST}u=0z=7fU%7t)Q!8yUBa;3ZKG|+UE^+GZAgwoD{?#Bg1g<_>F#m& z3SDl$d!Ks>i=L(tXT5>>L&h3`fLv=N@&BxyRiT?kR!5I2!F7ZJPN` zDjjXTUT+6rw`bOK&0Pd7Il;Nwy9-9`UU!es=S_uHFy@@_4nQ8aobyluFd7SS-o4)a z-hz3y4%z3IKq}tmb%c%dY@~#8>V)=5e96AmY%cr;%zJD8Ev%!! z+eXyJPS4}vit5b>1IE?o0Tcif1C#<(08|6i0W<=%0Js4tZAbm_`mXwu^*aIj0QLY3 z0vrH11aPFDuF;6$Yla&3mB@|gO(@q*$O7w%&9FMqqqm{-BA}eNqURBgyd62uEMiZ+ zoKPdKGZ3ahc#iv`Gud^@xf(E8LK;s4%#?5)V6GIWJhLR1sgR@hMIm}hLUiUzGUbZU zrl8kI_j0^JipzXC%{ql#uB1O#!g58PO20Bg$aNH&o`w#Eo#i2+Y>Oa; z?XF^*_|_&`{aGa;3avT4x!CE-j7o|`z07e7Gsq0us6w$>4hKusB@;>E?2TXFYwg@Y3 zu}wlgu2jGbz%0o>xvf5~FDmFPzXMV}iacb#D+kaRQm2n=n@?(Mp<{~HxMUOC5$qoV zcEe8Ml&cJ|(zSS84jqRS^M$ZV#K62Kw-f1JSOb_Y;ab3KF@GUX!U9Q8u_B$+7KBp3 z3YThr6RKU}oGYUwFVsnT8Ub4r{)eF8mQc1E%2C)M+0+HNQz{>6?iTujx@EtGJ(8|L zv2I!YD)TrbmX&Zs^q2Z599QT(sV*0!{*60K5b^3wRB14)8YMJ-`PcbyB1e zE>-VKg-<)irMZH0ht}M)RH)Tnwd9oZvQ}u8>N_-il7CMcbLFul&9%7vv_jdZCxy!O zfmZmm^%FWCEH!67?VMJm$X{ObLHX{M*J#SMEgcuOLAzTJk*#5RLh@Cv13|y5-WBY_ zHkYc8%Ka~}HZFGs*Ca4cxa?wor~RJg-6r-wr9PKeVPA-Ds@K(_@JrIK9G~Q|D6n>> zHg}7B+K*kkT!A$%?Cpc)CfNzQ|HbVjm+k)5Z8l9&Ml{`iz=I;6z6BK#9udXfg8Dag zZjb%+yYna#M8Ado}wRcpD15D6vVgJ zLO3iUjR*K3TRS3!$0YhF;27XI-~`~5bU!V{X8^AP-T=HM$;dX1NJ#U#E9spFd=z5) zh&I*{WUSTKM%KpGCe$X^uC7h1&8%GqkXvi6EvhX6FxQp?O$1wQO>IN1qgH^pxwgHw z^X>H7p4#48f9<~7q1s^xM{1ANj@FLVj@M4q4wcQHW|`cmYNBF~|9krR;IL-Ws28JNWdHH=yUh>dSS-Ft zJBB`sP)!FyZ)J#B(+#)_a3DxiqLN;-R|@xQ%a=}y^qPYq=?(|)8GpYNKPu{EIIuWB zz|Yq3HQ^x;qlm{V;z>);H2`WLn!V$V4CRKeBFx_L*0FcI!`VCDQ3kK!U6f$xHgrST z_ZW6U+4ma$BU%-a9`SjU67hc{ZlN`iKaTt{N{xz-ibromB}65lwBMdy+>Ugp8pgZ-**|TkM<+!Wqt8Lj#6ZoMfA5z5p&&s#`_FZRe}R9E zIQ$#35`{;76#X)K4H4debQt~KZTutt5&ww4KO|@~5?A|ms1a8CbcO#Ktm=P&KEuBL z@H(vOFQHUe)n7yZ4qXSxMmGSy3@iMfqa5}ni1p}0fLvJZ&x581=r<@2eFR`c{|aDY z--$4@??i0CdaOqU*nq>(MjU}7(3|Yb5k>6F5u5OH_&HRJpU2N53w{B=fUNjM{36=S zz9><`z9{h({0e>rm9p*yW)27Uuoz>cFAeU*J< zq7o0{K~#nJEf)C&Ws2U%{2hmnMjEB)SdaBE#7yZp>`a73U2^0J8%1`DAd}1_MZby_T+#Z)G8VNASie}t8X_~SA+tF|=8%R= ziCPA%r+&o)CIKf2fJ%Kuv!p|%N|^@l6Qtf^Qobihl`*MzpCI)%m0J0HNQuXzRg!Ex zlPcFN^H8aGLQ2A`DOC|7<7YCTk+8Gl6Yj;trSSErat)d_yIAgy5yhmqvtE`tp1QzG7dguL98RtM=9T8UgFP z`+O~C)-uT;=rNGLCVvfk#qX2v1LX(g2Z)dp#DfL)R74N{c97ZC;0dmMt4&MA=6O1-l_-e>jgee;Sh+;hki*6HWM2|Ub^Gp{E}QJW6z@rP-_gF>m*U&+yWF1U zOZA2OuC!-@^g-Ws-%VeJ^&YkK%_NY#33+Atl9(+yVor-fqhw#96w3C=p_IR@Z>dnb z-12Qpl^e(&2JH{!^755QJl;t7YA=?|sPtqg%6DX%jko2~% zgZnJs9niZCVyWO`J*&x!Oh5H02J~O^U18~xeBsT}Z}L7nNZQ{_dh?2RVX5{c+eLT% zq@Vl+wEgdp@1U@Vvk~V|c*L(GevP7lw}KobKLp-cavmj<56I8a>w2HwhuB#<+Q9lk z!O9O;-a%IOojGw0m&*EQ3w_gHrJHIEXT9ya_?V#6#!Fph)uUPNVdk`@c8VaEv zs=~a8XEl(*YTz>~|KG~Hpoi%tnJ`ALBe_hcQ=-AzkfhLmf>6*5Q2)^+jjUEu@jXQF z15%`-T}2$eK@iDOQ71u%I_*i2o582?Srzpl;_+F4!?6ET(sv;p-5CN5;JqqN3+VA< zH|#r=)Jo8^18)O#tLR3c*8vpbY85>d^cMqU02Zh?(ZI=M5Qo#09CRP)aXba|5Uw#Q z-VB5f(N&zGqMn6Xyn!as4V<8&9|1c34a9MbRP;Sa2R&pI4FcX&ap-yYeg>WBf{L>Z z>DjL;x}fiNK{_Rmwzqn8Kt-eNtrS32eyqLaFp$en-QEa{2H!!5jRRtz{+DI7LYh+S zQy+*qb1*(}X0Ds%DoC_c#Bs;C46a2*jYT{+2#~;4D(U1QNF#2P8&gqXox$13E$#q! zNJXDQIBh%bYu201|0bZU`TS5+i?$zXw+7hx0bVqa1WFW*6=)J_trE!HSstsm~ zYovyY<1$rrGt$9&Xp$6>M_hu61OAf?a-HKKxC9$R&lOD zUzsBfWQ~e?9`uyri=>pqsOTp^Pd3TMrvM+QID^oO4v=J0MpXXdE=ZxrJBgm;5TlCI z0Da{)fCJwqt3vWG2CHcPi7ILqF>F}PQ9k3l~e#aXx!_o(RmAg?4egphl%N_x=N0bkw zaV0oL{1vfOVMA7wvRO>=8QKbHYJL8>${rB`Y!ub@y;i0)(#=4+ z8T+)B)#9CfT$1br|2mtl$@w|#O3Q#3$lczXS8eYNdh4iHNqU#`NOji~-CP4G(7Wc? zrUgemV24=NIpewA;FVXDeB7P7T$Fds339nKk2hac--Y@Ib~NOSH}|r1$<(r(k!GQJ zLgG1=;{7&Sh@%q9q0&*gegCs-6I!ic$$EcWO@HdTZC>5H&OY7jxA!(r0WYmN7s@iX z>0a}cRJ4)GXvxH;;-Qg|vdJx!ujfj$L1> z6Ym_Ulp@wj(?WAQA<;j$D+iCto5z}=ChQZ< zHt_uzQefy9}_wXFRO><+yd#Je0I9Atoh2P@IaS1Ai)=y6+x)pRCS_gfg z4S@CpyMm*Kc9R00Q=sR_r2*b@#*Js`HPnGVTb~C#2-f3z@${gbdah5=U)HArtpadg zfKK$`df4wk3ZkE2|1}`XAJg5_!C0b)U5dUTK%bb_Eb!{|iNRF5UVWa<51cc=Dby_}Ql;zK^s9AV;K5#1cO$^j z>0|Y=x(a=`4pyf+*s<%*2UF?hbve2_Iv53XEr`I~v0yr|dsdgMo7TbDp(_LKtZq-R zBy^w{=vffEtD6s6$lufr@z7s&FjnYhbXS8Z_zV0cpcCqa?u_o7!mBoZl!qR}--I-W zbVn5SRp=`C{XC4J`~~3kQr`oqa`;Xjc3Aug8rQYx+=_I`x@5kNZv^f>;3n(Jbd?Gl z3-|{-j5s{pfgf4AoM1}+2A|4b;WK~>D}G&qE;(2t{3JjmKhDPj*9aax(h)_4(1Y`2Yw&unFy8+cbtP!hr0n<5Ar7!^g-?b(5HaD zi$4_ff$QS4xShZm1x_2kQ^9HA6FF$l+(D!mdgen z%y)bWpB?myy9AKHK`C%n`ZgM$tVnf=JmR1PxJ(-7Zu5%L;D)#%a*e=@&BXzCh`Y$m z1ucP|PEYsdfz!#I;4Ub1){_wet&m({zK<$27IVd9fSv=Bv%u@*_A63l5P`t#O%BsI zSI2cK(#3MIq=G=}C%wRp~r&sU};u~ZT-vV9&Xgx?Sky{GiyGb`Yap53#l1v3{!AD6AJ|UjD zkVY~@PAGI*v7Z!R7>n>Z(9uPLqmqtfl1%I-sdxu)M}S*Tb|_ND;tCQ@&n_|ePhv?S zsSa9$voUx~&m%~&!jcqx8N>L8E0}*l>2P{x2`LDkAV~`OV=&{w_=jQqlg?gP-t4WO zSvvc|jE$wU7coT#8b`GK!}y0g@U$XL9j-%%(NQ*I6SzASOoe(OZ#o9R_=gMekRnw& zYQw8x4yFI_gK>ATbZ{(=MHM(4QLkbA!;QgIXddOj>cYroYl7ynHJFaAFz7$btY&LI zf@X21#9iKc_xF3w0_!v~2y^ALJ#SH-w0uC%+%fb``PuAi4+4l4aV=ExOFv)nxumMR zsy$VGRqicARqm=m+hJQ-)ofLZZ9k2FzQT5eC}Y?;MSO` z9jp1OSzFl~U0dVRjF7tejmD~K+nMTxG~*jxw!?39RUOzeyftY{^456Ja@KZY%jy7v zK8jUcRg)BHdMc;HC2gDCni6Uk(?e~N?2&EJw1esZy(}Hbe7*u~0h_k+Th`f5R2OVX zqxZHeAfF21ozEq0&Da{grDjWJb+*bD(8YFyi=VO81)j0#*fX~9Fn5?6MX>sgWc9uL zCy(M9ZV2CAr(Pp&OKNY6h3T+uSE5(XA zTbV8Et5${?fH^?VvQ+|a8^y|Upg|hxxo$t$^*((bOZLK?%t)uqce7fgfguhDc=F?2#m_hd%k>@U4I1E zHgt%UY#tzbC2L8<8nno&Mu3*esQ|)VRb%Bi#K$YA=sk-w-aDODjmxrkc~A1?=k@K< z{_ERpMs>h0ZWr9wE2wm5O3y7y0<`6pYCrA8(9YdUybVBQzWd2{fNW$T;0awNoRF;S zWVCwr5B3LCv{Kl?(z#zr%Vke5y((HNYejV`S{!OoltkyUOJYx;B#JfyhSJ*@fH3#vB?BhiY7Gia>_b(a?PL8cb<*HeqA280)W{#&7d7azU5*oKdO zp=H@e-_xT0W|O9G|K};Z0J-@Vt<>|=TGU_GX;JSjJY7x?4r*G@Yf*o-SChK9zM%Xb z?a`=jP5VDur&-?a+1LC@J1jGnW0o;X`{oSmPOIVNF>9PenYIjD{1A><6Ge*k8qmfp z`z#|Czje-XYje(Pe#?YqBt8$I+IpL6v)+Dr%rarUw>fLG5hQyz7g`OLX=|VL0pv82 zw9|6cdYr|Ftqa!d%~mV19NS#>Y6XSOy!G14W3N_NA6R-UQ*hn)@-Wq>yo&jXS215^ z>xigdOuP8{G@gR(an=^m$IandK0+?cJL(rmGQU(FJ=PbgJXwySPAL_$P4sSajAe#; zYMI(xxj7zaWOEWNSE`4WE$C^dlGX>CQ(o!VoVq#n)e6wK*dvzX5^I4^xRz75ujeKZ zQ6Rm?AxNaKw0OZ1zN!5sb8%nsVDXMk`!=mEo=lp5$tF@ZIbO}&WP`9|lUbx#_)QLw z>;j6dc;}|x;#o*Pys3mqmsnz`HcL#>{HEce>lSPAHINi6^~IBr>VYMGQ~Rcp#5J2b zEp{4zHM97DrOeV+e7d;L;(a-Zf+fjPnKW-n0sctwAxnI57tlbT@+#&lU0J?T?o7X! zcJcLTJO#e3I9>G7lDd?S)H~`|ak}W2%A?2nBIY8MB-1ISVz!CiSu$QSQ%@m9hb0Tb z)0P}su1pV5NyWloKV3S}1C3TS`|^F@r{>&LX!I?x4Jlr zkp-8u;LSY&{b6L741@l^BCs6G+aISriU= zeMomfxEc%WBp{LQZKBc`V!+ZOQj}O^_yibTwCWSd%NX|}%`ykRJgKo|?Kj)m*u$n)lx5;oX23;`fUjbv8}{(`RO z%@pXJ6#6AlXe*cv>SCIZLJR2FcxvOBjpsI=VH#>S)D(0{=%%>w{KktLFK@hpmiNvF zMw!xYteCgqLkuHh%Oht*h%Kja5jPGga#?o!SC1*-(C$sMW}`XYG-sL(Uu|wP&9cyF zxur= zD<@Y@=3mIa0K5hX6xxh;Ow$|cWnEMc)e_VJp~H9)(%Q^*8|>yflVFN8HLM(jyEc#Hewdft!*n=* zI_h-Z!~FLANBPO7qsG4c(JxLI`zU}MlZ-l@KPrM!TYgVaSAHhkO*1V49Uw6ToOa_* zs>^gD|CnhT#0QNBOs9-{L@i&OShlyY-W`It<3Uz*_}UYfX881%T;*#imkIg`}l=nNJ-)#eBuxW*DivmwRzB zos$=Jdi|C4+j8>YdWGGUg&V>RL7GURvGrFXuCKpBxj~@(+*=ft+SZo^bc1^elmHw&z4;!R&_)qF5;@P`0AKM}I z8lLvHxrKYM!#S&qqyMd`qtA@yKF+3;g-Z~BNGUjdp^b9c^*+6#yL$FEj=r2-S$u)L zF{KxnUhPz_uX zjpGJ(3VdJU((9L*Oh2XLY<8Vs6tqw+zo!i{7nomELpqabWAS%b{1A%|uy)c%pRbbB z^dEgl2eLrE|BL>P9p7hqrWShsKWAqGUqzAa|LUsldvC~1Km-H~5CH)rVt}v&F)BvP zgb*Ywq9O`Nh9x4K$l%WSfX67q;4;c%a6@GPk;eckGRPVkQDhLK0wUWWW)Kh&5y`!; z&bQh;`TzgVH~v3-_|?g&Q>RXyI<<6nbzeAAsvm8y1wBj9_PyA7k9x`CN}_Z=xhK)E zUeK&Wj}qEXg9OX+?l>0+0UF>HG1|#7QwxyZ~$6E!R zE~vAdyqwY1Dkzn{5N)b)aI?qjM7oEQy;%IRMJeWCrOfgSb!biv>$kqllGT2B)+ z4+NtuXC0g?1*54*_JXhczuB^*(7Dd?~zi=DRY_S{0+=B zcZ(i5pJ_RET$rKqo~`~5v&G7<_P?;4O=hvh6=sDkJI5@w^dC7r`>A=&Vs9f)-4#zK zl{;JM$w|{8a*j|hl4~7vi{50>~6aLfM>h~U&TD)1v%!B`d@U7$~ zd0uWDy+-&#>sCRCf7?$+K3Wm-E5qd2_4G5=MGoN$mN7`Ge&!E`m>py0^iZ`WuTM z5__K!V~+`6ziFPg_$bl7*4P=_Zy?%&X9aB>3LXIOg8w8oJT2P1bs}$?W9M8Wqhr1K ztJRQZT1qbnnp|^%rN4o`5j<;TmV42>V)1o!-f!0{sokQ##@G?6FEejj|JMxOWbLbO zXRxKwTUq^kGvCV0$r^2S$tu9R8iv`}?hIsxYyn*)vvklMP6u!RWjQ}&d(>iN4)iBr z8&(14f3q?vK5Pd)5X=L=LgpxXo}$z#_>-YmK=VG0$)Uz|%;yzO4=eRrICG$PpyxQ8 zXA=dIE9kvJ*)p&TWeeQ8Bc=3dp`)}>U&^Yn#OXw`1WWdldl0N0mbIFrO~|c;{}5#> z1cSzj$+qk(g8p1V{UvysHSsM$GX}}4uz8BC`?^?Uy!R;OR??0l<2Mv9`5UpPl(Ju; ze-HBWWhY=~H_81LyaHs^_AhpQ2PaN@>!NuHdd_0Q&Ga2>XtYe)72F}{f0E2+C6%-C z6QvfvNNB&C*kcxhXI<~$|96q>2xo`9N2Xg~+e$$_1Nv@oGFSlrAasfBZFH5OU1jC{ zf;^#(hV!kKN!Rfj!v5^+*m^fNq;N7z`I!9RQ5{^$URDptLdr3wBiu4 zcSz)e=kVwL&^GsWglKc$i5LR^VbSI_C3hRzw&Blw^t45ilXm{gdkcK2oJ2>ZiGy5vS)LtB40X0ds<>v#AUqVp^0rL2dUS-U#28YOqh*X4g%d^D8K*l@XmfrE+rN63} zbN&%Vi0Ge5?l_0+Y2$e84DHII#%$dfUrDPOp?0p2mez8)(4EQUDoj6t=EYzJp6Lp1 zMsg`Qn_gRi{6lV@fkUqDiU;Nsfg5Sdci6+6Z+E=US&ZAO2QRT$FxgPh?tyv9){c9j z?GA&*%_t?sukix?_xMT!D4xv&Fcw%hs1UlG5?piR5 zQkRnZB=jg`K7!K{&S*Ga!l?mW2tA!#C*$;ALtPWld=#suVh>hDs4JKWJ&028!?^;w zA^hQRIzjh={|fjFd>_qN=&ylZ06hYH3v7-J_kum)>;kjVc|LkRrECXe(562CvCTgY z=7Sd^xd{9LP6;>{Oh>2dku$V+Ec!1ew+Hl}$=w3ydvGJz0G(J8^n;TErw;Tc!BqM; zr7uYDrw|D-YKf8?-GByss}s3 zb8NU5>u55 zp#Mzn7C7I78^H$X#FC(&>r?s&v@=o}W50}ftc=;IjM=G-8BF*oXsCm>O@gWPa!OyJ zQ;4M$;wpw!Q5Q?Eh)gPUbOW{1FFFDJIq3Xp;L|$48?8XzzYRpv&^mnxdKG0?BT0Xm zV@RUe5K&$)_6B_CAb5v8Pk&bM1MHo0*-bTq!~M7DW6HPkf$%}23nD)wMigt~&6(1R%TKAbC{ z8^RwBrxSD^_^*J^!1vLNh5j1o1<)fvuD1N<*l;h{6V5I$8=dE)=TpjdKn8940}$K% z<6u5`A(D&0AK;XLbHQ|Ux*j=0d&i>xa&mh>|C!t^aJ~l{pbZ;>esEIY)Pde4m`cy4 z^abhn6k;HT{wTT84QRltIsyGT=)7UzA8^-k*nqr$8;GRAHqCW`Sw-2^NaAgC3`sN_ z;=%3}?T#f;PwvLsz2b8Aip$xRv4>%Qc*<|cF7dGJQbNAGpU~CqB+Uu-imTyIw=zfI z)DX0L#Y*;ymFyKO*(+AESFB{OSjk?olD%Rjd&NrjibB_P`_gc~S|s~wc}Ae;37UG) z+rVYu3_))yxp{DQLeB)V;B)~Oz=;d`ZQztsHX+Yb^Z>iN_q$jm&jPWpOy;UBEu-=O$CABauA{BZL9SS9u9bbb&z($tT5K>m_^lq2m9%bk z$QKWn&=QX%X zE4+6v-Y7?p0*k<0WIUn072pDJ2iT8T%0cE<qT8pQI_SZq*OKyKb9jBHfczdDLWj497 zBa!2`A&PRKYq|M^c>WxjhvN8tp~|I!^}AG6Q5| zl{`Zkjy)P}8Q2hW^9gPA@y`tWJVg8x!=C6ok%?eQOp8q9En@Xm!Pt1=M6VD!_yTN2 zdk2RCSot?GI_5CauVm+coy5P;b_TYnF9#>VDQDgJ zm|8x9Gl-bX06!CL`VG8Y8T{VXTg3CwTuLQ`V`tajbH_t!e~{WMMNe{--br6u3;hX# z!4&AN;3_x^!Q-@IwV*jn?gN6+A>^(B>%cDp=YqB1cLyIuegX7oa`&UHK=vVKu$+7_ zc|!Zm;b+3%<7$L{L}cuWHisDfZ-FJ?TJQuoQ&8^&eE$3q-A1AjNcGeWsPeAv_t83BxBCY!x`2)yzhrUtnhDDxa=P*j<@Zck{Gsq?P zS*-0BG_W$)!TD6=gM%{rS+E4>-Y(yQ z_H&(wg%hnMr6L*3?MFnLZh~YZ!N_^CyY}5$L%U2qJ@PQ}$DC%ffmYYB{J%*nte5Ju zhbhAHb#nI`pLe8}51}VBD4-XFzDY_&hNH6?^a80jc*mUzpm*pme>T0=Sz2Kh(UyFv z%g+}Z%rH2Osds!}Ievg-30Mz&8|)*f7ZOn;kSrAqK6jh_=IFd%Xz!aqo`m)k+RiiI z$<-X=$d%0&3_kYl+!#C}I<4pB>B(clH;>V}&W;wHW(L@Sy7J|lSpG9;9wj#Dg!V2MTF#sHQHV<6Tr?`@&oc!QdclcR(XFeHTI*_cv_K; zB@KfQq?DA69H5P7K*nZpIepiI{_X4A7>i7lp7p925LErWN+r5 z&B)vYeIW85Hg`F@k+)?e`kSN|YAlyhDSbsIc9~!bkrrJ+ysZ>Wc}FmoFBsWJ?jo!m zC-OCxBhyzrU^Q5bGUo?b!EN}&`q`ur8#9Ds*A9zj31g7e++NF^Vjh##_6FHa1xLhJ zc04v@&64qTpP*S0!2B(Nk#6YU|e#+CL8G12imx zX8-9OWdC^=Rqx)Od^4%lWIR;P-Iy$lVD&6U?IQQTRik7r>9h;l!7hfImRctAx&n9*#_HdHSI9 z-5D@JwH?j?^b{ad45tfE(5^;uJ{o4BtqWL;d=Bz0kXg_3@&0h0fK%ztC{ng*C@E!g z1x+S&26ZXuvB>1|)Vm0o9QX&(_8v8sgqD1bg=6rNa1uOCTSkqQ=v;vPv(WYgdbV&H z;X%r-cG{5f(O=*BA5MMeC3NOHKR_>X=jE_13(XNY=Y#DjMSD#^EiX~;0XX+SUj&|y zWCr}Vz$>YRUiLWSXEubTghtZGGo~(O-$DP_q`iXEe}bNfhJNHO0^dZ#WO7U4lp|A) z4R~04cy9%`0NerpR`4=P)rQ{)+gxAMYo;aWyitH8J~Trqd&IS!8s7n1gQJj)VHKxY z)OYY}fxn}!z_kULN$9B$DmYDDyrCyeJmB%PS6@PI1sZtDrlZ8_3HX*FoP)TU-n?ro1E23&}lnWOIeX%o9Ao zI2uMh3>_qsSz0u9FVGe#M1pC781ph(oKL#$xo<%(C=M0HAmYywi==_j; znOS!(GsX+drJVG`p106^xtlq|89;D_8$sYL;78zR$iIQLMPVeo!2Bcl9k~yNbF$F4 z%XdiqiN0Ko-tHohrwr@3ue;7YrRCXiGP+Y{>8SiR$oAMH7Wai{dq=$%8_3ydp$}CZ zl->`z%giR{qRmX+p*s{=FR?0Tn7u)qWG>*;^kz9VZDaT>t&=;nk8;L)UqtTN?v504 z3Rk}9c|5t);+t}Q%xmGEU-P>a%A3U<;{njEp=*O>a0Y?%!8gE@oO!FoQ}4x~wci^Z z_?BKC*=KPQxICIEG`Kv{1b!3vdGPa~yFzzGrVTP}pyxr)gMJoT?msl}cM1mg$=n;c zRp`jyK}TN%4o2olP=4w2c#t7_g7x4@bne14H$xu-KS%O?@bB0*MCj;XN(};UBUkR< z&gG=R)8O1ld!fO(@?Bv|3(k$!5*nNP|WwU(H)^o3wsDHY_%=nL^fK{+{T zC07eZ#Y=o$*<0eD6gu(&w%Og9I!wFHL@$OvAHMX$VdD8rGz#WY*A(d&XItb2dbWVR zyA@1>--o_C2B!-$71)puz1PxPWdG@H;e^SS;4c<`FYLq93)n-9k>S|i?sFIU5HvYZy zWGr}d8IT&@w+HxW6l)Ko^F zH;6co3&-+DTDpcWZRsB5fxi=v$(XhA)>leJWOW-P=Y_n5GKzImU(PTz4Q2{PdP2Vs zeK)uX&L2RDxr1?*Ya3elU2IpJ+jekhi0&|MoN^<4yaZ@DUG=CDl z{}Ozs;VX+3PJ`bH{zm9apf^E(3;i{<1dPN&(H88JULf)h`(pWE{iV?22R&HMKU@BC z=n2p(pyf9Lmiuzo;yjt_yg3nhD`c-kp!X#!&T%C@(wg52JD!{-w4kN?N?Gu@^V~i=GFe{|L(2t>aaUh2;03^y%?L7WAXg^`I|<)-rw* z%`F~Gv|_i@89Xj18Z3PPECuVqZx0;@?G?KBBzE2lJ}I?Wj0y*w4gc?=$GZi(7<^r< zvV3=SBdhiki8JVwd#ZaAU%WA?|3X-2C?5b^d(I0|a zL7Btv2j`1D*3Kr>Rf^71YVQn3d>a!Pzl~_K*O=0x-z9A?c;_b;aP1&xGQGqMXc>JK z$W&nAetL7V$Xm2)kjmqYsuoF^IY%K`An*9uU4oK0Oo-nK$nBn#vwzDIchg2$^+qS; zZom~unT^*=4A`C6S{dm{dGl*h!p>KE5V_wHA;*&)i5cdxWE^@22rZJ97Cnm-&s%)8 z>P2E(?!aFlKDU}9^l}A#WTRJcHeM~~bRQ?}y>$65YLfG`-XPvw<20{#b(rh0o$QUF zF9AOVIZLlzg5Chz8>#L|y@$Q)WRS>-o zT!`lN&|Apm%{zT7G;c|m&7se&g@!ZRCJAx^KZrvA0U1spC+VFe-cE3K-L}h?P4E_* zHwyjZDfL%yDo8JwSHN6OGIMIw>pMc0DqjN>ZF>PELU4T@QOzqqq|#$SLk5?=`4}A$^8;mh-EvK&(nG4Sn92 zINXfK1WUoag8Cw`g`n@wv40|89u3^PC!C=6e+zOZ*5|9J{;DwkWykdf+CD|k6a13& z7OBxj^=7U;Wj_2o9C1&vD#^KAdeE*xf{jBw!w5aYc##%GpchihEYW5)Y(|4cTV@(# zWEx{_8u34k5ju^rHVtji+@o-B+&qi@&p@vQIg742v#q|M7x?n6KPij~iLnpy3_WFr zLBAhHh{V8+$ZvyBoG0D|Ik%r+R3`{s z8KH(TYZ%?yjffk-vG5sLnvvzB*|_&^n2|JN%`hkUuY$~D0Uq#qcg9e!y$Th~3rCzh z1J(5G7JBm)dh-eBT*0%vb@uA7p)6P@n=AQ2wOs+}$zmGqBT z+`zlW$Kia7WFyWsZI@@SYCAjpeez6JHI}=zsw=;y(F&~Nepv&);<{MLyJ?p519${Z z9cVcR`<%Rgs($dBDmf(rUtI=L%8qY2QIkh}HUq`}4HCC@e0^n598DM|gpUwBL4z+A z+*y3F1b250?k*{b{L%uE0 zZS(KF{w>$cjaYcz({{?V$w0m_Kt0_OcW^Tszj+8!OBw1tY}$Qxqh*` z>b727rAVnZ%E}@(uTgjDs=NrHaBbJ4kyu_HXnyzn;Z#DOqdt=6?@lZwdeC;#aIBB=No2y${g`Ms<^!AkWM;SQ11kyNY?3^U)!K#e3C4&0#AiRHmFQ8v zH{})O#z(266vEVw=7qo?EEt|j+mIi0P0t4Y74YD@` zt9E_e=k8*JIrc{BN{#cfQ>&7dYWjKP>Zrx#_7#SIcK<$lG<)@Rvcag%$?c=LH*~ft zuNORaVd~YrtJ@@((cqGf-_ZvydJ5bNOfE$0O8bXrZJKwBfi4izN}3~yYw?$CSf2ZF z;A5yDWRh^BUydZfC_Q7rER?`%uoQJW zW^jKXWq^CgeK4l@!IHqzcBZWeU6Lq)i~1DOFkneEOFu(Ds|J3#uDI^F?m9F*#4MbY zH^|+|_Ltwt?3%T#q%&AfX{dc_e-%&R8gV-myQ&1ntG6|1S?JX}{@sX}e%DN&Fq6no zuzg({5W`onQJOKf8kJ(gZ)?+*v$^?%cdV|^sD0AVv~sutmJ*P)4mm_HYU?Yi#BaZ@ zdo<#kE?RzBw-_e<`ud`nI)OgR-OD+b;Imd_+xNKAmKD3mB_wP9`}$4--%e0L1_OG0|cIypa6J7#&#!z^18d|1Z{k_74Rx1OC( z(CDTUX{#yH$a1$eu(HUG>h9pcBpx1vR8Vs0b#+^69Tff!lU|TAfnAQLyCt+@B*0_G zwH-t4pxZkh71febIVB?{%junbEwL-TN)VaT3b<=*!xdb0s5N~hS!=LX)1v1na&bC< z9bt|)$)c~<(b-a$a-`O+k)gltg?<9;N$UFRrtuhz{hYPZ{_}hbR@8ZZ3~Ij%fLVjj z5A?M1rH__LI&Z$`Fyd4Dw2g8v+VTx2ogRl+zOasC&Q1xvTxNQAvsHO_(@j*r?6uzB z>EISy_caJG-sz{R2k%a{G`tlsch-(7_zo1{@>M6;H?H_JcG_LNZoP;dTBKOu`&t$@ z3H3BDzP_6H)ny`Ik!kQPFsbK1FZnOQsd01hy5*GNd$HcuSbcu7J!z(={bvh@o68N zppxzCbC>By#Ix&UhUW9kZXlKhug8qjY~Mn{l5bZsT=jFaN4$-~Oll1CglbhyWhjjj zB&rf~QmzYEogOYl?9&6&8U@t}%wb(3kJ{IAGey&CTt4&4_HkW=dU9=4j~X+J`PPyt z;u}p}9>BJR*T#P7YDynqTegdo3&NrGbX1{CK}N-OyhZEFF_7T}j%#S#6s5rn3#q5{xC%=-^;>~NbTBC| z9(c#&Ag=m*Oy(!hB|0fD0eEMX)mT0#`+@m->~M->1DnlU^zHfc(X_)5(CEKY07ROdx>bU?GYNmwom;E@+IZrA)XVS2u=MOP9s^<_AtLB@~b)!;_ z>|3jTE1sBsYKsmg;&{k_cX z*L%JzB2^P%KTY%de%ewH7F#XaevW3rlu*?7H%{air`iV2WP-=t{3#Z>@7$={yG^U<@7BYAQgvac3)`OajI$2mKGZwHq3v^>>1rlIx3O0aq= zi|X8CQbm}zAev?=9dL{0x1pw_x3glX?3N+Qb%`Z%stR%DAZ}lkX`fft>+LXzbKh1d zME$#_$^`m+=zngp(7c#CPUjpC?vg*YcdpJIYo2osU~g7@q%kf0=%ZXwXKIIKSu2tA zS;}W+o)LJcVw~muee_)~AUPE2dht@P1i;&uq2j76V74@uN+>?@b4ZRj zW?r#vZxJ|vXIt&keo9cXpF@C@O-!>L$x`&D2=X870 zZp^hK8i9iPlWv#M$}8+DnhmcDto_9Km9v>nN+Ble>Y4W$m+3Ac$HC_u`}Oqg!gDr; zuhaJStvBbWLBr?rrK4nWns?|mVgEHIv*7B>D~Mb{U~<~>E?)o5*#&m8>{FcL7d>%y zo0C~GA}C?b_1322+vn`^&ZpxOJrQdDf+whf?7GqdBJai~7F0lUUFqJ*xe4=9zb}w~ zP&0a`#^F1izfgZ#Tyu7rsDCrz7I-1fnth-t85qneaBh0>yW-_TqHEov=aDead!f-F zX_!u~?u!f~z4o{<8uVoxdz|1BwfhNe}M+d!Ob zvn&TGH=>E$qAu=kT}EU7E(;;B6wh!p%TKc*WmOqd<>(vZ ztRGi-8-RI+XekxizCo(0vU#1`%B3jiDF757DE?=N4*j1&a)K9wmG-^p1IG7Q)=yip z&JzT~y!)B|iQuR!=`Ol%l$<&5jWui>-<`G}H*N^A_{?*Ny~r;f&dyKj=|OaSztKRY zoYFI?_lL!t(sZd8hohXz*XZs>0xwGi=q5)ZF2g&RyAw7>b9PuRxmW8*_}Ac;jyc@2VR_>)C>X@ygHl^ zcH$*_Q@==LRNkoyr=AK~@(@QumXrdvg>V0U$ku-w7?a8}RcB3g{Y>?*V@!lLwl>z4vY(X*XDUDV@*;|0X>#x7ct>Qqp0gT@D#(P>=9+%r! z#QLlZ7CirM%JldCp@b~*q`pt4j-^9A6%!VNdALaRm!;StRm4jSb6&)Pn^P%$A;f}P z|JXuAh{tB7LL9!17`15e4jJKuun`YBeI5GiT#prj;FX~@U1jE!I%-6YbTv1%ORS!@ zPi8o#L|dP4${(^$tZ6;IBI~+T0c0;X;mPE-u7V1f%hSHT>>;1V>^Rfjq{`hWwt1M?q*dF_|E@}Fxs59@uFmVgxwM*T#>^OCP>krP9&^@f_Ri2Zr znwUOv4DY=gx~@7+k{1Hv`=gtOk(&qnCk7se;RjtO!IaEN>iw&v<8!m5Rm$xmOKA{* zjP)3Kr_W^AxbExmX2GRW-R}0Kqw=NH0~K#w^@)t*<@X2jfzg;937mMc(HJ@rjQBuW z#t(mtk?n=Thc@dN)aD2d~ZGES8@(XN~f13gOaU zK=@(zi|22YcNV+_7-R5^h9fkc!#&zg( z#4{?cn%ELe1Z1m>2UlZP%@eGurifemyR4Lc<|n-pwX&3&lv@6fnyFfvG=#nk1(a7- zR;H@0rZImg^}cH_WG`zflT(1Sl`$u&p{sodYXjBfAemMW?HP`;N-LRNHHrDSY&9wR zF#1xHB-u$wb{UPD>ia+i*1u8mp;fw3c{xCwH@GR0w(=(wW-0q+1yEBDoHqnZ6_w(Y zh8=vEKjZQC@Il^jG)RAM}D!I>*Se3sPzlxvE3C#(WcJ|@oxjJlR@*Exf&SG_S@*XOgkawfucXf2) z+F-S<5@!*M}Tu2X^1{Qzb5${T@)=(ce3+_UoKm5vTm3C7QP zsWY+WM(GX{3-7X&<>`)26Wyd|k>s^X7;hX$cy~*yReB)8FPY);Vvkc&E?AIml?{jj z8E;h9Am<;;GtQEjEGn9?kHPrC_%pfxw*DCt66=%d%jdN8;wEm^PbUa`>&9`A@VOFZJ*1C)(-?2;ufb4>*bOFp6l zqcF|RUUO^|gFw!opD}n5A+S=|)7mI_9XL zp{HXtsOy^MDZ#QpXgx2dUBw_)7iw7U5873>E({m1=~ zVNudOz9HWJO!A7ca(aI0K26#c$Seu*ZdOrEPAuBBP3v`MwRGx`O;OoFYyD9bYrXTa zRm(1=eb?7hlQgAd*V9wWm&qPVbo9kj2b3Q^tT0!8l>&{zO4Qzzb(J2{Cw{2h~_5ZalDpzNXnt% zS-bOSCmAuTL*A<-@~VPylhY}kx3ZT(cQwjgk2@n{bbNcy^{PE+4a<(MIZ|h$a`RhT z(t4SlYjd&AYUMGPOGX>hdURX$t0d;k_nWUEc|Ul5oyoi0i=hH~nUwlM!E=nHi zpFLkG{L;Ed4EF7>o9p&4f30B8=?m{O9d!JjSep1n#!@}beVKy8(=J#?v zi$L z6(d37%K^#oQ=h%kCvy zCq_~^vX2+SqdIE(?KjR!F3wXXT1^t#rB%h6HpLpSV$Gvs%}2$WV8t47#hO9Inr~C( z#Z%>GQ{{V8<#MR2Hfl z7OLE(D(^Kl4oI{e*sdmM@Y{k60T+z;4(ev*?;O{|#{wO!UP;P=yZURw!KH(l= z;y!+&=Y*rbW>d8Qs9JnhwO~~}z%ErpQMLGFEl*BJj|!F8`FV-_5cvE9Bjx7~&qGiq zW69`%Q>!l1V!eV*T>FlorzB}Y$quills-^{*Lni8f>%t-xeP*BmRweFR6bbNYE`*X zK2eqdmbg()nBxS>jH^W4^XcY=mo*;AG>V-ndhL+Edi}^!G@nDfNop(ZQu9+1D(f!m z=I>RKhhFTcsg1WrB<%^7WT}YHZ)tunfy^rFePVGfBH9nu+ZaEDox=77Hw6y_j|9&I z4+T#Jj|I=W4!Tadj=Ije4!cgd95Py%)-c*)&Z?1)R6*K)#Wa5=X0EO&I%Vw_+i!e* zG|3iAULdcsepTI521nJ`i;o76I-0J^ZyK(z8m<&&f&37@sqE%FkZT_3CKq&*2SU#U zq3403azRmfAh}$STpnmV7c`y+V#)e1{%Z_j{jB?Mtogas8dN-CA+KM z0{vD!h4t^=!nv)}NOfJtYpc_I^}~GiGpe5>POKMqUBkaa2Ka3=xy<@?RRMB{5F*>6 z7ngYES@-MunwC(fi0AxLS~=vzjLS=!a7AQ#xn0(n`t;|xt8<$3np2jCj9uXe?k32D zaNS(}1iwv=Gq}zNb~td0*cq_e(04=Ml=CVQEkr()6SvI*z0la<`NZ25LA>!j`kZno z3F-)R!ZG3R954Cu1i(ASj<|^$cpNY$8#I3TSsTM{e0Ep6gh{~mcC2|qXpCpQz-bGF;R+V<2YNaK}yxy65d}Zxskm?cBW?<5^fmvC}}M z59xXky?5by{Y~;zLGn^auI>BBbnGy$dufB+GcGO1)QR=V;^ZGG>=-F+gg&&>B>`GO z=_gl>dk##wV@LRp3%4jsG7 zLFN({1wx~0Ia5{v4zA;6;j30;E@`{^xV}H<2Fw32u__M&vkFjl_@jjQA-@HZURime zA4t6v!9*vI>K_@YAHALfuLJygyQNvov6sgP37mBuc_w}|sg?4jJ*eCiND$+LU>(!t zj81DT+qB*Opa@5bu>0zoeFxI2?X_1LzaWLihnDe^s0reDURcDVqYW$i_Wgl{f$vVj z9!aI?Uk+Rd;gGcxDK3PqamVB7pt>U5pq}tnz*mJ}mMHDQy02Zttp^tUVs_PSZ-n2c z|BRUvqkc(R{bSx+9<(70y>;W!=E z@c`r{-+V90?`rHiN{{BPdqP>B`S3RJ$N9epkC4eZ!_1-!PP)-IGuD_$WU<>&2qThn zCuiXv&-b)98MAlq==p!;!F|kOue}>NIpkUsy#hfS3NypwUUuYS6{1}Wla!N_%fX-vmKbj@m#MlMc1j1+qs0D(o)62gGjS!2~dE~@G ze!X-*3Ox!vxIgE-7HQGOk2o@JYw=Z0nTk1#e{|H77Rr-3rg0^BNn|e1 zS=hbiXzTD**O;0-41e^@Dm9o&x{he8^Oe$=W;rhVO2ll}IgSLHA`ETIL&5#`TE%pF zoXMBcC9}Wae(dE!dTtM^hS|e}I4$#vni^-Kqh~Mp3b9=@+gE0_&1aWgF?_1KFextv z`U|{2yiuGvJXa^%4vYg2CsWogH_bFc^|PS#|Z|#~7cfZU{Fu1SdFYME~$~h{_dd7j=t(oULx(p_1AIUwDu{nMv?kVJvDc@hU#oa-7``D#M`aSgF44Phql)k z9w8llurKGS?j!uCSvM1&DV+>3ZW#Kx#5s+9b@QCgZsqNQ=W!=G%*?*Ld0=(V_Rh_N zzf%upXP?u&!GAz<6YWLQkpLq&?{J@gT4~?YyX(5?y6U>~y?s4;*;>D}1N&Xrd8Kqr z-k+%Mw=;6cbbkhon%bHztPKhBWgZvva^|RLT&Vv(@4}d+bjfb6bBSv%d5}M0_c~RB zW#?IUB$e2EcqRL8RepGp^()#xu||KFqN4uVm(4(IG7P3kS32G0;2X|J;to_UkU~+z&eFtoMqPH%aH7^EQ2aO zY$CF`A1U+-Rlc)H$>xh2ho_204REqWrH2w2e+1&z_cL03+Y9BL(;dUUDh<*E;3>+~ zN;2lF8;5C%Rt~V&My`Y=8B;gnmJe82(JX{FzLQztA43A~mA$1%2ENsX@r5xNqq^d) z_H!LkxP_7=Qn`ic&8eMy@hZ(&qPbOacN8YhHF1BQXWMK}Ind6Usn?}+%t!BRo1D|vsC%tjU#CX`~9sj&t5?KIv*r?G% zVV2&r9!6vK%LZ>4_Km*#)q^_q_g4MgKrfo*{NEk{&J$+4R6}i}^y0|s;Yp&1OU~FW zjhEG)XCAk6lgoZIKR_N>UdO7pbC&<+wNA?Gmv#2*Sy)W$_4;8i1kbA;ZrvN6_WkaQ z;+=Ow=j~qijGcHl>(VCKXfwf&b>|pcm7GNhp0~XpVA=Ue9Z5x$9UwV;4+e=853k^^ ztx5r(@zr{ltY#FKz~=n}413%|d{}mgfu~I2#sS$$yRzi1HZ_iyZDwde%8w5zVz_n@ zttaie9q;LH?fKqk-X(YEFx`{(Rx!KVbpZ;@r?bv2{oC~p3YI53!MGS7?r!L0myRNi z$p#Y@O6@rwUeL08L@32cyO@~L?Ycrg%}M*u{;#*|wZ@E3XFP1tK6lO+yiaHNTd23| zVa60sXC`cEKJI0yBVGJ@vgR9EbY^wu6L|H@?)%~I?YJ87zFiM8CV#3*qgmHx#Fbfg zPl?z)X)o`mzg-6!qd%ST)kgcc2QK~TYFDx`*;r@fsz0~G)me6LjyOGO=O2*2U0*lm zemc{yP4RK>UYhLkQY1Fn05M|JpOaz_Ex9X%VxP2^^wZt0*KfTy(9<#7=PtiRvU9-H zF-82P4|%NG}Cvk4qBYC-fg^Hd4A>4{O*e1Ty+** zg~@Sja?jCWpYf(4sIOCPeZpbe>89^h9k@7syyJS?<{>rqx_tgfa~Vb&BRtBIeQsFi zNczCB@=u>VrzZuHzKGywa0MIK(C9qtI3I1uwgs*j3XE{n+c_u%H)&$*3^J*%r_MUM zPmtpB_Sqk;JTmD?bXOi9f!n(5{_Or^N$kyuRY=}$sH&sS0MhqL(_DQk8*{PLi-?1g z6lo2qpf0LJSx9?MxB`kk&V)N?bEo4=jt*Ex(Sg#ebv*b;L#}FFR;Bk&X|7&TM+ImsydqPZ<qpqNOl?{1ZKF<=@ayr4k|w$@y68;srZix610vj2l`6=lQ_NN8U{8#=@j16|mz8w-UPym~<@9 zX5wyFqaQskTk3$@5pR+_uA&NQ;DYh#q~At*LM(BZQK$Sms^aD;#r)LB6wLuIr%`Kg$kl2+>eN?N1tvGET_hQ?xA zhH%vS-i?ZrwD|WSN|$DDfLOZz*4!|;^YZdGp~gYgj9PDqHsbz^!P5edHL>R{trw1E zN&9Tp^Zm$05*^Xg56qEh>u##5m!ZG>MbF2tuHfG8!wutc4&VRmF@bq+hdKvL3{l;@ zec0F)VYNQz`#v$sMqTVI%2LPd`&W^(st?kFC0 z5iJHvSCXfCa255NoSeey@t7?kvx+19QM)YQR0TXDr z3TL&-Iu~kN@OjZYZ*Y$u1!(k6*D9wK6otoazA7*m@UBQA)5P?>a;XWWHa|!^I0h__j zbWC+_IvSd>XG!n+Y|GlW3ER8utp@tdw){DI3ssiQ%}7g!xAadnFInLlh-#i{I#uk6YoRT?jyl^DLoZl43|&9G zlkSTzI=3W-SVA`l{CHoR6|)r~ia_R8!MsUP8BwqA1~i(;p4cN)bCMPrQ$j|fz2UzD zk>8;oJbo>@E$S^lJq$gRJ>>2!?vpb%@thc1T-T_$2eS6w2gSB#&?)W(R_CKWdvlAK zBhh}v9Y^y?xU*MX?HNSkGA)Kiu5}ETG$-Krneb$hEgt3F2m#+kf&J_M8hpr2yDz+ciqO8_|^p^~w207?WC94Kw95i!jQT3-MRBI*GZXt8R5a$$8us8#Gdpd7&j9ZDDr zgs;OhVS=u}Eq|)}V)E19=EL%Tb#%g9fi@qPi2*voP5w5>v6TQFk*1GOu2@^Z>IV~k zs9WqQd>w)b5;Pia8MzMI#N7V`ei@;TM))@11aX-N@FaZu>jX9S1@I(tiv)#_MF1du z*a1LAVguowKJ9#l=E3ozIep!6@F#}n{oq6;934Q6$V&(q5{~{wj2gQQ7!rv_f+ELa z186?%P(h_)6X2atc5t8&I9_xo!W|d?On6=dr*Fa&0hx%rM1XzaiC>whu~&e7kqIOy zVk{~E|HBRi^j&5M-U)dJ3t9x%isnSH+ufOkUNL4hX0wW2uT?pUcC7YH^g z<*fXAoLlP|Ect4!7dTD@5(fKUL!}+MGmI--(YeIOKn~vFwF|%{S!Mh}X32Fp2$C{p zp}zkd5(HCONSM%{6VCE809}MIfD3vv9s3P_2B(ltau&|= z;|yA%mOm$wCB}?^u(p2#oaGk)lZbXe16r&)pi)>HQPMhg0Z@rh`0iyD%LPA!SI8u} z3TKHlgHfpG-+*L^IU^{{=kEe{_!&SV!WZCz7Ap_P66QmcG>@GCWFZuyO5(>d!^i*k zZa4rvk+uLA^jJHLhPA6G)I zIA(!3CX&@P>;H-l|NH*`S@e%D))jF4!2|>a$KJr#!J8mJgW(?FcaUPqKI}-ul8N}D z#qtB(h0jc=i`58o{#QpPcq3e*L%HFd5OzL7qu?I!c64Ix5q9`v&xN~CV>1BUB6c64 zOtCtEW?{yWEFjnObp#^n!G%P#af}#6YlM~bRvy0fI0(V1(SKj)w z;L3Ps>$-P@;HKLJ)g`SE?(Tv!Vp;F$#p7H&pNhhf0wgim*Xr6A5KQ{He+o6=D_HdN zcl%Gq2VX?cIw?Z)%>QG%j()Gi>YtJc5X@OM$zvIbzNRwNJNs;g(=~o*MBJ(Mq?h8P zLPxJK4`HJgi&?0cHxOSv1Y{L6xJ3AdjZ0Sq*t6Z~S;oQO*DQX=% z?6_MOKG>amEEwCB+?%HjTax8JCNsaVQ+NRgoonPb_OmNLJa84U1CFj-cUO_jWqZz<;fySur5-cu$ zVR=-QOZ3XUUvrhlEc*$gWyWgnet+1bP`vJNgUWdIG&lmf!31{7;H~_mC-;rl=z~CW zDswq&=9X;ii2mwdb4U4HQXFq0y2ynoUvP~Th?a-|o?_%p*i%I5X-A*N-EuvRMa<}* zdL}cy5aXzn5e|nA1xoPoT*az|A3xp#RwGFx`l0Pc#{B}b1I4Q@Iyhg{5U7I0%J>()m4 zSperZ)AC_MMKTj}J1WiD?!rabqPZqn%*#;D+oPrghv}T$!ZhZ?`@tP{`@o|2U=%%0 z1I6T&7xtkH>xwfc`v|T~mj5(;Rp-Fz!B=%EAAeKWxsmv8xVhA+jaqLi&QqqC*35CL zLRhv3Ov216|AMi{y@NuIcr0Fj&ZDsu&ofmLMM3+7aBL8R((mYH8aa5Y7W~}<&`-y^jIK{&f+dG zti7f(axtfZeTYrdHb}iZlH0Q+=B_K$z%tW!mBCVq2`x2jZ#%kHp(TKTDg%{8->{`dF*Hn8IIK>u-LO%GPvr)~$^J z)^R?%euFwlt!A<{(GKt6%l&s9r+gsTMwL(^-XCn9?8)H|+(@64X#Cn~O2ouL>XHc3 z&?;&D*zf$IwRnQKGl0d2So)v)kEaL9f-9@5^l;h@^PNb|(G*97sQs1YSI z@iaMRJf}G5fH*TsD-V=9Qdf7!80Mf93{0}NppVolO*+)+mul59qy&mxX$pIcS)-Atx|NzP*W0v8@h)QCwDu)4h{343;?dnF zKc+J9LDr4%Mi6>P*fZ=mQ~pY_f!6-T4ZG^1w&uH$iqXSFW;H`b^lu-75a7%7EG=qW zwa(!}Ta;b->fvo$;8`jE;Y3@6{EVI}_j=arllk`7%1h7l$VRfTXQftp7c5}lwa)Y$7vPkTe{7jkieBSkzb8m7j`M7oWmNTTv z=Vr#ODBt>9%EX`^!!kQ_%=}S0`E5P=%<>FK;hdca+kEon5^A?!finvRRViducpbRE zWL`@+@4uxHXcgboB(a-;(ppiojPEor2<|{8dndc!%Lj<#qNW2SpPXellO5kum!*d- z=EW~9hHWRk{T#-17MA`w7QED;8)fwTUwy(nST{*FbpLSS=UA-9ez;K`i(0X^$=^|9 z=^6c-#F~-pkd65N7i;~x&+11F1q5TDG$@WFs_{AkyRFe>y-fMqx*3e8!s${~R^PwhT_a2bk6Jm(jNBZlX@E7ft=LC5vp{B%8p)dOv2-OSYR^SA2DWWFDkfqNT(F^gm ztd?tJ^bljUZ|QzS%e$7@2DJ28gI;%ULAmr+b~d)1r@M+InBkggQAhREg+4j9^p2Vx zBpgZfAuujx`=J^s8HAT;6IDs8qePbvQcbj>p`%I!CQ?0Tr^)YLyTP1cLa;k;-|U!( zv-1NL-S3H^h1?U@#gX8*HF0s!iv6YAz3q#U&4Jb@(D(` zr=EeE60=%vO~huz-t)*KX8ovFh{K87m#fH#wP|dwBGO|-Ve|PU! zcOmvf2irRK=fnFJ_lE7cU7(=@g6?Ob#Fv&m<2dq&{d4GiKASPbF{Sb&*3r>IkTGYsZmM?U_V%_|4wW)X>ph?1LE!_l_b zx2`w+&b{YI_S}-=rg5{`3Oz5#jI8S3JKLRLeme=ZtE_Q}TM4VPJN^NR3$JLo93*Lz zYIal#__Dpi2R`q_`*2X>UpuYc*N2~SsoK~fK-)&DUmEn(%eOOvofX`{X6{KDZGlKl zoQ#j9Uq#&5s$c$_ltQ~$ajbDCg_D!T;(8Kv{;i9@6W?oIyw{YojU#I@MuIp9dnI?} zOTr>MUy38~?N;(rzWf-?`pc?MdSlq}>3Y*pdvj<6v&CF{x6+!Z<46@jM6eB;yULiN z3vBJ}m2Yt+p*DF$c$-+?X`l5_UhRoQlmSq+p8a=9pW>$*B-5f{xM_s}fcp{Ys?;B2 z_k;Ow^v?(-s%Sxx4(;R1Z!GT>NS_L#gKG_>oc*DhQ+R{7N? z$b%$5aZYoYTCP;)2?rN*`M;v_aPjCYhChNrdyW;XCUm%i?MiCNcfPsa6+W4`2DYiq zhn`sbKKBR03{GoW_BQe0=nQkbOWC$!(R6K~H#ZRk8fxjgzEO0HgqDGdjOkbG2Mb?Q z(HLu|YC{v+@)(ZIBHfKNsC>=`M8;_wjJ90%luua3@}S>gKz8O zzW(&_8>WMJXt%WLJ&LyNx~m%zY|rzf#MmYL#be-=YUVVj;iS!;gntJuCz7n+E#_Bp z*(CJJ$RVpEt1^pw&qsLu70t*JOnst)zlUK%9#+4~nvzqvbCCt%fdW3SaDPIcDaUQ+ z1FELJ*#bLqHyg*(*0B7qG~iY~06q`^K46c%Qo;q)qKUJA?LYI!_!u*=3CH+Hbh8Qf z6BQibKMjCG-^TaNoNKu!-18be@{w}Af3+mMcM|(ID{{6x&NOZvC@$@U%P6B&sF+Yt za!OQ3y^zph=lG4wIwGv=wPN|Su6%)-2IWBPF0oM+c-m1_Zq=lbydg!pxvSUYfwb?z zanP&>q?f4peO_-tZM%|;lc+=CwfS%_HCR5?J1iWhY+b!}H_g3x((G;HJnZ5tEd*R@ z@uC7thQ{H3{!_$*$qyXH>^?hJbUU_HJ6PsAA5upk`e^8k@foVG@hl|hLKjt zEOZ`OW$hO&8z$*v4b9BI;Qs9|_0gBVPKgA6gT7u~-FnQ$d2SlkF|u+)F8Xy&@@unthJNZO$3+;7`JlQNGog>IH zHXt&qwr++d^S!|abtCNQ6EU$gksRYcbaBpNbBg6WVE<}K~_cJ(bDBt0~F zb~c7kDttW(h>$^qE}w`B;U^9EBRvG0m$~GV#`~J#bz*CGIe3u8rv~Mudz>ON3v9Hn zJb^!Bu3VP3!~QdG%V#G#D|1b$ymKHLJnl^EaiF8wDe%-kQ)#C19Et<&R~C=!G~T#6 zmAhj{{B}wpyCid6=vEuq#qhh0GUWe5u>7&YI39ldxfIL=hw-W@Qf(0b8=0Y2?bCl> ze{&2|}5$oWHeQUu6W#4Hl!|7kq^*(b0M+ zC(s>#|Nb>ffE_wbrWs6M}NXx1l0beI5O2cbq|dI2hkC1wlgT zhcKY}K@1(v}6NxZw@zUgCWM7Bv+=s_g8_&9$PR zN8WPZU44op#WR&L7Nk5q;}aU}XtF9VK*PV<>x;;Ivck}5mn|VO@6Jif^vD9_e z^6t`NSL;gR%aKTKf6gEUcuS91lZxPz&~R2+^GnNVz;H9EFQr^YYG>c#uGy7N9DQfd zgJj}h6U7g=G5Z^MEqr%oJ!7)->*hHr&9jc=1}L-Bfdz$s4_?MDu?F&}a? zMx7sy3OhF_jntkRHavHv`lXDF6N+=a?8}ylab$hcf*}Y0<@kRx@v1J)P?Z@(s0#B? zjkje*kz);2uNx~C%vxUdwvJTZbm}#=*Jl5jMeV(+YyC@zyHe7cxPW<%=f}K0NT#dw zTp`E3B{35J8drkkY}f0ML&lEH-tXHr*CliQ<8r_eLs(yH(Hg1+Vqaa)!)yG@UL!Fn zUKeTbZ|QBeUJo@76Yl1Z8Z{PZ>c()pb5Gyw|3)Diq$v#6W#wwSAY{yC|8k*3oXMIi zIFuV+*HYf?=s$rxU;g&z$rhHi_4xeb#ALa_a89C!XW2Te^49>K=FJ#>wL5`}$gQWA zfUT5G*_YSI{BIldtfl@0ADI*CZffT=D%vv{$Z zgBJ``Z)D~i@|W6;L`7gs1Vei}lV+8=3T~N^?A;-E#xi!j)$V;0dVtjtQ@Up`w){^472hv*Pv8Gyn zXY0CrmYpo=MRXtrTw!iDB)twwek?5jTAh|(B?NR@=^A1p$6K_|c6y;9=~^-9a)><* z}8+Ug$9^BpCU4y$j!QI`hIXUOvzVCI9_osWT+H1}F=B!y&-?BZ%s;bFRNwPa9 zx5V7y%Kdy|W2A02)YVVthg>l0yvGhn;n3xu8cS#iaFtHCtmoTJ=Q&Knw8_!yLmmtV z$0Kfh5LGL&F7<&$U%Zdduf!V<_jE{EW-=-+5iyOmHhklej>Ct5&v9^z>XSc-P%47S zY+~(7*oQ>l)bRtjwUcf6y|VDle+zp&cX#h1aodZ+lUN#4SQ$O}LV`O6cXpwWJTk5@ zrME`2IcrErKrN6V$SYR{WGQlG;;X;AJnGU+z|5!%GF*Tk)E4TR#slR zXG>?$i3pAj8ASi^EE1-AhGaGp7w@Wnsj>q+DcvENy|vUDF?KPMRKEkBrIL@gbEi$0 zinb${@Eh!9KqmkOvey)>n{62;*5z~>O&r7s9xb|ELW^d%d%GLc65@3h*~kW&A65pC zxf++CjJ=B%Tx*Tx4o7!}jL#0C$?F|SSX!oPhq6I%%3(1-h&$5QK?pG_{pfaq^uMFG zaj;^blJhu4dx0s8}wKizP}!-a^>#?k=4zR~2IHX*kF=XM;tRK`~d>%Y?% z!f025@<=+-L{j|(vOXkQzG<~R9|2>&qzr^Dw2auE+}-c^8n~#O%K3rcXAxCV=oyuK zsKI)6Bm#pIq)b%xo_hH`keTzsyf)Y_Np|vN*$(NhqSfW+0GWz4#1Mjn3k|agpCvd@ zDs9OJ4NnYX<0~vkk-3Yw#Pe$nj4;aOlA+owxwKXcb}{2n90nBoe30dvDMaKTM9xa* zcE-+FPLv;Xv`Ucv()+eylt9wJJ5LJfv3OR^4$;E?)_yP1Q@_PFjyTle2veNg;v?%) zUEhBv1vRz5HQHXbiy&d3DK(Bwqukw0PC|ym*e1aVRHovNp0CF?nwgyY<^(B-5qjO6 zOcA$8$&0aadE>Thhdaf~uGmj1#?^2=byFKK)`Y4MI+^@K;KN>XY~Ky$R~~CmKi^wb z8>WPyo?=83uB3Kau2dU3X{(%@e&2v-5rOLT%J5)?-&MHzGU0S!@*E77H?OsHBDkBV z=>%Qm*j`eV9?NYfsJ6Q*YZux`Nxun}ujeG$_V95{XiI)p1b&$$=U`^4t*3L-9n9%Q z`^YJE8x*-vWuN%LbkpR!(GZ^s#PcJ5FgimMK9UZ0^uU+1QvP2lURFQ4%k_cHW(E${ z-uW0RcFP^YhU~-xg6e(N3XQvL?-OFvUNCq2(!4fVm{bt((Yn&xm!Zs?5mpY1n2s=1 z_YW_K*zYHH7xql5He5muv-7y`o|MvuR>nZ#H`DVc`(A~0%QxQ!FMGm4WH$4QMgg2| z7RDU0ZtQEjo|PcOd;6{GXwb-RWlTA6o<~wK2NEWZZCC;XmD3=n<^L?b_gQ#vg}~&# zeun3&Vu94-^75&KR`sGD@4A_=wcGOR__9_(N{&qmR(?C)-Im|D)5z;Bt3M;~c@sR+C@nu``~+zX@Q)r)|eWr&A{As`Rft9nm%?9v9w) zXjO(Uv{x#M#{B{09#tg^N2>)r5v1sX%vs+x(^XUv2G?kOp1*uP+FXH$HL^6cv$r++ z0sJFc=>y%wRg;j3iRmAl z@!gb#p8mi8-b*lY{IUDX3B$k2GQIoz+Y8gX7dA#lLRMC`KgW0Z-IAH{PsM*#PRPX0 z@fX6T`NxKXnfY(KcMU58!@Gv%-Pd0pSXfy9n-`Y%n*a94%KlI5-ffuQJ^W?+*YU6R z|7rDmp7Bpd+5WQpJ4eX=m-b!$m&LzJv2*-g@*mxw+W+bMyVv(NF|faP;N7`4p*G=v z;g;!tbNkNcd*=V#-g$XP|6%rz{{O=3zsvn)_s;sCGJo&s|FH2NeEzZhi^+f3{FDDn z|KGTL$Nw)p{)7JacK(Z#|AEc-lK;<4{ulC?-#z|wVg5N;|3%62A4*2n|3*9Ozm(kE zbRuRJ_C~gJA{IaFjf9O1tPG9lq>L<0>`e*T*qNCb|H&{AGO#f*voZ4W!o&XS9&t`R z_JDF%QeJxHxRaqvO8OeZD!v;iE=ZXBQx1h6ODv~>KG9pyRbE0W3nnBx^CQ}PdEx$2 zl@#R60`9GjiqlDHc}dBFiuQNHx4l&-8R*i-wU_pl@tddJRPH;MF}ER}Jsu+jKBg#} zzC>I^{1j~sjy(ORCe5LwnYN&++=d~txUpf}!^Wg4{41=j$OP$R9b0wDrnD-mY3!Iw zDv9Btx99!&pSZe4Qm>`@x1~d7Lj7W4+A$;dx2GXPow;^>QXc-|TULe^mzC;qE)Z)S zH(Z!Yk36dyiXFA}Kq)aAT|Ge(w?kF?Z@-4`T1V7QoWc%bQkIevJfBWJ;~J2p8;zvS zXf03nMJFMiMSk}%xr&~Z&XdIJ|F$W0Ot13ScCAnLnQb9}D!dPBG> z(2xZ8JwTq_95Ad&Ob_>qPmI~A66w=guD!D*JF0$Q-A=wvIE0%t{8sf$yiCD>8iVI5 z9&KNp>lP{Q;pr&(r7fWfJ1(T_IV=xN@k^MhL=xzL(3-qU#p=|0ZlY=`}q*CajqXSYYHvnPj#jWuL@617pfl_0VEGpGYI$AfoKSLo+! z580dQ;f2*=w3mY}F%imNX`_Q6cerVX{0gwp{x;bDtl`TY4SdaeLV}6FYGlcL)#&j)l<>ps4u8}UzjY96F0Lbb3}G`c0UgfjfmaBUy}7Sry{h>>a$|QyQWdw zu$GRf>g0T4GWTtkTH7Av04%A(37vcpl9ux+dLCdD$P=N;$5Wq*jFuLSyH*tU@)AE) z>Z`Kh=#FK~KyfdhDY(9buq)1Nh<_}OTj!M?pQxo(lw61slN5r_qt41xg1N-WqgHFr z&TA>nM?1MuqakgN7LgpIpEIZu)X4HxZ?7jvXGu2~9QuYkO~MeP?E#bVAY0bw9u> z=5h9TvJvT;2DWDfVd-ilFC~n&d8z~nTfd}!lb|XcL)Cw6JwD7-%Gu@qYWw>mi%HwS zL50qiq+&sFDcN&PHYrhKyUZXq*4Eo_&(DR!Li$-;#KQK$1r zXR*_mWr{Wl$U-(~Hc*N=v+=)fheZzp;!9O%l8(hoWOB}#v@iXia>t>QA!~R1vpQt2 z(=(27;#9bpg(=Oc@h5(f;LHYbVOgH^KT#I7Lw8`YNFCbCV5r+dI?`I8Bu`2mQj<{# zuxb`vvOE@hs0qC;DjzN=>6%}0l})h$$9%s5>$^(~SCJ`)=(3f5<`HRr%|$8wb!icq zs6wNimG=}A6FHPlTpec_W2Ir#u+&KRn^3XRkKR;hH+E_C`y@#v%dk!J!;ra0h$7`# z`N@f{@#dI+NtluNJAZcM^tnuqmHXA}l;d^C6`a1mU#8w(6zKT;LiXB*MKFlz5{$RWzw#fv?B0U7*`egHQ8ALr}{dxa(nPT`1qXc$W9 zSJoOK)l0ck%kyj%-%dEj+Ygzk>$bchlm+Zq$2>jylwwQdiX2PRiRU3rzkPzSd~_XP!oK;s0P?ZPX?yXKmAnJ&FNg`RM8F2 zlQAjk6^a+Z3vM0}fya<#k16VoW-4`*oJb9YyvPBVmp7B%VD}vY4qM}w&}hA#xcpSE zDeSzdy3yD14W;Fud^4o?i#4u))FpAWS(IC$%V5+^YeJTzpsQp+b%LqX zJvc-va8(kZIKfh+Y)Oy|5vM=9IEa-f9J900nBc5(tHe42D4-x&sN-AB(PsK`;zezZA*9p8_LW3^XYi zhN7Q~MB-0@mdy{^5Zs1~A{Q=4;t>3dN~{UW68wxzED8E0Xb2lcB;1U|O9TlMMdnZJ zuL@EkQt%hU=pqr0MhX`E3XM!BoQh;gq#po6Cf0yXK$0QC6BLH|f!RgouM8cEWK1L_ zh!sE&orNh#?oaLi^%JIV0K^&U=1(N30CvJ2M8RXsO*f);)J-cvcd8yXL3f%S-GF-u z5M98%AZR?`UJB$P_|7i5;PZD-WWc=`h!5@}3&{&*6P#!jb2C!#7=4q6Xcc`EpJ)|h zlZI#&Z4;j8m9Xb5z*!qK?|+|$Q~`StfT4tJ4?G!AZq$ zUC;t^)0T)9byIfm*l$$pp?O z9x26tfubi#5M+*sIZr@a&ZDK}*4TJ!ZF91*xzycT7ZmzGD^_X!8{e#L-ZnO0yL(@P zLZ1*Z@4nEU@@f6{YW)AH_;-tdL7~eCm<{-}mRwrD9UB`@tZkMzHtV~4fk6q!3J{i~ zSu+-!A2$L4s>cULH#z@lS$s)`w+eu)_ zg3KJ-NwCF)-w<8$eTD?n4>A?9QL@Ej*`f{~g309CE`!eY35i{XnBlDJpgA6h2N4C`6V)ZcK$R7t$2@A zf>eS?g6tBBG$7j87bO@)P`rl!LfFR894m>G>bRc?!Z06q^PhL+2hZU=U{~|a)%xgFHxp+ zlWwthw3A$h?kW2;*=)h9nZ#b1GiSj%h`nFnTxrnwzFc!4U$Te1iSFk83n1I;z=OqDQb4J)5@`|KA;^c~O zo6;q%#EQ5*)TCv$c2*-yrW}POQDG2;m_64dP`CkQMX)wze^(CgJ(x6Voh`{Ee5@1C zq=WE0%1it{PIgJKBa-&_aBcB2ErHs!OIq^guziJW$-=JQ*k;haU^X1ZnLA*IO?Xd! zl{MQgc#LRCqBcOnGGB>pa#7d>8A!Z@WjpUX_PObZ-vkK=-IT&#fSQJ33&npVWQo`J zJoD2HZ67V$LCJ$=mMh6rdSK;)hV-l|a@ki6ftl|!;xhu$4T?80pe4am*9lvI1$La4 zM6Lh6a5gGPqeur%p6RAExR?!vMQ+eFn=@M@8z;M0IMj5aUvWHwL_^F^hhJKCI`sW| z%sU+`z=SA_a}kacwhP|%*MG@e%u>67uMw;|yiCUqS^1ER95VV*x`22Zlpm;XL$|I- z!ID(y8@7|RpvZ5OwIH22C3jqu87+70I*}`9&tXa&m0=1tc`wJzyY|2ki-T#a?AM19 z4%0M~CoiRhW~=Ni5~QV^DNi&HHX$~IE1-mB3lEMiH@HERz*+hHQ*tH6MYu_cCuo&E zj3NaGSAy9eXP6jADpoue*|tbWg8WiG#jkLb86cIV(kfh}L>EAjG$0f!9E)X3fG7dY zf$6g;G}fERPRu4xE&o}bS=m}1f*c!PSYFtX7&op~K^zWyRG5sIB+5tPuqZboj4?{M zCpfWVTz*g4Wo#8?}0oIIMr<*73@bpg| zuK=3HT6%5$?xZ-n-2%0?S2{ym3!vtpWR{zFtpR%4>#=D^U~>+?o5yM_mzrbdPqglK zIlXFsRkK!-SznH^_{{pm`6zR#LY_vkR+Ak_y)|}*q-lTDR<%$yNqBa^TwCmwY;pF) zOi)Xxkvxb7rup3R_mACvFwaV(rsd?VG~K)K*$Tn?nq<7hYCGG^>_Tq2 zz+W|nCe_i@T(bxxQX;a6L9#=4_dI7V?dSW6RNiqQrDbaRUkD>B-KP z*~eneL;{!OpRrX=L0&|!EBE7D4h*mNL`^%?W7q{fgO&~!HcY#5=GMJAAvOf$mE0FX|IPv zkDdr71^La}HuEzDgoL+vr*J2t)Q3Ls{tsK;Rh?LwSQKC);5pt=ozR&`6dwY?ANUD= z!fk)(_O{TYp#L-g1__?T5BU?}-dlhlC-Z|2A-dSd=#Pj$KYay*;pawzYV=Vfgakoq zd81l?koU%~{HW3imiQ4>@6%^*f(hy4Zbiti-r!*@)(iJU>x9-H?*BZ9+@YTTc@EuE zoui+Voipu<*6G&S(#h4i+^N}_(uv#o z#d{6B0=(j52e=M|&PN?c9Wb3wIv>)Z(!tXq(m$p{rh}z_O8-CrMF4*LArdU|10p!$ zM?^5h4|m{qAMe2KJ~)B5b!vB}b>eqg>R}>*xq1^?b6MkBQ(41RqBdeT!Zac`erzOY zL})ofX_)sdai1FC_X9 z(!6@!r#c&xS0dCC*pMs_jhP@;v#H}Re{i5&{#9KR$kVIyrur&zpEdiKH$t}7 z`$@@nJoMy!QIrI-27*<6UOQ=KN1FM&Mk2X~F8tJ!ASNZx)Bgp0lH@H8hEPb_-2>MGXW| zOM%V=Pw;cy5XXX!$St3aHf`(Qzu@;Kzc4zIw!oT;jJ6=fmoVq;uJ#j{I8`n$oE*!H zCfuCkxCr0piC_J|b+5!A`AwhMzugh{vdRfzpxQt8zE1YH1=%lh2HzJV0fX=q;$;)u zg=M8&L#WI2kW)dT!bNa(7hmcTu7}3e1NiC@&qsDNB$P!py(Dyd$~zHSab#ypikl&m zXOxo(OgpMOjuB{HG#zPL5bSLH-g~s;x{tdMzOc+zlXi^J)9so`+#bGCJgW8crV?qn z*U^CN%+RSyXY|$1h0k~my*}uX#;L|_p-qhlu`=wu~tfLo6bkln4j#7lVIDCwL%h@2**2CL(Md&8~_Ayi+6?=LOoX^T6 z6zPUNj&nP~CS+h_AY}0~YYff%tN+60OMl-v*Qs?ve6npA;(CsjJ}fObS)WVrT2{=l z6Dg_m`3lQarLv>+!45|YIab4FGS|jB7gWYL*Zo-g{${HO_t{C?*|CG?Lu(0ph4op9 zThN}JYO6JS&c2+h8J#>r|$hakhouZMs;PrmC)GxA1WwjDTxm!Shkk?ByXRe z?_0SgEd>P?tky(ZQr#i%L$xF5mswsN6Qs8y9o3cNwO(hgH&|0hKlakd1U>Q#ghJ#| z!%*lqLA^o#@IZV(jnX^F*;PZ`JaK{Pwu4_S}xJSyD`PUcBKgt(2tFYVDp_YWCvlOw~BEB*TC zk-~k^xoRDYsplR_etT{nOevLCU~||sv~^eQ0!bQs(-Q_;AT2Dd!=-3MsRK{jBgCqM zgR0-NFXw?%dMbL;(O2~>z)}J-mj><@8-0mncc6yEA~s?=qm$%SB6tS8Rjb-d{mQJz z(@prk5OT=^&qx{*dsf2T!>He}OMGgo00}i{qnOjT8r{iB=0M;e0z@q%1bLlKrgy1eHvyco4ias?v%SH zi#J(XR#K~mN=8$(I}-3fNm77#w{4iqQ9{!vyYevojG4~lX)K^0hU^zJDnC~d7{5!3 zpFGPqU^1n^IGjQrk*KS(UYo!3RKqJH5xaU3J}kp+uc@D|`%-Tty~gXpb!wEv{=)jy zhT3OaQlPft(t9{Y<;Xb;A9T+cAYbeB>s((&Mr*nufXh8)v!8v1BN^*D6?? zssRJ>c0W6?_$`U#$010kd>NfZh!4NKdnr#@5chiaoR@~6kw-z| ztp9!(id_Hhmo)425cZXc#eUII>s?q#HOe5Mwj^cBl3Pv1<+!oA?saM!H!_$&gHdY* zK4CM^#qXI}MeOCYK8kx9nYSNrgUGLA;l%p#AmUtLZ+~a)At#9s(j*{^#RxRIJVhW&b>j>n>*5tFzZVuy7J=$F<|OU;$i;{I{}n>vStl9hGP zjGd~4n99R{{)Z&ZfK)~_m4{x1xs9ng(Ilz>eIzO1$_cb2*gm-*`t2r0TbydCh)yr!DQCvU4Nqo(9t*WEAo- ze$1IM2>xBMMJLXgvufzjs2yS0i&@~LV1nw=e(#@^)Smbr&nze6NXL;>82bjYjfIG6 zXCi#RUgo4FR!^w#+_*Qzo=ixIJEk%3O!GC~6WOkYi24x0BhVzU1`pru>7n}to6;ok z1=H^OX5BOA@gfxuXm1m6BrU(&LtWt{2FA-0=-j3rY`khzU36v1G%kj&X>a#iz!BNYHP$j_wgg;7SYXO zDn{GtVI{tt0wlRw8H}HzLNy9ad=K?Cu;%wy?ff$ool8R%cB=KfJy=Lr%4hv8`FQq* z+F$Eokr6W1SerCeW*6)Rqt6rhBo+@zmm(WvufB3YfnUt*IG-LDIHuq(TOK37`W+DE zm)BS)hZ}w8;RrsgfWE(^`Nps|pmQ+7WxG{o3y3dP;L^f>jPUuA@C2Ls1R3#*G>DG8 znr`=um&5?ppl3(ebADgSzTY`J?2BCu$=F6%DC1QFI~ymeo&%Pm!O&KmaKQ%U1G+&i z7lUgtX`gZY>iiaT4^d&lGt^m(O?a#WB>r{I%k6yhZ__S^bE-jtv~Bu*AZ^QS#a_u9 z6LH2v326D1N1pK+)#il`f9L)U+-BKJ@A z$oTuPt5SIIV-eQ5V`y_!JKThz_b)D^irq_HCU*%9)fQL2mGuk_4ZxH+@2v14O5C5cEOMdK2CbRAjT>nD;t@Xp? zWClBQsbs%6^1eiP(omPl4Xe@Gl2wy}U{l~Unal-rg5m+6*s`x-xpC#HKi$MMqm=b(+=GrcX(T7dP(}@a8#=UpMn$(O07ZP0J#T_SD~stq;&xPl)%^An zD-8rhilv5+$t-lWfR48c&x&kC$s&@|;|#=0?6&WdkL}dlNY>#AzjEK|VDcYUaSAxh}vcqV`78mwhXTKGWxLjknp0>DF5F5&Y6%1kv{lJRlQ9}6FE<-^djP6>^%N?Wy|cT{ z#17n>=kp;m_=>71(>zf4V^Z8|QCp3GX7Hh=%y9~teDUVL9hcnvpnjg=jZr!)`{OO#+!f@T-sb~tdi6R0`vr&CteX^8fEWg1sHXWSrk^rN6Yf~(d;v<@Bk`H;YL#<)`1 zO*Dr!$U#GUql^)wvynXTs2*`3>t#CgVf#E?4f_>RdRVqKVG6M5I--}b+a37IGMBm2 zU`AzlZQ+SYBI-oa$Ni}7!{pi9(hiA za=)`d9v)(!P=DE6n+(77swz6Yuoj_V8(eShX&Lyc{Iq$VJ}~W?bNZ3Axs4SUpM!xDBzqvLgSWF=fYG12N~w==yQ>IWQ6Ft?PJPp#KzPC7EKMltK9NQz(PUh&_OEq>F)0TCMGwD%P&Pg60 z;Tu{QYZMh$99832%K8L`DfGv!jV`o9_ZIh>cg@j*+6U6o&+;qH~*@hq*ZQ;sx`oR__m$$xPo!?a^fA~a3 zwq~4WBALZ(uC~QFIY)b4RzqhX*a%Lm2yQ8EXF4t}IVwR!9!=72$Jpc?qF7~-gO)Kj znu=#QP0#A(v{xN#agC)jJ)J|9#=fbzbZ%tcA}U_{BxE7_Xv`)r@KJKPp=2euuAD&w z{ITU8qq&rm%yuRst=?H(rEfF#R#zfLQIMwBx$C>Z&DZg?v^|mAyz&`)mT}+fu;UW2 zW&%29^1$4@amlPJ^4x9Xy@ob67*d&1)cMDlfnQ^q_9$fEk@36UZfI6Jb6?#NFtSg0 zc9*inP+W4MD%iY~V&gl`U9X(>Gk4zB-;c+II~A>~&kPIz&$NyA{Gsq`@RFCu z$Vf|MvMvp7)@wp{?rEzs5NYKmc$3Wb^VaKr$z_CjLIa%3(@!=ZJg4G1-8d)dme!Sl z<;d3V0UOLa)QTauLhV)OO9a9*;C5oqOD@$F;BB^gu9atiE3wt-CrQ*3Q^ioqBJCOc zHoo9$)pp|8OVI4AKC7hha5_)N#@VduD01|oA?sen9^G1DLRg?;z+r}Z^a$ihsT|tj zO*Du8(OlWC*r3Hr>-kj|FjqSFCU*duG8#vtgkG!<6e%%d8x@U)T~4ednyVq2`#q#K z?)>i7zk$59Fc1D~sC;!IJfxpn_fnlXTcb4OAX<6;1n~hiGVlfs=W}##V-#PgaL5Fe6zG+m`?ZVW zdlF)i*M^Q2@|PoCq{kWG)X$SHo-&WbQL#~*DsL}$xB;i92TUi~TO-&`%d_%bT3NR) zs7xXa=W)W32NauKs+`7gSjZJSuq%^_UZwlA&9E=A+uMWLXJH3-%e@m&CQ@}J27unt|`&rrtE@x-du7MfCAd1QFzmeJ%ywvw4N?h}d_l!fwYqu;<8g;n{CL@fNE*c%V z>p&+#>;?EnC(Z&~kab&;hw_Z3qM?q*g|sOOsweDnToKa|Oto9wCyiQMyao6TMzlj( zUp-3kd6sN49J#acscN^xPn>1ASZha_=bd6-OLDMZZjxol#%6UDU*DPwx|a*zZcLcR zO3qpjHJ5NMvKPo4gI6{a3z0Fu)~&&m(FMl-40v=?G}l#lqlyv4!GF~1puK)5(Q9G6 zo(}}7YDv~hs_KZ!wq9}?@5jxjy}Iu>bfl~5+;tp2bjqvhM2ewAH9O8X^wzssqD^_& zmA9tX`^mzQ*g@9CotJbSmXZv) z4&I?G`FhgeP%AyPV&K+un_o`&jRuf)S|MMO!@7Sfa+E#VY%obPNz-hlUJhQ&+80t7 zS&31e$q>G~}6i7}w_2T5E`XJFclb zqo49mL9t9;Fd^#qPjS3k_Oc6zPktIFGD6%J#o^90=0^fRKC@fDWwOmOXBtnK__@Dt z@P0W^P6W@G3hG_#3btLTL{|Rq5u3U;UIORCoiA>Yb8SerM8>d__yDTx9`FAj3#%u= z#dAa|aP9O<RKJf;3)2qXB@AhE!I&Fz>nOD8Ky|gBO7EV5W9w8nz&< zl`o~1V^F+&JC{UUG(X;!J1ad35WSrnIt^D>>+wiLla@-`J$T?_*nRzBd}o_ukUZL) zz&b`J^#}Rd?Saok4EAsVlyPd>Bt6wbmPd`r8}ThBkJqGC`;XVuhqx=cdQVy`sinAC zh7u=7&)ekV=;LGy4z9|cO2dWdV98yYL7i&%!AH`R1oz7AEmF4xyy3wy7X}m2u>h?o z+!QVjC(BclCiGL})236lOM)TIjJ-i~9e@_6^Ff;=pPH-XVviB#mD}!G%Gt>Hpcjdk ziKmgknQsQByOx}~wM`SyWqv0oeyxog_;9-uM+I4)*tj`~uBp=6u-OyRxrIug`+9Fe z6;4H7I->qCIpje_S9aJA_*HyTvOSxlx>vEPp7{J_w>YvQJ+eF%2%DfIbI7gGcw-AY zO8EBUm{f;nvmB2+E8TNcy})7DETKG=3-(T1=I~ff&5EAgJDhKbf@@&tE59O!NNYR-3aFY3t)&_SAVfNX1ESx-)B| zWDb=vPve_)N#k-i&%*2Q<6_#3w)zrfpIbsy8)24Fs=h+&$nm`*1gPzyp&GZ4t_`1{ znkiSIG|x)YATTPhxT0+^OMZyYlHkf$Z}L9bDII5?r=FZjuT(>a2XUpXHKJZue74@S z#MpVoqQSOLp?mgdJD*CWKW8JZ%Fg`A#gpOsF3of*J(?o$cQ!Z(lROw^};zpj`B)51kxManQ>kw zCDoZ4Iax(MxSbS~M+7)zjg3cyX_Y)jaqSJkl9YPhSGt(`{CY{g(X6uC69wm9pd=qn zR(b84_SD?wkqnUP)=Ny4Dlfm@;hFC%(5T}y_k^{aNxLkfUeqkXvpA#P$t+>U^Na0c zha_LwgO}yXP2SJ3!&Oq(Wi{ip8sN++)@)jYV;w_PLo*aCA4!!TPTpy< zpwn!VE{|eNJy&wsN$Cua(pIAg(5vSZRI_5h255=ts@D!nu9u~g;$&!(TlrD8O=v?;x5JF9}Ny?BANZ71^Fmw^WV1;2LbxUXfg)kUDh-d)N43qht`&H}d=9l9e2q=S_M~A7!M0jn9hXU-@%xz>G!~C|dE#ft zBmoiRqD_|olWNa+TNN=pP5+3kk1rNG6jq04R0%ygJJH){X}M?&LdjH{c}g2Ur-Z|5 z#d?0)ed6dpVv6m633eTW26q8&hZ9wVw_=p>(ly}-=Ux}?4_@(dXY^j-I?mikO#!oXxFldys@9C6+H*vM$Bc%>r7^#3*G22Na<2R9&{+SPdzy=E1UC4oUn9t zCdu$U^?xxPB?ByxTz-d&qTuW@W#A9% zC#Y?pg*-2@-$h=+i8qk~foc`HG?p`bM8}WBHaQzKJBdH2TH*V9K6KB^LGH+XT;nHo zhwIORmFeW`@diZ8AF82mzZ-*N>ww}W+}1jB-lsa?%H?(klgveP_*j%c#s+UgT^ zG^MPLM6FsvSL*{;Sz}gN6INLRR#|<1pH1kZTq9DBA9&?c7eK9ubhsqpq`F2{YkLKH z?xMTCa6GO%Z6cRtq>;|U)F+kYY|1m_YQMx3c~RcTX1_*lrwgs56h6tu;>fI|6g@c{ zK7~CJpiIu#rfZBTN{RxSk~FFdjiBp3XT=N5*fN!Ii%Y*0QHE;-%6B8sOo69*P;3@% zSf0`SGlVhZc%SZ)jID<~gWNX|U7Q%OrVuy@x+ zz8;QT7E>q~R$-+3JDj7H1{G{zJ7ci&7ong*Z6M(VlAM#`1yrnKxx*XDA;g^{en%$H z!jbu9R_MbtBw&NlYAsNN@@AOI=Jy3`0!+ZT!Rz9g`1wP^`r0`OP##Skh0v^K6Z-|v zbzwa2>QVH;{@WgWKic9sORNBgQYV`n%vzUCp)cw=VxgjM;8`csn&0P}i4S{O$jR$q z{h^;n*tzH?w9m*6o=%lYPu|AbZ~5-(!m8Q7yv?7k9Rmv@$ml9ow?3w5sdAIGz{ zYyW(i<$cuuK)rnhqt^eR=#7}a_wajQ5AGagFJ;|m;d6!Do96Gez6Y+s0OG(*z*Xbt-{N;h9y0z& zm0>%Ie4R5K&Uc1W@p_ut&*;?4>Aze#jvWy);X}VeuV_WH-yDd@;sno#^NCg9RA4< zA&_!au;}20Y5^h2g=%@>3tL_O@lFiUqor+LMkg;huN3Ads-=RZtjX=X#LpqnvgVJx zW6F4{Jd;lFEbb)6H8PxPQqmR#=}@O zMq!JLeaB{fr5W$R%ts!vYdqh@8|HY1Bcl;l>>8cE(gcRkHT`c#yU=|HW_@NXTi486 zwHkb?*V6@pfoj8?OQ8<6m`A3Fb23oo1%7qYzm^X4PV6fkIn}uEOVbek6Q*{>4%O+) zPN-7rTexD{9m29R3ge(NPxWIN`}Mf1=V4b_&VfaxGsg;LuBqD>lJGv&`;9K=En)I) zc>m4l`fd8J0HvWh?{D>*}b~m**ynp5S*qXpH@#}F<@5Qe2m1E|$T#Nq*?sz<1 zF}=rUaAdC_Y5dAspHb#HumE@eB<8w*K|GFO583b$BB z?`v*-dXLal&*4V9C33=N^wdZ}r_XC_FGr z_Y{_PQdFd5fuFtfDmg)w1@wDYis1{>nIRbRlTim+ygw+{15MNp402JBdmBo#Zru+# zGEc(mLo6R$w61pkLPI2JpSZD=B4Y(|ssv=6+SY8p!BKyp{D!;xWta#SOpl)b z>*eRC=?xZV{8ewZ4Vnd5t8UhNmR9f%pObUiWAC*tw{u?i4;_AK=S1$GI)b$2K6`od zRclghT-oh3*5clF>fCc3Z@pqlG}V4V;HSj%7aHO?pvUu}TND`C0Pe`|6mFayf4%*M zS^1CJT8)zJT^;w{;XJZzCVQXq3HVJyogxNa#0oGRtTm-E>;|g6@Ut$2dzw}#uk}{~ z-bEnJ+t`DA-tT*s2PzIk3YL7_b&-7tM{9~b>9#Dy>wuKZ3_@78X>jj$y==O~ z^A+Z>qYZA{oK&Wj!M)Ert?C6ci8p%Q(Dc4ABS%VggBi1qJ%nj)b?PTtf&o1 zjiWt4GD{|#lolbxeVE!csi)CDJA{3Bk4(DXpI%I->333H*nelmrigZ9ol1MVZSXpW zx!XOY_SZaYYkr_rgLdK8gelQuLF>Bu{l@aJM*4=Z)A-P!)d7XsxTgvrCMBF3kdbit zY9s6@KlXj;K#1z=Oq86cAU=%4KSD4H%Ar^xNmkg5d{LY}AqJ;_$v&8N7H*FKx4p@@ zE6Ft&7keh#wNJY>>a|}=7N6B3xE|qW-(S{nUptYoU>myVu@FesSsU?1x+ogKMY^#X zQTw{su@F($X&Z4*eS+y>P6M9w7^QrK6Je+QAH5EManX95U#U#;p!6U|{GoneoOnWe zLe^~jP%D~|{L>ZGO2`mB8g7`QbxJkFRx2^wIE(`bXJj2;>2pSlK-G1Y-GTWHcxTjA z-?DR73qRd%u5;W4gi`ORKWFf)8|s{E0cNBQ#jfnyZ2_Y99E#!x?HitBH^Bm&R}h^Z zAD*`YJGAOJaZN0m@xfv#IDX>8nIZmu=dl-g&8;e=F*i6%Nf@$K^mFJ%Z~M!U|s!Y#rx z9N-o|wtctakDkg-WAQrO=T!)Ie~=I|(Tn)&AGW0ekB#E0SBI+V%w?3#u1&azrEM_T zA9m5AF3zM|{}FM_v^ts<|3`JS+Tv}N?d&b;;ieixVfAv~)(iR#@5bHhCzbI*E&j+& zTRgmhp3CFr>fil*O!#MLfyoMh$4m7dX)JCNV%o6C(RXUDlJ!0vruKq;t6+|1&-^iH?-t4Or;*VYa4 z>@COQ>d^F;2nYF6& z=OB~UMmWwH1{&kxW`3Z2@S8-VjIEAFb0e)L7R@%v4H&~Yc0yzQX>1Y@df3~_9t^t! z?oWrD{Dz1jp8%B^1%_&Q7LV&5)RyVTJw@eiG!Tge*wpSCpFNF`n-#+Dm$1elJ-REh zJq7r0N%XiSmD?tzUm!$~z8DVIJXD{p)pKc8l9IsmPfYxl{1ePE1K!14{tLke{_-gR)1) z!c+eOJtbrQv3rM{m9O$HWaPgu)ss;blq%@qEhB&bO89%@?KX4e!H_SWWiz?4Ksq?ZOZ0d;BApnZ}E1QW8`@ zzUO()MvdGr@ZGCvWm_A607_sSBYXsbPx72trkYYYeQ#g)^8JHuWqKE@{j=R-s;q+F4J%zl{Cj1uh`b37ne*%%*j9soP1W)?)s;5A7 zmej%xp?^#IElcu|<$ptJr;v^*nLa)$=v%i$2z&eo71Rwz)F=_R2^0E7#Y`z^&hBh} z8W|np=hkje!tD*(i}q&ur)RkT#G)KO7nP|f^ig3ZA!bdEucP94BwTN(gv(9wU76Z) zwwpJHC2K?CE*4`StuI2RrMi3Z&oYgH)Jk;@Q?0DqlBh0mRcK%qO1d|T?0fT#@2arF z5z0Fv)OI;>jT3{*rbd=EjBM&j_@#f5FS6rYCI(wfjkIeR>D804ONYahcY5~3D!k)3 zWYQKq)R&&ZZRib_hj4DPQ|{AOqYCIjy(S-Q8ubp9cLx? zfCA^W%4$-CsuZRtq&R$mmtMc#OS;_PkDt)5A*IdaQW}l{A5HdEo<=AI2BuE8swElW{O53h&a3PXecM`6RQf!~)Cyg78rXV;XV3=#r5eWX4EkgaxgyCya? zp(tRdw@7jah3tMkBOpuf>b6tGad5e9QoKvBOtO`(kM}&2$m74Mx|iT`qKC{R&US@UZjrz1*(0u)i-Pc^c8+ku7Y?j zlX`&RAn0}9fQk={pU|sx84SD7`h7I51pzbxM!%4uD>U!;!*+>jd2%$0rqPDfR>-zn zBH4HtL=yz9#savHchHUAmMBL;;5I(K-lrgpy~4RIxN@_I&(B;yuW(h*Z`2URCd1 z$=A2aiEpSSy)ntW@A;>ZvprF+{0fPLo<2cf<@kdCWeF5~k1h8?4ABvK3M=$Ny`s;4 z7FKS21Jv|ZqHCwZ){TR&7=%{ceph1qb{a9;62-x<5MOBJ69h(%Ex3vQUy%9}HC`Xs z>f01&))GF^rp}goKroxjympC>=mjuek53)+HxiYOWnST~*p{hKt;s>&@#y654qdt@ zrPG7EKxZ9($N+cKNuC1tjt{qisHcb|>-Zw=Y~gu=!-x;3g#=N9XZ?Pn0PgekXxJ!j z=dBJBWPr=*zbU14JT{W6&3KsKOZUl2gEL?^61;rFKId(R z_$O|yx?Z#z$ie9)Zt-rQ?)}}kwGCZDq}jiM2Z?n;<~cNMra?6#jFE1zfdZWU`n|VT zXRk+?p3c=~A}mZ>^KvsA8@u&imhxaU&D#G3km4p7YW}wQ-uoX;o|$HG@4o{EjD&X$ z7~>)a{Q<_Brkw#~1RvJD?^mb&o1_Yt{sZ{mR^C8hWZAr%Ub|?fy_p@dfYZsbUn}i!ij^Y{(H^uT{ zWwm?ie~-L9_0Y0^7nen@_li6o#p%3CG8x4MGBZ;JkbQ-#J?*gL+P}lIS8(&iY4M=l z37FcA)Qy~rD?6Bd+N@LoSm02&sJvvm=vu<_^T^b^cJX?87Aj5|L-AWa(&Fq}6WQ)8 z`A~JAeHFQK-nW|W};z_u1fsaub z>P(%M=FDM}l)4JKSKSHc%XQh&4BoM^UC zz0-!jo0d<1=8VU+YXqlcQPv6+q_8cT^|8$3DdjB+nbAiyhoLP-@MKX(3P_~#lSWQI zWni)PnE0oiCEb1)MQYx>=w$1rOzSYYmZJqi7kMqW^ zFtKszGnJjf(<5MRt8JNick1ky(=gmqBYBG#U?(W8k#7@s&Mb}Iz9wI@)f`bZpmr4A z^t=(5_V@sSwlQsOVLcno_h?AtWWuVwx&4JeZSbxNF_Rx61GX4)JADZ-N zD<2y5Xk#53b`Zmt8Fkdss2ctO-HvzgSZWoge1H5b{YSMl7EOh2G;|ov{D5y7O+)+@ zr&@W;m8)8L!ZxQ`NkWh7EAm{`iWBlU)rwQ{n*Ir90TqhTe^mdqVN=dcK{^6h0lw2c z-ZdKe*eGkEq>8rovu4j&Z|-6zNy|e@5kS0|&pkBbi6gRWlAZ84*lvTo#lwO73jsC} z{u2c+L-@|!NfaLeZ%*nD%i*^Qdisz1)(bwM(R+=@(o<9S?>MN)$P(gSAVVek z{_o|5Xytlps#e|gM}06PmJ9+Z^~a~Z5vvVaG->4VyhSALlaZ}xc-%^%2_U5I{@Fbo zney{3{PblDOO4^uMf`K9Gi&93xAVBuz=GB5>FRX$X>=>x6Dz1QAP^9|VbHT5l=|9B zoQr#C5=2h6)wp2OH3zG;`)mOh`2{Mc#oU;Ui#Ag8!(6Nvkt5s&Ok>VrCM`YGtDBfy zES0c_4qDA~B*HmoR$_Xl^WR#z@JfEYe=p-$*$s%F2P3Aa5?2U~`7}WE zLedpK4`21Frz>Va)_K$rKJtYJEk<mgt7uAqJP_IUopYj`uy1K8Qk0NgHZ zGY#(`RMv+$xT)5Q9{$wd0AL}}5OlASDJQm1`jF;Vbt}dvQa!U)UIS)VyB6J4xq?Ab zn^x$+6TK^*5*D9rH&qLP;~z<;bXWlgwi1Ldp`0b{oEVj>W6wLc@lF;9b2CC4V=S0@ zmQr}Q1iO!4!hdDu`xoh3$E++X*m=#XG9gZ#eKHPglw*lH+=;+Hx)e3caQcfK-ir#~ za}hrgMn6XudXjT4dd6PcVlSQOJ`kph56NlSDkc!j7#;DSmNPz}&!uB^nriOC9f;DKI~&kbM4UVxel?F``Tc3chJ@8+*SL??v}e{7 z&Z3jkven{KJK2)!n+&vLQeA98M8$1>R2X z1>eFUAX9J8@ofbL-7kO8M86LG-AcS=iCUGAAh|)R;5-n!jKTMU>lvT}W^16uOKv7~ z(k*^Cu{-jVwBsd2b{<36Mdso~6WIZDffF$;N1y1HGn1tTdG;SEAK%IZ!3)hmQ!Rf1 zum`|OXCYfEZhmr_$Jz(wz1A3_e1>@px&GnPQ$P2w!g# zyZIERk(;f_+PMiIN)S876k4D}c%cSJ2sw+ol!qlM%h_g7{J?;w zKYw03d#1m5etqI@UxzBS3#=mY@>z#RkIYN9QaNv@NFIL6e^*N*SY@Vh?$P3hDv4W} zT%&e;HK$S;w3%+fLfz{vDvIUM=W{enURvp9Oc$886Y|w`{cQN#DG|o2R64sO?#-!b z3DpU7Spwn%f6ygetLEPACL_s}N!&{gpbS|ii9RK5c%ctpB#p~$xsEkh=F zO#19K!*>^O=gsmh9enDv19g`+(3V8c%=JUeyNwIX>cm+zNW03TH|Byz$Q7%h^)EhF zUNVEck~8>53YMm0T3mnc*8emUPcN@Ko638%#R8@F(3_m~u(s7jm;c-{$G=m?Uo!)% z;NQ)Nc-AV?4qg=HQ7ymYz4C{v7vEOx;xj&rVtuZR_SNh}*6yapSgbnbmatML#JlY@ zF}yHdXi4I087QVLQ6DS5a^K`ga)TP8ODIZFbL1GJ+r?kH?Om#}$+1|bz-K#;_Szt6 zHd@H0(b%FsxE;Vss+Be_jZr(e9X4CAPoq))#er|s4TD?hGs9MWZ#=t71I60!jmW6$ zhcN#MinZdOm zC@s8DB<)xnlLj#?aHx`(Q>Fs+i#t@w$+1%Pi$pk@G!9SFR5LH-Z9AGa9#-)?E`0K{ z_(hv+6lR>1rDkjzkDGj?*qT=SdUH-yCk$@pg7nN%k!$ptML~SnBMj==r%ikzcfVjO zlru!)HtCwVkn3zy`p{RDqaO)RtXg0n2)k5MSYd6CWVfivw8U}J?L%I#G2F9|Q-)M~ z(q!j{748#5lpeU%rZ1P~7Orb&+h#-K9Uqzo+D2;&?2h&|Q76dZ?hktm-5Au~UoJ!q zaJNMz$n0)Ux!l>iF(f72oSpM(^QOH@BTt7c328g$JDzpPL&_=hX6WU|CgoDxjTs(h z3kC77FhRFEer;xMBBIC355%4YjnmnWPozY9LcHXZ6w#M+f8Dsc^?+xfI;mB)OD@L*|q; z<0<3Uy$b~stUT>HTFzOqRuOfRTw0Mu{oGOuRfya{#H>M$Yt9UQ>74162#`&^d;+qN zokH6bu{eaaB67@fjzwa{aE?{C$Ld->;TF->v!@ZRZFMQ{)gT;I!QZxwtE_${PI7}& zsYa(k0WOQPk$CE`gTiGyDocmrQGD?6>atgN|8BqIy{-P3yC9j<{THPEp4t*5WL=hL`5cQRVw z=HmOAs|BUT!gZQJ4C1axI4JRS-luncPWLErZj{5ub%>V3ekxBYi2V_1r$afEx}`dZ z!?g0i$0RcI4Rhr??Bzk})b-V-^@tDXSoO!2)$1&`m$cK`kv6ta%jwa9ci|Nhx6?}P z7fU7RlV`kmAiv^~Qfpi_D|z5DpkZ}Y*XURo>8R1=%cN$VpH^bflSG{Ti5SkYX7pYg z4HMdYSvLZ|#KupnG^b;BT-SWBl;wrQ4&%@^O{?rdbccPEOZo#-=@aR}s&2voOjVzo zYHP?$3XCWI1a;VD(A;oS%y!Cf!&JBgsB7Qwh-}u9aY&l!&~Tef*;4;Mu|Y=SP-TsN zz*=efCt?aAaSk_yo-IK^SAhxHu~ZE~@{lNfGsC26I+M}~n^80#Ng|KmH)A70WnFw${~x#oDPo4|`#On42QYW~KU-;w8(b=BVRi zg#|~TMe}~7kdb)-4_cgYy?C{T!vdjF(e{(^`LD&a!Ua;Tn>smkuG~#iDDT zGnAw)!K^O0#pM~)3_`@;dY9Z2xV@A@+pE5FUH2;Fqqej@0Xpo(hmWN-sLw zt=__NI@D>IU(#AMU$3mVDjILMPJFb9kP+-8nU)uzC7qVnmmW)=sxFz4V5pUo%v&pS zsG4FOq^N{?IBZvNT&MKd()BRhFDH>GE{K5qU@A8$N@0cMM>PG&v0N-nVl~SjaZk@P zTr5oNPEF6FSfmJL4b6^7HVtDmz7QojVb;$;b;2uMGqu7y8rgH^^9Wl}AF)Z}D6`uw zg93Fu^Ksd;8aV+#&&*uIaHSRvL5Mex1_|jlrL%VeeZsM`jD1cgi|V`3j~+L(%>_MA z_+3q2i#=H-uZIk2Um;IRGo!!i#dXS6goX7(FB)ssR4?N15O1m%f~9P#7w{+I_b3iD zts)LeZCY6@>w8;RSk(=3SXkwYNz2V^(nX4^(uytW{ZEnGmbXE4!5)2S&l-7;oGpH!lE$UH{AXi6pY z%JDw3lZaad_G{?dP<;rM)pqE|4qdRR^ZIQQoPrJeR3D}@)YO1#8zkP)s0}bX_U;Dy z?HAqvy;~J`yo?SL8{TI`>~*^al#D(Q82*;H%|Gna2q6lI-i@P0@mk!u>`lId_9S$ruVKDZmwp9GIK$sKL}-Zax1>rG4i6M z54oe5Y?6%f`ABqK4jVNPFDE4hs+rn6W3hIo8!dL`Bsp5#R0DRKJJaHdWOZx)=78Kh;;^4B8!4r&IWrvCX%9)BKjREyM~uc#1OS5xmRWZAUJW z(=}|0P}YaofC}y;Smh348`~JMbG}GDU-QS@uHR%`j^z4^>9k3=9N}h7f86!t+-(=N zS^2fEj8CzWwWQFr*Yy#RwhVMMABx0x(v38?`jL9_hoNi$O=NpCJ1V&k;pAaE*G}%3 zEqC7;ci-5Ct)|b(rdtCicefp2lLPrIHOP5XD4mJnXX}rHZGJl{FZC)ZdzHed<6fQy z?3)eG;ocJlSeft}t#%80pdIf3ekI$86Zv`GA!@4_H6IJEHR)c&*FTCFX0_LCHgVH5LAGHlKkSlou@_VH zVSb$}_nW(_3q{Hz}9$awuTcev;&1)$67jNN#{DKTQr z04cpa#u?75eJU}`B{AxCESxnTfWF z^#0ppoq_p&vkyVNu-}lVXi#ia$5q2yHhr32J#Nd+_mbUTxY0xgu}QYWqPKzB{M� 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 -#include -#include -#include -#include - -#if defined(_MSC_VER) && (_MSC_VER <= 1800) -#define noexcept -#endif - -namespace std { - namespace experimental { - namespace drawing { -#if __cplusplus >= 201103L - inline namespace v1 { -#endif - enum class status { - success, - no_memory, - invalid_restore, - invalid_pop_group, - no_current_point, - invalid_matrix, - invalid_status, - null_pointer, - invalid_string, - invalid_path_data, - read_error, - write_error, - surface_finished, - surface_type_mismatch, - pattern_type_mismatch, - invalid_content, - invalid_format, - invalid_visual, - file_not_found, - invalid_dash, - invalid_dsc_comment, - invalid_index, - clip_not_representable, - temp_file_error, - invalid_stride, - font_type_mismatch, - user_font_immutable, - user_font_error, - negative_count, - invalid_clusters, - invalid_slant, - invalid_weight, - invalid_size, - user_font_not_implemented, - device_type_mismatch, - device_error, - invalid_mesh_construction, - device_finished, - last_status - }; - - enum class antialias { - default_antialias, - none, - gray, - subpixel, - fast, - good, - best - }; - - enum class content { - color, - alpha, - color_alpha - }; - - enum class fill_rule { - winding, - even_odd - }; - - enum class line_cap { - butt, - round, - square - }; - - enum class line_join { - miter, - round, - bevel - }; - - enum class compositing_operator { - clear, - source, - over, - in, - out, - atop, - dest, - dest_over, - dest_in, - dest_out, - dest_atop, - xor_compositing_operator, - add, - saturate, - multiply, - screen, - overlay, - darken, - lighten, - color_dodge, - color_burn, - hard_light, - soft_light, - difference, - exclusion, - hsl_hue, - hsl_saturation, - hsl_color, - hsl_luminosity - }; - - enum class format { - invalid, - argb32, - rgb24, - a8, - a1, - rgb16_565, - rgb30 - }; - - enum class path_data_type { - move_to, - line_to, - curve_to, - new_sub_path, - close_path - }; - - enum class extend { - none, - repeat, - reflect, - pad, - default_extend = none - }; - - enum class filter { - fast, - good, - best, - nearest, - bilinear, - gaussian, - default_filter = good - }; - - enum class pattern_type { - solid_color, - surface, - linear, - radial, - mesh, - raster_source - }; - - enum class font_slant { - normal, - italic, - oblique - }; - - enum class font_weight { - normal, - bold - }; - - enum class subpixel_order { - default_subpixel_order, - rgb, - bgr, - vrgb, - vbgr - }; - - enum class hint_style { - default_hint_style, - none, - slight, - medium, - full - }; - - enum class hint_metrics { - default_hint_metrics, - off, - on - }; - - namespace text_cluster_flags { - enum text_cluster_flags : int { - none = 0x0, - backward = 0x1 - }; - }; - - struct rectangle { - double x; - double y; - double width; - double height; - }; - - struct rgba_color { - double r; - double g; - double b; - double a; - - static rgba_color from_byte_values(unsigned char r, unsigned char g, unsigned char b, unsigned char a = 255u); - - const static rgba_color alice_blue; - const static rgba_color antique_white; - const static rgba_color aqua; - const static rgba_color aquamarine; - const static rgba_color azure; - const static rgba_color beige; - const static rgba_color bisque; - const static rgba_color black; - const static rgba_color blanched_almond; - const static rgba_color blue; - const static rgba_color blue_violet; - const static rgba_color brown; - const static rgba_color burly_wood; - const static rgba_color cadet_blue; - const static rgba_color chartreuse; - const static rgba_color chocolate; - const static rgba_color coral; - const static rgba_color cornflower_blue; - const static rgba_color cornsilk; - const static rgba_color crimson; - const static rgba_color cyan; - const static rgba_color dark_blue; - const static rgba_color dark_cyan; - const static rgba_color dark_goldenrod; - const static rgba_color dark_gray; - const static rgba_color dark_green; - const static rgba_color dark_grey; - const static rgba_color dark_khaki; - const static rgba_color dark_magenta; - const static rgba_color dark_olive_green; - const static rgba_color dark_orange; - const static rgba_color dark_orchid; - const static rgba_color dark_red; - const static rgba_color dark_salmon; - const static rgba_color dark_sea_green; - const static rgba_color dark_slate_blue; - const static rgba_color dark_slate_gray; - const static rgba_color dark_slate_grey; - const static rgba_color dark_turquoise; - const static rgba_color dark_violet; - const static rgba_color deep_pink; - const static rgba_color deep_sky_blue; - const static rgba_color dim_gray; - const static rgba_color dim_grey; - const static rgba_color dodger_blue; - const static rgba_color firebrick; - const static rgba_color floral_white; - const static rgba_color forest_green; - const static rgba_color fuchsia; - const static rgba_color gainsboro; - const static rgba_color ghost_white; - const static rgba_color gold; - const static rgba_color goldenrod; - const static rgba_color gray; - const static rgba_color green; - const static rgba_color green_yellow; - const static rgba_color grey; - const static rgba_color honeydew; - const static rgba_color hot_pink; - const static rgba_color indian_red; - const static rgba_color indigo; - const static rgba_color ivory; - const static rgba_color khaki; - const static rgba_color lavender; - const static rgba_color lavender_blush; - const static rgba_color lawn_green; - const static rgba_color lemon_chiffon; - const static rgba_color light_blue; - const static rgba_color light_coral; - const static rgba_color light_cyan; - const static rgba_color light_goldenrod_yellow; - const static rgba_color light_gray; - const static rgba_color light_green; - const static rgba_color light_grey; - const static rgba_color light_pink; - const static rgba_color light_salmon; - const static rgba_color light_sea_green; - const static rgba_color light_sky_blue; - const static rgba_color light_slate_gray; - const static rgba_color light_slate_grey; - const static rgba_color light_steel_blue; - const static rgba_color light_yellow; - const static rgba_color lime; - const static rgba_color lime_green; - const static rgba_color linen; - const static rgba_color magenta; - const static rgba_color maroon; - const static rgba_color medium_aquamarine; - const static rgba_color medium_blue; - const static rgba_color medium_orchid; - const static rgba_color medium_purple; - const static rgba_color medium_sea_green; - const static rgba_color medium_slate_blue; - const static rgba_color medium_spring_green; - const static rgba_color medium_turquoise; - const static rgba_color medium_violet_red; - const static rgba_color midnight_blue; - const static rgba_color mint_cream; - const static rgba_color misty_rose; - const static rgba_color moccasin; - const static rgba_color navajo_white; - const static rgba_color navy; - const static rgba_color old_lace; - const static rgba_color olive; - const static rgba_color olive_drab; - const static rgba_color orange; - const static rgba_color orange_red; - const static rgba_color orchid; - const static rgba_color pale_goldenrod; - const static rgba_color pale_green; - const static rgba_color pale_turquoise; - const static rgba_color pale_violet_red; - const static rgba_color papaya_whip; - const static rgba_color peach_puff; - const static rgba_color peru; - const static rgba_color pink; - const static rgba_color plum; - const static rgba_color powder_blue; - const static rgba_color purple; - const static rgba_color red; - const static rgba_color rosy_brown; - const static rgba_color royal_blue; - const static rgba_color saddle_brown; - const static rgba_color salmon; - const static rgba_color sandy_brown; - const static rgba_color sea_green; - const static rgba_color sea_shell; - const static rgba_color sienna; - const static rgba_color silver; - const static rgba_color sky_blue; - const static rgba_color slate_blue; - const static rgba_color slate_gray; - const static rgba_color slate_grey; - const static rgba_color snow; - const static rgba_color spring_green; - const static rgba_color steel_blue; - const static rgba_color tan; - const static rgba_color teal; - const static rgba_color thistle; - const static rgba_color tomato; - const static rgba_color turquoise; - const static rgba_color violet; - const static rgba_color wheat; - const static rgba_color white; - const static rgba_color white_smoke; - const static rgba_color yellow; - const static rgba_color yellow_green; - }; - - struct point { - double x; - double y; - - point operator+=(const point& rhs); - point operator+=(double rhs); - point operator-=(const point& rhs); - point operator-=(double rhs); - point operator*=(const point& rhs); - point operator*=(double rhs); - point operator/=(const point& rhs); - point operator/=(double rhs); - }; - - point operator+(const point& lhs); - point operator+(const point& lhs, const point& rhs); - point operator+(const point& lhs, double rhs); - point operator-(const point& lhs); - point operator-(const point& lhs, const point& rhs); - point operator-(const point& lhs, double rhs); - point operator*(const point& lhs, const point& rhs); - point operator*(const point& lhs, double rhs); - point operator/(const point& lhs, const point& rhs); - point operator/(const point& lhs, double rhs); - - struct glyph { - unsigned long index; - double x; - double y; - }; - - struct text_cluster { - int num_bytes; - int num_glyphs; - }; - - struct font_extents { - double ascent; - double descent; - double height; - double max_x_advance; - double max_y_advance; - }; - - struct text_extents { - double x_bearing; - double y_bearing; - double width; - double height; - double x_advance; - double y_advance; - }; - - struct matrix { - double xx; - double yx; - double xy; - double yy; - double x0; - double y0; - - static matrix init_identity(); - static matrix init_translate(const point& value); - static matrix init_scale(const point& value); - static matrix init_rotate(double radians); - static matrix init_shear_x(double factor); - static matrix init_shear_y(double factor); - - matrix& translate(const point& value); - matrix& scale(const point& value); - matrix& rotate(double radians); - matrix& shear_x(double factor); - matrix& shear_y(double factor); - double determinant(); - void invert(); - point transform_distance(const point& dist) const; - point transform_point(const point& pt) const; - - matrix operator*=(const matrix& rhs); - }; - - matrix operator*(const matrix& lhs, const matrix& rhs); - - union path_data - { - struct { - path_data_type type; - int length; - } header; - v1::point point; - double value; - }; - - // Forward declaration. - class path_builder; - - class path { - ::std::vector _Data; - bool _Has_current_point; - point _Current_point; - point _Extents_pt0; - point _Extents_pt1; - public: - typedef QPainterPath* native_handle_type; - - path() = delete; - path(const path_builder& pb); - path(const path& other) = default; - path& operator=(const path& other) = default; - path(path&& other); - path& operator=(path&& other); - - ::std::vector get_data() const; - const ::std::vector& get_data_ref() const; - void get_path_extents(point& pt0, point& pt1) const; - }; - - class path_builder { - friend class path; - ::std::vector _Data; - bool _Has_current_point; - point _Current_point; - point _Extents_pt0; - point _Extents_pt1; - matrix _Transform_matrix; - point _Origin; - - public: - path_builder(); - path_builder(const path_builder& other) = default; - path_builder& operator=(const path_builder& other) = default; - path_builder(path_builder&& other); - path_builder& operator=(path_builder&& other); - - path get_path() const; - path get_path_flat() const; - - void append_path(const path& p); - void append_path(const path_builder& p); - bool has_current_point(); - point get_current_point(); - void new_sub_path(); - void close_path(); - void arc(const point& center, double radius, double angle1, double angle2); - void arc_negative(const point& center, double radius, double angle1, double angle2); - void curve_to(const point& pt0, const point& pt1, const point& pt2); - void line_to(const point& pt); - void move_to(const point& pt); - void rectangle(const rectangle& rect); - void rel_curve_to(const point& dpt0, const point& dpt1, const point& dpt2); - void rel_line_to(const point& dpt); - void rel_move_to(const point& dpt); - - void set_transform_matrix(const matrix& m); - matrix get_transform_matrix() const; - void set_origin(const point& pt); - point get_origin() const; - - ::std::vector get_data() const; - const ::std::vector& get_data_ref() const; - ::std::vector& get_data_ref(); - void get_path_extents(point& pt0, point& pt1) const; - - void reset(); - }; - - class drawing_exception : public exception { - status _Status = status::last_status; - public: - drawing_exception() noexcept; - explicit drawing_exception(::std::experimental::drawing::status s) noexcept; - - virtual ~drawing_exception() noexcept; - - drawing_exception(const drawing_exception& rhs) noexcept = default; - drawing_exception& operator=(const drawing_exception& rhs) noexcept = default; - - virtual const char* what() const noexcept; - status get_status() const noexcept; - }; - - class device { - protected: - ::std::shared_ptr _Device; - public: - typedef QPaintEngine* native_handle_type; - native_handle_type native_handle() const; - - device() = delete; - device(const device&) = delete; - device& operator=(const device&) = delete; - device(device&& other); - device& operator=(device&& other); - explicit device(native_handle_type nh); - void flush(); - void acquire(); - void release(); - }; - - // Forward declaration. - class font_options; - - class font_options_builder { - antialias _Antialias = antialias::default_antialias; - subpixel_order _Subpixel_order = subpixel_order::default_subpixel_order; - hint_style _Hint_style = hint_style::default_hint_style; - hint_metrics _Hint_metrics = hint_metrics::default_hint_metrics; - - public: - font_options_builder() = default; - font_options_builder(const font_options_builder&) = default; - font_options_builder& operator=(const font_options_builder&) = default; - font_options_builder(font_options_builder&& other); - font_options_builder& operator=(font_options_builder&& other); - - font_options get_font_options() const; - void set_antialias(antialias a); - antialias get_antialias() const; - void set_subpixel_order(subpixel_order so); - subpixel_order get_subpixel_order() const; - void set_hint_style(hint_style hs); - hint_style get_hint_style() const; - void set_hint_metrics(hint_metrics hm); - hint_metrics get_hint_metrics() const; - }; - - class font_options { - ::std::shared_ptr<_QFontOptions> _Font_options; - public: - typedef _QFontOptions* native_handle_type; - native_handle_type native_handle() const; - - font_options() = delete; - font_options(const font_options&) = default; - font_options& operator=(const font_options&) = default; - font_options(font_options&& other); - font_options& operator=(font_options&& other); - font_options(antialias a, subpixel_order so, hint_style hs, hint_metrics hm); - explicit font_options(native_handle_type nh); - - antialias get_antialias() const; - subpixel_order get_subpixel_order() const; - hint_style get_hint_style() const; - hint_metrics get_hint_metrics() const; - }; - - class font_face { - protected: - ::std::shared_ptr _Font_face; - public: - typedef QFont* native_handle_type; - native_handle_type native_handle() const; - - font_face() = delete; - font_face(const font_face&) = default; - font_face& operator=(const font_face&) = default; - font_face(font_face&& other); - font_face& operator=(font_face&& other); - - explicit font_face(native_handle_type nh); - - virtual ~font_face(); - }; - - class scaled_font { - ::std::shared_ptr _Scaled_font; - - public: - typedef QFont* native_handle_type; - native_handle_type native_handle() const; - - scaled_font() = delete; - scaled_font(const scaled_font&) = default; - scaled_font& operator=(const scaled_font&) = default; - scaled_font(scaled_font&& other); - scaled_font& operator=(scaled_font&& other); - - explicit scaled_font(native_handle_type nh); - scaled_font(const font_face& ff, const matrix& fm, const matrix& ctm, const font_options& fo); - - font_extents get_extents() const; - text_extents get_text_extents(const ::std::string& utf8) const; - text_extents get_glyph_extents(const ::std::vector& glyphs) const; - ::std::vector text_to_glyphs(double x, double y, const ::std::string& utf8) const; - ::std::vector text_to_glyphs(double x, double y, const ::std::string& utf8, ::std::vector& clusters, text_cluster_flags::text_cluster_flags& clFlags) const; - }; - - class toy_font_face : public font_face { - public: - toy_font_face() = delete; - toy_font_face(const toy_font_face&) = default; - toy_font_face& operator=(const toy_font_face&) = default; - toy_font_face(const ::std::string& family, font_slant slant, font_weight weight); - toy_font_face(toy_font_face&& other); - toy_font_face& operator=(toy_font_face&& other); - - ::std::string get_family() const; - font_slant get_slant() const; - font_weight get_weight() const; - }; - - // Forward declaration. - class image_surface; - - // Forward declaration. - class linear_pattern_builder; - class mesh_pattern_builder; - class radial_pattern_builder; - class raster_source_pattern_builder; - class solid_color_pattern_builder; - class surface; - - class pattern { - public: - typedef QBrush* native_handle_type; - - private: - friend class linear_pattern_builder; - friend class mesh_pattern_builder; - friend class radial_pattern_builder; - friend class raster_source_pattern_builder; - friend class solid_color_pattern_builder; - friend class surface; - - pattern(native_handle_type nh); - - std::unique_ptr _Pattern; - pattern_type _Pattern_type; - - public: - native_handle_type native_handle() const; - - pattern() = delete; - pattern(const pattern&) = default; - pattern& operator=(const pattern&) = default; - pattern(pattern&& other); - pattern& operator=(pattern&& other); - - ~pattern(); - - pattern_type get_type() const; - }; - - class solid_color_pattern_builder { - pattern_type _Pattern_type; - extend _Extend; - filter _Filter; - matrix _Matrix; - rgba_color _Color; - - public: - solid_color_pattern_builder(const solid_color_pattern_builder&) = default; - solid_color_pattern_builder& operator=(const solid_color_pattern_builder&) = default; - solid_color_pattern_builder(solid_color_pattern_builder&& other); - solid_color_pattern_builder& operator=(solid_color_pattern_builder&& other); - solid_color_pattern_builder(const rgba_color& color); - - pattern get_pattern(); - void set_extend(extend e); - extend get_extend(); - void set_filter(filter f); - filter get_filter(); - void set_matrix(const matrix& m); - matrix get_matrix(); - - rgba_color get_rgba(); - void set_rgba(const rgba_color& color); - double get_red(); - void set_red(double red); - double get_green(); - void set_green(double green); - double get_blue(); - void set_blue(double blue); - double get_alpha(); - void set_alpha(double alpha); - }; - - class linear_pattern_builder { - pattern_type _Pattern_type; - extend _Extend; - filter _Filter; - matrix _Matrix; - - point _Point0; - point _Point1; - ::std::vector<::std::tuple> _Color_stops; - - public: - linear_pattern_builder() = delete; - linear_pattern_builder(const linear_pattern_builder&) = default; - linear_pattern_builder& operator=(const linear_pattern_builder&) = default; - linear_pattern_builder(linear_pattern_builder&& other); - linear_pattern_builder& operator=(linear_pattern_builder&& other); - linear_pattern_builder(const point& pt0, const point& pt1); - - pattern get_pattern(); - void set_extend(extend extend); - extend get_extend(); - void set_filter(filter filter); - filter get_filter(); - void set_matrix(const matrix& matrix); - matrix get_matrix(); - - void add_color_stop_rgba(double offset, const rgba_color& color); - int get_color_stop_count(); - - void get_color_stop_rgba(int index, double& offset, rgba_color& color); - void set_color_stop_rgba(int index, double offset, const rgba_color& color); - void get_linear_points(point& pt0, point& pt1); - void set_linear_points(const point& pt0, const point& pt1); - }; - - class radial_pattern_builder { - pattern_type _Pattern_type; - extend _Extend; - filter _Filter; - matrix _Matrix; - - point _Center0; - double _Radius0; - point _Center1; - double _Radius1; - ::std::vector<::std::tuple> _Color_stops; - - public: - radial_pattern_builder() = delete; - radial_pattern_builder(const radial_pattern_builder&) = default; - radial_pattern_builder& operator=(const radial_pattern_builder&) = default; - radial_pattern_builder(radial_pattern_builder&& other); - radial_pattern_builder& operator=(radial_pattern_builder&& other); - radial_pattern_builder(const point& center0, double radius0, const point& center1, double radius1); - - pattern get_pattern(); - void set_extend(extend extend); - extend get_extend(); - void set_filter(filter filter); - filter get_filter(); - void set_matrix(const matrix& matrix); - matrix get_matrix(); - - void add_color_stop_rgba(double offset, const rgba_color& color); - int get_color_stop_count(); - - void get_color_stop_rgba(int index, double& offset, rgba_color& color); - void set_color_stop_rgba(int index, double offset, const rgba_color& color); - - void get_radial_circles(point& center0, double& radius0, point& center1, double& radius1); - void set_radial_circles(const point& center0, double radius0, const point& center1, double radius1); - }; -#if 0 - class mesh_pattern_builder { - pattern_type _Pattern_type; - extend _Extend; - filter _Filter; - matrix _Matrix; - - bool _Has_current_patch; - unsigned int _Current_patch_index; - int _Current_patch_side_count; - point _Current_patch_initial_point; - typedef ::std::map _Control_points; - typedef ::std::map _Corner_colors; - // - typedef ::std::tuple _Patch; - ::std::vector<_Patch> _Patches; - public: - mesh_pattern_builder(); - mesh_pattern_builder(const mesh_pattern_builder&) = default; - mesh_pattern_builder& operator=(const mesh_pattern_builder&) = default; - mesh_pattern_builder(mesh_pattern_builder&& other); - mesh_pattern_builder& operator=(mesh_pattern_builder&& other); - - pattern get_pattern(); - void set_extend(extend extend); - extend get_extend(); - void set_filter(filter filter); - filter get_filter(); - void set_matrix(const matrix& matrix); - matrix get_matrix(); - - void begin_patch(); - void begin_edit_patch(unsigned int patch_num); - void end_patch(); - void move_to(const point& pt); - void line_to(const point& pt); - void curve_to(const point& pt0, const point& pt1, const point& pt2); - void set_control_point(unsigned int point_num, const point& pt); - void set_corner_color_rgba(unsigned int corner_num, const rgba_color& color); - void get_patch_count(unsigned int& count); - path get_path(unsigned int patch_num); - path_builder get_path_builder(unsigned int patch_num); - point get_control_point(unsigned int patch_num, unsigned int point_num); - rgba_color get_corner_color_rgba(unsigned int patch_num, unsigned int corner_num); - }; - - class raster_source_pattern_builder { - pattern_type _Pattern_type; - extend _Extend; - filter _Filter; - matrix _Matrix; - - void* _User_callback_data; - int _Width; - int _Height; - content _Content; - ::std::shared_ptr<::std::function> _Acquire_fn; - ::std::shared_ptr<::std::function> _Release_fn; - -// static cairo_surface_t* _Cairo_acquire(cairo_pattern_t* pattern_builder, void* this_ptr, cairo_surface_t* target, const cairo_rectangle_int_t* extents); -// static void _Cairo_release(cairo_pattern_t* pattern_builder, void* this_ptr, cairo_surface_t* surface); - - public: - raster_source_pattern_builder() = delete; - raster_source_pattern_builder(const raster_source_pattern_builder&) = default; - raster_source_pattern_builder& operator=(const raster_source_pattern_builder&) = default; - raster_source_pattern_builder(raster_source_pattern_builder&& other); - raster_source_pattern_builder& operator=(raster_source_pattern_builder&& other); - raster_source_pattern_builder(void* user_data, content content, int width, int height); - - pattern get_pattern(); - void set_extend(extend extend); - extend get_extend(); - void set_filter(filter filter); - filter get_filter(); - void set_matrix(const matrix& matrix); - matrix get_matrix(); - - void set_callback_data(void* data); - void* get_callback_data(); - void set_acquire( - ::std::function acquire_fn, - ::std::function release_fn - ); - void get_acquire( - ::std::function& acquire_fn, - ::std::function& release_fn - ); - }; -#endif - - struct _Surface_native_handles { - QPaintDevice* csfce; - QPaintEngine* cctxt; - }; - - class surface { - ::std::mutex _Lock_for_device; - ::std::weak_ptr _Device; - protected: - ::std::unique_ptr _Surface; - ::std::unique_ptr _Context; - - public: - surface() = delete; - - typedef _Surface_native_handles native_handle_type; - native_handle_type native_handle() const; - - surface(const surface&) = delete; - surface& operator=(const surface&) = delete; - - surface(surface&& other); - surface& operator=(surface&& other); - - explicit surface(native_handle_type nh); - - surface(format fmt, int width, int height); - // create_similar - surface(const surface& other, content content, int width, int height); - // create_for_rectangle - surface(const surface& target, const rectangle& rect); - - virtual ~surface(); - - void finish(); - void flush(); - - ::std::shared_ptr get_device(); - - content get_content(); - void mark_dirty(); - void mark_dirty_rectangle(const rectangle& rect); - - void set_device_offset(const point& offset); - void get_device_offset(point& offset); - void write_to_png(const ::std::string& filename); - image_surface map_to_image(const rectangle& extents); - void unmap_image(image_surface& image); - bool has_surface_resource() const; - - void save(); - void restore(); - void push_group(); - void push_group_with_content(content c); - surface pop_group(); - void pop_group_to_source(); - - void set_pattern(); - void set_pattern(const pattern& source); - pattern get_pattern(); - - void set_antialias(antialias a); - antialias get_antialias(); - - void set_dash(); - void set_dash(const ::std::vector& dashes, double offset); - int get_dash_count(); - void get_dash(::std::vector& dashes, double& offset); - - void set_fill_rule(fill_rule fr); - fill_rule get_fill_rule(); - - void set_line_cap(line_cap lc); - line_cap get_line_cap(); - - void set_line_join(line_join lj); - line_join get_line_join(); - - void set_line_width(double width); - double get_line_width(); - - void set_miter_limit(double limit); - double get_miter_limit(); - - void set_compositing_operator(compositing_operator co); - compositing_operator get_compositing_operator(); - - void set_tolerance(double tolerance); - double get_tolerance(); - - void clip(); - void clip_extents(point& pt0, point& pt1); - bool in_clip(const point& pt); - void reset_clip(); - - ::std::vector copy_clip_rectangle_list(); - - void fill(); - void fill(const surface& s); - void fill_extents(point& pt0, point& pt1); - bool in_fill(const point& pt); - - void mask(const pattern& pttn); - void mask(const surface& surface); - void mask(const surface& surface, const point& origin); - - void paint(); - void paint(const surface& s); - void paint_with_alpha(double alpha); - void paint_with_alpha(const surface& s, double alpha); - - void stroke(); - void stroke(const surface& s); - void stroke_extents(point& pt0, point& pt1); - bool in_stroke(const point& pt); - - void set_path(); - void set_path(const path& p); - - // Transformations - void translate(const point& value); - void scale(const point& value); - void rotate(double angle); - void transform(const matrix& matrix); - void set_matrix(const matrix& matrix); - void get_matrix(matrix& matrix); - void identity_matrix(); - void user_to_device(point& pt); - void user_to_device_distance(point& dpt); - void device_to_user(point& pt); - void device_to_user_distance(point& dpt); - - // Text - void select_font_face(const ::std::string& family, font_slant slant, font_weight weight); - void set_font_size(double size); - void set_font_matrix(const matrix& matrix); - void get_font_matrix(matrix& matrix); - void set_font_options(const font_options& options); - font_options get_font_options(); - void set_font_face(font_face& font_face); - font_face get_font_face(); - void set_scaled_font(const scaled_font& scaled_font); - scaled_font get_scaled_font(); - void show_text(const ::std::string& utf8); - void show_glyphs(const ::std::vector& glyphs); - void show_text_glyphs(const ::std::string& utf8, const ::std::vector& glyphs, const ::std::vector& clusters, text_cluster_flags::text_cluster_flags cluster_flags); - void font_extents(font_extents& extents); - void text_extents(const ::std::string& utf8, text_extents& extents); - void glyph_extents(const ::std::vector& glyphs, ::std::experimental::drawing::text_extents& extents); - }; - - class image_surface : public surface { - friend surface; - protected: - ::std::shared_ptr<::std::vector> _Data; - public: - image_surface() = delete; - image_surface(const image_surface&) = delete; - image_surface& operator=(const image_surface&) = delete; - image_surface(image_surface&& other); - image_surface& operator=(image_surface&& other); - //image_surface(surface::native_handle_type nh, surface::native_handle_type map_of); - image_surface(format format, int width, int height); - image_surface(vector& data, format format, int width, int height, int stride); - // create_similar_image - image_surface(surface& other, format format, int width, int height); - // create_from_png - image_surface(const ::std::string& filename); - - void set_data(::std::vector& data); - ::std::vector get_data(); - format get_format(); - int get_width(); - int get_height(); - int get_stride(); - }; - - int format_stride_for_width(format format, int width); - surface make_surface(surface::native_handle_type nh); // parameters are exposition only. - surface make_surface(format format, int width, int height); // parameters are exposition only. -#if __cplusplus >= 201103L - } -#endif - } - } -} - -#endif diff --git a/qt/src/device.cpp b/qt/src/device.cpp deleted file mode 100755 index 8916def..0000000 --- a/qt/src/device.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::drawing; - -device::native_handle_type device::native_handle() const { - return _Device.get(); -} - -device::device(device::native_handle_type nh) : _Device() { - - _Device = shared_ptr(nh); -} - -device::device(device&& other) { - _Device = move(other._Device); - other._Device = nullptr; -} - -device& device::operator=(device&& other) { - if (this != &other) { - _Device = move(other._Device); - other._Device = nullptr; - } - return *this; -} - -void device::flush() { -} - -void device::acquire() { -} - -void device::release() { -} diff --git a/qt/src/drawing.pro b/qt/src/drawing.pro deleted file mode 100755 index 768b0f1..0000000 --- a/qt/src/drawing.pro +++ /dev/null @@ -1,29 +0,0 @@ -TEMPLATE = lib -TARGET = drawing -INCLUDEPATH += . ../include -CONFIG += C++11 plugin - -DESTDIR = $$PWD/../lib/$$PLATFORM/$$BUILD -OBJECTS_DIR = $$OUT_PWD/obj/$$PLATFORM/$$BUILD - -# Input -HEADERS += ../include/drawing.h xdrawing.h xdrawinghelpers.h -SOURCES += device.cpp \ - drawing_exception.cpp \ - font_face.cpp \ - font_options.cpp \ - font_options_builder.cpp \ - image_surface.cpp \ - linear_pattern_builder.cpp \ - matrix.cpp \ - path.cpp \ - path_builder.cpp \ - pattern.cpp \ - point.cpp \ - radial_pattern_builder.cpp \ - rgba_color.cpp \ - scaled_font.cpp \ - solid_color_pattern_builder.cpp \ - surface.cpp \ - surface_pattern_builder.cpp \ - toy_font_face.cpp diff --git a/qt/src/drawing_exception.cpp b/qt/src/drawing_exception.cpp deleted file mode 100755 index 0a813f7..0000000 --- a/qt/src/drawing_exception.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "drawing.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::drawing; - -drawing_exception::drawing_exception() noexcept : _Status(status::success) { } - -drawing_exception::drawing_exception(status s) noexcept : _Status(s) { } - -drawing_exception::~drawing_exception() noexcept { } - -const char * drawing_exception::what() const noexcept { - // TODO: FIX - //return cairo_status_to_string(_Status_to_cairo_status_t(_Status)); - return ""; -} - -status drawing_exception::get_status() const noexcept { - return _Status; -} diff --git a/qt/src/font_face.cpp b/qt/src/font_face.cpp deleted file mode 100755 index 126f693..0000000 --- a/qt/src/font_face.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" - -using namespace std; -using namespace std::experimental::drawing; - -font_face::native_handle_type font_face::native_handle() const { - return _Font_face.get(); -} - -font_face::font_face(font_face&& other) { - _Font_face = move(other._Font_face); - other._Font_face = nullptr; -} - -font_face& font_face::operator=(font_face&& other) { - if (this != &other) { - _Font_face = move(other._Font_face); - other._Font_face = nullptr; - } - return *this; -} - -font_face::font_face(font_face::native_handle_type nh) { - _Font_face = shared_ptr(nh); -} - -font_face::~font_face() { -} diff --git a/qt/src/font_options.cpp b/qt/src/font_options.cpp deleted file mode 100755 index 06976d5..0000000 --- a/qt/src/font_options.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::drawing; - -font_options::native_handle_type font_options::native_handle() const { - return _Font_options.get(); -} - -font_options::font_options(font_options&& other) { - _Font_options = move(other._Font_options); - other._Font_options = nullptr; -} - -font_options& font_options::operator=(font_options&& other) { - if (this != &other) { - _Font_options = move(other._Font_options); - other._Font_options = nullptr; - } - return *this; -} - -font_options::font_options(antialias a, subpixel_order /*so*/, hint_style hs, hint_metrics /*hm*/) -: _Font_options(shared_ptr<_QFontOptions>(new _QFontOptions)) { - _Font_options->styleStrategy = _Antialias_to_QFontOptions(a); - _Font_options->hintingPreference = _Hint_style_to_QFontOptions(hs); -} - -font_options::font_options(font_options::native_handle_type nh) { - _Font_options = shared_ptr<_QFontOptions>(nh); -} - -antialias font_options::get_antialias() const { - return _QFontOptions_to_antialias(_Font_options->styleStrategy); -} - -subpixel_order font_options::get_subpixel_order() const { - return subpixel_order::default_subpixel_order; -} - -hint_style font_options::get_hint_style() const { - return _QFontOptions_to_hint_style(_Font_options->hintingPreference); -} - -hint_metrics font_options::get_hint_metrics() const { - return hint_metrics::default_hint_metrics; -} diff --git a/qt/src/font_options_builder.cpp b/qt/src/font_options_builder.cpp deleted file mode 100755 index 7ad3e3a..0000000 --- a/qt/src/font_options_builder.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::drawing; - -font_options_builder::font_options_builder(font_options_builder&& other) -: _Antialias(move(other._Antialias)) -, _Subpixel_order(move(other._Subpixel_order)) -, _Hint_style(move(other._Hint_style)) -, _Hint_metrics(move(other._Hint_metrics)) { -} - -font_options_builder& font_options_builder::operator=(font_options_builder&& other) { - if (this != &other) { - _Antialias = move(other._Antialias); - _Subpixel_order = move(other._Subpixel_order); - _Hint_style = move(other._Hint_style); - _Hint_metrics = move(other._Hint_metrics); - } - return *this; -} - -font_options font_options_builder::get_font_options() const { - return font_options(_Antialias, _Subpixel_order, _Hint_style, _Hint_metrics); -} - -void font_options_builder::set_antialias(antialias a) { - _Antialias = a; -} - -antialias font_options_builder::get_antialias() const { - return _Antialias; -} - -void font_options_builder::set_subpixel_order(subpixel_order so) { - _Subpixel_order = so; -} - -subpixel_order font_options_builder::get_subpixel_order() const { - return _Subpixel_order; -} - -void font_options_builder::set_hint_style(hint_style hs) { - _Hint_style = hs; -} - -hint_style font_options_builder::get_hint_style() const { - return _Hint_style; -} - -void font_options_builder::set_hint_metrics(hint_metrics hm) { - _Hint_metrics = hm; -} - -hint_metrics font_options_builder::get_hint_metrics() const { - return _Hint_metrics; -} diff --git a/qt/src/image_surface.cpp b/qt/src/image_surface.cpp deleted file mode 100755 index 50f3da0..0000000 --- a/qt/src/image_surface.cpp +++ /dev/null @@ -1,92 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" -#include - -using namespace std; -using namespace std::experimental::drawing; - -image_surface::image_surface(image_surface&& other) : surface(move(other)) { - _Data = move(other._Data); - other._Data = nullptr; -} - -image_surface& image_surface::operator=(image_surface&& other) { - if (this != &other) { - surface::operator=(move(other)); - _Data = move(other._Data); - other._Data = nullptr; - } - return *this; -} - -image_surface::image_surface(format format, int width, int height) - : surface({ nullptr, nullptr }) - , _Data(nullptr) { - _Surface = unique_ptr(new QImage(width, height, _Format_to_QImage_Format(format))); -} - -image_surface::image_surface(vector& data, format format, int width, int height, int stride) - : surface({ nullptr, nullptr }) - , _Data(new vector) { - assert(stride == format_stride_for_width(format, width)); - _Data->resize(height * stride); - _Data->assign(begin(data), end(data)); - _Surface = unique_ptr(new QImage(_Data->data(), width, height, stride, _Format_to_QImage_Format(format))); -} - -image_surface::image_surface(surface& other, format format, int width, int height) - : surface({ nullptr, nullptr }) - , _Data(nullptr) { - _Surface = unique_ptr(new QImage(static_cast(other.native_handle().csfce)->constBits(), width, height, _Format_to_QImage_Format(format))); -} - -image_surface::image_surface(const string& filename) - : surface({ nullptr, nullptr }) - , _Data(nullptr) { - _Surface = unique_ptr(new QImage(QString::fromStdString(filename))); -} - -void image_surface::set_data(vector& data) { - auto expected_size = static_cast(get_stride() * get_height()); - if (data.size() != static_cast(expected_size)) { - throw drawing_exception(::std::experimental::drawing::status::invalid_stride); - } - if (_Surface.get() == nullptr) { - throw drawing_exception(::std::experimental::drawing::status::null_pointer); - } - auto imageData = static_cast(_Surface.get())->bits(); - if (imageData == nullptr) { - throw drawing_exception(::std::experimental::drawing::status::null_pointer); - } - ::std::memcpy(imageData, data.data(), expected_size); -} - -vector image_surface::get_data() { - auto required_size = get_stride() * get_height(); - vector data; - auto imageData = static_cast(_Surface.get())->constBits(); - if (imageData == nullptr) { - data.clear(); - } - else { - data.assign(imageData, imageData + required_size); - } - return data; -} - -format image_surface::get_format() { - return _QImage_Format_to_format(static_cast(_Surface.get())->format()); -} - -int image_surface::get_width() { - return static_cast(_Surface.get())->width(); -} - -int image_surface::get_height() { - return static_cast(_Surface.get())->height(); -} - -int image_surface::get_stride() { - return static_cast(_Surface.get())->bytesPerLine(); -} diff --git a/qt/src/linear_pattern_builder.cpp b/qt/src/linear_pattern_builder.cpp deleted file mode 100755 index 5bd9d0f..0000000 --- a/qt/src/linear_pattern_builder.cpp +++ /dev/null @@ -1,119 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::drawing; - -linear_pattern_builder::linear_pattern_builder(linear_pattern_builder&& other) -: _Pattern_type(move(other._Pattern_type)) -, _Extend(move(other._Extend)) -, _Filter(move(other._Filter)) -, _Matrix(move(other._Matrix)) -, _Point0(move(other._Point0)) -, _Point1(move(other._Point1)) -, _Color_stops(move(other._Color_stops)) { -} - -linear_pattern_builder& linear_pattern_builder::operator=(linear_pattern_builder&& other) { - if (this != &other) { - _Pattern_type = move(other._Pattern_type); - _Extend = move(other._Extend); - _Filter = move(other._Filter); - _Matrix = move(other._Matrix); - _Point0 = move(other._Point0); - _Point1 = move(other._Point1); - _Color_stops = move(other._Color_stops); - } - return *this; -} - -linear_pattern_builder::linear_pattern_builder(const point& pt0, const point& pt1) -: _Pattern_type(pattern_type::linear) -, _Extend(extend::default_extend) -, _Filter(filter::default_filter) -, _Matrix(matrix::init_identity()) -, _Point0(pt0) -, _Point1(pt1) -, _Color_stops() { -} - -pattern linear_pattern_builder::get_pattern() { - QLinearGradient pat(_Point0.x, _Point0.y, _Point1.x, _Point1.y); - for (const auto& stop : _Color_stops) { - pat.setColorAt(get<0>(stop), rgba_color_to_QColor(get<1>(stop))); - } - - return pattern(new QBrush(pat)); -} - -void linear_pattern_builder::set_extend(extend e) { - _Extend = e; -} - -extend linear_pattern_builder::get_extend() { - return _Extend; -} - -void linear_pattern_builder::set_filter(filter f) { - _Filter = f; -} - -filter linear_pattern_builder::get_filter() { - return _Filter; -} - -void linear_pattern_builder::set_matrix(const matrix& m) { - _Matrix = m; -} - -matrix linear_pattern_builder::get_matrix() { - return _Matrix; -} - -void linear_pattern_builder::add_color_stop_rgba(double offset, const rgba_color& color) { - assert(offset >= 0.0 && offset <= 1.0); - assert(color.r >= 0.0 && color.r <= 1.0); - assert(color.g >= 0.0 && color.g <= 1.0); - assert(color.b >= 0.0 && color.b <= 1.0); - assert(color.a >= 0.0 && color.a <= 1.0); - _Color_stops.push_back(make_tuple(offset, color)); -} - -int linear_pattern_builder::get_color_stop_count() { - return static_cast(_Color_stops.size()); -} - -void linear_pattern_builder::get_color_stop_rgba(int index, double& offset, rgba_color& color) { - if (static_cast(index) >= _Color_stops.size() || index < 0) { - _Throw_if_failed_status(status::invalid_index); - } - - const auto& stop = _Color_stops.at(index); - offset = get<0>(stop); - color = get<1>(stop); -} - -void linear_pattern_builder::set_color_stop_rgba(int index, double offset, const rgba_color& color) { - assert(offset >= 0.0 && offset <= 1.0); - assert(color.r >= 0.0 && color.r <= 1.0); - assert(color.g >= 0.0 && color.g <= 1.0); - assert(color.b >= 0.0 && color.b <= 1.0); - assert(color.a >= 0.0 && color.a <= 1.0); - - if (static_cast(index) >= _Color_stops.size() || index < 0) { - _Throw_if_failed_status(status::invalid_index); - } - - _Color_stops[index] = make_tuple(offset, color); -} - -void linear_pattern_builder::get_linear_points(point& pt0, point& pt1) { - pt0 = _Point0; - pt1 = _Point1; -} - -void linear_pattern_builder::set_linear_points(const point& pt0, const point& pt1) { - _Point0 = pt0; - _Point1 = pt1; -} diff --git a/qt/src/matrix.cpp b/qt/src/matrix.cpp deleted file mode 100755 index a88d994..0000000 --- a/qt/src/matrix.cpp +++ /dev/null @@ -1,157 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" -#include - - -using namespace std; -using namespace std::experimental::drawing; - -namespace { - -inline -double -det2x2(double a1, double a2, double b1, double b2) { - return a1 * b2 - a2 * b1; -} - -} // anon - -matrix matrix::init_identity() { - return{ 1.0, 0.0, 0.0, 1.0, 0.0, 0.0 }; -} - -matrix matrix::init_translate(const point& value) { - return{ 1.0, 0.0, 0.0, 1.0, value.x, value.y }; -} - -matrix matrix::init_scale(const point& value) { - return{ value.x, 0.0, 0.0, value.y, 0.0, 0.0 }; -} - -matrix matrix::init_rotate(double radians) { - auto sine = sin(radians); - auto cosine = cos(radians); - return{ cosine, sine, -sine, cosine, 0.0, 0.0 }; -} - -matrix matrix::init_shear_x(double factor) { - return{ 1.0, 0.0, factor, 1.0, 0.0, 0.0 }; -} - -matrix matrix::init_shear_y(double factor) { - return{ 1.0, factor, 0.0, 1.0, 0.0, 0.0 }; -} - -matrix& matrix::translate(const point& value) { - *this = init_translate(value) * (*this); - return *this; -} - -matrix& matrix::scale(const point& value) { - *this *= init_scale(value); - return *this; -} - -matrix& matrix::rotate(double radians) { - *this *= init_rotate(radians); - return *this; -} - -matrix& matrix::shear_x(double factor) { - *this *= init_shear_x(factor); - return *this; -} - -matrix& matrix::shear_y(double factor) { - *this *= init_shear_y(factor); - return *this; -} - -double matrix::determinant() { - if (isnan(x0) || isnan(y0)) { - throw drawing_exception(status::invalid_matrix); - } - return xx * yy - yx * xy; -} - -void matrix::invert() { - // Yep, peeked at the cairo sources - /* Simple scaling|translation matrices are quite common... */ - if (xy == 0. && yx == 0.) { - x0 = -x0; - y0 = -y0; - - if (xx != 1.) { - if (xx == 0.) - throw drawing_exception(status::invalid_matrix); - - xx = 1. / xx; - x0 *= xx; - } - - if (yy != 1.) { - if (yy == 0.) - throw drawing_exception(status::invalid_matrix); - - yy = 1. / yy; - y0 *= yy; - } - } else { - - /* inv (A) = 1/det (A) * adj (A) */ - const double det = det2x2 (xx, yx, xy, yy); - - if (! isfinite (det)) - throw drawing_exception(status::invalid_matrix); - - if (det == 0) - throw drawing_exception(status::invalid_matrix); - - const double a = xx, b = yx, c = xy, d = yy, tx = x0, ty = y0; - const double onOverDet = 1 / det; - - xx = d * onOverDet; - yx = -b * onOverDet; - xy = -c * onOverDet; - yy = a * onOverDet; - x0 = (c * ty - d * tx) * onOverDet; - y0 = (b * tx - a * ty) * onOverDet; - } -} - -matrix matrix::operator*=(const matrix& rhs) { - xx = (xx * rhs.xx) + (yx * rhs.xy); - yx = (xx * rhs.yx) + (yx * rhs.yy); - xy = (xy * rhs.xx) + (yy * rhs.xy); - yy = (xy * rhs.yx) + (yy * rhs.yy); - x0 = (x0 * rhs.xx) + (y0 * rhs.xy) + x0; - y0 = (x0 * rhs.yx) + (y0 * rhs.yy) + y0; - - return *this; -} - -namespace std { - namespace experimental { - namespace drawing { - matrix operator*(const matrix& lhs, const matrix& rhs) { - return matrix{ - (lhs.xx * rhs.xx) + (lhs.yx * rhs.xy), - (lhs.xx * rhs.yx) + (lhs.yx * rhs.yy), - (lhs.xy * rhs.xx) + (lhs.yy * rhs.xy), - (lhs.xy * rhs.yx) + (lhs.yy * rhs.yy), - (lhs.x0 * rhs.xx) + (lhs.y0 * rhs.xy) + lhs.x0, - (lhs.x0 * rhs.yx) + (lhs.y0 * rhs.yy) + lhs.y0 - }; - } - } - } -} - -point matrix::transform_distance(const point& dist) const { - return{ xx * dist.x + xy * dist.y, yx * dist.x + yy * dist.y }; -} - -point matrix::transform_point(const point& pt) const { - return transform_distance(pt) + point{ x0, y0 }; -} diff --git a/qt/src/path.cpp b/qt/src/path.cpp deleted file mode 100755 index 7035ea4..0000000 --- a/qt/src/path.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::drawing; - -path::path(const path_builder& pb) -: _Data(pb._Data) -, _Has_current_point(pb._Has_current_point) -, _Current_point(pb._Current_point) -, _Extents_pt0(pb._Extents_pt0) -, _Extents_pt1(pb._Extents_pt1) { -} - -path::path(path&& other) -: _Data(move(other._Data)) -, _Has_current_point(move(other._Has_current_point)) -, _Current_point(move(other._Current_point)) -, _Extents_pt0(move(other._Extents_pt0)) -, _Extents_pt1(move(other._Extents_pt0)) { -} - -path& path::operator=(path&& other) { - if (this != &other) { - _Data = move(other._Data); - _Has_current_point = move(other._Has_current_point); - _Current_point = move(other._Current_point); - _Extents_pt0 = move(other._Extents_pt0); - _Extents_pt1 = move(other._Extents_pt1); - } - return *this; -} - -vector path::get_data() const { - return vector(_Data); -} - -const vector& path::get_data_ref() const { - return _Data; -} - -void path::get_path_extents(point& pt0, point& pt1) const { - pt0 = _Extents_pt0; - pt1 = _Extents_pt1; -} diff --git a/qt/src/path_builder.cpp b/qt/src/path_builder.cpp deleted file mode 100755 index 40e0b06..0000000 --- a/qt/src/path_builder.cpp +++ /dev/null @@ -1,701 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" -#include - -using namespace std; -using namespace std::experimental::drawing; - -path_builder::path_builder() - : _Data() - , _Has_current_point() - , _Current_point() - , _Extents_pt0() - , _Extents_pt1() - , _Transform_matrix(matrix::init_identity()) - , _Origin() { -} - -path_builder::path_builder(path_builder&& other) - : _Data(move(other._Data)) - , _Has_current_point(move(other._Has_current_point)) - , _Current_point(move(other._Current_point)) - , _Extents_pt0(move(other._Extents_pt0)) - , _Extents_pt1(move(other._Extents_pt1)) - , _Transform_matrix(move(other._Transform_matrix)) - , _Origin(move(other._Origin)) { -} - -path_builder& path_builder::operator=(path_builder&& other) { - if (this != &other) { - _Data = move(other._Data); - _Has_current_point = move(other._Has_current_point); - _Current_point = move(other._Current_point); - _Extents_pt0 = move(other._Extents_pt0); - _Extents_pt1 = move(other._Extents_pt1); - _Transform_matrix = move(other._Transform_matrix); - _Origin = move(other._Origin); - } - return *this; -} - -path path_builder::get_path() const { - return path(*this); -} - -path path_builder::get_path_flat() const { - throw runtime_error("Not implemented yet."); -} - -bool path_builder::has_current_point() { - return _Has_current_point; -} - -void path_builder::append_path(const path& p) { - const auto& data = p.get_data_ref(); - for (const auto& item : data) { - _Data.push_back(item); - } -} - -void path_builder::append_path(const path_builder& p) { - for (const auto& item : p._Data) { - _Data.push_back(item); - } -} - -point path_builder::get_current_point() { - assert(has_current_point()); - return point((*_Data.crend()).point); -} - -void path_builder::new_sub_path() { - path_data pd{ }; - pd.header.type = path_data_type::new_sub_path; - pd.header.length = 1; - _Data.push_back(pd); -} - -void path_builder::close_path() { - path_data pd{ }; - pd.header.type = path_data_type::close_path; - pd.header.length = 1; - _Data.push_back(pd); -} - -point _Rotate_point(const point& pt, double angle, bool clockwise = true) { - if (clockwise) { - return{ pt.x * cos(angle) + pt.y * sin(angle), -(pt.x * -(sin(angle)) + pt.y * cos(angle)) }; - } - else { - return{ pt.x * cos(angle) + pt.y * sin(angle), pt.x * -(sin(angle)) + pt.y * cos(angle) }; - } -} - -void _Add_arc_as_beziers_to_path_builder(const point& center, double radius, double angle1, double angle2, path_builder& pb, bool arcNegative = false) { - if (arcNegative) { - while (angle2 > angle1) { - angle2 -= _PI * 2.0; - } - } - else { - while (angle2 < angle1) { - angle2 += _PI * 2.0; - } - } - point pt0, pt1, pt2, pt3; - int bezierCount = 1; - double theta; - if (arcNegative) { - theta = angle1 - angle2; - } - else { - theta = angle2 - angle1; - } - double phi; - - { - // See: DeVeneza, Richard A., "How to determine the control points of a Bézier curve that approximates a small circular arc" (Nov. 2004) [ http://www.tinaja.com/glib/bezcirc2.pdf ]. - - while (theta >= (_PI / 2.0)) { - theta /= 2.0; - bezierCount += bezierCount; - } - - phi = theta / 2.0; - - auto cosinePhi = cos(phi); - auto sinePhi = sin(phi); - - pt0.x = cosinePhi; - pt0.y = -sinePhi; - - pt3.x = pt0.x; - pt3.y = -pt0.y; - - pt1.x = (4.0 - cosinePhi) / 3.0; - pt1.y = -(((1.0 - cosinePhi) * (3.0 - cosinePhi)) / (3.0 * sinePhi)); - - pt2.x = pt1.x; - pt2.y = -pt1.y; - - } - - { - if (!arcNegative) { - phi = -phi; - } - // Rotate all points to start with a zero angle. - pt0 = _Rotate_point(pt0, phi); - pt1 = _Rotate_point(pt1, phi); - pt2 = _Rotate_point(pt2, phi); - pt3 = _Rotate_point(pt3, phi); - - if (arcNegative) { - auto tempPt = pt3; - pt3 = pt0; - pt0 = tempPt; - tempPt = pt2; - pt2 = pt1; - pt1 = tempPt; - } - } - - auto currentTheta = angle1; - - const auto startPoint = center + _Rotate_point(pt0 * radius, currentTheta); - if (pb.has_current_point()) { - pb.line_to(center + _Rotate_point(pt0 * radius, currentTheta)); - } - else { - pb.new_sub_path(); - } - - pb.move_to(center); - pb.line_to(startPoint); - - // We start at the point derived from angle1 and continue adding beziers until the count reaches zero. - // The point we have is already rotated by half of theta. - for (; bezierCount > 0; bezierCount--) { - pb.curve_to( - center + _Rotate_point(pt1 * radius, currentTheta), - center + _Rotate_point(pt2 * radius, currentTheta), - center + _Rotate_point(pt3 * radius, currentTheta) - ); - - if (arcNegative) { - currentTheta -= theta; - } - else { - currentTheta += theta; - } - } - pb.line_to(center); - pb.close_path(); -} - -void path_builder::arc(const point& center, double radius, double angle1, double angle2) { - _Add_arc_as_beziers_to_path_builder(center, radius, angle1, angle2, *this, false); - close_path(); -} - -void path_builder::arc_negative(const point& center, double radius, double angle1, double angle2) { - _Add_arc_as_beziers_to_path_builder(center, radius, angle1, angle2, *this, true); - close_path(); -} - -void path_builder::curve_to(const point& pt0, const point& pt1, const point& pt2) { - if (!_Has_current_point) { - move_to(pt0); - } - path_data pd; - pd.header.type = path_data_type::curve_to; - pd.header.length = 4; - _Data.push_back(pd); - pd = { }; - pd.point = _Transform_matrix.transform_point(pt0 - _Origin) + _Origin; - _Data.push_back(pd); - pd.point = _Transform_matrix.transform_point(pt1 - _Origin) + _Origin; - _Data.push_back(pd); - pd.point = _Transform_matrix.transform_point(pt2 - _Origin) + _Origin; - _Data.push_back(pd); - _Has_current_point = true; - _Current_point = pd.point; -} - -void path_builder::line_to(const point& pt) { - path_data pd; - if (!_Has_current_point) { - move_to(pt); - return; - } - pd.header.type = path_data_type::line_to; - pd.header.length = 2; - _Data.push_back(pd); - pd = { }; - pd.point = _Transform_matrix.transform_point(pt - _Origin) + _Origin; - _Data.push_back(pd); - _Has_current_point = true; - _Current_point = pd.point; -} - -void path_builder::move_to(const point& pt) { - path_data pd; - pd.header.type = path_data_type::move_to; - pd.header.length = 2; - _Data.push_back(pd); - pd = { }; - pd.point = _Transform_matrix.transform_point(pt - _Origin) + _Origin; - _Data.push_back(pd); - _Has_current_point = true; - _Current_point = pd.point; -} - -void path_builder::rectangle(const experimental::drawing::rectangle& rect) { - move_to({ rect.x, rect.y }); - line_to({ rect.x + rect.width, rect.y }); - line_to({ rect.x + rect.width, rect.y + rect.height }); - line_to({ rect.x, rect.y + rect.height }); - close_path(); -} - -void path_builder::rel_curve_to(const point& dpt0, const point& dpt1, const point& dpt2) { - if (!_Has_current_point) { - throw drawing_exception(status::no_current_point); - } - curve_to(dpt0 + _Current_point, dpt1 + _Current_point, dpt2 + _Current_point); -} - -void path_builder::rel_line_to(const point& dpt) { - if (!_Has_current_point) { - throw drawing_exception(status::no_current_point); - } - line_to(dpt + _Current_point); -} - -void path_builder::rel_move_to(const point& dpt) { - if (!_Has_current_point) { - throw drawing_exception(status::no_current_point); - } - move_to(dpt + _Current_point); -} - -void path_builder::set_transform_matrix(const matrix& m) { - _Transform_matrix = m; -} - -matrix path_builder::get_transform_matrix() const { - return _Transform_matrix; -} - -void path_builder::set_origin(const point& pt) { - _Origin = pt; -} - -point path_builder::get_origin() const { - return _Origin; -} - -vector path_builder::get_data() const { - return vector(_Data); -} - -const vector& path_builder::get_data_ref() const { - return _Data; -} - -vector& path_builder::get_data_ref() { - return _Data; -} - -point operator*(double lhs, const point& rhs) { - return{ lhs * rhs.x, lhs * rhs.y }; -} - -// See: http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/ -bool _Almost_equal_relative(double a, double b, double epsilon) { - auto diff = abs(a - b); - a = abs(a); - b = abs(b); - auto largest = (b > a) ? b : a; - if (diff <= largest * epsilon) { - return true; - } - return false; -} - -double _Curve_value_for_t(double a, double b, double c, double d, double t) { - return pow(1.0 - t, 3.0) * a + 3.0 * pow(1.0 - t, 2.0) * t * b + 3.0 * (1.0 - t) * pow(t, 2.0) * c + pow(t, 3.0) * d; -} - -inline point _Cubic_bezier_derivative_for_t(const point& pt0, const point& pt1, const point& pt2, const point& pt3, double t) { - return 3.0 * pow(1.0 - t, 2.0) * (pt1 - pt0) + 6.0 * (1.0 - t) * t * (pt2 - pt1) + 3.0 * pow(t, 2.0) * (pt3 - pt2); -} - -inline bool _Same_sign(double lhs, double rhs) { - return ((lhs < 0.0) && (rhs < 0.0)) || ((lhs > 0.0) && (rhs > 0.0)); -} - -double _Find_t_for_d_of_t_equal_zero(const point& pt0, const point& pt1, const point& pt2, const point& pt3, double t0, double t2, const bool findX, const double epsilon = DBL_EPSILON) { - // Validate that t0 is the low value, t2 is the high value, t0 is not equal to t2, and that both are in the range [0.0, 1.0]. - assert(t0 >= 0.0 && t0 < t2 && t2 <= 1.0); - // Find the midpoint. - double t1 = (t2 - t0) / 2.0 + t0; - - double t1Previous = -1.0; - // Short-circuit and return current t0 if t0 and t1 are equal or t1 and t1Previous are equal to avoid infinite looping. - if (_Almost_equal_relative(t0, t1, epsilon) || _Almost_equal_relative(t1, t1Previous, epsilon)) { - return t0; - } - auto dt0 = _Cubic_bezier_derivative_for_t(pt0, pt1, pt2, pt3, t0); - auto dt2 = _Cubic_bezier_derivative_for_t(pt0, pt1, pt2, pt3, t2); - - if (findX) { - assert(!_Same_sign(dt0.x, dt2.x)); - } - else { - assert(!_Same_sign(dt0.y, dt2.y)); - } - - auto dt1 = +_Cubic_bezier_derivative_for_t(pt0, pt1, pt2, pt3, t1); - - // If t0 and t1 are equal or t1 and t1Previous are equal, we can no longer get a meaningful t1 value so the value of t0 will have to be accepted as close enough. - while (!_Almost_equal_relative(t0, t1, epsilon) && !_Almost_equal_relative(t1, t1Previous, epsilon)) { - if (findX) { - if (_Almost_equal_relative(dt1.x, 0.0, epsilon)) { - return t1; - } - if (_Same_sign(dt0.x, dt1.x)) { - // Since t0 and t2 are different signs and t0 and t1 are the same sign, we know our value lies between t1 and t2 so set t0 = t1 and calculate the new t1. - t0 = t1; - t1Previous = t1; - t1 = (t2 - t0) / 2.0 + t0; - } - else { - assert(_Same_sign(dt1.x, dt2.x)); - // Since t0 and t2 are different signs and t1 and t2 are the same sign, we know our value lies between t0 and t1 so set t2 = t1 and calculate the new t1. - t2 = t1; - t1Previous = t1; - t1 = (t2 - t0) / 2.0 + t0; - } - } - else { - if (_Almost_equal_relative(dt1.y, 0.0, epsilon)) { - return t1; - } - if (_Same_sign(dt0.y, dt1.y)) { - // Since t0 and t2 are different signs and t0 and t1 are the same sign, we know our value lies between t1 and t2 so set t0 = t1 and calculate the new t1. - t0 = t1; - t1Previous = t1; - t1 = (t2 - t0) / 2.0 + t0; - } - else { - assert(_Same_sign(dt1.y, dt2.y)); - // Since t0 and t2 are different signs and t1 and t2 are the same sign, we know our value lies between t0 and t1 so set t2 = t1 and calculate the new t1. - t2 = t1; - t1Previous = t1; - t1 = (t2 - t0) / 2.0 + t0; - } - } - } - return t1; -} - -void _Curve_to_extents(const point& pt0, const point& pt1, const point& pt2, const point& pt3, point& extents0, point& extents1) { - // We know at a minimum that the extents are the two knots, pt0 and pt3. The only question is whether the extents go beyond those two points. - extents0.x = min(pt0.x, pt3.x); - extents0.y = min(pt0.y, pt3.y); - extents1.x = max(pt0.x, pt3.x); - extents1.y = max(pt0.y, pt3.y); - - // Find X's and Ys (between 0 and 2). - int numPoints = 0; - int numXs = 0; - int numYs = 0; - - const auto dt0 = _Cubic_bezier_derivative_for_t(pt0, pt1, pt2, pt3, 0.0); - const auto dt1 = _Cubic_bezier_derivative_for_t(pt0, pt1, pt2, pt3, 0.5); - const auto dt2 = _Cubic_bezier_derivative_for_t(pt0, pt1, pt2, pt3, 1.0); - bool foundLowX = false; - bool foundHighX = false; - bool foundLowY = false; - bool foundHighY = false; - - const double epsilon = DBL_EPSILON; - - // X values - if (_Almost_equal_relative(dt0.x, 0.0, epsilon)) { - assert(numXs == 0); - // First knot is critical. We already assigned it so we're done with that. - foundLowX = true; - numPoints++; - numXs++; - if (_Same_sign(dt1.x, dt2.x)) { - // No second critical point so the second knot is the other extent and we already assigned it so we're done with that. - foundHighX = true; - numPoints++; - numXs++; - } - else { - auto t = _Find_t_for_d_of_t_equal_zero(pt0, pt1, pt2, pt3, 0.5, 1.0, true); - auto xval = _Curve_value_for_t(pt0.x, pt1.x, pt2.x, pt3.x, t); - // We do this min/max assignment because critical points just signal a change in curve direction, not that the critical point is actually a min/max point. - extents0.x = min(extents0.x, xval); - extents1.x = max(extents1.x, xval); - foundHighX = true; - numPoints++; - numXs++; - } - } - if (_Almost_equal_relative(dt1.x, 0.0, epsilon)) { - assert(numXs == 0); - // Center is only critical. - auto cxval = _Curve_value_for_t(pt0.x, pt1.x, pt2.x, pt3.x, 0.5); - // Arbitrarily use pt3.x rather than pt0.x; they are the same value regardless. - assert(_Almost_equal_relative(pt0.x, pt3.x, epsilon)); - extents0.x = min(cxval, pt3.x); - extents1.x = max(cxval, pt3.x); - numPoints += 2; - numXs += 2; - } - if (_Almost_equal_relative(dt2.x, 0.0, epsilon)) { - assert(numXs == 0); - numPoints++; - numXs++; - foundHighX = true; - if (_Same_sign(dt0.x, dt1.x)) { - // No second critical point so the first knot is the other extent and we already assigned it so we're done with that. - foundLowX = true; - numPoints++; - numXs++; - } - else { - auto t = _Find_t_for_d_of_t_equal_zero(pt0, pt1, pt2, pt3, 0.0, 0.5, true); - auto xval = _Curve_value_for_t(pt0.y, pt1.y, pt2.y, pt3.y, t); - // We do this min/max assignment because critical points just signal a change in curve direction, not that the critical point is actually a min/max point. - extents0.x = min(extents0.x, xval); - extents1.x = max(extents1.x, xval); - foundLowX = true; - numPoints++; - numXs++; - } - } - if (numXs == 0) { - if (_Same_sign(dt0.x, dt1.x) && _Same_sign(dt1.x, dt2.x)) { - // No critical points on X: use ends. - extents0.x = min(pt0.x, pt3.x); - extents1.x = max(pt0.x, pt3.x); - foundLowX = true; - foundHighX = true; - numPoints += 2; - numXs += 2; - } - } - if (!foundLowX) { - if (_Same_sign(dt0.x, dt1.x)) { - // There is no critical point between dt0.x and dt1.x so the lowX point is pt0.x, which we already assigned. - foundLowX = true; - numPoints++; - numXs++; - } - else { - auto t = _Find_t_for_d_of_t_equal_zero(pt0, pt1, pt2, pt3, 0.0, 0.5, true); - auto xval = _Curve_value_for_t(pt0.x, pt1.x, pt2.x, pt3.x, t); - // We do this min/max assignment because critical points just signal a change in curve direction, not that the critical point is actually a min/max point. - extents0.x = min(extents0.x, xval); - extents1.x = max(extents1.x, xval); - foundLowX = true; - numPoints++; - numXs++; - } - } - if (!foundHighX) { - if (_Same_sign(dt1.x, dt2.x)) { - // There is no critical point between dt1.x and dt2.x so the highX point is pt3.x, which we already assigned. - foundHighX = true; - numPoints++; - numXs++; - } - else { - auto t = _Find_t_for_d_of_t_equal_zero(pt0, pt1, pt2, pt3, 0.5, 1.0, true); - auto xval = _Curve_value_for_t(pt0.x, pt1.x, pt2.x, pt3.x, t); - // We do this min/max assignment because critical points just signal a change in curve direction, not that the critical point is actually a min/max point. - extents0.x = min(extents0.x, xval); - extents1.x = max(extents1.x, xval); - foundHighX = true; - numPoints++; - numXs++; - } - } - - // Y values - if (_Almost_equal_relative(dt0.y, 0.0, epsilon)) { - assert(numYs == 0); - // First knot is critical. We already assigned it so we're done with that. - foundLowY = true; - numPoints++; - numYs++; - if (_Same_sign(dt1.y, dt2.y)) { - // No second critical point so the second knot is the other extent and we already assigned it so we're done with that. - foundHighY = true; - numPoints++; - numYs++; - } - else { - auto t = _Find_t_for_d_of_t_equal_zero(pt0, pt1, pt2, pt3, 0.5, 1.0, true); - auto yval = _Curve_value_for_t(pt0.y, pt1.y, pt2.y, pt3.y, t); - // We do this min/max assignment because critical points just signal a change in curve direction, not that the critical point is actually a min/max point. - extents0.y = min(extents0.y, yval); - extents1.y = max(extents1.y, yval); - foundHighY = true; - numPoints++; - numYs++; - } - } - if (_Almost_equal_relative(dt1.y, 0.0, epsilon)) { - assert(numYs == 0); - // Center is only critical. - auto cyval = _Curve_value_for_t(pt0.y, pt1.y, pt2.y, pt3.y, 0.5); - // Arbitrarily use pt3.y rather than pt0.y; they are the same value regardless. - assert(_Almost_equal_relative(pt0.y, pt3.y, epsilon)); - extents0.y = min(cyval, pt3.y); - extents1.y = max(cyval, pt3.y); - numPoints += 2; - numYs += 2; - } - if (_Almost_equal_relative(dt2.y, 0.0, epsilon)) { - assert(numYs == 0); - numPoints++; - numYs++; - foundHighY = true; - if (_Same_sign(dt0.y, dt1.y)) { - // No second critical point so the first knot is the other extent and we already assigned it so we're done with that. - foundLowY = true; - numPoints++; - numYs++; - } - else { - auto t = _Find_t_for_d_of_t_equal_zero(pt0, pt1, pt2, pt3, 0.0, 0.5, true); - auto yval = _Curve_value_for_t(pt0.y, pt1.y, pt2.y, pt3.y, t); - // We do this min/max assignment because critical points just signal a change in curve direction, not that the critical point is actually a min/max point. - extents0.y = min(extents0.y, yval); - extents1.y = max(extents1.y, yval); - foundLowY = true; - numPoints++; - numYs++; - } - } - if (numYs == 0) { - if (_Same_sign(dt0.y, dt1.y) && _Same_sign(dt1.y, dt2.y)) { - // No critical points on Y: use ends. - extents0.y = min(pt0.y, pt3.y); - extents1.y = max(pt0.y, pt3.y); - foundLowY = true; - foundHighY = true; - numPoints += 2; - numYs += 2; - } - } - if (!foundLowY) { - if (_Same_sign(dt0.y, dt1.y)) { - // There is no critical point between dt0.y and dt1.y so the lowY point is pt0.y, which we already assigned. - foundLowY = true; - numPoints++; - numYs++; - } - else { - auto t = _Find_t_for_d_of_t_equal_zero(pt0, pt1, pt2, pt3, 0.0, 0.5, false); - auto yval = _Curve_value_for_t(pt0.y, pt1.y, pt2.y, pt3.y, t); - extents0.y = min(extents0.y, yval); - extents1.y = max(extents1.y, yval); - foundLowY = true; - numPoints++; - numYs++; - } - } - if (!foundHighY) { - if (_Same_sign(dt1.y, dt2.y)) { - // There is no critical point between dt1.y and dt2.y so the lowY point is pt3.y, which we already assigned. - foundHighY = true; - numPoints++; - numYs++; - } - else { - auto t = _Find_t_for_d_of_t_equal_zero(pt0, pt1, pt2, pt3, 0.5, 1.0, false); - auto yval = _Curve_value_for_t(pt0.y, pt1.y, pt2.y, pt3.y, t); - extents0.y = min(extents0.y, yval); - extents1.y = max(extents1.y, yval); - foundHighY = true; - numPoints++; - numYs++; - } - } - assert(foundLowX && foundLowY && foundHighX && foundHighY && numPoints == 4 && numXs == 2 && numYs == 2); -} - -void path_builder::get_path_extents(point& pt0, point& pt1) const { - bool hasLastPoint = false; - bool hasExtents = false; - point lastPoint{ }; - // pt0 will hold min values; pt1 will hold max values. - for (auto i = 0U; i < _Data.size(); i += _Data[i].header.length) { - auto type = _Data[i].header.type; - - switch (type) { - case std::experimental::drawing::path_data_type::move_to: - lastPoint = _Data[i + 1].point; - hasLastPoint = true; - break; - case std::experimental::drawing::path_data_type::line_to: - if (hasLastPoint) { - if (!hasExtents) { - hasExtents = true; - pt0.x = min(lastPoint.x, _Data[i + 1].point.x); - pt1.x = max(lastPoint.x, _Data[i + 1].point.x); - pt0.y = min(lastPoint.y, _Data[i + 1].point.y); - pt1.y = max(lastPoint.y, _Data[i + 1].point.y); - } - else { - pt0.x = min(min(pt0.x, lastPoint.x), _Data[i + 1].point.x); - pt0.y = min(min(pt0.y, lastPoint.y), _Data[i + 1].point.y); - pt1.x = max(max(pt1.x, lastPoint.x), _Data[i + 1].point.x); - pt1.y = max(max(pt1.y, lastPoint.y), _Data[i + 1].point.y); - } - } - else { - throw drawing_exception(status::invalid_path_data); - } - break; - case std::experimental::drawing::path_data_type::curve_to: - { - point cte0{ }, cte1{ }; - _Curve_to_extents(lastPoint, _Data[i + 1].point, _Data[i + 2].point, _Data[i + 3].point, cte0, cte1); - if (!hasExtents) { - pt0.x = min(cte0.x, cte1.x); - pt0.y = min(cte0.y, cte1.y); - pt1.x = max(cte0.x, cte1.x); - pt1.y = max(cte0.y, cte1.y); - } - else { - pt0.x = min(min(pt0.x, cte0.x), cte1.x); - pt0.y = min(min(pt0.y, cte0.y), cte1.y); - pt1.x = max(max(pt1.x, cte0.x), cte1.x); - pt1.y = max(max(pt1.y, cte0.y), cte1.y); - } - } - break; - case std::experimental::drawing::path_data_type::new_sub_path: - hasLastPoint = false; - break; - case std::experimental::drawing::path_data_type::close_path: - hasLastPoint = false; - break; - default: - throw drawing_exception(status::invalid_path_data); - } - } -} - -void path_builder::reset() { - *this = path_builder(); -} diff --git a/qt/src/pattern.cpp b/qt/src/pattern.cpp deleted file mode 100755 index 66deb00..0000000 --- a/qt/src/pattern.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::drawing; - -pattern::native_handle_type pattern::native_handle() const { - return _Pattern.get(); -} - -pattern::pattern(pattern::native_handle_type nh) -: _Pattern(nh) -, _Pattern_type(_Qt_brush_style_to_pattern_type(nh->style())) { -} - -pattern::~pattern() { - _Pattern = nullptr; -} - -pattern::pattern(pattern&& other) -: _Pattern(move(other._Pattern)) -, _Pattern_type(move(other._Pattern_type)) { - other._Pattern = nullptr; -} - -pattern& pattern::operator=(pattern&& other) { - if (this != &other) { - _Pattern = move(other._Pattern); - _Pattern_type = move(other._Pattern_type); - other._Pattern = nullptr; - } - - return *this; -} - -pattern_type pattern::get_type() const { - return _Pattern_type; -} diff --git a/qt/src/point.cpp b/qt/src/point.cpp deleted file mode 100755 index aff24b4..0000000 --- a/qt/src/point.cpp +++ /dev/null @@ -1,100 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::drawing; - -point point::operator+=(const point& rhs) { - x += rhs.x; - y += rhs.y; - return *this; -} - -point point::operator+=(double rhs) { - x += rhs; - y += rhs; - return *this; -} - -point point::operator-=(const point& rhs) { - x -= rhs.x; - y -= rhs.y; - return *this; -} - -point point::operator-=(double rhs) { - x -= rhs; - y -= rhs; - return *this; -} - -point point::operator*=(const point& rhs) { - x *= rhs.x; - y *= rhs.y; - return *this; -} - -point point::operator*=(double rhs) { - x *= rhs; - y *= rhs; - return *this; -} - -point point::operator/=(const point& rhs) { - x /= rhs.x; - y /= rhs.y; - return *this; -} - -point point::operator/=(double rhs) { - x /= rhs; - y /= rhs; - return *this; -} - -namespace std { - namespace experimental { - namespace drawing { - point operator+(const point& lhs) { - return lhs; - } - - point operator+(const point& lhs, const point& rhs) { - return point{ lhs.x + rhs.x, lhs.y + rhs.y }; - } - - point operator+(const point& lhs, double rhs) { - return point{ lhs.x + rhs, lhs.y + rhs }; - } - - point operator-(const point& lhs) { - return point{ -lhs.x, -lhs.y }; - } - - point operator-(const point& lhs, const point& rhs) { - return point{ lhs.x - rhs.x, lhs.y - rhs.y }; - } - - point operator-(const point& lhs, double rhs) { - return point{ lhs.x - rhs, lhs.y - rhs }; - } - - point operator*(const point& lhs, const point& rhs) { - return point{ lhs.x * rhs.x, lhs.y * rhs.y }; - } - - point operator*(const point& lhs, double rhs) { - return point{ lhs.x * rhs, lhs.y * rhs }; - } - - point operator/(const point& lhs, const point& rhs) { - return point{ lhs.x / rhs.x, lhs.y / rhs.y }; - } - - point operator/(const point& lhs, double rhs) { - return point{ lhs.x / rhs, lhs.y / rhs }; - } - } - } -} diff --git a/qt/src/radial_pattern_builder.cpp b/qt/src/radial_pattern_builder.cpp deleted file mode 100755 index b472dad..0000000 --- a/qt/src/radial_pattern_builder.cpp +++ /dev/null @@ -1,133 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::drawing; - -radial_pattern_builder::radial_pattern_builder(radial_pattern_builder&& other) -: _Pattern_type(move(other._Pattern_type)) -, _Extend(move(other._Extend)) -, _Filter(move(other._Filter)) -, _Matrix(move(other._Matrix)) -, _Center0(move(other._Center0)) -, _Radius0(move(other._Radius0)) -, _Center1(move(other._Center1)) -, _Radius1(move(other._Radius1)) -, _Color_stops(move(other._Color_stops)) { -} - -radial_pattern_builder& radial_pattern_builder::operator=(radial_pattern_builder&& other) { - if (this != &other) { - _Pattern_type = move(other._Pattern_type); - _Extend = move(other._Extend); - _Filter = move(other._Filter); - _Matrix = move(other._Matrix); - _Center0 = move(other._Center0); - _Radius0 = move(other._Radius0); - _Center1 = move(other._Center1); - _Radius1 = move(other._Radius1); - _Color_stops = move(other._Color_stops); - } - return *this; -} - -radial_pattern_builder::radial_pattern_builder(const point& center0, double radius0, const point& center1, double radius1) -: _Pattern_type(pattern_type::radial) -, _Extend(extend::default_extend) -, _Filter(filter::default_filter) -, _Matrix(matrix::init_identity()) -, _Center0(center0) -, _Radius0(radius0) -, _Center1(center1) -, _Radius1(radius1) -, _Color_stops() { -} - -pattern radial_pattern_builder::get_pattern() { -// cairo_pattern_set_extend(pat, _Extend_to_cairo_extend_t(_Extend)); -// cairo_pattern_set_filter(pat, _Filter_to_cairo_filter_t(_Filter)); -// cairo_matrix_t mtrx{ _Matrix.xx, _Matrix.yx, _Matrix.xy, _Matrix.yy, _Matrix.x0, _Matrix.y0 }; -// cairo_pattern_set_matrix(pat, &mtrx); - QRadialGradient pat(_Center0.x, _Center0.y, _Radius0, _Center1.x, _Center1.y, _Radius1); - for (const auto& stop : _Color_stops) { - pat.setColorAt(get<0>(stop), rgba_color_to_QColor(get<1>(stop))); - } - - return pattern(new QBrush(pat)); -} - -void radial_pattern_builder::set_extend(extend e) { - _Extend = e; -} - -extend radial_pattern_builder::get_extend() { - return _Extend; -} - -void radial_pattern_builder::set_filter(filter f) { - _Filter = f; -} - -filter radial_pattern_builder::get_filter() { - return _Filter; -} - -void radial_pattern_builder::set_matrix(const matrix& m) { - _Matrix = m; -} - -matrix radial_pattern_builder::get_matrix() { - return _Matrix; -} - -void radial_pattern_builder::add_color_stop_rgba(double offset, const rgba_color& color) { - assert(offset >= 0.0 && offset <= 1.0); - assert(color.r >= 0.0 && color.r <= 1.0); - assert(color.g >= 0.0 && color.g <= 1.0); - assert(color.b >= 0.0 && color.b <= 1.0); - assert(color.a >= 0.0 && color.a <= 1.0); - _Color_stops.push_back(make_tuple(offset, color)); -} - -int radial_pattern_builder::get_color_stop_count() { - return static_cast(_Color_stops.size()); -} - -void radial_pattern_builder::get_color_stop_rgba(int index, double& offset, rgba_color& color) { - if (index >= _Color_stops.size() || index < 0) { - _Throw_if_failed_status(status::invalid_index); - } - - const auto& stop = _Color_stops.at(index); - offset = get<0>(stop); - color = get<1>(stop); -} - -void radial_pattern_builder::set_color_stop_rgba(int index, double offset, const rgba_color& color) { - assert(offset >= 0.0 && offset <= 1.0); - assert(color.r >= 0.0 && color.r <= 1.0); - assert(color.g >= 0.0 && color.g <= 1.0); - assert(color.b >= 0.0 && color.b <= 1.0); - assert(color.a >= 0.0 && color.a <= 1.0); - - if (index >= _Color_stops.size() || index < 0) { - _Throw_if_failed_status(status::invalid_index); - } - - _Color_stops[index] = make_tuple(offset, color); -} - -void radial_pattern_builder::get_radial_circles(point& center0, double& radius0, point& center1, double& radius1) { - center0 = _Center0; - radius0 = _Radius0; - center1 = _Center1; - radius1 = _Radius1; -} - -void radial_pattern_builder::set_radial_circles(const point& center0, double radius0, const point& center1, double radius1) { - _Center0 = center0; - _Radius0 = radius0; - _Center1 = center1; - _Radius1 = radius1; -} diff --git a/qt/src/raster_source_pattern_builder.cpp b/qt/src/raster_source_pattern_builder.cpp deleted file mode 100755 index be8896c..0000000 --- a/qt/src/raster_source_pattern_builder.cpp +++ /dev/null @@ -1,161 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::drawing; -using namespace std::placeholders; - -cairo_surface_t* raster_source_pattern_builder::_Cairo_acquire(cairo_pattern_t*, void* this_ptr, cairo_surface_t* target, const cairo_rectangle_int_t* extents) { - auto rsp = static_cast(this_ptr); - rectangle ri_extents{ }; - if (extents == nullptr) { - ri_extents.x = 0.0; - ri_extents.y = 0.0; - ri_extents.width = static_cast(rsp->_Width); - ri_extents.height = static_cast(rsp->_Height); - } - else { - ri_extents.x = static_cast(extents->x); - ri_extents.y = static_cast(extents->y); - ri_extents.width = static_cast(extents->width); - ri_extents.height = static_cast(extents->height); - } - auto acqTarget = surface({ target, nullptr }); - // Increment the reference count of target to avoid its destruction when acqTarget is destroyed. - cairo_surface_reference(target); - auto& acquire_fn = *rsp->_Acquire_fn; - auto result = acquire_fn(rsp->_User_callback_data, acqTarget, ri_extents); - // Increment the reference count of result to avoid its destruction when we return it. - cairo_surface_reference(result.native_handle().csfce); - return result.native_handle().csfce; -} - -void raster_source_pattern_builder::_Cairo_release(cairo_pattern_t*, void* this_ptr, cairo_surface_t* surface) { - auto rsp = static_cast(this_ptr); - if (*rsp->_Release_fn != nullptr) { - // If the user has an explicit release function, increment the reference count since it's the user's responsibility to destroy the surface (e.g. by calling cairo_surface_destroy(surface.native_handle()); ). - cairo_surface_reference(surface); - auto relSurface = experimental::drawing::surface({ surface, nullptr }); - auto& release_fn = *rsp->_Release_fn; - release_fn(rsp->_User_callback_data, relSurface); - } - else { - // If there's no release function, just destroy the surface and proceed. - cairo_surface_destroy(surface); - } -} - -raster_source_pattern_builder::raster_source_pattern_builder(raster_source_pattern_builder&& other) -: _Pattern_type(move(other._Pattern_type)) -, _Extend(move(other._Extend)) -, _Filter(move(other._Filter)) -, _Matrix(move(other._Matrix)) -, _User_callback_data(move(other._User_callback_data)) -, _Width(move(other._Width)) -, _Height(move(other._Height)) -, _Content(move(other._Content)) -, _Acquire_fn(move(other._Acquire_fn)) -, _Release_fn(move(other._Release_fn)) { -} - -raster_source_pattern_builder& raster_source_pattern_builder::operator=(raster_source_pattern_builder&& other) { - if (this != &other) { - _Pattern_type = move(other._Pattern_type); - _Extend = move(other._Extend); - _Filter = move(other._Filter); - _Matrix = move(other._Matrix); - _User_callback_data = move(other._User_callback_data); - _Width = move(other._Width); - _Height = move(other._Height); - _Content = move(other._Content); - _Acquire_fn = move(other._Acquire_fn); - _Release_fn = move(other._Release_fn); - other._User_callback_data = nullptr; - other._Width = { }; - other._Height = { }; - other._Acquire_fn = nullptr; - other._Release_fn = nullptr; - } - return *this; -} - -raster_source_pattern_builder::raster_source_pattern_builder(void* user_data, content content, int width, int height) -: _Pattern_type(pattern_type::raster_source) -, _Extend(extend::default_extend) -, _Filter(filter::default_filter) -, _Matrix(matrix::init_identity()) -, _User_callback_data(user_data) -, _Width(width) -, _Height(height) -, _Content(content) -, _Acquire_fn(new function) -, _Release_fn(new function) { -} - -pattern raster_source_pattern_builder::get_pattern() { - auto pat = cairo_pattern_create_raster_source(_User_callback_data, _Content_to_cairo_content_t(_Content), _Width, _Height); - _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); - - cairo_pattern_set_extend(pat, _Extend_to_cairo_extend_t(_Extend)); - _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); - cairo_pattern_set_filter(pat, _Filter_to_cairo_filter_t(_Filter)); - _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); - cairo_matrix_t mtrx{ _Matrix.xx, _Matrix.yx, _Matrix.xy, _Matrix.yy, _Matrix.x0, _Matrix.y0 }; - cairo_pattern_set_matrix(pat, &mtrx); - _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); - - cairo_raster_source_pattern_set_acquire(pat, (_Acquire_fn == nullptr) ? nullptr : &raster_source_pattern_builder::_Cairo_acquire, - &raster_source_pattern_builder::_Cairo_release - ); - _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); - return pattern(pat); -} - -void raster_source_pattern_builder::set_extend(extend e) { - _Extend = e; -} - -extend raster_source_pattern_builder::get_extend() { - return _Extend; -} - -void raster_source_pattern_builder::set_filter(filter f) { - _Filter = f; -} - -filter raster_source_pattern_builder::get_filter() { - return _Filter; -} - -void raster_source_pattern_builder::set_matrix(const matrix& m) { - _Matrix = m; -} - -matrix raster_source_pattern_builder::get_matrix() { - return _Matrix; -} - -void raster_source_pattern_builder::set_callback_data(void* data) { - _User_callback_data = data; -} - -void* raster_source_pattern_builder::get_callback_data() { - return _User_callback_data; -} - -void raster_source_pattern_builder::set_acquire( - function acquire_fn, - function release_fn - ) { - *_Acquire_fn = acquire_fn; - *_Release_fn = release_fn; -} - -void raster_source_pattern_builder::get_acquire( - function& acquire_fn, - function& release_fn - ) { - acquire_fn = *_Acquire_fn; - release_fn = *_Release_fn; -} diff --git a/qt/src/rgba_color.cpp b/qt/src/rgba_color.cpp deleted file mode 100755 index dd2cf49..0000000 --- a/qt/src/rgba_color.cpp +++ /dev/null @@ -1,158 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::drawing; - -rgba_color rgba_color::from_byte_values(unsigned char r, unsigned char g, unsigned char b, unsigned char a) { - return{ static_cast(r) / 255.0, static_cast(g) / 255.0, static_cast(b) / 255.0, static_cast(a) / 255.0 }; -} - -const rgba_color rgba_color::alice_blue = rgba_color::from_byte_values(240u, 248u, 255u); -const rgba_color rgba_color::antique_white = rgba_color::from_byte_values(250u, 235u, 215u); -const rgba_color rgba_color::aqua = rgba_color::from_byte_values(0u, 255u, 255u); -const rgba_color rgba_color::aquamarine = rgba_color::from_byte_values(127u, 255u, 212u); -const rgba_color rgba_color::azure = rgba_color::from_byte_values(240u, 255u, 255u); -const rgba_color rgba_color::beige = rgba_color::from_byte_values(245u, 245u, 220u); -const rgba_color rgba_color::bisque = rgba_color::from_byte_values(255u, 228u, 196u); -const rgba_color rgba_color::black = rgba_color::from_byte_values(0u, 0u, 0u); -const rgba_color rgba_color::blanched_almond = rgba_color::from_byte_values(255u, 235u, 205u); -const rgba_color rgba_color::blue = rgba_color::from_byte_values(0u, 0u, 255u); -const rgba_color rgba_color::blue_violet = rgba_color::from_byte_values(138u, 43u, 226u); -const rgba_color rgba_color::brown = rgba_color::from_byte_values(165u, 42u, 42u); -const rgba_color rgba_color::burly_wood = rgba_color::from_byte_values(222u, 184u, 135u); -const rgba_color rgba_color::cadet_blue = rgba_color::from_byte_values(95u, 158u, 160u); -const rgba_color rgba_color::chartreuse = rgba_color::from_byte_values(127u, 255u, 0u); -const rgba_color rgba_color::chocolate = rgba_color::from_byte_values(210u, 105u, 30u); -const rgba_color rgba_color::coral = rgba_color::from_byte_values(255u, 127u, 80u); -const rgba_color rgba_color::cornflower_blue = rgba_color::from_byte_values(100u, 149u, 237u); -const rgba_color rgba_color::cornsilk = rgba_color::from_byte_values(255u, 248u, 220u); -const rgba_color rgba_color::crimson = rgba_color::from_byte_values(220u, 20u, 60u); -const rgba_color rgba_color::cyan = rgba_color::from_byte_values(0u, 255u, 255u); -const rgba_color rgba_color::dark_blue = rgba_color::from_byte_values(0u, 0u, 139u); -const rgba_color rgba_color::dark_cyan = rgba_color::from_byte_values(0u, 139u, 139u); -const rgba_color rgba_color::dark_goldenrod = rgba_color::from_byte_values(184u, 134u, 11u); -const rgba_color rgba_color::dark_gray = rgba_color::from_byte_values(169u, 169u, 169u); -const rgba_color rgba_color::dark_green = rgba_color::from_byte_values(0u, 100u, 0u); -const rgba_color rgba_color::dark_grey = rgba_color::from_byte_values(169u, 169u, 169u); -const rgba_color rgba_color::dark_khaki = rgba_color::from_byte_values(189u, 183u, 107u); -const rgba_color rgba_color::dark_magenta = rgba_color::from_byte_values(139u, 0u, 139u); -const rgba_color rgba_color::dark_olive_green = rgba_color::from_byte_values(85u, 107u, 47u); -const rgba_color rgba_color::dark_orange = rgba_color::from_byte_values(255u, 140u, 0u); -const rgba_color rgba_color::dark_orchid = rgba_color::from_byte_values(153u, 50u, 204u); -const rgba_color rgba_color::dark_red = rgba_color::from_byte_values(139u, 0u, 0u); -const rgba_color rgba_color::dark_salmon = rgba_color::from_byte_values(233u, 150u, 122u); -const rgba_color rgba_color::dark_sea_green = rgba_color::from_byte_values(143u, 188u, 143u); -const rgba_color rgba_color::dark_slate_blue = rgba_color::from_byte_values(72u, 61u, 139u); -const rgba_color rgba_color::dark_slate_gray = rgba_color::from_byte_values(47u, 79u, 79u); -const rgba_color rgba_color::dark_slate_grey = rgba_color::from_byte_values(47u, 79u, 79u); -const rgba_color rgba_color::dark_turquoise = rgba_color::from_byte_values(0u, 206u, 209u); -const rgba_color rgba_color::dark_violet = rgba_color::from_byte_values(148u, 0u, 211u); -const rgba_color rgba_color::deep_pink = rgba_color::from_byte_values(255u, 20u, 147u); -const rgba_color rgba_color::deep_sky_blue = rgba_color::from_byte_values(0u, 191u, 255u); -const rgba_color rgba_color::dim_gray = rgba_color::from_byte_values(105u, 105u, 105u); -const rgba_color rgba_color::dim_grey = rgba_color::from_byte_values(105u, 105u, 105u); -const rgba_color rgba_color::dodger_blue = rgba_color::from_byte_values(30u, 144u, 255u); -const rgba_color rgba_color::firebrick = rgba_color::from_byte_values(178u, 34u, 34u); -const rgba_color rgba_color::floral_white = rgba_color::from_byte_values(255u, 250u, 240u); -const rgba_color rgba_color::forest_green = rgba_color::from_byte_values(34u, 139u, 34u); -const rgba_color rgba_color::fuchsia = rgba_color::from_byte_values(255u, 0u, 255u); -const rgba_color rgba_color::gainsboro = rgba_color::from_byte_values(220u, 220u, 220u); -const rgba_color rgba_color::ghost_white = rgba_color::from_byte_values(248u, 248u, 255u); -const rgba_color rgba_color::gold = rgba_color::from_byte_values(255u, 215u, 0u); -const rgba_color rgba_color::goldenrod = rgba_color::from_byte_values(218u, 165u, 32u); -const rgba_color rgba_color::gray = rgba_color::from_byte_values(128u, 128u, 128u); -const rgba_color rgba_color::green = rgba_color::from_byte_values(0u, 128u, 0u); -const rgba_color rgba_color::green_yellow = rgba_color::from_byte_values(173u, 255u, 47u); -const rgba_color rgba_color::grey = rgba_color::from_byte_values(128u, 128u, 128u); -const rgba_color rgba_color::honeydew = rgba_color::from_byte_values(240u, 255u, 240u); -const rgba_color rgba_color::hot_pink = rgba_color::from_byte_values(255u, 105u, 180u); -const rgba_color rgba_color::indian_red = rgba_color::from_byte_values(205u, 92u, 92u); -const rgba_color rgba_color::indigo = rgba_color::from_byte_values(75u, 0u, 130u); -const rgba_color rgba_color::ivory = rgba_color::from_byte_values(255u, 255u, 240u); -const rgba_color rgba_color::khaki = rgba_color::from_byte_values(240u, 230u, 140u); -const rgba_color rgba_color::lavender = rgba_color::from_byte_values(230u, 230u, 250u); -const rgba_color rgba_color::lavender_blush = rgba_color::from_byte_values(255u, 240u, 245u); -const rgba_color rgba_color::lawn_green = rgba_color::from_byte_values(124u, 252u, 0u); -const rgba_color rgba_color::lemon_chiffon = rgba_color::from_byte_values(255u, 250u, 205u); -const rgba_color rgba_color::light_blue = rgba_color::from_byte_values(173u, 216u, 230u); -const rgba_color rgba_color::light_coral = rgba_color::from_byte_values(240u, 128u, 128u); -const rgba_color rgba_color::light_cyan = rgba_color::from_byte_values(224u, 255u, 255u); -const rgba_color rgba_color::light_goldenrod_yellow = rgba_color::from_byte_values(250u, 250u, 210u); -const rgba_color rgba_color::light_gray = rgba_color::from_byte_values(211u, 211u, 211u); -const rgba_color rgba_color::light_green = rgba_color::from_byte_values(144u, 238u, 144u); -const rgba_color rgba_color::light_grey = rgba_color::from_byte_values(211u, 211u, 211u); -const rgba_color rgba_color::light_pink = rgba_color::from_byte_values(255u, 182u, 193u); -const rgba_color rgba_color::light_salmon = rgba_color::from_byte_values(255u, 160u, 122u); -const rgba_color rgba_color::light_sea_green = rgba_color::from_byte_values(32u, 178u, 170u); -const rgba_color rgba_color::light_sky_blue = rgba_color::from_byte_values(135u, 206u, 250u); -const rgba_color rgba_color::light_slate_gray = rgba_color::from_byte_values(119u, 136u, 153u); -const rgba_color rgba_color::light_slate_grey = rgba_color::from_byte_values(119u, 136u, 153u); -const rgba_color rgba_color::light_steel_blue = rgba_color::from_byte_values(176u, 196u, 222u); -const rgba_color rgba_color::light_yellow = rgba_color::from_byte_values(255u, 255u, 224u); -const rgba_color rgba_color::lime = rgba_color::from_byte_values(0u, 255u, 0u); -const rgba_color rgba_color::lime_green = rgba_color::from_byte_values(50u, 205u, 50u); -const rgba_color rgba_color::linen = rgba_color::from_byte_values(250u, 240u, 230u); -const rgba_color rgba_color::magenta = rgba_color::from_byte_values(255u, 0u, 255u); -const rgba_color rgba_color::maroon = rgba_color::from_byte_values(128u, 0u, 0u); -const rgba_color rgba_color::medium_aquamarine = rgba_color::from_byte_values(102u, 205u, 170u); -const rgba_color rgba_color::medium_blue = rgba_color::from_byte_values(0u, 0u, 205u); -const rgba_color rgba_color::medium_orchid = rgba_color::from_byte_values(186u, 85u, 211u); -const rgba_color rgba_color::medium_purple = rgba_color::from_byte_values(147u, 112u, 219u); -const rgba_color rgba_color::medium_sea_green = rgba_color::from_byte_values(60u, 179u, 113u); -const rgba_color rgba_color::medium_slate_blue = rgba_color::from_byte_values(123u, 104u, 238u); -const rgba_color rgba_color::medium_spring_green = rgba_color::from_byte_values(0u, 250u, 154u); -const rgba_color rgba_color::medium_turquoise = rgba_color::from_byte_values(72u, 209u, 204u); -const rgba_color rgba_color::medium_violet_red = rgba_color::from_byte_values(199u, 21u, 133u); -const rgba_color rgba_color::midnight_blue = rgba_color::from_byte_values(25u, 25u, 112u); -const rgba_color rgba_color::mint_cream = rgba_color::from_byte_values(245u, 255u, 250u); -const rgba_color rgba_color::misty_rose = rgba_color::from_byte_values(255u, 228u, 225u); -const rgba_color rgba_color::moccasin = rgba_color::from_byte_values(255u, 228u, 181u); -const rgba_color rgba_color::navajo_white = rgba_color::from_byte_values(255u, 222u, 173u); -const rgba_color rgba_color::navy = rgba_color::from_byte_values(0u, 0u, 128u); -const rgba_color rgba_color::old_lace = rgba_color::from_byte_values(253u, 245u, 230u); -const rgba_color rgba_color::olive = rgba_color::from_byte_values(128u, 128u, 0u); -const rgba_color rgba_color::olive_drab = rgba_color::from_byte_values(107u, 142u, 35u); -const rgba_color rgba_color::orange = rgba_color::from_byte_values(255u, 165u, 0u); -const rgba_color rgba_color::orange_red = rgba_color::from_byte_values(255u, 69u, 0u); -const rgba_color rgba_color::orchid = rgba_color::from_byte_values(218u, 112u, 214u); -const rgba_color rgba_color::pale_goldenrod = rgba_color::from_byte_values(238u, 232u, 170u); -const rgba_color rgba_color::pale_green = rgba_color::from_byte_values(152u, 251u, 152u); -const rgba_color rgba_color::pale_turquoise = rgba_color::from_byte_values(175u, 238u, 238u); -const rgba_color rgba_color::pale_violet_red = rgba_color::from_byte_values(219u, 112u, 147u); -const rgba_color rgba_color::papaya_whip = rgba_color::from_byte_values(255u, 239u, 213u); -const rgba_color rgba_color::peach_puff = rgba_color::from_byte_values(255u, 218u, 185u); -const rgba_color rgba_color::peru = rgba_color::from_byte_values(205u, 133u, 63u); -const rgba_color rgba_color::pink = rgba_color::from_byte_values(255u, 192u, 203u); -const rgba_color rgba_color::plum = rgba_color::from_byte_values(221u, 160u, 221u); -const rgba_color rgba_color::powder_blue = rgba_color::from_byte_values(176u, 224u, 230u); -const rgba_color rgba_color::purple = rgba_color::from_byte_values(128u, 0u, 128u); -const rgba_color rgba_color::red = rgba_color::from_byte_values(255u, 0u, 0u); -const rgba_color rgba_color::rosy_brown = rgba_color::from_byte_values(188u, 143u, 143u); -const rgba_color rgba_color::royal_blue = rgba_color::from_byte_values(65u, 105u, 225u); -const rgba_color rgba_color::saddle_brown = rgba_color::from_byte_values(139u, 69u, 19u); -const rgba_color rgba_color::salmon = rgba_color::from_byte_values(250u, 128u, 114u); -const rgba_color rgba_color::sandy_brown = rgba_color::from_byte_values(244u, 164u, 96u); -const rgba_color rgba_color::sea_green = rgba_color::from_byte_values(46u, 139u, 87u); -const rgba_color rgba_color::sea_shell = rgba_color::from_byte_values(255u, 245u, 238u); -const rgba_color rgba_color::sienna = rgba_color::from_byte_values(160u, 82u, 45u); -const rgba_color rgba_color::silver = rgba_color::from_byte_values(192u, 192u, 192u); -const rgba_color rgba_color::sky_blue = rgba_color::from_byte_values(135u, 206u, 235u); -const rgba_color rgba_color::slate_blue = rgba_color::from_byte_values(106u, 90u, 205u); -const rgba_color rgba_color::slate_gray = rgba_color::from_byte_values(112u, 128u, 144u); -const rgba_color rgba_color::slate_grey = rgba_color::from_byte_values(112u, 128u, 144u); -const rgba_color rgba_color::snow = rgba_color::from_byte_values(255u, 250u, 250u); -const rgba_color rgba_color::spring_green = rgba_color::from_byte_values(0u, 255u, 127u); -const rgba_color rgba_color::steel_blue = rgba_color::from_byte_values(70u, 130u, 180u); -const rgba_color rgba_color::tan = rgba_color::from_byte_values(210u, 180u, 140u); -const rgba_color rgba_color::teal = rgba_color::from_byte_values(0u, 128u, 128u); -const rgba_color rgba_color::thistle = rgba_color::from_byte_values(216u, 191u, 216u); -const rgba_color rgba_color::tomato = rgba_color::from_byte_values(255u, 99u, 71u); -const rgba_color rgba_color::turquoise = rgba_color::from_byte_values(64u, 244u, 208u); -const rgba_color rgba_color::violet = rgba_color::from_byte_values(238u, 130u, 238u); -const rgba_color rgba_color::wheat = rgba_color::from_byte_values(245u, 222u, 179u); -const rgba_color rgba_color::white = rgba_color::from_byte_values(255u, 255u, 255u); -const rgba_color rgba_color::white_smoke = rgba_color::from_byte_values(245u, 245u, 245u); -const rgba_color rgba_color::yellow = rgba_color::from_byte_values(255u, 255u, 0u); -const rgba_color rgba_color::yellow_green = rgba_color::from_byte_values(154u, 205u, 50u); diff --git a/qt/src/scaled_font.cpp b/qt/src/scaled_font.cpp deleted file mode 100755 index 76d78ed..0000000 --- a/qt/src/scaled_font.cpp +++ /dev/null @@ -1,77 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::drawing; - -scaled_font::native_handle_type scaled_font::native_handle() const { - return _Scaled_font.get(); -} - -scaled_font::scaled_font(scaled_font&& other) { - _Scaled_font = move(other._Scaled_font); - other._Scaled_font = nullptr; -} - -scaled_font& scaled_font::operator=(scaled_font&& other) { - if (this != &other) { - _Scaled_font = move(other._Scaled_font); - other._Scaled_font = nullptr; - } - return *this; -} - -scaled_font::scaled_font(scaled_font::native_handle_type nh) { - _Scaled_font = shared_ptr(new QFont(*nh)); -} - -scaled_font::scaled_font(const font_face& ff, const matrix& fm, const matrix& ctm, const font_options& fo) -: _Scaled_font(nullptr) { -// cairo_matrix_t c_fm{ fm.xx, fm.xy, fm.yx, fm.yy, fm.x0, fm.y0 }, -// c_ctm{ ctm.xx, ctm.xy, ctm.yx, ctm.yy, ctm.x0, ctm.y0 }; -// _Scaled_font = shared_ptr(cairo_scaled_font_create(ff.native_handle(), &c_fm, &c_ctm, fo.native_handle()), &cairo_scaled_font_destroy); - _Scaled_font = shared_ptr(new QFont(*ff.native_handle())); - _Scaled_font->setHintingPreference(fo.native_handle()->hintingPreference); - _Scaled_font->setStyleStrategy(fo.native_handle()->styleStrategy); -} - -font_extents scaled_font::get_extents() const { - // TODO: find values for max_x_advance and max_y_advance - QFontMetrics metrics(*_Scaled_font); - return{ metrics.ascent(), metrics.descent(), metrics.height(), 0, 0 }; -} - -text_extents scaled_font::get_text_extents(const string& utf8) const { - // TODO: find values for x_bearing, y_bearing, x_advance and y_advance - QFontMetrics metrics(*_Scaled_font); - QRect bounding = metrics.boundingRect(QString::fromUtf8(utf8.c_str())); - - return{ 0, 0, bounding.width(), bounding.height(), 0, 0 }; -} - -text_extents scaled_font::get_glyph_extents(const vector& /*glyphs*/) const { - // TODO: implement this - return{ 0, 0, 0, 0, 0, 0 }; -} - -vector scaled_font::text_to_glyphs(double /*x*/, double /*y*/, const string& utf8) const { - QRawFont rawFont = QRawFont::fromFont(*_Scaled_font); - auto indexVector = rawFont.glyphIndexesForString(QString::fromUtf8(utf8.c_str())); - - vector result; - for (const auto& index : indexVector) - { - // TODO: what to put for glyph.x and glyph.y? - result.push_back({index, 0, 0 }); - } - - return result; -} - -vector scaled_font::text_to_glyphs(double /*x*/, double /*y*/, const string& /*utf8*/, - vector& /*clusters*/, text_cluster_flags::text_cluster_flags& /*clFlags*/) const { - // TODO: implement - vector result; - return result; -} diff --git a/qt/src/solid_color_pattern_builder.cpp b/qt/src/solid_color_pattern_builder.cpp deleted file mode 100755 index 7f7f34e..0000000 --- a/qt/src/solid_color_pattern_builder.cpp +++ /dev/null @@ -1,119 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::drawing; - -solid_color_pattern_builder::solid_color_pattern_builder(solid_color_pattern_builder&& other) -: _Pattern_type(move(other._Pattern_type)) -, _Extend(move(other._Extend)) -, _Filter(move(other._Filter)) -, _Matrix(move(other._Matrix)) -, _Color(move(other._Color)) { -} - -solid_color_pattern_builder& solid_color_pattern_builder::operator=(solid_color_pattern_builder&& other) { - if (this != &other) { - _Pattern_type = move(other._Pattern_type); - _Extend = move(other._Extend); - _Filter = move(other._Filter); - _Matrix = move(other._Matrix); - _Color = move(other._Color); - } - return *this; -} - -solid_color_pattern_builder::solid_color_pattern_builder(const rgba_color& color) -: _Pattern_type(pattern_type::solid_color) -, _Extend(extend::default_extend) -, _Filter(filter::default_filter) -, _Matrix(matrix::init_identity()) -, _Color(color){ - assert(color.r >= 0.0 && color.r <= 1.0); - assert(color.g >= 0.0 && color.g <= 1.0); - assert(color.b >= 0.0 && color.b <= 1.0); - assert(color.a >= 0.0 && color.a <= 1.0); -} - -pattern solid_color_pattern_builder::get_pattern() { -// cairo_pattern_set_extend(pat, _Extend_to_cairo_extend_t(_Extend)); -// cairo_pattern_set_filter(pat, _Filter_to_cairo_filter_t(_Filter)); -// cairo_matrix_t mtrx{ _Matrix.xx, _Matrix.yx, _Matrix.xy, _Matrix.yy, _Matrix.x0, _Matrix.y0 }; -// cairo_pattern_set_matrix(pat, &mtrx); - - auto pat = new QBrush(rgba_color_to_QColor(_Color), Qt::SolidPattern); - return pattern(pat); -} - -void solid_color_pattern_builder::set_extend(extend e) { - _Extend = e; -} - -extend solid_color_pattern_builder::get_extend() { - return _Extend; -} - -void solid_color_pattern_builder::set_filter(filter f) { - _Filter = f; -} - -filter solid_color_pattern_builder::get_filter() { - return _Filter; -} - -void solid_color_pattern_builder::set_matrix(const matrix& m) { - _Matrix = m; -} - -matrix solid_color_pattern_builder::get_matrix() { - return _Matrix; -} - -rgba_color solid_color_pattern_builder::get_rgba() { - return _Color; -} - -void solid_color_pattern_builder::set_rgba(const rgba_color& color) { - assert(color.r >= 0.0 && color.r <= 1.0); - assert(color.g >= 0.0 && color.g <= 1.0); - assert(color.b >= 0.0 && color.b <= 1.0); - assert(color.a >= 0.0 && color.a <= 1.0); - _Color = color; -} - -double solid_color_pattern_builder::get_red() { - return _Color.r; -} - -void solid_color_pattern_builder::set_red(double red) { - assert(red >= 0.0 && red <= 1.0); - _Color.r = red; -} - -double solid_color_pattern_builder::get_green() { - return _Color.g; -} - -void solid_color_pattern_builder::set_green(double green) { - assert(green >= 0.0 && green <= 1.0); - _Color.g = green; -} - -double solid_color_pattern_builder::get_blue() { - return _Color.b; -} - -void solid_color_pattern_builder::set_blue(double blue) { - assert(blue >= 0.0 && blue <= 1.0); - _Color.b = blue; -} - -double solid_color_pattern_builder::get_alpha() { - return _Color.a; -} - -void solid_color_pattern_builder::set_alpha(double alpha) { - assert(alpha >= 0.0 && alpha <= 1.0); - _Color.a = alpha; -} diff --git a/qt/src/surface.cpp b/qt/src/surface.cpp deleted file mode 100755 index 3d51d8d..0000000 --- a/qt/src/surface.cpp +++ /dev/null @@ -1,554 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::drawing; - -surface::native_handle_type surface::native_handle() const { - return{ _Surface.get(), _Context.get() }; -} - -surface::surface(surface::native_handle_type nh) -: _Lock_for_device() -, _Device() -, _Surface(unique_ptr(nh.csfce)) -, _Context(unique_ptr(((nh.csfce == nullptr) ? nullptr : nh.csfce->paintEngine()))) { -} - -surface::surface(surface&& other) -: _Lock_for_device() -, _Device(move(other._Device)) -, _Surface(move(other._Surface)) -, _Context(move(other._Context)) { - other._Surface = nullptr; - other._Context = nullptr; -} - -surface& surface::operator=(surface&& other) { - if (this != &other) { - _Device = move(other._Device); - _Surface = move(other._Surface); - _Context = move(other._Context); - other._Surface = nullptr; - other._Context = nullptr; - } - return *this; -} - -surface::surface(const surface& other, content content, int width, int height) -: _Lock_for_device() -, _Device() -, _Surface(unique_ptr(new QOpenGLPaintDevice(width, height))) -, _Context(unique_ptr(_Surface.get()->paintEngine())) { -} - -surface::surface(const surface& target, const rectangle& rect) -: _Lock_for_device() -, _Device() -, _Surface(unique_ptr(new QOpenGLPaintDevice(rect.width, rect.height))) -, _Context(unique_ptr(_Surface.get()->paintEngine())) { -} - -surface::surface(format fmt, int width, int height) -: _Lock_for_device() -, _Device() -, _Surface(unique_ptr(new QOpenGLPaintDevice(width, height))) -, _Context(unique_ptr(_Surface.get()->paintEngine())) { -} - -surface::~surface() { -} - -void surface::finish() { - //cairo_surface_finish(_Surface.get()); -} - -void surface::flush() { - //cairo_surface_flush(_Surface.get()); -} - -shared_ptr surface::get_device() { - lock_guard lg(_Lock_for_device); - auto dvc = _Device.lock(); - if (dvc != nullptr) { - return dvc; - } - dvc = nullptr; - _Device = weak_ptr(dvc); - return dvc; -} - -content surface::get_content() { - //return _Cairo_content_t_to_content(cairo_surface_get_content(_Surface.get())); - return content::color; -} - -void surface::mark_dirty() { - // cairo_surface_mark_dirty(_Surface.get()); -} - -void surface::mark_dirty_rectangle(const rectangle& rect) { - //cairo_surface_mark_dirty_rectangle(_Surface.get(), static_cast(rect.x), static_cast(rect.y), static_cast(rect.width), static_cast(rect.height)); -} - -void surface::set_device_offset(const point& offset) { - //cairo_surface_set_device_offset(_Surface.get(), offset.x, offset.y); -} - -void surface::get_device_offset(point& offset) { - //cairo_surface_get_device_offset(_Surface.get(), &offset.x, &offset.y); -} - -void surface::write_to_png(const string& filename) { - //_Throw_if_failed_status(_Cairo_status_t_to_status(cairo_surface_write_to_png(_Surface.get(), filename.c_str()))); -} - -image_surface surface::map_to_image(const rectangle& extents) { - cairo_rectangle_int_t cextents{ _Double_to_int(extents.x), _Double_to_int(extents.y), _Double_to_int(extents.width), _Double_to_int(extents.height) }; - - return image_surface({ cairo_surface_map_to_image(_Surface.get(), (extents.x == 0 && extents.y == 0 && extents.width == 0 && extents.height == 0) ? nullptr : &cextents), nullptr }, { _Surface.get(), nullptr }); -} - -void surface::unmap_image(image_surface& image) { - image._Context = nullptr; - image._Surface = nullptr; -} - -bool surface::has_surface_resource() const { - return _Surface != nullptr; -} - -void surface::save() { - //cairo_save(_Context.get()); -} - -void surface::restore() { - //cairo_restore(_Context.get()); -} - -void surface::push_group() { - //cairo_push_group(_Context.get()); -} - -void surface::push_group_with_content(content c) { - //cairo_push_group_with_content(_Context.get(), _Content_to_cairo_content_t(c)); -} - -surface surface::pop_group() { -// cairo_surface_t* sfce = nullptr; -// unique_ptr> pttn(cairo_pop_group(_Context.get()), &cairo_pattern_destroy); -// _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pttn.get()))); -// _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_get_surface(pttn.get(), &sfce))); -// // This next line would not create a resource leak if it threw because until we reference the surface we don't own it. -// _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_surface_status(sfce))); -// return surface({ cairo_surface_reference(sfce), nullptr }); - return nullptr; -} - -void surface::pop_group_to_source() { - //cairo_pop_group_to_source(_Context.get()); -} - -void surface::set_pattern() { - //cairo_set_source_rgb(_Context.get(), 0.0, 0.0, 0.0); -} - -void surface::set_pattern(const pattern& source) { - cairo_set_source(_Context.get(), source.native_handle()); -} - -pattern surface::get_pattern() { - return pattern(cairo_pattern_reference(cairo_get_source(_Context.get()))); -} - -void surface::set_antialias(antialias a) { - cairo_set_antialias(_Context.get(), _Antialias_to_QFontOptions(a)); -} - -antialias surface::get_antialias() { - return _QFontOptions_to_antialias(cairo_get_antialias(_Context.get())); -} - -void surface::set_dash() { -// cairo_set_dash(_Context.get(), nullptr, 0, 0.0); -} - -void surface::set_dash(const vector& dashes, double offset) { -// cairo_set_dash(_Context.get(), dashes.data(), static_cast(dashes.size()), offset); -} - -int surface::get_dash_count() { -// return cairo_get_dash_count(_Context.get()); -} - -void surface::get_dash(vector& dashes, double& offset) { -// dashes.resize(get_dash_count()); -// cairo_get_dash(_Context.get(), &dashes[0], &offset); -} - -void surface::set_fill_rule(fill_rule fr) { -// cairo_set_fill_rule(_Context.get(), _Fill_rule_to_cairo_fill_rule_t(fr)); -} - -fill_rule surface::get_fill_rule() { -// return _Cairo_fill_rule_t_to_fill_rule(cairo_get_fill_rule(_Context.get())); -} - -void surface::set_line_cap(line_cap lc) { -// cairo_set_line_cap(_Context.get(), _Line_cap_to_cairo_line_cap_t(lc)); -} - -line_cap surface::get_line_cap() { - return _Cairo_line_cap_t_to_line_cap(cairo_get_line_cap(_Context.get())); -} - -void surface::set_line_join(line_join lj) { - cairo_set_line_join(_Context.get(), _Line_join_to_cairo_line_join_t(lj)); -} - -line_join surface::get_line_join() { - return _Cairo_line_join_t_to_line_join(cairo_get_line_join(_Context.get())); -} - -void surface::set_line_width(double width) { - cairo_set_line_width(_Context.get(), width); -} - -double surface::get_line_width() { - return cairo_get_line_width(_Context.get()); -} - -void surface::set_miter_limit(double limit) { - cairo_set_miter_limit(_Context.get(), limit); -} - -double surface::get_miter_limit() { - return cairo_get_miter_limit(_Context.get()); -} - -void surface::set_compositing_operator(compositing_operator co) { - cairo_set_operator(_Context.get(), _Compositing_operator_to_cairo_operator_t(co)); -} - -compositing_operator surface::get_compositing_operator() { - return _Cairo_operator_t_to_compositing_operator(cairo_get_operator(_Context.get())); -} - -void surface::set_tolerance(double tolerance) { - cairo_set_tolerance(_Context.get(), tolerance); -} - -double surface::get_tolerance() { - return cairo_get_tolerance(_Context.get()); -} - -void surface::clip() { - cairo_clip_preserve(_Context.get()); -} - -void surface::clip_extents(point& pt0, point& pt1) { - cairo_clip_extents(_Context.get(), &pt0.x, &pt0.y, &pt1.x, &pt1.y); -} - -bool surface::in_clip(const point& pt) { - return cairo_in_clip(_Context.get(), pt.x, pt.y) != 0; -} - -void surface::reset_clip() { - cairo_reset_clip(_Context.get()); -} - -vector surface::copy_clip_rectangle_list() { - vector results; - std::unique_ptr> sp_rects(cairo_copy_clip_rectangle_list(_Context.get()), &cairo_rectangle_list_destroy); - _Throw_if_failed_status(_Cairo_status_t_to_status(sp_rects->status)); - for (auto i = 0; i < sp_rects->num_rectangles; ++i) { - results.push_back({ sp_rects->rectangles[i].x, sp_rects->rectangles[i].y, sp_rects->rectangles[i].width, sp_rects->rectangles[i].height }); - } - - return results; -} - -void surface::fill() { - cairo_fill_preserve(_Context.get()); -} - -void surface::fill(const surface& s) { - unique_ptr> pat(cairo_pattern_reference(cairo_get_source(_Context.get())), &cairo_pattern_destroy); - cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); - cairo_fill_preserve(_Context.get()); - cairo_surface_flush(_Surface.get()); - cairo_set_source(_Context.get(), pat.get()); -} - -void surface::fill_extents(point& pt0, point& pt1) { - cairo_fill_extents(_Context.get(), &pt0.x, &pt0.y, &pt1.x, &pt1.y); -} - -bool surface::in_fill(const point& pt) { - return cairo_in_fill(_Context.get(), pt.x, pt.y) != 0; -} - -void surface::mask(const pattern& pttn) { - cairo_mask(_Context.get(), pttn.native_handle()); -} - -void surface::mask(const surface& surface) { - cairo_mask_surface(_Context.get(), surface.native_handle().csfce, 0.0, 0.0); -} - -void surface::mask(const surface& surface, const point& origin) { - cairo_mask_surface(_Context.get(), surface.native_handle().csfce, origin.x, origin.y); -} - -void surface::paint() { - cairo_paint(_Context.get()); -} - -void surface::paint(const surface& s) { - unique_ptr> pat(cairo_pattern_reference(cairo_get_source(_Context.get())), &cairo_pattern_destroy); - cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); - cairo_paint(_Context.get()); - cairo_surface_flush(_Surface.get()); - cairo_set_source(_Context.get(), pat.get()); -} - -void surface::paint_with_alpha(double alpha) { - cairo_paint_with_alpha(_Context.get(), alpha); -} - -void surface::paint_with_alpha(const surface& s, double alpha) { - auto pat = cairo_get_source(_Context.get()); - cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); - cairo_paint_with_alpha(_Context.get(), alpha); - cairo_surface_flush(_Surface.get()); - cairo_set_source(_Context.get(), pat); -} - -void surface::stroke() { - cairo_stroke_preserve(_Context.get()); -} - -void surface::stroke(const surface& s) { - unique_ptr> pat(cairo_pattern_reference(cairo_get_source(_Context.get())), &cairo_pattern_destroy); - cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); - cairo_stroke_preserve(_Context.get()); - cairo_surface_flush(_Surface.get()); - cairo_set_source(_Context.get(), pat.get()); -} - -void surface::stroke_extents(point& pt0, point& pt1) { - cairo_stroke_extents(_Context.get(), &pt0.x, &pt0.y, &pt1.x, &pt1.y); -} - -bool surface::in_stroke(const point& pt) { - return cairo_in_stroke(_Context.get(), pt.x, pt.y) != 0; -} - -void surface::set_path() { - cairo_new_path(_Context.get()); -} - -void surface::set_path(const path& p) { - auto ctx = _Context.get(); - cairo_new_path(ctx); - const auto& pathData = p.get_data_ref(); - for (int i = 0; i < pathData.size(); i += pathData[i].header.length) { - auto pdt = pathData[i].header.type; - switch (pdt) { - case ::std::experimental::drawing::path_data_type::move_to: - cairo_move_to(ctx, pathData[i + 1].point.x, pathData[i + 1].point.y); - break; - case ::std::experimental::drawing::path_data_type::line_to: - cairo_line_to(ctx, pathData[i + 1].point.x, pathData[i + 1].point.y); - break; - case ::std::experimental::drawing::path_data_type::curve_to: - cairo_curve_to(ctx, pathData[i + 1].point.x, pathData[i + 1].point.y, pathData[i + 2].point.x, pathData[i + 2].point.y, pathData[i + 3].point.x, pathData[i + 3].point.y); - break; - case ::std::experimental::drawing::path_data_type::new_sub_path: - cairo_new_sub_path(ctx); - break; - case std::experimental::drawing::path_data_type::close_path: - cairo_close_path(ctx); - break; - default: - throw drawing_exception(status::invalid_path_data); - } - } -} - -void surface::translate(const point& value) { - cairo_translate(_Context.get(), value.x, value.y); -} - -void surface::scale(const point& value) { - cairo_scale(_Context.get(), value.x, value.y); -} - -void surface::rotate(double angle) { - cairo_rotate(_Context.get(), angle); -} - -void surface::transform(const matrix& m) { - cairo_matrix_t cm{ m.xx, m.yx, m.xy, m.yy, m.x0, m.y0 }; - cairo_transform(_Context.get(), &cm); -} - -void surface::set_matrix(const matrix& m) { - cairo_matrix_t cm{ m.xx, m.yx, m.xy, m.yy, m.x0, m.y0 }; - cairo_set_matrix(_Context.get(), &cm); -} - -void surface::get_matrix(matrix& matrix) { - cairo_matrix_t cm{ }; - cairo_get_matrix(_Context.get(), &cm); - matrix = { cm.xx, cm.yx, cm.xy, cm.yy, cm.x0, cm.y0 }; -} - -void surface::identity_matrix() { - cairo_identity_matrix(_Context.get()); -} - -void surface::user_to_device(point& pt) { - cairo_user_to_device(_Context.get(), &pt.x, &pt.y); -} - -void surface::user_to_device_distance(point& dpt) { - cairo_user_to_device_distance(_Context.get(), &dpt.x, &dpt.y); -} - -void surface::device_to_user(point& pt) { - cairo_device_to_user(_Context.get(), &pt.x, &pt.y); -} - -void surface::device_to_user_distance(point& dpt) { - cairo_device_to_user_distance(_Context.get(), &dpt.x, &dpt.y); -} - -void surface::select_font_face(const string& family, font_slant slant, font_weight weight) { - cairo_select_font_face(_Context.get(), family.c_str(), _Font_slant_to_cairo_font_slant_t(slant), _Font_weight_to_cairo_font_weight_t(weight)); -} - -void surface::set_font_size(double size) { - cairo_set_font_size(_Context.get(), size); -} - -void surface::set_font_matrix(const matrix& m) { - cairo_matrix_t cm{ m.xx, m.yx, m.xy, m.yy, m.x0, m.y0 }; - cairo_set_font_matrix(_Context.get(), &cm); -} - -void surface::get_font_matrix(matrix& matrix) { - cairo_matrix_t cm{ }; - cairo_get_font_matrix(_Context.get(), &cm); - matrix = { cm.xx, cm.yx, cm.xy, cm.yy, cm.x0, cm.y0 }; -} - -void surface::set_font_options(const font_options& options) { - cairo_set_font_options(_Context.get(), options.native_handle()); -} - -// Note: This deviates from cairo in that we return the values that will actually wind up being used. -font_options surface::get_font_options() { - font_options fo(antialias::default_antialias, subpixel_order::default_subpixel_order, hint_style::default_hint_style, hint_metrics::default_hint_metrics); - cairo_get_font_options(_Context.get(), fo.native_handle()); - auto ca = fo.get_antialias(); - auto cso = fo.get_subpixel_order(); - auto chs = fo.get_hint_style(); - auto chm = fo.get_hint_metrics(); - cairo_surface_get_font_options(_Surface.get(), fo.native_handle()); - - return font_options( - (ca == antialias::default_antialias) ? fo.get_antialias() : ca, - (cso == subpixel_order::default_subpixel_order) ? fo.get_subpixel_order() : cso, - (chs == hint_style::default_hint_style) ? fo.get_hint_style() : chs, - (chm == hint_metrics::default_hint_metrics) ? fo.get_hint_metrics() : chm - ); -} - -void surface::set_font_face(font_face& font_face) { - cairo_set_font_face(_Context.get(), font_face.native_handle()); -} - -font_face surface::get_font_face() { - auto ff = cairo_get_font_face(_Context.get()); - _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_font_face_status(ff))); - // Cairo doesn't increase the font face's reference count when you call cairo_get_font_face so we do it manually. - return font_face(cairo_font_face_reference(ff)); -} - -void surface::set_scaled_font(const scaled_font& scaled_font) { - cairo_set_scaled_font(_Context.get(), scaled_font.native_handle()); -} - -scaled_font surface::get_scaled_font() { - auto sf = cairo_get_scaled_font(_Context.get()); - _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_scaled_font_status(sf))); - // Cairo doesn't increase the scaled font's reference count when you call cairo_get_scaled_font so we do it manually. - return scaled_font(cairo_scaled_font_reference(sf)); -} - -void surface::show_text(const string& utf8) { -// cairo_show_text(_Context.get(), utf8.c_str()); -} - -void surface::show_glyphs(const vector& glyphs) { -// vector vec; -// for (const auto& glyph : glyphs) { -// vec.push_back({ glyph.index, glyph.x, glyph.y }); -// } -// cairo_show_glyphs(_Context.get(), vec.data(), static_cast(vec.size())); -} - -void surface::show_text_glyphs(const string& utf8, const vector& glyphs, const vector& clusters, text_cluster_flags::text_cluster_flags cluster_flags) { -// vector vec; -// for (const auto& glyph : glyphs) { -// vec.push_back({ glyph.index, glyph.x, glyph.y }); -// } -// const auto tcSize = static_cast(clusters.size()); -// unique_ptr> sp_tc(cairo_text_cluster_allocate(tcSize), &cairo_text_cluster_free); -// auto tc_ptr = sp_tc.get(); -// for (auto i = 0; i < tcSize; ++i) { -// tc_ptr[i].num_bytes = clusters[i].num_bytes; -// tc_ptr[i].num_glyphs = clusters[i].num_glyphs; -// } -// auto ctcf = _Text_cluster_flags_to_cairo_text_cluster_flags_t(cluster_flags); -// cairo_show_text_glyphs(_Context.get(), utf8.data(), static_cast(utf8.size()), vec.data(), static_cast(vec.size()), sp_tc.get(), tcSize, ctcf); -} - -void surface::font_extents(experimental::drawing::font_extents& extents) { -// cairo_font_extents_t result{ }; -// cairo_font_extents(_Context.get(), &result); -// extents.ascent = result.ascent; -// extents.descent = result.descent; -// extents.height = result.height; -// extents.max_x_advance = result.max_x_advance; -// extents.max_y_advance = result.max_y_advance; -} - -void surface::text_extents(const string& utf8, experimental::drawing::text_extents& extents) { -// cairo_text_extents_t result{ }; -// cairo_text_extents(_Context.get(), utf8.c_str(), &result); -// extents.height = result.height; -// extents.width = result.width; -// extents.x_advance = result.x_advance; -// extents.x_bearing = result.x_bearing; -// extents.y_advance = result.y_advance; -// extents.y_bearing = result.y_bearing; -} - -void surface::glyph_extents(const vector& glyphs, experimental::drawing::text_extents& extents) { -// vector vec; -// for (const auto& glyph : glyphs) { -// vec.push_back({ glyph.index, glyph.x, glyph.y }); -// } -// cairo_text_extents_t result{ }; -// cairo_glyph_extents(_Context.get(), vec.data(), static_cast(vec.size()), &result); -// extents.height = result.height; -// extents.width = result.width; -// extents.x_advance = result.x_advance; -// extents.x_bearing = result.x_bearing; -// extents.y_advance = result.y_advance; -// extents.y_bearing = result.y_bearing; -} diff --git a/qt/src/surface_pattern_builder.cpp b/qt/src/surface_pattern_builder.cpp deleted file mode 100755 index 640b310..0000000 --- a/qt/src/surface_pattern_builder.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::drawing; - -//surface_pattern_builder::surface_pattern_builder(surface_pattern_builder&& other) -//: _Pattern_type(move(other._Pattern_type)) -//, _Extend(move(other._Extend)) -//, _Filter(move(other._Filter)) -//, _Matrix(move(other._Matrix)) -//, _Surface(move(other._Surface)) { -//} -// -//surface_pattern_builder& surface_pattern_builder::operator=(surface_pattern_builder&& other) { -// if (this != &other) { -// _Pattern_type = move(other._Pattern_type); -// _Extend = move(other._Extend); -// _Filter = move(other._Filter); -// _Matrix = move(other._Matrix); -// _Surface = move(other._Surface); -// } -// return *this; -//} -// -//surface_pattern_builder::surface_pattern_builder(surface&& s) -//: _Pattern_type(pattern_type::surface) -//, _Extend(extend::default_extend) -//, _Filter(filter::default_filter) -//, _Matrix(matrix::init_identity()) -//, _Surface(move(s)) { -//} -// -//pattern surface_pattern_builder::get_pattern() { -// if (!_Surface.has_surface_resource()) { -// _Throw_if_failed_status(status::null_pointer); -// } -// auto pat = cairo_pattern_create_for_surface(_Surface.native_handle()); -// _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); -// -// cairo_pattern_set_extend(pat, _Extend_to_cairo_extend_t(_Extend)); -// _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); -// cairo_pattern_set_filter(pat, _Filter_to_cairo_filter_t(_Filter)); -// _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); -// cairo_matrix_t mtrx{ _Matrix.xx, _Matrix.yx, _Matrix.xy, _Matrix.yy, _Matrix.x0, _Matrix.y0 }; -// cairo_pattern_set_matrix(pat, &mtrx); -// _Throw_if_failed_status(_Cairo_status_t_to_status(cairo_pattern_status(pat))); -// -// return pattern(pat); -//} -// -//void surface_pattern_builder::set_extend(extend e) { -// _Extend = e; -//} -// -//extend surface_pattern_builder::get_extend() { -// return _Extend; -//} -// -//void surface_pattern_builder::set_filter(filter f) { -// _Filter = f; -//} -// -//filter surface_pattern_builder::get_filter() { -// return _Filter; -//} -// -//void surface_pattern_builder::set_matrix(const matrix& m) { -// _Matrix = m; -//} -// -//matrix surface_pattern_builder::get_matrix() { -// return _Matrix; -//} -// -//surface& surface_pattern_builder::get_surface() { -// return _Surface; -//} diff --git a/qt/src/toy_font_face.cpp b/qt/src/toy_font_face.cpp deleted file mode 100755 index 6047104..0000000 --- a/qt/src/toy_font_face.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include "drawing.h" -#include "xdrawinghelpers.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::drawing; - -toy_font_face::toy_font_face(const string& family, font_slant slant, font_weight weight) : font_face(nullptr) { - _Font_face = shared_ptr(cairo_toy_font_face_create(family.c_str(), _Font_slant_to_cairo_font_slant_t(slant), _Font_weight_to_cairo_font_weight_t(weight)), &cairo_font_face_destroy); -} - -toy_font_face::toy_font_face(toy_font_face&& other) : font_face(nullptr) { - _Font_face = move(other._Font_face); - other._Font_face = nullptr; -} - -toy_font_face& toy_font_face::operator=(toy_font_face&& other) { - if (this != &other) { - _Font_face = move(other._Font_face); - other._Font_face = nullptr; - } - return *this; -} - -string toy_font_face::get_family() const { - return string(cairo_toy_font_face_get_family(_Font_face.get())); -} - -font_slant toy_font_face::get_slant() const { - return _Cairo_font_slant_t_to_font_slant(cairo_toy_font_face_get_slant(_Font_face.get())); -} - -font_weight toy_font_face::get_weight() const { - return _Cairo_font_weight_t_to_font_weight(cairo_toy_font_face_get_weight(_Font_face.get())); -} diff --git a/qt/src/xcairoenumhelpers.h b/qt/src/xcairoenumhelpers.h deleted file mode 100755 index 0105f29..0000000 --- a/qt/src/xcairoenumhelpers.h +++ /dev/null @@ -1,740 +0,0 @@ -#pragma once - -#ifndef _XCAIROENUMHELPERS_H_ -#define _XCAIROENUMHELPERS_H_ - -#include "drawing.h" -//#include -#include - -namespace std { - namespace experimental { - namespace drawing { -// inline cairo_status_t _Status_to_cairo_status_t(::std::experimental::drawing::status s) { -// switch (s) { -// case ::std::experimental::drawing::status::success: -// return CAIRO_STATUS_SUCCESS; -// case ::std::experimental::drawing::status::no_memory: -// return CAIRO_STATUS_NO_MEMORY; -// case ::std::experimental::drawing::status::invalid_restore: -// return CAIRO_STATUS_INVALID_RESTORE; -// case ::std::experimental::drawing::status::invalid_pop_group: -// return CAIRO_STATUS_INVALID_POP_GROUP; -// case ::std::experimental::drawing::status::no_current_point: -// return CAIRO_STATUS_NO_CURRENT_POINT; -// case ::std::experimental::drawing::status::invalid_matrix: -// return CAIRO_STATUS_INVALID_MATRIX; -// case ::std::experimental::drawing::status::invalid_status: -// return CAIRO_STATUS_INVALID_STATUS; -// case ::std::experimental::drawing::status::null_pointer: -// return CAIRO_STATUS_NULL_POINTER; -// case ::std::experimental::drawing::status::invalid_string: -// return CAIRO_STATUS_INVALID_STRING; -// case ::std::experimental::drawing::status::invalid_path_data: -// return CAIRO_STATUS_INVALID_PATH_DATA; -// case ::std::experimental::drawing::status::read_error: -// return CAIRO_STATUS_READ_ERROR; -// case ::std::experimental::drawing::status::write_error: -// return CAIRO_STATUS_WRITE_ERROR; -// case ::std::experimental::drawing::status::surface_finished: -// return CAIRO_STATUS_SURFACE_FINISHED; -// case ::std::experimental::drawing::status::surface_type_mismatch: -// return CAIRO_STATUS_SURFACE_TYPE_MISMATCH; -// case ::std::experimental::drawing::status::pattern_type_mismatch: -// return CAIRO_STATUS_PATTERN_TYPE_MISMATCH; -// case ::std::experimental::drawing::status::invalid_content: -// return CAIRO_STATUS_INVALID_CONTENT; -// case ::std::experimental::drawing::status::invalid_format: -// return CAIRO_STATUS_INVALID_FORMAT; -// case ::std::experimental::drawing::status::invalid_visual: -// return CAIRO_STATUS_INVALID_VISUAL; -// case ::std::experimental::drawing::status::file_not_found: -// return CAIRO_STATUS_FILE_NOT_FOUND; -// case ::std::experimental::drawing::status::invalid_dash: -// return CAIRO_STATUS_INVALID_DASH; -// case ::std::experimental::drawing::status::invalid_dsc_comment: -// return CAIRO_STATUS_INVALID_DSC_COMMENT; -// case ::std::experimental::drawing::status::invalid_index: -// return CAIRO_STATUS_INVALID_INDEX; -// case ::std::experimental::drawing::status::clip_not_representable: -// return CAIRO_STATUS_CLIP_NOT_REPRESENTABLE; -// case ::std::experimental::drawing::status::temp_file_error: -// return CAIRO_STATUS_TEMP_FILE_ERROR; -// case ::std::experimental::drawing::status::invalid_stride: -// return CAIRO_STATUS_INVALID_STRIDE; -// case ::std::experimental::drawing::status::font_type_mismatch: -// return CAIRO_STATUS_FONT_TYPE_MISMATCH; -// case ::std::experimental::drawing::status::user_font_immutable: -// return CAIRO_STATUS_USER_FONT_IMMUTABLE; -// case ::std::experimental::drawing::status::user_font_error: -// return CAIRO_STATUS_USER_FONT_ERROR; -// case ::std::experimental::drawing::status::negative_count: -// return CAIRO_STATUS_NEGATIVE_COUNT; -// case ::std::experimental::drawing::status::invalid_clusters: -// return CAIRO_STATUS_INVALID_CLUSTERS; -// case ::std::experimental::drawing::status::invalid_slant: -// return CAIRO_STATUS_INVALID_SLANT; -// case ::std::experimental::drawing::status::invalid_weight: -// return CAIRO_STATUS_INVALID_WEIGHT; -// case ::std::experimental::drawing::status::invalid_size: -// return CAIRO_STATUS_INVALID_SIZE; -// case ::std::experimental::drawing::status::user_font_not_implemented: -// return CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED; -// case ::std::experimental::drawing::status::device_type_mismatch: -// return CAIRO_STATUS_DEVICE_TYPE_MISMATCH; -// case ::std::experimental::drawing::status::device_error: -// return CAIRO_STATUS_DEVICE_ERROR; -// case ::std::experimental::drawing::status::invalid_mesh_construction: -// return CAIRO_STATUS_INVALID_MESH_CONSTRUCTION; -// case ::std::experimental::drawing::status::device_finished: -// return CAIRO_STATUS_DEVICE_FINISHED; -// case ::std::experimental::drawing::status::last_status: -// throw ::std::runtime_error("Invalid status value status::last_status."); -// default: -// throw ::std::runtime_error("Unknown status value."); -// } -// } - -// inline ::std::experimental::drawing::status _Cairo_status_t_to_status(cairo_status_t cs) { -// switch (cs) { -// case CAIRO_STATUS_SUCCESS: -// return ::std::experimental::drawing::status::success; -// case CAIRO_STATUS_NO_MEMORY: -// return ::std::experimental::drawing::status::no_memory; -// case CAIRO_STATUS_INVALID_RESTORE: -// return ::std::experimental::drawing::status::invalid_restore; -// case CAIRO_STATUS_INVALID_POP_GROUP: -// return ::std::experimental::drawing::status::invalid_pop_group; -// case CAIRO_STATUS_NO_CURRENT_POINT: -// return ::std::experimental::drawing::status::no_current_point; -// case CAIRO_STATUS_INVALID_MATRIX: -// return ::std::experimental::drawing::status::invalid_matrix; -// case CAIRO_STATUS_INVALID_STATUS: -// return ::std::experimental::drawing::status::invalid_status; -// case CAIRO_STATUS_NULL_POINTER: -// return ::std::experimental::drawing::status::null_pointer; -// case CAIRO_STATUS_INVALID_STRING: -// return ::std::experimental::drawing::status::invalid_string; -// case CAIRO_STATUS_INVALID_PATH_DATA: -// return ::std::experimental::drawing::status::invalid_path_data; -// case CAIRO_STATUS_READ_ERROR: -// return ::std::experimental::drawing::status::read_error; -// case CAIRO_STATUS_WRITE_ERROR: -// return ::std::experimental::drawing::status::write_error; -// case CAIRO_STATUS_SURFACE_FINISHED: -// return ::std::experimental::drawing::status::surface_finished; -// case CAIRO_STATUS_SURFACE_TYPE_MISMATCH: -// return ::std::experimental::drawing::status::surface_type_mismatch; -// case CAIRO_STATUS_PATTERN_TYPE_MISMATCH: -// return ::std::experimental::drawing::status::pattern_type_mismatch; -// case CAIRO_STATUS_INVALID_CONTENT: -// return ::std::experimental::drawing::status::invalid_content; -// case CAIRO_STATUS_INVALID_FORMAT: -// return ::std::experimental::drawing::status::invalid_format; -// case CAIRO_STATUS_INVALID_VISUAL: -// return ::std::experimental::drawing::status::invalid_visual; -// case CAIRO_STATUS_FILE_NOT_FOUND: -// return ::std::experimental::drawing::status::file_not_found; -// case CAIRO_STATUS_INVALID_DASH: -// return ::std::experimental::drawing::status::invalid_dash; -// case CAIRO_STATUS_INVALID_DSC_COMMENT: -// return ::std::experimental::drawing::status::invalid_dsc_comment; -// case CAIRO_STATUS_INVALID_INDEX: -// return ::std::experimental::drawing::status::invalid_index; -// case CAIRO_STATUS_CLIP_NOT_REPRESENTABLE: -// return ::std::experimental::drawing::status::clip_not_representable; -// case CAIRO_STATUS_TEMP_FILE_ERROR: -// return ::std::experimental::drawing::status::temp_file_error; -// case CAIRO_STATUS_INVALID_STRIDE: -// return ::std::experimental::drawing::status::invalid_stride; -// case CAIRO_STATUS_FONT_TYPE_MISMATCH: -// return ::std::experimental::drawing::status::font_type_mismatch; -// case CAIRO_STATUS_USER_FONT_IMMUTABLE: -// return ::std::experimental::drawing::status::user_font_immutable; -// case CAIRO_STATUS_USER_FONT_ERROR: -// return ::std::experimental::drawing::status::user_font_error; -// case CAIRO_STATUS_NEGATIVE_COUNT: -// return ::std::experimental::drawing::status::negative_count; -// case CAIRO_STATUS_INVALID_CLUSTERS: -// return ::std::experimental::drawing::status::invalid_clusters; -// case CAIRO_STATUS_INVALID_SLANT: -// return ::std::experimental::drawing::status::invalid_slant; -// case CAIRO_STATUS_INVALID_WEIGHT: -// return ::std::experimental::drawing::status::invalid_weight; -// case CAIRO_STATUS_INVALID_SIZE: -// return ::std::experimental::drawing::status::invalid_size; -// case CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED: -// return ::std::experimental::drawing::status::user_font_not_implemented; -// case CAIRO_STATUS_DEVICE_TYPE_MISMATCH: -// return ::std::experimental::drawing::status::device_type_mismatch; -// case CAIRO_STATUS_DEVICE_ERROR: -// return ::std::experimental::drawing::status::device_error; -// case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: -// return ::std::experimental::drawing::status::invalid_mesh_construction; -// case CAIRO_STATUS_DEVICE_FINISHED: -// return ::std::experimental::drawing::status::device_finished; -// case CAIRO_STATUS_LAST_STATUS: -// throw ::std::runtime_error("Invalid cairo_status_t value CAIRO_STATUS_LAST_STATUS."); -// default: -// throw ::std::runtime_error("Unknown cairo_status_t value."); -// } -// } - - inline QFont::StyleStrategy _Antialias_to_QFontOptions(::std::experimental::drawing::antialias aa) { - switch (aa) { - case ::std::experimental::drawing::antialias::default_antialias: - case ::std::experimental::drawing::antialias::gray: - case ::std::experimental::drawing::antialias::subpixel: - case ::std::experimental::drawing::antialias::fast: - case ::std::experimental::drawing::antialias::good: - case ::std::experimental::drawing::antialias::best: - return QFont::PreferAntialias; - case ::std::experimental::drawing::antialias::none: - return QFont::NoAntialias; - default: - throw ::std::runtime_error("Unknown antialias value."); - } - } - - inline ::std::experimental::drawing::antialias _QFontOptions_to_antialias(QFont::StyleStrategy qss) { - switch (qss) { - case QFont::PreferAntialias: - return ::std::experimental::drawing::antialias::best; - case QFont::NoAntialias: - return ::std::experimental::drawing::antialias::none; - default: - throw ::std::runtime_error("Unknown QFont::StyleStrategy value."); - } - } - -// inline cairo_content_t _Content_to_cairo_content_t(::std::experimental::drawing::content c) { -// switch (c) { -// case ::std::experimental::drawing::content::color: -// return CAIRO_CONTENT_COLOR; -// case ::std::experimental::drawing::content::alpha: -// return CAIRO_CONTENT_ALPHA; -// case ::std::experimental::drawing::content::color_alpha: -// return CAIRO_CONTENT_COLOR_ALPHA; -// default: -// throw ::std::runtime_error("Unknown content value."); -// } -// } - -// inline ::std::experimental::drawing::content _Cairo_content_t_to_content(cairo_content_t cc) { -// switch (cc) { -// case CAIRO_CONTENT_COLOR: -// return ::std::experimental::drawing::content::color; -// case CAIRO_CONTENT_ALPHA: -// return ::std::experimental::drawing::content::alpha; -// case CAIRO_CONTENT_COLOR_ALPHA: -// return ::std::experimental::drawing::content::color_alpha; -// default: -// throw ::std::runtime_error("Unknown cairo_content_t value."); -// } -// } - -// inline cairo_fill_rule_t _Fill_rule_to_cairo_fill_rule_t(::std::experimental::drawing::fill_rule fr) { -// switch (fr) { -// case ::std::experimental::drawing::fill_rule::winding: -// return CAIRO_FILL_RULE_WINDING; -// case ::std::experimental::drawing::fill_rule::even_odd: -// return CAIRO_FILL_RULE_EVEN_ODD; -// default: -// throw ::std::runtime_error("Unknown fill_rule value."); -// } -// } - -// inline ::std::experimental::drawing::fill_rule _Cairo_fill_rule_t_to_fill_rule(cairo_fill_rule_t cfr) { -// switch (cfr) { -// case CAIRO_FILL_RULE_WINDING: -// return ::std::experimental::drawing::fill_rule::winding; -// case CAIRO_FILL_RULE_EVEN_ODD: -// return ::std::experimental::drawing::fill_rule::even_odd; -// default: -// throw ::std::runtime_error("Unknown cairo_fill_rule_t value."); -// } -// } - -// inline cairo_line_cap_t _Line_cap_to_cairo_line_cap_t(::std::experimental::drawing::line_cap lc) { -// switch (lc) { -// case ::std::experimental::drawing::line_cap::butt: -// return CAIRO_LINE_CAP_BUTT; -// case ::std::experimental::drawing::line_cap::round: -// return CAIRO_LINE_CAP_ROUND; -// case ::std::experimental::drawing::line_cap::square: -// return CAIRO_LINE_CAP_SQUARE; -// default: -// throw ::std::runtime_error("Unknown line_cap value."); -// } -// } - -// inline ::std::experimental::drawing::line_cap _Cairo_line_cap_t_to_line_cap(cairo_line_cap_t clc) { -// switch (clc) { -// case CAIRO_LINE_CAP_BUTT: -// return ::std::experimental::drawing::line_cap::butt; -// case CAIRO_LINE_CAP_ROUND: -// return ::std::experimental::drawing::line_cap::round; -// case CAIRO_LINE_CAP_SQUARE: -// return ::std::experimental::drawing::line_cap::square; -// default: -// throw ::std::runtime_error("Unknown cairo_line_cap_t value."); -// } -// } - -// inline cairo_line_join_t _Line_join_to_cairo_line_join_t(::std::experimental::drawing::line_join lj) { -// switch (lj) { -// case ::std::experimental::drawing::line_join::miter: -// return CAIRO_LINE_JOIN_MITER; -// case ::std::experimental::drawing::line_join::round: -// return CAIRO_LINE_JOIN_ROUND; -// case ::std::experimental::drawing::line_join::bevel: -// return CAIRO_LINE_JOIN_BEVEL; -// default: -// throw ::std::runtime_error("Unknown line_join value."); -// } -// } - -// inline ::std::experimental::drawing::line_join _Cairo_line_join_t_to_line_join(cairo_line_join_t clj) { -// switch (clj) { -// case CAIRO_LINE_JOIN_MITER: -// return ::std::experimental::drawing::line_join::miter; -// case CAIRO_LINE_JOIN_ROUND: -// return ::std::experimental::drawing::line_join::round; -// case CAIRO_LINE_JOIN_BEVEL: -// return ::std::experimental::drawing::line_join::bevel; -// default: -// throw ::std::runtime_error("Unknown cairo_line_join_t value."); -// } -// } - -// inline cairo_operator_t _Compositing_operator_to_cairo_operator_t(::std::experimental::drawing::compositing_operator co) { -// switch (co) -// { -// case ::std::experimental::drawing::compositing_operator::clear: -// return CAIRO_OPERATOR_CLEAR; -// case ::std::experimental::drawing::compositing_operator::source: -// return CAIRO_OPERATOR_SOURCE; -// case ::std::experimental::drawing::compositing_operator::over: -// return CAIRO_OPERATOR_OVER; -// case ::std::experimental::drawing::compositing_operator::in: -// return CAIRO_OPERATOR_IN; -// case ::std::experimental::drawing::compositing_operator::out: -// return CAIRO_OPERATOR_OUT; -// case ::std::experimental::drawing::compositing_operator::atop: -// return CAIRO_OPERATOR_ATOP; -// case ::std::experimental::drawing::compositing_operator::dest: -// return CAIRO_OPERATOR_DEST; -// case ::std::experimental::drawing::compositing_operator::dest_over: -// return CAIRO_OPERATOR_DEST_OVER; -// case ::std::experimental::drawing::compositing_operator::dest_in: -// return CAIRO_OPERATOR_DEST_IN; -// case ::std::experimental::drawing::compositing_operator::dest_out: -// return CAIRO_OPERATOR_DEST_OUT; -// case ::std::experimental::drawing::compositing_operator::dest_atop: -// return CAIRO_OPERATOR_DEST_ATOP; -// case ::std::experimental::drawing::compositing_operator::xor_compositing_operator: -// return CAIRO_OPERATOR_XOR; -// case ::std::experimental::drawing::compositing_operator::add: -// return CAIRO_OPERATOR_ADD; -// case ::std::experimental::drawing::compositing_operator::saturate: -// return CAIRO_OPERATOR_SATURATE; -// case ::std::experimental::drawing::compositing_operator::multiply: -// return CAIRO_OPERATOR_MULTIPLY; -// case ::std::experimental::drawing::compositing_operator::screen: -// return CAIRO_OPERATOR_SCREEN; -// case ::std::experimental::drawing::compositing_operator::overlay: -// return CAIRO_OPERATOR_OVERLAY; -// case ::std::experimental::drawing::compositing_operator::darken: -// return CAIRO_OPERATOR_DARKEN; -// case ::std::experimental::drawing::compositing_operator::lighten: -// return CAIRO_OPERATOR_LIGHTEN; -// case ::std::experimental::drawing::compositing_operator::color_dodge: -// return CAIRO_OPERATOR_COLOR_DODGE; -// case ::std::experimental::drawing::compositing_operator::color_burn: -// return CAIRO_OPERATOR_COLOR_BURN; -// case ::std::experimental::drawing::compositing_operator::hard_light: -// return CAIRO_OPERATOR_HARD_LIGHT; -// case ::std::experimental::drawing::compositing_operator::soft_light: -// return CAIRO_OPERATOR_SOFT_LIGHT; -// case ::std::experimental::drawing::compositing_operator::difference: -// return CAIRO_OPERATOR_DIFFERENCE; -// case ::std::experimental::drawing::compositing_operator::exclusion: -// return CAIRO_OPERATOR_EXCLUSION; -// case ::std::experimental::drawing::compositing_operator::hsl_hue: -// return CAIRO_OPERATOR_HSL_HUE; -// case ::std::experimental::drawing::compositing_operator::hsl_saturation: -// return CAIRO_OPERATOR_HSL_SATURATION; -// case ::std::experimental::drawing::compositing_operator::hsl_color: -// return CAIRO_OPERATOR_HSL_COLOR; -// case ::std::experimental::drawing::compositing_operator::hsl_luminosity: -// return CAIRO_OPERATOR_HSL_LUMINOSITY; -// default: -// throw ::std::runtime_error("Unknown compositing_operator value."); -// } -// } - -// inline ::std::experimental::drawing::compositing_operator _Cairo_operator_t_to_compositing_operator(cairo_operator_t co) { -// switch (co) -// { -// case CAIRO_OPERATOR_CLEAR: -// return ::std::experimental::drawing::compositing_operator::clear; -// case CAIRO_OPERATOR_SOURCE: -// return ::std::experimental::drawing::compositing_operator::source; -// case CAIRO_OPERATOR_OVER: -// return ::std::experimental::drawing::compositing_operator::over; -// case CAIRO_OPERATOR_IN: -// return ::std::experimental::drawing::compositing_operator::in; -// case CAIRO_OPERATOR_OUT: -// return ::std::experimental::drawing::compositing_operator::out; -// case CAIRO_OPERATOR_ATOP: -// return ::std::experimental::drawing::compositing_operator::atop; -// case CAIRO_OPERATOR_DEST: -// return ::std::experimental::drawing::compositing_operator::dest; -// case CAIRO_OPERATOR_DEST_OVER: -// return ::std::experimental::drawing::compositing_operator::dest_over; -// case CAIRO_OPERATOR_DEST_IN: -// return ::std::experimental::drawing::compositing_operator::dest_in; -// case CAIRO_OPERATOR_DEST_OUT: -// return ::std::experimental::drawing::compositing_operator::dest_out; -// case CAIRO_OPERATOR_DEST_ATOP: -// return ::std::experimental::drawing::compositing_operator::dest_atop; -// case CAIRO_OPERATOR_XOR: -// return ::std::experimental::drawing::compositing_operator::xor_compositing_operator; -// case CAIRO_OPERATOR_ADD: -// return ::std::experimental::drawing::compositing_operator::add; -// case CAIRO_OPERATOR_SATURATE: -// return ::std::experimental::drawing::compositing_operator::saturate; -// case CAIRO_OPERATOR_MULTIPLY: -// return ::std::experimental::drawing::compositing_operator::multiply; -// case CAIRO_OPERATOR_SCREEN: -// return ::std::experimental::drawing::compositing_operator::screen; -// case CAIRO_OPERATOR_OVERLAY: -// return ::std::experimental::drawing::compositing_operator::overlay; -// case CAIRO_OPERATOR_DARKEN: -// return ::std::experimental::drawing::compositing_operator::darken; -// case CAIRO_OPERATOR_LIGHTEN: -// return ::std::experimental::drawing::compositing_operator::lighten; -// case CAIRO_OPERATOR_COLOR_DODGE: -// return ::std::experimental::drawing::compositing_operator::color_dodge; -// case CAIRO_OPERATOR_COLOR_BURN: -// return ::std::experimental::drawing::compositing_operator::color_burn; -// case CAIRO_OPERATOR_HARD_LIGHT: -// return ::std::experimental::drawing::compositing_operator::hard_light; -// case CAIRO_OPERATOR_SOFT_LIGHT: -// return ::std::experimental::drawing::compositing_operator::soft_light; -// case CAIRO_OPERATOR_DIFFERENCE: -// return ::std::experimental::drawing::compositing_operator::difference; -// case CAIRO_OPERATOR_EXCLUSION: -// return ::std::experimental::drawing::compositing_operator::exclusion; -// case CAIRO_OPERATOR_HSL_HUE: -// return ::std::experimental::drawing::compositing_operator::hsl_hue; -// case CAIRO_OPERATOR_HSL_SATURATION: -// return ::std::experimental::drawing::compositing_operator::hsl_saturation; -// case CAIRO_OPERATOR_HSL_COLOR: -// return ::std::experimental::drawing::compositing_operator::hsl_color; -// case CAIRO_OPERATOR_HSL_LUMINOSITY: -// return ::std::experimental::drawing::compositing_operator::hsl_luminosity; -// default: -// throw ::std::runtime_error("Unknown cairo_operator_t value."); -// } -// } - - inline QImage::Format _Format_to_QImage_Format(::std::experimental::drawing::format f) { - switch (f) { - case ::std::experimental::drawing::format::invalid: - return QImage::Format_Invalid; - case ::std::experimental::drawing::format::argb32: - return QImage::Format_ARGB32_Premultiplied; - case ::std::experimental::drawing::format::rgb24: - return QImage::Format_RGB32; - case ::std::experimental::drawing::format::a8: - return QImage::Format_Indexed8; - case ::std::experimental::drawing::format::a1: - return QImage::Format_MonoLSB; - case ::std::experimental::drawing::format::rgb16_565: - return QImage::Format_RGB16; - default: - throw ::std::runtime_error("Unknown format value."); - } - } - - inline ::std::experimental::drawing::format _QImage_Format_to_format(QImage::Format qf) { - switch (qf) { - case QImage::Format_Invalid: - return ::std::experimental::drawing::format::invalid; - case QImage::Format_ARGB32_Premultiplied: - return ::std::experimental::drawing::format::argb32; - case QImage::Format_RGB32: - return ::std::experimental::drawing::format::rgb24; - case QImage::Format_Indexed8: - return ::std::experimental::drawing::format::a8; - case QImage::Format_MonoLSB: - return ::std::experimental::drawing::format::a1; - case QImage::Format_RGB16: - return ::std::experimental::drawing::format::rgb16_565; - default: - throw ::std::runtime_error("Unknown QImage::Format value."); - } - } - -// inline ::std::experimental::drawing::path_data_type _Cairo_path_data_type_t_to_path_data_type(cairo_path_data_type_t cpdt) { -// switch (cpdt) { -// case CAIRO_PATH_MOVE_TO: -// return ::std::experimental::drawing::path_data_type::move_to; -// case CAIRO_PATH_LINE_TO: -// return ::std::experimental::drawing::path_data_type::line_to; -// case CAIRO_PATH_CURVE_TO: -// return ::std::experimental::drawing::path_data_type::curve_to; -// case CAIRO_PATH_CLOSE_PATH: -// return ::std::experimental::drawing::path_data_type::close_path; -// default: -// throw ::std::runtime_error("Unknown cairo_path_data_type_t value."); -// } -// } - -// inline cairo_extend_t _Extend_to_cairo_extend_t(::std::experimental::drawing::extend e) { -// switch (e) { -// case ::std::experimental::drawing::extend::none: -// return CAIRO_EXTEND_NONE; -// case ::std::experimental::drawing::extend::repeat: -// return CAIRO_EXTEND_REPEAT; -// case ::std::experimental::drawing::extend::reflect: -// return CAIRO_EXTEND_REFLECT; -// case ::std::experimental::drawing::extend::pad: -// return CAIRO_EXTEND_PAD; -// default: -// throw ::std::runtime_error("Unknown extend value."); -// } -// } - -// inline ::std::experimental::drawing::extend _Cairo_extend_t_to_extend(cairo_extend_t ce) { -// switch (ce) { -// case CAIRO_EXTEND_NONE: -// return ::std::experimental::drawing::extend::none; -// case CAIRO_EXTEND_REPEAT: -// return ::std::experimental::drawing::extend::repeat; -// case CAIRO_EXTEND_REFLECT: -// return ::std::experimental::drawing::extend::reflect; -// case CAIRO_EXTEND_PAD: -// return ::std::experimental::drawing::extend::pad; -// default: -// throw ::std::runtime_error("Unknown cairo_extend_t value."); -// } -// } - -// inline cairo_filter_t _Filter_to_cairo_filter_t(::std::experimental::drawing::filter f) { -// switch (f) { -// case ::std::experimental::drawing::filter::fast: -// return CAIRO_FILTER_FAST; -// case ::std::experimental::drawing::filter::good: -// return CAIRO_FILTER_GOOD; -// case ::std::experimental::drawing::filter::best: -// return CAIRO_FILTER_BEST; -// case ::std::experimental::drawing::filter::nearest: -// return CAIRO_FILTER_NEAREST; -// case ::std::experimental::drawing::filter::bilinear: -// return CAIRO_FILTER_BILINEAR; -// case ::std::experimental::drawing::filter::gaussian: -// return CAIRO_FILTER_GAUSSIAN; -// default: -// throw ::std::runtime_error("Unknown filter value."); -// } -// } - -// inline ::std::experimental::drawing::filter _Cairo_filter_t_to_filter(cairo_filter_t cf) { -// switch (cf) { -// case CAIRO_FILTER_FAST: -// return ::std::experimental::drawing::filter::fast; -// case CAIRO_FILTER_GOOD: -// return ::std::experimental::drawing::filter::good; -// case CAIRO_FILTER_BEST: -// return ::std::experimental::drawing::filter::best; -// case CAIRO_FILTER_NEAREST: -// return ::std::experimental::drawing::filter::nearest; -// case CAIRO_FILTER_BILINEAR: -// return ::std::experimental::drawing::filter::bilinear; -// case CAIRO_FILTER_GAUSSIAN: -// return ::std::experimental::drawing::filter::gaussian; -// default: -// throw ::std::runtime_error("Unknown cairo_filter_t value."); -// } -// } - -// inline cairo_pattern_type_t _Pattern_type_to_cairo_pattern_type_t(::std::experimental::drawing::pattern_type pt) { -// switch (pt) { -// case ::std::experimental::drawing::pattern_type::solid_color: -// return CAIRO_PATTERN_TYPE_SOLID; -// case ::std::experimental::drawing::pattern_type::surface: -// return CAIRO_PATTERN_TYPE_SURFACE; -// case ::std::experimental::drawing::pattern_type::linear: -// return CAIRO_PATTERN_TYPE_LINEAR; -// case ::std::experimental::drawing::pattern_type::radial: -// return CAIRO_PATTERN_TYPE_RADIAL; -// case ::std::experimental::drawing::pattern_type::mesh: -// return CAIRO_PATTERN_TYPE_MESH; -// case ::std::experimental::drawing::pattern_type::raster_source: -// return CAIRO_PATTERN_TYPE_RASTER_SOURCE; -// default: -// throw ::std::runtime_error("Unknown pattern_type value."); -// } -// } - - inline ::std::experimental::drawing::pattern_type _Qt_brush_style_to_pattern_type(Qt::BrushStyle qbs) { - switch (qbs) { - case Qt::SolidPattern: - return ::std::experimental::drawing::pattern_type::solid_color; - case Qt::TexturePattern: - return ::std::experimental::drawing::pattern_type::surface; - case Qt::LinearGradientPattern: - return ::std::experimental::drawing::pattern_type::linear; - case Qt::RadialGradientPattern: - return ::std::experimental::drawing::pattern_type::radial; -// case QGradient::MeshGradient: -// return ::std::experimental::drawing::pattern_type::mesh; -// case QGradient::RasterSource: -// return ::std::experimental::drawing::pattern_type::raster_source; - default: - throw ::std::runtime_error("Unknown Qt::BrushStyle value."); - } - } - -// inline cairo_font_slant_t _Font_slant_to_cairo_font_slant_t(::std::experimental::drawing::font_slant fs) { -// switch (fs) { -// case ::std::experimental::drawing::font_slant::normal: -// return CAIRO_FONT_SLANT_NORMAL; -// case ::std::experimental::drawing::font_slant::italic: -// return CAIRO_FONT_SLANT_ITALIC; -// case ::std::experimental::drawing::font_slant::oblique: -// return CAIRO_FONT_SLANT_OBLIQUE; -// default: -// throw ::std::runtime_error("Unknown font_slant value."); -// } -// } - -// inline ::std::experimental::drawing::font_slant _Cairo_font_slant_t_to_font_slant(cairo_font_slant_t cfs) { -// switch (cfs) { -// case CAIRO_FONT_SLANT_NORMAL: -// return ::std::experimental::drawing::font_slant::normal; -// case CAIRO_FONT_SLANT_ITALIC: -// return ::std::experimental::drawing::font_slant::italic; -// case CAIRO_FONT_SLANT_OBLIQUE: -// return ::std::experimental::drawing::font_slant::oblique; -// default: -// throw ::std::runtime_error("Unknown cairo_font_slant_t value."); -// } -// } - -// inline cairo_font_weight_t _Font_weight_to_cairo_font_weight_t(::std::experimental::drawing::font_weight fw) { -// switch (fw) { -// case ::std::experimental::drawing::font_weight::normal: -// return CAIRO_FONT_WEIGHT_NORMAL; -// case ::std::experimental::drawing::font_weight::bold: -// return CAIRO_FONT_WEIGHT_BOLD; -// default: -// throw ::std::runtime_error("Unknown font_weight value."); -// } -// } - -// inline ::std::experimental::drawing::font_weight _Cairo_font_weight_t_to_font_weight(cairo_font_weight_t cfw) { -// switch (cfw) { -// case CAIRO_FONT_WEIGHT_NORMAL: -// return ::std::experimental::drawing::font_weight::normal; -// case CAIRO_FONT_WEIGHT_BOLD: -// return ::std::experimental::drawing::font_weight::bold; -// default: -// throw ::std::runtime_error("Unknown cairo_font_weight_t value."); -// } -// } - -// inline cairo_text_cluster_flags_t _Text_cluster_flags_to_cairo_text_cluster_flags_t(const ::std::experimental::drawing::text_cluster_flags::text_cluster_flags& tcf) { -// cairo_text_cluster_flags_t result{ }; -// if (tcf == 0) { -// return static_cast(0); -// } -// if ((tcf & ::std::experimental::drawing::text_cluster_flags::backward) != 0) { -// result = static_cast(result | CAIRO_TEXT_CLUSTER_FLAG_BACKWARD); -// } -// return result; -// } - -// inline ::std::experimental::drawing::text_cluster_flags::text_cluster_flags _Cairo_text_cluster_flags_t_to_text_cluster_flags(cairo_text_cluster_flags_t ctcf) { -// ::std::experimental::drawing::text_cluster_flags::text_cluster_flags result{ }; -// if (ctcf == 0) { -// return result; -// } - -// if ((ctcf & CAIRO_TEXT_CLUSTER_FLAG_BACKWARD) != 0) { -// result = static_cast<::std::experimental::drawing::text_cluster_flags::text_cluster_flags>(result | ::std::experimental::drawing::text_cluster_flags::backward); -// } - -// return result; -// } - - - inline QFont::HintingPreference _Hint_style_to_QFontOptions(::std::experimental::drawing::hint_style hs) { - switch (hs) { - case ::std::experimental::drawing::hint_style::default_hint_style: - return QFont::PreferDefaultHinting; - case ::std::experimental::drawing::hint_style::none: - return QFont::PreferNoHinting; - case ::std::experimental::drawing::hint_style::slight: - case ::std::experimental::drawing::hint_style::medium: - return QFont::PreferVerticalHinting; - case ::std::experimental::drawing::hint_style::full: - return QFont::PreferFullHinting; - default: - throw ::std::runtime_error("Unknown hint_style value."); - } - } - - inline ::std::experimental::drawing::hint_style _QFontOptions_to_hint_style(QFont::HintingPreference qhp) { - switch (qhp) { - case QFont::PreferDefaultHinting: - return ::std::experimental::drawing::hint_style::default_hint_style; - case QFont::PreferNoHinting: - return ::std::experimental::drawing::hint_style::none; - case QFont::PreferVerticalHinting: - return ::std::experimental::drawing::hint_style::medium; - case QFont::PreferFullHinting: - return ::std::experimental::drawing::hint_style::full; - default: - throw ::std::runtime_error("Unknown QFont::HintingPrefrence value."); - } - } - -// inline cairo_hint_metrics_t _Hint_metrics_to_cairo_hint_metrics_t(::std::experimental::drawing::hint_metrics hm) { -// switch (hm) { -// case ::std::experimental::drawing::hint_metrics::default_hint_metrics: -// return CAIRO_HINT_METRICS_DEFAULT; - -// case ::std::experimental::drawing::hint_metrics::off: -// return CAIRO_HINT_METRICS_OFF; -// case ::std::experimental::drawing::hint_metrics::on: -// return CAIRO_HINT_METRICS_ON; -// default: -// throw ::std::runtime_error("Unknown hint_metrics value."); -// } -// } - -// inline ::std::experimental::drawing::hint_metrics _Cairo_hint_metrics_t_to_hint_metrics(cairo_hint_metrics_t chm) { -// switch (chm) { -// case CAIRO_HINT_METRICS_DEFAULT: -// return ::std::experimental::drawing::hint_metrics::default_hint_metrics; -// case CAIRO_HINT_METRICS_OFF: -// return ::std::experimental::drawing::hint_metrics::off; -// case CAIRO_HINT_METRICS_ON: -// return ::std::experimental::drawing::hint_metrics::on; -// default: -// throw ::std::runtime_error("Unknown cairo_hint_metrics_t value."); -// } -// } - - QColor rgba_color_to_QColor(rgba_color color) { - return QColor(color.r * 255.0, color.g * 255.0, color.b * 255.0, color.a * 255.0); - } - - } // close drawing - } // close experimental -} // close std - -#endif diff --git a/qt/src/xdrawing.h b/qt/src/xdrawing.h deleted file mode 100755 index 182613b..0000000 --- a/qt/src/xdrawing.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#ifndef _XDRAWING_ -#define _XDRAWING_ - -#include -#include -#include -#include -#include -#include -#include - -struct _QFontOptions -{ - QFont::StyleStrategy styleStrategy; - QFont::HintingPreference hintingPreference; -}; - -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/qt/src/xdrawinghelpers.h b/qt/src/xdrawinghelpers.h deleted file mode 100755 index 716e50c..0000000 --- a/qt/src/xdrawinghelpers.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once -#include "drawing.h" - -#define _PI 3.1415926535897932384626433832795 - -inline void _Throw_if_failed_status(::std::experimental::drawing::status s) { - if (s != ::std::experimental::drawing::status::success) { - throw ::std::experimental::drawing::drawing_exception(s); - } -} - -// Converts 'value' to an int and returns it. If nearestNeighbor is true, the return value is the result of calling 'static_cast(round(value))'; if false, the return value is the result of calling 'static_cast(trunc(value))'. -inline int _Double_to_int(double value, bool nearestNeighbor = true) { - if (nearestNeighbor) { - // Round to the nearest neighbor. - return static_cast(round(value)); - } - // Otherwise truncate. - return static_cast(trunc(value)); -} - -template -T _Degrees_to_radians(T degrees) { - return degrees * static_cast(3.1415926535897932384626433832795L) / static_cast(180.0L); -} From 644d4600e31b91216bd82e9a37cdf06abfbd1bd8 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Sun, 28 Feb 2016 18:08:13 +0100 Subject: [PATCH 15/30] Added cmake build support - added cairo cmake build support - added hello world example Tested with Visual C++ 2015 --- CMakeLists.txt | 11 +++ examples/hello-world/CMakeLists.txt | 13 +++ examples/hello-world/hello.cpp | 42 +++++++++ examples/hello-world/tga_header.h | 61 +++++++++++++ io2d/src/3rd-party/CMakeLists.txt | 9 ++ io2d/src/3rd-party/cairo/CMakeLists.txt | 104 +++++++++++++++++++++++ io2d/src/3rd-party/cairo/config.h.cmake | 4 + io2d/src/3rd-party/pixman/CMakeLists.txt | 2 +- io2d/src/CMakeLists.txt | 57 +++++++++++++ 9 files changed, 302 insertions(+), 1 deletion(-) create mode 100644 CMakeLists.txt create mode 100644 examples/hello-world/CMakeLists.txt create mode 100644 examples/hello-world/hello.cpp create mode 100644 examples/hello-world/tga_header.h create mode 100644 io2d/src/3rd-party/CMakeLists.txt create mode 100644 io2d/src/3rd-party/cairo/CMakeLists.txt create mode 100644 io2d/src/3rd-party/cairo/config.h.cmake create mode 100644 io2d/src/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..7bd9980 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(io2d CXX) + +add_subdirectory(io2d/src) +set(IO2D_INCLUDE_DIR + ${CMAKE_CURRENT_SOURCE_DIR}/io2d/include + ${CMAKE_CURRENT_SOURCE_DIR}/io2d/src/3rd-party/cairo/src) +set(IO2D_LIBRARY io2d) + +add_subdirectory(examples/hello-world) diff --git a/examples/hello-world/CMakeLists.txt b/examples/hello-world/CMakeLists.txt new file mode 100644 index 0000000..58ac6a5 --- /dev/null +++ b/examples/hello-world/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(hello CXX) + +add_executable(hello hello.cpp) + +target_link_libraries(hello ${IO2D_LIBRARY}) +target_include_directories(hello PRIVATE ${IO2D_INCLUDE_DIR}) + +if (WIN32) + target_compile_definitions(hello PRIVATE + CAIRO_WIN32_STATIC_BUILD _WIN32_WINNT=0x0600) +endif() diff --git a/examples/hello-world/hello.cpp b/examples/hello-world/hello.cpp new file mode 100644 index 0000000..76377f7 --- /dev/null +++ b/examples/hello-world/hello.cpp @@ -0,0 +1,42 @@ +#include + +#include +#include "tga_header.h" + +namespace io2d = std::experimental::io2d; + +void save_surface_to_tga_file(io2d::image_surface& surface, + std::string const& fileName) +{ + tga::header tga_header; + tga_header.image_type = tga::image_type::true_color; + tga_header.image_spec.width = surface.width(); + tga_header.image_spec.height = surface.height(); + tga_header.image_spec.depth = 32; + tga_header.image_spec.descriptor.top = 1; + + std::ofstream ofs(fileName, std::ofstream::binary); + ofs.write(reinterpret_cast(&tga_header), + sizeof(tga_header)); + + auto bytes = surface.data(); + ofs.write(reinterpret_cast(&bytes[0]), + bytes.size()); +} + +int main () +{ + io2d::image_surface image(io2d::format::argb32, 240, 80); + + io2d::simple_font_face consolas("Consolas", io2d::font_slant::normal, + io2d::font_weight::bold); + image.font_face(consolas); + image.font_size(32.0); + + io2d::brush cyan(io2d::rgba_color::cyan()); + image.brush(cyan); + + image.render_text("Hello World", {20.0, 50.0}); + + save_surface_to_tga_file(image, "hello.tga"); +} diff --git a/examples/hello-world/tga_header.h b/examples/hello-world/tga_header.h new file mode 100644 index 0000000..4d5b4d9 --- /dev/null +++ b/examples/hello-world/tga_header.h @@ -0,0 +1,61 @@ +#pragma once + +// http://stackoverflow.com/questions/14025735/problems-displaying-targa-tga +namespace tga +{ + enum class color_map_type : uint8_t + { + absent = 0, + present = 1, + }; + + enum class image_type : uint8_t + { + none = 0, + color_mapped = 1, + true_color = 2, + black_white = 3, + rle_color_mapped = 9, + rle_true_color = 10, + rle_black_white = 11, + }; + + #pragma pack(1) + struct color_map_spec + { + uint16_t first_entry_index {0}; + uint16_t length {0}; + uint8_t entry_size {0}; + }; + static_assert(sizeof(color_map_spec) == 5, "bad size"); + + struct image_descriptor + { + uint8_t alpha : 4; + uint8_t right : 1; + uint8_t top : 1; + uint8_t reserved : 2; + }; + static_assert(sizeof(image_descriptor) == 1, "bad size"); + + struct image_spec + { + uint16_t x_origin {0}; + uint16_t y_origin {0}; + uint16_t width {0}; + uint16_t height {0}; + uint8_t depth {0}; + image_descriptor descriptor {0}; + }; + static_assert(sizeof(image_spec) == 10, "bad size"); + + struct header + { + uint8_t id_length {0}; + color_map_type color_map_type {color_map_type::absent }; + image_type image_type; + color_map_spec color_map_spec; + image_spec image_spec; + }; + static_assert(sizeof(header) == 18, "bad size"); +} diff --git a/io2d/src/3rd-party/CMakeLists.txt b/io2d/src/3rd-party/CMakeLists.txt new file mode 100644 index 0000000..a15c97f --- /dev/null +++ b/io2d/src/3rd-party/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 2.8.12) + +add_subdirectory(pixman) +set(PIXMAN_INCLUDE_DIR + ${CMAKE_CURRENT_SOURCE_DIR}/pixman/pixman + ${CMAKE_CURRENT_BINARY_DIR}/pixman) +set(PIXMAN_LIBRARY pixman) + +add_subdirectory(cairo) diff --git a/io2d/src/3rd-party/cairo/CMakeLists.txt b/io2d/src/3rd-party/cairo/CMakeLists.txt new file mode 100644 index 0000000..584f765 --- /dev/null +++ b/io2d/src/3rd-party/cairo/CMakeLists.txt @@ -0,0 +1,104 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(cairo C) + +set(CAIRO_SRC + src/cairo-analysis-surface.c src/cairo-arc.c + src/cairo-array.c src/cairo-atomic.c + src/cairo-base64-stream.c src/cairo-base85-stream.c + src/cairo-bentley-ottmann.c src/cairo-bentley-ottmann-rectangular.c + src/cairo-bentley-ottmann-rectilinear.c src/cairo-botor-scan-converter.c + src/cairo-boxes.c src/cairo-boxes-intersect.c + src/cairo.c src/cairo-cache.c + src/cairo-clip.c src/cairo-clip-boxes.c + src/cairo-clip-polygon.c src/cairo-clip-region.c + src/cairo-clip-surface.c src/cairo-color.c + src/cairo-composite-rectangles.c src/cairo-compositor.c + src/cairo-contour.c src/cairo-damage.c + src/cairo-debug.c src/cairo-default-context.c + src/cairo-device.c src/cairo-error.c + src/cairo-fallback-compositor.c src/cairo-fixed.c + src/cairo-font-face.c src/cairo-font-face-twin.c + src/cairo-font-face-twin-data.c src/cairo-font-options.c + src/cairo-freelist.c src/cairo-freed-pool.c + src/cairo-gstate.c src/cairo-hash.c + src/cairo-hull.c src/cairo-image-compositor.c + src/cairo-image-info.c src/cairo-image-source.c + src/cairo-image-surface.c src/cairo-lzw.c + src/cairo-matrix.c src/cairo-mask-compositor.c + src/cairo-mesh-pattern-rasterizer.c src/cairo-mempool.c + src/cairo-misc.c src/cairo-mono-scan-converter.c + src/cairo-mutex.c src/cairo-no-compositor.c + src/cairo-observer.c src/cairo-output-stream.c + src/cairo-paginated-surface.c src/cairo-path-bounds.c + src/cairo-path.c src/cairo-path-fill.c + src/cairo-path-fixed.c src/cairo-path-in-fill.c + src/cairo-path-stroke.c src/cairo-path-stroke-boxes.c + src/cairo-path-stroke-polygon.c src/cairo-path-stroke-traps.c + src/cairo-path-stroke-tristrip.c src/cairo-pattern.c + src/cairo-pen.c src/cairo-polygon.c + src/cairo-polygon-intersect.c src/cairo-polygon-reduce.c + src/cairo-raster-source-pattern.c src/cairo-recording-surface.c + src/cairo-rectangle.c src/cairo-rectangular-scan-converter.c + src/cairo-region.c src/cairo-rtree.c + src/cairo-scaled-font.c src/cairo-shape-mask-compositor.c + src/cairo-slope.c src/cairo-spans.c + src/cairo-spans-compositor.c src/cairo-spline.c + src/cairo-stroke-dash.c src/cairo-stroke-style.c + src/cairo-surface.c src/cairo-surface-clipper.c + src/cairo-surface-fallback.c src/cairo-surface-observer.c + src/cairo-surface-offset.c src/cairo-surface-snapshot.c + src/cairo-surface-subsurface.c src/cairo-surface-wrapper.c + src/cairo-time.c src/cairo-tor-scan-converter.c + src/cairo-tor22-scan-converter.c src/cairo-clip-tor-scan-converter.c + src/cairo-toy-font-face.c src/cairo-traps.c + src/cairo-tristrip.c src/cairo-traps-compositor.c + src/cairo-unicode.c src/cairo-user-font.c + src/cairo-version.c src/cairo-wideint.c + + src/cairo-script-surface.c + + src/cairo-cff-subset.c src/cairo-scaled-font-subsets.c + src/cairo-truetype-subset.c src/cairo-type1-fallback.c + src/cairo-type1-glyph-names.c src/cairo-type1-subset.c +) + +if(WIN32) + set(CAIRO_SRC_WIN32 + src/win32/cairo-win32-debug.c src/win32/cairo-win32-device.c + src/win32/cairo-win32-gdi-compositor.c src/win32/cairo-win32-system.c + src/win32/cairo-win32-surface.c src/win32/cairo-win32-display-surface.c + src/win32/cairo-win32-printing-surface.c src/win32/cairo-win32-font.c + ) + list(APPEND CAIRO_SRC ${CAIRO_SRC_WIN32}) + set(CAIRO_EXTRA_LIBRARIES msimg32) +endif() + +add_library(cairo ${CAIRO_SRC}) +target_link_libraries(cairo + ${CAIRO_EXTRA_LIBRARIES} + ${PIXMAN_LIBRARY} +) + +target_include_directories(cairo PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/src + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + ${PIXMAN_INCLUDE_DIR} +) + +include(CheckIncludeFiles) +include(CheckTypeSize) + +target_compile_definitions(cairo PRIVATE HAVE_CONFIG_H) +check_include_files(stdint.h HAVE_STDINT_H) +check_include_files(inttypes.h HAVE_INTTYPES_H) +check_include_files(sys/int_types.h HAVE_SYS_INT_TYPES_H) + +check_type_size("uint64_t" SIZEOF_UINT64_T) +if(SIZEOF_UINT64_T) + set(HAVE_UINT64_T 1) +endif() + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake + ${CMAKE_CURRENT_BINARY_DIR}/config.h) diff --git a/io2d/src/3rd-party/cairo/config.h.cmake b/io2d/src/3rd-party/cairo/config.h.cmake new file mode 100644 index 0000000..ee1e43a --- /dev/null +++ b/io2d/src/3rd-party/cairo/config.h.cmake @@ -0,0 +1,4 @@ +#cmakedefine HAVE_STDINT_H 1 +#cmakedefine HAVE_INTTYPES_H 1 +#cmakedefine HAVE_SYS_INT_TYPES_H 1 +#cmakedefine HAVE_UINT64_T @HAVE_UINT64_T@ diff --git a/io2d/src/3rd-party/pixman/CMakeLists.txt b/io2d/src/3rd-party/pixman/CMakeLists.txt index e577716..f47e4fe 100644 --- a/io2d/src/3rd-party/pixman/CMakeLists.txt +++ b/io2d/src/3rd-party/pixman/CMakeLists.txt @@ -28,7 +28,7 @@ target_include_directories(pixman PRIVATE ) option(USE_SSE2 "use SSE2 compiler intrinsics" ON) -if (USE_SSE2) +if (USE_SSE2 AND CMAKE_COMPILER_IS_GNU_C) list(APPEND PIXMAN_SRC pixman/pixman-sse2.c) target_compile_definitions(pixman PRIVATE USE_SSE2) endif() diff --git a/io2d/src/CMakeLists.txt b/io2d/src/CMakeLists.txt new file mode 100644 index 0000000..b9159c6 --- /dev/null +++ b/io2d/src/CMakeLists.txt @@ -0,0 +1,57 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(io2d CXX) + +add_subdirectory(3rd-party) +set(CAIRO_INCLUDE_DIR + ${CMAKE_CURRENT_SOURCE_DIR}/3rd-party/cairo/src + ${CMAKE_CURRENT_SOURCE_DIR}/3rd-party/cairo/ + ${CMAKE_CURRENT_BINARY_DIR}/3rd-party/cairo) +set(CAIRO_LIBRARY cairo) + +set(IO2D_SRC + brush.cpp + device.cpp + display_surface-common.cpp + font_extents.cpp + font_face.cpp + font_options.cpp + image_surface.cpp + io2d_error_category.cpp + linear_brush_factory.cpp + mapped_surface.cpp + matrix_2d.cpp + mesh_brush_factory.cpp + path.cpp + path_data.cpp + path_data_item.cpp + path_factory.cpp + radial_brush_factory.cpp + rectangle.cpp + rgba_color.cpp + simple_font_face.cpp + solid_color_brush_factory.cpp + standalone_functions.cpp + surface.cpp + surface_brush_factory.cpp + text_extents.cpp + vector_2d.cpp +) + +if (WIN32) + list(APPEND IO2D_SRC display_surface-win32.cpp) +else() + list(APPEND IO2D_SRC display_surface-xlib.cpp) +endif() + +add_library(io2d ${IO2D_SRC}) +target_link_libraries(io2d ${CAIRO_LIBRARY}) +target_include_directories(io2d PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/../include + ${CAIRO_INCLUDE_DIR} +) + +if (WIN32) + target_compile_definitions(io2d PRIVATE + _WIN32_WINNT=0x0600 CAIRO_WIN32_STATIC_BUILD UNICODE) +endif() From d50842166c29bb8fde6834ec049d6d48d9f336da Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Sun, 28 Feb 2016 18:27:39 +0100 Subject: [PATCH 16/30] Updated LICENSE.md and README.md --- LICENSE.md | 49 +++++------------------------- README.md | 88 +++++++++++++++++++++++++++++++++++++----------------- 2 files changed, 68 insertions(+), 69 deletions(-) diff --git a/LICENSE.md b/LICENSE.md index ca6544a..f4f98b0 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -5,12 +5,11 @@ There are several distinct and unique projects in this repository, each with its own licensing terms and conditions. If you wish to use one of these libraries, you must comply with its licensing terms. The maintainer of this repository makes no claims to authorship or ownership of any files in the directories `/cairo`, -`/pixman`, `/libpng16`, or `/zlib-1.2.8`, except as may be documented in the -appropriate location(s) within those directories. Mention of a directory shall -be deemed to include all subdirectories and their subdirectories, etc., within -the mentioned directory. Mention of files in a directory shall be deemed to -include all files located in that directory and in its subdirectories and their -subdirectories, etc. +`/pixman`, except as may be documented in the appropriate location(s) within +those directories. Mention of a directory shall be deemed to include all +subdirectories and their subdirectories, etc., within the mentioned directory. +Mention of files in a directory shall be deemed to include all files located in +that directory and in its subdirectories and their subdirectories, etc. cairo -------------- @@ -24,28 +23,8 @@ The contents of the `/pixman` directory are subject to the licensing terms descr in the `/pixman/COPYING` file. For more information about the pixman library, please see [pixman.org](http://www.pixman.org/) or [cgit.freedesktop.org/pixman/](http://cgit.freedesktop.org/pixman/). -libpng --------------- -The contents of the `/libpng16` directory are subject to the licensing terms -described in the `/libpng16/LICENSE` file. For more information about libpng, -please see [libpng.org](http://www.libpng.org/pub/png/libpng.html). - -zlib --------------- -The contents of the `/zlib-1.2.8` directory are subject to the licensing terms -described in the `/zlib-1.2.8/zlib.h` file. For more information about zlib, -please see [zlib.net](http://zlib.net/). - -win32 --------------- - -With the exception of the files contained in the directories -`/N3888_RefImpl/src/win32/DLLs`, `/N3888_RefImpl/src/win32/include`, and -`/N3888_RefImpl/src/win32/libs`, the following license applies to the files contained -in the `/N3888_RefImpl` directory. - -`The MIT License (MIT) +```The MIT License (MIT) Copyright (c) 2014 Michael B. McLaughlin @@ -66,21 +45,7 @@ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.` - The files in `/N3888_RefImpl/src/win32/include` are header files used to interface with the cairo graphics library. Their license is described above under the **cairo** section. - -The files in `/N3888_RefImpl/src/win32/libs` are .lib files used to dynamically -link with: - - * The cairo graphics library in accordance with the terms of the Mozilla - Public License version 1.1, a copy of which can be found at - `/cairo/COPYING-MPL-1.1`. - * The zlib general purpose compression library in accordance with the terms - of its license, which can be found at `/zlib-1.2.8/zlib.h`. - -The files in `/N3888_RefImpl/src/win32/DLLs` are executable code versions of -cairo and zlib in the form of DLL files. These files were built in accordance -with the instructions provided at `/N3888_RefImpl/src/win32/DLL build instructions.txt`. -Their licensing is as described above for the .lib files. +``` diff --git a/README.md b/README.md index 6fb3093..0f5c42e 100644 --- a/README.md +++ b/README.md @@ -1,51 +1,85 @@ -N4073 Reference Implementation +P0267R0: A Proposal to Add 2D Graphics Rendering and Display to C++. Reference Implementation ============= -Please read the [LICENSE](https://github.com/mikebmcl/N3888_RefImpl/blob/master/LICENSE.md) before cloning or forking the code as there is important information there! - -Please see the [wiki](https://github.com/mikebmcl/N3888_RefImpl/wiki) for links to forks which provide alternate implementations! +Please read the [LICENSE](https://github.com/cristianadam/io2d/blob/master/LICENSE.md) before +cloning or forking the code as there is important information there! Overview ------------- -This is a reference implementations of [N4073: A Proposal to Add 2D Rendering and Display to C++](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4073.pdf). +This is a reference implementation of [P0267R0: A Proposal to Add 2D Graphics Rendering and Display to C++.](http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0267r0.pdf). + +This is a fork of [https://github.com/mikebmcl/N3888_RefImpl/](https://github.com/mikebmcl/N3888_RefImpl/). +This fork adds CMake Build support and to the reference implementation. Requirements ------------- -For Windows platforms, it currently requires Visual Studio 2013 (the free Express for Windows Desktop version should suffice) and Windows Vista or newer. - -For GNU/Linux platforms, it currently requires a non-ancient version of GNU autotools, cairo (>= 1.12.16), GTK+3.0 (>= 3.8.0), gmodule-2.0, gobject-2.0, and related libraries (autotools will tell you about any missing dependencies). By default it builds using GCC (>= 4.9.0), but you can configure it to use recent versions of Clang. +[CMake build system](https://cmake.org/). A modern C++ compiler. Discussion ------------- -There are several places to discuss this proposal. You can discuss it on the [std-proposals forum](https://groups.google.com/a/isocpp.org/forum/?fromgroups#!forum/std-proposals), on the [SG 13 forum](https://groups.google.com/a/isocpp.org/forum/?fromgroups#!forum/io), or you can leave a comment on the [the blog post announcing the proposal](http://isocpp.org/blog/2014/07/n4073). Members of the cairo graphics library community are, of course, welcome to discuss the proposal in the cairo mailing list as well if they would prefer that. +There are several places to discuss this proposal. You can discuss it on the [std-proposals forum](https://groups.google.com/a/isocpp.org/forum/?fromgroups#!forum/std-proposals), +on the [SG 13 forum](https://groups.google.com/a/isocpp.org/forum/?fromgroups#!forum/sg13), or you can leave a comment on the +[the blog post announcing the proposal](http://isocpp.org/blog/2014/07/N4073). Members of the cairo graphics library community are, +of course, welcome to discuss the proposal in the cairo mailing list as well if they would prefer that. Feedback ------------- -If you have found a bug in the reference implementation or have a suggestion for improving N3888 please read the following. Note that any contributions must comply with the ISO patent and copyright policy, an overview of which is available in the ISO document [Participating in International Standardization](http://www.iso.org/iso/joining_in_2012.pdf). +If you have found a bug in the reference implementation or have a suggestion for improving P0267R0 please read the following. Note that any +contributions must comply with the ISO patent and copyright policy, an overview of which is available in the ISO +document [Participating in International Standardization](http://www.iso.org/iso/joining_in_2012.pdf). -* If you want to suggest a change to N4073 please file an [issue](https://github.com/mikebmcl/N3888_RefImpl/issues) with the tag [enhancement](https://github.com/mikebmcl/N3888_RefImpl/issues?labels=enhancement&page=1&state=open). We will consider these for future revisions of N4073. Pull requests for suggested changes will not be accepted because this is a reference implementation. +* If you want to suggest a change to P0267R0 please file an [issue](https://github.com/mikebmcl/N3888_RefImpl/issues) with the tag [enhancement](https://github.com/mikebmcl/N3888_RefImpl/issues?labels=enhancement&page=1&state=open). We will consider these for future revisions of P0267R0. Pull requests for suggested changes will not be accepted because this is a reference implementation. * If you have found a bug in the reference implementation, please file an issue with the tag [bug](https://github.com/mikebmcl/N3888_RefImpl/issues?labels=bug&page=1&state=open). Pull requests that fix bugs are welcome. -* If you have found any sort of error in N4073 (be it a typo, an omission, a contradiction, or some other non-subjective problem), please file an issue with the tag [proposal-bug](https://github.com/mikebmcl/N3888_RefImpl/issues?labels=proposal-bug&page=1&state=open). We will do our best to address these in the next revision of N4073. -* If you have created a reference implementation for another platform or tool-chain, please let us know. We welcome these types of pull requests provided that the implementation conforms to N4073 and the licensing terms are acceptable. +* If you have found any sort of error in P0267R0 (be it a typo, an omission, a contradiction, or some other non-subjective problem), please file an issue with the tag [proposal-bug](https://github.com/mikebmcl/N3888_RefImpl/issues?labels=proposal-bug&page=1&state=open). We will do our best to address these in the next revision of P0267R0. +* If you have created a reference implementation for another platform or tool-chain, please let us know. We welcome these types of pull requests provided that the implementation conforms to P0267R0 and the licensing terms are acceptable. -Subsequent revisions to N4073 will be maintained in branches or in separate repositories, depending on which strategy seems appropriate at that time. +Subsequent revisions to P0267R0 will be maintained in branches or in separate repositories, depending on which +strategy seems appropriate at that time. Licenses and Contributions (Important!) ------------- -Any code that you offer as a pull request must be your own work. If your employer or institution has a moonlighting policy, the act of offering a pull request shall be considered a declaration that you complied with the terms of that policy and are free to make the contribution or that your employer or institution has expressly waived any IP rights it or they might have had in your contribution thus freeing you to make the contribution. - -If your contribution makes use of third party libraries it must comply with the licensing terms of those libraries. If the library is licensed under multiple licenses you must indicate which license your contribution is using ("whichever" is not acceptable). The terms of those licenses must be compatible with the terms of the licenses of any existing code. Code licensed under any version of the GPL will not be considered. (Note: LGPL code will be considered, though licenses that give more freedom to other developers are preferred.) - -You must specify a license for your contribution. If it is an original work, we suggest, but do not require, that you choose the MIT License. If the chosen license is unacceptable for some reason, you will be informed that the license is not acceptable. - -If your code is a derivative work of the reference implementation it must be licensed under the terms of the MIT License unless you obtain an express, written waiver from the original author of the reference implementation, Michael B. McLaughlin. (Literally written, as in fixed on paper, signed, and physically mailed to you). - -**If you fail to comply with the terms of any employer or institutional policies, the terms of any licenses, or if you infringe upon any patents, violate any trade secrets, violate any laws or regulations, or, by any act or omission, cause any legal action to be brought against the authors of N4073, the ISO C++ committee (ISO/IEC JTC1/SC22/WG21) or any of its members individually, or any participants in SG13 of the ISO C++ committee, you agree to pay all legal expenses of said persons and entities and indemnify every one of them in full in the event that any legally binding judgment is rendered against them.** - -Intellectual property rights are important. You may not agree with every IP law and regulation out there (I certainly have some suggestions for reforming them), but we cannot ignore them and hope nobody notices. Many of us do things like develop software, do technical writing, or work for companies where that is a big part of what pays the bills. In other words, our livelihoods depend on copyrights and licenses and the such. So I apologize for all the scary language above. But until I go a decade without seeing statements like "I haven't decided on a license yet but here's some code I wrote", I'll continue to write scary statements in hopes of scaring people into taking copyrights and licenses more seriously. And because I really do mean them. I don't want to be facing $50,000+ in lawyers bills plus some large monetary judgment because someone passed off somebody else's code as their own or didn't follow their employer's policies or whatever. I don't know anyone else who'd want to be facing that either. - -I encourage anyone with intellectual property disputes to try to work them out reasonably first, provided that doing so would not prejudice any of your rights in the event that a reasonable agreement cannot be reached. If you have any legal questions you should contact a knowledgeable attorney. +Any code that you offer as a pull request must be your own work. If your employer or institution has a moonlighting policy, +the act of offering a pull request shall be considered a declaration that you complied with the terms of that policy +and are free to make the contribution or that your employer or institution has expressly waived any IP rights +it or they might have had in your contribution thus freeing you to make the contribution. + +If your contribution makes use of third party libraries it must comply with the licensing terms of those +libraries. If the library is licensed under multiple licenses you must indicate which license your +contribution is using ("whichever" is not acceptable). The terms of those licenses must be compatible +with the terms of the licenses of any existing code. Code licensed under any version of the GPL will +not be considered. (Note: LGPL code will be considered, though licenses that give more freedom to other +developers are preferred.) + +You must specify a license for your contribution. If it is an original work, we suggest, but do not require, +that you choose the MIT License. If the chosen license is unacceptable for some reason, you will be informed +that the license is not acceptable. + +If your code is a derivative work of the reference implementation it must be licensed under the terms of the +MIT License unless you obtain an express, written waiver from the original author of the reference implementation, +Michael B. McLaughlin. (Literally written, as in fixed on paper, signed, and physically mailed to you). + +**If you fail to comply with the terms of any employer or institutional policies, the terms of any licenses, +or if you infringe upon any patents, violate any trade secrets, violate any laws or regulations, or, by +any act or omission, cause any legal action to be brought against the authors of P0267R0, the ISO C++ committee +(ISO/IEC JTC1/SC22/WG21) or any of its members individually, or any participants in SG13 of the ISO C++ +committee, you agree to pay all legal expenses of said persons and entities and indemnify every one of +them in full in the event that any legally binding judgment is rendered against them.** + +Intellectual property rights are important. You may not agree with every IP law and regulation out there +(I certainly have some suggestions for reforming them), but we cannot ignore them and hope nobody notices. +Many of us do things like develop software, do technical writing, or work for companies where that is a +big part of what pays the bills. In other words, our livelihoods depend on copyrights and licenses and +the such. So I apologize for all the scary language above. But until I go a decade without seeing +statements like "I haven't decided on a license yet but here's some code I wrote", I'll continue to +write scary statements in hopes of scaring people into taking copyrights and licenses more seriously. +And because I really do mean them. I don't want to be facing $50,000+ in lawyers bills plus some +large monetary judgment because someone passed off somebody else's code as their own or didn't follow +their employer's policies or whatever. I don't know anyone else who'd want to be facing that either. + +I encourage anyone with intellectual property disputes to try to work them out reasonably first, +provided that doing so would not prejudice any of your rights in the event that a reasonable +agreement cannot be reached. If you have any legal questions you should contact a knowledgeable attorney. From 40e94142a1d3fb2242ce4fe0a2d8ab10d1ddd8ee Mon Sep 17 00:00:00 2001 From: cristianadam Date: Sun, 28 Feb 2016 18:30:08 +0100 Subject: [PATCH 17/30] Update LICENSE.md --- LICENSE.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/LICENSE.md b/LICENSE.md index f4f98b0..50899b3 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -24,7 +24,8 @@ in the `/pixman/COPYING` file. For more information about the pixman library, please see [pixman.org](http://www.pixman.org/) or [cgit.freedesktop.org/pixman/](http://cgit.freedesktop.org/pixman/). -```The MIT License (MIT) +``` +The MIT License (MIT) Copyright (c) 2014 Michael B. McLaughlin From 6c3c0f5c6cc8be56e5a3cb9f1af42cd9dee1860b Mon Sep 17 00:00:00 2001 From: "Michael B. McLaughlin" Date: Sun, 28 Feb 2016 22:06:55 -0500 Subject: [PATCH 18/30] Fixes to the surface class's rendering and composing operations member functions to improve usability (removed origin argument, added default identity matrix value for matrix_2d arguments and made it so that the Mask Brush behaves similar to the source brush). --- io2d/include/io2d.h | 110 +++++-------- io2d/src/surface.cpp | 246 +++++++++++------------------- tests/sample-draw/sample_draw.cpp | 19 +-- 3 files changed, 130 insertions(+), 245 deletions(-) diff --git a/io2d/include/io2d.h b/io2d/include/io2d.h index 2beefc0..fa67b57 100644 --- a/io2d/include/io2d.h +++ b/io2d/include/io2d.h @@ -1935,60 +1935,48 @@ namespace std { void fill(const rgba_color& c, ::std::error_code& ec) noexcept; void fill(const ::std::experimental::io2d::brush& b); void fill(const ::std::experimental::io2d::brush& b, ::std::error_code& ec) noexcept; - void fill(const surface& s, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good); - void fill(const surface& s, ::std::error_code& ec, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good) noexcept; - void fill(const surface& s, const matrix_2d& m, extend e = extend::none, filter f = filter::good); - void fill(const surface& s, const matrix_2d& m, ::std::error_code& ec, extend e = extend::none, filter f = filter::good) noexcept; + void fill(const surface& s, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good); + void fill(const surface& s, ::std::error_code& ec, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good) noexcept; void fill_immediate(); void fill_immediate(::std::error_code& ec) noexcept; void fill_immediate(const rgba_color& c); void fill_immediate(const rgba_color& c, ::std::error_code& ec) noexcept; void fill_immediate(const ::std::experimental::io2d::brush& b); void fill_immediate(const ::std::experimental::io2d::brush& b, ::std::error_code& ec) noexcept; - void fill_immediate(const surface& s, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good); - void fill_immediate(const surface& s, ::std::error_code& ec, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good) noexcept; - void fill_immediate(const surface& s, const matrix_2d& m, extend e = extend::none, filter f = filter::good); - void fill_immediate(const surface& s, const matrix_2d& m, ::std::error_code& ec, extend e = extend::none, filter f = filter::good) noexcept; + void fill_immediate(const surface& s, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good); + void fill_immediate(const surface& s, ::std::error_code& ec, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good) noexcept; void paint(); void paint(::std::error_code& ec) noexcept; void paint(const rgba_color& c); void paint(const rgba_color& c, ::std::error_code& ec) noexcept; void paint(const ::std::experimental::io2d::brush& b); void paint(const ::std::experimental::io2d::brush& b, ::std::error_code& ec) noexcept; - void paint(const surface& s, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good); - void paint(const surface& s, ::std::error_code& ec, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good) noexcept; - void paint(const surface& s, const matrix_2d& m, extend e = extend::none, filter f = filter::good); - void paint(const surface& s, const matrix_2d& m, ::std::error_code& ec, extend e = extend::none, filter f = filter::good) noexcept; + void paint(const surface& s, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good); + void paint(const surface& s, ::std::error_code& ec, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good) noexcept; void paint(double alpha); void paint(double alpha, ::std::error_code& ec) noexcept; void paint(const rgba_color& c, double alpha); void paint(const rgba_color& c, double alpha, ::std::error_code& ec) noexcept; void paint(const ::std::experimental::io2d::brush& b, double alpha); void paint(const ::std::experimental::io2d::brush& b, double alpha, ::std::error_code& ec) noexcept; - void paint(const surface& s, double alpha, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good); - void paint(const surface& s, double alpha, ::std::error_code& ec, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good) noexcept; - void paint(const surface& s, double alpha, const matrix_2d& m, extend e = extend::none, filter f = filter::good); - void paint(const surface& s, double alpha, const matrix_2d& m, ::std::error_code& ec, extend e = extend::none, filter f = filter::good) noexcept; + void paint(const surface& s, double alpha, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good); + void paint(const surface& s, double alpha, ::std::error_code& ec, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good) noexcept; void stroke(); void stroke(::std::error_code& ec) noexcept; void stroke(const rgba_color& c); void stroke(const rgba_color& c, ::std::error_code& ec) noexcept; void stroke(const ::std::experimental::io2d::brush& b); void stroke(const ::std::experimental::io2d::brush& b, ::std::error_code& ec) noexcept; - void stroke(const surface& s, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good); - void stroke(const surface& s, ::std::error_code& ec, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good) noexcept; - void stroke(const surface& s, const matrix_2d& m, extend e = extend::none, filter f = filter::good); - void stroke(const surface& s, const matrix_2d& m, ::std::error_code& ec, extend e = extend::none, filter f = filter::good) noexcept; + void stroke(const surface& s, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good); + void stroke(const surface& s, ::std::error_code& ec, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good) noexcept; void stroke_immediate(); void stroke_immediate(::std::error_code& ec) noexcept; void stroke_immediate(const rgba_color& c); void stroke_immediate(const rgba_color& c, ::std::error_code& ec) noexcept; void stroke_immediate(const ::std::experimental::io2d::brush& b); void stroke_immediate(const ::std::experimental::io2d::brush& b, ::std::error_code& ec) noexcept; - void stroke_immediate(const surface& s, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good); - void stroke_immediate(const surface& s, ::std::error_code& ec, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good) noexcept; - void stroke_immediate(const surface& s, const matrix_2d& m, extend e = extend::none, filter f = filter::good); - void stroke_immediate(const surface& s, const matrix_2d& m, ::std::error_code& ec, extend e = extend::none, filter f = filter::good) noexcept; + void stroke_immediate(const surface& s, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good); + void stroke_immediate(const surface& s, ::std::error_code& ec, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good) noexcept; // \ref{\iotwod.surface.modifiers.maskrender}, mask render modifiers: void mask(const ::std::experimental::io2d::brush& maskBrush); @@ -1997,60 +1985,32 @@ namespace std { void mask(const ::std::experimental::io2d::brush& maskBrush, const rgba_color& c, ::std::error_code& ec) noexcept; void mask(const ::std::experimental::io2d::brush& maskBrush, const ::std::experimental::io2d::brush& b); void mask(const ::std::experimental::io2d::brush& maskBrush, const ::std::experimental::io2d::brush& b, ::std::error_code& ec) noexcept; - void mask(const ::std::experimental::io2d::brush& maskBrush, const surface& s, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good); - void mask(const ::std::experimental::io2d::brush& maskBrush, const surface& s, ::std::error_code& ec, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good) noexcept; - void mask(const ::std::experimental::io2d::brush& maskBrush, const surface& s, const matrix_2d& m, extend e = extend::none, filter f = filter::good); - void mask(const ::std::experimental::io2d::brush& maskBrush, const surface& s, const matrix_2d& m, ::std::error_code& ec, extend e = extend::none, filter f = filter::good) noexcept; - void mask(const surface& maskSurface); - void mask(const surface& maskSurface, ::std::error_code& ec) noexcept; - void mask(const surface& maskSurface, const rgba_color& c); - void mask(const surface& maskSurface, const rgba_color& c, ::std::error_code& ec) noexcept; - void mask(const surface& maskSurface, const ::std::experimental::io2d::brush& b); - void mask(const surface& maskSurface, const ::std::experimental::io2d::brush& b, ::std::error_code& ec) noexcept; - void mask(const surface& maskSurface, const surface& s, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good); - void mask(const surface& maskSurface, const surface& s, ::std::error_code& ec, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good) noexcept; - void mask(const surface& maskSurface, const surface& s, const matrix_2d& m, extend e = extend::none, filter f = filter::good); - void mask(const surface& maskSurface, const surface& s, const matrix_2d& m, ::std::error_code& ec, extend e = extend::none, filter f = filter::good) noexcept; - void mask(const surface& maskSurface, const vector_2d& maskOrigin); - void mask(const surface& maskSurface, const vector_2d& maskOrigin, ::std::error_code& ec) noexcept; - void mask(const surface& maskSurface, const vector_2d& maskOrigin, const rgba_color& c); - void mask(const surface& maskSurface, const vector_2d& maskOrigin, const rgba_color& c, ::std::error_code& ec) noexcept; - void mask(const surface& maskSurface, const vector_2d& maskOrigin, const ::std::experimental::io2d::brush& b); - void mask(const surface& maskSurface, const vector_2d& maskOrigin, const ::std::experimental::io2d::brush& b, ::std::error_code& ec) noexcept; - void mask(const surface& maskSurface, const vector_2d& maskOrigin, const surface& s, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good); - void mask(const surface& maskSurface, const vector_2d& maskOrigin, const surface& s, ::std::error_code& ec, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good) noexcept; - void mask(const surface& maskSurface, const vector_2d& maskOrigin, const surface& s, const matrix_2d& m, extend e = extend::none, filter f = filter::good); - void mask(const surface& maskSurface, const vector_2d& maskOrigin, const surface& s, const matrix_2d& m, ::std::error_code& ec, extend e = extend::none, filter f = filter::good) noexcept; + void mask(const ::std::experimental::io2d::brush& maskBrush, const surface& s, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good); + void mask(const ::std::experimental::io2d::brush& maskBrush, const surface& s, ::std::error_code& ec, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good) noexcept; + void mask(surface& maskSurface, const matrix_2d& maskMatrix = matrix_2d::init_identity(), extend maskExtend = extend::none, filter maskFilter = filter::good); + void mask(surface& maskSurface, ::std::error_code& ec, const matrix_2d& maskMatrix = matrix_2d::init_identity(), extend maskExtend = extend::none, filter maskFilter = filter::good) noexcept; + void mask(surface& maskSurface, const rgba_color& c, const matrix_2d& maskMatrix = matrix_2d::init_identity(), extend maskExtend = extend::none, filter maskFilter = filter::good); + void mask(surface& maskSurface, const rgba_color& c, ::std::error_code& ec, const matrix_2d& maskMatrix = matrix_2d::init_identity(), extend maskExtend = extend::none, filter maskFilter = filter::good) noexcept; + void mask(surface& maskSurface, const ::std::experimental::io2d::brush& b, const matrix_2d& maskMatrix = matrix_2d::init_identity(), extend maskExtend = extend::none, filter maskFilter = filter::good); + void mask(surface& maskSurface, const ::std::experimental::io2d::brush& b, ::std::error_code& ec, const matrix_2d& maskMatrix = matrix_2d::init_identity(), extend maskExtend = extend::none, filter maskFilter = filter::good) noexcept; + void mask(surface& maskSurface, const surface& s, const matrix_2d& maskMatrix = matrix_2d::init_identity(), const matrix_2d& m = matrix_2d::init_identity(), extend maskExtend = extend::none, extend e = extend::none, filter maskFilter = filter::good, filter f = filter::good); + void mask(surface& maskSurface, const surface& s, ::std::error_code& ec, const matrix_2d& maskMatrix = matrix_2d::init_identity(), const matrix_2d& m = matrix_2d::init_identity(), extend maskExtend = extend::none, extend e = extend::none, filter maskFilter = filter::good, filter f = filter::good) noexcept; void mask_immediate(const ::std::experimental::io2d::brush& maskBrush); void mask_immediate(const ::std::experimental::io2d::brush& maskBrush, ::std::error_code& ec) noexcept; void mask_immediate(const ::std::experimental::io2d::brush& maskBrush, const rgba_color& c); void mask_immediate(const ::std::experimental::io2d::brush& maskBrush, const rgba_color& c, ::std::error_code& ec) noexcept; void mask_immediate(const ::std::experimental::io2d::brush& maskBrush, const ::std::experimental::io2d::brush& b); void mask_immediate(const ::std::experimental::io2d::brush& maskBrush, const ::std::experimental::io2d::brush& b, ::std::error_code& ec) noexcept; - void mask_immediate(const ::std::experimental::io2d::brush& maskBrush, const surface& s, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good); - void mask_immediate(const ::std::experimental::io2d::brush& maskBrush, const surface& s, ::std::error_code& ec, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good) noexcept; - void mask_immediate(const ::std::experimental::io2d::brush& maskBrush, const surface& s, const matrix_2d& m, extend e = extend::none, filter f = filter::good); - void mask_immediate(const ::std::experimental::io2d::brush& maskBrush, const surface& s, const matrix_2d& m, ::std::error_code& ec, extend e = extend::none, filter f = filter::good) noexcept; - void mask_immediate(const surface& maskSurface); - void mask_immediate(const surface& maskSurface, ::std::error_code& ec) noexcept; - void mask_immediate(const surface& maskSurface, const rgba_color& c); - void mask_immediate(const surface& maskSurface, const rgba_color& c, ::std::error_code& ec) noexcept; - void mask_immediate(const surface& maskSurface, const ::std::experimental::io2d::brush& b); - void mask_immediate(const surface& maskSurface, const ::std::experimental::io2d::brush& b, ::std::error_code& ec) noexcept; - void mask_immediate(const surface& maskSurface, const surface& s, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good); - void mask_immediate(const surface& maskSurface, const surface& s, ::std::error_code& ec, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good) noexcept; - void mask_immediate(const surface& maskSurface, const surface& s, const matrix_2d& m, extend e = extend::none, filter f = filter::good); - void mask_immediate(const surface& maskSurface, const surface& s, const matrix_2d& m, ::std::error_code& ec, extend e = extend::none, filter f = filter::good) noexcept; - void mask_immediate(const surface& maskSurface, const vector_2d& maskOrigin); - void mask_immediate(const surface& maskSurface, const vector_2d& maskOrigin, ::std::error_code& ec) noexcept; - void mask_immediate(const surface& maskSurface, const vector_2d& maskOrigin, const rgba_color& c); - void mask_immediate(const surface& maskSurface, const vector_2d& maskOrigin, const rgba_color& c, ::std::error_code& ec) noexcept; - void mask_immediate(const surface& maskSurface, const vector_2d& maskOrigin, const ::std::experimental::io2d::brush& b); - void mask_immediate(const surface& maskSurface, const vector_2d& maskOrigin, const ::std::experimental::io2d::brush& b, ::std::error_code& ec) noexcept; - void mask_immediate(const surface& maskSurface, const vector_2d& maskOrigin, const surface& s, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good); - void mask_immediate(const surface& maskSurface, const vector_2d& maskOrigin, const surface& s, ::std::error_code& ec, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good) noexcept; - void mask_immediate(const surface& maskSurface, const vector_2d& maskOrigin, const surface& s, const matrix_2d& m, extend e = extend::none, filter f = filter::good); - void mask_immediate(const surface& maskSurface, const vector_2d& maskOrigin, const surface& s, const matrix_2d& m, ::std::error_code& ec, extend e = extend::none, filter f = filter::good) noexcept; + void mask_immediate(const ::std::experimental::io2d::brush& maskBrush, const surface& s, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good); + void mask_immediate(const ::std::experimental::io2d::brush& maskBrush, const surface& s, ::std::error_code& ec, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good) noexcept; + void mask_immediate(surface& maskSurface, const matrix_2d& maskMatrix = matrix_2d::init_identity(), extend maskExtend = extend::none, filter maskFilter = filter::good); + void mask_immediate(surface& maskSurface, ::std::error_code& ec, const matrix_2d& maskMatrix = matrix_2d::init_identity(), extend maskExtend = extend::none, filter maskFilter = filter::good) noexcept; + void mask_immediate(surface& maskSurface, const rgba_color& c, const matrix_2d& maskMatrix = matrix_2d::init_identity(), extend maskExtend = extend::none, filter maskFilter = filter::good); + void mask_immediate(surface& maskSurface, const rgba_color& c, ::std::error_code& ec, const matrix_2d& maskMatrix = matrix_2d::init_identity(), extend maskExtend = extend::none, filter maskFilter = filter::good) noexcept; + void mask_immediate(surface& maskSurface, const ::std::experimental::io2d::brush& b, const matrix_2d& maskMatrix = matrix_2d::init_identity(), extend maskExtend = extend::none, filter maskFilter = filter::good); + void mask_immediate(surface& maskSurface, const ::std::experimental::io2d::brush& b, ::std::error_code& ec, const matrix_2d& maskMatrix = matrix_2d::init_identity(), extend maskExtend = extend::none, filter maskFilter = filter::good) noexcept; + void mask_immediate(surface& maskSurface, const surface& s, const matrix_2d& maskMatrix = matrix_2d::init_identity(), const matrix_2d& m = matrix_2d::init_identity(), extend maskExtend = extend::none, extend e = extend::none, filter maskFilter = filter::good, filter f = filter::good); + void mask_immediate(surface& maskSurface, const surface& s, ::std::error_code& ec, const matrix_2d& maskMatrix = matrix_2d::init_identity(), const matrix_2d& m = matrix_2d::init_identity(), extend maskExtend = extend::none, extend e = extend::none, filter maskFilter = filter::good, filter f = filter::good) noexcept; // \ref{\iotwod.surface.modifiers.textrender}, text render modifiers: vector_2d render_text(const ::std::string& utf8, const vector_2d& position); @@ -2059,10 +2019,8 @@ namespace std { vector_2d render_text(const ::std::string& utf8, const vector_2d& position, const rgba_color& c, ::std::error_code& ec) noexcept; vector_2d render_text(const ::std::string& utf8, const vector_2d& position, const ::std::experimental::io2d::brush& b); vector_2d render_text(const ::std::string& utf8, const vector_2d& position, const ::std::experimental::io2d::brush& b, ::std::error_code& ec) noexcept; - vector_2d render_text(const ::std::string& utf8, const vector_2d& position, const surface& s, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good); - vector_2d render_text(const ::std::string& utf8, const vector_2d& position, const surface& s, ::std::error_code& ec, const vector_2d& origin = vector_2d{ 0.0, 0.0 }, extend e = extend::none, filter f = filter::good) noexcept; - vector_2d render_text(const ::std::string& utf8, const vector_2d& position, const surface& s, const matrix_2d& m, extend e = extend::none, filter f = filter::good); - vector_2d render_text(const ::std::string& utf8, const vector_2d& position, const surface& s, const matrix_2d& m, ::std::error_code& ec, extend e = extend::none, filter f = filter::good) noexcept; + vector_2d render_text(const ::std::string& utf8, const vector_2d& position, const surface& s, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good); + vector_2d render_text(const ::std::string& utf8, const vector_2d& position, const surface& s, ::std::error_code& ec, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good) noexcept; // \ref{\iotwod.surface.modifiers.transform}, transformation modifiers: void matrix(const matrix_2d& matrix); diff --git a/io2d/src/surface.cpp b/io2d/src/surface.cpp index 4a4173b..fb0cd68 100644 --- a/io2d/src/surface.cpp +++ b/io2d/src/surface.cpp @@ -668,10 +668,6 @@ void surface::paint(const ::std::experimental::io2d::brush& b) { paint(); } -void surface::paint(const surface& s, const vector_2d& origin, extend e, filter f) { - paint(s, matrix_2d{ 1.0, 0.0, 0.0, 1.0, origin.x(), origin.y() }, e, f); -} - void surface::paint(const surface& s, const matrix_2d& m, extend e, filter f) { cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); auto pat = cairo_get_source(_Context.get()); @@ -704,10 +700,6 @@ void surface::paint(const ::std::experimental::io2d::brush& b, double alpha) { paint(alpha); } -void surface::paint(const surface& s, double alpha, const vector_2d& origin, extend e, filter f) { - paint(s, alpha, matrix_2d{ 1.0, 0.0, 0.0, 1.0, origin.x(), origin.y() }, e, f); -} - void surface::paint(const surface& s, double alpha, const matrix_2d& m, extend e, filter f) { cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); auto pat = cairo_get_source(_Context.get()); @@ -740,10 +732,6 @@ void surface::fill(const ::std::experimental::io2d::brush& b) { fill(); } -void surface::fill(const surface& s, const vector_2d& origin, extend e, filter f) { - fill(s, matrix_2d{ 1.0, 0.0, 0.0, 1.0, origin.x(), origin.y() }, e, f); -} - void surface::fill(const surface& s, const matrix_2d& m, extend e, filter f) { cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); auto pat = cairo_get_source(_Context.get()); @@ -779,10 +767,6 @@ void surface::fill_immediate(const ::std::experimental::io2d::brush& b) { fill_immediate(); } -void surface::fill_immediate(const surface& s, const vector_2d& origin, extend e, filter f) { - fill_immediate(s, matrix_2d{ 1.0, 0.0, 0.0, 1.0, origin.x(), origin.y() }, e, f); -} - void surface::fill_immediate(const surface& s, const matrix_2d& m, extend e, filter f) { auto currPath = _Current_path; path(experimental::io2d::path(_Immediate_path)); @@ -818,10 +802,6 @@ void surface::stroke(const ::std::experimental::io2d::brush& b) { stroke(); } -void surface::stroke(const surface& s, const vector_2d& origin, extend e, filter f) { - stroke(s, matrix_2d{ 1.0, 0.0, 0.0, 1.0, origin.x(), origin.y() }, e, f); -} - void surface::stroke(const surface& s, const matrix_2d& m, extend e, filter f) { cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); auto pat = cairo_get_source(_Context.get()); @@ -857,10 +837,6 @@ void surface::stroke_immediate(const ::std::experimental::io2d::brush& b) { stroke_immediate(); } -void surface::stroke_immediate(const surface& s, const vector_2d& origin, extend e, filter f) { - stroke_immediate(s, matrix_2d{ 1.0, 0.0, 0.0, 1.0, origin.x(), origin.y() }, e, f); -} - void surface::stroke_immediate(const surface& s, const matrix_2d& m, extend e, filter f) { auto currPath = _Current_path; path(experimental::io2d::path(_Immediate_path)); @@ -896,10 +872,6 @@ void surface::mask(const ::std::experimental::io2d::brush& maskBrush, const ::st mask(maskBrush); } -void surface::mask(const ::std::experimental::io2d::brush& maskBrush, const surface& s, const vector_2d& origin, extend e, filter f) { - mask(maskBrush, s, matrix_2d{ 1.0, 0.0, 0.0, 1.0, origin.x(), origin.y() }, e, f); -} - void surface::mask(const ::std::experimental::io2d::brush& maskBrush, const surface& s, const matrix_2d& m, extend e, filter f) { cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); auto pat = cairo_get_source(_Context.get()); @@ -911,76 +883,60 @@ void surface::mask(const ::std::experimental::io2d::brush& maskBrush, const surf cairo_set_source_rgba(_Context.get(), 0.0, 0.0, 0.0, 0.0); } -void surface::mask(const surface& maskSurface) { +void surface::mask(surface& maskSurface, const matrix_2d& maskMatrix, extend maskExtend, filter maskFilter) { cairo_pattern_set_extend(_Brush.native_handle(), _Extend_to_cairo_extend_t(_Brush.extend())); cairo_pattern_set_filter(_Brush.native_handle(), _Filter_to_cairo_filter_t(_Brush.filter())); cairo_matrix_t cPttnMatrix; cairo_matrix_init(&cPttnMatrix, _Brush.matrix().m00(), _Brush.matrix().m01(), _Brush.matrix().m10(), _Brush.matrix().m11(), _Brush.matrix().m20(), _Brush.matrix().m21()); cairo_pattern_set_matrix(_Brush.native_handle(), &cPttnMatrix); cairo_set_source(_Context.get(), _Brush.native_handle()); - cairo_mask_surface(_Context.get(), maskSurface.native_handle().csfce, 0.0, 0.0); -} -void surface::mask(const surface& maskSurface, const rgba_color& c) { - solid_color_brush_factory factory(c); - brush(experimental::io2d::brush(factory)); - mask(maskSurface); -} - -void surface::mask(const surface& maskSurface, const ::std::experimental::io2d::brush& b) { - brush(b); - mask(maskSurface); -} + surface_brush_factory sbf(maskSurface); + experimental::io2d::brush maskBrush(sbf); + maskBrush.matrix(maskMatrix); + maskBrush.extend(maskExtend); + maskBrush.filter(maskFilter); -void surface::mask(const surface& maskSurface, const surface& s, const vector_2d& origin, extend e, filter f) { - mask(maskSurface, s, matrix_2d{ 1.0, 0.0, 0.0, 1.0, origin.x(), origin.y() }, e, f); + mask(maskBrush); } -void surface::mask(const surface& maskSurface, const surface& s, const matrix_2d& m, extend e, filter f) { - cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); - auto pat = cairo_get_source(_Context.get()); - cairo_pattern_set_extend(pat, _Extend_to_cairo_extend_t(e)); - cairo_pattern_set_filter(pat, _Filter_to_cairo_filter_t(f)); - cairo_matrix_t cmat{ m.m00(), m.m01(), m.m10(), m.m11(), m.m20(), m.m21() }; - cairo_pattern_set_matrix(pat, &cmat); - cairo_mask_surface(_Context.get(), maskSurface.native_handle().csfce, 0.0, 0.0); - cairo_set_source_rgba(_Context.get(), 0.0, 0.0, 0.0, 0.0); -} +void surface::mask(surface& maskSurface, const rgba_color& c, const matrix_2d& maskMatrix, extend maskExtend, filter maskFilter) { + surface_brush_factory sbf(maskSurface); + experimental::io2d::brush maskBrush(sbf); + maskBrush.matrix(maskMatrix); + maskBrush.extend(maskExtend); + maskBrush.filter(maskFilter); -void surface::mask(const surface& maskSurface, const vector_2d& maskOrigin) { - cairo_pattern_set_extend(_Brush.native_handle(), _Extend_to_cairo_extend_t(_Brush.extend())); - cairo_pattern_set_filter(_Brush.native_handle(), _Filter_to_cairo_filter_t(_Brush.filter())); - cairo_matrix_t cPttnMatrix; - cairo_matrix_init(&cPttnMatrix, _Brush.matrix().m00(), _Brush.matrix().m01(), _Brush.matrix().m10(), _Brush.matrix().m11(), _Brush.matrix().m20(), _Brush.matrix().m21()); - cairo_pattern_set_matrix(_Brush.native_handle(), &cPttnMatrix); - cairo_set_source(_Context.get(), _Brush.native_handle()); - cairo_mask_surface(_Context.get(), maskSurface.native_handle().csfce, maskOrigin.x(), maskOrigin.y()); + mask(maskBrush); + mask(maskBrush, c); } -void surface::mask(const surface& maskSurface, const vector_2d& maskOrigin, const rgba_color& c) { - solid_color_brush_factory factory(c); - brush(experimental::io2d::brush(factory)); - mask(maskSurface, maskOrigin); -} +void surface::mask(surface& maskSurface, const ::std::experimental::io2d::brush& b, const matrix_2d& maskMatrix, extend maskExtend, filter maskFilter) { + surface_brush_factory sbf(maskSurface); + experimental::io2d::brush maskBrush(sbf); + maskBrush.matrix(maskMatrix); + maskBrush.extend(maskExtend); + maskBrush.filter(maskFilter); -void surface::mask(const surface& maskSurface, const vector_2d& maskOrigin, const ::std::experimental::io2d::brush& b) { - brush(b); - mask(maskSurface, maskOrigin); + mask(maskBrush, b); } -void surface::mask(const surface& maskSurface, const vector_2d& maskOrigin, const surface& s, const vector_2d& origin, extend e, filter f) { - mask(maskSurface, maskOrigin, s, matrix_2d{ 1.0, 0.0, 0.0, 1.0, origin.x(), origin.y() }, e, f); -} +void surface::mask(surface& maskSurface, const surface& s, const matrix_2d& maskMatrix, const matrix_2d& m, extend maskExtend, extend e, filter maskFilter, filter f) { + //cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); + //auto pat = cairo_get_source(_Context.get()); + //cairo_pattern_set_extend(pat, _Extend_to_cairo_extend_t(e)); + //cairo_pattern_set_filter(pat, _Filter_to_cairo_filter_t(f)); + //cairo_matrix_t cmat{ m.m00(), m.m01(), m.m10(), m.m11(), m.m20(), m.m21() }; + //cairo_pattern_set_matrix(pat, &cmat); + //cairo_mask_surface(_Context.get(), maskSurface.native_handle().csfce, 0.0, 0.0); + //cairo_set_source_rgba(_Context.get(), 0.0, 0.0, 0.0, 0.0); + surface_brush_factory sbf(maskSurface); + experimental::io2d::brush maskBrush(sbf); + maskBrush.matrix(maskMatrix); + maskBrush.extend(maskExtend); + maskBrush.filter(maskFilter); -void surface::mask(const surface& maskSurface, const vector_2d& maskOrigin, const surface& s, const matrix_2d& m, extend e, filter f) { - cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); - auto pat = cairo_get_source(_Context.get()); - cairo_pattern_set_extend(pat, _Extend_to_cairo_extend_t(e)); - cairo_pattern_set_filter(pat, _Filter_to_cairo_filter_t(f)); - cairo_matrix_t cmat{ m.m00(), m.m01(), m.m10(), m.m11(), m.m20(), m.m21() }; - cairo_pattern_set_matrix(pat, &cmat); - cairo_mask_surface(_Context.get(), maskSurface.native_handle().csfce, maskOrigin.x(), maskOrigin.y()); - cairo_set_source_rgba(_Context.get(), 0.0, 0.0, 0.0, 0.0); + mask(maskBrush, s, m, e, f); } void surface::mask_immediate(const ::std::experimental::io2d::brush& maskBrush) { @@ -1013,10 +969,6 @@ void surface::mask_immediate(const ::std::experimental::io2d::brush& maskBrush, mask_immediate(maskBrush); } -void surface::mask_immediate(const ::std::experimental::io2d::brush& maskBrush, const surface& s, const vector_2d& origin, extend e, filter f) { - mask_immediate(maskBrush, s, matrix_2d{ 1.0, 0.0, 0.0, 1.0, origin.x(), origin.y() }, e, f); -} - void surface::mask_immediate(const ::std::experimental::io2d::brush& maskBrush, const surface& s, const matrix_2d& m, extend e, filter f) { auto currPath = _Current_path; path(experimental::io2d::path(_Immediate_path)); @@ -1037,86 +989,64 @@ void surface::mask_immediate(const ::std::experimental::io2d::brush& maskBrush, path(currPath); } -void surface::mask_immediate(const surface& maskSurface) { - auto currPath = _Current_path; - path(experimental::io2d::path(_Immediate_path)); - cairo_pattern_set_extend(_Brush.native_handle(), _Extend_to_cairo_extend_t(_Brush.extend())); - cairo_pattern_set_filter(_Brush.native_handle(), _Filter_to_cairo_filter_t(_Brush.filter())); - cairo_matrix_t cPttnMatrix; - cairo_matrix_init(&cPttnMatrix, _Brush.matrix().m00(), _Brush.matrix().m01(), _Brush.matrix().m10(), _Brush.matrix().m11(), _Brush.matrix().m20(), _Brush.matrix().m21()); - cairo_pattern_set_matrix(_Brush.native_handle(), &cPttnMatrix); - cairo_set_source(_Context.get(), _Brush.native_handle()); - cairo_mask_surface(_Context.get(), maskSurface.native_handle().csfce, 0.0, 0.0); - path(currPath); -} - -void surface::mask_immediate(const surface& maskSurface, const rgba_color& c) { - solid_color_brush_factory factory(c); - brush(experimental::io2d::brush(factory)); - mask_immediate(maskSurface); -} - -void surface::mask_immediate(const surface& maskSurface, const ::std::experimental::io2d::brush& b) { - brush(b); - mask_immediate(maskSurface); -} - -void surface::mask_immediate(const surface& maskSurface, const surface& s, const vector_2d& origin, extend e, filter f) { - mask_immediate(maskSurface, s, matrix_2d{ 1.0, 0.0, 0.0, 1.0, origin.x(), origin.y() }, e, f); -} +void surface::mask_immediate(surface& maskSurface, const matrix_2d& maskMatrix, extend maskExtend, filter maskFilter) { + //auto currPath = _Current_path; + //path(experimental::io2d::path(_Immediate_path)); + //cairo_pattern_set_extend(_Brush.native_handle(), _Extend_to_cairo_extend_t(_Brush.extend())); + //cairo_pattern_set_filter(_Brush.native_handle(), _Filter_to_cairo_filter_t(_Brush.filter())); + //cairo_matrix_t cPttnMatrix; + //cairo_matrix_init(&cPttnMatrix, _Brush.matrix().m00(), _Brush.matrix().m01(), _Brush.matrix().m10(), _Brush.matrix().m11(), _Brush.matrix().m20(), _Brush.matrix().m21()); + //cairo_pattern_set_matrix(_Brush.native_handle(), &cPttnMatrix); + //cairo_set_source(_Context.get(), _Brush.native_handle()); + //cairo_mask_surface(_Context.get(), maskSurface.native_handle().csfce, 0.0, 0.0); + //path(currPath); + surface_brush_factory sbf(maskSurface); + experimental::io2d::brush maskBrush(sbf); + maskBrush.matrix(maskMatrix); + maskBrush.extend(maskExtend); + maskBrush.filter(maskFilter); -void surface::mask_immediate(const surface& maskSurface, const surface& s, const matrix_2d& m, extend e, filter f) { - auto currPath = _Current_path; - path(experimental::io2d::path(_Immediate_path)); - cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); - auto pat = cairo_get_source(_Context.get()); - cairo_pattern_set_extend(pat, _Extend_to_cairo_extend_t(e)); - cairo_pattern_set_filter(pat, _Filter_to_cairo_filter_t(f)); - cairo_matrix_t cmat{ m.m00(), m.m01(), m.m10(), m.m11(), m.m20(), m.m21() }; - cairo_pattern_set_matrix(pat, &cmat); - cairo_mask_surface(_Context.get(), maskSurface.native_handle().csfce, 0.0, 0.0); - cairo_set_source_rgba(_Context.get(), 0.0, 0.0, 0.0, 0.0); + mask_immediate(maskBrush); } -void surface::mask_immediate(const surface& maskSurface, const vector_2d& maskOrigin) { - auto currPath = _Current_path; - path(experimental::io2d::path(_Immediate_path)); - cairo_pattern_set_extend(_Brush.native_handle(), _Extend_to_cairo_extend_t(_Brush.extend())); - cairo_pattern_set_filter(_Brush.native_handle(), _Filter_to_cairo_filter_t(_Brush.filter())); - cairo_matrix_t cPttnMatrix; - cairo_matrix_init(&cPttnMatrix, _Brush.matrix().m00(), _Brush.matrix().m01(), _Brush.matrix().m10(), _Brush.matrix().m11(), _Brush.matrix().m20(), _Brush.matrix().m21()); - cairo_pattern_set_matrix(_Brush.native_handle(), &cPttnMatrix); - cairo_set_source(_Context.get(), _Brush.native_handle()); - cairo_mask_surface(_Context.get(), maskSurface.native_handle().csfce, maskOrigin.x(), maskOrigin.y()); - path(currPath); -} +void surface::mask_immediate(surface& maskSurface, const rgba_color& c, const matrix_2d& maskMatrix, extend maskExtend, filter maskFilter) { + surface_brush_factory sbf(maskSurface); + experimental::io2d::brush maskBrush(sbf); + maskBrush.matrix(maskMatrix); + maskBrush.extend(maskExtend); + maskBrush.filter(maskFilter); -void surface::mask_immediate(const surface& maskSurface, const vector_2d& maskOrigin, const rgba_color& c) { - solid_color_brush_factory factory(c); - brush(experimental::io2d::brush(factory)); - mask_immediate(maskSurface, maskOrigin); + mask_immediate(maskBrush, c); } -void surface::mask_immediate(const surface& maskSurface, const vector_2d& maskOrigin, const ::std::experimental::io2d::brush& b) { - brush(b); - mask_immediate(maskSurface, maskOrigin); -} +void surface::mask_immediate(surface& maskSurface, const ::std::experimental::io2d::brush& b, const matrix_2d& maskMatrix, extend maskExtend, filter maskFilter) { + surface_brush_factory sbf(maskSurface); + experimental::io2d::brush maskBrush(sbf); + maskBrush.matrix(maskMatrix); + maskBrush.extend(maskExtend); + maskBrush.filter(maskFilter); -void surface::mask_immediate(const surface& maskSurface, const vector_2d& maskOrigin, const surface& s, const vector_2d& origin, extend e, filter f) { - mask_immediate(maskSurface, maskOrigin, s, matrix_2d{ 1.0, 0.0, 0.0, 1.0, origin.x(), origin.y() }, e, f); + mask_immediate(maskBrush, b); } -void surface::mask_immediate(const surface& maskSurface, const vector_2d& maskOrigin, const surface& s, const matrix_2d& m, extend e, filter f) { - auto currPath = _Current_path; - path(experimental::io2d::path(_Immediate_path)); - cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); - auto pat = cairo_get_source(_Context.get()); - cairo_pattern_set_extend(pat, _Extend_to_cairo_extend_t(e)); - cairo_pattern_set_filter(pat, _Filter_to_cairo_filter_t(f)); - cairo_matrix_t cmat{ m.m00(), m.m01(), m.m10(), m.m11(), m.m20(), m.m21() }; - cairo_pattern_set_matrix(pat, &cmat); - cairo_mask_surface(_Context.get(), maskSurface.native_handle().csfce, maskOrigin.x(), maskOrigin.y()); - cairo_set_source_rgba(_Context.get(), 0.0, 0.0, 0.0, 0.0); +void surface::mask_immediate(surface& maskSurface, const surface& s, const matrix_2d& maskMatrix, const matrix_2d& m, extend maskExtend, extend e, filter maskFilter, filter f) { + //auto currPath = _Current_path; + //path(experimental::io2d::path(_Immediate_path)); + //cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); + //auto pat = cairo_get_source(_Context.get()); + //cairo_pattern_set_extend(pat, _Extend_to_cairo_extend_t(e)); + //cairo_pattern_set_filter(pat, _Filter_to_cairo_filter_t(f)); + //cairo_matrix_t cmat{ m.m00(), m.m01(), m.m10(), m.m11(), m.m20(), m.m21() }; + //cairo_pattern_set_matrix(pat, &cmat); + //cairo_mask_surface(_Context.get(), maskSurface.native_handle().csfce, 0.0, 0.0); + //cairo_set_source_rgba(_Context.get(), 0.0, 0.0, 0.0, 0.0); + surface_brush_factory sbf(maskSurface); + experimental::io2d::brush maskBrush(sbf); + maskBrush.matrix(maskMatrix); + maskBrush.extend(maskExtend); + maskBrush.filter(maskFilter); + + mask_immediate(maskBrush, s, m, e, f); } vector_2d surface::render_text(const string& utf8, const vector_2d& position) { @@ -1146,10 +1076,6 @@ vector_2d surface::render_text(const string& utf8, const vector_2d& position, co return render_text(utf8, position); } -vector_2d surface::render_text(const string& utf8, const vector_2d& position, const surface& s, const vector_2d& origin, extend e, filter f) { - return render_text(utf8, position, s, matrix_2d{ 1.0, 0.0, 0.0, 1.0, origin.x(), origin.y() }, e, f); -} - vector_2d surface::render_text(const string& utf8, const vector_2d& position, const surface& s, const matrix_2d& m, extend e, filter f) { cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); auto pat = cairo_get_source(_Context.get()); diff --git a/tests/sample-draw/sample_draw.cpp b/tests/sample-draw/sample_draw.cpp index 8aa77bf..bf3f8d9 100644 --- a/tests/sample-draw/sample_draw.cpp +++ b/tests/sample-draw/sample_draw.cpp @@ -87,7 +87,7 @@ void test_clip_transformation(display_surface& ds) { //ds.matrix(matrix_2d::init_translate({ 0.0, 0.0 })); //ds.immediate().clear(); //ds.immediate().rectangle({ 0.0, 0.0, 500.0, 500.0 }); - ds.paint(imgSfc, matrix_2d::init_identity()); + ds.paint(imgSfc); ds.restore(); } @@ -120,11 +120,11 @@ void test_mask(display_surface& ds) { imgSfc.fill_immediate(rgba_color::white()); //imgSfc.matrix(matrix_2d::init_translate({ -50.0, 50.0 })); //imgSfc.matrix(matrix_2d::init_scale({ 0.5, 1.5 })); - surface_brush_factory sbf(imgSfc); - brush br(sbf); - br.matrix(matrix_2d::init_translate({ -50.0, -50.0 }).rotate(half_pi() * 0.25)); - br.filter(filter::nearest); - br.extend(extend::none); + //surface_brush_factory sbf(imgSfc); + //brush br(sbf); + //br.matrix(matrix_2d::init_translate({ -50.0, -50.0 }).rotate(half_pi() * 0.25)); + //br.filter(filter::nearest); + //br.extend(extend::none); //radial_brush_factory rbf{ {250.0, 250.0}, 0.0, {250.0, 250.0}, 250.0 }; //rbf.add_color_stop(0.0, rgba_color::red()); @@ -140,7 +140,8 @@ void test_mask(display_surface& ds) { ds.paint(rgba_color::red()); ds.immediate().rectangle({ 0.0, 0.0, static_cast(ds.width()), static_cast(ds.height())}); //ds.matrix(matrix_2d::init_scale({ 0.5, 1.5 })); - ds.mask_immediate(br, rgba_color::blue()); + //ds.mask_immediate(br, rgba_color::blue()); + ds.mask_immediate(imgSfc, rgba_color::blue(), matrix_2d::init_translate({ -50.0, -50.0 }).rotate(half_pi() * 0.25)); //ds.fill_immediate(br); ds.restore(); } @@ -335,10 +336,10 @@ void test_paint_surface_extend_modes(display_surface& ds, double elapsedTimeInMi } else { if (totalElapsedTime < 3000.0) { - ds.paint(imgSfc, { 0.0, 0.0 }, extend::none); + ds.paint(imgSfc); } else { - ds.paint(imgSfc, { 0.0, 0.0 }, extend::repeat); + ds.paint(imgSfc, matrix_2d::init_identity(), extend::repeat); } } totalElapsedTime += elapsedTimeInMilliseconds; From 900212fefcaeb181a3b9174bee0e1364b020c378 Mon Sep 17 00:00:00 2001 From: "Michael B. McLaughlin" Date: Mon, 7 Mar 2016 12:29:48 -0500 Subject: [PATCH 19/30] Eliminated image_surface ctor that takes another surface; it just doesn't seem to have any use cases. Modified entrypoint.cpp to include Hello World code that is in the paper. Changed the default font size to 16, which required changes to ctors in display_surface, image_surface, and surface. --- io2d/src/display_surface-win32.cpp | 1 + io2d/src/display_surface-xlib.cpp | 1 + io2d/src/image_surface.cpp | 35 +----------------------------- io2d/src/surface.cpp | 21 ++++++++++++++---- tests/sample-draw/entrypoint.cpp | 11 +++++----- 5 files changed, 26 insertions(+), 43 deletions(-) diff --git a/io2d/src/display_surface-win32.cpp b/io2d/src/display_surface-win32.cpp index 1355ffd..3fa8d4a 100644 --- a/io2d/src/display_surface-win32.cpp +++ b/io2d/src/display_surface-win32.cpp @@ -347,6 +347,7 @@ display_surface::display_surface(int preferredWidth, int preferredHeight, experi // We render to the fixed size surface. _Surface = unique_ptr(cairo_image_surface_create(_Format_to_cairo_format_t(_Format), _Width, _Height), &cairo_surface_destroy); _Context = unique_ptr(cairo_create(_Surface.get()), &cairo_destroy); + _Ensure_state(); } display_surface::~display_surface() { diff --git a/io2d/src/display_surface-xlib.cpp b/io2d/src/display_surface-xlib.cpp index 0e6ccea..01b4c6f 100644 --- a/io2d/src/display_surface-xlib.cpp +++ b/io2d/src/display_surface-xlib.cpp @@ -276,6 +276,7 @@ display_surface::display_surface(int preferredWidth, int preferredHeight, experi XMapWindow(display, _Wndw); _Surface = unique_ptr(cairo_image_surface_create(_Format_to_cairo_format_t(_Format), _Width, _Height), &cairo_surface_destroy); _Context = unique_ptr(cairo_create(_Surface.get()), &cairo_destroy); + _Ensure_state(); } display_surface::~display_surface() { diff --git a/io2d/src/image_surface.cpp b/io2d/src/image_surface.cpp index fdfc21b..44b24cf 100644 --- a/io2d/src/image_surface.cpp +++ b/io2d/src/image_surface.cpp @@ -66,42 +66,9 @@ image_surface::image_surface(vector& data, experimental::io2d::fo _Throw_if_failed_cairo_status_t(cairo_surface_status(_Surface.get())); cairo_set_miter_limit(_Context.get(), _Line_join_miter_miter_limit); _Throw_if_failed_cairo_status_t(cairo_status(_Context.get())); + _Ensure_state(); } -//image_surface::image_surface(const surface& other, experimental::io2d::format fmt, int width, int height) -// : surface({ nullptr, nullptr }, fmt, _Content_for_format(fmt)) { -// _Surface = unique_ptr(cairo_surface_create_similar_image(other.native_handle().csfce, _Format_to_cairo_format_t(fmt), width, height), &cairo_surface_destroy); -// _Throw_if_failed_cairo_status_t(cairo_surface_status(_Surface.get())); -// _Context = unique_ptr(cairo_create(_Surface.get()), &cairo_destroy); -// _Throw_if_failed_cairo_status_t(cairo_status(_Context.get())); -// cairo_set_miter_limit(_Context.get(), _Line_join_miter_miter_limit); -//} -// -//image_surface::image_surface(const surface& other, experimental::io2d::format fmt, int width, int height, error_code& ec) noexcept -// : surface({ nullptr, nullptr }, fmt, _Content_for_format(fmt), ec) { -// if (static_cast(ec)) { -// _Surface = nullptr; -// _Context = nullptr; -// return; -// } -// _Surface = unique_ptr(cairo_surface_create_similar_image(other.native_handle().csfce, _Format_to_cairo_format_t(fmt), width, height), &cairo_surface_destroy); -// ec = _Cairo_status_t_to_std_error_code(cairo_surface_status(_Surface.get())); -// if (static_cast(ec)) { -// _Surface = nullptr; -// _Context = nullptr; -// return; -// } -// _Context = unique_ptr(cairo_create(_Surface.get()), &cairo_destroy); -// ec = _Cairo_status_t_to_std_error_code(cairo_status(_Context.get())); -// if (static_cast(ec)) { -// _Surface = nullptr; -// _Context = nullptr; -// return; -// } -// cairo_set_miter_limit(_Context.get(), _Line_join_miter_miter_limit); -// ec.clear(); -//} - image_surface::~image_surface() { } diff --git a/io2d/src/surface.cpp b/io2d/src/surface.cpp index fb0cd68..4d1434e 100644 --- a/io2d/src/surface.cpp +++ b/io2d/src/surface.cpp @@ -6,6 +6,10 @@ using namespace std; using namespace std::experimental; using namespace std::experimental::io2d; +namespace { + const vector_2d _Font_default_size{ 16.0, 16.0 }; +} + void surface::_Ensure_state() { if (_Surface == nullptr || _Context == nullptr) { _Throw_if_failed_cairo_status_t(CAIRO_STATUS_NULL_POINTER); @@ -101,13 +105,14 @@ surface::surface(format fmt, int width, int height) , _Immediate_path() , _Transform_matrix(matrix_2d::init_identity()) , _Font_face() - , _Font_matrix(matrix_2d::init_scale({ 10.0, 10.0 })) + , _Font_matrix(matrix_2d::init_scale(_Font_default_size)) , _Font_options(::std::experimental::io2d::antialias::default_antialias, ::std::experimental::io2d::subpixel_order::default_subpixel_order) , _Saved_state() { _Throw_if_failed_cairo_status_t(cairo_surface_status(_Surface.get())); _Throw_if_failed_cairo_status_t(cairo_status(_Context.get())); _Throw_if_failed_cairo_status_t(cairo_font_options_status(_Native_font_options.get())); _Throw_if_failed_cairo_status_t(cairo_pattern_status(_Brush.native_handle())); + _Ensure_state(); } surface::native_handle_type surface::native_handle() const { @@ -187,12 +192,13 @@ surface::surface(surface::native_handle_type nh, ::std::experimental::io2d::form , _Immediate_path() , _Transform_matrix() , _Font_face() - , _Font_matrix(matrix_2d::init_scale({ 10.0, 10.0 })) + , _Font_matrix(matrix_2d::init_scale(_Font_default_size)) , _Font_options(::std::experimental::io2d::antialias::default_antialias, ::std::experimental::io2d::subpixel_order::default_subpixel_order) , _Saved_state() { if (nh.csfce != nullptr) { _Throw_if_failed_cairo_status_t(cairo_surface_status(_Surface.get())); _Throw_if_failed_cairo_status_t(cairo_status(_Context.get())); + _Ensure_state(); } _Throw_if_failed_cairo_status_t(cairo_font_options_status(_Native_font_options.get())); _Throw_if_failed_cairo_status_t(cairo_pattern_status(_Brush.native_handle())); @@ -220,7 +226,7 @@ surface::surface(surface::native_handle_type nh, ::std::experimental::io2d::form , _Immediate_path() , _Transform_matrix(matrix_2d::init_identity()) , _Font_face() - , _Font_matrix(matrix_2d::init_scale({ 10.0, 10.0 })) + , _Font_matrix(matrix_2d::init_scale(_Font_default_size)) , _Font_options(::std::experimental::io2d::antialias::default_antialias, ::std::experimental::io2d::subpixel_order::default_subpixel_order) , _Saved_state() { if (nh.csfce != nullptr) { @@ -257,6 +263,12 @@ surface::surface(surface::native_handle_type nh, ::std::experimental::io2d::form if (_Context.get() != nullptr) { cairo_set_miter_limit(_Context.get(), _Line_join_miter_miter_limit); } + _Ensure_state(ec); + if (static_cast(ec)) { + _Surface = nullptr; + _Context = nullptr; + return; + } ec.clear(); } @@ -279,13 +291,14 @@ surface::surface(const surface& other, ::std::experimental::io2d::content ctnt, , _Immediate_path() , _Transform_matrix(matrix_2d::init_identity()) , _Font_face() - , _Font_matrix(matrix_2d::init_scale({ 10.0, 10.0 })) + , _Font_matrix(matrix_2d::init_scale(_Font_default_size)) , _Font_options(::std::experimental::io2d::antialias::default_antialias, ::std::experimental::io2d::subpixel_order::default_subpixel_order) , _Saved_state() { _Throw_if_failed_cairo_status_t(cairo_surface_status(_Surface.get())); _Throw_if_failed_cairo_status_t(cairo_status(_Context.get())); _Throw_if_failed_cairo_status_t(cairo_font_options_status(_Native_font_options.get())); _Throw_if_failed_cairo_status_t(cairo_pattern_status(_Brush.native_handle())); + _Ensure_state(); } surface::~surface() { diff --git a/tests/sample-draw/entrypoint.cpp b/tests/sample-draw/entrypoint.cpp index 4552c06..47f4970 100644 --- a/tests/sample-draw/entrypoint.cpp +++ b/tests/sample-draw/entrypoint.cpp @@ -8,6 +8,12 @@ using namespace std::chrono; using namespace std::experimental::io2d; int main() { + //auto ds = make_display_surface(640, 480, format::argb32); + //ds.draw_callback([](display_surface& ds) { + // ds.paint(rgba_color::cornflower_blue()); + // ds.render_text("Hello world!", { 50.0, 50.0 }, rgba_color::black()); + //}); + //return ds.show(); assert(steady_clock::is_steady); auto ds = make_display_surface(1280, 720, format::argb32, scaling::letterbox); auto radialFactory = radial_brush_factory({ 0.0, 0.0 }, 0.0, { 0.0, 0.0 }, 50.0); @@ -18,11 +24,6 @@ int main() { ds.letterbox_brush(letterboxBrush); sample_draw sd; ds.draw_callback(sd); - //ds.draw_callback([](display_surface& sfc) { - // sfc.paint(rgba_color::cornflower_blue); - // sfc.font_size(48.0); - // sfc.render_text("Hello ISO C++!", { 50.0, 50.0 }, rgba_color::white); - //}); return ds.show(); } From 94bc9d47d1d1886d1abc11b0710f8443396c4622 Mon Sep 17 00:00:00 2001 From: "Michael B. McLaughlin" Date: Mon, 7 Mar 2016 13:24:03 -0500 Subject: [PATCH 20/30] Removed extraneous ; from path_data_item.cpp. --- io2d/src/path_data_item.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/io2d/src/path_data_item.cpp b/io2d/src/path_data_item.cpp index f288c25..d1e681b 100644 --- a/io2d/src/path_data_item.cpp +++ b/io2d/src/path_data_item.cpp @@ -18,7 +18,7 @@ path_data_item& path_data_item::operator=(path_data_item&& other) noexcept { _Type = move(other._Type); } return *this; -}; +} path_data_item::path_data_item(const arc& value) noexcept : _Has_data() From c227307b696ef19122c6b930b02be6f2985d45ac Mon Sep 17 00:00:00 2001 From: "Michael B. McLaughlin" Date: Mon, 7 Mar 2016 14:27:19 -0500 Subject: [PATCH 21/30] Fixed typo in io2d.h macro name: Variable_templates_condition_support_test -> Variable_templates_conditional_support_test. --- io2d/include/io2d.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/io2d/include/io2d.h b/io2d/include/io2d.h index fa67b57..70ea214 100644 --- a/io2d/include/io2d.h +++ b/io2d/include/io2d.h @@ -2372,7 +2372,7 @@ namespace std { bool has_surface() const noexcept; const image_surface& surface() const; }; -#if _Variable_templates_condition_support_test +#if _Variable_templates_conditional_support_test template constexpr T pi = T(3.14159265358979323846264338327950288419716939937510L); From 8aba727945dd256756ccae6f8bab19effbf1c883 Mon Sep 17 00:00:00 2001 From: "Michael B. McLaughlin" Date: Tue, 8 Mar 2016 13:47:37 -0500 Subject: [PATCH 22/30] Added missing casts to image_surface.cpp. Fixed other files to properly deal with variable template conditional support test. --- io2d/src/image_surface.cpp | 4 +- io2d/src/path.cpp | 22 +++++ io2d/src/standalone_functions.cpp | 47 +++++++++- tests/sample-draw/sample_draw.cpp | 112 +++++++++++++++++++++++ tests/sample-draw/test_renderer_fill.cpp | 22 +++++ 5 files changed, 204 insertions(+), 3 deletions(-) diff --git a/io2d/src/image_surface.cpp b/io2d/src/image_surface.cpp index 44b24cf..903d1ef 100644 --- a/io2d/src/image_surface.cpp +++ b/io2d/src/image_surface.cpp @@ -111,7 +111,7 @@ void image_surface::data(const vector& data, error_code& ec) noex } vector image_surface::data() { - auto required_size = stride() * height(); + auto required_size = static_cast::size_type>(stride() * height()); vector data; //if (_Surface.get() == nullptr) { // _Throw_if_failed_cairo_status_t(CAIRO_STATUS_NULL_POINTER); @@ -124,7 +124,7 @@ vector image_surface::data() { } vector image_surface::data(error_code& ec) noexcept { - auto required_size = stride() * height(); + auto required_size = static_cast::size_type>(stride() * height()); // Relies on C++17 noexcept guarantee for vector default ctor (N4258, adopted 2014-11). vector data; //if (_Surface.get() == nullptr) { diff --git a/io2d/src/path.cpp b/io2d/src/path.cpp index d126c44..a45c438 100644 --- a/io2d/src/path.cpp +++ b/io2d/src/path.cpp @@ -193,16 +193,27 @@ path::path(const vector& pathData) auto ang1 = ad.angle_1(); auto ang2 = ad.angle_2(); while (ang2 < ang1) { +#if _Variable_templates_conditional_support_test + ang2 += two_pi; +#else ang2 += two_pi(); +#endif } vector_2d pt0, pt1, pt2, pt3; int bezCount = 1; double theta = ang2 - ang1; double phi; +#if _Variable_templates_conditional_support_test + while (theta >= half_pi) { + theta /= 2.0; + bezCount += bezCount; + } +#else while (theta >= half_pi()) { theta /= 2.0; bezCount += bezCount; } +#endif phi = theta / 2.0; auto cosPhi = cos(phi); auto sinPhi = sin(phi); @@ -282,16 +293,27 @@ path::path(const vector& pathData) auto ang1 = ad.angle_1(); auto ang2 = ad.angle_2(); while (ang2 > ang1) { +#if _Variable_templates_conditional_support_test + ang2 -= two_pi; +#else ang2 -= two_pi(); +#endif } vector_2d pt0, pt1, pt2, pt3; int bezCount = 1; double theta = ang1 - ang2; double phi; +#if _Variable_templates_conditional_support_test + while (theta >= half_pi) { + theta /= 2.0; + bezCount += bezCount; + } +#else while (theta >= half_pi()) { theta /= 2.0; bezCount += bezCount; } +#endif phi = theta / 2.0; auto cosPhi = cos(phi); auto sinPhi = sin(phi); diff --git a/io2d/src/standalone_functions.cpp b/io2d/src/standalone_functions.cpp index 43ff524..31be8c6 100644 --- a/io2d/src/standalone_functions.cpp +++ b/io2d/src/standalone_functions.cpp @@ -159,12 +159,20 @@ namespace std { vector _Get_arc_as_beziers(const vector_2d& center, double radius, double angle1, double angle2, bool arcNegative, bool hasCurrentPoint, const vector_2d& /*currentPoint*/, const vector_2d& origin, const matrix_2d& matrix) { if (arcNegative) { while (angle2 > angle1) { +#if _Variable_templates_conditional_support_test + angle2 -= two_pi; +#else angle2 -= two_pi(); +#endif } } else { while (angle2 < angle1) { +#if _Variable_templates_conditional_support_test + angle2 += two_pi; +#else angle2 += two_pi(); +#endif } } vector_2d pt0, pt1, pt2, pt3; @@ -181,10 +189,17 @@ namespace std { { // See: DeVeneza, Richard A., "How to determine the control points of a Bézier curve that approximates a small circular arc" (Nov. 2004) [ http://www.tinaja.com/glib/bezcirc2.pdf ]. +#if _Variable_templates_conditional_support_test + while (theta >= half_pi) { + theta /= 2.0; + bezierCount += bezierCount; + } +#else while (theta >= half_pi()) { theta /= 2.0; bezierCount += bezierCount; } +#endif phi = theta / 2.0; @@ -261,12 +276,20 @@ namespace std { vector _Get_arc_as_beziers(const vector_2d& center, double radius, double angle1, double angle2, error_code& ec, bool arcNegative, bool hasCurrentPoint, const vector_2d& /*currentPoint*/, const vector_2d& origin, const matrix_2d& matrix) noexcept { if (arcNegative) { while (angle2 > angle1) { +#if _Variable_templates_conditional_support_test + angle2 -= two_pi; +#else angle2 -= two_pi(); +#endif } } else { while (angle2 < angle1) { +#if _Variable_templates_conditional_support_test + angle2 += two_pi; +#else angle2 += two_pi(); +#endif } } vector_2d pt0, pt1, pt2, pt3; @@ -283,10 +306,17 @@ namespace std { { // See: DeVeneza, Richard A., "How to determine the control points of a Bézier curve that approximates a small circular arc" (Nov. 2004) [ http://www.tinaja.com/glib/bezcirc2.pdf ]. +#if _Variable_templates_conditional_support_test + while (theta >= half_pi) { + theta /= 2.0; + bezierCount += bezierCount; + } +#else while (theta >= half_pi()) { theta /= 2.0; bezierCount += bezierCount; } +#endif phi = theta / 2.0; @@ -395,12 +425,20 @@ namespace std { void _Get_arc_extents(const ::std::experimental::io2d::vector_2d& center, double radius, double angle1, double angle2, bool arcNegative, bool& hasCurrentPoint, ::std::experimental::io2d::vector_2d& currentPoint, ::std::experimental::io2d::vector_2d& transformedCurrentPoint, ::std::experimental::io2d::vector_2d& lastMoveToPoint, bool& hasExtents, vector_2d& exPt0, vector_2d& exPt1, ::std::experimental::io2d::vector_2d& origin, ::std::experimental::io2d::matrix_2d& transformMatrix) noexcept { if (arcNegative) { while (angle2 > angle1) { +#if _Variable_templates_conditional_support_test + angle2 -= two_pi; +#else angle2 -= two_pi(); +#endif } } else { while (angle2 < angle1) { +#if _Variable_templates_conditional_support_test + angle2 += two_pi; +#else angle2 += two_pi(); +#endif } } vector_2d pt0, pt1, pt2, pt3; @@ -417,10 +455,17 @@ namespace std { { // See: DeVeneza, Richard A., "How to determine the control points of a Bézier curve that approximates a small circular arc" (Nov. 2004) [ http://www.tinaja.com/glib/bezcirc2.pdf ]. - while (theta >= (half_pi())) { +#if _Variable_templates_conditional_support_test + while (theta >= half_pi) { theta /= 2.0; bezierCount += bezierCount; } +#else + while (theta >= half_pi()) { + theta /= 2.0; + bezierCount += bezierCount; + } +#endif phi = theta / 2.0; diff --git a/tests/sample-draw/sample_draw.cpp b/tests/sample-draw/sample_draw.cpp index bf3f8d9..dd49326 100644 --- a/tests/sample-draw/sample_draw.cpp +++ b/tests/sample-draw/sample_draw.cpp @@ -122,7 +122,11 @@ void test_mask(display_surface& ds) { //imgSfc.matrix(matrix_2d::init_scale({ 0.5, 1.5 })); //surface_brush_factory sbf(imgSfc); //brush br(sbf); +#if _Variable_templates_conditional_support_test + //br.matrix(matrix_2d::init_translate({ -50.0, -50.0 }).rotate(half_pi * 0.25)); +#else //br.matrix(matrix_2d::init_translate({ -50.0, -50.0 }).rotate(half_pi() * 0.25)); +#endif //br.filter(filter::nearest); //br.extend(extend::none); @@ -141,7 +145,11 @@ void test_mask(display_surface& ds) { ds.immediate().rectangle({ 0.0, 0.0, static_cast(ds.width()), static_cast(ds.height())}); //ds.matrix(matrix_2d::init_scale({ 0.5, 1.5 })); //ds.mask_immediate(br, rgba_color::blue()); +#if _Variable_templates_conditional_support_test + ds.mask_immediate(imgSfc, rgba_color::blue(), matrix_2d::init_translate({ -50.0, -50.0 }).rotate(half_pi * 0.25)); +#else ds.mask_immediate(imgSfc, rgba_color::blue(), matrix_2d::init_translate({ -50.0, -50.0 }).rotate(half_pi() * 0.25)); +#endif //ds.fill_immediate(br); ds.restore(); } @@ -189,10 +197,18 @@ void test_paint(display_surface& ds) { //lbf.add_color_stop(1.0, rgba_color::blue()); //auto linBrush = brush(lbf); //linBrush.extend(extend::repeat); +#if _Variable_templates_conditional_support_test + //linBrush.matrix(matrix_2d::init_rotate(half_pi / 2.0)); +#else //linBrush.matrix(matrix_2d::init_rotate(half_pi() / 2.0)); +#endif //ds.immediate().rectangle({ { 50.0, 50.0}, {500.0, 500.0} }); //ds.clip_immediate(); +#if _Variable_templates_conditional_support_test + //ds.matrix(matrix_2d::init_rotate(half_pi / 2.0)); +#else //ds.matrix(matrix_2d::init_rotate(half_pi() / 2.0)); +#endif //ds.brush(linBrush); //ds.paint(); @@ -209,8 +225,16 @@ void test_stroke_rules(display_surface& ds) { //ds.line_width(40.0); //ds.line_cap(line_cap::butt); //ds.line_join(line_join::miter_or_bevel); +#if _Variable_templates_conditional_support_test + //ds.immediate().arc({ ds.width() / 2.0, ds.height() / 2.0 }, 200.0, 0.0, two_pi); +#else //ds.immediate().arc({ ds.width() / 2.0, ds.height() / 2.0 }, 200.0, 0.0, two_pi()); +#endif +#if _Variable_templates_conditional_support_test + //ds.matrix(matrix_2d::init_translate({ ds.width() / 2.0, ds.height() / 2.0 }).rotate(half_pi / 2.0).scale({ 0.5, 1.0 }).translate({ -ds.width() / 2.0, -ds.height() / 2.0 })); +#else //ds.matrix(matrix_2d::init_translate({ ds.width() / 2.0, ds.height() / 2.0 }).rotate(half_pi() / 2.0).scale({ 0.5, 1.0 }).translate({ -ds.width() / 2.0, -ds.height() / 2.0 })); +#endif ds.dashes(nullopt); ds.line_width(2.0); ds.immediate().move_to({ 0.0, 199.0 }); @@ -234,8 +258,16 @@ void test_stroke_rules(display_surface& ds) { ds.immediate().move_to({ 200.0, 335.0 }); ds.immediate().rel_line_to({ 0.0, 200.0 }); +#if _Variable_templates_conditional_support_test + //ds.matrix(matrix_2d::init_scale({ 0.5, 1.0 }).rotate(half_pi / 2.0)); +#else //ds.matrix(matrix_2d::init_scale({ 0.5, 1.0 }).rotate(half_pi() / 2.0)); +#endif +#if _Variable_templates_conditional_support_test + //ds.matrix(matrix_2d::init_rotate(half_pi / 2.0).scale({ 0.5, 1.0 })); +#else //ds.matrix(matrix_2d::init_rotate(half_pi() / 2.0).scale({ 0.5, 1.0 })); +#endif //ds.immediate().rel_move_to({ 20.0, 0.0 }); //ds.immediate().rel_move_to({ 0.0, 10.0 }); //ds.immediate().close_path(); @@ -433,7 +465,11 @@ void draw_radial_circles(display_surface& ds) { pf.move_to({ 520.0, 520.0 }); pf.line_to({ 600.0, 600.0 }); pf.change_matrix(matrix_2d::init_scale({ 2.0, 1.0 })); +#if _Variable_templates_conditional_support_test + pf.arc({ 300.0, 700.0 }, 100.0, three_pi_over_two, two_pi); +#else pf.arc({ 300.0, 700.0 }, 100.0, three_pi_over_two(), two_pi()); +#endif pf.change_matrix(matrix_2d::init_identity()); pf.move_to({ 520.0, 10.0 }); pf.curve_to({ 480.0, 60.0 }, { 560.0, 60.0 }, { 520.0, 10.0 }); @@ -453,15 +489,35 @@ void draw_radial_circles(display_surface& ds) { ds.stroke(); pf.clear(); pf.new_sub_path(); +#if _Variable_templates_conditional_support_test + pf.arc({ 900.0, 200.0 }, 50.0, 0.0, two_pi); +#else pf.arc({ 900.0, 200.0 }, 50.0, 0.0, two_pi()); +#endif pf.new_sub_path(); +#if _Variable_templates_conditional_support_test + pf.arc_negative({ 900.0, 200.0 }, 75.0, 0.0, two_pi); +#else pf.arc_negative({ 900.0, 200.0 }, 75.0, 0.0, two_pi()); +#endif pf.new_sub_path(); +#if _Variable_templates_conditional_support_test + pf.arc({ 900.0, 200.0 }, 100.0, 0.0, two_pi); +#else pf.arc({ 900.0, 200.0 }, 100.0, 0.0, two_pi()); +#endif pf.new_sub_path(); +#if _Variable_templates_conditional_support_test + pf.arc_negative({ 900.0, 200.0 }, 125.0, 0.0, two_pi); +#else pf.arc_negative({ 900.0, 200.0 }, 125.0, 0.0, two_pi()); +#endif pf.new_sub_path(); +#if _Variable_templates_conditional_support_test + pf.arc({ 900.0, 200.0 }, 150.0, 0.0, two_pi); +#else pf.arc({ 900.0, 200.0 }, 150.0, 0.0, two_pi()); +#endif p = path(pf); ds.path(p); ds.fill(); @@ -750,12 +806,20 @@ void draw_sort_visualization_immediate(display_surface& ds, double elapsedTimeIn ds.paint(rgba_color::cornflower_blue()); // Paint background. ds.immediate().clear(); +#if _Variable_templates_conditional_support_test + ds.immediate().arc({ 100.0, 100.0 }, 50.0, 0.0, half_pi); +#else ds.immediate().arc({ 100.0, 100.0 }, 50.0, 0.0, half_pi()); +#endif auto initLineWidth = ds.line_width(); ds.line_width(8.0); ds.stroke_immediate(rgba_color::black()); ds.immediate().clear(); +#if _Variable_templates_conditional_support_test + ds.immediate().arc_negative({ 300.0, 100.0 }, 50.0, 0.0, half_pi); +#else ds.immediate().arc_negative({ 300.0, 100.0 }, 50.0, 0.0, half_pi()); +#endif ds.stroke_immediate(rgba_color::brown()); ds.immediate().clear(); ds.line_width(initLineWidth); @@ -795,15 +859,31 @@ void draw_sort_visualization_immediate(display_surface& ds, double elapsedTimeIn const auto yr = y - ((i2 == static_cast(i) ? 0.0 : (radius * 4.0 * (normalizedTime < 0.5 ? normalizedTime : 1.0 - normalizedTime))) * (i % 2 == 1 ? 1.0 : -1.0)); const auto center = vector_2d{ trunc((x2r - x1r) * adjustment + x1r), trunc(yr) }; +#if _Variable_templates_conditional_support_test + ds.immediate().change_matrix(matrix_2d::init_scale({ 1.0, 1.5 }) * matrix_2d::init_rotate(pi / 4.0) * matrix_2d::init_translate({ 0.0, 50.0 })); +#else ds.immediate().change_matrix(matrix_2d::init_scale({ 1.0, 1.5 }) * matrix_2d::init_rotate(pi() / 4.0) * matrix_2d::init_translate({ 0.0, 50.0 })); +#endif ds.immediate().change_origin(center); +#if _Variable_templates_conditional_support_test + ds.immediate().arc_negative(center, radius - 3.0, half_pi, -half_pi); +#else ds.immediate().arc_negative(center, radius - 3.0, half_pi(), -half_pi()); +#endif } else { const vector_2d center{ radius * i * 2.0 + radius + beginX, y }; +#if _Variable_templates_conditional_support_test + ds.immediate().change_matrix(matrix_2d::init_scale({ 1.0, 1.5 }) * matrix_2d::init_rotate(pi / 4.0)); +#else ds.immediate().change_matrix(matrix_2d::init_scale({ 1.0, 1.5 }) * matrix_2d::init_rotate(pi() / 4.0)); +#endif ds.immediate().change_origin(center); +#if _Variable_templates_conditional_support_test + ds.immediate().arc_negative(center, radius - 3.0, half_pi, -half_pi); +#else ds.immediate().arc_negative(center, radius - 3.0, half_pi(), -half_pi()); +#endif } double greyColor = 1.0 - (currVal / (elementCount - 1.0)); ds.fill_immediate({ greyColor, greyColor, greyColor, 1.0 }); @@ -884,10 +964,18 @@ void draw_sort_visualization_immediate(display_surface& ds, double elapsedTimeIn ds.immediate().clear(); ds.immediate().move_to({ 430.0, 60.0 }); +#if _Variable_templates_conditional_support_test + ds.immediate().arc({ 500.0, 60.0 }, 30.0, pi, two_pi); +#else ds.immediate().arc({ 500.0, 60.0 }, 30.0, pi(), two_pi()); +#endif ds.immediate().line_to({ 570.0, 60.0 }); // ds.immediate().new_sub_path(); +#if _Variable_templates_conditional_support_test + ds.immediate().arc({ 500.0, 130.0 }, 30.0, two_pi, pi * 3.0 / 4.0); +#else ds.immediate().arc({ 500.0, 130.0 }, 30.0, two_pi(), pi() * 3.0 / 4.0); +#endif ds.immediate().new_sub_path(); ds.dashes(dashes{ { 0.0, 10.0 }, 0.0 }); ds.line_width(5.0); @@ -958,15 +1046,31 @@ void draw_sort_visualization(display_surface& ds, double elapsedTimeInMillisecon const auto yr = y - ((i2 == static_cast(i) ? 0.0 : (radius * 4.0 * (normalizedTime < 0.5 ? normalizedTime : 1.0 - normalizedTime))) * (i % 2 == 1 ? 1.0 : -1.0)); const auto center = vector_2d{ trunc((x2r - x1r) * adjustment + x1r), trunc(yr) }; +#if _Variable_templates_conditional_support_test + pf.change_matrix(matrix_2d::init_scale({ 1.0, 1.5 }) * matrix_2d::init_rotate(pi / 4.0) * matrix_2d::init_translate({ 0.0, 50.0 })); +#else pf.change_matrix(matrix_2d::init_scale({ 1.0, 1.5 }) * matrix_2d::init_rotate(pi() / 4.0) * matrix_2d::init_translate({ 0.0, 50.0 })); +#endif pf.change_origin(center); +#if _Variable_templates_conditional_support_test + pf.arc_negative(center, radius - 3.0, half_pi, -half_pi); +#else pf.arc_negative(center, radius - 3.0, half_pi(), -half_pi()); +#endif } else { const vector_2d center{ radius * i * 2.0 + radius + beginX, y }; +#if _Variable_templates_conditional_support_test + pf.change_matrix(matrix_2d::init_scale({ 1.0, 1.5 }) * matrix_2d::init_rotate(pi / 4.0)); +#else pf.change_matrix(matrix_2d::init_scale({ 1.0, 1.5 }) * matrix_2d::init_rotate(pi() / 4.0)); +#endif pf.change_origin(center); +#if _Variable_templates_conditional_support_test + pf.arc_negative(center, radius - 3.0, half_pi, -half_pi); +#else pf.arc_negative(center, radius - 3.0, half_pi(), -half_pi()); +#endif } ds.path(path(pf)); double greyColor = 1.0 - (currVal / (elementCount - 1.0)); @@ -1025,10 +1129,18 @@ void draw_sort_visualization(display_surface& ds, double elapsedTimeInMillisecon pf.clear(); pf.move_to({ 430.0, 60.0 }); +#if _Variable_templates_conditional_support_test + pf.arc({ 500.0, 60.0 }, 30.0, pi, two_pi); +#else pf.arc({ 500.0, 60.0 }, 30.0, pi(), two_pi()); +#endif pf.line_to({ 570.0, 60.0 }); pf.new_sub_path(); +#if _Variable_templates_conditional_support_test + pf.arc_negative({ 500.0, 130.0 }, 30.0, 0.0, pi * 3.0 / 4.0); +#else pf.arc_negative({ 500.0, 130.0 }, 30.0, 0.0, pi() * 3.0 / 4.0); +#endif pf.new_sub_path(); ds.path(path(pf)); ds.line_width(2.0); diff --git a/tests/sample-draw/test_renderer_fill.cpp b/tests/sample-draw/test_renderer_fill.cpp index 337721a..ecf9023 100644 --- a/tests/sample-draw/test_renderer_fill.cpp +++ b/tests/sample-draw/test_renderer_fill.cpp @@ -943,16 +943,27 @@ namespace not_proposed { auto ang1 = ad.angle_1(); auto ang2 = ad.angle_2(); while (ang2 < ang1) { +#if _Variable_templates_conditional_support_test + ang2 += two_pi; +#else ang2 += two_pi(); +#endif } vector_2d pt0, pt1, pt2, pt3; int bezCount = 1; double theta = ang2 - ang1; double phi; +#if _Variable_templates_conditional_support_test + while (theta >= half_pi) { + theta /= 2.0; + bezCount += bezCount; + } +#else while (theta >= half_pi()) { theta /= 2.0; bezCount += bezCount; } +#endif phi = theta / 2.0; auto cosPhi = cos(phi); auto sinPhi = sin(phi); @@ -1035,16 +1046,27 @@ namespace not_proposed { auto ang1 = ad.angle_1(); auto ang2 = ad.angle_2(); while (ang2 > ang1) { +#if _Variable_templates_conditional_support_test + ang2 -= two_pi; +#else ang2 -= two_pi(); +#endif } vector_2d pt0, pt1, pt2, pt3; int bezCount = 1; double theta = ang1 - ang2; double phi; +#if _Variable_templates_conditional_support_test + while (theta >= half_pi) { + theta /= 2.0; + bezCount += bezCount; + } +#else while (theta >= half_pi()) { theta /= 2.0; bezCount += bezCount; } +#endif phi = theta / 2.0; auto cosPhi = cos(phi); auto sinPhi = sin(phi); From 09b249c859fab4f38d15519fdfc3e1d4cd27bbc8 Mon Sep 17 00:00:00 2001 From: "Michael B. McLaughlin" Date: Sat, 19 Mar 2016 16:14:37 -0400 Subject: [PATCH 23/30] Added enum class refresh_rate along with display_surface::refresh_rate, display_surface::desired_frame_rate, and display_surface::elapsed_draw_time. --- io2d/include/io2d.h | 36 +++++++--- io2d/src/display_surface-common.cpp | 40 +++++++++++ io2d/src/display_surface-win32.cpp | 85 +++++++++++++++++++---- io2d/src/display_surface-xlib.cpp | 104 ++++++++++++++++++++++------ io2d/src/standalone_functions.cpp | 8 ++- tests/sample-draw/entrypoint.cpp | 3 +- tests/sample-draw/sample_draw.cpp | 17 ++++- 7 files changed, 244 insertions(+), 49 deletions(-) diff --git a/io2d/include/io2d.h b/io2d/include/io2d.h index 70ea214..82ba393 100644 --- a/io2d/include/io2d.h +++ b/io2d/include/io2d.h @@ -15,6 +15,7 @@ #include #include #include +#include #ifdef _WIN32_WINNT #define NOMINMAX @@ -283,6 +284,12 @@ namespace std { none // Do not scale. }; + enum class refresh_rate { + as_needed, + as_fast_as_possible, + fixed + }; + // I don't know why Clang/C2 is complaining about weak vtables here since the at least one virtual function is always anchored but for now silence the warnings. I've never seen this using Clang on OpenSUSE. #ifdef _WIN32 #ifdef __clang__ @@ -2253,6 +2260,12 @@ namespace std { static Bool _X11_if_event_pred(Display* display, XEvent* event, XPointer arg); #endif + refresh_rate _Refresh_rate; + double _Desired_frame_rate; + ::std::atomic _Redraw_requested; + double _Elapsed_draw_time; + const double _Minimum_frame_rate = 0.01; + const double _Maximum_frame_rate = 120.0; ::std::unique_ptr> _Native_surface; ::std::unique_ptr> _Native_context; @@ -2282,16 +2295,16 @@ namespace std { display_surface& operator=(display_surface&& other) noexcept; display_surface(int preferredWidth, int preferredHeight, ::std::experimental::io2d::format preferredFormat, - ::std::experimental::io2d::scaling scl = ::std::experimental::io2d::scaling::letterbox); + ::std::experimental::io2d::scaling scl = ::std::experimental::io2d::scaling::letterbox, ::std::experimental::io2d::refresh_rate rr = ::std::experimental::io2d::refresh_rate::as_fast_as_possible, double fps = 30.0); display_surface(int preferredWidth, int preferredHeight, ::std::experimental::io2d::format preferredFormat, ::std::error_code& ec, - ::std::experimental::io2d::scaling scl = ::std::experimental::io2d::scaling::letterbox) noexcept; + ::std::experimental::io2d::scaling scl = ::std::experimental::io2d::scaling::letterbox, ::std::experimental::io2d::refresh_rate rr = ::std::experimental::io2d::refresh_rate::as_fast_as_possible, double fps = 30.0) noexcept; display_surface(int preferredWidth, int preferredHeight, ::std::experimental::io2d::format preferredFormat, int preferredDisplayWidth, int preferredDisplayHeight, - ::std::experimental::io2d::scaling scl = ::std::experimental::io2d::scaling::letterbox); + ::std::experimental::io2d::scaling scl = ::std::experimental::io2d::scaling::letterbox, ::std::experimental::io2d::refresh_rate rr = ::std::experimental::io2d::refresh_rate::as_fast_as_possible, double fps = 30.0); display_surface(int preferredWidth, int preferredHeight, ::std::experimental::io2d::format preferredFormat, int preferredDisplayWidth, int preferredDisplayHeight, ::std::error_code& ec, - ::std::experimental::io2d::scaling scl = ::std::experimental::io2d::scaling::letterbox) noexcept; + ::std::experimental::io2d::scaling scl = ::std::experimental::io2d::scaling::letterbox, ::std::experimental::io2d::refresh_rate rr = ::std::experimental::io2d::refresh_rate::as_fast_as_possible, double fps = 30.0) noexcept; virtual ~display_surface(); @@ -2325,6 +2338,10 @@ namespace std { void letterbox_brush(const ::std::experimental::io2d::brush& b); void letterbox_brush(const ::std::experimental::io2d::brush& b, ::std::error_code& ec) noexcept; void auto_clear(bool val) noexcept; + void refresh_rate(::std::experimental::io2d::refresh_rate rr) noexcept; + bool desired_frame_rate(double fps) noexcept; + void redraw_required() noexcept; + int show(); int show(::std::error_code& ec); // Not noexcept because if the user-provided functions throw they will propagate, but otherwise is non-throwing. void exit_show(int ms) noexcept; @@ -2341,6 +2358,9 @@ namespace std { ::std::function<::std::experimental::io2d::rectangle(const display_surface&, bool&)> user_scaling_callback(::std::error_code& ec) const noexcept; ::std::experimental::io2d::brush letterbox_brush() const noexcept; bool auto_clear() const noexcept; + ::std::experimental::io2d::refresh_rate refresh_rate() const noexcept; + double desired_frame_rate() const noexcept; + double elapsed_draw_time() const noexcept; }; // I don't know why Clang/C2 is complaining about weak vtables here since the at least one virtual function is always anchored but for now silence the warnings. I've never seen this using Clang on OpenSUSE. @@ -2418,11 +2438,11 @@ namespace std { } #endif int format_stride_for_width(format format, int width) noexcept; - display_surface make_display_surface(int preferredWidth, int preferredHeight, format preferredFormat, scaling scl = scaling::letterbox); - display_surface make_display_surface(int preferredWidth, int preferredHeight, format preferredFormat, ::std::error_code& ec, scaling scl = scaling::letterbox) noexcept; - display_surface make_display_surface(int preferredWidth, int preferredHeight, format preferredFormat, int preferredDisplayWidth, int preferredDisplayHeight, scaling scl = scaling::letterbox); + display_surface make_display_surface(int preferredWidth, int preferredHeight, format preferredFormat, scaling scl = scaling::letterbox, refresh_rate rr = refresh_rate::as_fast_as_possible, double desiredFramerate = 30.0); + display_surface make_display_surface(int preferredWidth, int preferredHeight, format preferredFormat, ::std::error_code& ec, scaling scl = scaling::letterbox, refresh_rate rr = refresh_rate::as_fast_as_possible, double desiredFramerate = 30.0) noexcept; + display_surface make_display_surface(int preferredWidth, int preferredHeight, format preferredFormat, int preferredDisplayWidth, int preferredDisplayHeight, scaling scl = scaling::letterbox, refresh_rate rr = refresh_rate::as_fast_as_possible, double desiredFramerate = 30.0); display_surface make_display_surface(int preferredWidth, int preferredHeight, format preferredFormat, - int preferredDisplayWidth, int preferredDisplayHeight, ::std::error_code& ec, scaling scl = scaling::letterbox) noexcept; + int preferredDisplayWidth, int preferredDisplayHeight, ::std::error_code& ec, scaling scl = scaling::letterbox, refresh_rate rr = refresh_rate::as_fast_as_possible, double desiredFramerate = 30.0) noexcept; image_surface make_image_surface(format format, int width, int height); image_surface make_image_surface(format format, int width, int height, ::std::error_code& ec) noexcept; #if _Inline_namespace_conditional_support_test diff --git a/io2d/src/display_surface-common.cpp b/io2d/src/display_surface-common.cpp index b40ba19..e4f74a7 100644 --- a/io2d/src/display_surface-common.cpp +++ b/io2d/src/display_surface-common.cpp @@ -305,6 +305,34 @@ void display_surface::auto_clear(bool val) noexcept { _Auto_clear = val; } +void display_surface::refresh_rate(experimental::io2d::refresh_rate rr) noexcept { + if (rr == experimental::io2d::refresh_rate::fixed && _Refresh_rate != rr) { + _Elapsed_draw_time = 0.0; + } + _Refresh_rate = rr; +} + +bool display_surface::desired_frame_rate(double fps) noexcept { + if (!isfinite(fps)) { + return true; + } + if (fps < _Minimum_frame_rate) { + _Desired_frame_rate = _Minimum_frame_rate; + return true; + } + if (fps > _Maximum_frame_rate) { + _Desired_frame_rate = _Maximum_frame_rate; + return true; + } + _Desired_frame_rate = fps; + + return false; +} + +void display_surface::redraw_required() noexcept { + _Redraw_requested.store(true, std::memory_order_release); +} + format display_surface::format() const noexcept { return _Format; } @@ -359,3 +387,15 @@ experimental::io2d::brush display_surface::letterbox_brush() const noexcept { bool display_surface::auto_clear() const noexcept { return _Auto_clear; } + +experimental::io2d::refresh_rate display_surface::refresh_rate() const noexcept { + return _Refresh_rate; +} + +double display_surface::desired_frame_rate() const noexcept { + return _Desired_frame_rate; +} + +double display_surface::elapsed_draw_time() const noexcept { + return _Elapsed_draw_time; +} diff --git a/io2d/src/display_surface-win32.cpp b/io2d/src/display_surface-win32.cpp index 3fa8d4a..1e0d02c 100644 --- a/io2d/src/display_surface-win32.cpp +++ b/io2d/src/display_surface-win32.cpp @@ -2,8 +2,10 @@ #include "xio2dhelpers.h" #include "xcairoenumhelpers.h" #include "cairo-win32.h" +#include using namespace std; +using namespace std::chrono; using namespace std::experimental::io2d; [[noreturn]] @@ -213,6 +215,10 @@ display_surface::display_surface(display_surface&& other) noexcept , _Auto_clear(move(other._Auto_clear)) , _Window_style(move(other._Window_style)) , _Hwnd(move(other._Hwnd)) + , _Refresh_rate(move(other._Refresh_rate)) + , _Desired_frame_rate(move(other._Desired_frame_rate)) + , _Redraw_requested(other._Redraw_requested.load()) + , _Elapsed_draw_time(move(other._Elapsed_draw_time)) , _Native_surface(move(other._Native_surface)) , _Native_context(move(other._Native_context)) { other._Draw_fn = nullptr; @@ -236,6 +242,10 @@ display_surface& display_surface::operator=(display_surface&& other) noexcept { _Auto_clear = move(other._Auto_clear); _Window_style = move(other._Window_style); _Hwnd = move(other._Hwnd); + _Refresh_rate = move(other._Refresh_rate); + _Desired_frame_rate = move(other._Desired_frame_rate); + _Redraw_requested = other._Redraw_requested.load(); + _Elapsed_draw_time = move(other._Elapsed_draw_time); _Native_surface = move(other._Native_surface); _Native_context = move(other._Native_context); @@ -251,11 +261,11 @@ namespace { once_flag _Window_class_registered_flag; } -display_surface::display_surface(int preferredWidth, int preferredHeight, experimental::io2d::format preferredFormat, experimental::io2d::scaling scl) - : display_surface(preferredWidth, preferredHeight, preferredFormat, preferredWidth, preferredHeight, scl) { +display_surface::display_surface(int preferredWidth, int preferredHeight, experimental::io2d::format preferredFormat, experimental::io2d::scaling scl, experimental::io2d::refresh_rate rr, double desiredFramerate) + : display_surface(preferredWidth, preferredHeight, preferredFormat, preferredWidth, preferredHeight, scl, rr, desiredFramerate) { } -display_surface::display_surface(int preferredWidth, int preferredHeight, experimental::io2d::format preferredFormat, int preferredDisplayWidth, int preferredDisplayHeight, experimental::io2d::scaling scl) +display_surface::display_surface(int preferredWidth, int preferredHeight, experimental::io2d::format preferredFormat, int preferredDisplayWidth, int preferredDisplayHeight, experimental::io2d::scaling scl, experimental::io2d::refresh_rate rr, double fps) : surface({ nullptr, nullptr }, preferredFormat, _Cairo_content_t_to_content(_Cairo_content_t_for_cairo_format_t(_Format_to_cairo_format_t(preferredFormat)))) , _Default_brush(cairo_pattern_create_rgba(0.0, 0.0, 0.0, 1.0)) , _Display_width(preferredDisplayWidth) @@ -270,6 +280,9 @@ display_surface::display_surface(int preferredWidth, int preferredHeight, experi , _Auto_clear(false) , _Window_style(WS_OVERLAPPEDWINDOW | WS_VISIBLE) , _Hwnd(nullptr) + , _Refresh_rate(rr) + , _Redraw_requested(true) + , _Desired_frame_rate(fps) , _Native_surface(nullptr, &cairo_surface_destroy) , _Native_context(nullptr, &cairo_destroy) { call_once(_Window_class_registered_flag, _MyRegisterClass, static_cast(GetModuleHandleW(nullptr))); @@ -278,6 +291,9 @@ display_surface::display_surface(int preferredWidth, int preferredHeight, experi if (preferredDisplayWidth <= 0 || preferredDisplayHeight <= 0 || preferredWidth <= 0 || preferredHeight <= 0 || preferredFormat == experimental::io2d::format::invalid) { throw invalid_argument("Invalid parameter."); } + if (fps <= _Minimum_frame_rate || !isfinite(fps)) { + throw system_error(make_error_code(errc::argument_out_of_domain)); + } RECT rc; rc.top = rc.left = 0; rc.right = preferredDisplayWidth; @@ -363,30 +379,61 @@ int display_surface::show() { if (_Draw_fn == nullptr) { throw system_error(make_error_code(errc::operation_would_block)); } + auto previousTime = steady_clock::now(); + _Elapsed_draw_time = 0.0; while (msg.message != WM_QUIT) { + auto currentTime = steady_clock::now(); + auto elapsedTimeIncrement = duration_cast(currentTime - previousTime).count() / 1000.0; + _Elapsed_draw_time += elapsedTimeIncrement; + previousTime = currentTime; + if (!PeekMessageW(&msg, NULL, 0, 0, PM_REMOVE)) { if (_Native_surface.get() != nullptr) { RECT clientRect; GetClientRect(_Hwnd, &clientRect); if (clientRect.right - clientRect.left != _Display_width || clientRect.bottom - clientRect.top != _Display_height) { // If there is a size mismatch we skip painting and resize the window instead. + auto dw = _Display_width; + auto dh = _Display_height; _Resize_window(); _Make_native_surface_and_context(); + if (dw != _Display_width || dh != _Display_height) { + if (_Size_change_fn != nullptr) { + _Size_change_fn(*this); + } + } continue; } else { - // Run user draw function: - if (_Draw_fn != nullptr) { - if (_Auto_clear) { - clear(); - } - _Draw_fn(*this); + bool redraw = true; + if (_Refresh_rate == experimental::io2d::refresh_rate::as_needed) { + redraw = _Redraw_requested.exchange(false, std::memory_order_acquire); } - else { - throw system_error(make_error_code(errc::operation_would_block)); + if (_Refresh_rate == experimental::io2d::refresh_rate::fixed) { + // desiredElapsed is the amount of time, in milliseconds, that must have passed before we should redraw. + auto desiredElapsed = 1000.0 / _Desired_frame_rate; + redraw = _Elapsed_draw_time >= desiredElapsed; + } + if (redraw) { + // Run user draw function: + if (_Draw_fn != nullptr) { + if (_Auto_clear) { + clear(); + } + _Draw_fn(*this); + } + else { + throw system_error(make_error_code(errc::operation_would_block)); + } + _Render_to_native_surface(); + if (_Refresh_rate == experimental::io2d::refresh_rate::fixed) { + _Elapsed_draw_time -= 1000.0 / _Desired_frame_rate; + } + else { + _Elapsed_draw_time = 0.0; + } } - _Render_to_native_surface(); } } } @@ -394,10 +441,20 @@ int display_surface::show() { if (msg.message != WM_QUIT) { TranslateMessage(&msg); DispatchMessage(&msg); + + if (msg.message == WM_PAINT) { + _Elapsed_draw_time = 0.0; + //if (_Refresh_rate == experimental::io2d::refresh_rate::fixed) { + // _Elapsed_draw_time -= elapsedTimeIncrement; + //} + //else { + // _Elapsed_draw_time = 0.0; + //} + } } } } - + _Elapsed_draw_time = 0.0; // I know that the C-style cast works and have not had a chance to come up with a safer C++-style cast that I can be sure also works so I'm disabling the warning. #ifdef _WIN32 #ifdef __clang__ @@ -416,4 +473,4 @@ int display_surface::show() { void display_surface::exit_show(int ms) noexcept { PostQuitMessage(0); -} \ No newline at end of file +} diff --git a/io2d/src/display_surface-xlib.cpp b/io2d/src/display_surface-xlib.cpp index 01b4c6f..1a59665 100644 --- a/io2d/src/display_surface-xlib.cpp +++ b/io2d/src/display_surface-xlib.cpp @@ -5,11 +5,13 @@ #include #include #include +#include // Only uncomment this if you need to do debugging. This will cause XSynchronize to be called for the _Display connection. //#define USE_X_SYNC_FOR_DEBUGGING using namespace std; +using namespace std::chrono; using namespace std::experimental::io2d; Bool display_surface::_X11_if_event_pred(::Display* display, ::XEvent* event, XPointer arg) { @@ -20,8 +22,8 @@ Bool display_surface::_X11_if_event_pred(::Display* display, ::XEvent* event, XP return False; } // Need to check for ExposureMask events, StructureNotifyMask events, and unmaskable events. - switch(event->type) { - // ExposureMask events: + switch (event->type) { + // ExposureMask events: case Expose: { if (event->xexpose.window == sfc->_Wndw) { @@ -148,6 +150,10 @@ display_surface::display_surface(display_surface&& other) noexcept , _Auto_clear(move(other._Auto_clear)) , _Wndw(move(other._Wndw)) , _Can_draw(move(other._Can_draw)) + , _Refresh_rate(move(other._Refresh_rate)) + , _Desired_frame_rate(move(other._Desired_frame_rate)) + , _Redraw_requested(other._Redraw_requested.load()) + , _Elapsed_draw_time(move(other._Elapsed_draw_time)) , _Native_surface(move(other._Native_surface)) , _Native_context(move(other._Native_context)) { other._Draw_fn = nullptr; @@ -171,6 +177,10 @@ display_surface& display_surface::operator=(display_surface&& other) noexcept { _Auto_clear = move(other._Auto_clear); _Wndw = move(other._Wndw); _Can_draw = move(other._Can_draw); + _Refresh_rate = move(other._Refresh_rate); + _Desired_frame_rate = move(other._Desired_frame_rate); + _Redraw_requested = other._Redraw_requested.load(); + _Elapsed_draw_time = move(other._Elapsed_draw_time); _Native_surface = move(other._Native_surface); _Native_context = move(other._Native_context); @@ -212,18 +222,18 @@ void display_surface::_Resize_window() { _Throw_if_failed_cairo_status_t(CAIRO_STATUS_INVALID_STATUS); } if (width != static_cast(_Display_width) || height != static_cast(_Display_height)) { - XWindowChanges xwc{ }; + XWindowChanges xwc{}; xwc.width = _Display_width; xwc.height = _Display_height; XConfigureWindow(_Display.get(), _Wndw, CWWidth | CWHeight, &xwc); } } -display_surface::display_surface(int preferredWidth, int preferredHeight, experimental::io2d::format preferredFormat, experimental::io2d::scaling scl) - : display_surface(preferredWidth, preferredHeight, preferredFormat, preferredWidth, preferredHeight, scl) { +display_surface::display_surface(int preferredWidth, int preferredHeight, experimental::io2d::format preferredFormat, experimental::io2d::scaling scl, experimental::io2d::refresh_rate rr, double fps) + : display_surface(preferredWidth, preferredHeight, preferredFormat, preferredWidth, preferredHeight, scl, rr, fps) { } -display_surface::display_surface(int preferredWidth, int preferredHeight, experimental::io2d::format preferredFormat, int preferredDisplayWidth, int preferredDisplayHeight, experimental::io2d::scaling scl) +display_surface::display_surface(int preferredWidth, int preferredHeight, experimental::io2d::format preferredFormat, int preferredDisplayWidth, int preferredDisplayHeight, experimental::io2d::scaling scl, experimental::io2d::refresh_rate rr, double fps) : surface({ nullptr, nullptr }, preferredFormat, _Cairo_content_t_to_content(_Cairo_content_t_for_cairo_format_t(_Format_to_cairo_format_t(preferredFormat)))) , _Default_brush(cairo_pattern_create_rgba(0.0, 0.0, 0.0, 1.0)) , _Display_width(preferredDisplayWidth) @@ -238,11 +248,17 @@ display_surface::display_surface(int preferredWidth, int preferredHeight, experi , _Auto_clear(false) , _Wndw(None) , _Can_draw(false) + , _Refresh_rate(rr) + , _Redraw_requested(true) + , _Desired_frame_rate(fps) , _Native_surface(nullptr, &cairo_surface_destroy) , _Native_context(nullptr, &cairo_destroy) { if (preferredDisplayWidth <= 0 || preferredDisplayHeight <= 0 || preferredWidth <= 0 || preferredHeight <= 0 || preferredFormat == experimental::io2d::format::invalid) { throw invalid_argument("Invalid parameter."); } + if (fps <= _Minimum_framerate || !isfinite(fps)) { + throw system_error(make_error_code(errc::argument_out_of_domain)); + } Display* display = nullptr; // Lock to increment the ref count. { @@ -259,10 +275,10 @@ display_surface::display_surface(int preferredWidth, int preferredHeight, experi } _Display = unique_ptr(display, &XCloseDisplay); _Wm_delete_window = XInternAtom(display, "WM_DELETE_WINDOW", False); - #ifdef USE_X_SYNC_FOR_DEBUGGING +#ifdef USE_X_SYNC_FOR_DEBUGGING // DEBUGGING ONLY!!!!!! XSynchronize(display, True); - #endif +#endif } } display = _Display.get(); @@ -299,10 +315,17 @@ int display_surface::show() { bool exit = false; XEvent event; + auto previousTime = steady_clock::now(); + _Elapsed_draw_time = 0.0; while (!exit) { + auto currentTime = steady_clock::now(); + auto elapsedTimeIncrement = duration_cast(currentTime - previousTime).count() / 1000.0; + _Elapsed_draw_time += elapsedTimeIncrement; + previousTime = currentTime; + while (XCheckIfEvent(_Display.get(), &event, &display_surface::_X11_if_event_pred, reinterpret_cast(this))) { - switch(event.type) { - // ExposureMask events: + switch (event.type) { + // ExposureMask events: case Expose: { if (!_Can_draw && _Wndw != None) { @@ -320,6 +343,14 @@ int display_surface::show() { throw system_error(make_error_code(errc::operation_would_block)); } _Render_to_native_surface(); + + _Elapsed_draw_time = 0.0; + //if (_Refresh_rate == experimental::io2d::refresh_rate::fixed) { + // _Elapsed_draw_time -= elapsedTimeIncrement; + //} + //else { + // _Elapsed_draw_time = 0.0; + //} } break; // StructureNotifyMask events: case CirculateNotify: @@ -338,6 +369,9 @@ int display_surface::show() { } if (resized) { cairo_xlib_surface_set_size(_Native_surface.get(), _Display_width, _Display_height); + if (_Size_change_fn != nullptr) { + _Size_change_fn(*this); + } } } break; case DestroyNotify: @@ -378,6 +412,14 @@ int display_surface::show() { throw system_error(make_error_code(errc::operation_would_block)); } _Render_to_native_surface(); + + _Elapsed_draw_time = 0.0; + //if (_Refresh_rate == experimental::io2d::refresh_rate::fixed) { + // _Elapsed_draw_time -= elapsedTimeIncrement; + //} + //else { + // _Elapsed_draw_time = 0.0; + //} } } break; case NoExpose: @@ -402,13 +444,13 @@ int display_surface::show() { try { clientMsgStr << " (" << atomName << ")"; } - catch(...) { + catch (...) { XFree(atomName); } XFree(atomName); } clientMsgStr << ". Format is '" << event.xclient.format << "' and first value is '"; - switch(event.xclient.format) { + switch (event.xclient.format) { case 8: { clientMsgStr << to_string(static_cast(event.xclient.data.b[0])).c_str(); @@ -450,22 +492,40 @@ int display_surface::show() { errorString << "Unexpected event.type. Value is '" << event.type << "'."; cerr << errorString.str().c_str(); assert(event.type >= 64 && event.type <= 127); - } + } break; } } if (_Can_draw) { - // Run user draw function: - if (_Draw_fn != nullptr) { - if (_Auto_clear) { - clear(); - } - _Draw_fn(*this); + bool redraw = true; + if (_Refresh_rate == experimental::io2d::refresh_rate::as_needed) { + redraw = _Redraw_requested.exchange(false, std::memory_order_acquire); + } + if (_Refresh_rate == experimental::io2d::refresh_rate::fixed) { + // desiredElapsed is the amount of time, in milliseconds, that must have passed before we should redraw. + auto desiredElapsed = 1000.0 / _Desired_frame_rate; + redraw = _Elapsed_draw_time >= desiredElapsed; } - else { - throw system_error(make_error_code(errc::operation_would_block)); + if (redraw) { + // Run user draw function: + if (_Draw_fn != nullptr) { + if (_Auto_clear) { + clear(); + } + _Draw_fn(*this); + } + else { + throw system_error(make_error_code(errc::operation_would_block)); + } + _Render_to_native_surface(); + if (_Refresh_rate == experimental::io2d::refresh_rate::fixed) { + _Elapsed_draw_time -= 1000.0 / _Desired_frame_rate; + } + else { + _Elapsed_draw_time = 0.0; + } } - _Render_to_native_surface(); } } + _Elapsed_draw_time = 0.0; return 0; } diff --git a/io2d/src/standalone_functions.cpp b/io2d/src/standalone_functions.cpp index 31be8c6..2600fb8 100644 --- a/io2d/src/standalone_functions.cpp +++ b/io2d/src/standalone_functions.cpp @@ -16,8 +16,12 @@ namespace std { return ec; } - display_surface make_display_surface(int preferredWidth, int preferredHeight, format preferredFormat, scaling scl) { - return display_surface(preferredWidth, preferredHeight, preferredFormat, scl); + display_surface make_display_surface(int preferredWidth, int preferredHeight, format preferredFormat, scaling scl, refresh_rate rr, double desiredFramerate) { + return display_surface(preferredWidth, preferredHeight, preferredFormat, scl, rr, desiredFramerate); + } + + display_surface make_display_surface(int preferredWidth, int preferredHeight, format preferredFormat, int preferredDisplayWidth, int preferredDisplayHeight, scaling scl, refresh_rate rr, double desiredFramerate) { + return display_surface(preferredWidth, preferredHeight, preferredFormat, preferredDisplayWidth, preferredDisplayHeight,scl, rr, desiredFramerate); } image_surface make_image_surface(format fmt, int width, int height) { diff --git a/tests/sample-draw/entrypoint.cpp b/tests/sample-draw/entrypoint.cpp index 47f4970..091c1a4 100644 --- a/tests/sample-draw/entrypoint.cpp +++ b/tests/sample-draw/entrypoint.cpp @@ -14,8 +14,9 @@ int main() { // ds.render_text("Hello world!", { 50.0, 50.0 }, rgba_color::black()); //}); //return ds.show(); + assert(steady_clock::is_steady); - auto ds = make_display_surface(1280, 720, format::argb32, scaling::letterbox); + auto ds = make_display_surface(1280, 720, format::argb32, scaling::letterbox, refresh_rate::fixed, 30.0); auto radialFactory = radial_brush_factory({ 0.0, 0.0 }, 0.0, { 0.0, 0.0 }, 50.0); radialFactory.add_color_stop(0.0, rgba_color::orange()); radialFactory.add_color_stop(1.0, rgba_color::aquamarine()); diff --git a/tests/sample-draw/sample_draw.cpp b/tests/sample-draw/sample_draw.cpp index dd49326..c3e5ea0 100644 --- a/tests/sample-draw/sample_draw.cpp +++ b/tests/sample-draw/sample_draw.cpp @@ -7,6 +7,8 @@ #include #include #include +#include +#include #include "test_renderer.h" using namespace std; @@ -41,12 +43,12 @@ void sample_draw::operator()(display_surface& ds) { //auto currentTime = steady_clock::now(); //auto elapsedTime = currentTime - previousTime; //previousTime = currentTime; - //draw_sort_visualization_immediate(ds, duration_cast(elapsedTime).count() / 1000.0); + draw_sort_visualization_immediate(ds, ds.elapsed_draw_time()); //test_clip_transformation(ds); //test_paint(ds); //test_stroke_rules(ds); - test_mask(ds); + //test_mask(ds); //test_extend_none_on_boundary(ds); //test_draw_radial_circles(ds); @@ -803,6 +805,11 @@ void draw_sort_visualization_immediate(display_surface& ds, double elapsedTimeIn const static auto vec = init_sort_steps(elementCount); const auto phaseCount = vec.size(); const size_t x = ::std::min(static_cast(timer / phaseTime), ::std::max(static_cast(phaseCount - 1U), static_cast(0U))); + + static deque elapsedTimes(static_cast(30), elapsedTimeInMilliseconds); + elapsedTimes.pop_front(); + elapsedTimes.push_back(elapsedTimeInMilliseconds); + ds.paint(rgba_color::cornflower_blue()); // Paint background. ds.immediate().clear(); @@ -990,6 +997,12 @@ void draw_sort_visualization_immediate(display_surface& ds, double elapsedTimeIn ds.immediate().curve_to({ 610.0, 400.0 }, { 660.0, 300.0 }, { 710.0, 400.0 }); ds.immediate().close_path(); ds.stroke_immediate(rgba_color::yellow_green()); + auto sumOfElapsedTimes = accumulate(begin(elapsedTimes), end(elapsedTimes), 0.0); + auto countOfElapsedTimes = static_cast(elapsedTimes.size()); + auto fps = 1000.0 / (sumOfElapsedTimes / countOfElapsedTimes); + stringstream fpsStr; + fpsStr << "FPS: " << setprecision(3) << fps; + ds.render_text(fpsStr.str(), { static_cast(ds.width()) - 200.0, 50.0 }, rgba_color::dark_red()); //auto radialFactory = radial_brush_factory({ 115.2, 102.4 }, 25.6, { 102.4, 102.4 }, 128.0); //radialFactory.add_color_stop(0.0, rgba_color::white()); From 3c5ab1e3a1f0efcaf889fefa8c55e0bcd527ead6 Mon Sep 17 00:00:00 2001 From: "Michael B. McLaughlin" Date: Thu, 31 Mar 2016 11:19:52 -0400 Subject: [PATCH 24/30] Reworked fonts and text rendering to eliminate inheritance (fixing the slicing problem that existed with the previous simple_font_face design) and add support for glyphs and clusters (including adding outlines of text/glyphs to a path). Fixed issue with refresh_rate::fixed - the display_surface now internally uses nanoseconds rather than milliseconds or microseconds which fixes the problem where the accumulated elapsed time was updating slowly and sporadically because the elapsed time between calls to the message loop were often too small and thus ended up being truncated to zero by the duration_cast. Fixed two code analysis warnings in image_surface.cpp. Modified the variable template macro to use the correct value for _MSC_FULL_VER (note that IntelliSense shows an error for constexpr in the variable templates but that the pi-based variable templates actually compile and work fine in VS 2015 Update 2). --- examples/hello-world/hello.cpp | 6 +- io2d/include/io2d.h | 361 ++++++++++++++++------------ io2d/include/xio2d.h | 2 +- io2d/include/xio2dhelpers.h | 87 +++++++ io2d/src/CMakeLists.txt | 5 +- io2d/src/display_surface-common.cpp | 2 +- io2d/src/display_surface-win32.cpp | 14 +- io2d/src/display_surface-xlib.cpp | 14 +- io2d/src/font_face.cpp | 42 ---- io2d/src/font_resource.cpp | 162 +++++++++++++ io2d/src/font_resource_factory.cpp | 200 +++++++++++++++ io2d/src/glyph_run.cpp | 170 +++++++++++++ io2d/src/image_surface.cpp | 8 +- io2d/src/path_factory.cpp | 36 +++ io2d/src/simple_font_face.cpp | 68 ------ io2d/src/surface.cpp | 190 +++++---------- tests/sample-draw/sample_draw.cpp | 51 ++-- 17 files changed, 982 insertions(+), 436 deletions(-) delete mode 100644 io2d/src/font_face.cpp create mode 100644 io2d/src/font_resource.cpp create mode 100644 io2d/src/font_resource_factory.cpp create mode 100644 io2d/src/glyph_run.cpp delete mode 100644 io2d/src/simple_font_face.cpp diff --git a/examples/hello-world/hello.cpp b/examples/hello-world/hello.cpp index 76377f7..d73a6a7 100644 --- a/examples/hello-world/hello.cpp +++ b/examples/hello-world/hello.cpp @@ -28,10 +28,8 @@ int main () { io2d::image_surface image(io2d::format::argb32, 240, 80); - io2d::simple_font_face consolas("Consolas", io2d::font_slant::normal, - io2d::font_weight::bold); - image.font_face(consolas); - image.font_size(32.0); + image.font_resource("Consolas", 32.0, io2d::font_slant::normal, + io2d::font_weight::bold); io2d::brush cyan(io2d::rgba_color::cyan()); image.brush(cyan); diff --git a/io2d/include/io2d.h b/io2d/include/io2d.h index 82ba393..def2a6f 100644 --- a/io2d/include/io2d.h +++ b/io2d/include/io2d.h @@ -31,81 +31,6 @@ #define noexcept #endif -//namespace std { -// namespace experimental { -// ////// From C++ Extensions for Library Fundamentals, N4335 -// //struct nullopt_t { -// // constexpr explicit nullopt_t(int) noexcept { -// // } -// //}; -// //constexpr nullopt_t nullopt{ 0 }; -// -//// namespace io2d { -////#if _Inline_namespace_conditional_support_test -//// inline namespace v1 { -////#endif -//// enum class io2d_error; -//// enum class antialias; -//// enum class content; -//// enum class fill_rule; -//// enum class line_cap; -//// enum class line_join; -//// enum class compositing_operator; -//// enum class format; -//// enum class extend; -//// enum class filter; -//// enum class brush_type; -//// enum class font_slant; -//// enum class font_weight; -//// enum class subpixel_order; -//// enum class path_data_type; -//// enum class scaling; -//// class io2d_error_category; -//// class rectangle; -//// class rgba_color; -//// class vector_2d; -//// class font_extents; -//// class text_extents; -//// class matrix_2d; -//// //class path_data; -//// class _Point; -//// //class move_to; -//// //class line_to; -//// //class rel_move_to; -//// //class rel_line_to; -//// class _Curve_to; -//// //class curve_to; -//// //class rel_curve_to; -//// class _Arc; -//// //class arc; -//// //class arc_negative; -//// //class new_sub_path; -//// //class close_path; -//// //class change_matrix; -//// //class change_origin; -//// class path; -//// class path_factory; -//// class device; -//// class font_options; -//// class font_face; -//// class simple_font_face; -//// class brush; -//// class solid_color_brush_factory; -//// class linear_brush_factory; -//// class radial_brush_factory; -//// //class mesh_brush_factory; -//// struct _Surface_native_handles; -//// class surface; -//// class image_surface; -//// class display_surface; -//// class surface_brush_factory; -////#if _Inline_namespace_conditional_support_test -//// } -////#endif -//// } -// } -//} - namespace std { namespace experimental { @@ -1398,6 +1323,10 @@ namespace std { path& operator=(path&& other) noexcept; }; + // Forward declaration + class font_resource; + class glyph_run; + class path_factory { friend path; ::std::vector _Data; @@ -1445,6 +1374,10 @@ namespace std { void change_origin(const vector_2d& pt); void change_origin(const vector_2d& pt, ::std::error_code& ec) noexcept; void clear() noexcept; + void add_text(const font_resource& fr, const ::std::string& utf8, const vector_2d& pt); + void add_text(const font_resource& fr, const ::std::string& utf8, const vector_2d& pt, ::std::error_code& ec) noexcept; + void add_glyph_run(const font_resource& fr, const glyph_run& gr); + void add_glyph_run(const font_resource& fr, const glyph_run& gr, ::std::error_code& ec) noexcept; // Observers ::std::experimental::io2d::rectangle path_extents() const; @@ -1507,72 +1440,182 @@ namespace std { ::std::experimental::io2d::subpixel_order subpixel_order() const noexcept; }; - // I don't know why Clang/C2 is complaining about weak vtables here since the at least one virtual function is always anchored but for now silence the warnings. I've never seen this using Clang on OpenSUSE. -#ifdef _WIN32 -#ifdef __clang__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wweak-vtables" -#endif -#endif + class font_resource_factory { + ::std::string _Family; + ::std::experimental::io2d::font_slant _Font_slant = ::std::experimental::io2d::font_slant::normal; + ::std::experimental::io2d::font_weight _Font_weight = ::std::experimental::io2d::font_weight::normal; + ::std::experimental::io2d::font_options _Font_options; + matrix_2d _Font_matrix; + matrix_2d _Surface_matrix; - class font_face { - friend surface; - public: - typedef cairo_font_face_t* native_handle_type; - protected: - ::std::shared_ptr _Font_face; - explicit font_face(native_handle_type nh); - font_face(native_handle_type nh, ::std::error_code& ec) noexcept; public: - native_handle_type native_handle() const noexcept; + font_resource_factory() = default; + font_resource_factory(const font_resource_factory&) = default; + font_resource_factory& operator=(const font_resource_factory&) = default; + font_resource_factory(font_resource_factory&&) noexcept = default; + font_resource_factory& operator=(font_resource_factory&&) noexcept = default; + explicit font_resource_factory(const ::std::string& family, + ::std::experimental::io2d::font_slant fs = ::std::experimental::io2d::font_slant::normal, + ::std::experimental::io2d::font_weight fw = ::std::experimental::io2d::font_weight::normal, + const matrix_2d& fm = matrix_2d::init_scale({ 16.0, 16.0 }), + const ::std::experimental::io2d::font_options& fo = ::std::experimental::io2d::font_options(), + const matrix_2d& sm = matrix_2d::init_identity()); + font_resource_factory(const ::std::string& family, + ::std::error_code& ec, + ::std::experimental::io2d::font_slant fs = ::std::experimental::io2d::font_slant::normal, + ::std::experimental::io2d::font_weight fw = ::std::experimental::io2d::font_weight::normal, + const matrix_2d& fm = matrix_2d::init_scale({ 16.0, 16.0 }), + const ::std::experimental::io2d::font_options& fo = ::std::experimental::io2d::font_options(), + const matrix_2d& sm = matrix_2d::init_identity()) noexcept; + + // Modifiers + void font_family(const ::std::string& f); + void font_family(const ::std::string& f, ::std::error_code& ec) noexcept; + void font_slant(const ::std::experimental::io2d::font_slant fs); + void font_slant(const ::std::experimental::io2d::font_slant fs, ::std::error_code& ec) noexcept; + void font_weight(::std::experimental::io2d::font_weight fw); + void font_weight(::std::experimental::io2d::font_weight fw, ::std::error_code& ec) noexcept; + void font_options(const ::std::experimental::io2d::font_options& fo) noexcept; + void font_matrix(const matrix_2d& m) noexcept; + void surface_matrix(const matrix_2d& m) noexcept; - font_face() = delete; - font_face(const font_face&) noexcept = default; - font_face& operator=(const font_face&) noexcept = default; - font_face(font_face&& other) noexcept; - font_face& operator=(font_face&& other) noexcept; - virtual ~font_face(); + // Observers + ::std::string font_family() const; + ::std::string font_family(::std::error_code& ec) const noexcept; + ::std::experimental::io2d::font_slant font_slant() const noexcept; + ::std::experimental::io2d::font_weight font_weight() const noexcept; + ::std::experimental::io2d::font_options font_options() const noexcept; + matrix_2d font_matrix() const noexcept; + matrix_2d surface_matrix() const noexcept; }; - // I don't know why Clang/C2 is complaining about weak vtables here since the at least one virtual function is always anchored but for now silence the warnings. I've never seen this using Clang on OpenSUSE. -#ifdef _WIN32 -#ifdef __clang__ -#pragma clang diagnostic pop -#endif -#endif + //Forward declaration + class glyph_run; + class path_factory; - // I don't know why Clang/C2 is complaining about weak vtables here since the at least one virtual function is always anchored but for now silence the warnings. I've never seen this using Clang on OpenSUSE. -#ifdef _WIN32 -#ifdef __clang__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wweak-vtables" -#endif -#endif + class font_resource { + friend surface; + friend glyph_run; + friend path_factory; + + ::std::shared_ptr _Scaled_font; + ::std::shared_ptr<::std::string> _Font_family; + ::std::experimental::io2d::font_slant _Font_slant; + ::std::experimental::io2d::font_weight _Font_weight; + ::std::shared_ptr _Font_options; - class simple_font_face : public font_face { public: - simple_font_face() = delete; - simple_font_face(const simple_font_face&) noexcept = default; - simple_font_face& operator=(const simple_font_face&) noexcept = default; - simple_font_face(const ::std::string& family, ::std::experimental::io2d::font_slant fs, ::std::experimental::io2d::font_weight fw); - simple_font_face(const ::std::string& family, ::std::experimental::io2d::font_slant fs, ::std::experimental::io2d::font_weight fw, ::std::error_code& ec) noexcept; - simple_font_face(simple_font_face&& other) noexcept; - simple_font_face& operator=(simple_font_face&& other) noexcept; - virtual ~simple_font_face(); + font_resource() = delete; + font_resource(const font_resource&) noexcept = default; + font_resource& operator=(const font_resource&) noexcept = default; + font_resource(font_resource&&) noexcept = default; + font_resource& operator=(font_resource&&) noexcept = default; + explicit font_resource(const font_resource_factory& f); + font_resource(const font_resource_factory& f, ::std::error_code& ec) noexcept; // Observers ::std::string font_family() const; - void font_family(::std::string& str, ::std::error_code& ec) const noexcept; + ::std::string font_family(::std::error_code& ec) const noexcept; ::std::experimental::io2d::font_slant font_slant() const noexcept; ::std::experimental::io2d::font_weight font_weight() const noexcept; + ::std::experimental::io2d::font_options font_options() const noexcept; + matrix_2d font_matrix() const noexcept; + matrix_2d surface_matrix() const noexcept; + ::std::experimental::io2d::font_extents font_extents() const noexcept; + ::std::experimental::io2d::text_extents text_extents(const ::std::string& utf8) const noexcept; + glyph_run make_glyph_run(const ::std::string& utf8, const vector_2d& pos) const; + glyph_run make_glyph_run(const ::std::string& utf8, const vector_2d& pos, ::std::error_code& ec) const noexcept; }; - // I don't know why Clang/C2 is complaining about weak vtables here since the at least one virtual function is always anchored but for now silence the warnings. I've never seen this using Clang on OpenSUSE. -#ifdef _WIN32 -#ifdef __clang__ -#pragma clang diagnostic pop -#endif -#endif + class glyph_run { + friend font_resource; + friend surface; + friend path_factory; + + public: + class glyph { + friend glyph_run; + public: + typedef unsigned long index_type; // impldef + private: + index_type _Index = 0; + double _X = 0.0; + double _Y = 0.0; + cairo_glyph_t* _Native_glyph = nullptr; + public: + glyph() noexcept = default; + glyph(const glyph&) noexcept = default; + glyph& operator=(const glyph&) noexcept = default; + glyph(glyph&&) noexcept = default; + glyph& operator=(glyph&&) noexcept = default; + glyph(index_type i, double x, double y) noexcept; + + // Modifiers + void index(index_type i) noexcept; + void x(double val) noexcept; + void y(double val) noexcept; + + // Observers + index_type index() const noexcept; + double x() const noexcept; + double y() const noexcept; + }; + + class cluster { + friend glyph_run; + // Clusters are useful when dealing with ligatures and ordering in scripts that require complex text layout. + int _Glyph_count = 0; // Note: It's possible that processing could result in a cluster where one or more characters map to zero glyphs due to the previous or next cluster. + int _Byte_count = 0; // Note: UTF-8 is variable byte length. A single cluster can map to multiple characters. Lastly, it's possible that processing could result in a cluster with one or more glyphs map to zero characters due to the previous or next cluster. + cairo_text_cluster_t* _Native_cluster = nullptr; + public: + cluster() noexcept = default; + cluster(const cluster&) noexcept = default; + cluster& operator=(const cluster&) noexcept = default; + cluster(cluster&&) noexcept = default; + cluster& operator=(cluster&&) noexcept = default; + cluster(int glyphs, int bytes) noexcept; + + // Modifiers + void glyph_count(int count) noexcept; + void byte_count(int count) noexcept; + + // Observers + int glyph_count() const noexcept; + int byte_count() const noexcept; + }; + + private: + ::std::string _Text_string; + ::std::experimental::io2d::font_resource _Font_resource; + ::std::vector _Glyphs; + ::std::vector _Clusters; + ::std::shared_ptr _Cairo_glyphs; + ::std::shared_ptr _Cairo_text_clusters; + vector_2d _Position; + cairo_text_cluster_flags_t _Text_cluster_flags; + + glyph_run(const ::std::experimental::io2d::font_resource& fr, const ::std::string& utf8, const vector_2d& pos); + glyph_run(const ::std::experimental::io2d::font_resource& fr, const ::std::string& utf8, const vector_2d& pos, ::std::error_code& ec) noexcept; + + public: + glyph_run(const glyph_run&) = default; + glyph_run& operator=(const glyph_run&) = default; + glyph_run(glyph_run&&) noexcept = default; + glyph_run& operator=(glyph_run&&) noexcept = default; + + // Modifiers + ::std::vector& glyphs() noexcept; + ::std::vector& clusters() noexcept; + + // Observers + const ::std::string& original_text() const noexcept; + const ::std::vector& glyphs() const noexcept; + const ::std::vector& clusters() const noexcept; + const ::std::experimental::io2d::font_resource& font_resource() const noexcept; + bool reversed_clusters() const noexcept; + vector_2d position() const noexcept; + text_extents extents() const noexcept; + }; // Forward declaration. class linear_brush_factory; @@ -1825,10 +1868,7 @@ namespace std { ::std::experimental::io2d::path_factory _Immediate_path; typedef matrix_2d _Transform_matrix_type; _Transform_matrix_type _Transform_matrix; - ::std::shared_ptr<::std::experimental::io2d::font_face> _Font_face; - typedef matrix_2d _Font_matrix_type; - _Font_matrix_type _Font_matrix; // Covers both font size and full font matrix - font size is just a uniform scale matrix. - ::std::experimental::io2d::font_options _Font_options; + ::std::experimental::io2d::font_resource _Font_resource; // Relies on C++17 noexcept guarantee for vector default ctor (N4258, adopted 2014-11). ::std::stack<::std::tuple< @@ -1844,9 +1884,7 @@ namespace std { ::std::shared_ptr<::std::experimental::io2d::path>, ::std::experimental::io2d::path_factory, _Transform_matrix_type, - ::std::shared_ptr<::std::experimental::io2d::font_face>, - _Font_matrix_type, - ::std::experimental::io2d::font_options + ::std::experimental::io2d::font_resource >, ::std::vector<::std::tuple< ::std::experimental::io2d::brush, ::std::experimental::io2d::antialias, @@ -1860,9 +1898,7 @@ namespace std { ::std::shared_ptr<::std::experimental::io2d::path>, ::std::experimental::io2d::path_factory, _Transform_matrix_type, - ::std::shared_ptr<::std::experimental::io2d::font_face>, - _Font_matrix_type, - ::std::experimental::io2d::font_options>>> _Saved_state; + ::std::experimental::io2d::font_resource>>> _Saved_state; void _Ensure_state(); void _Ensure_state(::std::error_code& ec) noexcept; @@ -2028,21 +2064,30 @@ namespace std { vector_2d render_text(const ::std::string& utf8, const vector_2d& position, const ::std::experimental::io2d::brush& b, ::std::error_code& ec) noexcept; vector_2d render_text(const ::std::string& utf8, const vector_2d& position, const surface& s, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good); vector_2d render_text(const ::std::string& utf8, const vector_2d& position, const surface& s, ::std::error_code& ec, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good) noexcept; + void render_glyph_run(const glyph_run& gr); + void render_glyph_run(const glyph_run& gr, ::std::error_code& ec) noexcept; + void render_glyph_run(const glyph_run& gr, const rgba_color& c); + void render_glyph_run(const glyph_run& gr, const rgba_color& c, ::std::error_code& ec) noexcept; + void render_glyph_run(const glyph_run& gr, const ::std::experimental::io2d::brush& b); + void render_glyph_run(const glyph_run& gr, const ::std::experimental::io2d::brush& b, ::std::error_code& ec) noexcept; + void render_glyph_run(const glyph_run& gr, const surface& s, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good); + void render_glyph_run(const glyph_run& gr, const surface& s, ::std::error_code& ec, const matrix_2d& m = matrix_2d::init_identity(), extend e = extend::none, filter f = filter::good) noexcept; // \ref{\iotwod.surface.modifiers.transform}, transformation modifiers: void matrix(const matrix_2d& matrix); void matrix(const matrix_2d& matrix, ::std::error_code& ec) noexcept; // \ref{\iotwod.surface.modifiers.font}, font modifiers: - void font_face(const ::std::string& family, font_slant sl, font_weight w); - void font_face(const ::std::string& family, font_slant sl, font_weight w, ::std::error_code& ec) noexcept; - void font_face(const ::std::experimental::io2d::font_face& f); - void font_face(const ::std::experimental::io2d::font_face& f, ::std::error_code& ec) noexcept; - void font_size(double s); - void font_size(double s, ::std::error_code& ec) noexcept; - void font_matrix(const matrix_2d& m); - void font_matrix(const matrix_2d& m, ::std::error_code& ec) noexcept; - void font_options(const font_options& fo) noexcept; + void font_resource(const ::std::experimental::io2d::font_resource& f) noexcept; + void font_resource(const ::std::string& family, double size, font_slant sl = font_slant::normal, font_weight w = font_weight::normal); + void font_resource(const ::std::string& family, double size, ::std::error_code& ec, font_slant sl = font_slant::normal, font_weight w = font_weight::normal) noexcept; + //void font_face(const ::std::experimental::io2d::font_face& f); + //void font_face(const ::std::experimental::io2d::font_face& f, ::std::error_code& ec) noexcept; + //void font_size(double s); + //void font_size(double s, ::std::error_code& ec) noexcept; + //void font_matrix(const matrix_2d& m); + //void font_matrix(const matrix_2d& m, ::std::error_code& ec) noexcept; + //void font_options(const font_options& fo) noexcept; // \ref{\iotwod.surface.observers.state}, state observers: bool is_finished() const noexcept; @@ -2085,10 +2130,12 @@ namespace std { vector_2d surface_to_user_distance(const vector_2d& dpt, ::std::error_code& ec) const noexcept; // \ref{\iotwod.surface.observers.font}, font observers: - matrix_2d font_matrix() const noexcept; - ::std::experimental::io2d::font_options font_options() const noexcept; - ::std::experimental::io2d::font_face font_face() const; - ::std::experimental::io2d::font_face font_face(::std::error_code& ec) const noexcept; + ::std::experimental::io2d::font_resource font_resource() const noexcept; + + //matrix_2d font_matrix() const noexcept; + //::std::experimental::io2d::font_options font_options() const noexcept; + //::std::experimental::io2d::font_face font_face() const; + //::std::experimental::io2d::font_face font_face(::std::error_code& ec) const noexcept; }; // I don't know why Clang/C2 is complaining about weak vtables here since the at least one virtual function is always anchored but for now silence the warnings. I've never seen this using Clang on OpenSUSE. @@ -2394,23 +2441,23 @@ namespace std { }; #if _Variable_templates_conditional_support_test template - constexpr T pi = T(3.14159265358979323846264338327950288419716939937510L); + constexpr T pi = T(3.14159265358979323846264338327950288L); template - constexpr T two_pi = T(6.28318530717958647692528676655900576839433879875020L); + constexpr T two_pi = T(6.28318530717958647692528676655900576L); template - constexpr T half_pi = T(1.57079632679489661923132169163975144209858469968755L); + constexpr T half_pi = T(1.57079632679489661923132169163975144L); template - constexpr T three_pi_over_two = T(4.71238898038468985769396507491925432629575409906265L); + constexpr T three_pi_over_two = T(4.71238898038468985769396507491925432L); #else template #if _Constexpr_conditional_support_test constexpr #endif T pi() noexcept { - return static_cast(3.14159265358979323846264338327950288419716939937510L); + return static_cast(3.14159265358979323846264338327950288L); } template @@ -2418,7 +2465,7 @@ namespace std { constexpr #endif T two_pi() noexcept { - return static_cast(6.28318530717958647692528676655900576839433879875020L); + return static_cast(6.28318530717958647692528676655900576L); } template @@ -2426,7 +2473,7 @@ namespace std { constexpr #endif T half_pi() noexcept { - return static_cast(1.57079632679489661923132169163975144209858469968755L); + return static_cast(1.57079632679489661923132169163975144L); } template @@ -2434,7 +2481,7 @@ namespace std { constexpr #endif T three_pi_over_two() noexcept { - return static_cast(4.71238898038468985769396507491925432629575409906265L); + return static_cast(4.71238898038468985769396507491925432L); } #endif int format_stride_for_width(format format, int width) noexcept; diff --git a/io2d/include/xio2d.h b/io2d/include/xio2d.h index 176f66e..8b6143a 100644 --- a/io2d/include/xio2d.h +++ b/io2d/include/xio2d.h @@ -32,5 +32,5 @@ // Designed to be used to conditionally define compiler support for constexpr using a #if #define _Constexpr_conditional_support_test ((__cplusplus >= 201103L) || (_MSC_FULL_VER >= 190022203)) -#define _Variable_templates_conditional_support_test ((__cplusplus >= 201402L) || _MSC_FULL_VER > 190023506) +#define _Variable_templates_conditional_support_test ((__cplusplus >= 201402L) || _MSC_FULL_VER >= 190023918) #endif diff --git a/io2d/include/xio2dhelpers.h b/io2d/include/xio2dhelpers.h index d062102..54e7e1a 100644 --- a/io2d/include/xio2dhelpers.h +++ b/io2d/include/xio2dhelpers.h @@ -374,6 +374,93 @@ namespace std { rgba_color operator*(const rgba_color& lhs, double rhs); rgba_color operator*(double lhs, const rgba_color& rhs); rgba_color& operator*=(rgba_color& lhs, double rhs); + + inline ::std::vector _Cairo_path_data_t_array_to_path_data_item_vector(const cairo_path_t& cpt) { + ::std::vector vec; + _Throw_if_failed_cairo_status_t(cpt.status); + for (auto i = 0; i < cpt.num_data; i += cpt.data[i].header.length) { + auto type = cpt.data[i].header.type; + switch (type) + { + case CAIRO_PATH_CLOSE_PATH: + { + vec.emplace_back(path_data_item::close_path()); + } break; + case CAIRO_PATH_CURVE_TO: + { + vec.emplace_back(path_data_item::curve_to({ cpt.data[i + 1].point.x, cpt.data[i + 1].point.y }, { cpt.data[i + 2].point.x, cpt.data[i + 2].point.y }, { cpt.data[i + 3].point.x, cpt.data[i + 3].point.y })); + } break; + case CAIRO_PATH_LINE_TO: + { + vec.emplace_back(path_data_item::line_to({ cpt.data[i + 1].point.x, cpt.data[i + 1].point.y })); + } break; + case CAIRO_PATH_MOVE_TO: + { + vec.emplace_back(path_data_item::move_to({ cpt.data[i + 1].point.x, cpt.data[i + 1].point.y })); + } break; + default: + { + _Throw_if_failed_cairo_status_t(CAIRO_STATUS_INVALID_PATH_DATA); + } break; + } + } + + return vec; + } + + inline ::std::vector _Cairo_path_data_t_array_to_path_data_item_vector(const cairo_path_t& cpt, ::std::error_code& ec) noexcept { + ::std::vector vec; + ec = _Cairo_status_t_to_std_error_code(cpt.status); + if (static_cast(ec)) { + return vec; + } + ::std::vector::size_type reqSize{}; + for (auto i = 0; i < cpt.num_data; i += cpt.data[i].header.length) { + reqSize++; + } + try { + vec.reserve(reqSize); + } + catch (const ::std::length_error&) { + ec = ::std::make_error_code(::std::errc::not_enough_memory); + return vec; + } + catch (const ::std::bad_alloc&) { + ec = ::std::make_error_code(::std::errc::not_enough_memory); + return vec; + } + + for (auto i = 0; i < cpt.num_data; i += cpt.data[i].header.length) { + auto type = cpt.data[i].header.type; + switch (type) + { + case CAIRO_PATH_CLOSE_PATH: + { + vec.emplace_back(path_data_item::close_path()); + } break; + case CAIRO_PATH_CURVE_TO: + { + vec.emplace_back(path_data_item::curve_to({ cpt.data[i + 1].point.x, cpt.data[i + 1].point.y }, { cpt.data[i + 2].point.x, cpt.data[i + 2].point.y }, { cpt.data[i + 3].point.x, cpt.data[i + 3].point.y })); + } break; + case CAIRO_PATH_LINE_TO: + { + vec.emplace_back(path_data_item::line_to({ cpt.data[i + 1].point.x, cpt.data[i + 1].point.y })); + } break; + case CAIRO_PATH_MOVE_TO: + { + vec.emplace_back(path_data_item::move_to({ cpt.data[i + 1].point.x, cpt.data[i + 1].point.y })); + } break; + default: + { + ec = _Cairo_status_t_to_std_error_code(CAIRO_STATUS_INVALID_PATH_DATA); + return vec; + } break; + } + } + + ec.clear(); + return vec; + } #if _Inline_namespace_conditional_support_test } #endif diff --git a/io2d/src/CMakeLists.txt b/io2d/src/CMakeLists.txt index b9159c6..230d4b1 100644 --- a/io2d/src/CMakeLists.txt +++ b/io2d/src/CMakeLists.txt @@ -14,8 +14,10 @@ set(IO2D_SRC device.cpp display_surface-common.cpp font_extents.cpp - font_face.cpp + font_resource.cpp + font_resource_factory.cpp font_options.cpp + glyph_run.cpp image_surface.cpp io2d_error_category.cpp linear_brush_factory.cpp @@ -29,7 +31,6 @@ set(IO2D_SRC radial_brush_factory.cpp rectangle.cpp rgba_color.cpp - simple_font_face.cpp solid_color_brush_factory.cpp standalone_functions.cpp surface.cpp diff --git a/io2d/src/display_surface-common.cpp b/io2d/src/display_surface-common.cpp index e4f74a7..dbdadff 100644 --- a/io2d/src/display_surface-common.cpp +++ b/io2d/src/display_surface-common.cpp @@ -397,5 +397,5 @@ double display_surface::desired_frame_rate() const noexcept { } double display_surface::elapsed_draw_time() const noexcept { - return _Elapsed_draw_time; + return _Elapsed_draw_time / 1'000'000.0; } diff --git a/io2d/src/display_surface-win32.cpp b/io2d/src/display_surface-win32.cpp index 1e0d02c..a6bb82e 100644 --- a/io2d/src/display_surface-win32.cpp +++ b/io2d/src/display_surface-win32.cpp @@ -281,8 +281,8 @@ display_surface::display_surface(int preferredWidth, int preferredHeight, experi , _Window_style(WS_OVERLAPPEDWINDOW | WS_VISIBLE) , _Hwnd(nullptr) , _Refresh_rate(rr) - , _Redraw_requested(true) , _Desired_frame_rate(fps) + , _Redraw_requested(true) , _Native_surface(nullptr, &cairo_surface_destroy) , _Native_context(nullptr, &cairo_destroy) { call_once(_Window_class_registered_flag, _MyRegisterClass, static_cast(GetModuleHandleW(nullptr))); @@ -384,7 +384,7 @@ int display_surface::show() { while (msg.message != WM_QUIT) { auto currentTime = steady_clock::now(); - auto elapsedTimeIncrement = duration_cast(currentTime - previousTime).count() / 1000.0; + auto elapsedTimeIncrement = static_cast(duration_cast(currentTime - previousTime).count()); _Elapsed_draw_time += elapsedTimeIncrement; previousTime = currentTime; @@ -410,9 +410,11 @@ int display_surface::show() { if (_Refresh_rate == experimental::io2d::refresh_rate::as_needed) { redraw = _Redraw_requested.exchange(false, std::memory_order_acquire); } + + const auto desiredElapsed = 1'000'000'000.0 / _Desired_frame_rate; + if (_Refresh_rate == experimental::io2d::refresh_rate::fixed) { - // desiredElapsed is the amount of time, in milliseconds, that must have passed before we should redraw. - auto desiredElapsed = 1000.0 / _Desired_frame_rate; + // desiredElapsed is the amount of time, in nanoseconds, that must have passed before we should redraw. redraw = _Elapsed_draw_time >= desiredElapsed; } if (redraw) { @@ -428,7 +430,9 @@ int display_surface::show() { } _Render_to_native_surface(); if (_Refresh_rate == experimental::io2d::refresh_rate::fixed) { - _Elapsed_draw_time -= 1000.0 / _Desired_frame_rate; + while (_Elapsed_draw_time >= desiredElapsed) { + _Elapsed_draw_time -= desiredElapsed; + } } else { _Elapsed_draw_time = 0.0; diff --git a/io2d/src/display_surface-xlib.cpp b/io2d/src/display_surface-xlib.cpp index 1a59665..6279aaa 100644 --- a/io2d/src/display_surface-xlib.cpp +++ b/io2d/src/display_surface-xlib.cpp @@ -249,8 +249,8 @@ display_surface::display_surface(int preferredWidth, int preferredHeight, experi , _Wndw(None) , _Can_draw(false) , _Refresh_rate(rr) - , _Redraw_requested(true) , _Desired_frame_rate(fps) + , _Redraw_requested(true) , _Native_surface(nullptr, &cairo_surface_destroy) , _Native_context(nullptr, &cairo_destroy) { if (preferredDisplayWidth <= 0 || preferredDisplayHeight <= 0 || preferredWidth <= 0 || preferredHeight <= 0 || preferredFormat == experimental::io2d::format::invalid) { @@ -319,7 +319,7 @@ int display_surface::show() { _Elapsed_draw_time = 0.0; while (!exit) { auto currentTime = steady_clock::now(); - auto elapsedTimeIncrement = duration_cast(currentTime - previousTime).count() / 1000.0; + auto elapsedTimeIncrement = static_cast(duration_cast(currentTime - previousTime).count()); _Elapsed_draw_time += elapsedTimeIncrement; previousTime = currentTime; @@ -500,9 +500,11 @@ int display_surface::show() { if (_Refresh_rate == experimental::io2d::refresh_rate::as_needed) { redraw = _Redraw_requested.exchange(false, std::memory_order_acquire); } + + auto desiredElapsed = 1'000'000'000.0 / _Desired_frame_rate; + if (_Refresh_rate == experimental::io2d::refresh_rate::fixed) { - // desiredElapsed is the amount of time, in milliseconds, that must have passed before we should redraw. - auto desiredElapsed = 1000.0 / _Desired_frame_rate; + // desiredElapsed is the amount of time, in nanoseconds, that must have passed before we should redraw. redraw = _Elapsed_draw_time >= desiredElapsed; } if (redraw) { @@ -518,7 +520,9 @@ int display_surface::show() { } _Render_to_native_surface(); if (_Refresh_rate == experimental::io2d::refresh_rate::fixed) { - _Elapsed_draw_time -= 1000.0 / _Desired_frame_rate; + while (_Elapsed_draw_time >= desiredElapsed) { + _Elapsed_draw_time -= desiredElapsed; + } } else { _Elapsed_draw_time = 0.0; diff --git a/io2d/src/font_face.cpp b/io2d/src/font_face.cpp deleted file mode 100644 index 851fd88..0000000 --- a/io2d/src/font_face.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include "io2d.h" -#include "xio2dhelpers.h" - -using namespace std; -using namespace std::experimental::io2d; - -font_face::native_handle_type font_face::native_handle() const noexcept { - return _Font_face.get(); -} - -font_face::font_face(font_face&& other) noexcept { - _Font_face = move(other._Font_face); - other._Font_face = nullptr; -} - -font_face& font_face::operator=(font_face&& other) noexcept { - if (this != &other) { - _Font_face = move(other._Font_face); - other._Font_face = nullptr; - } - return *this; -} - -font_face::font_face(font_face::native_handle_type nh) { - _Font_face = shared_ptr(nh, &cairo_font_face_destroy); -} - -font_face::font_face(font_face::native_handle_type nh, error_code& ec) noexcept { - try { - _Font_face = shared_ptr(nh, &cairo_font_face_destroy); - } - catch (const bad_alloc&) { - ec = make_error_code(errc::not_enough_memory); - } - catch (const exception&) { - ec = make_error_code(errc::resource_unavailable_try_again); - } - ec.clear(); -} - -font_face::~font_face() { -} diff --git a/io2d/src/font_resource.cpp b/io2d/src/font_resource.cpp new file mode 100644 index 0000000..b68428b --- /dev/null +++ b/io2d/src/font_resource.cpp @@ -0,0 +1,162 @@ +#include "io2d.h" +#include "xio2dhelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::io2d; + +font_resource::font_resource(const font_resource_factory& f) + : _Scaled_font() + , _Font_family() + , _Font_slant(f.font_slant()) + , _Font_weight(f.font_weight()) + , _Font_options() { + cairo_matrix_t fm{ f.font_matrix().m00(), f.font_matrix().m01(), f.font_matrix().m10(), f.font_matrix().m11(), f.font_matrix().m20(), f.font_matrix().m21() }; + cairo_matrix_t sm{ f.surface_matrix().m00(), f.surface_matrix().m01(), f.surface_matrix().m10(), f.surface_matrix().m11(), f.surface_matrix().m20(), f.surface_matrix().m21() }; + auto fo = cairo_font_options_create(); + _Throw_if_failed_cairo_status_t(cairo_font_options_status(fo)); + _Font_options = shared_ptr(fo, &cairo_font_options_destroy); + cairo_font_options_set_antialias(fo, _Antialias_to_cairo_antialias_t(f.font_options().antialias())); + cairo_font_options_set_subpixel_order(fo, _Subpixel_order_to_cairo_subpixel_order_t(f.font_options().subpixel_order())); + _Font_family = make_shared(f.font_family()); + _Throw_if_failed_cairo_status_t(cairo_font_options_status(fo)); + auto sf = cairo_scaled_font_create(cairo_toy_font_face_create(f.font_family().c_str(), _Font_slant_to_cairo_font_slant_t(f.font_slant()), + _Font_weight_to_cairo_font_weight_t(f.font_weight())), &fm, &sm, fo); + _Scaled_font = shared_ptr(sf, &cairo_scaled_font_destroy); + _Throw_if_failed_cairo_status_t(cairo_scaled_font_status(sf)); +} + +font_resource::font_resource(const font_resource_factory& f, error_code& ec) noexcept + : _Scaled_font() + , _Font_family() + , _Font_slant(f.font_slant()) + , _Font_weight(f.font_weight()) + , _Font_options() { + cairo_matrix_t fm{ f.font_matrix().m00(), f.font_matrix().m01(), f.font_matrix().m10(), f.font_matrix().m11(), f.font_matrix().m20(), f.font_matrix().m21() }; + cairo_matrix_t sm{ f.surface_matrix().m00(), f.surface_matrix().m01(), f.surface_matrix().m10(), f.surface_matrix().m11(), f.surface_matrix().m20(), f.surface_matrix().m21() }; + auto fo = cairo_font_options_create(); + + ec = _Cairo_status_t_to_std_error_code(cairo_font_options_status(fo)); + if (static_cast(ec)) { + return; + } + + try { + _Font_options = shared_ptr(fo, &cairo_font_options_destroy); + } + catch (const bad_alloc&) { + ec = make_error_code(errc::not_enough_memory); + return; + } + catch (...) { + ec = make_error_code(io2d_error::invalid_status); + return; + } + cairo_font_options_set_antialias(fo, _Antialias_to_cairo_antialias_t(f.font_options().antialias())); + cairo_font_options_set_subpixel_order(fo, _Subpixel_order_to_cairo_subpixel_order_t(f.font_options().subpixel_order())); + + ec = _Cairo_status_t_to_std_error_code(cairo_font_options_status(fo)); + if (static_cast(ec)) { + return; + } + + try { + _Font_family = make_shared(f.font_family(ec)); + if (static_cast(ec)) { + return; + } + } + catch (const bad_alloc&) { + ec = make_error_code(errc::not_enough_memory); + return; + } + catch (...) { + ec = make_error_code(io2d_error::invalid_status); + return; + } + + if (static_cast(ec)) { + return; + } + + auto sf = cairo_scaled_font_create(cairo_toy_font_face_create(f.font_family().c_str(), _Font_slant_to_cairo_font_slant_t(f.font_slant()), + _Font_weight_to_cairo_font_weight_t(f.font_weight())), &fm, &sm, fo); + ec = _Cairo_status_t_to_std_error_code(cairo_scaled_font_status(sf)); + if (static_cast(ec)) { + return; + } + try { + _Scaled_font = shared_ptr(sf, &cairo_scaled_font_destroy); + } + catch (const bad_alloc&) { + ec = make_error_code(errc::not_enough_memory); + return; + } + catch (...) { + ec = make_error_code(io2d_error::invalid_status); + return; + } + ec.clear(); +} + +string font_resource::font_family() const { + return *_Font_family.get(); +} + +string font_resource::font_family(error_code& ec) const noexcept { + ::std::string s; + try { + s = *_Font_family.get(); + } + catch (const ::std::bad_alloc&) { + ec = make_error_code(errc::not_enough_memory); + return s; + } + catch (const ::std::length_error&) { + ec = make_error_code(errc::not_enough_memory); + return s; + } + ec.clear(); + return s; +} + +experimental::io2d::font_slant font_resource::font_slant() const noexcept { + return _Font_slant; +} + +experimental::io2d::font_weight font_resource::font_weight() const noexcept { + return _Font_weight; +} + +experimental::io2d::font_options font_resource::font_options() const noexcept { + return ::std::experimental::io2d::font_options(_Cairo_antialias_t_to_antialias(cairo_font_options_get_antialias(_Font_options.get())), + _Cairo_subpixel_order_t_to_subpixel_order(cairo_font_options_get_subpixel_order(_Font_options.get()))); +} + +matrix_2d font_resource::font_matrix() const noexcept { + cairo_matrix_t cm; + cairo_scaled_font_get_font_matrix(_Scaled_font.get(), &cm); + return matrix_2d(cm.xx, cm.xy, cm.yx, cm.yy, cm.x0, cm.y0); +} + +matrix_2d font_resource::surface_matrix() const noexcept { + cairo_matrix_t cm; + cairo_scaled_font_get_ctm(_Scaled_font.get(), &cm); + return matrix_2d(cm.xx, cm.xy, cm.yx, cm.yy, cm.x0, cm.y0); +} + +experimental::io2d::font_extents font_resource::font_extents() const noexcept { + cairo_font_extents_t fe; + cairo_scaled_font_extents(_Scaled_font.get(), &fe); + return experimental::io2d::font_extents(fe.ascent, fe.descent, fe.height); +} + +experimental::io2d::text_extents font_resource::text_extents(const string& utf8) const noexcept { + cairo_text_extents_t cte{}; + cairo_scaled_font_text_extents(_Scaled_font.get(), utf8.c_str(), &cte); + return experimental::io2d::text_extents(cte.x_bearing, cte.y_bearing, cte.width, cte.height, cte.x_advance, cte.y_advance); +} + +glyph_run font_resource::make_glyph_run(const string& utf8, const vector_2d& pos) const { + return glyph_run(*this, utf8, pos); +} diff --git a/io2d/src/font_resource_factory.cpp b/io2d/src/font_resource_factory.cpp new file mode 100644 index 0000000..4fb2a10 --- /dev/null +++ b/io2d/src/font_resource_factory.cpp @@ -0,0 +1,200 @@ +#include "io2d.h" +#include "xio2dhelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::io2d; + +font_resource_factory::font_resource_factory(const ::std::string& family, ::std::experimental::io2d::font_slant fs, ::std::experimental::io2d::font_weight fw, + const ::std::experimental::io2d::matrix_2d& fm, const ::std::experimental::io2d::font_options& fo, const ::std::experimental::io2d::matrix_2d& sm) + : _Family() + , _Font_slant(fs) + , _Font_weight(fw) + , _Font_options(fo) + , _Font_matrix(fm) + , _Surface_matrix(sm) { + // This logic exists to get the name of the font family that the system actually chose rather than just returning the requested family to the user. + auto font = cairo_toy_font_face_create(family.c_str(), _Font_slant_to_cairo_font_slant_t(fs), _Font_weight_to_cairo_font_weight_t(fw)); + unique_ptr ff(font, &cairo_font_face_destroy); + _Throw_if_failed_cairo_status_t(cairo_font_face_status(font)); + _Family = cairo_toy_font_face_get_family(font); +} + +font_resource_factory::font_resource_factory(const ::std::string& family, + error_code& ec, ::std::experimental::io2d::font_slant fs, ::std::experimental::io2d::font_weight fw, const ::std::experimental::io2d::matrix_2d& fm, + const ::std::experimental::io2d::font_options& fo, const ::std::experimental::io2d::matrix_2d& sm) noexcept + : _Family() + , _Font_slant(fs) + , _Font_weight(fw) + , _Font_options(fo) + , _Font_matrix(fm) + , _Surface_matrix(sm) { + auto font = cairo_toy_font_face_create(family.c_str(), _Font_slant_to_cairo_font_slant_t(fs), _Font_weight_to_cairo_font_weight_t(fw)); + unique_ptr ff(font, &cairo_font_face_destroy); + ec = _Cairo_status_t_to_std_error_code(cairo_font_face_status(font)); + if (static_cast(ec)) { + return; + } + ::std::string s; + try { + s = cairo_toy_font_face_get_family(font); + } + catch (const ::std::bad_alloc&) { + ec = make_error_code(errc::not_enough_memory); + return; + } + catch (const ::std::length_error&) { + ec = make_error_code(errc::not_enough_memory); + return; + } + _Family = move(s); + ec.clear(); +} + +void font_resource_factory::font_family(const string& f) { + auto font = cairo_toy_font_face_create(f.c_str(), _Font_slant_to_cairo_font_slant_t(_Font_slant), _Font_weight_to_cairo_font_weight_t(_Font_weight)); + unique_ptr ff(font, &cairo_font_face_destroy); + _Throw_if_failed_cairo_status_t(cairo_font_face_status(font)); + _Family = cairo_toy_font_face_get_family(font); +} + +void font_resource_factory::font_family(const string& f, error_code& ec) noexcept { + auto font = cairo_toy_font_face_create(f.c_str(), _Font_slant_to_cairo_font_slant_t(_Font_slant), _Font_weight_to_cairo_font_weight_t(_Font_weight)); + unique_ptr ff(font, &cairo_font_face_destroy); + ec = _Cairo_status_t_to_std_error_code(cairo_font_face_status(font)); + if (static_cast(ec)) { + return; + } + ::std::string s; + try { + s = cairo_toy_font_face_get_family(font); + } + catch (const ::std::bad_alloc&) { + ec = make_error_code(errc::not_enough_memory); + return; + } + catch (const ::std::length_error&) { + ec = make_error_code(errc::not_enough_memory); + return; + } + _Family = move(s); + ec.clear(); +} + +void font_resource_factory::font_slant(const ::std::experimental::io2d::font_slant fs) { + _Font_slant = fs; + auto font = cairo_toy_font_face_create(_Family.c_str(), _Font_slant_to_cairo_font_slant_t(_Font_slant), _Font_weight_to_cairo_font_weight_t(_Font_weight)); + unique_ptr ff(font, &cairo_font_face_destroy); + _Throw_if_failed_cairo_status_t(cairo_font_face_status(font)); + _Family = cairo_toy_font_face_get_family(font); +} + +void font_resource_factory::font_slant(const ::std::experimental::io2d::font_slant fs, ::std::error_code& ec) noexcept { + auto font = cairo_toy_font_face_create(_Family.c_str(), _Font_slant_to_cairo_font_slant_t(fs), _Font_weight_to_cairo_font_weight_t(_Font_weight)); + unique_ptr ff(font, &cairo_font_face_destroy); + ec = _Cairo_status_t_to_std_error_code(cairo_font_face_status(font)); + if (static_cast(ec)) { + return; + } + ::std::string s; + try { + s = cairo_toy_font_face_get_family(font); + } + catch (const ::std::bad_alloc&) { + ec = make_error_code(errc::not_enough_memory); + return; + } + catch (const ::std::length_error&) { + ec = make_error_code(errc::not_enough_memory); + return; + } + _Family = move(s); + _Font_slant = fs; + ec.clear(); +} + +void font_resource_factory::font_weight(::std::experimental::io2d::font_weight fw) { + auto font = cairo_toy_font_face_create(_Family.c_str(), _Font_slant_to_cairo_font_slant_t(_Font_slant), _Font_weight_to_cairo_font_weight_t(fw)); + unique_ptr ff(font, &cairo_font_face_destroy); + _Throw_if_failed_cairo_status_t(cairo_font_face_status(font)); + ::std::string s(cairo_toy_font_face_get_family(font)); + _Family = move(s); + _Font_weight = fw; +} + +void font_resource_factory::font_weight(::std::experimental::io2d::font_weight fw, ::std::error_code& ec) noexcept { + auto font = cairo_toy_font_face_create(_Family.c_str(), _Font_slant_to_cairo_font_slant_t(_Font_slant), _Font_weight_to_cairo_font_weight_t(fw)); + unique_ptr ff(font, &cairo_font_face_destroy); + ec = _Cairo_status_t_to_std_error_code(cairo_font_face_status(font)); + if (static_cast(ec)) { + return; + } + ::std::string s; + try { + s = cairo_toy_font_face_get_family(font); + } + catch (const ::std::bad_alloc&) { + ec = make_error_code(errc::not_enough_memory); + return; + } + catch (const ::std::length_error&) { + ec = make_error_code(errc::not_enough_memory); + return; + } + _Family = move(s); + _Font_weight = fw; + ec.clear(); +} + +void font_resource_factory::font_options(const ::std::experimental::io2d::font_options& fo) noexcept { + _Font_options = fo; +} + +void font_resource_factory::font_matrix(const matrix_2d& m) noexcept { + _Font_matrix = m; +} + +void font_resource_factory::surface_matrix(const matrix_2d & m) noexcept { + _Surface_matrix = m; +} + +::std::string font_resource_factory::font_family() const { + return _Family; +} + +::std::string font_resource_factory::font_family(::std::error_code& ec) const noexcept { + ::std::string s; + try { + s = _Family; + } + catch (const ::std::bad_alloc&) { + ec = make_error_code(errc::not_enough_memory); + return s; + } + catch (const ::std::length_error&) { + ec = make_error_code(errc::not_enough_memory); + return s; + } + ec.clear(); + return s; +} + +::std::experimental::io2d::font_slant font_resource_factory::font_slant() const noexcept { + return _Font_slant; +} + +::std::experimental::io2d::font_weight font_resource_factory::font_weight() const noexcept { + return _Font_weight; +} + +::std::experimental::io2d::font_options font_resource_factory::font_options() const noexcept { + return _Font_options; +} + +matrix_2d font_resource_factory::font_matrix() const noexcept { + return _Font_matrix; +} + +matrix_2d font_resource_factory::surface_matrix() const noexcept { + return _Surface_matrix; +} diff --git a/io2d/src/glyph_run.cpp b/io2d/src/glyph_run.cpp new file mode 100644 index 0000000..ed3dda5 --- /dev/null +++ b/io2d/src/glyph_run.cpp @@ -0,0 +1,170 @@ +#include "io2d.h" +#include "xio2dhelpers.h" +#include "xcairoenumhelpers.h" + +using namespace std; +using namespace std::experimental::io2d; + +glyph_run::glyph::glyph(glyph_run::glyph::index_type i, double x, double y) noexcept + : _Index(i) + , _X(x) + , _Y(y) + , _Native_glyph(nullptr) { +} + +void glyph_run::glyph::index(index_type i) noexcept { + _Index = i; + if (_Native_glyph != nullptr) { + (*_Native_glyph).index = i; + } +} + +void glyph_run::glyph::x(double val) noexcept { + _X = val; + if (_Native_glyph != nullptr) { + (*_Native_glyph).x = val; + } +} + +void glyph_run::glyph::y(double val) noexcept { + _Y = val; + if (_Native_glyph != nullptr) { + (*_Native_glyph).y = val; + } +} + +glyph_run::glyph::index_type glyph_run::glyph::index() const noexcept { + return _Index; +} + +double glyph_run::glyph::x() const noexcept { + return _X; +} + +double glyph_run::glyph::y() const noexcept { + return _Y; +} + +glyph_run::cluster::cluster(int glyphs, int bytes) noexcept + : _Glyph_count(glyphs) + , _Byte_count(bytes) + , _Native_cluster(nullptr) { +} + +void glyph_run::cluster::glyph_count(int count) noexcept { + _Glyph_count = count; + if (_Native_cluster != nullptr) { + (*_Native_cluster).num_glyphs = count; + } +} + +void glyph_run::cluster::byte_count(int count) noexcept { + _Byte_count = count; + if (_Native_cluster != nullptr) { + (*_Native_cluster).num_bytes = count; + } +} + +int glyph_run::cluster::glyph_count() const noexcept { + return _Glyph_count; +} + +int glyph_run::cluster::byte_count() const noexcept { + return _Byte_count; +} + +glyph_run::glyph_run(const experimental::io2d::font_resource& fr, const ::std::string& utf8, const vector_2d& pos) + : _Text_string(utf8) + , _Font_resource(fr) + , _Glyphs() + , _Clusters() + , _Cairo_glyphs() + , _Cairo_text_clusters() + , _Position(pos) + , _Text_cluster_flags() { + //unique_ptr upcgt(nullptr, &cairo_glyph_free); + //unique_ptr upctc(nullptr, &cairo_text_cluster_free); + + cairo_glyph_t* cgt = nullptr; + int cgtCount = 0; + cairo_text_cluster_t* ctc = nullptr; + int ctcCount = 0; + auto status = cairo_scaled_font_text_to_glyphs(fr._Scaled_font.get(), pos.x(), pos.y(), utf8.c_str(), -1, &cgt, &cgtCount, &ctc, &ctcCount, &_Text_cluster_flags); + //upcgt.reset(cgt); + //upctc.reset(ctc); + try { + _Cairo_glyphs.reset(cgt, &cairo_glyph_free); + } + catch (...) { + cairo_text_cluster_free(ctc); + throw; + } + + _Cairo_text_clusters.reset(ctc, &cairo_text_cluster_free); + + //if (status != CAIRO_STATUS_SUCCESS) { + // if (cgt != nullptr) { + // cairo_glyph_free(cgt); + // } + // if (ctc != nullptr) { + // cairo_text_cluster_free(ctc); + // } + // _Throw_if_failed_cairo_status_t(status); + //} + + _Throw_if_failed_cairo_status_t(status); + + _Glyphs.reserve(static_cast::size_type>(cgtCount)); + + _Clusters.reserve(static_cast::size_type>(ctcCount)); + + for (int i = 0; i < cgtCount; ++i) { + const auto& val = cgt[i]; + _Glyphs.emplace_back(static_cast(val.index), val.x, val.y); + _Glyphs.rbegin()->_Native_glyph = cgt + i;//&(cgt[i]); + } + + for (int i = 0; i < ctcCount; ++i) { + const auto& val = ctc[i]; + _Clusters.emplace_back(val.num_glyphs, val.num_bytes); + _Clusters.rbegin()->_Native_cluster = ctc + i; + } +} + +vector& glyph_run::glyphs() noexcept { + return _Glyphs; +} + +vector& glyph_run::clusters() noexcept { + return _Clusters; +} + +const string& glyph_run::original_text() const noexcept { + return _Text_string; +} + +const vector& glyph_run::glyphs() const noexcept { + return _Glyphs; +} + +const vector& glyph_run::clusters() const noexcept { + return _Clusters; +} + +const experimental::io2d::font_resource& glyph_run::font_resource() const noexcept { + return _Font_resource; +} + +bool glyph_run::reversed_clusters() const noexcept { + return (_Text_cluster_flags & CAIRO_TEXT_CLUSTER_FLAG_BACKWARD) != 0; +} + +vector_2d glyph_run::position() const noexcept { + return _Position; +} + +text_extents glyph_run::extents() const noexcept { + cairo_text_extents_t cte{}; + cairo_scaled_font_glyph_extents(_Font_resource._Scaled_font.get(), _Cairo_glyphs.get(), static_cast(_Glyphs.size()), &cte); + return text_extents(cte.x_bearing, cte.y_bearing, cte.width, cte.height, cte.x_advance, cte.y_advance); +} diff --git a/io2d/src/image_surface.cpp b/io2d/src/image_surface.cpp index 903d1ef..5610b58 100644 --- a/io2d/src/image_surface.cpp +++ b/io2d/src/image_surface.cpp @@ -61,7 +61,9 @@ image_surface::image_surface(vector& data, experimental::io2d::fo if (imageData == nullptr) { _Throw_if_failed_cairo_status_t(CAIRO_STATUS_NULL_POINTER); } - ::std::memcpy(imageData, data.data(), expected_size); + else { + ::std::memcpy(imageData, data.data(), expected_size); + } cairo_surface_mark_dirty(_Surface.get()); _Throw_if_failed_cairo_status_t(cairo_surface_status(_Surface.get())); cairo_set_miter_limit(_Context.get(), _Line_join_miter_miter_limit); @@ -85,7 +87,9 @@ void image_surface::data(const vector& data) { if (imageData == nullptr) { _Throw_if_failed_cairo_status_t(CAIRO_STATUS_NULL_POINTER); } - ::std::memcpy(imageData, data.data(), expected_size); + else { + ::std::memcpy(imageData, data.data(), expected_size); + } cairo_surface_mark_dirty(_Surface.get()); } diff --git a/io2d/src/path_factory.cpp b/io2d/src/path_factory.cpp index 94cf3f4..0b70992 100644 --- a/io2d/src/path_factory.cpp +++ b/io2d/src/path_factory.cpp @@ -992,3 +992,39 @@ void path_factory::clear() noexcept { _Origin = { }; } +void path_factory::add_text(const font_resource& fr, const string& utf8, const vector_2d& pt) { + auto gr = fr.make_glyph_run(utf8, pt); + auto ext = gr.extents(); + double w = ext.width(); + double h = ext.height(); + cairo_matrix_t cm{}; + cairo_matrix_init_translate(&cm, -(pt.x() + ext.x_bearing()), -(pt.y() + ext.y_bearing())); + unique_ptr upimgSfc( + cairo_image_surface_create(CAIRO_FORMAT_ARGB32, _Double_to_int(w + 0.5), _Double_to_int(h + 0.5)), &cairo_surface_destroy + ); + unique_ptr upctxt(cairo_create(upimgSfc.get()), &cairo_destroy); + cairo_set_matrix(upctxt.get(), &cm); + cairo_new_path(upctxt.get()); + cairo_set_scaled_font(upctxt.get(), fr._Scaled_font.get()); + cairo_glyph_path(upctxt.get(), gr._Cairo_glyphs.get(), static_cast(gr.glyphs().size())); + unique_ptr uppth(cairo_copy_path(upctxt.get()), &cairo_path_destroy); + append(_Cairo_path_data_t_array_to_path_data_item_vector(*(uppth.get()))); +} + +void path_factory::add_glyph_run(const font_resource& fr, const glyph_run& gr) { + auto ext = gr.extents(); + double w = ext.width(); + double h = ext.height(); + cairo_matrix_t cm{}; + cairo_matrix_init_translate(&cm, -(gr.position().x() + ext.x_bearing()), -(gr.position().y() + ext.y_bearing())); + unique_ptr upimgSfc( + cairo_image_surface_create(CAIRO_FORMAT_ARGB32, _Double_to_int(w + 0.5), _Double_to_int(h + 0.5)), &cairo_surface_destroy + ); + unique_ptr upctxt(cairo_create(upimgSfc.get()), &cairo_destroy); + cairo_set_matrix(upctxt.get(), &cm); + cairo_new_path(upctxt.get()); + cairo_set_scaled_font(upctxt.get(), fr._Scaled_font.get()); + cairo_glyph_path(upctxt.get(), gr._Cairo_glyphs.get(), static_cast(gr.glyphs().size())); + unique_ptr uppth(cairo_copy_path(upctxt.get()), &cairo_path_destroy); + append(_Cairo_path_data_t_array_to_path_data_item_vector(*(uppth.get()))); +} diff --git a/io2d/src/simple_font_face.cpp b/io2d/src/simple_font_face.cpp deleted file mode 100644 index bd725a5..0000000 --- a/io2d/src/simple_font_face.cpp +++ /dev/null @@ -1,68 +0,0 @@ -#include "io2d.h" -#include "xio2dhelpers.h" -#include "xcairoenumhelpers.h" - -using namespace std; -using namespace std::experimental::io2d; - -simple_font_face::simple_font_face(const string& family, ::std::experimental::io2d::font_slant fs, ::std::experimental::io2d::font_weight fw) - : font_face(nullptr) { - _Font_face = shared_ptr(cairo_toy_font_face_create(family.c_str(), _Font_slant_to_cairo_font_slant_t(fs), _Font_weight_to_cairo_font_weight_t(fw)), &cairo_font_face_destroy); -} - -simple_font_face::simple_font_face(const string& family, ::std::experimental::io2d::font_slant fs, ::std::experimental::io2d::font_weight fw, error_code& ec) noexcept - : font_face(nullptr, ec) { - if (static_cast(ec)) { - return; - } - try { - _Font_face = shared_ptr(cairo_toy_font_face_create(family.c_str(), _Font_slant_to_cairo_font_slant_t(fs), _Font_weight_to_cairo_font_weight_t(fw)), &cairo_font_face_destroy); - } - catch (const bad_alloc&) { - ec = make_error_code(errc::not_enough_memory); - } - ec.clear(); -} - -simple_font_face::simple_font_face(simple_font_face&& other) noexcept : font_face(nullptr) { - _Font_face = move(other._Font_face); - other._Font_face = nullptr; -} - -simple_font_face& simple_font_face::operator=(simple_font_face&& other) noexcept { - if (this != &other) { - _Font_face = move(other._Font_face); - other._Font_face = nullptr; - } - return *this; -} - -simple_font_face::~simple_font_face() { -} - -string simple_font_face::font_family() const { - return string(cairo_toy_font_face_get_family(_Font_face.get())); -} - -void simple_font_face::font_family(string& str, error_code& ec) const noexcept { - try { - ec.clear(); - str = string(cairo_toy_font_face_get_family(_Font_face.get())); - } - catch (const length_error&) { - str.clear(); - ec = make_error_code(errc::not_enough_memory); - } - catch (const bad_alloc&) { - str.clear(); - ec = make_error_code(errc::not_enough_memory); - } -} - -::std::experimental::io2d::font_slant simple_font_face::font_slant() const noexcept { - return _Cairo_font_slant_t_to_font_slant(cairo_toy_font_face_get_slant(_Font_face.get())); -} - -::std::experimental::io2d::font_weight simple_font_face::font_weight() const noexcept { - return _Cairo_font_weight_t_to_font_weight(cairo_toy_font_face_get_weight(_Font_face.get())); -} diff --git a/io2d/src/surface.cpp b/io2d/src/surface.cpp index 4d1434e..03c3345 100644 --- a/io2d/src/surface.cpp +++ b/io2d/src/surface.cpp @@ -30,14 +30,7 @@ void surface::_Ensure_state() { cairo_new_path(_Context.get()); } matrix(_Transform_matrix); - if (_Font_face.get() != nullptr) { - font_face(*_Font_face); - } - else { - cairo_set_font_face(_Context.get(), nullptr); // Restore default font. - } - font_matrix(_Font_matrix); - font_options(_Font_options); + font_resource(_Font_resource); } void surface::_Ensure_state(error_code& ec) noexcept { @@ -66,21 +59,11 @@ void surface::_Ensure_state(error_code& ec) noexcept { cairo_new_path(_Context.get()); } matrix(_Transform_matrix); - if (_Font_face.get() != nullptr) { - font_face(*_Font_face, ec); - if (static_cast(ec)) { - return; - } - } - else { - cairo_set_font_face(_Context.get(), nullptr); // Restore default font. - } - font_matrix(_Font_matrix); - font_options(_Font_options); dashes(_Dashes, ec); if (static_cast(ec)) { return; } + font_resource(_Font_resource); ec.clear(); } @@ -104,9 +87,7 @@ surface::surface(format fmt, int width, int height) , _Current_path() , _Immediate_path() , _Transform_matrix(matrix_2d::init_identity()) - , _Font_face() - , _Font_matrix(matrix_2d::init_scale(_Font_default_size)) - , _Font_options(::std::experimental::io2d::antialias::default_antialias, ::std::experimental::io2d::subpixel_order::default_subpixel_order) + , _Font_resource(font_resource_factory()) , _Saved_state() { _Throw_if_failed_cairo_status_t(cairo_surface_status(_Surface.get())); _Throw_if_failed_cairo_status_t(cairo_status(_Context.get())); @@ -138,9 +119,7 @@ surface::surface(surface&& other) noexcept , _Current_path(move(other._Current_path)) , _Immediate_path(move(other._Immediate_path)) , _Transform_matrix(move(other._Transform_matrix)) - , _Font_face(move(other._Font_face)) - , _Font_matrix(move(other._Font_matrix)) - , _Font_options(move(other._Font_options)) + , _Font_resource(move(other._Font_resource)) , _Saved_state(move(other._Saved_state)) { } @@ -163,9 +142,7 @@ surface& surface::operator=(surface&& other) noexcept { _Current_path = move(other._Current_path); _Immediate_path = move(other._Immediate_path); _Transform_matrix = move(other._Transform_matrix); - _Font_face = move(other._Font_face); - _Font_matrix = move(other._Font_matrix); - _Font_options = move(other._Font_options); + _Font_resource = move(other._Font_resource); _Saved_state = move(other._Saved_state); } return *this; @@ -191,13 +168,18 @@ surface::surface(surface::native_handle_type nh, ::std::experimental::io2d::form , _Current_path() , _Immediate_path() , _Transform_matrix() - , _Font_face() - , _Font_matrix(matrix_2d::init_scale(_Font_default_size)) - , _Font_options(::std::experimental::io2d::antialias::default_antialias, ::std::experimental::io2d::subpixel_order::default_subpixel_order) + , _Font_resource(font_resource_factory()) , _Saved_state() { if (nh.csfce != nullptr) { _Throw_if_failed_cairo_status_t(cairo_surface_status(_Surface.get())); _Throw_if_failed_cairo_status_t(cairo_status(_Context.get())); + auto pf = path_factory{}; + unique_ptr upcpt{ cairo_copy_path(_Context.get()), &cairo_path_destroy }; + if (upcpt.get() == nullptr) { + _Throw_if_failed_cairo_status_t(CAIRO_STATUS_NULL_POINTER); + } + pf.append(_Cairo_path_data_t_array_to_path_data_item_vector(*(upcpt.get()))); + _Current_path = make_shared(pf); _Ensure_state(); } _Throw_if_failed_cairo_status_t(cairo_font_options_status(_Native_font_options.get())); @@ -225,9 +207,7 @@ surface::surface(surface::native_handle_type nh, ::std::experimental::io2d::form , _Current_path() , _Immediate_path() , _Transform_matrix(matrix_2d::init_identity()) - , _Font_face() - , _Font_matrix(matrix_2d::init_scale(_Font_default_size)) - , _Font_options(::std::experimental::io2d::antialias::default_antialias, ::std::experimental::io2d::subpixel_order::default_subpixel_order) + , _Font_resource(font_resource_factory()) , _Saved_state() { if (nh.csfce != nullptr) { if (static_cast(ec)) { @@ -290,9 +270,7 @@ surface::surface(const surface& other, ::std::experimental::io2d::content ctnt, , _Current_path() , _Immediate_path() , _Transform_matrix(matrix_2d::init_identity()) - , _Font_face() - , _Font_matrix(matrix_2d::init_scale(_Font_default_size)) - , _Font_options(::std::experimental::io2d::antialias::default_antialias, ::std::experimental::io2d::subpixel_order::default_subpixel_order) + , _Font_resource(font_resource_factory()) , _Saved_state() { _Throw_if_failed_cairo_status_t(cairo_surface_status(_Surface.get())); _Throw_if_failed_cairo_status_t(cairo_status(_Context.get())); @@ -420,13 +398,13 @@ void surface::map(const ::std::function& act void surface::save() { cairo_save(_Context.get()); - _Saved_state.push(make_tuple(_Brush, _Antialias, _Dashes, _Fill_rule, _Line_cap, _Line_join, _Line_width, _Miter_limit, _Compositing_operator, _Current_path, _Immediate_path, _Transform_matrix, _Font_face, _Font_matrix, _Font_options)); + _Saved_state.push(make_tuple(_Brush, _Antialias, _Dashes, _Fill_rule, _Line_cap, _Line_join, _Line_width, _Miter_limit, _Compositing_operator, _Current_path, _Immediate_path, _Transform_matrix, _Font_resource)); } void surface::save(error_code& ec) noexcept { cairo_save(_Context.get()); try { - _Saved_state.push(make_tuple(_Brush, _Antialias, _Dashes, _Fill_rule, _Line_cap, _Line_join, _Line_width, _Miter_limit, _Compositing_operator, _Current_path, _Immediate_path, _Transform_matrix, _Font_face, _Font_matrix, _Font_options)); + _Saved_state.push(make_tuple(_Brush, _Antialias, _Dashes, _Fill_rule, _Line_cap, _Line_join, _Line_width, _Miter_limit, _Compositing_operator, _Current_path, _Immediate_path, _Transform_matrix, _Font_resource)); } catch (const bad_alloc&) { ec = make_error_code(errc::not_enough_memory); @@ -455,9 +433,7 @@ void surface::restore() { _Current_path = move(get<9>(t)); _Immediate_path = move(get<10>(t)); _Transform_matrix = get<11>(t); - _Font_face = move(get<12>(t)); - _Font_matrix = get<13>(t); - _Font_options = get<14>(t); + _Font_resource = move(get<12>(t)); } _Saved_state.pop(); @@ -484,9 +460,7 @@ void surface::restore(error_code& ec) noexcept { _Current_path = move(get<9>(t)); _Immediate_path = move(get<10>(t)); _Transform_matrix = get<11>(t); - _Font_face = move(get<12>(t)); - _Font_matrix = get<13>(t); - _Font_options = get<14>(t); + _Font_resource = move(get<12>(t)); } _Saved_state.pop(); @@ -1101,61 +1075,49 @@ vector_2d surface::render_text(const string& utf8, const vector_2d& position, co return result; } -void surface::matrix(const matrix_2d& m) { - auto det = m.determinant(); - if (det == 0.0) { - _Throw_if_failed_cairo_status_t(CAIRO_STATUS_INVALID_MATRIX); - } - _Transform_matrix = m; - cairo_matrix_t cm{ m.m00(), m.m01(), m.m10(), m.m11(), m.m20(), m.m21() }; - cairo_set_matrix(_Context.get(), &cm); -} - -void surface::matrix(const matrix_2d& m, error_code& ec) noexcept { - auto det = m.determinant(ec); - if (static_cast(ec)) { - return; - } - if (det == 0.0) { - ec = _Cairo_status_t_to_std_error_code(CAIRO_STATUS_INVALID_MATRIX); - return; - } - _Transform_matrix = m; - cairo_matrix_t cm{ m.m00(), m.m01(), m.m10(), m.m11(), m.m20(), m.m21() }; - cairo_set_matrix(_Context.get(), &cm); - ec.clear(); +void surface::render_glyph_run(const glyph_run& gr) { + cairo_pattern_set_extend(_Brush.native_handle(), _Extend_to_cairo_extend_t(_Brush.extend())); + cairo_pattern_set_filter(_Brush.native_handle(), _Filter_to_cairo_filter_t(_Brush.filter())); + cairo_matrix_t cPttnMatrix; + cairo_matrix_init(&cPttnMatrix, _Brush.matrix().m00(), _Brush.matrix().m01(), _Brush.matrix().m10(), _Brush.matrix().m11(), _Brush.matrix().m20(), _Brush.matrix().m21()); + cairo_pattern_set_matrix(_Brush.native_handle(), &cPttnMatrix); + cairo_set_source(_Context.get(), _Brush.native_handle()); + cairo_show_text_glyphs(_Context.get(), gr.original_text().c_str(), static_cast(gr.original_text().length()), gr._Cairo_glyphs.get(), static_cast(gr.glyphs().size()), gr._Cairo_text_clusters.get(), static_cast(gr.clusters().size()), gr._Text_cluster_flags); } -void surface::font_face(const string& family, font_slant slant, font_weight weight) { - cairo_select_font_face(_Context.get(), family.c_str(), _Font_slant_to_cairo_font_slant_t(slant), _Font_weight_to_cairo_font_weight_t(weight)); +void surface::render_glyph_run(const glyph_run& gr, const rgba_color& c) { + solid_color_brush_factory factory(c); + brush(experimental::io2d::brush(factory)); + render_glyph_run(gr); } -void surface::font_size(double size) { - if (size <= 0.0) { - _Throw_if_failed_cairo_status_t(CAIRO_STATUS_INVALID_SIZE); - } - cairo_set_font_size(_Context.get(), size); +void surface::render_glyph_run(const glyph_run& gr, const ::std::experimental::io2d::brush& b) { + brush(b); + render_glyph_run(gr); } -void surface::font_size(double size, error_code& ec) noexcept { - if (size <= 0.0) { - ec = _Cairo_status_t_to_std_error_code(CAIRO_STATUS_INVALID_SIZE); - return; - } - cairo_set_font_size(_Context.get(), size); - ec.clear(); +void surface::render_glyph_run(const glyph_run& gr, const surface& s, const matrix_2d& m, extend e, filter f) { + cairo_set_source_surface(_Context.get(), s.native_handle().csfce, 0.0, 0.0); + auto pat = cairo_get_source(_Context.get()); + cairo_pattern_set_extend(pat, _Extend_to_cairo_extend_t(e)); + cairo_pattern_set_filter(pat, _Filter_to_cairo_filter_t(f)); + cairo_matrix_t cmat{ m.m00(), m.m01(), m.m10(), m.m11(), m.m20(), m.m21() }; + cairo_pattern_set_matrix(pat, &cmat); + render_glyph_run(gr); + cairo_set_source_rgba(_Context.get(), 0.0, 0.0, 0.0, 0.0); } -void surface::font_matrix(const matrix_2d& m) { +void surface::matrix(const matrix_2d& m) { auto det = m.determinant(); if (det == 0.0) { _Throw_if_failed_cairo_status_t(CAIRO_STATUS_INVALID_MATRIX); } + _Transform_matrix = m; cairo_matrix_t cm{ m.m00(), m.m01(), m.m10(), m.m11(), m.m20(), m.m21() }; - cairo_set_font_matrix(_Context.get(), &cm); + cairo_set_matrix(_Context.get(), &cm); } -void surface::font_matrix(const matrix_2d& m, error_code& ec) noexcept { +void surface::matrix(const matrix_2d& m, error_code& ec) noexcept { auto det = m.determinant(ec); if (static_cast(ec)) { return; @@ -1164,32 +1126,20 @@ void surface::font_matrix(const matrix_2d& m, error_code& ec) noexcept { ec = _Cairo_status_t_to_std_error_code(CAIRO_STATUS_INVALID_MATRIX); return; } + _Transform_matrix = m; cairo_matrix_t cm{ m.m00(), m.m01(), m.m10(), m.m11(), m.m20(), m.m21() }; - cairo_set_font_matrix(_Context.get(), &cm); + cairo_set_matrix(_Context.get(), &cm); ec.clear(); } -void surface::font_options(const ::std::experimental::io2d::font_options& options) noexcept { - cairo_font_options_set_antialias(_Native_font_options.get(), _Antialias_to_cairo_antialias_t(options.antialias())); - cairo_font_options_set_subpixel_order(_Native_font_options.get(), _Subpixel_order_to_cairo_subpixel_order_t(options.subpixel_order())); - cairo_set_font_options(_Context.get(), _Native_font_options.get()); +void surface::font_resource(const experimental::io2d::font_resource& f) noexcept { + _Font_resource = f; + cairo_set_scaled_font(_Context.get(), f._Scaled_font.get()); } -void surface::font_face(const ::std::experimental::io2d::font_face& font_face) { - _Font_face = make_shared(font_face); - cairo_set_font_face(_Context.get(), font_face.native_handle()); -} - -void surface::font_face(const::std::experimental::io2d::font_face & f, ::std::error_code & ec) noexcept { - try { - _Font_face = make_shared(f); - } - catch (const bad_alloc&) { - ec = make_error_code(errc::not_enough_memory); - return; - } - cairo_set_font_face(_Context.get(), f.native_handle()); - ec.clear(); +void surface::font_resource(const ::std::string& family, double size, font_slant sl, font_weight w) { + _Font_resource = experimental::io2d::font_resource(font_resource_factory(family, sl, w, matrix_2d::init_scale({ size, size }))); + cairo_set_scaled_font(_Context.get(), _Font_resource._Scaled_font.get()); } brush surface::brush() const noexcept { @@ -1512,32 +1462,6 @@ vector_2d surface::surface_to_user_distance(const vector_2d& dpt) const { return im.transform_distance(dpt); } -matrix_2d surface::font_matrix() const noexcept { - cairo_matrix_t cm{}; - cairo_get_font_matrix(_Context.get(), &cm); - return{ cm.xx, cm.yx, cm.xy, cm.yy, cm.x0, cm.y0 }; -} - -// Note: This deviates from cairo in that we return the values that will actually wind up being used. -::std::experimental::io2d::font_options surface::font_options() const noexcept { - ::std::experimental::io2d::font_options fo(::std::experimental::io2d::antialias::default_antialias, ::std::experimental::io2d::subpixel_order::default_subpixel_order); - unique_ptr up(nullptr, &cairo_font_options_destroy); - cairo_get_font_options(_Context.get(), up.get()); - _Throw_if_failed_cairo_status_t(cairo_font_options_status(up.get())); - auto ca = _Cairo_antialias_t_to_antialias(cairo_font_options_get_antialias(up.get())); - auto cso = _Cairo_subpixel_order_t_to_subpixel_order(cairo_font_options_get_subpixel_order(up.get())); - cairo_get_font_options(_Context.get(), up.get()); - _Throw_if_failed_cairo_status_t(cairo_font_options_status(up.get())); - - return ::std::experimental::io2d::font_options( - (ca == ::std::experimental::io2d::antialias::default_antialias) ? _Cairo_antialias_t_to_antialias(cairo_font_options_get_antialias(up.get())) : ca, - (cso == ::std::experimental::io2d::subpixel_order::default_subpixel_order) ? _Cairo_subpixel_order_t_to_subpixel_order(cairo_font_options_get_subpixel_order(up.get())) : cso - ); -} - -::std::experimental::io2d::font_face surface::font_face() const { - auto ff = cairo_get_font_face(_Context.get()); - _Throw_if_failed_cairo_status_t(cairo_font_face_status(ff)); - // Cairo doesn't increase the font face's reference count when you call cairo_get_font_face so we do it manually. - return ::std::experimental::io2d::font_face(cairo_font_face_reference(ff)); +experimental::io2d::font_resource surface::font_resource() const noexcept { + return _Font_resource; } diff --git a/tests/sample-draw/sample_draw.cpp b/tests/sample-draw/sample_draw.cpp index c3e5ea0..1ee4e17 100644 --- a/tests/sample-draw/sample_draw.cpp +++ b/tests/sample-draw/sample_draw.cpp @@ -170,20 +170,20 @@ void test_paint(display_surface& ds) { imgSfc.fill_immediate(rgba_color::white()); auto m = matrix_2d::init_scale({ 1.5, 1.0 }).translate({ 20.0, 20.0 });// .invert().translate({ -10.0, -10.0 }); auto scsm = m; - auto ucsm = matrix_2d::init_identity(); + //auto ucsm = matrix_2d::init_identity(); auto bcsm = matrix_2d::init_translate({ -10.0, -10.0 }); auto invScsm = scsm; invScsm.invert(); auto invBcsm = bcsm; invBcsm.invert(); - //auto pt = m.invert().transform_point({ 0.0, 0.0 }); - //auto pt2 = m.transform_point({ 10.0, 10.0 }); - auto pt = m.transform_point({ 0.0, 0.0 }); - auto pt2 = invScsm.transform_point({ 45.0, 30.0 }); - auto pt3 = vector_2d{ -26.6666666666666, -30.0 }; - auto pt4 = vector_2d{ -16.6666666666666, -20.0 }; - auto pt5 = vector_2d{ 45.0, 30.0 }; + ////auto pt = m.invert().transform_point({ 0.0, 0.0 }); + ////auto pt2 = m.transform_point({ 10.0, 10.0 }); + //auto pt = m.transform_point({ 0.0, 0.0 }); + //auto pt2 = invScsm.transform_point({ 45.0, 30.0 }); + //auto pt3 = vector_2d{ -26.6666666666666, -30.0 }; + //auto pt4 = vector_2d{ -16.6666666666666, -20.0 }; + //auto pt5 = vector_2d{ 45.0, 30.0 }; ds.matrix(m); ds.paint(imgSfc, matrix_2d::init_translate({ -10.0, -10.0 })/*init_identity()*//*init_scale({ 1.0, 1.5 }).translate({ -20.0, -20.0 })*/, extend::repeat, filter::nearest); //ds.paint(rgba_color::red()); @@ -806,7 +806,7 @@ void draw_sort_visualization_immediate(display_surface& ds, double elapsedTimeIn const auto phaseCount = vec.size(); const size_t x = ::std::min(static_cast(timer / phaseTime), ::std::max(static_cast(phaseCount - 1U), static_cast(0U))); - static deque elapsedTimes(static_cast(30), elapsedTimeInMilliseconds); + static deque elapsedTimes(static_cast(30), 1000.0 / ds.desired_frame_rate()); elapsedTimes.pop_front(); elapsedTimes.push_back(elapsedTimeInMilliseconds); @@ -852,8 +852,7 @@ void draw_sort_visualization_immediate(display_surface& ds, double elapsedTimeIn ds.immediate().rectangle({ 400.0, 400.0, 200.0, 200.0 }); ds.fill_immediate(brush(linearTest1)); - ds.font_face("Segoe UI", font_slant::normal, font_weight::normal); - ds.font_size(40.0); + ds.font_resource("Segoe UI", 40.0); auto str = string("Phase ").append(to_string(x + 1)); ds.render_text(str, { beginX, 50.0 }, rgba_color::white()); @@ -881,9 +880,9 @@ void draw_sort_visualization_immediate(display_surface& ds, double elapsedTimeIn else { const vector_2d center{ radius * i * 2.0 + radius + beginX, y }; #if _Variable_templates_conditional_support_test - ds.immediate().change_matrix(matrix_2d::init_scale({ 1.0, 1.5 }) * matrix_2d::init_rotate(pi / 4.0)); + ds.immediate().change_matrix(matrix_2d::init_scale({ 1.0, 1.5 }) * matrix_2d::init_rotate(pi / 4.0) * matrix_2d::init_translate({ 0.0, 50.0 })); #else - ds.immediate().change_matrix(matrix_2d::init_scale({ 1.0, 1.5 }) * matrix_2d::init_rotate(pi() / 4.0)); + ds.immediate().change_matrix(matrix_2d::init_scale({ 1.0, 1.5 }) * matrix_2d::init_rotate(pi() / 4.0) * matrix_2d::init_translate({ 0.0, 50.0 })); #endif ds.immediate().change_origin(center); #if _Variable_templates_conditional_support_test @@ -1002,7 +1001,28 @@ void draw_sort_visualization_immediate(display_surface& ds, double elapsedTimeIn auto fps = 1000.0 / (sumOfElapsedTimes / countOfElapsedTimes); stringstream fpsStr; fpsStr << "FPS: " << setprecision(3) << fps; - ds.render_text(fpsStr.str(), { static_cast(ds.width()) - 200.0, 50.0 }, rgba_color::dark_red()); + + auto origM = ds.matrix(); + + //ds.matrix(matrix_2d::init_scale({ 1.0, 0.5 })); + font_resource_factory frf{ "Segoe UI", font_slant::normal, font_weight::normal, matrix_2d::init_scale({40.0, 40.0}) };//, font_options{}, matrix_2d::init_scale({ 1.0, 1.5 }) }; + ds.font_resource(experimental::io2d::font_resource{ frf }); + auto gr = ds.font_resource().make_glyph_run(fpsStr.str(), { static_cast(ds.width()) - 400.0, 50.0 }); + //vector::size_type idx = 0; + //gr.glyphs()[idx].x(gr.glyphs()[idx].x() - 20.0); + //gr.glyphs()[idx + 1].x(gr.glyphs()[idx + 1].x() - 10.0); + ds.immediate().clear(); + //ds.immediate().add_text(ds.font_resource(), fpsStr.str(), { static_cast(ds.width()) - 400.0, 50.0 }); + ds.immediate().add_glyph_run(ds.font_resource(), gr); + //ds.fill_immediate(rgba_color::dark_red()); + ds.render_glyph_run(gr, rgba_color::dark_red()); + + ////ds.render_text(fpsStr.str(), { static_cast(ds.width()) - 400.0, 50.0 }, rgba_color::dark_red()); + ////fpsStr = stringstream(); + ////fpsStr << static_cast(timer) << " " << elapsedTimeInMilliseconds; + ////ds.render_text(fpsStr.str(), { static_cast(ds.width()) - 400.0, 150.0 }, rgba_color::dark_red()); + + ds.matrix(origM); //auto radialFactory = radial_brush_factory({ 115.2, 102.4 }, 25.6, { 102.4, 102.4 }, 128.0); //radialFactory.add_color_stop(0.0, rgba_color::white()); @@ -1044,8 +1064,7 @@ void draw_sort_visualization(display_surface& ds, double elapsedTimeInMillisecon auto whiteBrush = brush(solid_color_brush_factory(rgba_color::white())); ds.brush(whiteBrush); - ds.font_face("Segoe UI", font_slant::normal, font_weight::normal); - ds.font_size(40.0); + ds.font_resource("Segoe UI", 40.0); ds.render_text(string("Phase ").append(to_string(x + 1)).c_str(), { beginX, 50.0 }); path_factory pf; From a348eb52aa0675111102ae2bc25ffc2872233f39 Mon Sep 17 00:00:00 2001 From: "Michael B. McLaughlin" Date: Thu, 31 Mar 2016 19:40:18 -0400 Subject: [PATCH 25/30] Bug fix in renamed variable in display_surface-xlib.cpp. Had to add non-default move assignment operators for font_resource_factory and glyph_run because libstdc++ (5.0) improperly implements the std::string move assignment operator (the bug is noted in the libstdc++ header file). Had to fix two improperly qualified type usages in io2d.h. --- io2d/include/io2d.h | 8 ++++---- io2d/src/display_surface-xlib.cpp | 4 ++-- io2d/src/font_resource_factory.cpp | 13 +++++++++++++ io2d/src/glyph_run.cpp | 14 ++++++++++++++ 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/io2d/include/io2d.h b/io2d/include/io2d.h index def2a6f..dfef16a 100644 --- a/io2d/include/io2d.h +++ b/io2d/include/io2d.h @@ -1453,7 +1453,7 @@ namespace std { font_resource_factory(const font_resource_factory&) = default; font_resource_factory& operator=(const font_resource_factory&) = default; font_resource_factory(font_resource_factory&&) noexcept = default; - font_resource_factory& operator=(font_resource_factory&&) noexcept = default; + font_resource_factory& operator=(font_resource_factory&&) noexcept;// = default; explicit font_resource_factory(const ::std::string& family, ::std::experimental::io2d::font_slant fs = ::std::experimental::io2d::font_slant::normal, ::std::experimental::io2d::font_weight fw = ::std::experimental::io2d::font_weight::normal, @@ -1528,7 +1528,7 @@ namespace std { }; class glyph_run { - friend font_resource; + friend ::std::experimental::io2d::font_resource; friend surface; friend path_factory; @@ -1601,7 +1601,7 @@ namespace std { glyph_run(const glyph_run&) = default; glyph_run& operator=(const glyph_run&) = default; glyph_run(glyph_run&&) noexcept = default; - glyph_run& operator=(glyph_run&&) noexcept = default; + glyph_run& operator=(glyph_run&&) noexcept; // Modifiers ::std::vector& glyphs() noexcept; @@ -2307,7 +2307,7 @@ namespace std { static Bool _X11_if_event_pred(Display* display, XEvent* event, XPointer arg); #endif - refresh_rate _Refresh_rate; + ::std::experimental::io2d::refresh_rate _Refresh_rate; double _Desired_frame_rate; ::std::atomic _Redraw_requested; double _Elapsed_draw_time; diff --git a/io2d/src/display_surface-xlib.cpp b/io2d/src/display_surface-xlib.cpp index 6279aaa..38062c0 100644 --- a/io2d/src/display_surface-xlib.cpp +++ b/io2d/src/display_surface-xlib.cpp @@ -126,6 +126,7 @@ Bool display_surface::_X11_if_event_pred(::Display* display, ::XEvent* event, XP // Return True so we can inspect it in the event loop for diagnostic purposes. return True; } + return false; } } return False; @@ -256,7 +257,7 @@ display_surface::display_surface(int preferredWidth, int preferredHeight, experi if (preferredDisplayWidth <= 0 || preferredDisplayHeight <= 0 || preferredWidth <= 0 || preferredHeight <= 0 || preferredFormat == experimental::io2d::format::invalid) { throw invalid_argument("Invalid parameter."); } - if (fps <= _Minimum_framerate || !isfinite(fps)) { + if (fps <= _Minimum_frame_rate || !isfinite(fps)) { throw system_error(make_error_code(errc::argument_out_of_domain)); } Display* display = nullptr; @@ -322,7 +323,6 @@ int display_surface::show() { auto elapsedTimeIncrement = static_cast(duration_cast(currentTime - previousTime).count()); _Elapsed_draw_time += elapsedTimeIncrement; previousTime = currentTime; - while (XCheckIfEvent(_Display.get(), &event, &display_surface::_X11_if_event_pred, reinterpret_cast(this))) { switch (event.type) { // ExposureMask events: diff --git a/io2d/src/font_resource_factory.cpp b/io2d/src/font_resource_factory.cpp index 4fb2a10..1306f8b 100644 --- a/io2d/src/font_resource_factory.cpp +++ b/io2d/src/font_resource_factory.cpp @@ -1,10 +1,23 @@ #include "io2d.h" #include "xio2dhelpers.h" #include "xcairoenumhelpers.h" +#include using namespace std; using namespace std::experimental::io2d; +font_resource_factory& font_resource_factory::operator=(font_resource_factory&& other) noexcept { + if (this != &other) { + _Family.swap(other._Family); + _Font_slant = move(other._Font_slant); + _Font_weight = move(other._Font_weight); + _Font_options = move(other._Font_options); + _Font_matrix = move(other._Font_matrix); + _Surface_matrix = move(other._Surface_matrix); + } + return *this; +} + font_resource_factory::font_resource_factory(const ::std::string& family, ::std::experimental::io2d::font_slant fs, ::std::experimental::io2d::font_weight fw, const ::std::experimental::io2d::matrix_2d& fm, const ::std::experimental::io2d::font_options& fo, const ::std::experimental::io2d::matrix_2d& sm) : _Family() diff --git a/io2d/src/glyph_run.cpp b/io2d/src/glyph_run.cpp index ed3dda5..51052da 100644 --- a/io2d/src/glyph_run.cpp +++ b/io2d/src/glyph_run.cpp @@ -73,6 +73,20 @@ int glyph_run::cluster::byte_count() const noexcept { return _Byte_count; } +glyph_run& glyph_run::operator=(glyph_run&& other) noexcept { + if (this != &other) { + _Text_string.swap(other._Text_string); + _Font_resource = move(other._Font_resource); + _Glyphs = move(other._Glyphs); + _Clusters = move(other._Clusters); + _Cairo_glyphs = move(other._Cairo_glyphs); + _Cairo_text_clusters = move(other._Cairo_text_clusters); + _Position = move(other._Position); + _Text_cluster_flags = move(other._Text_cluster_flags); + } + return *this; +} + glyph_run::glyph_run(const experimental::io2d::font_resource& fr, const ::std::string& utf8, const vector_2d& pos) : _Text_string(utf8) , _Font_resource(fr) From f227510be1dbc654db67c0e2ccf2f535d83ee071 Mon Sep 17 00:00:00 2001 From: "Michael B. McLaughlin" Date: Sun, 17 Apr 2016 21:26:00 -0400 Subject: [PATCH 26/30] Added support for using the X11 Xcb interface as an alternative to the Xlib interface. --- io2d/include/io2d.h | 30 +- io2d/src/CMakeLists.txt | 1 + io2d/src/display_surface-common.cpp | 22 +- io2d/src/display_surface-xcb.cpp | 519 ++++++++++++++++++++++++++++ 4 files changed, 564 insertions(+), 8 deletions(-) create mode 100644 io2d/src/display_surface-xcb.cpp diff --git a/io2d/include/io2d.h b/io2d/include/io2d.h index dfef16a..b2f9a83 100644 --- a/io2d/include/io2d.h +++ b/io2d/include/io2d.h @@ -21,7 +21,9 @@ #define NOMINMAX #define WIN32_LEAN_AND_MEAN #include -#else +#elif defined(USE_XCB) +#include +#elif defined(USE_XLIB) #include #include #include @@ -2242,7 +2244,17 @@ namespace std { const int _Display_surface_ptr_window_data_byte_offset = 0; LRESULT CALLBACK _RefImplWindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); -#else +#elif defined(USE_XCB) + struct _Xcb_display_surface_native_handle { + _Surface_native_handles sfc_nh; + _Surface_native_handles display_sfc_nh; + xcb_connection_t* connection; + ::std::mutex& connection_mutex; + int& connection_ref_count; + xcb_screen_t* screen; + xcb_window_t wndw; + }; +#elif defined(USE_XLIB) struct _Xlib_display_surface_native_handle { _Surface_native_handles sfc_nh; Display* display; @@ -2298,7 +2310,15 @@ namespace std { HWND _Hwnd; LRESULT _Window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); -#else +#elif defined(USE_XCB) + static ::std::mutex _Connection_mutex; + static ::std::unique_ptr _Connection; + static int _Connection_ref_count; + xcb_screen_t* _Screen; + xcb_window_t _Wndw; + bool _Can_draw = false; + const uint16_t _Window_border_width = 4; +#elif defined(USE_XLIB) static ::std::mutex _Display_mutex; static ::std::unique_ptr> _Display; static int _Display_ref_count; @@ -2330,7 +2350,9 @@ namespace std { public: #ifdef _WIN32_WINNT typedef _Win32_display_surface_native_handle native_handle_type; -#else +#elif defined(USE_XCB) + typedef _Xcb_display_surface_native_handle native_handle_type; +#elif defined(USE_XLIB) typedef _Xlib_display_surface_native_handle native_handle_type; #endif native_handle_type native_handle() const; diff --git a/io2d/src/CMakeLists.txt b/io2d/src/CMakeLists.txt index 230d4b1..e60cebb 100644 --- a/io2d/src/CMakeLists.txt +++ b/io2d/src/CMakeLists.txt @@ -43,6 +43,7 @@ if (WIN32) list(APPEND IO2D_SRC display_surface-win32.cpp) else() list(APPEND IO2D_SRC display_surface-xlib.cpp) + list(APPEND IO2D_SRC display_surface-xcb.cpp) endif() add_library(io2d ${IO2D_SRC}) diff --git a/io2d/src/display_surface-common.cpp b/io2d/src/display_surface-common.cpp index dbdadff..84b5966 100644 --- a/io2d/src/display_surface-common.cpp +++ b/io2d/src/display_surface-common.cpp @@ -1,10 +1,14 @@ #include "io2d.h" #include "xio2dhelpers.h" #include "xcairoenumhelpers.h" +#include +#include +#include using namespace std; using namespace std::experimental; using namespace std::experimental::io2d; +using namespace std::chrono; void display_surface::_All_dimensions(int w, int h, int dw, int dh) { dimensions(w, h); @@ -14,6 +18,9 @@ void display_surface::_All_dimensions(int w, int h, int dw, int dh) { // Note: cairo_surface_flush(_Native_surface.get()); must be called after calling this function. void display_surface::_Render_for_scaling_uniform_or_letterbox() { const cairo_filter_t cairoFilter = CAIRO_FILTER_GOOD; + +// static auto previousTime = steady_clock::now(); + if (_Width == _Display_width && _Height == _Display_height) { cairo_set_source_surface(_Native_context.get(), _Surface.get(), 0.0, 0.0); cairo_paint(_Native_context.get()); @@ -32,7 +39,7 @@ void display_surface::_Render_for_scaling_uniform_or_letterbox() { const auto displayWHRatio = static_cast(_Display_width) / static_cast(_Display_height); cairo_matrix_t ctm; auto nativeContext = _Native_context.get(); - cairo_save(nativeContext); + //cairo_save(nativeContext); double rectX, rectY, rectWidth, rectHeight; if (whRatio < displayWHRatio) { cairo_new_path(nativeContext); @@ -66,14 +73,21 @@ void display_surface::_Render_for_scaling_uniform_or_letterbox() { cairo_pattern_set_filter(pat.get(), cairoFilter); cairo_set_source(_Native_context.get(), pat.get()); cairo_fill(_Native_context.get()); - cairo_restore(nativeContext); + //cairo_restore(nativeContext); } + +// auto currentTime = steady_clock::now(); +// auto elapsedTimeIncrement = static_cast(duration_cast(currentTime - previousTime).count()); +// previousTime = currentTime; +// stringstream timingStr; +// timingStr << "timing: " << elapsedTimeIncrement / 1'000'000.0 << endl; +// cerr << timingStr.str().c_str(); } void display_surface::_Render_to_native_surface() { const cairo_filter_t cairoFilter = CAIRO_FILTER_GOOD; cairo_surface_flush(_Surface.get()); - cairo_save(_Native_context.get()); +// cairo_save(_Native_context.get()); cairo_set_operator(_Native_context.get(), CAIRO_OPERATOR_SOURCE); if (_User_scaling_fn != nullptr) { bool letterbox = false; @@ -182,7 +196,7 @@ void display_surface::_Render_to_native_surface() { } } - cairo_restore(_Native_context.get()); +// cairo_restore(_Native_context.get()); // This call to cairo_surface_flush is needed for Win32 surfaces to update. cairo_surface_flush(_Native_surface.get()); } diff --git a/io2d/src/display_surface-xcb.cpp b/io2d/src/display_surface-xcb.cpp new file mode 100644 index 0000000..6294966 --- /dev/null +++ b/io2d/src/display_surface-xcb.cpp @@ -0,0 +1,519 @@ +#include "io2d.h" +#include "xio2dhelpers.h" +#include "xcairoenumhelpers.h" +#include +// #include +// #include +// #include +#include + +using namespace std; +using namespace std::chrono; +using namespace std::experimental::io2d; + +display_surface::native_handle_type display_surface::native_handle() const { + return{ { _Surface.get(), _Context.get() }, { _Native_surface.get(), _Native_context.get() }, _Connection.get(), _Connection_mutex, _Connection_ref_count, _Screen, _Wndw }; +} + +display_surface::display_surface(display_surface&& other) noexcept + : surface(move(other)) + , _Default_brush(move(other._Default_brush)) + , _Display_width(move(other._Display_width)) + , _Display_height(move(other._Display_height)) + , _Scaling(move(other._Scaling)) + , _Width(move(other._Width)) + , _Height(move(other._Height)) + , _Draw_fn(move(other._Draw_fn)) + , _Size_change_fn(move(other._Size_change_fn)) + , _User_scaling_fn(move(other._User_scaling_fn)) + , _Letterbox_brush(move(other._Letterbox_brush)) + , _Auto_clear(move(other._Auto_clear)) + , _Screen(move(other._Screen)) + , _Wndw(move(other._Wndw)) + , _Can_draw(move(other._Can_draw)) + , _Refresh_rate(move(other._Refresh_rate)) + , _Desired_frame_rate(move(other._Desired_frame_rate)) + , _Redraw_requested(other._Redraw_requested.load()) + , _Elapsed_draw_time(move(other._Elapsed_draw_time)) + , _Native_surface(move(other._Native_surface)) + , _Native_context(move(other._Native_context)) { + other._Draw_fn = nullptr; + other._Size_change_fn = nullptr; + other._Screen = nullptr; + other._Wndw = 0; +} + +display_surface& display_surface::operator=(display_surface&& other) noexcept { + if (this != &other) { + surface::operator=(move(other)); + _Default_brush = move(other._Default_brush); + _Display_width = move(other._Display_width); + _Display_height = move(other._Display_height); + _Scaling = move(other._Scaling); + _Width = move(other._Width); + _Height = move(other._Height); + _Draw_fn = move(other._Draw_fn); + _Size_change_fn = move(other._Size_change_fn); + _User_scaling_fn = move(other._User_scaling_fn); + _Letterbox_brush = move(other._Letterbox_brush); + _Auto_clear = move(other._Auto_clear); + _Screen = move(other._Screen); + _Wndw = move(other._Wndw); + _Can_draw = move(other._Can_draw); + _Refresh_rate = move(other._Refresh_rate); + _Desired_frame_rate = move(other._Desired_frame_rate); + _Redraw_requested = other._Redraw_requested.load(); + _Elapsed_draw_time = move(other._Elapsed_draw_time); + _Native_surface = move(other._Native_surface); + _Native_context = move(other._Native_context); + + other._Screen = nullptr; + other._Wndw = 0; + other._Draw_fn = nullptr; + other._Size_change_fn = nullptr; + other._Can_draw = false; + } + + return *this; +} + +mutex display_surface::_Connection_mutex; +unique_ptr display_surface::_Connection{ nullptr, &xcb_disconnect }; +int display_surface::_Connection_ref_count = 0; + +namespace { + xcb_atom_t _Wm_protocols; + xcb_atom_t _Wm_delete_window; +} + +void display_surface::_Make_native_surface_and_context() { + auto depthIter = xcb_screen_allowed_depths_iterator(_Screen); + xcb_visualtype_t* visual = nullptr; + for (; depthIter.rem != 0; xcb_depth_next(&depthIter)) { + auto visualIter = xcb_depth_visuals_iterator(depthIter.data); + for (; visualIter.rem != 0; xcb_visualtype_next(&visualIter)) { + if (_Screen->root_visual == visualIter.data->visual_id) { + visual = visualIter.data; + break; + } + } + } + + if (visual == nullptr) { + _Throw_if_failed_cairo_status_t(CAIRO_STATUS_NULL_POINTER); + } + + _Native_surface = unique_ptr(cairo_xcb_surface_create(_Connection.get(), _Wndw, visual, _Display_width, _Display_height), &cairo_surface_destroy); + _Native_context = unique_ptr(cairo_create(_Native_surface.get()), &cairo_destroy); + _Throw_if_failed_cairo_status_t(cairo_surface_status(_Native_surface.get())); + _Throw_if_failed_cairo_status_t(cairo_status(_Native_context.get())); +} + +void display_surface::_Resize_window() { + auto geometryCookie = xcb_get_geometry(_Connection.get(), _Wndw); + unique_ptr geometryReply(xcb_get_geometry_reply(_Connection.get(), geometryCookie, nullptr), &::free); + if (geometryReply == nullptr) { + _Throw_if_failed_cairo_status_t(CAIRO_STATUS_INVALID_STATUS); + } + + const uint32_t values[] = { static_cast(_Display_width), static_cast(_Display_height) }; + xcb_configure_window(_Connection.get(), _Wndw, XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT, values); + xcb_flush(_Connection.get()); +} + +display_surface::display_surface(int preferredWidth, int preferredHeight, experimental::io2d::format preferredFormat, experimental::io2d::scaling scl, experimental::io2d::refresh_rate rr, double fps) + : display_surface(preferredWidth, preferredHeight, preferredFormat, preferredWidth, preferredHeight, scl, rr, fps) { +} + +display_surface::display_surface(int preferredWidth, int preferredHeight, experimental::io2d::format preferredFormat, int preferredDisplayWidth, int preferredDisplayHeight, experimental::io2d::scaling scl, experimental::io2d::refresh_rate rr, double fps) + : surface({ nullptr, nullptr }, preferredFormat, _Cairo_content_t_to_content(_Cairo_content_t_for_cairo_format_t(_Format_to_cairo_format_t(preferredFormat)))) + , _Default_brush(cairo_pattern_create_rgba(0.0, 0.0, 0.0, 1.0)) + , _Display_width(preferredDisplayWidth) + , _Display_height(preferredDisplayHeight) + , _Scaling(scl) + , _Width(preferredWidth) + , _Height(preferredHeight) + , _Draw_fn() + , _Size_change_fn() + , _User_scaling_fn() + , _Letterbox_brush(cairo_pattern_create_rgba(0.0, 0.0, 0.0, 1.0)) + , _Auto_clear(false) + , _Screen(nullptr) + , _Wndw() + , _Can_draw(false) + , _Refresh_rate(rr) + , _Desired_frame_rate(fps) + , _Redraw_requested(true) + , _Native_surface(nullptr, &cairo_surface_destroy) + , _Native_context(nullptr, &cairo_destroy) { + if (preferredDisplayWidth <= 0 || preferredDisplayHeight <= 0 || preferredWidth <= 0 || preferredHeight <= 0 || preferredFormat == experimental::io2d::format::invalid) { + throw invalid_argument("Invalid parameter."); + } + if (fps <= _Minimum_frame_rate || !isfinite(fps)) { + throw system_error(make_error_code(errc::argument_out_of_domain)); + } + xcb_connection_t* connection = nullptr; + // Lock to increment the ref count. + { + lock_guard lg(_Connection_mutex); + _Connection_ref_count++; + } + int screenNumber = 0; + if (_Connection == nullptr) { + lock_guard lg(_Connection_mutex); + if (_Connection == nullptr) { + connection = xcb_connect(nullptr, &screenNumber); + if (connection == nullptr) { + _Connection_ref_count--; + throw system_error(make_error_code(errc::connection_refused)); + } + _Connection = unique_ptr(connection, &::xcb_disconnect); + } + } + auto setup = xcb_get_setup(connection); + _Screen = nullptr; + auto screenIter = xcb_setup_roots_iterator(setup); + for (; screenIter.rem != 0; --screenNumber, xcb_screen_next(&screenIter)) { + if (screenNumber == 0) { + _Screen = screenIter.data; + break; + } + } + if (_Screen == nullptr) { + lock_guard lg(_Connection_mutex); + _Connection_ref_count--; + throw system_error(make_error_code(errc::connection_aborted)); + } + + _Wndw = xcb_generate_id(connection); + uint32_t mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK; + uint32_t values[2]; + values[0] = _Screen->black_pixel; + values[1] = XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_PROPERTY_CHANGE; + uint16_t x = 0; + uint16_t y = 0; + auto windowCookie = xcb_create_window_checked(connection, _Screen->root_depth, _Wndw, _Screen->root, x, y, static_cast(preferredDisplayWidth), static_cast(preferredDisplayHeight), _Window_border_width, XCB_WINDOW_CLASS_INPUT_OUTPUT, _Screen->root_visual, mask, values); + + xcb_generic_error_t* error = xcb_request_check(connection, windowCookie); + if (error != nullptr) { + lock_guard lg(_Connection_mutex); + _Connection_ref_count--; + throw system_error(make_error_code(errc::connection_aborted)); + } + + auto mapCookie = xcb_map_window_checked(connection, _Wndw); + xcb_generic_error_t* mapError = xcb_request_check(connection, mapCookie); + if (mapError != nullptr) { + lock_guard lg(_Connection_mutex); + _Connection_ref_count--; + throw system_error(make_error_code(errc::connection_aborted)); + } + + string wmProtocols = "WM_PROTOCOLS"; + auto wmProtocolsCookie = xcb_intern_atom(connection, 0, wmProtocols.size(), wmProtocols.c_str()); + unique_ptr wmProtocolsReply(xcb_intern_atom_reply(connection, wmProtocolsCookie, nullptr), &::free); + if (wmProtocolsReply == nullptr) { + lock_guard lg(_Connection_mutex); + _Connection_ref_count--; + throw system_error(make_error_code(errc::connection_aborted)); + } + _Wm_protocols = wmProtocolsReply->atom; + string wmDelWin = "WM_DELETE_WINDOW"; + auto wmDelWinCookie = xcb_intern_atom(connection, 0, wmDelWin.size(), wmDelWin.c_str()); + unique_ptr wmDelWinReply(xcb_intern_atom_reply(connection, wmDelWinCookie, nullptr), &::free); + if (wmDelWinReply == nullptr) { + lock_guard lg(_Connection_mutex); + _Connection_ref_count--; + throw system_error(make_error_code(errc::connection_aborted)); + } + _Wm_delete_window = (wmDelWinReply.get())->atom; + const uint8_t wmProtocolsDataFormat = 32; + const uint32_t wmProtocolsNumDataElements = 1; + xcb_change_property(connection, XCB_PROP_MODE_REPLACE, _Wndw, _Wm_protocols, XCB_ATOM_ATOM, wmProtocolsDataFormat, wmProtocolsNumDataElements, static_cast(&_Wm_delete_window)); +// stringstream wmAtomsStr; +// wmAtomsStr << "WM_PROTOCOLS: '" << to_string(_Wm_protocols) << "'" << endl << "WM_DELETE_WINDOW: '" << to_string(_Wm_delete_window) << "'" << endl; +// cerr << wmAtomsStr.str().c_str(); + xcb_flush(connection); + + _Surface = unique_ptr(cairo_image_surface_create(_Format_to_cairo_format_t(_Format), _Width, _Height), &cairo_surface_destroy); + _Context = unique_ptr(cairo_create(_Surface.get()), &cairo_destroy); + _Ensure_state(); +} + +display_surface::~display_surface() { + _Native_context.reset(); + _Native_surface.reset(); + if (_Wndw != 0) { + xcb_destroy_window(_Connection.get(), _Wndw); + _Wndw = 0; + } + lock_guard lg(_Connection_mutex); + _Connection_ref_count--; + assert(_Connection_ref_count >= 0); + if (_Connection_ref_count <= 0) { + _Connection_ref_count = 0; + _Connection = nullptr; + } +} + +namespace { + bool _Poll_for_xcb_event(unique_ptr& event, xcb_connection_t* c) { + event.reset(xcb_poll_for_event(c)); +// if (event != nullptr) { +// stringstream errorString; +// errorString << "response_type: '" << to_string(event->response_type) << "'" << endl; +// cerr << errorString.str().c_str(); +// } + return event != nullptr; + } +} + +int display_surface::show() { + bool exit = false; + unique_ptr event{ nullptr, &::free }; + + auto previousTime = steady_clock::now(); + _Elapsed_draw_time = 0.0; + while (!exit) { + auto currentTime = steady_clock::now(); + auto elapsedTimeIncrement = static_cast(duration_cast(currentTime - previousTime).count()); + _Elapsed_draw_time += elapsedTimeIncrement; + previousTime = currentTime; + while (_Poll_for_xcb_event(event, _Connection.get())) { +// const uint8_t userGeneratedEventMask = ~0x80; + switch (event->response_type & ~0x80) { + case 0: + { + xcb_generic_error_t* err = reinterpret_cast(event.get()); + _Throw_if_failed_cairo_status_t(CAIRO_STATUS_INVALID_STATUS); +// stringstream errorString; +// errorString << "Error event->response_type. Value of error_code is '" << to_string(err->error_code) << "'." << endl; +// cerr << errorString.str().c_str(); + } break; + // ExposureMask events: + case XCB_EXPOSE: + { + if (!_Can_draw && _Wndw != 0) { + _Make_native_surface_and_context(); + } + assert(_Native_surface != nullptr && _Native_context != nullptr); + _Can_draw = true; + if (_Draw_fn != nullptr) { + if (_Auto_clear) { + clear(); + } + _Draw_fn(*this); + } + else { + throw system_error(make_error_code(errc::operation_would_block)); + } + _Render_to_native_surface(); + + _Elapsed_draw_time = 0.0; + //if (_Refresh_rate == experimental::io2d::refresh_rate::fixed) { + // _Elapsed_draw_time -= elapsedTimeIncrement; + //} + //else { + // _Elapsed_draw_time = 0.0; + //} + } break; + // StructureNotifyMask events: + case XCB_CIRCULATE_NOTIFY: + { + } break; + case XCB_CONFIGURE_NOTIFY: + { + bool resized = false; + xcb_configure_notify_event_t* ev = reinterpret_cast(event.get()); + if (ev->width != _Display_width) { + _Display_width = ev->width; + resized = true; + } + if (ev->height != _Display_height) { + _Display_height = ev->height; + resized = true; + } + if (resized) { + cairo_xcb_surface_set_size(_Native_surface.get(), _Display_width, _Display_height); + if (_Size_change_fn != nullptr) { + _Size_change_fn(*this); + } + } + } break; + case XCB_DESTROY_NOTIFY: + { +// stringstream errorString; +// errorString << "XCB_DESTROY_NOTIFY" << endl; +// cerr << errorString.str().c_str(); + _Wndw = 0; + _Can_draw = false; + _Native_context.reset(); + _Native_surface.reset(); + exit = true; + } break; + case XCB_GRAVITY_NOTIFY: + { + } break; + case XCB_MAP_NOTIFY: + { + } break; + case XCB_REPARENT_NOTIFY: + { + } break; + case XCB_UNMAP_NOTIFY: + { +// stringstream errorString; +// errorString << "XCB_UNMAP_NOTIFY" << endl; +// cerr << errorString.str().c_str(); + // The window still exists, it has just been unmapped. + _Can_draw = false; + _Native_context.reset(); + _Native_surface.reset(); + } break; + // Might get them even though they are unrequested events (see http://www.x.org/releases/X11R7.7/doc/libX11/libX11/libX11.html#Event_Masks ): + case XCB_GRAPHICS_EXPOSURE: + { + if (_Can_draw) { + if (_Draw_fn != nullptr) { + if (_Auto_clear) { + clear(); + } + _Draw_fn(*this); + } + else { + throw system_error(make_error_code(errc::operation_would_block)); + } + _Render_to_native_surface(); + + _Elapsed_draw_time = 0.0; + //if (_Refresh_rate == experimental::io2d::refresh_rate::fixed) { + // _Elapsed_draw_time -= elapsedTimeIncrement; + //} + //else { + // _Elapsed_draw_time = 0.0; + //} + } + } break; + case XCB_NO_EXPOSURE: + { + } break; + case XCB_PROPERTY_NOTIFY: + { +// xcb_property_notify_event_t* ev = reinterpret_cast(event.get()); +// stringstream propStr; +// propStr << "Property notify for atom: '" << to_string(ev->atom) << "' with state '" << to_string(ev->state) << "'." << endl; +// cerr << propStr.str().c_str(); + } break; + // Unmasked events + case XCB_CLIENT_MESSAGE: + { + xcb_client_message_event_t* ev = reinterpret_cast(event.get()); + if (ev->format == 32 && static_cast(ev->data.data32[0]) == _Wm_delete_window) { +// stringstream errorString; +// errorString << "XCB_CLIENT_MESSAGE" << endl; +// cerr << errorString.str().c_str(); + _Can_draw = false; + _Native_context.reset(); + _Native_surface.reset(); + xcb_destroy_window(_Connection.get(), _Wndw); + xcb_flush(_Connection.get()); + _Wndw = 0; + exit = true; + } + else { +// stringstream clientMsgStr; +// clientMsgStr << "ClientMessage event type '" << to_string(ev->type) << "' for unknown event type"; +// // auto atomName = XGetAtomName(_Display.get(), event.xclient.message_type); +// // if (atomName != nullptr) { +// // try { +// // clientMsgStr << " (" << atomName << ")"; +// // } +// // catch (...) { +// // XFree(atomName); +// // } +// // XFree(atomName); +// // } +// clientMsgStr << ". Format is '" << to_string(ev->format) << "' and first value is '"; +// switch (ev->format) { +// case 8: +// { +// clientMsgStr << to_string(static_cast(ev->data.data8[0])).c_str(); +// } break; +// case 16: +// { +// clientMsgStr << to_string(ev->data.data16[0]).c_str(); +// } break; +// case 32: +// { +// clientMsgStr << to_string(ev->data.data32[0]).c_str(); +// } break; +// default: +// { +// assert("Unexpected format." && false); +// clientMsgStr << "(unexpected format)"; +// } break; +// } +// clientMsgStr << "'."; +// auto es = clientMsgStr.str().c_str(); +// cerr << es << endl; + } + } break; + case XCB_MAPPING_NOTIFY: + { + } break; + case XCB_SELECTION_CLEAR: + { + } break; + case XCB_SELECTION_NOTIFY: + { + } break; + case XCB_SELECTION_REQUEST: + { + } break; + default: + { +// stringstream errorString; +// errorString << "Unexpected event->response_type. Value is '" << to_string(event->response_type) << "'." << endl; +// cerr << errorString.str().c_str(); +// // assert(event->response_type >= 64 && event->response_type <= 127); + } break; + } + } + if (_Can_draw) { + bool redraw = true; + if (_Refresh_rate == experimental::io2d::refresh_rate::as_needed) { + redraw = _Redraw_requested.exchange(false, std::memory_order_acquire); + } + + auto desiredElapsed = 1'000'000'000.0 / _Desired_frame_rate; + + if (_Refresh_rate == experimental::io2d::refresh_rate::fixed) { + // desiredElapsed is the amount of time, in nanoseconds, that must have passed before we should redraw. + redraw = _Elapsed_draw_time >= desiredElapsed; + } + if (redraw) { + // Run user draw function: + if (_Draw_fn != nullptr) { + if (_Auto_clear) { + clear(); + } + _Draw_fn(*this); + } + else { + throw system_error(make_error_code(errc::operation_would_block)); + } + _Render_to_native_surface(); + if (_Refresh_rate == experimental::io2d::refresh_rate::fixed) { + while (_Elapsed_draw_time >= desiredElapsed) { + _Elapsed_draw_time -= desiredElapsed; + } + } + else { + _Elapsed_draw_time = 0.0; + } + } + } + } + _Elapsed_draw_time = 0.0; + return 0; +} From e07b37cd7355dcb4c0db5b2a0a978620a1703751 Mon Sep 17 00:00:00 2001 From: "Michael B. McLaughlin" Date: Sun, 17 Apr 2016 23:14:48 -0400 Subject: [PATCH 27/30] Improved efficiency of letterboxing by reducing overdraw. --- io2d/src/display_surface-common.cpp | 54 ++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/io2d/src/display_surface-common.cpp b/io2d/src/display_surface-common.cpp index 84b5966..f0d214b 100644 --- a/io2d/src/display_surface-common.cpp +++ b/io2d/src/display_surface-common.cpp @@ -26,15 +26,6 @@ void display_surface::_Render_for_scaling_uniform_or_letterbox() { cairo_paint(_Native_context.get()); } else { - if (_Scaling == std::experimental::io2d::scaling::letterbox) { - cairo_pattern_set_extend(_Letterbox_brush.native_handle(), _Extend_to_cairo_extend_t(_Letterbox_brush.extend())); - cairo_pattern_set_filter(_Letterbox_brush.native_handle(), _Filter_to_cairo_filter_t(_Letterbox_brush.filter())); - cairo_matrix_t cPttnMatrix; - cairo_matrix_init(&cPttnMatrix, _Letterbox_brush.matrix().m00(), _Letterbox_brush.matrix().m01(), _Letterbox_brush.matrix().m10(), _Letterbox_brush.matrix().m11(), _Letterbox_brush.matrix().m20(), _Letterbox_brush.matrix().m21()); - cairo_pattern_set_matrix(_Letterbox_brush.native_handle(), &cPttnMatrix); - cairo_set_source(_Native_context.get(), _Letterbox_brush.native_handle()); - cairo_paint(_Native_context.get()); - } const auto whRatio = static_cast(_Width) / static_cast(_Height); const auto displayWHRatio = static_cast(_Display_width) / static_cast(_Display_height); cairo_matrix_t ctm; @@ -53,6 +44,25 @@ void display_surface::_Render_for_scaling_uniform_or_letterbox() { const auto heightRatio = static_cast(_Height) / static_cast(_Display_height); cairo_matrix_init_scale(&ctm, heightRatio, heightRatio); cairo_matrix_translate(&ctm, -rectX, 0.0); + unique_ptr pat(cairo_pattern_create_for_surface(_Surface.get()), &cairo_pattern_destroy); + cairo_pattern_set_matrix(pat.get(), &ctm); + cairo_pattern_set_extend(pat.get(), CAIRO_EXTEND_NONE); + cairo_pattern_set_filter(pat.get(), cairoFilter); + cairo_set_source(_Native_context.get(), pat.get()); + cairo_fill(_Native_context.get()); + //cairo_restore(nativeContext); + if (_Scaling == std::experimental::io2d::scaling::letterbox) { + const auto lboxWidth = trunc((static_cast(_Display_width) - rectWidth) / 2.0); + cairo_rectangle(nativeContext, 0.0, 0.0, lboxWidth, rectHeight); + cairo_rectangle(nativeContext, rectWidth + lboxWidth, 0.0, lboxWidth, rectHeight); + cairo_pattern_set_extend(_Letterbox_brush.native_handle(), _Extend_to_cairo_extend_t(_Letterbox_brush.extend())); + cairo_pattern_set_filter(_Letterbox_brush.native_handle(), _Filter_to_cairo_filter_t(_Letterbox_brush.filter())); + cairo_matrix_t cPttnMatrix; + cairo_matrix_init(&cPttnMatrix, _Letterbox_brush.matrix().m00(), _Letterbox_brush.matrix().m01(), _Letterbox_brush.matrix().m10(), _Letterbox_brush.matrix().m11(), _Letterbox_brush.matrix().m20(), _Letterbox_brush.matrix().m21()); + cairo_pattern_set_matrix(_Letterbox_brush.native_handle(), &cPttnMatrix); + cairo_set_source(_Native_context.get(), _Letterbox_brush.native_handle()); + cairo_fill(_Native_context.get()); + } } else { cairo_new_path(nativeContext); @@ -66,14 +76,26 @@ void display_surface::_Render_for_scaling_uniform_or_letterbox() { const auto widthRatio = static_cast(_Width) / static_cast(_Display_width); cairo_matrix_init_scale(&ctm, widthRatio, widthRatio); cairo_matrix_translate(&ctm, 0.0, -rectY); + unique_ptr pat(cairo_pattern_create_for_surface(_Surface.get()), &cairo_pattern_destroy); + cairo_pattern_set_matrix(pat.get(), &ctm); + cairo_pattern_set_extend(pat.get(), CAIRO_EXTEND_NONE); + cairo_pattern_set_filter(pat.get(), cairoFilter); + cairo_set_source(_Native_context.get(), pat.get()); + cairo_fill(_Native_context.get()); + //cairo_restore(nativeContext); + if (_Scaling == std::experimental::io2d::scaling::letterbox) { + const auto lboxHeight = trunc((static_cast(_Display_height) - rectHeight) / 2.0); + cairo_rectangle(nativeContext, 0.0, 0.0, rectWidth, lboxHeight); + cairo_rectangle(nativeContext, 0.0, rectHeight + lboxHeight, rectWidth, lboxHeight); + cairo_pattern_set_extend(_Letterbox_brush.native_handle(), _Extend_to_cairo_extend_t(_Letterbox_brush.extend())); + cairo_pattern_set_filter(_Letterbox_brush.native_handle(), _Filter_to_cairo_filter_t(_Letterbox_brush.filter())); + cairo_matrix_t cPttnMatrix; + cairo_matrix_init(&cPttnMatrix, _Letterbox_brush.matrix().m00(), _Letterbox_brush.matrix().m01(), _Letterbox_brush.matrix().m10(), _Letterbox_brush.matrix().m11(), _Letterbox_brush.matrix().m20(), _Letterbox_brush.matrix().m21()); + cairo_pattern_set_matrix(_Letterbox_brush.native_handle(), &cPttnMatrix); + cairo_set_source(_Native_context.get(), _Letterbox_brush.native_handle()); + cairo_fill(_Native_context.get()); + } } - unique_ptr pat(cairo_pattern_create_for_surface(_Surface.get()), &cairo_pattern_destroy); - cairo_pattern_set_matrix(pat.get(), &ctm); - cairo_pattern_set_extend(pat.get(), CAIRO_EXTEND_NONE); - cairo_pattern_set_filter(pat.get(), cairoFilter); - cairo_set_source(_Native_context.get(), pat.get()); - cairo_fill(_Native_context.get()); - //cairo_restore(nativeContext); } // auto currentTime = steady_clock::now(); From ef6a8bae437e72ef82131c268c1326c7cd997f1a Mon Sep 17 00:00:00 2001 From: "Michael B. McLaughlin" Date: Sun, 3 Jul 2016 19:13:36 -0400 Subject: [PATCH 28/30] Fixed the default font matrix in font_resource_factory to reflect the correct font size. Minor change to the vcxproj to allow for a VS 2015 code map. Edited entrypoint.cpp to show the canonical "hello world" example. Edited the run-configure-with-* for GCC to use "-std=c++14" instead of "-std=c++1y" in response to issue #32 (note: not yet tested by me). --- io2d/include/io2d.h | 4 ++-- tests/sample-draw/entrypoint.cpp | 34 ++++++++++++++++---------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/io2d/include/io2d.h b/io2d/include/io2d.h index b2f9a83..ea1dda2 100644 --- a/io2d/include/io2d.h +++ b/io2d/include/io2d.h @@ -1447,7 +1447,7 @@ namespace std { ::std::experimental::io2d::font_slant _Font_slant = ::std::experimental::io2d::font_slant::normal; ::std::experimental::io2d::font_weight _Font_weight = ::std::experimental::io2d::font_weight::normal; ::std::experimental::io2d::font_options _Font_options; - matrix_2d _Font_matrix; + matrix_2d _Font_matrix = matrix_2d::init_scale({ 16.0, 16.0 }); matrix_2d _Surface_matrix; public: @@ -1455,7 +1455,7 @@ namespace std { font_resource_factory(const font_resource_factory&) = default; font_resource_factory& operator=(const font_resource_factory&) = default; font_resource_factory(font_resource_factory&&) noexcept = default; - font_resource_factory& operator=(font_resource_factory&&) noexcept;// = default; + font_resource_factory& operator=(font_resource_factory&&) noexcept; explicit font_resource_factory(const ::std::string& family, ::std::experimental::io2d::font_slant fs = ::std::experimental::io2d::font_slant::normal, ::std::experimental::io2d::font_weight fw = ::std::experimental::io2d::font_weight::normal, diff --git a/tests/sample-draw/entrypoint.cpp b/tests/sample-draw/entrypoint.cpp index 091c1a4..51609f8 100644 --- a/tests/sample-draw/entrypoint.cpp +++ b/tests/sample-draw/entrypoint.cpp @@ -8,23 +8,23 @@ using namespace std::chrono; using namespace std::experimental::io2d; int main() { - //auto ds = make_display_surface(640, 480, format::argb32); - //ds.draw_callback([](display_surface& ds) { - // ds.paint(rgba_color::cornflower_blue()); - // ds.render_text("Hello world!", { 50.0, 50.0 }, rgba_color::black()); - //}); - //return ds.show(); - - assert(steady_clock::is_steady); - auto ds = make_display_surface(1280, 720, format::argb32, scaling::letterbox, refresh_rate::fixed, 30.0); - auto radialFactory = radial_brush_factory({ 0.0, 0.0 }, 0.0, { 0.0, 0.0 }, 50.0); - radialFactory.add_color_stop(0.0, rgba_color::orange()); - radialFactory.add_color_stop(1.0, rgba_color::aquamarine()); - auto letterboxBrush = brush(radialFactory); - letterboxBrush.extend(extend::repeat); - ds.letterbox_brush(letterboxBrush); - sample_draw sd; - ds.draw_callback(sd); + auto ds = make_display_surface(640, 480, format::argb32); + ds.draw_callback([](display_surface& ds) { + ds.paint(rgba_color::firebrick()); + ds.render_text("Hello world!", { 50.0, 50.0 }, rgba_color::aqua()); + }); return ds.show(); + + //assert(steady_clock::is_steady); + //auto ds = make_display_surface(1280, 720, format::argb32, scaling::letterbox, refresh_rate::fixed, 30.0); + //auto radialFactory = radial_brush_factory({ 0.0, 0.0 }, 0.0, { 0.0, 0.0 }, 50.0); + //radialFactory.add_color_stop(0.0, rgba_color::orange()); + //radialFactory.add_color_stop(1.0, rgba_color::aquamarine()); + //auto letterboxBrush = brush(radialFactory); + //letterboxBrush.extend(extend::repeat); + //ds.letterbox_brush(letterboxBrush); + //sample_draw sd; + //ds.draw_callback(sd); + //return ds.show(); } From fc7bd1cc7bae9048e8fde35a11ee1ebb2528ea92 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Fri, 14 Oct 2016 21:58:05 +0200 Subject: [PATCH 29/30] Added support for linux xcb compilation --- examples/hello-world/CMakeLists.txt | 8 ++-- examples/hello-world/tga_header.h | 10 +++-- io2d/src/3rd-party/cairo/CMakeLists.txt | 45 +++++++++++++++---- .../3rd-party/cairo/cairo-features.h.cmake | 14 ++++++ io2d/src/3rd-party/cairo/config.h.cmake | 3 ++ io2d/src/3rd-party/cairo/src/cairo-features.h | 17 ------- io2d/src/3rd-party/pixman/CMakeLists.txt | 2 +- io2d/src/3rd-party/pixman/config.h.cmake | 2 +- io2d/src/CMakeLists.txt | 15 +++++-- 9 files changed, 76 insertions(+), 40 deletions(-) create mode 100644 io2d/src/3rd-party/cairo/cairo-features.h.cmake delete mode 100644 io2d/src/3rd-party/cairo/src/cairo-features.h diff --git a/examples/hello-world/CMakeLists.txt b/examples/hello-world/CMakeLists.txt index 58ac6a5..72f1682 100644 --- a/examples/hello-world/CMakeLists.txt +++ b/examples/hello-world/CMakeLists.txt @@ -2,12 +2,10 @@ cmake_minimum_required(VERSION 2.8.12) project(hello CXX) +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_EXTENSIONS OFF) + add_executable(hello hello.cpp) target_link_libraries(hello ${IO2D_LIBRARY}) target_include_directories(hello PRIVATE ${IO2D_INCLUDE_DIR}) - -if (WIN32) - target_compile_definitions(hello PRIVATE - CAIRO_WIN32_STATIC_BUILD _WIN32_WINNT=0x0600) -endif() diff --git a/examples/hello-world/tga_header.h b/examples/hello-world/tga_header.h index 4d5b4d9..9344b63 100644 --- a/examples/hello-world/tga_header.h +++ b/examples/hello-world/tga_header.h @@ -1,5 +1,7 @@ #pragma once +#include + // http://stackoverflow.com/questions/14025735/problems-displaying-targa-tga namespace tga { @@ -52,10 +54,10 @@ namespace tga struct header { uint8_t id_length {0}; - color_map_type color_map_type {color_map_type::absent }; - image_type image_type; - color_map_spec color_map_spec; - image_spec image_spec; + tga::color_map_type color_map_type {tga::color_map_type::absent }; + tga::image_type image_type; + tga::color_map_spec color_map_spec; + tga::image_spec image_spec; }; static_assert(sizeof(header) == 18, "bad size"); } diff --git a/io2d/src/3rd-party/cairo/CMakeLists.txt b/io2d/src/3rd-party/cairo/CMakeLists.txt index 584f765..55046f6 100644 --- a/io2d/src/3rd-party/cairo/CMakeLists.txt +++ b/io2d/src/3rd-party/cairo/CMakeLists.txt @@ -1,7 +1,16 @@ cmake_minimum_required(VERSION 2.8.12) project(cairo C) - + +include(CheckIncludeFiles) +include(CheckTypeSize) + +check_include_files(stdint.h HAVE_STDINT_H) +check_include_files(inttypes.h HAVE_INTTYPES_H) +check_include_files(sys/int_types.h HAVE_SYS_INT_TYPES_H) +check_include_files(pthread.h CAIRO_HAS_PTHREAD) +check_include_files(xcb/xcb.h CAIRO_HAS_XCB_SURFACE) + set(CAIRO_SRC src/cairo-analysis-surface.c src/cairo-arc.c src/cairo-array.c src/cairo-atomic.c @@ -63,7 +72,10 @@ set(CAIRO_SRC src/cairo-type1-glyph-names.c src/cairo-type1-subset.c ) -if(WIN32) +if (WIN32) + set(CAIRO_HAS_WIN32_SURFACE 1) + set(CAIRO_HAS_WIN32_FONT 1) + set(CAIRO_SRC_WIN32 src/win32/cairo-win32-debug.c src/win32/cairo-win32-device.c src/win32/cairo-win32-gdi-compositor.c src/win32/cairo-win32-system.c @@ -74,12 +86,28 @@ if(WIN32) set(CAIRO_EXTRA_LIBRARIES msimg32) endif() +if (CAIRO_HAS_XCB_SURFACE) + set(HAVE_INTEL_ATOMIC_PRIMITIVES 1) + set(CAIRO_SRC_XCB + src/cairo-xcb-connection.c src/cairo-xcb-connection-core.c + src/cairo-xcb-connection-render.c src/cairo-xcb-connection-shm.c + src/cairo-xcb-screen.c src/cairo-xcb-shm.c + src/cairo-xcb-surface.c src/cairo-xcb-surface-core.c + src/cairo-xcb-surface-render.c + ) + list(APPEND CAIRO_SRC ${CAIRO_SRC_XCB}) + set(CAIRO_EXTRA_LIBRARIES -lxcb -lxcb-render -lpthread) +endif() + add_library(cairo ${CAIRO_SRC}) target_link_libraries(cairo ${CAIRO_EXTRA_LIBRARIES} ${PIXMAN_LIBRARY} ) +target_compile_definitions(cairo PRIVATE HAVE_CONFIG_H) +target_compile_definitions(cairo INTERFACE CAIRO_HAS_XCB_SURFACE) + target_include_directories(cairo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR} @@ -87,13 +115,9 @@ target_include_directories(cairo PRIVATE ${PIXMAN_INCLUDE_DIR} ) -include(CheckIncludeFiles) -include(CheckTypeSize) - -target_compile_definitions(cairo PRIVATE HAVE_CONFIG_H) -check_include_files(stdint.h HAVE_STDINT_H) -check_include_files(inttypes.h HAVE_INTTYPES_H) -check_include_files(sys/int_types.h HAVE_SYS_INT_TYPES_H) +target_include_directories(cairo INTERFACE + ${CMAKE_CURRENT_BINARY_DIR} +) check_type_size("uint64_t" SIZEOF_UINT64_T) if(SIZEOF_UINT64_T) @@ -102,3 +126,6 @@ endif() configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cairo-features.h.cmake + ${CMAKE_CURRENT_BINARY_DIR}/cairo-features.h) diff --git a/io2d/src/3rd-party/cairo/cairo-features.h.cmake b/io2d/src/3rd-party/cairo/cairo-features.h.cmake new file mode 100644 index 0000000..7a4ebfb --- /dev/null +++ b/io2d/src/3rd-party/cairo/cairo-features.h.cmake @@ -0,0 +1,14 @@ +#define CAIRO_FEATURES_H 1 +#cmakedefine CAIRO_HAS_WIN32_SURFACE @CAIRO_HAS_WIN32_SURFACE@ +#cmakedefine CAIRO_HAS_WIN32_FONT @CAIRO_HAS_WIN32_FONT@ +#cmakedefine CAIRO_HAS_PNG_FUNCTIONS 0 +#define CAIRO_HAS_SCRIPT_SURFACE 1 +#cmakedefine CAIRO_HAS_PS_SURFACE 0 +#cmakedefine CAIRO_HAS_PDF_SURFACE 0 +#cmakedefine CAIRO_HAS_SVG_SURFACE 0 +#cmakedefine CAIRO_HAS_IMAGE_SURFACE 1 +#cmakedefine CAIRO_HAS_MIME_SURFACE 0 +#cmakedefine CAIRO_HAS_RECORDING_SURFACE 1 +#cmakedefine CAIRO_HAS_OBSERVER_SURFACE 1 +#cmakedefine CAIRO_HAS_USER_FONT 1 +#cmakedefine CAIRO_HAS_INTERPRETER 1 diff --git a/io2d/src/3rd-party/cairo/config.h.cmake b/io2d/src/3rd-party/cairo/config.h.cmake index ee1e43a..69df7a6 100644 --- a/io2d/src/3rd-party/cairo/config.h.cmake +++ b/io2d/src/3rd-party/cairo/config.h.cmake @@ -2,3 +2,6 @@ #cmakedefine HAVE_INTTYPES_H 1 #cmakedefine HAVE_SYS_INT_TYPES_H 1 #cmakedefine HAVE_UINT64_T @HAVE_UINT64_T@ +#cmakedefine CAIRO_HAS_PTHREAD 1 +#cmakedefine CAIRO_HAS_XCB_SURFACE 1 +#cmakedefine HAVE_INTEL_ATOMIC_PRIMITIVES @HAVE_INTEL_ATOMIC_PRIMITIVES@ diff --git a/io2d/src/3rd-party/cairo/src/cairo-features.h b/io2d/src/3rd-party/cairo/src/cairo-features.h deleted file mode 100644 index 9eae639..0000000 --- a/io2d/src/3rd-party/cairo/src/cairo-features.h +++ /dev/null @@ -1,17 +0,0 @@ -/* Generated by Makefile.win32.features-h. Do not edit. */ -#ifndef CAIRO_FEATURES_H -#define CAIRO_FEATURES_H 1 -#define CAIRO_HAS_WIN32_SURFACE 1 -#define CAIRO_HAS_WIN32_FONT 1 -#define CAIRO_HAS_PNG_FUNCTIONS 1 -#define CAIRO_HAS_SCRIPT_SURFACE 1 -#define CAIRO_HAS_PS_SURFACE 1 -#define CAIRO_HAS_PDF_SURFACE 1 -#define CAIRO_HAS_SVG_SURFACE 1 -#define CAIRO_HAS_IMAGE_SURFACE 1 -#define CAIRO_HAS_MIME_SURFACE 1 -#define CAIRO_HAS_RECORDING_SURFACE 1 -#define CAIRO_HAS_OBSERVER_SURFACE 1 -#define CAIRO_HAS_USER_FONT 1 -#define CAIRO_HAS_INTERPRETER 1 -#endif diff --git a/io2d/src/3rd-party/pixman/CMakeLists.txt b/io2d/src/3rd-party/pixman/CMakeLists.txt index f47e4fe..2294069 100644 --- a/io2d/src/3rd-party/pixman/CMakeLists.txt +++ b/io2d/src/3rd-party/pixman/CMakeLists.txt @@ -35,7 +35,7 @@ endif() include(CheckIncludeFiles) target_compile_definitions(pixman PRIVATE HAVE_CONFIG_H) -check_include_files(pthread.h HAVE_PTHREAD_H) +check_include_files(pthread.h HAVE_PTHREADS) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) diff --git a/io2d/src/3rd-party/pixman/config.h.cmake b/io2d/src/3rd-party/pixman/config.h.cmake index 7c76f3c..1f022ce 100644 --- a/io2d/src/3rd-party/pixman/config.h.cmake +++ b/io2d/src/3rd-party/pixman/config.h.cmake @@ -1,2 +1,2 @@ -#cmakedefine HAVE_PTHREAD_H 1 +#cmakedefine HAVE_PTHREADS 1 #define PACKAGE 1 diff --git a/io2d/src/CMakeLists.txt b/io2d/src/CMakeLists.txt index e60cebb..4841a05 100644 --- a/io2d/src/CMakeLists.txt +++ b/io2d/src/CMakeLists.txt @@ -2,6 +2,9 @@ cmake_minimum_required(VERSION 2.8.12) project(io2d CXX) +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_EXTENSIONS OFF) + add_subdirectory(3rd-party) set(CAIRO_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/3rd-party/cairo/src @@ -41,11 +44,13 @@ set(IO2D_SRC if (WIN32) list(APPEND IO2D_SRC display_surface-win32.cpp) -else() - list(APPEND IO2D_SRC display_surface-xlib.cpp) +endif() + +if (CAIRO_HAS_XCB_SURFACE) list(APPEND IO2D_SRC display_surface-xcb.cpp) endif() + add_library(io2d ${IO2D_SRC}) target_link_libraries(io2d ${CAIRO_LIBRARY}) target_include_directories(io2d PRIVATE @@ -54,6 +59,10 @@ target_include_directories(io2d PRIVATE ) if (WIN32) - target_compile_definitions(io2d PRIVATE + target_compile_definitions(io2d PUBLIC _WIN32_WINNT=0x0600 CAIRO_WIN32_STATIC_BUILD UNICODE) endif() + +if (CAIRO_HAS_XCB_SURFACE) + target_compile_definitions(io2d PUBLIC USE_XCB) +endif() From d7975633ad0e66e32c2dea70b0952d48ed777e9b Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Thu, 30 Aug 2018 20:06:35 +0200 Subject: [PATCH 30/30] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 0f5c42e..a4aedf1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ +Note +==== + +In the meantime the original reference implentation referenced below has gain CMake support, and should be preferred to this fork. See more at: [https://github.com/cpp-io2d/P0267_RefImpl](https://github.com/cpp-io2d/P0267_RefImpl) + + P0267R0: A Proposal to Add 2D Graphics Rendering and Display to C++. Reference Implementation =============

    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

    #j?MW$TE3nWK?C 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

    #j?MW$TE3nWK?C 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

    Usgqyr37;OR^dV!!CpxpXTPx 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 diff --git a/io2d/src/win32/DLLs/x86/Release/cairo.dll b/io2d/src/win32/DLLs/x86/Release/cairo.dll deleted file mode 100644 index 79c15147e0e290998a73518a8f6cb407955831a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1213440 zcmeEveS8$vx&MX?$p8y8$fB#Pb*-aaO{%Ghnz*suyloYZt*1lP9uebHK{#x5>TWqaOSY!cF0d1wFTBz0zE>uK>D9HZ4&p9*u642iJ zyT8xxuV0j%nKS3*InUd9p69&GoX_8HE4JBe68>c}HrobV>CeZ1|H)60%{J}4Ur)0= zIqCWHHx#u#fBw9_o0hwmF1zi^%f4`{`-U$pS#n$0{lzc2mqnJiZ(8DRZ0~g6dfVbJ zT{?B@WX-Jlkqhp;=8gK9ORRt2pRr}hn|S{IjBQH{etmDrettc|)Ay_5ea&xQTXK+> zb1b<^t_VD7@=URF8+9sSorO0lx zRjD>xZ~{;6xCZz5-xi=B+|dQEO6UoH*3~w0hCn9LCfIzykXbH!71h}OI^EWK1=>FA z4BL8M!$JD}i21#mzJnTBiLpU-9+xioys za!R@w)!2M^PcS-8lW*CVZn^CSo9H`mU?U2ic}l)|r2hZE{{aSqEUd|iwJK59IB!+4 zEwQ$o-_O8(=9f0y8;?zqY_U!D%8{Pr_SgaKUyaH$)XGhIqvq~p3$*Gkc8gXW46y;N zn%zeQSP}Cz#z!I(6H6DTJ)K>du-4d-*})FQHmUKW;fb-67Y!_poxCYx?+O|7C)-fD z%nl_QH8l`2uKN(}qJXjSPes&fd?b7>UbzEZ#^5g|*l_C!;Kvm(hHflI1~tAX?C3P4 zd(Z)-I|If|Jl!6|lLHn0sFWJ8vsSI5w`bw}%I(G_B<0KOQzu^HHCw zs87BiW7Hk$S*t#vsjNt!r#YCf1$~pzxBX87@pD7ezku042l_V&{ZrO^P!fGq;`bp_ z<6QXa}g`i#GyAjoBAi&d+Uv%5Nt;3QxT=#jI<_oEa8Mq;Z_>T~_J%+fyN ziTq+^XjSbrTvT$5N@l{&SmvVDGpLj3tOp%EcrJCcJQ)fa64V*`;j~cg40IZMk8@PF z8lgYtquK*h&wP@jx`I%u1&lMl#8C}^9H56IV0?X@K({+!e6X0_**VRAvYRTBOqzLs z{q6r*P|@=|vr4pa0fK4J5`s3>CT*@ZK_=SJU+h3tjy@FtpcOP~BpNLy8nqDr&Lax7 zfFB)rzX(@V@FA$>(!-jQ__5XE$Cks2+Ndq=1iVXQ2js)bbVs}9DX(6wwiDoAl%k+nXUyEO?(m_0~Q_|ID7%Z;ou_#LqYi%L#?xwR^vqhr;P=1qz`G zR`7H}q0hL4S3*2^xd4%)ArHiEWOEypMFqsE;x)JkXHI|=flVZER%PPsU(X?&dAQQx zoGE@{2WoTptLFUKD)_Szj3^_?M1crT{(_)EChQ0qiQ%jsIK0Tx z1M`d@z*-P`;4}TyLT$k6A+DP7!x&|SD&cI)p$+B-t4F!x( z&FA&Up6Ny^UXnqLS1L8{3?v?2M463_2d(~J13Ej3N`ZG3+~5QcxQp5)@Plh~uUx!i zbe~*ofY?rC(~AFCJgOsuj<;Y1EnUw!nmF`{M~i5T*3cI()KmC6Jh*VDh3ibfq6;`+ zyb+YAhIoNzBmy*C_pWjqAWW_0k4Sk}S+lkUuhPB9Rt-j&92@&G45qOgBVSlJzZVu5 zV0MD&GtMN0xsu)oDf{XYonO5_3E(MOqVucw;a2gEU%hMRiFf>(c$lobP^VFQ8;200 z=tKh>`T&I0#!qL8HV71e5t%8>MBuwr6pD=%r6ZrT8DFWOxOy7j;_I zEi$X?Os%z>*^D-k>nUnBKB6>^=H;)*HD3WtxCs-pfQj&#g<#57zE;g$Invt$?7Zg? zkn`~^Uq6$$Hxg5|hS)WW=BjEe>Mja9`W{64eeQXx+V@bGs%Bmx?)3M?R>>+}K9qfV zDDP#Tf#Lzu9LDZDe+72%;nr@ zhE4`6_$x^5fOXsfFar39(tP~3if%<}qp<~i2MB=_N8f*Bfm<3hAy34K---8Kfy95( zebD&Q4~lFU4NFiAmzhr>?~Tf(8^3pSQ{z{&{m|3@)R1|{ggpGR?(v~oBu+3 zbZ6h5NspfFW9d_9(3YN1xwUd6zLgJ64&{LnJw~!=9DJwP))_E<*-&g_zachYhd>hT z*k8J4WnzEtGj4?s+GSjoK`!Gn_yv#0k19M~lUX{s z7wD7r|LE_)r0cb=+p%gzFnb}`tv~4BLBlU=!gUH!utFU3v>*+OzF$kXo+7FVL<6Z_g*z!j>dOxuoFZ1%VL6Sp} zK=0Wg0VSS0*}25`Bm?#khLbaCIGNtxBDlXBB9M8BxPJhaeg<#hQB3c@R=j=8dW%sj zyfBto9PW;t>YkzeE47T-lI zKSaEftQ@J_mH(V)JmNOkM;ukisSa@Jqnib%a+ZGO4L*d+;L{D9Pk-<>@sr9n!y_;J z3-uB0&HCUM0{;;^>U#iH;HfuBlvgt=?5K-0SjhN1>gudcqpW*q^NFGregpLB4sa9Dv$E#ay;(9BY&vH!-)0JiianxhXr_e z#Co^|5BFOS19%t|55pP_=6GIeJ%2|$FS4E=7taCf`Dr|ZFvHr*xVisEbGTOC{c59T?_ujXLZQ>@ zk#A@d;W~*#x)vXOweg6HhO>)u?_eL10H7>xZdB$?v~`=UJ9x6o@@F;UuJ3S_57!fP ze{}%~P7fC!IK0M%Co>rVF5YC>!)ukExrm8mat{f>~Ho>${w}Xi$s7`b5PKXoKhiZd$cfuTJy<6Cw6ACnZ{eLy2D)GC;@9<>h_9Mb^Hj zF(mc9jGtF`XJ(R$;)Th!!VOA@T5eQ48xJcBMp1HNi-mZ3MH`@&|G3qdMnHdu+vG?Y z5M_)pJMYQ>uW=ex(R=Q`3O1dB5Wdv;L39s(XZ->}JS$mZC=lY3G-fB0o1o$7) zb$tjvw0J@T!`dS}BXy4_Qa^?@vLW~*sDQ`&#iOJJjUQW-2=MnU_#M`Wr_*g_#q%^b ze}(#T)x)~|Cl${vtk?&KFlgNR?P5U{7nlMSWDyJ64d03qy|3;jgDn8I`{@)KX6GfL z?{<<|ps@K+Es%OoAZQ$!XOb6CEr8_}1cUV^xio|@0532`{f9q@ zdvM`pA9607r`57Cq_0wcbw_3q*MVbSTg_L=qkTUCYl(`+fwV*1;4O(cAd=EFkeId#Jn-x1zF~V}( zGA2a(CtHa2j2a8^0L{~=g}JDA;|4HG8gJKaTyDJ{D103>ejcP+9lfC5JklD6CW%@L z#|K^w;sp5}Kv0cii5RR=YvlJpsYxe`X0QT9sI0;`c07{-JCQ~ZVD%Rj);I6JSKkkF z^~DYdD5{NlfS)4*!~^39fU1qp6ebIP@);N9C!5&v8B%^KB5532A2=2+4X+jV*H0uR zZ=_|e+Z`G>2+Vl>HEyKF4xmW)JgplATeU^FhiD)}iUWpcu$>3L5CBxVBm0IxhX06C z2&kbH^p)pDlo`;d!ELJP+zNY)f^&iE8&|ou1rR+ zilFZII3vk$-mYYRsW{~=S>f!fLt>u>8R=VvAE8U3MOmAy{Irb%QjX#_yDk?+CGwWW z+Yh|{{-U7KkgdBOb^HEF)odp+DL>ue>j1#24q$@zxyHYh5(|on1CtH2@H+tiUm$ET zgsw*-&Hokn%|>2CJH;uq(Sb(LoMWzWwbjrm9m=++LRHU-MI~EgW@d$4IYMy@mr*1N zqL?=-Epzt$6%YyJ`3jKdmr+RhX{y+77X`PJ@UETG9@*QOrS{CsJ`7>kC%2QuYQoSa z6_2vdUX#gW)~x)pcXZhe-qgy8FR6}u{1>yLEz=^FvAt>I(sNl8zIn(PbO-gf_=%Fk0jO{ zX@h$@m9KbDW+y;^YxG8MX1U2INa&f*MbX4(lC)>a76rQ^b7=}RQ6)c z^zc+)Y}D@EJa7cgSZ^{R`B>xKaE%K!0^v7B*s`U30$o0VE}x)B?0}s>b9Dtn;M6ma zU4zS_;#!V~nInB>}WcqS??jjfVwO5>rr*ofWx{J{S7Clb=N;1y4zY6zMQc%2Fj0<2`w8=m#95;Y;| zy;1o?iSCEgV{Q!if>?x%FP1hYo%2o#5);YKHz z8jb>)RC8zFi7U>4*7ZR+fdu(C)MJq*D-R?yGi&KZQV<*bQ3WzIx;eH>~*&7=Ut=wOYRvx`qm}8McTf>v7Jf`?-ir11k=aC73_&V8KPq@>)nz z#h)23QgiX5$vcZ|!G5jK1wR9d^ZZ|NWwAj@s4B#wZ^x%?Dn*Jev#GFuQ3}=TQD@5U z22O48#YuD^4>|nHB&{w^g!n;anCw3E($yIPN#@)$p&l`2ZC&FuSH|x~AW~A|2T+mn z%Qn~VNQH2c?31T#;UqC{&O>l|iizWW9Pc+LyUMm~AP|(MF<^*e5Eyb0$$;IPN4v^) zXWu8y_Y1Tc$3DLN8K*0sqdQ1*^TsYvaC$-OXc!}Hcv62+U-|W_nlA012yt<6YCVEk zA@sija$+J4ScxAZuY*(Y{vA0AQk?J7i~=0n3lvf(Vbfl@C&W%7FgTn*x4BC69t*d` zq8?kgKDNeVi@1UzV;?jW7x3^j=J)8$9_BCCo6FN@@- z{I;P5I?s3zJ+atgSZhQQ8`c)!0&Rz&bu+~CikAJvrq+9%< zl2(y2&rC^IvaxtZiDNd_7C#t1n`T#h2-en6M-fWGIHbh?jF(_)HC>YUHdOiq`^NKgd zM^>Ey*a^6RG4>Cd)t1teW1>ol9Y@o{=Tg(nGM{Rp(B)?mi!~dkxtsYNtgYO;Wwk;? z4RmxFk3Nu3QBI-AOEkM*QF#=<9;^%S;Hnuv#&C{WNtOv^r7;5&NEc7A*;vWCwZ(7+fSq;cHog>TPzcnT83WAESF*Y9f=^8j5ecp1y=Nd-MhmYcAItFcIgn zv37TOqTcQTB<}zNE;4IavrDgYu{&MtW|RW%2(M?ccG)f6kO#ojH-y^r9H zcSgj80oB_efgc*=8t{o7!@sw|t_%<2eP_rxEK^VkPXs)^==pL^ai(ny_+>qr}XPw@mx{uONU)+O9xf4;^?C43*P; zPv8lqpQg*OwgHz=Wd=xavW{{x5kM$HnjGI1al$M`Rw{wP;Cx;`RhI1h4QRL~SaXL* z8U8xypxd4CqpK#4o|My5V_Pz1n`19zM#to`L%=-P(;43rExm5^xZIE~J+=qeV|&V8 zgK?_Gj{BmQWqqsIn6#2CWi26nmyi!$cn5u_DJ1k0AllhjdP?GHZ4+JsOuLycfZ)0D zyD^9~hIVi!2QE#<9}$=4kU5bP!`ddO6C{;)C9t?A_Q5BkR}FoDo)j&QjQ+Kx>`$@d z(u$j78>R4#bMu>}$xm9e;J|3UPb%A%C|_536x?vH7u8knN_5+Sukx%uMsul#Bam(^ zRH$OD+zNH;*PQ@ztC3Q?5uQ?H29wjh&>f%s2`A$IpP?$Y%IKjzm+|Z|0C@?<#D2!|~WMc#c7WQCaz;>hPD9Im}56kwTD|#w%n+XB;4@@;ZEE~G7=w&D)Fs%Ou|GS z)i^&1BsGTS8fVc+Jq?}oZi%WqxB*d)Z|zaOH!?rDdKxOtd#2i@qF&{JQJOFoc{=AB zFVO&Xx;h>jR|h?huY=OW9HZ$^gQaVtp76~W&zyaCLv{95!CLBDjGtVD%sbbvC7A2TA!~z5y}c@bC>8n<$BaZ&N%RoC~apK0pTLgLt~e+ zpbWX`mA!AVq|*L;&3Q^|sdvko$uzY+0vA$FdN0G6=$E|BQpE0kDIzn!-P>#rzlK&` zD>BE#=nn7?mdgf>n?EFW!gv_|t(nwc#6kR**Z5E<98=j+$^sY%0pnt4vh&b@(`<}$ z2L@uR!3AuI%$_HU>-QMGy}OmxBrGf$6@qOrGs|DJzJ(X1BCtuJxuQOZ=TuXOe5%k9)yw1t<&uo`xe{Yd2vXartyl$Xc5 z2+F(kC2l=R8K>wg-B$Ttz0#}+!5$i`F@*cw_yqxq^`&U%cDI$GQM2pCDW4nNu;~qU z-cz7PVu)9|{3tzm(i_`b)RSa>Gv&p|R3xx1Q(n;9HSi@YEp}#S> zxwRM%a93}WAcs@_SUEEK`ULM1Jd8})T{%*`r{*kv8#_KLGHqe(g`z~moAdRRR2Mv< zmJHWuz`*2%lnUYQNy6lDvE)wUg5+Zpx%asct_^`O--H1iZmcfJT-6m!OPMRN=5ime z#(r$~tP$VByqtnD%wN)H8=ziju(5XrL*CgEtnbUyGrY6yz~M4EJqg0*{y>hygN7D9w*b**p37^vvRyv@uu0V}o0rK9;-tC1iKR?;oG1q7lAW?D< zgWTsV2y_B)!DGHNZiKTxbHVuN~eSWpf-iPZ3Plca{AK*;Hx;ExIGcvAxI3wgEI3-JWcTjg_ptE~CZg)!S4y znr-D->+aYd2Bk`2u5gkiE1w;B12k}Y-;dPMfOqU5Hwco){^1>qOapK80JO;M-KN|} z(yOe$1i#)fC00oyo9i6_rYTVxSYb}EmIR+p?MiJYN6kB4L&vOST#W??ugcJ>+Vx<^x zN|p!yxjMUyABft_+(xsg5Ua<=SI8@R?DqxOz5gtqO+6p~-ow8#{A;eWsaN6JkL!jf z;F20^QGd=ScpOQc5RVPGQtV?Bu8CJ7m7>Wf z@y^TwjC2^!qy6EH19PEJC4wj8O&fReS1d8e)ZoZhlG zlBV00<7Sc+w^n~2qj+lKojx-cG*tcZLo;iVB2+c~);) z#F}n_sgQ{bq?$(X!j_4w%0$AM$kITfX;Z*>3k3}a4-cM)4PZDOlO z*c^#f#6~2&Y192RZ5830S<@EQEy2RM_I}n-<@Hyr_5r$C5aQ{)!VvExf(bebH&p3O z5|YvP+YmLH0(~x{0(!;kn274r8&KBH%L@ER42yxAB$i=w-~fjwCHzjkPQruU=A`=) zeT6F}<}X>3%DU`q;TAn|qQ-AmTK)EVy-C%(?6D7u!e_I#DzW4@^`)JYt+45-w-sK=tcL|^VtW$M?q~nu@SnvlqNVESf-|}DzBqUfFlq@bkuKl zG#D_}!Vt;tC@;-B`nyV?a}j*A=jR)3e^+dYFD+hZ`6guIk-r23&4CCzd-t~_PYL@k zH?$wv)KY&*UJ8SZxyuGHW zQ5oioKvq}V!jrm;CCCeUgxG2s3=NGS!`K=gAS$g6*gAts{B6|Au429LFv+WoG{&N` zE&LhUUV*XfFUTpzvK@t?GNn=|0j}yqPH>#6La&1Q;JtL1Z#aWmHjThlze=`p?LRxp&#SIeZ!P&)Ljp zhl3J!lfB-FT1Q1e5D5tsEXKSs%h8dQ;=V>yzxN$~|0Z z()gN#W0|O~;b^ibTnGr|{y0F0H0Z(U0TFmtVFcd|D)j(_`Mm(ba$;hq?4PY77p{t2 zxGEM@;Tf!nt(j*7UZB-!PQo7k9HKI~;obtPLqrPpK1M}xtHCJ2I)98(Fel3copUoQ zyNw^*3B$3un=D6L8nYuZa7i^Fn;pY7vLLf&^g?dX5g>a?Akn-4fvRqroyI!8UX#o{ zq+fsVIw?i5UzYqYC}bJpIor;bN!}Lw8i{?7{)7(8d<<#e^flOg#K(+x^<|QNCaOP= zwb(^`t!6g8KFrQQfcIUL(Mxc%g`&s;MI`qe`z=_zkZ8%U^0j(<3#K|sd-XP{XJL|i zcAdWghuOSa2Fkt7Enz^sR$`8|?Aofb*;RKG`RIOjRoR@XJM6mSVYa(?1lgjm=;aU7 z4uUK#h$bEAt<0tapA>SQjILo?y>bLxQ)kCS9L$O!yFBErx38I^&#|Q-rHGul^e!8# zlk|E*g;SULZ=ED2Uf@<^@^JYI=*wlmH#XV^G5-fG8X;VxIVUKgvY;LAnYV+m_lNX( z`W+IjZnEEBQ%CrDpG`uS-_@g%eihU|k=k6c3=NO>C)t%)*YPe&=?ZQ(gM-ut0F@pl z-*w^q9KVU!A4eBQY-~*cE1(eZVLpe~4-v#@Qn{z5MEQD>i^hcz$vP4(Oj7t&y^c$L z9jwXBN*`SPYhWRw7d0zu5yJ6HdUGwz8CIefkt9p8%`{5=SL%5W6Bgs@2}*2Q2$s&7 zWFXC!jKjPsiG0qi_Cq|A$kmA8d&ig{1`qJ1>P`@0QqmAz5`JhYH{I#e5^adjXq-e2 z-A{g_OZRtkf(50NzlCz8{9M_l{9M)QZM7-COQgfhw+*KJFf}NbU0gikQcij~<*yP? zK3tHqkuJJ_UUr!j)McSDzfRK;@~NYl?Nl9)n6s5M5j{KzAYxI?7GB8O zJe4Ef=TG-@qjM`nct(nCGbJ=8co2o6 zv>r;M7@!h=6t*vfpS&_m!9lC-c#X80CrQY^68X&e?3HeK6(~w>HXkptcmxW3-fgQb z;DO7z0N$GqJmFFkxEv2W7C9Sl!z=^%jm);vCS~g3Uzi_afsE>kx=N9i2N(*et|GKE=m39~zof zh*p3lP`U#sg*k^=AJY(D{i;BzHQ3=g?tBGWQNTmGKGH_eC_tFgxC&-aO2Tp*IP@bJ zt`Cw=1J4YWGQ|NfwmT>mJP3y53_gR%CAM(X^vK~0VRoqaM-hww%l zZnfbrF|4@&BNa(Jpt*3MM=$}ScIfyZUPk8(VRd(=NQsez=`68(lJP?>iVokgQ>O2vl~jt49E0AVWD4c+@KR9<Q zKm=z3O)`3pV3M&OlZ>7ddc8AM&y_{0UTF1tH%i)c`@>?qMtS5rf;Fb%?hOoKdWStW zs_Lx|OR?mHR1tuHIYrsV3bFz7Dzai7B^hdJY$ME(a%Fu#x=5tuPHh!hg9UH|Jjp%U zDxxOH59TP0CvdOUjodI?Y4uaZpR$NXsNsS8i9@9Ho;=y2+uZyTcT+;_wS@iKIe!TY z^CrZOlfQJF{H5dYmtIXz{0;Y)(u7I2`6+bHHtXQASId&bYebQ3u7F-SLC` zg%a-tW(r&=J`CE~N*oNM4Abgks1rC&o$TzgBpR%vS)%yJ9o1qf);aexwd^INcR0!d z4#dF7x$?nXhdYab{&uX^zyl^?T3ncBP+?SJzQ>Q)N7!xZi^B4l@IiT6i-Gbkn!2Hd z8R5zE^%l1%k7^`whuQ%I8W5mR8)(yPhI2wQ>>+A1pG2_()s~>qW*F$aBC=R~A-G0b zqzS!kWks=(H5XF23HUFEU77b-!Rq9^$12!nd5_gl5am$QP(TcUrB!xl7@A9(0g)dzQTg zW+B5>^DeO~iOZ1Biv|DpUPL!9BI_$@?0sZA<9pbP0D|xMg<67r;PSSqN`k_L-XJ1! z6vV5{)I^=iy_0xj%awCTlTS12W>N7O1bn!oUS+9g4X*mQ=my)cQ|@ zjI3ln)&ZLMzv&MG|47OaWuBRc3TBB47_I1Sq;jCy73OO&5)G4b>~l6HP6HRL`IS|0 z6KWuhixMsySFNSXKbcjl5~)>n#dK(-usx?vu^oE^p4LbNI|YnuVcI~I=%r9JNp?tI zS(Wgs){=Pc-0MAdY_A}l#}IJ0Y4~u{Ca6cqY8P%8@Cvef+A-N)|ChT#(l~i(9Y&8zOa__a7|c8Z=^(>CJ?IERVC`Gt*shP!m+h- ztqwkkpkN&*X{wG>FbO1Mk-u=-ggcRdVdTfys@W|b2)5I%N84#}1|lh$rOwP!M~5*Lz`{_>5ryg}oKlT?okQ<%!g#%rSR71*q2z<2 zXm=;O9-{_C?d9#Tp-Rx1dFHA*Wlchv;tsK%bF%wTq?_<82XESOrKSfe(O zj8q?@ZXLoPxl8h0sFLH($GFnmk zd|o<02O=zBqtuZ;iX-$9W73dBHULg9N|awb`Zqb2ltXYSiaj{aSy(sa5V&P76_Ro>?#rIow(&p}26FzL1)w`3eB!(YK&TKrpj2S7ki>SU74}EA1xvdQl3c=GAuS4+G;SB1 zOD*-lE^tuodun=M7ikB>Emfv97FgQ{6TpQ#jqCxJ_ps7_7{qttJsyx= zm9+!P$qw-0B}H6YxE)Z7PBd~mpcX(if(vRfjL#dRfEEpyYD4T<)r*d-_mM3?9^08f zM;P@wT0j`02dW5T5@v-R6s(|?z4K{ijwrjacj0_80WN=mm<8lU?#f;1XV6S5nmLGd zfoLZEIO$^g8#?e920Dv{hP6lW#2(O|z=cn#<4P{wlenS>6hg+5ADRptev%xK*;u=+ z4F3miX-=q;HG4Yw@CeNon9GMp&3KC5Vr>jfXH)fn?t$mYH=&l3vG=K5eO|ecS#Idm zatm_h60RZuLk{EPpc`P5Y3i;#cHABP;?VJZ`}P$rug;k@#m|}3#L|jS!d(oXYuYx} zoV1-L$yj>yZzaY1(-*_YSsdfaU|~MguWiploxr+cG#jiu8cS))F!_?^_!yGFhP`rh zfNhSAR*mj0iEWgNx3Ky#?}XK7>21u^2>kiQqt3N^WdG%6kBZ91QqHa5_GmVY<{N7%9;H&I&U_XQ8s(bI~jns>`wUvpp*5MBj#lGOn%D&MJnasfco}Q zQbWoo0QH@q$COV1I-Ac~&*p%($cdKidMf}O$pT71_MsYxloK;ZKLXMF9G}N(h(`S6 z)>a}`5i;I>FO#7upsNsT;?D3U>Ov!#BI|At(Z z2eBWK)*5uuoRg<`C)iYDl{J^M*^<(Jxqdlba2pTlDnwr+av*liW@B%Nj5n=h{b_oK z%&xVw`F6`})X=DlMpm?q1;?L6CfXRFu6BA;n9ZPyuCpv|>EdSS6XbC4FaxRm1m{FTkZ+}=yHppRB^VMpTsqxsqDvi9o#EAzAC&JU&Y zEoq2tWZ$C0j7jZ4>pL)l3$FpT9q4YW`PMvKmEqeV2?&Y(TE$c1N9FkSey9vzkJRjX z`(_8`bR7x%5Nmc86~XXv*sxm_qmM1pUUQi;OhzGg!9YLNvJg%0U5cqo=zlloB|e+y zfpT|)1VIq7+SvBCNd_hUB0xzsgUwOJ=h6>g-Zq1&Kvd-wGlid~Swf7osEQ&3xFzGJ zLPQpc$y$s7tF}nkoYI5CZ9(iG4{_l<=-0$#Y&mSUbIi%ua}n3V{zdvVZUq~8dv}JrqgTU1#=K^zG#~1+cUM_=YyQf%>7Rj#f|*RL;8-fb zIJVIeftlhmOeeSJNAbrau!W|AJuB=NQJ%4rB#mD_S$zx#kx% zL}Jl;iOvVhnqMr-C*qFdR9~D^omTM(FCs0Q=K1|5f3(%+k$xR^HJwWO`B~B~)WbRLSpH8BBSGΜ!u|)yLEvP-dU7thi9{7RXPntI=LF4{)8eXkMj_~b zD_raV{Q(sLa}r8h!j4vqOT~!UAygl!As79;<=2ny#fhF_EC$X$J270}hu!ovjjqNW$d2DHmIkO zw=diSQ~dybvZi`Mq8PocY_qp29)Jy>sExPc0^6P@t3`qG-n;_2#XG=AtWlHX{cmD{ zGe?hTj}~N7*#8Aq2R{EWJ@fuhbvhl+RCsAzdq5)^$li60+<%7vH zMv;*$3WT>L8r@!anlyuXR9%)nGC$_#dW`FE6C+dmOR=AyvxJNRxCrd-h~kLdi=v(3jpG0Zm~gw*Ny|S+?0dP|3iE(d$d#&js?U!)S@=oaf=h@r~|a8lsa%P zvGEO8KN714o+JX+y3RW+f=Mm+@r;dZ~IP50skqO@^{doh_ z$nVc{h56AR2~&vZ>?F7Y(*CC_Fr?HuVFcqCSPH>s_U4!scc;`pJPw|lKfeC&Jc@{@ zRsRWst+4*_@Z6H0-*zfIlpjJmqrcSnS2!4;8}CLF89a4_TG6d5=oz0QpyPXH^iMG& zd3n#qJL)foB-g($gNG3)#gT5H8Hk8Ec%HI=4N}~Lr;rRG6w2?B2luV~UYyd_$nQy( z5c9*mDNI!+XVszIJjw|)^Y&rJ)nfU{SSEZ04MKgNM!$t3?ao)ELF1WUQ58fzcrM^x zpTtRRF$1b3{E$w<6ugD?M>*DW{5<~sWBKoM_%P+eH;&$S!g$N;MK*u<3evMADkEG5 zC~iX=U`QV5o@is;J8@r0={PovVy=Grzybfq23x5;JQc`FNw(2!dl3`9#&PiNdA|TY z;Dh9s7lZsN)9XO1>2+={VxK_Eq_@Ln9pr(K4){i{4hx^*;>rb!WL4@gu6+ zi8fF#Fu;GY#t|ea=QJ8TLijZ`49=Eu!n?M2;79IYgJXEddrA{Dt{${M3G74X6LO^S z#Ri<8z*W=1?fF9&XCMo{$eBQz9RTuGLvU#66B{3s-|9~S>vj8WbNex8&OgclLKT#< z>bLT9Md4eN?SJ-t$p%+Hj-;|sG)N~^BUkqQRKO=2*EG|yNK!7_B9To91AYma_MkB_ z&Se|YZ~?tzv%BA|G55Ah&EeUp1g)p-);zduD+#(^_B32&AHdBL@m@_ zet*}`%Jp}UPOQ#v%xo_||MqKfHi3noa)F=x_XGFj>hsBY_yfE<3g8{!EeZSX!Jk?7 z9R^G_Cw~)^>Gdl93Gr(K@YpOC_TMqJAD-#?u#UNAL3GS+6L#2CD-Cipm(GrKu)#s} zipvbC7ZO(k@m@9qL0T{MxWe1Vl*eJ1~t7io=toc{|;osxfKT>dHlB)?{o$gs}nJVDPxzN0PNK`O2U`$0}DlnEl4|TvGJhh5#hd3v2 z=DEaVp0fq>OgG#05P>Wn|CY!fGH%BNEpbi(fphet2Km=9(5f@Pg6l;EqF63J8Cztd zjL&{ae)c^6Y3G#EVh6CGQpkz0xNF(q0br9WLSc8)$ln%~~T|)-0LJUm-LlRHl$WiOw2#;@Ex%25k zp%S4V%x>mXQfaP8uKv9I3rrrfRM;!&EY)-QKSPxpkFT;Ei?ed=Ego0?8>cHjj^Dab z=2U)Lm@6rWkZV5=AGP`TxTK)SY4iK?^MAl+6f7~$<%br8i2)BB-)TY!u^68~Ko5z0 zzQ$7leX^jI9K+=5%fs*e;O~48R^|%l@?!@}-uUWkIkin+u2{CgT=_iw1o9i3Tu>^P z-)Guy6bgE<7ja&k7r&qAjx)#$t+-ppk#_^nCNP+*@2Y%z@at9f9o?T_OeitON60RQZK ze8jD6yiw43oDuG3KH-jt7^mfrv{}WnD9XV>)BAT5 zZAJH#_=iU#@55p%dj|u9959Tp6x(o&6%~d{P9+1zlV7Kk->3>Y6UW&FiA}8625~{e zhDO7giD7M(j7cB(P!v~1PBpFK31FJ3xWeIRq0Qor@H)=t!w&*lV6zsaX_Z^C2#N0{ z$43*<2)@ThSB-vLfnX=Ng0r=-#BSjPh0>j8{OSq>5iqt@(1h_bXa=Nn(!#<+xW|fK zET0V1nrAnnQRM)Pmf6ydDYCg8xYBo1HLSy_z)O-u0hBA5Ka=pHh|nc%um(Ajldhqir%n6)Bmw+C?4D7 z;Ps14m|mR}Fn;w#9_2y03ZxU3Mf&$dI%WkX<7C>pzi|#_>$L&kT&(%M`O$H+uvouB z6R_ApLCiv4omiO$r;;|?$vBMhWJYN`1PszyniZWiGl3ZioN$WkK}?5Y3niu^YC-a| zfD>rPkdeYVJ_z}IteFG&_!1~iIb`o8{B%sP$K@LSPHuC z8+6?o!Plpi;RosdV0Zxt+ZezZXjrcIP%mQqpn)rP{M?9xzA=l$m%c)WK9O5AJ6(^8 zYe5K=A~>`@){TS~^PXA_V1+Q9QAP`2v0;geDwhqSFyUNfyMe`XfyLvm7xbkcXJZ(J zNm*S(H>b#Rg;}E|&p#H0EyF3B|NmAzyO!D;Z!uk&Z8Y1S70<332j7%zR^Bgb{;dk; zV1y#u&@Lp!8puMj?V&4Xqm=2*2(&fxK${XLCmgDX^v=)dmd||g=%A^0%7xyUj?<^V z^;eEy@F&gsLA3ctzG)4!ijjzG1HQQl1FiVDFo}Ovpg%KC{uf*F-);QrGg6W1S~>7Wflrt3n$`V_h$7I&?)rO zbKe`MpK|<~XCJOdjrk^9NYq3!mCOGz{u4pO@h0Ge&Y(!q^js~R_4yBQI)47@JJkB# zkDlLpB>z2!C)l_5t2Q-rrSXX$aW5(sRq1pa%sJTl-at^h&$cLU{Q~km_#fuPgVi60 zZMCzHR)vfFT0wrl!_p?(w}ara@vF!9kSEgsjr9bPDOhIm`aE7GeXz#<>qWmShNd)+ zV^7sNP%+MF+(?VjFs9I+Vj2kRu$}I-{++dC2Z+P8v%?l4^xcIzp!7ok|L?q;@Q$zy zu30MbtNa8`j!(jeoyyyh5ic+HtHwh=C1wS*oZsd`WaqU#jsgyr25N3*`*}rg~=v#OZZ3e;=HtiZ0eX0IJo-Boo z=Oq3)))MS5Vq*jy43~?rDeNOUA2dFANOXRs%A=s;Kq&kkI4G&{-I<=sgW}wHJC-u7 z>_5{8cL3LifJB@L7QP~O^32FtIF-^JB~cIh5fYs3c(A_&#FB5FH7k^Ti<$F;lF>h^xSclne5X1=TN^ zJLtsz6&wnmiC)28#VFo*gEm-p_4H*!v=ngZ6XG1@W+yF@3DcGL=S)x zeDoIcRN=YjsvHw7N8oM#$i?F94OQ*tgbbE2}}^DLL~EOK6D z*O^&>7SDV_bC2F9;q-$PItY)e+c_6C!q>MZa9Rix$YwRU26A1T6e@4DF+Jcsf1cBO|Tqk-RiK@U$^X8_l3D zE4Ml(-kdn~%?a!c8~8Q=fCQ7|ehWkb@*%k?vEh`ZXo2BB6vwMxDQcDqET!_}CI^Njh56$u{>O9l-(<&zzPI86%}SBg5Z z=>t2&o1OR!6gCxtZ&q=n(H4BZYu6E5;}i}jQlecz9ge9XMn-k-?_jp9^-2kFtKRncg3xkYP5In379Vfzvag?mndz~{( zU--j;?I8!Y)Z$xpj@W)_*;(d(w+Y^o2u?1+*~%VT4p;=%63IUeC2fO9K8 z$h3&9t$@^d@21}f#k1CWaEI^7-c48jsrf6}T8-zS--w4c<0kxwcZBaH)0KG6!G6il zO!*!Cf<3>F+Dm$Pk9xBGKblSp9YOXZT-lNhM5N@<`-F!Li*T(TVi@3;!&m)685SeN`3}b{QY!8+oI4>~n0F zIs|6Ecb~=7=Ld~l*mi@ylOMibqiR8n+J7NpP>bZ4+p#sH_F?`NZ!R!MqNU}TUs0o3 zn197##(Gmi%^~E`0!9$hgIZfC-zFDfind6;_SJ0dgev}bn*H%KNVE_htFeQO>l&ZM zQ6Z?Cqs{7|5=Z2Vyl4mFh-d$c)vFt09~MP?q`&hHsiANhwv=Q~xS=oNxbmJ|cy{MK zyLq)iV;NV|^tlP^#I{cW{uoYd0~0;w4qy3LQFz8<6R;2xM~0R{*WpA^d@|#_u1@gh z@3~Ej!+5fV_uVfFa|DHqH}I8C;1Wxb%5BOpE#kp#1#WfR@;u{2eZ~!gi-6gN&ZqaX* z_Z$7^jLTxwf1Qs5oEc$mka802U*PiQ14Xeb9LiagB&D93K#;LIRlkeCVjJ}iS}e)! zLE&D^KaFpN@1v~e?gjM8#e87#GJwnV1J%w)Vmgux582Tc`|?cbD5(E*z8ltiiTW+K z#k5aPGv3b?t$fsY|N2|`R2Xna`Cz*MDfr$;Xctm8@|4+>LK(y(jzUnIF}j)g%MUB%&7J`Lx}nkb za+2XA8Bi?*2N;zlNTm>n$xdSjZGYJf%NA(uC66^R%=IL`GK&2mcp!!o1EoP>P>7iu z0(AX1xr*b<4Uy!5#-i_&(|9Op*wxW#glM(*ZZ4I^ojS20Z6QM|Q$u)rJzqR*XS=bV zfiEY-nW3<7LcS0alC$Qfw8@KEk3x zoHE=QjE!h?rXqq66gFcScs1SF%|3(&zL(vFPkI%X)EO} zz2MCs4urCr@+Y#b8hBve)g(8z;=qNii@aI8kRJP@~zJ5u5| zLKbLDBAC03$L=PQVigXO@{UU8BoXorpZ-Gf=}WmskJDZXeE8{bFvE3Rop2AnC#hFh z2S15ppmG9j`bXglhBD;rhi46CC`b^VLEY!pb|`Cfi|@JS?>8oBXnevEIs>rzg2s1u zKx&ad;~=&m5TBICHsK&A$i{8=(1;_p4O{Gm{quZ1xr>#EgIi#JO5zU7Fyvx06|4X4 zICM+AP^m%g(Yvkle|lopN^w))L?&XkrzdGDc$|sQgX4U01P^`d63eZxthdayzlB&7 zU+9dKB$|uhGImyO?Lyd~lJz*iz0l|EQg8V=1G4~?xA7cl;0yqT8+pwnK!h86RKeMP zs`tf#-SD}n8CUHZ=Qe(YHGbT+JTG9R`FcNzD>!~gnhI1k>H<~xxMWeJ zG0~>!Z8)lwpVS4{swjnx>Od~=AOp{np5*qWigV^a@gnsLCtzf2`e2=?slNyZ8zb`q zzM}%inNhIonV@kCfkJ$_$pQh*KWi2OmBztOD6#0Rp}PO|0!Jil1w@oTg$s83yFJ7q_g=L9ZZO}N1Wqzl$+Ma7Q%O0ffQA?h_#}n80xN?1utEJ~@p)^0tg*G{U zjjtrMIz`G4InlTMcXQ>32l_lpHw7Yz*97KQid5pLlH1MLwa*RMY2ve*roj3Wlq5I62PP2ANU$U zNfhL6CqO;>R6d|Uk1ehA7a_WO*Dt7LqAZ}IRkZK?%=A0(>8&og?n> z(UObB9q}ap`rD@g6tNr*4Wep;#(KV}&}0KMHOF1V-}&cJ^P{M%EBBBVsV2Q`*ioK~ zsykr#^6JVN(htRjAbm%Dp$E-pWknL4LZ_{lFOf8r3>q3WZa2 z#NjB;t(cAq@wKGeq{&n>b%jm#%F$9?7RO-Dmc1=97JIZ<&p7^G!bgHyB=fx;M^w^# zyLfJqQCh(XmXyu>>LN~J#2yM&Z7Lq~F2NyDcS02L6>;*@-v?+kg-d50BN~S3OqKW@ z01*ahu#Y;6qDugq`zeY(0rM_I^_;Lv9NF_oAP(1JkwDQQd@rcgz`Q$V5a5Cp9q}fW z*4^m2Q#_A(Q%d_74*!BFMek4GBSY;wXx#SUcnq4TSG|73-?;qLf!`d^w?Em+>6i6n zF5P)j8G7zwY8OYY<%g zQSlFQbx|n>=BK&ai+J=;xjMkC$CDcARPz!vo?1@k28{>K8bB331LbI3p^ve`*@Lq* zEo3zEC5eJL`Fms8PXOL}9%uoCrogkiNZ@(&M8F3G%CS}5wlKCNR|ARi{&PU7*hmY% zNBrBCFO4LR!X6-X;4%X+GEIa4ElJBrfN5ZA1v=2gG7>OZlrs`Y3CaQNK~M7#k39&D ztoGZC0kJ7j)E6@5@HHxkuPx3`&jShef@C!FC5u9d=YBwi%+47OcmzYjle0Wy8^*gRbRm|$&92C_D4FprrJWX_* zvtcnx6=eIJnGJ1ESX~@UPauF>`!EyJhM+7R?N$v_ww4W%i>sHiA#!T5C_>gJz-<~L zM?Xxke76Y?r6R2r=m-D^IJaigPvIndv+0OSgtVwE?US#~RCF5G-ok~B zZ&2|Cj30fG9x>B|@1=omdbQPPgwZr|9+@6qBkg)kSr-P`b2C|GPVll)7xMZX+I)_`65C2nNMZw2)S&~3~QWG!=EGABqdTJ{}8pE zGGRV+Kt@=49Nf^Gr*`(qmFj8 zsfn6Otf4{8gFGs)34tV5UTu-4)C$53LB&9v@EDF`ZEIV5`?B}8_j>R3chy^~v|3CE z8ho{AYl~NHv9*9{D0!Ip$!Y6>i#?wGvOhuAix!3C?92h$ zA>pfU71x`e5Cr~HC#y3vhEotS9>pG6K-plpy-in>DWIdjMqhG+cr4^46 z<%5`BVAok%X=3PE3aCq9I&|06qKN(SUSR}(s!6nq(yM9@#>eMOB2YUF3OPXGDf??T ziO>@~JMkpY9Goc!GtqG!c8`V?U}{sAn|L`);m%jgXehIkh$r!;bo#hcM5!nK`(&>v z=mNJOH=JuWzCyK#n+}d~e4#UjRsHZ@F}d6C;s__KA3*ZpNT@!Btg2625{{qP*}eU1 zq0kC%CK0f|wphF=aXRaqddU79Xn@F@288{CO^5MQt3d^NAu$)3j8+uCobGM9TeGjz z7>`}^gkv$zEBc`YI0l&&i@iw#g}xB~DaA~evO5V6ZjTrVtjC%Zn)Ve#R7DSXBY5T5 z-JcGH?Df*6b`S0kRp{!4*{=je2`=Y$sNjS3=Ps{pI5+X3kRM`G5RcG$vA)QI*fVuYwOSkGLA)k&XS|c53mHId z;$rbuye&zUSQK+4KYAOt#WYG{Ud*8Yr*+@y4T_-(rnGjG$Y883U5>`bha_jejJsc! zjsEg%{gS$zGOuvIfJZo41 z68kt8BYu8socN}vt@uRuZSY<9-TY)D!ffy6X=r<${+8f9)MhrmPQ%LFTxLd=K|v!+v46RPnY{h7*RQJuxRW;tcc+KgCmZtfAphjrNs zo9xy9i1KYnh{oRo!B~{p0}Om#jlBT9f=siWOj&ASZx=+#n8Z~VGUVD}FUVG0qSY=Q zlG5c{`&4!ZaTCS=i}I1``Q2H|iym9v*kj5Qwv%R;b;hTrdvh+V?e@6e3N^&sd}_KG zT-g2{%BWyr+>)yta6nTPAStG*00%vbh**LWKD&e^>vN}-#LrGXv=y9*X=C$7ZesT7 z9QUYWPrTS@vt;F5%zsur^?3WeH1r~s72v1SzSvlcg+mk|+%_1)JJJuz_J)-51k<+- zSUJ)ycn8@R2gV4}sygjjt*UgfE45(j=2F{hwoa!u zOV3b^FaBK2{sKOpEa|Z=AEtNj8Be~;F8t;jpoNivoOG0ov*jRb0ej{c@mnGhV zADWJVNBDs@v$DwSruZRk9z3y-it>3v$~z7}{I^br^4sU|mu!mDKl=^Be)3RFJTWcP zM6J?jqJd6qWa-`-tWpQ4836&J#tTOUH~o^2t>!Kc*H&YQ7)Y91M^3qG3_CWOTUp`# ziJK$Xe;3~>0qh^CCC#6QO|vAy`KiBkG1{jY1*2;+52%F8{Dya(cDMT?Q7kYd=DP^T z(*%SovSH(*Qxx0D9V#c{m!zAo;iWJPFJCD&FMH#jcyY3KohNa!Q^|QRsk-F$e+f5- z*mUVtXg?K#qyte!QiNEP*Ah#bv=Hb5Nwwa@1w3)uTp3mzl53kI30V&2WV&c#ij?a} zm*^TJU5ur*-QN6@F(QhaYZU3AlzQyzNYsAnqW?&iirMSHkYW1Y&|bsz&Bv#~O((w( z4VF4D^Jw5=-N8#>wZRLIWja|ys2;h_q#265KRtf)pi2+&2F}qV;L;=H(j#0zkK3I( zTzVYZejIwdOk$26zTl>3k4q0(2tJk`WpofZ>DJ)!Yg*K?B)Qe>AI>L<^B^c??aNOotN)TlIvF;OOmUdG)Th!IfN?$HjID46sd_QaU7;HUmTb- zV^C~RGdZzP0tl52(L8Pl)h3D0A8C(a2duO|&xBSh!@+Bzm>@CF z_^prWjO|D!QI00k6d_Mpc1n~eYmc!!D_a^qCX=zUWM)}>n9Q=fq10-W6PhN`yrl?) z+3I@dPc=#rXbQ8P1>9lgn+zDvE`@Ve8p8wl>pO6FK}+tEmh?xlD~mxwvWR!iE_u8? z3aNGSFN%jOqR8t`79PU1jG&DVNB5Et>ug`phH;S5T5K%U^N5G4Hnb>kjvM(5pZ$_o z>UTfxHfcF)K1ZOUt~-#K#)h+vEtSSTMMFi237Mm!+{P}|MF!3haT>c+L&ab|0dfIV z^fNl}CD+RITAGPeiL~kMneTCKN4BTZG{}eVR%nl z@xrmKcut+Ka;W%HwCQO5od{CwmJpA;?TG?uyx4%o?vU z_EFv$ZGXw4r$E zXt=>R1~;fIA8rWO2_RRLX*Dvx!gWn6U_XI58%rt>hkR4P;;YhgIbBE#Nw-9XTTD4E zrkuHDsiHiWWsUVO%6q_`L^UWM`K@uz6N8W?_C=rt@q9UkH#+YS2hPg$CtS3|UrS`* zdgh_lo58s~0qf7QJXY@;{DW@+T?j1t%th;MXUTD=?PT)Ccc_yYgNE|sP@g9 ziqmWAlCKWnkU++KGb$$3DV_Ft)Jxm8*L)^qT&{Z$H1{OmZ*IsR#KrrLj>k!#dYx*;kN zwQ188#JLVTVR)^b5|)>LsVgEJMH%7F@S3d!}9@<(4rkQM(Z7EOmo;Ky)> z%5M$>%d*NFi}7Nyzk$&2lteaK4AHj*39^M0!EJoS#tH>4V-Mv~5=8t5``_RW&k!FI z)r$oi!zNBIlZjeHFJu>Q-T@|=owz2|Pys3dMa2EG*hfu7F!8gPd@b_N2Oi66n*zOO zjUqqTR$m~tVJ@+rpZeN}-&*7!{JqcnU+LZutFPy1ds;Y?2(IbzwcE=+D}07#8n7-W z(Yv?yZ;9V#*7^Y_V*eA9aBkQf;P~yZM#h&(jsuII)M4+^3BKVnTvQZBuEXZ^dKYK| zdrlg`KbJ->o-Aiq*`KZ|^4LFpevHTVzwPzdU%7j%$DYV>rS>VmA#MJbCV1?*@^gj! zH1XqP4Q|@b@rW)N0a2{(0<%cvP-az`y}eGD#n{h8zDU|DnnvJ6=lPfQ@=fk}#x%is z?)m$p-oG;H`Ii{?^S?i)yarP~g8&L7V-Xc&ZpAz*V-S5p2O)v%)NABR*Ny3ezu(rL z|Gl(F#}}z4Tjn9%aV4Tj+shtGsj2EylGE>^PRWx0eq+~ryeIGNrai~nx2YezYx%b+ zjtk4@o$L=3`UC`qSznMkazb{;8Vx&;RhK_tHM1dL_5Vis*s~6W#WYpxnX2 zao?8!#QVMf@CUqa$-Nih;O~3v735WieJ0U5JM8QEg$%|DBlVA!w=w%={3w!g-cCM& zT>lojwu&q_pVxXrx5FrSwu1d~5D0L)$? zbp~`bT>0UH>Z|;}t8dX~kEyRpP*gLjeKVweb+qr{&nvx0y`C?xW4!+MabGW!*E0R- zHLtlbBB|1;5@UtuF)HRW6MQZbJ|PA`YR{b_8$U2$O;iV!ITOyILAlMT7p=3Pp#4 zP-)nTigV=l>6_|;wCPkXe}3XyUajbty;>ikKjdCKYF+?Y#6-@VVV8eOR$o{&5>zRg zK$a0qNu4T?GWAtT4bz?XW#}k(fQ%ZA;=)+UQxhUMWE%`go1r%lZFQsy#Tp z!-#Ln5ustYS?3y^_VtmPl$|YE+bHxLQgo`-|_!X)@&-kNk*$*C&{$=YFGm|aB~ z*J-~oPYP!~=&EXpXzAt54+IniBHbrAktZf7W%iZL`*!=vXQj4sPvgA*U z5;37IHqZX2W!mv{QIID1@l(-DA-kyl6>|po+h$0M3-u%6xA%Kb%Vj_b*uQT$HZyfe ze$lIz%@A;WLwyGxhCOnYlkGe~yZ-1dZWw09E@d1P8Cvri(b7k6DaZ=1qJaegV*=xflTRQOZ-g9KAH zg=-^CA_Jf_QMmPyk4tUF5aIBJaPs@`_uo{x&*$$#_|q4D0Q}dO4-EYGED-p|<-TplhdFAN(a3yRg}|7KLGxhssz6GhX3@Bd;t7M%k={T|Lcg~ z4*L_dB8z_o{C($B=Ut+J%QlgGz#aUL?l1Bzb{XBeudbrHBp>O(@GSgrx56Xh?JTMu zyUysaOIHYi;6Rb*6);e@T13;C-0A)KfbCpkDfp7YdwB` zctYoYAp=fMI0J8f{Snii95ao2?>SC>8DPzRd^R)Gu8JjOuRZ%}GHWAKU#ML*KZcv1 z{p%J74~dVbn+e9zQ)X8iSfSg8S#w2vXzF*IR6@>l*nNLsac-{cR7usxFjA_au>ikk zX7M{AX0O&&UtbophRn4682iIrGX)&S{*c#y#XKQ@NQQ)#%qPdoU+TW33Y|Z)e*)i? z4va=zu#TB91{$3VF7FE$j?P|GKvP+7XS%-&EdFU37G zxMZ5N&U>@o3UBJFtg&~wDECEZ;nwm|!2gpvl2$#+)9 zd3xoOq>DSD)f2|Sa}#zQnNNiF%U;w>!ejp#ablv2HPQuxn@%D9P-ApVJg_2QzdRn` z#Q4m}QHoE@br*@#p*TlVSRAL8*dwwiiJXhsKl-LF#70zwN}P(_?e||Ig}RaJY}`Xx z$9z^g5?wLI{sb$WG3Zh$f1U02HsqV0~nwW@di@A3-;HNl8yqk`zDCDx}5{=D%K1j+n)*mBr^TF5r$BwUuR0@wCUk5bx*!*t!_a5iH zat!*AM7U#GDeyZpCqcu1sF-kV%Pu~T15cxat}MRiJNimTw|}e*ITDCV`!OOYjIyze zRQi!Qf}!M#EL?Qoc{MW&`}5qpa_oyU)ujtRlSrx=>!fU`OzB86yjffWVV6RIb8PzTesV}s?-jEsYk_ejX` zJ)|#-GH<@{DS7jl_VI?eA-s87-t5;mw!E=2p!@^9%zVnQ@k#>vZtc=+no`AUvU}c^abl?`Y$^Mi6$XSj(7X}~LSowQ` zKt?x}a@l?q**~;>Kz>);)Lqj(+Q%7|LD&n+Z10zk-u#^>G?|RAas4BIe(pU*z7O~} z#_RJH8f1V+7vS*vfX&Kc<{V6Cc`b8dO&eBUPRDGn7GC3cOqK@_!kb%l^#-O={W811 z;$1lq^XG7hX+hQJ^2Rc)$vFq}F+ziN*h^uMIFzJd=8j^T?nK7sb=k;h4vfOCux60@-lpKlf5+_iFb6aKq_GsW$#h0 zO^}1?J#OC?CUf(jr}{!v3y{e6oK#Fc@dKg|?j%BIovuOVVs}Y?;ZI&qNa7J*jAMbt zw(Q-RoJe-dFF3zs4?q|sj6&Rw7Uh$i_{qX|so<}twEL%7{CV=3B{QemAtCa}C80s; zbdZ{Bv4NMpCZgF7LGc`@(j487b0G4)jTHW7uy^b_uBoOYclLAL+H~}Lw{cw_{8iII zdAU_z+RMLpJ2xGYyl*)NY>$jbx_i=12h&aaaFl^KW0NrYi7RGw-@%97+xf{d3r#K9 zH6wFlLa?WAY!yB5+K+fWnIGOETx)HlQ0rh@W{oeiW>)5s4*R;TUTi2+?Qf`7hbk%} zvM~PzdHKZ=mi(rmykg$oY>Jtu#Z->+7bz_7H|1VOXJVkhW|S1541f%SoJEOA#tezF z0+aoV<$%810s56HQAJTh3cOQB!+)(?U-|LstIVrUCl7h`eE(+Cs`XkAv4)&_3fnW0 z@(b|`*jkia^N{q1q$%$FQN`u0uaB98>5SQ*$gNa;S-L(D8?N_(AJ1^TU%H*WvGLdq z8^_4Q6IaB#r*kr4_j?M%AI}hB*siwSJkD13&GwhYI52dkd;Li~``T1m-3|z*1N#GUa6`XYP-#YytIVDvk*bQFTq2zsXoj;S% z^XKZykPik>=U2|(3+z9s!99P^l^2uo<6x-tOJu>jz#9OnRLGWxWb+Lr2gKjSx4$`; zztg_Hf|F?uc5i&sgL<^S(&y>EQ*Q_5Hu9FFcAW1+w}=(fBam-pZ2Lch0n>vMzNkgw zHA4To&$wL3ZcvHX6nNw|=|T17sWIEdT`_q*k+xrAiE5CPI?{36jr~g%0Qlk*HZ!4Z2iTkI2Jh(}s!q&bUO#T~J>o*m@ZSU;f^#yhg z4)F|7VwLzJx9KKdti5x^lZ6AOtGh?n*#FI+x?<+(1Y^!Zu2(XThuH~ z+B6kUzN>2AU2{Uk;f~G)_P4d-z@lu25&jh%ggCQ2-j2~Gw9Vhop&;8%?teCZ`Np^E z*PpQQtxs<72X{Q49E^;3xo&)065rOuXOlZM@!8rZ;{N1Y=O<3D8}Zh)%t51iaKy*& z2^-M>oH&{&@>xD~J6#)`%wg_P!1jpc2sy%Wy!~U zBVPP9K~j9m0ya;*sl5w&CKkw-jmgKtwR_j^BLoc_W=l*!noq76PgfyMP3FXFL|>z? z2IS+~;rQk0z=gGgi5fN>%dEPRQGZNI;^XN8(N$OtiCjeE0yr?1rG4MDd^h7)n0w7F zCdex_o~e7@y~WM6fp8zqQA0k_?d zeOr@m49VMkZd;grduqCojm(AIcA0r=Os7gxpm)dq4HXHSOB3+N&-Y+9_Z~!w}^?a)#Z;F zXB0E+Zk=(7FSvvIoFQ)U*Z~Sa8jx95Sj8`xj*k_LBjK06R2H>YH{rf8BN}UdX`%QB zV*%(!VrmW^IWBlWYpRV$XRZIbz?q&|9Ncl$SnqCZg|qPCZ%r*JPrg$E)FlXD1NE{T z)H;-uk_TjW%@juqj8$$PvtbFr9@anuuCprbodJz1>M;b8_JRD))pj4H#;0rRA;u=dG% zp0gxr!!N zNt2&xR0+;B8oEHFawQVKR}xV6!ripGcr6|;lO|e(*wv#cO>s2^#nn(;jTCpYTU?zf zu1bsJ_n6{tVr5UF81O-fj$aOp6Y~ltk_uJhfKKssQv8S9;vHyt4NLKxExtsd4Vr3o z{eEFdVMBN&?0g)gWUG0&A?N`Yby|wF#C*I&uu-VH3rRXw)D+NPgDm`u@y2HvMYQ`) z<$-qlFT2$RGG-rPlL$8PV#-c;lqVk&O|2;18wq}QFg1r+tysJ3d~6Hr6iniiuSd+6FQ`E&%*QpJ_@#WXhY!;I z(cOTsJUGeR#7Os0xF)>Fn-0~+cq@?F|ME?piT7nT@&xW@(x31KsX1-nL&L!b!%dN! zh@!uFm7 z+)C?xX(35Cc_Z%9;>c1(yBA`!cu}`|1xBU}_eX_V@(-1zORi3SWR0u|v4YUmD5!3X z$dBN=E)v|)Qk)zvNe=updE~s{mbnZ&7~&2dQA6BrE*<@DPvKDZ9i4dx_`;GiV2w@@*|++PGFb&DhrBbz4Ge-L{so$>Cz+ zSp((q+jKu~*uixNRnfWb;=*^@?tV>-=|&%$Si?>M>l~!8$P|yR<8Qvb%6Zuzy_ft> zW+_TD&$naQ_kv;Py&~H|x|HPX&yc!_&!ugy4(=#vaY(xPd?ZsgE)d0Fh~3Qj7BZrD z*mG`F{Ieds&G6q{bgnjs2F3J32~hN)i+JzHG@$Le8O%E6~E8?JecJnOT<^--+_Ko#_qS(bt-ml=`j__p`{&jpP^X0r8*=FUl#-xg@ z20RsfRs-f7zts@nJR_@tO+6v2fwPUAMIMUx4TDdl3J2oq#cwV~qboR8fqJBDrX|6? zw-f+51cKsoD@LyU<3oM#>IbK-D0TFS-N-!*)#7>5>BKXWFR)D%18TE^+N_|mCk#-V z71U+{)f&tW({6E6*g!(I`i##jZ0LW|6y+yrKYHpUgU|5@2VdqKQFtAkI_-@)?QIqO zauiWr-`m=}nq1r;iFuePw>0KqB4T15vb|Pg9%9?A57jn=*r{6|u5Ad%pK^)j)IZ+T z@5Q|2zRBt%YM;*1J5>0AlYc_?ec%J$`$oMt^z@tdCC2_(ngy`z@0m~^&|ldAG=cqQ z{1W=x;H%BlCuf!ti7VdVpy%TfK}#mGR+}7>=uO3ZR-539JHOQyFn0l~EoAOO)+fSb z_oiB14s!54(J4@l7V)RVQPcT%eExH(^Nf z)?8`zc&jMY;wLiL$aJg6mu?9WqN~JO>+>EOnQZk0245}ddn|J%G0k4}5OyQoj3~ItiPf90+*_m(T~;gO_D|r~T@YA!nSLt&dH<^rBGh zP<*1rzBAQqAFF*c@dmo6FtzM2&8A~qc|)8Sa=4Tt;b&)mWXSCMOEm=8C297{rLOQf zd*s+9X|o*1206K;8nQl$qx=IZi{+UX=oXmr)|g4^zKk|MdUzU3r| zKBxiLgWFOjsZZ2kH}4HS)Y*5$q?o|$S4)bA;n~f3L%XDi89bY-UQ)z#l>O#HNh!@w zIUOTe-4e6LDElJ`w!`@R>V?K_A+2D<=AlaAX*G{VNic#4kL4HuV|L^xqFhJ-pcz6q za^CIabeMsQ%3FdhQnehe$|xi27i(K7h**Pn(kT01zpVpxYO_3zp7H2>hVxfuxRV*Q zBb~_v*e}h}VS+<%ZwfPw38$fLTjpM&CuA$NFFHZJV_2l~TPZ18&RrB*wb>T&j%#*0hCMu$sM9}%c z_{T3Wx|G;$FTplS@+{u+CgQxw(L(MD_q&=vD?sTd5YYpII{Tdo>UBo<6hdP_H$^@p@rJMdx_%EhWg5B;fWCOXu$3!F9k2|4 zn5yqRnbjh5J2t9N5by68e}ozhG1X!JZjU;60qEH{xh?x4B<-}n&0=@b38^i<3a4qE zm25YSB#(??q40<|F;&_dllU30KcHVz#F?5#d@#+Aj|PBC{ue5ZuLF(T$tzN8XuLZ2 z3^=a}@hk07krBoQdpQK*^W=s|5y!c1=%#$du8f!`7!R@azZ4KeC6X?pf{ANUwinB( z;r03Q<^~a9^;ubS!};=Ex!(1QZuL!UG9~#s+o!RGK z4Cr&Af2Ck6YBk5S>N=lbU5?(nx2Ovm}RO_AiNbz#Z{oHUk*Wq|M^2Kg$jf3&T3n zX~#9FPZS-_o9c}LS44^a&f5x1E2=S3p=LA}D zlJGjaw$9y_VZI7WQUI{ZVvh6xJ^_~>24^`V%E?@1e@Lv3O-$A$6u>yh?9+887KL~= z@iW4%|iI(x`;1v zc5>Z1PrPi&_9#e{{S)#%6#S=;$o>f_N_+rBIDJ8~TvnVoMb=DmAKsAruup}D#Db5% zKzo|~aIsGI%wk;kAs;sBRyd&h`}|}VSmk`7_~jfF`l(lBIHIz|w~Wy0zT>MQ&}Jmc zFO){;Q7Kc8k2n*#M{us=n}Pd;vdUnc*DmS1`=ZgfUD1-Se(JFARY#YwCG)rl7(|15Z;pFIz z%~Uq1h&LN{EUP~%KBo+?vU0%2f^TVT8!UxB36g8`PMAYH%Y-=&a7FJF^HC9Fm|RN; zR6mw05fAYYRsL%Z^$%QMGIe18K6r+MnLeF8n2EC^iaD5xlOvjaiJ71jC$5LuwWFdY zt|`r|X~iCd1~c^q29jxLZPr2j)eWh4MPrD^ zDmW#UMWB@X=~Hv%&N^PXe|bcyZOWRl)5y#h5~m>nCA3dufyCNlNq`^w4=f4MHSq;C zxODWRTh0}Z6O6lBu8x2B6UOX|{z`xXB+x(n7FoJ>{&4dw(BrXd5lES}czVs($4YtB zA$hntrYTQgCb4c63r_lL@@r<*DSv8mYM#$wijyYG$a)uVhc}CWmw$GVCf?2M@Md`> z|Lg;k~}|Y1UjPyu##L%WrkjW%S7o`$xKhBYpj3@Erg_ z_G*JD`zQCSM(2R2_&xqO^1bZ^<47?zk7dF$XBKq^tU0q57g}yif1y1(AHj{Rz6%#J z2`g9M%}pKtOe^cx$z3E1t(osp9&&zV-&U|-6wMeKkuI&VSmQYGzdu6uP zD>{;y1vf2Bvl~t$rxU)!9A@81IMvdKsyTSzv8O$=CT4%w*=tcvw=ZQ2|Sr`|RTp!DuE8lR1 zq;zGWmgB?fmuA1Ol*jJu+tcN7RrYbBdLArEZ5FfiVyr~wu24PA#ru{(Q8)Rm2k!(z zB6L@ptvbPewn)q2mH|_mSz1m$B4v6K7o?lewQxd7ZyDe@W-sQ9W;e}MjoFgXLb6DA zmQOop8|d{nV8f~X_4=3jva!%H_-@L(}G=2bq@dt_Wz5?zX;ep$LdDuK#kT#xA0 z0snjfzd!0HhrE-V`Hh%p8j)t2)8>LGDkz7 zV12b5?XNQ3Fb0WPm9CeIh`pMa{g)qmJsg`Q8ZtlFQZ_!M`c<>&SFJQg^eZDSlq&92 zix#iFm=+&oibqcrtCYc}6sxPT4mAz_OkVplKN5v2oGOv8V)iZu@8m9g7DsU0;3R`v zR8e)*taDBmsVjsYk`-!Z3r^TL35T|&3#7@v*syrHc!HB!{7$qq`!^h_C`;2DSmJHz zN**ALTC03I+@i|ZaEl7U;g!dyYKjWbH}vn3J`+vxm|T4p3KWi*#7dOZ<0p zC_0!Q-s0*2s5Dz-OhCnHMhV)mMGTYj5Rr$Fc_@~9F&kvRs>=VWjt8rebMQu)e~rE& z7N3w+l9H$@Eh2`*GlTI??n36kZz#(gJ`%G(zh6c!W?;ch*Gr)-t*PeLOwTNP%yS%^ z)I2NG6SF)2Z48n9*g-qro~5_*4F!R%r3*F{Y634N0Z9?Jr+?;Tsp!&n_tDz$P-b>=}Kr~N%KNPbOeuIhS96>LNC;myY-w4&XNbJV|O zfMNh)v$?L^vd4Kg*OgoLInU<0(xJ)*9kC_9Aa8oJwc_xWsF-atb9katb0GV%g za7yv!O8FqOLyPaYW``B*_k8_fRe2c$BOUgCN=*{~16kzM^6k>calg~GQ(-(Doqo5X_}0Q8#QuQED}wYt zaWP^-NKOKs^hb#;f<%4#$LzS%=`KmLB+0dNc;AwKUOIA`^O~KXv8)l~)x$bhP$Nhk z?4d@G;K^BPIFlbPeFp-Rn&U@VLJ@upbM3Tro^yP5ln-IYpPVFxN*RV76RY#N&H3o7 zxsUR>t-ZrOKLXA73e8_gl>At2PN$}||HXv15=HUf_6uG@=nMhV)V6kKR_{3?tqh5! zM|!X}^1NJC+DO+vS+IUGJH!$S>nCB>Pl)hyQ>nXt!r;!U05NvNX~Kw6J?t8F1Ox+7 zIi%MOt74$!cqvJepJ)tT8002zy@Qzmxw;Arp;el;upq5Q)0P&b)!7Z4%|m6XN(d9` zjz4xB3iF{XjRe(YtbDHo>k_AY6df@hsEvu`6uF+}7@=+xzRH1^l@tMWZ=UmrONFD7}iF8k!;o zr|O~P24=b+vRY)O8;sd6d`pi4C@#zt+)4lSva6I1-B8oK;w*I@w0p0hVg6!B9431zT&U+yDNULw(6gQB(0u zP=UBl@fPA~ufbqDXNKM?Vgr#Eo%(G0n^HO$3Ooskm@P6VqZ2thqCUFm@!s>(Et%Tg zH=Qd)deUESz6weK%{5FPXN@^R!Tcthr@uQgK@%qh#w2%&axR6MqHa9buuaze7fkxl;{0P+Vdbz&#=fPXPK-0;n`>%o)`1c%Yo?a9$g^^Ay*9{L{FXop) zO=I^Vr>WuzAk5h!P2I!I(@l#N)f(eBG=$r1C4T|i8&o%Ru|YB4<#TE7 zT6SQ;_yFAX3^hp7YWAV;zDfu-$0gW`DfT&!DixeUbLvGNKeQ@8NY@E4EKOGBHBKC! zKkYIE)U7hOmCdR>62CZRe+35P{7voKYzCh-%0L&rL&koN%*!*-VQk5Z>}`Nhf1Hr@ zw91k2j!H0)?(9-uu*u0mUvj4}`Dfpn*O@qDsWGzgbkjqz0zUF}Q%Sy5M8j)B(4*0{ zFtV>~k{O>&kybWExRoUM$1y z_5;6GxpwSy(Tq={aCPKs$KndQLUmSs>7dJlVS>4dWWM0r(&MqBxx-H${mPYoGM-7B zQmsVQq@D7tWr=XFLssOqT@Zj`PxlW$B#0NZ@xuf z5tDcjd9!P$)6Kyy^~p?FH4i$AaV1|&N^^muz${6jagK@jQh6-Ret&^HMzU|ul*jVy zW2nIe`?i^?Q;H$^wjAA1^nKp0OB8`MCj7h+mp&FCGKJ!LQ0@*Kg;X+^6 zMeLLDjMAo~kBL>wtojy2;>iuW4uFQ;N6~|QqNC_hNUs9dT*I#}eVtcAYxOfobg)a$ zp1lvll^7!qI`iL!FBVA~bR=h_P3f#yyN5HI&d$1>+4M?x)~&PYQP%6x{1iF{enIIUb&;qTWZZe@`-kT;cf zR`(a{>i#088B!9X-J|1lCdGrhx_=o|(uof;DDT5>Eo^CXUQw}14Ac8C4DOwJHFW8~CR(VGI7 zdPwd)J7)i8H`#Vm3q_WpeM;6FoUF0~piT4(*_=??p5YXXL;xR)k%_DT0YO{4Spkv- zT@LY@!hSN;3MSTJcGjLjX5uMMRz4LZ(oIVq(fOOq*;_#es>#n^R56u)SQE^wO-|6Z zPtutieLJ}6RwyaUmqV*m8yagfngK97Ht3v0QI4!x36SNiuZ`81l9d8(86NuN`7X|D zPMn#<$Bk0XfS}zzbFau*a#p!|XZEPMN@x05|FZPqsGjRf`SS=pM#Uq|lpi*QQ3n_e zJE&o)fNB#y;&qJ#9NZ|5WZk>QDfDi90Ft|iEd~~Ze&*b(e|}UEC6GImsvVSNrdyr# z;j82{m^v6r4~)IKB+FlY2gDHIP63QHM44C!028Y|bBsSqj$_4o0>@6#5~V1YW95Z# z?8%FTU!Bhm6idbW8Jqi^NY*850y*YQoGNP?d0Bp(%OZ&PBSQ0?R&MvX;;X=E1(8uA zM?t5*GXR+ogs>oKEi#%KONp%4Ic5@PRfE&w&UjX^D;pP8e2aQ4hlZDPRoBDmG8M1M z`ZbVa)*i`0tfC0*#cxH7c6<|qJKLVu2{z_>H4sv+OLf*)oViLn-Qfbyoc}lbU#%59Hh+@6;9e9y`nWNucp1`+w>7rwC7SSt`&>#IP7Zw|&qe{pD zIUM5d=n)cy$OpKJaquYD5A-jg*XYX4YH>07GuS=Uz)pmvGy&g`FML$JNviQdD0LTL z;NEik_ImOD5L_mAmEu`4E9X~&VVO0Lm_2x*>CIZu?Nus(WFPgi#OGNk(q-dnIdJ<* zyGYb(T?Uz+++|MNRurQmpk?IMTWQal>(q-+Xc_e`H1!5x1}arG6C%{6qN$8 zoIw&*kCSppxfW6aH~lN*AlF$5In5_j5fV7#VB!2uCW_NVEt%12Pwv+~iXb};ePjMl zw0%p&&s1j5&w9<&hlWY4f2y?e%sElePyh8>y2zZ&Dr&4t1H4v3u1@i#~m{=S2Y z@OOU{EspgcxSG_vxL+Xm>AMEFCFNc&!r^yv1WQ-|Au5m;UInKZZvZ@Rp(ySYMKYHa#2cAIG3H&z`^(OBi}#%wF{g z{fda8fy{Npw_7nrHsXqrMTQMRDy@$$gp;ovyLSouK>N?|1M>XnQYmY)+yeuZV9UDp zh?fGnzKjiz`P;R&wbP3+X5kUuBhp@dg|vfQU*qo(>HC0py`D*6GqpO%(=y$Cd`)x) z_Y5?^z$}AB?;NKg9YV$pf8to3w=Qxx?s=0+I8%TPHD$Rjxa}?{DXaAcx1qP{S6R(B zxb0>qDXaYkx2-fuURPTVZd+th8b!W4zWP@O{CRMe6J+BbXcPr~8)72w*09~qbI>i1(RO8%RgTz4x$Y^{V4NgxVP7d2J;H~G&Ck&b}SXsqx zcq2j&DNT3z1e&SOPCYbjO7G`*8BY5+yu{=2KFW(|Ixv_V^s|y^z?DHRA6#8g1YXDo zypt7P+&eBjxLtZxu<@WcGbUdz9q|Ho11+eXvi?7%LV?0+Jc2TZoX_N#=>@f0$hCT8bxy(t*<16XSU^tIOanh5N zd=`DhNy=l;4XMbzxFek_o9oI0|+RK_6I6*zA8owtxG3 z$Ohn}$u=vGZ1_mwO4R#Ffg84>S6CVPL#{7mp`{;mF>MD(Rwl$-Lp#Xola$XO4*g=h z@Y!mgaFzCn2SnbbePUZhZ!<@)MD4z#6FopKBHLx2bAUo52Zjv9dfXT?zRIw})4Bx= zZQo#uk?xPm$kfi`HXhO55bhBsGExO=s@vcdDbt642h3)t$kbCR?>*eHQa zN@*FP0JHrR*%fI@4wcrPw>}BXb#QQ*)o?WB#igQA_KFr4Nlz^q_MIfSHobJG^wOxb zh?8Z6O!<#hd^P?KHz%=M|8bo6h*>TZ=n&{}#u+9Q2k6QWUw4FLo_v?%c%t?f-X6^pBd0mvPJPV*dgKId9U+S>hbrZ% za?FsO7-8e{W>0;5(`&smv!XKXW4qHzPyK9YGcS~$SDLP~Nw|Wa4GsMC)-iPbszI9E zN~il(ti1N=^-qtCmtxHhSE{`oG&x%6SKpe57AlGo`+1JLzFlZGWY{29WO<7-eH*1I={Ii7oQjm3^#{$EDeiKO&Fa*|(?47tqF=kuUop?d{>7dnSU=>t2d<0R_w!n$q?yagUCh3dG&G*9 zEm!pQ_sU;=ocxjF<=1+}<(&GRnVfxzli9!{m8;9*-<|(KSVMA+%73SFOd<+-*A#>vgtBQ@)6Av z4|hM$2i@zbt@{qC@>e2~AJLq=l*LN(@|W(*%!7g;OCw8Ve$^=%ByO|t;{j~bdU*2p zxi09KddNyjQ!+^@u5((|+6$1gGKXVSy~; zuY#L64##8tyA+j{Rf0FICeJgrwcFbB%zg&7(2vjM&6_{4ENRl|hS+>5RTg;QDNuiB-Tct+IYoAzidf(sVTaFGiIY*`>A3f^cmjJa8 z*m_7HsePTm01QFXl7jExmhZ@$CI}cqBPVWxp`1U}9~GoHq&xNBjOBoJpuSy_K7=xU z$=a#Td_mEXo_?=Ie6*sqlVvJe8nZW{#8^Qv!#S>5-25W*Lm`8+Y-;?JkdP^ZQQ)db z3N})TwUojr1CCRx^meDeCwCZHmv&1)l{{LXD7*qQblA580A4532B`O)nOeWumr-_!nMsN>#Z9QO)&2!1T;_r#>s8eLaW&l5UXsRM=U6@*b&u zXZ4thcc?OA=?)dAf>V|7#fg)wqWn4%-;ywh@eeiCj;xX32jP*QcCXDM_3r#rmD+Y=l>V+~#<@+6dALjw*UTF{WL zW{J+@(YB<07;T^mQ1A`2GU5q%(KWqq(FWL6oVnl-z5qr5ltn~- zq$VJA;OjK70h*9YstDx3OHSWj1bjVXmpI@Brarr%0}u^{52bwyBd{ub-nYF!a{$_% zoL00}A^KDIJAiIjaTG+07cIGJh#!S$w7lv3|GSL%2b%T1GUDW1AH`lJ^GMJBSARf| zAdwR18*zDze7IWd5yAf_@_}{kJPFaJzA_T16T52nH?mxEN50&oGnbnFXyL@Mp7Cnx zv&ylDt+e*aH>}G0l7B;-EzrZ2r7y!#k1mopnZmtuM|Z!F_h9W|`rTn+Tx+8iQg(0h zouajY_6)NQBZ?+8)xN%FqLeW5bFgL&Q65)XAV(qTKj}#3JR!EIfA^?}UjMLaR+%q~ za3r4kzB7ksY!Tt(amKs^`}4oAJ6iEpbqjLJ)5%m`8uCnJSyU#6*MS|86N0jcRIH~1 zek1w267QbDx4kl9r3JxFTJPej;5`d5X!e!|?^(|lgvHg~-bxm~sy1Hl^Q5oyv*%=- zH5j~Sr}s!Yj0C9QUQpGVNxoIm^WjW1y{@q+v~A4Rl96+kTVs}|N=8m+##SMb8})1;L0PnH0MADy_X<7COVhespwM&5hE) zh`Sy?$$BDq4+E~1sIr=X{c!M}VQ-?^+f?cOi+7ObhpllH=96?=Ci%9)`qeuG)`?sF z0_()(DL=4I?2ib4tgzR2HA&QE!3VDJrC0ca4>S@CUfmm>D^bS?RgprOfCHnU5_X1pBW(DnoGqHS#K7daZA6!sd%opbqOe z0`|aSjrCkBIIKah2yVGjvBw^~fg~X(_)6d}vogU4i1#Z^8N9MS{3c$dTZ@}##-{`yXwI}V$$oS{)(V7(^jNaDdf!YwD&&Ylwx0Wi9}$YL z&y1gD=zJ=OZ}ii5#>*3_|) zv(uhSeroi-D{ra3%xbR--t!EtjS{N+BdNy9wD04o#um0$QaQq&fA)@BbbWbv>?@Lq zf5Uh>P7Xy@74g*p?halncYo!s>Snn+!ri{l$lX!y25yi$52e*{w_OU)8%mTZlb4p0 z%6vyStb6+{Ovxm{zW>YWz%o3xj;E?mOF1*LcdgvrcD$WP{3Skdxz$pYp2v9B@a~+%8?&t^ zWw3hE2zs;yI<`#rMoOIVC^ue}#+xX<%=$0OwwlYWag0lpimK)9sH_-_hfRN3Zp|^p zU-51$akeOmapvd1EE2L*I9bM-5F)!=$C;k*xK$gOk!#;6GCs&CAC}%95vjdQx~KHo zjq4c0*ZJd(R>%qhO~n(*w<5h|nYC4e_Lvn#ZSC_o28lKHO8cqv{IGXq38cFGqm%r5cWYBJtPR*07-9ZWj*e2ck-t_H4X?nm*|#;zVhDjpen*R}3bPgnBvX zwMrdYI8vd!jmoH3>s#p5*P^&WPoe3hg0Jz4udP{pO*Z8#x_qfCjjC_V@mQlg_leHIC zgUhA_?|H1^8E;FachD3&w+f9!i;dZ{O|ile&9f6fgOXW}n5i5g3A?3A0&eG2%$&YJ z_#>nJ(Ln4^!A(T}5?A7KimY~Z1*0I8ZL9aCKSvPr=#>6}c#pNfV|}#ZSJN|z$@7p` zM7EFFJAQ9Q!A}Msm|5jL9DHCvGzoVo-a9zr_wLzuKn&=b|8!_$mr|YD>PaE7kZapJv$}^}bV}7wU zmYG9)g;k|Li@pFuw9FKk6F-11qFjoy5H3^}`~{fEDGS`?>-$Ne`21*@k#50FYR+QB z6WCmRT2(r>gLq6RKil?hE}IfEO>4OxtUkE1kMmwVr!b%TeW2|l>rkaTaw z+wt;T`3}7wUG5z!AUDLGo7hLgs{|hDyR(sMRoY9JXL~6mktvv*kq`k$l)hHZRup*A zVw+Wcb(t<7-qp(yQNYOcPMe%SgLPvU~K}={XQx_=FYt>lo1X83! zb|J}`iRox?I)Zav3?bOwwj!b_t|4~lq0z>32LS*`2u78Z4iiMBi zXDA85a<5SLjW&)^m<}u++Pt-oA-7kX~L6&`}QIi^5 zW;i+;e4wSwnp&~u2t7YLBxR+;*4dsWYU;hZ|M5gj+EKBmwsU%K6TPGipvvZTz=>7j zAM1ULyGmT62wv4wPN}6-o#|nd`k}M@9s%P!^8jN4i-495yN5?knG<|qup_p>{_cxr zR`6#^6dxBca7L{ut+!bnV<8~JaGSfWbBqo|SZotjAj*`RHB^EJc=@Auju4y>dW;Il4Y#i@k%xb8ljhWT7 zt%0~XnbkDyG*gRO#sNOSp4_!j`$ugw^kl_0y(?@zksS7`z1BLjV#$$hEl0ODfmMu0 zx61Nv?c(X{KfQ6o(M)0?=kQF`1~yk!JRyhcM7)D-%+Xj(vYH8*hSEpv&81Yr5!x~P zTM=!fW|?~gA+E+M?+}u~%>!cAmap)PTu8P31Bojto~WHOy|+=bh<@8#h5o9D9Lm*U z%9omAb`5n%qxQv2ql9`iYUGre4EF6%@8$o>>I2>p>AXt4U@MKzQqL>Yd%~ffHtyI; z^BXpFrZ#L5Ta5B&><)i734c?Q-)Nta%$lfmp?x_33eFD(ADB!0U%z#-CGNuEinrfq ztWJEP_Bo>0G1aJePPnggUI+7C^FOlLJNzdaRrXjZJ#@>Dz;V^lX^3C}lHdLJcR zTR9(Q)%?ZJ7QK_^!ug%dhkx+A;rzpVrCi@C z<5L!G7lAgbr1sJHJf#=?joOb3;Fs}Nc-G0AVWw&+s`kzfKalo2Oy`Zn{_@K=rx8ko@@b|uueV9)LDy?he+^v)9 zMVir_dryLeeKXrREA;7KXYD@TC*3}ge9YgPC9RwXXBC64IYQd^!q`KE@cKK!x{Xgq zlNAK|kaMd;)(ti6wevR5uRU_p`PQ7)iebb860NG!;B#1|8~9u;#9AHUc=tLjud3kC zFJTD|FO4q};V3;&&E?@vcYN0A+V%eUMbakbXeC0l#;OIT66rY1)}*u0BSnO+L5A%; zP2gtK{ke>|KQ*J7YtIpWL?KUng1TfcsrX?rLvIXOGb=NzVjY=Pt(33gi>`?J@AY%e zqIO$p!+KLTbFfrnjR2LD5=*_qOW0zImcxpm8$aP1*Tox;HDD7dN~l%Y+1Ofc)rs?InGBXNW{j-luI)k*tk^k5JGOl z$XM(7!QcC>xd+Y1kehkkEHafknZ(N=mub6`NrH+3p6sHa+y3=ZzG2^Q83OE555))5 zoTKTndXDzJYu=3Ek$Zi0NMzRBBYkg~SAXP@dwnHd64uFmZ<{wVN^`Go2Ib9OChC3f zn8p~mCilI=Yg%If^BS<`Yh#=S{Fs~@M3N@FqW!RynkkFx~9KA>|f0vqv zX^TtE5ouSa-=*1$^2(vv9&K{SCA5&xCG?Nv)!$3bWrVcNl1WjYB_|t5U}7&whMe=G z-MR1HlbnN)^P22;6O}#SgjM?=113YtiOMCKcpr%{i{Af0fS&6I_ni`tPxetM4RJyH ze@;U&s#HObWq$_^Wr;*ou4^0`u3|489xudlW=}tBZ1&MPNHJ!-$z35ni6#fjU8#{A zmRl7ZG*P6>rbmb>%g1psl|E%(zK0PtKenD|EQRsXWk8Z>ZK#C+A=|_Vm(Ruv9;$eV za+TL%xIL8VAuRT5r+~+nFcuPV%wbpHi*5ozd1y+^eo_*yi7v&tu@ZHh;XlJO_L<(DXhwH_ZCNd6pD|xju9VYtVZA8`Dues+7(+-v;Z^>%i`O|(wHH0wDtCJdXL)>DYCjgw7pn= z{rWpze<$c~Kz~or-zxoOIg{@%(%-52Tdltr>+i?(_Y(cB(cfwM`*HoP)!*s*i#VX1 z%jCCP{QtUl;kM9S;7_t$h%t2AUzZkz4)b>(?fDy5FV}JW1^GLXzti|Ti@y)^cRqhp z`J2Yy<@`1AH@IH>6f;n+~$%lM*sChX?ncOfll!X8$;rMPDdM8;cg z@K2?SQz64K4&;6VdE#s>YQOg!&rt*}<(=v2``r=hn}B&?%mhrkUKlWx&HmI=aBh{T zmL&V--u+`0ed%ag2KQi~p??_nGwZb}Tn6EH@+d<<560?_2QcVnEvGWrZ zIY5=A*3D87y;=euhpmnJ2Wn^?W2QcSs6k(c5K-Y_#0zcl#81IK5g+dyxDZH; z=Y>Sb@{BZ*xf&lkwr2kj^9B1c&qg}z;k^Xtr3d;`VX+Sp){7z%6;)(cMQQ~j;JCis1i>#YMi3{0W9myohGHmcn zggY4`I_yQr6qe5r_;}PyF64g86GrYQZwz?i$IG;v??z{u>|~-;yOd!BRCZaL9RkO! zEppfWzo~ow_^7Kp-#^I=VSvFIG}vhyHPu1Wf*K9BU_isKBwEBlV3KSRaF?Z#WtB=s zP!WhjfZ@Yfx7Y5rTkpNzz20rN>#lZdg>Ji+0Fr2}g0_}cZPB*&Lt`uUhXj8x_xXCC z&rA~h(f0ee|9q3j=QHPXe!kE9ywCf*&pGe&KEY>OesgjYn3clr>7=XQU5{FkOeSkC zK6~n{NbJtpg5_zNYMOX*w8DEW`|{=9?1$D7s}cRD@KkoYV8JLGRLn<%Vm=4XUX6J`V8Y_EDP3BaEm@;-II|~mBZ(NDD2_S=;@%*Y&Y_i^&-8Y2+ zcXo4jPeQm8!WwRi#CGi0WEW)6tm{ebM)be!d&h`gq92BvA@swSOt>-qxLt!di{bH= zLfR zHV@?@lj|-4#Q>?*-?{x4r=VJ)Qcx@d3iVjLw&6w1*o|JBz}_Bd=o(-O6aRGH2@CuW zQ8}>lS7yu%wY?$Od11f9juCpx)K=(TyDr=%ixsk9|F{|IFPEC{} z-PAFilMJuw0iW=no(WEAk~o{i-Pa&D(EP+t&ZZBv^rl$8CJ2on0g zke_3-9FjV?W3W+(%`7nuM` zD$)9}Y@9Hs{wYuxXH#_EWufv^=M zq%xt}wSsyCZfS^>?^18G<@Ilt#mmcMv+bN()zqwLFjJ4lVw`yKXr}h{tx{+%@6;^@ zlGStqyVe!#f9=;QkJ$w3-4cT*iIfXBb9qH1<=A$n5=~=)u~dh_;g{XAq=MKf56?Bo$_xO zDKbqosBA0`s;nYm1iuDoc0)9DyGh$rvvv?2RfZ1Jz5^#yyA2%|!TW@cs%Yli*Ru{C zXNc8IvgaFu!e8`SfQxIn=UP)zTd^#xjTY8|jI9?Iks(8OGTQU#T0;h+7FHt*Yr}<4 zr2KK@VMC2jp$+&cL3$QhAylDYa)==(gmeq<8tS|BUEY6*sN@#5Jzgo0tZ1X?iNcnR)ld|j=Y^3M`QN|l=9WxdJH)$AwN|9a|;kqyg?HWGY?t`1X7 zbudG@s5C=4QJSIbPsJX|%F3cPlC#C;E_~gZ_x2EM9qxzu1ZF~J^Pu6z$ohZrF2|VU zf1^Q$o()hJra5Gk5i6b;D){DD{zcR;JC4`=&h+3#pWxy(DObJS9s#BpN5w$Bp1O`7Sk z&%X5o$UwQKYVRNJ<-7aoShvoL=ePR2r?!SOqq)`Z&RNzw^Yhq}MSu(Y=R&)P5OBd|HO0ibwSF%8&5V_RRwJS0RbVoe zoRb$=iC)Vy+xb@$hxWv_E!Q+TyCFi2 z?#4U2v8^os*-ey|8N(^2V(WY9>i;^hfJLG=)MC3HyoR->*^lO$BHoRS*+)Yd=M-Id zGitKGc#GaH+`8);X`X3iaiMa5Q=+_oq4UpN5M+PXqVo8E9Zi?YXo`D{ zbJ^6vz-)GRh;x!KkZKV`CPMm1{bT*7ru;HY5!1c5H6 zF_l@wB?PGs$rt|L)zY{7B(~3EktH*UO)~#>66Tv)$P3N$(TiM9;|pH>AC_6zWkwt# z#1?hLZ(^O!PhTWP74@=09BoOYfH44$mTk3`kfUqQ#xgdx9{9}&{XU{Pvw_hc>H3+4_R2SO zsOwSvvUt}Y>G6Xw%Q>{idlnz(KIA=$n<-qvzUdK(kbJzKlFqzbt~%!OQ>_&i%1R}L z4taZv8BIKZ`>-tz9`N>0?D4)khSf1r)$a*X{VX!^HOsK)<;a-dEv@J5C(;*!Q?#5j zpNNw%&q&aH_HsW3wMzMCTx&-9AiG~kG7}G@*OYl%@8u0OXR;g7mo^@14D_nYPGX?1 z94|4@bI36mYO(_nakF?QoUH#`|JJd@M5t%o zUwX{}J6zZ5H4kHj&E9ZU_=!J@u^pXJWNg;byU^pjj9lolq|H z6X#@aH@@rS?+A8mWExuXUc_}i|HVmS0)%Rk>u1qir&#XI8X~PBA0QWa6@S{M3Y~!~ zXgGT3>68>(iQ2l3^v=-k$ELk--i@r#=$k=$qo^NSNW%&PUg$ew{W_AF&sE}pUfHVS z%i-+C>axsbv}f8|8|VH*F5nCGNFyWNQq=cipkv*((p7J$I^CDw5NoMh;x&sQvk2RC zfeC6}b8;yjBe5TfhY2Y2H8atgF+D8djm$rw2K1JO;pd6Y(Mzu_4p-`3(#Jp*vo)RD zK=UMt$e35-ezd1k=FhVOmvIi=Gw4IY#RUEz%<#Gkc$R?PrfMZ%C2sV8?c(0N{H#cS z3vE?x78g!ORR-znO^tYOMl-?fJGJ;`KBU2Ck>A}G+%yu~d* zx}ipcRqHiw#9WH5p?K9C>pnto|5@`H3RA@hm$?XcHCcoQiKpSUDM_D*( zFxhKoiy{6|mRfF3=9*^ve~pvAlWS^3Yo)x&=EjQD>i17H(lR=62?I&k{ZI|N?~(() z`IhpAC)cDmO+gv#?}5$h*^Z9<<5zSYNAsd=?YP*(xu4%&9_OU%A$}VBCv1A-z)g`& zZ~Sm=sIfnhZ>eZ_a_x2Kt5@Vx<*|n==ucyM*fmwIH+>bpu(uVh+lCW22ZO|ty|IT= zsL`~Hgmk0qN`(&QP`^rr@fzVi)3{@~c?`IXp!VaFrJY^OCzy2%d zuVUyE)TZoDtCy_K4F1uc5{o0P`Dx|MjAD0~OkUnFVlfImvFW4P9(B zHH=u!XJ%u%WA!baEApR-a_n;!UCWJMXo;SJT3k803uF3lR1_Ujed*}9c=gILeW52Y zHob{nss-*StMI3H+_b#o`t1G)SqbhHKiBEW*R@ zquDniK|N$=g1U4V@SiW%WtDwy;WN!a?a<@-rVlpstUXUhX90Ia5!}k6W28B{j$bpo z<%-Uc0YMQPI%^uG0j3ynbkQ-!9J$d%iV|sT(f^d9BW4b+I=C_%kZ3TFC_C|H@_uh5 zj_D)a9|6}2HwY;zL;|@-=VnHSpNOaZZND+v+OU7k%?uh<`IZRXx|v=@5h=sQK|U&N zA6VVb91TCrBx4WL-&@Ly0To4ubYjLF3>|2A_NH_HNSr+l`)|6_`e{It)IZDt(+1eg zn)y0>gX(p$MP?RTWTtD82Il>lNwJ4P^UNZ(%`8&eOi>$z_BgR3YbxE;{v_dmGFAUT zo_OtC<9x&8s4cXDY0H!TlDjHc4!3JAn57Go>5d50I^15+sj%MP|CP3>F2MFC)Cw!p zcp>cScj#jQ{^>}$nsnKQCCs}jD1?mqyDSShSw~r&M&ORakZ;=mx;x6s+U&Si|K<6C z*qjM7)f>U3QuM4XTAQqA=cfE3b834_XN6e5j)c6qn4QGBz-; z=nC)giEpfU#t%KcV$9JMY_>7tZ;i(a5d*u=B@kjh;r7C`SbdZ#E`CG$Y;r$X@ zu{}Q<6WeLIa5VO4snqu_QdL)>aq4gD#P3^wFWfbOs$U-4oMGE%x^upX(>w5pbaZ-t zRfR?wD@iXEE*B1H1vZPSS9ovam%PP#-3sr?i9cEK%&$VPuNd>j3bt@L>q+H_Lgf$0 zBO2s0+GR1A+Rit;U;6(P0LtQ&2`XH5H?+O=Zb*yWsS^W+^}~*ez9YD0t6~T#c~xEP zYSub66KSjvrN>VM1hs-?g)0A>@lxxr@Sd_NXWu}E`vuw{D;l24M2~UT1k>xyv+xLX zUo>&;VYaFcQ~$V;pr)~Wn(_?%Y>zTB;*^3L#Cfrk!2{y#I7r9nXu0EL^(5PL$nIIFfRZ+YHN~G9Si_-``r&Ar_2^`|-c0?t}aB zNBQF3H0_`1hQ7mmk{5@wF+{eZ!#TAZ+otXKY@y=ji@OS6{pwdo$Fi7U#sI;_p2HPd z@N3|!xPZh~aoFwN$2OmXKl1rlX%WNG{<8kD{DR8*=fIiQv|1N^hB0H?hWaTgrghLr zU2f(Zgv55vF0a)|^T7SF6*;!{%zF~vMfU~So;p6ciY3~xq~oUhnMBB(--wzl6P3+L zP1;lZO4+7lTAuq!&NnmX1`|?sc0)}CiClC6Q@FWffdQnv+)aN##z$L^5Hcj_02vPn znmZ)u(D0x(7o^DKv6wb)%a~%~+?4-MES1s9{nM;Ct*w?&!nPt193JXrmw7YL%$8c? z!jwPRcFYrYZ^6%r$h`%l7ZgXbu%LY*&j&y@%IFhfHNZuJwQ*5+=OEHNN!oY5Z;V)bVcDi zHh$Us)y`+FpJ8;&Votu4=A`g$TBI1>k!C^VU07vor&&l0xYQQSHROivnJqfGso$16 z1AoT>{eNXu8BSs)!!K^5BIoeDx!pZ6+_QK}?aPE*8@e^txF|jVepT-r@$o$kf_y&5&Wc+6CSjvbyJWC7`s1 z=1%VTIkQyZbqo-NXNWe19K0@VVl*_bBg$E&D1Aet6uu^T%I$p?zNYAfuPI-*aphlz zUZZqws-yy?n()-6{hgQ_1hg6hjoY3$Q+Ms&m6)PjEWlWT$1Jc^g9;EHDRkcgH^6kc zRKG%-CcBT@-7MAo+|=A>q##+Bo1vZJL`T^_l*bq3W<>piAB?cP?{o(zw=VDxj#L|K zfpE+M|2{|4_0M6{OQjd_-}TBSFkKv3P^$7AO9bw7X=Jz-MSwLOjE61$7dD}Zv`QyuB036=el&R`F;s-&WrM%*LKNvkebi-P z=+TCr^)+m*G#uUdLGS9Q`L>1j<2xFiBUAS5k7(;Iu3?NaT2uaqjs$Bynd$7{J#pS( z@2e^HzO#q+zH>=eW4*7|KQTeX8aZ;g8}DY-!MKNCH6cU1v$!&^WbyXaE9BEyvMqb5 zK3htLXk})3)}Yl|+1{QtXtj2%D$lfI?hz&kaON91%`W!JA{3h#`ffDmYB}Y*Ik^dp z`Zt?BDy&69na={N>#f5ssDg&)A|`5FSZMdJ>+s0#l?+OZ(K=3oiDerIV3B<7CZ64j z8sfkRF{a56SSD+HYSe2o<-aU1R^!mLPg%4U|4Sc3V-ZylxQ{fdZh&8-B$Gf%2E!)= z)Zxp1+CqP!3jw8*=mdl`Dx@>n=AV1-DXjY4@Tl^4syG-lmhugQ_2NEakwjzmV*joG zDYYGRDigF4N%jXx)J~k}SM(rmTYrW3Hbj=}SclBA$p85Uo2G%Wjlp#CbDxtB$FH4I zhJQAbyhYwof29X?qPQmNbU180_9LvQVPpB&k667;l;uWuo^_1|ha`5xZi6wXgVU?h z{=9@SJB+gKr^D=^sWeJ3jGYGHUHjB_d$ZrRzM_uZrl)fhWcm$u_4?1U^5#UR&WL8l z7QUwWpMQ@6D!C7ryNO^)P<@A=)8wE>Ti5K!jb-of#1c78H7^L3)Ov?r(n zC;2znP*)8S+xISz7T9^DnhFVao;r2Tq|UL&noT7!)*Zv&8(IHc*A(e-X2!Pqv%WpT zSZ~;S6B9w@O8g5I$Oyo&@lkJF_tWdnnK~o9{!A9k*s$Izw!Lv2;zRw@Ay(A3ikZje z{Wg0`q&%}EdrPz&lMiIGZmM?$?0MbAF2(I1Yxt~U-hTFcWSGm)Qz)*OeQbe$R?d;w zezDm0y~qRO7x<%{r@SD)Bmb(o{Z1Q2c4|Ui*lDB4P8&sbO8vnfkWyhFz>HhqKeo+s zbprsoGP~|0+JcU{Q5Eqc58=!Xd?42SR#015yj}T5n^s$`Cr)h-uRk}awN^*qtuvxl zXB8(B)vN2@Wmc@GHrGoIn5O^)uozHm#~p47zzqIZ579~LHr}q zQFQ2tbw3HDCG6&lNKHcy(6NaGH5_*8@bCUxAr06v8NpSsWt4)go)jK5j6Y}?f6y?# zWw40MhoQu{$Y0sKeY<5-#QnH?v78JvCJ9CwfJ|65Isg$_StDGBa2U!>Id+K-0`1 z6OjzQGSr_^sKsV5w z0B%~woIuP$S(3%aBttc8eEFl3h_wGbBEz_|8z+@@nriL+9GSplsTH#Xyd>eq-Cva2 zZ>_{ZZqcM=p73u9yuSDO^7uiXmw68H{FJ9C8|hc`{|f)+vj(M#KVklVhF~bo|2gdY z@jokl$B^{FdS|fY>HqC*6>J%yndv`sfBE3j=b+8@)}ia41ClH`fx!yKWa|&%rKSnW zekT{|*+|*yzp=Ig#M`=O&Qv!20WN0B?yL5CS<@GRLt)b2P^XBe3JMrJXHuI|NzPe$# zS$>EMO7eRDzuhT{|6W;y|l5 zq1RqSM|9f+4e4m+bQE{E`c9mMwtpP`Cor{S@BGv?{#EwDn*Yig|GKNRB>kno5wc4v zjT$!1B2U!2D(r1h9)*Y98t$DoXk?;21BuuJbIQ0n(v>lUk%qPy6XiZm`rcJ&?S_y2 zhy~Ty4LX{xetzsnB~ifSL&JR9f7r&TDw*+qCw?RTTI@H1oTz`9TR$JNB(I8tlQ1UJ z&gz}1-dxtJ&Rphg6Mto!!`miyo4e92YJoJ1Z%i@jCU`@#bN3~@zNMBV<(;cuZ%UST zu5i_K$6ov|p<(VF0Atx(F_h8$BZ|uYv!b8qwbgnn`wn^3TQ1qdl^5Bk=iYZ(P+#`N zL_H_#vX7PLw#$bt0p^}|9><-+DYf5dR!!~F%j`yGo`2(gR?X00jgdLeb7I2-*co`( zjplm$SAJd$CyI%nPbc4Gm49f)#yO4IQJ{4=6gmqN77}|hD`JYAp%kLq7GA4fs&3ku6 z>VD7A+E}%Qloi6A)t2=ZX)4Kql?JG#< z#YVK?81KpOwrEV80Kk#|ZU`wa2O((W?cJs0se5;Qb+q0(f{M>J+^nPg8kl~`^CHi2 zp5O5(U&eH&TJl*@F~$yjv<*Yqfl#dbg8=A6K|V95XJ0&KKxH3`=PdG4jZxBECFoTn zpzLFjAwg(WYjl@gPSR@1UP?OEk^P-_tIW@epPkG-wPcqQaj^hn@g%D3hL z+o{5y4{;g}WUg=6pZV+j%)<1yiNE$#Z>vy|J^X66FOoC218x?#e>c1k9L1(K;@^!S z>&_Ht#x8?dz>X;eS z(D@GhJk8xlvx@dwVh^{2pU;#x{3P>F;HBYc=1cim?_CoP7lj*su>LV>{@(Dfzvtax zUy^+hz^`?{Ip{^-?C*NU0ll7sevx#pQH#!u{!3Yn_V2PU9%n1iBJI`rTQuiid@~@J ziohRY`4@E)?+)9>%=`^B*O?M^-HJ;3S2YA|nBm=Fr1GCeDzq_lUH>|pd*ikzHb2)n zV$++2o8~q(HXK|3D)p{iGFbogQYuj@`C3;r*SHUaGjRn0X2}!wbh`ZB z4v0Qn3i0j`G>ZLemqYjN4U4>g90V=9H^c>1g$c{7In#+#-8hmx z{ARYVB4=aDjO_k!!&B?O?=lYkqXvjM4gUK7bWxWsIp|*tX3@;E=u5MQ-(HgK10ee} z_)6zs#BZ|OL}lg1MzgPU4$AwhwFb8dNSIfD+xACLX>;7^&MtWXgeEGeV7eHCr3d%FculMib&kR6>~%IK+BSc5>K1hkEgOw= z^+D#)(3MxZJh%MXs&Seb=@Ii~TbM$OHqV3OI&$1)8Eb z(edY_n2_agCCwmR1Db&{DKC)!*J=C+OJjHMX0NusDVaSSzNm?9D4RN*Ynd%` znGI_K!DoHIP&+7|0ut6$$6>O5^_ z!k=&PJr_SXrkLmgR)m@~2Z*c9H5Y|EX0Q~(-JZ96=-8o#LmLvLKFv~J-`1lHYC^*oDR>;3WqGeVWaBqBSU1mAmPR}4 zf0*Hj?L1@{c2mEnglM=x#~q-;RpT&qDHLy;W6?LBy$pfw?+BNVL5aCjtbqB==gG} zX4S(Qs43de6j?tu?QcF|-IpS3wx{FY)XaY(MK?vCeyLQboj@qv+~~@5hro87^SOza z(i5Vlg^=L97b3~ASG}it-WVfWOjr-AfBO2}mz+bF=IWU~7UaVoC|HKBU#zU5x3jtX z>C8F1a=WkXJoakO8_^(*_rvRV*OO-A0c)+;>;s|4yN)ZD^_5*m^xM>R!ag5lcL)mI zyEGs5EbfvVwj}i(_Lk(hntr#GPx#XsKKv%us=Mm74cf-GUhR`OIubar{1;!wcAuF7 z{GRql-A%Xd-q>~w0A9Ff%_-af`*WtaupP}|*}HyRSK8ltIytjpJx(RCp*xO=g2GJ_ zsfm4_dj)Rj)9yeiL2z({b3mFN0GgW*w6nTy9g_!%k?8dU>Mr)Bse041xrz zT*XQ_AL;7AkjbuvD#aUx8-QqU;x_lUrh&msjT=BP}R~DZEXu(yq zv-upwQ@kX1!~tlsh?Lv7So?xL!{-Nya|Ny9(0kjbivhRM)M_ZMSqO4`m9H6!*<%U8 zTl|a%(}sm&=Fb=+l=%UR^KE4=n7&&IaHallqo1O@q59A;L>?PtSSmHPeJj00B}X79 za$7xi2(;&u&Dw9)Ju@Fq} zTwLS`otFV&(@>a^F*dDFhE?~b666MUG&7EnXjx{o>xB+9l$qRa4)7U1$*k1+!e?;H z@oNkt!Up&(>5Ig+KNt84U~Avl_P)SNcn#8i!+FiG!OMvLR?+K>+G3(xM+La5k4E2jr_Jus6B1T|p(`06@(<4&P#Q40X1lagm^Z(C_>&XU#s! zYz7K5dLqCGHA<@`UOb4m(Z#dl+cJ)#IxS4bjRcp=P_gz&XeqOk<#u*RtPE7j`5UYh zQWIsoloZKAP?1G3&L|fLXdNUXU4ktVw}9})4g&8p%HR@?xy2{+SqEGQE4y%CY-=Y{ z0#|sih!s81{V#w9Q+9Mffres%_j9n!{{}BI1+gMzL6)N^kXVY=O$;FNJ$`eJ@v*!_ zZN+EY-jMk7Apa=!vs>%Q*?N@g-PU0Sxyg8i4tB7i#H{={KSQ3jXF|l8AfkPS>JI~I z9}Td5fT`~*Y3TMVRm1BU8h^V!E~TYtP|gh zb0hJSrJiA)&0+ac=5SwCPnLg%`-3-p5A8DCF^ajh69%MHrKG+RtChB zZV)tA`M-0EFm#sFMAx*za^${-+e8H&;@%>~u_8i##|H#xoGG^TMc0>`pwESYmo5TU z@pSK^*S7*MNTKNUmB0&fD0+Q9@PZK(y>udzwU|nz-iVaM7~iyL!|02%TFx4CPVz6a z?MC#*V%?vxJ^+QU2Q4F{*v%wmG0Hx!-ctb1Y5o<14IPc3L#ofq_-*8OIb|+OwUTtT zQ09NnOqAPx|FiI0cn}7Td4nx7r2Fu;E*@W=Oo%h_Ai1=U-A#|>cYN?Gi2+5l_7{nN z3J@H!)U>O7>Hl^3J;QSt#&Nf;eDbk8SxYy^XSpiXE|QUH?h zzSO~Ha=sRvVUvdS3mn*$iM2ASTyWGzfe+&vFxR+VEr*r$j@0`|3v)91c-j1kHrV@7vrb&3kQfxCDyLt*MuL!u!_Cp zapE$^#&@AgYyTk+aLb}L@CXtMZ9j@&;Mo}=02=s@=RonZB$GHIzwp@r;Cutwi zx6}x0xz0$?P37N9HqR6G2G1D^=l2)*|AgP)^85Q0u_{o%k>w8FKu1bc8-aAWq4W>L zp?C5=MmT;JLjG+?Ex2JSB<6Z^s=Y<=1>|{M+`AUN*b83b5RDdXuvC3} zR0JN|{#z@|iTr_h_EYC2k$!>%X%aqfQqOt#jIoJVyD$uiT-bLr1M@h(#*OI*`f-S5 z<3dE^2v8vI-NvBbrU*Q7g4$-(6yw19FW6@}CkZ1XHCj6@dSQ=ctE?+6TZZv*@Jc5m z8km-?ym_2VE+NK_&PgK+B@a%JFnH*6Ak5}2T#RX-?sP{kNOMbq*M&5GFTWq+nJ?^L z1OSLunq{{CfQNZyn>rfYv|S_NIeY`8%?oI-IzH(f79Dmh-fC~i&Va%LdTE1kTlTVO zj~67ydz}@nT-y#Px(H82oEa1`Ja+(T7muN<*<0P=C)pAp(M)si_;PM*9lzM z2o+{xwe+MmpOov9t9jq=+G4jS&Nw?Pj(O;2O?MAjyUW!_$mX!1$Lp{K9>%rDTn8}6 zksU~^*L~5|#?UYHYIBI}GG>0CF1UIMGCh2G-x#P1c5rnlA} zaWpDQY?m7urtK)dKPC(!Hv!~lGz4w0M#pzQU&d$`>z0O9YL51zWnnm6adiZx`0Tzo zX&4n@@~*jfmriZ<_(w7tDB1y)j9B_)0GT|@Mn57>*qS*)1d)L2X_`{wq`QyPk_gTk zIr+v(5#t*9##tvPVtnaO`MLFx5pF$UT$!6>kXUnqAyF-jO}EG>?k86ZRJUHB?+D-I zCQ;qi3>4S`hFizF^&e%Zp=(@AT;OEg9?D?(HZl~e^qw%d_+;Zm0CI9Q7dnDEQh&{$ z#%aM}cx9;p9ZL2^-IBy-#P)wH`i^bi?Ru0g3k74uzd5gu77OFIy@uCybeh&PR4aZb zxZew)lyM3jcU`SAyzK(A{*`r|I8{Z!4ofyaGEFOtTJ=~WQYojcp}TP!E{04RW1g(U zk%0kn>#z*o1mhF9H zOM!0Ta9GH8E6|OS6ijc3&lg=?U*o!ixT6|eL&>;uR~CNlZx0GB;v&AWHiW5LgiBfJ0)EdOoQYiI!@&QR^uH&`B1J zV{I&g##@-ID3kzVke)>`yi+y6!ik*PALB1DzORf3(85~VL4+k+?`Ug>Ls!v0ZSy7A zo20*y@~igq{FvMtm1P^{KLvy8$o_q+tp8b0H;=7&1ZDfgu`!_bAb1`hEWipw z>x63ttN1dpItH_L)!_xoVp9Q^q(MQeZl%GHfa)YML4_KI$jVqrc#ymqcK9-M;sH&! z9d$7|4RqrwW!cu}BvxQ*2Y2lQJckK1e7s6+wW9oeej(qs4rP`CBO5ivSq-pNzrxW` z!bA3zI_fw%*2*lwR)6E`)M|(MvIX-W65Ci}oc>cQfdY1n>nJXhYunu<;b+7PCyQXH z!N1D`2<@m-fD0;)l&&@qoFr`ouvd%mq0P3*YEN*|#=N3!oj^7Wwl%t>db27;1%69V z9lzh>(J`ME1NUyb`xaA><&(agOl%7yaPoCoxL0q#9Pcfr-Bh=MK(c>xt#$UqsZbCbN#inZD zHNH%Ehg{<81a2Q6Kjrr*b*mC)ppAAwZu^6YO=<-^X#ck710=RDx2c7b?=)w_q&A5S z^{#0Q!*u+%Kj058NoY;$usvC=H%Tv&5UE2QiV5^a8omnlQblV)LA*pgMLqMbSN6eL z2WJwt$GAE91fFT;*7|Mrrt5$yQwR>FbG2Ai$A%F5a5dd*Cobbv_+b|NtQ*!TWMe7h zp<)OCaXYz09f}UtZ&We3f`XjyG=EKLJ*uiBTgqiMQxTW{{*JVN;Q$9^2UeD)WjDev z|Em*h@vv7L+x%g`WT(r|??@hCRGD~Wgtp;rjl1Q;fM#51J`{ z8PCmHpCRZdfb?0hPx7^2;4sw2)AWaT1Lp>K(S=7WJ{;-7M-~539N(1=qF@3TxabgI z9xL>ZC&J@v#_~S2W~7n8zKy0d07zxO*l-XeNHpaDDhDlo*y-~B~ zG|jVEapM!>W-URxfu+(Igte5YWE61WyC!_E1g;!|$0`WB3o7@X1t_ws!Jm}EWQ8-z zw!|^`SIEGu<0Jb1G9K5eKzu|5Z{a<5$3N5fs-Lzq=!KJU&!dqg#b^*>?zs?`c=Hlq z)cll*s0bXN8_0{9$znkMeoDw7gSJID-b#@Jbm)C+YRJ5Zin?h zWx&J0*ZvBgcbj<+A|K$x&Bk%8O0IM92*1~I#G&O0AW<8&{g}S>d;4xXn7)QhNOu<= zphyak7=idi8ZnumGz2pW&^i!~dxCn|s1_pn97U7t24I9fRE&0?b8xhrqGy4GwmG~k z76+^4M+>#h;T8CSAvlu!5**#B6^fK43wi!-PP2;pEfD(?k4nKgbfPDnYF*_2lbv;) zawLVEPaZa%qTTjdPuokn>XPx3!uV}&zx+(&zVQup^>hi>n7!Sv)|xraBySvG_cp{tdzr z)!QKtTeC@1S(rWzrlTpXq~cFC0B8mR&0k@Pri8o z9sb6A^ii5X%|8ApXllW6z8w6r3e^5Ha#K|;5ce+z!xu~JCC=g}hQyfuZwDmN6*lyvyP<>A=*znZtpXM5*p8nB+v3>N}$RTKCDnzIB~;C{{ufeAz5dZ=C#-tEA>PF#7iz9a&o{gTtMh#|L-~fIf;`49tr~9QN)*m zfOiyeM-YG*GaRVv2|xtVvCJR{=Fyqr)mCIU+I5nmW=hBGTl}3-V>wMzvim@Le5_OD z2v#|(U?^w-t{cIv5&dJ?dzsjqeX4-A#>66TC`Iff;_E~_5k%adebOQx9gfbv7vBS& z4+H`4sO#UmfOnvC1O7oBThr7@i`l`CYBt$F!!|r?mm<+g&~?Tbwp=Tbu8;4%PjtP4 z$-p7<99H`z&)v<>HzoRFQtP4Q{d^(CMF@D%Iiu95DUxr}B)AWE>L{#wsO%=`PC}iA z-gom)y=TD5VwdHV-Q9Ra<{uC+@1y)dq3@Yta@OO8{y^xfM8>r-Kl>KqpVR2rnAt)_7z^g?AM{0mtG1@Lp(Qy~E=P>@~{4Vne$HRoV-TdO&b{M}#=yI6o z_|n?*@Rm5*B9cu(;4UkgxF`ymcS!LRc}Tp{&WJ?Dm)1(6YdrcVr>Ip4 z28h+me-}VbDnK&npPryrgX+sb_IzyXbUF=*+l0o(5*j6f8ybruc$?5zHi(Fl1TI`z z&5=O@0r^ivqXh6j11U(}e=ZtT!k>@a^ zNi8J-uz@&lHF0(%qx5SE2%wYDCLwzesB~%&1Zw1_6_T`Fl;>61Wn}q%o)=Y#b(U?F z%T{nJYwAFn`-<>5@jkw!(Y&8`6<$I~l<=0zScIO*nP>L7n5p~C&oYDYcYgf zsyN9d6`JqVJOs}j$%TUr2#_{^x-U8Hy9x3ftr%upKSJw&UGk2yDAuUiTyymtZUQ2tY{|VOki# zbl9Q?_*zwhsYrwYde)PS6&t+F61#4&N}b%=Uld()vT1PLiE^(W5R~s|1T~KwL@q zeaX!Z9#th(Lk4^B<OINL4n(aUTfefYT(Mxp z`{iV6H>j$N`;yBon|P|uijlm3U-E9tLTQ+{Z+4h%q;IQUwi82*CcD~@;VNag+5sI; zO|g6y2BAfDk$5BBSjjC@gkq&xhpa5A4*9rRx$j|eelMk^7NHf={-_y3F%ZO0{U_|? z6xR2GDF`{t-nTe^vk*LcU$uR%H@DE%MDN6Vv77_uT;Is)BfTtDa77BYGGMT_CL>xFk3&@O7OiKZ?mO&=QWah zCGQUI%F4b-f&=>7{tvYyyJ{3ew#lk|19nGZc^U1&)^|LX?{?vn7I4;tc*%5YZ07)u zy4cPG{7jDR?2A3{OzeU0#vXXH>t}ZN_0Qs6d&)Mk+S;SH_uHP|#AT2G1(#4y*UOmr zEpS^+SFZxc9QAq?(%bVJ-Evb_z=PeR*aK7$FYc!a0Yz@|SC)KgxJ44%uOG<1vUr8J zsMeb^dBFXT3})ZQrXI4Hu= zt{}Sh(4fSSAkZ?HkPcv*M5cu>m{((*O(d7sLR)kh5|mI83Z~-p&!CuPWK_;qQSaZh zdbGhb#3#jG!?rhQgl0A%8ktAd+=XGhCwm4?!RUF<@fdB|66#~Zcs!Ue_Mi)>nPs21 z*Lx<2_J*RRLI;TUMi6aJ_Hm1LfIcwHLeDkxxw*QKiDTmkb2$E4h-3ghm!9D5DQ8`* zXJCZ)c<5-)aoOIg&AwP3IuLq|?AyR#E!C3&tw|i#v1o@}v^p2*usRf$z&(vk1Yv0serzVhQRtl5K?c0%91{PaMd% z)J!}y@hG7Q)U0c>wg}{s$Q2W@=6alWs4r z(v8=mqLcU+OOBFCSlbgsnBW51$GT<4w&#`K05LUEXi@rlpIB$O&~bl3vUq#KiXS(L zkHwEtB3lwFJ&Xq3`;_@!#aT&F)ay#6RG+fpX70?UC_7$Y`c%?uH$^%vKWSTD9-6?! zX9BGtwMn4{CV9ler|_~|iwWdo3BqHDq@YrY@R*j&msF8#Ph)mZqi(_BnvQL(aM26d zXssbHp}(z>msI8#A0ms*$plS?PvbJ?#;nCFKV-5g&bOu3z8d+`gdZ&mfLj9cNhldW z38@2;T_Aw8wOCk4f06l%D~*-;oV;4UF*>4L_NUXZ4s#PHivF@ zF`W;Jk5=xz#R$8L5w;b5+{A)RHWib!S(1+8CnP}VvSR$N6mw{EK68__B+^}qw=*Jw z<38I`#c{tam*GHpoAg0iO1+~^g z$<^{`T>yKwGPdyv3lGFS7m3-XbKGrfUBugA>u>%YFWH7Of@D^5R@)BS@}-hR;M&$p zlNpstAZ~jox!Xa^zCWJm^25eN|HYcIJ?&6JMym}aZTA=3p@@dI`)r#A7>bd>s6%`k zg9iTOYq_hrN?0rc1h!n8+~x8wrVWr7mf~FLM#`Ca)x5yGHwXO)z(PB`l2#|A7M0{SX+e4{Uy0YZzbY*unIVD;r zVledB{V|KY+WO~o(xj%f`}JE+_5P5bS1$Wo+bf$mfq8u5Yq3W#1hAoyUsTTF{nNaj z{54$BGh$+2?2(y;P~X*=Uw5p!>Xe^tuP z4gc@JR~LtW5!1g}td<<=zbQ}eo1gMOy#Sa8Sg6PNfIos% zI@cV|H%Awxa?KIHN;PYav=%N=?%S#>{eQoPj1FaGPrWnRTDl&gf0Ra6qUOpC>caSG zK*|wnjGMDVIw*ZT@k9_lq$XHE?YQ^$5%H9NFLiNc`IlI=;=LnOG7VBTB;TRg1@=Fx z*M1=O@TTW~rQ6iH5Ab8wQaB2@x8qS-v19X&ci6PknHg-_eVNF8JpabS391TrahTpG z{RI-FweLXnT8yV{YV5c2rtq_iQZQ=Q{qBVU#|MaX2@la^CZVjH|9AXR#?bulb@_i` zF#m7AXa1ij(pt-(D1fd4-tkBNcD}x*{^@l6bM>#cV)^WoG+ojQzvj(-4K?d^S7TcF zlaLoCmOE$Vr^OpEbiMY{(2p88HMaI*GYJcbHP{>W%Rd}qjw@RHP?Pt=hCi(TMguC8 znX!tR85ta)UwMW<>J6huJUBAn^-48T@u1|L;49BAJl!eP5eD|c_$0K`GF|37)}E0M zCuMl(UfPdX8uX#vS|U*D2kLjz5tRXlCN7?(xwZ1%n*XYT=f z*LsSx$=>(b`+0j;(WrZOwb*-=-d-V0eMj@ec~0l4<~f_EmgfSV$vl_xH1ag@%;mX; zr;TR`&vKrXJga$b=2_2k2hTR1J9+Nr`A436dH$K_exCo}*~Rk+&pw{Vc@FSA%kw zI120Kqqiws^O|$&Gv#ZMP~BB_bE>?`wB0S+>i=~q3lPRVayux~%zCLWM$i}))q8h# zGAiV^tmDmnYnAh*$r<+MRkLq9^gEH?QUiAy^h#SqvkC(@rAq@#WNMcR!AwU!Jcq_9 zr1CSk73(b$4jmHJ9%dmSs^ix+t=wpEJy;`(4hjEEwLt_>gVlJCPGn9y(754p*VrF$ zZG#DDcW((RX~p*0(m@qy6pZ;j$4VsV-28i?Gh)_V@>^CBoU=&zEmd;gxf)pWcTSW0 z-#c;VBDpP%e9_qdW1YSqSOD1*{&8(JJpaOFbw& ztdDOTi4~ISvYSTQPCFF(H1;BY9s6QW!@*A7mle%dUD%@W2Mp}>epqyg2E~slFhU_$ zCi0k?@NNn>v?MlGl6SQKqj1S+Zgp5;_a#-ysf3Nj(&>OF{JxgEDV+NN?6k&fN!WaB z>Xi!rt@nm^Dkf-NBW-RZjz?4}5y*TDbDEW)`d@onh0=*z4ZTQUH29smliO>K=dUgI zs=k7Wj;pfY5thol$2(pA49hW(Gsj!y?a83guf3gWLI$)%YGvUXt)ls-LqgCXW+1C+ zB6>q^tKtNibuRV(!IJD$dwbj_`D|xZv3@fnvAGyBKDFW5%kaelZA_ zm9fz+GTlnp?XTtMlyg&7%-cKhQEuJ!|J_K}jCZ&CA7QliwyvU%pdB2Y%Vh$hOGW0| z0#!SNV>V~TyvB$+st$Xfo8Ky^rW(MR(Y;nt(TmrQU=fe)c!9MXS!mLAyhHg}tA~Ej z?v38H%+76@L2aiOtoLaJ=EE*qx6kyG0RhY)j{(pUY3~%g-#&%@N^M zP3+AzMZ8%FuE+I08JRf7n-!fnD@;NiNv+~qpbzynX*N^laf5CmH?KN3uO>GynVVPD zKRac{vgQ+k@G}1*RzGu`_(ojPk+<4hQx%Ks+=`t}k|kiJ{8KDSBD*hjwPpfZFdZ}>k(p+m8kGs5U!VOm@ z)(?22bwR{v*dT!w{o}-d`p0-J;oMZcuGZxn@lZ=tB-PF2C$rYOI+34Mp6%JlYI;N8 zhSgrTcxuDZ*xaLDw^(Y!q1e@j8h)~&$;+!Yd5kYxwY+ZiirnNr=h#2HFI;%{DAhxv zlo`VMM|J5k=}ocOzsnn@yj}>r`(;`UdxBhWGW@ia&L7!P6>psQ8;mI`g3EDVu%dc1 z5{~Jny^C8LW+pa{!RnQ>blzW$p)Ia>Aj3bHc(fs-b6^;ODDVy;fDF*xSYS~KTinF-4e#%@l!%Zd&j*Vc->?0 z(+%NV9Xzncn;(Ry6@G$kjgND^%WI^}MR4o}Jnl7vj4;-9!a%;nHU7($x>2WO@C$BBU0vNX9O-gy+$+C&bG97$z;U; zjwGMGBg~V^7oP2yh6g_j-H#^qd~J3=_qd;j+|Lv4=jZO{E&D0T@kOA6@-ixK%JA~U zmHwZXxANkS14zOr8H8U!QI3(Uy!4NRxBQXtg?}V`+53kZ*NS>0y*jMECG2Lx1#UR; z_CwO%#~XSxzu~TyBHOd2qA0y!h)JkhwfhchNHc}o1x`IANa!!*(yxk45kt86WP%mKjv%_LD?=Uo6cPT<HBEG4WuvWf*cqO7ekPRP zP#$|^WOny~?7*nCq2~VIQnoI&(FAq1l`r8v9HKt;yEk24ml=gNdLxd`W7*x6*@07U zKilBfwTf1S)VtJx4iep785CLG6nmu76?pUSwUr(P;=!V3Xu;7=I5S<-?zVE$nYBFWWQ)c=nf-wczMHwrR=*nGj#HDG@L-bVZ2(pcR_YPhQ_|RN9L~6-XZ_;^EDzxS*$wUlEfj6k*$(6qQoy>8vPVEsuX*c z`%SN`E!hC|j;<_+m&E+$BQ~;Odo<3a)@YsfRxYcoh^K<_xVI_N$Y*a;l-4N=hX260 zq5mm^AtFP;D#6C<>;^ancBjuWEdg#gU$Ce(zai1;pXlMh7#uW}3k50cj$9o%1F6nJ#SOWo# z4iAkc2K6>p$+L*&l^mxZdds46^nW>sUON!kTV5l4&TzTTh?Lov%XNm!b%y1dn<0TI zlAEDBW1<-1@p_5{sWSW-zG=j9E64bof^w>@8CSBPDo6~SgqQovhQP6esvT9ajp5z) z6LCN9QnlRb!Rvkue<13LcjB#LNbY|I-qIaY?u=`WcfUB(Q5uojoL?CK1$E^q(N0zD z%Z&F_V^>hIa{uoG4@a=WYnq^Q-b-RCe4|B+1ay6Jg;!g>|44-$J)bD=oRB>+CNr`K z!Z4~4Zo|VM%B_y~iYlO$ccmO_T%*fk`z1Q0v**ZtnfPCk+`CSwlAV`zolxyNKQ7zd zt(h~tCQUhFZvL!AD$+aSUC0^QMJ7VP4mh@t2`C9nLuk5q|FrbJ z23JwFuZKMyrVI-|3=8B%gUJ9uEXpxANjVovb#0BH5T^|*WueR zkolMrW@n>S;LUv$5Z0lJ0KfLJ+;Rn4&L9_hAj$d4cS34V-SjRI|DS+*B@N)cp=x!Jvp zvhk5N(z-N$+cBH7ANkjzNy^_h$pn|A|29Br3`9t()w4NzZ^KT166BhQ<2}h zioC)P;z|p(#Xc}gcBG0Zb)-<=e|= zn8ftBC?#~9R+|k~$l5WJ-JoGUWVBYrop?iN%ryv0=hEtQduxj)y1g}jRsAVtcZEY0 z@$d26%QKy4HP5L$A*xbV`Dg!?52mOnuMCBQPkE21Dlh9SNO8(-g;$GmEcM27EXg@_Mo_ z#(Mm)BF7${9j+qNIF6_stenieN^W4 zs*5a$+?glKVC<;E>YBnq7^t?{0&F<>fq67@wGiG#MixYcktsd$MamDIV`J9Pw8{hu z3@46Mo_#`>m-6T2`@&iVl&>&ond3eUeYT`@27}*Me`*Z0F&Bg5G2(nuOa~}(93Ug$s?8riL6>NgHuv#}jGhnJ!3*#TOBI2lJM!Dl~jQ>#w zfJ1|gSKggsYTgXivtr$MsTaGOQnY+>I!u+z$rQog$hH@}3why&w0{%FYygvw>w@5W z;jZp#FoEBw)v+e;&S){~%v7#ptH@k5-~U7v_rX1EyJs%rG!t2Ow*=X{l+l7+2a%np z_31&8&)|i)$ST}9D*K4mw#s!UN>u0}zBoArG7W2us8M|l(^BqI#04Xi zQaf)SSbFWQb3g}BmO^-jTS3K&)RPoLLZrV??D@XHCjcBHYTP0^vEJ@oaM0W8q?oUEnFKdJ%bZ` z47RL;!04AEgG-ms2wSY-{S`cw!d;6EhKumYqjcY7!ClbWJyQ7~=BP^q;idZ~gE-e! zDvmB`8S+Q`Np5;97b!Itx4}=}@A|kB&l#)SCJoQ+&$(|hfa;Scw3(DF=0k~f0sM7x z|Ix=m^XMo+gHaOFhP`dp-OIhk<#g~$grRWZaKP9se3SLrh$dCujM~ECA^3ob!rnoz zJUitBnM&{P)cw3WEP9#p(Zcx9=&avO9_$}=>L1gLMYeP#NE*zoj?$%=C7g%cz2nD@ zJF<<|GZ1W}iIVG})f4B4k|*n?#f}yx8EJn*2#zx=vVb*k|F@@Cz(cHNNCP?JV050E z)Pme2)}IcR3kN8ycQ&ImNlOxnwcD3>OQns7=2;~V`^K&Wkr?uV?>hUo1QtG}pZ)q) z|HIdnmsnTCTc>@zi3|KiTrgb{*(0s~AC8?=my3hCh`+HIi0=2&USoJ*#cAKigBU}Q zkJI{N*JY|cQ|fz(-0>jp4xd*^vT^r*4$enP@jw4w@r5>vpM51c*j_a%ZBi-q1Mi;N zu}ZV`3K}DZrpYC=apDy;V!$&%BlpLgVyukGy$u2WkCqN%&@unc55eY6weA>^<>VR~ zzx-@9eo}YvCK(X$dG#aCXBdJAX1wT{Dg<%&(ca_uOs6 zlM}i%1zg60_+sBv>$(FpG-4k9ZR~SBoYf%F?1BD?TerTQK?gqe(__!U00159GBus8-k=>Gzz>5o#xK0ebags`uxJ^hezpSj*Z+V4ZXyNDux4Et1&V++*6{bUU7 zOemB9j7ZAR7+ramn^lO=v2R%<8@QJUxpv6t9P8HPc+q_S(J?^blLv};ac>TySSOo$ zZsh%Dh4^6PTJ@}Ivj6g#>PK7)U@UV%@itknFcWPHF$x?~t(_h)^25ZFvXA-s-@kO%0QVq2hFoXLS4{c{vo_H55fhc9OL!A*RZ_mIc;XLGBepatC`@FLmuU?oDwk?Ou+^w=M6# zMZ*_e?5o&;5lXnuEA!Xn#8q%h-X*6+{?|sID5R))jsMHrEGJ=sY1-}$7hu^-nQ0oB z@TcBdt_6u&@}3vujs9e2M03O2>ksMp*V09P1|9hY0bJL!(n5=T>RRZjMjS6)?FdTr zDhfqk1+BdQ%iO!b$5mbT{(6kk zP`JhDIQ(|#zE7`fJNqTN?caTBMWnwj%FkwgQjAVqqvS5);`{8rDu(j3ja&PF0j&E& zca-8J3qFx^*}^i;Y+Gj+n){WrrkgAM3LQ8GoC;jbE)GZlR*`H8-8d`P5}FJqTcQJ% zxt1s~$(G2Cvk}O^HzixD6pE1_{8cf3_B!sd^UFw||DP&l*Vz;?-XerAqX8`;Ye7V> zs?x7QU@iVxTU(;}&SUv6Sumw`1)^M~v5(p38Nz!~*JhGCX>Xn_`(b+XoF0=RcD3ll#>^jt&Pm>!ElLs_h z6&@HdI-elCVDW`Eb`97E)=5X4H)@M5^gOo^r!VZJny2IVY6TIw?(=kd0#RQllBF%v ztMAf~)ruLYTUR*MU=K<63WpljJz?X1KdlEcgBLKN?Jca_yV&(cM%{|+Veh(B^ViBo z*oWuoK0HqbX`?IM+re2Tnq>ab-v`v<=zJIb(Gk{#0?8hXe}^w;F#cm6^8fZ-p7Q^u zr#y!!Tz=8?+$f7J9XeO(-nMUIXKriI5uyl;G3AODp4~mGnBSj-q1Glvdq#lv+*+H* zynW@jRC-(dRdQxAZR7S!+xva3O1h(JUtxFQ$wOAbq3;Mfn**c&7N~qH`C2&p6(Gwp z8+E1}PTVTP!=EDn>0+n~q1-?Khx85s7_CO|bgY$qmHWx7L}{awYZSlpni+Bbw!w@0 z2yua(tB9+^@1x-a?=ihZl))?MT~{h~{bZQb^|h57x$$+{I5?DwfbOgoS$i;TaW?oB96&|KHU=f1Oawsxs7e#{))3(w7+C z(hsp40qJ_539T6^`~cv%JA4M<*pE>mh=2|o(xvdyy=%t&wD%X%S}rog+`CSn&QK*P z(aezBd7^luuUXDB-nB7w{P|Gx69$0?W6;61W4XHG zc~^jvJa+%P-GyvAs?jD)haYohWTf(l{@s!FZ%uW=MDh{scK4#QA@Z$*i|ZB?H#-5p zx^%a+{^o2wmC@1qifGwCy)unVolRtPw4+lEs=V{NYHQHXT&PmdZZ}~a=SCeJO8T?i zdDOc_;&}N1<7Oi&xJ1AWrjU*>bU+wP*CG#E=k2?=@7spLNre$V~dwsqF!8Qlq}%omd7-bryur-97mo zwfW6)TyWL7^InBCh5<$HWM@Snw_Iw|CG#Wu!m`5R$p)0wyVp(_`ZT}$RQV=0!mL5D zvUFX(Et2Z#%&(2FUgbug)lw}H^l8`+e%SreE2<_pPjy@#m~5n^NKfZ#60ee%+C=~6 zbKoZ3fBK;@8W1cwNW^0oD{yfsa3B6Y3>8-s(OQ2A{nP?6BFm;*Z2hBcA^M2V13GxV zYCc&V40Dqtns_rh=)+@kZ6Wz@xjbY>a=LJ)T8l#E94WN5n`))r{F^^ZpjFhD>t?5v zzg9|{=Su0>s9=lKO$(puSs>Ltb&;#vN>si#1h{r)45ld+omXTx62IxpNCg9&o|P6a z{W@-W-5k)EUi{8QQl63K92-K#1RJUfke#L_j%Xh%=T!? zZDRC<1moU~UvisqSXtaG6IW|y6>H`h@{f1WD*+_hu}EuK$oQ~e%3UaE+-5ao+0?^* z!Ige6EZ$3PnZ_LrT<*020+6H{eytIP_T%KS1kh3by8D{+0khakd2ndZ;EwTbp~_AH}S# zYd=wJ?RkD{-TNEfnqsmd3|Z}VdE5m}t5Z@sRpuv~f$qSo8VLTQ$(kt4R^Dq} zU0XsYSkPz z{4W)456=RETUGHB{DG4ckWqjU$8^DOlrN@E1Zto2Eijt;O#&Uo=NFSN8K{kGMPiE*Z;! z=9*BHwUV-Y{O0tMYC}`oK#*Sp5IXE_fC$y3F79G_+@CV)65nA2kvY4O&1m`zW|lTb zDnatZQ@p8ljBlpaleE8NY9TM9>L1Q4R_*O)rZxv%Ex61+?HE1H@enl3=?PTsbuQ*q zpWv#>M^l7hDQKV7C7--bZ4bKlTN&&^OCV(S81jd|I8fOVNI4ai<*BJHLHAXgsG+fU zitjqbAU|gO`-9r7I!|Vwn^QBYnI5S;!oBS>km||@-V_#mo3C9p`(@ZOy7gmuj9vqe zGN&**^|aFt(l^X6&dXmG%UzGv+(o%9p>?^%)z04W#VWjPd@(bTL)OdC{j&R_eSGW$ z1w%TPF(a$0Zf9!(#4_WaI2Spi^qp)AZJ&$QP~~{CExHXJDN;F-$_F@GZKhEL4KMNV z2S+qGrYOILJy#-sc|3P*Aa}Cvd9HIXQ&?UFI3jj~vv`JcWC!5&FXgmVug(Ydr`#2D zg@mE<0omiSmGjRb3$s4^LWmZNENR85V#@H4cDBvD{<1jOAJNZx{p{ukL{GS<*moa_SE6qB?pcQH z+Ahu1-vG@8FYlaMphyVaS{v5}Gaqgo2xTs6T|ybXYC_(f}xbZWvt8?$>SSWJXIm zwXvexeHi*ECqDMe$l@g9rswcnTq%1Z;U5jOY{EWsqfL=)^HuQ9O z=#OYVy*E2xt2ucfJj6jx88V%r4xZp>t#c*nf>q8H5vM1Z{1<0?72HUZv%OkY7}(n} zy5VK7;Ma(^X6$#8`&s%D&cX1qr$}LLyKs|4SQH2}(IUwqAUC+ERYW;_}Ry*|*+GSKr!FamnI}%zUh})8SiNDlb`F znVxgjNOpg@-fnnn2X)sGNW=Deb6&+zSmPE`2^tnyA({$9WG zR#kqQU-`wVJm^)PIp0_|wy-rvsHnOI!vF-QRps2$M$cpLFV#aw({}!RG5_ z=TGIdtv)=sTNG)v!8Q{FL{-k}YGt$RFcGvpL6J>02kA|`h8|IPMDP_1S$1YK>Hli7 z76#+<&d0F8uMH2PzdhxwgGy?=0C$tKPD2y7T;xu^?EH&H=cmd2&MU;%F;FzWI6?wZ z6o11uIMJDd6CV6Br3*&kp@o{4Z@n2F{EUKZpu$5@3w#R&QVZ08g@>ki2X5iPKe0d! z+{6lAi&NEJY?B|#j>nygnWj;H`j*bt65|YVXg(cX3=Nd}7~p|m2hG?BgZWS{XgFP* zd`i!@Dc=&$mF1dww&q%z@-6FgEzL;%4L4fwN#X0-vW3&}1KYO4FORp>DtbO!iL&vQ zdcBXg)K%M~p@9b{5#ud(#x?G#nvb`{2qu*hO>Z)6_iUQ9 zDp@`Dh)Zj8ZMC@V%eB={WooA~Y<|wE;B<6pJ;ueU{L=NQRqlKOvin#!;@L;ykf0wW z9|;fsn8M`Gq;f~Fve&0iy4hwQ;m&yW@SK`sD6HPZdDm1poaIawneb2eEplG%a9-i8 z@ce;+hAiqQBD`ygXMsk`LaBszQ7PoZLc<#sL7%u^r;-EeJuGV=3<=l>DX+0Aoo#Y zue_-}X5qrzQ@wTPj#A8pP58hAMHbD&N>DanI1$T^Ag>S-phC9}?}ClngWJ+~IPF#8 zhXNA%Z*N54zwg2d?3}0A48p*mfIHc0UvdBI!}%qVRDMY?WubLhwq9dZld=AGICzgA zn4y8If)auoJCnBL_TZL3qd8G}c#MN=M#3|j9a}}Ef587W{C}SR(iyAy#F_ZfmPj!3 zZdko~{hLs|fwzWE_bkzZeF)t-;D+r9Z^|Nehezff^>9ZOz^8?Zt1r07Q_sAUJmqczlvk z2JzyhyNSYiDO^=7{Sox}yzMgu);R-go`}#DWjNi5Y#$UROIS^P1Drw7a1!^PAl}%F8noyLVKSXMVnWM`d~DC%bn9DlG)Pu>we_1*4ABiPJXkBL#XySo$OsQ{>AmqrEt2*%Ystg@#!Ta69hXU zhN6w$cE&SDkUefpyiCFlgFMb9rdzG&bzc>}29NGr5208x;9U)kKF`)?5rz-Q)K>jU z9?YDvIC*f(Db7g>!Me68eJaNIM<)X;s&V?cyQ!iqjT(O8gl)?+>TH#k=ub3{~C&3cO`dz z@2V`YR5TqK4h)Z;FkC3^gRH+&mH&dyIALE zBH@fR9{HW{u~w41hVG+FBIRIG1B0A^Pp-|JvbuYf+iSbUkeT-)q;ns%Z`%|tIft+XK%I2{o_|e@&Xgz5)Nz)IZxDJ-!F!6Nzl0=SaW%(=8b!dls+na z(rbhBD`)f`{7xKj#_4?ZJ)M}SYSQgxrJ8drsIX!O|REW2TB^tpgI71$M|8`=H;`abXZ@cZ_w zuer-3M@O5}=U^)`Z}92NoQIe%Ww885N1va)=%wuQ&5K^jZH+jWM+P6e?md_%g(w{R zGC$SG=;1kwM$g?%9$1uJ04t=s!ZpVx2m*gW*rJ`oAM^c5qtDH5Fqhl4B4<8+ir9U7%E>9!w3ME_Q zzv=18S>|?R^k=gceNXJy_ws>Lvil!?-(Gmg?4^h=#BsjGhK6t22oq|;eW{~}JN4L7 zrkXJjHeXsI_f>cc%;7ilotQU9?n7-Ry%2R7DbA>0E$SB}P>M6^T1(aBd(l)GI6K!8 zo2)A8w`j5{5ur52?@4p|J-aU{%go<>U8rmZNM|n^%N}lCG^U1DY%E`C>NXq8I+?KU z`+jXe@>*G3ZhZX?wfExtV(ANiA8ag7Y-4B{hd}u9W78w(Hh&hkm(*v`00Is_8o}QH{riQj_ad*zK`DNj+ z9t>8(ut*FsHu|gJJYRf=6j zY@M8jEDiawe@U!gOD!If@=N1HAbq_e(mWaTx370B`cdP$NO;fJh3u8=$Gk44-{Z7P z+HNZJ`T9f7Y*m-?3#1q+byb5KiSp2)n|8+Q1&{RmyiA(5F=c8CDA$=Kx!6`%w%YP# zhXU*zG~?b+(C(%~Wto$A?>vOYN9mlJt$ju_GiqssSzfm!Nn3AT!=gZEJT|h45B4MC zi_OR>A1cc}rYXHNO69pLBJN)t^}rzTNufU~@|9c4UZdIv)DAy|hC_W@%7*&7xk_Rn zt)^;r8&%X%-K}wS+x-mP26Gz~62w%Tq7&2Q)e^?xMSWRrY3xRd)Z)h|Y5g`lF@61R zXLEvGLH6~EE%VqGtYuS>9XT?Flro^DqpW7Mu|2Z2s(%0=dtCOB8N$ltk;)Yjpt!D( zb9y=y`PcGHXk)-V`EPA|fPLw5iCJS#cd&9ar8kMi^>~M`Zuc{jns3!Jx!EHBiHQ!y zfBkQ)c=)IgkO={3krYG=(q;}!j2vUEc!6K_((n5H=_BmcvM;nwpQkiyDlWrQf@WhE zi$Tl|ak*!D)NaP!sZaDB{Leq-)4#haB1Hk;Q#pDAk=Y;uPd^0rv5_{dH1Z?sDO77C z(PpbsF~}yvD)(1v)xM}nN}G|CcDynlzNmE!#eqslxEU0z_RfgVoh#9{kh=L2)54e$ zoN#Zs#XQ-Pm%0ktbPNVfupNyTrs2s|+9t(x>2hpS$)Z9{y<1h*re;=IuUKDSyrd;@ z_q0Nl^=x%!)QT22wc?MrSZg$=dk#6X(tO|}l)a(841o;T=v>|mKe{B^ZO2y49AS&M zgO4X6&EbIXHl;#j#Rihxk=*6c+~w6eIKZXRl30F;4j)53CG_amjei0?+FzhY&b8I~ zreE__R{5H`t6s)abZfTMSr{@jJ4$*c9hJ7X!#M87hkY2=X6=Gn12YW+3FsMx(CH!| zXlY$ePB_Hqh+06mI;)+)CCE#)Y-_<=q6KdWcK(+H-oBVGP11>*b$&t*ZTo=0GCcHd z0$>?~>(VRfMo4{W)y|{Q40OF-xd{t!J7%c4DXcgQc*yVaA@TD=)pL5m|oV_$Jdb+VQvaOZfR(b6~{q8&%aMr>OX(4H0AvtIZ$-%cRBt9q67FnF^jBI(B zlAV*1`!ioh&Q*SOw0xkd{Oan$;!!?;53PvKrFFh%`od}uOh}LO(d0O;fy$lPlXATT zJENmPxeOZLW#YWHz&bc7)ba2cwAg;HP4 z-Sl>+I`iv-t0XIe0GQ6gv48NDSe)6pN>*7YLFOC>Rb3LP)S!2a(+Up!?Tf;Jjxok% z4*5fc)AN-3y}vhImp+EjJKEUoCoO3#ue3(&bfD8IpW0HL=ZWJZ zUcBHIbh>M^Zv?h{B>Tqf?G4WIrrkJgtJ{4Y;)(NjUx#=izWX}F6X%d-+eNpw1lUlX zj(o-8Fm!eXIa)l~7D(IqSW{)@7=>i!-P$sXJz;=v*I4l4vP66EpVS#}t_|Ta?i}%d zEfI?IL>ni2q79G5U==j+#wp2bqnY_|#gc8zYV52|V=PxFP-76(SxtCI4z9ESnR~LT zai|%z4bdd?KXBv8&X_`&fK$#-9M_rG?QD-EpQQOq0?GDhy2)8xMuT9_?DGQ*SL4#a z&W(*r0=w#yPY%pZKC`Pf`Q(j(v5JNJat|VFFO`q0q4bB;1zKyAM6LFKjafG zeA}(`0}0^mHw$_=vmB^yoaa=8m(6RuqAa}ZiZXMJms}oU?=VMOg?3IowHIP&h0=#6 zJ(OO_H92+xdH?2CsdoJggoZ&umUc1NJ{xSGR`PX!`87qFR+nGQpZUcwg^}7)4W9Av z8sSw%HP`y_GpBTGCaXrZsU@;&|Zy}3gYBWOoL@|XICc+d<_17(tG*v$ukN*4l>2zu*qLD_p7yP7B#U?*|8VQ8`Aq`@cA%Syh z&BZlmWP-2#RQ}x1M1OM8fg5L|UAmWdobtg`)QrCNtJP41H<&5Bzlh9gUh<91Nq8C6 zCOi4Yu9J5LlI~XdLghBqPmJ-jZraxNrWewz{DmcAFus{D1_lc@UYx=BZar{O!9!|p zck-0lj)JGQC8oB;3ltwco6ix*YSJ2yW8krhD?zi^m5*dTnf*?@fhdU`8OQstsEB;~ z$R}_$)Ee)^|)6HN2RwtG%nqp*aR%_qV-e3{-9d+Nl!Dr1dTPU(-P$edp z$P#?5BiAnUm<<~IE;F2hJyxICdJj1N-8Y>e6~hXa*Jh#iFrT&^z??F zZYWGPtXMVCH)S8XgRy4EBa^=DL&7__fp6N!o!*Cp=h*>?(Lci*V72Sos5Z(`)wWs# zX$U<=wZz+T#AMl4EwKsD7@5l4zdX~jwqg=ThqL=QP(u2|JCv9a^GG;DE~}ONo?ECn z<^Jir4Aq-hg0@gbc3*-Cy_`H+l-Ap_qWwdY-)!9K?s1i|+g)PG75VP$L)HyNe%6b8 ze=#RI4}fcf^zPRELiBdSv~0{{rT@G}ygGHg&#*_?H;Aq&Jgx-*n*xGLOpTBKK( zDfi6so&y_LG$`uF0jwXm?SokX%qX0QYPXxkgsM~7eL*^M*U!}vPpNyRKCYE+QU(+7 z*K7QHjScTv#aNV#!+IMB_HKQvT^Dm9`Z$Lg)@S$8t6gkPuW47i+XRJn1-0>WO}oI* z#?L@IO?#%T8POm|4`(~@Of7-TX`X1Ga%2(zo1dwfNcqe2-4Pwpixq%Ds99Q8KAVr4 zrGaubruL0c*ZYn-my6C^Bs#NlYO6y3xR z-RU{*xtt+kGd8}* z<}3KUXk^?<;k9hs%F){le(a_f?j@)&~@CLm!T0rkq$3?0{o4CJN5?^5#IA(-%Zn3<5tpL`W2r!aU<$uf$BeLi zA8ylDRSEZH14D$B?*y>BpF9R* zk7^fT_fMx9>^yKiAaHf}xW{O|fh&_Nf^>u{Y4 zi=~$O)9)KU6_au=0b|*R{Us~SX{cAh_^^UJSo?5-9aG8 z_ZO>pYAg~wCq6Rsh?Vhhz&o+YC>tZ8?V-j>Hql}>PP@MwuPziZhrlHfUPL4Zmc%Hn zJ!TkK2h`dda@!NRcCa|YeR^x=dlzJ{71FLCzV9G`Tza?Wv;;RH@@>Tu+0*QPpif#Q zaBDcVfd7HL32~|Uto=B!l}m~C4zH5%XGXyBTsz!BKf&JO+OE2VLJ1c7tm)IQ$Qe@R z3|zTk(UrU*)T)%b<;$i=+6=uKZ|?=rW#hxWKtz8a#VHc(Nk=8#uKrHGYy)|f#iCJ45saY)1`m+3G zQrAmm_saeup@jlNsv4u-qS0m-QcsFr=ErsAWs4p&A{+kfDCx}T3Q5QuG!0whDVFbL zc<4f_8M7pPmq~ll-q6Ke9Dof13T($Z%HZVEZFKd6ko~UCo>H#w+W>;lUXn;nq_;Hg z^NORjl!?0xwQ91NQl#0_W&b7Ic+B|*U6TxAMM>WBc7gOVch%;pDdHrZ>3th@X(h%p z*esN4h1Ju-W?`xEgppz@J zemP9%*JR)kJV8>GF0|wdNL>cIhU@0-rbx==Yn*>3AkJF&vWvW}3<0O>H2H}pwE)Pv zR^mDOAl_@9rS|V_Ii2_)lD|v&*IG+@e=x~mL*FwNN_z;Ul-}<%o?XH>U{Jw-hn-&l zB6*DQ3Gf2}fCb)dO?>WBcU^wwIA4lN5$^8QVZ}IsXM%3Ll z$Fu?_=Pr7T&qu;{jdIWO8VcaoAk+6e;fJ^R=aF+4jqtfIeAh^aeEy#Y@uacl6M?Or zaF5Tk>r16S0?zi?mI+%Pf7Qf8M_CWi z>r3}V%#n}T)+Y^n_4FYzhdah>)@d)P1#b!2Gy_yHzO1LWREm5*kHUA z*_{^YWh_2BiZjf8RoY2Wo@aNQf1nSln z@z>>GAQKJ^%NV#feQ+4`=3ya>F$^x8T|T^l@)<{Qp8PKyUe9;=a6i8?q4ZB>um_{^ z!jj}&dCF-7mx&WBw)Y^<{1?R7dVIFp>YVC?QNs$EteX|05w=y!)PWkVDxrbQ4*bbq z%{;sMpg^I?EV3nn#VYU3W&)wYczvQXYfkgc*U>N_%-ha&p>25fr;NBsA#k5I)SUGm zvZLP*(q~NH`97%cFkZGqsxLeUIoQ8Vw+$PYFnOKc4i0i>+BLi(a3#lnE8!ecv++zE zwAAy(s!U!^n)#Nxg@Llx0o(<+NH}eU0A#sR&Q44;(J>8;WxWYPWmsOOlncfe#Pqj%1%b$ zgFPNeLF>KW7r&>m8}s-28Q4Tv$a-%Jq+x>JvfaOhx9ZE|>`2w6FOR?DYlFVT<-wf6 zmB5|t5wBGqUn!(e*@p;#q*Q9^ zEVXKF_P#?k+3nxmtB1^Ew*a7l)SX{Hal}k=2 zob`j5S|ml*GE1?{BAbvX@>Uc;Ztz-aDY}U3@;AFQy+1rCzg>uIYa1WX_9YW+d_V)8 z(E&tXDnG12NV#)Q*9H(7LU{0Y(pxpr{GjdE)rrmi{DYaI6G4lYge`zn4S709pj12Y z$$HpS%xpsH?x;rF3#4Tty@}d{`6NodY9~LMwYp2q+b~RIDaPM-Wj16VRx``epRftE zX}o0fRoG-P>2@+%hL2Hb>2w6O|<4uUr=k*`5~D$ zdYvn|TI7av3Xte=TkLGc(k>>g-Q{6*{{xL3FWrq>UoC1MQEEkTmVe(5D9-X<_yNUP zu4$!qYL-u)=SvL`gckt#k8ZKa|AV9+0IlJ*-d?M4f{}8+eviN8)qztiVjKLP8H$4; z1q8o=Z6hSNb>bY!F+FifdbwY9W~mh(&HLMLj~br<8&4juwd+j&_0OVPMpH`I2T%T$-y@Mu%Dv{Z<#-y%6~+N?%H9c}$;HHh z?YRx0!I14SBBlUQuoH{5ro~>R0S<~R<3kj3OhGjMHh~iEZBcU25-UsL?PYvTB^0Jc&cQn{s`&3rFxOKRNLI1 zxm0r~;w{xtmg;I-s`ZP{Gx`!Yal3T@qQIiuv&zNSCA1{w3&>H!sbJjtgMZE$<_3O> z4q2(&);XS^9$|z400f+0_U2GG=w+m>StNE_d;TF24%NpY+}Hly$9=8@d`NRD&l$?3 zd~d{4ojv(I_Yx#HFM|QNU+>-Syjf}z#?*p7KXz!^obrqPnhNPz?GEwC$~}s)>YF{L zIGtX@q)9MKcJQp_xszuk=TSXgqr47+4ivlD+djZNBciq(CaP41=IIQreul}7Z%frM zovP`C#fn?s;Wg|XN~NwkvI^VNuW>tyjWdecz_8BXN+e!_(Yg{!B>@xf;&vp4 z=T)qZ|G>AyhdA&UH+P_+^xO1?aJHpHzqV#u^BShZC z5qp(VUwt_ij@PSMi|Z^;tzH`-Jd3L!Lvl1w*db(J@Wgtch&e4uz>Ju(1*ei&W?2gW zgmQ~8%zckx_t@<#NW`Y8$bPFGb+EMoim-jEHb_hv=FWoI+vbznWHS>v zMy3E*1sZq0oj2$Xg&FsM{RMu;IonPyWK=Pes|q=$OCaFLu<3-*cE)C3rR4{h5 zm0y!Vq8P|vK;-O80-Qp-gX`?z9$4AlPIRB5wKoj+Off*7Skx(B?VQiOe%;QZ8U!v8 zBc7OpV90d!VZcrLx|(sQ=`RRyIp28%)cP6Uzvg>{1T_-R{EC1P0`_}k*F-i44E&(M znn$3H$V9+65#v`S0s%O$dEB4b|2$grMh&U1{#Ww4gL|y0F9z#^ZcBgYh~& zZi_eQac8`l2S$)zjkof`cKbVV%)ZL<;43sJPI85#onPg1|M_)dC1g}C`={FUhn(_8 z<1WLu-$TlzZKcDv=Xqy1JXSw^`+!CDvqFS#-@-dbII{59Ud~%G>PnXklrFkRBw8C4 z9k=--d2!vU@ZdG@WA0ymf#R3xNGO`!)m!F?lRP>bcZ?b*ut|%iHv_#`K6I&5r+WdH zMA6canRRt#{eHbxdbVJuIh!DyP51ULr@e3pA0CRZR!~G0b?H=J4kTpCop44aQe}IA z*4pI}dsls#J4mSAY#b5ObV<&!iAMwvdLsFlJO|f|URPPU1gB3Gx+VAnA3@73y!H57 zf{!4qho{$tott->`uM~ym9wq15hVTO+`|&yXKSg8z*kY|D zOMgf8+)~;M6!M|{PI>v#V+>F^;dJDk`tzNM{Q~!U0e2D9ysHTY4iD5SSq(^Uq^y{8 z5juumMJEO~n+bvO1mONlDx&4QnKY!O)>_prMT|rNwbJ30s|&d%&L_|6mBmjvF*HeEJpiJ{2CuhGj`gvNXFpXy)LaZ-X1o;x%dt>t=1fYIvP#JRKf9gRplR+4QCUsQzb$bkSoP z)DysLua24oH#!%1#`^Y5U@<-nPIKDVuar~2M2U-`QOzTP1vl=BWr55gR4t0OfXX0?pjfc%AGBPg~2-@8dN;7+3XZ ziXR;-?4brH%GV`YBE2NX-GJ<)?9Qr&u+U*m%utadoG1L~$au%2IQ%5{l?0 zRBUb#27##2+@0}Sy>LujvzO31KJtONyfx@;&|*`od))B})1v|xqy5=pmp5CN)m^Vm z&R*ec%_#X*Y(B7{P}88-DjMk5;zPK`3puW~H6^tP9;uW>?xHZ-7s_C@(+@y+8% z0sv>3sB_f)+#EZll-0vRxO!}H#QVp2PxHRhunBC7ruvU;M(?j~JF0&7Z>xxGEHg#F z$n~f|xDPx$t>`EH!Dy-x={af}UtsA#ZQ}vzlU|(&`9(d5A)a~qP16hv5fEeW#KPxq zGxj|>nw|?;@GrYtG%|VK?~CtoZ}^qqjrJXAyNr7LDf#rnnvz1#8SKD!{p-x5&NZ8y z?VFP?W^Qy=r1R}NDvzS zc~!oCw@A`AAW3|(zQe_K9vvU zoW6WyQQuI6u@Ggj% zHWgMg&f7!Ix`;R0RgFE2FSkQcu#Nf@s7Q-(aTJU=6JTUj_LtlM@9EYY9SwvBpQ9C^ zYzMv;U{ez;O{n3*`!>O_j`GG;_D@aRlYOrIwOw-M8p{X%957Pg&B2<`%^rMi4%IBX zS<2Fkqo5O!QbV276$#PAdfpp&HgVtF2cTE6vh+!EfCtYqIlJabr6jbrY#>oS(ekeH#0>a$zE%ah1rWnDZw7X~itbktcr;KWi!s6^mlrpsoh$O*?+m0ef zEycKIALEw&qcE;;_l+nD^I11ZW-;YPAkO$}Yxp25Kik2UNO*Wc=+Xjp;&QiRxVv~( z-{1oRK~gS8X5z~NZ{<1{WnN6qLXb|7G#ny=_`hrm;(M?gfk6a4fiAnPnk{BI|Fb-m zq0%!^^5N%5;>X3v38qtzwcCWtKR#y%qDcdtn z7;iIOAY=eR)VcNR5nBIOic#1ERoS6$G{3bfIVUaE%4B;06N$&bH;+F&Sh`nqW}}^R zvX?4@b%E>#_*(QBxx#mjW*-Z5_TYD->~)suaCTp0+ST&-k_1JT+0tPxnCWj>fb5cf zYad)ggWw<^j%R>-2#2aw`d|)XkUXF^>YFycaN;&*2YRK-EKad3oy7T3V_P35WNjOE zy`QX&ZR>ZPlWgnX^)6?QB2H1neD-XLm_@{Z9HQ1+3)-p|J&o-IW6`b9YS60~Y?rvg|-ZS^7%oRDD@Sb}>kI+xk-O zMcncLK9RA7j%gE0pB9anQ0>A|RN7!^=Izzq0dX;9A}oIKsP+Za6&@O+y&7bV&!m8D z!%aan6QJ86FYAoTZlMc=%b)5VNem%|6)$|zBLKp5sG)Iayop^kecTyRtumqeC z479~K5CG|k;C?T!9uAHzsR?^gOt6o4R6)Hn{v8syU%qH+3b}E@`jIe&)bYXiVWRZM zR5FcJrYx?NgS2KpF&S>_4V9;7%Z?<|ZcWe-=Lh2liCyi4ZM3jhay>N ztA>aEjlvQBs2-HZwX_29UTS_7-z56mSf1jmgJSi^>oGsV4RqL@WxGM0jZ-Q2-`n5P z={KU8m7CzXnFH*2x zyWI=kn402h-Oa+tZ``4fChJy{sTrm??7RN!T2{Ky1G1K+&&Us}VCvehx_aEdr8vgh zug@>*Dl6+qtA;M*_XxlH-PNmB=f9Yse~vdsT>t1ESmF)v0zg=q3rt9Xz#E|M{BRX% zspKe~Ewpp4m3^m`U3KLr^4k-Im?PNMb-ULS!#cEqnr&fx@M~TVyn$f+@t+vVKDb^` z7WWzJ&fkA80N_+(UgIqr2oB%AllqdkY_j*wygQc%8gJ>hPx-b>-m=-=SM#2I@P0Du zU_(BG`uD-w_s=}oV3Q)c5L}J%9kf{If_3`u_8e-u-)3-W7M@3<2-G9tL2VOQBI@P8 z(@9FI-WGLM1z_3aw>etbwBH__V<-scwIx#~ib2Yb#nV%!NmB-f&YLnwP;gz`7q4wj za@&-N)?=zO^I6XUPiV|d4pBKW! zrNq=M)tLG7LR&OqGx>A+B73@CIHL^6qM^>R8`d=@KktGp*`2nE#!S zZ&ugAoR0}eq~?s7ub@T?>IP@Wx#-&s>#8`*!>~>U6euzf_yR& zZ2Ic)OquO>@>!dxtK19B5CRr9JOm*xYs_lyr$649)nrSrbUngQMU|DoB20>%fh zQpR-GeMD3IhD6WQH*M}7WzEZf(`LLM@(V(G+^ZRbZnxh?0zR&kcZwg6Sy_BpAwq0 z`+_Vt9EeAla{O*Em3!kie$p!-_7b{aJ-2)Apl>87XP>**6k@LCt0h>XwRL@;LW&#V z>veYC!sf(J|51I?G~eyfh59Ti)m*R2@6z&yA|Gwl!R~hp$KMk&S5+K=w~7I};@Pkk)+o7t{MA+fNQr8t8o@tp`dFZ;CuXg~8ylXmZH;EiI_- zYU-h2rU013iw7NM1MhYY-)oMWjDa*oh~jCnlp847jD6p(0-+iu2%#iT1!7wHq3%Ca ze)u>G|AId}UhN?^gQd9X1;}v;KM&d&BQGJm82K;p6eIsto?_(noqgDdZyJ3zk=s=F z>iqCQAd3;v6;N9M3tb4qz=ut1CpaN_diUy8UMgGkHuWF=jGSD&iB=yhK6}7}02L3h zc~7{``lJ$5Zj&ufk;3xTOe(B@h7Vih)KV1Cf0Tbflglg?tHPfhTg9sE{_-T6Ls}e2 z^|(P6Jl6P$C#>zZJp0PTk?~=D(mdt{x`@0(kDw>|(mH2fDA(*7ZYX>;>#M`QP`QDW zJTu(O*Z8pJyh_TqC!AEZvn7z+A}$7W!eH`CO&&FkvPw!09(ajIJlFb?u|jumpo!kf zT#_$BzD+aoMZA1)K$g#1C$Av%biJA-Kv*C|bJy^p!dHX7+`?CfzQib-&QPy95TpZO z>hNxG8Jr1lSeM;sc88o&2o-$3wDv3FONB87BoaL|{}E9g$ z3|5huEY;wYpHqHjZmCKB%ZIo}hSx<-WD>Oj zk&oG}U+1UtCxFS5y4?@qAyDv%>vKmXwVrpAIvG)aYWCtXrJ5PaeI*nwg z$EWcdp)#d*c81FIO5=<3PNiSR>+C|AzDcF0v3H_0B@zy_Z;M)ZtOrcapTPMeqcnZC z1ybts^zpp!u-9;pe>Ql=1F9n?V@p42a+23?{iz0E{;FbJu@ z0<}6k2>H-bu_6Yiw49$vJ7c`YZm8^p+bLL{_L{*F-v=aU^{h=fx)&=cq4k*puGmoC zw@6VC{_g4>l7V*%Wmd3$J^v&Ae@zME$z0x#@(+`><_P>67LjX?A(8&28la}g((`Bh zOEd2|A`TOw8#IfCo@#5aLM{36W}fZT@13F0+=C3vb5!#EExRa5R-WBtUaOX2<9VZB za%8zWZl$eI%znaex`hRl5=O&&4nZ}wRm3e>(0}5y#ceX9DEVHkWeG~K!ZG*p+Z`U7 z3v{5iH`E(x@GyYtWlq|o>U&hl_W)B{ke}th&x#a?&9EZnh=%U`m{9Z_7qIfpup*tL zhX25d)Ko^XB4vR4q#}7}rWNT}!HV=;L=);7E%mh_d(V{#DZ&{lh7qRELAwKy&kej1 zluM6dG(Gw|4(8Y8>T)T$RID0vt`EG8u1(L1!fIaBN2Q?Zp8WNZe2bRFAX8%wQv)Y? zn0=pOcd}s0=$U(`L2|f&IBad2<$qSbEioBlPKEM&g#Y-plI^vaGdm}ilYEIU!2W1> zP#3o{&X+MDYcAy{vRFva!jETr?b}_S2>T_70{dkS^=^_Euz&ju?C(@bm;G0;f3cc! zBJ6KbM8V8iZ8hw-__z)#J*Jskn{Q#uhe2(=MMkyPn-!JLvg0LeKE@BDbvAR?T1Jo; zdE!et?eTbZFPQbQcbfl`Z_Eus!}UF2=RDjkJ;#CwOY#LVA^C^2%i-(GK3l)XXW{Si zn0NdSp@9)kAStOUbvgvw24}xVJpF5j;9oXKVhXvT!F*vx#Ft#O)J_XWp79O|I0h>$ zmYzI>-3@}09-F(%_$8S|)G;?=?rsj>eAf$1BCLS9rD?V|i*U(#CEf>L2^Q_~Q4+Z7OK`U& z;+G3(iqJ@393 zHhw+(kc_3u((lbaw8389l{fP&kfWb(5aQpN?C{8w-0e7*;*G6eucZ9Ryw39TKEB5a z;LShOE%^H@^?J67yX!dFz~NsdYE+ypJw|%YmatZ2VtVfT#Okrvrytcg%<_(hptIhI z(h^u(XhpUA(b~e15+vAjQEhIynmxB%INYNgQr2_+Bheyx3JIA#9i+18TB2(SSY`?a zZ254uV(JA7?1Ip8dii6=#c)nk4qU|3>7jR&g|?C zPNtgau-uadBo;{Nll!Ge zL(>XaON5WEdn`u~PA^puB>5~I{&|4`0)qd49qwtJXR#aDpxp^e9%xsvS8KN5YWHdL z$oBU3#tXy46=mfo<1ep#d8E8eD98m6QpSwn-pIT%FAk(v>!{&?`9uprm)bm(g&X(MYu=bX z3L}aLLG71B4X%PsCX<7$B@da#$SGcfd&i;zrWKsxRewfQy!1*JqgOtx9WNA7sXV)8ddyO)SxV__ucv9fDnf08l^Jh0-9#0!gAf&Qi}$?!vpiMAeLO)J$tX;w|Mit7 z)6Z?Mhv6s@>#x4ODAu3pA6>L;+BfJNfy(HBo@4lhYmZ+x%OujZ=fo7pXb=WG(;Fr$u)m3Cc!%$&#JoABY@5;AY`q$M`A&)H=4Ghipl(Njcprx5Q9ovy@LsFF65f2t<@7H zG&mJAB7ik(_lvfE%(8c>rpm6tYuY+T^=f zsz}>%rzEF?aW$Jhr&(K<3CZ2}KJC-K@Sv2r)C8xk9_~x0XFR$H1X6$8z|T51eCGPC zrGb~no!M|>m(~%H5?|&EAqpm}@8tZgQnkQI0BClQ{DRBSPB7{D5lWdpCD!KNC@O2# z^CQL>VX)2`Sxn;{+PN#D8a2>XFq*daSsm*=) zJw9oy%kC3V++;#61c4AndTpXW7A?N9x!~7!j`)GwNjpy@A3?ZJOhG^bqXz{&Og<~) z1b*O}P9z}=-+V8l~z;i$7^d)5S`J8U_fn7-mhQf%iix ze{h4VF{C@uWE1jvJn2rKC*7pQFh$fLQB&I*-0X$0rk?u*EtQZoLu3zedEJ2u2<{jt zpVlgMAQjX_ zkP1@#9zkmQQ?&3n0jjWK8CW59l3CFO9pRtAlzBkkz&CE*_{J7mGKck|K795<*!qm{ z6nx-;Mw(F#?g+OxPKwqYk8~naX^|-nvxwN+>DDGIVeJPzj?i;3VcXY}a#~A-V8+>_ zFU)I!KBHvG7mLrAc!)&n*^|FZ>&N&W?NAu4GN-Ze5@@Wh-s33ab%k*53DS^&&{i#$Y*BuIDFI9P(vuiVU`M4VV25s6=q3r6{aL5uELa` z5qxJ?VRFVZ0s(y60uf^Oaw;5nNNl)P?q8l|Uf^pKun3H}m*^m@g|eSBcv;CYl7fpo6Uf4$5r^Y#c&QETQM>x66~ z_It0)V&9)wvoNs%7j-xrQp14+lM zw#a4#AG~?7H1hspi!D(v(Y@J+gEUVH%>SS+4Bi1YV}W>K;{*58XE_zq=wo={^$|q? zjabV422vdWrA^M2WTE-%Q>6J0g{UuR*%UrJuZgH}hP}h9?86?jd>$ztwB!YT`D!zE z2#pV00-`1c`SID~%*O1)YD!u94?uY@>kL+S_(2+MQTs{7gc#mm2sq>i6lbC92e_7k zS$K?q0^2;fpwKe(TM;nRO#^45LK1Hy8+5FtB=J<2h zTXGa|OQC&YF%{s?V6^xB=G;e$$@di?c4l#BF-Wb`U@A1Qt{|dZ?SAG8-ElKEgMQ_ih4}~iX$?w=65FhD|NaQd!#(b; zb~|g;bidI`z!#X23HbuktX&Ho5`dvY@&$HoR&?l90>*5=-|hZ44n(3 zk3D^4R)CeJ0F`!Pfuu+ODYGD&G>MQePtZ(ExnT^ZyWNFeUFZY^|M%9V3Xw0UN-$+a zyB!$1$mu})AWzJ%SawZ+!4B`G3TSgWhAzYPc!}{HZw8-zQ74tLX>UKLle?gpz{>9_ zCd9@RDpiDn_M&3E0#P=I70U2S6&<4$3+8MqEv=}MpxQiD*FveJrJ1E_3o*2hB36Og z9sRGXB*eym&yK=kE*`=6?_FfVg53=JymE=$HS<}bIoTfLjY;$sO&<>j`MQAr<*b1N zZOydUlynJM8)Fu2m~pQ4W4N?|!vwP-VuHiq&{OG?z{c45)~4z6En@bP5@jXU8J%%? z@?)K9;RlEuO(_b)Y(WVT^!)@|C<91}-@Z64f%G!FNFv!U`oKos zK8uGLs%P6IgDE;e2|K-G9M3DiVD2k9i7D~D@;B>M1H=*p+}oPPfz<5M#(PJR{g8cZ z6rCRpp&TYbp*;DgCQ+R!t>iAwtqY8|2WguY=xMcJIiuCVv9IO}S6-?U`~iK!ZTosT z=jbz5Oe|B#X`SF3DswAv1SWwQdw^WKHjzbpDfHhv7}xgLs@yf~ojtevRVG2xLcKDkirW=tp%t1b@_G=ahO$+c0ggWmT&fG zc{MX8*(m00Nz9q#$K%BE!y;-NKfT_Dy5v$Mh{2pWztoCcNfricX+U5E@r>hb6??&` z4A&~-)Wz;D=%EpFetH$Dz)P0<3rBx}aiB$j#TpF&d{)CkgzZ#g1*%|)+ZNhy`EV=m z;8n-M;bz{-hdcPCo(3@oaQ|LqzorFNFncj=tEQbcd-Vam#OkK%h}hEsGu2K_O$O*~tfkOfaNTB_G&Ijbjgb$9*&0f)_K5RN2E$f1vT| z05-i>hX(%8`Bn1q8)qy1ZIM^Fdzq_(WG4qvh&*%1MCD9|6HZ;(CkF}b`w2b(w|(~pPqH4tgpL!7EMuo zBaSjI-|Vd3%$NqGw-@-JY1-A~7Y8dJMFB#;ZdJJ*l8YyA&puk0yrF-~V~mrH#3#mh zQ;B|swtjQ-CC2gTv$Mx4IUHSq4MhL`yEz=){}%-%E$B5hj}7@VC71npVq~a-}Q5-(!TALCJl^yOIgDS z{QS=h|Jo4?|K)Mvea{epAmqZmDge#7z9$HHeB$S%hVJ_fiP&`rtN`YEa*v9#hAD-% z>xu!`kuUqL{K8?YY@Y;^6enFH=>U$Z4)#NlPpgqcP7v`cA|6o$E&(If%Hsnc65AP0 zaKpjO#NSfY;lzu_h4+0~?IZAKC2;BcR|5WpfH74ChV(s2z>G#Qu4?19Ygr)nLt~hE z)o83<6^=so*NmD^bK}k;Id_Fk+Flc35d-`E=_T_&ea@; zs{)VS7edVv6D>mns?!Y_H{B`*yJJ#lwY+f{iIy#qV{h_mT(?|a1Z~mrY zYgInbJbF053_jU+7$nAh|6~PnwaYi7#`B(y<(+xB|I0U}a+mkJvomi_;V$TlAJD{) zc;ytZKk1elcB~j{hEWSn|`;tf!CEUZr#?-DKe(JLG<(={(3}%W&qakQ!w=r z&7fa|scvC7F|@1thl0g1y{BXuBgaEtS&^?D_8@SVC?4To@K97bm5~pLTV}L>LN9CA zil~E5BJ7Xz#cwksdf`*%nU==(O4wDV+0slV`)Zc! z7wD1PMrlUeq;A3^+^nbAgc~Z+(^AA?KSEFAAO20D9^Jp-W<4$RDTN9qDnw5U{U7j8 za_$qDNa5qc#-}Gcu!9Sp`@fHRfX6xf!%zvxvyb+7yYH)jNje4@8=A^g;=t_kf~{o-|gpiRB_dS^=>`uzA8h zS+*`bY;T7JFME3`I}*7x^VnsX(VHH<7YtvKxsPFmP72h#u`yYYPzcW$Pwh%0hN@$* zpqt{M>?8fF-9IR&2W+Qsxi;G0>8|9HnUFkG%A)-!U5_{HGw4^(YUhZ1GB4oxKYor% zz55TGlas;Bnb}7J*^xl@SAng+X;1!k%Xi<2J7YXsi%L>%R zL*s*=zXPE0R%WYVfxZ5&7{j2`-k)sWwB=nr?v?XJjkVB*fYukeSQEH$>3L88Drep1 z?nOs&2BZ~D!#*Z^ao&Y`qub}ULHd#}Z+UU@-8IkTL)%853sgRy53FR_MscwPuHv-M z;hzssTK0Ipej6{~R^?Goh`8(((2arxsQ?tihvBkU#8TSf=z`W)fbD{1uf&uj?ndaN zr2|&2uOz&{-@fbz0;twk&i4YJF9ZUm)>mr1z^4eLcM7>+s=a@$u4gY<|7V4VyMWhJ zd?>xQLQUJV8|X2?_D|?a;p{+v`PQob;o=mp`drBrce*z_%lpZ+IHnxg*ULFMC6}!t zm(K8C6zPhP=E4KpW|Q*3Ct?tcXVd zX7(+$;+|qFI!aqX{lh{n{2K79hO8Sp>iIFAoL#(sgmv;nwUarewebWEQxr0mcZ%9^ z;;32o(un1m{N(%k|Lq{P(gkXUZL^h+M&#yv|eq ze?01a3#onnEj~0d@NV{S1GBQnxYyO3h28XPaf8C`(;q~#r_~?wMJq&|U=W9To*5-IJkgSm1bbZm{5n1Lmh`XiZ?0e5rU6&NM6ad#Kekbrdk>4r&g8ZaO zEZw^b<0H4M#o4zn@rB^$PV^PTi|zY9m&r6X16VnOLfd5R8-&`;`pkGDXK5X-ha~fW z4@1BuTpJ7A2Eat8s~|oW?Z(q=e?{-vbnBh$4kpc`SqmR5+T|4eAD>c$C|qrQ6yk2S z_bW4UN~b89ql-LGT<_w%65*vH*%LR&7t)kt(rB2Vs;|kqDi~fGWR<_BJUq2L#=%ev z`x={DIKnWTx}oC1auTJks}On0HZ*U~ulW`kly)TsT&o7GnoxLZ$lLQHf~}g;@YGUo z&p%6&4~y4yWI{jt=8h2v%lWCP(S;~`?o>^bhwH%YTwhM`!kj|Tg+eeSVCGrEfAdoO zjMK5Kny57=%0#Q7WYX5~WhL{y-vnAKDU?OP*X2nj4UKl=z-L6$VDG~Qh?gd!&(NlK zw~z2m14JLcPx1RKzj^$m2XuVM7BBn8ub^yT4cP8#V2rGp20{CFj__qxNA1Jv>%?iL z=(>!KQcm0p_s2ffCR$GB9635RRTnkqaLxEK49VWmA#^~7TlP}Vi_Y&bPZvd+o;QCJ z2bT@nC!zvP%-iysjIwr}g1~imGB^RIcJ~OG)-Gn@K5ED7Rk;vTqpWp8#nA$9_gm(5 z8LzgyGIQ|u+|HZK6j(+73m%yapcRlPbhEgq7kXL3JYWxj%NXsXDnf@{&Rl!>@0lC0 zRa4LNmz{jC@Wa&FirOjHFvK47PU>H%mlUWmzS7U@9;tI%5E`NC8>PTT>3C zv4bEj5RmF(0@2K60Mxuf;i+4DU>SSSn(beq+bEOr_DmqxWcI1_JO)hz?VX~x^2{0} zWG|sJyOY}%egAmK#NWSPpK?Z)Pt6gqb!^lvIo-J^DOVR4ZD`deQqMy|0=eW^@ zSZ!PDZ@pZx>uq(692fppOc8Q>0J^%YD)E-4UM=-irLKXRa;}w>)x%eby-qY^X@p5y2nG zp1CMa2y)~gZ!049rSI!mV{=0>5~J8Ln{-TQbF)*=C3>VA%T&+{6S-C_#)f)Y+0~>t z5Or5WL8xeOgb$n_JsJ5hoLf;zUUAF`DT->vff$0~T_7{_O=w}K;(opa=Sbs*8SbuG&y^b?)TMC>euJ#?ws3;=znTt&S1Kz=!M^LghdR39rx+qhOnF{>rXz zmWRu?ChPem5m!p1&6W2i**Gg}bKm%~q4!%pziWiA4LNZ}{|MjAGzXsZeF9IB7>R?m zgYu%9n=sk;Akv~0yEOX`Z-(X#+wbO$yVsEwyV$s($ADWWBqsaf%d;IEh-g;^2Rpc8 zu!F1Ze}8MRgBKsagXv1W1=NQ(0%{hc6}2>e3c()sQ|`S3g>Mx4T!}hwx%IHj86uf? z+u#2?X=`oYZavAv)AAb`!PfF+;lFrieOQ!9d^n=xB&2M*PHreDSd^^82->!=Z}Rf! z>XPU!xfy3gzU2ntOqND0r(al~Q8Ve^rd(adOxog@Nd*sbu6ljSa}5RSx#}+NeO=LL z*C|MzfzzDKA(J_KkUAu3?IY*dWE-%|Pj)V2;@CHzKj~UjNXj};UBYQkbckCz1eL&@ z>hr#>$mp(DPlm18GMV33~avu+F<=7&> zomB){Sec(g>_vHPlkwIf^E;Unx7h1-gPBnE=d4*lOdOp2Vy(gS*7`l%o|5%Z`>spj z#Pv~djk7c}Q^r?(bc?-@ZKMnzF}LL73v>;~*F*C@F}{kJ-RDy?JQ?nerqxv!<)vD5 ztvWnoJFAghPjA>rWzsb1FP3s$Vy<0Da}DRPS?$e?U!x2T>?W}WVSzWdUSQJq#?7kEyxVKd#TdbZ0}q!ma8L}-4X^jc(PTvfpDYD z`PA~}6WBKR74SZa-#C7Pf7qBSv9`P*{#Ce^@T+?G)hk3kkfE3>!y82+p0>4`Q|+0N z9))Wq*2W4r)pjkG%}Hiw$!BHdVX=B!{b`1wmXprzh5O^@KB3M{{s9$Gk`urxRP3DcEVO z2l{dwJDsDid?aAZbx)zHv-!<)emC$e=O?hqKZCDeK}>A@4-|l;D<|i0M7*v~>Ur>~ zuazWhS89bTd^i>qD|d<5H=7zGRsokVjsz9i==iG(k?Mv)v2d?SNo9-G7V3Gv^X$a? zVsv_+JB~R3yT$fA?`RcfYuE)hs15ggGr*D#W$+ddy{p>QjV_mr>$B27nMzG zsI@hUmnQ&LXEP;74vdj+ z89(cc891N?l@2W^L_r}bXo*wMQl7~=muMh}E6s}8UXUS5t`@-r23BZb(WNBTyeOtz ziWxo6z;iamWHYhZRf=N`y-UKF%xE!}99v8!#Z*c$+geRAzr*4#yJSaxh7GfIuFvo) zeI@;q4NKQ~q~QE0C2jqq{0kcz7Ou9wkCol|3ecaLM1-#!=O{pf#W~{zL*96-&*BN- z;e5PTC7nkJ-t51(rgO=JDEvB62yKj1kL_5};5`8_Frd!hxcMUGPS`Z@Ace+{DW|2)6 z9~YK`0x=-RD<_HNz&Q3W$Kk*&5^prE@ZB!ZgMtHuturlDQ_U?->-G@7#X;HKf-=$$ zP#o$sf0yVy>M&`(0vJrMgGBG=vk7utAhri-!gzMe^Z7F23uRWmj~Crlz*GDKB{5C~ zrBCrL<%nHKR$9kjp%J{`+o`r4i5V|tz=tB<(#IvAMmOkvl&yQPX*j2dkwS;BS@Wla zYHz7{=Lk@9Lo2|kG!2NoH+~BgcuQqbcqjRb#U=t_*sScnN@DeG)vsmJTD~jDsG%1w zlN(s+g_TV_@OGtCV@g>VSUFWwRS=}^l9Ec!U0o)=p9D!E1O;+uXf)e%%+_Z$X&`8= zBS5i}CJNuh%n0yeI#NQWh~AYk^--2u-M9wYSTCeA|Mz7 z5fBcCh=M*2qQ!X-l^+Kp!BVaE&TyDwz=SK5gCwev)n~ybFv&%x(vAg!Ge~m?jtoRq zilZgkv-=fn2S@o3{WGfoLvX~0LUUX!Ei`m1w9R34QM0ARbg}aR6>4Wm_h@_gs#~Xw@=GdRI+}{>$hr_xfhezmNoT)g;D?j7Z3bKRVKV${Y;M7+0ZMajSr{4ibxY zLaX=2(XbQ)9+YGH#o&(NBz;8RsnZ2CML!YJ2CB5LvIA9-Q%9iFODiv?oxxJ03Gnj*cV&>&4d88n~?n)MBgq$r+X#kqMW zp(4yTya88tHJ?P5OTK5 z`D)cjNOEv|tX$zO-L0%^9;N9pU>Gw-1b+3hA8T%~f`^dNzsvBEEbBPWG-KR=j7*m8 zQD2YKf-Laa-ZhO7`W4EdKMk*xmYVS=VG6DedD<8m0`pf%s6*uy-~^qm`v*bZPtZ9I z$Vv$QS5$n>8wT>Hb0BY5kUyWlZq8;3d9KcK~2{&;Psu(?N&##{0=jFOK$(KZ7-sKQ5#Pv?u#kkAYmAFdEtB z_HOvP)-%4%olB`EOL7>VDR~hK)F`7I(XUvWw;h#;Z_7uVWg=L*Qa~0( z&G>z*s;7D#eBLa`scn7UUT-PIw?eNAggrgNb1wi+(EG7&>{Tsmo4t0nPD@k=D?I{W zs7Hup&|#!UD`MHVM3lFAF9=$QqojE_7+<)1r9;5wguz; zN-=~x^dt#+MNpO^13=gcvam)eSZlok?IA}svT%7$KGkfur_TCcNHv3~ff$58C~X+J zcqSi1^X96u1I8AJ6TOjZH_9$lQuW%?XF81!@;NwU{;cS3rQAR8hKn@#WJiMk6;g@N zV6(u5k7ddIlkwGKhKy{v+`006!-yv4*o%miZOVw8Furp`$E3>E5=5hw~k*s=azkoHJ%Y0g_%APIQYOSZOK+he# zB;G8vI^5P{i8n^D*~yo3-Nt%YQ5s_+7oYxf_MPnno3rl$t1oe=kgNMrfr{RjT}3aE z&z}nTihB8yL@#M}-Ni(kixP)M(D}t%(elYubcmvTa?fqiHkw+}`zKe?VJ%wxA0Nk1 zE_%BcA{s+P!tq`U;5C66MTkC{)5wCR#_4Rz`jC5nPA)7U~@>dAFGP zh1V&2nmY>)8QE3XE`-`TOG5LjQLpH!;z<`+BpLE*t0Qe|wMMnE&_1NbOSK%Q$_BRx z$}HuXC!RPy+3e+tpG5tPLq^C}Jh6?X*|bmiITYNh6m2~Hh434UFlcZ>OnHsg>2i0w zAsJOiaI`GIhU3b)41V+5*m$1AG$RYYcutmbIqy~6mpAMJr(Y2Ua@4DKPZ zzeHN>Vh#44hf=gL##{ga7<+>T0{=xE1%ztWyQn3*=J71w$X#_;gK99foi z&5=;SanV-ZZq4<{tCl_Vbuw%zGpJ-m3Ym;aYD(e`SXq|8P>ya7*@IuaqR= zqVkz=Y9d_flW-Fu8U@y#@K>tyopQHt4Ve+V}D3g@I`~weadTb@>PaWGHF-O6W;C# z@=>?qAz4C7Y`x&h$rWo(su6eYhgZIphXUE5GMoc^Tz`Bgw{SCL@mjkD9`+x4d$#cgr0Va{Y^Nn$ddS=JZ&HfsiQD8=cL`Nwk^Wcj66!#VG59gZ zgG8(jYo-XfhHyo4b_kU_NQ|+AYQ;mczGM)%@)IIZSSLkh9j$cp6yI56@j5XMGvn!{ z!ab{H%w-Ma>%@edi#g`p;VhSCpt1_1+p+bISI4sq!+xb5dDL+!i(N#)t`J;86)7`! zrpEp?I+|scPmDMw^{*Kzw`m6Zlq}>WTaoj0+M}C9DfAp?U0|bQqV@F=;0d87CTW!ktsUmWYhJ~p|!4bq7>NKc07;;^;w)Wel4Nw#Q#^0uc4?wV!KtPWK)GTQmyVNF;1|Q}lN@KSVG~J0)}D3W(!`}9iQ6V| zA$xu{jym1A4Mw@c)V}|7l0kg(J-8;W{iD#4o26@#B*lxVokQX>=?&|sPX47gbek96 zHs;hmu$O#ehFTLSb^TOMAoHzAE$hC+2g=r8+5ts&@EDdV0$C?KHNO!;B zqpdB9pDZnEu@7CWElTDht-5yE2mSlRk)!dmp;mf}{g5igR4j=Crke#nKS~%5C#JS% zI!dBH#ggl+l;4`?Cy@A}I1&6T7r8$_GE;|tbGz2zOZlrU*SFeHS1r%CX7EUPHd=LS zi*`wE{k$1a1de_;Dc6~l5gv(cMH(4AZkAG$CGno8qk?>EO}+*mnyKQrnW{`C$Kxi4 zU!@oPHw=1DGxT!jWbOC1H1x+pLBWA9uw9_V>RihV=Cq|DoZvQ@6pJ)TNRpgN5^H9A z;@zY1fT67DF=^g;gL2<3>R5gYo0#bWgLS#}PI7Md*CgI`bzGkK)y+yN@fw!0ZxT+D zawS>K?oP|Qgvp)&4KOdAHw6j6-J?4#FX?X0&l`yt)7WBv zN8N1Q(-J#eEaJESdA*jMx=kwnHSiQ9!Uge9FCAeQ^$IFD-a>s$M)6b^6WMfbTukbN zi9U7|lwJ|vom{?lp*Tu0EET`Zctm!Iz|zs^VGO=?NXu*M6K6VqB2%<_?9vJL3nrAj z_klx}0LA^MZn1H-a2Y#52yn>7;S zqDH1Vqb>GGQ&YB^ukg^zC)3N1X@=;K46|G8UwjtyeNOin?OW=}JT04vJaXJ1!}4VI z?fjEwyJ$$ZsE&ww_la~WIoM0)O0JRJIA^qECdd{K@-5PQ?*;{U*3^D~!eo*1s~C_nX+Jc}+jF_-!m{TpZT#z< zW@kHD>>0A-C^Z%7oOQ( zQS4>mis)TP9$dBaB@c=hl4p+nD^Mfa2WggwJ>yc#(=!+BG1uH~xq7;JO&pY_oNi|H zY`Q3LLuETkFg3 zA30|>zkmM1IHAssPPxL1*+5yedg9UvqVepJ=n3{!CR%vk4I*Em&R5YQ?~4g7(P9fIWmS zk;FeUhOi7Mf$22-%H~&+!<~5lIjaDYN#C7l?hKT(LK?O6Y00 z<_BBs5Bp^Jxe`Z<+Z;8IuY84Ao35jk6Caxa4JR z>2UU>`ixaQC~_5F)q^+6i2UV9QM%>JNZt{OwGva7nn&mg4`irk(NLc(ov0Z_!uEp! zCrr-P({#pers;(JYSDkyHoSvnuY&|0G{#qDmA7@G$xQ`5$CzCvFOLl^nB_hEmaigpP$U8nF8=NCBiHFl0 z5*=yviU|_6vLH4N;=1ei+6W2bq|=hb)~KAn?Uz43`Qzav?#u6DuEYVQDAm-%a*P^2 z6~W~Mj3Gd|k%m;{LWH2Cvnq2TLP+e-m&$U`8GUzf`~X>@lE4H5*|7sh+GFMQkRyL% z?h3u}-vj?jMByW$H_nMkhvns47A1deF%IICE zXC!)EiEXaL>zx17ws4W$fK~y|TmBj0jFocaT+!0P7D%}s62EpDl-*SijbA%0C~pz_ zZyw8JBoQpML?|A$JDU!jIh&A9w;z2#UD>4*Ip5|t@LKq6+d?X=(vza!FEv%>dQ|!+ zQI(0)Nv=N5{nBkI_2+!3i`%3!=Lb!Cp83A7=bg?r%#s;hL7vjp`{yDnGtIh!lX5m6 zJ_=v-vvij7_gb!TWiD^BcAU?u9p@^m^}4L1eEF>rWv+3&$i-P@#PI4#?362D{1hI3 zvHjkmNB1aP&SxFod(@iFEM#@c)eo@ZzaOxZJ4BmhRA2A1UK|)<9ktS_$}`LQ z_8v_fDeQXu*bJ??45RBffFkbm)*b>6*c?|&fyoNVA{AiSD9@(t`jWNKSM*|P${Bkz z))hW09e%fcL|Ly~E$5_GaDw)G+Z}K^UDiv0bC`pKrc5f^xi=%=Y`3QS!biw?gc?K1 zDs8g7a@VfhQvVU{1uho#4M>}_6?|NK^D{(q8IEc1U|SvNr)1NvJ$`!yL3wQkLu0Zz z{#)%8`r|}ct^(o&jxmD=aAbK7`jK+1N?{yqLTV4qki9l|5WvP7c&l^UxBlR$EMf_- za>+JxR3iq8>>^?|oZMFO~tDw z>Q><*Mv=$aXH3ZhFzcku5tuL++M(YmXOg4sP;J<~TgOrfwN$ZYs)r-=`VVhHJA#d*q^pyY#3YJB2()&Q324FV&k%2xaJ!(MX$a19C6>7$LQ7u z1hrYEc2h1`xdMMeG92b=qL4lJmxCLT5Jb+Qzd)4eEfK&p83U9XRYz%wu=~8zg2hnj zW(uao zcg73CZS{553vAj8iQ5kV`X?_e5aH8xvh-nix^!4=*O=MOEps9VjtE_oF6^WkM=%6Z z9ceo7f{7x#TeFWR3bF|iJtcBL98wSjlXiutx`;0I-qs6)JXKP9Z`&H~_4dFHwMpQ) z-DRZ*&Wp?;`wUy|5fJ)orEOxoX|+#OH-nP!bWtn(9fj55oz`QZ8|o_!zuR#NiRMyk z)$Eo?Q={E2HMh$(fF;&+cj^lFWSZ6GvUUz!K&u-fOe`pCPrpt*6IRi&ilTY0=~!D0kZNQ;N*Cqg*Po zFC&B$Qit4IT+;bbEvc9d?i=l23Wl;RDWDEP)XstPrPLYnv*m{3p>_NTxTFHbRY`}o z;&JaRgR3_>bGT}rEx2lx8rT{rIgZBUoYA@3iF4(x(Vk2+QPAsL$S4B(0;CR3PwezT zr~x6}@YSW>O*Py~A>wDqAl8kc!fQ)f!f$ihKq-(#_v4ZkE%=wbwLlukwUy=J`il7Y z7W@BdSEJYBY9SbIDYxqN-c3ZsZ-J(u>|rd2*t>xTb*-FRvdEOitksppAy# zKz}J2IKS*NxoIgB3t8?mT3Pmpwe#=+&Nz6ObfL|2BD0(ADM7Yb0!7h23Z#lfE-90z z2YdyrHC&ew-bqFEp3WK8JXd%i_Id6<4j-U`5d&q`i44wQ*|V`T%eIvrIQ*KH-DgVv z!*RKc$z3) z$CP;9kP<1+omlHD?2`S&Rs#xlE3n3x#69ormNUYdS|+_V`D&N<=5>6a->!A1{IBs^ zU=`saxR+*4zD`cb_s6aneD54-?K%7sj24HU*xAx!GfO(p7sSq#sZPgPEwlNU9pT=n zuf3Pa40u~ID_ohCE(utwH$s+JC!}0jPf`DLfGi1L?P|Z#nlEtmEJZFYT4;?FS2s+P z+TVCjS}R>vtE)x5?3ftL>KtYDCmzpO+W^m}pm1ZnE8JYtIZ?X0E!Z)xWlp0|$vb+& zNr^R*)sa4hB2CN@`Qi7w zikW_MxO=Yt^8^pY;ksb^$Tp2)1P3|Wo%?BN`3j)W+S(S)mm}kXsmq9w%e9)ba7c_) zoBOBq&`_D!T6KJVs*yWr8N7b$TCPc`vSwALDt{)u$0;k*)*lUB`uDC?_$s|EL1jB} z07VB{JnXEMNXnxfQTAx>??=qetf_3Yp9{#e!ZYwGr-<|Oix__5iZ8jSQYC$IO@*qz zs8hdvLe(j=;)ohN*dFW+jA>V@rYa3u0Vyzl_f9ef`+?+1gxVZ!gHj`IgKS*SDCKULK7KZ=k%24i^-W4>)-wR(4`|* z1yZg@C3RVE@BZUzhRmGRLOjN43bd18kt{9SrU9?cfLCY0t5fheF+_??o1 z9Ag_3X?K&XFIx3SnAn$Ci$3_JG~c>bcwY%WAF|VjG7ykk62dRUsyjzR-4AC7E>YS( z9oi4Km2{qKUF8Zd4|be6r?E+B_*4$<8}QDN0cMDLG$Rg@wnmwXTuwzF{IwO`gZIvm zif%WfDv|bO*h22@Vcj*eaJ~#OL6qsHtp9V!Sz+$*NcU(z9n(qN8J>8Tek$7aU+kun zptvvZF%&05T-JS4^`TGRRe~Ckc2nt-NlzdXe3K(?@6DoOs^0IKbJU zJV-SA60I0v;|B=pN6^mm3j8M2JN_JAZ2))(+7eQ70GKM3CwfJr^)ZP3VUVz2DXGm{BLuRbd4FJ zHKj6A9eX7575uuBHKF8eoNi-RVuE2x*Hz=kE4#C`(V7=vLMw-KUe;_~=WnsDmpe@K zybUXIB>Z$ovGr#1I=>b9Ap8vP?DlG|#_jUl+Uf1tb^Yi?=1vtZ zLD-6)LA;jbXIBWbpa7RUUuXIGo|UlEuc;}W|vdEZijt8kI`o6JtKX}FhV z>)9Vs#;wE3kniDTNEpYq@i!kGA}>-dommHvzyW*rcqJ)#y*i5e`kdGjdmEGt{0PiH zWpmhf=E9zU1Ot{UgyO4|<8tP@S-zL8R4Lw?h_Ar;)=ajJpcr0HAFLkNY>zi)c5Ba~ zfeF@ZPti7%=CV#t@_P580kqTPNHTfgY{^HIvqAM3NU63YDf1Rza;gxmKRMOMEp2Eh z-2OJzo!TIm70!v+-Rc2|k7E`P=b1R@5e=rq>O*n(wRCgJvu?|*gWG2o?K=E>Yg?~9 zB5`DNY;5Aln3x*_mv`!pf#NOfFenJy@ESjcP~Hnp+jaQavOVws;RPkJHB3r^sVO}Y zRrH~??7jl)OeSPy)7+@6(_LlLWP#xvrp{$W@qqQ{mY@9i$LEzjf+kD>d*72<&oui{ zpr{jRRZuBLix1qLyiiK7OQc;K*ZqBIv%*a)aHaD0OhM|HX^))vp}Lr8L`-K~;W`%% z^!4s=ojcCACtT;@h~0W0#t*bsu!+!Qjkjb>mInNMJ%@18eh2irlCpYq!#pIeKloF3 zK|$7J%$1LPSzHmwqsjVd=vO>tQYII)ZIO5JVB=sljJGGA>6Gj3`J>EpyF=Sappi}X z+h^n=`-x=ns~o@CG1hc!{PEM7Vu?Dr(AuQ+VQMZqNp1)fP;gueREVreeKWKb^wS?f zB!OIp=1;tTR%h*c%sZJvZ=#(@>ya&@y!8HlWLYnV=&rsRLw4-S+0Jq-4s9;U4hNiL zJ;H{dvPV*$uS-Fbp649yoA*<~q}Ng_U9`~W?AJ)ueUNl*P8R?)x(yfjl=_m;d3|Nk z4)~rB2d5mLWR(tF3MK!hUn%*(%g~(_@eosNMco4zlto-tDQN@rO0~NT5--~UaU4;_ zKOhsO7Q698reo-MMK(m^pOzFef)8myy;3n8+a(wJ$PquCwWXNoo~{d6wWTGA9f4#W zsz8M#bTl(Z^GNKRA}t9oD)(-x1TU0Wn&>Dm$l8j$dU7q*1+Djc|LmIdPTBiRwoAZS zYRUsn`vsU(eI5>`gM*R2{|3*>riS_Xt#ia z@dmjZ?q!w2IO9P{*3S8It>xYH(4vKqY=lh%4$0>6r1b~)U~Cv1PrLbIXzb(BXniO2 z3Qu7>GPdMh#?^kFJwsS_hFIp$jGa)#u97{EzF$-&wIDggqdhaJ#ZJlb%ZCW4jM#5zI)9qxfuo%?`**yyfdQKS z=D5M8Zyk6!hhf=sXqaINlgKQ05yzXl!jHu3zCgF1x#~hQB`nQO3B|1v##0h4pno|q zeJ{n*vsiA#JS-A*KBL1Nr}@VA4>P8e(s>K5m|0lP3q8yv$|*xmhGZ znRZ*{iH2lh{Dg&Rxoo(gVE(*5ox3!HPfuzkh8*vvTL}+e)Pfaf#=S1fe=k~a*;J7- zdV@90@>Hv^Y()ITvWHd396pc}FRUjO)>%{TrT@#OOOAS1*>sUhr(2`Srn526dfdpR zM~7z8p~QwwxKhzOK;lbINrW%*-h4d>T-25<|A&RZiJFD&!1>5;pppM0xi{S<`?0Q3 z1wv~5N@gU=R-<(WG~y8}9o)Jw*3g33wBBb)s`7y{q?Srg@xG3KN~GsV#F-;KA5-b+ z&u`wCWaVb-CC)C5|8h~Xe6w6jl`py!EQQCAM6;)igVSbt%4WIHG)5hMc9GTF#ywW? z;ziarw2j_L+uGk|n3UDK55L-I?X%vq>U;oo_&|7Hd`$SgxO+ZAsjV;kUf0-mS9ss5 zQS%p}P_|*qQe{Z%#+t83$g-L;=`}`xTmtBkOC8pV445E$Cq*9#v^e|}d3Xk=-k%!X z1_>B06c8@-1XO5}TO(6w4Jprht1eJjs5@YEBaFWwex**YB35T6Ke{nj$Xu~@ zY9V#y;l7S@KzL|rVIvzvT#+VwB6svI%`|3Km#6CGd!*jkTk41lYjsE<-VW&aq$(^QB&zkbobPZ~-zfDkLJB(d@C42 zYsItY*vkwQ65I?>3$s8;fPj=Z7~3N5X4w5KbB%3_%qy0A!jH0#{9Vy!21Z&R!c=^S z&rJe&qYJZY_{okjFfYA-bHI(hs6qpVUH)!FW+(|NCVR16x2|k8+R0 z$TgR9OzFPQ6#1;)TrE4YZ-<|k!v$qUBi3j2P1@1^ig4lZyYU*KH_Y{-A@&`9J$xiS z4i$^DKeMUB4|~5+Loa(boyXts5pQCW^!Z@x0QeR`&d#!4R4ocYX`dr98$sJ}NUplF zx?*Lk{~{aUf?0U1 z9f$W#>a}{ko4y1bWxvwO55KPK4e7(Lg%2IC0qf{|@20Ex8$RSstQ1nnYe4TLShRN& z*B)j7p4(c$MYon)h8}WwVBp7sB&VI5Vc!p1JLv^qS(*+g5&hEIvAL0{;=hd=%Z!nx z&yCnu0Jg56lh?mlhjO>}Y#tg)8#gzRZDlswl88N#Y=RC^`(%m@3JR^=gcPK@L)~Ce zyj-~7@C`vq2vAXlfBr9LXNzE&DO>g~P*e92C28IdrzSJj*=c8Dt- zsrKDm_FF`%X?B=my}QdF{a!Ave=trMXooOV&Jl$-a{Q-ZqMcuWsU|tXv);!M?!M%z zQgK<4UP0&tS($vyupi7343FkUyDbY#d}Q+Ka?%TZ=Qo$m=Xi7Yp$d*mMQ zh(~B$Sx&jdaS#WrYG0YyF{Ut7gkixFt4M-LkJNjuR!`ZJe6ohc3DD|f!dIxQ-`YmP z8Jn#m@YlK6`WCR7zk{gAX38qJdWkJHqlG=!n;R`MV4EjF1M#(Xy=yEz3G5YoiruM- z3?aLM;LpeyMc+RK-dx7GZQjhHvpta*IMAEK1PKk85mz9gXai+Opcdb0Z}z;_b!t1O z<*)LGUvEFP%N2fUC2E#oIcxh^?j6~6DE$7agH%{aNdZcdrTi(3Jp1QGV`VM9l(G1p zQ;S^mDDzJHR^rNbp7u;$`L9y`55oI~l>b}Gza`waY7_ZOU_n#JKZB+V)U|vE%X$?% zwV{U7o~FSSgoT{=Qr>5j_0z8l1WTvA**seyLt3=TQ+^RzU=LF$&RXrVs?c)laK5g9bDAj`6Gxqr1(-OF9Go{YBg>nOtvwMi zq!#Y;)``1oU`)c4>aq^YeBvBbM$u;`&veHoGzt9&>_^|E183r#qKu2hV!OcGy&mi} zc)P{$+TiUG1tQhyftLK(*~_JneK0~JqGzF* zmc5GSK)t8z;hZnR4$%gh?L$XB;){SXLE*A~734NbaWtwFlgMYeI6`XjOHEfvP4)Oj z$c*Ha7NP8lh@FuIZj$ICzHD`uX8xD~*xYhJwr`@Q!W&AhPG52)L%lTI5ppgnV-|(f z@WoDOp50`(>av$drJa`yCCyBErkOzN3au1h{^a$c0T-I6-%N{&l2PPLC^(x$(3%y(a9W(aOu#~<2yWhqVP*&>>w>t91(=Q02bswi37D{Bb`x}`C>bMm zcMs3ma}1mh(9$dxySacgV|6P{rZ$D9Ku<%hY-A~o*mW!sU=ON=WJP0Ar5U5p3m>!avH2er9HsSkRw_ zY^B@rrR3|@?1ds2+tq?jk)y4@FjHmI)t$+BD7ieC?Bv7SeJ7Yst_dQwlB1u@NdnZ|SAu;9FaT5`?h!D6E zQ!8Fgq>g=6{S_sD>~kau@8~#tX<<`Dth5#O^cO@;ZOW`J&8#*TI8P!3EmiV6MHRJ` z^z4hD!j2ai!%U0!j~4QgnorPb6sX&v*6_~QLPBe(bsWcdY{{mJ*IM;b@uwiFpj6({ zXg~5hQ}deA%$iW6{VP7HHeIjKQ^2`2aZRp(k;!XI=>x*OR%cLZ1#dmiz%saXQ1MZg>qNrX5+g~dmMASs=Bd-dMjC_z%9r^G% zSo`GV?%0_k88SZ)Eg(vKB?Im-m=HurxCcIEooQr*`&b#V`-sR0;X0tD)R7O|!Vs}feA%!q zl@Heow`V;9O3lg#EZt{1!b;^sGf5!&(W22F_@M|1O05LgcO`FDid4vlq)3P!r#!gA znrY-mMR-;aXEBLr30T+3x)tmOF;cnBnG0?Ao$-qdu-vhSP&bsm+qH{?Cdd59=2Ft<3?L=_m_ks zMuo-JZsxC;9MuHLtXWKu3`iAvf9sM4XNBIREC?d>{AKlQEVzEH%25$Ckxx>fZ%BcE zV6bSL@(RpJvAb1@1yqWmVnG4PHGx4%#xy#nb<0k}PgM6ei}D+D<*{`e2}*f!>JF#` zm%@>tdD2@Ys1CR~*SM!g5i{S?oJyA)Xv) zI1-Iw!JWxcC^AW*3Kps;rw8 z@lsLOTkIOLGD>iLhEMoq1*#@_1}nn|UY}r{`rAy)^R&7-YozS1KFc%(WP!P5ye6yKEvWlx5zJTaEIR)w^=5QJ%6o*MDg>O8u?m z0FuqkYJHRq3qD$e<+JfQET3YSTmp6pS|HL$o~+*z1v14?c(`@5mb)_5BDwu{YT6WA z1!YvV5eO3s)6I4xBGIsSZh)21$YskebO^D#!->N$v@K+fg;0~( z$1Il6Sz;W}@bJSO6B?mfvB$tQowXO#=qCK1pB^5VHRoYZ%-QqYRz&8tIdh&%%z2)V zFz30&n&(z)UPx?v)#54HAd>rd*1X#PiZ$>0L!RSV^Zt(D&p=Lee{iTZuYnlHnincV z#WmKv&q^qo&0k^76U|<&d4KwgXSg*_EPZOtdziTYQEOf(XU%JHta&rA=9Q|o4@;kp zo+*r;DEuqWns*~U?un1K=1qF$lNh-Ew^;MOrF-gzm@f0Jd38^JlE(h;v*tPetdVwD zxNbOM(G-V*qEy2&v2S@YcMBFGvJme$N-|np)$`@Ae9+G~yslQv}7392V0b%f*jH&k> z&4{+>YeEy)xPcsu-jbfz*0O^MD-^oWR}ZH%k7qLRMa@xhQ$gRHu#QW=9gmo}7Y*S2 zE*S(aaoXuyT8uwP5(x@RpuNcrN+COwozY}lj3fBWaT@8mWt4^I+6sA?j9&YXom!3- z6SSW(Ut*I$72rIjU@=}TAWUXNR!ut&qj=Ep;kMSVqm<-`oPICuXV-tR-ZyBi6A*H7 z!i0y#3*J92UOMvQ;swz|2AK_;Z*JkL z!hfk^ZjtJ#3QBdT~4y|-uyafB9o8(Se09t-yd;#Z~8uA ztd$2EinzKMo8KQyryr1T4cJRSYJ*IeBlZrBbRQ5h)ySXcMV9`NvwJo~n6O0b_WN=4 zUaU#}PhOH@k^tAhr5dw_n9TiBa^}g*{n7?`Ry)rbJngwFrP2O@lBhU$Myvl7_rW1| ziDp&@?3ZS9jbG+TdNNQ?>ERE(n*x+fO9Kv4?4SPrgN$|GV#;8cU>5o`K1XQfqa*ge zpRHj`uFUuM%s1tc(zvA)Px z!B4oBP@dsla{7mzrRP~8Sq&dy&cb9{v7={gUxA7FT_#Y zwmVxATu0yRbD46vSsY zbNpv2D7T2qe~t2|#X4j!JsA_2b;LgLDW3N4o)DPI+h9-QSkKij_W90VB;Mq{B=dog zKMNCqyVoE50pJY!W8Th}IAV%_i!8~=Qx;@?&QlC-zv9W9Q08dYPJT#8A@*WNfkz!|)9vPcx0< z9%t@Kk4Np)M2QI~(X*6~mJz@p`8O+MUIkLTJzuB3s8Z?#bH1dI(ev?f@ZOs5=^3SptG9n@C}M83W?Ykn)l3_fc?}J9K@TCHV{#LwSi^lA_s2W;bEflRaGJgzb~K#t2xgM4v6Uf1-HBwBhY(qx~&WyJ$FG$Aj0WHamDdAj6lk z0+HsWBS6pl++FOT*4rba!=QI=PY%7_o|g#*#U-hm1jP}%Wj`a|;NIKwOA`tHg@ZTQ z7vEzF#Oc4g$=#ugaqXA$daw-aiN(NcTbqPmNQo205=pQ)lVmBgW5ea(%@3$#OBqkMNW1 z`1vyXl%4VOJ22iHjnc+r&#gQ7PX^W_2Yw`dDFeD?X%Vh6C!I=-3^WwOcso**A+#bf z$XBk?A#|r1LTkWHmf_TbZGl$tyN8#gN@_w4C4%k^t$>o;uvm~TD;Q4J7^Cfq7Yvp~ zLFip=u#Din@-h*;c}$AY_QY2W{%`y9M%(hS+9pQZ4>WZa%empkc$2|2 zINpR40jmJccoUF8yR=8f+kT$Hwq!KQc#~9u{ttMH3Pi?3ye^dwp}Hd`yqs4Tjg2(U zX_<|AN+y@JWRtWl%@GEx>~^VTcuuiDh)SziyJMFPV<#Hn&#}Gs`G3sz+C64;meXr4 zSvm{aUn(&erQ^IkosykURfFzcpX)zwkLVld{iR9OxRQ5@PM6#ux>54BDf%w@QSu?t zGjM3GXfjYR1WXPjxbWYfehW+dkptq;D{DJoy6q(o=DUWmf z^eM&a$3JCP@@A=#dC<>I8nIjjX4|JaWgxGB885?2SJku#iQ7iaF*urEdlQ)T2<(?nBSAJ7#SOlfH4t(|Bg&t*oy4tg}AR1L|?z1ck!u~dh&bO3v)4TKpcM0(k zBH!kD?S`Q9El}Xr*B&9gr#qa@+RGszDcM> z{-tjcB%3!urF__Xp7}tIBu(-z(m)o0Pi(Q@>j!xI2S@=h!(riVoKk9ZQyHZQ16N{8 zh2+;M9`LVIIBVq$zAoq9qrvg4_Sj~7!oxc7xrbweLTf+uluT6EdOMg@-;6!ck1mx> z`SqvK;BOPM1fEInfZ!4_oqt21#>vgNLyFznoVVk;+j4VS{+cT?p;TaQkuNgG?uVz5 z7e#FbUk@|#&DSM-wIgKAR|Q{f6l%WC;!AqkeEFj*NtZVZ5g$nyu~^Cdb>O5V{8oE6 z1fzCLwM_R}neR3h`R?NPYkrULdzRm98rX6i-Y;jz9{N8H7ZJ*14+u*YoPRPBzY6iN zq>{98HUsC=JdT|moa1k~PWeP#P!z}?U-DrlSrABtuq0SP793KvmLcgawS!Z-*fl2AMySN|>H~?+NjslXxd;Y0+^ZK3Te8~8wEp;-SR(y zp^aY{ilHs24-UjA{8VZZ+4{Ie1=%90zDGiPEKwTK7p zAXgUcZDJPg19BvFOXgnf0lV*6!wesi0^xI)IOmITx?GoG(CmMc!iF*DpPBeb=3eRd z+4k46rOTC7JM->g1YvRxjT^!-%y_DTI}hc_ zLM^x7Y^ddsGoBD-Vq&vKCP%R}k*s&8>){N_mFqld<59wRs`pquI-cr-A|}4Xl`0IT zWPJc#6TQICA(|Udg@i8Ic@&rPt$e9}l^$)huW=$!p5x~?i8q;j>W=IHF?JgJ*~dYU z$s9Yk(O!Cu4hmId+su1zBEzP~VFSdpS1LQUy?5jNCB%~7UPkLDXm28~y-T?zMjCr< zsdNwXvG`zH&u`Qw)o;%>$?5Zvc}+U4$^NHh+N6(ZMy?M{du$ks)1JK1zJJsI#AyF# zZd=LchYzC~oHU zP7W`YSNq;=!}?_9ql0|-^I7xU3*Qrw=4!HIdk5LFjk5@WAIFw+{e}H9tDG|j75jCm zSR%87|Aoh>^g*E}5uAraLWCa_KC*g2=3e1W*-3*-S=5=UPENVdi&T#sewL!LRn*!5 zL;1H~S5jct66UV}wvRba3F{2@CAIWPyPB+@ILxmuk#Vi8ywZE^*vRb|%hO=WdZuiT zwL|p-tgF4LYSyk-Y%O5H{z~uBUiz&15Ldmu5`KKu=;Vx4K~4Dam4};Kn(Qx50LRk{ z*7u1d63+pvazm=lgKy*87{!vSN|=s4NK`@i{ncM|&eN#<7j?q5D%VR&I3rWaG^u$D zMMN74Hrs2M29Z^!D75d?X*k-a7wX{>PU~V%n%3ovmBs4K&3O-G5aZ?BOjifHj9e8m z@F|aC#56R?DZs3UCmxCl>b>3K+0bG=w3sirb0zyUOmROl#opD4-Vk;2FWA; ztcR8i&mA3>yY<-Il1Kg-rB2+t?%fTgJmgTyq$heZohPY(rstNa&Y3FVXWHLLZ&1jQ zQqHLfdHQF(yf{d)GO_U3OEBa~`(<2ijd`)|5z79f#X{z655U3pVb;V@c@lV#`R$B|J^NZ&By?NiZAbBc zzf3+|1D_XLsFRh%4feY`k7fo=lYE(9h+>lYg|sH~3snK8d=WfTwvVze#5x}uIYckc zZg;8+<8#(AjvlE!a0!UdRE1%dbsu)mTjAAQ_ZnFW@ou`h!> zznYlEyYe$Moz5^b9YPD0I0xfL=f`L1@8<+&8{Qql^u-lj0hke|tt=GAQN=mIa>tT+ zEs+C9Wp7Ybd|aXdVrFO<<;P5iQm{Rm%@ zQi_X3>;<2e;`H#Xc9D?Ag2D!^LC!O|AI{S+9myUahI4gzn!9~89}B|MJRRp!P6X%W zgg8FpFFA>|Wx?{4uomV0mTui*Pb@)`p5P!8Jl^FfQ!bn#xg3R2#loo9P?1%6E9t5@ z<@qf(me#( zlx0@S!T^nbs7zYx!{BqSBqG+V*9|6G!Tnm`J+a+Sq7fz$OhuK5)CS=snfpb5fU!6% zMfDdM5rp!P9${CzskB?S^+xQc31tgdDcYEWOJ5BFwLQFJCO=``B0^5@&KfxDY)c@kK5>71}opDRr|}KimG{4&mdl zc5nAT5{t!ORPzfzFXXDB>m+n_AjdD2NoIaAq-oObR_UstT$7cA%oxKo&*2j1~3>M#P}=7$YuS^jrLzD@k@ z;ph5tk?)En`TT!zmJKpMMc-T@%ik+R3an6d$lJp%;4C|ngK}9291#n^&2C?(+zew1 z;4Xlbolb>`?Th=YkuBC2WEZWlEq`=8D@?|=qipLL-~@I*Eb9_Z?1R9|%*vcX`*)c_2N}%1J{9$r=MJk-Mf=&(SD~IwUu6Ve7f97WaM#HQMm7B4T&Y1u z@I*;O?0Pfea)~(b-NdYJ~K*6RqqX9$_6*00r}yWWi8;pMS6@ML(V z8NS~gEKf&*Go@xzIn!QIg zh&J{is>TsqZ%( za7)FNMZTH*R`KiOS19;qQszkF5|z8MT{d8U3r|y($=NtUOXO$L*zs(B2V975SsIM#c?2ju@F;?u@+(>M7HZxw7%iE z*1~jMKoVqraVz7##lDUuROP0euXU3IF>6lii==WYR{wVP9+eU79%{B9xEC`r z4g$Scy{&pQa1WE3ivOCafm9slgD{y zj7!S#B9mvjyfbFHiEA__4veQxGl5*gSCM>Sy|x}s+#uIfhPVJ#&XaW~uIIBR6n~q&c5;GcGY8g*S$k=~ zvCyD8$^A&DW8)Y_FZp$JQ@@tgDRV_ofYmPt10`qr z2lo9Z<@g8g&!cx8kETsbgW0$b8V9Gvj8gd?v}7E+zJLVL0i!!Ye79KjLZ#!aiCp!R z9FrJ{XKx7d{fjjV_+y{3ia6A(<19`f57&4)PQ?@-F6=zXnkGkob<&fw?Vo6s9;-_{ z_Rb)Ey}RRNNzcJvUP(WSGfYTd@9O%8A(U+z1p>Lx$89zEWMP0R7emiM>lAA?CosCL z3&Jm0+?%o5?VT}TUFr!xBOAw%e?jkz_c*?4)*+9VlbQQP$Uc)ZKf8T~@vC zy1jSxTRY0qe0uNVP!fc*coGK&WJaK!#3YvLuBIxf&{TJ+XGo3zNp%lX9d*9zwtg$M zK0}qg@3Exoz3XYtt^&}7WqT*X@8)wi0MyvG2z_}g0UlhqZ`;ZiZyX|rQB}N9{D@o* zNjc;MfruW7H(!Y*)|$e+MI&(6n7<^))KvU)CO~-KT`RZCK99agOg|47srlOJcx6*tLU;((0L65%?0<#h=oe+U9X-z+7hbXcQe^JiP znuP9C<%^dm9uRq7z;UJYAUIqvnLwkMNY@K0d9U_uku-fv$Jz&1E4Rq`-43-kQbsB6 zlOlvFL=BuG>|lzBzDfvOcHH~L3Y+NiORuRUF^??=pg`;AbMZ z_StS!3Tu@Lu6N>}ZfXZj;p7+(ckH5L4s zaCfs@pL@Z!e|=|r?F|bgxJqvnyr5S@E|ZXI5}41hd^Y6L%WXR~_^mpzr^{z+?sJ?~ z6Sd#~iOD`TX^8i8lyzDIfaOhkZlr{gq*uzRPNZGozLgJ9m>eq=>UmAU^!7A^ zK0z)*I*;4Pd0CvXN6m6f{#%-stGWl<^Jeesn2V%6N2NVSY0ujO#SdwFUKeY)HK47K z^KOCJSN3}B65t4={P$RIsQe9VupY54E_)oP%{j-(DI1cfN?K0M;cqn;g@t#ld zJX5Z9#zbm4M=EpE&#+MJHH_F}gQYwf#6!!d@xW%G1cetKXN~CH@77yNHY zsGlpqoVCgwewxS?64~gP9FfQfk+MIVV^h6UiHmFI1 zns5nGxl9bXQ03BdC>^71sm=ge2yi9|j$a0ST5CN|t)+KQ+tYfUW0m$;4GbE*qqUZ5 zYq2-K7+Ps<0TrF+{n`6FlL=~{{(i6Lj|ZK6zu$e|Yp=cb+H0@9)|uBvX%eETaLL+o zR_1VDl`(*5K08s=#L$>KpecXyI6wu>adrwnOVEuQSuq6`gzfDtIE`<7}V(aXX<)bJT z#hA?2xEK&>mpw74fb5=DyY2tYdb)=j8xL#M)>^KMi|$7VhDhBK1OM0hC2DHrO?x>3 zo@bR(g-K!2IM>s09{r<(e4ATq&eyinF8JnOD;En1glW&-#K3#I=T- z4mrcY1&@@?^Otq_n;s)50zVy``wXWsWlwP}7D6aLUE7=f0;3LPZ`!r)q?+f`$&#hO zd7f`cdUn8!Xu1ehX=o5cF$n(o?!oWwuYH4YfboV{MEnAV4Sz~mTUF5)aFfZxs|W(rfVvb6NC3% zE)M(?BjbN0o~Y@XNU}V5-^>tb_1P+?1HS!@;C+ud+rg{g4~Apgl&EIAUb*4898odk zpeVtiJw-|QAkig8o?PWM`((_l4myKsp7Y?{G`?)8Y52NNHXUAFUWQ4-Rc|_5wi22d z+zM%ucNp$6>-q@Xgr`r!VQpUN@94wYL1ks*6oK)s{-j|+Ha_w_!Z09md=Iyl(xyu1 z`+|mr6xOhY{u?-LXxbO-XY*g8^$)*eiP=qu6D`gb!PogYz0b6irVX?mQ%kyXmwkC; z)~@kT4yM#uyKTr#3wNPYWQ#9b7oeQWy>foN{Vg03J!!_JrPTJ+D|EI$?VD)x@Qmvn(2HJe^0@IDz4C5cAeMs#Izh_9Jhz7Ou35|! zOXH28)t9F1F36v6X(sS&#&=WZvQioFvh&XD?~!1Ln~`{3@}5cH)N@9CTF$CO!mz*L zbXhCMjh!XI1)U}7ZcMa>8|Sf6p65?5z!rSpQl~4_*y-ya+6Tc-cZZ(RF8|;PjI%gzZIcxdI2*ZSM~*RgLU)-OUPAUs7!j z@RVwEn5W~YQsgDmoXbPb%m^-q-thO9&@c|tIhJnk%z~5%Fl+N{=cNOs-m+T z#UxM1_TqI&^WkBNQ%xF8)t%u=`NlU&pkr(2fH4;V|I@BNITOf;Mna}Sd8_{3pnQ-) zxx^~gL(!4zdo};)e-&!(%5+q6*8Oba6nIT`{xkf2lhT3vn_E-cqfImXYhQPc<6h@) z*-BkNL%TaWhJE*Ig1TQ6Yl9+CnB5oNP!khJ6%nW?L}Jcgt$O)oqtzLh8vJ3=$1PA` zxIDBL1yJOm%{<+fgG|`gI!_b|C@@-(LB!cw-9V-3*4kk+xN5<${*-8$()y(NAXe(X zM7wpVeYkI`Q{K47zxL8wx#Dl$F3G=K;JvK-{YZ@^YZ&!u>ht$`{vhqg6ff`?p3Jhf zE-8Zj{ZyJui9lyQe~0Rt$e^Exudq(1*Vi=9zv|d4+?w@dc7k?hz8CGsGS9Xn5G(hc|IFJ_dN@6>M)Z2%CjKI1{o!Vw>Dm36 z*_*qapY-z)ORwADz6}y0Tm^O01N+fwL0)X$5AdEDXdoFVolb6ccT=)4LX%#6lMKWy zg-$x18=QHYohw4D3F$Am%H9Yok|u0%zq2~h^p`{f_0{|(=FUcbpZj4Q#*`#o3P0wO#F=L*E~Ta z4+E{g*gdx}7%3x>>0NmtcL99w?%jIw-ujR9<|d8Z|FJg%AEr0^&Ziru2`Ogl{{g_< zJg_*!Ee5d|&g?s!j6n;W49>4i&cTlFKhi$kIwG&2y%J61VE=1^iYbX=5)U}DH?*W} z!OaoS6>c;01WC+#-&fi6hDEzKV(wFT+&Ze!-A5xun+7cpa?{m2-ks~+(3bT6AM8(L zY=1EMQs~Rjd-P>CK5ox}jkezs4^I8A#DnGrxjMn7)v0h$ zd1%WywS#F~ZY3+0a^Qpq(rutlNr%;G+_mF{079(EBGeS6ZicNrI^rg)i#&aCz|%e>aqE_atJS+mdE9ZdX~S-?;z&df^Zv1i_JrrlE0T6qJWD8A@CBTnX(bmbTGzD>2@|KF0wJ&Q`<5t6wl z$4cg&_1updSt6#XiAC2$yUE^gX3I35-15?2Lbc{|rX1nHzYW8K(|KcZu1|02;mysh zMit#`&xQxJfzxbAn>`UL7AMd)AKELS;lY)KLN<88!-M_2skmX>9I?W92gDfc9&Q$w zCx%DuGsmL=4DL9aR4rz5nx08q-dBwQs>aLwYg=%TYTqs_yq%qYTlX8x{gpJf`PZFf z@8g*FV{K4{d8{45fDT3#&*K5sVF?fWSNEF^K8Vs4T`A&`y9x(H@PoPrauHn3@DhVU z7_&|I+Y-@~JCy^UIdNAq#xbfcr2UdjyX^@gam`>jL%%hJp$`uRG57k9mNQ3mbUnp8 zJ|y!Jli5G=1^7+Nn>+ZrkktYLQ$t)9PO$lC$r; zMdc;-zSSC^y=;{lk|vsO-xn7XWB;i=-soATHJ@gRa(n(S02}=Gl5FZ7srB4isJHIw zqIxOG-v!en<=jWU!O4ibY_Y%$)V#X%NbL`g(npClBPq3Ra{Um~CIqed(YHiv!r4q9 zN>gN|MOKASVtIC9xjFx!M3Q~ZOE$JVVIRKE)<&Z^@GD82;5qZ~ieBR7LA;OntlJ0U z%l-g%5?6N!s`$``!H>3@U$ZjizDAXxQ(NN1w&cA_4Q*TEm33UcECfa({WK}}P22LK z-g4iM#^|2@q||yERAJBvrGulfvf@GE*T{*P`F; z`=6brbzt1&E;kC{C7DH2j480cF<^gpO&%uG$vp0QHJxs2Dxj+A$NT2jaC-%KvtcFf z>-=*2T1VM2_b**)UU+PA+|Tv1{mP?2e^gsc?N_xa)7tVtw2HS3hreS$#7Y+OChx>6 z|MAKD(nn2N)8&yG+fJ|1a!d4K)KF+^?t1?BT>0{ub>%`_vFZQkTOSk>IU$$UPu8j$~C8xQ}Ov+ZVzTj@d3i8 zSmJ^}&eEZWI?82wqy}HMjhn zW78Aa4y7;ivG~*+o4!m!a%}S9nlev>#+095x8AdSXqn_AZf_4Yz(@f{RkZyNzOn;F z6}9?n%5il0u8O=)2|oA&>&kpa{L5@g2;e0hSR5-N?T7C8_T7OO3!HMNw)(W#lQyyfy&t}wbC;EGBpKl)n{|il(qwwEktE{qB=HdS_GC^F5 z;lKGS?+5>6AP>wJD0~#?{|G$%2tP*g@uUJ{WAX9TI}JQio&Oi%@kne8JiZO@fjU9~ zA6MHdL$=C1Jle^06g<}6bu>K2&JSbys#-WzjkF}Q#K%#pL^)d^D2|-(B~D?+`H@~Q z+eQ2Vm+po{y>c~+u#dffiXV{zZn!J;ut@SM!zf5);!K}9Tk zc!Dl)bhuytk^$rNg?5e|wneW~(Twph6-T|*=i6T{>QrifZGQ1YtAkY2j7DO^ySiiN zd~|fq|1(8XNfq`?3hi&`(k`$z=Kc_Zkdm2-#D`28TKqK=lG_{JH#LbQV;cOL&VfR0ab_i)~~~eN4{0W zTxPzqmIRF_C;rL#;s)M0E>9h{~o>g_?@NI}Cls?>zswQ2JsR0#!cTYW6v~){rVK z(l?lecz*k4s?=fysN}A>G>uE#aV(eV$@%fH`|oWJf4OqwgLSko(_J0BZ(`<((yNC) zUs_UHzkPo4wM=)9jpMxSU6EH0m1@toYx};6`dt~{qk5an+oqc+&H3~8Ka4N?bNy

  • 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¨r~;x4crFb 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 z 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

  • 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 z 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 pI{!}XOs<^THnrp0rh0 diff --git a/io2d/src/win32/DLLs/x64/Release/zlib1.dll b/io2d/src/win32/DLLs/x64/Release/zlib1.dll deleted file mode 100644 index 22d93aa86965519a938f0e443e063f72e406dc81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77824 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

    w8sRn@eS2 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�nhvgrlJ49Z<1j>d`7}LUND>l&%*71n@zE~9;usH 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 diff --git a/io2d/src/win32/DLLs/x64/Release/cairo.dll b/io2d/src/win32/DLLs/x64/Release/cairo.dll deleted file mode 100644 index b7385d17ee88cfb3e4eba401cc06417977c8b96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1441792 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

    eN))J0NcZC5Y}0?4E@*}VOGF0hwM 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

    %Azi-=$>37L<5EJnlt4bYl(=L8 zQ4n?2o~`Y%U$kWhBN2PO*|AsoK5bi`&d`|r#%&;7K67hQu8k9ezS^q_88!(A!wQ_( zYPXR%Q4jtV7zbq!PRB3;upd4-494W5ai-+zkHAkc`ptv;psy*9F-Rl0epg>{*#6i zQN5>W9Th>>Z5SW04Oeo)fdZncp@yP7xeN&lk_|Zw$lSEkCF8(=raa;mh4MTzVdDJA zk~*VBSwGWHju-jK&!qy;{pDoEr@4T`6N4>g|2+0!y^d`*9krj?&4~%`eI3<|PeO7& zMn^3)W}A}mIt7~@dZ)?S!9X+? zz%<;H)Fzl9{=w69v$FXt!K#K83y1p(VH8T*J{VXZ#Jqv^KRU1qOv%+x1SQ4jxC2WA z3wmT4&_*v1Kgc@1%}IqV`w{Y?=Eles@3KIye%CKSu2z24%GJSmWi@5X&O0kx^z8=I z1V~hPWk`mJ+>7m;X)5bOI}tqP|8xVogQ^Uph1)NSambEpn1cD% z_$3(^DGG~zA)P0HlIge~H&)D)vgUwd3rt^yMIiXwjUf2J!!5x-!)uA)eFP&*{vB}@ zF3hV2E605sN71E*FaP|8my5jBU$GsUJ+%GE~!+r478<=akyramR7D&f4H6dQ66^x?c%ah}AiTy$~(&^)vLRf*eeWSo~u zi^TcUE&Vv_$qqHOxh_otw&w(qY=6FYE0T%)=k)1sC>gF z*d9q}#Tp_-u|h)-8Tq4u;bm}-lPJ2=8sJH}t0%cBcP)fe7Nzdj)|ovHG=}qT z=}N*}h;+W9U6bMH6E5O#MJSGIMqYZa3fp{Ub!C7-UN~GFsi;Cn|GstL$Q!v-o;$E_^jXs!`}{ zBBF35Q*!mI@Pqqh&84|ZKd1d|;a%z4dxF>A=X)GTxr>bBqL&Pw84w&dDd(ZaI`YM}jingEHShnJ-XY#oI6_`@f;Ma451~{((xR z_SPQqV~lu{s6)$6F`kD9Vmyy+70~CUcy`^$aj#K{9u9&VC<>wt4+POBAZRE3d23JB zE>c;0mMOXVPw-QWzOi>n)__b4=|xw0$4QR^v}H29f|8t(|Bk4M^eXPxve;Y1&8zz7 z$3wO{531o`KqiisZBT9{Yh}P&{OMDDI9<3 zd83!q>d2r?CEYmejPm~N5e=05s6 zyZib#V=pSzH)05ZnNFyaXI7?#feC2g2(N{ziGI|6i{(x^pR!J~yOr0%4S^PBXbS+% zt=QKI`n{w@{GXYx0bJxSmE-Yf57}_FqEq-6b{}`V8@ZUGBdyj$fF4JVv?S0(t zTK-aHYCB?;t9S5Ij9xQUm#myo!j3Fs;Lp5TCJK6-9fOj`p`?2lP^Hd@QU4^}@qo%F z<68Swp%lWiY8&Bc11)YyR!2iMQC3JZnY98wHAn_@@Gk%GiMQKk{uv^TL5F?PFP*g=q&Pb2}dn5M)?<%9KlV#b}D?0+Yx$(v_OIuV33tH5$Mnn+B7X5`yMgN)9I(NBEY-J*C za2CDXrnY&hb?!Nm2rlAm20rD@P?@lA%3WRh;P>{WaZS_=$IN5NDD@ zb8`BOo3plo=;pE@k(EIxy``7_T11u|)A9#kgcrV}ZC|#Td{JYfSL#8O!Vuq@S^%)u zbF2dY=7QYrgLX8F5RArVEJt5KKD3P(=5m#~Np>-tsKT1n2cjvGlZ!R5iJGhrM6>mQ zfH*;EVC*dVl@Ty8Fq4#y`8ElH#6pN)bCgYLH%VjN18fqeRk(xVFT7+SA`lwPz4KIb zV4-`00^b7}nfE`QLHMLQ0f$Gd3$Poi3Y| zlmlZhx0DT~o;TTBI7E8(Z6hRfasde0F#GhkDj{I4Ng4Zy)oNcG!(NE~h`8nI*W#xb z-Ew!GdyIR6H~s9h%GNqkYyDYkjl&2)9FQr&S|7=zW%ure+&9L0+Wi2LUkhFf4!Qet z36-m#5rHZ_4bAuds6kPrfye2kjSM9!?)dQ}F0yzKFBseKzXh)#4-~37@%iq@ zE3NF|wcUNwzB0hU+3uh1D|8J6EJ@$;FCl`-BJ6lCP*(q2S-qpMx^p+OTFRmZgb}(6 z!U&OsFeas0zc8v%C&K7ibK^y8S+-8c9*sA~rr99YX)N^(ecSwkU7!9E)d~srBQr0J=o_>V!`g{zS-<_UuE{}WEW*jTy@KM=V({#f`gZ>k$E=>Mhl?Eigj|9=m! zzWxWFAq*J&P-_g>cIrMdHYomfF$u-%)1TJ=f;Gsd5SUcu9))UnslR38c=d3S*+20X>VG8hTP!QKogsi8ard?{oX$s|RyN z0Os$os~|>#Q^}Wrc0);irK=%zoW=JU(5@CS?Qjpnt9JEW+ST7@E4ljL;HMZpYG>Qk z9ZvW*Fn(4)JBU_q7dt!(#-KKh?Ey&_x5$2$r1NZ-*PZlyo$)j2C2oP{0o{FOs_muC zj2;0_P|t^BYA>8mmUgjk62cvHpm~qUyGW7b`?x9ZK5p{e$4$O^+l)U?_kdg8?PAw`1+Aq_&i2li(JXX0pGD zHn)eZih(IIZIW%&d&cZv0dzf`JmfBdu|>jCgp!iYuC4eet8(51W zDqYix(3w6@J;*R#Z$lH3+rbc;Deg|UdQC!Kx)0vvQ$Z>B(oM9P=CbDhK-_>!bN)Jy z#~Bc8=YV}F-e{pYJ3A(uz@P)JZu$u^ODiUhubb`%O%SrqGbPtJ+o&Y02xB^o%R64l-cyXUM(#mx?jNK1sqYk^ng@MngLw^3m<4es4E= z*xh@L7Dr>f%g~S;w+Wf9worP!DGV;wfBLrU{*rh^=em1)I1FV@ z$%r747hi|)qNBG0%a;=xC;)B{-its_;ZSARuTTj5GI#n}wl`4rNS2jgB)r7GG>|v7 z#1~x~47mrxJjq`L6xJm0rx<;o+y#7d%+tA-My=W%^Bz(Y!k*4LV3xpZ%y85K`zL16 zLXwHeb;$-YC{O?s03y>hGBVxuXqI`+n7TzlFc0Z*K#)2%xXiZlW{#OYHG7rHmD8c^ z6(7t1fLm!OvF6l&J)ytq;8e{S_lEA|29(z6c`%1w$?+l?2zv> z@!Mx){9e0%IDRSO_wKF%{2su@t1waVn`!YoA%NdMYDU5j)91WO_kG*3WRLyDGe@Aa zXoc-ALy+>MTs(lS_Qn2 zq%QZmYFY6g0(_F8%MQR#OX#wFr4b9xy=FzRNH@fbxAW2o&%IF7=Uhw!bqi7jxJFuj z>H2$334a^-!YJv+k8)=hOzs?mG6c-F@S~Covk%)wgKmv}j$sOKFf;)nb%4~`*$TC@ z26mTw!;RELojahxWnO~`m@=gXbr_teUn4U{H#_Yhb0Di|X(^s69)}6sy(nS(=Hs`b zpu_gf`w%Q&-+&u3$G{k)opSQdkk!mu?=aOjUNO3rsLLdcSRJuRamI&$LN>A?EuCPXzzVZlNq=;4!QTz^-7}5N z7^4Nw6cZ5VGCKKf%I=Q-jXcQJC*F=i@m{{QP8nL*;5Y=NXIKD0cSc{YL3ait>l`Pl zlQMvrgn)NZz@IAModxhN1~7_clda;XEL@8LUUQ#ApDoZ^e%*&GsSQSM3bx{=|7 z923XP1cWR+%<|k_n$m~+%!1kLKb9F19&YS)445{~-7A4FZV4kzEemZHV@aCDFO3D( zN3>6D=1N_FZOYDWnC>)OQeCJnJgJ3{n&dR}3qZ{O>r=2nn*EkE8(H#(pGL5Ds-UM=B(C<*`d(P+$zcK z4&;8Fxiar_5B}mn-u}oV9BmUEJK`4YVK8mTP09<#S}}UVmW`o&9k*+Z(8|dA&wpSj zW!852_Ma-pQx=VEt$!+mV~xiFkjA-_DzZ(f>wpZ_25O0!4VtIk^N-(f{#juyp=^gU z8iZgvd9cvWAYdIK8lobzk%7elv|Cj4CLy6Qh+`x>=>8@S7V!! z@XRbdL39*2KUa)Uwlfg~8RU~f$B=u9%A`cd08LEhGP2!=;gFk#tyvh4V@>&LNWy&_ zyM`hbnbI1BcDnsnnZF`RB7Dt6v)TPX&-DU(xT_3*VOlAF?WBQG{I0Or6c6VYNl^lN z0NM&1@^VfRD(HwWy~83ez|X>8WIq%s<$kPvQS= z+ebyg=IZCN=il945rD`F{jkmXgs|N_$_(3{KY^kzCAJ2u+4Eql?fGwF;D9JmFkZ5% zf7)v??}HqMi$m^p=zx+KG`qk3mxuvYyJdE1h5na~vM&FAPAfE!?~Cg$f?}bAQW$J0 z9c-!mjb?^uEeXT(!m=Uv0U~o-KuAS z3sr)>2EUI2>@QH>C0l+dggBqNo4ek zb6G%PPE&!Mh9WXzZvVFmY^%HALlsyszzXbY*qk8xLc3M*cY zo7Cax!T%PkVJO{3@$uRDh?59@ip<$@91V z67$Vrjz~7DWFN2dfrl1do>5@ASHQ(=>IWnz*!Z@uOZ`7dr5Q6CIWzM%Rllt&%|ApD z)&C!=G&}B({-M&0jmNU)mp)X$WM&UUaX( zs=%Wy<%FLXMQbiLzy7{V`CQ(bVBi=f7*#)kNx(M|fmF7Sl@V@U)@ZHSI(Itk zDqY8KCkWYk-zuy366-m&X}O5qN~ec+V7P0|{|KqJ=Crb!uSw0ZUd^%YAH14>4b=QM zl$Re@S86tRH5=Ufy_$o8nggtvi>?hM{@j2|VTMtjrQ@ygCF=KYohl2=a*bHxKemdY zb3J$DmtF__%&b0nPl}tl7=--7P_j3O7Rd70R^oP z(6A^Up&W0&hv`OI+KAtOe~~9uy2vBbMw?s2dWT50xz`)ey!9HmKzx#(8|B#+1ZL+%XIYQxVD+7*|~%_<(L zH4YeAjNU~ofeoSqichQQwYMPg`D?*)_B`%?)bI8~j#1A4>I2{9{y|6;cJq9y&q+$z zb;$&~$UMgYLY|>*`t1abO=S?j-u>Hm?HrLAfEwZMQO{tnG`im14Eh#$ndwTz!6`=X z7$f44%zq?sc?f+cl-lru8C&ovDd;V19@Z7EfSphG5#7IG>yFb`2MUvUhO)Bw<58b6 z2+;~gC3fpDJ;`M@nVmq2NooV?I$?Q9tu`rUla{BDTfZ^Cd=msz!qjFEBht8c?823f{r zGPO2)S=bzdn0Q+Q3xGJ@u@wjM%sp2#KReTVH$v&kasELlHY~qS^8F@CllutQY{1N1 ztB5Rd$^8I!sW-q8o3aAg?kRs6j+mI}D247aR6R(&Yg44&3%dLY5Jb+Ac4%yCIvMhR z9@rVtZPIfHU0@w?lNe@L$*$R)7)K|u8*v{PKgH$e)zw&35=dbA`NumpPE9I9nsglDYtWMh@2 zERAo#uRH%n?E%ab8b~9X)O{{2p-ciU>-9Ma$oyRN6vWg-T)_as4s0(`LLSmhw2i)= z6-3$;gSeZ!07-umj``uWg5FYKECs_DNnlVZ$+3g0l!SGUy1RHutrGY61+lHc>4S|8 z1A@TmS2yZ-a!GSoqzfBr?_9~=i!AwpL6o^1;ti175@I&B&ZY`(HZ^2ZAv%lWHuWPw zEMaI;{Q<|kqJfxWkNj1YfFiv+k?y!W0mR-a$m|0sSW*%%Nakq~k<1~y`fZ|0@(5|{ z6^-os7=xqV?J0u37roKo%O1AHpqsACf`;GWpyXJ ztXqBzgSJxVopz{PTvq4qY{R zG@zDZX>iI&WN{`b=_2hmNl6z`w@FI6&}oud#kcbXQf^XGGB($P==dvsqQCkUCA|J7 zB)WAT5i0^^y7Qt0D=**t^Pjk8z;<+(U#Ic}oW$`0t4H@*tO?bSI@&--F4+Dk){aoI znQ}izt5L;&Yq(K`0ZM~#57QD)RubSECq*21aw)Z~7(H|8(@30NdtY$^gJ}?UVJc;* zkDxtRpxym8`pVAB;#?jV=khp;GpJuYk})=S9De1EygJ=vkMuAIvWz4`FnQe^F_T+3 zf21^EjLxJpUGy{#GHwK1KcqSl2S22n0+7aX`rql2u*B8lbEtD3ez2a9TfjnPoBJ&+ zt}sBo)}IDcvIa1q$YifKrAYm??ZJ5gH1h$1A5muexxm z;&zKT~QrKYM2Ji{Itu@>z6`%7<@UjVG~62?*(ecmf?)2Sh$2im9q1rmJd z=DJq`l|tdz;s;d4FfVnls)JWW;~r@Q7I>W`wQM^!=9Rf6xC_%+W^a_V6zr z@XS$~SDZ4M_=~GW-NF)cNdH@|7}4wP+&b<;4vLzrAL=q-KICD(PLA{Qv9StEV0fo% zz0$&vJMK9#f=rEY{uP?;7Tk%;W#D_6Ymv!KVr~awZO|+*Ow;G$T0D^Q$}Sf`IL7lA zI^n%wp$kx`9MBn9WcvXfi8Ayz<-(GUb2Z78NdWLEsyn^bw`S|OG2x(aC_RUd?eaK_ zE~{L95(INSV&8_AgFyZK_YkPwO{_rOjaNz@lsblc2+Kkzw^$D!442dp^&Pf2IX#_l zU;L||w^$dAuSa{i=)9Kz6W`mzPceGnzqSfZ9q4alH=Z>h=#WC#9QafsOfc*CTZ+}G zmPF+m4N`-4698CS4lro&&H>{5b#i7`#o~D)sRCQbQK_bu$~-Z8?EaZAn?P`PLe?+_ zBzb|_?r#K??Ho?R9~LOBh*c?-5D=BMW$BNm6cM}Zzxz*qUhj{=3juFKaSf5yCPqLT z5Tz(UW41+d-$f=-AHc5|65Fbhg;~IkB`14kRE6-fu)44SaoR-%i_xGbK-O;1vSKiZ2H$o{x&3%b^8alYDWi?+M6kiR$mXK%L7Q z4HlN=ua(q!Dyi<$YW)ny%MakH)YQtwA*Lu!F?CNe#aE(u|HM*$I8bo@tFca!f-G}_n`95ggB4^Tm8H zBzZ&b){no<5BJzfr&VDEry-qPkVSyre3QSJ^QTpkC;!1?s9d_~a%Vk(E?+E1@M4{G zZVpuX0f9OebnXA7zgrK0z=;B!fn@hzpN_-SKY&u5fl}w8yZxrl-W=O@){iWnN@Zea z{>b7uUPn-u9bgG3luINgXdB6(xzICXkO#?^ZKYCRQ!gH@W%8x;!RrSVwss^()-4XrshXWh{9f)GgIf^}%C)^%2g?x(RVw z9tSy3d}8U|B0%>csE-cp0{7gSE9_b8DFO3th@+JYs8eYKW;{rz1xkHPR#4D^quc*` zN<9V@UP|ZW)tAb~(&GPNYFREEnt=n)##`-h;Y-ROhesw;rtp}wqR1k24rtSKtUlFZ zVR{13G->e|qiX=o+F@q;kb5k+R*1r#Zwpo?!tTGHmEDE;OsGRGZeIT6-{a^Y(1=(6 z<|WoKrCoHalx5*s(MceD35ic{P2usJ1kA0U*--oixh5LJO*c&5;=aB}?mXF)4QN@u z--XK~I9ao|miU;2F++|5u>T5^BUhMABCAtOkT|v<&rks)Y-o{p*dib)+?KlPNfq&! zz|VBmVp~cc@x>mtxGqWNbKKlQ@t6-jsZzSthzBZSjqnmxpO8LMyS^pi=;J5{MmaFb zfl&^Oa$uALqZ}CJz$gbsIWWqBQ4Wl9V3Y%+92n)mCF1x%JX$=oe9gj-_4?Tjf z&}Yg6W|WtA?}zI-{GtYi7Zna!ezLZj)YCdo z@lqR@dL~nk==`de+Q`)TOx+jX|1)5dxJa}|_yDGE-?^QanqX>zshf9hx~?`(XR5*& zJm5E!tt|^S4UFlY1(0=v8|o@v;9@>vp`*lmk#B^L`||j*d*IB6duUzg;>`ujM|FiQ z3K2ej_q2xA^>v5H3;VnJ;#zn)Hqg(Mm2+|rI2am8#={q*=efy-9zP+xSTfA7up|Qk z-q?Q0DInq|6vVRK6~PE@{8LH3T6vSfv3z$tzT^I_f)D41kV_6ZqD9&PrJIh6rKAof z(T!M=obWO{N?B$=@7Qk;B#;Lza2^H zA$rz;GIt8L)}99#=XkbF4r_O^pZ?k+bdAk@Mg=r0o*!u&r0Xy8PQuPJw-sSi$+ zh1bS-u{tLpZ(id`cWbB;8H;EVJ?MmE(lt;*&h#FlfS9bB(d=dPNyaeYhCF_Ldq3O3 zv^RT%_84qN5Gl1+hDd5;L~Q$DBCbytqc05vXT|dT>qp4f`OnE9g0KYE1*b!J`P@lK z;RF9VB2Y(#D!u z6$}9MT*6n$(%`?%8u_g z+z$~$E<~i48q@71Q8Lse)kelEM%S5=&;cXQZ#rHry`i4wPy@!`7cz!q{PC8%H|PUM zkL)JjAle__!+mfoC~_Ew;Iq$RUV}IR|6q0{*LmA?7rr1?a~&=#gAZ-?dPAoF6Yxhy z)Z%!z=*n)+&@9wi7(4Y*_aufP=3A*s8U^%Q!PE!(!L4Ro;sMVUNT#1tWGForP43QX zv(jXa%31E~;MQ2uAo{1H2+t~_v(ZjL_gs>_qd(TcsVZsJ*Zz3h1J&VmSPzf-G%9{Aom*_ ze6hU2v1ybl2ZD-0rI#@as5gLm`PqKW#KaO>B z(NhI!xgIliuo(UB8i_?vM|3GJC8$o8`4`=XQS7zktg9VFp-}#tpb%V6g*s2NWMsRS z0swG__-J2dyL&YS+|!hnY%jx)lwP~L`I?Kq^x|;bJHaPpy;33T1kHN6Le_!IDjNb{ z2AIbxl%0UGg~_-c7H_sv{BVV0Z~jCOxvfHXKdo7(SIAn;EIVGpI%yBNr~gf4?-KO&LYaNR{-kcJJCvRE!oc>_#eImYl!#i{6r`;sh{(->*R zXxF`4g=Wd+H{Q^aJ6E{ownEBq@wW7b!deqxk|EZb3P+&iQj~zA;QhIpq3mFd-n)mO zP9y2lco7K~>AI24?h1)~Ds6MfYG}-)dlD9gQ&A3K&R7n2z3y8pcfCkk1(U&NZ2GQ{MUkg~3sIgdPlg&`}u?x<%35xbU zWi1Bq++E_U1@YX2c#4vXS;V%jP;3klTSybl@EoBAIjwJ9q3oY9F8*(zPR$GaW%l}6 zg?27LJ7uVUSK{#nDdaF!)N|2Hh5RWpjH5#pvbIo466gzdhU}-2GQP{yYeWn@S%xHb zNFUtL_VER_Y?GQMfRvRT9K6P) zIE)e&G0(cYlZ*aPaOd^uw{8^r&+`&qVggZevbsG4P_WDevNYBbZz=4gB~I(^5ZJu3 zTr=e0YZEMtvMusuo)&0Csy-c_&^Z= zrBDTNz3{~C6DOo!)l4A<)`EfRx=?6x!}isHi_MV8>P;6s8bit4PZ4NF|Yr)_bXsBNYjaUc&uMK&xHu z-I$YM9kiEqZ(zUjO~<3W6jBz1;j1jYbyzaM8h8sU23kL$*vZzpN9O<)L?xTW+m8<=6-I1A5-1 z{KCFTobS!=)D^(313&yto8K<;d$IiLfHjX?wwOn%6!S>ah5zih%5-6`g#rKe#7Yk= z@2oJ;54fHrs4^*Wknv~9K^>oDV*OHOqHrJUt4Uypilc;vY{~yW?0pM#RMqwO$jx%kxh1 zcBAm;^D>Z5P2q*&Da5n5#Jg|+0P%!%CG)#L0S)m4Eb+F6+>>-W2|0T%)*caeF1tan zZB_%WIrkHkLY9=X{Evk~-Hc#IrEzyB5R1q15G&qqJ_$e1xlS{kVlyQX+wP&X*m z+D%@t2Eizt=Fpu0gnldEt@4ev9Ke}EDctSB7vB<3`t>j1Yf+75Q>u2ea#s^eYHxTBJW4;V_dgg4!K7?+eC%{`oB zMhT0>-`5|nhmUN;qmZ=m8!$lZG}j#M-k^xgEVYGG)27M|8mcc?C3(6}muUIH-NIDsqoa2vmV@pwniSdrwsc=hpZ^9qdPF&Im!{PbZyqi~v&+(cS+M!htl@ z!I^3qJV& zn$_T635@rc6q{%kuG@?1cg`ox(*O#rg9wkKW z%9Lf$*@XVoy*W647Yz353ZU~cOstSI3~>I3bVQrm^*7g4o8RX4#3e$Fj^h|p#GrTH zctbQ>GrPnJWMBfVac8wA#B2gu!tbtbQg<~549{IHqeqi(!1 z9?J)Fr-QyrSA0L=@-%*IV-rSZe+k2_PR7Ex|7~ri3aUT0x&a1O~yfH zeET&_r@6`l70`^uk8H5-K6v5|VaRT13PwmXOBoRrTBwF!^mAr6>a=Lj)I^JXpU^?n_t&`3#&0y zNFw>)j(sUKe4Y7lKuX)-%6yI;nxng)-+?rE(enc=%yT>vvv?S$T=iNj;UPMfAFiX! zLnfTt&tid5gJ7J4=6iLB_9Kc&cYhJJ&xk;_bEX#8?2x)@>jy7?3lfa0@O@W=r zz*wplMb2(0ansPbi}sZ4+BkGi$=-j(CDm9wx*SH1sa}QyTm72O&BV+L(viZZHJJyB zQ~f#~WVaWma+Kpg*`3lM?CtB~ScnM4+Qf16GepVgl?{y+8*b3Kf-_HPJ$LVmyxap0 za%5<2$y`U?i(_7zVv)4*KQJI0j6d+>6n7UEzw@Sc5j+;e#WvnFD~$QV0=Gi0!?^K> zc=4_N_|aaxF51z5U^aIUZ)k<1+C~N*QyvaF`EL@wX5!`?B`(v+Z=G1HV5avlDTB^| zBAY^;WXqpnlGM7r$z_od@TsT*{lwS<+9e91sozsY2%Y$n`D}ManygeQ&J6@K)B$7d zGgw~1rRTG2L*KBci#^{3t^1wM`GO_53j=oDyZwp*hyR96C zW^taw(63KH#he#_F*N<_(pkut5O?c!yEu&)E%`T{Y0xe;Q321hy7W#>N z?W++3&}W)h{wIh=l8B2T7gcE?-Qt(}Jj+L&r$ny#^#`3#x*5i5hOAB#-RNC3`clj; zSpi_HSjDc>j=%`%Q}1+$SaD$nuQ1gh?*!lidrJ#Z@fJeAy_Hg?F{18QY^{{r8xydV z(1_rh6fH88VvLNbQ8eg$g3(zcGBt%z&21{wu|nwIs5!q(0hkR~gU&v^f-|gO!j))U z8T|m~d#71k1Gy&xRjV8^B9YFo8 zK9ItGUzsylWLkiXiRv|c8HOknEb;*C4pXJ`UQB(Yv=Qu-%jBs!{VJr3_gO~2_OKf$1Rh+mB<&Ps&ev2~`?>z(G z%(ZJ{KMG;;`nxmT>B&-w!P8mzRYL$7@aj`>a1cRgT5v;FzbnKi6%E$)oC-8@|HdB{ zVlK=~Iy`oFchuL{Euh_E7>3P!qjBxJa1YR+p6reNaKdH!s1La14i7^KEQxH9$lMPY z1Ipw0HQ)e28W?{Doyo7tL7l#N+Q#gzap$j4 z^3YW9xv8`5dLoXQd@`P0*w~3`orsLwiZhC|dB`F(S3{cxKd!;`)nL>)9zgQrxurn( z0B|wZ7IEfv`sGV&9D~fc*93rh$Qd(%cIUXuD4mAG-2;4_l6bX~?gs!So?Wb-N6FnS zhK$~8-IBG>0IZ`?&n9x}QrfSrfo`7KTx#%cbuRpkXjaVjU-%R`5c=yq5czEF=YGuD zeq@PV34_rB3C`FTiAsrgIKNNBZ*?>ylSDq@Ja#c6$dem9p8Q>TvOsxqm+)l6 zcYHkQE_PCs#lLG~4S0qAyH~>PzwEd1%wl;WD2~=oIJ*NMBOmBq3q?~n*()g|yy;i+ zoFmp@Ph$h%xvQ1pjnEjg$`})RI)6cFn0E*QGo4E`unz*WoX;X~6y{u4eOiM1YcN)K z{l~z{4w77ipH8<-D;r+mFG`?ZY&+aYtlUm4MwPlDV5a1_8^f016LCPi-T5^-f}AU9 z!C!P)_~qF*S0Jx*5cs}EpDw`M4)e;jJpa({?zwJq2DHaT71oF@)DDzrsIcWQ+lR#U z$jdGWwrZ$}EaIDjHBxV!IcTIntK&aTxU?{aii9SRKVUck%=xmuz8;0B>8YR&ycGMZ|Vl=r09LP@sJI?2H^0X;fYa@{!rIMV?K z8ze{bry{jGe=1Wa@TV$uQvP!Aq!mR2dD(ih0$<(z?HrZU9NAjG#w1)(t*)^(ot)}| zO%y0CM*B;1v6oHbaIBiA11AZft&U(!wl;yELg z&uby+ic0Zx;+a`!M2{s>2`nJb@Nn&?(*4N5o8z~!X7)m3gey{q$j_BW@u&JqS!fET z#^uKg+&tdYG!N6ooTK1a%OAsT5|{U|^G9eNh+ObX938X;p3oLJR>zC;@lyzG{vWRe zpux*vJ5=7wF$w5k9PjRkR;0fmpA`8pzwk#I1?!w_T__qC?+39ijY)zWCMacGnRn3* z`+V<{`X`|s(7m^x>^lC@DYS=m_ituvr!f7t5$Z2DBkLzfWuIGwOjH7$_;pU#iJr;w z8nWO$gkGdnq(+&q%9Kfck^m671j&Jv7!ynJMVO3oVLn_0^IEA^H3HdIx8PmL?CFTG zpL?*>p7o_;FF;k@g8NK0OZf{O5_KNCP}QaoIRkcI}E`o&U!psMR`MG#;RV-JbTott3D$MKh=a5 zBs6Qnm4;8>2A2J^@h6wTAIncHn7F*#xqlW?@)zaV?eOG@$DP!0UnrQ~o62%2@(yXZ zB$g%f2b&=_Lf(@V&Z=*iE=vnOnE7x-;9^w-)MxBCNv_MheT%Hibhw&9CC(e~{qlyv z1_PLgIaOC1g*yqVF|K2La%N!HO84ejDQe9q+FIuWQGDod+9QSVg-#CI!-mnNJ+o*&mAcvBgjXOpIsZ z5hp~K2}964oU@_D`=%iYV}yA`Prl7oBhVyJ0qQHSTp~gL~f_>X`Hij=;@32)y6xJAU5Z%#KLbtcgvcJeY5h4Fe?_ zpEn8RK2=oi99s@7>mH~yjfQnM0VP6~+W@hX2x;ZRh`UeHRGzmq{}$v!sP@rsE4t`E z5S4dje#0S_{YOz9Mbgqj> zjyNZvhFp*6%p%U(l*iwi3jv_65H5HoVuU8*g9gSr{C3F(OZv3alf*a=UOEC!Ze<`R z#A87mTZ`5Rw!M(Vh;z;y@e;|2PU|aJr^Cx2lA!u#`Ksh5OL#w zZR4e*IqzTy@fc92k$0SjeHsr6^EqbTc9F8XiK$J_gGEK;oNCl*M-jlm(8(<462Qd( z07>pZbVRy{Sm%+7)Ody}>w37Bn;WLN+GWcyccck`AGQO)CZq#EI{-}Jn2v`}F(Ntp zT%zdUycE6f>G6z?I`5yWlqi4=CZqy$C^~!YEd@8h)D+i@N1-Nu#S5WxuYniwDvf@Q zCI>2xF&J}xid?WEgg-H-8^CjXY>?Rb5sx_=$tx*xmcc+JKzdKqIbI_Tn~w5@V$MMb z<)ywRXRIj;A*v3!V?;6T;jK^{9yZlG;{ECakmpL zk{Il&#IN)%bPEl!d#%LkfDQ8{M>PiZSNAhl)b(rzZkcp3SCeLC^*?ww%eTc0m4qU{+Ovb1Z*%+G04Pw>CLXzqJ!p3@3 z;k^Adx-&49?~$-k7v>qyKSL70>qI&-UHLjh6nqiLxel-bsW3E9JK^AWCY29d5R34`#M}?@ zhq{C)IA?T?(wF391`MlWc`_sJ}2|g8f*xOkqB9_G!Z3x z(P?tF2U7d`iuiK?|0K^_5sYR*MBQ@PYp=1WD#`bdFY4C8w~acg&0U$l8~!2`PUH^U zMVJ;N)nK0Nrk33K(<0y3KCv+*}w*IXzX$ro)EZZIH4( zB=;)Gt#B8Ry0wp4WuDS>iEh8_5+Z@DyKn6F|krUz69><=kt_UDktM1n!BqNHAaEAuSpuHb2P z<*uvZcrg%Q5$>%fp{+7$P>G*w!pC>+8kO2o%x+o(Xo}Q9z0EXc__ms)EUWkO zv)VWieH=3qPa{v+Kc-l?1L-Se46#K$YhF>$@?@y)5nYqoVlqxp6{Y2_MOFUt(;JInZ&^_1{jUq^{Sd?< zf|`30qZ8X^1!Tw$WMeQk-U-YRh4CWz=O5|-JAhz*f=S~LinO9XEw2*|)Yn&NK)0o(onIT0EY8PYTzMH)WW~)rsf&+s{CPn#OO`rw= z4@%HLsX-orGR7A{!U>+XP7}Tf3!m_~n8#!hfaNQSm17x#VF}`Z8hbh&UIYx%-XQl8 zBxfuik87jBYa3Mfp4yLP23Th{baxqcj6|9IzP?O7KN<@7J=jIXXl*yj27R5IWP)iAD;za3sdaHjW;Q<4+!iC zuaZRu<_25I+a@C;2vvR|8!YIF!V?GqZ50IuC<@HZY%-a|H{-Qgy*3WpMr9*g4zYnj z$fz=eTyXx@8@97dnaL12YMkKp70zq7n}^w_lT2W8G`@G ze6d$h3l2ZhU6bhGLSMWk%T*AZdl$mY{3AA9F(cOARFWZ1C8HeSK^v~zFwS(If~BGa zS;nK^<~*Ggn>mJzFT=r#_3N^=$A2qJk{ockoE_ zoy_CrtzfG!WxAV!!vC z?4ykBfJkTm_eCO#i2Dp{$%X=D03Hs2NZNGS(7JYK5_po-eu_y0J1HXOQn zfEr`3=%D!4UM=EFaV#sozVo=J&4_nxT#t-!HlB8b>*p9?3~G+!SDKDmF4M`G6y=KC zU<}qoWskG$sX`C(VyWOH7IJTmN3-0X*&NT_-;VT^^#JkVoy@=nX9pzExMW~gTp2YP zWKQW%wMZS7P_LG>q?-!WW*=9p(FfWlI2k zcNLz@Ot|~tQk8FQG2LGJz}Z@!yzJ^26{v@=<02~+Yeae&XJay*^FTJcq8HPlF<~16 zV~AVOy`Ubj&xZb9rvAfB{lv*$9W%hqlcptq_hqjoXYusZ#qiI7mOm0!w)Ru#`-RZ@ zi|H^?jT+2--dDLEY2v8Td6EZ+zO6CLg?mGc^6>NIduRE1YWFwJ1prG^Jj=z%tn7r0 zXEv3HHAJYnua_Oq=9i5KJR)n37r31cgA8MfBrB`S+W@a3RtkP=^0m_!{Ya`-1|Su* zO}2BoGVB*XpSxc=>CHcQC9bp*8dmE>&`MLr;Vjr zq`c^57AxGUuswX5M^xAvRbdYhVz%~W{1if=3%9Mpo{X1OVQ-be?6uSVjbT;T-2h-^ zgDR~3KUHCER%9&{k;Noq|JPJl^YMNp|63Jy_GyGd6?QIEA_n#%754p(aw^QXy2Sld zI2Tf))UX4+Ar4qkLgw!C3Q&&T#!ZAKW*U3CM4>{>G_Br7Md}`njhhM|Tc9qxirUl< z3tj#6X$s!vccFS|*a2Sx-b;(ww6JfXcqS_$uEATLV&|P1Ye2SY_@O}uq7jvFLxz~5 zXs^biXsygUI#9GVCPC;}EEwpZm|&Ud3ywwt3xM#gE~XZN;O?RMib|clrqE-(*k_YY>dfu6UAjmmzI5;;?eCM z?zZcRL)%*@Y3DBH^l7ZUU9Qs|ot6z9vatw_#P*lVQq6%lM9G0TrSh%KV(&-uI58nR z&Pn<~>MV=qzoAfJQbAzAG;SJ8MLFx{T%Z}+ty3h$Eje+Mf`hpe)e9-2`6#k2LN-7N z3lv=SG>Oxe4ps@ktn%5nv>>8+XKcx`YEk=P!piMY?@K4bNR^3KJ171?ipv5EXmk!!K^Am z;sh;F&;ntIYavvr1-gs(wOb`6>)$2vDn?fVa~;eKrySrKT`|UBW|)M8AgQOZoe}Pw zFxx}^q6+^_XE6#eqwbsJ1?FB1_g>!Qi?RDv>lSoLtYBw7L<$D#2WUg` zsebUKJ&FO)U~FszKm#_XGa3W{ZBd7Tihe7}LU;5Dx=5`X)vHn0B0k|F( znDZ0aZscdROi~w1Dy_)pT9oTNjFO8=lRm_exaO zEjR_WLg{H4QHL0;5u|M*!FJheKOG0|p~YY|4oEm5VPu^!DA{Sb;HIE2KE|;^bJnX( zRyU)zNn_!AVRM6H;kw9rbGy%rR!`q?A@#JO+#deMEDqqI-efa&`xS?$Cu*3-`#1e^ zM8J1F&~;@1>AXK|T01Uz8%VhvPjR`mvMcs19>YRZpy;ALn zGC7wZXa1Y;zV?F66=~>crOAw~^=4DROz>AX1#rUWQV!(2xk}iUMeLF!vI)H9J>uJ(Ni=}S^Pdf=U$yXo4WE|F*j+UyMvDPg&TN3I+qy8u@QakAp7!ele zA2`XdfirHAjpUaAxVoc7EIIV+N{a+(lIVhn1S1mc2Z9m|BY2yv_S->zv0!gyudWO$ z*KtaW5h-b&+<-dJ!7?u{XDBrdqInmgrK#1>Fw-gF_~l^?xErB6kVcKhVU{L-kw*LJ z$Ep%cJpwq%Uj9dLrv;^#q7?TYV>~V?y7*ahYy!DNQDcT3xKPYfYI1jmy+wT=hde>w zx9scc`zFLd-6v3|yETCNzk?Cf*fmmQVWZmYMQR0&#Z>2?XgQGX$=n+%b1%#hnR_2U zg;4SwD{}*cjQlbGfFMH!+m0zRR1BIxxuHUx9g7W83me%_oJ*ha>smclb2m?dp(TjD z4i&n^UPmIBYGQh9RD2gGzV`{fE0Ss`*fGnjiWpdSynsZQ@j`JozACs)Sz z!nYna)$VM+mrBJwQZf39_4Hb?^%BTDbSZDdWQ1@4f)W7~>BLL;OFiELxuE1zeJqtk z?Rb>&8;%yup><$_p%|fdT{S_B%0DI=tDr(K#JXP?jS{%RJaRT~?}r7SL@D`;@3#Cr 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

    Usgqyr37;OR^dV!!CpxpXTPx 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 diff --git a/N3888_RefImpl/src/.gitignore b/src/.gitignore similarity index 100% rename from N3888_RefImpl/src/.gitignore rename to src/.gitignore diff --git a/N3888_RefImpl/src/Makefile.am b/src/Makefile.am similarity index 100% rename from N3888_RefImpl/src/Makefile.am rename to src/Makefile.am diff --git a/N3888_RefImpl/src/N3888_RefImpl.ico b/src/N3888_RefImpl.ico similarity index 100% rename from N3888_RefImpl/src/N3888_RefImpl.ico rename to src/N3888_RefImpl.ico diff --git a/N3888_RefImpl/src/N3888_RefImpl.rc b/src/N3888_RefImpl.rc similarity index 100% rename from N3888_RefImpl/src/N3888_RefImpl.rc rename to src/N3888_RefImpl.rc diff --git a/N3888_RefImpl/src/N3888_RefImpl.vcxproj b/src/N3888_RefImpl.vcxproj similarity index 100% rename from N3888_RefImpl/src/N3888_RefImpl.vcxproj rename to src/N3888_RefImpl.vcxproj diff --git a/N3888_RefImpl/src/N3888_RefImpl.vcxproj.filters b/src/N3888_RefImpl.vcxproj.filters similarity index 100% rename from N3888_RefImpl/src/N3888_RefImpl.vcxproj.filters rename to src/N3888_RefImpl.vcxproj.filters diff --git a/N3888_RefImpl/src/RefImplApp.c b/src/RefImplApp.c similarity index 100% rename from N3888_RefImpl/src/RefImplApp.c rename to src/RefImplApp.c diff --git a/N3888_RefImpl/src/RefImplApp.h b/src/RefImplApp.h similarity index 100% rename from N3888_RefImpl/src/RefImplApp.h rename to src/RefImplApp.h diff --git a/N3888_RefImpl/src/RefImplDraw.cpp b/src/RefImplDraw.cpp similarity index 100% rename from N3888_RefImpl/src/RefImplDraw.cpp rename to src/RefImplDraw.cpp diff --git a/N3888_RefImpl/src/RefImplDraw.h b/src/RefImplDraw.h similarity index 100% rename from N3888_RefImpl/src/RefImplDraw.h rename to src/RefImplDraw.h diff --git a/N3888_RefImpl/src/RefImplWindow.c b/src/RefImplWindow.c similarity index 100% rename from N3888_RefImpl/src/RefImplWindow.c rename to src/RefImplWindow.c diff --git a/N3888_RefImpl/src/RefImplWindow.h b/src/RefImplWindow.h similarity index 100% rename from N3888_RefImpl/src/RefImplWindow.h rename to src/RefImplWindow.h diff --git a/N3888_RefImpl/src/Win32RenderWindow.cpp b/src/Win32RenderWindow.cpp similarity index 100% rename from N3888_RefImpl/src/Win32RenderWindow.cpp rename to src/Win32RenderWindow.cpp diff --git a/N3888_RefImpl/src/Win32RenderWindow.h b/src/Win32RenderWindow.h similarity index 100% rename from N3888_RefImpl/src/Win32RenderWindow.h rename to src/Win32RenderWindow.h diff --git a/N3888_RefImpl/src/brush.cpp b/src/brush.cpp similarity index 100% rename from N3888_RefImpl/src/brush.cpp rename to src/brush.cpp diff --git a/N3888_RefImpl/src/device.cpp b/src/device.cpp similarity index 100% rename from N3888_RefImpl/src/device.cpp rename to src/device.cpp diff --git a/N3888_RefImpl/src/display_surface-common.cpp b/src/display_surface-common.cpp similarity index 100% rename from N3888_RefImpl/src/display_surface-common.cpp rename to src/display_surface-common.cpp diff --git a/N3888_RefImpl/src/display_surface-win32.cpp b/src/display_surface-win32.cpp similarity index 100% rename from N3888_RefImpl/src/display_surface-win32.cpp rename to src/display_surface-win32.cpp diff --git a/N3888_RefImpl/src/display_surface-xlib.cpp b/src/display_surface-xlib.cpp similarity index 100% rename from N3888_RefImpl/src/display_surface-xlib.cpp rename to src/display_surface-xlib.cpp diff --git a/N3888_RefImpl/src/entrypoint-gtk.cpp b/src/entrypoint-gtk.cpp similarity index 100% rename from N3888_RefImpl/src/entrypoint-gtk.cpp rename to src/entrypoint-gtk.cpp diff --git a/N3888_RefImpl/src/entrypoint-win32.cpp b/src/entrypoint-win32.cpp similarity index 100% rename from N3888_RefImpl/src/entrypoint-win32.cpp rename to src/entrypoint-win32.cpp diff --git a/N3888_RefImpl/src/entrypoint-win32.h b/src/entrypoint-win32.h similarity index 100% rename from N3888_RefImpl/src/entrypoint-win32.h rename to src/entrypoint-win32.h diff --git a/N3888_RefImpl/src/entrypoint.cpp b/src/entrypoint.cpp similarity index 100% rename from N3888_RefImpl/src/entrypoint.cpp rename to src/entrypoint.cpp diff --git a/N3888_RefImpl/src/font_extents.cpp b/src/font_extents.cpp similarity index 100% rename from N3888_RefImpl/src/font_extents.cpp rename to src/font_extents.cpp diff --git a/N3888_RefImpl/src/font_face.cpp b/src/font_face.cpp similarity index 100% rename from N3888_RefImpl/src/font_face.cpp rename to src/font_face.cpp diff --git a/N3888_RefImpl/src/font_options.cpp b/src/font_options.cpp similarity index 100% rename from N3888_RefImpl/src/font_options.cpp rename to src/font_options.cpp diff --git a/N3888_RefImpl/src/image_surface.cpp b/src/image_surface.cpp similarity index 100% rename from N3888_RefImpl/src/image_surface.cpp rename to src/image_surface.cpp diff --git a/N3888_RefImpl/src/io2d.h b/src/io2d.h similarity index 100% rename from N3888_RefImpl/src/io2d.h rename to src/io2d.h diff --git a/N3888_RefImpl/src/io2d_error_category.cpp b/src/io2d_error_category.cpp similarity index 100% rename from N3888_RefImpl/src/io2d_error_category.cpp rename to src/io2d_error_category.cpp diff --git a/N3888_RefImpl/src/linear_brush_factory.cpp b/src/linear_brush_factory.cpp similarity index 100% rename from N3888_RefImpl/src/linear_brush_factory.cpp rename to src/linear_brush_factory.cpp diff --git a/N3888_RefImpl/src/mapped_surface.cpp b/src/mapped_surface.cpp similarity index 100% rename from N3888_RefImpl/src/mapped_surface.cpp rename to src/mapped_surface.cpp diff --git a/N3888_RefImpl/src/matrix_2d.cpp b/src/matrix_2d.cpp similarity index 100% rename from N3888_RefImpl/src/matrix_2d.cpp rename to src/matrix_2d.cpp diff --git a/N3888_RefImpl/src/mesh_brush_factory.cpp b/src/mesh_brush_factory.cpp similarity index 100% rename from N3888_RefImpl/src/mesh_brush_factory.cpp rename to src/mesh_brush_factory.cpp diff --git a/N3888_RefImpl/src/path.cpp b/src/path.cpp similarity index 100% rename from N3888_RefImpl/src/path.cpp rename to src/path.cpp diff --git a/N3888_RefImpl/src/path_data.cpp b/src/path_data.cpp similarity index 100% rename from N3888_RefImpl/src/path_data.cpp rename to src/path_data.cpp diff --git a/N3888_RefImpl/src/path_data_item.cpp b/src/path_data_item.cpp similarity index 100% rename from N3888_RefImpl/src/path_data_item.cpp rename to src/path_data_item.cpp diff --git a/N3888_RefImpl/src/path_factory.cpp b/src/path_factory.cpp similarity index 100% rename from N3888_RefImpl/src/path_factory.cpp rename to src/path_factory.cpp diff --git a/N3888_RefImpl/src/radial_brush_factory.cpp b/src/radial_brush_factory.cpp similarity index 100% rename from N3888_RefImpl/src/radial_brush_factory.cpp rename to src/radial_brush_factory.cpp diff --git a/N3888_RefImpl/src/rectangle.cpp b/src/rectangle.cpp similarity index 100% rename from N3888_RefImpl/src/rectangle.cpp rename to src/rectangle.cpp diff --git a/N3888_RefImpl/src/refimpl-resources.c b/src/refimpl-resources.c similarity index 100% rename from N3888_RefImpl/src/refimpl-resources.c rename to src/refimpl-resources.c diff --git a/N3888_RefImpl/src/refimpl-resources.h b/src/refimpl-resources.h similarity index 100% rename from N3888_RefImpl/src/refimpl-resources.h rename to src/refimpl-resources.h diff --git a/N3888_RefImpl/src/refimpl.gresource.xml b/src/refimpl.gresource.xml similarity index 100% rename from N3888_RefImpl/src/refimpl.gresource.xml rename to src/refimpl.gresource.xml diff --git a/N3888_RefImpl/src/refimpl_about_window.ui b/src/refimpl_about_window.ui similarity index 100% rename from N3888_RefImpl/src/refimpl_about_window.ui rename to src/refimpl_about_window.ui diff --git a/N3888_RefImpl/src/refimpl_menu.ui b/src/refimpl_menu.ui similarity index 100% rename from N3888_RefImpl/src/refimpl_menu.ui rename to src/refimpl_menu.ui diff --git a/N3888_RefImpl/src/refimpl_window.ui b/src/refimpl_window.ui similarity index 100% rename from N3888_RefImpl/src/refimpl_window.ui rename to src/refimpl_window.ui diff --git a/N3888_RefImpl/src/resource.h b/src/resource.h similarity index 100% rename from N3888_RefImpl/src/resource.h rename to src/resource.h diff --git a/N3888_RefImpl/src/rgba_color.cpp b/src/rgba_color.cpp similarity index 100% rename from N3888_RefImpl/src/rgba_color.cpp rename to src/rgba_color.cpp diff --git a/N3888_RefImpl/src/sample_draw.cpp b/src/sample_draw.cpp similarity index 100% rename from N3888_RefImpl/src/sample_draw.cpp rename to src/sample_draw.cpp diff --git a/N3888_RefImpl/src/sample_draw.h b/src/sample_draw.h similarity index 100% rename from N3888_RefImpl/src/sample_draw.h rename to src/sample_draw.h diff --git a/N3888_RefImpl/src/simple_font_face.cpp b/src/simple_font_face.cpp similarity index 100% rename from N3888_RefImpl/src/simple_font_face.cpp rename to src/simple_font_face.cpp diff --git a/N3888_RefImpl/src/small.ico b/src/small.ico similarity index 100% rename from N3888_RefImpl/src/small.ico rename to src/small.ico diff --git a/N3888_RefImpl/src/solid_color_brush_factory.cpp b/src/solid_color_brush_factory.cpp similarity index 100% rename from N3888_RefImpl/src/solid_color_brush_factory.cpp rename to src/solid_color_brush_factory.cpp diff --git a/N3888_RefImpl/src/standalone_functions.cpp b/src/standalone_functions.cpp similarity index 100% rename from N3888_RefImpl/src/standalone_functions.cpp rename to src/standalone_functions.cpp diff --git a/N3888_RefImpl/src/surface.cpp b/src/surface.cpp similarity index 100% rename from N3888_RefImpl/src/surface.cpp rename to src/surface.cpp diff --git a/N3888_RefImpl/src/surface_brush_factory.cpp b/src/surface_brush_factory.cpp similarity index 100% rename from N3888_RefImpl/src/surface_brush_factory.cpp rename to src/surface_brush_factory.cpp diff --git a/N3888_RefImpl/src/targetver.h b/src/targetver.h similarity index 100% rename from N3888_RefImpl/src/targetver.h rename to src/targetver.h diff --git a/N3888_RefImpl/src/test_renderer.h b/src/test_renderer.h similarity index 100% rename from N3888_RefImpl/src/test_renderer.h rename to src/test_renderer.h diff --git a/N3888_RefImpl/src/test_renderer_fill.cpp b/src/test_renderer_fill.cpp similarity index 100% rename from N3888_RefImpl/src/test_renderer_fill.cpp rename to src/test_renderer_fill.cpp diff --git a/N3888_RefImpl/src/text_extents.cpp b/src/text_extents.cpp similarity index 100% rename from N3888_RefImpl/src/text_extents.cpp rename to src/text_extents.cpp diff --git a/N3888_RefImpl/src/throw_helpers.h b/src/throw_helpers.h similarity index 100% rename from N3888_RefImpl/src/throw_helpers.h rename to src/throw_helpers.h diff --git a/N3888_RefImpl/src/vector_2d.cpp b/src/vector_2d.cpp similarity index 100% rename from N3888_RefImpl/src/vector_2d.cpp rename to src/vector_2d.cpp diff --git a/N3888_RefImpl/src/win32/DLL build instructions.txt b/src/win32/DLL build instructions.txt similarity index 100% rename from N3888_RefImpl/src/win32/DLL build instructions.txt rename to src/win32/DLL build instructions.txt diff --git a/N3888_RefImpl/src/win32/DLLs/x64/Debug/cairo.dll b/src/win32/DLLs/x64/Debug/cairo.dll similarity index 100% rename from N3888_RefImpl/src/win32/DLLs/x64/Debug/cairo.dll rename to src/win32/DLLs/x64/Debug/cairo.dll diff --git a/N3888_RefImpl/src/win32/DLLs/x64/Debug/cairo.pdb b/src/win32/DLLs/x64/Debug/cairo.pdb similarity index 100% rename from N3888_RefImpl/src/win32/DLLs/x64/Debug/cairo.pdb rename to src/win32/DLLs/x64/Debug/cairo.pdb diff --git a/N3888_RefImpl/src/win32/DLLs/x64/Debug/zlib1.dll b/src/win32/DLLs/x64/Debug/zlib1.dll similarity index 100% rename from N3888_RefImpl/src/win32/DLLs/x64/Debug/zlib1.dll rename to src/win32/DLLs/x64/Debug/zlib1.dll diff --git a/N3888_RefImpl/src/win32/DLLs/x64/Debug/zlib1.pdb b/src/win32/DLLs/x64/Debug/zlib1.pdb similarity index 100% rename from N3888_RefImpl/src/win32/DLLs/x64/Debug/zlib1.pdb rename to src/win32/DLLs/x64/Debug/zlib1.pdb diff --git a/N3888_RefImpl/src/win32/DLLs/x64/Release/cairo.dll b/src/win32/DLLs/x64/Release/cairo.dll similarity index 100% rename from N3888_RefImpl/src/win32/DLLs/x64/Release/cairo.dll rename to src/win32/DLLs/x64/Release/cairo.dll diff --git a/N3888_RefImpl/src/win32/DLLs/x64/Release/zlib1.dll b/src/win32/DLLs/x64/Release/zlib1.dll similarity index 100% rename from N3888_RefImpl/src/win32/DLLs/x64/Release/zlib1.dll rename to src/win32/DLLs/x64/Release/zlib1.dll diff --git a/N3888_RefImpl/Debug_Clang_C2/cairo.dll b/src/win32/DLLs/x86/Debug/cairo.dll similarity index 100% rename from N3888_RefImpl/Debug_Clang_C2/cairo.dll rename to src/win32/DLLs/x86/Debug/cairo.dll diff --git a/N3888_RefImpl/src/win32/DLLs/x86/Debug/cairo.pdb b/src/win32/DLLs/x86/Debug/cairo.pdb similarity index 100% rename from N3888_RefImpl/src/win32/DLLs/x86/Debug/cairo.pdb rename to src/win32/DLLs/x86/Debug/cairo.pdb diff --git a/N3888_RefImpl/Debug_Clang_C2/zlib1.dll b/src/win32/DLLs/x86/Debug/zlib1.dll similarity index 100% rename from N3888_RefImpl/Debug_Clang_C2/zlib1.dll rename to src/win32/DLLs/x86/Debug/zlib1.dll diff --git a/N3888_RefImpl/src/win32/DLLs/x86/Debug/zlib1.pdb b/src/win32/DLLs/x86/Debug/zlib1.pdb similarity index 100% rename from N3888_RefImpl/src/win32/DLLs/x86/Debug/zlib1.pdb rename to src/win32/DLLs/x86/Debug/zlib1.pdb diff --git a/N3888_RefImpl/src/win32/DLLs/x86/Debug/cairo.dll b/src/win32/DLLs/x86/Debug_Clang_C2/cairo.dll similarity index 100% rename from N3888_RefImpl/src/win32/DLLs/x86/Debug/cairo.dll rename to src/win32/DLLs/x86/Debug_Clang_C2/cairo.dll diff --git a/N3888_RefImpl/src/win32/DLLs/x86/Debug/zlib1.dll b/src/win32/DLLs/x86/Debug_Clang_C2/zlib1.dll similarity index 100% rename from N3888_RefImpl/src/win32/DLLs/x86/Debug/zlib1.dll rename to src/win32/DLLs/x86/Debug_Clang_C2/zlib1.dll diff --git a/N3888_RefImpl/src/win32/DLLs/x86/Release/cairo.dll b/src/win32/DLLs/x86/Release/cairo.dll similarity index 100% rename from N3888_RefImpl/src/win32/DLLs/x86/Release/cairo.dll rename to src/win32/DLLs/x86/Release/cairo.dll diff --git a/N3888_RefImpl/src/win32/DLLs/x86/Debug_Clang_C2/zlib1.dll b/src/win32/DLLs/x86/Release/zlib1.dll similarity index 100% rename from N3888_RefImpl/src/win32/DLLs/x86/Debug_Clang_C2/zlib1.dll rename to src/win32/DLLs/x86/Release/zlib1.dll diff --git a/N3888_RefImpl/src/win32/DLLs/x86/Release_Clang_C2/cairo.dll b/src/win32/DLLs/x86/Release_Clang_C2/cairo.dll similarity index 100% rename from N3888_RefImpl/src/win32/DLLs/x86/Release_Clang_C2/cairo.dll rename to src/win32/DLLs/x86/Release_Clang_C2/cairo.dll diff --git a/N3888_RefImpl/src/win32/DLLs/x86/Release/zlib1.dll b/src/win32/DLLs/x86/Release_Clang_C2/zlib1.dll similarity index 100% rename from N3888_RefImpl/src/win32/DLLs/x86/Release/zlib1.dll rename to src/win32/DLLs/x86/Release_Clang_C2/zlib1.dll diff --git a/cairo/src/cairo-deprecated.h b/src/win32/include/cairo-deprecated.h similarity index 100% rename from cairo/src/cairo-deprecated.h rename to src/win32/include/cairo-deprecated.h diff --git a/cairo/src/cairo-features.h b/src/win32/include/cairo-features.h similarity index 100% rename from cairo/src/cairo-features.h rename to src/win32/include/cairo-features.h diff --git a/cairo/src/cairo-pdf.h b/src/win32/include/cairo-pdf.h similarity index 100% rename from cairo/src/cairo-pdf.h rename to src/win32/include/cairo-pdf.h diff --git a/cairo/src/cairo-ps.h b/src/win32/include/cairo-ps.h similarity index 100% rename from cairo/src/cairo-ps.h rename to src/win32/include/cairo-ps.h diff --git a/cairo/src/cairo-script.h b/src/win32/include/cairo-script.h similarity index 100% rename from cairo/src/cairo-script.h rename to src/win32/include/cairo-script.h diff --git a/cairo/src/cairo-svg.h b/src/win32/include/cairo-svg.h similarity index 100% rename from cairo/src/cairo-svg.h rename to src/win32/include/cairo-svg.h diff --git a/cairo/cairo-version.h b/src/win32/include/cairo-version.h similarity index 100% rename from cairo/cairo-version.h rename to src/win32/include/cairo-version.h diff --git a/cairo/src/cairo-win32.h b/src/win32/include/cairo-win32.h similarity index 100% rename from cairo/src/cairo-win32.h rename to src/win32/include/cairo-win32.h diff --git a/cairo/src/cairo.h b/src/win32/include/cairo.h similarity index 100% rename from cairo/src/cairo.h rename to src/win32/include/cairo.h diff --git a/N3888_RefImpl/src/win32/lib/x64/Debug/cairo.lib b/src/win32/lib/x64/Debug/cairo.lib similarity index 100% rename from N3888_RefImpl/src/win32/lib/x64/Debug/cairo.lib rename to src/win32/lib/x64/Debug/cairo.lib diff --git a/N3888_RefImpl/src/win32/lib/x64/Debug/zlib.lib b/src/win32/lib/x64/Debug/zlib.lib similarity index 100% rename from N3888_RefImpl/src/win32/lib/x64/Debug/zlib.lib rename to src/win32/lib/x64/Debug/zlib.lib diff --git a/N3888_RefImpl/src/win32/lib/x64/Release/cairo.lib b/src/win32/lib/x64/Release/cairo.lib similarity index 100% rename from N3888_RefImpl/src/win32/lib/x64/Release/cairo.lib rename to src/win32/lib/x64/Release/cairo.lib diff --git a/N3888_RefImpl/src/win32/lib/x64/Release/zlib.lib b/src/win32/lib/x64/Release/zlib.lib similarity index 100% rename from N3888_RefImpl/src/win32/lib/x64/Release/zlib.lib rename to src/win32/lib/x64/Release/zlib.lib diff --git a/N3888_RefImpl/src/win32/lib/x86/Debug/cairo.lib b/src/win32/lib/x86/Debug/cairo.lib similarity index 100% rename from N3888_RefImpl/src/win32/lib/x86/Debug/cairo.lib rename to src/win32/lib/x86/Debug/cairo.lib diff --git a/N3888_RefImpl/src/win32/lib/x86/Debug/zlib.lib b/src/win32/lib/x86/Debug/zlib.lib similarity index 100% rename from N3888_RefImpl/src/win32/lib/x86/Debug/zlib.lib rename to src/win32/lib/x86/Debug/zlib.lib diff --git a/N3888_RefImpl/src/win32/lib/x86/Debug_Clang_C2/cairo.lib b/src/win32/lib/x86/Debug_Clang_C2/cairo.lib similarity index 100% rename from N3888_RefImpl/src/win32/lib/x86/Debug_Clang_C2/cairo.lib rename to src/win32/lib/x86/Debug_Clang_C2/cairo.lib diff --git a/N3888_RefImpl/src/win32/lib/x86/Debug_Clang_C2/zlib.lib b/src/win32/lib/x86/Debug_Clang_C2/zlib.lib similarity index 100% rename from N3888_RefImpl/src/win32/lib/x86/Debug_Clang_C2/zlib.lib rename to src/win32/lib/x86/Debug_Clang_C2/zlib.lib diff --git a/N3888_RefImpl/src/win32/lib/x86/Release/cairo.lib b/src/win32/lib/x86/Release/cairo.lib similarity index 100% rename from N3888_RefImpl/src/win32/lib/x86/Release/cairo.lib rename to src/win32/lib/x86/Release/cairo.lib diff --git a/N3888_RefImpl/src/win32/lib/x86/Release/zlib.lib b/src/win32/lib/x86/Release/zlib.lib similarity index 100% rename from N3888_RefImpl/src/win32/lib/x86/Release/zlib.lib rename to src/win32/lib/x86/Release/zlib.lib diff --git a/N3888_RefImpl/src/win32/lib/x86/Release_Clang_C2/cairo.lib b/src/win32/lib/x86/Release_Clang_C2/cairo.lib similarity index 100% rename from N3888_RefImpl/src/win32/lib/x86/Release_Clang_C2/cairo.lib rename to src/win32/lib/x86/Release_Clang_C2/cairo.lib diff --git a/N3888_RefImpl/src/win32/lib/x86/Release_Clang_C2/zlib.lib b/src/win32/lib/x86/Release_Clang_C2/zlib.lib similarity index 100% rename from N3888_RefImpl/src/win32/lib/x86/Release_Clang_C2/zlib.lib rename to src/win32/lib/x86/Release_Clang_C2/zlib.lib diff --git a/N3888_RefImpl/src/xcairoenumhelpers.h b/src/xcairoenumhelpers.h similarity index 100% rename from N3888_RefImpl/src/xcairoenumhelpers.h rename to src/xcairoenumhelpers.h diff --git a/N3888_RefImpl/src/xio2d.h b/src/xio2d.h similarity index 100% rename from N3888_RefImpl/src/xio2d.h rename to src/xio2d.h diff --git a/N3888_RefImpl/src/xio2dhelpers.h b/src/xio2dhelpers.h similarity index 100% rename from N3888_RefImpl/src/xio2dhelpers.h rename to src/xio2dhelpers.h From 56b513933ffb354699ab5c78435f2ee54a26d000 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Thu, 25 Feb 2016 00:00:22 +0100 Subject: [PATCH 06/30] Moved examples, tests, includes in their own directories --- {src => examples/gtk}/RefImplApp.c | 0 {src => examples/gtk}/RefImplApp.h | 0 {src => examples/gtk}/RefImplDraw.cpp | 0 {src => examples/gtk}/RefImplDraw.h | 0 {src => examples/gtk}/RefImplWindow.c | 0 {src => examples/gtk}/RefImplWindow.h | 0 {src => examples/gtk}/entrypoint-gtk.cpp | 0 {src => examples/gtk}/refimpl-resources.c | 0 {src => examples/gtk}/refimpl-resources.h | 0 {src => examples/gtk}/refimpl.gresource.xml | 0 {src => examples/gtk}/refimpl_about_window.ui | 0 {src => examples/gtk}/refimpl_menu.ui | 0 {src => examples/gtk}/refimpl_window.ui | 0 {src => examples/windows}/Win32RenderWindow.cpp | 0 {src => examples/windows}/Win32RenderWindow.h | 0 {src => examples/windows}/entrypoint-win32.cpp | 0 {src => examples/windows}/entrypoint-win32.h | 0 {src => examples/windows}/resource.h | Bin {src => examples/windows}/targetver.h | 0 {src => include}/io2d.h | 0 {src => include}/throw_helpers.h | 0 {src => include}/xcairoenumhelpers.h | 0 {src => include}/xio2d.h | 0 {src => include}/xio2dhelpers.h | 0 {src => tests/sample-draw}/entrypoint.cpp | 0 {src => tests/sample-draw}/sample_draw.cpp | 0 {src => tests/sample-draw}/sample_draw.h | 0 {src => tests/sample-draw}/test_renderer.h | 0 {src => tests/sample-draw}/test_renderer_fill.cpp | 0 29 files changed, 0 insertions(+), 0 deletions(-) rename {src => examples/gtk}/RefImplApp.c (100%) rename {src => examples/gtk}/RefImplApp.h (100%) rename {src => examples/gtk}/RefImplDraw.cpp (100%) rename {src => examples/gtk}/RefImplDraw.h (100%) rename {src => examples/gtk}/RefImplWindow.c (100%) rename {src => examples/gtk}/RefImplWindow.h (100%) rename {src => examples/gtk}/entrypoint-gtk.cpp (100%) rename {src => examples/gtk}/refimpl-resources.c (100%) rename {src => examples/gtk}/refimpl-resources.h (100%) rename {src => examples/gtk}/refimpl.gresource.xml (100%) rename {src => examples/gtk}/refimpl_about_window.ui (100%) rename {src => examples/gtk}/refimpl_menu.ui (100%) rename {src => examples/gtk}/refimpl_window.ui (100%) rename {src => examples/windows}/Win32RenderWindow.cpp (100%) rename {src => examples/windows}/Win32RenderWindow.h (100%) rename {src => examples/windows}/entrypoint-win32.cpp (100%) rename {src => examples/windows}/entrypoint-win32.h (100%) rename {src => examples/windows}/resource.h (100%) rename {src => examples/windows}/targetver.h (100%) rename {src => include}/io2d.h (100%) rename {src => include}/throw_helpers.h (100%) rename {src => include}/xcairoenumhelpers.h (100%) rename {src => include}/xio2d.h (100%) rename {src => include}/xio2dhelpers.h (100%) rename {src => tests/sample-draw}/entrypoint.cpp (100%) rename {src => tests/sample-draw}/sample_draw.cpp (100%) rename {src => tests/sample-draw}/sample_draw.h (100%) rename {src => tests/sample-draw}/test_renderer.h (100%) rename {src => tests/sample-draw}/test_renderer_fill.cpp (100%) diff --git a/src/RefImplApp.c b/examples/gtk/RefImplApp.c similarity index 100% rename from src/RefImplApp.c rename to examples/gtk/RefImplApp.c diff --git a/src/RefImplApp.h b/examples/gtk/RefImplApp.h similarity index 100% rename from src/RefImplApp.h rename to examples/gtk/RefImplApp.h diff --git a/src/RefImplDraw.cpp b/examples/gtk/RefImplDraw.cpp similarity index 100% rename from src/RefImplDraw.cpp rename to examples/gtk/RefImplDraw.cpp diff --git a/src/RefImplDraw.h b/examples/gtk/RefImplDraw.h similarity index 100% rename from src/RefImplDraw.h rename to examples/gtk/RefImplDraw.h diff --git a/src/RefImplWindow.c b/examples/gtk/RefImplWindow.c similarity index 100% rename from src/RefImplWindow.c rename to examples/gtk/RefImplWindow.c diff --git a/src/RefImplWindow.h b/examples/gtk/RefImplWindow.h similarity index 100% rename from src/RefImplWindow.h rename to examples/gtk/RefImplWindow.h diff --git a/src/entrypoint-gtk.cpp b/examples/gtk/entrypoint-gtk.cpp similarity index 100% rename from src/entrypoint-gtk.cpp rename to examples/gtk/entrypoint-gtk.cpp diff --git a/src/refimpl-resources.c b/examples/gtk/refimpl-resources.c similarity index 100% rename from src/refimpl-resources.c rename to examples/gtk/refimpl-resources.c diff --git a/src/refimpl-resources.h b/examples/gtk/refimpl-resources.h similarity index 100% rename from src/refimpl-resources.h rename to examples/gtk/refimpl-resources.h diff --git a/src/refimpl.gresource.xml b/examples/gtk/refimpl.gresource.xml similarity index 100% rename from src/refimpl.gresource.xml rename to examples/gtk/refimpl.gresource.xml diff --git a/src/refimpl_about_window.ui b/examples/gtk/refimpl_about_window.ui similarity index 100% rename from src/refimpl_about_window.ui rename to examples/gtk/refimpl_about_window.ui diff --git a/src/refimpl_menu.ui b/examples/gtk/refimpl_menu.ui similarity index 100% rename from src/refimpl_menu.ui rename to examples/gtk/refimpl_menu.ui diff --git a/src/refimpl_window.ui b/examples/gtk/refimpl_window.ui similarity index 100% rename from src/refimpl_window.ui rename to examples/gtk/refimpl_window.ui diff --git a/src/Win32RenderWindow.cpp b/examples/windows/Win32RenderWindow.cpp similarity index 100% rename from src/Win32RenderWindow.cpp rename to examples/windows/Win32RenderWindow.cpp diff --git a/src/Win32RenderWindow.h b/examples/windows/Win32RenderWindow.h similarity index 100% rename from src/Win32RenderWindow.h rename to examples/windows/Win32RenderWindow.h diff --git a/src/entrypoint-win32.cpp b/examples/windows/entrypoint-win32.cpp similarity index 100% rename from src/entrypoint-win32.cpp rename to examples/windows/entrypoint-win32.cpp diff --git a/src/entrypoint-win32.h b/examples/windows/entrypoint-win32.h similarity index 100% rename from src/entrypoint-win32.h rename to examples/windows/entrypoint-win32.h diff --git a/src/resource.h b/examples/windows/resource.h similarity index 100% rename from src/resource.h rename to examples/windows/resource.h diff --git a/src/targetver.h b/examples/windows/targetver.h similarity index 100% rename from src/targetver.h rename to examples/windows/targetver.h diff --git a/src/io2d.h b/include/io2d.h similarity index 100% rename from src/io2d.h rename to include/io2d.h diff --git a/src/throw_helpers.h b/include/throw_helpers.h similarity index 100% rename from src/throw_helpers.h rename to include/throw_helpers.h diff --git a/src/xcairoenumhelpers.h b/include/xcairoenumhelpers.h similarity index 100% rename from src/xcairoenumhelpers.h rename to include/xcairoenumhelpers.h diff --git a/src/xio2d.h b/include/xio2d.h similarity index 100% rename from src/xio2d.h rename to include/xio2d.h diff --git a/src/xio2dhelpers.h b/include/xio2dhelpers.h similarity index 100% rename from src/xio2dhelpers.h rename to include/xio2dhelpers.h diff --git a/src/entrypoint.cpp b/tests/sample-draw/entrypoint.cpp similarity index 100% rename from src/entrypoint.cpp rename to tests/sample-draw/entrypoint.cpp diff --git a/src/sample_draw.cpp b/tests/sample-draw/sample_draw.cpp similarity index 100% rename from src/sample_draw.cpp rename to tests/sample-draw/sample_draw.cpp diff --git a/src/sample_draw.h b/tests/sample-draw/sample_draw.h similarity index 100% rename from src/sample_draw.h rename to tests/sample-draw/sample_draw.h diff --git a/src/test_renderer.h b/tests/sample-draw/test_renderer.h similarity index 100% rename from src/test_renderer.h rename to tests/sample-draw/test_renderer.h diff --git a/src/test_renderer_fill.cpp b/tests/sample-draw/test_renderer_fill.cpp similarity index 100% rename from src/test_renderer_fill.cpp rename to tests/sample-draw/test_renderer_fill.cpp From 041fb6e58a60810c5f8af108dc39b5e94322ae89 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Thu, 25 Feb 2016 00:21:01 +0100 Subject: [PATCH 07/30] More moving around --- {include => io2d/include}/io2d.h | 0 {include => io2d/include}/throw_helpers.h | 0 {include => io2d/include}/xcairoenumhelpers.h | 0 {include => io2d/include}/xio2d.h | 0 {include => io2d/include}/xio2dhelpers.h | 0 {src => io2d/src}/.gitignore | 0 {3rd-party => io2d/src/3rd-party}/cairo/.gitignore | 0 {3rd-party => io2d/src/3rd-party}/cairo/AUTHORS | 0 .../src/3rd-party}/cairo/BIBLIOGRAPHY | 0 {3rd-party => io2d/src/3rd-party}/cairo/BUGS | 0 .../src/3rd-party}/cairo/CODING_STYLE | 0 {3rd-party => io2d/src/3rd-party}/cairo/COPYING | 0 .../src/3rd-party}/cairo/COPYING-LGPL-2.1 | 0 .../src/3rd-party}/cairo/COPYING-MPL-1.1 | 0 {3rd-party => io2d/src/3rd-party}/cairo/HACKING | 0 {3rd-party => io2d/src/3rd-party}/cairo/INSTALL | 0 .../src/3rd-party}/cairo/KNOWN_ISSUES | 0 {3rd-party => io2d/src/3rd-party}/cairo/Makefile.am | 0 .../src/3rd-party}/cairo/Makefile.win32 | 0 {3rd-party => io2d/src/3rd-party}/cairo/NEWS | 0 .../src/3rd-party}/cairo/PORTING_GUIDE | 0 {3rd-party => io2d/src/3rd-party}/cairo/README | 0 .../src/3rd-party}/cairo/README.win32 | 0 {3rd-party => io2d/src/3rd-party}/cairo/RELEASING | 0 .../src/3rd-party}/cairo/acinclude.m4 | 0 {3rd-party => io2d/src/3rd-party}/cairo/autogen.sh | 0 .../src/3rd-party}/cairo/boilerplate/.gitignore | 0 .../src/3rd-party}/cairo/boilerplate/Makefile.am | 0 .../3rd-party}/cairo/boilerplate/Makefile.sources | 0 .../src/3rd-party}/cairo/boilerplate/Makefile.win32 | 0 .../cairo/boilerplate/Makefile.win32.features | 0 .../src/3rd-party}/cairo/boilerplate/README | 0 .../cairo/boilerplate/cairo-boilerplate-beos.cpp | 0 .../cairo/boilerplate/cairo-boilerplate-cogl.c | 0 .../cairo/boilerplate/cairo-boilerplate-directfb.c | 0 .../cairo/boilerplate/cairo-boilerplate-drm.c | 0 .../cairo/boilerplate/cairo-boilerplate-egl.c | 0 .../cairo/boilerplate/cairo-boilerplate-getopt.c | 0 .../cairo/boilerplate/cairo-boilerplate-getopt.h | 0 .../cairo/boilerplate/cairo-boilerplate-glx.c | 0 .../cairo/boilerplate/cairo-boilerplate-pdf.c | 0 .../cairo/boilerplate/cairo-boilerplate-private.h | 0 .../cairo/boilerplate/cairo-boilerplate-ps.c | 0 .../cairo/boilerplate/cairo-boilerplate-qt.cpp | 0 .../cairo/boilerplate/cairo-boilerplate-quartz.c | 0 .../boilerplate/cairo-boilerplate-scaled-font.h | 0 .../cairo/boilerplate/cairo-boilerplate-script.c | 0 .../cairo/boilerplate/cairo-boilerplate-skia.c | 0 .../cairo/boilerplate/cairo-boilerplate-svg.c | 0 .../cairo/boilerplate/cairo-boilerplate-system.c | 0 .../cairo/boilerplate/cairo-boilerplate-system.h | 0 .../boilerplate/cairo-boilerplate-test-surfaces.c | 0 .../cairo/boilerplate/cairo-boilerplate-vg.c | 0 .../cairo/boilerplate/cairo-boilerplate-wgl.c | 0 .../boilerplate/cairo-boilerplate-win32-printing.c | 0 .../cairo/boilerplate/cairo-boilerplate-win32.c | 0 .../cairo/boilerplate/cairo-boilerplate-xcb.c | 0 .../cairo/boilerplate/cairo-boilerplate-xlib.c | 0 .../cairo/boilerplate/cairo-boilerplate-xlib.h | 0 .../cairo/boilerplate/cairo-boilerplate.c | 0 .../cairo/boilerplate/cairo-boilerplate.h | 0 .../src/3rd-party}/cairo/boilerplate/check-link.c | 0 .../make-cairo-boilerplate-constructors.sh | 0 .../src/3rd-party}/cairo/build/.gitignore | 0 .../src/3rd-party}/cairo/build/Makefile.am.analysis | 0 .../3rd-party}/cairo/build/Makefile.am.changelog | 0 .../src/3rd-party}/cairo/build/Makefile.am.common | 0 .../src/3rd-party}/cairo/build/Makefile.am.gtk-doc | 0 .../3rd-party}/cairo/build/Makefile.am.releasing | 0 .../3rd-party}/cairo/build/Makefile.win32.common | 0 .../3rd-party}/cairo/build/Makefile.win32.features | 0 .../cairo/build/Makefile.win32.features-h | 0 .../3rd-party}/cairo/build/Makefile.win32.inform | 0 .../src/3rd-party}/cairo/build/aclocal.cairo.m4 | 0 .../src/3rd-party}/cairo/build/aclocal.compare.m4 | 0 .../src/3rd-party}/cairo/build/aclocal.enable.m4 | 0 .../src/3rd-party}/cairo/build/aclocal.float.m4 | 0 .../src/3rd-party}/cairo/build/aclocal.gtk-doc.m4 | 0 .../src/3rd-party}/cairo/build/aclocal.makefile.m4 | 0 .../src/3rd-party}/cairo/build/aclocal.pkg.m4 | 0 .../3rd-party}/cairo/build/configure.ac.analysis | 0 .../3rd-party}/cairo/build/configure.ac.features | 0 .../3rd-party}/cairo/build/configure.ac.noversion | 0 .../src/3rd-party}/cairo/build/configure.ac.pthread | 0 .../src/3rd-party}/cairo/build/configure.ac.system | 0 .../src/3rd-party}/cairo/build/configure.ac.tools | 0 .../src/3rd-party}/cairo/build/configure.ac.version | 0 .../3rd-party}/cairo/build/configure.ac.warnings | 0 .../src/3rd-party}/cairo/cairo-version.h | 0 .../src/3rd-party}/cairo/configure.ac | 0 .../src/3rd-party}/cairo/doc/.gitignore | 0 .../src/3rd-party}/cairo/doc/Makefile.am | 0 .../src/3rd-party}/cairo/doc/public/.gitignore | 0 .../src/3rd-party}/cairo/doc/public/Makefile.am | 0 .../src/3rd-party}/cairo/doc/public/README | 0 .../src/3rd-party}/cairo/doc/public/cairo-docs.xml | 0 .../3rd-party}/cairo/doc/public/cairo-overrides.txt | 0 .../3rd-party}/cairo/doc/public/cairo-sections.txt | 0 .../src/3rd-party}/cairo/doc/public/cairo.types | 0 .../cairo/doc/public/check-doc-coverage.sh | 0 .../3rd-party}/cairo/doc/public/check-doc-syntax.sh | 0 .../cairo/doc/public/language-bindings.xml | 0 .../3rd-party}/cairo/doc/tutorial/slides/.gitignore | 0 .../3rd-party}/cairo/doc/tutorial/slides/Makefile | 0 .../cairo/doc/tutorial/slides/cairo-blank.svg | 0 .../cairo/doc/tutorial/slides/cairo-code.svg | 0 .../doc/tutorial/slides/cairo-large-content.svg | 0 .../cairo/doc/tutorial/slides/cairo-separator.svg | 0 .../cairo/doc/tutorial/slides/cairo-title.svg | 0 .../3rd-party}/cairo/doc/tutorial/slides/cairo.svg | 0 .../doc/tutorial/slides/circle-cairo-large.png | Bin .../cairo/doc/tutorial/slides/circle-cairo.png | Bin .../cairo/doc/tutorial/slides/circle-ooo-large.png | Bin .../cairo/doc/tutorial/slides/circle-ooo.png | Bin .../doc/tutorial/slides/expander-fuzzy-large.png | Bin .../cairo/doc/tutorial/slides/expander-fuzzy.png | Bin .../doc/tutorial/slides/expander-sharp-large.png | Bin .../cairo/doc/tutorial/slides/expander-sharp.png | Bin .../cairo/doc/tutorial/slides/fuzzies.svg | 0 .../cairo/doc/tutorial/slides/jaggies.svg | 0 .../cairo/doc/tutorial/slides/rendering-model.png | Bin .../cairo/doc/tutorial/slides/tutorial.xml | 0 .../3rd-party}/cairo/doc/tutorial/src/.gitignore | 0 .../src/3rd-party}/cairo/doc/tutorial/src/Makefile | 0 .../src/3rd-party}/cairo/doc/tutorial/src/README | 0 .../src/3rd-party}/cairo/doc/tutorial/src/circle.c | 0 .../doc/tutorial/src/include/cairo-tutorial-gtk.h | 0 .../doc/tutorial/src/include/cairo-tutorial-pdf.h | 0 .../doc/tutorial/src/include/cairo-tutorial-png.h | 0 .../doc/tutorial/src/include/cairo-tutorial-xlib.h | 0 .../cairo/doc/tutorial/src/include/cairo-tutorial.h | 0 .../src/3rd-party}/cairo/doc/tutorial/src/lca.c | 0 .../3rd-party}/cairo/doc/tutorial/src/singular.c | 0 .../src/3rd-party}/cairo/doc/tutorial/src/twin.c | 0 .../src/3rd-party}/cairo/perf/.gitignore | 0 .../src/3rd-party}/cairo/perf/COPYING | 0 .../src/3rd-party}/cairo/perf/Makefile.am | 0 .../src/3rd-party}/cairo/perf/Makefile.sources | 0 .../src/3rd-party}/cairo/perf/Makefile.win32 | 0 {3rd-party => io2d/src/3rd-party}/cairo/perf/README | 0 .../src/3rd-party}/cairo/perf/cairo-analyse-trace.c | 0 .../src/3rd-party}/cairo/perf/cairo-perf-chart.c | 0 .../cairo/perf/cairo-perf-compare-backends.c | 0 .../src/3rd-party}/cairo/perf/cairo-perf-diff | 0 .../3rd-party}/cairo/perf/cairo-perf-diff-files.c | 0 .../src/3rd-party}/cairo/perf/cairo-perf-graph | 0 .../3rd-party}/cairo/perf/cairo-perf-graph-files.c | 0 .../3rd-party}/cairo/perf/cairo-perf-graph-widget.c | 0 .../src/3rd-party}/cairo/perf/cairo-perf-graph.h | 0 .../src/3rd-party}/cairo/perf/cairo-perf-micro.c | 0 .../src/3rd-party}/cairo/perf/cairo-perf-print.c | 0 .../src/3rd-party}/cairo/perf/cairo-perf-report.c | 0 .../src/3rd-party}/cairo/perf/cairo-perf-trace.c | 0 .../src/3rd-party}/cairo/perf/cairo-perf.c | 0 .../src/3rd-party}/cairo/perf/cairo-perf.h | 0 .../src/3rd-party}/cairo/perf/cairo-stats.c | 0 .../src/3rd-party}/cairo/perf/cairo-stats.h | 0 .../src/3rd-party}/cairo/perf/dirent-win32.h | 0 .../src/3rd-party}/cairo/perf/make-html.py | 0 .../src/3rd-party}/cairo/perf/micro/Makefile.am | 0 .../3rd-party}/cairo/perf/micro/Makefile.sources | 0 .../src/3rd-party}/cairo/perf/micro/Makefile.win32 | 0 .../src/3rd-party}/cairo/perf/micro/a1-curve.c | 0 .../src/3rd-party}/cairo/perf/micro/a1-line.c | 0 .../src/3rd-party}/cairo/perf/micro/box-outline.c | 0 .../3rd-party}/cairo/perf/micro/cairo-perf-cover.c | 0 .../3rd-party}/cairo/perf/micro/composite-checker.c | 0 .../src/3rd-party}/cairo/perf/micro/curve.c | 0 .../src/3rd-party}/cairo/perf/micro/disjoint.c | 0 .../src/3rd-party}/cairo/perf/micro/dragon.c | 0 .../src/3rd-party}/cairo/perf/micro/fill-clip.c | 0 .../src/3rd-party}/cairo/perf/micro/fill.c | 0 .../src/3rd-party}/cairo/perf/micro/glyphs.c | 0 .../src/3rd-party}/cairo/perf/micro/hash-table.c | 0 .../src/3rd-party}/cairo/perf/micro/hatching.c | 0 .../src/3rd-party}/cairo/perf/micro/intersections.c | 0 .../src/3rd-party}/cairo/perf/micro/line.c | 0 .../3rd-party}/cairo/perf/micro/long-dashed-lines.c | 0 .../src/3rd-party}/cairo/perf/micro/long-lines.c | 0 .../src/3rd-party}/cairo/perf/micro/many-curves.c | 0 .../src/3rd-party}/cairo/perf/micro/many-fills.c | 0 .../src/3rd-party}/cairo/perf/micro/many-strokes.c | 0 .../src/3rd-party}/cairo/perf/micro/mask.c | 0 .../src/3rd-party}/cairo/perf/micro/mosaic.c | 0 .../src/3rd-party}/cairo/perf/micro/mosaic.h | 0 .../3rd-party}/cairo/perf/micro/paint-with-alpha.c | 0 .../src/3rd-party}/cairo/perf/micro/paint.c | 0 .../cairo/perf/micro/pattern_create_radial.c | 0 .../src/3rd-party}/cairo/perf/micro/pixel.c | 0 .../3rd-party}/cairo/perf/micro/pythagoras-tree.c | 0 .../src/3rd-party}/cairo/perf/micro/rectangles.c | 0 .../cairo/perf/micro/rounded-rectangles.c | 0 .../src/3rd-party}/cairo/perf/micro/sierpinski.c | 0 .../src/3rd-party}/cairo/perf/micro/spiral.c | 0 .../src/3rd-party}/cairo/perf/micro/stroke.c | 0 .../src/3rd-party}/cairo/perf/micro/subimage_copy.c | 0 .../src/3rd-party}/cairo/perf/micro/tessellate.c | 0 .../src/3rd-party}/cairo/perf/micro/text.c | 0 .../src/3rd-party}/cairo/perf/micro/tiger.c | 0 .../src/3rd-party}/cairo/perf/micro/twin.c | 0 .../3rd-party}/cairo/perf/micro/unaligned-clip.c | 0 .../src/3rd-party}/cairo/perf/micro/wave.c | 0 .../src/3rd-party}/cairo/perf/micro/wide-fills.c | 0 .../src/3rd-party}/cairo/perf/micro/wide-strokes.c | 0 .../src/3rd-party}/cairo/perf/micro/world-map.c | 0 .../src/3rd-party}/cairo/perf/micro/world-map.h | 0 .../3rd-party}/cairo/perf/micro/zrusin-another.h | 0 .../src/3rd-party}/cairo/perf/micro/zrusin.c | 0 .../src/3rd-party}/cairo/src/.gitignore | 0 .../src/3rd-party}/cairo/src/Makefile.am | 0 .../src/3rd-party}/cairo/src/Makefile.am.analysis | 0 .../src/3rd-party}/cairo/src/Makefile.sources | 0 .../src/3rd-party}/cairo/src/Makefile.win32 | 0 .../3rd-party}/cairo/src/Makefile.win32.features | 0 {3rd-party => io2d/src/3rd-party}/cairo/src/README | 0 .../cairo/src/cairo-analysis-surface-private.h | 0 .../3rd-party}/cairo/src/cairo-analysis-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-arc-private.h | 0 .../src/3rd-party}/cairo/src/cairo-arc.c | 0 .../src/3rd-party}/cairo/src/cairo-array-private.h | 0 .../src/3rd-party}/cairo/src/cairo-array.c | 0 .../src/3rd-party}/cairo/src/cairo-atomic-private.h | 0 .../src/3rd-party}/cairo/src/cairo-atomic.c | 0 .../3rd-party}/cairo/src/cairo-backend-private.h | 0 .../src/3rd-party}/cairo/src/cairo-base64-stream.c | 0 .../src/3rd-party}/cairo/src/cairo-base85-stream.c | 0 .../cairo/src/cairo-bentley-ottmann-rectangular.c | 0 .../cairo/src/cairo-bentley-ottmann-rectilinear.c | 0 .../3rd-party}/cairo/src/cairo-bentley-ottmann.c | 0 .../src/3rd-party}/cairo/src/cairo-beos-surface.cpp | 0 .../src/3rd-party}/cairo/src/cairo-beos.h | 0 .../cairo/src/cairo-botor-scan-converter.c | 0 .../src/3rd-party}/cairo/src/cairo-box-inline.h | 0 .../3rd-party}/cairo/src/cairo-boxes-intersect.c | 0 .../src/3rd-party}/cairo/src/cairo-boxes-private.h | 0 .../src/3rd-party}/cairo/src/cairo-boxes.c | 0 .../src/3rd-party}/cairo/src/cairo-cache-private.h | 0 .../src/3rd-party}/cairo/src/cairo-cache.c | 0 .../src/3rd-party}/cairo/src/cairo-cff-subset.c | 0 .../src/3rd-party}/cairo/src/cairo-clip-boxes.c | 0 .../src/3rd-party}/cairo/src/cairo-clip-inline.h | 0 .../src/3rd-party}/cairo/src/cairo-clip-polygon.c | 0 .../src/3rd-party}/cairo/src/cairo-clip-private.h | 0 .../src/3rd-party}/cairo/src/cairo-clip-region.c | 0 .../src/3rd-party}/cairo/src/cairo-clip-surface.c | 0 .../cairo/src/cairo-clip-tor-scan-converter.c | 0 .../src/3rd-party}/cairo/src/cairo-clip.c | 0 .../cairo/src/cairo-cogl-context-private.h | 0 .../src/3rd-party}/cairo/src/cairo-cogl-context.c | 0 .../cairo/src/cairo-cogl-gradient-private.h | 0 .../src/3rd-party}/cairo/src/cairo-cogl-gradient.c | 0 .../src/3rd-party}/cairo/src/cairo-cogl-private.h | 0 .../src/3rd-party}/cairo/src/cairo-cogl-surface.c | 0 .../3rd-party}/cairo/src/cairo-cogl-utils-private.h | 0 .../src/3rd-party}/cairo/src/cairo-cogl-utils.c | 0 .../src/3rd-party}/cairo/src/cairo-cogl.h | 0 .../src/3rd-party}/cairo/src/cairo-color.c | 0 .../3rd-party}/cairo/src/cairo-combsort-inline.h | 0 .../3rd-party}/cairo/src/cairo-compiler-private.h | 0 .../cairo/src/cairo-composite-rectangles-private.h | 0 .../cairo/src/cairo-composite-rectangles.c | 0 .../3rd-party}/cairo/src/cairo-compositor-private.h | 0 .../src/3rd-party}/cairo/src/cairo-compositor.c | 0 .../src/3rd-party}/cairo/src/cairo-contour-inline.h | 0 .../3rd-party}/cairo/src/cairo-contour-private.h | 0 .../src/3rd-party}/cairo/src/cairo-contour.c | 0 .../src/3rd-party}/cairo/src/cairo-damage-private.h | 0 .../src/3rd-party}/cairo/src/cairo-damage.c | 0 .../src/3rd-party}/cairo/src/cairo-debug.c | 0 .../cairo/src/cairo-default-context-private.h | 0 .../3rd-party}/cairo/src/cairo-default-context.c | 0 .../src/3rd-party}/cairo/src/cairo-deflate-stream.c | 0 .../src/3rd-party}/cairo/src/cairo-deprecated.h | 0 .../src/3rd-party}/cairo/src/cairo-device-private.h | 0 .../src/3rd-party}/cairo/src/cairo-device.c | 0 .../3rd-party}/cairo/src/cairo-directfb-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-directfb.h | 0 .../src/3rd-party}/cairo/src/cairo-drm.h | 0 .../src/3rd-party}/cairo/src/cairo-egl-context.c | 0 .../src/3rd-party}/cairo/src/cairo-error-inline.h | 0 .../src/3rd-party}/cairo/src/cairo-error-private.h | 0 .../src/3rd-party}/cairo/src/cairo-error.c | 0 .../cairo/src/cairo-fallback-compositor.c | 0 .../cairo/src/cairo-features-uninstalled.pc.in | 0 .../src/3rd-party}/cairo/src/cairo-features.h | 0 .../src/3rd-party}/cairo/src/cairo-features.pc.in | 0 .../src/3rd-party}/cairo/src/cairo-fixed-private.h | 0 .../3rd-party}/cairo/src/cairo-fixed-type-private.h | 0 .../src/3rd-party}/cairo/src/cairo-fixed.c | 0 .../cairo/src/cairo-font-face-twin-data.c | 0 .../src/3rd-party}/cairo/src/cairo-font-face-twin.c | 0 .../src/3rd-party}/cairo/src/cairo-font-face.c | 0 .../src/3rd-party}/cairo/src/cairo-font-options.c | 0 .../3rd-party}/cairo/src/cairo-fontconfig-private.h | 0 .../3rd-party}/cairo/src/cairo-freed-pool-private.h | 0 .../src/3rd-party}/cairo/src/cairo-freed-pool.c | 0 .../3rd-party}/cairo/src/cairo-freelist-private.h | 0 .../cairo/src/cairo-freelist-type-private.h | 0 .../src/3rd-party}/cairo/src/cairo-freelist.c | 0 .../src/3rd-party}/cairo/src/cairo-ft-font.c | 0 .../src/3rd-party}/cairo/src/cairo-ft-private.h | 0 .../src/3rd-party}/cairo/src/cairo-ft.h | 0 .../src/3rd-party}/cairo/src/cairo-gl-composite.c | 0 .../src/3rd-party}/cairo/src/cairo-gl-device.c | 0 .../cairo/src/cairo-gl-dispatch-private.h | 0 .../src/3rd-party}/cairo/src/cairo-gl-dispatch.c | 0 .../3rd-party}/cairo/src/cairo-gl-ext-def-private.h | 0 .../src/3rd-party}/cairo/src/cairo-gl-glyphs.c | 0 .../cairo/src/cairo-gl-gradient-private.h | 0 .../src/3rd-party}/cairo/src/cairo-gl-gradient.c | 0 .../src/3rd-party}/cairo/src/cairo-gl-info.c | 0 .../3rd-party}/cairo/src/cairo-gl-msaa-compositor.c | 0 .../src/3rd-party}/cairo/src/cairo-gl-operand.c | 0 .../src/3rd-party}/cairo/src/cairo-gl-private.h | 0 .../src/3rd-party}/cairo/src/cairo-gl-shaders.c | 0 .../src/3rd-party}/cairo/src/cairo-gl-source.c | 0 .../cairo/src/cairo-gl-spans-compositor.c | 0 .../3rd-party}/cairo/src/cairo-gl-surface-legacy.c | 0 .../src/3rd-party}/cairo/src/cairo-gl-surface.c | 0 .../cairo/src/cairo-gl-traps-compositor.c | 0 .../src/3rd-party}/cairo/src/cairo-gl.h | 0 .../src/3rd-party}/cairo/src/cairo-glx-context.c | 0 .../src/3rd-party}/cairo/src/cairo-gstate-private.h | 0 .../src/3rd-party}/cairo/src/cairo-gstate.c | 0 .../src/3rd-party}/cairo/src/cairo-hash-private.h | 0 .../src/3rd-party}/cairo/src/cairo-hash.c | 0 .../src/3rd-party}/cairo/src/cairo-hull.c | 0 .../3rd-party}/cairo/src/cairo-image-compositor.c | 0 .../3rd-party}/cairo/src/cairo-image-info-private.h | 0 .../src/3rd-party}/cairo/src/cairo-image-info.c | 0 .../cairo/src/cairo-image-mask-compositor.c | 0 .../src/3rd-party}/cairo/src/cairo-image-source.c | 0 .../cairo/src/cairo-image-surface-inline.h | 0 .../cairo/src/cairo-image-surface-private.h | 0 .../src/3rd-party}/cairo/src/cairo-image-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-list-inline.h | 0 .../src/3rd-party}/cairo/src/cairo-list-private.h | 0 .../src/3rd-party}/cairo/src/cairo-lzw.c | 0 .../src/3rd-party}/cairo/src/cairo-malloc-private.h | 0 .../3rd-party}/cairo/src/cairo-mask-compositor.c | 0 .../src/3rd-party}/cairo/src/cairo-matrix.c | 0 .../3rd-party}/cairo/src/cairo-mempool-private.h | 0 .../src/3rd-party}/cairo/src/cairo-mempool.c | 0 .../cairo/src/cairo-mesh-pattern-rasterizer.c | 0 .../src/3rd-party}/cairo/src/cairo-misc.c | 0 .../cairo/src/cairo-mono-scan-converter.c | 0 .../3rd-party}/cairo/src/cairo-mutex-impl-private.h | 0 .../3rd-party}/cairo/src/cairo-mutex-list-private.h | 0 .../src/3rd-party}/cairo/src/cairo-mutex-private.h | 0 .../3rd-party}/cairo/src/cairo-mutex-type-private.h | 0 .../src/3rd-party}/cairo/src/cairo-mutex.c | 0 .../src/3rd-party}/cairo/src/cairo-no-compositor.c | 0 .../src/3rd-party}/cairo/src/cairo-observer.c | 0 .../src/3rd-party}/cairo/src/cairo-os2-private.h | 0 .../src/3rd-party}/cairo/src/cairo-os2-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-os2.h | 0 .../cairo/src/cairo-output-stream-private.h | 0 .../src/3rd-party}/cairo/src/cairo-output-stream.c | 0 .../3rd-party}/cairo/src/cairo-paginated-private.h | 0 .../cairo/src/cairo-paginated-surface-private.h | 0 .../3rd-party}/cairo/src/cairo-paginated-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-path-bounds.c | 0 .../src/3rd-party}/cairo/src/cairo-path-fill.c | 0 .../3rd-party}/cairo/src/cairo-path-fixed-private.h | 0 .../src/3rd-party}/cairo/src/cairo-path-fixed.c | 0 .../src/3rd-party}/cairo/src/cairo-path-in-fill.c | 0 .../src/3rd-party}/cairo/src/cairo-path-private.h | 0 .../3rd-party}/cairo/src/cairo-path-stroke-boxes.c | 0 .../cairo/src/cairo-path-stroke-polygon.c | 0 .../3rd-party}/cairo/src/cairo-path-stroke-traps.c | 0 .../cairo/src/cairo-path-stroke-tristrip.c | 0 .../src/3rd-party}/cairo/src/cairo-path-stroke.c | 0 .../src/3rd-party}/cairo/src/cairo-path.c | 0 .../src/3rd-party}/cairo/src/cairo-pattern-inline.h | 0 .../3rd-party}/cairo/src/cairo-pattern-private.h | 0 .../src/3rd-party}/cairo/src/cairo-pattern.c | 0 .../cairo/src/cairo-pdf-operators-private.h | 0 .../src/3rd-party}/cairo/src/cairo-pdf-operators.c | 0 .../cairo/src/cairo-pdf-shading-private.h | 0 .../src/3rd-party}/cairo/src/cairo-pdf-shading.c | 0 .../cairo/src/cairo-pdf-surface-private.h | 0 .../src/3rd-party}/cairo/src/cairo-pdf-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-pdf.h | 0 .../src/3rd-party}/cairo/src/cairo-pen.c | 0 .../src/3rd-party}/cairo/src/cairo-pixman-private.h | 0 .../src/3rd-party}/cairo/src/cairo-png.c | 0 .../3rd-party}/cairo/src/cairo-polygon-intersect.c | 0 .../src/3rd-party}/cairo/src/cairo-polygon-reduce.c | 0 .../src/3rd-party}/cairo/src/cairo-polygon.c | 0 .../src/3rd-party}/cairo/src/cairo-private.h | 0 .../3rd-party}/cairo/src/cairo-ps-surface-private.h | 0 .../src/3rd-party}/cairo/src/cairo-ps-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-ps.h | 0 .../src/3rd-party}/cairo/src/cairo-qt-surface.cpp | 0 .../src/3rd-party}/cairo/src/cairo-qt.h | 0 .../src/3rd-party}/cairo/src/cairo-quartz-font.c | 0 .../cairo/src/cairo-quartz-image-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-quartz-image.h | 0 .../src/3rd-party}/cairo/src/cairo-quartz-private.h | 0 .../src/3rd-party}/cairo/src/cairo-quartz-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-quartz.h | 0 .../cairo/src/cairo-raster-source-pattern.c | 0 .../cairo/src/cairo-recording-surface-inline.h | 0 .../cairo/src/cairo-recording-surface-private.h | 0 .../3rd-party}/cairo/src/cairo-recording-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-rectangle.c | 0 .../cairo/src/cairo-rectangular-scan-converter.c | 0 .../cairo/src/cairo-reference-count-private.h | 0 .../src/3rd-party}/cairo/src/cairo-region-private.h | 0 .../src/3rd-party}/cairo/src/cairo-region.c | 0 .../src/3rd-party}/cairo/src/cairo-rtree-private.h | 0 .../src/3rd-party}/cairo/src/cairo-rtree.c | 0 .../cairo/src/cairo-scaled-font-private.h | 0 .../cairo/src/cairo-scaled-font-subsets-private.h | 0 .../cairo/src/cairo-scaled-font-subsets.c | 0 .../src/3rd-party}/cairo/src/cairo-scaled-font.c | 0 .../src/3rd-party}/cairo/src/cairo-script-private.h | 0 .../src/3rd-party}/cairo/src/cairo-script-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-script.h | 0 .../cairo/src/cairo-shape-mask-compositor.c | 0 .../src/3rd-party}/cairo/src/cairo-skia-surface.cpp | 0 .../src/3rd-party}/cairo/src/cairo-skia.h | 0 .../src/3rd-party}/cairo/src/cairo-slope-private.h | 0 .../src/3rd-party}/cairo/src/cairo-slope.c | 0 .../cairo/src/cairo-spans-compositor-private.h | 0 .../3rd-party}/cairo/src/cairo-spans-compositor.c | 0 .../src/3rd-party}/cairo/src/cairo-spans-private.h | 0 .../src/3rd-party}/cairo/src/cairo-spans.c | 0 .../src/3rd-party}/cairo/src/cairo-spline.c | 0 .../cairo/src/cairo-stroke-dash-private.h | 0 .../src/3rd-party}/cairo/src/cairo-stroke-dash.c | 0 .../src/3rd-party}/cairo/src/cairo-stroke-style.c | 0 .../cairo/src/cairo-surface-backend-private.h | 0 .../cairo/src/cairo-surface-clipper-private.h | 0 .../3rd-party}/cairo/src/cairo-surface-clipper.c | 0 .../cairo/src/cairo-surface-fallback-private.h | 0 .../3rd-party}/cairo/src/cairo-surface-fallback.c | 0 .../src/3rd-party}/cairo/src/cairo-surface-inline.h | 0 .../cairo/src/cairo-surface-observer-inline.h | 0 .../cairo/src/cairo-surface-observer-private.h | 0 .../3rd-party}/cairo/src/cairo-surface-observer.c | 0 .../cairo/src/cairo-surface-offset-private.h | 0 .../src/3rd-party}/cairo/src/cairo-surface-offset.c | 0 .../3rd-party}/cairo/src/cairo-surface-private.h | 0 .../cairo/src/cairo-surface-snapshot-inline.h | 0 .../cairo/src/cairo-surface-snapshot-private.h | 0 .../3rd-party}/cairo/src/cairo-surface-snapshot.c | 0 .../cairo/src/cairo-surface-subsurface-inline.h | 0 .../cairo/src/cairo-surface-subsurface-private.h | 0 .../3rd-party}/cairo/src/cairo-surface-subsurface.c | 0 .../cairo/src/cairo-surface-wrapper-private.h | 0 .../3rd-party}/cairo/src/cairo-surface-wrapper.c | 0 .../src/3rd-party}/cairo/src/cairo-surface.c | 0 .../cairo/src/cairo-svg-surface-private.h | 0 .../src/3rd-party}/cairo/src/cairo-svg-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-svg.h | 0 .../cairo/src/cairo-tee-surface-private.h | 0 .../src/3rd-party}/cairo/src/cairo-tee-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-tee.h | 0 .../src/3rd-party}/cairo/src/cairo-time-private.h | 0 .../src/3rd-party}/cairo/src/cairo-time.c | 0 .../3rd-party}/cairo/src/cairo-tor-scan-converter.c | 0 .../cairo/src/cairo-tor22-scan-converter.c | 0 .../src/3rd-party}/cairo/src/cairo-toy-font-face.c | 0 .../3rd-party}/cairo/src/cairo-traps-compositor.c | 0 .../src/3rd-party}/cairo/src/cairo-traps-private.h | 0 .../src/3rd-party}/cairo/src/cairo-traps.c | 0 .../3rd-party}/cairo/src/cairo-tristrip-private.h | 0 .../src/3rd-party}/cairo/src/cairo-tristrip.c | 0 .../cairo/src/cairo-truetype-subset-private.h | 0 .../3rd-party}/cairo/src/cairo-truetype-subset.c | 0 .../src/3rd-party}/cairo/src/cairo-type1-fallback.c | 0 .../3rd-party}/cairo/src/cairo-type1-glyph-names.c | 0 .../src/3rd-party}/cairo/src/cairo-type1-private.h | 0 .../src/3rd-party}/cairo/src/cairo-type1-subset.c | 0 .../cairo/src/cairo-type3-glyph-surface-private.h | 0 .../cairo/src/cairo-type3-glyph-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-types-private.h | 0 .../src/3rd-party}/cairo/src/cairo-unicode.c | 0 .../3rd-party}/cairo/src/cairo-uninstalled.pc.in | 0 .../3rd-party}/cairo/src/cairo-user-font-private.h | 0 .../src/3rd-party}/cairo/src/cairo-user-font.c | 0 .../src/3rd-party}/cairo/src/cairo-version.c | 0 .../src/3rd-party}/cairo/src/cairo-version.h | 0 .../src/3rd-party}/cairo/src/cairo-vg-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-vg.h | 0 .../src/3rd-party}/cairo/src/cairo-wgl-context.c | 0 .../3rd-party}/cairo/src/cairo-wideint-private.h | 0 .../cairo/src/cairo-wideint-type-private.h | 0 .../src/3rd-party}/cairo/src/cairo-wideint.c | 0 .../src/3rd-party}/cairo/src/cairo-win32.h | 0 .../cairo/src/cairo-xcb-connection-core.c | 0 .../cairo/src/cairo-xcb-connection-render.c | 0 .../3rd-party}/cairo/src/cairo-xcb-connection-shm.c | 0 .../src/3rd-party}/cairo/src/cairo-xcb-connection.c | 0 .../src/3rd-party}/cairo/src/cairo-xcb-private.h | 0 .../src/3rd-party}/cairo/src/cairo-xcb-screen.c | 0 .../src/3rd-party}/cairo/src/cairo-xcb-shm.c | 0 .../3rd-party}/cairo/src/cairo-xcb-surface-core.c | 0 .../3rd-party}/cairo/src/cairo-xcb-surface-render.c | 0 .../src/3rd-party}/cairo/src/cairo-xcb-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-xcb.h | 0 .../cairo/src/cairo-xlib-core-compositor.c | 0 .../src/3rd-party}/cairo/src/cairo-xlib-display.c | 0 .../cairo/src/cairo-xlib-fallback-compositor.c | 0 .../src/3rd-party}/cairo/src/cairo-xlib-private.h | 0 .../cairo/src/cairo-xlib-render-compositor.c | 0 .../src/3rd-party}/cairo/src/cairo-xlib-screen.c | 0 .../src/3rd-party}/cairo/src/cairo-xlib-source.c | 0 .../cairo/src/cairo-xlib-surface-private.h | 0 .../3rd-party}/cairo/src/cairo-xlib-surface-shm.c | 0 .../src/3rd-party}/cairo/src/cairo-xlib-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-xlib-visual.c | 0 .../3rd-party}/cairo/src/cairo-xlib-xcb-surface.c | 0 .../cairo/src/cairo-xlib-xrender-private.h | 0 .../src/3rd-party}/cairo/src/cairo-xlib-xrender.h | 0 .../src/3rd-party}/cairo/src/cairo-xlib.h | 0 .../src/3rd-party}/cairo/src/cairo-xml-surface.c | 0 .../src/3rd-party}/cairo/src/cairo-xml.h | 0 {3rd-party => io2d/src/3rd-party}/cairo/src/cairo.c | 0 {3rd-party => io2d/src/3rd-party}/cairo/src/cairo.h | 0 .../src/3rd-party}/cairo/src/cairo.pc.in | 0 .../src/3rd-party}/cairo/src/cairoint.h | 0 .../src/3rd-party}/cairo/src/check-def.sh | 0 .../src/3rd-party}/cairo/src/check-doc-syntax.awk | 0 .../src/3rd-party}/cairo/src/check-doc-syntax.sh | 0 .../3rd-party}/cairo/src/check-has-hidden-symbols.c | 0 .../src/3rd-party}/cairo/src/check-headers.sh | 0 .../src/3rd-party}/cairo/src/check-link.c | 0 .../src/3rd-party}/cairo/src/check-plt.sh | 0 .../cairo/src/check-preprocessor-syntax.sh | 0 .../src/3rd-party}/cairo/src/drm/cairo-drm-bo.c | 0 .../cairo/src/drm/cairo-drm-gallium-surface.c | 0 .../cairo/src/drm/cairo-drm-i915-glyphs.c | 0 .../cairo/src/drm/cairo-drm-i915-private.h | 0 .../cairo/src/drm/cairo-drm-i915-shader.c | 0 .../3rd-party}/cairo/src/drm/cairo-drm-i915-spans.c | 0 .../cairo/src/drm/cairo-drm-i915-surface.c | 0 .../cairo/src/drm/cairo-drm-i965-glyphs.c | 0 .../cairo/src/drm/cairo-drm-i965-private.h | 0 .../cairo/src/drm/cairo-drm-i965-shader.c | 0 .../3rd-party}/cairo/src/drm/cairo-drm-i965-spans.c | 0 .../cairo/src/drm/cairo-drm-i965-surface.c | 0 .../cairo/src/drm/cairo-drm-intel-brw-defines.h | 0 .../cairo/src/drm/cairo-drm-intel-brw-eu-emit.c | 0 .../cairo/src/drm/cairo-drm-intel-brw-eu-util.c | 0 .../cairo/src/drm/cairo-drm-intel-brw-eu.c | 0 .../cairo/src/drm/cairo-drm-intel-brw-eu.h | 0 .../cairo/src/drm/cairo-drm-intel-brw-structs.h | 0 .../cairo/src/drm/cairo-drm-intel-command-private.h | 0 .../cairo/src/drm/cairo-drm-intel-debug.c | 0 .../cairo/src/drm/cairo-drm-intel-ioctl-private.h | 0 .../cairo/src/drm/cairo-drm-intel-private.h | 0 .../cairo/src/drm/cairo-drm-intel-surface.c | 0 .../src/3rd-party}/cairo/src/drm/cairo-drm-intel.c | 0 .../cairo/src/drm/cairo-drm-ioctl-private.h | 0 .../3rd-party}/cairo/src/drm/cairo-drm-private.h | 0 .../cairo/src/drm/cairo-drm-radeon-private.h | 0 .../cairo/src/drm/cairo-drm-radeon-surface.c | 0 .../src/3rd-party}/cairo/src/drm/cairo-drm-radeon.c | 0 .../3rd-party}/cairo/src/drm/cairo-drm-surface.c | 0 .../src/3rd-party}/cairo/src/drm/cairo-drm.c | 0 .../cairo/src/skia/cairo-skia-context.cpp | 0 .../3rd-party}/cairo/src/skia/cairo-skia-private.h | 0 .../cairo/src/skia/cairo-skia-surface.cpp | 0 .../cairo/src/test-base-compositor-surface.c | 0 .../cairo/src/test-compositor-surface-private.h | 0 .../3rd-party}/cairo/src/test-compositor-surface.c | 0 .../3rd-party}/cairo/src/test-compositor-surface.h | 0 .../cairo/src/test-null-compositor-surface.c | 0 .../cairo/src/test-null-compositor-surface.h | 0 .../3rd-party}/cairo/src/test-paginated-surface.c | 0 .../3rd-party}/cairo/src/test-paginated-surface.h | 0 .../3rd-party}/cairo/src/win32/cairo-win32-debug.c | 0 .../3rd-party}/cairo/src/win32/cairo-win32-device.c | 0 .../cairo/src/win32/cairo-win32-display-surface.c | 0 .../3rd-party}/cairo/src/win32/cairo-win32-font.c | 0 .../cairo/src/win32/cairo-win32-gdi-compositor.c | 0 .../cairo/src/win32/cairo-win32-printing-surface.c | 0 .../cairo/src/win32/cairo-win32-private.h | 0 .../cairo/src/win32/cairo-win32-surface.c | 0 .../3rd-party}/cairo/src/win32/cairo-win32-system.c | 0 .../src/3rd-party}/cairo/test/.gitignore | 0 .../3rd-party}/cairo/test/.valgrind-suppressions | 0 .../src/3rd-party}/cairo/test/6x13.pcf | Bin .../src/3rd-party}/cairo/test/COPYING | 0 .../src/3rd-party}/cairo/test/Makefile.am | 0 .../src/3rd-party}/cairo/test/Makefile.sources | 0 .../src/3rd-party}/cairo/test/Makefile.win32 | 0 {3rd-party => io2d/src/3rd-party}/cairo/test/README | 0 .../src/3rd-party}/cairo/test/a1-bug.c | 0 .../src/3rd-party}/cairo/test/a1-clip.c | 0 .../src/3rd-party}/cairo/test/a1-fill.c | 0 .../src/3rd-party}/cairo/test/a1-image-sample.c | 0 .../src/3rd-party}/cairo/test/a1-mask-sample.c | 0 .../src/3rd-party}/cairo/test/a1-mask.c | 0 .../src/3rd-party}/cairo/test/a1-rasterisation.c | 0 .../src/3rd-party}/cairo/test/a1-sample.c | 0 .../src/3rd-party}/cairo/test/a1-traps-sample.c | 0 .../src/3rd-party}/cairo/test/a8-clear.c | 0 .../src/3rd-party}/cairo/test/a8-mask.c | 0 .../src/3rd-party}/cairo/test/aliasing.c | 0 .../src/3rd-party}/cairo/test/alpha-similar.c | 0 .../src/3rd-party}/cairo/test/any2ppm.c | 0 .../src/3rd-party}/cairo/test/api-special-cases.c | 0 .../src/3rd-party}/cairo/test/arc-direction.c | 0 .../src/3rd-party}/cairo/test/arc-infinite-loop.c | 0 .../src/3rd-party}/cairo/test/arc-looping-dash.c | 0 .../src/3rd-party}/cairo/test/big-empty-box.c | 0 .../src/3rd-party}/cairo/test/big-empty-triangle.c | 0 .../src/3rd-party}/cairo/test/big-line.c | 0 .../src/3rd-party}/cairo/test/big-little-box.c | 0 .../src/3rd-party}/cairo/test/big-little-triangle.c | 0 .../src/3rd-party}/cairo/test/big-trap.c | 0 .../src/3rd-party}/cairo/test/bilevel-image.c | 0 .../src/3rd-party}/cairo/test/bitmap-font.c | 0 .../src/3rd-party}/cairo/test/buffer-diff.c | 0 .../src/3rd-party}/cairo/test/buffer-diff.h | 0 .../src/3rd-party}/cairo/test/bug-40410.c | 0 .../src/3rd-party}/cairo/test/bug-51910.c | 0 .../src/3rd-party}/cairo/test/bug-bo-collins.c | 0 .../src/3rd-party}/cairo/test/bug-bo-rectangular.c | 0 .../src/3rd-party}/cairo/test/bug-bo-ricotz.c | 0 .../src/3rd-party}/cairo/test/bug-extents.c | 0 .../src/3rd-party}/cairo/test/bug-seams.c | 0 .../src/3rd-party}/cairo/test/bug-source-cu.c | 0 .../src/3rd-party}/cairo/test/bug-spline.c | 0 .../src/3rd-party}/cairo/test/cairo-test-private.h | 0 .../src/3rd-party}/cairo/test/cairo-test-runner.c | 0 .../src/3rd-party}/cairo/test/cairo-test-trace.c | 0 .../src/3rd-party}/cairo/test/cairo-test.c | 0 .../src/3rd-party}/cairo/test/cairo-test.h | 0 .../src/3rd-party}/cairo/test/caps-joins-alpha.c | 0 .../src/3rd-party}/cairo/test/caps-joins-curve.c | 0 .../src/3rd-party}/cairo/test/caps-joins.c | 0 .../src/3rd-party}/cairo/test/caps-sub-paths.c | 0 .../src/3rd-party}/cairo/test/caps-tails-curve.c | 0 {3rd-party => io2d/src/3rd-party}/cairo/test/caps.c | 0 .../src/3rd-party}/cairo/test/check-refs.sh | 0 .../src/3rd-party}/cairo/test/checkerboard.c | 0 .../src/3rd-party}/cairo/test/clear-source.c | 0 .../src/3rd-party}/cairo/test/clear.c | 0 .../src/3rd-party}/cairo/test/clip-all.c | 0 .../3rd-party}/cairo/test/clip-complex-bug61592.c | 0 .../src/3rd-party}/cairo/test/clip-complex-shape.c | 0 .../src/3rd-party}/cairo/test/clip-contexts.c | 0 .../src/3rd-party}/cairo/test/clip-device-offset.c | 0 .../3rd-party}/cairo/test/clip-disjoint-hatching.c | 0 .../src/3rd-party}/cairo/test/clip-disjoint-quad.c | 0 .../src/3rd-party}/cairo/test/clip-disjoint.c | 0 .../src/3rd-party}/cairo/test/clip-double-free.c | 0 .../src/3rd-party}/cairo/test/clip-draw-unbounded.c | 0 .../src/3rd-party}/cairo/test/clip-empty-group.c | 0 .../src/3rd-party}/cairo/test/clip-empty-save.c | 0 .../src/3rd-party}/cairo/test/clip-empty.c | 0 .../src/3rd-party}/cairo/test/clip-fill-no-op.c | 0 .../cairo/test/clip-fill-rule-pixel-aligned.c | 0 .../src/3rd-party}/cairo/test/clip-fill-rule.c | 0 .../src/3rd-party}/cairo/test/clip-fill.c | 0 .../src/3rd-party}/cairo/test/clip-group-shapes.c | 0 .../src/3rd-party}/cairo/test/clip-image.c | 0 .../src/3rd-party}/cairo/test/clip-intersect.c | 0 .../3rd-party}/cairo/test/clip-mixed-antialias.c | 0 .../src/3rd-party}/cairo/test/clip-nesting.c | 0 .../src/3rd-party}/cairo/test/clip-operator.c | 0 .../src/3rd-party}/cairo/test/clip-polygons.c | 0 .../src/3rd-party}/cairo/test/clip-push-group.c | 0 .../src/3rd-party}/cairo/test/clip-rectilinear.c | 0 .../src/3rd-party}/cairo/test/clip-shape.c | 0 .../src/3rd-party}/cairo/test/clip-stroke-no-op.c | 0 .../src/3rd-party}/cairo/test/clip-stroke.c | 0 .../src/3rd-party}/cairo/test/clip-text.c | 0 .../3rd-party}/cairo/test/clip-twice-rectangle.c | 0 .../src/3rd-party}/cairo/test/clip-twice.c | 0 .../src/3rd-party}/cairo/test/clip-unbounded.c | 0 .../src/3rd-party}/cairo/test/clip-zero.c | 0 .../src/3rd-party}/cairo/test/clipped-group.c | 0 .../src/3rd-party}/cairo/test/clipped-surface.c | 0 .../cairo/test/clipped-trapezoids-ref.png | Bin .../src/3rd-party}/cairo/test/clipped-trapezoids.c | 0 .../cairo/test/close-path-current-point.c | 0 .../src/3rd-party}/cairo/test/close-path.c | 0 .../test/composite-integer-translate-over-repeat.c | 0 .../cairo/test/composite-integer-translate-over.c | 0 .../cairo/test/composite-integer-translate-source.c | 0 .../src/3rd-party}/cairo/test/copy-disjoint.c | 0 .../src/3rd-party}/cairo/test/copy-path.c | 0 .../src/3rd-party}/cairo/test/coverage.c | 0 .../src/3rd-party}/cairo/test/create-for-stream.c | 0 .../3rd-party}/cairo/test/create-from-png-stream.c | 0 .../src/3rd-party}/cairo/test/create-from-png.c | 0 .../src/3rd-party}/cairo/test/culled-glyphs.c | 0 .../src/3rd-party}/cairo/test/curve-to-as-line-to.c | 0 .../src/3rd-party}/cairo/test/dash-caps-joins.c | 0 .../src/3rd-party}/cairo/test/dash-curve.c | 0 .../src/3rd-party}/cairo/test/dash-infinite-loop.c | 0 .../src/3rd-party}/cairo/test/dash-no-dash.c | 0 .../3rd-party}/cairo/test/dash-offset-negative.c | 0 .../src/3rd-party}/cairo/test/dash-offset.c | 0 .../src/3rd-party}/cairo/test/dash-scale.c | 0 .../src/3rd-party}/cairo/test/dash-state.c | 0 .../src/3rd-party}/cairo/test/dash-zero-length.c | 0 .../src/3rd-party}/cairo/test/degenerate-arc.c | 0 .../src/3rd-party}/cairo/test/degenerate-arcs.c | 0 .../src/3rd-party}/cairo/test/degenerate-curve-to.c | 0 .../src/3rd-party}/cairo/test/degenerate-dash.c | 0 .../cairo/test/degenerate-linear-gradient.c | 0 .../src/3rd-party}/cairo/test/degenerate-path.c | 0 .../src/3rd-party}/cairo/test/degenerate-pen.c | 0 .../cairo/test/degenerate-radial-gradient.c | 0 .../3rd-party}/cairo/test/degenerate-rel-curve-to.c | 0 .../3rd-party}/cairo/test/degenerate-solid-dash.c | 0 .../cairo/test/device-offset-fractional.c | 0 .../3rd-party}/cairo/test/device-offset-positive.c | 0 .../src/3rd-party}/cairo/test/device-offset-scale.c | 0 .../src/3rd-party}/cairo/test/device-offset.c | 0 .../src/3rd-party}/cairo/test/drunkard-tails.c | 0 .../src/3rd-party}/cairo/test/error-setters.c | 0 .../src/3rd-party}/cairo/test/extend-pad-border.c | 0 .../src/3rd-party}/cairo/test/extend-pad-similar.c | 0 .../src/3rd-party}/cairo/test/extend-pad.c | 0 .../3rd-party}/cairo/test/extend-reflect-similar.c | 0 .../src/3rd-party}/cairo/test/extend-reflect.c | 0 .../3rd-party}/cairo/test/extend-repeat-similar.c | 0 .../src/3rd-party}/cairo/test/extend-repeat.c | 0 .../src/3rd-party}/cairo/test/extended-blend.c | 0 .../src/3rd-party}/cairo/test/fallback-resolution.c | 0 .../src/3rd-party}/cairo/test/fallback.c | 0 .../src/3rd-party}/cairo/test/fill-alpha-pattern.c | 0 .../src/3rd-party}/cairo/test/fill-alpha.c | 0 .../cairo/test/fill-and-stroke-alpha-add.c | 0 .../3rd-party}/cairo/test/fill-and-stroke-alpha.c | 0 .../src/3rd-party}/cairo/test/fill-and-stroke.c | 0 .../cairo/test/fill-degenerate-sort-order.c | 0 .../src/3rd-party}/cairo/test/fill-disjoint.c | 0 .../src/3rd-party}/cairo/test/fill-empty.c | 0 .../src/3rd-party}/cairo/test/fill-image.c | 0 .../src/3rd-party}/cairo/test/fill-missed-stop.c | 0 .../src/3rd-party}/cairo/test/fill-rule.c | 0 .../3rd-party}/cairo/test/filter-bilinear-extents.c | 0 .../3rd-party}/cairo/test/filter-nearest-offset.c | 0 .../cairo/test/filter-nearest-transformed.c | 0 .../3rd-party}/cairo/test/finer-grained-fallbacks.c | 0 .../src/3rd-party}/cairo/test/font-face-get-type.c | 0 .../3rd-party}/cairo/test/font-matrix-translation.c | 0 .../src/3rd-party}/cairo/test/font-options.c | 0 .../cairo/test/ft-font-create-for-ft-face.c | 0 .../cairo/test/ft-show-glyphs-positioning.c | 0 .../3rd-party}/cairo/test/ft-show-glyphs-table.c | 0 .../3rd-party}/cairo/test/ft-text-antialias-none.c | 0 .../cairo/test/ft-text-vertical-layout-type1.c | 0 .../cairo/test/ft-text-vertical-layout-type3.c | 0 .../src/3rd-party}/cairo/test/generate_refs.sh | 0 .../src/3rd-party}/cairo/test/get-and-set.c | 0 .../src/3rd-party}/cairo/test/get-clip.c | 0 .../src/3rd-party}/cairo/test/get-group-target.c | 0 .../src/3rd-party}/cairo/test/get-path-extents.c | 0 .../src/3rd-party}/cairo/test/get-xrender-format.c | 0 .../src/3rd-party}/cairo/test/gl-device-release.c | 0 .../3rd-party}/cairo/test/gl-oversized-surface.c | 0 .../src/3rd-party}/cairo/test/gl-surface-source.c | 0 .../3rd-party}/cairo/test/glyph-cache-pressure.c | 0 .../src/3rd-party}/cairo/test/gradient-alpha.c | 0 .../3rd-party}/cairo/test/gradient-constant-alpha.c | 0 .../cairo/test/gradient-zero-stops-mask.c | 0 .../src/3rd-party}/cairo/test/gradient-zero-stops.c | 0 .../src/3rd-party}/cairo/test/group-clip.c | 0 .../src/3rd-party}/cairo/test/group-paint.c | 0 .../src/3rd-party}/cairo/test/group-state.c | 0 .../src/3rd-party}/cairo/test/group-unaligned.c | 0 .../src/3rd-party}/cairo/test/half-coverage.c | 0 {3rd-party => io2d/src/3rd-party}/cairo/test/halo.c | 0 .../src/3rd-party}/cairo/test/hatchings.c | 0 .../src/3rd-party}/cairo/test/horizontal-clip.c | 0 .../src/3rd-party}/cairo/test/huge-linear.c | 0 .../src/3rd-party}/cairo/test/huge-radial.c | 0 .../src/3rd-party}/cairo/test/image-bug-710072.c | 0 .../3rd-party}/cairo/test/image-surface-source.c | 0 .../src/3rd-party}/cairo/test/imagediff.c | 0 .../src/3rd-party}/cairo/test/implicit-close.c | 0 .../3rd-party}/cairo/test/in-fill-empty-trapezoid.c | 0 .../src/3rd-party}/cairo/test/in-fill-trapezoid.c | 0 .../src/3rd-party}/cairo/test/index.html | 0 .../src/3rd-party}/cairo/test/infinite-join.c | 0 .../src/3rd-party}/cairo/test/invalid-matrix.c | 0 .../src/3rd-party}/cairo/test/inverse-text.c | 0 .../src/3rd-party}/cairo/test/inverted-clip.c | 0 .../src/3rd-party}/cairo/test/joins-loop.c | 0 .../src/3rd-party}/cairo/test/joins-retrace.c | 0 .../src/3rd-party}/cairo/test/joins-star.c | 0 .../src/3rd-party}/cairo/test/joins.c | 0 .../src/3rd-party}/cairo/test/jp2.jp2 | Bin .../src/3rd-party}/cairo/test/jpeg.jpg | Bin .../src/3rd-party}/cairo/test/large-clip.c | 0 .../src/3rd-party}/cairo/test/large-font.c | 0 .../src/3rd-party}/cairo/test/large-source-roi.c | 0 .../src/3rd-party}/cairo/test/large-source.c | 0 .../cairo/test/large-twin-antialias-mixed.c | 0 .../src/3rd-party}/cairo/test/leaky-dash.c | 0 .../3rd-party}/cairo/test/leaky-dashed-rectangle.c | 0 .../src/3rd-party}/cairo/test/leaky-dashed-stroke.c | 0 .../src/3rd-party}/cairo/test/leaky-polygon.c | 0 .../cairo/test/line-width-large-overlap.c | 0 .../src/3rd-party}/cairo/test/line-width-overlap.c | 0 .../src/3rd-party}/cairo/test/line-width-scale.c | 0 .../3rd-party}/cairo/test/line-width-tolerance.c | 0 .../src/3rd-party}/cairo/test/line-width-zero.c | 0 .../src/3rd-party}/cairo/test/line-width.c | 0 .../3rd-party}/cairo/test/linear-gradient-extend.c | 0 .../3rd-party}/cairo/test/linear-gradient-large.c | 0 .../cairo/test/linear-gradient-one-stop.c | 0 .../3rd-party}/cairo/test/linear-gradient-reflect.c | 0 .../3rd-party}/cairo/test/linear-gradient-subset.c | 0 .../src/3rd-party}/cairo/test/linear-gradient.c | 0 .../3rd-party}/cairo/test/linear-step-function.c | 0 .../src/3rd-party}/cairo/test/linear-uniform.c | 0 .../src/3rd-party}/cairo/test/long-dashed-lines.c | 0 .../src/3rd-party}/cairo/test/long-lines.c | 0 .../cairo/test/make-cairo-test-constructors.sh | 0 .../src/3rd-party}/cairo/test/map-to-image.c | 0 .../src/3rd-party}/cairo/test/mask-alpha.c | 0 .../src/3rd-party}/cairo/test/mask-ctm.c | 0 .../src/3rd-party}/cairo/test/mask-glyphs.c | 0 .../src/3rd-party}/cairo/test/mask-surface-ctm.c | 0 .../3rd-party}/cairo/test/mask-transformed-image.c | 0 .../cairo/test/mask-transformed-similar.c | 0 {3rd-party => io2d/src/3rd-party}/cairo/test/mask.c | 0 .../3rd-party}/cairo/test/mesh-pattern-accuracy.c | 0 .../3rd-party}/cairo/test/mesh-pattern-conical.c | 0 .../cairo/test/mesh-pattern-control-points.c | 0 .../src/3rd-party}/cairo/test/mesh-pattern-fold.c | 0 .../3rd-party}/cairo/test/mesh-pattern-overlap.c | 0 .../cairo/test/mesh-pattern-transformed.c | 0 .../src/3rd-party}/cairo/test/mesh-pattern.c | 0 .../src/3rd-party}/cairo/test/mime-data.c | 0 .../src/3rd-party}/cairo/test/mime-surface-api.c | 0 .../src/3rd-party}/cairo/test/miter-precision.c | 0 .../3rd-party}/cairo/test/move-to-show-surface.c | 0 .../src/3rd-party}/cairo/test/multi-page.c | 0 .../3rd-party}/cairo/test/negative-stride-image.c | 0 .../src/3rd-party}/cairo/test/new-sub-path.c | 0 .../src/3rd-party}/cairo/test/nil-surface.c | 0 .../3rd-party}/cairo/test/operator-alpha-alpha.c | 0 .../src/3rd-party}/cairo/test/operator-alpha.c | 0 .../src/3rd-party}/cairo/test/operator-clear.c | 0 .../src/3rd-party}/cairo/test/operator-source.c | 0 .../src/3rd-party}/cairo/test/operator.c | 0 .../src/3rd-party}/cairo/test/outline-tolerance.c | 0 .../src/3rd-party}/cairo/test/over-above-source.c | 0 .../src/3rd-party}/cairo/test/over-around-source.c | 0 .../src/3rd-party}/cairo/test/over-below-source.c | 0 .../src/3rd-party}/cairo/test/over-between-source.c | 0 .../src/3rd-party}/cairo/test/overlapping-boxes.c | 0 .../3rd-party}/cairo/test/overlapping-dash-caps.c | 0 .../src/3rd-party}/cairo/test/overlapping-glyphs.c | 0 .../src/3rd-party}/cairo/test/paint-clip-fill.c | 0 .../src/3rd-party}/cairo/test/paint-repeat.c | 0 .../src/3rd-party}/cairo/test/paint-source-alpha.c | 0 .../src/3rd-party}/cairo/test/paint-with-alpha.c | 0 .../src/3rd-party}/cairo/test/paint.c | 0 .../src/3rd-party}/cairo/test/partial-clip-text.c | 0 .../src/3rd-party}/cairo/test/partial-coverage.c | 0 .../src/3rd-party}/cairo/test/pass-through.c | 0 .../src/3rd-party}/cairo/test/path-append.c | 0 .../src/3rd-party}/cairo/test/path-precision.c | 0 .../src/3rd-party}/cairo/test/path-stroke-twice.c | 0 .../src/3rd-party}/cairo/test/pattern-get-type.c | 0 .../src/3rd-party}/cairo/test/pattern-getters.c | 0 .../src/3rd-party}/cairo/test/pdf-features.c | 0 .../src/3rd-party}/cairo/test/pdf-isolated-group.c | 0 .../src/3rd-party}/cairo/test/pdf-mime-data.c | 0 .../src/3rd-party}/cairo/test/pdf-surface-source.c | 0 .../src/3rd-party}/cairo/test/pdf2png.c | 0 .../src/3rd-party}/cairo/test/pdiff/.gitignore | 0 .../src/3rd-party}/cairo/test/pdiff/CMakeLists.txt | 0 .../src/3rd-party}/cairo/test/pdiff/Makefile.am | 0 .../src/3rd-party}/cairo/test/pdiff/Makefile.win32 | 0 .../src/3rd-party}/cairo/test/pdiff/README.txt | 0 .../src/3rd-party}/cairo/test/pdiff/args.c | 0 .../src/3rd-party}/cairo/test/pdiff/args.h | 0 .../src/3rd-party}/cairo/test/pdiff/gpl.txt | 0 .../src/3rd-party}/cairo/test/pdiff/lpyramid.c | 0 .../src/3rd-party}/cairo/test/pdiff/lpyramid.h | 0 .../src/3rd-party}/cairo/test/pdiff/pdiff.c | 0 .../src/3rd-party}/cairo/test/pdiff/pdiff.h | 0 .../3rd-party}/cairo/test/pdiff/perceptualdiff.c | 0 .../src/3rd-party}/cairo/test/pixman-rotate.c | 0 .../src/3rd-party}/cairo/test/png-flatten.c | 0 {3rd-party => io2d/src/3rd-party}/cairo/test/png.c | 0 .../src/3rd-party}/cairo/test/png.png | Bin .../src/3rd-party}/cairo/test/ps-eps.c | 0 .../src/3rd-party}/cairo/test/ps-features.c | 0 .../src/3rd-party}/cairo/test/ps-surface-source.c | 0 .../src/3rd-party}/cairo/test/ps2png.c | 0 .../src/3rd-party}/cairo/test/pthread-same-source.c | 0 .../src/3rd-party}/cairo/test/pthread-show-text.c | 0 .../src/3rd-party}/cairo/test/pthread-similar.c | 0 .../src/3rd-party}/cairo/test/push-group-color.c | 0 .../3rd-party}/cairo/test/push-group-path-offset.c | 0 .../src/3rd-party}/cairo/test/push-group.c | 0 .../3rd-party}/cairo/test/quartz-surface-source.c | 0 .../3rd-party}/cairo/test/radial-gradient-extend.c | 0 .../src/3rd-party}/cairo/test/radial-gradient.c | 0 .../src/3rd-party}/cairo/test/radial-outer-focus.c | 0 .../src/3rd-party}/cairo/test/random-clips.c | 0 .../cairo/test/random-intersections-curves-eo.c | 0 .../cairo/test/random-intersections-curves-nz.c | 0 .../3rd-party}/cairo/test/random-intersections-eo.c | 0 .../cairo/test/random-intersections-nonzero.c | 0 .../src/3rd-party}/cairo/test/raster-source.c | 0 .../src/3rd-party}/cairo/test/record-extend.c | 0 .../src/3rd-party}/cairo/test/record-mesh.c | 0 .../src/3rd-party}/cairo/test/record.c | 0 .../src/3rd-party}/cairo/test/record1414x.c | 0 .../src/3rd-party}/cairo/test/record2x.c | 0 .../src/3rd-party}/cairo/test/record90.c | 0 .../src/3rd-party}/cairo/test/recordflip.c | 0 .../cairo/test/recording-surface-extend.c | 0 .../cairo/test/recording-surface-pattern.c | 0 .../cairo/test/rectangle-rounding-error.c | 0 .../3rd-party}/cairo/test/rectilinear-dash-scale.c | 0 .../src/3rd-party}/cairo/test/rectilinear-dash.c | 0 .../src/3rd-party}/cairo/test/rectilinear-fill.c | 0 .../src/3rd-party}/cairo/test/rectilinear-grid.c | 0 .../3rd-party}/cairo/test/rectilinear-miter-limit.c | 0 .../src/3rd-party}/cairo/test/rectilinear-stroke.c | 0 .../cairo/test/reference/a1-bug.base.argb32.ref.png | Bin .../cairo/test/reference/a1-bug.base.rgb24.ref.png | Bin .../cairo/test/reference/a1-bug.image16.ref.png | Bin .../cairo/test/reference/a1-bug.mask.argb32.ref.png | Bin .../cairo/test/reference/a1-bug.mask.rgb24.ref.png | Bin .../cairo/test/reference/a1-bug.quartz.xfail.png | Bin .../3rd-party}/cairo/test/reference/a1-bug.ref.png | Bin .../test/reference/a1-bug.traps.argb32.ref.png | Bin .../cairo/test/reference/a1-bug.traps.rgb24.ref.png | Bin .../a1-clip-fill-equal.base.argb32.ref.png | Bin .../reference/a1-clip-fill-equal.base.rgb24.ref.png | Bin .../cairo/test/reference/a1-clip-fill-equal.ref.png | Bin .../test/reference/a1-clip-fill-rule.argb32.ref.png | Bin .../reference/a1-clip-fill-rule.base.argb32.ref.png | Bin .../reference/a1-clip-fill-rule.base.rgb24.ref.png | Bin .../test/reference/a1-clip-fill-rule.rgb24.ref.png | Bin .../test/reference/a1-clip-fill.base.argb32.ref.png | Bin .../test/reference/a1-clip-fill.base.rgb24.ref.png | Bin .../cairo/test/reference/a1-clip-fill.ref.png | Bin .../reference/a1-clip-paint.base.argb32.ref.png | Bin .../test/reference/a1-clip-paint.base.rgb24.ref.png | Bin .../cairo/test/reference/a1-clip-paint.ref.png | Bin .../reference/a1-clip-stroke.base.argb32.ref.png | Bin .../reference/a1-clip-stroke.base.rgb24.ref.png | Bin .../cairo/test/reference/a1-clip-stroke.ref.png | Bin .../test/reference/a1-fill.base.argb32.ref.png | Bin .../cairo/test/reference/a1-fill.base.rgb24.ref.png | Bin .../3rd-party}/cairo/test/reference/a1-fill.ref.png | Bin .../reference/a1-image-sample.base.argb32.ref.png | Bin .../reference/a1-image-sample.base.rgb24.ref.png | Bin .../test/reference/a1-image-sample.gl.xfail.png | Bin .../cairo/test/reference/a1-image-sample.ref.png | Bin .../reference/a1-line-width.base.argb32.ref.png | Bin .../test/reference/a1-line-width.base.rgb24.ref.png | Bin .../cairo/test/reference/a1-line-width.pdf.ref.png | Bin .../cairo/test/reference/a1-line-width.ps.ref.png | Bin .../cairo/test/reference/a1-line-width.ref.png | Bin .../reference/a1-mask-sample.base.argb32.ref.png | Bin .../reference/a1-mask-sample.base.rgb24.ref.png | Bin .../cairo/test/reference/a1-mask-sample.ref.png | Bin .../test/reference/a1-mask.base.argb32.ref.png | Bin .../cairo/test/reference/a1-mask.base.rgb24.ref.png | Bin .../3rd-party}/cairo/test/reference/a1-mask.ref.png | Bin .../a1-rasterisation-rectangles.base.argb32.ref.png | Bin .../a1-rasterisation-rectangles.base.rgb24.ref.png | Bin .../a1-rasterisation-rectangles.quartz.xfail.png | Bin .../reference/a1-rasterisation-rectangles.ref.png | Bin .../a1-rasterisation-triangles.base.argb32.ref.png | Bin .../a1-rasterisation-triangles.base.rgb24.ref.png | Bin .../a1-rasterisation-triangles.quartz.xfail.png | Bin .../reference/a1-rasterisation-triangles.ref.png | Bin .../a1-rectilinear-grid.base.argb32.ref.png | Bin .../a1-rectilinear-grid.base.rgb24.ref.png | Bin .../test/reference/a1-rectilinear-grid.ref.png | Bin .../test/reference/a1-sample.base.argb32.ref.png | Bin .../test/reference/a1-sample.base.rgb24.ref.png | Bin .../cairo/test/reference/a1-sample.ref.png | Bin .../test/reference/a1-tiger.base.argb32.ref.png | Bin .../test/reference/a1-tiger.base.rgb24.ref.png | Bin .../test/reference/a1-tiger.mask.argb32.ref.png | Bin .../test/reference/a1-tiger.mask.rgb24.ref.png | Bin .../cairo/test/reference/a1-tiger.ref.png | Bin .../test/reference/a1-tiger.traps.argb32.ref.png | Bin .../test/reference/a1-tiger.traps.rgb24.ref.png | Bin .../reference/a1-traps-sample.base.argb32.ref.png | Bin .../reference/a1-traps-sample.base.rgb24.ref.png | Bin .../test/reference/a1-traps-sample.quartz.xfail.png | Bin .../cairo/test/reference/a1-traps-sample.ref.png | Bin .../cairo/test/reference/a8-clear.argb32.ref.png | Bin .../test/reference/a8-clear.base.argb32.ref.png | Bin .../test/reference/a8-clear.base.rgb24.ref.png | Bin .../cairo/test/reference/a8-clear.quartz.ref.png | Bin .../cairo/test/reference/a8-clear.rgb24.ref.png | Bin .../test/reference/a8-clear.traps.argb32.ref.png | Bin .../test/reference/a8-clear.traps.rgb24.ref.png | Bin .../test/reference/a8-mask.base.argb32.ref.png | Bin .../cairo/test/reference/a8-mask.base.rgb24.ref.png | Bin .../3rd-party}/cairo/test/reference/a8-mask.ref.png | Bin .../cairo/test/reference/aliasing.argb32.ref.png | Bin .../test/reference/aliasing.base.argb32.ref.png | Bin .../test/reference/aliasing.base.rgb24.ref.png | Bin .../cairo/test/reference/aliasing.image16.ref.png | Bin .../cairo/test/reference/aliasing.quartz.ref.png | Bin .../cairo/test/reference/aliasing.rgb24.ref.png | Bin .../test/reference/aliasing.traps.argb32.ref.png | Bin .../test/reference/aliasing.traps.rgb24.ref.png | Bin .../test/reference/alpha-similar.argb32.ref.png | Bin .../reference/alpha-similar.base.argb32.ref.png | Bin .../test/reference/alpha-similar.base.rgb24.ref.png | Bin .../reference/alpha-similar.gl.argb32.xfail.png | Bin .../test/reference/alpha-similar.gl.rgb24.xfail.png | Bin .../reference/alpha-similar.pdf.argb32.xfail.png | Bin .../reference/alpha-similar.pdf.rgb24.xfail.png | Bin .../reference/alpha-similar.ps.argb32.xfail.png | Bin .../test/reference/alpha-similar.ps.rgb24.xfail.png | Bin .../test/reference/alpha-similar.rgb24.ref.png | Bin .../reference/alpha-similar.svg.argb32.xfail.png | Bin .../reference/alpha-similar.svg.rgb24.xfail.png | Bin .../reference/api-special-cases.base.argb32.ref.png | Bin .../reference/api-special-cases.base.rgb24.ref.png | Bin .../cairo/test/reference/api-special-cases.ref.png | Bin .../test/reference/arc-direction.argb32.ref.png | Bin .../reference/arc-direction.base.argb32.ref.png | Bin .../test/reference/arc-direction.base.rgb24.ref.png | Bin .../cairo/test/reference/arc-direction.ps.ref.png | Bin .../test/reference/arc-direction.rgb24.ref.png | Bin .../test/reference/arc-direction.traps.ref.png | Bin .../reference/arc-infinite-loop.base.argb32.ref.png | Bin .../reference/arc-infinite-loop.base.rgb24.ref.png | Bin .../cairo/test/reference/arc-infinite-loop.ref.png | Bin .../test/reference/arc-looping-dash.image16.ref.png | Bin .../reference/arc-looping-dash.mask.argb32.ref.png | Bin .../reference/arc-looping-dash.mask.rgb24.ref.png | Bin .../test/reference/arc-looping-dash.ps.ref.png | Bin .../test/reference/arc-looping-dash.quartz.ref.png | Bin .../cairo/test/reference/arc-looping-dash.ref.png | Bin .../reference/arc-looping-dash.traps.argb32.ref.png | Bin .../reference/arc-looping-dash.traps.rgb24.ref.png | Bin .../test/reference/big-empty-box.argb32.ref.png | Bin .../reference/big-empty-box.base.argb32.ref.png | Bin .../test/reference/big-empty-box.base.rgb24.ref.png | Bin .../test/reference/big-empty-box.rgb24.ref.png | Bin .../reference/big-empty-triangle.argb32.ref.png | Bin .../big-empty-triangle.base.argb32.ref.png | Bin .../reference/big-empty-triangle.base.rgb24.ref.png | Bin .../test/reference/big-empty-triangle.rgb24.ref.png | Bin .../cairo/test/reference/big-line.argb32.ref.png | Bin .../test/reference/big-line.base.argb32.ref.png | Bin .../test/reference/big-line.base.rgb24.ref.png | Bin .../cairo/test/reference/big-line.image16.ref.png | Bin .../cairo/test/reference/big-line.ps.ref.png | Bin .../cairo/test/reference/big-line.quartz.ref.png | Bin .../cairo/test/reference/big-line.rgb24.ref.png | Bin .../test/reference/big-line.traps.argb32.ref.png | Bin .../test/reference/big-line.traps.rgb24.ref.png | Bin .../test/reference/big-little-box.argb32.ref.png | Bin .../reference/big-little-box.base.argb32.ref.png | Bin .../reference/big-little-box.base.rgb24.ref.png | Bin .../test/reference/big-little-box.rgb24.ref.png | Bin .../reference/big-little-triangle.argb32.ref.png | Bin .../big-little-triangle.base.argb32.ref.png | Bin .../big-little-triangle.base.rgb24.ref.png | Bin .../reference/big-little-triangle.rgb24.ref.png | Bin .../big-little-triangle.traps.argb32.ref.png | Bin .../big-little-triangle.traps.rgb24.ref.png | Bin .../test/reference/big-trap.base.argb32.ref.png | Bin .../test/reference/big-trap.base.rgb24.ref.png | Bin .../test/reference/big-trap.mask.argb32.ref.png | Bin .../test/reference/big-trap.mask.rgb24.ref.png | Bin .../test/reference/big-trap.traps.argb32.ref.png | Bin .../test/reference/big-trap.traps.rgb24.ref.png | Bin .../reference/bilevel-image.base.argb32.ref.png | Bin .../test/reference/bilevel-image.base.rgb24.ref.png | Bin .../cairo/test/reference/bilevel-image.ref.png | Bin .../reference/bilevel-xlib-fallback.rgb24.ref.png | Bin .../reference/bilevel-xlib-window.rgb24.ref.png | Bin .../test/reference/bilevel-xlib.argb32.ref.png | Bin .../cairo/test/reference/bilevel-xlib.rgb24.ref.png | Bin .../cairo/test/reference/bitmap-font.argb32.ref.png | Bin .../test/reference/bitmap-font.base.argb32.ref.png | Bin .../test/reference/bitmap-font.base.rgb24.ref.png | Bin .../cairo/test/reference/bitmap-font.rgb24.ref.png | Bin .../cairo/test/reference/bug-40410.argb32.ref.png | Bin .../test/reference/bug-40410.base.argb32.ref.png | Bin .../test/reference/bug-40410.base.rgb24.ref.png | Bin .../cairo/test/reference/bug-40410.rgb24.ref.png | Bin .../test/reference/bug-40410.traps.argb32.ref.png | Bin .../test/reference/bug-40410.traps.rgb24.ref.png | Bin .../cairo/test/reference/bug-51910.ref.png | Bin .../cairo/test/reference/bug-bo-collins.ref.png | Bin .../bug-bo-rectangular.base.argb32.ref.png | Bin .../reference/bug-bo-rectangular.base.rgb24.ref.png | Bin .../reference/bug-bo-rectangular.image16.ref.png | Bin .../test/reference/bug-bo-rectangular.ps.xfail.png | Bin .../cairo/test/reference/bug-bo-rectangular.ref.png | Bin .../test/reference/bug-bo-ricotz.argb32.ref.png | Bin .../reference/bug-bo-ricotz.base.argb32.ref.png | Bin .../test/reference/bug-bo-ricotz.base.rgb24.ref.png | Bin .../test/reference/bug-bo-ricotz.rgb24.ref.png | Bin .../test/reference/bug-bo-ricotz.traps.ref.png | Bin .../cairo/test/reference/bug-extents.argb32.ref.png | Bin .../test/reference/bug-extents.base.argb32.ref.png | Bin .../test/reference/bug-extents.base.rgb24.ref.png | Bin .../test/reference/bug-extents.image16.ref.png | Bin .../cairo/test/reference/bug-extents.ps.ref.png | Bin .../cairo/test/reference/bug-extents.quartz.ref.png | Bin .../cairo/test/reference/bug-extents.rgb24.ref.png | Bin .../test/reference/bug-extents.traps.argb32.ref.png | Bin .../test/reference/bug-extents.traps.rgb24.ref.png | Bin .../test/reference/bug-seams.base.argb32.ref.png | Bin .../test/reference/bug-seams.base.rgb24.ref.png | Bin .../cairo/test/reference/bug-seams.image.xfail.png | Bin .../test/reference/bug-seams.mask.argb32.ref.png | Bin .../test/reference/bug-seams.mask.rgb24.ref.png | Bin .../cairo/test/reference/bug-seams.ref.png | Bin .../test/reference/bug-seams.traps.argb32.ref.png | Bin .../test/reference/bug-seams.traps.rgb24.ref.png | Bin .../test/reference/bug-seams.xlib-fallback.ref.png | Bin .../test/reference/bug-source-cu.argb32.ref.png | Bin .../test/reference/bug-source-cu.rgb24.ref.png | Bin .../reference/bug-source-cu.traps.argb32.ref.png | Bin .../reference/bug-source-cu.traps.rgb24.ref.png | Bin .../cairo/test/reference/bug-spline.ref.png | Bin .../3rd-party}/cairo/test/reference/caps-05.ref.png | Bin .../cairo/test/reference/caps-05.traps.ref.png | Bin .../3rd-party}/cairo/test/reference/caps-1.ref.png | Bin .../cairo/test/reference/caps-1.traps.ref.png | Bin .../3rd-party}/cairo/test/reference/caps-2.ref.png | Bin .../cairo/test/reference/caps-2.traps.ref.png | Bin .../cairo/test/reference/caps-joins-05.ref.png | Bin .../test/reference/caps-joins-05.traps.ref.png | Bin .../cairo/test/reference/caps-joins-1.ref.png | Bin .../cairo/test/reference/caps-joins-1.traps.ref.png | Bin .../cairo/test/reference/caps-joins-2.ref.png | Bin .../cairo/test/reference/caps-joins-2.traps.ref.png | Bin .../test/reference/caps-joins-alpha.image16.ref.png | Bin .../reference/caps-joins-alpha.mask.argb32.ref.png | Bin .../reference/caps-joins-alpha.mask.rgb24.ref.png | Bin .../test/reference/caps-joins-alpha.quartz.ref.png | Bin .../cairo/test/reference/caps-joins-alpha.ref.png | Bin .../reference/caps-joins-alpha.traps.argb32.ref.png | Bin .../reference/caps-joins-alpha.traps.rgb24.ref.png | Bin .../test/reference/caps-joins-curve.image16.ref.png | Bin .../reference/caps-joins-curve.mask.argb32.ref.png | Bin .../reference/caps-joins-curve.mask.rgb24.ref.png | Bin .../test/reference/caps-joins-curve.ps.ref.png | Bin .../test/reference/caps-joins-curve.quartz.ref.png | Bin .../cairo/test/reference/caps-joins-curve.ref.png | Bin .../reference/caps-joins-curve.traps.argb32.ref.png | Bin .../reference/caps-joins-curve.traps.rgb24.ref.png | Bin .../cairo/test/reference/caps-joins.argb32.ref.png | Bin .../test/reference/caps-joins.base.argb32.ref.png | Bin .../test/reference/caps-joins.base.rgb24.ref.png | Bin .../cairo/test/reference/caps-joins.image16.ref.png | Bin .../cairo/test/reference/caps-joins.ps.ref.png | Bin .../cairo/test/reference/caps-joins.rgb24.ref.png | Bin .../test/reference/caps-joins.traps.argb32.ref.png | Bin .../test/reference/caps-joins.traps.rgb24.ref.png | Bin .../test/reference/caps-sub-paths.argb32.ref.png | Bin .../reference/caps-sub-paths.base.argb32.ref.png | Bin .../reference/caps-sub-paths.base.rgb24.ref.png | Bin .../test/reference/caps-sub-paths.image16.ref.png | Bin .../cairo/test/reference/caps-sub-paths.ps.ref.png | Bin .../test/reference/caps-sub-paths.rgb24.ref.png | Bin .../reference/caps-sub-paths.traps.argb32.ref.png | Bin .../reference/caps-sub-paths.traps.rgb24.ref.png | Bin .../reference/caps-tails-curve.mask.argb32.ref.png | Bin .../reference/caps-tails-curve.mask.rgb24.ref.png | Bin .../test/reference/caps-tails-curve.ps.ref.png | Bin .../cairo/test/reference/caps-tails-curve.ref.png | Bin .../reference/caps-tails-curve.traps.argb32.ref.png | Bin .../reference/caps-tails-curve.traps.rgb24.ref.png | Bin .../test/reference/caps-tails-curve.xcb.ref.png | Bin .../cairo/test/reference/caps.argb32.ref.png | Bin .../cairo/test/reference/caps.base.argb32.ref.png | Bin .../cairo/test/reference/caps.base.rgb24.ref.png | Bin .../cairo/test/reference/caps.image16.ref.png | Bin .../3rd-party}/cairo/test/reference/caps.ps.ref.png | Bin .../cairo/test/reference/caps.rgb24.ref.png | Bin .../cairo/test/reference/caps.traps.argb32.ref.png | Bin .../cairo/test/reference/caps.traps.rgb24.ref.png | Bin .../test/reference/checkerboard.base.argb32.ref.png | Bin .../test/reference/checkerboard.base.rgb24.ref.png | Bin .../cairo/test/reference/checkerboard.ref.png | Bin .../test/reference/clear-source.argb32.ref.png | Bin .../test/reference/clear-source.base.argb32.ref.png | Bin .../test/reference/clear-source.base.rgb24.ref.png | Bin .../test/reference/clear-source.image16.ref.png | Bin .../cairo/test/reference/clear-source.pdf.xfail.png | Bin .../cairo/test/reference/clear-source.ps.xfail.png | Bin .../cairo/test/reference/clear-source.rgb24.ref.png | Bin .../reference/clear-source.traps.argb32.ref.png | Bin .../test/reference/clear-source.traps.rgb24.ref.png | Bin .../cairo/test/reference/clear.argb32.ref.png | Bin .../cairo/test/reference/clear.base.argb32.ref.png | Bin .../cairo/test/reference/clear.base.rgb24.ref.png | Bin .../cairo/test/reference/clear.pdf.argb32.ref.png | Bin .../cairo/test/reference/clear.ps.argb32.ref.png | Bin .../test/reference/clear.quartz.argb32.ref.png | Bin .../cairo/test/reference/clear.quartz.rgb24.ref.png | Bin .../cairo/test/reference/clear.rgb24.ref.png | Bin .../test/reference/clear.svg12.argb32.xfail.png | Bin .../test/reference/clear.svg12.rgb24.xfail.png | Bin .../cairo/test/reference/clear.traps.argb32.ref.png | Bin .../cairo/test/reference/clear.traps.rgb24.ref.png | Bin .../test/reference/clip-all.base.argb32.ref.png | Bin .../test/reference/clip-all.base.rgb24.ref.png | Bin .../cairo/test/reference/clip-all.ref.png | Bin .../test/reference/clip-complex-bug61492.ref.png | Bin .../clip-complex-shape-eo-aa.base.argb32.ref.png | Bin .../clip-complex-shape-eo-aa.base.rgb24.ref.png | Bin .../test/reference/clip-complex-shape-eo-aa.ref.png | Bin .../clip-complex-shape-eo-mono.base.argb32.ref.png | Bin .../clip-complex-shape-eo-mono.base.rgb24.ref.png | Bin .../reference/clip-complex-shape-eo-mono.ref.png | Bin .../reference/clip-contexts.base.argb32.ref.png | Bin .../test/reference/clip-contexts.base.rgb24.ref.png | Bin .../cairo/test/reference/clip-contexts.ref.png | Bin .../reference/clip-device-offset.argb32.ref.png | Bin .../clip-device-offset.base.argb32.ref.png | Bin .../reference/clip-device-offset.base.rgb24.ref.png | Bin .../test/reference/clip-device-offset.rgb24.ref.png | Bin .../reference/clip-disjoint-hatching.argb32.ref.png | Bin .../clip-disjoint-hatching.base.argb32.ref.png | Bin .../clip-disjoint-hatching.base.rgb24.ref.png | Bin .../clip-disjoint-hatching.mask.argb32.ref.png | Bin .../clip-disjoint-hatching.mask.rgb24.ref.png | Bin .../reference/clip-disjoint-hatching.rgb24.ref.png | Bin .../clip-disjoint-hatching.traps.argb32.ref.png | Bin .../clip-disjoint-hatching.traps.rgb24.ref.png | Bin .../cairo/test/reference/clip-disjoint-quad.ref.png | Bin .../test/reference/clip-disjoint-quad.traps.ref.png | Bin .../reference/clip-disjoint.base.argb32.ref.png | Bin .../test/reference/clip-disjoint.base.rgb24.ref.png | Bin .../test/reference/clip-disjoint.image16.ref.png | Bin .../reference/clip-disjoint.mask.argb32.ref.png | Bin .../test/reference/clip-disjoint.mask.rgb24.ref.png | Bin .../cairo/test/reference/clip-disjoint.ps.ref.png | Bin .../test/reference/clip-disjoint.quartz.ref.png | Bin .../cairo/test/reference/clip-disjoint.ref.png | Bin .../reference/clip-disjoint.traps.argb32.ref.png | Bin .../reference/clip-disjoint.traps.rgb24.ref.png | Bin .../reference/clip-empty-group.base.argb32.ref.png | Bin .../reference/clip-empty-group.base.rgb24.ref.png | Bin .../cairo/test/reference/clip-empty-group.ref.png | Bin .../reference/clip-empty-save.base.argb32.ref.png | Bin .../reference/clip-empty-save.base.rgb24.ref.png | Bin .../cairo/test/reference/clip-empty-save.ref.png | Bin .../test/reference/clip-empty.base.argb32.ref.png | Bin .../test/reference/clip-empty.base.rgb24.ref.png | Bin .../cairo/test/reference/clip-empty.ref.png | Bin .../reference/clip-fill-eo-unbounded.argb32.ref.png | Bin .../clip-fill-eo-unbounded.base.argb32.ref.png | Bin .../clip-fill-eo-unbounded.base.rgb24.ref.png | Bin .../clip-fill-eo-unbounded.image16.ref.png | Bin .../clip-fill-eo-unbounded.mask.argb32.ref.png | Bin .../clip-fill-eo-unbounded.mask.rgb24.ref.png | Bin .../clip-fill-eo-unbounded.quartz.argb32.ref.png | Bin .../clip-fill-eo-unbounded.quartz.rgb24.ref.png | Bin .../reference/clip-fill-eo-unbounded.rgb24.ref.png | Bin .../clip-fill-eo-unbounded.svg12.rgb24.xfail.png | Bin .../clip-fill-eo-unbounded.traps.argb32.ref.png | Bin .../clip-fill-eo-unbounded.traps.rgb24.ref.png | Bin ...ip-fill-eo-unbounded.xlib-fallback.rgb24.ref.png | Bin .../reference/clip-fill-no-op.base.argb32.ref.png | Bin .../reference/clip-fill-no-op.base.rgb24.ref.png | Bin .../test/reference/clip-fill-no-op.image16.ref.png | Bin .../cairo/test/reference/clip-fill-no-op.ref.png | Bin .../reference/clip-fill-nz-unbounded.argb32.ref.png | Bin .../clip-fill-nz-unbounded.base.argb32.ref.png | Bin .../clip-fill-nz-unbounded.base.rgb24.ref.png | Bin .../clip-fill-nz-unbounded.image16.ref.png | Bin .../clip-fill-nz-unbounded.mask.argb32.ref.png | Bin .../clip-fill-nz-unbounded.mask.rgb24.ref.png | Bin .../clip-fill-nz-unbounded.quartz.argb32.ref.png | Bin .../clip-fill-nz-unbounded.quartz.rgb24.ref.png | Bin .../reference/clip-fill-nz-unbounded.rgb24.ref.png | Bin .../clip-fill-nz-unbounded.svg12.rgb24.xfail.png | Bin .../clip-fill-nz-unbounded.traps.argb32.ref.png | Bin .../clip-fill-nz-unbounded.traps.rgb24.ref.png | Bin ...ip-fill-nz-unbounded.xlib-fallback.rgb24.ref.png | Bin .../clip-fill-rule-pixel-aligned.argb32.ref.png | Bin ...clip-fill-rule-pixel-aligned.base.argb32.ref.png | Bin .../clip-fill-rule-pixel-aligned.base.rgb24.ref.png | Bin .../clip-fill-rule-pixel-aligned.rgb24.ref.png | Bin .../test/reference/clip-fill-rule.argb32.ref.png | Bin .../reference/clip-fill-rule.base.argb32.ref.png | Bin .../reference/clip-fill-rule.base.rgb24.ref.png | Bin .../test/reference/clip-fill-rule.image16.ref.png | Bin .../reference/clip-fill-rule.pdf.argb32.ref.png | Bin .../test/reference/clip-fill-rule.ps.argb32.ref.png | Bin .../test/reference/clip-fill-rule.ps.rgb24.ref.png | Bin .../reference/clip-fill-rule.quartz.rgb24.ref.png | Bin .../test/reference/clip-fill-rule.rgb24.ref.png | Bin .../clip-fill-rule.test-paginated.rgb24.ref.png | Bin .../reference/clip-fill-rule.traps.argb32.ref.png | Bin .../reference/clip-fill-rule.traps.rgb24.ref.png | Bin .../cairo/test/reference/clip-fill.argb32.ref.png | Bin .../test/reference/clip-fill.base.argb32.ref.png | Bin .../test/reference/clip-fill.base.rgb24.ref.png | Bin .../cairo/test/reference/clip-fill.image16.ref.png | Bin .../test/reference/clip-fill.mask.argb32.ref.png | Bin .../test/reference/clip-fill.mask.rgb24.ref.png | Bin .../cairo/test/reference/clip-fill.ps.xfail.png | Bin .../cairo/test/reference/clip-fill.quartz.ref.png | Bin .../cairo/test/reference/clip-fill.rgb24.ref.png | Bin .../test/reference/clip-fill.traps.argb32.ref.png | Bin .../test/reference/clip-fill.traps.rgb24.ref.png | Bin .../test/reference/clip-fill.xlib-fallback.ref.png | Bin ...up-shapes-aligned-rectangles.base.argb32.ref.png | Bin ...oup-shapes-aligned-rectangles.base.rgb24.ref.png | Bin .../clip-group-shapes-aligned-rectangles.ref.png | Bin .../clip-group-shapes-circles.argb32.ref.png | Bin .../clip-group-shapes-circles.base.argb32.ref.png | Bin .../clip-group-shapes-circles.base.rgb24.ref.png | Bin .../clip-group-shapes-circles.mask.argb32.ref.png | Bin .../clip-group-shapes-circles.mask.rgb24.ref.png | Bin .../reference/clip-group-shapes-circles.ps.ref.png | Bin .../clip-group-shapes-circles.quartz.ref.png | Bin .../clip-group-shapes-circles.rgb24.ref.png | Bin .../clip-group-shapes-circles.traps.argb32.ref.png | Bin .../clip-group-shapes-circles.traps.rgb24.ref.png | Bin ...-shapes-unaligned-rectangles.base.argb32.ref.png | Bin ...p-shapes-unaligned-rectangles.base.rgb24.ref.png | Bin ...-shapes-unaligned-rectangles.mask.argb32.ref.png | Bin ...p-shapes-unaligned-rectangles.mask.rgb24.ref.png | Bin .../clip-group-shapes-unaligned-rectangles.ref.png | Bin ...shapes-unaligned-rectangles.traps.argb32.ref.png | Bin ...-shapes-unaligned-rectangles.traps.rgb24.ref.png | Bin .../cairo/test/reference/clip-image.argb32.ref.png | Bin .../test/reference/clip-image.base.argb32.ref.png | Bin .../test/reference/clip-image.base.rgb24.ref.png | Bin .../cairo/test/reference/clip-image.image16.ref.png | Bin .../test/reference/clip-image.mask.argb32.ref.png | Bin .../test/reference/clip-image.mask.rgb24.ref.png | Bin .../cairo/test/reference/clip-image.ps.ref.png | Bin .../cairo/test/reference/clip-image.rgb24.ref.png | Bin .../test/reference/clip-image.traps.argb32.ref.png | Bin .../test/reference/clip-image.traps.rgb24.ref.png | Bin .../test/reference/clip-intersect.argb32.ref.png | Bin .../reference/clip-intersect.base.argb32.ref.png | Bin .../reference/clip-intersect.base.rgb24.ref.png | Bin .../test/reference/clip-intersect.rgb24.ref.png | Bin .../reference/clip-intersect.traps.argb32.ref.png | Bin .../reference/clip-intersect.traps.rgb24.ref.png | Bin .../reference/clip-mixed-antialias.argb32.ref.png | Bin .../clip-mixed-antialias.base.argb32.ref.png | Bin .../clip-mixed-antialias.base.rgb24.ref.png | Bin .../reference/clip-mixed-antialias.rgb24.ref.png | Bin .../clip-mixed-antialias.traps.argb32.ref.png | Bin .../clip-mixed-antialias.traps.rgb24.ref.png | Bin .../test/reference/clip-nesting.argb32.ref.png | Bin .../test/reference/clip-nesting.base.argb32.ref.png | Bin .../test/reference/clip-nesting.base.rgb24.ref.png | Bin .../test/reference/clip-nesting.mask.rgb24.ref.png | Bin .../test/reference/clip-nesting.pdf.argb32.ref.png | Bin .../test/reference/clip-nesting.ps.argb32.ref.png | Bin .../test/reference/clip-nesting.ps.rgb24.ref.png | Bin .../reference/clip-nesting.quartz.argb32.ref.png | Bin .../reference/clip-nesting.quartz.rgb24.ref.png | Bin .../cairo/test/reference/clip-nesting.rgb24.ref.png | Bin .../clip-nesting.test-paginated.rgb24.ref.png | Bin .../reference/clip-nesting.traps.argb32.ref.png | Bin .../test/reference/clip-nesting.traps.rgb24.ref.png | Bin .../test/reference/clip-operator.argb32.ref.png | Bin .../reference/clip-operator.base.argb32.ref.png | Bin .../test/reference/clip-operator.base.rgb24.ref.png | Bin .../test/reference/clip-operator.gl.argb32.ref.png | Bin .../test/reference/clip-operator.image16.ref.png | Bin .../reference/clip-operator.mask.argb32.ref.png | Bin .../test/reference/clip-operator.mask.rgb24.ref.png | Bin .../test/reference/clip-operator.pdf.argb32.ref.png | Bin .../test/reference/clip-operator.pdf.rgb24.ref.png | Bin .../test/reference/clip-operator.ps2.rgb24.ref.png | Bin .../test/reference/clip-operator.ps3.argb32.ref.png | Bin .../cairo/test/reference/clip-operator.ps3.ref.png | Bin .../test/reference/clip-operator.ps3.rgb24.ref.png | Bin .../reference/clip-operator.quartz.argb32.ref.png | Bin .../reference/clip-operator.quartz.rgb24.ref.png | Bin .../test/reference/clip-operator.rgb24.ref.png | Bin .../reference/clip-operator.svg12.argb32.xfail.png | Bin .../reference/clip-operator.svg12.rgb24.xfail.png | Bin .../clip-operator.test-paginated.argb32.ref.png | Bin .../reference/clip-operator.traps.argb32.ref.png | Bin .../reference/clip-operator.traps.rgb24.ref.png | Bin .../reference/clip-operator.xlib-fallback.ref.png | Bin .../test/reference/clip-polygons.argb32.ref.png | Bin .../reference/clip-polygons.base.argb32.ref.png | Bin .../test/reference/clip-polygons.base.rgb24.ref.png | Bin .../reference/clip-polygons.mask.argb32.ref.png | Bin .../test/reference/clip-polygons.mask.rgb24.ref.png | Bin .../test/reference/clip-polygons.rgb24.ref.png | Bin .../test/reference/clip-polygons.traps.ref.png | Bin .../test/reference/clip-push-group.argb32.ref.png | Bin .../reference/clip-push-group.base.argb32.ref.png | Bin .../reference/clip-push-group.base.rgb24.ref.png | Bin .../test/reference/clip-push-group.image16.ref.png | Bin .../test/reference/clip-push-group.pdf.ref.png | Bin .../cairo/test/reference/clip-push-group.ps.ref.png | Bin .../test/reference/clip-push-group.quartz.ref.png | Bin .../test/reference/clip-push-group.rgb24.ref.png | Bin .../test/reference/clip-push-group.svg.ref.png | Bin .../reference/clip-push-group.traps.argb32.ref.png | Bin .../reference/clip-push-group.traps.rgb24.ref.png | Bin .../reference/clip-rectilinear.base.argb32.ref.png | Bin .../reference/clip-rectilinear.base.rgb24.ref.png | Bin .../reference/clip-rectilinear.mask.argb32.ref.png | Bin .../reference/clip-rectilinear.mask.rgb24.ref.png | Bin .../cairo/test/reference/clip-rectilinear.ref.png | Bin .../test/reference/clip-rectilinear.traps.ref.png | Bin ...p-rotate-image-surface-paint.base.argb32.ref.png | Bin ...ip-rotate-image-surface-paint.base.rgb24.ref.png | Bin .../clip-rotate-image-surface-paint.ref.png | Bin .../cairo/test/reference/clip-shape.argb32.ref.png | Bin .../test/reference/clip-shape.base.argb32.ref.png | Bin .../test/reference/clip-shape.base.rgb24.ref.png | Bin .../cairo/test/reference/clip-shape.image16.ref.png | Bin .../test/reference/clip-shape.mask.argb32.ref.png | Bin .../test/reference/clip-shape.mask.rgb24.ref.png | Bin .../cairo/test/reference/clip-shape.ps.ref.png | Bin .../cairo/test/reference/clip-shape.quartz.ref.png | Bin .../cairo/test/reference/clip-shape.rgb24.ref.png | Bin .../test/reference/clip-shape.traps.argb32.ref.png | Bin .../test/reference/clip-shape.traps.rgb24.ref.png | Bin .../test/reference/clip-shape.xlib-fallback.ref.png | Bin .../reference/clip-stroke-no-op.base.argb32.ref.png | Bin .../reference/clip-stroke-no-op.base.rgb24.ref.png | Bin .../reference/clip-stroke-no-op.image16.ref.png | Bin .../cairo/test/reference/clip-stroke-no-op.ref.png | Bin .../reference/clip-stroke-unbounded.argb32.ref.png | Bin .../clip-stroke-unbounded.base.argb32.ref.png | Bin .../clip-stroke-unbounded.base.rgb24.ref.png | Bin .../clip-stroke-unbounded.image16.rgb24.ref.png | Bin .../clip-stroke-unbounded.mask.argb32.ref.png | Bin .../clip-stroke-unbounded.mask.rgb24.ref.png | Bin .../clip-stroke-unbounded.quartz.argb32.ref.png | Bin .../clip-stroke-unbounded.quartz.rgb24.ref.png | Bin .../reference/clip-stroke-unbounded.rgb24.ref.png | Bin .../clip-stroke-unbounded.svg12.rgb24.xfail.png | Bin .../clip-stroke-unbounded.traps.argb32.ref.png | Bin .../clip-stroke-unbounded.traps.rgb24.ref.png | Bin ...lip-stroke-unbounded.xlib-fallback.rgb24.ref.png | Bin .../test/reference/clip-stroke.base.argb32.ref.png | Bin .../test/reference/clip-stroke.base.rgb24.ref.png | Bin .../test/reference/clip-stroke.image16.ref.png | Bin .../test/reference/clip-stroke.mask.argb32.ref.png | Bin .../test/reference/clip-stroke.mask.rgb24.ref.png | Bin .../cairo/test/reference/clip-stroke.ps.xfail.png | Bin .../cairo/test/reference/clip-stroke.quartz.ref.png | Bin .../cairo/test/reference/clip-stroke.ref.png | Bin .../test/reference/clip-stroke.traps.argb32.ref.png | Bin .../test/reference/clip-stroke.traps.rgb24.ref.png | Bin .../reference/clip-stroke.xlib-fallback.ref.png | Bin .../cairo/test/reference/clip-text.argb32.ref.png | Bin .../test/reference/clip-text.base.argb32.ref.png | Bin .../test/reference/clip-text.base.rgb24.ref.png | Bin .../cairo/test/reference/clip-text.image16.ref.png | Bin .../test/reference/clip-text.mask.argb32.ref.png | Bin .../test/reference/clip-text.mask.rgb24.ref.png | Bin .../cairo/test/reference/clip-text.ps.xfail.png | Bin .../cairo/test/reference/clip-text.quartz.ref.png | Bin .../cairo/test/reference/clip-text.rgb24.ref.png | Bin .../cairo/test/reference/clip-text.svg.ref.png | Bin .../test/reference/clip-text.traps.argb32.ref.png | Bin .../test/reference/clip-text.traps.rgb24.ref.png | Bin .../clip-twice-rectangle.base.argb32.ref.png | Bin .../clip-twice-rectangle.base.rgb24.ref.png | Bin .../test/reference/clip-twice-rectangle.ref.png | Bin .../cairo/test/reference/clip-twice.argb32.ref.png | Bin .../test/reference/clip-twice.base.argb32.ref.png | Bin .../test/reference/clip-twice.base.rgb24.ref.png | Bin .../cairo/test/reference/clip-twice.image16.ref.png | Bin .../test/reference/clip-twice.mask.argb32.ref.png | Bin .../test/reference/clip-twice.mask.rgb24.ref.png | Bin .../test/reference/clip-twice.pdf.argb32.ref.png | Bin .../test/reference/clip-twice.ps.argb32.ref.png | Bin .../test/reference/clip-twice.ps.rgb24.ref.png | Bin .../test/reference/clip-twice.quartz.argb32.ref.png | Bin .../test/reference/clip-twice.quartz.rgb24.ref.png | Bin .../cairo/test/reference/clip-twice.rgb24.ref.png | Bin .../clip-twice.test-paginated.argb32.ref.png | Bin .../clip-twice.test-paginated.rgb24.ref.png | Bin .../test/reference/clip-twice.traps.argb32.ref.png | Bin .../test/reference/clip-twice.traps.rgb24.ref.png | Bin .../test/reference/clip-unbounded.argb32.ref.png | Bin .../reference/clip-unbounded.base.argb32.ref.png | Bin .../reference/clip-unbounded.base.rgb24.ref.png | Bin .../reference/clip-unbounded.pdf.argb32.xfail.png | Bin .../reference/clip-unbounded.pdf.rgb24.xfail.png | Bin .../test/reference/clip-unbounded.rgb24.ref.png | Bin .../reference/clip-unbounded.svg12.rgb24.xfail.png | Bin .../test/reference/clip-xlib-fallback.rgb24.ref.png | Bin .../test/reference/clip-xlib-window.rgb24.ref.png | Bin .../cairo/test/reference/clip-xlib.argb32.ref.png | Bin .../cairo/test/reference/clip-xlib.rgb24.ref.png | Bin .../test/reference/clipped-group.argb32.ref.png | Bin .../reference/clipped-group.base.argb32.ref.png | Bin .../test/reference/clipped-group.base.rgb24.ref.png | Bin .../test/reference/clipped-group.image16.ref.png | Bin .../reference/clipped-group.mask.argb32.ref.png | Bin .../test/reference/clipped-group.mask.rgb24.ref.png | Bin .../cairo/test/reference/clipped-group.pdf.ref.png | Bin .../cairo/test/reference/clipped-group.ps2.ref.png | Bin .../cairo/test/reference/clipped-group.ps3.ref.png | Bin .../test/reference/clipped-group.quartz.ref.png | Bin .../test/reference/clipped-group.rgb24.ref.png | Bin .../cairo/test/reference/clipped-group.svg.ref.png | Bin .../reference/clipped-group.traps.argb32.ref.png | Bin .../reference/clipped-group.traps.rgb24.ref.png | Bin .../reference/clipped-group.xlib-fallback.ref.png | Bin .../reference/clipped-surface.base.argb32.ref.png | Bin .../reference/clipped-surface.base.rgb24.ref.png | Bin .../test/reference/clipped-surface.image16.ref.png | Bin .../cairo/test/reference/clipped-surface.ref.png | Bin .../cairo/test/reference/clipped-trapezoids.ref.png | Bin .../close-path-current-point.base.argb32.ref.png | Bin .../close-path-current-point.base.rgb24.ref.png | Bin .../close-path-current-point.image16.ref.png | Bin .../close-path-current-point.mask.argb32.ref.png | Bin .../close-path-current-point.mask.rgb24.ref.png | Bin .../reference/close-path-current-point.ps.ref.png | Bin .../test/reference/close-path-current-point.ref.png | Bin .../close-path-current-point.traps.argb32.ref.png | Bin .../close-path-current-point.traps.rgb24.ref.png | Bin .../cairo/test/reference/close-path.argb32.ref.png | Bin .../test/reference/close-path.base.argb32.ref.png | Bin .../test/reference/close-path.base.rgb24.ref.png | Bin .../cairo/test/reference/close-path.ps2.ref.png | Bin .../cairo/test/reference/close-path.ps3.ref.png | Bin .../cairo/test/reference/close-path.rgb24.ref.png | Bin .../test/reference/close-path.traps.argb32.ref.png | Bin .../test/reference/close-path.traps.rgb24.ref.png | Bin ...nteger-translate-over-repeat.base.argb32.ref.png | Bin ...integer-translate-over-repeat.base.rgb24.ref.png | Bin ...posite-integer-translate-over-repeat.ps2.ref.png | Bin ...posite-integer-translate-over-repeat.ps3.ref.png | Bin .../composite-integer-translate-over-repeat.ref.png | Bin ...osite-integer-translate-over.base.argb32.ref.png | Bin ...posite-integer-translate-over.base.rgb24.ref.png | Bin ...composite-integer-translate-over.image16.ref.png | Bin .../composite-integer-translate-over.ps2.ref.png | Bin .../composite-integer-translate-over.ps3.ref.png | Bin .../composite-integer-translate-over.ref.png | Bin ...ite-integer-translate-source.base.argb32.ref.png | Bin ...site-integer-translate-source.base.rgb24.ref.png | Bin ...mposite-integer-translate-source.image16.ref.png | Bin .../composite-integer-translate-source.ps2.ref.png | Bin .../composite-integer-translate-source.ps3.ref.png | Bin .../composite-integer-translate-source.ref.png | Bin ...-integer-translate-source.svg12.argb32.xfail.png | Bin ...e-integer-translate-source.svg12.rgb24.xfail.png | Bin .../reference/copy-disjoint.base.argb32.ref.png | Bin .../test/reference/copy-disjoint.base.rgb24.ref.png | Bin .../cairo/test/reference/copy-disjoint.ref.png | Bin .../cairo/test/reference/copy-path.argb32.ref.png | Bin .../test/reference/copy-path.base.argb32.ref.png | Bin .../test/reference/copy-path.base.rgb24.ref.png | Bin .../cairo/test/reference/copy-path.image16.ref.png | Bin .../cairo/test/reference/copy-path.ps.ref.png | Bin .../cairo/test/reference/copy-path.rgb24.ref.png | Bin .../test/reference/copy-path.traps.argb32.ref.png | Bin .../test/reference/copy-path.traps.rgb24.ref.png | Bin .../reference/coverage-column-triangles.ref.png | Bin .../coverage-column-triangles.xlib.xfail.png | Bin .../reference/coverage-intersecting-quads.ref.png | Bin .../coverage-intersecting-quads.xlib.xfail.png | Bin .../coverage-intersecting-triangles.ref.png | Bin .../coverage-intersecting-triangles.xlib.xfail.png | Bin .../test/reference/coverage-rectangles.ref.png | Bin .../reference/coverage-rectangles.xlib.xfail.png | Bin .../test/reference/coverage-row-triangles.ref.png | Bin .../reference/coverage-row-triangles.xlib.xfail.png | Bin .../cairo/test/reference/coverage-triangles.ref.png | Bin .../reference/coverage-triangles.xlib.xfail.png | Bin .../create-from-png-stream.base.argb32.ref.png | Bin .../create-from-png-stream.base.rgb24.ref.png | Bin .../test/reference/create-from-png-stream.ref.png | Bin .../test/reference/create-from-png.alpha.ref.png | Bin .../test/reference/create-from-png.argb32.ref.png | Bin .../reference/create-from-png.base.argb32.ref.png | Bin .../reference/create-from-png.base.rgb24.ref.png | Bin .../reference/create-from-png.gray-alpha.ref.png | Bin .../test/reference/create-from-png.gray.ref.png | Bin .../reference/create-from-png.indexed-alpha.ref.png | Bin .../test/reference/create-from-png.indexed.ref.png | Bin .../reference/create-from-png.mask.argb32.ref.png | Bin .../reference/create-from-png.mask.rgb24.ref.png | Bin .../test/reference/create-from-png.rgb24.ref.png | Bin .../reference/create-from-png.traps.argb32.ref.png | Bin .../reference/create-from-png.traps.rgb24.ref.png | Bin .../test/reference/culled-glyphs.argb32.ref.png | Bin .../reference/culled-glyphs.base.argb32.ref.png | Bin .../test/reference/culled-glyphs.base.rgb24.ref.png | Bin .../test/reference/culled-glyphs.image16.ref.png | Bin .../cairo/test/reference/culled-glyphs.ps.ref.png | Bin .../test/reference/culled-glyphs.quartz.ref.png | Bin .../test/reference/culled-glyphs.rgb24.ref.png | Bin .../curve-to-as-line-to.base.argb32.ref.png | Bin .../curve-to-as-line-to.base.rgb24.ref.png | Bin .../curve-to-as-line-to.mask.argb32.ref.png | Bin .../curve-to-as-line-to.mask.rgb24.ref.png | Bin .../test/reference/curve-to-as-line-to.ps.xfail.png | Bin .../test/reference/curve-to-as-line-to.ref.png | Bin .../curve-to-as-line-to.traps.argb32.ref.png | Bin .../curve-to-as-line-to.traps.rgb24.ref.png | Bin .../reference/dash-caps-joins.base.argb32.ref.png | Bin .../reference/dash-caps-joins.base.rgb24.ref.png | Bin .../test/reference/dash-caps-joins.image16.ref.png | Bin .../reference/dash-caps-joins.mask.argb32.ref.png | Bin .../reference/dash-caps-joins.mask.rgb24.ref.png | Bin .../cairo/test/reference/dash-caps-joins.ps.ref.png | Bin .../test/reference/dash-caps-joins.quartz.xfail.png | Bin .../cairo/test/reference/dash-caps-joins.ref.png | Bin .../reference/dash-caps-joins.traps.argb32.ref.png | Bin .../reference/dash-caps-joins.traps.rgb24.ref.png | Bin .../cairo/test/reference/dash-curve.image16.ref.png | Bin .../test/reference/dash-curve.mask.argb32.ref.png | Bin .../test/reference/dash-curve.mask.rgb24.ref.png | Bin .../cairo/test/reference/dash-curve.ps2.ref.png | Bin .../cairo/test/reference/dash-curve.ps3.ref.png | Bin .../test/reference/dash-curve.quartz.xfail.png | Bin .../cairo/test/reference/dash-curve.ref.png | Bin .../test/reference/dash-curve.traps.argb32.ref.png | Bin .../test/reference/dash-curve.traps.rgb24.ref.png | Bin .../reference/dash-infinite-loop.argb32.ref.png | Bin .../dash-infinite-loop.base.argb32.ref.png | Bin .../reference/dash-infinite-loop.base.rgb24.ref.png | Bin .../test/reference/dash-infinite-loop.ps.ref.png | Bin .../test/reference/dash-infinite-loop.rgb24.ref.png | Bin .../dash-infinite-loop.traps.argb32.ref.png | Bin .../dash-infinite-loop.traps.rgb24.ref.png | Bin .../test/reference/dash-no-dash.base.argb32.ref.png | Bin .../test/reference/dash-no-dash.base.rgb24.ref.png | Bin .../cairo/test/reference/dash-no-dash.ref.png | Bin .../reference/dash-offset-negative.argb32.ref.png | Bin .../dash-offset-negative.base.argb32.ref.png | Bin .../dash-offset-negative.base.rgb24.ref.png | Bin .../test/reference/dash-offset-negative.pdf.ref.png | Bin .../reference/dash-offset-negative.rgb24.ref.png | Bin .../dash-offset-negative.traps.argb32.ref.png | Bin .../dash-offset-negative.traps.rgb24.ref.png | Bin .../test/reference/dash-offset.base.argb32.ref.png | Bin .../test/reference/dash-offset.base.rgb24.ref.png | Bin .../cairo/test/reference/dash-offset.ref.png | Bin .../cairo/test/reference/dash-scale.image16.ref.png | Bin .../test/reference/dash-scale.mask.argb32.ref.png | Bin .../test/reference/dash-scale.mask.rgb24.ref.png | Bin .../cairo/test/reference/dash-scale.ps.ref.png | Bin .../cairo/test/reference/dash-scale.quartz.ref.png | Bin .../cairo/test/reference/dash-scale.ref.png | Bin .../test/reference/dash-scale.traps.argb32.ref.png | Bin .../test/reference/dash-scale.traps.rgb24.ref.png | Bin .../cairo/test/reference/dash-state.argb32.ref.png | Bin .../test/reference/dash-state.base.argb32.ref.png | Bin .../test/reference/dash-state.base.rgb24.ref.png | Bin .../cairo/test/reference/dash-state.image16.ref.png | Bin .../cairo/test/reference/dash-state.ps2.ref.png | Bin .../cairo/test/reference/dash-state.ps3.ref.png | Bin .../test/reference/dash-state.quartz.xfail.png | Bin .../cairo/test/reference/dash-state.rgb24.ref.png | Bin .../test/reference/dash-state.traps.argb32.ref.png | Bin .../test/reference/dash-state.traps.rgb24.ref.png | Bin .../test/reference/dash-zero-length.argb32.ref.png | Bin .../reference/dash-zero-length.base.argb32.ref.png | Bin .../reference/dash-zero-length.base.rgb24.ref.png | Bin .../reference/dash-zero-length.mask.rgb24.ref.png | Bin .../test/reference/dash-zero-length.ps2.ref.png | Bin .../reference/dash-zero-length.ps2.rgb24.ref.png | Bin .../test/reference/dash-zero-length.ps3.ref.png | Bin .../reference/dash-zero-length.ps3.rgb24.ref.png | Bin .../test/reference/dash-zero-length.rgb24.ref.png | Bin .../reference/dash-zero-length.traps.argb32.ref.png | Bin .../reference/dash-zero-length.traps.rgb24.ref.png | Bin .../reference/degenerate-arc.base.argb32.ref.png | Bin .../reference/degenerate-arc.base.rgb24.ref.png | Bin .../test/reference/degenerate-arc.image16.ref.png | Bin .../reference/degenerate-arc.mask.argb32.ref.png | Bin .../reference/degenerate-arc.mask.rgb24.ref.png | Bin .../cairo/test/reference/degenerate-arc.ps2.ref.png | Bin .../cairo/test/reference/degenerate-arc.ps3.ref.png | Bin .../test/reference/degenerate-arc.quartz.ref.png | Bin .../cairo/test/reference/degenerate-arc.ref.png | Bin .../reference/degenerate-arc.traps.argb32.ref.png | Bin .../reference/degenerate-arc.traps.rgb24.ref.png | Bin .../reference/degenerate-arcs.base.argb32.ref.png | Bin .../reference/degenerate-arcs.base.rgb24.ref.png | Bin .../test/reference/degenerate-arcs.image16.ref.png | Bin .../cairo/test/reference/degenerate-arcs.ref.png | Bin .../degenerate-curve-to.base.argb32.ref.png | Bin .../degenerate-curve-to.base.rgb24.ref.png | Bin .../reference/degenerate-curve-to.image16.ref.png | Bin .../degenerate-curve-to.mask.argb32.ref.png | Bin .../degenerate-curve-to.mask.rgb24.ref.png | Bin .../test/reference/degenerate-curve-to.ps.xfail.png | Bin .../reference/degenerate-curve-to.quartz.ref.png | Bin .../test/reference/degenerate-curve-to.ref.png | Bin .../degenerate-curve-to.traps.argb32.ref.png | Bin .../degenerate-curve-to.traps.rgb24.ref.png | Bin .../reference/degenerate-dash.base.argb32.ref.png | Bin .../reference/degenerate-dash.base.rgb24.ref.png | Bin .../reference/degenerate-dash.mask.argb32.ref.png | Bin .../reference/degenerate-dash.mask.rgb24.ref.png | Bin .../test/reference/degenerate-dash.ps.xfail.png | Bin .../test/reference/degenerate-dash.quartz.xfail.png | Bin .../cairo/test/reference/degenerate-dash.ref.png | Bin .../reference/degenerate-dash.traps.argb32.ref.png | Bin .../reference/degenerate-dash.traps.rgb24.ref.png | Bin .../degenerate-linear-gradient.argb32.ref.png | Bin .../degenerate-linear-gradient.base.argb32.ref.png | Bin .../degenerate-linear-gradient.base.rgb24.ref.png | Bin .../degenerate-linear-gradient.rgb24.ref.png | Bin .../test/reference/degenerate-path.argb32.ref.png | Bin .../reference/degenerate-path.base.argb32.ref.png | Bin .../reference/degenerate-path.base.rgb24.ref.png | Bin .../reference/degenerate-path.mask.argb32.ref.png | Bin .../reference/degenerate-path.mask.rgb24.ref.png | Bin .../reference/degenerate-path.ps.argb32.xfail.png | Bin .../reference/degenerate-path.ps.rgb24.xfail.png | Bin .../degenerate-path.quartz.argb32.xfail.png | Bin .../degenerate-path.quartz.rgb24.xfail.png | Bin .../test/reference/degenerate-path.rgb24.ref.png | Bin .../reference/degenerate-path.traps.argb32.ref.png | Bin .../reference/degenerate-path.traps.rgb24.ref.png | Bin .../test/reference/degenerate-pen.argb32.ref.png | Bin .../reference/degenerate-pen.base.argb32.ref.png | Bin .../reference/degenerate-pen.base.rgb24.ref.png | Bin .../test/reference/degenerate-pen.image16.ref.png | Bin .../cairo/test/reference/degenerate-pen.ps.ref.png | Bin .../test/reference/degenerate-pen.rgb24.ref.png | Bin .../reference/degenerate-pen.traps.argb32.ref.png | Bin .../reference/degenerate-pen.traps.rgb24.ref.png | Bin .../degenerate-radial-gradient.base.argb32.ref.png | Bin .../degenerate-radial-gradient.base.rgb24.ref.png | Bin .../reference/degenerate-radial-gradient.ref.png | Bin .../degenerate-rel-curve-to.base.argb32.ref.png | Bin .../degenerate-rel-curve-to.base.rgb24.ref.png | Bin .../degenerate-rel-curve-to.image16.ref.png | Bin .../degenerate-rel-curve-to.mask.argb32.ref.png | Bin .../degenerate-rel-curve-to.mask.rgb24.ref.png | Bin .../reference/degenerate-rel-curve-to.ps.ref.png | Bin .../degenerate-rel-curve-to.quartz.ref.png | Bin .../test/reference/degenerate-rel-curve-to.ref.png | Bin .../degenerate-rel-curve-to.traps.argb32.ref.png | Bin .../degenerate-rel-curve-to.traps.rgb24.ref.png | Bin .../test/reference/degenerate-solid-dash.ref.png | Bin .../device-offset-fractional.base.argb32.ref.png | Bin .../device-offset-fractional.base.rgb24.ref.png | Bin .../reference/device-offset-fractional.gl.xfail.png | Bin .../device-offset-fractional.pdf.xfail.png | Bin .../reference/device-offset-fractional.ps2.ref.png | Bin .../reference/device-offset-fractional.ps3.ref.png | Bin .../test/reference/device-offset-fractional.ref.png | Bin .../reference/device-offset-positive.argb32.ref.png | Bin .../device-offset-positive.base.argb32.ref.png | Bin .../device-offset-positive.base.rgb24.ref.png | Bin .../reference/device-offset-positive.rgb24.ref.png | Bin .../device-offset-scale.base.argb32.ref.png | Bin .../device-offset-scale.base.rgb24.ref.png | Bin .../test/reference/device-offset-scale.ref.png | Bin .../reference/device-offset-scale.svg.xfail.png | Bin .../test/reference/device-offset.argb32.ref.png | Bin .../reference/device-offset.base.argb32.ref.png | Bin .../test/reference/device-offset.base.rgb24.ref.png | Bin .../test/reference/device-offset.rgb24.ref.png | Bin .../reference/drunkard-tails.base.argb32.ref.png | Bin .../reference/drunkard-tails.base.rgb24.ref.png | Bin .../reference/drunkard-tails.mask.argb32.ref.png | Bin .../reference/drunkard-tails.mask.rgb24.ref.png | Bin .../cairo/test/reference/drunkard-tails.ps.ref.png | Bin .../cairo/test/reference/drunkard-tails.ref.png | Bin .../reference/drunkard-tails.traps.argb32.ref.png | Bin .../reference/drunkard-tails.traps.rgb24.ref.png | Bin .../test/reference/extend-pad-border.argb32.ref.png | Bin .../reference/extend-pad-border.base.argb32.ref.png | Bin .../reference/extend-pad-border.base.rgb24.ref.png | Bin .../reference/extend-pad-border.image16.ref.png | Bin .../test/reference/extend-pad-border.pdf.ref.png | Bin .../test/reference/extend-pad-border.ps.ref.png | Bin .../test/reference/extend-pad-border.quartz.ref.png | Bin .../test/reference/extend-pad-border.rgb24.ref.png | Bin .../test/reference/extend-pad-border.svg.xfail.png | Bin .../extend-pad-similar.base.argb32.ref.png | Bin .../reference/extend-pad-similar.base.rgb24.ref.png | Bin .../reference/extend-pad-similar.quartz.xfail.png | Bin .../cairo/test/reference/extend-pad-similar.ref.png | Bin .../test/reference/extend-pad-similar.svg.xfail.png | Bin .../test/reference/extend-pad.base.argb32.ref.png | Bin .../test/reference/extend-pad.base.rgb24.ref.png | Bin .../cairo/test/reference/extend-pad.ps.ref.png | Bin .../test/reference/extend-pad.quartz.xfail.png | Bin .../cairo/test/reference/extend-pad.ref.png | Bin .../cairo/test/reference/extend-pad.svg.xfail.png | Bin .../extend-reflect-similar.base.argb32.ref.png | Bin .../extend-reflect-similar.base.rgb24.ref.png | Bin .../extend-reflect-similar.image16.ref.png | Bin .../reference/extend-reflect-similar.ps2.ref.png | Bin .../reference/extend-reflect-similar.ps3.ref.png | Bin .../test/reference/extend-reflect-similar.ref.png | Bin .../reference/extend-reflect.base.argb32.ref.png | Bin .../reference/extend-reflect.base.rgb24.ref.png | Bin .../test/reference/extend-reflect.image16.ref.png | Bin .../cairo/test/reference/extend-reflect.ps2.ref.png | Bin .../cairo/test/reference/extend-reflect.ps3.ref.png | Bin .../cairo/test/reference/extend-reflect.ref.png | Bin .../extend-repeat-similar.base.argb32.ref.png | Bin .../extend-repeat-similar.base.rgb24.ref.png | Bin .../reference/extend-repeat-similar.image16.ref.png | Bin .../reference/extend-repeat-similar.ps2.ref.png | Bin .../reference/extend-repeat-similar.ps3.ref.png | Bin .../test/reference/extend-repeat-similar.ref.png | Bin .../reference/extend-repeat.base.argb32.ref.png | Bin .../test/reference/extend-repeat.base.rgb24.ref.png | Bin .../test/reference/extend-repeat.image16.ref.png | Bin .../cairo/test/reference/extend-repeat.ps2.ref.png | Bin .../cairo/test/reference/extend-repeat.ps3.ref.png | Bin .../cairo/test/reference/extend-repeat.ref.png | Bin .../extended-blend-alpha-mask.argb32.ref.png | Bin .../extended-blend-alpha-mask.base.argb32.ref.png | Bin .../extended-blend-alpha-mask.base.rgb24.ref.png | Bin .../extended-blend-alpha-mask.rgb24.ref.png | Bin .../reference/extended-blend-alpha.argb32.ref.png | Bin .../extended-blend-alpha.base.argb32.ref.png | Bin .../extended-blend-alpha.base.rgb24.ref.png | Bin .../reference/extended-blend-alpha.image16.ref.png | Bin .../extended-blend-alpha.quartz.argb32.ref.png | Bin .../extended-blend-alpha.quartz.rgb24.ref.png | Bin .../reference/extended-blend-alpha.rgb24.ref.png | Bin .../extended-blend-alpha.svg12.argb32.xfail.png | Bin .../extended-blend-alpha.svg12.rgb24.xfail.png | Bin .../reference/extended-blend-mask.argb32.ref.png | Bin .../extended-blend-mask.base.argb32.ref.png | Bin .../extended-blend-mask.base.rgb24.ref.png | Bin .../reference/extended-blend-mask.rgb24.ref.png | Bin .../extended-blend-solid-alpha.argb32.ref.png | Bin .../extended-blend-solid-alpha.base.argb32.ref.png | Bin .../extended-blend-solid-alpha.base.rgb24.ref.png | Bin .../extended-blend-solid-alpha.image16.ref.png | Bin .../extended-blend-solid-alpha.rgb24.ref.png | Bin .../reference/extended-blend-solid.argb32.ref.png | Bin .../extended-blend-solid.base.argb32.ref.png | Bin .../extended-blend-solid.base.rgb24.ref.png | Bin .../reference/extended-blend-solid.image16.ref.png | Bin .../reference/extended-blend-solid.rgb24.ref.png | Bin .../test/reference/extended-blend.argb32.ref.png | Bin .../reference/extended-blend.base.argb32.ref.png | Bin .../reference/extended-blend.base.rgb24.ref.png | Bin .../test/reference/extended-blend.image16.ref.png | Bin .../reference/extended-blend.quartz.argb32.ref.png | Bin .../reference/extended-blend.quartz.rgb24.ref.png | Bin .../test/reference/extended-blend.rgb24.ref.png | Bin .../reference/extended-blend.svg12.argb32.xfail.png | Bin .../reference/extended-blend.svg12.rgb24.xfail.png | Bin .../fallback-resolution.ppi144x144.ps.ref.png | Bin .../fallback-resolution.ppi144x144.ref.png | Bin .../fallback-resolution.ppi144x72.ps.ref.png | Bin .../reference/fallback-resolution.ppi144x72.ref.png | Bin .../fallback-resolution.ppi288x288.pdf.ref.png | Bin .../fallback-resolution.ppi288x288.ps.ref.png | Bin .../fallback-resolution.ppi288x288.svg.ref.png | Bin .../fallback-resolution.ppi288x72.ps.ref.png | Bin .../reference/fallback-resolution.ppi288x72.ref.png | Bin .../fallback-resolution.ppi576x576.pdf.ref.png | Bin .../fallback-resolution.ppi576x576.ps.ref.png | Bin .../fallback-resolution.ppi576x576.svg.ref.png | Bin .../fallback-resolution.ppi576x72.ps.ref.png | Bin .../reference/fallback-resolution.ppi576x72.ref.png | Bin .../fallback-resolution.ppi72x144.ps.ref.png | Bin .../reference/fallback-resolution.ppi72x144.ref.png | Bin .../fallback-resolution.ppi72x288.ps.ref.png | Bin .../reference/fallback-resolution.ppi72x288.ref.png | Bin .../fallback-resolution.ppi72x576.ps.ref.png | Bin .../reference/fallback-resolution.ppi72x576.ref.png | Bin .../reference/fallback-resolution.ppi72x72.ref.png | Bin .../cairo/test/reference/fallback.argb32.ref.png | Bin .../test/reference/fallback.base.argb32.ref.png | Bin .../test/reference/fallback.base.rgb24.ref.png | Bin .../test/reference/fallback.image16.rgb24.ref.png | Bin .../test/reference/fallback.mask.argb32.ref.png | Bin .../test/reference/fallback.mask.rgb24.ref.png | Bin .../cairo/test/reference/fallback.rgb24.ref.png | Bin .../test/reference/fallback.traps.argb32.ref.png | Bin .../test/reference/fallback.traps.rgb24.ref.png | Bin .../reference/fill-alpha-pattern.argb32.ref.png | Bin .../fill-alpha-pattern.base.argb32.ref.png | Bin .../reference/fill-alpha-pattern.base.rgb24.ref.png | Bin .../reference/fill-alpha-pattern.image16.ref.png | Bin .../test/reference/fill-alpha-pattern.pdf.ref.png | Bin .../reference/fill-alpha-pattern.ps3.argb32.ref.png | Bin .../reference/fill-alpha-pattern.quartz.ref.png | Bin .../test/reference/fill-alpha-pattern.rgb24.ref.png | Bin .../fill-alpha-pattern.traps.argb32.ref.png | Bin .../fill-alpha-pattern.traps.rgb24.ref.png | Bin .../cairo/test/reference/fill-alpha.argb32.ref.png | Bin .../test/reference/fill-alpha.base.argb32.ref.png | Bin .../test/reference/fill-alpha.base.rgb24.ref.png | Bin .../cairo/test/reference/fill-alpha.image16.ref.png | Bin .../test/reference/fill-alpha.ps.argb32.ref.png | Bin .../cairo/test/reference/fill-alpha.quartz.ref.png | Bin .../cairo/test/reference/fill-alpha.rgb24.ref.png | Bin .../test/reference/fill-alpha.traps.argb32.ref.png | Bin .../test/reference/fill-alpha.traps.rgb24.ref.png | Bin .../fill-and-stroke-alpha-add.argb32.ref.png | Bin .../fill-and-stroke-alpha-add.base.argb32.ref.png | Bin .../fill-and-stroke-alpha-add.base.rgb24.ref.png | Bin .../fill-and-stroke-alpha-add.image16.ref.png | Bin .../fill-and-stroke-alpha-add.quartz.ref.png | Bin .../fill-and-stroke-alpha-add.rgb24.ref.png | Bin .../fill-and-stroke-alpha-add.svg12.xfail.png | Bin .../fill-and-stroke-alpha-add.traps.argb32.ref.png | Bin .../fill-and-stroke-alpha-add.traps.rgb24.ref.png | Bin .../reference/fill-and-stroke-alpha.argb32.ref.png | Bin .../fill-and-stroke-alpha.base.argb32.ref.png | Bin .../fill-and-stroke-alpha.base.rgb24.ref.png | Bin .../reference/fill-and-stroke-alpha.image16.ref.png | Bin .../reference/fill-and-stroke-alpha.rgb24.ref.png | Bin .../fill-and-stroke-alpha.traps.argb32.ref.png | Bin .../fill-and-stroke-alpha.traps.rgb24.ref.png | Bin .../test/reference/fill-and-stroke.argb32.ref.png | Bin .../reference/fill-and-stroke.base.argb32.ref.png | Bin .../reference/fill-and-stroke.base.rgb24.ref.png | Bin .../test/reference/fill-and-stroke.image16.ref.png | Bin .../reference/fill-and-stroke.ps.argb32.ref.png | Bin .../test/reference/fill-and-stroke.ps.rgb24.ref.png | Bin .../reference/fill-and-stroke.quartz.argb32.ref.png | Bin .../reference/fill-and-stroke.quartz.rgb24.ref.png | Bin .../test/reference/fill-and-stroke.rgb24.ref.png | Bin .../reference/fill-and-stroke.traps.argb32.ref.png | Bin .../reference/fill-and-stroke.traps.rgb24.ref.png | Bin .../fill-degenerate-sort-order.argb32.ref.png | Bin .../fill-degenerate-sort-order.base.argb32.ref.png | Bin .../fill-degenerate-sort-order.base.rgb24.ref.png | Bin .../fill-degenerate-sort-order.image16.ref.png | Bin .../fill-degenerate-sort-order.ps.argb32.xfail.png | Bin .../fill-degenerate-sort-order.ps.rgb24.xfail.png | Bin ...fill-degenerate-sort-order.quartz.argb32.ref.png | Bin .../fill-degenerate-sort-order.quartz.rgb24.ref.png | Bin .../fill-degenerate-sort-order.rgb24.ref.png | Bin .../fill-degenerate-sort-order.traps.argb32.ref.png | Bin .../fill-degenerate-sort-order.traps.rgb24.ref.png | Bin .../reference/fill-disjoint.base.argb32.ref.png | Bin .../test/reference/fill-disjoint.base.rgb24.ref.png | Bin .../cairo/test/reference/fill-disjoint.ref.png | Bin .../cairo/test/reference/fill-empty.argb32.ref.png | Bin .../test/reference/fill-empty.base.argb32.ref.png | Bin .../test/reference/fill-empty.base.rgb24.ref.png | Bin .../cairo/test/reference/fill-empty.rgb24.ref.png | Bin .../test/reference/fill-empty.svg12.rgb24.xfail.png | Bin .../cairo/test/reference/fill-image.argb32.ref.png | Bin .../test/reference/fill-image.base.argb32.ref.png | Bin .../test/reference/fill-image.base.rgb24.ref.png | Bin .../cairo/test/reference/fill-image.image16.ref.png | Bin .../cairo/test/reference/fill-image.ps.ref.png | Bin .../cairo/test/reference/fill-image.quartz.ref.png | Bin .../cairo/test/reference/fill-image.rgb24.ref.png | Bin .../test/reference/fill-image.traps.argb32.ref.png | Bin .../test/reference/fill-image.traps.rgb24.ref.png | Bin .../test/reference/fill-missed-stop.argb32.ref.png | Bin .../reference/fill-missed-stop.base.argb32.ref.png | Bin .../reference/fill-missed-stop.base.rgb24.ref.png | Bin .../reference/fill-missed-stop.pdf.argb32.ref.png | Bin .../reference/fill-missed-stop.ps2.argb32.ref.png | Bin .../reference/fill-missed-stop.ps2.rgb24.ref.png | Bin .../reference/fill-missed-stop.ps3.argb32.ref.png | Bin .../reference/fill-missed-stop.ps3.rgb24.ref.png | Bin .../test/reference/fill-missed-stop.rgb24.ref.png | Bin .../reference/fill-missed-stop.traps.argb32.ref.png | Bin .../reference/fill-missed-stop.traps.rgb24.ref.png | Bin .../cairo/test/reference/fill-rule.argb32.ref.png | Bin .../test/reference/fill-rule.base.argb32.ref.png | Bin .../test/reference/fill-rule.base.rgb24.ref.png | Bin .../cairo/test/reference/fill-rule.image16.ref.png | Bin .../test/reference/fill-rule.ps2.argb32.ref.png | Bin .../test/reference/fill-rule.ps2.rgb24.ref.png | Bin .../test/reference/fill-rule.ps3.argb32.ref.png | Bin .../test/reference/fill-rule.ps3.rgb24.ref.png | Bin .../test/reference/fill-rule.quartz.argb32.ref.png | Bin .../test/reference/fill-rule.quartz.rgb24.ref.png | Bin .../cairo/test/reference/fill-rule.rgb24.ref.png | Bin .../test/reference/fill-rule.traps.argb32.ref.png | Bin .../test/reference/fill-rule.traps.rgb24.ref.png | Bin .../test/reference/fill-xlib-fallback.rgb24.ref.png | Bin .../test/reference/fill-xlib-window.rgb24.ref.png | Bin .../cairo/test/reference/fill-xlib.argb32.ref.png | Bin .../cairo/test/reference/fill-xlib.rgb24.ref.png | Bin .../filter-bilinear-extents.argb32.ref.png | Bin .../filter-bilinear-extents.base.argb32.ref.png | Bin .../filter-bilinear-extents.base.rgb24.ref.png | Bin .../filter-bilinear-extents.image16.ref.png | Bin .../reference/filter-bilinear-extents.pdf.xfail.png | Bin .../reference/filter-bilinear-extents.ps2.ref.png | Bin .../reference/filter-bilinear-extents.ps3.ref.png | Bin .../filter-bilinear-extents.quartz.xfail.png | Bin .../reference/filter-bilinear-extents.rgb24.ref.png | Bin .../filter-nearest-offset.base.argb32.ref.png | Bin .../filter-nearest-offset.base.rgb24.ref.png | Bin .../reference/filter-nearest-offset.gl.xfail.png | Bin .../reference/filter-nearest-offset.pdf.xfail.png | Bin .../reference/filter-nearest-offset.ps2.ref.png | Bin .../reference/filter-nearest-offset.ps3.ref.png | Bin .../test/reference/filter-nearest-offset.ref.png | Bin .../reference/filter-nearest-offset.svg.xfail.png | Bin .../filter-nearest-transformed.base.argb32.ref.png | Bin .../filter-nearest-transformed.base.rgb24.ref.png | Bin .../filter-nearest-transformed.gl.xfail.png | Bin .../filter-nearest-transformed.image16.ref.png | Bin .../filter-nearest-transformed.pdf.xfail.png | Bin .../filter-nearest-transformed.quartz.xfail.png | Bin .../reference/filter-nearest-transformed.ref.png | Bin .../filter-nearest-transformed.svg.xfail.png | Bin .../finer-grained-fallbacks.argb32.ref.png | Bin .../finer-grained-fallbacks.base.argb32.ref.png | Bin .../finer-grained-fallbacks.base.rgb24.ref.png | Bin .../finer-grained-fallbacks.gl.argb32.ref.png | Bin .../finer-grained-fallbacks.image16.ref.png | Bin .../finer-grained-fallbacks.mask.argb32.ref.png | Bin .../finer-grained-fallbacks.mask.rgb24.ref.png | Bin .../finer-grained-fallbacks.ps2.argb32.ref.png | Bin .../reference/finer-grained-fallbacks.ps2.ref.png | Bin .../finer-grained-fallbacks.ps2.rgb24.ref.png | Bin .../finer-grained-fallbacks.ps3.argb32.ref.png | Bin .../reference/finer-grained-fallbacks.ps3.ref.png | Bin .../finer-grained-fallbacks.ps3.rgb24.ref.png | Bin .../finer-grained-fallbacks.quartz.argb32.ref.png | Bin .../finer-grained-fallbacks.quartz.rgb24.ref.png | Bin .../reference/finer-grained-fallbacks.rgb24.ref.png | Bin .../finer-grained-fallbacks.svg12.argb32.ref.png | Bin .../finer-grained-fallbacks.svg12.rgb24.ref.png | Bin .../finer-grained-fallbacks.traps.argb32.ref.png | Bin .../finer-grained-fallbacks.traps.rgb24.ref.png | Bin .../finer-grained-fallbacks.xlib-fallback.ref.png | Bin .../font-matrix-translation.argb32.ref.png | Bin .../font-matrix-translation.base.argb32.ref.png | Bin .../font-matrix-translation.base.rgb24.ref.png | Bin .../font-matrix-translation.image16.ref.png | Bin .../font-matrix-translation.ps2.argb32.ref.png | Bin .../font-matrix-translation.ps2.rgb24.ref.png | Bin .../font-matrix-translation.ps3.argb32.ref.png | Bin .../font-matrix-translation.ps3.rgb24.ref.png | Bin .../font-matrix-translation.quartz.ref.png | Bin .../reference/font-matrix-translation.rgb24.ref.png | Bin .../reference/font-matrix-translation.svg.ref.png | Bin .../reference/font-matrix-translation.traps.ref.png | Bin .../ft-show-glyphs-positioning.argb32.ref.png | Bin .../ft-show-glyphs-positioning.base.argb32.ref.png | Bin .../ft-show-glyphs-positioning.base.rgb24.ref.png | Bin .../ft-show-glyphs-positioning.image16.ref.png | Bin .../ft-show-glyphs-positioning.pdf.ref.png | Bin .../ft-show-glyphs-positioning.ps2.ref.png | Bin .../ft-show-glyphs-positioning.ps3.ref.png | Bin .../ft-show-glyphs-positioning.rgb24.ref.png | Bin .../ft-show-glyphs-positioning.svg.ref.png | Bin .../ft-show-glyphs-positioning.traps.ref.png | Bin .../reference/ft-show-glyphs-table.argb32.ref.png | Bin .../ft-show-glyphs-table.base.argb32.ref.png | Bin .../ft-show-glyphs-table.base.rgb24.ref.png | Bin .../reference/ft-show-glyphs-table.image16.ref.png | Bin .../test/reference/ft-show-glyphs-table.ps2.ref.png | Bin .../test/reference/ft-show-glyphs-table.ps3.ref.png | Bin .../reference/ft-show-glyphs-table.quartz.xfail.png | Bin .../reference/ft-show-glyphs-table.rgb24.ref.png | Bin .../test/reference/ft-show-glyphs-table.svg.ref.png | Bin .../reference/ft-show-glyphs-table.traps.ref.png | Bin .../ft-text-antialias-none.base.argb32.ref.png | Bin .../ft-text-antialias-none.base.rgb24.ref.png | Bin .../ft-text-antialias-none.ps2.argb32.ref.png | Bin .../ft-text-antialias-none.ps3.argb32.ref.png | Bin .../test/reference/ft-text-antialias-none.ref.png | Bin .../ft-text-vertical-layout-type1.argb32.ref.png | Bin ...t-text-vertical-layout-type1.base.argb32.ref.png | Bin ...ft-text-vertical-layout-type1.base.rgb24.ref.png | Bin .../ft-text-vertical-layout-type1.image16.ref.png | Bin .../ft-text-vertical-layout-type1.pdf.ref.png | Bin .../ft-text-vertical-layout-type1.ps.ref.png | Bin .../ft-text-vertical-layout-type1.quartz.xfail.png | Bin .../ft-text-vertical-layout-type1.rgb24.ref.png | Bin .../ft-text-vertical-layout-type1.svg.ref.png | Bin ...-text-vertical-layout-type1.traps.argb32.ref.png | Bin ...t-text-vertical-layout-type1.traps.rgb24.ref.png | Bin .../ft-text-vertical-layout-type1.xfail.png | Bin ...t-text-vertical-layout-type3.base.argb32.ref.png | Bin ...ft-text-vertical-layout-type3.base.rgb24.ref.png | Bin .../ft-text-vertical-layout-type3.image16.ref.png | Bin ...t-text-vertical-layout-type3.mask.argb32.ref.png | Bin ...ft-text-vertical-layout-type3.mask.rgb24.ref.png | Bin .../ft-text-vertical-layout-type3.pdf.ref.png | Bin .../ft-text-vertical-layout-type3.ps.ref.png | Bin .../ft-text-vertical-layout-type3.quartz.ref.png | Bin .../reference/ft-text-vertical-layout-type3.ref.png | Bin .../ft-text-vertical-layout-type3.svg.ref.png | Bin ...-text-vertical-layout-type3.traps.argb32.ref.png | Bin ...t-text-vertical-layout-type3.traps.rgb24.ref.png | Bin .../reference/get-group-target.base.argb32.ref.png | Bin .../reference/get-group-target.base.rgb24.ref.png | Bin .../cairo/test/reference/get-group-target.ref.png | Bin .../test/reference/gl-surface-source.argb32.ref.png | Bin .../reference/gl-surface-source.base.argb32.ref.png | Bin .../reference/gl-surface-source.base.rgb24.ref.png | Bin .../reference/gl-surface-source.image16.ref.png | Bin .../test/reference/gl-surface-source.rgb24.ref.png | Bin .../reference/glyph-cache-pressure.argb32.ref.png | Bin .../glyph-cache-pressure.base.argb32.ref.png | Bin .../glyph-cache-pressure.base.rgb24.ref.png | Bin .../reference/glyph-cache-pressure.image16.ref.png | Bin .../test/reference/glyph-cache-pressure.ps2.ref.png | Bin .../test/reference/glyph-cache-pressure.ps3.ref.png | Bin .../reference/glyph-cache-pressure.quartz.ref.png | Bin .../reference/glyph-cache-pressure.rgb24.ref.png | Bin .../reference/glyph-cache-pressure.traps.ref.png | Bin .../test/reference/gradient-alpha.argb32.ref.png | Bin .../reference/gradient-alpha.base.argb32.ref.png | Bin .../reference/gradient-alpha.base.rgb24.ref.png | Bin .../reference/gradient-alpha.ps2.argb32.ref.png | Bin .../test/reference/gradient-alpha.ps2.rgb24.ref.png | Bin .../reference/gradient-alpha.ps3.argb32.ref.png | Bin .../test/reference/gradient-alpha.ps3.rgb24.ref.png | Bin .../test/reference/gradient-alpha.rgb24.ref.png | Bin .../gradient-constant-alpha.argb32.ref.png | Bin .../gradient-constant-alpha.base.argb32.ref.png | Bin .../gradient-constant-alpha.base.rgb24.ref.png | Bin .../reference/gradient-constant-alpha.ps3.ref.png | Bin .../gradient-constant-alpha.ps3.rgb24.ref.png | Bin .../gradient-constant-alpha.quartz.argb32.ref.png | Bin .../reference/gradient-constant-alpha.rgb24.ref.png | Bin .../gradient-zero-stops-mask.argb32.ref.png | Bin .../gradient-zero-stops-mask.base.argb32.ref.png | Bin .../gradient-zero-stops-mask.base.rgb24.ref.png | Bin .../gradient-zero-stops-mask.rgb24.ref.png | Bin .../reference/gradient-zero-stops.argb32.ref.png | Bin .../gradient-zero-stops.base.argb32.ref.png | Bin .../gradient-zero-stops.base.rgb24.ref.png | Bin .../reference/gradient-zero-stops.rgb24.ref.png | Bin .../test/reference/group-clip.base.argb32.ref.png | Bin .../test/reference/group-clip.base.rgb24.ref.png | Bin .../cairo/test/reference/group-clip.image16.ref.png | Bin .../cairo/test/reference/group-clip.ref.png | Bin .../test/reference/group-paint.base.argb32.ref.png | Bin .../test/reference/group-paint.base.rgb24.ref.png | Bin .../cairo/test/reference/group-paint.ref.png | Bin .../test/reference/group-unaligned.argb32.ref.png | Bin .../reference/group-unaligned.base.argb32.ref.png | Bin .../reference/group-unaligned.base.rgb24.ref.png | Bin .../test/reference/group-unaligned.image16.ref.png | Bin .../cairo/test/reference/group-unaligned.ps.ref.png | Bin .../reference/group-unaligned.ps.rgb24.xfail.png | Bin .../test/reference/group-unaligned.quartz.ref.png | Bin .../test/reference/group-unaligned.rgb24.ref.png | Bin .../reference/group-unaligned.svg.argb32.xfail.png | Bin .../reference/group-unaligned.svg.rgb24.xfail.png | Bin .../reference/group-unaligned.traps.argb32.ref.png | Bin .../reference/group-unaligned.traps.rgb24.ref.png | Bin .../reference/group-unaligned.xlib-fallback.ref.png | Bin .../test/reference/halo-transform.argb32.ref.png | Bin .../reference/halo-transform.base.argb32.ref.png | Bin .../reference/halo-transform.base.rgb24.ref.png | Bin .../test/reference/halo-transform.image16.ref.png | Bin .../cairo/test/reference/halo-transform.ps.ref.png | Bin .../test/reference/halo-transform.quartz.ref.png | Bin .../test/reference/halo-transform.rgb24.ref.png | Bin .../test/reference/halo-transform.traps.ref.png | Bin .../cairo/test/reference/halo.base.argb32.ref.png | Bin .../cairo/test/reference/halo.base.rgb24.ref.png | Bin .../cairo/test/reference/halo.image16.ref.png | Bin .../cairo/test/reference/halo.mask.argb32.ref.png | Bin .../cairo/test/reference/halo.mask.rgb24.ref.png | Bin .../3rd-party}/cairo/test/reference/halo.ps.ref.png | Bin .../cairo/test/reference/halo.quartz.ref.png | Bin .../3rd-party}/cairo/test/reference/halo.ref.png | Bin .../cairo/test/reference/halo.traps.ref.png | Bin .../test/reference/hatchings.base.argb32.ref.png | Bin .../test/reference/hatchings.base.rgb24.ref.png | Bin .../test/reference/hatchings.mask.argb32.ref.png | Bin .../test/reference/hatchings.mask.rgb24.ref.png | Bin .../cairo/test/reference/hatchings.ref.png | Bin .../test/reference/hatchings.traps.argb32.ref.png | Bin .../test/reference/hatchings.traps.rgb24.ref.png | Bin .../test/reference/horizontal-clip.argb32.ref.png | Bin .../reference/horizontal-clip.base.argb32.ref.png | Bin .../reference/horizontal-clip.base.rgb24.ref.png | Bin .../test/reference/horizontal-clip.rgb24.ref.png | Bin .../cairo/test/reference/huge-linear.argb32.ref.png | Bin .../test/reference/huge-linear.base.argb32.ref.png | Bin .../test/reference/huge-linear.base.rgb24.ref.png | Bin .../test/reference/huge-linear.image16.ref.png | Bin .../cairo/test/reference/huge-linear.pdf.ref.png | Bin .../cairo/test/reference/huge-linear.ps3.ref.png | Bin .../cairo/test/reference/huge-linear.quartz.ref.png | Bin .../cairo/test/reference/huge-linear.rgb24.ref.png | Bin .../test/reference/huge-radial.base.argb32.ref.png | Bin .../test/reference/huge-radial.base.rgb24.ref.png | Bin .../test/reference/huge-radial.image16.ref.png | Bin .../test/reference/huge-radial.pdf.argb32.ref.png | Bin .../test/reference/huge-radial.pdf.rgb24.ref.png | Bin .../cairo/test/reference/huge-radial.ps3.ref.png | Bin .../cairo/test/reference/huge-radial.quartz.ref.png | Bin .../cairo/test/reference/huge-radial.ref.png | Bin .../image-bug-710072-aligned.base.argb32.ref.png | Bin .../image-bug-710072-aligned.base.rgb24.ref.png | Bin .../test/reference/image-bug-710072-aligned.ref.png | Bin .../image-bug-710072-unaligned.base.argb32.ref.png | Bin .../image-bug-710072-unaligned.base.rgb24.ref.png | Bin .../reference/image-bug-710072-unaligned.ref.png | Bin .../image-bug-710072-unaligned.traps.argb32.ref.png | Bin .../image-bug-710072-unaligned.traps.rgb24.ref.png | Bin ...bug-710072-unaligned.xlib-fallback.rgb24.ref.png | Bin ...e-bug-710072-unaligned.xlib-window.rgb24.ref.png | Bin .../reference/image-surface-source.argb32.ref.png | Bin .../image-surface-source.base.argb32.ref.png | Bin .../image-surface-source.base.rgb24.ref.png | Bin .../reference/image-surface-source.image16.ref.png | Bin .../test/reference/image-surface-source.ps2.ref.png | Bin .../test/reference/image-surface-source.ps3.ref.png | Bin .../reference/image-surface-source.rgb24.ref.png | Bin .../image-surface-source.svg12.argb32.xfail.png | Bin .../image-surface-source.svg12.rgb24.xfail.png | Bin .../reference/implicit-close.base.argb32.ref.png | Bin .../reference/implicit-close.base.rgb24.ref.png | Bin .../cairo/test/reference/implicit-close.ps.ref.png | Bin .../cairo/test/reference/implicit-close.ref.png | Bin .../reference/implicit-close.traps.argb32.ref.png | Bin .../reference/implicit-close.traps.rgb24.ref.png | Bin .../test/reference/infinite-join.argb32.ref.png | Bin .../reference/infinite-join.base.argb32.ref.png | Bin .../test/reference/infinite-join.base.rgb24.ref.png | Bin .../cairo/test/reference/infinite-join.ps2.ref.png | Bin .../cairo/test/reference/infinite-join.ps3.ref.png | Bin .../test/reference/infinite-join.rgb24.ref.png | Bin .../reference/infinite-join.traps.argb32.ref.png | Bin .../reference/infinite-join.traps.rgb24.ref.png | Bin .../test/reference/inverse-text.base.argb32.ref.png | Bin .../test/reference/inverse-text.base.rgb24.ref.png | Bin .../test/reference/inverse-text.mask.argb32.ref.png | Bin .../test/reference/inverse-text.mask.rgb24.ref.png | Bin .../cairo/test/reference/inverse-text.traps.ref.png | Bin .../test/reference/inverted-clip.base.xfail.png | Bin .../test/reference/inverted-clip.traps.xfail.png | Bin .../cairo/test/reference/inverted-clip.xfail.png | Bin .../cairo/test/reference/joins-loop.argb32.ref.png | Bin .../test/reference/joins-loop.base.argb32.ref.png | Bin .../test/reference/joins-loop.base.rgb24.ref.png | Bin .../cairo/test/reference/joins-loop.rgb24.ref.png | Bin .../test/reference/joins-loop.traps.argb32.ref.png | Bin .../test/reference/joins-loop.traps.rgb24.ref.png | Bin .../reference/joins-retrace.base.argb32.ref.png | Bin .../test/reference/joins-retrace.base.rgb24.ref.png | Bin .../reference/joins-retrace.mask.argb32.ref.png | Bin .../test/reference/joins-retrace.mask.rgb24.ref.png | Bin .../cairo/test/reference/joins-retrace.ref.png | Bin .../reference/joins-retrace.traps.argb32.ref.png | Bin .../reference/joins-retrace.traps.rgb24.ref.png | Bin .../cairo/test/reference/joins-star.argb32.ref.png | Bin .../test/reference/joins-star.base.argb32.ref.png | Bin .../test/reference/joins-star.base.rgb24.ref.png | Bin .../cairo/test/reference/joins-star.rgb24.ref.png | Bin .../test/reference/joins-star.traps.argb32.ref.png | Bin .../test/reference/joins-star.traps.rgb24.ref.png | Bin .../cairo/test/reference/joins.base.argb32.ref.png | Bin .../cairo/test/reference/joins.base.rgb24.ref.png | Bin .../cairo/test/reference/joins.image16.ref.png | Bin .../cairo/test/reference/joins.mask.argb32.ref.png | Bin .../cairo/test/reference/joins.mask.rgb24.ref.png | Bin .../cairo/test/reference/joins.ps.ref.png | Bin .../cairo/test/reference/joins.quartz.ref.png | Bin .../3rd-party}/cairo/test/reference/joins.ref.png | Bin .../cairo/test/reference/joins.traps.argb32.ref.png | Bin .../cairo/test/reference/joins.traps.rgb24.ref.png | Bin .../test/reference/large-clip.base.argb32.ref.png | Bin .../test/reference/large-clip.base.rgb24.ref.png | Bin .../cairo/test/reference/large-clip.ref.png | Bin .../test/reference/large-font.base.argb32.ref.png | Bin .../test/reference/large-font.base.rgb24.ref.png | Bin .../cairo/test/reference/large-font.image16.ref.png | Bin .../cairo/test/reference/large-font.ref.png | Bin .../reference/large-source-roi.base.argb32.ref.png | Bin .../reference/large-source-roi.base.rgb24.ref.png | Bin .../cairo/test/reference/large-source-roi.ref.png | Bin .../test/reference/large-source.base.argb32.ref.png | Bin .../test/reference/large-source.base.rgb24.ref.png | Bin .../cairo/test/reference/large-source.ref.png | Bin .../large-twin-antialias-mixed.argb32.ref.png | Bin .../large-twin-antialias-mixed.base.argb32.ref.png | Bin .../large-twin-antialias-mixed.base.rgb24.ref.png | Bin .../large-twin-antialias-mixed.image16.ref.png | Bin .../large-twin-antialias-mixed.rgb24.ref.png | Bin .../large-twin-antialias-mixed.traps.argb32.ref.png | Bin .../large-twin-antialias-mixed.traps.rgb24.ref.png | Bin .../test/reference/leaky-dash.base.argb32.ref.png | Bin .../test/reference/leaky-dash.base.rgb24.ref.png | Bin .../test/reference/leaky-dash.ps2.argb32.ref.png | Bin .../test/reference/leaky-dash.ps2.rgb24.ref.png | Bin .../test/reference/leaky-dash.ps3.argb32.ref.png | Bin .../test/reference/leaky-dash.ps3.rgb24.ref.png | Bin .../cairo/test/reference/leaky-dash.quartz.ref.png | Bin .../cairo/test/reference/leaky-dash.ref.png | Bin .../leaky-dashed-rectangle.base.argb32.ref.png | Bin .../leaky-dashed-rectangle.base.rgb24.ref.png | Bin .../leaky-dashed-rectangle.image16.ref.png | Bin .../reference/leaky-dashed-rectangle.pdf.ref.png | Bin .../reference/leaky-dashed-rectangle.ps.ref.png | Bin .../reference/leaky-dashed-rectangle.quartz.ref.png | Bin .../test/reference/leaky-dashed-rectangle.ref.png | Bin .../leaky-dashed-rectangle.traps.argb32.ref.png | Bin .../leaky-dashed-rectangle.traps.rgb24.ref.png | Bin .../reference/leaky-dashed-stroke.argb32.ref.png | Bin .../leaky-dashed-stroke.base.argb32.ref.png | Bin .../leaky-dashed-stroke.base.rgb24.ref.png | Bin .../reference/leaky-dashed-stroke.image16.ref.png | Bin .../test/reference/leaky-dashed-stroke.ps.ref.png | Bin .../reference/leaky-dashed-stroke.quartz.ref.png | Bin .../reference/leaky-dashed-stroke.rgb24.ref.png | Bin .../leaky-dashed-stroke.traps.argb32.ref.png | Bin .../leaky-dashed-stroke.traps.rgb24.ref.png | Bin .../test/reference/leaky-polygon.argb32.ref.png | Bin .../reference/leaky-polygon.base.argb32.ref.png | Bin .../test/reference/leaky-polygon.base.rgb24.ref.png | Bin .../test/reference/leaky-polygon.image16.ref.png | Bin .../cairo/test/reference/leaky-polygon.ps.ref.png | Bin .../test/reference/leaky-polygon.rgb24.ref.png | Bin .../reference/leaky-polygon.traps.argb32.ref.png | Bin .../reference/leaky-polygon.traps.rgb24.ref.png | Bin ...e-width-large-overlap-dashed.base.argb32.ref.png | Bin ...ne-width-large-overlap-dashed.base.rgb24.ref.png | Bin ...e-width-large-overlap-dashed.mask.argb32.ref.png | Bin ...ne-width-large-overlap-dashed.mask.rgb24.ref.png | Bin .../line-width-large-overlap-dashed.ref.png | Bin ...-width-large-overlap-dashed.traps.argb32.ref.png | Bin ...e-width-large-overlap-dashed.traps.rgb24.ref.png | Bin ...-width-large-overlap-flipped.base.argb32.ref.png | Bin ...e-width-large-overlap-flipped.base.rgb24.ref.png | Bin .../line-width-large-overlap-flipped.ref.png | Bin ...-width-large-overlap-flopped.base.argb32.ref.png | Bin ...e-width-large-overlap-flopped.base.rgb24.ref.png | Bin .../line-width-large-overlap-flopped.ref.png | Bin ...e-width-large-overlap-offset.base.argb32.ref.png | Bin ...ne-width-large-overlap-offset.base.rgb24.ref.png | Bin .../line-width-large-overlap-offset.ref.png | Bin .../line-width-large-overlap-rotated.argb32.ref.png | Bin ...-width-large-overlap-rotated.base.argb32.ref.png | Bin ...e-width-large-overlap-rotated.base.rgb24.ref.png | Bin .../line-width-large-overlap-rotated.rgb24.ref.png | Bin .../line-width-large-overlap-rotated.traps.ref.png | Bin .../line-width-large-overlap.base.argb32.ref.png | Bin .../line-width-large-overlap.base.rgb24.ref.png | Bin .../test/reference/line-width-large-overlap.ref.png | Bin .../line-width-overlap-dashed.base.argb32.ref.png | Bin .../line-width-overlap-dashed.base.rgb24.ref.png | Bin .../line-width-overlap-dashed.mask.argb32.ref.png | Bin .../line-width-overlap-dashed.mask.rgb24.ref.png | Bin .../reference/line-width-overlap-dashed.ref.png | Bin .../line-width-overlap-dashed.traps.argb32.ref.png | Bin .../line-width-overlap-dashed.traps.rgb24.ref.png | Bin .../line-width-overlap-flipped.base.argb32.ref.png | Bin .../line-width-overlap-flipped.base.rgb24.ref.png | Bin .../reference/line-width-overlap-flipped.ref.png | Bin .../line-width-overlap-flopped.base.argb32.ref.png | Bin .../line-width-overlap-flopped.base.rgb24.ref.png | Bin .../reference/line-width-overlap-flopped.ref.png | Bin .../line-width-overlap-offset.base.argb32.ref.png | Bin .../line-width-overlap-offset.base.rgb24.ref.png | Bin .../reference/line-width-overlap-offset.ref.png | Bin .../line-width-overlap-offset.traps.ref.png | Bin .../line-width-overlap-rotated.argb32.ref.png | Bin .../line-width-overlap-rotated.base.argb32.ref.png | Bin .../line-width-overlap-rotated.base.rgb24.ref.png | Bin .../line-width-overlap-rotated.rgb24.ref.png | Bin .../line-width-overlap-rotated.traps.argb32.ref.png | Bin .../line-width-overlap-rotated.traps.rgb24.ref.png | Bin .../line-width-overlap.base.argb32.ref.png | Bin .../reference/line-width-overlap.base.rgb24.ref.png | Bin .../cairo/test/reference/line-width-overlap.ref.png | Bin .../test/reference/line-width-scale.argb32.ref.png | Bin .../reference/line-width-scale.base.argb32.ref.png | Bin .../reference/line-width-scale.base.rgb24.ref.png | Bin .../test/reference/line-width-scale.image16.ref.png | Bin .../test/reference/line-width-scale.ps2.ref.png | Bin .../test/reference/line-width-scale.ps3.ref.png | Bin .../test/reference/line-width-scale.quartz.ref.png | Bin .../test/reference/line-width-scale.rgb24.ref.png | Bin .../reference/line-width-scale.traps.argb32.ref.png | Bin .../reference/line-width-scale.traps.rgb24.ref.png | Bin .../reference/line-width-tolerance.argb32.ref.png | Bin .../line-width-tolerance.base.argb32.ref.png | Bin .../line-width-tolerance.base.rgb24.ref.png | Bin .../reference/line-width-tolerance.rgb24.ref.png | Bin .../line-width-tolerance.traps.argb32.ref.png | Bin .../line-width-tolerance.traps.rgb24.ref.png | Bin .../cairo/test/reference/line-width.argb32.ref.png | Bin .../test/reference/line-width.base.argb32.ref.png | Bin .../test/reference/line-width.base.rgb24.ref.png | Bin .../cairo/test/reference/line-width.rgb24.ref.png | Bin .../test/reference/line-width.traps.argb32.ref.png | Bin .../test/reference/line-width.traps.rgb24.ref.png | Bin .../linear-gradient-extend.base.argb32.ref.png | Bin .../linear-gradient-extend.base.rgb24.ref.png | Bin .../test/reference/linear-gradient-extend.ref.png | Bin .../linear-gradient-large.base.argb32.ref.png | Bin .../linear-gradient-large.base.rgb24.ref.png | Bin .../reference/linear-gradient-large.quartz.ref.png | Bin .../test/reference/linear-gradient-large.ref.png | Bin .../linear-gradient-one-stop.argb32.ref.png | Bin .../linear-gradient-one-stop.base.argb32.ref.png | Bin .../linear-gradient-one-stop.base.rgb24.ref.png | Bin .../linear-gradient-one-stop.rgb24.ref.png | Bin .../linear-gradient-reflect.argb32.ref.png | Bin .../linear-gradient-reflect.base.argb32.ref.png | Bin .../linear-gradient-reflect.base.rgb24.ref.png | Bin .../linear-gradient-reflect.image16.ref.png | Bin .../linear-gradient-reflect.pdf.argb32.ref.png | Bin .../linear-gradient-reflect.pdf.rgb24.ref.png | Bin .../reference/linear-gradient-reflect.ps3.ref.png | Bin .../linear-gradient-reflect.quartz.ref.png | Bin .../reference/linear-gradient-reflect.rgb24.ref.png | Bin .../reference/linear-gradient-subset.argb32.ref.png | Bin .../linear-gradient-subset.base.argb32.ref.png | Bin .../linear-gradient-subset.base.rgb24.ref.png | Bin .../linear-gradient-subset.image16.ref.png | Bin .../reference/linear-gradient-subset.ps3.ref.png | Bin .../reference/linear-gradient-subset.quartz.ref.png | Bin .../reference/linear-gradient-subset.rgb24.ref.png | Bin .../linear-gradient-subset.traps.argb32.ref.png | Bin .../linear-gradient-subset.traps.rgb24.ref.png | Bin .../test/reference/linear-gradient.argb32.ref.png | Bin .../reference/linear-gradient.base.argb32.ref.png | Bin .../reference/linear-gradient.base.rgb24.ref.png | Bin .../test/reference/linear-gradient.image16.ref.png | Bin .../test/reference/linear-gradient.ps3.ref.png | Bin .../test/reference/linear-gradient.quartz.ref.png | Bin .../test/reference/linear-gradient.rgb24.ref.png | Bin .../reference/linear-gradient.traps.argb32.ref.png | Bin .../reference/linear-gradient.traps.rgb24.ref.png | Bin .../linear-step-function.base.argb32.ref.png | Bin .../linear-step-function.base.rgb24.ref.png | Bin .../linear-step-function.mask.argb32.ref.png | Bin .../linear-step-function.mask.rgb24.ref.png | Bin .../linear-step-function.traps.argb32.ref.png | Bin .../linear-step-function.traps.rgb24.ref.png | Bin .../test/reference/linear-step-function.xfail.png | Bin .../reference/linear-uniform.base.argb32.ref.png | Bin .../reference/linear-uniform.base.rgb24.ref.png | Bin .../test/reference/linear-uniform.image16.ref.png | Bin .../cairo/test/reference/linear-uniform.ref.png | Bin .../test/reference/long-dashed-lines.argb32.ref.png | Bin .../reference/long-dashed-lines.base.argb32.ref.png | Bin .../reference/long-dashed-lines.base.rgb24.ref.png | Bin .../reference/long-dashed-lines.image16.ref.png | Bin .../test/reference/long-dashed-lines.ps2.ref.png | Bin .../test/reference/long-dashed-lines.ps3.ref.png | Bin .../test/reference/long-dashed-lines.quartz.ref.png | Bin .../test/reference/long-dashed-lines.rgb24.ref.png | Bin .../long-dashed-lines.traps.argb32.ref.png | Bin .../reference/long-dashed-lines.traps.rgb24.ref.png | Bin .../test/reference/long-lines.base.argb32.ref.png | Bin .../test/reference/long-lines.base.rgb24.ref.png | Bin .../test/reference/long-lines.mask.argb32.ref.png | Bin .../test/reference/long-lines.mask.rgb24.ref.png | Bin .../test/reference/long-lines.traps.argb32.ref.png | Bin .../test/reference/long-lines.traps.rgb24.ref.png | Bin .../reference/map-all-to-image.base.argb32.ref.png | Bin .../reference/map-all-to-image.base.rgb24.ref.png | Bin .../cairo/test/reference/map-all-to-image.ref.png | Bin .../map-all-to-xlib-fallback.rgb24.ref.png | Bin .../reference/map-all-to-xlib-window.rgb24.ref.png | Bin .../test/reference/map-all-to-xlib.argb32.ref.png | Bin .../test/reference/map-all-to-xlib.rgb24.ref.png | Bin .../reference/map-bit-to-image.base.argb32.ref.png | Bin .../reference/map-bit-to-image.base.rgb24.ref.png | Bin .../cairo/test/reference/map-bit-to-image.ref.png | Bin .../map-bit-to-xlib-fallback.rgb24.ref.png | Bin .../reference/map-bit-to-xlib-window.rgb24.ref.png | Bin .../test/reference/map-bit-to-xlib.argb32.ref.png | Bin .../test/reference/map-bit-to-xlib.rgb24.ref.png | Bin .../reference/map-to-image-fill.base.argb32.ref.png | Bin .../reference/map-to-image-fill.base.rgb24.ref.png | Bin .../cairo/test/reference/map-to-image-fill.ref.png | Bin .../cairo/test/reference/mask-alpha.argb32.ref.png | Bin .../test/reference/mask-alpha.base.argb32.ref.png | Bin .../test/reference/mask-alpha.base.rgb24.ref.png | Bin .../cairo/test/reference/mask-alpha.image16.ref.png | Bin .../cairo/test/reference/mask-alpha.ps.ref.png | Bin .../test/reference/mask-alpha.quartz.argb32.ref.png | Bin .../cairo/test/reference/mask-alpha.rgb24.ref.png | Bin .../test/reference/mask-alpha.svg.rgb24.xfail.png | Bin .../test/reference/mask-alpha.traps.argb32.ref.png | Bin .../test/reference/mask-alpha.traps.rgb24.ref.png | Bin .../cairo/test/reference/mask-ctm.argb32.ref.png | Bin .../test/reference/mask-ctm.base.argb32.ref.png | Bin .../test/reference/mask-ctm.base.rgb24.ref.png | Bin .../cairo/test/reference/mask-ctm.rgb24.ref.png | Bin .../cairo/test/reference/mask-glyphs.gl.ref.png | Bin .../test/reference/mask-glyphs.image16.ref.png | Bin .../cairo/test/reference/mask-glyphs.pdf.ref.png | Bin .../cairo/test/reference/mask-glyphs.ref.png | Bin .../cairo/test/reference/mask-glyphs.svg.ref.png | Bin .../test/reference/mask-surface-ctm.argb32.ref.png | Bin .../reference/mask-surface-ctm.base.argb32.ref.png | Bin .../reference/mask-surface-ctm.base.rgb24.ref.png | Bin .../test/reference/mask-surface-ctm.rgb24.ref.png | Bin .../reference/mask-transformed-image.argb32.ref.png | Bin .../mask-transformed-image.base.argb32.ref.png | Bin .../mask-transformed-image.base.rgb24.ref.png | Bin .../mask-transformed-image.image16.ref.png | Bin .../reference/mask-transformed-image.pdf.ref.png | Bin .../reference/mask-transformed-image.quartz.ref.png | Bin .../reference/mask-transformed-image.rgb24.ref.png | Bin .../mask-transformed-similar.argb32.ref.png | Bin .../mask-transformed-similar.base.argb32.ref.png | Bin .../mask-transformed-similar.base.rgb24.ref.png | Bin .../mask-transformed-similar.image16.ref.png | Bin .../reference/mask-transformed-similar.pdf.ref.png | Bin .../mask-transformed-similar.quartz.ref.png | Bin .../mask-transformed-similar.recording.ref.png | Bin .../mask-transformed-similar.rgb24.ref.png | Bin .../reference/mask-transformed-similar.svg.ref.png | Bin .../mask-transformed-xlib-fallback.rgb24.ref.png | Bin .../mask-transformed-xlib-window.rgb24.ref.png | Bin .../reference/mask-transformed-xlib.argb32.ref.png | Bin .../reference/mask-transformed-xlib.rgb24.ref.png | Bin .../cairo/test/reference/mask.argb32.ref.png | Bin .../cairo/test/reference/mask.base.argb32.ref.png | Bin .../cairo/test/reference/mask.base.rgb24.ref.png | Bin .../cairo/test/reference/mask.image16.ref.png | Bin .../cairo/test/reference/mask.pdf.argb32.ref.png | Bin .../cairo/test/reference/mask.pdf.rgb24.ref.png | Bin .../cairo/test/reference/mask.quartz.argb32.ref.png | Bin .../cairo/test/reference/mask.quartz.rgb24.ref.png | Bin .../cairo/test/reference/mask.rgb24.ref.png | Bin .../cairo/test/reference/mask.svg.argb32.xfail.png | Bin .../cairo/test/reference/mask.svg.rgb24.xfail.png | Bin .../cairo/test/reference/mask.traps.argb32.ref.png | Bin .../cairo/test/reference/mask.traps.rgb24.ref.png | Bin .../mesh-pattern-accuracy.base.argb32.ref.png | Bin .../mesh-pattern-accuracy.base.rgb24.ref.png | Bin .../reference/mesh-pattern-accuracy.image16.ref.png | Bin .../test/reference/mesh-pattern-accuracy.ref.png | Bin .../mesh-pattern-conical.base.argb32.ref.png | Bin .../mesh-pattern-conical.base.rgb24.ref.png | Bin .../reference/mesh-pattern-conical.image16.ref.png | Bin .../test/reference/mesh-pattern-conical.ref.png | Bin .../mesh-pattern-control-points.base.argb32.ref.png | Bin .../mesh-pattern-control-points.base.rgb24.ref.png | Bin .../mesh-pattern-control-points.image16.ref.png | Bin .../reference/mesh-pattern-control-points.ref.png | Bin .../reference/mesh-pattern-fold.base.argb32.ref.png | Bin .../reference/mesh-pattern-fold.base.rgb24.ref.png | Bin .../reference/mesh-pattern-fold.image16.ref.png | Bin .../cairo/test/reference/mesh-pattern-fold.ref.png | Bin .../mesh-pattern-overlap.base.argb32.ref.png | Bin .../mesh-pattern-overlap.base.rgb24.ref.png | Bin .../reference/mesh-pattern-overlap.image16.ref.png | Bin .../test/reference/mesh-pattern-overlap.ref.png | Bin .../mesh-pattern-transformed.base.argb32.ref.png | Bin .../mesh-pattern-transformed.base.rgb24.ref.png | Bin .../mesh-pattern-transformed.image16.ref.png | Bin .../test/reference/mesh-pattern-transformed.ref.png | Bin .../test/reference/mesh-pattern.base.argb32.ref.png | Bin .../test/reference/mesh-pattern.base.rgb24.ref.png | Bin .../test/reference/mesh-pattern.image16.ref.png | Bin .../cairo/test/reference/mesh-pattern.ref.png | Bin .../test/reference/mime-data.base.argb32.ref.png | Bin .../test/reference/mime-data.base.rgb24.ref.png | Bin .../cairo/test/reference/mime-data.pdf.ref.png | Bin .../cairo/test/reference/mime-data.ps.ref.png | Bin .../cairo/test/reference/mime-data.ref.png | Bin .../cairo/test/reference/mime-data.script.ref.png | Bin .../cairo/test/reference/mime-data.svg.ref.png | Bin .../test/reference/miter-precision.argb32.ref.png | Bin .../reference/miter-precision.base.argb32.ref.png | Bin .../reference/miter-precision.base.rgb24.ref.png | Bin .../test/reference/miter-precision.ps2.ref.png | Bin .../test/reference/miter-precision.ps3.ref.png | Bin .../test/reference/miter-precision.rgb24.ref.png | Bin .../reference/miter-precision.traps.argb32.ref.png | Bin .../reference/miter-precision.traps.rgb24.ref.png | Bin .../move-to-show-surface.base.argb32.ref.png | Bin .../move-to-show-surface.base.rgb24.ref.png | Bin .../test/reference/move-to-show-surface.ref.png | Bin .../negative-stride-image.base.argb32.ref.png | Bin .../negative-stride-image.base.rgb24.ref.png | Bin .../reference/negative-stride-image.image16.ref.png | Bin .../test/reference/negative-stride-image.ps.ref.png | Bin .../test/reference/negative-stride-image.ref.png | Bin .../test/reference/new-sub-path.argb32.ref.png | Bin .../test/reference/new-sub-path.base.argb32.ref.png | Bin .../test/reference/new-sub-path.base.rgb24.ref.png | Bin .../test/reference/new-sub-path.pdf.argb32.ref.png | Bin .../test/reference/new-sub-path.ps2.argb32.ref.png | Bin .../test/reference/new-sub-path.ps2.rgb24.ref.png | Bin .../test/reference/new-sub-path.ps3.argb32.ref.png | Bin .../test/reference/new-sub-path.ps3.rgb24.ref.png | Bin .../test/reference/new-sub-path.quartz.ref.png | Bin .../cairo/test/reference/new-sub-path.rgb24.ref.png | Bin .../reference/new-sub-path.traps.argb32.ref.png | Bin .../test/reference/new-sub-path.traps.rgb24.ref.png | Bin .../cairo/test/reference/nil-surface.argb32.ref.png | Bin .../test/reference/nil-surface.base.argb32.ref.png | Bin .../test/reference/nil-surface.base.rgb24.ref.png | Bin .../cairo/test/reference/nil-surface.rgb24.ref.png | Bin .../operator-alpha-alpha.base.argb32.ref.png | Bin .../operator-alpha-alpha.base.rgb24.ref.png | Bin .../reference/operator-alpha-alpha.image16.ref.png | Bin .../reference/operator-alpha-alpha.pdf.xfail.png | Bin .../reference/operator-alpha-alpha.ps.xfail.png | Bin .../test/reference/operator-alpha-alpha.ref.png | Bin .../reference/operator-alpha-alpha.svg.xfail.png | Bin .../operator-alpha-alpha.traps.argb32.ref.png | Bin .../operator-alpha-alpha.traps.rgb24.ref.png | Bin .../test/reference/operator-alpha.argb32.ref.png | Bin .../reference/operator-alpha.base.argb32.ref.png | Bin .../reference/operator-alpha.base.rgb24.ref.png | Bin .../test/reference/operator-alpha.rgb24.ref.png | Bin .../reference/operator-alpha.svg12.argb32.xfail.png | Bin .../reference/operator-alpha.svg12.rgb24.xfail.png | Bin .../test/reference/operator-clear.argb32.ref.png | Bin .../reference/operator-clear.base.argb32.ref.png | Bin .../reference/operator-clear.base.rgb24.ref.png | Bin .../reference/operator-clear.mask.rgb24.ref.png | Bin .../reference/operator-clear.ps2.argb32.ref.png | Bin .../reference/operator-clear.ps3.argb32.ref.png | Bin .../reference/operator-clear.quartz.argb32.ref.png | Bin .../reference/operator-clear.quartz.rgb24.ref.png | Bin .../test/reference/operator-clear.rgb24.ref.png | Bin .../reference/operator-clear.svg12.argb32.xfail.png | Bin .../reference/operator-clear.svg12.rgb24.xfail.png | Bin .../reference/operator-clear.traps.argb32.ref.png | Bin .../reference/operator-clear.traps.rgb24.ref.png | Bin .../test/reference/operator-source.argb32.ref.png | Bin .../reference/operator-source.base.argb32.ref.png | Bin .../reference/operator-source.base.rgb24.ref.png | Bin .../test/reference/operator-source.image16.ref.png | Bin .../reference/operator-source.mask.argb32.ref.png | Bin .../reference/operator-source.mask.rgb24.ref.png | Bin .../test/reference/operator-source.rgb24.ref.png | Bin .../reference/operator-source.traps.argb32.ref.png | Bin .../reference/operator-source.traps.rgb24.ref.png | Bin .../reference/operator-source.xlib-fallback.ref.png | Bin .../cairo/test/reference/operator.argb32.ref.png | Bin .../test/reference/operator.base.argb32.ref.png | Bin .../test/reference/operator.base.rgb24.ref.png | Bin .../cairo/test/reference/operator.rgb24.ref.png | Bin .../test/reference/operator.svg12.argb32.xfail.png | Bin .../test/reference/operator.svg12.rgb24.xfail.png | Bin .../cairo/test/reference/outline-tolerance.ref.png | Bin .../test/reference/over-above-source.argb32.ref.png | Bin .../reference/over-above-source.base.argb32.ref.png | Bin .../reference/over-above-source.base.rgb24.ref.png | Bin .../reference/over-above-source.ps2.argb32.ref.png | Bin .../reference/over-above-source.ps3.argb32.ref.png | Bin .../over-above-source.quartz.argb32.ref.png | Bin .../over-above-source.quartz.rgb24.ref.png | Bin .../test/reference/over-above-source.rgb24.ref.png | Bin .../over-above-source.svg12.rgb24.xfail.png | Bin .../over-above-source.traps.argb32.ref.png | Bin .../reference/over-above-source.traps.rgb24.ref.png | Bin .../reference/over-around-source.argb32.ref.png | Bin .../over-around-source.base.argb32.ref.png | Bin .../reference/over-around-source.base.rgb24.ref.png | Bin .../reference/over-around-source.image16.ref.png | Bin .../reference/over-around-source.pdf.argb32.ref.png | Bin .../reference/over-around-source.ps2.argb32.ref.png | Bin .../reference/over-around-source.ps2.rgb24.ref.png | Bin .../reference/over-around-source.ps3.argb32.ref.png | Bin .../reference/over-around-source.ps3.rgb24.ref.png | Bin .../over-around-source.quartz.argb32.ref.png | Bin .../test/reference/over-around-source.rgb24.ref.png | Bin .../over-around-source.svg12.argb32.xfail.png | Bin .../over-around-source.svg12.rgb24.xfail.png | Bin .../over-around-source.traps.argb32.ref.png | Bin .../over-around-source.traps.rgb24.ref.png | Bin .../test/reference/over-below-source.argb32.ref.png | Bin .../reference/over-below-source.base.argb32.ref.png | Bin .../reference/over-below-source.base.rgb24.ref.png | Bin .../reference/over-below-source.pdf.argb32.ref.png | Bin .../reference/over-below-source.ps2.argb32.ref.png | Bin .../reference/over-below-source.ps2.rgb24.ref.png | Bin .../reference/over-below-source.ps3.argb32.ref.png | Bin .../reference/over-below-source.ps3.rgb24.ref.png | Bin .../test/reference/over-below-source.rgb24.ref.png | Bin .../over-below-source.svg12.argb32.xfail.png | Bin .../over-below-source.svg12.rgb24.xfail.png | Bin .../over-below-source.traps.argb32.ref.png | Bin .../reference/over-below-source.traps.rgb24.ref.png | Bin .../reference/over-between-source.argb32.ref.png | Bin .../over-between-source.base.argb32.ref.png | Bin .../over-between-source.base.rgb24.ref.png | Bin .../over-between-source.ps2.argb32.ref.png | Bin .../over-between-source.ps3.argb32.ref.png | Bin .../over-between-source.quartz.argb32.ref.png | Bin .../reference/over-between-source.rgb24.ref.png | Bin .../over-between-source.svg12.argb32.xfail.png | Bin .../over-between-source.svg12.rgb24.xfail.png | Bin .../over-between-source.traps.argb32.ref.png | Bin .../over-between-source.traps.rgb24.ref.png | Bin .../test/reference/overlapping-boxes.argb32.ref.png | Bin .../reference/overlapping-boxes.base.argb32.ref.png | Bin .../reference/overlapping-boxes.base.rgb24.ref.png | Bin .../test/reference/overlapping-boxes.rgb24.ref.png | Bin .../overlapping-boxes.traps.argb32.ref.png | Bin .../reference/overlapping-boxes.traps.rgb24.ref.png | Bin .../overlapping-dash-caps.base.argb32.ref.png | Bin .../overlapping-dash-caps.base.rgb24.ref.png | Bin .../overlapping-dash-caps.mask.argb32.ref.png | Bin .../overlapping-dash-caps.mask.rgb24.ref.png | Bin .../test/reference/overlapping-dash-caps.ref.png | Bin .../overlapping-dash-caps.traps.argb32.ref.png | Bin .../overlapping-dash-caps.traps.rgb24.ref.png | Bin .../reference/overlapping-glyphs.argb32.ref.png | Bin .../overlapping-glyphs.base.argb32.ref.png | Bin .../reference/overlapping-glyphs.base.rgb24.ref.png | Bin .../overlapping-glyphs.pdf.argb32.xfail.png | Bin .../overlapping-glyphs.pdf.rgb24.xfail.png | Bin .../overlapping-glyphs.quartz.argb32.ref.png | Bin .../overlapping-glyphs.quartz.rgb24.ref.png | Bin .../test/reference/overlapping-glyphs.rgb24.ref.png | Bin .../reference/overlapping-glyphs.svg.argb32.ref.png | Bin .../reference/overlapping-glyphs.svg.rgb24.ref.png | Bin .../overlapping-glyphs.traps.argb32.ref.png | Bin .../overlapping-glyphs.traps.rgb24.ref.png | Bin .../paint-clip-fill-aa.base.argb32.ref.png | Bin .../reference/paint-clip-fill-aa.base.rgb24.ref.png | Bin .../cairo/test/reference/paint-clip-fill-aa.ref.png | Bin .../paint-clip-fill-mono.base.argb32.ref.png | Bin .../paint-clip-fill-mono.base.rgb24.ref.png | Bin .../test/reference/paint-clip-fill-mono.ref.png | Bin .../test/reference/paint-repeat.base.argb32.ref.png | Bin .../test/reference/paint-repeat.base.rgb24.ref.png | Bin .../cairo/test/reference/paint-repeat.ref.png | Bin .../paint-source-alpha.base.argb32.ref.png | Bin .../reference/paint-source-alpha.base.rgb24.ref.png | Bin .../reference/paint-source-alpha.image16.ref.png | Bin .../cairo/test/reference/paint-source-alpha.ref.png | Bin .../test/reference/paint-source-alpha.svg.ref.png | Bin .../paint-with-alpha-clip-mask.argb32.ref.png | Bin .../paint-with-alpha-clip-mask.base.argb32.ref.png | Bin .../paint-with-alpha-clip-mask.base.rgb24.ref.png | Bin .../paint-with-alpha-clip-mask.mask.argb32.ref.png | Bin .../paint-with-alpha-clip-mask.mask.rgb24.ref.png | Bin .../paint-with-alpha-clip-mask.rgb24.ref.png | Bin .../paint-with-alpha-clip-mask.traps.argb32.ref.png | Bin .../paint-with-alpha-clip-mask.traps.rgb24.ref.png | Bin .../paint-with-alpha-clip.base.argb32.ref.png | Bin .../paint-with-alpha-clip.base.rgb24.ref.png | Bin .../paint-with-alpha-clip.mask.argb32.ref.png | Bin .../paint-with-alpha-clip.mask.rgb24.ref.png | Bin .../test/reference/paint-with-alpha-clip.ref.png | Bin .../paint-with-alpha-clip.traps.argb32.ref.png | Bin .../paint-with-alpha-clip.traps.rgb24.ref.png | Bin .../paint-with-alpha-solid-clip.base.argb32.ref.png | Bin .../paint-with-alpha-solid-clip.base.rgb24.ref.png | Bin .../paint-with-alpha-solid-clip.mask.argb32.ref.png | Bin .../paint-with-alpha-solid-clip.mask.rgb24.ref.png | Bin .../reference/paint-with-alpha-solid-clip.ref.png | Bin ...paint-with-alpha-solid-clip.traps.argb32.ref.png | Bin .../paint-with-alpha-solid-clip.traps.rgb24.ref.png | Bin .../reference/paint-with-alpha.base.argb32.ref.png | Bin .../reference/paint-with-alpha.base.rgb24.ref.png | Bin .../test/reference/paint-with-alpha.image16.ref.png | Bin .../cairo/test/reference/paint-with-alpha.ref.png | Bin .../test/reference/paint-with-alpha.svg.ref.png | Bin .../cairo/test/reference/paint.base.argb32.ref.png | Bin .../cairo/test/reference/paint.base.rgb24.ref.png | Bin .../3rd-party}/cairo/test/reference/paint.ref.png | Bin .../partial-clip-text-bottom.argb32.ref.png | Bin .../partial-clip-text-bottom.base.argb32.ref.png | Bin .../partial-clip-text-bottom.base.rgb24.ref.png | Bin .../partial-clip-text-bottom.rgb24.ref.png | Bin .../reference/partial-clip-text-left.argb32.ref.png | Bin .../partial-clip-text-left.base.argb32.ref.png | Bin .../partial-clip-text-left.base.rgb24.ref.png | Bin .../reference/partial-clip-text-left.rgb24.ref.png | Bin .../partial-clip-text-right.argb32.ref.png | Bin .../partial-clip-text-right.base.argb32.ref.png | Bin .../partial-clip-text-right.base.rgb24.ref.png | Bin .../reference/partial-clip-text-right.rgb24.ref.png | Bin .../reference/partial-clip-text-right.traps.ref.png | Bin .../reference/partial-clip-text-top.argb32.ref.png | Bin .../partial-clip-text-top.base.argb32.ref.png | Bin .../partial-clip-text-top.base.rgb24.ref.png | Bin .../test/reference/partial-clip-text-top.ps.ref.png | Bin .../reference/partial-clip-text-top.quartz.ref.png | Bin .../reference/partial-clip-text-top.rgb24.ref.png | Bin .../reference/partial-clip-text-top.svg.ref.png | Bin .../reference/partial-clip-text-top.traps.ref.png | Bin ...tial-coverage-half-reference.base.argb32.ref.png | Bin ...rtial-coverage-half-reference.base.rgb24.ref.png | Bin .../partial-coverage-half-reference.ref.png | Bin .../partial-coverage-half-triangles.ref.png | Bin .../partial-coverage-intersecting-quads.ref.png | Bin .../partial-coverage-intersecting-quads.xfail.png | Bin .../partial-coverage-intersecting-triangles.ref.png | Bin ...rtial-coverage-overlap-half-triangles-eo.ref.png | Bin .../partial-coverage-overlap-half-triangles.ref.png | Bin ...coverage-overlap-three-quarter-triangles.ref.png | Bin .../reference/partial-coverage-rectangles.ref.png | Bin .../partial-coverage-reference.base.argb32.ref.png | Bin .../partial-coverage-reference.base.rgb24.ref.png | Bin .../reference/partial-coverage-reference.ref.png | Bin ...rage-three-quarter-reference.base.argb32.ref.png | Bin ...erage-three-quarter-reference.base.rgb24.ref.png | Bin ...partial-coverage-three-quarter-reference.ref.png | Bin .../reference/partial-coverage-triangles.ref.png | Bin .../test/reference/pass-through.argb32.ref.png | Bin .../test/reference/pass-through.base.argb32.ref.png | Bin .../test/reference/pass-through.base.rgb24.ref.png | Bin .../cairo/test/reference/pass-through.rgb24.ref.png | Bin .../cairo/test/reference/path-append.argb32.ref.png | Bin .../test/reference/path-append.base.argb32.ref.png | Bin .../test/reference/path-append.base.rgb24.ref.png | Bin .../test/reference/path-append.image16.ref.png | Bin .../cairo/test/reference/path-append.ps.ref.png | Bin .../cairo/test/reference/path-append.quartz.ref.png | Bin .../cairo/test/reference/path-append.rgb24.ref.png | Bin .../reference/path-append.test-fallback.ref.png | Bin .../test/reference/path-append.traps.argb32.ref.png | Bin .../test/reference/path-append.traps.rgb24.ref.png | Bin .../reference/path-append.xlib-fallback.ref.png | Bin .../test/reference/path-stroke-twice.argb32.ref.png | Bin .../reference/path-stroke-twice.base.argb32.ref.png | Bin .../reference/path-stroke-twice.base.rgb24.ref.png | Bin .../reference/path-stroke-twice.image16.ref.png | Bin .../test/reference/path-stroke-twice.ps.ref.png | Bin .../test/reference/path-stroke-twice.rgb24.ref.png | Bin .../path-stroke-twice.traps.argb32.ref.png | Bin .../reference/path-stroke-twice.traps.rgb24.ref.png | Bin .../reference/pattern-getters.base.argb32.ref.png | Bin .../reference/pattern-getters.base.rgb24.ref.png | Bin .../cairo/test/reference/pattern-getters.ref.png | Bin .../pdf-isolated-group.base.argb32.ref.png | Bin .../reference/pdf-isolated-group.base.rgb24.ref.png | Bin .../cairo/test/reference/pdf-isolated-group.ref.png | Bin .../reference/pdf-surface-source.argb32.ref.png | Bin .../pdf-surface-source.base.argb32.ref.png | Bin .../reference/pdf-surface-source.base.rgb24.ref.png | Bin .../reference/pdf-surface-source.image16.ref.png | Bin .../test/reference/pdf-surface-source.rgb24.ref.png | Bin .../pdf-surface-source.svg12.argb32.xfail.png | Bin .../pdf-surface-source.svg12.rgb24.xfail.png | Bin .../test/reference/pixman-rotate.argb32.ref.png | Bin .../reference/pixman-rotate.base.argb32.ref.png | Bin .../test/reference/pixman-rotate.base.rgb24.ref.png | Bin .../test/reference/pixman-rotate.ps.argb32.ref.png | Bin .../test/reference/pixman-rotate.rgb24.ref.png | Bin .../3rd-party}/cairo/test/reference/ps-eps.ref.png | Bin .../test/reference/ps-surface-source.argb32.ref.png | Bin .../reference/ps-surface-source.base.argb32.ref.png | Bin .../reference/ps-surface-source.base.rgb24.ref.png | Bin .../reference/ps-surface-source.image16.ref.png | Bin .../test/reference/ps-surface-source.rgb24.ref.png | Bin .../ps-surface-source.svg12.argb32.xfail.png | Bin .../ps-surface-source.svg12.rgb24.xfail.png | Bin .../pthread-same-source.base.argb32.ref.png | Bin .../pthread-same-source.base.rgb24.ref.png | Bin .../reference/pthread-same-source.image16.ref.png | Bin .../reference/pthread-same-source.quartz.xfail.png | Bin .../test/reference/pthread-same-source.ref.png | Bin .../test/reference/pthread-show-text.argb32.ref.png | Bin .../reference/pthread-show-text.base.argb32.ref.png | Bin .../reference/pthread-show-text.base.rgb24.ref.png | Bin .../reference/pthread-show-text.image16.ref.png | Bin .../test/reference/pthread-show-text.pdf.ref.png | Bin .../test/reference/pthread-show-text.ps.ref.png | Bin .../test/reference/pthread-show-text.quartz.ref.png | Bin .../test/reference/pthread-show-text.rgb24.ref.png | Bin .../test/reference/pthread-show-text.traps.ref.png | Bin .../pthread-show-text.xlib-fallback.ref.png | Bin .../reference/pthread-similar.base.argb32.ref.png | Bin .../reference/pthread-similar.base.rgb24.ref.png | Bin .../cairo/test/reference/pthread-similar.ref.png | Bin .../test/reference/push-group-color.argb32.ref.png | Bin .../reference/push-group-color.base.argb32.ref.png | Bin .../reference/push-group-color.base.rgb24.ref.png | Bin .../test/reference/push-group-color.image16.ref.png | Bin .../test/reference/push-group-color.ps2.ref.png | Bin .../test/reference/push-group-color.ps3.ref.png | Bin .../test/reference/push-group-color.quartz.ref.png | Bin .../test/reference/push-group-color.rgb24.ref.png | Bin .../reference/push-group-color.traps.argb32.ref.png | Bin .../reference/push-group-color.traps.rgb24.ref.png | Bin .../push-group-path-offset.base.argb32.ref.png | Bin .../push-group-path-offset.base.rgb24.ref.png | Bin .../test/reference/push-group-path-offset.ref.png | Bin .../cairo/test/reference/push-group.argb32.ref.png | Bin .../test/reference/push-group.base.argb32.ref.png | Bin .../test/reference/push-group.base.rgb24.ref.png | Bin .../cairo/test/reference/push-group.image16.ref.png | Bin .../test/reference/push-group.quartz.argb32.ref.png | Bin .../test/reference/push-group.quartz.rgb24.ref.png | Bin .../cairo/test/reference/push-group.rgb24.ref.png | Bin .../test/reference/push-group.traps.argb32.ref.png | Bin .../test/reference/push-group.traps.rgb24.ref.png | Bin .../reference/quartz-surface-source.argb32.ref.png | Bin .../reference/quartz-surface-source.ps2.ref.png | Bin .../reference/quartz-surface-source.ps3.ref.png | Bin .../reference/quartz-surface-source.rgb24.ref.png | Bin .../radial-gradient-extend.base.argb32.ref.png | Bin .../radial-gradient-extend.base.rgb24.ref.png | Bin .../radial-gradient-extend.mask.argb32.ref.png | Bin .../radial-gradient-extend.mask.rgb24.ref.png | Bin .../reference/radial-gradient-extend.ps3.ref.png | Bin .../test/reference/radial-gradient-extend.ref.png | Bin .../radial-gradient-extend.traps.argb32.ref.png | Bin .../radial-gradient-extend.traps.rgb24.ref.png | Bin .../radial-gradient-mask-source.argb32.ref.png | Bin .../radial-gradient-mask-source.base.argb32.ref.png | Bin .../radial-gradient-mask-source.base.rgb24.ref.png | Bin .../radial-gradient-mask-source.image16.ref.png | Bin .../radial-gradient-mask-source.mask.rgb24.ref.png | Bin ...adial-gradient-mask-source.quartz.argb32.ref.png | Bin ...radial-gradient-mask-source.quartz.rgb24.ref.png | Bin .../radial-gradient-mask-source.traps.rgb24.ref.png | Bin .../radial-gradient-mask.base.argb32.ref.png | Bin .../radial-gradient-mask.base.rgb24.ref.png | Bin .../reference/radial-gradient-mask.image16.ref.png | Bin .../reference/radial-gradient-mask.quartz.ref.png | Bin .../test/reference/radial-gradient-mask.ref.png | Bin .../radial-gradient-one-stop.base.argb32.ref.png | Bin .../radial-gradient-one-stop.base.rgb24.ref.png | Bin .../radial-gradient-one-stop.quartz.ref.png | Bin .../test/reference/radial-gradient-one-stop.ref.png | Bin .../reference/radial-gradient-source.argb32.ref.png | Bin .../radial-gradient-source.base.argb32.ref.png | Bin .../radial-gradient-source.base.rgb24.ref.png | Bin .../radial-gradient-source.image16.ref.png | Bin .../radial-gradient-source.quartz.argb32.ref.png | Bin .../radial-gradient-source.quartz.rgb24.ref.png | Bin .../reference/radial-gradient-source.rgb24.ref.png | Bin .../reference/radial-gradient.base.argb32.ref.png | Bin .../reference/radial-gradient.base.rgb24.ref.png | Bin .../test/reference/radial-gradient.image16.ref.png | Bin .../test/reference/radial-gradient.quartz.ref.png | Bin .../cairo/test/reference/radial-gradient.ref.png | Bin .../radial-outer-focus.base.argb32.ref.png | Bin .../reference/radial-outer-focus.base.rgb24.ref.png | Bin .../radial-outer-focus.mask.argb32.ref.png | Bin .../reference/radial-outer-focus.mask.rgb24.ref.png | Bin .../radial-outer-focus.traps.argb32.ref.png | Bin .../radial-outer-focus.traps.rgb24.ref.png | Bin .../test/reference/radial-outer-focus.xfail.png | Bin .../test/reference/random-clip.base.argb32.ref.png | Bin .../reference/random-clip.base.argb32.xfail.png | Bin .../test/reference/random-clip.base.rgb24.ref.png | Bin .../test/reference/random-clip.base.rgb24.xfail.png | Bin .../test/reference/random-clip.mask.argb32.ref.png | Bin .../test/reference/random-clip.mask.rgb24.ref.png | Bin .../cairo/test/reference/random-clip.ref.png | Bin .../test/reference/random-clip.traps.argb32.ref.png | Bin .../test/reference/random-clip.traps.rgb24.ref.png | Bin .../random-intersections-curves-eo.argb32.ref.png | Bin ...ndom-intersections-curves-eo.base.argb32.ref.png | Bin ...andom-intersections-curves-eo.base.rgb24.ref.png | Bin .../random-intersections-curves-eo.image16.ref.png | Bin .../random-intersections-curves-eo.pdf.ref.png | Bin .../random-intersections-curves-eo.ps.ref.png | Bin .../random-intersections-curves-eo.quartz.ref.png | Bin .../random-intersections-curves-eo.rgb24.ref.png | Bin ...dom-intersections-curves-eo.traps.argb32.ref.png | Bin ...ndom-intersections-curves-eo.traps.rgb24.ref.png | Bin ...om-intersections-curves-eo.xlib-fallback.ref.png | Bin .../random-intersections-curves-nz.argb32.ref.png | Bin ...ndom-intersections-curves-nz.base.argb32.ref.png | Bin ...andom-intersections-curves-nz.base.rgb24.ref.png | Bin .../random-intersections-curves-nz.image16.ref.png | Bin .../random-intersections-curves-nz.pdf.ref.png | Bin .../random-intersections-curves-nz.ps.ref.png | Bin .../random-intersections-curves-nz.quartz.ref.png | Bin .../random-intersections-curves-nz.rgb24.ref.png | Bin ...dom-intersections-curves-nz.traps.argb32.ref.png | Bin ...ndom-intersections-curves-nz.traps.rgb24.ref.png | Bin ...om-intersections-curves-nz.xlib-fallback.ref.png | Bin .../random-intersections-eo.argb32.ref.png | Bin .../random-intersections-eo.base.argb32.ref.png | Bin .../random-intersections-eo.base.rgb24.ref.png | Bin .../random-intersections-eo.image16.ref.png | Bin .../reference/random-intersections-eo.ps.ref.png | Bin .../random-intersections-eo.quartz.ref.png | Bin .../reference/random-intersections-eo.rgb24.ref.png | Bin .../random-intersections-eo.traps.argb32.ref.png | Bin .../random-intersections-eo.traps.rgb24.ref.png | Bin .../random-intersections-nonzero.argb32.ref.png | Bin ...random-intersections-nonzero.base.argb32.ref.png | Bin .../random-intersections-nonzero.base.rgb24.ref.png | Bin .../random-intersections-nonzero.image16.ref.png | Bin .../random-intersections-nonzero.ps.ref.png | Bin .../random-intersections-nonzero.quartz.ref.png | Bin .../random-intersections-nonzero.rgb24.ref.png | Bin ...andom-intersections-nonzero.traps.argb32.ref.png | Bin ...random-intersections-nonzero.traps.rgb24.ref.png | Bin .../reference/raster-source.base.argb32.ref.png | Bin .../test/reference/raster-source.base.rgb24.ref.png | Bin .../cairo/test/reference/raster-source.ps.ref.png | Bin .../cairo/test/reference/raster-source.ref.png | Bin .../record-extend-none-similar.base.argb32.ref.png | Bin .../record-extend-none-similar.base.rgb24.ref.png | Bin .../reference/record-extend-none-similar.ref.png | Bin .../record-extend-none-similar.traps.argb32.ref.png | Bin .../record-extend-none-similar.traps.rgb24.ref.png | Bin .../record-extend-none.base.argb32.ref.png | Bin .../reference/record-extend-none.base.rgb24.ref.png | Bin .../cairo/test/reference/record-extend-none.ref.png | Bin .../record-extend-pad-similar.base.argb32.ref.png | Bin .../record-extend-pad-similar.base.rgb24.ref.png | Bin .../reference/record-extend-pad-similar.ref.png | Bin .../record-extend-pad-similar.traps.argb32.ref.png | Bin .../record-extend-pad-similar.traps.rgb24.ref.png | Bin .../reference/record-extend-pad.base.argb32.ref.png | Bin .../reference/record-extend-pad.base.rgb24.ref.png | Bin .../cairo/test/reference/record-extend-pad.ref.png | Bin ...ecord-extend-reflect-similar.base.argb32.ref.png | Bin ...record-extend-reflect-similar.base.rgb24.ref.png | Bin .../reference/record-extend-reflect-similar.ref.png | Bin ...cord-extend-reflect-similar.traps.argb32.ref.png | Bin ...ecord-extend-reflect-similar.traps.rgb24.ref.png | Bin .../record-extend-reflect.base.argb32.ref.png | Bin .../record-extend-reflect.base.rgb24.ref.png | Bin .../test/reference/record-extend-reflect.ref.png | Bin ...record-extend-repeat-similar.base.argb32.ref.png | Bin .../record-extend-repeat-similar.base.rgb24.ref.png | Bin .../reference/record-extend-repeat-similar.ref.png | Bin ...ecord-extend-repeat-similar.traps.argb32.ref.png | Bin ...record-extend-repeat-similar.traps.rgb24.ref.png | Bin .../record-extend-repeat.base.argb32.ref.png | Bin .../record-extend-repeat.base.rgb24.ref.png | Bin .../test/reference/record-extend-repeat.ref.png | Bin .../reference/record-fill-alpha.base.argb32.ref.png | Bin .../reference/record-fill-alpha.base.rgb24.ref.png | Bin .../test/reference/record-fill-alpha.base.xfail.png | Bin .../record-fill-alpha.image16.rgb24.ref.png | Bin .../cairo/test/reference/record-fill-alpha.ref.png | Bin .../record-fill-alpha.traps.argb32.ref.png | Bin .../reference/record-fill-alpha.traps.rgb24.ref.png | Bin .../test/reference/record-fill-alpha.xfail.png | Bin .../test/reference/record-mesh.base.argb32.ref.png | Bin .../test/reference/record-mesh.base.rgb24.ref.png | Bin .../reference/record-mesh.image16.rgb24.ref.png | Bin .../cairo/test/reference/record-mesh.ref.png | Bin ...record-paint-alpha-clip-mask.base.argb32.ref.png | Bin .../record-paint-alpha-clip-mask.base.rgb24.ref.png | Bin .../record-paint-alpha-clip-mask.base.xfail.png | Bin ...cord-paint-alpha-clip-mask.image16.rgb24.ref.png | Bin .../reference/record-paint-alpha-clip-mask.ref.png | Bin ...ecord-paint-alpha-clip-mask.traps.argb32.ref.png | Bin ...record-paint-alpha-clip-mask.traps.rgb24.ref.png | Bin .../record-paint-alpha-clip-mask.xfail.png | Bin .../record-paint-alpha-clip.argb32.ref.png | Bin .../record-paint-alpha-clip.base.argb32.ref.png | Bin .../record-paint-alpha-clip.base.rgb24.ref.png | Bin .../record-paint-alpha-clip.image16.rgb24.ref.png | Bin .../reference/record-paint-alpha-clip.rgb24.ref.png | Bin .../record-paint-alpha-clip.traps.argb32.ref.png | Bin .../record-paint-alpha-clip.traps.rgb24.ref.png | Bin ...ecord-paint-alpha-solid-clip.base.argb32.ref.png | Bin ...record-paint-alpha-solid-clip.base.rgb24.ref.png | Bin ...ord-paint-alpha-solid-clip.image16.rgb24.ref.png | Bin .../reference/record-paint-alpha-solid-clip.ref.png | Bin ...cord-paint-alpha-solid-clip.traps.argb32.ref.png | Bin ...ecord-paint-alpha-solid-clip.traps.rgb24.ref.png | Bin .../record-paint-alpha.base.argb32.ref.png | Bin .../reference/record-paint-alpha.base.rgb24.ref.png | Bin .../record-paint-alpha.image16.rgb24.ref.png | Bin .../cairo/test/reference/record-paint-alpha.ref.png | Bin .../test/reference/record-paint.base.argb32.ref.png | Bin .../test/reference/record-paint.base.rgb24.ref.png | Bin .../cairo/test/reference/record-paint.ref.png | Bin .../record-select-font-face.argb32.ref.png | Bin .../record-select-font-face.base.argb32.ref.png | Bin .../record-select-font-face.base.rgb24.ref.png | Bin .../record-select-font-face.image16.rgb24.ref.png | Bin .../reference/record-select-font-face.rgb24.ref.png | Bin .../reference/record-select-font-face.xfail.png | Bin .../record-self-intersecting.base.argb32.ref.png | Bin .../record-self-intersecting.base.rgb24.ref.png | Bin .../record-self-intersecting.image16.rgb24.ref.png | Bin .../test/reference/record-self-intersecting.ref.png | Bin .../record-text-transform.base.argb32.ref.png | Bin .../record-text-transform.base.rgb24.ref.png | Bin .../record-text-transform.image16.rgb24.ref.png | Bin .../test/reference/record-text-transform.ref.png | Bin .../record1414x-fill-alpha.base.argb32.ref.png | Bin .../record1414x-fill-alpha.base.rgb24.ref.png | Bin .../reference/record1414x-fill-alpha.base.xfail.png | Bin .../test/reference/record1414x-fill-alpha.ref.png | Bin .../test/reference/record1414x-fill-alpha.xfail.png | Bin ...record1414x-paint-alpha-clip-mask.argb32.ref.png | Bin ...d1414x-paint-alpha-clip-mask.base.argb32.ref.png | Bin ...rd1414x-paint-alpha-clip-mask.base.rgb24.ref.png | Bin .../record1414x-paint-alpha-clip-mask.rgb24.ref.png | Bin .../record1414x-paint-alpha-clip.argb32.ref.png | Bin ...record1414x-paint-alpha-clip.base.argb32.ref.png | Bin .../record1414x-paint-alpha-clip.base.rgb24.ref.png | Bin .../record1414x-paint-alpha-clip.rgb24.ref.png | Bin ...ecord1414x-paint-alpha-solid-clip.argb32.ref.png | Bin ...1414x-paint-alpha-solid-clip.base.argb32.ref.png | Bin ...d1414x-paint-alpha-solid-clip.base.rgb24.ref.png | Bin ...record1414x-paint-alpha-solid-clip.rgb24.ref.png | Bin .../record1414x-paint-alpha.argb32.ref.png | Bin .../record1414x-paint-alpha.base.argb32.ref.png | Bin .../record1414x-paint-alpha.base.rgb24.ref.png | Bin .../reference/record1414x-paint-alpha.rgb24.ref.png | Bin .../test/reference/record1414x-paint.argb32.ref.png | Bin .../reference/record1414x-paint.base.argb32.ref.png | Bin .../reference/record1414x-paint.base.rgb24.ref.png | Bin .../test/reference/record1414x-paint.rgb24.ref.png | Bin .../record1414x-select-font-face.argb32.ref.png | Bin ...record1414x-select-font-face.base.argb32.ref.png | Bin .../record1414x-select-font-face.base.rgb24.ref.png | Bin .../record1414x-select-font-face.rgb24.ref.png | Bin .../record1414x-self-intersecting.argb32.ref.png | Bin ...ecord1414x-self-intersecting.base.argb32.ref.png | Bin ...record1414x-self-intersecting.base.rgb24.ref.png | Bin .../record1414x-self-intersecting.rgb24.ref.png | Bin .../record1414x-text-transform.base.argb32.ref.png | Bin .../record1414x-text-transform.base.rgb24.ref.png | Bin .../reference/record1414x-text-transform.ref.png | Bin .../record2x-fill-alpha.base.argb32.ref.png | Bin .../record2x-fill-alpha.base.rgb24.ref.png | Bin .../reference/record2x-fill-alpha.base.xfail.png | Bin .../test/reference/record2x-fill-alpha.ref.png | Bin .../test/reference/record2x-fill-alpha.xfail.png | Bin .../record2x-paint-alpha-clip-mask.argb32.ref.png | Bin ...cord2x-paint-alpha-clip-mask.base.argb32.ref.png | Bin ...ecord2x-paint-alpha-clip-mask.base.rgb24.ref.png | Bin .../record2x-paint-alpha-clip-mask.rgb24.ref.png | Bin .../record2x-paint-alpha-clip.argb32.ref.png | Bin .../record2x-paint-alpha-clip.base.argb32.ref.png | Bin .../record2x-paint-alpha-clip.base.rgb24.ref.png | Bin .../record2x-paint-alpha-clip.rgb24.ref.png | Bin .../record2x-paint-alpha-solid-clip.argb32.ref.png | Bin ...ord2x-paint-alpha-solid-clip.base.argb32.ref.png | Bin ...cord2x-paint-alpha-solid-clip.base.rgb24.ref.png | Bin .../record2x-paint-alpha-solid-clip.rgb24.ref.png | Bin .../reference/record2x-paint-alpha.argb32.ref.png | Bin .../record2x-paint-alpha.base.argb32.ref.png | Bin .../record2x-paint-alpha.base.rgb24.ref.png | Bin .../reference/record2x-paint-alpha.rgb24.ref.png | Bin .../test/reference/record2x-paint.argb32.ref.png | Bin .../reference/record2x-paint.base.argb32.ref.png | Bin .../reference/record2x-paint.base.rgb24.ref.png | Bin .../test/reference/record2x-paint.rgb24.ref.png | Bin .../record2x-select-font-face.argb32.ref.png | Bin .../record2x-select-font-face.base.argb32.ref.png | Bin .../record2x-select-font-face.base.rgb24.ref.png | Bin .../record2x-select-font-face.rgb24.ref.png | Bin .../record2x-self-intersecting.argb32.ref.png | Bin .../record2x-self-intersecting.base.argb32.ref.png | Bin .../record2x-self-intersecting.base.rgb24.ref.png | Bin .../record2x-self-intersecting.rgb24.ref.png | Bin .../record2x-text-transform.base.argb32.ref.png | Bin .../record2x-text-transform.base.rgb24.ref.png | Bin .../test/reference/record2x-text-transform.ref.png | Bin .../record90-fill-alpha.base.argb32.ref.png | Bin .../record90-fill-alpha.base.rgb24.ref.png | Bin .../test/reference/record90-fill-alpha.ref.png | Bin .../test/reference/record90-fill-alpha.xfail.png | Bin ...cord90-paint-alpha-clip-mask.base.argb32.ref.png | Bin ...ecord90-paint-alpha-clip-mask.base.rgb24.ref.png | Bin .../record90-paint-alpha-clip-mask.ref.png | Bin .../record90-paint-alpha-clip-mask.xfail.png | Bin .../record90-paint-alpha-clip.base.argb32.ref.png | Bin .../record90-paint-alpha-clip.base.rgb24.ref.png | Bin .../reference/record90-paint-alpha-clip.ref.png | Bin .../reference/record90-paint-alpha-clip.xfail.png | Bin .../record90-paint-alpha-solid-clip.argb32.ref.png | Bin ...ord90-paint-alpha-solid-clip.base.argb32.ref.png | Bin ...cord90-paint-alpha-solid-clip.base.rgb24.ref.png | Bin .../record90-paint-alpha-solid-clip.rgb24.ref.png | Bin .../reference/record90-paint-alpha.argb32.ref.png | Bin .../record90-paint-alpha.base.argb32.ref.png | Bin .../record90-paint-alpha.base.rgb24.ref.png | Bin .../reference/record90-paint-alpha.rgb24.ref.png | Bin .../test/reference/record90-paint.argb32.ref.png | Bin .../reference/record90-paint.base.argb32.ref.png | Bin .../reference/record90-paint.base.rgb24.ref.png | Bin .../test/reference/record90-paint.rgb24.ref.png | Bin .../record90-select-font-face.argb32.ref.png | Bin .../record90-select-font-face.base.argb32.ref.png | Bin .../record90-select-font-face.base.rgb24.ref.png | Bin .../record90-select-font-face.rgb24.ref.png | Bin .../record90-self-intersecting.base.argb32.ref.png | Bin .../record90-self-intersecting.base.rgb24.ref.png | Bin .../reference/record90-self-intersecting.ref.png | Bin .../record90-text-transform.base.argb32.ref.png | Bin .../record90-text-transform.base.rgb24.ref.png | Bin .../test/reference/record90-text-transform.ref.png | Bin .../test/reference/recordflip-fill-alpha.ref.png | Bin .../recordflip-paint-alpha-clip-mask.ref.png | Bin .../reference/recordflip-paint-alpha-clip.ref.png | Bin .../recordflip-paint-alpha-solid-clip.ref.png | Bin .../test/reference/recordflip-paint-alpha.ref.png | Bin .../cairo/test/reference/recordflip-paint.ref.png | Bin .../reference/recordflip-select-font-face.ref.png | Bin .../reference/recordflip-self-intersecting.ref.png | Bin .../reference/recordflip-text-transform.ref.png | Bin .../recording-surface-extend-none.argb32.ref.png | Bin ...ecording-surface-extend-none.base.argb32.ref.png | Bin ...recording-surface-extend-none.base.rgb24.ref.png | Bin .../recording-surface-extend-none.rgb24.ref.png | Bin ...cording-surface-extend-none.traps.argb32.ref.png | Bin ...ecording-surface-extend-none.traps.rgb24.ref.png | Bin .../recording-surface-extend-pad.argb32.ref.png | Bin ...recording-surface-extend-pad.base.argb32.ref.png | Bin .../recording-surface-extend-pad.base.rgb24.ref.png | Bin .../recording-surface-extend-pad.rgb24.ref.png | Bin ...ecording-surface-extend-pad.traps.argb32.ref.png | Bin ...recording-surface-extend-pad.traps.rgb24.ref.png | Bin .../recording-surface-extend-reflect.argb32.ref.png | Bin ...rding-surface-extend-reflect.base.argb32.ref.png | Bin ...ording-surface-extend-reflect.base.rgb24.ref.png | Bin .../recording-surface-extend-reflect.rgb24.ref.png | Bin ...ding-surface-extend-reflect.traps.argb32.ref.png | Bin ...rding-surface-extend-reflect.traps.rgb24.ref.png | Bin .../recording-surface-extend-repeat.argb32.ref.png | Bin ...ording-surface-extend-repeat.base.argb32.ref.png | Bin ...cording-surface-extend-repeat.base.rgb24.ref.png | Bin .../recording-surface-extend-repeat.rgb24.ref.png | Bin ...rding-surface-extend-repeat.traps.argb32.ref.png | Bin ...ording-surface-extend-repeat.traps.rgb24.ref.png | Bin .../reference/recording-surface-over.argb32.ref.png | Bin .../recording-surface-over.base.argb32.ref.png | Bin .../recording-surface-over.base.rgb24.ref.png | Bin .../recording-surface-over.gl.argb32.ref.png | Bin .../recording-surface-over.image16.ref.png | Bin .../recording-surface-over.pdf.argb32.ref.png | Bin .../recording-surface-over.pdf.rgb24.ref.png | Bin .../recording-surface-over.ps.argb32.ref.png | Bin .../recording-surface-over.ps.rgb24.ref.png | Bin .../recording-surface-over.quartz.argb32.ref.png | Bin .../recording-surface-over.quartz.rgb24.ref.png | Bin .../reference/recording-surface-over.rgb24.ref.png | Bin .../recording-surface-over.svg.argb32.ref.png | Bin .../recording-surface-over.svg.rgb24.ref.png | Bin .../recording-surface-over.traps.argb32.ref.png | Bin .../recording-surface-over.traps.rgb24.ref.png | Bin .../recording-surface-source.argb32.ref.png | Bin .../recording-surface-source.base.argb32.ref.png | Bin .../recording-surface-source.base.rgb24.ref.png | Bin .../recording-surface-source.rgb24.ref.png | Bin .../recording-surface-source.traps.argb32.ref.png | Bin .../recording-surface-source.traps.rgb24.ref.png | Bin .../rectangle-rounding-error.base.argb32.ref.png | Bin .../rectangle-rounding-error.base.rgb24.ref.png | Bin .../test/reference/rectangle-rounding-error.ref.png | Bin .../rectilinear-dash-scale-unaligned.ref.png | Bin .../rectilinear-dash-scale-unaligned.traps.ref.png | Bin .../test/reference/rectilinear-dash-scale.ref.png | Bin .../reference/rectilinear-dash.base.argb32.ref.png | Bin .../reference/rectilinear-dash.base.rgb24.ref.png | Bin .../reference/rectilinear-dash.mask.argb32.ref.png | Bin .../reference/rectilinear-dash.mask.rgb24.ref.png | Bin .../reference/rectilinear-dash.quartz.xfail.png | Bin .../cairo/test/reference/rectilinear-dash.ref.png | Bin .../reference/rectilinear-dash.traps.argb32.ref.png | Bin .../reference/rectilinear-dash.traps.rgb24.ref.png | Bin .../reference/rectilinear-fill.base.argb32.ref.png | Bin .../reference/rectilinear-fill.base.rgb24.ref.png | Bin .../cairo/test/reference/rectilinear-fill.ref.png | Bin .../reference/rectilinear-grid.base.argb32.ref.png | Bin .../reference/rectilinear-grid.base.rgb24.ref.png | Bin .../test/reference/rectilinear-grid.image16.ref.png | Bin .../cairo/test/reference/rectilinear-grid.ref.png | Bin .../reference/rectilinear-grid.traps.argb32.ref.png | Bin .../reference/rectilinear-grid.traps.rgb24.ref.png | Bin .../rectilinear-miter-limit.argb32.ref.png | Bin .../rectilinear-miter-limit.base.argb32.ref.png | Bin .../rectilinear-miter-limit.base.rgb24.ref.png | Bin .../reference/rectilinear-miter-limit.ps2.ref.png | Bin .../reference/rectilinear-miter-limit.ps3.ref.png | Bin .../reference/rectilinear-miter-limit.rgb24.ref.png | Bin .../rectilinear-miter-limit.traps.argb32.ref.png | Bin .../rectilinear-miter-limit.traps.rgb24.ref.png | Bin .../rectilinear-stroke.base.argb32.ref.png | Bin .../reference/rectilinear-stroke.base.rgb24.ref.png | Bin .../reference/rectilinear-stroke.quartz.xfail.png | Bin .../cairo/test/reference/rectilinear-stroke.ref.png | Bin .../reference/reflected-stroke.base.argb32.ref.png | Bin .../reference/reflected-stroke.base.rgb24.ref.png | Bin .../test/reference/reflected-stroke.image16.ref.png | Bin .../reference/reflected-stroke.mask.argb32.ref.png | Bin .../reference/reflected-stroke.mask.rgb24.ref.png | Bin .../test/reference/reflected-stroke.ps.ref.png | Bin .../cairo/test/reference/reflected-stroke.ref.png | Bin .../reference/reflected-stroke.traps.argb32.ref.png | Bin .../reference/reflected-stroke.traps.rgb24.ref.png | Bin .../cairo/test/reference/rel-path.argb32.ref.png | Bin .../test/reference/rel-path.base.argb32.ref.png | Bin .../test/reference/rel-path.base.rgb24.ref.png | Bin .../test/reference/rel-path.mask.rgb24.ref.png | Bin .../cairo/test/reference/rel-path.ps2.rgb24.ref.png | Bin .../cairo/test/reference/rel-path.ps3.rgb24.ref.png | Bin .../cairo/test/reference/rel-path.rgb24.ref.png | Bin .../test/reference/rel-path.traps.argb32.ref.png | Bin .../test/reference/rel-path.traps.rgb24.ref.png | Bin .../rgb24-ignore-alpha.base.argb32.ref.png | Bin .../reference/rgb24-ignore-alpha.base.rgb24.ref.png | Bin .../cairo/test/reference/rgb24-ignore-alpha.ref.png | Bin .../rotate-clip-image-surface-paint.argb32.ref.png | Bin ...ate-clip-image-surface-paint.base.argb32.ref.png | Bin ...tate-clip-image-surface-paint.base.rgb24.ref.png | Bin .../rotate-clip-image-surface-paint.rgb24.ref.png | Bin ...te-clip-image-surface-paint.traps.argb32.ref.png | Bin ...ate-clip-image-surface-paint.traps.rgb24.ref.png | Bin ...-image-surface-paint.xlib-fallback.rgb24.ref.png | Bin ...ip-image-surface-paint.xlib-window.rgb24.ref.png | Bin .../rotate-image-surface-paint.base.argb32.ref.png | Bin .../rotate-image-surface-paint.base.rgb24.ref.png | Bin .../rotate-image-surface-paint.pdf.xfail.png | Bin .../reference/rotate-image-surface-paint.ps.ref.png | Bin .../rotate-image-surface-paint.quartz.ref.png | Bin .../reference/rotate-image-surface-paint.ref.png | Bin .../rotate-image-surface-paint.svg.ref.png | Bin .../rotate-image-surface-paint.svg.xfail.png | Bin .../test/reference/rotated-clip.argb32.ref.png | Bin .../test/reference/rotated-clip.base.argb32.ref.png | Bin .../test/reference/rotated-clip.base.rgb24.ref.png | Bin .../test/reference/rotated-clip.image16.ref.png | Bin .../test/reference/rotated-clip.mask.argb32.ref.png | Bin .../test/reference/rotated-clip.mask.rgb24.ref.png | Bin .../cairo/test/reference/rotated-clip.ps.ref.png | Bin .../test/reference/rotated-clip.quartz.ref.png | Bin .../cairo/test/reference/rotated-clip.rgb24.ref.png | Bin .../reference/rotated-clip.traps.argb32.ref.png | Bin .../test/reference/rotated-clip.traps.rgb24.ref.png | Bin .../reference/rounded-rectangle-fill.argb32.ref.png | Bin .../rounded-rectangle-fill.base.argb32.ref.png | Bin .../rounded-rectangle-fill.base.rgb24.ref.png | Bin .../rounded-rectangle-fill.image16.ref.png | Bin .../reference/rounded-rectangle-fill.ps.ref.png | Bin .../reference/rounded-rectangle-fill.quartz.ref.png | Bin .../reference/rounded-rectangle-fill.rgb24.ref.png | Bin .../rounded-rectangle-fill.traps.argb32.ref.png | Bin .../rounded-rectangle-fill.traps.rgb24.ref.png | Bin .../rounded-rectangle-stroke.base.argb32.ref.png | Bin .../rounded-rectangle-stroke.base.rgb24.ref.png | Bin .../rounded-rectangle-stroke.image16.ref.png | Bin .../rounded-rectangle-stroke.mask.argb32.ref.png | Bin .../rounded-rectangle-stroke.mask.rgb24.ref.png | Bin .../reference/rounded-rectangle-stroke.ps.ref.png | Bin .../test/reference/rounded-rectangle-stroke.ref.png | Bin .../rounded-rectangle-stroke.traps.argb32.ref.png | Bin .../rounded-rectangle-stroke.traps.rgb24.ref.png | Bin .../cairo/test/reference/sample-diagonal.ref.png | Bin .../cairo/test/reference/sample-horizontal.ref.png | Bin .../cairo/test/reference/sample-vertical.ref.png | Bin ...le-down-source-surface-paint.base.argb32.ref.png | Bin ...ale-down-source-surface-paint.base.rgb24.ref.png | Bin .../scale-down-source-surface-paint.ref.png | Bin .../reference/scale-offset-image.argb32.ref.png | Bin .../scale-offset-image.base.argb32.ref.png | Bin .../reference/scale-offset-image.base.rgb24.ref.png | Bin .../test/reference/scale-offset-image.gl.ref.png | Bin .../reference/scale-offset-image.image16.ref.png | Bin .../reference/scale-offset-image.pdf.argb32.ref.png | Bin .../reference/scale-offset-image.pdf.rgb24.ref.png | Bin .../test/reference/scale-offset-image.ps.ref.png | Bin .../reference/scale-offset-image.quartz.ref.png | Bin .../test/reference/scale-offset-image.rgb24.ref.png | Bin .../reference/scale-offset-image.script.xfail.png | Bin .../scale-offset-image.traps.argb32.ref.png | Bin .../scale-offset-image.traps.rgb24.ref.png | Bin .../test/reference/scale-offset-image.xfail.png | Bin .../scale-offset-image.xlib-fallback.xfail.png | Bin .../reference/scale-offset-similar.argb32.ref.png | Bin .../scale-offset-similar.base.argb32.ref.png | Bin .../scale-offset-similar.base.rgb24.ref.png | Bin .../test/reference/scale-offset-similar.gl.ref.png | Bin .../reference/scale-offset-similar.image16.ref.png | Bin .../scale-offset-similar.pdf.argb32.ref.png | Bin .../scale-offset-similar.pdf.rgb24.ref.png | Bin .../test/reference/scale-offset-similar.ps.ref.png | Bin .../reference/scale-offset-similar.quartz.ref.png | Bin .../scale-offset-similar.recording.xfail.png | Bin .../reference/scale-offset-similar.rgb24.ref.png | Bin .../reference/scale-offset-similar.script.xfail.png | Bin .../scale-offset-similar.traps.argb32.ref.png | Bin .../scale-offset-similar.traps.rgb24.ref.png | Bin .../test/reference/scale-offset-similar.xfail.png | Bin .../scale-offset-similar.xlib-fallback.xfail.png | Bin .../reference/scale-offset-similar.xlib.xfail.png | Bin .../scale-offset-xlib-fallback.rgb24.ref.png | Bin .../scale-offset-xlib-window.rgb24.ref.png | Bin .../test/reference/scale-offset-xlib.argb32.ref.png | Bin .../test/reference/scale-offset-xlib.rgb24.ref.png | Bin .../scale-source-surface-paint.argb32.ref.png | Bin .../scale-source-surface-paint.base.argb32.ref.png | Bin .../scale-source-surface-paint.base.rgb24.ref.png | Bin .../scale-source-surface-paint.pdf.argb32.xfail.png | Bin .../scale-source-surface-paint.pdf.rgb24.xfail.png | Bin .../scale-source-surface-paint.rgb24.ref.png | Bin .../scale-source-surface-paint.svg.argb32.xfail.png | Bin .../scale-source-surface-paint.svg.rgb24.xfail.png | Bin .../test/reference/select-font-face.argb32.ref.png | Bin .../reference/select-font-face.base.argb32.ref.png | Bin .../reference/select-font-face.base.rgb24.ref.png | Bin .../test/reference/select-font-face.image16.ref.png | Bin .../test/reference/select-font-face.ps2.ref.png | Bin .../test/reference/select-font-face.ps3.ref.png | Bin .../test/reference/select-font-face.quartz.ref.png | Bin .../test/reference/select-font-face.rgb24.ref.png | Bin .../test/reference/select-font-face.traps.ref.png | Bin .../reference/self-copy-overlap.base.argb32.ref.png | Bin .../reference/self-copy-overlap.base.rgb24.ref.png | Bin .../reference/self-copy-overlap.mask.argb32.ref.png | Bin .../reference/self-copy-overlap.mask.rgb24.ref.png | Bin .../self-copy-overlap.traps.argb32.ref.png | Bin .../reference/self-copy-overlap.traps.rgb24.ref.png | Bin .../cairo/test/reference/self-copy.argb32.ref.png | Bin .../test/reference/self-copy.base.argb32.ref.png | Bin .../test/reference/self-copy.base.rgb24.ref.png | Bin .../cairo/test/reference/self-copy.ps2.ref.png | Bin .../cairo/test/reference/self-copy.ps3.ref.png | Bin .../cairo/test/reference/self-copy.rgb24.ref.png | Bin .../test/reference/self-copy.traps.argb32.ref.png | Bin .../test/reference/self-copy.traps.rgb24.ref.png | Bin .../reference/self-intersecting.base.argb32.ref.png | Bin .../reference/self-intersecting.base.rgb24.ref.png | Bin .../test/reference/self-intersecting.ps.ref.png | Bin .../reference/self-intersecting.quartz.xfail.png | Bin .../cairo/test/reference/self-intersecting.ref.png | Bin .../self-intersecting.traps.argb32.ref.png | Bin .../reference/self-intersecting.traps.rgb24.ref.png | Bin .../cairo/test/reference/set-source.argb32.ref.png | Bin .../test/reference/set-source.base.argb32.ref.png | Bin .../test/reference/set-source.base.rgb24.ref.png | Bin .../cairo/test/reference/set-source.rgb24.ref.png | Bin .../reference/shape-general-convex.argb32.ref.png | Bin .../shape-general-convex.base.argb32.ref.png | Bin .../shape-general-convex.base.rgb24.ref.png | Bin .../test/reference/shape-general-convex.ps.ref.png | Bin .../reference/shape-general-convex.rgb24.ref.png | Bin .../shape-general-convex.traps.argb32.ref.png | Bin .../shape-general-convex.traps.rgb24.ref.png | Bin .../test/reference/shape-sierpinski.argb32.ref.png | Bin .../reference/shape-sierpinski.base.argb32.ref.png | Bin .../reference/shape-sierpinski.base.rgb24.ref.png | Bin .../reference/shape-sierpinski.pdf.argb32.ref.png | Bin .../reference/shape-sierpinski.pdf.rgb24.ref.png | Bin .../test/reference/shape-sierpinski.ps.ref.png | Bin .../reference/shape-sierpinski.ps3.argb32.ref.png | Bin .../reference/shape-sierpinski.ps3.rgb24.ref.png | Bin .../test/reference/shape-sierpinski.rgb24.ref.png | Bin .../reference/shape-sierpinski.traps.argb32.ref.png | Bin .../reference/shape-sierpinski.traps.rgb24.ref.png | Bin .../reference/show-glyphs-advance.argb32.ref.png | Bin .../show-glyphs-advance.base.argb32.ref.png | Bin .../show-glyphs-advance.base.rgb24.ref.png | Bin .../reference/show-glyphs-advance.image16.ref.png | Bin .../test/reference/show-glyphs-advance.ps.ref.png | Bin .../reference/show-glyphs-advance.quartz.ref.png | Bin .../reference/show-glyphs-advance.rgb24.ref.png | Bin .../test/reference/show-glyphs-advance.svg.ref.png | Bin .../reference/show-glyphs-advance.traps.ref.png | Bin .../reference/show-glyphs-many.base.argb32.ref.png | Bin .../reference/show-glyphs-many.base.rgb24.ref.png | Bin .../cairo/test/reference/show-glyphs-many.ref.png | Bin .../show-text-current-point.argb32.ref.png | Bin .../show-text-current-point.base.argb32.ref.png | Bin .../show-text-current-point.base.rgb24.ref.png | Bin .../show-text-current-point.image16.ref.png | Bin .../reference/show-text-current-point.ps2.ref.png | Bin .../reference/show-text-current-point.ps3.ref.png | Bin .../show-text-current-point.quartz.ref.png | Bin .../reference/show-text-current-point.rgb24.ref.png | Bin .../reference/show-text-current-point.traps.ref.png | Bin .../test/reference/skew-extreme.argb32.ref.png | Bin .../test/reference/skew-extreme.base.argb32.ref.png | Bin .../test/reference/skew-extreme.base.rgb24.ref.png | Bin .../cairo/test/reference/skew-extreme.ps2.ref.png | Bin .../cairo/test/reference/skew-extreme.ps3.ref.png | Bin .../cairo/test/reference/skew-extreme.rgb24.ref.png | Bin .../reference/skew-extreme.traps.argb32.ref.png | Bin .../test/reference/skew-extreme.traps.rgb24.ref.png | Bin .../cairo/test/reference/smask-fill.argb32.ref.png | Bin .../test/reference/smask-fill.base.argb32.ref.png | Bin .../test/reference/smask-fill.base.rgb24.ref.png | Bin .../cairo/test/reference/smask-fill.image16.ref.png | Bin .../cairo/test/reference/smask-fill.pdf.ref.png | Bin .../cairo/test/reference/smask-fill.quartz.ref.png | Bin .../cairo/test/reference/smask-fill.rgb24.ref.png | Bin .../cairo/test/reference/smask-fill.svg.ref.png | Bin .../test/reference/smask-fill.traps.argb32.ref.png | Bin .../test/reference/smask-fill.traps.rgb24.ref.png | Bin .../test/reference/smask-image-mask.argb32.ref.png | Bin .../reference/smask-image-mask.base.argb32.ref.png | Bin .../reference/smask-image-mask.base.rgb24.ref.png | Bin .../test/reference/smask-image-mask.pdf.ref.png | Bin .../test/reference/smask-image-mask.rgb24.ref.png | Bin .../cairo/test/reference/smask-mask.argb32.ref.png | Bin .../test/reference/smask-mask.base.argb32.ref.png | Bin .../test/reference/smask-mask.base.rgb24.ref.png | Bin .../cairo/test/reference/smask-mask.image16.ref.png | Bin .../cairo/test/reference/smask-mask.pdf.ref.png | Bin .../cairo/test/reference/smask-mask.quartz.ref.png | Bin .../cairo/test/reference/smask-mask.rgb24.ref.png | Bin .../cairo/test/reference/smask-mask.svg.ref.png | Bin .../cairo/test/reference/smask-paint.argb32.ref.png | Bin .../test/reference/smask-paint.base.argb32.ref.png | Bin .../test/reference/smask-paint.base.rgb24.ref.png | Bin .../test/reference/smask-paint.image16.ref.png | Bin .../cairo/test/reference/smask-paint.pdf.ref.png | Bin .../cairo/test/reference/smask-paint.quartz.ref.png | Bin .../cairo/test/reference/smask-paint.rgb24.ref.png | Bin .../cairo/test/reference/smask-paint.svg.ref.png | Bin .../test/reference/smask-stroke.argb32.ref.png | Bin .../test/reference/smask-stroke.base.argb32.ref.png | Bin .../test/reference/smask-stroke.base.rgb24.ref.png | Bin .../test/reference/smask-stroke.image16.ref.png | Bin .../cairo/test/reference/smask-stroke.pdf.xfail.png | Bin .../test/reference/smask-stroke.quartz.ref.png | Bin .../cairo/test/reference/smask-stroke.rgb24.ref.png | Bin .../reference/smask-stroke.traps.argb32.ref.png | Bin .../test/reference/smask-stroke.traps.rgb24.ref.png | Bin .../cairo/test/reference/smask-text.argb32.ref.png | Bin .../test/reference/smask-text.base.argb32.ref.png | Bin .../test/reference/smask-text.base.rgb24.ref.png | Bin .../cairo/test/reference/smask-text.image16.ref.png | Bin .../test/reference/smask-text.mask.argb32.ref.png | Bin .../test/reference/smask-text.mask.rgb24.ref.png | Bin .../cairo/test/reference/smask-text.pdf.ref.png | Bin .../cairo/test/reference/smask-text.ps2.ref.png | Bin .../cairo/test/reference/smask-text.ps3.ref.png | Bin .../cairo/test/reference/smask-text.quartz.ref.png | Bin .../cairo/test/reference/smask-text.rgb24.ref.png | Bin .../cairo/test/reference/smask-text.script.ref.png | Bin .../cairo/test/reference/smask-text.svg.ref.png | Bin .../cairo/test/reference/smask-text.traps.ref.png | Bin .../test/reference/smask-text.xlib-fallback.ref.png | Bin .../cairo/test/reference/smask.argb32.ref.png | Bin .../cairo/test/reference/smask.base.argb32.ref.png | Bin .../cairo/test/reference/smask.base.rgb24.ref.png | Bin .../cairo/test/reference/smask.image16.ref.png | Bin .../cairo/test/reference/smask.mask.argb32.ref.png | Bin .../cairo/test/reference/smask.mask.rgb24.ref.png | Bin .../cairo/test/reference/smask.pdf.xfail.png | Bin .../cairo/test/reference/smask.ps.ref.png | Bin .../cairo/test/reference/smask.quartz.ref.png | Bin .../cairo/test/reference/smask.rgb24.ref.png | Bin .../cairo/test/reference/smask.script.ref.png | Bin .../cairo/test/reference/smask.svg.ref.png | Bin .../cairo/test/reference/smask.traps.ref.png | Bin .../test/reference/smask.xlib-fallback.ref.png | Bin .../solid-pattern-cache-stress.base.argb32.ref.png | Bin .../solid-pattern-cache-stress.base.rgb24.ref.png | Bin .../reference/solid-pattern-cache-stress.ref.png | Bin .../reference/source-clip-scale.base.argb32.ref.png | Bin .../reference/source-clip-scale.base.rgb24.ref.png | Bin .../test/reference/source-clip-scale.gl.ref.png | Bin .../test/reference/source-clip-scale.pdf.ref.png | Bin .../reference/source-clip-scale.ps2.argb32.ref.png | Bin .../reference/source-clip-scale.ps2.rgb24.ref.png | Bin .../reference/source-clip-scale.ps3.argb32.ref.png | Bin .../reference/source-clip-scale.ps3.rgb24.ref.png | Bin .../test/reference/source-clip-scale.quartz.ref.png | Bin .../reference/source-clip-scale.recording.ref.png | Bin .../cairo/test/reference/source-clip-scale.ref.png | Bin .../test/reference/source-clip-scale.svg.ref.png | Bin .../test/reference/source-clip.base.argb32.ref.png | Bin .../test/reference/source-clip.base.rgb24.ref.png | Bin .../cairo/test/reference/source-clip.ref.png | Bin .../source-surface-scale-paint.argb32.ref.png | Bin .../source-surface-scale-paint.base.argb32.ref.png | Bin .../source-surface-scale-paint.base.rgb24.ref.png | Bin .../source-surface-scale-paint.rgb24.ref.png | Bin .../reference/spline-decomposition.argb32.ref.png | Bin .../spline-decomposition.base.argb32.ref.png | Bin .../spline-decomposition.base.rgb24.ref.png | Bin .../reference/spline-decomposition.image16.ref.png | Bin .../test/reference/spline-decomposition.pdf.ref.png | Bin .../test/reference/spline-decomposition.ps.ref.png | Bin .../reference/spline-decomposition.quartz.xfail.png | Bin .../reference/spline-decomposition.rgb24.ref.png | Bin .../test/reference/spline-decomposition.svg.ref.png | Bin .../spline-decomposition.traps.argb32.ref.png | Bin .../spline-decomposition.traps.rgb24.ref.png | Bin .../reference/stride-12-image.base.argb32.ref.png | Bin .../reference/stride-12-image.base.rgb24.ref.png | Bin .../test/reference/stride-12-image.image16.ref.png | Bin .../cairo/test/reference/stride-12-image.ps.ref.png | Bin .../cairo/test/reference/stride-12-image.ref.png | Bin .../reference/stride-12-xlib-fallback.rgb24.ref.png | Bin .../reference/stride-12-xlib-window.rgb24.ref.png | Bin .../test/reference/stride-12-xlib.argb32.ref.png | Bin .../test/reference/stride-12-xlib.rgb24.ref.png | Bin .../cairo/test/reference/stroke-clipped.ref.png | Bin .../reference/stroke-ctm-caps.base.argb32.ref.png | Bin .../reference/stroke-ctm-caps.base.rgb24.ref.png | Bin .../test/reference/stroke-ctm-caps.image16.ref.png | Bin .../reference/stroke-ctm-caps.mask.argb32.ref.png | Bin .../reference/stroke-ctm-caps.mask.rgb24.ref.png | Bin .../test/reference/stroke-ctm-caps.ps2.ref.png | Bin .../test/reference/stroke-ctm-caps.ps3.ref.png | Bin .../test/reference/stroke-ctm-caps.quartz.ref.png | Bin .../cairo/test/reference/stroke-ctm-caps.ref.png | Bin .../reference/stroke-ctm-caps.traps.argb32.ref.png | Bin .../reference/stroke-ctm-caps.traps.rgb24.ref.png | Bin .../test/reference/stroke-image.argb32.ref.png | Bin .../test/reference/stroke-image.base.argb32.ref.png | Bin .../test/reference/stroke-image.base.rgb24.ref.png | Bin .../test/reference/stroke-image.image16.ref.png | Bin .../cairo/test/reference/stroke-image.pdf.ref.png | Bin .../cairo/test/reference/stroke-image.ps.ref.png | Bin .../test/reference/stroke-image.quartz.ref.png | Bin .../cairo/test/reference/stroke-image.rgb24.ref.png | Bin .../reference/stroke-image.traps.argb32.ref.png | Bin .../test/reference/stroke-image.traps.rgb24.ref.png | Bin .../reference/stroke-open-box.base.argb32.ref.png | Bin .../reference/stroke-open-box.base.rgb24.ref.png | Bin .../cairo/test/reference/stroke-open-box.ref.png | Bin .../test/reference/stroke-pattern.argb32.ref.png | Bin .../reference/stroke-pattern.base.argb32.ref.png | Bin .../reference/stroke-pattern.base.rgb24.ref.png | Bin .../test/reference/stroke-pattern.rgb24.ref.png | Bin .../test/reference/stroke-pattern.traps.ref.png | Bin .../reference/stroke-xlib-fallback.rgb24.ref.png | Bin .../test/reference/stroke-xlib-window.rgb24.ref.png | Bin .../cairo/test/reference/stroke-xlib.argb32.ref.png | Bin .../cairo/test/reference/stroke-xlib.rgb24.ref.png | Bin .../subsurface-image-repeat.base.argb32.ref.png | Bin .../subsurface-image-repeat.base.rgb24.ref.png | Bin .../subsurface-image-repeat.image16.ref.png | Bin .../test/reference/subsurface-image-repeat.ref.png | Bin .../subsurface-modify-child.base.argb32.ref.png | Bin .../subsurface-modify-child.base.rgb24.ref.png | Bin .../test/reference/subsurface-modify-child.ref.png | Bin .../subsurface-modify-parent.base.argb32.ref.png | Bin .../subsurface-modify-parent.base.rgb24.ref.png | Bin .../test/reference/subsurface-modify-parent.ref.png | Bin .../subsurface-outside-target.argb32.ref.png | Bin .../subsurface-outside-target.base.argb32.ref.png | Bin .../subsurface-outside-target.base.rgb24.ref.png | Bin .../subsurface-outside-target.rgb24.ref.png | Bin .../reference/subsurface-pad.base.argb32.ref.png | Bin .../reference/subsurface-pad.base.rgb24.ref.png | Bin .../test/reference/subsurface-pad.quartz.xfail.png | Bin .../cairo/test/reference/subsurface-pad.ref.png | Bin .../subsurface-reflect.base.argb32.ref.png | Bin .../reference/subsurface-reflect.base.rgb24.ref.png | Bin .../cairo/test/reference/subsurface-reflect.ref.png | Bin .../reference/subsurface-repeat.base.argb32.ref.png | Bin .../reference/subsurface-repeat.base.rgb24.ref.png | Bin .../cairo/test/reference/subsurface-repeat.ref.png | Bin .../test/reference/subsurface-scale.argb32.ref.png | Bin .../reference/subsurface-scale.base.argb32.ref.png | Bin .../reference/subsurface-scale.base.rgb24.ref.png | Bin .../test/reference/subsurface-scale.rgb24.ref.png | Bin .../reference/subsurface-scale.traps.argb32.ref.png | Bin .../reference/subsurface-scale.traps.rgb24.ref.png | Bin .../subsurface-similar-repeat.base.argb32.ref.png | Bin .../subsurface-similar-repeat.base.rgb24.ref.png | Bin .../reference/subsurface-similar-repeat.ref.png | Bin .../cairo/test/reference/subsurface.argb32.ref.png | Bin .../test/reference/subsurface.base.argb32.ref.png | Bin .../test/reference/subsurface.base.rgb24.ref.png | Bin .../cairo/test/reference/subsurface.image16.ref.png | Bin .../cairo/test/reference/subsurface.ps.ref.png | Bin .../cairo/test/reference/subsurface.rgb24.ref.png | Bin .../test/reference/subsurface.traps.argb32.ref.png | Bin .../test/reference/subsurface.traps.rgb24.ref.png | Bin ...rface-pattern-big-scale-down.base.argb32.ref.png | Bin ...urface-pattern-big-scale-down.base.rgb24.ref.png | Bin .../surface-pattern-big-scale-down.ps.ref.png | Bin .../surface-pattern-big-scale-down.quartz.ref.png | Bin .../surface-pattern-big-scale-down.ref.png | Bin .../surface-pattern-operator.argb32.ref.png | Bin .../surface-pattern-operator.base.argb32.ref.png | Bin .../surface-pattern-operator.base.rgb24.ref.png | Bin .../surface-pattern-operator.image16.ref.png | Bin .../surface-pattern-operator.pdf.argb32.xfail.png | Bin .../surface-pattern-operator.pdf.rgb24.xfail.png | Bin .../surface-pattern-operator.quartz.argb32.ref.png | Bin .../surface-pattern-operator.quartz.rgb24.ref.png | Bin .../surface-pattern-operator.rgb24.ref.png | Bin .../surface-pattern-operator.traps.argb32.ref.png | Bin .../surface-pattern-operator.traps.rgb24.ref.png | Bin ...ttern-scale-down-extend-none.base.argb32.ref.png | Bin ...attern-scale-down-extend-none.base.rgb24.ref.png | Bin ...ce-pattern-scale-down-extend-none.quartz.ref.png | Bin .../surface-pattern-scale-down-extend-none.ref.png | Bin ...attern-scale-down-extend-pad.base.argb32.ref.png | Bin ...pattern-scale-down-extend-pad.base.rgb24.ref.png | Bin ...e-pattern-scale-down-extend-pad.quartz.xfail.png | Bin .../surface-pattern-scale-down-extend-pad.ref.png | Bin ...rn-scale-down-extend-reflect.base.argb32.ref.png | Bin ...ern-scale-down-extend-reflect.base.rgb24.ref.png | Bin ...pattern-scale-down-extend-reflect.quartz.ref.png | Bin ...urface-pattern-scale-down-extend-reflect.ref.png | Bin ...ern-scale-down-extend-repeat.base.argb32.ref.png | Bin ...tern-scale-down-extend-repeat.base.rgb24.ref.png | Bin ...-pattern-scale-down-extend-repeat.quartz.ref.png | Bin ...surface-pattern-scale-down-extend-repeat.ref.png | Bin .../surface-pattern-scale-down.argb32.ref.png | Bin .../surface-pattern-scale-down.base.argb32.ref.png | Bin .../surface-pattern-scale-down.base.rgb24.ref.png | Bin .../surface-pattern-scale-down.image16.ref.png | Bin .../surface-pattern-scale-down.pdf.ref.png | Bin .../surface-pattern-scale-down.ps2.ref.png | Bin .../surface-pattern-scale-down.ps3.ref.png | Bin .../surface-pattern-scale-down.quartz.ref.png | Bin .../surface-pattern-scale-down.rgb24.ref.png | Bin .../surface-pattern-scale-up.argb32.ref.png | Bin .../surface-pattern-scale-up.base.argb32.ref.png | Bin .../surface-pattern-scale-up.base.rgb24.ref.png | Bin .../surface-pattern-scale-up.image16.ref.png | Bin .../reference/surface-pattern-scale-up.pdf.ref.png | Bin .../reference/surface-pattern-scale-up.ps2.ref.png | Bin .../reference/surface-pattern-scale-up.ps3.ref.png | Bin .../surface-pattern-scale-up.quartz.xfail.png | Bin .../surface-pattern-scale-up.rgb24.ref.png | Bin .../test/reference/surface-pattern.argb32.ref.png | Bin .../reference/surface-pattern.base.argb32.ref.png | Bin .../reference/surface-pattern.base.rgb24.ref.png | Bin .../test/reference/surface-pattern.image16.ref.png | Bin .../test/reference/surface-pattern.pdf.xfail.png | Bin .../test/reference/surface-pattern.ps.xfail.png | Bin .../test/reference/surface-pattern.quartz.xfail.png | Bin .../test/reference/surface-pattern.rgb24.ref.png | Bin .../test/reference/surface-pattern.svg.xfail.png | Bin .../reference/svg-surface-source.argb32.ref.png | Bin .../svg-surface-source.base.argb32.ref.png | Bin .../reference/svg-surface-source.base.rgb24.ref.png | Bin .../reference/svg-surface-source.image16.ref.png | Bin .../test/reference/svg-surface-source.rgb24.ref.png | Bin .../svg-surface-source.svg12.argb32.xfail.png | Bin .../svg-surface-source.svg12.rgb24.xfail.png | Bin .../reference/text-antialias-gray.argb32.ref.png | Bin .../text-antialias-gray.base.argb32.ref.png | Bin .../text-antialias-gray.base.rgb24.ref.png | Bin .../reference/text-antialias-gray.image16.ref.png | Bin .../reference/text-antialias-gray.quartz.ref.png | Bin .../reference/text-antialias-gray.rgb24.ref.png | Bin .../reference/text-antialias-gray.traps.ref.png | Bin .../text-antialias-none.base.argb32.ref.png | Bin .../text-antialias-none.base.rgb24.ref.png | Bin .../reference/text-antialias-none.quartz.ref.png | Bin .../test/reference/text-antialias-none.ref.png | Bin .../text-antialias-subpixel-bgr.argb32.ref.png | Bin .../text-antialias-subpixel-bgr.base.argb32.ref.png | Bin .../text-antialias-subpixel-bgr.base.rgb24.ref.png | Bin .../text-antialias-subpixel-bgr.image16.ref.png | Bin .../text-antialias-subpixel-bgr.mask.argb32.ref.png | Bin .../text-antialias-subpixel-bgr.mask.rgb24.ref.png | Bin .../text-antialias-subpixel-bgr.rgb24.ref.png | Bin .../text-antialias-subpixel-bgr.traps.ref.png | Bin .../text-antialias-subpixel-rgb.argb32.ref.png | Bin .../text-antialias-subpixel-rgb.base.argb32.ref.png | Bin .../text-antialias-subpixel-rgb.base.rgb24.ref.png | Bin .../text-antialias-subpixel-rgb.image16.ref.png | Bin .../text-antialias-subpixel-rgb.mask.argb32.ref.png | Bin .../text-antialias-subpixel-rgb.mask.rgb24.ref.png | Bin .../text-antialias-subpixel-rgb.rgb24.ref.png | Bin .../text-antialias-subpixel-rgb.traps.ref.png | Bin .../text-antialias-subpixel-vbgr.argb32.ref.png | Bin ...text-antialias-subpixel-vbgr.base.argb32.ref.png | Bin .../text-antialias-subpixel-vbgr.base.rgb24.ref.png | Bin .../text-antialias-subpixel-vbgr.image16.ref.png | Bin ...text-antialias-subpixel-vbgr.mask.argb32.ref.png | Bin .../text-antialias-subpixel-vbgr.mask.rgb24.ref.png | Bin .../text-antialias-subpixel-vbgr.rgb24.ref.png | Bin .../text-antialias-subpixel-vbgr.traps.ref.png | Bin .../text-antialias-subpixel-vrgb.argb32.ref.png | Bin ...text-antialias-subpixel-vrgb.base.argb32.ref.png | Bin .../text-antialias-subpixel-vrgb.base.rgb24.ref.png | Bin .../text-antialias-subpixel-vrgb.image16.ref.png | Bin ...text-antialias-subpixel-vrgb.mask.argb32.ref.png | Bin .../text-antialias-subpixel-vrgb.mask.rgb24.ref.png | Bin .../text-antialias-subpixel-vrgb.rgb24.ref.png | Bin .../text-antialias-subpixel-vrgb.traps.ref.png | Bin .../text-antialias-subpixel.argb32.ref.png | Bin .../text-antialias-subpixel.base.argb32.ref.png | Bin .../text-antialias-subpixel.base.argb32.xfail.png | Bin .../text-antialias-subpixel.base.rgb24.ref.png | Bin .../text-antialias-subpixel.base.rgb24.xfail.png | Bin .../text-antialias-subpixel.image16.ref.png | Bin .../text-antialias-subpixel.mask.argb32.ref.png | Bin .../text-antialias-subpixel.mask.rgb24.ref.png | Bin .../text-antialias-subpixel.quartz.ref.png | Bin .../reference/text-antialias-subpixel.rgb24.ref.png | Bin .../reference/text-antialias-subpixel.traps.ref.png | Bin .../test/reference/text-glyph-range.argb32.ref.png | Bin .../reference/text-glyph-range.base.argb32.ref.png | Bin .../reference/text-glyph-range.base.rgb24.ref.png | Bin .../test/reference/text-glyph-range.image16.ref.png | Bin .../test/reference/text-glyph-range.ps.ref.png | Bin .../test/reference/text-glyph-range.quartz.ref.png | Bin .../test/reference/text-glyph-range.rgb24.ref.png | Bin .../test/reference/text-glyph-range.traps.ref.png | Bin .../test/reference/text-pattern.argb32.ref.png | Bin .../test/reference/text-pattern.base.argb32.ref.png | Bin .../test/reference/text-pattern.base.rgb24.ref.png | Bin .../test/reference/text-pattern.pdf.argb32.ref.png | Bin .../test/reference/text-pattern.pdf.rgb24.ref.png | Bin .../test/reference/text-pattern.ps2.argb32.ref.png | Bin .../test/reference/text-pattern.ps2.rgb24.ref.png | Bin .../test/reference/text-pattern.ps3.argb32.ref.png | Bin .../test/reference/text-pattern.ps3.rgb24.ref.png | Bin .../reference/text-pattern.quartz.argb32.ref.png | Bin .../reference/text-pattern.quartz.rgb24.ref.png | Bin .../cairo/test/reference/text-pattern.rgb24.ref.png | Bin .../test/reference/text-pattern.svg.argb32.ref.png | Bin .../test/reference/text-pattern.svg.rgb24.ref.png | Bin .../reference/text-pattern.traps.argb32.ref.png | Bin .../test/reference/text-pattern.traps.rgb24.ref.png | Bin .../test/reference/text-rotate.base.argb32.ref.png | Bin .../test/reference/text-rotate.base.rgb24.ref.png | Bin .../test/reference/text-rotate.image16.ref.png | Bin .../test/reference/text-rotate.mask.argb32.ref.png | Bin .../test/reference/text-rotate.mask.rgb24.ref.png | Bin .../cairo/test/reference/text-rotate.pdf.ref.png | Bin .../cairo/test/reference/text-rotate.ps.ref.png | Bin .../cairo/test/reference/text-rotate.quartz.ref.png | Bin .../cairo/test/reference/text-rotate.ref.png | Bin .../cairo/test/reference/text-rotate.svg.ref.png | Bin .../cairo/test/reference/text-rotate.traps.ref.png | Bin .../reference/text-rotate.xlib-fallback.ref.png | Bin .../reference/text-transform.base.argb32.ref.png | Bin .../reference/text-transform.base.rgb24.ref.png | Bin .../test/reference/text-transform.image16.ref.png | Bin .../reference/text-transform.pdf.argb32.ref.png | Bin .../test/reference/text-transform.pdf.rgb24.ref.png | Bin .../cairo/test/reference/text-transform.ps2.ref.png | Bin .../cairo/test/reference/text-transform.ps3.ref.png | Bin .../cairo/test/reference/text-transform.ref.png | Bin .../cairo/test/reference/text-transform.svg.ref.png | Bin .../cairo/test/reference/tiger.argb32.ref.png | Bin .../cairo/test/reference/tiger.base.argb32.ref.png | Bin .../cairo/test/reference/tiger.base.rgb24.ref.png | Bin .../cairo/test/reference/tiger.rgb24.ref.png | Bin .../cairo/test/reference/tiger.traps.argb32.ref.png | Bin .../cairo/test/reference/tiger.traps.rgb24.ref.png | Bin .../test/reference/tighten-bounds.argb32.ref.png | Bin .../reference/tighten-bounds.base.argb32.ref.png | Bin .../reference/tighten-bounds.base.rgb24.ref.png | Bin .../test/reference/tighten-bounds.rgb24.ref.png | Bin .../reference/tighten-bounds.traps.argb32.ref.png | Bin .../reference/tighten-bounds.traps.rgb24.ref.png | Bin .../cairo/test/reference/transforms.argb32.ref.png | Bin .../test/reference/transforms.base.argb32.ref.png | Bin .../test/reference/transforms.base.rgb24.ref.png | Bin .../cairo/test/reference/transforms.image16.ref.png | Bin .../cairo/test/reference/transforms.ps2.ref.png | Bin .../cairo/test/reference/transforms.ps3.ref.png | Bin .../cairo/test/reference/transforms.rgb24.ref.png | Bin .../test/reference/transforms.traps.argb32.ref.png | Bin .../test/reference/transforms.traps.rgb24.ref.png | Bin .../translate-show-surface.base.argb32.ref.png | Bin .../translate-show-surface.base.rgb24.ref.png | Bin .../test/reference/translate-show-surface.ref.png | Bin .../cairo/test/reference/trap-clip.argb32.ref.png | Bin .../test/reference/trap-clip.base.argb32.ref.png | Bin .../test/reference/trap-clip.base.rgb24.ref.png | Bin .../cairo/test/reference/trap-clip.image16.ref.png | Bin .../test/reference/trap-clip.mask.argb32.ref.png | Bin .../test/reference/trap-clip.mask.rgb24.ref.png | Bin .../test/reference/trap-clip.ps2.argb32.ref.png | Bin .../test/reference/trap-clip.ps2.rgb24.ref.png | Bin .../test/reference/trap-clip.ps3.argb32.ref.png | Bin .../test/reference/trap-clip.ps3.rgb24.ref.png | Bin .../test/reference/trap-clip.quartz.argb32.ref.png | Bin .../test/reference/trap-clip.quartz.rgb24.ref.png | Bin .../cairo/test/reference/trap-clip.rgb24.ref.png | Bin .../trap-clip.test-paginated.argb32.ref.png | Bin .../test/reference/trap-clip.traps.argb32.ref.png | Bin .../test/reference/trap-clip.traps.rgb24.ref.png | Bin .../twin-antialias-gray.base.argb32.ref.png | Bin .../twin-antialias-gray.base.rgb24.ref.png | Bin .../reference/twin-antialias-gray.image16.ref.png | Bin .../twin-antialias-gray.mask.argb32.ref.png | Bin .../twin-antialias-gray.mask.rgb24.ref.png | Bin .../test/reference/twin-antialias-gray.ref.png | Bin .../twin-antialias-gray.traps.argb32.ref.png | Bin .../twin-antialias-gray.traps.rgb24.ref.png | Bin .../reference/twin-antialias-mixed.argb32.ref.png | Bin .../twin-antialias-mixed.base.argb32.ref.png | Bin .../twin-antialias-mixed.base.rgb24.ref.png | Bin .../reference/twin-antialias-mixed.image16.ref.png | Bin .../reference/twin-antialias-mixed.rgb24.ref.png | Bin .../twin-antialias-mixed.traps.argb32.ref.png | Bin .../twin-antialias-mixed.traps.rgb24.ref.png | Bin .../reference/twin-antialias-none.argb32.ref.png | Bin .../twin-antialias-none.base.argb32.ref.png | Bin .../twin-antialias-none.base.rgb24.ref.png | Bin .../reference/twin-antialias-none.rgb24.ref.png | Bin .../twin-antialias-none.traps.argb32.ref.png | Bin .../twin-antialias-none.traps.rgb24.ref.png | Bin .../twin-antialias-subpixel.base.argb32.ref.png | Bin .../twin-antialias-subpixel.base.rgb24.ref.png | Bin .../twin-antialias-subpixel.image16.ref.png | Bin .../twin-antialias-subpixel.mask.argb32.ref.png | Bin .../twin-antialias-subpixel.mask.rgb24.ref.png | Bin .../test/reference/twin-antialias-subpixel.ref.png | Bin .../twin-antialias-subpixel.traps.argb32.ref.png | Bin .../twin-antialias-subpixel.traps.rgb24.ref.png | Bin .../cairo/test/reference/twin.base.argb32.ref.png | Bin .../cairo/test/reference/twin.base.rgb24.ref.png | Bin .../cairo/test/reference/twin.image16.ref.png | Bin .../cairo/test/reference/twin.mask.argb32.ref.png | Bin .../cairo/test/reference/twin.mask.rgb24.ref.png | Bin .../3rd-party}/cairo/test/reference/twin.ps.ref.png | Bin .../3rd-party}/cairo/test/reference/twin.ref.png | Bin .../cairo/test/reference/twin.svg.ref.png | Bin .../cairo/test/reference/twin.traps.argb32.ref.png | Bin .../cairo/test/reference/twin.traps.rgb24.ref.png | Bin .../reference/unaligned-box.base.argb32.ref.png | Bin .../test/reference/unaligned-box.base.rgb24.ref.png | Bin .../cairo/test/reference/unaligned-box.ref.png | Bin .../reference/unaligned-box.traps.argb32.ref.png | Bin .../reference/unaligned-box.traps.rgb24.ref.png | Bin .../unantialiased-shapes.base.argb32.ref.png | Bin .../unantialiased-shapes.base.rgb24.ref.png | Bin .../reference/unantialiased-shapes.quartz.ref.png | Bin .../test/reference/unantialiased-shapes.ref.png | Bin .../unantialiased-shapes.traps.argb32.ref.png | Bin .../unantialiased-shapes.traps.rgb24.ref.png | Bin .../reference/unbounded-operator.argb32.ref.png | Bin .../unbounded-operator.base.argb32.ref.png | Bin .../reference/unbounded-operator.base.rgb24.ref.png | Bin .../unbounded-operator.gl.argb32.xfail.png | Bin .../reference/unbounded-operator.gl.rgb24.xfail.png | Bin .../reference/unbounded-operator.image16.ref.png | Bin .../unbounded-operator.mask.argb32.ref.png | Bin .../reference/unbounded-operator.mask.rgb24.ref.png | Bin .../reference/unbounded-operator.pdf.argb32.ref.png | Bin .../reference/unbounded-operator.ps2.argb32.ref.png | Bin .../reference/unbounded-operator.ps3.argb32.ref.png | Bin .../unbounded-operator.quartz.argb32.ref.png | Bin .../unbounded-operator.quartz.rgb24.ref.png | Bin .../test/reference/unbounded-operator.rgb24.ref.png | Bin .../unbounded-operator.svg12.argb32.ref.png | Bin .../unbounded-operator.svg12.rgb24.xfail.png | Bin .../unbounded-operator.traps.argb32.ref.png | Bin .../unbounded-operator.traps.rgb24.ref.png | Bin .../test/reference/unclosed-strokes.argb32.ref.png | Bin .../reference/unclosed-strokes.base.argb32.ref.png | Bin .../reference/unclosed-strokes.base.rgb24.ref.png | Bin .../test/reference/unclosed-strokes.rgb24.ref.png | Bin .../reference/unclosed-strokes.traps.argb32.ref.png | Bin .../reference/unclosed-strokes.traps.rgb24.ref.png | Bin .../reference/user-font-mask.base.argb32.ref.png | Bin .../reference/user-font-mask.base.rgb24.ref.png | Bin .../test/reference/user-font-mask.image16.ref.png | Bin .../cairo/test/reference/user-font-mask.pdf.ref.png | Bin .../cairo/test/reference/user-font-mask.ps2.ref.png | Bin .../cairo/test/reference/user-font-mask.ps3.ref.png | Bin .../cairo/test/reference/user-font-mask.ref.png | Bin .../cairo/test/reference/user-font-mask.svg.ref.png | Bin .../test/reference/user-font-proxy.argb32.ref.png | Bin .../reference/user-font-proxy.base.argb32.ref.png | Bin .../reference/user-font-proxy.base.rgb24.ref.png | Bin .../test/reference/user-font-proxy.image16.ref.png | Bin .../reference/user-font-proxy.pdf.argb32.ref.png | Bin .../test/reference/user-font-proxy.pdf.ref.png | Bin .../reference/user-font-proxy.pdf.rgb24.ref.png | Bin .../cairo/test/reference/user-font-proxy.ps.ref.png | Bin .../test/reference/user-font-proxy.quartz.ref.png | Bin .../test/reference/user-font-proxy.rgb24.ref.png | Bin .../test/reference/user-font-proxy.svg.ref.png | Bin .../test/reference/user-font-proxy.traps.ref.png | Bin .../test/reference/user-font-rescale.argb32.ref.png | Bin .../reference/user-font-rescale.base.argb32.ref.png | Bin .../reference/user-font-rescale.base.rgb24.ref.png | Bin .../reference/user-font-rescale.image16.ref.png | Bin .../test/reference/user-font-rescale.ps.ref.png | Bin .../test/reference/user-font-rescale.quartz.ref.png | Bin .../test/reference/user-font-rescale.rgb24.ref.png | Bin .../test/reference/user-font-rescale.svg.ref.png | Bin .../test/reference/user-font-rescale.traps.ref.png | Bin .../test/reference/user-font.base.argb32.ref.png | Bin .../test/reference/user-font.base.rgb24.ref.png | Bin .../cairo/test/reference/user-font.image16.ref.png | Bin .../test/reference/user-font.mask.argb32.ref.png | Bin .../test/reference/user-font.mask.rgb24.ref.png | Bin .../cairo/test/reference/user-font.pdf.ref.png | Bin .../cairo/test/reference/user-font.ps.ref.png | Bin .../cairo/test/reference/user-font.quartz.ref.png | Bin .../cairo/test/reference/user-font.ref.png | Bin .../cairo/test/reference/user-font.svg.ref.png | Bin .../test/reference/user-font.traps.argb32.ref.png | Bin .../test/reference/user-font.traps.rgb24.ref.png | Bin .../reference/white-in-noop.base.argb32.ref.png | Bin .../test/reference/white-in-noop.base.rgb24.ref.png | Bin .../cairo/test/reference/white-in-noop.ref.png | Bin .../test/reference/world-map-fill.argb32.ref.png | Bin .../reference/world-map-fill.base.argb32.ref.png | Bin .../reference/world-map-fill.base.rgb24.ref.png | Bin .../test/reference/world-map-fill.image16.ref.png | Bin .../test/reference/world-map-fill.rgb24.ref.png | Bin .../reference/world-map-fill.traps.argb32.ref.png | Bin .../reference/world-map-fill.traps.rgb24.ref.png | Bin .../test/reference/world-map-stroke.argb32.ref.png | Bin .../reference/world-map-stroke.base.argb32.ref.png | Bin .../reference/world-map-stroke.base.rgb24.ref.png | Bin .../test/reference/world-map-stroke.image16.ref.png | Bin .../reference/world-map-stroke.mask.argb32.ref.png | Bin .../reference/world-map-stroke.mask.rgb24.ref.png | Bin .../test/reference/world-map-stroke.rgb24.ref.png | Bin .../reference/world-map-stroke.traps.argb32.ref.png | Bin .../reference/world-map-stroke.traps.rgb24.ref.png | Bin .../cairo/test/reference/world-map.argb32.ref.png | Bin .../test/reference/world-map.base.argb32.ref.png | Bin .../test/reference/world-map.base.rgb24.ref.png | Bin .../cairo/test/reference/world-map.image16.ref.png | Bin .../test/reference/world-map.mask.argb32.ref.png | Bin .../test/reference/world-map.mask.rgb24.ref.png | Bin .../cairo/test/reference/world-map.rgb24.ref.png | Bin .../test/reference/world-map.traps.argb32.ref.png | Bin .../test/reference/world-map.traps.rgb24.ref.png | Bin .../xcb-huge-image-shm.base.argb32.ref.png | Bin .../reference/xcb-huge-image-shm.base.rgb24.ref.png | Bin .../cairo/test/reference/xcb-huge-image-shm.ref.png | Bin .../cairo/test/reference/xcb-huge-subimage.ref.png | Bin .../xcb-snapshot-assert.base.argb32.ref.png | Bin .../xcb-snapshot-assert.base.rgb24.ref.png | Bin .../test/reference/xcb-snapshot-assert.ref.png | Bin .../reference/xcb-stress-cache.base.argb32.ref.png | Bin .../reference/xcb-stress-cache.base.rgb24.ref.png | Bin .../cairo/test/reference/xcb-stress-cache.ref.png | Bin .../reference/xcb-surface-source.argb32.ref.png | Bin .../xcb-surface-source.base.argb32.ref.png | Bin .../reference/xcb-surface-source.base.rgb24.ref.png | Bin .../reference/xcb-surface-source.image16.ref.png | Bin .../reference/xcb-surface-source.ps.argb32.ref.png | Bin .../reference/xcb-surface-source.ps.rgb24.ref.png | Bin .../test/reference/xcb-surface-source.rgb24.ref.png | Bin .../xcomposite-projection.base.argb32.ref.png | Bin .../xcomposite-projection.base.rgb24.ref.png | Bin .../reference/xcomposite-projection.image16.ref.png | Bin .../xcomposite-projection.mask.argb32.ref.png | Bin .../xcomposite-projection.mask.rgb24.ref.png | Bin .../reference/xcomposite-projection.quartz.ref.png | Bin .../test/reference/xcomposite-projection.ref.png | Bin .../xcomposite-projection.traps.argb32.ref.png | Bin .../xcomposite-projection.traps.rgb24.ref.png | Bin .../reference/xlib-expose-event.base.argb32.ref.png | Bin .../reference/xlib-expose-event.base.rgb24.ref.png | Bin .../reference/xlib-expose-event.image16.ref.png | Bin .../test/reference/xlib-expose-event.ps.ref.png | Bin .../cairo/test/reference/xlib-expose-event.ref.png | Bin .../reference/xlib-surface-source.argb32.ref.png | Bin .../xlib-surface-source.base.argb32.ref.png | Bin .../xlib-surface-source.base.rgb24.ref.png | Bin .../reference/xlib-surface-source.image16.ref.png | Bin .../reference/xlib-surface-source.ps.argb32.ref.png | Bin .../reference/xlib-surface-source.ps.rgb24.ref.png | Bin .../reference/xlib-surface-source.rgb24.ref.png | Bin .../xlib-surface-source.svg12.argb32.xfail.png | Bin .../xlib-surface-source.svg12.rgb24.xfail.png | Bin .../test/reference/zero-alpha.base.argb32.ref.png | Bin .../test/reference/zero-alpha.base.rgb24.ref.png | Bin .../cairo/test/reference/zero-alpha.ref.png | Bin .../cairo/test/reference/zero-mask.argb32.ref.png | Bin .../test/reference/zero-mask.base.argb32.ref.png | Bin .../test/reference/zero-mask.base.rgb24.ref.png | Bin .../cairo/test/reference/zero-mask.rgb24.ref.png | Bin .../src/3rd-party}/cairo/test/reflected-stroke.c | 0 .../src/3rd-party}/cairo/test/rel-path.c | 0 .../src/3rd-party}/cairo/test/rgb24-ignore-alpha.c | 0 .../src/3rd-party}/cairo/test/romedalen.jpg | Bin .../src/3rd-party}/cairo/test/romedalen.png | Bin .../cairo/test/rotate-image-surface-paint.c | 0 .../src/3rd-party}/cairo/test/rotated-clip.c | 0 .../3rd-party}/cairo/test/rounded-rectangle-fill.c | 0 .../cairo/test/rounded-rectangle-stroke.c | 0 .../3rd-party}/cairo/test/run-cairo-test-suite.sh | 0 .../src/3rd-party}/cairo/test/sample.c | 0 .../cairo/test/scale-down-source-surface-paint.c | 0 .../src/3rd-party}/cairo/test/scale-offset-image.c | 0 .../3rd-party}/cairo/test/scale-offset-similar.c | 0 .../cairo/test/scale-source-surface-paint.c | 0 .../3rd-party}/cairo/test/scaled-font-zero-matrix.c | 0 .../src/3rd-party}/cairo/test/scarab.jpg | Bin .../src/3rd-party}/cairo/test/select-font-face.c | 0 .../cairo/test/select-font-no-show-text.c | 0 .../src/3rd-party}/cairo/test/self-copy-overlap.c | 0 .../src/3rd-party}/cairo/test/self-copy.c | 0 .../src/3rd-party}/cairo/test/self-intersecting.c | 0 .../src/3rd-party}/cairo/test/set-source.c | 0 .../3rd-party}/cairo/test/shape-general-convex.c | 0 .../src/3rd-party}/cairo/test/shape-sierpinski.c | 0 .../src/3rd-party}/cairo/test/show-glyphs-advance.c | 0 .../src/3rd-party}/cairo/test/show-glyphs-many.c | 0 .../3rd-party}/cairo/test/show-text-current-point.c | 0 .../src/3rd-party}/cairo/test/skew-extreme.c | 0 .../src/3rd-party}/cairo/test/smask-fill.c | 0 .../src/3rd-party}/cairo/test/smask-image-mask.c | 0 .../src/3rd-party}/cairo/test/smask-mask.c | 0 .../src/3rd-party}/cairo/test/smask-paint.c | 0 .../src/3rd-party}/cairo/test/smask-stroke.c | 0 .../src/3rd-party}/cairo/test/smask-text.c | 0 .../src/3rd-party}/cairo/test/smask.c | 0 .../cairo/test/solid-pattern-cache-stress.c | 0 .../src/3rd-party}/cairo/test/source-clip-scale.c | 0 .../src/3rd-party}/cairo/test/source-clip.c | 0 .../cairo/test/source-surface-scale-paint.c | 0 .../3rd-party}/cairo/test/spline-decomposition.c | 0 .../src/3rd-party}/cairo/test/stride-12-image.c | 0 .../src/3rd-party}/cairo/test/stroke-clipped.c | 0 .../src/3rd-party}/cairo/test/stroke-ctm-caps.c | 0 .../src/3rd-party}/cairo/test/stroke-image.c | 0 .../src/3rd-party}/cairo/test/stroke-open-box.c | 0 .../src/3rd-party}/cairo/test/stroke-pattern.c | 0 .../3rd-party}/cairo/test/subsurface-image-repeat.c | 0 .../3rd-party}/cairo/test/subsurface-modify-child.c | 0 .../cairo/test/subsurface-modify-parent.c | 0 .../cairo/test/subsurface-outside-target.c | 0 .../src/3rd-party}/cairo/test/subsurface-pad.c | 0 .../src/3rd-party}/cairo/test/subsurface-reflect.c | 0 .../src/3rd-party}/cairo/test/subsurface-repeat.c | 0 .../src/3rd-party}/cairo/test/subsurface-scale.c | 0 .../cairo/test/subsurface-similar-repeat.c | 0 .../src/3rd-party}/cairo/test/subsurface.c | 0 .../3rd-party}/cairo/test/surface-finish-twice.c | 0 .../cairo/test/surface-pattern-big-scale-down.c | 0 .../cairo/test/surface-pattern-operator.c | 0 .../cairo/test/surface-pattern-scale-down-extend.c | 0 .../cairo/test/surface-pattern-scale-down.c | 0 .../cairo/test/surface-pattern-scale-up.c | 0 .../src/3rd-party}/cairo/test/surface-pattern.c | 0 .../src/3rd-party}/cairo/test/surface-source.c | 0 .../src/3rd-party}/cairo/test/svg-clip.c | 0 .../src/3rd-party}/cairo/test/svg-surface-source.c | 0 .../src/3rd-party}/cairo/test/svg-surface.c | 0 .../src/3rd-party}/cairo/test/svg2png.c | 0 .../src/3rd-party}/cairo/test/testsvg | 0 .../src/3rd-party}/cairo/test/testtable.js | 0 .../3rd-party}/cairo/test/text-antialias-subpixel.c | 0 .../src/3rd-party}/cairo/test/text-antialias.c | 0 .../src/3rd-party}/cairo/test/text-cache-crash.c | 0 .../src/3rd-party}/cairo/test/text-glyph-range.c | 0 .../src/3rd-party}/cairo/test/text-pattern.c | 0 .../src/3rd-party}/cairo/test/text-rotate.c | 0 .../src/3rd-party}/cairo/test/text-transform.c | 0 .../src/3rd-party}/cairo/test/text-zero-len.c | 0 .../src/3rd-party}/cairo/test/tiger.c | 0 .../src/3rd-party}/cairo/test/tiger.inc | 0 .../src/3rd-party}/cairo/test/tighten-bounds.c | 0 .../src/3rd-party}/cairo/test/toy-font-face.c | 0 .../src/3rd-party}/cairo/test/transforms.c | 0 .../3rd-party}/cairo/test/translate-show-surface.c | 0 .../src/3rd-party}/cairo/test/trap-clip.c | 0 .../src/3rd-party}/cairo/test/twin-antialias-gray.c | 0 .../3rd-party}/cairo/test/twin-antialias-mixed.c | 0 .../src/3rd-party}/cairo/test/twin-antialias-none.c | 0 .../3rd-party}/cairo/test/twin-antialias-subpixel.c | 0 {3rd-party => io2d/src/3rd-party}/cairo/test/twin.c | 0 .../src/3rd-party}/cairo/test/unaligned-box.c | 0 .../3rd-party}/cairo/test/unantialiased-shapes.c | 0 .../src/3rd-party}/cairo/test/unbounded-operator.c | 0 .../src/3rd-party}/cairo/test/unclosed-strokes.c | 0 .../src/3rd-party}/cairo/test/user-data.c | 0 .../src/3rd-party}/cairo/test/user-font-mask.c | 0 .../src/3rd-party}/cairo/test/user-font-proxy.c | 0 .../src/3rd-party}/cairo/test/user-font-rescale.c | 0 .../src/3rd-party}/cairo/test/user-font.c | 0 .../src/3rd-party}/cairo/test/white-in-noop.c | 0 .../src/3rd-party}/cairo/test/world-map.c | 0 .../src/3rd-party}/cairo/test/world-map.h | 0 .../src/3rd-party}/cairo/test/xcb-huge-image-shm.c | 0 .../src/3rd-party}/cairo/test/xcb-huge-subimage.c | 0 .../src/3rd-party}/cairo/test/xcb-snapshot-assert.c | 0 .../src/3rd-party}/cairo/test/xcb-stress-cache.c | 0 .../src/3rd-party}/cairo/test/xcb-surface-source.c | 0 .../3rd-party}/cairo/test/xcomposite-projection.c | 0 .../src/3rd-party}/cairo/test/xlib-expose-event.c | 0 .../src/3rd-party}/cairo/test/xlib-surface-source.c | 0 .../src/3rd-party}/cairo/test/xlib-surface.c | 0 .../src/3rd-party}/cairo/test/zero-alpha.c | 0 .../src/3rd-party}/cairo/test/zero-mask.c | 0 .../src/3rd-party}/cairo/util/.gitignore | 0 .../src/3rd-party}/cairo/util/COPYING | 0 .../src/3rd-party}/cairo/util/Makefile.am | 0 {3rd-party => io2d/src/3rd-party}/cairo/util/README | 0 .../src/3rd-party}/cairo/util/backtrace-symbols.c | 0 .../src/3rd-party}/cairo/util/cairo-api-update | 0 .../src/3rd-party}/cairo/util/cairo-fdr/Makefile.am | 0 .../src/3rd-party}/cairo/util/cairo-fdr/fdr.c | 0 .../3rd-party}/cairo/util/cairo-gobject/Makefile.am | 0 .../cairo/util/cairo-gobject/cairo-gobject-enums.c | 0 .../util/cairo-gobject/cairo-gobject-structs.c | 0 .../cairo/util/cairo-gobject/cairo-gobject.h | 0 .../3rd-party}/cairo/util/cairo-missing/Makefile.am | 0 .../cairo/util/cairo-missing/Makefile.sources | 0 .../cairo/util/cairo-missing/Makefile.win32 | 0 .../cairo/util/cairo-missing/cairo-missing.h | 0 .../3rd-party}/cairo/util/cairo-missing/getline.c | 0 .../3rd-party}/cairo/util/cairo-missing/strndup.c | 0 .../3rd-party}/cairo/util/cairo-script/.gitignore | 0 .../src/3rd-party}/cairo/util/cairo-script/COPYING | 0 .../3rd-party}/cairo/util/cairo-script/Makefile.am | 0 .../cairo/util/cairo-script/Makefile.sources | 0 .../cairo/util/cairo-script/Makefile.win32 | 0 .../cairo/util/cairo-script/cairo-script-file.c | 0 .../cairo/util/cairo-script/cairo-script-hash.c | 0 .../util/cairo-script/cairo-script-interpreter.c | 0 .../util/cairo-script/cairo-script-interpreter.h | 0 .../cairo/util/cairo-script/cairo-script-objects.c | 0 .../util/cairo-script/cairo-script-operators.c | 0 .../cairo/util/cairo-script/cairo-script-private.h | 0 .../cairo/util/cairo-script/cairo-script-scanner.c | 0 .../cairo/util/cairo-script/cairo-script-stack.c | 0 .../3rd-party}/cairo/util/cairo-script/csi-bind.c | 0 .../3rd-party}/cairo/util/cairo-script/csi-exec.c | 0 .../3rd-party}/cairo/util/cairo-script/csi-replay.c | 0 .../3rd-party}/cairo/util/cairo-script/csi-trace.c | 0 .../cairo/util/cairo-script/examples/Makefile.am | 0 .../cairo/util/cairo-script/examples/dragon.cs | 0 .../cairo/util/cairo-script/examples/hilbert.cs | 0 .../cairo/util/cairo-script/examples/infinichess.cs | 0 .../util/cairo-script/examples/interference.cs | 0 .../util/cairo-script/examples/pythagoras-tree.cs | 0 .../cairo/util/cairo-script/examples/sierpinski.cs | 0 .../examples/wedgeAnnulus_crop_ybRings.cs | 0 .../cairo/util/cairo-script/examples/world-map.cs | 0 .../cairo/util/cairo-script/examples/zrusin.cs | 0 .../3rd-party}/cairo/util/cairo-sphinx/.gitignore | 0 .../3rd-party}/cairo/util/cairo-sphinx/Makefile.am | 0 .../src/3rd-party}/cairo/util/cairo-sphinx/fdr.c | 0 .../src/3rd-party}/cairo/util/cairo-sphinx/sphinx.c | 0 .../3rd-party}/cairo/util/cairo-trace/.gitignore | 0 .../src/3rd-party}/cairo/util/cairo-trace/COPYING | 0 .../3rd-party}/cairo/util/cairo-trace/COPYING-GPL-3 | 0 .../3rd-party}/cairo/util/cairo-trace/Makefile.am | 0 .../cairo/util/cairo-trace/cairo-trace.in | 0 .../cairo/util/cairo-trace/lookup-symbol.c | 0 .../cairo/util/cairo-trace/lookup-symbol.h | 0 .../src/3rd-party}/cairo/util/cairo-trace/trace.c | 0 .../src/3rd-party}/cairo/util/cairo-view | 0 .../src/3rd-party}/cairo/util/cairo.modules | 0 .../src/3rd-party}/cairo/util/font-view.c | 0 .../src/3rd-party}/cairo/util/malloc-stats.c | 0 .../src/3rd-party}/cairo/util/show-contour.c | 0 .../src/3rd-party}/cairo/util/show-edges.c | 0 .../src/3rd-party}/cairo/util/show-events.c | 0 .../src/3rd-party}/cairo/util/show-polygon.c | 0 .../src/3rd-party}/cairo/util/show-traps.c | 0 .../src/3rd-party}/cairo/util/trace-to-xml.c | 0 .../src/3rd-party}/cairo/util/waterfall | 0 .../src/3rd-party}/cairo/util/xml-to-trace.c | 0 .../src/3rd-party}/cairo/util/xr2cairo | 0 {3rd-party => io2d/src/3rd-party}/libpng/ANNOUNCE | 0 {3rd-party => io2d/src/3rd-party}/libpng/CHANGES | 0 .../src/3rd-party}/libpng/CMakeLists.txt | 0 {3rd-party => io2d/src/3rd-party}/libpng/INSTALL | 0 {3rd-party => io2d/src/3rd-party}/libpng/LICENSE | 0 .../src/3rd-party}/libpng/Makefile.am | 0 {3rd-party => io2d/src/3rd-party}/libpng/README | 0 {3rd-party => io2d/src/3rd-party}/libpng/TODO | 0 .../src/3rd-party}/libpng/arm/arm_init.c | 0 .../src/3rd-party}/libpng/arm/filter_neon.S | 0 .../3rd-party}/libpng/arm/filter_neon_intrinsics.c | 0 {3rd-party => io2d/src/3rd-party}/libpng/autogen.sh | 0 .../src/3rd-party}/libpng/configure.ac | 0 .../src/3rd-party}/libpng/contrib/README.txt | 0 .../src/3rd-party}/libpng/contrib/conftest/README | 0 .../src/3rd-party}/libpng/contrib/conftest/read.dfa | 0 .../3rd-party}/libpng/contrib/conftest/s_read.dfa | 0 .../3rd-party}/libpng/contrib/conftest/s_write.dfa | 0 .../3rd-party}/libpng/contrib/conftest/simple.dfa | 0 .../3rd-party}/libpng/contrib/conftest/write.dfa | 0 .../3rd-party}/libpng/contrib/examples/README.txt | 0 .../3rd-party}/libpng/contrib/examples/iccfrompng.c | 0 .../3rd-party}/libpng/contrib/examples/pngpixel.c | 0 .../3rd-party}/libpng/contrib/examples/pngtopng.c | 0 .../src/3rd-party}/libpng/contrib/gregbook/COPYING | 0 .../src/3rd-party}/libpng/contrib/gregbook/LICENSE | 0 .../libpng/contrib/gregbook/Makefile.mingw32 | 0 .../3rd-party}/libpng/contrib/gregbook/Makefile.sgi | 0 .../3rd-party}/libpng/contrib/gregbook/Makefile.unx | 0 .../3rd-party}/libpng/contrib/gregbook/Makefile.w32 | 0 .../src/3rd-party}/libpng/contrib/gregbook/README | 0 .../3rd-party}/libpng/contrib/gregbook/makevms.com | 0 .../3rd-party}/libpng/contrib/gregbook/readpng.c | 0 .../3rd-party}/libpng/contrib/gregbook/readpng.h | 0 .../3rd-party}/libpng/contrib/gregbook/readpng2.c | 0 .../3rd-party}/libpng/contrib/gregbook/readpng2.h | 0 .../3rd-party}/libpng/contrib/gregbook/readppm.c | 0 .../3rd-party}/libpng/contrib/gregbook/rpng-win.c | 0 .../src/3rd-party}/libpng/contrib/gregbook/rpng-x.c | 0 .../3rd-party}/libpng/contrib/gregbook/rpng2-win.c | 0 .../3rd-party}/libpng/contrib/gregbook/rpng2-x.c | 0 .../3rd-party}/libpng/contrib/gregbook/toucan.png | Bin .../src/3rd-party}/libpng/contrib/gregbook/wpng.c | 0 .../3rd-party}/libpng/contrib/gregbook/writepng.c | 0 .../3rd-party}/libpng/contrib/gregbook/writepng.h | 0 .../3rd-party}/libpng/contrib/libtests/fakepng.c | 0 .../3rd-party}/libpng/contrib/libtests/gentests.sh | 0 .../3rd-party}/libpng/contrib/libtests/makepng.c | 0 .../3rd-party}/libpng/contrib/libtests/pngstest.c | 0 .../3rd-party}/libpng/contrib/libtests/pngunknown.c | 0 .../3rd-party}/libpng/contrib/libtests/pngvalid.c | 0 .../3rd-party}/libpng/contrib/libtests/readpng.c | 0 .../src/3rd-party}/libpng/contrib/libtests/tarith.c | 0 .../3rd-party}/libpng/contrib/libtests/timepng.c | 0 .../src/3rd-party}/libpng/contrib/pngminim/README | 0 .../libpng/contrib/pngminim/decoder/README | 0 .../libpng/contrib/pngminim/decoder/makefile | 0 .../libpng/contrib/pngminim/decoder/pngusr.dfa | 0 .../libpng/contrib/pngminim/decoder/pngusr.h | 0 .../libpng/contrib/pngminim/encoder/README | 0 .../libpng/contrib/pngminim/encoder/makefile | 0 .../libpng/contrib/pngminim/encoder/pngusr.dfa | 0 .../libpng/contrib/pngminim/encoder/pngusr.h | 0 .../libpng/contrib/pngminim/preader/README | 0 .../libpng/contrib/pngminim/preader/makefile | 0 .../libpng/contrib/pngminim/preader/pngusr.dfa | 0 .../libpng/contrib/pngminim/preader/pngusr.h | 0 .../src/3rd-party}/libpng/contrib/pngminus/README | 0 .../3rd-party}/libpng/contrib/pngminus/makefile.std | 0 .../3rd-party}/libpng/contrib/pngminus/makefile.tc3 | 0 .../3rd-party}/libpng/contrib/pngminus/makevms.com | 0 .../3rd-party}/libpng/contrib/pngminus/png2pnm.bat | 0 .../3rd-party}/libpng/contrib/pngminus/png2pnm.c | 0 .../3rd-party}/libpng/contrib/pngminus/png2pnm.sh | 0 .../3rd-party}/libpng/contrib/pngminus/pngminus.bat | 0 .../3rd-party}/libpng/contrib/pngminus/pngminus.sh | 0 .../3rd-party}/libpng/contrib/pngminus/pnm2png.bat | 0 .../3rd-party}/libpng/contrib/pngminus/pnm2png.c | 0 .../3rd-party}/libpng/contrib/pngminus/pnm2png.sh | 0 .../src/3rd-party}/libpng/contrib/pngsuite/README | 0 .../3rd-party}/libpng/contrib/pngsuite/basn0g01.png | Bin .../3rd-party}/libpng/contrib/pngsuite/basn0g02.png | Bin .../3rd-party}/libpng/contrib/pngsuite/basn0g04.png | Bin .../3rd-party}/libpng/contrib/pngsuite/basn0g08.png | Bin .../3rd-party}/libpng/contrib/pngsuite/basn0g16.png | Bin .../3rd-party}/libpng/contrib/pngsuite/basn2c08.png | Bin .../3rd-party}/libpng/contrib/pngsuite/basn2c16.png | Bin .../3rd-party}/libpng/contrib/pngsuite/basn3p01.png | Bin .../3rd-party}/libpng/contrib/pngsuite/basn3p02.png | Bin .../3rd-party}/libpng/contrib/pngsuite/basn3p04.png | Bin .../3rd-party}/libpng/contrib/pngsuite/basn3p08.png | Bin .../3rd-party}/libpng/contrib/pngsuite/basn4a08.png | Bin .../3rd-party}/libpng/contrib/pngsuite/basn4a16.png | Bin .../3rd-party}/libpng/contrib/pngsuite/basn6a08.png | Bin .../3rd-party}/libpng/contrib/pngsuite/basn6a16.png | Bin .../libpng/contrib/pngsuite/ftbbn0g01.png | Bin .../libpng/contrib/pngsuite/ftbbn0g02.png | Bin .../libpng/contrib/pngsuite/ftbbn0g04.png | Bin .../libpng/contrib/pngsuite/ftbbn2c16.png | Bin .../libpng/contrib/pngsuite/ftbbn3p08.png | Bin .../libpng/contrib/pngsuite/ftbgn2c16.png | Bin .../libpng/contrib/pngsuite/ftbgn3p08.png | Bin .../libpng/contrib/pngsuite/ftbrn2c08.png | Bin .../libpng/contrib/pngsuite/ftbwn0g16.png | Bin .../libpng/contrib/pngsuite/ftbwn3p08.png | Bin .../libpng/contrib/pngsuite/ftbyn3p08.png | Bin .../libpng/contrib/pngsuite/ftp0n0g08.png | Bin .../libpng/contrib/pngsuite/ftp0n2c08.png | Bin .../libpng/contrib/pngsuite/ftp0n3p08.png | Bin .../libpng/contrib/pngsuite/ftp1n3p08.png | Bin .../src/3rd-party}/libpng/contrib/tools/README.txt | 0 .../3rd-party}/libpng/contrib/tools/checksum-icc.c | 0 .../src/3rd-party}/libpng/contrib/tools/chkfmt | 0 .../src/3rd-party}/libpng/contrib/tools/cvtcolor.c | 0 .../src/3rd-party}/libpng/contrib/tools/intgamma.sh | 0 .../src/3rd-party}/libpng/contrib/tools/makesRGB.c | 0 .../3rd-party}/libpng/contrib/tools/png-fix-itxt.c | 0 .../src/3rd-party}/libpng/contrib/tools/pngfix.c | 0 .../src/3rd-party}/libpng/contrib/tools/sRGB.h | 0 .../src/3rd-party}/libpng/contrib/visupng/PngFile.c | 0 .../src/3rd-party}/libpng/contrib/visupng/PngFile.h | 0 .../3rd-party}/libpng/contrib/visupng/README.txt | 0 .../3rd-party}/libpng/contrib/visupng/VisualPng.c | 0 .../3rd-party}/libpng/contrib/visupng/VisualPng.dsp | 0 .../3rd-party}/libpng/contrib/visupng/VisualPng.dsw | 0 .../3rd-party}/libpng/contrib/visupng/VisualPng.ico | Bin .../3rd-party}/libpng/contrib/visupng/VisualPng.png | Bin .../3rd-party}/libpng/contrib/visupng/VisualPng.rc | 0 .../src/3rd-party}/libpng/contrib/visupng/cexcept.h | 0 .../3rd-party}/libpng/contrib/visupng/resource.h | 0 {3rd-party => io2d/src/3rd-party}/libpng/example.c | 0 .../src/3rd-party}/libpng/libpng-config.in | 0 .../src/3rd-party}/libpng/libpng-manual.txt | 0 {3rd-party => io2d/src/3rd-party}/libpng/libpng.3 | 0 .../src/3rd-party}/libpng/libpng.pc.in | 0 {3rd-party => io2d/src/3rd-party}/libpng/libpngpf.3 | 0 {3rd-party => io2d/src/3rd-party}/libpng/png.5 | 0 {3rd-party => io2d/src/3rd-party}/libpng/png.c | 0 {3rd-party => io2d/src/3rd-party}/libpng/png.h | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngbar.jpg | Bin {3rd-party => io2d/src/3rd-party}/libpng/pngbar.png | Bin {3rd-party => io2d/src/3rd-party}/libpng/pngconf.h | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngdebug.h | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngerror.c | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngget.c | 0 {3rd-party => io2d/src/3rd-party}/libpng/pnginfo.h | 0 .../src/3rd-party}/libpng/pnglibconf.h | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngmem.c | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngnow.png | Bin {3rd-party => io2d/src/3rd-party}/libpng/pngpread.c | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngpriv.h | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngread.c | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngrio.c | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngrtran.c | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngrutil.c | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngset.c | 0 .../src/3rd-party}/libpng/pngstruct.h | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngtest.c | 0 .../src/3rd-party}/libpng/pngtest.png | Bin {3rd-party => io2d/src/3rd-party}/libpng/pngtrans.c | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngusr.dfa | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngwio.c | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngwrite.c | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngwtran.c | 0 {3rd-party => io2d/src/3rd-party}/libpng/pngwutil.c | 0 .../3rd-party}/libpng/projects/owatcom/libpng.tgt | 0 .../3rd-party}/libpng/projects/owatcom/libpng.wpj | 0 .../libpng/projects/owatcom/pngconfig.mak | 0 .../3rd-party}/libpng/projects/owatcom/pngstest.tgt | 0 .../3rd-party}/libpng/projects/owatcom/pngtest.tgt | 0 .../3rd-party}/libpng/projects/owatcom/pngvalid.tgt | 0 .../libpng/projects/visualc71/PRJ0041.mak | 0 .../3rd-party}/libpng/projects/visualc71/README.txt | 0 .../libpng/projects/visualc71/README_zlib.txt | 0 .../3rd-party}/libpng/projects/visualc71/libpng.sln | 0 .../libpng/projects/visualc71/libpng.vcproj | 0 .../libpng/projects/visualc71/pngtest.vcproj | 0 .../libpng/projects/visualc71/zlib.vcproj | 0 .../src/3rd-party}/libpng/projects/vstudio/WARNING | 0 .../libpng/projects/vstudio/libpng/libpng.vcxproj | 0 .../projects/vstudio/pnglibconf/pnglibconf.vcxproj | 0 .../projects/vstudio/pngstest/pngstest.vcxproj | 0 .../libpng/projects/vstudio/pngtest/pngtest.vcxproj | 0 .../projects/vstudio/pngunknown/pngunknown.vcxproj | 0 .../projects/vstudio/pngvalid/pngvalid.vcxproj | 0 .../3rd-party}/libpng/projects/vstudio/readme.txt | 0 .../3rd-party}/libpng/projects/vstudio/vstudio.sln | 0 .../3rd-party}/libpng/projects/vstudio/zlib.props | 0 .../libpng/projects/vstudio/zlib/zlib.vcxproj | 0 .../src/3rd-party}/libpng/scripts/README.txt | 0 .../src/3rd-party}/libpng/scripts/SCOPTIONS.ppc | 0 .../src/3rd-party}/libpng/scripts/checksym.awk | 0 .../src/3rd-party}/libpng/scripts/def.dfn | 0 .../src/3rd-party}/libpng/scripts/descrip.mms | 0 .../src/3rd-party}/libpng/scripts/dfn.awk | 0 .../src/3rd-party}/libpng/scripts/intprefix.dfn | 0 .../3rd-party}/libpng/scripts/libpng-config-body.in | 0 .../3rd-party}/libpng/scripts/libpng-config-head.in | 0 .../src/3rd-party}/libpng/scripts/libpng.pc.in | 0 .../src/3rd-party}/libpng/scripts/macro.lst | 0 .../src/3rd-party}/libpng/scripts/makefile.32sunu | 0 .../src/3rd-party}/libpng/scripts/makefile.64sunu | 0 .../src/3rd-party}/libpng/scripts/makefile.acorn | 0 .../src/3rd-party}/libpng/scripts/makefile.aix | 0 .../src/3rd-party}/libpng/scripts/makefile.amiga | 0 .../src/3rd-party}/libpng/scripts/makefile.atari | 0 .../src/3rd-party}/libpng/scripts/makefile.bc32 | 0 .../src/3rd-party}/libpng/scripts/makefile.beos | 0 .../src/3rd-party}/libpng/scripts/makefile.bor | 0 .../src/3rd-party}/libpng/scripts/makefile.cegcc | 0 .../src/3rd-party}/libpng/scripts/makefile.darwin | 0 .../src/3rd-party}/libpng/scripts/makefile.dec | 0 .../src/3rd-party}/libpng/scripts/makefile.dj2 | 0 .../src/3rd-party}/libpng/scripts/makefile.elf | 0 .../src/3rd-party}/libpng/scripts/makefile.freebsd | 0 .../src/3rd-party}/libpng/scripts/makefile.gcc | 0 .../src/3rd-party}/libpng/scripts/makefile.hp64 | 0 .../src/3rd-party}/libpng/scripts/makefile.hpgcc | 0 .../src/3rd-party}/libpng/scripts/makefile.hpux | 0 .../src/3rd-party}/libpng/scripts/makefile.ibmc | 0 .../src/3rd-party}/libpng/scripts/makefile.intel | 0 .../src/3rd-party}/libpng/scripts/makefile.knr | 0 .../src/3rd-party}/libpng/scripts/makefile.linux | 0 .../src/3rd-party}/libpng/scripts/makefile.mips | 0 .../src/3rd-party}/libpng/scripts/makefile.msc | 0 .../src/3rd-party}/libpng/scripts/makefile.msys | 0 .../src/3rd-party}/libpng/scripts/makefile.ne12bsd | 0 .../src/3rd-party}/libpng/scripts/makefile.netbsd | 0 .../src/3rd-party}/libpng/scripts/makefile.openbsd | 0 .../src/3rd-party}/libpng/scripts/makefile.sco | 0 .../src/3rd-party}/libpng/scripts/makefile.sggcc | 0 .../src/3rd-party}/libpng/scripts/makefile.sgi | 0 .../src/3rd-party}/libpng/scripts/makefile.so9 | 0 .../src/3rd-party}/libpng/scripts/makefile.solaris | 0 .../3rd-party}/libpng/scripts/makefile.solaris-x86 | 0 .../src/3rd-party}/libpng/scripts/makefile.std | 0 .../src/3rd-party}/libpng/scripts/makefile.sunos | 0 .../src/3rd-party}/libpng/scripts/makefile.tc3 | 0 .../src/3rd-party}/libpng/scripts/makefile.vcwin32 | 0 .../src/3rd-party}/libpng/scripts/makevms.com | 0 .../src/3rd-party}/libpng/scripts/options.awk | 0 .../src/3rd-party}/libpng/scripts/pnglibconf.dfa | 0 .../3rd-party}/libpng/scripts/pnglibconf.h.prebuilt | 0 .../src/3rd-party}/libpng/scripts/pnglibconf.mak | 0 .../src/3rd-party}/libpng/scripts/pngwin.rc | 0 .../src/3rd-party}/libpng/scripts/prefix.dfn | 0 .../src/3rd-party}/libpng/scripts/smakefile.ppc | 0 .../src/3rd-party}/libpng/scripts/sym.dfn | 0 .../src/3rd-party}/libpng/scripts/symbols.def | 0 .../src/3rd-party}/libpng/scripts/symbols.dfn | 0 .../src/3rd-party}/libpng/scripts/vers.dfn | 0 .../src/3rd-party}/libpng/tests/pngstest | 0 .../src/3rd-party}/libpng/tests/pngstest-0g01 | 0 .../src/3rd-party}/libpng/tests/pngstest-0g02 | 0 .../src/3rd-party}/libpng/tests/pngstest-0g04 | 0 .../src/3rd-party}/libpng/tests/pngstest-0g08 | 0 .../src/3rd-party}/libpng/tests/pngstest-0g16 | 0 .../src/3rd-party}/libpng/tests/pngstest-2c08 | 0 .../src/3rd-party}/libpng/tests/pngstest-2c16 | 0 .../src/3rd-party}/libpng/tests/pngstest-3p01 | 0 .../src/3rd-party}/libpng/tests/pngstest-3p02 | 0 .../src/3rd-party}/libpng/tests/pngstest-3p04 | 0 .../src/3rd-party}/libpng/tests/pngstest-3p08 | 0 .../src/3rd-party}/libpng/tests/pngstest-4a08 | 0 .../src/3rd-party}/libpng/tests/pngstest-4a16 | 0 .../src/3rd-party}/libpng/tests/pngstest-6a08 | 0 .../src/3rd-party}/libpng/tests/pngstest-6a16 | 0 .../src/3rd-party}/libpng/tests/pngstest-error | 0 .../src/3rd-party}/libpng/tests/pngtest | 0 .../src/3rd-party}/libpng/tests/pngunknown-IDAT | 0 .../src/3rd-party}/libpng/tests/pngunknown-discard | 0 .../src/3rd-party}/libpng/tests/pngunknown-if-safe | 0 .../src/3rd-party}/libpng/tests/pngunknown-sAPI | 0 .../src/3rd-party}/libpng/tests/pngunknown-sTER | 0 .../src/3rd-party}/libpng/tests/pngunknown-save | 0 .../src/3rd-party}/libpng/tests/pngunknown-vpAg | 0 .../3rd-party}/libpng/tests/pngvalid-gamma-16-to-8 | 0 .../libpng/tests/pngvalid-gamma-alpha-mode | 0 .../libpng/tests/pngvalid-gamma-background | 0 .../libpng/tests/pngvalid-gamma-expand16-alpha-mode | 0 .../libpng/tests/pngvalid-gamma-expand16-background | 0 .../libpng/tests/pngvalid-gamma-expand16-transform | 0 .../src/3rd-party}/libpng/tests/pngvalid-gamma-sbit | 0 .../libpng/tests/pngvalid-gamma-threshold | 0 .../libpng/tests/pngvalid-gamma-transform | 0 .../tests/pngvalid-progressive-interlace-size | 0 .../tests/pngvalid-progressive-interlace-standard | 0 .../tests/pngvalid-progressive-interlace-transform | 0 .../libpng/tests/pngvalid-progressive-standard | 0 .../src/3rd-party}/libpng/tests/pngvalid-standard | 0 {3rd-party => io2d/src/3rd-party}/pixman/.gitignore | 0 {3rd-party => io2d/src/3rd-party}/pixman/AUTHORS | 0 .../src/3rd-party}/pixman/CODING_STYLE | 0 {3rd-party => io2d/src/3rd-party}/pixman/COPYING | 0 {3rd-party => io2d/src/3rd-party}/pixman/ChangeLog | 0 {3rd-party => io2d/src/3rd-party}/pixman/INSTALL | 0 .../src/3rd-party}/pixman/Makefile.am | 0 .../src/3rd-party}/pixman/Makefile.win32 | 0 .../src/3rd-party}/pixman/Makefile.win32.common | 0 {3rd-party => io2d/src/3rd-party}/pixman/NEWS | 0 {3rd-party => io2d/src/3rd-party}/pixman/README | 0 {3rd-party => io2d/src/3rd-party}/pixman/RELEASING | 0 {3rd-party => io2d/src/3rd-party}/pixman/autogen.sh | 0 .../src/3rd-party}/pixman/configure.ac | 0 .../src/3rd-party}/pixman/demos/Makefile.am | 0 .../src/3rd-party}/pixman/demos/alpha-test.c | 0 .../src/3rd-party}/pixman/demos/checkerboard.c | 0 .../src/3rd-party}/pixman/demos/clip-in.c | 0 .../src/3rd-party}/pixman/demos/clip-test.c | 0 .../src/3rd-party}/pixman/demos/composite-test.c | 0 .../src/3rd-party}/pixman/demos/conical-test.c | 0 .../src/3rd-party}/pixman/demos/convolution-test.c | 0 .../src/3rd-party}/pixman/demos/gradient-test.c | 0 .../src/3rd-party}/pixman/demos/gtk-utils.c | 0 .../src/3rd-party}/pixman/demos/gtk-utils.h | 0 .../src/3rd-party}/pixman/demos/linear-gradient.c | 0 .../src/3rd-party}/pixman/demos/parrot.c | 0 .../src/3rd-party}/pixman/demos/parrot.jpg | Bin .../src/3rd-party}/pixman/demos/quad2quad.c | 0 .../src/3rd-party}/pixman/demos/radial-test.c | 0 .../src/3rd-party}/pixman/demos/scale.c | 0 .../src/3rd-party}/pixman/demos/scale.ui | 0 .../src/3rd-party}/pixman/demos/screen-test.c | 0 .../src/3rd-party}/pixman/demos/srgb-test.c | 0 .../src/3rd-party}/pixman/demos/srgb-trap-test.c | 0 .../src/3rd-party}/pixman/demos/trap-test.c | 0 .../src/3rd-party}/pixman/demos/tri-test.c | 0 .../src/3rd-party}/pixman/demos/zone_plate.png | Bin .../3rd-party}/pixman/pixman-1-uninstalled.pc.in | 0 .../src/3rd-party}/pixman/pixman-1.pc.in | 0 .../src/3rd-party}/pixman/pixman/Makefile.am | 0 .../src/3rd-party}/pixman/pixman/Makefile.sources | 0 .../src/3rd-party}/pixman/pixman/Makefile.win32 | 0 .../3rd-party}/pixman/pixman/loongson-mmintrin.h | 0 .../src/3rd-party}/pixman/pixman/make-srgb.pl | 0 .../pixman/pixman/pixman-access-accessors.c | 0 .../src/3rd-party}/pixman/pixman/pixman-access.c | 0 .../src/3rd-party}/pixman/pixman/pixman-accessor.h | 0 .../3rd-party}/pixman/pixman/pixman-arm-common.h | 0 .../pixman/pixman/pixman-arm-detect-win32.asm | 0 .../pixman/pixman/pixman-arm-neon-asm-bilinear.S | 0 .../3rd-party}/pixman/pixman/pixman-arm-neon-asm.S | 0 .../3rd-party}/pixman/pixman/pixman-arm-neon-asm.h | 0 .../src/3rd-party}/pixman/pixman/pixman-arm-neon.c | 0 .../pixman/pixman/pixman-arm-simd-asm-scaled.S | 0 .../3rd-party}/pixman/pixman/pixman-arm-simd-asm.S | 0 .../3rd-party}/pixman/pixman/pixman-arm-simd-asm.h | 0 .../src/3rd-party}/pixman/pixman/pixman-arm-simd.c | 0 .../src/3rd-party}/pixman/pixman/pixman-arm.c | 0 .../3rd-party}/pixman/pixman/pixman-bits-image.c | 0 .../3rd-party}/pixman/pixman/pixman-combine-float.c | 0 .../src/3rd-party}/pixman/pixman/pixman-combine32.c | 0 .../src/3rd-party}/pixman/pixman/pixman-combine32.h | 0 .../src/3rd-party}/pixman/pixman/pixman-compiler.h | 0 .../pixman/pixman/pixman-conical-gradient.c | 0 .../pixman/pixman/pixman-edge-accessors.c | 0 .../src/3rd-party}/pixman/pixman/pixman-edge-imp.h | 0 .../src/3rd-party}/pixman/pixman/pixman-edge.c | 0 .../src/3rd-party}/pixman/pixman/pixman-fast-path.c | 0 .../src/3rd-party}/pixman/pixman/pixman-filter.c | 0 .../src/3rd-party}/pixman/pixman/pixman-general.c | 0 .../src/3rd-party}/pixman/pixman/pixman-glyph.c | 0 .../pixman/pixman/pixman-gradient-walker.c | 0 .../src/3rd-party}/pixman/pixman/pixman-image.c | 0 .../pixman/pixman/pixman-implementation.c | 0 .../src/3rd-party}/pixman/pixman/pixman-inlines.h | 0 .../pixman/pixman/pixman-linear-gradient.c | 0 .../src/3rd-party}/pixman/pixman/pixman-matrix.c | 0 .../pixman/pixman/pixman-mips-dspr2-asm.S | 0 .../pixman/pixman/pixman-mips-dspr2-asm.h | 0 .../3rd-party}/pixman/pixman/pixman-mips-dspr2.c | 0 .../3rd-party}/pixman/pixman/pixman-mips-dspr2.h | 0 .../pixman/pixman/pixman-mips-memcpy-asm.S | 0 .../src/3rd-party}/pixman/pixman/pixman-mips.c | 0 .../src/3rd-party}/pixman/pixman/pixman-mmx.c | 0 .../src/3rd-party}/pixman/pixman/pixman-noop.c | 0 .../src/3rd-party}/pixman/pixman/pixman-ppc.c | 0 .../src/3rd-party}/pixman/pixman/pixman-private.h | 0 .../pixman/pixman/pixman-radial-gradient.c | 0 .../src/3rd-party}/pixman/pixman/pixman-region.c | 0 .../src/3rd-party}/pixman/pixman/pixman-region16.c | 0 .../src/3rd-party}/pixman/pixman/pixman-region32.c | 0 .../3rd-party}/pixman/pixman/pixman-solid-fill.c | 0 .../src/3rd-party}/pixman/pixman/pixman-sse2.c | 0 .../src/3rd-party}/pixman/pixman/pixman-ssse3.c | 0 .../src/3rd-party}/pixman/pixman/pixman-timer.c | 0 .../src/3rd-party}/pixman/pixman/pixman-trap.c | 0 .../src/3rd-party}/pixman/pixman/pixman-utils.c | 0 .../src/3rd-party}/pixman/pixman/pixman-version.h | 0 .../3rd-party}/pixman/pixman/pixman-version.h.in | 0 .../src/3rd-party}/pixman/pixman/pixman-vmx.c | 0 .../src/3rd-party}/pixman/pixman/pixman-x86.c | 0 .../src/3rd-party}/pixman/pixman/pixman.c | 0 .../src/3rd-party}/pixman/pixman/pixman.h | 0 .../src/3rd-party}/pixman/pixman/rounding.txt | 0 .../3rd-party}/pixman/pixman/solaris-hwcap.mapfile | 0 .../src/3rd-party}/pixman/test/Makefile.am | 0 .../src/3rd-party}/pixman/test/Makefile.sources | 0 .../src/3rd-party}/pixman/test/Makefile.win32 | 0 .../src/3rd-party}/pixman/test/a1-trap-test.c | 0 .../src/3rd-party}/pixman/test/affine-test.c | 0 .../src/3rd-party}/pixman/test/alpha-loop.c | 0 .../src/3rd-party}/pixman/test/alphamap.c | 0 .../src/3rd-party}/pixman/test/blitters-test.c | 0 .../src/3rd-party}/pixman/test/check-formats.c | 0 .../src/3rd-party}/pixman/test/combiner-test.c | 0 .../3rd-party}/pixman/test/composite-traps-test.c | 0 .../src/3rd-party}/pixman/test/composite.c | 0 .../src/3rd-party}/pixman/test/fetch-test.c | 0 .../src/3rd-party}/pixman/test/fuzzer-find-diff.pl | 0 .../src/3rd-party}/pixman/test/glyph-test.c | 0 .../3rd-party}/pixman/test/gradient-crash-test.c | 0 .../src/3rd-party}/pixman/test/infinite-loop.c | 0 .../src/3rd-party}/pixman/test/lowlevel-blt-bench.c | 0 .../src/3rd-party}/pixman/test/matrix-test.c | 0 .../src/3rd-party}/pixman/test/oob-test.c | 0 .../src/3rd-party}/pixman/test/pdf-op-test.c | 0 .../src/3rd-party}/pixman/test/pixel-test.c | 0 .../src/3rd-party}/pixman/test/prng-test.c | 0 .../src/3rd-party}/pixman/test/radial-perf-test.c | 0 .../3rd-party}/pixman/test/region-contains-test.c | 0 .../src/3rd-party}/pixman/test/region-test.c | 0 .../3rd-party}/pixman/test/region-translate-test.c | 0 .../src/3rd-party}/pixman/test/rotate-test.c | 0 .../src/3rd-party}/pixman/test/scaling-bench.c | 0 .../src/3rd-party}/pixman/test/scaling-crash-test.c | 0 .../3rd-party}/pixman/test/scaling-helpers-test.c | 0 .../src/3rd-party}/pixman/test/scaling-test.c | 0 .../src/3rd-party}/pixman/test/stress-test.c | 0 .../src/3rd-party}/pixman/test/thread-test.c | 0 .../src/3rd-party}/pixman/test/trap-crasher.c | 0 .../src/3rd-party}/pixman/test/utils-prng.c | 0 .../src/3rd-party}/pixman/test/utils-prng.h | 0 .../src/3rd-party}/pixman/test/utils.c | 0 .../src/3rd-party}/pixman/test/utils.h | 0 .../src/3rd-party}/zlib/CMakeLists.txt | 0 {3rd-party => io2d/src/3rd-party}/zlib/ChangeLog | 0 {3rd-party => io2d/src/3rd-party}/zlib/FAQ | 0 {3rd-party => io2d/src/3rd-party}/zlib/INDEX | 0 {3rd-party => io2d/src/3rd-party}/zlib/Makefile | 0 {3rd-party => io2d/src/3rd-party}/zlib/Makefile.in | 0 {3rd-party => io2d/src/3rd-party}/zlib/README | 0 {3rd-party => io2d/src/3rd-party}/zlib/adler32.c | 0 .../src/3rd-party}/zlib/amiga/Makefile.pup | 0 .../src/3rd-party}/zlib/amiga/Makefile.sas | 0 {3rd-party => io2d/src/3rd-party}/zlib/as400/bndsrc | 0 .../src/3rd-party}/zlib/as400/compile.clp | 0 .../src/3rd-party}/zlib/as400/readme.txt | 0 .../src/3rd-party}/zlib/as400/zlib.inc | 0 {3rd-party => io2d/src/3rd-party}/zlib/compress.c | 0 {3rd-party => io2d/src/3rd-party}/zlib/configure | 0 .../src/3rd-party}/zlib/contrib/README.contrib | 0 .../src/3rd-party}/zlib/contrib/ada/buffer_demo.adb | 0 .../src/3rd-party}/zlib/contrib/ada/mtest.adb | 0 .../src/3rd-party}/zlib/contrib/ada/read.adb | 0 .../src/3rd-party}/zlib/contrib/ada/readme.txt | 0 .../src/3rd-party}/zlib/contrib/ada/test.adb | 0 .../3rd-party}/zlib/contrib/ada/zlib-streams.adb | 0 .../3rd-party}/zlib/contrib/ada/zlib-streams.ads | 0 .../src/3rd-party}/zlib/contrib/ada/zlib-thin.adb | 0 .../src/3rd-party}/zlib/contrib/ada/zlib-thin.ads | 0 .../src/3rd-party}/zlib/contrib/ada/zlib.adb | 0 .../src/3rd-party}/zlib/contrib/ada/zlib.ads | 0 .../src/3rd-party}/zlib/contrib/ada/zlib.gpr | 0 .../src/3rd-party}/zlib/contrib/amd64/amd64-match.S | 0 .../src/3rd-party}/zlib/contrib/asm686/README.686 | 0 .../src/3rd-party}/zlib/contrib/asm686/match.S | 0 .../src/3rd-party}/zlib/contrib/blast/Makefile | 0 .../src/3rd-party}/zlib/contrib/blast/README | 0 .../src/3rd-party}/zlib/contrib/blast/blast.c | 0 .../src/3rd-party}/zlib/contrib/blast/blast.h | 0 .../src/3rd-party}/zlib/contrib/blast/test.pk | Bin .../src/3rd-party}/zlib/contrib/blast/test.txt | 0 .../src/3rd-party}/zlib/contrib/delphi/ZLib.pas | 0 .../3rd-party}/zlib/contrib/delphi/ZLibConst.pas | 0 .../src/3rd-party}/zlib/contrib/delphi/readme.txt | 0 .../src/3rd-party}/zlib/contrib/delphi/zlibd32.mak | 0 .../3rd-party}/zlib/contrib/dotzlib/DotZLib.build | 0 .../src/3rd-party}/zlib/contrib/dotzlib/DotZLib.chm | Bin .../src/3rd-party}/zlib/contrib/dotzlib/DotZLib.sln | 0 .../zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs | 0 .../zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs | 0 .../zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs | 0 .../zlib/contrib/dotzlib/DotZLib/CodecBase.cs | 0 .../zlib/contrib/dotzlib/DotZLib/Deflater.cs | 0 .../zlib/contrib/dotzlib/DotZLib/DotZLib.cs | 0 .../zlib/contrib/dotzlib/DotZLib/DotZLib.csproj | 0 .../zlib/contrib/dotzlib/DotZLib/GZipStream.cs | 0 .../zlib/contrib/dotzlib/DotZLib/Inflater.cs | 0 .../zlib/contrib/dotzlib/DotZLib/UnitTests.cs | 0 .../3rd-party}/zlib/contrib/dotzlib/LICENSE_1_0.txt | 0 .../src/3rd-party}/zlib/contrib/dotzlib/readme.txt | 0 .../3rd-party}/zlib/contrib/gcc_gvmat64/gvmat64.S | 0 .../src/3rd-party}/zlib/contrib/infback9/README | 0 .../src/3rd-party}/zlib/contrib/infback9/infback9.c | 0 .../src/3rd-party}/zlib/contrib/infback9/infback9.h | 0 .../src/3rd-party}/zlib/contrib/infback9/inffix9.h | 0 .../src/3rd-party}/zlib/contrib/infback9/inflate9.h | 0 .../src/3rd-party}/zlib/contrib/infback9/inftree9.c | 0 .../src/3rd-party}/zlib/contrib/infback9/inftree9.h | 0 .../3rd-party}/zlib/contrib/inflate86/inffas86.c | 0 .../src/3rd-party}/zlib/contrib/inflate86/inffast.S | 0 .../src/3rd-party}/zlib/contrib/iostream/test.cpp | 0 .../3rd-party}/zlib/contrib/iostream/zfstream.cpp | 0 .../src/3rd-party}/zlib/contrib/iostream/zfstream.h | 0 .../src/3rd-party}/zlib/contrib/iostream2/zstream.h | 0 .../zlib/contrib/iostream2/zstream_test.cpp | 0 .../src/3rd-party}/zlib/contrib/iostream3/README | 0 .../src/3rd-party}/zlib/contrib/iostream3/TODO | 0 .../src/3rd-party}/zlib/contrib/iostream3/test.cc | 0 .../3rd-party}/zlib/contrib/iostream3/zfstream.cc | 0 .../3rd-party}/zlib/contrib/iostream3/zfstream.h | 0 .../3rd-party}/zlib/contrib/masmx64/bld_ml64.bat | 0 .../src/3rd-party}/zlib/contrib/masmx64/gvmat64.asm | 0 .../3rd-party}/zlib/contrib/masmx64/inffas8664.c | 0 .../3rd-party}/zlib/contrib/masmx64/inffasx64.asm | 0 .../src/3rd-party}/zlib/contrib/masmx64/readme.txt | 0 .../3rd-party}/zlib/contrib/masmx86/bld_ml32.bat | 0 .../3rd-party}/zlib/contrib/masmx86/inffas32.asm | 0 .../3rd-party}/zlib/contrib/masmx86/match686.asm | 0 .../src/3rd-party}/zlib/contrib/masmx86/readme.txt | 0 .../src/3rd-party}/zlib/contrib/minizip/Makefile | 0 .../src/3rd-party}/zlib/contrib/minizip/Makefile.am | 0 .../zlib/contrib/minizip/MiniZip64_Changes.txt | 0 .../zlib/contrib/minizip/MiniZip64_info.txt | 0 .../3rd-party}/zlib/contrib/minizip/configure.ac | 0 .../src/3rd-party}/zlib/contrib/minizip/crypt.h | 0 .../src/3rd-party}/zlib/contrib/minizip/ioapi.c | 0 .../src/3rd-party}/zlib/contrib/minizip/ioapi.h | 0 .../src/3rd-party}/zlib/contrib/minizip/iowin32.c | 0 .../src/3rd-party}/zlib/contrib/minizip/iowin32.h | 0 .../3rd-party}/zlib/contrib/minizip/make_vms.com | 0 .../src/3rd-party}/zlib/contrib/minizip/miniunz.c | 0 .../src/3rd-party}/zlib/contrib/minizip/miniunzip.1 | 0 .../src/3rd-party}/zlib/contrib/minizip/minizip.1 | 0 .../src/3rd-party}/zlib/contrib/minizip/minizip.c | 0 .../3rd-party}/zlib/contrib/minizip/minizip.pc.in | 0 .../src/3rd-party}/zlib/contrib/minizip/mztools.c | 0 .../src/3rd-party}/zlib/contrib/minizip/mztools.h | 0 .../src/3rd-party}/zlib/contrib/minizip/unzip.c | 0 .../src/3rd-party}/zlib/contrib/minizip/unzip.h | 0 .../src/3rd-party}/zlib/contrib/minizip/zip.c | 0 .../src/3rd-party}/zlib/contrib/minizip/zip.h | 0 .../src/3rd-party}/zlib/contrib/pascal/example.pas | 0 .../src/3rd-party}/zlib/contrib/pascal/readme.txt | 0 .../src/3rd-party}/zlib/contrib/pascal/zlibd32.mak | 0 .../src/3rd-party}/zlib/contrib/pascal/zlibpas.pas | 0 .../src/3rd-party}/zlib/contrib/puff/Makefile | 0 .../src/3rd-party}/zlib/contrib/puff/README | 0 .../src/3rd-party}/zlib/contrib/puff/puff.c | 0 .../src/3rd-party}/zlib/contrib/puff/puff.h | 0 .../src/3rd-party}/zlib/contrib/puff/pufftest.c | 0 .../src/3rd-party}/zlib/contrib/puff/zeros.raw | Bin .../src/3rd-party}/zlib/contrib/testzlib/testzlib.c | 0 .../3rd-party}/zlib/contrib/testzlib/testzlib.txt | 0 .../src/3rd-party}/zlib/contrib/untgz/Makefile | 0 .../src/3rd-party}/zlib/contrib/untgz/Makefile.msc | 0 .../src/3rd-party}/zlib/contrib/untgz/untgz.c | 0 .../src/3rd-party}/zlib/contrib/vstudio/readme.txt | 0 .../zlib/contrib/vstudio/vc10/miniunz.vcxproj | 0 .../contrib/vstudio/vc10/miniunz.vcxproj.filters | 0 .../zlib/contrib/vstudio/vc10/minizip.vcxproj | 0 .../contrib/vstudio/vc10/minizip.vcxproj.filters | 0 .../zlib/contrib/vstudio/vc10/testzlib.vcxproj | 0 .../contrib/vstudio/vc10/testzlib.vcxproj.filters | 0 .../zlib/contrib/vstudio/vc10/testzlibdll.vcxproj | 0 .../vstudio/vc10/testzlibdll.vcxproj.filters | 0 .../3rd-party}/zlib/contrib/vstudio/vc10/zlib.rc | 0 .../zlib/contrib/vstudio/vc10/zlibstat.vcxproj | 0 .../contrib/vstudio/vc10/zlibstat.vcxproj.filters | 0 .../3rd-party}/zlib/contrib/vstudio/vc10/zlibvc.def | 0 .../3rd-party}/zlib/contrib/vstudio/vc10/zlibvc.sln | 0 .../zlib/contrib/vstudio/vc10/zlibvc.vcxproj | 0 .../contrib/vstudio/vc10/zlibvc.vcxproj.filters | 0 .../zlib/contrib/vstudio/vc11/miniunz.vcxproj | 0 .../zlib/contrib/vstudio/vc11/minizip.vcxproj | 0 .../zlib/contrib/vstudio/vc11/testzlib.vcxproj | 0 .../zlib/contrib/vstudio/vc11/testzlibdll.vcxproj | 0 .../3rd-party}/zlib/contrib/vstudio/vc11/zlib.rc | 0 .../zlib/contrib/vstudio/vc11/zlibstat.vcxproj | 0 .../3rd-party}/zlib/contrib/vstudio/vc11/zlibvc.def | 0 .../3rd-party}/zlib/contrib/vstudio/vc11/zlibvc.sln | 0 .../zlib/contrib/vstudio/vc11/zlibvc.vcxproj | 0 .../zlib/contrib/vstudio/vc9/miniunz.vcproj | 0 .../zlib/contrib/vstudio/vc9/minizip.vcproj | 0 .../zlib/contrib/vstudio/vc9/testzlib.vcproj | 0 .../zlib/contrib/vstudio/vc9/testzlibdll.vcproj | 0 .../src/3rd-party}/zlib/contrib/vstudio/vc9/zlib.rc | 0 .../zlib/contrib/vstudio/vc9/zlibstat.vcproj | 0 .../3rd-party}/zlib/contrib/vstudio/vc9/zlibvc.def | 0 .../3rd-party}/zlib/contrib/vstudio/vc9/zlibvc.sln | 0 .../zlib/contrib/vstudio/vc9/zlibvc.vcproj | 0 {3rd-party => io2d/src/3rd-party}/zlib/crc32.c | 0 {3rd-party => io2d/src/3rd-party}/zlib/crc32.h | 0 {3rd-party => io2d/src/3rd-party}/zlib/deflate.c | 0 {3rd-party => io2d/src/3rd-party}/zlib/deflate.h | 0 .../src/3rd-party}/zlib/doc/algorithm.txt | 0 .../src/3rd-party}/zlib/doc/rfc1950.txt | 0 .../src/3rd-party}/zlib/doc/rfc1951.txt | 0 .../src/3rd-party}/zlib/doc/rfc1952.txt | 0 .../src/3rd-party}/zlib/doc/txtvsbin.txt | 0 .../src/3rd-party}/zlib/examples/README.examples | 0 .../src/3rd-party}/zlib/examples/enough.c | 0 .../src/3rd-party}/zlib/examples/fitblk.c | 0 .../src/3rd-party}/zlib/examples/gun.c | 0 .../src/3rd-party}/zlib/examples/gzappend.c | 0 .../src/3rd-party}/zlib/examples/gzjoin.c | 0 .../src/3rd-party}/zlib/examples/gzlog.c | 0 .../src/3rd-party}/zlib/examples/gzlog.h | 0 .../src/3rd-party}/zlib/examples/zlib_how.html | 0 .../src/3rd-party}/zlib/examples/zpipe.c | 0 .../src/3rd-party}/zlib/examples/zran.c | 0 {3rd-party => io2d/src/3rd-party}/zlib/gzclose.c | 0 {3rd-party => io2d/src/3rd-party}/zlib/gzguts.h | 0 {3rd-party => io2d/src/3rd-party}/zlib/gzlib.c | 0 {3rd-party => io2d/src/3rd-party}/zlib/gzread.c | 0 {3rd-party => io2d/src/3rd-party}/zlib/gzwrite.c | 0 {3rd-party => io2d/src/3rd-party}/zlib/infback.c | 0 {3rd-party => io2d/src/3rd-party}/zlib/inffast.c | 0 {3rd-party => io2d/src/3rd-party}/zlib/inffast.h | 0 {3rd-party => io2d/src/3rd-party}/zlib/inffixed.h | 0 {3rd-party => io2d/src/3rd-party}/zlib/inflate.c | 0 {3rd-party => io2d/src/3rd-party}/zlib/inflate.h | 0 {3rd-party => io2d/src/3rd-party}/zlib/inftrees.c | 0 {3rd-party => io2d/src/3rd-party}/zlib/inftrees.h | 0 {3rd-party => io2d/src/3rd-party}/zlib/make_vms.com | 0 .../src/3rd-party}/zlib/msdos/Makefile.bor | 0 .../src/3rd-party}/zlib/msdos/Makefile.dj2 | 0 .../src/3rd-party}/zlib/msdos/Makefile.emx | 0 .../src/3rd-party}/zlib/msdos/Makefile.msc | 0 .../src/3rd-party}/zlib/msdos/Makefile.tc | 0 .../src/3rd-party}/zlib/nintendods/Makefile | 0 .../src/3rd-party}/zlib/nintendods/README | 0 .../src/3rd-party}/zlib/old/Makefile.emx | 0 .../src/3rd-party}/zlib/old/Makefile.riscos | 0 {3rd-party => io2d/src/3rd-party}/zlib/old/README | 0 .../src/3rd-party}/zlib/old/descrip.mms | 0 .../src/3rd-party}/zlib/old/os2/Makefile.os2 | 0 .../src/3rd-party}/zlib/old/os2/zlib.def | 0 .../src/3rd-party}/zlib/old/visual-basic.txt | 0 .../src/3rd-party}/zlib/qnx/package.qpg | 0 .../src/3rd-party}/zlib/test/example.c | 0 .../src/3rd-party}/zlib/test/infcover.c | 0 .../src/3rd-party}/zlib/test/minigzip.c | 0 .../src/3rd-party}/zlib/treebuild.xml | 0 {3rd-party => io2d/src/3rd-party}/zlib/trees.c | 0 {3rd-party => io2d/src/3rd-party}/zlib/trees.h | 0 {3rd-party => io2d/src/3rd-party}/zlib/uncompr.c | 0 .../src/3rd-party}/zlib/watcom/watcom_f.mak | 0 .../src/3rd-party}/zlib/watcom/watcom_l.mak | 0 .../src/3rd-party}/zlib/win32/DLL_FAQ.txt | 0 .../src/3rd-party}/zlib/win32/Makefile.bor | 0 .../src/3rd-party}/zlib/win32/Makefile.gcc | 0 .../src/3rd-party}/zlib/win32/Makefile.msc | 0 .../src/3rd-party}/zlib/win32/README-WIN32.txt | 0 .../src/3rd-party}/zlib/win32/VisualC.txt | 0 .../src/3rd-party}/zlib/win32/zlib.def | 0 .../src/3rd-party}/zlib/win32/zlib1.rc | 0 {3rd-party => io2d/src/3rd-party}/zlib/zconf.h | 0 .../src/3rd-party}/zlib/zconf.h.cmakein | 0 {3rd-party => io2d/src/3rd-party}/zlib/zconf.h.in | 0 {3rd-party => io2d/src/3rd-party}/zlib/zlib.3 | 0 {3rd-party => io2d/src/3rd-party}/zlib/zlib.3.pdf | Bin {3rd-party => io2d/src/3rd-party}/zlib/zlib.h | 0 {3rd-party => io2d/src/3rd-party}/zlib/zlib.map | 0 .../src/3rd-party}/zlib/zlib.pc.cmakein | 0 {3rd-party => io2d/src/3rd-party}/zlib/zlib.pc.in | 0 {3rd-party => io2d/src/3rd-party}/zlib/zlib2ansi | 0 {3rd-party => io2d/src/3rd-party}/zlib/zutil.c | 0 {3rd-party => io2d/src/3rd-party}/zlib/zutil.h | 0 {src => io2d/src}/Makefile.am | 0 {src => io2d/src}/N3888_RefImpl.ico | Bin {src => io2d/src}/N3888_RefImpl.rc | Bin {src => io2d/src}/N3888_RefImpl.vcxproj | 0 {src => io2d/src}/N3888_RefImpl.vcxproj.filters | 0 {src => io2d/src}/brush.cpp | 0 {src => io2d/src}/device.cpp | 0 {src => io2d/src}/display_surface-common.cpp | 0 {src => io2d/src}/display_surface-win32.cpp | 0 {src => io2d/src}/display_surface-xlib.cpp | 0 {src => io2d/src}/font_extents.cpp | 0 {src => io2d/src}/font_face.cpp | 0 {src => io2d/src}/font_options.cpp | 0 {src => io2d/src}/image_surface.cpp | 0 {src => io2d/src}/io2d_error_category.cpp | 0 {src => io2d/src}/linear_brush_factory.cpp | 0 {src => io2d/src}/mapped_surface.cpp | 0 {src => io2d/src}/matrix_2d.cpp | 0 {src => io2d/src}/mesh_brush_factory.cpp | 0 {src => io2d/src}/path.cpp | 0 {src => io2d/src}/path_data.cpp | 0 {src => io2d/src}/path_data_item.cpp | 0 {src => io2d/src}/path_factory.cpp | 0 {src => io2d/src}/radial_brush_factory.cpp | 0 {src => io2d/src}/rectangle.cpp | 0 {src => io2d/src}/rgba_color.cpp | 0 {src => io2d/src}/simple_font_face.cpp | 0 {src => io2d/src}/small.ico | Bin {src => io2d/src}/solid_color_brush_factory.cpp | 0 {src => io2d/src}/standalone_functions.cpp | 0 {src => io2d/src}/surface.cpp | 0 {src => io2d/src}/surface_brush_factory.cpp | 0 {src => io2d/src}/text_extents.cpp | 0 {src => io2d/src}/vector_2d.cpp | 0 {src => io2d/src}/win32/DLL build instructions.txt | 0 {src => io2d/src}/win32/DLLs/x64/Debug/cairo.dll | Bin {src => io2d/src}/win32/DLLs/x64/Debug/cairo.pdb | Bin {src => io2d/src}/win32/DLLs/x64/Debug/zlib1.dll | Bin {src => io2d/src}/win32/DLLs/x64/Debug/zlib1.pdb | Bin {src => io2d/src}/win32/DLLs/x64/Release/cairo.dll | Bin {src => io2d/src}/win32/DLLs/x64/Release/zlib1.dll | Bin {src => io2d/src}/win32/DLLs/x86/Debug/cairo.dll | Bin {src => io2d/src}/win32/DLLs/x86/Debug/cairo.pdb | Bin {src => io2d/src}/win32/DLLs/x86/Debug/zlib1.dll | Bin {src => io2d/src}/win32/DLLs/x86/Debug/zlib1.pdb | Bin .../src}/win32/DLLs/x86/Debug_Clang_C2/cairo.dll | Bin .../src}/win32/DLLs/x86/Debug_Clang_C2/zlib1.dll | Bin {src => io2d/src}/win32/DLLs/x86/Release/cairo.dll | Bin {src => io2d/src}/win32/DLLs/x86/Release/zlib1.dll | Bin .../src}/win32/DLLs/x86/Release_Clang_C2/cairo.dll | Bin .../src}/win32/DLLs/x86/Release_Clang_C2/zlib1.dll | Bin {src => io2d/src}/win32/include/cairo-deprecated.h | 0 {src => io2d/src}/win32/include/cairo-features.h | 0 {src => io2d/src}/win32/include/cairo-pdf.h | 0 {src => io2d/src}/win32/include/cairo-ps.h | 0 {src => io2d/src}/win32/include/cairo-script.h | 0 {src => io2d/src}/win32/include/cairo-svg.h | 0 {src => io2d/src}/win32/include/cairo-version.h | 0 {src => io2d/src}/win32/include/cairo-win32.h | 0 {src => io2d/src}/win32/include/cairo.h | 0 {src => io2d/src}/win32/lib/x64/Debug/cairo.lib | Bin {src => io2d/src}/win32/lib/x64/Debug/zlib.lib | Bin {src => io2d/src}/win32/lib/x64/Release/cairo.lib | Bin {src => io2d/src}/win32/lib/x64/Release/zlib.lib | Bin {src => io2d/src}/win32/lib/x86/Debug/cairo.lib | Bin {src => io2d/src}/win32/lib/x86/Debug/zlib.lib | Bin .../src}/win32/lib/x86/Debug_Clang_C2/cairo.lib | Bin .../src}/win32/lib/x86/Debug_Clang_C2/zlib.lib | Bin {src => io2d/src}/win32/lib/x86/Release/cairo.lib | Bin {src => io2d/src}/win32/lib/x86/Release/zlib.lib | Bin .../src}/win32/lib/x86/Release_Clang_C2/cairo.lib | Bin .../src}/win32/lib/x86/Release_Clang_C2/zlib.lib | Bin 4982 files changed, 0 insertions(+), 0 deletions(-) rename {include => io2d/include}/io2d.h (100%) rename {include => io2d/include}/throw_helpers.h (100%) rename {include => io2d/include}/xcairoenumhelpers.h (100%) rename {include => io2d/include}/xio2d.h (100%) rename {include => io2d/include}/xio2dhelpers.h (100%) rename {src => io2d/src}/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/AUTHORS (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/BIBLIOGRAPHY (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/BUGS (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/CODING_STYLE (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/COPYING (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/COPYING-LGPL-2.1 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/COPYING-MPL-1.1 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/HACKING (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/INSTALL (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/KNOWN_ISSUES (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/Makefile.win32 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/NEWS (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/PORTING_GUIDE (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/README (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/README.win32 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/RELEASING (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/acinclude.m4 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/autogen.sh (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/Makefile.sources (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/Makefile.win32 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/Makefile.win32.features (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/README (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-beos.cpp (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-cogl.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-directfb.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-drm.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-egl.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-getopt.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-getopt.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-glx.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-pdf.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-ps.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-qt.cpp (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-quartz.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-scaled-font.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-script.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-skia.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-svg.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-system.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-system.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-test-surfaces.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-vg.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-wgl.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-win32-printing.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-win32.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-xcb.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-xlib.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate-xlib.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/cairo-boilerplate.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/check-link.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/boilerplate/make-cairo-boilerplate-constructors.sh (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/Makefile.am.analysis (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/Makefile.am.changelog (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/Makefile.am.common (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/Makefile.am.gtk-doc (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/Makefile.am.releasing (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/Makefile.win32.common (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/Makefile.win32.features (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/Makefile.win32.features-h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/Makefile.win32.inform (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/aclocal.cairo.m4 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/aclocal.compare.m4 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/aclocal.enable.m4 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/aclocal.float.m4 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/aclocal.gtk-doc.m4 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/aclocal.makefile.m4 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/aclocal.pkg.m4 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/configure.ac.analysis (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/configure.ac.features (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/configure.ac.noversion (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/configure.ac.pthread (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/configure.ac.system (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/configure.ac.tools (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/configure.ac.version (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/build/configure.ac.warnings (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/cairo-version.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/configure.ac (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/public/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/public/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/public/README (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/public/cairo-docs.xml (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/public/cairo-overrides.txt (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/public/cairo-sections.txt (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/public/cairo.types (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/public/check-doc-coverage.sh (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/public/check-doc-syntax.sh (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/public/language-bindings.xml (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/Makefile (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/cairo-blank.svg (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/cairo-code.svg (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/cairo-large-content.svg (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/cairo-separator.svg (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/cairo-title.svg (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/cairo.svg (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/circle-cairo-large.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/circle-cairo.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/circle-ooo-large.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/circle-ooo.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/expander-fuzzy-large.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/expander-fuzzy.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/expander-sharp-large.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/expander-sharp.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/fuzzies.svg (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/jaggies.svg (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/rendering-model.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/slides/tutorial.xml (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/src/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/src/Makefile (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/src/README (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/src/circle.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/src/include/cairo-tutorial-gtk.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/src/include/cairo-tutorial-pdf.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/src/include/cairo-tutorial-png.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/src/include/cairo-tutorial-xlib.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/src/include/cairo-tutorial.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/src/lca.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/src/singular.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/doc/tutorial/src/twin.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/COPYING (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/Makefile.sources (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/Makefile.win32 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/README (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-analyse-trace.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-perf-chart.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-perf-compare-backends.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-perf-diff (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-perf-diff-files.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-perf-graph (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-perf-graph-files.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-perf-graph-widget.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-perf-graph.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-perf-micro.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-perf-print.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-perf-report.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-perf-trace.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-perf.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-perf.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-stats.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/cairo-stats.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/dirent-win32.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/make-html.py (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/Makefile.sources (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/Makefile.win32 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/a1-curve.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/a1-line.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/box-outline.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/cairo-perf-cover.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/composite-checker.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/curve.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/disjoint.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/dragon.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/fill-clip.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/fill.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/glyphs.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/hash-table.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/hatching.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/intersections.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/line.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/long-dashed-lines.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/long-lines.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/many-curves.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/many-fills.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/many-strokes.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/mask.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/mosaic.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/mosaic.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/paint-with-alpha.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/paint.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/pattern_create_radial.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/pixel.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/pythagoras-tree.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/rectangles.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/rounded-rectangles.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/sierpinski.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/spiral.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/stroke.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/subimage_copy.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/tessellate.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/text.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/tiger.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/twin.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/unaligned-clip.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/wave.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/wide-fills.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/wide-strokes.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/world-map.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/world-map.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/zrusin-another.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/perf/micro/zrusin.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/Makefile.am.analysis (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/Makefile.sources (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/Makefile.win32 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/Makefile.win32.features (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/README (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-analysis-surface-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-analysis-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-arc-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-arc.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-array-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-array.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-atomic-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-atomic.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-backend-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-base64-stream.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-base85-stream.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-bentley-ottmann-rectangular.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-bentley-ottmann-rectilinear.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-bentley-ottmann.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-beos-surface.cpp (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-beos.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-botor-scan-converter.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-box-inline.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-boxes-intersect.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-boxes-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-boxes.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-cache-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-cache.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-cff-subset.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-clip-boxes.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-clip-inline.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-clip-polygon.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-clip-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-clip-region.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-clip-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-clip-tor-scan-converter.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-clip.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-cogl-context-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-cogl-context.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-cogl-gradient-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-cogl-gradient.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-cogl-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-cogl-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-cogl-utils-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-cogl-utils.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-cogl.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-color.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-combsort-inline.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-compiler-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-composite-rectangles-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-composite-rectangles.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-compositor-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-compositor.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-contour-inline.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-contour-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-contour.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-damage-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-damage.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-debug.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-default-context-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-default-context.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-deflate-stream.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-deprecated.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-device-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-device.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-directfb-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-directfb.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-drm.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-egl-context.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-error-inline.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-error-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-error.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-fallback-compositor.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-features-uninstalled.pc.in (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-features.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-features.pc.in (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-fixed-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-fixed-type-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-fixed.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-font-face-twin-data.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-font-face-twin.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-font-face.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-font-options.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-fontconfig-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-freed-pool-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-freed-pool.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-freelist-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-freelist-type-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-freelist.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-ft-font.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-ft-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-ft.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-composite.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-device.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-dispatch-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-dispatch.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-ext-def-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-glyphs.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-gradient-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-gradient.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-info.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-msaa-compositor.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-operand.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-shaders.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-spans-compositor.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-surface-legacy.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl-traps-compositor.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gl.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-glx-context.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gstate-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-gstate.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-hash-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-hash.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-hull.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-image-compositor.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-image-info-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-image-info.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-image-mask-compositor.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-image-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-image-surface-inline.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-image-surface-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-image-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-list-inline.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-list-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-lzw.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-malloc-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-mask-compositor.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-matrix.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-mempool-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-mempool.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-mesh-pattern-rasterizer.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-misc.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-mono-scan-converter.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-mutex-impl-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-mutex-list-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-mutex-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-mutex-type-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-mutex.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-no-compositor.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-observer.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-os2-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-os2-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-os2.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-output-stream-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-output-stream.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-paginated-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-paginated-surface-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-paginated-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-path-bounds.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-path-fill.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-path-fixed-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-path-fixed.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-path-in-fill.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-path-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-path-stroke-boxes.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-path-stroke-polygon.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-path-stroke-traps.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-path-stroke-tristrip.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-path-stroke.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-path.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-pattern-inline.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-pattern-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-pattern.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-pdf-operators-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-pdf-operators.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-pdf-shading-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-pdf-shading.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-pdf-surface-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-pdf-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-pdf.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-pen.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-pixman-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-png.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-polygon-intersect.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-polygon-reduce.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-polygon.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-ps-surface-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-ps-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-ps.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-qt-surface.cpp (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-qt.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-quartz-font.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-quartz-image-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-quartz-image.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-quartz-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-quartz-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-quartz.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-raster-source-pattern.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-recording-surface-inline.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-recording-surface-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-recording-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-rectangle.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-rectangular-scan-converter.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-reference-count-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-region-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-region.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-rtree-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-rtree.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-scaled-font-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-scaled-font-subsets-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-scaled-font-subsets.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-scaled-font.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-script-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-script-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-script.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-shape-mask-compositor.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-skia-surface.cpp (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-skia.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-slope-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-slope.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-spans-compositor-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-spans-compositor.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-spans-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-spans.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-spline.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-stroke-dash-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-stroke-dash.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-stroke-style.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-backend-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-clipper-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-clipper.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-fallback-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-fallback.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-inline.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-observer-inline.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-observer-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-observer.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-offset-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-offset.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-snapshot-inline.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-snapshot-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-snapshot.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-subsurface-inline.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-subsurface-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-subsurface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-wrapper-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface-wrapper.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-svg-surface-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-svg-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-svg.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-tee-surface-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-tee-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-tee.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-time-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-time.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-tor-scan-converter.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-tor22-scan-converter.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-toy-font-face.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-traps-compositor.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-traps-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-traps.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-tristrip-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-tristrip.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-truetype-subset-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-truetype-subset.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-type1-fallback.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-type1-glyph-names.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-type1-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-type1-subset.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-type3-glyph-surface-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-type3-glyph-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-types-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-unicode.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-uninstalled.pc.in (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-user-font-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-user-font.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-version.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-version.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-vg-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-vg.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-wgl-context.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-wideint-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-wideint-type-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-wideint.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-win32.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xcb-connection-core.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xcb-connection-render.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xcb-connection-shm.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xcb-connection.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xcb-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xcb-screen.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xcb-shm.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xcb-surface-core.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xcb-surface-render.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xcb-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xcb.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xlib-core-compositor.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xlib-display.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xlib-fallback-compositor.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xlib-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xlib-render-compositor.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xlib-screen.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xlib-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xlib-surface-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xlib-surface-shm.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xlib-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xlib-visual.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xlib-xcb-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xlib-xrender-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xlib-xrender.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xlib.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xml-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo-xml.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairo.pc.in (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/cairoint.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/check-def.sh (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/check-doc-syntax.awk (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/check-doc-syntax.sh (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/check-has-hidden-symbols.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/check-headers.sh (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/check-link.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/check-plt.sh (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/check-preprocessor-syntax.sh (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-bo.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-gallium-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-i915-glyphs.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-i915-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-i915-shader.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-i915-spans.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-i915-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-i965-glyphs.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-i965-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-i965-shader.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-i965-spans.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-i965-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-intel-brw-defines.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-intel-brw-eu-emit.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-intel-brw-eu-util.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-intel-brw-eu.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-intel-brw-eu.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-intel-brw-structs.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-intel-command-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-intel-debug.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-intel-ioctl-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-intel-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-intel-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-intel.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-ioctl-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-radeon-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-radeon-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-radeon.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/drm/cairo-drm.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/skia/cairo-skia-context.cpp (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/skia/cairo-skia-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/skia/cairo-skia-surface.cpp (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/test-base-compositor-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/test-compositor-surface-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/test-compositor-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/test-compositor-surface.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/test-null-compositor-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/test-null-compositor-surface.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/test-paginated-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/test-paginated-surface.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/win32/cairo-win32-debug.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/win32/cairo-win32-device.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/win32/cairo-win32-display-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/win32/cairo-win32-font.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/win32/cairo-win32-gdi-compositor.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/win32/cairo-win32-printing-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/win32/cairo-win32-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/win32/cairo-win32-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/src/win32/cairo-win32-system.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/.valgrind-suppressions (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/6x13.pcf (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/COPYING (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/Makefile.sources (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/Makefile.win32 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/README (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/a1-bug.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/a1-clip.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/a1-fill.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/a1-image-sample.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/a1-mask-sample.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/a1-mask.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/a1-rasterisation.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/a1-sample.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/a1-traps-sample.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/a8-clear.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/a8-mask.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/aliasing.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/alpha-similar.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/any2ppm.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/api-special-cases.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/arc-direction.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/arc-infinite-loop.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/arc-looping-dash.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/big-empty-box.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/big-empty-triangle.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/big-line.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/big-little-box.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/big-little-triangle.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/big-trap.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/bilevel-image.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/bitmap-font.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/buffer-diff.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/buffer-diff.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/bug-40410.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/bug-51910.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/bug-bo-collins.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/bug-bo-rectangular.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/bug-bo-ricotz.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/bug-extents.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/bug-seams.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/bug-source-cu.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/bug-spline.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/cairo-test-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/cairo-test-runner.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/cairo-test-trace.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/cairo-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/cairo-test.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/caps-joins-alpha.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/caps-joins-curve.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/caps-joins.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/caps-sub-paths.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/caps-tails-curve.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/caps.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/check-refs.sh (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/checkerboard.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clear-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clear.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-all.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-complex-bug61592.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-complex-shape.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-contexts.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-device-offset.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-disjoint-hatching.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-disjoint-quad.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-disjoint.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-double-free.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-draw-unbounded.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-empty-group.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-empty-save.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-empty.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-fill-no-op.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-fill-rule-pixel-aligned.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-fill-rule.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-fill.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-group-shapes.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-image.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-intersect.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-mixed-antialias.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-nesting.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-operator.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-polygons.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-push-group.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-rectilinear.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-shape.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-stroke-no-op.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-stroke.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-text.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-twice-rectangle.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-twice.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-unbounded.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clip-zero.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clipped-group.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clipped-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clipped-trapezoids-ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/clipped-trapezoids.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/close-path-current-point.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/close-path.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/composite-integer-translate-over-repeat.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/composite-integer-translate-over.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/composite-integer-translate-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/copy-disjoint.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/copy-path.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/coverage.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/create-for-stream.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/create-from-png-stream.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/create-from-png.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/culled-glyphs.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/curve-to-as-line-to.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/dash-caps-joins.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/dash-curve.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/dash-infinite-loop.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/dash-no-dash.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/dash-offset-negative.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/dash-offset.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/dash-scale.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/dash-state.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/dash-zero-length.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/degenerate-arc.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/degenerate-arcs.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/degenerate-curve-to.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/degenerate-dash.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/degenerate-linear-gradient.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/degenerate-path.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/degenerate-pen.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/degenerate-radial-gradient.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/degenerate-rel-curve-to.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/degenerate-solid-dash.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/device-offset-fractional.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/device-offset-positive.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/device-offset-scale.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/device-offset.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/drunkard-tails.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/error-setters.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/extend-pad-border.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/extend-pad-similar.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/extend-pad.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/extend-reflect-similar.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/extend-reflect.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/extend-repeat-similar.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/extend-repeat.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/extended-blend.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/fallback-resolution.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/fallback.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/fill-alpha-pattern.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/fill-alpha.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/fill-and-stroke-alpha-add.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/fill-and-stroke-alpha.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/fill-and-stroke.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/fill-degenerate-sort-order.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/fill-disjoint.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/fill-empty.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/fill-image.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/fill-missed-stop.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/fill-rule.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/filter-bilinear-extents.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/filter-nearest-offset.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/filter-nearest-transformed.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/finer-grained-fallbacks.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/font-face-get-type.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/font-matrix-translation.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/font-options.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/ft-font-create-for-ft-face.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/ft-show-glyphs-positioning.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/ft-show-glyphs-table.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/ft-text-antialias-none.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/ft-text-vertical-layout-type1.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/ft-text-vertical-layout-type3.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/generate_refs.sh (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/get-and-set.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/get-clip.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/get-group-target.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/get-path-extents.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/get-xrender-format.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/gl-device-release.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/gl-oversized-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/gl-surface-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/glyph-cache-pressure.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/gradient-alpha.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/gradient-constant-alpha.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/gradient-zero-stops-mask.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/gradient-zero-stops.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/group-clip.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/group-paint.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/group-state.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/group-unaligned.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/half-coverage.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/halo.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/hatchings.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/horizontal-clip.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/huge-linear.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/huge-radial.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/image-bug-710072.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/image-surface-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/imagediff.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/implicit-close.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/in-fill-empty-trapezoid.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/in-fill-trapezoid.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/index.html (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/infinite-join.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/invalid-matrix.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/inverse-text.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/inverted-clip.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/joins-loop.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/joins-retrace.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/joins-star.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/joins.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/jp2.jp2 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/jpeg.jpg (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/large-clip.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/large-font.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/large-source-roi.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/large-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/large-twin-antialias-mixed.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/leaky-dash.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/leaky-dashed-rectangle.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/leaky-dashed-stroke.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/leaky-polygon.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/line-width-large-overlap.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/line-width-overlap.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/line-width-scale.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/line-width-tolerance.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/line-width-zero.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/line-width.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/linear-gradient-extend.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/linear-gradient-large.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/linear-gradient-one-stop.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/linear-gradient-reflect.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/linear-gradient-subset.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/linear-gradient.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/linear-step-function.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/linear-uniform.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/long-dashed-lines.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/long-lines.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/make-cairo-test-constructors.sh (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/map-to-image.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/mask-alpha.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/mask-ctm.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/mask-glyphs.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/mask-surface-ctm.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/mask-transformed-image.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/mask-transformed-similar.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/mask.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/mesh-pattern-accuracy.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/mesh-pattern-conical.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/mesh-pattern-control-points.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/mesh-pattern-fold.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/mesh-pattern-overlap.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/mesh-pattern-transformed.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/mesh-pattern.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/mime-data.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/mime-surface-api.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/miter-precision.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/move-to-show-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/multi-page.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/negative-stride-image.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/new-sub-path.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/nil-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/operator-alpha-alpha.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/operator-alpha.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/operator-clear.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/operator-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/operator.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/outline-tolerance.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/over-above-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/over-around-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/over-below-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/over-between-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/overlapping-boxes.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/overlapping-dash-caps.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/overlapping-glyphs.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/paint-clip-fill.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/paint-repeat.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/paint-source-alpha.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/paint-with-alpha.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/paint.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/partial-clip-text.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/partial-coverage.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pass-through.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/path-append.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/path-precision.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/path-stroke-twice.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pattern-get-type.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pattern-getters.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdf-features.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdf-isolated-group.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdf-mime-data.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdf-surface-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdf2png.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdiff/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdiff/CMakeLists.txt (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdiff/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdiff/Makefile.win32 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdiff/README.txt (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdiff/args.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdiff/args.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdiff/gpl.txt (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdiff/lpyramid.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdiff/lpyramid.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdiff/pdiff.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdiff/pdiff.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pdiff/perceptualdiff.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pixman-rotate.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/png-flatten.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/png.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/png.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/ps-eps.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/ps-features.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/ps-surface-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/ps2png.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pthread-same-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pthread-show-text.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/pthread-similar.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/push-group-color.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/push-group-path-offset.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/push-group.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/quartz-surface-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/radial-gradient-extend.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/radial-gradient.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/radial-outer-focus.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/random-clips.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/random-intersections-curves-eo.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/random-intersections-curves-nz.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/random-intersections-eo.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/random-intersections-nonzero.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/raster-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/record-extend.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/record-mesh.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/record.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/record1414x.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/record2x.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/record90.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/recordflip.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/recording-surface-extend.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/recording-surface-pattern.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/rectangle-rounding-error.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/rectilinear-dash-scale.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/rectilinear-dash.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/rectilinear-fill.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/rectilinear-grid.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/rectilinear-miter-limit.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/rectilinear-stroke.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-bug.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-bug.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-bug.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-bug.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-bug.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-bug.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-bug.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-bug.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-bug.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-clip-fill-equal.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-clip-fill-equal.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-clip-fill-equal.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-clip-fill-rule.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-clip-fill-rule.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-clip-fill-rule.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-clip-fill-rule.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-clip-fill.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-clip-fill.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-clip-fill.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-clip-paint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-clip-paint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-clip-paint.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-clip-stroke.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-clip-stroke.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-clip-stroke.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-fill.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-fill.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-fill.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-image-sample.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-image-sample.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-image-sample.gl.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-image-sample.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-line-width.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-line-width.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-line-width.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-line-width.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-line-width.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-mask-sample.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-mask-sample.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-mask-sample.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-mask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-mask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-mask.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-rasterisation-rectangles.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-rasterisation-rectangles.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-rasterisation-rectangles.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-rasterisation-rectangles.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-rasterisation-triangles.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-rasterisation-triangles.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-rasterisation-triangles.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-rasterisation-triangles.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-rectilinear-grid.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-rectilinear-grid.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-rectilinear-grid.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-sample.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-sample.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-sample.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-tiger.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-tiger.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-tiger.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-tiger.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-tiger.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-tiger.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-tiger.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-traps-sample.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-traps-sample.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-traps-sample.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a1-traps-sample.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a8-clear.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a8-clear.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a8-clear.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a8-clear.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a8-clear.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a8-clear.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a8-clear.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a8-mask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a8-mask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/a8-mask.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/aliasing.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/aliasing.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/aliasing.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/aliasing.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/aliasing.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/aliasing.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/aliasing.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/aliasing.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/alpha-similar.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/alpha-similar.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/alpha-similar.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/alpha-similar.gl.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/alpha-similar.gl.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/alpha-similar.pdf.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/alpha-similar.pdf.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/alpha-similar.ps.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/alpha-similar.ps.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/alpha-similar.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/alpha-similar.svg.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/alpha-similar.svg.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/api-special-cases.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/api-special-cases.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/api-special-cases.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-direction.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-direction.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-direction.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-direction.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-direction.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-direction.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-infinite-loop.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-infinite-loop.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-infinite-loop.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-looping-dash.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-looping-dash.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-looping-dash.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-looping-dash.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-looping-dash.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-looping-dash.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-looping-dash.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/arc-looping-dash.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-empty-box.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-empty-box.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-empty-box.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-empty-box.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-empty-triangle.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-empty-triangle.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-empty-triangle.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-empty-triangle.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-line.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-line.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-line.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-line.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-line.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-line.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-line.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-line.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-line.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-little-box.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-little-box.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-little-box.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-little-box.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-little-triangle.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-little-triangle.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-little-triangle.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-little-triangle.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-little-triangle.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-little-triangle.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-trap.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-trap.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-trap.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-trap.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-trap.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/big-trap.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bilevel-image.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bilevel-image.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bilevel-image.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bilevel-xlib-fallback.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bilevel-xlib-window.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bilevel-xlib.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bilevel-xlib.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bitmap-font.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bitmap-font.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bitmap-font.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bitmap-font.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-40410.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-40410.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-40410.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-40410.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-40410.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-40410.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-51910.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-bo-collins.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-bo-rectangular.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-bo-rectangular.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-bo-rectangular.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-bo-rectangular.ps.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-bo-rectangular.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-bo-ricotz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-bo-ricotz.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-bo-ricotz.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-bo-ricotz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-bo-ricotz.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-extents.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-extents.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-extents.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-extents.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-extents.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-extents.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-extents.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-extents.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-extents.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-seams.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-seams.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-seams.image.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-seams.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-seams.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-seams.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-seams.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-seams.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-seams.xlib-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-source-cu.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-source-cu.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-source-cu.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-source-cu.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/bug-spline.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-05.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-05.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-1.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-1.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-2.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-05.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-05.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-1.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-1.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-2.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-alpha.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-alpha.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-alpha.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-alpha.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-alpha.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-alpha.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-alpha.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-curve.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-curve.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-curve.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-curve.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-curve.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-curve.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-curve.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins-curve.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-joins.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-sub-paths.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-sub-paths.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-sub-paths.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-sub-paths.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-sub-paths.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-sub-paths.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-sub-paths.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-sub-paths.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-tails-curve.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-tails-curve.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-tails-curve.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-tails-curve.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-tails-curve.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-tails-curve.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps-tails-curve.xcb.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/caps.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/checkerboard.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/checkerboard.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/checkerboard.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear-source.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear-source.pdf.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear-source.ps.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear-source.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear-source.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear.ps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear.svg12.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clear.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-all.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-all.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-all.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-complex-bug61492.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-complex-shape-eo-aa.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-complex-shape-eo-aa.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-complex-shape-eo-aa.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-complex-shape-eo-mono.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-complex-shape-eo-mono.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-complex-shape-eo-mono.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-contexts.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-contexts.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-contexts.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-device-offset.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-device-offset.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-device-offset.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-device-offset.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint-hatching.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint-hatching.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint-hatching.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint-hatching.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint-hatching.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint-hatching.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint-hatching.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint-hatching.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint-quad.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint-quad.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-disjoint.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-empty-group.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-empty-group.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-empty-group.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-empty-save.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-empty-save.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-empty-save.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-empty.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-empty.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-empty.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-eo-unbounded.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-eo-unbounded.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-eo-unbounded.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-eo-unbounded.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-eo-unbounded.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-eo-unbounded.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-eo-unbounded.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-eo-unbounded.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-eo-unbounded.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-eo-unbounded.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-eo-unbounded.xlib-fallback.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-no-op.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-no-op.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-no-op.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-no-op.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-nz-unbounded.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-nz-unbounded.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-nz-unbounded.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-nz-unbounded.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-nz-unbounded.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-nz-unbounded.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-nz-unbounded.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-nz-unbounded.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-nz-unbounded.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-nz-unbounded.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-nz-unbounded.xlib-fallback.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-rule-pixel-aligned.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-rule-pixel-aligned.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-rule-pixel-aligned.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-rule-pixel-aligned.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-rule.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-rule.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-rule.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-rule.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-rule.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-rule.ps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-rule.ps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-rule.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-rule.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-rule.test-paginated.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-rule.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill-rule.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill.ps.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-fill.xlib-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-aligned-rectangles.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-aligned-rectangles.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-aligned-rectangles.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-circles.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-circles.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-circles.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-circles.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-circles.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-circles.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-circles.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-circles.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-circles.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-circles.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-unaligned-rectangles.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-image.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-image.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-image.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-image.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-image.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-image.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-image.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-image.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-image.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-image.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-intersect.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-intersect.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-intersect.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-intersect.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-intersect.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-intersect.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-mixed-antialias.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-mixed-antialias.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-mixed-antialias.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-mixed-antialias.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-mixed-antialias.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-mixed-antialias.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-nesting.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-nesting.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-nesting.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-nesting.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-nesting.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-nesting.ps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-nesting.ps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-nesting.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-nesting.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-nesting.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-nesting.test-paginated.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-nesting.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-nesting.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.gl.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.pdf.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.ps2.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.svg12.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.test-paginated.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-operator.xlib-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-polygons.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-polygons.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-polygons.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-polygons.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-polygons.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-polygons.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-polygons.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-push-group.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-push-group.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-push-group.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-push-group.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-push-group.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-push-group.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-push-group.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-push-group.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-push-group.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-push-group.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-push-group.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-rectilinear.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-rectilinear.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-rectilinear.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-rectilinear.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-rectilinear.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-rectilinear.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-rotate-image-surface-paint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-rotate-image-surface-paint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-rotate-image-surface-paint.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-shape.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-shape.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-shape.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-shape.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-shape.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-shape.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-shape.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-shape.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-shape.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-shape.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-shape.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-shape.xlib-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-no-op.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-no-op.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-no-op.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-no-op.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-unbounded.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-unbounded.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-unbounded.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-unbounded.image16.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-unbounded.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-unbounded.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-unbounded.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-unbounded.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-unbounded.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-unbounded.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-unbounded.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-unbounded.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke-unbounded.xlib-fallback.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke.ps.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-stroke.xlib-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-text.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-text.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-text.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-text.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-text.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-text.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-text.ps.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-text.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-text.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-text.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-text.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-text.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice-rectangle.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice-rectangle.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice-rectangle.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice.ps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice.ps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice.test-paginated.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice.test-paginated.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-twice.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-unbounded.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-unbounded.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-unbounded.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-unbounded.pdf.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-unbounded.pdf.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-unbounded.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-unbounded.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-xlib-fallback.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-xlib-window.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-xlib.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clip-xlib.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-group.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-group.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-group.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-group.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-group.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-group.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-group.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-group.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-group.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-group.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-group.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-group.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-group.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-group.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-group.xlib-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-surface.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-surface.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-surface.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-surface.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/clipped-trapezoids.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path-current-point.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path-current-point.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path-current-point.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path-current-point.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path-current-point.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path-current-point.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path-current-point.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path-current-point.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path-current-point.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/close-path.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-over-repeat.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-over-repeat.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-over-repeat.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-over-repeat.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-over-repeat.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-over.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-over.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-over.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-over.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-over.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-over.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-source.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-source.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-source.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-source.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-source.svg12.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/composite-integer-translate-source.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/copy-disjoint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/copy-disjoint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/copy-disjoint.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/copy-path.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/copy-path.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/copy-path.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/copy-path.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/copy-path.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/copy-path.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/copy-path.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/copy-path.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/coverage-column-triangles.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/coverage-column-triangles.xlib.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/coverage-intersecting-quads.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/coverage-intersecting-quads.xlib.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/coverage-intersecting-triangles.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/coverage-intersecting-triangles.xlib.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/coverage-rectangles.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/coverage-rectangles.xlib.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/coverage-row-triangles.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/coverage-row-triangles.xlib.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/coverage-triangles.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/coverage-triangles.xlib.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/create-from-png-stream.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/create-from-png-stream.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/create-from-png-stream.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/create-from-png.alpha.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/create-from-png.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/create-from-png.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/create-from-png.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/create-from-png.gray-alpha.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/create-from-png.gray.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/create-from-png.indexed-alpha.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/create-from-png.indexed.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/create-from-png.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/create-from-png.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/create-from-png.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/create-from-png.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/create-from-png.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/culled-glyphs.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/culled-glyphs.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/culled-glyphs.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/culled-glyphs.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/culled-glyphs.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/culled-glyphs.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/culled-glyphs.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/curve-to-as-line-to.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/curve-to-as-line-to.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/curve-to-as-line-to.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/curve-to-as-line-to.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/curve-to-as-line-to.ps.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/curve-to-as-line-to.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/curve-to-as-line-to.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/curve-to-as-line-to.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-caps-joins.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-caps-joins.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-caps-joins.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-caps-joins.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-caps-joins.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-caps-joins.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-caps-joins.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-caps-joins.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-caps-joins.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-caps-joins.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-curve.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-curve.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-curve.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-curve.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-curve.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-curve.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-curve.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-curve.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-curve.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-infinite-loop.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-infinite-loop.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-infinite-loop.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-infinite-loop.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-infinite-loop.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-infinite-loop.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-infinite-loop.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-no-dash.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-no-dash.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-no-dash.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-offset-negative.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-offset-negative.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-offset-negative.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-offset-negative.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-offset-negative.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-offset-negative.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-offset-negative.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-offset.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-offset.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-offset.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-scale.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-scale.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-scale.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-scale.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-scale.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-scale.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-scale.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-scale.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-state.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-state.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-state.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-state.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-state.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-state.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-state.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-state.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-state.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-state.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-zero-length.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-zero-length.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-zero-length.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-zero-length.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-zero-length.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-zero-length.ps2.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-zero-length.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-zero-length.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-zero-length.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-zero-length.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/dash-zero-length.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-arc.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-arc.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-arc.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-arc.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-arc.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-arc.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-arc.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-arc.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-arc.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-arc.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-arc.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-arcs.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-arcs.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-arcs.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-arcs.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-curve-to.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-curve-to.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-curve-to.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-curve-to.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-curve-to.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-curve-to.ps.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-curve-to.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-curve-to.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-curve-to.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-curve-to.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-dash.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-dash.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-dash.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-dash.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-dash.ps.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-dash.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-dash.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-dash.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-dash.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-linear-gradient.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-linear-gradient.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-linear-gradient.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-linear-gradient.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-path.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-path.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-path.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-path.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-path.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-path.ps.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-path.ps.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-path.quartz.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-path.quartz.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-path.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-path.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-path.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-pen.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-pen.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-pen.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-pen.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-pen.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-pen.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-pen.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-pen.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-radial-gradient.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-radial-gradient.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-radial-gradient.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-rel-curve-to.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-rel-curve-to.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-rel-curve-to.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-rel-curve-to.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-rel-curve-to.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-rel-curve-to.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-rel-curve-to.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-rel-curve-to.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-rel-curve-to.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/degenerate-solid-dash.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset-fractional.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset-fractional.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset-fractional.gl.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset-fractional.pdf.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset-fractional.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset-fractional.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset-fractional.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset-positive.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset-positive.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset-positive.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset-positive.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset-scale.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset-scale.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset-scale.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset-scale.svg.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/device-offset.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/drunkard-tails.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/drunkard-tails.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/drunkard-tails.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/drunkard-tails.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/drunkard-tails.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/drunkard-tails.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/drunkard-tails.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/drunkard-tails.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad-border.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad-border.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad-border.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad-border.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad-border.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad-border.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad-border.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad-border.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad-border.svg.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad-similar.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad-similar.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad-similar.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad-similar.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad-similar.svg.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-pad.svg.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-reflect-similar.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-reflect-similar.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-reflect-similar.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-reflect-similar.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-reflect-similar.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-reflect-similar.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-reflect.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-reflect.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-reflect.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-reflect.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-reflect.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-reflect.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-repeat-similar.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-repeat-similar.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-repeat-similar.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-repeat-similar.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-repeat-similar.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-repeat-similar.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-repeat.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-repeat.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-repeat.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-repeat.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-repeat.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extend-repeat.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-alpha-mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-alpha-mask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-alpha-mask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-alpha-mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-alpha.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-alpha.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-alpha.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-alpha.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-alpha.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-alpha.svg12.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-alpha.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-mask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-mask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-solid-alpha.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-solid-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-solid-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-solid-alpha.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-solid-alpha.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-solid.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-solid.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-solid.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-solid.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend-solid.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend.svg12.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/extended-blend.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi144x144.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi144x144.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi144x72.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi144x72.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi288x288.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi288x288.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi288x288.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi288x72.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi288x72.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi576x576.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi576x576.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi576x576.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi576x72.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi576x72.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi72x144.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi72x144.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi72x288.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi72x288.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi72x576.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi72x576.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback-resolution.ppi72x72.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback.image16.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fallback.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha-pattern.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha-pattern.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha-pattern.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha-pattern.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha-pattern.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha-pattern.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha-pattern.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha-pattern.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha-pattern.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha-pattern.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha.ps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-alpha.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke-alpha-add.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke-alpha-add.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke-alpha-add.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke-alpha-add.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke-alpha-add.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke-alpha-add.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke-alpha-add.svg12.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke-alpha-add.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke-alpha-add.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke-alpha.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke-alpha.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke-alpha.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke-alpha.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke-alpha.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke.ps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke.ps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-and-stroke.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-degenerate-sort-order.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-degenerate-sort-order.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-degenerate-sort-order.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-degenerate-sort-order.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-degenerate-sort-order.ps.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-degenerate-sort-order.ps.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-degenerate-sort-order.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-degenerate-sort-order.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-degenerate-sort-order.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-degenerate-sort-order.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-degenerate-sort-order.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-disjoint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-disjoint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-disjoint.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-empty.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-empty.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-empty.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-empty.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-empty.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-image.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-image.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-image.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-image.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-image.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-image.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-image.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-image.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-image.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-missed-stop.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-missed-stop.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-missed-stop.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-missed-stop.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-missed-stop.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-missed-stop.ps2.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-missed-stop.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-missed-stop.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-missed-stop.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-missed-stop.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-missed-stop.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-rule.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-rule.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-rule.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-rule.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-rule.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-rule.ps2.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-rule.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-rule.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-rule.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-rule.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-rule.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-rule.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-rule.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-xlib-fallback.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-xlib-window.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-xlib.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/fill-xlib.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-bilinear-extents.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-bilinear-extents.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-bilinear-extents.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-bilinear-extents.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-bilinear-extents.pdf.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-bilinear-extents.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-bilinear-extents.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-bilinear-extents.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-bilinear-extents.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-nearest-offset.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-nearest-offset.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-nearest-offset.gl.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-nearest-offset.pdf.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-nearest-offset.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-nearest-offset.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-nearest-offset.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-nearest-offset.svg.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-nearest-transformed.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-nearest-transformed.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-nearest-transformed.gl.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-nearest-transformed.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-nearest-transformed.pdf.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-nearest-transformed.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-nearest-transformed.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/filter-nearest-transformed.svg.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.gl.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.ps2.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.svg12.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.svg12.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/finer-grained-fallbacks.xlib-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/font-matrix-translation.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/font-matrix-translation.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/font-matrix-translation.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/font-matrix-translation.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/font-matrix-translation.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/font-matrix-translation.ps2.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/font-matrix-translation.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/font-matrix-translation.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/font-matrix-translation.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/font-matrix-translation.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/font-matrix-translation.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/font-matrix-translation.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-positioning.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-positioning.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-positioning.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-positioning.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-positioning.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-positioning.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-positioning.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-positioning.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-table.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-table.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-table.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-table.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-table.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-table.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-table.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-table.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-table.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-show-glyphs-table.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-antialias-none.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-antialias-none.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-antialias-none.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-antialias-none.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-antialias-none.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type1.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type1.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type1.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type1.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type1.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type1.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type1.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type1.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type1.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type1.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type1.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type1.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type3.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type3.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type3.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type3.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type3.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type3.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type3.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type3.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ft-text-vertical-layout-type3.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/get-group-target.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/get-group-target.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/get-group-target.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gl-surface-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gl-surface-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gl-surface-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gl-surface-source.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gl-surface-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/glyph-cache-pressure.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/glyph-cache-pressure.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/glyph-cache-pressure.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/glyph-cache-pressure.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/glyph-cache-pressure.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/glyph-cache-pressure.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/glyph-cache-pressure.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/glyph-cache-pressure.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/glyph-cache-pressure.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-alpha.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-alpha.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-alpha.ps2.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-alpha.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-alpha.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-alpha.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-constant-alpha.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-constant-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-constant-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-constant-alpha.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-constant-alpha.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-constant-alpha.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-constant-alpha.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-zero-stops-mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-zero-stops-mask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-zero-stops-mask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-zero-stops-mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-zero-stops.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-zero-stops.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-zero-stops.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/gradient-zero-stops.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-clip.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-clip.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-paint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-paint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-paint.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-unaligned.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-unaligned.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-unaligned.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-unaligned.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-unaligned.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-unaligned.ps.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-unaligned.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-unaligned.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-unaligned.svg.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-unaligned.svg.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-unaligned.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-unaligned.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/group-unaligned.xlib-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo-transform.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo-transform.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo-transform.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo-transform.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo-transform.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo-transform.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo-transform.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo-transform.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/halo.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/hatchings.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/hatchings.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/hatchings.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/hatchings.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/hatchings.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/hatchings.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/hatchings.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/horizontal-clip.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/horizontal-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/horizontal-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/horizontal-clip.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/huge-linear.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/huge-linear.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/huge-linear.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/huge-linear.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/huge-linear.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/huge-linear.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/huge-linear.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/huge-linear.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/huge-radial.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/huge-radial.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/huge-radial.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/huge-radial.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/huge-radial.pdf.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/huge-radial.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/huge-radial.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/huge-radial.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-bug-710072-aligned.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-bug-710072-aligned.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-bug-710072-aligned.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-bug-710072-unaligned.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-bug-710072-unaligned.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-bug-710072-unaligned.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-bug-710072-unaligned.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-bug-710072-unaligned.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-bug-710072-unaligned.xlib-fallback.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-bug-710072-unaligned.xlib-window.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-surface-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-surface-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-surface-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-surface-source.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-surface-source.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-surface-source.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-surface-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-surface-source.svg12.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/image-surface-source.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/implicit-close.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/implicit-close.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/implicit-close.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/implicit-close.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/implicit-close.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/implicit-close.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/infinite-join.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/infinite-join.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/infinite-join.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/infinite-join.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/infinite-join.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/infinite-join.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/infinite-join.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/infinite-join.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/inverse-text.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/inverse-text.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/inverse-text.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/inverse-text.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/inverse-text.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/inverted-clip.base.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/inverted-clip.traps.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/inverted-clip.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-loop.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-loop.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-loop.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-loop.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-loop.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-loop.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-retrace.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-retrace.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-retrace.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-retrace.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-retrace.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-retrace.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-retrace.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-star.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-star.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-star.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-star.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-star.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins-star.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/joins.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-clip.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-font.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-font.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-font.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-font.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-source-roi.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-source-roi.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-source-roi.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-source.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-twin-antialias-mixed.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-twin-antialias-mixed.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-twin-antialias-mixed.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-twin-antialias-mixed.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dash.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dash.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dash.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dash.ps2.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dash.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dash.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dash.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dash.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-rectangle.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-rectangle.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-rectangle.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-rectangle.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-rectangle.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-rectangle.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-rectangle.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-rectangle.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-rectangle.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-stroke.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-stroke.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-stroke.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-stroke.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-stroke.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-stroke.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-stroke.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-stroke.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-dashed-stroke.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-polygon.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-polygon.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-polygon.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-polygon.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-polygon.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-polygon.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-polygon.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/leaky-polygon.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-dashed.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-dashed.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-flipped.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-flipped.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-flopped.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-flopped.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-offset.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-offset.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-offset.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-rotated.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-rotated.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-rotated.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap-rotated.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-large-overlap.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-dashed.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-dashed.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-dashed.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-dashed.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-dashed.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-dashed.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-dashed.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-flipped.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-flipped.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-flipped.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-flopped.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-flopped.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-flopped.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-offset.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-offset.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-offset.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-offset.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-rotated.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-rotated.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-rotated.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-rotated.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-rotated.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap-rotated.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-overlap.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-scale.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-scale.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-scale.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-scale.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-scale.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-scale.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-scale.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-scale.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-scale.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-scale.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-tolerance.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-tolerance.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-tolerance.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-tolerance.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-tolerance.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width-tolerance.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/line-width.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-extend.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-extend.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-extend.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-large.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-large.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-large.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-large.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-one-stop.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-one-stop.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-one-stop.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-one-stop.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-reflect.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-reflect.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-reflect.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-reflect.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-reflect.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-reflect.pdf.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-reflect.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-reflect.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-reflect.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-subset.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-subset.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-subset.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-subset.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-subset.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-subset.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-subset.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-subset.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient-subset.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-gradient.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-step-function.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-step-function.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-step-function.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-step-function.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-step-function.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-step-function.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-step-function.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-uniform.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-uniform.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-uniform.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/linear-uniform.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/long-dashed-lines.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/long-dashed-lines.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/long-dashed-lines.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/long-dashed-lines.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/long-dashed-lines.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/long-dashed-lines.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/long-dashed-lines.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/long-dashed-lines.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/long-dashed-lines.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/long-dashed-lines.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/long-lines.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/long-lines.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/long-lines.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/long-lines.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/long-lines.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/long-lines.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-all-to-image.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-all-to-image.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-all-to-image.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-all-to-xlib-fallback.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-all-to-xlib-window.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-all-to-xlib.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-all-to-xlib.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-bit-to-image.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-bit-to-image.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-bit-to-image.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-bit-to-xlib-fallback.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-bit-to-xlib-window.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-bit-to-xlib.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-bit-to-xlib.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-to-image-fill.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-to-image-fill.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/map-to-image-fill.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-alpha.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-alpha.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-alpha.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-alpha.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-alpha.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-alpha.svg.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-alpha.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-alpha.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-ctm.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-ctm.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-ctm.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-ctm.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-glyphs.gl.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-glyphs.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-glyphs.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-glyphs.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-glyphs.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-surface-ctm.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-surface-ctm.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-surface-ctm.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-surface-ctm.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-image.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-image.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-image.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-image.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-image.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-image.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-image.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-similar.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-similar.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-similar.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-similar.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-similar.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-similar.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-similar.recording.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-similar.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-similar.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-xlib-fallback.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-xlib-window.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-xlib.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask-transformed-xlib.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask.pdf.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask.svg.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask.svg.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mask.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-accuracy.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-accuracy.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-accuracy.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-accuracy.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-conical.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-conical.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-conical.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-conical.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-control-points.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-control-points.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-control-points.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-control-points.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-fold.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-fold.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-fold.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-fold.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-overlap.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-overlap.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-overlap.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-overlap.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-transformed.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-transformed.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-transformed.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern-transformed.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mesh-pattern.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mime-data.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mime-data.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mime-data.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mime-data.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mime-data.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mime-data.script.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/mime-data.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/miter-precision.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/miter-precision.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/miter-precision.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/miter-precision.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/miter-precision.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/miter-precision.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/miter-precision.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/miter-precision.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/move-to-show-surface.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/move-to-show-surface.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/move-to-show-surface.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/negative-stride-image.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/negative-stride-image.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/negative-stride-image.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/negative-stride-image.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/negative-stride-image.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/new-sub-path.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/new-sub-path.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/new-sub-path.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/new-sub-path.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/new-sub-path.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/new-sub-path.ps2.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/new-sub-path.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/new-sub-path.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/new-sub-path.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/new-sub-path.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/new-sub-path.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/new-sub-path.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/nil-surface.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/nil-surface.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/nil-surface.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/nil-surface.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-alpha-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-alpha-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-alpha-alpha.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-alpha-alpha.pdf.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-alpha-alpha.ps.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-alpha-alpha.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-alpha-alpha.svg.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-alpha-alpha.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-alpha-alpha.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-alpha.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-alpha.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-alpha.svg12.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-alpha.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-clear.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-clear.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-clear.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-clear.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-clear.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-clear.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-clear.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-clear.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-clear.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-clear.svg12.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-clear.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-clear.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-clear.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-source.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-source.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-source.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-source.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-source.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator-source.xlib-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator.svg12.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/operator.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/outline-tolerance.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-above-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-above-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-above-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-above-source.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-above-source.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-above-source.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-above-source.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-above-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-above-source.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-above-source.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-above-source.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-around-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-around-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-around-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-around-source.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-around-source.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-around-source.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-around-source.ps2.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-around-source.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-around-source.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-around-source.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-around-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-around-source.svg12.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-around-source.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-around-source.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-around-source.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-below-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-below-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-below-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-below-source.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-below-source.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-below-source.ps2.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-below-source.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-below-source.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-below-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-below-source.svg12.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-below-source.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-below-source.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-below-source.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-between-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-between-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-between-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-between-source.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-between-source.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-between-source.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-between-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-between-source.svg12.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-between-source.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-between-source.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/over-between-source.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-boxes.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-boxes.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-boxes.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-boxes.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-boxes.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-boxes.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-dash-caps.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-dash-caps.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-dash-caps.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-dash-caps.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-dash-caps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-dash-caps.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-dash-caps.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-glyphs.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-glyphs.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-glyphs.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-glyphs.pdf.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-glyphs.pdf.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-glyphs.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-glyphs.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-glyphs.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-glyphs.svg.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-glyphs.svg.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-glyphs.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/overlapping-glyphs.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-clip-fill-aa.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-clip-fill-aa.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-clip-fill-aa.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-clip-fill-mono.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-clip-fill-mono.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-clip-fill-mono.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-repeat.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-repeat.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-repeat.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-source-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-source-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-source-alpha.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-source-alpha.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-source-alpha.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-clip-mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-clip-mask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-clip-mask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-clip-mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-clip-mask.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-clip-mask.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-clip.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-clip.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-clip.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-clip.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-clip.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-solid-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-solid-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-solid-clip.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-solid-clip.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha-solid-clip.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint-with-alpha.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/paint.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-bottom.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-bottom.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-bottom.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-bottom.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-left.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-left.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-left.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-left.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-right.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-right.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-right.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-right.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-right.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-top.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-top.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-top.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-top.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-top.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-top.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-top.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-clip-text-top.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-half-reference.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-half-reference.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-half-reference.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-half-triangles.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-intersecting-quads.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-intersecting-quads.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-intersecting-triangles.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-overlap-half-triangles-eo.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-overlap-half-triangles.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-overlap-three-quarter-triangles.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-rectangles.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-reference.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-reference.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-reference.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-three-quarter-reference.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-three-quarter-reference.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-three-quarter-reference.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/partial-coverage-triangles.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pass-through.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pass-through.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pass-through.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pass-through.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-append.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-append.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-append.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-append.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-append.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-append.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-append.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-append.test-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-append.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-append.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-append.xlib-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-stroke-twice.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-stroke-twice.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-stroke-twice.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-stroke-twice.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-stroke-twice.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-stroke-twice.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-stroke-twice.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/path-stroke-twice.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pattern-getters.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pattern-getters.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pattern-getters.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pdf-isolated-group.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pdf-isolated-group.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pdf-isolated-group.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pdf-surface-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pdf-surface-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pdf-surface-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pdf-surface-source.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pdf-surface-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pdf-surface-source.svg12.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pdf-surface-source.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pixman-rotate.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pixman-rotate.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pixman-rotate.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pixman-rotate.ps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pixman-rotate.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ps-eps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ps-surface-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ps-surface-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ps-surface-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ps-surface-source.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ps-surface-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ps-surface-source.svg12.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/ps-surface-source.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-same-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-same-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-same-source.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-same-source.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-same-source.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-show-text.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-show-text.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-show-text.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-show-text.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-show-text.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-show-text.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-show-text.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-show-text.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-show-text.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-show-text.xlib-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-similar.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-similar.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/pthread-similar.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group-color.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group-color.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group-color.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group-color.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group-color.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group-color.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group-color.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group-color.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group-color.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group-color.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group-path-offset.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group-path-offset.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group-path-offset.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/push-group.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/quartz-surface-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/quartz-surface-source.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/quartz-surface-source.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/quartz-surface-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-extend.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-extend.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-extend.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-extend.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-extend.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-extend.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-extend.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-extend.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-mask-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-mask-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-mask-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-mask-source.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-mask-source.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-mask-source.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-mask-source.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-mask-source.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-mask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-mask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-mask.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-mask.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-mask.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-one-stop.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-one-stop.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-one-stop.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-one-stop.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-source.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-source.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-source.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-gradient.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-outer-focus.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-outer-focus.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-outer-focus.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-outer-focus.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-outer-focus.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-outer-focus.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/radial-outer-focus.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-clip.base.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-clip.base.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-clip.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-clip.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-clip.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-clip.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-clip.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-eo.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-eo.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-eo.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-eo.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-eo.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-eo.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-eo.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-eo.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-eo.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-eo.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-eo.xlib-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-nz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-nz.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-nz.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-nz.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-nz.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-nz.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-nz.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-nz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-nz.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-nz.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-curves-nz.xlib-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-eo.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-eo.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-eo.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-eo.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-eo.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-eo.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-eo.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-eo.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-eo.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-nonzero.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-nonzero.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-nonzero.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-nonzero.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-nonzero.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-nonzero.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-nonzero.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-nonzero.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/random-intersections-nonzero.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/raster-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/raster-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/raster-source.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/raster-source.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-none-similar.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-none-similar.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-none-similar.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-none-similar.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-none-similar.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-none.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-none.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-none.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-pad-similar.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-pad-similar.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-pad-similar.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-pad-similar.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-pad-similar.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-pad.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-pad.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-pad.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-reflect-similar.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-reflect-similar.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-reflect-similar.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-reflect-similar.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-reflect-similar.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-reflect.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-reflect.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-reflect.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-repeat-similar.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-repeat-similar.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-repeat-similar.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-repeat-similar.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-repeat-similar.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-repeat.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-repeat.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-extend-repeat.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-fill-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-fill-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-fill-alpha.base.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-fill-alpha.image16.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-fill-alpha.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-fill-alpha.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-fill-alpha.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-fill-alpha.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-mesh.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-mesh.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-mesh.image16.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-mesh.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-clip-mask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-clip-mask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-clip-mask.base.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-clip-mask.image16.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-clip-mask.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-clip-mask.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-clip-mask.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-clip-mask.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-clip.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-clip.image16.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-clip.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-clip.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-clip.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-solid-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-solid-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-solid-clip.image16.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-solid-clip.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-solid-clip.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha-solid-clip.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha.image16.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint-alpha.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-paint.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-select-font-face.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-select-font-face.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-select-font-face.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-select-font-face.image16.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-select-font-face.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-select-font-face.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-self-intersecting.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-self-intersecting.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-self-intersecting.image16.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-self-intersecting.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-text-transform.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-text-transform.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-text-transform.image16.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record-text-transform.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-fill-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-fill-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-fill-alpha.base.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-fill-alpha.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-fill-alpha.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint-alpha-clip-mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint-alpha-clip-mask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint-alpha-clip-mask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint-alpha-clip-mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint-alpha-clip.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint-alpha-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint-alpha-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint-alpha-clip.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint-alpha-solid-clip.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint-alpha-solid-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint-alpha-solid-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint-alpha-solid-clip.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint-alpha.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint-alpha.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-paint.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-select-font-face.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-select-font-face.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-select-font-face.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-select-font-face.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-self-intersecting.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-self-intersecting.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-self-intersecting.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-self-intersecting.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-text-transform.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-text-transform.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record1414x-text-transform.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-fill-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-fill-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-fill-alpha.base.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-fill-alpha.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-fill-alpha.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint-alpha-clip-mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint-alpha-clip-mask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint-alpha-clip-mask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint-alpha-clip-mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint-alpha-clip.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint-alpha-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint-alpha-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint-alpha-clip.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint-alpha-solid-clip.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint-alpha-solid-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint-alpha-solid-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint-alpha-solid-clip.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint-alpha.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint-alpha.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-paint.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-select-font-face.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-select-font-face.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-select-font-face.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-select-font-face.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-self-intersecting.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-self-intersecting.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-self-intersecting.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-self-intersecting.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-text-transform.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-text-transform.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record2x-text-transform.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-fill-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-fill-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-fill-alpha.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-fill-alpha.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint-alpha-clip-mask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint-alpha-clip-mask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint-alpha-clip-mask.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint-alpha-clip-mask.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint-alpha-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint-alpha-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint-alpha-clip.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint-alpha-clip.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint-alpha-solid-clip.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint-alpha-solid-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint-alpha-solid-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint-alpha-solid-clip.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint-alpha.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint-alpha.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-paint.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-select-font-face.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-select-font-face.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-select-font-face.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-select-font-face.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-self-intersecting.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-self-intersecting.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-self-intersecting.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-text-transform.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-text-transform.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/record90-text-transform.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recordflip-fill-alpha.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recordflip-paint-alpha-clip-mask.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recordflip-paint-alpha-clip.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recordflip-paint-alpha-solid-clip.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recordflip-paint-alpha.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recordflip-paint.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recordflip-select-font-face.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recordflip-self-intersecting.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recordflip-text-transform.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-none.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-none.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-none.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-none.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-none.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-none.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-pad.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-pad.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-pad.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-pad.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-pad.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-pad.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-reflect.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-reflect.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-reflect.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-reflect.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-reflect.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-reflect.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-repeat.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-repeat.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-repeat.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-repeat.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-repeat.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-extend-repeat.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-over.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-over.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-over.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-over.gl.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-over.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-over.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-over.pdf.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-over.ps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-over.ps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-over.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-over.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-over.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-over.svg.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-over.svg.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-over.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-over.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-source.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/recording-surface-source.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectangle-rounding-error.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectangle-rounding-error.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectangle-rounding-error.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-dash-scale-unaligned.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-dash-scale-unaligned.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-dash-scale.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-dash.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-dash.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-dash.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-dash.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-dash.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-dash.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-dash.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-dash.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-fill.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-fill.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-fill.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-grid.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-grid.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-grid.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-grid.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-grid.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-grid.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-miter-limit.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-miter-limit.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-miter-limit.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-miter-limit.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-miter-limit.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-miter-limit.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-miter-limit.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-miter-limit.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-stroke.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-stroke.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-stroke.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rectilinear-stroke.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/reflected-stroke.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/reflected-stroke.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/reflected-stroke.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/reflected-stroke.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/reflected-stroke.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/reflected-stroke.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/reflected-stroke.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/reflected-stroke.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/reflected-stroke.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rel-path.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rel-path.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rel-path.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rel-path.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rel-path.ps2.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rel-path.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rel-path.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rel-path.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rel-path.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rgb24-ignore-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rgb24-ignore-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rgb24-ignore-alpha.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotate-clip-image-surface-paint.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotate-clip-image-surface-paint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotate-clip-image-surface-paint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotate-clip-image-surface-paint.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotate-clip-image-surface-paint.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotate-clip-image-surface-paint.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotate-clip-image-surface-paint.xlib-fallback.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotate-clip-image-surface-paint.xlib-window.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotate-image-surface-paint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotate-image-surface-paint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotate-image-surface-paint.pdf.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotate-image-surface-paint.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotate-image-surface-paint.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotate-image-surface-paint.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotate-image-surface-paint.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotate-image-surface-paint.svg.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotated-clip.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotated-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotated-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotated-clip.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotated-clip.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotated-clip.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotated-clip.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotated-clip.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotated-clip.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotated-clip.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rotated-clip.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-fill.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-fill.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-fill.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-fill.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-fill.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-fill.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-fill.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-fill.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-fill.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-stroke.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-stroke.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-stroke.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-stroke.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-stroke.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-stroke.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-stroke.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/rounded-rectangle-stroke.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/sample-diagonal.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/sample-horizontal.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/sample-vertical.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-down-source-surface-paint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-down-source-surface-paint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-down-source-surface-paint.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-image.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-image.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-image.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-image.gl.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-image.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-image.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-image.pdf.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-image.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-image.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-image.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-image.script.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-image.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-image.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-image.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-image.xlib-fallback.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.gl.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.pdf.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.recording.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.script.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.xlib-fallback.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-similar.xlib.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-xlib-fallback.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-xlib-window.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-xlib.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-offset-xlib.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-source-surface-paint.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-source-surface-paint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-source-surface-paint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-source-surface-paint.pdf.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-source-surface-paint.pdf.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-source-surface-paint.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-source-surface-paint.svg.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/scale-source-surface-paint.svg.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/select-font-face.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/select-font-face.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/select-font-face.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/select-font-face.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/select-font-face.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/select-font-face.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/select-font-face.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/select-font-face.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/select-font-face.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-copy-overlap.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-copy-overlap.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-copy-overlap.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-copy-overlap.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-copy-overlap.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-copy-overlap.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-copy.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-copy.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-copy.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-copy.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-copy.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-copy.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-copy.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-copy.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-intersecting.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-intersecting.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-intersecting.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-intersecting.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-intersecting.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-intersecting.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/self-intersecting.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/set-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/set-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/set-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/set-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-general-convex.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-general-convex.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-general-convex.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-general-convex.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-general-convex.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-general-convex.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-general-convex.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-sierpinski.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-sierpinski.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-sierpinski.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-sierpinski.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-sierpinski.pdf.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-sierpinski.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-sierpinski.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-sierpinski.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-sierpinski.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-sierpinski.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/shape-sierpinski.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-glyphs-advance.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-glyphs-advance.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-glyphs-advance.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-glyphs-advance.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-glyphs-advance.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-glyphs-advance.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-glyphs-advance.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-glyphs-advance.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-glyphs-advance.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-glyphs-many.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-glyphs-many.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-glyphs-many.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-text-current-point.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-text-current-point.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-text-current-point.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-text-current-point.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-text-current-point.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-text-current-point.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-text-current-point.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-text-current-point.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/show-text-current-point.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/skew-extreme.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/skew-extreme.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/skew-extreme.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/skew-extreme.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/skew-extreme.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/skew-extreme.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/skew-extreme.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/skew-extreme.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-fill.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-fill.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-fill.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-fill.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-fill.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-fill.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-fill.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-fill.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-fill.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-fill.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-image-mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-image-mask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-image-mask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-image-mask.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-image-mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-mask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-mask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-mask.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-mask.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-mask.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-mask.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-paint.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-paint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-paint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-paint.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-paint.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-paint.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-paint.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-paint.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-stroke.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-stroke.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-stroke.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-stroke.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-stroke.pdf.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-stroke.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-stroke.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-stroke.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-stroke.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-text.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-text.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-text.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-text.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-text.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-text.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-text.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-text.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-text.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-text.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-text.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-text.script.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-text.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-text.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask-text.xlib-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask.pdf.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask.script.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/smask.xlib-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/solid-pattern-cache-stress.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/solid-pattern-cache-stress.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/solid-pattern-cache-stress.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-clip-scale.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-clip-scale.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-clip-scale.gl.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-clip-scale.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-clip-scale.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-clip-scale.ps2.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-clip-scale.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-clip-scale.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-clip-scale.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-clip-scale.recording.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-clip-scale.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-clip-scale.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-clip.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-surface-scale-paint.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-surface-scale-paint.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-surface-scale-paint.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/source-surface-scale-paint.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/spline-decomposition.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/spline-decomposition.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/spline-decomposition.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/spline-decomposition.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/spline-decomposition.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/spline-decomposition.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/spline-decomposition.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/spline-decomposition.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/spline-decomposition.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/spline-decomposition.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/spline-decomposition.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stride-12-image.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stride-12-image.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stride-12-image.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stride-12-image.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stride-12-image.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stride-12-xlib-fallback.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stride-12-xlib-window.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stride-12-xlib.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stride-12-xlib.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-clipped.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-ctm-caps.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-ctm-caps.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-ctm-caps.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-ctm-caps.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-ctm-caps.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-ctm-caps.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-ctm-caps.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-ctm-caps.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-ctm-caps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-ctm-caps.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-ctm-caps.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-image.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-image.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-image.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-image.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-image.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-image.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-image.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-image.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-image.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-image.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-open-box.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-open-box.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-open-box.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-pattern.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-pattern.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-pattern.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-pattern.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-pattern.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-xlib-fallback.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-xlib-window.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-xlib.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/stroke-xlib.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-image-repeat.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-image-repeat.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-image-repeat.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-image-repeat.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-modify-child.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-modify-child.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-modify-child.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-modify-parent.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-modify-parent.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-modify-parent.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-outside-target.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-outside-target.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-outside-target.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-outside-target.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-pad.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-pad.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-pad.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-pad.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-reflect.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-reflect.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-reflect.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-repeat.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-repeat.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-repeat.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-scale.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-scale.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-scale.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-scale.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-scale.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-scale.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-similar-repeat.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-similar-repeat.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface-similar-repeat.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/subsurface.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-big-scale-down.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-big-scale-down.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-big-scale-down.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-big-scale-down.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-big-scale-down.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-operator.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-operator.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-operator.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-operator.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-operator.pdf.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-operator.pdf.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-operator.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-operator.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-operator.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-operator.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-operator.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down-extend-none.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down-extend-none.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down-extend-none.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down-extend-none.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down-extend-pad.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down-extend-pad.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down-extend-pad.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down-extend-pad.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down-extend-reflect.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down-extend-reflect.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down-extend-repeat.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down-extend-repeat.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-down.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-up.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-up.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-up.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-up.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-up.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-up.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-up.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-up.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern-scale-up.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern.pdf.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern.ps.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern.quartz.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/surface-pattern.svg.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/svg-surface-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/svg-surface-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/svg-surface-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/svg-surface-source.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/svg-surface-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/svg-surface-source.svg12.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/svg-surface-source.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-gray.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-gray.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-gray.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-gray.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-gray.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-gray.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-gray.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-none.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-none.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-none.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-none.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-bgr.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-bgr.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-bgr.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-bgr.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-rgb.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-rgb.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-rgb.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-rgb.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-vbgr.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-vbgr.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-vbgr.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-vbgr.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-vrgb.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-vrgb.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-vrgb.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel-vrgb.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel.base.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel.base.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-antialias-subpixel.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-glyph-range.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-glyph-range.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-glyph-range.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-glyph-range.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-glyph-range.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-glyph-range.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-glyph-range.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-glyph-range.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-pattern.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-pattern.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-pattern.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-pattern.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-pattern.pdf.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-pattern.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-pattern.ps2.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-pattern.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-pattern.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-pattern.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-pattern.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-pattern.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-pattern.svg.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-pattern.svg.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-pattern.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-pattern.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-rotate.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-rotate.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-rotate.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-rotate.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-rotate.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-rotate.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-rotate.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-rotate.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-rotate.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-rotate.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-rotate.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-rotate.xlib-fallback.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-transform.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-transform.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-transform.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-transform.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-transform.pdf.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-transform.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-transform.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-transform.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/text-transform.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/tiger.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/tiger.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/tiger.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/tiger.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/tiger.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/tiger.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/tighten-bounds.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/tighten-bounds.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/tighten-bounds.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/tighten-bounds.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/tighten-bounds.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/tighten-bounds.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/transforms.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/transforms.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/transforms.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/transforms.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/transforms.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/transforms.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/transforms.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/transforms.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/transforms.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/translate-show-surface.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/translate-show-surface.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/translate-show-surface.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/trap-clip.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/trap-clip.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/trap-clip.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/trap-clip.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/trap-clip.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/trap-clip.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/trap-clip.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/trap-clip.ps2.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/trap-clip.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/trap-clip.ps3.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/trap-clip.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/trap-clip.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/trap-clip.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/trap-clip.test-paginated.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/trap-clip.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/trap-clip.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-gray.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-gray.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-gray.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-gray.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-gray.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-gray.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-gray.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-gray.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-mixed.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-mixed.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-mixed.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-mixed.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-mixed.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-mixed.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-mixed.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-none.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-none.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-none.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-none.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-none.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-none.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-subpixel.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-subpixel.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-subpixel.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-subpixel.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-subpixel.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-subpixel.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-subpixel.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/twin.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unaligned-box.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unaligned-box.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unaligned-box.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unaligned-box.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unaligned-box.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unantialiased-shapes.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unantialiased-shapes.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unantialiased-shapes.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unantialiased-shapes.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unantialiased-shapes.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unantialiased-shapes.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.gl.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.gl.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.ps2.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.ps3.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.quartz.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.quartz.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.svg12.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unbounded-operator.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unclosed-strokes.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unclosed-strokes.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unclosed-strokes.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unclosed-strokes.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unclosed-strokes.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/unclosed-strokes.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-mask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-mask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-mask.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-mask.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-mask.ps2.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-mask.ps3.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-mask.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-mask.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-proxy.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-proxy.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-proxy.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-proxy.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-proxy.pdf.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-proxy.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-proxy.pdf.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-proxy.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-proxy.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-proxy.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-proxy.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-proxy.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-rescale.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-rescale.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-rescale.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-rescale.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-rescale.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-rescale.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-rescale.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-rescale.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font-rescale.traps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font.pdf.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font.svg.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/user-font.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/white-in-noop.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/white-in-noop.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/white-in-noop.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map-fill.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map-fill.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map-fill.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map-fill.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map-fill.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map-fill.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map-fill.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map-stroke.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map-stroke.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map-stroke.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map-stroke.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map-stroke.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map-stroke.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map-stroke.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map-stroke.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map-stroke.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/world-map.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-huge-image-shm.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-huge-image-shm.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-huge-image-shm.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-huge-subimage.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-snapshot-assert.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-snapshot-assert.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-snapshot-assert.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-stress-cache.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-stress-cache.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-stress-cache.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-surface-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-surface-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-surface-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-surface-source.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-surface-source.ps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-surface-source.ps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcb-surface-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcomposite-projection.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcomposite-projection.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcomposite-projection.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcomposite-projection.mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcomposite-projection.mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcomposite-projection.quartz.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcomposite-projection.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcomposite-projection.traps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xcomposite-projection.traps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xlib-expose-event.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xlib-expose-event.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xlib-expose-event.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xlib-expose-event.ps.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xlib-expose-event.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xlib-surface-source.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xlib-surface-source.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xlib-surface-source.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xlib-surface-source.image16.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xlib-surface-source.ps.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xlib-surface-source.ps.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xlib-surface-source.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xlib-surface-source.svg12.argb32.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/xlib-surface-source.svg12.rgb24.xfail.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/zero-alpha.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/zero-alpha.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/zero-alpha.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/zero-mask.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/zero-mask.base.argb32.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/zero-mask.base.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reference/zero-mask.rgb24.ref.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/reflected-stroke.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/rel-path.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/rgb24-ignore-alpha.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/romedalen.jpg (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/romedalen.png (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/rotate-image-surface-paint.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/rotated-clip.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/rounded-rectangle-fill.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/rounded-rectangle-stroke.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/run-cairo-test-suite.sh (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/sample.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/scale-down-source-surface-paint.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/scale-offset-image.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/scale-offset-similar.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/scale-source-surface-paint.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/scaled-font-zero-matrix.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/scarab.jpg (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/select-font-face.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/select-font-no-show-text.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/self-copy-overlap.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/self-copy.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/self-intersecting.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/set-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/shape-general-convex.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/shape-sierpinski.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/show-glyphs-advance.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/show-glyphs-many.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/show-text-current-point.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/skew-extreme.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/smask-fill.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/smask-image-mask.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/smask-mask.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/smask-paint.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/smask-stroke.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/smask-text.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/smask.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/solid-pattern-cache-stress.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/source-clip-scale.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/source-clip.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/source-surface-scale-paint.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/spline-decomposition.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/stride-12-image.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/stroke-clipped.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/stroke-ctm-caps.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/stroke-image.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/stroke-open-box.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/stroke-pattern.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/subsurface-image-repeat.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/subsurface-modify-child.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/subsurface-modify-parent.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/subsurface-outside-target.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/subsurface-pad.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/subsurface-reflect.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/subsurface-repeat.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/subsurface-scale.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/subsurface-similar-repeat.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/subsurface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/surface-finish-twice.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/surface-pattern-big-scale-down.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/surface-pattern-operator.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/surface-pattern-scale-down-extend.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/surface-pattern-scale-down.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/surface-pattern-scale-up.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/surface-pattern.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/surface-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/svg-clip.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/svg-surface-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/svg-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/svg2png.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/testsvg (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/testtable.js (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/text-antialias-subpixel.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/text-antialias.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/text-cache-crash.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/text-glyph-range.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/text-pattern.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/text-rotate.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/text-transform.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/text-zero-len.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/tiger.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/tiger.inc (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/tighten-bounds.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/toy-font-face.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/transforms.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/translate-show-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/trap-clip.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/twin-antialias-gray.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/twin-antialias-mixed.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/twin-antialias-none.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/twin-antialias-subpixel.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/twin.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/unaligned-box.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/unantialiased-shapes.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/unbounded-operator.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/unclosed-strokes.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/user-data.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/user-font-mask.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/user-font-proxy.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/user-font-rescale.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/user-font.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/white-in-noop.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/world-map.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/world-map.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/xcb-huge-image-shm.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/xcb-huge-subimage.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/xcb-snapshot-assert.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/xcb-stress-cache.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/xcb-surface-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/xcomposite-projection.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/xlib-expose-event.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/xlib-surface-source.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/xlib-surface.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/zero-alpha.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/test/zero-mask.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/COPYING (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/README (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/backtrace-symbols.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-api-update (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-fdr/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-fdr/fdr.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-gobject/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-gobject/cairo-gobject-enums.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-gobject/cairo-gobject-structs.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-gobject/cairo-gobject.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-missing/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-missing/Makefile.sources (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-missing/Makefile.win32 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-missing/cairo-missing.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-missing/getline.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-missing/strndup.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/COPYING (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/Makefile.sources (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/Makefile.win32 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/cairo-script-file.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/cairo-script-hash.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/cairo-script-interpreter.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/cairo-script-interpreter.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/cairo-script-objects.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/cairo-script-operators.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/cairo-script-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/cairo-script-scanner.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/cairo-script-stack.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/csi-bind.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/csi-exec.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/csi-replay.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/csi-trace.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/examples/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/examples/dragon.cs (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/examples/hilbert.cs (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/examples/infinichess.cs (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/examples/interference.cs (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/examples/pythagoras-tree.cs (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/examples/sierpinski.cs (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/examples/wedgeAnnulus_crop_ybRings.cs (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/examples/world-map.cs (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-script/examples/zrusin.cs (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-sphinx/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-sphinx/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-sphinx/fdr.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-sphinx/sphinx.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-trace/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-trace/COPYING (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-trace/COPYING-GPL-3 (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-trace/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-trace/cairo-trace.in (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-trace/lookup-symbol.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-trace/lookup-symbol.h (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-trace/trace.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo-view (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/cairo.modules (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/font-view.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/malloc-stats.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/show-contour.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/show-edges.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/show-events.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/show-polygon.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/show-traps.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/trace-to-xml.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/waterfall (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/xml-to-trace.c (100%) rename {3rd-party => io2d/src/3rd-party}/cairo/util/xr2cairo (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/ANNOUNCE (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/CHANGES (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/CMakeLists.txt (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/INSTALL (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/LICENSE (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/README (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/TODO (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/arm/arm_init.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/arm/filter_neon.S (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/arm/filter_neon_intrinsics.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/autogen.sh (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/configure.ac (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/README.txt (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/conftest/README (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/conftest/read.dfa (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/conftest/s_read.dfa (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/conftest/s_write.dfa (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/conftest/simple.dfa (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/conftest/write.dfa (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/examples/README.txt (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/examples/iccfrompng.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/examples/pngpixel.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/examples/pngtopng.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/COPYING (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/LICENSE (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/Makefile.mingw32 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/Makefile.sgi (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/Makefile.unx (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/Makefile.w32 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/README (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/makevms.com (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/readpng.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/readpng.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/readpng2.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/readpng2.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/readppm.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/rpng-win.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/rpng-x.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/rpng2-win.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/rpng2-x.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/toucan.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/wpng.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/writepng.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/gregbook/writepng.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/libtests/fakepng.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/libtests/gentests.sh (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/libtests/makepng.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/libtests/pngstest.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/libtests/pngunknown.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/libtests/pngvalid.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/libtests/readpng.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/libtests/tarith.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/libtests/timepng.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminim/README (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminim/decoder/README (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminim/decoder/makefile (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminim/decoder/pngusr.dfa (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminim/decoder/pngusr.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminim/encoder/README (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminim/encoder/makefile (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminim/encoder/pngusr.dfa (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminim/encoder/pngusr.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminim/preader/README (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminim/preader/makefile (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminim/preader/pngusr.dfa (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminim/preader/pngusr.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminus/README (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminus/makefile.std (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminus/makefile.tc3 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminus/makevms.com (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminus/png2pnm.bat (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminus/png2pnm.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminus/png2pnm.sh (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminus/pngminus.bat (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminus/pngminus.sh (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminus/pnm2png.bat (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminus/pnm2png.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngminus/pnm2png.sh (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/README (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/basn0g01.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/basn0g02.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/basn0g04.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/basn0g08.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/basn0g16.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/basn2c08.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/basn2c16.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/basn3p01.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/basn3p02.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/basn3p04.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/basn3p08.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/basn4a08.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/basn4a16.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/basn6a08.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/basn6a16.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/ftbbn0g01.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/ftbbn0g02.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/ftbbn0g04.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/ftbbn2c16.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/ftbbn3p08.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/ftbgn2c16.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/ftbgn3p08.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/ftbrn2c08.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/ftbwn0g16.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/ftbwn3p08.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/ftbyn3p08.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/ftp0n0g08.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/ftp0n2c08.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/ftp0n3p08.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/pngsuite/ftp1n3p08.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/tools/README.txt (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/tools/checksum-icc.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/tools/chkfmt (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/tools/cvtcolor.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/tools/intgamma.sh (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/tools/makesRGB.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/tools/png-fix-itxt.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/tools/pngfix.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/tools/sRGB.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/visupng/PngFile.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/visupng/PngFile.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/visupng/README.txt (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/visupng/VisualPng.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/visupng/VisualPng.dsp (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/visupng/VisualPng.dsw (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/visupng/VisualPng.ico (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/visupng/VisualPng.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/visupng/VisualPng.rc (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/visupng/cexcept.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/contrib/visupng/resource.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/example.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/libpng-config.in (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/libpng-manual.txt (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/libpng.3 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/libpng.pc.in (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/libpngpf.3 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/png.5 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/png.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/png.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngbar.jpg (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngbar.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngconf.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngdebug.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngerror.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngget.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pnginfo.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pnglibconf.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngmem.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngnow.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngpread.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngpriv.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngread.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngrio.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngrtran.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngrutil.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngset.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngstruct.h (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngtest.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngtest.png (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngtrans.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngusr.dfa (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngwio.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngwrite.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngwtran.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/pngwutil.c (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/owatcom/libpng.tgt (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/owatcom/libpng.wpj (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/owatcom/pngconfig.mak (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/owatcom/pngstest.tgt (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/owatcom/pngtest.tgt (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/owatcom/pngvalid.tgt (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/visualc71/PRJ0041.mak (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/visualc71/README.txt (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/visualc71/README_zlib.txt (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/visualc71/libpng.sln (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/visualc71/libpng.vcproj (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/visualc71/pngtest.vcproj (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/visualc71/zlib.vcproj (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/vstudio/WARNING (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/vstudio/libpng/libpng.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/vstudio/pngstest/pngstest.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/vstudio/pngtest/pngtest.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/vstudio/readme.txt (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/vstudio/vstudio.sln (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/vstudio/zlib.props (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/projects/vstudio/zlib/zlib.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/README.txt (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/SCOPTIONS.ppc (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/checksym.awk (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/def.dfn (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/descrip.mms (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/dfn.awk (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/intprefix.dfn (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/libpng-config-body.in (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/libpng-config-head.in (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/libpng.pc.in (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/macro.lst (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.32sunu (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.64sunu (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.acorn (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.aix (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.amiga (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.atari (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.bc32 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.beos (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.bor (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.cegcc (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.darwin (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.dec (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.dj2 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.elf (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.freebsd (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.gcc (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.hp64 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.hpgcc (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.hpux (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.ibmc (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.intel (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.knr (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.linux (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.mips (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.msc (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.msys (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.ne12bsd (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.netbsd (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.openbsd (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.sco (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.sggcc (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.sgi (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.so9 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.solaris (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.solaris-x86 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.std (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.sunos (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.tc3 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makefile.vcwin32 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/makevms.com (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/options.awk (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/pnglibconf.dfa (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/pnglibconf.h.prebuilt (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/pnglibconf.mak (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/pngwin.rc (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/prefix.dfn (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/smakefile.ppc (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/sym.dfn (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/symbols.def (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/symbols.dfn (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/scripts/vers.dfn (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest-0g01 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest-0g02 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest-0g04 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest-0g08 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest-0g16 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest-2c08 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest-2c16 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest-3p01 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest-3p02 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest-3p04 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest-3p08 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest-4a08 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest-4a16 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest-6a08 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest-6a16 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngstest-error (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngtest (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngunknown-IDAT (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngunknown-discard (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngunknown-if-safe (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngunknown-sAPI (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngunknown-sTER (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngunknown-save (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngunknown-vpAg (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngvalid-gamma-16-to-8 (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngvalid-gamma-alpha-mode (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngvalid-gamma-background (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngvalid-gamma-expand16-alpha-mode (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngvalid-gamma-expand16-background (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngvalid-gamma-expand16-transform (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngvalid-gamma-sbit (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngvalid-gamma-threshold (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngvalid-gamma-transform (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngvalid-progressive-interlace-size (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngvalid-progressive-interlace-standard (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngvalid-progressive-interlace-transform (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngvalid-progressive-standard (100%) rename {3rd-party => io2d/src/3rd-party}/libpng/tests/pngvalid-standard (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/.gitignore (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/AUTHORS (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/CODING_STYLE (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/COPYING (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/ChangeLog (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/INSTALL (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/Makefile.win32 (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/Makefile.win32.common (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/NEWS (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/README (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/RELEASING (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/autogen.sh (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/configure.ac (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/alpha-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/checkerboard.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/clip-in.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/clip-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/composite-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/conical-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/convolution-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/gradient-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/gtk-utils.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/gtk-utils.h (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/linear-gradient.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/parrot.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/parrot.jpg (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/quad2quad.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/radial-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/scale.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/scale.ui (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/screen-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/srgb-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/srgb-trap-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/trap-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/tri-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/demos/zone_plate.png (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman-1-uninstalled.pc.in (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman-1.pc.in (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/Makefile.sources (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/Makefile.win32 (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/loongson-mmintrin.h (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/make-srgb.pl (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-access-accessors.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-access.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-accessor.h (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-arm-common.h (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-arm-detect-win32.asm (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-arm-neon-asm-bilinear.S (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-arm-neon-asm.S (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-arm-neon-asm.h (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-arm-neon.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-arm-simd-asm-scaled.S (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-arm-simd-asm.S (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-arm-simd-asm.h (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-arm-simd.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-arm.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-bits-image.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-combine-float.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-combine32.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-combine32.h (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-compiler.h (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-conical-gradient.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-edge-accessors.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-edge-imp.h (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-edge.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-fast-path.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-filter.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-general.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-glyph.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-gradient-walker.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-image.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-implementation.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-inlines.h (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-linear-gradient.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-matrix.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-mips-dspr2-asm.S (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-mips-dspr2-asm.h (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-mips-dspr2.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-mips-dspr2.h (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-mips-memcpy-asm.S (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-mips.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-mmx.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-noop.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-ppc.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-private.h (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-radial-gradient.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-region.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-region16.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-region32.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-solid-fill.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-sse2.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-ssse3.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-timer.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-trap.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-utils.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-version.h (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-version.h.in (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-vmx.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman-x86.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/pixman.h (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/rounding.txt (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/pixman/solaris-hwcap.mapfile (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/Makefile.sources (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/Makefile.win32 (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/a1-trap-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/affine-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/alpha-loop.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/alphamap.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/blitters-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/check-formats.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/combiner-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/composite-traps-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/composite.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/fetch-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/fuzzer-find-diff.pl (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/glyph-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/gradient-crash-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/infinite-loop.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/lowlevel-blt-bench.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/matrix-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/oob-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/pdf-op-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/pixel-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/prng-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/radial-perf-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/region-contains-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/region-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/region-translate-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/rotate-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/scaling-bench.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/scaling-crash-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/scaling-helpers-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/scaling-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/stress-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/thread-test.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/trap-crasher.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/utils-prng.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/utils-prng.h (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/utils.c (100%) rename {3rd-party => io2d/src/3rd-party}/pixman/test/utils.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/CMakeLists.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/ChangeLog (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/FAQ (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/INDEX (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/Makefile (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/Makefile.in (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/README (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/adler32.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/amiga/Makefile.pup (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/amiga/Makefile.sas (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/as400/bndsrc (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/as400/compile.clp (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/as400/readme.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/as400/zlib.inc (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/compress.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/configure (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/README.contrib (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/ada/buffer_demo.adb (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/ada/mtest.adb (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/ada/read.adb (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/ada/readme.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/ada/test.adb (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/ada/zlib-streams.adb (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/ada/zlib-streams.ads (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/ada/zlib-thin.adb (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/ada/zlib-thin.ads (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/ada/zlib.adb (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/ada/zlib.ads (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/ada/zlib.gpr (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/amd64/amd64-match.S (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/asm686/README.686 (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/asm686/match.S (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/blast/Makefile (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/blast/README (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/blast/blast.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/blast/blast.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/blast/test.pk (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/blast/test.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/delphi/ZLib.pas (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/delphi/ZLibConst.pas (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/delphi/readme.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/delphi/zlibd32.mak (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/dotzlib/DotZLib.build (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/dotzlib/DotZLib.chm (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/dotzlib/DotZLib.sln (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/dotzlib/DotZLib/CodecBase.cs (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/dotzlib/DotZLib/Deflater.cs (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/dotzlib/DotZLib/DotZLib.cs (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/dotzlib/DotZLib/GZipStream.cs (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/dotzlib/DotZLib/Inflater.cs (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/dotzlib/DotZLib/UnitTests.cs (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/dotzlib/LICENSE_1_0.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/dotzlib/readme.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/gcc_gvmat64/gvmat64.S (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/infback9/README (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/infback9/infback9.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/infback9/infback9.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/infback9/inffix9.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/infback9/inflate9.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/infback9/inftree9.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/infback9/inftree9.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/inflate86/inffas86.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/inflate86/inffast.S (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/iostream/test.cpp (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/iostream/zfstream.cpp (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/iostream/zfstream.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/iostream2/zstream.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/iostream2/zstream_test.cpp (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/iostream3/README (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/iostream3/TODO (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/iostream3/test.cc (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/iostream3/zfstream.cc (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/iostream3/zfstream.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/masmx64/bld_ml64.bat (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/masmx64/gvmat64.asm (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/masmx64/inffas8664.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/masmx64/inffasx64.asm (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/masmx64/readme.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/masmx86/bld_ml32.bat (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/masmx86/inffas32.asm (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/masmx86/match686.asm (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/masmx86/readme.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/Makefile (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/Makefile.am (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/MiniZip64_Changes.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/MiniZip64_info.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/configure.ac (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/crypt.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/ioapi.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/ioapi.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/iowin32.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/iowin32.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/make_vms.com (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/miniunz.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/miniunzip.1 (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/minizip.1 (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/minizip.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/minizip.pc.in (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/mztools.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/mztools.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/unzip.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/unzip.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/zip.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/minizip/zip.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/pascal/example.pas (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/pascal/readme.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/pascal/zlibd32.mak (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/pascal/zlibpas.pas (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/puff/Makefile (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/puff/README (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/puff/puff.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/puff/puff.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/puff/pufftest.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/puff/zeros.raw (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/testzlib/testzlib.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/testzlib/testzlib.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/untgz/Makefile (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/untgz/Makefile.msc (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/untgz/untgz.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/readme.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc10/miniunz.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc10/minizip.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc10/testzlib.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc10/zlib.rc (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc10/zlibstat.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc10/zlibvc.def (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc10/zlibvc.sln (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc10/zlibvc.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc11/miniunz.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc11/minizip.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc11/testzlib.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc11/zlib.rc (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc11/zlibstat.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc11/zlibvc.def (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc11/zlibvc.sln (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc11/zlibvc.vcxproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc9/miniunz.vcproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc9/minizip.vcproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc9/testzlib.vcproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc9/testzlibdll.vcproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc9/zlib.rc (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc9/zlibstat.vcproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc9/zlibvc.def (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc9/zlibvc.sln (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/contrib/vstudio/vc9/zlibvc.vcproj (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/crc32.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/crc32.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/deflate.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/deflate.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/doc/algorithm.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/doc/rfc1950.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/doc/rfc1951.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/doc/rfc1952.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/doc/txtvsbin.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/examples/README.examples (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/examples/enough.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/examples/fitblk.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/examples/gun.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/examples/gzappend.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/examples/gzjoin.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/examples/gzlog.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/examples/gzlog.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/examples/zlib_how.html (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/examples/zpipe.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/examples/zran.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/gzclose.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/gzguts.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/gzlib.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/gzread.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/gzwrite.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/infback.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/inffast.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/inffast.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/inffixed.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/inflate.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/inflate.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/inftrees.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/inftrees.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/make_vms.com (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/msdos/Makefile.bor (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/msdos/Makefile.dj2 (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/msdos/Makefile.emx (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/msdos/Makefile.msc (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/msdos/Makefile.tc (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/nintendods/Makefile (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/nintendods/README (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/old/Makefile.emx (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/old/Makefile.riscos (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/old/README (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/old/descrip.mms (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/old/os2/Makefile.os2 (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/old/os2/zlib.def (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/old/visual-basic.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/qnx/package.qpg (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/test/example.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/test/infcover.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/test/minigzip.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/treebuild.xml (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/trees.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/trees.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/uncompr.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/watcom/watcom_f.mak (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/watcom/watcom_l.mak (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/win32/DLL_FAQ.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/win32/Makefile.bor (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/win32/Makefile.gcc (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/win32/Makefile.msc (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/win32/README-WIN32.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/win32/VisualC.txt (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/win32/zlib.def (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/win32/zlib1.rc (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/zconf.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/zconf.h.cmakein (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/zconf.h.in (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/zlib.3 (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/zlib.3.pdf (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/zlib.h (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/zlib.map (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/zlib.pc.cmakein (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/zlib.pc.in (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/zlib2ansi (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/zutil.c (100%) rename {3rd-party => io2d/src/3rd-party}/zlib/zutil.h (100%) rename {src => io2d/src}/Makefile.am (100%) rename {src => io2d/src}/N3888_RefImpl.ico (100%) rename {src => io2d/src}/N3888_RefImpl.rc (100%) rename {src => io2d/src}/N3888_RefImpl.vcxproj (100%) rename {src => io2d/src}/N3888_RefImpl.vcxproj.filters (100%) rename {src => io2d/src}/brush.cpp (100%) rename {src => io2d/src}/device.cpp (100%) rename {src => io2d/src}/display_surface-common.cpp (100%) rename {src => io2d/src}/display_surface-win32.cpp (100%) rename {src => io2d/src}/display_surface-xlib.cpp (100%) rename {src => io2d/src}/font_extents.cpp (100%) rename {src => io2d/src}/font_face.cpp (100%) rename {src => io2d/src}/font_options.cpp (100%) rename {src => io2d/src}/image_surface.cpp (100%) rename {src => io2d/src}/io2d_error_category.cpp (100%) rename {src => io2d/src}/linear_brush_factory.cpp (100%) rename {src => io2d/src}/mapped_surface.cpp (100%) rename {src => io2d/src}/matrix_2d.cpp (100%) rename {src => io2d/src}/mesh_brush_factory.cpp (100%) rename {src => io2d/src}/path.cpp (100%) rename {src => io2d/src}/path_data.cpp (100%) rename {src => io2d/src}/path_data_item.cpp (100%) rename {src => io2d/src}/path_factory.cpp (100%) rename {src => io2d/src}/radial_brush_factory.cpp (100%) rename {src => io2d/src}/rectangle.cpp (100%) rename {src => io2d/src}/rgba_color.cpp (100%) rename {src => io2d/src}/simple_font_face.cpp (100%) rename {src => io2d/src}/small.ico (100%) rename {src => io2d/src}/solid_color_brush_factory.cpp (100%) rename {src => io2d/src}/standalone_functions.cpp (100%) rename {src => io2d/src}/surface.cpp (100%) rename {src => io2d/src}/surface_brush_factory.cpp (100%) rename {src => io2d/src}/text_extents.cpp (100%) rename {src => io2d/src}/vector_2d.cpp (100%) rename {src => io2d/src}/win32/DLL build instructions.txt (100%) rename {src => io2d/src}/win32/DLLs/x64/Debug/cairo.dll (100%) rename {src => io2d/src}/win32/DLLs/x64/Debug/cairo.pdb (100%) rename {src => io2d/src}/win32/DLLs/x64/Debug/zlib1.dll (100%) rename {src => io2d/src}/win32/DLLs/x64/Debug/zlib1.pdb (100%) rename {src => io2d/src}/win32/DLLs/x64/Release/cairo.dll (100%) rename {src => io2d/src}/win32/DLLs/x64/Release/zlib1.dll (100%) rename {src => io2d/src}/win32/DLLs/x86/Debug/cairo.dll (100%) rename {src => io2d/src}/win32/DLLs/x86/Debug/cairo.pdb (100%) rename {src => io2d/src}/win32/DLLs/x86/Debug/zlib1.dll (100%) rename {src => io2d/src}/win32/DLLs/x86/Debug/zlib1.pdb (100%) rename {src => io2d/src}/win32/DLLs/x86/Debug_Clang_C2/cairo.dll (100%) rename {src => io2d/src}/win32/DLLs/x86/Debug_Clang_C2/zlib1.dll (100%) rename {src => io2d/src}/win32/DLLs/x86/Release/cairo.dll (100%) rename {src => io2d/src}/win32/DLLs/x86/Release/zlib1.dll (100%) rename {src => io2d/src}/win32/DLLs/x86/Release_Clang_C2/cairo.dll (100%) rename {src => io2d/src}/win32/DLLs/x86/Release_Clang_C2/zlib1.dll (100%) rename {src => io2d/src}/win32/include/cairo-deprecated.h (100%) rename {src => io2d/src}/win32/include/cairo-features.h (100%) rename {src => io2d/src}/win32/include/cairo-pdf.h (100%) rename {src => io2d/src}/win32/include/cairo-ps.h (100%) rename {src => io2d/src}/win32/include/cairo-script.h (100%) rename {src => io2d/src}/win32/include/cairo-svg.h (100%) rename {src => io2d/src}/win32/include/cairo-version.h (100%) rename {src => io2d/src}/win32/include/cairo-win32.h (100%) rename {src => io2d/src}/win32/include/cairo.h (100%) rename {src => io2d/src}/win32/lib/x64/Debug/cairo.lib (100%) rename {src => io2d/src}/win32/lib/x64/Debug/zlib.lib (100%) rename {src => io2d/src}/win32/lib/x64/Release/cairo.lib (100%) rename {src => io2d/src}/win32/lib/x64/Release/zlib.lib (100%) rename {src => io2d/src}/win32/lib/x86/Debug/cairo.lib (100%) rename {src => io2d/src}/win32/lib/x86/Debug/zlib.lib (100%) rename {src => io2d/src}/win32/lib/x86/Debug_Clang_C2/cairo.lib (100%) rename {src => io2d/src}/win32/lib/x86/Debug_Clang_C2/zlib.lib (100%) rename {src => io2d/src}/win32/lib/x86/Release/cairo.lib (100%) rename {src => io2d/src}/win32/lib/x86/Release/zlib.lib (100%) rename {src => io2d/src}/win32/lib/x86/Release_Clang_C2/cairo.lib (100%) rename {src => io2d/src}/win32/lib/x86/Release_Clang_C2/zlib.lib (100%) diff --git a/include/io2d.h b/io2d/include/io2d.h similarity index 100% rename from include/io2d.h rename to io2d/include/io2d.h diff --git a/include/throw_helpers.h b/io2d/include/throw_helpers.h similarity index 100% rename from include/throw_helpers.h rename to io2d/include/throw_helpers.h diff --git a/include/xcairoenumhelpers.h b/io2d/include/xcairoenumhelpers.h similarity index 100% rename from include/xcairoenumhelpers.h rename to io2d/include/xcairoenumhelpers.h diff --git a/include/xio2d.h b/io2d/include/xio2d.h similarity index 100% rename from include/xio2d.h rename to io2d/include/xio2d.h diff --git a/include/xio2dhelpers.h b/io2d/include/xio2dhelpers.h similarity index 100% rename from include/xio2dhelpers.h rename to io2d/include/xio2dhelpers.h diff --git a/src/.gitignore b/io2d/src/.gitignore similarity index 100% rename from src/.gitignore rename to io2d/src/.gitignore diff --git a/3rd-party/cairo/.gitignore b/io2d/src/3rd-party/cairo/.gitignore similarity index 100% rename from 3rd-party/cairo/.gitignore rename to io2d/src/3rd-party/cairo/.gitignore diff --git a/3rd-party/cairo/AUTHORS b/io2d/src/3rd-party/cairo/AUTHORS similarity index 100% rename from 3rd-party/cairo/AUTHORS rename to io2d/src/3rd-party/cairo/AUTHORS diff --git a/3rd-party/cairo/BIBLIOGRAPHY b/io2d/src/3rd-party/cairo/BIBLIOGRAPHY similarity index 100% rename from 3rd-party/cairo/BIBLIOGRAPHY rename to io2d/src/3rd-party/cairo/BIBLIOGRAPHY diff --git a/3rd-party/cairo/BUGS b/io2d/src/3rd-party/cairo/BUGS similarity index 100% rename from 3rd-party/cairo/BUGS rename to io2d/src/3rd-party/cairo/BUGS diff --git a/3rd-party/cairo/CODING_STYLE b/io2d/src/3rd-party/cairo/CODING_STYLE similarity index 100% rename from 3rd-party/cairo/CODING_STYLE rename to io2d/src/3rd-party/cairo/CODING_STYLE diff --git a/3rd-party/cairo/COPYING b/io2d/src/3rd-party/cairo/COPYING similarity index 100% rename from 3rd-party/cairo/COPYING rename to io2d/src/3rd-party/cairo/COPYING diff --git a/3rd-party/cairo/COPYING-LGPL-2.1 b/io2d/src/3rd-party/cairo/COPYING-LGPL-2.1 similarity index 100% rename from 3rd-party/cairo/COPYING-LGPL-2.1 rename to io2d/src/3rd-party/cairo/COPYING-LGPL-2.1 diff --git a/3rd-party/cairo/COPYING-MPL-1.1 b/io2d/src/3rd-party/cairo/COPYING-MPL-1.1 similarity index 100% rename from 3rd-party/cairo/COPYING-MPL-1.1 rename to io2d/src/3rd-party/cairo/COPYING-MPL-1.1 diff --git a/3rd-party/cairo/HACKING b/io2d/src/3rd-party/cairo/HACKING similarity index 100% rename from 3rd-party/cairo/HACKING rename to io2d/src/3rd-party/cairo/HACKING diff --git a/3rd-party/cairo/INSTALL b/io2d/src/3rd-party/cairo/INSTALL similarity index 100% rename from 3rd-party/cairo/INSTALL rename to io2d/src/3rd-party/cairo/INSTALL diff --git a/3rd-party/cairo/KNOWN_ISSUES b/io2d/src/3rd-party/cairo/KNOWN_ISSUES similarity index 100% rename from 3rd-party/cairo/KNOWN_ISSUES rename to io2d/src/3rd-party/cairo/KNOWN_ISSUES diff --git a/3rd-party/cairo/Makefile.am b/io2d/src/3rd-party/cairo/Makefile.am similarity index 100% rename from 3rd-party/cairo/Makefile.am rename to io2d/src/3rd-party/cairo/Makefile.am diff --git a/3rd-party/cairo/Makefile.win32 b/io2d/src/3rd-party/cairo/Makefile.win32 similarity index 100% rename from 3rd-party/cairo/Makefile.win32 rename to io2d/src/3rd-party/cairo/Makefile.win32 diff --git a/3rd-party/cairo/NEWS b/io2d/src/3rd-party/cairo/NEWS similarity index 100% rename from 3rd-party/cairo/NEWS rename to io2d/src/3rd-party/cairo/NEWS diff --git a/3rd-party/cairo/PORTING_GUIDE b/io2d/src/3rd-party/cairo/PORTING_GUIDE similarity index 100% rename from 3rd-party/cairo/PORTING_GUIDE rename to io2d/src/3rd-party/cairo/PORTING_GUIDE diff --git a/3rd-party/cairo/README b/io2d/src/3rd-party/cairo/README similarity index 100% rename from 3rd-party/cairo/README rename to io2d/src/3rd-party/cairo/README diff --git a/3rd-party/cairo/README.win32 b/io2d/src/3rd-party/cairo/README.win32 similarity index 100% rename from 3rd-party/cairo/README.win32 rename to io2d/src/3rd-party/cairo/README.win32 diff --git a/3rd-party/cairo/RELEASING b/io2d/src/3rd-party/cairo/RELEASING similarity index 100% rename from 3rd-party/cairo/RELEASING rename to io2d/src/3rd-party/cairo/RELEASING diff --git a/3rd-party/cairo/acinclude.m4 b/io2d/src/3rd-party/cairo/acinclude.m4 similarity index 100% rename from 3rd-party/cairo/acinclude.m4 rename to io2d/src/3rd-party/cairo/acinclude.m4 diff --git a/3rd-party/cairo/autogen.sh b/io2d/src/3rd-party/cairo/autogen.sh similarity index 100% rename from 3rd-party/cairo/autogen.sh rename to io2d/src/3rd-party/cairo/autogen.sh diff --git a/3rd-party/cairo/boilerplate/.gitignore b/io2d/src/3rd-party/cairo/boilerplate/.gitignore similarity index 100% rename from 3rd-party/cairo/boilerplate/.gitignore rename to io2d/src/3rd-party/cairo/boilerplate/.gitignore diff --git a/3rd-party/cairo/boilerplate/Makefile.am b/io2d/src/3rd-party/cairo/boilerplate/Makefile.am similarity index 100% rename from 3rd-party/cairo/boilerplate/Makefile.am rename to io2d/src/3rd-party/cairo/boilerplate/Makefile.am diff --git a/3rd-party/cairo/boilerplate/Makefile.sources b/io2d/src/3rd-party/cairo/boilerplate/Makefile.sources similarity index 100% rename from 3rd-party/cairo/boilerplate/Makefile.sources rename to io2d/src/3rd-party/cairo/boilerplate/Makefile.sources diff --git a/3rd-party/cairo/boilerplate/Makefile.win32 b/io2d/src/3rd-party/cairo/boilerplate/Makefile.win32 similarity index 100% rename from 3rd-party/cairo/boilerplate/Makefile.win32 rename to io2d/src/3rd-party/cairo/boilerplate/Makefile.win32 diff --git a/3rd-party/cairo/boilerplate/Makefile.win32.features b/io2d/src/3rd-party/cairo/boilerplate/Makefile.win32.features similarity index 100% rename from 3rd-party/cairo/boilerplate/Makefile.win32.features rename to io2d/src/3rd-party/cairo/boilerplate/Makefile.win32.features diff --git a/3rd-party/cairo/boilerplate/README b/io2d/src/3rd-party/cairo/boilerplate/README similarity index 100% rename from 3rd-party/cairo/boilerplate/README rename to io2d/src/3rd-party/cairo/boilerplate/README diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-beos.cpp b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-beos.cpp similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-beos.cpp rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-beos.cpp diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-cogl.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-cogl.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-cogl.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-cogl.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-directfb.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-directfb.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-directfb.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-directfb.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-drm.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-drm.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-drm.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-drm.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-egl.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-egl.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-egl.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-egl.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-getopt.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-getopt.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-getopt.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-getopt.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-getopt.h b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-getopt.h similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-getopt.h rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-getopt.h diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-glx.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-glx.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-glx.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-glx.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-pdf.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-pdf.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-pdf.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-pdf.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-private.h b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-private.h similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-private.h rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-private.h diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-ps.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-ps.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-ps.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-ps.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-qt.cpp b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-qt.cpp similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-qt.cpp rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-qt.cpp diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-quartz.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-quartz.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-quartz.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-quartz.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-scaled-font.h b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-scaled-font.h similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-scaled-font.h rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-scaled-font.h diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-script.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-script.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-script.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-script.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-skia.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-skia.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-skia.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-skia.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-svg.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-svg.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-svg.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-svg.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-system.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-system.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-system.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-system.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-system.h b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-system.h similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-system.h rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-system.h diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-test-surfaces.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-test-surfaces.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-test-surfaces.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-test-surfaces.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-vg.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-vg.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-vg.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-vg.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-wgl.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-wgl.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-wgl.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-wgl.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-win32-printing.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-win32-printing.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-win32-printing.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-win32-printing.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-win32.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-win32.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-win32.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-win32.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-xcb.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-xcb.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-xcb.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-xcb.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-xlib.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-xlib.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-xlib.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-xlib.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate-xlib.h b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-xlib.h similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate-xlib.h rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate-xlib.h diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate.c b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate.c similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate.c rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate.c diff --git a/3rd-party/cairo/boilerplate/cairo-boilerplate.h b/io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate.h similarity index 100% rename from 3rd-party/cairo/boilerplate/cairo-boilerplate.h rename to io2d/src/3rd-party/cairo/boilerplate/cairo-boilerplate.h diff --git a/3rd-party/cairo/boilerplate/check-link.c b/io2d/src/3rd-party/cairo/boilerplate/check-link.c similarity index 100% rename from 3rd-party/cairo/boilerplate/check-link.c rename to io2d/src/3rd-party/cairo/boilerplate/check-link.c diff --git a/3rd-party/cairo/boilerplate/make-cairo-boilerplate-constructors.sh b/io2d/src/3rd-party/cairo/boilerplate/make-cairo-boilerplate-constructors.sh similarity index 100% rename from 3rd-party/cairo/boilerplate/make-cairo-boilerplate-constructors.sh rename to io2d/src/3rd-party/cairo/boilerplate/make-cairo-boilerplate-constructors.sh diff --git a/3rd-party/cairo/build/.gitignore b/io2d/src/3rd-party/cairo/build/.gitignore similarity index 100% rename from 3rd-party/cairo/build/.gitignore rename to io2d/src/3rd-party/cairo/build/.gitignore diff --git a/3rd-party/cairo/build/Makefile.am.analysis b/io2d/src/3rd-party/cairo/build/Makefile.am.analysis similarity index 100% rename from 3rd-party/cairo/build/Makefile.am.analysis rename to io2d/src/3rd-party/cairo/build/Makefile.am.analysis diff --git a/3rd-party/cairo/build/Makefile.am.changelog b/io2d/src/3rd-party/cairo/build/Makefile.am.changelog similarity index 100% rename from 3rd-party/cairo/build/Makefile.am.changelog rename to io2d/src/3rd-party/cairo/build/Makefile.am.changelog diff --git a/3rd-party/cairo/build/Makefile.am.common b/io2d/src/3rd-party/cairo/build/Makefile.am.common similarity index 100% rename from 3rd-party/cairo/build/Makefile.am.common rename to io2d/src/3rd-party/cairo/build/Makefile.am.common diff --git a/3rd-party/cairo/build/Makefile.am.gtk-doc b/io2d/src/3rd-party/cairo/build/Makefile.am.gtk-doc similarity index 100% rename from 3rd-party/cairo/build/Makefile.am.gtk-doc rename to io2d/src/3rd-party/cairo/build/Makefile.am.gtk-doc diff --git a/3rd-party/cairo/build/Makefile.am.releasing b/io2d/src/3rd-party/cairo/build/Makefile.am.releasing similarity index 100% rename from 3rd-party/cairo/build/Makefile.am.releasing rename to io2d/src/3rd-party/cairo/build/Makefile.am.releasing diff --git a/3rd-party/cairo/build/Makefile.win32.common b/io2d/src/3rd-party/cairo/build/Makefile.win32.common similarity index 100% rename from 3rd-party/cairo/build/Makefile.win32.common rename to io2d/src/3rd-party/cairo/build/Makefile.win32.common diff --git a/3rd-party/cairo/build/Makefile.win32.features b/io2d/src/3rd-party/cairo/build/Makefile.win32.features similarity index 100% rename from 3rd-party/cairo/build/Makefile.win32.features rename to io2d/src/3rd-party/cairo/build/Makefile.win32.features diff --git a/3rd-party/cairo/build/Makefile.win32.features-h b/io2d/src/3rd-party/cairo/build/Makefile.win32.features-h similarity index 100% rename from 3rd-party/cairo/build/Makefile.win32.features-h rename to io2d/src/3rd-party/cairo/build/Makefile.win32.features-h diff --git a/3rd-party/cairo/build/Makefile.win32.inform b/io2d/src/3rd-party/cairo/build/Makefile.win32.inform similarity index 100% rename from 3rd-party/cairo/build/Makefile.win32.inform rename to io2d/src/3rd-party/cairo/build/Makefile.win32.inform diff --git a/3rd-party/cairo/build/aclocal.cairo.m4 b/io2d/src/3rd-party/cairo/build/aclocal.cairo.m4 similarity index 100% rename from 3rd-party/cairo/build/aclocal.cairo.m4 rename to io2d/src/3rd-party/cairo/build/aclocal.cairo.m4 diff --git a/3rd-party/cairo/build/aclocal.compare.m4 b/io2d/src/3rd-party/cairo/build/aclocal.compare.m4 similarity index 100% rename from 3rd-party/cairo/build/aclocal.compare.m4 rename to io2d/src/3rd-party/cairo/build/aclocal.compare.m4 diff --git a/3rd-party/cairo/build/aclocal.enable.m4 b/io2d/src/3rd-party/cairo/build/aclocal.enable.m4 similarity index 100% rename from 3rd-party/cairo/build/aclocal.enable.m4 rename to io2d/src/3rd-party/cairo/build/aclocal.enable.m4 diff --git a/3rd-party/cairo/build/aclocal.float.m4 b/io2d/src/3rd-party/cairo/build/aclocal.float.m4 similarity index 100% rename from 3rd-party/cairo/build/aclocal.float.m4 rename to io2d/src/3rd-party/cairo/build/aclocal.float.m4 diff --git a/3rd-party/cairo/build/aclocal.gtk-doc.m4 b/io2d/src/3rd-party/cairo/build/aclocal.gtk-doc.m4 similarity index 100% rename from 3rd-party/cairo/build/aclocal.gtk-doc.m4 rename to io2d/src/3rd-party/cairo/build/aclocal.gtk-doc.m4 diff --git a/3rd-party/cairo/build/aclocal.makefile.m4 b/io2d/src/3rd-party/cairo/build/aclocal.makefile.m4 similarity index 100% rename from 3rd-party/cairo/build/aclocal.makefile.m4 rename to io2d/src/3rd-party/cairo/build/aclocal.makefile.m4 diff --git a/3rd-party/cairo/build/aclocal.pkg.m4 b/io2d/src/3rd-party/cairo/build/aclocal.pkg.m4 similarity index 100% rename from 3rd-party/cairo/build/aclocal.pkg.m4 rename to io2d/src/3rd-party/cairo/build/aclocal.pkg.m4 diff --git a/3rd-party/cairo/build/configure.ac.analysis b/io2d/src/3rd-party/cairo/build/configure.ac.analysis similarity index 100% rename from 3rd-party/cairo/build/configure.ac.analysis rename to io2d/src/3rd-party/cairo/build/configure.ac.analysis diff --git a/3rd-party/cairo/build/configure.ac.features b/io2d/src/3rd-party/cairo/build/configure.ac.features similarity index 100% rename from 3rd-party/cairo/build/configure.ac.features rename to io2d/src/3rd-party/cairo/build/configure.ac.features diff --git a/3rd-party/cairo/build/configure.ac.noversion b/io2d/src/3rd-party/cairo/build/configure.ac.noversion similarity index 100% rename from 3rd-party/cairo/build/configure.ac.noversion rename to io2d/src/3rd-party/cairo/build/configure.ac.noversion diff --git a/3rd-party/cairo/build/configure.ac.pthread b/io2d/src/3rd-party/cairo/build/configure.ac.pthread similarity index 100% rename from 3rd-party/cairo/build/configure.ac.pthread rename to io2d/src/3rd-party/cairo/build/configure.ac.pthread diff --git a/3rd-party/cairo/build/configure.ac.system b/io2d/src/3rd-party/cairo/build/configure.ac.system similarity index 100% rename from 3rd-party/cairo/build/configure.ac.system rename to io2d/src/3rd-party/cairo/build/configure.ac.system diff --git a/3rd-party/cairo/build/configure.ac.tools b/io2d/src/3rd-party/cairo/build/configure.ac.tools similarity index 100% rename from 3rd-party/cairo/build/configure.ac.tools rename to io2d/src/3rd-party/cairo/build/configure.ac.tools diff --git a/3rd-party/cairo/build/configure.ac.version b/io2d/src/3rd-party/cairo/build/configure.ac.version similarity index 100% rename from 3rd-party/cairo/build/configure.ac.version rename to io2d/src/3rd-party/cairo/build/configure.ac.version diff --git a/3rd-party/cairo/build/configure.ac.warnings b/io2d/src/3rd-party/cairo/build/configure.ac.warnings similarity index 100% rename from 3rd-party/cairo/build/configure.ac.warnings rename to io2d/src/3rd-party/cairo/build/configure.ac.warnings diff --git a/3rd-party/cairo/cairo-version.h b/io2d/src/3rd-party/cairo/cairo-version.h similarity index 100% rename from 3rd-party/cairo/cairo-version.h rename to io2d/src/3rd-party/cairo/cairo-version.h diff --git a/3rd-party/cairo/configure.ac b/io2d/src/3rd-party/cairo/configure.ac similarity index 100% rename from 3rd-party/cairo/configure.ac rename to io2d/src/3rd-party/cairo/configure.ac diff --git a/3rd-party/cairo/doc/.gitignore b/io2d/src/3rd-party/cairo/doc/.gitignore similarity index 100% rename from 3rd-party/cairo/doc/.gitignore rename to io2d/src/3rd-party/cairo/doc/.gitignore diff --git a/3rd-party/cairo/doc/Makefile.am b/io2d/src/3rd-party/cairo/doc/Makefile.am similarity index 100% rename from 3rd-party/cairo/doc/Makefile.am rename to io2d/src/3rd-party/cairo/doc/Makefile.am diff --git a/3rd-party/cairo/doc/public/.gitignore b/io2d/src/3rd-party/cairo/doc/public/.gitignore similarity index 100% rename from 3rd-party/cairo/doc/public/.gitignore rename to io2d/src/3rd-party/cairo/doc/public/.gitignore diff --git a/3rd-party/cairo/doc/public/Makefile.am b/io2d/src/3rd-party/cairo/doc/public/Makefile.am similarity index 100% rename from 3rd-party/cairo/doc/public/Makefile.am rename to io2d/src/3rd-party/cairo/doc/public/Makefile.am diff --git a/3rd-party/cairo/doc/public/README b/io2d/src/3rd-party/cairo/doc/public/README similarity index 100% rename from 3rd-party/cairo/doc/public/README rename to io2d/src/3rd-party/cairo/doc/public/README diff --git a/3rd-party/cairo/doc/public/cairo-docs.xml b/io2d/src/3rd-party/cairo/doc/public/cairo-docs.xml similarity index 100% rename from 3rd-party/cairo/doc/public/cairo-docs.xml rename to io2d/src/3rd-party/cairo/doc/public/cairo-docs.xml diff --git a/3rd-party/cairo/doc/public/cairo-overrides.txt b/io2d/src/3rd-party/cairo/doc/public/cairo-overrides.txt similarity index 100% rename from 3rd-party/cairo/doc/public/cairo-overrides.txt rename to io2d/src/3rd-party/cairo/doc/public/cairo-overrides.txt diff --git a/3rd-party/cairo/doc/public/cairo-sections.txt b/io2d/src/3rd-party/cairo/doc/public/cairo-sections.txt similarity index 100% rename from 3rd-party/cairo/doc/public/cairo-sections.txt rename to io2d/src/3rd-party/cairo/doc/public/cairo-sections.txt diff --git a/3rd-party/cairo/doc/public/cairo.types b/io2d/src/3rd-party/cairo/doc/public/cairo.types similarity index 100% rename from 3rd-party/cairo/doc/public/cairo.types rename to io2d/src/3rd-party/cairo/doc/public/cairo.types diff --git a/3rd-party/cairo/doc/public/check-doc-coverage.sh b/io2d/src/3rd-party/cairo/doc/public/check-doc-coverage.sh similarity index 100% rename from 3rd-party/cairo/doc/public/check-doc-coverage.sh rename to io2d/src/3rd-party/cairo/doc/public/check-doc-coverage.sh diff --git a/3rd-party/cairo/doc/public/check-doc-syntax.sh b/io2d/src/3rd-party/cairo/doc/public/check-doc-syntax.sh similarity index 100% rename from 3rd-party/cairo/doc/public/check-doc-syntax.sh rename to io2d/src/3rd-party/cairo/doc/public/check-doc-syntax.sh diff --git a/3rd-party/cairo/doc/public/language-bindings.xml b/io2d/src/3rd-party/cairo/doc/public/language-bindings.xml similarity index 100% rename from 3rd-party/cairo/doc/public/language-bindings.xml rename to io2d/src/3rd-party/cairo/doc/public/language-bindings.xml diff --git a/3rd-party/cairo/doc/tutorial/slides/.gitignore b/io2d/src/3rd-party/cairo/doc/tutorial/slides/.gitignore similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/.gitignore rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/.gitignore diff --git a/3rd-party/cairo/doc/tutorial/slides/Makefile b/io2d/src/3rd-party/cairo/doc/tutorial/slides/Makefile similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/Makefile rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/Makefile diff --git a/3rd-party/cairo/doc/tutorial/slides/cairo-blank.svg b/io2d/src/3rd-party/cairo/doc/tutorial/slides/cairo-blank.svg similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/cairo-blank.svg rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/cairo-blank.svg diff --git a/3rd-party/cairo/doc/tutorial/slides/cairo-code.svg b/io2d/src/3rd-party/cairo/doc/tutorial/slides/cairo-code.svg similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/cairo-code.svg rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/cairo-code.svg diff --git a/3rd-party/cairo/doc/tutorial/slides/cairo-large-content.svg b/io2d/src/3rd-party/cairo/doc/tutorial/slides/cairo-large-content.svg similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/cairo-large-content.svg rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/cairo-large-content.svg diff --git a/3rd-party/cairo/doc/tutorial/slides/cairo-separator.svg b/io2d/src/3rd-party/cairo/doc/tutorial/slides/cairo-separator.svg similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/cairo-separator.svg rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/cairo-separator.svg diff --git a/3rd-party/cairo/doc/tutorial/slides/cairo-title.svg b/io2d/src/3rd-party/cairo/doc/tutorial/slides/cairo-title.svg similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/cairo-title.svg rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/cairo-title.svg diff --git a/3rd-party/cairo/doc/tutorial/slides/cairo.svg b/io2d/src/3rd-party/cairo/doc/tutorial/slides/cairo.svg similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/cairo.svg rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/cairo.svg diff --git a/3rd-party/cairo/doc/tutorial/slides/circle-cairo-large.png b/io2d/src/3rd-party/cairo/doc/tutorial/slides/circle-cairo-large.png similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/circle-cairo-large.png rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/circle-cairo-large.png diff --git a/3rd-party/cairo/doc/tutorial/slides/circle-cairo.png b/io2d/src/3rd-party/cairo/doc/tutorial/slides/circle-cairo.png similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/circle-cairo.png rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/circle-cairo.png diff --git a/3rd-party/cairo/doc/tutorial/slides/circle-ooo-large.png b/io2d/src/3rd-party/cairo/doc/tutorial/slides/circle-ooo-large.png similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/circle-ooo-large.png rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/circle-ooo-large.png diff --git a/3rd-party/cairo/doc/tutorial/slides/circle-ooo.png b/io2d/src/3rd-party/cairo/doc/tutorial/slides/circle-ooo.png similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/circle-ooo.png rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/circle-ooo.png diff --git a/3rd-party/cairo/doc/tutorial/slides/expander-fuzzy-large.png b/io2d/src/3rd-party/cairo/doc/tutorial/slides/expander-fuzzy-large.png similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/expander-fuzzy-large.png rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/expander-fuzzy-large.png diff --git a/3rd-party/cairo/doc/tutorial/slides/expander-fuzzy.png b/io2d/src/3rd-party/cairo/doc/tutorial/slides/expander-fuzzy.png similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/expander-fuzzy.png rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/expander-fuzzy.png diff --git a/3rd-party/cairo/doc/tutorial/slides/expander-sharp-large.png b/io2d/src/3rd-party/cairo/doc/tutorial/slides/expander-sharp-large.png similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/expander-sharp-large.png rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/expander-sharp-large.png diff --git a/3rd-party/cairo/doc/tutorial/slides/expander-sharp.png b/io2d/src/3rd-party/cairo/doc/tutorial/slides/expander-sharp.png similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/expander-sharp.png rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/expander-sharp.png diff --git a/3rd-party/cairo/doc/tutorial/slides/fuzzies.svg b/io2d/src/3rd-party/cairo/doc/tutorial/slides/fuzzies.svg similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/fuzzies.svg rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/fuzzies.svg diff --git a/3rd-party/cairo/doc/tutorial/slides/jaggies.svg b/io2d/src/3rd-party/cairo/doc/tutorial/slides/jaggies.svg similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/jaggies.svg rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/jaggies.svg diff --git a/3rd-party/cairo/doc/tutorial/slides/rendering-model.png b/io2d/src/3rd-party/cairo/doc/tutorial/slides/rendering-model.png similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/rendering-model.png rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/rendering-model.png diff --git a/3rd-party/cairo/doc/tutorial/slides/tutorial.xml b/io2d/src/3rd-party/cairo/doc/tutorial/slides/tutorial.xml similarity index 100% rename from 3rd-party/cairo/doc/tutorial/slides/tutorial.xml rename to io2d/src/3rd-party/cairo/doc/tutorial/slides/tutorial.xml diff --git a/3rd-party/cairo/doc/tutorial/src/.gitignore b/io2d/src/3rd-party/cairo/doc/tutorial/src/.gitignore similarity index 100% rename from 3rd-party/cairo/doc/tutorial/src/.gitignore rename to io2d/src/3rd-party/cairo/doc/tutorial/src/.gitignore diff --git a/3rd-party/cairo/doc/tutorial/src/Makefile b/io2d/src/3rd-party/cairo/doc/tutorial/src/Makefile similarity index 100% rename from 3rd-party/cairo/doc/tutorial/src/Makefile rename to io2d/src/3rd-party/cairo/doc/tutorial/src/Makefile diff --git a/3rd-party/cairo/doc/tutorial/src/README b/io2d/src/3rd-party/cairo/doc/tutorial/src/README similarity index 100% rename from 3rd-party/cairo/doc/tutorial/src/README rename to io2d/src/3rd-party/cairo/doc/tutorial/src/README diff --git a/3rd-party/cairo/doc/tutorial/src/circle.c b/io2d/src/3rd-party/cairo/doc/tutorial/src/circle.c similarity index 100% rename from 3rd-party/cairo/doc/tutorial/src/circle.c rename to io2d/src/3rd-party/cairo/doc/tutorial/src/circle.c diff --git a/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-gtk.h b/io2d/src/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-gtk.h similarity index 100% rename from 3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-gtk.h rename to io2d/src/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-gtk.h diff --git a/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-pdf.h b/io2d/src/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-pdf.h similarity index 100% rename from 3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-pdf.h rename to io2d/src/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-pdf.h diff --git a/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-png.h b/io2d/src/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-png.h similarity index 100% rename from 3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-png.h rename to io2d/src/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-png.h diff --git a/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-xlib.h b/io2d/src/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-xlib.h similarity index 100% rename from 3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-xlib.h rename to io2d/src/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial-xlib.h diff --git a/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial.h b/io2d/src/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial.h similarity index 100% rename from 3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial.h rename to io2d/src/3rd-party/cairo/doc/tutorial/src/include/cairo-tutorial.h diff --git a/3rd-party/cairo/doc/tutorial/src/lca.c b/io2d/src/3rd-party/cairo/doc/tutorial/src/lca.c similarity index 100% rename from 3rd-party/cairo/doc/tutorial/src/lca.c rename to io2d/src/3rd-party/cairo/doc/tutorial/src/lca.c diff --git a/3rd-party/cairo/doc/tutorial/src/singular.c b/io2d/src/3rd-party/cairo/doc/tutorial/src/singular.c similarity index 100% rename from 3rd-party/cairo/doc/tutorial/src/singular.c rename to io2d/src/3rd-party/cairo/doc/tutorial/src/singular.c diff --git a/3rd-party/cairo/doc/tutorial/src/twin.c b/io2d/src/3rd-party/cairo/doc/tutorial/src/twin.c similarity index 100% rename from 3rd-party/cairo/doc/tutorial/src/twin.c rename to io2d/src/3rd-party/cairo/doc/tutorial/src/twin.c diff --git a/3rd-party/cairo/perf/.gitignore b/io2d/src/3rd-party/cairo/perf/.gitignore similarity index 100% rename from 3rd-party/cairo/perf/.gitignore rename to io2d/src/3rd-party/cairo/perf/.gitignore diff --git a/3rd-party/cairo/perf/COPYING b/io2d/src/3rd-party/cairo/perf/COPYING similarity index 100% rename from 3rd-party/cairo/perf/COPYING rename to io2d/src/3rd-party/cairo/perf/COPYING diff --git a/3rd-party/cairo/perf/Makefile.am b/io2d/src/3rd-party/cairo/perf/Makefile.am similarity index 100% rename from 3rd-party/cairo/perf/Makefile.am rename to io2d/src/3rd-party/cairo/perf/Makefile.am diff --git a/3rd-party/cairo/perf/Makefile.sources b/io2d/src/3rd-party/cairo/perf/Makefile.sources similarity index 100% rename from 3rd-party/cairo/perf/Makefile.sources rename to io2d/src/3rd-party/cairo/perf/Makefile.sources diff --git a/3rd-party/cairo/perf/Makefile.win32 b/io2d/src/3rd-party/cairo/perf/Makefile.win32 similarity index 100% rename from 3rd-party/cairo/perf/Makefile.win32 rename to io2d/src/3rd-party/cairo/perf/Makefile.win32 diff --git a/3rd-party/cairo/perf/README b/io2d/src/3rd-party/cairo/perf/README similarity index 100% rename from 3rd-party/cairo/perf/README rename to io2d/src/3rd-party/cairo/perf/README diff --git a/3rd-party/cairo/perf/cairo-analyse-trace.c b/io2d/src/3rd-party/cairo/perf/cairo-analyse-trace.c similarity index 100% rename from 3rd-party/cairo/perf/cairo-analyse-trace.c rename to io2d/src/3rd-party/cairo/perf/cairo-analyse-trace.c diff --git a/3rd-party/cairo/perf/cairo-perf-chart.c b/io2d/src/3rd-party/cairo/perf/cairo-perf-chart.c similarity index 100% rename from 3rd-party/cairo/perf/cairo-perf-chart.c rename to io2d/src/3rd-party/cairo/perf/cairo-perf-chart.c diff --git a/3rd-party/cairo/perf/cairo-perf-compare-backends.c b/io2d/src/3rd-party/cairo/perf/cairo-perf-compare-backends.c similarity index 100% rename from 3rd-party/cairo/perf/cairo-perf-compare-backends.c rename to io2d/src/3rd-party/cairo/perf/cairo-perf-compare-backends.c diff --git a/3rd-party/cairo/perf/cairo-perf-diff b/io2d/src/3rd-party/cairo/perf/cairo-perf-diff similarity index 100% rename from 3rd-party/cairo/perf/cairo-perf-diff rename to io2d/src/3rd-party/cairo/perf/cairo-perf-diff diff --git a/3rd-party/cairo/perf/cairo-perf-diff-files.c b/io2d/src/3rd-party/cairo/perf/cairo-perf-diff-files.c similarity index 100% rename from 3rd-party/cairo/perf/cairo-perf-diff-files.c rename to io2d/src/3rd-party/cairo/perf/cairo-perf-diff-files.c diff --git a/3rd-party/cairo/perf/cairo-perf-graph b/io2d/src/3rd-party/cairo/perf/cairo-perf-graph similarity index 100% rename from 3rd-party/cairo/perf/cairo-perf-graph rename to io2d/src/3rd-party/cairo/perf/cairo-perf-graph diff --git a/3rd-party/cairo/perf/cairo-perf-graph-files.c b/io2d/src/3rd-party/cairo/perf/cairo-perf-graph-files.c similarity index 100% rename from 3rd-party/cairo/perf/cairo-perf-graph-files.c rename to io2d/src/3rd-party/cairo/perf/cairo-perf-graph-files.c diff --git a/3rd-party/cairo/perf/cairo-perf-graph-widget.c b/io2d/src/3rd-party/cairo/perf/cairo-perf-graph-widget.c similarity index 100% rename from 3rd-party/cairo/perf/cairo-perf-graph-widget.c rename to io2d/src/3rd-party/cairo/perf/cairo-perf-graph-widget.c diff --git a/3rd-party/cairo/perf/cairo-perf-graph.h b/io2d/src/3rd-party/cairo/perf/cairo-perf-graph.h similarity index 100% rename from 3rd-party/cairo/perf/cairo-perf-graph.h rename to io2d/src/3rd-party/cairo/perf/cairo-perf-graph.h diff --git a/3rd-party/cairo/perf/cairo-perf-micro.c b/io2d/src/3rd-party/cairo/perf/cairo-perf-micro.c similarity index 100% rename from 3rd-party/cairo/perf/cairo-perf-micro.c rename to io2d/src/3rd-party/cairo/perf/cairo-perf-micro.c diff --git a/3rd-party/cairo/perf/cairo-perf-print.c b/io2d/src/3rd-party/cairo/perf/cairo-perf-print.c similarity index 100% rename from 3rd-party/cairo/perf/cairo-perf-print.c rename to io2d/src/3rd-party/cairo/perf/cairo-perf-print.c diff --git a/3rd-party/cairo/perf/cairo-perf-report.c b/io2d/src/3rd-party/cairo/perf/cairo-perf-report.c similarity index 100% rename from 3rd-party/cairo/perf/cairo-perf-report.c rename to io2d/src/3rd-party/cairo/perf/cairo-perf-report.c diff --git a/3rd-party/cairo/perf/cairo-perf-trace.c b/io2d/src/3rd-party/cairo/perf/cairo-perf-trace.c similarity index 100% rename from 3rd-party/cairo/perf/cairo-perf-trace.c rename to io2d/src/3rd-party/cairo/perf/cairo-perf-trace.c diff --git a/3rd-party/cairo/perf/cairo-perf.c b/io2d/src/3rd-party/cairo/perf/cairo-perf.c similarity index 100% rename from 3rd-party/cairo/perf/cairo-perf.c rename to io2d/src/3rd-party/cairo/perf/cairo-perf.c diff --git a/3rd-party/cairo/perf/cairo-perf.h b/io2d/src/3rd-party/cairo/perf/cairo-perf.h similarity index 100% rename from 3rd-party/cairo/perf/cairo-perf.h rename to io2d/src/3rd-party/cairo/perf/cairo-perf.h diff --git a/3rd-party/cairo/perf/cairo-stats.c b/io2d/src/3rd-party/cairo/perf/cairo-stats.c similarity index 100% rename from 3rd-party/cairo/perf/cairo-stats.c rename to io2d/src/3rd-party/cairo/perf/cairo-stats.c diff --git a/3rd-party/cairo/perf/cairo-stats.h b/io2d/src/3rd-party/cairo/perf/cairo-stats.h similarity index 100% rename from 3rd-party/cairo/perf/cairo-stats.h rename to io2d/src/3rd-party/cairo/perf/cairo-stats.h diff --git a/3rd-party/cairo/perf/dirent-win32.h b/io2d/src/3rd-party/cairo/perf/dirent-win32.h similarity index 100% rename from 3rd-party/cairo/perf/dirent-win32.h rename to io2d/src/3rd-party/cairo/perf/dirent-win32.h diff --git a/3rd-party/cairo/perf/make-html.py b/io2d/src/3rd-party/cairo/perf/make-html.py similarity index 100% rename from 3rd-party/cairo/perf/make-html.py rename to io2d/src/3rd-party/cairo/perf/make-html.py diff --git a/3rd-party/cairo/perf/micro/Makefile.am b/io2d/src/3rd-party/cairo/perf/micro/Makefile.am similarity index 100% rename from 3rd-party/cairo/perf/micro/Makefile.am rename to io2d/src/3rd-party/cairo/perf/micro/Makefile.am diff --git a/3rd-party/cairo/perf/micro/Makefile.sources b/io2d/src/3rd-party/cairo/perf/micro/Makefile.sources similarity index 100% rename from 3rd-party/cairo/perf/micro/Makefile.sources rename to io2d/src/3rd-party/cairo/perf/micro/Makefile.sources diff --git a/3rd-party/cairo/perf/micro/Makefile.win32 b/io2d/src/3rd-party/cairo/perf/micro/Makefile.win32 similarity index 100% rename from 3rd-party/cairo/perf/micro/Makefile.win32 rename to io2d/src/3rd-party/cairo/perf/micro/Makefile.win32 diff --git a/3rd-party/cairo/perf/micro/a1-curve.c b/io2d/src/3rd-party/cairo/perf/micro/a1-curve.c similarity index 100% rename from 3rd-party/cairo/perf/micro/a1-curve.c rename to io2d/src/3rd-party/cairo/perf/micro/a1-curve.c diff --git a/3rd-party/cairo/perf/micro/a1-line.c b/io2d/src/3rd-party/cairo/perf/micro/a1-line.c similarity index 100% rename from 3rd-party/cairo/perf/micro/a1-line.c rename to io2d/src/3rd-party/cairo/perf/micro/a1-line.c diff --git a/3rd-party/cairo/perf/micro/box-outline.c b/io2d/src/3rd-party/cairo/perf/micro/box-outline.c similarity index 100% rename from 3rd-party/cairo/perf/micro/box-outline.c rename to io2d/src/3rd-party/cairo/perf/micro/box-outline.c diff --git a/3rd-party/cairo/perf/micro/cairo-perf-cover.c b/io2d/src/3rd-party/cairo/perf/micro/cairo-perf-cover.c similarity index 100% rename from 3rd-party/cairo/perf/micro/cairo-perf-cover.c rename to io2d/src/3rd-party/cairo/perf/micro/cairo-perf-cover.c diff --git a/3rd-party/cairo/perf/micro/composite-checker.c b/io2d/src/3rd-party/cairo/perf/micro/composite-checker.c similarity index 100% rename from 3rd-party/cairo/perf/micro/composite-checker.c rename to io2d/src/3rd-party/cairo/perf/micro/composite-checker.c diff --git a/3rd-party/cairo/perf/micro/curve.c b/io2d/src/3rd-party/cairo/perf/micro/curve.c similarity index 100% rename from 3rd-party/cairo/perf/micro/curve.c rename to io2d/src/3rd-party/cairo/perf/micro/curve.c diff --git a/3rd-party/cairo/perf/micro/disjoint.c b/io2d/src/3rd-party/cairo/perf/micro/disjoint.c similarity index 100% rename from 3rd-party/cairo/perf/micro/disjoint.c rename to io2d/src/3rd-party/cairo/perf/micro/disjoint.c diff --git a/3rd-party/cairo/perf/micro/dragon.c b/io2d/src/3rd-party/cairo/perf/micro/dragon.c similarity index 100% rename from 3rd-party/cairo/perf/micro/dragon.c rename to io2d/src/3rd-party/cairo/perf/micro/dragon.c diff --git a/3rd-party/cairo/perf/micro/fill-clip.c b/io2d/src/3rd-party/cairo/perf/micro/fill-clip.c similarity index 100% rename from 3rd-party/cairo/perf/micro/fill-clip.c rename to io2d/src/3rd-party/cairo/perf/micro/fill-clip.c diff --git a/3rd-party/cairo/perf/micro/fill.c b/io2d/src/3rd-party/cairo/perf/micro/fill.c similarity index 100% rename from 3rd-party/cairo/perf/micro/fill.c rename to io2d/src/3rd-party/cairo/perf/micro/fill.c diff --git a/3rd-party/cairo/perf/micro/glyphs.c b/io2d/src/3rd-party/cairo/perf/micro/glyphs.c similarity index 100% rename from 3rd-party/cairo/perf/micro/glyphs.c rename to io2d/src/3rd-party/cairo/perf/micro/glyphs.c diff --git a/3rd-party/cairo/perf/micro/hash-table.c b/io2d/src/3rd-party/cairo/perf/micro/hash-table.c similarity index 100% rename from 3rd-party/cairo/perf/micro/hash-table.c rename to io2d/src/3rd-party/cairo/perf/micro/hash-table.c diff --git a/3rd-party/cairo/perf/micro/hatching.c b/io2d/src/3rd-party/cairo/perf/micro/hatching.c similarity index 100% rename from 3rd-party/cairo/perf/micro/hatching.c rename to io2d/src/3rd-party/cairo/perf/micro/hatching.c diff --git a/3rd-party/cairo/perf/micro/intersections.c b/io2d/src/3rd-party/cairo/perf/micro/intersections.c similarity index 100% rename from 3rd-party/cairo/perf/micro/intersections.c rename to io2d/src/3rd-party/cairo/perf/micro/intersections.c diff --git a/3rd-party/cairo/perf/micro/line.c b/io2d/src/3rd-party/cairo/perf/micro/line.c similarity index 100% rename from 3rd-party/cairo/perf/micro/line.c rename to io2d/src/3rd-party/cairo/perf/micro/line.c diff --git a/3rd-party/cairo/perf/micro/long-dashed-lines.c b/io2d/src/3rd-party/cairo/perf/micro/long-dashed-lines.c similarity index 100% rename from 3rd-party/cairo/perf/micro/long-dashed-lines.c rename to io2d/src/3rd-party/cairo/perf/micro/long-dashed-lines.c diff --git a/3rd-party/cairo/perf/micro/long-lines.c b/io2d/src/3rd-party/cairo/perf/micro/long-lines.c similarity index 100% rename from 3rd-party/cairo/perf/micro/long-lines.c rename to io2d/src/3rd-party/cairo/perf/micro/long-lines.c diff --git a/3rd-party/cairo/perf/micro/many-curves.c b/io2d/src/3rd-party/cairo/perf/micro/many-curves.c similarity index 100% rename from 3rd-party/cairo/perf/micro/many-curves.c rename to io2d/src/3rd-party/cairo/perf/micro/many-curves.c diff --git a/3rd-party/cairo/perf/micro/many-fills.c b/io2d/src/3rd-party/cairo/perf/micro/many-fills.c similarity index 100% rename from 3rd-party/cairo/perf/micro/many-fills.c rename to io2d/src/3rd-party/cairo/perf/micro/many-fills.c diff --git a/3rd-party/cairo/perf/micro/many-strokes.c b/io2d/src/3rd-party/cairo/perf/micro/many-strokes.c similarity index 100% rename from 3rd-party/cairo/perf/micro/many-strokes.c rename to io2d/src/3rd-party/cairo/perf/micro/many-strokes.c diff --git a/3rd-party/cairo/perf/micro/mask.c b/io2d/src/3rd-party/cairo/perf/micro/mask.c similarity index 100% rename from 3rd-party/cairo/perf/micro/mask.c rename to io2d/src/3rd-party/cairo/perf/micro/mask.c diff --git a/3rd-party/cairo/perf/micro/mosaic.c b/io2d/src/3rd-party/cairo/perf/micro/mosaic.c similarity index 100% rename from 3rd-party/cairo/perf/micro/mosaic.c rename to io2d/src/3rd-party/cairo/perf/micro/mosaic.c diff --git a/3rd-party/cairo/perf/micro/mosaic.h b/io2d/src/3rd-party/cairo/perf/micro/mosaic.h similarity index 100% rename from 3rd-party/cairo/perf/micro/mosaic.h rename to io2d/src/3rd-party/cairo/perf/micro/mosaic.h diff --git a/3rd-party/cairo/perf/micro/paint-with-alpha.c b/io2d/src/3rd-party/cairo/perf/micro/paint-with-alpha.c similarity index 100% rename from 3rd-party/cairo/perf/micro/paint-with-alpha.c rename to io2d/src/3rd-party/cairo/perf/micro/paint-with-alpha.c diff --git a/3rd-party/cairo/perf/micro/paint.c b/io2d/src/3rd-party/cairo/perf/micro/paint.c similarity index 100% rename from 3rd-party/cairo/perf/micro/paint.c rename to io2d/src/3rd-party/cairo/perf/micro/paint.c diff --git a/3rd-party/cairo/perf/micro/pattern_create_radial.c b/io2d/src/3rd-party/cairo/perf/micro/pattern_create_radial.c similarity index 100% rename from 3rd-party/cairo/perf/micro/pattern_create_radial.c rename to io2d/src/3rd-party/cairo/perf/micro/pattern_create_radial.c diff --git a/3rd-party/cairo/perf/micro/pixel.c b/io2d/src/3rd-party/cairo/perf/micro/pixel.c similarity index 100% rename from 3rd-party/cairo/perf/micro/pixel.c rename to io2d/src/3rd-party/cairo/perf/micro/pixel.c diff --git a/3rd-party/cairo/perf/micro/pythagoras-tree.c b/io2d/src/3rd-party/cairo/perf/micro/pythagoras-tree.c similarity index 100% rename from 3rd-party/cairo/perf/micro/pythagoras-tree.c rename to io2d/src/3rd-party/cairo/perf/micro/pythagoras-tree.c diff --git a/3rd-party/cairo/perf/micro/rectangles.c b/io2d/src/3rd-party/cairo/perf/micro/rectangles.c similarity index 100% rename from 3rd-party/cairo/perf/micro/rectangles.c rename to io2d/src/3rd-party/cairo/perf/micro/rectangles.c diff --git a/3rd-party/cairo/perf/micro/rounded-rectangles.c b/io2d/src/3rd-party/cairo/perf/micro/rounded-rectangles.c similarity index 100% rename from 3rd-party/cairo/perf/micro/rounded-rectangles.c rename to io2d/src/3rd-party/cairo/perf/micro/rounded-rectangles.c diff --git a/3rd-party/cairo/perf/micro/sierpinski.c b/io2d/src/3rd-party/cairo/perf/micro/sierpinski.c similarity index 100% rename from 3rd-party/cairo/perf/micro/sierpinski.c rename to io2d/src/3rd-party/cairo/perf/micro/sierpinski.c diff --git a/3rd-party/cairo/perf/micro/spiral.c b/io2d/src/3rd-party/cairo/perf/micro/spiral.c similarity index 100% rename from 3rd-party/cairo/perf/micro/spiral.c rename to io2d/src/3rd-party/cairo/perf/micro/spiral.c diff --git a/3rd-party/cairo/perf/micro/stroke.c b/io2d/src/3rd-party/cairo/perf/micro/stroke.c similarity index 100% rename from 3rd-party/cairo/perf/micro/stroke.c rename to io2d/src/3rd-party/cairo/perf/micro/stroke.c diff --git a/3rd-party/cairo/perf/micro/subimage_copy.c b/io2d/src/3rd-party/cairo/perf/micro/subimage_copy.c similarity index 100% rename from 3rd-party/cairo/perf/micro/subimage_copy.c rename to io2d/src/3rd-party/cairo/perf/micro/subimage_copy.c diff --git a/3rd-party/cairo/perf/micro/tessellate.c b/io2d/src/3rd-party/cairo/perf/micro/tessellate.c similarity index 100% rename from 3rd-party/cairo/perf/micro/tessellate.c rename to io2d/src/3rd-party/cairo/perf/micro/tessellate.c diff --git a/3rd-party/cairo/perf/micro/text.c b/io2d/src/3rd-party/cairo/perf/micro/text.c similarity index 100% rename from 3rd-party/cairo/perf/micro/text.c rename to io2d/src/3rd-party/cairo/perf/micro/text.c diff --git a/3rd-party/cairo/perf/micro/tiger.c b/io2d/src/3rd-party/cairo/perf/micro/tiger.c similarity index 100% rename from 3rd-party/cairo/perf/micro/tiger.c rename to io2d/src/3rd-party/cairo/perf/micro/tiger.c diff --git a/3rd-party/cairo/perf/micro/twin.c b/io2d/src/3rd-party/cairo/perf/micro/twin.c similarity index 100% rename from 3rd-party/cairo/perf/micro/twin.c rename to io2d/src/3rd-party/cairo/perf/micro/twin.c diff --git a/3rd-party/cairo/perf/micro/unaligned-clip.c b/io2d/src/3rd-party/cairo/perf/micro/unaligned-clip.c similarity index 100% rename from 3rd-party/cairo/perf/micro/unaligned-clip.c rename to io2d/src/3rd-party/cairo/perf/micro/unaligned-clip.c diff --git a/3rd-party/cairo/perf/micro/wave.c b/io2d/src/3rd-party/cairo/perf/micro/wave.c similarity index 100% rename from 3rd-party/cairo/perf/micro/wave.c rename to io2d/src/3rd-party/cairo/perf/micro/wave.c diff --git a/3rd-party/cairo/perf/micro/wide-fills.c b/io2d/src/3rd-party/cairo/perf/micro/wide-fills.c similarity index 100% rename from 3rd-party/cairo/perf/micro/wide-fills.c rename to io2d/src/3rd-party/cairo/perf/micro/wide-fills.c diff --git a/3rd-party/cairo/perf/micro/wide-strokes.c b/io2d/src/3rd-party/cairo/perf/micro/wide-strokes.c similarity index 100% rename from 3rd-party/cairo/perf/micro/wide-strokes.c rename to io2d/src/3rd-party/cairo/perf/micro/wide-strokes.c diff --git a/3rd-party/cairo/perf/micro/world-map.c b/io2d/src/3rd-party/cairo/perf/micro/world-map.c similarity index 100% rename from 3rd-party/cairo/perf/micro/world-map.c rename to io2d/src/3rd-party/cairo/perf/micro/world-map.c diff --git a/3rd-party/cairo/perf/micro/world-map.h b/io2d/src/3rd-party/cairo/perf/micro/world-map.h similarity index 100% rename from 3rd-party/cairo/perf/micro/world-map.h rename to io2d/src/3rd-party/cairo/perf/micro/world-map.h diff --git a/3rd-party/cairo/perf/micro/zrusin-another.h b/io2d/src/3rd-party/cairo/perf/micro/zrusin-another.h similarity index 100% rename from 3rd-party/cairo/perf/micro/zrusin-another.h rename to io2d/src/3rd-party/cairo/perf/micro/zrusin-another.h diff --git a/3rd-party/cairo/perf/micro/zrusin.c b/io2d/src/3rd-party/cairo/perf/micro/zrusin.c similarity index 100% rename from 3rd-party/cairo/perf/micro/zrusin.c rename to io2d/src/3rd-party/cairo/perf/micro/zrusin.c diff --git a/3rd-party/cairo/src/.gitignore b/io2d/src/3rd-party/cairo/src/.gitignore similarity index 100% rename from 3rd-party/cairo/src/.gitignore rename to io2d/src/3rd-party/cairo/src/.gitignore diff --git a/3rd-party/cairo/src/Makefile.am b/io2d/src/3rd-party/cairo/src/Makefile.am similarity index 100% rename from 3rd-party/cairo/src/Makefile.am rename to io2d/src/3rd-party/cairo/src/Makefile.am diff --git a/3rd-party/cairo/src/Makefile.am.analysis b/io2d/src/3rd-party/cairo/src/Makefile.am.analysis similarity index 100% rename from 3rd-party/cairo/src/Makefile.am.analysis rename to io2d/src/3rd-party/cairo/src/Makefile.am.analysis diff --git a/3rd-party/cairo/src/Makefile.sources b/io2d/src/3rd-party/cairo/src/Makefile.sources similarity index 100% rename from 3rd-party/cairo/src/Makefile.sources rename to io2d/src/3rd-party/cairo/src/Makefile.sources diff --git a/3rd-party/cairo/src/Makefile.win32 b/io2d/src/3rd-party/cairo/src/Makefile.win32 similarity index 100% rename from 3rd-party/cairo/src/Makefile.win32 rename to io2d/src/3rd-party/cairo/src/Makefile.win32 diff --git a/3rd-party/cairo/src/Makefile.win32.features b/io2d/src/3rd-party/cairo/src/Makefile.win32.features similarity index 100% rename from 3rd-party/cairo/src/Makefile.win32.features rename to io2d/src/3rd-party/cairo/src/Makefile.win32.features diff --git a/3rd-party/cairo/src/README b/io2d/src/3rd-party/cairo/src/README similarity index 100% rename from 3rd-party/cairo/src/README rename to io2d/src/3rd-party/cairo/src/README diff --git a/3rd-party/cairo/src/cairo-analysis-surface-private.h b/io2d/src/3rd-party/cairo/src/cairo-analysis-surface-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-analysis-surface-private.h rename to io2d/src/3rd-party/cairo/src/cairo-analysis-surface-private.h diff --git a/3rd-party/cairo/src/cairo-analysis-surface.c b/io2d/src/3rd-party/cairo/src/cairo-analysis-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-analysis-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-analysis-surface.c diff --git a/3rd-party/cairo/src/cairo-arc-private.h b/io2d/src/3rd-party/cairo/src/cairo-arc-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-arc-private.h rename to io2d/src/3rd-party/cairo/src/cairo-arc-private.h diff --git a/3rd-party/cairo/src/cairo-arc.c b/io2d/src/3rd-party/cairo/src/cairo-arc.c similarity index 100% rename from 3rd-party/cairo/src/cairo-arc.c rename to io2d/src/3rd-party/cairo/src/cairo-arc.c diff --git a/3rd-party/cairo/src/cairo-array-private.h b/io2d/src/3rd-party/cairo/src/cairo-array-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-array-private.h rename to io2d/src/3rd-party/cairo/src/cairo-array-private.h diff --git a/3rd-party/cairo/src/cairo-array.c b/io2d/src/3rd-party/cairo/src/cairo-array.c similarity index 100% rename from 3rd-party/cairo/src/cairo-array.c rename to io2d/src/3rd-party/cairo/src/cairo-array.c diff --git a/3rd-party/cairo/src/cairo-atomic-private.h b/io2d/src/3rd-party/cairo/src/cairo-atomic-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-atomic-private.h rename to io2d/src/3rd-party/cairo/src/cairo-atomic-private.h diff --git a/3rd-party/cairo/src/cairo-atomic.c b/io2d/src/3rd-party/cairo/src/cairo-atomic.c similarity index 100% rename from 3rd-party/cairo/src/cairo-atomic.c rename to io2d/src/3rd-party/cairo/src/cairo-atomic.c diff --git a/3rd-party/cairo/src/cairo-backend-private.h b/io2d/src/3rd-party/cairo/src/cairo-backend-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-backend-private.h rename to io2d/src/3rd-party/cairo/src/cairo-backend-private.h diff --git a/3rd-party/cairo/src/cairo-base64-stream.c b/io2d/src/3rd-party/cairo/src/cairo-base64-stream.c similarity index 100% rename from 3rd-party/cairo/src/cairo-base64-stream.c rename to io2d/src/3rd-party/cairo/src/cairo-base64-stream.c diff --git a/3rd-party/cairo/src/cairo-base85-stream.c b/io2d/src/3rd-party/cairo/src/cairo-base85-stream.c similarity index 100% rename from 3rd-party/cairo/src/cairo-base85-stream.c rename to io2d/src/3rd-party/cairo/src/cairo-base85-stream.c diff --git a/3rd-party/cairo/src/cairo-bentley-ottmann-rectangular.c b/io2d/src/3rd-party/cairo/src/cairo-bentley-ottmann-rectangular.c similarity index 100% rename from 3rd-party/cairo/src/cairo-bentley-ottmann-rectangular.c rename to io2d/src/3rd-party/cairo/src/cairo-bentley-ottmann-rectangular.c diff --git a/3rd-party/cairo/src/cairo-bentley-ottmann-rectilinear.c b/io2d/src/3rd-party/cairo/src/cairo-bentley-ottmann-rectilinear.c similarity index 100% rename from 3rd-party/cairo/src/cairo-bentley-ottmann-rectilinear.c rename to io2d/src/3rd-party/cairo/src/cairo-bentley-ottmann-rectilinear.c diff --git a/3rd-party/cairo/src/cairo-bentley-ottmann.c b/io2d/src/3rd-party/cairo/src/cairo-bentley-ottmann.c similarity index 100% rename from 3rd-party/cairo/src/cairo-bentley-ottmann.c rename to io2d/src/3rd-party/cairo/src/cairo-bentley-ottmann.c diff --git a/3rd-party/cairo/src/cairo-beos-surface.cpp b/io2d/src/3rd-party/cairo/src/cairo-beos-surface.cpp similarity index 100% rename from 3rd-party/cairo/src/cairo-beos-surface.cpp rename to io2d/src/3rd-party/cairo/src/cairo-beos-surface.cpp diff --git a/3rd-party/cairo/src/cairo-beos.h b/io2d/src/3rd-party/cairo/src/cairo-beos.h similarity index 100% rename from 3rd-party/cairo/src/cairo-beos.h rename to io2d/src/3rd-party/cairo/src/cairo-beos.h diff --git a/3rd-party/cairo/src/cairo-botor-scan-converter.c b/io2d/src/3rd-party/cairo/src/cairo-botor-scan-converter.c similarity index 100% rename from 3rd-party/cairo/src/cairo-botor-scan-converter.c rename to io2d/src/3rd-party/cairo/src/cairo-botor-scan-converter.c diff --git a/3rd-party/cairo/src/cairo-box-inline.h b/io2d/src/3rd-party/cairo/src/cairo-box-inline.h similarity index 100% rename from 3rd-party/cairo/src/cairo-box-inline.h rename to io2d/src/3rd-party/cairo/src/cairo-box-inline.h diff --git a/3rd-party/cairo/src/cairo-boxes-intersect.c b/io2d/src/3rd-party/cairo/src/cairo-boxes-intersect.c similarity index 100% rename from 3rd-party/cairo/src/cairo-boxes-intersect.c rename to io2d/src/3rd-party/cairo/src/cairo-boxes-intersect.c diff --git a/3rd-party/cairo/src/cairo-boxes-private.h b/io2d/src/3rd-party/cairo/src/cairo-boxes-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-boxes-private.h rename to io2d/src/3rd-party/cairo/src/cairo-boxes-private.h diff --git a/3rd-party/cairo/src/cairo-boxes.c b/io2d/src/3rd-party/cairo/src/cairo-boxes.c similarity index 100% rename from 3rd-party/cairo/src/cairo-boxes.c rename to io2d/src/3rd-party/cairo/src/cairo-boxes.c diff --git a/3rd-party/cairo/src/cairo-cache-private.h b/io2d/src/3rd-party/cairo/src/cairo-cache-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-cache-private.h rename to io2d/src/3rd-party/cairo/src/cairo-cache-private.h diff --git a/3rd-party/cairo/src/cairo-cache.c b/io2d/src/3rd-party/cairo/src/cairo-cache.c similarity index 100% rename from 3rd-party/cairo/src/cairo-cache.c rename to io2d/src/3rd-party/cairo/src/cairo-cache.c diff --git a/3rd-party/cairo/src/cairo-cff-subset.c b/io2d/src/3rd-party/cairo/src/cairo-cff-subset.c similarity index 100% rename from 3rd-party/cairo/src/cairo-cff-subset.c rename to io2d/src/3rd-party/cairo/src/cairo-cff-subset.c diff --git a/3rd-party/cairo/src/cairo-clip-boxes.c b/io2d/src/3rd-party/cairo/src/cairo-clip-boxes.c similarity index 100% rename from 3rd-party/cairo/src/cairo-clip-boxes.c rename to io2d/src/3rd-party/cairo/src/cairo-clip-boxes.c diff --git a/3rd-party/cairo/src/cairo-clip-inline.h b/io2d/src/3rd-party/cairo/src/cairo-clip-inline.h similarity index 100% rename from 3rd-party/cairo/src/cairo-clip-inline.h rename to io2d/src/3rd-party/cairo/src/cairo-clip-inline.h diff --git a/3rd-party/cairo/src/cairo-clip-polygon.c b/io2d/src/3rd-party/cairo/src/cairo-clip-polygon.c similarity index 100% rename from 3rd-party/cairo/src/cairo-clip-polygon.c rename to io2d/src/3rd-party/cairo/src/cairo-clip-polygon.c diff --git a/3rd-party/cairo/src/cairo-clip-private.h b/io2d/src/3rd-party/cairo/src/cairo-clip-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-clip-private.h rename to io2d/src/3rd-party/cairo/src/cairo-clip-private.h diff --git a/3rd-party/cairo/src/cairo-clip-region.c b/io2d/src/3rd-party/cairo/src/cairo-clip-region.c similarity index 100% rename from 3rd-party/cairo/src/cairo-clip-region.c rename to io2d/src/3rd-party/cairo/src/cairo-clip-region.c diff --git a/3rd-party/cairo/src/cairo-clip-surface.c b/io2d/src/3rd-party/cairo/src/cairo-clip-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-clip-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-clip-surface.c diff --git a/3rd-party/cairo/src/cairo-clip-tor-scan-converter.c b/io2d/src/3rd-party/cairo/src/cairo-clip-tor-scan-converter.c similarity index 100% rename from 3rd-party/cairo/src/cairo-clip-tor-scan-converter.c rename to io2d/src/3rd-party/cairo/src/cairo-clip-tor-scan-converter.c diff --git a/3rd-party/cairo/src/cairo-clip.c b/io2d/src/3rd-party/cairo/src/cairo-clip.c similarity index 100% rename from 3rd-party/cairo/src/cairo-clip.c rename to io2d/src/3rd-party/cairo/src/cairo-clip.c diff --git a/3rd-party/cairo/src/cairo-cogl-context-private.h b/io2d/src/3rd-party/cairo/src/cairo-cogl-context-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-cogl-context-private.h rename to io2d/src/3rd-party/cairo/src/cairo-cogl-context-private.h diff --git a/3rd-party/cairo/src/cairo-cogl-context.c b/io2d/src/3rd-party/cairo/src/cairo-cogl-context.c similarity index 100% rename from 3rd-party/cairo/src/cairo-cogl-context.c rename to io2d/src/3rd-party/cairo/src/cairo-cogl-context.c diff --git a/3rd-party/cairo/src/cairo-cogl-gradient-private.h b/io2d/src/3rd-party/cairo/src/cairo-cogl-gradient-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-cogl-gradient-private.h rename to io2d/src/3rd-party/cairo/src/cairo-cogl-gradient-private.h diff --git a/3rd-party/cairo/src/cairo-cogl-gradient.c b/io2d/src/3rd-party/cairo/src/cairo-cogl-gradient.c similarity index 100% rename from 3rd-party/cairo/src/cairo-cogl-gradient.c rename to io2d/src/3rd-party/cairo/src/cairo-cogl-gradient.c diff --git a/3rd-party/cairo/src/cairo-cogl-private.h b/io2d/src/3rd-party/cairo/src/cairo-cogl-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-cogl-private.h rename to io2d/src/3rd-party/cairo/src/cairo-cogl-private.h diff --git a/3rd-party/cairo/src/cairo-cogl-surface.c b/io2d/src/3rd-party/cairo/src/cairo-cogl-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-cogl-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-cogl-surface.c diff --git a/3rd-party/cairo/src/cairo-cogl-utils-private.h b/io2d/src/3rd-party/cairo/src/cairo-cogl-utils-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-cogl-utils-private.h rename to io2d/src/3rd-party/cairo/src/cairo-cogl-utils-private.h diff --git a/3rd-party/cairo/src/cairo-cogl-utils.c b/io2d/src/3rd-party/cairo/src/cairo-cogl-utils.c similarity index 100% rename from 3rd-party/cairo/src/cairo-cogl-utils.c rename to io2d/src/3rd-party/cairo/src/cairo-cogl-utils.c diff --git a/3rd-party/cairo/src/cairo-cogl.h b/io2d/src/3rd-party/cairo/src/cairo-cogl.h similarity index 100% rename from 3rd-party/cairo/src/cairo-cogl.h rename to io2d/src/3rd-party/cairo/src/cairo-cogl.h diff --git a/3rd-party/cairo/src/cairo-color.c b/io2d/src/3rd-party/cairo/src/cairo-color.c similarity index 100% rename from 3rd-party/cairo/src/cairo-color.c rename to io2d/src/3rd-party/cairo/src/cairo-color.c diff --git a/3rd-party/cairo/src/cairo-combsort-inline.h b/io2d/src/3rd-party/cairo/src/cairo-combsort-inline.h similarity index 100% rename from 3rd-party/cairo/src/cairo-combsort-inline.h rename to io2d/src/3rd-party/cairo/src/cairo-combsort-inline.h diff --git a/3rd-party/cairo/src/cairo-compiler-private.h b/io2d/src/3rd-party/cairo/src/cairo-compiler-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-compiler-private.h rename to io2d/src/3rd-party/cairo/src/cairo-compiler-private.h diff --git a/3rd-party/cairo/src/cairo-composite-rectangles-private.h b/io2d/src/3rd-party/cairo/src/cairo-composite-rectangles-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-composite-rectangles-private.h rename to io2d/src/3rd-party/cairo/src/cairo-composite-rectangles-private.h diff --git a/3rd-party/cairo/src/cairo-composite-rectangles.c b/io2d/src/3rd-party/cairo/src/cairo-composite-rectangles.c similarity index 100% rename from 3rd-party/cairo/src/cairo-composite-rectangles.c rename to io2d/src/3rd-party/cairo/src/cairo-composite-rectangles.c diff --git a/3rd-party/cairo/src/cairo-compositor-private.h b/io2d/src/3rd-party/cairo/src/cairo-compositor-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-compositor-private.h rename to io2d/src/3rd-party/cairo/src/cairo-compositor-private.h diff --git a/3rd-party/cairo/src/cairo-compositor.c b/io2d/src/3rd-party/cairo/src/cairo-compositor.c similarity index 100% rename from 3rd-party/cairo/src/cairo-compositor.c rename to io2d/src/3rd-party/cairo/src/cairo-compositor.c diff --git a/3rd-party/cairo/src/cairo-contour-inline.h b/io2d/src/3rd-party/cairo/src/cairo-contour-inline.h similarity index 100% rename from 3rd-party/cairo/src/cairo-contour-inline.h rename to io2d/src/3rd-party/cairo/src/cairo-contour-inline.h diff --git a/3rd-party/cairo/src/cairo-contour-private.h b/io2d/src/3rd-party/cairo/src/cairo-contour-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-contour-private.h rename to io2d/src/3rd-party/cairo/src/cairo-contour-private.h diff --git a/3rd-party/cairo/src/cairo-contour.c b/io2d/src/3rd-party/cairo/src/cairo-contour.c similarity index 100% rename from 3rd-party/cairo/src/cairo-contour.c rename to io2d/src/3rd-party/cairo/src/cairo-contour.c diff --git a/3rd-party/cairo/src/cairo-damage-private.h b/io2d/src/3rd-party/cairo/src/cairo-damage-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-damage-private.h rename to io2d/src/3rd-party/cairo/src/cairo-damage-private.h diff --git a/3rd-party/cairo/src/cairo-damage.c b/io2d/src/3rd-party/cairo/src/cairo-damage.c similarity index 100% rename from 3rd-party/cairo/src/cairo-damage.c rename to io2d/src/3rd-party/cairo/src/cairo-damage.c diff --git a/3rd-party/cairo/src/cairo-debug.c b/io2d/src/3rd-party/cairo/src/cairo-debug.c similarity index 100% rename from 3rd-party/cairo/src/cairo-debug.c rename to io2d/src/3rd-party/cairo/src/cairo-debug.c diff --git a/3rd-party/cairo/src/cairo-default-context-private.h b/io2d/src/3rd-party/cairo/src/cairo-default-context-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-default-context-private.h rename to io2d/src/3rd-party/cairo/src/cairo-default-context-private.h diff --git a/3rd-party/cairo/src/cairo-default-context.c b/io2d/src/3rd-party/cairo/src/cairo-default-context.c similarity index 100% rename from 3rd-party/cairo/src/cairo-default-context.c rename to io2d/src/3rd-party/cairo/src/cairo-default-context.c diff --git a/3rd-party/cairo/src/cairo-deflate-stream.c b/io2d/src/3rd-party/cairo/src/cairo-deflate-stream.c similarity index 100% rename from 3rd-party/cairo/src/cairo-deflate-stream.c rename to io2d/src/3rd-party/cairo/src/cairo-deflate-stream.c diff --git a/3rd-party/cairo/src/cairo-deprecated.h b/io2d/src/3rd-party/cairo/src/cairo-deprecated.h similarity index 100% rename from 3rd-party/cairo/src/cairo-deprecated.h rename to io2d/src/3rd-party/cairo/src/cairo-deprecated.h diff --git a/3rd-party/cairo/src/cairo-device-private.h b/io2d/src/3rd-party/cairo/src/cairo-device-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-device-private.h rename to io2d/src/3rd-party/cairo/src/cairo-device-private.h diff --git a/3rd-party/cairo/src/cairo-device.c b/io2d/src/3rd-party/cairo/src/cairo-device.c similarity index 100% rename from 3rd-party/cairo/src/cairo-device.c rename to io2d/src/3rd-party/cairo/src/cairo-device.c diff --git a/3rd-party/cairo/src/cairo-directfb-surface.c b/io2d/src/3rd-party/cairo/src/cairo-directfb-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-directfb-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-directfb-surface.c diff --git a/3rd-party/cairo/src/cairo-directfb.h b/io2d/src/3rd-party/cairo/src/cairo-directfb.h similarity index 100% rename from 3rd-party/cairo/src/cairo-directfb.h rename to io2d/src/3rd-party/cairo/src/cairo-directfb.h diff --git a/3rd-party/cairo/src/cairo-drm.h b/io2d/src/3rd-party/cairo/src/cairo-drm.h similarity index 100% rename from 3rd-party/cairo/src/cairo-drm.h rename to io2d/src/3rd-party/cairo/src/cairo-drm.h diff --git a/3rd-party/cairo/src/cairo-egl-context.c b/io2d/src/3rd-party/cairo/src/cairo-egl-context.c similarity index 100% rename from 3rd-party/cairo/src/cairo-egl-context.c rename to io2d/src/3rd-party/cairo/src/cairo-egl-context.c diff --git a/3rd-party/cairo/src/cairo-error-inline.h b/io2d/src/3rd-party/cairo/src/cairo-error-inline.h similarity index 100% rename from 3rd-party/cairo/src/cairo-error-inline.h rename to io2d/src/3rd-party/cairo/src/cairo-error-inline.h diff --git a/3rd-party/cairo/src/cairo-error-private.h b/io2d/src/3rd-party/cairo/src/cairo-error-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-error-private.h rename to io2d/src/3rd-party/cairo/src/cairo-error-private.h diff --git a/3rd-party/cairo/src/cairo-error.c b/io2d/src/3rd-party/cairo/src/cairo-error.c similarity index 100% rename from 3rd-party/cairo/src/cairo-error.c rename to io2d/src/3rd-party/cairo/src/cairo-error.c diff --git a/3rd-party/cairo/src/cairo-fallback-compositor.c b/io2d/src/3rd-party/cairo/src/cairo-fallback-compositor.c similarity index 100% rename from 3rd-party/cairo/src/cairo-fallback-compositor.c rename to io2d/src/3rd-party/cairo/src/cairo-fallback-compositor.c diff --git a/3rd-party/cairo/src/cairo-features-uninstalled.pc.in b/io2d/src/3rd-party/cairo/src/cairo-features-uninstalled.pc.in similarity index 100% rename from 3rd-party/cairo/src/cairo-features-uninstalled.pc.in rename to io2d/src/3rd-party/cairo/src/cairo-features-uninstalled.pc.in diff --git a/3rd-party/cairo/src/cairo-features.h b/io2d/src/3rd-party/cairo/src/cairo-features.h similarity index 100% rename from 3rd-party/cairo/src/cairo-features.h rename to io2d/src/3rd-party/cairo/src/cairo-features.h diff --git a/3rd-party/cairo/src/cairo-features.pc.in b/io2d/src/3rd-party/cairo/src/cairo-features.pc.in similarity index 100% rename from 3rd-party/cairo/src/cairo-features.pc.in rename to io2d/src/3rd-party/cairo/src/cairo-features.pc.in diff --git a/3rd-party/cairo/src/cairo-fixed-private.h b/io2d/src/3rd-party/cairo/src/cairo-fixed-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-fixed-private.h rename to io2d/src/3rd-party/cairo/src/cairo-fixed-private.h diff --git a/3rd-party/cairo/src/cairo-fixed-type-private.h b/io2d/src/3rd-party/cairo/src/cairo-fixed-type-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-fixed-type-private.h rename to io2d/src/3rd-party/cairo/src/cairo-fixed-type-private.h diff --git a/3rd-party/cairo/src/cairo-fixed.c b/io2d/src/3rd-party/cairo/src/cairo-fixed.c similarity index 100% rename from 3rd-party/cairo/src/cairo-fixed.c rename to io2d/src/3rd-party/cairo/src/cairo-fixed.c diff --git a/3rd-party/cairo/src/cairo-font-face-twin-data.c b/io2d/src/3rd-party/cairo/src/cairo-font-face-twin-data.c similarity index 100% rename from 3rd-party/cairo/src/cairo-font-face-twin-data.c rename to io2d/src/3rd-party/cairo/src/cairo-font-face-twin-data.c diff --git a/3rd-party/cairo/src/cairo-font-face-twin.c b/io2d/src/3rd-party/cairo/src/cairo-font-face-twin.c similarity index 100% rename from 3rd-party/cairo/src/cairo-font-face-twin.c rename to io2d/src/3rd-party/cairo/src/cairo-font-face-twin.c diff --git a/3rd-party/cairo/src/cairo-font-face.c b/io2d/src/3rd-party/cairo/src/cairo-font-face.c similarity index 100% rename from 3rd-party/cairo/src/cairo-font-face.c rename to io2d/src/3rd-party/cairo/src/cairo-font-face.c diff --git a/3rd-party/cairo/src/cairo-font-options.c b/io2d/src/3rd-party/cairo/src/cairo-font-options.c similarity index 100% rename from 3rd-party/cairo/src/cairo-font-options.c rename to io2d/src/3rd-party/cairo/src/cairo-font-options.c diff --git a/3rd-party/cairo/src/cairo-fontconfig-private.h b/io2d/src/3rd-party/cairo/src/cairo-fontconfig-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-fontconfig-private.h rename to io2d/src/3rd-party/cairo/src/cairo-fontconfig-private.h diff --git a/3rd-party/cairo/src/cairo-freed-pool-private.h b/io2d/src/3rd-party/cairo/src/cairo-freed-pool-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-freed-pool-private.h rename to io2d/src/3rd-party/cairo/src/cairo-freed-pool-private.h diff --git a/3rd-party/cairo/src/cairo-freed-pool.c b/io2d/src/3rd-party/cairo/src/cairo-freed-pool.c similarity index 100% rename from 3rd-party/cairo/src/cairo-freed-pool.c rename to io2d/src/3rd-party/cairo/src/cairo-freed-pool.c diff --git a/3rd-party/cairo/src/cairo-freelist-private.h b/io2d/src/3rd-party/cairo/src/cairo-freelist-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-freelist-private.h rename to io2d/src/3rd-party/cairo/src/cairo-freelist-private.h diff --git a/3rd-party/cairo/src/cairo-freelist-type-private.h b/io2d/src/3rd-party/cairo/src/cairo-freelist-type-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-freelist-type-private.h rename to io2d/src/3rd-party/cairo/src/cairo-freelist-type-private.h diff --git a/3rd-party/cairo/src/cairo-freelist.c b/io2d/src/3rd-party/cairo/src/cairo-freelist.c similarity index 100% rename from 3rd-party/cairo/src/cairo-freelist.c rename to io2d/src/3rd-party/cairo/src/cairo-freelist.c diff --git a/3rd-party/cairo/src/cairo-ft-font.c b/io2d/src/3rd-party/cairo/src/cairo-ft-font.c similarity index 100% rename from 3rd-party/cairo/src/cairo-ft-font.c rename to io2d/src/3rd-party/cairo/src/cairo-ft-font.c diff --git a/3rd-party/cairo/src/cairo-ft-private.h b/io2d/src/3rd-party/cairo/src/cairo-ft-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-ft-private.h rename to io2d/src/3rd-party/cairo/src/cairo-ft-private.h diff --git a/3rd-party/cairo/src/cairo-ft.h b/io2d/src/3rd-party/cairo/src/cairo-ft.h similarity index 100% rename from 3rd-party/cairo/src/cairo-ft.h rename to io2d/src/3rd-party/cairo/src/cairo-ft.h diff --git a/3rd-party/cairo/src/cairo-gl-composite.c b/io2d/src/3rd-party/cairo/src/cairo-gl-composite.c similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-composite.c rename to io2d/src/3rd-party/cairo/src/cairo-gl-composite.c diff --git a/3rd-party/cairo/src/cairo-gl-device.c b/io2d/src/3rd-party/cairo/src/cairo-gl-device.c similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-device.c rename to io2d/src/3rd-party/cairo/src/cairo-gl-device.c diff --git a/3rd-party/cairo/src/cairo-gl-dispatch-private.h b/io2d/src/3rd-party/cairo/src/cairo-gl-dispatch-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-dispatch-private.h rename to io2d/src/3rd-party/cairo/src/cairo-gl-dispatch-private.h diff --git a/3rd-party/cairo/src/cairo-gl-dispatch.c b/io2d/src/3rd-party/cairo/src/cairo-gl-dispatch.c similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-dispatch.c rename to io2d/src/3rd-party/cairo/src/cairo-gl-dispatch.c diff --git a/3rd-party/cairo/src/cairo-gl-ext-def-private.h b/io2d/src/3rd-party/cairo/src/cairo-gl-ext-def-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-ext-def-private.h rename to io2d/src/3rd-party/cairo/src/cairo-gl-ext-def-private.h diff --git a/3rd-party/cairo/src/cairo-gl-glyphs.c b/io2d/src/3rd-party/cairo/src/cairo-gl-glyphs.c similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-glyphs.c rename to io2d/src/3rd-party/cairo/src/cairo-gl-glyphs.c diff --git a/3rd-party/cairo/src/cairo-gl-gradient-private.h b/io2d/src/3rd-party/cairo/src/cairo-gl-gradient-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-gradient-private.h rename to io2d/src/3rd-party/cairo/src/cairo-gl-gradient-private.h diff --git a/3rd-party/cairo/src/cairo-gl-gradient.c b/io2d/src/3rd-party/cairo/src/cairo-gl-gradient.c similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-gradient.c rename to io2d/src/3rd-party/cairo/src/cairo-gl-gradient.c diff --git a/3rd-party/cairo/src/cairo-gl-info.c b/io2d/src/3rd-party/cairo/src/cairo-gl-info.c similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-info.c rename to io2d/src/3rd-party/cairo/src/cairo-gl-info.c diff --git a/3rd-party/cairo/src/cairo-gl-msaa-compositor.c b/io2d/src/3rd-party/cairo/src/cairo-gl-msaa-compositor.c similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-msaa-compositor.c rename to io2d/src/3rd-party/cairo/src/cairo-gl-msaa-compositor.c diff --git a/3rd-party/cairo/src/cairo-gl-operand.c b/io2d/src/3rd-party/cairo/src/cairo-gl-operand.c similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-operand.c rename to io2d/src/3rd-party/cairo/src/cairo-gl-operand.c diff --git a/3rd-party/cairo/src/cairo-gl-private.h b/io2d/src/3rd-party/cairo/src/cairo-gl-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-private.h rename to io2d/src/3rd-party/cairo/src/cairo-gl-private.h diff --git a/3rd-party/cairo/src/cairo-gl-shaders.c b/io2d/src/3rd-party/cairo/src/cairo-gl-shaders.c similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-shaders.c rename to io2d/src/3rd-party/cairo/src/cairo-gl-shaders.c diff --git a/3rd-party/cairo/src/cairo-gl-source.c b/io2d/src/3rd-party/cairo/src/cairo-gl-source.c similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-source.c rename to io2d/src/3rd-party/cairo/src/cairo-gl-source.c diff --git a/3rd-party/cairo/src/cairo-gl-spans-compositor.c b/io2d/src/3rd-party/cairo/src/cairo-gl-spans-compositor.c similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-spans-compositor.c rename to io2d/src/3rd-party/cairo/src/cairo-gl-spans-compositor.c diff --git a/3rd-party/cairo/src/cairo-gl-surface-legacy.c b/io2d/src/3rd-party/cairo/src/cairo-gl-surface-legacy.c similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-surface-legacy.c rename to io2d/src/3rd-party/cairo/src/cairo-gl-surface-legacy.c diff --git a/3rd-party/cairo/src/cairo-gl-surface.c b/io2d/src/3rd-party/cairo/src/cairo-gl-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-gl-surface.c diff --git a/3rd-party/cairo/src/cairo-gl-traps-compositor.c b/io2d/src/3rd-party/cairo/src/cairo-gl-traps-compositor.c similarity index 100% rename from 3rd-party/cairo/src/cairo-gl-traps-compositor.c rename to io2d/src/3rd-party/cairo/src/cairo-gl-traps-compositor.c diff --git a/3rd-party/cairo/src/cairo-gl.h b/io2d/src/3rd-party/cairo/src/cairo-gl.h similarity index 100% rename from 3rd-party/cairo/src/cairo-gl.h rename to io2d/src/3rd-party/cairo/src/cairo-gl.h diff --git a/3rd-party/cairo/src/cairo-glx-context.c b/io2d/src/3rd-party/cairo/src/cairo-glx-context.c similarity index 100% rename from 3rd-party/cairo/src/cairo-glx-context.c rename to io2d/src/3rd-party/cairo/src/cairo-glx-context.c diff --git a/3rd-party/cairo/src/cairo-gstate-private.h b/io2d/src/3rd-party/cairo/src/cairo-gstate-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-gstate-private.h rename to io2d/src/3rd-party/cairo/src/cairo-gstate-private.h diff --git a/3rd-party/cairo/src/cairo-gstate.c b/io2d/src/3rd-party/cairo/src/cairo-gstate.c similarity index 100% rename from 3rd-party/cairo/src/cairo-gstate.c rename to io2d/src/3rd-party/cairo/src/cairo-gstate.c diff --git a/3rd-party/cairo/src/cairo-hash-private.h b/io2d/src/3rd-party/cairo/src/cairo-hash-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-hash-private.h rename to io2d/src/3rd-party/cairo/src/cairo-hash-private.h diff --git a/3rd-party/cairo/src/cairo-hash.c b/io2d/src/3rd-party/cairo/src/cairo-hash.c similarity index 100% rename from 3rd-party/cairo/src/cairo-hash.c rename to io2d/src/3rd-party/cairo/src/cairo-hash.c diff --git a/3rd-party/cairo/src/cairo-hull.c b/io2d/src/3rd-party/cairo/src/cairo-hull.c similarity index 100% rename from 3rd-party/cairo/src/cairo-hull.c rename to io2d/src/3rd-party/cairo/src/cairo-hull.c diff --git a/3rd-party/cairo/src/cairo-image-compositor.c b/io2d/src/3rd-party/cairo/src/cairo-image-compositor.c similarity index 100% rename from 3rd-party/cairo/src/cairo-image-compositor.c rename to io2d/src/3rd-party/cairo/src/cairo-image-compositor.c diff --git a/3rd-party/cairo/src/cairo-image-info-private.h b/io2d/src/3rd-party/cairo/src/cairo-image-info-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-image-info-private.h rename to io2d/src/3rd-party/cairo/src/cairo-image-info-private.h diff --git a/3rd-party/cairo/src/cairo-image-info.c b/io2d/src/3rd-party/cairo/src/cairo-image-info.c similarity index 100% rename from 3rd-party/cairo/src/cairo-image-info.c rename to io2d/src/3rd-party/cairo/src/cairo-image-info.c diff --git a/3rd-party/cairo/src/cairo-image-mask-compositor.c b/io2d/src/3rd-party/cairo/src/cairo-image-mask-compositor.c similarity index 100% rename from 3rd-party/cairo/src/cairo-image-mask-compositor.c rename to io2d/src/3rd-party/cairo/src/cairo-image-mask-compositor.c diff --git a/3rd-party/cairo/src/cairo-image-source.c b/io2d/src/3rd-party/cairo/src/cairo-image-source.c similarity index 100% rename from 3rd-party/cairo/src/cairo-image-source.c rename to io2d/src/3rd-party/cairo/src/cairo-image-source.c diff --git a/3rd-party/cairo/src/cairo-image-surface-inline.h b/io2d/src/3rd-party/cairo/src/cairo-image-surface-inline.h similarity index 100% rename from 3rd-party/cairo/src/cairo-image-surface-inline.h rename to io2d/src/3rd-party/cairo/src/cairo-image-surface-inline.h diff --git a/3rd-party/cairo/src/cairo-image-surface-private.h b/io2d/src/3rd-party/cairo/src/cairo-image-surface-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-image-surface-private.h rename to io2d/src/3rd-party/cairo/src/cairo-image-surface-private.h diff --git a/3rd-party/cairo/src/cairo-image-surface.c b/io2d/src/3rd-party/cairo/src/cairo-image-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-image-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-image-surface.c diff --git a/3rd-party/cairo/src/cairo-list-inline.h b/io2d/src/3rd-party/cairo/src/cairo-list-inline.h similarity index 100% rename from 3rd-party/cairo/src/cairo-list-inline.h rename to io2d/src/3rd-party/cairo/src/cairo-list-inline.h diff --git a/3rd-party/cairo/src/cairo-list-private.h b/io2d/src/3rd-party/cairo/src/cairo-list-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-list-private.h rename to io2d/src/3rd-party/cairo/src/cairo-list-private.h diff --git a/3rd-party/cairo/src/cairo-lzw.c b/io2d/src/3rd-party/cairo/src/cairo-lzw.c similarity index 100% rename from 3rd-party/cairo/src/cairo-lzw.c rename to io2d/src/3rd-party/cairo/src/cairo-lzw.c diff --git a/3rd-party/cairo/src/cairo-malloc-private.h b/io2d/src/3rd-party/cairo/src/cairo-malloc-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-malloc-private.h rename to io2d/src/3rd-party/cairo/src/cairo-malloc-private.h diff --git a/3rd-party/cairo/src/cairo-mask-compositor.c b/io2d/src/3rd-party/cairo/src/cairo-mask-compositor.c similarity index 100% rename from 3rd-party/cairo/src/cairo-mask-compositor.c rename to io2d/src/3rd-party/cairo/src/cairo-mask-compositor.c diff --git a/3rd-party/cairo/src/cairo-matrix.c b/io2d/src/3rd-party/cairo/src/cairo-matrix.c similarity index 100% rename from 3rd-party/cairo/src/cairo-matrix.c rename to io2d/src/3rd-party/cairo/src/cairo-matrix.c diff --git a/3rd-party/cairo/src/cairo-mempool-private.h b/io2d/src/3rd-party/cairo/src/cairo-mempool-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-mempool-private.h rename to io2d/src/3rd-party/cairo/src/cairo-mempool-private.h diff --git a/3rd-party/cairo/src/cairo-mempool.c b/io2d/src/3rd-party/cairo/src/cairo-mempool.c similarity index 100% rename from 3rd-party/cairo/src/cairo-mempool.c rename to io2d/src/3rd-party/cairo/src/cairo-mempool.c diff --git a/3rd-party/cairo/src/cairo-mesh-pattern-rasterizer.c b/io2d/src/3rd-party/cairo/src/cairo-mesh-pattern-rasterizer.c similarity index 100% rename from 3rd-party/cairo/src/cairo-mesh-pattern-rasterizer.c rename to io2d/src/3rd-party/cairo/src/cairo-mesh-pattern-rasterizer.c diff --git a/3rd-party/cairo/src/cairo-misc.c b/io2d/src/3rd-party/cairo/src/cairo-misc.c similarity index 100% rename from 3rd-party/cairo/src/cairo-misc.c rename to io2d/src/3rd-party/cairo/src/cairo-misc.c diff --git a/3rd-party/cairo/src/cairo-mono-scan-converter.c b/io2d/src/3rd-party/cairo/src/cairo-mono-scan-converter.c similarity index 100% rename from 3rd-party/cairo/src/cairo-mono-scan-converter.c rename to io2d/src/3rd-party/cairo/src/cairo-mono-scan-converter.c diff --git a/3rd-party/cairo/src/cairo-mutex-impl-private.h b/io2d/src/3rd-party/cairo/src/cairo-mutex-impl-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-mutex-impl-private.h rename to io2d/src/3rd-party/cairo/src/cairo-mutex-impl-private.h diff --git a/3rd-party/cairo/src/cairo-mutex-list-private.h b/io2d/src/3rd-party/cairo/src/cairo-mutex-list-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-mutex-list-private.h rename to io2d/src/3rd-party/cairo/src/cairo-mutex-list-private.h diff --git a/3rd-party/cairo/src/cairo-mutex-private.h b/io2d/src/3rd-party/cairo/src/cairo-mutex-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-mutex-private.h rename to io2d/src/3rd-party/cairo/src/cairo-mutex-private.h diff --git a/3rd-party/cairo/src/cairo-mutex-type-private.h b/io2d/src/3rd-party/cairo/src/cairo-mutex-type-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-mutex-type-private.h rename to io2d/src/3rd-party/cairo/src/cairo-mutex-type-private.h diff --git a/3rd-party/cairo/src/cairo-mutex.c b/io2d/src/3rd-party/cairo/src/cairo-mutex.c similarity index 100% rename from 3rd-party/cairo/src/cairo-mutex.c rename to io2d/src/3rd-party/cairo/src/cairo-mutex.c diff --git a/3rd-party/cairo/src/cairo-no-compositor.c b/io2d/src/3rd-party/cairo/src/cairo-no-compositor.c similarity index 100% rename from 3rd-party/cairo/src/cairo-no-compositor.c rename to io2d/src/3rd-party/cairo/src/cairo-no-compositor.c diff --git a/3rd-party/cairo/src/cairo-observer.c b/io2d/src/3rd-party/cairo/src/cairo-observer.c similarity index 100% rename from 3rd-party/cairo/src/cairo-observer.c rename to io2d/src/3rd-party/cairo/src/cairo-observer.c diff --git a/3rd-party/cairo/src/cairo-os2-private.h b/io2d/src/3rd-party/cairo/src/cairo-os2-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-os2-private.h rename to io2d/src/3rd-party/cairo/src/cairo-os2-private.h diff --git a/3rd-party/cairo/src/cairo-os2-surface.c b/io2d/src/3rd-party/cairo/src/cairo-os2-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-os2-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-os2-surface.c diff --git a/3rd-party/cairo/src/cairo-os2.h b/io2d/src/3rd-party/cairo/src/cairo-os2.h similarity index 100% rename from 3rd-party/cairo/src/cairo-os2.h rename to io2d/src/3rd-party/cairo/src/cairo-os2.h diff --git a/3rd-party/cairo/src/cairo-output-stream-private.h b/io2d/src/3rd-party/cairo/src/cairo-output-stream-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-output-stream-private.h rename to io2d/src/3rd-party/cairo/src/cairo-output-stream-private.h diff --git a/3rd-party/cairo/src/cairo-output-stream.c b/io2d/src/3rd-party/cairo/src/cairo-output-stream.c similarity index 100% rename from 3rd-party/cairo/src/cairo-output-stream.c rename to io2d/src/3rd-party/cairo/src/cairo-output-stream.c diff --git a/3rd-party/cairo/src/cairo-paginated-private.h b/io2d/src/3rd-party/cairo/src/cairo-paginated-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-paginated-private.h rename to io2d/src/3rd-party/cairo/src/cairo-paginated-private.h diff --git a/3rd-party/cairo/src/cairo-paginated-surface-private.h b/io2d/src/3rd-party/cairo/src/cairo-paginated-surface-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-paginated-surface-private.h rename to io2d/src/3rd-party/cairo/src/cairo-paginated-surface-private.h diff --git a/3rd-party/cairo/src/cairo-paginated-surface.c b/io2d/src/3rd-party/cairo/src/cairo-paginated-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-paginated-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-paginated-surface.c diff --git a/3rd-party/cairo/src/cairo-path-bounds.c b/io2d/src/3rd-party/cairo/src/cairo-path-bounds.c similarity index 100% rename from 3rd-party/cairo/src/cairo-path-bounds.c rename to io2d/src/3rd-party/cairo/src/cairo-path-bounds.c diff --git a/3rd-party/cairo/src/cairo-path-fill.c b/io2d/src/3rd-party/cairo/src/cairo-path-fill.c similarity index 100% rename from 3rd-party/cairo/src/cairo-path-fill.c rename to io2d/src/3rd-party/cairo/src/cairo-path-fill.c diff --git a/3rd-party/cairo/src/cairo-path-fixed-private.h b/io2d/src/3rd-party/cairo/src/cairo-path-fixed-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-path-fixed-private.h rename to io2d/src/3rd-party/cairo/src/cairo-path-fixed-private.h diff --git a/3rd-party/cairo/src/cairo-path-fixed.c b/io2d/src/3rd-party/cairo/src/cairo-path-fixed.c similarity index 100% rename from 3rd-party/cairo/src/cairo-path-fixed.c rename to io2d/src/3rd-party/cairo/src/cairo-path-fixed.c diff --git a/3rd-party/cairo/src/cairo-path-in-fill.c b/io2d/src/3rd-party/cairo/src/cairo-path-in-fill.c similarity index 100% rename from 3rd-party/cairo/src/cairo-path-in-fill.c rename to io2d/src/3rd-party/cairo/src/cairo-path-in-fill.c diff --git a/3rd-party/cairo/src/cairo-path-private.h b/io2d/src/3rd-party/cairo/src/cairo-path-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-path-private.h rename to io2d/src/3rd-party/cairo/src/cairo-path-private.h diff --git a/3rd-party/cairo/src/cairo-path-stroke-boxes.c b/io2d/src/3rd-party/cairo/src/cairo-path-stroke-boxes.c similarity index 100% rename from 3rd-party/cairo/src/cairo-path-stroke-boxes.c rename to io2d/src/3rd-party/cairo/src/cairo-path-stroke-boxes.c diff --git a/3rd-party/cairo/src/cairo-path-stroke-polygon.c b/io2d/src/3rd-party/cairo/src/cairo-path-stroke-polygon.c similarity index 100% rename from 3rd-party/cairo/src/cairo-path-stroke-polygon.c rename to io2d/src/3rd-party/cairo/src/cairo-path-stroke-polygon.c diff --git a/3rd-party/cairo/src/cairo-path-stroke-traps.c b/io2d/src/3rd-party/cairo/src/cairo-path-stroke-traps.c similarity index 100% rename from 3rd-party/cairo/src/cairo-path-stroke-traps.c rename to io2d/src/3rd-party/cairo/src/cairo-path-stroke-traps.c diff --git a/3rd-party/cairo/src/cairo-path-stroke-tristrip.c b/io2d/src/3rd-party/cairo/src/cairo-path-stroke-tristrip.c similarity index 100% rename from 3rd-party/cairo/src/cairo-path-stroke-tristrip.c rename to io2d/src/3rd-party/cairo/src/cairo-path-stroke-tristrip.c diff --git a/3rd-party/cairo/src/cairo-path-stroke.c b/io2d/src/3rd-party/cairo/src/cairo-path-stroke.c similarity index 100% rename from 3rd-party/cairo/src/cairo-path-stroke.c rename to io2d/src/3rd-party/cairo/src/cairo-path-stroke.c diff --git a/3rd-party/cairo/src/cairo-path.c b/io2d/src/3rd-party/cairo/src/cairo-path.c similarity index 100% rename from 3rd-party/cairo/src/cairo-path.c rename to io2d/src/3rd-party/cairo/src/cairo-path.c diff --git a/3rd-party/cairo/src/cairo-pattern-inline.h b/io2d/src/3rd-party/cairo/src/cairo-pattern-inline.h similarity index 100% rename from 3rd-party/cairo/src/cairo-pattern-inline.h rename to io2d/src/3rd-party/cairo/src/cairo-pattern-inline.h diff --git a/3rd-party/cairo/src/cairo-pattern-private.h b/io2d/src/3rd-party/cairo/src/cairo-pattern-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-pattern-private.h rename to io2d/src/3rd-party/cairo/src/cairo-pattern-private.h diff --git a/3rd-party/cairo/src/cairo-pattern.c b/io2d/src/3rd-party/cairo/src/cairo-pattern.c similarity index 100% rename from 3rd-party/cairo/src/cairo-pattern.c rename to io2d/src/3rd-party/cairo/src/cairo-pattern.c diff --git a/3rd-party/cairo/src/cairo-pdf-operators-private.h b/io2d/src/3rd-party/cairo/src/cairo-pdf-operators-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-pdf-operators-private.h rename to io2d/src/3rd-party/cairo/src/cairo-pdf-operators-private.h diff --git a/3rd-party/cairo/src/cairo-pdf-operators.c b/io2d/src/3rd-party/cairo/src/cairo-pdf-operators.c similarity index 100% rename from 3rd-party/cairo/src/cairo-pdf-operators.c rename to io2d/src/3rd-party/cairo/src/cairo-pdf-operators.c diff --git a/3rd-party/cairo/src/cairo-pdf-shading-private.h b/io2d/src/3rd-party/cairo/src/cairo-pdf-shading-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-pdf-shading-private.h rename to io2d/src/3rd-party/cairo/src/cairo-pdf-shading-private.h diff --git a/3rd-party/cairo/src/cairo-pdf-shading.c b/io2d/src/3rd-party/cairo/src/cairo-pdf-shading.c similarity index 100% rename from 3rd-party/cairo/src/cairo-pdf-shading.c rename to io2d/src/3rd-party/cairo/src/cairo-pdf-shading.c diff --git a/3rd-party/cairo/src/cairo-pdf-surface-private.h b/io2d/src/3rd-party/cairo/src/cairo-pdf-surface-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-pdf-surface-private.h rename to io2d/src/3rd-party/cairo/src/cairo-pdf-surface-private.h diff --git a/3rd-party/cairo/src/cairo-pdf-surface.c b/io2d/src/3rd-party/cairo/src/cairo-pdf-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-pdf-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-pdf-surface.c diff --git a/3rd-party/cairo/src/cairo-pdf.h b/io2d/src/3rd-party/cairo/src/cairo-pdf.h similarity index 100% rename from 3rd-party/cairo/src/cairo-pdf.h rename to io2d/src/3rd-party/cairo/src/cairo-pdf.h diff --git a/3rd-party/cairo/src/cairo-pen.c b/io2d/src/3rd-party/cairo/src/cairo-pen.c similarity index 100% rename from 3rd-party/cairo/src/cairo-pen.c rename to io2d/src/3rd-party/cairo/src/cairo-pen.c diff --git a/3rd-party/cairo/src/cairo-pixman-private.h b/io2d/src/3rd-party/cairo/src/cairo-pixman-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-pixman-private.h rename to io2d/src/3rd-party/cairo/src/cairo-pixman-private.h diff --git a/3rd-party/cairo/src/cairo-png.c b/io2d/src/3rd-party/cairo/src/cairo-png.c similarity index 100% rename from 3rd-party/cairo/src/cairo-png.c rename to io2d/src/3rd-party/cairo/src/cairo-png.c diff --git a/3rd-party/cairo/src/cairo-polygon-intersect.c b/io2d/src/3rd-party/cairo/src/cairo-polygon-intersect.c similarity index 100% rename from 3rd-party/cairo/src/cairo-polygon-intersect.c rename to io2d/src/3rd-party/cairo/src/cairo-polygon-intersect.c diff --git a/3rd-party/cairo/src/cairo-polygon-reduce.c b/io2d/src/3rd-party/cairo/src/cairo-polygon-reduce.c similarity index 100% rename from 3rd-party/cairo/src/cairo-polygon-reduce.c rename to io2d/src/3rd-party/cairo/src/cairo-polygon-reduce.c diff --git a/3rd-party/cairo/src/cairo-polygon.c b/io2d/src/3rd-party/cairo/src/cairo-polygon.c similarity index 100% rename from 3rd-party/cairo/src/cairo-polygon.c rename to io2d/src/3rd-party/cairo/src/cairo-polygon.c diff --git a/3rd-party/cairo/src/cairo-private.h b/io2d/src/3rd-party/cairo/src/cairo-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-private.h rename to io2d/src/3rd-party/cairo/src/cairo-private.h diff --git a/3rd-party/cairo/src/cairo-ps-surface-private.h b/io2d/src/3rd-party/cairo/src/cairo-ps-surface-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-ps-surface-private.h rename to io2d/src/3rd-party/cairo/src/cairo-ps-surface-private.h diff --git a/3rd-party/cairo/src/cairo-ps-surface.c b/io2d/src/3rd-party/cairo/src/cairo-ps-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-ps-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-ps-surface.c diff --git a/3rd-party/cairo/src/cairo-ps.h b/io2d/src/3rd-party/cairo/src/cairo-ps.h similarity index 100% rename from 3rd-party/cairo/src/cairo-ps.h rename to io2d/src/3rd-party/cairo/src/cairo-ps.h diff --git a/3rd-party/cairo/src/cairo-qt-surface.cpp b/io2d/src/3rd-party/cairo/src/cairo-qt-surface.cpp similarity index 100% rename from 3rd-party/cairo/src/cairo-qt-surface.cpp rename to io2d/src/3rd-party/cairo/src/cairo-qt-surface.cpp diff --git a/3rd-party/cairo/src/cairo-qt.h b/io2d/src/3rd-party/cairo/src/cairo-qt.h similarity index 100% rename from 3rd-party/cairo/src/cairo-qt.h rename to io2d/src/3rd-party/cairo/src/cairo-qt.h diff --git a/3rd-party/cairo/src/cairo-quartz-font.c b/io2d/src/3rd-party/cairo/src/cairo-quartz-font.c similarity index 100% rename from 3rd-party/cairo/src/cairo-quartz-font.c rename to io2d/src/3rd-party/cairo/src/cairo-quartz-font.c diff --git a/3rd-party/cairo/src/cairo-quartz-image-surface.c b/io2d/src/3rd-party/cairo/src/cairo-quartz-image-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-quartz-image-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-quartz-image-surface.c diff --git a/3rd-party/cairo/src/cairo-quartz-image.h b/io2d/src/3rd-party/cairo/src/cairo-quartz-image.h similarity index 100% rename from 3rd-party/cairo/src/cairo-quartz-image.h rename to io2d/src/3rd-party/cairo/src/cairo-quartz-image.h diff --git a/3rd-party/cairo/src/cairo-quartz-private.h b/io2d/src/3rd-party/cairo/src/cairo-quartz-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-quartz-private.h rename to io2d/src/3rd-party/cairo/src/cairo-quartz-private.h diff --git a/3rd-party/cairo/src/cairo-quartz-surface.c b/io2d/src/3rd-party/cairo/src/cairo-quartz-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-quartz-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-quartz-surface.c diff --git a/3rd-party/cairo/src/cairo-quartz.h b/io2d/src/3rd-party/cairo/src/cairo-quartz.h similarity index 100% rename from 3rd-party/cairo/src/cairo-quartz.h rename to io2d/src/3rd-party/cairo/src/cairo-quartz.h diff --git a/3rd-party/cairo/src/cairo-raster-source-pattern.c b/io2d/src/3rd-party/cairo/src/cairo-raster-source-pattern.c similarity index 100% rename from 3rd-party/cairo/src/cairo-raster-source-pattern.c rename to io2d/src/3rd-party/cairo/src/cairo-raster-source-pattern.c diff --git a/3rd-party/cairo/src/cairo-recording-surface-inline.h b/io2d/src/3rd-party/cairo/src/cairo-recording-surface-inline.h similarity index 100% rename from 3rd-party/cairo/src/cairo-recording-surface-inline.h rename to io2d/src/3rd-party/cairo/src/cairo-recording-surface-inline.h diff --git a/3rd-party/cairo/src/cairo-recording-surface-private.h b/io2d/src/3rd-party/cairo/src/cairo-recording-surface-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-recording-surface-private.h rename to io2d/src/3rd-party/cairo/src/cairo-recording-surface-private.h diff --git a/3rd-party/cairo/src/cairo-recording-surface.c b/io2d/src/3rd-party/cairo/src/cairo-recording-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-recording-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-recording-surface.c diff --git a/3rd-party/cairo/src/cairo-rectangle.c b/io2d/src/3rd-party/cairo/src/cairo-rectangle.c similarity index 100% rename from 3rd-party/cairo/src/cairo-rectangle.c rename to io2d/src/3rd-party/cairo/src/cairo-rectangle.c diff --git a/3rd-party/cairo/src/cairo-rectangular-scan-converter.c b/io2d/src/3rd-party/cairo/src/cairo-rectangular-scan-converter.c similarity index 100% rename from 3rd-party/cairo/src/cairo-rectangular-scan-converter.c rename to io2d/src/3rd-party/cairo/src/cairo-rectangular-scan-converter.c diff --git a/3rd-party/cairo/src/cairo-reference-count-private.h b/io2d/src/3rd-party/cairo/src/cairo-reference-count-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-reference-count-private.h rename to io2d/src/3rd-party/cairo/src/cairo-reference-count-private.h diff --git a/3rd-party/cairo/src/cairo-region-private.h b/io2d/src/3rd-party/cairo/src/cairo-region-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-region-private.h rename to io2d/src/3rd-party/cairo/src/cairo-region-private.h diff --git a/3rd-party/cairo/src/cairo-region.c b/io2d/src/3rd-party/cairo/src/cairo-region.c similarity index 100% rename from 3rd-party/cairo/src/cairo-region.c rename to io2d/src/3rd-party/cairo/src/cairo-region.c diff --git a/3rd-party/cairo/src/cairo-rtree-private.h b/io2d/src/3rd-party/cairo/src/cairo-rtree-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-rtree-private.h rename to io2d/src/3rd-party/cairo/src/cairo-rtree-private.h diff --git a/3rd-party/cairo/src/cairo-rtree.c b/io2d/src/3rd-party/cairo/src/cairo-rtree.c similarity index 100% rename from 3rd-party/cairo/src/cairo-rtree.c rename to io2d/src/3rd-party/cairo/src/cairo-rtree.c diff --git a/3rd-party/cairo/src/cairo-scaled-font-private.h b/io2d/src/3rd-party/cairo/src/cairo-scaled-font-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-scaled-font-private.h rename to io2d/src/3rd-party/cairo/src/cairo-scaled-font-private.h diff --git a/3rd-party/cairo/src/cairo-scaled-font-subsets-private.h b/io2d/src/3rd-party/cairo/src/cairo-scaled-font-subsets-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-scaled-font-subsets-private.h rename to io2d/src/3rd-party/cairo/src/cairo-scaled-font-subsets-private.h diff --git a/3rd-party/cairo/src/cairo-scaled-font-subsets.c b/io2d/src/3rd-party/cairo/src/cairo-scaled-font-subsets.c similarity index 100% rename from 3rd-party/cairo/src/cairo-scaled-font-subsets.c rename to io2d/src/3rd-party/cairo/src/cairo-scaled-font-subsets.c diff --git a/3rd-party/cairo/src/cairo-scaled-font.c b/io2d/src/3rd-party/cairo/src/cairo-scaled-font.c similarity index 100% rename from 3rd-party/cairo/src/cairo-scaled-font.c rename to io2d/src/3rd-party/cairo/src/cairo-scaled-font.c diff --git a/3rd-party/cairo/src/cairo-script-private.h b/io2d/src/3rd-party/cairo/src/cairo-script-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-script-private.h rename to io2d/src/3rd-party/cairo/src/cairo-script-private.h diff --git a/3rd-party/cairo/src/cairo-script-surface.c b/io2d/src/3rd-party/cairo/src/cairo-script-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-script-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-script-surface.c diff --git a/3rd-party/cairo/src/cairo-script.h b/io2d/src/3rd-party/cairo/src/cairo-script.h similarity index 100% rename from 3rd-party/cairo/src/cairo-script.h rename to io2d/src/3rd-party/cairo/src/cairo-script.h diff --git a/3rd-party/cairo/src/cairo-shape-mask-compositor.c b/io2d/src/3rd-party/cairo/src/cairo-shape-mask-compositor.c similarity index 100% rename from 3rd-party/cairo/src/cairo-shape-mask-compositor.c rename to io2d/src/3rd-party/cairo/src/cairo-shape-mask-compositor.c diff --git a/3rd-party/cairo/src/cairo-skia-surface.cpp b/io2d/src/3rd-party/cairo/src/cairo-skia-surface.cpp similarity index 100% rename from 3rd-party/cairo/src/cairo-skia-surface.cpp rename to io2d/src/3rd-party/cairo/src/cairo-skia-surface.cpp diff --git a/3rd-party/cairo/src/cairo-skia.h b/io2d/src/3rd-party/cairo/src/cairo-skia.h similarity index 100% rename from 3rd-party/cairo/src/cairo-skia.h rename to io2d/src/3rd-party/cairo/src/cairo-skia.h diff --git a/3rd-party/cairo/src/cairo-slope-private.h b/io2d/src/3rd-party/cairo/src/cairo-slope-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-slope-private.h rename to io2d/src/3rd-party/cairo/src/cairo-slope-private.h diff --git a/3rd-party/cairo/src/cairo-slope.c b/io2d/src/3rd-party/cairo/src/cairo-slope.c similarity index 100% rename from 3rd-party/cairo/src/cairo-slope.c rename to io2d/src/3rd-party/cairo/src/cairo-slope.c diff --git a/3rd-party/cairo/src/cairo-spans-compositor-private.h b/io2d/src/3rd-party/cairo/src/cairo-spans-compositor-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-spans-compositor-private.h rename to io2d/src/3rd-party/cairo/src/cairo-spans-compositor-private.h diff --git a/3rd-party/cairo/src/cairo-spans-compositor.c b/io2d/src/3rd-party/cairo/src/cairo-spans-compositor.c similarity index 100% rename from 3rd-party/cairo/src/cairo-spans-compositor.c rename to io2d/src/3rd-party/cairo/src/cairo-spans-compositor.c diff --git a/3rd-party/cairo/src/cairo-spans-private.h b/io2d/src/3rd-party/cairo/src/cairo-spans-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-spans-private.h rename to io2d/src/3rd-party/cairo/src/cairo-spans-private.h diff --git a/3rd-party/cairo/src/cairo-spans.c b/io2d/src/3rd-party/cairo/src/cairo-spans.c similarity index 100% rename from 3rd-party/cairo/src/cairo-spans.c rename to io2d/src/3rd-party/cairo/src/cairo-spans.c diff --git a/3rd-party/cairo/src/cairo-spline.c b/io2d/src/3rd-party/cairo/src/cairo-spline.c similarity index 100% rename from 3rd-party/cairo/src/cairo-spline.c rename to io2d/src/3rd-party/cairo/src/cairo-spline.c diff --git a/3rd-party/cairo/src/cairo-stroke-dash-private.h b/io2d/src/3rd-party/cairo/src/cairo-stroke-dash-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-stroke-dash-private.h rename to io2d/src/3rd-party/cairo/src/cairo-stroke-dash-private.h diff --git a/3rd-party/cairo/src/cairo-stroke-dash.c b/io2d/src/3rd-party/cairo/src/cairo-stroke-dash.c similarity index 100% rename from 3rd-party/cairo/src/cairo-stroke-dash.c rename to io2d/src/3rd-party/cairo/src/cairo-stroke-dash.c diff --git a/3rd-party/cairo/src/cairo-stroke-style.c b/io2d/src/3rd-party/cairo/src/cairo-stroke-style.c similarity index 100% rename from 3rd-party/cairo/src/cairo-stroke-style.c rename to io2d/src/3rd-party/cairo/src/cairo-stroke-style.c diff --git a/3rd-party/cairo/src/cairo-surface-backend-private.h b/io2d/src/3rd-party/cairo/src/cairo-surface-backend-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-backend-private.h rename to io2d/src/3rd-party/cairo/src/cairo-surface-backend-private.h diff --git a/3rd-party/cairo/src/cairo-surface-clipper-private.h b/io2d/src/3rd-party/cairo/src/cairo-surface-clipper-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-clipper-private.h rename to io2d/src/3rd-party/cairo/src/cairo-surface-clipper-private.h diff --git a/3rd-party/cairo/src/cairo-surface-clipper.c b/io2d/src/3rd-party/cairo/src/cairo-surface-clipper.c similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-clipper.c rename to io2d/src/3rd-party/cairo/src/cairo-surface-clipper.c diff --git a/3rd-party/cairo/src/cairo-surface-fallback-private.h b/io2d/src/3rd-party/cairo/src/cairo-surface-fallback-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-fallback-private.h rename to io2d/src/3rd-party/cairo/src/cairo-surface-fallback-private.h diff --git a/3rd-party/cairo/src/cairo-surface-fallback.c b/io2d/src/3rd-party/cairo/src/cairo-surface-fallback.c similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-fallback.c rename to io2d/src/3rd-party/cairo/src/cairo-surface-fallback.c diff --git a/3rd-party/cairo/src/cairo-surface-inline.h b/io2d/src/3rd-party/cairo/src/cairo-surface-inline.h similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-inline.h rename to io2d/src/3rd-party/cairo/src/cairo-surface-inline.h diff --git a/3rd-party/cairo/src/cairo-surface-observer-inline.h b/io2d/src/3rd-party/cairo/src/cairo-surface-observer-inline.h similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-observer-inline.h rename to io2d/src/3rd-party/cairo/src/cairo-surface-observer-inline.h diff --git a/3rd-party/cairo/src/cairo-surface-observer-private.h b/io2d/src/3rd-party/cairo/src/cairo-surface-observer-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-observer-private.h rename to io2d/src/3rd-party/cairo/src/cairo-surface-observer-private.h diff --git a/3rd-party/cairo/src/cairo-surface-observer.c b/io2d/src/3rd-party/cairo/src/cairo-surface-observer.c similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-observer.c rename to io2d/src/3rd-party/cairo/src/cairo-surface-observer.c diff --git a/3rd-party/cairo/src/cairo-surface-offset-private.h b/io2d/src/3rd-party/cairo/src/cairo-surface-offset-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-offset-private.h rename to io2d/src/3rd-party/cairo/src/cairo-surface-offset-private.h diff --git a/3rd-party/cairo/src/cairo-surface-offset.c b/io2d/src/3rd-party/cairo/src/cairo-surface-offset.c similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-offset.c rename to io2d/src/3rd-party/cairo/src/cairo-surface-offset.c diff --git a/3rd-party/cairo/src/cairo-surface-private.h b/io2d/src/3rd-party/cairo/src/cairo-surface-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-private.h rename to io2d/src/3rd-party/cairo/src/cairo-surface-private.h diff --git a/3rd-party/cairo/src/cairo-surface-snapshot-inline.h b/io2d/src/3rd-party/cairo/src/cairo-surface-snapshot-inline.h similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-snapshot-inline.h rename to io2d/src/3rd-party/cairo/src/cairo-surface-snapshot-inline.h diff --git a/3rd-party/cairo/src/cairo-surface-snapshot-private.h b/io2d/src/3rd-party/cairo/src/cairo-surface-snapshot-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-snapshot-private.h rename to io2d/src/3rd-party/cairo/src/cairo-surface-snapshot-private.h diff --git a/3rd-party/cairo/src/cairo-surface-snapshot.c b/io2d/src/3rd-party/cairo/src/cairo-surface-snapshot.c similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-snapshot.c rename to io2d/src/3rd-party/cairo/src/cairo-surface-snapshot.c diff --git a/3rd-party/cairo/src/cairo-surface-subsurface-inline.h b/io2d/src/3rd-party/cairo/src/cairo-surface-subsurface-inline.h similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-subsurface-inline.h rename to io2d/src/3rd-party/cairo/src/cairo-surface-subsurface-inline.h diff --git a/3rd-party/cairo/src/cairo-surface-subsurface-private.h b/io2d/src/3rd-party/cairo/src/cairo-surface-subsurface-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-subsurface-private.h rename to io2d/src/3rd-party/cairo/src/cairo-surface-subsurface-private.h diff --git a/3rd-party/cairo/src/cairo-surface-subsurface.c b/io2d/src/3rd-party/cairo/src/cairo-surface-subsurface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-subsurface.c rename to io2d/src/3rd-party/cairo/src/cairo-surface-subsurface.c diff --git a/3rd-party/cairo/src/cairo-surface-wrapper-private.h b/io2d/src/3rd-party/cairo/src/cairo-surface-wrapper-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-wrapper-private.h rename to io2d/src/3rd-party/cairo/src/cairo-surface-wrapper-private.h diff --git a/3rd-party/cairo/src/cairo-surface-wrapper.c b/io2d/src/3rd-party/cairo/src/cairo-surface-wrapper.c similarity index 100% rename from 3rd-party/cairo/src/cairo-surface-wrapper.c rename to io2d/src/3rd-party/cairo/src/cairo-surface-wrapper.c diff --git a/3rd-party/cairo/src/cairo-surface.c b/io2d/src/3rd-party/cairo/src/cairo-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-surface.c diff --git a/3rd-party/cairo/src/cairo-svg-surface-private.h b/io2d/src/3rd-party/cairo/src/cairo-svg-surface-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-svg-surface-private.h rename to io2d/src/3rd-party/cairo/src/cairo-svg-surface-private.h diff --git a/3rd-party/cairo/src/cairo-svg-surface.c b/io2d/src/3rd-party/cairo/src/cairo-svg-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-svg-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-svg-surface.c diff --git a/3rd-party/cairo/src/cairo-svg.h b/io2d/src/3rd-party/cairo/src/cairo-svg.h similarity index 100% rename from 3rd-party/cairo/src/cairo-svg.h rename to io2d/src/3rd-party/cairo/src/cairo-svg.h diff --git a/3rd-party/cairo/src/cairo-tee-surface-private.h b/io2d/src/3rd-party/cairo/src/cairo-tee-surface-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-tee-surface-private.h rename to io2d/src/3rd-party/cairo/src/cairo-tee-surface-private.h diff --git a/3rd-party/cairo/src/cairo-tee-surface.c b/io2d/src/3rd-party/cairo/src/cairo-tee-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-tee-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-tee-surface.c diff --git a/3rd-party/cairo/src/cairo-tee.h b/io2d/src/3rd-party/cairo/src/cairo-tee.h similarity index 100% rename from 3rd-party/cairo/src/cairo-tee.h rename to io2d/src/3rd-party/cairo/src/cairo-tee.h diff --git a/3rd-party/cairo/src/cairo-time-private.h b/io2d/src/3rd-party/cairo/src/cairo-time-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-time-private.h rename to io2d/src/3rd-party/cairo/src/cairo-time-private.h diff --git a/3rd-party/cairo/src/cairo-time.c b/io2d/src/3rd-party/cairo/src/cairo-time.c similarity index 100% rename from 3rd-party/cairo/src/cairo-time.c rename to io2d/src/3rd-party/cairo/src/cairo-time.c diff --git a/3rd-party/cairo/src/cairo-tor-scan-converter.c b/io2d/src/3rd-party/cairo/src/cairo-tor-scan-converter.c similarity index 100% rename from 3rd-party/cairo/src/cairo-tor-scan-converter.c rename to io2d/src/3rd-party/cairo/src/cairo-tor-scan-converter.c diff --git a/3rd-party/cairo/src/cairo-tor22-scan-converter.c b/io2d/src/3rd-party/cairo/src/cairo-tor22-scan-converter.c similarity index 100% rename from 3rd-party/cairo/src/cairo-tor22-scan-converter.c rename to io2d/src/3rd-party/cairo/src/cairo-tor22-scan-converter.c diff --git a/3rd-party/cairo/src/cairo-toy-font-face.c b/io2d/src/3rd-party/cairo/src/cairo-toy-font-face.c similarity index 100% rename from 3rd-party/cairo/src/cairo-toy-font-face.c rename to io2d/src/3rd-party/cairo/src/cairo-toy-font-face.c diff --git a/3rd-party/cairo/src/cairo-traps-compositor.c b/io2d/src/3rd-party/cairo/src/cairo-traps-compositor.c similarity index 100% rename from 3rd-party/cairo/src/cairo-traps-compositor.c rename to io2d/src/3rd-party/cairo/src/cairo-traps-compositor.c diff --git a/3rd-party/cairo/src/cairo-traps-private.h b/io2d/src/3rd-party/cairo/src/cairo-traps-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-traps-private.h rename to io2d/src/3rd-party/cairo/src/cairo-traps-private.h diff --git a/3rd-party/cairo/src/cairo-traps.c b/io2d/src/3rd-party/cairo/src/cairo-traps.c similarity index 100% rename from 3rd-party/cairo/src/cairo-traps.c rename to io2d/src/3rd-party/cairo/src/cairo-traps.c diff --git a/3rd-party/cairo/src/cairo-tristrip-private.h b/io2d/src/3rd-party/cairo/src/cairo-tristrip-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-tristrip-private.h rename to io2d/src/3rd-party/cairo/src/cairo-tristrip-private.h diff --git a/3rd-party/cairo/src/cairo-tristrip.c b/io2d/src/3rd-party/cairo/src/cairo-tristrip.c similarity index 100% rename from 3rd-party/cairo/src/cairo-tristrip.c rename to io2d/src/3rd-party/cairo/src/cairo-tristrip.c diff --git a/3rd-party/cairo/src/cairo-truetype-subset-private.h b/io2d/src/3rd-party/cairo/src/cairo-truetype-subset-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-truetype-subset-private.h rename to io2d/src/3rd-party/cairo/src/cairo-truetype-subset-private.h diff --git a/3rd-party/cairo/src/cairo-truetype-subset.c b/io2d/src/3rd-party/cairo/src/cairo-truetype-subset.c similarity index 100% rename from 3rd-party/cairo/src/cairo-truetype-subset.c rename to io2d/src/3rd-party/cairo/src/cairo-truetype-subset.c diff --git a/3rd-party/cairo/src/cairo-type1-fallback.c b/io2d/src/3rd-party/cairo/src/cairo-type1-fallback.c similarity index 100% rename from 3rd-party/cairo/src/cairo-type1-fallback.c rename to io2d/src/3rd-party/cairo/src/cairo-type1-fallback.c diff --git a/3rd-party/cairo/src/cairo-type1-glyph-names.c b/io2d/src/3rd-party/cairo/src/cairo-type1-glyph-names.c similarity index 100% rename from 3rd-party/cairo/src/cairo-type1-glyph-names.c rename to io2d/src/3rd-party/cairo/src/cairo-type1-glyph-names.c diff --git a/3rd-party/cairo/src/cairo-type1-private.h b/io2d/src/3rd-party/cairo/src/cairo-type1-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-type1-private.h rename to io2d/src/3rd-party/cairo/src/cairo-type1-private.h diff --git a/3rd-party/cairo/src/cairo-type1-subset.c b/io2d/src/3rd-party/cairo/src/cairo-type1-subset.c similarity index 100% rename from 3rd-party/cairo/src/cairo-type1-subset.c rename to io2d/src/3rd-party/cairo/src/cairo-type1-subset.c diff --git a/3rd-party/cairo/src/cairo-type3-glyph-surface-private.h b/io2d/src/3rd-party/cairo/src/cairo-type3-glyph-surface-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-type3-glyph-surface-private.h rename to io2d/src/3rd-party/cairo/src/cairo-type3-glyph-surface-private.h diff --git a/3rd-party/cairo/src/cairo-type3-glyph-surface.c b/io2d/src/3rd-party/cairo/src/cairo-type3-glyph-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-type3-glyph-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-type3-glyph-surface.c diff --git a/3rd-party/cairo/src/cairo-types-private.h b/io2d/src/3rd-party/cairo/src/cairo-types-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-types-private.h rename to io2d/src/3rd-party/cairo/src/cairo-types-private.h diff --git a/3rd-party/cairo/src/cairo-unicode.c b/io2d/src/3rd-party/cairo/src/cairo-unicode.c similarity index 100% rename from 3rd-party/cairo/src/cairo-unicode.c rename to io2d/src/3rd-party/cairo/src/cairo-unicode.c diff --git a/3rd-party/cairo/src/cairo-uninstalled.pc.in b/io2d/src/3rd-party/cairo/src/cairo-uninstalled.pc.in similarity index 100% rename from 3rd-party/cairo/src/cairo-uninstalled.pc.in rename to io2d/src/3rd-party/cairo/src/cairo-uninstalled.pc.in diff --git a/3rd-party/cairo/src/cairo-user-font-private.h b/io2d/src/3rd-party/cairo/src/cairo-user-font-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-user-font-private.h rename to io2d/src/3rd-party/cairo/src/cairo-user-font-private.h diff --git a/3rd-party/cairo/src/cairo-user-font.c b/io2d/src/3rd-party/cairo/src/cairo-user-font.c similarity index 100% rename from 3rd-party/cairo/src/cairo-user-font.c rename to io2d/src/3rd-party/cairo/src/cairo-user-font.c diff --git a/3rd-party/cairo/src/cairo-version.c b/io2d/src/3rd-party/cairo/src/cairo-version.c similarity index 100% rename from 3rd-party/cairo/src/cairo-version.c rename to io2d/src/3rd-party/cairo/src/cairo-version.c diff --git a/3rd-party/cairo/src/cairo-version.h b/io2d/src/3rd-party/cairo/src/cairo-version.h similarity index 100% rename from 3rd-party/cairo/src/cairo-version.h rename to io2d/src/3rd-party/cairo/src/cairo-version.h diff --git a/3rd-party/cairo/src/cairo-vg-surface.c b/io2d/src/3rd-party/cairo/src/cairo-vg-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-vg-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-vg-surface.c diff --git a/3rd-party/cairo/src/cairo-vg.h b/io2d/src/3rd-party/cairo/src/cairo-vg.h similarity index 100% rename from 3rd-party/cairo/src/cairo-vg.h rename to io2d/src/3rd-party/cairo/src/cairo-vg.h diff --git a/3rd-party/cairo/src/cairo-wgl-context.c b/io2d/src/3rd-party/cairo/src/cairo-wgl-context.c similarity index 100% rename from 3rd-party/cairo/src/cairo-wgl-context.c rename to io2d/src/3rd-party/cairo/src/cairo-wgl-context.c diff --git a/3rd-party/cairo/src/cairo-wideint-private.h b/io2d/src/3rd-party/cairo/src/cairo-wideint-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-wideint-private.h rename to io2d/src/3rd-party/cairo/src/cairo-wideint-private.h diff --git a/3rd-party/cairo/src/cairo-wideint-type-private.h b/io2d/src/3rd-party/cairo/src/cairo-wideint-type-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-wideint-type-private.h rename to io2d/src/3rd-party/cairo/src/cairo-wideint-type-private.h diff --git a/3rd-party/cairo/src/cairo-wideint.c b/io2d/src/3rd-party/cairo/src/cairo-wideint.c similarity index 100% rename from 3rd-party/cairo/src/cairo-wideint.c rename to io2d/src/3rd-party/cairo/src/cairo-wideint.c diff --git a/3rd-party/cairo/src/cairo-win32.h b/io2d/src/3rd-party/cairo/src/cairo-win32.h similarity index 100% rename from 3rd-party/cairo/src/cairo-win32.h rename to io2d/src/3rd-party/cairo/src/cairo-win32.h diff --git a/3rd-party/cairo/src/cairo-xcb-connection-core.c b/io2d/src/3rd-party/cairo/src/cairo-xcb-connection-core.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xcb-connection-core.c rename to io2d/src/3rd-party/cairo/src/cairo-xcb-connection-core.c diff --git a/3rd-party/cairo/src/cairo-xcb-connection-render.c b/io2d/src/3rd-party/cairo/src/cairo-xcb-connection-render.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xcb-connection-render.c rename to io2d/src/3rd-party/cairo/src/cairo-xcb-connection-render.c diff --git a/3rd-party/cairo/src/cairo-xcb-connection-shm.c b/io2d/src/3rd-party/cairo/src/cairo-xcb-connection-shm.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xcb-connection-shm.c rename to io2d/src/3rd-party/cairo/src/cairo-xcb-connection-shm.c diff --git a/3rd-party/cairo/src/cairo-xcb-connection.c b/io2d/src/3rd-party/cairo/src/cairo-xcb-connection.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xcb-connection.c rename to io2d/src/3rd-party/cairo/src/cairo-xcb-connection.c diff --git a/3rd-party/cairo/src/cairo-xcb-private.h b/io2d/src/3rd-party/cairo/src/cairo-xcb-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-xcb-private.h rename to io2d/src/3rd-party/cairo/src/cairo-xcb-private.h diff --git a/3rd-party/cairo/src/cairo-xcb-screen.c b/io2d/src/3rd-party/cairo/src/cairo-xcb-screen.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xcb-screen.c rename to io2d/src/3rd-party/cairo/src/cairo-xcb-screen.c diff --git a/3rd-party/cairo/src/cairo-xcb-shm.c b/io2d/src/3rd-party/cairo/src/cairo-xcb-shm.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xcb-shm.c rename to io2d/src/3rd-party/cairo/src/cairo-xcb-shm.c diff --git a/3rd-party/cairo/src/cairo-xcb-surface-core.c b/io2d/src/3rd-party/cairo/src/cairo-xcb-surface-core.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xcb-surface-core.c rename to io2d/src/3rd-party/cairo/src/cairo-xcb-surface-core.c diff --git a/3rd-party/cairo/src/cairo-xcb-surface-render.c b/io2d/src/3rd-party/cairo/src/cairo-xcb-surface-render.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xcb-surface-render.c rename to io2d/src/3rd-party/cairo/src/cairo-xcb-surface-render.c diff --git a/3rd-party/cairo/src/cairo-xcb-surface.c b/io2d/src/3rd-party/cairo/src/cairo-xcb-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xcb-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-xcb-surface.c diff --git a/3rd-party/cairo/src/cairo-xcb.h b/io2d/src/3rd-party/cairo/src/cairo-xcb.h similarity index 100% rename from 3rd-party/cairo/src/cairo-xcb.h rename to io2d/src/3rd-party/cairo/src/cairo-xcb.h diff --git a/3rd-party/cairo/src/cairo-xlib-core-compositor.c b/io2d/src/3rd-party/cairo/src/cairo-xlib-core-compositor.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xlib-core-compositor.c rename to io2d/src/3rd-party/cairo/src/cairo-xlib-core-compositor.c diff --git a/3rd-party/cairo/src/cairo-xlib-display.c b/io2d/src/3rd-party/cairo/src/cairo-xlib-display.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xlib-display.c rename to io2d/src/3rd-party/cairo/src/cairo-xlib-display.c diff --git a/3rd-party/cairo/src/cairo-xlib-fallback-compositor.c b/io2d/src/3rd-party/cairo/src/cairo-xlib-fallback-compositor.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xlib-fallback-compositor.c rename to io2d/src/3rd-party/cairo/src/cairo-xlib-fallback-compositor.c diff --git a/3rd-party/cairo/src/cairo-xlib-private.h b/io2d/src/3rd-party/cairo/src/cairo-xlib-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-xlib-private.h rename to io2d/src/3rd-party/cairo/src/cairo-xlib-private.h diff --git a/3rd-party/cairo/src/cairo-xlib-render-compositor.c b/io2d/src/3rd-party/cairo/src/cairo-xlib-render-compositor.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xlib-render-compositor.c rename to io2d/src/3rd-party/cairo/src/cairo-xlib-render-compositor.c diff --git a/3rd-party/cairo/src/cairo-xlib-screen.c b/io2d/src/3rd-party/cairo/src/cairo-xlib-screen.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xlib-screen.c rename to io2d/src/3rd-party/cairo/src/cairo-xlib-screen.c diff --git a/3rd-party/cairo/src/cairo-xlib-source.c b/io2d/src/3rd-party/cairo/src/cairo-xlib-source.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xlib-source.c rename to io2d/src/3rd-party/cairo/src/cairo-xlib-source.c diff --git a/3rd-party/cairo/src/cairo-xlib-surface-private.h b/io2d/src/3rd-party/cairo/src/cairo-xlib-surface-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-xlib-surface-private.h rename to io2d/src/3rd-party/cairo/src/cairo-xlib-surface-private.h diff --git a/3rd-party/cairo/src/cairo-xlib-surface-shm.c b/io2d/src/3rd-party/cairo/src/cairo-xlib-surface-shm.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xlib-surface-shm.c rename to io2d/src/3rd-party/cairo/src/cairo-xlib-surface-shm.c diff --git a/3rd-party/cairo/src/cairo-xlib-surface.c b/io2d/src/3rd-party/cairo/src/cairo-xlib-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xlib-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-xlib-surface.c diff --git a/3rd-party/cairo/src/cairo-xlib-visual.c b/io2d/src/3rd-party/cairo/src/cairo-xlib-visual.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xlib-visual.c rename to io2d/src/3rd-party/cairo/src/cairo-xlib-visual.c diff --git a/3rd-party/cairo/src/cairo-xlib-xcb-surface.c b/io2d/src/3rd-party/cairo/src/cairo-xlib-xcb-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xlib-xcb-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-xlib-xcb-surface.c diff --git a/3rd-party/cairo/src/cairo-xlib-xrender-private.h b/io2d/src/3rd-party/cairo/src/cairo-xlib-xrender-private.h similarity index 100% rename from 3rd-party/cairo/src/cairo-xlib-xrender-private.h rename to io2d/src/3rd-party/cairo/src/cairo-xlib-xrender-private.h diff --git a/3rd-party/cairo/src/cairo-xlib-xrender.h b/io2d/src/3rd-party/cairo/src/cairo-xlib-xrender.h similarity index 100% rename from 3rd-party/cairo/src/cairo-xlib-xrender.h rename to io2d/src/3rd-party/cairo/src/cairo-xlib-xrender.h diff --git a/3rd-party/cairo/src/cairo-xlib.h b/io2d/src/3rd-party/cairo/src/cairo-xlib.h similarity index 100% rename from 3rd-party/cairo/src/cairo-xlib.h rename to io2d/src/3rd-party/cairo/src/cairo-xlib.h diff --git a/3rd-party/cairo/src/cairo-xml-surface.c b/io2d/src/3rd-party/cairo/src/cairo-xml-surface.c similarity index 100% rename from 3rd-party/cairo/src/cairo-xml-surface.c rename to io2d/src/3rd-party/cairo/src/cairo-xml-surface.c diff --git a/3rd-party/cairo/src/cairo-xml.h b/io2d/src/3rd-party/cairo/src/cairo-xml.h similarity index 100% rename from 3rd-party/cairo/src/cairo-xml.h rename to io2d/src/3rd-party/cairo/src/cairo-xml.h diff --git a/3rd-party/cairo/src/cairo.c b/io2d/src/3rd-party/cairo/src/cairo.c similarity index 100% rename from 3rd-party/cairo/src/cairo.c rename to io2d/src/3rd-party/cairo/src/cairo.c diff --git a/3rd-party/cairo/src/cairo.h b/io2d/src/3rd-party/cairo/src/cairo.h similarity index 100% rename from 3rd-party/cairo/src/cairo.h rename to io2d/src/3rd-party/cairo/src/cairo.h diff --git a/3rd-party/cairo/src/cairo.pc.in b/io2d/src/3rd-party/cairo/src/cairo.pc.in similarity index 100% rename from 3rd-party/cairo/src/cairo.pc.in rename to io2d/src/3rd-party/cairo/src/cairo.pc.in diff --git a/3rd-party/cairo/src/cairoint.h b/io2d/src/3rd-party/cairo/src/cairoint.h similarity index 100% rename from 3rd-party/cairo/src/cairoint.h rename to io2d/src/3rd-party/cairo/src/cairoint.h diff --git a/3rd-party/cairo/src/check-def.sh b/io2d/src/3rd-party/cairo/src/check-def.sh similarity index 100% rename from 3rd-party/cairo/src/check-def.sh rename to io2d/src/3rd-party/cairo/src/check-def.sh diff --git a/3rd-party/cairo/src/check-doc-syntax.awk b/io2d/src/3rd-party/cairo/src/check-doc-syntax.awk similarity index 100% rename from 3rd-party/cairo/src/check-doc-syntax.awk rename to io2d/src/3rd-party/cairo/src/check-doc-syntax.awk diff --git a/3rd-party/cairo/src/check-doc-syntax.sh b/io2d/src/3rd-party/cairo/src/check-doc-syntax.sh similarity index 100% rename from 3rd-party/cairo/src/check-doc-syntax.sh rename to io2d/src/3rd-party/cairo/src/check-doc-syntax.sh diff --git a/3rd-party/cairo/src/check-has-hidden-symbols.c b/io2d/src/3rd-party/cairo/src/check-has-hidden-symbols.c similarity index 100% rename from 3rd-party/cairo/src/check-has-hidden-symbols.c rename to io2d/src/3rd-party/cairo/src/check-has-hidden-symbols.c diff --git a/3rd-party/cairo/src/check-headers.sh b/io2d/src/3rd-party/cairo/src/check-headers.sh similarity index 100% rename from 3rd-party/cairo/src/check-headers.sh rename to io2d/src/3rd-party/cairo/src/check-headers.sh diff --git a/3rd-party/cairo/src/check-link.c b/io2d/src/3rd-party/cairo/src/check-link.c similarity index 100% rename from 3rd-party/cairo/src/check-link.c rename to io2d/src/3rd-party/cairo/src/check-link.c diff --git a/3rd-party/cairo/src/check-plt.sh b/io2d/src/3rd-party/cairo/src/check-plt.sh similarity index 100% rename from 3rd-party/cairo/src/check-plt.sh rename to io2d/src/3rd-party/cairo/src/check-plt.sh diff --git a/3rd-party/cairo/src/check-preprocessor-syntax.sh b/io2d/src/3rd-party/cairo/src/check-preprocessor-syntax.sh similarity index 100% rename from 3rd-party/cairo/src/check-preprocessor-syntax.sh rename to io2d/src/3rd-party/cairo/src/check-preprocessor-syntax.sh diff --git a/3rd-party/cairo/src/drm/cairo-drm-bo.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-bo.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-bo.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-bo.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-gallium-surface.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-gallium-surface.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-gallium-surface.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-gallium-surface.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-i915-glyphs.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-i915-glyphs.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-i915-glyphs.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-i915-glyphs.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-i915-private.h b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-i915-private.h similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-i915-private.h rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-i915-private.h diff --git a/3rd-party/cairo/src/drm/cairo-drm-i915-shader.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-i915-shader.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-i915-shader.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-i915-shader.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-i915-spans.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-i915-spans.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-i915-spans.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-i915-spans.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-i915-surface.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-i915-surface.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-i915-surface.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-i915-surface.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-i965-glyphs.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-i965-glyphs.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-i965-glyphs.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-i965-glyphs.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-i965-private.h b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-i965-private.h similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-i965-private.h rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-i965-private.h diff --git a/3rd-party/cairo/src/drm/cairo-drm-i965-shader.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-i965-shader.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-i965-shader.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-i965-shader.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-i965-spans.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-i965-spans.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-i965-spans.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-i965-spans.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-i965-surface.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-i965-surface.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-i965-surface.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-i965-surface.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-intel-brw-defines.h b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-brw-defines.h similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-intel-brw-defines.h rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-brw-defines.h diff --git a/3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu-emit.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu-emit.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu-emit.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu-emit.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu-util.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu-util.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu-util.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu-util.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu.h b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu.h similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu.h rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-brw-eu.h diff --git a/3rd-party/cairo/src/drm/cairo-drm-intel-brw-structs.h b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-brw-structs.h similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-intel-brw-structs.h rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-brw-structs.h diff --git a/3rd-party/cairo/src/drm/cairo-drm-intel-command-private.h b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-command-private.h similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-intel-command-private.h rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-command-private.h diff --git a/3rd-party/cairo/src/drm/cairo-drm-intel-debug.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-debug.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-intel-debug.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-debug.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-intel-ioctl-private.h b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-ioctl-private.h similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-intel-ioctl-private.h rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-ioctl-private.h diff --git a/3rd-party/cairo/src/drm/cairo-drm-intel-private.h b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-private.h similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-intel-private.h rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-private.h diff --git a/3rd-party/cairo/src/drm/cairo-drm-intel-surface.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-surface.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-intel-surface.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel-surface.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-intel.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-intel.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-intel.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-ioctl-private.h b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-ioctl-private.h similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-ioctl-private.h rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-ioctl-private.h diff --git a/3rd-party/cairo/src/drm/cairo-drm-private.h b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-private.h similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-private.h rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-private.h diff --git a/3rd-party/cairo/src/drm/cairo-drm-radeon-private.h b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-radeon-private.h similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-radeon-private.h rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-radeon-private.h diff --git a/3rd-party/cairo/src/drm/cairo-drm-radeon-surface.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-radeon-surface.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-radeon-surface.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-radeon-surface.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-radeon.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-radeon.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-radeon.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-radeon.c diff --git a/3rd-party/cairo/src/drm/cairo-drm-surface.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm-surface.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm-surface.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm-surface.c diff --git a/3rd-party/cairo/src/drm/cairo-drm.c b/io2d/src/3rd-party/cairo/src/drm/cairo-drm.c similarity index 100% rename from 3rd-party/cairo/src/drm/cairo-drm.c rename to io2d/src/3rd-party/cairo/src/drm/cairo-drm.c diff --git a/3rd-party/cairo/src/skia/cairo-skia-context.cpp b/io2d/src/3rd-party/cairo/src/skia/cairo-skia-context.cpp similarity index 100% rename from 3rd-party/cairo/src/skia/cairo-skia-context.cpp rename to io2d/src/3rd-party/cairo/src/skia/cairo-skia-context.cpp diff --git a/3rd-party/cairo/src/skia/cairo-skia-private.h b/io2d/src/3rd-party/cairo/src/skia/cairo-skia-private.h similarity index 100% rename from 3rd-party/cairo/src/skia/cairo-skia-private.h rename to io2d/src/3rd-party/cairo/src/skia/cairo-skia-private.h diff --git a/3rd-party/cairo/src/skia/cairo-skia-surface.cpp b/io2d/src/3rd-party/cairo/src/skia/cairo-skia-surface.cpp similarity index 100% rename from 3rd-party/cairo/src/skia/cairo-skia-surface.cpp rename to io2d/src/3rd-party/cairo/src/skia/cairo-skia-surface.cpp diff --git a/3rd-party/cairo/src/test-base-compositor-surface.c b/io2d/src/3rd-party/cairo/src/test-base-compositor-surface.c similarity index 100% rename from 3rd-party/cairo/src/test-base-compositor-surface.c rename to io2d/src/3rd-party/cairo/src/test-base-compositor-surface.c diff --git a/3rd-party/cairo/src/test-compositor-surface-private.h b/io2d/src/3rd-party/cairo/src/test-compositor-surface-private.h similarity index 100% rename from 3rd-party/cairo/src/test-compositor-surface-private.h rename to io2d/src/3rd-party/cairo/src/test-compositor-surface-private.h diff --git a/3rd-party/cairo/src/test-compositor-surface.c b/io2d/src/3rd-party/cairo/src/test-compositor-surface.c similarity index 100% rename from 3rd-party/cairo/src/test-compositor-surface.c rename to io2d/src/3rd-party/cairo/src/test-compositor-surface.c diff --git a/3rd-party/cairo/src/test-compositor-surface.h b/io2d/src/3rd-party/cairo/src/test-compositor-surface.h similarity index 100% rename from 3rd-party/cairo/src/test-compositor-surface.h rename to io2d/src/3rd-party/cairo/src/test-compositor-surface.h diff --git a/3rd-party/cairo/src/test-null-compositor-surface.c b/io2d/src/3rd-party/cairo/src/test-null-compositor-surface.c similarity index 100% rename from 3rd-party/cairo/src/test-null-compositor-surface.c rename to io2d/src/3rd-party/cairo/src/test-null-compositor-surface.c diff --git a/3rd-party/cairo/src/test-null-compositor-surface.h b/io2d/src/3rd-party/cairo/src/test-null-compositor-surface.h similarity index 100% rename from 3rd-party/cairo/src/test-null-compositor-surface.h rename to io2d/src/3rd-party/cairo/src/test-null-compositor-surface.h diff --git a/3rd-party/cairo/src/test-paginated-surface.c b/io2d/src/3rd-party/cairo/src/test-paginated-surface.c similarity index 100% rename from 3rd-party/cairo/src/test-paginated-surface.c rename to io2d/src/3rd-party/cairo/src/test-paginated-surface.c diff --git a/3rd-party/cairo/src/test-paginated-surface.h b/io2d/src/3rd-party/cairo/src/test-paginated-surface.h similarity index 100% rename from 3rd-party/cairo/src/test-paginated-surface.h rename to io2d/src/3rd-party/cairo/src/test-paginated-surface.h diff --git a/3rd-party/cairo/src/win32/cairo-win32-debug.c b/io2d/src/3rd-party/cairo/src/win32/cairo-win32-debug.c similarity index 100% rename from 3rd-party/cairo/src/win32/cairo-win32-debug.c rename to io2d/src/3rd-party/cairo/src/win32/cairo-win32-debug.c diff --git a/3rd-party/cairo/src/win32/cairo-win32-device.c b/io2d/src/3rd-party/cairo/src/win32/cairo-win32-device.c similarity index 100% rename from 3rd-party/cairo/src/win32/cairo-win32-device.c rename to io2d/src/3rd-party/cairo/src/win32/cairo-win32-device.c diff --git a/3rd-party/cairo/src/win32/cairo-win32-display-surface.c b/io2d/src/3rd-party/cairo/src/win32/cairo-win32-display-surface.c similarity index 100% rename from 3rd-party/cairo/src/win32/cairo-win32-display-surface.c rename to io2d/src/3rd-party/cairo/src/win32/cairo-win32-display-surface.c diff --git a/3rd-party/cairo/src/win32/cairo-win32-font.c b/io2d/src/3rd-party/cairo/src/win32/cairo-win32-font.c similarity index 100% rename from 3rd-party/cairo/src/win32/cairo-win32-font.c rename to io2d/src/3rd-party/cairo/src/win32/cairo-win32-font.c diff --git a/3rd-party/cairo/src/win32/cairo-win32-gdi-compositor.c b/io2d/src/3rd-party/cairo/src/win32/cairo-win32-gdi-compositor.c similarity index 100% rename from 3rd-party/cairo/src/win32/cairo-win32-gdi-compositor.c rename to io2d/src/3rd-party/cairo/src/win32/cairo-win32-gdi-compositor.c diff --git a/3rd-party/cairo/src/win32/cairo-win32-printing-surface.c b/io2d/src/3rd-party/cairo/src/win32/cairo-win32-printing-surface.c similarity index 100% rename from 3rd-party/cairo/src/win32/cairo-win32-printing-surface.c rename to io2d/src/3rd-party/cairo/src/win32/cairo-win32-printing-surface.c diff --git a/3rd-party/cairo/src/win32/cairo-win32-private.h b/io2d/src/3rd-party/cairo/src/win32/cairo-win32-private.h similarity index 100% rename from 3rd-party/cairo/src/win32/cairo-win32-private.h rename to io2d/src/3rd-party/cairo/src/win32/cairo-win32-private.h diff --git a/3rd-party/cairo/src/win32/cairo-win32-surface.c b/io2d/src/3rd-party/cairo/src/win32/cairo-win32-surface.c similarity index 100% rename from 3rd-party/cairo/src/win32/cairo-win32-surface.c rename to io2d/src/3rd-party/cairo/src/win32/cairo-win32-surface.c diff --git a/3rd-party/cairo/src/win32/cairo-win32-system.c b/io2d/src/3rd-party/cairo/src/win32/cairo-win32-system.c similarity index 100% rename from 3rd-party/cairo/src/win32/cairo-win32-system.c rename to io2d/src/3rd-party/cairo/src/win32/cairo-win32-system.c diff --git a/3rd-party/cairo/test/.gitignore b/io2d/src/3rd-party/cairo/test/.gitignore similarity index 100% rename from 3rd-party/cairo/test/.gitignore rename to io2d/src/3rd-party/cairo/test/.gitignore diff --git a/3rd-party/cairo/test/.valgrind-suppressions b/io2d/src/3rd-party/cairo/test/.valgrind-suppressions similarity index 100% rename from 3rd-party/cairo/test/.valgrind-suppressions rename to io2d/src/3rd-party/cairo/test/.valgrind-suppressions diff --git a/3rd-party/cairo/test/6x13.pcf b/io2d/src/3rd-party/cairo/test/6x13.pcf similarity index 100% rename from 3rd-party/cairo/test/6x13.pcf rename to io2d/src/3rd-party/cairo/test/6x13.pcf diff --git a/3rd-party/cairo/test/COPYING b/io2d/src/3rd-party/cairo/test/COPYING similarity index 100% rename from 3rd-party/cairo/test/COPYING rename to io2d/src/3rd-party/cairo/test/COPYING diff --git a/3rd-party/cairo/test/Makefile.am b/io2d/src/3rd-party/cairo/test/Makefile.am similarity index 100% rename from 3rd-party/cairo/test/Makefile.am rename to io2d/src/3rd-party/cairo/test/Makefile.am diff --git a/3rd-party/cairo/test/Makefile.sources b/io2d/src/3rd-party/cairo/test/Makefile.sources similarity index 100% rename from 3rd-party/cairo/test/Makefile.sources rename to io2d/src/3rd-party/cairo/test/Makefile.sources diff --git a/3rd-party/cairo/test/Makefile.win32 b/io2d/src/3rd-party/cairo/test/Makefile.win32 similarity index 100% rename from 3rd-party/cairo/test/Makefile.win32 rename to io2d/src/3rd-party/cairo/test/Makefile.win32 diff --git a/3rd-party/cairo/test/README b/io2d/src/3rd-party/cairo/test/README similarity index 100% rename from 3rd-party/cairo/test/README rename to io2d/src/3rd-party/cairo/test/README diff --git a/3rd-party/cairo/test/a1-bug.c b/io2d/src/3rd-party/cairo/test/a1-bug.c similarity index 100% rename from 3rd-party/cairo/test/a1-bug.c rename to io2d/src/3rd-party/cairo/test/a1-bug.c diff --git a/3rd-party/cairo/test/a1-clip.c b/io2d/src/3rd-party/cairo/test/a1-clip.c similarity index 100% rename from 3rd-party/cairo/test/a1-clip.c rename to io2d/src/3rd-party/cairo/test/a1-clip.c diff --git a/3rd-party/cairo/test/a1-fill.c b/io2d/src/3rd-party/cairo/test/a1-fill.c similarity index 100% rename from 3rd-party/cairo/test/a1-fill.c rename to io2d/src/3rd-party/cairo/test/a1-fill.c diff --git a/3rd-party/cairo/test/a1-image-sample.c b/io2d/src/3rd-party/cairo/test/a1-image-sample.c similarity index 100% rename from 3rd-party/cairo/test/a1-image-sample.c rename to io2d/src/3rd-party/cairo/test/a1-image-sample.c diff --git a/3rd-party/cairo/test/a1-mask-sample.c b/io2d/src/3rd-party/cairo/test/a1-mask-sample.c similarity index 100% rename from 3rd-party/cairo/test/a1-mask-sample.c rename to io2d/src/3rd-party/cairo/test/a1-mask-sample.c diff --git a/3rd-party/cairo/test/a1-mask.c b/io2d/src/3rd-party/cairo/test/a1-mask.c similarity index 100% rename from 3rd-party/cairo/test/a1-mask.c rename to io2d/src/3rd-party/cairo/test/a1-mask.c diff --git a/3rd-party/cairo/test/a1-rasterisation.c b/io2d/src/3rd-party/cairo/test/a1-rasterisation.c similarity index 100% rename from 3rd-party/cairo/test/a1-rasterisation.c rename to io2d/src/3rd-party/cairo/test/a1-rasterisation.c diff --git a/3rd-party/cairo/test/a1-sample.c b/io2d/src/3rd-party/cairo/test/a1-sample.c similarity index 100% rename from 3rd-party/cairo/test/a1-sample.c rename to io2d/src/3rd-party/cairo/test/a1-sample.c diff --git a/3rd-party/cairo/test/a1-traps-sample.c b/io2d/src/3rd-party/cairo/test/a1-traps-sample.c similarity index 100% rename from 3rd-party/cairo/test/a1-traps-sample.c rename to io2d/src/3rd-party/cairo/test/a1-traps-sample.c diff --git a/3rd-party/cairo/test/a8-clear.c b/io2d/src/3rd-party/cairo/test/a8-clear.c similarity index 100% rename from 3rd-party/cairo/test/a8-clear.c rename to io2d/src/3rd-party/cairo/test/a8-clear.c diff --git a/3rd-party/cairo/test/a8-mask.c b/io2d/src/3rd-party/cairo/test/a8-mask.c similarity index 100% rename from 3rd-party/cairo/test/a8-mask.c rename to io2d/src/3rd-party/cairo/test/a8-mask.c diff --git a/3rd-party/cairo/test/aliasing.c b/io2d/src/3rd-party/cairo/test/aliasing.c similarity index 100% rename from 3rd-party/cairo/test/aliasing.c rename to io2d/src/3rd-party/cairo/test/aliasing.c diff --git a/3rd-party/cairo/test/alpha-similar.c b/io2d/src/3rd-party/cairo/test/alpha-similar.c similarity index 100% rename from 3rd-party/cairo/test/alpha-similar.c rename to io2d/src/3rd-party/cairo/test/alpha-similar.c diff --git a/3rd-party/cairo/test/any2ppm.c b/io2d/src/3rd-party/cairo/test/any2ppm.c similarity index 100% rename from 3rd-party/cairo/test/any2ppm.c rename to io2d/src/3rd-party/cairo/test/any2ppm.c diff --git a/3rd-party/cairo/test/api-special-cases.c b/io2d/src/3rd-party/cairo/test/api-special-cases.c similarity index 100% rename from 3rd-party/cairo/test/api-special-cases.c rename to io2d/src/3rd-party/cairo/test/api-special-cases.c diff --git a/3rd-party/cairo/test/arc-direction.c b/io2d/src/3rd-party/cairo/test/arc-direction.c similarity index 100% rename from 3rd-party/cairo/test/arc-direction.c rename to io2d/src/3rd-party/cairo/test/arc-direction.c diff --git a/3rd-party/cairo/test/arc-infinite-loop.c b/io2d/src/3rd-party/cairo/test/arc-infinite-loop.c similarity index 100% rename from 3rd-party/cairo/test/arc-infinite-loop.c rename to io2d/src/3rd-party/cairo/test/arc-infinite-loop.c diff --git a/3rd-party/cairo/test/arc-looping-dash.c b/io2d/src/3rd-party/cairo/test/arc-looping-dash.c similarity index 100% rename from 3rd-party/cairo/test/arc-looping-dash.c rename to io2d/src/3rd-party/cairo/test/arc-looping-dash.c diff --git a/3rd-party/cairo/test/big-empty-box.c b/io2d/src/3rd-party/cairo/test/big-empty-box.c similarity index 100% rename from 3rd-party/cairo/test/big-empty-box.c rename to io2d/src/3rd-party/cairo/test/big-empty-box.c diff --git a/3rd-party/cairo/test/big-empty-triangle.c b/io2d/src/3rd-party/cairo/test/big-empty-triangle.c similarity index 100% rename from 3rd-party/cairo/test/big-empty-triangle.c rename to io2d/src/3rd-party/cairo/test/big-empty-triangle.c diff --git a/3rd-party/cairo/test/big-line.c b/io2d/src/3rd-party/cairo/test/big-line.c similarity index 100% rename from 3rd-party/cairo/test/big-line.c rename to io2d/src/3rd-party/cairo/test/big-line.c diff --git a/3rd-party/cairo/test/big-little-box.c b/io2d/src/3rd-party/cairo/test/big-little-box.c similarity index 100% rename from 3rd-party/cairo/test/big-little-box.c rename to io2d/src/3rd-party/cairo/test/big-little-box.c diff --git a/3rd-party/cairo/test/big-little-triangle.c b/io2d/src/3rd-party/cairo/test/big-little-triangle.c similarity index 100% rename from 3rd-party/cairo/test/big-little-triangle.c rename to io2d/src/3rd-party/cairo/test/big-little-triangle.c diff --git a/3rd-party/cairo/test/big-trap.c b/io2d/src/3rd-party/cairo/test/big-trap.c similarity index 100% rename from 3rd-party/cairo/test/big-trap.c rename to io2d/src/3rd-party/cairo/test/big-trap.c diff --git a/3rd-party/cairo/test/bilevel-image.c b/io2d/src/3rd-party/cairo/test/bilevel-image.c similarity index 100% rename from 3rd-party/cairo/test/bilevel-image.c rename to io2d/src/3rd-party/cairo/test/bilevel-image.c diff --git a/3rd-party/cairo/test/bitmap-font.c b/io2d/src/3rd-party/cairo/test/bitmap-font.c similarity index 100% rename from 3rd-party/cairo/test/bitmap-font.c rename to io2d/src/3rd-party/cairo/test/bitmap-font.c diff --git a/3rd-party/cairo/test/buffer-diff.c b/io2d/src/3rd-party/cairo/test/buffer-diff.c similarity index 100% rename from 3rd-party/cairo/test/buffer-diff.c rename to io2d/src/3rd-party/cairo/test/buffer-diff.c diff --git a/3rd-party/cairo/test/buffer-diff.h b/io2d/src/3rd-party/cairo/test/buffer-diff.h similarity index 100% rename from 3rd-party/cairo/test/buffer-diff.h rename to io2d/src/3rd-party/cairo/test/buffer-diff.h diff --git a/3rd-party/cairo/test/bug-40410.c b/io2d/src/3rd-party/cairo/test/bug-40410.c similarity index 100% rename from 3rd-party/cairo/test/bug-40410.c rename to io2d/src/3rd-party/cairo/test/bug-40410.c diff --git a/3rd-party/cairo/test/bug-51910.c b/io2d/src/3rd-party/cairo/test/bug-51910.c similarity index 100% rename from 3rd-party/cairo/test/bug-51910.c rename to io2d/src/3rd-party/cairo/test/bug-51910.c diff --git a/3rd-party/cairo/test/bug-bo-collins.c b/io2d/src/3rd-party/cairo/test/bug-bo-collins.c similarity index 100% rename from 3rd-party/cairo/test/bug-bo-collins.c rename to io2d/src/3rd-party/cairo/test/bug-bo-collins.c diff --git a/3rd-party/cairo/test/bug-bo-rectangular.c b/io2d/src/3rd-party/cairo/test/bug-bo-rectangular.c similarity index 100% rename from 3rd-party/cairo/test/bug-bo-rectangular.c rename to io2d/src/3rd-party/cairo/test/bug-bo-rectangular.c diff --git a/3rd-party/cairo/test/bug-bo-ricotz.c b/io2d/src/3rd-party/cairo/test/bug-bo-ricotz.c similarity index 100% rename from 3rd-party/cairo/test/bug-bo-ricotz.c rename to io2d/src/3rd-party/cairo/test/bug-bo-ricotz.c diff --git a/3rd-party/cairo/test/bug-extents.c b/io2d/src/3rd-party/cairo/test/bug-extents.c similarity index 100% rename from 3rd-party/cairo/test/bug-extents.c rename to io2d/src/3rd-party/cairo/test/bug-extents.c diff --git a/3rd-party/cairo/test/bug-seams.c b/io2d/src/3rd-party/cairo/test/bug-seams.c similarity index 100% rename from 3rd-party/cairo/test/bug-seams.c rename to io2d/src/3rd-party/cairo/test/bug-seams.c diff --git a/3rd-party/cairo/test/bug-source-cu.c b/io2d/src/3rd-party/cairo/test/bug-source-cu.c similarity index 100% rename from 3rd-party/cairo/test/bug-source-cu.c rename to io2d/src/3rd-party/cairo/test/bug-source-cu.c diff --git a/3rd-party/cairo/test/bug-spline.c b/io2d/src/3rd-party/cairo/test/bug-spline.c similarity index 100% rename from 3rd-party/cairo/test/bug-spline.c rename to io2d/src/3rd-party/cairo/test/bug-spline.c diff --git a/3rd-party/cairo/test/cairo-test-private.h b/io2d/src/3rd-party/cairo/test/cairo-test-private.h similarity index 100% rename from 3rd-party/cairo/test/cairo-test-private.h rename to io2d/src/3rd-party/cairo/test/cairo-test-private.h diff --git a/3rd-party/cairo/test/cairo-test-runner.c b/io2d/src/3rd-party/cairo/test/cairo-test-runner.c similarity index 100% rename from 3rd-party/cairo/test/cairo-test-runner.c rename to io2d/src/3rd-party/cairo/test/cairo-test-runner.c diff --git a/3rd-party/cairo/test/cairo-test-trace.c b/io2d/src/3rd-party/cairo/test/cairo-test-trace.c similarity index 100% rename from 3rd-party/cairo/test/cairo-test-trace.c rename to io2d/src/3rd-party/cairo/test/cairo-test-trace.c diff --git a/3rd-party/cairo/test/cairo-test.c b/io2d/src/3rd-party/cairo/test/cairo-test.c similarity index 100% rename from 3rd-party/cairo/test/cairo-test.c rename to io2d/src/3rd-party/cairo/test/cairo-test.c diff --git a/3rd-party/cairo/test/cairo-test.h b/io2d/src/3rd-party/cairo/test/cairo-test.h similarity index 100% rename from 3rd-party/cairo/test/cairo-test.h rename to io2d/src/3rd-party/cairo/test/cairo-test.h diff --git a/3rd-party/cairo/test/caps-joins-alpha.c b/io2d/src/3rd-party/cairo/test/caps-joins-alpha.c similarity index 100% rename from 3rd-party/cairo/test/caps-joins-alpha.c rename to io2d/src/3rd-party/cairo/test/caps-joins-alpha.c diff --git a/3rd-party/cairo/test/caps-joins-curve.c b/io2d/src/3rd-party/cairo/test/caps-joins-curve.c similarity index 100% rename from 3rd-party/cairo/test/caps-joins-curve.c rename to io2d/src/3rd-party/cairo/test/caps-joins-curve.c diff --git a/3rd-party/cairo/test/caps-joins.c b/io2d/src/3rd-party/cairo/test/caps-joins.c similarity index 100% rename from 3rd-party/cairo/test/caps-joins.c rename to io2d/src/3rd-party/cairo/test/caps-joins.c diff --git a/3rd-party/cairo/test/caps-sub-paths.c b/io2d/src/3rd-party/cairo/test/caps-sub-paths.c similarity index 100% rename from 3rd-party/cairo/test/caps-sub-paths.c rename to io2d/src/3rd-party/cairo/test/caps-sub-paths.c diff --git a/3rd-party/cairo/test/caps-tails-curve.c b/io2d/src/3rd-party/cairo/test/caps-tails-curve.c similarity index 100% rename from 3rd-party/cairo/test/caps-tails-curve.c rename to io2d/src/3rd-party/cairo/test/caps-tails-curve.c diff --git a/3rd-party/cairo/test/caps.c b/io2d/src/3rd-party/cairo/test/caps.c similarity index 100% rename from 3rd-party/cairo/test/caps.c rename to io2d/src/3rd-party/cairo/test/caps.c diff --git a/3rd-party/cairo/test/check-refs.sh b/io2d/src/3rd-party/cairo/test/check-refs.sh similarity index 100% rename from 3rd-party/cairo/test/check-refs.sh rename to io2d/src/3rd-party/cairo/test/check-refs.sh diff --git a/3rd-party/cairo/test/checkerboard.c b/io2d/src/3rd-party/cairo/test/checkerboard.c similarity index 100% rename from 3rd-party/cairo/test/checkerboard.c rename to io2d/src/3rd-party/cairo/test/checkerboard.c diff --git a/3rd-party/cairo/test/clear-source.c b/io2d/src/3rd-party/cairo/test/clear-source.c similarity index 100% rename from 3rd-party/cairo/test/clear-source.c rename to io2d/src/3rd-party/cairo/test/clear-source.c diff --git a/3rd-party/cairo/test/clear.c b/io2d/src/3rd-party/cairo/test/clear.c similarity index 100% rename from 3rd-party/cairo/test/clear.c rename to io2d/src/3rd-party/cairo/test/clear.c diff --git a/3rd-party/cairo/test/clip-all.c b/io2d/src/3rd-party/cairo/test/clip-all.c similarity index 100% rename from 3rd-party/cairo/test/clip-all.c rename to io2d/src/3rd-party/cairo/test/clip-all.c diff --git a/3rd-party/cairo/test/clip-complex-bug61592.c b/io2d/src/3rd-party/cairo/test/clip-complex-bug61592.c similarity index 100% rename from 3rd-party/cairo/test/clip-complex-bug61592.c rename to io2d/src/3rd-party/cairo/test/clip-complex-bug61592.c diff --git a/3rd-party/cairo/test/clip-complex-shape.c b/io2d/src/3rd-party/cairo/test/clip-complex-shape.c similarity index 100% rename from 3rd-party/cairo/test/clip-complex-shape.c rename to io2d/src/3rd-party/cairo/test/clip-complex-shape.c diff --git a/3rd-party/cairo/test/clip-contexts.c b/io2d/src/3rd-party/cairo/test/clip-contexts.c similarity index 100% rename from 3rd-party/cairo/test/clip-contexts.c rename to io2d/src/3rd-party/cairo/test/clip-contexts.c diff --git a/3rd-party/cairo/test/clip-device-offset.c b/io2d/src/3rd-party/cairo/test/clip-device-offset.c similarity index 100% rename from 3rd-party/cairo/test/clip-device-offset.c rename to io2d/src/3rd-party/cairo/test/clip-device-offset.c diff --git a/3rd-party/cairo/test/clip-disjoint-hatching.c b/io2d/src/3rd-party/cairo/test/clip-disjoint-hatching.c similarity index 100% rename from 3rd-party/cairo/test/clip-disjoint-hatching.c rename to io2d/src/3rd-party/cairo/test/clip-disjoint-hatching.c diff --git a/3rd-party/cairo/test/clip-disjoint-quad.c b/io2d/src/3rd-party/cairo/test/clip-disjoint-quad.c similarity index 100% rename from 3rd-party/cairo/test/clip-disjoint-quad.c rename to io2d/src/3rd-party/cairo/test/clip-disjoint-quad.c diff --git a/3rd-party/cairo/test/clip-disjoint.c b/io2d/src/3rd-party/cairo/test/clip-disjoint.c similarity index 100% rename from 3rd-party/cairo/test/clip-disjoint.c rename to io2d/src/3rd-party/cairo/test/clip-disjoint.c diff --git a/3rd-party/cairo/test/clip-double-free.c b/io2d/src/3rd-party/cairo/test/clip-double-free.c similarity index 100% rename from 3rd-party/cairo/test/clip-double-free.c rename to io2d/src/3rd-party/cairo/test/clip-double-free.c diff --git a/3rd-party/cairo/test/clip-draw-unbounded.c b/io2d/src/3rd-party/cairo/test/clip-draw-unbounded.c similarity index 100% rename from 3rd-party/cairo/test/clip-draw-unbounded.c rename to io2d/src/3rd-party/cairo/test/clip-draw-unbounded.c diff --git a/3rd-party/cairo/test/clip-empty-group.c b/io2d/src/3rd-party/cairo/test/clip-empty-group.c similarity index 100% rename from 3rd-party/cairo/test/clip-empty-group.c rename to io2d/src/3rd-party/cairo/test/clip-empty-group.c diff --git a/3rd-party/cairo/test/clip-empty-save.c b/io2d/src/3rd-party/cairo/test/clip-empty-save.c similarity index 100% rename from 3rd-party/cairo/test/clip-empty-save.c rename to io2d/src/3rd-party/cairo/test/clip-empty-save.c diff --git a/3rd-party/cairo/test/clip-empty.c b/io2d/src/3rd-party/cairo/test/clip-empty.c similarity index 100% rename from 3rd-party/cairo/test/clip-empty.c rename to io2d/src/3rd-party/cairo/test/clip-empty.c diff --git a/3rd-party/cairo/test/clip-fill-no-op.c b/io2d/src/3rd-party/cairo/test/clip-fill-no-op.c similarity index 100% rename from 3rd-party/cairo/test/clip-fill-no-op.c rename to io2d/src/3rd-party/cairo/test/clip-fill-no-op.c diff --git a/3rd-party/cairo/test/clip-fill-rule-pixel-aligned.c b/io2d/src/3rd-party/cairo/test/clip-fill-rule-pixel-aligned.c similarity index 100% rename from 3rd-party/cairo/test/clip-fill-rule-pixel-aligned.c rename to io2d/src/3rd-party/cairo/test/clip-fill-rule-pixel-aligned.c diff --git a/3rd-party/cairo/test/clip-fill-rule.c b/io2d/src/3rd-party/cairo/test/clip-fill-rule.c similarity index 100% rename from 3rd-party/cairo/test/clip-fill-rule.c rename to io2d/src/3rd-party/cairo/test/clip-fill-rule.c diff --git a/3rd-party/cairo/test/clip-fill.c b/io2d/src/3rd-party/cairo/test/clip-fill.c similarity index 100% rename from 3rd-party/cairo/test/clip-fill.c rename to io2d/src/3rd-party/cairo/test/clip-fill.c diff --git a/3rd-party/cairo/test/clip-group-shapes.c b/io2d/src/3rd-party/cairo/test/clip-group-shapes.c similarity index 100% rename from 3rd-party/cairo/test/clip-group-shapes.c rename to io2d/src/3rd-party/cairo/test/clip-group-shapes.c diff --git a/3rd-party/cairo/test/clip-image.c b/io2d/src/3rd-party/cairo/test/clip-image.c similarity index 100% rename from 3rd-party/cairo/test/clip-image.c rename to io2d/src/3rd-party/cairo/test/clip-image.c diff --git a/3rd-party/cairo/test/clip-intersect.c b/io2d/src/3rd-party/cairo/test/clip-intersect.c similarity index 100% rename from 3rd-party/cairo/test/clip-intersect.c rename to io2d/src/3rd-party/cairo/test/clip-intersect.c diff --git a/3rd-party/cairo/test/clip-mixed-antialias.c b/io2d/src/3rd-party/cairo/test/clip-mixed-antialias.c similarity index 100% rename from 3rd-party/cairo/test/clip-mixed-antialias.c rename to io2d/src/3rd-party/cairo/test/clip-mixed-antialias.c diff --git a/3rd-party/cairo/test/clip-nesting.c b/io2d/src/3rd-party/cairo/test/clip-nesting.c similarity index 100% rename from 3rd-party/cairo/test/clip-nesting.c rename to io2d/src/3rd-party/cairo/test/clip-nesting.c diff --git a/3rd-party/cairo/test/clip-operator.c b/io2d/src/3rd-party/cairo/test/clip-operator.c similarity index 100% rename from 3rd-party/cairo/test/clip-operator.c rename to io2d/src/3rd-party/cairo/test/clip-operator.c diff --git a/3rd-party/cairo/test/clip-polygons.c b/io2d/src/3rd-party/cairo/test/clip-polygons.c similarity index 100% rename from 3rd-party/cairo/test/clip-polygons.c rename to io2d/src/3rd-party/cairo/test/clip-polygons.c diff --git a/3rd-party/cairo/test/clip-push-group.c b/io2d/src/3rd-party/cairo/test/clip-push-group.c similarity index 100% rename from 3rd-party/cairo/test/clip-push-group.c rename to io2d/src/3rd-party/cairo/test/clip-push-group.c diff --git a/3rd-party/cairo/test/clip-rectilinear.c b/io2d/src/3rd-party/cairo/test/clip-rectilinear.c similarity index 100% rename from 3rd-party/cairo/test/clip-rectilinear.c rename to io2d/src/3rd-party/cairo/test/clip-rectilinear.c diff --git a/3rd-party/cairo/test/clip-shape.c b/io2d/src/3rd-party/cairo/test/clip-shape.c similarity index 100% rename from 3rd-party/cairo/test/clip-shape.c rename to io2d/src/3rd-party/cairo/test/clip-shape.c diff --git a/3rd-party/cairo/test/clip-stroke-no-op.c b/io2d/src/3rd-party/cairo/test/clip-stroke-no-op.c similarity index 100% rename from 3rd-party/cairo/test/clip-stroke-no-op.c rename to io2d/src/3rd-party/cairo/test/clip-stroke-no-op.c diff --git a/3rd-party/cairo/test/clip-stroke.c b/io2d/src/3rd-party/cairo/test/clip-stroke.c similarity index 100% rename from 3rd-party/cairo/test/clip-stroke.c rename to io2d/src/3rd-party/cairo/test/clip-stroke.c diff --git a/3rd-party/cairo/test/clip-text.c b/io2d/src/3rd-party/cairo/test/clip-text.c similarity index 100% rename from 3rd-party/cairo/test/clip-text.c rename to io2d/src/3rd-party/cairo/test/clip-text.c diff --git a/3rd-party/cairo/test/clip-twice-rectangle.c b/io2d/src/3rd-party/cairo/test/clip-twice-rectangle.c similarity index 100% rename from 3rd-party/cairo/test/clip-twice-rectangle.c rename to io2d/src/3rd-party/cairo/test/clip-twice-rectangle.c diff --git a/3rd-party/cairo/test/clip-twice.c b/io2d/src/3rd-party/cairo/test/clip-twice.c similarity index 100% rename from 3rd-party/cairo/test/clip-twice.c rename to io2d/src/3rd-party/cairo/test/clip-twice.c diff --git a/3rd-party/cairo/test/clip-unbounded.c b/io2d/src/3rd-party/cairo/test/clip-unbounded.c similarity index 100% rename from 3rd-party/cairo/test/clip-unbounded.c rename to io2d/src/3rd-party/cairo/test/clip-unbounded.c diff --git a/3rd-party/cairo/test/clip-zero.c b/io2d/src/3rd-party/cairo/test/clip-zero.c similarity index 100% rename from 3rd-party/cairo/test/clip-zero.c rename to io2d/src/3rd-party/cairo/test/clip-zero.c diff --git a/3rd-party/cairo/test/clipped-group.c b/io2d/src/3rd-party/cairo/test/clipped-group.c similarity index 100% rename from 3rd-party/cairo/test/clipped-group.c rename to io2d/src/3rd-party/cairo/test/clipped-group.c diff --git a/3rd-party/cairo/test/clipped-surface.c b/io2d/src/3rd-party/cairo/test/clipped-surface.c similarity index 100% rename from 3rd-party/cairo/test/clipped-surface.c rename to io2d/src/3rd-party/cairo/test/clipped-surface.c diff --git a/3rd-party/cairo/test/clipped-trapezoids-ref.png b/io2d/src/3rd-party/cairo/test/clipped-trapezoids-ref.png similarity index 100% rename from 3rd-party/cairo/test/clipped-trapezoids-ref.png rename to io2d/src/3rd-party/cairo/test/clipped-trapezoids-ref.png diff --git a/3rd-party/cairo/test/clipped-trapezoids.c b/io2d/src/3rd-party/cairo/test/clipped-trapezoids.c similarity index 100% rename from 3rd-party/cairo/test/clipped-trapezoids.c rename to io2d/src/3rd-party/cairo/test/clipped-trapezoids.c diff --git a/3rd-party/cairo/test/close-path-current-point.c b/io2d/src/3rd-party/cairo/test/close-path-current-point.c similarity index 100% rename from 3rd-party/cairo/test/close-path-current-point.c rename to io2d/src/3rd-party/cairo/test/close-path-current-point.c diff --git a/3rd-party/cairo/test/close-path.c b/io2d/src/3rd-party/cairo/test/close-path.c similarity index 100% rename from 3rd-party/cairo/test/close-path.c rename to io2d/src/3rd-party/cairo/test/close-path.c diff --git a/3rd-party/cairo/test/composite-integer-translate-over-repeat.c b/io2d/src/3rd-party/cairo/test/composite-integer-translate-over-repeat.c similarity index 100% rename from 3rd-party/cairo/test/composite-integer-translate-over-repeat.c rename to io2d/src/3rd-party/cairo/test/composite-integer-translate-over-repeat.c diff --git a/3rd-party/cairo/test/composite-integer-translate-over.c b/io2d/src/3rd-party/cairo/test/composite-integer-translate-over.c similarity index 100% rename from 3rd-party/cairo/test/composite-integer-translate-over.c rename to io2d/src/3rd-party/cairo/test/composite-integer-translate-over.c diff --git a/3rd-party/cairo/test/composite-integer-translate-source.c b/io2d/src/3rd-party/cairo/test/composite-integer-translate-source.c similarity index 100% rename from 3rd-party/cairo/test/composite-integer-translate-source.c rename to io2d/src/3rd-party/cairo/test/composite-integer-translate-source.c diff --git a/3rd-party/cairo/test/copy-disjoint.c b/io2d/src/3rd-party/cairo/test/copy-disjoint.c similarity index 100% rename from 3rd-party/cairo/test/copy-disjoint.c rename to io2d/src/3rd-party/cairo/test/copy-disjoint.c diff --git a/3rd-party/cairo/test/copy-path.c b/io2d/src/3rd-party/cairo/test/copy-path.c similarity index 100% rename from 3rd-party/cairo/test/copy-path.c rename to io2d/src/3rd-party/cairo/test/copy-path.c diff --git a/3rd-party/cairo/test/coverage.c b/io2d/src/3rd-party/cairo/test/coverage.c similarity index 100% rename from 3rd-party/cairo/test/coverage.c rename to io2d/src/3rd-party/cairo/test/coverage.c diff --git a/3rd-party/cairo/test/create-for-stream.c b/io2d/src/3rd-party/cairo/test/create-for-stream.c similarity index 100% rename from 3rd-party/cairo/test/create-for-stream.c rename to io2d/src/3rd-party/cairo/test/create-for-stream.c diff --git a/3rd-party/cairo/test/create-from-png-stream.c b/io2d/src/3rd-party/cairo/test/create-from-png-stream.c similarity index 100% rename from 3rd-party/cairo/test/create-from-png-stream.c rename to io2d/src/3rd-party/cairo/test/create-from-png-stream.c diff --git a/3rd-party/cairo/test/create-from-png.c b/io2d/src/3rd-party/cairo/test/create-from-png.c similarity index 100% rename from 3rd-party/cairo/test/create-from-png.c rename to io2d/src/3rd-party/cairo/test/create-from-png.c diff --git a/3rd-party/cairo/test/culled-glyphs.c b/io2d/src/3rd-party/cairo/test/culled-glyphs.c similarity index 100% rename from 3rd-party/cairo/test/culled-glyphs.c rename to io2d/src/3rd-party/cairo/test/culled-glyphs.c diff --git a/3rd-party/cairo/test/curve-to-as-line-to.c b/io2d/src/3rd-party/cairo/test/curve-to-as-line-to.c similarity index 100% rename from 3rd-party/cairo/test/curve-to-as-line-to.c rename to io2d/src/3rd-party/cairo/test/curve-to-as-line-to.c diff --git a/3rd-party/cairo/test/dash-caps-joins.c b/io2d/src/3rd-party/cairo/test/dash-caps-joins.c similarity index 100% rename from 3rd-party/cairo/test/dash-caps-joins.c rename to io2d/src/3rd-party/cairo/test/dash-caps-joins.c diff --git a/3rd-party/cairo/test/dash-curve.c b/io2d/src/3rd-party/cairo/test/dash-curve.c similarity index 100% rename from 3rd-party/cairo/test/dash-curve.c rename to io2d/src/3rd-party/cairo/test/dash-curve.c diff --git a/3rd-party/cairo/test/dash-infinite-loop.c b/io2d/src/3rd-party/cairo/test/dash-infinite-loop.c similarity index 100% rename from 3rd-party/cairo/test/dash-infinite-loop.c rename to io2d/src/3rd-party/cairo/test/dash-infinite-loop.c diff --git a/3rd-party/cairo/test/dash-no-dash.c b/io2d/src/3rd-party/cairo/test/dash-no-dash.c similarity index 100% rename from 3rd-party/cairo/test/dash-no-dash.c rename to io2d/src/3rd-party/cairo/test/dash-no-dash.c diff --git a/3rd-party/cairo/test/dash-offset-negative.c b/io2d/src/3rd-party/cairo/test/dash-offset-negative.c similarity index 100% rename from 3rd-party/cairo/test/dash-offset-negative.c rename to io2d/src/3rd-party/cairo/test/dash-offset-negative.c diff --git a/3rd-party/cairo/test/dash-offset.c b/io2d/src/3rd-party/cairo/test/dash-offset.c similarity index 100% rename from 3rd-party/cairo/test/dash-offset.c rename to io2d/src/3rd-party/cairo/test/dash-offset.c diff --git a/3rd-party/cairo/test/dash-scale.c b/io2d/src/3rd-party/cairo/test/dash-scale.c similarity index 100% rename from 3rd-party/cairo/test/dash-scale.c rename to io2d/src/3rd-party/cairo/test/dash-scale.c diff --git a/3rd-party/cairo/test/dash-state.c b/io2d/src/3rd-party/cairo/test/dash-state.c similarity index 100% rename from 3rd-party/cairo/test/dash-state.c rename to io2d/src/3rd-party/cairo/test/dash-state.c diff --git a/3rd-party/cairo/test/dash-zero-length.c b/io2d/src/3rd-party/cairo/test/dash-zero-length.c similarity index 100% rename from 3rd-party/cairo/test/dash-zero-length.c rename to io2d/src/3rd-party/cairo/test/dash-zero-length.c diff --git a/3rd-party/cairo/test/degenerate-arc.c b/io2d/src/3rd-party/cairo/test/degenerate-arc.c similarity index 100% rename from 3rd-party/cairo/test/degenerate-arc.c rename to io2d/src/3rd-party/cairo/test/degenerate-arc.c diff --git a/3rd-party/cairo/test/degenerate-arcs.c b/io2d/src/3rd-party/cairo/test/degenerate-arcs.c similarity index 100% rename from 3rd-party/cairo/test/degenerate-arcs.c rename to io2d/src/3rd-party/cairo/test/degenerate-arcs.c diff --git a/3rd-party/cairo/test/degenerate-curve-to.c b/io2d/src/3rd-party/cairo/test/degenerate-curve-to.c similarity index 100% rename from 3rd-party/cairo/test/degenerate-curve-to.c rename to io2d/src/3rd-party/cairo/test/degenerate-curve-to.c diff --git a/3rd-party/cairo/test/degenerate-dash.c b/io2d/src/3rd-party/cairo/test/degenerate-dash.c similarity index 100% rename from 3rd-party/cairo/test/degenerate-dash.c rename to io2d/src/3rd-party/cairo/test/degenerate-dash.c diff --git a/3rd-party/cairo/test/degenerate-linear-gradient.c b/io2d/src/3rd-party/cairo/test/degenerate-linear-gradient.c similarity index 100% rename from 3rd-party/cairo/test/degenerate-linear-gradient.c rename to io2d/src/3rd-party/cairo/test/degenerate-linear-gradient.c diff --git a/3rd-party/cairo/test/degenerate-path.c b/io2d/src/3rd-party/cairo/test/degenerate-path.c similarity index 100% rename from 3rd-party/cairo/test/degenerate-path.c rename to io2d/src/3rd-party/cairo/test/degenerate-path.c diff --git a/3rd-party/cairo/test/degenerate-pen.c b/io2d/src/3rd-party/cairo/test/degenerate-pen.c similarity index 100% rename from 3rd-party/cairo/test/degenerate-pen.c rename to io2d/src/3rd-party/cairo/test/degenerate-pen.c diff --git a/3rd-party/cairo/test/degenerate-radial-gradient.c b/io2d/src/3rd-party/cairo/test/degenerate-radial-gradient.c similarity index 100% rename from 3rd-party/cairo/test/degenerate-radial-gradient.c rename to io2d/src/3rd-party/cairo/test/degenerate-radial-gradient.c diff --git a/3rd-party/cairo/test/degenerate-rel-curve-to.c b/io2d/src/3rd-party/cairo/test/degenerate-rel-curve-to.c similarity index 100% rename from 3rd-party/cairo/test/degenerate-rel-curve-to.c rename to io2d/src/3rd-party/cairo/test/degenerate-rel-curve-to.c diff --git a/3rd-party/cairo/test/degenerate-solid-dash.c b/io2d/src/3rd-party/cairo/test/degenerate-solid-dash.c similarity index 100% rename from 3rd-party/cairo/test/degenerate-solid-dash.c rename to io2d/src/3rd-party/cairo/test/degenerate-solid-dash.c diff --git a/3rd-party/cairo/test/device-offset-fractional.c b/io2d/src/3rd-party/cairo/test/device-offset-fractional.c similarity index 100% rename from 3rd-party/cairo/test/device-offset-fractional.c rename to io2d/src/3rd-party/cairo/test/device-offset-fractional.c diff --git a/3rd-party/cairo/test/device-offset-positive.c b/io2d/src/3rd-party/cairo/test/device-offset-positive.c similarity index 100% rename from 3rd-party/cairo/test/device-offset-positive.c rename to io2d/src/3rd-party/cairo/test/device-offset-positive.c diff --git a/3rd-party/cairo/test/device-offset-scale.c b/io2d/src/3rd-party/cairo/test/device-offset-scale.c similarity index 100% rename from 3rd-party/cairo/test/device-offset-scale.c rename to io2d/src/3rd-party/cairo/test/device-offset-scale.c diff --git a/3rd-party/cairo/test/device-offset.c b/io2d/src/3rd-party/cairo/test/device-offset.c similarity index 100% rename from 3rd-party/cairo/test/device-offset.c rename to io2d/src/3rd-party/cairo/test/device-offset.c diff --git a/3rd-party/cairo/test/drunkard-tails.c b/io2d/src/3rd-party/cairo/test/drunkard-tails.c similarity index 100% rename from 3rd-party/cairo/test/drunkard-tails.c rename to io2d/src/3rd-party/cairo/test/drunkard-tails.c diff --git a/3rd-party/cairo/test/error-setters.c b/io2d/src/3rd-party/cairo/test/error-setters.c similarity index 100% rename from 3rd-party/cairo/test/error-setters.c rename to io2d/src/3rd-party/cairo/test/error-setters.c diff --git a/3rd-party/cairo/test/extend-pad-border.c b/io2d/src/3rd-party/cairo/test/extend-pad-border.c similarity index 100% rename from 3rd-party/cairo/test/extend-pad-border.c rename to io2d/src/3rd-party/cairo/test/extend-pad-border.c diff --git a/3rd-party/cairo/test/extend-pad-similar.c b/io2d/src/3rd-party/cairo/test/extend-pad-similar.c similarity index 100% rename from 3rd-party/cairo/test/extend-pad-similar.c rename to io2d/src/3rd-party/cairo/test/extend-pad-similar.c diff --git a/3rd-party/cairo/test/extend-pad.c b/io2d/src/3rd-party/cairo/test/extend-pad.c similarity index 100% rename from 3rd-party/cairo/test/extend-pad.c rename to io2d/src/3rd-party/cairo/test/extend-pad.c diff --git a/3rd-party/cairo/test/extend-reflect-similar.c b/io2d/src/3rd-party/cairo/test/extend-reflect-similar.c similarity index 100% rename from 3rd-party/cairo/test/extend-reflect-similar.c rename to io2d/src/3rd-party/cairo/test/extend-reflect-similar.c diff --git a/3rd-party/cairo/test/extend-reflect.c b/io2d/src/3rd-party/cairo/test/extend-reflect.c similarity index 100% rename from 3rd-party/cairo/test/extend-reflect.c rename to io2d/src/3rd-party/cairo/test/extend-reflect.c diff --git a/3rd-party/cairo/test/extend-repeat-similar.c b/io2d/src/3rd-party/cairo/test/extend-repeat-similar.c similarity index 100% rename from 3rd-party/cairo/test/extend-repeat-similar.c rename to io2d/src/3rd-party/cairo/test/extend-repeat-similar.c diff --git a/3rd-party/cairo/test/extend-repeat.c b/io2d/src/3rd-party/cairo/test/extend-repeat.c similarity index 100% rename from 3rd-party/cairo/test/extend-repeat.c rename to io2d/src/3rd-party/cairo/test/extend-repeat.c diff --git a/3rd-party/cairo/test/extended-blend.c b/io2d/src/3rd-party/cairo/test/extended-blend.c similarity index 100% rename from 3rd-party/cairo/test/extended-blend.c rename to io2d/src/3rd-party/cairo/test/extended-blend.c diff --git a/3rd-party/cairo/test/fallback-resolution.c b/io2d/src/3rd-party/cairo/test/fallback-resolution.c similarity index 100% rename from 3rd-party/cairo/test/fallback-resolution.c rename to io2d/src/3rd-party/cairo/test/fallback-resolution.c diff --git a/3rd-party/cairo/test/fallback.c b/io2d/src/3rd-party/cairo/test/fallback.c similarity index 100% rename from 3rd-party/cairo/test/fallback.c rename to io2d/src/3rd-party/cairo/test/fallback.c diff --git a/3rd-party/cairo/test/fill-alpha-pattern.c b/io2d/src/3rd-party/cairo/test/fill-alpha-pattern.c similarity index 100% rename from 3rd-party/cairo/test/fill-alpha-pattern.c rename to io2d/src/3rd-party/cairo/test/fill-alpha-pattern.c diff --git a/3rd-party/cairo/test/fill-alpha.c b/io2d/src/3rd-party/cairo/test/fill-alpha.c similarity index 100% rename from 3rd-party/cairo/test/fill-alpha.c rename to io2d/src/3rd-party/cairo/test/fill-alpha.c diff --git a/3rd-party/cairo/test/fill-and-stroke-alpha-add.c b/io2d/src/3rd-party/cairo/test/fill-and-stroke-alpha-add.c similarity index 100% rename from 3rd-party/cairo/test/fill-and-stroke-alpha-add.c rename to io2d/src/3rd-party/cairo/test/fill-and-stroke-alpha-add.c diff --git a/3rd-party/cairo/test/fill-and-stroke-alpha.c b/io2d/src/3rd-party/cairo/test/fill-and-stroke-alpha.c similarity index 100% rename from 3rd-party/cairo/test/fill-and-stroke-alpha.c rename to io2d/src/3rd-party/cairo/test/fill-and-stroke-alpha.c diff --git a/3rd-party/cairo/test/fill-and-stroke.c b/io2d/src/3rd-party/cairo/test/fill-and-stroke.c similarity index 100% rename from 3rd-party/cairo/test/fill-and-stroke.c rename to io2d/src/3rd-party/cairo/test/fill-and-stroke.c diff --git a/3rd-party/cairo/test/fill-degenerate-sort-order.c b/io2d/src/3rd-party/cairo/test/fill-degenerate-sort-order.c similarity index 100% rename from 3rd-party/cairo/test/fill-degenerate-sort-order.c rename to io2d/src/3rd-party/cairo/test/fill-degenerate-sort-order.c diff --git a/3rd-party/cairo/test/fill-disjoint.c b/io2d/src/3rd-party/cairo/test/fill-disjoint.c similarity index 100% rename from 3rd-party/cairo/test/fill-disjoint.c rename to io2d/src/3rd-party/cairo/test/fill-disjoint.c diff --git a/3rd-party/cairo/test/fill-empty.c b/io2d/src/3rd-party/cairo/test/fill-empty.c similarity index 100% rename from 3rd-party/cairo/test/fill-empty.c rename to io2d/src/3rd-party/cairo/test/fill-empty.c diff --git a/3rd-party/cairo/test/fill-image.c b/io2d/src/3rd-party/cairo/test/fill-image.c similarity index 100% rename from 3rd-party/cairo/test/fill-image.c rename to io2d/src/3rd-party/cairo/test/fill-image.c diff --git a/3rd-party/cairo/test/fill-missed-stop.c b/io2d/src/3rd-party/cairo/test/fill-missed-stop.c similarity index 100% rename from 3rd-party/cairo/test/fill-missed-stop.c rename to io2d/src/3rd-party/cairo/test/fill-missed-stop.c diff --git a/3rd-party/cairo/test/fill-rule.c b/io2d/src/3rd-party/cairo/test/fill-rule.c similarity index 100% rename from 3rd-party/cairo/test/fill-rule.c rename to io2d/src/3rd-party/cairo/test/fill-rule.c diff --git a/3rd-party/cairo/test/filter-bilinear-extents.c b/io2d/src/3rd-party/cairo/test/filter-bilinear-extents.c similarity index 100% rename from 3rd-party/cairo/test/filter-bilinear-extents.c rename to io2d/src/3rd-party/cairo/test/filter-bilinear-extents.c diff --git a/3rd-party/cairo/test/filter-nearest-offset.c b/io2d/src/3rd-party/cairo/test/filter-nearest-offset.c similarity index 100% rename from 3rd-party/cairo/test/filter-nearest-offset.c rename to io2d/src/3rd-party/cairo/test/filter-nearest-offset.c diff --git a/3rd-party/cairo/test/filter-nearest-transformed.c b/io2d/src/3rd-party/cairo/test/filter-nearest-transformed.c similarity index 100% rename from 3rd-party/cairo/test/filter-nearest-transformed.c rename to io2d/src/3rd-party/cairo/test/filter-nearest-transformed.c diff --git a/3rd-party/cairo/test/finer-grained-fallbacks.c b/io2d/src/3rd-party/cairo/test/finer-grained-fallbacks.c similarity index 100% rename from 3rd-party/cairo/test/finer-grained-fallbacks.c rename to io2d/src/3rd-party/cairo/test/finer-grained-fallbacks.c diff --git a/3rd-party/cairo/test/font-face-get-type.c b/io2d/src/3rd-party/cairo/test/font-face-get-type.c similarity index 100% rename from 3rd-party/cairo/test/font-face-get-type.c rename to io2d/src/3rd-party/cairo/test/font-face-get-type.c diff --git a/3rd-party/cairo/test/font-matrix-translation.c b/io2d/src/3rd-party/cairo/test/font-matrix-translation.c similarity index 100% rename from 3rd-party/cairo/test/font-matrix-translation.c rename to io2d/src/3rd-party/cairo/test/font-matrix-translation.c diff --git a/3rd-party/cairo/test/font-options.c b/io2d/src/3rd-party/cairo/test/font-options.c similarity index 100% rename from 3rd-party/cairo/test/font-options.c rename to io2d/src/3rd-party/cairo/test/font-options.c diff --git a/3rd-party/cairo/test/ft-font-create-for-ft-face.c b/io2d/src/3rd-party/cairo/test/ft-font-create-for-ft-face.c similarity index 100% rename from 3rd-party/cairo/test/ft-font-create-for-ft-face.c rename to io2d/src/3rd-party/cairo/test/ft-font-create-for-ft-face.c diff --git a/3rd-party/cairo/test/ft-show-glyphs-positioning.c b/io2d/src/3rd-party/cairo/test/ft-show-glyphs-positioning.c similarity index 100% rename from 3rd-party/cairo/test/ft-show-glyphs-positioning.c rename to io2d/src/3rd-party/cairo/test/ft-show-glyphs-positioning.c diff --git a/3rd-party/cairo/test/ft-show-glyphs-table.c b/io2d/src/3rd-party/cairo/test/ft-show-glyphs-table.c similarity index 100% rename from 3rd-party/cairo/test/ft-show-glyphs-table.c rename to io2d/src/3rd-party/cairo/test/ft-show-glyphs-table.c diff --git a/3rd-party/cairo/test/ft-text-antialias-none.c b/io2d/src/3rd-party/cairo/test/ft-text-antialias-none.c similarity index 100% rename from 3rd-party/cairo/test/ft-text-antialias-none.c rename to io2d/src/3rd-party/cairo/test/ft-text-antialias-none.c diff --git a/3rd-party/cairo/test/ft-text-vertical-layout-type1.c b/io2d/src/3rd-party/cairo/test/ft-text-vertical-layout-type1.c similarity index 100% rename from 3rd-party/cairo/test/ft-text-vertical-layout-type1.c rename to io2d/src/3rd-party/cairo/test/ft-text-vertical-layout-type1.c diff --git a/3rd-party/cairo/test/ft-text-vertical-layout-type3.c b/io2d/src/3rd-party/cairo/test/ft-text-vertical-layout-type3.c similarity index 100% rename from 3rd-party/cairo/test/ft-text-vertical-layout-type3.c rename to io2d/src/3rd-party/cairo/test/ft-text-vertical-layout-type3.c diff --git a/3rd-party/cairo/test/generate_refs.sh b/io2d/src/3rd-party/cairo/test/generate_refs.sh similarity index 100% rename from 3rd-party/cairo/test/generate_refs.sh rename to io2d/src/3rd-party/cairo/test/generate_refs.sh diff --git a/3rd-party/cairo/test/get-and-set.c b/io2d/src/3rd-party/cairo/test/get-and-set.c similarity index 100% rename from 3rd-party/cairo/test/get-and-set.c rename to io2d/src/3rd-party/cairo/test/get-and-set.c diff --git a/3rd-party/cairo/test/get-clip.c b/io2d/src/3rd-party/cairo/test/get-clip.c similarity index 100% rename from 3rd-party/cairo/test/get-clip.c rename to io2d/src/3rd-party/cairo/test/get-clip.c diff --git a/3rd-party/cairo/test/get-group-target.c b/io2d/src/3rd-party/cairo/test/get-group-target.c similarity index 100% rename from 3rd-party/cairo/test/get-group-target.c rename to io2d/src/3rd-party/cairo/test/get-group-target.c diff --git a/3rd-party/cairo/test/get-path-extents.c b/io2d/src/3rd-party/cairo/test/get-path-extents.c similarity index 100% rename from 3rd-party/cairo/test/get-path-extents.c rename to io2d/src/3rd-party/cairo/test/get-path-extents.c diff --git a/3rd-party/cairo/test/get-xrender-format.c b/io2d/src/3rd-party/cairo/test/get-xrender-format.c similarity index 100% rename from 3rd-party/cairo/test/get-xrender-format.c rename to io2d/src/3rd-party/cairo/test/get-xrender-format.c diff --git a/3rd-party/cairo/test/gl-device-release.c b/io2d/src/3rd-party/cairo/test/gl-device-release.c similarity index 100% rename from 3rd-party/cairo/test/gl-device-release.c rename to io2d/src/3rd-party/cairo/test/gl-device-release.c diff --git a/3rd-party/cairo/test/gl-oversized-surface.c b/io2d/src/3rd-party/cairo/test/gl-oversized-surface.c similarity index 100% rename from 3rd-party/cairo/test/gl-oversized-surface.c rename to io2d/src/3rd-party/cairo/test/gl-oversized-surface.c diff --git a/3rd-party/cairo/test/gl-surface-source.c b/io2d/src/3rd-party/cairo/test/gl-surface-source.c similarity index 100% rename from 3rd-party/cairo/test/gl-surface-source.c rename to io2d/src/3rd-party/cairo/test/gl-surface-source.c diff --git a/3rd-party/cairo/test/glyph-cache-pressure.c b/io2d/src/3rd-party/cairo/test/glyph-cache-pressure.c similarity index 100% rename from 3rd-party/cairo/test/glyph-cache-pressure.c rename to io2d/src/3rd-party/cairo/test/glyph-cache-pressure.c diff --git a/3rd-party/cairo/test/gradient-alpha.c b/io2d/src/3rd-party/cairo/test/gradient-alpha.c similarity index 100% rename from 3rd-party/cairo/test/gradient-alpha.c rename to io2d/src/3rd-party/cairo/test/gradient-alpha.c diff --git a/3rd-party/cairo/test/gradient-constant-alpha.c b/io2d/src/3rd-party/cairo/test/gradient-constant-alpha.c similarity index 100% rename from 3rd-party/cairo/test/gradient-constant-alpha.c rename to io2d/src/3rd-party/cairo/test/gradient-constant-alpha.c diff --git a/3rd-party/cairo/test/gradient-zero-stops-mask.c b/io2d/src/3rd-party/cairo/test/gradient-zero-stops-mask.c similarity index 100% rename from 3rd-party/cairo/test/gradient-zero-stops-mask.c rename to io2d/src/3rd-party/cairo/test/gradient-zero-stops-mask.c diff --git a/3rd-party/cairo/test/gradient-zero-stops.c b/io2d/src/3rd-party/cairo/test/gradient-zero-stops.c similarity index 100% rename from 3rd-party/cairo/test/gradient-zero-stops.c rename to io2d/src/3rd-party/cairo/test/gradient-zero-stops.c diff --git a/3rd-party/cairo/test/group-clip.c b/io2d/src/3rd-party/cairo/test/group-clip.c similarity index 100% rename from 3rd-party/cairo/test/group-clip.c rename to io2d/src/3rd-party/cairo/test/group-clip.c diff --git a/3rd-party/cairo/test/group-paint.c b/io2d/src/3rd-party/cairo/test/group-paint.c similarity index 100% rename from 3rd-party/cairo/test/group-paint.c rename to io2d/src/3rd-party/cairo/test/group-paint.c diff --git a/3rd-party/cairo/test/group-state.c b/io2d/src/3rd-party/cairo/test/group-state.c similarity index 100% rename from 3rd-party/cairo/test/group-state.c rename to io2d/src/3rd-party/cairo/test/group-state.c diff --git a/3rd-party/cairo/test/group-unaligned.c b/io2d/src/3rd-party/cairo/test/group-unaligned.c similarity index 100% rename from 3rd-party/cairo/test/group-unaligned.c rename to io2d/src/3rd-party/cairo/test/group-unaligned.c diff --git a/3rd-party/cairo/test/half-coverage.c b/io2d/src/3rd-party/cairo/test/half-coverage.c similarity index 100% rename from 3rd-party/cairo/test/half-coverage.c rename to io2d/src/3rd-party/cairo/test/half-coverage.c diff --git a/3rd-party/cairo/test/halo.c b/io2d/src/3rd-party/cairo/test/halo.c similarity index 100% rename from 3rd-party/cairo/test/halo.c rename to io2d/src/3rd-party/cairo/test/halo.c diff --git a/3rd-party/cairo/test/hatchings.c b/io2d/src/3rd-party/cairo/test/hatchings.c similarity index 100% rename from 3rd-party/cairo/test/hatchings.c rename to io2d/src/3rd-party/cairo/test/hatchings.c diff --git a/3rd-party/cairo/test/horizontal-clip.c b/io2d/src/3rd-party/cairo/test/horizontal-clip.c similarity index 100% rename from 3rd-party/cairo/test/horizontal-clip.c rename to io2d/src/3rd-party/cairo/test/horizontal-clip.c diff --git a/3rd-party/cairo/test/huge-linear.c b/io2d/src/3rd-party/cairo/test/huge-linear.c similarity index 100% rename from 3rd-party/cairo/test/huge-linear.c rename to io2d/src/3rd-party/cairo/test/huge-linear.c diff --git a/3rd-party/cairo/test/huge-radial.c b/io2d/src/3rd-party/cairo/test/huge-radial.c similarity index 100% rename from 3rd-party/cairo/test/huge-radial.c rename to io2d/src/3rd-party/cairo/test/huge-radial.c diff --git a/3rd-party/cairo/test/image-bug-710072.c b/io2d/src/3rd-party/cairo/test/image-bug-710072.c similarity index 100% rename from 3rd-party/cairo/test/image-bug-710072.c rename to io2d/src/3rd-party/cairo/test/image-bug-710072.c diff --git a/3rd-party/cairo/test/image-surface-source.c b/io2d/src/3rd-party/cairo/test/image-surface-source.c similarity index 100% rename from 3rd-party/cairo/test/image-surface-source.c rename to io2d/src/3rd-party/cairo/test/image-surface-source.c diff --git a/3rd-party/cairo/test/imagediff.c b/io2d/src/3rd-party/cairo/test/imagediff.c similarity index 100% rename from 3rd-party/cairo/test/imagediff.c rename to io2d/src/3rd-party/cairo/test/imagediff.c diff --git a/3rd-party/cairo/test/implicit-close.c b/io2d/src/3rd-party/cairo/test/implicit-close.c similarity index 100% rename from 3rd-party/cairo/test/implicit-close.c rename to io2d/src/3rd-party/cairo/test/implicit-close.c diff --git a/3rd-party/cairo/test/in-fill-empty-trapezoid.c b/io2d/src/3rd-party/cairo/test/in-fill-empty-trapezoid.c similarity index 100% rename from 3rd-party/cairo/test/in-fill-empty-trapezoid.c rename to io2d/src/3rd-party/cairo/test/in-fill-empty-trapezoid.c diff --git a/3rd-party/cairo/test/in-fill-trapezoid.c b/io2d/src/3rd-party/cairo/test/in-fill-trapezoid.c similarity index 100% rename from 3rd-party/cairo/test/in-fill-trapezoid.c rename to io2d/src/3rd-party/cairo/test/in-fill-trapezoid.c diff --git a/3rd-party/cairo/test/index.html b/io2d/src/3rd-party/cairo/test/index.html similarity index 100% rename from 3rd-party/cairo/test/index.html rename to io2d/src/3rd-party/cairo/test/index.html diff --git a/3rd-party/cairo/test/infinite-join.c b/io2d/src/3rd-party/cairo/test/infinite-join.c similarity index 100% rename from 3rd-party/cairo/test/infinite-join.c rename to io2d/src/3rd-party/cairo/test/infinite-join.c diff --git a/3rd-party/cairo/test/invalid-matrix.c b/io2d/src/3rd-party/cairo/test/invalid-matrix.c similarity index 100% rename from 3rd-party/cairo/test/invalid-matrix.c rename to io2d/src/3rd-party/cairo/test/invalid-matrix.c diff --git a/3rd-party/cairo/test/inverse-text.c b/io2d/src/3rd-party/cairo/test/inverse-text.c similarity index 100% rename from 3rd-party/cairo/test/inverse-text.c rename to io2d/src/3rd-party/cairo/test/inverse-text.c diff --git a/3rd-party/cairo/test/inverted-clip.c b/io2d/src/3rd-party/cairo/test/inverted-clip.c similarity index 100% rename from 3rd-party/cairo/test/inverted-clip.c rename to io2d/src/3rd-party/cairo/test/inverted-clip.c diff --git a/3rd-party/cairo/test/joins-loop.c b/io2d/src/3rd-party/cairo/test/joins-loop.c similarity index 100% rename from 3rd-party/cairo/test/joins-loop.c rename to io2d/src/3rd-party/cairo/test/joins-loop.c diff --git a/3rd-party/cairo/test/joins-retrace.c b/io2d/src/3rd-party/cairo/test/joins-retrace.c similarity index 100% rename from 3rd-party/cairo/test/joins-retrace.c rename to io2d/src/3rd-party/cairo/test/joins-retrace.c diff --git a/3rd-party/cairo/test/joins-star.c b/io2d/src/3rd-party/cairo/test/joins-star.c similarity index 100% rename from 3rd-party/cairo/test/joins-star.c rename to io2d/src/3rd-party/cairo/test/joins-star.c diff --git a/3rd-party/cairo/test/joins.c b/io2d/src/3rd-party/cairo/test/joins.c similarity index 100% rename from 3rd-party/cairo/test/joins.c rename to io2d/src/3rd-party/cairo/test/joins.c diff --git a/3rd-party/cairo/test/jp2.jp2 b/io2d/src/3rd-party/cairo/test/jp2.jp2 similarity index 100% rename from 3rd-party/cairo/test/jp2.jp2 rename to io2d/src/3rd-party/cairo/test/jp2.jp2 diff --git a/3rd-party/cairo/test/jpeg.jpg b/io2d/src/3rd-party/cairo/test/jpeg.jpg similarity index 100% rename from 3rd-party/cairo/test/jpeg.jpg rename to io2d/src/3rd-party/cairo/test/jpeg.jpg diff --git a/3rd-party/cairo/test/large-clip.c b/io2d/src/3rd-party/cairo/test/large-clip.c similarity index 100% rename from 3rd-party/cairo/test/large-clip.c rename to io2d/src/3rd-party/cairo/test/large-clip.c diff --git a/3rd-party/cairo/test/large-font.c b/io2d/src/3rd-party/cairo/test/large-font.c similarity index 100% rename from 3rd-party/cairo/test/large-font.c rename to io2d/src/3rd-party/cairo/test/large-font.c diff --git a/3rd-party/cairo/test/large-source-roi.c b/io2d/src/3rd-party/cairo/test/large-source-roi.c similarity index 100% rename from 3rd-party/cairo/test/large-source-roi.c rename to io2d/src/3rd-party/cairo/test/large-source-roi.c diff --git a/3rd-party/cairo/test/large-source.c b/io2d/src/3rd-party/cairo/test/large-source.c similarity index 100% rename from 3rd-party/cairo/test/large-source.c rename to io2d/src/3rd-party/cairo/test/large-source.c diff --git a/3rd-party/cairo/test/large-twin-antialias-mixed.c b/io2d/src/3rd-party/cairo/test/large-twin-antialias-mixed.c similarity index 100% rename from 3rd-party/cairo/test/large-twin-antialias-mixed.c rename to io2d/src/3rd-party/cairo/test/large-twin-antialias-mixed.c diff --git a/3rd-party/cairo/test/leaky-dash.c b/io2d/src/3rd-party/cairo/test/leaky-dash.c similarity index 100% rename from 3rd-party/cairo/test/leaky-dash.c rename to io2d/src/3rd-party/cairo/test/leaky-dash.c diff --git a/3rd-party/cairo/test/leaky-dashed-rectangle.c b/io2d/src/3rd-party/cairo/test/leaky-dashed-rectangle.c similarity index 100% rename from 3rd-party/cairo/test/leaky-dashed-rectangle.c rename to io2d/src/3rd-party/cairo/test/leaky-dashed-rectangle.c diff --git a/3rd-party/cairo/test/leaky-dashed-stroke.c b/io2d/src/3rd-party/cairo/test/leaky-dashed-stroke.c similarity index 100% rename from 3rd-party/cairo/test/leaky-dashed-stroke.c rename to io2d/src/3rd-party/cairo/test/leaky-dashed-stroke.c diff --git a/3rd-party/cairo/test/leaky-polygon.c b/io2d/src/3rd-party/cairo/test/leaky-polygon.c similarity index 100% rename from 3rd-party/cairo/test/leaky-polygon.c rename to io2d/src/3rd-party/cairo/test/leaky-polygon.c diff --git a/3rd-party/cairo/test/line-width-large-overlap.c b/io2d/src/3rd-party/cairo/test/line-width-large-overlap.c similarity index 100% rename from 3rd-party/cairo/test/line-width-large-overlap.c rename to io2d/src/3rd-party/cairo/test/line-width-large-overlap.c diff --git a/3rd-party/cairo/test/line-width-overlap.c b/io2d/src/3rd-party/cairo/test/line-width-overlap.c similarity index 100% rename from 3rd-party/cairo/test/line-width-overlap.c rename to io2d/src/3rd-party/cairo/test/line-width-overlap.c diff --git a/3rd-party/cairo/test/line-width-scale.c b/io2d/src/3rd-party/cairo/test/line-width-scale.c similarity index 100% rename from 3rd-party/cairo/test/line-width-scale.c rename to io2d/src/3rd-party/cairo/test/line-width-scale.c diff --git a/3rd-party/cairo/test/line-width-tolerance.c b/io2d/src/3rd-party/cairo/test/line-width-tolerance.c similarity index 100% rename from 3rd-party/cairo/test/line-width-tolerance.c rename to io2d/src/3rd-party/cairo/test/line-width-tolerance.c diff --git a/3rd-party/cairo/test/line-width-zero.c b/io2d/src/3rd-party/cairo/test/line-width-zero.c similarity index 100% rename from 3rd-party/cairo/test/line-width-zero.c rename to io2d/src/3rd-party/cairo/test/line-width-zero.c diff --git a/3rd-party/cairo/test/line-width.c b/io2d/src/3rd-party/cairo/test/line-width.c similarity index 100% rename from 3rd-party/cairo/test/line-width.c rename to io2d/src/3rd-party/cairo/test/line-width.c diff --git a/3rd-party/cairo/test/linear-gradient-extend.c b/io2d/src/3rd-party/cairo/test/linear-gradient-extend.c similarity index 100% rename from 3rd-party/cairo/test/linear-gradient-extend.c rename to io2d/src/3rd-party/cairo/test/linear-gradient-extend.c diff --git a/3rd-party/cairo/test/linear-gradient-large.c b/io2d/src/3rd-party/cairo/test/linear-gradient-large.c similarity index 100% rename from 3rd-party/cairo/test/linear-gradient-large.c rename to io2d/src/3rd-party/cairo/test/linear-gradient-large.c diff --git a/3rd-party/cairo/test/linear-gradient-one-stop.c b/io2d/src/3rd-party/cairo/test/linear-gradient-one-stop.c similarity index 100% rename from 3rd-party/cairo/test/linear-gradient-one-stop.c rename to io2d/src/3rd-party/cairo/test/linear-gradient-one-stop.c diff --git a/3rd-party/cairo/test/linear-gradient-reflect.c b/io2d/src/3rd-party/cairo/test/linear-gradient-reflect.c similarity index 100% rename from 3rd-party/cairo/test/linear-gradient-reflect.c rename to io2d/src/3rd-party/cairo/test/linear-gradient-reflect.c diff --git a/3rd-party/cairo/test/linear-gradient-subset.c b/io2d/src/3rd-party/cairo/test/linear-gradient-subset.c similarity index 100% rename from 3rd-party/cairo/test/linear-gradient-subset.c rename to io2d/src/3rd-party/cairo/test/linear-gradient-subset.c diff --git a/3rd-party/cairo/test/linear-gradient.c b/io2d/src/3rd-party/cairo/test/linear-gradient.c similarity index 100% rename from 3rd-party/cairo/test/linear-gradient.c rename to io2d/src/3rd-party/cairo/test/linear-gradient.c diff --git a/3rd-party/cairo/test/linear-step-function.c b/io2d/src/3rd-party/cairo/test/linear-step-function.c similarity index 100% rename from 3rd-party/cairo/test/linear-step-function.c rename to io2d/src/3rd-party/cairo/test/linear-step-function.c diff --git a/3rd-party/cairo/test/linear-uniform.c b/io2d/src/3rd-party/cairo/test/linear-uniform.c similarity index 100% rename from 3rd-party/cairo/test/linear-uniform.c rename to io2d/src/3rd-party/cairo/test/linear-uniform.c diff --git a/3rd-party/cairo/test/long-dashed-lines.c b/io2d/src/3rd-party/cairo/test/long-dashed-lines.c similarity index 100% rename from 3rd-party/cairo/test/long-dashed-lines.c rename to io2d/src/3rd-party/cairo/test/long-dashed-lines.c diff --git a/3rd-party/cairo/test/long-lines.c b/io2d/src/3rd-party/cairo/test/long-lines.c similarity index 100% rename from 3rd-party/cairo/test/long-lines.c rename to io2d/src/3rd-party/cairo/test/long-lines.c diff --git a/3rd-party/cairo/test/make-cairo-test-constructors.sh b/io2d/src/3rd-party/cairo/test/make-cairo-test-constructors.sh similarity index 100% rename from 3rd-party/cairo/test/make-cairo-test-constructors.sh rename to io2d/src/3rd-party/cairo/test/make-cairo-test-constructors.sh diff --git a/3rd-party/cairo/test/map-to-image.c b/io2d/src/3rd-party/cairo/test/map-to-image.c similarity index 100% rename from 3rd-party/cairo/test/map-to-image.c rename to io2d/src/3rd-party/cairo/test/map-to-image.c diff --git a/3rd-party/cairo/test/mask-alpha.c b/io2d/src/3rd-party/cairo/test/mask-alpha.c similarity index 100% rename from 3rd-party/cairo/test/mask-alpha.c rename to io2d/src/3rd-party/cairo/test/mask-alpha.c diff --git a/3rd-party/cairo/test/mask-ctm.c b/io2d/src/3rd-party/cairo/test/mask-ctm.c similarity index 100% rename from 3rd-party/cairo/test/mask-ctm.c rename to io2d/src/3rd-party/cairo/test/mask-ctm.c diff --git a/3rd-party/cairo/test/mask-glyphs.c b/io2d/src/3rd-party/cairo/test/mask-glyphs.c similarity index 100% rename from 3rd-party/cairo/test/mask-glyphs.c rename to io2d/src/3rd-party/cairo/test/mask-glyphs.c diff --git a/3rd-party/cairo/test/mask-surface-ctm.c b/io2d/src/3rd-party/cairo/test/mask-surface-ctm.c similarity index 100% rename from 3rd-party/cairo/test/mask-surface-ctm.c rename to io2d/src/3rd-party/cairo/test/mask-surface-ctm.c diff --git a/3rd-party/cairo/test/mask-transformed-image.c b/io2d/src/3rd-party/cairo/test/mask-transformed-image.c similarity index 100% rename from 3rd-party/cairo/test/mask-transformed-image.c rename to io2d/src/3rd-party/cairo/test/mask-transformed-image.c diff --git a/3rd-party/cairo/test/mask-transformed-similar.c b/io2d/src/3rd-party/cairo/test/mask-transformed-similar.c similarity index 100% rename from 3rd-party/cairo/test/mask-transformed-similar.c rename to io2d/src/3rd-party/cairo/test/mask-transformed-similar.c diff --git a/3rd-party/cairo/test/mask.c b/io2d/src/3rd-party/cairo/test/mask.c similarity index 100% rename from 3rd-party/cairo/test/mask.c rename to io2d/src/3rd-party/cairo/test/mask.c diff --git a/3rd-party/cairo/test/mesh-pattern-accuracy.c b/io2d/src/3rd-party/cairo/test/mesh-pattern-accuracy.c similarity index 100% rename from 3rd-party/cairo/test/mesh-pattern-accuracy.c rename to io2d/src/3rd-party/cairo/test/mesh-pattern-accuracy.c diff --git a/3rd-party/cairo/test/mesh-pattern-conical.c b/io2d/src/3rd-party/cairo/test/mesh-pattern-conical.c similarity index 100% rename from 3rd-party/cairo/test/mesh-pattern-conical.c rename to io2d/src/3rd-party/cairo/test/mesh-pattern-conical.c diff --git a/3rd-party/cairo/test/mesh-pattern-control-points.c b/io2d/src/3rd-party/cairo/test/mesh-pattern-control-points.c similarity index 100% rename from 3rd-party/cairo/test/mesh-pattern-control-points.c rename to io2d/src/3rd-party/cairo/test/mesh-pattern-control-points.c diff --git a/3rd-party/cairo/test/mesh-pattern-fold.c b/io2d/src/3rd-party/cairo/test/mesh-pattern-fold.c similarity index 100% rename from 3rd-party/cairo/test/mesh-pattern-fold.c rename to io2d/src/3rd-party/cairo/test/mesh-pattern-fold.c diff --git a/3rd-party/cairo/test/mesh-pattern-overlap.c b/io2d/src/3rd-party/cairo/test/mesh-pattern-overlap.c similarity index 100% rename from 3rd-party/cairo/test/mesh-pattern-overlap.c rename to io2d/src/3rd-party/cairo/test/mesh-pattern-overlap.c diff --git a/3rd-party/cairo/test/mesh-pattern-transformed.c b/io2d/src/3rd-party/cairo/test/mesh-pattern-transformed.c similarity index 100% rename from 3rd-party/cairo/test/mesh-pattern-transformed.c rename to io2d/src/3rd-party/cairo/test/mesh-pattern-transformed.c diff --git a/3rd-party/cairo/test/mesh-pattern.c b/io2d/src/3rd-party/cairo/test/mesh-pattern.c similarity index 100% rename from 3rd-party/cairo/test/mesh-pattern.c rename to io2d/src/3rd-party/cairo/test/mesh-pattern.c diff --git a/3rd-party/cairo/test/mime-data.c b/io2d/src/3rd-party/cairo/test/mime-data.c similarity index 100% rename from 3rd-party/cairo/test/mime-data.c rename to io2d/src/3rd-party/cairo/test/mime-data.c diff --git a/3rd-party/cairo/test/mime-surface-api.c b/io2d/src/3rd-party/cairo/test/mime-surface-api.c similarity index 100% rename from 3rd-party/cairo/test/mime-surface-api.c rename to io2d/src/3rd-party/cairo/test/mime-surface-api.c diff --git a/3rd-party/cairo/test/miter-precision.c b/io2d/src/3rd-party/cairo/test/miter-precision.c similarity index 100% rename from 3rd-party/cairo/test/miter-precision.c rename to io2d/src/3rd-party/cairo/test/miter-precision.c diff --git a/3rd-party/cairo/test/move-to-show-surface.c b/io2d/src/3rd-party/cairo/test/move-to-show-surface.c similarity index 100% rename from 3rd-party/cairo/test/move-to-show-surface.c rename to io2d/src/3rd-party/cairo/test/move-to-show-surface.c diff --git a/3rd-party/cairo/test/multi-page.c b/io2d/src/3rd-party/cairo/test/multi-page.c similarity index 100% rename from 3rd-party/cairo/test/multi-page.c rename to io2d/src/3rd-party/cairo/test/multi-page.c diff --git a/3rd-party/cairo/test/negative-stride-image.c b/io2d/src/3rd-party/cairo/test/negative-stride-image.c similarity index 100% rename from 3rd-party/cairo/test/negative-stride-image.c rename to io2d/src/3rd-party/cairo/test/negative-stride-image.c diff --git a/3rd-party/cairo/test/new-sub-path.c b/io2d/src/3rd-party/cairo/test/new-sub-path.c similarity index 100% rename from 3rd-party/cairo/test/new-sub-path.c rename to io2d/src/3rd-party/cairo/test/new-sub-path.c diff --git a/3rd-party/cairo/test/nil-surface.c b/io2d/src/3rd-party/cairo/test/nil-surface.c similarity index 100% rename from 3rd-party/cairo/test/nil-surface.c rename to io2d/src/3rd-party/cairo/test/nil-surface.c diff --git a/3rd-party/cairo/test/operator-alpha-alpha.c b/io2d/src/3rd-party/cairo/test/operator-alpha-alpha.c similarity index 100% rename from 3rd-party/cairo/test/operator-alpha-alpha.c rename to io2d/src/3rd-party/cairo/test/operator-alpha-alpha.c diff --git a/3rd-party/cairo/test/operator-alpha.c b/io2d/src/3rd-party/cairo/test/operator-alpha.c similarity index 100% rename from 3rd-party/cairo/test/operator-alpha.c rename to io2d/src/3rd-party/cairo/test/operator-alpha.c diff --git a/3rd-party/cairo/test/operator-clear.c b/io2d/src/3rd-party/cairo/test/operator-clear.c similarity index 100% rename from 3rd-party/cairo/test/operator-clear.c rename to io2d/src/3rd-party/cairo/test/operator-clear.c diff --git a/3rd-party/cairo/test/operator-source.c b/io2d/src/3rd-party/cairo/test/operator-source.c similarity index 100% rename from 3rd-party/cairo/test/operator-source.c rename to io2d/src/3rd-party/cairo/test/operator-source.c diff --git a/3rd-party/cairo/test/operator.c b/io2d/src/3rd-party/cairo/test/operator.c similarity index 100% rename from 3rd-party/cairo/test/operator.c rename to io2d/src/3rd-party/cairo/test/operator.c diff --git a/3rd-party/cairo/test/outline-tolerance.c b/io2d/src/3rd-party/cairo/test/outline-tolerance.c similarity index 100% rename from 3rd-party/cairo/test/outline-tolerance.c rename to io2d/src/3rd-party/cairo/test/outline-tolerance.c diff --git a/3rd-party/cairo/test/over-above-source.c b/io2d/src/3rd-party/cairo/test/over-above-source.c similarity index 100% rename from 3rd-party/cairo/test/over-above-source.c rename to io2d/src/3rd-party/cairo/test/over-above-source.c diff --git a/3rd-party/cairo/test/over-around-source.c b/io2d/src/3rd-party/cairo/test/over-around-source.c similarity index 100% rename from 3rd-party/cairo/test/over-around-source.c rename to io2d/src/3rd-party/cairo/test/over-around-source.c diff --git a/3rd-party/cairo/test/over-below-source.c b/io2d/src/3rd-party/cairo/test/over-below-source.c similarity index 100% rename from 3rd-party/cairo/test/over-below-source.c rename to io2d/src/3rd-party/cairo/test/over-below-source.c diff --git a/3rd-party/cairo/test/over-between-source.c b/io2d/src/3rd-party/cairo/test/over-between-source.c similarity index 100% rename from 3rd-party/cairo/test/over-between-source.c rename to io2d/src/3rd-party/cairo/test/over-between-source.c diff --git a/3rd-party/cairo/test/overlapping-boxes.c b/io2d/src/3rd-party/cairo/test/overlapping-boxes.c similarity index 100% rename from 3rd-party/cairo/test/overlapping-boxes.c rename to io2d/src/3rd-party/cairo/test/overlapping-boxes.c diff --git a/3rd-party/cairo/test/overlapping-dash-caps.c b/io2d/src/3rd-party/cairo/test/overlapping-dash-caps.c similarity index 100% rename from 3rd-party/cairo/test/overlapping-dash-caps.c rename to io2d/src/3rd-party/cairo/test/overlapping-dash-caps.c diff --git a/3rd-party/cairo/test/overlapping-glyphs.c b/io2d/src/3rd-party/cairo/test/overlapping-glyphs.c similarity index 100% rename from 3rd-party/cairo/test/overlapping-glyphs.c rename to io2d/src/3rd-party/cairo/test/overlapping-glyphs.c diff --git a/3rd-party/cairo/test/paint-clip-fill.c b/io2d/src/3rd-party/cairo/test/paint-clip-fill.c similarity index 100% rename from 3rd-party/cairo/test/paint-clip-fill.c rename to io2d/src/3rd-party/cairo/test/paint-clip-fill.c diff --git a/3rd-party/cairo/test/paint-repeat.c b/io2d/src/3rd-party/cairo/test/paint-repeat.c similarity index 100% rename from 3rd-party/cairo/test/paint-repeat.c rename to io2d/src/3rd-party/cairo/test/paint-repeat.c diff --git a/3rd-party/cairo/test/paint-source-alpha.c b/io2d/src/3rd-party/cairo/test/paint-source-alpha.c similarity index 100% rename from 3rd-party/cairo/test/paint-source-alpha.c rename to io2d/src/3rd-party/cairo/test/paint-source-alpha.c diff --git a/3rd-party/cairo/test/paint-with-alpha.c b/io2d/src/3rd-party/cairo/test/paint-with-alpha.c similarity index 100% rename from 3rd-party/cairo/test/paint-with-alpha.c rename to io2d/src/3rd-party/cairo/test/paint-with-alpha.c diff --git a/3rd-party/cairo/test/paint.c b/io2d/src/3rd-party/cairo/test/paint.c similarity index 100% rename from 3rd-party/cairo/test/paint.c rename to io2d/src/3rd-party/cairo/test/paint.c diff --git a/3rd-party/cairo/test/partial-clip-text.c b/io2d/src/3rd-party/cairo/test/partial-clip-text.c similarity index 100% rename from 3rd-party/cairo/test/partial-clip-text.c rename to io2d/src/3rd-party/cairo/test/partial-clip-text.c diff --git a/3rd-party/cairo/test/partial-coverage.c b/io2d/src/3rd-party/cairo/test/partial-coverage.c similarity index 100% rename from 3rd-party/cairo/test/partial-coverage.c rename to io2d/src/3rd-party/cairo/test/partial-coverage.c diff --git a/3rd-party/cairo/test/pass-through.c b/io2d/src/3rd-party/cairo/test/pass-through.c similarity index 100% rename from 3rd-party/cairo/test/pass-through.c rename to io2d/src/3rd-party/cairo/test/pass-through.c diff --git a/3rd-party/cairo/test/path-append.c b/io2d/src/3rd-party/cairo/test/path-append.c similarity index 100% rename from 3rd-party/cairo/test/path-append.c rename to io2d/src/3rd-party/cairo/test/path-append.c diff --git a/3rd-party/cairo/test/path-precision.c b/io2d/src/3rd-party/cairo/test/path-precision.c similarity index 100% rename from 3rd-party/cairo/test/path-precision.c rename to io2d/src/3rd-party/cairo/test/path-precision.c diff --git a/3rd-party/cairo/test/path-stroke-twice.c b/io2d/src/3rd-party/cairo/test/path-stroke-twice.c similarity index 100% rename from 3rd-party/cairo/test/path-stroke-twice.c rename to io2d/src/3rd-party/cairo/test/path-stroke-twice.c diff --git a/3rd-party/cairo/test/pattern-get-type.c b/io2d/src/3rd-party/cairo/test/pattern-get-type.c similarity index 100% rename from 3rd-party/cairo/test/pattern-get-type.c rename to io2d/src/3rd-party/cairo/test/pattern-get-type.c diff --git a/3rd-party/cairo/test/pattern-getters.c b/io2d/src/3rd-party/cairo/test/pattern-getters.c similarity index 100% rename from 3rd-party/cairo/test/pattern-getters.c rename to io2d/src/3rd-party/cairo/test/pattern-getters.c diff --git a/3rd-party/cairo/test/pdf-features.c b/io2d/src/3rd-party/cairo/test/pdf-features.c similarity index 100% rename from 3rd-party/cairo/test/pdf-features.c rename to io2d/src/3rd-party/cairo/test/pdf-features.c diff --git a/3rd-party/cairo/test/pdf-isolated-group.c b/io2d/src/3rd-party/cairo/test/pdf-isolated-group.c similarity index 100% rename from 3rd-party/cairo/test/pdf-isolated-group.c rename to io2d/src/3rd-party/cairo/test/pdf-isolated-group.c diff --git a/3rd-party/cairo/test/pdf-mime-data.c b/io2d/src/3rd-party/cairo/test/pdf-mime-data.c similarity index 100% rename from 3rd-party/cairo/test/pdf-mime-data.c rename to io2d/src/3rd-party/cairo/test/pdf-mime-data.c diff --git a/3rd-party/cairo/test/pdf-surface-source.c b/io2d/src/3rd-party/cairo/test/pdf-surface-source.c similarity index 100% rename from 3rd-party/cairo/test/pdf-surface-source.c rename to io2d/src/3rd-party/cairo/test/pdf-surface-source.c diff --git a/3rd-party/cairo/test/pdf2png.c b/io2d/src/3rd-party/cairo/test/pdf2png.c similarity index 100% rename from 3rd-party/cairo/test/pdf2png.c rename to io2d/src/3rd-party/cairo/test/pdf2png.c diff --git a/3rd-party/cairo/test/pdiff/.gitignore b/io2d/src/3rd-party/cairo/test/pdiff/.gitignore similarity index 100% rename from 3rd-party/cairo/test/pdiff/.gitignore rename to io2d/src/3rd-party/cairo/test/pdiff/.gitignore diff --git a/3rd-party/cairo/test/pdiff/CMakeLists.txt b/io2d/src/3rd-party/cairo/test/pdiff/CMakeLists.txt similarity index 100% rename from 3rd-party/cairo/test/pdiff/CMakeLists.txt rename to io2d/src/3rd-party/cairo/test/pdiff/CMakeLists.txt diff --git a/3rd-party/cairo/test/pdiff/Makefile.am b/io2d/src/3rd-party/cairo/test/pdiff/Makefile.am similarity index 100% rename from 3rd-party/cairo/test/pdiff/Makefile.am rename to io2d/src/3rd-party/cairo/test/pdiff/Makefile.am diff --git a/3rd-party/cairo/test/pdiff/Makefile.win32 b/io2d/src/3rd-party/cairo/test/pdiff/Makefile.win32 similarity index 100% rename from 3rd-party/cairo/test/pdiff/Makefile.win32 rename to io2d/src/3rd-party/cairo/test/pdiff/Makefile.win32 diff --git a/3rd-party/cairo/test/pdiff/README.txt b/io2d/src/3rd-party/cairo/test/pdiff/README.txt similarity index 100% rename from 3rd-party/cairo/test/pdiff/README.txt rename to io2d/src/3rd-party/cairo/test/pdiff/README.txt diff --git a/3rd-party/cairo/test/pdiff/args.c b/io2d/src/3rd-party/cairo/test/pdiff/args.c similarity index 100% rename from 3rd-party/cairo/test/pdiff/args.c rename to io2d/src/3rd-party/cairo/test/pdiff/args.c diff --git a/3rd-party/cairo/test/pdiff/args.h b/io2d/src/3rd-party/cairo/test/pdiff/args.h similarity index 100% rename from 3rd-party/cairo/test/pdiff/args.h rename to io2d/src/3rd-party/cairo/test/pdiff/args.h diff --git a/3rd-party/cairo/test/pdiff/gpl.txt b/io2d/src/3rd-party/cairo/test/pdiff/gpl.txt similarity index 100% rename from 3rd-party/cairo/test/pdiff/gpl.txt rename to io2d/src/3rd-party/cairo/test/pdiff/gpl.txt diff --git a/3rd-party/cairo/test/pdiff/lpyramid.c b/io2d/src/3rd-party/cairo/test/pdiff/lpyramid.c similarity index 100% rename from 3rd-party/cairo/test/pdiff/lpyramid.c rename to io2d/src/3rd-party/cairo/test/pdiff/lpyramid.c diff --git a/3rd-party/cairo/test/pdiff/lpyramid.h b/io2d/src/3rd-party/cairo/test/pdiff/lpyramid.h similarity index 100% rename from 3rd-party/cairo/test/pdiff/lpyramid.h rename to io2d/src/3rd-party/cairo/test/pdiff/lpyramid.h diff --git a/3rd-party/cairo/test/pdiff/pdiff.c b/io2d/src/3rd-party/cairo/test/pdiff/pdiff.c similarity index 100% rename from 3rd-party/cairo/test/pdiff/pdiff.c rename to io2d/src/3rd-party/cairo/test/pdiff/pdiff.c diff --git a/3rd-party/cairo/test/pdiff/pdiff.h b/io2d/src/3rd-party/cairo/test/pdiff/pdiff.h similarity index 100% rename from 3rd-party/cairo/test/pdiff/pdiff.h rename to io2d/src/3rd-party/cairo/test/pdiff/pdiff.h diff --git a/3rd-party/cairo/test/pdiff/perceptualdiff.c b/io2d/src/3rd-party/cairo/test/pdiff/perceptualdiff.c similarity index 100% rename from 3rd-party/cairo/test/pdiff/perceptualdiff.c rename to io2d/src/3rd-party/cairo/test/pdiff/perceptualdiff.c diff --git a/3rd-party/cairo/test/pixman-rotate.c b/io2d/src/3rd-party/cairo/test/pixman-rotate.c similarity index 100% rename from 3rd-party/cairo/test/pixman-rotate.c rename to io2d/src/3rd-party/cairo/test/pixman-rotate.c diff --git a/3rd-party/cairo/test/png-flatten.c b/io2d/src/3rd-party/cairo/test/png-flatten.c similarity index 100% rename from 3rd-party/cairo/test/png-flatten.c rename to io2d/src/3rd-party/cairo/test/png-flatten.c diff --git a/3rd-party/cairo/test/png.c b/io2d/src/3rd-party/cairo/test/png.c similarity index 100% rename from 3rd-party/cairo/test/png.c rename to io2d/src/3rd-party/cairo/test/png.c diff --git a/3rd-party/cairo/test/png.png b/io2d/src/3rd-party/cairo/test/png.png similarity index 100% rename from 3rd-party/cairo/test/png.png rename to io2d/src/3rd-party/cairo/test/png.png diff --git a/3rd-party/cairo/test/ps-eps.c b/io2d/src/3rd-party/cairo/test/ps-eps.c similarity index 100% rename from 3rd-party/cairo/test/ps-eps.c rename to io2d/src/3rd-party/cairo/test/ps-eps.c diff --git a/3rd-party/cairo/test/ps-features.c b/io2d/src/3rd-party/cairo/test/ps-features.c similarity index 100% rename from 3rd-party/cairo/test/ps-features.c rename to io2d/src/3rd-party/cairo/test/ps-features.c diff --git a/3rd-party/cairo/test/ps-surface-source.c b/io2d/src/3rd-party/cairo/test/ps-surface-source.c similarity index 100% rename from 3rd-party/cairo/test/ps-surface-source.c rename to io2d/src/3rd-party/cairo/test/ps-surface-source.c diff --git a/3rd-party/cairo/test/ps2png.c b/io2d/src/3rd-party/cairo/test/ps2png.c similarity index 100% rename from 3rd-party/cairo/test/ps2png.c rename to io2d/src/3rd-party/cairo/test/ps2png.c diff --git a/3rd-party/cairo/test/pthread-same-source.c b/io2d/src/3rd-party/cairo/test/pthread-same-source.c similarity index 100% rename from 3rd-party/cairo/test/pthread-same-source.c rename to io2d/src/3rd-party/cairo/test/pthread-same-source.c diff --git a/3rd-party/cairo/test/pthread-show-text.c b/io2d/src/3rd-party/cairo/test/pthread-show-text.c similarity index 100% rename from 3rd-party/cairo/test/pthread-show-text.c rename to io2d/src/3rd-party/cairo/test/pthread-show-text.c diff --git a/3rd-party/cairo/test/pthread-similar.c b/io2d/src/3rd-party/cairo/test/pthread-similar.c similarity index 100% rename from 3rd-party/cairo/test/pthread-similar.c rename to io2d/src/3rd-party/cairo/test/pthread-similar.c diff --git a/3rd-party/cairo/test/push-group-color.c b/io2d/src/3rd-party/cairo/test/push-group-color.c similarity index 100% rename from 3rd-party/cairo/test/push-group-color.c rename to io2d/src/3rd-party/cairo/test/push-group-color.c diff --git a/3rd-party/cairo/test/push-group-path-offset.c b/io2d/src/3rd-party/cairo/test/push-group-path-offset.c similarity index 100% rename from 3rd-party/cairo/test/push-group-path-offset.c rename to io2d/src/3rd-party/cairo/test/push-group-path-offset.c diff --git a/3rd-party/cairo/test/push-group.c b/io2d/src/3rd-party/cairo/test/push-group.c similarity index 100% rename from 3rd-party/cairo/test/push-group.c rename to io2d/src/3rd-party/cairo/test/push-group.c diff --git a/3rd-party/cairo/test/quartz-surface-source.c b/io2d/src/3rd-party/cairo/test/quartz-surface-source.c similarity index 100% rename from 3rd-party/cairo/test/quartz-surface-source.c rename to io2d/src/3rd-party/cairo/test/quartz-surface-source.c diff --git a/3rd-party/cairo/test/radial-gradient-extend.c b/io2d/src/3rd-party/cairo/test/radial-gradient-extend.c similarity index 100% rename from 3rd-party/cairo/test/radial-gradient-extend.c rename to io2d/src/3rd-party/cairo/test/radial-gradient-extend.c diff --git a/3rd-party/cairo/test/radial-gradient.c b/io2d/src/3rd-party/cairo/test/radial-gradient.c similarity index 100% rename from 3rd-party/cairo/test/radial-gradient.c rename to io2d/src/3rd-party/cairo/test/radial-gradient.c diff --git a/3rd-party/cairo/test/radial-outer-focus.c b/io2d/src/3rd-party/cairo/test/radial-outer-focus.c similarity index 100% rename from 3rd-party/cairo/test/radial-outer-focus.c rename to io2d/src/3rd-party/cairo/test/radial-outer-focus.c diff --git a/3rd-party/cairo/test/random-clips.c b/io2d/src/3rd-party/cairo/test/random-clips.c similarity index 100% rename from 3rd-party/cairo/test/random-clips.c rename to io2d/src/3rd-party/cairo/test/random-clips.c diff --git a/3rd-party/cairo/test/random-intersections-curves-eo.c b/io2d/src/3rd-party/cairo/test/random-intersections-curves-eo.c similarity index 100% rename from 3rd-party/cairo/test/random-intersections-curves-eo.c rename to io2d/src/3rd-party/cairo/test/random-intersections-curves-eo.c diff --git a/3rd-party/cairo/test/random-intersections-curves-nz.c b/io2d/src/3rd-party/cairo/test/random-intersections-curves-nz.c similarity index 100% rename from 3rd-party/cairo/test/random-intersections-curves-nz.c rename to io2d/src/3rd-party/cairo/test/random-intersections-curves-nz.c diff --git a/3rd-party/cairo/test/random-intersections-eo.c b/io2d/src/3rd-party/cairo/test/random-intersections-eo.c similarity index 100% rename from 3rd-party/cairo/test/random-intersections-eo.c rename to io2d/src/3rd-party/cairo/test/random-intersections-eo.c diff --git a/3rd-party/cairo/test/random-intersections-nonzero.c b/io2d/src/3rd-party/cairo/test/random-intersections-nonzero.c similarity index 100% rename from 3rd-party/cairo/test/random-intersections-nonzero.c rename to io2d/src/3rd-party/cairo/test/random-intersections-nonzero.c diff --git a/3rd-party/cairo/test/raster-source.c b/io2d/src/3rd-party/cairo/test/raster-source.c similarity index 100% rename from 3rd-party/cairo/test/raster-source.c rename to io2d/src/3rd-party/cairo/test/raster-source.c diff --git a/3rd-party/cairo/test/record-extend.c b/io2d/src/3rd-party/cairo/test/record-extend.c similarity index 100% rename from 3rd-party/cairo/test/record-extend.c rename to io2d/src/3rd-party/cairo/test/record-extend.c diff --git a/3rd-party/cairo/test/record-mesh.c b/io2d/src/3rd-party/cairo/test/record-mesh.c similarity index 100% rename from 3rd-party/cairo/test/record-mesh.c rename to io2d/src/3rd-party/cairo/test/record-mesh.c diff --git a/3rd-party/cairo/test/record.c b/io2d/src/3rd-party/cairo/test/record.c similarity index 100% rename from 3rd-party/cairo/test/record.c rename to io2d/src/3rd-party/cairo/test/record.c diff --git a/3rd-party/cairo/test/record1414x.c b/io2d/src/3rd-party/cairo/test/record1414x.c similarity index 100% rename from 3rd-party/cairo/test/record1414x.c rename to io2d/src/3rd-party/cairo/test/record1414x.c diff --git a/3rd-party/cairo/test/record2x.c b/io2d/src/3rd-party/cairo/test/record2x.c similarity index 100% rename from 3rd-party/cairo/test/record2x.c rename to io2d/src/3rd-party/cairo/test/record2x.c diff --git a/3rd-party/cairo/test/record90.c b/io2d/src/3rd-party/cairo/test/record90.c similarity index 100% rename from 3rd-party/cairo/test/record90.c rename to io2d/src/3rd-party/cairo/test/record90.c diff --git a/3rd-party/cairo/test/recordflip.c b/io2d/src/3rd-party/cairo/test/recordflip.c similarity index 100% rename from 3rd-party/cairo/test/recordflip.c rename to io2d/src/3rd-party/cairo/test/recordflip.c diff --git a/3rd-party/cairo/test/recording-surface-extend.c b/io2d/src/3rd-party/cairo/test/recording-surface-extend.c similarity index 100% rename from 3rd-party/cairo/test/recording-surface-extend.c rename to io2d/src/3rd-party/cairo/test/recording-surface-extend.c diff --git a/3rd-party/cairo/test/recording-surface-pattern.c b/io2d/src/3rd-party/cairo/test/recording-surface-pattern.c similarity index 100% rename from 3rd-party/cairo/test/recording-surface-pattern.c rename to io2d/src/3rd-party/cairo/test/recording-surface-pattern.c diff --git a/3rd-party/cairo/test/rectangle-rounding-error.c b/io2d/src/3rd-party/cairo/test/rectangle-rounding-error.c similarity index 100% rename from 3rd-party/cairo/test/rectangle-rounding-error.c rename to io2d/src/3rd-party/cairo/test/rectangle-rounding-error.c diff --git a/3rd-party/cairo/test/rectilinear-dash-scale.c b/io2d/src/3rd-party/cairo/test/rectilinear-dash-scale.c similarity index 100% rename from 3rd-party/cairo/test/rectilinear-dash-scale.c rename to io2d/src/3rd-party/cairo/test/rectilinear-dash-scale.c diff --git a/3rd-party/cairo/test/rectilinear-dash.c b/io2d/src/3rd-party/cairo/test/rectilinear-dash.c similarity index 100% rename from 3rd-party/cairo/test/rectilinear-dash.c rename to io2d/src/3rd-party/cairo/test/rectilinear-dash.c diff --git a/3rd-party/cairo/test/rectilinear-fill.c b/io2d/src/3rd-party/cairo/test/rectilinear-fill.c similarity index 100% rename from 3rd-party/cairo/test/rectilinear-fill.c rename to io2d/src/3rd-party/cairo/test/rectilinear-fill.c diff --git a/3rd-party/cairo/test/rectilinear-grid.c b/io2d/src/3rd-party/cairo/test/rectilinear-grid.c similarity index 100% rename from 3rd-party/cairo/test/rectilinear-grid.c rename to io2d/src/3rd-party/cairo/test/rectilinear-grid.c diff --git a/3rd-party/cairo/test/rectilinear-miter-limit.c b/io2d/src/3rd-party/cairo/test/rectilinear-miter-limit.c similarity index 100% rename from 3rd-party/cairo/test/rectilinear-miter-limit.c rename to io2d/src/3rd-party/cairo/test/rectilinear-miter-limit.c diff --git a/3rd-party/cairo/test/rectilinear-stroke.c b/io2d/src/3rd-party/cairo/test/rectilinear-stroke.c similarity index 100% rename from 3rd-party/cairo/test/rectilinear-stroke.c rename to io2d/src/3rd-party/cairo/test/rectilinear-stroke.c diff --git a/3rd-party/cairo/test/reference/a1-bug.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-bug.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-bug.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-bug.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-bug.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-bug.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-bug.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-bug.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-bug.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-bug.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-bug.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-bug.image16.ref.png diff --git a/3rd-party/cairo/test/reference/a1-bug.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-bug.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-bug.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-bug.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-bug.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-bug.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-bug.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-bug.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-bug.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/a1-bug.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-bug.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/a1-bug.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/a1-bug.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-bug.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-bug.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-bug.ref.png diff --git a/3rd-party/cairo/test/reference/a1-bug.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-bug.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-bug.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-bug.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-bug.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-bug.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-bug.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-bug.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-clip-fill-equal.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-clip-fill-equal.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-clip-fill-equal.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-clip-fill-equal.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-clip-fill-equal.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-clip-fill-equal.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-clip-fill-equal.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-clip-fill-equal.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-clip-fill-equal.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-clip-fill-equal.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-clip-fill-equal.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-clip-fill-equal.ref.png diff --git a/3rd-party/cairo/test/reference/a1-clip-fill-rule.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-clip-fill-rule.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-clip-fill-rule.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-clip-fill-rule.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-clip-fill-rule.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-clip-fill-rule.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-clip-fill-rule.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-clip-fill-rule.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-clip-fill-rule.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-clip-fill-rule.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-clip-fill-rule.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-clip-fill-rule.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-clip-fill-rule.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-clip-fill-rule.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-clip-fill-rule.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-clip-fill-rule.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-clip-fill.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-clip-fill.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-clip-fill.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-clip-fill.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-clip-fill.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-clip-fill.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-clip-fill.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-clip-fill.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-clip-fill.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-clip-fill.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-clip-fill.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-clip-fill.ref.png diff --git a/3rd-party/cairo/test/reference/a1-clip-paint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-clip-paint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-clip-paint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-clip-paint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-clip-paint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-clip-paint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-clip-paint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-clip-paint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-clip-paint.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-clip-paint.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-clip-paint.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-clip-paint.ref.png diff --git a/3rd-party/cairo/test/reference/a1-clip-stroke.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-clip-stroke.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-clip-stroke.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-clip-stroke.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-clip-stroke.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-clip-stroke.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-clip-stroke.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-clip-stroke.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-clip-stroke.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-clip-stroke.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-clip-stroke.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-clip-stroke.ref.png diff --git a/3rd-party/cairo/test/reference/a1-fill.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-fill.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-fill.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-fill.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-fill.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-fill.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-fill.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-fill.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-fill.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-fill.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-fill.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-fill.ref.png diff --git a/3rd-party/cairo/test/reference/a1-image-sample.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-image-sample.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-image-sample.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-image-sample.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-image-sample.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-image-sample.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-image-sample.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-image-sample.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-image-sample.gl.xfail.png b/io2d/src/3rd-party/cairo/test/reference/a1-image-sample.gl.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-image-sample.gl.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/a1-image-sample.gl.xfail.png diff --git a/3rd-party/cairo/test/reference/a1-image-sample.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-image-sample.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-image-sample.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-image-sample.ref.png diff --git a/3rd-party/cairo/test/reference/a1-line-width.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-line-width.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-line-width.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-line-width.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-line-width.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-line-width.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-line-width.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-line-width.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-line-width.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-line-width.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-line-width.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-line-width.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/a1-line-width.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-line-width.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-line-width.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-line-width.ps.ref.png diff --git a/3rd-party/cairo/test/reference/a1-line-width.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-line-width.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-line-width.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-line-width.ref.png diff --git a/3rd-party/cairo/test/reference/a1-mask-sample.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-mask-sample.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-mask-sample.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-mask-sample.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-mask-sample.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-mask-sample.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-mask-sample.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-mask-sample.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-mask-sample.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-mask-sample.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-mask-sample.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-mask-sample.ref.png diff --git a/3rd-party/cairo/test/reference/a1-mask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-mask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-mask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-mask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-mask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-mask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-mask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-mask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-mask.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-mask.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-mask.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-mask.ref.png diff --git a/3rd-party/cairo/test/reference/a1-rasterisation-rectangles.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-rasterisation-rectangles.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-rasterisation-rectangles.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-rasterisation-rectangles.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-rasterisation-rectangles.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-rasterisation-rectangles.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-rasterisation-rectangles.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-rasterisation-rectangles.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-rasterisation-rectangles.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/a1-rasterisation-rectangles.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-rasterisation-rectangles.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/a1-rasterisation-rectangles.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/a1-rasterisation-rectangles.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-rasterisation-rectangles.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-rasterisation-rectangles.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-rasterisation-rectangles.ref.png diff --git a/3rd-party/cairo/test/reference/a1-rasterisation-triangles.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-rasterisation-triangles.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-rasterisation-triangles.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-rasterisation-triangles.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-rasterisation-triangles.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-rasterisation-triangles.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-rasterisation-triangles.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-rasterisation-triangles.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-rasterisation-triangles.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/a1-rasterisation-triangles.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-rasterisation-triangles.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/a1-rasterisation-triangles.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/a1-rasterisation-triangles.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-rasterisation-triangles.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-rasterisation-triangles.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-rasterisation-triangles.ref.png diff --git a/3rd-party/cairo/test/reference/a1-rectilinear-grid.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-rectilinear-grid.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-rectilinear-grid.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-rectilinear-grid.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-rectilinear-grid.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-rectilinear-grid.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-rectilinear-grid.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-rectilinear-grid.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-rectilinear-grid.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-rectilinear-grid.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-rectilinear-grid.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-rectilinear-grid.ref.png diff --git a/3rd-party/cairo/test/reference/a1-sample.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-sample.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-sample.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-sample.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-sample.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-sample.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-sample.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-sample.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-sample.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-sample.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-sample.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-sample.ref.png diff --git a/3rd-party/cairo/test/reference/a1-tiger.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-tiger.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-tiger.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-tiger.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-tiger.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-tiger.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-tiger.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-tiger.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-tiger.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-tiger.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-tiger.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-tiger.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-tiger.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-tiger.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-tiger.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-tiger.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-tiger.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-tiger.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-tiger.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-tiger.ref.png diff --git a/3rd-party/cairo/test/reference/a1-tiger.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-tiger.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-tiger.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-tiger.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-tiger.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-tiger.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-tiger.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-tiger.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-traps-sample.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-traps-sample.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-traps-sample.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-traps-sample.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a1-traps-sample.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-traps-sample.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-traps-sample.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-traps-sample.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a1-traps-sample.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/a1-traps-sample.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-traps-sample.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/a1-traps-sample.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/a1-traps-sample.ref.png b/io2d/src/3rd-party/cairo/test/reference/a1-traps-sample.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a1-traps-sample.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a1-traps-sample.ref.png diff --git a/3rd-party/cairo/test/reference/a8-clear.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a8-clear.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a8-clear.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a8-clear.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a8-clear.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a8-clear.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a8-clear.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a8-clear.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a8-clear.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a8-clear.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a8-clear.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a8-clear.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a8-clear.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/a8-clear.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a8-clear.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a8-clear.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/a8-clear.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a8-clear.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a8-clear.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a8-clear.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a8-clear.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a8-clear.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a8-clear.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a8-clear.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a8-clear.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a8-clear.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a8-clear.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a8-clear.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a8-mask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/a8-mask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a8-mask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a8-mask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/a8-mask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/a8-mask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a8-mask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a8-mask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/a8-mask.ref.png b/io2d/src/3rd-party/cairo/test/reference/a8-mask.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/a8-mask.ref.png rename to io2d/src/3rd-party/cairo/test/reference/a8-mask.ref.png diff --git a/3rd-party/cairo/test/reference/aliasing.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/aliasing.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/aliasing.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/aliasing.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/aliasing.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/aliasing.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/aliasing.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/aliasing.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/aliasing.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/aliasing.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/aliasing.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/aliasing.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/aliasing.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/aliasing.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/aliasing.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/aliasing.image16.ref.png diff --git a/3rd-party/cairo/test/reference/aliasing.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/aliasing.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/aliasing.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/aliasing.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/aliasing.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/aliasing.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/aliasing.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/aliasing.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/aliasing.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/aliasing.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/aliasing.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/aliasing.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/aliasing.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/aliasing.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/aliasing.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/aliasing.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/alpha-similar.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/alpha-similar.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/alpha-similar.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/alpha-similar.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/alpha-similar.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/alpha-similar.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/alpha-similar.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/alpha-similar.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/alpha-similar.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/alpha-similar.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/alpha-similar.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/alpha-similar.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/alpha-similar.gl.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/alpha-similar.gl.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/alpha-similar.gl.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/alpha-similar.gl.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/alpha-similar.gl.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/alpha-similar.gl.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/alpha-similar.gl.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/alpha-similar.gl.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/alpha-similar.pdf.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/alpha-similar.pdf.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/alpha-similar.pdf.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/alpha-similar.pdf.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/alpha-similar.pdf.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/alpha-similar.pdf.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/alpha-similar.pdf.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/alpha-similar.pdf.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/alpha-similar.ps.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/alpha-similar.ps.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/alpha-similar.ps.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/alpha-similar.ps.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/alpha-similar.ps.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/alpha-similar.ps.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/alpha-similar.ps.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/alpha-similar.ps.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/alpha-similar.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/alpha-similar.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/alpha-similar.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/alpha-similar.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/alpha-similar.svg.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/alpha-similar.svg.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/alpha-similar.svg.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/alpha-similar.svg.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/alpha-similar.svg.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/alpha-similar.svg.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/alpha-similar.svg.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/alpha-similar.svg.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/api-special-cases.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/api-special-cases.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/api-special-cases.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/api-special-cases.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/api-special-cases.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/api-special-cases.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/api-special-cases.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/api-special-cases.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/api-special-cases.ref.png b/io2d/src/3rd-party/cairo/test/reference/api-special-cases.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/api-special-cases.ref.png rename to io2d/src/3rd-party/cairo/test/reference/api-special-cases.ref.png diff --git a/3rd-party/cairo/test/reference/arc-direction.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-direction.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-direction.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-direction.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/arc-direction.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-direction.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-direction.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-direction.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/arc-direction.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-direction.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-direction.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-direction.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/arc-direction.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-direction.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-direction.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-direction.ps.ref.png diff --git a/3rd-party/cairo/test/reference/arc-direction.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-direction.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-direction.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-direction.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/arc-direction.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-direction.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-direction.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-direction.traps.ref.png diff --git a/3rd-party/cairo/test/reference/arc-infinite-loop.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-infinite-loop.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-infinite-loop.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-infinite-loop.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/arc-infinite-loop.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-infinite-loop.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-infinite-loop.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-infinite-loop.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/arc-infinite-loop.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-infinite-loop.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-infinite-loop.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-infinite-loop.ref.png diff --git a/3rd-party/cairo/test/reference/arc-looping-dash.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-looping-dash.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-looping-dash.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-looping-dash.image16.ref.png diff --git a/3rd-party/cairo/test/reference/arc-looping-dash.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-looping-dash.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-looping-dash.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-looping-dash.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/arc-looping-dash.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-looping-dash.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-looping-dash.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-looping-dash.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/arc-looping-dash.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-looping-dash.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-looping-dash.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-looping-dash.ps.ref.png diff --git a/3rd-party/cairo/test/reference/arc-looping-dash.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-looping-dash.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-looping-dash.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-looping-dash.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/arc-looping-dash.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-looping-dash.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-looping-dash.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-looping-dash.ref.png diff --git a/3rd-party/cairo/test/reference/arc-looping-dash.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-looping-dash.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-looping-dash.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-looping-dash.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/arc-looping-dash.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/arc-looping-dash.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/arc-looping-dash.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/arc-looping-dash.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/big-empty-box.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-empty-box.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-empty-box.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-empty-box.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/big-empty-box.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-empty-box.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-empty-box.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-empty-box.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/big-empty-box.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-empty-box.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-empty-box.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-empty-box.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/big-empty-box.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-empty-box.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-empty-box.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-empty-box.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/big-empty-triangle.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-empty-triangle.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-empty-triangle.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-empty-triangle.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/big-empty-triangle.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-empty-triangle.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-empty-triangle.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-empty-triangle.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/big-empty-triangle.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-empty-triangle.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-empty-triangle.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-empty-triangle.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/big-empty-triangle.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-empty-triangle.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-empty-triangle.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-empty-triangle.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/big-line.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-line.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-line.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-line.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/big-line.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-line.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-line.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-line.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/big-line.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-line.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-line.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-line.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/big-line.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-line.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-line.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-line.image16.ref.png diff --git a/3rd-party/cairo/test/reference/big-line.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-line.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-line.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-line.ps.ref.png diff --git a/3rd-party/cairo/test/reference/big-line.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-line.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-line.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-line.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/big-line.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-line.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-line.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-line.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/big-line.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-line.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-line.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-line.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/big-line.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-line.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-line.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-line.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/big-little-box.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-little-box.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-little-box.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-little-box.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/big-little-box.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-little-box.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-little-box.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-little-box.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/big-little-box.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-little-box.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-little-box.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-little-box.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/big-little-box.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-little-box.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-little-box.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-little-box.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/big-little-triangle.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-little-triangle.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-little-triangle.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-little-triangle.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/big-little-triangle.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-little-triangle.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-little-triangle.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-little-triangle.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/big-little-triangle.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-little-triangle.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-little-triangle.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-little-triangle.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/big-little-triangle.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-little-triangle.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-little-triangle.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-little-triangle.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/big-little-triangle.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-little-triangle.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-little-triangle.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-little-triangle.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/big-little-triangle.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-little-triangle.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-little-triangle.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-little-triangle.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/big-trap.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-trap.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-trap.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-trap.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/big-trap.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-trap.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-trap.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-trap.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/big-trap.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-trap.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-trap.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-trap.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/big-trap.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-trap.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-trap.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-trap.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/big-trap.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-trap.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-trap.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-trap.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/big-trap.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/big-trap.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/big-trap.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/big-trap.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bilevel-image.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bilevel-image.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bilevel-image.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bilevel-image.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bilevel-image.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bilevel-image.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bilevel-image.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bilevel-image.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bilevel-image.ref.png b/io2d/src/3rd-party/cairo/test/reference/bilevel-image.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bilevel-image.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bilevel-image.ref.png diff --git a/3rd-party/cairo/test/reference/bilevel-xlib-fallback.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bilevel-xlib-fallback.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bilevel-xlib-fallback.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bilevel-xlib-fallback.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bilevel-xlib-window.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bilevel-xlib-window.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bilevel-xlib-window.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bilevel-xlib-window.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bilevel-xlib.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bilevel-xlib.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bilevel-xlib.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bilevel-xlib.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bilevel-xlib.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bilevel-xlib.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bilevel-xlib.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bilevel-xlib.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bitmap-font.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bitmap-font.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bitmap-font.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bitmap-font.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bitmap-font.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bitmap-font.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bitmap-font.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bitmap-font.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bitmap-font.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bitmap-font.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bitmap-font.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bitmap-font.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bitmap-font.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bitmap-font.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bitmap-font.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bitmap-font.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bug-40410.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-40410.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-40410.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-40410.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bug-40410.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-40410.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-40410.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-40410.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bug-40410.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-40410.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-40410.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-40410.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bug-40410.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-40410.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-40410.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-40410.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bug-40410.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-40410.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-40410.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-40410.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bug-40410.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-40410.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-40410.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-40410.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bug-51910.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-51910.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-51910.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-51910.ref.png diff --git a/3rd-party/cairo/test/reference/bug-bo-collins.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-bo-collins.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-bo-collins.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-bo-collins.ref.png diff --git a/3rd-party/cairo/test/reference/bug-bo-rectangular.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-bo-rectangular.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-bo-rectangular.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-bo-rectangular.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bug-bo-rectangular.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-bo-rectangular.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-bo-rectangular.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-bo-rectangular.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bug-bo-rectangular.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-bo-rectangular.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-bo-rectangular.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-bo-rectangular.image16.ref.png diff --git a/3rd-party/cairo/test/reference/bug-bo-rectangular.ps.xfail.png b/io2d/src/3rd-party/cairo/test/reference/bug-bo-rectangular.ps.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-bo-rectangular.ps.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/bug-bo-rectangular.ps.xfail.png diff --git a/3rd-party/cairo/test/reference/bug-bo-rectangular.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-bo-rectangular.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-bo-rectangular.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-bo-rectangular.ref.png diff --git a/3rd-party/cairo/test/reference/bug-bo-ricotz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-bo-ricotz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-bo-ricotz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-bo-ricotz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bug-bo-ricotz.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-bo-ricotz.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-bo-ricotz.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-bo-ricotz.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bug-bo-ricotz.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-bo-ricotz.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-bo-ricotz.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-bo-ricotz.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bug-bo-ricotz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-bo-ricotz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-bo-ricotz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-bo-ricotz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bug-bo-ricotz.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-bo-ricotz.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-bo-ricotz.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-bo-ricotz.traps.ref.png diff --git a/3rd-party/cairo/test/reference/bug-extents.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-extents.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-extents.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-extents.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bug-extents.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-extents.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-extents.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-extents.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bug-extents.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-extents.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-extents.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-extents.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bug-extents.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-extents.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-extents.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-extents.image16.ref.png diff --git a/3rd-party/cairo/test/reference/bug-extents.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-extents.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-extents.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-extents.ps.ref.png diff --git a/3rd-party/cairo/test/reference/bug-extents.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-extents.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-extents.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-extents.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/bug-extents.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-extents.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-extents.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-extents.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bug-extents.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-extents.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-extents.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-extents.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bug-extents.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-extents.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-extents.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-extents.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bug-seams.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-seams.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-seams.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-seams.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bug-seams.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-seams.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-seams.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-seams.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bug-seams.image.xfail.png b/io2d/src/3rd-party/cairo/test/reference/bug-seams.image.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-seams.image.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/bug-seams.image.xfail.png diff --git a/3rd-party/cairo/test/reference/bug-seams.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-seams.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-seams.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-seams.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bug-seams.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-seams.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-seams.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-seams.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bug-seams.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-seams.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-seams.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-seams.ref.png diff --git a/3rd-party/cairo/test/reference/bug-seams.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-seams.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-seams.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-seams.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bug-seams.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-seams.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-seams.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-seams.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bug-seams.xlib-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-seams.xlib-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-seams.xlib-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-seams.xlib-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/bug-source-cu.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-source-cu.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-source-cu.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-source-cu.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bug-source-cu.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-source-cu.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-source-cu.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-source-cu.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bug-source-cu.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-source-cu.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-source-cu.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-source-cu.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/bug-source-cu.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-source-cu.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-source-cu.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-source-cu.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/bug-spline.ref.png b/io2d/src/3rd-party/cairo/test/reference/bug-spline.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/bug-spline.ref.png rename to io2d/src/3rd-party/cairo/test/reference/bug-spline.ref.png diff --git a/3rd-party/cairo/test/reference/caps-05.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-05.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-05.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-05.ref.png diff --git a/3rd-party/cairo/test/reference/caps-05.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-05.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-05.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-05.traps.ref.png diff --git a/3rd-party/cairo/test/reference/caps-1.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-1.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-1.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-1.ref.png diff --git a/3rd-party/cairo/test/reference/caps-1.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-1.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-1.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-1.traps.ref.png diff --git a/3rd-party/cairo/test/reference/caps-2.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-2.ref.png diff --git a/3rd-party/cairo/test/reference/caps-2.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-2.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-2.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-2.traps.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-05.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-05.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-05.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-05.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-05.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-05.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-05.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-05.traps.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-1.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-1.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-1.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-1.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-1.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-1.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-1.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-1.traps.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-2.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-2.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-2.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-2.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-2.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-2.traps.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-alpha.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-alpha.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-alpha.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-alpha.image16.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-alpha.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-alpha.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-alpha.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-alpha.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-alpha.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-alpha.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-alpha.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-alpha.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-alpha.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-alpha.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-alpha.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-alpha.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-alpha.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-alpha.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-alpha.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-alpha.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-alpha.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-alpha.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-alpha.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-alpha.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-alpha.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-alpha.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-alpha.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-alpha.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-curve.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-curve.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-curve.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-curve.image16.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-curve.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-curve.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-curve.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-curve.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-curve.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-curve.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-curve.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-curve.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-curve.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-curve.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-curve.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-curve.ps.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-curve.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-curve.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-curve.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-curve.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-curve.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-curve.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-curve.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-curve.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-curve.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-curve.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-curve.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-curve.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins-curve.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins-curve.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins-curve.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins-curve.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins.image16.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins.ps.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/caps-joins.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-joins.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-joins.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-joins.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/caps-sub-paths.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-sub-paths.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-sub-paths.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-sub-paths.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/caps-sub-paths.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-sub-paths.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-sub-paths.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-sub-paths.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/caps-sub-paths.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-sub-paths.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-sub-paths.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-sub-paths.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/caps-sub-paths.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-sub-paths.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-sub-paths.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-sub-paths.image16.ref.png diff --git a/3rd-party/cairo/test/reference/caps-sub-paths.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-sub-paths.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-sub-paths.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-sub-paths.ps.ref.png diff --git a/3rd-party/cairo/test/reference/caps-sub-paths.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-sub-paths.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-sub-paths.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-sub-paths.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/caps-sub-paths.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-sub-paths.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-sub-paths.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-sub-paths.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/caps-sub-paths.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-sub-paths.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-sub-paths.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-sub-paths.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/caps-tails-curve.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-tails-curve.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-tails-curve.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-tails-curve.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/caps-tails-curve.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-tails-curve.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-tails-curve.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-tails-curve.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/caps-tails-curve.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-tails-curve.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-tails-curve.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-tails-curve.ps.ref.png diff --git a/3rd-party/cairo/test/reference/caps-tails-curve.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-tails-curve.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-tails-curve.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-tails-curve.ref.png diff --git a/3rd-party/cairo/test/reference/caps-tails-curve.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-tails-curve.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-tails-curve.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-tails-curve.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/caps-tails-curve.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-tails-curve.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-tails-curve.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-tails-curve.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/caps-tails-curve.xcb.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps-tails-curve.xcb.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps-tails-curve.xcb.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps-tails-curve.xcb.ref.png diff --git a/3rd-party/cairo/test/reference/caps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/caps.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/caps.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/caps.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps.image16.ref.png diff --git a/3rd-party/cairo/test/reference/caps.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps.ps.ref.png diff --git a/3rd-party/cairo/test/reference/caps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/caps.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/caps.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/caps.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/caps.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/caps.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/checkerboard.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/checkerboard.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/checkerboard.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/checkerboard.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/checkerboard.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/checkerboard.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/checkerboard.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/checkerboard.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/checkerboard.ref.png b/io2d/src/3rd-party/cairo/test/reference/checkerboard.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/checkerboard.ref.png rename to io2d/src/3rd-party/cairo/test/reference/checkerboard.ref.png diff --git a/3rd-party/cairo/test/reference/clear-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clear-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clear-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clear-source.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear-source.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear-source.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear-source.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clear-source.pdf.xfail.png b/io2d/src/3rd-party/cairo/test/reference/clear-source.pdf.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear-source.pdf.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/clear-source.pdf.xfail.png diff --git a/3rd-party/cairo/test/reference/clear-source.ps.xfail.png b/io2d/src/3rd-party/cairo/test/reference/clear-source.ps.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear-source.ps.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/clear-source.ps.xfail.png diff --git a/3rd-party/cairo/test/reference/clear-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clear-source.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear-source.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear-source.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear-source.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clear-source.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear-source.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear-source.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear-source.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clear.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clear.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clear.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clear.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clear.ps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear.ps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear.ps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear.ps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clear.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clear.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clear.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clear.svg12.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/clear.svg12.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear.svg12.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/clear.svg12.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/clear.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/clear.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/clear.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/clear.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clear.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clear.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clear.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clear.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-all.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-all.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-all.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-all.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-all.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-all.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-all.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-all.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-all.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-all.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-all.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-all.ref.png diff --git a/3rd-party/cairo/test/reference/clip-complex-bug61492.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-complex-bug61492.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-complex-bug61492.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-complex-bug61492.ref.png diff --git a/3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-complex-shape-eo-aa.ref.png diff --git a/3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-complex-shape-eo-mono.ref.png diff --git a/3rd-party/cairo/test/reference/clip-contexts.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-contexts.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-contexts.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-contexts.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-contexts.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-contexts.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-contexts.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-contexts.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-contexts.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-contexts.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-contexts.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-contexts.ref.png diff --git a/3rd-party/cairo/test/reference/clip-device-offset.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-device-offset.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-device-offset.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-device-offset.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-device-offset.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-device-offset.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-device-offset.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-device-offset.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-device-offset.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-device-offset.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-device-offset.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-device-offset.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-device-offset.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-device-offset.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-device-offset.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-device-offset.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint-hatching.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint-hatching.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint-hatching.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint-hatching.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint-hatching.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint-hatching.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint-hatching.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint-hatching.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint-hatching.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint-hatching.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint-hatching.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint-hatching.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint-hatching.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint-hatching.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint-hatching.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint-hatching.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint-hatching.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint-hatching.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint-hatching.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint-hatching.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint-hatching.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint-hatching.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint-hatching.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint-hatching.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint-hatching.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint-hatching.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint-hatching.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint-hatching.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint-hatching.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint-hatching.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint-hatching.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint-hatching.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint-quad.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint-quad.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint-quad.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint-quad.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint-quad.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint-quad.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint-quad.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint-quad.traps.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint.ps.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-disjoint.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-disjoint.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-disjoint.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-disjoint.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-empty-group.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-empty-group.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-empty-group.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-empty-group.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-empty-group.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-empty-group.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-empty-group.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-empty-group.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-empty-group.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-empty-group.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-empty-group.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-empty-group.ref.png diff --git a/3rd-party/cairo/test/reference/clip-empty-save.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-empty-save.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-empty-save.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-empty-save.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-empty-save.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-empty-save.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-empty-save.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-empty-save.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-empty-save.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-empty-save.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-empty-save.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-empty-save.ref.png diff --git a/3rd-party/cairo/test/reference/clip-empty.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-empty.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-empty.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-empty.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-empty.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-empty.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-empty.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-empty.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-empty.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-empty.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-empty.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-empty.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.xlib-fallback.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.xlib-fallback.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-eo-unbounded.xlib-fallback.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-eo-unbounded.xlib-fallback.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-no-op.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-no-op.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-no-op.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-no-op.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-no-op.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-no-op.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-no-op.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-no-op.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-no-op.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-no-op.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-no-op.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-no-op.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-no-op.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-no-op.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-no-op.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-no-op.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.xlib-fallback.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.xlib-fallback.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-nz-unbounded.xlib-fallback.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-nz-unbounded.xlib-fallback.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-rule-pixel-aligned.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-rule.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-rule.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-rule.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-rule.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-rule.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-rule.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-rule.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-rule.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-rule.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-rule.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-rule.ps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.ps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-rule.ps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.ps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-rule.ps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.ps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-rule.ps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.ps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-rule.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-rule.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-rule.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-rule.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-rule.test-paginated.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.test-paginated.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-rule.test-paginated.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.test-paginated.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-rule.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-rule.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill-rule.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill-rule.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill-rule.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill.ps.xfail.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill.ps.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill.ps.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill.ps.xfail.png diff --git a/3rd-party/cairo/test/reference/clip-fill.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-fill.xlib-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-fill.xlib-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-fill.xlib-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-fill.xlib-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-aligned-rectangles.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-circles.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-circles.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-circles.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-circles.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-circles.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-circles.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-circles.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-circles.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-circles.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-circles.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-circles.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-circles.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.ps.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-circles.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-circles.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-circles.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-circles.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-circles.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-circles.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-circles.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-circles.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-circles.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-group-shapes-unaligned-rectangles.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-image.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-image.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-image.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-image.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-image.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-image.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-image.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-image.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-image.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-image.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-image.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-image.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-image.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-image.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-image.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-image.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clip-image.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-image.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-image.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-image.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-image.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-image.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-image.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-image.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-image.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-image.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-image.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-image.ps.ref.png diff --git a/3rd-party/cairo/test/reference/clip-image.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-image.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-image.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-image.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-image.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-image.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-image.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-image.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-image.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-image.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-image.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-image.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-intersect.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-intersect.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-intersect.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-intersect.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-intersect.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-intersect.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-intersect.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-intersect.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-intersect.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-intersect.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-intersect.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-intersect.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-intersect.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-intersect.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-intersect.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-intersect.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-intersect.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-intersect.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-intersect.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-intersect.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-intersect.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-intersect.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-intersect.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-intersect.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-mixed-antialias.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-mixed-antialias.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-mixed-antialias.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-mixed-antialias.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-mixed-antialias.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-mixed-antialias.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-mixed-antialias.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-mixed-antialias.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-mixed-antialias.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-mixed-antialias.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-mixed-antialias.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-mixed-antialias.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-mixed-antialias.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-mixed-antialias.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-mixed-antialias.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-mixed-antialias.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-mixed-antialias.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-mixed-antialias.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-mixed-antialias.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-mixed-antialias.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-mixed-antialias.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-mixed-antialias.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-mixed-antialias.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-mixed-antialias.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-nesting.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-nesting.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-nesting.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-nesting.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-nesting.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-nesting.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-nesting.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-nesting.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-nesting.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-nesting.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-nesting.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-nesting.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-nesting.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-nesting.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-nesting.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-nesting.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-nesting.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-nesting.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-nesting.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-nesting.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-nesting.ps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-nesting.ps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-nesting.ps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-nesting.ps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-nesting.ps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-nesting.ps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-nesting.ps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-nesting.ps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-nesting.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-nesting.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-nesting.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-nesting.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-nesting.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-nesting.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-nesting.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-nesting.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-nesting.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-nesting.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-nesting.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-nesting.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-nesting.test-paginated.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-nesting.test-paginated.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-nesting.test-paginated.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-nesting.test-paginated.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-nesting.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-nesting.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-nesting.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-nesting.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-nesting.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-nesting.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-nesting.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-nesting.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.gl.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.gl.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.gl.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.gl.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.pdf.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.pdf.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.pdf.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.pdf.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.ps2.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.ps2.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.ps2.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.ps2.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.svg12.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.svg12.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.svg12.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.svg12.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/clip-operator.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/clip-operator.test-paginated.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.test-paginated.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.test-paginated.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.test-paginated.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-operator.xlib-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-operator.xlib-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-operator.xlib-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-operator.xlib-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/clip-polygons.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-polygons.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-polygons.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-polygons.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-polygons.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-polygons.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-polygons.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-polygons.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-polygons.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-polygons.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-polygons.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-polygons.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-polygons.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-polygons.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-polygons.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-polygons.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-polygons.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-polygons.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-polygons.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-polygons.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-polygons.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-polygons.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-polygons.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-polygons.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-polygons.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-polygons.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-polygons.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-polygons.traps.ref.png diff --git a/3rd-party/cairo/test/reference/clip-push-group.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-push-group.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-push-group.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-push-group.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-push-group.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-push-group.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-push-group.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-push-group.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-push-group.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-push-group.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-push-group.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-push-group.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-push-group.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-push-group.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-push-group.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-push-group.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clip-push-group.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-push-group.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-push-group.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-push-group.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/clip-push-group.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-push-group.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-push-group.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-push-group.ps.ref.png diff --git a/3rd-party/cairo/test/reference/clip-push-group.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-push-group.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-push-group.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-push-group.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/clip-push-group.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-push-group.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-push-group.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-push-group.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-push-group.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-push-group.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-push-group.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-push-group.svg.ref.png diff --git a/3rd-party/cairo/test/reference/clip-push-group.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-push-group.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-push-group.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-push-group.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-push-group.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-push-group.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-push-group.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-push-group.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-rectilinear.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-rectilinear.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-rectilinear.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-rectilinear.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-rectilinear.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-rectilinear.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-rectilinear.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-rectilinear.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-rectilinear.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-rectilinear.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-rectilinear.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-rectilinear.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-rectilinear.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-rectilinear.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-rectilinear.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-rectilinear.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-rectilinear.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-rectilinear.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-rectilinear.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-rectilinear.ref.png diff --git a/3rd-party/cairo/test/reference/clip-rectilinear.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-rectilinear.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-rectilinear.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-rectilinear.traps.ref.png diff --git a/3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-rotate-image-surface-paint.ref.png diff --git a/3rd-party/cairo/test/reference/clip-shape.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-shape.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-shape.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-shape.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-shape.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-shape.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-shape.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-shape.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-shape.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-shape.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-shape.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-shape.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-shape.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-shape.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-shape.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-shape.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clip-shape.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-shape.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-shape.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-shape.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-shape.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-shape.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-shape.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-shape.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-shape.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-shape.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-shape.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-shape.ps.ref.png diff --git a/3rd-party/cairo/test/reference/clip-shape.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-shape.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-shape.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-shape.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/clip-shape.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-shape.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-shape.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-shape.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-shape.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-shape.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-shape.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-shape.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-shape.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-shape.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-shape.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-shape.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-shape.xlib-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-shape.xlib-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-shape.xlib-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-shape.xlib-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-no-op.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-no-op.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-no-op.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-no-op.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-no-op.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-no-op.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-no-op.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-no-op.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-no-op.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-no-op.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-no-op.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-no-op.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-no-op.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-no-op.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-no-op.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-no-op.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-unbounded.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-unbounded.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-unbounded.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-unbounded.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-unbounded.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-unbounded.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-unbounded.image16.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.image16.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-unbounded.image16.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.image16.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-unbounded.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-unbounded.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-unbounded.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-unbounded.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-unbounded.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-unbounded.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-unbounded.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-unbounded.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-unbounded.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-unbounded.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-unbounded.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-unbounded.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-unbounded.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-unbounded.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-unbounded.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-unbounded.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke-unbounded.xlib-fallback.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.xlib-fallback.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke-unbounded.xlib-fallback.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke-unbounded.xlib-fallback.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke.ps.xfail.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke.ps.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke.ps.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke.ps.xfail.png diff --git a/3rd-party/cairo/test/reference/clip-stroke.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-stroke.xlib-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-stroke.xlib-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-stroke.xlib-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-stroke.xlib-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/clip-text.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-text.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-text.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-text.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-text.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-text.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-text.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-text.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-text.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-text.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-text.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-text.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-text.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-text.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-text.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-text.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clip-text.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-text.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-text.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-text.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-text.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-text.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-text.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-text.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-text.ps.xfail.png b/io2d/src/3rd-party/cairo/test/reference/clip-text.ps.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-text.ps.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/clip-text.ps.xfail.png diff --git a/3rd-party/cairo/test/reference/clip-text.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-text.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-text.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-text.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/clip-text.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-text.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-text.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-text.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-text.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-text.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-text.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-text.svg.ref.png diff --git a/3rd-party/cairo/test/reference/clip-text.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-text.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-text.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-text.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-text.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-text.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-text.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-text.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice-rectangle.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice-rectangle.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice-rectangle.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice-rectangle.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice-rectangle.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice-rectangle.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice-rectangle.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice-rectangle.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice-rectangle.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice-rectangle.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice-rectangle.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice-rectangle.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice.ps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice.ps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice.ps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice.ps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice.ps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice.ps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice.ps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice.ps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice.test-paginated.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice.test-paginated.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice.test-paginated.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice.test-paginated.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice.test-paginated.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice.test-paginated.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice.test-paginated.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice.test-paginated.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-twice.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-twice.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-twice.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-twice.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-unbounded.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-unbounded.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-unbounded.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-unbounded.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-unbounded.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-unbounded.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-unbounded.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-unbounded.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-unbounded.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-unbounded.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-unbounded.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-unbounded.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-unbounded.pdf.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/clip-unbounded.pdf.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-unbounded.pdf.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/clip-unbounded.pdf.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/clip-unbounded.pdf.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/clip-unbounded.pdf.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-unbounded.pdf.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/clip-unbounded.pdf.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/clip-unbounded.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-unbounded.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-unbounded.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-unbounded.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-unbounded.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/clip-unbounded.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-unbounded.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/clip-unbounded.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/clip-xlib-fallback.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-xlib-fallback.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-xlib-fallback.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-xlib-fallback.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-xlib-window.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-xlib-window.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-xlib-window.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-xlib-window.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clip-xlib.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-xlib.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-xlib.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-xlib.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clip-xlib.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clip-xlib.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clip-xlib.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clip-xlib.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-group.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-group.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-group.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-group.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-group.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-group.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-group.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-group.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-group.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-group.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-group.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-group.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-group.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-group.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-group.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-group.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-group.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-group.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-group.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-group.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-group.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-group.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-group.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-group.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-group.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-group.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-group.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-group.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-group.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-group.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-group.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-group.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-group.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-group.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-group.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-group.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-group.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-group.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-group.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-group.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-group.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-group.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-group.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-group.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-group.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-group.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-group.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-group.svg.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-group.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-group.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-group.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-group.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-group.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-group.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-group.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-group.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-group.xlib-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-group.xlib-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-group.xlib-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-group.xlib-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-surface.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-surface.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-surface.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-surface.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-surface.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-surface.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-surface.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-surface.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-surface.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-surface.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-surface.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-surface.image16.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-surface.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-surface.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-surface.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-surface.ref.png diff --git a/3rd-party/cairo/test/reference/clipped-trapezoids.ref.png b/io2d/src/3rd-party/cairo/test/reference/clipped-trapezoids.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/clipped-trapezoids.ref.png rename to io2d/src/3rd-party/cairo/test/reference/clipped-trapezoids.ref.png diff --git a/3rd-party/cairo/test/reference/close-path-current-point.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path-current-point.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path-current-point.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path-current-point.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/close-path-current-point.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path-current-point.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path-current-point.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path-current-point.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/close-path-current-point.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path-current-point.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path-current-point.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path-current-point.image16.ref.png diff --git a/3rd-party/cairo/test/reference/close-path-current-point.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path-current-point.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path-current-point.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path-current-point.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/close-path-current-point.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path-current-point.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path-current-point.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path-current-point.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/close-path-current-point.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path-current-point.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path-current-point.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path-current-point.ps.ref.png diff --git a/3rd-party/cairo/test/reference/close-path-current-point.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path-current-point.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path-current-point.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path-current-point.ref.png diff --git a/3rd-party/cairo/test/reference/close-path-current-point.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path-current-point.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path-current-point.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path-current-point.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/close-path-current-point.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path-current-point.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path-current-point.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path-current-point.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/close-path.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/close-path.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/close-path.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/close-path.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/close-path.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/close-path.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/close-path.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/close-path.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/close-path.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/close-path.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/close-path.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over-repeat.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-over.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-over.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-over.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-over.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-over.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-over.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over.image16.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-over.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-over.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-over.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-over.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-over.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-over.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-over.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-source.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-source.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-source.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-source.image16.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-source.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-source.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-source.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-source.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-source.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-source.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-source.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-source.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-source.ref.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-source.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-source.ref.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-source.ref.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-source.svg12.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-source.svg12.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-source.svg12.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-source.svg12.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/composite-integer-translate-source.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-source.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/composite-integer-translate-source.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/composite-integer-translate-source.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/copy-disjoint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/copy-disjoint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/copy-disjoint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/copy-disjoint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/copy-disjoint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/copy-disjoint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/copy-disjoint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/copy-disjoint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/copy-disjoint.ref.png b/io2d/src/3rd-party/cairo/test/reference/copy-disjoint.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/copy-disjoint.ref.png rename to io2d/src/3rd-party/cairo/test/reference/copy-disjoint.ref.png diff --git a/3rd-party/cairo/test/reference/copy-path.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/copy-path.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/copy-path.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/copy-path.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/copy-path.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/copy-path.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/copy-path.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/copy-path.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/copy-path.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/copy-path.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/copy-path.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/copy-path.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/copy-path.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/copy-path.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/copy-path.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/copy-path.image16.ref.png diff --git a/3rd-party/cairo/test/reference/copy-path.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/copy-path.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/copy-path.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/copy-path.ps.ref.png diff --git a/3rd-party/cairo/test/reference/copy-path.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/copy-path.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/copy-path.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/copy-path.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/copy-path.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/copy-path.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/copy-path.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/copy-path.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/copy-path.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/copy-path.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/copy-path.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/copy-path.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/coverage-column-triangles.ref.png b/io2d/src/3rd-party/cairo/test/reference/coverage-column-triangles.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/coverage-column-triangles.ref.png rename to io2d/src/3rd-party/cairo/test/reference/coverage-column-triangles.ref.png diff --git a/3rd-party/cairo/test/reference/coverage-column-triangles.xlib.xfail.png b/io2d/src/3rd-party/cairo/test/reference/coverage-column-triangles.xlib.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/coverage-column-triangles.xlib.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/coverage-column-triangles.xlib.xfail.png diff --git a/3rd-party/cairo/test/reference/coverage-intersecting-quads.ref.png b/io2d/src/3rd-party/cairo/test/reference/coverage-intersecting-quads.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/coverage-intersecting-quads.ref.png rename to io2d/src/3rd-party/cairo/test/reference/coverage-intersecting-quads.ref.png diff --git a/3rd-party/cairo/test/reference/coverage-intersecting-quads.xlib.xfail.png b/io2d/src/3rd-party/cairo/test/reference/coverage-intersecting-quads.xlib.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/coverage-intersecting-quads.xlib.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/coverage-intersecting-quads.xlib.xfail.png diff --git a/3rd-party/cairo/test/reference/coverage-intersecting-triangles.ref.png b/io2d/src/3rd-party/cairo/test/reference/coverage-intersecting-triangles.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/coverage-intersecting-triangles.ref.png rename to io2d/src/3rd-party/cairo/test/reference/coverage-intersecting-triangles.ref.png diff --git a/3rd-party/cairo/test/reference/coverage-intersecting-triangles.xlib.xfail.png b/io2d/src/3rd-party/cairo/test/reference/coverage-intersecting-triangles.xlib.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/coverage-intersecting-triangles.xlib.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/coverage-intersecting-triangles.xlib.xfail.png diff --git a/3rd-party/cairo/test/reference/coverage-rectangles.ref.png b/io2d/src/3rd-party/cairo/test/reference/coverage-rectangles.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/coverage-rectangles.ref.png rename to io2d/src/3rd-party/cairo/test/reference/coverage-rectangles.ref.png diff --git a/3rd-party/cairo/test/reference/coverage-rectangles.xlib.xfail.png b/io2d/src/3rd-party/cairo/test/reference/coverage-rectangles.xlib.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/coverage-rectangles.xlib.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/coverage-rectangles.xlib.xfail.png diff --git a/3rd-party/cairo/test/reference/coverage-row-triangles.ref.png b/io2d/src/3rd-party/cairo/test/reference/coverage-row-triangles.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/coverage-row-triangles.ref.png rename to io2d/src/3rd-party/cairo/test/reference/coverage-row-triangles.ref.png diff --git a/3rd-party/cairo/test/reference/coverage-row-triangles.xlib.xfail.png b/io2d/src/3rd-party/cairo/test/reference/coverage-row-triangles.xlib.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/coverage-row-triangles.xlib.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/coverage-row-triangles.xlib.xfail.png diff --git a/3rd-party/cairo/test/reference/coverage-triangles.ref.png b/io2d/src/3rd-party/cairo/test/reference/coverage-triangles.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/coverage-triangles.ref.png rename to io2d/src/3rd-party/cairo/test/reference/coverage-triangles.ref.png diff --git a/3rd-party/cairo/test/reference/coverage-triangles.xlib.xfail.png b/io2d/src/3rd-party/cairo/test/reference/coverage-triangles.xlib.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/coverage-triangles.xlib.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/coverage-triangles.xlib.xfail.png diff --git a/3rd-party/cairo/test/reference/create-from-png-stream.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/create-from-png-stream.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/create-from-png-stream.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/create-from-png-stream.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/create-from-png-stream.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/create-from-png-stream.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/create-from-png-stream.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/create-from-png-stream.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/create-from-png-stream.ref.png b/io2d/src/3rd-party/cairo/test/reference/create-from-png-stream.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/create-from-png-stream.ref.png rename to io2d/src/3rd-party/cairo/test/reference/create-from-png-stream.ref.png diff --git a/3rd-party/cairo/test/reference/create-from-png.alpha.ref.png b/io2d/src/3rd-party/cairo/test/reference/create-from-png.alpha.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/create-from-png.alpha.ref.png rename to io2d/src/3rd-party/cairo/test/reference/create-from-png.alpha.ref.png diff --git a/3rd-party/cairo/test/reference/create-from-png.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/create-from-png.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/create-from-png.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/create-from-png.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/create-from-png.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/create-from-png.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/create-from-png.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/create-from-png.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/create-from-png.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/create-from-png.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/create-from-png.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/create-from-png.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/create-from-png.gray-alpha.ref.png b/io2d/src/3rd-party/cairo/test/reference/create-from-png.gray-alpha.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/create-from-png.gray-alpha.ref.png rename to io2d/src/3rd-party/cairo/test/reference/create-from-png.gray-alpha.ref.png diff --git a/3rd-party/cairo/test/reference/create-from-png.gray.ref.png b/io2d/src/3rd-party/cairo/test/reference/create-from-png.gray.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/create-from-png.gray.ref.png rename to io2d/src/3rd-party/cairo/test/reference/create-from-png.gray.ref.png diff --git a/3rd-party/cairo/test/reference/create-from-png.indexed-alpha.ref.png b/io2d/src/3rd-party/cairo/test/reference/create-from-png.indexed-alpha.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/create-from-png.indexed-alpha.ref.png rename to io2d/src/3rd-party/cairo/test/reference/create-from-png.indexed-alpha.ref.png diff --git a/3rd-party/cairo/test/reference/create-from-png.indexed.ref.png b/io2d/src/3rd-party/cairo/test/reference/create-from-png.indexed.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/create-from-png.indexed.ref.png rename to io2d/src/3rd-party/cairo/test/reference/create-from-png.indexed.ref.png diff --git a/3rd-party/cairo/test/reference/create-from-png.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/create-from-png.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/create-from-png.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/create-from-png.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/create-from-png.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/create-from-png.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/create-from-png.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/create-from-png.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/create-from-png.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/create-from-png.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/create-from-png.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/create-from-png.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/create-from-png.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/create-from-png.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/create-from-png.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/create-from-png.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/create-from-png.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/create-from-png.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/create-from-png.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/create-from-png.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/culled-glyphs.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/culled-glyphs.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/culled-glyphs.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/culled-glyphs.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/culled-glyphs.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/culled-glyphs.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/culled-glyphs.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/culled-glyphs.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/culled-glyphs.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/culled-glyphs.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/culled-glyphs.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/culled-glyphs.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/culled-glyphs.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/culled-glyphs.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/culled-glyphs.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/culled-glyphs.image16.ref.png diff --git a/3rd-party/cairo/test/reference/culled-glyphs.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/culled-glyphs.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/culled-glyphs.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/culled-glyphs.ps.ref.png diff --git a/3rd-party/cairo/test/reference/culled-glyphs.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/culled-glyphs.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/culled-glyphs.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/culled-glyphs.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/culled-glyphs.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/culled-glyphs.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/culled-glyphs.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/culled-glyphs.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/curve-to-as-line-to.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/curve-to-as-line-to.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/curve-to-as-line-to.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/curve-to-as-line-to.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/curve-to-as-line-to.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/curve-to-as-line-to.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/curve-to-as-line-to.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/curve-to-as-line-to.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/curve-to-as-line-to.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/curve-to-as-line-to.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/curve-to-as-line-to.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/curve-to-as-line-to.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/curve-to-as-line-to.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/curve-to-as-line-to.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/curve-to-as-line-to.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/curve-to-as-line-to.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/curve-to-as-line-to.ps.xfail.png b/io2d/src/3rd-party/cairo/test/reference/curve-to-as-line-to.ps.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/curve-to-as-line-to.ps.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/curve-to-as-line-to.ps.xfail.png diff --git a/3rd-party/cairo/test/reference/curve-to-as-line-to.ref.png b/io2d/src/3rd-party/cairo/test/reference/curve-to-as-line-to.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/curve-to-as-line-to.ref.png rename to io2d/src/3rd-party/cairo/test/reference/curve-to-as-line-to.ref.png diff --git a/3rd-party/cairo/test/reference/curve-to-as-line-to.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/curve-to-as-line-to.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/curve-to-as-line-to.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/curve-to-as-line-to.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/curve-to-as-line-to.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/curve-to-as-line-to.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/curve-to-as-line-to.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/curve-to-as-line-to.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-caps-joins.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-caps-joins.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-caps-joins.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-caps-joins.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-caps-joins.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-caps-joins.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.image16.ref.png diff --git a/3rd-party/cairo/test/reference/dash-caps-joins.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-caps-joins.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-caps-joins.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-caps-joins.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-caps-joins.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-caps-joins.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.ps.ref.png diff --git a/3rd-party/cairo/test/reference/dash-caps-joins.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-caps-joins.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/dash-caps-joins.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-caps-joins.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.ref.png diff --git a/3rd-party/cairo/test/reference/dash-caps-joins.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-caps-joins.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-caps-joins.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-caps-joins.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-caps-joins.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-curve.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-curve.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-curve.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-curve.image16.ref.png diff --git a/3rd-party/cairo/test/reference/dash-curve.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-curve.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-curve.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-curve.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-curve.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-curve.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-curve.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-curve.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-curve.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-curve.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-curve.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-curve.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/dash-curve.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-curve.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-curve.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-curve.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/dash-curve.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/dash-curve.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-curve.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/dash-curve.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/dash-curve.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-curve.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-curve.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-curve.ref.png diff --git a/3rd-party/cairo/test/reference/dash-curve.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-curve.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-curve.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-curve.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-curve.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-curve.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-curve.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-curve.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-infinite-loop.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-infinite-loop.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-infinite-loop.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-infinite-loop.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-infinite-loop.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-infinite-loop.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-infinite-loop.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-infinite-loop.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-infinite-loop.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-infinite-loop.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-infinite-loop.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-infinite-loop.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-infinite-loop.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-infinite-loop.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-infinite-loop.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-infinite-loop.ps.ref.png diff --git a/3rd-party/cairo/test/reference/dash-infinite-loop.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-infinite-loop.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-infinite-loop.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-infinite-loop.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-infinite-loop.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-infinite-loop.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-infinite-loop.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-infinite-loop.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-infinite-loop.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-infinite-loop.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-infinite-loop.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-infinite-loop.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-no-dash.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-no-dash.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-no-dash.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-no-dash.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-no-dash.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-no-dash.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-no-dash.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-no-dash.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-no-dash.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-no-dash.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-no-dash.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-no-dash.ref.png diff --git a/3rd-party/cairo/test/reference/dash-offset-negative.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-offset-negative.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-offset-negative.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-offset-negative.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-offset-negative.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-offset-negative.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-offset-negative.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-offset-negative.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-offset-negative.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-offset-negative.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-offset-negative.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-offset-negative.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-offset-negative.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-offset-negative.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-offset-negative.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-offset-negative.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/dash-offset-negative.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-offset-negative.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-offset-negative.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-offset-negative.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-offset-negative.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-offset-negative.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-offset-negative.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-offset-negative.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-offset-negative.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-offset-negative.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-offset-negative.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-offset-negative.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-offset.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-offset.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-offset.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-offset.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-offset.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-offset.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-offset.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-offset.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-offset.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-offset.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-offset.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-offset.ref.png diff --git a/3rd-party/cairo/test/reference/dash-scale.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-scale.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-scale.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-scale.image16.ref.png diff --git a/3rd-party/cairo/test/reference/dash-scale.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-scale.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-scale.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-scale.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-scale.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-scale.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-scale.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-scale.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-scale.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-scale.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-scale.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-scale.ps.ref.png diff --git a/3rd-party/cairo/test/reference/dash-scale.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-scale.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-scale.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-scale.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/dash-scale.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-scale.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-scale.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-scale.ref.png diff --git a/3rd-party/cairo/test/reference/dash-scale.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-scale.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-scale.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-scale.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-scale.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-scale.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-scale.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-scale.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-state.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-state.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-state.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-state.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-state.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-state.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-state.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-state.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-state.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-state.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-state.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-state.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-state.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-state.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-state.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-state.image16.ref.png diff --git a/3rd-party/cairo/test/reference/dash-state.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-state.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-state.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-state.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/dash-state.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-state.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-state.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-state.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/dash-state.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/dash-state.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-state.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/dash-state.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/dash-state.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-state.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-state.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-state.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-state.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-state.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-state.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-state.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-state.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-state.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-state.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-state.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-zero-length.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-zero-length.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-zero-length.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-zero-length.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-zero-length.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-zero-length.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-zero-length.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-zero-length.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-zero-length.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-zero-length.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-zero-length.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-zero-length.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-zero-length.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-zero-length.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-zero-length.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-zero-length.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-zero-length.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-zero-length.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-zero-length.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-zero-length.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/dash-zero-length.ps2.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-zero-length.ps2.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-zero-length.ps2.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-zero-length.ps2.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-zero-length.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-zero-length.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-zero-length.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-zero-length.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/dash-zero-length.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-zero-length.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-zero-length.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-zero-length.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-zero-length.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-zero-length.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-zero-length.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-zero-length.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/dash-zero-length.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-zero-length.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-zero-length.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-zero-length.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/dash-zero-length.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/dash-zero-length.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/dash-zero-length.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/dash-zero-length.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-arc.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-arc.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-arc.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-arc.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-arc.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-arc.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-arc.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-arc.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-arc.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-arc.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-arc.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-arc.image16.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-arc.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-arc.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-arc.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-arc.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-arc.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-arc.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-arc.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-arc.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-arc.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-arc.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-arc.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-arc.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-arc.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-arc.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-arc.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-arc.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-arc.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-arc.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-arc.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-arc.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-arc.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-arc.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-arc.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-arc.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-arc.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-arc.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-arc.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-arc.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-arc.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-arc.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-arc.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-arc.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-arcs.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-arcs.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-arcs.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-arcs.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-arcs.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-arcs.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-arcs.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-arcs.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-arcs.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-arcs.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-arcs.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-arcs.image16.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-arcs.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-arcs.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-arcs.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-arcs.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-curve-to.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-curve-to.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-curve-to.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-curve-to.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-curve-to.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-curve-to.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.image16.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-curve-to.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-curve-to.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-curve-to.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-curve-to.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-curve-to.ps.xfail.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.ps.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-curve-to.ps.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.ps.xfail.png diff --git a/3rd-party/cairo/test/reference/degenerate-curve-to.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-curve-to.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-curve-to.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-curve-to.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-curve-to.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-curve-to.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-curve-to.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-curve-to.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-curve-to.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-dash.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-dash.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-dash.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-dash.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-dash.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-dash.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-dash.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-dash.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-dash.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-dash.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-dash.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-dash.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-dash.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-dash.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-dash.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-dash.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-dash.ps.xfail.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-dash.ps.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-dash.ps.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-dash.ps.xfail.png diff --git a/3rd-party/cairo/test/reference/degenerate-dash.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-dash.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-dash.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-dash.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/degenerate-dash.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-dash.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-dash.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-dash.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-dash.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-dash.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-dash.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-dash.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-dash.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-dash.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-dash.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-dash.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-linear-gradient.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-linear-gradient.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-linear-gradient.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-linear-gradient.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-linear-gradient.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-linear-gradient.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-linear-gradient.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-linear-gradient.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-linear-gradient.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-linear-gradient.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-linear-gradient.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-linear-gradient.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-linear-gradient.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-linear-gradient.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-linear-gradient.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-linear-gradient.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-path.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-path.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-path.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-path.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-path.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-path.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-path.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-path.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-path.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-path.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-path.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-path.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-path.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-path.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-path.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-path.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-path.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-path.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-path.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-path.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-path.ps.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-path.ps.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-path.ps.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-path.ps.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/degenerate-path.ps.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-path.ps.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-path.ps.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-path.ps.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/degenerate-path.quartz.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-path.quartz.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-path.quartz.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-path.quartz.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/degenerate-path.quartz.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-path.quartz.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-path.quartz.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-path.quartz.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/degenerate-path.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-path.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-path.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-path.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-path.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-path.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-path.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-path.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-path.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-path.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-path.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-path.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-pen.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-pen.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-pen.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-pen.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-pen.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-pen.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-pen.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-pen.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-pen.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-pen.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-pen.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-pen.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-pen.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-pen.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-pen.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-pen.image16.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-pen.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-pen.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-pen.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-pen.ps.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-pen.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-pen.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-pen.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-pen.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-pen.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-pen.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-pen.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-pen.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-pen.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-pen.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-pen.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-pen.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-radial-gradient.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-radial-gradient.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-radial-gradient.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-radial-gradient.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-radial-gradient.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-radial-gradient.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-radial-gradient.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-radial-gradient.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-radial-gradient.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-radial-gradient.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-radial-gradient.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-radial-gradient.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-rel-curve-to.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-rel-curve-to.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-rel-curve-to.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-rel-curve-to.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-rel-curve-to.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-rel-curve-to.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.image16.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-rel-curve-to.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-rel-curve-to.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-rel-curve-to.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-rel-curve-to.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.ps.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-rel-curve-to.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-rel-curve-to.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-rel-curve-to.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-rel-curve-to.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-rel-curve-to.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-rel-curve-to.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-rel-curve-to.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-rel-curve-to.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-rel-curve-to.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/degenerate-solid-dash.ref.png b/io2d/src/3rd-party/cairo/test/reference/degenerate-solid-dash.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/degenerate-solid-dash.ref.png rename to io2d/src/3rd-party/cairo/test/reference/degenerate-solid-dash.ref.png diff --git a/3rd-party/cairo/test/reference/device-offset-fractional.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/device-offset-fractional.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset-fractional.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset-fractional.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/device-offset-fractional.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/device-offset-fractional.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset-fractional.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset-fractional.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/device-offset-fractional.gl.xfail.png b/io2d/src/3rd-party/cairo/test/reference/device-offset-fractional.gl.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset-fractional.gl.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset-fractional.gl.xfail.png diff --git a/3rd-party/cairo/test/reference/device-offset-fractional.pdf.xfail.png b/io2d/src/3rd-party/cairo/test/reference/device-offset-fractional.pdf.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset-fractional.pdf.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset-fractional.pdf.xfail.png diff --git a/3rd-party/cairo/test/reference/device-offset-fractional.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/device-offset-fractional.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset-fractional.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset-fractional.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/device-offset-fractional.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/device-offset-fractional.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset-fractional.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset-fractional.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/device-offset-fractional.ref.png b/io2d/src/3rd-party/cairo/test/reference/device-offset-fractional.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset-fractional.ref.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset-fractional.ref.png diff --git a/3rd-party/cairo/test/reference/device-offset-positive.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/device-offset-positive.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset-positive.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset-positive.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/device-offset-positive.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/device-offset-positive.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset-positive.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset-positive.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/device-offset-positive.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/device-offset-positive.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset-positive.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset-positive.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/device-offset-positive.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/device-offset-positive.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset-positive.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset-positive.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/device-offset-scale.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/device-offset-scale.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset-scale.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset-scale.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/device-offset-scale.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/device-offset-scale.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset-scale.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset-scale.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/device-offset-scale.ref.png b/io2d/src/3rd-party/cairo/test/reference/device-offset-scale.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset-scale.ref.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset-scale.ref.png diff --git a/3rd-party/cairo/test/reference/device-offset-scale.svg.xfail.png b/io2d/src/3rd-party/cairo/test/reference/device-offset-scale.svg.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset-scale.svg.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset-scale.svg.xfail.png diff --git a/3rd-party/cairo/test/reference/device-offset.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/device-offset.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/device-offset.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/device-offset.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/device-offset.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/device-offset.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/device-offset.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/device-offset.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/device-offset.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/device-offset.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/drunkard-tails.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/drunkard-tails.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/drunkard-tails.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/drunkard-tails.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/drunkard-tails.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/drunkard-tails.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/drunkard-tails.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/drunkard-tails.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/drunkard-tails.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/drunkard-tails.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/drunkard-tails.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/drunkard-tails.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/drunkard-tails.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/drunkard-tails.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/drunkard-tails.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/drunkard-tails.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/drunkard-tails.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/drunkard-tails.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/drunkard-tails.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/drunkard-tails.ps.ref.png diff --git a/3rd-party/cairo/test/reference/drunkard-tails.ref.png b/io2d/src/3rd-party/cairo/test/reference/drunkard-tails.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/drunkard-tails.ref.png rename to io2d/src/3rd-party/cairo/test/reference/drunkard-tails.ref.png diff --git a/3rd-party/cairo/test/reference/drunkard-tails.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/drunkard-tails.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/drunkard-tails.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/drunkard-tails.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/drunkard-tails.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/drunkard-tails.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/drunkard-tails.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/drunkard-tails.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extend-pad-border.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad-border.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad-border.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad-border.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extend-pad-border.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad-border.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad-border.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad-border.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extend-pad-border.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad-border.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad-border.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad-border.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extend-pad-border.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad-border.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad-border.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad-border.image16.ref.png diff --git a/3rd-party/cairo/test/reference/extend-pad-border.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad-border.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad-border.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad-border.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/extend-pad-border.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad-border.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad-border.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad-border.ps.ref.png diff --git a/3rd-party/cairo/test/reference/extend-pad-border.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad-border.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad-border.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad-border.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/extend-pad-border.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad-border.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad-border.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad-border.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extend-pad-border.svg.xfail.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad-border.svg.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad-border.svg.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad-border.svg.xfail.png diff --git a/3rd-party/cairo/test/reference/extend-pad-similar.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad-similar.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad-similar.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad-similar.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extend-pad-similar.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad-similar.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad-similar.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad-similar.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extend-pad-similar.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad-similar.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad-similar.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad-similar.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/extend-pad-similar.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad-similar.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad-similar.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad-similar.ref.png diff --git a/3rd-party/cairo/test/reference/extend-pad-similar.svg.xfail.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad-similar.svg.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad-similar.svg.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad-similar.svg.xfail.png diff --git a/3rd-party/cairo/test/reference/extend-pad.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extend-pad.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extend-pad.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad.ps.ref.png diff --git a/3rd-party/cairo/test/reference/extend-pad.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/extend-pad.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad.ref.png diff --git a/3rd-party/cairo/test/reference/extend-pad.svg.xfail.png b/io2d/src/3rd-party/cairo/test/reference/extend-pad.svg.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-pad.svg.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/extend-pad.svg.xfail.png diff --git a/3rd-party/cairo/test/reference/extend-reflect-similar.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-reflect-similar.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-reflect-similar.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-reflect-similar.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extend-reflect-similar.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-reflect-similar.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-reflect-similar.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-reflect-similar.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extend-reflect-similar.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-reflect-similar.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-reflect-similar.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-reflect-similar.image16.ref.png diff --git a/3rd-party/cairo/test/reference/extend-reflect-similar.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-reflect-similar.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-reflect-similar.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-reflect-similar.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/extend-reflect-similar.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-reflect-similar.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-reflect-similar.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-reflect-similar.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/extend-reflect-similar.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-reflect-similar.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-reflect-similar.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-reflect-similar.ref.png diff --git a/3rd-party/cairo/test/reference/extend-reflect.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-reflect.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-reflect.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-reflect.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extend-reflect.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-reflect.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-reflect.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-reflect.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extend-reflect.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-reflect.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-reflect.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-reflect.image16.ref.png diff --git a/3rd-party/cairo/test/reference/extend-reflect.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-reflect.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-reflect.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-reflect.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/extend-reflect.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-reflect.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-reflect.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-reflect.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/extend-reflect.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-reflect.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-reflect.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-reflect.ref.png diff --git a/3rd-party/cairo/test/reference/extend-repeat-similar.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-repeat-similar.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-repeat-similar.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-repeat-similar.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extend-repeat-similar.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-repeat-similar.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-repeat-similar.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-repeat-similar.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extend-repeat-similar.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-repeat-similar.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-repeat-similar.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-repeat-similar.image16.ref.png diff --git a/3rd-party/cairo/test/reference/extend-repeat-similar.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-repeat-similar.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-repeat-similar.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-repeat-similar.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/extend-repeat-similar.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-repeat-similar.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-repeat-similar.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-repeat-similar.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/extend-repeat-similar.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-repeat-similar.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-repeat-similar.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-repeat-similar.ref.png diff --git a/3rd-party/cairo/test/reference/extend-repeat.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-repeat.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-repeat.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-repeat.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extend-repeat.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-repeat.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-repeat.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-repeat.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extend-repeat.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-repeat.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-repeat.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-repeat.image16.ref.png diff --git a/3rd-party/cairo/test/reference/extend-repeat.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-repeat.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-repeat.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-repeat.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/extend-repeat.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-repeat.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-repeat.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-repeat.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/extend-repeat.ref.png b/io2d/src/3rd-party/cairo/test/reference/extend-repeat.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extend-repeat.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extend-repeat.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-alpha-mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha-mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-alpha-mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha-mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-alpha-mask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha-mask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-alpha-mask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha-mask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-alpha-mask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha-mask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-alpha-mask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha-mask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-alpha-mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha-mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-alpha-mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha-mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-alpha.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-alpha.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-alpha.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-alpha.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.image16.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-alpha.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-alpha.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-alpha.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-alpha.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-alpha.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-alpha.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-alpha.svg12.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.svg12.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-alpha.svg12.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.svg12.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/extended-blend-alpha.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-alpha.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-alpha.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/extended-blend-mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-mask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-mask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-mask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-mask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-mask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-mask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-mask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-mask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-solid-alpha.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-solid-alpha.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-solid-alpha.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-solid-alpha.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-solid-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-solid-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-solid-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-solid-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-solid-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-solid-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-solid-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-solid-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-solid-alpha.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-solid-alpha.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-solid-alpha.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-solid-alpha.image16.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-solid-alpha.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-solid-alpha.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-solid-alpha.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-solid-alpha.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-solid.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-solid.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-solid.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-solid.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-solid.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-solid.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-solid.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-solid.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-solid.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-solid.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-solid.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-solid.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-solid.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-solid.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-solid.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-solid.image16.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend-solid.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend-solid.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend-solid.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend-solid.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend.image16.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/extended-blend.svg12.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend.svg12.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend.svg12.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend.svg12.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/extended-blend.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/extended-blend.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/extended-blend.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/extended-blend.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi144x144.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi144x144.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi144x144.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi144x144.ps.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi144x144.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi144x144.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi144x144.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi144x144.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi144x72.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi144x72.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi144x72.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi144x72.ps.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi144x72.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi144x72.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi144x72.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi144x72.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.ps.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi288x288.svg.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi288x72.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi288x72.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi288x72.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi288x72.ps.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi288x72.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi288x72.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi288x72.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi288x72.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.ps.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi576x576.svg.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi576x72.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi576x72.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi576x72.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi576x72.ps.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi576x72.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi576x72.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi576x72.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi576x72.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi72x144.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi72x144.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi72x144.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi72x144.ps.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi72x144.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi72x144.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi72x144.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi72x144.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi72x288.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi72x288.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi72x288.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi72x288.ps.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi72x288.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi72x288.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi72x288.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi72x288.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi72x576.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi72x576.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi72x576.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi72x576.ps.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi72x576.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi72x576.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi72x576.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi72x576.ref.png diff --git a/3rd-party/cairo/test/reference/fallback-resolution.ppi72x72.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi72x72.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback-resolution.ppi72x72.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback-resolution.ppi72x72.ref.png diff --git a/3rd-party/cairo/test/reference/fallback.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fallback.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fallback.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fallback.image16.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback.image16.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback.image16.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback.image16.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fallback.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fallback.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fallback.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fallback.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fallback.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fallback.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fallback.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fallback.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha-pattern.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha-pattern.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha-pattern.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha-pattern.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha-pattern.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha-pattern.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha-pattern.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha-pattern.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.image16.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha-pattern.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha-pattern.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha-pattern.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha-pattern.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha-pattern.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha-pattern.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha-pattern.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha-pattern.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha-pattern.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha-pattern.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha-pattern.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha-pattern.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha-pattern.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha.image16.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha.ps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha.ps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha.ps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha.ps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-alpha.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-alpha.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-alpha.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-alpha.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.image16.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.svg12.xfail.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.svg12.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.svg12.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.svg12.xfail.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha-add.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke-alpha.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke-alpha.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke-alpha.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke-alpha.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha.image16.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke-alpha.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke-alpha.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke-alpha.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke-alpha.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke-alpha.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke-alpha.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke-alpha.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.image16.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke.ps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.ps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke.ps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.ps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke.ps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.ps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke.ps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.ps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-and-stroke.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-and-stroke.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-and-stroke.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-degenerate-sort-order.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-degenerate-sort-order.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-degenerate-sort-order.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-degenerate-sort-order.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-degenerate-sort-order.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-degenerate-sort-order.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-degenerate-sort-order.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-degenerate-sort-order.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.image16.ref.png diff --git a/3rd-party/cairo/test/reference/fill-degenerate-sort-order.ps.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.ps.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-degenerate-sort-order.ps.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.ps.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/fill-degenerate-sort-order.ps.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.ps.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-degenerate-sort-order.ps.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.ps.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/fill-degenerate-sort-order.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-degenerate-sort-order.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-degenerate-sort-order.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-degenerate-sort-order.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-degenerate-sort-order.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-degenerate-sort-order.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-degenerate-sort-order.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-degenerate-sort-order.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-degenerate-sort-order.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-degenerate-sort-order.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-degenerate-sort-order.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-disjoint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-disjoint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-disjoint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-disjoint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-disjoint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-disjoint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-disjoint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-disjoint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-disjoint.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-disjoint.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-disjoint.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-disjoint.ref.png diff --git a/3rd-party/cairo/test/reference/fill-empty.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-empty.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-empty.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-empty.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-empty.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-empty.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-empty.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-empty.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-empty.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-empty.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-empty.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-empty.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-empty.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-empty.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-empty.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-empty.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-empty.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/fill-empty.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-empty.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/fill-empty.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/fill-image.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-image.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-image.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-image.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-image.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-image.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-image.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-image.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-image.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-image.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-image.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-image.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-image.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-image.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-image.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-image.image16.ref.png diff --git a/3rd-party/cairo/test/reference/fill-image.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-image.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-image.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-image.ps.ref.png diff --git a/3rd-party/cairo/test/reference/fill-image.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-image.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-image.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-image.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/fill-image.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-image.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-image.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-image.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-image.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-image.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-image.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-image.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-image.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-image.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-image.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-image.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-missed-stop.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-missed-stop.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-missed-stop.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-missed-stop.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-missed-stop.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-missed-stop.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-missed-stop.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-missed-stop.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-missed-stop.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-missed-stop.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-missed-stop.ps2.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.ps2.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-missed-stop.ps2.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.ps2.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-missed-stop.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-missed-stop.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-missed-stop.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-missed-stop.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-missed-stop.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-missed-stop.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-missed-stop.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-missed-stop.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-missed-stop.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-missed-stop.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-missed-stop.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-rule.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-rule.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-rule.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-rule.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-rule.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-rule.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-rule.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-rule.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-rule.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-rule.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-rule.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-rule.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-rule.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-rule.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-rule.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-rule.image16.ref.png diff --git a/3rd-party/cairo/test/reference/fill-rule.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-rule.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-rule.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-rule.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-rule.ps2.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-rule.ps2.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-rule.ps2.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-rule.ps2.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-rule.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-rule.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-rule.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-rule.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-rule.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-rule.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-rule.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-rule.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-rule.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-rule.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-rule.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-rule.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-rule.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-rule.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-rule.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-rule.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-rule.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-rule.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-rule.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-rule.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-rule.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-rule.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-rule.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-rule.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-rule.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-rule.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-rule.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-rule.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-xlib-fallback.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-xlib-fallback.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-xlib-fallback.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-xlib-fallback.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-xlib-window.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-xlib-window.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-xlib-window.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-xlib-window.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/fill-xlib.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-xlib.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-xlib.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-xlib.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/fill-xlib.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/fill-xlib.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/fill-xlib.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/fill-xlib.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/filter-bilinear-extents.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-bilinear-extents.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/filter-bilinear-extents.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-bilinear-extents.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/filter-bilinear-extents.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-bilinear-extents.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/filter-bilinear-extents.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-bilinear-extents.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.image16.ref.png diff --git a/3rd-party/cairo/test/reference/filter-bilinear-extents.pdf.xfail.png b/io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.pdf.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-bilinear-extents.pdf.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.pdf.xfail.png diff --git a/3rd-party/cairo/test/reference/filter-bilinear-extents.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-bilinear-extents.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/filter-bilinear-extents.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-bilinear-extents.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/filter-bilinear-extents.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-bilinear-extents.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/filter-bilinear-extents.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-bilinear-extents.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/filter-bilinear-extents.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/filter-nearest-offset.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/filter-nearest-offset.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-nearest-offset.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/filter-nearest-offset.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/filter-nearest-offset.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/filter-nearest-offset.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-nearest-offset.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/filter-nearest-offset.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/filter-nearest-offset.gl.xfail.png b/io2d/src/3rd-party/cairo/test/reference/filter-nearest-offset.gl.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-nearest-offset.gl.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/filter-nearest-offset.gl.xfail.png diff --git a/3rd-party/cairo/test/reference/filter-nearest-offset.pdf.xfail.png b/io2d/src/3rd-party/cairo/test/reference/filter-nearest-offset.pdf.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-nearest-offset.pdf.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/filter-nearest-offset.pdf.xfail.png diff --git a/3rd-party/cairo/test/reference/filter-nearest-offset.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/filter-nearest-offset.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-nearest-offset.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/filter-nearest-offset.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/filter-nearest-offset.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/filter-nearest-offset.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-nearest-offset.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/filter-nearest-offset.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/filter-nearest-offset.ref.png b/io2d/src/3rd-party/cairo/test/reference/filter-nearest-offset.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-nearest-offset.ref.png rename to io2d/src/3rd-party/cairo/test/reference/filter-nearest-offset.ref.png diff --git a/3rd-party/cairo/test/reference/filter-nearest-offset.svg.xfail.png b/io2d/src/3rd-party/cairo/test/reference/filter-nearest-offset.svg.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-nearest-offset.svg.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/filter-nearest-offset.svg.xfail.png diff --git a/3rd-party/cairo/test/reference/filter-nearest-transformed.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/filter-nearest-transformed.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-nearest-transformed.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/filter-nearest-transformed.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/filter-nearest-transformed.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/filter-nearest-transformed.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-nearest-transformed.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/filter-nearest-transformed.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/filter-nearest-transformed.gl.xfail.png b/io2d/src/3rd-party/cairo/test/reference/filter-nearest-transformed.gl.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-nearest-transformed.gl.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/filter-nearest-transformed.gl.xfail.png diff --git a/3rd-party/cairo/test/reference/filter-nearest-transformed.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/filter-nearest-transformed.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-nearest-transformed.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/filter-nearest-transformed.image16.ref.png diff --git a/3rd-party/cairo/test/reference/filter-nearest-transformed.pdf.xfail.png b/io2d/src/3rd-party/cairo/test/reference/filter-nearest-transformed.pdf.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-nearest-transformed.pdf.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/filter-nearest-transformed.pdf.xfail.png diff --git a/3rd-party/cairo/test/reference/filter-nearest-transformed.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/filter-nearest-transformed.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-nearest-transformed.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/filter-nearest-transformed.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/filter-nearest-transformed.ref.png b/io2d/src/3rd-party/cairo/test/reference/filter-nearest-transformed.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-nearest-transformed.ref.png rename to io2d/src/3rd-party/cairo/test/reference/filter-nearest-transformed.ref.png diff --git a/3rd-party/cairo/test/reference/filter-nearest-transformed.svg.xfail.png b/io2d/src/3rd-party/cairo/test/reference/filter-nearest-transformed.svg.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/filter-nearest-transformed.svg.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/filter-nearest-transformed.svg.xfail.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.gl.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.gl.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.gl.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.gl.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.image16.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps2.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.svg12.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.svg12.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.svg12.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.svg12.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.svg12.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.svg12.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.svg12.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.svg12.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/finer-grained-fallbacks.xlib-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.xlib-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/finer-grained-fallbacks.xlib-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/finer-grained-fallbacks.xlib-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/font-matrix-translation.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/font-matrix-translation.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/font-matrix-translation.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/font-matrix-translation.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/font-matrix-translation.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/font-matrix-translation.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/font-matrix-translation.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/font-matrix-translation.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.image16.ref.png diff --git a/3rd-party/cairo/test/reference/font-matrix-translation.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/font-matrix-translation.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/font-matrix-translation.ps2.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.ps2.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/font-matrix-translation.ps2.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.ps2.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/font-matrix-translation.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/font-matrix-translation.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/font-matrix-translation.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/font-matrix-translation.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/font-matrix-translation.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/font-matrix-translation.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/font-matrix-translation.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/font-matrix-translation.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/font-matrix-translation.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/font-matrix-translation.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.svg.ref.png diff --git a/3rd-party/cairo/test/reference/font-matrix-translation.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/font-matrix-translation.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/font-matrix-translation.traps.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.image16.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.svg.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-positioning.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-positioning.traps.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-table.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-table.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-table.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-table.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-table.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-table.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-table.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-table.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.image16.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-table.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-table.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-table.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-table.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-table.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-table.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-table.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-table.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-table.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-table.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.svg.ref.png diff --git a/3rd-party/cairo/test/reference/ft-show-glyphs-table.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-show-glyphs-table.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-show-glyphs-table.traps.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-antialias-none.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-antialias-none.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-antialias-none.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-antialias-none.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-antialias-none.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-antialias-none.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-antialias-none.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-antialias-none.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-antialias-none.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-antialias-none.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-antialias-none.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-antialias-none.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-antialias-none.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-antialias-none.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-antialias-none.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-antialias-none.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-antialias-none.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-antialias-none.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-antialias-none.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-antialias-none.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.image16.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.ps.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.svg.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.xfail.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type1.xfail.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.image16.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.ps.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.svg.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ft-text-vertical-layout-type3.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/get-group-target.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/get-group-target.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/get-group-target.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/get-group-target.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/get-group-target.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/get-group-target.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/get-group-target.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/get-group-target.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/get-group-target.ref.png b/io2d/src/3rd-party/cairo/test/reference/get-group-target.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/get-group-target.ref.png rename to io2d/src/3rd-party/cairo/test/reference/get-group-target.ref.png diff --git a/3rd-party/cairo/test/reference/gl-surface-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/gl-surface-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gl-surface-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gl-surface-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/gl-surface-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/gl-surface-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gl-surface-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gl-surface-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/gl-surface-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/gl-surface-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gl-surface-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gl-surface-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/gl-surface-source.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/gl-surface-source.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gl-surface-source.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gl-surface-source.image16.ref.png diff --git a/3rd-party/cairo/test/reference/gl-surface-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/gl-surface-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gl-surface-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gl-surface-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/glyph-cache-pressure.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/glyph-cache-pressure.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/glyph-cache-pressure.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/glyph-cache-pressure.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/glyph-cache-pressure.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/glyph-cache-pressure.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/glyph-cache-pressure.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/glyph-cache-pressure.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.image16.ref.png diff --git a/3rd-party/cairo/test/reference/glyph-cache-pressure.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/glyph-cache-pressure.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/glyph-cache-pressure.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/glyph-cache-pressure.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/glyph-cache-pressure.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/glyph-cache-pressure.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/glyph-cache-pressure.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/glyph-cache-pressure.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/glyph-cache-pressure.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/glyph-cache-pressure.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/glyph-cache-pressure.traps.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-alpha.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-alpha.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-alpha.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-alpha.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-alpha.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-alpha.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-alpha.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-alpha.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-alpha.ps2.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-alpha.ps2.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-alpha.ps2.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-alpha.ps2.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-alpha.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-alpha.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-alpha.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-alpha.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-alpha.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-alpha.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-alpha.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-alpha.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-alpha.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-alpha.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-alpha.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-alpha.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-constant-alpha.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-constant-alpha.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-constant-alpha.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-constant-alpha.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-constant-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-constant-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-constant-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-constant-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-constant-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-constant-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-constant-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-constant-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-constant-alpha.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-constant-alpha.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-constant-alpha.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-constant-alpha.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-constant-alpha.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-constant-alpha.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-constant-alpha.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-constant-alpha.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-constant-alpha.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-constant-alpha.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-constant-alpha.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-constant-alpha.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-constant-alpha.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-constant-alpha.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-constant-alpha.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-constant-alpha.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-zero-stops-mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-zero-stops-mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-zero-stops-mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-zero-stops-mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-zero-stops-mask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-zero-stops-mask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-zero-stops-mask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-zero-stops-mask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-zero-stops-mask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-zero-stops-mask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-zero-stops-mask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-zero-stops-mask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-zero-stops-mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-zero-stops-mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-zero-stops-mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-zero-stops-mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-zero-stops.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-zero-stops.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-zero-stops.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-zero-stops.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-zero-stops.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-zero-stops.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-zero-stops.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-zero-stops.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-zero-stops.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-zero-stops.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-zero-stops.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-zero-stops.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/gradient-zero-stops.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/gradient-zero-stops.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/gradient-zero-stops.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/gradient-zero-stops.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/group-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/group-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/group-clip.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-clip.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-clip.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-clip.image16.ref.png diff --git a/3rd-party/cairo/test/reference/group-clip.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-clip.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-clip.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-clip.ref.png diff --git a/3rd-party/cairo/test/reference/group-paint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-paint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-paint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-paint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/group-paint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-paint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-paint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-paint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/group-paint.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-paint.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-paint.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-paint.ref.png diff --git a/3rd-party/cairo/test/reference/group-unaligned.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-unaligned.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-unaligned.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-unaligned.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/group-unaligned.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-unaligned.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-unaligned.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-unaligned.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/group-unaligned.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-unaligned.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-unaligned.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-unaligned.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/group-unaligned.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-unaligned.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-unaligned.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-unaligned.image16.ref.png diff --git a/3rd-party/cairo/test/reference/group-unaligned.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-unaligned.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-unaligned.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-unaligned.ps.ref.png diff --git a/3rd-party/cairo/test/reference/group-unaligned.ps.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/group-unaligned.ps.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-unaligned.ps.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/group-unaligned.ps.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/group-unaligned.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-unaligned.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-unaligned.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-unaligned.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/group-unaligned.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-unaligned.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-unaligned.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-unaligned.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/group-unaligned.svg.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/group-unaligned.svg.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-unaligned.svg.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/group-unaligned.svg.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/group-unaligned.svg.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/group-unaligned.svg.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-unaligned.svg.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/group-unaligned.svg.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/group-unaligned.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-unaligned.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-unaligned.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-unaligned.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/group-unaligned.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-unaligned.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-unaligned.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-unaligned.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/group-unaligned.xlib-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/group-unaligned.xlib-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/group-unaligned.xlib-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/group-unaligned.xlib-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/halo-transform.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo-transform.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo-transform.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo-transform.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/halo-transform.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo-transform.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo-transform.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo-transform.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/halo-transform.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo-transform.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo-transform.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo-transform.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/halo-transform.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo-transform.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo-transform.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo-transform.image16.ref.png diff --git a/3rd-party/cairo/test/reference/halo-transform.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo-transform.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo-transform.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo-transform.ps.ref.png diff --git a/3rd-party/cairo/test/reference/halo-transform.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo-transform.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo-transform.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo-transform.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/halo-transform.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo-transform.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo-transform.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo-transform.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/halo-transform.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo-transform.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo-transform.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo-transform.traps.ref.png diff --git a/3rd-party/cairo/test/reference/halo.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/halo.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/halo.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo.image16.ref.png diff --git a/3rd-party/cairo/test/reference/halo.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/halo.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/halo.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo.ps.ref.png diff --git a/3rd-party/cairo/test/reference/halo.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/halo.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo.ref.png diff --git a/3rd-party/cairo/test/reference/halo.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/halo.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/halo.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/halo.traps.ref.png diff --git a/3rd-party/cairo/test/reference/hatchings.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/hatchings.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/hatchings.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/hatchings.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/hatchings.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/hatchings.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/hatchings.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/hatchings.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/hatchings.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/hatchings.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/hatchings.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/hatchings.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/hatchings.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/hatchings.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/hatchings.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/hatchings.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/hatchings.ref.png b/io2d/src/3rd-party/cairo/test/reference/hatchings.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/hatchings.ref.png rename to io2d/src/3rd-party/cairo/test/reference/hatchings.ref.png diff --git a/3rd-party/cairo/test/reference/hatchings.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/hatchings.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/hatchings.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/hatchings.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/hatchings.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/hatchings.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/hatchings.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/hatchings.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/horizontal-clip.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/horizontal-clip.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/horizontal-clip.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/horizontal-clip.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/horizontal-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/horizontal-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/horizontal-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/horizontal-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/horizontal-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/horizontal-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/horizontal-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/horizontal-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/horizontal-clip.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/horizontal-clip.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/horizontal-clip.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/horizontal-clip.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/huge-linear.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/huge-linear.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/huge-linear.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/huge-linear.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/huge-linear.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/huge-linear.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/huge-linear.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/huge-linear.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/huge-linear.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/huge-linear.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/huge-linear.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/huge-linear.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/huge-linear.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/huge-linear.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/huge-linear.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/huge-linear.image16.ref.png diff --git a/3rd-party/cairo/test/reference/huge-linear.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/huge-linear.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/huge-linear.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/huge-linear.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/huge-linear.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/huge-linear.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/huge-linear.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/huge-linear.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/huge-linear.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/huge-linear.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/huge-linear.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/huge-linear.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/huge-linear.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/huge-linear.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/huge-linear.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/huge-linear.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/huge-radial.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/huge-radial.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/huge-radial.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/huge-radial.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/huge-radial.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/huge-radial.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/huge-radial.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/huge-radial.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/huge-radial.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/huge-radial.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/huge-radial.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/huge-radial.image16.ref.png diff --git a/3rd-party/cairo/test/reference/huge-radial.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/huge-radial.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/huge-radial.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/huge-radial.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/huge-radial.pdf.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/huge-radial.pdf.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/huge-radial.pdf.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/huge-radial.pdf.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/huge-radial.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/huge-radial.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/huge-radial.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/huge-radial.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/huge-radial.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/huge-radial.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/huge-radial.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/huge-radial.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/huge-radial.ref.png b/io2d/src/3rd-party/cairo/test/reference/huge-radial.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/huge-radial.ref.png rename to io2d/src/3rd-party/cairo/test/reference/huge-radial.ref.png diff --git a/3rd-party/cairo/test/reference/image-bug-710072-aligned.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-bug-710072-aligned.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-bug-710072-aligned.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-bug-710072-aligned.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/image-bug-710072-aligned.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-bug-710072-aligned.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-bug-710072-aligned.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-bug-710072-aligned.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/image-bug-710072-aligned.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-bug-710072-aligned.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-bug-710072-aligned.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-bug-710072-aligned.ref.png diff --git a/3rd-party/cairo/test/reference/image-bug-710072-unaligned.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-bug-710072-unaligned.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-bug-710072-unaligned.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-bug-710072-unaligned.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/image-bug-710072-unaligned.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-bug-710072-unaligned.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-bug-710072-unaligned.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-bug-710072-unaligned.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/image-bug-710072-unaligned.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-bug-710072-unaligned.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-bug-710072-unaligned.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-bug-710072-unaligned.ref.png diff --git a/3rd-party/cairo/test/reference/image-bug-710072-unaligned.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-bug-710072-unaligned.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-bug-710072-unaligned.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-bug-710072-unaligned.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/image-bug-710072-unaligned.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-bug-710072-unaligned.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-bug-710072-unaligned.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-bug-710072-unaligned.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/image-bug-710072-unaligned.xlib-fallback.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-bug-710072-unaligned.xlib-fallback.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-bug-710072-unaligned.xlib-fallback.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-bug-710072-unaligned.xlib-fallback.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/image-bug-710072-unaligned.xlib-window.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-bug-710072-unaligned.xlib-window.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-bug-710072-unaligned.xlib-window.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-bug-710072-unaligned.xlib-window.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/image-surface-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-surface-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-surface-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-surface-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/image-surface-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-surface-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-surface-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-surface-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/image-surface-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-surface-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-surface-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-surface-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/image-surface-source.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-surface-source.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-surface-source.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-surface-source.image16.ref.png diff --git a/3rd-party/cairo/test/reference/image-surface-source.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-surface-source.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-surface-source.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-surface-source.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/image-surface-source.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-surface-source.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-surface-source.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-surface-source.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/image-surface-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/image-surface-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-surface-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/image-surface-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/image-surface-source.svg12.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/image-surface-source.svg12.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-surface-source.svg12.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/image-surface-source.svg12.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/image-surface-source.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/image-surface-source.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/image-surface-source.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/image-surface-source.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/implicit-close.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/implicit-close.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/implicit-close.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/implicit-close.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/implicit-close.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/implicit-close.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/implicit-close.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/implicit-close.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/implicit-close.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/implicit-close.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/implicit-close.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/implicit-close.ps.ref.png diff --git a/3rd-party/cairo/test/reference/implicit-close.ref.png b/io2d/src/3rd-party/cairo/test/reference/implicit-close.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/implicit-close.ref.png rename to io2d/src/3rd-party/cairo/test/reference/implicit-close.ref.png diff --git a/3rd-party/cairo/test/reference/implicit-close.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/implicit-close.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/implicit-close.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/implicit-close.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/implicit-close.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/implicit-close.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/implicit-close.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/implicit-close.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/infinite-join.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/infinite-join.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/infinite-join.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/infinite-join.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/infinite-join.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/infinite-join.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/infinite-join.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/infinite-join.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/infinite-join.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/infinite-join.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/infinite-join.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/infinite-join.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/infinite-join.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/infinite-join.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/infinite-join.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/infinite-join.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/infinite-join.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/infinite-join.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/infinite-join.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/infinite-join.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/infinite-join.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/infinite-join.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/infinite-join.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/infinite-join.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/infinite-join.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/infinite-join.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/infinite-join.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/infinite-join.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/infinite-join.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/infinite-join.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/infinite-join.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/infinite-join.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/inverse-text.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/inverse-text.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/inverse-text.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/inverse-text.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/inverse-text.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/inverse-text.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/inverse-text.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/inverse-text.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/inverse-text.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/inverse-text.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/inverse-text.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/inverse-text.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/inverse-text.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/inverse-text.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/inverse-text.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/inverse-text.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/inverse-text.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/inverse-text.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/inverse-text.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/inverse-text.traps.ref.png diff --git a/3rd-party/cairo/test/reference/inverted-clip.base.xfail.png b/io2d/src/3rd-party/cairo/test/reference/inverted-clip.base.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/inverted-clip.base.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/inverted-clip.base.xfail.png diff --git a/3rd-party/cairo/test/reference/inverted-clip.traps.xfail.png b/io2d/src/3rd-party/cairo/test/reference/inverted-clip.traps.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/inverted-clip.traps.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/inverted-clip.traps.xfail.png diff --git a/3rd-party/cairo/test/reference/inverted-clip.xfail.png b/io2d/src/3rd-party/cairo/test/reference/inverted-clip.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/inverted-clip.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/inverted-clip.xfail.png diff --git a/3rd-party/cairo/test/reference/joins-loop.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-loop.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-loop.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-loop.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/joins-loop.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-loop.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-loop.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-loop.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/joins-loop.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-loop.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-loop.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-loop.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/joins-loop.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-loop.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-loop.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-loop.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/joins-loop.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-loop.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-loop.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-loop.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/joins-loop.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-loop.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-loop.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-loop.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/joins-retrace.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-retrace.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-retrace.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-retrace.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/joins-retrace.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-retrace.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-retrace.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-retrace.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/joins-retrace.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-retrace.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-retrace.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-retrace.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/joins-retrace.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-retrace.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-retrace.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-retrace.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/joins-retrace.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-retrace.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-retrace.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-retrace.ref.png diff --git a/3rd-party/cairo/test/reference/joins-retrace.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-retrace.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-retrace.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-retrace.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/joins-retrace.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-retrace.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-retrace.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-retrace.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/joins-star.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-star.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-star.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-star.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/joins-star.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-star.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-star.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-star.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/joins-star.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-star.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-star.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-star.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/joins-star.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-star.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-star.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-star.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/joins-star.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-star.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-star.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-star.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/joins-star.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins-star.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins-star.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins-star.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/joins.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/joins.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/joins.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins.image16.ref.png diff --git a/3rd-party/cairo/test/reference/joins.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/joins.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/joins.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins.ps.ref.png diff --git a/3rd-party/cairo/test/reference/joins.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/joins.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins.ref.png diff --git a/3rd-party/cairo/test/reference/joins.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/joins.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/joins.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/joins.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/joins.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/large-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/large-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/large-clip.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-clip.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-clip.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-clip.ref.png diff --git a/3rd-party/cairo/test/reference/large-font.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-font.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-font.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-font.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/large-font.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-font.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-font.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-font.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/large-font.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-font.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-font.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-font.image16.ref.png diff --git a/3rd-party/cairo/test/reference/large-font.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-font.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-font.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-font.ref.png diff --git a/3rd-party/cairo/test/reference/large-source-roi.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-source-roi.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-source-roi.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-source-roi.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/large-source-roi.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-source-roi.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-source-roi.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-source-roi.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/large-source-roi.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-source-roi.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-source-roi.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-source-roi.ref.png diff --git a/3rd-party/cairo/test/reference/large-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/large-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/large-source.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-source.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-source.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-source.ref.png diff --git a/3rd-party/cairo/test/reference/large-twin-antialias-mixed.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-twin-antialias-mixed.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-twin-antialias-mixed.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-twin-antialias-mixed.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/large-twin-antialias-mixed.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-twin-antialias-mixed.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-twin-antialias-mixed.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-twin-antialias-mixed.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-twin-antialias-mixed.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/large-twin-antialias-mixed.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-twin-antialias-mixed.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-twin-antialias-mixed.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-twin-antialias-mixed.image16.ref.png diff --git a/3rd-party/cairo/test/reference/large-twin-antialias-mixed.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-twin-antialias-mixed.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-twin-antialias-mixed.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-twin-antialias-mixed.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-twin-antialias-mixed.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/large-twin-antialias-mixed.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dash.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dash.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dash.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dash.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dash.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dash.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dash.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dash.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dash.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dash.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dash.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dash.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dash.ps2.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dash.ps2.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dash.ps2.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dash.ps2.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dash.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dash.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dash.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dash.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dash.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dash.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dash.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dash.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dash.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dash.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dash.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dash.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dash.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dash.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dash.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dash.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-rectangle.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-rectangle.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-rectangle.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-rectangle.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-rectangle.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-rectangle.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.image16.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-rectangle.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-rectangle.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-rectangle.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-rectangle.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.ps.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-rectangle.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-rectangle.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-rectangle.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-rectangle.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-rectangle.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-rectangle.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-rectangle.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-rectangle.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-rectangle.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-stroke.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-stroke.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-stroke.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-stroke.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-stroke.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-stroke.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-stroke.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-stroke.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.image16.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-stroke.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-stroke.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.ps.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-stroke.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-stroke.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-stroke.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-stroke.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-stroke.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-stroke.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-dashed-stroke.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-dashed-stroke.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-dashed-stroke.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-polygon.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-polygon.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-polygon.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-polygon.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-polygon.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-polygon.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-polygon.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-polygon.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-polygon.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-polygon.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-polygon.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-polygon.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-polygon.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-polygon.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-polygon.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-polygon.image16.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-polygon.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-polygon.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-polygon.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-polygon.ps.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-polygon.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-polygon.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-polygon.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-polygon.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-polygon.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-polygon.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-polygon.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-polygon.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/leaky-polygon.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/leaky-polygon.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/leaky-polygon.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/leaky-polygon.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-dashed.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-dashed.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-dashed.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-flipped.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-flipped.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-flipped.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-flipped.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-flipped.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-flipped.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-flipped.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-flipped.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-flipped.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-flopped.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-flopped.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-flopped.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-flopped.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-flopped.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-flopped.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-flopped.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-flopped.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-flopped.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-offset.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-offset.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-offset.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-offset.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-offset.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-offset.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-offset.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-offset.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-offset.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-offset.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-offset.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-offset.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-rotated.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-rotated.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-rotated.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap-rotated.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap-rotated.traps.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-large-overlap.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-large-overlap.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-large-overlap.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-dashed.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-dashed.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-dashed.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-dashed.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-dashed.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-dashed.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-dashed.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-dashed.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-dashed.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-dashed.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-dashed.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-dashed.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-dashed.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-dashed.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-dashed.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-dashed.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-dashed.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-dashed.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-dashed.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-dashed.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-dashed.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-dashed.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-dashed.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-dashed.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-dashed.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-dashed.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-dashed.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-dashed.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-flipped.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-flipped.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-flipped.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-flipped.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-flipped.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-flipped.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-flipped.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-flipped.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-flipped.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-flipped.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-flipped.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-flipped.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-flopped.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-flopped.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-flopped.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-flopped.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-flopped.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-flopped.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-flopped.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-flopped.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-flopped.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-flopped.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-flopped.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-flopped.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-offset.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-offset.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-offset.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-offset.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-offset.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-offset.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-offset.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-offset.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-offset.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-offset.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-offset.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-offset.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-offset.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-offset.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-offset.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-offset.traps.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-rotated.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-rotated.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-rotated.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-rotated.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-rotated.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-rotated.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-rotated.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-rotated.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-rotated.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-rotated.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-rotated.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-rotated.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-rotated.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-rotated.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-rotated.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-rotated.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-rotated.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-rotated.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-rotated.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-rotated.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap-rotated.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap-rotated.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap-rotated.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap-rotated.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-overlap.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-overlap.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-overlap.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-overlap.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-scale.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-scale.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-scale.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-scale.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-scale.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-scale.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-scale.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-scale.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-scale.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-scale.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-scale.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-scale.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-scale.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-scale.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-scale.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-scale.image16.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-scale.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-scale.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-scale.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-scale.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-scale.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-scale.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-scale.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-scale.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-scale.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-scale.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-scale.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-scale.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-scale.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-scale.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-scale.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-scale.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-scale.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-scale.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-scale.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-scale.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-scale.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-scale.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-scale.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-scale.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-tolerance.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-tolerance.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-tolerance.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-tolerance.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-tolerance.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-tolerance.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-tolerance.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-tolerance.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-tolerance.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-tolerance.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-tolerance.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-tolerance.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-tolerance.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-tolerance.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-tolerance.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-tolerance.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-tolerance.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-tolerance.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-tolerance.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-tolerance.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width-tolerance.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width-tolerance.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width-tolerance.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width-tolerance.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/line-width.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/line-width.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/line-width.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/line-width.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/line-width.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-extend.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-extend.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-extend.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-extend.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-extend.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-extend.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-extend.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-extend.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-extend.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-extend.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-extend.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-extend.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-large.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-large.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-large.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-large.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-large.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-large.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-large.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-large.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-large.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-large.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-large.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-large.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-large.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-large.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-large.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-large.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-one-stop.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-one-stop.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-one-stop.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-one-stop.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-one-stop.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-one-stop.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-one-stop.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-one-stop.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-one-stop.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-one-stop.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-one-stop.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-one-stop.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-one-stop.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-one-stop.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-one-stop.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-one-stop.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-reflect.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-reflect.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-reflect.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-reflect.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-reflect.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-reflect.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-reflect.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-reflect.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.image16.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-reflect.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-reflect.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-reflect.pdf.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.pdf.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-reflect.pdf.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.pdf.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-reflect.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-reflect.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-reflect.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-reflect.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-reflect.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-reflect.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-reflect.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-subset.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-subset.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-subset.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-subset.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-subset.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-subset.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-subset.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-subset.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.image16.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-subset.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-subset.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-subset.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-subset.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-subset.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-subset.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-subset.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-subset.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient-subset.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient-subset.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient-subset.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient.image16.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-gradient.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-gradient.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-gradient.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-gradient.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-step-function.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-step-function.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-step-function.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-step-function.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-step-function.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-step-function.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-step-function.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-step-function.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-step-function.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-step-function.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-step-function.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-step-function.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-step-function.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-step-function.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-step-function.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-step-function.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-step-function.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-step-function.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-step-function.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-step-function.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-step-function.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-step-function.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-step-function.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-step-function.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-step-function.xfail.png b/io2d/src/3rd-party/cairo/test/reference/linear-step-function.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-step-function.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/linear-step-function.xfail.png diff --git a/3rd-party/cairo/test/reference/linear-uniform.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-uniform.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-uniform.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-uniform.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/linear-uniform.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-uniform.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-uniform.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-uniform.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/linear-uniform.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-uniform.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-uniform.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-uniform.image16.ref.png diff --git a/3rd-party/cairo/test/reference/linear-uniform.ref.png b/io2d/src/3rd-party/cairo/test/reference/linear-uniform.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/linear-uniform.ref.png rename to io2d/src/3rd-party/cairo/test/reference/linear-uniform.ref.png diff --git a/3rd-party/cairo/test/reference/long-dashed-lines.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/long-dashed-lines.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/long-dashed-lines.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/long-dashed-lines.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/long-dashed-lines.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/long-dashed-lines.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/long-dashed-lines.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/long-dashed-lines.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.image16.ref.png diff --git a/3rd-party/cairo/test/reference/long-dashed-lines.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/long-dashed-lines.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/long-dashed-lines.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/long-dashed-lines.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/long-dashed-lines.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/long-dashed-lines.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/long-dashed-lines.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/long-dashed-lines.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/long-dashed-lines.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/long-dashed-lines.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/long-dashed-lines.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/long-dashed-lines.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/long-dashed-lines.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/long-lines.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/long-lines.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/long-lines.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/long-lines.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/long-lines.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/long-lines.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/long-lines.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/long-lines.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/long-lines.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/long-lines.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/long-lines.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/long-lines.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/long-lines.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/long-lines.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/long-lines.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/long-lines.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/long-lines.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/long-lines.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/long-lines.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/long-lines.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/long-lines.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/long-lines.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/long-lines.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/long-lines.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/map-all-to-image.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-all-to-image.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-all-to-image.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-all-to-image.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/map-all-to-image.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-all-to-image.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-all-to-image.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-all-to-image.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/map-all-to-image.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-all-to-image.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-all-to-image.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-all-to-image.ref.png diff --git a/3rd-party/cairo/test/reference/map-all-to-xlib-fallback.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-all-to-xlib-fallback.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-all-to-xlib-fallback.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-all-to-xlib-fallback.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/map-all-to-xlib-window.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-all-to-xlib-window.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-all-to-xlib-window.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-all-to-xlib-window.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/map-all-to-xlib.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-all-to-xlib.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-all-to-xlib.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-all-to-xlib.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/map-all-to-xlib.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-all-to-xlib.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-all-to-xlib.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-all-to-xlib.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/map-bit-to-image.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-bit-to-image.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-bit-to-image.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-bit-to-image.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/map-bit-to-image.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-bit-to-image.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-bit-to-image.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-bit-to-image.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/map-bit-to-image.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-bit-to-image.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-bit-to-image.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-bit-to-image.ref.png diff --git a/3rd-party/cairo/test/reference/map-bit-to-xlib-fallback.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-bit-to-xlib-fallback.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-bit-to-xlib-fallback.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-bit-to-xlib-fallback.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/map-bit-to-xlib-window.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-bit-to-xlib-window.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-bit-to-xlib-window.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-bit-to-xlib-window.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/map-bit-to-xlib.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-bit-to-xlib.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-bit-to-xlib.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-bit-to-xlib.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/map-bit-to-xlib.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-bit-to-xlib.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-bit-to-xlib.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-bit-to-xlib.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/map-to-image-fill.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-to-image-fill.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-to-image-fill.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-to-image-fill.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/map-to-image-fill.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-to-image-fill.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-to-image-fill.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-to-image-fill.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/map-to-image-fill.ref.png b/io2d/src/3rd-party/cairo/test/reference/map-to-image-fill.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/map-to-image-fill.ref.png rename to io2d/src/3rd-party/cairo/test/reference/map-to-image-fill.ref.png diff --git a/3rd-party/cairo/test/reference/mask-alpha.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-alpha.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-alpha.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-alpha.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask-alpha.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-alpha.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-alpha.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-alpha.image16.ref.png diff --git a/3rd-party/cairo/test/reference/mask-alpha.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-alpha.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-alpha.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-alpha.ps.ref.png diff --git a/3rd-party/cairo/test/reference/mask-alpha.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-alpha.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-alpha.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-alpha.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask-alpha.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-alpha.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-alpha.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-alpha.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask-alpha.svg.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/mask-alpha.svg.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-alpha.svg.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/mask-alpha.svg.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/mask-alpha.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-alpha.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-alpha.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-alpha.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask-alpha.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-alpha.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-alpha.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-alpha.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask-ctm.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-ctm.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-ctm.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-ctm.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask-ctm.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-ctm.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-ctm.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-ctm.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask-ctm.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-ctm.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-ctm.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-ctm.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask-ctm.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-ctm.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-ctm.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-ctm.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask-glyphs.gl.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-glyphs.gl.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-glyphs.gl.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-glyphs.gl.ref.png diff --git a/3rd-party/cairo/test/reference/mask-glyphs.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-glyphs.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-glyphs.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-glyphs.image16.ref.png diff --git a/3rd-party/cairo/test/reference/mask-glyphs.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-glyphs.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-glyphs.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-glyphs.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/mask-glyphs.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-glyphs.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-glyphs.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-glyphs.ref.png diff --git a/3rd-party/cairo/test/reference/mask-glyphs.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-glyphs.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-glyphs.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-glyphs.svg.ref.png diff --git a/3rd-party/cairo/test/reference/mask-surface-ctm.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-surface-ctm.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-surface-ctm.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-surface-ctm.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask-surface-ctm.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-surface-ctm.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-surface-ctm.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-surface-ctm.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask-surface-ctm.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-surface-ctm.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-surface-ctm.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-surface-ctm.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask-surface-ctm.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-surface-ctm.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-surface-ctm.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-surface-ctm.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-image.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-image.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-image.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-image.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-image.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-image.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-image.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-image.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-image.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-image.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-image.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-image.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-image.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-image.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-image.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-image.image16.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-image.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-image.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-image.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-image.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-image.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-image.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-image.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-image.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-image.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-image.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-image.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-image.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-similar.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-similar.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-similar.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-similar.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-similar.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-similar.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-similar.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-similar.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.image16.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-similar.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-similar.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-similar.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-similar.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-similar.recording.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.recording.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-similar.recording.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.recording.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-similar.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-similar.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-similar.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-similar.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-similar.svg.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-xlib-fallback.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-xlib-fallback.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-xlib-fallback.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-xlib-fallback.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-xlib-window.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-xlib-window.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-xlib-window.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-xlib-window.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-xlib.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-xlib.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-xlib.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-xlib.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask-transformed-xlib.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask-transformed-xlib.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask-transformed-xlib.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask-transformed-xlib.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask.image16.ref.png diff --git a/3rd-party/cairo/test/reference/mask.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask.pdf.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask.pdf.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask.pdf.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask.pdf.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mask.svg.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/mask.svg.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask.svg.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/mask.svg.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/mask.svg.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/mask.svg.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask.svg.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/mask.svg.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/mask.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mask.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mask.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mask.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mask.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-accuracy.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-accuracy.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-accuracy.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-accuracy.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-accuracy.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-accuracy.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-accuracy.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-accuracy.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-accuracy.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-accuracy.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-accuracy.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-accuracy.image16.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-accuracy.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-accuracy.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-accuracy.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-accuracy.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-conical.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-conical.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-conical.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-conical.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-conical.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-conical.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-conical.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-conical.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-conical.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-conical.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-conical.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-conical.image16.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-conical.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-conical.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-conical.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-conical.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-control-points.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-control-points.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-control-points.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-control-points.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-control-points.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-control-points.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-control-points.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-control-points.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-control-points.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-control-points.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-control-points.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-control-points.image16.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-control-points.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-control-points.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-control-points.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-control-points.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-fold.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-fold.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-fold.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-fold.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-fold.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-fold.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-fold.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-fold.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-fold.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-fold.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-fold.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-fold.image16.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-fold.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-fold.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-fold.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-fold.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-overlap.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-overlap.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-overlap.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-overlap.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-overlap.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-overlap.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-overlap.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-overlap.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-overlap.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-overlap.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-overlap.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-overlap.image16.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-overlap.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-overlap.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-overlap.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-overlap.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-transformed.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-transformed.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-transformed.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-transformed.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-transformed.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-transformed.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-transformed.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-transformed.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-transformed.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-transformed.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-transformed.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-transformed.image16.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern-transformed.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern-transformed.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern-transformed.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern-transformed.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern.image16.ref.png diff --git a/3rd-party/cairo/test/reference/mesh-pattern.ref.png b/io2d/src/3rd-party/cairo/test/reference/mesh-pattern.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mesh-pattern.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mesh-pattern.ref.png diff --git a/3rd-party/cairo/test/reference/mime-data.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/mime-data.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mime-data.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mime-data.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/mime-data.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/mime-data.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mime-data.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mime-data.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/mime-data.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/mime-data.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mime-data.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mime-data.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/mime-data.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/mime-data.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mime-data.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mime-data.ps.ref.png diff --git a/3rd-party/cairo/test/reference/mime-data.ref.png b/io2d/src/3rd-party/cairo/test/reference/mime-data.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mime-data.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mime-data.ref.png diff --git a/3rd-party/cairo/test/reference/mime-data.script.ref.png b/io2d/src/3rd-party/cairo/test/reference/mime-data.script.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mime-data.script.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mime-data.script.ref.png diff --git a/3rd-party/cairo/test/reference/mime-data.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/mime-data.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/mime-data.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/mime-data.svg.ref.png diff --git a/3rd-party/cairo/test/reference/miter-precision.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/miter-precision.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/miter-precision.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/miter-precision.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/miter-precision.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/miter-precision.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/miter-precision.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/miter-precision.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/miter-precision.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/miter-precision.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/miter-precision.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/miter-precision.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/miter-precision.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/miter-precision.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/miter-precision.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/miter-precision.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/miter-precision.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/miter-precision.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/miter-precision.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/miter-precision.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/miter-precision.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/miter-precision.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/miter-precision.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/miter-precision.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/miter-precision.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/miter-precision.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/miter-precision.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/miter-precision.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/miter-precision.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/miter-precision.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/miter-precision.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/miter-precision.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/move-to-show-surface.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/move-to-show-surface.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/move-to-show-surface.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/move-to-show-surface.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/move-to-show-surface.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/move-to-show-surface.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/move-to-show-surface.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/move-to-show-surface.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/move-to-show-surface.ref.png b/io2d/src/3rd-party/cairo/test/reference/move-to-show-surface.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/move-to-show-surface.ref.png rename to io2d/src/3rd-party/cairo/test/reference/move-to-show-surface.ref.png diff --git a/3rd-party/cairo/test/reference/negative-stride-image.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/negative-stride-image.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/negative-stride-image.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/negative-stride-image.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/negative-stride-image.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/negative-stride-image.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/negative-stride-image.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/negative-stride-image.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/negative-stride-image.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/negative-stride-image.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/negative-stride-image.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/negative-stride-image.image16.ref.png diff --git a/3rd-party/cairo/test/reference/negative-stride-image.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/negative-stride-image.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/negative-stride-image.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/negative-stride-image.ps.ref.png diff --git a/3rd-party/cairo/test/reference/negative-stride-image.ref.png b/io2d/src/3rd-party/cairo/test/reference/negative-stride-image.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/negative-stride-image.ref.png rename to io2d/src/3rd-party/cairo/test/reference/negative-stride-image.ref.png diff --git a/3rd-party/cairo/test/reference/new-sub-path.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/new-sub-path.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/new-sub-path.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/new-sub-path.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/new-sub-path.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/new-sub-path.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/new-sub-path.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/new-sub-path.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/new-sub-path.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/new-sub-path.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/new-sub-path.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/new-sub-path.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/new-sub-path.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/new-sub-path.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/new-sub-path.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/new-sub-path.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/new-sub-path.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/new-sub-path.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/new-sub-path.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/new-sub-path.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/new-sub-path.ps2.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/new-sub-path.ps2.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/new-sub-path.ps2.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/new-sub-path.ps2.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/new-sub-path.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/new-sub-path.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/new-sub-path.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/new-sub-path.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/new-sub-path.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/new-sub-path.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/new-sub-path.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/new-sub-path.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/new-sub-path.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/new-sub-path.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/new-sub-path.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/new-sub-path.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/new-sub-path.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/new-sub-path.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/new-sub-path.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/new-sub-path.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/new-sub-path.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/new-sub-path.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/new-sub-path.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/new-sub-path.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/new-sub-path.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/new-sub-path.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/new-sub-path.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/new-sub-path.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/nil-surface.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/nil-surface.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/nil-surface.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/nil-surface.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/nil-surface.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/nil-surface.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/nil-surface.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/nil-surface.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/nil-surface.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/nil-surface.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/nil-surface.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/nil-surface.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/nil-surface.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/nil-surface.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/nil-surface.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/nil-surface.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/operator-alpha-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-alpha-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/operator-alpha-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-alpha-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/operator-alpha-alpha.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-alpha-alpha.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.image16.ref.png diff --git a/3rd-party/cairo/test/reference/operator-alpha-alpha.pdf.xfail.png b/io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.pdf.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-alpha-alpha.pdf.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.pdf.xfail.png diff --git a/3rd-party/cairo/test/reference/operator-alpha-alpha.ps.xfail.png b/io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.ps.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-alpha-alpha.ps.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.ps.xfail.png diff --git a/3rd-party/cairo/test/reference/operator-alpha-alpha.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-alpha-alpha.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.ref.png diff --git a/3rd-party/cairo/test/reference/operator-alpha-alpha.svg.xfail.png b/io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.svg.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-alpha-alpha.svg.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.svg.xfail.png diff --git a/3rd-party/cairo/test/reference/operator-alpha-alpha.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-alpha-alpha.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/operator-alpha-alpha.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-alpha-alpha.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-alpha-alpha.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/operator-alpha.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-alpha.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-alpha.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-alpha.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/operator-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/operator-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/operator-alpha.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-alpha.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-alpha.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-alpha.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/operator-alpha.svg12.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/operator-alpha.svg12.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-alpha.svg12.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/operator-alpha.svg12.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/operator-alpha.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/operator-alpha.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-alpha.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/operator-alpha.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/operator-clear.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-clear.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-clear.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-clear.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/operator-clear.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-clear.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-clear.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-clear.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/operator-clear.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-clear.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-clear.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-clear.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/operator-clear.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-clear.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-clear.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-clear.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/operator-clear.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-clear.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-clear.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-clear.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/operator-clear.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-clear.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-clear.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-clear.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/operator-clear.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-clear.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-clear.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-clear.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/operator-clear.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-clear.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-clear.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-clear.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/operator-clear.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-clear.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-clear.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-clear.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/operator-clear.svg12.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/operator-clear.svg12.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-clear.svg12.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/operator-clear.svg12.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/operator-clear.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/operator-clear.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-clear.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/operator-clear.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/operator-clear.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-clear.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-clear.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-clear.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/operator-clear.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-clear.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-clear.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-clear.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/operator-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/operator-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/operator-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/operator-source.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-source.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-source.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-source.image16.ref.png diff --git a/3rd-party/cairo/test/reference/operator-source.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-source.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-source.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-source.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/operator-source.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-source.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-source.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-source.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/operator-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/operator-source.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-source.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-source.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-source.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/operator-source.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-source.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-source.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-source.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/operator-source.xlib-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator-source.xlib-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator-source.xlib-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator-source.xlib-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/operator.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/operator.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/operator.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/operator.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/operator.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/operator.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/operator.svg12.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/operator.svg12.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator.svg12.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/operator.svg12.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/operator.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/operator.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/operator.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/operator.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/outline-tolerance.ref.png b/io2d/src/3rd-party/cairo/test/reference/outline-tolerance.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/outline-tolerance.ref.png rename to io2d/src/3rd-party/cairo/test/reference/outline-tolerance.ref.png diff --git a/3rd-party/cairo/test/reference/over-above-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-above-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-above-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-above-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-above-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-above-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-above-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-above-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-above-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-above-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-above-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-above-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/over-above-source.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-above-source.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-above-source.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-above-source.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-above-source.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-above-source.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-above-source.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-above-source.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-above-source.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-above-source.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-above-source.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-above-source.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-above-source.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-above-source.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-above-source.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-above-source.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/over-above-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-above-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-above-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-above-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/over-above-source.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/over-above-source.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-above-source.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/over-above-source.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/over-above-source.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-above-source.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-above-source.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-above-source.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-above-source.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-above-source.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-above-source.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-above-source.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/over-around-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-around-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-around-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-around-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-around-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-around-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-around-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-around-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-around-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-around-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-around-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-around-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/over-around-source.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-around-source.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-around-source.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-around-source.image16.ref.png diff --git a/3rd-party/cairo/test/reference/over-around-source.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-around-source.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-around-source.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-around-source.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-around-source.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-around-source.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-around-source.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-around-source.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-around-source.ps2.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-around-source.ps2.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-around-source.ps2.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-around-source.ps2.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/over-around-source.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-around-source.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-around-source.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-around-source.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-around-source.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-around-source.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-around-source.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-around-source.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/over-around-source.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-around-source.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-around-source.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-around-source.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-around-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-around-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-around-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-around-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/over-around-source.svg12.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/over-around-source.svg12.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-around-source.svg12.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/over-around-source.svg12.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/over-around-source.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/over-around-source.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-around-source.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/over-around-source.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/over-around-source.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-around-source.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-around-source.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-around-source.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-around-source.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-around-source.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-around-source.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-around-source.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/over-below-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-below-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-below-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-below-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-below-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-below-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-below-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-below-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-below-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-below-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-below-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-below-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/over-below-source.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-below-source.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-below-source.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-below-source.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-below-source.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-below-source.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-below-source.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-below-source.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-below-source.ps2.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-below-source.ps2.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-below-source.ps2.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-below-source.ps2.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/over-below-source.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-below-source.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-below-source.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-below-source.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-below-source.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-below-source.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-below-source.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-below-source.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/over-below-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-below-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-below-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-below-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/over-below-source.svg12.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/over-below-source.svg12.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-below-source.svg12.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/over-below-source.svg12.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/over-below-source.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/over-below-source.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-below-source.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/over-below-source.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/over-below-source.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-below-source.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-below-source.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-below-source.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-below-source.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-below-source.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-below-source.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-below-source.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/over-between-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-between-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-between-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-between-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-between-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-between-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-between-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-between-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-between-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-between-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-between-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-between-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/over-between-source.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-between-source.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-between-source.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-between-source.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-between-source.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-between-source.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-between-source.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-between-source.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-between-source.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-between-source.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-between-source.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-between-source.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-between-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-between-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-between-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-between-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/over-between-source.svg12.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/over-between-source.svg12.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-between-source.svg12.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/over-between-source.svg12.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/over-between-source.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/over-between-source.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-between-source.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/over-between-source.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/over-between-source.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-between-source.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-between-source.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-between-source.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/over-between-source.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/over-between-source.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/over-between-source.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/over-between-source.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-boxes.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-boxes.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-boxes.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-boxes.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-boxes.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-boxes.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-boxes.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-boxes.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-boxes.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-boxes.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-boxes.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-boxes.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-boxes.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-boxes.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-boxes.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-boxes.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-boxes.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-boxes.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-boxes.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-boxes.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-boxes.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-boxes.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-boxes.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-boxes.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-dash-caps.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-dash-caps.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-dash-caps.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-dash-caps.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-dash-caps.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-dash-caps.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-dash-caps.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-dash-caps.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-dash-caps.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-dash-caps.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-dash-caps.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-dash-caps.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-dash-caps.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-dash-caps.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-dash-caps.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-dash-caps.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-dash-caps.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-dash-caps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-dash-caps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-dash-caps.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-dash-caps.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-dash-caps.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-dash-caps.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-dash-caps.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-dash-caps.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-dash-caps.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-dash-caps.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-dash-caps.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-glyphs.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-glyphs.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-glyphs.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-glyphs.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-glyphs.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-glyphs.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-glyphs.pdf.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.pdf.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-glyphs.pdf.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.pdf.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/overlapping-glyphs.pdf.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.pdf.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-glyphs.pdf.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.pdf.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/overlapping-glyphs.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-glyphs.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-glyphs.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-glyphs.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-glyphs.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-glyphs.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-glyphs.svg.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.svg.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-glyphs.svg.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.svg.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-glyphs.svg.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.svg.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-glyphs.svg.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.svg.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-glyphs.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-glyphs.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/overlapping-glyphs.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/overlapping-glyphs.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/overlapping-glyphs.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint-clip-fill-aa.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-clip-fill-aa.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-clip-fill-aa.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-clip-fill-aa.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/paint-clip-fill-aa.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-clip-fill-aa.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-clip-fill-aa.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-clip-fill-aa.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint-clip-fill-aa.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-clip-fill-aa.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-clip-fill-aa.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-clip-fill-aa.ref.png diff --git a/3rd-party/cairo/test/reference/paint-clip-fill-mono.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-clip-fill-mono.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-clip-fill-mono.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-clip-fill-mono.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/paint-clip-fill-mono.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-clip-fill-mono.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-clip-fill-mono.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-clip-fill-mono.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint-clip-fill-mono.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-clip-fill-mono.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-clip-fill-mono.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-clip-fill-mono.ref.png diff --git a/3rd-party/cairo/test/reference/paint-repeat.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-repeat.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-repeat.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-repeat.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/paint-repeat.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-repeat.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-repeat.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-repeat.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint-repeat.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-repeat.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-repeat.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-repeat.ref.png diff --git a/3rd-party/cairo/test/reference/paint-source-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-source-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-source-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-source-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/paint-source-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-source-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-source-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-source-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint-source-alpha.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-source-alpha.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-source-alpha.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-source-alpha.image16.ref.png diff --git a/3rd-party/cairo/test/reference/paint-source-alpha.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-source-alpha.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-source-alpha.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-source-alpha.ref.png diff --git a/3rd-party/cairo/test/reference/paint-source-alpha.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-source-alpha.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-source-alpha.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-source-alpha.svg.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip-mask.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-clip.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-clip.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-clip.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-clip.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-clip.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-clip.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-clip.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-clip.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-clip.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-clip.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-clip.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha-solid-clip.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha.image16.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha.ref.png diff --git a/3rd-party/cairo/test/reference/paint-with-alpha.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint-with-alpha.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint-with-alpha.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint-with-alpha.svg.ref.png diff --git a/3rd-party/cairo/test/reference/paint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/paint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/paint.ref.png b/io2d/src/3rd-party/cairo/test/reference/paint.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/paint.ref.png rename to io2d/src/3rd-party/cairo/test/reference/paint.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-bottom.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-bottom.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-bottom.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-bottom.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-bottom.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-bottom.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-bottom.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-bottom.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-bottom.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-bottom.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-bottom.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-bottom.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-bottom.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-bottom.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-bottom.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-bottom.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-left.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-left.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-left.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-left.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-left.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-left.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-left.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-left.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-left.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-left.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-left.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-left.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-left.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-left.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-left.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-left.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-right.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-right.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-right.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-right.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-right.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-right.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-right.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-right.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-right.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-right.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-right.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-right.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-right.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-right.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-right.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-right.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-right.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-right.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-right.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-right.traps.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-top.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-top.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-top.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-top.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-top.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-top.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-top.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-top.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-top.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-top.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-top.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-top.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-top.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-top.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-top.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-top.ps.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-top.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-top.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-top.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-top.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-top.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-top.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-top.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-top.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-top.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-top.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-top.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-top.svg.ref.png diff --git a/3rd-party/cairo/test/reference/partial-clip-text-top.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-clip-text-top.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-clip-text-top.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-clip-text-top.traps.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-half-reference.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-half-reference.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-half-reference.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-half-reference.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-half-reference.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-half-reference.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-half-reference.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-half-reference.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-half-reference.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-half-reference.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-half-reference.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-half-reference.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-half-triangles.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-half-triangles.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-half-triangles.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-half-triangles.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-intersecting-quads.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-intersecting-quads.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-intersecting-quads.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-intersecting-quads.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-intersecting-quads.xfail.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-intersecting-quads.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-intersecting-quads.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-intersecting-quads.xfail.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-intersecting-triangles.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-intersecting-triangles.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-intersecting-triangles.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-intersecting-triangles.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-overlap-half-triangles-eo.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-overlap-half-triangles-eo.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-overlap-half-triangles-eo.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-overlap-half-triangles-eo.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-overlap-half-triangles.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-overlap-half-triangles.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-overlap-half-triangles.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-overlap-half-triangles.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-overlap-three-quarter-triangles.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-overlap-three-quarter-triangles.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-overlap-three-quarter-triangles.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-overlap-three-quarter-triangles.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-rectangles.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-rectangles.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-rectangles.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-rectangles.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-reference.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-reference.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-reference.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-reference.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-reference.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-reference.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-reference.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-reference.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-reference.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-reference.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-reference.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-reference.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-three-quarter-reference.ref.png diff --git a/3rd-party/cairo/test/reference/partial-coverage-triangles.ref.png b/io2d/src/3rd-party/cairo/test/reference/partial-coverage-triangles.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/partial-coverage-triangles.ref.png rename to io2d/src/3rd-party/cairo/test/reference/partial-coverage-triangles.ref.png diff --git a/3rd-party/cairo/test/reference/pass-through.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/pass-through.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pass-through.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pass-through.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/pass-through.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/pass-through.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pass-through.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pass-through.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/pass-through.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/pass-through.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pass-through.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pass-through.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/pass-through.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/pass-through.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pass-through.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pass-through.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/path-append.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-append.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-append.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-append.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/path-append.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-append.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-append.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-append.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/path-append.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-append.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-append.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-append.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/path-append.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-append.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-append.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-append.image16.ref.png diff --git a/3rd-party/cairo/test/reference/path-append.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-append.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-append.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-append.ps.ref.png diff --git a/3rd-party/cairo/test/reference/path-append.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-append.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-append.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-append.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/path-append.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-append.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-append.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-append.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/path-append.test-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-append.test-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-append.test-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-append.test-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/path-append.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-append.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-append.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-append.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/path-append.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-append.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-append.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-append.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/path-append.xlib-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-append.xlib-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-append.xlib-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-append.xlib-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/path-stroke-twice.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-stroke-twice.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-stroke-twice.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-stroke-twice.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/path-stroke-twice.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-stroke-twice.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-stroke-twice.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-stroke-twice.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/path-stroke-twice.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-stroke-twice.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-stroke-twice.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-stroke-twice.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/path-stroke-twice.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-stroke-twice.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-stroke-twice.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-stroke-twice.image16.ref.png diff --git a/3rd-party/cairo/test/reference/path-stroke-twice.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-stroke-twice.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-stroke-twice.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-stroke-twice.ps.ref.png diff --git a/3rd-party/cairo/test/reference/path-stroke-twice.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-stroke-twice.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-stroke-twice.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-stroke-twice.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/path-stroke-twice.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-stroke-twice.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-stroke-twice.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-stroke-twice.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/path-stroke-twice.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/path-stroke-twice.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/path-stroke-twice.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/path-stroke-twice.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/pattern-getters.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/pattern-getters.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pattern-getters.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pattern-getters.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/pattern-getters.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/pattern-getters.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pattern-getters.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pattern-getters.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/pattern-getters.ref.png b/io2d/src/3rd-party/cairo/test/reference/pattern-getters.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pattern-getters.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pattern-getters.ref.png diff --git a/3rd-party/cairo/test/reference/pdf-isolated-group.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/pdf-isolated-group.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pdf-isolated-group.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pdf-isolated-group.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/pdf-isolated-group.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/pdf-isolated-group.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pdf-isolated-group.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pdf-isolated-group.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/pdf-isolated-group.ref.png b/io2d/src/3rd-party/cairo/test/reference/pdf-isolated-group.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pdf-isolated-group.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pdf-isolated-group.ref.png diff --git a/3rd-party/cairo/test/reference/pdf-surface-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/pdf-surface-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pdf-surface-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pdf-surface-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/pdf-surface-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/pdf-surface-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pdf-surface-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pdf-surface-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/pdf-surface-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/pdf-surface-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pdf-surface-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pdf-surface-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/pdf-surface-source.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/pdf-surface-source.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pdf-surface-source.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pdf-surface-source.image16.ref.png diff --git a/3rd-party/cairo/test/reference/pdf-surface-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/pdf-surface-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pdf-surface-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pdf-surface-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/pdf-surface-source.svg12.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/pdf-surface-source.svg12.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/pdf-surface-source.svg12.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/pdf-surface-source.svg12.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/pdf-surface-source.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/pdf-surface-source.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/pdf-surface-source.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/pdf-surface-source.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/pixman-rotate.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/pixman-rotate.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pixman-rotate.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pixman-rotate.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/pixman-rotate.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/pixman-rotate.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pixman-rotate.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pixman-rotate.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/pixman-rotate.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/pixman-rotate.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pixman-rotate.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pixman-rotate.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/pixman-rotate.ps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/pixman-rotate.ps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pixman-rotate.ps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pixman-rotate.ps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/pixman-rotate.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/pixman-rotate.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pixman-rotate.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pixman-rotate.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/ps-eps.ref.png b/io2d/src/3rd-party/cairo/test/reference/ps-eps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ps-eps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ps-eps.ref.png diff --git a/3rd-party/cairo/test/reference/ps-surface-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/ps-surface-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ps-surface-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ps-surface-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/ps-surface-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/ps-surface-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ps-surface-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ps-surface-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/ps-surface-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/ps-surface-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ps-surface-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ps-surface-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/ps-surface-source.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/ps-surface-source.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ps-surface-source.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ps-surface-source.image16.ref.png diff --git a/3rd-party/cairo/test/reference/ps-surface-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/ps-surface-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/ps-surface-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/ps-surface-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/ps-surface-source.svg12.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/ps-surface-source.svg12.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/ps-surface-source.svg12.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/ps-surface-source.svg12.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/ps-surface-source.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/ps-surface-source.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/ps-surface-source.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/ps-surface-source.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/pthread-same-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-same-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-same-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-same-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/pthread-same-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-same-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-same-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-same-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/pthread-same-source.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-same-source.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-same-source.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-same-source.image16.ref.png diff --git a/3rd-party/cairo/test/reference/pthread-same-source.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/pthread-same-source.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-same-source.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-same-source.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/pthread-same-source.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-same-source.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-same-source.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-same-source.ref.png diff --git a/3rd-party/cairo/test/reference/pthread-show-text.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-show-text.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-show-text.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-show-text.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/pthread-show-text.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-show-text.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-show-text.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-show-text.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/pthread-show-text.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-show-text.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-show-text.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-show-text.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/pthread-show-text.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-show-text.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-show-text.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-show-text.image16.ref.png diff --git a/3rd-party/cairo/test/reference/pthread-show-text.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-show-text.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-show-text.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-show-text.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/pthread-show-text.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-show-text.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-show-text.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-show-text.ps.ref.png diff --git a/3rd-party/cairo/test/reference/pthread-show-text.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-show-text.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-show-text.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-show-text.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/pthread-show-text.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-show-text.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-show-text.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-show-text.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/pthread-show-text.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-show-text.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-show-text.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-show-text.traps.ref.png diff --git a/3rd-party/cairo/test/reference/pthread-show-text.xlib-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-show-text.xlib-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-show-text.xlib-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-show-text.xlib-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/pthread-similar.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-similar.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-similar.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-similar.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/pthread-similar.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-similar.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-similar.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-similar.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/pthread-similar.ref.png b/io2d/src/3rd-party/cairo/test/reference/pthread-similar.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/pthread-similar.ref.png rename to io2d/src/3rd-party/cairo/test/reference/pthread-similar.ref.png diff --git a/3rd-party/cairo/test/reference/push-group-color.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group-color.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group-color.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group-color.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/push-group-color.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group-color.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group-color.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group-color.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/push-group-color.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group-color.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group-color.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group-color.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/push-group-color.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group-color.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group-color.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group-color.image16.ref.png diff --git a/3rd-party/cairo/test/reference/push-group-color.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group-color.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group-color.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group-color.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/push-group-color.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group-color.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group-color.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group-color.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/push-group-color.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group-color.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group-color.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group-color.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/push-group-color.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group-color.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group-color.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group-color.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/push-group-color.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group-color.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group-color.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group-color.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/push-group-color.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group-color.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group-color.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group-color.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/push-group-path-offset.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group-path-offset.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group-path-offset.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group-path-offset.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/push-group-path-offset.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group-path-offset.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group-path-offset.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group-path-offset.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/push-group-path-offset.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group-path-offset.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group-path-offset.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group-path-offset.ref.png diff --git a/3rd-party/cairo/test/reference/push-group.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/push-group.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/push-group.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/push-group.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group.image16.ref.png diff --git a/3rd-party/cairo/test/reference/push-group.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/push-group.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/push-group.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/push-group.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/push-group.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/push-group.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/push-group.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/push-group.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/quartz-surface-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/quartz-surface-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/quartz-surface-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/quartz-surface-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/quartz-surface-source.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/quartz-surface-source.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/quartz-surface-source.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/quartz-surface-source.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/quartz-surface-source.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/quartz-surface-source.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/quartz-surface-source.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/quartz-surface-source.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/quartz-surface-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/quartz-surface-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/quartz-surface-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/quartz-surface-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-extend.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-extend.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-extend.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-extend.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-extend.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-extend.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-extend.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-extend.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-extend.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-extend.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-extend.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-extend.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-extend.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-extend.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-extend.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-extend.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-extend.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-extend.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-extend.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-extend.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-extend.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-extend.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-extend.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-extend.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-extend.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-extend.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-extend.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-extend.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-extend.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-extend.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-extend.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-extend.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-mask-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-mask-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-mask-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-mask-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-mask-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-mask-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-mask-source.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask-source.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-mask-source.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask-source.image16.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-mask-source.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask-source.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-mask-source.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask-source.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-mask-source.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask-source.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-mask-source.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask-source.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-mask-source.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask-source.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-mask-source.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask-source.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-mask-source.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask-source.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-mask-source.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask-source.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-mask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-mask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-mask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-mask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-mask.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-mask.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask.image16.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-mask.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-mask.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-mask.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-mask.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-mask.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-one-stop.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-one-stop.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-one-stop.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-one-stop.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-one-stop.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-one-stop.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-one-stop.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-one-stop.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-one-stop.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-one-stop.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-one-stop.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-one-stop.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-one-stop.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-one-stop.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-one-stop.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-one-stop.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-source.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-source.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-source.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-source.image16.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-source.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-source.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-source.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-source.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-source.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-source.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-source.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-source.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient.image16.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/radial-gradient.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-gradient.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-gradient.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-gradient.ref.png diff --git a/3rd-party/cairo/test/reference/radial-outer-focus.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-outer-focus.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-outer-focus.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-outer-focus.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/radial-outer-focus.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-outer-focus.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-outer-focus.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-outer-focus.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-outer-focus.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-outer-focus.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-outer-focus.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-outer-focus.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/radial-outer-focus.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-outer-focus.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-outer-focus.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-outer-focus.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-outer-focus.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-outer-focus.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-outer-focus.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-outer-focus.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/radial-outer-focus.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/radial-outer-focus.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-outer-focus.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/radial-outer-focus.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/radial-outer-focus.xfail.png b/io2d/src/3rd-party/cairo/test/reference/radial-outer-focus.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/radial-outer-focus.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/radial-outer-focus.xfail.png diff --git a/3rd-party/cairo/test/reference/random-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/random-clip.base.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/random-clip.base.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-clip.base.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/random-clip.base.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/random-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/random-clip.base.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/random-clip.base.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-clip.base.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/random-clip.base.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/random-clip.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-clip.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-clip.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-clip.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/random-clip.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-clip.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-clip.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-clip.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/random-clip.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-clip.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-clip.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-clip.ref.png diff --git a/3rd-party/cairo/test/reference/random-clip.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-clip.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-clip.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-clip.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/random-clip.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-clip.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-clip.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-clip.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-eo.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-eo.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-eo.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-eo.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-eo.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-eo.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-eo.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-eo.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.image16.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-eo.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-eo.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-eo.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-eo.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.ps.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-eo.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-eo.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-eo.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-eo.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-eo.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-eo.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-eo.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-eo.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-eo.xlib-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.xlib-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-eo.xlib-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-eo.xlib-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-nz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-nz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-nz.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-nz.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-nz.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-nz.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-nz.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-nz.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.image16.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-nz.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-nz.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-nz.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-nz.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.ps.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-nz.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-nz.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-nz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-nz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-nz.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-nz.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-nz.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-nz.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-curves-nz.xlib-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.xlib-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-curves-nz.xlib-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-curves-nz.xlib-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-eo.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-eo.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-eo.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-eo.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-eo.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-eo.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-eo.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-eo.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.image16.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-eo.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-eo.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.ps.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-eo.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-eo.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-eo.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-eo.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-eo.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-eo.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-eo.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-eo.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-eo.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-nonzero.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-nonzero.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-nonzero.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-nonzero.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-nonzero.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-nonzero.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-nonzero.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-nonzero.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.image16.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-nonzero.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-nonzero.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.ps.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-nonzero.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-nonzero.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-nonzero.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-nonzero.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-nonzero.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-nonzero.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/random-intersections-nonzero.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/random-intersections-nonzero.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/random-intersections-nonzero.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/raster-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/raster-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/raster-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/raster-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/raster-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/raster-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/raster-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/raster-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/raster-source.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/raster-source.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/raster-source.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/raster-source.ps.ref.png diff --git a/3rd-party/cairo/test/reference/raster-source.ref.png b/io2d/src/3rd-party/cairo/test/reference/raster-source.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/raster-source.ref.png rename to io2d/src/3rd-party/cairo/test/reference/raster-source.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-none-similar.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-none-similar.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-none-similar.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-none-similar.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-none-similar.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-none-similar.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-none-similar.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-none-similar.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-none-similar.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-none-similar.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-none-similar.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-none-similar.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-none-similar.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-none-similar.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-none-similar.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-none-similar.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-none-similar.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-none-similar.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-none-similar.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-none-similar.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-none.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-none.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-none.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-none.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-none.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-none.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-none.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-none.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-none.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-none.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-none.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-none.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-pad-similar.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-pad-similar.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-pad-similar.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-pad-similar.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-pad-similar.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-pad-similar.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-pad-similar.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-pad-similar.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-pad-similar.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-pad-similar.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-pad-similar.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-pad-similar.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-pad-similar.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-pad-similar.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-pad-similar.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-pad-similar.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-pad-similar.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-pad-similar.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-pad-similar.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-pad-similar.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-pad.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-pad.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-pad.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-pad.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-pad.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-pad.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-pad.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-pad.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-pad.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-pad.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-pad.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-pad.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-reflect-similar.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-reflect-similar.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-reflect-similar.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-reflect-similar.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-reflect-similar.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-reflect-similar.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-reflect-similar.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-reflect-similar.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-reflect-similar.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-reflect-similar.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-reflect-similar.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-reflect-similar.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-reflect-similar.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-reflect-similar.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-reflect-similar.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-reflect-similar.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-reflect-similar.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-reflect-similar.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-reflect-similar.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-reflect-similar.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-reflect.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-reflect.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-reflect.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-reflect.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-reflect.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-reflect.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-reflect.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-reflect.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-reflect.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-reflect.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-reflect.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-reflect.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-repeat-similar.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-repeat-similar.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-repeat-similar.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-repeat-similar.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-repeat-similar.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-repeat-similar.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-repeat-similar.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-repeat-similar.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-repeat-similar.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-repeat-similar.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-repeat-similar.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-repeat-similar.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-repeat-similar.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-repeat-similar.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-repeat-similar.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-repeat-similar.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-repeat-similar.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-repeat-similar.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-repeat-similar.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-repeat-similar.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-repeat.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-repeat.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-repeat.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-repeat.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-repeat.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-repeat.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-repeat.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-repeat.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-extend-repeat.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-extend-repeat.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-extend-repeat.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-extend-repeat.ref.png diff --git a/3rd-party/cairo/test/reference/record-fill-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-fill-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-fill-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-fill-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-fill-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-fill-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-fill-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-fill-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-fill-alpha.base.xfail.png b/io2d/src/3rd-party/cairo/test/reference/record-fill-alpha.base.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-fill-alpha.base.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/record-fill-alpha.base.xfail.png diff --git a/3rd-party/cairo/test/reference/record-fill-alpha.image16.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-fill-alpha.image16.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-fill-alpha.image16.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-fill-alpha.image16.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-fill-alpha.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-fill-alpha.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-fill-alpha.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-fill-alpha.ref.png diff --git a/3rd-party/cairo/test/reference/record-fill-alpha.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-fill-alpha.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-fill-alpha.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-fill-alpha.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-fill-alpha.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-fill-alpha.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-fill-alpha.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-fill-alpha.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-fill-alpha.xfail.png b/io2d/src/3rd-party/cairo/test/reference/record-fill-alpha.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-fill-alpha.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/record-fill-alpha.xfail.png diff --git a/3rd-party/cairo/test/reference/record-mesh.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-mesh.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-mesh.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-mesh.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-mesh.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-mesh.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-mesh.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-mesh.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-mesh.image16.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-mesh.image16.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-mesh.image16.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-mesh.image16.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-mesh.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-mesh.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-mesh.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-mesh.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.xfail.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.base.xfail.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.image16.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.image16.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.image16.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.image16.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.xfail.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip-mask.xfail.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-clip.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-clip.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-clip.image16.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip.image16.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-clip.image16.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip.image16.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-clip.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-clip.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-clip.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-clip.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-clip.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-clip.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-clip.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.image16.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.image16.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.image16.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.image16.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha-solid-clip.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha.image16.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha.image16.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha.image16.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha.image16.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint-alpha.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint-alpha.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint-alpha.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint-alpha.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-paint.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-paint.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-paint.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-paint.ref.png diff --git a/3rd-party/cairo/test/reference/record-select-font-face.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-select-font-face.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-select-font-face.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-select-font-face.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-select-font-face.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-select-font-face.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-select-font-face.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-select-font-face.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-select-font-face.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-select-font-face.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-select-font-face.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-select-font-face.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-select-font-face.image16.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-select-font-face.image16.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-select-font-face.image16.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-select-font-face.image16.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-select-font-face.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-select-font-face.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-select-font-face.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-select-font-face.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-select-font-face.xfail.png b/io2d/src/3rd-party/cairo/test/reference/record-select-font-face.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-select-font-face.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/record-select-font-face.xfail.png diff --git a/3rd-party/cairo/test/reference/record-self-intersecting.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-self-intersecting.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-self-intersecting.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-self-intersecting.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-self-intersecting.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-self-intersecting.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-self-intersecting.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-self-intersecting.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-self-intersecting.image16.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-self-intersecting.image16.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-self-intersecting.image16.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-self-intersecting.image16.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-self-intersecting.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-self-intersecting.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-self-intersecting.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-self-intersecting.ref.png diff --git a/3rd-party/cairo/test/reference/record-text-transform.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-text-transform.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-text-transform.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-text-transform.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record-text-transform.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-text-transform.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-text-transform.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-text-transform.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-text-transform.image16.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-text-transform.image16.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-text-transform.image16.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-text-transform.image16.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record-text-transform.ref.png b/io2d/src/3rd-party/cairo/test/reference/record-text-transform.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record-text-transform.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record-text-transform.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-fill-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-fill-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-fill-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-fill-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-fill-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-fill-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-fill-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-fill-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-fill-alpha.base.xfail.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-fill-alpha.base.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-fill-alpha.base.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-fill-alpha.base.xfail.png diff --git a/3rd-party/cairo/test/reference/record1414x-fill-alpha.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-fill-alpha.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-fill-alpha.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-fill-alpha.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-fill-alpha.xfail.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-fill-alpha.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-fill-alpha.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-fill-alpha.xfail.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip-mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-clip.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha-solid-clip.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint-alpha.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint-alpha.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint-alpha.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint-alpha.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint-alpha.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-paint.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-paint.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-paint.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-paint.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-select-font-face.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-select-font-face.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-select-font-face.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-select-font-face.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-select-font-face.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-select-font-face.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-select-font-face.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-select-font-face.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-select-font-face.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-select-font-face.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-select-font-face.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-select-font-face.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-select-font-face.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-select-font-face.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-select-font-face.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-select-font-face.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-self-intersecting.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-self-intersecting.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-self-intersecting.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-self-intersecting.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-self-intersecting.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-self-intersecting.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-self-intersecting.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-self-intersecting.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-self-intersecting.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-self-intersecting.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-self-intersecting.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-self-intersecting.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-self-intersecting.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-self-intersecting.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-self-intersecting.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-self-intersecting.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-text-transform.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-text-transform.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-text-transform.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-text-transform.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-text-transform.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-text-transform.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-text-transform.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-text-transform.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record1414x-text-transform.ref.png b/io2d/src/3rd-party/cairo/test/reference/record1414x-text-transform.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record1414x-text-transform.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record1414x-text-transform.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-fill-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-fill-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-fill-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-fill-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-fill-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-fill-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-fill-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-fill-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-fill-alpha.base.xfail.png b/io2d/src/3rd-party/cairo/test/reference/record2x-fill-alpha.base.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-fill-alpha.base.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-fill-alpha.base.xfail.png diff --git a/3rd-party/cairo/test/reference/record2x-fill-alpha.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-fill-alpha.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-fill-alpha.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-fill-alpha.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-fill-alpha.xfail.png b/io2d/src/3rd-party/cairo/test/reference/record2x-fill-alpha.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-fill-alpha.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-fill-alpha.xfail.png diff --git a/3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-clip-mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint-alpha-clip.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-clip.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint-alpha-clip.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-clip.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint-alpha-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint-alpha-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint-alpha-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint-alpha-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint-alpha-clip.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-clip.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint-alpha-clip.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-clip.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha-solid-clip.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint-alpha.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint-alpha.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint-alpha.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint-alpha.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint-alpha.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-paint.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-paint.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-paint.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-paint.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-select-font-face.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-select-font-face.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-select-font-face.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-select-font-face.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-select-font-face.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-select-font-face.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-select-font-face.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-select-font-face.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-select-font-face.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-select-font-face.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-select-font-face.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-select-font-face.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-select-font-face.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-select-font-face.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-select-font-face.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-select-font-face.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-self-intersecting.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-self-intersecting.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-self-intersecting.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-self-intersecting.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-self-intersecting.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-self-intersecting.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-self-intersecting.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-self-intersecting.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-self-intersecting.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-self-intersecting.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-self-intersecting.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-self-intersecting.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-self-intersecting.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-self-intersecting.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-self-intersecting.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-self-intersecting.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-text-transform.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-text-transform.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-text-transform.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-text-transform.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-text-transform.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-text-transform.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-text-transform.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-text-transform.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record2x-text-transform.ref.png b/io2d/src/3rd-party/cairo/test/reference/record2x-text-transform.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record2x-text-transform.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record2x-text-transform.ref.png diff --git a/3rd-party/cairo/test/reference/record90-fill-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-fill-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-fill-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-fill-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record90-fill-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-fill-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-fill-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-fill-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record90-fill-alpha.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-fill-alpha.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-fill-alpha.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-fill-alpha.ref.png diff --git a/3rd-party/cairo/test/reference/record90-fill-alpha.xfail.png b/io2d/src/3rd-party/cairo/test/reference/record90-fill-alpha.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-fill-alpha.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/record90-fill-alpha.xfail.png diff --git a/3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.xfail.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-clip-mask.xfail.png diff --git a/3rd-party/cairo/test/reference/record90-paint-alpha-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint-alpha-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint-alpha-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint-alpha-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint-alpha-clip.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-clip.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint-alpha-clip.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-clip.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint-alpha-clip.xfail.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-clip.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint-alpha-clip.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-clip.xfail.png diff --git a/3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha-solid-clip.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint-alpha.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint-alpha.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint-alpha.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint-alpha.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint-alpha.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record90-paint.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-paint.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-paint.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-paint.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record90-select-font-face.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-select-font-face.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-select-font-face.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-select-font-face.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record90-select-font-face.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-select-font-face.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-select-font-face.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-select-font-face.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record90-select-font-face.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-select-font-face.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-select-font-face.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-select-font-face.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record90-select-font-face.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-select-font-face.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-select-font-face.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-select-font-face.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record90-self-intersecting.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-self-intersecting.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-self-intersecting.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-self-intersecting.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record90-self-intersecting.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-self-intersecting.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-self-intersecting.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-self-intersecting.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record90-self-intersecting.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-self-intersecting.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-self-intersecting.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-self-intersecting.ref.png diff --git a/3rd-party/cairo/test/reference/record90-text-transform.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-text-transform.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-text-transform.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-text-transform.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/record90-text-transform.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-text-transform.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-text-transform.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-text-transform.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/record90-text-transform.ref.png b/io2d/src/3rd-party/cairo/test/reference/record90-text-transform.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/record90-text-transform.ref.png rename to io2d/src/3rd-party/cairo/test/reference/record90-text-transform.ref.png diff --git a/3rd-party/cairo/test/reference/recordflip-fill-alpha.ref.png b/io2d/src/3rd-party/cairo/test/reference/recordflip-fill-alpha.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recordflip-fill-alpha.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recordflip-fill-alpha.ref.png diff --git a/3rd-party/cairo/test/reference/recordflip-paint-alpha-clip-mask.ref.png b/io2d/src/3rd-party/cairo/test/reference/recordflip-paint-alpha-clip-mask.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recordflip-paint-alpha-clip-mask.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recordflip-paint-alpha-clip-mask.ref.png diff --git a/3rd-party/cairo/test/reference/recordflip-paint-alpha-clip.ref.png b/io2d/src/3rd-party/cairo/test/reference/recordflip-paint-alpha-clip.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recordflip-paint-alpha-clip.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recordflip-paint-alpha-clip.ref.png diff --git a/3rd-party/cairo/test/reference/recordflip-paint-alpha-solid-clip.ref.png b/io2d/src/3rd-party/cairo/test/reference/recordflip-paint-alpha-solid-clip.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recordflip-paint-alpha-solid-clip.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recordflip-paint-alpha-solid-clip.ref.png diff --git a/3rd-party/cairo/test/reference/recordflip-paint-alpha.ref.png b/io2d/src/3rd-party/cairo/test/reference/recordflip-paint-alpha.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recordflip-paint-alpha.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recordflip-paint-alpha.ref.png diff --git a/3rd-party/cairo/test/reference/recordflip-paint.ref.png b/io2d/src/3rd-party/cairo/test/reference/recordflip-paint.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recordflip-paint.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recordflip-paint.ref.png diff --git a/3rd-party/cairo/test/reference/recordflip-select-font-face.ref.png b/io2d/src/3rd-party/cairo/test/reference/recordflip-select-font-face.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recordflip-select-font-face.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recordflip-select-font-face.ref.png diff --git a/3rd-party/cairo/test/reference/recordflip-self-intersecting.ref.png b/io2d/src/3rd-party/cairo/test/reference/recordflip-self-intersecting.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recordflip-self-intersecting.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recordflip-self-intersecting.ref.png diff --git a/3rd-party/cairo/test/reference/recordflip-text-transform.ref.png b/io2d/src/3rd-party/cairo/test/reference/recordflip-text-transform.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recordflip-text-transform.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recordflip-text-transform.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-none.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-none.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-none.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-none.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-none.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-none.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-none.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-none.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-none.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-none.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-none.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-none.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-none.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-none.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-none.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-none.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-none.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-none.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-none.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-none.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-none.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-none.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-none.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-none.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-pad.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-pad.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-pad.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-pad.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-pad.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-pad.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-pad.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-pad.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-pad.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-pad.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-pad.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-pad.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-pad.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-pad.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-pad.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-pad.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-pad.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-pad.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-pad.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-pad.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-pad.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-pad.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-pad.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-pad.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-reflect.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-reflect.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-reflect.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-reflect.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-reflect.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-reflect.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-reflect.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-reflect.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-reflect.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-reflect.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-reflect.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-reflect.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-reflect.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-reflect.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-reflect.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-reflect.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-reflect.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-reflect.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-reflect.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-reflect.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-reflect.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-reflect.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-reflect.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-reflect.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-repeat.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-repeat.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-repeat.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-repeat.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-repeat.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-repeat.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-repeat.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-repeat.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-repeat.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-repeat.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-repeat.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-repeat.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-repeat.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-repeat.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-repeat.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-repeat.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-repeat.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-repeat.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-repeat.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-repeat.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-extend-repeat.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-repeat.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-extend-repeat.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-extend-repeat.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-over.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-over.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-over.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-over.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-over.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-over.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-over.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-over.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-over.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-over.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-over.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-over.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-over.gl.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-over.gl.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-over.gl.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-over.gl.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-over.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-over.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-over.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-over.image16.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-over.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-over.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-over.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-over.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-over.pdf.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-over.pdf.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-over.pdf.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-over.pdf.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-over.ps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-over.ps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-over.ps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-over.ps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-over.ps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-over.ps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-over.ps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-over.ps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-over.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-over.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-over.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-over.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-over.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-over.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-over.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-over.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-over.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-over.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-over.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-over.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-over.svg.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-over.svg.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-over.svg.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-over.svg.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-over.svg.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-over.svg.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-over.svg.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-over.svg.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-over.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-over.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-over.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-over.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-over.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-over.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-over.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-over.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-source.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-source.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-source.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-source.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/recording-surface-source.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/recording-surface-source.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/recording-surface-source.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/recording-surface-source.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rectangle-rounding-error.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectangle-rounding-error.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectangle-rounding-error.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectangle-rounding-error.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rectangle-rounding-error.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectangle-rounding-error.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectangle-rounding-error.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectangle-rounding-error.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rectangle-rounding-error.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectangle-rounding-error.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectangle-rounding-error.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectangle-rounding-error.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-dash-scale-unaligned.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-dash-scale-unaligned.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-dash-scale-unaligned.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-dash-scale-unaligned.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-dash-scale-unaligned.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-dash-scale-unaligned.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-dash-scale-unaligned.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-dash-scale-unaligned.traps.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-dash-scale.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-dash-scale.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-dash-scale.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-dash-scale.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-dash.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-dash.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-dash.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-dash.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-dash.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-dash.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-dash.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-dash.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-dash.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-dash.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-dash.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-dash.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-dash.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-dash.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-dash.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-dash.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-dash.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-dash.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-dash.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-dash.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/rectilinear-dash.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-dash.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-dash.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-dash.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-dash.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-dash.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-dash.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-dash.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-dash.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-dash.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-dash.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-dash.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-fill.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-fill.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-fill.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-fill.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-fill.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-fill.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-fill.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-fill.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-fill.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-fill.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-fill.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-fill.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-grid.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-grid.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-grid.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-grid.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-grid.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-grid.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-grid.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-grid.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-grid.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-grid.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-grid.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-grid.image16.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-grid.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-grid.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-grid.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-grid.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-grid.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-grid.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-grid.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-grid.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-grid.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-grid.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-grid.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-grid.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-miter-limit.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-miter-limit.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-miter-limit.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-miter-limit.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-miter-limit.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-miter-limit.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-miter-limit.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-miter-limit.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-miter-limit.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-miter-limit.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-miter-limit.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-miter-limit.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-miter-limit.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-miter-limit.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-miter-limit.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-miter-limit.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-miter-limit.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-miter-limit.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-miter-limit.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-miter-limit.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-miter-limit.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-miter-limit.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-miter-limit.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-miter-limit.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-miter-limit.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-miter-limit.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-miter-limit.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-miter-limit.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-miter-limit.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-miter-limit.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-miter-limit.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-miter-limit.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-stroke.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-stroke.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-stroke.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-stroke.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-stroke.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-stroke.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-stroke.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-stroke.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rectilinear-stroke.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-stroke.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-stroke.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-stroke.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/rectilinear-stroke.ref.png b/io2d/src/3rd-party/cairo/test/reference/rectilinear-stroke.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rectilinear-stroke.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rectilinear-stroke.ref.png diff --git a/3rd-party/cairo/test/reference/reflected-stroke.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/reflected-stroke.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/reflected-stroke.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/reflected-stroke.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/reflected-stroke.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/reflected-stroke.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/reflected-stroke.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/reflected-stroke.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/reflected-stroke.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/reflected-stroke.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/reflected-stroke.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/reflected-stroke.image16.ref.png diff --git a/3rd-party/cairo/test/reference/reflected-stroke.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/reflected-stroke.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/reflected-stroke.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/reflected-stroke.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/reflected-stroke.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/reflected-stroke.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/reflected-stroke.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/reflected-stroke.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/reflected-stroke.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/reflected-stroke.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/reflected-stroke.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/reflected-stroke.ps.ref.png diff --git a/3rd-party/cairo/test/reference/reflected-stroke.ref.png b/io2d/src/3rd-party/cairo/test/reference/reflected-stroke.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/reflected-stroke.ref.png rename to io2d/src/3rd-party/cairo/test/reference/reflected-stroke.ref.png diff --git a/3rd-party/cairo/test/reference/reflected-stroke.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/reflected-stroke.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/reflected-stroke.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/reflected-stroke.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/reflected-stroke.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/reflected-stroke.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/reflected-stroke.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/reflected-stroke.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rel-path.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rel-path.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rel-path.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rel-path.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rel-path.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rel-path.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rel-path.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rel-path.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rel-path.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rel-path.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rel-path.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rel-path.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rel-path.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rel-path.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rel-path.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rel-path.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rel-path.ps2.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rel-path.ps2.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rel-path.ps2.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rel-path.ps2.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rel-path.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rel-path.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rel-path.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rel-path.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rel-path.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rel-path.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rel-path.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rel-path.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rel-path.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rel-path.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rel-path.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rel-path.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rel-path.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rel-path.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rel-path.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rel-path.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rgb24-ignore-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rgb24-ignore-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rgb24-ignore-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rgb24-ignore-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rgb24-ignore-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rgb24-ignore-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rgb24-ignore-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rgb24-ignore-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rgb24-ignore-alpha.ref.png b/io2d/src/3rd-party/cairo/test/reference/rgb24-ignore-alpha.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rgb24-ignore-alpha.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rgb24-ignore-alpha.ref.png diff --git a/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.xlib-fallback.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.xlib-fallback.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.xlib-fallback.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.xlib-fallback.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.xlib-window.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.xlib-window.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.xlib-window.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotate-clip-image-surface-paint.xlib-window.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rotate-image-surface-paint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotate-image-surface-paint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotate-image-surface-paint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotate-image-surface-paint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rotate-image-surface-paint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotate-image-surface-paint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotate-image-surface-paint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotate-image-surface-paint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rotate-image-surface-paint.pdf.xfail.png b/io2d/src/3rd-party/cairo/test/reference/rotate-image-surface-paint.pdf.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotate-image-surface-paint.pdf.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/rotate-image-surface-paint.pdf.xfail.png diff --git a/3rd-party/cairo/test/reference/rotate-image-surface-paint.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotate-image-surface-paint.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotate-image-surface-paint.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotate-image-surface-paint.ps.ref.png diff --git a/3rd-party/cairo/test/reference/rotate-image-surface-paint.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotate-image-surface-paint.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotate-image-surface-paint.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotate-image-surface-paint.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/rotate-image-surface-paint.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotate-image-surface-paint.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotate-image-surface-paint.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotate-image-surface-paint.ref.png diff --git a/3rd-party/cairo/test/reference/rotate-image-surface-paint.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotate-image-surface-paint.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotate-image-surface-paint.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotate-image-surface-paint.svg.ref.png diff --git a/3rd-party/cairo/test/reference/rotate-image-surface-paint.svg.xfail.png b/io2d/src/3rd-party/cairo/test/reference/rotate-image-surface-paint.svg.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotate-image-surface-paint.svg.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/rotate-image-surface-paint.svg.xfail.png diff --git a/3rd-party/cairo/test/reference/rotated-clip.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotated-clip.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotated-clip.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotated-clip.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rotated-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotated-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotated-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotated-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rotated-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotated-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotated-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotated-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rotated-clip.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotated-clip.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotated-clip.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotated-clip.image16.ref.png diff --git a/3rd-party/cairo/test/reference/rotated-clip.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotated-clip.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotated-clip.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotated-clip.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rotated-clip.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotated-clip.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotated-clip.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotated-clip.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rotated-clip.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotated-clip.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotated-clip.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotated-clip.ps.ref.png diff --git a/3rd-party/cairo/test/reference/rotated-clip.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotated-clip.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotated-clip.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotated-clip.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/rotated-clip.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotated-clip.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotated-clip.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotated-clip.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rotated-clip.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotated-clip.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotated-clip.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotated-clip.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rotated-clip.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rotated-clip.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rotated-clip.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rotated-clip.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-fill.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-fill.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-fill.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-fill.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-fill.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-fill.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-fill.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-fill.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.image16.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-fill.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-fill.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.ps.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-fill.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-fill.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-fill.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-fill.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-fill.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-fill.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-fill.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-fill.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-fill.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-stroke.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-stroke.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-stroke.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-stroke.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-stroke.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-stroke.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.image16.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-stroke.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-stroke.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-stroke.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-stroke.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.ps.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-stroke.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-stroke.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-stroke.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-stroke.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/rounded-rectangle-stroke.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/rounded-rectangle-stroke.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/rounded-rectangle-stroke.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/sample-diagonal.ref.png b/io2d/src/3rd-party/cairo/test/reference/sample-diagonal.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/sample-diagonal.ref.png rename to io2d/src/3rd-party/cairo/test/reference/sample-diagonal.ref.png diff --git a/3rd-party/cairo/test/reference/sample-horizontal.ref.png b/io2d/src/3rd-party/cairo/test/reference/sample-horizontal.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/sample-horizontal.ref.png rename to io2d/src/3rd-party/cairo/test/reference/sample-horizontal.ref.png diff --git a/3rd-party/cairo/test/reference/sample-vertical.ref.png b/io2d/src/3rd-party/cairo/test/reference/sample-vertical.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/sample-vertical.ref.png rename to io2d/src/3rd-party/cairo/test/reference/sample-vertical.ref.png diff --git a/3rd-party/cairo/test/reference/scale-down-source-surface-paint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-down-source-surface-paint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-down-source-surface-paint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-down-source-surface-paint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/scale-down-source-surface-paint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-down-source-surface-paint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-down-source-surface-paint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-down-source-surface-paint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/scale-down-source-surface-paint.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-down-source-surface-paint.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-down-source-surface-paint.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-down-source-surface-paint.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-image.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-image.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-image.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-image.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-image.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-image.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-image.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-image.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-image.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-image.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-image.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-image.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-image.gl.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-image.gl.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-image.gl.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-image.gl.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-image.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-image.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-image.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-image.image16.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-image.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-image.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-image.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-image.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-image.pdf.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-image.pdf.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-image.pdf.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-image.pdf.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-image.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-image.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-image.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-image.ps.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-image.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-image.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-image.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-image.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-image.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-image.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-image.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-image.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-image.script.xfail.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-image.script.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-image.script.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-image.script.xfail.png diff --git a/3rd-party/cairo/test/reference/scale-offset-image.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-image.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-image.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-image.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-image.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-image.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-image.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-image.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-image.xfail.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-image.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-image.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-image.xfail.png diff --git a/3rd-party/cairo/test/reference/scale-offset-image.xlib-fallback.xfail.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-image.xlib-fallback.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-image.xlib-fallback.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-image.xlib-fallback.xfail.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.gl.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.gl.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.gl.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.gl.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.image16.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.pdf.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.pdf.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.pdf.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.pdf.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.ps.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.recording.xfail.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.recording.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.recording.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.recording.xfail.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.script.xfail.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.script.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.script.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.script.xfail.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.xfail.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.xfail.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.xlib-fallback.xfail.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.xlib-fallback.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.xlib-fallback.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.xlib-fallback.xfail.png diff --git a/3rd-party/cairo/test/reference/scale-offset-similar.xlib.xfail.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.xlib.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-similar.xlib.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-similar.xlib.xfail.png diff --git a/3rd-party/cairo/test/reference/scale-offset-xlib-fallback.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-xlib-fallback.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-xlib-fallback.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-xlib-fallback.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-xlib-window.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-xlib-window.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-xlib-window.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-xlib-window.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-xlib.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-xlib.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-xlib.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-xlib.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/scale-offset-xlib.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-offset-xlib.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-offset-xlib.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-offset-xlib.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/scale-source-surface-paint.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-source-surface-paint.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-source-surface-paint.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-source-surface-paint.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/scale-source-surface-paint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-source-surface-paint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-source-surface-paint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-source-surface-paint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/scale-source-surface-paint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-source-surface-paint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-source-surface-paint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-source-surface-paint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/scale-source-surface-paint.pdf.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/scale-source-surface-paint.pdf.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-source-surface-paint.pdf.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/scale-source-surface-paint.pdf.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/scale-source-surface-paint.pdf.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/scale-source-surface-paint.pdf.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-source-surface-paint.pdf.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/scale-source-surface-paint.pdf.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/scale-source-surface-paint.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/scale-source-surface-paint.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-source-surface-paint.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/scale-source-surface-paint.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/scale-source-surface-paint.svg.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/scale-source-surface-paint.svg.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-source-surface-paint.svg.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/scale-source-surface-paint.svg.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/scale-source-surface-paint.svg.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/scale-source-surface-paint.svg.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/scale-source-surface-paint.svg.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/scale-source-surface-paint.svg.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/select-font-face.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/select-font-face.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/select-font-face.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/select-font-face.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/select-font-face.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/select-font-face.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/select-font-face.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/select-font-face.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/select-font-face.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/select-font-face.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/select-font-face.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/select-font-face.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/select-font-face.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/select-font-face.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/select-font-face.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/select-font-face.image16.ref.png diff --git a/3rd-party/cairo/test/reference/select-font-face.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/select-font-face.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/select-font-face.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/select-font-face.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/select-font-face.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/select-font-face.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/select-font-face.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/select-font-face.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/select-font-face.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/select-font-face.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/select-font-face.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/select-font-face.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/select-font-face.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/select-font-face.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/select-font-face.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/select-font-face.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/select-font-face.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/select-font-face.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/select-font-face.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/select-font-face.traps.ref.png diff --git a/3rd-party/cairo/test/reference/self-copy-overlap.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-copy-overlap.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-copy-overlap.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-copy-overlap.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/self-copy-overlap.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-copy-overlap.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-copy-overlap.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-copy-overlap.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/self-copy-overlap.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-copy-overlap.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-copy-overlap.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-copy-overlap.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/self-copy-overlap.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-copy-overlap.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-copy-overlap.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-copy-overlap.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/self-copy-overlap.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-copy-overlap.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-copy-overlap.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-copy-overlap.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/self-copy-overlap.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-copy-overlap.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-copy-overlap.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-copy-overlap.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/self-copy.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-copy.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-copy.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-copy.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/self-copy.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-copy.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-copy.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-copy.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/self-copy.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-copy.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-copy.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-copy.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/self-copy.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-copy.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-copy.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-copy.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/self-copy.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-copy.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-copy.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-copy.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/self-copy.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-copy.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-copy.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-copy.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/self-copy.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-copy.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-copy.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-copy.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/self-copy.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-copy.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-copy.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-copy.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/self-intersecting.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-intersecting.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-intersecting.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-intersecting.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/self-intersecting.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-intersecting.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-intersecting.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-intersecting.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/self-intersecting.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-intersecting.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-intersecting.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-intersecting.ps.ref.png diff --git a/3rd-party/cairo/test/reference/self-intersecting.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/self-intersecting.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-intersecting.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/self-intersecting.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/self-intersecting.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-intersecting.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-intersecting.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-intersecting.ref.png diff --git a/3rd-party/cairo/test/reference/self-intersecting.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-intersecting.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-intersecting.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-intersecting.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/self-intersecting.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/self-intersecting.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/self-intersecting.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/self-intersecting.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/set-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/set-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/set-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/set-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/set-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/set-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/set-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/set-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/set-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/set-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/set-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/set-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/set-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/set-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/set-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/set-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/shape-general-convex.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-general-convex.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-general-convex.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-general-convex.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/shape-general-convex.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-general-convex.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-general-convex.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-general-convex.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/shape-general-convex.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-general-convex.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-general-convex.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-general-convex.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/shape-general-convex.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-general-convex.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-general-convex.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-general-convex.ps.ref.png diff --git a/3rd-party/cairo/test/reference/shape-general-convex.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-general-convex.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-general-convex.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-general-convex.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/shape-general-convex.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-general-convex.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-general-convex.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-general-convex.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/shape-general-convex.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-general-convex.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-general-convex.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-general-convex.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/shape-sierpinski.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-sierpinski.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/shape-sierpinski.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-sierpinski.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/shape-sierpinski.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-sierpinski.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/shape-sierpinski.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-sierpinski.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/shape-sierpinski.pdf.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.pdf.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-sierpinski.pdf.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.pdf.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/shape-sierpinski.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-sierpinski.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.ps.ref.png diff --git a/3rd-party/cairo/test/reference/shape-sierpinski.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-sierpinski.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/shape-sierpinski.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-sierpinski.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/shape-sierpinski.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-sierpinski.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/shape-sierpinski.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-sierpinski.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/shape-sierpinski.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/shape-sierpinski.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/shape-sierpinski.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/show-glyphs-advance.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-glyphs-advance.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/show-glyphs-advance.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-glyphs-advance.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/show-glyphs-advance.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-glyphs-advance.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/show-glyphs-advance.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-glyphs-advance.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.image16.ref.png diff --git a/3rd-party/cairo/test/reference/show-glyphs-advance.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-glyphs-advance.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.ps.ref.png diff --git a/3rd-party/cairo/test/reference/show-glyphs-advance.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-glyphs-advance.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/show-glyphs-advance.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-glyphs-advance.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/show-glyphs-advance.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-glyphs-advance.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.svg.ref.png diff --git a/3rd-party/cairo/test/reference/show-glyphs-advance.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-glyphs-advance.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-glyphs-advance.traps.ref.png diff --git a/3rd-party/cairo/test/reference/show-glyphs-many.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-glyphs-many.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-glyphs-many.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-glyphs-many.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/show-glyphs-many.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-glyphs-many.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-glyphs-many.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-glyphs-many.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/show-glyphs-many.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-glyphs-many.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-glyphs-many.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-glyphs-many.ref.png diff --git a/3rd-party/cairo/test/reference/show-text-current-point.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-text-current-point.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-text-current-point.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-text-current-point.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/show-text-current-point.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-text-current-point.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-text-current-point.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-text-current-point.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/show-text-current-point.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-text-current-point.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-text-current-point.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-text-current-point.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/show-text-current-point.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-text-current-point.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-text-current-point.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-text-current-point.image16.ref.png diff --git a/3rd-party/cairo/test/reference/show-text-current-point.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-text-current-point.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-text-current-point.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-text-current-point.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/show-text-current-point.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-text-current-point.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-text-current-point.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-text-current-point.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/show-text-current-point.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-text-current-point.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-text-current-point.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-text-current-point.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/show-text-current-point.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-text-current-point.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-text-current-point.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-text-current-point.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/show-text-current-point.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/show-text-current-point.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/show-text-current-point.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/show-text-current-point.traps.ref.png diff --git a/3rd-party/cairo/test/reference/skew-extreme.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/skew-extreme.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/skew-extreme.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/skew-extreme.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/skew-extreme.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/skew-extreme.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/skew-extreme.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/skew-extreme.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/skew-extreme.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/skew-extreme.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/skew-extreme.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/skew-extreme.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/skew-extreme.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/skew-extreme.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/skew-extreme.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/skew-extreme.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/skew-extreme.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/skew-extreme.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/skew-extreme.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/skew-extreme.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/skew-extreme.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/skew-extreme.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/skew-extreme.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/skew-extreme.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/skew-extreme.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/skew-extreme.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/skew-extreme.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/skew-extreme.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/skew-extreme.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/skew-extreme.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/skew-extreme.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/skew-extreme.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask-fill.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-fill.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-fill.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-fill.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask-fill.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-fill.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-fill.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-fill.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask-fill.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-fill.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-fill.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-fill.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask-fill.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-fill.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-fill.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-fill.image16.ref.png diff --git a/3rd-party/cairo/test/reference/smask-fill.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-fill.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-fill.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-fill.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/smask-fill.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-fill.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-fill.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-fill.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/smask-fill.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-fill.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-fill.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-fill.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask-fill.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-fill.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-fill.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-fill.svg.ref.png diff --git a/3rd-party/cairo/test/reference/smask-fill.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-fill.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-fill.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-fill.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask-fill.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-fill.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-fill.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-fill.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask-image-mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-image-mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-image-mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-image-mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask-image-mask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-image-mask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-image-mask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-image-mask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask-image-mask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-image-mask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-image-mask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-image-mask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask-image-mask.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-image-mask.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-image-mask.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-image-mask.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/smask-image-mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-image-mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-image-mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-image-mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask-mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask-mask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-mask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-mask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-mask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask-mask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-mask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-mask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-mask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask-mask.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-mask.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-mask.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-mask.image16.ref.png diff --git a/3rd-party/cairo/test/reference/smask-mask.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-mask.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-mask.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-mask.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/smask-mask.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-mask.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-mask.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-mask.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/smask-mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask-mask.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-mask.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-mask.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-mask.svg.ref.png diff --git a/3rd-party/cairo/test/reference/smask-paint.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-paint.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-paint.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-paint.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask-paint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-paint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-paint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-paint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask-paint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-paint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-paint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-paint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask-paint.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-paint.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-paint.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-paint.image16.ref.png diff --git a/3rd-party/cairo/test/reference/smask-paint.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-paint.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-paint.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-paint.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/smask-paint.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-paint.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-paint.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-paint.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/smask-paint.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-paint.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-paint.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-paint.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask-paint.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-paint.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-paint.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-paint.svg.ref.png diff --git a/3rd-party/cairo/test/reference/smask-stroke.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-stroke.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-stroke.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-stroke.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask-stroke.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-stroke.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-stroke.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-stroke.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask-stroke.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-stroke.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-stroke.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-stroke.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask-stroke.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-stroke.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-stroke.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-stroke.image16.ref.png diff --git a/3rd-party/cairo/test/reference/smask-stroke.pdf.xfail.png b/io2d/src/3rd-party/cairo/test/reference/smask-stroke.pdf.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-stroke.pdf.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/smask-stroke.pdf.xfail.png diff --git a/3rd-party/cairo/test/reference/smask-stroke.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-stroke.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-stroke.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-stroke.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/smask-stroke.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-stroke.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-stroke.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-stroke.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask-stroke.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-stroke.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-stroke.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-stroke.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask-stroke.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-stroke.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-stroke.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-stroke.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask-text.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-text.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-text.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-text.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask-text.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-text.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-text.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-text.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask-text.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-text.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-text.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-text.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask-text.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-text.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-text.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-text.image16.ref.png diff --git a/3rd-party/cairo/test/reference/smask-text.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-text.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-text.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-text.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask-text.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-text.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-text.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-text.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask-text.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-text.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-text.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-text.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/smask-text.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-text.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-text.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-text.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/smask-text.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-text.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-text.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-text.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/smask-text.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-text.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-text.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-text.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/smask-text.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-text.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-text.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-text.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask-text.script.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-text.script.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-text.script.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-text.script.ref.png diff --git a/3rd-party/cairo/test/reference/smask-text.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-text.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-text.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-text.svg.ref.png diff --git a/3rd-party/cairo/test/reference/smask-text.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-text.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-text.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-text.traps.ref.png diff --git a/3rd-party/cairo/test/reference/smask-text.xlib-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask-text.xlib-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask-text.xlib-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask-text.xlib-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/smask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask.image16.ref.png diff --git a/3rd-party/cairo/test/reference/smask.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/smask.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask.pdf.xfail.png b/io2d/src/3rd-party/cairo/test/reference/smask.pdf.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask.pdf.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/smask.pdf.xfail.png diff --git a/3rd-party/cairo/test/reference/smask.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask.ps.ref.png diff --git a/3rd-party/cairo/test/reference/smask.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/smask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/smask.script.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask.script.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask.script.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask.script.ref.png diff --git a/3rd-party/cairo/test/reference/smask.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask.svg.ref.png diff --git a/3rd-party/cairo/test/reference/smask.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask.traps.ref.png diff --git a/3rd-party/cairo/test/reference/smask.xlib-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/smask.xlib-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/smask.xlib-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/smask.xlib-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/solid-pattern-cache-stress.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/solid-pattern-cache-stress.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/solid-pattern-cache-stress.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/solid-pattern-cache-stress.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/solid-pattern-cache-stress.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/solid-pattern-cache-stress.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/solid-pattern-cache-stress.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/solid-pattern-cache-stress.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/solid-pattern-cache-stress.ref.png b/io2d/src/3rd-party/cairo/test/reference/solid-pattern-cache-stress.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/solid-pattern-cache-stress.ref.png rename to io2d/src/3rd-party/cairo/test/reference/solid-pattern-cache-stress.ref.png diff --git a/3rd-party/cairo/test/reference/source-clip-scale.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-clip-scale.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-clip-scale.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-clip-scale.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/source-clip-scale.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-clip-scale.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-clip-scale.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-clip-scale.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/source-clip-scale.gl.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-clip-scale.gl.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-clip-scale.gl.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-clip-scale.gl.ref.png diff --git a/3rd-party/cairo/test/reference/source-clip-scale.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-clip-scale.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-clip-scale.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-clip-scale.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/source-clip-scale.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-clip-scale.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-clip-scale.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-clip-scale.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/source-clip-scale.ps2.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-clip-scale.ps2.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-clip-scale.ps2.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-clip-scale.ps2.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/source-clip-scale.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-clip-scale.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-clip-scale.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-clip-scale.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/source-clip-scale.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-clip-scale.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-clip-scale.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-clip-scale.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/source-clip-scale.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-clip-scale.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-clip-scale.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-clip-scale.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/source-clip-scale.recording.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-clip-scale.recording.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-clip-scale.recording.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-clip-scale.recording.ref.png diff --git a/3rd-party/cairo/test/reference/source-clip-scale.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-clip-scale.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-clip-scale.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-clip-scale.ref.png diff --git a/3rd-party/cairo/test/reference/source-clip-scale.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-clip-scale.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-clip-scale.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-clip-scale.svg.ref.png diff --git a/3rd-party/cairo/test/reference/source-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/source-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/source-clip.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-clip.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-clip.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-clip.ref.png diff --git a/3rd-party/cairo/test/reference/source-surface-scale-paint.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-surface-scale-paint.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-surface-scale-paint.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-surface-scale-paint.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/source-surface-scale-paint.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-surface-scale-paint.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-surface-scale-paint.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-surface-scale-paint.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/source-surface-scale-paint.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-surface-scale-paint.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-surface-scale-paint.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-surface-scale-paint.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/source-surface-scale-paint.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/source-surface-scale-paint.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/source-surface-scale-paint.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/source-surface-scale-paint.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/spline-decomposition.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/spline-decomposition.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/spline-decomposition.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/spline-decomposition.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/spline-decomposition.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/spline-decomposition.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/spline-decomposition.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/spline-decomposition.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/spline-decomposition.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/spline-decomposition.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/spline-decomposition.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/spline-decomposition.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/spline-decomposition.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/spline-decomposition.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/spline-decomposition.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/spline-decomposition.image16.ref.png diff --git a/3rd-party/cairo/test/reference/spline-decomposition.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/spline-decomposition.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/spline-decomposition.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/spline-decomposition.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/spline-decomposition.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/spline-decomposition.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/spline-decomposition.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/spline-decomposition.ps.ref.png diff --git a/3rd-party/cairo/test/reference/spline-decomposition.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/spline-decomposition.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/spline-decomposition.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/spline-decomposition.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/spline-decomposition.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/spline-decomposition.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/spline-decomposition.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/spline-decomposition.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/spline-decomposition.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/spline-decomposition.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/spline-decomposition.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/spline-decomposition.svg.ref.png diff --git a/3rd-party/cairo/test/reference/spline-decomposition.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/spline-decomposition.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/spline-decomposition.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/spline-decomposition.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/spline-decomposition.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/spline-decomposition.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/spline-decomposition.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/spline-decomposition.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/stride-12-image.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/stride-12-image.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stride-12-image.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stride-12-image.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/stride-12-image.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/stride-12-image.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stride-12-image.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stride-12-image.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/stride-12-image.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/stride-12-image.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stride-12-image.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stride-12-image.image16.ref.png diff --git a/3rd-party/cairo/test/reference/stride-12-image.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/stride-12-image.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stride-12-image.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stride-12-image.ps.ref.png diff --git a/3rd-party/cairo/test/reference/stride-12-image.ref.png b/io2d/src/3rd-party/cairo/test/reference/stride-12-image.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stride-12-image.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stride-12-image.ref.png diff --git a/3rd-party/cairo/test/reference/stride-12-xlib-fallback.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/stride-12-xlib-fallback.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stride-12-xlib-fallback.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stride-12-xlib-fallback.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/stride-12-xlib-window.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/stride-12-xlib-window.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stride-12-xlib-window.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stride-12-xlib-window.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/stride-12-xlib.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/stride-12-xlib.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stride-12-xlib.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stride-12-xlib.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/stride-12-xlib.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/stride-12-xlib.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stride-12-xlib.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stride-12-xlib.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-clipped.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-clipped.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-clipped.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-clipped.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-ctm-caps.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-ctm-caps.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-ctm-caps.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-ctm-caps.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-ctm-caps.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-ctm-caps.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.image16.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-ctm-caps.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-ctm-caps.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-ctm-caps.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-ctm-caps.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-ctm-caps.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-ctm-caps.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-ctm-caps.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-ctm-caps.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-ctm-caps.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-ctm-caps.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-ctm-caps.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-ctm-caps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-ctm-caps.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-ctm-caps.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-ctm-caps.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-ctm-caps.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-ctm-caps.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-image.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-image.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-image.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-image.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-image.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-image.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-image.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-image.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-image.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-image.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-image.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-image.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-image.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-image.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-image.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-image.image16.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-image.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-image.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-image.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-image.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-image.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-image.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-image.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-image.ps.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-image.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-image.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-image.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-image.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-image.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-image.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-image.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-image.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-image.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-image.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-image.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-image.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-image.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-image.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-image.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-image.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-open-box.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-open-box.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-open-box.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-open-box.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-open-box.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-open-box.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-open-box.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-open-box.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-open-box.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-open-box.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-open-box.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-open-box.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-pattern.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-pattern.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-pattern.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-pattern.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-pattern.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-pattern.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-pattern.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-pattern.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-pattern.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-pattern.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-pattern.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-pattern.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-pattern.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-pattern.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-pattern.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-pattern.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-pattern.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-pattern.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-pattern.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-pattern.traps.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-xlib-fallback.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-xlib-fallback.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-xlib-fallback.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-xlib-fallback.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-xlib-window.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-xlib-window.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-xlib-window.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-xlib-window.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-xlib.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-xlib.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-xlib.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-xlib.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/stroke-xlib.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/stroke-xlib.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/stroke-xlib.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/stroke-xlib.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-image-repeat.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-image-repeat.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-image-repeat.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-image-repeat.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-image-repeat.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-image-repeat.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-image-repeat.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-image-repeat.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-image-repeat.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-image-repeat.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-image-repeat.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-image-repeat.image16.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-image-repeat.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-image-repeat.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-image-repeat.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-image-repeat.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-modify-child.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-modify-child.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-modify-child.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-modify-child.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-modify-child.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-modify-child.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-modify-child.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-modify-child.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-modify-child.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-modify-child.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-modify-child.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-modify-child.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-modify-parent.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-modify-parent.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-modify-parent.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-modify-parent.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-modify-parent.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-modify-parent.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-modify-parent.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-modify-parent.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-modify-parent.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-modify-parent.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-modify-parent.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-modify-parent.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-outside-target.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-outside-target.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-outside-target.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-outside-target.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-outside-target.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-outside-target.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-outside-target.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-outside-target.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-outside-target.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-outside-target.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-outside-target.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-outside-target.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-outside-target.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-outside-target.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-outside-target.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-outside-target.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-pad.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-pad.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-pad.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-pad.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-pad.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-pad.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-pad.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-pad.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-pad.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-pad.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-pad.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-pad.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/subsurface-pad.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-pad.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-pad.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-pad.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-reflect.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-reflect.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-reflect.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-reflect.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-reflect.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-reflect.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-reflect.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-reflect.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-reflect.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-reflect.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-reflect.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-reflect.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-repeat.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-repeat.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-repeat.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-repeat.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-repeat.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-repeat.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-repeat.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-repeat.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-repeat.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-repeat.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-repeat.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-repeat.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-scale.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-scale.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-scale.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-scale.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-scale.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-scale.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-scale.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-scale.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-scale.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-scale.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-scale.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-scale.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-scale.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-scale.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-scale.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-scale.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-scale.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-scale.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-scale.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-scale.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-scale.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-scale.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-scale.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-scale.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-similar-repeat.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-similar-repeat.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-similar-repeat.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-similar-repeat.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-similar-repeat.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-similar-repeat.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-similar-repeat.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-similar-repeat.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface-similar-repeat.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface-similar-repeat.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface-similar-repeat.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface-similar-repeat.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface.image16.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface.ps.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/subsurface.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/subsurface.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/subsurface.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/subsurface.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-big-scale-down.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-big-scale-down.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-big-scale-down.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.ps.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-big-scale-down.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-big-scale-down.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-big-scale-down.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-operator.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-operator.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-operator.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-operator.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-operator.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-operator.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-operator.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-operator.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.image16.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-operator.pdf.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.pdf.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-operator.pdf.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.pdf.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-operator.pdf.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.pdf.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-operator.pdf.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.pdf.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-operator.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-operator.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-operator.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-operator.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-operator.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-operator.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-operator.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-operator.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-operator.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-operator.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-operator.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-none.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-pad.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-reflect.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down-extend-repeat.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.image16.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-down.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-down.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-down.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-up.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-up.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-up.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-up.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-up.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-up.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-up.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-up.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.image16.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-up.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-up.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-up.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-up.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-up.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-up.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-up.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-up.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/surface-pattern-scale-up.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern-scale-up.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern-scale-up.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern.image16.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern.pdf.xfail.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern.pdf.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern.pdf.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern.pdf.xfail.png diff --git a/3rd-party/cairo/test/reference/surface-pattern.ps.xfail.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern.ps.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern.ps.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern.ps.xfail.png diff --git a/3rd-party/cairo/test/reference/surface-pattern.quartz.xfail.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern.quartz.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern.quartz.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern.quartz.xfail.png diff --git a/3rd-party/cairo/test/reference/surface-pattern.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/surface-pattern.svg.xfail.png b/io2d/src/3rd-party/cairo/test/reference/surface-pattern.svg.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/surface-pattern.svg.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/surface-pattern.svg.xfail.png diff --git a/3rd-party/cairo/test/reference/svg-surface-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/svg-surface-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/svg-surface-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/svg-surface-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/svg-surface-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/svg-surface-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/svg-surface-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/svg-surface-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/svg-surface-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/svg-surface-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/svg-surface-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/svg-surface-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/svg-surface-source.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/svg-surface-source.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/svg-surface-source.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/svg-surface-source.image16.ref.png diff --git a/3rd-party/cairo/test/reference/svg-surface-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/svg-surface-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/svg-surface-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/svg-surface-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/svg-surface-source.svg12.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/svg-surface-source.svg12.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/svg-surface-source.svg12.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/svg-surface-source.svg12.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/svg-surface-source.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/svg-surface-source.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/svg-surface-source.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/svg-surface-source.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/text-antialias-gray.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-gray.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-gray.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-gray.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-gray.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-gray.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-gray.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-gray.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-gray.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-gray.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-gray.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-gray.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-gray.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-gray.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-gray.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-gray.image16.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-gray.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-gray.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-gray.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-gray.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-gray.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-gray.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-gray.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-gray.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-gray.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-gray.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-gray.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-gray.traps.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-none.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-none.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-none.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-none.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-none.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-none.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-none.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-none.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-none.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-none.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-none.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-none.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-none.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-none.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-none.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-none.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.image16.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-bgr.traps.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.image16.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-rgb.traps.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.image16.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vbgr.traps.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.image16.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel-vrgb.traps.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel.base.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.base.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel.base.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.base.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel.base.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.base.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel.base.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.base.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.image16.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-antialias-subpixel.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-antialias-subpixel.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-antialias-subpixel.traps.ref.png diff --git a/3rd-party/cairo/test/reference/text-glyph-range.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-glyph-range.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-glyph-range.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-glyph-range.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-glyph-range.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-glyph-range.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-glyph-range.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-glyph-range.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-glyph-range.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-glyph-range.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-glyph-range.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-glyph-range.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-glyph-range.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-glyph-range.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-glyph-range.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-glyph-range.image16.ref.png diff --git a/3rd-party/cairo/test/reference/text-glyph-range.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-glyph-range.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-glyph-range.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-glyph-range.ps.ref.png diff --git a/3rd-party/cairo/test/reference/text-glyph-range.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-glyph-range.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-glyph-range.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-glyph-range.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/text-glyph-range.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-glyph-range.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-glyph-range.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-glyph-range.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-glyph-range.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-glyph-range.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-glyph-range.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-glyph-range.traps.ref.png diff --git a/3rd-party/cairo/test/reference/text-pattern.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-pattern.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-pattern.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-pattern.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-pattern.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-pattern.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-pattern.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-pattern.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-pattern.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-pattern.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-pattern.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-pattern.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-pattern.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-pattern.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-pattern.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-pattern.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-pattern.pdf.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-pattern.pdf.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-pattern.pdf.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-pattern.pdf.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-pattern.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-pattern.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-pattern.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-pattern.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-pattern.ps2.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-pattern.ps2.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-pattern.ps2.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-pattern.ps2.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-pattern.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-pattern.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-pattern.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-pattern.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-pattern.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-pattern.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-pattern.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-pattern.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-pattern.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-pattern.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-pattern.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-pattern.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-pattern.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-pattern.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-pattern.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-pattern.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-pattern.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-pattern.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-pattern.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-pattern.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-pattern.svg.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-pattern.svg.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-pattern.svg.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-pattern.svg.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-pattern.svg.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-pattern.svg.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-pattern.svg.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-pattern.svg.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-pattern.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-pattern.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-pattern.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-pattern.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-pattern.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-pattern.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-pattern.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-pattern.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-rotate.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-rotate.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-rotate.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-rotate.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-rotate.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-rotate.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-rotate.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-rotate.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-rotate.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-rotate.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-rotate.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-rotate.image16.ref.png diff --git a/3rd-party/cairo/test/reference/text-rotate.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-rotate.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-rotate.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-rotate.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-rotate.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-rotate.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-rotate.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-rotate.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-rotate.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-rotate.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-rotate.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-rotate.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/text-rotate.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-rotate.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-rotate.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-rotate.ps.ref.png diff --git a/3rd-party/cairo/test/reference/text-rotate.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-rotate.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-rotate.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-rotate.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/text-rotate.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-rotate.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-rotate.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-rotate.ref.png diff --git a/3rd-party/cairo/test/reference/text-rotate.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-rotate.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-rotate.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-rotate.svg.ref.png diff --git a/3rd-party/cairo/test/reference/text-rotate.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-rotate.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-rotate.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-rotate.traps.ref.png diff --git a/3rd-party/cairo/test/reference/text-rotate.xlib-fallback.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-rotate.xlib-fallback.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-rotate.xlib-fallback.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-rotate.xlib-fallback.ref.png diff --git a/3rd-party/cairo/test/reference/text-transform.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-transform.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-transform.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-transform.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-transform.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-transform.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-transform.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-transform.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-transform.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-transform.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-transform.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-transform.image16.ref.png diff --git a/3rd-party/cairo/test/reference/text-transform.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-transform.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-transform.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-transform.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/text-transform.pdf.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-transform.pdf.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-transform.pdf.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-transform.pdf.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/text-transform.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-transform.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-transform.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-transform.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/text-transform.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-transform.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-transform.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-transform.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/text-transform.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-transform.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-transform.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-transform.ref.png diff --git a/3rd-party/cairo/test/reference/text-transform.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/text-transform.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/text-transform.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/text-transform.svg.ref.png diff --git a/3rd-party/cairo/test/reference/tiger.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/tiger.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/tiger.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/tiger.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/tiger.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/tiger.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/tiger.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/tiger.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/tiger.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/tiger.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/tiger.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/tiger.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/tiger.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/tiger.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/tiger.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/tiger.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/tiger.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/tiger.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/tiger.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/tiger.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/tiger.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/tiger.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/tiger.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/tiger.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/tighten-bounds.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/tighten-bounds.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/tighten-bounds.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/tighten-bounds.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/tighten-bounds.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/tighten-bounds.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/tighten-bounds.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/tighten-bounds.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/tighten-bounds.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/tighten-bounds.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/tighten-bounds.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/tighten-bounds.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/tighten-bounds.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/tighten-bounds.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/tighten-bounds.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/tighten-bounds.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/tighten-bounds.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/tighten-bounds.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/tighten-bounds.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/tighten-bounds.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/tighten-bounds.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/tighten-bounds.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/tighten-bounds.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/tighten-bounds.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/transforms.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/transforms.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/transforms.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/transforms.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/transforms.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/transforms.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/transforms.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/transforms.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/transforms.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/transforms.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/transforms.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/transforms.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/transforms.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/transforms.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/transforms.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/transforms.image16.ref.png diff --git a/3rd-party/cairo/test/reference/transforms.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/transforms.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/transforms.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/transforms.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/transforms.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/transforms.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/transforms.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/transforms.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/transforms.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/transforms.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/transforms.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/transforms.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/transforms.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/transforms.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/transforms.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/transforms.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/transforms.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/transforms.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/transforms.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/transforms.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/translate-show-surface.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/translate-show-surface.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/translate-show-surface.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/translate-show-surface.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/translate-show-surface.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/translate-show-surface.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/translate-show-surface.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/translate-show-surface.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/translate-show-surface.ref.png b/io2d/src/3rd-party/cairo/test/reference/translate-show-surface.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/translate-show-surface.ref.png rename to io2d/src/3rd-party/cairo/test/reference/translate-show-surface.ref.png diff --git a/3rd-party/cairo/test/reference/trap-clip.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/trap-clip.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/trap-clip.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/trap-clip.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/trap-clip.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/trap-clip.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/trap-clip.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/trap-clip.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/trap-clip.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/trap-clip.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/trap-clip.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/trap-clip.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/trap-clip.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/trap-clip.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/trap-clip.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/trap-clip.image16.ref.png diff --git a/3rd-party/cairo/test/reference/trap-clip.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/trap-clip.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/trap-clip.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/trap-clip.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/trap-clip.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/trap-clip.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/trap-clip.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/trap-clip.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/trap-clip.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/trap-clip.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/trap-clip.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/trap-clip.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/trap-clip.ps2.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/trap-clip.ps2.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/trap-clip.ps2.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/trap-clip.ps2.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/trap-clip.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/trap-clip.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/trap-clip.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/trap-clip.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/trap-clip.ps3.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/trap-clip.ps3.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/trap-clip.ps3.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/trap-clip.ps3.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/trap-clip.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/trap-clip.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/trap-clip.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/trap-clip.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/trap-clip.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/trap-clip.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/trap-clip.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/trap-clip.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/trap-clip.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/trap-clip.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/trap-clip.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/trap-clip.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/trap-clip.test-paginated.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/trap-clip.test-paginated.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/trap-clip.test-paginated.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/trap-clip.test-paginated.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/trap-clip.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/trap-clip.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/trap-clip.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/trap-clip.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/trap-clip.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/trap-clip.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/trap-clip.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/trap-clip.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-gray.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-gray.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-gray.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-gray.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-gray.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-gray.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-gray.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-gray.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-gray.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-gray.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-gray.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-gray.image16.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-gray.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-gray.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-gray.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-gray.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-gray.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-gray.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-gray.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-gray.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-gray.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-gray.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-gray.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-gray.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-gray.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-gray.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-gray.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-gray.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-gray.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-gray.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-gray.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-gray.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-mixed.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-mixed.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-mixed.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-mixed.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-mixed.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-mixed.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-mixed.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-mixed.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-mixed.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-mixed.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-mixed.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-mixed.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-mixed.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-mixed.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-mixed.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-mixed.image16.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-mixed.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-mixed.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-mixed.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-mixed.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-mixed.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-mixed.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-mixed.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-mixed.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-mixed.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-mixed.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-mixed.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-mixed.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-none.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-none.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-none.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-none.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-none.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-none.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-none.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-none.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-none.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-none.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-none.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-none.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-none.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-none.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-none.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-none.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-none.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-none.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-none.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-none.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-none.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-none.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-none.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-none.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-subpixel.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-subpixel.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-subpixel.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-subpixel.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-subpixel.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-subpixel.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-subpixel.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-subpixel.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-subpixel.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-subpixel.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-subpixel.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-subpixel.image16.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-subpixel.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-subpixel.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-subpixel.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-subpixel.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-subpixel.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-subpixel.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-subpixel.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-subpixel.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-subpixel.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-subpixel.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-subpixel.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-subpixel.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-subpixel.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-subpixel.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-subpixel.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-subpixel.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin-antialias-subpixel.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/twin.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/twin.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/twin.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin.image16.ref.png diff --git a/3rd-party/cairo/test/reference/twin.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/twin.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/twin.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin.ps.ref.png diff --git a/3rd-party/cairo/test/reference/twin.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin.ref.png diff --git a/3rd-party/cairo/test/reference/twin.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin.svg.ref.png diff --git a/3rd-party/cairo/test/reference/twin.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/twin.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/twin.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/twin.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/twin.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/unaligned-box.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/unaligned-box.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unaligned-box.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unaligned-box.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/unaligned-box.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/unaligned-box.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unaligned-box.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unaligned-box.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/unaligned-box.ref.png b/io2d/src/3rd-party/cairo/test/reference/unaligned-box.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unaligned-box.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unaligned-box.ref.png diff --git a/3rd-party/cairo/test/reference/unaligned-box.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/unaligned-box.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unaligned-box.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unaligned-box.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/unaligned-box.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/unaligned-box.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unaligned-box.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unaligned-box.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/unantialiased-shapes.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/unantialiased-shapes.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unantialiased-shapes.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unantialiased-shapes.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/unantialiased-shapes.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/unantialiased-shapes.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unantialiased-shapes.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unantialiased-shapes.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/unantialiased-shapes.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/unantialiased-shapes.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unantialiased-shapes.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unantialiased-shapes.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/unantialiased-shapes.ref.png b/io2d/src/3rd-party/cairo/test/reference/unantialiased-shapes.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unantialiased-shapes.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unantialiased-shapes.ref.png diff --git a/3rd-party/cairo/test/reference/unantialiased-shapes.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/unantialiased-shapes.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unantialiased-shapes.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unantialiased-shapes.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/unantialiased-shapes.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/unantialiased-shapes.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unantialiased-shapes.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unantialiased-shapes.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.gl.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.gl.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.gl.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.gl.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.gl.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.gl.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.gl.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.gl.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.image16.ref.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.ps2.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.ps2.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.ps2.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.ps2.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.ps3.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.ps3.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.ps3.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.ps3.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.quartz.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.quartz.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.quartz.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.quartz.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.quartz.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.quartz.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.quartz.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.quartz.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.svg12.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.svg12.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.svg12.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.svg12.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/unbounded-operator.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/unbounded-operator.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unbounded-operator.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unbounded-operator.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/unclosed-strokes.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/unclosed-strokes.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unclosed-strokes.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unclosed-strokes.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/unclosed-strokes.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/unclosed-strokes.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unclosed-strokes.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unclosed-strokes.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/unclosed-strokes.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/unclosed-strokes.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unclosed-strokes.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unclosed-strokes.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/unclosed-strokes.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/unclosed-strokes.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unclosed-strokes.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unclosed-strokes.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/unclosed-strokes.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/unclosed-strokes.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unclosed-strokes.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unclosed-strokes.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/unclosed-strokes.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/unclosed-strokes.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/unclosed-strokes.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/unclosed-strokes.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-mask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-mask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-mask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-mask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-mask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-mask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-mask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-mask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-mask.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-mask.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-mask.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-mask.image16.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-mask.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-mask.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-mask.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-mask.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-mask.ps2.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-mask.ps2.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-mask.ps2.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-mask.ps2.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-mask.ps3.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-mask.ps3.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-mask.ps3.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-mask.ps3.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-mask.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-mask.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-mask.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-mask.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-mask.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-mask.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-mask.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-mask.svg.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-proxy.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-proxy.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-proxy.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-proxy.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-proxy.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-proxy.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-proxy.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-proxy.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-proxy.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-proxy.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-proxy.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-proxy.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-proxy.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-proxy.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-proxy.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-proxy.image16.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-proxy.pdf.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-proxy.pdf.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-proxy.pdf.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-proxy.pdf.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-proxy.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-proxy.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-proxy.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-proxy.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-proxy.pdf.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-proxy.pdf.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-proxy.pdf.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-proxy.pdf.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-proxy.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-proxy.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-proxy.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-proxy.ps.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-proxy.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-proxy.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-proxy.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-proxy.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-proxy.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-proxy.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-proxy.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-proxy.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-proxy.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-proxy.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-proxy.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-proxy.svg.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-proxy.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-proxy.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-proxy.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-proxy.traps.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-rescale.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-rescale.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-rescale.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-rescale.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-rescale.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-rescale.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-rescale.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-rescale.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-rescale.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-rescale.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-rescale.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-rescale.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-rescale.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-rescale.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-rescale.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-rescale.image16.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-rescale.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-rescale.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-rescale.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-rescale.ps.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-rescale.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-rescale.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-rescale.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-rescale.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-rescale.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-rescale.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-rescale.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-rescale.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-rescale.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-rescale.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-rescale.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-rescale.svg.ref.png diff --git a/3rd-party/cairo/test/reference/user-font-rescale.traps.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font-rescale.traps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font-rescale.traps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font-rescale.traps.ref.png diff --git a/3rd-party/cairo/test/reference/user-font.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/user-font.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/user-font.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font.image16.ref.png diff --git a/3rd-party/cairo/test/reference/user-font.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/user-font.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/user-font.pdf.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font.pdf.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font.pdf.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font.pdf.ref.png diff --git a/3rd-party/cairo/test/reference/user-font.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font.ps.ref.png diff --git a/3rd-party/cairo/test/reference/user-font.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/user-font.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font.ref.png diff --git a/3rd-party/cairo/test/reference/user-font.svg.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font.svg.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font.svg.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font.svg.ref.png diff --git a/3rd-party/cairo/test/reference/user-font.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/user-font.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/user-font.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/user-font.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/user-font.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/white-in-noop.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/white-in-noop.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/white-in-noop.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/white-in-noop.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/white-in-noop.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/white-in-noop.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/white-in-noop.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/white-in-noop.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/white-in-noop.ref.png b/io2d/src/3rd-party/cairo/test/reference/white-in-noop.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/white-in-noop.ref.png rename to io2d/src/3rd-party/cairo/test/reference/white-in-noop.ref.png diff --git a/3rd-party/cairo/test/reference/world-map-fill.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map-fill.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map-fill.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map-fill.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/world-map-fill.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map-fill.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map-fill.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map-fill.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/world-map-fill.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map-fill.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map-fill.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map-fill.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/world-map-fill.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map-fill.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map-fill.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map-fill.image16.ref.png diff --git a/3rd-party/cairo/test/reference/world-map-fill.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map-fill.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map-fill.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map-fill.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/world-map-fill.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map-fill.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map-fill.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map-fill.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/world-map-fill.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map-fill.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map-fill.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map-fill.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/world-map-stroke.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map-stroke.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map-stroke.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map-stroke.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/world-map-stroke.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map-stroke.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map-stroke.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map-stroke.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/world-map-stroke.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map-stroke.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map-stroke.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map-stroke.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/world-map-stroke.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map-stroke.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map-stroke.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map-stroke.image16.ref.png diff --git a/3rd-party/cairo/test/reference/world-map-stroke.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map-stroke.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map-stroke.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map-stroke.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/world-map-stroke.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map-stroke.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map-stroke.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map-stroke.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/world-map-stroke.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map-stroke.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map-stroke.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map-stroke.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/world-map-stroke.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map-stroke.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map-stroke.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map-stroke.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/world-map-stroke.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map-stroke.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map-stroke.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map-stroke.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/world-map.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/world-map.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/world-map.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/world-map.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map.image16.ref.png diff --git a/3rd-party/cairo/test/reference/world-map.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/world-map.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/world-map.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/world-map.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/world-map.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/world-map.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/world-map.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/world-map.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-huge-image-shm.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-huge-image-shm.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-huge-image-shm.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-huge-image-shm.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-huge-image-shm.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-huge-image-shm.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-huge-image-shm.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-huge-image-shm.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-huge-image-shm.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-huge-image-shm.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-huge-image-shm.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-huge-image-shm.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-huge-subimage.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-huge-subimage.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-huge-subimage.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-huge-subimage.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-snapshot-assert.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-snapshot-assert.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-snapshot-assert.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-snapshot-assert.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-snapshot-assert.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-snapshot-assert.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-snapshot-assert.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-snapshot-assert.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-snapshot-assert.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-snapshot-assert.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-snapshot-assert.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-snapshot-assert.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-stress-cache.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-stress-cache.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-stress-cache.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-stress-cache.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-stress-cache.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-stress-cache.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-stress-cache.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-stress-cache.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-stress-cache.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-stress-cache.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-stress-cache.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-stress-cache.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-surface-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-surface-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-surface-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-surface-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-surface-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-surface-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-surface-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-surface-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-surface-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-surface-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-surface-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-surface-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-surface-source.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-surface-source.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-surface-source.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-surface-source.image16.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-surface-source.ps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-surface-source.ps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-surface-source.ps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-surface-source.ps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-surface-source.ps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-surface-source.ps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-surface-source.ps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-surface-source.ps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/xcb-surface-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcb-surface-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcb-surface-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcb-surface-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/xcomposite-projection.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcomposite-projection.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/xcomposite-projection.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcomposite-projection.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/xcomposite-projection.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcomposite-projection.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.image16.ref.png diff --git a/3rd-party/cairo/test/reference/xcomposite-projection.mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcomposite-projection.mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/xcomposite-projection.mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcomposite-projection.mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/xcomposite-projection.quartz.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.quartz.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcomposite-projection.quartz.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.quartz.ref.png diff --git a/3rd-party/cairo/test/reference/xcomposite-projection.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcomposite-projection.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.ref.png diff --git a/3rd-party/cairo/test/reference/xcomposite-projection.traps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.traps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcomposite-projection.traps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.traps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/xcomposite-projection.traps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.traps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xcomposite-projection.traps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xcomposite-projection.traps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/xlib-expose-event.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/xlib-expose-event.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xlib-expose-event.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xlib-expose-event.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/xlib-expose-event.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/xlib-expose-event.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xlib-expose-event.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xlib-expose-event.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/xlib-expose-event.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/xlib-expose-event.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xlib-expose-event.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xlib-expose-event.image16.ref.png diff --git a/3rd-party/cairo/test/reference/xlib-expose-event.ps.ref.png b/io2d/src/3rd-party/cairo/test/reference/xlib-expose-event.ps.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xlib-expose-event.ps.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xlib-expose-event.ps.ref.png diff --git a/3rd-party/cairo/test/reference/xlib-expose-event.ref.png b/io2d/src/3rd-party/cairo/test/reference/xlib-expose-event.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xlib-expose-event.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xlib-expose-event.ref.png diff --git a/3rd-party/cairo/test/reference/xlib-surface-source.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xlib-surface-source.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/xlib-surface-source.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xlib-surface-source.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/xlib-surface-source.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xlib-surface-source.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/xlib-surface-source.image16.ref.png b/io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.image16.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xlib-surface-source.image16.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.image16.ref.png diff --git a/3rd-party/cairo/test/reference/xlib-surface-source.ps.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.ps.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xlib-surface-source.ps.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.ps.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/xlib-surface-source.ps.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.ps.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xlib-surface-source.ps.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.ps.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/xlib-surface-source.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/xlib-surface-source.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/xlib-surface-source.svg12.argb32.xfail.png b/io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.svg12.argb32.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/xlib-surface-source.svg12.argb32.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.svg12.argb32.xfail.png diff --git a/3rd-party/cairo/test/reference/xlib-surface-source.svg12.rgb24.xfail.png b/io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.svg12.rgb24.xfail.png similarity index 100% rename from 3rd-party/cairo/test/reference/xlib-surface-source.svg12.rgb24.xfail.png rename to io2d/src/3rd-party/cairo/test/reference/xlib-surface-source.svg12.rgb24.xfail.png diff --git a/3rd-party/cairo/test/reference/zero-alpha.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/zero-alpha.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/zero-alpha.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/zero-alpha.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/zero-alpha.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/zero-alpha.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/zero-alpha.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/zero-alpha.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/zero-alpha.ref.png b/io2d/src/3rd-party/cairo/test/reference/zero-alpha.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/zero-alpha.ref.png rename to io2d/src/3rd-party/cairo/test/reference/zero-alpha.ref.png diff --git a/3rd-party/cairo/test/reference/zero-mask.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/zero-mask.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/zero-mask.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/zero-mask.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/zero-mask.base.argb32.ref.png b/io2d/src/3rd-party/cairo/test/reference/zero-mask.base.argb32.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/zero-mask.base.argb32.ref.png rename to io2d/src/3rd-party/cairo/test/reference/zero-mask.base.argb32.ref.png diff --git a/3rd-party/cairo/test/reference/zero-mask.base.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/zero-mask.base.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/zero-mask.base.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/zero-mask.base.rgb24.ref.png diff --git a/3rd-party/cairo/test/reference/zero-mask.rgb24.ref.png b/io2d/src/3rd-party/cairo/test/reference/zero-mask.rgb24.ref.png similarity index 100% rename from 3rd-party/cairo/test/reference/zero-mask.rgb24.ref.png rename to io2d/src/3rd-party/cairo/test/reference/zero-mask.rgb24.ref.png diff --git a/3rd-party/cairo/test/reflected-stroke.c b/io2d/src/3rd-party/cairo/test/reflected-stroke.c similarity index 100% rename from 3rd-party/cairo/test/reflected-stroke.c rename to io2d/src/3rd-party/cairo/test/reflected-stroke.c diff --git a/3rd-party/cairo/test/rel-path.c b/io2d/src/3rd-party/cairo/test/rel-path.c similarity index 100% rename from 3rd-party/cairo/test/rel-path.c rename to io2d/src/3rd-party/cairo/test/rel-path.c diff --git a/3rd-party/cairo/test/rgb24-ignore-alpha.c b/io2d/src/3rd-party/cairo/test/rgb24-ignore-alpha.c similarity index 100% rename from 3rd-party/cairo/test/rgb24-ignore-alpha.c rename to io2d/src/3rd-party/cairo/test/rgb24-ignore-alpha.c diff --git a/3rd-party/cairo/test/romedalen.jpg b/io2d/src/3rd-party/cairo/test/romedalen.jpg similarity index 100% rename from 3rd-party/cairo/test/romedalen.jpg rename to io2d/src/3rd-party/cairo/test/romedalen.jpg diff --git a/3rd-party/cairo/test/romedalen.png b/io2d/src/3rd-party/cairo/test/romedalen.png similarity index 100% rename from 3rd-party/cairo/test/romedalen.png rename to io2d/src/3rd-party/cairo/test/romedalen.png diff --git a/3rd-party/cairo/test/rotate-image-surface-paint.c b/io2d/src/3rd-party/cairo/test/rotate-image-surface-paint.c similarity index 100% rename from 3rd-party/cairo/test/rotate-image-surface-paint.c rename to io2d/src/3rd-party/cairo/test/rotate-image-surface-paint.c diff --git a/3rd-party/cairo/test/rotated-clip.c b/io2d/src/3rd-party/cairo/test/rotated-clip.c similarity index 100% rename from 3rd-party/cairo/test/rotated-clip.c rename to io2d/src/3rd-party/cairo/test/rotated-clip.c diff --git a/3rd-party/cairo/test/rounded-rectangle-fill.c b/io2d/src/3rd-party/cairo/test/rounded-rectangle-fill.c similarity index 100% rename from 3rd-party/cairo/test/rounded-rectangle-fill.c rename to io2d/src/3rd-party/cairo/test/rounded-rectangle-fill.c diff --git a/3rd-party/cairo/test/rounded-rectangle-stroke.c b/io2d/src/3rd-party/cairo/test/rounded-rectangle-stroke.c similarity index 100% rename from 3rd-party/cairo/test/rounded-rectangle-stroke.c rename to io2d/src/3rd-party/cairo/test/rounded-rectangle-stroke.c diff --git a/3rd-party/cairo/test/run-cairo-test-suite.sh b/io2d/src/3rd-party/cairo/test/run-cairo-test-suite.sh similarity index 100% rename from 3rd-party/cairo/test/run-cairo-test-suite.sh rename to io2d/src/3rd-party/cairo/test/run-cairo-test-suite.sh diff --git a/3rd-party/cairo/test/sample.c b/io2d/src/3rd-party/cairo/test/sample.c similarity index 100% rename from 3rd-party/cairo/test/sample.c rename to io2d/src/3rd-party/cairo/test/sample.c diff --git a/3rd-party/cairo/test/scale-down-source-surface-paint.c b/io2d/src/3rd-party/cairo/test/scale-down-source-surface-paint.c similarity index 100% rename from 3rd-party/cairo/test/scale-down-source-surface-paint.c rename to io2d/src/3rd-party/cairo/test/scale-down-source-surface-paint.c diff --git a/3rd-party/cairo/test/scale-offset-image.c b/io2d/src/3rd-party/cairo/test/scale-offset-image.c similarity index 100% rename from 3rd-party/cairo/test/scale-offset-image.c rename to io2d/src/3rd-party/cairo/test/scale-offset-image.c diff --git a/3rd-party/cairo/test/scale-offset-similar.c b/io2d/src/3rd-party/cairo/test/scale-offset-similar.c similarity index 100% rename from 3rd-party/cairo/test/scale-offset-similar.c rename to io2d/src/3rd-party/cairo/test/scale-offset-similar.c diff --git a/3rd-party/cairo/test/scale-source-surface-paint.c b/io2d/src/3rd-party/cairo/test/scale-source-surface-paint.c similarity index 100% rename from 3rd-party/cairo/test/scale-source-surface-paint.c rename to io2d/src/3rd-party/cairo/test/scale-source-surface-paint.c diff --git a/3rd-party/cairo/test/scaled-font-zero-matrix.c b/io2d/src/3rd-party/cairo/test/scaled-font-zero-matrix.c similarity index 100% rename from 3rd-party/cairo/test/scaled-font-zero-matrix.c rename to io2d/src/3rd-party/cairo/test/scaled-font-zero-matrix.c diff --git a/3rd-party/cairo/test/scarab.jpg b/io2d/src/3rd-party/cairo/test/scarab.jpg similarity index 100% rename from 3rd-party/cairo/test/scarab.jpg rename to io2d/src/3rd-party/cairo/test/scarab.jpg diff --git a/3rd-party/cairo/test/select-font-face.c b/io2d/src/3rd-party/cairo/test/select-font-face.c similarity index 100% rename from 3rd-party/cairo/test/select-font-face.c rename to io2d/src/3rd-party/cairo/test/select-font-face.c diff --git a/3rd-party/cairo/test/select-font-no-show-text.c b/io2d/src/3rd-party/cairo/test/select-font-no-show-text.c similarity index 100% rename from 3rd-party/cairo/test/select-font-no-show-text.c rename to io2d/src/3rd-party/cairo/test/select-font-no-show-text.c diff --git a/3rd-party/cairo/test/self-copy-overlap.c b/io2d/src/3rd-party/cairo/test/self-copy-overlap.c similarity index 100% rename from 3rd-party/cairo/test/self-copy-overlap.c rename to io2d/src/3rd-party/cairo/test/self-copy-overlap.c diff --git a/3rd-party/cairo/test/self-copy.c b/io2d/src/3rd-party/cairo/test/self-copy.c similarity index 100% rename from 3rd-party/cairo/test/self-copy.c rename to io2d/src/3rd-party/cairo/test/self-copy.c diff --git a/3rd-party/cairo/test/self-intersecting.c b/io2d/src/3rd-party/cairo/test/self-intersecting.c similarity index 100% rename from 3rd-party/cairo/test/self-intersecting.c rename to io2d/src/3rd-party/cairo/test/self-intersecting.c diff --git a/3rd-party/cairo/test/set-source.c b/io2d/src/3rd-party/cairo/test/set-source.c similarity index 100% rename from 3rd-party/cairo/test/set-source.c rename to io2d/src/3rd-party/cairo/test/set-source.c diff --git a/3rd-party/cairo/test/shape-general-convex.c b/io2d/src/3rd-party/cairo/test/shape-general-convex.c similarity index 100% rename from 3rd-party/cairo/test/shape-general-convex.c rename to io2d/src/3rd-party/cairo/test/shape-general-convex.c diff --git a/3rd-party/cairo/test/shape-sierpinski.c b/io2d/src/3rd-party/cairo/test/shape-sierpinski.c similarity index 100% rename from 3rd-party/cairo/test/shape-sierpinski.c rename to io2d/src/3rd-party/cairo/test/shape-sierpinski.c diff --git a/3rd-party/cairo/test/show-glyphs-advance.c b/io2d/src/3rd-party/cairo/test/show-glyphs-advance.c similarity index 100% rename from 3rd-party/cairo/test/show-glyphs-advance.c rename to io2d/src/3rd-party/cairo/test/show-glyphs-advance.c diff --git a/3rd-party/cairo/test/show-glyphs-many.c b/io2d/src/3rd-party/cairo/test/show-glyphs-many.c similarity index 100% rename from 3rd-party/cairo/test/show-glyphs-many.c rename to io2d/src/3rd-party/cairo/test/show-glyphs-many.c diff --git a/3rd-party/cairo/test/show-text-current-point.c b/io2d/src/3rd-party/cairo/test/show-text-current-point.c similarity index 100% rename from 3rd-party/cairo/test/show-text-current-point.c rename to io2d/src/3rd-party/cairo/test/show-text-current-point.c diff --git a/3rd-party/cairo/test/skew-extreme.c b/io2d/src/3rd-party/cairo/test/skew-extreme.c similarity index 100% rename from 3rd-party/cairo/test/skew-extreme.c rename to io2d/src/3rd-party/cairo/test/skew-extreme.c diff --git a/3rd-party/cairo/test/smask-fill.c b/io2d/src/3rd-party/cairo/test/smask-fill.c similarity index 100% rename from 3rd-party/cairo/test/smask-fill.c rename to io2d/src/3rd-party/cairo/test/smask-fill.c diff --git a/3rd-party/cairo/test/smask-image-mask.c b/io2d/src/3rd-party/cairo/test/smask-image-mask.c similarity index 100% rename from 3rd-party/cairo/test/smask-image-mask.c rename to io2d/src/3rd-party/cairo/test/smask-image-mask.c diff --git a/3rd-party/cairo/test/smask-mask.c b/io2d/src/3rd-party/cairo/test/smask-mask.c similarity index 100% rename from 3rd-party/cairo/test/smask-mask.c rename to io2d/src/3rd-party/cairo/test/smask-mask.c diff --git a/3rd-party/cairo/test/smask-paint.c b/io2d/src/3rd-party/cairo/test/smask-paint.c similarity index 100% rename from 3rd-party/cairo/test/smask-paint.c rename to io2d/src/3rd-party/cairo/test/smask-paint.c diff --git a/3rd-party/cairo/test/smask-stroke.c b/io2d/src/3rd-party/cairo/test/smask-stroke.c similarity index 100% rename from 3rd-party/cairo/test/smask-stroke.c rename to io2d/src/3rd-party/cairo/test/smask-stroke.c diff --git a/3rd-party/cairo/test/smask-text.c b/io2d/src/3rd-party/cairo/test/smask-text.c similarity index 100% rename from 3rd-party/cairo/test/smask-text.c rename to io2d/src/3rd-party/cairo/test/smask-text.c diff --git a/3rd-party/cairo/test/smask.c b/io2d/src/3rd-party/cairo/test/smask.c similarity index 100% rename from 3rd-party/cairo/test/smask.c rename to io2d/src/3rd-party/cairo/test/smask.c diff --git a/3rd-party/cairo/test/solid-pattern-cache-stress.c b/io2d/src/3rd-party/cairo/test/solid-pattern-cache-stress.c similarity index 100% rename from 3rd-party/cairo/test/solid-pattern-cache-stress.c rename to io2d/src/3rd-party/cairo/test/solid-pattern-cache-stress.c diff --git a/3rd-party/cairo/test/source-clip-scale.c b/io2d/src/3rd-party/cairo/test/source-clip-scale.c similarity index 100% rename from 3rd-party/cairo/test/source-clip-scale.c rename to io2d/src/3rd-party/cairo/test/source-clip-scale.c diff --git a/3rd-party/cairo/test/source-clip.c b/io2d/src/3rd-party/cairo/test/source-clip.c similarity index 100% rename from 3rd-party/cairo/test/source-clip.c rename to io2d/src/3rd-party/cairo/test/source-clip.c diff --git a/3rd-party/cairo/test/source-surface-scale-paint.c b/io2d/src/3rd-party/cairo/test/source-surface-scale-paint.c similarity index 100% rename from 3rd-party/cairo/test/source-surface-scale-paint.c rename to io2d/src/3rd-party/cairo/test/source-surface-scale-paint.c diff --git a/3rd-party/cairo/test/spline-decomposition.c b/io2d/src/3rd-party/cairo/test/spline-decomposition.c similarity index 100% rename from 3rd-party/cairo/test/spline-decomposition.c rename to io2d/src/3rd-party/cairo/test/spline-decomposition.c diff --git a/3rd-party/cairo/test/stride-12-image.c b/io2d/src/3rd-party/cairo/test/stride-12-image.c similarity index 100% rename from 3rd-party/cairo/test/stride-12-image.c rename to io2d/src/3rd-party/cairo/test/stride-12-image.c diff --git a/3rd-party/cairo/test/stroke-clipped.c b/io2d/src/3rd-party/cairo/test/stroke-clipped.c similarity index 100% rename from 3rd-party/cairo/test/stroke-clipped.c rename to io2d/src/3rd-party/cairo/test/stroke-clipped.c diff --git a/3rd-party/cairo/test/stroke-ctm-caps.c b/io2d/src/3rd-party/cairo/test/stroke-ctm-caps.c similarity index 100% rename from 3rd-party/cairo/test/stroke-ctm-caps.c rename to io2d/src/3rd-party/cairo/test/stroke-ctm-caps.c diff --git a/3rd-party/cairo/test/stroke-image.c b/io2d/src/3rd-party/cairo/test/stroke-image.c similarity index 100% rename from 3rd-party/cairo/test/stroke-image.c rename to io2d/src/3rd-party/cairo/test/stroke-image.c diff --git a/3rd-party/cairo/test/stroke-open-box.c b/io2d/src/3rd-party/cairo/test/stroke-open-box.c similarity index 100% rename from 3rd-party/cairo/test/stroke-open-box.c rename to io2d/src/3rd-party/cairo/test/stroke-open-box.c diff --git a/3rd-party/cairo/test/stroke-pattern.c b/io2d/src/3rd-party/cairo/test/stroke-pattern.c similarity index 100% rename from 3rd-party/cairo/test/stroke-pattern.c rename to io2d/src/3rd-party/cairo/test/stroke-pattern.c diff --git a/3rd-party/cairo/test/subsurface-image-repeat.c b/io2d/src/3rd-party/cairo/test/subsurface-image-repeat.c similarity index 100% rename from 3rd-party/cairo/test/subsurface-image-repeat.c rename to io2d/src/3rd-party/cairo/test/subsurface-image-repeat.c diff --git a/3rd-party/cairo/test/subsurface-modify-child.c b/io2d/src/3rd-party/cairo/test/subsurface-modify-child.c similarity index 100% rename from 3rd-party/cairo/test/subsurface-modify-child.c rename to io2d/src/3rd-party/cairo/test/subsurface-modify-child.c diff --git a/3rd-party/cairo/test/subsurface-modify-parent.c b/io2d/src/3rd-party/cairo/test/subsurface-modify-parent.c similarity index 100% rename from 3rd-party/cairo/test/subsurface-modify-parent.c rename to io2d/src/3rd-party/cairo/test/subsurface-modify-parent.c diff --git a/3rd-party/cairo/test/subsurface-outside-target.c b/io2d/src/3rd-party/cairo/test/subsurface-outside-target.c similarity index 100% rename from 3rd-party/cairo/test/subsurface-outside-target.c rename to io2d/src/3rd-party/cairo/test/subsurface-outside-target.c diff --git a/3rd-party/cairo/test/subsurface-pad.c b/io2d/src/3rd-party/cairo/test/subsurface-pad.c similarity index 100% rename from 3rd-party/cairo/test/subsurface-pad.c rename to io2d/src/3rd-party/cairo/test/subsurface-pad.c diff --git a/3rd-party/cairo/test/subsurface-reflect.c b/io2d/src/3rd-party/cairo/test/subsurface-reflect.c similarity index 100% rename from 3rd-party/cairo/test/subsurface-reflect.c rename to io2d/src/3rd-party/cairo/test/subsurface-reflect.c diff --git a/3rd-party/cairo/test/subsurface-repeat.c b/io2d/src/3rd-party/cairo/test/subsurface-repeat.c similarity index 100% rename from 3rd-party/cairo/test/subsurface-repeat.c rename to io2d/src/3rd-party/cairo/test/subsurface-repeat.c diff --git a/3rd-party/cairo/test/subsurface-scale.c b/io2d/src/3rd-party/cairo/test/subsurface-scale.c similarity index 100% rename from 3rd-party/cairo/test/subsurface-scale.c rename to io2d/src/3rd-party/cairo/test/subsurface-scale.c diff --git a/3rd-party/cairo/test/subsurface-similar-repeat.c b/io2d/src/3rd-party/cairo/test/subsurface-similar-repeat.c similarity index 100% rename from 3rd-party/cairo/test/subsurface-similar-repeat.c rename to io2d/src/3rd-party/cairo/test/subsurface-similar-repeat.c diff --git a/3rd-party/cairo/test/subsurface.c b/io2d/src/3rd-party/cairo/test/subsurface.c similarity index 100% rename from 3rd-party/cairo/test/subsurface.c rename to io2d/src/3rd-party/cairo/test/subsurface.c diff --git a/3rd-party/cairo/test/surface-finish-twice.c b/io2d/src/3rd-party/cairo/test/surface-finish-twice.c similarity index 100% rename from 3rd-party/cairo/test/surface-finish-twice.c rename to io2d/src/3rd-party/cairo/test/surface-finish-twice.c diff --git a/3rd-party/cairo/test/surface-pattern-big-scale-down.c b/io2d/src/3rd-party/cairo/test/surface-pattern-big-scale-down.c similarity index 100% rename from 3rd-party/cairo/test/surface-pattern-big-scale-down.c rename to io2d/src/3rd-party/cairo/test/surface-pattern-big-scale-down.c diff --git a/3rd-party/cairo/test/surface-pattern-operator.c b/io2d/src/3rd-party/cairo/test/surface-pattern-operator.c similarity index 100% rename from 3rd-party/cairo/test/surface-pattern-operator.c rename to io2d/src/3rd-party/cairo/test/surface-pattern-operator.c diff --git a/3rd-party/cairo/test/surface-pattern-scale-down-extend.c b/io2d/src/3rd-party/cairo/test/surface-pattern-scale-down-extend.c similarity index 100% rename from 3rd-party/cairo/test/surface-pattern-scale-down-extend.c rename to io2d/src/3rd-party/cairo/test/surface-pattern-scale-down-extend.c diff --git a/3rd-party/cairo/test/surface-pattern-scale-down.c b/io2d/src/3rd-party/cairo/test/surface-pattern-scale-down.c similarity index 100% rename from 3rd-party/cairo/test/surface-pattern-scale-down.c rename to io2d/src/3rd-party/cairo/test/surface-pattern-scale-down.c diff --git a/3rd-party/cairo/test/surface-pattern-scale-up.c b/io2d/src/3rd-party/cairo/test/surface-pattern-scale-up.c similarity index 100% rename from 3rd-party/cairo/test/surface-pattern-scale-up.c rename to io2d/src/3rd-party/cairo/test/surface-pattern-scale-up.c diff --git a/3rd-party/cairo/test/surface-pattern.c b/io2d/src/3rd-party/cairo/test/surface-pattern.c similarity index 100% rename from 3rd-party/cairo/test/surface-pattern.c rename to io2d/src/3rd-party/cairo/test/surface-pattern.c diff --git a/3rd-party/cairo/test/surface-source.c b/io2d/src/3rd-party/cairo/test/surface-source.c similarity index 100% rename from 3rd-party/cairo/test/surface-source.c rename to io2d/src/3rd-party/cairo/test/surface-source.c diff --git a/3rd-party/cairo/test/svg-clip.c b/io2d/src/3rd-party/cairo/test/svg-clip.c similarity index 100% rename from 3rd-party/cairo/test/svg-clip.c rename to io2d/src/3rd-party/cairo/test/svg-clip.c diff --git a/3rd-party/cairo/test/svg-surface-source.c b/io2d/src/3rd-party/cairo/test/svg-surface-source.c similarity index 100% rename from 3rd-party/cairo/test/svg-surface-source.c rename to io2d/src/3rd-party/cairo/test/svg-surface-source.c diff --git a/3rd-party/cairo/test/svg-surface.c b/io2d/src/3rd-party/cairo/test/svg-surface.c similarity index 100% rename from 3rd-party/cairo/test/svg-surface.c rename to io2d/src/3rd-party/cairo/test/svg-surface.c diff --git a/3rd-party/cairo/test/svg2png.c b/io2d/src/3rd-party/cairo/test/svg2png.c similarity index 100% rename from 3rd-party/cairo/test/svg2png.c rename to io2d/src/3rd-party/cairo/test/svg2png.c diff --git a/3rd-party/cairo/test/testsvg b/io2d/src/3rd-party/cairo/test/testsvg similarity index 100% rename from 3rd-party/cairo/test/testsvg rename to io2d/src/3rd-party/cairo/test/testsvg diff --git a/3rd-party/cairo/test/testtable.js b/io2d/src/3rd-party/cairo/test/testtable.js similarity index 100% rename from 3rd-party/cairo/test/testtable.js rename to io2d/src/3rd-party/cairo/test/testtable.js diff --git a/3rd-party/cairo/test/text-antialias-subpixel.c b/io2d/src/3rd-party/cairo/test/text-antialias-subpixel.c similarity index 100% rename from 3rd-party/cairo/test/text-antialias-subpixel.c rename to io2d/src/3rd-party/cairo/test/text-antialias-subpixel.c diff --git a/3rd-party/cairo/test/text-antialias.c b/io2d/src/3rd-party/cairo/test/text-antialias.c similarity index 100% rename from 3rd-party/cairo/test/text-antialias.c rename to io2d/src/3rd-party/cairo/test/text-antialias.c diff --git a/3rd-party/cairo/test/text-cache-crash.c b/io2d/src/3rd-party/cairo/test/text-cache-crash.c similarity index 100% rename from 3rd-party/cairo/test/text-cache-crash.c rename to io2d/src/3rd-party/cairo/test/text-cache-crash.c diff --git a/3rd-party/cairo/test/text-glyph-range.c b/io2d/src/3rd-party/cairo/test/text-glyph-range.c similarity index 100% rename from 3rd-party/cairo/test/text-glyph-range.c rename to io2d/src/3rd-party/cairo/test/text-glyph-range.c diff --git a/3rd-party/cairo/test/text-pattern.c b/io2d/src/3rd-party/cairo/test/text-pattern.c similarity index 100% rename from 3rd-party/cairo/test/text-pattern.c rename to io2d/src/3rd-party/cairo/test/text-pattern.c diff --git a/3rd-party/cairo/test/text-rotate.c b/io2d/src/3rd-party/cairo/test/text-rotate.c similarity index 100% rename from 3rd-party/cairo/test/text-rotate.c rename to io2d/src/3rd-party/cairo/test/text-rotate.c diff --git a/3rd-party/cairo/test/text-transform.c b/io2d/src/3rd-party/cairo/test/text-transform.c similarity index 100% rename from 3rd-party/cairo/test/text-transform.c rename to io2d/src/3rd-party/cairo/test/text-transform.c diff --git a/3rd-party/cairo/test/text-zero-len.c b/io2d/src/3rd-party/cairo/test/text-zero-len.c similarity index 100% rename from 3rd-party/cairo/test/text-zero-len.c rename to io2d/src/3rd-party/cairo/test/text-zero-len.c diff --git a/3rd-party/cairo/test/tiger.c b/io2d/src/3rd-party/cairo/test/tiger.c similarity index 100% rename from 3rd-party/cairo/test/tiger.c rename to io2d/src/3rd-party/cairo/test/tiger.c diff --git a/3rd-party/cairo/test/tiger.inc b/io2d/src/3rd-party/cairo/test/tiger.inc similarity index 100% rename from 3rd-party/cairo/test/tiger.inc rename to io2d/src/3rd-party/cairo/test/tiger.inc diff --git a/3rd-party/cairo/test/tighten-bounds.c b/io2d/src/3rd-party/cairo/test/tighten-bounds.c similarity index 100% rename from 3rd-party/cairo/test/tighten-bounds.c rename to io2d/src/3rd-party/cairo/test/tighten-bounds.c diff --git a/3rd-party/cairo/test/toy-font-face.c b/io2d/src/3rd-party/cairo/test/toy-font-face.c similarity index 100% rename from 3rd-party/cairo/test/toy-font-face.c rename to io2d/src/3rd-party/cairo/test/toy-font-face.c diff --git a/3rd-party/cairo/test/transforms.c b/io2d/src/3rd-party/cairo/test/transforms.c similarity index 100% rename from 3rd-party/cairo/test/transforms.c rename to io2d/src/3rd-party/cairo/test/transforms.c diff --git a/3rd-party/cairo/test/translate-show-surface.c b/io2d/src/3rd-party/cairo/test/translate-show-surface.c similarity index 100% rename from 3rd-party/cairo/test/translate-show-surface.c rename to io2d/src/3rd-party/cairo/test/translate-show-surface.c diff --git a/3rd-party/cairo/test/trap-clip.c b/io2d/src/3rd-party/cairo/test/trap-clip.c similarity index 100% rename from 3rd-party/cairo/test/trap-clip.c rename to io2d/src/3rd-party/cairo/test/trap-clip.c diff --git a/3rd-party/cairo/test/twin-antialias-gray.c b/io2d/src/3rd-party/cairo/test/twin-antialias-gray.c similarity index 100% rename from 3rd-party/cairo/test/twin-antialias-gray.c rename to io2d/src/3rd-party/cairo/test/twin-antialias-gray.c diff --git a/3rd-party/cairo/test/twin-antialias-mixed.c b/io2d/src/3rd-party/cairo/test/twin-antialias-mixed.c similarity index 100% rename from 3rd-party/cairo/test/twin-antialias-mixed.c rename to io2d/src/3rd-party/cairo/test/twin-antialias-mixed.c diff --git a/3rd-party/cairo/test/twin-antialias-none.c b/io2d/src/3rd-party/cairo/test/twin-antialias-none.c similarity index 100% rename from 3rd-party/cairo/test/twin-antialias-none.c rename to io2d/src/3rd-party/cairo/test/twin-antialias-none.c diff --git a/3rd-party/cairo/test/twin-antialias-subpixel.c b/io2d/src/3rd-party/cairo/test/twin-antialias-subpixel.c similarity index 100% rename from 3rd-party/cairo/test/twin-antialias-subpixel.c rename to io2d/src/3rd-party/cairo/test/twin-antialias-subpixel.c diff --git a/3rd-party/cairo/test/twin.c b/io2d/src/3rd-party/cairo/test/twin.c similarity index 100% rename from 3rd-party/cairo/test/twin.c rename to io2d/src/3rd-party/cairo/test/twin.c diff --git a/3rd-party/cairo/test/unaligned-box.c b/io2d/src/3rd-party/cairo/test/unaligned-box.c similarity index 100% rename from 3rd-party/cairo/test/unaligned-box.c rename to io2d/src/3rd-party/cairo/test/unaligned-box.c diff --git a/3rd-party/cairo/test/unantialiased-shapes.c b/io2d/src/3rd-party/cairo/test/unantialiased-shapes.c similarity index 100% rename from 3rd-party/cairo/test/unantialiased-shapes.c rename to io2d/src/3rd-party/cairo/test/unantialiased-shapes.c diff --git a/3rd-party/cairo/test/unbounded-operator.c b/io2d/src/3rd-party/cairo/test/unbounded-operator.c similarity index 100% rename from 3rd-party/cairo/test/unbounded-operator.c rename to io2d/src/3rd-party/cairo/test/unbounded-operator.c diff --git a/3rd-party/cairo/test/unclosed-strokes.c b/io2d/src/3rd-party/cairo/test/unclosed-strokes.c similarity index 100% rename from 3rd-party/cairo/test/unclosed-strokes.c rename to io2d/src/3rd-party/cairo/test/unclosed-strokes.c diff --git a/3rd-party/cairo/test/user-data.c b/io2d/src/3rd-party/cairo/test/user-data.c similarity index 100% rename from 3rd-party/cairo/test/user-data.c rename to io2d/src/3rd-party/cairo/test/user-data.c diff --git a/3rd-party/cairo/test/user-font-mask.c b/io2d/src/3rd-party/cairo/test/user-font-mask.c similarity index 100% rename from 3rd-party/cairo/test/user-font-mask.c rename to io2d/src/3rd-party/cairo/test/user-font-mask.c diff --git a/3rd-party/cairo/test/user-font-proxy.c b/io2d/src/3rd-party/cairo/test/user-font-proxy.c similarity index 100% rename from 3rd-party/cairo/test/user-font-proxy.c rename to io2d/src/3rd-party/cairo/test/user-font-proxy.c diff --git a/3rd-party/cairo/test/user-font-rescale.c b/io2d/src/3rd-party/cairo/test/user-font-rescale.c similarity index 100% rename from 3rd-party/cairo/test/user-font-rescale.c rename to io2d/src/3rd-party/cairo/test/user-font-rescale.c diff --git a/3rd-party/cairo/test/user-font.c b/io2d/src/3rd-party/cairo/test/user-font.c similarity index 100% rename from 3rd-party/cairo/test/user-font.c rename to io2d/src/3rd-party/cairo/test/user-font.c diff --git a/3rd-party/cairo/test/white-in-noop.c b/io2d/src/3rd-party/cairo/test/white-in-noop.c similarity index 100% rename from 3rd-party/cairo/test/white-in-noop.c rename to io2d/src/3rd-party/cairo/test/white-in-noop.c diff --git a/3rd-party/cairo/test/world-map.c b/io2d/src/3rd-party/cairo/test/world-map.c similarity index 100% rename from 3rd-party/cairo/test/world-map.c rename to io2d/src/3rd-party/cairo/test/world-map.c diff --git a/3rd-party/cairo/test/world-map.h b/io2d/src/3rd-party/cairo/test/world-map.h similarity index 100% rename from 3rd-party/cairo/test/world-map.h rename to io2d/src/3rd-party/cairo/test/world-map.h diff --git a/3rd-party/cairo/test/xcb-huge-image-shm.c b/io2d/src/3rd-party/cairo/test/xcb-huge-image-shm.c similarity index 100% rename from 3rd-party/cairo/test/xcb-huge-image-shm.c rename to io2d/src/3rd-party/cairo/test/xcb-huge-image-shm.c diff --git a/3rd-party/cairo/test/xcb-huge-subimage.c b/io2d/src/3rd-party/cairo/test/xcb-huge-subimage.c similarity index 100% rename from 3rd-party/cairo/test/xcb-huge-subimage.c rename to io2d/src/3rd-party/cairo/test/xcb-huge-subimage.c diff --git a/3rd-party/cairo/test/xcb-snapshot-assert.c b/io2d/src/3rd-party/cairo/test/xcb-snapshot-assert.c similarity index 100% rename from 3rd-party/cairo/test/xcb-snapshot-assert.c rename to io2d/src/3rd-party/cairo/test/xcb-snapshot-assert.c diff --git a/3rd-party/cairo/test/xcb-stress-cache.c b/io2d/src/3rd-party/cairo/test/xcb-stress-cache.c similarity index 100% rename from 3rd-party/cairo/test/xcb-stress-cache.c rename to io2d/src/3rd-party/cairo/test/xcb-stress-cache.c diff --git a/3rd-party/cairo/test/xcb-surface-source.c b/io2d/src/3rd-party/cairo/test/xcb-surface-source.c similarity index 100% rename from 3rd-party/cairo/test/xcb-surface-source.c rename to io2d/src/3rd-party/cairo/test/xcb-surface-source.c diff --git a/3rd-party/cairo/test/xcomposite-projection.c b/io2d/src/3rd-party/cairo/test/xcomposite-projection.c similarity index 100% rename from 3rd-party/cairo/test/xcomposite-projection.c rename to io2d/src/3rd-party/cairo/test/xcomposite-projection.c diff --git a/3rd-party/cairo/test/xlib-expose-event.c b/io2d/src/3rd-party/cairo/test/xlib-expose-event.c similarity index 100% rename from 3rd-party/cairo/test/xlib-expose-event.c rename to io2d/src/3rd-party/cairo/test/xlib-expose-event.c diff --git a/3rd-party/cairo/test/xlib-surface-source.c b/io2d/src/3rd-party/cairo/test/xlib-surface-source.c similarity index 100% rename from 3rd-party/cairo/test/xlib-surface-source.c rename to io2d/src/3rd-party/cairo/test/xlib-surface-source.c diff --git a/3rd-party/cairo/test/xlib-surface.c b/io2d/src/3rd-party/cairo/test/xlib-surface.c similarity index 100% rename from 3rd-party/cairo/test/xlib-surface.c rename to io2d/src/3rd-party/cairo/test/xlib-surface.c diff --git a/3rd-party/cairo/test/zero-alpha.c b/io2d/src/3rd-party/cairo/test/zero-alpha.c similarity index 100% rename from 3rd-party/cairo/test/zero-alpha.c rename to io2d/src/3rd-party/cairo/test/zero-alpha.c diff --git a/3rd-party/cairo/test/zero-mask.c b/io2d/src/3rd-party/cairo/test/zero-mask.c similarity index 100% rename from 3rd-party/cairo/test/zero-mask.c rename to io2d/src/3rd-party/cairo/test/zero-mask.c diff --git a/3rd-party/cairo/util/.gitignore b/io2d/src/3rd-party/cairo/util/.gitignore similarity index 100% rename from 3rd-party/cairo/util/.gitignore rename to io2d/src/3rd-party/cairo/util/.gitignore diff --git a/3rd-party/cairo/util/COPYING b/io2d/src/3rd-party/cairo/util/COPYING similarity index 100% rename from 3rd-party/cairo/util/COPYING rename to io2d/src/3rd-party/cairo/util/COPYING diff --git a/3rd-party/cairo/util/Makefile.am b/io2d/src/3rd-party/cairo/util/Makefile.am similarity index 100% rename from 3rd-party/cairo/util/Makefile.am rename to io2d/src/3rd-party/cairo/util/Makefile.am diff --git a/3rd-party/cairo/util/README b/io2d/src/3rd-party/cairo/util/README similarity index 100% rename from 3rd-party/cairo/util/README rename to io2d/src/3rd-party/cairo/util/README diff --git a/3rd-party/cairo/util/backtrace-symbols.c b/io2d/src/3rd-party/cairo/util/backtrace-symbols.c similarity index 100% rename from 3rd-party/cairo/util/backtrace-symbols.c rename to io2d/src/3rd-party/cairo/util/backtrace-symbols.c diff --git a/3rd-party/cairo/util/cairo-api-update b/io2d/src/3rd-party/cairo/util/cairo-api-update similarity index 100% rename from 3rd-party/cairo/util/cairo-api-update rename to io2d/src/3rd-party/cairo/util/cairo-api-update diff --git a/3rd-party/cairo/util/cairo-fdr/Makefile.am b/io2d/src/3rd-party/cairo/util/cairo-fdr/Makefile.am similarity index 100% rename from 3rd-party/cairo/util/cairo-fdr/Makefile.am rename to io2d/src/3rd-party/cairo/util/cairo-fdr/Makefile.am diff --git a/3rd-party/cairo/util/cairo-fdr/fdr.c b/io2d/src/3rd-party/cairo/util/cairo-fdr/fdr.c similarity index 100% rename from 3rd-party/cairo/util/cairo-fdr/fdr.c rename to io2d/src/3rd-party/cairo/util/cairo-fdr/fdr.c diff --git a/3rd-party/cairo/util/cairo-gobject/Makefile.am b/io2d/src/3rd-party/cairo/util/cairo-gobject/Makefile.am similarity index 100% rename from 3rd-party/cairo/util/cairo-gobject/Makefile.am rename to io2d/src/3rd-party/cairo/util/cairo-gobject/Makefile.am diff --git a/3rd-party/cairo/util/cairo-gobject/cairo-gobject-enums.c b/io2d/src/3rd-party/cairo/util/cairo-gobject/cairo-gobject-enums.c similarity index 100% rename from 3rd-party/cairo/util/cairo-gobject/cairo-gobject-enums.c rename to io2d/src/3rd-party/cairo/util/cairo-gobject/cairo-gobject-enums.c diff --git a/3rd-party/cairo/util/cairo-gobject/cairo-gobject-structs.c b/io2d/src/3rd-party/cairo/util/cairo-gobject/cairo-gobject-structs.c similarity index 100% rename from 3rd-party/cairo/util/cairo-gobject/cairo-gobject-structs.c rename to io2d/src/3rd-party/cairo/util/cairo-gobject/cairo-gobject-structs.c diff --git a/3rd-party/cairo/util/cairo-gobject/cairo-gobject.h b/io2d/src/3rd-party/cairo/util/cairo-gobject/cairo-gobject.h similarity index 100% rename from 3rd-party/cairo/util/cairo-gobject/cairo-gobject.h rename to io2d/src/3rd-party/cairo/util/cairo-gobject/cairo-gobject.h diff --git a/3rd-party/cairo/util/cairo-missing/Makefile.am b/io2d/src/3rd-party/cairo/util/cairo-missing/Makefile.am similarity index 100% rename from 3rd-party/cairo/util/cairo-missing/Makefile.am rename to io2d/src/3rd-party/cairo/util/cairo-missing/Makefile.am diff --git a/3rd-party/cairo/util/cairo-missing/Makefile.sources b/io2d/src/3rd-party/cairo/util/cairo-missing/Makefile.sources similarity index 100% rename from 3rd-party/cairo/util/cairo-missing/Makefile.sources rename to io2d/src/3rd-party/cairo/util/cairo-missing/Makefile.sources diff --git a/3rd-party/cairo/util/cairo-missing/Makefile.win32 b/io2d/src/3rd-party/cairo/util/cairo-missing/Makefile.win32 similarity index 100% rename from 3rd-party/cairo/util/cairo-missing/Makefile.win32 rename to io2d/src/3rd-party/cairo/util/cairo-missing/Makefile.win32 diff --git a/3rd-party/cairo/util/cairo-missing/cairo-missing.h b/io2d/src/3rd-party/cairo/util/cairo-missing/cairo-missing.h similarity index 100% rename from 3rd-party/cairo/util/cairo-missing/cairo-missing.h rename to io2d/src/3rd-party/cairo/util/cairo-missing/cairo-missing.h diff --git a/3rd-party/cairo/util/cairo-missing/getline.c b/io2d/src/3rd-party/cairo/util/cairo-missing/getline.c similarity index 100% rename from 3rd-party/cairo/util/cairo-missing/getline.c rename to io2d/src/3rd-party/cairo/util/cairo-missing/getline.c diff --git a/3rd-party/cairo/util/cairo-missing/strndup.c b/io2d/src/3rd-party/cairo/util/cairo-missing/strndup.c similarity index 100% rename from 3rd-party/cairo/util/cairo-missing/strndup.c rename to io2d/src/3rd-party/cairo/util/cairo-missing/strndup.c diff --git a/3rd-party/cairo/util/cairo-script/.gitignore b/io2d/src/3rd-party/cairo/util/cairo-script/.gitignore similarity index 100% rename from 3rd-party/cairo/util/cairo-script/.gitignore rename to io2d/src/3rd-party/cairo/util/cairo-script/.gitignore diff --git a/3rd-party/cairo/util/cairo-script/COPYING b/io2d/src/3rd-party/cairo/util/cairo-script/COPYING similarity index 100% rename from 3rd-party/cairo/util/cairo-script/COPYING rename to io2d/src/3rd-party/cairo/util/cairo-script/COPYING diff --git a/3rd-party/cairo/util/cairo-script/Makefile.am b/io2d/src/3rd-party/cairo/util/cairo-script/Makefile.am similarity index 100% rename from 3rd-party/cairo/util/cairo-script/Makefile.am rename to io2d/src/3rd-party/cairo/util/cairo-script/Makefile.am diff --git a/3rd-party/cairo/util/cairo-script/Makefile.sources b/io2d/src/3rd-party/cairo/util/cairo-script/Makefile.sources similarity index 100% rename from 3rd-party/cairo/util/cairo-script/Makefile.sources rename to io2d/src/3rd-party/cairo/util/cairo-script/Makefile.sources diff --git a/3rd-party/cairo/util/cairo-script/Makefile.win32 b/io2d/src/3rd-party/cairo/util/cairo-script/Makefile.win32 similarity index 100% rename from 3rd-party/cairo/util/cairo-script/Makefile.win32 rename to io2d/src/3rd-party/cairo/util/cairo-script/Makefile.win32 diff --git a/3rd-party/cairo/util/cairo-script/cairo-script-file.c b/io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-file.c similarity index 100% rename from 3rd-party/cairo/util/cairo-script/cairo-script-file.c rename to io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-file.c diff --git a/3rd-party/cairo/util/cairo-script/cairo-script-hash.c b/io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-hash.c similarity index 100% rename from 3rd-party/cairo/util/cairo-script/cairo-script-hash.c rename to io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-hash.c diff --git a/3rd-party/cairo/util/cairo-script/cairo-script-interpreter.c b/io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-interpreter.c similarity index 100% rename from 3rd-party/cairo/util/cairo-script/cairo-script-interpreter.c rename to io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-interpreter.c diff --git a/3rd-party/cairo/util/cairo-script/cairo-script-interpreter.h b/io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-interpreter.h similarity index 100% rename from 3rd-party/cairo/util/cairo-script/cairo-script-interpreter.h rename to io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-interpreter.h diff --git a/3rd-party/cairo/util/cairo-script/cairo-script-objects.c b/io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-objects.c similarity index 100% rename from 3rd-party/cairo/util/cairo-script/cairo-script-objects.c rename to io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-objects.c diff --git a/3rd-party/cairo/util/cairo-script/cairo-script-operators.c b/io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-operators.c similarity index 100% rename from 3rd-party/cairo/util/cairo-script/cairo-script-operators.c rename to io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-operators.c diff --git a/3rd-party/cairo/util/cairo-script/cairo-script-private.h b/io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-private.h similarity index 100% rename from 3rd-party/cairo/util/cairo-script/cairo-script-private.h rename to io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-private.h diff --git a/3rd-party/cairo/util/cairo-script/cairo-script-scanner.c b/io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-scanner.c similarity index 100% rename from 3rd-party/cairo/util/cairo-script/cairo-script-scanner.c rename to io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-scanner.c diff --git a/3rd-party/cairo/util/cairo-script/cairo-script-stack.c b/io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-stack.c similarity index 100% rename from 3rd-party/cairo/util/cairo-script/cairo-script-stack.c rename to io2d/src/3rd-party/cairo/util/cairo-script/cairo-script-stack.c diff --git a/3rd-party/cairo/util/cairo-script/csi-bind.c b/io2d/src/3rd-party/cairo/util/cairo-script/csi-bind.c similarity index 100% rename from 3rd-party/cairo/util/cairo-script/csi-bind.c rename to io2d/src/3rd-party/cairo/util/cairo-script/csi-bind.c diff --git a/3rd-party/cairo/util/cairo-script/csi-exec.c b/io2d/src/3rd-party/cairo/util/cairo-script/csi-exec.c similarity index 100% rename from 3rd-party/cairo/util/cairo-script/csi-exec.c rename to io2d/src/3rd-party/cairo/util/cairo-script/csi-exec.c diff --git a/3rd-party/cairo/util/cairo-script/csi-replay.c b/io2d/src/3rd-party/cairo/util/cairo-script/csi-replay.c similarity index 100% rename from 3rd-party/cairo/util/cairo-script/csi-replay.c rename to io2d/src/3rd-party/cairo/util/cairo-script/csi-replay.c diff --git a/3rd-party/cairo/util/cairo-script/csi-trace.c b/io2d/src/3rd-party/cairo/util/cairo-script/csi-trace.c similarity index 100% rename from 3rd-party/cairo/util/cairo-script/csi-trace.c rename to io2d/src/3rd-party/cairo/util/cairo-script/csi-trace.c diff --git a/3rd-party/cairo/util/cairo-script/examples/Makefile.am b/io2d/src/3rd-party/cairo/util/cairo-script/examples/Makefile.am similarity index 100% rename from 3rd-party/cairo/util/cairo-script/examples/Makefile.am rename to io2d/src/3rd-party/cairo/util/cairo-script/examples/Makefile.am diff --git a/3rd-party/cairo/util/cairo-script/examples/dragon.cs b/io2d/src/3rd-party/cairo/util/cairo-script/examples/dragon.cs similarity index 100% rename from 3rd-party/cairo/util/cairo-script/examples/dragon.cs rename to io2d/src/3rd-party/cairo/util/cairo-script/examples/dragon.cs diff --git a/3rd-party/cairo/util/cairo-script/examples/hilbert.cs b/io2d/src/3rd-party/cairo/util/cairo-script/examples/hilbert.cs similarity index 100% rename from 3rd-party/cairo/util/cairo-script/examples/hilbert.cs rename to io2d/src/3rd-party/cairo/util/cairo-script/examples/hilbert.cs diff --git a/3rd-party/cairo/util/cairo-script/examples/infinichess.cs b/io2d/src/3rd-party/cairo/util/cairo-script/examples/infinichess.cs similarity index 100% rename from 3rd-party/cairo/util/cairo-script/examples/infinichess.cs rename to io2d/src/3rd-party/cairo/util/cairo-script/examples/infinichess.cs diff --git a/3rd-party/cairo/util/cairo-script/examples/interference.cs b/io2d/src/3rd-party/cairo/util/cairo-script/examples/interference.cs similarity index 100% rename from 3rd-party/cairo/util/cairo-script/examples/interference.cs rename to io2d/src/3rd-party/cairo/util/cairo-script/examples/interference.cs diff --git a/3rd-party/cairo/util/cairo-script/examples/pythagoras-tree.cs b/io2d/src/3rd-party/cairo/util/cairo-script/examples/pythagoras-tree.cs similarity index 100% rename from 3rd-party/cairo/util/cairo-script/examples/pythagoras-tree.cs rename to io2d/src/3rd-party/cairo/util/cairo-script/examples/pythagoras-tree.cs diff --git a/3rd-party/cairo/util/cairo-script/examples/sierpinski.cs b/io2d/src/3rd-party/cairo/util/cairo-script/examples/sierpinski.cs similarity index 100% rename from 3rd-party/cairo/util/cairo-script/examples/sierpinski.cs rename to io2d/src/3rd-party/cairo/util/cairo-script/examples/sierpinski.cs diff --git a/3rd-party/cairo/util/cairo-script/examples/wedgeAnnulus_crop_ybRings.cs b/io2d/src/3rd-party/cairo/util/cairo-script/examples/wedgeAnnulus_crop_ybRings.cs similarity index 100% rename from 3rd-party/cairo/util/cairo-script/examples/wedgeAnnulus_crop_ybRings.cs rename to io2d/src/3rd-party/cairo/util/cairo-script/examples/wedgeAnnulus_crop_ybRings.cs diff --git a/3rd-party/cairo/util/cairo-script/examples/world-map.cs b/io2d/src/3rd-party/cairo/util/cairo-script/examples/world-map.cs similarity index 100% rename from 3rd-party/cairo/util/cairo-script/examples/world-map.cs rename to io2d/src/3rd-party/cairo/util/cairo-script/examples/world-map.cs diff --git a/3rd-party/cairo/util/cairo-script/examples/zrusin.cs b/io2d/src/3rd-party/cairo/util/cairo-script/examples/zrusin.cs similarity index 100% rename from 3rd-party/cairo/util/cairo-script/examples/zrusin.cs rename to io2d/src/3rd-party/cairo/util/cairo-script/examples/zrusin.cs diff --git a/3rd-party/cairo/util/cairo-sphinx/.gitignore b/io2d/src/3rd-party/cairo/util/cairo-sphinx/.gitignore similarity index 100% rename from 3rd-party/cairo/util/cairo-sphinx/.gitignore rename to io2d/src/3rd-party/cairo/util/cairo-sphinx/.gitignore diff --git a/3rd-party/cairo/util/cairo-sphinx/Makefile.am b/io2d/src/3rd-party/cairo/util/cairo-sphinx/Makefile.am similarity index 100% rename from 3rd-party/cairo/util/cairo-sphinx/Makefile.am rename to io2d/src/3rd-party/cairo/util/cairo-sphinx/Makefile.am diff --git a/3rd-party/cairo/util/cairo-sphinx/fdr.c b/io2d/src/3rd-party/cairo/util/cairo-sphinx/fdr.c similarity index 100% rename from 3rd-party/cairo/util/cairo-sphinx/fdr.c rename to io2d/src/3rd-party/cairo/util/cairo-sphinx/fdr.c diff --git a/3rd-party/cairo/util/cairo-sphinx/sphinx.c b/io2d/src/3rd-party/cairo/util/cairo-sphinx/sphinx.c similarity index 100% rename from 3rd-party/cairo/util/cairo-sphinx/sphinx.c rename to io2d/src/3rd-party/cairo/util/cairo-sphinx/sphinx.c diff --git a/3rd-party/cairo/util/cairo-trace/.gitignore b/io2d/src/3rd-party/cairo/util/cairo-trace/.gitignore similarity index 100% rename from 3rd-party/cairo/util/cairo-trace/.gitignore rename to io2d/src/3rd-party/cairo/util/cairo-trace/.gitignore diff --git a/3rd-party/cairo/util/cairo-trace/COPYING b/io2d/src/3rd-party/cairo/util/cairo-trace/COPYING similarity index 100% rename from 3rd-party/cairo/util/cairo-trace/COPYING rename to io2d/src/3rd-party/cairo/util/cairo-trace/COPYING diff --git a/3rd-party/cairo/util/cairo-trace/COPYING-GPL-3 b/io2d/src/3rd-party/cairo/util/cairo-trace/COPYING-GPL-3 similarity index 100% rename from 3rd-party/cairo/util/cairo-trace/COPYING-GPL-3 rename to io2d/src/3rd-party/cairo/util/cairo-trace/COPYING-GPL-3 diff --git a/3rd-party/cairo/util/cairo-trace/Makefile.am b/io2d/src/3rd-party/cairo/util/cairo-trace/Makefile.am similarity index 100% rename from 3rd-party/cairo/util/cairo-trace/Makefile.am rename to io2d/src/3rd-party/cairo/util/cairo-trace/Makefile.am diff --git a/3rd-party/cairo/util/cairo-trace/cairo-trace.in b/io2d/src/3rd-party/cairo/util/cairo-trace/cairo-trace.in similarity index 100% rename from 3rd-party/cairo/util/cairo-trace/cairo-trace.in rename to io2d/src/3rd-party/cairo/util/cairo-trace/cairo-trace.in diff --git a/3rd-party/cairo/util/cairo-trace/lookup-symbol.c b/io2d/src/3rd-party/cairo/util/cairo-trace/lookup-symbol.c similarity index 100% rename from 3rd-party/cairo/util/cairo-trace/lookup-symbol.c rename to io2d/src/3rd-party/cairo/util/cairo-trace/lookup-symbol.c diff --git a/3rd-party/cairo/util/cairo-trace/lookup-symbol.h b/io2d/src/3rd-party/cairo/util/cairo-trace/lookup-symbol.h similarity index 100% rename from 3rd-party/cairo/util/cairo-trace/lookup-symbol.h rename to io2d/src/3rd-party/cairo/util/cairo-trace/lookup-symbol.h diff --git a/3rd-party/cairo/util/cairo-trace/trace.c b/io2d/src/3rd-party/cairo/util/cairo-trace/trace.c similarity index 100% rename from 3rd-party/cairo/util/cairo-trace/trace.c rename to io2d/src/3rd-party/cairo/util/cairo-trace/trace.c diff --git a/3rd-party/cairo/util/cairo-view b/io2d/src/3rd-party/cairo/util/cairo-view similarity index 100% rename from 3rd-party/cairo/util/cairo-view rename to io2d/src/3rd-party/cairo/util/cairo-view diff --git a/3rd-party/cairo/util/cairo.modules b/io2d/src/3rd-party/cairo/util/cairo.modules similarity index 100% rename from 3rd-party/cairo/util/cairo.modules rename to io2d/src/3rd-party/cairo/util/cairo.modules diff --git a/3rd-party/cairo/util/font-view.c b/io2d/src/3rd-party/cairo/util/font-view.c similarity index 100% rename from 3rd-party/cairo/util/font-view.c rename to io2d/src/3rd-party/cairo/util/font-view.c diff --git a/3rd-party/cairo/util/malloc-stats.c b/io2d/src/3rd-party/cairo/util/malloc-stats.c similarity index 100% rename from 3rd-party/cairo/util/malloc-stats.c rename to io2d/src/3rd-party/cairo/util/malloc-stats.c diff --git a/3rd-party/cairo/util/show-contour.c b/io2d/src/3rd-party/cairo/util/show-contour.c similarity index 100% rename from 3rd-party/cairo/util/show-contour.c rename to io2d/src/3rd-party/cairo/util/show-contour.c diff --git a/3rd-party/cairo/util/show-edges.c b/io2d/src/3rd-party/cairo/util/show-edges.c similarity index 100% rename from 3rd-party/cairo/util/show-edges.c rename to io2d/src/3rd-party/cairo/util/show-edges.c diff --git a/3rd-party/cairo/util/show-events.c b/io2d/src/3rd-party/cairo/util/show-events.c similarity index 100% rename from 3rd-party/cairo/util/show-events.c rename to io2d/src/3rd-party/cairo/util/show-events.c diff --git a/3rd-party/cairo/util/show-polygon.c b/io2d/src/3rd-party/cairo/util/show-polygon.c similarity index 100% rename from 3rd-party/cairo/util/show-polygon.c rename to io2d/src/3rd-party/cairo/util/show-polygon.c diff --git a/3rd-party/cairo/util/show-traps.c b/io2d/src/3rd-party/cairo/util/show-traps.c similarity index 100% rename from 3rd-party/cairo/util/show-traps.c rename to io2d/src/3rd-party/cairo/util/show-traps.c diff --git a/3rd-party/cairo/util/trace-to-xml.c b/io2d/src/3rd-party/cairo/util/trace-to-xml.c similarity index 100% rename from 3rd-party/cairo/util/trace-to-xml.c rename to io2d/src/3rd-party/cairo/util/trace-to-xml.c diff --git a/3rd-party/cairo/util/waterfall b/io2d/src/3rd-party/cairo/util/waterfall similarity index 100% rename from 3rd-party/cairo/util/waterfall rename to io2d/src/3rd-party/cairo/util/waterfall diff --git a/3rd-party/cairo/util/xml-to-trace.c b/io2d/src/3rd-party/cairo/util/xml-to-trace.c similarity index 100% rename from 3rd-party/cairo/util/xml-to-trace.c rename to io2d/src/3rd-party/cairo/util/xml-to-trace.c diff --git a/3rd-party/cairo/util/xr2cairo b/io2d/src/3rd-party/cairo/util/xr2cairo similarity index 100% rename from 3rd-party/cairo/util/xr2cairo rename to io2d/src/3rd-party/cairo/util/xr2cairo diff --git a/3rd-party/libpng/ANNOUNCE b/io2d/src/3rd-party/libpng/ANNOUNCE similarity index 100% rename from 3rd-party/libpng/ANNOUNCE rename to io2d/src/3rd-party/libpng/ANNOUNCE diff --git a/3rd-party/libpng/CHANGES b/io2d/src/3rd-party/libpng/CHANGES similarity index 100% rename from 3rd-party/libpng/CHANGES rename to io2d/src/3rd-party/libpng/CHANGES diff --git a/3rd-party/libpng/CMakeLists.txt b/io2d/src/3rd-party/libpng/CMakeLists.txt similarity index 100% rename from 3rd-party/libpng/CMakeLists.txt rename to io2d/src/3rd-party/libpng/CMakeLists.txt diff --git a/3rd-party/libpng/INSTALL b/io2d/src/3rd-party/libpng/INSTALL similarity index 100% rename from 3rd-party/libpng/INSTALL rename to io2d/src/3rd-party/libpng/INSTALL diff --git a/3rd-party/libpng/LICENSE b/io2d/src/3rd-party/libpng/LICENSE similarity index 100% rename from 3rd-party/libpng/LICENSE rename to io2d/src/3rd-party/libpng/LICENSE diff --git a/3rd-party/libpng/Makefile.am b/io2d/src/3rd-party/libpng/Makefile.am similarity index 100% rename from 3rd-party/libpng/Makefile.am rename to io2d/src/3rd-party/libpng/Makefile.am diff --git a/3rd-party/libpng/README b/io2d/src/3rd-party/libpng/README similarity index 100% rename from 3rd-party/libpng/README rename to io2d/src/3rd-party/libpng/README diff --git a/3rd-party/libpng/TODO b/io2d/src/3rd-party/libpng/TODO similarity index 100% rename from 3rd-party/libpng/TODO rename to io2d/src/3rd-party/libpng/TODO diff --git a/3rd-party/libpng/arm/arm_init.c b/io2d/src/3rd-party/libpng/arm/arm_init.c similarity index 100% rename from 3rd-party/libpng/arm/arm_init.c rename to io2d/src/3rd-party/libpng/arm/arm_init.c diff --git a/3rd-party/libpng/arm/filter_neon.S b/io2d/src/3rd-party/libpng/arm/filter_neon.S similarity index 100% rename from 3rd-party/libpng/arm/filter_neon.S rename to io2d/src/3rd-party/libpng/arm/filter_neon.S diff --git a/3rd-party/libpng/arm/filter_neon_intrinsics.c b/io2d/src/3rd-party/libpng/arm/filter_neon_intrinsics.c similarity index 100% rename from 3rd-party/libpng/arm/filter_neon_intrinsics.c rename to io2d/src/3rd-party/libpng/arm/filter_neon_intrinsics.c diff --git a/3rd-party/libpng/autogen.sh b/io2d/src/3rd-party/libpng/autogen.sh similarity index 100% rename from 3rd-party/libpng/autogen.sh rename to io2d/src/3rd-party/libpng/autogen.sh diff --git a/3rd-party/libpng/configure.ac b/io2d/src/3rd-party/libpng/configure.ac similarity index 100% rename from 3rd-party/libpng/configure.ac rename to io2d/src/3rd-party/libpng/configure.ac diff --git a/3rd-party/libpng/contrib/README.txt b/io2d/src/3rd-party/libpng/contrib/README.txt similarity index 100% rename from 3rd-party/libpng/contrib/README.txt rename to io2d/src/3rd-party/libpng/contrib/README.txt diff --git a/3rd-party/libpng/contrib/conftest/README b/io2d/src/3rd-party/libpng/contrib/conftest/README similarity index 100% rename from 3rd-party/libpng/contrib/conftest/README rename to io2d/src/3rd-party/libpng/contrib/conftest/README diff --git a/3rd-party/libpng/contrib/conftest/read.dfa b/io2d/src/3rd-party/libpng/contrib/conftest/read.dfa similarity index 100% rename from 3rd-party/libpng/contrib/conftest/read.dfa rename to io2d/src/3rd-party/libpng/contrib/conftest/read.dfa diff --git a/3rd-party/libpng/contrib/conftest/s_read.dfa b/io2d/src/3rd-party/libpng/contrib/conftest/s_read.dfa similarity index 100% rename from 3rd-party/libpng/contrib/conftest/s_read.dfa rename to io2d/src/3rd-party/libpng/contrib/conftest/s_read.dfa diff --git a/3rd-party/libpng/contrib/conftest/s_write.dfa b/io2d/src/3rd-party/libpng/contrib/conftest/s_write.dfa similarity index 100% rename from 3rd-party/libpng/contrib/conftest/s_write.dfa rename to io2d/src/3rd-party/libpng/contrib/conftest/s_write.dfa diff --git a/3rd-party/libpng/contrib/conftest/simple.dfa b/io2d/src/3rd-party/libpng/contrib/conftest/simple.dfa similarity index 100% rename from 3rd-party/libpng/contrib/conftest/simple.dfa rename to io2d/src/3rd-party/libpng/contrib/conftest/simple.dfa diff --git a/3rd-party/libpng/contrib/conftest/write.dfa b/io2d/src/3rd-party/libpng/contrib/conftest/write.dfa similarity index 100% rename from 3rd-party/libpng/contrib/conftest/write.dfa rename to io2d/src/3rd-party/libpng/contrib/conftest/write.dfa diff --git a/3rd-party/libpng/contrib/examples/README.txt b/io2d/src/3rd-party/libpng/contrib/examples/README.txt similarity index 100% rename from 3rd-party/libpng/contrib/examples/README.txt rename to io2d/src/3rd-party/libpng/contrib/examples/README.txt diff --git a/3rd-party/libpng/contrib/examples/iccfrompng.c b/io2d/src/3rd-party/libpng/contrib/examples/iccfrompng.c similarity index 100% rename from 3rd-party/libpng/contrib/examples/iccfrompng.c rename to io2d/src/3rd-party/libpng/contrib/examples/iccfrompng.c diff --git a/3rd-party/libpng/contrib/examples/pngpixel.c b/io2d/src/3rd-party/libpng/contrib/examples/pngpixel.c similarity index 100% rename from 3rd-party/libpng/contrib/examples/pngpixel.c rename to io2d/src/3rd-party/libpng/contrib/examples/pngpixel.c diff --git a/3rd-party/libpng/contrib/examples/pngtopng.c b/io2d/src/3rd-party/libpng/contrib/examples/pngtopng.c similarity index 100% rename from 3rd-party/libpng/contrib/examples/pngtopng.c rename to io2d/src/3rd-party/libpng/contrib/examples/pngtopng.c diff --git a/3rd-party/libpng/contrib/gregbook/COPYING b/io2d/src/3rd-party/libpng/contrib/gregbook/COPYING similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/COPYING rename to io2d/src/3rd-party/libpng/contrib/gregbook/COPYING diff --git a/3rd-party/libpng/contrib/gregbook/LICENSE b/io2d/src/3rd-party/libpng/contrib/gregbook/LICENSE similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/LICENSE rename to io2d/src/3rd-party/libpng/contrib/gregbook/LICENSE diff --git a/3rd-party/libpng/contrib/gregbook/Makefile.mingw32 b/io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.mingw32 similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/Makefile.mingw32 rename to io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.mingw32 diff --git a/3rd-party/libpng/contrib/gregbook/Makefile.sgi b/io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.sgi similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/Makefile.sgi rename to io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.sgi diff --git a/3rd-party/libpng/contrib/gregbook/Makefile.unx b/io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.unx similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/Makefile.unx rename to io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.unx diff --git a/3rd-party/libpng/contrib/gregbook/Makefile.w32 b/io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.w32 similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/Makefile.w32 rename to io2d/src/3rd-party/libpng/contrib/gregbook/Makefile.w32 diff --git a/3rd-party/libpng/contrib/gregbook/README b/io2d/src/3rd-party/libpng/contrib/gregbook/README similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/README rename to io2d/src/3rd-party/libpng/contrib/gregbook/README diff --git a/3rd-party/libpng/contrib/gregbook/makevms.com b/io2d/src/3rd-party/libpng/contrib/gregbook/makevms.com similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/makevms.com rename to io2d/src/3rd-party/libpng/contrib/gregbook/makevms.com diff --git a/3rd-party/libpng/contrib/gregbook/readpng.c b/io2d/src/3rd-party/libpng/contrib/gregbook/readpng.c similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/readpng.c rename to io2d/src/3rd-party/libpng/contrib/gregbook/readpng.c diff --git a/3rd-party/libpng/contrib/gregbook/readpng.h b/io2d/src/3rd-party/libpng/contrib/gregbook/readpng.h similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/readpng.h rename to io2d/src/3rd-party/libpng/contrib/gregbook/readpng.h diff --git a/3rd-party/libpng/contrib/gregbook/readpng2.c b/io2d/src/3rd-party/libpng/contrib/gregbook/readpng2.c similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/readpng2.c rename to io2d/src/3rd-party/libpng/contrib/gregbook/readpng2.c diff --git a/3rd-party/libpng/contrib/gregbook/readpng2.h b/io2d/src/3rd-party/libpng/contrib/gregbook/readpng2.h similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/readpng2.h rename to io2d/src/3rd-party/libpng/contrib/gregbook/readpng2.h diff --git a/3rd-party/libpng/contrib/gregbook/readppm.c b/io2d/src/3rd-party/libpng/contrib/gregbook/readppm.c similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/readppm.c rename to io2d/src/3rd-party/libpng/contrib/gregbook/readppm.c diff --git a/3rd-party/libpng/contrib/gregbook/rpng-win.c b/io2d/src/3rd-party/libpng/contrib/gregbook/rpng-win.c similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/rpng-win.c rename to io2d/src/3rd-party/libpng/contrib/gregbook/rpng-win.c diff --git a/3rd-party/libpng/contrib/gregbook/rpng-x.c b/io2d/src/3rd-party/libpng/contrib/gregbook/rpng-x.c similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/rpng-x.c rename to io2d/src/3rd-party/libpng/contrib/gregbook/rpng-x.c diff --git a/3rd-party/libpng/contrib/gregbook/rpng2-win.c b/io2d/src/3rd-party/libpng/contrib/gregbook/rpng2-win.c similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/rpng2-win.c rename to io2d/src/3rd-party/libpng/contrib/gregbook/rpng2-win.c diff --git a/3rd-party/libpng/contrib/gregbook/rpng2-x.c b/io2d/src/3rd-party/libpng/contrib/gregbook/rpng2-x.c similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/rpng2-x.c rename to io2d/src/3rd-party/libpng/contrib/gregbook/rpng2-x.c diff --git a/3rd-party/libpng/contrib/gregbook/toucan.png b/io2d/src/3rd-party/libpng/contrib/gregbook/toucan.png similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/toucan.png rename to io2d/src/3rd-party/libpng/contrib/gregbook/toucan.png diff --git a/3rd-party/libpng/contrib/gregbook/wpng.c b/io2d/src/3rd-party/libpng/contrib/gregbook/wpng.c similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/wpng.c rename to io2d/src/3rd-party/libpng/contrib/gregbook/wpng.c diff --git a/3rd-party/libpng/contrib/gregbook/writepng.c b/io2d/src/3rd-party/libpng/contrib/gregbook/writepng.c similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/writepng.c rename to io2d/src/3rd-party/libpng/contrib/gregbook/writepng.c diff --git a/3rd-party/libpng/contrib/gregbook/writepng.h b/io2d/src/3rd-party/libpng/contrib/gregbook/writepng.h similarity index 100% rename from 3rd-party/libpng/contrib/gregbook/writepng.h rename to io2d/src/3rd-party/libpng/contrib/gregbook/writepng.h diff --git a/3rd-party/libpng/contrib/libtests/fakepng.c b/io2d/src/3rd-party/libpng/contrib/libtests/fakepng.c similarity index 100% rename from 3rd-party/libpng/contrib/libtests/fakepng.c rename to io2d/src/3rd-party/libpng/contrib/libtests/fakepng.c diff --git a/3rd-party/libpng/contrib/libtests/gentests.sh b/io2d/src/3rd-party/libpng/contrib/libtests/gentests.sh similarity index 100% rename from 3rd-party/libpng/contrib/libtests/gentests.sh rename to io2d/src/3rd-party/libpng/contrib/libtests/gentests.sh diff --git a/3rd-party/libpng/contrib/libtests/makepng.c b/io2d/src/3rd-party/libpng/contrib/libtests/makepng.c similarity index 100% rename from 3rd-party/libpng/contrib/libtests/makepng.c rename to io2d/src/3rd-party/libpng/contrib/libtests/makepng.c diff --git a/3rd-party/libpng/contrib/libtests/pngstest.c b/io2d/src/3rd-party/libpng/contrib/libtests/pngstest.c similarity index 100% rename from 3rd-party/libpng/contrib/libtests/pngstest.c rename to io2d/src/3rd-party/libpng/contrib/libtests/pngstest.c diff --git a/3rd-party/libpng/contrib/libtests/pngunknown.c b/io2d/src/3rd-party/libpng/contrib/libtests/pngunknown.c similarity index 100% rename from 3rd-party/libpng/contrib/libtests/pngunknown.c rename to io2d/src/3rd-party/libpng/contrib/libtests/pngunknown.c diff --git a/3rd-party/libpng/contrib/libtests/pngvalid.c b/io2d/src/3rd-party/libpng/contrib/libtests/pngvalid.c similarity index 100% rename from 3rd-party/libpng/contrib/libtests/pngvalid.c rename to io2d/src/3rd-party/libpng/contrib/libtests/pngvalid.c diff --git a/3rd-party/libpng/contrib/libtests/readpng.c b/io2d/src/3rd-party/libpng/contrib/libtests/readpng.c similarity index 100% rename from 3rd-party/libpng/contrib/libtests/readpng.c rename to io2d/src/3rd-party/libpng/contrib/libtests/readpng.c diff --git a/3rd-party/libpng/contrib/libtests/tarith.c b/io2d/src/3rd-party/libpng/contrib/libtests/tarith.c similarity index 100% rename from 3rd-party/libpng/contrib/libtests/tarith.c rename to io2d/src/3rd-party/libpng/contrib/libtests/tarith.c diff --git a/3rd-party/libpng/contrib/libtests/timepng.c b/io2d/src/3rd-party/libpng/contrib/libtests/timepng.c similarity index 100% rename from 3rd-party/libpng/contrib/libtests/timepng.c rename to io2d/src/3rd-party/libpng/contrib/libtests/timepng.c diff --git a/3rd-party/libpng/contrib/pngminim/README b/io2d/src/3rd-party/libpng/contrib/pngminim/README similarity index 100% rename from 3rd-party/libpng/contrib/pngminim/README rename to io2d/src/3rd-party/libpng/contrib/pngminim/README diff --git a/3rd-party/libpng/contrib/pngminim/decoder/README b/io2d/src/3rd-party/libpng/contrib/pngminim/decoder/README similarity index 100% rename from 3rd-party/libpng/contrib/pngminim/decoder/README rename to io2d/src/3rd-party/libpng/contrib/pngminim/decoder/README diff --git a/3rd-party/libpng/contrib/pngminim/decoder/makefile b/io2d/src/3rd-party/libpng/contrib/pngminim/decoder/makefile similarity index 100% rename from 3rd-party/libpng/contrib/pngminim/decoder/makefile rename to io2d/src/3rd-party/libpng/contrib/pngminim/decoder/makefile diff --git a/3rd-party/libpng/contrib/pngminim/decoder/pngusr.dfa b/io2d/src/3rd-party/libpng/contrib/pngminim/decoder/pngusr.dfa similarity index 100% rename from 3rd-party/libpng/contrib/pngminim/decoder/pngusr.dfa rename to io2d/src/3rd-party/libpng/contrib/pngminim/decoder/pngusr.dfa diff --git a/3rd-party/libpng/contrib/pngminim/decoder/pngusr.h b/io2d/src/3rd-party/libpng/contrib/pngminim/decoder/pngusr.h similarity index 100% rename from 3rd-party/libpng/contrib/pngminim/decoder/pngusr.h rename to io2d/src/3rd-party/libpng/contrib/pngminim/decoder/pngusr.h diff --git a/3rd-party/libpng/contrib/pngminim/encoder/README b/io2d/src/3rd-party/libpng/contrib/pngminim/encoder/README similarity index 100% rename from 3rd-party/libpng/contrib/pngminim/encoder/README rename to io2d/src/3rd-party/libpng/contrib/pngminim/encoder/README diff --git a/3rd-party/libpng/contrib/pngminim/encoder/makefile b/io2d/src/3rd-party/libpng/contrib/pngminim/encoder/makefile similarity index 100% rename from 3rd-party/libpng/contrib/pngminim/encoder/makefile rename to io2d/src/3rd-party/libpng/contrib/pngminim/encoder/makefile diff --git a/3rd-party/libpng/contrib/pngminim/encoder/pngusr.dfa b/io2d/src/3rd-party/libpng/contrib/pngminim/encoder/pngusr.dfa similarity index 100% rename from 3rd-party/libpng/contrib/pngminim/encoder/pngusr.dfa rename to io2d/src/3rd-party/libpng/contrib/pngminim/encoder/pngusr.dfa diff --git a/3rd-party/libpng/contrib/pngminim/encoder/pngusr.h b/io2d/src/3rd-party/libpng/contrib/pngminim/encoder/pngusr.h similarity index 100% rename from 3rd-party/libpng/contrib/pngminim/encoder/pngusr.h rename to io2d/src/3rd-party/libpng/contrib/pngminim/encoder/pngusr.h diff --git a/3rd-party/libpng/contrib/pngminim/preader/README b/io2d/src/3rd-party/libpng/contrib/pngminim/preader/README similarity index 100% rename from 3rd-party/libpng/contrib/pngminim/preader/README rename to io2d/src/3rd-party/libpng/contrib/pngminim/preader/README diff --git a/3rd-party/libpng/contrib/pngminim/preader/makefile b/io2d/src/3rd-party/libpng/contrib/pngminim/preader/makefile similarity index 100% rename from 3rd-party/libpng/contrib/pngminim/preader/makefile rename to io2d/src/3rd-party/libpng/contrib/pngminim/preader/makefile diff --git a/3rd-party/libpng/contrib/pngminim/preader/pngusr.dfa b/io2d/src/3rd-party/libpng/contrib/pngminim/preader/pngusr.dfa similarity index 100% rename from 3rd-party/libpng/contrib/pngminim/preader/pngusr.dfa rename to io2d/src/3rd-party/libpng/contrib/pngminim/preader/pngusr.dfa diff --git a/3rd-party/libpng/contrib/pngminim/preader/pngusr.h b/io2d/src/3rd-party/libpng/contrib/pngminim/preader/pngusr.h similarity index 100% rename from 3rd-party/libpng/contrib/pngminim/preader/pngusr.h rename to io2d/src/3rd-party/libpng/contrib/pngminim/preader/pngusr.h diff --git a/3rd-party/libpng/contrib/pngminus/README b/io2d/src/3rd-party/libpng/contrib/pngminus/README similarity index 100% rename from 3rd-party/libpng/contrib/pngminus/README rename to io2d/src/3rd-party/libpng/contrib/pngminus/README diff --git a/3rd-party/libpng/contrib/pngminus/makefile.std b/io2d/src/3rd-party/libpng/contrib/pngminus/makefile.std similarity index 100% rename from 3rd-party/libpng/contrib/pngminus/makefile.std rename to io2d/src/3rd-party/libpng/contrib/pngminus/makefile.std diff --git a/3rd-party/libpng/contrib/pngminus/makefile.tc3 b/io2d/src/3rd-party/libpng/contrib/pngminus/makefile.tc3 similarity index 100% rename from 3rd-party/libpng/contrib/pngminus/makefile.tc3 rename to io2d/src/3rd-party/libpng/contrib/pngminus/makefile.tc3 diff --git a/3rd-party/libpng/contrib/pngminus/makevms.com b/io2d/src/3rd-party/libpng/contrib/pngminus/makevms.com similarity index 100% rename from 3rd-party/libpng/contrib/pngminus/makevms.com rename to io2d/src/3rd-party/libpng/contrib/pngminus/makevms.com diff --git a/3rd-party/libpng/contrib/pngminus/png2pnm.bat b/io2d/src/3rd-party/libpng/contrib/pngminus/png2pnm.bat similarity index 100% rename from 3rd-party/libpng/contrib/pngminus/png2pnm.bat rename to io2d/src/3rd-party/libpng/contrib/pngminus/png2pnm.bat diff --git a/3rd-party/libpng/contrib/pngminus/png2pnm.c b/io2d/src/3rd-party/libpng/contrib/pngminus/png2pnm.c similarity index 100% rename from 3rd-party/libpng/contrib/pngminus/png2pnm.c rename to io2d/src/3rd-party/libpng/contrib/pngminus/png2pnm.c diff --git a/3rd-party/libpng/contrib/pngminus/png2pnm.sh b/io2d/src/3rd-party/libpng/contrib/pngminus/png2pnm.sh similarity index 100% rename from 3rd-party/libpng/contrib/pngminus/png2pnm.sh rename to io2d/src/3rd-party/libpng/contrib/pngminus/png2pnm.sh diff --git a/3rd-party/libpng/contrib/pngminus/pngminus.bat b/io2d/src/3rd-party/libpng/contrib/pngminus/pngminus.bat similarity index 100% rename from 3rd-party/libpng/contrib/pngminus/pngminus.bat rename to io2d/src/3rd-party/libpng/contrib/pngminus/pngminus.bat diff --git a/3rd-party/libpng/contrib/pngminus/pngminus.sh b/io2d/src/3rd-party/libpng/contrib/pngminus/pngminus.sh similarity index 100% rename from 3rd-party/libpng/contrib/pngminus/pngminus.sh rename to io2d/src/3rd-party/libpng/contrib/pngminus/pngminus.sh diff --git a/3rd-party/libpng/contrib/pngminus/pnm2png.bat b/io2d/src/3rd-party/libpng/contrib/pngminus/pnm2png.bat similarity index 100% rename from 3rd-party/libpng/contrib/pngminus/pnm2png.bat rename to io2d/src/3rd-party/libpng/contrib/pngminus/pnm2png.bat diff --git a/3rd-party/libpng/contrib/pngminus/pnm2png.c b/io2d/src/3rd-party/libpng/contrib/pngminus/pnm2png.c similarity index 100% rename from 3rd-party/libpng/contrib/pngminus/pnm2png.c rename to io2d/src/3rd-party/libpng/contrib/pngminus/pnm2png.c diff --git a/3rd-party/libpng/contrib/pngminus/pnm2png.sh b/io2d/src/3rd-party/libpng/contrib/pngminus/pnm2png.sh similarity index 100% rename from 3rd-party/libpng/contrib/pngminus/pnm2png.sh rename to io2d/src/3rd-party/libpng/contrib/pngminus/pnm2png.sh diff --git a/3rd-party/libpng/contrib/pngsuite/README b/io2d/src/3rd-party/libpng/contrib/pngsuite/README similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/README rename to io2d/src/3rd-party/libpng/contrib/pngsuite/README diff --git a/3rd-party/libpng/contrib/pngsuite/basn0g01.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/basn0g01.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/basn0g01.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/basn0g01.png diff --git a/3rd-party/libpng/contrib/pngsuite/basn0g02.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/basn0g02.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/basn0g02.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/basn0g02.png diff --git a/3rd-party/libpng/contrib/pngsuite/basn0g04.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/basn0g04.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/basn0g04.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/basn0g04.png diff --git a/3rd-party/libpng/contrib/pngsuite/basn0g08.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/basn0g08.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/basn0g08.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/basn0g08.png diff --git a/3rd-party/libpng/contrib/pngsuite/basn0g16.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/basn0g16.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/basn0g16.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/basn0g16.png diff --git a/3rd-party/libpng/contrib/pngsuite/basn2c08.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/basn2c08.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/basn2c08.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/basn2c08.png diff --git a/3rd-party/libpng/contrib/pngsuite/basn2c16.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/basn2c16.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/basn2c16.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/basn2c16.png diff --git a/3rd-party/libpng/contrib/pngsuite/basn3p01.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/basn3p01.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/basn3p01.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/basn3p01.png diff --git a/3rd-party/libpng/contrib/pngsuite/basn3p02.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/basn3p02.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/basn3p02.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/basn3p02.png diff --git a/3rd-party/libpng/contrib/pngsuite/basn3p04.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/basn3p04.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/basn3p04.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/basn3p04.png diff --git a/3rd-party/libpng/contrib/pngsuite/basn3p08.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/basn3p08.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/basn3p08.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/basn3p08.png diff --git a/3rd-party/libpng/contrib/pngsuite/basn4a08.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/basn4a08.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/basn4a08.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/basn4a08.png diff --git a/3rd-party/libpng/contrib/pngsuite/basn4a16.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/basn4a16.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/basn4a16.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/basn4a16.png diff --git a/3rd-party/libpng/contrib/pngsuite/basn6a08.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/basn6a08.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/basn6a08.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/basn6a08.png diff --git a/3rd-party/libpng/contrib/pngsuite/basn6a16.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/basn6a16.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/basn6a16.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/basn6a16.png diff --git a/3rd-party/libpng/contrib/pngsuite/ftbbn0g01.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/ftbbn0g01.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/ftbbn0g01.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/ftbbn0g01.png diff --git a/3rd-party/libpng/contrib/pngsuite/ftbbn0g02.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/ftbbn0g02.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/ftbbn0g02.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/ftbbn0g02.png diff --git a/3rd-party/libpng/contrib/pngsuite/ftbbn0g04.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/ftbbn0g04.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/ftbbn0g04.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/ftbbn0g04.png diff --git a/3rd-party/libpng/contrib/pngsuite/ftbbn2c16.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/ftbbn2c16.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/ftbbn2c16.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/ftbbn2c16.png diff --git a/3rd-party/libpng/contrib/pngsuite/ftbbn3p08.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/ftbbn3p08.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/ftbbn3p08.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/ftbbn3p08.png diff --git a/3rd-party/libpng/contrib/pngsuite/ftbgn2c16.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/ftbgn2c16.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/ftbgn2c16.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/ftbgn2c16.png diff --git a/3rd-party/libpng/contrib/pngsuite/ftbgn3p08.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/ftbgn3p08.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/ftbgn3p08.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/ftbgn3p08.png diff --git a/3rd-party/libpng/contrib/pngsuite/ftbrn2c08.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/ftbrn2c08.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/ftbrn2c08.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/ftbrn2c08.png diff --git a/3rd-party/libpng/contrib/pngsuite/ftbwn0g16.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/ftbwn0g16.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/ftbwn0g16.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/ftbwn0g16.png diff --git a/3rd-party/libpng/contrib/pngsuite/ftbwn3p08.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/ftbwn3p08.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/ftbwn3p08.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/ftbwn3p08.png diff --git a/3rd-party/libpng/contrib/pngsuite/ftbyn3p08.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/ftbyn3p08.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/ftbyn3p08.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/ftbyn3p08.png diff --git a/3rd-party/libpng/contrib/pngsuite/ftp0n0g08.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/ftp0n0g08.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/ftp0n0g08.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/ftp0n0g08.png diff --git a/3rd-party/libpng/contrib/pngsuite/ftp0n2c08.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/ftp0n2c08.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/ftp0n2c08.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/ftp0n2c08.png diff --git a/3rd-party/libpng/contrib/pngsuite/ftp0n3p08.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/ftp0n3p08.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/ftp0n3p08.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/ftp0n3p08.png diff --git a/3rd-party/libpng/contrib/pngsuite/ftp1n3p08.png b/io2d/src/3rd-party/libpng/contrib/pngsuite/ftp1n3p08.png similarity index 100% rename from 3rd-party/libpng/contrib/pngsuite/ftp1n3p08.png rename to io2d/src/3rd-party/libpng/contrib/pngsuite/ftp1n3p08.png diff --git a/3rd-party/libpng/contrib/tools/README.txt b/io2d/src/3rd-party/libpng/contrib/tools/README.txt similarity index 100% rename from 3rd-party/libpng/contrib/tools/README.txt rename to io2d/src/3rd-party/libpng/contrib/tools/README.txt diff --git a/3rd-party/libpng/contrib/tools/checksum-icc.c b/io2d/src/3rd-party/libpng/contrib/tools/checksum-icc.c similarity index 100% rename from 3rd-party/libpng/contrib/tools/checksum-icc.c rename to io2d/src/3rd-party/libpng/contrib/tools/checksum-icc.c diff --git a/3rd-party/libpng/contrib/tools/chkfmt b/io2d/src/3rd-party/libpng/contrib/tools/chkfmt similarity index 100% rename from 3rd-party/libpng/contrib/tools/chkfmt rename to io2d/src/3rd-party/libpng/contrib/tools/chkfmt diff --git a/3rd-party/libpng/contrib/tools/cvtcolor.c b/io2d/src/3rd-party/libpng/contrib/tools/cvtcolor.c similarity index 100% rename from 3rd-party/libpng/contrib/tools/cvtcolor.c rename to io2d/src/3rd-party/libpng/contrib/tools/cvtcolor.c diff --git a/3rd-party/libpng/contrib/tools/intgamma.sh b/io2d/src/3rd-party/libpng/contrib/tools/intgamma.sh similarity index 100% rename from 3rd-party/libpng/contrib/tools/intgamma.sh rename to io2d/src/3rd-party/libpng/contrib/tools/intgamma.sh diff --git a/3rd-party/libpng/contrib/tools/makesRGB.c b/io2d/src/3rd-party/libpng/contrib/tools/makesRGB.c similarity index 100% rename from 3rd-party/libpng/contrib/tools/makesRGB.c rename to io2d/src/3rd-party/libpng/contrib/tools/makesRGB.c diff --git a/3rd-party/libpng/contrib/tools/png-fix-itxt.c b/io2d/src/3rd-party/libpng/contrib/tools/png-fix-itxt.c similarity index 100% rename from 3rd-party/libpng/contrib/tools/png-fix-itxt.c rename to io2d/src/3rd-party/libpng/contrib/tools/png-fix-itxt.c diff --git a/3rd-party/libpng/contrib/tools/pngfix.c b/io2d/src/3rd-party/libpng/contrib/tools/pngfix.c similarity index 100% rename from 3rd-party/libpng/contrib/tools/pngfix.c rename to io2d/src/3rd-party/libpng/contrib/tools/pngfix.c diff --git a/3rd-party/libpng/contrib/tools/sRGB.h b/io2d/src/3rd-party/libpng/contrib/tools/sRGB.h similarity index 100% rename from 3rd-party/libpng/contrib/tools/sRGB.h rename to io2d/src/3rd-party/libpng/contrib/tools/sRGB.h diff --git a/3rd-party/libpng/contrib/visupng/PngFile.c b/io2d/src/3rd-party/libpng/contrib/visupng/PngFile.c similarity index 100% rename from 3rd-party/libpng/contrib/visupng/PngFile.c rename to io2d/src/3rd-party/libpng/contrib/visupng/PngFile.c diff --git a/3rd-party/libpng/contrib/visupng/PngFile.h b/io2d/src/3rd-party/libpng/contrib/visupng/PngFile.h similarity index 100% rename from 3rd-party/libpng/contrib/visupng/PngFile.h rename to io2d/src/3rd-party/libpng/contrib/visupng/PngFile.h diff --git a/3rd-party/libpng/contrib/visupng/README.txt b/io2d/src/3rd-party/libpng/contrib/visupng/README.txt similarity index 100% rename from 3rd-party/libpng/contrib/visupng/README.txt rename to io2d/src/3rd-party/libpng/contrib/visupng/README.txt diff --git a/3rd-party/libpng/contrib/visupng/VisualPng.c b/io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.c similarity index 100% rename from 3rd-party/libpng/contrib/visupng/VisualPng.c rename to io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.c diff --git a/3rd-party/libpng/contrib/visupng/VisualPng.dsp b/io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.dsp similarity index 100% rename from 3rd-party/libpng/contrib/visupng/VisualPng.dsp rename to io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.dsp diff --git a/3rd-party/libpng/contrib/visupng/VisualPng.dsw b/io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.dsw similarity index 100% rename from 3rd-party/libpng/contrib/visupng/VisualPng.dsw rename to io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.dsw diff --git a/3rd-party/libpng/contrib/visupng/VisualPng.ico b/io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.ico similarity index 100% rename from 3rd-party/libpng/contrib/visupng/VisualPng.ico rename to io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.ico diff --git a/3rd-party/libpng/contrib/visupng/VisualPng.png b/io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.png similarity index 100% rename from 3rd-party/libpng/contrib/visupng/VisualPng.png rename to io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.png diff --git a/3rd-party/libpng/contrib/visupng/VisualPng.rc b/io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.rc similarity index 100% rename from 3rd-party/libpng/contrib/visupng/VisualPng.rc rename to io2d/src/3rd-party/libpng/contrib/visupng/VisualPng.rc diff --git a/3rd-party/libpng/contrib/visupng/cexcept.h b/io2d/src/3rd-party/libpng/contrib/visupng/cexcept.h similarity index 100% rename from 3rd-party/libpng/contrib/visupng/cexcept.h rename to io2d/src/3rd-party/libpng/contrib/visupng/cexcept.h diff --git a/3rd-party/libpng/contrib/visupng/resource.h b/io2d/src/3rd-party/libpng/contrib/visupng/resource.h similarity index 100% rename from 3rd-party/libpng/contrib/visupng/resource.h rename to io2d/src/3rd-party/libpng/contrib/visupng/resource.h diff --git a/3rd-party/libpng/example.c b/io2d/src/3rd-party/libpng/example.c similarity index 100% rename from 3rd-party/libpng/example.c rename to io2d/src/3rd-party/libpng/example.c diff --git a/3rd-party/libpng/libpng-config.in b/io2d/src/3rd-party/libpng/libpng-config.in similarity index 100% rename from 3rd-party/libpng/libpng-config.in rename to io2d/src/3rd-party/libpng/libpng-config.in diff --git a/3rd-party/libpng/libpng-manual.txt b/io2d/src/3rd-party/libpng/libpng-manual.txt similarity index 100% rename from 3rd-party/libpng/libpng-manual.txt rename to io2d/src/3rd-party/libpng/libpng-manual.txt diff --git a/3rd-party/libpng/libpng.3 b/io2d/src/3rd-party/libpng/libpng.3 similarity index 100% rename from 3rd-party/libpng/libpng.3 rename to io2d/src/3rd-party/libpng/libpng.3 diff --git a/3rd-party/libpng/libpng.pc.in b/io2d/src/3rd-party/libpng/libpng.pc.in similarity index 100% rename from 3rd-party/libpng/libpng.pc.in rename to io2d/src/3rd-party/libpng/libpng.pc.in diff --git a/3rd-party/libpng/libpngpf.3 b/io2d/src/3rd-party/libpng/libpngpf.3 similarity index 100% rename from 3rd-party/libpng/libpngpf.3 rename to io2d/src/3rd-party/libpng/libpngpf.3 diff --git a/3rd-party/libpng/png.5 b/io2d/src/3rd-party/libpng/png.5 similarity index 100% rename from 3rd-party/libpng/png.5 rename to io2d/src/3rd-party/libpng/png.5 diff --git a/3rd-party/libpng/png.c b/io2d/src/3rd-party/libpng/png.c similarity index 100% rename from 3rd-party/libpng/png.c rename to io2d/src/3rd-party/libpng/png.c diff --git a/3rd-party/libpng/png.h b/io2d/src/3rd-party/libpng/png.h similarity index 100% rename from 3rd-party/libpng/png.h rename to io2d/src/3rd-party/libpng/png.h diff --git a/3rd-party/libpng/pngbar.jpg b/io2d/src/3rd-party/libpng/pngbar.jpg similarity index 100% rename from 3rd-party/libpng/pngbar.jpg rename to io2d/src/3rd-party/libpng/pngbar.jpg diff --git a/3rd-party/libpng/pngbar.png b/io2d/src/3rd-party/libpng/pngbar.png similarity index 100% rename from 3rd-party/libpng/pngbar.png rename to io2d/src/3rd-party/libpng/pngbar.png diff --git a/3rd-party/libpng/pngconf.h b/io2d/src/3rd-party/libpng/pngconf.h similarity index 100% rename from 3rd-party/libpng/pngconf.h rename to io2d/src/3rd-party/libpng/pngconf.h diff --git a/3rd-party/libpng/pngdebug.h b/io2d/src/3rd-party/libpng/pngdebug.h similarity index 100% rename from 3rd-party/libpng/pngdebug.h rename to io2d/src/3rd-party/libpng/pngdebug.h diff --git a/3rd-party/libpng/pngerror.c b/io2d/src/3rd-party/libpng/pngerror.c similarity index 100% rename from 3rd-party/libpng/pngerror.c rename to io2d/src/3rd-party/libpng/pngerror.c diff --git a/3rd-party/libpng/pngget.c b/io2d/src/3rd-party/libpng/pngget.c similarity index 100% rename from 3rd-party/libpng/pngget.c rename to io2d/src/3rd-party/libpng/pngget.c diff --git a/3rd-party/libpng/pnginfo.h b/io2d/src/3rd-party/libpng/pnginfo.h similarity index 100% rename from 3rd-party/libpng/pnginfo.h rename to io2d/src/3rd-party/libpng/pnginfo.h diff --git a/3rd-party/libpng/pnglibconf.h b/io2d/src/3rd-party/libpng/pnglibconf.h similarity index 100% rename from 3rd-party/libpng/pnglibconf.h rename to io2d/src/3rd-party/libpng/pnglibconf.h diff --git a/3rd-party/libpng/pngmem.c b/io2d/src/3rd-party/libpng/pngmem.c similarity index 100% rename from 3rd-party/libpng/pngmem.c rename to io2d/src/3rd-party/libpng/pngmem.c diff --git a/3rd-party/libpng/pngnow.png b/io2d/src/3rd-party/libpng/pngnow.png similarity index 100% rename from 3rd-party/libpng/pngnow.png rename to io2d/src/3rd-party/libpng/pngnow.png diff --git a/3rd-party/libpng/pngpread.c b/io2d/src/3rd-party/libpng/pngpread.c similarity index 100% rename from 3rd-party/libpng/pngpread.c rename to io2d/src/3rd-party/libpng/pngpread.c diff --git a/3rd-party/libpng/pngpriv.h b/io2d/src/3rd-party/libpng/pngpriv.h similarity index 100% rename from 3rd-party/libpng/pngpriv.h rename to io2d/src/3rd-party/libpng/pngpriv.h diff --git a/3rd-party/libpng/pngread.c b/io2d/src/3rd-party/libpng/pngread.c similarity index 100% rename from 3rd-party/libpng/pngread.c rename to io2d/src/3rd-party/libpng/pngread.c diff --git a/3rd-party/libpng/pngrio.c b/io2d/src/3rd-party/libpng/pngrio.c similarity index 100% rename from 3rd-party/libpng/pngrio.c rename to io2d/src/3rd-party/libpng/pngrio.c diff --git a/3rd-party/libpng/pngrtran.c b/io2d/src/3rd-party/libpng/pngrtran.c similarity index 100% rename from 3rd-party/libpng/pngrtran.c rename to io2d/src/3rd-party/libpng/pngrtran.c diff --git a/3rd-party/libpng/pngrutil.c b/io2d/src/3rd-party/libpng/pngrutil.c similarity index 100% rename from 3rd-party/libpng/pngrutil.c rename to io2d/src/3rd-party/libpng/pngrutil.c diff --git a/3rd-party/libpng/pngset.c b/io2d/src/3rd-party/libpng/pngset.c similarity index 100% rename from 3rd-party/libpng/pngset.c rename to io2d/src/3rd-party/libpng/pngset.c diff --git a/3rd-party/libpng/pngstruct.h b/io2d/src/3rd-party/libpng/pngstruct.h similarity index 100% rename from 3rd-party/libpng/pngstruct.h rename to io2d/src/3rd-party/libpng/pngstruct.h diff --git a/3rd-party/libpng/pngtest.c b/io2d/src/3rd-party/libpng/pngtest.c similarity index 100% rename from 3rd-party/libpng/pngtest.c rename to io2d/src/3rd-party/libpng/pngtest.c diff --git a/3rd-party/libpng/pngtest.png b/io2d/src/3rd-party/libpng/pngtest.png similarity index 100% rename from 3rd-party/libpng/pngtest.png rename to io2d/src/3rd-party/libpng/pngtest.png diff --git a/3rd-party/libpng/pngtrans.c b/io2d/src/3rd-party/libpng/pngtrans.c similarity index 100% rename from 3rd-party/libpng/pngtrans.c rename to io2d/src/3rd-party/libpng/pngtrans.c diff --git a/3rd-party/libpng/pngusr.dfa b/io2d/src/3rd-party/libpng/pngusr.dfa similarity index 100% rename from 3rd-party/libpng/pngusr.dfa rename to io2d/src/3rd-party/libpng/pngusr.dfa diff --git a/3rd-party/libpng/pngwio.c b/io2d/src/3rd-party/libpng/pngwio.c similarity index 100% rename from 3rd-party/libpng/pngwio.c rename to io2d/src/3rd-party/libpng/pngwio.c diff --git a/3rd-party/libpng/pngwrite.c b/io2d/src/3rd-party/libpng/pngwrite.c similarity index 100% rename from 3rd-party/libpng/pngwrite.c rename to io2d/src/3rd-party/libpng/pngwrite.c diff --git a/3rd-party/libpng/pngwtran.c b/io2d/src/3rd-party/libpng/pngwtran.c similarity index 100% rename from 3rd-party/libpng/pngwtran.c rename to io2d/src/3rd-party/libpng/pngwtran.c diff --git a/3rd-party/libpng/pngwutil.c b/io2d/src/3rd-party/libpng/pngwutil.c similarity index 100% rename from 3rd-party/libpng/pngwutil.c rename to io2d/src/3rd-party/libpng/pngwutil.c diff --git a/3rd-party/libpng/projects/owatcom/libpng.tgt b/io2d/src/3rd-party/libpng/projects/owatcom/libpng.tgt similarity index 100% rename from 3rd-party/libpng/projects/owatcom/libpng.tgt rename to io2d/src/3rd-party/libpng/projects/owatcom/libpng.tgt diff --git a/3rd-party/libpng/projects/owatcom/libpng.wpj b/io2d/src/3rd-party/libpng/projects/owatcom/libpng.wpj similarity index 100% rename from 3rd-party/libpng/projects/owatcom/libpng.wpj rename to io2d/src/3rd-party/libpng/projects/owatcom/libpng.wpj diff --git a/3rd-party/libpng/projects/owatcom/pngconfig.mak b/io2d/src/3rd-party/libpng/projects/owatcom/pngconfig.mak similarity index 100% rename from 3rd-party/libpng/projects/owatcom/pngconfig.mak rename to io2d/src/3rd-party/libpng/projects/owatcom/pngconfig.mak diff --git a/3rd-party/libpng/projects/owatcom/pngstest.tgt b/io2d/src/3rd-party/libpng/projects/owatcom/pngstest.tgt similarity index 100% rename from 3rd-party/libpng/projects/owatcom/pngstest.tgt rename to io2d/src/3rd-party/libpng/projects/owatcom/pngstest.tgt diff --git a/3rd-party/libpng/projects/owatcom/pngtest.tgt b/io2d/src/3rd-party/libpng/projects/owatcom/pngtest.tgt similarity index 100% rename from 3rd-party/libpng/projects/owatcom/pngtest.tgt rename to io2d/src/3rd-party/libpng/projects/owatcom/pngtest.tgt diff --git a/3rd-party/libpng/projects/owatcom/pngvalid.tgt b/io2d/src/3rd-party/libpng/projects/owatcom/pngvalid.tgt similarity index 100% rename from 3rd-party/libpng/projects/owatcom/pngvalid.tgt rename to io2d/src/3rd-party/libpng/projects/owatcom/pngvalid.tgt diff --git a/3rd-party/libpng/projects/visualc71/PRJ0041.mak b/io2d/src/3rd-party/libpng/projects/visualc71/PRJ0041.mak similarity index 100% rename from 3rd-party/libpng/projects/visualc71/PRJ0041.mak rename to io2d/src/3rd-party/libpng/projects/visualc71/PRJ0041.mak diff --git a/3rd-party/libpng/projects/visualc71/README.txt b/io2d/src/3rd-party/libpng/projects/visualc71/README.txt similarity index 100% rename from 3rd-party/libpng/projects/visualc71/README.txt rename to io2d/src/3rd-party/libpng/projects/visualc71/README.txt diff --git a/3rd-party/libpng/projects/visualc71/README_zlib.txt b/io2d/src/3rd-party/libpng/projects/visualc71/README_zlib.txt similarity index 100% rename from 3rd-party/libpng/projects/visualc71/README_zlib.txt rename to io2d/src/3rd-party/libpng/projects/visualc71/README_zlib.txt diff --git a/3rd-party/libpng/projects/visualc71/libpng.sln b/io2d/src/3rd-party/libpng/projects/visualc71/libpng.sln similarity index 100% rename from 3rd-party/libpng/projects/visualc71/libpng.sln rename to io2d/src/3rd-party/libpng/projects/visualc71/libpng.sln diff --git a/3rd-party/libpng/projects/visualc71/libpng.vcproj b/io2d/src/3rd-party/libpng/projects/visualc71/libpng.vcproj similarity index 100% rename from 3rd-party/libpng/projects/visualc71/libpng.vcproj rename to io2d/src/3rd-party/libpng/projects/visualc71/libpng.vcproj diff --git a/3rd-party/libpng/projects/visualc71/pngtest.vcproj b/io2d/src/3rd-party/libpng/projects/visualc71/pngtest.vcproj similarity index 100% rename from 3rd-party/libpng/projects/visualc71/pngtest.vcproj rename to io2d/src/3rd-party/libpng/projects/visualc71/pngtest.vcproj diff --git a/3rd-party/libpng/projects/visualc71/zlib.vcproj b/io2d/src/3rd-party/libpng/projects/visualc71/zlib.vcproj similarity index 100% rename from 3rd-party/libpng/projects/visualc71/zlib.vcproj rename to io2d/src/3rd-party/libpng/projects/visualc71/zlib.vcproj diff --git a/3rd-party/libpng/projects/vstudio/WARNING b/io2d/src/3rd-party/libpng/projects/vstudio/WARNING similarity index 100% rename from 3rd-party/libpng/projects/vstudio/WARNING rename to io2d/src/3rd-party/libpng/projects/vstudio/WARNING diff --git a/3rd-party/libpng/projects/vstudio/libpng/libpng.vcxproj b/io2d/src/3rd-party/libpng/projects/vstudio/libpng/libpng.vcxproj similarity index 100% rename from 3rd-party/libpng/projects/vstudio/libpng/libpng.vcxproj rename to io2d/src/3rd-party/libpng/projects/vstudio/libpng/libpng.vcxproj diff --git a/3rd-party/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj b/io2d/src/3rd-party/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj similarity index 100% rename from 3rd-party/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj rename to io2d/src/3rd-party/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj diff --git a/3rd-party/libpng/projects/vstudio/pngstest/pngstest.vcxproj b/io2d/src/3rd-party/libpng/projects/vstudio/pngstest/pngstest.vcxproj similarity index 100% rename from 3rd-party/libpng/projects/vstudio/pngstest/pngstest.vcxproj rename to io2d/src/3rd-party/libpng/projects/vstudio/pngstest/pngstest.vcxproj diff --git a/3rd-party/libpng/projects/vstudio/pngtest/pngtest.vcxproj b/io2d/src/3rd-party/libpng/projects/vstudio/pngtest/pngtest.vcxproj similarity index 100% rename from 3rd-party/libpng/projects/vstudio/pngtest/pngtest.vcxproj rename to io2d/src/3rd-party/libpng/projects/vstudio/pngtest/pngtest.vcxproj diff --git a/3rd-party/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj b/io2d/src/3rd-party/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj similarity index 100% rename from 3rd-party/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj rename to io2d/src/3rd-party/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj diff --git a/3rd-party/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj b/io2d/src/3rd-party/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj similarity index 100% rename from 3rd-party/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj rename to io2d/src/3rd-party/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj diff --git a/3rd-party/libpng/projects/vstudio/readme.txt b/io2d/src/3rd-party/libpng/projects/vstudio/readme.txt similarity index 100% rename from 3rd-party/libpng/projects/vstudio/readme.txt rename to io2d/src/3rd-party/libpng/projects/vstudio/readme.txt diff --git a/3rd-party/libpng/projects/vstudio/vstudio.sln b/io2d/src/3rd-party/libpng/projects/vstudio/vstudio.sln similarity index 100% rename from 3rd-party/libpng/projects/vstudio/vstudio.sln rename to io2d/src/3rd-party/libpng/projects/vstudio/vstudio.sln diff --git a/3rd-party/libpng/projects/vstudio/zlib.props b/io2d/src/3rd-party/libpng/projects/vstudio/zlib.props similarity index 100% rename from 3rd-party/libpng/projects/vstudio/zlib.props rename to io2d/src/3rd-party/libpng/projects/vstudio/zlib.props diff --git a/3rd-party/libpng/projects/vstudio/zlib/zlib.vcxproj b/io2d/src/3rd-party/libpng/projects/vstudio/zlib/zlib.vcxproj similarity index 100% rename from 3rd-party/libpng/projects/vstudio/zlib/zlib.vcxproj rename to io2d/src/3rd-party/libpng/projects/vstudio/zlib/zlib.vcxproj diff --git a/3rd-party/libpng/scripts/README.txt b/io2d/src/3rd-party/libpng/scripts/README.txt similarity index 100% rename from 3rd-party/libpng/scripts/README.txt rename to io2d/src/3rd-party/libpng/scripts/README.txt diff --git a/3rd-party/libpng/scripts/SCOPTIONS.ppc b/io2d/src/3rd-party/libpng/scripts/SCOPTIONS.ppc similarity index 100% rename from 3rd-party/libpng/scripts/SCOPTIONS.ppc rename to io2d/src/3rd-party/libpng/scripts/SCOPTIONS.ppc diff --git a/3rd-party/libpng/scripts/checksym.awk b/io2d/src/3rd-party/libpng/scripts/checksym.awk similarity index 100% rename from 3rd-party/libpng/scripts/checksym.awk rename to io2d/src/3rd-party/libpng/scripts/checksym.awk diff --git a/3rd-party/libpng/scripts/def.dfn b/io2d/src/3rd-party/libpng/scripts/def.dfn similarity index 100% rename from 3rd-party/libpng/scripts/def.dfn rename to io2d/src/3rd-party/libpng/scripts/def.dfn diff --git a/3rd-party/libpng/scripts/descrip.mms b/io2d/src/3rd-party/libpng/scripts/descrip.mms similarity index 100% rename from 3rd-party/libpng/scripts/descrip.mms rename to io2d/src/3rd-party/libpng/scripts/descrip.mms diff --git a/3rd-party/libpng/scripts/dfn.awk b/io2d/src/3rd-party/libpng/scripts/dfn.awk similarity index 100% rename from 3rd-party/libpng/scripts/dfn.awk rename to io2d/src/3rd-party/libpng/scripts/dfn.awk diff --git a/3rd-party/libpng/scripts/intprefix.dfn b/io2d/src/3rd-party/libpng/scripts/intprefix.dfn similarity index 100% rename from 3rd-party/libpng/scripts/intprefix.dfn rename to io2d/src/3rd-party/libpng/scripts/intprefix.dfn diff --git a/3rd-party/libpng/scripts/libpng-config-body.in b/io2d/src/3rd-party/libpng/scripts/libpng-config-body.in similarity index 100% rename from 3rd-party/libpng/scripts/libpng-config-body.in rename to io2d/src/3rd-party/libpng/scripts/libpng-config-body.in diff --git a/3rd-party/libpng/scripts/libpng-config-head.in b/io2d/src/3rd-party/libpng/scripts/libpng-config-head.in similarity index 100% rename from 3rd-party/libpng/scripts/libpng-config-head.in rename to io2d/src/3rd-party/libpng/scripts/libpng-config-head.in diff --git a/3rd-party/libpng/scripts/libpng.pc.in b/io2d/src/3rd-party/libpng/scripts/libpng.pc.in similarity index 100% rename from 3rd-party/libpng/scripts/libpng.pc.in rename to io2d/src/3rd-party/libpng/scripts/libpng.pc.in diff --git a/3rd-party/libpng/scripts/macro.lst b/io2d/src/3rd-party/libpng/scripts/macro.lst similarity index 100% rename from 3rd-party/libpng/scripts/macro.lst rename to io2d/src/3rd-party/libpng/scripts/macro.lst diff --git a/3rd-party/libpng/scripts/makefile.32sunu b/io2d/src/3rd-party/libpng/scripts/makefile.32sunu similarity index 100% rename from 3rd-party/libpng/scripts/makefile.32sunu rename to io2d/src/3rd-party/libpng/scripts/makefile.32sunu diff --git a/3rd-party/libpng/scripts/makefile.64sunu b/io2d/src/3rd-party/libpng/scripts/makefile.64sunu similarity index 100% rename from 3rd-party/libpng/scripts/makefile.64sunu rename to io2d/src/3rd-party/libpng/scripts/makefile.64sunu diff --git a/3rd-party/libpng/scripts/makefile.acorn b/io2d/src/3rd-party/libpng/scripts/makefile.acorn similarity index 100% rename from 3rd-party/libpng/scripts/makefile.acorn rename to io2d/src/3rd-party/libpng/scripts/makefile.acorn diff --git a/3rd-party/libpng/scripts/makefile.aix b/io2d/src/3rd-party/libpng/scripts/makefile.aix similarity index 100% rename from 3rd-party/libpng/scripts/makefile.aix rename to io2d/src/3rd-party/libpng/scripts/makefile.aix diff --git a/3rd-party/libpng/scripts/makefile.amiga b/io2d/src/3rd-party/libpng/scripts/makefile.amiga similarity index 100% rename from 3rd-party/libpng/scripts/makefile.amiga rename to io2d/src/3rd-party/libpng/scripts/makefile.amiga diff --git a/3rd-party/libpng/scripts/makefile.atari b/io2d/src/3rd-party/libpng/scripts/makefile.atari similarity index 100% rename from 3rd-party/libpng/scripts/makefile.atari rename to io2d/src/3rd-party/libpng/scripts/makefile.atari diff --git a/3rd-party/libpng/scripts/makefile.bc32 b/io2d/src/3rd-party/libpng/scripts/makefile.bc32 similarity index 100% rename from 3rd-party/libpng/scripts/makefile.bc32 rename to io2d/src/3rd-party/libpng/scripts/makefile.bc32 diff --git a/3rd-party/libpng/scripts/makefile.beos b/io2d/src/3rd-party/libpng/scripts/makefile.beos similarity index 100% rename from 3rd-party/libpng/scripts/makefile.beos rename to io2d/src/3rd-party/libpng/scripts/makefile.beos diff --git a/3rd-party/libpng/scripts/makefile.bor b/io2d/src/3rd-party/libpng/scripts/makefile.bor similarity index 100% rename from 3rd-party/libpng/scripts/makefile.bor rename to io2d/src/3rd-party/libpng/scripts/makefile.bor diff --git a/3rd-party/libpng/scripts/makefile.cegcc b/io2d/src/3rd-party/libpng/scripts/makefile.cegcc similarity index 100% rename from 3rd-party/libpng/scripts/makefile.cegcc rename to io2d/src/3rd-party/libpng/scripts/makefile.cegcc diff --git a/3rd-party/libpng/scripts/makefile.darwin b/io2d/src/3rd-party/libpng/scripts/makefile.darwin similarity index 100% rename from 3rd-party/libpng/scripts/makefile.darwin rename to io2d/src/3rd-party/libpng/scripts/makefile.darwin diff --git a/3rd-party/libpng/scripts/makefile.dec b/io2d/src/3rd-party/libpng/scripts/makefile.dec similarity index 100% rename from 3rd-party/libpng/scripts/makefile.dec rename to io2d/src/3rd-party/libpng/scripts/makefile.dec diff --git a/3rd-party/libpng/scripts/makefile.dj2 b/io2d/src/3rd-party/libpng/scripts/makefile.dj2 similarity index 100% rename from 3rd-party/libpng/scripts/makefile.dj2 rename to io2d/src/3rd-party/libpng/scripts/makefile.dj2 diff --git a/3rd-party/libpng/scripts/makefile.elf b/io2d/src/3rd-party/libpng/scripts/makefile.elf similarity index 100% rename from 3rd-party/libpng/scripts/makefile.elf rename to io2d/src/3rd-party/libpng/scripts/makefile.elf diff --git a/3rd-party/libpng/scripts/makefile.freebsd b/io2d/src/3rd-party/libpng/scripts/makefile.freebsd similarity index 100% rename from 3rd-party/libpng/scripts/makefile.freebsd rename to io2d/src/3rd-party/libpng/scripts/makefile.freebsd diff --git a/3rd-party/libpng/scripts/makefile.gcc b/io2d/src/3rd-party/libpng/scripts/makefile.gcc similarity index 100% rename from 3rd-party/libpng/scripts/makefile.gcc rename to io2d/src/3rd-party/libpng/scripts/makefile.gcc diff --git a/3rd-party/libpng/scripts/makefile.hp64 b/io2d/src/3rd-party/libpng/scripts/makefile.hp64 similarity index 100% rename from 3rd-party/libpng/scripts/makefile.hp64 rename to io2d/src/3rd-party/libpng/scripts/makefile.hp64 diff --git a/3rd-party/libpng/scripts/makefile.hpgcc b/io2d/src/3rd-party/libpng/scripts/makefile.hpgcc similarity index 100% rename from 3rd-party/libpng/scripts/makefile.hpgcc rename to io2d/src/3rd-party/libpng/scripts/makefile.hpgcc diff --git a/3rd-party/libpng/scripts/makefile.hpux b/io2d/src/3rd-party/libpng/scripts/makefile.hpux similarity index 100% rename from 3rd-party/libpng/scripts/makefile.hpux rename to io2d/src/3rd-party/libpng/scripts/makefile.hpux diff --git a/3rd-party/libpng/scripts/makefile.ibmc b/io2d/src/3rd-party/libpng/scripts/makefile.ibmc similarity index 100% rename from 3rd-party/libpng/scripts/makefile.ibmc rename to io2d/src/3rd-party/libpng/scripts/makefile.ibmc diff --git a/3rd-party/libpng/scripts/makefile.intel b/io2d/src/3rd-party/libpng/scripts/makefile.intel similarity index 100% rename from 3rd-party/libpng/scripts/makefile.intel rename to io2d/src/3rd-party/libpng/scripts/makefile.intel diff --git a/3rd-party/libpng/scripts/makefile.knr b/io2d/src/3rd-party/libpng/scripts/makefile.knr similarity index 100% rename from 3rd-party/libpng/scripts/makefile.knr rename to io2d/src/3rd-party/libpng/scripts/makefile.knr diff --git a/3rd-party/libpng/scripts/makefile.linux b/io2d/src/3rd-party/libpng/scripts/makefile.linux similarity index 100% rename from 3rd-party/libpng/scripts/makefile.linux rename to io2d/src/3rd-party/libpng/scripts/makefile.linux diff --git a/3rd-party/libpng/scripts/makefile.mips b/io2d/src/3rd-party/libpng/scripts/makefile.mips similarity index 100% rename from 3rd-party/libpng/scripts/makefile.mips rename to io2d/src/3rd-party/libpng/scripts/makefile.mips diff --git a/3rd-party/libpng/scripts/makefile.msc b/io2d/src/3rd-party/libpng/scripts/makefile.msc similarity index 100% rename from 3rd-party/libpng/scripts/makefile.msc rename to io2d/src/3rd-party/libpng/scripts/makefile.msc diff --git a/3rd-party/libpng/scripts/makefile.msys b/io2d/src/3rd-party/libpng/scripts/makefile.msys similarity index 100% rename from 3rd-party/libpng/scripts/makefile.msys rename to io2d/src/3rd-party/libpng/scripts/makefile.msys diff --git a/3rd-party/libpng/scripts/makefile.ne12bsd b/io2d/src/3rd-party/libpng/scripts/makefile.ne12bsd similarity index 100% rename from 3rd-party/libpng/scripts/makefile.ne12bsd rename to io2d/src/3rd-party/libpng/scripts/makefile.ne12bsd diff --git a/3rd-party/libpng/scripts/makefile.netbsd b/io2d/src/3rd-party/libpng/scripts/makefile.netbsd similarity index 100% rename from 3rd-party/libpng/scripts/makefile.netbsd rename to io2d/src/3rd-party/libpng/scripts/makefile.netbsd diff --git a/3rd-party/libpng/scripts/makefile.openbsd b/io2d/src/3rd-party/libpng/scripts/makefile.openbsd similarity index 100% rename from 3rd-party/libpng/scripts/makefile.openbsd rename to io2d/src/3rd-party/libpng/scripts/makefile.openbsd diff --git a/3rd-party/libpng/scripts/makefile.sco b/io2d/src/3rd-party/libpng/scripts/makefile.sco similarity index 100% rename from 3rd-party/libpng/scripts/makefile.sco rename to io2d/src/3rd-party/libpng/scripts/makefile.sco diff --git a/3rd-party/libpng/scripts/makefile.sggcc b/io2d/src/3rd-party/libpng/scripts/makefile.sggcc similarity index 100% rename from 3rd-party/libpng/scripts/makefile.sggcc rename to io2d/src/3rd-party/libpng/scripts/makefile.sggcc diff --git a/3rd-party/libpng/scripts/makefile.sgi b/io2d/src/3rd-party/libpng/scripts/makefile.sgi similarity index 100% rename from 3rd-party/libpng/scripts/makefile.sgi rename to io2d/src/3rd-party/libpng/scripts/makefile.sgi diff --git a/3rd-party/libpng/scripts/makefile.so9 b/io2d/src/3rd-party/libpng/scripts/makefile.so9 similarity index 100% rename from 3rd-party/libpng/scripts/makefile.so9 rename to io2d/src/3rd-party/libpng/scripts/makefile.so9 diff --git a/3rd-party/libpng/scripts/makefile.solaris b/io2d/src/3rd-party/libpng/scripts/makefile.solaris similarity index 100% rename from 3rd-party/libpng/scripts/makefile.solaris rename to io2d/src/3rd-party/libpng/scripts/makefile.solaris diff --git a/3rd-party/libpng/scripts/makefile.solaris-x86 b/io2d/src/3rd-party/libpng/scripts/makefile.solaris-x86 similarity index 100% rename from 3rd-party/libpng/scripts/makefile.solaris-x86 rename to io2d/src/3rd-party/libpng/scripts/makefile.solaris-x86 diff --git a/3rd-party/libpng/scripts/makefile.std b/io2d/src/3rd-party/libpng/scripts/makefile.std similarity index 100% rename from 3rd-party/libpng/scripts/makefile.std rename to io2d/src/3rd-party/libpng/scripts/makefile.std diff --git a/3rd-party/libpng/scripts/makefile.sunos b/io2d/src/3rd-party/libpng/scripts/makefile.sunos similarity index 100% rename from 3rd-party/libpng/scripts/makefile.sunos rename to io2d/src/3rd-party/libpng/scripts/makefile.sunos diff --git a/3rd-party/libpng/scripts/makefile.tc3 b/io2d/src/3rd-party/libpng/scripts/makefile.tc3 similarity index 100% rename from 3rd-party/libpng/scripts/makefile.tc3 rename to io2d/src/3rd-party/libpng/scripts/makefile.tc3 diff --git a/3rd-party/libpng/scripts/makefile.vcwin32 b/io2d/src/3rd-party/libpng/scripts/makefile.vcwin32 similarity index 100% rename from 3rd-party/libpng/scripts/makefile.vcwin32 rename to io2d/src/3rd-party/libpng/scripts/makefile.vcwin32 diff --git a/3rd-party/libpng/scripts/makevms.com b/io2d/src/3rd-party/libpng/scripts/makevms.com similarity index 100% rename from 3rd-party/libpng/scripts/makevms.com rename to io2d/src/3rd-party/libpng/scripts/makevms.com diff --git a/3rd-party/libpng/scripts/options.awk b/io2d/src/3rd-party/libpng/scripts/options.awk similarity index 100% rename from 3rd-party/libpng/scripts/options.awk rename to io2d/src/3rd-party/libpng/scripts/options.awk diff --git a/3rd-party/libpng/scripts/pnglibconf.dfa b/io2d/src/3rd-party/libpng/scripts/pnglibconf.dfa similarity index 100% rename from 3rd-party/libpng/scripts/pnglibconf.dfa rename to io2d/src/3rd-party/libpng/scripts/pnglibconf.dfa diff --git a/3rd-party/libpng/scripts/pnglibconf.h.prebuilt b/io2d/src/3rd-party/libpng/scripts/pnglibconf.h.prebuilt similarity index 100% rename from 3rd-party/libpng/scripts/pnglibconf.h.prebuilt rename to io2d/src/3rd-party/libpng/scripts/pnglibconf.h.prebuilt diff --git a/3rd-party/libpng/scripts/pnglibconf.mak b/io2d/src/3rd-party/libpng/scripts/pnglibconf.mak similarity index 100% rename from 3rd-party/libpng/scripts/pnglibconf.mak rename to io2d/src/3rd-party/libpng/scripts/pnglibconf.mak diff --git a/3rd-party/libpng/scripts/pngwin.rc b/io2d/src/3rd-party/libpng/scripts/pngwin.rc similarity index 100% rename from 3rd-party/libpng/scripts/pngwin.rc rename to io2d/src/3rd-party/libpng/scripts/pngwin.rc diff --git a/3rd-party/libpng/scripts/prefix.dfn b/io2d/src/3rd-party/libpng/scripts/prefix.dfn similarity index 100% rename from 3rd-party/libpng/scripts/prefix.dfn rename to io2d/src/3rd-party/libpng/scripts/prefix.dfn diff --git a/3rd-party/libpng/scripts/smakefile.ppc b/io2d/src/3rd-party/libpng/scripts/smakefile.ppc similarity index 100% rename from 3rd-party/libpng/scripts/smakefile.ppc rename to io2d/src/3rd-party/libpng/scripts/smakefile.ppc diff --git a/3rd-party/libpng/scripts/sym.dfn b/io2d/src/3rd-party/libpng/scripts/sym.dfn similarity index 100% rename from 3rd-party/libpng/scripts/sym.dfn rename to io2d/src/3rd-party/libpng/scripts/sym.dfn diff --git a/3rd-party/libpng/scripts/symbols.def b/io2d/src/3rd-party/libpng/scripts/symbols.def similarity index 100% rename from 3rd-party/libpng/scripts/symbols.def rename to io2d/src/3rd-party/libpng/scripts/symbols.def diff --git a/3rd-party/libpng/scripts/symbols.dfn b/io2d/src/3rd-party/libpng/scripts/symbols.dfn similarity index 100% rename from 3rd-party/libpng/scripts/symbols.dfn rename to io2d/src/3rd-party/libpng/scripts/symbols.dfn diff --git a/3rd-party/libpng/scripts/vers.dfn b/io2d/src/3rd-party/libpng/scripts/vers.dfn similarity index 100% rename from 3rd-party/libpng/scripts/vers.dfn rename to io2d/src/3rd-party/libpng/scripts/vers.dfn diff --git a/3rd-party/libpng/tests/pngstest b/io2d/src/3rd-party/libpng/tests/pngstest similarity index 100% rename from 3rd-party/libpng/tests/pngstest rename to io2d/src/3rd-party/libpng/tests/pngstest diff --git a/3rd-party/libpng/tests/pngstest-0g01 b/io2d/src/3rd-party/libpng/tests/pngstest-0g01 similarity index 100% rename from 3rd-party/libpng/tests/pngstest-0g01 rename to io2d/src/3rd-party/libpng/tests/pngstest-0g01 diff --git a/3rd-party/libpng/tests/pngstest-0g02 b/io2d/src/3rd-party/libpng/tests/pngstest-0g02 similarity index 100% rename from 3rd-party/libpng/tests/pngstest-0g02 rename to io2d/src/3rd-party/libpng/tests/pngstest-0g02 diff --git a/3rd-party/libpng/tests/pngstest-0g04 b/io2d/src/3rd-party/libpng/tests/pngstest-0g04 similarity index 100% rename from 3rd-party/libpng/tests/pngstest-0g04 rename to io2d/src/3rd-party/libpng/tests/pngstest-0g04 diff --git a/3rd-party/libpng/tests/pngstest-0g08 b/io2d/src/3rd-party/libpng/tests/pngstest-0g08 similarity index 100% rename from 3rd-party/libpng/tests/pngstest-0g08 rename to io2d/src/3rd-party/libpng/tests/pngstest-0g08 diff --git a/3rd-party/libpng/tests/pngstest-0g16 b/io2d/src/3rd-party/libpng/tests/pngstest-0g16 similarity index 100% rename from 3rd-party/libpng/tests/pngstest-0g16 rename to io2d/src/3rd-party/libpng/tests/pngstest-0g16 diff --git a/3rd-party/libpng/tests/pngstest-2c08 b/io2d/src/3rd-party/libpng/tests/pngstest-2c08 similarity index 100% rename from 3rd-party/libpng/tests/pngstest-2c08 rename to io2d/src/3rd-party/libpng/tests/pngstest-2c08 diff --git a/3rd-party/libpng/tests/pngstest-2c16 b/io2d/src/3rd-party/libpng/tests/pngstest-2c16 similarity index 100% rename from 3rd-party/libpng/tests/pngstest-2c16 rename to io2d/src/3rd-party/libpng/tests/pngstest-2c16 diff --git a/3rd-party/libpng/tests/pngstest-3p01 b/io2d/src/3rd-party/libpng/tests/pngstest-3p01 similarity index 100% rename from 3rd-party/libpng/tests/pngstest-3p01 rename to io2d/src/3rd-party/libpng/tests/pngstest-3p01 diff --git a/3rd-party/libpng/tests/pngstest-3p02 b/io2d/src/3rd-party/libpng/tests/pngstest-3p02 similarity index 100% rename from 3rd-party/libpng/tests/pngstest-3p02 rename to io2d/src/3rd-party/libpng/tests/pngstest-3p02 diff --git a/3rd-party/libpng/tests/pngstest-3p04 b/io2d/src/3rd-party/libpng/tests/pngstest-3p04 similarity index 100% rename from 3rd-party/libpng/tests/pngstest-3p04 rename to io2d/src/3rd-party/libpng/tests/pngstest-3p04 diff --git a/3rd-party/libpng/tests/pngstest-3p08 b/io2d/src/3rd-party/libpng/tests/pngstest-3p08 similarity index 100% rename from 3rd-party/libpng/tests/pngstest-3p08 rename to io2d/src/3rd-party/libpng/tests/pngstest-3p08 diff --git a/3rd-party/libpng/tests/pngstest-4a08 b/io2d/src/3rd-party/libpng/tests/pngstest-4a08 similarity index 100% rename from 3rd-party/libpng/tests/pngstest-4a08 rename to io2d/src/3rd-party/libpng/tests/pngstest-4a08 diff --git a/3rd-party/libpng/tests/pngstest-4a16 b/io2d/src/3rd-party/libpng/tests/pngstest-4a16 similarity index 100% rename from 3rd-party/libpng/tests/pngstest-4a16 rename to io2d/src/3rd-party/libpng/tests/pngstest-4a16 diff --git a/3rd-party/libpng/tests/pngstest-6a08 b/io2d/src/3rd-party/libpng/tests/pngstest-6a08 similarity index 100% rename from 3rd-party/libpng/tests/pngstest-6a08 rename to io2d/src/3rd-party/libpng/tests/pngstest-6a08 diff --git a/3rd-party/libpng/tests/pngstest-6a16 b/io2d/src/3rd-party/libpng/tests/pngstest-6a16 similarity index 100% rename from 3rd-party/libpng/tests/pngstest-6a16 rename to io2d/src/3rd-party/libpng/tests/pngstest-6a16 diff --git a/3rd-party/libpng/tests/pngstest-error b/io2d/src/3rd-party/libpng/tests/pngstest-error similarity index 100% rename from 3rd-party/libpng/tests/pngstest-error rename to io2d/src/3rd-party/libpng/tests/pngstest-error diff --git a/3rd-party/libpng/tests/pngtest b/io2d/src/3rd-party/libpng/tests/pngtest similarity index 100% rename from 3rd-party/libpng/tests/pngtest rename to io2d/src/3rd-party/libpng/tests/pngtest diff --git a/3rd-party/libpng/tests/pngunknown-IDAT b/io2d/src/3rd-party/libpng/tests/pngunknown-IDAT similarity index 100% rename from 3rd-party/libpng/tests/pngunknown-IDAT rename to io2d/src/3rd-party/libpng/tests/pngunknown-IDAT diff --git a/3rd-party/libpng/tests/pngunknown-discard b/io2d/src/3rd-party/libpng/tests/pngunknown-discard similarity index 100% rename from 3rd-party/libpng/tests/pngunknown-discard rename to io2d/src/3rd-party/libpng/tests/pngunknown-discard diff --git a/3rd-party/libpng/tests/pngunknown-if-safe b/io2d/src/3rd-party/libpng/tests/pngunknown-if-safe similarity index 100% rename from 3rd-party/libpng/tests/pngunknown-if-safe rename to io2d/src/3rd-party/libpng/tests/pngunknown-if-safe diff --git a/3rd-party/libpng/tests/pngunknown-sAPI b/io2d/src/3rd-party/libpng/tests/pngunknown-sAPI similarity index 100% rename from 3rd-party/libpng/tests/pngunknown-sAPI rename to io2d/src/3rd-party/libpng/tests/pngunknown-sAPI diff --git a/3rd-party/libpng/tests/pngunknown-sTER b/io2d/src/3rd-party/libpng/tests/pngunknown-sTER similarity index 100% rename from 3rd-party/libpng/tests/pngunknown-sTER rename to io2d/src/3rd-party/libpng/tests/pngunknown-sTER diff --git a/3rd-party/libpng/tests/pngunknown-save b/io2d/src/3rd-party/libpng/tests/pngunknown-save similarity index 100% rename from 3rd-party/libpng/tests/pngunknown-save rename to io2d/src/3rd-party/libpng/tests/pngunknown-save diff --git a/3rd-party/libpng/tests/pngunknown-vpAg b/io2d/src/3rd-party/libpng/tests/pngunknown-vpAg similarity index 100% rename from 3rd-party/libpng/tests/pngunknown-vpAg rename to io2d/src/3rd-party/libpng/tests/pngunknown-vpAg diff --git a/3rd-party/libpng/tests/pngvalid-gamma-16-to-8 b/io2d/src/3rd-party/libpng/tests/pngvalid-gamma-16-to-8 similarity index 100% rename from 3rd-party/libpng/tests/pngvalid-gamma-16-to-8 rename to io2d/src/3rd-party/libpng/tests/pngvalid-gamma-16-to-8 diff --git a/3rd-party/libpng/tests/pngvalid-gamma-alpha-mode b/io2d/src/3rd-party/libpng/tests/pngvalid-gamma-alpha-mode similarity index 100% rename from 3rd-party/libpng/tests/pngvalid-gamma-alpha-mode rename to io2d/src/3rd-party/libpng/tests/pngvalid-gamma-alpha-mode diff --git a/3rd-party/libpng/tests/pngvalid-gamma-background b/io2d/src/3rd-party/libpng/tests/pngvalid-gamma-background similarity index 100% rename from 3rd-party/libpng/tests/pngvalid-gamma-background rename to io2d/src/3rd-party/libpng/tests/pngvalid-gamma-background diff --git a/3rd-party/libpng/tests/pngvalid-gamma-expand16-alpha-mode b/io2d/src/3rd-party/libpng/tests/pngvalid-gamma-expand16-alpha-mode similarity index 100% rename from 3rd-party/libpng/tests/pngvalid-gamma-expand16-alpha-mode rename to io2d/src/3rd-party/libpng/tests/pngvalid-gamma-expand16-alpha-mode diff --git a/3rd-party/libpng/tests/pngvalid-gamma-expand16-background b/io2d/src/3rd-party/libpng/tests/pngvalid-gamma-expand16-background similarity index 100% rename from 3rd-party/libpng/tests/pngvalid-gamma-expand16-background rename to io2d/src/3rd-party/libpng/tests/pngvalid-gamma-expand16-background diff --git a/3rd-party/libpng/tests/pngvalid-gamma-expand16-transform b/io2d/src/3rd-party/libpng/tests/pngvalid-gamma-expand16-transform similarity index 100% rename from 3rd-party/libpng/tests/pngvalid-gamma-expand16-transform rename to io2d/src/3rd-party/libpng/tests/pngvalid-gamma-expand16-transform diff --git a/3rd-party/libpng/tests/pngvalid-gamma-sbit b/io2d/src/3rd-party/libpng/tests/pngvalid-gamma-sbit similarity index 100% rename from 3rd-party/libpng/tests/pngvalid-gamma-sbit rename to io2d/src/3rd-party/libpng/tests/pngvalid-gamma-sbit diff --git a/3rd-party/libpng/tests/pngvalid-gamma-threshold b/io2d/src/3rd-party/libpng/tests/pngvalid-gamma-threshold similarity index 100% rename from 3rd-party/libpng/tests/pngvalid-gamma-threshold rename to io2d/src/3rd-party/libpng/tests/pngvalid-gamma-threshold diff --git a/3rd-party/libpng/tests/pngvalid-gamma-transform b/io2d/src/3rd-party/libpng/tests/pngvalid-gamma-transform similarity index 100% rename from 3rd-party/libpng/tests/pngvalid-gamma-transform rename to io2d/src/3rd-party/libpng/tests/pngvalid-gamma-transform diff --git a/3rd-party/libpng/tests/pngvalid-progressive-interlace-size b/io2d/src/3rd-party/libpng/tests/pngvalid-progressive-interlace-size similarity index 100% rename from 3rd-party/libpng/tests/pngvalid-progressive-interlace-size rename to io2d/src/3rd-party/libpng/tests/pngvalid-progressive-interlace-size diff --git a/3rd-party/libpng/tests/pngvalid-progressive-interlace-standard b/io2d/src/3rd-party/libpng/tests/pngvalid-progressive-interlace-standard similarity index 100% rename from 3rd-party/libpng/tests/pngvalid-progressive-interlace-standard rename to io2d/src/3rd-party/libpng/tests/pngvalid-progressive-interlace-standard diff --git a/3rd-party/libpng/tests/pngvalid-progressive-interlace-transform b/io2d/src/3rd-party/libpng/tests/pngvalid-progressive-interlace-transform similarity index 100% rename from 3rd-party/libpng/tests/pngvalid-progressive-interlace-transform rename to io2d/src/3rd-party/libpng/tests/pngvalid-progressive-interlace-transform diff --git a/3rd-party/libpng/tests/pngvalid-progressive-standard b/io2d/src/3rd-party/libpng/tests/pngvalid-progressive-standard similarity index 100% rename from 3rd-party/libpng/tests/pngvalid-progressive-standard rename to io2d/src/3rd-party/libpng/tests/pngvalid-progressive-standard diff --git a/3rd-party/libpng/tests/pngvalid-standard b/io2d/src/3rd-party/libpng/tests/pngvalid-standard similarity index 100% rename from 3rd-party/libpng/tests/pngvalid-standard rename to io2d/src/3rd-party/libpng/tests/pngvalid-standard diff --git a/3rd-party/pixman/.gitignore b/io2d/src/3rd-party/pixman/.gitignore similarity index 100% rename from 3rd-party/pixman/.gitignore rename to io2d/src/3rd-party/pixman/.gitignore diff --git a/3rd-party/pixman/AUTHORS b/io2d/src/3rd-party/pixman/AUTHORS similarity index 100% rename from 3rd-party/pixman/AUTHORS rename to io2d/src/3rd-party/pixman/AUTHORS diff --git a/3rd-party/pixman/CODING_STYLE b/io2d/src/3rd-party/pixman/CODING_STYLE similarity index 100% rename from 3rd-party/pixman/CODING_STYLE rename to io2d/src/3rd-party/pixman/CODING_STYLE diff --git a/3rd-party/pixman/COPYING b/io2d/src/3rd-party/pixman/COPYING similarity index 100% rename from 3rd-party/pixman/COPYING rename to io2d/src/3rd-party/pixman/COPYING diff --git a/3rd-party/pixman/ChangeLog b/io2d/src/3rd-party/pixman/ChangeLog similarity index 100% rename from 3rd-party/pixman/ChangeLog rename to io2d/src/3rd-party/pixman/ChangeLog diff --git a/3rd-party/pixman/INSTALL b/io2d/src/3rd-party/pixman/INSTALL similarity index 100% rename from 3rd-party/pixman/INSTALL rename to io2d/src/3rd-party/pixman/INSTALL diff --git a/3rd-party/pixman/Makefile.am b/io2d/src/3rd-party/pixman/Makefile.am similarity index 100% rename from 3rd-party/pixman/Makefile.am rename to io2d/src/3rd-party/pixman/Makefile.am diff --git a/3rd-party/pixman/Makefile.win32 b/io2d/src/3rd-party/pixman/Makefile.win32 similarity index 100% rename from 3rd-party/pixman/Makefile.win32 rename to io2d/src/3rd-party/pixman/Makefile.win32 diff --git a/3rd-party/pixman/Makefile.win32.common b/io2d/src/3rd-party/pixman/Makefile.win32.common similarity index 100% rename from 3rd-party/pixman/Makefile.win32.common rename to io2d/src/3rd-party/pixman/Makefile.win32.common diff --git a/3rd-party/pixman/NEWS b/io2d/src/3rd-party/pixman/NEWS similarity index 100% rename from 3rd-party/pixman/NEWS rename to io2d/src/3rd-party/pixman/NEWS diff --git a/3rd-party/pixman/README b/io2d/src/3rd-party/pixman/README similarity index 100% rename from 3rd-party/pixman/README rename to io2d/src/3rd-party/pixman/README diff --git a/3rd-party/pixman/RELEASING b/io2d/src/3rd-party/pixman/RELEASING similarity index 100% rename from 3rd-party/pixman/RELEASING rename to io2d/src/3rd-party/pixman/RELEASING diff --git a/3rd-party/pixman/autogen.sh b/io2d/src/3rd-party/pixman/autogen.sh similarity index 100% rename from 3rd-party/pixman/autogen.sh rename to io2d/src/3rd-party/pixman/autogen.sh diff --git a/3rd-party/pixman/configure.ac b/io2d/src/3rd-party/pixman/configure.ac similarity index 100% rename from 3rd-party/pixman/configure.ac rename to io2d/src/3rd-party/pixman/configure.ac diff --git a/3rd-party/pixman/demos/Makefile.am b/io2d/src/3rd-party/pixman/demos/Makefile.am similarity index 100% rename from 3rd-party/pixman/demos/Makefile.am rename to io2d/src/3rd-party/pixman/demos/Makefile.am diff --git a/3rd-party/pixman/demos/alpha-test.c b/io2d/src/3rd-party/pixman/demos/alpha-test.c similarity index 100% rename from 3rd-party/pixman/demos/alpha-test.c rename to io2d/src/3rd-party/pixman/demos/alpha-test.c diff --git a/3rd-party/pixman/demos/checkerboard.c b/io2d/src/3rd-party/pixman/demos/checkerboard.c similarity index 100% rename from 3rd-party/pixman/demos/checkerboard.c rename to io2d/src/3rd-party/pixman/demos/checkerboard.c diff --git a/3rd-party/pixman/demos/clip-in.c b/io2d/src/3rd-party/pixman/demos/clip-in.c similarity index 100% rename from 3rd-party/pixman/demos/clip-in.c rename to io2d/src/3rd-party/pixman/demos/clip-in.c diff --git a/3rd-party/pixman/demos/clip-test.c b/io2d/src/3rd-party/pixman/demos/clip-test.c similarity index 100% rename from 3rd-party/pixman/demos/clip-test.c rename to io2d/src/3rd-party/pixman/demos/clip-test.c diff --git a/3rd-party/pixman/demos/composite-test.c b/io2d/src/3rd-party/pixman/demos/composite-test.c similarity index 100% rename from 3rd-party/pixman/demos/composite-test.c rename to io2d/src/3rd-party/pixman/demos/composite-test.c diff --git a/3rd-party/pixman/demos/conical-test.c b/io2d/src/3rd-party/pixman/demos/conical-test.c similarity index 100% rename from 3rd-party/pixman/demos/conical-test.c rename to io2d/src/3rd-party/pixman/demos/conical-test.c diff --git a/3rd-party/pixman/demos/convolution-test.c b/io2d/src/3rd-party/pixman/demos/convolution-test.c similarity index 100% rename from 3rd-party/pixman/demos/convolution-test.c rename to io2d/src/3rd-party/pixman/demos/convolution-test.c diff --git a/3rd-party/pixman/demos/gradient-test.c b/io2d/src/3rd-party/pixman/demos/gradient-test.c similarity index 100% rename from 3rd-party/pixman/demos/gradient-test.c rename to io2d/src/3rd-party/pixman/demos/gradient-test.c diff --git a/3rd-party/pixman/demos/gtk-utils.c b/io2d/src/3rd-party/pixman/demos/gtk-utils.c similarity index 100% rename from 3rd-party/pixman/demos/gtk-utils.c rename to io2d/src/3rd-party/pixman/demos/gtk-utils.c diff --git a/3rd-party/pixman/demos/gtk-utils.h b/io2d/src/3rd-party/pixman/demos/gtk-utils.h similarity index 100% rename from 3rd-party/pixman/demos/gtk-utils.h rename to io2d/src/3rd-party/pixman/demos/gtk-utils.h diff --git a/3rd-party/pixman/demos/linear-gradient.c b/io2d/src/3rd-party/pixman/demos/linear-gradient.c similarity index 100% rename from 3rd-party/pixman/demos/linear-gradient.c rename to io2d/src/3rd-party/pixman/demos/linear-gradient.c diff --git a/3rd-party/pixman/demos/parrot.c b/io2d/src/3rd-party/pixman/demos/parrot.c similarity index 100% rename from 3rd-party/pixman/demos/parrot.c rename to io2d/src/3rd-party/pixman/demos/parrot.c diff --git a/3rd-party/pixman/demos/parrot.jpg b/io2d/src/3rd-party/pixman/demos/parrot.jpg similarity index 100% rename from 3rd-party/pixman/demos/parrot.jpg rename to io2d/src/3rd-party/pixman/demos/parrot.jpg diff --git a/3rd-party/pixman/demos/quad2quad.c b/io2d/src/3rd-party/pixman/demos/quad2quad.c similarity index 100% rename from 3rd-party/pixman/demos/quad2quad.c rename to io2d/src/3rd-party/pixman/demos/quad2quad.c diff --git a/3rd-party/pixman/demos/radial-test.c b/io2d/src/3rd-party/pixman/demos/radial-test.c similarity index 100% rename from 3rd-party/pixman/demos/radial-test.c rename to io2d/src/3rd-party/pixman/demos/radial-test.c diff --git a/3rd-party/pixman/demos/scale.c b/io2d/src/3rd-party/pixman/demos/scale.c similarity index 100% rename from 3rd-party/pixman/demos/scale.c rename to io2d/src/3rd-party/pixman/demos/scale.c diff --git a/3rd-party/pixman/demos/scale.ui b/io2d/src/3rd-party/pixman/demos/scale.ui similarity index 100% rename from 3rd-party/pixman/demos/scale.ui rename to io2d/src/3rd-party/pixman/demos/scale.ui diff --git a/3rd-party/pixman/demos/screen-test.c b/io2d/src/3rd-party/pixman/demos/screen-test.c similarity index 100% rename from 3rd-party/pixman/demos/screen-test.c rename to io2d/src/3rd-party/pixman/demos/screen-test.c diff --git a/3rd-party/pixman/demos/srgb-test.c b/io2d/src/3rd-party/pixman/demos/srgb-test.c similarity index 100% rename from 3rd-party/pixman/demos/srgb-test.c rename to io2d/src/3rd-party/pixman/demos/srgb-test.c diff --git a/3rd-party/pixman/demos/srgb-trap-test.c b/io2d/src/3rd-party/pixman/demos/srgb-trap-test.c similarity index 100% rename from 3rd-party/pixman/demos/srgb-trap-test.c rename to io2d/src/3rd-party/pixman/demos/srgb-trap-test.c diff --git a/3rd-party/pixman/demos/trap-test.c b/io2d/src/3rd-party/pixman/demos/trap-test.c similarity index 100% rename from 3rd-party/pixman/demos/trap-test.c rename to io2d/src/3rd-party/pixman/demos/trap-test.c diff --git a/3rd-party/pixman/demos/tri-test.c b/io2d/src/3rd-party/pixman/demos/tri-test.c similarity index 100% rename from 3rd-party/pixman/demos/tri-test.c rename to io2d/src/3rd-party/pixman/demos/tri-test.c diff --git a/3rd-party/pixman/demos/zone_plate.png b/io2d/src/3rd-party/pixman/demos/zone_plate.png similarity index 100% rename from 3rd-party/pixman/demos/zone_plate.png rename to io2d/src/3rd-party/pixman/demos/zone_plate.png diff --git a/3rd-party/pixman/pixman-1-uninstalled.pc.in b/io2d/src/3rd-party/pixman/pixman-1-uninstalled.pc.in similarity index 100% rename from 3rd-party/pixman/pixman-1-uninstalled.pc.in rename to io2d/src/3rd-party/pixman/pixman-1-uninstalled.pc.in diff --git a/3rd-party/pixman/pixman-1.pc.in b/io2d/src/3rd-party/pixman/pixman-1.pc.in similarity index 100% rename from 3rd-party/pixman/pixman-1.pc.in rename to io2d/src/3rd-party/pixman/pixman-1.pc.in diff --git a/3rd-party/pixman/pixman/Makefile.am b/io2d/src/3rd-party/pixman/pixman/Makefile.am similarity index 100% rename from 3rd-party/pixman/pixman/Makefile.am rename to io2d/src/3rd-party/pixman/pixman/Makefile.am diff --git a/3rd-party/pixman/pixman/Makefile.sources b/io2d/src/3rd-party/pixman/pixman/Makefile.sources similarity index 100% rename from 3rd-party/pixman/pixman/Makefile.sources rename to io2d/src/3rd-party/pixman/pixman/Makefile.sources diff --git a/3rd-party/pixman/pixman/Makefile.win32 b/io2d/src/3rd-party/pixman/pixman/Makefile.win32 similarity index 100% rename from 3rd-party/pixman/pixman/Makefile.win32 rename to io2d/src/3rd-party/pixman/pixman/Makefile.win32 diff --git a/3rd-party/pixman/pixman/loongson-mmintrin.h b/io2d/src/3rd-party/pixman/pixman/loongson-mmintrin.h similarity index 100% rename from 3rd-party/pixman/pixman/loongson-mmintrin.h rename to io2d/src/3rd-party/pixman/pixman/loongson-mmintrin.h diff --git a/3rd-party/pixman/pixman/make-srgb.pl b/io2d/src/3rd-party/pixman/pixman/make-srgb.pl similarity index 100% rename from 3rd-party/pixman/pixman/make-srgb.pl rename to io2d/src/3rd-party/pixman/pixman/make-srgb.pl diff --git a/3rd-party/pixman/pixman/pixman-access-accessors.c b/io2d/src/3rd-party/pixman/pixman/pixman-access-accessors.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-access-accessors.c rename to io2d/src/3rd-party/pixman/pixman/pixman-access-accessors.c diff --git a/3rd-party/pixman/pixman/pixman-access.c b/io2d/src/3rd-party/pixman/pixman/pixman-access.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-access.c rename to io2d/src/3rd-party/pixman/pixman/pixman-access.c diff --git a/3rd-party/pixman/pixman/pixman-accessor.h b/io2d/src/3rd-party/pixman/pixman/pixman-accessor.h similarity index 100% rename from 3rd-party/pixman/pixman/pixman-accessor.h rename to io2d/src/3rd-party/pixman/pixman/pixman-accessor.h diff --git a/3rd-party/pixman/pixman/pixman-arm-common.h b/io2d/src/3rd-party/pixman/pixman/pixman-arm-common.h similarity index 100% rename from 3rd-party/pixman/pixman/pixman-arm-common.h rename to io2d/src/3rd-party/pixman/pixman/pixman-arm-common.h diff --git a/3rd-party/pixman/pixman/pixman-arm-detect-win32.asm b/io2d/src/3rd-party/pixman/pixman/pixman-arm-detect-win32.asm similarity index 100% rename from 3rd-party/pixman/pixman/pixman-arm-detect-win32.asm rename to io2d/src/3rd-party/pixman/pixman/pixman-arm-detect-win32.asm diff --git a/3rd-party/pixman/pixman/pixman-arm-neon-asm-bilinear.S b/io2d/src/3rd-party/pixman/pixman/pixman-arm-neon-asm-bilinear.S similarity index 100% rename from 3rd-party/pixman/pixman/pixman-arm-neon-asm-bilinear.S rename to io2d/src/3rd-party/pixman/pixman/pixman-arm-neon-asm-bilinear.S diff --git a/3rd-party/pixman/pixman/pixman-arm-neon-asm.S b/io2d/src/3rd-party/pixman/pixman/pixman-arm-neon-asm.S similarity index 100% rename from 3rd-party/pixman/pixman/pixman-arm-neon-asm.S rename to io2d/src/3rd-party/pixman/pixman/pixman-arm-neon-asm.S diff --git a/3rd-party/pixman/pixman/pixman-arm-neon-asm.h b/io2d/src/3rd-party/pixman/pixman/pixman-arm-neon-asm.h similarity index 100% rename from 3rd-party/pixman/pixman/pixman-arm-neon-asm.h rename to io2d/src/3rd-party/pixman/pixman/pixman-arm-neon-asm.h diff --git a/3rd-party/pixman/pixman/pixman-arm-neon.c b/io2d/src/3rd-party/pixman/pixman/pixman-arm-neon.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-arm-neon.c rename to io2d/src/3rd-party/pixman/pixman/pixman-arm-neon.c diff --git a/3rd-party/pixman/pixman/pixman-arm-simd-asm-scaled.S b/io2d/src/3rd-party/pixman/pixman/pixman-arm-simd-asm-scaled.S similarity index 100% rename from 3rd-party/pixman/pixman/pixman-arm-simd-asm-scaled.S rename to io2d/src/3rd-party/pixman/pixman/pixman-arm-simd-asm-scaled.S diff --git a/3rd-party/pixman/pixman/pixman-arm-simd-asm.S b/io2d/src/3rd-party/pixman/pixman/pixman-arm-simd-asm.S similarity index 100% rename from 3rd-party/pixman/pixman/pixman-arm-simd-asm.S rename to io2d/src/3rd-party/pixman/pixman/pixman-arm-simd-asm.S diff --git a/3rd-party/pixman/pixman/pixman-arm-simd-asm.h b/io2d/src/3rd-party/pixman/pixman/pixman-arm-simd-asm.h similarity index 100% rename from 3rd-party/pixman/pixman/pixman-arm-simd-asm.h rename to io2d/src/3rd-party/pixman/pixman/pixman-arm-simd-asm.h diff --git a/3rd-party/pixman/pixman/pixman-arm-simd.c b/io2d/src/3rd-party/pixman/pixman/pixman-arm-simd.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-arm-simd.c rename to io2d/src/3rd-party/pixman/pixman/pixman-arm-simd.c diff --git a/3rd-party/pixman/pixman/pixman-arm.c b/io2d/src/3rd-party/pixman/pixman/pixman-arm.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-arm.c rename to io2d/src/3rd-party/pixman/pixman/pixman-arm.c diff --git a/3rd-party/pixman/pixman/pixman-bits-image.c b/io2d/src/3rd-party/pixman/pixman/pixman-bits-image.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-bits-image.c rename to io2d/src/3rd-party/pixman/pixman/pixman-bits-image.c diff --git a/3rd-party/pixman/pixman/pixman-combine-float.c b/io2d/src/3rd-party/pixman/pixman/pixman-combine-float.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-combine-float.c rename to io2d/src/3rd-party/pixman/pixman/pixman-combine-float.c diff --git a/3rd-party/pixman/pixman/pixman-combine32.c b/io2d/src/3rd-party/pixman/pixman/pixman-combine32.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-combine32.c rename to io2d/src/3rd-party/pixman/pixman/pixman-combine32.c diff --git a/3rd-party/pixman/pixman/pixman-combine32.h b/io2d/src/3rd-party/pixman/pixman/pixman-combine32.h similarity index 100% rename from 3rd-party/pixman/pixman/pixman-combine32.h rename to io2d/src/3rd-party/pixman/pixman/pixman-combine32.h diff --git a/3rd-party/pixman/pixman/pixman-compiler.h b/io2d/src/3rd-party/pixman/pixman/pixman-compiler.h similarity index 100% rename from 3rd-party/pixman/pixman/pixman-compiler.h rename to io2d/src/3rd-party/pixman/pixman/pixman-compiler.h diff --git a/3rd-party/pixman/pixman/pixman-conical-gradient.c b/io2d/src/3rd-party/pixman/pixman/pixman-conical-gradient.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-conical-gradient.c rename to io2d/src/3rd-party/pixman/pixman/pixman-conical-gradient.c diff --git a/3rd-party/pixman/pixman/pixman-edge-accessors.c b/io2d/src/3rd-party/pixman/pixman/pixman-edge-accessors.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-edge-accessors.c rename to io2d/src/3rd-party/pixman/pixman/pixman-edge-accessors.c diff --git a/3rd-party/pixman/pixman/pixman-edge-imp.h b/io2d/src/3rd-party/pixman/pixman/pixman-edge-imp.h similarity index 100% rename from 3rd-party/pixman/pixman/pixman-edge-imp.h rename to io2d/src/3rd-party/pixman/pixman/pixman-edge-imp.h diff --git a/3rd-party/pixman/pixman/pixman-edge.c b/io2d/src/3rd-party/pixman/pixman/pixman-edge.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-edge.c rename to io2d/src/3rd-party/pixman/pixman/pixman-edge.c diff --git a/3rd-party/pixman/pixman/pixman-fast-path.c b/io2d/src/3rd-party/pixman/pixman/pixman-fast-path.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-fast-path.c rename to io2d/src/3rd-party/pixman/pixman/pixman-fast-path.c diff --git a/3rd-party/pixman/pixman/pixman-filter.c b/io2d/src/3rd-party/pixman/pixman/pixman-filter.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-filter.c rename to io2d/src/3rd-party/pixman/pixman/pixman-filter.c diff --git a/3rd-party/pixman/pixman/pixman-general.c b/io2d/src/3rd-party/pixman/pixman/pixman-general.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-general.c rename to io2d/src/3rd-party/pixman/pixman/pixman-general.c diff --git a/3rd-party/pixman/pixman/pixman-glyph.c b/io2d/src/3rd-party/pixman/pixman/pixman-glyph.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-glyph.c rename to io2d/src/3rd-party/pixman/pixman/pixman-glyph.c diff --git a/3rd-party/pixman/pixman/pixman-gradient-walker.c b/io2d/src/3rd-party/pixman/pixman/pixman-gradient-walker.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-gradient-walker.c rename to io2d/src/3rd-party/pixman/pixman/pixman-gradient-walker.c diff --git a/3rd-party/pixman/pixman/pixman-image.c b/io2d/src/3rd-party/pixman/pixman/pixman-image.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-image.c rename to io2d/src/3rd-party/pixman/pixman/pixman-image.c diff --git a/3rd-party/pixman/pixman/pixman-implementation.c b/io2d/src/3rd-party/pixman/pixman/pixman-implementation.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-implementation.c rename to io2d/src/3rd-party/pixman/pixman/pixman-implementation.c diff --git a/3rd-party/pixman/pixman/pixman-inlines.h b/io2d/src/3rd-party/pixman/pixman/pixman-inlines.h similarity index 100% rename from 3rd-party/pixman/pixman/pixman-inlines.h rename to io2d/src/3rd-party/pixman/pixman/pixman-inlines.h diff --git a/3rd-party/pixman/pixman/pixman-linear-gradient.c b/io2d/src/3rd-party/pixman/pixman/pixman-linear-gradient.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-linear-gradient.c rename to io2d/src/3rd-party/pixman/pixman/pixman-linear-gradient.c diff --git a/3rd-party/pixman/pixman/pixman-matrix.c b/io2d/src/3rd-party/pixman/pixman/pixman-matrix.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-matrix.c rename to io2d/src/3rd-party/pixman/pixman/pixman-matrix.c diff --git a/3rd-party/pixman/pixman/pixman-mips-dspr2-asm.S b/io2d/src/3rd-party/pixman/pixman/pixman-mips-dspr2-asm.S similarity index 100% rename from 3rd-party/pixman/pixman/pixman-mips-dspr2-asm.S rename to io2d/src/3rd-party/pixman/pixman/pixman-mips-dspr2-asm.S diff --git a/3rd-party/pixman/pixman/pixman-mips-dspr2-asm.h b/io2d/src/3rd-party/pixman/pixman/pixman-mips-dspr2-asm.h similarity index 100% rename from 3rd-party/pixman/pixman/pixman-mips-dspr2-asm.h rename to io2d/src/3rd-party/pixman/pixman/pixman-mips-dspr2-asm.h diff --git a/3rd-party/pixman/pixman/pixman-mips-dspr2.c b/io2d/src/3rd-party/pixman/pixman/pixman-mips-dspr2.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-mips-dspr2.c rename to io2d/src/3rd-party/pixman/pixman/pixman-mips-dspr2.c diff --git a/3rd-party/pixman/pixman/pixman-mips-dspr2.h b/io2d/src/3rd-party/pixman/pixman/pixman-mips-dspr2.h similarity index 100% rename from 3rd-party/pixman/pixman/pixman-mips-dspr2.h rename to io2d/src/3rd-party/pixman/pixman/pixman-mips-dspr2.h diff --git a/3rd-party/pixman/pixman/pixman-mips-memcpy-asm.S b/io2d/src/3rd-party/pixman/pixman/pixman-mips-memcpy-asm.S similarity index 100% rename from 3rd-party/pixman/pixman/pixman-mips-memcpy-asm.S rename to io2d/src/3rd-party/pixman/pixman/pixman-mips-memcpy-asm.S diff --git a/3rd-party/pixman/pixman/pixman-mips.c b/io2d/src/3rd-party/pixman/pixman/pixman-mips.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-mips.c rename to io2d/src/3rd-party/pixman/pixman/pixman-mips.c diff --git a/3rd-party/pixman/pixman/pixman-mmx.c b/io2d/src/3rd-party/pixman/pixman/pixman-mmx.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-mmx.c rename to io2d/src/3rd-party/pixman/pixman/pixman-mmx.c diff --git a/3rd-party/pixman/pixman/pixman-noop.c b/io2d/src/3rd-party/pixman/pixman/pixman-noop.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-noop.c rename to io2d/src/3rd-party/pixman/pixman/pixman-noop.c diff --git a/3rd-party/pixman/pixman/pixman-ppc.c b/io2d/src/3rd-party/pixman/pixman/pixman-ppc.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-ppc.c rename to io2d/src/3rd-party/pixman/pixman/pixman-ppc.c diff --git a/3rd-party/pixman/pixman/pixman-private.h b/io2d/src/3rd-party/pixman/pixman/pixman-private.h similarity index 100% rename from 3rd-party/pixman/pixman/pixman-private.h rename to io2d/src/3rd-party/pixman/pixman/pixman-private.h diff --git a/3rd-party/pixman/pixman/pixman-radial-gradient.c b/io2d/src/3rd-party/pixman/pixman/pixman-radial-gradient.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-radial-gradient.c rename to io2d/src/3rd-party/pixman/pixman/pixman-radial-gradient.c diff --git a/3rd-party/pixman/pixman/pixman-region.c b/io2d/src/3rd-party/pixman/pixman/pixman-region.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-region.c rename to io2d/src/3rd-party/pixman/pixman/pixman-region.c diff --git a/3rd-party/pixman/pixman/pixman-region16.c b/io2d/src/3rd-party/pixman/pixman/pixman-region16.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-region16.c rename to io2d/src/3rd-party/pixman/pixman/pixman-region16.c diff --git a/3rd-party/pixman/pixman/pixman-region32.c b/io2d/src/3rd-party/pixman/pixman/pixman-region32.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-region32.c rename to io2d/src/3rd-party/pixman/pixman/pixman-region32.c diff --git a/3rd-party/pixman/pixman/pixman-solid-fill.c b/io2d/src/3rd-party/pixman/pixman/pixman-solid-fill.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-solid-fill.c rename to io2d/src/3rd-party/pixman/pixman/pixman-solid-fill.c diff --git a/3rd-party/pixman/pixman/pixman-sse2.c b/io2d/src/3rd-party/pixman/pixman/pixman-sse2.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-sse2.c rename to io2d/src/3rd-party/pixman/pixman/pixman-sse2.c diff --git a/3rd-party/pixman/pixman/pixman-ssse3.c b/io2d/src/3rd-party/pixman/pixman/pixman-ssse3.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-ssse3.c rename to io2d/src/3rd-party/pixman/pixman/pixman-ssse3.c diff --git a/3rd-party/pixman/pixman/pixman-timer.c b/io2d/src/3rd-party/pixman/pixman/pixman-timer.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-timer.c rename to io2d/src/3rd-party/pixman/pixman/pixman-timer.c diff --git a/3rd-party/pixman/pixman/pixman-trap.c b/io2d/src/3rd-party/pixman/pixman/pixman-trap.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-trap.c rename to io2d/src/3rd-party/pixman/pixman/pixman-trap.c diff --git a/3rd-party/pixman/pixman/pixman-utils.c b/io2d/src/3rd-party/pixman/pixman/pixman-utils.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-utils.c rename to io2d/src/3rd-party/pixman/pixman/pixman-utils.c diff --git a/3rd-party/pixman/pixman/pixman-version.h b/io2d/src/3rd-party/pixman/pixman/pixman-version.h similarity index 100% rename from 3rd-party/pixman/pixman/pixman-version.h rename to io2d/src/3rd-party/pixman/pixman/pixman-version.h diff --git a/3rd-party/pixman/pixman/pixman-version.h.in b/io2d/src/3rd-party/pixman/pixman/pixman-version.h.in similarity index 100% rename from 3rd-party/pixman/pixman/pixman-version.h.in rename to io2d/src/3rd-party/pixman/pixman/pixman-version.h.in diff --git a/3rd-party/pixman/pixman/pixman-vmx.c b/io2d/src/3rd-party/pixman/pixman/pixman-vmx.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-vmx.c rename to io2d/src/3rd-party/pixman/pixman/pixman-vmx.c diff --git a/3rd-party/pixman/pixman/pixman-x86.c b/io2d/src/3rd-party/pixman/pixman/pixman-x86.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman-x86.c rename to io2d/src/3rd-party/pixman/pixman/pixman-x86.c diff --git a/3rd-party/pixman/pixman/pixman.c b/io2d/src/3rd-party/pixman/pixman/pixman.c similarity index 100% rename from 3rd-party/pixman/pixman/pixman.c rename to io2d/src/3rd-party/pixman/pixman/pixman.c diff --git a/3rd-party/pixman/pixman/pixman.h b/io2d/src/3rd-party/pixman/pixman/pixman.h similarity index 100% rename from 3rd-party/pixman/pixman/pixman.h rename to io2d/src/3rd-party/pixman/pixman/pixman.h diff --git a/3rd-party/pixman/pixman/rounding.txt b/io2d/src/3rd-party/pixman/pixman/rounding.txt similarity index 100% rename from 3rd-party/pixman/pixman/rounding.txt rename to io2d/src/3rd-party/pixman/pixman/rounding.txt diff --git a/3rd-party/pixman/pixman/solaris-hwcap.mapfile b/io2d/src/3rd-party/pixman/pixman/solaris-hwcap.mapfile similarity index 100% rename from 3rd-party/pixman/pixman/solaris-hwcap.mapfile rename to io2d/src/3rd-party/pixman/pixman/solaris-hwcap.mapfile diff --git a/3rd-party/pixman/test/Makefile.am b/io2d/src/3rd-party/pixman/test/Makefile.am similarity index 100% rename from 3rd-party/pixman/test/Makefile.am rename to io2d/src/3rd-party/pixman/test/Makefile.am diff --git a/3rd-party/pixman/test/Makefile.sources b/io2d/src/3rd-party/pixman/test/Makefile.sources similarity index 100% rename from 3rd-party/pixman/test/Makefile.sources rename to io2d/src/3rd-party/pixman/test/Makefile.sources diff --git a/3rd-party/pixman/test/Makefile.win32 b/io2d/src/3rd-party/pixman/test/Makefile.win32 similarity index 100% rename from 3rd-party/pixman/test/Makefile.win32 rename to io2d/src/3rd-party/pixman/test/Makefile.win32 diff --git a/3rd-party/pixman/test/a1-trap-test.c b/io2d/src/3rd-party/pixman/test/a1-trap-test.c similarity index 100% rename from 3rd-party/pixman/test/a1-trap-test.c rename to io2d/src/3rd-party/pixman/test/a1-trap-test.c diff --git a/3rd-party/pixman/test/affine-test.c b/io2d/src/3rd-party/pixman/test/affine-test.c similarity index 100% rename from 3rd-party/pixman/test/affine-test.c rename to io2d/src/3rd-party/pixman/test/affine-test.c diff --git a/3rd-party/pixman/test/alpha-loop.c b/io2d/src/3rd-party/pixman/test/alpha-loop.c similarity index 100% rename from 3rd-party/pixman/test/alpha-loop.c rename to io2d/src/3rd-party/pixman/test/alpha-loop.c diff --git a/3rd-party/pixman/test/alphamap.c b/io2d/src/3rd-party/pixman/test/alphamap.c similarity index 100% rename from 3rd-party/pixman/test/alphamap.c rename to io2d/src/3rd-party/pixman/test/alphamap.c diff --git a/3rd-party/pixman/test/blitters-test.c b/io2d/src/3rd-party/pixman/test/blitters-test.c similarity index 100% rename from 3rd-party/pixman/test/blitters-test.c rename to io2d/src/3rd-party/pixman/test/blitters-test.c diff --git a/3rd-party/pixman/test/check-formats.c b/io2d/src/3rd-party/pixman/test/check-formats.c similarity index 100% rename from 3rd-party/pixman/test/check-formats.c rename to io2d/src/3rd-party/pixman/test/check-formats.c diff --git a/3rd-party/pixman/test/combiner-test.c b/io2d/src/3rd-party/pixman/test/combiner-test.c similarity index 100% rename from 3rd-party/pixman/test/combiner-test.c rename to io2d/src/3rd-party/pixman/test/combiner-test.c diff --git a/3rd-party/pixman/test/composite-traps-test.c b/io2d/src/3rd-party/pixman/test/composite-traps-test.c similarity index 100% rename from 3rd-party/pixman/test/composite-traps-test.c rename to io2d/src/3rd-party/pixman/test/composite-traps-test.c diff --git a/3rd-party/pixman/test/composite.c b/io2d/src/3rd-party/pixman/test/composite.c similarity index 100% rename from 3rd-party/pixman/test/composite.c rename to io2d/src/3rd-party/pixman/test/composite.c diff --git a/3rd-party/pixman/test/fetch-test.c b/io2d/src/3rd-party/pixman/test/fetch-test.c similarity index 100% rename from 3rd-party/pixman/test/fetch-test.c rename to io2d/src/3rd-party/pixman/test/fetch-test.c diff --git a/3rd-party/pixman/test/fuzzer-find-diff.pl b/io2d/src/3rd-party/pixman/test/fuzzer-find-diff.pl similarity index 100% rename from 3rd-party/pixman/test/fuzzer-find-diff.pl rename to io2d/src/3rd-party/pixman/test/fuzzer-find-diff.pl diff --git a/3rd-party/pixman/test/glyph-test.c b/io2d/src/3rd-party/pixman/test/glyph-test.c similarity index 100% rename from 3rd-party/pixman/test/glyph-test.c rename to io2d/src/3rd-party/pixman/test/glyph-test.c diff --git a/3rd-party/pixman/test/gradient-crash-test.c b/io2d/src/3rd-party/pixman/test/gradient-crash-test.c similarity index 100% rename from 3rd-party/pixman/test/gradient-crash-test.c rename to io2d/src/3rd-party/pixman/test/gradient-crash-test.c diff --git a/3rd-party/pixman/test/infinite-loop.c b/io2d/src/3rd-party/pixman/test/infinite-loop.c similarity index 100% rename from 3rd-party/pixman/test/infinite-loop.c rename to io2d/src/3rd-party/pixman/test/infinite-loop.c diff --git a/3rd-party/pixman/test/lowlevel-blt-bench.c b/io2d/src/3rd-party/pixman/test/lowlevel-blt-bench.c similarity index 100% rename from 3rd-party/pixman/test/lowlevel-blt-bench.c rename to io2d/src/3rd-party/pixman/test/lowlevel-blt-bench.c diff --git a/3rd-party/pixman/test/matrix-test.c b/io2d/src/3rd-party/pixman/test/matrix-test.c similarity index 100% rename from 3rd-party/pixman/test/matrix-test.c rename to io2d/src/3rd-party/pixman/test/matrix-test.c diff --git a/3rd-party/pixman/test/oob-test.c b/io2d/src/3rd-party/pixman/test/oob-test.c similarity index 100% rename from 3rd-party/pixman/test/oob-test.c rename to io2d/src/3rd-party/pixman/test/oob-test.c diff --git a/3rd-party/pixman/test/pdf-op-test.c b/io2d/src/3rd-party/pixman/test/pdf-op-test.c similarity index 100% rename from 3rd-party/pixman/test/pdf-op-test.c rename to io2d/src/3rd-party/pixman/test/pdf-op-test.c diff --git a/3rd-party/pixman/test/pixel-test.c b/io2d/src/3rd-party/pixman/test/pixel-test.c similarity index 100% rename from 3rd-party/pixman/test/pixel-test.c rename to io2d/src/3rd-party/pixman/test/pixel-test.c diff --git a/3rd-party/pixman/test/prng-test.c b/io2d/src/3rd-party/pixman/test/prng-test.c similarity index 100% rename from 3rd-party/pixman/test/prng-test.c rename to io2d/src/3rd-party/pixman/test/prng-test.c diff --git a/3rd-party/pixman/test/radial-perf-test.c b/io2d/src/3rd-party/pixman/test/radial-perf-test.c similarity index 100% rename from 3rd-party/pixman/test/radial-perf-test.c rename to io2d/src/3rd-party/pixman/test/radial-perf-test.c diff --git a/3rd-party/pixman/test/region-contains-test.c b/io2d/src/3rd-party/pixman/test/region-contains-test.c similarity index 100% rename from 3rd-party/pixman/test/region-contains-test.c rename to io2d/src/3rd-party/pixman/test/region-contains-test.c diff --git a/3rd-party/pixman/test/region-test.c b/io2d/src/3rd-party/pixman/test/region-test.c similarity index 100% rename from 3rd-party/pixman/test/region-test.c rename to io2d/src/3rd-party/pixman/test/region-test.c diff --git a/3rd-party/pixman/test/region-translate-test.c b/io2d/src/3rd-party/pixman/test/region-translate-test.c similarity index 100% rename from 3rd-party/pixman/test/region-translate-test.c rename to io2d/src/3rd-party/pixman/test/region-translate-test.c diff --git a/3rd-party/pixman/test/rotate-test.c b/io2d/src/3rd-party/pixman/test/rotate-test.c similarity index 100% rename from 3rd-party/pixman/test/rotate-test.c rename to io2d/src/3rd-party/pixman/test/rotate-test.c diff --git a/3rd-party/pixman/test/scaling-bench.c b/io2d/src/3rd-party/pixman/test/scaling-bench.c similarity index 100% rename from 3rd-party/pixman/test/scaling-bench.c rename to io2d/src/3rd-party/pixman/test/scaling-bench.c diff --git a/3rd-party/pixman/test/scaling-crash-test.c b/io2d/src/3rd-party/pixman/test/scaling-crash-test.c similarity index 100% rename from 3rd-party/pixman/test/scaling-crash-test.c rename to io2d/src/3rd-party/pixman/test/scaling-crash-test.c diff --git a/3rd-party/pixman/test/scaling-helpers-test.c b/io2d/src/3rd-party/pixman/test/scaling-helpers-test.c similarity index 100% rename from 3rd-party/pixman/test/scaling-helpers-test.c rename to io2d/src/3rd-party/pixman/test/scaling-helpers-test.c diff --git a/3rd-party/pixman/test/scaling-test.c b/io2d/src/3rd-party/pixman/test/scaling-test.c similarity index 100% rename from 3rd-party/pixman/test/scaling-test.c rename to io2d/src/3rd-party/pixman/test/scaling-test.c diff --git a/3rd-party/pixman/test/stress-test.c b/io2d/src/3rd-party/pixman/test/stress-test.c similarity index 100% rename from 3rd-party/pixman/test/stress-test.c rename to io2d/src/3rd-party/pixman/test/stress-test.c diff --git a/3rd-party/pixman/test/thread-test.c b/io2d/src/3rd-party/pixman/test/thread-test.c similarity index 100% rename from 3rd-party/pixman/test/thread-test.c rename to io2d/src/3rd-party/pixman/test/thread-test.c diff --git a/3rd-party/pixman/test/trap-crasher.c b/io2d/src/3rd-party/pixman/test/trap-crasher.c similarity index 100% rename from 3rd-party/pixman/test/trap-crasher.c rename to io2d/src/3rd-party/pixman/test/trap-crasher.c diff --git a/3rd-party/pixman/test/utils-prng.c b/io2d/src/3rd-party/pixman/test/utils-prng.c similarity index 100% rename from 3rd-party/pixman/test/utils-prng.c rename to io2d/src/3rd-party/pixman/test/utils-prng.c diff --git a/3rd-party/pixman/test/utils-prng.h b/io2d/src/3rd-party/pixman/test/utils-prng.h similarity index 100% rename from 3rd-party/pixman/test/utils-prng.h rename to io2d/src/3rd-party/pixman/test/utils-prng.h diff --git a/3rd-party/pixman/test/utils.c b/io2d/src/3rd-party/pixman/test/utils.c similarity index 100% rename from 3rd-party/pixman/test/utils.c rename to io2d/src/3rd-party/pixman/test/utils.c diff --git a/3rd-party/pixman/test/utils.h b/io2d/src/3rd-party/pixman/test/utils.h similarity index 100% rename from 3rd-party/pixman/test/utils.h rename to io2d/src/3rd-party/pixman/test/utils.h diff --git a/3rd-party/zlib/CMakeLists.txt b/io2d/src/3rd-party/zlib/CMakeLists.txt similarity index 100% rename from 3rd-party/zlib/CMakeLists.txt rename to io2d/src/3rd-party/zlib/CMakeLists.txt diff --git a/3rd-party/zlib/ChangeLog b/io2d/src/3rd-party/zlib/ChangeLog similarity index 100% rename from 3rd-party/zlib/ChangeLog rename to io2d/src/3rd-party/zlib/ChangeLog diff --git a/3rd-party/zlib/FAQ b/io2d/src/3rd-party/zlib/FAQ similarity index 100% rename from 3rd-party/zlib/FAQ rename to io2d/src/3rd-party/zlib/FAQ diff --git a/3rd-party/zlib/INDEX b/io2d/src/3rd-party/zlib/INDEX similarity index 100% rename from 3rd-party/zlib/INDEX rename to io2d/src/3rd-party/zlib/INDEX diff --git a/3rd-party/zlib/Makefile b/io2d/src/3rd-party/zlib/Makefile similarity index 100% rename from 3rd-party/zlib/Makefile rename to io2d/src/3rd-party/zlib/Makefile diff --git a/3rd-party/zlib/Makefile.in b/io2d/src/3rd-party/zlib/Makefile.in similarity index 100% rename from 3rd-party/zlib/Makefile.in rename to io2d/src/3rd-party/zlib/Makefile.in diff --git a/3rd-party/zlib/README b/io2d/src/3rd-party/zlib/README similarity index 100% rename from 3rd-party/zlib/README rename to io2d/src/3rd-party/zlib/README diff --git a/3rd-party/zlib/adler32.c b/io2d/src/3rd-party/zlib/adler32.c similarity index 100% rename from 3rd-party/zlib/adler32.c rename to io2d/src/3rd-party/zlib/adler32.c diff --git a/3rd-party/zlib/amiga/Makefile.pup b/io2d/src/3rd-party/zlib/amiga/Makefile.pup similarity index 100% rename from 3rd-party/zlib/amiga/Makefile.pup rename to io2d/src/3rd-party/zlib/amiga/Makefile.pup diff --git a/3rd-party/zlib/amiga/Makefile.sas b/io2d/src/3rd-party/zlib/amiga/Makefile.sas similarity index 100% rename from 3rd-party/zlib/amiga/Makefile.sas rename to io2d/src/3rd-party/zlib/amiga/Makefile.sas diff --git a/3rd-party/zlib/as400/bndsrc b/io2d/src/3rd-party/zlib/as400/bndsrc similarity index 100% rename from 3rd-party/zlib/as400/bndsrc rename to io2d/src/3rd-party/zlib/as400/bndsrc diff --git a/3rd-party/zlib/as400/compile.clp b/io2d/src/3rd-party/zlib/as400/compile.clp similarity index 100% rename from 3rd-party/zlib/as400/compile.clp rename to io2d/src/3rd-party/zlib/as400/compile.clp diff --git a/3rd-party/zlib/as400/readme.txt b/io2d/src/3rd-party/zlib/as400/readme.txt similarity index 100% rename from 3rd-party/zlib/as400/readme.txt rename to io2d/src/3rd-party/zlib/as400/readme.txt diff --git a/3rd-party/zlib/as400/zlib.inc b/io2d/src/3rd-party/zlib/as400/zlib.inc similarity index 100% rename from 3rd-party/zlib/as400/zlib.inc rename to io2d/src/3rd-party/zlib/as400/zlib.inc diff --git a/3rd-party/zlib/compress.c b/io2d/src/3rd-party/zlib/compress.c similarity index 100% rename from 3rd-party/zlib/compress.c rename to io2d/src/3rd-party/zlib/compress.c diff --git a/3rd-party/zlib/configure b/io2d/src/3rd-party/zlib/configure similarity index 100% rename from 3rd-party/zlib/configure rename to io2d/src/3rd-party/zlib/configure diff --git a/3rd-party/zlib/contrib/README.contrib b/io2d/src/3rd-party/zlib/contrib/README.contrib similarity index 100% rename from 3rd-party/zlib/contrib/README.contrib rename to io2d/src/3rd-party/zlib/contrib/README.contrib diff --git a/3rd-party/zlib/contrib/ada/buffer_demo.adb b/io2d/src/3rd-party/zlib/contrib/ada/buffer_demo.adb similarity index 100% rename from 3rd-party/zlib/contrib/ada/buffer_demo.adb rename to io2d/src/3rd-party/zlib/contrib/ada/buffer_demo.adb diff --git a/3rd-party/zlib/contrib/ada/mtest.adb b/io2d/src/3rd-party/zlib/contrib/ada/mtest.adb similarity index 100% rename from 3rd-party/zlib/contrib/ada/mtest.adb rename to io2d/src/3rd-party/zlib/contrib/ada/mtest.adb diff --git a/3rd-party/zlib/contrib/ada/read.adb b/io2d/src/3rd-party/zlib/contrib/ada/read.adb similarity index 100% rename from 3rd-party/zlib/contrib/ada/read.adb rename to io2d/src/3rd-party/zlib/contrib/ada/read.adb diff --git a/3rd-party/zlib/contrib/ada/readme.txt b/io2d/src/3rd-party/zlib/contrib/ada/readme.txt similarity index 100% rename from 3rd-party/zlib/contrib/ada/readme.txt rename to io2d/src/3rd-party/zlib/contrib/ada/readme.txt diff --git a/3rd-party/zlib/contrib/ada/test.adb b/io2d/src/3rd-party/zlib/contrib/ada/test.adb similarity index 100% rename from 3rd-party/zlib/contrib/ada/test.adb rename to io2d/src/3rd-party/zlib/contrib/ada/test.adb diff --git a/3rd-party/zlib/contrib/ada/zlib-streams.adb b/io2d/src/3rd-party/zlib/contrib/ada/zlib-streams.adb similarity index 100% rename from 3rd-party/zlib/contrib/ada/zlib-streams.adb rename to io2d/src/3rd-party/zlib/contrib/ada/zlib-streams.adb diff --git a/3rd-party/zlib/contrib/ada/zlib-streams.ads b/io2d/src/3rd-party/zlib/contrib/ada/zlib-streams.ads similarity index 100% rename from 3rd-party/zlib/contrib/ada/zlib-streams.ads rename to io2d/src/3rd-party/zlib/contrib/ada/zlib-streams.ads diff --git a/3rd-party/zlib/contrib/ada/zlib-thin.adb b/io2d/src/3rd-party/zlib/contrib/ada/zlib-thin.adb similarity index 100% rename from 3rd-party/zlib/contrib/ada/zlib-thin.adb rename to io2d/src/3rd-party/zlib/contrib/ada/zlib-thin.adb diff --git a/3rd-party/zlib/contrib/ada/zlib-thin.ads b/io2d/src/3rd-party/zlib/contrib/ada/zlib-thin.ads similarity index 100% rename from 3rd-party/zlib/contrib/ada/zlib-thin.ads rename to io2d/src/3rd-party/zlib/contrib/ada/zlib-thin.ads diff --git a/3rd-party/zlib/contrib/ada/zlib.adb b/io2d/src/3rd-party/zlib/contrib/ada/zlib.adb similarity index 100% rename from 3rd-party/zlib/contrib/ada/zlib.adb rename to io2d/src/3rd-party/zlib/contrib/ada/zlib.adb diff --git a/3rd-party/zlib/contrib/ada/zlib.ads b/io2d/src/3rd-party/zlib/contrib/ada/zlib.ads similarity index 100% rename from 3rd-party/zlib/contrib/ada/zlib.ads rename to io2d/src/3rd-party/zlib/contrib/ada/zlib.ads diff --git a/3rd-party/zlib/contrib/ada/zlib.gpr b/io2d/src/3rd-party/zlib/contrib/ada/zlib.gpr similarity index 100% rename from 3rd-party/zlib/contrib/ada/zlib.gpr rename to io2d/src/3rd-party/zlib/contrib/ada/zlib.gpr diff --git a/3rd-party/zlib/contrib/amd64/amd64-match.S b/io2d/src/3rd-party/zlib/contrib/amd64/amd64-match.S similarity index 100% rename from 3rd-party/zlib/contrib/amd64/amd64-match.S rename to io2d/src/3rd-party/zlib/contrib/amd64/amd64-match.S diff --git a/3rd-party/zlib/contrib/asm686/README.686 b/io2d/src/3rd-party/zlib/contrib/asm686/README.686 similarity index 100% rename from 3rd-party/zlib/contrib/asm686/README.686 rename to io2d/src/3rd-party/zlib/contrib/asm686/README.686 diff --git a/3rd-party/zlib/contrib/asm686/match.S b/io2d/src/3rd-party/zlib/contrib/asm686/match.S similarity index 100% rename from 3rd-party/zlib/contrib/asm686/match.S rename to io2d/src/3rd-party/zlib/contrib/asm686/match.S diff --git a/3rd-party/zlib/contrib/blast/Makefile b/io2d/src/3rd-party/zlib/contrib/blast/Makefile similarity index 100% rename from 3rd-party/zlib/contrib/blast/Makefile rename to io2d/src/3rd-party/zlib/contrib/blast/Makefile diff --git a/3rd-party/zlib/contrib/blast/README b/io2d/src/3rd-party/zlib/contrib/blast/README similarity index 100% rename from 3rd-party/zlib/contrib/blast/README rename to io2d/src/3rd-party/zlib/contrib/blast/README diff --git a/3rd-party/zlib/contrib/blast/blast.c b/io2d/src/3rd-party/zlib/contrib/blast/blast.c similarity index 100% rename from 3rd-party/zlib/contrib/blast/blast.c rename to io2d/src/3rd-party/zlib/contrib/blast/blast.c diff --git a/3rd-party/zlib/contrib/blast/blast.h b/io2d/src/3rd-party/zlib/contrib/blast/blast.h similarity index 100% rename from 3rd-party/zlib/contrib/blast/blast.h rename to io2d/src/3rd-party/zlib/contrib/blast/blast.h diff --git a/3rd-party/zlib/contrib/blast/test.pk b/io2d/src/3rd-party/zlib/contrib/blast/test.pk similarity index 100% rename from 3rd-party/zlib/contrib/blast/test.pk rename to io2d/src/3rd-party/zlib/contrib/blast/test.pk diff --git a/3rd-party/zlib/contrib/blast/test.txt b/io2d/src/3rd-party/zlib/contrib/blast/test.txt similarity index 100% rename from 3rd-party/zlib/contrib/blast/test.txt rename to io2d/src/3rd-party/zlib/contrib/blast/test.txt diff --git a/3rd-party/zlib/contrib/delphi/ZLib.pas b/io2d/src/3rd-party/zlib/contrib/delphi/ZLib.pas similarity index 100% rename from 3rd-party/zlib/contrib/delphi/ZLib.pas rename to io2d/src/3rd-party/zlib/contrib/delphi/ZLib.pas diff --git a/3rd-party/zlib/contrib/delphi/ZLibConst.pas b/io2d/src/3rd-party/zlib/contrib/delphi/ZLibConst.pas similarity index 100% rename from 3rd-party/zlib/contrib/delphi/ZLibConst.pas rename to io2d/src/3rd-party/zlib/contrib/delphi/ZLibConst.pas diff --git a/3rd-party/zlib/contrib/delphi/readme.txt b/io2d/src/3rd-party/zlib/contrib/delphi/readme.txt similarity index 100% rename from 3rd-party/zlib/contrib/delphi/readme.txt rename to io2d/src/3rd-party/zlib/contrib/delphi/readme.txt diff --git a/3rd-party/zlib/contrib/delphi/zlibd32.mak b/io2d/src/3rd-party/zlib/contrib/delphi/zlibd32.mak similarity index 100% rename from 3rd-party/zlib/contrib/delphi/zlibd32.mak rename to io2d/src/3rd-party/zlib/contrib/delphi/zlibd32.mak diff --git a/3rd-party/zlib/contrib/dotzlib/DotZLib.build b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib.build similarity index 100% rename from 3rd-party/zlib/contrib/dotzlib/DotZLib.build rename to io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib.build diff --git a/3rd-party/zlib/contrib/dotzlib/DotZLib.chm b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib.chm similarity index 100% rename from 3rd-party/zlib/contrib/dotzlib/DotZLib.chm rename to io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib.chm diff --git a/3rd-party/zlib/contrib/dotzlib/DotZLib.sln b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib.sln similarity index 100% rename from 3rd-party/zlib/contrib/dotzlib/DotZLib.sln rename to io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib.sln diff --git a/3rd-party/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs similarity index 100% rename from 3rd-party/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs rename to io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs diff --git a/3rd-party/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs similarity index 100% rename from 3rd-party/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs rename to io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs diff --git a/3rd-party/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs similarity index 100% rename from 3rd-party/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs rename to io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs diff --git a/3rd-party/zlib/contrib/dotzlib/DotZLib/CodecBase.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/CodecBase.cs similarity index 100% rename from 3rd-party/zlib/contrib/dotzlib/DotZLib/CodecBase.cs rename to io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/CodecBase.cs diff --git a/3rd-party/zlib/contrib/dotzlib/DotZLib/Deflater.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/Deflater.cs similarity index 100% rename from 3rd-party/zlib/contrib/dotzlib/DotZLib/Deflater.cs rename to io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/Deflater.cs diff --git a/3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.cs similarity index 100% rename from 3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.cs rename to io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.cs diff --git a/3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj similarity index 100% rename from 3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj rename to io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj diff --git a/3rd-party/zlib/contrib/dotzlib/DotZLib/GZipStream.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/GZipStream.cs similarity index 100% rename from 3rd-party/zlib/contrib/dotzlib/DotZLib/GZipStream.cs rename to io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/GZipStream.cs diff --git a/3rd-party/zlib/contrib/dotzlib/DotZLib/Inflater.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/Inflater.cs similarity index 100% rename from 3rd-party/zlib/contrib/dotzlib/DotZLib/Inflater.cs rename to io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/Inflater.cs diff --git a/3rd-party/zlib/contrib/dotzlib/DotZLib/UnitTests.cs b/io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/UnitTests.cs similarity index 100% rename from 3rd-party/zlib/contrib/dotzlib/DotZLib/UnitTests.cs rename to io2d/src/3rd-party/zlib/contrib/dotzlib/DotZLib/UnitTests.cs diff --git a/3rd-party/zlib/contrib/dotzlib/LICENSE_1_0.txt b/io2d/src/3rd-party/zlib/contrib/dotzlib/LICENSE_1_0.txt similarity index 100% rename from 3rd-party/zlib/contrib/dotzlib/LICENSE_1_0.txt rename to io2d/src/3rd-party/zlib/contrib/dotzlib/LICENSE_1_0.txt diff --git a/3rd-party/zlib/contrib/dotzlib/readme.txt b/io2d/src/3rd-party/zlib/contrib/dotzlib/readme.txt similarity index 100% rename from 3rd-party/zlib/contrib/dotzlib/readme.txt rename to io2d/src/3rd-party/zlib/contrib/dotzlib/readme.txt diff --git a/3rd-party/zlib/contrib/gcc_gvmat64/gvmat64.S b/io2d/src/3rd-party/zlib/contrib/gcc_gvmat64/gvmat64.S similarity index 100% rename from 3rd-party/zlib/contrib/gcc_gvmat64/gvmat64.S rename to io2d/src/3rd-party/zlib/contrib/gcc_gvmat64/gvmat64.S diff --git a/3rd-party/zlib/contrib/infback9/README b/io2d/src/3rd-party/zlib/contrib/infback9/README similarity index 100% rename from 3rd-party/zlib/contrib/infback9/README rename to io2d/src/3rd-party/zlib/contrib/infback9/README diff --git a/3rd-party/zlib/contrib/infback9/infback9.c b/io2d/src/3rd-party/zlib/contrib/infback9/infback9.c similarity index 100% rename from 3rd-party/zlib/contrib/infback9/infback9.c rename to io2d/src/3rd-party/zlib/contrib/infback9/infback9.c diff --git a/3rd-party/zlib/contrib/infback9/infback9.h b/io2d/src/3rd-party/zlib/contrib/infback9/infback9.h similarity index 100% rename from 3rd-party/zlib/contrib/infback9/infback9.h rename to io2d/src/3rd-party/zlib/contrib/infback9/infback9.h diff --git a/3rd-party/zlib/contrib/infback9/inffix9.h b/io2d/src/3rd-party/zlib/contrib/infback9/inffix9.h similarity index 100% rename from 3rd-party/zlib/contrib/infback9/inffix9.h rename to io2d/src/3rd-party/zlib/contrib/infback9/inffix9.h diff --git a/3rd-party/zlib/contrib/infback9/inflate9.h b/io2d/src/3rd-party/zlib/contrib/infback9/inflate9.h similarity index 100% rename from 3rd-party/zlib/contrib/infback9/inflate9.h rename to io2d/src/3rd-party/zlib/contrib/infback9/inflate9.h diff --git a/3rd-party/zlib/contrib/infback9/inftree9.c b/io2d/src/3rd-party/zlib/contrib/infback9/inftree9.c similarity index 100% rename from 3rd-party/zlib/contrib/infback9/inftree9.c rename to io2d/src/3rd-party/zlib/contrib/infback9/inftree9.c diff --git a/3rd-party/zlib/contrib/infback9/inftree9.h b/io2d/src/3rd-party/zlib/contrib/infback9/inftree9.h similarity index 100% rename from 3rd-party/zlib/contrib/infback9/inftree9.h rename to io2d/src/3rd-party/zlib/contrib/infback9/inftree9.h diff --git a/3rd-party/zlib/contrib/inflate86/inffas86.c b/io2d/src/3rd-party/zlib/contrib/inflate86/inffas86.c similarity index 100% rename from 3rd-party/zlib/contrib/inflate86/inffas86.c rename to io2d/src/3rd-party/zlib/contrib/inflate86/inffas86.c diff --git a/3rd-party/zlib/contrib/inflate86/inffast.S b/io2d/src/3rd-party/zlib/contrib/inflate86/inffast.S similarity index 100% rename from 3rd-party/zlib/contrib/inflate86/inffast.S rename to io2d/src/3rd-party/zlib/contrib/inflate86/inffast.S diff --git a/3rd-party/zlib/contrib/iostream/test.cpp b/io2d/src/3rd-party/zlib/contrib/iostream/test.cpp similarity index 100% rename from 3rd-party/zlib/contrib/iostream/test.cpp rename to io2d/src/3rd-party/zlib/contrib/iostream/test.cpp diff --git a/3rd-party/zlib/contrib/iostream/zfstream.cpp b/io2d/src/3rd-party/zlib/contrib/iostream/zfstream.cpp similarity index 100% rename from 3rd-party/zlib/contrib/iostream/zfstream.cpp rename to io2d/src/3rd-party/zlib/contrib/iostream/zfstream.cpp diff --git a/3rd-party/zlib/contrib/iostream/zfstream.h b/io2d/src/3rd-party/zlib/contrib/iostream/zfstream.h similarity index 100% rename from 3rd-party/zlib/contrib/iostream/zfstream.h rename to io2d/src/3rd-party/zlib/contrib/iostream/zfstream.h diff --git a/3rd-party/zlib/contrib/iostream2/zstream.h b/io2d/src/3rd-party/zlib/contrib/iostream2/zstream.h similarity index 100% rename from 3rd-party/zlib/contrib/iostream2/zstream.h rename to io2d/src/3rd-party/zlib/contrib/iostream2/zstream.h diff --git a/3rd-party/zlib/contrib/iostream2/zstream_test.cpp b/io2d/src/3rd-party/zlib/contrib/iostream2/zstream_test.cpp similarity index 100% rename from 3rd-party/zlib/contrib/iostream2/zstream_test.cpp rename to io2d/src/3rd-party/zlib/contrib/iostream2/zstream_test.cpp diff --git a/3rd-party/zlib/contrib/iostream3/README b/io2d/src/3rd-party/zlib/contrib/iostream3/README similarity index 100% rename from 3rd-party/zlib/contrib/iostream3/README rename to io2d/src/3rd-party/zlib/contrib/iostream3/README diff --git a/3rd-party/zlib/contrib/iostream3/TODO b/io2d/src/3rd-party/zlib/contrib/iostream3/TODO similarity index 100% rename from 3rd-party/zlib/contrib/iostream3/TODO rename to io2d/src/3rd-party/zlib/contrib/iostream3/TODO diff --git a/3rd-party/zlib/contrib/iostream3/test.cc b/io2d/src/3rd-party/zlib/contrib/iostream3/test.cc similarity index 100% rename from 3rd-party/zlib/contrib/iostream3/test.cc rename to io2d/src/3rd-party/zlib/contrib/iostream3/test.cc diff --git a/3rd-party/zlib/contrib/iostream3/zfstream.cc b/io2d/src/3rd-party/zlib/contrib/iostream3/zfstream.cc similarity index 100% rename from 3rd-party/zlib/contrib/iostream3/zfstream.cc rename to io2d/src/3rd-party/zlib/contrib/iostream3/zfstream.cc diff --git a/3rd-party/zlib/contrib/iostream3/zfstream.h b/io2d/src/3rd-party/zlib/contrib/iostream3/zfstream.h similarity index 100% rename from 3rd-party/zlib/contrib/iostream3/zfstream.h rename to io2d/src/3rd-party/zlib/contrib/iostream3/zfstream.h diff --git a/3rd-party/zlib/contrib/masmx64/bld_ml64.bat b/io2d/src/3rd-party/zlib/contrib/masmx64/bld_ml64.bat similarity index 100% rename from 3rd-party/zlib/contrib/masmx64/bld_ml64.bat rename to io2d/src/3rd-party/zlib/contrib/masmx64/bld_ml64.bat diff --git a/3rd-party/zlib/contrib/masmx64/gvmat64.asm b/io2d/src/3rd-party/zlib/contrib/masmx64/gvmat64.asm similarity index 100% rename from 3rd-party/zlib/contrib/masmx64/gvmat64.asm rename to io2d/src/3rd-party/zlib/contrib/masmx64/gvmat64.asm diff --git a/3rd-party/zlib/contrib/masmx64/inffas8664.c b/io2d/src/3rd-party/zlib/contrib/masmx64/inffas8664.c similarity index 100% rename from 3rd-party/zlib/contrib/masmx64/inffas8664.c rename to io2d/src/3rd-party/zlib/contrib/masmx64/inffas8664.c diff --git a/3rd-party/zlib/contrib/masmx64/inffasx64.asm b/io2d/src/3rd-party/zlib/contrib/masmx64/inffasx64.asm similarity index 100% rename from 3rd-party/zlib/contrib/masmx64/inffasx64.asm rename to io2d/src/3rd-party/zlib/contrib/masmx64/inffasx64.asm diff --git a/3rd-party/zlib/contrib/masmx64/readme.txt b/io2d/src/3rd-party/zlib/contrib/masmx64/readme.txt similarity index 100% rename from 3rd-party/zlib/contrib/masmx64/readme.txt rename to io2d/src/3rd-party/zlib/contrib/masmx64/readme.txt diff --git a/3rd-party/zlib/contrib/masmx86/bld_ml32.bat b/io2d/src/3rd-party/zlib/contrib/masmx86/bld_ml32.bat similarity index 100% rename from 3rd-party/zlib/contrib/masmx86/bld_ml32.bat rename to io2d/src/3rd-party/zlib/contrib/masmx86/bld_ml32.bat diff --git a/3rd-party/zlib/contrib/masmx86/inffas32.asm b/io2d/src/3rd-party/zlib/contrib/masmx86/inffas32.asm similarity index 100% rename from 3rd-party/zlib/contrib/masmx86/inffas32.asm rename to io2d/src/3rd-party/zlib/contrib/masmx86/inffas32.asm diff --git a/3rd-party/zlib/contrib/masmx86/match686.asm b/io2d/src/3rd-party/zlib/contrib/masmx86/match686.asm similarity index 100% rename from 3rd-party/zlib/contrib/masmx86/match686.asm rename to io2d/src/3rd-party/zlib/contrib/masmx86/match686.asm diff --git a/3rd-party/zlib/contrib/masmx86/readme.txt b/io2d/src/3rd-party/zlib/contrib/masmx86/readme.txt similarity index 100% rename from 3rd-party/zlib/contrib/masmx86/readme.txt rename to io2d/src/3rd-party/zlib/contrib/masmx86/readme.txt diff --git a/3rd-party/zlib/contrib/minizip/Makefile b/io2d/src/3rd-party/zlib/contrib/minizip/Makefile similarity index 100% rename from 3rd-party/zlib/contrib/minizip/Makefile rename to io2d/src/3rd-party/zlib/contrib/minizip/Makefile diff --git a/3rd-party/zlib/contrib/minizip/Makefile.am b/io2d/src/3rd-party/zlib/contrib/minizip/Makefile.am similarity index 100% rename from 3rd-party/zlib/contrib/minizip/Makefile.am rename to io2d/src/3rd-party/zlib/contrib/minizip/Makefile.am diff --git a/3rd-party/zlib/contrib/minizip/MiniZip64_Changes.txt b/io2d/src/3rd-party/zlib/contrib/minizip/MiniZip64_Changes.txt similarity index 100% rename from 3rd-party/zlib/contrib/minizip/MiniZip64_Changes.txt rename to io2d/src/3rd-party/zlib/contrib/minizip/MiniZip64_Changes.txt diff --git a/3rd-party/zlib/contrib/minizip/MiniZip64_info.txt b/io2d/src/3rd-party/zlib/contrib/minizip/MiniZip64_info.txt similarity index 100% rename from 3rd-party/zlib/contrib/minizip/MiniZip64_info.txt rename to io2d/src/3rd-party/zlib/contrib/minizip/MiniZip64_info.txt diff --git a/3rd-party/zlib/contrib/minizip/configure.ac b/io2d/src/3rd-party/zlib/contrib/minizip/configure.ac similarity index 100% rename from 3rd-party/zlib/contrib/minizip/configure.ac rename to io2d/src/3rd-party/zlib/contrib/minizip/configure.ac diff --git a/3rd-party/zlib/contrib/minizip/crypt.h b/io2d/src/3rd-party/zlib/contrib/minizip/crypt.h similarity index 100% rename from 3rd-party/zlib/contrib/minizip/crypt.h rename to io2d/src/3rd-party/zlib/contrib/minizip/crypt.h diff --git a/3rd-party/zlib/contrib/minizip/ioapi.c b/io2d/src/3rd-party/zlib/contrib/minizip/ioapi.c similarity index 100% rename from 3rd-party/zlib/contrib/minizip/ioapi.c rename to io2d/src/3rd-party/zlib/contrib/minizip/ioapi.c diff --git a/3rd-party/zlib/contrib/minizip/ioapi.h b/io2d/src/3rd-party/zlib/contrib/minizip/ioapi.h similarity index 100% rename from 3rd-party/zlib/contrib/minizip/ioapi.h rename to io2d/src/3rd-party/zlib/contrib/minizip/ioapi.h diff --git a/3rd-party/zlib/contrib/minizip/iowin32.c b/io2d/src/3rd-party/zlib/contrib/minizip/iowin32.c similarity index 100% rename from 3rd-party/zlib/contrib/minizip/iowin32.c rename to io2d/src/3rd-party/zlib/contrib/minizip/iowin32.c diff --git a/3rd-party/zlib/contrib/minizip/iowin32.h b/io2d/src/3rd-party/zlib/contrib/minizip/iowin32.h similarity index 100% rename from 3rd-party/zlib/contrib/minizip/iowin32.h rename to io2d/src/3rd-party/zlib/contrib/minizip/iowin32.h diff --git a/3rd-party/zlib/contrib/minizip/make_vms.com b/io2d/src/3rd-party/zlib/contrib/minizip/make_vms.com similarity index 100% rename from 3rd-party/zlib/contrib/minizip/make_vms.com rename to io2d/src/3rd-party/zlib/contrib/minizip/make_vms.com diff --git a/3rd-party/zlib/contrib/minizip/miniunz.c b/io2d/src/3rd-party/zlib/contrib/minizip/miniunz.c similarity index 100% rename from 3rd-party/zlib/contrib/minizip/miniunz.c rename to io2d/src/3rd-party/zlib/contrib/minizip/miniunz.c diff --git a/3rd-party/zlib/contrib/minizip/miniunzip.1 b/io2d/src/3rd-party/zlib/contrib/minizip/miniunzip.1 similarity index 100% rename from 3rd-party/zlib/contrib/minizip/miniunzip.1 rename to io2d/src/3rd-party/zlib/contrib/minizip/miniunzip.1 diff --git a/3rd-party/zlib/contrib/minizip/minizip.1 b/io2d/src/3rd-party/zlib/contrib/minizip/minizip.1 similarity index 100% rename from 3rd-party/zlib/contrib/minizip/minizip.1 rename to io2d/src/3rd-party/zlib/contrib/minizip/minizip.1 diff --git a/3rd-party/zlib/contrib/minizip/minizip.c b/io2d/src/3rd-party/zlib/contrib/minizip/minizip.c similarity index 100% rename from 3rd-party/zlib/contrib/minizip/minizip.c rename to io2d/src/3rd-party/zlib/contrib/minizip/minizip.c diff --git a/3rd-party/zlib/contrib/minizip/minizip.pc.in b/io2d/src/3rd-party/zlib/contrib/minizip/minizip.pc.in similarity index 100% rename from 3rd-party/zlib/contrib/minizip/minizip.pc.in rename to io2d/src/3rd-party/zlib/contrib/minizip/minizip.pc.in diff --git a/3rd-party/zlib/contrib/minizip/mztools.c b/io2d/src/3rd-party/zlib/contrib/minizip/mztools.c similarity index 100% rename from 3rd-party/zlib/contrib/minizip/mztools.c rename to io2d/src/3rd-party/zlib/contrib/minizip/mztools.c diff --git a/3rd-party/zlib/contrib/minizip/mztools.h b/io2d/src/3rd-party/zlib/contrib/minizip/mztools.h similarity index 100% rename from 3rd-party/zlib/contrib/minizip/mztools.h rename to io2d/src/3rd-party/zlib/contrib/minizip/mztools.h diff --git a/3rd-party/zlib/contrib/minizip/unzip.c b/io2d/src/3rd-party/zlib/contrib/minizip/unzip.c similarity index 100% rename from 3rd-party/zlib/contrib/minizip/unzip.c rename to io2d/src/3rd-party/zlib/contrib/minizip/unzip.c diff --git a/3rd-party/zlib/contrib/minizip/unzip.h b/io2d/src/3rd-party/zlib/contrib/minizip/unzip.h similarity index 100% rename from 3rd-party/zlib/contrib/minizip/unzip.h rename to io2d/src/3rd-party/zlib/contrib/minizip/unzip.h diff --git a/3rd-party/zlib/contrib/minizip/zip.c b/io2d/src/3rd-party/zlib/contrib/minizip/zip.c similarity index 100% rename from 3rd-party/zlib/contrib/minizip/zip.c rename to io2d/src/3rd-party/zlib/contrib/minizip/zip.c diff --git a/3rd-party/zlib/contrib/minizip/zip.h b/io2d/src/3rd-party/zlib/contrib/minizip/zip.h similarity index 100% rename from 3rd-party/zlib/contrib/minizip/zip.h rename to io2d/src/3rd-party/zlib/contrib/minizip/zip.h diff --git a/3rd-party/zlib/contrib/pascal/example.pas b/io2d/src/3rd-party/zlib/contrib/pascal/example.pas similarity index 100% rename from 3rd-party/zlib/contrib/pascal/example.pas rename to io2d/src/3rd-party/zlib/contrib/pascal/example.pas diff --git a/3rd-party/zlib/contrib/pascal/readme.txt b/io2d/src/3rd-party/zlib/contrib/pascal/readme.txt similarity index 100% rename from 3rd-party/zlib/contrib/pascal/readme.txt rename to io2d/src/3rd-party/zlib/contrib/pascal/readme.txt diff --git a/3rd-party/zlib/contrib/pascal/zlibd32.mak b/io2d/src/3rd-party/zlib/contrib/pascal/zlibd32.mak similarity index 100% rename from 3rd-party/zlib/contrib/pascal/zlibd32.mak rename to io2d/src/3rd-party/zlib/contrib/pascal/zlibd32.mak diff --git a/3rd-party/zlib/contrib/pascal/zlibpas.pas b/io2d/src/3rd-party/zlib/contrib/pascal/zlibpas.pas similarity index 100% rename from 3rd-party/zlib/contrib/pascal/zlibpas.pas rename to io2d/src/3rd-party/zlib/contrib/pascal/zlibpas.pas diff --git a/3rd-party/zlib/contrib/puff/Makefile b/io2d/src/3rd-party/zlib/contrib/puff/Makefile similarity index 100% rename from 3rd-party/zlib/contrib/puff/Makefile rename to io2d/src/3rd-party/zlib/contrib/puff/Makefile diff --git a/3rd-party/zlib/contrib/puff/README b/io2d/src/3rd-party/zlib/contrib/puff/README similarity index 100% rename from 3rd-party/zlib/contrib/puff/README rename to io2d/src/3rd-party/zlib/contrib/puff/README diff --git a/3rd-party/zlib/contrib/puff/puff.c b/io2d/src/3rd-party/zlib/contrib/puff/puff.c similarity index 100% rename from 3rd-party/zlib/contrib/puff/puff.c rename to io2d/src/3rd-party/zlib/contrib/puff/puff.c diff --git a/3rd-party/zlib/contrib/puff/puff.h b/io2d/src/3rd-party/zlib/contrib/puff/puff.h similarity index 100% rename from 3rd-party/zlib/contrib/puff/puff.h rename to io2d/src/3rd-party/zlib/contrib/puff/puff.h diff --git a/3rd-party/zlib/contrib/puff/pufftest.c b/io2d/src/3rd-party/zlib/contrib/puff/pufftest.c similarity index 100% rename from 3rd-party/zlib/contrib/puff/pufftest.c rename to io2d/src/3rd-party/zlib/contrib/puff/pufftest.c diff --git a/3rd-party/zlib/contrib/puff/zeros.raw b/io2d/src/3rd-party/zlib/contrib/puff/zeros.raw similarity index 100% rename from 3rd-party/zlib/contrib/puff/zeros.raw rename to io2d/src/3rd-party/zlib/contrib/puff/zeros.raw diff --git a/3rd-party/zlib/contrib/testzlib/testzlib.c b/io2d/src/3rd-party/zlib/contrib/testzlib/testzlib.c similarity index 100% rename from 3rd-party/zlib/contrib/testzlib/testzlib.c rename to io2d/src/3rd-party/zlib/contrib/testzlib/testzlib.c diff --git a/3rd-party/zlib/contrib/testzlib/testzlib.txt b/io2d/src/3rd-party/zlib/contrib/testzlib/testzlib.txt similarity index 100% rename from 3rd-party/zlib/contrib/testzlib/testzlib.txt rename to io2d/src/3rd-party/zlib/contrib/testzlib/testzlib.txt diff --git a/3rd-party/zlib/contrib/untgz/Makefile b/io2d/src/3rd-party/zlib/contrib/untgz/Makefile similarity index 100% rename from 3rd-party/zlib/contrib/untgz/Makefile rename to io2d/src/3rd-party/zlib/contrib/untgz/Makefile diff --git a/3rd-party/zlib/contrib/untgz/Makefile.msc b/io2d/src/3rd-party/zlib/contrib/untgz/Makefile.msc similarity index 100% rename from 3rd-party/zlib/contrib/untgz/Makefile.msc rename to io2d/src/3rd-party/zlib/contrib/untgz/Makefile.msc diff --git a/3rd-party/zlib/contrib/untgz/untgz.c b/io2d/src/3rd-party/zlib/contrib/untgz/untgz.c similarity index 100% rename from 3rd-party/zlib/contrib/untgz/untgz.c rename to io2d/src/3rd-party/zlib/contrib/untgz/untgz.c diff --git a/3rd-party/zlib/contrib/vstudio/readme.txt b/io2d/src/3rd-party/zlib/contrib/vstudio/readme.txt similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/readme.txt rename to io2d/src/3rd-party/zlib/contrib/vstudio/readme.txt diff --git a/3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj diff --git a/3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters diff --git a/3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj diff --git a/3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters diff --git a/3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj diff --git a/3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters diff --git a/3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj diff --git a/3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters diff --git a/3rd-party/zlib/contrib/vstudio/vc10/zlib.rc b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlib.rc similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc10/zlib.rc rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlib.rc diff --git a/3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj diff --git a/3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters diff --git a/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.def b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.def similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc10/zlibvc.def rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.def diff --git a/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.sln b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.sln similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc10/zlibvc.sln rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.sln diff --git a/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj diff --git a/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters b/io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters diff --git a/3rd-party/zlib/contrib/vstudio/vc11/miniunz.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/miniunz.vcxproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc11/miniunz.vcxproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc11/miniunz.vcxproj diff --git a/3rd-party/zlib/contrib/vstudio/vc11/minizip.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/minizip.vcxproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc11/minizip.vcxproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc11/minizip.vcxproj diff --git a/3rd-party/zlib/contrib/vstudio/vc11/testzlib.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/testzlib.vcxproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc11/testzlib.vcxproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc11/testzlib.vcxproj diff --git a/3rd-party/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj diff --git a/3rd-party/zlib/contrib/vstudio/vc11/zlib.rc b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlib.rc similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc11/zlib.rc rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlib.rc diff --git a/3rd-party/zlib/contrib/vstudio/vc11/zlibstat.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibstat.vcxproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc11/zlibstat.vcxproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibstat.vcxproj diff --git a/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.def b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.def similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc11/zlibvc.def rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.def diff --git a/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.sln b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.sln similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc11/zlibvc.sln rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.sln diff --git a/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.vcxproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.vcxproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc11/zlibvc.vcxproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc11/zlibvc.vcxproj diff --git a/3rd-party/zlib/contrib/vstudio/vc9/miniunz.vcproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/miniunz.vcproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc9/miniunz.vcproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc9/miniunz.vcproj diff --git a/3rd-party/zlib/contrib/vstudio/vc9/minizip.vcproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/minizip.vcproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc9/minizip.vcproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc9/minizip.vcproj diff --git a/3rd-party/zlib/contrib/vstudio/vc9/testzlib.vcproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/testzlib.vcproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc9/testzlib.vcproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc9/testzlib.vcproj diff --git a/3rd-party/zlib/contrib/vstudio/vc9/testzlibdll.vcproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/testzlibdll.vcproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc9/testzlibdll.vcproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc9/testzlibdll.vcproj diff --git a/3rd-party/zlib/contrib/vstudio/vc9/zlib.rc b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlib.rc similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc9/zlib.rc rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlib.rc diff --git a/3rd-party/zlib/contrib/vstudio/vc9/zlibstat.vcproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibstat.vcproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc9/zlibstat.vcproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibstat.vcproj diff --git a/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.def b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.def similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc9/zlibvc.def rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.def diff --git a/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.sln b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.sln similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc9/zlibvc.sln rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.sln diff --git a/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.vcproj b/io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.vcproj similarity index 100% rename from 3rd-party/zlib/contrib/vstudio/vc9/zlibvc.vcproj rename to io2d/src/3rd-party/zlib/contrib/vstudio/vc9/zlibvc.vcproj diff --git a/3rd-party/zlib/crc32.c b/io2d/src/3rd-party/zlib/crc32.c similarity index 100% rename from 3rd-party/zlib/crc32.c rename to io2d/src/3rd-party/zlib/crc32.c diff --git a/3rd-party/zlib/crc32.h b/io2d/src/3rd-party/zlib/crc32.h similarity index 100% rename from 3rd-party/zlib/crc32.h rename to io2d/src/3rd-party/zlib/crc32.h diff --git a/3rd-party/zlib/deflate.c b/io2d/src/3rd-party/zlib/deflate.c similarity index 100% rename from 3rd-party/zlib/deflate.c rename to io2d/src/3rd-party/zlib/deflate.c diff --git a/3rd-party/zlib/deflate.h b/io2d/src/3rd-party/zlib/deflate.h similarity index 100% rename from 3rd-party/zlib/deflate.h rename to io2d/src/3rd-party/zlib/deflate.h diff --git a/3rd-party/zlib/doc/algorithm.txt b/io2d/src/3rd-party/zlib/doc/algorithm.txt similarity index 100% rename from 3rd-party/zlib/doc/algorithm.txt rename to io2d/src/3rd-party/zlib/doc/algorithm.txt diff --git a/3rd-party/zlib/doc/rfc1950.txt b/io2d/src/3rd-party/zlib/doc/rfc1950.txt similarity index 100% rename from 3rd-party/zlib/doc/rfc1950.txt rename to io2d/src/3rd-party/zlib/doc/rfc1950.txt diff --git a/3rd-party/zlib/doc/rfc1951.txt b/io2d/src/3rd-party/zlib/doc/rfc1951.txt similarity index 100% rename from 3rd-party/zlib/doc/rfc1951.txt rename to io2d/src/3rd-party/zlib/doc/rfc1951.txt diff --git a/3rd-party/zlib/doc/rfc1952.txt b/io2d/src/3rd-party/zlib/doc/rfc1952.txt similarity index 100% rename from 3rd-party/zlib/doc/rfc1952.txt rename to io2d/src/3rd-party/zlib/doc/rfc1952.txt diff --git a/3rd-party/zlib/doc/txtvsbin.txt b/io2d/src/3rd-party/zlib/doc/txtvsbin.txt similarity index 100% rename from 3rd-party/zlib/doc/txtvsbin.txt rename to io2d/src/3rd-party/zlib/doc/txtvsbin.txt diff --git a/3rd-party/zlib/examples/README.examples b/io2d/src/3rd-party/zlib/examples/README.examples similarity index 100% rename from 3rd-party/zlib/examples/README.examples rename to io2d/src/3rd-party/zlib/examples/README.examples diff --git a/3rd-party/zlib/examples/enough.c b/io2d/src/3rd-party/zlib/examples/enough.c similarity index 100% rename from 3rd-party/zlib/examples/enough.c rename to io2d/src/3rd-party/zlib/examples/enough.c diff --git a/3rd-party/zlib/examples/fitblk.c b/io2d/src/3rd-party/zlib/examples/fitblk.c similarity index 100% rename from 3rd-party/zlib/examples/fitblk.c rename to io2d/src/3rd-party/zlib/examples/fitblk.c diff --git a/3rd-party/zlib/examples/gun.c b/io2d/src/3rd-party/zlib/examples/gun.c similarity index 100% rename from 3rd-party/zlib/examples/gun.c rename to io2d/src/3rd-party/zlib/examples/gun.c diff --git a/3rd-party/zlib/examples/gzappend.c b/io2d/src/3rd-party/zlib/examples/gzappend.c similarity index 100% rename from 3rd-party/zlib/examples/gzappend.c rename to io2d/src/3rd-party/zlib/examples/gzappend.c diff --git a/3rd-party/zlib/examples/gzjoin.c b/io2d/src/3rd-party/zlib/examples/gzjoin.c similarity index 100% rename from 3rd-party/zlib/examples/gzjoin.c rename to io2d/src/3rd-party/zlib/examples/gzjoin.c diff --git a/3rd-party/zlib/examples/gzlog.c b/io2d/src/3rd-party/zlib/examples/gzlog.c similarity index 100% rename from 3rd-party/zlib/examples/gzlog.c rename to io2d/src/3rd-party/zlib/examples/gzlog.c diff --git a/3rd-party/zlib/examples/gzlog.h b/io2d/src/3rd-party/zlib/examples/gzlog.h similarity index 100% rename from 3rd-party/zlib/examples/gzlog.h rename to io2d/src/3rd-party/zlib/examples/gzlog.h diff --git a/3rd-party/zlib/examples/zlib_how.html b/io2d/src/3rd-party/zlib/examples/zlib_how.html similarity index 100% rename from 3rd-party/zlib/examples/zlib_how.html rename to io2d/src/3rd-party/zlib/examples/zlib_how.html diff --git a/3rd-party/zlib/examples/zpipe.c b/io2d/src/3rd-party/zlib/examples/zpipe.c similarity index 100% rename from 3rd-party/zlib/examples/zpipe.c rename to io2d/src/3rd-party/zlib/examples/zpipe.c diff --git a/3rd-party/zlib/examples/zran.c b/io2d/src/3rd-party/zlib/examples/zran.c similarity index 100% rename from 3rd-party/zlib/examples/zran.c rename to io2d/src/3rd-party/zlib/examples/zran.c diff --git a/3rd-party/zlib/gzclose.c b/io2d/src/3rd-party/zlib/gzclose.c similarity index 100% rename from 3rd-party/zlib/gzclose.c rename to io2d/src/3rd-party/zlib/gzclose.c diff --git a/3rd-party/zlib/gzguts.h b/io2d/src/3rd-party/zlib/gzguts.h similarity index 100% rename from 3rd-party/zlib/gzguts.h rename to io2d/src/3rd-party/zlib/gzguts.h diff --git a/3rd-party/zlib/gzlib.c b/io2d/src/3rd-party/zlib/gzlib.c similarity index 100% rename from 3rd-party/zlib/gzlib.c rename to io2d/src/3rd-party/zlib/gzlib.c diff --git a/3rd-party/zlib/gzread.c b/io2d/src/3rd-party/zlib/gzread.c similarity index 100% rename from 3rd-party/zlib/gzread.c rename to io2d/src/3rd-party/zlib/gzread.c diff --git a/3rd-party/zlib/gzwrite.c b/io2d/src/3rd-party/zlib/gzwrite.c similarity index 100% rename from 3rd-party/zlib/gzwrite.c rename to io2d/src/3rd-party/zlib/gzwrite.c diff --git a/3rd-party/zlib/infback.c b/io2d/src/3rd-party/zlib/infback.c similarity index 100% rename from 3rd-party/zlib/infback.c rename to io2d/src/3rd-party/zlib/infback.c diff --git a/3rd-party/zlib/inffast.c b/io2d/src/3rd-party/zlib/inffast.c similarity index 100% rename from 3rd-party/zlib/inffast.c rename to io2d/src/3rd-party/zlib/inffast.c diff --git a/3rd-party/zlib/inffast.h b/io2d/src/3rd-party/zlib/inffast.h similarity index 100% rename from 3rd-party/zlib/inffast.h rename to io2d/src/3rd-party/zlib/inffast.h diff --git a/3rd-party/zlib/inffixed.h b/io2d/src/3rd-party/zlib/inffixed.h similarity index 100% rename from 3rd-party/zlib/inffixed.h rename to io2d/src/3rd-party/zlib/inffixed.h diff --git a/3rd-party/zlib/inflate.c b/io2d/src/3rd-party/zlib/inflate.c similarity index 100% rename from 3rd-party/zlib/inflate.c rename to io2d/src/3rd-party/zlib/inflate.c diff --git a/3rd-party/zlib/inflate.h b/io2d/src/3rd-party/zlib/inflate.h similarity index 100% rename from 3rd-party/zlib/inflate.h rename to io2d/src/3rd-party/zlib/inflate.h diff --git a/3rd-party/zlib/inftrees.c b/io2d/src/3rd-party/zlib/inftrees.c similarity index 100% rename from 3rd-party/zlib/inftrees.c rename to io2d/src/3rd-party/zlib/inftrees.c diff --git a/3rd-party/zlib/inftrees.h b/io2d/src/3rd-party/zlib/inftrees.h similarity index 100% rename from 3rd-party/zlib/inftrees.h rename to io2d/src/3rd-party/zlib/inftrees.h diff --git a/3rd-party/zlib/make_vms.com b/io2d/src/3rd-party/zlib/make_vms.com similarity index 100% rename from 3rd-party/zlib/make_vms.com rename to io2d/src/3rd-party/zlib/make_vms.com diff --git a/3rd-party/zlib/msdos/Makefile.bor b/io2d/src/3rd-party/zlib/msdos/Makefile.bor similarity index 100% rename from 3rd-party/zlib/msdos/Makefile.bor rename to io2d/src/3rd-party/zlib/msdos/Makefile.bor diff --git a/3rd-party/zlib/msdos/Makefile.dj2 b/io2d/src/3rd-party/zlib/msdos/Makefile.dj2 similarity index 100% rename from 3rd-party/zlib/msdos/Makefile.dj2 rename to io2d/src/3rd-party/zlib/msdos/Makefile.dj2 diff --git a/3rd-party/zlib/msdos/Makefile.emx b/io2d/src/3rd-party/zlib/msdos/Makefile.emx similarity index 100% rename from 3rd-party/zlib/msdos/Makefile.emx rename to io2d/src/3rd-party/zlib/msdos/Makefile.emx diff --git a/3rd-party/zlib/msdos/Makefile.msc b/io2d/src/3rd-party/zlib/msdos/Makefile.msc similarity index 100% rename from 3rd-party/zlib/msdos/Makefile.msc rename to io2d/src/3rd-party/zlib/msdos/Makefile.msc diff --git a/3rd-party/zlib/msdos/Makefile.tc b/io2d/src/3rd-party/zlib/msdos/Makefile.tc similarity index 100% rename from 3rd-party/zlib/msdos/Makefile.tc rename to io2d/src/3rd-party/zlib/msdos/Makefile.tc diff --git a/3rd-party/zlib/nintendods/Makefile b/io2d/src/3rd-party/zlib/nintendods/Makefile similarity index 100% rename from 3rd-party/zlib/nintendods/Makefile rename to io2d/src/3rd-party/zlib/nintendods/Makefile diff --git a/3rd-party/zlib/nintendods/README b/io2d/src/3rd-party/zlib/nintendods/README similarity index 100% rename from 3rd-party/zlib/nintendods/README rename to io2d/src/3rd-party/zlib/nintendods/README diff --git a/3rd-party/zlib/old/Makefile.emx b/io2d/src/3rd-party/zlib/old/Makefile.emx similarity index 100% rename from 3rd-party/zlib/old/Makefile.emx rename to io2d/src/3rd-party/zlib/old/Makefile.emx diff --git a/3rd-party/zlib/old/Makefile.riscos b/io2d/src/3rd-party/zlib/old/Makefile.riscos similarity index 100% rename from 3rd-party/zlib/old/Makefile.riscos rename to io2d/src/3rd-party/zlib/old/Makefile.riscos diff --git a/3rd-party/zlib/old/README b/io2d/src/3rd-party/zlib/old/README similarity index 100% rename from 3rd-party/zlib/old/README rename to io2d/src/3rd-party/zlib/old/README diff --git a/3rd-party/zlib/old/descrip.mms b/io2d/src/3rd-party/zlib/old/descrip.mms similarity index 100% rename from 3rd-party/zlib/old/descrip.mms rename to io2d/src/3rd-party/zlib/old/descrip.mms diff --git a/3rd-party/zlib/old/os2/Makefile.os2 b/io2d/src/3rd-party/zlib/old/os2/Makefile.os2 similarity index 100% rename from 3rd-party/zlib/old/os2/Makefile.os2 rename to io2d/src/3rd-party/zlib/old/os2/Makefile.os2 diff --git a/3rd-party/zlib/old/os2/zlib.def b/io2d/src/3rd-party/zlib/old/os2/zlib.def similarity index 100% rename from 3rd-party/zlib/old/os2/zlib.def rename to io2d/src/3rd-party/zlib/old/os2/zlib.def diff --git a/3rd-party/zlib/old/visual-basic.txt b/io2d/src/3rd-party/zlib/old/visual-basic.txt similarity index 100% rename from 3rd-party/zlib/old/visual-basic.txt rename to io2d/src/3rd-party/zlib/old/visual-basic.txt diff --git a/3rd-party/zlib/qnx/package.qpg b/io2d/src/3rd-party/zlib/qnx/package.qpg similarity index 100% rename from 3rd-party/zlib/qnx/package.qpg rename to io2d/src/3rd-party/zlib/qnx/package.qpg diff --git a/3rd-party/zlib/test/example.c b/io2d/src/3rd-party/zlib/test/example.c similarity index 100% rename from 3rd-party/zlib/test/example.c rename to io2d/src/3rd-party/zlib/test/example.c diff --git a/3rd-party/zlib/test/infcover.c b/io2d/src/3rd-party/zlib/test/infcover.c similarity index 100% rename from 3rd-party/zlib/test/infcover.c rename to io2d/src/3rd-party/zlib/test/infcover.c diff --git a/3rd-party/zlib/test/minigzip.c b/io2d/src/3rd-party/zlib/test/minigzip.c similarity index 100% rename from 3rd-party/zlib/test/minigzip.c rename to io2d/src/3rd-party/zlib/test/minigzip.c diff --git a/3rd-party/zlib/treebuild.xml b/io2d/src/3rd-party/zlib/treebuild.xml similarity index 100% rename from 3rd-party/zlib/treebuild.xml rename to io2d/src/3rd-party/zlib/treebuild.xml diff --git a/3rd-party/zlib/trees.c b/io2d/src/3rd-party/zlib/trees.c similarity index 100% rename from 3rd-party/zlib/trees.c rename to io2d/src/3rd-party/zlib/trees.c diff --git a/3rd-party/zlib/trees.h b/io2d/src/3rd-party/zlib/trees.h similarity index 100% rename from 3rd-party/zlib/trees.h rename to io2d/src/3rd-party/zlib/trees.h diff --git a/3rd-party/zlib/uncompr.c b/io2d/src/3rd-party/zlib/uncompr.c similarity index 100% rename from 3rd-party/zlib/uncompr.c rename to io2d/src/3rd-party/zlib/uncompr.c diff --git a/3rd-party/zlib/watcom/watcom_f.mak b/io2d/src/3rd-party/zlib/watcom/watcom_f.mak similarity index 100% rename from 3rd-party/zlib/watcom/watcom_f.mak rename to io2d/src/3rd-party/zlib/watcom/watcom_f.mak diff --git a/3rd-party/zlib/watcom/watcom_l.mak b/io2d/src/3rd-party/zlib/watcom/watcom_l.mak similarity index 100% rename from 3rd-party/zlib/watcom/watcom_l.mak rename to io2d/src/3rd-party/zlib/watcom/watcom_l.mak diff --git a/3rd-party/zlib/win32/DLL_FAQ.txt b/io2d/src/3rd-party/zlib/win32/DLL_FAQ.txt similarity index 100% rename from 3rd-party/zlib/win32/DLL_FAQ.txt rename to io2d/src/3rd-party/zlib/win32/DLL_FAQ.txt diff --git a/3rd-party/zlib/win32/Makefile.bor b/io2d/src/3rd-party/zlib/win32/Makefile.bor similarity index 100% rename from 3rd-party/zlib/win32/Makefile.bor rename to io2d/src/3rd-party/zlib/win32/Makefile.bor diff --git a/3rd-party/zlib/win32/Makefile.gcc b/io2d/src/3rd-party/zlib/win32/Makefile.gcc similarity index 100% rename from 3rd-party/zlib/win32/Makefile.gcc rename to io2d/src/3rd-party/zlib/win32/Makefile.gcc diff --git a/3rd-party/zlib/win32/Makefile.msc b/io2d/src/3rd-party/zlib/win32/Makefile.msc similarity index 100% rename from 3rd-party/zlib/win32/Makefile.msc rename to io2d/src/3rd-party/zlib/win32/Makefile.msc diff --git a/3rd-party/zlib/win32/README-WIN32.txt b/io2d/src/3rd-party/zlib/win32/README-WIN32.txt similarity index 100% rename from 3rd-party/zlib/win32/README-WIN32.txt rename to io2d/src/3rd-party/zlib/win32/README-WIN32.txt diff --git a/3rd-party/zlib/win32/VisualC.txt b/io2d/src/3rd-party/zlib/win32/VisualC.txt similarity index 100% rename from 3rd-party/zlib/win32/VisualC.txt rename to io2d/src/3rd-party/zlib/win32/VisualC.txt diff --git a/3rd-party/zlib/win32/zlib.def b/io2d/src/3rd-party/zlib/win32/zlib.def similarity index 100% rename from 3rd-party/zlib/win32/zlib.def rename to io2d/src/3rd-party/zlib/win32/zlib.def diff --git a/3rd-party/zlib/win32/zlib1.rc b/io2d/src/3rd-party/zlib/win32/zlib1.rc similarity index 100% rename from 3rd-party/zlib/win32/zlib1.rc rename to io2d/src/3rd-party/zlib/win32/zlib1.rc diff --git a/3rd-party/zlib/zconf.h b/io2d/src/3rd-party/zlib/zconf.h similarity index 100% rename from 3rd-party/zlib/zconf.h rename to io2d/src/3rd-party/zlib/zconf.h diff --git a/3rd-party/zlib/zconf.h.cmakein b/io2d/src/3rd-party/zlib/zconf.h.cmakein similarity index 100% rename from 3rd-party/zlib/zconf.h.cmakein rename to io2d/src/3rd-party/zlib/zconf.h.cmakein diff --git a/3rd-party/zlib/zconf.h.in b/io2d/src/3rd-party/zlib/zconf.h.in similarity index 100% rename from 3rd-party/zlib/zconf.h.in rename to io2d/src/3rd-party/zlib/zconf.h.in diff --git a/3rd-party/zlib/zlib.3 b/io2d/src/3rd-party/zlib/zlib.3 similarity index 100% rename from 3rd-party/zlib/zlib.3 rename to io2d/src/3rd-party/zlib/zlib.3 diff --git a/3rd-party/zlib/zlib.3.pdf b/io2d/src/3rd-party/zlib/zlib.3.pdf similarity index 100% rename from 3rd-party/zlib/zlib.3.pdf rename to io2d/src/3rd-party/zlib/zlib.3.pdf diff --git a/3rd-party/zlib/zlib.h b/io2d/src/3rd-party/zlib/zlib.h similarity index 100% rename from 3rd-party/zlib/zlib.h rename to io2d/src/3rd-party/zlib/zlib.h diff --git a/3rd-party/zlib/zlib.map b/io2d/src/3rd-party/zlib/zlib.map similarity index 100% rename from 3rd-party/zlib/zlib.map rename to io2d/src/3rd-party/zlib/zlib.map diff --git a/3rd-party/zlib/zlib.pc.cmakein b/io2d/src/3rd-party/zlib/zlib.pc.cmakein similarity index 100% rename from 3rd-party/zlib/zlib.pc.cmakein rename to io2d/src/3rd-party/zlib/zlib.pc.cmakein diff --git a/3rd-party/zlib/zlib.pc.in b/io2d/src/3rd-party/zlib/zlib.pc.in similarity index 100% rename from 3rd-party/zlib/zlib.pc.in rename to io2d/src/3rd-party/zlib/zlib.pc.in diff --git a/3rd-party/zlib/zlib2ansi b/io2d/src/3rd-party/zlib/zlib2ansi similarity index 100% rename from 3rd-party/zlib/zlib2ansi rename to io2d/src/3rd-party/zlib/zlib2ansi diff --git a/3rd-party/zlib/zutil.c b/io2d/src/3rd-party/zlib/zutil.c similarity index 100% rename from 3rd-party/zlib/zutil.c rename to io2d/src/3rd-party/zlib/zutil.c diff --git a/3rd-party/zlib/zutil.h b/io2d/src/3rd-party/zlib/zutil.h similarity index 100% rename from 3rd-party/zlib/zutil.h rename to io2d/src/3rd-party/zlib/zutil.h diff --git a/src/Makefile.am b/io2d/src/Makefile.am similarity index 100% rename from src/Makefile.am rename to io2d/src/Makefile.am diff --git a/src/N3888_RefImpl.ico b/io2d/src/N3888_RefImpl.ico similarity index 100% rename from src/N3888_RefImpl.ico rename to io2d/src/N3888_RefImpl.ico diff --git a/src/N3888_RefImpl.rc b/io2d/src/N3888_RefImpl.rc similarity index 100% rename from src/N3888_RefImpl.rc rename to io2d/src/N3888_RefImpl.rc diff --git a/src/N3888_RefImpl.vcxproj b/io2d/src/N3888_RefImpl.vcxproj similarity index 100% rename from src/N3888_RefImpl.vcxproj rename to io2d/src/N3888_RefImpl.vcxproj diff --git a/src/N3888_RefImpl.vcxproj.filters b/io2d/src/N3888_RefImpl.vcxproj.filters similarity index 100% rename from src/N3888_RefImpl.vcxproj.filters rename to io2d/src/N3888_RefImpl.vcxproj.filters diff --git a/src/brush.cpp b/io2d/src/brush.cpp similarity index 100% rename from src/brush.cpp rename to io2d/src/brush.cpp diff --git a/src/device.cpp b/io2d/src/device.cpp similarity index 100% rename from src/device.cpp rename to io2d/src/device.cpp diff --git a/src/display_surface-common.cpp b/io2d/src/display_surface-common.cpp similarity index 100% rename from src/display_surface-common.cpp rename to io2d/src/display_surface-common.cpp diff --git a/src/display_surface-win32.cpp b/io2d/src/display_surface-win32.cpp similarity index 100% rename from src/display_surface-win32.cpp rename to io2d/src/display_surface-win32.cpp diff --git a/src/display_surface-xlib.cpp b/io2d/src/display_surface-xlib.cpp similarity index 100% rename from src/display_surface-xlib.cpp rename to io2d/src/display_surface-xlib.cpp diff --git a/src/font_extents.cpp b/io2d/src/font_extents.cpp similarity index 100% rename from src/font_extents.cpp rename to io2d/src/font_extents.cpp diff --git a/src/font_face.cpp b/io2d/src/font_face.cpp similarity index 100% rename from src/font_face.cpp rename to io2d/src/font_face.cpp diff --git a/src/font_options.cpp b/io2d/src/font_options.cpp similarity index 100% rename from src/font_options.cpp rename to io2d/src/font_options.cpp diff --git a/src/image_surface.cpp b/io2d/src/image_surface.cpp similarity index 100% rename from src/image_surface.cpp rename to io2d/src/image_surface.cpp diff --git a/src/io2d_error_category.cpp b/io2d/src/io2d_error_category.cpp similarity index 100% rename from src/io2d_error_category.cpp rename to io2d/src/io2d_error_category.cpp diff --git a/src/linear_brush_factory.cpp b/io2d/src/linear_brush_factory.cpp similarity index 100% rename from src/linear_brush_factory.cpp rename to io2d/src/linear_brush_factory.cpp diff --git a/src/mapped_surface.cpp b/io2d/src/mapped_surface.cpp similarity index 100% rename from src/mapped_surface.cpp rename to io2d/src/mapped_surface.cpp diff --git a/src/matrix_2d.cpp b/io2d/src/matrix_2d.cpp similarity index 100% rename from src/matrix_2d.cpp rename to io2d/src/matrix_2d.cpp diff --git a/src/mesh_brush_factory.cpp b/io2d/src/mesh_brush_factory.cpp similarity index 100% rename from src/mesh_brush_factory.cpp rename to io2d/src/mesh_brush_factory.cpp diff --git a/src/path.cpp b/io2d/src/path.cpp similarity index 100% rename from src/path.cpp rename to io2d/src/path.cpp diff --git a/src/path_data.cpp b/io2d/src/path_data.cpp similarity index 100% rename from src/path_data.cpp rename to io2d/src/path_data.cpp diff --git a/src/path_data_item.cpp b/io2d/src/path_data_item.cpp similarity index 100% rename from src/path_data_item.cpp rename to io2d/src/path_data_item.cpp diff --git a/src/path_factory.cpp b/io2d/src/path_factory.cpp similarity index 100% rename from src/path_factory.cpp rename to io2d/src/path_factory.cpp diff --git a/src/radial_brush_factory.cpp b/io2d/src/radial_brush_factory.cpp similarity index 100% rename from src/radial_brush_factory.cpp rename to io2d/src/radial_brush_factory.cpp diff --git a/src/rectangle.cpp b/io2d/src/rectangle.cpp similarity index 100% rename from src/rectangle.cpp rename to io2d/src/rectangle.cpp diff --git a/src/rgba_color.cpp b/io2d/src/rgba_color.cpp similarity index 100% rename from src/rgba_color.cpp rename to io2d/src/rgba_color.cpp diff --git a/src/simple_font_face.cpp b/io2d/src/simple_font_face.cpp similarity index 100% rename from src/simple_font_face.cpp rename to io2d/src/simple_font_face.cpp diff --git a/src/small.ico b/io2d/src/small.ico similarity index 100% rename from src/small.ico rename to io2d/src/small.ico diff --git a/src/solid_color_brush_factory.cpp b/io2d/src/solid_color_brush_factory.cpp similarity index 100% rename from src/solid_color_brush_factory.cpp rename to io2d/src/solid_color_brush_factory.cpp diff --git a/src/standalone_functions.cpp b/io2d/src/standalone_functions.cpp similarity index 100% rename from src/standalone_functions.cpp rename to io2d/src/standalone_functions.cpp diff --git a/src/surface.cpp b/io2d/src/surface.cpp similarity index 100% rename from src/surface.cpp rename to io2d/src/surface.cpp diff --git a/src/surface_brush_factory.cpp b/io2d/src/surface_brush_factory.cpp similarity index 100% rename from src/surface_brush_factory.cpp rename to io2d/src/surface_brush_factory.cpp diff --git a/src/text_extents.cpp b/io2d/src/text_extents.cpp similarity index 100% rename from src/text_extents.cpp rename to io2d/src/text_extents.cpp diff --git a/src/vector_2d.cpp b/io2d/src/vector_2d.cpp similarity index 100% rename from src/vector_2d.cpp rename to io2d/src/vector_2d.cpp diff --git a/src/win32/DLL build instructions.txt b/io2d/src/win32/DLL build instructions.txt similarity index 100% rename from src/win32/DLL build instructions.txt rename to io2d/src/win32/DLL build instructions.txt diff --git a/src/win32/DLLs/x64/Debug/cairo.dll b/io2d/src/win32/DLLs/x64/Debug/cairo.dll similarity index 100% rename from src/win32/DLLs/x64/Debug/cairo.dll rename to io2d/src/win32/DLLs/x64/Debug/cairo.dll diff --git a/src/win32/DLLs/x64/Debug/cairo.pdb b/io2d/src/win32/DLLs/x64/Debug/cairo.pdb similarity index 100% rename from src/win32/DLLs/x64/Debug/cairo.pdb rename to io2d/src/win32/DLLs/x64/Debug/cairo.pdb diff --git a/src/win32/DLLs/x64/Debug/zlib1.dll b/io2d/src/win32/DLLs/x64/Debug/zlib1.dll similarity index 100% rename from src/win32/DLLs/x64/Debug/zlib1.dll rename to io2d/src/win32/DLLs/x64/Debug/zlib1.dll diff --git a/src/win32/DLLs/x64/Debug/zlib1.pdb b/io2d/src/win32/DLLs/x64/Debug/zlib1.pdb similarity index 100% rename from src/win32/DLLs/x64/Debug/zlib1.pdb rename to io2d/src/win32/DLLs/x64/Debug/zlib1.pdb diff --git a/src/win32/DLLs/x64/Release/cairo.dll b/io2d/src/win32/DLLs/x64/Release/cairo.dll similarity index 100% rename from src/win32/DLLs/x64/Release/cairo.dll rename to io2d/src/win32/DLLs/x64/Release/cairo.dll diff --git a/src/win32/DLLs/x64/Release/zlib1.dll b/io2d/src/win32/DLLs/x64/Release/zlib1.dll similarity index 100% rename from src/win32/DLLs/x64/Release/zlib1.dll rename to io2d/src/win32/DLLs/x64/Release/zlib1.dll diff --git a/src/win32/DLLs/x86/Debug/cairo.dll b/io2d/src/win32/DLLs/x86/Debug/cairo.dll similarity index 100% rename from src/win32/DLLs/x86/Debug/cairo.dll rename to io2d/src/win32/DLLs/x86/Debug/cairo.dll diff --git a/src/win32/DLLs/x86/Debug/cairo.pdb b/io2d/src/win32/DLLs/x86/Debug/cairo.pdb similarity index 100% rename from src/win32/DLLs/x86/Debug/cairo.pdb rename to io2d/src/win32/DLLs/x86/Debug/cairo.pdb diff --git a/src/win32/DLLs/x86/Debug/zlib1.dll b/io2d/src/win32/DLLs/x86/Debug/zlib1.dll similarity index 100% rename from src/win32/DLLs/x86/Debug/zlib1.dll rename to io2d/src/win32/DLLs/x86/Debug/zlib1.dll diff --git a/src/win32/DLLs/x86/Debug/zlib1.pdb b/io2d/src/win32/DLLs/x86/Debug/zlib1.pdb similarity index 100% rename from src/win32/DLLs/x86/Debug/zlib1.pdb rename to io2d/src/win32/DLLs/x86/Debug/zlib1.pdb diff --git a/src/win32/DLLs/x86/Debug_Clang_C2/cairo.dll b/io2d/src/win32/DLLs/x86/Debug_Clang_C2/cairo.dll similarity index 100% rename from src/win32/DLLs/x86/Debug_Clang_C2/cairo.dll rename to io2d/src/win32/DLLs/x86/Debug_Clang_C2/cairo.dll diff --git a/src/win32/DLLs/x86/Debug_Clang_C2/zlib1.dll b/io2d/src/win32/DLLs/x86/Debug_Clang_C2/zlib1.dll similarity index 100% rename from src/win32/DLLs/x86/Debug_Clang_C2/zlib1.dll rename to io2d/src/win32/DLLs/x86/Debug_Clang_C2/zlib1.dll diff --git a/src/win32/DLLs/x86/Release/cairo.dll b/io2d/src/win32/DLLs/x86/Release/cairo.dll similarity index 100% rename from src/win32/DLLs/x86/Release/cairo.dll rename to io2d/src/win32/DLLs/x86/Release/cairo.dll diff --git a/src/win32/DLLs/x86/Release/zlib1.dll b/io2d/src/win32/DLLs/x86/Release/zlib1.dll similarity index 100% rename from src/win32/DLLs/x86/Release/zlib1.dll rename to io2d/src/win32/DLLs/x86/Release/zlib1.dll diff --git a/src/win32/DLLs/x86/Release_Clang_C2/cairo.dll b/io2d/src/win32/DLLs/x86/Release_Clang_C2/cairo.dll similarity index 100% rename from src/win32/DLLs/x86/Release_Clang_C2/cairo.dll rename to io2d/src/win32/DLLs/x86/Release_Clang_C2/cairo.dll diff --git a/src/win32/DLLs/x86/Release_Clang_C2/zlib1.dll b/io2d/src/win32/DLLs/x86/Release_Clang_C2/zlib1.dll similarity index 100% rename from src/win32/DLLs/x86/Release_Clang_C2/zlib1.dll rename to io2d/src/win32/DLLs/x86/Release_Clang_C2/zlib1.dll diff --git a/src/win32/include/cairo-deprecated.h b/io2d/src/win32/include/cairo-deprecated.h similarity index 100% rename from src/win32/include/cairo-deprecated.h rename to io2d/src/win32/include/cairo-deprecated.h diff --git a/src/win32/include/cairo-features.h b/io2d/src/win32/include/cairo-features.h similarity index 100% rename from src/win32/include/cairo-features.h rename to io2d/src/win32/include/cairo-features.h diff --git a/src/win32/include/cairo-pdf.h b/io2d/src/win32/include/cairo-pdf.h similarity index 100% rename from src/win32/include/cairo-pdf.h rename to io2d/src/win32/include/cairo-pdf.h diff --git a/src/win32/include/cairo-ps.h b/io2d/src/win32/include/cairo-ps.h similarity index 100% rename from src/win32/include/cairo-ps.h rename to io2d/src/win32/include/cairo-ps.h diff --git a/src/win32/include/cairo-script.h b/io2d/src/win32/include/cairo-script.h similarity index 100% rename from src/win32/include/cairo-script.h rename to io2d/src/win32/include/cairo-script.h diff --git a/src/win32/include/cairo-svg.h b/io2d/src/win32/include/cairo-svg.h similarity index 100% rename from src/win32/include/cairo-svg.h rename to io2d/src/win32/include/cairo-svg.h diff --git a/src/win32/include/cairo-version.h b/io2d/src/win32/include/cairo-version.h similarity index 100% rename from src/win32/include/cairo-version.h rename to io2d/src/win32/include/cairo-version.h diff --git a/src/win32/include/cairo-win32.h b/io2d/src/win32/include/cairo-win32.h similarity index 100% rename from src/win32/include/cairo-win32.h rename to io2d/src/win32/include/cairo-win32.h diff --git a/src/win32/include/cairo.h b/io2d/src/win32/include/cairo.h similarity index 100% rename from src/win32/include/cairo.h rename to io2d/src/win32/include/cairo.h diff --git a/src/win32/lib/x64/Debug/cairo.lib b/io2d/src/win32/lib/x64/Debug/cairo.lib similarity index 100% rename from src/win32/lib/x64/Debug/cairo.lib rename to io2d/src/win32/lib/x64/Debug/cairo.lib diff --git a/src/win32/lib/x64/Debug/zlib.lib b/io2d/src/win32/lib/x64/Debug/zlib.lib similarity index 100% rename from src/win32/lib/x64/Debug/zlib.lib rename to io2d/src/win32/lib/x64/Debug/zlib.lib diff --git a/src/win32/lib/x64/Release/cairo.lib b/io2d/src/win32/lib/x64/Release/cairo.lib similarity index 100% rename from src/win32/lib/x64/Release/cairo.lib rename to io2d/src/win32/lib/x64/Release/cairo.lib diff --git a/src/win32/lib/x64/Release/zlib.lib b/io2d/src/win32/lib/x64/Release/zlib.lib similarity index 100% rename from src/win32/lib/x64/Release/zlib.lib rename to io2d/src/win32/lib/x64/Release/zlib.lib diff --git a/src/win32/lib/x86/Debug/cairo.lib b/io2d/src/win32/lib/x86/Debug/cairo.lib similarity index 100% rename from src/win32/lib/x86/Debug/cairo.lib rename to io2d/src/win32/lib/x86/Debug/cairo.lib diff --git a/src/win32/lib/x86/Debug/zlib.lib b/io2d/src/win32/lib/x86/Debug/zlib.lib similarity index 100% rename from src/win32/lib/x86/Debug/zlib.lib rename to io2d/src/win32/lib/x86/Debug/zlib.lib diff --git a/src/win32/lib/x86/Debug_Clang_C2/cairo.lib b/io2d/src/win32/lib/x86/Debug_Clang_C2/cairo.lib similarity index 100% rename from src/win32/lib/x86/Debug_Clang_C2/cairo.lib rename to io2d/src/win32/lib/x86/Debug_Clang_C2/cairo.lib diff --git a/src/win32/lib/x86/Debug_Clang_C2/zlib.lib b/io2d/src/win32/lib/x86/Debug_Clang_C2/zlib.lib similarity index 100% rename from src/win32/lib/x86/Debug_Clang_C2/zlib.lib rename to io2d/src/win32/lib/x86/Debug_Clang_C2/zlib.lib diff --git a/src/win32/lib/x86/Release/cairo.lib b/io2d/src/win32/lib/x86/Release/cairo.lib similarity index 100% rename from src/win32/lib/x86/Release/cairo.lib rename to io2d/src/win32/lib/x86/Release/cairo.lib diff --git a/src/win32/lib/x86/Release/zlib.lib b/io2d/src/win32/lib/x86/Release/zlib.lib similarity index 100% rename from src/win32/lib/x86/Release/zlib.lib rename to io2d/src/win32/lib/x86/Release/zlib.lib diff --git a/src/win32/lib/x86/Release_Clang_C2/cairo.lib b/io2d/src/win32/lib/x86/Release_Clang_C2/cairo.lib similarity index 100% rename from src/win32/lib/x86/Release_Clang_C2/cairo.lib rename to io2d/src/win32/lib/x86/Release_Clang_C2/cairo.lib diff --git a/src/win32/lib/x86/Release_Clang_C2/zlib.lib b/io2d/src/win32/lib/x86/Release_Clang_C2/zlib.lib similarity index 100% rename from src/win32/lib/x86/Release_Clang_C2/zlib.lib rename to io2d/src/win32/lib/x86/Release_Clang_C2/zlib.lib From b5c1a45d225be1061a294b40f121bb0ba29526ba Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Thu, 25 Feb 2016 00:21:40 +0100 Subject: [PATCH 08/30] Removed win32 prebuilt binaries --- io2d/src/win32/DLL build instructions.txt | 81 - io2d/src/win32/DLLs/x64/Debug/cairo.dll | Bin 2703360 -> 0 bytes io2d/src/win32/DLLs/x64/Debug/cairo.pdb | Bin 3853312 -> 0 bytes io2d/src/win32/DLLs/x64/Debug/zlib1.dll | Bin 77824 -> 0 bytes io2d/src/win32/DLLs/x64/Debug/zlib1.pdb | Bin 297984 -> 0 bytes io2d/src/win32/DLLs/x64/Release/cairo.dll | Bin 1441792 -> 0 bytes io2d/src/win32/DLLs/x64/Release/zlib1.dll | Bin 77824 -> 0 bytes io2d/src/win32/DLLs/x86/Debug/cairo.dll | Bin 2063872 -> 0 bytes io2d/src/win32/DLLs/x86/Debug/cairo.pdb | Bin 3968000 -> 0 bytes io2d/src/win32/DLLs/x86/Debug/zlib1.dll | Bin 67584 -> 0 bytes io2d/src/win32/DLLs/x86/Debug/zlib1.pdb | Bin 297984 -> 0 bytes .../win32/DLLs/x86/Debug_Clang_C2/cairo.dll | Bin 2063872 -> 0 bytes .../win32/DLLs/x86/Debug_Clang_C2/zlib1.dll | Bin 67584 -> 0 bytes io2d/src/win32/DLLs/x86/Release/cairo.dll | Bin 1213440 -> 0 bytes io2d/src/win32/DLLs/x86/Release/zlib1.dll | Bin 67584 -> 0 bytes .../win32/DLLs/x86/Release_Clang_C2/cairo.dll | Bin 1213440 -> 0 bytes .../win32/DLLs/x86/Release_Clang_C2/zlib1.dll | Bin 67584 -> 0 bytes io2d/src/win32/include/cairo-deprecated.h | 123 - io2d/src/win32/include/cairo-features.h | 17 - io2d/src/win32/include/cairo-pdf.h | 94 - io2d/src/win32/include/cairo-ps.h | 116 - io2d/src/win32/include/cairo-script.h | 98 - io2d/src/win32/include/cairo-svg.h | 84 - io2d/src/win32/include/cairo-version.h | 8 - io2d/src/win32/include/cairo-win32.h | 112 - io2d/src/win32/include/cairo.h | 3117 ----------------- io2d/src/win32/lib/x64/Debug/cairo.lib | Bin 94764 -> 0 bytes io2d/src/win32/lib/x64/Debug/zlib.lib | Bin 270780 -> 0 bytes io2d/src/win32/lib/x64/Release/cairo.lib | Bin 94764 -> 0 bytes io2d/src/win32/lib/x64/Release/zlib.lib | Bin 270780 -> 0 bytes io2d/src/win32/lib/x86/Debug/cairo.lib | Bin 96594 -> 0 bytes io2d/src/win32/lib/x86/Debug/zlib.lib | Bin 238064 -> 0 bytes .../win32/lib/x86/Debug_Clang_C2/cairo.lib | Bin 96594 -> 0 bytes .../src/win32/lib/x86/Debug_Clang_C2/zlib.lib | Bin 238064 -> 0 bytes io2d/src/win32/lib/x86/Release/cairo.lib | Bin 96594 -> 0 bytes io2d/src/win32/lib/x86/Release/zlib.lib | Bin 238064 -> 0 bytes .../win32/lib/x86/Release_Clang_C2/cairo.lib | Bin 96594 -> 0 bytes .../win32/lib/x86/Release_Clang_C2/zlib.lib | Bin 238064 -> 0 bytes 38 files changed, 3850 deletions(-) delete mode 100644 io2d/src/win32/DLL build instructions.txt delete mode 100644 io2d/src/win32/DLLs/x64/Debug/cairo.dll delete mode 100644 io2d/src/win32/DLLs/x64/Debug/cairo.pdb delete mode 100644 io2d/src/win32/DLLs/x64/Debug/zlib1.dll delete mode 100644 io2d/src/win32/DLLs/x64/Debug/zlib1.pdb delete mode 100644 io2d/src/win32/DLLs/x64/Release/cairo.dll delete mode 100644 io2d/src/win32/DLLs/x64/Release/zlib1.dll delete mode 100644 io2d/src/win32/DLLs/x86/Debug/cairo.dll delete mode 100644 io2d/src/win32/DLLs/x86/Debug/cairo.pdb delete mode 100644 io2d/src/win32/DLLs/x86/Debug/zlib1.dll delete mode 100644 io2d/src/win32/DLLs/x86/Debug/zlib1.pdb delete mode 100644 io2d/src/win32/DLLs/x86/Debug_Clang_C2/cairo.dll delete mode 100644 io2d/src/win32/DLLs/x86/Debug_Clang_C2/zlib1.dll delete mode 100644 io2d/src/win32/DLLs/x86/Release/cairo.dll delete mode 100644 io2d/src/win32/DLLs/x86/Release/zlib1.dll delete mode 100644 io2d/src/win32/DLLs/x86/Release_Clang_C2/cairo.dll delete mode 100644 io2d/src/win32/DLLs/x86/Release_Clang_C2/zlib1.dll delete mode 100644 io2d/src/win32/include/cairo-deprecated.h delete mode 100644 io2d/src/win32/include/cairo-features.h delete mode 100644 io2d/src/win32/include/cairo-pdf.h delete mode 100644 io2d/src/win32/include/cairo-ps.h delete mode 100644 io2d/src/win32/include/cairo-script.h delete mode 100644 io2d/src/win32/include/cairo-svg.h delete mode 100644 io2d/src/win32/include/cairo-version.h delete mode 100644 io2d/src/win32/include/cairo-win32.h delete mode 100644 io2d/src/win32/include/cairo.h delete mode 100644 io2d/src/win32/lib/x64/Debug/cairo.lib delete mode 100644 io2d/src/win32/lib/x64/Debug/zlib.lib delete mode 100644 io2d/src/win32/lib/x64/Release/cairo.lib delete mode 100644 io2d/src/win32/lib/x64/Release/zlib.lib delete mode 100644 io2d/src/win32/lib/x86/Debug/cairo.lib delete mode 100644 io2d/src/win32/lib/x86/Debug/zlib.lib delete mode 100644 io2d/src/win32/lib/x86/Debug_Clang_C2/cairo.lib delete mode 100644 io2d/src/win32/lib/x86/Debug_Clang_C2/zlib.lib delete mode 100644 io2d/src/win32/lib/x86/Release/cairo.lib delete mode 100644 io2d/src/win32/lib/x86/Release/zlib.lib delete mode 100644 io2d/src/win32/lib/x86/Release_Clang_C2/cairo.lib delete mode 100644 io2d/src/win32/lib/x86/Release_Clang_C2/zlib.lib diff --git a/io2d/src/win32/DLL build instructions.txt b/io2d/src/win32/DLL build instructions.txt deleted file mode 100644 index 1575152..0000000 --- a/io2d/src/win32/DLL build instructions.txt +++ /dev/null @@ -1,81 +0,0 @@ -DLL build instructions. These are provided "AS IS" with no warranties or guarantees of any kind, express or implied, and confer no rights. - -1. If you do not already have a version of Visual Studio 2013 installed, install one (Visual Studio 2013 Express for Windows Desktop is fine - see: http://www.visualstudio.com/downloads/download-visual-studio-vs ). - -2. Install mozilla-build (see: https://wiki.mozilla.org/MozillaBuild ). - -3. In the mozilla-build directory, create a start-msvc12.bat and start-msvc12-x64.bat by adapting the msvc11 versions (if necessary). The version I installed (1.8.0) did not have these .bat files. - -4. Acquire zlib 1.2.8 (or latest), libpng 1.6 (latest), pixman (I used the master branch as of 2013-11-22 21:01:09 which include the patch from 2013-11-18 but not the one from 2013-11-24 (see: http://cgit.freedesktop.org/pixman/ )), and cairo (I used 1.12.16). Note: Libpng, pixman, and cairo can all be acquired with git. IMPORANT: Make sure all 4 are cloned/unzipped in the same folder (the "Root" folder). (When all is done you should have a folder that contains a "cairo" subfolder, a "pixman" subfolder, a "libpng16" subfolder, and a "zlib-1.2.8" subfolder). - - For cairo I used the following git bash commands: - git clone git://git.cairographics.org/git/cairo - cd cairo - git checkout -b build 1.12.16 - cd .. - - For pixman I used the following git bash command: - git clone git://git.cairographics.org/git/pixman - - For libpng I used the following git bash command: - git clone -b libpng16 git://git.code.sf.net/p/libpng/code libpng16 - - For zlib, I acquired the zip file from - -5. Open a command prompt in the Root folder. Use mklink to create NTFS junction points that alias "zlib" for "zlib-1.2.8" and "libpng" for "libpng16" (or appropriate). Example: - mklink /J zlib zlib-1.2.8 - mklink /J libpng libpng16 - -6. Close the command prompt window. - -7. Open a Visual Studio 2013 command prompt (use the x64 native tools version if you're building 64-bit binaries; I am going to assume that you will continue to use either the 32-bit or the 64-bit versions of any tools for the remainder of the instructions since you should not mix 32-bit and 64-bit). - -8. In the VS 2013 command prompt window, cd to the zlib directory (e.g. if zlib was in C:\Repos, you would use "cd C:\Repos\zlib" to change to the directory). - -9. In the VS 2013 command prompt window, build zlib using the following commands: - nmake -f win32\Makefile.msc clean - nmake -f win32\Makefile.msc LOC=-D_INC_WINAPIFAMILY - -10. In the VS 2013 command prompt window, cd to the libpng directory. - -11. In the VS 2013 command prompt window, build libpng using the following commands: - nmake -f scripts\makefile.vcwin32 clean - nmake -f scripts\makefile.vcwin32 - -12. Close the VS 2013 command prompt window. - -13. Open a Windows Explorer window and navigate to the pixman folder. - -14. Navigate to the pixman subfolder. (So if the pixman folder was in C:\Repos, you would now be in C:\Repos\pixman\pixman). - -15. Copy the "pixman-version.h.in" file to "pixman-version.h". - -16. Open "pixman-version.h" in your preferred text editor. - -17. Find the following lines (they are consecutive; for me they are lines 34-36): - -#define PIXMAN_VERSION_MAJOR @PIXMAN_VERSION_MAJOR@ -#define PIXMAN_VERSION_MINOR @PIXMAN_VERSION_MINOR@ -#define PIXMAN_VERSION_MICRO @PIXMAN_VERSION_MICRO@ - -18. Change them to reflect the version number of pixman that you are working with. You can find the values in configure.ac in the main pixman directory (lines 55-57). I used 0, 33, 1, giving me: - -#define PIXMAN_VERSION_MAJOR 0 -#define PIXMAN_VERSION_MINOR 33 -#define PIXMAN_VERSION_MICRO 1 - -19. Save and close pixman-version.h and any other files you opened. - -20. Run the correct .bat file from the mozilla-build install directory (start-msvc12.bat or start-msvc12-x64.bat). This will open a MinGW32 command prompt window. - -21. In the MinGW32 command prompt window, cd to the pixman directory (note that in this window, directories are separated by a forward slash ("/") rather than a backslash ("\") and that file and folder names are case sensitive. Also your C: drive will be at "/c" and D: at "/d", etc. So if the pixman directory was in C:\Repos, you would use "cd /c/Repos/pixman" to change to the directory). - -22. In the MinGW32 command prompt window, build pixman using the following commands (replace "debug" with "release" when building a release DLL of Cairo): - make -f Makefile.win32 MMX=off SSE2=on SSSE3=off CFG=debug clean - make -f Makefile.win32 MMX=off SSE2=on SSSE3=off CFG=debug - -23. In the MinGW32 command prompt window, cd to the cairo directory. - -24. In the MinGW32 command prompt window, build cairo using the following commands (replace "debug" with "release" when building a release DLL of Cairo): - make -f Makefile.win32 CFG=debug clean - make -f Makefile.win32 CFG=debug - -25. If you get "fatal error LNK1112: module machine type '???' conflicts with target machine type '???'" (with the ??? being either X86 or x64), go into the "cairo/src/debug/win32" folder (replace "debug" with "release" if you are creating a release build) and delete all of the .obj files in that folder. Then run the make command again (the last one without the clean) and it should work fine and finish building. - -25. When cairo finishes building, it will list various files for you to copy. Copy those files to the correct place (it's up to you to decide where that should be). You will also need cairo.lib and zlib.lib in order to link against their respective DLLs. The .lib files should be added as linker inputs in your project's project properties in Visual Studio and the DLL files will need to be copied to the same directory as your program executable after it is built and before it runs in order to ensure that it can run correctly. diff --git a/io2d/src/win32/DLLs/x64/Debug/cairo.dll b/io2d/src/win32/DLLs/x64/Debug/cairo.dll deleted file mode 100644 index d9b61745446d4aa1abb529f4a9e576e8979ab846..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2703360 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ư> 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 z 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